diff --git a/config.toml b/config.toml index 9062aa24..01f0b04d 100644 --- a/config.toml +++ b/config.toml @@ -24,8 +24,8 @@ disableLandingPageButton = true home = [ "HTML", "AMP", "RSS", "JSON"] page = [ "HTML", "AMP"] -# All privacy options enabled. There should not be -# any cookies or privacy +# All privacy options enabled. There should not be +# any cookies or privacy [privacy] [privacy.disqus] disable = false @@ -78,3 +78,18 @@ weight = 30 [languages.ja] languageName = "Japanese" weight = 2 + + +[markup] + [markup.highlight] + anchorLineNos = false + codeFences = true + guessSyntax = false + hl_Lines = '' + lineAnchors = '' + lineNoStart = 1 + lineNos = false + lineNumbersInTable = true + noClasses = true + style = 'monokai' + tabWidth = 4 diff --git a/content/monte-carlo-on-ec2-spot-fleet/_index.md b/content/monte-carlo-on-ec2-spot-fleet/_index.md deleted file mode 100644 index c7d3e9dc..00000000 --- a/content/monte-carlo-on-ec2-spot-fleet/_index.md +++ /dev/null @@ -1,37 +0,0 @@ ---- -title: "Run Monte Carlo Simulations on EC2 Spot Fleet" -menuTitle: "Monte Carlo on Spot Fleet" -date: 2019-01-24T09:05:54Z -weight: 80 -pre: "8. " ---- - -The contents of this labs were originally created by [oak2272](https://github.com/oak2278), [James Siri](https://github.com/jamesiri) and [Anuj Sharma](https://github.com/anshrma), all credits go to them for this high quality workshop! This workshop was hosted in the following github repo: https://github.com/aws-samples/ec2-spot-montecarlo-workshop. - - -## Overview -The goal of this workshop is not to become financial gurus. I doubt we'll be rich at the end, but hopefully we'll have learned different ways to build batch processing pipelines using AWS services and save up to 90% using [EC2 Spot Fleets](https://docs.aws.amazon.com/AWSEC2/latest/UserGuide/spot-fleet.html). - -These labs are designed to be completed in sequence. If you are reading this at a live AWS event, the workshop attendants will give you a high level run down of the labs. Then it's up to you to follow the instructions below to complete the labs. Don't worry if you're embarking on this journey in the comfort of your office or home, this site contains all the materials for you'll need to complete this workshop. -{{% children showhidden="false" %}} - -{{% notice info %}} -The estimated cost for running this **2.5 hour** workshop will be less than **$5**. -{{% /notice %}} - -## Introduction -Algorithmic trading, or algo-trading is the process of using algorithms for placing a stock trade based on a set of perceived market conditions. These algorithms are based on price, quantity or other mathematical model without the risk of human emotion influencing the buy or sell action. This workshop will walk your through some of the basic tools and concepts that algorithmic traders employ to build fully automated trading systems. - -Monte Carlo Simulations involve repeated random sampling to model the probability of a complex problem that is difficult to predict using other methods due to the nature of the variables involved. We will use Monte Carlo Simulations to simulate and predict future stock movement by repeatedly sampling random stock values based on past results. - -If you'd like to learn more: [Basics of Algorithmic Trading: Concepts and Examples](https://www.investopedia.com/articles/active-trading/101014/basics-algorithmic-trading-concepts-and-examples.asp) - -### Conventions: -Throughout this labs, we provide commands for you to run in the terminal. These commands will look like this: - -
-$ ssh -i PRIVATE_KEY.PEM ec2-user@EC2_PUBLIC_DNS_NAME
-
- -The command starts after `$`. Words that are ***UPPER_ITALIC_BOLD*** indicate a value that is unique to your environment. For example, the ***PRIVATE\_KEY.PEM*** refers to the private key of an SSH key pair that you've created, and the ***EC2\_PUBLIC\_DNS\_NAME*** is a value that is specific to an EC2 instance launched in your account. - diff --git a/content/monte-carlo-on-ec2-spot-fleet/cleanup.md b/content/monte-carlo-on-ec2-spot-fleet/cleanup.md deleted file mode 100644 index 6194af56..00000000 --- a/content/monte-carlo-on-ec2-spot-fleet/cleanup.md +++ /dev/null @@ -1,28 +0,0 @@ -+++ -title = "Clean Up" -weight = 50 -+++ - -Hopefully you've enjoyed the workshop and learned a few new things. Now follow these steps to make sure everything is cleaned up. - -1. In the ECR Console, select the **monte-carlo-workshop** image and then click on delete. - -1. In the EC2 Console > Spot Requests, click **Cancel Spot request** under **Actions**. Make sure **Terminate instances** is checked. - -1. In the EC2 Console > Launch Template, click in the template **MonteCarlo-Workshop-Template** and then on **Actions > Delete Template**. - -1. In the SQS Console, delete the queue that you created earlier. This is located under **Queue Actions**. - -1. In the Cloudwatch console. Delete the Alarms that were created to Scale up and down the EC2 Spot fleet. - -1. In the S3 Console, locate the resultsBucket that was created for your workshop. Click on the bucket and select **Empty bucket**. You will need to copy and paste the bucket name in to confirm the action. - -1. Under AWS Batch, select **Job definitions**, click on your job definition and select -**deregister**. Go to **Job queues**, then disable, and delete the configured job queue. -Repeat the action of disabling and then deleting, this time with the **Compute Environment**. - -1. In the CloudFormation template, select the workshop stack and select **Actions** and then **Delete stack**. - -{{% notice warning %}} -The estimated cost for running this 2.5 hour workshop will be less than $5. -{{% /notice %}} diff --git a/content/monte-carlo-on-ec2-spot-fleet/lab1.md b/content/monte-carlo-on-ec2-spot-fleet/lab1.md deleted file mode 100644 index b4336ab4..00000000 --- a/content/monte-carlo-on-ec2-spot-fleet/lab1.md +++ /dev/null @@ -1,93 +0,0 @@ -+++ -title = "Set up the Environment" -weight = 10 -+++ - -![Architecture](/images/monte-carlo-on-ec2-spot-fleet/lab1_arch.png) - -#### Create an SSH Key - -First, you'll need to select a [region](http://docs.aws.amazon.com/AWSEC2/latest/UserGuide/using-regions-availability-zones.html). For this lab, you will need to choose either the North Virginia, Ohio, Oregon, Dublin, Tokyo, Seoul or Sydney Regions. - -
-SSH Key Pair Instructions (expand for details)

- -At the top right hand corner of the AWS Console, you'll see a **Support** dropdown. To the left of that is the region selection dropdown. - -2. Then you'll need to create an SSH key pair which will be used to login to the instances once provisioned. Go to the EC2 Dashboard and click on **Key Pairs** in the left menu under Network & Security. Click **Create Key Pair**, provide a name (can be anything, make it something memorable) when prompted, and click **Create**. Once created, the private key in the form of .pem file will be automatically downloaded. - -3. If you're using linux or mac, change the permissions of the .pem file to be less open. - -``` -$ chmod 400 PRIVATE_KEY.PEM -``` - -{{% notice tip %}} -If you're on windows you'll need to convert the .pem file to .ppk to work with putty. Here is a link to instructions for the file conversion - [Connecting to Your Linux Instance from Windows Using PuTTY](http://docs.aws.amazon.com/AWSEC2/latest/UserGuide/putty.html) -{{% /notice %}} - -

- -#### Launch the Workshop template -For your convenience, we provide a CloudFormation template to stand up the core infrastructure. - -The template sets up a VPC, IAM roles, S3 bucket, and an EC2 Instance. The EC2 instance will run a Jupyter Notebook which we will leverage in Lab 2 and a small website that we will use in Lab 3. The idea is to provide a contained environment, so as not to interfere with any other provisioned resources in your account. In order to demonstrate cost optimization strategies, the EC2 Instance is an [EC2 Spot Instance](https://aws.amazon.com/ec2/spot/) deployed by [Spot Fleet](http://docs.aws.amazon.com/AWSEC2/latest/UserGuide/spot-fleet.html). If you are new to [CloudFormation](https://aws.amazon.com/cloudformation/), take the opportunity to review the cloudformation [template](/config/monte-carlo-on-ec2-spot-fleet/monte-carlo-workshop.yaml) during stack creation. - -{{% notice warning %}} -Prior to launching a stack, be aware that a few of the resources launched need to be manually deleted when the workshop is over. When finished working, please review the **"Workshop Cleanup"** section to learn what manual teardown is required by you. -{{% /notice %}} - -1. Download the **[cloudformation template](/config/monte-carlo-on-ec2-spot-fleet/monte-carlo-workshop.yaml)** locally. - -2. Navigate one of the supported Cloudformation regions: - - **[North Virginia - us-east-1](https://console.aws.amazon.com/cloudformation/home?region=us-east-1)** - - **[Ohio - us-east-2](https://console.aws.amazon.com/cloudformation/home?region=us-east-2)** - - **[Oregon - us-west-2](https://console.aws.amazon.com/cloudformation/home?region=us-west-2)** - - **[Dublin - eu-west-1](https://console.aws.amazon.com/cloudformation/home?region=eu-west-1)** - - **[Tokyo - ap-northeast-1](https://console.aws.amazon.com/cloudformation/home?region=ap-northeast-1)** - - **[Seoul - ap-northeast-2](https://console.aws.amazon.com/cloudformation/home?region=ap-northeast-2)** - - **[Sydney - ap-southeast-2](https://console.aws.amazon.com/cloudformation/home?region=ap-southeast-2)** - -1. Click on **Create Stack**, select **Upload Template** and use the **Choose File** to select the local -copy of the cloudformation template that was just downloaded. - Create Stack - ![Create Stack](/images/monte-carlo-on-ec2-spot-fleet/cf-create-stack.png) - -2. The template will automatically bring you to the CloudFormation Dashboard and start the stack creation process in the specified region. Click **Next** on the page it brings you to. - First Screen - ![CloudFormation PARAMETERS](/images/monte-carlo-on-ec2-spot-fleet/cf-initial.png) - - Parameters Screen - ![CloudFormation PARAMETERS](/images/monte-carlo-on-ec2-spot-fleet/cf-params.png) - -3. Select a password to use for the Jupyter Notebook. You will use this password in Lab 2. -4. The default port for the Jupyter Notebook is 8888. Some corporate firewalls and VPNs will block this port. You can change the **JupyterPort** to 443 to get around this. -5. Select your ssh key. ->**Important:** On the parameter selection page of launching your CloudFormation stack, make sure to choose the key pair that you created in step 1. If you don't see a key pair to select, check your region and try again. -6. After you've selected your ssh key pair, click **Next**. -7. On the **Options** page, accept all defaults - you don't need to make any changes. Click **Next**. -8. On the **Review** page, under **Capabilities** check the box next to **"I acknowledge that AWS CloudFormation might create IAM resources."** and click **Create**. Your CloudFormation stack is now being created. -9. Periodically check on the stack creation process in the CloudFormation Dashboard. Your stack should show status **CREATE\_COMPLETE** in roughly 10-15 minutes. In the Outputs tab, take note of the **Jupyter** and **Web Server** values; you will need these in the next two labs. - - ![CloudFormation Complete](/images/monte-carlo-on-ec2-spot-fleet/cf-complete.png) - -10. Under the CloudFormation Outputs, click on the URLs for **Jupyter** and **Web Server**. Each should load a web page confirming that the environment has been deployed correctly. We have created a self-signed certificate for the Jupyter Notebook. You will see messages about an unsafe connection. It is safe to ignore these warnings and continue. The steps will differ depending on your browser. - - - Certificate Warning - - ![Certificate Warning](/images/monte-carlo-on-ec2-spot-fleet/cert_warning.png) - - Jupyter - - ![CloudFormation Jupyter Complete](/images/monte-carlo-on-ec2-spot-fleet/jupyter.png) - - Web - - ![CloudFormation Web Client Complete](/images/monte-carlo-on-ec2-spot-fleet/web.png) - -If there was an error during the stack creation process, CloudFormation will rollback and terminate. You can investigate and troubleshoot by looking in the Events tab. Any errors encountered during stack creation will appear in the event log. - -**You've completed Lab 1, Congrats!** - - diff --git a/content/monte-carlo-on-ec2-spot-fleet/lab2.md b/content/monte-carlo-on-ec2-spot-fleet/lab2.md deleted file mode 100644 index 6bb08657..00000000 --- a/content/monte-carlo-on-ec2-spot-fleet/lab2.md +++ /dev/null @@ -1,15 +0,0 @@ -+++ -title = "Explore Algorithmic Trading Concepts with Jupyter" -weight = 20 -+++ - -The [Jupyter Notebook](http://jupyter.org/) allows you to create and share documents that contain live code, equations, visualizations and narrative text. - -1. Log into the Jupyter Notebook using the **Jupyter** URL output from the CloudFormation Template using the password you configured when building the stack. - -2. Click on the notebook named [*monte-carlo-workshop.ipynb*](https://github.com/awslabs/ec2-spot-workshops/blob/master/workshops/monte-carlo-on-ec2-spot-fleet/src/monte-carlo-workshop.ipynb) and it should open in a new tab. - -3. Follow the instructions in the Notebook to complete Lab 2. If you're new to Jupyter, you press shift-enter to run code and/or proceed to the next section. When you're done with the Notebook, return here and we'll take the concepts we learned in this lab and build our own automated pipeline. - -**You've completed Lab 2, Congrats!** - diff --git a/content/monte-carlo-on-ec2-spot-fleet/lab3.md b/content/monte-carlo-on-ec2-spot-fleet/lab3.md deleted file mode 100644 index 220a2cbf..00000000 --- a/content/monte-carlo-on-ec2-spot-fleet/lab3.md +++ /dev/null @@ -1,216 +0,0 @@ -+++ -title = "Deploy an Automated Trading Strategy on EC2 Spot Fleet" -weight = 30 -+++ - -Now that we understand the basics of our trading strategy, lets get our hands dirty building out the batch processing pipeline. - -![Lab 13 Architecture](/images/monte-carlo-on-ec2-spot-fleet/lab3_arch.png) - -#### Create a standard SQS Queue -We will start by creating a managed message queue to store the batch job parameters. - -1. Go to the SQS Console, if you haven't used the service in this region, click **Get Started Now**. Otherwise, click **Create New Queue**. - -2. Name your queue *"workshop"*. Select **Standard Queue**. Click **Quick-Create Queue**. -{{% notice note %}} -Queue Name is Case Sensitive -{{% /notice %}} -![SQS Creation](/images/monte-carlo-on-ec2-spot-fleet/sqs_create.png) -{{% notice info %}} -For regions that don't yet support FIFO queues, the console may look different than shown. Just name the queue and accept the defaults. -{{% /notice %}} - -3. Save the queue **ARN** and **URL** for later use. -![SQS Info](/images/monte-carlo-on-ec2-spot-fleet/sqs_info.png) - -#### Edit the EC2 Instance Profile -Our EC2 instances run with an Instance Profile that contains an IAM role giving the instance permissions to interact with other AWS services. We need to edit the associated policy with permissions to access the SQS service. - -1. Go to the EC2 Console. - -2. Under **Instances**, select the instance named *montecarlo-workshop*. - -3. Scroll down and select the **IAM Role**. - -4. You should see two attached policies. One will be an inline policy named after the workshop. Click the arrow beside the policy and click **Edit policy**. -![IAM Role](/images/monte-carlo-on-ec2-spot-fleet/iam_role.png) - -5. Click on **Add additional permissions**. Click on **Choose a service** and select or type **SQS**. -![IAM Role](/images/monte-carlo-on-ec2-spot-fleet/iam_role_1.png) - -6. Click on **Select actions**. Under *Manual actions*, check the box beside **All SQS actions (sqs:\*)**. -![IAM Role](/images/monte-carlo-on-ec2-spot-fleet/iam_role_2.png) - -7. You will see a warning that you must choose a **queue resource type**. Click anywhere on the orange warning line. Under Resources, click on **Add ARN**. - -8. In the pop-up window, paste the *ARN* that you saved previously. Click **Add**. -![IAM Role](/images/monte-carlo-on-ec2-spot-fleet/iam_role_3.png) - -9. Click on **Review Policy** and then click **Save changes**. - -#### Configure the Web Client -The CloudFormation template deployed a web server that will serve as the user interface. We need to configure it with our SQS queue - -1. Launch Web Site using the URL from the CloudFormation output. -2. Click **Configuration** -3. Configure the **SQS URL**, **S3 Bucket Name**, and **AWS Region** using the output values from the CloudFormation stack. -![Web Config](/images/monte-carlo-on-ec2-spot-fleet/web_config.png) -4. Click **Submit** and then click **Home** to return to the home page. - -#### Configure our Simulation -1. Enter you simulation details. You can select whatever values you'd like, but too large of an iteration count, may take a long time to complete. We recommend the following configuration. - * Stock Symbol (e.g. AMZN) - * Short Window = 40 days - * Long Window = 100 days - * Trading Days = 1260 (5 years) - * Iterations = 2000 - * Preview Only = *unchecked* - You can use this to see the json message placed on the queue. - -#### View the messages in SQS -1. Go to the SQS Console and select your queue. - -2. Under **Queue Actions**, select **View/Delete Messages**. - -3. Click on **Start Polling for Messages** - -4. You should see the message that was created by the web client. Explore the message attributes to see what we will be passing to the worker script - -5. Now that we have messages on the queue, lets spin up some workers on EC2 spot instances. - - -#### Create the Launch Template -1. From the EC2 Console, select **Launch Template** and click **Create Launch Template** - -1. Leave **Create New Template**. Name the template `MonteCarlo-Workshop-Template`, and use the same for the -template version description - -1. In the *Launch template content* section, click on the **Search for AMI** and select the default -Amazon Linux 2 HVM 64-bit(x86) AMI - -1. For **Key pair name**, choose the SSH Key Pair that you specified in the CloudFormation template. - -1. Select the VPC with name **VPC for Spot Monte Carlo Simulation Workshop**, Under **Security groups** -select the name with the prefix *spot-montecarlo workshop*. -![Launch Template](/images/monte-carlo-on-ec2-spot-fleet/launch_template.png) - -1. Leave the rest to default, at the bottom of the page click on **Advanced Details**, In the IAM instance profile -select the one with the prefix *spot-montecarlo workshop*. - -1. Finally in the **User Data** content copy the following: - -```bash -#!/bin/bash -e -# Install Dependencies -yum -y install git python3 python-pip3 jq -pip3 install --upgrade pandas-datareader yfinance scipy boto3 awscli matplotlib scipy numpy pandas boto3 - -#Populate Variables -echo 'Populating Variables' -REGION=`curl -s http://169.254.169.254/latest/dynamic/instance-identity/document|grep region|awk -F\" '{print $4}'` -mkdir -p /home/ec2-user/spotlabworker -chown ec2-user:ec2-user /home/ec2-user/spotlabworker -cd /home/ec2-user/spotlabworker -STACK_NAME=$(aws cloudformation --region $REGION list-stacks | jq -r '.StackSummaries[] | select(.TemplateDescription == "Environment for running EC2 Spot Monte Carlo Workshop" and .StackStatus == ("CREATE_COMPLETE", "UPDATE_COMPLETE")).StackName') -WEBURL=$(aws cloudformation --region $REGION describe-stacks --stack-name $STACK_NAME | jq -r '.Stacks[0].Outputs[] | select(.OutputKey == "WebInterface" ).OutputValue ') - -if [[ -z $WEBURL || -z $STACK_NAME ]]; then - echo "URL: $WEBURL or Stack $STACK_NAME not defined" - exit 1 -else - echo 'Region is '$REGION - echo 'URL is '$WEBURL -fi - - -echo "Downloading worker code" -wget -q $WEBURL/static/queue_processor.py || { echo 'wget failed' ; exit 1; } -wget -q $WEBURL/static/worker.py || { echo 'wget failed' ; exit 1; } - -echo 'Starting the worker processor' -python3 /home/ec2-user/spotlabworker/queue_processor.py --region $REGION> stdout.txt 2>&1 -``` - -1. Save the template - -#### Create the Spot Worker Fleet - -1. From the EC2 Console, select **Spot Requests** and click **Request Spot Instances**. Then Select **Flexible Instances** - -1. Select the Launch Template **MonteCarlo-Workshop-Template** - -1. In the Network section, select the VPC with name **VPC for Spot Monte Carlo Simulation Workshop**, and select -the two subnets available -![Spot Flexible Instances](/images/monte-carlo-on-ec2-spot-fleet/spot_fleet_flexible_instances_1.png) - -1. click on **Maintain Target Capacity** and leave the interruption behaviour to the default "Terminate" - -1. Expand the **Advanced Configuration** and select the **Health Check : Replace unhealthy instances** - -1. For **Total target Capacity**, type **2** - -1. Check the *Fleet request settings* and check the fleet that has been selected. Notice how each entry has -a different Spot price. Feel free to untick the **Apply Recommendations** and change the components in the fleet using: -c4.large, c5.large, m4.large, m5.large, t2.large, t3.large. Leave "Capacity Optimized" as the allocation strategy. -![Instance Fleet Selection](/images/monte-carlo-on-ec2-spot-fleet/spot_fleet_flexible_instances_2.png) -{{% notice info %}} -You can read about **[Capacity Optimized](https://aws.amazon.com/about-aws/whats-new/2019/08/new-capacity-optimized-allocation-strategy-for-provisioning-amazon-ec2-spot-instances/)** and find out what are the last 30 days average for the frequency of interruptions on the selected instance types using **[Spot Instance Advisor](https://aws.amazon.com/ec2/spot/instance-advisor/)** -{{% /notice %}} - -1. Click **Launch**. - -1. Wait until the request is fulfilled, capacity shows the specified number of Spot instances, and the status is Active. - -1. Once the workers come up, they should start processing the SQS messages automatically. Feel free to create some more jobs from the webpage. Check out the S3 bucket to confirm the results are being processed. - - -#### Optional: Auto-scale the Worker Fleet on EC2 Spot -In the previous step, we specified two Spot instances, but what if we need to process more than two jobs at once? In this optional section we will configure auto-scaling so that new spot instances are created as more jobs get added to the queue. - -1. Go to the CloudWatch console, and click on **Alarms**. - -2. Click on **Create Alarm**. Select **SQS Metrics**. - -3. Scroll down and select **ApproximateNumberOfMessagesVisible**. Click **Next** -![CW Alarm](/images/monte-carlo-on-ec2-spot-fleet/spot_cw_alarm.png) - -4. We will create a threshold for scaling up. Name the alarm, set the threshold for **>= 2** messages for **2** consecutive periods. Delete the default notification actions. Hit **Next** and write a description and a unique name like `Scale Up Spot Fleet`, click on **Create Alarm**. - -![CW Alarm](/images/monte-carlo-on-ec2-spot-fleet/spot_cw_alarmfinal.png) - -5. Repeat these steps for the scale down policy, use the unique name `Scale Down Spot Fleet` and set the threshold for **<= 1** message for **3** consecutive periods. - -6. Return to **Spot Requests** in the EC2 Console. - -7. Select your fleet and go to the **Auto Scaling** tab at the bottom pane. - -8. Click **Configure**. On the next screen, click on **Scale Spot Fleet using step or simple scaling policies** -![CW Alarm](/images/monte-carlo-on-ec2-spot-fleet/spot_auto_scale.png) - -9. Under the **ScaleUp** and **ScaleDown** policies, configure the appropriate alarms under **Policy trigger**. -![CW Alarm](/images/monte-carlo-on-ec2-spot-fleet/spot_auto_scale_final.png) - -10. Click **Save** - -#### Evaluate the Results -1. Check your S3 Bucket. In a few minutes, you should see results start appearing the bucket. - -2. If you monitor the SQS queue for messages you should see them being picked up by the worker nodes. - -#### Terminate the Spot Fleet -In the next lab, we will use [AWS Batch](https://aws.amazon.com/batch/) to create a managed batch process pipeline. We will reuse our existing queue, so let's terminate our EC2 Spot worker fleet. - -1. From the EC2 Console, select **Spot Requests** and click **Request Spot Instances**. - -2. Check the box beside the Spot fleet request containing your worker nodes. The correct request will have a capacity of 2 and the shortest time since it was created. - -{{% notice warning %}} -Take care not to cancel the Spot fleet request responsible for our workstation node (Jupyter/WebClient). It will have a capacity of 1 and the instance type will be m4.large. -{{% /notice %}} - -3. Under **Actions**, select **Cancel Spot request**. - -**You've completed Lab 3, Congrats!** - -#### Extra Credit -* Each job is handled fully by one worker. Maybe you could look at adding more parallelism to task scheduler. diff --git a/content/monte-carlo-on-ec2-spot-fleet/lab4.md b/content/monte-carlo-on-ec2-spot-fleet/lab4.md deleted file mode 100644 index a5d4c67f..00000000 --- a/content/monte-carlo-on-ec2-spot-fleet/lab4.md +++ /dev/null @@ -1,169 +0,0 @@ -+++ -title = "Leverage a Fully Managed Solution using AWS Batch" -weight = 40 -+++ - -During this section we will use [Cloud9](https://aws.amazon.com/cloud9/) to build up a -[docker image](https://docs.docker.com/v17.09/engine/userguide/storagedriver/imagesandcontainers/) -that we will then use to upload to [Elastic Container Registry](https://aws.amazon.com/ecr/). - -We will use this docker image later on with AWS Batch to run our portfolio valuation simulations and -leverage a Spot fully managed solution. - -## Using the Cloud9 Environment - -AWS Cloud9 comes with a terminal that includes sudo privileges to the managed Amazon EC2 instance that is hosting your development environment and a preauthenticated AWS Command Line Interface. This makes it easy for you to quickly run commands and directly access AWS services. - -An AWS Cloud9 environment was launched as a part of the CloudFormation stack (you may have noticed a second CloudFormation stack created by Cloud9). You'll be using this Cloud9 environment to execute the steps in the workshop. - -1. Find the name of the AWS Cloud9 environment by checking the value of **cloud9Environment** in the CloudFormation stack outputs. - -1. Sign in to the [AWS Cloud9 console](https://console.aws.amazon.com/cloud9/). - -1. Find the Cloud9 environment in **Your environments**, and click **Open IDE**. -{{% notice note %}} -Please make sure you are using the Cloud9 environment created by the workshop CloudFormation stack! -{{% /notice %}} - -1. Take a moment to get familiar with the Cloud9 environment. You can even take a quick tour of Cloud9 [here](https://docs.aws.amazon.com/cloud9/latest/user-guide/tutorial.html#tutorial-tour-ide) if you'd like. - - -## Create and upload the docker image to ECR - -1. On the terminal run the following commands. This will download the repository of code we will -use to build our image. -``` -sudo yum install -y jq -git clone https://github.com/awslabs/ec2-spot-workshops.git -cd ec2-spot-workshops/workshops/monte-carlo-on-ec2-spot-fleet -``` - -1. Login into Elastic Container Registry (ECR) on the terminal. The result of the command will show a **Login Succeeded** -``` -REGION=$(curl -s http://169.254.169.254/latest/meta-data/placement/availability-zone | sed 's/[a-z]$//') -$(aws ecr get-login --region $REGION --no-include-email) -``` - -1. Create a repository named **monte-carlo-workshop**. -``` -MONTE_CARLO_REGISTRY=$(aws ecr create-repository --repository-name monte-carlo-workshop | jq --raw-output '.["repository"].repositoryUri') -MONTE_CARLO_IMAGE=${MONTE_CARLO_REGISTRY}:latest -echo "Monte carlo repository created at :$MONTE_CARLO_REGISTRY" -echo "Monte carlo image name : $MONTE_CARLO_IMAGE" -``` -{{% notice info %}} -When executing next section you will need to use use the image generated. Please take note the -result above for the **Monte carlo image name**. It should be something like: **ACCOUNT_NUMBER.dkr.ecr.AWS_REGION.amazonaws.com/monte-carlo-workshop:latest** -{{% /notice %}} - -1. Create the docker image and upload it to the ECR registry -``` -docker build -f Dockerfile --tag ${MONTE_CARLO_IMAGE} . -docker push ${MONTE_CARLO_IMAGE} -echo "${MONTE_CARLO_IMAGE} image ready for use" -``` - -You are now ready to use the generated docker image within AWS Batch. If you are already familiar -with docker you can try to run the docker image on cloud9 as an optional exercise. - - -
-Click to reveal detailed instructions (Optional)

- -1. First let's ensure our cloud9 instance has the right role to query SQS - 1. Go to the **EC2 Console** and click on **instances** - 1. Select the cloud9 instance we are using for this lab - 1. Click on **Actions** and select ** Instance Settings -> Attach/Replace IAM role** - 1. Select the role created by the cloudformation template, prefixed with **monte-carlo-spotFleetInstanceRole** -1. Go to the website URL we used in Lab3 and place a new simulation. The website url can be found -on the **cloudformation -> monte-carlo stack -> Outputs -> WebInterface** -1. Go back to **Cloud9 terminal** and execute the following command. -``` -docker run -it -e BATCH_MODE=true -e REGION=$REGION ${MONTE_CARLO_IMAGE} -``` - -This should display how the process consumes SQS messages from the queue and exits after a few iterations waiting if there are no more messages queued. -

- -## Leveraging AWS Batch -![Lab 4 Architecture](/images/monte-carlo-on-ec2-spot-fleet/lab4_arch.png) - -1. Before we set up AWS Batch environment. Let's submit a valuation to the SQS queue. -Go to the website URL we used in Lab3 and place a new simulation. The website url can be found -on the **cloudformation -> monte-carlo stack -> Outputs -> WebInterface**. You should be -able to see at least one message in the SQS console. - -1. Go to the AWS Batch Console. The following instructions use the first-run wizard. If the wizard does not show, replace the path at the end of the URL with /wizard. e.g. [https://ap-southeast-2.console.aws.amazon.com/batch/home?region=ap-southeast-2#/wizard](https://ap-southeast-2.console.aws.amazon.com/batch/home?region=ap-southeast-2#/wizard) - -1. Select/Enter the following values - * **How would you like to run your job ?** : No job submission and hit Next - * **Compute environment name** : montecarlo-batch-worker - * **Service role** and **EC2 instance role** : Leave it defaulted to "Create a new Role" - * **Provisioning Model** : Spot - * **Maximum bid price** : 100 - * **Spot fleet role** : Select the role containing your workshop name - * **Allowed instance types** : optimal - * **Minimum vCPUs** : 0 - * **Desired vCPUs** : 0 - * **Maximum vCPUs** : 20 - * **VPC Id** : VPC as created earlier - * **Subnets** : Any two subnets in the VPC - * **Security groups** : Security Group as created earlier - * **Job queue name** : montecarlo-batch-worker - -1. Click **Create** . It will take less than one minute for the setup to complete. Once complete, click on **View Dashboard** -1. Go to **Job Definition** , hit **Create** and enter the following details - * **Job definition name** : montecarlo-queue-processor - * **Job Attempts** : 3 - * **Execution timeout** : 120 - * **Job role** : Select the one that appears in drop down, as created during setup - * **Container image** : ACCOUNT_NUMBER.dkr.ecr.AWS_REGION.amazonaws.com/monte-carlo-workshop:latest - - > The container image name value should be the one you captured from in the previous step. - if required, go back to the cloud9 console in another tab and copy the content from there. - - * **vCPUs** : 2 - * **Memory (MiB)** : 512 - * Add an environment variable with **Key**: REGION and **Value** name the region you are using, example us-east-1 - * Add an environment variable with **Key**: BATCH_MODE and **Value** = **true** - * Leave everything as default and click **Create job Definition** - -1. Now we are ready to submit a job (with the definition created above) and run it against the compute environment created above. -Go to Jobs, select **Submit job** and enter the following details - * **Job name** : montecarlo-batch-first-run - * **Job definition** : Select the one created above - * **Job queue** : Select the one created above - * **Job Type** : Select Single - * Leave everything as default and click **Submit Job** - -This will create the EC2 Instances using Spot price as bid during creating the compute environment. -This process may take 2-3 minutes. When you refresh the screen, you will see the status of the job getting transitioned from submitted > pending > runnable > starting > running. - -![Job Status](/images/monte-carlo-on-ec2-spot-fleet/batch-job-status.png) - -#### Evaluate the Results -1. Once the job reaches **Running** state, check your S3 Bucket. In a few minutes you should see results start appearing the bucket. -1. If you monitor the SQS queue for messages you should see them being picked up by the worker container. -1. Once the job is completed, check the **AWS Batch -> Jobs Dashboard** and click on the job to display the job summary showing the number of attempts and link to the logs. Click on **View Logs** -1. Click on the links to the logs and confirm everything went as expected -![AWS Batch Job Logs](/images/monte-carlo-on-ec2-spot-fleet/aws_batch_logs.png) - -#### Extra Credit -* Use [AWS QuickSight](https://https://quicksight.aws/) to build visualizations, perform ad-hoc analysis, and quickly get business insights from your data. You will need to create a json manifest file with your Amazon S3 data location. Use the following template as a starting point: - -
-{
-    "fileLocations": [
-        {
-            "URIPrefixes": [
-                "s3://YOUR_S3_BUCKET_NAME/"
-            ]
-        }
-    ],
-    "globalUploadSettings": {
-        "format": "CSV"
-    }
-}
-
- -**You've completed Lab 4, Congrats!** \ No newline at end of file diff --git a/content/rendering-with-batch/_index.md b/content/rendering-with-batch/_index.md new file mode 100644 index 00000000..d63a32cc --- /dev/null +++ b/content/rendering-with-batch/_index.md @@ -0,0 +1,24 @@ +--- +menuTitle: "Rendering with AWS Batch" +title: "Rendering Blender Projects with AWS Batch" +date: 2021-09-06T08:51:33Z +weight: 80 +pre: "8. " +--- + +{{% notice info %}} +The estimated completion time of this lab is **60 minutes**. Please note Rendering the animation presented below can incur in costs up to **$15**. +{{% /notice %}} +## Overview + +In this workshop you will learn to submit jobs with [AWS Batch](https://aws.amazon.com/batch/) following Spot best practices to [render](https://en.wikipedia.org/wiki/Rendering_(computer_graphics)) a [Blender](https://www.blender.org/) file in a distributed way. You will be creating a docker container and publishing it in Amazon Elastic Container Registry (ECR). Then you will use that container in AWS Batch using a mix of EC2 On-Demand and Spot instances. [Spot instances](https://docs.aws.amazon.com/AWSEC2/latest/UserGuide/using-spot-instances.html) are EC2 spare capacity offered at steep discounts compared to On-Demand instances and are a cost-effective choice for applications that can be interrupted, what makes them well-suited for the batch processing that we will run. After going through all the sections, you will have the following pipeline created: + +1. A python script downloads the Blender file from S3 to extract the number of frames from the Blender project. +2. The script submits a batch using an `array job` with as many tasks as number of frames. It also submits a single stitching job using [FFmpeg](https://ffmpeg.org/) to create a final video file. +3. Each of the jobs in the rendering job array run a Docker container that executes Blender to render a slice of frames, and after uploads them to S3. + +The outcome of the workshop would be the following animation. + +![Pottery output](/images/rendering-with-batch/animation_example.gif) + +This output is the result of rendering the project *[Pottery](https://blendswap.com/blend/28661)* by [Prokster](https://blendswap.com/profile/1012752). We thank **Prokster** for providing the project under the [Creative Commons 0](https://creativecommons.org/share-your-work/public-domain/cc0/) license. Head to the next page to take a look at the architecture that you will deploy. diff --git a/content/rendering-with-batch/architecture.md b/content/rendering-with-batch/architecture.md new file mode 100644 index 00000000..19675f39 --- /dev/null +++ b/content/rendering-with-batch/architecture.md @@ -0,0 +1,15 @@ +--- +title: "Architecture" +date: 2021-09-06T08:51:33Z +weight: 20 +--- + +The following diagram illustrates what you will deploy: + +![Architecture diagram](/images/rendering-with-batch/architecture.png) + +## Pre-Requisites for this lab: + + - A laptop with Wi-Fi running Microsoft Windows, Mac OS X, or Linux. + - An Internet browser such as Chrome, Firefox, Safari, or Edge. + - An AWS account. You will create AWS resources during the workshop. When running this workshop at an AWS event, the team will provide you with an account. diff --git a/content/rendering-with-batch/batch/_index.md b/content/rendering-with-batch/batch/_index.md new file mode 100644 index 00000000..947c30a1 --- /dev/null +++ b/content/rendering-with-batch/batch/_index.md @@ -0,0 +1,72 @@ +--- +title: "AWS Batch" +date: 2021-09-06T08:51:33Z +weight: 80 +--- + +## Overview + +AWS Batch enables developers, scientists, and engineers to easily and efficiently run hundreds of thousands of batch computing jobs on AWS. AWS Batch dynamically provisions the optimal quantity and type of compute resources (e.g., CPU or memory optimized compute resources) based on the volume and specific resource requirements of the batch jobs submitted. AWS Batch plans, schedules, and executes your batch computing workloads across the full range of AWS compute services and features, such as AWS Fargate, Amazon EC2 and Spot Instances. There is no additional charge for AWS Batch. You only pay for the AWS resources you create to store and run your batch jobs. + +Thanks to AWS Batch computing, you can execute a series of "jobs" on one or more computers without manual intervention. Input parameters are pre-defined through scripts, command-line arguments, control files, or the AWS Batch job control language. You can make a batch job to +depend on the completion of preceding jobs, or on the availability of certain inputs, making the sequencing and scheduling of multiple jobs easy. + +## AWS Batch features +- **Dynamic compute resource provisioning and scaling**: you only need to set up a few concepts in AWS Batch (a Compute environment, job queue, and job definition), and you have a complete queue, scheduler, and compute architecture without managing a single piece of compute infrastructure. +- **AWS Batch with EC2 Spot instances**: AWS Batch workloads are usually a perfect fit for Spot Instances. If a workload is interrupted, AWS Batch will automatically retry the task and spin-up another Spot Instance using AWS EC2 Spot Best practices. +- **AWS Batch with Fargate**: AWS Batch integrates with [AWS Fargate](https://aws.amazon.com/fargate/). With AWS Fargate you can run batch workloads in a completely serverless environment. +- **Integration with EC2 Launch Templates**: AWS Batch does supports EC2 Launch Templates, allowing you to build customized compute resources, and enabling AWS Batch to scale instances with those requirements. +- **Priority-based job scheduling**: AWS Batch enables you to set up multiple queues with different priority levels. Batch jobs are queued until compute resources are available to execute the job. The AWS Batch scheduler evaluates when, where, and how to run jobs that have been submitted to a queue based on the resource requirements of each job. + +If you want to learn in detail all its capabilities, visit [this web page](https://aws.amazon.com/batch/features/?nc=sn&loc=2). + +## Understanding Batch components + +In this section we will go through each individual AWS Batch architecture component, starting with the typical AWS Batch job architecture. In the diagram below you can see how + +1. The user start triggering an event by uploading a S3 object +2. You can automate and trigger the submission of one or more jobs using [AWS Lambda](https://aws.amazon.com/lambda/) or manage [AWS Batch with Step functions](https://docs.aws.amazon.com/step-functions/latest/dg/connect-batch.html). The job gets submitted to a **Job queue** using a **Job Definition**. +3. AWS Batch will schedule the jobs submitted using **Compute Environments**. It will procure new resources when needed and allocate the job accordingly. +4. The Compute Environment resources (EC2 Instances or Fargate) will run the job and in this workshop and example, it will store the output of into S3. + + +![Batch components](/images/rendering-with-batch/batch_architecture.png) + + +### Compute environment + +An AWS Batch Compute Environment is a collection of compute resources on which jobs are executed. AWS Batch supports two types of Compute Environments; Managed Compute Environments which are provisioned and managed by AWS and Unmanaged Compute Environments which are managed by customers. + +With Managed Compute environments, you can use the following instance configurations: + +- Fargate: Allows AWS Batch to run containers without having to manage servers or clusters of Amazon EC2 instances. +- Fargate Spot: Fargate Spot allows you to run interruption tolerant AWS Batch jobs at up to a 70% discount off the Fargate price. +- On-demand: EC2 instances that are billed per second. +- Spot: save money by using EC2 spare capacity. + +To learn more about Compute environments, visit [AWS Batch Compute environment](https://docs.aws.amazon.com/batch/latest/userguide/compute_environments.html). + +### Job queue + +Jobs are submitted to a job queue where they reside until they can be scheduled to run in a compute environment. You can configure several job queues. Job queues have a priority that's used by the scheduler to determine which jobs in which queue should be evaluated for execution first. + +To learn more about Job queues, visit [AWS Batch Job queues](https://docs.aws.amazon.com/batch/latest/userguide/job_queues.html). + +### Job definition + +A Job Definition describes the job to be executed, parameters, environmental variables, compute requirements, and other information that is used to optimize the execution of a job. Job Definitions are defined in advance of submitting a job and can be shared with others. + +To learn more about Job definitions, visit [AWS Batch Job definitions](https://docs.aws.amazon.com/batch/latest/userguide/job_definitions.html). + +## When you should use AWS Batch + +AWS Batch can be used in several scenarios where you can split a workload into smaller jobs and run those in parallel thus drastically reducing execution time. These are some example scenarios: + +- In Visual Effects, we cover this in this Rendering workshop: AWS Batch provides content producers and post-production houses with tools to automate content rendering workloads and reduces the need for human intervention due to execution dependencies or resource scheduling. +- Media supply chain: AWS Batch simplifies complex media supply chain workflows by coordinating the execution of disparate and dependent jobs at different stages of processing, and supports a common framework for managing content preparation for different contributors to the media supply chain. +- In life-sciences: Drug screening. AWS Batch allows research scientists involved in drug discovery to more efficiently and rapidly search libraries of small molecules in order to identify those structures which are most likely to bind to a drug target, typically a protein receptor or enzyme. +- In Finance, Post-trade analytics: trading desks require batch processing of large data sets to constantly analyze day's transaction costs and execution reporting, among other areas. AWS Batch enables the automation of these workloads so that you can understand the pertinent risk going into the next day’s trading cycle and make better decisions based on data. + +## Working with AWS Batch + +{{% children %}} diff --git a/content/rendering-with-batch/batch/batch.files/job_submission.py b/content/rendering-with-batch/batch/batch.files/job_submission.py new file mode 100644 index 00000000..7a000dc6 --- /dev/null +++ b/content/rendering-with-batch/batch/batch.files/job_submission.py @@ -0,0 +1,257 @@ +#!/usr/bin/env python3 + +import sys, getopt, math, boto3, argparse, json, struct, gzip + + +INPUT_URI = '' # S3 URI where the blender file is located +OUTPUT_URI = '' # S3 URI where to upload the rendered file +F_PER_JOB = 0 # Number of frames that each job has to render +JOB_NAME = '' # Name of the job that will be submitted to Batch +JOB_QUEUE = '' # Queue to which the job is submitted +JOB_DEFINITION = '' # Job definition used by the submitted job +FILE_NAME = '' # Name of the blender file + + +# ##### BEGIN GPL LICENSE BLOCK ##### +# +# Extract from Blender's script library included in scripts/modules. +# +# This program is free software; you can redistribute it and/or +# modify it under the terms of the GNU General Public License +# as published by the Free Software Foundation; either version 2 +# of the License, or (at your option) any later version. +# +# This program is distributed in the hope that it will be useful, +# but WITHOUT ANY WARRANTY; without even the implied warranty of +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +# GNU General Public License for more details. +# +# ##### END GPL LICENSE BLOCK ##### +def read_blend_rend_chunk(path): + """Extract from Blender's script library included in scripts/modules. + Reads the header of a blend file and returns scenes' information. + + Keyword arguments: + path -- path where the blend file is located + """ + + blendfile = open(path, "rb") + + head = blendfile.read(7) + + if head[0:2] == b'\x1f\x8b': # gzip magic + blendfile.seek(0) + blendfile = gzip.open(blendfile, "rb") + head = blendfile.read(7) + + if head != b'BLENDER': + print("not a blend file:", path) + blendfile.close() + return [] + + is_64_bit = (blendfile.read(1) == b'-') + + # true for PPC, false for X86 + is_big_endian = (blendfile.read(1) == b'V') + + # Now read the bhead chunk!!! + blendfile.read(3) # skip the version + + scenes = [] + + sizeof_bhead = 24 if is_64_bit else 20 + + while blendfile.read(4) == b'REND': + sizeof_bhead_left = sizeof_bhead - 4 + + struct.unpack('>i' if is_big_endian else '2i' if is_big_endian else '<2i', blendfile.read(8)) + + scene_name = blendfile.read(64) + + scene_name = scene_name[:scene_name.index(b'\0')] + + try: + scene_name = str(scene_name, "utf8") + except TypeError: + pass + + scenes.append((start_frame, end_frame, scene_name)) + + blendfile.close() + + return scenes + +def parse_arguments(): + """Parses the command line arguments and stores the values in global variables. + """ + + parser = argparse.ArgumentParser(description='Submit an AWS Batch job that will render a Blender file in a distributed fashion.') + parser.add_argument('-i', dest='input_uri', type=str, required=True, help='S3 URI where the blender file is located') + parser.add_argument('-o', dest='output_uri', type=str, required=True, help='S3 URI where to upload the rendered file') + parser.add_argument('-f', dest='f_per_job', type=int, required=True, help='Number of frames that each job has to render') + parser.add_argument('-n', dest='job_name', type=str, required=True, help='Name of the job that will be submitted to Batch') + parser.add_argument('-q', dest='job_queue', type=str, required=True, help='Queue to which the job is submitted') + parser.add_argument('-d', dest='job_definition', type=str, required=True, help='Job definition used by the submitted job') + args = parser.parse_args() + + if args.f_per_job < 1: + print('F_PER_JOB must be a positive integer') + sys.exit(2) + + global INPUT_URI + INPUT_URI = args.input_uri + global OUTPUT_URI + OUTPUT_URI = args.output_uri + global F_PER_JOB + F_PER_JOB = args.f_per_job + global JOB_NAME + JOB_NAME = args.job_name + global JOB_QUEUE + JOB_QUEUE = args.job_queue + global JOB_DEFINITION + JOB_DEFINITION = args.job_definition + global FILE_NAME + FILE_NAME = INPUT_URI.split('/')[-1] + +def download_blender_file_from_s3(): + """Downloads the blend file from S3 and stores it locally. + """ + + bucket = INPUT_URI.split('s3://')[1].split('/')[0] + + s3 = boto3.resource('s3') + s3.meta.client.download_file(bucket, FILE_NAME, './{}'.format(FILE_NAME)) + +def get_number_of_frames(path): + """Reads the header of the blend file and calculates + the number of frames it has. + + Keyword arguments: + path -- path where the blend file is located + """ + + try: + frame_start, frame_end, scene = read_blend_rend_chunk(path)[0] + except FileNotFoundError as e: + print(e.args[1]) + sys.exit(2) + else: + return int(frame_end - frame_start + 1) + +def calculate_array_job_size(): + """Calculates the size of the job array + based on the number of frames of the blender file + and the number of frames that each job has to render + """ + + # Get the scene's number of frames by reading the header of the blend file + n_frames = get_number_of_frames('./{}'.format(FILE_NAME)) + + # Adjust the number of frames per job, if that value is greater than the number of frames in the scene + global F_PER_JOB + F_PER_JOB = min(F_PER_JOB, n_frames) + + # Calculate how many jobs need to be submitted + return n_frames, math.ceil(n_frames / F_PER_JOB) + +def build_job_kwargs(job_name, command): + """Returns a dictionary with properties for launching a job. + + Keyword arguments: + job_name -- name of the job + command -- command to be executed by the job + """ + + return { + 'jobName': job_name, + 'jobQueue': JOB_QUEUE, + 'jobDefinition': JOB_DEFINITION, + 'containerOverrides': { + 'command': command + }, + 'retryStrategy': { + 'attempts': 1 + } + } + +def submit_rendering_job(n_frames, array_size): + """Submits a Batch job that renders the frames. + Depending on the value of , it will submit either + a single job or an array job + + Keyword arguments: + n_frames -- total number of frames + array_size -- size of the array job + """ + + # Append the name of the job to the URI so that a folder is created in S3 + full_output_uri = '{}/{}'.format(OUTPUT_URI, JOB_NAME) + client = boto3.client('batch') + command = 'render -i {} -o {} -f {} -t {}'.format(INPUT_URI, full_output_uri, F_PER_JOB, n_frames) + kwargs = build_job_kwargs('{}_Rendering'.format(JOB_NAME), command.split()) + + # If this is not a single job, submit it as an array job + if array_size > 1: + kwargs['arrayProperties'] = { + 'size': array_size + } + + try: + return client.submit_job(**kwargs) + except Exception as e: + print(e.args[0]) + sys.exit(2) + +def submit_stitching_job(depends_on_job_id): + """Submits a Batch job that creates a mp4 video using the rendered frames. + + Keyword arguments: + depends_on_job_id -- identifier of the job that the stitching job depends on + """ + + # Append the name of the job to the URI so that a folder is created in S3 + full_output_uri = '{}/{}'.format(OUTPUT_URI, JOB_NAME) + client = boto3.client('batch') + command = 'stitch -i {} -o {}'.format(full_output_uri, full_output_uri) + kwargs = build_job_kwargs('{}_Stitching'.format(JOB_NAME), command.split()) + + # Add the job dependency + kwargs['dependsOn'] = [ + { + 'jobId': depends_on_job_id, + 'type': 'SEQUENTIAL' + } + ] + + try: + return client.submit_job(**kwargs) + except Exception as e: + print(e.args[0]) + sys.exit(2) + +if __name__ == "__main__": + job_results = [] + + # Gather command line arguments + parse_arguments() + + # Download the blend file from s3 and save it locally to work with it + download_blender_file_from_s3() + + # Calculate the size of the array job + n_frames, array_size = calculate_array_job_size() + + # Submit the rendering job + job_results.append(submit_rendering_job(n_frames, array_size)) + + # Submit the stitching job + job_results.append(submit_stitching_job(job_results[0]['jobId'])) + + print(json.dumps(job_results)) diff --git a/content/rendering-with-batch/batch/batch.files/pottery.blend b/content/rendering-with-batch/batch/batch.files/pottery.blend new file mode 100644 index 00000000..9629522d Binary files /dev/null and b/content/rendering-with-batch/batch/batch.files/pottery.blend differ diff --git a/content/rendering-with-batch/batch/compute_environment.md b/content/rendering-with-batch/batch/compute_environment.md new file mode 100644 index 00000000..61d567e2 --- /dev/null +++ b/content/rendering-with-batch/batch/compute_environment.md @@ -0,0 +1,103 @@ +--- +title: "Creating the compute environment" +date: 2021-09-06T08:51:33Z +weight: 90 +--- + +![Compute environment](/images/rendering-with-batch/CE.png) + +We are going to create two compute environments: one using **Spot** instances and the other using **On-Demand** instances. That way if your job need to comply with an SLAs the On-Demand proportion can be used to ensure a timely completion, while the Spot will be used to accelerate the run and reduce the overall cost. + +### Spot Compute environment creation + +Run the following to generate the configuration file that will be used to create the AWS Batch compute environment that uses Spot instances: + +``` +export SPOT_COMPUTE_ENV_NAME="RenderingSpotComputeEnvironment" + +cat < spot-compute-environment-config.json +{ + "computeEnvironmentName": "${SPOT_COMPUTE_ENV_NAME}", + "type": "MANAGED", + "state": "ENABLED", + "computeResources": { + "type": "SPOT", + "allocationStrategy": "SPOT_CAPACITY_OPTIMIZED", + "minvCpus": 0, + "maxvCpus": 256, + "desiredvCpus": 0, + "instanceTypes": [ + "optimal" + ], + "subnets": ["${Subnet1}", "${Subnet2}"], + "launchTemplate": { + "launchTemplateName": "${LaunchTemplateName}" + }, + "instanceRole": "${ECSInstanceProfile}" + } +} +EoF +``` + +Let's explore the configuration parameters in the `computeResources` structure: + +- **type**: specifies the compute resource type to use. This compute environment will use Spot instances, hence the `SPOT` value. The other possible values are `EC2`, `FARGATE` and `FARGATE_SPOT`. +- **allocationStrategy**: the allocation strategy to use for the compute resource if not enough instances of the best fitting instance type can be allocated. The `SPOT_CAPACITY_OPTIMIZED` allocation strategy allocates instances from the Spot Instance pools with the optimal capacity for the number of instances that are launching, making use of real-time capacity data and optimizing the selection of used Spot Instances. You can read about the benefits of using `capcity-optimized` in the blog post [Capacity-Optimized Spot Instance allocation in action at Mobileye and Skyscanner](https://aws.amazon.com/blogs/aws/capacity-optimized-spot-instance-allocation-in-action-at-mobileye-and-skyscanner/). This way, AWS Batch will select one or more instance types that are large enough to meet the requirements of the jobs in the queue, with a preference for instance types that are less likely to be interrupted. To learn more about allocation strategies, see [Allocation strategies](https://docs.aws.amazon.com/batch/latest/userguide/allocation-strategies.html). +- **instanceTypes**: the instances types that can be launched. By specifying `optimal`, instance types from the C4, M4, and R4 instance families are selected to match the demand of your job queues. +- **subnets**: the VPC subnets where the compute resources are launched. +- **launchTemplate**: the launch template to use when launching compute resources. We specify the one we created earlier so that the User data script is applied to every instance that is launched. +- **instanceRole**: the Amazon ECS instance profile applied to Amazon EC2 instances in the compute environment. AWS Batch compute environments are populated with Amazon ECS container instances, and they run the Amazon ECS container agent locally. The Amazon ECS container agent makes calls to various AWS API operations on your behalf. Therefore, container instances that run the agent require an IAM policy and role for these services to recognize that the agent belongs to you. For more information read [Amazon ECS instance role](https://docs.aws.amazon.com/batch/latest/userguide/instance_IAM_role.html). + +Run this command to create the AWS Batch compute environment and export its ARN to an environment variable. To learn more about this API, see [create-compute-environment CLI command reference](https://docs.aws.amazon.com/cli/latest/reference/batch/create-compute-environment.html). + +``` +export SPOT_COMPUTE_ENV_ARN=$(aws batch create-compute-environment --cli-input-json file://spot-compute-environment-config.json | jq -r '.computeEnvironmentArn') +echo "Spot compute environment Arn: ${SPOT_COMPUTE_ENV_ARN}" +``` + +### On-Demand Compute environment creation + +Run the following to generate the configuration file that will be used to create the AWS Batch compute environment that uses On-Demand instances: + +``` +export ONDEMAND_COMPUTE_ENV_NAME="RenderingOnDemandComputeEnvironment" + +cat < ondemand-compute-environment-config.json +{ + "computeEnvironmentName": "${ONDEMAND_COMPUTE_ENV_NAME}", + "type": "MANAGED", + "state": "ENABLED", + "computeResources": { + "type": "EC2", + "allocationStrategy": "BEST_FIT_PROGRESSIVE", + "minvCpus": 0, + "maxvCpus": 32, + "desiredvCpus": 4, + "instanceTypes": [ + "optimal" + ], + "subnets": ["${Subnet1}", "${Subnet2}"], + "launchTemplate": { + "launchTemplateName": "${LaunchTemplateName}" + }, + "instanceRole": "${ECSInstanceProfile}" + } +} +EoF +``` + +Lets explore the configuration parameters in the `computeResources` structure that differ from the previous Compute environment: + +- **type**: specifies the compute resource type to use. This compute environment will use On-demand instances, hence the `EC2` value. The other possible values are `SPOT`, `FARGATE` and `FARGATE_SPOT`. +- **allocationStrategy**: the allocation strategy to use for the compute resource if not enough instances of the best fitting instance type can be allocated. By specifying `BEST_FIT_PROGRESSIVE`, AWS Batch selects an instance type that best fits the needs of the jobs with a preference for the lowest-cost instance type. + +Notice how we have specified lower values for `maxvCpus` and `desiredvCpus` in comparison to the same of the Spot compute environment. We do so to make sure that only the required compute capacity to finish the job in a finite amount of time is provisioned with On-demand capacity, using more Spot resources to reduce execution time and cost. + +Execute this command to create the AWS Batch compute environment and export its ARN to an environment variable. + +``` +export ONDEMAND_COMPUTE_ENV_ARN=$(aws batch create-compute-environment --cli-input-json file://ondemand-compute-environment-config.json | jq -r '.computeEnvironmentArn') +echo "On-Demand compute environment Arn: ${ONDEMAND_COMPUTE_ENV_ARN}" +``` + +Next, you are going to create a job queue that is going to be associated to these compute environments. diff --git a/content/rendering-with-batch/batch/job_definition.md b/content/rendering-with-batch/batch/job_definition.md new file mode 100644 index 00000000..50203a43 --- /dev/null +++ b/content/rendering-with-batch/batch/job_definition.md @@ -0,0 +1,52 @@ +--- +title: "Registering the job definition" +date: 2021-09-06T08:51:33Z +weight: 110 +--- + +As a last step to configuring AWS Batch, we will register a job definition that will act as a template when we submit jobs. + +Run the following to generate the configuration file that will be used to create the job definition: + +``` +export JOB_DEFINITION_NAME=RenderingJobDefinition + +cat < job-definition-config.json +{ + "jobDefinitionName": "${JOB_DEFINITION_NAME}", + "type": "container", + "containerProperties": { + "image": "${IMAGE}", + "vcpus": 1, + "memory": 8000 + }, + "retryStrategy": { + "attempts": 3 + }, + "platformCapabilities": [ + "EC2" + ] +} +EoF +``` + +Lets explore the configuration parameters in the structure: + +- **type**: `container` is the default type and allows to run loosely coupled HPC workloads at scale. The type is `multinode`. With AWS Batch multi-node you can run large-scale, tightly coupled, high performance computing applications. Note `multi-node` jobs are not supported with Spot instances. To learn more about `multi-node` jobs, visit [multi-node parallel jobs](https://docs.aws.amazon.com/batch/latest/userguide/multi-node-parallel-jobs.html). +- **image**: the image used to start a container, this value is passed directly to the Docker daemon. +- **vcpus**: The number of vCPUs reserved for the job. Each vCPU is equivalent to 1,024 CPU shares. +- **memory**: hard limit (in MiB) for a container. If your container attempts to exceed the specified number, it's terminated. +- **platformCapabilities**: the platform capabilities required by the job definition. Either `EC2` or `FARGATE`. + +{{% notice info %}} +The values of `vcpus` and `memory` have been defined based on the resources needed to render a specific file. Each Blender file can be different in this sense and those values should be adapted accordingly to prevent the container from running out of memory when executing Blender. +{{% /notice %}} + +Execute this command to create the job definition. To learn more about this API, see [register-job-definition CLI command reference](https://docs.aws.amazon.com/cli/latest/reference/batch/register-job-definition.html). + +``` +export JOB_DEFINITION_ARN=$(aws batch register-job-definition --cli-input-json file://job-definition-config.json | jq -r '.jobDefinitionArn') +echo "Job definition Arn: ${JOB_DEFINITION_ARN}" +``` + +Finally, you are going to submit a job request. diff --git a/content/rendering-with-batch/batch/job_queue.md b/content/rendering-with-batch/batch/job_queue.md new file mode 100644 index 00000000..6714a7a3 --- /dev/null +++ b/content/rendering-with-batch/batch/job_queue.md @@ -0,0 +1,48 @@ +--- +title: "Creating the job queue" +date: 2021-09-06T08:51:33Z +weight: 100 +--- + +You are now going to create a Job Queue. The Job Queue is going to be associated with the two compute environments that we just created. We will assign an order of use for the Compute Environments using first the OnDemand environment and then the Spot. + +Run the following to generate the configuration file that will be used to create the job queue: + +``` +export RENDERING_QUEUE_NAME=RenderingQueue + +cat < job-queue-config.json +{ + "jobQueueName": "${RENDERING_QUEUE_NAME}", + "state": "ENABLED", + "priority": 10, + "computeEnvironmentOrder": [ + { + "order": 1, + "computeEnvironment": "${ONDEMAND_COMPUTE_ENV_ARN}" + }, + { + "order": 2, + "computeEnvironment": "${SPOT_COMPUTE_ENV_ARN}" + } + ] +} +EoF +``` + +Lets explore the configuration parameters in the structure: + +- **priority**: job queues with a higher priority are evaluated first when associated with the same compute environment. Priority is determined in descending order. +- **computeEnvironmentOrder**: the set of compute environments mapped to a job queue and their order relative to each other. A compute environment with a **lower** value of `order` is tried for job placement first. We specify the On-demand compute environment to be tried first to ensure that we have compute capacity throughout the whole execution, thus being able to comply with SLAs should there be any. + +{{% notice note %}} +All the compute environments within a queue must be either (`SPOT` and/or `EC2`) or (`FARGATE` and/or `FARGATE_SPOT`). EC2 and Fargate compute environments can't be mixed. We will only work with `SPOT` and `EC2` compute environments. +{{% /notice %}} + +Execute this command to create the job queue. To learn more about this API, see [create-job-queue CLI command reference](https://docs.aws.amazon.com/cli/latest/reference/batch/create-job-queue.html). + +``` +aws batch create-job-queue --cli-input-json file://job-queue-config.json +``` + +Next, you are going to create a **Job Definition** that will be used to submit jobs. diff --git a/content/rendering-with-batch/batch/submit_job.md b/content/rendering-with-batch/batch/submit_job.md new file mode 100644 index 00000000..c3763eb0 --- /dev/null +++ b/content/rendering-with-batch/batch/submit_job.md @@ -0,0 +1,92 @@ +--- +title: "Submitting the job" +date: 2021-09-06T08:51:33Z +weight: 120 +--- + +You have now all the AWS Batch components in place, and are ready to start submitting jobs that will be placed in a queue and processed by a compute environment when AWS Batch's scheduler starts running them. The last step is to download a Python script that will take the bucket name, the rendering queue and the job definition as input parameters and will launch the two jobs of the rendering pipeline using the [AWS SDK for Python, Boto3](https://aws.amazon.com/sdk-for-python/). + +## Downloading the python script + +To submit the jobs that will implement the rendering and stitching you are going to use a python script that has already been coded. Execute the following command to download it from GitHub. + +``` +wget https://raw.githubusercontent.com/awslabs/ec2-spot-workshops/master/content/rendering-with-batch/batch/batch.files/job_submission.py +``` + +## Reviewing the command line arguments + +This script needs a couple of command line arguments as input, execute the following to read the help documentation: + +``` +python3 job_submission.py -h +``` + +The script needs: (a) the location of the blender file, (b) the location where results will be uploaded, (c) as well as the the Job Definition that will be used to submit the job, (d) the Job Queue where it will be placed and the name that will be used to submit it. + +Additionally, there's an extra argument `-f` that needs to be passed. The `-f` argument can be used to specify how many frames each job should render. This will have a direct impact on the size of the array job that is submitted. E.g.: if you want to render a file that has 250 frames and you specify a value of 1 for that argument, the size of the array job will be 250. If you specify a value of 5, the size will be 50 and so on. As you can imagine, the less the frames each job has to render, the less the time it will take for the job to complete. + +## Submitting the job + +To submit the rendering job, run the following block of code optionally replacing the value of the argument -f. It will launch the python script and export the identifiers of the two jobs to environment variables to be able to monitor them. + +``` +export JOB_NAME="RenderingWithBatch" +export JOB_IDS=$(python3 job_submission.py -i "s3://${BucketName}/${BlendFileName}" -o "s3://${BucketName}" -f 1 -n "${JOB_NAME}" -q "${RENDERING_QUEUE_NAME}" -d "${JOB_DEFINITION_NAME}") +export RENDERING_JOB_ID=$((echo $JOB_IDS) | jq -r '.[0].jobId') +export STITCHING_JOB_ID=$((echo $JOB_IDS) | jq -r '.[1].jobId') +echo "Job successfully submitted. Rendering job Id: ${RENDERING_JOB_ID}. Stitching job Id: ${STITCHING_JOB_ID}" +``` + +At this point the jobs have been submitted and you are ready to monitor them. + +## Optional: understanding the script + +We have used a python program to programmatically submit the jobs to AWS Batch. Feel free to move to the next section and monitor the execution of your AWS Batch job. If at some point you are interested to know the details of how the `job_submission.py` python job submits the job, you can read the sections below. + +### Method submit_rendering_job + +Two important things to highlight from this method: + +1. The command that is passed to the container is defined in the line 200. The arguments are preceded by the keyword `render`. These arguments will be received by the bash script that we have talked about in the section *Download image files* inside *Creating your Docker image*. + + {{< highlight go "linenos=table, hl_lines=3, linenostart=198" >}} +full_output_uri = '{}/{}'.format(OUTPUT_URI, JOB_NAME) +client = boto3.client('batch') +command = 'render -i {} -o {} -f {} -t {}'.format(INPUT_URI, full_output_uri, F_PER_JOB, n_frames) +kwargs = build_job_kwargs('{}_Rendering'.format(JOB_NAME), command.split()) +{{< / highlight >}} + +2. The array job is created by specifying the `arrayProperties` value. An array job is a job that shares common parameters, such as the job definition, vCPUs, and memory. It runs as a collection of related, yet separate, basic jobs that may be distributed across multiple hosts and may run concurrently. At runtime, the `AWS_BATCH_JOB_ARRAY_INDEX` environment variable is set to the container's corresponding job array index number. This is how the bash script is able to calculate the slice of frames that needs to render. +To learn more about it, visit [Array jobs](https://docs.aws.amazon.com/batch/latest/userguide/array_jobs.html) and [Tutorial: Using the Array Job Index to Control Job Differentiation](https://docs.aws.amazon.com/batch/latest/userguide/array_index_example.html). + + {{< highlight go "linenos=table, linenostart=204" >}} +if array_size > 1: + kwargs['arrayProperties'] = { + 'size': array_size + } +{{< / highlight >}} + +### Method submit_stitching_job + +Two important things to highlight from this method: + +1. The command that is passed to the container is defined in the line 225. The arguments are preceded by the keyword `stitch`. + + {{< highlight go "linenos=table, hl_lines=3, linenostart=225" >}} +full_output_uri = '{}/{}'.format(OUTPUT_URI, JOB_NAME) +client = boto3.client('batch') +command = 'stitch -i {} -o {}'.format(full_output_uri, full_output_uri) +kwargs = build_job_kwargs('{}_Stitching'.format(JOB_NAME), command.split()) +{{< / highlight >}} + +2. The job dependency is created by specifying the `dependsOn` value, which is a dictionary that contains the identifier of the job towards which create the dependency, and the type of dependency. In this case, the dependency is `SEQUENTIAL` because the stitching job must be launched **after** all the frames have been rendered. To learn more about job dependencies visit [Job Dependencies](https://docs.aws.amazon.com/batch/latest/userguide/job_dependencies.html). + + {{< highlight go "linenos=table, linenostart=229" >}} +kwargs['dependsOn'] = [ + { + 'jobId': depends_on_job_id, + 'type': 'SEQUENTIAL' + } +] +{{< / highlight >}} diff --git a/content/rendering-with-batch/cleanup.md b/content/rendering-with-batch/cleanup.md new file mode 100644 index 00000000..cc67d9c2 --- /dev/null +++ b/content/rendering-with-batch/cleanup.md @@ -0,0 +1,58 @@ +--- +title: "Clean Up" +date: 2021-09-06T08:51:33Z +weight: 150 +--- + +Before closing this workshop, let's make sure we clean up all the resources we created so we do not incur in unexpected costs. + +## S3 and ECR + +To be able to delete an S3 bucket or an ECR repository, they must be completely empty. Execute these commands to empty your bucket and delete the image that you pushed to your repository: + +``` +aws s3 rm "s3://${BucketName}" --recursive +aws ecr batch-delete-image --repository-name "${RepositoryName}" --image-ids imageTag=latest +``` + +To learn more about these APIs, see [Emptying a bucket](https://docs.aws.amazon.com/AmazonS3/latest/userguide/empty-bucket.html) and [batch-delete-image CLI Command Reference](https://docs.aws.amazon.com/cli/latest/reference/ecr/batch-delete-image.html). + +## AWS Batch + +When deleting Batch components, the order matters; a CE cannot be deleted if it is associated to a valid queue, so we have to start by deleting the queue. Job queues and compute environments have to be disabled bore deleting them. + +To disable the components: + +``` +aws batch update-job-queue --job-queue "${RENDERING_QUEUE_NAME}" --state DISABLED && \ +aws batch update-compute-environment --compute-environment "${SPOT_COMPUTE_ENV_ARN}" --state DISABLED && \ +aws batch update-compute-environment --compute-environment "${ONDEMAND_COMPUTE_ENV_ARN}" --state DISABLED +``` + +To learn more about these APIs, see [update-job-queue CLI Command Reference](https://docs.aws.amazon.com/cli/latest/reference/batch/update-job-queue.html) and [update-compute-environment CLI Command Reference](https://docs.aws.amazon.com/cli/latest/reference/batch/update-compute-environment.html). + +{{% notice info %}} +The previous operation may take up to 2 minutes. Job queues and compute environments cannot be deleted while being modified, so running the commands below while the compute environments and job queue are being disabled might result in an error with the message "resource is being modified" +{{% /notice %}} + +To delete the components: + +``` +aws batch delete-job-queue --job-queue "${RENDERING_QUEUE_NAME}" +aws batch delete-compute-environment --compute-environment "${SPOT_COMPUTE_ENV_ARN}" +aws batch delete-compute-environment --compute-environment "${ONDEMAND_COMPUTE_ENV_ARN}" +``` + +To learn more about these APIs, see [delete-job-queue CLI Command Reference](https://docs.aws.amazon.com/cli/latest/reference/batch/delete-job-queue.html) and [delete-compute-environment CLI Command Reference](https://docs.aws.amazon.com/cli/latest/reference/batch/delete-compute-environment.html). + +Finally, deregister the job definition: + +``` +aws batch deregister-job-definition --job-definition "${JOB_DEFINITION_ARN}" +``` + +To learn more about this API, see [deregister-job-definition CLI Command Reference](https://docs.aws.amazon.com/cli/latest/reference/batch/deregister-job-definition.html). + +## Deleting the CloudFormation stack + +Deleting the CloudFormation Stack will delete all the resources it created. To do that, navigate to [CloudFormation in the AWS Console](https://console.aws.amazon.com/cloudformation/home), select the stack **RenderingWithBatch** and delete it. diff --git a/content/rendering-with-batch/ecr-repository.md b/content/rendering-with-batch/ecr-repository.md new file mode 100644 index 00000000..e75ec2d7 --- /dev/null +++ b/content/rendering-with-batch/ecr-repository.md @@ -0,0 +1,138 @@ +--- +title: "Creating your Docker image" +date: 2021-07-07T08:51:33Z +weight: 50 +--- + +The first step to implement the rendering pipeline is to generate a Docker image with the script that will run Blender and FFmpeg. This container image will be used by AWS Batch when running jobs. You are going to host that image in Amazon Elastic Container Registry. + +## Amazon Elastic Container Registry + +Amazon ECR is a fully managed container registry that makes it easy for developers to share and deploy container images and artifacts. Amazon ECR is integrated with Amazon Elastic Container Service (Amazon ECS), Amazon Elastic Kubernetes Service (Amazon EKS), and AWS Lambda, simplifying your development to production workflow. Amazon ECR eliminates the need to operate your own container repositories or worry about scaling the underlying infrastructure. Amazon ECR hosts your images in a highly available and scalable architecture, allowing you to deploy containers for your applications reliably. + +To learn more about ECR, visit [this web page](https://aws.amazon.com/ecr/). + +If you want to learn more about containers, read [this containers deep dive](https://aws.amazon.com/getting-started/deep-dive-containers/). + +### Download image files + +To create the Docker image you will need two files; the DockerFile, which is a text document that contains all the commands a user could call on the command line to assemble an image, and the bash script that will be executed when running the Docker container. + +Download both files executing these commands: + +``` +wget "https://raw.githubusercontent.com/awslabs/ec2-spot-workshops/master/content/rendering-with-batch/rendering-with-batch.files/docker-files/Dockerfile" +wget "https://raw.githubusercontent.com/awslabs/ec2-spot-workshops/master/content/rendering-with-batch/rendering-with-batch.files/docker-files/render.sh" +``` + +### Push the image to ECR + +1. Retrieve the repository's Uri and registry Id: + + ``` + export REPOSITORY_DATA=$(aws ecr describe-repositories --repository-names "${RepositoryName}") + export REPOSITORY_URI=$((echo $REPOSITORY_DATA) | jq -r '.repositories[0].repositoryUri') + export REGISTRY_ID=$((echo $REPOSITORY_DATA) | jq -r '.repositories[0].registryId') + export IMAGE="${REPOSITORY_URI}:latest" + echo "Repository Uri: ${REPOSITORY_URI}" + echo "Registry Id: ${REGISTRY_ID}" + ``` + +1. Retrieve an authentication token and authenticate your Docker client to your registry. + + ``` + aws ecr get-login-password --region "${AWS_DEFAULT_REGION}" | docker login --username AWS --password-stdin "${REGISTRY_ID}.dkr.ecr.${AWS_DEFAULT_REGION}.amazonaws.com" + ``` + +2. Build your Docker image using the following command. For information on building a Docker file from scratch see the instructions [here](https://docs.aws.amazon.com/AmazonECS/latest/developerguide/docker-basics.html). **The execution if this step might take a couple of minutes**. + + ``` + docker build -t "${IMAGE}" . + ``` + +3. Push the image to ECR . + + ``` + docker push "${IMAGE}" + ``` + +You are now done with the container part. Next, you will configure some environment variables needed to create resources in AWS Batch. + +## Optional: understanding the render.sh script + +When we send a batch job, the container that we just created will be executed. The +Entrypoint of the container is the bash script `render.sh`. The scripts just takes +a few arguments that AWS Batch will pass to each task and does run either blender when a environment variable named `ACTION` is set to `render` or or ffmpeg when is set to `stitch`. + +The following section describes the `render.sh` script in more detail. You don't need to go through this to run this workshop, but if you are interested in fully understanding how Blender and Stitch are called it will give you a clear description. + + +#### Method parse_argument: +1. Downloads the blender file from S3. + Read the environment variable `ACTION`and decide from it what's the type of job to run, either blender or ffmpeg. It also takes other arguments such as the the *input*, *output* + + {{< highlight go "linenos=table, linenostart=6" >}} + ACTION=$1 + + if [ "${ACTION}" != "render" ] && [ "${ACTION}" != "stitch" ] ; then + echo "Unrecognised action" + exit 2 + fi + ... +{{< / highlight >}} + + +#### Method render: + +2. Downloads the blender file from S3. + + {{< highlight go "linenos=table, linenostart=57" >}} +aws s3 cp "${INPUT_URI}" file.blend +{{< / highlight >}} + +3. Calculates the slice of frames that has to render (we will se how in more detail when we talk about AWS Batch). + + {{< highlight go "linenos=table, linenostart=43" >}} +if [[ -z "${AWS_BATCH_JOB_ARRAY_INDEX}" ]]; then + start_frame=1 + end_frame="${F_PER_JOB}" +else + start_frame=$((AWS_BATCH_JOB_ARRAY_INDEX * F_PER_JOB + 1)) + end_frame=$((AWS_BATCH_JOB_ARRAY_INDEX * F_PER_JOB + F_PER_JOB)) +fi +{{< / highlight >}} + +4. Executes Blender. + + {{< highlight go "linenos=table, linenostart=63, hl_lines=3" >}} +mkdir frames +echo "Rendering frames ${start_frame} to ${end_frame}" +blender -b file.blend -E CYCLES -o "frames/" -s "${start_frame}" -e "${end_frame}" -a +{{< / highlight >}} + +4. Uploads all the frames to S3. + + {{< highlight go "linenos=table, linenostart=68" >}} +aws s3 cp --recursive "frames" "${OUTPUT_URI}/frames" +{{< / highlight >}} + +### Method stitch: + +1. Downloads all the frames from S3. + + {{< highlight go "linenos=table, linenostart=75" >}} +mkdir frames +aws s3 cp --recursive "${INPUT_URI}/frames" frames/ +{{< / highlight >}} + +2. Executes FFmpeg. + + {{< highlight go "linenos=table, linenostart=79" >}} +ffmpeg -i frames/%04d.png output.mp4 +{{< / highlight >}} + +3. Uploads the video to S3. + + {{< highlight go "linenos=table, linenostart=82" >}} +aws s3 cp output.mp4 "${OUTPUT_URI}/output.mp4" +{{< / highlight >}} diff --git a/content/rendering-with-batch/final_thoughts.md b/content/rendering-with-batch/final_thoughts.md new file mode 100644 index 00000000..be2c9a20 --- /dev/null +++ b/content/rendering-with-batch/final_thoughts.md @@ -0,0 +1,24 @@ +--- +title: "Final Thoughts" +date: 2021-09-06T08:51:33Z +weight: 160 +--- + +**Congratulations!** You have successfully completed the workshop. Today you have: + +1. Learned about AWS Batch, its use cases and components. +2. Seen how easy it is to adopt Spot best practices when using AWS Batch, by defining several compute environments with the appropriate allocation strategies. +3. Learned the different types of jobs you find in AWS Batch (array and single). Also, you have learned how to define dependencies between them and how to work with the AWS_BATCH_JOB_ARRAY_INDEX environment variable. +4. You learned the concepts required to create a rendering pipeline using Blender and ffmpeg. +5. Built and published in ECR a Docker image that runs Blender and ffmpeg. + + +## Savings + +You can check how much you have saved with Spot instances by going to the Savings Summary panel. To view your savings do the following: + +1. Open the Amazon EC2 console at . +2. In the navigation pane, choose **Spot Requests**. +3. In the top right corner of the screen, select **Savings summary** + +![Savings with Spot](/images/rendering-with-batch/savings.png) diff --git a/content/rendering-with-batch/monitor_job.md b/content/rendering-with-batch/monitor_job.md new file mode 100644 index 00000000..58e1e0ad --- /dev/null +++ b/content/rendering-with-batch/monitor_job.md @@ -0,0 +1,102 @@ +--- +title: "Monitoring and results" +date: 2021-09-06T08:51:33Z +weight: 140 +--- + +## Results + +You can check the rendering progress by running these commands in the Cloud9 terminal: + +``` +while [ true ] +do + export RENDERING_PROGRESS=$(aws batch describe-jobs --jobs "${RENDERING_JOB_ID}") + export RENDER_COUNT=$(echo $RENDERING_PROGRESS | jq -r '.jobs[0].arrayProperties.statusSummary.SUCCEEDED') + export FRAMES_TO_RENDER=$(echo $RENDERING_PROGRESS | jq -r '.jobs[0].arrayProperties.size') + + awk -v var1=$FRAMES_TO_RENDER -v var2=$RENDER_COUNT 'BEGIN { print ("Rendering progress: " (var2 / var1) * 100 "% ==> " var2 " out of " var1 " frames rendered") }' + + if [ "${RENDER_COUNT}" == "${FRAMES_TO_RENDER}" ] ; then + break + fi + + sleep 7 +done +``` + +{{% notice tip %}} +This operation will take about 5 minutes. While it progresses, go to the AWS Batch Console, and explore the state of: (a) Compute Environments, (b) Jobs. You can also check in the EC2 Console the : \(c\) EC2 Instances, (d) Auto Scaling groups defined. +{{% /notice %}} + + +When the progress reaches 100%, the output video will be available in the following URL: + +``` +echo "Output url: https://s3.console.aws.amazon.com/s3/buckets/${BucketName}?region=${AWS_DEFAULT_REGION}&prefix=${JOB_NAME}/output.mp4" +``` + +Copy the output of the command into your browser. It will take you to the S3 page where the output file `output.mp4` has been stored. You can just click on the **Download** button to download it to your own computer and play it. + +{{% notice warning %}} +You will need the appropriate program and video codecs to watch the mp4 generated video. You can use [VLC media player](https://www.videolan.org/vlc/). +{{% /notice %}} + +{{% notice tip %}} +Explore also the rest of the S3 folders and check the frames that were created. +{{% /notice %}} + + + +## Monitoring + +### Viewing the logs of a job + +To view the logs of a job using the console: + +1. Navigate to the AWS Batch service page. +2. On the left navigation panel, select **Jobs**. +3. Select the job of which you want to view the logs. +4. Follow the link under **Log stream name** inside the **Job information** section. + +![AWS Batch console](/images/rendering-with-batch/logs.png) + +### Monitoring the status of a job + +You can monitor the status of a job using the following command: + +``` +aws batch describe-jobs --jobs "${RENDERING_JOB_ID}" "${STITCHING_JOB_ID}" +``` + +To learn more about this command, you can review the [describe-jobs CLI command reference](https://docs.aws.amazon.com/cli/latest/reference/batch/describe-jobs.html). + +### Describing a queue + +You can review the configuration of a queue using the following command: + +``` +aws batch describe-job-queues --job-queues "${RENDERING_QUEUE_NAME}" +``` + +To learn more about this command, you can review the [describe-job-queues CLI command reference](https://docs.aws.amazon.com/cli/latest/reference/batch/describe-job-queues.html). + +### Describing a compute environment + +You can review the configuration of a compute environment using the following command: + +``` +aws batch describe-compute-environments --compute-environments "${SPOT_COMPUTE_ENV_NAME}" "${ONDEMAND_COMPUTE_ENV_NAME}" +``` + +To learn more about this command, you can review the [describe-compute-environments CLI command reference](https://docs.aws.amazon.com/cli/latest/reference/batch/describe-compute-environments.html). + +### Describing a job definition + +You can review the configuration of a job definition using the following command: + +``` +aws batch describe-job-definitions --job-definition-name "${JOB_DEFINITION_NAME}" +``` + +To learn more about this command, you can review the [describe-job-definitions CLI command reference](https://docs.aws.amazon.com/cli/latest/reference/batch/describe-job-definitions.html). diff --git a/content/rendering-with-batch/rendering-with-batch.files/blendfile.blend b/content/rendering-with-batch/rendering-with-batch.files/blendfile.blend new file mode 100644 index 00000000..9629522d Binary files /dev/null and b/content/rendering-with-batch/rendering-with-batch.files/blendfile.blend differ diff --git a/content/rendering-with-batch/rendering-with-batch.files/diagrams.drawio b/content/rendering-with-batch/rendering-with-batch.files/diagrams.drawio new file mode 100644 index 00000000..f8bc43ca --- /dev/null +++ b/content/rendering-with-batch/rendering-with-batch.files/diagrams.drawio @@ -0,0 +1 @@ +7Vxtc6M4DP41+dgM5j0f89bdzu1Ne+3c7e196RBwElqCWeKk6f76s8EmxibvpEmzaTvTWBhBLOmRLAkaRney+JJ6yfhPFMCooWvBomH0Grquu6ZG/lHKe06xXCcnjNIwyElgSXgKf0FGZOeNZmEAp6WJGKEIh0mZ6KM4hj4u0bw0RW/laUMUla+aeCOoEJ58L1Kp38MAjxnVtszlga8wHI35pYHdyo9MPD6bfZXp2AvQm0Ay+g2jmyKE80+TRRdGdPX4wuTn3a44WtxZCmO8zQn/6eP2cydtWa37u9Ff9y/tu/DrjZFzmXvRjH3jfx667H7xO1+FBIUxzlbS6pA/cp2u1rDIkS4dNXVLIshjp0wA6ojyKBPksVMmAJk9kK4P5BsUCMqoxF6Trq8JN0j+jA6a4SiMYbfQOY0QR6kXhEQUXRShlNBiFJPV64zxJCIjQD6+jUMMnxLPp6v6RuyF0IYoxkzrgc7HbOEpV6I0Cf08WYyogTW9t6nZHKVolmSXvCN6X3n0eZ749HScolfIb6mhG7rpusCkFwqjSLrVOUxxSFS/HYUjyhUjehGPjSI4xJQjuf8wHn3LRj1DY/csXKLd7jgdl9ADbzqGAfsiqrYyBaZXhQuBxLT3C0QTiNN3MoUdvSHGxWyJoQlHl7eladouo40FqzS5DXoMDkYF86XBkA/MZqrt5+Ynvn3842mhPXYfRj/n/ZfX9OUGWIoBPcI4gClZoxyCPPoNXtBAMaoKCSjistp217XFtQQrBSWrjiSWglUdkmg5ZUE4qiB0rUIQhn00QShyeHjHY2IdZM39NEywsv7TV4j9MVssb5rkpjwMF3SdOxnkwbQ/hznygdwYcwTXZO0WrLwsQybYyBvA6AFNQxxmButDylwQ5TdpwgBhjCYbjbLgIyoTEbamAdftVeDHZOp7sJmdlaThFDZ94rKfydmwFgMtDI3pBbkTRTHMlqoX1rHUQlfU4i5OZkQZtAj5XrbYa/Wi0vNVer8qD1jpBVVPWJqW+aaKK8jEKpqjEoE6jbszlVhFq/Ld8tmg4mwgnb3ac0pARX5vqYQVj9qg8NE2DEc41gtTwii3mRilVMdkW9AdhziOKnQdZj+yLddlkgImbPLyCvpUuv0UTtEs9WHu9DtkWOX+p0Zd3tY0zKZVMmfLVc3ZcVVz5rTazVn1tor5woAE8GxIFQKNUOxF/SVVFAxx1W26S6BzE0hXFUaDbMiFnOmNl2I+jQE6OfE2pPeeR2mK3zatjk3DLBKLkWiAqxaRRvr+Lx2QhWXDH8WtkEFvIc7svYujBxJUkFWkupUTFyEWeJHRD+HIkhMdvAsDmc9KXcm1bTO4kuUZQbzZN1PJrNU8QasAjx5SGBGYnpe3Y1V6xdg9UMAWtdhwQFmHDcnX5F+TnSfunxRWuit5NzmszFdCYdVmUSCfxpyKbAzFSuxvH7ZiH/0FTj2fXk2LZ5MBkbquoSHdCqfeBE4rzSdDvrKhKOgmg+AkDILMuggshb+8QYFtZQ/aq1S4tbYuI1ax2WcXaYjb6Sok05pAc8tKwFXyYO0qcQV6mQEaDqcQH0POjiLn9vcnQuh4NHS5RjSfJ6K5ddy+Zu4W0fQ0qwuc3yaiGWRKXVcKAUgYDuzThjTu8UKaAdnjvO4T06j72DUxDQtDgBiEFCHJ9mHIMjYSIyMhUNolNto/puFJ5k0xjXPKmAZYK7bZe8Q0hsTKtbaKaeryZNwcBf3/5s1if0xjE7JSQi4tDhq6HdEk5IBEMfYoS0fikIBDPuEFDc45nuGGfnA8c0O8lcnrKAfqEjDKcZEuSf94IQxQM3b38U0PTirl3EWTZIYhtbh4HqYonsBYTeld6xSfrk4Bff05jIk7in34TGbhPN+qup+ea9vAOGrlorhE7ZWLlgTYQHN4akV0EDw7LgYewLRWG/VhKXM1OfqUIAoOV2u7WtsFWVtVeWqFrR2tPKUW2nskOM/SMVQOHtGcdP3G/aCd5qoCY3GCtMW8yI0k1/xpXXqmSahuqXvJKjU7XhHUvGrZxWuZAdTI4WO1TM0+Vm679klZ8FTEhowFz2xkxH2SFjzZUFRejpFsOOskgtzCoVtSnLl1DkF2t4bsRXcui+x4y0tlzlnWu09VE3T3M3ztIfi0GfdrD8HH9RC0tFbJYk/eQABal+O7dm0iOHm/AIfSzQ0D1ikdo9RkekDDAJAaBpQ+1JM3DPAbEuzh7yRCXkCz72ffIlBYcy05dWDqJWnx/pZDFUriCj4sxV4AtpDgE+olU/KP9n1eXHeyI3Whnr47mXuZa7Hjmn69+PSrI6fFzqHYoV8TsKffV9SdGrPlstqpE7C6moC9ltSumH55mH4GJTXeqnJF9AtG9JMXOwx1D1W5IT5mf+aqjNG5NGzulodaqSb15Y84x5Pkj1ywIemzdf7I2cSprsKKLW2YbZZYOWphxVD3xI+wnHjKez61WZGRmocBRJX2dx4JKWMV4u2VkLLt8uN3NeWjDLvEtajnHj8hZaibsNrA9DNWjpcpeU0rJeWbrmN8ZGLe2hZYT4irrZZc/d0XV91NnOrCVaBJFWvDNdffmnLGx0Cxum3lUEzgirbgU1DOXhKghfEQpZPqsvcZATFHmjqAGOi8277mygAw3bKDl1gcEYnVJ0V/ayReiZ0iJFa+QemkDzcr79vYu4kHaLa889oOFGvTSLXPpr+A/gyfdQWysKManlLW3Fb5aZwDUeao8d06WxBE2I3QLGipJS5FpNeOqRLtrDqmzJ5DDjZ26pgiP2anVQXnF5kH83M9r+khZfuEDylXGvYR37vyUdEC32rtkvXaM8JYqQOb36iybefwaTukZPV09t6JbeK0d9BBhstXa+bTl28oNfr/Aw==7VrbUuM4EP2aPCblaxIeSYCZ2ZqtpYqtvTxRsq3YWmQryDJJ5uu3ZUu+KOESsMmwC1QFq9VuSUenu9UiI3eZbr9wtE5+ZRGmI8eKtiP3YuQ4tutN4Y+U7CrJbDqrBDEnkVJqBDfkB1ZCS0kLEuG8oygYo4Ksu8KQZRkORUeGOGebrtqK0e6oaxTjPcFNiOi+9E8SiURJp77XdHzFJE700Pb0rOpJkdZWS8kTFLFNS+RejtwlZ0xUT+l2ialETwNz7ts7l34dx/T3+/QP7/uZ8JJxZezqmFfqNXCciX5NO5XpB0QLBdjImVIYZLFiMBYsWuwUlNP7gumOcV5u9Dko2N5623TCUyz/3rjQFRThHRbaIMyssllpKExr804OuqFE3IJeVghKMrysWWGpkZeMMl6+4MLvlVzqIuYoIrjpy1gGNhe54OwOt1648ue+60lDhNKWfFX+gDxCeYIjNdoD5oIAkb6jANNrlhNBWAZ9AROCpS2Fc0pi2SHYGqRItUKYEIYBFolIKbRttQDlIraj2woBOSTK19VqV2Qr57EAyq1lZ7qNpXtO0Cb3JhznrOAh/hbK+SygWT11tRT4GuhnyaNIJheFty3fUWT6glmKBd+Biup1PPXKTnu88pNN42ezeSVKWh6mZUh5dlxbbsgLD4q/R3B5foDLJsdKSuhA4HR3xwR7RdkmTBAXk1zA561U3yRE4Js1CqXiBtSGBHhmdQB29vHVoja+WtY7vjqkPwUwjiD6qibjImExyxC9bKRtwHEWncsQ37gspkHZ1K5VejFgr9UCysI7LbwitN4609V9z19MpatzVmRR7dOwQ3z3l2xMfN38u54NNC62bc2LXbt1jTkBJKVTl8Lj9h1mHOOn9BR9JYJPsqO1/bXLcUyRIA/dnHeIAMrcNSNldNdMm3eZZtsGh6qAo95q5xjDkOsahuaGoQqFPUMlH+s1vp6izqEY0Ec++5atC/k6yeWWFy9OanI3ywTSZf5ekjBzSUqiqHQXiO7kBwrqFLGW0JVg+ouRf3EEDbX3mvGnPnupUTqnm0NxaWxN7DN/3tlozfI3EnFsG1adrgW2WuV4EObokXpnzi8sgL77AoNZZTDgunNDwJUBtSLLSvQd6x8W5J8nppOcmKo9Gi6fe5aRz/39hD4/kNDNGNpfQveHOv2HQIqCYv7J5JMwGT/ABG4FnFZuA5SX1oarArqk9g6cUt+X1LOBSL1kKST+A0EcZw+EsyzF2Wetexq+g0gggJDf2gNSff6zhe8XFLw/eT123FZVVHjBIe7ZWss5Xa3lmbXW9JW1ljc1DJmF/yO1Fuwd2rXUVEXx+ISNCG/7nXtGeKgs9lvIucMdx2UJlxdBSoQAIu6F8yInWSzxqU7j8BlhssqqkPjxyj4dJN5c9lkTy5r53frM6cUltNvWVo0bwuGqPufjX2n1HUL904VGx7g9qi9Ajw6NRshyTUNDX0PZ/zNaPZtwT0mrOjE+xobX3m7u8bOnjGtOWGf6YTOuN2zGBSaVNoCOTdb9OHnUeaxceM31qTs7895Gbc0M/90y5aH70f9ySHs2U7601tAXEifJqLZxdvc+WOh7n2LjbKDQ91shPvq/jWq/7yPuWY7d/QdPP/XD2HY7VutJvyUsQrP5ak+l3nxDyr38Fw==7LxXr+vMkiX4ay4w89ANevNILzqJ3r006CnRe/Prmymd7966VQXMtKmZRqPPwd6UaDMjV6xYEZncf0O59pCmeKj0PsubvyFQdvwN5f+GIDBMEfcG7Dl/e3CK/O0op3f256R/7LDfV/5nJ/Rn7/rO8vmfTlz6vlnewz/vTPuuy9Pln/bF09Tv/3xa0Tf//NQhLvN/s8NO4+bf7vXf2VL92Uvg2D8OPPJ3Wf31aJigf0fa+K+z/3RlruKs3//FLlT4G8pNfb/8PrUHlzfAen8ZJg056L8ENPMSUCFmM5zJlOI//W4m/rdc8vc+THm3/HffelKhFA9D879gEyNKXkyQmPfnEmiLm/WPwf6GEM39ELbo72fdnV7OP6YkxrX/68B/mr8DzdwnwNhw/OPg/akE2+faJvl0H+4LMGpT3N4g+HPnZPrrrPxYpjhd3n3317G7+b8H/074Y/i/twGplra5P8H3sb8PB3R/yeK5yrM/X+LmXXb35/Q2190IlN3yaXnfmGD+HGjfWQbuCO4xgDu3Rwng/59/iEN+W3Db86/7A4dAwaeuX9Lqry/Fu2m4vumnb+tQEadwFAP3Xaa+zv/FkaIo/pjuX+38fzeyfxAA+pEf/wLYf0Zayvs2X6bzPuWvo+ifkf3jthj++7r/wwcQ6M8p1b+AP/FnX/zH7cq/3/kfyLo//AHXfwPQ4P8goFl5l+XTuyv/Lbr+L7b5Hvy//w+4/ueCC0X+FwMX8h8ELnt53+Px74NLFNshL/8Ptv4nYwuH///D1k7NdvJBdkYvWw0OztPX0383Qv6rsf1rMN7tV4z8fdS0OMkbo5/f3wiH8km/LH17n9CAA2yc1uXUr132z5b9Wfxfj/zSDwAg8/ATScX7AKhhv49k/toL/bXn/pzFS3xj+/cVEQcAYu7tsS9rh1Sp7Jn739N2K8Et70/gh5EZjgnvLQ/lT4cAe7iAlf1Avz+Rwv3rdTCSp+5Y8r1CaATTszBkRbMMrTIPR1cqyFEXddzIbf1Ir+nUbeYB0m3lLZhm2SvmsWKO5DNxkXLu/qn5AdX1h3nqzLFHf0PYz/3N4kqFVWWmG975c0USYbFJhYCJlkR52pVn76x9h1xed6e6PHjL5/AwgrbY7u/BFiDduikmaOz/rv9Ypvg8+3LbHdSgqpzeiVR2I19Mk2pqxGoSJb0deZNzT2aYfXPC97Pp83SKqdtCqBIzb4bB+LdNA79ARFy6hZkIgR9Jun97Ew+xSswa9Ypspr3arwfH3PY02ev2k+8lcOvffiW61DSLNM/fxMmKYsnUginfuGDz2DhZ4z6hTqD9oDWFV2MGcuPyPsbctxJ2tejE5SU+YkqCInhdet6yeOb7GJvpl5tcxJuZAwva+A23qsAdpl4pOYYTbowybnb3BBDuZIjrGezKFIrv+3Ibl6E8nx0AdwMLIEhjiFR/Rk7dutm0J2EP7jvA3rIdYuun35uwb+bDmPeP4FX3YVn4dpG1Np5/oNXwICPH/uzCoAbei2uGlPPKmrVNQX8nlAmoxeiODNVXdmeEUpCD7Xf9cu5XgrJCr/KAdTTway03uyw3p7d04cF9dsYW9xcjYIFWPuqLK6riGk09KA7+2sXTwUTCEu/si+VKImAwRmKE3te7Ymt9T0NXVOSrB1yQ0FtW6s/hYE/WVtPSZmrzNmTIcXjRsVcY4tb9bNHIBPRuLVsKu1AyO9OwZrne32m07iHvEaljd7ecbTGJy9WUy/BdYt76H9Mwbr9JjeLlsY7dF4mWITwkpr4HjBOv8pxHJH/tu61oPbBwqsqOB5zzPPfvgJfT7ktphrv3TvP+sWX4uoDpQ4tZzuUBoJc1+80yNdj7KZkQXwem7S53wlKJyWP23AE0OKPaOciSQ1cxFgxm6FIBPMRaz/sWTq4LWx1VG8FaISZ8kVJzYChNprPvGM+qUoExJmgS90Y4hckHS/jzvRyTXhULk/1iUNWmfMPzUvjrOz/k9Sf8ATTmMavk7Sej3N/vhwh+yEgl/4M2p2o7s9/PMunfUf17lPsdZZj/kS3g6L+2d+/k21XAvwo86P/T7Y2J/+7tbULhthz497X8/9D2ti9vsjchcuaPGP9jt4LMyOaf4XgysQz2/Rjpn7bs/xJb6Wujf70d4KvML0V/Y2HJggarXJir2PSCTOYHqNsVVMsJSYUPrf59QQqDr7Vh5O+UJh5aHKJUtDAC4njIcbjsFLLvJj4J9+M+R6SVjZf9fHSjUJsALTfRyBrU5itcPJHmKdh52udFjr2t0rhE5Taq7xgpchJLf6Dn0rPupI367eu3jblwwaVKhvruqGy1WeQwt3Zu5aXvUFCHLhArmvZE4ok04+fhnjB7fUsXZqtaqafItoOT6gSST2d10NU7fPRrjbeNPOpxnNMNMiZX+2Bbof4iUw+Y2T3xbsz59cB9J9VjxCUECxyXUvmzi60UUmw/lNlL0UxIKyc7HiZ05K6rm8WPJ5e5YIPWccyD1QPzOTysRnYCwLLZvHljezcmsnXdvKnzi5bK3ynCbzYQsC5cwJUqnvXmSYxjUvpP9+RCPQK9vWlELRaWyr20QIfpRBOoGLVgDFSkCuMKFwAobybiKmKttNFPe6PYhEgcbjGMsPWolek/nmlPC7sMeCwebGrYlatlc+fFGQUrPs+Zd3D44kd1vcVwN+jTOg0QCb399idydRcfTSTulAWgFe/Hqlz57mVUN6dbXrIpiKkPXbPcjz+jqkoMnT8/XPDgL/7cd/+wPgwOK0BvvCfJ7ydNyUV3jT1vsAakGppUtfSmRa7bzWXzjoTCyTAPhcui9jOHFnoJMwthCtNjz0yq0LlfxBN9auPMjqNJFQTl+9DXHpylXIlrRdnByKgUHO+SCUx9YF2pPKphxd5gzNlDkmNofksjA6V2dXcKcpCwaYXwOGbly72c49RiCFsPH3ui3fvcH3J7W9wOzS8Td4+y7lV37Se1n4r47v8gnkaOuMofd4o930fOeni/PqrpbbQczaRS1sAmd/ThpHzg7oCfeBXs5SLM5yk8c/0L2Za/eMfVWW4ZH1I7MXFMybGD9rGNvtUBPRtows7uDVSIeOpCboXfK3QQ9qTLkOG57ZETK9fGktamktY6OYVyuVVIYxfbS6CpbUXV+a2LrakdnOqHlQBQat7DKzBH80C6wEjOFgQ0KDjXz2BIGNAJi1wPILTeuZy4hnp5C0NWVn/qMLZ6E/TtBN/VhGqAsHd6/LaNSIdVBZH39yyPPuNFnDeRBGcMRBPSNhm9t0D7mSVptnc/+Lp4IQb8Xk60zGqvhVP4jvTsEc+4Qxvqpmro9aZ6ALqyfnLYfcnLHGf0hOUKSNVw1QiAsw4vT0m8ujb4PGV/CEBrTXPE6gO7R5CXp1wuYlir6/o+W+FEP6PuPF9cpsf7yXPrCGuRIZQ/DgmkR6iHLmjxag1qQTosSl5LJHNDEtHv6hevcVkzX7dbs3Yeqnd/RYF+clr1qstfRDe1KHp6S/2EYRqvsb+CK/Ah/LzQTmudXXvCUH2uXPr125OJr0LzZ6JGo5cl3KOxKR4yJcNef++4szUtsUvRLWBMQPMawrZl4cttUm57wVLRNSVfWTZhnczQu/n19AGnq/N9JI01d1WeTE9DkmVO/93z1S4/OSuOZ/rO4BwCALubw7+8225LpPOfveS+97lqxn89UkO4Ra35zSexItTc8EXkyk1A34cp58o8uQI5U/WvXcMpMCvT4KctRnU6pXz5YHHJYrntYwLGKsVnResfZ2wuHFqAtAqTm5v52gYPAVYTPxQnCCU9FUVX3HGDLyXpzN1vE0JNTDUYSPBt2+pgE4x5Npo1AKiINfzFfc5m6RAJaOY70Je9o+Qy8B4HUqQFhY3r8O9znx/8+TiJuX5bv/HVRNN0WMek34C7+6J/Ps/B9YcUpBAps7f2b9T8J8fGbGsrHJXdmphd6QWZPk6SKfqmfTYnK0Ce1EDMXxbXdmz5dDSK6Y8HrVV3aiViV3JioiNTgiqyI4KkCgOGTucVvUcU1+SD9nznFUqiilM3NulAnVh0rvnG3OhWid9zWaoRwpkPEbKGKRG5k4jJ08p4bfGJWjdBYkOU1b8969RLddtMYpRSZ4qCfp9O4+1Vv3X4qfzudo/jYVpxvYx0buJ7Di67IwEbtnLk+kdjwxA/sg5Vsb+6gjjFpO0WtGxVXaDsXwAxRyqffBK41QQGw5bUV3fIHLh7KSveY3rBC99TB+ECnQcUlwl9GX7Etm146IBi7sb0yhuCBa+W5ISolteflnDh85lLStztZs2YqhbQOvaDZK9WnKnPT+HU2Z/PAU3/3ZatoDHLzQCsxv7hdvNPZeSftzct/3XRLQf/H/cB/5NtpmMgtvS0xKh1+XszuZ9Y7RjTt/3nJAY08d/Zst+896v5GfMP6FnO5IlHKQDSoZpfksCLoqmsHbv/fZiqr3j9l9tvzHZAe0IsBjnRRa07an3pTGo3pmfLKPPzFaD6l83fQxL6zC4Wk2HRHiYVZ/x2GL+oCcmL5b/8xrV1FuSoP4tKPzF8N6Nm0mqXbtH21Zo8Zpa8w5a68BWqgvz3boLrKFk277gKUsA6Pau/RkVzXMs3Q6uUXixbqUkxQ39UOIbWb8aT3gGDEOGDqX+KVtmRqgJhBYTiSekXfV7886widdaHxjyQPTiPqWKNkoNQlSlPu/3FLQ8CmoZnRt/2tSG/QDuQU4Kx0feFmOW7h1+QZF3ejEHTEhgERiwhldBM5OYI1gNaS0OV9PU2Iv4j57xX1+Y3yt/2+8y1bXEI4flJ+zpqNq9Mnp+VAATFqh6om4EAfADzMNPVaPU3lVa4Z2FKOgjwAqJpvNlzzn1Kd1OW/lWtmGqB6LIKsWWTVISBi6hurzEujIYPemTMnb5/dUhWVpaPU2IY1bYPsQWoSBzPitps0wLakBGwOjOSJBLjdThF0+ceDI078d0WDpg1vRStAaotJU3KRcrmBFSM2HLsI4IJMjruhY2gFCRg91lEH7BG/YZQ+y0LwB0uSQvnsFGKnuX4XZIOB/oOl0tchI13FU95x9yCmwblQHmVAMSRqahLy2EII1e9EnJNBYbdjpRo6yPJNCSR0Y06BXkgV61WZw6fkH+/UAEJTkpkMl0qd46RS4zJyvZZcnLGJVWVvp3SxX4Q6rVKYkbCUX56tjd6IWkOaew50cQ5ocQU7D6PNQPjwm6auT9a9B3H83oWv16ssqQCCDwR1aWwhBdbn/UXzb1SG4tzvkHNpXEhlmN9wbxzVcGvE6CDNvjBRu4YZr0jMYTFluoULPW3Vay53sTgFsG6uRssIUSth/wgPLhFeWOPVKC+93cVbFscMIhZ5i8rTEhnODK7oVcY34tFMw3kr6Dq3jiRpRdT7rm7Fj5JTMPGF46kM/q1KYGNN9ZQFJSCQSzo0Bvx1OmdZvlaairwjPBWto2E1G4ohbJvPO92nIK+AcZ4U+F9c06U7wedYfqBjW0o/Gn4+VNJxhQVzerhD4MkcRKkjahKvfWzRUkp/D3NPK06/lyDHWl2eKFxXqzkYjxA+egMO7/uPgxv8NSn29yB75ulICX5xr90p/3PGs7m1MsT5AY9++L6ETOyt9cVbzj8aqBpMojWbheP2u++ls664qBmnMsBXRsYVI2FLbFExYL6j6mRoKIp8AmPXRqPRHcW2Tzgx2X5tAVQP6yRvHPhTWS24fag/simKtTr38QLFM3rJ/XK7BTWlTGikLzyVTjWujYhlqhwjlvn9MoFSqdP9TbSqhbMnwSKP71LWwANFNUqayWiLO/KHdwlV07PiYrh+bbnwx5iRc7Uwate+S6owhiBC4AQp1/YJuyc+cx24S34WiVcnvf5jJLbFyuVO59x2UgYHRF0Dng/Dv1tPWnizulYDILEFWvWuL6U3n2p/IHb4caVQv96NOy0NCvV4pJrp8PrQy2nkkPp/Dp70n0n2jsdoX4fA9he4sW7rLFyx9EbV/vlnUj+sMt2/oAmugluwmtDF7Sgp8LNrnKwQ3AYQt2W1x3T8ToxUrB2C63dAoOuHUZAKOIifSaqlZP4sXghiRNOV95B3FFO9zScAKORxJmJSAyhMdFwofGRQNXUpl+aipq1sKHkhBwiUK1mKcuVxg7SeT8r+drzxZRpSnsOn4ua0lN/aeireJDGnxBgQOKMEFx7DN/wsWXE0tEcBiMJ0EBrTD33w8FDOPG0bX29YeBhqBZhiUbxQDnQn7PDkcdcs66H2o9bQzHf6mJJRTZwmAg+Vo9kKniVD+C7+zPg97AI5rXW+euCShS6H5gjoVd/vJHAQbU0jILRn/D3GfCXvrSgus1iTtTyxhky3/vr1XYm9lbCsKJkSsoPJXE9o/SO1otR3KLdI7EHrCUycArb10G86B6npjj+tOQXZ8CPxQcA1DfMHzbVeYOm1hdbCB/2q0xKEJdSyBheJLs8egmCiqfg8oaB3yeO21isnUODwHQ8CxdVMcMGfpYS9umnEJB3YzfCEzVOmMqARiD7N9Oigv3nBKWumqn5hPk4vP1HHrY3Z+IUwMPweE30LwcR9RBFlzz5QpdaXu46Tei4ndWM4BRMOh8UNpPm8XgzzB+rp11F988XPih3ZGqL2Du3z1mwMEr2LGWQjh88fK0ZSBKZDhJH8NOSEKOo/cz/PbAbXl9DgJhk9D5J096Agwi9NY3odACu87PukD95b28oNq185dDdq+J14RVFg8azVwvMa6x3hgJMS3oxCNrtjr4cud+IV2SNaiWc4kPUrQM260gfDz5qWzl7mYm+mrF7psW2l/VrFqnSUOj92aACrywqXR9NSmDnGtFrgL+vRSeFtwg3JM1k/rx+tM7ADAgdqQGQWP9kQKy8hxR/zpXokGiC+Cj+zHdAJSz52mxSIyb67dO9HILo0YZxBY3vBvzMlZIouejkF3AsdX1O2ku8bYsPzxe23vlLGC/XaY0ImGdSENwwX00Da1Tp0Hb9KivmxUHhWy57vQLdn1uLX1EAGhuKCRo7SBgYN4rbpe2Uh+LfZNDWVBOmmYs8Hp6A4P3Jmdi7ASmTrUd8iD6VfReI7mq3K4jp+HptW1SIXLNdOmQcTD8tRmQ0wYQIx+GEtxASTN6kLhpUEQAQUWdFMcJZXTu6qLMzPd3bvCgk1ZBMdE2hwSSTwMRSAHh9siitIqkPUthajaDdOzmrHsHz8AHmjCrVMJiOmlND3+UfBFng4i6y9dTLiLO0KE53ezjktGsE9PrCB8w4eXpTF4mn4x8fUyrS/eSBX+MuQZDfu45+gI8OkBEvBCU6F+6o6jeGLJNUODvMapIMMU0qHk4n0Q3Sc9hAhUO0ZSl4FWQrhfF4IndUwFw325RPM8Hu0RRoKPZ8f6Yvpk8aQj2CQrwJDUacktCZrpKBlbUHRZnYncVgGlkKzHviMdCqDqSyAFDYW6SH46mea/9+93dqEHyKuZXG4U28EajJSAdWPgfclurGnEhndEAomAMNqUyYfutCZnYreko/jh5UnF5dBHnGmmW5V1DVDoTksMSkgV4p1tJJNUR+5XkJkd/3Pcxn643kdA9pfzQwrfqvzcFFTNq26cLKFwxqBXOEM9pwq1UY+dBP0HZPYXJ8uGW+yZU4Se09DJHLa+kKFGhbNtjHkIxj4lTPydMvvV2FsXW8RFGstVHaONx0hJcjZ+jqRh/3/jBgGILl1hHE1nvgGFY0H9IdJB4qE4RLys0p+4XmQfWSuv2nQlf7jm3SJ7yVIzKhGkL6KyAHfK6nCcDSeVVILEZJkY46UMMJ+kgxx4JCnPVQ5slQDuXUbz1Dtikz4LDVHQeNqla6jc6PI6VqxVTo7y04b7HfxnsjUv3s36oJgvYS1NbscnuSDzxIchWlsYvQCpC80KZVofToG7kEmEAYSQf/ABDpo5sKJQwIHQN1atY0ezVBheXGw5dmTQOgvzMD4UQ+0585ZaoFUQavDtgBfZg/79r1t4573c5cL/QOph7FmmjjQHOoBYBb0h84SGXYIbuBcjY7toM6403A7FNx9pys65FMYUpSvYX4fGLwoA/dtFp9mcpAYcCTmsyhhR//Msw3iCmgxQTrAIoAFJdTSNqEd+SQCF17bDLaPWRchakpp7w7VUyQC7LLM7xUo6j4yCQp9x7WTABd2oEvc0aQ1n0hflCODzMDK+LVA4nUJ+qM+gUafAoN8Ozqcef/LzXHbguNN4xZhgJVShUiwNFuRXk0G1XE4y0x4vDpeeAcTbKuOhXUJMUPFZhvOV6Sd8IbMZCsv7lxArffWqf4lCjxRE7NfU5tPUCYUHEyyN8/5L71+asn1ZainMufJupULloac1zSUxnhPFAIe8h7CWY7foU9XlXMHKGJ/RXHCPCP8aM8vmP25vAR0CS2w2pyO1bTeDjioD36UMVs2jfEhQP1VlZguGeDxnDQfWgfRPfpWuho+8NOy8Elm9a45ennm0uk8juLW9Mge9snqThQH0bJHifIknnxT9bwMrb3lhLk6MFBGwseHUkCDcXu5gYfJ0dMbHDaq/MS7xWOFH73iHXRLbz1OYpeOfV5fpzsTkx0xsdPX05BIWO6/O110WsiZbyXfsstDPcBkecq7NULshdKI7BRaP0U+zDk+vCdFtABtQCCCqZ0M+7sfXaNleJvz/Jv+JPAHwA2FY2jtLdmcBhBPJ4cjKGJl5DloNChPqs9cvYfV60/SNqdoGAA9JxMAYdTSAQQDnVsAd8bR3wsan+8Nroq6KeVG08y+go97ZWjqNfBbNVa8eiDXdatx41OLM2D9ycB6jso41LPQedLgjUSDCHkJehmLZIbIxFkQhGfpbv9q7EcAb2izrLBaFUQxLVVFuyMx/imYEACF2q6a8595nXIG57qljQOTpLVmuB6F4WuMlE0xA/v4z3m14GktPz55CuU0i8QxsEkQQ+hUUC5/QsXf8qRA9roOIG3Umxw4EZRCI8NXngAsT7QyTbtixfgeVwMjg6u+x1eVjcfowKfAtzkE32y3rFrL4+wierdzYrtnMYGSMJyv5xzxREP2NOe5E+tOE1u3k9VDdIg6O1ST19C2oieiLrdVFYpahkk33WCzO12Lm90PoZ0sI1w2PKtAGLWJ3zdssOb0R8BMhA51VT05t3pEwqm0sQXteHVPRRegicgQTg/Dw3U8nTvK4S3DUw3ME6Ab/AUjuEWs2KRX9J483wFZhTwVEzosjirLrjlAs9tMO151cfOKSleHgGPUWACaaTXY2peKA4RV8zt36kiRgTxuOOtg/KNx2/5S0oVqBJXTRmkAFOi1FYmWLzOUhr+1l+3LIjQjpvKrnsJNJuKtBiCBSsfSO01UFjeoNgw3vvYRGmzQEz9CnAR+ss3XnHUAVBcYHnGMPoVm0Go84v7rBVG2XjsRhuSw8a39Dnh601oU91an645F2aH4d7x4M2g6CJZgyCrDZMLRX9u1PPA1RCvQLUrfP9IKGkHndmzH9+LMBynlp1lNVdtRDKdm/wYI29zOzBq9bJQ+EQXXsNv44Nq9Omo9xnYJkib12een42fHbcX1h5YOmM+k5eLsbd2UV/JW4MaegoKJTszopKjKn6CZ2DPAT6rzKc2RKboxcA2/AGWqowccz1HcGctXp+xRJOBIJinUdjEQqMTADC6fUay3zmP+DNKh0dSStx09PnzCJFcievOU58GrcT46U24bo3vT/q5cFcJNjHGPVAtSWMqaFL72XhZNAJsK7yRwU1tMC9/eikRSGfUrXiToyM9s5bIyA0NPCxo0ctCHCNWUVC9wIKUBZTljThLEtsuowaBBrBnC8+P1qtlzXy67wSFDRxO49pgM8r2Srjgod8xweSFoIDqmAgqe8+t+on7zTJrYEgeIJhmt3H14Tz3hXp2Dy3SnLSnbs7AN5+Ypdc4L46PSZVU5vSwvp6DB7BMGY+Z7R82HomVjT3EudxvLEvG0RB2Rb+zlvbMIOOUfhtxzOkmbRpglFGqESFqj8GK5EHRI6MwUd10tgyAT3W5nrB3eifJQEUoDFQUzWUfKiBXjuyQBI5XQEaVJYLeqYFOTcFpwVNHJ0N/ipZ4PZN95bcMb7psiZ+aYv4qv3MInBSEDIV4LbOTes+PBB6SKFCt5ethuA0xU12hOujx1OCM6EqxHHvkccDIk04C1aaypnLHc0HXQHu5IbvfovaRAHziI3dztIBxolLal+M+mjkM82vJ7Xe/zPTEufcVFYw7YtK0nUyhUFOVxLBIOA1PCfthf9Xy90h2xgExVYmr7fTBL/i6ucGTRmFokUK9ZXegz417mpWrQrNx5Th0QFlCy0fdsCXePk0mrG03JU4wUeyFwGiZxHARYJBxHgL6s2+wf9lZk6NclIBsu7mzomaFAXkATGfaOPddxFhPviJVkjNdKtp1mdEZ7qu6npZnUMquMabXtn2k7fsSDxrw8+4MkVPMZI6pb2PP9cmn7mM+dqZ7qK/cutMmSQOO5dLKp/B7TZoUX2I6tC9hwBPQGp74juwwr/ZwbPc0HKEpb5bfqilDgaCsYm9aCbohFTNJfFBhy/gsa48vv1q0D5JBtxqzPo/dZG5MHxtZ94CCbtUov6dFH+Lc0D0qCOrDP8g4s4BNUOZ97p2EFeXjdhEx2I7CT44F093gaXQGheRMzEpAWltJXp6Y0u4jlSsRWvyqGz2yAonYjdry7dnRKCpECUrp625yMwaZukafDbxOllEopxgPrsJAlWMWJ23nIdxCsPz8Uf6to8PTSDAZzB+B0BrQ3MCZbZwLtJvRz5PZPRzmzg7uUuGBK09tnUCBesjbUgcp6VeBLN6iWlBqCqWAZ9EAyrdOHnUimgLeExLiBNcw5+NX4pa/o9rS1LDmpbfort4/FMMuTNChwg4PhV/87mGoK9VWR+LRirbe2hgUxBgwNCJPvfEwUgfhDq5q+uDHmlAU2Moa5EwFRMtD5PVe3HYJUJIIPr+n8syf4NDSME99KGEYI0PK3ihGFxJrEv0ITbHGH3gaMJwMtwnI55NNkX2MZ++H0sapNV7gyyPdYTFV3IlxsEgQik5Z0YQznkcxGhkBHR0aj9XiF0EXSYdAUPJ21LVabsAmCIAvm6mC7N1z7ERIr4EO3FV5IxcaMhL3m1XMN1I8m6MW0r5mb5EKys/sofirOt2CZ6yPty0qA7yAJROUKZYl84+xWJHVHRMF3bY9VPIE72zoJT7eJ8bwWkir85KiD3w8lKjJrMXecSj9gkrmVIMywP3QEOHed9hmYc52LdaT5vN1xlehBFRdQBpBuXHVTSiqti1F46n3Qn2w8DN7+XnCaegaRvEcGFGw96XBxGpWpyagBhZImaazwBjTueZ11zwCELLE1m6M+2Ce8/l8xjRAjMTisGVvcd9nkwdiC0o8gQ7BLU3TdqKtlxcohUwILkSvU/HSVw/UIbj0eq05dSeywbRNyVQnQaG9vaglAzh85ukEkibmwaHD8pLMsds0d8ufyBRcyooN3wLvlufJXKuJLWeWfQuE17mWCEueNY28G2/m5BJUnUFlSS2qr8WA/v0zFw+N7EQ5DOM0T8Se5WiG29Phmh3AH43Pl2MlLOAjkPx5hSEmkZxqOTyUz6t9TysogbRTsFA03WlRd+dHEfw6VJ5F3KGn/JllapNR+KbbqGUe1vWavxOrsMN+TIoCgV+e2ZLnP3M7vpoi358JzmK8abEPCOpE2Nie2eJdJ91rOe6M4NqZhPjHZFG6zJWiT9thnKGBy2AbSka3azK7yf30mw8Kzmz9cfz52kgW1RzYnFVGDSwcCCM+u8GOIlNIP/obU2oqXYzzoDlrAkbNvoRV0Ttf7x+MRCd6c530YG6mdY098Iu9iROLtOikuAP4PiTOJziBBi7KmUduTRrrlS2vqOKEaI99S0nj5AUFyZQZOfM8jbXPy21tu1f8fZtMb6l8Ew6iB5wc04CevvCdEneN8wJ33Rs1A3B0YKyV01WJRvq2thbRUaEYAWDXTaQT7yNbDGcPIEkqjG9efsD2sKHiYa40vB+wMSJFcBEx3X26SycwKyrgzgelA1BsZtlpyZvwidtJJxygsvEwvE0qXixNSusWDeHYkjwWRzcxsWRUC2yvTroLFJUJ6xXbazBauOyde5nZdw5k+Szo0+6Bu4lELUWvprE8/HbtT/JcNqBlivt4uNeYgh933qIwd2wB7gY0XEFF9LUYeKG6dcaHR/1cQCHaok22hD3oPSMnWJj3FHgKHTI7q1zl9pA2IsNjtfavaAEjCUsL8HbywyaPacnIS7C9x2sEJadPH86NfZVszV2Z7M/KTcjFzZGvgbAUvkaa/bsSEORuxAWgLm3qIwlcK3GWUl1/5bn7JBSqhh1O4GQkvA2UN9IxTus0K+Ju+C6jikn48XBp2gc3AY1unzkZbKuD/lmZs7TfhXNEIUmd4RfLA6KoZGgaUMGDjZNn9MqC1u+rKQ/gjhF5dQEMIW5xNu+8UCxyRU5qEyLfw/1ntK7CGH1dPDBoUHwhd958RpyPX6A07TzIcvnW8R9x82eGBc/9FSa3zqlgimDWC6HS0xP1X9C9f3/nH+iwBrZ8qJNEO9hjjl/bGco9NpS78IsfF0UaBTXUCdfMvhXvWFoA/PqjSt4ePJPj847MJFd0tKNpz1swSJ4WmNLQrhmou+UI7Y2qFXv2vJ7EZqQvnknIAJ1KKqetzvd606eNdwpWGsRGOmqogU61f6dPbuT7eikA5wdryKQcRCBhjbeBTH9vJIgBYlJMvR7NBDstBgpG7ebgTBD7n22VoACsegqh/AktxbMriPyaNsKMlyxrj7wIAcrXjthgsqd66olGVrYjnrfi5RPkzYdX4zpsNLsqPRShswQd+PxXyQCa84AqgxIGRvNZZxpaWrpVrcbAfIEs+k6KwNngPYVnpCzlyTvuwuWLmaGaT+9GAUd4sX2ng3IFdP0C1PZ5GJjAkO5vgFwoKwz+ShEcDSmIy8EZ0lgwOEmNyjdZq4lijsTpZQou86f+JX4r9GNGhLH1URUmhKGthdShX09jQnwx6E4JkKW3klVAXVOWec3nTjv1Y9DyOvXg/fWzbXRIH+Ry2gEQp/xKcyGwnB4Zafx8PtCCQQfHeo9Bz35AShhdWaFMz9MU6Bm79UjwTkW+Hm2b43Tmn21WfcRD8pmZiBuUxiFcMJk71jlAUbIWbBBlaTjqPSi3V5JOlz4unw9FkKVvSTaSjxx1poko6S4rEL4NQ7JrtCmwgA3p+FNwUIr4a/+hAONk5uGqXQSR8WlA5ARPesfGDqPrt8QBUnPMQXkWuAQFEgEas+tl/ti3XydB3sNesDVrK6bA1Nahju7jFkK4RWEdEl/E3YU7Qxxs4s3AiPId9fzxIs35ukMBgIAffA3dkLTj1A3sTeEmgBrFLe6zrcWviqQ/yUJ+a/o9+8DLU3zetGK9q8CrUx3m04iRFKvaaBbUEg1iBryFd6p9HjDvVmtc2zx74O4VjVPayslUTBquHlTnyI8NBMwNhn0fGceJ15FQLvi+XOyL2LGnYeSMNOWUG8KgejQU86nUQ9Pip3+zE3hK/koMdKWfgKAPWClETxETg+hefuFJYCkS3l9fKmEH0AH8qX5ni/VUMa1vNVL/g+IL1ARV26tsIqpOhuKyHMXs9Ma5UKtTsJKb/lioPkOuW2M67salE8wwxCsKj+IDq5/4sQEZTHSf8QUPBNkuYGUXK0pNZs/GG00EoCEKMEYYEF0BDYKfdlIWEEbG4kUhFseUBlYqdIV+lhBYlnLjDdmCDNQljIeESWGi2mX5D6TC3UZD7lE6/c7yGIFJgNXh15kLL8u+Y0H7uh06tyhgg/6Qwcs6o83QTxUw9LJYIm60bDUX2XfhUN5g7YQRzQaqz68hIVaIbi9vmha/sZFAFeMrWkUUYkCcP7Y7f88+yPgACrc70A8EIlCmqq2KNpm54iTIpJrTqItGvtKX4xNn/uhAmRQzWhh0FOTookGnYC2vFRcuvHCYuoOi4joltMvNawEVayFe1hB+F3g+hAYUxZqE9UkKF+nO5tbgpudeIToWw3bh4h1/hbJPTQXx24vH7dVQjWdvbt3Bdu1OPmI91NZ+nEQUAAYyTw5weNIpoe1K/AnAkYv8nxodERxxmzrmpmVwvFnt9jEaKYiV3xrnQIghY/rKowtodRX8SlbWch7ry+VNmVENDPduxTYmlwBWtnPvcGMuq6CmeNYqkYIFljmyWgWMyFiK9Qt6ViFfQAbTh0SrYKT6Mj2vz8swxes8bQn+yi5ju4X753V+Cu8OTi6YwKIWSNTI0htq71s/d41qw6Yeo6g7XZeP+S/lf+ygtrZogmG8GsFdP5yXrWnzyV4o8T7e8HaODTIrUToafOvjFoEv1ZLax9OmVNWyT5i2na4QzH2kl0ZqhvwBN2EZXelAQA0I70VaLCtJw5n6CTyt7T6URsl6CV7LErbv+g4RDH9Pvovj8KIkkoTDCM4LaHS2x+LnBOfV0CQV3mWvh8SH7TSB9W0hLLzZp8FCJh/l/eTM+IFYLOIJ8ZzZZy8UtPJ7lw7Ma0XJYKTC+Pmc33XEyJSCNZXn3nQwu9TL885tHZgpgcdkr4CJ5I+FWySOkV4Cch+anvRkOlRrrNLRLoqJYp93ygSHaeEirdtI1ec5qvr29Lel5F+EQY+t1C4ch0+Vg48YXv14B1NfZ9OcJlh2AQShSJLkMyODV7sVzO3Lr5ehU5OL00jlThUItbEv92urnbHJKnG31SrR08TRR95KLGgbLqvHWSJ6e3la5D+dxHYMYSuAzaExnCKiurSxSIW3ORbwILnROELymCS2XzDZnZRi9iBpxoBfgLHOAnjkRd5Pgk76WTR1sFQhvAOwaDJ2rDYLZhLWfUXszy8MgbiLeAwrfzq7j0EOqfEDndQRyU0vb3NO7exwWC46A6CN8V5s5FewHXieXKTPgQ9PzB4t445NLMhWsqRdFMuttDxSXtpz7E+tK2y+I7e4GJMCTnr0TrFW2AFvJykX3rXacjjq9Gy0ewQVPFFvwpkH0DBjfQB+mA04BpFSjvOcU0qPJBRNTFCIgiYgyfr+vFC4oPAaybWxlxoli9wKbuyH6JKYZF16/AlWjS91MGPZuO7NzikJzfOqcYn2Gj+Z/pGcJlXK5yZfcbHljW/ruWgCUIN1j8mD9bcheW8Ya5U6CN4NZw5GRnTfVevstH6X/Y5beqdvvNd+6IBaR3S83BnAvKB3hZuxFRkjbT/UJzZVWW+86qEuVO8yKnUIYLz48PhGNFYltxarz5DIENH78277VnTmsGyQq4drGtencDVt2iAf9dbBKzXq2ffd2cCDW/u7+Kq8SUj6znj15ghINmxHbwch57vcw1syxu+wHYq2Nb+DwrjQWH1qzcfpsqpJ6CgccspGmgylm/TdVYeHBssJ86IjJvf/mUy5lnwlk8hPJOm00Awge0S5zL+2KywuYDO6hPnlHgKwyLozWs59vPIIFC5Y9PXCPePsuIZ+VrGRn2FzFXzelAC0dPeMABFjNcU9II9raWLBr5bAnfhbQcGB1N7OdKHgk07H4kUW53ilNQ/WArE5zwf4G95F0RtjxHRu0mIZtsZOK56je+wgFiAC5v3UdWSMo18I6e2GYcT86HlFfSBZsXgP6ySp9/KNulGR/MmyroPeDgwlxfblb7mmbYNoLsUtK7RqWQvPyF8IUmx32g3Ssvr7TgrxTR5ilANoeX3fbj5zebPtR+KK/mD4M7wF6J3lXt0Th7YXfPrKtTEHyxFbfnpU1xfeHRBA8mEaJIU+dxB9ERdkPlRzx9Am/4jTE38sA5lsW3cFV10vzSXGblvQDCPwCFMzsFHQoi/2GbRy4euC1JolNziVHtvIwB6N2NG1cmq8rUc4+Ztb5STyPBGU+s4KztXpLg2NwlGYdfAdd/OsR2aknxs8z/Y8mz8BHL2pFz8XflrFRw9es0rXD1Q/Dzo7seKtQajeNplDjhUYIaMBBW9gC4+BRxQ3vtkZlcmquiF3QIWb81N/5pmk2hV/BIUm0WXL+lkftzxfNx49rWfrUdW4CndylG6TiZw1dTSwYXRPH+Tok9oZQGGHt9R+7apb3mgDAfLKn0CeXY3EjAMjWR/NcXZLLosEqDhb+r2Nz36nNL2n3SUFWbWPR8RnhUZueD432lltqQxwuNlBQzvQrYD4j3GEMZi8BvHJe+pDnM4PEBhOwsUi0z+MRzPMMUTDd9J1cZ/JvHhX0GHA0zh7j5HPQAyAxj1KaXvwtOdWD6vBijtNFQ7aJC6ogMLwFsAL9Uji/AgHXUQ+A2lO6SprByimaQ+emosY1vesASFqbopTqJ4TjziS+Hgrp4nT3kNRo6yyznBSP89EeXOIc5v1fefhb5mM9Kq5xZReANmygcnZYbVknLg22Asxx5g1EGevY5s8FdfNYTSOgFYB+//tu3psyNAOqO2N+b68BrRI2GzxsxXvaAVUOgZXDfXuX+LS3uootfTCXHLoQSzwBdTF7swf91gc8JIg738CsFyuh8rXxajpRXlFO5TjgjSKz+REBKQsBR7zqQr4CTSzG3lP4KTC1UT6cSvx7IOiu5oDHd7hHyf4sNyxswCbbv3MXrALBmyEd78IfWfuUAyEwWZeLD9Kzzx4V3LdawyMfxdogVwK2Qwp4YYUnnXdK92DMsEExC3+n7e+/2bEiGe1EEAaWEvGD8isDziRbbB+WQBgTzvXCtSLigpoVDVdRvkYnh99u0q4FsO8WEhabWGU9rw3iEQFAzixCwpq85QPmgCIJcdbapbgvLsvM3pZTVX+fV3vG3gMifoVD+B8V4ccsH6N6Ek87gqBslu6JOhXAiNxkW4JLUnSRXVgaBhplmVgkOdAwnsK5asT9SjpuixsVzoooYEeOdt3dkvgIlzm48fPWUbwB19E4nn81uaxShW/rFXdKilKOUXqdkww4oIGdaI4RTV0zLmcl5n5ODCKT+Alu/WKkWkynoy+wTxuu9Uog79bXKa+q/FhLfPnrVEbOgZTQp+Z5cAf1YgLG1oyS5uNA/eOCKE/8HfvyeBBrAcNifCdevKLgx4ZKJWBathn84m4wm9lrM8VCdYU4mhsnkUQMqAQf1sYoNSKgC2x13rn+GpsriS+kWzmI7crdVSdBvaRG3Iyv42GLRos5AVi/pZSMoOrvuUwHFSTkphTN7o0OQZlLeSWyrjipsTyenUkzYCVPSItIpHobGREgJaHhXOesrvyYgHdEk6MbhL4ZCB6tJ/iE3k3kwFFGMPkAdYLgEvo/JZiz84+B258Tx+RuSXKQ3E1Xrm1rn90DUzQG0DoVEJ3hCEsaowcWqUEoAm/Se1Sx3SPt0NfeRc1XLdYOzzgL9XwXB+vR8nx5tx/S0MsdDgo+CRQQPy1xgvzp1hY/zAY92IxzkxSIt7BVDhLKSeQHjGFAqr0NJTY4hkEMXwEhZZCWjd/65YVzrmq+i5WeWFgdlvkAkVXTc8+jTi9QO9HDOlMCsR0Lnj7Gz4E1JKUl/74VjILAwkB+xFI5JfidyW0BcpuadG+OfJYCUyeP3g3H4zfQHwK5vRJf3rMzORTBEe7UOCwm0G07XH4+AV00RQS3faGtvr8qNiHduQVmRYHmDxGCabNb9E6mjAYb+TDP413rzdNGVOgAo/gO2hB3ZpxtYSQFVKxby/+4KSUyUBvsLYvHbqJzYYjfVxS3EXXhzVnP75tQ+BWlM7Ne/Fzw88rey7ubAKYajAmQKrwRP9Ws0M5TVNLswLSjXwnhYNnZpvBI34VYwPma61bwAD+P8+uYvQOZJ7Nanfg9RJ25lJQLxueflJD4zzYbIMp39XLQs3UqrPuiQmYDta7BX5Gn/etBxP5IzryYsH46OidpU2dgkUAJDQGFlawYLHi8KDafrIzvFM52FqXgvYa8axmPH8osvIhSsBhoMEn8GjhGPxKa/OA+r6vAcpbKVPW7EiG1WS82ozuvgUsGXjJGYaLAo9NloHgbFbeE0d1Bg95a1q/4CpeyQef8oxIiDumxzH5GT47dwfdt7bPdWO5zzioaCuGiveoN5NqEJ3XwZ6tYMVlNFjPWY3QG+BOI6g9eoYhJnCgHd830Fr+TlvJr1aBPiTgH0hhPbJtNdrxoe4AlY7cJudWnDzhCTLga6pSkjaNQOSp7so8XcY8ptQKl7510q2qr5PIssJ/REI6xpp5nQLy/BIb/YCNrfssxgoseq0sfS7t8yEgVrA1O9dybURvQVqHlt16OipMHPQaTykeCWNr2A6M+RjKPqe6sLosNk1uxAAiuYU9szLWsxZ1us9WfF8yB5SPgnRvIsPT+q43ZWyM/b568+hkatczsoaHlLev8U7G5hqBYcFzvVn5uGl2pjcxSe0U0uK4rMZ5E5+3t1uV+y1iFGKdOSjumAFPUfoMgzn7G2CidHcBBUjmXDpj8pmISJl8LOXleb3leodvnx6OmRv0kSx0dcCfJUgfg8n6E5z3UwInz3Zc+kV89oOhR2DexQWVHZzcM7JLOjCzIrAWKzPDO7G3PZN0a33lQvvV7bXWIGr0FtzV073ZG5xYLEhcjJ+XV8ZknebZp9WUmsy8mA4AYw4wOzxMBOWUDisZ7FfAYTyYJKvswMebBoZBEoccsJCA//oI3hZlW66Uh6Z4AJUeSpzJK0/zfCStiEeCPGv+TMPKGqfP7d2XrfWAtU/z8cdftg8yKFzj+aLIKjTLnehBfJYagCpoj57EgIRImlH0+PTarf07py8zO/vS6FTLXqxstnr3sjN+VY9cA1xA2LS/rDgxVAINREIWJPlU3Jlt2ihhEjtr38zhuxHviKi9Fu33F0Y4Roe5jhmbiXpW01PfG3ch+sgqaMB+W9NL6Z6mUfxZXAumKD5+0jl2y5zCbfhlnHpknxnqu2KYKfnXpIiHh2VEvb3i5hTjxTu+EgVEGWJJCvmpj+SwecxCeySNF2NuKAnSfv9cgF8HSB5VwzDJRD9iKJD03zmrG6bz2/mwnyltaQeg+c6qjgerjou/EyYc3/iaxHDyxMZP1rS2QNX3HYKKGfpxVoFs4I8AbRrx1uVXf5bC7y+13dYMUF4KAmhwyVENxUjZH467+aNKWzvZLh4UHAfjUTnHO0BcjTaxbDTQRMW21r9RBJWyO/WELg5a+LFe594EU2LY35+xZRJDL0RdrSEufZhGVBeP9NrNfaHRBFtAy4YxFyvGrbTREQ3W74tTST7k1n5Qsuqllp3e/lhbHF2UX+8SmJe9944YkAEyWDaagjc2PMMfUdiAx/dyx7kbDizPg2LK1KV33pdbMjzD+auqaBCpSQfrWPO7Qtwno2bUhHZShrPCEfVbT//xdCoYw5OoFq2X7lwV1BYMlvPGShDvJ4ySFlXx0G/1+1D85cJhhcWkFSwUkV6gVxb1ejyegYNB0fNWxUBrKVDCQ4qsWjvqyV6n+4L7e41PZqnmEfKPvDHigNeNXHT3d5pxym432Q0ipKPZIfASmIPywVPHIdFmAd+cq9sN25f4d5cvQON8ihi8C4N8IPuZiDC6RzeS2vNDoS/r8Rfey7LmwF8y4cMzX9/MTiDW2+9H93k2NhIfO+KpIrDf7GkNNSqwPLxgeX3B+/0jV/tlNa2RQKRs5cpIMhnhlrUyp64d3t6c4pNwnParO4rRu+1gpq9Yq1M5s2Ucvbau2yLFDxDwgmw8185L6BjWfDxaWXzXjvxcLFuExWwAs7l5n5iSRcNicPTY2hV5tsgX8fIEnip378bcSGDjwJVg7TD4MxUqZ1qu7NgXg3pMMUp3jC7Om9GVWQTBWBOiox217gn+wsCba6jvn0YRqRSBRSaDFnWsheQ9baOk31lKrhYNVXOrKm/x+G5QX4ZssD5TZ85BbuNJbsMJ28P4oS99CtarvW5SN/5ree/V7KoSrAn+mnmdwJvHwoPwAiF4wwgQThIefv1Usfbt6J6+MR3T0f0wMefstc9ZEqZMVuaXWZlfJYpHp7+j3x/dPOYEyNE78hS/VxBGvOdxwVSipk77uS23ZU9cxpKEt/p5NPHD7dqfqh0aolVUwcsb05pov9qcRI6LgrveyzKDFP5ElgFRGjk8RFGv36fy+WY39HN/Hy/Sy2EjBUfIJ+whMOfDZzJHfVKV77uvz29wdWwo0+d9/d4SbOdukmV7hCSH4qP9iclyq1v4vNrnLvINfduktMXSH/xpEdIzt3c7S5MvzMby0bfnzSB3uuyFv51f5GhxVe82xS/MvSB3vDg88zchJnW/j9TAX7XGOBHojwnaCO1hV3sUV9rFTSJGqh6Hw/v84034xxT2X/5fudngqKv7m8Kk240+n7vYpl4oeop2rqJQR1sMUbmwD+XM7VGrgFbw7yyCawOBJ3TmydVNh8siEt3uJwBFCvcvwnSf5LbN8S8CioC2ZBf98fft61PcF+IDJ628y5V4u5dFldSvGbbukyJVnbmrKddL1NmIb3A1N37StDR+TnFn2qY474Wt1SxLts0oNPgsp0D/Cvv6YDukB1afoOJ3BOcq3mDfeMofaBY5Y6ODx6TvMjEOhLtU8cT3SbGydVKz54FPMSnDinYlCZe+Nif5bo0bRFpz5bhUa1uu6qChgKOn2CAl8rCrnDMzreGypdAvGV+TvRq/vrKBHqwhCpye9d7wSGfdn3KXpb6iwrYm/tfkGxQUWf/AwEm6Y7N/s6R72Kja/+czW9jYJE+TdNEP7gznqf7dwsFfaPankfT2d584jPyObLGvphBwXaEagvjEl0lEfwyEKba8XVvW14tBNnR3Sg3p4ZS52sGHKr8bNvCpZWfk0A5Ewf0w+64cuATf11vhMH5H5jOS2rSjqIqCRcXv+OJm6n9AHQmb7bpXkjjbc8+CkFS/l9Z17RrfYXYA3jNBt60RPIn99fBTHnHForIMJfQffWm/+yoB7jKVR7BzyG1biDUqx5xxjCt25tztTz9UXgVkyTTsJ3Ko5CSYX+4/asjWJNllsgcvOD2r0tgn/tVYDLuSqNGaGZBD+TnZquahEdfvSOD9O9cyyUG7H+4q8oSoOnmVV16lO/dQ0t8iWB2B2UphnSucp6aMdMtldJ5UDtuzQEBsyh7Y4qxvDZS/4n6e+MPnGTQMaA9pjg5iFcde3HTvRt2+8p6hCKBJ/MvzeKMcHDR3SGui2flELneBttaGlhLo0kAkOsE0bzdZ2S8erpfLNjBdw8ehj6JU38g5i0oEpCGhnT8Jn920K8k1leYFxSaUF7Owi2VLbZNaJdpw1YFQ1f3XuF08ovcDPkBZy9ecqnf+9Xzi/pNNt7EpGtOjoO+Id2onyCK4vU4kUjzt3c1ZmPFGzF6oJPlEbh2E2/+gLMKGK1tw4el8ezTHHq+rP9CJnhgTp7wKngC03v24XL7JhLSkhS2bNPWtPDl814oBVbHqV8IW/6AmTG4Ut/NghcufN7a2W7kOaewBI0xE4olyzBU8WDOuL0UNmnflZ2ShKbJPYFUl2wc1TSHxh1MdHUkWGrdePbcdSNXU8uHwQ2QICiN7wnb/hC0eUirwWRLQYMS+Dhq7B7VDYCSAW1EEyi35CobR5h2IXTUBTWO7z92VqZU2xKdixMTtUWLg/9P/yE8UW97sGyukERbLi7OhjwXDD2l5bI2qqhD1Mfoj/O8ilf6/8ZX/x6//Fac0/h+00/V/cxbE/y5S6f+MDf//h6TSUwD/MuVNBv13u1wl9ekrkeYHGZFgBaEciScIicq/k7tgZJEyJA+jiyOfzvOuc+H1N0UxfAjoX/Y4QefDeyqvAq1gwLJ7b9vCBy05QYwylORuya8zTZJW6UOQPCTFgAb5mdI36D9Q3Zstr6w4BPTFX3H/lceDcrHmkfZzEAnj/f5MKFF8JWMRN4CI/WNrokO0gMRFFYO/TU8+DqeiWZp5JvNtsCOrfWFp2mcMeek41kXRjN+3x9rmvF82/cud51UXibEmae85mLStujvsD+NYGsW+nycK8y9YYHhmwzNc2ZaNfiBDNVssy+JsqK7yDwvB22SllVkZ0eLI1Ff1jWWGAfsxDjs7Abbbz/dFvyGj0GCvYSXOcztS+683JuZeikiYPGBe0cjgAinLGLilVaxHx8tAQI2N8lpXmLn/SbmGQjV4fv2tkfyrfO7hBRm4x/g8SRzikzvHc6uM7A8bqUAWaWdlXOOWMVW4yJWZRfPXZd21f0TX98KO7DbP/pCycJn1LXRBxb7YZB4Vk55rKEuKyDXIxqVMb5e8j8xbnzQ/gfKAoIsffyVXzP8hVikQuozjMifO0m3JJ+si4LoJXlbQ3V9/lp3u1ytsNeue6K0XOGCdsnyQOBeqE0iTiX6xWYfbUlWS/PvEUcxr4mMPWDUqFERWCXPfQuAxVlMeMRrb9vMPfSQse6JMmNAVUWuEK9I7Z2yVpnLl8Dz/XUockZ3pKEZ91ZFehBCb0C9QEp2e1dDUVNSL/4ieCvYB+dRxjh7T0DHoewKzVmrRQ4hnpQvKsBHEL/zFE/a2mGdR0kBrXSCTy19/f0ckQ2c+WRGKn3I/cg9xqNtEy+aR3SxnXeTOA6JUnAMP53OQosrUJ1ZD5l+IFnmPwR0lYJzSyesvFuVQBrXTyzUC/FqZd9nqSWIdi6/xx5QrmysXmiPuIZisEWV2ss/Hl4L9SYXP7esEDMZZw8AKQQzH4Taf6xFDrfLlPrPZwOcKlR2hPLGZXITdTxeZjhHLYGQMrA0U71tLKI7+h8OUlV/wupLAtyAaMYaeRgznhfg309NZsuvcjHcZTHpAo9XGXFUFr/CYzmQ6cK1BK42tlkUWPDEqvnkPrM/vKeYT4igyVYY0KvGiJn9bF1MGsTIaVb0F96y2jCgxKH5ARiDMU6HrHFylgfd/GLJ4rKnXCpUYJD+vBz81FndEASUcL8t13a0wYct2i1LUVsD899qwUDIEXYrXMA/gy9VKRN3ks6hMq1aA8A3+S1kI14fsQLKYhm+DieysMQQb5j4LCJTXuycjH8xXk3c63JrrF0H4ik7zZRqWIYUXIogdr2tu3uFkGrE70leBawl4Ijj03X1o35e7sjcUmZv++pI8sjmOUehS3oanGNPP20yF1x132QUW0nMsi0AbnA/4serVlP3+Uht3A6jG21AT57kQBlxG+NbCRguyCkyxyA0RmQpP90XRbZYEVTELTxaKLBBAIlO2VLKadh4Uv9spItfTJVMLavJahP/GmSPddPsbn0GoOGjvGuk8Oe2OIfY7ry8uWTb/1oPy/PtP3gnmv3FqSzeYLyCMff6sQGWgWmLROF9D83HeCjJPFQYlb8z+LsB+neaudLUivQBE/bCCkLay5fwxzxo1HfFFc2LKfumL5rFUDJSm56soDCbIycA0GGorCqHpF0OerLY64ZbGyB8/+3o71FuR8zjGl4KCWpX1zoeAzOwuTi7tfSnEAY76XUUvfIhKNa/P+Pdy0Akdwvck2W+WooJ/2W+LISXoV+D1SKBQ3JgPLnKeq+bXr2Nw6qhARrnqNqUnS5fIe4ey8LihPAT6vCpQ1jYHf6N8hXhVcUJ6CLETviUg/xEAag/ZlEgZR/uYyMTDdlvBw19+VApWaOaAiAyNrEkNlA2uVK4p1RslUwUCUVbCsRC3O4AuuLtxRfkKGhRDiZGYe22pGe+UKFgf19a1TLINVcPBz9M+YUq2ngq17Br5akkuqAGGu0XibWgpA1/4IyuN1Fh3pJC7YoL8QI6YtCGaxkZnnX0ieCk+RLf8E6wNDfQXdVHYoYKLQs6WhgNnrgeJkni9SAaFHkkrYjdC9zw31Oda3JR3x33lN7S+0zXlPemqH8KbBij0tnJJvaxMILKdUUZC5ElAAsK3/oCBH048Q63SbkOJE6U/NR7mNPpKnlwVFyWSx8NuLQ/tL9/Jou/0QMeieihDDxPqLUS0yR2aak5tEoEXhUbPt+qqIS2cqD9OX6RF9BRRD5VKZZBIj8pP8PUXyP5p1tVfbaJFqE0FUaXvdoA8WZxeMCb24JQ7OvgI7y3PDaiF2muVe9Z9ITPjoWMQVsDXwXEYQOGJtkTJUHM5GjESl9bXhQRaQC+2rdPaSXttoWmDbXlKVZI7a/cgfrrQLVQw1sklYTdAiAx83I261kpr3sn5XqzrEjNSoclQmqor6Zvi0QYHwJ5dZYbg9FbB2HLXtZ5NtjsR/IZSwhrY1QOTztpZFLX2rrVqkppU9Lwn+QK4JtespR8IdT1V+RHbq06q0FyLq3xQ0Nvue5KXvcCjhKigYNchmlU9fZKcasluXNDBuVUFg0rrSk/F/L9eI7N12mc0JEaN9Gpu3U3gBK8bUziG+A+AvkMbC/3xxacWr/k4EsE7WporGn6H0FWgi+rpBdPq0iQL6A/bnmAZ75elBsqbyJVvRQikZ1QeFmS148DpQKMyiUZdcGBe2TWIQ1mRtkt+R3weXm2278wZOVJEE6JQlW4ZSGhT9+Q9iNArPUsI+1VmCF5L83L/HQytE90XNzDMAA870JDiyN112NIfFfCfjzCJvxkPkdJDFo9gaOczjthH/bUaaFvhNJVtWO0/3Rcar6WZ2FZKiqItDgTJQtKgSyyzw1rwkGshS/y0yfMYDms/s2gH4zdpbU1mwrSptiSjnUEXmK+/QZSQRvTICCsOP9v6ExTBcjeTaQn31asFaet5C8UuyI22t46Bnob+RAEWt18CJvNcg93oPGMKUNFEMTzIqMh1NP+JKEeiyhfrXUvyNSOIJBPJBXs1ti12f+0Ue4iD2BSLRN2rrMxuf6IEBUU7V+uSUKZHYIpubpWmQQMniObx6r+JunOm0Jc/0RvqLQ22QqmbQgcqn15HorCRxCPs+dkuzwo7X2eeKbfvwzBvtOwdduAUCBsYxOvnRQKTtFmTqPV80p/mbz3X0JD6xR+F7/e3zCPdUIRrnPZwkk8u3p0HLW+4BC1Zw8c3Ioci9O/UiZDCH/vXvs0lQrgUir6Ol4LYCLWZX5HxC99Op4Eb8cy0LvPQepC8wnQfcsnrc26503ZblSiWvKrSvbvMofzxg41i8yJqmAv7+KMoWR5q0t/eCBVPr8C/gLRTQPWZv+1JfVxVZwhhfU2nCQnrMqV4oOKDOXe5SzDr/K3hO+AseC0prh7JIoTAvIYfBCVo/vbTS+VoSyRZrdeUz6uLwQMihJLACF3YGtK+vT1kfVX9ntVDTthFGe30Zf+/H2acs0ekm++lYMjkssp2jRXPLLHeFUJZnUFkJhIDz9wn1Ud2BcKgSYw8qDErufl3HdijLYbqV3izLx927Lj7vg7ub35SX+eHkRt1h/0/0s6QIrTehY8zHhE+f61KJKTrEJDnFz8I8LlQuCguRCx4htCcXSsL6HoTdpJ1yG+T0pf60bUPTxakn/kt+rVykLSbiP4izDf1spcGg9ZgasZ2zVy+OoCjlciwedfZHUbi08c/H74H2IeiE1TiDbqfMv3rTVzF4VzRWDGgVW15rQIyYnzgT+Zfq0fbFDvYx7GnrpNY+grT/dgYX9VCJo8rYBDW8Fq0wm7WcY0aUG7YpIYb8pLym3hp/9uWBFCdvf6jRSA5SufvatOcUs1h/j1NPezl73NhfDCv5PPverv75HOFbIXkG4Skx1ULTvjBDUmur8rfj9BlQgWHynoLxDcT+JjMrrmThVdS2Wk5zp3lTO/r2ZreZ0Jr7Vs3LNHfaA0WpZoqErTcFDeE0NXNYwCh0tJxzRG0abqD/bVB8OUeDouA6GuMCvtrh+Dtdg+cMbcQVAhVcSQD/XOdSAJX0mP8dtdEGjcqttbKiD/y3/1DCh/1B3E/83LJ4E2UlTG2xmUuEAaup+pvGiO86HHG+JvHo6Eyy+Q7y9p01HKEDnQBrtuqIwoPQRgpy2Qp/hsF0fJCRCYN/sI8/3Z9xP8I/Fwk1/8z3/0vfFT1v+gh/+W7/9lHiV67Jsj5vKlu6Z5Cysyuw/Esr+RX6YNyAMN3C6J8LmHxfLA3IsFIHEtWDOm6NbBkMrKanMSZGilghv2FZDONDbNgpQfy11wSdDGxM++V0TEJnn9TgPgbnlRMFtyVyaKuOL9BbyuzJOWgmcxMPywxP2MrtD2oYZE9YunmKlw5vR1Y64Ock6jfVaqY5mjaDAhXpVO7kn/ed5QxApxPmFTua3HD1NoMWoLfI3yClfc9OEAiHdDxjKWiRgreT+02y0HokNyGclcVnf7cq9shqx85G+e5ju7ABRFCz7jJDVNOuZ4OhZ9nKL4YU6wSbPR+pLK+4lXCfmiUqBJz8BzYvaN0/Af2TwGcGBmWgPkynvDpZnYZ+kCbP0rLFj/8Hi2mR+DPGIvmx0JedY8NB6I3McXdjZvtcjXuuaNZTJ8cKS4KifCR6KvcVOqrA7jG+1Osu1YOGKb6UAF90l9D9xC/fjrWEzy2RGGJ72ppupFDpd+YRxlYyCi7xt1qYq6bSOdU36kNJAT16JWvA+8Bnq0LjgNtvaDxW4dj8eV8+H4w0wRWd2CidgVxeO7sqx6s9nKg+ZM+sqK9sOIKaqX2MzZHzVM/9kjXeJZ/qRaqF6P5YiycJSuKhCRGGId1Le0D0TxEx06Cd5XgKRXyAsXS5XUO6iGjBzJVLlnIkHydvalE9ZeZ9dN4CMJsUivQo7owhmTsL1Tfb4pyhhaOFxNeBL73zYSeIdNS+2P/2aXS1ZOwIG9vt1FiCQBP4vi1AUIjJH609+5Rc5sTYI/Mn6GVXypnverC1i+2K5NW3fSMMG9QSQXbNw4KsMwMfqTz+JSLW3lecTNUZpbtLTgWyTpc8Sgv8pRju800hUISG4+gyrOg4BoLBMpptnYMwZvq5uglcWossPIVDoTf6r9UExTEBSlMsl0lmte+Z0yktxdKKGH3B+xxQJWa/yhx0oJ9xYGJcuEN5ITh5HsECuix0zp/GyV4Sf8U/AQqcHa3K7VqrPjXoRNE0WSy+iIem1zZ5EuvxDAMsBM4OVvifSXZ42sZOu3nXoR8Zg5tWBj6C8kjJP27z3NKPEz2BcXOYvOm5iEIxU26n4gYNC4l3MzI6EROFH/y2wSt1VBUWHSIHl8sSOhadtIHBGpyykisQ17xj9fw3lprEpHu+gY5EebD8kZxCRuuFbN2f4DxwxzKsAZsaR2hvePvQzohziukOPapUirhDQr/0Uap+yLArXHp37QEbMonz/mgy3S+h8Wwo7JK5VG3yf06BYYZ6oOHHt8c5W8r4yZLavEogxDH3iiEIDursmeWwoknGzRvJF9rVBQZa86n5+A70/2A9lfhpvCugVktXFvUXeQmcfCJ4ig++Jr1TA59sdSQ8P4sQn+rpPmFFsxxplz2vW9PVcasgOayNtiPRUXZEIotTL90tdnuiNXleL3WDke38BbfhVqgzvgqGVsxkmsBVIy2g+DJzxtXrQ0wx1dEnLaE4YMH8YiEnLYTh23TByEaJ/vBzzvj+BXGL9tPRWiePeefVs5HXZb8v3JyOst7AXle2AO8jTPruspZhi/T0syLz9rrDL6QW4WyfLLOnXYKSyQpuoMGQ46FyHsLlDFowzTOuGpoD6KYa/N+l7j+4azju30F3oYiss+qk5s6RDK2LyPZzY+RwJq6fHjm484/PT7yu319dc11OOSPsxOZ56jXmi65sqgmSndW0EJxLbB4NREK4C5JqMBYWIiroJxX8eUUUzP5t0ZXNlN783IgcHJdGazOfLSsQgsakJ+bfgzkVyiHrk8Hyn0ezbSzDKlgUDmamG7Nugs5UAYfL94Rn/JxO95JO/KTD5/En2IqSaYq71lWht+feSZ2Oc9nOkn5DXsRb8lynDfH8OXLJsXTwtk/JzFwiDXPwJscareI1d8fgakgjKkdMbXnSlDRC/c+QRxTv8D6Tpjpozpm0tz0a5MaH133iW1xXTlPfmN5T3uwKAqEYzroeiKDQJInQ73vW6MIFDnrqUVNFwtPqTyDbqhXGeBob+8MjzU5GPNV3z4FVO8TsrBK9q2MRamVYsRFN3xhOs95gkRTCUMSepGWbFaW3Iu+irzTiIWIm+aOfEiHWamrRMXwnt6/59tAeNm41PZnctDCe5QKINA29r3k4+LHuM0tdIVnxoHb/Zxr+w2ID1T4rI+9Yuj2Dih26h+bLnrWeAXmW82puObdp9rHvGo/80fIv+K+/n64s8pQ6skksZ+uvYvybEbF/aQ1zbxJg/dRL0mZMZSyHPhUXdf2OMWTOKq4qBdcW0HsqhUFczONaS70d02Yz0m/X9mAqneVKyT8/rgdzzr2gG1eEnQKnUJR+a3+gvS9zozKaoTBZnEEdqRwywlnF8apDpGTlCQLJx2IaKcpd/Lq6PnkTUmd2f+IZzBjb7kKztnDliV2TjvhqeJxQOOJkoc+GbCw21mA2y+ldv8HVgNO4K8f7Yz/+PTXrNCDn4/R0Cjj8zgw71MkXevMn2FfweuWREqiS5sJlK16mmPA2UKNSKYFvieuHNI1A6HhP/d3aN/7ehmbOJDVWN6mA3ohEnd3j9v+yZ3PVbmEcPyX/Vi1YN1OFscQKzrtVvE9raDTZUmoJGn+GR0ocqHDAwqAqYBO9CoWZ17b0DI5CnqEg8Kgs1ZeJ7sScdLx00J0LsmPKM18v3aPlgWCsM+LijM5l/FTfgzkl6t+7W4bSfQ5ouzVzyT0K6HTC6+/7+CzGaDPEFikQ4IaoivujeQveqWkO0B04t8xq/4qtL4Zwk025sKtrYpEOv7eoyUIAcs7Hw3okwtsxE5AvtkeSi9WPpTOZUqT6SleUU9z6p1wX+sdeGzjol3etmnYYCYV8QMi9zVkcGUIzx+zfJ3X8KWVcd8jgAvvyCeMhWziRf5J12aVFD9vP6UKiPIlZ3gkUeUNaa7H/FbCbyBV0Yh0xkW/j2doj+Dr36FcZKl5h5ZKOZp5iRJwryPo5Z8e97dtojwZQk9Btcfg2ux7RYzI05/lHhEiVkHMn+sb24uFM/hIHhWZiKXhH+F9oSblur1ZbzJrP0L1TqsPUQOKvazE/d/dJyOzJbeOk+tq6Tj7n2oHSkMaeGxe69Wgy6+hQgXPqzpBaYGzSOXatB/hxYvJdUQI7vVP9jXM73AfyBAgrHaVztwI2vHk6uRvv8/EHNJb4NpbtvOhO2h82qfZsaE2SZ83lh9q/xxyYv6oy0UDjLsB2WxhXwHP8ySd65pqtkzl4oji92p9+VZ+OON7MKmCJFHALi4i92IxoCBgRHaR/wJSqnRApJXVMOkhGULXFm6PEFd+5ymZioILR8XYK5lFaPWfZDktP21pkdgJ/jWp31YGH1E8gdDOgLnjqHJKDIEtYBs0z4hYkxst1tDv/oxU/86OCH0ingM3e1L3eIOjLGnAEJTvk6KSJkXKr3CRPHMr/mxWtEtQbzN4HcxaslI53ZZ3ar7yDbp8lprf+2529cV8zchcKM4rlnDvUOaMZxj8KYYyfpBW4AEJwmr1Z8UYU4mHI4Qs0lo2H0Cfx2iv81BQiuyNwfx8Hk2gDjYQYdPEFbUklMHN9DiluvVFeaxXaeDB31iSJLJC2+6Aan6PbRM9vD9EdCCDQENfBMt4L2/WYUY9tir9mjnoqmKP9O2hoXViUrq7QkiNgYI8tpPipvnzIVL+wwm2v2EhX7hkea1tGRy6gwXT10Tbfyj9eNbRcrE9xzNJ4pndG0QlQXx5liOHKx/uGSFVfligNdAP31TBq7PX8SKHKRRVUoY8fZwWkVAF2pkTsquFUMGGPv4rEn/UwK9Athala/9jHu/2Z0IGdLgkQ39OddB9x3IqnfXN2VsoArf3HjUJtv69jl0rW5vYyR3rIj5wTfrS314rfXxEmrjXfiTXh2hf/5iGMKgeV1V6wUcTEq8a+UypP8SOKbJhzu8bQgN8x41hppaCmEdTiiacqSm0mlm5UgEpd2OQ3V4xXIZL13n8E2le0j1fyBT+XlbH3z50Qnmfyri2/C+8T2vP87hrGllDKKOASqAHoOgJ5j3cVZLuGv2gImW8z0g1mhcJN9q8yXR3P+4oRP54YDGRgkwqkSTcbgH+ycY0Js/AWVn0FhQDP2sxqkiEClF4Nb/c7NjeSixsvvONXKMHOy2kDcgHL13cSvvtW8i7vypv0UaUiawnpju2NC5nE92kZBfR3n7Ud5G+KlfLhINrlik6qS+5JC6ubHeXHZMCK0GMFijECaWVMSvF/PjWaG32MnIXSd6x5VCmxIh/M32Y7fSgS8+udlHR/pdFQkS5oBUwOJvfUhci92wkUf10+qUB+H95kUc1J0jdvcjyK+MsFUE1OXKzloyjldXMgiYUzWGHXVqoArLHiLTkWK1EqdNkg5sW3NM5JcEJsuuh57Cu5vwklWvvHxo03lQGsia9D/jslNKDDuUT/TD8g+iJmhPP1xFzL249tR+ieV1LHiKcJ1f8e6MADcqSC+PND5C8m8zzoOpT3jun/LgTLrLs+Mb/BkUo9YPP+C0XPkYjHuLDitOkXvII9Px1qAYW5cv5JUsG2TC/eWM/m2HqBkh8vjfX3rFYeYJH20pEUZQSjE51ogQlxQkuX/iqT0VkHkNYng10K3HpvSG9nGU8XqLk2zeBTstT7lF+QL/uVyoRtENon+dV0tDewq9K2CdNEu7md9+321Csx8ogiUNDsP265cWU/Asd1S183lIwApHGN5lPLaQ7tV52S/9iVmAEOEYeUGoMSlvBl95MMHz6Wu8lNar7eAafonkfSpjdSRJt3gvcVVXMUNlYzlJdb/JDFWsJSSr3Nk9PyPvCJNZTePOikmdOoWIthydiPAgWd0VHr2PUZgiLkfpPMOFw6ZiysO9QIjUTXgW0n+CiVtquNcyKPEdo/wryoXNjrstIuJfuxapPUaz1FvSO+ayb73rG4KsNF9x7XvPen/abfzi8oGr0D6W+QoTKsGy7s6gdIhA75Ryj18Qr7lne13OjZ7n63K0JYl2wDU8mHr22oYlkIrwTiWKhQ43513owgaNGgZfCcv6y2xTMOkfPAMw/X5OFWuSUeUqjojfWpy9sB2JyNtsXZ//Zlrd8SxHv2qLIVxzq+6SRS6bwCB8SPGHsnEi4QfiQDCxuQKLtnXmbnGZ5/CLxpZ30dXAEmhhmjXmsFHThUwtKFg0h6DnOBDf5Y93IpkSJcoq5P1/N/CIwWnMuhU/fSAbVAnD24XivSjBvlDbUwfs6gmws+dOKtNSloLH7S1oX+N+9M1AChi49xAsu1ZEjYOdlUi8Oc/frJ/dvw5CkZjbP67D60NKGswwEcW7FFMjYD5MWUU+081IwCpfa628t/smGqOfq96lsoeRwCOgRpFl24+dJN6V6x4qlfoq2c1N3GSyymBaehBrg6Uam5bJuAE5yNH+s9UmHfYRXWbWk/0ccg+LkFDdq2IYWGm3sHJgYhDVSdSzn3r7xvfuud9UlNaVqxMZSiZk4nyqowNde/csqtbNE54rL71xOTxWWxN9kvnyF6I6TbwkIomFLazbLSeevfH5qH+Ej0l/N+CEWQ6OWR3aSoExBjPx//LHyrdIm30AsWfSLlN0AWWvEHXFcR8gKB+Goqo4PdYjiEs9c+5Q/xgHI4iEOxujLiOwUUYkpTE+pWoyfGHI6cE8CHIpWeAKBAJ2Pc9QoKFFavmWPkiEgulJODEJyPmCzBuWt5jO77jT54rmfFthsVUng0oPbN/0xPTSD1+FKwVKsQjvkdSLwPBe/VYSttlp5IIvDOfjKJ58nmKfJ9Onn2k9pkU+fEGyq3nCO7f8tijbMZT9j880pe6QI81VC32QP1nzUeS92NFWtZSjtxq3b1Ad0giopWB7o0ofADihbUPh4zphtol7mtTR97a4sdwJ5QC9uz8g6WYB3zlS/2RCCLlws+/giZtDw/lqv+4oC/no5d9rVJG2s52CJTWqTbbZ4bVh9j0A7UWB36wFAt7AHj0/YFpOwofpkoZ02sX6pMxcB+YlOaJGJHKgNd0fAFXMhevKqvQf+l3uY1+6IIDtgRnLj8+hXd9qA7RoaWjYIR6JnLkkFUmUT8gDoUCGCgLqLD78mxnRFuw+g8vfxYV12Q8MA0E0dyBKyJTZtCQhB3UXXoUc0KhJssS/y64Pu1fbZU14TjGoM4q9GLNtYwxGThY903knwe+JrwJtQLgZ1qO6v9Uqj7b+lyDWSwVEtv5Lih4BXXbRnjgPn2QBbQIVYvc/aQO53NR3AL0bGIOAxHdre7b3/NN5gMj+nnNsAfd3b74WjtIFqE7y+Er3g/YqSJffcHjguvdrn66cN2LoyTPIYaenRTqWvUEzL098Q0P3ckmxUX1Fm2ZNuOum/0/ggGpRbKzxeUPMXvxM4yvhtensoUlp4tPMr9emxNaIqPtX7xcRC//xEB3eQD9hHuxEn2H7Faauhw2obT37/RTidb5mR2/YsP5TrfGeeW5l972oaBF1zHNxihUQjcVrh5E6qQBM8nkWJ3HEUuegLsOONm5ZLun9Pk35RD68Ns0E1GZLTSiteyAOz5BKHEii+5eE4nw/LsoNsn3u0X/Jc30m0kKz9whIksnmjm7kjmC88f4C/oyZR+MDCqUSicdf9iTaHNK3C3tmpYqFqLaNm/TV06HEFZ1tWIV1YjLrP2qN7rbLClg/6yELxA6Euflz8HGOUE9UW/jDySbIrW5cW46/5sCEC3vLpll9lWpff7avONs/qDF7DFY9J88oNKffgXr893LJsP3Le9PFs4K6IE46d64Y5TnJF6Ur3OSFVVsCndcMVkia/DI5HKL+f5FekhKKk4lKjPPn2d217rd/X+jtLjU7wcpU+5Rct+5uHQpe8juYKh744lmu/FydPoWMXa68GflO7B4fWIF+29JmIc4asK/JSkrKLjl/5EbBCS7js528oBD2gJ6UZFyvbdAH6beZWRfwp4lpNSBnhpuiTE//F2HzuCM+rPgRP5cQgjNj4okteRisYlzwifidiaZ4TyXabnT3r4r5NRx6W/MhjwUZKyrHKKNsByt9yQ4eJX/kh3rVz6f0dd339fbEBo78l/bEJVNBYIFSzYnhgaZzIwLpVCRDf59zFAfmZlEqDXkcMDoSpyQXz3ia0+4PtWSApMh9LZR89MJ6dRlgkHLwk5y9jV7kQ5JNW6A90fvXbH04RbgB+CryGSCG8Pvqm6EfEIacLlLWkAH7ELLgPzLoFZnOS4wztXHPXoK8YJFxS6asD9Q5rgxy+HeXezBOXAGvSAXpjgK47Yjif0CqHlVKVTQlk+iNXkvlJVR6du3Uk25W0eIYGUB/XOeSJrfYq/V+1/JXsMaik6/Sm5jXZJZKitu4BJcFXfyS/JDzYXpplN1oDf/3qvpVava0bs/IosYrp4RPWKaA3HYSykNkd0cuPOAMOc+1WsgIzW3xfvYA+9lzJIM5R9JglB4+K0grhjoruLu0rpH/GzMRPnbTJ0kfoStL3nbNsTybT+wdw71/OD2XxeOTD8MIK9ee+1Fg6WRkiiG0HTYfzu3+VJvetVrkdU5nT3Y9lQNvCo8PJekfhVwvah2iuskWpdGjU1yHj5rKuFGRdAL3zX6DVtqigXAEJatUY5AqlE0ZPQY8NCNUFpys7m5eRC0nJyGLw5LjmItHbY5SN3tcqGPUHAt9dUU5hBD0QSty0TYfrgCc6m3/eLBrkteg4mqsHHC1u0qmjE64V5/kyKTnHbp7whRqIfA6pAsHiqVaSI27m01jyRV5/1bd6VHMwpgQxNWW/8oLXImZE4KyMDjhhrCbAcxuHQ6g1/XrezngkR1e4iFmVpOlEGaxibLHG5oJxCrptEnwRn+ht1XiGHZ+PdeStqzqRhw80Ppusf9SCY7SqBCi2sGL8s2IAVw1Icfba+Hw3LVo95+enPbn3Cp0k6LukbgPa+6Osjf60uAEFebXqcANn/niC3gT9c1DnNUVzFiHEO5uvYWZ+pDr7MaIXluTv7cU6fE+tF7sK6zShipIVFJWPRGK+Iy8mLbIwqR6xAn0xHWjaN3V4FFtd18g4ycL1PxI6t3Oee0B+KXy+Sx4V6dalQ8Tqjrg53kb1hmpFrpS6DOToKl7nHnqLTpOWXWWCkNKPbxVKDxZ08VbDsa09A50VbYBa/SrVQNwgevGAY7DTY3UVr19+JxWKng7hxb2H/s35NJTqwZYq0kpv56dIWCSm5OdxXWP5OgQeKGtQVkArouoXNK4J9H0qBIxWP74OON/XRg7/3WH+p3f4/90dw//gjvt/d8f4P7gj+O/uWP8Hd4T/ST8e/493PP6Tfvw/3xH9J/34uwM8t1rM9PptIIhYnVuMe1kMW3zLv8yzMzYDuM0xiv7PQ9z0YA6sM8dQNp8fWDVJpB8N9c/0gw20x52TKyjnSI8WSGtI0e+Gkjpvgq6iiNRjAxaYPDuMRM/wTnAj5mabLvyvdEEBFRkUut468uHZM0lEL0G7trsrCjohk5v2mbHHgTLBDcKtY6uZ2N+pAmu4jnPd8ZUgYlW/CEVT3ezDw9O7i8yZkzjYRJoLBLetDkP43PY06j4v2Njje52iAdBlqzvgqE5CuGt6q1aZmvToY+oBXPNbtoTnUtCWJJdduOpdkb7jicGPAddMJqcWqY6KdnMDvEMo3MildL5DP2f69wFMDqx2i+YDjYao1jRF4ghrR9A88scOCEBTDZ3pXHQA9P78OnChm/iCk/r+/tQzsCYPFOaj71crM3SVBdRqvoK3oifBH428+Hqh/2/SX6zyDrNFZPsQBfU4d4fmphsnX/HiCI60pP9eWjRfhRC8ObqmQ6AH4z0Y8FdZVJOwp4ouW+/kzwRpKZZxIDQ2j1OP980U4r+5VbiXO0yks5em+6G/EXaTN1PMYnTP7x3d/ESuMHmbxxRhrGWQtgbidFYQt+Sk5AhQHxVqFs9C7KYKnUZXUG5br2ND5uW+LhtDvfTY1ewuKYvfc5F+VKtAzKPeZ2K0ysVhnJklx+vcJ02SwZ5shhjk0rILmeB1UFupHsej4TRY+5w0nP3NWwt2jxOyipt09HY5VVF1NbroRScpz3KVgVfizVLH8iXpbt5ffIHWJPp+mET6W03+Dpq6ElOHVmaWhotoM5v/9n2EueaW9BDfa/jZVVZEklEHP4iyPXWK2rsgfu7YagYc65weNaGbLBLg0ouIJfZH8eMsx/vN1+XHnJHzuTEWuRLksQ9Ex4GbxunM7YpZBVdNm7h7ngm7hvVd2La/drdSgDcHxbLpf4FjT/baybsckfXWQCMPFQD8/+BxFu840fxldD3YP3vliPnaNezvu05SClCoTLBunQdRe1fFtzucz8sEdrk5lrvHQk9fgEbgnAaD8xdrmTxTlXuIlLhMadPhe4sxod2aK8B/Rcv7NtPMDXjbJKH1dwfegLLq7vp0yeVbvmX076ps3BjYlif/PK/DS4ElHIDTkLOVv3Bu401h6HPpAZXd7TmyCoTjVTqWpXGaKdQt6FVQl3TM9/G87DyK1Ak+tGCf89NKmOjxf2XZ9/Dh+DdajHX9f28JM0tQ/00NM4n/n/R/V8WMKAf+70XM//HZ/4saZoRrPp/5v/pOHdNvbX2KF7ri/wI= \ No newline at end of file diff --git a/content/rendering-with-batch/rendering-with-batch.files/docker-files/Dockerfile b/content/rendering-with-batch/rendering-with-batch.files/docker-files/Dockerfile new file mode 100644 index 00000000..c30dacec --- /dev/null +++ b/content/rendering-with-batch/rendering-with-batch.files/docker-files/Dockerfile @@ -0,0 +1,39 @@ +FROM ubuntu + +# Install dependencies +RUN apt-get update && \ + apt-get install -y \ + curl \ + sudo \ + zip \ + xz-utils \ + libx11-dev \ + libxi-dev \ + libxxf86vm-dev \ + libfontconfig1 \ + libxrender1 \ + libgl1-mesa-glx + +# Download and install AWS CLI +RUN curl "https://awscli.amazonaws.com/awscli-exe-linux-x86_64.zip" -o "awscliv2.zip" && \ + unzip awscliv2.zip && \ + sudo ./aws/install && \ + rm ./aws/install + +# Download and install Blender +RUN curl "https://ftp.halifax.rwth-aachen.de/blender/release/Blender2.93/blender-2.93.5-linux-x64.tar.xz" -o "blender.tar.xz" && \ + tar -xvf blender.tar.xz --strip-components=1 -C /bin && \ + rm -rf blender.tar.xz && \ + rm -rf blender + +# Copy FFmpeg to the root of the container and unzip it +RUN curl "https://johnvansickle.com/ffmpeg/builds/ffmpeg-git-amd64-static.tar.xz" -o "ffmpeg.tar.xz" && \ + tar -xvf ffmpeg.tar.xz --strip-components=1 -C /bin && \ + rm -rf ffmpeg.tar.xz && \ + rm -rf ffmpeg + +# Copy the script to the root of the container and give it permission to be executed +COPY ./render.sh / +RUN chmod +x /render.sh + +ENTRYPOINT ["/render.sh"] diff --git a/content/rendering-with-batch/rendering-with-batch.files/docker-files/render.sh b/content/rendering-with-batch/rendering-with-batch.files/docker-files/render.sh new file mode 100644 index 00000000..9e9ce7b0 --- /dev/null +++ b/content/rendering-with-batch/rendering-with-batch.files/docker-files/render.sh @@ -0,0 +1,91 @@ +#!/bin/bash + +parse_arguments() { + # Parses the command line arguments and stores the values in global variables. + + ACTION=$1 + + if [ "${ACTION}" != "render" ] && [ "${ACTION}" != "stitch" ] ; then + echo "Unrecognised action" + exit 2 + fi + + while (( "$#" )); do + case "$1" in + -i) + INPUT_URI=$2 + shift + ;; + -o) + OUTPUT_URI=$2 + shift + ;; + -f) + F_PER_JOB=$2 + shift + ;; + -t) + TOTAL_FRAMES=$2 + shift + ;; + *) + shift + ;; + esac + done +} + +calculate_render_frame_range() { + # Calculates the start frame and end frame a job has to render + # using the value of the env var AWS_BATCH_JOB_ARRAY_INDEX + + # If the env var AWS_BATCH_JOB_ARRAY_INDEX is empty, this is a single job. Render from start to end + if [[ -z "${AWS_BATCH_JOB_ARRAY_INDEX}" ]]; then + start_frame=1 + end_frame="${F_PER_JOB}" + # Otherwise use the array index to calculate the corresponding frame slice + else + start_frame=$((AWS_BATCH_JOB_ARRAY_INDEX * F_PER_JOB + 1)) + end_frame=$((AWS_BATCH_JOB_ARRAY_INDEX * F_PER_JOB + F_PER_JOB)) + fi +} + +render() { + # Pipeline that is executed when this script is told to render. + + # Download the blender file from S3 + aws s3 cp "${INPUT_URI}" file.blend + + # Calculate start frame and end frame + calculate_render_frame_range + + # Start the rendering process + mkdir frames + echo "Rendering frames ${start_frame} to ${end_frame}" + blender -b file.blend -E CYCLES -o "frames/" -s "${start_frame}" -e "${end_frame}" -a + + # Upload all the rendered frames to a folder in S3 + aws s3 cp --recursive "frames" "${OUTPUT_URI}/frames" +} + +stitch() { + # Pipeline that is executed when this script is told to stitch. + + # Download the frames from S3 + mkdir frames + aws s3 cp --recursive "${INPUT_URI}/frames" frames/ + + # Start the stitching process + ffmpeg -i frames/%04d.png output.mp4 + + # Upload the output video to S3 + aws s3 cp output.mp4 "${OUTPUT_URI}/output.mp4" +} + +parse_arguments "$@" + +if [ "${ACTION}" == "render" ] ; then + render +else + stitch +fi diff --git a/content/rendering-with-batch/rendering-with-batch.files/stack.yaml b/content/rendering-with-batch/rendering-with-batch.files/stack.yaml new file mode 100644 index 00000000..c57b305b --- /dev/null +++ b/content/rendering-with-batch/rendering-with-batch.files/stack.yaml @@ -0,0 +1,553 @@ +Resources: + Vpc8378EB38: + Type: AWS::EC2::VPC + Properties: + CidrBlock: 10.0.0.0/16 + EnableDnsHostnames: true + EnableDnsSupport: true + InstanceTenancy: default + Tags: + - Key: Name + Value: RenderingWithBatchStack/Vpc + Metadata: + aws:cdk:path: RenderingWithBatchStack/Vpc/Resource + VpcRenderingWithBatchSubnet1SubnetADE6DAA0: + Type: AWS::EC2::Subnet + Properties: + CidrBlock: 10.0.0.0/24 + VpcId: + Ref: Vpc8378EB38 + AvailabilityZone: + Fn::Select: + - 0 + - Fn::GetAZs: "" + MapPublicIpOnLaunch: true + Tags: + - Key: aws-cdk:subnet-name + Value: RenderingWithBatch + - Key: aws-cdk:subnet-type + Value: Public + - Key: Name + Value: RenderingWithBatchStack/Vpc/RenderingWithBatchSubnet1 + Metadata: + aws:cdk:path: RenderingWithBatchStack/Vpc/RenderingWithBatchSubnet1/Subnet + VpcRenderingWithBatchSubnet1RouteTable1BCC3903: + Type: AWS::EC2::RouteTable + Properties: + VpcId: + Ref: Vpc8378EB38 + Tags: + - Key: Name + Value: RenderingWithBatchStack/Vpc/RenderingWithBatchSubnet1 + Metadata: + aws:cdk:path: RenderingWithBatchStack/Vpc/RenderingWithBatchSubnet1/RouteTable + VpcRenderingWithBatchSubnet1RouteTableAssociation9592115F: + Type: AWS::EC2::SubnetRouteTableAssociation + Properties: + RouteTableId: + Ref: VpcRenderingWithBatchSubnet1RouteTable1BCC3903 + SubnetId: + Ref: VpcRenderingWithBatchSubnet1SubnetADE6DAA0 + Metadata: + aws:cdk:path: RenderingWithBatchStack/Vpc/RenderingWithBatchSubnet1/RouteTableAssociation + VpcRenderingWithBatchSubnet1DefaultRoute58E16100: + Type: AWS::EC2::Route + Properties: + RouteTableId: + Ref: VpcRenderingWithBatchSubnet1RouteTable1BCC3903 + DestinationCidrBlock: 0.0.0.0/0 + GatewayId: + Ref: VpcIGWD7BA715C + DependsOn: + - VpcVPCGWBF912B6E + Metadata: + aws:cdk:path: RenderingWithBatchStack/Vpc/RenderingWithBatchSubnet1/DefaultRoute + VpcRenderingWithBatchSubnet2SubnetDC61207B: + Type: AWS::EC2::Subnet + Properties: + CidrBlock: 10.0.1.0/24 + VpcId: + Ref: Vpc8378EB38 + AvailabilityZone: + Fn::Select: + - 1 + - Fn::GetAZs: "" + MapPublicIpOnLaunch: true + Tags: + - Key: aws-cdk:subnet-name + Value: RenderingWithBatch + - Key: aws-cdk:subnet-type + Value: Public + - Key: Name + Value: RenderingWithBatchStack/Vpc/RenderingWithBatchSubnet2 + Metadata: + aws:cdk:path: RenderingWithBatchStack/Vpc/RenderingWithBatchSubnet2/Subnet + VpcRenderingWithBatchSubnet2RouteTable5DF00176: + Type: AWS::EC2::RouteTable + Properties: + VpcId: + Ref: Vpc8378EB38 + Tags: + - Key: Name + Value: RenderingWithBatchStack/Vpc/RenderingWithBatchSubnet2 + Metadata: + aws:cdk:path: RenderingWithBatchStack/Vpc/RenderingWithBatchSubnet2/RouteTable + VpcRenderingWithBatchSubnet2RouteTableAssociationE3297937: + Type: AWS::EC2::SubnetRouteTableAssociation + Properties: + RouteTableId: + Ref: VpcRenderingWithBatchSubnet2RouteTable5DF00176 + SubnetId: + Ref: VpcRenderingWithBatchSubnet2SubnetDC61207B + Metadata: + aws:cdk:path: RenderingWithBatchStack/Vpc/RenderingWithBatchSubnet2/RouteTableAssociation + VpcRenderingWithBatchSubnet2DefaultRoute42CB5476: + Type: AWS::EC2::Route + Properties: + RouteTableId: + Ref: VpcRenderingWithBatchSubnet2RouteTable5DF00176 + DestinationCidrBlock: 0.0.0.0/0 + GatewayId: + Ref: VpcIGWD7BA715C + DependsOn: + - VpcVPCGWBF912B6E + Metadata: + aws:cdk:path: RenderingWithBatchStack/Vpc/RenderingWithBatchSubnet2/DefaultRoute + VpcIGWD7BA715C: + Type: AWS::EC2::InternetGateway + Properties: + Tags: + - Key: Name + Value: RenderingWithBatchStack/Vpc + Metadata: + aws:cdk:path: RenderingWithBatchStack/Vpc/IGW + VpcVPCGWBF912B6E: + Type: AWS::EC2::VPCGatewayAttachment + Properties: + VpcId: + Ref: Vpc8378EB38 + InternetGatewayId: + Ref: VpcIGWD7BA715C + Metadata: + aws:cdk:path: RenderingWithBatchStack/Vpc/VPCGW + securityGroup32C48086: + Type: AWS::EC2::SecurityGroup + Properties: + GroupDescription: RenderingWithBatchStack/securityGroup + GroupName: RenderingWithBatch + SecurityGroupEgress: + - CidrIp: 0.0.0.0/0 + Description: Allow all outbound traffic by default + IpProtocol: "-1" + VpcId: + Ref: Vpc8378EB38 + Metadata: + aws:cdk:path: RenderingWithBatchStack/securityGroup/Resource + launchTemplateDEE5742D: + Type: AWS::EC2::LaunchTemplate + Properties: + LaunchTemplateData: + SecurityGroupIds: + - Fn::GetAtt: + - securityGroup32C48086 + - GroupId + TagSpecifications: + - ResourceType: instance + Tags: + - Key: Name + Value: RenderingWithBatchStack/launchTemplate + - ResourceType: volume + Tags: + - Key: Name + Value: RenderingWithBatchStack/launchTemplate + UserData: + Fn::Base64: |- + MIME-Version: 1.0 + Content-Type: multipart/mixed; boundary="==MYBOUNDARY==" + + --==MYBOUNDARY== + Content-Type: text/x-shellscript; charset="us-ascii" + + #!/bin/bash + echo "ECS_CLUSTER=EcsSpotWorkshop" >> /etc/ecs/ecs.config + echo "ECS_ENABLE_SPOT_INSTANCE_DRAINING=true" >> /etc/ecs/ecs.config + echo "ECS_CONTAINER_STOP_TIMEOUT=90s" >> /etc/ecs/ecs.config + echo "ECS_ENABLE_CONTAINER_METADATA=true" >> /etc/ecs/ecs.config + + --==MYBOUNDARY==-- + LaunchTemplateName: RenderingWithBatch + Metadata: + aws:cdk:path: RenderingWithBatchStack/launchTemplate/Resource + bucket43879C71: + Type: AWS::S3::Bucket + UpdateReplacePolicy: Delete + DeletionPolicy: Delete + Metadata: + aws:cdk:path: RenderingWithBatchStack/bucket/Resource + repository9F1A3F0B: + Type: AWS::ECR::Repository + Properties: + RepositoryName: rendering-with-batch + UpdateReplacePolicy: Delete + DeletionPolicy: Delete + Metadata: + aws:cdk:path: RenderingWithBatchStack/repository/Resource + cloud9envec2env8356485F: + Type: AWS::Cloud9::EnvironmentEC2 + Properties: + InstanceType: t2.micro + Name: RenderingWithBatch + SubnetId: + Ref: VpcRenderingWithBatchSubnet1SubnetADE6DAA0 + Tags: + - Key: SSMBootstrap + Value: RenderingWithBatch + Metadata: + aws:cdk:path: RenderingWithBatchStack/cloud9env/ec2env/Resource + cloud9envSSMDocument9E89DF0C: + Type: AWS::SSM::Document + Properties: + Content: + schemaVersion: '2.2' + description: Bootstrap Cloud9 Instance + mainSteps: + - action: aws:runShellScript + name: C9bootstrap + inputs: + runCommand: + - "#!/bin/bash" + - echo '=== Installing packages ===' + - sudo yum -y install jq + - sudo pip install boto3 + - echo '=== Resizing file system ===' + - sudo growpart /dev/xvda 1 + - sudo resize2fs /dev/xvda1 + DocumentType: Command + Name: BootstrapDocument + Metadata: + aws:cdk:path: RenderingWithBatchStack/cloud9env/SSMDocument + cloud9envSSMAssociation4FBBFEE5: + Type: AWS::SSM::Association + Properties: + Name: BootstrapDocument + Targets: + - Key: tag:SSMBootstrap + Values: + - RenderingWithBatch + DependsOn: + - cloud9envbootstrapLambdaCustomResourceD5142DA7 + - cloud9envSSMDocument9E89DF0C + Metadata: + aws:cdk:path: RenderingWithBatchStack/cloud9env/SSMAssociation + cloud9envFISRoleAD8CCA4E: + Type: AWS::IAM::Role + Properties: + AssumeRolePolicyDocument: + Statement: + - Action: sts:AssumeRole + Effect: Allow + Principal: + Service: + Fn::Join: + - "" + - - ec2. + - Ref: AWS::URLSuffix + Version: "2012-10-17" + ManagedPolicyArns: + - arn:aws:iam::aws:policy/AmazonSSMManagedInstanceCore + RoleName: SSMInstanceProfile + Metadata: + aws:cdk:path: RenderingWithBatchStack/cloud9env/FISRole/Resource + cloud9envfisinstanceprofile96D194A9: + Type: AWS::IAM::InstanceProfile + Properties: + Roles: + - Ref: cloud9envFISRoleAD8CCA4E + Metadata: + aws:cdk:path: RenderingWithBatchStack/cloud9env/fisinstanceprofile + cloud9envbootstrapLambdaServiceRole520F9D06: + Type: AWS::IAM::Role + Properties: + AssumeRolePolicyDocument: + Statement: + - Action: sts:AssumeRole + Effect: Allow + Principal: + Service: lambda.amazonaws.com + Version: "2012-10-17" + ManagedPolicyArns: + - Fn::Join: + - "" + - - "arn:" + - Ref: AWS::Partition + - :iam::aws:policy/service-role/AWSLambdaBasicExecutionRole + Metadata: + aws:cdk:path: RenderingWithBatchStack/cloud9env/bootstrapLambda/ServiceRole/Resource + cloud9envbootstrapLambdaServiceRoleDefaultPolicy474DC27A: + Type: AWS::IAM::Policy + Properties: + PolicyDocument: + Statement: + - Action: + - ec2:DescribeInstances + - ec2:ModifyVolume + - ec2:AssociateIamInstanceProfile + - ec2:ReplaceIamInstanceProfileAssociation + - ec2:RebootInstances + - iam:ListInstanceProfiles + - iam:PassRole + - ssm:SendCommand + Effect: Allow + Resource: "*" + Version: "2012-10-17" + PolicyName: cloud9envbootstrapLambdaServiceRoleDefaultPolicy474DC27A + Roles: + - Ref: cloud9envbootstrapLambdaServiceRole520F9D06 + Metadata: + aws:cdk:path: RenderingWithBatchStack/cloud9env/bootstrapLambda/ServiceRole/DefaultPolicy/Resource + cloud9envbootstrapLambda02FC7F40: + Type: AWS::Lambda::Function + Properties: + Code: + ZipFile: | + import time + import boto3 + import cfnresponse + + + def retrieve_cloud9_instance(env_id): + print("Retrieving environment's instance...") + + client = boto3.client('ec2') + + return client.describe_instances( + Filters=[ + { + 'Name': 'tag:aws:cloud9:environment', + 'Values': [ + env_id, + ] + }, + ] + )['Reservations'][0]['Instances'][0] + + + def resize_volume(volume_id, new_size): + print('Resizing EBS volume...') + + client = boto3.client('ec2') + + client.modify_volume( + VolumeId=volume_id, + Size=new_size + ) + + print('EBS volume resized') + + + def associate_ssm_instance_profile(c9_env_id, profile_arn): + instance_data = retrieve_cloud9_instance(c9_env_id) + client = boto3.client('ec2') + + while instance_data['State']['Name'] != 'running': + print('Waiting for the instance to be running to attach the instance profile...') + time.sleep(5) + instance_data = retrieve_cloud9_instance(c9_env_id) + + print('Attaching instance profile...') + + client.associate_iam_instance_profile( + IamInstanceProfile={'Arn': profile_arn}, + InstanceId=instance_data['InstanceId'] + ) + + print('Instance profile associated. Restarting SSM agent...') + + client.reboot_instances( + InstanceIds=[ + instance_data['InstanceId'] + ] + ) + + print('Instance rebooted') + + + def handler(event, context): + if event['RequestType'] == 'Create': + # Extract context variables + c9_env_id = event['ResourceProperties']['cloud9EnvId'] + ebs_size = int(event['ResourceProperties']['ebsSize']) + profile_arn = event['ResourceProperties']['profile_arn'] + + try: + # Retrieve EC2 instance's identifier and its EBS volume's identifier + instance_data = retrieve_cloud9_instance(c9_env_id) + volume_id = instance_data['BlockDeviceMappings'][0]['Ebs']['VolumeId'] + + # Resize the EBS volume + resize_volume(volume_id, ebs_size) + + # Associate the SSM instance profile + associate_ssm_instance_profile(c9_env_id, profile_arn) + except Exception as e: + cfnresponse.send(event, context, cfnresponse.FAILED, {'Error': e.args[0]}) + return + + cfnresponse.send(event, context, cfnresponse.SUCCESS, {}) + Role: + Fn::GetAtt: + - cloud9envbootstrapLambdaServiceRole520F9D06 + - Arn + Handler: index.handler + Runtime: python3.7 + Timeout: 300 + DependsOn: + - cloud9envbootstrapLambdaServiceRoleDefaultPolicy474DC27A + - cloud9envbootstrapLambdaServiceRole520F9D06 + Metadata: + aws:cdk:path: RenderingWithBatchStack/cloud9env/bootstrapLambda/Resource + cloud9envbootstrapLambdaCustomResourceD5142DA7: + Type: AWS::CloudFormation::CustomResource + Properties: + ServiceToken: + Fn::GetAtt: + - cloud9envbootstrapLambda02FC7F40 + - Arn + cloud9EnvId: + Ref: cloud9envec2env8356485F + ebsSize: 40 + profile_arn: + Fn::GetAtt: + - cloud9envfisinstanceprofile96D194A9 + - Arn + UpdateReplacePolicy: Delete + DeletionPolicy: Delete + Metadata: + aws:cdk:path: RenderingWithBatchStack/cloud9env/bootstrapLambdaCustomResource/Default + ecsRole157644C0: + Type: AWS::IAM::Role + Properties: + AssumeRolePolicyDocument: + Statement: + - Action: sts:AssumeRole + Effect: Allow + Principal: + Service: + Fn::Join: + - "" + - - ec2. + - Ref: AWS::URLSuffix + Version: "2012-10-17" + ManagedPolicyArns: + - arn:aws:iam::aws:policy/AmazonS3FullAccess + - arn:aws:iam::aws:policy/service-role/AmazonEC2ContainerServiceforEC2Role + Metadata: + aws:cdk:path: RenderingWithBatchStack/ecsRole/Resource + ecsinstanceprofile: + Type: AWS::IAM::InstanceProfile + Properties: + Roles: + - Ref: ecsRole157644C0 + Metadata: + aws:cdk:path: RenderingWithBatchStack/ecsinstanceprofile + CDKMetadata: + Type: AWS::CDK::Metadata + Properties: + Analytics: v2:deflate64:H4sIAAAAAAAA/1VRwW7CMAz9lt1DGOXEbaxjCGnSqoK4B9eIjDauEmeoivLvSykdcPLzy9Oz/TKTs2whX1/e1MVNoDpPA5BFGbas4CxKdOQtoMiP5ttz61nkZBxbDwl5x9Q8Sh5x0lWaNZkoeuuAkMmwb6F/2xe5KPyh1rD1B4Pcc3dUkmfcqUONd/7OLZ0j0Kp3/hf3YGMYbVKuFeNFdbcxt27J6ZxTg4bFFsFbzd3akm+vA56IL+UNnHbYtLUajJ+ZKNxchncP52HZAUWBYGUosSWnmWw3pDF2UUBNvlrIsIJsZX61JXNdJqke2lWeJXvXyJD4DwI/ah5ujkKrJChpSGesm/QpygAWlo46UQWlcK9bDCiKWjWHSsnwma4ZwxtxjFEUHZ/ITOdyIWcvP07rifWGdYOyHOofxvWhZCoCAAA= + Metadata: + aws:cdk:path: RenderingWithBatchStack/CDKMetadata/Default + Condition: CDKMetadataAvailable +Outputs: + Subnet1: + Value: + Ref: VpcRenderingWithBatchSubnet1SubnetADE6DAA0 + Subnet2: + Value: + Ref: VpcRenderingWithBatchSubnet2SubnetDC61207B + LaunchTemplateName: + Value: RenderingWithBatch + BucketName: + Value: + Ref: bucket43879C71 + BlendFileName: + Value: blendfile.blend + RepositoryName: + Value: + Ref: repository9F1A3F0B + ECSInstanceProfile: + Value: + Fn::GetAtt: + - ecsinstanceprofile + - Arn +Conditions: + CDKMetadataAvailable: + Fn::Or: + - Fn::Or: + - Fn::Equals: + - Ref: AWS::Region + - af-south-1 + - Fn::Equals: + - Ref: AWS::Region + - ap-east-1 + - Fn::Equals: + - Ref: AWS::Region + - ap-northeast-1 + - Fn::Equals: + - Ref: AWS::Region + - ap-northeast-2 + - Fn::Equals: + - Ref: AWS::Region + - ap-south-1 + - Fn::Equals: + - Ref: AWS::Region + - ap-southeast-1 + - Fn::Equals: + - Ref: AWS::Region + - ap-southeast-2 + - Fn::Equals: + - Ref: AWS::Region + - ca-central-1 + - Fn::Equals: + - Ref: AWS::Region + - cn-north-1 + - Fn::Equals: + - Ref: AWS::Region + - cn-northwest-1 + - Fn::Or: + - Fn::Equals: + - Ref: AWS::Region + - eu-central-1 + - Fn::Equals: + - Ref: AWS::Region + - eu-north-1 + - Fn::Equals: + - Ref: AWS::Region + - eu-south-1 + - Fn::Equals: + - Ref: AWS::Region + - eu-west-1 + - Fn::Equals: + - Ref: AWS::Region + - eu-west-2 + - Fn::Equals: + - Ref: AWS::Region + - eu-west-3 + - Fn::Equals: + - Ref: AWS::Region + - me-south-1 + - Fn::Equals: + - Ref: AWS::Region + - sa-east-1 + - Fn::Equals: + - Ref: AWS::Region + - us-east-1 + - Fn::Equals: + - Ref: AWS::Region + - us-east-2 + - Fn::Or: + - Fn::Equals: + - Ref: AWS::Region + - us-west-1 + - Fn::Equals: + - Ref: AWS::Region + - us-west-2 diff --git a/content/rendering-with-batch/rendering-with-batch.files/verifying_resilience.py b/content/rendering-with-batch/rendering-with-batch.files/verifying_resilience.py new file mode 100644 index 00000000..2fd6c708 --- /dev/null +++ b/content/rendering-with-batch/rendering-with-batch.files/verifying_resilience.py @@ -0,0 +1,58 @@ +import boto3 +import sys + + +def get_jobs_in_array(array_id): + """Returns the identifiers of the jobs inside an array job + + Keyword arguments: + array_id -- identifier of the array job + """ + + client = boto3.client('batch') + kwargs = {'arrayJobId': array_id, 'jobStatus': 'SUCCEEDED'} + job_ids = [] + + while True: + response = client.list_jobs(**kwargs) + job_ids += [job['jobId'] for job in response['jobSummaryList']] + + if 'nextToken' in response: + kwargs['nextToken'] = response['nextToken'] + else: + return job_ids + +def show_execution_attempts(job_ids): + """Shows the number of atemmps of the specified jobs, + if the attempt number is bigger than 1. + + Keyword arguments: + job_ids -- Identifiers of the target jobs + """ + + client = boto3.client('batch') + page = 0 + items_per_page = 100 + + while page * items_per_page < len(job_ids): + start_index = page * items_per_page + end_index = start_index + items_per_page + page += 1 + + response = client.describe_jobs( + jobs=job_ids[start_index:end_index] + ) + + for job in response['jobs']: + if len(job['attempts']) > 1: + print('Frame\t{}\twas attempted to render {} times'.format(job['arrayProperties']['index'], len(job['attempts']))) + + +if __name__ == "__main__": + array_id = sys.argv[1] + + # Get the identifiers of the jobs in the array job + job_ids = get_jobs_in_array(array_id) + + # Show the number of attempts per job + show_execution_attempts(job_ids) diff --git a/content/rendering-with-batch/rendering_pipeline.md b/content/rendering-with-batch/rendering_pipeline.md new file mode 100644 index 00000000..30d02c04 --- /dev/null +++ b/content/rendering-with-batch/rendering_pipeline.md @@ -0,0 +1,63 @@ +--- +title: "Rendering pipeline" +date: 2021-09-06T08:51:33Z +weight: 30 +--- + +![Rendering pipeline](/images/rendering-with-batch/pipeline.png) + +## Overview + +The rendering pipeline that we will implement has two differentiated jobs: rendering job and stitching job. Rendering is the process of generating an image from a 2D or 3D model, whereas stitching is the process of combining multiple images to produce a video. Each of them will be carried out using different software; to render we will use Blender and to stitch we will use FFmpeg. + +## Blender: rendering job + +Blender is the free and open source 3D creation suite. It supports the entirety of the 3D pipeline—modeling, rigging, animation, simulation, rendering, compositing and motion tracking, video editing and 2D animation pipeline. To learn more about its features, you can visit [this web page](https://www.blender.org/features/). + +In this workshop we will use its [rendering capabilities](https://www.blender.org/features/rendering/) to render an already created file. + +### Command line rendering + +You can launch Blender's rendering capabilities from the command line. This allows to access Blender remotely and reduce compute resource consumption since it does not need to load a graphical interface. The Docker image that you will create will do exactly this; run a bash script that will execute Blender and pass to it some arguments needed to render a specific slice of frames. The command that will be executed is the following: + +```bash +blender -b -E CYCLES -o -s -e -a +``` + +The arguments mean the following: + +- **-b**: tells Blender to render in the background, without graphical interface. +- **-E**: specifies what engine to use when rendering. You can learn more about Blender's CYCLES engine [here](https://www.blender.org/features/rendering/#cycles). +- **-o**: specifies the output path. +- **-s**: specifies the starting frame (integer value). +- **-e**: specifies the ending frame (integer value). +- **-a**: tells Blender to render from to , both inclusive. + +If you want to learn more about Blender's command line rendering, visit [this web page](https://docs.blender.org/manual/en/latest/advanced/command_line/render.html). Additionally, you can check all the arguments it accepts [here](https://docs.blender.org/manual/en/latest/advanced/command_line/arguments.html). + +### Gathering a Blender file + +We will use a Blender file from [BlendSwap](https://blendswap.com/categories). **BlenderSwap** is a site where Blender-powered 3D artists can share, exchange, collaborate, and learn from other artists. We will work with [the same file](https://blendswap.com/blend/28661) that was used to create the animation in the landing page. That file was created by [Prokster](https://blendswap.com/profile/1012752) and is licensed under [Creative Commons 0](https://creativecommons.org/share-your-work/public-domain/cc0/). If you want to use a different one, feel free to do so! Just take into account the following: + +- The file must be configured to render the frames as .png files. +- The file must be named **blendfile.blend**. +- The more frames it has, the more compute resources you will need to render it thus impacting the costs of running the workshop. + +Run the following command to download the file and upload it to S3: + +``` +wget "https://raw.githubusercontent.com/awslabs/ec2-spot-workshops/master/content/rendering-with-batch/rendering-with-batch.files/blendfile.blend" +aws s3api put-object --bucket "${BucketName}" --key "${BlendFileName}" --body "${BlendFileName}" +``` + +## FFmpeg: stitching job + +FFmpeg is a free and open-source multimedia framework able to decode, encode, transcode, mux, demux, stream, filter and play loads of file formats. One of the framework components is the command line tool ffmpeg, the one you will use to implement the stitching job. You can learn more about the project in [this web page](https://www.ffmpeg.org/about.html). + +### SlideShow + +To concatenate multiple images and make a video out of them, you will use what in FFmpeg's wiki is referred to as [*SlideShow*](https://trac.ffmpeg.org/wiki/Slideshow). When you launch the stitching job, the Docker image that you create will execute ffmpeg from the command line and pass it some arguments needed to create the video. The command that will be executed is the following: + +```bash +ffmpeg -i +``` diff --git a/content/rendering-with-batch/resilience-testing.md b/content/rendering-with-batch/resilience-testing.md new file mode 100644 index 00000000..6f9b6353 --- /dev/null +++ b/content/rendering-with-batch/resilience-testing.md @@ -0,0 +1,119 @@ +--- +title: "Resilience testing" +date: 2021-09-06T08:51:33Z +weight: 130 +hidden: True +--- + +If you remember the configuration of the job definition, we specified 3 attempts inside the structure `retryStrategy`. This means that, in case of job failure, AWS Batch will retry running it twice more. In this section we are going to put that to test to see how our architecture would react if any of the Spot instances was terminated. + +## AWS Fault Injection Simulator + +[AWS Fault Injection Simulator](https://aws.amazon.com/fis/) is a fully managed service for running fault injection experiments on AWS that makes it easier to improve an application’s performance, observability, and resiliency. Fault injection experiments are used in chaos engineering, which is the practice of stressing an application in testing or production environments by creating disruptive events, such as sudden increase in CPU or memory consumption, observing how the system responds, and implementing improvements. + +We are going to use AWS FIS to run a fault injection experiment in the ECS cluster associated to the Spot compute environment. + +## Running the experiment + +AWS FIS supports running fault injection actions in several targets. For a list of all the available targets, see [Targets for AWS FIS](https://docs.aws.amazon.com/fis/latest/userguide/targets.html). In our case, the target is going to be an ECS cluster. + +### Retrieving the cluster ARN + +Execute the following command to retrieve the ARN of the ECS cluster associated with the Spot compute environment: + +```bash +export ECS_CLUSTER_ARN=$(aws batch describe-compute-environments --compute-environments "${SPOT_COMPUTE_ENV_NAME}" | jq -r '.computeEnvironments[0].ecsClusterArn') +``` + +### Creating the experiment + +Run the following to generate the configuration file that will be used to create the AWS FIS experiment: + +```bash +cat < fis-experiment-config.json +{ + "description": "experimentTemplate", + "stopConditions": [ + { + "source": "none" + } + ], + "targets": { + "ECS-cluster": { + "resourceType": "aws:ecs:cluster", + "resourceArns": [ + "${ECS_CLUSTER_ARN}" + ], + "selectionMode": "ALL" + } + }, + "actions": { + "drain": { + "actionId": "aws:ecs:drain-container-instances", + "description": "Drain cluster", + "parameters": { + "drainagePercentage": "60", + "duration": "PT5M" + }, + "targets": { + "Clusters": "ECS-cluster" + } + } + }, + "roleArn": "${FISRole}" +} +EoF +``` + +Let's explore the configuration parameters: + +- **stopConditions**: specifies the stop conditions for the experiment. If there is one, `source` must point to a CloudWatch alarm. +- **targets**: the targets for the experiment: + - **resourceType**: the AWS resource type. For a list of available resources, see [Resource types](https://docs.aws.amazon.com/fis/latest/userguide/targets.html#resource-types). + - **selectionMode**: scopes the identified resources to a specific count. Valid values are `ALL` | `COUNT(n)` | `PERCENT(n)`. +- **actions**: the list of actions to perform: + - **actionId**: the identifier of the action. For a list of available actions, see [AWS FIS actions reference](https://docs.aws.amazon.com/fis/latest/userguide/fis-actions-reference.html). Each action takes different parameters. + - **drainagePercentage**: percentage of underlying Amazon EC2 instances to drain. + - **duration**: the duration of the action. With the AWS FIS API, the value is a string in [ISO 8601 format](https://www.digi.com/resources/documentation/digidocs/90001437-13/reference/r_iso_8601_duration_format.htm). +- **roleArn**: the Amazon Resource Name (ARN) of an IAM role that grants the AWS FIS service permission to perform service actions on your behalf. The needed permissions are outlined in the AWS FIS actions reference page. + +Execute this command to create FIS experiment template and export its ARN to an environment variable. To learn more about this API, see [create-experiment-template CLI command reference](https://docs.aws.amazon.com/cli/latest/reference/fis/create-experiment-template.html). + +```bash +export EXPERIMENT_TEMPLATE_ID=$(aws fis create-experiment-template --cli-input-json file://fis-experiment-config.json | jq -r '.experimentTemplate.id') +``` + +### Starting the experiment + +The experiment will fail if we run it and the cluster does not have ECS container instances. To verify the number of registered container instances we can execute the following command: + +``` +aws ecs describe-clusters --clusters "${ECS_CLUSTER_ARN}" +``` + +To learn more about this API, see [describe-clusters CLI Command Reference](https://docs.aws.amazon.com/cli/latest/reference/ecs/describe-clusters.html). If the value of `registeredContainerInstancesCount` is 0, repeat the API call until it reaches 10 (approximately). Once that happens, you can start the experiment with the following command: + +```bash +export EXPERIMENT_ID=$(aws fis start-experiment --experiment-template-id "${EXPERIMENT_TEMPLATE_ID}" | jq -r '.experiment.id') +``` + +To learn more about this API, see [start-experiment CLI Command Reference](https://docs.aws.amazon.com/cli/latest/reference/fis/start-experiment.html). + +## Checking the results + +### Reviewing the experiment + +Execute the following command to get information about the experiment: + +```bash +aws fis get-experiment --id "${EXPERIMENT_ID}" +``` +To learn more about this API, see [get-experiment CLI Command Reference](https://docs.aws.amazon.com/cli/latest/reference/fis/get-experiment.html). + +### Reviewing job attempts + +To check which frames have been attempted to render more than once, execute the following command: + +```bash +python3 verifying_resilience.py "${RENDERING_JOB_ID}" +``` diff --git a/content/rendering-with-batch/start/_index.md b/content/rendering-with-batch/start/_index.md new file mode 100644 index 00000000..76b74a06 --- /dev/null +++ b/content/rendering-with-batch/start/_index.md @@ -0,0 +1,15 @@ +--- +title: "Starting the workshop" +date: 2021-09-06T08:51:33Z +weight: 20 +--- + +To start the workshop head to one of the following pages, depending whether you are: + +{{% children %}} + +When you finish the workshop, don't forget to execute the commands described in [**Clean up**](/rendering-with-batch/cleanup.html) to prevent incurring in additional charges. + +{{% notice info %}} +The estimated completion time of this lab is **60 minutes**. Rendering the animation that in this workshop you will incur in an estimated cost of up to **$15**. +{{% /notice %}} diff --git a/content/rendering-with-batch/start/at-an-event.md b/content/rendering-with-batch/start/at-an-event.md new file mode 100644 index 00000000..08261cae --- /dev/null +++ b/content/rendering-with-batch/start/at-an-event.md @@ -0,0 +1,25 @@ +--- +title: "... At an AWS event" +date: 2021-09-06T08:51:33Z +weight: 25 +--- + +If you are at an AWS event, an AWS account was created for you to use throughout the workshop. You will need the **Participant Hash** provided to you by the event's organizers. + +1. Connect to the portal by browsing to [https://dashboard.eventengine.run/](https://dashboard.eventengine.run/). +2. Enter the Hash in the text box, and click **Proceed** +3. In the User Dashboard screen, click **AWS Console** +4. In the popup page, click **Open Console** + +You are now logged in to the AWS console in an account that was created for you, and will be available only throughout the workshop run time. A CloudFormation stack has been automatically deployed for you with the following resources: + +- A VPC +- An S3 bucket +- An ECR repository +- A Launch Template +- An instance profile for AWS Batch compute environment +- The Cloud9 environment where you will run all the commands + + + +{{% insert-md-from-file file="rendering-with-batch/start/review-outputs.md" %}} diff --git a/content/rendering-with-batch/start/on-your-own.md b/content/rendering-with-batch/start/on-your-own.md new file mode 100644 index 00000000..79bf0b3f --- /dev/null +++ b/content/rendering-with-batch/start/on-your-own.md @@ -0,0 +1,27 @@ +--- +title: "... On your own" +date: 2021-09-06T08:51:33Z +weight: 27 +--- + +## Deploying the CloudFormation stack + +As a first step, **download** a [CloudFormation stack](https://raw.githubusercontent.com/awslabs/ec2-spot-workshops/master/content/rendering-with-batch/rendering-with-batch.files/stack.yaml) that will deploy for you the following resources: + +- A VPC +- An S3 bucket +- An ECR repository +- A Launch Template +- An instance profile for AWS Batch compute environment +- The Cloud9 environment where you will run all the commands + +After downloading the template, open the [CloudFormation console](https://console.aws.amazon.com/cloudformation) and on the top-right corner of the screen, click on **Create stack**. Follow the following steps: + +1. In the **Create stack** page, click on **Choose file** and upload the CloudFormation template you just downloaded. Don't change any other configuration parameter. +2. In the **Specify stack details** page, set the stack name as **RenderingWithBatch**. +3. In the **Configure stack options** page, leave all the configuration as it is. Navigate to the bottom of the page and click on **Next**. +4. In the **Review** page, leave all the configuration as it is. Navigate to the bottom of the page, and click on **I acknowledge that AWS CloudFormation might create IAM resources** and finally on **Create stack**. + +The stack creation process will begin. All the resources will be ready to use when the status of the stack is `CREATE_COMPLETE`. + +{{% insert-md-from-file file="rendering-with-batch/start/review-outputs.md" %}} \ No newline at end of file diff --git a/content/rendering-with-batch/start/review-outputs.md b/content/rendering-with-batch/start/review-outputs.md new file mode 100644 index 00000000..4f99a714 --- /dev/null +++ b/content/rendering-with-batch/start/review-outputs.md @@ -0,0 +1,43 @@ +## Reviewing the Launch Template + +You can check the CloudFormation stack by downloading the following file: [CloudFormation stack](https://raw.githubusercontent.com/awslabs/ec2-spot-workshops/master/content/rendering-with-batch/rendering-with-batch.files/stack.yaml) + +Note the `UserData` of the created Launch Template contains the following script: + +```bash +MIME-Version: 1.0 +Content-Type: multipart/mixed; boundary="==MYBOUNDARY==" + +--==MYBOUNDARY== +Content-Type: text/x-shellscript; charset="us-ascii" + +#!/bin/bash +echo "ECS_CLUSTER=EcsSpotWorkshop" >> /etc/ecs/ecs.config +echo "ECS_ENABLE_SPOT_INSTANCE_DRAINING=true" >> /etc/ecs/ecs.config +echo "ECS_CONTAINER_STOP_TIMEOUT=90s" >> /etc/ecs/ecs.config +echo "ECS_ENABLE_CONTAINER_METADATA=true" >> /etc/ecs/ecs.config + +--==MYBOUNDARY==-- +``` + +What we are doing here is enabling [Spot Instance Draining](https://docs.aws.amazon.com/AmazonECS/latest/developerguide/container-instance-spot.html). When ECS Spot Instance draining is enabled on the instance, ECS receives the Spot Instance interruption notice and places the instance in DRAINING status. When a container instance is set to DRAINING, Amazon ECS prevents new tasks from being scheduled for placement on the container instance. To learn more about Spot instance interruption notices, visit [Spot Instance interruption notices](https://docs.aws.amazon.com/AWSEC2/latest/UserGuide/spot-interruptions.html#spot-instance-termination-notices). + + +## Gathering the CloudFormation outputs + +You will create other AWS resources using the AWS CLI in [Cloud9](https://aws.amazon.com/cloud9/), a cloud-based integrated development environment (IDE) that lets you write, run, and debug your code with just a browser. It includes a code editor, debugger, and terminal. Cloud9 comes prepackaged with essential tools for popular programming languages, including JavaScript, Python, PHP, and more. + +Navigate to the [Cloud9 console](https://console.aws.amazon.com/cloud9) and open the environment that was created for you. Execute the following commands to retrieve the outputs of the CloudFormation stack: + +``` +export AWS_DEFAULT_REGION=$(curl -s 169.254.169.254/latest/dynamic/instance-identity/document | jq -r '.region') +export STACK_NAME="RenderingWithBatch" + +for output in $(aws cloudformation describe-stacks --stack-name ${STACK_NAME} --query 'Stacks[].Outputs[].OutputKey' --output text) +do + export $output=$(aws cloudformation describe-stacks --stack-name ${STACK_NAME} --query 'Stacks[].Outputs[?OutputKey==`'$output'`].OutputValue' --output text) + eval "echo $output : \"\$$output\"" +done +``` + +You can now start the workshop by heading to [**Rendering pipeline**](/rendering-with-batch/rendering_pipeline.html). diff --git a/layouts/partials/header.html b/layouts/partials/header.html index c5b02709..706ca99f 100644 --- a/layouts/partials/header.html +++ b/layouts/partials/header.html @@ -15,9 +15,9 @@ {{ $assetBusting := not .Site.Params.disableAssetsBusting }} - + - + @@ -25,6 +25,7 @@ + {{with .Site.Params.themeVariant}} diff --git a/layouts/shortcodes/content.html b/layouts/shortcodes/content.html new file mode 100644 index 00000000..8563e38a --- /dev/null +++ b/layouts/shortcodes/content.html @@ -0,0 +1,2 @@ +{{$file := .Get 0}} +{{ $file | readFile | markdownify }} diff --git a/static/css/syntax.css b/static/css/syntax.css new file mode 100644 index 00000000..350286e4 --- /dev/null +++ b/static/css/syntax.css @@ -0,0 +1,59 @@ +/* Background */ .chroma { color: #f8f8f2; background-color: #272822 } +/* Error */ .chroma .err { color: #960050; background-color: #1e0010 } +/* LineTableTD */ .chroma .lntd { vertical-align: top; padding: 0; margin: 0; border: 0; } +/* LineTable */ .chroma .lntable { border-spacing: 0; padding: 0; margin: 0; border: 0; width: auto; overflow: auto; display: block; } +/* LineHighlight */ .chroma .hl { display: block; width: 100%;background-color: #ffffcc } +/* LineNumbersTable */ .chroma .lnt { margin-right: 0.4em; padding: 0 0.4em 0 0.4em;color: #7f7f7f } +/* LineNumbers */ .chroma .ln { margin-right: 0.4em; padding: 0 0.4em 0 0.4em;color: #7f7f7f } +/* Keyword */ .chroma .k { color: #66d9ef } +/* KeywordConstant */ .chroma .kc { color: #66d9ef } +/* KeywordDeclaration */ .chroma .kd { color: #66d9ef } +/* KeywordNamespace */ .chroma .kn { color: #f92672 } +/* KeywordPseudo */ .chroma .kp { color: #66d9ef } +/* KeywordReserved */ .chroma .kr { color: #66d9ef } +/* KeywordType */ .chroma .kt { color: #66d9ef } +/* NameAttribute */ .chroma .na { color: #a6e22e } +/* NameClass */ .chroma .nc { color: #a6e22e } +/* NameConstant */ .chroma .no { color: #66d9ef } +/* NameDecorator */ .chroma .nd { color: #a6e22e } +/* NameException */ .chroma .ne { color: #a6e22e } +/* NameFunction */ .chroma .nf { color: #a6e22e } +/* NameOther */ .chroma .nx { color: #a6e22e } +/* NameTag */ .chroma .nt { color: #f92672 } +/* Literal */ .chroma .l { color: #ae81ff } +/* LiteralDate */ .chroma .ld { color: #e6db74 } +/* LiteralString */ .chroma .s { color: #e6db74 } +/* LiteralStringAffix */ .chroma .sa { color: #e6db74 } +/* LiteralStringBacktick */ .chroma .sb { color: #e6db74 } +/* LiteralStringChar */ .chroma .sc { color: #e6db74 } +/* LiteralStringDelimiter */ .chroma .dl { color: #e6db74 } +/* LiteralStringDoc */ .chroma .sd { color: #e6db74 } +/* LiteralStringDouble */ .chroma .s2 { color: #e6db74 } +/* LiteralStringEscape */ .chroma .se { color: #ae81ff } +/* LiteralStringHeredoc */ .chroma .sh { color: #e6db74 } +/* LiteralStringInterpol */ .chroma .si { color: #e6db74 } +/* LiteralStringOther */ .chroma .sx { color: #e6db74 } +/* LiteralStringRegex */ .chroma .sr { color: #e6db74 } +/* LiteralStringSingle */ .chroma .s1 { color: #e6db74 } +/* LiteralStringSymbol */ .chroma .ss { color: #e6db74 } +/* LiteralNumber */ .chroma .m { color: #ae81ff } +/* LiteralNumberBin */ .chroma .mb { color: #ae81ff } +/* LiteralNumberFloat */ .chroma .mf { color: #ae81ff } +/* LiteralNumberHex */ .chroma .mh { color: #ae81ff } +/* LiteralNumberInteger */ .chroma .mi { color: #ae81ff } +/* LiteralNumberIntegerLong */ .chroma .il { color: #ae81ff } +/* LiteralNumberOct */ .chroma .mo { color: #ae81ff } +/* Operator */ .chroma .o { color: #f92672 } +/* OperatorWord */ .chroma .ow { color: #f92672 } +/* Comment */ .chroma .c { color: #75715e } +/* CommentHashbang */ .chroma .ch { color: #75715e } +/* CommentMultiline */ .chroma .cm { color: #75715e } +/* CommentSingle */ .chroma .c1 { color: #75715e } +/* CommentSpecial */ .chroma .cs { color: #75715e } +/* CommentPreproc */ .chroma .cp { color: #75715e } +/* CommentPreprocFile */ .chroma .cpf { color: #75715e } +/* GenericDeleted */ .chroma .gd { color: #f92672 } +/* GenericEmph */ .chroma .ge { font-style: italic } +/* GenericInserted */ .chroma .gi { color: #a6e22e } +/* GenericStrong */ .chroma .gs { font-weight: bold } +/* GenericSubheading */ .chroma .gu { color: #75715e } diff --git a/static/images/monte-carlo-on-ec2-spot-fleet/aws_batch_job_success.png b/static/images/monte-carlo-on-ec2-spot-fleet/aws_batch_job_success.png deleted file mode 100644 index 0eef3eda..00000000 Binary files a/static/images/monte-carlo-on-ec2-spot-fleet/aws_batch_job_success.png and /dev/null differ diff --git a/static/images/monte-carlo-on-ec2-spot-fleet/aws_batch_logs.png b/static/images/monte-carlo-on-ec2-spot-fleet/aws_batch_logs.png deleted file mode 100644 index 90fa88e2..00000000 Binary files a/static/images/monte-carlo-on-ec2-spot-fleet/aws_batch_logs.png and /dev/null differ diff --git a/static/images/monte-carlo-on-ec2-spot-fleet/batch-job-status.png b/static/images/monte-carlo-on-ec2-spot-fleet/batch-job-status.png deleted file mode 100644 index 7872eb5d..00000000 Binary files a/static/images/monte-carlo-on-ec2-spot-fleet/batch-job-status.png and /dev/null differ diff --git a/static/images/monte-carlo-on-ec2-spot-fleet/cert_warning.png b/static/images/monte-carlo-on-ec2-spot-fleet/cert_warning.png deleted file mode 100644 index b256670e..00000000 Binary files a/static/images/monte-carlo-on-ec2-spot-fleet/cert_warning.png and /dev/null differ diff --git a/static/images/monte-carlo-on-ec2-spot-fleet/cf-complete.png b/static/images/monte-carlo-on-ec2-spot-fleet/cf-complete.png deleted file mode 100644 index 43168096..00000000 Binary files a/static/images/monte-carlo-on-ec2-spot-fleet/cf-complete.png and /dev/null differ diff --git a/static/images/monte-carlo-on-ec2-spot-fleet/cf-create-stack.png b/static/images/monte-carlo-on-ec2-spot-fleet/cf-create-stack.png deleted file mode 100644 index ae07ca04..00000000 Binary files a/static/images/monte-carlo-on-ec2-spot-fleet/cf-create-stack.png and /dev/null differ diff --git a/static/images/monte-carlo-on-ec2-spot-fleet/cf-initial.png b/static/images/monte-carlo-on-ec2-spot-fleet/cf-initial.png deleted file mode 100644 index 41ced889..00000000 Binary files a/static/images/monte-carlo-on-ec2-spot-fleet/cf-initial.png and /dev/null differ diff --git a/static/images/monte-carlo-on-ec2-spot-fleet/cf-params.png b/static/images/monte-carlo-on-ec2-spot-fleet/cf-params.png deleted file mode 100644 index 9b7757f6..00000000 Binary files a/static/images/monte-carlo-on-ec2-spot-fleet/cf-params.png and /dev/null differ diff --git a/static/images/monte-carlo-on-ec2-spot-fleet/deploy-to-aws.png b/static/images/monte-carlo-on-ec2-spot-fleet/deploy-to-aws.png deleted file mode 100644 index b6dba3fb..00000000 Binary files a/static/images/monte-carlo-on-ec2-spot-fleet/deploy-to-aws.png and /dev/null differ diff --git a/static/images/monte-carlo-on-ec2-spot-fleet/iam_role.png b/static/images/monte-carlo-on-ec2-spot-fleet/iam_role.png deleted file mode 100644 index ed9de31e..00000000 Binary files a/static/images/monte-carlo-on-ec2-spot-fleet/iam_role.png and /dev/null differ diff --git a/static/images/monte-carlo-on-ec2-spot-fleet/iam_role_1.png b/static/images/monte-carlo-on-ec2-spot-fleet/iam_role_1.png deleted file mode 100644 index 3548851d..00000000 Binary files a/static/images/monte-carlo-on-ec2-spot-fleet/iam_role_1.png and /dev/null differ diff --git a/static/images/monte-carlo-on-ec2-spot-fleet/iam_role_2.png b/static/images/monte-carlo-on-ec2-spot-fleet/iam_role_2.png deleted file mode 100644 index eec39720..00000000 Binary files a/static/images/monte-carlo-on-ec2-spot-fleet/iam_role_2.png and /dev/null differ diff --git a/static/images/monte-carlo-on-ec2-spot-fleet/iam_role_3.png b/static/images/monte-carlo-on-ec2-spot-fleet/iam_role_3.png deleted file mode 100644 index 6c61aeca..00000000 Binary files a/static/images/monte-carlo-on-ec2-spot-fleet/iam_role_3.png and /dev/null differ diff --git a/static/images/monte-carlo-on-ec2-spot-fleet/iam_validate.png b/static/images/monte-carlo-on-ec2-spot-fleet/iam_validate.png deleted file mode 100644 index 1caa6043..00000000 Binary files a/static/images/monte-carlo-on-ec2-spot-fleet/iam_validate.png and /dev/null differ diff --git a/static/images/monte-carlo-on-ec2-spot-fleet/jupyter-login.png b/static/images/monte-carlo-on-ec2-spot-fleet/jupyter-login.png deleted file mode 100755 index ccba7b76..00000000 Binary files a/static/images/monte-carlo-on-ec2-spot-fleet/jupyter-login.png and /dev/null differ diff --git a/static/images/monte-carlo-on-ec2-spot-fleet/jupyter.png b/static/images/monte-carlo-on-ec2-spot-fleet/jupyter.png deleted file mode 100644 index 24a081c8..00000000 Binary files a/static/images/monte-carlo-on-ec2-spot-fleet/jupyter.png and /dev/null differ diff --git a/static/images/monte-carlo-on-ec2-spot-fleet/lab1_arch.png b/static/images/monte-carlo-on-ec2-spot-fleet/lab1_arch.png deleted file mode 100644 index 225d6d4e..00000000 Binary files a/static/images/monte-carlo-on-ec2-spot-fleet/lab1_arch.png and /dev/null differ diff --git a/static/images/monte-carlo-on-ec2-spot-fleet/lab3_arch.png b/static/images/monte-carlo-on-ec2-spot-fleet/lab3_arch.png deleted file mode 100644 index 6057fc05..00000000 Binary files a/static/images/monte-carlo-on-ec2-spot-fleet/lab3_arch.png and /dev/null differ diff --git a/static/images/monte-carlo-on-ec2-spot-fleet/lab4_arch.png b/static/images/monte-carlo-on-ec2-spot-fleet/lab4_arch.png deleted file mode 100644 index 35a193b8..00000000 Binary files a/static/images/monte-carlo-on-ec2-spot-fleet/lab4_arch.png and /dev/null differ diff --git a/static/images/monte-carlo-on-ec2-spot-fleet/launch_template.png b/static/images/monte-carlo-on-ec2-spot-fleet/launch_template.png deleted file mode 100644 index 8bb19c35..00000000 Binary files a/static/images/monte-carlo-on-ec2-spot-fleet/launch_template.png and /dev/null differ diff --git a/static/images/monte-carlo-on-ec2-spot-fleet/request_spot_configuration.png b/static/images/monte-carlo-on-ec2-spot-fleet/request_spot_configuration.png deleted file mode 100644 index d65e7186..00000000 Binary files a/static/images/monte-carlo-on-ec2-spot-fleet/request_spot_configuration.png and /dev/null differ diff --git a/static/images/monte-carlo-on-ec2-spot-fleet/spot_auto_scale.png b/static/images/monte-carlo-on-ec2-spot-fleet/spot_auto_scale.png deleted file mode 100755 index 0669f0b7..00000000 Binary files a/static/images/monte-carlo-on-ec2-spot-fleet/spot_auto_scale.png and /dev/null differ diff --git a/static/images/monte-carlo-on-ec2-spot-fleet/spot_auto_scale_final.png b/static/images/monte-carlo-on-ec2-spot-fleet/spot_auto_scale_final.png deleted file mode 100755 index fb7d11d0..00000000 Binary files a/static/images/monte-carlo-on-ec2-spot-fleet/spot_auto_scale_final.png and /dev/null differ diff --git a/static/images/monte-carlo-on-ec2-spot-fleet/spot_config_2.png b/static/images/monte-carlo-on-ec2-spot-fleet/spot_config_2.png deleted file mode 100644 index 9b8bb528..00000000 Binary files a/static/images/monte-carlo-on-ec2-spot-fleet/spot_config_2.png and /dev/null differ diff --git a/static/images/monte-carlo-on-ec2-spot-fleet/spot_cw_alarm.png b/static/images/monte-carlo-on-ec2-spot-fleet/spot_cw_alarm.png deleted file mode 100755 index a1a24db2..00000000 Binary files a/static/images/monte-carlo-on-ec2-spot-fleet/spot_cw_alarm.png and /dev/null differ diff --git a/static/images/monte-carlo-on-ec2-spot-fleet/spot_cw_alarmfinal.png b/static/images/monte-carlo-on-ec2-spot-fleet/spot_cw_alarmfinal.png deleted file mode 100755 index 4f736869..00000000 Binary files a/static/images/monte-carlo-on-ec2-spot-fleet/spot_cw_alarmfinal.png and /dev/null differ diff --git a/static/images/monte-carlo-on-ec2-spot-fleet/spot_fleet_flexible_instances_1.png b/static/images/monte-carlo-on-ec2-spot-fleet/spot_fleet_flexible_instances_1.png deleted file mode 100644 index 206abb89..00000000 Binary files a/static/images/monte-carlo-on-ec2-spot-fleet/spot_fleet_flexible_instances_1.png and /dev/null differ diff --git a/static/images/monte-carlo-on-ec2-spot-fleet/spot_fleet_flexible_instances_2.png b/static/images/monte-carlo-on-ec2-spot-fleet/spot_fleet_flexible_instances_2.png deleted file mode 100644 index d1aac2ec..00000000 Binary files a/static/images/monte-carlo-on-ec2-spot-fleet/spot_fleet_flexible_instances_2.png and /dev/null differ diff --git a/static/images/monte-carlo-on-ec2-spot-fleet/spot_user_data.png b/static/images/monte-carlo-on-ec2-spot-fleet/spot_user_data.png deleted file mode 100755 index 56ba77fc..00000000 Binary files a/static/images/monte-carlo-on-ec2-spot-fleet/spot_user_data.png and /dev/null differ diff --git a/static/images/monte-carlo-on-ec2-spot-fleet/sqs_create.png b/static/images/monte-carlo-on-ec2-spot-fleet/sqs_create.png deleted file mode 100644 index 0a135c50..00000000 Binary files a/static/images/monte-carlo-on-ec2-spot-fleet/sqs_create.png and /dev/null differ diff --git a/static/images/monte-carlo-on-ec2-spot-fleet/sqs_info.png b/static/images/monte-carlo-on-ec2-spot-fleet/sqs_info.png deleted file mode 100644 index cefd5806..00000000 Binary files a/static/images/monte-carlo-on-ec2-spot-fleet/sqs_info.png and /dev/null differ diff --git a/static/images/monte-carlo-on-ec2-spot-fleet/web.png b/static/images/monte-carlo-on-ec2-spot-fleet/web.png deleted file mode 100644 index 6438e020..00000000 Binary files a/static/images/monte-carlo-on-ec2-spot-fleet/web.png and /dev/null differ diff --git a/static/images/monte-carlo-on-ec2-spot-fleet/web_config.png b/static/images/monte-carlo-on-ec2-spot-fleet/web_config.png deleted file mode 100644 index e1ff150d..00000000 Binary files a/static/images/monte-carlo-on-ec2-spot-fleet/web_config.png and /dev/null differ diff --git a/static/images/rendering-with-batch/CE.png b/static/images/rendering-with-batch/CE.png new file mode 100644 index 00000000..3272571c Binary files /dev/null and b/static/images/rendering-with-batch/CE.png differ diff --git a/static/images/rendering-with-batch/animation_example.gif b/static/images/rendering-with-batch/animation_example.gif new file mode 100644 index 00000000..b034c649 Binary files /dev/null and b/static/images/rendering-with-batch/animation_example.gif differ diff --git a/static/images/rendering-with-batch/architecture.png b/static/images/rendering-with-batch/architecture.png new file mode 100644 index 00000000..2e9536e9 Binary files /dev/null and b/static/images/rendering-with-batch/architecture.png differ diff --git a/static/images/rendering-with-batch/batch_architecture.png b/static/images/rendering-with-batch/batch_architecture.png new file mode 100644 index 00000000..d26410d5 Binary files /dev/null and b/static/images/rendering-with-batch/batch_architecture.png differ diff --git a/static/images/rendering-with-batch/delete-environment.png b/static/images/rendering-with-batch/delete-environment.png new file mode 100644 index 00000000..79ba3cb9 Binary files /dev/null and b/static/images/rendering-with-batch/delete-environment.png differ diff --git a/static/images/rendering-with-batch/logs.png b/static/images/rendering-with-batch/logs.png new file mode 100644 index 00000000..df274879 Binary files /dev/null and b/static/images/rendering-with-batch/logs.png differ diff --git a/static/images/rendering-with-batch/pipeline.png b/static/images/rendering-with-batch/pipeline.png new file mode 100644 index 00000000..45a96015 Binary files /dev/null and b/static/images/rendering-with-batch/pipeline.png differ diff --git a/static/images/rendering-with-batch/savings.png b/static/images/rendering-with-batch/savings.png new file mode 100644 index 00000000..478e5786 Binary files /dev/null and b/static/images/rendering-with-batch/savings.png differ diff --git a/workshops/monte-carlo-on-ec2-spot-fleet/Dockerfile b/workshops/monte-carlo-on-ec2-spot-fleet/Dockerfile deleted file mode 100644 index 79af770d..00000000 --- a/workshops/monte-carlo-on-ec2-spot-fleet/Dockerfile +++ /dev/null @@ -1,5 +0,0 @@ -FROM python:3.7.3 -RUN pip3 install --upgrade pandas-datareader scipy boto3 yfinance -COPY /src/queue_processor.py queue_processor.py -COPY /src/worker.py worker.py -CMD ["python3", "queue_processor.py"] diff --git a/workshops/monte-carlo-on-ec2-spot-fleet/src/monte-carlo-workshop.ipynb b/workshops/monte-carlo-on-ec2-spot-fleet/src/monte-carlo-workshop.ipynb deleted file mode 100644 index 943e4e91..00000000 --- a/workshops/monte-carlo-on-ec2-spot-fleet/src/monte-carlo-workshop.ipynb +++ /dev/null @@ -1,2042 +0,0 @@ -{ - "cells": [ - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "# Hedge Your Own Funds: Running Monte Carlo Simulations on EC2 Spot\n", - "Welcome to our workshop we will use this Jupyter notebook to dive deeper into the basic elements of an Algorithmic Trading platform. We will cover the following topics:\n", - "\n", - "1. Setting up our Python Environment\n", - "2. Importing and Manipulating Stock Data\n", - "3. Basic Financial Analysis\n", - "4. Backtest a Trading Strategy\n", - "5. Use Past Performance to Predict the Future\n", - "6. Evaluate Performance with a Monte Carlo Simulation\n", - "\n", - "### Note: The code examples provided are for educational purposes only. They should NOT be used for live trading.\n", - "\n", - "Trading terms and defintions were sourced from [investopedia.com](http://www.investopedia.com)\n", - "\n" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "## Setting up our Python Environment\n", - "\n", - "We will start out by importing the libraries that we will be using throughout the workshop.\n", - "\n", - "- [pandas](https://pandas.pydata.org) - Flexible and powerful data analysis / manipulation library for Python\n", - "- [numpy](http://www.numpy.org) - A library for the Python programming language, adding support for large, multi-dimensional arrays and matrices.\n", - "- [datetime](https://docs.python.org/3/library/datetime.html) - We will be working with Time Series Data \n", - "- [matplotlib](https://matplotlib.org/) - A 2D python plotting library that can generate plots, histograms, power spectra, bar charts, errorcharts, scatterplots, etc., with just a few lines of code." - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "## Importing and Manipulating Stock Data" - ] - }, - { - "cell_type": "code", - "execution_count": 6, - "metadata": {}, - "outputs": [], - "source": [ - "import pandas as pd\n", - "from pandas_datareader import data as pdr\n", - "import numpy as np\n", - "import datetime\n", - "import matplotlib.pyplot as plt\n", - "from math import sqrt, fabs\n", - "from scipy.stats import norm\n", - "%matplotlib inline\n", - "from IPython.core.display import display, HTML\n", - "display(HTML(''))\n" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "Enter the ticker symbol for the stock you'd like to evaluate or continue with the default." - ] - }, - { - "cell_type": "code", - "execution_count": 8, - "metadata": {}, - "outputs": [ - { - "name": "stdout", - "output_type": "stream", - "text": [ - "AMZN\n" - ] - } - ], - "source": [ - "STOCK = 'AMZN'\n", - "print(STOCK)" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "We will use the pandas-data-reader to create a data frame using the Yahoo Finance API. We can specify start and end dates for our data import. The resulting data frame is a securities chart that clearly shows the opening, high, low and closing prices (OHLC) for a security." - ] - }, - { - "cell_type": "code", - "execution_count": 12, - "metadata": {}, - "outputs": [ - { - "name": "stdout", - "output_type": "stream", - "text": [ - "[*********************100%***********************] 1 of 1 downloaded\n" - ] - } - ], - "source": [ - "import yfinance as yf\n", - "yf.pdr_override()\n", - "stock_df = pdr.get_data_yahoo(STOCK, \n", - " start=datetime.datetime(2018, 1, 1), \n", - " end=datetime.datetime(2018, 12, 31))" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "The columns attribute will show you the Data Labels." - ] - }, - { - "cell_type": "code", - "execution_count": 13, - "metadata": {}, - "outputs": [ - { - "data": { - "text/plain": [ - "Index(['Open', 'High', 'Low', 'Close', 'Adj Close', 'Volume'], dtype='object')" - ] - }, - "execution_count": 13, - "metadata": {}, - "output_type": "execute_result" - } - ], - "source": [ - "stock_df.columns" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "You can use built-in head() and tail() methods to explore the beginning or end of the data frame respectively. These allow you to get a feel for the data." - ] - }, - { - "cell_type": "code", - "execution_count": 14, - "metadata": {}, - "outputs": [ - { - "data": { - "text/html": [ - "
\n", - "\n", - "\n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - "
OpenHighLowCloseAdj CloseVolume
Date
2016-12-23764.549988766.500000757.989990760.590027760.5900271976900
2016-12-27763.400024774.650024761.200012771.400024771.4000242638700
2016-12-28776.250000780.000000770.500000772.130005772.1300053301000
2016-12-29772.400024773.400024760.849976765.150024765.1500243153500
2016-12-30766.469971767.400024748.280029749.869995749.8699954139400
\n", - "
" - ], - "text/plain": [ - " Open High Low Close Adj Close \\\n", - "Date \n", - "2016-12-23 764.549988 766.500000 757.989990 760.590027 760.590027 \n", - "2016-12-27 763.400024 774.650024 761.200012 771.400024 771.400024 \n", - "2016-12-28 776.250000 780.000000 770.500000 772.130005 772.130005 \n", - "2016-12-29 772.400024 773.400024 760.849976 765.150024 765.150024 \n", - "2016-12-30 766.469971 767.400024 748.280029 749.869995 749.869995 \n", - "\n", - " Volume \n", - "Date \n", - "2016-12-23 1976900 \n", - "2016-12-27 2638700 \n", - "2016-12-28 3301000 \n", - "2016-12-29 3153500 \n", - "2016-12-30 4139400 " - ] - }, - "execution_count": 14, - "metadata": {}, - "output_type": "execute_result" - } - ], - "source": [ - "#print the most recent days OHLC Values\n", - "stock_df.tail()" - ] - }, - { - "cell_type": "code", - "execution_count": 15, - "metadata": {}, - "outputs": [ - { - "data": { - "text/html": [ - "
\n", - "\n", - "\n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - "
OpenHighLowCloseAdj CloseVolume
Date
2016-01-04656.289978657.719971627.510010636.989990636.9899909314500
2016-01-05646.859985646.909973627.650024633.789978633.7899785822600
2016-01-06622.000000639.789978620.309998632.650024632.6500245329200
2016-01-07621.799988630.000000605.210022607.940002607.9400027074900
2016-01-08619.659973624.140015606.000000607.049988607.0499885512900
\n", - "
" - ], - "text/plain": [ - " Open High Low Close Adj Close \\\n", - "Date \n", - "2016-01-04 656.289978 657.719971 627.510010 636.989990 636.989990 \n", - "2016-01-05 646.859985 646.909973 627.650024 633.789978 633.789978 \n", - "2016-01-06 622.000000 639.789978 620.309998 632.650024 632.650024 \n", - "2016-01-07 621.799988 630.000000 605.210022 607.940002 607.940002 \n", - "2016-01-08 619.659973 624.140015 606.000000 607.049988 607.049988 \n", - "\n", - " Volume \n", - "Date \n", - "2016-01-04 9314500 \n", - "2016-01-05 5822600 \n", - "2016-01-06 5329200 \n", - "2016-01-07 7074900 \n", - "2016-01-08 5512900 " - ] - }, - "execution_count": 15, - "metadata": {}, - "output_type": "execute_result" - } - ], - "source": [ - "#print the earliest OHLC Values\n", - "stock_df.head()" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "You can specify a column label to return a data frame containing only those values." - ] - }, - { - "cell_type": "code", - "execution_count": null, - "metadata": {}, - "outputs": [], - "source": [ - "stock_df['Open']\n" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "We will use matplotlib to visualize various aspects of our data. If we want to plot the closing price by day, we would do the following:" - ] - }, - { - "cell_type": "code", - "execution_count": null, - "metadata": {}, - "outputs": [], - "source": [ - "stock_df['Close'].plot()\n", - "plt.show()" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "You can use the describe() method to display summary statistics about the data frame.\n", - "\n", - "For numeric data, the result’s index will include count, mean, std, min, max as well as lower, 50 and upper percentiles. By default the lower percentile is 25 and the upper percentile is 75. The 50 percentile is the same as the median.\n", - "\n", - "For object data (e.g. strings or timestamps), the result’s index will include count, unique, top, and freq. The top is the most common value. The freq is the most common value’s frequency. Timestamps also include the first and last items.\n", - "\n", - "A typical year contains [252 trading days](https://en.wikipedia.org/wiki/Trading_day). You will see this window used throughout the exercises." - ] - }, - { - "cell_type": "code", - "execution_count": 4, - "metadata": {}, - "outputs": [ - { - "ename": "NameError", - "evalue": "name 'stock_df' is not defined", - "output_type": "error", - "traceback": [ - "\u001b[0;31m---------------------------------------------------------------------------\u001b[0m", - "\u001b[0;31mNameError\u001b[0m Traceback (most recent call last)", - "\u001b[0;32m\u001b[0m in \u001b[0;36m\u001b[0;34m()\u001b[0m\n\u001b[0;32m----> 1\u001b[0;31m \u001b[0mstock_df\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mdescribe\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0m", - "\u001b[0;31mNameError\u001b[0m: name 'stock_df' is not defined" - ] - } - ], - "source": [ - "stock_df.describe()" - ] - }, - { - "cell_type": "markdown", - "metadata": { - "collapsed": true - }, - "source": [ - "## Basic Financial Analysis\n", - "Typically, data will need to be cleaned or transformed before it is usable. Let's take a look at a simple example of calculating our stock's daily [percent change](https://pandas.pydata.org/pandas-docs/stable/generated/pandas.Series.pct_change.html), which is the perctage of loss or gain experienced that day. We will use the fillna method to replace any blank values from our import with 0. We will also use the columns attribute to change the Column label.\n", - "\n", - "### Calculate Daily and Annualized Returns" - ] - }, - { - "cell_type": "code", - "execution_count": 10, - "metadata": {}, - "outputs": [ - { - "data": { - "text/plain": [ - "Date\n", - "2016-12-23 -0.007503\n", - "2016-12-27 0.014213\n", - "2016-12-28 0.000946\n", - "2016-12-29 -0.009040\n", - "2016-12-30 -0.019970\n", - "Name: Daily Return, dtype: float64" - ] - }, - "execution_count": 10, - "metadata": {}, - "output_type": "execute_result" - } - ], - "source": [ - "# Save daily returns as a new column\n", - "stock_df['Daily Return'] = stock_df[['Adj Close']].pct_change()\n", - "\n", - "# Replace NA values with 0\n", - "stock_df['Daily Return'].fillna(0, inplace=True)\n", - "\n", - "stock_df['Daily Return'].tail()" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "Now that we've calculated daily returns lets take a look at annualized returns." - ] - }, - { - "cell_type": "code", - "execution_count": 11, - "metadata": {}, - "outputs": [ - { - "name": "stdout", - "output_type": "stream", - "text": [ - "0.21\n" - ] - } - ], - "source": [ - "# Calculate the average daily return\n", - "mean_return = stock_df['Daily Return'].mean()\n", - "\n", - "# Annualize the returns\n", - "annualised_return = round(mean_return * 252,2)\n", - "\n", - "# Annualized Mean Return. How much are we making or losing on average?\n", - "print(annualised_return)" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "### Calculate Risk\n", - "\n", - "While returns are the goal of any trading strategy, risk must be evaluated as well. [Standard Deviation](https://www.investopedia.com/terms/s/standarddeviation.asp) is the most commonly used risk measure. We will use the built-in [std() method](https://pandas.pydata.org/pandas-docs/stable/generated/pandas.Series.std.html). " - ] - }, - { - "cell_type": "code", - "execution_count": 12, - "metadata": {}, - "outputs": [ - { - "name": "stdout", - "output_type": "stream", - "text": [ - "0.29\n" - ] - } - ], - "source": [ - "# Calculate the Standard Deviation\n", - "std_return = stock_df['Daily Return'].std()\n", - "\n", - "# Annualize the standard deviation. This is also known as Volatility\n", - "volatility = round(np.sqrt(252) * std_return,2)\n", - "\n", - "#The higher the result, the more volatile the stock!\n", - "print(volatility)" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "### Calculate the Sharpe Ratio\n", - "\n", - "The [Sharpe Ratio](https://www.investopedia.com/terms/s/sharperatio.asp) is a measure of risk/return. This ratio is best applicable to investments with a [normal distribution](https://www.investopedia.com/terms/n/normaldistribution.asp) of returns. We will use the built-in hist() method to visualize Daily Returns as a histogram." - ] - }, - { - "cell_type": "code", - "execution_count": 13, - "metadata": {}, - "outputs": [ - { - "data": { - "text/plain": [ - "" - ] - }, - "execution_count": 13, - "metadata": {}, - "output_type": "execute_result" - }, - { - "data": { - "image/png": "iVBORw0KGgoAAAANSUhEUgAAAXcAAAD8CAYAAACMwORRAAAABHNCSVQICAgIfAhkiAAAAAlwSFlz\nAAALEgAACxIB0t1+/AAAFA1JREFUeJzt3X+Q3HV9x/HXywQwcjQJgts00B5O1Q5yFSZbtePU2UPR\nCLVgdVoYhoaqczoVxz/SzqRaW39OozViHTvjZIQS/pCTUqk2YG2kOa0zFXqHIZeINCSmU64hFIUM\nhxk6V9/9Y7/X7l12s/vd/X53bz88HzM32f3u5/vZV7755pVvvvu97zkiBABIywsGHQAAUDzKHQAS\nRLkDQIIodwBIEOUOAAmi3AEgQZQ7ACSIcgeABFHuAJCg1f18s/POOy9GR0d7muPZZ5/V2WefXUyg\nPhi2vNLwZSZv+YYtc2p5Z2ZmnoyI83NNGhF9+9q0aVP0au/evT3P0U/Dljdi+DKTt3zDljm1vJKm\nI2ffcloGABJEuQNAgih3AEgQ5Q4ACaLcASBBlDsAJIhyB4AEUe4AkCDKHQAS1NfbDwBFG912j7aO\nLejGbfcsWX50+1UDSgSsDBy5A0CCKHcASBDlDgAJotwBIEGUOwAkiHIHgAS1LXfbL7T9gO2HbB+0\n/dFs+W22f2R7X/Z1aflxAQCd6OQ69+ckXR4R87bPkPRd29/IXvujiLirvHgAgG60LffsRzzNZ0/P\nyL6izFAAgN50dM7d9irb+yQ9IWlPRNyfvfRJ2/tt32z7rNJSAgBycf3AvMPB9jpJd0t6v6QfS3pc\n0pmSdko6HBEfa7LOhKQJSapUKpsmJyd7Cjw/P6+RkZGe5uinYcsrDVfm2bkTqqyRjp9cunxs49rB\nBOrAMG3fRcOWObW84+PjMxFRzTNnrnKXJNt/KumnEfGZhmU1SX8YEb95unWr1WpMT0/ner/lpqam\nVKvVepqjn4YtrzRcmRfvLbNjdukZxpV8b5lh2r6Lhi1zanlt5y73Tq6WOT87YpftNZKukPRD2xuy\nZZZ0jaQDed4YAFCeTq6W2SBpl+1Vqv9jcGdE7Lb9T7bPl2RJ+yS9t8ScAIAcOrlaZr+ky5osv7yU\nRACAnvEdqgCQIModABJEuQNAgih3AEgQ5Q4ACaLcASBBlDsAJIhyB4AEUe4AkCDKHQASRLkDQIIo\ndwBIUCd3hQT6ZnTbPU2Xr+T7swMrEUfuAJAgyh0AEkS5A0CCKHcASBDlDgAJotwBIEFty932C20/\nYPsh2wdtfzRbfpHt+20/avsrts8sPy4AoBOdHLk/J+nyiHiVpEslbbb9WkmfknRzRPyypKckvau8\nmACAPNqWe9TNZ0/PyL5C0uWS7sqW75J0TSkJAQC5dXTO3fYq2/skPSFpj6TDkp6OiIVsyGOSNpYT\nEQCQlyOi88H2Okl3S/qwpNuyUzKyfaGkb0TEJU3WmZA0IUmVSmXT5ORkT4Hn5+c1MjLS0xz9NGx5\npcFmnp070XT52Ma1LcdX1kjHT3Y2fiVgnyhfannHx8dnIqKaZ85c95aJiKdt75X065LW2V6dHb1f\nIGmuxTo7Je2UpGq1GrVaLc9bnmJqakq9ztFPw5ZXGmzmG1vdW+b6WsvxW8cWtGN2dUfjVwL2ifKR\nt7OrZc7Pjthle42kKyQ9LGmvpHdkw7ZI+lqhyQAAXevkyH2DpF22V6n+j8GdEbHb9g8kTdr+hKTv\nS7qlxJwAgBzalntE7Jd0WZPlRyS9uoxQAIDe8B2qAJAgyh0AEkS5A0CCKHcASBDlDgAJotwBIEGU\nOwAkiHIHgARR7gCQIModABJEuQNAgih3AEgQ5Q4ACaLcASBBlDsAJIhyB4AEUe4AkCDKHQASRLkD\nQILalrvtC23vtf0D2wdtfyBb/hHbc7b3ZV9Xlh8XANCJtj8gW9KCpK0R8aDtcyTN2N6TvXZzRHym\nvHgAgG60LfeIOCbpWPb4GdsPS9pYdjAAQPdynXO3PSrpMkn3Z4tusr3f9q221xecDQDQJUdEZwPt\nEUnflvTJiPiq7YqkJyWFpI9L2hAR72yy3oSkCUmqVCqbJicnewo8Pz+vkZGRnubop2HLKw028+zc\niabLxzaubTm+skY6frKz8SsB+0T5Uss7Pj4+ExHVPHN2VO62z5C0W9I3I+KzTV4flbQ7Ii453TzV\najWmp6fz5DvF1NSUarVaT3P007DllQabeXTbPU2XH91+VcvxW8cWtGN2dUfjVwL2ifKlltd27nLv\n5GoZS7pF0sONxW57Q8Owt0k6kOeNAQDl6eRqmddJukHSrO192bIPSrrO9qWqn5Y5Kuk9pSQEAOTW\nydUy35XkJi/dW3wcAEAROjlyB5KR95w+MKy4/QAAJIhyB4AEUe4AkCDKHQASRLkDQIIodwBIEOUO\nAAmi3AEgQZQ7ACSIcgeABFHuAJAgyh0AEkS5A0CCKHcASBDlDgAJotwBIEGUOwAkiHIHgAS1LXfb\nF9rea/sHtg/a/kC2/Fzbe2wfyn5dX35cAEAnOjlyX5C0NSIulvRaSe+zfbGkbZLui4iXSbovew4A\nWAHalntEHIuIB7PHz0h6WNJGSVdL2pUN2yXpmrJCAgDyyXXO3faopMsk3S+pEhHHspcel1QpNBkA\noGuOiM4G2iOSvi3pkxHxVdtPR8S6htefiohTzrvbnpA0IUmVSmXT5ORkT4Hn5+c1MjLS0xz9NGx5\npcFmnp070XT52Ma1LcdX1kjHT3Y+Ps/8ZWCfKF9qecfHx2cioppnzo7K3fYZknZL+mZEfDZb9oik\nWkQcs71B0lREvOJ081Sr1Ziens6T7xRTU1Oq1Wo9zdFPw5ZXGmzm0W33NF1+dPtVLcdvHVvQjtnV\nHY/PM38Z2CfKl1pe27nLvZOrZSzpFkkPLxZ75uuStmSPt0j6Wp43BgCUZ3X7IXqdpBskzdrely37\noKTtku60/S5J/y7pd8qJCADIq225R8R3JbnFy28oNg4AoAidHLkDA9fqXHlR44HUcPsBAEgQ5Q4A\nCaLcASBBlDsAJIhyB4AEcbUMoJXxnatAkThyB4AEUe4AkCDKHQASRLkDQIIodwBIEOUOAAmi3AEg\nQZQ7ACSIcgeABFHuAJAgbj+AgeCHaQDl4sgdABLUttxt32r7CdsHGpZ9xPac7X3Z15XlxgQA5NHJ\nkfttkjY3WX5zRFyafd1bbCwAQC/alntEfEfST/qQBQBQkF7Oud9ke3922mZ9YYkAAD1zRLQfZI9K\n2h0Rl2TPK5KelBSSPi5pQ0S8s8W6E5ImJKlSqWyanJzsKfD8/LxGRkZ6mqOfhi2v1J/Ms3MnCpur\nskY6frKw6ZYY27i28DnZJ8qXWt7x8fGZiKjmmbOrcu/0teWq1WpMT0/nyXeKqakp1Wq1nubop2HL\nK/Unc5GXQm4dW9CO2XKu6i3jJzGxT5Qvtby2c5d7V6dlbG9oePo2SQdajQUA9F/bwx3bd0iqSTrP\n9mOS/kxSzfalqp+WOSrpPSVmBADk1LbcI+K6JotvKSELAKAgfIcqACSIcgeABFHuAJAgyh0AEkS5\nA0CCKHcASBDlDgAJotwBIEGUOwAkiHIHgARR7gCQIModABJUzk2wgUyR920H0DmO3AEgQZQ7ACSI\ncgeABFHuAJAgPlBFIfjgFFhZOHIHgAS1LXfbt9p+wvaBhmXn2t5j+1D26/pyYwIA8ujkyP02SZuX\nLdsm6b6IeJmk+7LnAIAVom25R8R3JP1k2eKrJe3KHu+SdE3BuQAAPej2nHslIo5ljx+XVCkoDwCg\nAI6I9oPsUUm7I+KS7PnTEbGu4fWnIqLpeXfbE5ImJKlSqWyanJzsKfD8/LxGRkZ6mqOfhi2v1F3m\n2bkTJaVpr7JGOn6y/+87tnFtV+s9X/aJQUot7/j4+ExEVPPM2e2lkMdtb4iIY7Y3SHqi1cCI2Clp\npyRVq9Wo1WpdvmXd1NSUep2jn4Ytr9Rd5hsHeCnk1rEF7Zjt/1W9R6+vdbXe82WfGCTydn9a5uuS\ntmSPt0j6WjFxAABF6ORSyDsk/YukV9h+zPa7JG2XdIXtQ5LemD0HAKwQbf8vGxHXtXjpDQVnAQAU\nhNsPAF1qdcuFo9uv6nMS4FTcfgAAEkS5A0CCKHcASBDlDgAJotwBIEGUOwAkiHIHgARR7gCQIMod\nABJEuQNAgih3AEgQ5Q4ACaLcASBBlDsAJIhyB4AEUe4AkCB+WAdQMH6IB1YCjtwBIEE9HbnbPirp\nGUn/I2khIqpFhAIA9KaI0zLjEfFkAfMAAArCaRkASFCv5R6S/tH2jO2JIgIBAHrniOh+ZXtjRMzZ\nfomkPZLeHxHfWTZmQtKEJFUqlU2Tk5O95NX8/LxGRkZ6mqOfhi2v1F3m2bkTJaVpr7JGOn5yYG+f\n2/K8YxvXDi5Mh4ZtP04t7/j4+EzezzR7KvclE9kfkTQfEZ9pNaZarcb09HRP7zM1NaVardbTHP00\nbHml7jK3uvyvH7aOLWjH7PBc1bs87zBcIjls+3FqeW3nLveuT8vYPtv2OYuPJb1J0oFu5wMAFKeX\nw52KpLttL87z5Yj4h0JSAQB60nW5R8QRSa8qMAsAoCDDc6IShWt1nvy2zWfnXgfAysJ17gCQIMod\nABJEuQNAgih3AEgQ5Q4ACeJqmRWMH/rw/JD3z5n9Ap3gyB0AEkS5A0CCKHcASBDlDgAJotwBIEFc\nLTOEirq6opXZuRO6kXvIAEONI3cASBDlDgAJotwBIEGUOwAkaGg+UF38UHDr2MKSD/vyfsv16T5c\nLOrbvRvHN+Yt+9vD+UEaacn751nmB+1bxxZUy5Umbd38Xev37SE4cgeABPVU7rY3237E9qO2txUV\nCgDQm67L3fYqSX8l6S2SLpZ0ne2LiwoGAOheL0fur5b0aEQciYj/ljQp6epiYgEAetFLuW+U9B8N\nzx/LlgEABswR0d2K9jskbY6Id2fPb5D0moi4adm4CUkT2dNXSHqk+7iSpPMkPdnjHP00bHml4ctM\n3vINW+bU8v5SRJyfZ8JeLoWck3Rhw/MLsmVLRMROSTt7eJ8lbE9HRLWo+co2bHml4ctM3vINW2by\n9nZa5l8lvcz2RbbPlHStpK8XEwsA0Iuuj9wjYsH2TZK+KWmVpFsj4mBhyQAAXevpO1Qj4l5J9xaU\npVOFneLpk2HLKw1fZvKWb9gyP+/zdv2BKgBg5eL2AwCQoBVT7rbPtb3H9qHs1/Utxm3JxhyyvSVb\ndo7tfQ1fT9r+XPbajbb/q+G1dw86b7Z8Krt1w2Kul2TLz7L9leyWDvfbHh10Xtsvsn2P7R/aPmh7\ne8P4wrdvu9tanG4b2f7jbPkjtt/c6ZyDyGv7CtsztmezXy9vWKfp/jHgvKO2TzZk+mLDOpuy38ej\ntj9v2ysg7/XLeuFnti/NXitt+3aY+fW2H7S94Ppl5Y2vteqMfNs4IlbEl6RPS9qWPd4m6VNNxpwr\n6Uj26/rs8fom42YkvT57fKOkL6y0vJKmJFWbrPMHkr6YPb5W0lcGnVfSiySNZ2POlPTPkt5SxvZV\n/cP5w5Jemr3XQ5Iu7mQbqX4bjIcknSXpomyeVZ3MOaC8l0n6hezxJZLmGtZpun8MOO+opAMt5n1A\n0mslWdI3FvePQeZdNmZM0uGyt2+OzKOSflXS7ZLe0bD8dJ2RaxuvmCN31W9dsCt7vEvSNU3GvFnS\nnoj4SUQ8JWmPpM2NA2y/XNJLVC+gMhWSt828d0l6Q0FHQV3njYifRsReSYr6rSYeVP37GsrQyW0t\nWm2jqyVNRsRzEfEjSY9m85V5q4yu80bE9yPiP7PlByWtsX1WQbkKz9tqQtsbJP1cRHwv6i10u5rv\nX4PMe122bj+0zRwRRyNiv6SfLVu36d/BbrbxSir3SkQcyx4/LqnSZEwntzxY/Je78ZPit9veb/su\n2xeqGEXk/evsv4QfbtgZ/2+diFiQdELSi1dIXtleJ+mtku5rWFzk9u3kz7jVNmq1bpm3yuglb6O3\nS3owIp5rWNZs/xh03otsf9/2t23/RsP4x9rMOai8i35X0h3LlpWxfZfkyeTZHqfbh3Nt477+sA7b\n35L0801e+lDjk4gI291exnOtpBsanv+9pDsi4jnb71H9X/jLm67Z37zXR8Sc7XMk/W2W+faccyxR\n9va1vVr1vyCfj4gj2eKuty/qbL9S0qckvalhceH7RwGOSfrFiPix7U2S/i7LvqLZfo2kn0bEgYbF\nK3H7Fqqv5R4Rb2z1mu3jtjdExLHsvyBPNBk2Jy35gTAXqH7ubHGOV0laHREzDe/544bxX1L93PPA\n80bEXPbrM7a/rPp/5W7X/9/W4bGsTNdKavw9DCRvZqekQxHxuYb37Hr7ttDJbS1abaPTrdv2VhkD\nyCvbF0i6W9LvRcThxRVOs38MLG/2v+Hnslwztg9Lenk2vvE03YrZvplrteyovcTt22nm061bW7bu\nlLrZxmV8oNDlhxB/oaUf+H26yZhzJf1I9Q8a1mePz214fbukjy5bZ0PD47dJ+t6g86r+j+p52Zgz\nVD9P+N7s+fu09MOhOwedN3vtE6of4bygzO2bbZsjqn8guvhh1CuXjWm6jSS9Uks/UD2i+odbbecc\nUN512fjfbjJn0/1jwHnPl7Qqe/xS1ctlcf9Y/mHflYPOmz1/QZbzpf3Yvp1mbhh7m079QLXV38Fc\n27iQ30xBG+TFqp/HPSTpWw2/oaqkLzWMe6fqH5Q9Kun3l81xRNKvLFv256p/WPWQpL3LXx9EXkln\nq35Fz/4s2182/KV5oaS/ycY/0LhTDjDvBZJC0sOS9mVf7y5r+0q6UtK/qX7FwYeyZR+T9FvttpHq\np6AOq3730becbs4C992u8kr6E0nPNmzTfapfDNBy/xhw3rdnefap/qH6WxvmrEo6kM35BWXfIDnI\nvNlrNS074Ch7+3aY+ddUP2/+rOr/yzh4ur+D3WxjvkMVABK0kq6WAQAUhHIHgARR7gCQIModABJE\nuQNAgih3AEgQ5Q4ACaLcASBB/wtlByW2NTbCUQAAAABJRU5ErkJggg==\n", - "text/plain": [ - "" - ] - }, - "metadata": {}, - "output_type": "display_data" - } - ], - "source": [ - "stock_df['Daily Return'].hist(bins=50)" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "A [Sharpe Ratio](https://www.investopedia.com/terms/s/sharperatio.asp) is the average return earned in excess of risk-free rate per unit of volatility. In other words, we will compare our stock against a benchmark considered risk-free. Let's use a standard return of 5% over the trading period (252 days)" - ] - }, - { - "cell_type": "code", - "execution_count": 14, - "metadata": {}, - "outputs": [ - { - "name": "stdout", - "output_type": "stream", - "text": [ - "0.533189979618\n" - ] - } - ], - "source": [ - "stock_df['Excess Returns'] = stock_df['Daily Return'] - 0.05/252\n", - "annualised_sharpe = np.sqrt(252) * stock_df['Excess Returns'].mean() / stock_df['Excess Returns'].std()\n", - "\n", - "#The higher the result, the better!\n", - "print(annualised_sharpe) \n" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "### Calculate Maximum Drawdown\n", - "\n", - "[Maximum Drawdown (MDD)](https://www.investopedia.com/terms/m/maximum-drawdown-mdd.asp) is the maximum loss from a peak to a trough before a new peak is attained.\n", - "This is used as a measure of downside risk over a period of time.\n", - "\n", - "MDD = (Trough Value – Peak Value) ÷ Peak Value" - ] - }, - { - "cell_type": "code", - "execution_count": 15, - "metadata": {}, - "outputs": [ - { - "data": { - "image/png": "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\negAAAABJRU5ErkJggg==\n", - "text/plain": [ - "" - ] - }, - "metadata": {}, - "output_type": "display_data" - } - ], - "source": [ - "# Calculate the max drawdown in the past window days for each day in the series.\n", - "rolling_max = stock_df['Adj Close'].rolling(min_periods=1,center=False,window=252).max()\n", - "daily_drawdown = stock_df['Adj Close'] / rolling_max - 1.0\n", - "\n", - "# Next we calculate the minimum (negative) daily drawdown in that window.\n", - "max_daily_drawdown = daily_drawdown.rolling(min_periods=1,center=False,window=252).min()\n", - "\n", - "# Plot the results\n", - "daily_drawdown.plot(label='Running DD')\n", - "max_daily_drawdown.plot(label='Max DD')\n", - "plt.legend(loc=\"lower right\")\n", - "plt.show()" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "## Backtest a Trading Strategy\n", - "\n", - "In this step, we will test a strategy against historical data to see how it would have performed. This process is know as backtesting. We will use a common strategy known as [the Moving Average Crossover](https://en.wikipedia.org/wiki/Moving_average_crossover)\n", - "\n", - "In this strategy, two Simple Moving Averages (SMA) of a time series with differing lookback periods are calculated. If the short moving average exceeds the long moving average, then you go long. If the long moving average exceeds the short moving average then you exit.\n", - "\n", - "We will calculate short (40 days) moving avg and long (100 days) moving avg. Moving average smoothes out short-term fluctuations and highlights longer-term trends in data. If short moving average is crossing the long moving average then generate a trading order. \n", - "\n", - "We will use the pandas.DataFrame.rolling to calculate the moving average. More details about rolling method avaliable here: https://pandas.pydata.org/pandas-docs/stable/generated/pandas.DataFrame.rolling.html" - ] - }, - { - "cell_type": "code", - "execution_count": 16, - "metadata": {}, - "outputs": [ - { - "name": "stdout", - "output_type": "stream", - "text": [ - " signal short_mavg long_mavg positions\n", - "Date \n", - "2016-01-04 0.0 636.989990 636.989990 NaN\n", - "2016-01-05 0.0 635.389984 635.389984 0.0\n", - "2016-01-06 0.0 634.476664 634.476664 0.0\n", - "2016-01-07 0.0 627.842499 627.842499 0.0\n", - "2016-01-08 0.0 623.683996 623.683996 0.0\n" - ] - }, - { - "data": { - "text/html": [ - "
\n", - "\n", - "\n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - "
signalshort_mavglong_mavgpositions
Date
2016-04-131.0572.386749571.4951421.0
\n", - "
" - ], - "text/plain": [ - " signal short_mavg long_mavg positions\n", - "Date \n", - "2016-04-13 1.0 572.386749 571.495142 1.0" - ] - }, - "execution_count": 16, - "metadata": {}, - "output_type": "execute_result" - } - ], - "source": [ - "# Initialize the short and long windows\n", - "short_window = 40\n", - "long_window = 100\n", - "\n", - "# Initialize the 'signals' DataFrame with a single 'signal' column, use the same index (Date) from stock_df \n", - "signals = pd.DataFrame(index=stock_df.index)\n", - "# initialize by setting the value for all rows in this column to 0.0.\n", - "signals['signal'] = 0.0\n", - "# Create short simple moving average over the short window\n", - "signals['short_mavg'] = stock_df['Close'].rolling(window=short_window, min_periods=1, center=False).mean()\n", - "\n", - "# Create long simple moving average over the long window\n", - "signals['long_mavg'] = stock_df['Close'].rolling(window=long_window, min_periods=1, center=False).mean()\n", - "\n", - "# Create a signal when the short moving average crosses the long moving average, \n", - "# but only for the period greater than the shortest moving average window. \n", - "signals['signal'][short_window:] = np.where(signals['short_mavg'][short_window:] \n", - " > signals['long_mavg'][short_window:], 1.0, 0.0) \n", - "\n", - "# Generate trading orders\n", - "signals['positions'] = signals['signal'].diff()\n", - "\n", - "print(signals.head())\n", - "\n", - "# print buy stock dates \n", - "signals[signals.positions > 0]\n", - "\n", - "\n" - ] - }, - { - "cell_type": "code", - "execution_count": 17, - "metadata": {}, - "outputs": [ - { - "data": { - "image/png": "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\nYII=\n", - "text/plain": [ - "" - ] - }, - "metadata": {}, - "output_type": "display_data" - } - ], - "source": [ - "# Initialize the plot figure\n", - "fig = plt.figure()\n", - "\n", - "# Add a subplot and label for y-axis\n", - "ax1 = fig.add_subplot(111, ylabel='Price in $')\n", - "\n", - "# Plot the closing price\n", - "stock_df['Close'].plot(ax=ax1, color='r', lw=2.)\n", - "\n", - "# Plot the short and long moving averages\n", - "signals[['short_mavg', 'long_mavg']].plot(ax=ax1, lw=2.)\n", - "\n", - "# Plot the buy signals\n", - "ax1.plot(signals.loc[signals.positions == 1.0].index, \n", - " signals.short_mavg[signals.positions == 1.0],\n", - " '^', markersize=10, color='purple')\n", - " \n", - "# Plot the sell signals\n", - "ax1.plot(signals.loc[signals.positions == -1.0].index, \n", - " signals.short_mavg[signals.positions == -1.0],\n", - " 'v', markersize=10, color='black')\n", - " \n", - "# Show the plot\n", - "\n", - "plt.rcParams[\"figure.figsize\"] = (22,35)\n", - "\n", - "\n" - ] - }, - { - "cell_type": "code", - "execution_count": 18, - "metadata": {}, - "outputs": [ - { - "name": "stdout", - "output_type": "stream", - "text": [ - " AMZN holdings cash total returns\n", - "Date \n", - "2016-01-04 0.0 0.0 NaN NaN NaN\n", - "2016-01-05 0.0 0.0 100000.0 100000.0 NaN\n", - "2016-01-06 0.0 0.0 100000.0 100000.0 0.0\n", - "2016-01-07 0.0 0.0 100000.0 100000.0 0.0\n", - "2016-01-08 0.0 0.0 100000.0 100000.0 0.0\n", - " AMZN holdings cash total returns\n", - "Date \n", - "2016-12-23 0.0 0.0 115251.001 115251.001 0.0\n", - "2016-12-27 0.0 0.0 115251.001 115251.001 0.0\n", - "2016-12-28 0.0 0.0 115251.001 115251.001 0.0\n", - "2016-12-29 0.0 0.0 115251.001 115251.001 0.0\n", - "2016-12-30 0.0 0.0 115251.001 115251.001 0.0\n" - ] - }, - { - "data": { - "text/html": [ - "
\n", - "\n", - "\n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - "
AMZNholdingscashtotalreturns
Date
2016-01-040.00000.0000NaNNaNNaN
2016-01-050.00000.0000100000.0000100000.0000NaN
2016-01-060.00000.0000100000.0000100000.00000.000000
2016-01-070.00000.0000100000.0000100000.00000.000000
2016-01-080.00000.0000100000.0000100000.00000.000000
2016-01-110.00000.0000100000.0000100000.00000.000000
2016-01-120.00000.0000100000.0000100000.00000.000000
2016-01-130.00000.0000100000.0000100000.00000.000000
2016-01-140.00000.0000100000.0000100000.00000.000000
2016-01-150.00000.0000100000.0000100000.00000.000000
2016-01-190.00000.0000100000.0000100000.00000.000000
2016-01-200.00000.0000100000.0000100000.00000.000000
2016-01-210.00000.0000100000.0000100000.00000.000000
2016-01-220.00000.0000100000.0000100000.00000.000000
2016-01-250.00000.0000100000.0000100000.00000.000000
2016-01-260.00000.0000100000.0000100000.00000.000000
2016-01-270.00000.0000100000.0000100000.00000.000000
2016-01-280.00000.0000100000.0000100000.00000.000000
2016-01-290.00000.0000100000.0000100000.00000.000000
2016-02-010.00000.0000100000.0000100000.00000.000000
2016-02-020.00000.0000100000.0000100000.00000.000000
2016-02-030.00000.0000100000.0000100000.00000.000000
2016-02-040.00000.0000100000.0000100000.00000.000000
2016-02-050.00000.0000100000.0000100000.00000.000000
2016-02-080.00000.0000100000.0000100000.00000.000000
2016-02-090.00000.0000100000.0000100000.00000.000000
2016-02-100.00000.0000100000.0000100000.00000.000000
2016-02-110.00000.0000100000.0000100000.00000.000000
2016-02-120.00000.0000100000.0000100000.00000.000000
2016-02-160.00000.0000100000.0000100000.00000.000000
..................
2016-11-1775640.002475640.002438517.9993114158.00170.008757
2016-11-1876015.997376015.997338517.9993114533.99660.003294
2016-11-2178000.000078000.000038517.9993116517.99930.017322
2016-11-2278533.001778533.001738517.9993117051.00100.004574
2016-11-2378011.999578011.999538517.9993116529.9988-0.004451
2016-11-2578036.999578036.999538517.9993116554.99880.000215
2016-11-2876677.002076677.002038517.9993115195.0013-0.011668
2016-11-2976252.002076252.002038517.9993114770.0013-0.003689
2016-11-3075057.000775057.000738517.9993113575.0000-0.010412
2016-12-0174365.002474365.002438517.9993112883.0017-0.006093
2016-12-0274034.002774034.002738517.9993112552.0020-0.002932
2016-12-0575935.998575935.998538517.9993114453.99780.016899
2016-12-0676471.997176471.997138517.9993114989.99640.004683
2016-12-0777041.998377041.998338517.9993115559.99760.004957
2016-12-080.00000.0000115251.0010115251.0010-0.002674
2016-12-090.00000.0000115251.0010115251.00100.000000
2016-12-120.00000.0000115251.0010115251.00100.000000
2016-12-130.00000.0000115251.0010115251.00100.000000
2016-12-140.00000.0000115251.0010115251.00100.000000
2016-12-150.00000.0000115251.0010115251.00100.000000
2016-12-160.00000.0000115251.0010115251.00100.000000
2016-12-190.00000.0000115251.0010115251.00100.000000
2016-12-200.00000.0000115251.0010115251.00100.000000
2016-12-210.00000.0000115251.0010115251.00100.000000
2016-12-220.00000.0000115251.0010115251.00100.000000
2016-12-230.00000.0000115251.0010115251.00100.000000
2016-12-270.00000.0000115251.0010115251.00100.000000
2016-12-280.00000.0000115251.0010115251.00100.000000
2016-12-290.00000.0000115251.0010115251.00100.000000
2016-12-300.00000.0000115251.0010115251.00100.000000
\n", - "

252 rows × 5 columns

\n", - "
" - ], - "text/plain": [ - " AMZN holdings cash total returns\n", - "Date \n", - "2016-01-04 0.0000 0.0000 NaN NaN NaN\n", - "2016-01-05 0.0000 0.0000 100000.0000 100000.0000 NaN\n", - "2016-01-06 0.0000 0.0000 100000.0000 100000.0000 0.000000\n", - "2016-01-07 0.0000 0.0000 100000.0000 100000.0000 0.000000\n", - "2016-01-08 0.0000 0.0000 100000.0000 100000.0000 0.000000\n", - "2016-01-11 0.0000 0.0000 100000.0000 100000.0000 0.000000\n", - "2016-01-12 0.0000 0.0000 100000.0000 100000.0000 0.000000\n", - "2016-01-13 0.0000 0.0000 100000.0000 100000.0000 0.000000\n", - "2016-01-14 0.0000 0.0000 100000.0000 100000.0000 0.000000\n", - "2016-01-15 0.0000 0.0000 100000.0000 100000.0000 0.000000\n", - "2016-01-19 0.0000 0.0000 100000.0000 100000.0000 0.000000\n", - "2016-01-20 0.0000 0.0000 100000.0000 100000.0000 0.000000\n", - "2016-01-21 0.0000 0.0000 100000.0000 100000.0000 0.000000\n", - "2016-01-22 0.0000 0.0000 100000.0000 100000.0000 0.000000\n", - "2016-01-25 0.0000 0.0000 100000.0000 100000.0000 0.000000\n", - "2016-01-26 0.0000 0.0000 100000.0000 100000.0000 0.000000\n", - "2016-01-27 0.0000 0.0000 100000.0000 100000.0000 0.000000\n", - "2016-01-28 0.0000 0.0000 100000.0000 100000.0000 0.000000\n", - "2016-01-29 0.0000 0.0000 100000.0000 100000.0000 0.000000\n", - "2016-02-01 0.0000 0.0000 100000.0000 100000.0000 0.000000\n", - "2016-02-02 0.0000 0.0000 100000.0000 100000.0000 0.000000\n", - "2016-02-03 0.0000 0.0000 100000.0000 100000.0000 0.000000\n", - "2016-02-04 0.0000 0.0000 100000.0000 100000.0000 0.000000\n", - "2016-02-05 0.0000 0.0000 100000.0000 100000.0000 0.000000\n", - "2016-02-08 0.0000 0.0000 100000.0000 100000.0000 0.000000\n", - "2016-02-09 0.0000 0.0000 100000.0000 100000.0000 0.000000\n", - "2016-02-10 0.0000 0.0000 100000.0000 100000.0000 0.000000\n", - "2016-02-11 0.0000 0.0000 100000.0000 100000.0000 0.000000\n", - "2016-02-12 0.0000 0.0000 100000.0000 100000.0000 0.000000\n", - "2016-02-16 0.0000 0.0000 100000.0000 100000.0000 0.000000\n", - "... ... ... ... ... ...\n", - "2016-11-17 75640.0024 75640.0024 38517.9993 114158.0017 0.008757\n", - "2016-11-18 76015.9973 76015.9973 38517.9993 114533.9966 0.003294\n", - "2016-11-21 78000.0000 78000.0000 38517.9993 116517.9993 0.017322\n", - "2016-11-22 78533.0017 78533.0017 38517.9993 117051.0010 0.004574\n", - "2016-11-23 78011.9995 78011.9995 38517.9993 116529.9988 -0.004451\n", - "2016-11-25 78036.9995 78036.9995 38517.9993 116554.9988 0.000215\n", - "2016-11-28 76677.0020 76677.0020 38517.9993 115195.0013 -0.011668\n", - "2016-11-29 76252.0020 76252.0020 38517.9993 114770.0013 -0.003689\n", - "2016-11-30 75057.0007 75057.0007 38517.9993 113575.0000 -0.010412\n", - "2016-12-01 74365.0024 74365.0024 38517.9993 112883.0017 -0.006093\n", - "2016-12-02 74034.0027 74034.0027 38517.9993 112552.0020 -0.002932\n", - "2016-12-05 75935.9985 75935.9985 38517.9993 114453.9978 0.016899\n", - "2016-12-06 76471.9971 76471.9971 38517.9993 114989.9964 0.004683\n", - "2016-12-07 77041.9983 77041.9983 38517.9993 115559.9976 0.004957\n", - "2016-12-08 0.0000 0.0000 115251.0010 115251.0010 -0.002674\n", - "2016-12-09 0.0000 0.0000 115251.0010 115251.0010 0.000000\n", - "2016-12-12 0.0000 0.0000 115251.0010 115251.0010 0.000000\n", - "2016-12-13 0.0000 0.0000 115251.0010 115251.0010 0.000000\n", - "2016-12-14 0.0000 0.0000 115251.0010 115251.0010 0.000000\n", - "2016-12-15 0.0000 0.0000 115251.0010 115251.0010 0.000000\n", - "2016-12-16 0.0000 0.0000 115251.0010 115251.0010 0.000000\n", - "2016-12-19 0.0000 0.0000 115251.0010 115251.0010 0.000000\n", - "2016-12-20 0.0000 0.0000 115251.0010 115251.0010 0.000000\n", - "2016-12-21 0.0000 0.0000 115251.0010 115251.0010 0.000000\n", - "2016-12-22 0.0000 0.0000 115251.0010 115251.0010 0.000000\n", - "2016-12-23 0.0000 0.0000 115251.0010 115251.0010 0.000000\n", - "2016-12-27 0.0000 0.0000 115251.0010 115251.0010 0.000000\n", - "2016-12-28 0.0000 0.0000 115251.0010 115251.0010 0.000000\n", - "2016-12-29 0.0000 0.0000 115251.0010 115251.0010 0.000000\n", - "2016-12-30 0.0000 0.0000 115251.0010 115251.0010 0.000000\n", - "\n", - "[252 rows x 5 columns]" - ] - }, - "execution_count": 18, - "metadata": {}, - "output_type": "execute_result" - } - ], - "source": [ - "# Set the initial capital\n", - "initial_capital= float(100000.0)\n", - "\n", - "# Create a DataFrame `positions`\n", - "positions = pd.DataFrame(index=signals.index).fillna(0.0)\n", - "\n", - "# Buy a 100 shares\n", - "positions[STOCK] = 100*signals['signal']\n", - " \n", - "# Initialize the portfolio with value owned \n", - "portfolio = positions.multiply(stock_df['Adj Close'], axis=0)\n", - "\n", - "# Store the difference in shares owned \n", - "pos_diff = positions.diff()\n", - "\n", - "# Add `holdings` to portfolio\n", - "portfolio['holdings'] = (positions.multiply(stock_df['Adj Close'], axis=0)).sum(axis=1)\n", - "\n", - "# Add `cash` to portfolio\n", - "portfolio['cash'] = initial_capital - (pos_diff.multiply(stock_df['Adj Close'], axis=0)).sum(axis=1).cumsum() \n", - "\n", - "# Add `total` to portfolio\n", - "portfolio['total'] = portfolio['cash'] + portfolio['holdings']\n", - "\n", - "# Add `returns` to portfolio\n", - "portfolio['returns'] = portfolio['total'].pct_change()\n", - "\n", - "# Print the first lines of `portfolio`\n", - "print(portfolio.head())\n", - "\n", - "# Print the last lines of `portfolio`\n", - "print(portfolio.tail())\n", - "\n", - "portfolio.describe()\n", - "\n", - "portfolio" - ] - }, - { - "cell_type": "code", - "execution_count": 20, - "metadata": {}, - "outputs": [ - { - "data": { - "image/png": "iVBORw0KGgoAAAANSUhEUgAABRgAAAb2CAYAAADevt5yAAAABHNCSVQICAgIfAhkiAAAAAlwSFlz\nAAALEgAACxIB0t1+/AAAIABJREFUeJzs3WmQpHleH/bvk5l1dfU53TM7PTPszOzMLux9aA8kAYEh\njFYHoLUhjEKWcRjLIiwshyz5QCgkEyHkkGQFeoF44QgIc0hGgM0hgQzIIAsj2GV22WV3lj1mZ3fu\nq8/q6jqzMv0i88msrum6srIqn8z8fCI2pvvJ6+nqjX9Efvt3FO12OwAAAAAAg6iN+gYAAAAAgPEl\nYAQAAAAABiZgBAAAAAAGJmAEAAAAAAYmYAQAAAAABiZgBAAAAAAGJmAEAAAAAAYmYAQAAAAABiZg\nBAAAAAAGJmAEAAAAAAbWGPUNVMWlS5fajzzyyKhvAwAAAAAq4eMf//iVdrt9737PEzB2PfLII3ni\niSdGfRsAAAAAUAlFUTxzkOdpkQYAAAAABiZgBAAAAAAGJmAEAAAAAAYmYAQAAAAABiZgBAAAAAAG\nJmAEAAAAAAYmYAQAAAAABiZgBAAAAAAGJmAEAAAAAAYmYAQAAAAABiZgBAAAAAAGJmAEAAAAAAYm\nYAQAAAAABiZgBAAAAAAGJmAEAAAAAAYmYAQAAAAABiZgBAAAAAAGJmAEAAAAAAYmYAQAAAAABiZg\nBAAAAAAGJmAEAAAAAAYmYAQAAAAABiZgBAAAAAAGJmAEAAAAAAYmYAQAAAAABiZgBAAAAAAGJmAE\nAAAAAAYmYAQAAAAABiZgBAAAAAAGJmAEAAAAAAYmYAQAAAAABiZgBAAAAAAGJmAEAAAAAAYmYAQA\nAAAABiZgBAAAAAAGJmAEAAAAAAYmYAQAAAAABiZgBAAAAAAGJmAEAAAAAAYmYAQAAAAABiZgBAAA\nAAAGJmAEAAAAAAYmYAQAAAAABiZgBAAAAAAGJmAEAAAAAAYmYAQAAAAABiZgBAAAAAAGJmAEAAAA\nAAYmYAQAAAAABiZgBAAAAAAGJmAEAAAAAAYmYAQAAAAABiZgBAAAAAAGJmAEAAAAAAYmYAQAAAAA\nBiZgBAAAAAAGJmAEAAAAAAYmYAQAAAAABiZgBAAAAAAGJmAEAAAAAAYmYAQAAAAABiZgBAAAAAAG\nJmAEAAAAAAYmYAQAAAAABiZgBAAAAAAGJmAEAAAAAAYmYAQAAAAABiZgBAAAAAAGJmAEAAAAAAYm\n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\nngvaouWLAAAAgwkYAWCFXTumcs3s7qXPixZpAACAgQSMALDKDSvapKcFjAAAAAMJGAFglZWTpA15\nAQAAGEzACACr3LBikrR8EQAAYDABIwCsckGLtCkvAAAAAwkYAWAVLdIAAAAbJ2AEgFUu3ME4wYUA\nAABsAf5sAoBVrr/gDEY7GAEAAAYRMALAKlfP7MquHc1DpBZpAACAwQSMALDK1FTJrYdnMz1VcmDv\nzkkvBwAAoNN2THoBANBFP/G65+XhJ87mqpldk14KAABApwkYAWANNx7cmxtXDHsBAABgbVqkAQAA\nAIChCRgBAAAAgKEJGAEAAACAoQkYAQAAAIChCRgBAAAAgKEJGAEAAACAoQkYAQAAAIChCRgBAAAA\ngKEJGAEAAACAoQkYAQAAAIChCRgBAAAAgKEJGAEAAACAoQkYAQAAAIChCRgBAAAAgKEJGAEAAACA\noQkYAQAAAIChCRgBAAAAgKEJGAEAAACAoQkYAQAAAIChCRgBAAAAgKEJGAEAAACAoQkYAQAAAICh\nCRgBAAAAgKEJGAEAAACAoQkYAQAAAIChCRgBAAAAgKEJGAEAAACAoQkYAQAAAIChCRgBAAAAgKEJ\nGAEAAACAoQkYAQAAAIChCRgBAAAAgKEJGAEAAACAoQkYAQAAAIChCRgBAAAAgKEJGAEAAACAoQkY\nAQAAAIChCRgBAAAAgKEJGAEAAACAoQkYAQAAAIChCRgBAAAAgKEJGAEAAACAoQkYAQAAAIChCRgB\nAAAAgKEJGAEAAACAoQkYAQAAAIChCRgBAAAAgKEJGAEAAACAoQkYAQAAAIChCRgBAAAAgKEJGAEA\nAACAoQkYAQAAAIChCRgBAAAAgKEJGAEAAACAoQkYAQAAAIChCRgBAAAAgKEJGAEAAACAoQkYAQAA\nAIChCRgBAAAAgKEJGAEAAACAoQkYAQAAAIChCRgBAAAAgKEJGAEAAACAoQkYAQAAAIChCRgBAAAA\ngKEJGAEAAACAoQkYAQAAAIChCRgBAAAAgKEJGAEAAACAoQkYAQAAAIChCRgBAAAAgKEJGAEAAACA\noQkYAQAAAIChCRgBAAAAgKEJGAEAAACAoZVa66TX0AmllEeS3D/pdWxTh5IcnfQiSKIWW4EadZO6\nbA3q1E3q0n1qtDWoUzepS/epUTepS3c8vdZ6zXo3EjAycaWUD9ZanzfpdaAWW4EadZO6bA3q1E3q\n0n1qtDWoUzepS/epUTepy9ajRRoAAAAAGJqAEQAAAAAYmoCRLvjJSS+AJWrRfWrUTeqyNahTN6lL\n96nR1qBO3aQu3adG3aQuW4wzGAEAAACAodnBCAAAAAAMTcDIWJRSyqTXQEMtuk+NAIDVPD/oJnWB\n4bn/XF4EjIyLXxzdsaP3gV/onXUwSUopO9a7IeNTSrmtlOJxs8NKKZ9TSrlu0uvgQqWU15RSPq39\n2ONOR5VSDq74WJ26yWNQN+3pfeC+A5ds16QXwObxIMVIlVI+v5TyjiT/vpTyskmvZzsrpbyylPKu\nJN9XSvniJKkOYe2UUsqBtkbvTJJa6/kJL4kkpZSXl1L+MMlXx+NmJ5VSPruU8udJviLJ7ISXQ6uU\n8rmllPck+cEkfzvxuNNFpZTPK6X8fpIfLaV8S6JOXVNKeVUp5beSvKWU8qJJr4dGKeUVpZT3JXlr\nKeUfJu47XVRK+aJSyo+UUq6a9FpY1uYE70zyQ6WU1016PWwOu2PYdO0rdzuT/NskL0nyHUmen+TL\nSylnaq1/OMn1bScravE9ST4ryb9L8pQkX1pK+Wit9a5Jro+LnElyLMmLSylfWmv9z6WU6VrrwqQX\ntt20950dSd6c5MuTfHOt9ddWXu+PiG4opUwn+Zok/6bW+ouTXs9219539iT5uSTXJvnuJH83yRXt\n9X6ndUgp5QVJvjPJv0lyPMnXl1KeU2v96EQXxpJSymekeS79nUn2J3lDKeWWWuvPllKmaq2LE13g\nNlVKuSbJdyX53iRPJPknpZSn1Vr/rbp0Q/t49MVpfr/tS/J7pZT/ojaT1XZo/cs0tXlzkquTvLqU\ncqzW+psTXRxPmp0YbLramEtyZ5LX1Fp/J8lPpWn79EfFGK2oxTuTvLTW+htJ3pdkPsm9E10cF2hD\nkiuTfCDJlyX5kSSptS5otxm/9r4zn2Qxya/0wsVSyktKKTsnuzpW2Z/mGI7fLqXsKqW8rpTyrFLK\nrkS72ri1950zSf5TrfVltdZ3pXnceV17vecB3fKiJHe0zw8+nuZ52sd6x0G4/3TC5yZ5T631t5O8\nI8lDSb6hlHKg1rqoRuPX/p8fTvLhWuuv11r/R5J/leRflFIOqUs3tC8E35PkxUm+Mclr02y0YILa\nDq17kvyDWus7k/xGkr+JVunLgoCRTVNK+YZSyttKKV/TXvS2JPeUUnbVWv8mzStHV09uhdvHilp8\ndZLUWv97rfV8KeXzk/xaktuSfE8p5cva23sSNGYravSV7W64hTSvgL+q1vpbST5SSvn2didJVaPx\nWFGXN7YX/cck15dSfqaU8mdpXnH96SRf2d5eXcZsRY2+qr1oKsnNST41yX9O8gVpdm3/RO9Lxr/K\n7Wf1c4Ba6zvay6fTvKD156WUp05yjaz5XO2/J3lNKeVHktyR5IYkP57kX09qjdvdGjX6n0m+oJRy\nZRvez6fZbfrNiZbccSmlvKGU8vJk6f/8ZJLP7rXd1lr/Iskvp32BmMlYWafWR2utj9ZafzXNfedL\nei9AMj5r1OXXktxbStlZaz2RJvi9YjKrYzMJGNkUpZSvSPKaJL+a5LXtGT4311oXa61zpZQrk+xO\n8uEJLnNbWFWL15VSvrWU8qz26qNJXllrfWGaJ6xfWUq5yZPT8VpVozck+ZZSyjPThPAfaG/2/yX5\n9iQ/237uSIsRW1WXf1hK+bYk55L8eppXVb80yRe2139J2wrlvjNGq2r0+lLKm5OcTrND7meS/GKt\n9e+nCYBfXUp5nlao0VvjOcC3llJuTpZ2LD6R5NPSHAHBhKxRpzen2bX4nDR/eH9trfX2NMepfHEp\n5dl+x43XGjX6f5Pcl+RdSX6hNGea3pymLfdgKWVmQkvdNkopV5ZSfiXN//n3ty+apNZ6X5L/leSH\nVtz8W5LcXEp5hvvOePWrU5KVu0l/KM2LkM9Z9bVeiByRAXU53+YE86WUPWlygj+a2ELZNAJGNsvf\nSfLv2m3O/yzN+UuvWXH9TUmO11ofKqU8pZTyORNY43axuha7kvQOnv6jWuud7e3+d5JHkhgkMn6r\na7Q7TXh1JsnnlVL+W5JvSPI/ktzffo06jd5adfm/a62/nuSNtda/bP9g+EiaoGR+ckvdttaq0del\nCeNn0g54qbWeTBPSXzmhdW43az3uvLZ3Za31z5KcTfIPJrM8WqvrtDPJm2qtjye5NcuPN3+Z5P1p\n7l+M11rPp19fa31Tmt9131Vr/Udp7k97a62nJrfU7aG9f/y3JJ+U5E/SPN70fH2SV5ZSnt9+firN\nZoq5sS6SgXXqhb211vcm+dM0z7X/Vq9bRRg8Ouvcf3quTLKn1vpXpZSnllL+3jjXyOYSMPKk9M7o\nSfMK3quTpNb6wTRPTG8spbykvf7GJNOllDcl+a9Jrhv3Wi93A2rxgSQ3lIunDn5Fmq3oj45rjdvd\nOveXm9OcEfPuJH9Ua31urfUVSV7mlfDRGlCX9yZ5RinlRav+iHtDkr1JHh/rQrexATX6gyTPTnJ9\nmvb1/7OU8gXt7tMXpXkhhRFZ53HnxlLKi9vblTQ7sPbYKTJ+A+r0viRPL6V8cpoXtH6qlHJFkm9L\ns8PnExNY7ra0zuPQraWUl9Ra/7rW+u72dq9K8rHxr3R7WfH76udrrceS/FiaDoanJ0mt9Yk0xwm8\nuZTyhjT3nWenaZ9mTAbVqT0Pc3rFfewH0+w0/f00g8jsYByRDdSl1511c5J9pZR/kuY8xmsmsFw2\niYCRS1JKeXa7jTlJsqL17L1Jpkopt7effzTNYa29IPHlabakPyvJ51eTPp+0IWpxQ/t1ry+lfDTJ\nM9K0Q50Z47K3lUuo0Z+n+UNuX5Jvr7V+24pv87Raq4E8m+gS7zsPZvm+8/dKKR9O80Toa2utZ8e4\n7G3lEmv08SSfUWv9+TRnZr44ydOSvLrWKiDZREM87lzf3q6m+UPulBdLRu8S6/SJJH+r1voDSf4q\nya8k+eQkX1JrfXiMy95Whn0+XUq5vZTy+0luSfP7jk20Rl16O9/Otu//OMnvpJlK3LvNW9OEVp+R\n5OlJvrTWenyc695uLrVOtdaFNtA6nOStaV5QeW6t9btXfj1PzhB16XVnfXqSz0qTE7yq1up32xYm\nYGRDSimfWkr5gyTfnRWDWla8GnRXmpDky0op0+0fddcleWZ7/a8meXmt9RtrrQ+McemXnSdRi2e0\n138kTbvnG2qtR8a49G1jiBp9PE2I9fT2zNKlV1q1P22eIe87h7N837kzyf9Ta329+85oDFmja9P8\nsZ3aTPL8llrrG2szXIxN8CQed25a8W3+ea317WNa8rb0JH7H3dZe/1VJXlNr/fJa64NjXPq2sQmP\nQ/cl+bpa6xfXWo+Ob+WXtwF1KStq0/PWJM9qw5TDpZRntY89/7R9bu2xZ0SeRJ2uKaU8I81Z9G+q\ntX6h33Gb50nef65OMxfgpbXWr3f/2foEjGzUtyX5lfYJzQNJMxlyxSuuJ5K8J815Pd9XStmZ5jyF\nh5Ok1npHrfV3J7Duy9GwtTiaJLXWP621vm8C695OhqnRwbTt6r1XWiew7svdk73v/Fmt9f0TWPd2\nMmyNHul9A/edkRi2LktHcNRanUk2esPW6UjS1KhtY2N0nuzj0F/XWv98Auu+3PWrS213vu0tpfTO\n+P3rJP8lyZ+labPd316+MKG1byfD1uk9Sa5sn1//9cRWf/kati53pNlc8dFa63smtno2lYCRgUop\nU6WZBHmy1vqD7WUvL6UcTFLaz787yS8mOZ7kzWmeCL2n/fznJrLwy5BadJ8adZO6dJ8adZO6bA3q\n1H1q1E0brMtbkvynNMejpJTy5WkG7nxfkk+ptX5oIovfRtSpmzahLs9Rl8vPjvVvwnZTSnlhksdq\nrXe2rzocTfKSUsqrk3x1muEGR5L871LKL6X5hfEttda726//yiQztdYTE/onXDbUovvUqJvUpfvU\nqJvUZWtQp+5To24aoi7PTPIve3VJcm+Sl1XnY4+UOnWTurCuWqs3b6m1Jk2L5n9N057xbWme1PSu\n+9YkH0ryhe3ntyd5R5LPWnGbqUn/Gy6XN7Xo/psadfNNXbr/pkbdfFOXrfGmTt1/U6Nuvm1CXaYn\n/W/YDm/q1M03dfG20Tct0qw0k+RdSd7Ufnz7iut+K81h7Ve1n38wyUNJzibNFunq3KvNpBbdp0bd\npC7dp0bdpC5bgzp1nxp105OtizMWx0Odukld2BAB4zZXSnl9KeWlpZT9tTmU9SeT/HKaXwifWUq5\nMUlqrR9J8i+S/ONSyqEkr03yKVkeSuHJ0JOkFt2nRt2kLt2nRt2kLluDOnWfGnWTumwN6tRN6sIw\nSm22rLKNlFJKkuvSHCS9mORjaV6J+MZa69H2Ni9K8veTfLDW+gsrvvab0pwRc0uSf1pr/YsxL/+y\nohbdp0bdpC7dp0bdpC5bgzp1nxp1k7psDerUTerCk2XIyzZTmpHxC6WUfUkeqLW+tpQyneQH07wq\n8SVJUmt9bynlBUluK6UcSLJYaz1Ra/2BUsrOWuv85P4Vlwe16D416iZ16T416iZ12RrUqfvUqJvU\nZWtQp25SFzaDFultopQyXUr5niTfU0p5aZLbkiwkSW3ORPjGJJ/dXtfztiSzSd6d5O5Syg3t7f3S\neBLUovvUqJvUpfvUqJvUZWtQp+5To25Sl61BnbpJXdhMAsZtoP1l8CdJrkxyd5K3JJlP8n+0rz70\nzkb4zvat51VJvi7Jh5N8Sq31b8a36suTWnSfGnWTunSfGnWTumwN6tR9atRN6rI1qFM3qQubTYv0\n9rCY5Pt7ZySUUv52kmck+fYkP57kM0opU0l+PcnnlFJuqrXel+YA18+ttd4xmWVfltSi+9Som9Sl\n+9Som9Rla1Cn7lOjblKXrUGdukld2FR2MG4Pf5Lkl9szFJLkvUmeVmv92STTpZQ3ta9MPCXJQvtL\nI7XWd/ilsenUovvUqJvUpfvUqJvUZWtQp+5To25Sl61BnbpJXdhUAsZtoNZ6utZ6rj1DIUlenuSR\n9uN/lOSTSim/leSXknwoWZogxSZTi+5To25Sl+5To25Sl61BnbpPjbpJXbYGdeomdWGzaZHeRtpX\nJmqSw0l+o734RJJvTfKcJPfWWh9Iklprncgitwm16D416iZ16T416iZ12RrUqfvUqJvUZWtQp25S\nFzaLHYzby2KSnUmOJvnU9tWIN6cZLf8HvV8ajIVadJ8adZO6dJ8adZO6bA3q1H1q1E3qsjWoUzep\nC5uiCKC3l1LKC5O8r337mVrrT094SduWWnSfGnWTunSfGnWTumwN6tR9atRN6rI1qFM3qQubQcC4\nzZRSnpLkdUl+oNZ6btLr2c7UovvUqJvUpfvUqJvUZWtQp+5To25Sl61BnbpJXdgMAkYAAAAAYGjO\nYAQAAAAAhiZgBAAAAACGJmAEAAAAAIYmYAQAAAAAhiZgBAAAAACGJmAEAGDkSikLpZQ/LaX8eSnl\nw6WUf1ZKGfhctJRyUynlNeNaIwAAwxEwAgAwDmdqrc+ttT47ycuTfF6S71jna25KImAEAOi4Umud\n9BoAALjMlVJO1lpnV3x+c5I/TnIoydOT/EKSmfbqr6+1vq+U8oEkn5Tk3iQ/l+SHk3xvkpcl2Z3k\nR2utPzG2fwQAAGsSMAIAMHKrA8b2smNJbktyIslirfVsKeWWJL9Ua31eKeVlSf55rfXV7e3fmOTa\nWut3l1J2J3lvki+ttd471n8MAAAX2DHpBQAAsO3tTPLWUspzkywkubXP7V6R5FNLKf9X+/mBJLek\n2eEIAMCECBgBABi7tkV6IcnDac5iPJLk09KcEX6235cleVOt9V1jWSQAABtiyAsAAGNVSrkmyX9M\n8tbanNdzIMmDtdbFJK9LMt3e9ESSfSu+9F1JvraUsrP9PreWUmYCAMBE2cEIAMA47C2l/Gmadujz\naYa6/EB73Y8l+dVSyuuTvDPJqfbyjyRZKKV8OMnPJvmhNJOlP1RKKUkeSfJF4/oHAACwNkNeAAAA\nAIChaZEGAAAAAIYmYAQAAAAAhiZgBAAAAACGJmAEAAAAAIYmYAQAAAAAhiZgBAAAAACGJmAEAAAA\nAIYmYAQAAAAAhvb/A2PvW3aS8r9GAAAAAElFTkSuQmCC\n", - "text/plain": [ - "" - ] - }, - "metadata": {}, - "output_type": "display_data" - } - ], - "source": [ - "# Create a figure\n", - "fig = plt.figure()\n", - "\n", - "ax1 = fig.add_subplot(111, ylabel='Portfolio value in $')\n", - "\n", - "# Plot the equity curve in dollars\n", - "portfolio['total'].plot(ax=ax1, lw=2.)\n", - "\n", - "ax1.plot(portfolio.loc[signals.positions == 1.0].index, \n", - " portfolio.total[signals.positions == 1.0],\n", - " '^', markersize=10, color='m')\n", - "ax1.plot(portfolio.loc[signals.positions == -1.0].index, \n", - " portfolio.total[signals.positions == -1.0],\n", - " 'v', markersize=10, color='k')\n", - "\n", - "# Show the plot\n", - "plt.show()" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "The graph above shows the performance of $100,000 using the strategy mentioned above." - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "## Use Past Performance to Predict the Future\n", - "\n", - "To set up our simulation, we need to estimate the expected level of return (mu) and volatility (vol) of the stock in question. This data can be estimated from historic prices, with the simplest methods just assuming past mean return and volatility levels will continue into the future. One could also adjust historic data to account for investor views or market regime changes etc, however to keep things simple and concentrate on the code we will just set simple return and volatility levels based on past price data." - ] - }, - { - "cell_type": "code", - "execution_count": 19, - "metadata": {}, - "outputs": [ - { - "name": "stdout", - "output_type": "stream", - "text": [ - "CAGR = 18.54%\n", - "Annual Volatility = 29.18%\n" - ] - } - ], - "source": [ - "#calculate the compound annual growth rate (CAGR) which \n", - "#will give us our mean return input (mu) \n", - "days = (stock_df.index[-1] - stock_df.index[0]).days\n", - "cagr = ((((stock_df['Adj Close'][-1]) / stock_df['Adj Close'][1])) ** (365.0/days)) - 1\n", - "print ('CAGR =',str(round(cagr,4)*100)+\"%\")\n", - "mu = cagr\n", - " \n", - "#create a series of percentage returns and calculate \n", - "#the annual volatility of returns. Generally, the higher the volatility, \n", - "#the riskier the investment in that stock, which results in investing in one over another.\n", - "stock_df['Returns'] = stock_df['Adj Close'].pct_change()\n", - "vol = stock_df['Returns'].std()*sqrt(252)\n", - "print (\"Annual Volatility =\",str(round(vol,4)*100)+\"%\")\n", - " " - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "Now we know our mean return input (mu) which is the calculated CAGR and annual volatility of returns – the code to actually run the Monte Carlo simulation is as follows:" - ] - }, - { - "cell_type": "code", - "execution_count": 168, - "metadata": {}, - "outputs": [ - { - "data": { - "image/png": "iVBORw0KGgoAAAANSUhEUgAABP0AAAiKCAYAAADiJHFgAAAABHNCSVQICAgIfAhkiAAAAAlwSFlz\nAAALEgAACxIB0t1+/AAAIABJREFUeJzs3XuQnelB3/nf05fT17lKM567JzM2NqxZOyaYOxhiwCEE\nQxZCoFiwCSEbtnYDyRJYajF2oLYSYLdquQRS3O1AMGAqJgbW3LHBgLFjY8ZZPOOxZ0YzGs9IGslS\nH/W5dPe7f5xzpJZ0utVXqfXo86lSteac9/J093GV6uvneZ/SNE0AAAAAgHpMXO0BAAAAAAB7S/QD\nAAAAgMqIfgAAAABQGdEPAAAAACoj+gEAAABAZUQ/AAAAAKiM6AcAcA0opby2lNKUUl57tccyUkp5\nw3BMr7zaY1mvlPLzw3Hdv8/3eayU8th+3gMAYKdEPwDgnGEoaUopa6WUBzc57g/XHfvaKzjE0f3/\nqJTSXOF7vriU8qOllIdKKZ8opfRKKUdLKb9ZSvknpZSZKzme/VBKmS2l/G+llL9Y9z0+XUp5Xynl\nx0opX3C1x3glXY3PGQDAXpm62gMAAA6clQz+jfBPknzPxW+WUl6Y5JXrjqteKeX1Sb4vg//D9M+S\n/EKSpSTPy+Bn8dNJ/nmSv3OVhrhrpZTFJH+c5OVJPp7krcOvi0lemuRbk9w8PGbkx5L8cpInruhg\nD46/e7UHAACwkeviH+oAwLY8k+TpJK8rpby+aZqVi97/luHX/5Lkq67oyK6CUsr3JHljkiNJvqZp\nmr8Yc8yXJ/lXV3pse+zbMwh+v5PkHzRN01v/ZinlliSfvP61pmmOJzl+xUZ4wDRN8+jVHgMAwEYs\n7wUAxvmpJHck+fL1L5ZSppO8Nsm7k/y3jU4upbywlPKmUspT65bBvmk4S/DiY889F66U8tWllPeU\nUs6WUp4rpfxyKeXudcfeP1xu+QXD/27W/fmji657z3BJ6kdLKd1SyolSym+UUj59qz+E4TPh3pCk\nn+TLxgW/JGma5u1JXn3Rua8tpbx1eP/lUsrpUsqfllK+YYN7/dHw+2iVUl5fSvnwcNw/v4Vxftrw\nXs8Oz3m8lPLvSyl3bvV7TfLZw68/cXHwG36PJ5umefdF9x37TL/R76OU8rxSys+WUp4ppbRLKe8u\npXze8JiFUsoPDcfaLaV8qJTyNWO+tw2fGzj6PGzlZzQ8fku/k61+zsoGz/QrpcyUUr67lPLXw8/y\n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\nCotFpS5c3NyK22SZh+utKIr8WDb3Gum0kmNjLX0+OTomf2VFlae+Lqk3m3vrjGRSmQcf1MYHPqhg\nfV3Tv/arSubzMixLQ9/2RhU/+lGFlUrP7tdMuVhr741hpl+10q/9MDHwSyzx2AOhHwAAAAAgdnb5\nuqSdN/fWdW+mX3tBgWXVKv2O8Ey/+hKP1MULSo7UQr+13Sv9HGdBkmJp77VOn5ZhGC19Pjk2qmBt\nTZWvfV3JkRGZp0519D77lX1htcX31C/8wpYAMv+Wtyi0bZU+9aleXa2pSm2mX39X+pXa/l0+6gj9\nAAAAAACxa7a5t86MPfTbUDI52PYMsEal3xFu73WvVf++0hcvyhyrV/o1C/0Wq59PdzZk8+bnWm7t\nlSRzbFwKApU++w/KPPRgy2FhXMZ+7H/QmV/7VY18z3dveX3g5S9XcmREGx/8UI9u1lx9pl8mlpl+\nhc5U+gUlJZO09zZD6AcAAAAAiF3ZviZJymbv2fUzyWROfqyLPDbanucnVSsSDSMp7wi39zpXrsjI\n5WROTt7R3ttK6Nfh7b1z8y1v7pXUaAP25+aV7mFrb501OaH8m9607XXDNDX0pjep8PGP92WLb7lY\nkJlKy0qlO/7scGNDyU5U+vlFmbT3NkXoBwAAAACInW1fUzp9WslkZtfPJM24Z/oVZLU5z0+SDMOQ\naQ4f6Zl+7pWrSp8/LyORkJHNykinmy7yqLb3JpSyTnTsDqHryr99u+XNvZIaVYmSlHmwd0s8WpF/\ny5sV2baKjz3W66tsUykUYqnyi6JIQaGgREcq/YpK0t7bFKEfAAAAACB2dvlq09ZeKf6Zfp6/0fYS\njzrTHDra7b1Xrih18aKkasiZHB1tusjDcRaVTp1UImF27A7+YrV60NpPpd/4eOPnzEP9HfrlHn1U\nybGxvtziWy6sKxvDEo/ItqUg6FClX0km7b1NEfoBAAAAAGIVhp5Kpef3DP3M2vbeKApjuUfgFzvS\n3itJljl8ZBd5hOWyvLk5pS5u/n1VQ7/m7b2d39w7L0myTrc+J7Deimzkckqd372VvB9UW3y/TcW/\n/4RCO74K14MoFwvKxjTPT5ISHXh2EJSo9NsDoR8AAAAAIFZr648rCIoaG311088lkzlJkYKgHMs9\nOlrpZx3d9l732jVJ1SUedeboyB6h30Ln5/ndulU9e7L155q10C9z6ZKMRP9HHvk3v0VRudx3Lb7V\n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\nByq7dCl+7z1Mubn4PvdsizfG2kOm1aJwlbpXJboeSfSTkJCQkOizDPDSU2e2klfWerdMV6AZEkFd\n+vE2PfJ0sXFYKysxHk3t1lpawlJZiWHXLhyvnNQksVGm06FPSKByw/peN/yvXPczDlFRKNswAc8o\nsnUo3RUfhPw8IcxZq+SzuTG4aFXMXpzEscKqdvc0W6z8cbyYhDBPu5IsG9DFxCCY69GWZFJWUMO4\naX5UfvsNjlOn4HLzzdSlpxMdp8NoMHF0fQ5RRjmpMjNpRU27ThUqOSOuCMBqEek3yBUn97Njd0aT\nhdT8KoYHtD/aa9ixA7GmBtc77yDgvXcxFxSQu+ABrK28HmsPHiT3wYdQDxyI/6JFLY72NtYoUzDK\nZ1Qz0Q9sgrf7nLvo/+knmE8XcfK2mRjTjmGxWli4ZSGualfevvxtjKvXkfvgQ2iGDMFjwYJ2n09L\njO83nn2n91FV3/7vtScpMBRwuOQwO/N3silrE6vSV5FckIzJ0tR/7Ptj3zPnlzmo5WruG3EfaWVp\nrDq+qsmaOksdX6d+zTj/ccwYNAN/vT8/HG89gfdg8UGbn18rr12ZRoPrLbfg8+9/E/T1VwxKTqLf\ne+9Sn3mSk7fNpP7kyQt+/j3NLWG38PHkj4n2ie7U+cM8hiETZI2+fk5OTuj1+iaiX2pqKuV+5Zyo\nPMGdEXe2eB0nJycGDx7Mvn37mo0Gn0tKSgoqlYoJEyb0ynjspYQgCISGhhIVFUVWVhZVVX3rb8Gl\nhNVqJSMjg5CQELv/N3bkf6hEc4ypqZQsWYrz9L+0GdpxMZP/9NMcGzOW9Msv58TUq8i4/gayZt9F\n+fffYzUae7s8iTaQRD8JCQkJiT5LY4JvUfd+OdCEh4PJRN3x1j3HtLExAL0y4lu9dSuYzeivuKLZ\nMaerpmIpKqZmz54er6uBuuPHqTt2DKer2vboyiw24KCU4+3Y8uiKt5OGz+fGIJcJ3PrRTg6farvj\nb39OOVVGM+PDOtZ9o42OBkFggD6f8HhfnA5swFpdjce996JPsPl/aTL2ETzcg0Nb8xhpVKBXyXlr\nU3Pj/6Hj/fEd4EzUlMAmjx/Nr8RsFRner/0Qj6oNG5E5OaGLicFhxAj8XnmZ2j17yH/qqWZ+bvVZ\nWeTMm4/C1ZX+H32IXN9+h2Osbyx51XnkVOW0eFw3ejSBX3wOQNYdd7B/41fkVefxcNRDiIuXk//k\n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\n7yF46lTkffUVzt13H1wFBdV+3rIrERKtFpounb0YJRFd7Tyy91cUxR0AdpT8+RSAHhWMsQKY6In1\niIiIiIiIiK5mglSKiLlzoGzZEmnPPYfM115D1P/+V+VzoijCnJgIbZ/eEOTyeoiUiK5W3tjpR0RE\nRERERETVEDhhPIKmTEb+jythTU6ucrz9xAk409Oh7d+/HqIjoqsZk35EREREREREPhQ6cyYkWi0y\nFy6scqx5VyIAQHf99d4Oi4iuckz6EREREREREfmQLCgIoQ88AMuuRFj27r3iWHNiIpQtW0IeGVlP\n0RHR1YpJPyIiIiIiIiIfC7rjdsijo5Hx+kKIbneFY1xmCwoPHeLRXiKqFib9iIiIiIiIiHxMolQi\n7LHHYEtKgnHNmgrHFB7YDzgc0F3PpB8RVY1JPyIiIiIiIqIGQD9yBFTt2yNr8VtwFxWVu2/elQiJ\nRgNNly4+iI6IrjZM+hERERERERE1AIJEgvA5s+FMT0fu8uVl7omiCHPiLmh694agUPgoQiK6mjDp\nR0RERERERNRAaHv0QMCQG5H1zhLk//hj6XX7qVNwXkyDjvX8iKiamPQjIiIiIiIiakCiXnkV2t69\nkfb0M8ha8m7xLr9diQDAen5EVG0yXwdARERERERERP+Q6rRo9P57SHv2OWQvWQJnRjrsZ89B0aI5\n5NHRvg6PiK4STPoRERERERERNTCCXI6oV16GLCoSOe9/AAAIvuce3wZFRFcVHu8lIiIiIiIiaoAE\nQUD4I48gcv58SHQ66EeN9HVIRHQV4U4/IiIiIiIiogYs6LZJCLx1IgQJ9+0QUfXxJwYRERERERFR\nA8eEHxHVFH9qEBERERERERER+Rkm/YiIiIiIiIiIiPwMk35ERERERERERER+hkk/IiIiIiIiIiIi\nP8OkHxERERERERERkZ9h0o+IiIiIiIiIiMjPMOlHRERERERERETkZ5j0IyIiIiIiIiIi8jNM+hER\nEREREREREfkZJv2IiIiIiIiIiIj8DJN+REREREREREREfoZJPyIiIiIiIiIiIj/DpB8RERERERER\nEZGfYdKPiIiIiIiIiIjIzzDpR0RERERERERE5GeY9CMiIiIiIiIiIvIzTPoRERERERERERH5GSb9\niIiIiIiIiIiI/AyTfkRERERERERERH6GST8iIiIiIiIiIiI/w6QfERERERERERGRn2HSj4iIiIiI\niIiIyM8w6UdERERERERERORnmPQjIiIiIiIiIiLyM0z6ERERERERERER+Rkm/YiIiIiIiIiIiPwM\nk35ERERERERERER+hkk/IiIiIiIiIiIiP8OkHxERERERERERkZ9h0o+IiIiIiIiIiMjPMOlHRERE\nRERERETkZ5j0IyIiIiIiIiIi8jNM+hEREREREREREfkZJv2IiIiIiIiIiIj8DJN+RERERERERERE\nfoZJPyIiIiIiIiIiIj/DpB8REREREREREZGfYdKPiIiIiIiIiIjIzzDpR0RERERERERE5GeY9CMi\nIiIiIiIiIvIzTPoRERERERERERH5GSb9iIiIiIiIiIiI/AyTfkRERERERERERH6GST8iIiIiIiIi\nIiI/w6QfERERERERERGRn2HSj4iIiIiIiIiIyM8w6UdERERERERERORnmPQjIiIiIiIiIiLyM0z6\nERERERERERER+Rkm/YiIiIiIiIiIiPwMk35ERERERERERER+hkk/IiIiIiIiIiIiP8OkH/1/e/cT\nclldxgH8+6DVooIKYwiTkpjNtJkkQijCNqVupjahi5IIbDFCQRtzU8s2FQQlFA0aVCKU5EL6gwSt\nKi2GdBRpKCWHySmCCoJCe1qcI12mudO8w9xzen/v5wMv995z3xeexfvluXy55xwAAAAABqP0AwAA\nAIDBKP0AAAAAYDBKPwAAAAAYjNIPAAAAAAaj9AMAAACAwSj9AAAAAGAwSj8AAAAAGIzSDwAAAAAG\no/QDAAAAgMEo/QAAAABgMEo/AAAAABiM0g8AAAAABqP0AwAAAIDBKP0AAAAAYDBKPwAAAAAYjNIP\nAAAAAAaj9AMAAACAwSj9AAAAAGAwSj8AAAAAGIzSDwAAAAAGo/QDAAAAgMEo/QAAAABgMEo/AAAA\nABiM0g8AAAAABqP0AwAAAIDBKP0AAAAAYDBKPwAAAAAYjNIPAAAAAAaj9AMAAACAwSj9AAAAAGAw\nSj8AAAAAGEx199ozbFVVf0zy3Npz7NA1Sf609hBwwMgdLEvmYHlyB8uSOViWzCVv6e43/q9f+r8u\n/UZXVY939zvXngMOErmDZckcLE/uYFkyB8uSuUvn9F4AAAAAGIzSDwAAAAAGo/Rb19fWHgAOILmD\nZckcLE/uYFkyB8uSuUvkmn4AAAAAMBjf9AMAAACAwSj9VlJVN1fVM1V1uqruXnseGFFVPVtVT1TV\nyap6fD72hqr6cVX9Zn58/dpzwn5WVSeq6lxVPblx7II5q8mX593366q6Yb3JYX/akrnPVdWZed+d\nrKpbN977zJy5Z6rqA+tMDftXVV1XVT+pqqeq6lRVfXI+btfBjlwkd/bdHin9VlBVVyX5SpJbkhxJ\ncntVHVl3KhjW+7r76MYt3e9O8mh3H07y6PwauHz3Jbn5vGPbcnZLksPzz51J7l1oRhjJffnvzCXJ\nl+Z9d7S7H0mS+fPlbUnePv/NV+fPocClezHJp7v7SJIbkxyfs2XXwe5sy11i3+2J0m8d70pyurt/\n293/TPJAkmMrzwQHxbEk98/P70/ywRVngX2vu3+a5M/nHd6Ws2NJvtmTnyV5XVW9aZlJYQxbMrfN\nsSQPdPc/uvt3SU5n+hwKXKLuPtvdv5qf/y3J00mujV0HO3OR3G1j322h9FvHtUl+v/H6+Vz8Hxi4\nPJ3kR1X1y6q6cz52qLvPzs//kOTQOqPB0LblzP6D3blrPpXwxMalK2QOrqCqemuSdyT5eew6WMR5\nuUvsuz1R+gEje09335DpNIvjVfXezTd7un25W5jDDskZLOLeJG9LcjTJ2SRfWHccGE9VvSbJd5N8\nqrv/uvmeXQe7cYHc2Xd7pPRbx5kk1228fvN8DLiCuvvM/HguyUOZvuL9wsunWMyP59abEIa1LWf2\nH+xAd7/Q3S9197+SfD3/OaVJ5uAKqKpXZCoevtXd35sP23WwQxfKnX23d0q/dTyW5HBVXV9Vr8x0\nwcmHV54JhlJVr66q1778PMn7kzyZKWt3zL92R5LvrzMhDG1bzh5O8tH5zoY3JvnLxqlRwGU673ph\nH8q075Ipc7dV1auq6vpMNxb4xdLzwX5WVZXkG0me7u4vbrxl18GObMudfbd3V689wEHU3S9W1V1J\nfpjkqiQnuvvUymPBaA4leWjaF7k6ybe7+wdV9ViSB6vq40meS/LhFWeEfa+qvpPkpiTXVNXzST6b\n5PO5cM4eSXJrposr/z3JxxYfGPa5LZm7qaqOZjq98Nkkn0iS7j5VVQ8meSrTnRCPd/dLa8wN+9i7\nk3wkyRNVdXI+dk/sOtilbbm73b7bm5ouPwAAAAAAjMLpvQAAAAAwGKUfAAAAAAxG6QcAAAAAg1H6\nAQAAAMBglH4AAAAAMBilHwAAAAAMRukHAAAAAINR+gEAAADAYP4NH98j66YXtYsAAAAASUVORK5C\nYII=\n", - "text/plain": [ - "" - ] - }, - "metadata": {}, - "output_type": "display_data" - }, - { - "data": { - "image/png": "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\nbKbzEO5WVUev8aZLc7PaHNxq2XZLkbW3RwQekumlhbOq6pF7edskyRjj8iT/L9Oc/XBVHZYpNr6R\n5IUr3OSXMx1lOmWM8ZAxxi+OMX5jTG+xfuNe7Hopjlb6B9yRKyxbmqtXjzFqN5c7Lbt/Lxlj3CfJ\n0Ul+KMmfZpq3N1TVzQMHKLEBk6V/Ff7A8hVVdXim8yq6vGf+er19zE+W99/AfX01U2wk00mxS67N\nfzzasmhpfA9evqKqjsx0hOTfk1w8L37X/PXh8/jXZIzxvkzzf1WSv6qqR6/1tsssfWDXEzN9gNnt\nk5wzVn5Hy3fMX1+zwrrrPRZ2Y+lzS263wrqdKyz7YJIvJbnf/E6ZvTLG+MIY4+wxxhOS/Hmmczw6\nH6OwLmIDJu/MdCLmg6rq5GXrnpK9P19jb/xDpneOPKSqHrFs3anZi/M1quomVfUbtezjyBc8LdOh\n+Q+NMf51Yfm/JtleVcvPV0imt2R+PckvzC87LPrvSb4tycvG/FbeMcYFmebz7pnPm1g2xpuv9lkY\nY4yLM72c8pkkr66qH1vlfuzO6zKdePnwJL85L/uTVbbdNX998LIxPjILbztdg/MzndD5k4tzOB9t\nOH35xvPLO3+Q5LZJnrfSfFTVravquxe+f8jyz96Yv7/F/O0B9Um2sMg5GxxUqurZu1n912OM9+5m\n/arGGKOqnpDp0PlrqmrxczZOyPSR3yfuy89ew76/UVVPnPdxVlW9JlN8fG+mf5m/LtPbOtdyHsO3\nZDpB8lk1/V8h7830r+6jM73j5q6ZPt9i+YdAvTnTSaSvr6q3ZzoCctEY42/HGLuq6mmZPuPhwqp6\nVZIrM/3L/36Z3jK8PCoel+ldJr9TVT8yX68kd0rysEwnk+5aZT4uqarvz3RC6sur6oZjjD9bw31f\nuv21VfXiTKFx/0zn25y1yubPT/LTmY6kvHre9nsyhcqrMn0uylr2eWlVvTLJjyd5T1W9LtN5II/M\ndCLn3Va42bMy/Rn/lyQnV9VbMp3Eemymebp/pnldOmL0t0muqqp3ZZq7w5N8f6YjJ+/O9LkmcGDa\n7LfDuLis5ZI9v/V1ZPp47qXtn51V3i6aZMe87iUrrLtXpif9L82XN2V6Ql3x52X3b33d233fJ1Ps\nLN/30ttB776GeTosUxT9jyTnZXry+vr8896X6TMddqxwu5tk+uCtyzKdpHm9MWaKhHMyxctXM8XY\n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\n3B2r2XHa2Zs9hC1ho+Zx1+knbcjP2d/Wcv836r7tz30Bm2ufj2xU1Q8l+ewY44LdbTfGOGOMsXOM\nsXP79u37ujsA4CC1npdRHpDkUVW1K8krkxxfVS/bkFEBAFvGPsfGGOMZY4zbjjF2JHlskreMMR63\nYSMDALYEn7MBALRa7wmiSZIxxrlJzt2InwUAbC2ObAAArcQGANBKbAAArcQGANBKbAAArcQGANBK\nbAAArcQGANBKbAAArcQGANBKbAAArcQGANBKbAAArcQGANBKbAAArcQGANBKbAAArcQGANBKbAAA\nrcQGANBKbAAArcQGANBKbAAArcQGANBKbAAArcQGANBKbAAArcQGANBKbAAArcQGANBKbAAArcQG\nANBKbAAArcQGANBKbAAArcQGANBKbAAArcQGANBKbAAArcQGANBKbAAArcQGANBKbAAArcQGANBK\nbAAArbZt9gD2px2nnb3HbXadftJBt69D3VrmOtm/871Rf/4H4uPoQBzT/nSo33/YF45sAACtxAYA\n0EpsAACtxAYA0EpsAACtxAYA0EpsAACtxAYA0EpsAACtxAYA0EpsAACtxAYA0EpsAACtxAYA0Eps\nAACtxAYA0EpsAACtxAYA0EpsAACtxAYA0EpsAACtxAYA0EpsAACtxAYA0EpsAACtxAYA0EpsAACt\nxAYA0EpsAACtxAYA0EpsAACtxAYA0EpsAACtxAYA0EpsAACtxAYA0EpsAACtxAYA0EpsAACtxAYA\n0EpsAACtxAYA0EpsAACtxAYA0EpsAACtxAYA0EpsAACtxAYA0GqfY6OqbldVb62qD1XVB6vqqRs5\nMABga9i2jttek+SXxhgXVtW3Jrmgqt44xvjQBo0NANgC9vnIxhjj02OMC+frX0pycZLbbNTAAICt\nYT1HNq5TVTuS3CPJeSusOzXJqUly3HHHbcTuWu047ew9brPr9JP2w0gmaxnPwWor37cD0f6c7wNt\nX2v9nfWY5GBzoD1nrWbdJ4hW1U2TvCbJ08YYX1y+foxxxhhj5xhj5/bt29e7OwDgILOu2Kiqb8kU\nGi8fY7x2Y4YEAGwl63k3SiV5UZKLxxj/c+OGBABsJes5svGAJD+V5Piqeu98eeQGjQsA2CL2+QTR\nMcY7ktQGjgUA2IJ8gigA0EpsAACtxAYA0EpsAACtxAYA0EpsAACtxAYA0EpsAACtxAYA0EpsAACt\n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\n", - "text/plain": [ - "" - ] - }, - "metadata": {}, - "output_type": "display_data" - } - ], - "source": [ - " #set up empty list to hold our ending values for each simulated price series\n", - "result = []\n", - " \n", - "#Define Variables\n", - "start_price = stock_df['Adj Close'][-1] #starting stock price (i.e. last available real stock price)\n", - "trading_days = 252 #Number of trading days\n", - "\n", - " \n", - "#choose number of runs to simulate - I have chosen 1,00\n", - "for i in range(100):\n", - " #create list of daily returns using random normal distribution\n", - " daily_returns=np.random.normal(mu/trading_days,vol/sqrt(trading_days),trading_days)+1\n", - " \n", - " #set starting price and create price series generated by above random daily returns\n", - " price_list = [start_price]\n", - " \n", - " for x in daily_returns:\n", - " price_list.append(price_list[-1]*x)\n", - " \n", - " #plot data from each individual run which we will plot at the end\n", - " plt.plot(price_list)\n", - " \n", - " #append the ending value of each simulated run to the empty list we created at the beginning\n", - " result.append(price_list[-1])\n", - "\n", - "plt.rcParams[\"figure.figsize\"] = (9,10) \n", - "plt.suptitle('Monte Carlo Simulation', fontsize=20)\n", - "#show the plot of multiple price series created above\n", - "plt.show()\n", - " \n", - "#create histogram of ending stock values for our mutliple simulations\n", - "plt.suptitle('Ending Stock Values', fontsize=20)\n", - "plt.hist(result,bins=50)\n", - "\n", - "plt.show()" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "## Evaluate Performance with a Monte Carlo Simulation\n", - "\n", - "The problem that arises with a backtest is that its limited to what has already happened. Many strategies that perform well in backtests can perform poorly in future trades. A Monte Carlo simulation can introduce randomness to the stock movement to predict future performance under the assumption that future trades will perform more or less in the same range as previous trades but in a random order. We will run multiple simulations and look for trends that emerge.\n", - "\n", - "In this section we will use the strategy we used above with Monte Carlo simulation results. We will also include all the code we need in order to run the code on Spot instances." - ] - }, - { - "cell_type": "code", - "execution_count": 173, - "metadata": {}, - "outputs": [ - { - "data": { - "image/png": "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\nDV+1vAjfVFOKnw/k2CTmTWQ83gH8lZn9Ej+ZWy2+yXEFfuTM1ycxb0MVAofN7Ff4ZtY4vpn9Dfjm\nwU/k8mBq4hGRvGdmH8e30y/H9+PoxrfZf8M5l2lYpciUEIzs/At8f6rUhJwH8P08vuyGzKw7mYIR\nUV/Fd9Keh/+B0IzvrP4l51y20yNkdzwFKCIiIpJv1AdFRERE8o4CFBEREck7ClBEREQk7yhAERER\nkbyjAEVERETyjgIUERERyTsKUERERCTvKEARERGRvKMARURERPKOAhQRERHJOwpQREREJO8oQBER\nEZG8owBFRERE8o4CFBEREck7ClBEREQk7yhAERERkbyjAEVERETyjgIUERERyTsKUERERCTvKEAR\nERGRvKMARURERPKOAhQRERHJOwpQREREJO8oQBEREZG8owBFRERE8o4CFBEREck7ClBEREQk7yhA\nERERkbyjAEVERETyjgIUERERyTsKUERERCTvKEARERGRvKMARURERPKOAhQRERHJOwpQREREJO8o\nQBEREZG8owBFRERE8k5ksjNwNvX19W7RokWTnQ0RERHJkW3btjU75xpGWm/EAMXMbgduARqdcxcG\nae8CPg+sAq5wzm1NW/9PgY8ACeBTzrmHgvSbgK8BYeDbzrkvjXTsRYsWsXXr1pFWExERkSnCzA5l\ns142TTx3ADcNSXsReDvwxJCDrgbeA6wJtvlnMwubWRj4J+BmYDXw3mBdERERkTOMWIPinHvCzBYN\nSdsNYGZDV78V+KFzrh84YGZ7gSuCZXudc/uD7X4YrLtrPJkXERGR6SnXnWTnAofTnh8J0oZLP4OZ\nfczMtprZ1qamphxnT0RERKaCvBvF45z7lnNuvXNufUPDiH1oREREZBrK9Sieo8D8tOfzgjTOki4i\nIiJymlzXoNwLvMfMisxsMbAc2AI8Ayw3s8VmVojvSHtvjo8tIiIi00Q2w4x/ANwA1JvZEeBzQCvw\ndaABuN/Mdjjn3uSc22lmd+I7v8aBTzjnEsF+Pgk8hB9mfLtzbudEnJCIiIhMfeacm+w8DGv9+vVO\n86CIiIhMH2a2zTm3fqT18q6TrIiIiIgCFBEREck7ClBEREQk7yhAERERkbyjAEVERETyjgIUERER\nyTsKUERERCTvKEARERGRvKMARURERPKOAhQREZFp6q4vfpNvfOTjk52NMVGAIiIiMk01vbqX/u4j\n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\nQgghhOhw/h/km+oC2fsbygAAAABJRU5ErkJggg==\n", - "text/plain": [ - "" - ] - }, - "metadata": {}, - "output_type": "display_data" - }, - { - "data": { - "image/png": "iVBORw0KGgoAAAANSUhEUgAAAh4AAAILCAYAAACn2JViAAAABHNCSVQICAgIfAhkiAAAAAlwSFlz\nAAALEgAACxIB0t1+/AAAIABJREFUeJzt3Xu4bVddH/zvj4SAXMotwWIuBDUgeWi5RQQ0kldUAgJp\nvQBpqQTQ9EYLxdfXaAtEaPt4e6uiEQwUoxQJV+VUItEidyXmpCCShGiMuRLIAUJUAoTQX/+Yc8vK\nyjrn7HPOPmPn7PP5PM961l5zjjXnWGPOtdZ3zTnm2NXdAQAY4U6bXQEA4OAheAAAwwgeAMAwggcA\nMIzgAQAMI3gAAMMIHjBYVZ1WVV1Vp212XdZU1ZlznU7a7Losqqpz5nodu5/Xc2VVXbk/13EwGrX9\nOLAIHlvU/Gbvqvo/VfVNuyj3noWypw2s4tr631tVQweTqapvqapfqaqPV9VNVXVLVX2yqt5ZVc+v\nqruMrM/+UFV3rar/t6ouWHiN11fVRVX1q1X1hM2u40ibsZ/tqzkM9dJ7+aaq+nBVvaiq7rzZddwb\nVXXs/HrO2ey6sDkO3ewKsF/dmmkbPz/JTy3PrKrjkpy0UG7Lq6qXJnlZptD9J0l+M8nfJfn6TG3x\n2iT/OskJm1TFfVZV90jyviSPSvKpJG+b7++R5OFJTk9y77nMml9Ncm6Sq4dW9o7jiZtdgV345SSf\nT3JIkmOSfH+SX8xU56dtYr1grxwUXzYHsU8nuT7Jc6vqpd1969L8H5nv/2eSfzq0Zpugqn4qyU8n\nuSbJD3X3BSvKPDXJj42u2wZ7UabQ8QdJntbdtyzOrKr7JHno4rTu/kySzwyr4R1Md//VZtdhF36p\nu69ce1BVr0jy0SRPraondPf7dvpMuANyqmXre02Sf5jkqYsT58O0pyX54ySX7OzJVXVcVf1WVV23\ncErit+ajJctl/76fQFX9YFX9aVXdXFWfq6pzq+rIhbLHzoe+nzA/Xjyk/N6l5R41nx64oqq+XFWf\nraptVfWt622E+RzzmUm+kuQpq0JHknT37yU5eem5p1XV2+b1f7Gq/qaqPlRVz97Jut47v47Dquql\nVXXZXO9z1lHPR8/rumF+zlVV9WtV9YD1vtYkj5/vX7UcOubXeGN3//HSelf28VjbHlX19VX1uqr6\ndFV9oar+uKpOnMvcvap+fq7rl6vq4qr6oRWvbaf9SPb08Pt6t8l697PaSR+PqrpLVZ1RVX8+78t/\nU1UfqKpn7Oo1zH+fW1WfqaovVdX2OdTus+6+PF87WrXyPVBV31ZVb62qT83v22uq6ter6htWlP3G\nqjq7qi6f2/Jz8+t9dVXdb6HcPm+/qjozyV/PD5+ztD1Om8tUVT1n3sd2zO13TVWdX1XP3H0LcUfn\niMfW98Yk/y3T0Y3fXZj+9CT3T/ITSb551RPnL/b/leSeSbZlCijfkuTZSU6pqu/u7gtXPPXfzMvf\nlukD8tuSPDPJw6vqEd395UyHjn86U/h54Pz3misX6rD2y/2+Sc5P8vYkhyf5J0k+WFX/tLvPW0c7\nPDfJnZOc290f31XBuX6LXpXk4iTvz3QE6X5JnpLk9VX1kO5+yU4W9bZMXwy/n6ntb9jVeucvprcl\nqSRvTXJVkkdnOvVzSlV9R3f/9S4Wseaz8/2D11F2Pe6d5ENJ/jbT/nTfJM9Kcn5VPS7Jr8/Tfi9T\nG5+a5E1VdU13f3iD6rBsvdtkXfvZKlV1WKZ97glJPpHkrCR3S/KDmV7fI7r7dqcw5/X8aZIrkrw+\nU9s8M8k75vfMe/b0xe7CV1bU+3lJzk7y5UzvwWuSHJfpM+BpVfXY7r56LvuAJBcm+QdJzsu0/901\nyYOS/ItMp+A+u7yOffDeTPvTC5P8WW77mfTR+f6/JPnJTAHlzUluSvKATO+lH0rypg2sD5uhu922\n4C1JJ7l2/vu1mfpxHLUw/12Z3tB3S/Kf5/KnLcyvJJfO0//50rKfOU//RJI7LUw/c57+N0n+0dJz\nfnue94yl6e+ddsOVr+HQJJcn+VKSJyzN+4Yk12X60rnLOtrj3fP6f2Qv2vKbVkw7bF7mV5Icueo1\nJflYksNXPPe0Fe19j0wf8F9NcuJS+Z+Yy//BOuv71Ln8l5P8WpLvS/KA3TxnbdudtGI/6iSvXtrW\n/2Ke/rlMp+ruujDvxHne76xnHfO8Y+d55yxNP2eefuxGbJNdvP4rk1y5NO0n53Wfl+TQhen3n8t3\nkseveA2d5GVLy3rS2rL2YL9bW8fya39Iki/M8x69NO/BSW7J9L5ZboMnzvvX7yxM+3fzcl64Yv13\nT/J1G739dlZ2Yf5nk1yb5G4r5t3u/eR24N2cajk4vCZTx7TnJUlVPTDJ9yR5Q3ffvJPnPD7T0Y0/\n6e43LM7o7jcl+WCmD8DvWPHcV3b3n6+oQ5I8Zg/q/X1JvinJr/TSeezu/mSSn8t0Gmk9HQPXTlVc\nuwfrX1vX7c7/93QK46xM4Whn639JT30n1uOUTL+M39TdH1ia9/9n+hL6nqo6Zh31/b1Mvyi/mOlo\nye8l+WRNV7W8oaq+c511WnNzkh/v7v+zMO23M4XZ+2T60vrSwvo/MNf3EXu4nnXbh22yJ56X6Qvy\nxb3QP6q7b0jyivnhj6x43lWZwvxi3c7P1HF3T/b/NS+aT3O8oqp+M8lFmX4w/EJ3X7RU9l9nOur0\nwu6+bqkO7850BORpVXXPped9cXml3f2F7r7d9EG+kikk3cYevJ+4A3Oq5SDQ3RdU1Z8neV5V/edM\nH5Z3ytfCwCqPmu//aCfz/yhT6HhkpsPdi7avKH/NfH+fdVV68rj5/oHzueFla/1MHprpV+l+MX/Z\n/0SmL7NjknzdUpEjb/ekyZ/uwWp22t7dfWtVvT/TL8VHZh1XnnT3K6vqtZkC5uPn5z0+yT9L8s+q\n6hXd/dJ11u0vuvtvl5b/1ar6dJK7d/cVK55zXaZTbPvFPmyT9S7/nplOQV7X3Z9YUWRtOz1yxbyP\ndvftvjQzvQcet2L67rxwxbQzu/unV0xfW/4TanUfqPtn+hHy4EwBZluS/5rkrKp6UqZTSx9Kckl3\nb9blx2/IdCTmkqp6c6bTtX/S3TdtUn3YYILHweM1SV6Z5MmZ+jtc1N0f2UX5e8331+9k/tr0e6+Y\n9/kV09Z+MR6ym3ouWuvYdruOikvusY5lXZ8poOzRF1JVfWOmAHGfJB/I1N/kpky/xo5N8pwkOxv3\n41N7sKp9ae+V5qNZ75hva30WfjTT5Zkvqaq3d/dHd7GINTv7wL91N/P2y+fLPm6T9dro/T+Z2mRv\njjI/qLuvrKq7ZjqK9OokL6uqK7r79Utl194zP76bZd4jSbr7qqp6TKbTKCdnulQ3Sa6pql/o7lfu\nRX331X/I1D/muUnOmG+3VtV5SX6sp861HMCcajl4vD7T4dRXZ/ryPXs35de+UP7hTuY/YKnc/rC2\n7FO6u3ZxW/XLb9kH5/s9PQT/4kwf5s/v7pO6+99390u6+8xMvw53ag9/Me739u7uW7r7rEwdRJPk\nu/Z2WXtp7VTNqkCy7kCVfdgme+COsP/fRnd/qafOuk/O1NH3VSuuUlmrz712855538JyL+3uZ2Zq\n0xMyfdHfKckvV9XzF5a9Udtvl7r7q939S9398Ezj6/xAkt/J1GH9XbUFBvg72AkeB4nu/nymKyWO\n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\nETwAgGEEDwBgGMEDABhG8AAAhhE8AIBhBA8AYBjBAwAYRvAAAIYRPACAYQQPAGAYwQMAGEbwAACG\nETwAgGEEDwBgGMEDABhG8AAAhhE8AIBhBA8AYBjBAwAYRvAAAIYRPACAYQQPAGAYwQMAGEbwAACG\nETwAgGEEDwBgGMEDABhG8AAAhhE8AIBhBA8AYBjBAwAYRvAAAIYRPACAYQQPAGAYwQMAGEbwAACG\nETwAgGHWFTyq6uSquqyqLq+qM1bMv0tVvWmef0FVHbvRFQUADny7DR5VdUiSs5I8OcnxSU6tquOX\nij0/yY3d/c1JfjHJz250RQGAA996jng8Jsnl3X1Fd9+S5NwkpyyVOSXJb85/vzXJE6uqNq6aAMBW\ncOg6yhyZ5JqFx9cm+badlenuW6vqpiT3S/KZxUJVdXqS0+eHf1dVl+1NpTdCHVzHZA7P0rYY6SBr\n60Wb2u4HOW2/ebT95tlt2+/nz+MHrqfQeoLHhunus5OcPXKdJFW1vbtP2Ox6HGy0++bR9ptH22+e\nA6Xt13Oq5bokRy88PmqetrJMVR2a5F5JPrsRFQQAto71BI8LkxxXVQ+qqsOSPCvJtqUy25I8Z/77\nB5P8UXf3xlUTANgKdnuqZe6z8YIk5yc5JMnruvviqnp5ku3dvS3Jf0/y+qq6PMnnMoUT7jic3toc\n2n3zaPvNo+03zwHR9uXABAAwipFLAYBhBA8AYBjBYwuoqntX1Vur6hNVdWlVPa6q7ltVf1hVfznf\n32cuW1X1ynl4+49V1aM2u/4Hqqp6SFV9dOH2N1X1Im2//1XVf6iqi6vq41X1xqq669wB/oK5fd80\nd4b3Lx02WFW9cG73i6vqRfM0+/x+UFWvq6obqurjC9P2uK2r6jlz+b+squesWtdIgsfW8MtJ3tXd\n35Lk4UkuTXJGknd393FJ3j0/Tqah74+bb6cnedX46m4N3X1Zdz+iux+R5NFJbk7yO9H2+1VVHZnk\n3yc5obsflqnT+7My/auGX5z/dcONmf6VQ+JfOmyYqnpYkh/NNKL1w5M8taq+Ofb5/eWcJCcvTduj\ntq6q+yZ5WaaBPx+T5GVrYWWzCB4HuKq6V5LvzHRlUbr7lu7+fG47jP1vJvkn89+nJPmtnnw4yb2r\n6gGDq70VPTHJX3X3VdH2Ixya5OvmcYPuluT6JN+V6V82JLdvd//SYWM8NMkF3X1zd9+a5H1Jvj/2\n+f2iu9+f6UrRRXva1k9K8ofd/bnuvjHJH+b2YWYowePA96AkO5L8RlV9pKpeW1V3T/L13X39XOZT\nSb5+/nvuoU4nAAACOUlEQVTVEPhHDqvt1vWsJG+c/9b2+1F3X5fkF5JcnSlw3JTkoiSfn78Mk9u2\n7W3+pcNc/n4j67yFfDzJiVV1v6q6W5KnZBo80j4/zp629R1uGwgeB75Dkzwqyau6+5FJvpCvHXpL\nksyDubluej+Z+xI8Pclbludp+403HyY+JVPo/oYkd88m/4I7WHT3pZlOVf1Bkncl+WiSry6Vsc8P\ncqC2teBx4Ls2ybXdfcH8+K2Zgsin1w5pzvc3zPPXMwQ+e+bJSf53d396fqzt96/vTvLX3b2ju7+S\n5O1Jvj3ToeW1QREX29a/dNhA3f3fu/vR3f2dmfrS/EXs8yPtaVvf4baB4HGA6+5PJbmmqh4yT3pi\nkkty22Hsn5PkHfPf25L88NwD+rFJblo4bMfeOTVfO82SaPv97eokj62qu819Ndb2+fdk+pcNye3b\n3b902CBVdf/5/phM/Tt+O/b5kfa0rc9P8r1VdZ/5aOH3ztM2jZFLt4CqekSS1yY5LMkVSZ6bKVS+\nOckxSa5K8ozu/tz8Qf2rmQ5N35zkud29fVMqvgXM/WmuTvKN3X3TPO1+0fb7VVX9dJJnJrk1yUeS\n/Eim89bnJrnvPO3Z3f3lqrprktcneWTmf+nQ3VdsSsW3gKr6QKY+Ml9J8uLufrd9fv+oqjcmOSnT\nv7v/dKarU343e9jWVfW8JD81L/a/dPdvjHwdywQPAGAYp1oAgGEEDwBgGMEDABhG8AAAhhE8AIBh\nBA8AYBjBAwAY5v8Cg+K8zIpXfIsAAAAASUVORK5CYII=\n", - "text/plain": [ - "" - ] - }, - "metadata": {}, - "output_type": "display_data" - }, - { - "data": { - "image/png": "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\nGlKv3Yb0f3FdFn7DgKfCN647VzHic+06/f+28x29dJLxN233KIHgY5Tt7q31u72ccvCzzYDhTrSf\nPZ4h28iJpm3Yd9VZXj9Ul687KduTH1D2DS/pKzvR+Hdj8H576Las9n8QZVtxYev62HvsuSTNqoj4\nCOXUyMLMnOrdi5ol9XTZOZm5cLw1kaZHRLyY8oypP8zBj05a9TOGJknjUK/h+xHw8cx807jro4kZ\nmrQ2iYignBW6l/Ik8aYwNI4LwSWJzLyBcjrgZxHhtkjSbHo0pZXpDa2BCWxpkiRJauLRnSRJUgND\nkyRJUgNDkyRJUgNDkyRJUgNDkyRJUgNDkyRJUgNDkyRJUgNDkyRJUgNDkyRJUgNDkyRJUgNDkyRJ\nUgNDkyRJUgNDkyRJUgNDkyRJUgNDkyRJUgNDkyRJUgNDkyRJUgNDkyRJUgNDkyRJUgNDkyRJUgND\nkyRJUgNDkyRJUgNDkyRJUgNDkyRJUgNDkyRJUgNDkyRJUgNDkyRJUgNDkyRJUgNDkyRJUgNDkyRJ\nUgNDkyRJUgNDkyRJUgNDkyRJUgNDkyRJUgNDkyRJUgNDkyRJUgNDkyRJUgNDkyRJUoN5467AdJs/\nf34uXLhw3NWQJEnT4Nvf/vbPM3PBuOsBa2FoWrhwIcuWLRt3NSRJ0jSIiJ+Muw49np6TJElqYGiS\nJElqYGiSJElqYGiSJElqYGiSJElqYGiSJElqYGiSJElqYGiSJElqYGiSJElqYGiSJElqYGiSJElq\nYGiSJElqYGiSJElqYGiSJElqYGiSJElqYGiSJElqMLbQFBEfjYgbI+KSIf0jIj4YEcsj4uKIeNps\n11GSJKlnnC1NxwN7TdB/b2BR/TsY+PAs1EmSJGmgsYWmzPwqcPMERZYAn8jiPGDjiHjM7NROkiTp\ngeaNuwIT2AK4uvP/NbXbdf0FI+JgSmsUW2+99YxUZuGhX2gqd9V7Xjgj4x+kpU6zWR9J0trHfc1K\na8WF4Jl5TGYuzszFCxYsGHd1JEnSWmguh6Zrga06/29Zu0mSJM26uRyalgIH1LvongncmpmrnJqT\nJEmaDWO7pikiPg3sBsyPiGuAw4H1ATLzaOB0YB9gOXAH8Nrx1FSSJGmMoSkz95+kfwJ/NkvVkSRJ\nmtBcPj0nSZI0ZxiaJEmSGhiaJEmSGhiaJEmSGhiaJEmSGhiaJEmSGhiaJEmSGhiaJEmSGhiaJEmS\nGhiaJEmSGhiaJEmSGhiaJEmSGhiaJEmSGhiaJEmSGhiaJEmSGhiaJEmSGhiaJEmSGhiaJEmSGhia\nJEmSGhiaJEmSGhiaJEmSGhiaJEmSGhiaJEmSGhiaJEmSGhiaJEmSGhiaJEmSGhiaJEmSGhiaJEmS\nGhiaJEmSGhiaJEmSGhiaJEmSGhiaJEmSGhiaJEmSGhiaJEmSGhiaJEmSGhiaJEmSGhiaJEmSGhia\nJEmSGhiaJEmSGhiaJEmSGhiaJEmSGhiaJEmSGhiaJEmSGhiaJEmSGhiaJEmSGhiaJEmSGhiaJEmS\nGhiaJEmSGhiaJEmSGhiaJEmSGhiaJEmSGhiaJEmSGhiaJEmSGhiaJEmSGhiaJEmSGhiaJEmSGhia\nJEmSGhiaJEmSGhiaJEmSGhiaJEmSGhiaJEmSGhiaJEmSGhiaJEmSGhiaJEmSGhiaJEmSGhiaJEmS\nGhiaJEmSGhiaJEmSGhiaJEmSGhiaJEmSGhiaJEmSGhiaJEmSGhiaJEmSGow1NEXEXhFxeUQsj4hD\nB/TfOiLOjojvRsTFEbHPOOopSZI0ttAUEesBRwF7AzsA+0fEDn3F/hY4OTN3AvYD/mN2aylJklSM\ns6VpZ2B5Zl6ZmXcDJwJL+sok8Mj6fiPgZ7NYP0mSpPuNMzRtAVzd+f+a2q3rCOA1EXENcDrwpkED\nioiDI2JZRCxbsWLFTNRVkiSt4+b6heD7A8dn5pbAPsAnI2KVOmfmMZm5ODMXL1iwYNYrKUmS1n7j\nDE3XAlt1/t+ydut6PXAyQGZ+E3gIMH9WaidJktQxztB0AbAoIraNiA0oF3ov7SvzU+C5ABHxJEpo\n8vybJEmadWMLTZl5D3AIcAbwfcpdcpdGxLsiYt9a7G3AGyLiIuDTwEGZmeOpsSRJWpfNG+fIM/N0\nygXe3W6Hdd5fBjx7tuslSZLUb65fCC5JkjQnGJokSZIaGJokSZIaGJokSZIaGJokSZIaGJokSZIa\nGJokSZIaGJokSZIaGJokSZIaGJokSZIaGJokSZIaGJokSZIaGJokSZIaGJokSZIaGJokSZIaGJok\nSZIaGJokSZIaGJokSZIaGJokSZIaGJokSZIaGJokSZIaGJokSZIaGJokSZIaGJokSZIaGJokSZIa\nGJokSZIaGJokSZIaGJokSZIaGJokSZIaGJokSZIaGJokSZIaGJokSZIaGJokSZIaGJokSZIaGJok\nSZIaGJokSZIaGJokSZIaGJokSZIaGJokSZIaGJokSZIaGJokSZIaGJokSZIaGJokSZIaGJokSZIa\nGJokSZIAPdCuAAAQmklEQVQaGJokSZIaGJokSZIaGJokSZIaGJokSZIaGJokSZIaGJokSZIaGJok\nSZIaGJokSZIaGJokSZIaGJokSZIaGJokSZIaGJokSZIaGJokSZIaGJokSZIaGJokSZIaGJokSZIa\nGJokSZIaGJokSZIaGJokSZIaGJokSZIaGJokSZIaGJokSZIaGJokSZIaGJokSZIaGJokSZIaGJok\nSZIaGJokSZIaGJokSZIaGJokSZIajC00RcReEXF5RCyPiEOHlHlFRFwWEZdGxKdmu46SJEk988Yx\n0ohYDzgK2BO4BrggIpZm5mWdMouAtwPPzsxbImLzcdRVkiQJxtfStDOwPDOvzMy7gROBJX1l3gAc\nlZm3AGTmjbNcR0mSpPuNKzRtAVzd+f+a2q3rCcATIuIbEXFeROw1bGARcXBELIuIZStWrJiB6kqS\npHXdXL4QfB6wCNgN2B84NiI2HlQwM4/JzMWZuXjBggWzWEVJkrSuGFdouhbYqvP/lrVb1zXA0sz8\nTWb+GPghJURJkiTNunGFpguARRGxbURsAOwHLO0r8zlKKxMRMZ9yuu7K2aykJElSz1hCU2beAxwC\nnAF8Hzg5My+NiHdFxL612BnATRFxGXA28FeZedM46itJkjSWRw4AZObpwOl93Q7rvE/grfVPkiRp\nrObyheCSJElzhqFJkiSpgaFJkiSpgaFJkiSpgaFJkiSpgaFJkiSpgaFJkiSpgaFJkiSpgaFJkiSp\ngaFJkiSpgaFJkiSpgaFJkiSpgaFJkiSpgaFJkiSpgaFJkiSpgaFJkiSpgaFJkiSpgaFJkiSpgaFJ\nkiSpgaFJkiSpgaFJkiSpgaFJkiSpgaFJkiSpgaFJkiSpgaFJkiSpgaFJkiSpgaFJkiSpgaFJkiSp\ngaFJkiSpgaFJkiSpgaFJkiSpgaFJkiSpgaFJkiSpgaFJkiSpgaFJkiSpgaFJkiSpgaFJkiSpgaFJ\nkiSpgaFJkiSpgaFJkiSpgaFJkiSpgaFJkiSpgaFJkiSpgaFJkiSpgaFJkiSpgaFJkiSpgaFJkiSp\ngaFJkiSpgaFJkiSpgaFJkiSpgaFJkiSpgaFJkiSpgaFJkiSpgaFJkiSpgaFJkiSpgaFJkiSpgaFJ\nkiSpgaFJkiSpgaFJkiSpgaFJkiSpgaFJkiSpgaFJkiSpgaFJkiSpgaFJkiSpgaFJkiSpgaFJkiSp\ngaFJkiSpgaFJkiSpgaFJkiSpgaFJkiSpgaFJkiSpgaFJkiSpgaFJkiSpgaFJkiSpwVhDU0TsFRGX\nR8TyiDh0gnIvjYiMiMWzWT9JkqSesYWmiFgPOArYG9gB2D8idhhQ7hHAm4HzZ7eGkiRJK42zpWln\nYHlmXpmZdwMnAksGlHs38F7gztmsnCRJUtc4Q9MWwNWd/6+p3e4XEU8DtsrML0w0oIg4OCKWRcSy\nFStWTH9NJUnSOm/OXggeEQ8C3ge8bbKymXlMZi7OzMULFiyY+cpJkqR1zjhD07XAVp3/t6zdeh4B\nPAU4JyKuAp4JLPVicEmSNA7jDE0XAIsiYtuI2ADYD1ja65mZt2bm/MxcmJkLgfOAfTNz2XiqK0mS\n1mVjC02ZeQ9wCHAG8H3g5My8NCLeFRH7jqtekiRJg8wb58gz83Tg9L5uhw0pu9ts1EmSJGmQOXsh\nuCRJ0lxiaJIkSWpgaJIkSWpgaJIkSWpgaJIkSWpgaJIkSWpgaJIkSWpgaJIkSWpgaJIkSWpgaJIk\nSWpgaJIkSWpgaJIkSWpgaJIkSWpgaJIkSWpgaJIkSWpgaJIkSWpgaJIkSWpgaJIkSWpgaJIkSWpg\naJIkSWpgaJIkSWpgaJIkSWpgaJIkSWpgaJIkSWpgaJIkSWpgaJIkSWpgaJIkSWpgaJIkSWpgaJIk\nSWpgaJIkSWpgaJIkSWpgaJIkSWpgaJIkSWpgaJIkSWpgaJIkSWpgaJIkSWpgaJIkSWpgaJIkSWpg\naJIkSWpgaJIkSWpgaJIkSWpgaJIkSWpgaJIkSWpgaJIkSWpgaJIkSWpgaJIkSWpgaJIkSWpgaJIk\nSWpgaJIkSWpgaJIkSWpgaJIkSWpgaJIkSWpgaJIkSWpgaJIkSWpgaJIkSWpgaJIkSWpgaJIkSWpg\naJIkSWpgaJIkSWpgaJIkSWpgaJIkSWpgaJIkSWpgaJIkSWpgaJIkSWpgaJIkSWpgaJIkSWpgaJIk\nSWpgaJIkSWpgaJIkSWpgaJIkSWpgaJIkSWpgaJIkSWpgaJIkSWpgaJIkSWowttAUEXtFxOURsTwi\nDh3Q/60RcVlEXBwRX46IbcZRT0mSJBhTaIqI9YCjgL2BHYD9I2KHvmLfBRZn5lOBzwD/PLu1lCRJ\nWmlcLU07A8sz88rMvBs4EVjSLZCZZ2fmHfXf84AtZ7mOkiRJ9xtXaNoCuLrz/zW12zCvB744rGdE\nHBwRyyJi2YoVK6apipIkSSvN+QvBI+I1wGLgyGFlMvOYzFycmYsXLFgwe5WTJEnrjHljGu+1wFad\n/7es3R4gIp4HvAP4vcy8a5bqJkmStIpxtTRdACyKiG0jYgNgP2Bpt0BE7AR8BNg3M28cQx0lSZLu\nN5bQlJn3AIcAZwDfB07OzEsj4l0RsW8tdiTwcOC/I+LCiFg6ZHCSJEkzblyn58jM04HT+7od1nn/\nvFmvlCRJ0hBz/kJwSZKkucDQJEmS1MDQJEmS1MDQJEmS1MDQJEmS1MDQJEmS1MDQJEmS1MDQJEmS\n1MDQJEmS1MDQJEmS1MDQJEmS1MDQJEmS1MDQJEmS1MDQJEmS1MDQJEmS1MDQJEmS1MDQJEmS1MDQ\nJEmS1MDQJEmS1MDQJEmS1MDQJEmS1MDQJEmS1MDQJEmS1MDQJEmS1MDQJEmS1MDQJEmS1MDQJEmS\n1MDQJEmS1MDQJEmS1MDQJEmS1MDQJEmS1MDQJEmS1MDQJEmS1MDQJEmS1MDQJEmS1MDQJEmS1MDQ\nJEmS1MDQJEmS1MDQJEmS1MDQJEmS1MDQJEmS1MDQJEmS1MDQJEmS1MDQJEmS1MDQJEmS1MDQJEmS\n1MDQJEmS1MDQJEmS1MDQJEmS1MDQJEmS1MDQJEmS1MDQJEmS1MDQJEmS1MDQJEmS1MDQJEmS1MDQ\nJEmS1MDQJEmS1MDQJEmS1MDQJEmS1MDQJEmS1MDQJEmS1MDQJEmS1MDQJEmS1MDQJEmS1MDQJEmS\n1MDQJEmS1MDQJEmS1MDQJEmS1MDQJEmS1MDQJEmS1MDQJEmS1MDQJEmS1MDQJEmS1MDQJEmS1GCs\noSki9oqIyyNieUQcOqD/gyPipNr//IhYOPu1lCRJGmNoioj1gKOAvYEdgP0jYoe+Yq8HbsnMxwPv\nB947u7WUJEkqxtnStDOwPDOvzMy7gROBJX1llgAfr+8/Azw3ImIW6yhJkgTAvDGOewvg6s7/1wC/\nM6xMZt4TEbcCmwE/7xaKiIOBg+u/t0XE5TNS4wYxWlvYfPqmZbqNWJ+ZMuPTOYc4rWundWVa15Xp\nBKd1Ws3wvmabGR36CMYZmqZNZh4DHDPueowqIpZl5uJx12OmrSvTCU7r2mpdmdZ1ZTrBadXUjPP0\n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\nSUVORK5CYII=\n", - "text/plain": [ - "" - ] - }, - "metadata": {}, - "output_type": "display_data" - } - ], - "source": [ - "# Initialize the short and long windows\n", - "short_window = 5\n", - "long_window = 30\n", - "\n", - "# Number of simulations - we will use a small number here so we could visualize the results.\n", - "sim_num = 3\n", - "\n", - "# Set the initial capital\n", - "initial_capital= float(100000.0)\n", - "\n", - "# Create a DataFrame `positions`\n", - "positions = pd.DataFrame(index=signals.index).fillna(0.0)\n", - "\n", - "#set up empty list to hold our ending values for each simulated price series\n", - "sim_result = []\n", - "\n", - "# Set up empty list to hold protfolio value for each simulated price serries, this is the value of position['total']\n", - "portfolio_total = []\n", - " \n", - "#Define Variables\n", - "start_price = stock_df['Adj Close'][-1] #starting stock price (i.e. last available real stock price)\n", - "trading_days = 252 # Number of trading days\n", - "\n", - "\n", - "\n", - "#calculate the compound annual growth rate (CAGR) which \n", - "#will give us our mean return input (mu) \n", - "days = (stock_df.index[-1] - stock_df.index[0]).days\n", - "cagr = ((((stock_df['Adj Close'][-1]) / stock_df['Adj Close'][1])) ** (365.0/days)) - 1\n", - "mu = cagr\n", - " \n", - "#create a series of percentage returns and calculate \n", - "#the annual volatility of returns. Generally, the higher the volatility, \n", - "#the riskier the investment in that stock, which results in investing in one over another.\n", - "stock_df['Returns'] = stock_df['Adj Close'].pct_change()\n", - "vol = stock_df['Returns'].std()*sqrt(trading_days)\n", - "\n", - "\n", - "# Initialize the `signals` DataFrame \n", - "signals = pd.DataFrame()\n", - "\n", - "# initialize by setting the value for all rows in this column to 0.0.\n", - "signals['signal'] = 0.0\n", - "signals['short_mavg'] = 0.0\n", - "\n", - "\n", - "#choose number of runs to simulate - I have chosen 1,000\n", - "for i in range(sim_num):\n", - " #create list of daily returns using random normal distribution\n", - " daily_returns=np.random.normal(mu/trading_days,vol/sqrt(trading_days),trading_days)+1\n", - " \n", - " #set starting price and create price series generated by above random daily returns\n", - " price_list = [start_price]\n", - " \n", - " for x in daily_returns:\n", - " price_list.append(price_list[-1]*x)\n", - " \n", - " #plot data from each individual run which we will plot at the end\n", - " plt.plot(price_list)\n", - " \n", - " #Convert list to Pandas DataFrame\n", - " price_list_df = pd.DataFrame(price_list)\n", - " \n", - " #append the ending value of each simulated run to the empty list we created at the beginning\n", - " sim_result.append(price_list[-1])\n", - " \n", - " # Create short simple moving average over the short & long window\n", - " signals['short_mavg'] = price_list_df[0].rolling(short_window).mean()\n", - " signals['long_mavg'] = price_list_df[0].rolling(long_window).mean()\n", - " \n", - " # Create a signal when the short moving average crosses the long moving average, \n", - " # but only for the period greater than the shortest moving average window. \n", - " signals['signal'][short_window:] = np.where(signals['short_mavg'][short_window:] \n", - " > signals['long_mavg'][short_window:], 1.0, 0.0) \n", - "\n", - " # Generate trading orders\n", - " signals['positions'] = signals['signal'].diff()\n", - " \n", - " #plot data from each individual run which we will plot at the end\n", - " plt.plot(price_list)\n", - " plt.plot(signals['short_mavg'])\n", - " plt.plot(signals['long_mavg'])\n", - " \n", - " # Buy 100 shares\n", - " positions[STOCK] = 100*signals['signal']\n", - " \n", - " # Initialize the portfolio with value owned \n", - " portfolio = positions.multiply(price_list_df[0], axis=0)\n", - "\n", - " # Store the difference in shares owned \n", - " pos_diff = positions.diff()\n", - "\n", - " # Add `holdings` to portfolio\n", - " portfolio['holdings'] = (positions.multiply(price_list_df[0], axis=0)).sum(axis=1)\n", - "\n", - " # Add `cash` to portfolio\n", - " portfolio['cash'] = initial_capital - (pos_diff.multiply(price_list_df[0], axis=0)).sum(axis=1).cumsum() \n", - "\n", - " # Add `total` to portfolio\n", - " portfolio['total'] = portfolio['cash'] + portfolio['holdings']\n", - " \n", - " #append the ending value of each simulated run to the empty list we created at the beginning\n", - " portfolio_total.append(portfolio['total'].iloc[-1])\n", - "\n", - " \n", - "# Show the plot\n", - "plt.rcParams[\"figure.figsize\"] = (15,18)\n", - "plt.suptitle('Simulated Results with long and short moving avg', fontsize=20)\n", - "plt.show()\n", - " \n", - "#create histogram of ending stock values for our mutliple simulations\n", - "plt.rcParams[\"figure.figsize\"] = (9,8) \n", - "plt.suptitle('Monte Carlo Simulation Results', fontsize=20)\n", - "plt.hist(sim_result,bins=50)\n", - "plt.show()\n", - "\n", - "#create histogram of ending protfolio values for our mutliple simulations, compare this value to \"initial_capital\"\n", - "# Clean portfolio_total from NaN\n", - "portfolio_total = [x for x in portfolio_total if x != 'nan']\n", - "plt.hist(portfolio_total,bins=50)\n", - "plt.suptitle('Protfolio Simulated Results (based on $100K investment)', fontsize=20)\n", - "plt.show()\n" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "You can evaluate the results on the next step, for example try to look at price_list, signals, portfolio_total and positions. You can also change sim_num to generate more simulations, in the next step we will increase the number of simulatitons and remove the line graphs. " - ] - }, - { - "cell_type": "code", - "execution_count": 174, - "metadata": {}, - "outputs": [ - { - "data": { - "text/plain": [ - "[96411.330825581375, 132156.17548497522, 93277.667860155285]" - ] - }, - "execution_count": 174, - "metadata": {}, - "output_type": "execute_result" - } - ], - "source": [ - "portfolio_total\n", - "#positions\n", - "#signals\n" - ] - }, - { - "cell_type": "markdown", - "metadata": { - "collapsed": true - }, - "source": [ - "This is the final version of the code, we will remove the line graph and write the end results of the simulation and portfolio results into sim_result and portfolio_total list respectfuly. " - ] - }, - { - "cell_type": "code", - "execution_count": 175, - "metadata": {}, - "outputs": [ - { - "data": { - "image/png": "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\nfGoAAAAASUVORK5CYII=\n", - "text/plain": [ - "" - ] - }, - "metadata": {}, - "output_type": "display_data" - }, - { - "data": { - "image/png": "iVBORw0KGgoAAAANSUhEUgAAArwAAAIZCAYAAABEa+weAAAABHNCSVQICAgIfAhkiAAAAAlwSFlz\nAAALEgAACxIB0t1+/AAAIABJREFUeJzt3XmcXFWd/vHngQDKIlsCIggNiCg4EDSiojAsIkuURRFB\nHAEdAiqO628mrsRRx7gzjgqCYMABBAUEDQwgu8pigBB2CdAgMUBYRAiLBL6/P84pclO51V3V6a5K\nTn/er1e/qvqu51bd5alzz73XESEAAACgVMv1ugAAAADASCLwAgAAoGgEXgAAABSNwAsAAICiEXgB\nAABQNAIvAAAAilZM4LW9me2zbT9gO2z/bYjT2TGPP6Wp+2W2l6p7uNnut93f63I0y5/fZb0uRyds\nT8vl7ut1WbrF9iF5mQ/pYRkut32T7eUq3XperpHSav+yLLDdtzTub3qh5HUUkJb+Y6LtH9h+zPbY\ndsdpK/Dmha7+PW/7YduX2H7/0IvcHttT8nx3bNF/eUm/lrSnpN9K+oqkqSNdruFme3Pbx9uebfsZ\n2/Nt32P7Qttftr1ur8vYLfngGran9bosdSo7g+rfU7Zvtf1d2+N6Xcah6tYPKdv7SdpB0lER8cJI\nzw8jz/YKtj9h+2e2Z9r+R942/rWNcQ+2fa3tJ20/nisZ3jnA8Mvb/pTtWbaftv2o7fNsb9di+Mta\nHUdsr5LHDdsX2F61owUvwGDH2WXRcOzLbP8oZ551BhlufP4M/2B7bl7359g+zfbrW4zT+Mxb/e3e\nNPwqtg+yfart23NGeML2DNufsb3ikizrMua/JK0kaUq7I4zpcAZfya8rSHqNpL0l7WR7QkR8usNp\nDaeNJW0h6fiImDRC8/igpJVHaNqyvbOk6ZJeIukqSf8n6e+SXiFpO0m7SvqjpAcro+0yUuVB286R\nNDO/X1fpR9enJb3H9hsi4pGelWwpZtuSvi7pz5LO7nFxMADbK0vaTdI2kla3/SlJf5V0TUT0Nw2+\niqSj8/sHJT0g6ZVtzOM7kj4j6X5Jx0taUdIBkn5j++MR8cOm4S3pF5L2k3SHpB9KWkvS+yRdYfs9\nEXFOm8s3Vmnfu62kUyQdGhHPDTLa2ZKuljS3nXlg2ZTXs30k/T4iHhpk8GMlvUnSdZLOkvSkpPFK\n6/F+tt8XEWe1GPckSf013Wc3/b+9pP+V9KikS5Uq+taUtJek70h6t+1dIuKZQcq6zIuIB3KF2OG2\nvxUR9w02TkeBNyKmVP+3vYukiyR90vYPanZ+3fKK/PrXkZpBOx/mEvqJUtg9JCJOau5peytJjzWV\n6a4RLhMG9+uImNb4x/ZLlA6EW0s6Ugt/JGJRb5f0aklfCB73uNSyvaukkyW9vNL5e5X+O0fEpZV+\nTyn96JsZEXOdmm4cNcg8tlMKu3dJemNEPJa7f1spPHzH9m+bji8HKIXdP0p68QBv+1hJv5d0vO1L\nIuKJQea9kaQLJG2el+uz7ayPEfG4pMcHGw7LvG2V8sW32xj2FEkfiIhFQqrtg5RC6nF5Pf5HzbjT\nIuKyNubxgKQPSPpldTq2PyvpMqXKsY9J+m4b0yrBSZI+ImmSpC8OOnREDPonKdKgtf1uzf3f29R9\nf0lXKO0UnpZ0k6TPSVqpZhr9+e9lSjudfknPKVVV9zfm3/xXLVvN35TK9FeX9A2lmoBnlILjBZLe\nXlOWHZvHz90vq/sMlJqFHCHpT0q/6Obn9x+RtFybn+86eZ5/a2f45s+tqdsheVqHKNUKX5nLNU/S\nzyStkYfbRqn5x2O5/7mS+tqZR6XflDyvHWvWl8uaur1C0pcl/UFpo/2H0g+UUyVt0WK6dX+HNA27\nm6TzJD0s6Vmlg+a3G8tZU+a3589kvtKv5F8rna2Ylqe/2GfQYjrT6sqT+/2/3O+3LcbdQKlG6u5c\n5kfy5//GmmFXk/QlSTcr1fg/kZfxdElvGGy9bXddaZpG3d+0ynjbS/qNUm3cs/n7vFqpaUK76+4v\n8nQ3ren3YrkkTVQKNfPzuvorSZvVjPNqpWZMM5TW9Wcl3SvpOEkb1AxvSQfnac9T2i/8RWm/8L4l\n+c7y8OtKOkGplvNppbMABw/2PbWY1kqSJivtQ5/K68GVkvavGbav8X3l979Q2jaeyZ/NOzucb2Pc\nD0vaKq9H4yS9RWlfve0g05iSy/OvAwxzch7m0Jp+/5n7faWp+xW5+07tTk95H668v5L0T5LmSHpB\nKei29bnUbTvN25lSTfe3Jd2X15fZkv5DkivDvjlP4+wB5nNbHn+tpu5t7/fy93ZaLtezeX2/Xqkm\nfoVKuVseZ/Mw03K3jZV+zN+a141+SZ9vLJuk90q6VmmbfUhpu3lpi+Vr7Hv/onRMeFDpmLB5zbCN\n+fdJOlxpe3gmj3OcpNUrw+7YanlU2Ze18T1Pbcyzk/WjZjp/ztN5Q1P3KdV1cgnn8f48rd90OF5H\nx0Sldf9MpX3h00r7oz8ohf3maV+ltH3Vfn5KP3RDle2vnfW1aRr3KGUJD7asnTZpqOP8Gi92sP9L\nKdw+rLTyPilpD6U2F7vZfkcs/itnRUmXKJ2WujB/iPfkhdxH0j+rvtr/K0obwMGSLlfaqanxansN\npS9jC6UgerSksUqB/ELbH4mInwxt0SVJP1da0f4i6adKn8O+kn4s6W2SDmpjGo9LWiBpVdvrRcRw\nnCbbS9I7lULtsUq//A6R1Gf7c5IuVlrJT1Da8b9L0ia2t4qRaU+5g9JB+1KljeVJSZsp1dLsZfut\nEXFjHvYySWtI+oSkG5U2wIZG8wHZPkpph/FoXs6HlDaWz0ra0/ZbIuLvleH3UwqK/8ivc5W+o6sk\nzRrWpU0WOy2a23JdqLSeX6B06mus8mkz2/tGxHl5WCs1bdkul/GnSuvJBpJ2Uvr+rhvG8vYrbU+f\nzP8fXek3M5dpd6XTv39XCnxz8rK8VtJH1UaNdl6unSU9EAOfpXi30n7jbKV1Yryk9yg1o9ouIu5o\nGvYIpfXrj0rf8ZaS/lXSu3KzqzmV4b+utI+6R9IZStvgepLeqHTAPr1S3ra/szz82FyGTZRqG3+f\np31snk7bcpu8C5T2f7dL+pFS06r9JJ1ue3xEfL5m1I2UQsfdSvuoxun+c2y/PRatlW1lK0lrSzo2\nIk5wvnglIuYpHYSu6mRZBrBzfv2/mn7nK/3g21m5pjifRdlOKfxf2WKcf8nj/KxuhrZ3UFp/V5Z0\ncET8fAnK32wFpe/sFbksC5TWlalKZ/G+IkkRcbXtO5T2VWtHU/Mn29sqBY8zI+LRSve293v5zOA1\nSselc5XW95dJepXS9vpFpf3UYMfZqu8oBcrfKK3PeyltTyvafjQv56+VvptdlWocl1eqBKou3+5K\n29IKeVqzlfZt75Y00fZOEXF9zfy/pRT4G/PfSdJheZka61K/BtmXtWlfSTfEkp+9bhwLFrTo/zbb\nE5Q+p35JF0fEw8M8j8UM8Zh4jKRblH50zlXaR+wp6ee2N4+ILzUN+2al7+cLNdOapBRqp+XytLu+\nVv1BKWdtqVQx1FqbvwAW+aXX9Mvghfy3Ue72ljz8fZJeXhl2jNIKGpI+3zSd/tz9d5JWqZnPFA3w\nK0gD1JooNRWI/Fr9db2Z0kHuWVV+fbSalmpqeCUdmIe9XtKqle6rKNWmhKT3t/kZ/yoPf5fSjutN\nklYeZJx+ta61WyDpnyvdl1NqfhJKO8qDmsY7Iffbe7B5DPa9qL6Gdx1Jq9VMY2ul8Ht+U/c+DfBr\nXGknF0rBYo2mfo3P4PuVbqsq1co9J2lC0/Df18Jf/7W/RGvmP031NTwvVdpRhKTPNPUbo7RTf6b6\n3eR+r1AKj3OVz4Io/RCprQHK3+ea7WwDbawrzcsw0Hd+Zh5n65p+Y9v87F6jAWoiKuUKNdVIKv0I\nCqUDQrX7+qo/e/QOSc9LOqap+yNKNdSLbWPV5ej0O8vdj2te/3L3CXn9a/k91ZTlc3n48ySNadqe\n+nO/7Wq2m1BTjbtSSAhJ57U571fl4U+rTLt2vRhgGlM0QA2v0r4yJD3Rov/Y3P/BSrctc7ebWowz\nIfe/pqn7Zbn70Uo1U09K2r2T5Wlz22l8Xy+tdF9H0t/y3wqV7o3v98iaefwo93tXpVun+73vqma/\nnvutqcpZSA1+nJ2W+/dLWr/SfQ2lyq35Sj+EXlvpt5JSTfCzktZpmvdjebzmM3yvy9/N9S3mf5+k\nDZu20UaN/7ZN4/R3us7WrGdfHMr4lek0avLvl7R8i+2j+e8ZSV9VG7WWlWmdn8c9vM3hh3RMVP1Z\nuRWVKtGea1o3XpK/47mq7L9yvx3z9E8Zyvpa6d44Jnx0sGXu6LZk+YrCKba/bvtXSr/ILenoiLg3\nD/ah/Pq1iHigMW5ELFCqvn5BqdalzmciYn4nZRqkvCsqtXd5UtLnIn86uTx3SvqB0hf1wSHOorGs\nkyPiycq05yudvpJaL2uzw5R+7W6sdGrqaklP2L7R9tfc+R0aTouIyytlekGppkeSbo6IU5qGPzm/\nju9wPm2JiIeipj1dpFrdS5Rq7VboYJL/ll8Pi4hFbkEXqU3tTC1au763Ui3XqRExo2laUzT09nj7\nVLaLHys1m/knpR3wMU3DTpS0qaT/qX43ucx/Vaq5eLkWvxjx6eaZRsQLkds69khdmdqtkdgwvw52\nJuOSiPhtU7cfKv0o3Dm3v2zMe05EPFtTpguVaiN2q5n+c0phuHmc6nJ09J3ldfggpaYnU5qGn6HU\nzq8TH1LamX8670Mb03pI6YAo1e9j7pX0tab5X6AUFrZtc953Ke2HDrD9U43MRbKr59dW21+j+xpL\nOE7VJ5QOxEdERF2t8nD4t4h4cRvJ39c5SmXfvDLcz5WOiQdXR87HrgOUam/Pr043v7a732uo214f\n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\nTx90mP6pE7tQEgAYPajhBQAAQNEIvAAAACgagRcAAABFI/ACAACgaFy0hmHVzgU5AAAA3UQNLwAA\nAIpGDS8ADJNun+HgFmcA0B5qeAEAAFA0Ai8AAACKRuAFAABA0Qi8AAAAKBqBFwAAAEUj8AIAAKBo\n3JYMAJYyPMAFAIYXNbwAAAAoGoEXAAAARSPwAgAAoGgEXgAAABSNwAsAAICiEXgBAABQNG5LBgCj\nXDu3QeufOrELJQGAkUENLwAAAIpGDS/axs3wgWUP2y0AUMMLAACAwhF4AQAAUDQCLwAAAIpG4AUA\nAEDRuGgNkriwBcDAunnrsnb3R9wqDUC7qOEFAABA0ajhBQAMi6XxARZLY5kAdB81vAAAACgaNbwA\ngK7hegEAvUANLwAAAIpGDW+P2d5d0n9LWl7STyNiao+LBADLhOGqLV4Wa52XxnbHy2p76WW13OgM\nNbw9ZHt5ST+StIekLSQdaHuL3pYKAACgLATe3tpW0uyIuDsi/iHpF5L27nGZAAAAikKTht5aX9Jf\nKv/fL+lN1QFsT5I0Kf/7pO07ulS2bhsr6eFeF6KLRtvySizzaDDallfq0TL7m92e4yKGvMw9LvdQ\njfU3R/Q73mgEp42MwLuUi4jjJB3X63KMNNszImJCr8vRLaNteSWWeTQYbcsrscyjwWhb3lLRpKG3\n5kh6ZeX/DXI3AAAADBMCb2/9SdJmtje2vaKkAySd2+MyAQAAFIUmDT0UEQtsHynpAqXbkp0YEbf0\nuFi9UnyzjSajbXkllnk0GG3LK7HMo8FoW94iOSJ6XQYAAABgxNCkAQAAAEUj8AIAAKBoBF4MG9ub\n255Z+fu77U/anmJ7TqX7npVxPmd7tu07bO9W6b577jbb9uRK941tX5O7n54v9uv2cp5o+yHbN1e6\nrWX7Itt35tc1c3fb/kEu7yzbr6+Mc3Ae/k7bB1e6v8H2TXmcH9j2QPPo0fJ+2/bteZnOtr1G7t5n\n++nKd33sUJdroM+uR8s84uux7ZXy/7Nz/77uLHHLZT69srz9tmfm7sv892z7lbYvtX2r7Vtsf2Ko\n5VwWtuUBlrfYbXmAZS56W0YLEcEff8P+p3QR3gNKN9SeIumzNcNsIelGSStJ2ljSXXm85fP7TSSt\nmIfZIo9zhqQD8vtjJX2kB8u2g6TXS7q50u1bkibn95MlfTO/31PS+ZIs6c2Srsnd15J0d35dM79f\nM/e7Ng/rPO4eA82jR8v7Dklj8vtvVpa3rzpc03Q6Wq5Wn10Pl3nE12NJH5V0bH5/gKTTe7nMTf2/\nK+nLpXzPktaT9Pr8fjVJf87fZZHb8gDLW+y2PMAyT1HB2zJ/9X/U8GKk7CLproi4d4Bh9pb0i4h4\nNiLukTRb6XHLtY9czrUIO0v6VR7/JEn7jNgStBARV0h6tKnz3rk80qLl2lvSyZFcLWkN2+tJ2k3S\nRRHxaEQ8JukiSbvnfi+LiKsj7SlPbppW3TxGVN3yRsSFEbEg/3u10j2kWxricrX67EZci++4leFc\nj6ufxa8k7dKoPRtpAy1zLsP+kk4baBrL0vccEXMj4vr8/glJtyk9/bLIbbnV8pa8LQ/wHbdSxLaM\negRejJQDtOjB8ch8KuvEyum7ukcrrz9A97Ul/a2yc250XxqsGxFz8/sHJK2b33e6jOvn983dB5pH\nr31IqfamYWPbN9i+3Pb2udtQlqvVZ9RLI70evzhO7v94Hr7Xtpf0YETcWelWzPecTzdvI+kajYJt\nuWl5q4rdlmuWebRuy6MWgRfDLrdh2kvSL3OnYyRtKmm8pLlKp0aLlWs9RvR+f92YRztsf0HSAkmn\n5E5zJW0YEdtI+rSkU22/rN3pLS3L1cKoWo+bHKhFf8AW8z3bXlXSmZI+GRF/r/YrcVtutbwlb8s1\nyzyat+VRi8CLkbCHpOsj4kFJiogHI+L5iHhB0vFKp4ek1o9WbtX9EaVTYWOaui8NHmycosuvD+Xu\nnS7jHC16SrG6jK3m0RO2D5H0TkkH5YOb8qnAR/L765Tavb1aQ1uuperR211aj18cJ/dfPQ/fM7kc\n75Z0eqNbKd+z7RWUgtApEXHWEMu5zGzLLZa36G25bplH67Y82hF4MRIWqQ1qaqu1r6TGVeDnSjog\nX826saTNlC6GqH3kct4RXyppvzz+wZLOGdElad+5SuWRFi3XuZI+mC5S9pslPZ5P+V0g6R2218yn\n094h6YLc7++235zbe32waVp18+g627tL+ndJe0XEU5Xu42wvn99vovSd3j3E5Wr12fVEl9bj6mex\nn6RLGgGkh94u6faIePE0dgnfcy7fCZJui4jvVXoVuS23Wt6St+UBlnm0bsujWywFV87xV86fpFWU\nfsWuXun2c0k3SZqltBNYr9LvC0o1B3coX+mbu++pdEXtXZK+UOm+idIOaLZSk4mVerCMpymdBntO\nqc3Wh5XaZl0s6U5Jv5O0Vh7Wkn6Ul+MmSRMq0/lQXo7Zkg6tdJ+gtAO+S9IPtfCJiLXz6NHyzlZq\nnzYz/zWuRn6PpFtyt+slvWuoyzXQZ9ejZR7x9VjSS/L/s3P/TXq5zLn7NElHNA27zH/Pkt6mdMp9\nVmU93nMo5dQysC0PsLzFbssDLHPR2zJ/9X88WhgAAABFo0kDAAAAikbgBQAAQNEIvAAAACgagRcA\nAABFI/ACAACgaAReAKOO7edtz7R9s+1f2l65w/E/3/T/v9m+zfYpA4xziO0f5vdH2P5gm/P6Z9tX\nNXUbY/tB268YYLwptj/bzjzaLEdffkABACxzCLwARqOnI2J8RLxO0j8kHdHOSPnG+ctJ+nxTr49K\n2jUiDmpnOhFxbESc3GZZr5S0ge2NKt3eLumWiPhrm9NYIrY/Iul8SV+1fZntl3djvgAwXAi8AEa7\nKyW9SpJsfzrX+t5s+5O5W5/tO2yfrHSz/RMkvTTXEJ9i+1ilm8+fb/tTttey/Wvbs2xfbXur5hlW\na19tj8/DzbJ9dn5a14siPf70DKWnOzUcoPw0Q9uH2f6T7Rttn1lXW51D6oT8fqzt/vx+edvfzuPP\nsn14zbirSfqKpIMkfUnSIZLmt/3pAsBSgMALYNRyesb9HpJusv0GSYdKepOkN0s6zPY2edDNJP04\nIraMiEO1sIb4oIg4QtJfJe0UEd9XCoc3RMRWSjXBg9XknizpP/LwN0k6qmaY05QDr+2VlJ76dGbu\nd1ZEvDEitpZ0m9JT4dr1YaXHvL5R0hvzMm/cNMwLSk+rWkuSIqI/Ip7oYB4A0HNjel0AAOiBl9qe\nmd9fqVRr+xFJZ0fEfEmyfZak7ZUePXpvRFzd5rTfpvRYVkXEJbbXtv2yugFtry5pjYi4PHc6Selx\npIuIiBm2V7W9uaTXSromIh7NvV9n+2uS1pC0qqQL2iynJL1D0la298v/r64U7u+pzHu+7cMkfUPS\ny22/TtKXI+KpDuYDAD1F4AUwGj0dEeOrHWwPNPzScAq/Ucv72vy+YZqkfSLixnxR2Y414y7QwjN6\nL6l0t6SPR8SAITkizrU9S9K7JE2Q9BlJX+18EQCgN2jSAADJlZL2sb2y7VUk7Zu71XnO9goDTOcg\nSbK9o6SHI+LvdQNGxOOSHrO9fe70L5IurxtWKeR+QNLOks6pdF9N0txcnlYXzfVLekN+v1+l+wWS\nPtJYFtuvzsv+olyz3Lhg7gmlZhOrtZgPACyVqOEFAEkRcb3taZKuzZ1+GhE32O6rGfw4SbNsX19z\nZ4Ypkk7MNaJPSTp4kFkfLOnYfLHZ3UrtiOvKd5vt+ZKuazS7yL4k6RpJ8/JrXRj9jqQzbE+SNL3S\n/aeS+iRd71TFPU/SPk3jriDpJ5LWljRW0n2S3j/IMgHAUsUR0esyAACWcjn47xgR03pbEgDoHE0a\nAADt+JukmYMOBQBLIWp4AQAAUDRqeAEAAFA0Ai8AAACKRuAFAABA0Qi8AAAAKBqBFwAAAEX7/wtr\nW/ReB12bAAAAAElFTkSuQmCC\n", - "text/plain": [ - "" - ] - }, - "metadata": {}, - "output_type": "display_data" - } - ], - "source": [ - "# Initialize the short and long windows\n", - "short_window = 5\n", - "long_window = 30\n", - "\n", - "# Number of simulations\n", - "sim_num = 2000\n", - "\n", - "# Set the initial capital\n", - "initial_capital= float(100000.0)\n", - "\n", - "# Create a DataFrame `positions`\n", - "positions = pd.DataFrame(index=signals.index).fillna(0.0)\n", - "\n", - "#set up empty list to hold our ending values for each simulated price series\n", - "sim_result = []\n", - "\n", - "# Set up empty list to hold protfolio value for each simulated price serries, this is the value of position['total']\n", - "portfolio_total = []\n", - " \n", - "#Define Variables\n", - "start_price = stock_df['Adj Close'][-1] #starting stock price (i.e. last available real stock price)\n", - "trading_days = 252 # Number of trading days\n", - "\n", - "\n", - "# Initialize the `signals` DataFrame \n", - "signals = pd.DataFrame()\n", - "\n", - "# initialize by setting the value for all rows in this column to 0.0.\n", - "signals['signal'] = 0.0\n", - "signals['short_mavg'] = 0.0\n", - "\n", - "#calculate the compound annual growth rate (CAGR) which \n", - "#will give us our mean return input (mu) \n", - "days = (stock_df.index[-1] - stock_df.index[0]).days\n", - "cagr = ((((stock_df['Adj Close'][-1]) / stock_df['Adj Close'][1])) ** (365.0/days)) - 1\n", - "mu = cagr\n", - " \n", - "#create a series of percentage returns and calculate \n", - "#the annual volatility of returns. Generally, the higher the volatility, \n", - "#the riskier the investment in that stock, which results in investing in one over another.\n", - "stock_df['Returns'] = stock_df['Adj Close'].pct_change()\n", - "vol = stock_df['Returns'].std()*sqrt(trading_days)\n", - "\n", - "\n", - "\n", - "#choose number of runs to simulate \n", - "for i in range(sim_num):\n", - " #create list of daily returns using random normal distribution\n", - " daily_returns=np.random.normal(mu/trading_days,vol/sqrt(trading_days),trading_days)+1\n", - " \n", - " #set starting price and create price series generated by above random daily returns\n", - " price_list = [start_price]\n", - " \n", - " for x in daily_returns:\n", - " price_list.append(price_list[-1]*x)\n", - " \n", - " #Convert list to Pandas DataFrame\n", - " price_list_df = pd.DataFrame(price_list)\n", - " \n", - " #append the ending value of each simulated run to the empty list we created at the beginning\n", - " sim_result.append(price_list[-1])\n", - " \n", - " # Create short simple moving average over the short & long window\n", - " signals['short_mavg'] = price_list_df[0].rolling(short_window).mean()\n", - " signals['long_mavg'] = price_list_df[0].rolling(long_window).mean()\n", - " \n", - " # Create a signal when the short moving average crosses the long moving average, \n", - " # but only for the period greater than the shortest moving average window. \n", - " signals['signal'][short_window:] = np.where(signals['short_mavg'][short_window:] \n", - " > signals['long_mavg'][short_window:], 1.0, 0.0) \n", - "\n", - " # Generate trading orders\n", - " signals['positions'] = signals['signal'].diff()\n", - " \n", - " # Buy 100 shares\n", - " positions[STOCK] = 100*signals['signal']\n", - " \n", - " # Initialize the portfolio with value owned \n", - " portfolio = positions.multiply(price_list_df[0], axis=0)\n", - "\n", - " # Store the difference in shares owned \n", - " pos_diff = positions.diff()\n", - "\n", - " # Add `holdings` to portfolio\n", - " portfolio['holdings'] = (positions.multiply(price_list_df[0], axis=0)).sum(axis=1)\n", - "\n", - " # Add `cash` to portfolio\n", - " portfolio['cash'] = initial_capital - (pos_diff.multiply(price_list_df[0], axis=0)).sum(axis=1).cumsum() \n", - "\n", - " # Add `total` to portfolio\n", - " portfolio['total'] = portfolio['cash'] + portfolio['holdings']\n", - " \n", - " #append the ending value of each simulated run to the empty list we created at the beginning\n", - " portfolio_total.append(portfolio['total'].iloc[-1])\n", - "\n", - " \n", - "#create histogram of ending stock values for our mutliple simulations\n", - "plt.rcParams[\"figure.figsize\"] = (9,8) \n", - "plt.hist(sim_result,bins=50)\n", - "plt.suptitle('Monte Carlo Simulation Results', fontsize=20)\n", - "plt.xlabel('Stock Value $')\n", - "plt.show()\n", - "\n", - "#create histogram of ending protfolio values for our mutliple simulations, compare this value to \"initial_capital\"\n", - "plt.hist(portfolio_total,bins=50)\n", - "plt.suptitle('Portfolio Simulated Results (based on $100K investment / ' + str(trading_days) + ' days)', fontsize=20)\n", - "plt.xlabel('Portfolio Value $')\n", - "plt.show()\n" - ] - }, - { - "cell_type": "code", - "execution_count": null, - "metadata": { - "collapsed": true - }, - "outputs": [], - "source": [] - } - ], - "metadata": { - "kernelspec": { - "display_name": "Python 3", - "language": "python", - "name": "python3" - }, - "language_info": { - "codemirror_mode": { - "name": "ipython", - "version": 3 - }, - "file_extension": ".py", - "mimetype": "text/x-python", - "name": "python", - "nbconvert_exporter": "python", - "pygments_lexer": "ipython3", - "version": "3.4.3" - } - }, - "nbformat": 4, - "nbformat_minor": 2 -} diff --git a/workshops/monte-carlo-on-ec2-spot-fleet/src/queue_processor.py b/workshops/monte-carlo-on-ec2-spot-fleet/src/queue_processor.py deleted file mode 100644 index 77e29fb9..00000000 --- a/workshops/monte-carlo-on-ec2-spot-fleet/src/queue_processor.py +++ /dev/null @@ -1,192 +0,0 @@ -#!/usr/bin/env python3 - -import boto3 -import time -import subprocess -import argparse -import os -import sys - - -def parseArguments(): - """ parses arguments - Helper function to parse command line arguments and return internally the parameters selected - or print a help function - - Returns: - string:SQS queue url - string:AWS region where the queue can be found - bool:Boolean describing if the process should stop when the queue is drained - int:Number of iterations to go through when drain_queue is set to true - int:Number of seconds to pause between polls to the queue - """ - parser = argparse.ArgumentParser(description='Process some integers.') - parser.add_argument('--queue', dest='queue',default='workshop', help='Amazon SQS') - parser.add_argument('--region', dest='region',default=None, help='Region') - parser.add_argument('--polling-freq-inSec', dest='sleep_interval', default=5, help='Time in seconds between polling') - parser.add_argument('--drain-queue-mode', dest='drain_queue_mode', default=False, help='Stop the queue has been drained') - parser.add_argument('--drain-queue-iterations', dest='drain_queue_iterations', - default=10, - help='Number of iterations to go through when drain_queue is set to true') - - args = parser.parse_args() - queue = args.queue - region = args.region - sleep_time_insecs = args.sleep_interval - drain_queue = args.drain_queue_mode - drain_queue_iterations = args.drain_queue_iterations - - try: - if region is None: - region = os.getenv("REGION") - except: - raise "Must pass region as environment variable or argument" - - if os.getenv("BATCH_MODE") == "true": - drain_queue = True - - if os.getenv("BATCH_ITERATIONS") is not None: - drain_queue_iterations = os.getenv("BATCH_ITERATIONS") - - - return queue, region, sleep_time_insecs, drain_queue, drain_queue_iterations - -class SimulationParameters: - """ Class used to hold the Simulation parameters - Use the static method to parse SQS Messages and generate instances of this - type. - """ - stock = '' - short_window_days = '' - long_window_days = '' - trading_days = '' - iterations = '' - valuation_id = '' - s3_bucket ='' - - @staticmethod - def extractSimulationParameters(message): - if message.message_attributes is None: - return None - simulation_parameters = SimulationParameters() - simulation_parameters.stock = message.message_attributes.get('stock').get('StringValue') - simulation_parameters.short_window_days = message.message_attributes.get('short').get('StringValue') - simulation_parameters.long_window_days = message.message_attributes.get('long').get('StringValue') - simulation_parameters.trading_days = message.message_attributes.get('days').get('StringValue') - simulation_parameters.iterations = message.message_attributes.get('iter').get('StringValue') - simulation_parameters.valuation_id = message.message_attributes.get('key').get('StringValue') - simulation_parameters.s3_bucket = message.message_attributes.get('bucket').get('StringValue') - return simulation_parameters - - -# takes inputs, runs simulations and returns CSV output -def runSimulation(simulation_parameters): - """ Run simulations - This function uses the subprocess module to execute the simulation in an - out of process mode. - - Parameters: - simulation_parameters (SimulationParameters): Object with the simulation - parameters - - Returns: - int: The exit code for the process, 0 if everything went well - """ - # use Subprocess to call code - try: - output_value = 0 - subprocess.check_output([ - 'python3','worker.py', - '--stock', simulation_parameters.stock, - '--short_window_days', simulation_parameters.short_window_days, - '--long_window_days', simulation_parameters.long_window_days, - '--trading_days', simulation_parameters.trading_days, - '--iterations', simulation_parameters.iterations, - '--id', simulation_parameters.valuation_id] - ) - return output_value - except subprocess.CalledProcessError as e: - return e.returncode - - -def storeResults(simulation_parameters): - expected_result_files = [ - "{0}_{1}_{2}.csv".format( - simulation_parameters.valuation_id, - simulation_parameters.stock, - x - ) for x in [ - "MonteCarloSimResult", - "portfolio_total", - "sim_results"] - ] - expected_result_files.append( - "{0}_PortfolioRiskAssessment.csv".format( - simulation_parameters.valuation_id) - ) - - s3 = boto3.client('s3') - for res_file_path in expected_result_files: - print('Saving {0} to S3'.format(res_file_path)) - s3.upload_file( - res_file_path, - simulation_parameters.s3_bucket, - res_file_path) - print('Cleaning up {0}'.format(res_file_path)) - os.remove(res_file_path) - -def inLoop(drain_queue=False, drain_queue_iterations=[10]): - drain_queue_iterations[0] = max(0,drain_queue_iterations[0]-1) - if not drain_queue or drain_queue_iterations[0] > 0: - return True - print("Queue worker was configured in batch mode. It has reached the max retries and will be exiting now") - return False - -# Checks the queue for new messages, -# send them to the simulation if found and deletes from queue once complete. -def main(argv): - message_count = 0 - queue_name, region, sleep_time_insecs, drain_queue, max_drain_queue_iterations = parseArguments() - drain_queue_iterations = [max_drain_queue_iterations] - - while inLoop(drain_queue, drain_queue_iterations): - # Get the SQS service resource and the queue - sqs = boto3.resource('sqs', region_name=region) - queue = sqs.get_queue_by_name(QueueName=queue_name) - # Get message attributes and call simulation - for message in queue.receive_messages(MessageAttributeNames=['All']): - simulation_parameters = SimulationParameters.extractSimulationParameters(message) - message_count = message_count + 1 - - # run simulations and get results - print('Starting simulation') - start_time = time.monotonic() - simStatus = runSimulation(simulation_parameters) - print('Simulation took {0:.4f} secs and exit with status : {1}'.format( - (time.monotonic()-start_time), - simStatus)) - - if simStatus == 0: - storeResults(simulation_parameters) - - # delete the processed message and re-setting the drain_queue iterations - print('Telling SQS message was successfully processed') - message.delete() - drain_queue_iterations = [max_drain_queue_iterations] - print('Messages processed: {0}'.format(message_count)) - - print('Simulation {0}: stock={1}, short={2}, long={3}, days={4}, iterations={5}, id={6}, bucket={7}'.format( - "success" if simStatus ==0 else "failure", - simulation_parameters.stock, - simulation_parameters.short_window_days, - simulation_parameters.long_window_days, - simulation_parameters.trading_days, - simulation_parameters.iterations, - simulation_parameters.valuation_id, - simulation_parameters.s3_bucket)) - print('pausing for {0} seconds.'.format(sleep_time_insecs)) - time.sleep(sleep_time_insecs) - return 0 - -if __name__ == "__main__": - sys.exit(main(sys.argv)) \ No newline at end of file diff --git a/workshops/monte-carlo-on-ec2-spot-fleet/src/web/app.js b/workshops/monte-carlo-on-ec2-spot-fleet/src/web/app.js deleted file mode 100644 index 9cf9aeae..00000000 --- a/workshops/monte-carlo-on-ec2-spot-fleet/src/web/app.js +++ /dev/null @@ -1,50 +0,0 @@ -var express = require('express'); -var path = require('path'); -var favicon = require('serve-favicon'); -var logger = require('morgan'); -var cookieParser = require('cookie-parser'); -var bodyParser = require('body-parser'); -var expressValidator = require('express-validator'); - -var index = require('./routes/index'); -var config = require('./routes/config'); -//var mockiam = require('./routes/mockiam'); - -var app = express(); - -// view engine setup -app.set('views', path.join(__dirname, 'views')); -app.set('view engine', 'jade'); - -// uncomment after placing your favicon in /public -//app.use(favicon(path.join(__dirname, 'public', 'favicon.ico'))); -app.use(logger('dev')); -app.use(bodyParser.json()); -app.use(bodyParser.urlencoded({ extended: false })); -app.use(expressValidator()); // Add this after the bodyParser middlewares! -app.use(cookieParser()); -app.use(express.static(path.join(__dirname, 'public'))); - -app.use('/', index); -app.use('/config', config); -//app.use('/mock/iam', mockiam); - -// catch 404 and forward to error handler -app.use(function(req, res, next) { - var err = new Error('Not Found'); - err.status = 404; - next(err); -}); - -// error handler -app.use(function(err, req, res, next) { - // set locals, only providing error in development - res.locals.message = err.message; - res.locals.error = req.app.get('env') === 'development' ? err : {}; - - // render the error page - res.status(err.status || 500); - res.render('error'); -}); - -module.exports = app; diff --git a/workshops/monte-carlo-on-ec2-spot-fleet/src/web/bin/www b/workshops/monte-carlo-on-ec2-spot-fleet/src/web/bin/www deleted file mode 100755 index 0cb61a3f..00000000 --- a/workshops/monte-carlo-on-ec2-spot-fleet/src/web/bin/www +++ /dev/null @@ -1,90 +0,0 @@ -#!/usr/bin/env node - -/** - * Module dependencies. - */ - -var app = require('../app'); -var debug = require('debug')('spotlabnodejs:server'); -var http = require('http'); - -/** - * Get port from environment and store in Express. - */ - -var port = normalizePort(process.env.PORT || '80'); -app.set('port', port); - -/** - * Create HTTP server. - */ - -var server = http.createServer(app); - -/** - * Listen on provided port, on all network interfaces. - */ - -server.listen(port); -server.on('error', onError); -server.on('listening', onListening); - -/** - * Normalize a port into a number, string, or false. - */ - -function normalizePort(val) { - var port = parseInt(val, 10); - - if (isNaN(port)) { - // named pipe - return val; - } - - if (port >= 0) { - // port number - return port; - } - - return false; -} - -/** - * Event listener for HTTP server "error" event. - */ - -function onError(error) { - if (error.syscall !== 'listen') { - throw error; - } - - var bind = typeof port === 'string' - ? 'Pipe ' + port - : 'Port ' + port; - - // handle specific listen errors with friendly messages - switch (error.code) { - case 'EACCES': - console.error(bind + ' requires elevated privileges'); - process.exit(1); - break; - case 'EADDRINUSE': - console.error(bind + ' is already in use'); - process.exit(1); - break; - default: - throw error; - } -} - -/** - * Event listener for HTTP server "listening" event. - */ - -function onListening() { - var addr = server.address(); - var bind = typeof addr === 'string' - ? 'pipe ' + addr - : 'port ' + addr.port; - debug('Listening on ' + bind); -} diff --git a/workshops/monte-carlo-on-ec2-spot-fleet/src/web/config.json b/workshops/monte-carlo-on-ec2-spot-fleet/src/web/config.json deleted file mode 100644 index f99be1e1..00000000 --- a/workshops/monte-carlo-on-ec2-spot-fleet/src/web/config.json +++ /dev/null @@ -1 +0,0 @@ -{ "region": "REGION_NAME"} \ No newline at end of file diff --git a/workshops/monte-carlo-on-ec2-spot-fleet/src/web/controllers/ConfigController.js b/workshops/monte-carlo-on-ec2-spot-fleet/src/web/controllers/ConfigController.js deleted file mode 100644 index b80f62f8..00000000 --- a/workshops/monte-carlo-on-ec2-spot-fleet/src/web/controllers/ConfigController.js +++ /dev/null @@ -1,41 +0,0 @@ -var fs = require('fs'); - -exports.config = function(req, res) { - - try { - // Pull existing Config - var labConfig = JSON.parse(fs.readFileSync('./labConfig.json', 'utf8')); - var awsConfig = JSON.parse(fs.readFileSync('./config.json', 'utf8')); - res.render('config', { title: 'Configuration Page - Spot Stock Trading Lab', sqs: labConfig.sqs, s3: labConfig.s3, awsRegion: awsConfig.region }); - } - catch(ex){ - res.render('config', { title: 'Configuration Page - Spot Stock Trading Lab', sqs: '', s3: '', awsRegion: '' }); - } -}; - -exports.config_lab = function(req, res) { - - var sqsUrl = req.body.sqs - var s3Bucket = req.body.bucket - var awsRegion = req.body.region - - fs.writeFile("./labConfig.json", "{ \"sqs\": \""+ sqsUrl +"\", \"s3\": \""+ s3Bucket +"\"}", function(err) { - var feedback = Array(); - if(err) { - feedback.push(err.message); - res.render('config', { title: 'Configuration Page - Spot Stock Trading Lab - Error', feedback: feedback, sqs: sqsUrl, s3: s3Bucket, awsRegion: awsRegion }); - } - }); - - fs.writeFile("./config.json", "{ \"region\": \""+ awsRegion +"\"}", function(err) { - var feedback = Array(); - if(err) { - feedback.push(err.message); - res.render('config', { title: 'Configuration Page - Spot Stock Trading Lab - Error', feedback: feedback, sqs: sqsUrl, s3: s3Bucket, awsRegion: awsRegion }); - } - feedback.push('Config was saved!'); - res.render('config', { title: 'Configuration Page - Spot Stock Trading Lab - Saved', feedback: feedback, sqs: sqsUrl, s3: s3Bucket, awsRegion: awsRegion }); - }); - - -} \ No newline at end of file diff --git a/workshops/monte-carlo-on-ec2-spot-fleet/src/web/controllers/HomeController.js b/workshops/monte-carlo-on-ec2-spot-fleet/src/web/controllers/HomeController.js deleted file mode 100644 index 1b06d9ef..00000000 --- a/workshops/monte-carlo-on-ec2-spot-fleet/src/web/controllers/HomeController.js +++ /dev/null @@ -1,104 +0,0 @@ -var AWS = require('aws-sdk'); -var fs = require('fs'); - -exports.index = function(req, res) { - res.render('index', { title: 'lab3: Spot Stock Trading Lab' }); -}; - - -exports.run_trade = function(req, res) { - //res.send('Not implemented: you tried to run the spot trade'); - req.checkBody('stock', 'Stock Symbol is required and can not be null').notEmpty(); - req.checkBody('short', 'Short Window is required and can not be null').notEmpty(); - req.checkBody('short', 'Short Window must be an integer').isInt(); - req.checkBody('long', 'Long Window is required and can not be null').notEmpty(); - req.checkBody('long', 'Long Window must be an integer').isInt(); - req.checkBody('days', 'Days is required and can not be null').notEmpty(); - req.checkBody('days', 'Days must be an integer').isInt(); - req.checkBody('iter', 'Iterations is required and can not be null').notEmpty(); - req.checkBody('iter', 'Iterations must be an integer').isInt(); - //Run the validators - var errors = req.validationErrors(); - - if (errors) { - //If there are errors render the form again, passing the previously entered values and errors - res.render('index', { title: 'lab3: Spot Stock Trading Lab - validation failed', errors: errors, stock:req.body.stock, short:req.body.short, long:req.body.long, days:req.body.days, iter:req.body.iter}); - return; - } - else { - - var labConfig = JSON.parse(fs.readFileSync('./labConfig.json', 'utf8')); - - var SQS = new AWS.SQS(); - - AWS.config.loadFromPath('./config.json'); - - - - // Create an SQS service object - var sqs = new AWS.SQS({apiVersion: '2012-11-05'}); - var curTime = new Date(); - var milsTime = curTime.getTime(); - var params = { - DelaySeconds: 10, - MessageAttributes: { - "stock": { - DataType: "String", - StringValue: req.body.stock - }, - "short": { - DataType: "Number", - StringValue: req.body.short - }, - "long": { - DataType: "Number", - StringValue: req.body.long - }, - "days": { - DataType: "Number", - StringValue: req.body.days - }, - "iter": { - DataType: "Number", - StringValue: req.body.iter - }, - "key": { - DataType: "Number", - StringValue: milsTime.toString() - }, - "bucket": { - DataType: "String", - StringValue: labConfig.s3 - } - }, - MessageBody: "Spot lab", - QueueUrl: labConfig.sqs - }; - - if(req.body.isPreview != "on") { - sqs.sendMessage(params, function (err, data) { - if (err) { - var errors = new Array(); - errors.push(err); - res.render('index', { - title: 'lab3: Spot Stock Trading Lab - validation failed', - errors: errors - }); - return; - } else { - res.render('index', { - title: 'lab3: Spot Stock Trading Lab - validation failed', - sqs: 'Trade Strategy Executing' - }); - return; - } - }); - } - else { - res.render('index', { - title: 'lab3: Spot Stock Trading Lab - Preview Response', - previewParams: params - }); - } - } -}; \ No newline at end of file diff --git a/workshops/monte-carlo-on-ec2-spot-fleet/src/web/labConfig.json b/workshops/monte-carlo-on-ec2-spot-fleet/src/web/labConfig.json deleted file mode 100644 index d6d5fc51..00000000 --- a/workshops/monte-carlo-on-ec2-spot-fleet/src/web/labConfig.json +++ /dev/null @@ -1 +0,0 @@ -{ "sqs": "", "s3": ""} \ No newline at end of file diff --git a/workshops/monte-carlo-on-ec2-spot-fleet/src/web/node_modules/.bin/acorn b/workshops/monte-carlo-on-ec2-spot-fleet/src/web/node_modules/.bin/acorn deleted file mode 120000 index cf767603..00000000 --- a/workshops/monte-carlo-on-ec2-spot-fleet/src/web/node_modules/.bin/acorn +++ /dev/null @@ -1 +0,0 @@ -../acorn/bin/acorn \ No newline at end of file diff --git a/workshops/monte-carlo-on-ec2-spot-fleet/src/web/node_modules/.bin/cleancss b/workshops/monte-carlo-on-ec2-spot-fleet/src/web/node_modules/.bin/cleancss deleted file mode 120000 index 2a3439eb..00000000 --- a/workshops/monte-carlo-on-ec2-spot-fleet/src/web/node_modules/.bin/cleancss +++ /dev/null @@ -1 +0,0 @@ -../clean-css/bin/cleancss \ No newline at end of file diff --git a/workshops/monte-carlo-on-ec2-spot-fleet/src/web/node_modules/.bin/jade b/workshops/monte-carlo-on-ec2-spot-fleet/src/web/node_modules/.bin/jade deleted file mode 120000 index 65a3bac6..00000000 --- a/workshops/monte-carlo-on-ec2-spot-fleet/src/web/node_modules/.bin/jade +++ /dev/null @@ -1 +0,0 @@ -../jade/bin/jade.js \ No newline at end of file diff --git a/workshops/monte-carlo-on-ec2-spot-fleet/src/web/node_modules/.bin/mime b/workshops/monte-carlo-on-ec2-spot-fleet/src/web/node_modules/.bin/mime deleted file mode 120000 index fbb7ee0e..00000000 --- a/workshops/monte-carlo-on-ec2-spot-fleet/src/web/node_modules/.bin/mime +++ /dev/null @@ -1 +0,0 @@ -../mime/cli.js \ No newline at end of file diff --git a/workshops/monte-carlo-on-ec2-spot-fleet/src/web/node_modules/.bin/mkdirp b/workshops/monte-carlo-on-ec2-spot-fleet/src/web/node_modules/.bin/mkdirp deleted file mode 120000 index 017896ce..00000000 --- a/workshops/monte-carlo-on-ec2-spot-fleet/src/web/node_modules/.bin/mkdirp +++ /dev/null @@ -1 +0,0 @@ -../mkdirp/bin/cmd.js \ No newline at end of file diff --git a/workshops/monte-carlo-on-ec2-spot-fleet/src/web/node_modules/.bin/uglifyjs b/workshops/monte-carlo-on-ec2-spot-fleet/src/web/node_modules/.bin/uglifyjs deleted file mode 120000 index fef3468b..00000000 --- a/workshops/monte-carlo-on-ec2-spot-fleet/src/web/node_modules/.bin/uglifyjs +++ /dev/null @@ -1 +0,0 @@ -../uglify-js/bin/uglifyjs \ No newline at end of file diff --git a/workshops/monte-carlo-on-ec2-spot-fleet/src/web/node_modules/.bin/uuid b/workshops/monte-carlo-on-ec2-spot-fleet/src/web/node_modules/.bin/uuid deleted file mode 120000 index b3e45bc5..00000000 --- a/workshops/monte-carlo-on-ec2-spot-fleet/src/web/node_modules/.bin/uuid +++ /dev/null @@ -1 +0,0 @@ -../uuid/bin/uuid \ No newline at end of file diff --git a/workshops/monte-carlo-on-ec2-spot-fleet/src/web/node_modules/@types/express-serve-static-core/LICENSE b/workshops/monte-carlo-on-ec2-spot-fleet/src/web/node_modules/@types/express-serve-static-core/LICENSE deleted file mode 100644 index 4b1ad51b..00000000 --- a/workshops/monte-carlo-on-ec2-spot-fleet/src/web/node_modules/@types/express-serve-static-core/LICENSE +++ /dev/null @@ -1,21 +0,0 @@ - MIT License - - Copyright (c) Microsoft Corporation. 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, subject to the following conditions: - - The above copyright notice and this permission notice shall be included in all - copies or substantial portions of the Software. - - 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 diff --git a/workshops/monte-carlo-on-ec2-spot-fleet/src/web/node_modules/@types/express-serve-static-core/README.md b/workshops/monte-carlo-on-ec2-spot-fleet/src/web/node_modules/@types/express-serve-static-core/README.md deleted file mode 100644 index f0df2238..00000000 --- a/workshops/monte-carlo-on-ec2-spot-fleet/src/web/node_modules/@types/express-serve-static-core/README.md +++ /dev/null @@ -1,16 +0,0 @@ -# Installation -> `npm install --save @types/express-serve-static-core` - -# Summary -This package contains type definitions for Express (http://expressjs.com). - -# Details -Files were exported from https://www.github.com/DefinitelyTyped/DefinitelyTyped/tree/master/types/express-serve-static-core - -Additional Details - * Last updated: Mon, 18 Sep 2017 14:08:00 GMT - * Dependencies: http, node - * Global values: none - -# Credits -These definitions were written by Boris Yankov , Michał Lytek , Kacper Polak . diff --git a/workshops/monte-carlo-on-ec2-spot-fleet/src/web/node_modules/@types/express-serve-static-core/index.d.ts b/workshops/monte-carlo-on-ec2-spot-fleet/src/web/node_modules/@types/express-serve-static-core/index.d.ts deleted file mode 100644 index 7fa4f090..00000000 --- a/workshops/monte-carlo-on-ec2-spot-fleet/src/web/node_modules/@types/express-serve-static-core/index.d.ts +++ /dev/null @@ -1,1121 +0,0 @@ -// Type definitions for Express 4.x -// Project: http://expressjs.com -// Definitions by: Boris Yankov , Michał Lytek , Kacper Polak -// Definitions: https://github.com/DefinitelyTyped/DefinitelyTyped -// This extracts the core definitions from express to prevent a circular dependency between express and serve-static -/// - -declare global { - namespace Express { - - // These open interfaces may be extended in an application-specific manner via declaration merging. - // See for example method-override.d.ts (https://github.com/DefinitelyTyped/DefinitelyTyped/blob/master/method-override/method-override.d.ts) - export interface Request { } - export interface Response { } - export interface Application { } - } -} - -import * as http from "http"; - -interface NextFunction { - (err?: any): void; -} - -interface RequestHandler { - (req: Request, res: Response, next: NextFunction): any; -} - -interface ErrorRequestHandler { - (err: any, req: Request, res: Response, next: NextFunction): any; -} - -type PathParams = string | RegExp | (string | RegExp)[]; - -type RequestHandlerParams = RequestHandler | ErrorRequestHandler | (RequestHandler | ErrorRequestHandler)[]; - -interface IRouterMatcher { - (path: PathParams, ...handlers: RequestHandler[]): T; - (path: PathParams, ...handlers: RequestHandlerParams[]): T; -} - -interface IRouterHandler { - (...handlers: RequestHandler[]): T; - (...handlers: RequestHandlerParams[]): T; -} - -interface IRouter extends RequestHandler { - /** - * Map the given param placeholder `name`(s) to the given callback(s). - * - * Parameter mapping is used to provide pre-conditions to routes - * which use normalized placeholders. For example a _:user_id_ parameter - * could automatically load a user's information from the database without - * any additional code, - * - * The callback uses the samesignature as middleware, the only differencing - * being that the value of the placeholder is passed, in this case the _id_ - * of the user. Once the `next()` function is invoked, just like middleware - * it will continue on to execute the route, or subsequent parameter functions. - * - * app.param('user_id', function(req, res, next, id){ - * User.find(id, function(err, user){ - * if (err) { - * next(err); - * } else if (user) { - * req.user = user; - * next(); - * } else { - * next(new Error('failed to load user')); - * } - * }); - * }); - * - * @param name - * @param fn - */ - param(name: string, handler: RequestParamHandler): this; - // Alternatively, you can pass only a callback, in which case you have the opportunity to alter the app.param() API - // deprecated since express 4.11.0 - param(callback: (name: string, matcher: RegExp) => RequestParamHandler): this; - - /** - * Special-cased "all" method, applying the given route `path`, - * middleware, and callback to _every_ HTTP method. - * - * @param path - * @param fn - */ - all: IRouterMatcher; - get: IRouterMatcher; - post: IRouterMatcher; - put: IRouterMatcher; - delete: IRouterMatcher; - patch: IRouterMatcher; - options: IRouterMatcher; - head: IRouterMatcher; - - checkout: IRouterMatcher; - connect: IRouterMatcher; - copy: IRouterMatcher; - lock: IRouterMatcher; - merge: IRouterMatcher; - mkactivity: IRouterMatcher; - mkcol: IRouterMatcher; - move: IRouterMatcher; - "m-search": IRouterMatcher; - notify: IRouterMatcher; - propfind: IRouterMatcher; - proppatch: IRouterMatcher; - purge: IRouterMatcher; - report: IRouterMatcher; - search: IRouterMatcher; - subscribe: IRouterMatcher; - trace: IRouterMatcher; - unlock: IRouterMatcher; - unsubscribe: IRouterMatcher; - - use: IRouterHandler & IRouterMatcher; - - route(prefix: PathParams): IRoute; - /** - * Stack of configured routes - */ - stack: any[]; -} - -interface IRoute { - path: string; - stack: any; - all: IRouterHandler; - get: IRouterHandler; - post: IRouterHandler; - put: IRouterHandler; - delete: IRouterHandler; - patch: IRouterHandler; - options: IRouterHandler; - head: IRouterHandler; - - checkout: IRouterHandler; - copy: IRouterHandler; - lock: IRouterHandler; - merge: IRouterHandler; - mkactivity: IRouterHandler; - mkcol: IRouterHandler; - move: IRouterHandler; - "m-search": IRouterHandler; - notify: IRouterHandler; - purge: IRouterHandler; - report: IRouterHandler; - search: IRouterHandler; - subscribe: IRouterHandler; - trace: IRouterHandler; - unlock: IRouterHandler; - unsubscribe: IRouterHandler -} - -export interface Router extends IRouter { } - -interface CookieOptions { - maxAge?: number; - signed?: boolean; - expires?: Date | boolean; - httpOnly?: boolean; - path?: string; - domain?: string; - secure?: boolean | 'auto'; - encode?: (val: string) => void; - sameSite?: boolean | string; -} - -interface ByteRange { start: number; end: number; } - -interface RequestRanges extends Array { type: string; } - -interface Errback { (err: Error): void; } - -interface Request extends http.IncomingMessage, Express.Request { - - /** - * Return request header. - * - * The `Referrer` header field is special-cased, - * both `Referrer` and `Referer` are interchangeable. - * - * Examples: - * - * req.get('Content-Type'); - * // => "text/plain" - * - * req.get('content-type'); - * // => "text/plain" - * - * req.get('Something'); - * // => undefined - * - * Aliased as `req.header()`. - * - * @param name - */ - get(name: "set-cookie"): string[] | undefined; - get(name: string): string | undefined; - - header(name: "set-cookie"): string[] | undefined; - header(name: string): string | undefined; - - /** - * Check if the given `type(s)` is acceptable, returning - * the best match when true, otherwise `undefined`, in which - * case you should respond with 406 "Not Acceptable". - * - * The `type` value may be a single mime type string - * such as "application/json", the extension name - * such as "json", a comma-delimted list such as "json, html, text/plain", - * or an array `["json", "html", "text/plain"]`. When a list - * or array is given the _best_ match, if any is returned. - * - * Examples: - * - * // Accept: text/html - * req.accepts('html'); - * // => "html" - * - * // Accept: text/*, application/json - * req.accepts('html'); - * // => "html" - * req.accepts('text/html'); - * // => "text/html" - * req.accepts('json, text'); - * // => "json" - * req.accepts('application/json'); - * // => "application/json" - * - * // Accept: text/*, application/json - * req.accepts('image/png'); - * req.accepts('png'); - * // => undefined - * - * // Accept: text/*;q=.5, application/json - * req.accepts(['html', 'json']); - * req.accepts('html, json'); - * // => "json" - */ - accepts(): string[]; - accepts(type: string): string | false; - accepts(type: string[]): string | false; - accepts(...type: string[]): string | false; - - /** - * Returns the first accepted charset of the specified character sets, - * based on the request's Accept-Charset HTTP header field. - * If none of the specified charsets is accepted, returns false. - * - * For more information, or if you have issues or concerns, see accepts. - * @param charset - */ - acceptsCharsets(): string[]; - acceptsCharsets(charset: string): string | false; - acceptsCharsets(charset: string[]): string | false; - acceptsCharsets(...charset: string[]): string | false; - - /** - * Returns the first accepted encoding of the specified encodings, - * based on the request's Accept-Encoding HTTP header field. - * If none of the specified encodings is accepted, returns false. - * - * For more information, or if you have issues or concerns, see accepts. - * @param encoding - */ - acceptsEncodings(): string[]; - acceptsEncodings(encoding: string): string | false; - acceptsEncodings(encoding: string[]): string | false; - acceptsEncodings(...encoding: string[]): string | false; - - /** - * Returns the first accepted language of the specified languages, - * based on the request's Accept-Language HTTP header field. - * If none of the specified languages is accepted, returns false. - * - * For more information, or if you have issues or concerns, see accepts. - * - * @param lang - */ - acceptsLanguages(): string[]; - acceptsLanguages(lang: string): string | false; - acceptsLanguages(lang: string[]): string | false; - acceptsLanguages(...lang: string[]): string | false; - - /** - * Parse Range header field, - * capping to the given `size`. - * - * Unspecified ranges such as "0-" require - * knowledge of your resource length. In - * the case of a byte range this is of course - * the total number of bytes. If the Range - * header field is not given `null` is returned, - * `-1` when unsatisfiable, `-2` when syntactically invalid. - * - * NOTE: remember that ranges are inclusive, so - * for example "Range: users=0-3" should respond - * with 4 users when available, not 3. - * - * @param size - */ - range(size: number): RequestRanges|null|-1|-2; - - /** - * Return an array of Accepted media types - * ordered from highest quality to lowest. - */ - accepted: MediaType[]; - - /** - * @deprecated Use either req.params, req.body or req.query, as applicable. - * - * Return the value of param `name` when present or `defaultValue`. - * - * - Checks route placeholders, ex: _/user/:id_ - * - Checks body params, ex: id=12, {"id":12} - * - Checks query string params, ex: ?id=12 - * - * To utilize request bodies, `req.body` - * should be an object. This can be done by using - * the `connect.bodyParser()` middleware. - * - * @param name - * @param defaultValue - */ - param(name: string, defaultValue?: any): string; - - /** - * Check if the incoming request contains the "Content-Type" - * header field, and it contains the give mime `type`. - * - * Examples: - * - * // With Content-Type: text/html; charset=utf-8 - * req.is('html'); - * req.is('text/html'); - * req.is('text/*'); - * // => true - * - * // When Content-Type is application/json - * req.is('json'); - * req.is('application/json'); - * req.is('application/*'); - * // => true - * - * req.is('html'); - * // => false - * - * @param type - */ - is(type: string): string | false; - - /** - * Return the protocol string "http" or "https" - * when requested with TLS. When the "trust proxy" - * setting is enabled the "X-Forwarded-Proto" header - * field will be trusted. If you're running behind - * a reverse proxy that supplies https for you this - * may be enabled. - */ - protocol: string; - - /** - * Short-hand for: - * - * req.protocol == 'https' - */ - secure: boolean; - - /** - * Return the remote address, or when - * "trust proxy" is `true` return - * the upstream addr. - */ - ip: string; - - /** - * When "trust proxy" is `true`, parse - * the "X-Forwarded-For" ip address list. - * - * For example if the value were "client, proxy1, proxy2" - * you would receive the array `["client", "proxy1", "proxy2"]` - * where "proxy2" is the furthest down-stream. - */ - ips: string[]; - - /** - * Return subdomains as an array. - * - * Subdomains are the dot-separated parts of the host before the main domain of - * the app. By default, the domain of the app is assumed to be the last two - * parts of the host. This can be changed by setting "subdomain offset". - * - * For example, if the domain is "tobi.ferrets.example.com": - * If "subdomain offset" is not set, req.subdomains is `["ferrets", "tobi"]`. - * If "subdomain offset" is 3, req.subdomains is `["tobi"]`. - */ - subdomains: string[]; - - /** - * Short-hand for `url.parse(req.url).pathname`. - */ - path: string; - - /** - * Parse the "Host" header field hostname. - */ - hostname: string; - - /** - * @deprecated Use hostname instead. - */ - host: string; - - /** - * Check if the request is fresh, aka - * Last-Modified and/or the ETag - * still match. - */ - fresh: boolean; - - /** - * Check if the request is stale, aka - * "Last-Modified" and / or the "ETag" for the - * resource has changed. - */ - stale: boolean; - - /** - * Check if the request was an _XMLHttpRequest_. - */ - xhr: boolean; - - //body: { username: string; password: string; remember: boolean; title: string; }; - body: any; - - //cookies: { string; remember: boolean; }; - cookies: any; - - method: string; - - params: any; - - /** - * Clear cookie `name`. - * - * @param name - * @param options - */ - clearCookie(name: string, options?: any): Response; - - query: any; - - route: any; - - signedCookies: any; - - originalUrl: string; - - url: string; - - baseUrl: string; - - app: Application; -} - -interface MediaType { - value: string; - quality: number; - type: string; - subtype: string; -} - -interface Send { - (body?: any): Response; -} - -interface Response extends http.ServerResponse, Express.Response { - /** - * Set status `code`. - * - * @param code - */ - status(code: number): Response; - - /** - * Set the response HTTP status code to `statusCode` and send its string representation as the response body. - * @link http://expressjs.com/4x/api.html#res.sendStatus - * - * Examples: - * - * res.sendStatus(200); // equivalent to res.status(200).send('OK') - * res.sendStatus(403); // equivalent to res.status(403).send('Forbidden') - * res.sendStatus(404); // equivalent to res.status(404).send('Not Found') - * res.sendStatus(500); // equivalent to res.status(500).send('Internal Server Error') - * - * @param code - */ - sendStatus(code: number): Response; - - /** - * Set Link header field with the given `links`. - * - * Examples: - * - * res.links({ - * next: 'http://api.example.com/users?page=2', - * last: 'http://api.example.com/users?page=5' - * }); - * - * @param links - */ - links(links: any): Response; - - /** - * Send a response. - * - * Examples: - * - * res.send(new Buffer('wahoo')); - * res.send({ some: 'json' }); - * res.send('

some html

'); - * res.send(404, 'Sorry, cant find that'); - * res.send(404); - */ - send: Send; - - /** - * Send JSON response. - * - * Examples: - * - * res.json(null); - * res.json({ user: 'tj' }); - * res.json(500, 'oh noes!'); - * res.json(404, 'I dont have that'); - */ - json: Send; - - /** - * Send JSON response with JSONP callback support. - * - * Examples: - * - * res.jsonp(null); - * res.jsonp({ user: 'tj' }); - * res.jsonp(500, 'oh noes!'); - * res.jsonp(404, 'I dont have that'); - */ - jsonp: Send; - - /** - * Transfer the file at the given `path`. - * - * Automatically sets the _Content-Type_ response header field. - * The callback `fn(err)` is invoked when the transfer is complete - * or when an error occurs. Be sure to check `res.sentHeader` - * if you wish to attempt responding, as the header and some data - * may have already been transferred. - * - * Options: - * - * - `maxAge` defaulting to 0 (can be string converted by `ms`) - * - `root` root directory for relative filenames - * - `headers` object of headers to serve with file - * - `dotfiles` serve dotfiles, defaulting to false; can be `"allow"` to send them - * - * Other options are passed along to `send`. - * - * Examples: - * - * The following example illustrates how `res.sendFile()` may - * be used as an alternative for the `static()` middleware for - * dynamic situations. The code backing `res.sendFile()` is actually - * the same code, so HTTP cache support etc is identical. - * - * app.get('/user/:uid/photos/:file', function(req, res){ - * var uid = req.params.uid - * , file = req.params.file; - * - * req.user.mayViewFilesFrom(uid, function(yes){ - * if (yes) { - * res.sendFile('/uploads/' + uid + '/' + file); - * } else { - * res.send(403, 'Sorry! you cant see that.'); - * } - * }); - * }); - * - * @api public - */ - sendFile(path: string): void; - sendFile(path: string, options: any): void; - sendFile(path: string, fn: Errback): void; - sendFile(path: string, options: any, fn: Errback): void; - - /** - * @deprecated Use sendFile instead. - */ - sendfile(path: string): void; - /** - * @deprecated Use sendFile instead. - */ - sendfile(path: string, options: any): void; - /** - * @deprecated Use sendFile instead. - */ - sendfile(path: string, fn: Errback): void; - /** - * @deprecated Use sendFile instead. - */ - sendfile(path: string, options: any, fn: Errback): void; - - /** - * Transfer the file at the given `path` as an attachment. - * - * Optionally providing an alternate attachment `filename`, - * and optional callback `fn(err)`. The callback is invoked - * when the data transfer is complete, or when an error has - * ocurred. Be sure to check `res.headerSent` if you plan to respond. - * - * This method uses `res.sendfile()`. - */ - download(path: string): void; - download(path: string, filename: string): void; - download(path: string, fn: Errback): void; - download(path: string, filename: string, fn: Errback): void; - - /** - * Set _Content-Type_ response header with `type` through `mime.lookup()` - * when it does not contain "/", or set the Content-Type to `type` otherwise. - * - * Examples: - * - * res.type('.html'); - * res.type('html'); - * res.type('json'); - * res.type('application/json'); - * res.type('png'); - * - * @param type - */ - contentType(type: string): Response; - - /** - * Set _Content-Type_ response header with `type` through `mime.lookup()` - * when it does not contain "/", or set the Content-Type to `type` otherwise. - * - * Examples: - * - * res.type('.html'); - * res.type('html'); - * res.type('json'); - * res.type('application/json'); - * res.type('png'); - * - * @param type - */ - type(type: string): Response; - - /** - * Respond to the Acceptable formats using an `obj` - * of mime-type callbacks. - * - * This method uses `req.accepted`, an array of - * acceptable types ordered by their quality values. - * When "Accept" is not present the _first_ callback - * is invoked, otherwise the first match is used. When - * no match is performed the server responds with - * 406 "Not Acceptable". - * - * Content-Type is set for you, however if you choose - * you may alter this within the callback using `res.type()` - * or `res.set('Content-Type', ...)`. - * - * res.format({ - * 'text/plain': function(){ - * res.send('hey'); - * }, - * - * 'text/html': function(){ - * res.send('

hey

'); - * }, - * - * 'appliation/json': function(){ - * res.send({ message: 'hey' }); - * } - * }); - * - * In addition to canonicalized MIME types you may - * also use extnames mapped to these types: - * - * res.format({ - * text: function(){ - * res.send('hey'); - * }, - * - * html: function(){ - * res.send('

hey

'); - * }, - * - * json: function(){ - * res.send({ message: 'hey' }); - * } - * }); - * - * By default Express passes an `Error` - * with a `.status` of 406 to `next(err)` - * if a match is not made. If you provide - * a `.default` callback it will be invoked - * instead. - * - * @param obj - */ - format(obj: any): Response; - - /** - * Set _Content-Disposition_ header to _attachment_ with optional `filename`. - * - * @param filename - */ - attachment(filename?: string): Response; - - /** - * Set header `field` to `val`, or pass - * an object of header fields. - * - * Examples: - * - * res.set('Foo', ['bar', 'baz']); - * res.set('Accept', 'application/json'); - * res.set({ Accept: 'text/plain', 'X-API-Key': 'tobi' }); - * - * Aliased as `res.header()`. - */ - set(field: any): Response; - set(field: string, value?: string): Response; - - header(field: any): Response; - header(field: string, value?: string): Response; - - // Property indicating if HTTP headers has been sent for the response. - headersSent: boolean; - - /** - * Get value for header `field`. - * - * @param field - */ - get(field: string): string; - - /** - * Clear cookie `name`. - * - * @param name - * @param options - */ - clearCookie(name: string, options?: any): Response; - - /** - * Set cookie `name` to `val`, with the given `options`. - * - * Options: - * - * - `maxAge` max-age in milliseconds, converted to `expires` - * - `signed` sign the cookie - * - `path` defaults to "/" - * - * Examples: - * - * // "Remember Me" for 15 minutes - * res.cookie('rememberme', '1', { expires: new Date(Date.now() + 900000), httpOnly: true }); - * - * // save as above - * res.cookie('rememberme', '1', { maxAge: 900000, httpOnly: true }) - */ - cookie(name: string, val: string, options: CookieOptions): Response; - cookie(name: string, val: any, options: CookieOptions): Response; - cookie(name: string, val: any): Response; - - /** - * Set the location header to `url`. - * - * The given `url` can also be the name of a mapped url, for - * example by default express supports "back" which redirects - * to the _Referrer_ or _Referer_ headers or "/". - * - * Examples: - * - * res.location('/foo/bar').; - * res.location('http://example.com'); - * res.location('../login'); // /blog/post/1 -> /blog/login - * - * Mounting: - * - * When an application is mounted and `res.location()` - * is given a path that does _not_ lead with "/" it becomes - * relative to the mount-point. For example if the application - * is mounted at "/blog", the following would become "/blog/login". - * - * res.location('login'); - * - * While the leading slash would result in a location of "/login": - * - * res.location('/login'); - * - * @param url - */ - location(url: string): Response; - - /** - * Redirect to the given `url` with optional response `status` - * defaulting to 302. - * - * The resulting `url` is determined by `res.location()`, so - * it will play nicely with mounted apps, relative paths, - * `"back"` etc. - * - * Examples: - * - * res.redirect('/foo/bar'); - * res.redirect('http://example.com'); - * res.redirect(301, 'http://example.com'); - * res.redirect('http://example.com', 301); - * res.redirect('../login'); // /blog/post/1 -> /blog/login - */ - redirect(url: string): void; - redirect(status: number, url: string): void; - redirect(url: string, status: number): void; - - /** - * Render `view` with the given `options` and optional callback `fn`. - * When a callback function is given a response will _not_ be made - * automatically, otherwise a response of _200_ and _text/html_ is given. - * - * Options: - * - * - `cache` boolean hinting to the engine it should cache - * - `filename` filename of the view being rendered - */ - render(view: string, options?: Object, callback?: (err: Error, html: string) => void): void; - render(view: string, callback?: (err: Error, html: string) => void): void; - - locals: any; - - charset: string; - - /** - * Adds the field to the Vary response header, if it is not there already. - * Examples: - * - * res.vary('User-Agent').render('docs'); - * - */ - vary(field: string): Response; - - app: Application; -} - -interface Handler extends RequestHandler { } - -interface RequestParamHandler { - (req: Request, res: Response, next: NextFunction, value: any, name: string): any; -} - -type ApplicationRequestHandler = IRouterHandler & IRouterMatcher & { - (...handlers: RequestHandlerParams[]): T; -}; - -interface Application extends IRouter, Express.Application { - /** - * Express instance itself is a request handler, which could be invoked without - * third argument. - */ - (req: Request, res: Response): any; - - /** - * Initialize the server. - * - * - setup default configuration - * - setup default middleware - * - setup route reflection methods - */ - init(): void; - - /** - * Initialize application configuration. - */ - defaultConfiguration(): void; - - /** - * Register the given template engine callback `fn` - * as `ext`. - * - * By default will `require()` the engine based on the - * file extension. For example if you try to render - * a "foo.jade" file Express will invoke the following internally: - * - * app.engine('jade', require('jade').__express); - * - * For engines that do not provide `.__express` out of the box, - * or if you wish to "map" a different extension to the template engine - * you may use this method. For example mapping the EJS template engine to - * ".html" files: - * - * app.engine('html', require('ejs').renderFile); - * - * In this case EJS provides a `.renderFile()` method with - * the same signature that Express expects: `(path, options, callback)`, - * though note that it aliases this method as `ejs.__express` internally - * so if you're using ".ejs" extensions you dont need to do anything. - * - * Some template engines do not follow this convention, the - * [Consolidate.js](https://github.com/visionmedia/consolidate.js) - * library was created to map all of node's popular template - * engines to follow this convention, thus allowing them to - * work seamlessly within Express. - */ - engine(ext: string, fn: Function): Application; - - /** - * Assign `setting` to `val`, or return `setting`'s value. - * - * app.set('foo', 'bar'); - * app.get('foo'); - * // => "bar" - * app.set('foo', ['bar', 'baz']); - * app.get('foo'); - * // => ["bar", "baz"] - * - * Mounted servers inherit their parent server's settings. - * - * @param setting - * @param val - */ - set(setting: string, val: any): Application; - get: { (name: string): any; } & IRouterMatcher; - - param(name: string | string[], handler: RequestParamHandler): this; - // Alternatively, you can pass only a callback, in which case you have the opportunity to alter the app.param() API - param(callback: (name: string, matcher: RegExp) => RequestParamHandler): this; - - /** - * Return the app's absolute pathname - * based on the parent(s) that have - * mounted it. - * - * For example if the application was - * mounted as "/admin", which itself - * was mounted as "/blog" then the - * return value would be "/blog/admin". - */ - path(): string; - - /** - * Check if `setting` is enabled (truthy). - * - * app.enabled('foo') - * // => false - * - * app.enable('foo') - * app.enabled('foo') - * // => true - */ - enabled(setting: string): boolean; - - /** - * Check if `setting` is disabled. - * - * app.disabled('foo') - * // => true - * - * app.enable('foo') - * app.disabled('foo') - * // => false - * - * @param setting - */ - disabled(setting: string): boolean; - - /** - * Enable `setting`. - * - * @param setting - */ - enable(setting: string): Application; - - /** - * Disable `setting`. - * - * @param setting - */ - disable(setting: string): Application; - - /** - * Configure callback for zero or more envs, - * when no `env` is specified that callback will - * be invoked for all environments. Any combination - * can be used multiple times, in any order desired. - * - * Examples: - * - * app.configure(function(){ - * // executed for all envs - * }); - * - * app.configure('stage', function(){ - * // executed staging env - * }); - * - * app.configure('stage', 'production', function(){ - * // executed for stage and production - * }); - * - * Note: - * - * These callbacks are invoked immediately, and - * are effectively sugar for the following: - * - * var env = process.env.NODE_ENV || 'development'; - * - * switch (env) { - * case 'development': - * ... - * break; - * case 'stage': - * ... - * break; - * case 'production': - * ... - * break; - * } - * - * @param env - * @param fn - */ - configure(fn: Function): Application; - configure(env0: string, fn: Function): Application; - configure(env0: string, env1: string, fn: Function): Application; - configure(env0: string, env1: string, env2: string, fn: Function): Application; - configure(env0: string, env1: string, env2: string, env3: string, fn: Function): Application; - configure(env0: string, env1: string, env2: string, env3: string, env4: string, fn: Function): Application; - - /** - * Render the given view `name` name with `options` - * and a callback accepting an error and the - * rendered template string. - * - * Example: - * - * app.render('email', { name: 'Tobi' }, function(err, html){ - * // ... - * }) - * - * @param name - * @param options or fn - * @param fn - */ - render(name: string, options?: Object, callback?: (err: Error, html: string) => void): void; - render(name: string, callback: (err: Error, html: string) => void): void; - - - /** - * Listen for connections. - * - * A node `http.Server` is returned, with this - * application (which is a `Function`) as its - * callback. If you wish to create both an HTTP - * and HTTPS server you may do so with the "http" - * and "https" modules as shown here: - * - * var http = require('http') - * , https = require('https') - * , express = require('express') - * , app = express(); - * - * http.createServer(app).listen(80); - * https.createServer({ ... }, app).listen(443); - */ - listen(port: number, hostname: string, backlog: number, callback?: Function): http.Server; - listen(port: number, hostname: string, callback?: Function): http.Server; - listen(port: number, callback?: Function): http.Server; - listen(path: string, callback?: Function): http.Server; - listen(handle: any, listeningListener?: Function): http.Server; - - router: string; - - settings: any; - - resource: any; - - map: any; - - locals: any; - - /** - * The app.routes object houses all of the routes defined mapped by the - * associated HTTP verb. This object may be used for introspection - * capabilities, for example Express uses this internally not only for - * routing but to provide default OPTIONS behaviour unless app.options() - * is used. Your application or framework may also remove routes by - * simply by removing them from this object. - */ - routes: any; - - /** - * Used to get all registered routes in Express Application - */ - _router: any; - - use: ApplicationRequestHandler; -} - -interface Express extends Application { - request: Request; - - response: Response; -} diff --git a/workshops/monte-carlo-on-ec2-spot-fleet/src/web/node_modules/@types/express-serve-static-core/package.json b/workshops/monte-carlo-on-ec2-spot-fleet/src/web/node_modules/@types/express-serve-static-core/package.json deleted file mode 100644 index a87b79f7..00000000 --- a/workshops/monte-carlo-on-ec2-spot-fleet/src/web/node_modules/@types/express-serve-static-core/package.json +++ /dev/null @@ -1,91 +0,0 @@ -{ - "_args": [ - [ - { - "raw": "@types/express-serve-static-core@*", - "scope": "@types", - "escapedName": "@types%2fexpress-serve-static-core", - "name": "@types/express-serve-static-core", - "rawSpec": "*", - "spec": "*", - "type": "range" - }, - "/Users/sdsteve/WebstormProjects/SpotLabNodejs/node_modules/@types/express" - ] - ], - "_from": "@types/express-serve-static-core@*", - "_id": "@types/express-serve-static-core@4.0.53", - "_inCache": true, - "_location": "/@types/express-serve-static-core", - "_npmOperationalInternal": { - "host": "s3://npm-registry-packages", - "tmp": "tmp/express-serve-static-core-4.0.53.tgz_1505743745620_0.022078112699091434" - }, - "_npmUser": { - "name": "types", - "email": "ts-npm-types@microsoft.com" - }, - "_phantomChildren": {}, - "_requested": { - "raw": "@types/express-serve-static-core@*", - "scope": "@types", - "escapedName": "@types%2fexpress-serve-static-core", - "name": "@types/express-serve-static-core", - "rawSpec": "*", - "spec": "*", - "type": "range" - }, - "_requiredBy": [ - "/@types/express", - "/@types/serve-static" - ], - "_resolved": "https://registry.npmjs.org/@types/express-serve-static-core/-/express-serve-static-core-4.0.53.tgz", - "_shasum": "1723a35d1447f2c55e13c8721eab3448e42f4d82", - "_shrinkwrap": null, - "_spec": "@types/express-serve-static-core@*", - "_where": "/Users/sdsteve/WebstormProjects/SpotLabNodejs/node_modules/@types/express", - "contributors": [ - { - "name": "Boris Yankov", - "url": "https://github.com/borisyankov" - }, - { - "name": "Michał Lytek", - "url": "https://github.com/19majkel94" - }, - { - "name": "Kacper Polak", - "url": "https://github.com/kacepe" - } - ], - "dependencies": { - "@types/node": "*" - }, - "description": "TypeScript definitions for Express", - "devDependencies": {}, - "directories": {}, - "dist": { - "integrity": "sha512-zaGeOpEYp5G2EhjaUFdVwysDrfEYc6Q6iPhd3Kl4ip30x0tvVv7SuJvY3yzCUSuFlzAG8N5KsyY6BJg93/cn+Q==", - "shasum": "1723a35d1447f2c55e13c8721eab3448e42f4d82", - "tarball": "https://registry.npmjs.org/@types/express-serve-static-core/-/express-serve-static-core-4.0.53.tgz" - }, - "license": "MIT", - "main": "", - "maintainers": [ - { - "name": "types", - "email": "ts-npm-types@microsoft.com" - } - ], - "name": "@types/express-serve-static-core", - "optionalDependencies": {}, - "readme": "ERROR: No README data found!", - "repository": { - "type": "git", - "url": "https://www.github.com/DefinitelyTyped/DefinitelyTyped.git" - }, - "scripts": {}, - "typeScriptVersion": "2.0", - "typesPublisherContentHash": "0a3db62a41ac04abd6fd98c2c1fae5653c26d9d1c6039d1af2cb7770462a71fe", - "version": "4.0.53" -} diff --git a/workshops/monte-carlo-on-ec2-spot-fleet/src/web/node_modules/@types/express/LICENSE b/workshops/monte-carlo-on-ec2-spot-fleet/src/web/node_modules/@types/express/LICENSE deleted file mode 100644 index 21071075..00000000 --- a/workshops/monte-carlo-on-ec2-spot-fleet/src/web/node_modules/@types/express/LICENSE +++ /dev/null @@ -1,21 +0,0 @@ - MIT License - - Copyright (c) Microsoft Corporation. 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, subject to the following conditions: - - The above copyright notice and this permission notice shall be included in all - copies or substantial portions of the Software. - - 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 diff --git a/workshops/monte-carlo-on-ec2-spot-fleet/src/web/node_modules/@types/express/README.md b/workshops/monte-carlo-on-ec2-spot-fleet/src/web/node_modules/@types/express/README.md deleted file mode 100644 index 577baaeb..00000000 --- a/workshops/monte-carlo-on-ec2-spot-fleet/src/web/node_modules/@types/express/README.md +++ /dev/null @@ -1,16 +0,0 @@ -# Installation -> `npm install --save @types/express` - -# Summary -This package contains type definitions for Express (http://expressjs.com). - -# Details -Files were exported from https://www.github.com/DefinitelyTyped/DefinitelyTyped/tree/master/types/express - -Additional Details - * Last updated: Mon, 21 Aug 2017 21:49:18 GMT - * Dependencies: serve-static, express-serve-static-core - * Global values: none - -# Credits -These definitions were written by Boris Yankov . diff --git a/workshops/monte-carlo-on-ec2-spot-fleet/src/web/node_modules/@types/express/index.d.ts b/workshops/monte-carlo-on-ec2-spot-fleet/src/web/node_modules/@types/express/index.d.ts deleted file mode 100644 index e127d6d5..00000000 --- a/workshops/monte-carlo-on-ec2-spot-fleet/src/web/node_modules/@types/express/index.d.ts +++ /dev/null @@ -1,75 +0,0 @@ -// Type definitions for Express 4.x -// Project: http://expressjs.com -// Definitions by: Boris Yankov -// Definitions: https://github.com/DefinitelyTyped/DefinitelyTyped -// TypeScript Version: 2.2 - -/* =================== USAGE =================== - - import * as express from "express"; - var app = express(); - - =============================================== */ - -/// -/// - -import * as serveStatic from "serve-static"; -import * as core from "express-serve-static-core"; - -/** - * Creates an Express application. The express() function is a top-level function exported by the express module. - */ -declare function e(): core.Express; - -declare namespace e { - - /** - * This is the only built-in middleware function in Express. It serves static files and is based on serve-static. - */ - var static: typeof serveStatic; - - export function Router(options?: RouterOptions): core.Router; - - interface RouterOptions { - /** - * Enable case sensitivity. - */ - caseSensitive?: boolean; - - /** - * Preserve the req.params values from the parent router. - * If the parent and the child have conflicting param names, the child’s value take precedence. - * - * @default false - * @since 4.5.0 - */ - mergeParams?: boolean; - - /** - * Enable strict routing. - */ - strict?: boolean; - } - - interface Application extends core.Application { } - interface CookieOptions extends core.CookieOptions { } - interface Errback extends core.Errback { } - interface ErrorRequestHandler extends core.ErrorRequestHandler { } - interface Express extends core.Express { } - interface Handler extends core.Handler { } - interface IRoute extends core.IRoute { } - interface IRouter extends core.IRouter { } - interface IRouterHandler extends core.IRouterHandler { } - interface IRouterMatcher extends core.IRouterMatcher { } - interface MediaType extends core.MediaType { } - interface NextFunction extends core.NextFunction { } - interface Request extends core.Request { } - interface RequestHandler extends core.RequestHandler { } - interface RequestParamHandler extends core.RequestParamHandler { } - export interface Response extends core.Response { } - interface Router extends core.Router { } - interface Send extends core.Send { } -} - -export = e; diff --git a/workshops/monte-carlo-on-ec2-spot-fleet/src/web/node_modules/@types/express/package.json b/workshops/monte-carlo-on-ec2-spot-fleet/src/web/node_modules/@types/express/package.json deleted file mode 100644 index 82b704ce..00000000 --- a/workshops/monte-carlo-on-ec2-spot-fleet/src/web/node_modules/@types/express/package.json +++ /dev/null @@ -1,83 +0,0 @@ -{ - "_args": [ - [ - { - "raw": "@types/express@~4.0.34", - "scope": "@types", - "escapedName": "@types%2fexpress", - "name": "@types/express", - "rawSpec": "~4.0.34", - "spec": ">=4.0.34 <4.1.0", - "type": "range" - }, - "/Users/sdsteve/WebstormProjects/SpotLabNodejs/node_modules/express-validator" - ] - ], - "_from": "@types/express@>=4.0.34 <4.1.0", - "_id": "@types/express@4.0.37", - "_inCache": true, - "_location": "/@types/express", - "_npmOperationalInternal": { - "host": "s3://npm-registry-packages", - "tmp": "tmp/express-4.0.37.tgz_1503352300083_0.37321534869261086" - }, - "_npmUser": { - "name": "types", - "email": "ts-npm-types@microsoft.com" - }, - "_phantomChildren": {}, - "_requested": { - "raw": "@types/express@~4.0.34", - "scope": "@types", - "escapedName": "@types%2fexpress", - "name": "@types/express", - "rawSpec": "~4.0.34", - "spec": ">=4.0.34 <4.1.0", - "type": "range" - }, - "_requiredBy": [ - "/express-validator" - ], - "_resolved": "https://registry.npmjs.org/@types/express/-/express-4.0.37.tgz", - "_shasum": "625ac3765169676e01897ca47011c26375784971", - "_shrinkwrap": null, - "_spec": "@types/express@~4.0.34", - "_where": "/Users/sdsteve/WebstormProjects/SpotLabNodejs/node_modules/express-validator", - "contributors": [ - { - "name": "Boris Yankov", - "url": "https://github.com/borisyankov" - } - ], - "dependencies": { - "@types/express-serve-static-core": "*", - "@types/serve-static": "*" - }, - "description": "TypeScript definitions for Express", - "devDependencies": {}, - "directories": {}, - "dist": { - "integrity": "sha512-tIULTLzQpFFs5/PKnFIAFOsXQxss76glppbVKR3/jddPK26SBsD5HF5grn5G2jOGtpRWSBvYmDYoduVv+3wOXg==", - "shasum": "625ac3765169676e01897ca47011c26375784971", - "tarball": "https://registry.npmjs.org/@types/express/-/express-4.0.37.tgz" - }, - "license": "MIT", - "main": "", - "maintainers": [ - { - "name": "types", - "email": "ts-npm-types@microsoft.com" - } - ], - "name": "@types/express", - "optionalDependencies": {}, - "readme": "ERROR: No README data found!", - "repository": { - "type": "git", - "url": "https://www.github.com/DefinitelyTyped/DefinitelyTyped.git" - }, - "scripts": {}, - "typeScriptVersion": "2.2", - "typesPublisherContentHash": "ee3f3950a5c96d4bc07687b8843650db92fe1f16e5e011958979b9b96518e44f", - "version": "4.0.37" -} diff --git a/workshops/monte-carlo-on-ec2-spot-fleet/src/web/node_modules/@types/mime/LICENSE b/workshops/monte-carlo-on-ec2-spot-fleet/src/web/node_modules/@types/mime/LICENSE deleted file mode 100644 index 4b1ad51b..00000000 --- a/workshops/monte-carlo-on-ec2-spot-fleet/src/web/node_modules/@types/mime/LICENSE +++ /dev/null @@ -1,21 +0,0 @@ - MIT License - - Copyright (c) Microsoft Corporation. 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, subject to the following conditions: - - The above copyright notice and this permission notice shall be included in all - copies or substantial portions of the Software. - - 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 diff --git a/workshops/monte-carlo-on-ec2-spot-fleet/src/web/node_modules/@types/mime/Mime.d.ts b/workshops/monte-carlo-on-ec2-spot-fleet/src/web/node_modules/@types/mime/Mime.d.ts deleted file mode 100644 index b0eb103f..00000000 --- a/workshops/monte-carlo-on-ec2-spot-fleet/src/web/node_modules/@types/mime/Mime.d.ts +++ /dev/null @@ -1,9 +0,0 @@ -import { TypeMap } from "./index"; - -export default class Mime { - constructor(mimes: TypeMap); - - getType(path: string): string | null; - getExtension(mime: string): string | null; - define(mimes: TypeMap, force?: boolean): void; -} diff --git a/workshops/monte-carlo-on-ec2-spot-fleet/src/web/node_modules/@types/mime/README.md b/workshops/monte-carlo-on-ec2-spot-fleet/src/web/node_modules/@types/mime/README.md deleted file mode 100644 index 540b5b2f..00000000 --- a/workshops/monte-carlo-on-ec2-spot-fleet/src/web/node_modules/@types/mime/README.md +++ /dev/null @@ -1,16 +0,0 @@ -# Installation -> `npm install --save @types/mime` - -# Summary -This package contains type definitions for mime (https://github.com/broofa/node-mime). - -# Details -Files were exported from https://www.github.com/DefinitelyTyped/DefinitelyTyped/tree/master/types/mime - -Additional Details - * Last updated: Mon, 18 Sep 2017 14:13:55 GMT - * Dependencies: none - * Global values: mime - -# Credits -These definitions were written by Jeff Goddard , Daniel Hritzkiv . diff --git a/workshops/monte-carlo-on-ec2-spot-fleet/src/web/node_modules/@types/mime/index.d.ts b/workshops/monte-carlo-on-ec2-spot-fleet/src/web/node_modules/@types/mime/index.d.ts deleted file mode 100644 index 1c2be216..00000000 --- a/workshops/monte-carlo-on-ec2-spot-fleet/src/web/node_modules/@types/mime/index.d.ts +++ /dev/null @@ -1,17 +0,0 @@ -// Type definitions for mime 2.0 -// Project: https://github.com/broofa/node-mime -// Definitions by: Jeff Goddard -// Daniel Hritzkiv -// Definitions: https://github.com/DefinitelyTyped/DefinitelyTyped - -// Originally imported from: https://github.com/soywiz/typescript-node-definitions/mime.d.ts - -export as namespace mime; - -export interface TypeMap { [key: string]: string[]; } - -export function getType(path: string): string | null; -export function getExtension(mime: string): string | null; -export function define(mimes: TypeMap, force?: boolean): void; - -export const default_type: string; diff --git a/workshops/monte-carlo-on-ec2-spot-fleet/src/web/node_modules/@types/mime/package.json b/workshops/monte-carlo-on-ec2-spot-fleet/src/web/node_modules/@types/mime/package.json deleted file mode 100644 index c1b97653..00000000 --- a/workshops/monte-carlo-on-ec2-spot-fleet/src/web/node_modules/@types/mime/package.json +++ /dev/null @@ -1,84 +0,0 @@ -{ - "_args": [ - [ - { - "raw": "@types/mime@*", - "scope": "@types", - "escapedName": "@types%2fmime", - "name": "@types/mime", - "rawSpec": "*", - "spec": "*", - "type": "range" - }, - "/Users/sdsteve/WebstormProjects/SpotLabNodejs/node_modules/@types/serve-static" - ] - ], - "_from": "@types/mime@*", - "_id": "@types/mime@2.0.0", - "_inCache": true, - "_location": "/@types/mime", - "_npmOperationalInternal": { - "host": "s3://npm-registry-packages", - "tmp": "tmp/mime-2.0.0.tgz_1505744101448_0.13140471396036446" - }, - "_npmUser": { - "name": "types", - "email": "ts-npm-types@microsoft.com" - }, - "_phantomChildren": {}, - "_requested": { - "raw": "@types/mime@*", - "scope": "@types", - "escapedName": "@types%2fmime", - "name": "@types/mime", - "rawSpec": "*", - "spec": "*", - "type": "range" - }, - "_requiredBy": [ - "/@types/serve-static" - ], - "_resolved": "https://registry.npmjs.org/@types/mime/-/mime-2.0.0.tgz", - "_shasum": "5a7306e367c539b9f6543499de8dd519fac37a8b", - "_shrinkwrap": null, - "_spec": "@types/mime@*", - "_where": "/Users/sdsteve/WebstormProjects/SpotLabNodejs/node_modules/@types/serve-static", - "contributors": [ - { - "name": "Jeff Goddard", - "url": "https://github.com/jedigo" - }, - { - "name": "Daniel Hritzkiv", - "url": "https://github.com/dhritzkiv" - } - ], - "dependencies": {}, - "description": "TypeScript definitions for mime", - "devDependencies": {}, - "directories": {}, - "dist": { - "integrity": "sha512-A2TAGbTFdBw9azHbpVd+/FkdW2T6msN1uct1O9bH3vTerEHKZhTXJUQXy+hNq1B0RagfU8U+KBdqiZpxjhOUQA==", - "shasum": "5a7306e367c539b9f6543499de8dd519fac37a8b", - "tarball": "https://registry.npmjs.org/@types/mime/-/mime-2.0.0.tgz" - }, - "license": "MIT", - "main": "", - "maintainers": [ - { - "name": "types", - "email": "ts-npm-types@microsoft.com" - } - ], - "name": "@types/mime", - "optionalDependencies": {}, - "readme": "ERROR: No README data found!", - "repository": { - "type": "git", - "url": "https://www.github.com/DefinitelyTyped/DefinitelyTyped.git" - }, - "scripts": {}, - "typeScriptVersion": "2.0", - "typesPublisherContentHash": "719b27892c0327424f3d155be034d74dc26a16ed6022ae6f9a9cb8872f8fa70e", - "version": "2.0.0" -} diff --git a/workshops/monte-carlo-on-ec2-spot-fleet/src/web/node_modules/@types/node/LICENSE b/workshops/monte-carlo-on-ec2-spot-fleet/src/web/node_modules/@types/node/LICENSE deleted file mode 100644 index 4b1ad51b..00000000 --- a/workshops/monte-carlo-on-ec2-spot-fleet/src/web/node_modules/@types/node/LICENSE +++ /dev/null @@ -1,21 +0,0 @@ - MIT License - - Copyright (c) Microsoft Corporation. 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, subject to the following conditions: - - The above copyright notice and this permission notice shall be included in all - copies or substantial portions of the Software. - - 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 diff --git a/workshops/monte-carlo-on-ec2-spot-fleet/src/web/node_modules/@types/node/README.md b/workshops/monte-carlo-on-ec2-spot-fleet/src/web/node_modules/@types/node/README.md deleted file mode 100644 index 67530bec..00000000 --- a/workshops/monte-carlo-on-ec2-spot-fleet/src/web/node_modules/@types/node/README.md +++ /dev/null @@ -1,16 +0,0 @@ -# Installation -> `npm install --save @types/node` - -# Summary -This package contains type definitions for Node.js (http://nodejs.org/). - -# Details -Files were exported from https://www.github.com/DefinitelyTyped/DefinitelyTyped/tree/master/types/node - -Additional Details - * Last updated: Tue, 10 Oct 2017 16:42:29 GMT - * Dependencies: events, net, stream, url, child_process, tls, http, readline, crypto, dns, fs - * Global values: Buffer, NodeJS, SlowBuffer, Symbol, __dirname, __filename, clearImmediate, clearInterval, clearTimeout, console, exports, global, module, process, require, setImmediate, setInterval, setTimeout - -# Credits -These definitions were written by Microsoft TypeScript , DefinitelyTyped , Parambir Singh , Christian Vaagland Tellnes , Wilco Bakker , Nicolas Voigt , Chigozirim C. , Flarna , Mariusz Wiktorczyk , wwwy3y3 , Daniel Imms , Deividas Bakanas , Kelvin Jin , Alvis HT Tang . diff --git a/workshops/monte-carlo-on-ec2-spot-fleet/src/web/node_modules/@types/node/index.d.ts b/workshops/monte-carlo-on-ec2-spot-fleet/src/web/node_modules/@types/node/index.d.ts deleted file mode 100644 index 12c105e0..00000000 --- a/workshops/monte-carlo-on-ec2-spot-fleet/src/web/node_modules/@types/node/index.d.ts +++ /dev/null @@ -1,6727 +0,0 @@ -// Type definitions for Node.js 8.x -// Project: http://nodejs.org/ -// Definitions by: Microsoft TypeScript -// DefinitelyTyped -// Parambir Singh -// Christian Vaagland Tellnes -// Wilco Bakker -// Nicolas Voigt -// Chigozirim C. -// Flarna -// Mariusz Wiktorczyk -// wwwy3y3 -// Daniel Imms -// Deividas Bakanas -// Kelvin Jin -// Alvis HT Tang -// Definitions: https://github.com/DefinitelyTyped/DefinitelyTyped -// TypeScript Version: 2.2 - -/************************************************ -* * -* Node.js v8.x API * -* * -************************************************/ - -/** inspector module types */ -/// - -// This needs to be global to avoid TS2403 in case lib.dom.d.ts is present in the same build -interface Console { - Console: NodeJS.ConsoleConstructor; - assert(value: any, message?: string, ...optionalParams: any[]): void; - dir(obj: any, options?: NodeJS.InspectOptions): void; - error(message?: any, ...optionalParams: any[]): void; - info(message?: any, ...optionalParams: any[]): void; - log(message?: any, ...optionalParams: any[]): void; - time(label: string): void; - timeEnd(label: string): void; - trace(message?: any, ...optionalParams: any[]): void; - warn(message?: any, ...optionalParams: any[]): void; -} - -interface Error { - stack?: string; -} - -interface ErrorConstructor { - captureStackTrace(targetObject: Object, constructorOpt?: Function): void; - stackTraceLimit: number; -} - -// compat for TypeScript 1.8 -// if you use with --target es3 or --target es5 and use below definitions, -// use the lib.es6.d.ts that is bundled with TypeScript 1.8. -interface MapConstructor { } -interface WeakMapConstructor { } -interface SetConstructor { } -interface WeakSetConstructor { } - -// Forward-declare needed types from lib.es2015.d.ts (in case users are using `--lib es5`) -interface Iterable { } -interface Iterator { - next(value?: any): IteratorResult; -} -interface IteratorResult { } -interface SymbolConstructor { - readonly iterator: symbol; -} -declare var Symbol: SymbolConstructor; - -/************************************************ -* * -* GLOBAL * -* * -************************************************/ -declare var process: NodeJS.Process; -declare var global: NodeJS.Global; -declare var console: Console; - -declare var __filename: string; -declare var __dirname: string; - -declare function setTimeout(callback: (...args: any[]) => void, ms: number, ...args: any[]): NodeJS.Timer; -declare namespace setTimeout { - export function __promisify__(ms: number): Promise; - export function __promisify__(ms: number, value: T): Promise; -} -declare function clearTimeout(timeoutId: NodeJS.Timer): void; -declare function setInterval(callback: (...args: any[]) => void, ms: number, ...args: any[]): NodeJS.Timer; -declare function clearInterval(intervalId: NodeJS.Timer): void; -declare function setImmediate(callback: (...args: any[]) => void, ...args: any[]): any; -declare namespace setImmediate { - export function __promisify__(): Promise; - export function __promisify__(value: T): Promise; -} -declare function clearImmediate(immediateId: any): void; - -// TODO: change to `type NodeRequireFunction = (id: string) => any;` in next mayor version. -/* tslint:disable:callable-types */ -interface NodeRequireFunction { - (id: string): any; -} - -interface NodeRequire extends NodeRequireFunction { - resolve(id: string): string; - cache: any; - extensions: NodeExtensions; - main: NodeModule | undefined; -} - -interface NodeExtensions { - '.js': (m: NodeModule, filename: string) => any; - '.json': (m: NodeModule, filename: string) => any; - '.node': (m: NodeModule, filename: string) => any; - [ext: string]: (m: NodeModule, filename: string) => any; -} - -declare var require: NodeRequire; - -interface NodeModule { - exports: any; - require: NodeRequireFunction; - id: string; - filename: string; - loaded: boolean; - parent: NodeModule | null; - children: NodeModule[]; -} - -declare var module: NodeModule; - -// Same as module.exports -declare var exports: any; -declare var SlowBuffer: { - new(str: string, encoding?: string): Buffer; - new(size: number): Buffer; - new(size: Uint8Array): Buffer; - new(array: any[]): Buffer; - prototype: Buffer; - isBuffer(obj: any): boolean; - byteLength(string: string, encoding?: string): number; - concat(list: Buffer[], totalLength?: number): Buffer; -}; - -// Buffer class -type BufferEncoding = "ascii" | "utf8" | "utf16le" | "ucs2" | "base64" | "latin1" | "binary" | "hex"; -interface Buffer extends NodeBuffer { } - -/** - * Raw data is stored in instances of the Buffer class. - * A Buffer is similar to an array of integers but corresponds to a raw memory allocation outside the V8 heap. A Buffer cannot be resized. - * Valid string encodings: 'ascii'|'utf8'|'utf16le'|'ucs2'(alias of 'utf16le')|'base64'|'binary'(deprecated)|'hex' - */ -declare var Buffer: { - /** - * Allocates a new buffer containing the given {str}. - * - * @param str String to store in buffer. - * @param encoding encoding to use, optional. Default is 'utf8' - */ - new(str: string, encoding?: string): Buffer; - /** - * Allocates a new buffer of {size} octets. - * - * @param size count of octets to allocate. - */ - new(size: number): Buffer; - /** - * Allocates a new buffer containing the given {array} of octets. - * - * @param array The octets to store. - */ - new(array: Uint8Array): Buffer; - /** - * Produces a Buffer backed by the same allocated memory as - * the given {ArrayBuffer}. - * - * - * @param arrayBuffer The ArrayBuffer with which to share memory. - */ - new(arrayBuffer: ArrayBuffer): Buffer; - /** - * Allocates a new buffer containing the given {array} of octets. - * - * @param array The octets to store. - */ - new(array: any[]): Buffer; - /** - * Copies the passed {buffer} data onto a new {Buffer} instance. - * - * @param buffer The buffer to copy. - */ - new(buffer: Buffer): Buffer; - prototype: Buffer; - /** - * Allocates a new Buffer using an {array} of octets. - * - * @param array - */ - from(array: any[]): Buffer; - /** - * When passed a reference to the .buffer property of a TypedArray instance, - * the newly created Buffer will share the same allocated memory as the TypedArray. - * The optional {byteOffset} and {length} arguments specify a memory range - * within the {arrayBuffer} that will be shared by the Buffer. - * - * @param arrayBuffer The .buffer property of a TypedArray or a new ArrayBuffer() - * @param byteOffset - * @param length - */ - from(arrayBuffer: ArrayBuffer, byteOffset?: number, length?: number): Buffer; - /** - * Copies the passed {buffer} data onto a new Buffer instance. - * - * @param buffer - */ - from(buffer: Buffer): Buffer; - /** - * Creates a new Buffer containing the given JavaScript string {str}. - * If provided, the {encoding} parameter identifies the character encoding. - * If not provided, {encoding} defaults to 'utf8'. - * - * @param str - */ - from(str: string, encoding?: string): Buffer; - /** - * Returns true if {obj} is a Buffer - * - * @param obj object to test. - */ - isBuffer(obj: any): obj is Buffer; - /** - * Returns true if {encoding} is a valid encoding argument. - * Valid string encodings in Node 0.12: 'ascii'|'utf8'|'utf16le'|'ucs2'(alias of 'utf16le')|'base64'|'binary'(deprecated)|'hex' - * - * @param encoding string to test. - */ - isEncoding(encoding: string): boolean; - /** - * Gives the actual byte length of a string. encoding defaults to 'utf8'. - * This is not the same as String.prototype.length since that returns the number of characters in a string. - * - * @param string string to test. - * @param encoding encoding used to evaluate (defaults to 'utf8') - */ - byteLength(string: string, encoding?: string): number; - /** - * Returns a buffer which is the result of concatenating all the buffers in the list together. - * - * If the list has no items, or if the totalLength is 0, then it returns a zero-length buffer. - * If the list has exactly one item, then the first item of the list is returned. - * If the list has more than one item, then a new Buffer is created. - * - * @param list An array of Buffer objects to concatenate - * @param totalLength Total length of the buffers when concatenated. - * If totalLength is not provided, it is read from the buffers in the list. However, this adds an additional loop to the function, so it is faster to provide the length explicitly. - */ - concat(list: Buffer[], totalLength?: number): Buffer; - /** - * The same as buf1.compare(buf2). - */ - compare(buf1: Buffer, buf2: Buffer): number; - /** - * Allocates a new buffer of {size} octets. - * - * @param size count of octets to allocate. - * @param fill if specified, buffer will be initialized by calling buf.fill(fill). - * If parameter is omitted, buffer will be filled with zeros. - * @param encoding encoding used for call to buf.fill while initalizing - */ - alloc(size: number, fill?: string | Buffer | number, encoding?: string): Buffer; - /** - * Allocates a new buffer of {size} octets, leaving memory not initialized, so the contents - * of the newly created Buffer are unknown and may contain sensitive data. - * - * @param size count of octets to allocate - */ - allocUnsafe(size: number): Buffer; - /** - * Allocates a new non-pooled buffer of {size} octets, leaving memory not initialized, so the contents - * of the newly created Buffer are unknown and may contain sensitive data. - * - * @param size count of octets to allocate - */ - allocUnsafeSlow(size: number): Buffer; -}; - -/************************************************ -* * -* GLOBAL INTERFACES * -* * -************************************************/ -declare namespace NodeJS { - export interface InspectOptions { - showHidden?: boolean; - depth?: number | null; - colors?: boolean; - customInspect?: boolean; - showProxy?: boolean; - maxArrayLength?: number | null; - breakLength?: number; - } - - export interface ConsoleConstructor { - prototype: Console; - new(stdout: WritableStream, stderr?: WritableStream): Console; - } - - export interface ErrnoException extends Error { - errno?: number; - code?: string; - path?: string; - syscall?: string; - stack?: string; - } - - export class EventEmitter { - addListener(event: string | symbol, listener: (...args: any[]) => void): this; - on(event: string | symbol, listener: (...args: any[]) => void): this; - once(event: string | symbol, listener: (...args: any[]) => void): this; - removeListener(event: string | symbol, listener: (...args: any[]) => void): this; - removeAllListeners(event?: string | symbol): this; - setMaxListeners(n: number): this; - getMaxListeners(): number; - listeners(event: string | symbol): Function[]; - emit(event: string | symbol, ...args: any[]): boolean; - listenerCount(type: string | symbol): number; - // Added in Node 6... - prependListener(event: string | symbol, listener: (...args: any[]) => void): this; - prependOnceListener(event: string | symbol, listener: (...args: any[]) => void): this; - eventNames(): Array; - } - - export interface ReadableStream extends EventEmitter { - readable: boolean; - read(size?: number): string | Buffer; - setEncoding(encoding: string): this; - pause(): this; - resume(): this; - isPaused(): boolean; - pipe(destination: T, options?: { end?: boolean; }): T; - unpipe(destination?: T): this; - unshift(chunk: string): void; - unshift(chunk: Buffer): void; - wrap(oldStream: ReadableStream): ReadableStream; - } - - export interface WritableStream extends EventEmitter { - writable: boolean; - write(buffer: Buffer | string, cb?: Function): boolean; - write(str: string, encoding?: string, cb?: Function): boolean; - end(): void; - end(buffer: Buffer, cb?: Function): void; - end(str: string, cb?: Function): void; - end(str: string, encoding?: string, cb?: Function): void; - } - - export interface ReadWriteStream extends ReadableStream, WritableStream { } - - export interface Events extends EventEmitter { } - - export interface Domain extends Events { - run(fn: Function): void; - add(emitter: Events): void; - remove(emitter: Events): void; - bind(cb: (err: Error, data: any) => any): any; - intercept(cb: (data: any) => any): any; - dispose(): void; - - addListener(event: string, listener: (...args: any[]) => void): this; - on(event: string, listener: (...args: any[]) => void): this; - once(event: string, listener: (...args: any[]) => void): this; - removeListener(event: string, listener: (...args: any[]) => void): this; - removeAllListeners(event?: string): this; - } - - export interface MemoryUsage { - rss: number; - heapTotal: number; - heapUsed: number; - } - - export interface CpuUsage { - user: number; - system: number; - } - - export interface ProcessVersions { - http_parser: string; - node: string; - v8: string; - ares: string; - uv: string; - zlib: string; - modules: string; - openssl: string; - } - - type Platform = 'aix' - | 'android' - | 'darwin' - | 'freebsd' - | 'linux' - | 'openbsd' - | 'sunos' - | 'win32' - | 'cygwin'; - - type Signals = - "SIGABRT" | "SIGALRM" | "SIGBUS" | "SIGCHLD" | "SIGCONT" | "SIGFPE" | "SIGHUP" | "SIGILL" | "SIGINT" | "SIGIO" | - "SIGIOT" | "SIGKILL" | "SIGPIPE" | "SIGPOLL" | "SIGPROF" | "SIGPWR" | "SIGQUIT" | "SIGSEGV" | "SIGSTKFLT" | - "SIGSTOP" | "SIGSYS" | "SIGTERM" | "SIGTRAP" | "SIGTSTP" | "SIGTTIN" | "SIGTTOU" | "SIGUNUSED" | "SIGURG" | - "SIGUSR1" | "SIGUSR2" | "SIGVTALRM" | "SIGWINCH" | "SIGXCPU" | "SIGXFSZ" | "SIGBREAK" | "SIGLOST" | "SIGINFO"; - - type BeforeExitListener = (code: number) => void; - type DisconnectListener = () => void; - type ExitListener = (code: number) => void; - type RejectionHandledListener = (promise: Promise) => void; - type UncaughtExceptionListener = (error: Error) => void; - type UnhandledRejectionListener = (reason: any, promise: Promise) => void; - type WarningListener = (warning: Error) => void; - type MessageListener = (message: any, sendHandle: any) => void; - type SignalsListener = () => void; - type NewListenerListener = (type: string | symbol, listener: (...args: any[]) => void) => void; - type RemoveListenerListener = (type: string | symbol, listener: (...args: any[]) => void) => void; - - export interface Socket extends ReadWriteStream { - isTTY?: true; - } - - export interface ProcessEnv { - [key: string]: string | undefined; - } - - export interface WriteStream extends Socket { - columns?: number; - rows?: number; - } - export interface ReadStream extends Socket { - isRaw?: boolean; - setRawMode?(mode: boolean): void; - } - - export interface Process extends EventEmitter { - stdout: WriteStream; - stderr: WriteStream; - stdin: ReadStream; - openStdin(): Socket; - argv: string[]; - argv0: string; - execArgv: string[]; - execPath: string; - abort(): void; - chdir(directory: string): void; - cwd(): string; - emitWarning(warning: string | Error, name?: string, ctor?: Function): void; - env: ProcessEnv; - exit(code?: number): never; - exitCode: number; - getgid(): number; - setgid(id: number): void; - setgid(id: string): void; - getuid(): number; - setuid(id: number): void; - setuid(id: string): void; - version: string; - versions: ProcessVersions; - config: { - target_defaults: { - cflags: any[]; - default_configuration: string; - defines: string[]; - include_dirs: string[]; - libraries: string[]; - }; - variables: { - clang: number; - host_arch: string; - node_install_npm: boolean; - node_install_waf: boolean; - node_prefix: string; - node_shared_openssl: boolean; - node_shared_v8: boolean; - node_shared_zlib: boolean; - node_use_dtrace: boolean; - node_use_etw: boolean; - node_use_openssl: boolean; - target_arch: string; - v8_no_strict_aliasing: number; - v8_use_snapshot: boolean; - visibility: string; - }; - }; - kill(pid: number, signal?: string | number): void; - pid: number; - title: string; - arch: string; - platform: Platform; - mainModule?: NodeModule; - memoryUsage(): MemoryUsage; - cpuUsage(previousValue?: CpuUsage): CpuUsage; - nextTick(callback: Function, ...args: any[]): void; - umask(mask?: number): number; - uptime(): number; - hrtime(time?: [number, number]): [number, number]; - domain: Domain; - - // Worker - send?(message: any, sendHandle?: any): void; - disconnect(): void; - connected: boolean; - - /** - * EventEmitter - * 1. beforeExit - * 2. disconnect - * 3. exit - * 4. message - * 5. rejectionHandled - * 6. uncaughtException - * 7. unhandledRejection - * 8. warning - * 9. message - * 10. - * 11. newListener/removeListener inherited from EventEmitter - */ - addListener(event: "beforeExit", listener: BeforeExitListener): this; - addListener(event: "disconnect", listener: DisconnectListener): this; - addListener(event: "exit", listener: ExitListener): this; - addListener(event: "rejectionHandled", listener: RejectionHandledListener): this; - addListener(event: "uncaughtException", listener: UncaughtExceptionListener): this; - addListener(event: "unhandledRejection", listener: UnhandledRejectionListener): this; - addListener(event: "warning", listener: WarningListener): this; - addListener(event: "message", listener: MessageListener): this; - addListener(event: Signals, listener: SignalsListener): this; - addListener(event: "newListener", listener: NewListenerListener): this; - addListener(event: "removeListener", listener: RemoveListenerListener): this; - - emit(event: "beforeExit", code: number): boolean; - emit(event: "disconnect"): boolean; - emit(event: "exit", code: number): boolean; - emit(event: "rejectionHandled", promise: Promise): boolean; - emit(event: "uncaughtException", error: Error): boolean; - emit(event: "unhandledRejection", reason: any, promise: Promise): boolean; - emit(event: "warning", warning: Error): boolean; - emit(event: "message", message: any, sendHandle: any): this; - emit(event: Signals): boolean; - emit(event: "newListener", eventName: string | symbol, listener: (...args: any[]) => void): this; - emit(event: "removeListener", eventName: string, listener: (...args: any[]) => void): this; - - on(event: "beforeExit", listener: BeforeExitListener): this; - on(event: "disconnect", listener: DisconnectListener): this; - on(event: "exit", listener: ExitListener): this; - on(event: "rejectionHandled", listener: RejectionHandledListener): this; - on(event: "uncaughtException", listener: UncaughtExceptionListener): this; - on(event: "unhandledRejection", listener: UnhandledRejectionListener): this; - on(event: "warning", listener: WarningListener): this; - on(event: "message", listener: MessageListener): this; - on(event: Signals, listener: SignalsListener): this; - on(event: "newListener", listener: NewListenerListener): this; - on(event: "removeListener", listener: RemoveListenerListener): this; - - once(event: "beforeExit", listener: BeforeExitListener): this; - once(event: "disconnect", listener: DisconnectListener): this; - once(event: "exit", listener: ExitListener): this; - once(event: "rejectionHandled", listener: RejectionHandledListener): this; - once(event: "uncaughtException", listener: UncaughtExceptionListener): this; - once(event: "unhandledRejection", listener: UnhandledRejectionListener): this; - once(event: "warning", listener: WarningListener): this; - once(event: "message", listener: MessageListener): this; - once(event: Signals, listener: SignalsListener): this; - once(event: "newListener", listener: NewListenerListener): this; - once(event: "removeListener", listener: RemoveListenerListener): this; - - prependListener(event: "beforeExit", listener: BeforeExitListener): this; - prependListener(event: "disconnect", listener: DisconnectListener): this; - prependListener(event: "exit", listener: ExitListener): this; - prependListener(event: "rejectionHandled", listener: RejectionHandledListener): this; - prependListener(event: "uncaughtException", listener: UncaughtExceptionListener): this; - prependListener(event: "unhandledRejection", listener: UnhandledRejectionListener): this; - prependListener(event: "warning", listener: WarningListener): this; - prependListener(event: "message", listener: MessageListener): this; - prependListener(event: Signals, listener: SignalsListener): this; - prependListener(event: "newListener", listener: NewListenerListener): this; - prependListener(event: "removeListener", listener: RemoveListenerListener): this; - - prependOnceListener(event: "beforeExit", listener: BeforeExitListener): this; - prependOnceListener(event: "disconnect", listener: DisconnectListener): this; - prependOnceListener(event: "exit", listener: ExitListener): this; - prependOnceListener(event: "rejectionHandled", listener: RejectionHandledListener): this; - prependOnceListener(event: "uncaughtException", listener: UncaughtExceptionListener): this; - prependOnceListener(event: "unhandledRejection", listener: UnhandledRejectionListener): this; - prependOnceListener(event: "warning", listener: WarningListener): this; - prependOnceListener(event: "message", listener: MessageListener): this; - prependOnceListener(event: Signals, listener: SignalsListener): this; - prependOnceListener(event: "newListener", listener: NewListenerListener): this; - prependOnceListener(event: "removeListener", listener: RemoveListenerListener): this; - - listeners(event: "beforeExit"): BeforeExitListener[]; - listeners(event: "disconnect"): DisconnectListener[]; - listeners(event: "exit"): ExitListener[]; - listeners(event: "rejectionHandled"): RejectionHandledListener[]; - listeners(event: "uncaughtException"): UncaughtExceptionListener[]; - listeners(event: "unhandledRejection"): UnhandledRejectionListener[]; - listeners(event: "warning"): WarningListener[]; - listeners(event: "message"): MessageListener[]; - listeners(event: Signals): SignalsListener[]; - listeners(event: "newListener"): NewListenerListener[]; - listeners(event: "removeListener"): RemoveListenerListener[]; - } - - export interface Global { - Array: typeof Array; - ArrayBuffer: typeof ArrayBuffer; - Boolean: typeof Boolean; - Buffer: typeof Buffer; - DataView: typeof DataView; - Date: typeof Date; - Error: typeof Error; - EvalError: typeof EvalError; - Float32Array: typeof Float32Array; - Float64Array: typeof Float64Array; - Function: typeof Function; - GLOBAL: Global; - Infinity: typeof Infinity; - Int16Array: typeof Int16Array; - Int32Array: typeof Int32Array; - Int8Array: typeof Int8Array; - Intl: typeof Intl; - JSON: typeof JSON; - Map: MapConstructor; - Math: typeof Math; - NaN: typeof NaN; - Number: typeof Number; - Object: typeof Object; - Promise: Function; - RangeError: typeof RangeError; - ReferenceError: typeof ReferenceError; - RegExp: typeof RegExp; - Set: SetConstructor; - String: typeof String; - Symbol: Function; - SyntaxError: typeof SyntaxError; - TypeError: typeof TypeError; - URIError: typeof URIError; - Uint16Array: typeof Uint16Array; - Uint32Array: typeof Uint32Array; - Uint8Array: typeof Uint8Array; - Uint8ClampedArray: Function; - WeakMap: WeakMapConstructor; - WeakSet: WeakSetConstructor; - clearImmediate: (immediateId: any) => void; - clearInterval: (intervalId: NodeJS.Timer) => void; - clearTimeout: (timeoutId: NodeJS.Timer) => void; - console: typeof console; - decodeURI: typeof decodeURI; - decodeURIComponent: typeof decodeURIComponent; - encodeURI: typeof encodeURI; - encodeURIComponent: typeof encodeURIComponent; - escape: (str: string) => string; - eval: typeof eval; - global: Global; - isFinite: typeof isFinite; - isNaN: typeof isNaN; - parseFloat: typeof parseFloat; - parseInt: typeof parseInt; - process: Process; - root: Global; - setImmediate: (callback: (...args: any[]) => void, ...args: any[]) => any; - setInterval: (callback: (...args: any[]) => void, ms: number, ...args: any[]) => NodeJS.Timer; - setTimeout: (callback: (...args: any[]) => void, ms: number, ...args: any[]) => NodeJS.Timer; - undefined: typeof undefined; - unescape: (str: string) => string; - gc: () => void; - v8debug?: any; - } - - export interface Timer { - ref(): void; - unref(): void; - } - - class Module { - static runMain(): void; - static wrap(code: string): string; - - static Module: typeof Module; - - exports: any; - require: NodeRequireFunction; - id: string; - filename: string; - loaded: boolean; - parent: Module | null; - children: Module[]; - paths: string[]; - - constructor(id: string, parent?: Module); - } -} - -interface IterableIterator { } - -/** - * @deprecated - */ -interface NodeBuffer extends Uint8Array { - write(string: string, offset?: number, length?: number, encoding?: string): number; - toString(encoding?: string, start?: number, end?: number): string; - toJSON(): { type: 'Buffer', data: any[] }; - equals(otherBuffer: Buffer): boolean; - compare(otherBuffer: Buffer, targetStart?: number, targetEnd?: number, sourceStart?: number, sourceEnd?: number): number; - copy(targetBuffer: Buffer, targetStart?: number, sourceStart?: number, sourceEnd?: number): number; - slice(start?: number, end?: number): Buffer; - writeUIntLE(value: number, offset: number, byteLength: number, noAssert?: boolean): number; - writeUIntBE(value: number, offset: number, byteLength: number, noAssert?: boolean): number; - writeIntLE(value: number, offset: number, byteLength: number, noAssert?: boolean): number; - writeIntBE(value: number, offset: number, byteLength: number, noAssert?: boolean): number; - readUIntLE(offset: number, byteLength: number, noAssert?: boolean): number; - readUIntBE(offset: number, byteLength: number, noAssert?: boolean): number; - readIntLE(offset: number, byteLength: number, noAssert?: boolean): number; - readIntBE(offset: number, byteLength: number, noAssert?: boolean): number; - readUInt8(offset: number, noAssert?: boolean): number; - readUInt16LE(offset: number, noAssert?: boolean): number; - readUInt16BE(offset: number, noAssert?: boolean): number; - readUInt32LE(offset: number, noAssert?: boolean): number; - readUInt32BE(offset: number, noAssert?: boolean): number; - readInt8(offset: number, noAssert?: boolean): number; - readInt16LE(offset: number, noAssert?: boolean): number; - readInt16BE(offset: number, noAssert?: boolean): number; - readInt32LE(offset: number, noAssert?: boolean): number; - readInt32BE(offset: number, noAssert?: boolean): number; - readFloatLE(offset: number, noAssert?: boolean): number; - readFloatBE(offset: number, noAssert?: boolean): number; - readDoubleLE(offset: number, noAssert?: boolean): number; - readDoubleBE(offset: number, noAssert?: boolean): number; - swap16(): Buffer; - swap32(): Buffer; - swap64(): Buffer; - writeUInt8(value: number, offset: number, noAssert?: boolean): number; - writeUInt16LE(value: number, offset: number, noAssert?: boolean): number; - writeUInt16BE(value: number, offset: number, noAssert?: boolean): number; - writeUInt32LE(value: number, offset: number, noAssert?: boolean): number; - writeUInt32BE(value: number, offset: number, noAssert?: boolean): number; - writeInt8(value: number, offset: number, noAssert?: boolean): number; - writeInt16LE(value: number, offset: number, noAssert?: boolean): number; - writeInt16BE(value: number, offset: number, noAssert?: boolean): number; - writeInt32LE(value: number, offset: number, noAssert?: boolean): number; - writeInt32BE(value: number, offset: number, noAssert?: boolean): number; - writeFloatLE(value: number, offset: number, noAssert?: boolean): number; - writeFloatBE(value: number, offset: number, noAssert?: boolean): number; - writeDoubleLE(value: number, offset: number, noAssert?: boolean): number; - writeDoubleBE(value: number, offset: number, noAssert?: boolean): number; - fill(value: any, offset?: number, end?: number): this; - indexOf(value: string | number | Buffer, byteOffset?: number, encoding?: string): number; - lastIndexOf(value: string | number | Buffer, byteOffset?: number, encoding?: string): number; - entries(): IterableIterator<[number, number]>; - includes(value: string | number | Buffer, byteOffset?: number, encoding?: string): boolean; - keys(): IterableIterator; - values(): IterableIterator; -} - -/************************************************ -* * -* MODULES * -* * -************************************************/ -declare module "buffer" { - export var INSPECT_MAX_BYTES: number; - var BuffType: typeof Buffer; - var SlowBuffType: typeof SlowBuffer; - export { BuffType as Buffer, SlowBuffType as SlowBuffer }; -} - -declare module "querystring" { - export interface StringifyOptions { - encodeURIComponent?: Function; - } - - export interface ParseOptions { - maxKeys?: number; - decodeURIComponent?: Function; - } - - export function stringify(obj: T, sep?: string, eq?: string, options?: StringifyOptions): string; - export function parse(str: string, sep?: string, eq?: string, options?: ParseOptions): any; - export function parse(str: string, sep?: string, eq?: string, options?: ParseOptions): T; - export function escape(str: string): string; - export function unescape(str: string): string; -} - -declare module "events" { - class internal extends NodeJS.EventEmitter { } - - namespace internal { - export class EventEmitter extends internal { - static listenerCount(emitter: EventEmitter, event: string | symbol): number; // deprecated - static defaultMaxListeners: number; - - addListener(event: string | symbol, listener: (...args: any[]) => void): this; - on(event: string | symbol, listener: (...args: any[]) => void): this; - once(event: string | symbol, listener: (...args: any[]) => void): this; - prependListener(event: string | symbol, listener: (...args: any[]) => void): this; - prependOnceListener(event: string | symbol, listener: (...args: any[]) => void): this; - removeListener(event: string | symbol, listener: (...args: any[]) => void): this; - removeAllListeners(event?: string | symbol): this; - setMaxListeners(n: number): this; - getMaxListeners(): number; - listeners(event: string | symbol): Function[]; - emit(event: string | symbol, ...args: any[]): boolean; - eventNames(): Array; - listenerCount(type: string | symbol): number; - } - } - - export = internal; -} - -declare module "http" { - import * as events from "events"; - import * as net from "net"; - import * as stream from "stream"; - import { URL } from "url"; - - // incoming headers will never contain number - export interface IncomingHttpHeaders { - [header: string]: string | string[]; - } - - // outgoing headers allows numbers (as they are converted internally to strings) - export interface OutgoingHttpHeaders { - [header: string]: number | string | string[] | undefined; - } - - export interface ClientRequestArgs { - protocol?: string; - host?: string; - hostname?: string; - family?: number; - port?: number | string; - defaultPort?: number | string; - localAddress?: string; - socketPath?: string; - method?: string; - path?: string; - headers?: OutgoingHttpHeaders; - auth?: string; - agent?: Agent | boolean; - _defaultAgent?: Agent; - timeout?: number; - // https://github.com/nodejs/node/blob/master/lib/_http_client.js#L278 - createConnection?: (options: ClientRequestArgs, oncreate: (err: Error, socket: net.Socket) => void) => net.Socket; - } - - export class Server extends net.Server { - constructor(requestListener?: (req: IncomingMessage, res: ServerResponse) => void); - - setTimeout(msecs: number, callback: () => void): this; - maxHeadersCount: number; - timeout: number; - listening: boolean; - keepAliveTimeout: number; - } - /** - * @deprecated Use IncomingMessage - */ - export class ServerRequest extends IncomingMessage { - connection: net.Socket; - } - - // https://github.com/nodejs/node/blob/master/lib/_http_outgoing.js - export class OutgoingMessage extends stream.Writable { - upgrading: boolean; - chunkedEncoding: boolean; - shouldKeepAlive: boolean; - useChunkedEncodingByDefault: boolean; - sendDate: boolean; - finished: boolean; - headersSent: boolean; - connection: net.Socket; - - constructor(); - - setTimeout(msecs: number, callback?: () => void): this; - destroy(error: Error): void; - setHeader(name: string, value: number | string | string[]): void; - getHeader(name: string): number | string | string[] | undefined; - getHeaders(): OutgoingHttpHeaders; - getHeaderNames(): string[]; - hasHeader(name: string): boolean; - removeHeader(name: string): void; - addTrailers(headers: OutgoingHttpHeaders | Array<[string, string]>): void; - flushHeaders(): void; - } - - // https://github.com/nodejs/node/blob/master/lib/_http_server.js#L108-L256 - export class ServerResponse extends OutgoingMessage { - statusCode: number; - statusMessage: string; - - constructor(req: IncomingMessage); - - assignSocket(socket: net.Socket): void; - detachSocket(socket: net.Socket): void; - // https://github.com/nodejs/node/blob/master/test/parallel/test-http-write-callbacks.js#L53 - // no args in writeContinue callback - writeContinue(callback?: () => void): void; - writeHead(statusCode: number, reasonPhrase?: string, headers?: OutgoingHttpHeaders): void; - writeHead(statusCode: number, headers?: OutgoingHttpHeaders): void; - } - - // https://github.com/nodejs/node/blob/master/lib/_http_client.js#L77 - export class ClientRequest extends OutgoingMessage { - connection: net.Socket; - socket: net.Socket; - aborted: number; - - constructor(url: string | URL | ClientRequestArgs, cb?: (res: IncomingMessage) => void); - - abort(): void; - onSocket(socket: net.Socket): void; - setTimeout(timeout: number, callback?: () => void): this; - setNoDelay(noDelay?: boolean): void; - setSocketKeepAlive(enable?: boolean, initialDelay?: number): void; - } - - export class IncomingMessage extends stream.Readable { - constructor(socket: net.Socket); - - httpVersion: string; - httpVersionMajor: number; - httpVersionMinor: number; - connection: net.Socket; - headers: IncomingHttpHeaders; - rawHeaders: string[]; - trailers: { [key: string]: string | undefined }; - rawTrailers: string[]; - setTimeout(msecs: number, callback: () => void): this; - /** - * Only valid for request obtained from http.Server. - */ - method?: string; - /** - * Only valid for request obtained from http.Server. - */ - url?: string; - /** - * Only valid for response obtained from http.ClientRequest. - */ - statusCode?: number; - /** - * Only valid for response obtained from http.ClientRequest. - */ - statusMessage?: string; - socket: net.Socket; - destroy(error?: Error): void; - } - - /** - * @deprecated Use IncomingMessage - */ - export class ClientResponse extends IncomingMessage { } - - export interface AgentOptions { - /** - * Keep sockets around in a pool to be used by other requests in the future. Default = false - */ - keepAlive?: boolean; - /** - * When using HTTP KeepAlive, how often to send TCP KeepAlive packets over sockets being kept alive. Default = 1000. - * Only relevant if keepAlive is set to true. - */ - keepAliveMsecs?: number; - /** - * Maximum number of sockets to allow per host. Default for Node 0.10 is 5, default for Node 0.12 is Infinity - */ - maxSockets?: number; - /** - * Maximum number of sockets to leave open in a free state. Only relevant if keepAlive is set to true. Default = 256. - */ - maxFreeSockets?: number; - } - - export class Agent { - maxSockets: number; - sockets: any; - requests: any; - - constructor(opts?: AgentOptions); - - /** - * Destroy any sockets that are currently in use by the agent. - * It is usually not necessary to do this. However, if you are using an agent with KeepAlive enabled, - * then it is best to explicitly shut down the agent when you know that it will no longer be used. Otherwise, - * sockets may hang open for quite a long time before the server terminates them. - */ - destroy(): void; - } - - export var METHODS: string[]; - - export var STATUS_CODES: { - [errorCode: number]: string | undefined; - [errorCode: string]: string | undefined; - }; - - export function createServer(requestListener?: (request: IncomingMessage, response: ServerResponse) => void): Server; - export function createClient(port?: number, host?: string): any; - - // although RequestOptions are passed as ClientRequestArgs to ClientRequest directly, - // create interface RequestOptions would make the naming more clear to developers - export interface RequestOptions extends ClientRequestArgs { } - export function request(options: RequestOptions | string | URL, callback?: (res: IncomingMessage) => void): ClientRequest; - export function get(options: RequestOptions | string | URL, callback?: (res: IncomingMessage) => void): ClientRequest; - export var globalAgent: Agent; -} - -declare module "cluster" { - import * as child from "child_process"; - import * as events from "events"; - import * as net from "net"; - - // interfaces - export interface ClusterSettings { - execArgv?: string[]; // default: process.execArgv - exec?: string; - args?: string[]; - silent?: boolean; - stdio?: any[]; - uid?: number; - gid?: number; - } - - export interface ClusterSetupMasterSettings { - exec?: string; // default: process.argv[1] - args?: string[]; // default: process.argv.slice(2) - silent?: boolean; // default: false - stdio?: any[]; - } - - export interface Address { - address: string; - port: number; - addressType: number | "udp4" | "udp6"; // 4, 6, -1, "udp4", "udp6" - } - - export class Worker extends events.EventEmitter { - id: string; - process: child.ChildProcess; - suicide: boolean; - send(message: any, sendHandle?: any, callback?: (error: Error) => void): boolean; - kill(signal?: string): void; - destroy(signal?: string): void; - disconnect(): void; - isConnected(): boolean; - isDead(): boolean; - exitedAfterDisconnect: boolean; - - /** - * events.EventEmitter - * 1. disconnect - * 2. error - * 3. exit - * 4. listening - * 5. message - * 6. online - */ - addListener(event: string, listener: (...args: any[]) => void): this; - addListener(event: "disconnect", listener: () => void): this; - addListener(event: "error", listener: (error: Error) => void): this; - addListener(event: "exit", listener: (code: number, signal: string) => void): this; - addListener(event: "listening", listener: (address: Address) => void): this; - addListener(event: "message", listener: (message: any, handle: net.Socket | net.Server) => void): this; // the handle is a net.Socket or net.Server object, or undefined. - addListener(event: "online", listener: () => void): this; - - emit(event: string | symbol, ...args: any[]): boolean; - emit(event: "disconnect"): boolean; - emit(event: "error", error: Error): boolean; - emit(event: "exit", code: number, signal: string): boolean; - emit(event: "listening", address: Address): boolean; - emit(event: "message", message: any, handle: net.Socket | net.Server): boolean; - emit(event: "online"): boolean; - - on(event: string, listener: (...args: any[]) => void): this; - on(event: "disconnect", listener: () => void): this; - on(event: "error", listener: (error: Error) => void): this; - on(event: "exit", listener: (code: number, signal: string) => void): this; - on(event: "listening", listener: (address: Address) => void): this; - on(event: "message", listener: (message: any, handle: net.Socket | net.Server) => void): this; // the handle is a net.Socket or net.Server object, or undefined. - on(event: "online", listener: () => void): this; - - once(event: string, listener: (...args: any[]) => void): this; - once(event: "disconnect", listener: () => void): this; - once(event: "error", listener: (error: Error) => void): this; - once(event: "exit", listener: (code: number, signal: string) => void): this; - once(event: "listening", listener: (address: Address) => void): this; - once(event: "message", listener: (message: any, handle: net.Socket | net.Server) => void): this; // the handle is a net.Socket or net.Server object, or undefined. - once(event: "online", listener: () => void): this; - - prependListener(event: string, listener: (...args: any[]) => void): this; - prependListener(event: "disconnect", listener: () => void): this; - prependListener(event: "error", listener: (error: Error) => void): this; - prependListener(event: "exit", listener: (code: number, signal: string) => void): this; - prependListener(event: "listening", listener: (address: Address) => void): this; - prependListener(event: "message", listener: (message: any, handle: net.Socket | net.Server) => void): this; // the handle is a net.Socket or net.Server object, or undefined. - prependListener(event: "online", listener: () => void): this; - - prependOnceListener(event: string, listener: (...args: any[]) => void): this; - prependOnceListener(event: "disconnect", listener: () => void): this; - prependOnceListener(event: "error", listener: (error: Error) => void): this; - prependOnceListener(event: "exit", listener: (code: number, signal: string) => void): this; - prependOnceListener(event: "listening", listener: (address: Address) => void): this; - prependOnceListener(event: "message", listener: (message: any, handle: net.Socket | net.Server) => void): this; // the handle is a net.Socket or net.Server object, or undefined. - prependOnceListener(event: "online", listener: () => void): this; - } - - export interface Cluster extends events.EventEmitter { - Worker: Worker; - disconnect(callback?: Function): void; - fork(env?: any): Worker; - isMaster: boolean; - isWorker: boolean; - // TODO: cluster.schedulingPolicy - settings: ClusterSettings; - setupMaster(settings?: ClusterSetupMasterSettings): void; - worker?: Worker; - workers?: { - [index: string]: Worker | undefined - }; - - /** - * events.EventEmitter - * 1. disconnect - * 2. exit - * 3. fork - * 4. listening - * 5. message - * 6. online - * 7. setup - */ - addListener(event: string, listener: (...args: any[]) => void): this; - addListener(event: "disconnect", listener: (worker: Worker) => void): this; - addListener(event: "exit", listener: (worker: Worker, code: number, signal: string) => void): this; - addListener(event: "fork", listener: (worker: Worker) => void): this; - addListener(event: "listening", listener: (worker: Worker, address: Address) => void): this; - addListener(event: "message", listener: (worker: Worker, message: any, handle: net.Socket | net.Server) => void): this; // the handle is a net.Socket or net.Server object, or undefined. - addListener(event: "online", listener: (worker: Worker) => void): this; - addListener(event: "setup", listener: (settings: any) => void): this; - - emit(event: string | symbol, ...args: any[]): boolean; - emit(event: "disconnect", worker: Worker): boolean; - emit(event: "exit", worker: Worker, code: number, signal: string): boolean; - emit(event: "fork", worker: Worker): boolean; - emit(event: "listening", worker: Worker, address: Address): boolean; - emit(event: "message", worker: Worker, message: any, handle: net.Socket | net.Server): boolean; - emit(event: "online", worker: Worker): boolean; - emit(event: "setup", settings: any): boolean; - - on(event: string, listener: (...args: any[]) => void): this; - on(event: "disconnect", listener: (worker: Worker) => void): this; - on(event: "exit", listener: (worker: Worker, code: number, signal: string) => void): this; - on(event: "fork", listener: (worker: Worker) => void): this; - on(event: "listening", listener: (worker: Worker, address: Address) => void): this; - on(event: "message", listener: (worker: Worker, message: any, handle: net.Socket | net.Server) => void): this; // the handle is a net.Socket or net.Server object, or undefined. - on(event: "online", listener: (worker: Worker) => void): this; - on(event: "setup", listener: (settings: any) => void): this; - - once(event: string, listener: (...args: any[]) => void): this; - once(event: "disconnect", listener: (worker: Worker) => void): this; - once(event: "exit", listener: (worker: Worker, code: number, signal: string) => void): this; - once(event: "fork", listener: (worker: Worker) => void): this; - once(event: "listening", listener: (worker: Worker, address: Address) => void): this; - once(event: "message", listener: (worker: Worker, message: any, handle: net.Socket | net.Server) => void): this; // the handle is a net.Socket or net.Server object, or undefined. - once(event: "online", listener: (worker: Worker) => void): this; - once(event: "setup", listener: (settings: any) => void): this; - - prependListener(event: string, listener: (...args: any[]) => void): this; - prependListener(event: "disconnect", listener: (worker: Worker) => void): this; - prependListener(event: "exit", listener: (worker: Worker, code: number, signal: string) => void): this; - prependListener(event: "fork", listener: (worker: Worker) => void): this; - prependListener(event: "listening", listener: (worker: Worker, address: Address) => void): this; - prependListener(event: "message", listener: (worker: Worker, message: any, handle: net.Socket | net.Server) => void): this; // the handle is a net.Socket or net.Server object, or undefined. - prependListener(event: "online", listener: (worker: Worker) => void): this; - prependListener(event: "setup", listener: (settings: any) => void): this; - - prependOnceListener(event: string, listener: (...args: any[]) => void): this; - prependOnceListener(event: "disconnect", listener: (worker: Worker) => void): this; - prependOnceListener(event: "exit", listener: (worker: Worker, code: number, signal: string) => void): this; - prependOnceListener(event: "fork", listener: (worker: Worker) => void): this; - prependOnceListener(event: "listening", listener: (worker: Worker, address: Address) => void): this; - prependOnceListener(event: "message", listener: (worker: Worker, message: any, handle: net.Socket | net.Server) => void): this; // the handle is a net.Socket or net.Server object, or undefined. - prependOnceListener(event: "online", listener: (worker: Worker) => void): this; - prependOnceListener(event: "setup", listener: (settings: any) => void): this; - } - - export function disconnect(callback?: Function): void; - export function fork(env?: any): Worker; - export var isMaster: boolean; - export var isWorker: boolean; - // TODO: cluster.schedulingPolicy - export var settings: ClusterSettings; - export function setupMaster(settings?: ClusterSetupMasterSettings): void; - export var worker: Worker; - export var workers: { - [index: string]: Worker | undefined - }; - - /** - * events.EventEmitter - * 1. disconnect - * 2. exit - * 3. fork - * 4. listening - * 5. message - * 6. online - * 7. setup - */ - export function addListener(event: string, listener: (...args: any[]) => void): Cluster; - export function addListener(event: "disconnect", listener: (worker: Worker) => void): Cluster; - export function addListener(event: "exit", listener: (worker: Worker, code: number, signal: string) => void): Cluster; - export function addListener(event: "fork", listener: (worker: Worker) => void): Cluster; - export function addListener(event: "listening", listener: (worker: Worker, address: Address) => void): Cluster; - export function addListener(event: "message", listener: (worker: Worker, message: any, handle: net.Socket | net.Server) => void): Cluster; // the handle is a net.Socket or net.Server object, or undefined. - export function addListener(event: "online", listener: (worker: Worker) => void): Cluster; - export function addListener(event: "setup", listener: (settings: any) => void): Cluster; - - export function emit(event: string | symbol, ...args: any[]): boolean; - export function emit(event: "disconnect", worker: Worker): boolean; - export function emit(event: "exit", worker: Worker, code: number, signal: string): boolean; - export function emit(event: "fork", worker: Worker): boolean; - export function emit(event: "listening", worker: Worker, address: Address): boolean; - export function emit(event: "message", worker: Worker, message: any, handle: net.Socket | net.Server): boolean; - export function emit(event: "online", worker: Worker): boolean; - export function emit(event: "setup", settings: any): boolean; - - export function on(event: string, listener: (...args: any[]) => void): Cluster; - export function on(event: "disconnect", listener: (worker: Worker) => void): Cluster; - export function on(event: "exit", listener: (worker: Worker, code: number, signal: string) => void): Cluster; - export function on(event: "fork", listener: (worker: Worker) => void): Cluster; - export function on(event: "listening", listener: (worker: Worker, address: Address) => void): Cluster; - export function on(event: "message", listener: (worker: Worker, message: any, handle: net.Socket | net.Server) => void): Cluster; // the handle is a net.Socket or net.Server object, or undefined. - export function on(event: "online", listener: (worker: Worker) => void): Cluster; - export function on(event: "setup", listener: (settings: any) => void): Cluster; - - export function once(event: string, listener: (...args: any[]) => void): Cluster; - export function once(event: "disconnect", listener: (worker: Worker) => void): Cluster; - export function once(event: "exit", listener: (worker: Worker, code: number, signal: string) => void): Cluster; - export function once(event: "fork", listener: (worker: Worker) => void): Cluster; - export function once(event: "listening", listener: (worker: Worker, address: Address) => void): Cluster; - export function once(event: "message", listener: (worker: Worker, message: any, handle: net.Socket | net.Server) => void): Cluster; // the handle is a net.Socket or net.Server object, or undefined. - export function once(event: "online", listener: (worker: Worker) => void): Cluster; - export function once(event: "setup", listener: (settings: any) => void): Cluster; - - export function removeListener(event: string, listener: (...args: any[]) => void): Cluster; - export function removeAllListeners(event?: string): Cluster; - export function setMaxListeners(n: number): Cluster; - export function getMaxListeners(): number; - export function listeners(event: string): Function[]; - export function listenerCount(type: string): number; - - export function prependListener(event: string, listener: (...args: any[]) => void): Cluster; - export function prependListener(event: "disconnect", listener: (worker: Worker) => void): Cluster; - export function prependListener(event: "exit", listener: (worker: Worker, code: number, signal: string) => void): Cluster; - export function prependListener(event: "fork", listener: (worker: Worker) => void): Cluster; - export function prependListener(event: "listening", listener: (worker: Worker, address: Address) => void): Cluster; - export function prependListener(event: "message", listener: (worker: Worker, message: any, handle: net.Socket | net.Server) => void): Cluster; // the handle is a net.Socket or net.Server object, or undefined. - export function prependListener(event: "online", listener: (worker: Worker) => void): Cluster; - export function prependListener(event: "setup", listener: (settings: any) => void): Cluster; - - export function prependOnceListener(event: string, listener: (...args: any[]) => void): Cluster; - export function prependOnceListener(event: "disconnect", listener: (worker: Worker) => void): Cluster; - export function prependOnceListener(event: "exit", listener: (worker: Worker, code: number, signal: string) => void): Cluster; - export function prependOnceListener(event: "fork", listener: (worker: Worker) => void): Cluster; - export function prependOnceListener(event: "listening", listener: (worker: Worker, address: Address) => void): Cluster; - export function prependOnceListener(event: "message", listener: (worker: Worker, message: any, handle: net.Socket | net.Server) => void): Cluster; // the handle is a net.Socket or net.Server object, or undefined. - export function prependOnceListener(event: "online", listener: (worker: Worker) => void): Cluster; - export function prependOnceListener(event: "setup", listener: (settings: any) => void): Cluster; - - export function eventNames(): string[]; -} - -declare module "zlib" { - import * as stream from "stream"; - - export interface ZlibOptions { - flush?: number; // default: zlib.constants.Z_NO_FLUSH - finishFlush?: number; // default: zlib.constants.Z_FINISH - chunkSize?: number; // default: 16*1024 - windowBits?: number; - level?: number; // compression only - memLevel?: number; // compression only - strategy?: number; // compression only - dictionary?: any; // deflate/inflate only, empty dictionary by default - } - - export interface Gzip extends stream.Transform { } - export interface Gunzip extends stream.Transform { } - export interface Deflate extends stream.Transform { } - export interface Inflate extends stream.Transform { } - export interface DeflateRaw extends stream.Transform { } - export interface InflateRaw extends stream.Transform { } - export interface Unzip extends stream.Transform { } - - export function createGzip(options?: ZlibOptions): Gzip; - export function createGunzip(options?: ZlibOptions): Gunzip; - export function createDeflate(options?: ZlibOptions): Deflate; - export function createInflate(options?: ZlibOptions): Inflate; - export function createDeflateRaw(options?: ZlibOptions): DeflateRaw; - export function createInflateRaw(options?: ZlibOptions): InflateRaw; - export function createUnzip(options?: ZlibOptions): Unzip; - - export function deflate(buf: Buffer | string, callback: (error: Error | null, result: Buffer) => void): void; - export function deflate(buf: Buffer | string, options: ZlibOptions, callback: (error: Error | null, result: Buffer) => void): void; - export function deflateSync(buf: Buffer | string, options?: ZlibOptions): Buffer; - export function deflateRaw(buf: Buffer | string, callback: (error: Error | null, result: Buffer) => void): void; - export function deflateRaw(buf: Buffer | string, options: ZlibOptions, callback: (error: Error | null, result: Buffer) => void): void; - export function deflateRawSync(buf: Buffer | string, options?: ZlibOptions): Buffer; - export function gzip(buf: Buffer | string, callback: (error: Error | null, result: Buffer) => void): void; - export function gzip(buf: Buffer | string, options: ZlibOptions, callback: (error: Error | null, result: Buffer) => void): void; - export function gzipSync(buf: Buffer | string, options?: ZlibOptions): Buffer; - export function gunzip(buf: Buffer | string, callback: (error: Error | null, result: Buffer) => void): void; - export function gunzip(buf: Buffer | string, options: ZlibOptions, callback: (error: Error | null, result: Buffer) => void): void; - export function gunzipSync(buf: Buffer | string, options?: ZlibOptions): Buffer; - export function inflate(buf: Buffer | string, callback: (error: Error | null, result: Buffer) => void): void; - export function inflate(buf: Buffer | string, options: ZlibOptions, callback: (error: Error | null, result: Buffer) => void): void; - export function inflateSync(buf: Buffer | string, options?: ZlibOptions): Buffer; - export function inflateRaw(buf: Buffer | string, callback: (error: Error | null, result: Buffer) => void): void; - export function inflateRaw(buf: Buffer | string, options: ZlibOptions, callback: (error: Error | null, result: Buffer) => void): void; - export function inflateRawSync(buf: Buffer | string, options?: ZlibOptions): Buffer; - export function unzip(buf: Buffer | string, callback: (error: Error | null, result: Buffer) => void): void; - export function unzip(buf: Buffer | string, options: ZlibOptions, callback: (error: Error | null, result: Buffer) => void): void; - export function unzipSync(buf: Buffer | string, options?: ZlibOptions): Buffer; - - export namespace constants { - // Allowed flush values. - - export const Z_NO_FLUSH: number; - export const Z_PARTIAL_FLUSH: number; - export const Z_SYNC_FLUSH: number; - export const Z_FULL_FLUSH: number; - export const Z_FINISH: number; - export const Z_BLOCK: number; - export const Z_TREES: number; - - // Return codes for the compression/decompression functions. Negative values are errors, positive values are used for special but normal events. - - export const Z_OK: number; - export const Z_STREAM_END: number; - export const Z_NEED_DICT: number; - export const Z_ERRNO: number; - export const Z_STREAM_ERROR: number; - export const Z_DATA_ERROR: number; - export const Z_MEM_ERROR: number; - export const Z_BUF_ERROR: number; - export const Z_VERSION_ERROR: number; - - // Compression levels. - - export const Z_NO_COMPRESSION: number; - export const Z_BEST_SPEED: number; - export const Z_BEST_COMPRESSION: number; - export const Z_DEFAULT_COMPRESSION: number; - - // Compression strategy. - - export const Z_FILTERED: number; - export const Z_HUFFMAN_ONLY: number; - export const Z_RLE: number; - export const Z_FIXED: number; - export const Z_DEFAULT_STRATEGY: number; - } - - // Constants - export var Z_NO_FLUSH: number; - export var Z_PARTIAL_FLUSH: number; - export var Z_SYNC_FLUSH: number; - export var Z_FULL_FLUSH: number; - export var Z_FINISH: number; - export var Z_BLOCK: number; - export var Z_TREES: number; - export var Z_OK: number; - export var Z_STREAM_END: number; - export var Z_NEED_DICT: number; - export var Z_ERRNO: number; - export var Z_STREAM_ERROR: number; - export var Z_DATA_ERROR: number; - export var Z_MEM_ERROR: number; - export var Z_BUF_ERROR: number; - export var Z_VERSION_ERROR: number; - export var Z_NO_COMPRESSION: number; - export var Z_BEST_SPEED: number; - export var Z_BEST_COMPRESSION: number; - export var Z_DEFAULT_COMPRESSION: number; - export var Z_FILTERED: number; - export var Z_HUFFMAN_ONLY: number; - export var Z_RLE: number; - export var Z_FIXED: number; - export var Z_DEFAULT_STRATEGY: number; - export var Z_BINARY: number; - export var Z_TEXT: number; - export var Z_ASCII: number; - export var Z_UNKNOWN: number; - export var Z_DEFLATED: number; -} - -declare module "os" { - export interface CpuInfo { - model: string; - speed: number; - times: { - user: number; - nice: number; - sys: number; - idle: number; - irq: number; - }; - } - - export interface NetworkInterfaceBase { - address: string; - netmask: string; - mac: string; - internal: boolean; - } - - export interface NetworkInterfaceInfoIPv4 extends NetworkInterfaceBase { - family: "IPv4"; - } - - export interface NetworkInterfaceInfoIPv6 extends NetworkInterfaceBase { - family: "IPv6"; - scopeid: number; - } - - export type NetworkInterfaceInfo = NetworkInterfaceInfoIPv4 | NetworkInterfaceInfoIPv6; - - export function hostname(): string; - export function loadavg(): number[]; - export function uptime(): number; - export function freemem(): number; - export function totalmem(): number; - export function cpus(): CpuInfo[]; - export function type(): string; - export function release(): string; - export function networkInterfaces(): { [index: string]: NetworkInterfaceInfo[] }; - export function homedir(): string; - export function userInfo(options?: { encoding: string }): { username: string, uid: number, gid: number, shell: any, homedir: string }; - export var constants: { - UV_UDP_REUSEADDR: number, - signals: { - SIGHUP: number; - SIGINT: number; - SIGQUIT: number; - SIGILL: number; - SIGTRAP: number; - SIGABRT: number; - SIGIOT: number; - SIGBUS: number; - SIGFPE: number; - SIGKILL: number; - SIGUSR1: number; - SIGSEGV: number; - SIGUSR2: number; - SIGPIPE: number; - SIGALRM: number; - SIGTERM: number; - SIGCHLD: number; - SIGSTKFLT: number; - SIGCONT: number; - SIGSTOP: number; - SIGTSTP: number; - SIGTTIN: number; - SIGTTOU: number; - SIGURG: number; - SIGXCPU: number; - SIGXFSZ: number; - SIGVTALRM: number; - SIGPROF: number; - SIGWINCH: number; - SIGIO: number; - SIGPOLL: number; - SIGPWR: number; - SIGSYS: number; - SIGUNUSED: number; - }, - errno: { - E2BIG: number; - EACCES: number; - EADDRINUSE: number; - EADDRNOTAVAIL: number; - EAFNOSUPPORT: number; - EAGAIN: number; - EALREADY: number; - EBADF: number; - EBADMSG: number; - EBUSY: number; - ECANCELED: number; - ECHILD: number; - ECONNABORTED: number; - ECONNREFUSED: number; - ECONNRESET: number; - EDEADLK: number; - EDESTADDRREQ: number; - EDOM: number; - EDQUOT: number; - EEXIST: number; - EFAULT: number; - EFBIG: number; - EHOSTUNREACH: number; - EIDRM: number; - EILSEQ: number; - EINPROGRESS: number; - EINTR: number; - EINVAL: number; - EIO: number; - EISCONN: number; - EISDIR: number; - ELOOP: number; - EMFILE: number; - EMLINK: number; - EMSGSIZE: number; - EMULTIHOP: number; - ENAMETOOLONG: number; - ENETDOWN: number; - ENETRESET: number; - ENETUNREACH: number; - ENFILE: number; - ENOBUFS: number; - ENODATA: number; - ENODEV: number; - ENOENT: number; - ENOEXEC: number; - ENOLCK: number; - ENOLINK: number; - ENOMEM: number; - ENOMSG: number; - ENOPROTOOPT: number; - ENOSPC: number; - ENOSR: number; - ENOSTR: number; - ENOSYS: number; - ENOTCONN: number; - ENOTDIR: number; - ENOTEMPTY: number; - ENOTSOCK: number; - ENOTSUP: number; - ENOTTY: number; - ENXIO: number; - EOPNOTSUPP: number; - EOVERFLOW: number; - EPERM: number; - EPIPE: number; - EPROTO: number; - EPROTONOSUPPORT: number; - EPROTOTYPE: number; - ERANGE: number; - EROFS: number; - ESPIPE: number; - ESRCH: number; - ESTALE: number; - ETIME: number; - ETIMEDOUT: number; - ETXTBSY: number; - EWOULDBLOCK: number; - EXDEV: number; - }, - }; - export function arch(): string; - export function platform(): NodeJS.Platform; - export function tmpdir(): string; - export var EOL: string; - export function endianness(): "BE" | "LE"; -} - -declare module "https" { - import * as tls from "tls"; - import * as events from "events"; - import * as http from "http"; - import { URL } from "url"; - - export interface ServerOptions { - pfx?: any; - key?: any; - passphrase?: string; - cert?: any; - ca?: any; - crl?: any; - ciphers?: string; - honorCipherOrder?: boolean; - requestCert?: boolean; - rejectUnauthorized?: boolean; - NPNProtocols?: any; - SNICallback?: (servername: string, cb: (err: Error, ctx: tls.SecureContext) => any) => any; - } - - export interface RequestOptions extends http.RequestOptions { - pfx?: any; - key?: any; - passphrase?: string; - cert?: any; - ca?: any; - ciphers?: string; - rejectUnauthorized?: boolean; - secureProtocol?: string; - } - - export interface ClientRequest extends http.ClientRequest { } - - export interface IncomingMessage extends http.IncomingMessage { } - - export interface ServerResponse extends http.ServerResponse { } - - export interface Agent extends http.Agent { } - - export interface AgentOptions extends http.AgentOptions { - pfx?: any; - key?: any; - passphrase?: string; - cert?: any; - ca?: any; - ciphers?: string; - rejectUnauthorized?: boolean; - secureProtocol?: string; - maxCachedSessions?: number; - } - - export var Agent: { - new(options?: AgentOptions): Agent; - }; - export interface Server extends tls.Server { } - export function createServer(options: ServerOptions, requestListener?: (req: IncomingMessage, res: ServerResponse) => void): Server; - export function request(options: RequestOptions | string | URL, callback?: (res: IncomingMessage) => void): ClientRequest; - export function get(options: RequestOptions | string | URL, callback?: (res: IncomingMessage) => void): ClientRequest; - export var globalAgent: Agent; -} - -declare module "punycode" { - export function decode(string: string): string; - export function encode(string: string): string; - export function toUnicode(domain: string): string; - export function toASCII(domain: string): string; - export var ucs2: ucs2; - interface ucs2 { - decode(string: string): number[]; - encode(codePoints: number[]): string; - } - export var version: any; -} - -declare module "repl" { - import * as stream from "stream"; - import * as readline from "readline"; - - export interface ReplOptions { - prompt?: string; - input?: NodeJS.ReadableStream; - output?: NodeJS.WritableStream; - terminal?: boolean; - eval?: Function; - useColors?: boolean; - useGlobal?: boolean; - ignoreUndefined?: boolean; - writer?: Function; - completer?: Function; - replMode?: any; - breakEvalOnSigint?: any; - } - - export interface REPLServer extends readline.ReadLine { - context: any; - inputStream: NodeJS.ReadableStream; - outputStream: NodeJS.WritableStream; - - defineCommand(keyword: string, cmd: Function | { help: string, action: Function }): void; - displayPrompt(preserveCursor?: boolean): void; - - /** - * events.EventEmitter - * 1. exit - * 2. reset - */ - - addListener(event: string, listener: (...args: any[]) => void): this; - addListener(event: "exit", listener: () => void): this; - addListener(event: "reset", listener: (...args: any[]) => void): this; - - emit(event: string | symbol, ...args: any[]): boolean; - emit(event: "exit"): boolean; - emit(event: "reset", context: any): boolean; - - on(event: string, listener: (...args: any[]) => void): this; - on(event: "exit", listener: () => void): this; - on(event: "reset", listener: (...args: any[]) => void): this; - - once(event: string, listener: (...args: any[]) => void): this; - once(event: "exit", listener: () => void): this; - once(event: "reset", listener: (...args: any[]) => void): this; - - prependListener(event: string, listener: (...args: any[]) => void): this; - prependListener(event: "exit", listener: () => void): this; - prependListener(event: "reset", listener: (...args: any[]) => void): this; - - prependOnceListener(event: string, listener: (...args: any[]) => void): this; - prependOnceListener(event: "exit", listener: () => void): this; - prependOnceListener(event: "reset", listener: (...args: any[]) => void): this; - } - - export function start(options?: string | ReplOptions): REPLServer; - - export class Recoverable extends SyntaxError { - err: Error; - - constructor(err: Error); - } -} - -declare module "readline" { - import * as events from "events"; - import * as stream from "stream"; - - export interface Key { - sequence?: string; - name?: string; - ctrl?: boolean; - meta?: boolean; - shift?: boolean; - } - - export interface ReadLine extends events.EventEmitter { - setPrompt(prompt: string): void; - prompt(preserveCursor?: boolean): void; - question(query: string, callback: (answer: string) => void): void; - pause(): ReadLine; - resume(): ReadLine; - close(): void; - write(data: string | Buffer, key?: Key): void; - - /** - * events.EventEmitter - * 1. close - * 2. line - * 3. pause - * 4. resume - * 5. SIGCONT - * 6. SIGINT - * 7. SIGTSTP - */ - - addListener(event: string, listener: (...args: any[]) => void): this; - addListener(event: "close", listener: () => void): this; - addListener(event: "line", listener: (input: any) => void): this; - addListener(event: "pause", listener: () => void): this; - addListener(event: "resume", listener: () => void): this; - addListener(event: "SIGCONT", listener: () => void): this; - addListener(event: "SIGINT", listener: () => void): this; - addListener(event: "SIGTSTP", listener: () => void): this; - - emit(event: string | symbol, ...args: any[]): boolean; - emit(event: "close"): boolean; - emit(event: "line", input: any): boolean; - emit(event: "pause"): boolean; - emit(event: "resume"): boolean; - emit(event: "SIGCONT"): boolean; - emit(event: "SIGINT"): boolean; - emit(event: "SIGTSTP"): boolean; - - on(event: string, listener: (...args: any[]) => void): this; - on(event: "close", listener: () => void): this; - on(event: "line", listener: (input: any) => void): this; - on(event: "pause", listener: () => void): this; - on(event: "resume", listener: () => void): this; - on(event: "SIGCONT", listener: () => void): this; - on(event: "SIGINT", listener: () => void): this; - on(event: "SIGTSTP", listener: () => void): this; - - once(event: string, listener: (...args: any[]) => void): this; - once(event: "close", listener: () => void): this; - once(event: "line", listener: (input: any) => void): this; - once(event: "pause", listener: () => void): this; - once(event: "resume", listener: () => void): this; - once(event: "SIGCONT", listener: () => void): this; - once(event: "SIGINT", listener: () => void): this; - once(event: "SIGTSTP", listener: () => void): this; - - prependListener(event: string, listener: (...args: any[]) => void): this; - prependListener(event: "close", listener: () => void): this; - prependListener(event: "line", listener: (input: any) => void): this; - prependListener(event: "pause", listener: () => void): this; - prependListener(event: "resume", listener: () => void): this; - prependListener(event: "SIGCONT", listener: () => void): this; - prependListener(event: "SIGINT", listener: () => void): this; - prependListener(event: "SIGTSTP", listener: () => void): this; - - prependOnceListener(event: string, listener: (...args: any[]) => void): this; - prependOnceListener(event: "close", listener: () => void): this; - prependOnceListener(event: "line", listener: (input: any) => void): this; - prependOnceListener(event: "pause", listener: () => void): this; - prependOnceListener(event: "resume", listener: () => void): this; - prependOnceListener(event: "SIGCONT", listener: () => void): this; - prependOnceListener(event: "SIGINT", listener: () => void): this; - prependOnceListener(event: "SIGTSTP", listener: () => void): this; - } - - type Completer = (line: string) => CompleterResult; - type AsyncCompleter = (line: string, callback: (err: any, result: CompleterResult) => void) => any; - - export type CompleterResult = [string[], string]; - - export interface ReadLineOptions { - input: NodeJS.ReadableStream; - output?: NodeJS.WritableStream; - completer?: Completer | AsyncCompleter; - terminal?: boolean; - historySize?: number; - } - - export function createInterface(input: NodeJS.ReadableStream, output?: NodeJS.WritableStream, completer?: Completer | AsyncCompleter, terminal?: boolean): ReadLine; - export function createInterface(options: ReadLineOptions): ReadLine; - - export function cursorTo(stream: NodeJS.WritableStream, x: number, y?: number): void; - export function moveCursor(stream: NodeJS.WritableStream, dx: number | string, dy: number | string): void; - export function clearLine(stream: NodeJS.WritableStream, dir: number): void; - export function clearScreenDown(stream: NodeJS.WritableStream): void; -} - -declare module "vm" { - export interface Context { } - export interface ScriptOptions { - filename?: string; - lineOffset?: number; - columnOffset?: number; - displayErrors?: boolean; - timeout?: number; - cachedData?: Buffer; - produceCachedData?: boolean; - } - export interface RunningScriptOptions { - filename?: string; - lineOffset?: number; - columnOffset?: number; - displayErrors?: boolean; - timeout?: number; - } - export class Script { - constructor(code: string, options?: ScriptOptions); - runInContext(contextifiedSandbox: Context, options?: RunningScriptOptions): any; - runInNewContext(sandbox?: Context, options?: RunningScriptOptions): any; - runInThisContext(options?: RunningScriptOptions): any; - } - export function createContext(sandbox?: Context): Context; - export function isContext(sandbox: Context): boolean; - export function runInContext(code: string, contextifiedSandbox: Context, options?: RunningScriptOptions): any; - export function runInDebugContext(code: string): any; - export function runInNewContext(code: string, sandbox?: Context, options?: RunningScriptOptions): any; - export function runInThisContext(code: string, options?: RunningScriptOptions): any; -} - -declare module "child_process" { - import * as events from "events"; - import * as stream from "stream"; - import * as net from "net"; - - export interface ChildProcess extends events.EventEmitter { - stdin: stream.Writable; - stdout: stream.Readable; - stderr: stream.Readable; - stdio: [stream.Writable, stream.Readable, stream.Readable]; - killed: boolean; - pid: number; - kill(signal?: string): void; - send(message: any, callback?: (error: Error) => void): boolean; - send(message: any, sendHandle?: net.Socket | net.Server, callback?: (error: Error) => void): boolean; - send(message: any, sendHandle?: net.Socket | net.Server, options?: MessageOptions, callback?: (error: Error) => void): boolean; - connected: boolean; - disconnect(): void; - unref(): void; - ref(): void; - - /** - * events.EventEmitter - * 1. close - * 2. disconnect - * 3. error - * 4. exit - * 5. message - */ - - addListener(event: string, listener: (...args: any[]) => void): this; - addListener(event: "close", listener: (code: number, signal: string) => void): this; - addListener(event: "disconnect", listener: () => void): this; - addListener(event: "error", listener: (err: Error) => void): this; - addListener(event: "exit", listener: (code: number, signal: string) => void): this; - addListener(event: "message", listener: (message: any, sendHandle: net.Socket | net.Server) => void): this; - - emit(event: string | symbol, ...args: any[]): boolean; - emit(event: "close", code: number, signal: string): boolean; - emit(event: "disconnect"): boolean; - emit(event: "error", err: Error): boolean; - emit(event: "exit", code: number, signal: string): boolean; - emit(event: "message", message: any, sendHandle: net.Socket | net.Server): boolean; - - on(event: string, listener: (...args: any[]) => void): this; - on(event: "close", listener: (code: number, signal: string) => void): this; - on(event: "disconnect", listener: () => void): this; - on(event: "error", listener: (err: Error) => void): this; - on(event: "exit", listener: (code: number, signal: string) => void): this; - on(event: "message", listener: (message: any, sendHandle: net.Socket | net.Server) => void): this; - - once(event: string, listener: (...args: any[]) => void): this; - once(event: "close", listener: (code: number, signal: string) => void): this; - once(event: "disconnect", listener: () => void): this; - once(event: "error", listener: (err: Error) => void): this; - once(event: "exit", listener: (code: number, signal: string) => void): this; - once(event: "message", listener: (message: any, sendHandle: net.Socket | net.Server) => void): this; - - prependListener(event: string, listener: (...args: any[]) => void): this; - prependListener(event: "close", listener: (code: number, signal: string) => void): this; - prependListener(event: "disconnect", listener: () => void): this; - prependListener(event: "error", listener: (err: Error) => void): this; - prependListener(event: "exit", listener: (code: number, signal: string) => void): this; - prependListener(event: "message", listener: (message: any, sendHandle: net.Socket | net.Server) => void): this; - - prependOnceListener(event: string, listener: (...args: any[]) => void): this; - prependOnceListener(event: "close", listener: (code: number, signal: string) => void): this; - prependOnceListener(event: "disconnect", listener: () => void): this; - prependOnceListener(event: "error", listener: (err: Error) => void): this; - prependOnceListener(event: "exit", listener: (code: number, signal: string) => void): this; - prependOnceListener(event: "message", listener: (message: any, sendHandle: net.Socket | net.Server) => void): this; - } - - export interface MessageOptions { - keepOpen?: boolean; - } - - export interface SpawnOptions { - cwd?: string; - env?: any; - stdio?: any; - detached?: boolean; - uid?: number; - gid?: number; - shell?: boolean | string; - } - - export function spawn(command: string, args?: string[], options?: SpawnOptions): ChildProcess; - - export interface ExecOptions { - cwd?: string; - env?: any; - shell?: string; - timeout?: number; - maxBuffer?: number; - killSignal?: string; - uid?: number; - gid?: number; - } - - export interface ExecOptionsWithStringEncoding extends ExecOptions { - encoding: BufferEncoding; - } - - export interface ExecOptionsWithBufferEncoding extends ExecOptions { - encoding: string | null; // specify `null`. - } - - // no `options` definitely means stdout/stderr are `string`. - export function exec(command: string, callback?: (error: Error | null, stdout: string, stderr: string) => void): ChildProcess; - - // `options` with `"buffer"` or `null` for `encoding` means stdout/stderr are definitely `Buffer`. - export function exec(command: string, options: { encoding: "buffer" | null } & ExecOptions, callback?: (error: Error | null, stdout: Buffer, stderr: Buffer) => void): ChildProcess; - - // `options` with well known `encoding` means stdout/stderr are definitely `string`. - export function exec(command: string, options: { encoding: BufferEncoding } & ExecOptions, callback?: (error: Error | null, stdout: string, stderr: string) => void): ChildProcess; - - // `options` with an `encoding` whose type is `string` means stdout/stderr could either be `Buffer` or `string`. - // There is no guarantee the `encoding` is unknown as `string` is a superset of `BufferEncoding`. - export function exec(command: string, options: { encoding: string } & ExecOptions, callback?: (error: Error | null, stdout: string | Buffer, stderr: string | Buffer) => void): ChildProcess; - - // `options` without an `encoding` means stdout/stderr are definitely `string`. - export function exec(command: string, options: ExecOptions, callback?: (error: Error | null, stdout: string, stderr: string) => void): ChildProcess; - - // fallback if nothing else matches. Worst case is always `string | Buffer`. - export function exec(command: string, options: ({ encoding?: string | null } & ExecOptions) | undefined | null, callback?: (error: Error | null, stdout: string | Buffer, stderr: string | Buffer) => void): ChildProcess; - - // NOTE: This namespace provides design-time support for util.promisify. Exported members do not exist at runtime. - export namespace exec { - export function __promisify__(command: string): Promise<{ stdout: string, stderr: string }>; - export function __promisify__(command: string, options: { encoding: "buffer" | null } & ExecOptions): Promise<{ stdout: Buffer, stderr: Buffer }>; - export function __promisify__(command: string, options: { encoding: BufferEncoding } & ExecOptions): Promise<{ stdout: string, stderr: string }>; - export function __promisify__(command: string, options: ExecOptions): Promise<{ stdout: string, stderr: string }>; - export function __promisify__(command: string, options?: ({ encoding?: string | null } & ExecOptions) | null): Promise<{ stdout: string | Buffer, stderr: string | Buffer }>; - } - - export interface ExecFileOptions { - cwd?: string; - env?: any; - timeout?: number; - maxBuffer?: number; - killSignal?: string; - uid?: number; - gid?: number; - } - export interface ExecFileOptionsWithStringEncoding extends ExecFileOptions { - encoding: BufferEncoding; - } - export interface ExecFileOptionsWithBufferEncoding extends ExecFileOptions { - encoding: 'buffer' | null; - } - export interface ExecFileOptionsWithOtherEncoding extends ExecFileOptions { - encoding: string; - } - - export function execFile(file: string): ChildProcess; - export function execFile(file: string, options: ({ encoding?: string | null } & ExecFileOptions) | undefined | null): ChildProcess; - export function execFile(file: string, args: string[] | undefined | null): ChildProcess; - export function execFile(file: string, args: string[] | undefined | null, options: ({ encoding?: string | null } & ExecFileOptions) | undefined | null): ChildProcess; - - // no `options` definitely means stdout/stderr are `string`. - export function execFile(file: string, callback: (error: Error | null, stdout: string, stderr: string) => void): ChildProcess; - export function execFile(file: string, args: string[] | undefined | null, callback: (error: Error | null, stdout: string, stderr: string) => void): ChildProcess; - - // `options` with `"buffer"` or `null` for `encoding` means stdout/stderr are definitely `Buffer`. - export function execFile(file: string, options: ExecFileOptionsWithBufferEncoding, callback: (error: Error | null, stdout: Buffer, stderr: Buffer) => void): ChildProcess; - export function execFile(file: string, args: string[] | undefined | null, options: ExecFileOptionsWithBufferEncoding, callback: (error: Error | null, stdout: Buffer, stderr: Buffer) => void): ChildProcess; - - // `options` with well known `encoding` means stdout/stderr are definitely `string`. - export function execFile(file: string, options: ExecFileOptionsWithStringEncoding, callback: (error: Error | null, stdout: string, stderr: string) => void): ChildProcess; - export function execFile(file: string, args: string[] | undefined | null, options: ExecFileOptionsWithStringEncoding, callback: (error: Error | null, stdout: string, stderr: string) => void): ChildProcess; - - // `options` with an `encoding` whose type is `string` means stdout/stderr could either be `Buffer` or `string`. - // There is no guarantee the `encoding` is unknown as `string` is a superset of `BufferEncoding`. - export function execFile(file: string, options: ExecFileOptionsWithOtherEncoding, callback: (error: Error | null, stdout: string | Buffer, stderr: string | Buffer) => void): ChildProcess; - export function execFile(file: string, args: string[] | undefined | null, options: ExecFileOptionsWithOtherEncoding, callback: (error: Error | null, stdout: string | Buffer, stderr: string | Buffer) => void): ChildProcess; - - // `options` without an `encoding` means stdout/stderr are definitely `string`. - export function execFile(file: string, options: ExecFileOptions, callback: (error: Error | null, stdout: string, stderr: string) => void): ChildProcess; - export function execFile(file: string, args: string[] | undefined | null, options: ExecFileOptions, callback: (error: Error | null, stdout: string, stderr: string) => void): ChildProcess; - - // fallback if nothing else matches. Worst case is always `string | Buffer`. - export function execFile(file: string, options: ({ encoding?: string | null } & ExecFileOptions) | undefined | null, callback: ((error: Error | null, stdout: string | Buffer, stderr: string | Buffer) => void) | undefined | null): ChildProcess; - export function execFile(file: string, args: string[] | undefined | null, options: ({ encoding?: string | null } & ExecFileOptions) | undefined | null, callback: ((error: Error | null, stdout: string | Buffer, stderr: string | Buffer) => void) | undefined | null): ChildProcess; - - // NOTE: This namespace provides design-time support for util.promisify. Exported members do not exist at runtime. - export namespace execFile { - export function __promisify__(file: string): Promise<{ stdout: string, stderr: string }>; - export function __promisify__(file: string, args: string[] | undefined | null): Promise<{ stdout: string, stderr: string }>; - export function __promisify__(file: string, options: ExecFileOptionsWithBufferEncoding): Promise<{ stdout: Buffer, stderr: Buffer }>; - export function __promisify__(file: string, args: string[] | undefined | null, options: ExecFileOptionsWithBufferEncoding): Promise<{ stdout: Buffer, stderr: Buffer }>; - export function __promisify__(file: string, options: ExecFileOptionsWithStringEncoding): Promise<{ stdout: string, stderr: string }>; - export function __promisify__(file: string, args: string[] | undefined | null, options: ExecFileOptionsWithStringEncoding): Promise<{ stdout: string, stderr: string }>; - export function __promisify__(file: string, options: ExecFileOptionsWithOtherEncoding): Promise<{ stdout: string | Buffer, stderr: string | Buffer }>; - export function __promisify__(file: string, args: string[] | undefined | null, options: ExecFileOptionsWithOtherEncoding): Promise<{ stdout: string | Buffer, stderr: string | Buffer }>; - export function __promisify__(file: string, options: ExecFileOptions): Promise<{ stdout: string, stderr: string }>; - export function __promisify__(file: string, args: string[] | undefined | null, options: ExecFileOptions): Promise<{ stdout: string, stderr: string }>; - export function __promisify__(file: string, options: ({ encoding?: string | null } & ExecFileOptions) | undefined | null): Promise<{ stdout: string | Buffer, stderr: string | Buffer }>; - export function __promisify__(file: string, args: string[] | undefined | null, options: ({ encoding?: string | null } & ExecFileOptions) | undefined | null): Promise<{ stdout: string | Buffer, stderr: string | Buffer }>; - } - - export interface ForkOptions { - cwd?: string; - env?: any; - execPath?: string; - execArgv?: string[]; - silent?: boolean; - stdio?: any[]; - uid?: number; - gid?: number; - } - export function fork(modulePath: string, args?: string[], options?: ForkOptions): ChildProcess; - - export interface SpawnSyncOptions { - cwd?: string; - input?: string | Buffer; - stdio?: any; - env?: any; - uid?: number; - gid?: number; - timeout?: number; - killSignal?: string; - maxBuffer?: number; - encoding?: string; - shell?: boolean | string; - } - export interface SpawnSyncOptionsWithStringEncoding extends SpawnSyncOptions { - encoding: BufferEncoding; - } - export interface SpawnSyncOptionsWithBufferEncoding extends SpawnSyncOptions { - encoding: string; // specify `null`. - } - export interface SpawnSyncReturns { - pid: number; - output: string[]; - stdout: T; - stderr: T; - status: number; - signal: string; - error: Error; - } - export function spawnSync(command: string): SpawnSyncReturns; - export function spawnSync(command: string, options?: SpawnSyncOptionsWithStringEncoding): SpawnSyncReturns; - export function spawnSync(command: string, options?: SpawnSyncOptionsWithBufferEncoding): SpawnSyncReturns; - export function spawnSync(command: string, options?: SpawnSyncOptions): SpawnSyncReturns; - export function spawnSync(command: string, args?: string[], options?: SpawnSyncOptionsWithStringEncoding): SpawnSyncReturns; - export function spawnSync(command: string, args?: string[], options?: SpawnSyncOptionsWithBufferEncoding): SpawnSyncReturns; - export function spawnSync(command: string, args?: string[], options?: SpawnSyncOptions): SpawnSyncReturns; - - export interface ExecSyncOptions { - cwd?: string; - input?: string | Buffer; - stdio?: any; - env?: any; - shell?: string; - uid?: number; - gid?: number; - timeout?: number; - killSignal?: string; - maxBuffer?: number; - encoding?: string; - } - export interface ExecSyncOptionsWithStringEncoding extends ExecSyncOptions { - encoding: BufferEncoding; - } - export interface ExecSyncOptionsWithBufferEncoding extends ExecSyncOptions { - encoding: string; // specify `null`. - } - export function execSync(command: string): Buffer; - export function execSync(command: string, options?: ExecSyncOptionsWithStringEncoding): string; - export function execSync(command: string, options?: ExecSyncOptionsWithBufferEncoding): Buffer; - export function execSync(command: string, options?: ExecSyncOptions): Buffer; - - export interface ExecFileSyncOptions { - cwd?: string; - input?: string | Buffer; - stdio?: any; - env?: any; - uid?: number; - gid?: number; - timeout?: number; - killSignal?: string; - maxBuffer?: number; - encoding?: string; - } - export interface ExecFileSyncOptionsWithStringEncoding extends ExecFileSyncOptions { - encoding: BufferEncoding; - } - export interface ExecFileSyncOptionsWithBufferEncoding extends ExecFileSyncOptions { - encoding: string; // specify `null`. - } - export function execFileSync(command: string): Buffer; - export function execFileSync(command: string, options?: ExecFileSyncOptionsWithStringEncoding): string; - export function execFileSync(command: string, options?: ExecFileSyncOptionsWithBufferEncoding): Buffer; - export function execFileSync(command: string, options?: ExecFileSyncOptions): Buffer; - export function execFileSync(command: string, args?: string[], options?: ExecFileSyncOptionsWithStringEncoding): string; - export function execFileSync(command: string, args?: string[], options?: ExecFileSyncOptionsWithBufferEncoding): Buffer; - export function execFileSync(command: string, args?: string[], options?: ExecFileSyncOptions): Buffer; -} - -declare module "url" { - export interface Url { - href?: string; - protocol?: string; - auth?: string; - hostname?: string; - port?: string; - host?: string; - pathname?: string; - search?: string; - query?: string | any; - slashes?: boolean; - hash?: string; - path?: string; - } - - export interface UrlObject { - protocol?: string; - slashes?: boolean; - auth?: string; - host?: string; - hostname?: string; - port?: string | number; - pathname?: string; - search?: string; - query?: { [key: string]: any; }; - hash?: string; - } - - export function parse(urlStr: string, parseQueryString?: boolean, slashesDenoteHost?: boolean): Url; - export function format(URL: URL, options?: URLFormatOptions): string; - export function format(urlObject: UrlObject): string; - export function resolve(from: string, to: string): string; - - export interface URLFormatOptions { - auth?: boolean; - fragment?: boolean; - search?: boolean; - unicode?: boolean; - } - - export class URLSearchParams implements Iterable<[string, string]> { - constructor(init?: URLSearchParams | string | { [key: string]: string | string[] | undefined } | Iterable<[string, string]> | Array<[string, string]>); - append(name: string, value: string): void; - delete(name: string): void; - entries(): IterableIterator<[string, string]>; - forEach(callback: (value: string, name: string) => void): void; - get(name: string): string | null; - getAll(name: string): string[]; - has(name: string): boolean; - keys(): IterableIterator; - set(name: string, value: string): void; - sort(): void; - toString(): string; - values(): IterableIterator; - [Symbol.iterator](): IterableIterator<[string, string]>; - } - - export class URL { - constructor(input: string, base?: string | URL); - hash: string; - host: string; - hostname: string; - href: string; - readonly origin: string; - password: string; - pathname: string; - port: string; - protocol: string; - search: string; - readonly searchParams: URLSearchParams; - username: string; - toString(): string; - toJSON(): string; - } -} - -declare module "dns" { - // Supported getaddrinfo flags. - export const ADDRCONFIG: number; - export const V4MAPPED: number; - - export interface LookupOptions { - family?: number; - hints?: number; - all?: boolean; - } - - export interface LookupOneOptions extends LookupOptions { - all?: false; - } - - export interface LookupAllOptions extends LookupOptions { - all: true; - } - - export interface LookupAddress { - address: string; - family: number; - } - - export function lookup(hostname: string, family: number, callback: (err: NodeJS.ErrnoException, address: string, family: number) => void): void; - export function lookup(hostname: string, options: LookupOneOptions, callback: (err: NodeJS.ErrnoException, address: string, family: number) => void): void; - export function lookup(hostname: string, options: LookupAllOptions, callback: (err: NodeJS.ErrnoException, addresses: LookupAddress[]) => void): void; - export function lookup(hostname: string, options: LookupOptions, callback: (err: NodeJS.ErrnoException, address: string | LookupAddress[], family: number) => void): void; - export function lookup(hostname: string, callback: (err: NodeJS.ErrnoException, address: string, family: number) => void): void; - - // NOTE: This namespace provides design-time support for util.promisify. Exported members do not exist at runtime. - export namespace lookup { - export function __promisify__(hostname: string, options: LookupAllOptions): Promise<{ address: LookupAddress[] }>; - export function __promisify__(hostname: string, options?: LookupOneOptions | number): Promise<{ address: string, family: number }>; - export function __promisify__(hostname: string, options?: LookupOptions | number): Promise<{ address: string | LookupAddress[], family?: number }>; - } - - export interface ResolveOptions { - ttl: boolean; - } - - export interface ResolveWithTtlOptions extends ResolveOptions { - ttl: true; - } - - export interface RecordWithTtl { - address: string; - ttl: number; - } - - export interface MxRecord { - priority: number; - exchange: string; - } - - export interface NaptrRecord { - flags: string; - service: string; - regexp: string; - replacement: string; - order: number; - preference: number; - } - - export interface SoaRecord { - nsname: string; - hostmaster: string; - serial: number; - refresh: number; - retry: number; - expire: number; - minttl: number; - } - - export interface SrvRecord { - priority: number; - weight: number; - port: number; - name: string; - } - - export function resolve(hostname: string, callback: (err: NodeJS.ErrnoException, addresses: string[]) => void): void; - export function resolve(hostname: string, rrtype: "A", callback: (err: NodeJS.ErrnoException, addresses: string[]) => void): void; - export function resolve(hostname: string, rrtype: "AAAA", callback: (err: NodeJS.ErrnoException, addresses: string[]) => void): void; - export function resolve(hostname: string, rrtype: "CNAME", callback: (err: NodeJS.ErrnoException, addresses: string[]) => void): void; - export function resolve(hostname: string, rrtype: "MX", callback: (err: NodeJS.ErrnoException, addresses: MxRecord[]) => void): void; - export function resolve(hostname: string, rrtype: "NAPTR", callback: (err: NodeJS.ErrnoException, addresses: NaptrRecord[]) => void): void; - export function resolve(hostname: string, rrtype: "NS", callback: (err: NodeJS.ErrnoException, addresses: string[]) => void): void; - export function resolve(hostname: string, rrtype: "PTR", callback: (err: NodeJS.ErrnoException, addresses: string[]) => void): void; - export function resolve(hostname: string, rrtype: "SOA", callback: (err: NodeJS.ErrnoException, addresses: SoaRecord) => void): void; - export function resolve(hostname: string, rrtype: "SRV", callback: (err: NodeJS.ErrnoException, addresses: SrvRecord[]) => void): void; - export function resolve(hostname: string, rrtype: "TXT", callback: (err: NodeJS.ErrnoException, addresses: string[][]) => void): void; - export function resolve(hostname: string, rrtype: string, callback: (err: NodeJS.ErrnoException, addresses: string[] | MxRecord[] | NaptrRecord[] | SoaRecord | SrvRecord[] | string[][]) => void): void; - - // NOTE: This namespace provides design-time support for util.promisify. Exported members do not exist at runtime. - export namespace resolve { - export function __promisify__(hostname: string, rrtype?: "A" | "AAAA" | "CNAME" | "NS" | "PTR"): Promise; - export function __promisify__(hostname: string, rrtype: "MX"): Promise; - export function __promisify__(hostname: string, rrtype: "NAPTR"): Promise; - export function __promisify__(hostname: string, rrtype: "SOA"): Promise; - export function __promisify__(hostname: string, rrtype: "SRV"): Promise; - export function __promisify__(hostname: string, rrtype: "TXT"): Promise; - export function __promisify__(hostname: string, rrtype?: string): Promise; - } - - export function resolve4(hostname: string, callback: (err: NodeJS.ErrnoException, addresses: string[]) => void): void; - export function resolve4(hostname: string, options: ResolveWithTtlOptions, callback: (err: NodeJS.ErrnoException, addresses: RecordWithTtl[]) => void): void; - export function resolve4(hostname: string, options: ResolveOptions, callback: (err: NodeJS.ErrnoException, addresses: string[] | RecordWithTtl[]) => void): void; - - // NOTE: This namespace provides design-time support for util.promisify. Exported members do not exist at runtime. - export namespace resolve4 { - export function __promisify__(hostname: string): Promise; - export function __promisify__(hostname: string, options: ResolveWithTtlOptions): Promise; - export function __promisify__(hostname: string, options?: ResolveOptions): Promise; - } - - export function resolve6(hostname: string, callback: (err: NodeJS.ErrnoException, addresses: string[]) => void): void; - export function resolve6(hostname: string, options: ResolveWithTtlOptions, callback: (err: NodeJS.ErrnoException, addresses: RecordWithTtl[]) => void): void; - export function resolve6(hostname: string, options: ResolveOptions, callback: (err: NodeJS.ErrnoException, addresses: string[] | RecordWithTtl[]) => void): void; - - // NOTE: This namespace provides design-time support for util.promisify. Exported members do not exist at runtime. - export namespace resolve6 { - export function __promisify__(hostname: string): Promise; - export function __promisify__(hostname: string, options: ResolveWithTtlOptions): Promise; - export function __promisify__(hostname: string, options?: ResolveOptions): Promise; - } - - export function resolveCname(hostname: string, callback: (err: NodeJS.ErrnoException, addresses: string[]) => void): void; - export function resolveMx(hostname: string, callback: (err: NodeJS.ErrnoException, addresses: MxRecord[]) => void): void; - export function resolveNaptr(hostname: string, callback: (err: NodeJS.ErrnoException, addresses: NaptrRecord[]) => void): void; - export function resolveNs(hostname: string, callback: (err: NodeJS.ErrnoException, addresses: string[]) => void): void; - export function resolvePtr(hostname: string, callback: (err: NodeJS.ErrnoException, addresses: string[]) => void): void; - export function resolveSoa(hostname: string, callback: (err: NodeJS.ErrnoException, address: SoaRecord) => void): void; - export function resolveSrv(hostname: string, callback: (err: NodeJS.ErrnoException, addresses: SrvRecord[]) => void): void; - export function resolveTxt(hostname: string, callback: (err: NodeJS.ErrnoException, addresses: string[][]) => void): void; - - export function reverse(ip: string, callback: (err: NodeJS.ErrnoException, hostnames: string[]) => void): void; - export function setServers(servers: string[]): void; - - // Error codes - export var NODATA: string; - export var FORMERR: string; - export var SERVFAIL: string; - export var NOTFOUND: string; - export var NOTIMP: string; - export var REFUSED: string; - export var BADQUERY: string; - export var BADNAME: string; - export var BADFAMILY: string; - export var BADRESP: string; - export var CONNREFUSED: string; - export var TIMEOUT: string; - export var EOF: string; - export var FILE: string; - export var NOMEM: string; - export var DESTRUCTION: string; - export var BADSTR: string; - export var BADFLAGS: string; - export var NONAME: string; - export var BADHINTS: string; - export var NOTINITIALIZED: string; - export var LOADIPHLPAPI: string; - export var ADDRGETNETWORKPARAMS: string; - export var CANCELLED: string; -} - -declare module "net" { - import * as stream from "stream"; - import * as events from "events"; - - export interface Socket extends stream.Duplex { - // Extended base methods - write(buffer: Buffer): boolean; - write(buffer: Buffer, cb?: Function): boolean; - write(str: string, cb?: Function): boolean; - write(str: string, encoding?: string, cb?: Function): boolean; - write(str: string, encoding?: string, fd?: string): boolean; - write(data: any, encoding?: string, callback?: Function): void; - - connect(port: number, host?: string, connectionListener?: Function): void; - connect(path: string, connectionListener?: Function): void; - bufferSize: number; - setEncoding(encoding?: string): this; - destroy(err?: any): void; - pause(): this; - resume(): this; - setTimeout(timeout: number, callback?: Function): void; - setNoDelay(noDelay?: boolean): void; - setKeepAlive(enable?: boolean, initialDelay?: number): void; - address(): { port: number; family: string; address: string; }; - unref(): void; - ref(): void; - - remoteAddress?: string; - remoteFamily?: string; - remotePort?: number; - localAddress: string; - localPort: number; - bytesRead: number; - bytesWritten: number; - connecting: boolean; - destroyed: boolean; - - // Extended base methods - end(): void; - end(buffer: Buffer, cb?: Function): void; - end(str: string, cb?: Function): void; - end(str: string, encoding?: string, cb?: Function): void; - end(data?: any, encoding?: string): void; - - /** - * events.EventEmitter - * 1. close - * 2. connect - * 3. data - * 4. drain - * 5. end - * 6. error - * 7. lookup - * 8. timeout - */ - addListener(event: string, listener: (...args: any[]) => void): this; - addListener(event: "close", listener: (had_error: boolean) => void): this; - addListener(event: "connect", listener: () => void): this; - addListener(event: "data", listener: (data: Buffer) => void): this; - addListener(event: "drain", listener: () => void): this; - addListener(event: "end", listener: () => void): this; - addListener(event: "error", listener: (err: Error) => void): this; - addListener(event: "lookup", listener: (err: Error, address: string, family: string | number, host: string) => void): this; - addListener(event: "timeout", listener: () => void): this; - - emit(event: string | symbol, ...args: any[]): boolean; - emit(event: "close", had_error: boolean): boolean; - emit(event: "connect"): boolean; - emit(event: "data", data: Buffer): boolean; - emit(event: "drain"): boolean; - emit(event: "end"): boolean; - emit(event: "error", err: Error): boolean; - emit(event: "lookup", err: Error, address: string, family: string | number, host: string): boolean; - emit(event: "timeout"): boolean; - - on(event: string, listener: (...args: any[]) => void): this; - on(event: "close", listener: (had_error: boolean) => void): this; - on(event: "connect", listener: () => void): this; - on(event: "data", listener: (data: Buffer) => void): this; - on(event: "drain", listener: () => void): this; - on(event: "end", listener: () => void): this; - on(event: "error", listener: (err: Error) => void): this; - on(event: "lookup", listener: (err: Error, address: string, family: string | number, host: string) => void): this; - on(event: "timeout", listener: () => void): this; - - once(event: string, listener: (...args: any[]) => void): this; - once(event: "close", listener: (had_error: boolean) => void): this; - once(event: "connect", listener: () => void): this; - once(event: "data", listener: (data: Buffer) => void): this; - once(event: "drain", listener: () => void): this; - once(event: "end", listener: () => void): this; - once(event: "error", listener: (err: Error) => void): this; - once(event: "lookup", listener: (err: Error, address: string, family: string | number, host: string) => void): this; - once(event: "timeout", listener: () => void): this; - - prependListener(event: string, listener: (...args: any[]) => void): this; - prependListener(event: "close", listener: (had_error: boolean) => void): this; - prependListener(event: "connect", listener: () => void): this; - prependListener(event: "data", listener: (data: Buffer) => void): this; - prependListener(event: "drain", listener: () => void): this; - prependListener(event: "end", listener: () => void): this; - prependListener(event: "error", listener: (err: Error) => void): this; - prependListener(event: "lookup", listener: (err: Error, address: string, family: string | number, host: string) => void): this; - prependListener(event: "timeout", listener: () => void): this; - - prependOnceListener(event: string, listener: (...args: any[]) => void): this; - prependOnceListener(event: "close", listener: (had_error: boolean) => void): this; - prependOnceListener(event: "connect", listener: () => void): this; - prependOnceListener(event: "data", listener: (data: Buffer) => void): this; - prependOnceListener(event: "drain", listener: () => void): this; - prependOnceListener(event: "end", listener: () => void): this; - prependOnceListener(event: "error", listener: (err: Error) => void): this; - prependOnceListener(event: "lookup", listener: (err: Error, address: string, family: string | number, host: string) => void): this; - prependOnceListener(event: "timeout", listener: () => void): this; - } - - export var Socket: { - new(options?: { fd?: number; allowHalfOpen?: boolean; readable?: boolean; writable?: boolean; }): Socket; - }; - - export interface ListenOptions { - port?: number; - host?: string; - backlog?: number; - path?: string; - exclusive?: boolean; - } - - // https://github.com/nodejs/node/blob/master/lib/net.js - export class Server extends events.EventEmitter { - constructor(connectionListener?: (socket: Socket) => void); - constructor(options?: { allowHalfOpen?: boolean, pauseOnConnect?: boolean }, connectionListener?: (socket: Socket) => void); - - listen(port?: number, hostname?: string, backlog?: number, listeningListener?: Function): Server; - listen(port?: number, hostname?: string, listeningListener?: Function): Server; - listen(port?: number, backlog?: number, listeningListener?: Function): Server; - listen(port?: number, listeningListener?: Function): Server; - listen(path: string, backlog?: number, listeningListener?: Function): Server; - listen(path: string, listeningListener?: Function): Server; - listen(options: ListenOptions, listeningListener?: Function): Server; - listen(handle: any, backlog?: number, listeningListener?: Function): Server; - listen(handle: any, listeningListener?: Function): Server; - close(callback?: Function): Server; - address(): { port: number; family: string; address: string; }; - getConnections(cb: (error: Error | null, count: number) => void): void; - ref(): Server; - unref(): Server; - maxConnections: number; - connections: number; - listening: boolean; - - /** - * events.EventEmitter - * 1. close - * 2. connection - * 3. error - * 4. listening - */ - addListener(event: string, listener: (...args: any[]) => void): this; - addListener(event: "close", listener: () => void): this; - addListener(event: "connection", listener: (socket: Socket) => void): this; - addListener(event: "error", listener: (err: Error) => void): this; - addListener(event: "listening", listener: () => void): this; - - emit(event: string | symbol, ...args: any[]): boolean; - emit(event: "close"): boolean; - emit(event: "connection", socket: Socket): boolean; - emit(event: "error", err: Error): boolean; - emit(event: "listening"): boolean; - - on(event: string, listener: (...args: any[]) => void): this; - on(event: "close", listener: () => void): this; - on(event: "connection", listener: (socket: Socket) => void): this; - on(event: "error", listener: (err: Error) => void): this; - on(event: "listening", listener: () => void): this; - - once(event: string, listener: (...args: any[]) => void): this; - once(event: "close", listener: () => void): this; - once(event: "connection", listener: (socket: Socket) => void): this; - once(event: "error", listener: (err: Error) => void): this; - once(event: "listening", listener: () => void): this; - - prependListener(event: string, listener: (...args: any[]) => void): this; - prependListener(event: "close", listener: () => void): this; - prependListener(event: "connection", listener: (socket: Socket) => void): this; - prependListener(event: "error", listener: (err: Error) => void): this; - prependListener(event: "listening", listener: () => void): this; - - prependOnceListener(event: string, listener: (...args: any[]) => void): this; - prependOnceListener(event: "close", listener: () => void): this; - prependOnceListener(event: "connection", listener: (socket: Socket) => void): this; - prependOnceListener(event: "error", listener: (err: Error) => void): this; - prependOnceListener(event: "listening", listener: () => void): this; - } - export function createServer(connectionListener?: (socket: Socket) => void): Server; - export function createServer(options?: { allowHalfOpen?: boolean, pauseOnConnect?: boolean }, connectionListener?: (socket: Socket) => void): Server; - export function connect(options: { port: number, host?: string, localAddress?: string, localPort?: number, family?: number, allowHalfOpen?: boolean; }, connectionListener?: Function): Socket; - export function connect(port: number, host?: string, connectionListener?: Function): Socket; - export function connect(path: string, connectionListener?: Function): Socket; - export function createConnection(options: { port: number, host?: string, localAddress?: string, localPort?: string, family?: number, allowHalfOpen?: boolean; }, connectionListener?: Function): Socket; - export function createConnection(port: number, host?: string, connectionListener?: Function): Socket; - export function createConnection(path: string, connectionListener?: Function): Socket; - export function isIP(input: string): number; - export function isIPv4(input: string): boolean; - export function isIPv6(input: string): boolean; -} - -declare module "dgram" { - import * as events from "events"; - - interface RemoteInfo { - address: string; - family: string; - port: number; - } - - interface AddressInfo { - address: string; - family: string; - port: number; - } - - interface BindOptions { - port: number; - address?: string; - exclusive?: boolean; - } - - type SocketType = "udp4" | "udp6"; - - interface SocketOptions { - type: SocketType; - reuseAddr?: boolean; - } - - export function createSocket(type: SocketType, callback?: (msg: Buffer, rinfo: RemoteInfo) => void): Socket; - export function createSocket(options: SocketOptions, callback?: (msg: Buffer, rinfo: RemoteInfo) => void): Socket; - - export interface Socket extends events.EventEmitter { - send(msg: Buffer | String | any[], port: number, address: string, callback?: (error: Error | null, bytes: number) => void): void; - send(msg: Buffer | String | any[], offset: number, length: number, port: number, address: string, callback?: (error: Error | null, bytes: number) => void): void; - bind(port?: number, address?: string, callback?: () => void): void; - bind(port?: number, callback?: () => void): void; - bind(callback?: () => void): void; - bind(options: BindOptions, callback?: Function): void; - close(callback?: () => void): void; - address(): AddressInfo; - setBroadcast(flag: boolean): void; - setTTL(ttl: number): void; - setMulticastTTL(ttl: number): void; - setMulticastLoopback(flag: boolean): void; - addMembership(multicastAddress: string, multicastInterface?: string): void; - dropMembership(multicastAddress: string, multicastInterface?: string): void; - ref(): this; - unref(): this; - - /** - * events.EventEmitter - * 1. close - * 2. error - * 3. listening - * 4. message - */ - addListener(event: string, listener: (...args: any[]) => void): this; - addListener(event: "close", listener: () => void): this; - addListener(event: "error", listener: (err: Error) => void): this; - addListener(event: "listening", listener: () => void): this; - addListener(event: "message", listener: (msg: Buffer, rinfo: AddressInfo) => void): this; - - emit(event: string | symbol, ...args: any[]): boolean; - emit(event: "close"): boolean; - emit(event: "error", err: Error): boolean; - emit(event: "listening"): boolean; - emit(event: "message", msg: Buffer, rinfo: AddressInfo): boolean; - - on(event: string, listener: (...args: any[]) => void): this; - on(event: "close", listener: () => void): this; - on(event: "error", listener: (err: Error) => void): this; - on(event: "listening", listener: () => void): this; - on(event: "message", listener: (msg: Buffer, rinfo: AddressInfo) => void): this; - - once(event: string, listener: (...args: any[]) => void): this; - once(event: "close", listener: () => void): this; - once(event: "error", listener: (err: Error) => void): this; - once(event: "listening", listener: () => void): this; - once(event: "message", listener: (msg: Buffer, rinfo: AddressInfo) => void): this; - - prependListener(event: string, listener: (...args: any[]) => void): this; - prependListener(event: "close", listener: () => void): this; - prependListener(event: "error", listener: (err: Error) => void): this; - prependListener(event: "listening", listener: () => void): this; - prependListener(event: "message", listener: (msg: Buffer, rinfo: AddressInfo) => void): this; - - prependOnceListener(event: string, listener: (...args: any[]) => void): this; - prependOnceListener(event: "close", listener: () => void): this; - prependOnceListener(event: "error", listener: (err: Error) => void): this; - prependOnceListener(event: "listening", listener: () => void): this; - prependOnceListener(event: "message", listener: (msg: Buffer, rinfo: AddressInfo) => void): this; - } -} - -declare module "fs" { - import * as stream from "stream"; - import * as events from "events"; - import { URL } from "url"; - - /** - * Valid types for path values in "fs". - */ - export type PathLike = string | Buffer | URL; - - export interface Stats { - isFile(): boolean; - isDirectory(): boolean; - isBlockDevice(): boolean; - isCharacterDevice(): boolean; - isSymbolicLink(): boolean; - isFIFO(): boolean; - isSocket(): boolean; - dev: number; - ino: number; - mode: number; - nlink: number; - uid: number; - gid: number; - rdev: number; - size: number; - blksize: number; - blocks: number; - atimeMs: number; - mtimeMs: number; - ctimeMs: number; - birthtimeMs: number; - atime: Date; - mtime: Date; - ctime: Date; - birthtime: Date; - } - - export interface FSWatcher extends events.EventEmitter { - close(): void; - - /** - * events.EventEmitter - * 1. change - * 2. error - */ - addListener(event: string, listener: (...args: any[]) => void): this; - addListener(event: "change", listener: (eventType: string, filename: string | Buffer) => void): this; - addListener(event: "error", listener: (error: Error) => void): this; - - on(event: string, listener: (...args: any[]) => void): this; - on(event: "change", listener: (eventType: string, filename: string | Buffer) => void): this; - on(event: "error", listener: (error: Error) => void): this; - - once(event: string, listener: (...args: any[]) => void): this; - once(event: "change", listener: (eventType: string, filename: string | Buffer) => void): this; - once(event: "error", listener: (error: Error) => void): this; - - prependListener(event: string, listener: (...args: any[]) => void): this; - prependListener(event: "change", listener: (eventType: string, filename: string | Buffer) => void): this; - prependListener(event: "error", listener: (error: Error) => void): this; - - prependOnceListener(event: string, listener: (...args: any[]) => void): this; - prependOnceListener(event: "change", listener: (eventType: string, filename: string | Buffer) => void): this; - prependOnceListener(event: "error", listener: (error: Error) => void): this; - } - - export interface ReadStream extends stream.Readable { - close(): void; - destroy(): void; - bytesRead: number; - path: string | Buffer; - - /** - * events.EventEmitter - * 1. open - * 2. close - */ - addListener(event: string, listener: (...args: any[]) => void): this; - addListener(event: "open", listener: (fd: number) => void): this; - addListener(event: "close", listener: () => void): this; - - on(event: string, listener: (...args: any[]) => void): this; - on(event: "open", listener: (fd: number) => void): this; - on(event: "close", listener: () => void): this; - - once(event: string, listener: (...args: any[]) => void): this; - once(event: "open", listener: (fd: number) => void): this; - once(event: "close", listener: () => void): this; - - prependListener(event: string, listener: (...args: any[]) => void): this; - prependListener(event: "open", listener: (fd: number) => void): this; - prependListener(event: "close", listener: () => void): this; - - prependOnceListener(event: string, listener: (...args: any[]) => void): this; - prependOnceListener(event: "open", listener: (fd: number) => void): this; - prependOnceListener(event: "close", listener: () => void): this; - } - - export interface WriteStream extends stream.Writable { - close(): void; - bytesWritten: number; - path: string | Buffer; - - /** - * events.EventEmitter - * 1. open - * 2. close - */ - addListener(event: string, listener: (...args: any[]) => void): this; - addListener(event: "open", listener: (fd: number) => void): this; - addListener(event: "close", listener: () => void): this; - - on(event: string, listener: (...args: any[]) => void): this; - on(event: "open", listener: (fd: number) => void): this; - on(event: "close", listener: () => void): this; - - once(event: string, listener: (...args: any[]) => void): this; - once(event: "open", listener: (fd: number) => void): this; - once(event: "close", listener: () => void): this; - - prependListener(event: string, listener: (...args: any[]) => void): this; - prependListener(event: "open", listener: (fd: number) => void): this; - prependListener(event: "close", listener: () => void): this; - - prependOnceListener(event: string, listener: (...args: any[]) => void): this; - prependOnceListener(event: "open", listener: (fd: number) => void): this; - prependOnceListener(event: "close", listener: () => void): this; - } - - /** - * Asynchronous rename(2) - Change the name or location of a file or directory. - * @param oldPath A path to a file. If a URL is provided, it must use the `file:` protocol. - * URL support is _experimental_. - * @param newPath A path to a file. If a URL is provided, it must use the `file:` protocol. - * URL support is _experimental_. - */ - export function rename(oldPath: PathLike, newPath: PathLike, callback: (err: NodeJS.ErrnoException) => void): void; - - // NOTE: This namespace provides design-time support for util.promisify. Exported members do not exist at runtime. - export namespace rename { - /** - * Asynchronous rename(2) - Change the name or location of a file or directory. - * @param oldPath A path to a file. If a URL is provided, it must use the `file:` protocol. - * URL support is _experimental_. - * @param newPath A path to a file. If a URL is provided, it must use the `file:` protocol. - * URL support is _experimental_. - */ - export function __promisify__(oldPath: PathLike, newPath: PathLike): Promise; - } - - /** - * Synchronous rename(2) - Change the name or location of a file or directory. - * @param oldPath A path to a file. If a URL is provided, it must use the `file:` protocol. - * URL support is _experimental_. - * @param newPath A path to a file. If a URL is provided, it must use the `file:` protocol. - * URL support is _experimental_. - */ - export function renameSync(oldPath: PathLike, newPath: PathLike): void; - - /** - * Asynchronous truncate(2) - Truncate a file to a specified length. - * @param path A path to a file. If a URL is provided, it must use the `file:` protocol. - * @param len If not specified, defaults to `0`. - */ - export function truncate(path: PathLike, len: number | undefined | null, callback: (err: NodeJS.ErrnoException) => void): void; - - /** - * Asynchronous truncate(2) - Truncate a file to a specified length. - * @param path A path to a file. If a URL is provided, it must use the `file:` protocol. - * URL support is _experimental_. - */ - export function truncate(path: PathLike, callback: (err: NodeJS.ErrnoException) => void): void; - - // NOTE: This namespace provides design-time support for util.promisify. Exported members do not exist at runtime. - export namespace truncate { - /** - * Asynchronous truncate(2) - Truncate a file to a specified length. - * @param path A path to a file. If a URL is provided, it must use the `file:` protocol. - * @param len If not specified, defaults to `0`. - */ - export function __promisify__(path: PathLike, len?: number | null): Promise; - } - - /** - * Synchronous truncate(2) - Truncate a file to a specified length. - * @param path A path to a file. If a URL is provided, it must use the `file:` protocol. - * @param len If not specified, defaults to `0`. - */ - export function truncateSync(path: PathLike, len?: number | null): void; - - /** - * Asynchronous ftruncate(2) - Truncate a file to a specified length. - * @param fd A file descriptor. - * @param len If not specified, defaults to `0`. - */ - export function ftruncate(fd: number, len: number | undefined | null, callback: (err: NodeJS.ErrnoException) => void): void; - - /** - * Asynchronous ftruncate(2) - Truncate a file to a specified length. - * @param fd A file descriptor. - */ - export function ftruncate(fd: number, callback: (err: NodeJS.ErrnoException) => void): void; - - // NOTE: This namespace provides design-time support for util.promisify. Exported members do not exist at runtime. - export namespace ftruncate { - /** - * Asynchronous ftruncate(2) - Truncate a file to a specified length. - * @param fd A file descriptor. - * @param len If not specified, defaults to `0`. - */ - export function __promisify__(fd: number, len?: number | null): Promise; - } - - /** - * Synchronous ftruncate(2) - Truncate a file to a specified length. - * @param fd A file descriptor. - * @param len If not specified, defaults to `0`. - */ - export function ftruncateSync(fd: number, len?: number | null): void; - - /** - * Asynchronous chown(2) - Change ownership of a file. - * @param path A path to a file. If a URL is provided, it must use the `file:` protocol. - */ - export function chown(path: PathLike, uid: number, gid: number, callback: (err: NodeJS.ErrnoException) => void): void; - - // NOTE: This namespace provides design-time support for util.promisify. Exported members do not exist at runtime. - export namespace chown { - /** - * Asynchronous chown(2) - Change ownership of a file. - * @param path A path to a file. If a URL is provided, it must use the `file:` protocol. - */ - export function __promisify__(path: PathLike, uid: number, gid: number): Promise; - } - - /** - * Synchronous chown(2) - Change ownership of a file. - * @param path A path to a file. If a URL is provided, it must use the `file:` protocol. - */ - export function chownSync(path: PathLike, uid: number, gid: number): void; - - /** - * Asynchronous fchown(2) - Change ownership of a file. - * @param fd A file descriptor. - */ - export function fchown(fd: number, uid: number, gid: number, callback: (err: NodeJS.ErrnoException) => void): void; - - // NOTE: This namespace provides design-time support for util.promisify. Exported members do not exist at runtime. - export namespace fchown { - /** - * Asynchronous fchown(2) - Change ownership of a file. - * @param fd A file descriptor. - */ - export function __promisify__(fd: number, uid: number, gid: number): Promise; - } - - /** - * Synchronous fchown(2) - Change ownership of a file. - * @param fd A file descriptor. - */ - export function fchownSync(fd: number, uid: number, gid: number): void; - - /** - * Asynchronous lchown(2) - Change ownership of a file. Does not dereference symbolic links. - * @param path A path to a file. If a URL is provided, it must use the `file:` protocol. - */ - export function lchown(path: PathLike, uid: number, gid: number, callback: (err: NodeJS.ErrnoException) => void): void; - - // NOTE: This namespace provides design-time support for util.promisify. Exported members do not exist at runtime. - export namespace lchown { - /** - * Asynchronous lchown(2) - Change ownership of a file. Does not dereference symbolic links. - * @param path A path to a file. If a URL is provided, it must use the `file:` protocol. - */ - export function __promisify__(path: PathLike, uid: number, gid: number): Promise; - } - - /** - * Synchronous lchown(2) - Change ownership of a file. Does not dereference symbolic links. - * @param path A path to a file. If a URL is provided, it must use the `file:` protocol. - */ - export function lchownSync(path: PathLike, uid: number, gid: number): void; - - /** - * Asynchronous chmod(2) - Change permissions of a file. - * @param path A path to a file. If a URL is provided, it must use the `file:` protocol. - * @param mode A file mode. If a string is passed, it is parsed as an octal integer. - */ - export function chmod(path: PathLike, mode: string | number, callback: (err: NodeJS.ErrnoException) => void): void; - - // NOTE: This namespace provides design-time support for util.promisify. Exported members do not exist at runtime. - export namespace chmod { - /** - * Asynchronous chmod(2) - Change permissions of a file. - * @param path A path to a file. If a URL is provided, it must use the `file:` protocol. - * @param mode A file mode. If a string is passed, it is parsed as an octal integer. - */ - export function __promisify__(path: PathLike, mode: string | number): Promise; - } - - /** - * Synchronous chmod(2) - Change permissions of a file. - * @param path A path to a file. If a URL is provided, it must use the `file:` protocol. - * @param mode A file mode. If a string is passed, it is parsed as an octal integer. - */ - export function chmodSync(path: PathLike, mode: string | number): void; - - /** - * Asynchronous fchmod(2) - Change permissions of a file. - * @param fd A file descriptor. - * @param mode A file mode. If a string is passed, it is parsed as an octal integer. - */ - export function fchmod(fd: number, mode: string | number, callback: (err: NodeJS.ErrnoException) => void): void; - - // NOTE: This namespace provides design-time support for util.promisify. Exported members do not exist at runtime. - export namespace fchmod { - /** - * Asynchronous fchmod(2) - Change permissions of a file. - * @param fd A file descriptor. - * @param mode A file mode. If a string is passed, it is parsed as an octal integer. - */ - export function __promisify__(fd: number, mode: string | number): Promise; - } - - /** - * Synchronous fchmod(2) - Change permissions of a file. - * @param fd A file descriptor. - * @param mode A file mode. If a string is passed, it is parsed as an octal integer. - */ - export function fchmodSync(fd: number, mode: string | number): void; - - /** - * Asynchronous lchmod(2) - Change permissions of a file. Does not dereference symbolic links. - * @param path A path to a file. If a URL is provided, it must use the `file:` protocol. - * @param mode A file mode. If a string is passed, it is parsed as an octal integer. - */ - export function lchmod(path: PathLike, mode: string | number, callback: (err: NodeJS.ErrnoException) => void): void; - - // NOTE: This namespace provides design-time support for util.promisify. Exported members do not exist at runtime. - export namespace lchmod { - /** - * Asynchronous lchmod(2) - Change permissions of a file. Does not dereference symbolic links. - * @param path A path to a file. If a URL is provided, it must use the `file:` protocol. - * @param mode A file mode. If a string is passed, it is parsed as an octal integer. - */ - export function __promisify__(path: PathLike, mode: string | number): Promise; - } - - /** - * Synchronous lchmod(2) - Change permissions of a file. Does not dereference symbolic links. - * @param path A path to a file. If a URL is provided, it must use the `file:` protocol. - * @param mode A file mode. If a string is passed, it is parsed as an octal integer. - */ - export function lchmodSync(path: PathLike, mode: string | number): void; - - /** - * Asynchronous stat(2) - Get file status. - * @param path A path to a file. If a URL is provided, it must use the `file:` protocol. - */ - export function stat(path: PathLike, callback: (err: NodeJS.ErrnoException, stats: Stats) => void): void; - - // NOTE: This namespace provides design-time support for util.promisify. Exported members do not exist at runtime. - export namespace stat { - /** - * Asynchronous stat(2) - Get file status. - * @param path A path to a file. If a URL is provided, it must use the `file:` protocol. - */ - export function __promisify__(path: PathLike): Promise; - } - - /** - * Synchronous stat(2) - Get file status. - * @param path A path to a file. If a URL is provided, it must use the `file:` protocol. - */ - export function statSync(path: PathLike): Stats; - - /** - * Asynchronous fstat(2) - Get file status. - * @param fd A file descriptor. - */ - export function fstat(fd: number, callback: (err: NodeJS.ErrnoException, stats: Stats) => void): void; - - // NOTE: This namespace provides design-time support for util.promisify. Exported members do not exist at runtime. - export namespace fstat { - /** - * Asynchronous fstat(2) - Get file status. - * @param fd A file descriptor. - */ - export function __promisify__(fd: number): Promise; - } - - /** - * Synchronous fstat(2) - Get file status. - * @param fd A file descriptor. - */ - export function fstatSync(fd: number): Stats; - - /** - * Asynchronous lstat(2) - Get file status. Does not dereference symbolic links. - * @param path A path to a file. If a URL is provided, it must use the `file:` protocol. - */ - export function lstat(path: PathLike, callback: (err: NodeJS.ErrnoException, stats: Stats) => void): void; - - // NOTE: This namespace provides design-time support for util.promisify. Exported members do not exist at runtime. - export namespace lstat { - /** - * Asynchronous lstat(2) - Get file status. Does not dereference symbolic links. - * @param path A path to a file. If a URL is provided, it must use the `file:` protocol. - */ - export function __promisify__(path: PathLike): Promise; - } - - /** - * Synchronous lstat(2) - Get file status. Does not dereference symbolic links. - * @param path A path to a file. If a URL is provided, it must use the `file:` protocol. - */ - export function lstatSync(path: PathLike): Stats; - - /** - * Asynchronous link(2) - Create a new link (also known as a hard link) to an existing file. - * @param existingPath A path to a file. If a URL is provided, it must use the `file:` protocol. - * @param newPath A path to a file. If a URL is provided, it must use the `file:` protocol. - */ - export function link(existingPath: PathLike, newPath: PathLike, callback: (err: NodeJS.ErrnoException) => void): void; - - // NOTE: This namespace provides design-time support for util.promisify. Exported members do not exist at runtime. - export namespace link { - /** - * Asynchronous link(2) - Create a new link (also known as a hard link) to an existing file. - * @param existingPath A path to a file. If a URL is provided, it must use the `file:` protocol. - * @param newPath A path to a file. If a URL is provided, it must use the `file:` protocol. - */ - export function link(existingPath: PathLike, newPath: PathLike): Promise; - } - - /** - * Synchronous link(2) - Create a new link (also known as a hard link) to an existing file. - * @param existingPath A path to a file. If a URL is provided, it must use the `file:` protocol. - * @param newPath A path to a file. If a URL is provided, it must use the `file:` protocol. - */ - export function linkSync(existingPath: PathLike, newPath: PathLike): void; - - /** - * Asynchronous symlink(2) - Create a new symbolic link to an existing file. - * @param target A path to an existing file. If a URL is provided, it must use the `file:` protocol. - * @param path A path to the new symlink. If a URL is provided, it must use the `file:` protocol. - * @param type May be set to `'dir'`, `'file'`, or `'junction'` (default is `'file'`) and is only available on Windows (ignored on other platforms). - * When using `'junction'`, the `target` argument will automatically be normalized to an absolute path. - */ - export function symlink(target: PathLike, path: PathLike, type: string | undefined | null, callback: (err: NodeJS.ErrnoException) => void): void; - - /** - * Asynchronous symlink(2) - Create a new symbolic link to an existing file. - * @param target A path to an existing file. If a URL is provided, it must use the `file:` protocol. - * @param path A path to the new symlink. If a URL is provided, it must use the `file:` protocol. - */ - export function symlink(target: PathLike, path: PathLike, callback: (err: NodeJS.ErrnoException) => void): void; - - // NOTE: This namespace provides design-time support for util.promisify. Exported members do not exist at runtime. - export namespace symlink { - /** - * Asynchronous symlink(2) - Create a new symbolic link to an existing file. - * @param target A path to an existing file. If a URL is provided, it must use the `file:` protocol. - * @param path A path to the new symlink. If a URL is provided, it must use the `file:` protocol. - * @param type May be set to `'dir'`, `'file'`, or `'junction'` (default is `'file'`) and is only available on Windows (ignored on other platforms). - * When using `'junction'`, the `target` argument will automatically be normalized to an absolute path. - */ - export function __promisify__(target: PathLike, path: PathLike, type?: string | null): Promise; - } - - /** - * Synchronous symlink(2) - Create a new symbolic link to an existing file. - * @param target A path to an existing file. If a URL is provided, it must use the `file:` protocol. - * @param path A path to the new symlink. If a URL is provided, it must use the `file:` protocol. - * @param type May be set to `'dir'`, `'file'`, or `'junction'` (default is `'file'`) and is only available on Windows (ignored on other platforms). - * When using `'junction'`, the `target` argument will automatically be normalized to an absolute path. - */ - export function symlinkSync(target: PathLike, path: PathLike, type?: string | null): void; - - /** - * Asynchronous readlink(2) - read value of a symbolic link. - * @param path A path to a file. If a URL is provided, it must use the `file:` protocol. - * @param options The encoding (or an object specifying the encoding), used as the encoding of the result. If not provided, `'utf8'` is used. - */ - export function readlink(path: PathLike, options: { encoding?: BufferEncoding | null } | BufferEncoding | undefined | null, callback: (err: NodeJS.ErrnoException, linkString: string) => void): void; - - /** - * Asynchronous readlink(2) - read value of a symbolic link. - * @param path A path to a file. If a URL is provided, it must use the `file:` protocol. - * @param options The encoding (or an object specifying the encoding), used as the encoding of the result. If not provided, `'utf8'` is used. - */ - export function readlink(path: PathLike, options: { encoding: "buffer" } | "buffer", callback: (err: NodeJS.ErrnoException, linkString: Buffer) => void): void; - - /** - * Asynchronous readlink(2) - read value of a symbolic link. - * @param path A path to a file. If a URL is provided, it must use the `file:` protocol. - * @param options The encoding (or an object specifying the encoding), used as the encoding of the result. If not provided, `'utf8'` is used. - */ - export function readlink(path: PathLike, options: { encoding?: string | null } | string | undefined | null, callback: (err: NodeJS.ErrnoException, linkString: string | Buffer) => void): void; - - /** - * Asynchronous readlink(2) - read value of a symbolic link. - * @param path A path to a file. If a URL is provided, it must use the `file:` protocol. - */ - export function readlink(path: PathLike, callback: (err: NodeJS.ErrnoException, linkString: string) => void): void; - - // NOTE: This namespace provides design-time support for util.promisify. Exported members do not exist at runtime. - export namespace readlink { - /** - * Asynchronous readlink(2) - read value of a symbolic link. - * @param path A path to a file. If a URL is provided, it must use the `file:` protocol. - * @param options The encoding (or an object specifying the encoding), used as the encoding of the result. If not provided, `'utf8'` is used. - */ - export function __promisify__(path: PathLike, options?: { encoding?: BufferEncoding | null } | BufferEncoding | null): Promise; - - /** - * Asynchronous readlink(2) - read value of a symbolic link. - * @param path A path to a file. If a URL is provided, it must use the `file:` protocol. - * @param options The encoding (or an object specifying the encoding), used as the encoding of the result. If not provided, `'utf8'` is used. - */ - export function __promisify__(path: PathLike, options: { encoding: "buffer" } | "buffer"): Promise; - - /** - * Asynchronous readlink(2) - read value of a symbolic link. - * @param path A path to a file. If a URL is provided, it must use the `file:` protocol. - * @param options The encoding (or an object specifying the encoding), used as the encoding of the result. If not provided, `'utf8'` is used. - */ - export function __promisify__(path: PathLike, options?: { encoding?: string | null } | string | null): Promise; - } - - /** - * Synchronous readlink(2) - read value of a symbolic link. - * @param path A path to a file. If a URL is provided, it must use the `file:` protocol. - * @param options The encoding (or an object specifying the encoding), used as the encoding of the result. If not provided, `'utf8'` is used. - */ - export function readlinkSync(path: PathLike, options?: { encoding?: BufferEncoding | null } | BufferEncoding | null): string; - - /** - * Synchronous readlink(2) - read value of a symbolic link. - * @param path A path to a file. If a URL is provided, it must use the `file:` protocol. - * @param options The encoding (or an object specifying the encoding), used as the encoding of the result. If not provided, `'utf8'` is used. - */ - export function readlinkSync(path: PathLike, options: { encoding: "buffer" } | "buffer"): Buffer; - - /** - * Synchronous readlink(2) - read value of a symbolic link. - * @param path A path to a file. If a URL is provided, it must use the `file:` protocol. - * @param options The encoding (or an object specifying the encoding), used as the encoding of the result. If not provided, `'utf8'` is used. - */ - export function readlinkSync(path: PathLike, options?: { encoding?: string | null } | string | null): string | Buffer; - - /** - * Asynchronous realpath(3) - return the canonicalized absolute pathname. - * @param path A path to a file. If a URL is provided, it must use the `file:` protocol. - * @param options The encoding (or an object specifying the encoding), used as the encoding of the result. If not provided, `'utf8'` is used. - */ - export function realpath(path: PathLike, options: { encoding?: BufferEncoding | null } | BufferEncoding | undefined | null, callback: (err: NodeJS.ErrnoException, resolvedPath: string) => void): void; - - /** - * Asynchronous realpath(3) - return the canonicalized absolute pathname. - * @param path A path to a file. If a URL is provided, it must use the `file:` protocol. - * @param options The encoding (or an object specifying the encoding), used as the encoding of the result. If not provided, `'utf8'` is used. - */ - export function realpath(path: PathLike, options: { encoding: "buffer" } | "buffer", callback: (err: NodeJS.ErrnoException, resolvedPath: Buffer) => void): void; - - /** - * Asynchronous realpath(3) - return the canonicalized absolute pathname. - * @param path A path to a file. If a URL is provided, it must use the `file:` protocol. - * @param options The encoding (or an object specifying the encoding), used as the encoding of the result. If not provided, `'utf8'` is used. - */ - export function realpath(path: PathLike, options: { encoding?: string | null } | string | undefined | null, callback: (err: NodeJS.ErrnoException, resolvedPath: string | Buffer) => void): void; - - /** - * Asynchronous realpath(3) - return the canonicalized absolute pathname. - * @param path A path to a file. If a URL is provided, it must use the `file:` protocol. - */ - export function realpath(path: PathLike, callback: (err: NodeJS.ErrnoException, resolvedPath: string) => void): void; - - // NOTE: This namespace provides design-time support for util.promisify. Exported members do not exist at runtime. - export namespace realpath { - /** - * Asynchronous realpath(3) - return the canonicalized absolute pathname. - * @param path A path to a file. If a URL is provided, it must use the `file:` protocol. - * @param options The encoding (or an object specifying the encoding), used as the encoding of the result. If not provided, `'utf8'` is used. - */ - export function __promisify__(path: PathLike, options?: { encoding?: BufferEncoding | null } | BufferEncoding | null): Promise; - - /** - * Asynchronous realpath(3) - return the canonicalized absolute pathname. - * @param path A path to a file. If a URL is provided, it must use the `file:` protocol. - * @param options The encoding (or an object specifying the encoding), used as the encoding of the result. If not provided, `'utf8'` is used. - */ - export function __promisify__(path: PathLike, options: { encoding: "buffer" } | "buffer"): Promise; - - /** - * Asynchronous realpath(3) - return the canonicalized absolute pathname. - * @param path A path to a file. If a URL is provided, it must use the `file:` protocol. - * @param options The encoding (or an object specifying the encoding), used as the encoding of the result. If not provided, `'utf8'` is used. - */ - export function __promisify__(path: PathLike, options?: { encoding?: string | null } | string | null): Promise; - } - - /** - * Synchronous realpath(3) - return the canonicalized absolute pathname. - * @param path A path to a file. If a URL is provided, it must use the `file:` protocol. - * @param options The encoding (or an object specifying the encoding), used as the encoding of the result. If not provided, `'utf8'` is used. - */ - export function realpathSync(path: PathLike, options?: { encoding?: BufferEncoding | null } | BufferEncoding | null): string; - - /** - * Synchronous realpath(3) - return the canonicalized absolute pathname. - * @param path A path to a file. If a URL is provided, it must use the `file:` protocol. - * @param options The encoding (or an object specifying the encoding), used as the encoding of the result. If not provided, `'utf8'` is used. - */ - export function realpathSync(path: PathLike, options: { encoding: "buffer" } | "buffer"): Buffer; - - /** - * Synchronous realpath(3) - return the canonicalized absolute pathname. - * @param path A path to a file. If a URL is provided, it must use the `file:` protocol. - * @param options The encoding (or an object specifying the encoding), used as the encoding of the result. If not provided, `'utf8'` is used. - */ - export function realpathSync(path: PathLike, options?: { encoding?: string | null } | string | null): string | Buffer; - - /** - * Asynchronous unlink(2) - delete a name and possibly the file it refers to. - * @param path A path to a file. If a URL is provided, it must use the `file:` protocol. - */ - export function unlink(path: PathLike, callback: (err: NodeJS.ErrnoException) => void): void; - - // NOTE: This namespace provides design-time support for util.promisify. Exported members do not exist at runtime. - export namespace unlink { - /** - * Asynchronous unlink(2) - delete a name and possibly the file it refers to. - * @param path A path to a file. If a URL is provided, it must use the `file:` protocol. - */ - export function __promisify__(path: PathLike): Promise; - } - - /** - * Synchronous unlink(2) - delete a name and possibly the file it refers to. - * @param path A path to a file. If a URL is provided, it must use the `file:` protocol. - */ - export function unlinkSync(path: PathLike): void; - - /** - * Asynchronous rmdir(2) - delete a directory. - * @param path A path to a file. If a URL is provided, it must use the `file:` protocol. - */ - export function rmdir(path: PathLike, callback: (err: NodeJS.ErrnoException) => void): void; - - // NOTE: This namespace provides design-time support for util.promisify. Exported members do not exist at runtime. - export namespace rmdir { - /** - * Asynchronous rmdir(2) - delete a directory. - * @param path A path to a file. If a URL is provided, it must use the `file:` protocol. - */ - export function __promisify__(path: PathLike): Promise; - } - - /** - * Synchronous rmdir(2) - delete a directory. - * @param path A path to a file. If a URL is provided, it must use the `file:` protocol. - */ - export function rmdirSync(path: PathLike): void; - - /** - * Asynchronous mkdir(2) - create a directory. - * @param path A path to a file. If a URL is provided, it must use the `file:` protocol. - * @param mode A file mode. If a string is passed, it is parsed as an octal integer. If not specified, defaults to `0o777`. - */ - export function mkdir(path: PathLike, mode: number | string | undefined | null, callback: (err: NodeJS.ErrnoException) => void): void; - - /** - * Asynchronous mkdir(2) - create a directory with a mode of `0o777`. - * @param path A path to a file. If a URL is provided, it must use the `file:` protocol. - */ - export function mkdir(path: PathLike, callback: (err: NodeJS.ErrnoException) => void): void; - - // NOTE: This namespace provides design-time support for util.promisify. Exported members do not exist at runtime. - export namespace mkdir { - /** - * Asynchronous mkdir(2) - create a directory. - * @param path A path to a file. If a URL is provided, it must use the `file:` protocol. - * @param mode A file mode. If a string is passed, it is parsed as an octal integer. If not specified, defaults to `0o777`. - */ - export function __promisify__(path: PathLike, mode?: number | string | null): Promise; - } - - /** - * Synchronous mkdir(2) - create a directory. - * @param path A path to a file. If a URL is provided, it must use the `file:` protocol. - * @param mode A file mode. If a string is passed, it is parsed as an octal integer. If not specified, defaults to `0o777`. - */ - export function mkdirSync(path: PathLike, mode?: number | string | null): void; - - /** - * Asynchronously creates a unique temporary directory. - * Generates six random characters to be appended behind a required prefix to create a unique temporary directory. - * @param options The encoding (or an object specifying the encoding), used as the encoding of the result. If not provided, `'utf8'` is used. - */ - export function mkdtemp(prefix: string, options: { encoding?: BufferEncoding | null } | BufferEncoding | undefined | null, callback: (err: NodeJS.ErrnoException, folder: string) => void): void; - - /** - * Asynchronously creates a unique temporary directory. - * Generates six random characters to be appended behind a required prefix to create a unique temporary directory. - * @param options The encoding (or an object specifying the encoding), used as the encoding of the result. If not provided, `'utf8'` is used. - */ - export function mkdtemp(prefix: string, options: "buffer" | { encoding: "buffer" }, callback: (err: NodeJS.ErrnoException, folder: Buffer) => void): void; - - /** - * Asynchronously creates a unique temporary directory. - * Generates six random characters to be appended behind a required prefix to create a unique temporary directory. - * @param options The encoding (or an object specifying the encoding), used as the encoding of the result. If not provided, `'utf8'` is used. - */ - export function mkdtemp(prefix: string, options: { encoding?: string | null } | string | undefined | null, callback: (err: NodeJS.ErrnoException, folder: string | Buffer) => void): void; - - /** - * Asynchronously creates a unique temporary directory. - * Generates six random characters to be appended behind a required prefix to create a unique temporary directory. - */ - export function mkdtemp(prefix: string, callback: (err: NodeJS.ErrnoException, folder: string) => void): void; - - // NOTE: This namespace provides design-time support for util.promisify. Exported members do not exist at runtime. - export namespace mkdtemp { - /** - * Asynchronously creates a unique temporary directory. - * Generates six random characters to be appended behind a required prefix to create a unique temporary directory. - * @param options The encoding (or an object specifying the encoding), used as the encoding of the result. If not provided, `'utf8'` is used. - */ - export function __promisify__(prefix: string, options?: { encoding?: BufferEncoding | null } | BufferEncoding | null): Promise; - - /** - * Asynchronously creates a unique temporary directory. - * Generates six random characters to be appended behind a required prefix to create a unique temporary directory. - * @param options The encoding (or an object specifying the encoding), used as the encoding of the result. If not provided, `'utf8'` is used. - */ - export function __promisify__(prefix: string, options: { encoding: "buffer" } | "buffer"): Promise; - - /** - * Asynchronously creates a unique temporary directory. - * Generates six random characters to be appended behind a required prefix to create a unique temporary directory. - * @param options The encoding (or an object specifying the encoding), used as the encoding of the result. If not provided, `'utf8'` is used. - */ - export function __promisify__(prefix: string, options?: { encoding?: string | null } | string | null): Promise; - } - - /** - * Synchronously creates a unique temporary directory. - * Generates six random characters to be appended behind a required prefix to create a unique temporary directory. - * @param options The encoding (or an object specifying the encoding), used as the encoding of the result. If not provided, `'utf8'` is used. - */ - export function mkdtempSync(prefix: string, options?: { encoding?: BufferEncoding | null } | BufferEncoding | null): string; - - /** - * Synchronously creates a unique temporary directory. - * Generates six random characters to be appended behind a required prefix to create a unique temporary directory. - * @param options The encoding (or an object specifying the encoding), used as the encoding of the result. If not provided, `'utf8'` is used. - */ - export function mkdtempSync(prefix: string, options: { encoding: "buffer" } | "buffer"): Buffer; - - /** - * Synchronously creates a unique temporary directory. - * Generates six random characters to be appended behind a required prefix to create a unique temporary directory. - * @param options The encoding (or an object specifying the encoding), used as the encoding of the result. If not provided, `'utf8'` is used. - */ - export function mkdtempSync(prefix: string, options?: { encoding?: string | null } | string | null): string | Buffer; - - /** - * Asynchronous readdir(3) - read a directory. - * @param path A path to a file. If a URL is provided, it must use the `file:` protocol. - * @param options The encoding (or an object specifying the encoding), used as the encoding of the result. If not provided, `'utf8'` is used. - */ - export function readdir(path: PathLike, options: { encoding: BufferEncoding | null } | BufferEncoding | undefined | null, callback: (err: NodeJS.ErrnoException, files: string[]) => void): void; - - /** - * Asynchronous readdir(3) - read a directory. - * @param path A path to a file. If a URL is provided, it must use the `file:` protocol. - * @param options The encoding (or an object specifying the encoding), used as the encoding of the result. If not provided, `'utf8'` is used. - */ - export function readdir(path: PathLike, options: { encoding: "buffer" } | "buffer", callback: (err: NodeJS.ErrnoException, files: Buffer[]) => void): void; - - /** - * Asynchronous readdir(3) - read a directory. - * @param path A path to a file. If a URL is provided, it must use the `file:` protocol. - * @param options The encoding (or an object specifying the encoding), used as the encoding of the result. If not provided, `'utf8'` is used. - */ - export function readdir(path: PathLike, options: { encoding?: string | null } | string | undefined | null, callback: (err: NodeJS.ErrnoException, files: Array) => void): void; - - /** - * Asynchronous readdir(3) - read a directory. - * @param path A path to a file. If a URL is provided, it must use the `file:` protocol. - */ - export function readdir(path: PathLike, callback: (err: NodeJS.ErrnoException, files: string[]) => void): void; - - // NOTE: This namespace provides design-time support for util.promisify. Exported members do not exist at runtime. - export namespace readdir { - /** - * Asynchronous readdir(3) - read a directory. - * @param path A path to a file. If a URL is provided, it must use the `file:` protocol. - * @param options The encoding (or an object specifying the encoding), used as the encoding of the result. If not provided, `'utf8'` is used. - */ - export function __promisify__(path: PathLike, options?: { encoding: BufferEncoding | null } | BufferEncoding | null): Promise; - - /** - * Asynchronous readdir(3) - read a directory. - * @param path A path to a file. If a URL is provided, it must use the `file:` protocol. - * @param options The encoding (or an object specifying the encoding), used as the encoding of the result. If not provided, `'utf8'` is used. - */ - export function __promisify__(path: PathLike, options: "buffer" | { encoding: "buffer" }): Promise; - - /** - * Asynchronous readdir(3) - read a directory. - * @param path A path to a file. If a URL is provided, it must use the `file:` protocol. - * @param options The encoding (or an object specifying the encoding), used as the encoding of the result. If not provided, `'utf8'` is used. - */ - export function __promisify__(path: PathLike, options?: { encoding?: string | null } | string | null): Promise>; - } - - /** - * Synchronous readdir(3) - read a directory. - * @param path A path to a file. If a URL is provided, it must use the `file:` protocol. - * @param options The encoding (or an object specifying the encoding), used as the encoding of the result. If not provided, `'utf8'` is used. - */ - export function readdirSync(path: PathLike, options?: { encoding: BufferEncoding | null } | BufferEncoding | null): string[]; - - /** - * Synchronous readdir(3) - read a directory. - * @param path A path to a file. If a URL is provided, it must use the `file:` protocol. - * @param options The encoding (or an object specifying the encoding), used as the encoding of the result. If not provided, `'utf8'` is used. - */ - export function readdirSync(path: PathLike, options: { encoding: "buffer" } | "buffer"): Buffer[]; - - /** - * Synchronous readdir(3) - read a directory. - * @param path A path to a file. If a URL is provided, it must use the `file:` protocol. - * @param options The encoding (or an object specifying the encoding), used as the encoding of the result. If not provided, `'utf8'` is used. - */ - export function readdirSync(path: PathLike, options?: { encoding?: string | null } | string | null): Array; - - /** - * Asynchronous close(2) - close a file descriptor. - * @param fd A file descriptor. - */ - export function close(fd: number, callback: (err: NodeJS.ErrnoException) => void): void; - - // NOTE: This namespace provides design-time support for util.promisify. Exported members do not exist at runtime. - export namespace close { - /** - * Asynchronous close(2) - close a file descriptor. - * @param fd A file descriptor. - */ - export function __promisify__(fd: number): Promise; - } - - /** - * Synchronous close(2) - close a file descriptor. - * @param fd A file descriptor. - */ - export function closeSync(fd: number): void; - - /** - * Asynchronous open(2) - open and possibly create a file. - * @param path A path to a file. If a URL is provided, it must use the `file:` protocol. - * @param mode A file mode. If a string is passed, it is parsed as an octal integer. If not supplied, defaults to `0o666`. - */ - export function open(path: PathLike, flags: string | number, mode: string | number | undefined | null, callback: (err: NodeJS.ErrnoException, fd: number) => void): void; - - /** - * Asynchronous open(2) - open and possibly create a file. If the file is created, its mode will be `0o666`. - * @param path A path to a file. If a URL is provided, it must use the `file:` protocol. - */ - export function open(path: PathLike, flags: string | number, callback: (err: NodeJS.ErrnoException, fd: number) => void): void; - - // NOTE: This namespace provides design-time support for util.promisify. Exported members do not exist at runtime. - export namespace open { - /** - * Asynchronous open(2) - open and possibly create a file. - * @param path A path to a file. If a URL is provided, it must use the `file:` protocol. - * @param mode A file mode. If a string is passed, it is parsed as an octal integer. If not supplied, defaults to `0o666`. - */ - export function __promisify__(path: PathLike, flags: string | number, mode?: string | number | null): Promise; - } - - /** - * Synchronous open(2) - open and possibly create a file, returning a file descriptor.. - * @param path A path to a file. If a URL is provided, it must use the `file:` protocol. - * @param mode A file mode. If a string is passed, it is parsed as an octal integer. If not supplied, defaults to `0o666`. - */ - export function openSync(path: PathLike, flags: string | number, mode?: string | number | null): number; - - /** - * Asynchronously change file timestamps of the file referenced by the supplied path. - * @param path A path to a file. If a URL is provided, it must use the `file:` protocol. - * @param atime The last access time. If a string is provided, it will be coerced to number. - * @param mtime The last modified time. If a string is provided, it will be coerced to number. - */ - export function utimes(path: PathLike, atime: string | number | Date, mtime: string | number | Date, callback: (err: NodeJS.ErrnoException) => void): void; - - // NOTE: This namespace provides design-time support for util.promisify. Exported members do not exist at runtime. - export namespace utimes { - /** - * Asynchronously change file timestamps of the file referenced by the supplied path. - * @param path A path to a file. If a URL is provided, it must use the `file:` protocol. - * @param atime The last access time. If a string is provided, it will be coerced to number. - * @param mtime The last modified time. If a string is provided, it will be coerced to number. - */ - export function __promisify__(path: PathLike, atime: string | number | Date, mtime: string | number | Date): Promise; - } - - /** - * Synchronously change file timestamps of the file referenced by the supplied path. - * @param path A path to a file. If a URL is provided, it must use the `file:` protocol. - * @param atime The last access time. If a string is provided, it will be coerced to number. - * @param mtime The last modified time. If a string is provided, it will be coerced to number. - */ - export function utimesSync(path: PathLike, atime: string | number | Date, mtime: string | number | Date): void; - - /** - * Asynchronously change file timestamps of the file referenced by the supplied file descriptor. - * @param fd A file descriptor. - * @param atime The last access time. If a string is provided, it will be coerced to number. - * @param mtime The last modified time. If a string is provided, it will be coerced to number. - */ - export function futimes(fd: number, atime: string | number | Date, mtime: string | number | Date, callback: (err: NodeJS.ErrnoException) => void): void; - - // NOTE: This namespace provides design-time support for util.promisify. Exported members do not exist at runtime. - export namespace futimes { - /** - * Asynchronously change file timestamps of the file referenced by the supplied file descriptor. - * @param fd A file descriptor. - * @param atime The last access time. If a string is provided, it will be coerced to number. - * @param mtime The last modified time. If a string is provided, it will be coerced to number. - */ - export function __promisify__(fd: number, atime: string | number | Date, mtime: string | number | Date): Promise; - } - - /** - * Synchronously change file timestamps of the file referenced by the supplied file descriptor. - * @param fd A file descriptor. - * @param atime The last access time. If a string is provided, it will be coerced to number. - * @param mtime The last modified time. If a string is provided, it will be coerced to number. - */ - export function futimesSync(fd: number, atime: string | number | Date, mtime: string | number | Date): void; - - /** - * Asynchronous fsync(2) - synchronize a file's in-core state with the underlying storage device. - * @param fd A file descriptor. - */ - export function fsync(fd: number, callback: (err: NodeJS.ErrnoException) => void): void; - - // NOTE: This namespace provides design-time support for util.promisify. Exported members do not exist at runtime. - export namespace fsync { - /** - * Asynchronous fsync(2) - synchronize a file's in-core state with the underlying storage device. - * @param fd A file descriptor. - */ - export function __promisify__(fd: number): Promise; - } - - /** - * Synchronous fsync(2) - synchronize a file's in-core state with the underlying storage device. - * @param fd A file descriptor. - */ - export function fsyncSync(fd: number): void; - - /** - * Asynchronously writes `buffer` to the file referenced by the supplied file descriptor. - * @param fd A file descriptor. - * @param offset The part of the buffer to be written. If not supplied, defaults to `0`. - * @param length The number of bytes to write. If not supplied, defaults to `buffer.length - offset`. - * @param position The offset from the beginning of the file where this data should be written. If not supplied, defaults to the current position. - */ - export function write(fd: number, buffer: TBuffer, offset: number | undefined | null, length: number | undefined | null, position: number | undefined | null, callback: (err: NodeJS.ErrnoException, written: number, buffer: TBuffer) => void): void; - - /** - * Asynchronously writes `buffer` to the file referenced by the supplied file descriptor. - * @param fd A file descriptor. - * @param offset The part of the buffer to be written. If not supplied, defaults to `0`. - * @param length The number of bytes to write. If not supplied, defaults to `buffer.length - offset`. - */ - export function write(fd: number, buffer: TBuffer, offset: number | undefined | null, length: number | undefined | null, callback: (err: NodeJS.ErrnoException, written: number, buffer: TBuffer) => void): void; - - /** - * Asynchronously writes `buffer` to the file referenced by the supplied file descriptor. - * @param fd A file descriptor. - * @param offset The part of the buffer to be written. If not supplied, defaults to `0`. - */ - export function write(fd: number, buffer: TBuffer, offset: number | undefined | null, callback: (err: NodeJS.ErrnoException, written: number, buffer: TBuffer) => void): void; - - /** - * Asynchronously writes `buffer` to the file referenced by the supplied file descriptor. - * @param fd A file descriptor. - */ - export function write(fd: number, buffer: TBuffer, callback: (err: NodeJS.ErrnoException, written: number, buffer: TBuffer) => void): void; - - /** - * Asynchronously writes `string` to the file referenced by the supplied file descriptor. - * @param fd A file descriptor. - * @param string A string to write. If something other than a string is supplied it will be coerced to a string. - * @param position The offset from the beginning of the file where this data should be written. If not supplied, defaults to the current position. - * @param encoding The expected string encoding. - */ - export function write(fd: number, string: any, position: number | undefined | null, encoding: string | undefined | null, callback: (err: NodeJS.ErrnoException, written: number, str: string) => void): void; - - /** - * Asynchronously writes `string` to the file referenced by the supplied file descriptor. - * @param fd A file descriptor. - * @param string A string to write. If something other than a string is supplied it will be coerced to a string. - * @param position The offset from the beginning of the file where this data should be written. If not supplied, defaults to the current position. - */ - export function write(fd: number, string: any, position: number | undefined | null, callback: (err: NodeJS.ErrnoException, written: number, str: string) => void): void; - - /** - * Asynchronously writes `string` to the file referenced by the supplied file descriptor. - * @param fd A file descriptor. - * @param string A string to write. If something other than a string is supplied it will be coerced to a string. - */ - export function write(fd: number, string: any, callback: (err: NodeJS.ErrnoException, written: number, str: string) => void): void; - - // NOTE: This namespace provides design-time support for util.promisify. Exported members do not exist at runtime. - export namespace write { - /** - * Asynchronously writes `buffer` to the file referenced by the supplied file descriptor. - * @param fd A file descriptor. - * @param offset The part of the buffer to be written. If not supplied, defaults to `0`. - * @param length The number of bytes to write. If not supplied, defaults to `buffer.length - offset`. - * @param position The offset from the beginning of the file where this data should be written. If not supplied, defaults to the current position. - */ - export function __promisify__(fd: number, buffer?: TBuffer, offset?: number, length?: number, position?: number | null): Promise<{ bytesWritten: number, buffer: TBuffer }>; - - /** - * Asynchronously writes `string` to the file referenced by the supplied file descriptor. - * @param fd A file descriptor. - * @param string A string to write. If something other than a string is supplied it will be coerced to a string. - * @param position The offset from the beginning of the file where this data should be written. If not supplied, defaults to the current position. - * @param encoding The expected string encoding. - */ - export function __promisify__(fd: number, string: any, position?: number | null, encoding?: string | null): Promise<{ bytesWritten: number, buffer: string }>; - } - - /** - * Synchronously writes `buffer` to the file referenced by the supplied file descriptor, returning the number of bytes written. - * @param fd A file descriptor. - * @param offset The part of the buffer to be written. If not supplied, defaults to `0`. - * @param length The number of bytes to write. If not supplied, defaults to `buffer.length - offset`. - * @param position The offset from the beginning of the file where this data should be written. If not supplied, defaults to the current position. - */ - export function writeSync(fd: number, buffer: Buffer | Uint8Array, offset?: number | null, length?: number | null, position?: number | null): number; - - /** - * Synchronously writes `string` to the file referenced by the supplied file descriptor, returning the number of bytes written. - * @param fd A file descriptor. - * @param string A string to write. If something other than a string is supplied it will be coerced to a string. - * @param position The offset from the beginning of the file where this data should be written. If not supplied, defaults to the current position. - * @param encoding The expected string encoding. - */ - export function writeSync(fd: number, string: any, position?: number | null, encoding?: string | null): number; - - /** - * Asynchronously reads data from the file referenced by the supplied file descriptor. - * @param fd A file descriptor. - * @param buffer The buffer that the data will be written to. - * @param offset The offset in the buffer at which to start writing. - * @param length The number of bytes to read. - * @param position The offset from the beginning of the file from which data should be read. If `null`, data will be read from the current position. - */ - export function read(fd: number, buffer: TBuffer, offset: number, length: number, position: number | null, callback?: (err: NodeJS.ErrnoException, bytesRead: number, buffer: TBuffer) => void): void; - - // NOTE: This namespace provides design-time support for util.promisify. Exported members do not exist at runtime. - export namespace read { - /** - * @param fd A file descriptor. - * @param buffer The buffer that the data will be written to. - * @param offset The offset in the buffer at which to start writing. - * @param length The number of bytes to read. - * @param position The offset from the beginning of the file from which data should be read. If `null`, data will be read from the current position. - */ - export function __promisify__(fd: number, buffer: TBuffer, offset: number, length: number, position: number | null): Promise<{ bytesRead: number, buffer: TBuffer }>; - } - - /** - * Synchronously reads data from the file referenced by the supplied file descriptor, returning the number of bytes read. - * @param fd A file descriptor. - * @param buffer The buffer that the data will be written to. - * @param offset The offset in the buffer at which to start writing. - * @param length The number of bytes to read. - * @param position The offset from the beginning of the file from which data should be read. If `null`, data will be read from the current position. - */ - export function readSync(fd: number, buffer: Buffer | Uint8Array, offset: number, length: number, position: number | null): number; - - /** - * Asynchronously reads the entire contents of a file. - * @param path A path to a file. If a URL is provided, it must use the `file:` protocol. - * If a file descriptor is provided, the underlying file will _not_ be closed automatically. - * @param options An object that may contain an optional flag. - * If a flag is not provided, it defaults to `'r'`. - */ - export function readFile(path: PathLike | number, options: { encoding?: null; flag?: string; } | undefined | null, callback: (err: NodeJS.ErrnoException, data: Buffer) => void): void; - - /** - * Asynchronously reads the entire contents of a file. - * @param path A path to a file. If a URL is provided, it must use the `file:` protocol. - * URL support is _experimental_. - * If a file descriptor is provided, the underlying file will _not_ be closed automatically. - * @param options Either the encoding for the result, or an object that contains the encoding and an optional flag. - * If a flag is not provided, it defaults to `'r'`. - */ - export function readFile(path: PathLike | number, options: { encoding: string; flag?: string; } | string, callback: (err: NodeJS.ErrnoException, data: string) => void): void; - - /** - * Asynchronously reads the entire contents of a file. - * @param path A path to a file. If a URL is provided, it must use the `file:` protocol. - * URL support is _experimental_. - * If a file descriptor is provided, the underlying file will _not_ be closed automatically. - * @param options Either the encoding for the result, or an object that contains the encoding and an optional flag. - * If a flag is not provided, it defaults to `'r'`. - */ - export function readFile(path: PathLike | number, options: { encoding?: string | null; flag?: string; } | string | undefined | null, callback: (err: NodeJS.ErrnoException, data: string | Buffer) => void): void; - - /** - * Asynchronously reads the entire contents of a file. - * @param path A path to a file. If a URL is provided, it must use the `file:` protocol. - * If a file descriptor is provided, the underlying file will _not_ be closed automatically. - */ - export function readFile(path: PathLike | number, callback: (err: NodeJS.ErrnoException, data: Buffer) => void): void; - - // NOTE: This namespace provides design-time support for util.promisify. Exported members do not exist at runtime. - export namespace readFile { - /** - * Asynchronously reads the entire contents of a file. - * @param path A path to a file. If a URL is provided, it must use the `file:` protocol. - * If a file descriptor is provided, the underlying file will _not_ be closed automatically. - * @param options An object that may contain an optional flag. - * If a flag is not provided, it defaults to `'r'`. - */ - export function __promisify__(path: PathLike | number, options?: { encoding?: null; flag?: string; } | null): Promise; - - /** - * Asynchronously reads the entire contents of a file. - * @param path A path to a file. If a URL is provided, it must use the `file:` protocol. - * URL support is _experimental_. - * If a file descriptor is provided, the underlying file will _not_ be closed automatically. - * @param options Either the encoding for the result, or an object that contains the encoding and an optional flag. - * If a flag is not provided, it defaults to `'r'`. - */ - export function __promisify__(path: PathLike | number, options: { encoding: string; flag?: string; } | string): Promise; - - /** - * Asynchronously reads the entire contents of a file. - * @param path A path to a file. If a URL is provided, it must use the `file:` protocol. - * URL support is _experimental_. - * If a file descriptor is provided, the underlying file will _not_ be closed automatically. - * @param options Either the encoding for the result, or an object that contains the encoding and an optional flag. - * If a flag is not provided, it defaults to `'r'`. - */ - export function __promisify__(path: PathLike | number, options?: { encoding?: string | null; flag?: string; } | string | null): Promise; - } - - /** - * Synchronously reads the entire contents of a file. - * @param path A path to a file. If a URL is provided, it must use the `file:` protocol. - * URL support is _experimental_. - * If a file descriptor is provided, the underlying file will _not_ be closed automatically. - * @param options An object that may contain an optional flag. If a flag is not provided, it defaults to `'r'`. - */ - export function readFileSync(path: PathLike | number, options?: { encoding?: null; flag?: string; } | null): Buffer; - - /** - * Synchronously reads the entire contents of a file. - * @param path A path to a file. If a URL is provided, it must use the `file:` protocol. - * URL support is _experimental_. - * If a file descriptor is provided, the underlying file will _not_ be closed automatically. - * @param options Either the encoding for the result, or an object that contains the encoding and an optional flag. - * If a flag is not provided, it defaults to `'r'`. - */ - export function readFileSync(path: PathLike | number, options: { encoding: string; flag?: string; } | string): string; - - /** - * Synchronously reads the entire contents of a file. - * @param path A path to a file. If a URL is provided, it must use the `file:` protocol. - * URL support is _experimental_. - * If a file descriptor is provided, the underlying file will _not_ be closed automatically. - * @param options Either the encoding for the result, or an object that contains the encoding and an optional flag. - * If a flag is not provided, it defaults to `'r'`. - */ - export function readFileSync(path: PathLike | number, options?: { encoding?: string | null; flag?: string; } | string | null): string | Buffer; - - /** - * Asynchronously writes data to a file, replacing the file if it already exists. - * @param path A path to a file. If a URL is provided, it must use the `file:` protocol. - * URL support is _experimental_. - * If a file descriptor is provided, the underlying file will _not_ be closed automatically. - * @param data The data to write. If something other than a Buffer or Uint8Array is provided, the value is coerced to a string. - * @param options Either the encoding for the file, or an object optionally specifying the encoding, file mode, and flag. - * If `encoding` is not supplied, the default of `'utf8'` is used. - * If `mode` is not supplied, the default of `0o666` is used. - * If `mode` is a string, it is parsed as an octal integer. - * If `flag` is not supplied, the default of `'w'` is used. - */ - export function writeFile(path: PathLike | number, data: any, options: { encoding?: string | null; mode?: number | string; flag?: string; } | string | undefined | null, callback: (err: NodeJS.ErrnoException) => void): void; - - /** - * Asynchronously writes data to a file, replacing the file if it already exists. - * @param path A path to a file. If a URL is provided, it must use the `file:` protocol. - * URL support is _experimental_. - * If a file descriptor is provided, the underlying file will _not_ be closed automatically. - * @param data The data to write. If something other than a Buffer or Uint8Array is provided, the value is coerced to a string. - */ - export function writeFile(path: PathLike | number, data: any, callback: (err: NodeJS.ErrnoException) => void): void; - - // NOTE: This namespace provides design-time support for util.promisify. Exported members do not exist at runtime. - export namespace writeFile { - /** - * Asynchronously writes data to a file, replacing the file if it already exists. - * @param path A path to a file. If a URL is provided, it must use the `file:` protocol. - * URL support is _experimental_. - * If a file descriptor is provided, the underlying file will _not_ be closed automatically. - * @param data The data to write. If something other than a Buffer or Uint8Array is provided, the value is coerced to a string. - * @param options Either the encoding for the file, or an object optionally specifying the encoding, file mode, and flag. - * If `encoding` is not supplied, the default of `'utf8'` is used. - * If `mode` is not supplied, the default of `0o666` is used. - * If `mode` is a string, it is parsed as an octal integer. - * If `flag` is not supplied, the default of `'w'` is used. - */ - export function __promisify__(path: PathLike | number, data: any, options?: { encoding?: string | null; mode?: number | string; flag?: string; } | string | null): Promise; - } - - /** - * Synchronously writes data to a file, replacing the file if it already exists. - * @param path A path to a file. If a URL is provided, it must use the `file:` protocol. - * URL support is _experimental_. - * If a file descriptor is provided, the underlying file will _not_ be closed automatically. - * @param data The data to write. If something other than a Buffer or Uint8Array is provided, the value is coerced to a string. - * @param options Either the encoding for the file, or an object optionally specifying the encoding, file mode, and flag. - * If `encoding` is not supplied, the default of `'utf8'` is used. - * If `mode` is not supplied, the default of `0o666` is used. - * If `mode` is a string, it is parsed as an octal integer. - * If `flag` is not supplied, the default of `'w'` is used. - */ - export function writeFileSync(path: PathLike | number, data: any, options?: { encoding?: string | null; mode?: number | string; flag?: string; } | string | null): void; - - /** - * Asynchronously append data to a file, creating the file if it does not exist. - * @param file A path to a file. If a URL is provided, it must use the `file:` protocol. - * URL support is _experimental_. - * If a file descriptor is provided, the underlying file will _not_ be closed automatically. - * @param data The data to write. If something other than a Buffer or Uint8Array is provided, the value is coerced to a string. - * @param options Either the encoding for the file, or an object optionally specifying the encoding, file mode, and flag. - * If `encoding` is not supplied, the default of `'utf8'` is used. - * If `mode` is not supplied, the default of `0o666` is used. - * If `mode` is a string, it is parsed as an octal integer. - * If `flag` is not supplied, the default of `'a'` is used. - */ - export function appendFile(file: PathLike | number, data: any, options: { encoding?: string | null, mode?: string | number, flag?: string } | string | undefined | null, callback: (err: NodeJS.ErrnoException) => void): void; - - /** - * Asynchronously append data to a file, creating the file if it does not exist. - * @param file A path to a file. If a URL is provided, it must use the `file:` protocol. - * URL support is _experimental_. - * If a file descriptor is provided, the underlying file will _not_ be closed automatically. - * @param data The data to write. If something other than a Buffer or Uint8Array is provided, the value is coerced to a string. - */ - export function appendFile(file: PathLike | number, data: any, callback: (err: NodeJS.ErrnoException) => void): void; - - // NOTE: This namespace provides design-time support for util.promisify. Exported members do not exist at runtime. - export namespace appendFile { - /** - * Asynchronously append data to a file, creating the file if it does not exist. - * @param file A path to a file. If a URL is provided, it must use the `file:` protocol. - * URL support is _experimental_. - * If a file descriptor is provided, the underlying file will _not_ be closed automatically. - * @param data The data to write. If something other than a Buffer or Uint8Array is provided, the value is coerced to a string. - * @param options Either the encoding for the file, or an object optionally specifying the encoding, file mode, and flag. - * If `encoding` is not supplied, the default of `'utf8'` is used. - * If `mode` is not supplied, the default of `0o666` is used. - * If `mode` is a string, it is parsed as an octal integer. - * If `flag` is not supplied, the default of `'a'` is used. - */ - export function __promisify__(file: PathLike | number, data: any, options?: { encoding?: string | null, mode?: string | number, flag?: string } | string | null): Promise; - } - - /** - * Synchronously append data to a file, creating the file if it does not exist. - * @param file A path to a file. If a URL is provided, it must use the `file:` protocol. - * URL support is _experimental_. - * If a file descriptor is provided, the underlying file will _not_ be closed automatically. - * @param data The data to write. If something other than a Buffer or Uint8Array is provided, the value is coerced to a string. - * @param options Either the encoding for the file, or an object optionally specifying the encoding, file mode, and flag. - * If `encoding` is not supplied, the default of `'utf8'` is used. - * If `mode` is not supplied, the default of `0o666` is used. - * If `mode` is a string, it is parsed as an octal integer. - * If `flag` is not supplied, the default of `'a'` is used. - */ - export function appendFileSync(file: PathLike | number, data: any, options?: { encoding?: string | null; mode?: number | string; flag?: string; } | string | null): void; - - /** - * Watch for changes on `filename`. The callback `listener` will be called each time the file is accessed. - */ - export function watchFile(filename: PathLike, options: { persistent?: boolean; interval?: number; } | undefined, listener: (curr: Stats, prev: Stats) => void): void; - - /** - * Watch for changes on `filename`. The callback `listener` will be called each time the file is accessed. - * @param filename A path to a file or directory. If a URL is provided, it must use the `file:` protocol. - * URL support is _experimental_. - */ - export function watchFile(filename: PathLike, listener: (curr: Stats, prev: Stats) => void): void; - - /** - * Stop watching for changes on `filename`. - * @param filename A path to a file or directory. If a URL is provided, it must use the `file:` protocol. - * URL support is _experimental_. - */ - export function unwatchFile(filename: PathLike, listener?: (curr: Stats, prev: Stats) => void): void; - - /** - * Watch for changes on `filename`, where `filename` is either a file or a directory, returning an `FSWatcher`. - * @param filename A path to a file or directory. If a URL is provided, it must use the `file:` protocol. - * URL support is _experimental_. - * @param options Either the encoding for the filename provided to the listener, or an object optionally specifying encoding, persistent, and recursive options. - * If `encoding` is not supplied, the default of `'utf8'` is used. - * If `persistent` is not supplied, the default of `true` is used. - * If `recursive` is not supplied, the default of `false` is used. - */ - export function watch(filename: PathLike, options: { encoding?: BufferEncoding | null, persistent?: boolean, recursive?: boolean } | BufferEncoding | undefined | null, listener?: (event: string, filename: string) => void): FSWatcher; - - /** - * Watch for changes on `filename`, where `filename` is either a file or a directory, returning an `FSWatcher`. - * @param filename A path to a file or directory. If a URL is provided, it must use the `file:` protocol. - * URL support is _experimental_. - * @param options Either the encoding for the filename provided to the listener, or an object optionally specifying encoding, persistent, and recursive options. - * If `encoding` is not supplied, the default of `'utf8'` is used. - * If `persistent` is not supplied, the default of `true` is used. - * If `recursive` is not supplied, the default of `false` is used. - */ - export function watch(filename: PathLike, options: { encoding: "buffer", persistent?: boolean, recursive?: boolean } | "buffer", listener?: (event: string, filename: Buffer) => void): FSWatcher; - - /** - * Watch for changes on `filename`, where `filename` is either a file or a directory, returning an `FSWatcher`. - * @param filename A path to a file or directory. If a URL is provided, it must use the `file:` protocol. - * URL support is _experimental_. - * @param options Either the encoding for the filename provided to the listener, or an object optionally specifying encoding, persistent, and recursive options. - * If `encoding` is not supplied, the default of `'utf8'` is used. - * If `persistent` is not supplied, the default of `true` is used. - * If `recursive` is not supplied, the default of `false` is used. - */ - export function watch(filename: PathLike, options: { encoding?: string | null, persistent?: boolean, recursive?: boolean } | string | null, listener?: (event: string, filename: string | Buffer) => void): FSWatcher; - - /** - * Watch for changes on `filename`, where `filename` is either a file or a directory, returning an `FSWatcher`. - * @param filename A path to a file or directory. If a URL is provided, it must use the `file:` protocol. - * URL support is _experimental_. - */ - export function watch(filename: PathLike, listener?: (event: string, filename: string) => any): FSWatcher; - - /** - * Asynchronously tests whether or not the given path exists by checking with the file system. - * @deprecated - * @param path A path to a file or directory. If a URL is provided, it must use the `file:` protocol. - * URL support is _experimental_. - */ - export function exists(path: PathLike, callback: (exists: boolean) => void): void; - - // NOTE: This namespace provides design-time support for util.promisify. Exported members do not exist at runtime. - export namespace exists { - /** - * @param path A path to a file or directory. If a URL is provided, it must use the `file:` protocol. - * URL support is _experimental_. - */ - function __promisify__(path: PathLike): Promise; - } - - /** - * Synchronously tests whether or not the given path exists by checking with the file system. - * @param path A path to a file or directory. If a URL is provided, it must use the `file:` protocol. - * URL support is _experimental_. - */ - export function existsSync(path: PathLike): boolean; - - export namespace constants { - // File Access Constants - - /** Constant for fs.access(). File is visible to the calling process. */ - export const F_OK: number; - - /** Constant for fs.access(). File can be read by the calling process. */ - export const R_OK: number; - - /** Constant for fs.access(). File can be written by the calling process. */ - export const W_OK: number; - - /** Constant for fs.access(). File can be executed by the calling process. */ - export const X_OK: number; - - // File Open Constants - - /** Constant for fs.open(). Flag indicating to open a file for read-only access. */ - export const O_RDONLY: number; - - /** Constant for fs.open(). Flag indicating to open a file for write-only access. */ - export const O_WRONLY: number; - - /** Constant for fs.open(). Flag indicating to open a file for read-write access. */ - export const O_RDWR: number; - - /** Constant for fs.open(). Flag indicating to create the file if it does not already exist. */ - export const O_CREAT: number; - - /** Constant for fs.open(). Flag indicating that opening a file should fail if the O_CREAT flag is set and the file already exists. */ - export const O_EXCL: number; - - /** Constant for fs.open(). Flag indicating that if path identifies a terminal device, opening the path shall not cause that terminal to become the controlling terminal for the process (if the process does not already have one). */ - export const O_NOCTTY: number; - - /** Constant for fs.open(). Flag indicating that if the file exists and is a regular file, and the file is opened successfully for write access, its length shall be truncated to zero. */ - export const O_TRUNC: number; - - /** Constant for fs.open(). Flag indicating that data will be appended to the end of the file. */ - export const O_APPEND: number; - - /** Constant for fs.open(). Flag indicating that the open should fail if the path is not a directory. */ - export const O_DIRECTORY: number; - - /** Constant for fs.open(). Flag indicating reading accesses to the file system will no longer result in an update to the atime information associated with the file. This flag is available on Linux operating systems only. */ - export const O_NOATIME: number; - - /** Constant for fs.open(). Flag indicating that the open should fail if the path is a symbolic link. */ - export const O_NOFOLLOW: number; - - /** Constant for fs.open(). Flag indicating that the file is opened for synchronous I/O. */ - export const O_SYNC: number; - - /** Constant for fs.open(). Flag indicating to open the symbolic link itself rather than the resource it is pointing to. */ - export const O_SYMLINK: number; - - /** Constant for fs.open(). When set, an attempt will be made to minimize caching effects of file I/O. */ - export const O_DIRECT: number; - - /** Constant for fs.open(). Flag indicating to open the file in nonblocking mode when possible. */ - export const O_NONBLOCK: number; - - // File Type Constants - - /** Constant for fs.Stats mode property for determining a file's type. Bit mask used to extract the file type code. */ - export const S_IFMT: number; - - /** Constant for fs.Stats mode property for determining a file's type. File type constant for a regular file. */ - export const S_IFREG: number; - - /** Constant for fs.Stats mode property for determining a file's type. File type constant for a directory. */ - export const S_IFDIR: number; - - /** Constant for fs.Stats mode property for determining a file's type. File type constant for a character-oriented device file. */ - export const S_IFCHR: number; - - /** Constant for fs.Stats mode property for determining a file's type. File type constant for a block-oriented device file. */ - export const S_IFBLK: number; - - /** Constant for fs.Stats mode property for determining a file's type. File type constant for a FIFO/pipe. */ - export const S_IFIFO: number; - - /** Constant for fs.Stats mode property for determining a file's type. File type constant for a symbolic link. */ - export const S_IFLNK: number; - - /** Constant for fs.Stats mode property for determining a file's type. File type constant for a socket. */ - export const S_IFSOCK: number; - - // File Mode Constants - - /** Constant for fs.Stats mode property for determining access permissions for a file. File mode indicating readable, writable and executable by owner. */ - export const S_IRWXU: number; - - /** Constant for fs.Stats mode property for determining access permissions for a file. File mode indicating readable by owner. */ - export const S_IRUSR: number; - - /** Constant for fs.Stats mode property for determining access permissions for a file. File mode indicating writable by owner. */ - export const S_IWUSR: number; - - /** Constant for fs.Stats mode property for determining access permissions for a file. File mode indicating executable by owner. */ - export const S_IXUSR: number; - - /** Constant for fs.Stats mode property for determining access permissions for a file. File mode indicating readable, writable and executable by group. */ - export const S_IRWXG: number; - - /** Constant for fs.Stats mode property for determining access permissions for a file. File mode indicating readable by group. */ - export const S_IRGRP: number; - - /** Constant for fs.Stats mode property for determining access permissions for a file. File mode indicating writable by group. */ - export const S_IWGRP: number; - - /** Constant for fs.Stats mode property for determining access permissions for a file. File mode indicating executable by group. */ - export const S_IXGRP: number; - - /** Constant for fs.Stats mode property for determining access permissions for a file. File mode indicating readable, writable and executable by others. */ - export const S_IRWXO: number; - - /** Constant for fs.Stats mode property for determining access permissions for a file. File mode indicating readable by others. */ - export const S_IROTH: number; - - /** Constant for fs.Stats mode property for determining access permissions for a file. File mode indicating writable by others. */ - export const S_IWOTH: number; - - /** Constant for fs.Stats mode property for determining access permissions for a file. File mode indicating executable by others. */ - export const S_IXOTH: number; - } - - /** - * Asynchronously tests a user's permissions for the file specified by path. - * @param path A path to a file or directory. If a URL is provided, it must use the `file:` protocol. - * URL support is _experimental_. - */ - export function access(path: PathLike, mode: number | undefined, callback: (err: NodeJS.ErrnoException) => void): void; - - /** - * Asynchronously tests a user's permissions for the file specified by path. - * @param path A path to a file or directory. If a URL is provided, it must use the `file:` protocol. - * URL support is _experimental_. - */ - export function access(path: PathLike, callback: (err: NodeJS.ErrnoException) => void): void; - - // NOTE: This namespace provides design-time support for util.promisify. Exported members do not exist at runtime. - export namespace access { - /** - * Asynchronously tests a user's permissions for the file specified by path. - * @param path A path to a file or directory. If a URL is provided, it must use the `file:` protocol. - * URL support is _experimental_. - */ - export function __promisify__(path: PathLike, mode?: number): Promise; - } - - /** - * Synchronously tests a user's permissions for the file specified by path. - * @param path A path to a file or directory. If a URL is provided, it must use the `file:` protocol. - * URL support is _experimental_. - */ - export function accessSync(path: PathLike, mode?: number): void; - - /** - * Returns a new `ReadStream` object. - * @param path A path to a file. If a URL is provided, it must use the `file:` protocol. - * URL support is _experimental_. - */ - export function createReadStream(path: PathLike, options?: string | { - flags?: string; - encoding?: string; - fd?: number; - mode?: number; - autoClose?: boolean; - start?: number; - end?: number; - }): ReadStream; - - /** - * Returns a new `WriteStream` object. - * @param path A path to a file. If a URL is provided, it must use the `file:` protocol. - * URL support is _experimental_. - */ - export function createWriteStream(path: PathLike, options?: string | { - flags?: string; - encoding?: string; - fd?: number; - mode?: number; - autoClose?: boolean; - start?: number; - }): WriteStream; - - /** - * Asynchronous fdatasync(2) - synchronize a file's in-core state with storage device. - * @param fd A file descriptor. - */ - export function fdatasync(fd: number, callback: (err: NodeJS.ErrnoException) => void): void; - - // NOTE: This namespace provides design-time support for util.promisify. Exported members do not exist at runtime. - export namespace fdatasync { - /** - * Asynchronous fdatasync(2) - synchronize a file's in-core state with storage device. - * @param fd A file descriptor. - */ - export function __promisify__(fd: number): Promise; - } - - /** - * Synchronous fdatasync(2) - synchronize a file's in-core state with storage device. - * @param fd A file descriptor. - */ - export function fdatasyncSync(fd: number): void; -} - -declare module "path" { - /** - * A parsed path object generated by path.parse() or consumed by path.format(). - */ - export interface ParsedPath { - /** - * The root of the path such as '/' or 'c:\' - */ - root: string; - /** - * The full directory path such as '/home/user/dir' or 'c:\path\dir' - */ - dir: string; - /** - * The file name including extension (if any) such as 'index.html' - */ - base: string; - /** - * The file extension (if any) such as '.html' - */ - ext: string; - /** - * The file name without extension (if any) such as 'index' - */ - name: string; - } - - /** - * Normalize a string path, reducing '..' and '.' parts. - * When multiple slashes are found, they're replaced by a single one; when the path contains a trailing slash, it is preserved. On Windows backslashes are used. - * - * @param p string path to normalize. - */ - export function normalize(p: string): string; - /** - * Join all arguments together and normalize the resulting path. - * Arguments must be strings. In v0.8, non-string arguments were silently ignored. In v0.10 and up, an exception is thrown. - * - * @param paths paths to join. - */ - export function join(...paths: string[]): string; - /** - * The right-most parameter is considered {to}. Other parameters are considered an array of {from}. - * - * Starting from leftmost {from} paramter, resolves {to} to an absolute path. - * - * If {to} isn't already absolute, {from} arguments are prepended in right to left order, until an absolute path is found. If after using all {from} paths still no absolute path is found, the current working directory is used as well. The resulting path is normalized, and trailing slashes are removed unless the path gets resolved to the root directory. - * - * @param pathSegments string paths to join. Non-string arguments are ignored. - */ - export function resolve(...pathSegments: any[]): string; - /** - * Determines whether {path} is an absolute path. An absolute path will always resolve to the same location, regardless of the working directory. - * - * @param path path to test. - */ - export function isAbsolute(path: string): boolean; - /** - * Solve the relative path from {from} to {to}. - * At times we have two absolute paths, and we need to derive the relative path from one to the other. This is actually the reverse transform of path.resolve. - * - * @param from - * @param to - */ - export function relative(from: string, to: string): string; - /** - * Return the directory name of a path. Similar to the Unix dirname command. - * - * @param p the path to evaluate. - */ - export function dirname(p: string): string; - /** - * Return the last portion of a path. Similar to the Unix basename command. - * Often used to extract the file name from a fully qualified path. - * - * @param p the path to evaluate. - * @param ext optionally, an extension to remove from the result. - */ - export function basename(p: string, ext?: string): string; - /** - * Return the extension of the path, from the last '.' to end of string in the last portion of the path. - * If there is no '.' in the last portion of the path or the first character of it is '.', then it returns an empty string - * - * @param p the path to evaluate. - */ - export function extname(p: string): string; - /** - * The platform-specific file separator. '\\' or '/'. - */ - export var sep: string; - /** - * The platform-specific file delimiter. ';' or ':'. - */ - export var delimiter: string; - /** - * Returns an object from a path string - the opposite of format(). - * - * @param pathString path to evaluate. - */ - export function parse(pathString: string): ParsedPath; - /** - * Returns a path string from an object - the opposite of parse(). - * - * @param pathString path to evaluate. - */ - export function format(pathObject: ParsedPath): string; - - export module posix { - export function normalize(p: string): string; - export function join(...paths: any[]): string; - export function resolve(...pathSegments: any[]): string; - export function isAbsolute(p: string): boolean; - export function relative(from: string, to: string): string; - export function dirname(p: string): string; - export function basename(p: string, ext?: string): string; - export function extname(p: string): string; - export var sep: string; - export var delimiter: string; - export function parse(p: string): ParsedPath; - export function format(pP: ParsedPath): string; - } - - export module win32 { - export function normalize(p: string): string; - export function join(...paths: any[]): string; - export function resolve(...pathSegments: any[]): string; - export function isAbsolute(p: string): boolean; - export function relative(from: string, to: string): string; - export function dirname(p: string): string; - export function basename(p: string, ext?: string): string; - export function extname(p: string): string; - export var sep: string; - export var delimiter: string; - export function parse(p: string): ParsedPath; - export function format(pP: ParsedPath): string; - } -} - -declare module "string_decoder" { - export interface NodeStringDecoder { - write(buffer: Buffer): string; - end(buffer?: Buffer): string; - } - export var StringDecoder: { - new(encoding?: string): NodeStringDecoder; - }; -} - -declare module "tls" { - import * as crypto from "crypto"; - import * as dns from "dns"; - import * as net from "net"; - import * as stream from "stream"; - - var CLIENT_RENEG_LIMIT: number; - var CLIENT_RENEG_WINDOW: number; - - export interface Certificate { - /** - * Country code. - */ - C: string; - /** - * Street. - */ - ST: string; - /** - * Locality. - */ - L: string; - /** - * Organization. - */ - O: string; - /** - * Organizational unit. - */ - OU: string; - /** - * Common name. - */ - CN: string; - } - - export interface PeerCertificate { - subject: Certificate; - issuer: Certificate; - subjectaltname: string; - infoAccess: { [index: string]: string[] | undefined }; - modulus: string; - exponent: string; - valid_from: string; - valid_to: string; - fingerprint: string; - ext_key_usage: string[]; - serialNumber: string; - raw: Buffer; - } - - export interface DetailedPeerCertificate extends PeerCertificate { - issuerCertificate: DetailedPeerCertificate; - } - - export interface CipherNameAndProtocol { - /** - * The cipher name. - */ - name: string; - /** - * SSL/TLS protocol version. - */ - version: string; - } - - export class TLSSocket extends net.Socket { - /** - * Construct a new tls.TLSSocket object from an existing TCP socket. - */ - constructor(socket: net.Socket, options?: { - /** - * An optional TLS context object from tls.createSecureContext() - */ - secureContext?: SecureContext, - /** - * If true the TLS socket will be instantiated in server-mode. - * Defaults to false. - */ - isServer?: boolean, - /** - * An optional net.Server instance. - */ - server?: net.Server, - /** - * If true the server will request a certificate from clients that - * connect and attempt to verify that certificate. Defaults to - * false. - */ - requestCert?: boolean, - /** - * If true the server will reject any connection which is not - * authorized with the list of supplied CAs. This option only has an - * effect if requestCert is true. Defaults to false. - */ - rejectUnauthorized?: boolean, - /** - * An array of strings or a Buffer naming possible NPN protocols. - * (Protocols should be ordered by their priority.) - */ - NPNProtocols?: string[] | Buffer, - /** - * An array of strings or a Buffer naming possible ALPN protocols. - * (Protocols should be ordered by their priority.) When the server - * receives both NPN and ALPN extensions from the client, ALPN takes - * precedence over NPN and the server does not send an NPN extension - * to the client. - */ - ALPNProtocols?: string[] | Buffer, - /** - * SNICallback(servername, cb) A function that will be - * called if the client supports SNI TLS extension. Two arguments - * will be passed when called: servername and cb. SNICallback should - * invoke cb(null, ctx), where ctx is a SecureContext instance. - * (tls.createSecureContext(...) can be used to get a proper - * SecureContext.) If SNICallback wasn't provided the default callback - * with high-level API will be used (see below). - */ - SNICallback?: Function, - /** - * An optional Buffer instance containing a TLS session. - */ - session?: Buffer, - /** - * If true, specifies that the OCSP status request extension will be - * added to the client hello and an 'OCSPResponse' event will be - * emitted on the socket before establishing a secure communication - */ - requestOCSP?: boolean - }); - /** - * Returns the bound address, the address family name and port of the underlying socket as reported by - * the operating system. - * @returns {any} - An object with three properties, e.g. { port: 12346, family: 'IPv4', address: '127.0.0.1' }. - */ - address(): { port: number; family: string; address: string }; - /** - * A boolean that is true if the peer certificate was signed by one of the specified CAs, otherwise false. - */ - authorized: boolean; - /** - * The reason why the peer's certificate has not been verified. - * This property becomes available only when tlsSocket.authorized === false. - */ - authorizationError: Error; - /** - * Static boolean value, always true. - * May be used to distinguish TLS sockets from regular ones. - */ - encrypted: boolean; - /** - * Returns an object representing the cipher name and the SSL/TLS protocol version of the current connection. - * @returns {CipherNameAndProtocol} - Returns an object representing the cipher name - * and the SSL/TLS protocol version of the current connection. - */ - getCipher(): CipherNameAndProtocol; - /** - * Returns an object representing the peer's certificate. - * The returned object has some properties corresponding to the field of the certificate. - * If detailed argument is true the full chain with issuer property will be returned, - * if false only the top certificate without issuer property. - * If the peer does not provide a certificate, it returns null or an empty object. - * @param {boolean} detailed - If true; the full chain with issuer property will be returned. - * @returns {PeerCertificate | DetailedPeerCertificate} - An object representing the peer's certificate. - */ - getPeerCertificate(detailed: true): DetailedPeerCertificate; - getPeerCertificate(detailed?: false): PeerCertificate; - getPeerCertificate(detailed?: boolean): PeerCertificate | DetailedPeerCertificate; - /** - * Could be used to speed up handshake establishment when reconnecting to the server. - * @returns {any} - ASN.1 encoded TLS session or undefined if none was negotiated. - */ - getSession(): any; - /** - * NOTE: Works only with client TLS sockets. - * Useful only for debugging, for session reuse provide session option to tls.connect(). - * @returns {any} - TLS session ticket or undefined if none was negotiated. - */ - getTLSTicket(): any; - /** - * The string representation of the local IP address. - */ - localAddress: string; - /** - * The numeric representation of the local port. - */ - localPort: number; - /** - * The string representation of the remote IP address. - * For example, '74.125.127.100' or '2001:4860:a005::68'. - */ - remoteAddress: string; - /** - * The string representation of the remote IP family. 'IPv4' or 'IPv6'. - */ - remoteFamily: string; - /** - * The numeric representation of the remote port. For example, 443. - */ - remotePort: number; - /** - * Initiate TLS renegotiation process. - * - * NOTE: Can be used to request peer's certificate after the secure connection has been established. - * ANOTHER NOTE: When running as the server, socket will be destroyed with an error after handshakeTimeout timeout. - * @param {TlsOptions} options - The options may contain the following fields: rejectUnauthorized, - * requestCert (See tls.createServer() for details). - * @param {Function} callback - callback(err) will be executed with null as err, once the renegotiation - * is successfully completed. - */ - renegotiate(options: TlsOptions, callback: (err: Error) => any): any; - /** - * Set maximum TLS fragment size (default and maximum value is: 16384, minimum is: 512). - * Smaller fragment size decreases buffering latency on the client: large fragments are buffered by - * the TLS layer until the entire fragment is received and its integrity is verified; - * large fragments can span multiple roundtrips, and their processing can be delayed due to packet - * loss or reordering. However, smaller fragments add extra TLS framing bytes and CPU overhead, - * which may decrease overall server throughput. - * @param {number} size - TLS fragment size (default and maximum value is: 16384, minimum is: 512). - * @returns {boolean} - Returns true on success, false otherwise. - */ - setMaxSendFragment(size: number): boolean; - - /** - * events.EventEmitter - * 1. OCSPResponse - * 2. secureConnect - */ - addListener(event: string, listener: (...args: any[]) => void): this; - addListener(event: "OCSPResponse", listener: (response: Buffer) => void): this; - addListener(event: "secureConnect", listener: () => void): this; - - emit(event: string | symbol, ...args: any[]): boolean; - emit(event: "OCSPResponse", response: Buffer): boolean; - emit(event: "secureConnect"): boolean; - - on(event: string, listener: (...args: any[]) => void): this; - on(event: "OCSPResponse", listener: (response: Buffer) => void): this; - on(event: "secureConnect", listener: () => void): this; - - once(event: string, listener: (...args: any[]) => void): this; - once(event: "OCSPResponse", listener: (response: Buffer) => void): this; - once(event: "secureConnect", listener: () => void): this; - - prependListener(event: string, listener: (...args: any[]) => void): this; - prependListener(event: "OCSPResponse", listener: (response: Buffer) => void): this; - prependListener(event: "secureConnect", listener: () => void): this; - - prependOnceListener(event: string, listener: (...args: any[]) => void): this; - prependOnceListener(event: "OCSPResponse", listener: (response: Buffer) => void): this; - prependOnceListener(event: "secureConnect", listener: () => void): this; - } - - export interface TlsOptions { - host?: string; - port?: number; - pfx?: string | Buffer[]; - key?: string | string[] | Buffer | any[]; - passphrase?: string; - cert?: string | string[] | Buffer | Buffer[]; - ca?: string | string[] | Buffer | Buffer[]; - crl?: string | string[]; - ciphers?: string; - honorCipherOrder?: boolean; - requestCert?: boolean; - rejectUnauthorized?: boolean; - NPNProtocols?: string[] | Buffer; - SNICallback?: (servername: string, cb: (err: Error, ctx: SecureContext) => any) => any; - ecdhCurve?: string; - dhparam?: string | Buffer; - handshakeTimeout?: number; - ALPNProtocols?: string[] | Buffer; - sessionTimeout?: number; - ticketKeys?: any; - sessionIdContext?: string; - secureProtocol?: string; - } - - export interface ConnectionOptions { - host?: string; - port?: number; - socket?: net.Socket; - pfx?: string | Buffer; - key?: string | string[] | Buffer | Buffer[]; - passphrase?: string; - cert?: string | string[] | Buffer | Buffer[]; - ca?: string | Buffer | Array; - rejectUnauthorized?: boolean; - NPNProtocols?: Array; - servername?: string; - path?: string; - ALPNProtocols?: Array; - checkServerIdentity?: (servername: string, cert: string | Buffer | Array) => any; - secureProtocol?: string; - secureContext?: Object; - session?: Buffer; - minDHSize?: number; - lookup?: (hostname: string, options: dns.LookupOneOptions, callback: (err: NodeJS.ErrnoException, address: string, family: number) => void) => void; - } - - export interface Server extends net.Server { - close(callback?: Function): Server; - address(): { port: number; family: string; address: string; }; - addContext(hostName: string, credentials: { - key: string; - cert: string; - ca: string; - }): void; - maxConnections: number; - connections: number; - - /** - * events.EventEmitter - * 1. tlsClientError - * 2. newSession - * 3. OCSPRequest - * 4. resumeSession - * 5. secureConnection - */ - addListener(event: string, listener: (...args: any[]) => void): this; - addListener(event: "tlsClientError", listener: (err: Error, tlsSocket: TLSSocket) => void): this; - addListener(event: "newSession", listener: (sessionId: any, sessionData: any, callback: (err: Error, resp: Buffer) => void) => void): this; - addListener(event: "OCSPRequest", listener: (certificate: Buffer, issuer: Buffer, callback: Function) => void): this; - addListener(event: "resumeSession", listener: (sessionId: any, callback: (err: Error, sessionData: any) => void) => void): this; - addListener(event: "secureConnection", listener: (tlsSocket: TLSSocket) => void): this; - - emit(event: string | symbol, ...args: any[]): boolean; - emit(event: "tlsClientError", err: Error, tlsSocket: TLSSocket): boolean; - emit(event: "newSession", sessionId: any, sessionData: any, callback: (err: Error, resp: Buffer) => void): boolean; - emit(event: "OCSPRequest", certificate: Buffer, issuer: Buffer, callback: Function): boolean; - emit(event: "resumeSession", sessionId: any, callback: (err: Error, sessionData: any) => void): boolean; - emit(event: "secureConnection", tlsSocket: TLSSocket): boolean; - - on(event: string, listener: (...args: any[]) => void): this; - on(event: "tlsClientError", listener: (err: Error, tlsSocket: TLSSocket) => void): this; - on(event: "newSession", listener: (sessionId: any, sessionData: any, callback: (err: Error, resp: Buffer) => void) => void): this; - on(event: "OCSPRequest", listener: (certificate: Buffer, issuer: Buffer, callback: Function) => void): this; - on(event: "resumeSession", listener: (sessionId: any, callback: (err: Error, sessionData: any) => void) => void): this; - on(event: "secureConnection", listener: (tlsSocket: TLSSocket) => void): this; - - once(event: string, listener: (...args: any[]) => void): this; - once(event: "tlsClientError", listener: (err: Error, tlsSocket: TLSSocket) => void): this; - once(event: "newSession", listener: (sessionId: any, sessionData: any, callback: (err: Error, resp: Buffer) => void) => void): this; - once(event: "OCSPRequest", listener: (certificate: Buffer, issuer: Buffer, callback: Function) => void): this; - once(event: "resumeSession", listener: (sessionId: any, callback: (err: Error, sessionData: any) => void) => void): this; - once(event: "secureConnection", listener: (tlsSocket: TLSSocket) => void): this; - - prependListener(event: string, listener: (...args: any[]) => void): this; - prependListener(event: "tlsClientError", listener: (err: Error, tlsSocket: TLSSocket) => void): this; - prependListener(event: "newSession", listener: (sessionId: any, sessionData: any, callback: (err: Error, resp: Buffer) => void) => void): this; - prependListener(event: "OCSPRequest", listener: (certificate: Buffer, issuer: Buffer, callback: Function) => void): this; - prependListener(event: "resumeSession", listener: (sessionId: any, callback: (err: Error, sessionData: any) => void) => void): this; - prependListener(event: "secureConnection", listener: (tlsSocket: TLSSocket) => void): this; - - prependOnceListener(event: string, listener: (...args: any[]) => void): this; - prependOnceListener(event: "tlsClientError", listener: (err: Error, tlsSocket: TLSSocket) => void): this; - prependOnceListener(event: "newSession", listener: (sessionId: any, sessionData: any, callback: (err: Error, resp: Buffer) => void) => void): this; - prependOnceListener(event: "OCSPRequest", listener: (certificate: Buffer, issuer: Buffer, callback: Function) => void): this; - prependOnceListener(event: "resumeSession", listener: (sessionId: any, callback: (err: Error, sessionData: any) => void) => void): this; - prependOnceListener(event: "secureConnection", listener: (tlsSocket: TLSSocket) => void): this; - } - - export interface ClearTextStream extends stream.Duplex { - authorized: boolean; - authorizationError: Error; - getPeerCertificate(): any; - getCipher: { - name: string; - version: string; - }; - address: { - port: number; - family: string; - address: string; - }; - remoteAddress: string; - remotePort: number; - } - - export interface SecurePair { - encrypted: any; - cleartext: any; - } - - export interface SecureContextOptions { - pfx?: string | Buffer; - key?: string | Buffer; - passphrase?: string; - cert?: string | Buffer; - ca?: string | Buffer; - crl?: string | string[]; - ciphers?: string; - honorCipherOrder?: boolean; - } - - export interface SecureContext { - context: any; - } - - export function createServer(options: TlsOptions, secureConnectionListener?: (socket: TLSSocket) => void): Server; - export function connect(options: ConnectionOptions, secureConnectionListener?: () => void): TLSSocket; - export function connect(port: number, host?: string, options?: ConnectionOptions, secureConnectListener?: () => void): TLSSocket; - export function connect(port: number, options?: ConnectionOptions, secureConnectListener?: () => void): TLSSocket; - export function createSecurePair(credentials?: crypto.Credentials, isServer?: boolean, requestCert?: boolean, rejectUnauthorized?: boolean): SecurePair; - export function createSecureContext(details: SecureContextOptions): SecureContext; -} - -declare module "crypto" { - export interface Certificate { - exportChallenge(spkac: string | Buffer): Buffer; - exportPublicKey(spkac: string | Buffer): Buffer; - verifySpkac(spkac: Buffer): boolean; - } - export var Certificate: { - new(): Certificate; - (): Certificate; - }; - - export var fips: boolean; - - export interface CredentialDetails { - pfx: string; - key: string; - passphrase: string; - cert: string; - ca: string | string[]; - crl: string | string[]; - ciphers: string; - } - export interface Credentials { context?: any; } - export function createCredentials(details: CredentialDetails): Credentials; - export function createHash(algorithm: string): Hash; - export function createHmac(algorithm: string, key: string | Buffer): Hmac; - - type Utf8AsciiLatin1Encoding = "utf8" | "ascii" | "latin1"; - type HexBase64Latin1Encoding = "latin1" | "hex" | "base64"; - type Utf8AsciiBinaryEncoding = "utf8" | "ascii" | "binary"; - type HexBase64BinaryEncoding = "binary" | "base64" | "hex"; - type ECDHKeyFormat = "compressed" | "uncompressed" | "hybrid"; - - export interface Hash extends NodeJS.ReadWriteStream { - update(data: string | Buffer): Hash; - update(data: string | Buffer, input_encoding: Utf8AsciiLatin1Encoding): Hash; - digest(): Buffer; - digest(encoding: HexBase64Latin1Encoding): string; - } - export interface Hmac extends NodeJS.ReadWriteStream { - update(data: string | Buffer): Hmac; - update(data: string | Buffer, input_encoding: Utf8AsciiLatin1Encoding): Hmac; - digest(): Buffer; - digest(encoding: HexBase64Latin1Encoding): string; - } - export function createCipher(algorithm: string, password: any): Cipher; - export function createCipheriv(algorithm: string, key: any, iv: any): Cipher; - export interface Cipher extends NodeJS.ReadWriteStream { - update(data: Buffer): Buffer; - update(data: string, input_encoding: Utf8AsciiBinaryEncoding): Buffer; - update(data: Buffer, input_encoding: any, output_encoding: HexBase64BinaryEncoding): string; - update(data: string, input_encoding: Utf8AsciiBinaryEncoding, output_encoding: HexBase64BinaryEncoding): string; - final(): Buffer; - final(output_encoding: string): string; - setAutoPadding(auto_padding?: boolean): void; - getAuthTag(): Buffer; - setAAD(buffer: Buffer): void; - } - export function createDecipher(algorithm: string, password: any): Decipher; - export function createDecipheriv(algorithm: string, key: any, iv: any): Decipher; - export interface Decipher extends NodeJS.ReadWriteStream { - update(data: Buffer): Buffer; - update(data: string, input_encoding: HexBase64BinaryEncoding): Buffer; - update(data: Buffer, input_encoding: any, output_encoding: Utf8AsciiBinaryEncoding): string; - update(data: string, input_encoding: HexBase64BinaryEncoding, output_encoding: Utf8AsciiBinaryEncoding): string; - final(): Buffer; - final(output_encoding: string): string; - setAutoPadding(auto_padding?: boolean): void; - setAuthTag(tag: Buffer): void; - setAAD(buffer: Buffer): void; - } - export function createSign(algorithm: string): Signer; - export interface Signer extends NodeJS.WritableStream { - update(data: string | Buffer): Signer; - update(data: string | Buffer, input_encoding: Utf8AsciiLatin1Encoding): Signer; - sign(private_key: string | { key: string; passphrase: string }): Buffer; - sign(private_key: string | { key: string; passphrase: string }, output_format: HexBase64Latin1Encoding): string; - } - export function createVerify(algorith: string): Verify; - export interface Verify extends NodeJS.WritableStream { - update(data: string | Buffer): Verify; - update(data: string | Buffer, input_encoding: Utf8AsciiLatin1Encoding): Verify; - verify(object: string | Object, signature: Buffer | DataView): boolean; - verify(object: string | Object, signature: string, signature_format: HexBase64Latin1Encoding): boolean; - // https://nodejs.org/api/crypto.html#crypto_verifier_verify_object_signature_signature_format - // The signature field accepts a TypedArray type, but it is only available starting ES2017 - } - export function createDiffieHellman(prime_length: number, generator?: number): DiffieHellman; - export function createDiffieHellman(prime: Buffer): DiffieHellman; - export function createDiffieHellman(prime: string, prime_encoding: HexBase64Latin1Encoding): DiffieHellman; - export function createDiffieHellman(prime: string, prime_encoding: HexBase64Latin1Encoding, generator: number | Buffer): DiffieHellman; - export function createDiffieHellman(prime: string, prime_encoding: HexBase64Latin1Encoding, generator: string, generator_encoding: HexBase64Latin1Encoding): DiffieHellman; - export interface DiffieHellman { - generateKeys(): Buffer; - generateKeys(encoding: HexBase64Latin1Encoding): string; - computeSecret(other_public_key: Buffer): Buffer; - computeSecret(other_public_key: string, input_encoding: HexBase64Latin1Encoding): Buffer; - computeSecret(other_public_key: string, input_encoding: HexBase64Latin1Encoding, output_encoding: HexBase64Latin1Encoding): string; - getPrime(): Buffer; - getPrime(encoding: HexBase64Latin1Encoding): string; - getGenerator(): Buffer; - getGenerator(encoding: HexBase64Latin1Encoding): string; - getPublicKey(): Buffer; - getPublicKey(encoding: HexBase64Latin1Encoding): string; - getPrivateKey(): Buffer; - getPrivateKey(encoding: HexBase64Latin1Encoding): string; - setPublicKey(public_key: Buffer): void; - setPublicKey(public_key: string, encoding: string): void; - setPrivateKey(private_key: Buffer): void; - setPrivateKey(private_key: string, encoding: string): void; - verifyError: number; - } - export function getDiffieHellman(group_name: string): DiffieHellman; - export function pbkdf2(password: string | Buffer, salt: string | Buffer, iterations: number, keylen: number, digest: string, callback: (err: Error, derivedKey: Buffer) => any): void; - export function pbkdf2Sync(password: string | Buffer, salt: string | Buffer, iterations: number, keylen: number, digest: string): Buffer; - export function randomBytes(size: number): Buffer; - export function randomBytes(size: number, callback: (err: Error, buf: Buffer) => void): void; - export function pseudoRandomBytes(size: number): Buffer; - export function pseudoRandomBytes(size: number, callback: (err: Error, buf: Buffer) => void): void; - export function randomFillSync(buffer: Buffer | Uint8Array, offset?: number, size?: number): Buffer; - export function randomFill(buffer: Buffer, callback: (err: Error, buf: Buffer) => void): void; - export function randomFill(buffer: Uint8Array, callback: (err: Error, buf: Uint8Array) => void): void; - export function randomFill(buffer: Buffer, offset: number, callback: (err: Error, buf: Buffer) => void): void; - export function randomFill(buffer: Uint8Array, offset: number, callback: (err: Error, buf: Uint8Array) => void): void; - export function randomFill(buffer: Buffer, offset: number, size: number, callback: (err: Error, buf: Buffer) => void): void; - export function randomFill(buffer: Uint8Array, offset: number, size: number, callback: (err: Error, buf: Uint8Array) => void): void; - export interface RsaPublicKey { - key: string; - padding?: number; - } - export interface RsaPrivateKey { - key: string; - passphrase?: string; - padding?: number; - } - export function publicEncrypt(public_key: string | RsaPublicKey, buffer: Buffer): Buffer; - export function privateDecrypt(private_key: string | RsaPrivateKey, buffer: Buffer): Buffer; - export function privateEncrypt(private_key: string | RsaPrivateKey, buffer: Buffer): Buffer; - export function publicDecrypt(public_key: string | RsaPublicKey, buffer: Buffer): Buffer; - export function getCiphers(): string[]; - export function getCurves(): string[]; - export function getHashes(): string[]; - export interface ECDH { - generateKeys(): Buffer; - generateKeys(encoding: HexBase64Latin1Encoding): string; - generateKeys(encoding: HexBase64Latin1Encoding, format: ECDHKeyFormat): string; - computeSecret(other_public_key: Buffer): Buffer; - computeSecret(other_public_key: string, input_encoding: HexBase64Latin1Encoding): Buffer; - computeSecret(other_public_key: string, input_encoding: HexBase64Latin1Encoding, output_encoding: HexBase64Latin1Encoding): string; - getPrivateKey(): Buffer; - getPrivateKey(encoding: HexBase64Latin1Encoding): string; - getPublicKey(): Buffer; - getPublicKey(encoding: HexBase64Latin1Encoding): string; - getPublicKey(encoding: HexBase64Latin1Encoding, format: ECDHKeyFormat): string; - setPrivateKey(private_key: Buffer): void; - setPrivateKey(private_key: string, encoding: HexBase64Latin1Encoding): void; - } - export function createECDH(curve_name: string): ECDH; - export function timingSafeEqual(a: Buffer, b: Buffer): boolean; - export var DEFAULT_ENCODING: string; -} - -declare module "stream" { - import * as events from "events"; - - class internal extends events.EventEmitter { - pipe(destination: T, options?: { end?: boolean; }): T; - } - - namespace internal { - export class Stream extends internal { } - - export interface ReadableOptions { - highWaterMark?: number; - encoding?: string; - objectMode?: boolean; - read?: (this: Readable, size?: number) => any; - destroy?: (error?: Error) => any; - } - - export class Readable extends Stream implements NodeJS.ReadableStream { - readable: boolean; - constructor(opts?: ReadableOptions); - _read(size: number): void; - read(size?: number): any; - setEncoding(encoding: string): this; - pause(): this; - resume(): this; - isPaused(): boolean; - unpipe(destination?: T): this; - unshift(chunk: any): void; - wrap(oldStream: NodeJS.ReadableStream): Readable; - push(chunk: any, encoding?: string): boolean; - destroy(error?: Error): void; - - /** - * Event emitter - * The defined events on documents including: - * 1. close - * 2. data - * 3. end - * 4. readable - * 5. error - */ - addListener(event: string, listener: (...args: any[]) => void): this; - addListener(event: string, listener: (...args: any[]) => void): this; - addListener(event: "close", listener: () => void): this; - addListener(event: "data", listener: (chunk: Buffer | string) => void): this; - addListener(event: "end", listener: () => void): this; - addListener(event: "readable", listener: () => void): this; - addListener(event: "error", listener: (err: Error) => void): this; - - emit(event: string | symbol, ...args: any[]): boolean; - emit(event: "close"): boolean; - emit(event: "data", chunk: Buffer | string): boolean; - emit(event: "end"): boolean; - emit(event: "readable"): boolean; - emit(event: "error", err: Error): boolean; - - on(event: string, listener: (...args: any[]) => void): this; - on(event: "close", listener: () => void): this; - on(event: "data", listener: (chunk: Buffer | string) => void): this; - on(event: "end", listener: () => void): this; - on(event: "readable", listener: () => void): this; - on(event: "error", listener: (err: Error) => void): this; - - once(event: string, listener: (...args: any[]) => void): this; - once(event: "close", listener: () => void): this; - once(event: "data", listener: (chunk: Buffer | string) => void): this; - once(event: "end", listener: () => void): this; - once(event: "readable", listener: () => void): this; - once(event: "error", listener: (err: Error) => void): this; - - prependListener(event: string, listener: (...args: any[]) => void): this; - prependListener(event: "close", listener: () => void): this; - prependListener(event: "data", listener: (chunk: Buffer | string) => void): this; - prependListener(event: "end", listener: () => void): this; - prependListener(event: "readable", listener: () => void): this; - prependListener(event: "error", listener: (err: Error) => void): this; - - prependOnceListener(event: string, listener: (...args: any[]) => void): this; - prependOnceListener(event: "close", listener: () => void): this; - prependOnceListener(event: "data", listener: (chunk: Buffer | string) => void): this; - prependOnceListener(event: "end", listener: () => void): this; - prependOnceListener(event: "readable", listener: () => void): this; - prependOnceListener(event: "error", listener: (err: Error) => void): this; - - removeListener(event: string, listener: (...args: any[]) => void): this; - removeListener(event: "close", listener: () => void): this; - removeListener(event: "data", listener: (chunk: Buffer | string) => void): this; - removeListener(event: "end", listener: () => void): this; - removeListener(event: "readable", listener: () => void): this; - removeListener(event: "error", listener: (err: Error) => void): this; - } - - export interface WritableOptions { - highWaterMark?: number; - decodeStrings?: boolean; - objectMode?: boolean; - write?: (chunk: string | Buffer, encoding: string, callback: Function) => any; - writev?: (chunks: Array<{ chunk: string | Buffer, encoding: string }>, callback: Function) => any; - destroy?: (error?: Error) => any; - } - - export class Writable extends Stream implements NodeJS.WritableStream { - writable: boolean; - constructor(opts?: WritableOptions); - _write(chunk: any, encoding: string, callback: Function): void; - _destroy(err: Error, callback: Function): void; - _final(callback: Function): void; - write(chunk: any, cb?: Function): boolean; - write(chunk: any, encoding?: string, cb?: Function): boolean; - setDefaultEncoding(encoding: string): this; - end(): void; - end(chunk: any, cb?: Function): void; - end(chunk: any, encoding?: string, cb?: Function): void; - cork(): void; - uncork(): void; - destroy(error?: Error): void; - - /** - * Event emitter - * The defined events on documents including: - * 1. close - * 2. drain - * 3. error - * 4. finish - * 5. pipe - * 6. unpipe - */ - addListener(event: string, listener: (...args: any[]) => void): this; - addListener(event: "close", listener: () => void): this; - addListener(event: "drain", listener: () => void): this; - addListener(event: "error", listener: (err: Error) => void): this; - addListener(event: "finish", listener: () => void): this; - addListener(event: "pipe", listener: (src: Readable) => void): this; - addListener(event: "unpipe", listener: (src: Readable) => void): this; - - emit(event: string | symbol, ...args: any[]): boolean; - emit(event: "close"): boolean; - emit(event: "drain", chunk: Buffer | string): boolean; - emit(event: "error", err: Error): boolean; - emit(event: "finish"): boolean; - emit(event: "pipe", src: Readable): boolean; - emit(event: "unpipe", src: Readable): boolean; - - on(event: string, listener: (...args: any[]) => void): this; - on(event: "close", listener: () => void): this; - on(event: "drain", listener: () => void): this; - on(event: "error", listener: (err: Error) => void): this; - on(event: "finish", listener: () => void): this; - on(event: "pipe", listener: (src: Readable) => void): this; - on(event: "unpipe", listener: (src: Readable) => void): this; - - once(event: string, listener: (...args: any[]) => void): this; - once(event: "close", listener: () => void): this; - once(event: "drain", listener: () => void): this; - once(event: "error", listener: (err: Error) => void): this; - once(event: "finish", listener: () => void): this; - once(event: "pipe", listener: (src: Readable) => void): this; - once(event: "unpipe", listener: (src: Readable) => void): this; - - prependListener(event: string, listener: (...args: any[]) => void): this; - prependListener(event: "close", listener: () => void): this; - prependListener(event: "drain", listener: () => void): this; - prependListener(event: "error", listener: (err: Error) => void): this; - prependListener(event: "finish", listener: () => void): this; - prependListener(event: "pipe", listener: (src: Readable) => void): this; - prependListener(event: "unpipe", listener: (src: Readable) => void): this; - - prependOnceListener(event: string, listener: (...args: any[]) => void): this; - prependOnceListener(event: "close", listener: () => void): this; - prependOnceListener(event: "drain", listener: () => void): this; - prependOnceListener(event: "error", listener: (err: Error) => void): this; - prependOnceListener(event: "finish", listener: () => void): this; - prependOnceListener(event: "pipe", listener: (src: Readable) => void): this; - prependOnceListener(event: "unpipe", listener: (src: Readable) => void): this; - - removeListener(event: string, listener: (...args: any[]) => void): this; - removeListener(event: "close", listener: () => void): this; - removeListener(event: "drain", listener: () => void): this; - removeListener(event: "error", listener: (err: Error) => void): this; - removeListener(event: "finish", listener: () => void): this; - removeListener(event: "pipe", listener: (src: Readable) => void): this; - removeListener(event: "unpipe", listener: (src: Readable) => void): this; - } - - export interface DuplexOptions extends ReadableOptions, WritableOptions { - allowHalfOpen?: boolean; - readableObjectMode?: boolean; - writableObjectMode?: boolean; - } - - // Note: Duplex extends both Readable and Writable. - export class Duplex extends Readable implements Writable { - writable: boolean; - constructor(opts?: DuplexOptions); - _write(chunk: any, encoding: string, callback: Function): void; - _destroy(err: Error, callback: Function): void; - _final(callback: Function): void; - write(chunk: any, cb?: Function): boolean; - write(chunk: any, encoding?: string, cb?: Function): boolean; - setDefaultEncoding(encoding: string): this; - end(): void; - end(chunk: any, cb?: Function): void; - end(chunk: any, encoding?: string, cb?: Function): void; - cork(): void; - uncork(): void; - } - - export interface TransformOptions extends DuplexOptions { - transform?: (chunk: string | Buffer, encoding: string, callback: Function) => any; - flush?: (callback: Function) => any; - } - - export class Transform extends Duplex { - constructor(opts?: TransformOptions); - _transform(chunk: any, encoding: string, callback: Function): void; - destroy(error?: Error): void; - } - - export class PassThrough extends Transform { } - } - - export = internal; -} - -declare module "util" { - export interface InspectOptions extends NodeJS.InspectOptions { } - export function format(format: any, ...param: any[]): string; - export function debug(string: string): void; - export function error(...param: any[]): void; - export function puts(...param: any[]): void; - export function print(...param: any[]): void; - export function log(string: string): void; - export var inspect: { - (object: any, showHidden?: boolean, depth?: number | null, color?: boolean): string; - (object: any, options: InspectOptions): string; - colors: { - [color: string]: [number, number] | undefined - } - styles: { - [style: string]: string | undefined - } - defaultOptions: InspectOptions; - custom: symbol; - }; - export function isArray(object: any): object is any[]; - export function isRegExp(object: any): object is RegExp; - export function isDate(object: any): object is Date; - export function isError(object: any): object is Error; - export function inherits(constructor: any, superConstructor: any): void; - export function debuglog(key: string): (msg: string, ...param: any[]) => void; - export function isBoolean(object: any): object is boolean; - export function isBuffer(object: any): object is Buffer; - export function isFunction(object: any): boolean; - export function isNull(object: any): object is null; - export function isNullOrUndefined(object: any): object is null | undefined; - export function isNumber(object: any): object is number; - export function isObject(object: any): boolean; - export function isPrimitive(object: any): boolean; - export function isString(object: any): object is string; - export function isSymbol(object: any): object is symbol; - export function isUndefined(object: any): object is undefined; - export function deprecate(fn: T, message: string): T; - - export interface CustomPromisify extends Function { - __promisify__: TCustom; - } - - export function callbackify(fn: () => Promise): (callback: (err: NodeJS.ErrnoException) => void) => void; - export function callbackify(fn: () => Promise): (callback: (err: NodeJS.ErrnoException, result: TResult) => void) => void; - export function callbackify(fn: (arg1: T1) => Promise): (arg1: T1, callback: (err: NodeJS.ErrnoException) => void) => void; - export function callbackify(fn: (arg1: T1) => Promise): (arg1: T1, callback: (err: NodeJS.ErrnoException, result: TResult) => void) => void; - export function callbackify(fn: (arg1: T1, arg2: T2) => Promise): (arg1: T1, arg2: T2, callback: (err: NodeJS.ErrnoException) => void) => void; - export function callbackify(fn: (arg1: T1, arg2: T2) => Promise): (arg1: T1, arg2: T2, callback: (err: NodeJS.ErrnoException, result: TResult) => void) => void; - export function callbackify(fn: (arg1: T1, arg2: T2, arg3: T3) => Promise): (arg1: T1, arg2: T2, arg3: T3, callback: (err: NodeJS.ErrnoException) => void) => void; - export function callbackify(fn: (arg1: T1, arg2: T2, arg3: T3) => Promise): (arg1: T1, arg2: T2, arg3: T3, callback: (err: NodeJS.ErrnoException, result: TResult) => void) => void; - export function callbackify(fn: (arg1: T1, arg2: T2, arg3: T3, arg4: T4) => Promise): (arg1: T1, arg2: T2, arg3: T3, arg4: T4, callback: (err: NodeJS.ErrnoException) => void) => void; - export function callbackify(fn: (arg1: T1, arg2: T2, arg3: T3, arg4: T4) => Promise): (arg1: T1, arg2: T2, arg3: T3, arg4: T4, callback: (err: NodeJS.ErrnoException, result: TResult) => void) => void; - export function callbackify(fn: (arg1: T1, arg2: T2, arg3: T3, arg4: T4, arg5: T5) => Promise): (arg1: T1, arg2: T2, arg3: T3, arg4: T4, arg5: T5, callback: (err: NodeJS.ErrnoException) => void) => void; - export function callbackify(fn: (arg1: T1, arg2: T2, arg3: T3, arg4: T4, arg5: T5) => Promise): (arg1: T1, arg2: T2, arg3: T3, arg4: T4, arg5: T5, callback: (err: NodeJS.ErrnoException, result: TResult) => void) => void; - export function callbackify(fn: (arg1: T1, arg2: T2, arg3: T3, arg4: T4, arg5: T5, arg6: T6) => Promise): (arg1: T1, arg2: T2, arg3: T3, arg4: T4, arg5: T5, arg6: T6, callback: (err: NodeJS.ErrnoException) => void) => void; - export function callbackify(fn: (arg1: T1, arg2: T2, arg3: T3, arg4: T4, arg5: T5, arg6: T6) => Promise): (arg1: T1, arg2: T2, arg3: T3, arg4: T4, arg5: T5, arg6: T6, callback: (err: NodeJS.ErrnoException, result: TResult) => void) => void; - - export function promisify(fn: CustomPromisify): TCustom; - export function promisify(fn: (arg1: T1, callback: (err: NodeJS.ErrnoException, result: TResult) => void) => void): (arg1: T1) => Promise; - export function promisify(fn: (arg1: T1, callback: (err: NodeJS.ErrnoException) => void) => void): (arg1: T1) => Promise; - export function promisify(fn: (arg1: T1, arg2: T2, callback: (err: NodeJS.ErrnoException, result: TResult) => void) => void): (arg1: T1, arg2: T2) => Promise; - export function promisify(fn: (arg1: T1, arg2: T2, callback: (err: NodeJS.ErrnoException) => void) => void): (arg1: T1, arg2: T2) => Promise; - export function promisify(fn: (arg1: T1, arg2: T2, arg3: T3, callback: (err: NodeJS.ErrnoException, result: TResult) => void) => void): (arg1: T1, arg2: T2, arg3: T3) => Promise; - export function promisify(fn: (arg1: T1, arg2: T2, arg3: T3, callback: (err: NodeJS.ErrnoException) => void) => void): (arg1: T1, arg2: T2, arg3: T3) => Promise; - export function promisify(fn: (arg1: T1, arg2: T2, arg3: T3, arg4: T4, callback: (err: NodeJS.ErrnoException, result: TResult) => void) => void): (arg1: T1, arg2: T2, arg3: T3, arg4: T4) => Promise; - export function promisify(fn: (arg1: T1, arg2: T2, arg3: T3, arg4: T4, callback: (err: NodeJS.ErrnoException) => void) => void): (arg1: T1, arg2: T2, arg3: T3, arg4: T4) => Promise; - export function promisify(fn: (arg1: T1, arg2: T2, arg3: T3, arg4: T4, arg5: T5, callback: (err: NodeJS.ErrnoException, result: TResult) => void) => void): (arg1: T1, arg2: T2, arg3: T3, arg4: T4, arg5: T5) => Promise; - export function promisify(fn: (arg1: T1, arg2: T2, arg3: T3, arg4: T4, arg5: T5, callback: (err: NodeJS.ErrnoException) => void) => void): (arg1: T1, arg2: T2, arg3: T3, arg4: T4, arg5: T5) => Promise; - export function promisify(fn: Function): Function; - export namespace promisify { - const custom: symbol; - } -} - -declare module "assert" { - function internal(value: any, message?: string): void; - namespace internal { - export class AssertionError implements Error { - name: string; - message: string; - actual: any; - expected: any; - operator: string; - generatedMessage: boolean; - - constructor(options?: { - message?: string; actual?: any; expected?: any; - operator?: string; stackStartFunction?: Function - }); - } - - export function fail(message: string): void; - export function fail(actual: any, expected: any, message?: string, operator?: string): void; - export function ok(value: any, message?: string): void; - export function equal(actual: any, expected: any, message?: string): void; - export function notEqual(actual: any, expected: any, message?: string): void; - export function deepEqual(actual: any, expected: any, message?: string): void; - export function notDeepEqual(acutal: any, expected: any, message?: string): void; - export function strictEqual(actual: any, expected: any, message?: string): void; - export function notStrictEqual(actual: any, expected: any, message?: string): void; - export function deepStrictEqual(actual: any, expected: any, message?: string): void; - export function notDeepStrictEqual(actual: any, expected: any, message?: string): void; - - export function throws(block: Function, message?: string): void; - export function throws(block: Function, error: Function, message?: string): void; - export function throws(block: Function, error: RegExp, message?: string): void; - export function throws(block: Function, error: (err: any) => boolean, message?: string): void; - - export function doesNotThrow(block: Function, message?: string): void; - export function doesNotThrow(block: Function, error: Function, message?: string): void; - export function doesNotThrow(block: Function, error: RegExp, message?: string): void; - export function doesNotThrow(block: Function, error: (err: any) => boolean, message?: string): void; - - export function ifError(value: any): void; - } - - export = internal; -} - -declare module "tty" { - import * as net from "net"; - - export function isatty(fd: number): boolean; - export interface ReadStream extends net.Socket { - isRaw: boolean; - setRawMode(mode: boolean): void; - isTTY: boolean; - } - export interface WriteStream extends net.Socket { - columns: number; - rows: number; - isTTY: boolean; - } -} - -declare module "domain" { - import * as events from "events"; - - export class Domain extends events.EventEmitter implements NodeJS.Domain { - run(fn: Function): void; - add(emitter: events.EventEmitter): void; - remove(emitter: events.EventEmitter): void; - bind(cb: (err: Error, data: any) => any): any; - intercept(cb: (data: any) => any): any; - dispose(): void; - members: any[]; - enter(): void; - exit(): void; - } - - export function create(): Domain; -} - -declare module "constants" { - export var E2BIG: number; - export var EACCES: number; - export var EADDRINUSE: number; - export var EADDRNOTAVAIL: number; - export var EAFNOSUPPORT: number; - export var EAGAIN: number; - export var EALREADY: number; - export var EBADF: number; - export var EBADMSG: number; - export var EBUSY: number; - export var ECANCELED: number; - export var ECHILD: number; - export var ECONNABORTED: number; - export var ECONNREFUSED: number; - export var ECONNRESET: number; - export var EDEADLK: number; - export var EDESTADDRREQ: number; - export var EDOM: number; - export var EEXIST: number; - export var EFAULT: number; - export var EFBIG: number; - export var EHOSTUNREACH: number; - export var EIDRM: number; - export var EILSEQ: number; - export var EINPROGRESS: number; - export var EINTR: number; - export var EINVAL: number; - export var EIO: number; - export var EISCONN: number; - export var EISDIR: number; - export var ELOOP: number; - export var EMFILE: number; - export var EMLINK: number; - export var EMSGSIZE: number; - export var ENAMETOOLONG: number; - export var ENETDOWN: number; - export var ENETRESET: number; - export var ENETUNREACH: number; - export var ENFILE: number; - export var ENOBUFS: number; - export var ENODATA: number; - export var ENODEV: number; - export var ENOENT: number; - export var ENOEXEC: number; - export var ENOLCK: number; - export var ENOLINK: number; - export var ENOMEM: number; - export var ENOMSG: number; - export var ENOPROTOOPT: number; - export var ENOSPC: number; - export var ENOSR: number; - export var ENOSTR: number; - export var ENOSYS: number; - export var ENOTCONN: number; - export var ENOTDIR: number; - export var ENOTEMPTY: number; - export var ENOTSOCK: number; - export var ENOTSUP: number; - export var ENOTTY: number; - export var ENXIO: number; - export var EOPNOTSUPP: number; - export var EOVERFLOW: number; - export var EPERM: number; - export var EPIPE: number; - export var EPROTO: number; - export var EPROTONOSUPPORT: number; - export var EPROTOTYPE: number; - export var ERANGE: number; - export var EROFS: number; - export var ESPIPE: number; - export var ESRCH: number; - export var ETIME: number; - export var ETIMEDOUT: number; - export var ETXTBSY: number; - export var EWOULDBLOCK: number; - export var EXDEV: number; - export var WSAEINTR: number; - export var WSAEBADF: number; - export var WSAEACCES: number; - export var WSAEFAULT: number; - export var WSAEINVAL: number; - export var WSAEMFILE: number; - export var WSAEWOULDBLOCK: number; - export var WSAEINPROGRESS: number; - export var WSAEALREADY: number; - export var WSAENOTSOCK: number; - export var WSAEDESTADDRREQ: number; - export var WSAEMSGSIZE: number; - export var WSAEPROTOTYPE: number; - export var WSAENOPROTOOPT: number; - export var WSAEPROTONOSUPPORT: number; - export var WSAESOCKTNOSUPPORT: number; - export var WSAEOPNOTSUPP: number; - export var WSAEPFNOSUPPORT: number; - export var WSAEAFNOSUPPORT: number; - export var WSAEADDRINUSE: number; - export var WSAEADDRNOTAVAIL: number; - export var WSAENETDOWN: number; - export var WSAENETUNREACH: number; - export var WSAENETRESET: number; - export var WSAECONNABORTED: number; - export var WSAECONNRESET: number; - export var WSAENOBUFS: number; - export var WSAEISCONN: number; - export var WSAENOTCONN: number; - export var WSAESHUTDOWN: number; - export var WSAETOOMANYREFS: number; - export var WSAETIMEDOUT: number; - export var WSAECONNREFUSED: number; - export var WSAELOOP: number; - export var WSAENAMETOOLONG: number; - export var WSAEHOSTDOWN: number; - export var WSAEHOSTUNREACH: number; - export var WSAENOTEMPTY: number; - export var WSAEPROCLIM: number; - export var WSAEUSERS: number; - export var WSAEDQUOT: number; - export var WSAESTALE: number; - export var WSAEREMOTE: number; - export var WSASYSNOTREADY: number; - export var WSAVERNOTSUPPORTED: number; - export var WSANOTINITIALISED: number; - export var WSAEDISCON: number; - export var WSAENOMORE: number; - export var WSAECANCELLED: number; - export var WSAEINVALIDPROCTABLE: number; - export var WSAEINVALIDPROVIDER: number; - export var WSAEPROVIDERFAILEDINIT: number; - export var WSASYSCALLFAILURE: number; - export var WSASERVICE_NOT_FOUND: number; - export var WSATYPE_NOT_FOUND: number; - export var WSA_E_NO_MORE: number; - export var WSA_E_CANCELLED: number; - export var WSAEREFUSED: number; - export var SIGHUP: number; - export var SIGINT: number; - export var SIGILL: number; - export var SIGABRT: number; - export var SIGFPE: number; - export var SIGKILL: number; - export var SIGSEGV: number; - export var SIGTERM: number; - export var SIGBREAK: number; - export var SIGWINCH: number; - export var SSL_OP_ALL: number; - export var SSL_OP_ALLOW_UNSAFE_LEGACY_RENEGOTIATION: number; - export var SSL_OP_CIPHER_SERVER_PREFERENCE: number; - export var SSL_OP_CISCO_ANYCONNECT: number; - export var SSL_OP_COOKIE_EXCHANGE: number; - export var SSL_OP_CRYPTOPRO_TLSEXT_BUG: number; - export var SSL_OP_DONT_INSERT_EMPTY_FRAGMENTS: number; - export var SSL_OP_EPHEMERAL_RSA: number; - export var SSL_OP_LEGACY_SERVER_CONNECT: number; - export var SSL_OP_MICROSOFT_BIG_SSLV3_BUFFER: number; - export var SSL_OP_MICROSOFT_SESS_ID_BUG: number; - export var SSL_OP_MSIE_SSLV2_RSA_PADDING: number; - export var SSL_OP_NETSCAPE_CA_DN_BUG: number; - export var SSL_OP_NETSCAPE_CHALLENGE_BUG: number; - export var SSL_OP_NETSCAPE_DEMO_CIPHER_CHANGE_BUG: number; - export var SSL_OP_NETSCAPE_REUSE_CIPHER_CHANGE_BUG: number; - export var SSL_OP_NO_COMPRESSION: number; - export var SSL_OP_NO_QUERY_MTU: number; - export var SSL_OP_NO_SESSION_RESUMPTION_ON_RENEGOTIATION: number; - export var SSL_OP_NO_SSLv2: number; - export var SSL_OP_NO_SSLv3: number; - export var SSL_OP_NO_TICKET: number; - export var SSL_OP_NO_TLSv1: number; - export var SSL_OP_NO_TLSv1_1: number; - export var SSL_OP_NO_TLSv1_2: number; - export var SSL_OP_PKCS1_CHECK_1: number; - export var SSL_OP_PKCS1_CHECK_2: number; - export var SSL_OP_SINGLE_DH_USE: number; - export var SSL_OP_SINGLE_ECDH_USE: number; - export var SSL_OP_SSLEAY_080_CLIENT_DH_BUG: number; - export var SSL_OP_SSLREF2_REUSE_CERT_TYPE_BUG: number; - export var SSL_OP_TLS_BLOCK_PADDING_BUG: number; - export var SSL_OP_TLS_D5_BUG: number; - export var SSL_OP_TLS_ROLLBACK_BUG: number; - export var ENGINE_METHOD_DSA: number; - export var ENGINE_METHOD_DH: number; - export var ENGINE_METHOD_RAND: number; - export var ENGINE_METHOD_ECDH: number; - export var ENGINE_METHOD_ECDSA: number; - export var ENGINE_METHOD_CIPHERS: number; - export var ENGINE_METHOD_DIGESTS: number; - export var ENGINE_METHOD_STORE: number; - export var ENGINE_METHOD_PKEY_METHS: number; - export var ENGINE_METHOD_PKEY_ASN1_METHS: number; - export var ENGINE_METHOD_ALL: number; - export var ENGINE_METHOD_NONE: number; - export var DH_CHECK_P_NOT_SAFE_PRIME: number; - export var DH_CHECK_P_NOT_PRIME: number; - export var DH_UNABLE_TO_CHECK_GENERATOR: number; - export var DH_NOT_SUITABLE_GENERATOR: number; - export var NPN_ENABLED: number; - export var RSA_PKCS1_PADDING: number; - export var RSA_SSLV23_PADDING: number; - export var RSA_NO_PADDING: number; - export var RSA_PKCS1_OAEP_PADDING: number; - export var RSA_X931_PADDING: number; - export var RSA_PKCS1_PSS_PADDING: number; - export var POINT_CONVERSION_COMPRESSED: number; - export var POINT_CONVERSION_UNCOMPRESSED: number; - export var POINT_CONVERSION_HYBRID: number; - export var O_RDONLY: number; - export var O_WRONLY: number; - export var O_RDWR: number; - export var S_IFMT: number; - export var S_IFREG: number; - export var S_IFDIR: number; - export var S_IFCHR: number; - export var S_IFBLK: number; - export var S_IFIFO: number; - export var S_IFSOCK: number; - export var S_IRWXU: number; - export var S_IRUSR: number; - export var S_IWUSR: number; - export var S_IXUSR: number; - export var S_IRWXG: number; - export var S_IRGRP: number; - export var S_IWGRP: number; - export var S_IXGRP: number; - export var S_IRWXO: number; - export var S_IROTH: number; - export var S_IWOTH: number; - export var S_IXOTH: number; - export var S_IFLNK: number; - export var O_CREAT: number; - export var O_EXCL: number; - export var O_NOCTTY: number; - export var O_DIRECTORY: number; - export var O_NOATIME: number; - export var O_NOFOLLOW: number; - export var O_SYNC: number; - export var O_SYMLINK: number; - export var O_DIRECT: number; - export var O_NONBLOCK: number; - export var O_TRUNC: number; - export var O_APPEND: number; - export var F_OK: number; - export var R_OK: number; - export var W_OK: number; - export var X_OK: number; - export var UV_UDP_REUSEADDR: number; - export var SIGQUIT: number; - export var SIGTRAP: number; - export var SIGIOT: number; - export var SIGBUS: number; - export var SIGUSR1: number; - export var SIGUSR2: number; - export var SIGPIPE: number; - export var SIGALRM: number; - export var SIGCHLD: number; - export var SIGSTKFLT: number; - export var SIGCONT: number; - export var SIGSTOP: number; - export var SIGTSTP: number; - export var SIGTTIN: number; - export var SIGTTOU: number; - export var SIGURG: number; - export var SIGXCPU: number; - export var SIGXFSZ: number; - export var SIGVTALRM: number; - export var SIGPROF: number; - export var SIGIO: number; - export var SIGPOLL: number; - export var SIGPWR: number; - export var SIGSYS: number; - export var SIGUNUSED: number; - export var defaultCoreCipherList: string; - export var defaultCipherList: string; - export var ENGINE_METHOD_RSA: number; - export var ALPN_ENABLED: number; -} - -declare module "module" { - export = NodeJS.Module; -} - -declare module "process" { - export = process; -} - -declare module "v8" { - interface HeapSpaceInfo { - space_name: string; - space_size: number; - space_used_size: number; - space_available_size: number; - physical_space_size: number; - } - - // ** Signifies if the --zap_code_space option is enabled or not. 1 == enabled, 0 == disabled. */ - type DoesZapCodeSpaceFlag = 0 | 1; - - interface HeapInfo { - total_heap_size: number; - total_heap_size_executable: number; - total_physical_size: number; - total_available_size: number; - used_heap_size: number; - heap_size_limit: number; - malloced_memory: number; - peak_malloced_memory: number; - does_zap_garbage: DoesZapCodeSpaceFlag; - } - - export function getHeapStatistics(): HeapInfo; - export function getHeapSpaceStatistics(): HeapSpaceInfo[]; - export function setFlagsFromString(flags: string): void; -} - -declare module "timers" { - export function setTimeout(callback: (...args: any[]) => void, ms: number, ...args: any[]): NodeJS.Timer; - export namespace setTimeout { - export function __promisify__(ms: number): Promise; - export function __promisify__(ms: number, value: T): Promise; - } - export function clearTimeout(timeoutId: NodeJS.Timer): void; - export function setInterval(callback: (...args: any[]) => void, ms: number, ...args: any[]): NodeJS.Timer; - export function clearInterval(intervalId: NodeJS.Timer): void; - export function setImmediate(callback: (...args: any[]) => void, ...args: any[]): any; - export namespace setImmediate { - export function __promisify__(): Promise; - export function __promisify__(value: T): Promise; - } - export function clearImmediate(immediateId: any): void; -} - -declare module "console" { - export = console; -} - -/** - * _debugger module is not documented. - * Source code is at https://github.com/nodejs/node/blob/master/lib/_debugger.js - */ -declare module "_debugger" { - export interface Packet { - raw: string; - headers: string[]; - body: Message; - } - - export interface Message { - seq: number; - type: string; - } - - export interface RequestInfo { - command: string; - arguments: any; - } - - export interface Request extends Message, RequestInfo { - } - - export interface Event extends Message { - event: string; - body?: any; - } - - export interface Response extends Message { - request_seq: number; - success: boolean; - /** Contains error message if success === false. */ - message?: string; - /** Contains message body if success === true. */ - body?: any; - } - - export interface BreakpointMessageBody { - type: string; - target: number; - line: number; - } - - export class Protocol { - res: Packet; - state: string; - execute(data: string): void; - serialize(rq: Request): string; - onResponse: (pkt: Packet) => void; - } - - export var NO_FRAME: number; - export var port: number; - - export interface ScriptDesc { - name: string; - id: number; - isNative?: boolean; - handle?: number; - type: string; - lineOffset?: number; - columnOffset?: number; - lineCount?: number; - } - - export interface Breakpoint { - id: number; - scriptId: number; - script: ScriptDesc; - line: number; - condition?: string; - scriptReq?: string; - } - - export interface RequestHandler { - (err: boolean, body: Message, res: Packet): void; - request_seq?: number; - } - - export interface ResponseBodyHandler { - (err: boolean, body?: any): void; - request_seq?: number; - } - - export interface ExceptionInfo { - text: string; - } - - export interface BreakResponse { - script?: ScriptDesc; - exception?: ExceptionInfo; - sourceLine: number; - sourceLineText: string; - sourceColumn: number; - } - - export function SourceInfo(body: BreakResponse): string; - - export interface ClientInstance extends NodeJS.EventEmitter { - protocol: Protocol; - scripts: ScriptDesc[]; - handles: ScriptDesc[]; - breakpoints: Breakpoint[]; - currentSourceLine: number; - currentSourceColumn: number; - currentSourceLineText: string; - currentFrame: number; - currentScript: string; - - connect(port: number, host: string): void; - req(req: any, cb: RequestHandler): void; - reqFrameEval(code: string, frame: number, cb: RequestHandler): void; - mirrorObject(obj: any, depth: number, cb: ResponseBodyHandler): void; - setBreakpoint(rq: BreakpointMessageBody, cb: RequestHandler): void; - clearBreakpoint(rq: Request, cb: RequestHandler): void; - listbreakpoints(cb: RequestHandler): void; - reqSource(from: number, to: number, cb: RequestHandler): void; - reqScripts(cb: any): void; - reqContinue(cb: RequestHandler): void; - } - - export var Client: { - new(): ClientInstance - }; -} - -/** - * Async Hooks module: https://nodejs.org/api/async_hooks.html - */ -declare module "async_hooks" { - /** - * Returns the asyncId of the current execution context. - */ - export function executionAsyncId(): number; - /// @deprecated - replaced by executionAsyncId() - export function currentId(): number; - - /** - * Returns the ID of the resource responsible for calling the callback that is currently being executed. - */ - export function triggerAsyncId(): number; - /// @deprecated - replaced by triggerAsyncId() - export function triggerId(): number; - - export interface HookCallbacks { - /** - * Called when a class is constructed that has the possibility to emit an asynchronous event. - * @param asyncId a unique ID for the async resource - * @param type the type of the async resource - * @param triggerAsyncId the unique ID of the async resource in whose execution context this async resource was created - * @param resource reference to the resource representing the async operation, needs to be released during destroy - */ - init?(asyncId: number, type: string, triggerAsyncId: number, resource: Object): void; - - /** - * When an asynchronous operation is initiated or completes a callback is called to notify the user. - * The before callback is called just before said callback is executed. - * @param asyncId the unique identifier assigned to the resource about to execute the callback. - */ - before?(asyncId: number): void; - - /** - * Called immediately after the callback specified in before is completed. - * @param asyncId the unique identifier assigned to the resource which has executed the callback. - */ - after?(asyncId: number): void; - - /** - * Called after the resource corresponding to asyncId is destroyed - * @param asyncId a unique ID for the async resource - */ - destroy?(asyncId: number): void; - } - - export interface AsyncHook { - /** - * Enable the callbacks for a given AsyncHook instance. If no callbacks are provided enabling is a noop. - */ - enable(): this; - - /** - * Disable the callbacks for a given AsyncHook instance from the global pool of AsyncHook callbacks to be executed. Once a hook has been disabled it will not be called again until enabled. - */ - disable(): this; - } - - /** - * Registers functions to be called for different lifetime events of each async operation. - * @param options the callbacks to register - * @return an AsyncHooks instance used for disabling and enabling hooks - */ - export function createHook(options: HookCallbacks): AsyncHook; -} - -declare module "http2" { - import * as events from "events"; - import * as fs from "fs"; - import * as net from "net"; - import * as stream from "stream"; - import * as tls from "tls"; - import * as url from "url"; - - import { IncomingHttpHeaders, OutgoingHttpHeaders } from "http"; - export { IncomingHttpHeaders, OutgoingHttpHeaders } from "http"; - - // Http2Stream - - export interface StreamPriorityOptions { - exclusive?: boolean; - parent?: number; - weight?: number; - silent?: boolean; - } - - export interface StreamState { - localWindowSize?: number; - state?: number; - streamLocalClose?: number; - streamRemoteClose?: number; - sumDependencyWeight?: number; - weight?: number; - } - - export interface ServerStreamResponseOptions { - endStream?: boolean; - getTrailers?: (trailers: IncomingHttpHeaders) => void; - } - - export interface StatOptions { - offset: number; - length: number; - } - - export interface ServerStreamFileResponseOptions { - statCheck?: (stats: fs.Stats, headers: IncomingHttpHeaders, statOptions: StatOptions) => void; - getTrailers?: (trailers: IncomingHttpHeaders) => void; - offset?: number; - length?: number; - } - - export interface Http2Stream extends stream.Duplex { - readonly aborted: boolean; - readonly destroyed: boolean; - priority(options: StreamPriorityOptions): void; - readonly rstCode: number; - rstStream(code: number): void; - rstWithNoError(): void; - rstWithProtocolError(): void; - rstWithCancel(): void; - rstWithRefuse(): void; - rstWithInternalError(): void; - readonly session: Http2Session; - setTimeout(msecs: number, callback?: () => void): void; - readonly state: StreamState; - - addListener(event: string, listener: (...args: any[]) => void): this; - addListener(event: "aborted", listener: () => void): this; - addListener(event: "close", listener: () => void): this; - addListener(event: "data", listener: (chunk: Buffer | string) => void): this; - addListener(event: "drain", listener: () => void): this; - addListener(event: "end", listener: () => void): this; - addListener(event: "error", listener: (err: Error) => void): this; - addListener(event: "finish", listener: () => void): this; - addListener(event: "frameError", listener: (frameType: number, errorCode: number) => void): this; - addListener(event: "pipe", listener: (src: stream.Readable) => void): this; - addListener(event: "unpipe", listener: (src: stream.Readable) => void): this; - addListener(event: "streamClosed", listener: (code: number) => void): this; - addListener(event: "timeout", listener: () => void): this; - addListener(event: "trailers", listener: (trailers: IncomingHttpHeaders, flags: number) => void): this; - - emit(event: string | symbol, ...args: any[]): boolean; - emit(event: "aborted"): boolean; - emit(event: "close"): boolean; - emit(event: "data", chunk: Buffer | string): boolean; - emit(event: "drain"): boolean; - emit(event: "end"): boolean; - emit(event: "error", err: Error): boolean; - emit(event: "finish"): boolean; - emit(event: "frameError", frameType: number, errorCode: number): boolean; - emit(event: "pipe", src: stream.Readable): boolean; - emit(event: "unpipe", src: stream.Readable): boolean; - emit(event: "streamClosed", code: number): boolean; - emit(event: "timeout"): boolean; - emit(event: "trailers", trailers: IncomingHttpHeaders, flags: number): boolean; - - on(event: string, listener: (...args: any[]) => void): this; - on(event: "aborted", listener: () => void): this; - on(event: "close", listener: () => void): this; - on(event: "data", listener: (chunk: Buffer | string) => void): this; - on(event: "drain", listener: () => void): this; - on(event: "end", listener: () => void): this; - on(event: "error", listener: (err: Error) => void): this; - on(event: "finish", listener: () => void): this; - on(event: "frameError", listener: (frameType: number, errorCode: number) => void): this; - on(event: "pipe", listener: (src: stream.Readable) => void): this; - on(event: "unpipe", listener: (src: stream.Readable) => void): this; - on(event: "streamClosed", listener: (code: number) => void): this; - on(event: "timeout", listener: () => void): this; - on(event: "trailers", listener: (trailers: IncomingHttpHeaders, flags: number) => void): this; - - once(event: string, listener: (...args: any[]) => void): this; - once(event: "aborted", listener: () => void): this; - once(event: "close", listener: () => void): this; - once(event: "data", listener: (chunk: Buffer | string) => void): this; - once(event: "drain", listener: () => void): this; - once(event: "end", listener: () => void): this; - once(event: "error", listener: (err: Error) => void): this; - once(event: "finish", listener: () => void): this; - once(event: "frameError", listener: (frameType: number, errorCode: number) => void): this; - once(event: "pipe", listener: (src: stream.Readable) => void): this; - once(event: "unpipe", listener: (src: stream.Readable) => void): this; - once(event: "streamClosed", listener: (code: number) => void): this; - once(event: "timeout", listener: () => void): this; - once(event: "trailers", listener: (trailers: IncomingHttpHeaders, flags: number) => void): this; - - prependListener(event: string, listener: (...args: any[]) => void): this; - prependListener(event: "aborted", listener: () => void): this; - prependListener(event: "close", listener: () => void): this; - prependListener(event: "data", listener: (chunk: Buffer | string) => void): this; - prependListener(event: "drain", listener: () => void): this; - prependListener(event: "end", listener: () => void): this; - prependListener(event: "error", listener: (err: Error) => void): this; - prependListener(event: "finish", listener: () => void): this; - prependListener(event: "frameError", listener: (frameType: number, errorCode: number) => void): this; - prependListener(event: "pipe", listener: (src: stream.Readable) => void): this; - prependListener(event: "unpipe", listener: (src: stream.Readable) => void): this; - prependListener(event: "streamClosed", listener: (code: number) => void): this; - prependListener(event: "timeout", listener: () => void): this; - prependListener(event: "trailers", listener: (trailers: IncomingHttpHeaders, flags: number) => void): this; - - prependOnceListener(event: string, listener: (...args: any[]) => void): this; - prependOnceListener(event: "aborted", listener: () => void): this; - prependOnceListener(event: "close", listener: () => void): this; - prependOnceListener(event: "data", listener: (chunk: Buffer | string) => void): this; - prependOnceListener(event: "drain", listener: () => void): this; - prependOnceListener(event: "end", listener: () => void): this; - prependOnceListener(event: "error", listener: (err: Error) => void): this; - prependOnceListener(event: "finish", listener: () => void): this; - prependOnceListener(event: "frameError", listener: (frameType: number, errorCode: number) => void): this; - prependOnceListener(event: "pipe", listener: (src: stream.Readable) => void): this; - prependOnceListener(event: "unpipe", listener: (src: stream.Readable) => void): this; - prependOnceListener(event: "streamClosed", listener: (code: number) => void): this; - prependOnceListener(event: "timeout", listener: () => void): this; - prependOnceListener(event: "trailers", listener: (trailers: IncomingHttpHeaders, flags: number) => void): this; - } - - export interface ClientHttp2Stream extends Http2Stream { - addListener(event: string, listener: (...args: any[]) => void): this; - addListener(event: "headers", listener: (headers: IncomingHttpHeaders, flags: number) => void): this; - addListener(event: "push", listener: (headers: IncomingHttpHeaders, flags: number) => void): this; - addListener(event: "response", listener: (headers: IncomingHttpHeaders, flags: number) => void): this; - - emit(event: string | symbol, ...args: any[]): boolean; - emit(event: "headers", headers: IncomingHttpHeaders, flags: number): boolean; - emit(event: "push", headers: IncomingHttpHeaders, flags: number): boolean; - emit(event: "response", headers: IncomingHttpHeaders, flags: number): boolean; - - on(event: string, listener: (...args: any[]) => void): this; - on(event: "headers", listener: (headers: IncomingHttpHeaders, flags: number) => void): this; - on(event: "push", listener: (headers: IncomingHttpHeaders, flags: number) => void): this; - on(event: "response", listener: (headers: IncomingHttpHeaders, flags: number) => void): this; - - once(event: string, listener: (...args: any[]) => void): this; - once(event: "headers", listener: (headers: IncomingHttpHeaders, flags: number) => void): this; - once(event: "push", listener: (headers: IncomingHttpHeaders, flags: number) => void): this; - once(event: "response", listener: (headers: IncomingHttpHeaders, flags: number) => void): this; - - prependListener(event: string, listener: (...args: any[]) => void): this; - prependListener(event: "headers", listener: (headers: IncomingHttpHeaders, flags: number) => void): this; - prependListener(event: "push", listener: (headers: IncomingHttpHeaders, flags: number) => void): this; - prependListener(event: "response", listener: (headers: IncomingHttpHeaders, flags: number) => void): this; - - prependOnceListener(event: string, listener: (...args: any[]) => void): this; - prependOnceListener(event: "headers", listener: (headers: IncomingHttpHeaders, flags: number) => void): this; - prependOnceListener(event: "push", listener: (headers: IncomingHttpHeaders, flags: number) => void): this; - prependOnceListener(event: "response", listener: (headers: IncomingHttpHeaders, flags: number) => void): this; - } - - export interface ServerHttp2Stream extends Http2Stream { - additionalHeaders(headers: OutgoingHttpHeaders): void; - readonly headersSent: boolean; - readonly pushAllowed: boolean; - pushStream(headers: OutgoingHttpHeaders, callback?: (pushStream: ServerHttp2Stream) => void): void; - pushStream(headers: OutgoingHttpHeaders, options?: StreamPriorityOptions, callback?: (pushStream: ServerHttp2Stream) => void): void; - respond(headers?: OutgoingHttpHeaders, options?: ServerStreamResponseOptions): void; - respondWithFD(fd: number, headers?: OutgoingHttpHeaders, options?: ServerStreamFileResponseOptions): void; - respondWithFile(path: string, headers?: OutgoingHttpHeaders, options?: ServerStreamFileResponseOptions): void; - } - - // Http2Session - - export interface Settings { - headerTableSize?: number; - enablePush?: boolean; - initialWindowSize?: number; - maxFrameSize?: number; - maxConcurrentStreams?: number; - maxHeaderListSize?: number; - } - - export interface ClientSessionRequestOptions { - endStream?: boolean; - exclusive?: boolean; - parent?: number; - weight?: number; - getTrailers?: (trailers: IncomingHttpHeaders, flags: number) => void; - } - - export interface SessionShutdownOptions { - graceful?: boolean; - errorCode?: number; - lastStreamID?: number; - opaqueData?: Buffer | Uint8Array; - } - - export interface SessionState { - effectiveLocalWindowSize?: number; - effectiveRecvDataLength?: number; - nextStreamID?: number; - localWindowSize?: number; - lastProcStreamID?: number; - remoteWindowSize?: number; - outboundQueueSize?: number; - deflateDynamicTableSize?: number; - inflateDynamicTableSize?: number; - } - - export interface Http2Session extends events.EventEmitter { - destroy(): void; - readonly destroyed: boolean; - readonly localSettings: Settings; - readonly pendingSettingsAck: boolean; - readonly remoteSettings: Settings; - rstStream(stream: Http2Stream, code?: number): void; - setTimeout(msecs: number, callback?: () => void): void; - shutdown(callback?: () => void): void; - shutdown(options: SessionShutdownOptions, callback?: () => void): void; - readonly socket: net.Socket | tls.TLSSocket; - readonly state: SessionState; - priority(stream: Http2Stream, options: StreamPriorityOptions): void; - settings(settings: Settings): void; - readonly type: number; - - addListener(event: string, listener: (...args: any[]) => void): this; - addListener(event: "close", listener: () => void): this; - addListener(event: "error", listener: (err: Error) => void): this; - addListener(event: "frameError", listener: (frameType: number, errorCode: number, streamID: number) => void): this; - addListener(event: "goaway", listener: (errorCode: number, lastStreamID: number, opaqueData: Buffer) => void): this; - addListener(event: "localSettings", listener: (settings: Settings) => void): this; - addListener(event: "remoteSettings", listener: (settings: Settings) => void): this; - addListener(event: "socketError", listener: (err: Error) => void): this; - addListener(event: "timeout", listener: () => void): this; - - emit(event: string | symbol, ...args: any[]): boolean; - emit(event: "close"): boolean; - emit(event: "error", err: Error): boolean; - emit(event: "frameError", frameType: number, errorCode: number, streamID: number): boolean; - emit(event: "goaway", errorCode: number, lastStreamID: number, opaqueData: Buffer): boolean; - emit(event: "localSettings", settings: Settings): boolean; - emit(event: "remoteSettings", settings: Settings): boolean; - emit(event: "socketError", err: Error): boolean; - emit(event: "timeout"): boolean; - - on(event: string, listener: (...args: any[]) => void): this; - on(event: "close", listener: () => void): this; - on(event: "error", listener: (err: Error) => void): this; - on(event: "frameError", listener: (frameType: number, errorCode: number, streamID: number) => void): this; - on(event: "goaway", listener: (errorCode: number, lastStreamID: number, opaqueData: Buffer) => void): this; - on(event: "localSettings", listener: (settings: Settings) => void): this; - on(event: "remoteSettings", listener: (settings: Settings) => void): this; - on(event: "socketError", listener: (err: Error) => void): this; - on(event: "timeout", listener: () => void): this; - - once(event: string, listener: (...args: any[]) => void): this; - once(event: "close", listener: () => void): this; - once(event: "error", listener: (err: Error) => void): this; - once(event: "frameError", listener: (frameType: number, errorCode: number, streamID: number) => void): this; - once(event: "goaway", listener: (errorCode: number, lastStreamID: number, opaqueData: Buffer) => void): this; - once(event: "localSettings", listener: (settings: Settings) => void): this; - once(event: "remoteSettings", listener: (settings: Settings) => void): this; - once(event: "socketError", listener: (err: Error) => void): this; - once(event: "timeout", listener: () => void): this; - - prependListener(event: string, listener: (...args: any[]) => void): this; - prependListener(event: "close", listener: () => void): this; - prependListener(event: "error", listener: (err: Error) => void): this; - prependListener(event: "frameError", listener: (frameType: number, errorCode: number, streamID: number) => void): this; - prependListener(event: "goaway", listener: (errorCode: number, lastStreamID: number, opaqueData: Buffer) => void): this; - prependListener(event: "localSettings", listener: (settings: Settings) => void): this; - prependListener(event: "remoteSettings", listener: (settings: Settings) => void): this; - prependListener(event: "socketError", listener: (err: Error) => void): this; - prependListener(event: "timeout", listener: () => void): this; - - prependOnceListener(event: string, listener: (...args: any[]) => void): this; - prependOnceListener(event: "close", listener: () => void): this; - prependOnceListener(event: "error", listener: (err: Error) => void): this; - prependOnceListener(event: "frameError", listener: (frameType: number, errorCode: number, streamID: number) => void): this; - prependOnceListener(event: "goaway", listener: (errorCode: number, lastStreamID: number, opaqueData: Buffer) => void): this; - prependOnceListener(event: "localSettings", listener: (settings: Settings) => void): this; - prependOnceListener(event: "remoteSettings", listener: (settings: Settings) => void): this; - prependOnceListener(event: "socketError", listener: (err: Error) => void): this; - prependOnceListener(event: "timeout", listener: () => void): this; - } - - export interface ClientHttp2Session extends Http2Session { - request(headers?: OutgoingHttpHeaders, options?: ClientSessionRequestOptions): ClientHttp2Stream; - - addListener(event: string, listener: (...args: any[]) => void): this; - addListener(event: "connect", listener: (session: ClientHttp2Session, socket: net.Socket | tls.TLSSocket) => void): this; - addListener(event: "stream", listener: (stream: ClientHttp2Stream, headers: IncomingHttpHeaders, flags: number) => void): this; - - emit(event: string | symbol, ...args: any[]): boolean; - emit(event: "connect", session: ClientHttp2Session, socket: net.Socket | tls.TLSSocket): boolean; - emit(event: "stream", stream: ClientHttp2Stream, headers: IncomingHttpHeaders, flags: number): boolean; - - on(event: string, listener: (...args: any[]) => void): this; - on(event: "connect", listener: (session: ClientHttp2Session, socket: net.Socket | tls.TLSSocket) => void): this; - on(event: "stream", listener: (stream: ClientHttp2Stream, headers: IncomingHttpHeaders, flags: number) => void): this; - - once(event: string, listener: (...args: any[]) => void): this; - once(event: "connect", listener: (session: ClientHttp2Session, socket: net.Socket | tls.TLSSocket) => void): this; - once(event: "stream", listener: (stream: ClientHttp2Stream, headers: IncomingHttpHeaders, flags: number) => void): this; - - prependListener(event: string, listener: (...args: any[]) => void): this; - prependListener(event: "connect", listener: (session: ClientHttp2Session, socket: net.Socket | tls.TLSSocket) => void): this; - prependListener(event: "stream", listener: (stream: ClientHttp2Stream, headers: IncomingHttpHeaders, flags: number) => void): this; - - prependOnceListener(event: string, listener: (...args: any[]) => void): this; - prependOnceListener(event: "connect", listener: (session: ClientHttp2Session, socket: net.Socket | tls.TLSSocket) => void): this; - prependOnceListener(event: "stream", listener: (stream: ClientHttp2Stream, headers: IncomingHttpHeaders, flags: number) => void): this; - } - - export interface ServerHttp2Session extends Http2Session { - readonly server: Http2Server | Http2SecureServer; - - addListener(event: string, listener: (...args: any[]) => void): this; - addListener(event: "connect", listener: (session: ServerHttp2Session, socket: net.Socket | tls.TLSSocket) => void): this; - addListener(event: "stream", listener: (stream: ServerHttp2Stream, headers: IncomingHttpHeaders, flags: number) => void): this; - - emit(event: string | symbol, ...args: any[]): boolean; - emit(event: "connect", session: ServerHttp2Session, socket: net.Socket | tls.TLSSocket): boolean; - emit(event: "stream", stream: ServerHttp2Stream, headers: IncomingHttpHeaders, flags: number): boolean; - - on(event: string, listener: (...args: any[]) => void): this; - on(event: "connect", listener: (session: ServerHttp2Session, socket: net.Socket | tls.TLSSocket) => void): this; - on(event: "stream", listener: (stream: ServerHttp2Stream, headers: IncomingHttpHeaders, flags: number) => void): this; - - once(event: string, listener: (...args: any[]) => void): this; - once(event: "connect", listener: (session: ServerHttp2Session, socket: net.Socket | tls.TLSSocket) => void): this; - once(event: "stream", listener: (stream: ServerHttp2Stream, headers: IncomingHttpHeaders, flags: number) => void): this; - - prependListener(event: string, listener: (...args: any[]) => void): this; - prependListener(event: "connect", listener: (session: ServerHttp2Session, socket: net.Socket | tls.TLSSocket) => void): this; - prependListener(event: "stream", listener: (stream: ServerHttp2Stream, headers: IncomingHttpHeaders, flags: number) => void): this; - - prependOnceListener(event: string, listener: (...args: any[]) => void): this; - prependOnceListener(event: "connect", listener: (session: ServerHttp2Session, socket: net.Socket | tls.TLSSocket) => void): this; - prependOnceListener(event: "stream", listener: (stream: ServerHttp2Stream, headers: IncomingHttpHeaders, flags: number) => void): this; - } - - // Http2Server - - export interface SessionOptions { - maxDeflateDynamicTableSize?: number; - maxReservedRemoteStreams?: number; - maxSendHeaderBlockLength?: number; - paddingStrategy?: number; - peerMaxConcurrentStreams?: number; - selectPadding?: (frameLen: number, maxFrameLen: number) => number; - settings?: Settings; - } - - export type ClientSessionOptions = SessionOptions; - export type ServerSessionOptions = SessionOptions; - - export interface SecureClientSessionOptions extends ClientSessionOptions, tls.ConnectionOptions {} - export interface SecureServerSessionOptions extends ServerSessionOptions, tls.TlsOptions {} - - export interface ServerOptions extends ServerSessionOptions { - allowHTTP1?: boolean; - } - - export interface SecureServerOptions extends SecureServerSessionOptions { - allowHTTP1?: boolean; - } - - export interface Http2Server extends net.Server { - addListener(event: string, listener: (...args: any[]) => void): this; - addListener(event: "request", listener: (request: Http2ServerRequest, response: Http2ServerResponse) => void): this; - addListener(event: "sessionError", listener: (err: Error) => void): this; - addListener(event: "socketError", listener: (err: Error) => void): this; - addListener(event: "stream", listener: (stream: ServerHttp2Stream, headers: IncomingHttpHeaders, flags: number) => void): this; - addListener(event: "timeout", listener: () => void): this; - - emit(event: string | symbol, ...args: any[]): boolean; - emit(event: "request", request: Http2ServerRequest, response: Http2ServerResponse): boolean; - emit(event: "sessionError", err: Error): boolean; - emit(event: "socketError", err: Error): boolean; - emit(event: "stream", stream: ServerHttp2Stream, headers: IncomingHttpHeaders, flags: number): boolean; - emit(event: "timeout"): boolean; - - on(event: string, listener: (...args: any[]) => void): this; - on(event: "request", listener: (request: Http2ServerRequest, response: Http2ServerResponse) => void): this; - on(event: "sessionError", listener: (err: Error) => void): this; - on(event: "socketError", listener: (err: Error) => void): this; - on(event: "stream", listener: (stream: ServerHttp2Stream, headers: IncomingHttpHeaders, flags: number) => void): this; - on(event: "timeout", listener: () => void): this; - - once(event: string, listener: (...args: any[]) => void): this; - once(event: "request", listener: (request: Http2ServerRequest, response: Http2ServerResponse) => void): this; - once(event: "sessionError", listener: (err: Error) => void): this; - once(event: "socketError", listener: (err: Error) => void): this; - once(event: "stream", listener: (stream: ServerHttp2Stream, headers: IncomingHttpHeaders, flags: number) => void): this; - once(event: "timeout", listener: () => void): this; - - prependListener(event: string, listener: (...args: any[]) => void): this; - prependListener(event: "request", listener: (request: Http2ServerRequest, response: Http2ServerResponse) => void): this; - prependListener(event: "sessionError", listener: (err: Error) => void): this; - prependListener(event: "socketError", listener: (err: Error) => void): this; - prependListener(event: "stream", listener: (stream: ServerHttp2Stream, headers: IncomingHttpHeaders, flags: number) => void): this; - prependListener(event: "timeout", listener: () => void): this; - - prependOnceListener(event: string, listener: (...args: any[]) => void): this; - prependOnceListener(event: "request", listener: (request: Http2ServerRequest, response: Http2ServerResponse) => void): this; - prependOnceListener(event: "sessionError", listener: (err: Error) => void): this; - prependOnceListener(event: "socketError", listener: (err: Error) => void): this; - prependOnceListener(event: "stream", listener: (stream: ServerHttp2Stream, headers: IncomingHttpHeaders, flags: number) => void): this; - prependOnceListener(event: "timeout", listener: () => void): this; - } - - export interface Http2SecureServer extends tls.Server { - addListener(event: string, listener: (...args: any[]) => void): this; - addListener(event: "request", listener: (request: Http2ServerRequest, response: Http2ServerResponse) => void): this; - addListener(event: "sessionError", listener: (err: Error) => void): this; - addListener(event: "socketError", listener: (err: Error) => void): this; - addListener(event: "stream", listener: (stream: ServerHttp2Stream, headers: IncomingHttpHeaders, flags: number) => void): this; - addListener(event: "timeout", listener: () => void): this; - addListener(event: "unknownProtocol", listener: (socket: tls.TLSSocket) => void): this; - - emit(event: string | symbol, ...args: any[]): boolean; - emit(event: "request", request: Http2ServerRequest, response: Http2ServerResponse): boolean; - emit(event: "sessionError", err: Error): boolean; - emit(event: "socketError", err: Error): boolean; - emit(event: "stream", stream: ServerHttp2Stream, headers: IncomingHttpHeaders, flags: number): boolean; - emit(event: "timeout"): boolean; - emit(event: "unknownProtocol", socket: tls.TLSSocket): boolean; - - on(event: string, listener: (...args: any[]) => void): this; - on(event: "request", listener: (request: Http2ServerRequest, response: Http2ServerResponse) => void): this; - on(event: "sessionError", listener: (err: Error) => void): this; - on(event: "socketError", listener: (err: Error) => void): this; - on(event: "stream", listener: (stream: ServerHttp2Stream, headers: IncomingHttpHeaders, flags: number) => void): this; - on(event: "timeout", listener: () => void): this; - on(event: "unknownProtocol", listener: (socket: tls.TLSSocket) => void): this; - - once(event: string, listener: (...args: any[]) => void): this; - once(event: "request", listener: (request: Http2ServerRequest, response: Http2ServerResponse) => void): this; - once(event: "sessionError", listener: (err: Error) => void): this; - once(event: "socketError", listener: (err: Error) => void): this; - once(event: "stream", listener: (stream: ServerHttp2Stream, headers: IncomingHttpHeaders, flags: number) => void): this; - once(event: "timeout", listener: () => void): this; - once(event: "unknownProtocol", listener: (socket: tls.TLSSocket) => void): this; - - prependListener(event: string, listener: (...args: any[]) => void): this; - prependListener(event: "request", listener: (request: Http2ServerRequest, response: Http2ServerResponse) => void): this; - prependListener(event: "sessionError", listener: (err: Error) => void): this; - prependListener(event: "socketError", listener: (err: Error) => void): this; - prependListener(event: "stream", listener: (stream: ServerHttp2Stream, headers: IncomingHttpHeaders, flags: number) => void): this; - prependListener(event: "timeout", listener: () => void): this; - prependListener(event: "unknownProtocol", listener: (socket: tls.TLSSocket) => void): this; - - prependOnceListener(event: string, listener: (...args: any[]) => void): this; - prependOnceListener(event: "request", listener: (request: Http2ServerRequest, response: Http2ServerResponse) => void): this; - prependOnceListener(event: "sessionError", listener: (err: Error) => void): this; - prependOnceListener(event: "socketError", listener: (err: Error) => void): this; - prependOnceListener(event: "stream", listener: (stream: ServerHttp2Stream, headers: IncomingHttpHeaders, flags: number) => void): this; - prependOnceListener(event: "timeout", listener: () => void): this; - prependOnceListener(event: "unknownProtocol", listener: (socket: tls.TLSSocket) => void): this; - } - - export interface Http2ServerRequest extends stream.Readable { - headers: IncomingHttpHeaders; - httpVersion: string; - method: string; - rawHeaders: string[]; - rawTrailers: string[]; - setTimeout(msecs: number, callback?: () => void): void; - socket: net.Socket | tls.TLSSocket; - stream: ServerHttp2Stream; - trailers: IncomingHttpHeaders; - url: string; - - addListener(event: string, listener: (...args: any[]) => void): this; - addListener(event: "aborted", listener: (hadError: boolean, code: number) => void): this; - - emit(event: string | symbol, ...args: any[]): boolean; - emit(event: "aborted", hadError: boolean, code: number): boolean; - - on(event: string, listener: (...args: any[]) => void): this; - on(event: "aborted", listener: (hadError: boolean, code: number) => void): this; - - once(event: string, listener: (...args: any[]) => void): this; - once(event: "aborted", listener: (hadError: boolean, code: number) => void): this; - - prependListener(event: string, listener: (...args: any[]) => void): this; - prependListener(event: "aborted", listener: (hadError: boolean, code: number) => void): this; - - prependOnceListener(event: string, listener: (...args: any[]) => void): this; - prependOnceListener(event: "aborted", listener: (hadError: boolean, code: number) => void): this; - } - - export interface Http2ServerResponse extends events.EventEmitter { - addTrailers(trailers: OutgoingHttpHeaders): void; - connection: net.Socket | tls.TLSSocket; - end(callback?: () => void): void; - end(data?: string | Buffer, callback?: () => void): void; - end(data?: string | Buffer, encoding?: string, callback?: () => void): void; - readonly finished: boolean; - getHeader(name: string): string; - getHeaderNames(): string[]; - getHeaders(): OutgoingHttpHeaders; - hasHeader(name: string): boolean; - readonly headersSent: boolean; - removeHeader(name: string): void; - sendDate: boolean; - setHeader(name: string, value: number | string | string[]): void; - setTimeout(msecs: number, callback?: () => void): void; - socket: net.Socket | tls.TLSSocket; - statusCode: number; - statusMessage: ''; - stream: ServerHttp2Stream; - write(chunk: string | Buffer, callback?: (err: Error) => void): boolean; - write(chunk: string | Buffer, encoding?: string, callback?: (err: Error) => void): boolean; - writeContinue(): void; - writeHead(statusCode: number, headers?: OutgoingHttpHeaders): void; - writeHead(statusCode: number, statusMessage?: string, headers?: OutgoingHttpHeaders): void; - createPushResponse(headers: OutgoingHttpHeaders, callback?: (err: Error) => void): void; - - addListener(event: string, listener: (...args: any[]) => void): this; - addListener(event: "aborted", listener: (hadError: boolean, code: number) => void): this; - addListener(event: "close", listener: () => void): this; - addListener(event: "drain", listener: () => void): this; - addListener(event: "error", listener: (error: Error) => void): this; - addListener(event: "finish", listener: () => void): this; - - emit(event: string | symbol, ...args: any[]): boolean; - emit(event: "aborted", hadError: boolean, code: number): boolean; - emit(event: "close"): boolean; - emit(event: "drain"): boolean; - emit(event: "error", error: Error): boolean; - emit(event: "finish"): boolean; - - on(event: string, listener: (...args: any[]) => void): this; - on(event: "aborted", listener: (hadError: boolean, code: number) => void): this; - on(event: "close", listener: () => void): this; - on(event: "drain", listener: () => void): this; - on(event: "error", listener: (error: Error) => void): this; - on(event: "finish", listener: () => void): this; - - once(event: string, listener: (...args: any[]) => void): this; - once(event: "aborted", listener: (hadError: boolean, code: number) => void): this; - once(event: "close", listener: () => void): this; - once(event: "drain", listener: () => void): this; - once(event: "error", listener: (error: Error) => void): this; - once(event: "finish", listener: () => void): this; - - prependListener(event: string, listener: (...args: any[]) => void): this; - prependListener(event: "aborted", listener: (hadError: boolean, code: number) => void): this; - prependListener(event: "close", listener: () => void): this; - prependListener(event: "drain", listener: () => void): this; - prependListener(event: "error", listener: (error: Error) => void): this; - prependListener(event: "finish", listener: () => void): this; - - prependOnceListener(event: string, listener: (...args: any[]) => void): this; - prependOnceListener(event: "aborted", listener: (hadError: boolean, code: number) => void): this; - prependOnceListener(event: "close", listener: () => void): this; - prependOnceListener(event: "drain", listener: () => void): this; - prependOnceListener(event: "error", listener: (error: Error) => void): this; - prependOnceListener(event: "finish", listener: () => void): this; - } - - // Public API - - export const constants: { - NGHTTP2_SESSION_SERVER: number; - NGHTTP2_SESSION_CLIENT: number; - NGHTTP2_STREAM_STATE_IDLE: number; - NGHTTP2_STREAM_STATE_OPEN: number; - NGHTTP2_STREAM_STATE_RESERVED_LOCAL: number; - NGHTTP2_STREAM_STATE_RESERVED_REMOTE: number; - NGHTTP2_STREAM_STATE_HALF_CLOSED_LOCAL: number; - NGHTTP2_STREAM_STATE_HALF_CLOSED_REMOTE: number; - NGHTTP2_STREAM_STATE_CLOSED: number; - NGHTTP2_NO_ERROR: number; - NGHTTP2_PROTOCOL_ERROR: number; - NGHTTP2_INTERNAL_ERROR: number; - NGHTTP2_FLOW_CONTROL_ERROR: number; - NGHTTP2_SETTINGS_TIMEOUT: number; - NGHTTP2_STREAM_CLOSED: number; - NGHTTP2_FRAME_SIZE_ERROR: number; - NGHTTP2_REFUSED_STREAM: number; - NGHTTP2_CANCEL: number; - NGHTTP2_COMPRESSION_ERROR: number; - NGHTTP2_CONNECT_ERROR: number; - NGHTTP2_ENHANCE_YOUR_CALM: number; - NGHTTP2_INADEQUATE_SECURITY: number; - NGHTTP2_HTTP_1_1_REQUIRED: number; - NGHTTP2_ERR_FRAME_SIZE_ERROR: number; - NGHTTP2_FLAG_NONE: number; - NGHTTP2_FLAG_END_STREAM: number; - NGHTTP2_FLAG_END_HEADERS: number; - NGHTTP2_FLAG_ACK: number; - NGHTTP2_FLAG_PADDED: number; - NGHTTP2_FLAG_PRIORITY: number; - DEFAULT_SETTINGS_HEADER_TABLE_SIZE: number; - DEFAULT_SETTINGS_ENABLE_PUSH: number; - DEFAULT_SETTINGS_INITIAL_WINDOW_SIZE: number; - DEFAULT_SETTINGS_MAX_FRAME_SIZE: number; - MAX_MAX_FRAME_SIZE: number; - MIN_MAX_FRAME_SIZE: number; - MAX_INITIAL_WINDOW_SIZE: number; - NGHTTP2_DEFAULT_WEIGHT: number; - NGHTTP2_SETTINGS_HEADER_TABLE_SIZE: number; - NGHTTP2_SETTINGS_ENABLE_PUSH: number; - NGHTTP2_SETTINGS_MAX_CONCURRENT_STREAMS: number; - NGHTTP2_SETTINGS_INITIAL_WINDOW_SIZE: number; - NGHTTP2_SETTINGS_MAX_FRAME_SIZE: number; - NGHTTP2_SETTINGS_MAX_HEADER_LIST_SIZE: number; - PADDING_STRATEGY_NONE: number; - PADDING_STRATEGY_MAX: number; - PADDING_STRATEGY_CALLBACK: number; - HTTP2_HEADER_STATUS: string; - HTTP2_HEADER_METHOD: string; - HTTP2_HEADER_AUTHORITY: string; - HTTP2_HEADER_SCHEME: string; - HTTP2_HEADER_PATH: string; - HTTP2_HEADER_ACCEPT_CHARSET: string; - HTTP2_HEADER_ACCEPT_ENCODING: string; - HTTP2_HEADER_ACCEPT_LANGUAGE: string; - HTTP2_HEADER_ACCEPT_RANGES: string; - HTTP2_HEADER_ACCEPT: string; - HTTP2_HEADER_ACCESS_CONTROL_ALLOW_ORIGIN: string; - HTTP2_HEADER_AGE: string; - HTTP2_HEADER_ALLOW: string; - HTTP2_HEADER_AUTHORIZATION: string; - HTTP2_HEADER_CACHE_CONTROL: string; - HTTP2_HEADER_CONNECTION: string; - HTTP2_HEADER_CONTENT_DISPOSITION: string; - HTTP2_HEADER_CONTENT_ENCODING: string; - HTTP2_HEADER_CONTENT_LANGUAGE: string; - HTTP2_HEADER_CONTENT_LENGTH: string; - HTTP2_HEADER_CONTENT_LOCATION: string; - HTTP2_HEADER_CONTENT_MD5: string; - HTTP2_HEADER_CONTENT_RANGE: string; - HTTP2_HEADER_CONTENT_TYPE: string; - HTTP2_HEADER_COOKIE: string; - HTTP2_HEADER_DATE: string; - HTTP2_HEADER_ETAG: string; - HTTP2_HEADER_EXPECT: string; - HTTP2_HEADER_EXPIRES: string; - HTTP2_HEADER_FROM: string; - HTTP2_HEADER_HOST: string; - HTTP2_HEADER_IF_MATCH: string; - HTTP2_HEADER_IF_MODIFIED_SINCE: string; - HTTP2_HEADER_IF_NONE_MATCH: string; - HTTP2_HEADER_IF_RANGE: string; - HTTP2_HEADER_IF_UNMODIFIED_SINCE: string; - HTTP2_HEADER_LAST_MODIFIED: string; - HTTP2_HEADER_LINK: string; - HTTP2_HEADER_LOCATION: string; - HTTP2_HEADER_MAX_FORWARDS: string; - HTTP2_HEADER_PREFER: string; - HTTP2_HEADER_PROXY_AUTHENTICATE: string; - HTTP2_HEADER_PROXY_AUTHORIZATION: string; - HTTP2_HEADER_RANGE: string; - HTTP2_HEADER_REFERER: string; - HTTP2_HEADER_REFRESH: string; - HTTP2_HEADER_RETRY_AFTER: string; - HTTP2_HEADER_SERVER: string; - HTTP2_HEADER_SET_COOKIE: string; - HTTP2_HEADER_STRICT_TRANSPORT_SECURITY: string; - HTTP2_HEADER_TRANSFER_ENCODING: string; - HTTP2_HEADER_TE: string; - HTTP2_HEADER_UPGRADE: string; - HTTP2_HEADER_USER_AGENT: string; - HTTP2_HEADER_VARY: string; - HTTP2_HEADER_VIA: string; - HTTP2_HEADER_WWW_AUTHENTICATE: string; - HTTP2_HEADER_HTTP2_SETTINGS: string; - HTTP2_HEADER_KEEP_ALIVE: string; - HTTP2_HEADER_PROXY_CONNECTION: string; - HTTP2_METHOD_ACL: string; - HTTP2_METHOD_BASELINE_CONTROL: string; - HTTP2_METHOD_BIND: string; - HTTP2_METHOD_CHECKIN: string; - HTTP2_METHOD_CHECKOUT: string; - HTTP2_METHOD_CONNECT: string; - HTTP2_METHOD_COPY: string; - HTTP2_METHOD_DELETE: string; - HTTP2_METHOD_GET: string; - HTTP2_METHOD_HEAD: string; - HTTP2_METHOD_LABEL: string; - HTTP2_METHOD_LINK: string; - HTTP2_METHOD_LOCK: string; - HTTP2_METHOD_MERGE: string; - HTTP2_METHOD_MKACTIVITY: string; - HTTP2_METHOD_MKCALENDAR: string; - HTTP2_METHOD_MKCOL: string; - HTTP2_METHOD_MKREDIRECTREF: string; - HTTP2_METHOD_MKWORKSPACE: string; - HTTP2_METHOD_MOVE: string; - HTTP2_METHOD_OPTIONS: string; - HTTP2_METHOD_ORDERPATCH: string; - HTTP2_METHOD_PATCH: string; - HTTP2_METHOD_POST: string; - HTTP2_METHOD_PRI: string; - HTTP2_METHOD_PROPFIND: string; - HTTP2_METHOD_PROPPATCH: string; - HTTP2_METHOD_PUT: string; - HTTP2_METHOD_REBIND: string; - HTTP2_METHOD_REPORT: string; - HTTP2_METHOD_SEARCH: string; - HTTP2_METHOD_TRACE: string; - HTTP2_METHOD_UNBIND: string; - HTTP2_METHOD_UNCHECKOUT: string; - HTTP2_METHOD_UNLINK: string; - HTTP2_METHOD_UNLOCK: string; - HTTP2_METHOD_UPDATE: string; - HTTP2_METHOD_UPDATEREDIRECTREF: string; - HTTP2_METHOD_VERSION_CONTROL: string; - HTTP_STATUS_CONTINUE: number; - HTTP_STATUS_SWITCHING_PROTOCOLS: number; - HTTP_STATUS_PROCESSING: number; - HTTP_STATUS_OK: number; - HTTP_STATUS_CREATED: number; - HTTP_STATUS_ACCEPTED: number; - HTTP_STATUS_NON_AUTHORITATIVE_INFORMATION: number; - HTTP_STATUS_NO_CONTENT: number; - HTTP_STATUS_RESET_CONTENT: number; - HTTP_STATUS_PARTIAL_CONTENT: number; - HTTP_STATUS_MULTI_STATUS: number; - HTTP_STATUS_ALREADY_REPORTED: number; - HTTP_STATUS_IM_USED: number; - HTTP_STATUS_MULTIPLE_CHOICES: number; - HTTP_STATUS_MOVED_PERMANENTLY: number; - HTTP_STATUS_FOUND: number; - HTTP_STATUS_SEE_OTHER: number; - HTTP_STATUS_NOT_MODIFIED: number; - HTTP_STATUS_USE_PROXY: number; - HTTP_STATUS_TEMPORARY_REDIRECT: number; - HTTP_STATUS_PERMANENT_REDIRECT: number; - HTTP_STATUS_BAD_REQUEST: number; - HTTP_STATUS_UNAUTHORIZED: number; - HTTP_STATUS_PAYMENT_REQUIRED: number; - HTTP_STATUS_FORBIDDEN: number; - HTTP_STATUS_NOT_FOUND: number; - HTTP_STATUS_METHOD_NOT_ALLOWED: number; - HTTP_STATUS_NOT_ACCEPTABLE: number; - HTTP_STATUS_PROXY_AUTHENTICATION_REQUIRED: number; - HTTP_STATUS_REQUEST_TIMEOUT: number; - HTTP_STATUS_CONFLICT: number; - HTTP_STATUS_GONE: number; - HTTP_STATUS_LENGTH_REQUIRED: number; - HTTP_STATUS_PRECONDITION_FAILED: number; - HTTP_STATUS_PAYLOAD_TOO_LARGE: number; - HTTP_STATUS_URI_TOO_LONG: number; - HTTP_STATUS_UNSUPPORTED_MEDIA_TYPE: number; - HTTP_STATUS_RANGE_NOT_SATISFIABLE: number; - HTTP_STATUS_EXPECTATION_FAILED: number; - HTTP_STATUS_TEAPOT: number; - HTTP_STATUS_MISDIRECTED_REQUEST: number; - HTTP_STATUS_UNPROCESSABLE_ENTITY: number; - HTTP_STATUS_LOCKED: number; - HTTP_STATUS_FAILED_DEPENDENCY: number; - HTTP_STATUS_UNORDERED_COLLECTION: number; - HTTP_STATUS_UPGRADE_REQUIRED: number; - HTTP_STATUS_PRECONDITION_REQUIRED: number; - HTTP_STATUS_TOO_MANY_REQUESTS: number; - HTTP_STATUS_REQUEST_HEADER_FIELDS_TOO_LARGE: number; - HTTP_STATUS_UNAVAILABLE_FOR_LEGAL_REASONS: number; - HTTP_STATUS_INTERNAL_SERVER_ERROR: number; - HTTP_STATUS_NOT_IMPLEMENTED: number; - HTTP_STATUS_BAD_GATEWAY: number; - HTTP_STATUS_SERVICE_UNAVAILABLE: number; - HTTP_STATUS_GATEWAY_TIMEOUT: number; - HTTP_STATUS_HTTP_VERSION_NOT_SUPPORTED: number; - HTTP_STATUS_VARIANT_ALSO_NEGOTIATES: number; - HTTP_STATUS_INSUFFICIENT_STORAGE: number; - HTTP_STATUS_LOOP_DETECTED: number; - HTTP_STATUS_BANDWIDTH_LIMIT_EXCEEDED: number; - HTTP_STATUS_NOT_EXTENDED: number; - HTTP_STATUS_NETWORK_AUTHENTICATION_REQUIRED: number; - }; - - export function getDefaultSettings(): Settings; - export function getPackedSettings(settings: Settings): Settings; - export function getUnpackedSettings(buf: Buffer | Uint8Array): Settings; - - export function createServer(onRequestHandler?: (request: Http2ServerRequest, response: Http2ServerResponse) => void): Http2Server; - export function createServer(options: ServerOptions, onRequestHandler?: (request: Http2ServerRequest, response: Http2ServerResponse) => void): Http2Server; - - export function createSecureServer(onRequestHandler?: (request: Http2ServerRequest, response: Http2ServerResponse) => void): Http2SecureServer; - export function createSecureServer(options: SecureServerOptions, onRequestHandler?: (request: Http2ServerRequest, response: Http2ServerResponse) => void): Http2SecureServer; - - export function connect(authority: string | url.URL, listener?: (session: ClientHttp2Session, socket: net.Socket | tls.TLSSocket) => void): ClientHttp2Session; - export function connect(authority: string | url.URL, options?: ClientSessionOptions | SecureClientSessionOptions, listener?: (session: ClientHttp2Session, socket: net.Socket | tls.TLSSocket) => void): ClientHttp2Session; -} diff --git a/workshops/monte-carlo-on-ec2-spot-fleet/src/web/node_modules/@types/node/inspector.d.ts b/workshops/monte-carlo-on-ec2-spot-fleet/src/web/node_modules/@types/node/inspector.d.ts deleted file mode 100644 index 3758d8ba..00000000 --- a/workshops/monte-carlo-on-ec2-spot-fleet/src/web/node_modules/@types/node/inspector.d.ts +++ /dev/null @@ -1,2479 +0,0 @@ -// Type definitions for inspector - -// These definitions are auto-generated. -// Please see https://github.com/DefinitelyTyped/DefinitelyTyped/pull/19330 -// for more information. - -/** - * The inspector module provides an API for interacting with the V8 inspector. - */ -declare module "inspector" { - import { EventEmitter } from 'events'; - - export interface InspectorNotification { - method: string; - params: T; - } - - export namespace Schema { - /** - * Description of the protocol domain. - */ - export interface Domain { - /** - * Domain name. - */ - name: string; - /** - * Domain version. - */ - version: string; - } - - export interface GetDomainsReturnType { - /** - * List of supported domains. - */ - domains: Schema.Domain[]; - } - } - - export namespace Runtime { - /** - * Unique script identifier. - */ - export type ScriptId = string; - - /** - * Unique object identifier. - */ - export type RemoteObjectId = string; - - /** - * Primitive value which cannot be JSON-stringified. - */ - export type UnserializableValue = string; - - /** - * Mirror object referencing original JavaScript object. - */ - export interface RemoteObject { - /** - * Object type. - */ - type: string; - /** - * Object subtype hint. Specified for object type values only. - */ - subtype?: string; - /** - * Object class (constructor) name. Specified for object type values only. - */ - className?: string; - /** - * Remote object value in case of primitive values or JSON values (if it was requested). - */ - value?: any; - /** - * Primitive value which can not be JSON-stringified does not have value, but gets this property. - */ - unserializableValue?: Runtime.UnserializableValue; - /** - * String representation of the object. - */ - description?: string; - /** - * Unique object identifier (for non-primitive values). - */ - objectId?: Runtime.RemoteObjectId; - /** - * Preview containing abbreviated property values. Specified for object type values only. - * @experimental - */ - preview?: Runtime.ObjectPreview; - /** - * @experimental - */ - customPreview?: Runtime.CustomPreview; - } - - /** - * @experimental - */ - export interface CustomPreview { - header: string; - hasBody: boolean; - formatterObjectId: Runtime.RemoteObjectId; - bindRemoteObjectFunctionId: Runtime.RemoteObjectId; - configObjectId?: Runtime.RemoteObjectId; - } - - /** - * Object containing abbreviated remote object value. - * @experimental - */ - export interface ObjectPreview { - /** - * Object type. - */ - type: string; - /** - * Object subtype hint. Specified for object type values only. - */ - subtype?: string; - /** - * String representation of the object. - */ - description?: string; - /** - * True iff some of the properties or entries of the original object did not fit. - */ - overflow: boolean; - /** - * List of the properties. - */ - properties: Runtime.PropertyPreview[]; - /** - * List of the entries. Specified for map and set subtype values only. - */ - entries?: Runtime.EntryPreview[]; - } - - /** - * @experimental - */ - export interface PropertyPreview { - /** - * Property name. - */ - name: string; - /** - * Object type. Accessor means that the property itself is an accessor property. - */ - type: string; - /** - * User-friendly property value string. - */ - value?: string; - /** - * Nested value preview. - */ - valuePreview?: Runtime.ObjectPreview; - /** - * Object subtype hint. Specified for object type values only. - */ - subtype?: string; - } - - /** - * @experimental - */ - export interface EntryPreview { - /** - * Preview of the key. Specified for map-like collection entries. - */ - key?: Runtime.ObjectPreview; - /** - * Preview of the value. - */ - value: Runtime.ObjectPreview; - } - - /** - * Object property descriptor. - */ - export interface PropertyDescriptor { - /** - * Property name or symbol description. - */ - name: string; - /** - * The value associated with the property. - */ - value?: Runtime.RemoteObject; - /** - * True if the value associated with the property may be changed (data descriptors only). - */ - writable?: boolean; - /** - * A function which serves as a getter for the property, or undefined if there is no getter (accessor descriptors only). - */ - get?: Runtime.RemoteObject; - /** - * A function which serves as a setter for the property, or undefined if there is no setter (accessor descriptors only). - */ - set?: Runtime.RemoteObject; - /** - * True if the type of this property descriptor may be changed and if the property may be deleted from the corresponding object. - */ - configurable: boolean; - /** - * True if this property shows up during enumeration of the properties on the corresponding object. - */ - enumerable: boolean; - /** - * True if the result was thrown during the evaluation. - */ - wasThrown?: boolean; - /** - * True if the property is owned for the object. - */ - isOwn?: boolean; - /** - * Property symbol object, if the property is of the symbol type. - */ - symbol?: Runtime.RemoteObject; - } - - /** - * Object internal property descriptor. This property isn't normally visible in JavaScript code. - */ - export interface InternalPropertyDescriptor { - /** - * Conventional property name. - */ - name: string; - /** - * The value associated with the property. - */ - value?: Runtime.RemoteObject; - } - - /** - * Represents function call argument. Either remote object id objectId, primitive value, unserializable primitive value or neither of (for undefined) them should be specified. - */ - export interface CallArgument { - /** - * Primitive value. - */ - value?: any; - /** - * Primitive value which can not be JSON-stringified. - */ - unserializableValue?: Runtime.UnserializableValue; - /** - * Remote object handle. - */ - objectId?: Runtime.RemoteObjectId; - } - - /** - * Id of an execution context. - */ - export type ExecutionContextId = number; - - /** - * Description of an isolated world. - */ - export interface ExecutionContextDescription { - /** - * Unique id of the execution context. It can be used to specify in which execution context script evaluation should be performed. - */ - id: Runtime.ExecutionContextId; - /** - * Execution context origin. - */ - origin: string; - /** - * Human readable name describing given context. - */ - name: string; - /** - * Embedder-specific auxiliary data. - */ - auxData?: {}; - } - - /** - * Detailed information about exception (or error) that was thrown during script compilation or execution. - */ - export interface ExceptionDetails { - /** - * Exception id. - */ - exceptionId: number; - /** - * Exception text, which should be used together with exception object when available. - */ - text: string; - /** - * Line number of the exception location (0-based). - */ - lineNumber: number; - /** - * Column number of the exception location (0-based). - */ - columnNumber: number; - /** - * Script ID of the exception location. - */ - scriptId?: Runtime.ScriptId; - /** - * URL of the exception location, to be used when the script was not reported. - */ - url?: string; - /** - * JavaScript stack trace if available. - */ - stackTrace?: Runtime.StackTrace; - /** - * Exception object if available. - */ - exception?: Runtime.RemoteObject; - /** - * Identifier of the context where exception happened. - */ - executionContextId?: Runtime.ExecutionContextId; - } - - /** - * Number of milliseconds since epoch. - */ - export type Timestamp = number; - - /** - * Stack entry for runtime errors and assertions. - */ - export interface CallFrame { - /** - * JavaScript function name. - */ - functionName: string; - /** - * JavaScript script id. - */ - scriptId: Runtime.ScriptId; - /** - * JavaScript script name or url. - */ - url: string; - /** - * JavaScript script line number (0-based). - */ - lineNumber: number; - /** - * JavaScript script column number (0-based). - */ - columnNumber: number; - } - - /** - * Call frames for assertions or error messages. - */ - export interface StackTrace { - /** - * String label of this stack trace. For async traces this may be a name of the function that initiated the async call. - */ - description?: string; - /** - * JavaScript function name. - */ - callFrames: Runtime.CallFrame[]; - /** - * Asynchronous JavaScript stack trace that preceded this stack, if available. - */ - parent?: Runtime.StackTrace; - /** - * Creation frame of the Promise which produced the next synchronous trace when resolved, if available. - * @experimental - */ - promiseCreationFrame?: Runtime.CallFrame; - } - - export interface EvaluateParameterType { - /** - * Expression to evaluate. - */ - expression: string; - /** - * Symbolic group name that can be used to release multiple objects. - */ - objectGroup?: string; - /** - * Determines whether Command Line API should be available during the evaluation. - */ - includeCommandLineAPI?: boolean; - /** - * In silent mode exceptions thrown during evaluation are not reported and do not pause execution. Overrides setPauseOnException state. - */ - silent?: boolean; - /** - * Specifies in which execution context to perform evaluation. If the parameter is omitted the evaluation will be performed in the context of the inspected page. - */ - contextId?: Runtime.ExecutionContextId; - /** - * Whether the result is expected to be a JSON object that should be sent by value. - */ - returnByValue?: boolean; - /** - * Whether preview should be generated for the result. - * @experimental - */ - generatePreview?: boolean; - /** - * Whether execution should be treated as initiated by user in the UI. - * @experimental - */ - userGesture?: boolean; - /** - * Whether execution should wait for promise to be resolved. If the result of evaluation is not a Promise, it's considered to be an error. - */ - awaitPromise?: boolean; - } - - export interface AwaitPromiseParameterType { - /** - * Identifier of the promise. - */ - promiseObjectId: Runtime.RemoteObjectId; - /** - * Whether the result is expected to be a JSON object that should be sent by value. - */ - returnByValue?: boolean; - /** - * Whether preview should be generated for the result. - */ - generatePreview?: boolean; - } - - export interface CallFunctionOnParameterType { - /** - * Identifier of the object to call function on. - */ - objectId: Runtime.RemoteObjectId; - /** - * Declaration of the function to call. - */ - functionDeclaration: string; - /** - * Call arguments. All call arguments must belong to the same JavaScript world as the target object. - */ - arguments?: Runtime.CallArgument[]; - /** - * In silent mode exceptions thrown during evaluation are not reported and do not pause execution. Overrides setPauseOnException state. - */ - silent?: boolean; - /** - * Whether the result is expected to be a JSON object which should be sent by value. - */ - returnByValue?: boolean; - /** - * Whether preview should be generated for the result. - * @experimental - */ - generatePreview?: boolean; - /** - * Whether execution should be treated as initiated by user in the UI. - * @experimental - */ - userGesture?: boolean; - /** - * Whether execution should wait for promise to be resolved. If the result of evaluation is not a Promise, it's considered to be an error. - */ - awaitPromise?: boolean; - } - - export interface GetPropertiesParameterType { - /** - * Identifier of the object to return properties for. - */ - objectId: Runtime.RemoteObjectId; - /** - * If true, returns properties belonging only to the element itself, not to its prototype chain. - */ - ownProperties?: boolean; - /** - * If true, returns accessor properties (with getter/setter) only; internal properties are not returned either. - * @experimental - */ - accessorPropertiesOnly?: boolean; - /** - * Whether preview should be generated for the results. - * @experimental - */ - generatePreview?: boolean; - } - - export interface ReleaseObjectParameterType { - /** - * Identifier of the object to release. - */ - objectId: Runtime.RemoteObjectId; - } - - export interface ReleaseObjectGroupParameterType { - /** - * Symbolic object group name. - */ - objectGroup: string; - } - - export interface SetCustomObjectFormatterEnabledParameterType { - enabled: boolean; - } - - export interface CompileScriptParameterType { - /** - * Expression to compile. - */ - expression: string; - /** - * Source url to be set for the script. - */ - sourceURL: string; - /** - * Specifies whether the compiled script should be persisted. - */ - persistScript: boolean; - /** - * Specifies in which execution context to perform script run. If the parameter is omitted the evaluation will be performed in the context of the inspected page. - */ - executionContextId?: Runtime.ExecutionContextId; - } - - export interface RunScriptParameterType { - /** - * Id of the script to run. - */ - scriptId: Runtime.ScriptId; - /** - * Specifies in which execution context to perform script run. If the parameter is omitted the evaluation will be performed in the context of the inspected page. - */ - executionContextId?: Runtime.ExecutionContextId; - /** - * Symbolic group name that can be used to release multiple objects. - */ - objectGroup?: string; - /** - * In silent mode exceptions thrown during evaluation are not reported and do not pause execution. Overrides setPauseOnException state. - */ - silent?: boolean; - /** - * Determines whether Command Line API should be available during the evaluation. - */ - includeCommandLineAPI?: boolean; - /** - * Whether the result is expected to be a JSON object which should be sent by value. - */ - returnByValue?: boolean; - /** - * Whether preview should be generated for the result. - */ - generatePreview?: boolean; - /** - * Whether execution should wait for promise to be resolved. If the result of evaluation is not a Promise, it's considered to be an error. - */ - awaitPromise?: boolean; - } - - export interface EvaluateReturnType { - /** - * Evaluation result. - */ - result: Runtime.RemoteObject; - /** - * Exception details. - */ - exceptionDetails?: Runtime.ExceptionDetails; - } - - export interface AwaitPromiseReturnType { - /** - * Promise result. Will contain rejected value if promise was rejected. - */ - result: Runtime.RemoteObject; - /** - * Exception details if stack strace is available. - */ - exceptionDetails?: Runtime.ExceptionDetails; - } - - export interface CallFunctionOnReturnType { - /** - * Call result. - */ - result: Runtime.RemoteObject; - /** - * Exception details. - */ - exceptionDetails?: Runtime.ExceptionDetails; - } - - export interface GetPropertiesReturnType { - /** - * Object properties. - */ - result: Runtime.PropertyDescriptor[]; - /** - * Internal object properties (only of the element itself). - */ - internalProperties?: Runtime.InternalPropertyDescriptor[]; - /** - * Exception details. - */ - exceptionDetails?: Runtime.ExceptionDetails; - } - - export interface CompileScriptReturnType { - /** - * Id of the script. - */ - scriptId?: Runtime.ScriptId; - /** - * Exception details. - */ - exceptionDetails?: Runtime.ExceptionDetails; - } - - export interface RunScriptReturnType { - /** - * Run result. - */ - result: Runtime.RemoteObject; - /** - * Exception details. - */ - exceptionDetails?: Runtime.ExceptionDetails; - } - - export interface ExecutionContextCreatedEventDataType { - /** - * A newly created execution context. - */ - context: Runtime.ExecutionContextDescription; - } - - export interface ExecutionContextDestroyedEventDataType { - /** - * Id of the destroyed context - */ - executionContextId: Runtime.ExecutionContextId; - } - - export interface ExceptionThrownEventDataType { - /** - * Timestamp of the exception. - */ - timestamp: Runtime.Timestamp; - exceptionDetails: Runtime.ExceptionDetails; - } - - export interface ExceptionRevokedEventDataType { - /** - * Reason describing why exception was revoked. - */ - reason: string; - /** - * The id of revoked exception, as reported in exceptionUnhandled. - */ - exceptionId: number; - } - - export interface ConsoleAPICalledEventDataType { - /** - * Type of the call. - */ - type: string; - /** - * Call arguments. - */ - args: Runtime.RemoteObject[]; - /** - * Identifier of the context where the call was made. - */ - executionContextId: Runtime.ExecutionContextId; - /** - * Call timestamp. - */ - timestamp: Runtime.Timestamp; - /** - * Stack trace captured when the call was made. - */ - stackTrace?: Runtime.StackTrace; - } - - export interface InspectRequestedEventDataType { - object: Runtime.RemoteObject; - hints: {}; - } - } - - export namespace Debugger { - /** - * Breakpoint identifier. - */ - export type BreakpointId = string; - - /** - * Call frame identifier. - */ - export type CallFrameId = string; - - /** - * Location in the source code. - */ - export interface Location { - /** - * Script identifier as reported in the Debugger.scriptParsed. - */ - scriptId: Runtime.ScriptId; - /** - * Line number in the script (0-based). - */ - lineNumber: number; - /** - * Column number in the script (0-based). - */ - columnNumber?: number; - } - - /** - * Location in the source code. - * @experimental - */ - export interface ScriptPosition { - lineNumber: number; - columnNumber: number; - } - - /** - * JavaScript call frame. Array of call frames form the call stack. - */ - export interface CallFrame { - /** - * Call frame identifier. This identifier is only valid while the virtual machine is paused. - */ - callFrameId: Debugger.CallFrameId; - /** - * Name of the JavaScript function called on this call frame. - */ - functionName: string; - /** - * Location in the source code. - * @experimental - */ - functionLocation?: Debugger.Location; - /** - * Location in the source code. - */ - location: Debugger.Location; - /** - * Scope chain for this call frame. - */ - scopeChain: Debugger.Scope[]; - /** - * this object for this call frame. - */ - this: Runtime.RemoteObject; - /** - * The value being returned, if the function is at return point. - */ - returnValue?: Runtime.RemoteObject; - } - - /** - * Scope description. - */ - export interface Scope { - /** - * Scope type. - */ - type: string; - /** - * Object representing the scope. For global and with scopes it represents the actual object; for the rest of the scopes, it is artificial transient object enumerating scope variables as its properties. - */ - object: Runtime.RemoteObject; - name?: string; - /** - * Location in the source code where scope starts - */ - startLocation?: Debugger.Location; - /** - * Location in the source code where scope ends - */ - endLocation?: Debugger.Location; - } - - /** - * Search match for resource. - * @experimental - */ - export interface SearchMatch { - /** - * Line number in resource content. - */ - lineNumber: number; - /** - * Line with match content. - */ - lineContent: string; - } - - /** - * @experimental - */ - export interface BreakLocation { - /** - * Script identifier as reported in the Debugger.scriptParsed. - */ - scriptId: Runtime.ScriptId; - /** - * Line number in the script (0-based). - */ - lineNumber: number; - /** - * Column number in the script (0-based). - */ - columnNumber?: number; - type?: string; - } - - export interface SetBreakpointsActiveParameterType { - /** - * New value for breakpoints active state. - */ - active: boolean; - } - - export interface SetSkipAllPausesParameterType { - /** - * New value for skip pauses state. - */ - skip: boolean; - } - - export interface SetBreakpointByUrlParameterType { - /** - * Line number to set breakpoint at. - */ - lineNumber: number; - /** - * URL of the resources to set breakpoint on. - */ - url?: string; - /** - * Regex pattern for the URLs of the resources to set breakpoints on. Either url or urlRegex must be specified. - */ - urlRegex?: string; - /** - * Offset in the line to set breakpoint at. - */ - columnNumber?: number; - /** - * Expression to use as a breakpoint condition. When specified, debugger will only stop on the breakpoint if this expression evaluates to true. - */ - condition?: string; - } - - export interface SetBreakpointParameterType { - /** - * Location to set breakpoint in. - */ - location: Debugger.Location; - /** - * Expression to use as a breakpoint condition. When specified, debugger will only stop on the breakpoint if this expression evaluates to true. - */ - condition?: string; - } - - export interface RemoveBreakpointParameterType { - breakpointId: Debugger.BreakpointId; - } - - export interface GetPossibleBreakpointsParameterType { - /** - * Start of range to search possible breakpoint locations in. - */ - start: Debugger.Location; - /** - * End of range to search possible breakpoint locations in (excluding). When not specified, end of scripts is used as end of range. - */ - end?: Debugger.Location; - /** - * Only consider locations which are in the same (non-nested) function as start. - */ - restrictToFunction?: boolean; - } - - export interface ContinueToLocationParameterType { - /** - * Location to continue to. - */ - location: Debugger.Location; - /** - * @experimental - */ - targetCallFrames?: string; - } - - export interface SearchInContentParameterType { - /** - * Id of the script to search in. - */ - scriptId: Runtime.ScriptId; - /** - * String to search for. - */ - query: string; - /** - * If true, search is case sensitive. - */ - caseSensitive?: boolean; - /** - * If true, treats string parameter as regex. - */ - isRegex?: boolean; - } - - export interface SetScriptSourceParameterType { - /** - * Id of the script to edit. - */ - scriptId: Runtime.ScriptId; - /** - * New content of the script. - */ - scriptSource: string; - /** - * If true the change will not actually be applied. Dry run may be used to get result description without actually modifying the code. - */ - dryRun?: boolean; - } - - export interface RestartFrameParameterType { - /** - * Call frame identifier to evaluate on. - */ - callFrameId: Debugger.CallFrameId; - } - - export interface GetScriptSourceParameterType { - /** - * Id of the script to get source for. - */ - scriptId: Runtime.ScriptId; - } - - export interface SetPauseOnExceptionsParameterType { - /** - * Pause on exceptions mode. - */ - state: string; - } - - export interface EvaluateOnCallFrameParameterType { - /** - * Call frame identifier to evaluate on. - */ - callFrameId: Debugger.CallFrameId; - /** - * Expression to evaluate. - */ - expression: string; - /** - * String object group name to put result into (allows rapid releasing resulting object handles using releaseObjectGroup). - */ - objectGroup?: string; - /** - * Specifies whether command line API should be available to the evaluated expression, defaults to false. - */ - includeCommandLineAPI?: boolean; - /** - * In silent mode exceptions thrown during evaluation are not reported and do not pause execution. Overrides setPauseOnException state. - */ - silent?: boolean; - /** - * Whether the result is expected to be a JSON object that should be sent by value. - */ - returnByValue?: boolean; - /** - * Whether preview should be generated for the result. - * @experimental - */ - generatePreview?: boolean; - /** - * Whether to throw an exception if side effect cannot be ruled out during evaluation. - * @experimental - */ - throwOnSideEffect?: boolean; - } - - export interface SetVariableValueParameterType { - /** - * 0-based number of scope as was listed in scope chain. Only 'local', 'closure' and 'catch' scope types are allowed. Other scopes could be manipulated manually. - */ - scopeNumber: number; - /** - * Variable name. - */ - variableName: string; - /** - * New variable value. - */ - newValue: Runtime.CallArgument; - /** - * Id of callframe that holds variable. - */ - callFrameId: Debugger.CallFrameId; - } - - export interface SetAsyncCallStackDepthParameterType { - /** - * Maximum depth of async call stacks. Setting to 0 will effectively disable collecting async call stacks (default). - */ - maxDepth: number; - } - - export interface SetBlackboxPatternsParameterType { - /** - * Array of regexps that will be used to check script url for blackbox state. - */ - patterns: string[]; - } - - export interface SetBlackboxedRangesParameterType { - /** - * Id of the script. - */ - scriptId: Runtime.ScriptId; - positions: Debugger.ScriptPosition[]; - } - - export interface SetBreakpointByUrlReturnType { - /** - * Id of the created breakpoint for further reference. - */ - breakpointId: Debugger.BreakpointId; - /** - * List of the locations this breakpoint resolved into upon addition. - */ - locations: Debugger.Location[]; - } - - export interface SetBreakpointReturnType { - /** - * Id of the created breakpoint for further reference. - */ - breakpointId: Debugger.BreakpointId; - /** - * Location this breakpoint resolved into. - */ - actualLocation: Debugger.Location; - } - - export interface GetPossibleBreakpointsReturnType { - /** - * List of the possible breakpoint locations. - */ - locations: Debugger.BreakLocation[]; - } - - export interface SearchInContentReturnType { - /** - * List of search matches. - */ - result: Debugger.SearchMatch[]; - } - - export interface SetScriptSourceReturnType { - /** - * New stack trace in case editing has happened while VM was stopped. - */ - callFrames?: Debugger.CallFrame[]; - /** - * Whether current call stack was modified after applying the changes. - */ - stackChanged?: boolean; - /** - * Async stack trace, if any. - */ - asyncStackTrace?: Runtime.StackTrace; - /** - * Exception details if any. - */ - exceptionDetails?: Runtime.ExceptionDetails; - } - - export interface RestartFrameReturnType { - /** - * New stack trace. - */ - callFrames: Debugger.CallFrame[]; - /** - * Async stack trace, if any. - */ - asyncStackTrace?: Runtime.StackTrace; - } - - export interface GetScriptSourceReturnType { - /** - * Script source. - */ - scriptSource: string; - } - - export interface EvaluateOnCallFrameReturnType { - /** - * Object wrapper for the evaluation result. - */ - result: Runtime.RemoteObject; - /** - * Exception details. - */ - exceptionDetails?: Runtime.ExceptionDetails; - } - - export interface ScriptParsedEventDataType { - /** - * Identifier of the script parsed. - */ - scriptId: Runtime.ScriptId; - /** - * URL or name of the script parsed (if any). - */ - url: string; - /** - * Line offset of the script within the resource with given URL (for script tags). - */ - startLine: number; - /** - * Column offset of the script within the resource with given URL. - */ - startColumn: number; - /** - * Last line of the script. - */ - endLine: number; - /** - * Length of the last line of the script. - */ - endColumn: number; - /** - * Specifies script creation context. - */ - executionContextId: Runtime.ExecutionContextId; - /** - * Content hash of the script. - */ - hash: string; - /** - * Embedder-specific auxiliary data. - */ - executionContextAuxData?: {}; - /** - * True, if this script is generated as a result of the live edit operation. - * @experimental - */ - isLiveEdit?: boolean; - /** - * URL of source map associated with script (if any). - */ - sourceMapURL?: string; - /** - * True, if this script has sourceURL. - * @experimental - */ - hasSourceURL?: boolean; - /** - * True, if this script is ES6 module. - * @experimental - */ - isModule?: boolean; - /** - * This script length. - * @experimental - */ - length?: number; - /** - * JavaScript top stack frame of where the script parsed event was triggered if available. - * @experimental - */ - stackTrace?: Runtime.StackTrace; - } - - export interface ScriptFailedToParseEventDataType { - /** - * Identifier of the script parsed. - */ - scriptId: Runtime.ScriptId; - /** - * URL or name of the script parsed (if any). - */ - url: string; - /** - * Line offset of the script within the resource with given URL (for script tags). - */ - startLine: number; - /** - * Column offset of the script within the resource with given URL. - */ - startColumn: number; - /** - * Last line of the script. - */ - endLine: number; - /** - * Length of the last line of the script. - */ - endColumn: number; - /** - * Specifies script creation context. - */ - executionContextId: Runtime.ExecutionContextId; - /** - * Content hash of the script. - */ - hash: string; - /** - * Embedder-specific auxiliary data. - */ - executionContextAuxData?: {}; - /** - * URL of source map associated with script (if any). - */ - sourceMapURL?: string; - /** - * True, if this script has sourceURL. - * @experimental - */ - hasSourceURL?: boolean; - /** - * True, if this script is ES6 module. - * @experimental - */ - isModule?: boolean; - /** - * This script length. - * @experimental - */ - length?: number; - /** - * JavaScript top stack frame of where the script parsed event was triggered if available. - * @experimental - */ - stackTrace?: Runtime.StackTrace; - } - - export interface BreakpointResolvedEventDataType { - /** - * Breakpoint unique identifier. - */ - breakpointId: Debugger.BreakpointId; - /** - * Actual breakpoint location. - */ - location: Debugger.Location; - } - - export interface PausedEventDataType { - /** - * Call stack the virtual machine stopped on. - */ - callFrames: Debugger.CallFrame[]; - /** - * Pause reason. - */ - reason: string; - /** - * Object containing break-specific auxiliary properties. - */ - data?: {}; - /** - * Hit breakpoints IDs - */ - hitBreakpoints?: string[]; - /** - * Async stack trace, if any. - */ - asyncStackTrace?: Runtime.StackTrace; - } - } - - export namespace Console { - /** - * Console message. - */ - export interface ConsoleMessage { - /** - * Message source. - */ - source: string; - /** - * Message severity. - */ - level: string; - /** - * Message text. - */ - text: string; - /** - * URL of the message origin. - */ - url?: string; - /** - * Line number in the resource that generated this message (1-based). - */ - line?: number; - /** - * Column number in the resource that generated this message (1-based). - */ - column?: number; - } - - export interface MessageAddedEventDataType { - /** - * Console message that has been added. - */ - message: Console.ConsoleMessage; - } - } - - export namespace Profiler { - /** - * Profile node. Holds callsite information, execution statistics and child nodes. - */ - export interface ProfileNode { - /** - * Unique id of the node. - */ - id: number; - /** - * Function location. - */ - callFrame: Runtime.CallFrame; - /** - * Number of samples where this node was on top of the call stack. - * @experimental - */ - hitCount?: number; - /** - * Child node ids. - */ - children?: number[]; - /** - * The reason of being not optimized. The function may be deoptimized or marked as don't optimize. - */ - deoptReason?: string; - /** - * An array of source position ticks. - * @experimental - */ - positionTicks?: Profiler.PositionTickInfo[]; - } - - /** - * Profile. - */ - export interface Profile { - /** - * The list of profile nodes. First item is the root node. - */ - nodes: Profiler.ProfileNode[]; - /** - * Profiling start timestamp in microseconds. - */ - startTime: number; - /** - * Profiling end timestamp in microseconds. - */ - endTime: number; - /** - * Ids of samples top nodes. - */ - samples?: number[]; - /** - * Time intervals between adjacent samples in microseconds. The first delta is relative to the profile startTime. - */ - timeDeltas?: number[]; - } - - /** - * Specifies a number of samples attributed to a certain source position. - * @experimental - */ - export interface PositionTickInfo { - /** - * Source line number (1-based). - */ - line: number; - /** - * Number of samples attributed to the source line. - */ - ticks: number; - } - - /** - * Coverage data for a source range. - * @experimental - */ - export interface CoverageRange { - /** - * JavaScript script source offset for the range start. - */ - startOffset: number; - /** - * JavaScript script source offset for the range end. - */ - endOffset: number; - /** - * Collected execution count of the source range. - */ - count: number; - } - - /** - * Coverage data for a JavaScript function. - * @experimental - */ - export interface FunctionCoverage { - /** - * JavaScript function name. - */ - functionName: string; - /** - * Source ranges inside the function with coverage data. - */ - ranges: Profiler.CoverageRange[]; - } - - /** - * Coverage data for a JavaScript script. - * @experimental - */ - export interface ScriptCoverage { - /** - * JavaScript script id. - */ - scriptId: Runtime.ScriptId; - /** - * JavaScript script name or url. - */ - url: string; - /** - * Functions contained in the script that has coverage data. - */ - functions: Profiler.FunctionCoverage[]; - } - - export interface SetSamplingIntervalParameterType { - /** - * New sampling interval in microseconds. - */ - interval: number; - } - - export interface StartPreciseCoverageParameterType { - /** - * Collect accurate call counts beyond simple 'covered' or 'not covered'. - */ - callCount?: boolean; - } - - export interface StopReturnType { - /** - * Recorded profile. - */ - profile: Profiler.Profile; - } - - export interface TakePreciseCoverageReturnType { - /** - * Coverage data for the current isolate. - */ - result: Profiler.ScriptCoverage[]; - } - - export interface GetBestEffortCoverageReturnType { - /** - * Coverage data for the current isolate. - */ - result: Profiler.ScriptCoverage[]; - } - - export interface ConsoleProfileStartedEventDataType { - id: string; - /** - * Location of console.profile(). - */ - location: Debugger.Location; - /** - * Profile title passed as an argument to console.profile(). - */ - title?: string; - } - - export interface ConsoleProfileFinishedEventDataType { - id: string; - /** - * Location of console.profileEnd(). - */ - location: Debugger.Location; - profile: Profiler.Profile; - /** - * Profile title passed as an argument to console.profile(). - */ - title?: string; - } - } - - export namespace HeapProfiler { - /** - * Heap snapshot object id. - */ - export type HeapSnapshotObjectId = string; - - /** - * Sampling Heap Profile node. Holds callsite information, allocation statistics and child nodes. - */ - export interface SamplingHeapProfileNode { - /** - * Function location. - */ - callFrame: Runtime.CallFrame; - /** - * Allocations size in bytes for the node excluding children. - */ - selfSize: number; - /** - * Child nodes. - */ - children: HeapProfiler.SamplingHeapProfileNode[]; - } - - /** - * Profile. - */ - export interface SamplingHeapProfile { - head: HeapProfiler.SamplingHeapProfileNode; - } - - export interface StartTrackingHeapObjectsParameterType { - trackAllocations?: boolean; - } - - export interface StopTrackingHeapObjectsParameterType { - /** - * If true 'reportHeapSnapshotProgress' events will be generated while snapshot is being taken when the tracking is stopped. - */ - reportProgress?: boolean; - } - - export interface TakeHeapSnapshotParameterType { - /** - * If true 'reportHeapSnapshotProgress' events will be generated while snapshot is being taken. - */ - reportProgress?: boolean; - } - - export interface GetObjectByHeapObjectIdParameterType { - objectId: HeapProfiler.HeapSnapshotObjectId; - /** - * Symbolic group name that can be used to release multiple objects. - */ - objectGroup?: string; - } - - export interface AddInspectedHeapObjectParameterType { - /** - * Heap snapshot object id to be accessible by means of $x command line API. - */ - heapObjectId: HeapProfiler.HeapSnapshotObjectId; - } - - export interface GetHeapObjectIdParameterType { - /** - * Identifier of the object to get heap object id for. - */ - objectId: Runtime.RemoteObjectId; - } - - export interface StartSamplingParameterType { - /** - * Average sample interval in bytes. Poisson distribution is used for the intervals. The default value is 32768 bytes. - */ - samplingInterval?: number; - } - - export interface GetObjectByHeapObjectIdReturnType { - /** - * Evaluation result. - */ - result: Runtime.RemoteObject; - } - - export interface GetHeapObjectIdReturnType { - /** - * Id of the heap snapshot object corresponding to the passed remote object id. - */ - heapSnapshotObjectId: HeapProfiler.HeapSnapshotObjectId; - } - - export interface StopSamplingReturnType { - /** - * Recorded sampling heap profile. - */ - profile: HeapProfiler.SamplingHeapProfile; - } - - export interface AddHeapSnapshotChunkEventDataType { - chunk: string; - } - - export interface ReportHeapSnapshotProgressEventDataType { - done: number; - total: number; - finished?: boolean; - } - - export interface LastSeenObjectIdEventDataType { - lastSeenObjectId: number; - timestamp: number; - } - - export interface HeapStatsUpdateEventDataType { - /** - * An array of triplets. Each triplet describes a fragment. The first integer is the fragment index, the second integer is a total count of objects for the fragment, the third integer is a total size of the objects for the fragment. - */ - statsUpdate: number[]; - } - } - - /** - * The inspector.Session is used for dispatching messages to the V8 inspector back-end and receiving message responses and notifications. - */ - export class Session extends EventEmitter { - /** - * Create a new instance of the inspector.Session class. The inspector session needs to be connected through session.connect() before the messages can be dispatched to the inspector backend. - */ - constructor(); - - /** - * Connects a session to the inspector back-end. An exception will be thrown if there is already a connected session established either through the API or by a front-end connected to the Inspector WebSocket port. - */ - connect(): void; - - /** - * Immediately close the session. All pending message callbacks will be called with an error. session.connect() will need to be called to be able to send messages again. Reconnected session will lose all inspector state, such as enabled agents or configured breakpoints. - */ - disconnect(): void; - - /** - * Posts a message to the inspector back-end. callback will be notified when a response is received. callback is a function that accepts two optional arguments - error and message-specific result. - */ - post(method: string, params?: {}, callback?: (err: Error | null, params?: {}) => void): void; - post(method: string, callback?: (err: Error | null, params?: {}) => void): void; - - /** - * Returns supported domains. - */ - post(method: "Schema.getDomains", callback?: (err: Error | null, params: Schema.GetDomainsReturnType) => void): void; - /** - * Evaluates expression on global object. - */ - post(method: "Runtime.evaluate", params?: Runtime.EvaluateParameterType, callback?: (err: Error | null, params: Runtime.EvaluateReturnType) => void): void; - post(method: "Runtime.evaluate", callback?: (err: Error | null, params: Runtime.EvaluateReturnType) => void): void; - - /** - * Add handler to promise with given promise object id. - */ - post(method: "Runtime.awaitPromise", params?: Runtime.AwaitPromiseParameterType, callback?: (err: Error | null, params: Runtime.AwaitPromiseReturnType) => void): void; - post(method: "Runtime.awaitPromise", callback?: (err: Error | null, params: Runtime.AwaitPromiseReturnType) => void): void; - - /** - * Calls function with given declaration on the given object. Object group of the result is inherited from the target object. - */ - post(method: "Runtime.callFunctionOn", params?: Runtime.CallFunctionOnParameterType, callback?: (err: Error | null, params: Runtime.CallFunctionOnReturnType) => void): void; - post(method: "Runtime.callFunctionOn", callback?: (err: Error | null, params: Runtime.CallFunctionOnReturnType) => void): void; - - /** - * Returns properties of a given object. Object group of the result is inherited from the target object. - */ - post(method: "Runtime.getProperties", params?: Runtime.GetPropertiesParameterType, callback?: (err: Error | null, params: Runtime.GetPropertiesReturnType) => void): void; - post(method: "Runtime.getProperties", callback?: (err: Error | null, params: Runtime.GetPropertiesReturnType) => void): void; - - /** - * Releases remote object with given id. - */ - post(method: "Runtime.releaseObject", params?: Runtime.ReleaseObjectParameterType, callback?: (err: Error | null) => void): void; - post(method: "Runtime.releaseObject", callback?: (err: Error | null) => void): void; - - /** - * Releases all remote objects that belong to a given group. - */ - post(method: "Runtime.releaseObjectGroup", params?: Runtime.ReleaseObjectGroupParameterType, callback?: (err: Error | null) => void): void; - post(method: "Runtime.releaseObjectGroup", callback?: (err: Error | null) => void): void; - - /** - * Tells inspected instance to run if it was waiting for debugger to attach. - */ - post(method: "Runtime.runIfWaitingForDebugger", callback?: (err: Error | null) => void): void; - - /** - * Enables reporting of execution contexts creation by means of executionContextCreated event. When the reporting gets enabled the event will be sent immediately for each existing execution context. - */ - post(method: "Runtime.enable", callback?: (err: Error | null) => void): void; - - /** - * Disables reporting of execution contexts creation. - */ - post(method: "Runtime.disable", callback?: (err: Error | null) => void): void; - - /** - * Discards collected exceptions and console API calls. - */ - post(method: "Runtime.discardConsoleEntries", callback?: (err: Error | null) => void): void; - - /** - * @experimental - */ - post(method: "Runtime.setCustomObjectFormatterEnabled", params?: Runtime.SetCustomObjectFormatterEnabledParameterType, callback?: (err: Error | null) => void): void; - post(method: "Runtime.setCustomObjectFormatterEnabled", callback?: (err: Error | null) => void): void; - - /** - * Compiles expression. - */ - post(method: "Runtime.compileScript", params?: Runtime.CompileScriptParameterType, callback?: (err: Error | null, params: Runtime.CompileScriptReturnType) => void): void; - post(method: "Runtime.compileScript", callback?: (err: Error | null, params: Runtime.CompileScriptReturnType) => void): void; - - /** - * Runs script with given id in a given context. - */ - post(method: "Runtime.runScript", params?: Runtime.RunScriptParameterType, callback?: (err: Error | null, params: Runtime.RunScriptReturnType) => void): void; - post(method: "Runtime.runScript", callback?: (err: Error | null, params: Runtime.RunScriptReturnType) => void): void; - /** - * Enables debugger for the given page. Clients should not assume that the debugging has been enabled until the result for this command is received. - */ - post(method: "Debugger.enable", callback?: (err: Error | null) => void): void; - - /** - * Disables debugger for given page. - */ - post(method: "Debugger.disable", callback?: (err: Error | null) => void): void; - - /** - * Activates / deactivates all breakpoints on the page. - */ - post(method: "Debugger.setBreakpointsActive", params?: Debugger.SetBreakpointsActiveParameterType, callback?: (err: Error | null) => void): void; - post(method: "Debugger.setBreakpointsActive", callback?: (err: Error | null) => void): void; - - /** - * Makes page not interrupt on any pauses (breakpoint, exception, dom exception etc). - */ - post(method: "Debugger.setSkipAllPauses", params?: Debugger.SetSkipAllPausesParameterType, callback?: (err: Error | null) => void): void; - post(method: "Debugger.setSkipAllPauses", callback?: (err: Error | null) => void): void; - - /** - * Sets JavaScript breakpoint at given location specified either by URL or URL regex. Once this command is issued, all existing parsed scripts will have breakpoints resolved and returned in locations property. Further matching script parsing will result in subsequent breakpointResolved events issued. This logical breakpoint will survive page reloads. - */ - post(method: "Debugger.setBreakpointByUrl", params?: Debugger.SetBreakpointByUrlParameterType, callback?: (err: Error | null, params: Debugger.SetBreakpointByUrlReturnType) => void): void; - post(method: "Debugger.setBreakpointByUrl", callback?: (err: Error | null, params: Debugger.SetBreakpointByUrlReturnType) => void): void; - - /** - * Sets JavaScript breakpoint at a given location. - */ - post(method: "Debugger.setBreakpoint", params?: Debugger.SetBreakpointParameterType, callback?: (err: Error | null, params: Debugger.SetBreakpointReturnType) => void): void; - post(method: "Debugger.setBreakpoint", callback?: (err: Error | null, params: Debugger.SetBreakpointReturnType) => void): void; - - /** - * Removes JavaScript breakpoint. - */ - post(method: "Debugger.removeBreakpoint", params?: Debugger.RemoveBreakpointParameterType, callback?: (err: Error | null) => void): void; - post(method: "Debugger.removeBreakpoint", callback?: (err: Error | null) => void): void; - - /** - * Returns possible locations for breakpoint. scriptId in start and end range locations should be the same. - * @experimental - */ - post(method: "Debugger.getPossibleBreakpoints", params?: Debugger.GetPossibleBreakpointsParameterType, callback?: (err: Error | null, params: Debugger.GetPossibleBreakpointsReturnType) => void): void; - post(method: "Debugger.getPossibleBreakpoints", callback?: (err: Error | null, params: Debugger.GetPossibleBreakpointsReturnType) => void): void; - - /** - * Continues execution until specific location is reached. - */ - post(method: "Debugger.continueToLocation", params?: Debugger.ContinueToLocationParameterType, callback?: (err: Error | null) => void): void; - post(method: "Debugger.continueToLocation", callback?: (err: Error | null) => void): void; - - /** - * Steps over the statement. - */ - post(method: "Debugger.stepOver", callback?: (err: Error | null) => void): void; - - /** - * Steps into the function call. - */ - post(method: "Debugger.stepInto", callback?: (err: Error | null) => void): void; - - /** - * Steps out of the function call. - */ - post(method: "Debugger.stepOut", callback?: (err: Error | null) => void): void; - - /** - * Stops on the next JavaScript statement. - */ - post(method: "Debugger.pause", callback?: (err: Error | null) => void): void; - - /** - * Steps into next scheduled async task if any is scheduled before next pause. Returns success when async task is actually scheduled, returns error if no task were scheduled or another scheduleStepIntoAsync was called. - * @experimental - */ - post(method: "Debugger.scheduleStepIntoAsync", callback?: (err: Error | null) => void): void; - - /** - * Resumes JavaScript execution. - */ - post(method: "Debugger.resume", callback?: (err: Error | null) => void): void; - - /** - * Searches for given string in script content. - * @experimental - */ - post(method: "Debugger.searchInContent", params?: Debugger.SearchInContentParameterType, callback?: (err: Error | null, params: Debugger.SearchInContentReturnType) => void): void; - post(method: "Debugger.searchInContent", callback?: (err: Error | null, params: Debugger.SearchInContentReturnType) => void): void; - - /** - * Edits JavaScript source live. - */ - post(method: "Debugger.setScriptSource", params?: Debugger.SetScriptSourceParameterType, callback?: (err: Error | null, params: Debugger.SetScriptSourceReturnType) => void): void; - post(method: "Debugger.setScriptSource", callback?: (err: Error | null, params: Debugger.SetScriptSourceReturnType) => void): void; - - /** - * Restarts particular call frame from the beginning. - */ - post(method: "Debugger.restartFrame", params?: Debugger.RestartFrameParameterType, callback?: (err: Error | null, params: Debugger.RestartFrameReturnType) => void): void; - post(method: "Debugger.restartFrame", callback?: (err: Error | null, params: Debugger.RestartFrameReturnType) => void): void; - - /** - * Returns source for the script with given id. - */ - post(method: "Debugger.getScriptSource", params?: Debugger.GetScriptSourceParameterType, callback?: (err: Error | null, params: Debugger.GetScriptSourceReturnType) => void): void; - post(method: "Debugger.getScriptSource", callback?: (err: Error | null, params: Debugger.GetScriptSourceReturnType) => void): void; - - /** - * Defines pause on exceptions state. Can be set to stop on all exceptions, uncaught exceptions or no exceptions. Initial pause on exceptions state is none. - */ - post(method: "Debugger.setPauseOnExceptions", params?: Debugger.SetPauseOnExceptionsParameterType, callback?: (err: Error | null) => void): void; - post(method: "Debugger.setPauseOnExceptions", callback?: (err: Error | null) => void): void; - - /** - * Evaluates expression on a given call frame. - */ - post(method: "Debugger.evaluateOnCallFrame", params?: Debugger.EvaluateOnCallFrameParameterType, callback?: (err: Error | null, params: Debugger.EvaluateOnCallFrameReturnType) => void): void; - post(method: "Debugger.evaluateOnCallFrame", callback?: (err: Error | null, params: Debugger.EvaluateOnCallFrameReturnType) => void): void; - - /** - * Changes value of variable in a callframe. Object-based scopes are not supported and must be mutated manually. - */ - post(method: "Debugger.setVariableValue", params?: Debugger.SetVariableValueParameterType, callback?: (err: Error | null) => void): void; - post(method: "Debugger.setVariableValue", callback?: (err: Error | null) => void): void; - - /** - * Enables or disables async call stacks tracking. - */ - post(method: "Debugger.setAsyncCallStackDepth", params?: Debugger.SetAsyncCallStackDepthParameterType, callback?: (err: Error | null) => void): void; - post(method: "Debugger.setAsyncCallStackDepth", callback?: (err: Error | null) => void): void; - - /** - * Replace previous blackbox patterns with passed ones. Forces backend to skip stepping/pausing in scripts with url matching one of the patterns. VM will try to leave blackboxed script by performing 'step in' several times, finally resorting to 'step out' if unsuccessful. - * @experimental - */ - post(method: "Debugger.setBlackboxPatterns", params?: Debugger.SetBlackboxPatternsParameterType, callback?: (err: Error | null) => void): void; - post(method: "Debugger.setBlackboxPatterns", callback?: (err: Error | null) => void): void; - - /** - * Makes backend skip steps in the script in blackboxed ranges. VM will try leave blacklisted scripts by performing 'step in' several times, finally resorting to 'step out' if unsuccessful. Positions array contains positions where blackbox state is changed. First interval isn't blackboxed. Array should be sorted. - * @experimental - */ - post(method: "Debugger.setBlackboxedRanges", params?: Debugger.SetBlackboxedRangesParameterType, callback?: (err: Error | null) => void): void; - post(method: "Debugger.setBlackboxedRanges", callback?: (err: Error | null) => void): void; - /** - * Enables console domain, sends the messages collected so far to the client by means of the messageAdded notification. - */ - post(method: "Console.enable", callback?: (err: Error | null) => void): void; - - /** - * Disables console domain, prevents further console messages from being reported to the client. - */ - post(method: "Console.disable", callback?: (err: Error | null) => void): void; - - /** - * Does nothing. - */ - post(method: "Console.clearMessages", callback?: (err: Error | null) => void): void; - post(method: "Profiler.enable", callback?: (err: Error | null) => void): void; - - post(method: "Profiler.disable", callback?: (err: Error | null) => void): void; - - /** - * Changes CPU profiler sampling interval. Must be called before CPU profiles recording started. - */ - post(method: "Profiler.setSamplingInterval", params?: Profiler.SetSamplingIntervalParameterType, callback?: (err: Error | null) => void): void; - post(method: "Profiler.setSamplingInterval", callback?: (err: Error | null) => void): void; - - post(method: "Profiler.start", callback?: (err: Error | null) => void): void; - - post(method: "Profiler.stop", callback?: (err: Error | null, params: Profiler.StopReturnType) => void): void; - - /** - * Enable precise code coverage. Coverage data for JavaScript executed before enabling precise code coverage may be incomplete. Enabling prevents running optimized code and resets execution counters. - * @experimental - */ - post(method: "Profiler.startPreciseCoverage", params?: Profiler.StartPreciseCoverageParameterType, callback?: (err: Error | null) => void): void; - post(method: "Profiler.startPreciseCoverage", callback?: (err: Error | null) => void): void; - - /** - * Disable precise code coverage. Disabling releases unnecessary execution count records and allows executing optimized code. - * @experimental - */ - post(method: "Profiler.stopPreciseCoverage", callback?: (err: Error | null) => void): void; - - /** - * Collect coverage data for the current isolate, and resets execution counters. Precise code coverage needs to have started. - * @experimental - */ - post(method: "Profiler.takePreciseCoverage", callback?: (err: Error | null, params: Profiler.TakePreciseCoverageReturnType) => void): void; - - /** - * Collect coverage data for the current isolate. The coverage data may be incomplete due to garbage collection. - * @experimental - */ - post(method: "Profiler.getBestEffortCoverage", callback?: (err: Error | null, params: Profiler.GetBestEffortCoverageReturnType) => void): void; - post(method: "HeapProfiler.enable", callback?: (err: Error | null) => void): void; - - post(method: "HeapProfiler.disable", callback?: (err: Error | null) => void): void; - - post(method: "HeapProfiler.startTrackingHeapObjects", params?: HeapProfiler.StartTrackingHeapObjectsParameterType, callback?: (err: Error | null) => void): void; - post(method: "HeapProfiler.startTrackingHeapObjects", callback?: (err: Error | null) => void): void; - - post(method: "HeapProfiler.stopTrackingHeapObjects", params?: HeapProfiler.StopTrackingHeapObjectsParameterType, callback?: (err: Error | null) => void): void; - post(method: "HeapProfiler.stopTrackingHeapObjects", callback?: (err: Error | null) => void): void; - - post(method: "HeapProfiler.takeHeapSnapshot", params?: HeapProfiler.TakeHeapSnapshotParameterType, callback?: (err: Error | null) => void): void; - post(method: "HeapProfiler.takeHeapSnapshot", callback?: (err: Error | null) => void): void; - - post(method: "HeapProfiler.collectGarbage", callback?: (err: Error | null) => void): void; - - post(method: "HeapProfiler.getObjectByHeapObjectId", params?: HeapProfiler.GetObjectByHeapObjectIdParameterType, callback?: (err: Error | null, params: HeapProfiler.GetObjectByHeapObjectIdReturnType) => void): void; - post(method: "HeapProfiler.getObjectByHeapObjectId", callback?: (err: Error | null, params: HeapProfiler.GetObjectByHeapObjectIdReturnType) => void): void; - - /** - * Enables console to refer to the node with given id via $x (see Command Line API for more details $x functions). - */ - post(method: "HeapProfiler.addInspectedHeapObject", params?: HeapProfiler.AddInspectedHeapObjectParameterType, callback?: (err: Error | null) => void): void; - post(method: "HeapProfiler.addInspectedHeapObject", callback?: (err: Error | null) => void): void; - - post(method: "HeapProfiler.getHeapObjectId", params?: HeapProfiler.GetHeapObjectIdParameterType, callback?: (err: Error | null, params: HeapProfiler.GetHeapObjectIdReturnType) => void): void; - post(method: "HeapProfiler.getHeapObjectId", callback?: (err: Error | null, params: HeapProfiler.GetHeapObjectIdReturnType) => void): void; - - post(method: "HeapProfiler.startSampling", params?: HeapProfiler.StartSamplingParameterType, callback?: (err: Error | null) => void): void; - post(method: "HeapProfiler.startSampling", callback?: (err: Error | null) => void): void; - - post(method: "HeapProfiler.stopSampling", callback?: (err: Error | null, params: HeapProfiler.StopSamplingReturnType) => void): void; - - // Events - - addListener(event: string, listener: (...args: any[]) => void): this; - - /** - * Emitted when any notification from the V8 Inspector is received. - */ - addListener(event: "inspectorNotification", listener: (message: InspectorNotification<{}>) => void): this; - - /** - * Issued when new execution context is created. - */ - addListener(event: "Runtime.executionContextCreated", listener: (message: InspectorNotification) => void): this; - - /** - * Issued when execution context is destroyed. - */ - addListener(event: "Runtime.executionContextDestroyed", listener: (message: InspectorNotification) => void): this; - - /** - * Issued when all executionContexts were cleared in browser - */ - addListener(event: "Runtime.executionContextsCleared", listener: () => void): this; - - /** - * Issued when exception was thrown and unhandled. - */ - addListener(event: "Runtime.exceptionThrown", listener: (message: InspectorNotification) => void): this; - - /** - * Issued when unhandled exception was revoked. - */ - addListener(event: "Runtime.exceptionRevoked", listener: (message: InspectorNotification) => void): this; - - /** - * Issued when console API was called. - */ - addListener(event: "Runtime.consoleAPICalled", listener: (message: InspectorNotification) => void): this; - - /** - * Issued when object should be inspected (for example, as a result of inspect() command line API call). - */ - addListener(event: "Runtime.inspectRequested", listener: (message: InspectorNotification) => void): this; - - /** - * Fired when virtual machine parses script. This event is also fired for all known and uncollected scripts upon enabling debugger. - */ - addListener(event: "Debugger.scriptParsed", listener: (message: InspectorNotification) => void): this; - - /** - * Fired when virtual machine fails to parse the script. - */ - addListener(event: "Debugger.scriptFailedToParse", listener: (message: InspectorNotification) => void): this; - - /** - * Fired when breakpoint is resolved to an actual script and location. - */ - addListener(event: "Debugger.breakpointResolved", listener: (message: InspectorNotification) => void): this; - - /** - * Fired when the virtual machine stopped on breakpoint or exception or any other stop criteria. - */ - addListener(event: "Debugger.paused", listener: (message: InspectorNotification) => void): this; - - /** - * Fired when the virtual machine resumed execution. - */ - addListener(event: "Debugger.resumed", listener: () => void): this; - - /** - * Issued when new console message is added. - */ - addListener(event: "Console.messageAdded", listener: (message: InspectorNotification) => void): this; - - /** - * Sent when new profile recording is started using console.profile() call. - */ - addListener(event: "Profiler.consoleProfileStarted", listener: (message: InspectorNotification) => void): this; - - addListener(event: "Profiler.consoleProfileFinished", listener: (message: InspectorNotification) => void): this; - addListener(event: "HeapProfiler.addHeapSnapshotChunk", listener: (message: InspectorNotification) => void): this; - addListener(event: "HeapProfiler.resetProfiles", listener: () => void): this; - addListener(event: "HeapProfiler.reportHeapSnapshotProgress", listener: (message: InspectorNotification) => void): this; - - /** - * If heap objects tracking has been started then backend regularly sends a current value for last seen object id and corresponding timestamp. If the were changes in the heap since last event then one or more heapStatsUpdate events will be sent before a new lastSeenObjectId event. - */ - addListener(event: "HeapProfiler.lastSeenObjectId", listener: (message: InspectorNotification) => void): this; - - /** - * If heap objects tracking has been started then backend may send update for one or more fragments - */ - addListener(event: "HeapProfiler.heapStatsUpdate", listener: (message: InspectorNotification) => void): this; - - emit(event: string | symbol, ...args: any[]): boolean; - emit(event: "inspectorNotification", message: InspectorNotification<{}>): boolean; - emit(event: "Runtime.executionContextCreated", message: InspectorNotification): boolean; - emit(event: "Runtime.executionContextDestroyed", message: InspectorNotification): boolean; - emit(event: "Runtime.executionContextsCleared"): boolean; - emit(event: "Runtime.exceptionThrown", message: InspectorNotification): boolean; - emit(event: "Runtime.exceptionRevoked", message: InspectorNotification): boolean; - emit(event: "Runtime.consoleAPICalled", message: InspectorNotification): boolean; - emit(event: "Runtime.inspectRequested", message: InspectorNotification): boolean; - emit(event: "Debugger.scriptParsed", message: InspectorNotification): boolean; - emit(event: "Debugger.scriptFailedToParse", message: InspectorNotification): boolean; - emit(event: "Debugger.breakpointResolved", message: InspectorNotification): boolean; - emit(event: "Debugger.paused", message: InspectorNotification): boolean; - emit(event: "Debugger.resumed"): boolean; - emit(event: "Console.messageAdded", message: InspectorNotification): boolean; - emit(event: "Profiler.consoleProfileStarted", message: InspectorNotification): boolean; - emit(event: "Profiler.consoleProfileFinished", message: InspectorNotification): boolean; - emit(event: "HeapProfiler.addHeapSnapshotChunk", message: InspectorNotification): boolean; - emit(event: "HeapProfiler.resetProfiles"): boolean; - emit(event: "HeapProfiler.reportHeapSnapshotProgress", message: InspectorNotification): boolean; - emit(event: "HeapProfiler.lastSeenObjectId", message: InspectorNotification): boolean; - emit(event: "HeapProfiler.heapStatsUpdate", message: InspectorNotification): boolean; - - on(event: string, listener: (...args: any[]) => void): this; - - /** - * Emitted when any notification from the V8 Inspector is received. - */ - on(event: "inspectorNotification", listener: (message: InspectorNotification<{}>) => void): this; - - /** - * Issued when new execution context is created. - */ - on(event: "Runtime.executionContextCreated", listener: (message: InspectorNotification) => void): this; - - /** - * Issued when execution context is destroyed. - */ - on(event: "Runtime.executionContextDestroyed", listener: (message: InspectorNotification) => void): this; - - /** - * Issued when all executionContexts were cleared in browser - */ - on(event: "Runtime.executionContextsCleared", listener: () => void): this; - - /** - * Issued when exception was thrown and unhandled. - */ - on(event: "Runtime.exceptionThrown", listener: (message: InspectorNotification) => void): this; - - /** - * Issued when unhandled exception was revoked. - */ - on(event: "Runtime.exceptionRevoked", listener: (message: InspectorNotification) => void): this; - - /** - * Issued when console API was called. - */ - on(event: "Runtime.consoleAPICalled", listener: (message: InspectorNotification) => void): this; - - /** - * Issued when object should be inspected (for example, as a result of inspect() command line API call). - */ - on(event: "Runtime.inspectRequested", listener: (message: InspectorNotification) => void): this; - - /** - * Fired when virtual machine parses script. This event is also fired for all known and uncollected scripts upon enabling debugger. - */ - on(event: "Debugger.scriptParsed", listener: (message: InspectorNotification) => void): this; - - /** - * Fired when virtual machine fails to parse the script. - */ - on(event: "Debugger.scriptFailedToParse", listener: (message: InspectorNotification) => void): this; - - /** - * Fired when breakpoint is resolved to an actual script and location. - */ - on(event: "Debugger.breakpointResolved", listener: (message: InspectorNotification) => void): this; - - /** - * Fired when the virtual machine stopped on breakpoint or exception or any other stop criteria. - */ - on(event: "Debugger.paused", listener: (message: InspectorNotification) => void): this; - - /** - * Fired when the virtual machine resumed execution. - */ - on(event: "Debugger.resumed", listener: () => void): this; - - /** - * Issued when new console message is added. - */ - on(event: "Console.messageAdded", listener: (message: InspectorNotification) => void): this; - - /** - * Sent when new profile recording is started using console.profile() call. - */ - on(event: "Profiler.consoleProfileStarted", listener: (message: InspectorNotification) => void): this; - - on(event: "Profiler.consoleProfileFinished", listener: (message: InspectorNotification) => void): this; - on(event: "HeapProfiler.addHeapSnapshotChunk", listener: (message: InspectorNotification) => void): this; - on(event: "HeapProfiler.resetProfiles", listener: () => void): this; - on(event: "HeapProfiler.reportHeapSnapshotProgress", listener: (message: InspectorNotification) => void): this; - - /** - * If heap objects tracking has been started then backend regularly sends a current value for last seen object id and corresponding timestamp. If the were changes in the heap since last event then one or more heapStatsUpdate events will be sent before a new lastSeenObjectId event. - */ - on(event: "HeapProfiler.lastSeenObjectId", listener: (message: InspectorNotification) => void): this; - - /** - * If heap objects tracking has been started then backend may send update for one or more fragments - */ - on(event: "HeapProfiler.heapStatsUpdate", listener: (message: InspectorNotification) => void): this; - - once(event: string, listener: (...args: any[]) => void): this; - - /** - * Emitted when any notification from the V8 Inspector is received. - */ - once(event: "inspectorNotification", listener: (message: InspectorNotification<{}>) => void): this; - - /** - * Issued when new execution context is created. - */ - once(event: "Runtime.executionContextCreated", listener: (message: InspectorNotification) => void): this; - - /** - * Issued when execution context is destroyed. - */ - once(event: "Runtime.executionContextDestroyed", listener: (message: InspectorNotification) => void): this; - - /** - * Issued when all executionContexts were cleared in browser - */ - once(event: "Runtime.executionContextsCleared", listener: () => void): this; - - /** - * Issued when exception was thrown and unhandled. - */ - once(event: "Runtime.exceptionThrown", listener: (message: InspectorNotification) => void): this; - - /** - * Issued when unhandled exception was revoked. - */ - once(event: "Runtime.exceptionRevoked", listener: (message: InspectorNotification) => void): this; - - /** - * Issued when console API was called. - */ - once(event: "Runtime.consoleAPICalled", listener: (message: InspectorNotification) => void): this; - - /** - * Issued when object should be inspected (for example, as a result of inspect() command line API call). - */ - once(event: "Runtime.inspectRequested", listener: (message: InspectorNotification) => void): this; - - /** - * Fired when virtual machine parses script. This event is also fired for all known and uncollected scripts upon enabling debugger. - */ - once(event: "Debugger.scriptParsed", listener: (message: InspectorNotification) => void): this; - - /** - * Fired when virtual machine fails to parse the script. - */ - once(event: "Debugger.scriptFailedToParse", listener: (message: InspectorNotification) => void): this; - - /** - * Fired when breakpoint is resolved to an actual script and location. - */ - once(event: "Debugger.breakpointResolved", listener: (message: InspectorNotification) => void): this; - - /** - * Fired when the virtual machine stopped on breakpoint or exception or any other stop criteria. - */ - once(event: "Debugger.paused", listener: (message: InspectorNotification) => void): this; - - /** - * Fired when the virtual machine resumed execution. - */ - once(event: "Debugger.resumed", listener: () => void): this; - - /** - * Issued when new console message is added. - */ - once(event: "Console.messageAdded", listener: (message: InspectorNotification) => void): this; - - /** - * Sent when new profile recording is started using console.profile() call. - */ - once(event: "Profiler.consoleProfileStarted", listener: (message: InspectorNotification) => void): this; - - once(event: "Profiler.consoleProfileFinished", listener: (message: InspectorNotification) => void): this; - once(event: "HeapProfiler.addHeapSnapshotChunk", listener: (message: InspectorNotification) => void): this; - once(event: "HeapProfiler.resetProfiles", listener: () => void): this; - once(event: "HeapProfiler.reportHeapSnapshotProgress", listener: (message: InspectorNotification) => void): this; - - /** - * If heap objects tracking has been started then backend regularly sends a current value for last seen object id and corresponding timestamp. If the were changes in the heap since last event then one or more heapStatsUpdate events will be sent before a new lastSeenObjectId event. - */ - once(event: "HeapProfiler.lastSeenObjectId", listener: (message: InspectorNotification) => void): this; - - /** - * If heap objects tracking has been started then backend may send update for one or more fragments - */ - once(event: "HeapProfiler.heapStatsUpdate", listener: (message: InspectorNotification) => void): this; - - prependListener(event: string, listener: (...args: any[]) => void): this; - - /** - * Emitted when any notification from the V8 Inspector is received. - */ - prependListener(event: "inspectorNotification", listener: (message: InspectorNotification<{}>) => void): this; - - /** - * Issued when new execution context is created. - */ - prependListener(event: "Runtime.executionContextCreated", listener: (message: InspectorNotification) => void): this; - - /** - * Issued when execution context is destroyed. - */ - prependListener(event: "Runtime.executionContextDestroyed", listener: (message: InspectorNotification) => void): this; - - /** - * Issued when all executionContexts were cleared in browser - */ - prependListener(event: "Runtime.executionContextsCleared", listener: () => void): this; - - /** - * Issued when exception was thrown and unhandled. - */ - prependListener(event: "Runtime.exceptionThrown", listener: (message: InspectorNotification) => void): this; - - /** - * Issued when unhandled exception was revoked. - */ - prependListener(event: "Runtime.exceptionRevoked", listener: (message: InspectorNotification) => void): this; - - /** - * Issued when console API was called. - */ - prependListener(event: "Runtime.consoleAPICalled", listener: (message: InspectorNotification) => void): this; - - /** - * Issued when object should be inspected (for example, as a result of inspect() command line API call). - */ - prependListener(event: "Runtime.inspectRequested", listener: (message: InspectorNotification) => void): this; - - /** - * Fired when virtual machine parses script. This event is also fired for all known and uncollected scripts upon enabling debugger. - */ - prependListener(event: "Debugger.scriptParsed", listener: (message: InspectorNotification) => void): this; - - /** - * Fired when virtual machine fails to parse the script. - */ - prependListener(event: "Debugger.scriptFailedToParse", listener: (message: InspectorNotification) => void): this; - - /** - * Fired when breakpoint is resolved to an actual script and location. - */ - prependListener(event: "Debugger.breakpointResolved", listener: (message: InspectorNotification) => void): this; - - /** - * Fired when the virtual machine stopped on breakpoint or exception or any other stop criteria. - */ - prependListener(event: "Debugger.paused", listener: (message: InspectorNotification) => void): this; - - /** - * Fired when the virtual machine resumed execution. - */ - prependListener(event: "Debugger.resumed", listener: () => void): this; - - /** - * Issued when new console message is added. - */ - prependListener(event: "Console.messageAdded", listener: (message: InspectorNotification) => void): this; - - /** - * Sent when new profile recording is started using console.profile() call. - */ - prependListener(event: "Profiler.consoleProfileStarted", listener: (message: InspectorNotification) => void): this; - - prependListener(event: "Profiler.consoleProfileFinished", listener: (message: InspectorNotification) => void): this; - prependListener(event: "HeapProfiler.addHeapSnapshotChunk", listener: (message: InspectorNotification) => void): this; - prependListener(event: "HeapProfiler.resetProfiles", listener: () => void): this; - prependListener(event: "HeapProfiler.reportHeapSnapshotProgress", listener: (message: InspectorNotification) => void): this; - - /** - * If heap objects tracking has been started then backend regularly sends a current value for last seen object id and corresponding timestamp. If the were changes in the heap since last event then one or more heapStatsUpdate events will be sent before a new lastSeenObjectId event. - */ - prependListener(event: "HeapProfiler.lastSeenObjectId", listener: (message: InspectorNotification) => void): this; - - /** - * If heap objects tracking has been started then backend may send update for one or more fragments - */ - prependListener(event: "HeapProfiler.heapStatsUpdate", listener: (message: InspectorNotification) => void): this; - - prependOnceListener(event: string, listener: (...args: any[]) => void): this; - - /** - * Emitted when any notification from the V8 Inspector is received. - */ - prependOnceListener(event: "inspectorNotification", listener: (message: InspectorNotification<{}>) => void): this; - - /** - * Issued when new execution context is created. - */ - prependOnceListener(event: "Runtime.executionContextCreated", listener: (message: InspectorNotification) => void): this; - - /** - * Issued when execution context is destroyed. - */ - prependOnceListener(event: "Runtime.executionContextDestroyed", listener: (message: InspectorNotification) => void): this; - - /** - * Issued when all executionContexts were cleared in browser - */ - prependOnceListener(event: "Runtime.executionContextsCleared", listener: () => void): this; - - /** - * Issued when exception was thrown and unhandled. - */ - prependOnceListener(event: "Runtime.exceptionThrown", listener: (message: InspectorNotification) => void): this; - - /** - * Issued when unhandled exception was revoked. - */ - prependOnceListener(event: "Runtime.exceptionRevoked", listener: (message: InspectorNotification) => void): this; - - /** - * Issued when console API was called. - */ - prependOnceListener(event: "Runtime.consoleAPICalled", listener: (message: InspectorNotification) => void): this; - - /** - * Issued when object should be inspected (for example, as a result of inspect() command line API call). - */ - prependOnceListener(event: "Runtime.inspectRequested", listener: (message: InspectorNotification) => void): this; - - /** - * Fired when virtual machine parses script. This event is also fired for all known and uncollected scripts upon enabling debugger. - */ - prependOnceListener(event: "Debugger.scriptParsed", listener: (message: InspectorNotification) => void): this; - - /** - * Fired when virtual machine fails to parse the script. - */ - prependOnceListener(event: "Debugger.scriptFailedToParse", listener: (message: InspectorNotification) => void): this; - - /** - * Fired when breakpoint is resolved to an actual script and location. - */ - prependOnceListener(event: "Debugger.breakpointResolved", listener: (message: InspectorNotification) => void): this; - - /** - * Fired when the virtual machine stopped on breakpoint or exception or any other stop criteria. - */ - prependOnceListener(event: "Debugger.paused", listener: (message: InspectorNotification) => void): this; - - /** - * Fired when the virtual machine resumed execution. - */ - prependOnceListener(event: "Debugger.resumed", listener: () => void): this; - - /** - * Issued when new console message is added. - */ - prependOnceListener(event: "Console.messageAdded", listener: (message: InspectorNotification) => void): this; - - /** - * Sent when new profile recording is started using console.profile() call. - */ - prependOnceListener(event: "Profiler.consoleProfileStarted", listener: (message: InspectorNotification) => void): this; - - prependOnceListener(event: "Profiler.consoleProfileFinished", listener: (message: InspectorNotification) => void): this; - prependOnceListener(event: "HeapProfiler.addHeapSnapshotChunk", listener: (message: InspectorNotification) => void): this; - prependOnceListener(event: "HeapProfiler.resetProfiles", listener: () => void): this; - prependOnceListener(event: "HeapProfiler.reportHeapSnapshotProgress", listener: (message: InspectorNotification) => void): this; - - /** - * If heap objects tracking has been started then backend regularly sends a current value for last seen object id and corresponding timestamp. If the were changes in the heap since last event then one or more heapStatsUpdate events will be sent before a new lastSeenObjectId event. - */ - prependOnceListener(event: "HeapProfiler.lastSeenObjectId", listener: (message: InspectorNotification) => void): this; - - /** - * If heap objects tracking has been started then backend may send update for one or more fragments - */ - prependOnceListener(event: "HeapProfiler.heapStatsUpdate", listener: (message: InspectorNotification) => void): this; - } - - // Top Level API - - /** - * Activate inspector on host and port. Equivalent to node --inspect=[[host:]port], but can be done programatically after node has started. - * If wait is true, will block until a client has connected to the inspect port and flow control has been passed to the debugger client. - * @param port Port to listen on for inspector connections. Optional, defaults to what was specified on the CLI. - * @param host Host to listen on for inspector connections. Optional, defaults to what was specified on the CLI. - * @param wait Block until a client has connected. Optional, defaults to false. - */ - export function open(port?: number, host?: string, wait?: boolean): void; - - /** - * Deactivate the inspector. Blocks until there are no active connections. - */ - export function close(): void; - - /** - * Return the URL of the active inspector, or undefined if there is none. - */ - export function url(): string; -} diff --git a/workshops/monte-carlo-on-ec2-spot-fleet/src/web/node_modules/@types/node/package.json b/workshops/monte-carlo-on-ec2-spot-fleet/src/web/node_modules/@types/node/package.json deleted file mode 100644 index 3d5afc9c..00000000 --- a/workshops/monte-carlo-on-ec2-spot-fleet/src/web/node_modules/@types/node/package.json +++ /dev/null @@ -1,132 +0,0 @@ -{ - "_args": [ - [ - { - "raw": "@types/node@*", - "scope": "@types", - "escapedName": "@types%2fnode", - "name": "@types/node", - "rawSpec": "*", - "spec": "*", - "type": "range" - }, - "/Users/sdsteve/WebstormProjects/SpotLabNodejs/node_modules/@types/express-serve-static-core" - ] - ], - "_from": "@types/node@*", - "_id": "@types/node@8.0.34", - "_inCache": true, - "_location": "/@types/node", - "_npmOperationalInternal": { - "host": "s3://npm-registry-packages", - "tmp": "tmp/node-8.0.34.tgz_1507653790714_0.6203974469099194" - }, - "_npmUser": { - "name": "types", - "email": "ts-npm-types@microsoft.com" - }, - "_phantomChildren": {}, - "_requested": { - "raw": "@types/node@*", - "scope": "@types", - "escapedName": "@types%2fnode", - "name": "@types/node", - "rawSpec": "*", - "spec": "*", - "type": "range" - }, - "_requiredBy": [ - "/@types/express-serve-static-core" - ], - "_resolved": "https://registry.npmjs.org/@types/node/-/node-8.0.34.tgz", - "_shasum": "55f801fa2ddb2a40dd6dfc15ecfe1dde9c129fe9", - "_shrinkwrap": null, - "_spec": "@types/node@*", - "_where": "/Users/sdsteve/WebstormProjects/SpotLabNodejs/node_modules/@types/express-serve-static-core", - "contributors": [ - { - "name": "Microsoft TypeScript", - "url": "http://typescriptlang.org" - }, - { - "name": "DefinitelyTyped", - "url": "https://github.com/DefinitelyTyped/DefinitelyTyped" - }, - { - "name": "Parambir Singh", - "url": "https://github.com/parambirs" - }, - { - "name": "Christian Vaagland Tellnes", - "url": "https://github.com/tellnes" - }, - { - "name": "Wilco Bakker", - "url": "https://github.com/WilcoBakker" - }, - { - "name": "Nicolas Voigt", - "url": "https://github.com/octo-sniffle" - }, - { - "name": "Chigozirim C.", - "url": "https://github.com/smac89" - }, - { - "name": "Flarna", - "url": "https://github.com/Flarna" - }, - { - "name": "Mariusz Wiktorczyk", - "url": "https://github.com/mwiktorczyk" - }, - { - "name": "wwwy3y3", - "url": "https://github.com/wwwy3y3" - }, - { - "name": "Daniel Imms", - "url": "https://github.com/Tyriar" - }, - { - "name": "Deividas Bakanas", - "url": "https://github.com/DeividasBakanas" - }, - { - "name": "Kelvin Jin", - "url": "https://github.com/kjin" - }, - { - "name": "Alvis HT Tang", - "url": "https://github.com/alvis" - } - ], - "dependencies": {}, - "description": "TypeScript definitions for Node.js", - "devDependencies": {}, - "directories": {}, - "dist": { - "integrity": "sha512-Jnmm57+nHqvJUPwUzt1CLoLzFtF2B2vgG7cWFut+a4nqTp9/L6pL0N+o0Jt3V7AQnCKMsPEqQpLFZYleBCdq3w==", - "shasum": "55f801fa2ddb2a40dd6dfc15ecfe1dde9c129fe9", - "tarball": "https://registry.npmjs.org/@types/node/-/node-8.0.34.tgz" - }, - "license": "MIT", - "main": "", - "maintainers": [ - { - "name": "types", - "email": "ts-npm-types@microsoft.com" - } - ], - "name": "@types/node", - "optionalDependencies": {}, - "readme": "ERROR: No README data found!", - "repository": { - "type": "git", - "url": "https://www.github.com/DefinitelyTyped/DefinitelyTyped.git" - }, - "scripts": {}, - "typeScriptVersion": "2.2", - "typesPublisherContentHash": "e2dd3c5b4b3edf6accb2682b3b0d68a948feccfd4e0051726b9f36a22ffa3476", - "version": "8.0.34" -} diff --git a/workshops/monte-carlo-on-ec2-spot-fleet/src/web/node_modules/@types/serve-static/LICENSE b/workshops/monte-carlo-on-ec2-spot-fleet/src/web/node_modules/@types/serve-static/LICENSE deleted file mode 100644 index 21071075..00000000 --- a/workshops/monte-carlo-on-ec2-spot-fleet/src/web/node_modules/@types/serve-static/LICENSE +++ /dev/null @@ -1,21 +0,0 @@ - MIT License - - Copyright (c) Microsoft Corporation. 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, subject to the following conditions: - - The above copyright notice and this permission notice shall be included in all - copies or substantial portions of the Software. - - 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 diff --git a/workshops/monte-carlo-on-ec2-spot-fleet/src/web/node_modules/@types/serve-static/README.md b/workshops/monte-carlo-on-ec2-spot-fleet/src/web/node_modules/@types/serve-static/README.md deleted file mode 100644 index d6ea73e6..00000000 --- a/workshops/monte-carlo-on-ec2-spot-fleet/src/web/node_modules/@types/serve-static/README.md +++ /dev/null @@ -1,16 +0,0 @@ -# Installation -> `npm install --save @types/serve-static` - -# Summary -This package contains type definitions for serve-static (https://github.com/expressjs/serve-static). - -# Details -Files were exported from https://www.github.com/DefinitelyTyped/DefinitelyTyped/tree/master/types/serve-static - -Additional Details - * Last updated: Mon, 21 Aug 2017 22:03:22 GMT - * Dependencies: express-serve-static-core, mime - * Global values: none - -# Credits -These definitions were written by Uros Smolnik . diff --git a/workshops/monte-carlo-on-ec2-spot-fleet/src/web/node_modules/@types/serve-static/index.d.ts b/workshops/monte-carlo-on-ec2-spot-fleet/src/web/node_modules/@types/serve-static/index.d.ts deleted file mode 100644 index 0676f0c4..00000000 --- a/workshops/monte-carlo-on-ec2-spot-fleet/src/web/node_modules/@types/serve-static/index.d.ts +++ /dev/null @@ -1,90 +0,0 @@ -// Type definitions for serve-static 1.7.1 -// Project: https://github.com/expressjs/serve-static -// Definitions by: Uros Smolnik -// Definitions: https://github.com/DefinitelyTyped/DefinitelyTyped - -/* =================== USAGE =================== - - import * as serveStatic from "serve-static"; - app.use(serveStatic("public/ftp", {"index": ["default.html", "default.htm"]})) - - =============================================== */ - -/// - -import * as express from "express-serve-static-core"; -import * as m from "mime"; - -/** - * Create a new middleware function to serve files from within a given root directory. - * The file to serve will be determined by combining req.url with the provided root directory. - * When a file is not found, instead of sending a 404 response, this module will instead call next() to move on to the next middleware, allowing for stacking and fall-backs. - */ -declare function serveStatic(root: string, options?: serveStatic.ServeStaticOptions): express.Handler; - -declare namespace serveStatic { - var mime: typeof m; - interface ServeStaticOptions { - /** - * Set how "dotfiles" are treated when encountered. A dotfile is a file or directory that begins with a dot ("."). - * Note this check is done on the path itself without checking if the path actually exists on the disk. - * If root is specified, only the dotfiles above the root are checked (i.e. the root itself can be within a dotfile when when set to "deny"). - * The default value is 'ignore'. - * 'allow' No special treatment for dotfiles - * 'deny' Send a 403 for any request for a dotfile - * 'ignore' Pretend like the dotfile does not exist and call next() - */ - dotfiles?: string; - - /** - * Enable or disable etag generation, defaults to true. - */ - etag?: boolean; - - /** - * Set file extension fallbacks. When set, if a file is not found, the given extensions will be added to the file name and search for. - * The first that exists will be served. Example: ['html', 'htm']. - * The default value is false. - */ - extensions?: string[]; - - /** - * Let client errors fall-through as unhandled requests, otherwise forward a client error. - * The default value is false. - */ - fallthrough?: boolean; - - /** - * By default this module will send "index.html" files in response to a request on a directory. - * To disable this set false or to supply a new index pass a string or an array in preferred order. - */ - index?: boolean | string | string[]; - - /** - * Enable or disable Last-Modified header, defaults to true. Uses the file system's last modified value. - */ - lastModified?: boolean; - - /** - * Provide a max-age in milliseconds for http caching, defaults to 0. This can also be a string accepted by the ms module. - */ - maxAge?: number | string; - - /** - * Redirect to trailing "/" when the pathname is a dir. Defaults to true. - */ - redirect?: boolean; - - /** - * Function to set custom headers on response. Alterations to the headers need to occur synchronously. - * The function is called as fn(res, path, stat), where the arguments are: - * res the response object - * path the file path that is being sent - * stat the stat object of the file that is being sent - */ - setHeaders?: (res: express.Response, path: string, stat: any) => any; - } - function serveStatic(root: string, options?: ServeStaticOptions): express.Handler; -} - -export = serveStatic; diff --git a/workshops/monte-carlo-on-ec2-spot-fleet/src/web/node_modules/@types/serve-static/package.json b/workshops/monte-carlo-on-ec2-spot-fleet/src/web/node_modules/@types/serve-static/package.json deleted file mode 100644 index e89fb722..00000000 --- a/workshops/monte-carlo-on-ec2-spot-fleet/src/web/node_modules/@types/serve-static/package.json +++ /dev/null @@ -1,83 +0,0 @@ -{ - "_args": [ - [ - { - "raw": "@types/serve-static@*", - "scope": "@types", - "escapedName": "@types%2fserve-static", - "name": "@types/serve-static", - "rawSpec": "*", - "spec": "*", - "type": "range" - }, - "/Users/sdsteve/WebstormProjects/SpotLabNodejs/node_modules/@types/express" - ] - ], - "_from": "@types/serve-static@*", - "_id": "@types/serve-static@1.7.32", - "_inCache": true, - "_location": "/@types/serve-static", - "_npmOperationalInternal": { - "host": "s3://npm-registry-packages", - "tmp": "tmp/serve-static-1.7.32.tgz_1503353052180_0.10676383110694587" - }, - "_npmUser": { - "name": "types", - "email": "ts-npm-types@microsoft.com" - }, - "_phantomChildren": {}, - "_requested": { - "raw": "@types/serve-static@*", - "scope": "@types", - "escapedName": "@types%2fserve-static", - "name": "@types/serve-static", - "rawSpec": "*", - "spec": "*", - "type": "range" - }, - "_requiredBy": [ - "/@types/express" - ], - "_resolved": "https://registry.npmjs.org/@types/serve-static/-/serve-static-1.7.32.tgz", - "_shasum": "0f6732e4dab0813771dd8fc8fe14940f34728b4c", - "_shrinkwrap": null, - "_spec": "@types/serve-static@*", - "_where": "/Users/sdsteve/WebstormProjects/SpotLabNodejs/node_modules/@types/express", - "contributors": [ - { - "name": "Uros Smolnik", - "url": "https://github.com/urossmolnik" - } - ], - "dependencies": { - "@types/express-serve-static-core": "*", - "@types/mime": "*" - }, - "description": "TypeScript definitions for serve-static", - "devDependencies": {}, - "directories": {}, - "dist": { - "integrity": "sha512-WpI0g7M1FiOmJ/a97Qrjafq2I938tjAZ3hZr9O7sXyA6oUhH3bqUNZIt7r1KZg8TQAKxcvxt6JjQ5XuLfIBFvg==", - "shasum": "0f6732e4dab0813771dd8fc8fe14940f34728b4c", - "tarball": "https://registry.npmjs.org/@types/serve-static/-/serve-static-1.7.32.tgz" - }, - "license": "MIT", - "main": "", - "maintainers": [ - { - "name": "types", - "email": "ryan.cavanaugh@microsoft.com" - } - ], - "name": "@types/serve-static", - "optionalDependencies": {}, - "readme": "ERROR: No README data found!", - "repository": { - "type": "git", - "url": "https://www.github.com/DefinitelyTyped/DefinitelyTyped.git" - }, - "scripts": {}, - "typeScriptVersion": "2.0", - "typesPublisherContentHash": "c0dac04127ff734150c992cc697e39e0374266604258bd6663a3c651531a9066", - "version": "1.7.32" -} diff --git a/workshops/monte-carlo-on-ec2-spot-fleet/src/web/node_modules/accepts/HISTORY.md b/workshops/monte-carlo-on-ec2-spot-fleet/src/web/node_modules/accepts/HISTORY.md deleted file mode 100644 index aaf52817..00000000 --- a/workshops/monte-carlo-on-ec2-spot-fleet/src/web/node_modules/accepts/HISTORY.md +++ /dev/null @@ -1,218 +0,0 @@ -1.3.4 / 2017-08-22 -================== - - * deps: mime-types@~2.1.16 - - deps: mime-db@~1.29.0 - -1.3.3 / 2016-05-02 -================== - - * deps: mime-types@~2.1.11 - - deps: mime-db@~1.23.0 - * deps: negotiator@0.6.1 - - perf: improve `Accept` parsing speed - - perf: improve `Accept-Charset` parsing speed - - perf: improve `Accept-Encoding` parsing speed - - perf: improve `Accept-Language` parsing speed - -1.3.2 / 2016-03-08 -================== - - * deps: mime-types@~2.1.10 - - Fix extension of `application/dash+xml` - - Update primary extension for `audio/mp4` - - deps: mime-db@~1.22.0 - -1.3.1 / 2016-01-19 -================== - - * deps: mime-types@~2.1.9 - - deps: mime-db@~1.21.0 - -1.3.0 / 2015-09-29 -================== - - * deps: mime-types@~2.1.7 - - deps: mime-db@~1.19.0 - * deps: negotiator@0.6.0 - - Fix including type extensions in parameters in `Accept` parsing - - Fix parsing `Accept` parameters with quoted equals - - Fix parsing `Accept` parameters with quoted semicolons - - Lazy-load modules from main entry point - - perf: delay type concatenation until needed - - perf: enable strict mode - - perf: hoist regular expressions - - perf: remove closures getting spec properties - - perf: remove a closure from media type parsing - - perf: remove property delete from media type parsing - -1.2.13 / 2015-09-06 -=================== - - * deps: mime-types@~2.1.6 - - deps: mime-db@~1.18.0 - -1.2.12 / 2015-07-30 -=================== - - * deps: mime-types@~2.1.4 - - deps: mime-db@~1.16.0 - -1.2.11 / 2015-07-16 -=================== - - * deps: mime-types@~2.1.3 - - deps: mime-db@~1.15.0 - -1.2.10 / 2015-07-01 -=================== - - * deps: mime-types@~2.1.2 - - deps: mime-db@~1.14.0 - -1.2.9 / 2015-06-08 -================== - - * deps: mime-types@~2.1.1 - - perf: fix deopt during mapping - -1.2.8 / 2015-06-07 -================== - - * deps: mime-types@~2.1.0 - - deps: mime-db@~1.13.0 - * perf: avoid argument reassignment & argument slice - * perf: avoid negotiator recursive construction - * perf: enable strict mode - * perf: remove unnecessary bitwise operator - -1.2.7 / 2015-05-10 -================== - - * deps: negotiator@0.5.3 - - Fix media type parameter matching to be case-insensitive - -1.2.6 / 2015-05-07 -================== - - * deps: mime-types@~2.0.11 - - deps: mime-db@~1.9.1 - * deps: negotiator@0.5.2 - - Fix comparing media types with quoted values - - Fix splitting media types with quoted commas - -1.2.5 / 2015-03-13 -================== - - * deps: mime-types@~2.0.10 - - deps: mime-db@~1.8.0 - -1.2.4 / 2015-02-14 -================== - - * Support Node.js 0.6 - * deps: mime-types@~2.0.9 - - deps: mime-db@~1.7.0 - * deps: negotiator@0.5.1 - - Fix preference sorting to be stable for long acceptable lists - -1.2.3 / 2015-01-31 -================== - - * deps: mime-types@~2.0.8 - - deps: mime-db@~1.6.0 - -1.2.2 / 2014-12-30 -================== - - * deps: mime-types@~2.0.7 - - deps: mime-db@~1.5.0 - -1.2.1 / 2014-12-30 -================== - - * deps: mime-types@~2.0.5 - - deps: mime-db@~1.3.1 - -1.2.0 / 2014-12-19 -================== - - * deps: negotiator@0.5.0 - - Fix list return order when large accepted list - - Fix missing identity encoding when q=0 exists - - Remove dynamic building of Negotiator class - -1.1.4 / 2014-12-10 -================== - - * deps: mime-types@~2.0.4 - - deps: mime-db@~1.3.0 - -1.1.3 / 2014-11-09 -================== - - * deps: mime-types@~2.0.3 - - deps: mime-db@~1.2.0 - -1.1.2 / 2014-10-14 -================== - - * deps: negotiator@0.4.9 - - Fix error when media type has invalid parameter - -1.1.1 / 2014-09-28 -================== - - * deps: mime-types@~2.0.2 - - deps: mime-db@~1.1.0 - * deps: negotiator@0.4.8 - - Fix all negotiations to be case-insensitive - - Stable sort preferences of same quality according to client order - -1.1.0 / 2014-09-02 -================== - - * update `mime-types` - -1.0.7 / 2014-07-04 -================== - - * Fix wrong type returned from `type` when match after unknown extension - -1.0.6 / 2014-06-24 -================== - - * deps: negotiator@0.4.7 - -1.0.5 / 2014-06-20 -================== - - * fix crash when unknown extension given - -1.0.4 / 2014-06-19 -================== - - * use `mime-types` - -1.0.3 / 2014-06-11 -================== - - * deps: negotiator@0.4.6 - - Order by specificity when quality is the same - -1.0.2 / 2014-05-29 -================== - - * Fix interpretation when header not in request - * deps: pin negotiator@0.4.5 - -1.0.1 / 2014-01-18 -================== - - * Identity encoding isn't always acceptable - * deps: negotiator@~0.4.0 - -1.0.0 / 2013-12-27 -================== - - * Genesis diff --git a/workshops/monte-carlo-on-ec2-spot-fleet/src/web/node_modules/accepts/LICENSE b/workshops/monte-carlo-on-ec2-spot-fleet/src/web/node_modules/accepts/LICENSE deleted file mode 100644 index 06166077..00000000 --- a/workshops/monte-carlo-on-ec2-spot-fleet/src/web/node_modules/accepts/LICENSE +++ /dev/null @@ -1,23 +0,0 @@ -(The MIT License) - -Copyright (c) 2014 Jonathan Ong -Copyright (c) 2015 Douglas Christopher Wilson - -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, subject to -the following conditions: - -The above copyright notice and this permission notice shall be -included in all copies or substantial portions of the Software. - -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. diff --git a/workshops/monte-carlo-on-ec2-spot-fleet/src/web/node_modules/accepts/README.md b/workshops/monte-carlo-on-ec2-spot-fleet/src/web/node_modules/accepts/README.md deleted file mode 100644 index 6a2749a1..00000000 --- a/workshops/monte-carlo-on-ec2-spot-fleet/src/web/node_modules/accepts/README.md +++ /dev/null @@ -1,143 +0,0 @@ -# accepts - -[![NPM Version][npm-image]][npm-url] -[![NPM Downloads][downloads-image]][downloads-url] -[![Node.js Version][node-version-image]][node-version-url] -[![Build Status][travis-image]][travis-url] -[![Test Coverage][coveralls-image]][coveralls-url] - -Higher level content negotiation based on [negotiator](https://www.npmjs.com/package/negotiator). -Extracted from [koa](https://www.npmjs.com/package/koa) for general use. - -In addition to negotiator, it allows: - -- Allows types as an array or arguments list, ie `(['text/html', 'application/json'])` - as well as `('text/html', 'application/json')`. -- Allows type shorthands such as `json`. -- Returns `false` when no types match -- Treats non-existent headers as `*` - -## Installation - -This is a [Node.js](https://nodejs.org/en/) module available through the -[npm registry](https://www.npmjs.com/). Installation is done using the -[`npm install` command](https://docs.npmjs.com/getting-started/installing-npm-packages-locally): - -```sh -$ npm install accepts -``` - -## API - - - -```js -var accepts = require('accepts') -``` - -### accepts(req) - -Create a new `Accepts` object for the given `req`. - -#### .charset(charsets) - -Return the first accepted charset. If nothing in `charsets` is accepted, -then `false` is returned. - -#### .charsets() - -Return the charsets that the request accepts, in the order of the client's -preference (most preferred first). - -#### .encoding(encodings) - -Return the first accepted encoding. If nothing in `encodings` is accepted, -then `false` is returned. - -#### .encodings() - -Return the encodings that the request accepts, in the order of the client's -preference (most preferred first). - -#### .language(languages) - -Return the first accepted language. If nothing in `languages` is accepted, -then `false` is returned. - -#### .languages() - -Return the languages that the request accepts, in the order of the client's -preference (most preferred first). - -#### .type(types) - -Return the first accepted type (and it is returned as the same text as what -appears in the `types` array). If nothing in `types` is accepted, then `false` -is returned. - -The `types` array can contain full MIME types or file extensions. Any value -that is not a full MIME types is passed to `require('mime-types').lookup`. - -#### .types() - -Return the types that the request accepts, in the order of the client's -preference (most preferred first). - -## Examples - -### Simple type negotiation - -This simple example shows how to use `accepts` to return a different typed -respond body based on what the client wants to accept. The server lists it's -preferences in order and will get back the best match between the client and -server. - -```js -var accepts = require('accepts') -var http = require('http') - -function app (req, res) { - var accept = accepts(req) - - // the order of this list is significant; should be server preferred order - switch (accept.type(['json', 'html'])) { - case 'json': - res.setHeader('Content-Type', 'application/json') - res.write('{"hello":"world!"}') - break - case 'html': - res.setHeader('Content-Type', 'text/html') - res.write('hello, world!') - break - default: - // the fallback is text/plain, so no need to specify it above - res.setHeader('Content-Type', 'text/plain') - res.write('hello, world!') - break - } - - res.end() -} - -http.createServer(app).listen(3000) -``` - -You can test this out with the cURL program: -```sh -curl -I -H'Accept: text/html' http://localhost:3000/ -``` - -## License - -[MIT](LICENSE) - -[npm-image]: https://img.shields.io/npm/v/accepts.svg -[npm-url]: https://npmjs.org/package/accepts -[node-version-image]: https://img.shields.io/node/v/accepts.svg -[node-version-url]: https://nodejs.org/en/download/ -[travis-image]: https://img.shields.io/travis/jshttp/accepts/master.svg -[travis-url]: https://travis-ci.org/jshttp/accepts -[coveralls-image]: https://img.shields.io/coveralls/jshttp/accepts/master.svg -[coveralls-url]: https://coveralls.io/r/jshttp/accepts -[downloads-image]: https://img.shields.io/npm/dm/accepts.svg -[downloads-url]: https://npmjs.org/package/accepts diff --git a/workshops/monte-carlo-on-ec2-spot-fleet/src/web/node_modules/accepts/index.js b/workshops/monte-carlo-on-ec2-spot-fleet/src/web/node_modules/accepts/index.js deleted file mode 100644 index e9b2f63f..00000000 --- a/workshops/monte-carlo-on-ec2-spot-fleet/src/web/node_modules/accepts/index.js +++ /dev/null @@ -1,238 +0,0 @@ -/*! - * accepts - * Copyright(c) 2014 Jonathan Ong - * Copyright(c) 2015 Douglas Christopher Wilson - * MIT Licensed - */ - -'use strict' - -/** - * Module dependencies. - * @private - */ - -var Negotiator = require('negotiator') -var mime = require('mime-types') - -/** - * Module exports. - * @public - */ - -module.exports = Accepts - -/** - * Create a new Accepts object for the given req. - * - * @param {object} req - * @public - */ - -function Accepts (req) { - if (!(this instanceof Accepts)) { - return new Accepts(req) - } - - this.headers = req.headers - this.negotiator = new Negotiator(req) -} - -/** - * Check if the given `type(s)` is acceptable, returning - * the best match when true, otherwise `undefined`, in which - * case you should respond with 406 "Not Acceptable". - * - * The `type` value may be a single mime type string - * such as "application/json", the extension name - * such as "json" or an array `["json", "html", "text/plain"]`. When a list - * or array is given the _best_ match, if any is returned. - * - * Examples: - * - * // Accept: text/html - * this.types('html'); - * // => "html" - * - * // Accept: text/*, application/json - * this.types('html'); - * // => "html" - * this.types('text/html'); - * // => "text/html" - * this.types('json', 'text'); - * // => "json" - * this.types('application/json'); - * // => "application/json" - * - * // Accept: text/*, application/json - * this.types('image/png'); - * this.types('png'); - * // => undefined - * - * // Accept: text/*;q=.5, application/json - * this.types(['html', 'json']); - * this.types('html', 'json'); - * // => "json" - * - * @param {String|Array} types... - * @return {String|Array|Boolean} - * @public - */ - -Accepts.prototype.type = -Accepts.prototype.types = function (types_) { - var types = types_ - - // support flattened arguments - if (types && !Array.isArray(types)) { - types = new Array(arguments.length) - for (var i = 0; i < types.length; i++) { - types[i] = arguments[i] - } - } - - // no types, return all requested types - if (!types || types.length === 0) { - return this.negotiator.mediaTypes() - } - - // no accept header, return first given type - if (!this.headers.accept) { - return types[0] - } - - var mimes = types.map(extToMime) - var accepts = this.negotiator.mediaTypes(mimes.filter(validMime)) - var first = accepts[0] - - return first - ? types[mimes.indexOf(first)] - : false -} - -/** - * Return accepted encodings or best fit based on `encodings`. - * - * Given `Accept-Encoding: gzip, deflate` - * an array sorted by quality is returned: - * - * ['gzip', 'deflate'] - * - * @param {String|Array} encodings... - * @return {String|Array} - * @public - */ - -Accepts.prototype.encoding = -Accepts.prototype.encodings = function (encodings_) { - var encodings = encodings_ - - // support flattened arguments - if (encodings && !Array.isArray(encodings)) { - encodings = new Array(arguments.length) - for (var i = 0; i < encodings.length; i++) { - encodings[i] = arguments[i] - } - } - - // no encodings, return all requested encodings - if (!encodings || encodings.length === 0) { - return this.negotiator.encodings() - } - - return this.negotiator.encodings(encodings)[0] || false -} - -/** - * Return accepted charsets or best fit based on `charsets`. - * - * Given `Accept-Charset: utf-8, iso-8859-1;q=0.2, utf-7;q=0.5` - * an array sorted by quality is returned: - * - * ['utf-8', 'utf-7', 'iso-8859-1'] - * - * @param {String|Array} charsets... - * @return {String|Array} - * @public - */ - -Accepts.prototype.charset = -Accepts.prototype.charsets = function (charsets_) { - var charsets = charsets_ - - // support flattened arguments - if (charsets && !Array.isArray(charsets)) { - charsets = new Array(arguments.length) - for (var i = 0; i < charsets.length; i++) { - charsets[i] = arguments[i] - } - } - - // no charsets, return all requested charsets - if (!charsets || charsets.length === 0) { - return this.negotiator.charsets() - } - - return this.negotiator.charsets(charsets)[0] || false -} - -/** - * Return accepted languages or best fit based on `langs`. - * - * Given `Accept-Language: en;q=0.8, es, pt` - * an array sorted by quality is returned: - * - * ['es', 'pt', 'en'] - * - * @param {String|Array} langs... - * @return {Array|String} - * @public - */ - -Accepts.prototype.lang = -Accepts.prototype.langs = -Accepts.prototype.language = -Accepts.prototype.languages = function (languages_) { - var languages = languages_ - - // support flattened arguments - if (languages && !Array.isArray(languages)) { - languages = new Array(arguments.length) - for (var i = 0; i < languages.length; i++) { - languages[i] = arguments[i] - } - } - - // no languages, return all requested languages - if (!languages || languages.length === 0) { - return this.negotiator.languages() - } - - return this.negotiator.languages(languages)[0] || false -} - -/** - * Convert extnames to mime. - * - * @param {String} type - * @return {String} - * @private - */ - -function extToMime (type) { - return type.indexOf('/') === -1 - ? mime.lookup(type) - : type -} - -/** - * Check if mime is valid. - * - * @param {String} type - * @return {String} - * @private - */ - -function validMime (type) { - return typeof type === 'string' -} diff --git a/workshops/monte-carlo-on-ec2-spot-fleet/src/web/node_modules/accepts/package.json b/workshops/monte-carlo-on-ec2-spot-fleet/src/web/node_modules/accepts/package.json deleted file mode 100644 index 453b9021..00000000 --- a/workshops/monte-carlo-on-ec2-spot-fleet/src/web/node_modules/accepts/package.json +++ /dev/null @@ -1,120 +0,0 @@ -{ - "_args": [ - [ - { - "raw": "accepts@~1.3.3", - "scope": null, - "escapedName": "accepts", - "name": "accepts", - "rawSpec": "~1.3.3", - "spec": ">=1.3.3 <1.4.0", - "type": "range" - }, - "/Users/sdsteve/WebstormProjects/SpotLabNodejs/node_modules/express" - ] - ], - "_from": "accepts@>=1.3.3 <1.4.0", - "_id": "accepts@1.3.4", - "_inCache": true, - "_location": "/accepts", - "_nodeVersion": "6.11.1", - "_npmOperationalInternal": { - "host": "s3://npm-registry-packages", - "tmp": "tmp/accepts-1.3.4.tgz_1503455053008_0.43370609171688557" - }, - "_npmUser": { - "name": "dougwilson", - "email": "doug@somethingdoug.com" - }, - "_npmVersion": "3.10.10", - "_phantomChildren": {}, - "_requested": { - "raw": "accepts@~1.3.3", - "scope": null, - "escapedName": "accepts", - "name": "accepts", - "rawSpec": "~1.3.3", - "spec": ">=1.3.3 <1.4.0", - "type": "range" - }, - "_requiredBy": [ - "/express" - ], - "_resolved": "https://registry.npmjs.org/accepts/-/accepts-1.3.4.tgz", - "_shasum": "86246758c7dd6d21a6474ff084a4740ec05eb21f", - "_shrinkwrap": null, - "_spec": "accepts@~1.3.3", - "_where": "/Users/sdsteve/WebstormProjects/SpotLabNodejs/node_modules/express", - "bugs": { - "url": "https://github.com/jshttp/accepts/issues" - }, - "contributors": [ - { - "name": "Douglas Christopher Wilson", - "email": "doug@somethingdoug.com" - }, - { - "name": "Jonathan Ong", - "email": "me@jongleberry.com", - "url": "http://jongleberry.com" - } - ], - "dependencies": { - "mime-types": "~2.1.16", - "negotiator": "0.6.1" - }, - "description": "Higher-level content negotiation", - "devDependencies": { - "eslint": "3.19.0", - "eslint-config-standard": "10.2.1", - "eslint-plugin-import": "2.7.0", - "eslint-plugin-markdown": "1.0.0-beta.6", - "eslint-plugin-node": "5.1.1", - "eslint-plugin-promise": "3.5.0", - "eslint-plugin-standard": "3.0.1", - "istanbul": "0.4.5", - "mocha": "~1.21.5" - }, - "directories": {}, - "dist": { - "shasum": "86246758c7dd6d21a6474ff084a4740ec05eb21f", - "tarball": "https://registry.npmjs.org/accepts/-/accepts-1.3.4.tgz" - }, - "engines": { - "node": ">= 0.6" - }, - "files": [ - "LICENSE", - "HISTORY.md", - "index.js" - ], - "gitHead": "71ea430741d6eb5484b6c67c95924540a98186a5", - "homepage": "https://github.com/jshttp/accepts#readme", - "keywords": [ - "content", - "negotiation", - "accept", - "accepts" - ], - "license": "MIT", - "maintainers": [ - { - "name": "dougwilson", - "email": "doug@somethingdoug.com" - } - ], - "name": "accepts", - "optionalDependencies": {}, - "readme": "ERROR: No README data found!", - "repository": { - "type": "git", - "url": "git+https://github.com/jshttp/accepts.git" - }, - "scripts": { - "lint": "eslint --plugin markdown --ext js,md .", - "test": "mocha --reporter spec --check-leaks --bail test/", - "test-cov": "istanbul cover node_modules/mocha/bin/_mocha -- --reporter dot --check-leaks test/", - "test-travis": "istanbul cover node_modules/mocha/bin/_mocha --report lcovonly -- --reporter spec --check-leaks test/" - }, - "version": "1.3.4" -} diff --git a/workshops/monte-carlo-on-ec2-spot-fleet/src/web/node_modules/acorn-globals/LICENSE b/workshops/monte-carlo-on-ec2-spot-fleet/src/web/node_modules/acorn-globals/LICENSE deleted file mode 100644 index 27cc9f37..00000000 --- a/workshops/monte-carlo-on-ec2-spot-fleet/src/web/node_modules/acorn-globals/LICENSE +++ /dev/null @@ -1,19 +0,0 @@ -Copyright (c) 2014 Forbes Lindesay - -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, subject to the following conditions: - -The above copyright notice and this permission notice shall be included in -all copies or substantial portions of the Software. - -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. \ No newline at end of file diff --git a/workshops/monte-carlo-on-ec2-spot-fleet/src/web/node_modules/acorn-globals/README.md b/workshops/monte-carlo-on-ec2-spot-fleet/src/web/node_modules/acorn-globals/README.md deleted file mode 100644 index d8cd372e..00000000 --- a/workshops/monte-carlo-on-ec2-spot-fleet/src/web/node_modules/acorn-globals/README.md +++ /dev/null @@ -1,76 +0,0 @@ -# acorn-globals - -Detect global variables in JavaScript using acorn - -[![Build Status](https://img.shields.io/travis/ForbesLindesay/acorn-globals/master.svg)](https://travis-ci.org/ForbesLindesay/acorn-globals) -[![Dependency Status](https://img.shields.io/david/ForbesLindesay/acorn-globals.svg)](https://david-dm.org/ForbesLindesay/acorn-globals) -[![NPM version](https://img.shields.io/npm/v/acorn-globals.svg)](https://www.npmjs.org/package/acorn-globals) - -## Installation - - npm install acorn-globals - -## Usage - -detect.js - -```js -var fs = require('fs'); -var detect = require('acorn-globals'); - -var src = fs.readFileSync(__dirname + '/input.js', 'utf8'); - -var scope = detect(src); -console.dir(scope); -``` - -input.js - -```js -var x = 5; -var y = 3, z = 2; - -w.foo(); -w = 2; - -RAWR=444; -RAWR.foo(); - -BLARG=3; - -foo(function () { - var BAR = 3; - process.nextTick(function (ZZZZZZZZZZZZ) { - console.log('beep boop'); - var xyz = 4; - x += 10; - x.zzzzzz; - ZZZ=6; - }); - function doom () { - } - ZZZ.foo(); - -}); - -console.log(xyz); -``` - -output: - -``` -$ node example/detect.js -[ { name: 'BLARG', nodes: [ [Object] ] }, - { name: 'RAWR', nodes: [ [Object], [Object] ] }, - { name: 'ZZZ', nodes: [ [Object], [Object] ] }, - { name: 'console', nodes: [ [Object], [Object] ] }, - { name: 'foo', nodes: [ [Object] ] }, - { name: 'process', nodes: [ [Object] ] }, - { name: 'w', nodes: [ [Object], [Object] ] }, - { name: 'xyz', nodes: [ [Object] ] } ] -``` - - -## License - - MIT diff --git a/workshops/monte-carlo-on-ec2-spot-fleet/src/web/node_modules/acorn-globals/index.js b/workshops/monte-carlo-on-ec2-spot-fleet/src/web/node_modules/acorn-globals/index.js deleted file mode 100644 index ff924c9a..00000000 --- a/workshops/monte-carlo-on-ec2-spot-fleet/src/web/node_modules/acorn-globals/index.js +++ /dev/null @@ -1,180 +0,0 @@ -'use strict'; - -var acorn = require('acorn'); -var walk = require('acorn/dist/walk'); - -function isScope(node) { - return node.type === 'FunctionExpression' || node.type === 'FunctionDeclaration' || node.type === 'ArrowFunctionExpression' || node.type === 'Program'; -} -function isBlockScope(node) { - return node.type === 'BlockStatement' || isScope(node); -} - -function declaresArguments(node) { - return node.type === 'FunctionExpression' || node.type === 'FunctionDeclaration'; -} - -function declaresThis(node) { - return node.type === 'FunctionExpression' || node.type === 'FunctionDeclaration'; -} - -function reallyParse(source) { - try { - return acorn.parse(source, { - ecmaVersion: 6, - allowReturnOutsideFunction: true, - allowImportExportEverywhere: true, - allowHashBang: true - }); - } catch (ex) { - return acorn.parse(source, { - ecmaVersion: 5, - allowReturnOutsideFunction: true, - allowImportExportEverywhere: true, - allowHashBang: true - }); - } -} -module.exports = findGlobals; -module.exports.parse = reallyParse; -function findGlobals(source) { - var globals = []; - var ast; - // istanbul ignore else - if (typeof source === 'string') { - ast = reallyParse(source); - } else { - ast = source; - } - // istanbul ignore if - if (!(ast && typeof ast === 'object' && ast.type === 'Program')) { - throw new TypeError('Source must be either a string of JavaScript or an acorn AST'); - } - var declareFunction = function (node) { - var fn = node; - fn.locals = fn.locals || {}; - node.params.forEach(function (node) { - declarePattern(node, fn); - }); - if (node.id) { - fn.locals[node.id.name] = true; - } - } - var declarePattern = function (node, parent) { - switch (node.type) { - case 'Identifier': - parent.locals[node.name] = true; - break; - case 'ObjectPattern': - node.properties.forEach(function (node) { - declarePattern(node.value, parent); - }); - break; - case 'ArrayPattern': - node.elements.forEach(function (node) { - if (node) declarePattern(node, parent); - }); - break; - case 'RestElement': - declarePattern(node.argument, parent); - break; - case 'AssignmentPattern': - declarePattern(node.left, parent); - break; - // istanbul ignore next - default: - throw new Error('Unrecognized pattern type: ' + node.type); - } - } - var declareModuleSpecifier = function (node, parents) { - ast.locals = ast.locals || {}; - ast.locals[node.local.name] = true; - } - walk.ancestor(ast, { - 'VariableDeclaration': function (node, parents) { - var parent = null; - for (var i = parents.length - 1; i >= 0 && parent === null; i--) { - if (node.kind === 'var' ? isScope(parents[i]) : isBlockScope(parents[i])) { - parent = parents[i]; - } - } - parent.locals = parent.locals || {}; - node.declarations.forEach(function (declaration) { - declarePattern(declaration.id, parent); - }); - }, - 'FunctionDeclaration': function (node, parents) { - var parent = null; - for (var i = parents.length - 2; i >= 0 && parent === null; i--) { - if (isScope(parents[i])) { - parent = parents[i]; - } - } - parent.locals = parent.locals || {}; - parent.locals[node.id.name] = true; - declareFunction(node); - }, - 'Function': declareFunction, - 'ClassDeclaration': function (node, parents) { - var parent = null; - for (var i = parents.length - 2; i >= 0 && parent === null; i--) { - if (isScope(parents[i])) { - parent = parents[i]; - } - } - parent.locals = parent.locals || {}; - parent.locals[node.id.name] = true; - }, - 'TryStatement': function (node) { - if (node.handler === null) return; - node.handler.body.locals = node.handler.body.locals || {}; - node.handler.body.locals[node.handler.param.name] = true; - }, - 'ImportDefaultSpecifier': declareModuleSpecifier, - 'ImportSpecifier': declareModuleSpecifier, - 'ImportNamespaceSpecifier': declareModuleSpecifier - }); - function identifier(node, parents) { - var name = node.name; - if (name === 'undefined') return; - for (var i = 0; i < parents.length; i++) { - if (name === 'arguments' && declaresArguments(parents[i])) { - return; - } - if (parents[i].locals && name in parents[i].locals) { - return; - } - } - if ( - parents[parents.length - 2] && - parents[parents.length - 2].type === 'TryStatement' && - parents[parents.length - 2].handler && - node === parents[parents.length - 2].handler.param - ) { - return; - } - node.parents = parents; - globals.push(node); - } - walk.ancestor(ast, { - 'VariablePattern': identifier, - 'Identifier': identifier, - 'ThisExpression': function (node, parents) { - for (var i = 0; i < parents.length; i++) { - if (declaresThis(parents[i])) { - return; - } - } - node.parents = parents; - globals.push(node); - } - }); - var groupedGlobals = {}; - globals.forEach(function (node) { - groupedGlobals[node.name] = (groupedGlobals[node.name] || []); - groupedGlobals[node.name].push(node); - }); - return Object.keys(groupedGlobals).sort().map(function (name) { - return {name: name, nodes: groupedGlobals[name]}; - }); -} diff --git a/workshops/monte-carlo-on-ec2-spot-fleet/src/web/node_modules/acorn-globals/package.json b/workshops/monte-carlo-on-ec2-spot-fleet/src/web/node_modules/acorn-globals/package.json deleted file mode 100644 index 1a8b26c8..00000000 --- a/workshops/monte-carlo-on-ec2-spot-fleet/src/web/node_modules/acorn-globals/package.json +++ /dev/null @@ -1,100 +0,0 @@ -{ - "_args": [ - [ - { - "raw": "acorn-globals@^1.0.3", - "scope": null, - "escapedName": "acorn-globals", - "name": "acorn-globals", - "rawSpec": "^1.0.3", - "spec": ">=1.0.3 <2.0.0", - "type": "range" - }, - "/Users/sdsteve/WebstormProjects/SpotLabNodejs/node_modules/with" - ] - ], - "_from": "acorn-globals@>=1.0.3 <2.0.0", - "_id": "acorn-globals@1.0.9", - "_inCache": true, - "_location": "/acorn-globals", - "_nodeVersion": "1.6.2", - "_npmUser": { - "name": "forbeslindesay", - "email": "forbes@lindesay.co.uk" - }, - "_npmVersion": "2.7.1", - "_phantomChildren": {}, - "_requested": { - "raw": "acorn-globals@^1.0.3", - "scope": null, - "escapedName": "acorn-globals", - "name": "acorn-globals", - "rawSpec": "^1.0.3", - "spec": ">=1.0.3 <2.0.0", - "type": "range" - }, - "_requiredBy": [ - "/with" - ], - "_resolved": "https://registry.npmjs.org/acorn-globals/-/acorn-globals-1.0.9.tgz", - "_shasum": "55bb5e98691507b74579d0513413217c380c54cf", - "_shrinkwrap": null, - "_spec": "acorn-globals@^1.0.3", - "_where": "/Users/sdsteve/WebstormProjects/SpotLabNodejs/node_modules/with", - "author": { - "name": "ForbesLindesay" - }, - "bugs": { - "url": "https://github.com/ForbesLindesay/acorn-globals/issues" - }, - "dependencies": { - "acorn": "^2.1.0" - }, - "description": "Detect global variables in JavaScript using acorn", - "devDependencies": { - "testit": "^2.0.2" - }, - "directories": {}, - "dist": { - "shasum": "55bb5e98691507b74579d0513413217c380c54cf", - "tarball": "https://registry.npmjs.org/acorn-globals/-/acorn-globals-1.0.9.tgz" - }, - "files": [ - "index.js", - "LICENSE" - ], - "gitHead": "808cab09764b63679138b012602ca1bb51657f97", - "homepage": "https://github.com/ForbesLindesay/acorn-globals", - "keywords": [ - "ast", - "variable", - "name", - "lexical", - "scope", - "local", - "global", - "implicit" - ], - "license": "MIT", - "maintainers": [ - { - "name": "forbeslindesay", - "email": "forbes@lindesay.co.uk" - }, - { - "name": "timothygu", - "email": "timothygu99@gmail.com" - } - ], - "name": "acorn-globals", - "optionalDependencies": {}, - "readme": "ERROR: No README data found!", - "repository": { - "type": "git", - "url": "git+https://github.com/ForbesLindesay/acorn-globals.git" - }, - "scripts": { - "test": "node test" - }, - "version": "1.0.9" -} diff --git a/workshops/monte-carlo-on-ec2-spot-fleet/src/web/node_modules/acorn/.editorconfig b/workshops/monte-carlo-on-ec2-spot-fleet/src/web/node_modules/acorn/.editorconfig deleted file mode 100644 index c14d5c67..00000000 --- a/workshops/monte-carlo-on-ec2-spot-fleet/src/web/node_modules/acorn/.editorconfig +++ /dev/null @@ -1,7 +0,0 @@ -root = true - -[*] -indent_style = space -indent_size = 2 -end_of_line = lf -insert_final_newline = true diff --git a/workshops/monte-carlo-on-ec2-spot-fleet/src/web/node_modules/acorn/.gitattributes b/workshops/monte-carlo-on-ec2-spot-fleet/src/web/node_modules/acorn/.gitattributes deleted file mode 100644 index fcadb2cf..00000000 --- a/workshops/monte-carlo-on-ec2-spot-fleet/src/web/node_modules/acorn/.gitattributes +++ /dev/null @@ -1 +0,0 @@ -* text eol=lf diff --git a/workshops/monte-carlo-on-ec2-spot-fleet/src/web/node_modules/acorn/.npmignore b/workshops/monte-carlo-on-ec2-spot-fleet/src/web/node_modules/acorn/.npmignore deleted file mode 100644 index ecba2911..00000000 --- a/workshops/monte-carlo-on-ec2-spot-fleet/src/web/node_modules/acorn/.npmignore +++ /dev/null @@ -1,3 +0,0 @@ -/.tern-port -/test -/local diff --git a/workshops/monte-carlo-on-ec2-spot-fleet/src/web/node_modules/acorn/.tern-project b/workshops/monte-carlo-on-ec2-spot-fleet/src/web/node_modules/acorn/.tern-project deleted file mode 100644 index 6718ce07..00000000 --- a/workshops/monte-carlo-on-ec2-spot-fleet/src/web/node_modules/acorn/.tern-project +++ /dev/null @@ -1,6 +0,0 @@ -{ - "plugins": { - "node": true, - "es_modules": true - } -} \ No newline at end of file diff --git a/workshops/monte-carlo-on-ec2-spot-fleet/src/web/node_modules/acorn/.travis.yml b/workshops/monte-carlo-on-ec2-spot-fleet/src/web/node_modules/acorn/.travis.yml deleted file mode 100644 index f50c379b..00000000 --- a/workshops/monte-carlo-on-ec2-spot-fleet/src/web/node_modules/acorn/.travis.yml +++ /dev/null @@ -1,6 +0,0 @@ -language: node_js -sudo: false -node_js: - - '0.10' - - '0.12' - - '4' diff --git a/workshops/monte-carlo-on-ec2-spot-fleet/src/web/node_modules/acorn/AUTHORS b/workshops/monte-carlo-on-ec2-spot-fleet/src/web/node_modules/acorn/AUTHORS deleted file mode 100644 index 0e8f48b6..00000000 --- a/workshops/monte-carlo-on-ec2-spot-fleet/src/web/node_modules/acorn/AUTHORS +++ /dev/null @@ -1,43 +0,0 @@ -List of Acorn contributors. Updated before every release. - -Adrian Rakovsky -Alistair Braidwood -Andres Suarez -Aparajita Fishman -Arian Stolwijk -Artem Govorov -Brandon Mills -Charles Hughes -Conrad Irwin -David Bonnet -ForbesLindesay -Forbes Lindesay -Gilad Peleg -impinball -Ingvar Stepanyan -Jesse McCarthy -Jiaxing Wang -Joel Kemp -Johannes Herr -Jürg Lehni -keeyipchan -Kevin Kwok -krator -Marijn Haverbeke -Martin Carlberg -Mathias Bynens -Mathieu 'p01' Henri -Max Schaefer -Max Zerzouri -Mihai Bazon -Mike Rennie -Nick Fitzgerald -Oskar Schöldström -Paul Harper -Peter Rust -PlNG -r-e-d -Rich Harris -Sebastian McKenzie -Timothy Gu -zsjforcn diff --git a/workshops/monte-carlo-on-ec2-spot-fleet/src/web/node_modules/acorn/LICENSE b/workshops/monte-carlo-on-ec2-spot-fleet/src/web/node_modules/acorn/LICENSE deleted file mode 100644 index d4c7fc58..00000000 --- a/workshops/monte-carlo-on-ec2-spot-fleet/src/web/node_modules/acorn/LICENSE +++ /dev/null @@ -1,19 +0,0 @@ -Copyright (C) 2012-2014 by various contributors (see AUTHORS) - -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, subject to the following conditions: - -The above copyright notice and this permission notice shall be included in -all copies or substantial portions of the Software. - -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. diff --git a/workshops/monte-carlo-on-ec2-spot-fleet/src/web/node_modules/acorn/README.md b/workshops/monte-carlo-on-ec2-spot-fleet/src/web/node_modules/acorn/README.md deleted file mode 100644 index acd39a8e..00000000 --- a/workshops/monte-carlo-on-ec2-spot-fleet/src/web/node_modules/acorn/README.md +++ /dev/null @@ -1,396 +0,0 @@ -# Acorn - -[![Build Status](https://travis-ci.org/ternjs/acorn.svg?branch=master)](https://travis-ci.org/ternjs/acorn) -[![NPM version](https://img.shields.io/npm/v/acorn.svg)](https://www.npmjs.com/package/acorn) -[Author funding status: ![maintainer happiness](https://marijnhaverbeke.nl/fund/status_s.png?force)](https://marijnhaverbeke.nl/fund/) - -A tiny, fast JavaScript parser, written completely in JavaScript. - -## Community - -Acorn is open source software released under an -[MIT license](https://github.com/ternjs/acorn/blob/master/LICENSE). - -You are welcome to -[report bugs](https://github.com/ternjs/acorn/issues) or create pull -requests on [github](https://github.com/ternjs/acorn). For questions -and discussion, please use the -[Tern discussion forum](https://discuss.ternjs.net). - -## Installation - -The easiest way to install acorn is with [`npm`][npm]. - -[npm]: https://www.npmjs.com/ - -```sh -npm install acorn -``` - -Alternately, download the source. - -```sh -git clone https://github.com/ternjs/acorn.git -``` - -## Components - -When run in a CommonJS (node.js) or AMD environment, exported values -appear in the interfaces exposed by the individual files, as usual. -When loaded in the browser (Acorn works in any JS-enabled browser more -recent than IE5) without any kind of module management, a single -global object `acorn` will be defined, and all the exported properties -will be added to that. - -### Main parser - -This is implemented in `dist/acorn.js`, and is what you get when you -`require("acorn")` in node.js. - -**parse**`(input, options)` is used to parse a JavaScript program. -The `input` parameter is a string, `options` can be undefined or an -object setting some of the options listed below. The return value will -be an abstract syntax tree object as specified by the -[ESTree spec][estree]. - -When encountering a syntax error, the parser will raise a -`SyntaxError` object with a meaningful message. The error object will -have a `pos` property that indicates the character offset at which the -error occurred, and a `loc` object that contains a `{line, column}` -object referring to that same position. - -[estree]: https://github.com/estree/estree - -- **ecmaVersion**: Indicates the ECMAScript version to parse. Must be - either 3, 5, or 6. This influences support for strict mode, the set - of reserved words, and support for new syntax features. Default is 5. - -- **sourceType**: Indicate the mode the code should be parsed in. Can be - either `"script"` or `"module"`. - -- **onInsertedSemicolon**: If given a callback, that callback will be - called whenever a missing semicolon is inserted by the parser. The - callback will be given the character offset of the point where the - semicolon is inserted as argument, and if `locations` is on, also a - `{line, column}` object representing this position. - -- **onTrailingComma**: Like `onInsertedSemicolon`, but for trailing - commas. - -- **allowReserved**: If `false`, using a reserved word will generate - an error. Defaults to `true` for `ecmaVersion` 3, `false` for higher - versions. When given the value `"never"`, reserved words and - keywords can also not be used as property names (as in Internet - Explorer's old parser). - -- **allowReturnOutsideFunction**: By default, a return statement at - the top level raises an error. Set this to `true` to accept such - code. - -- **allowImportExportEverywhere**: By default, `import` and `export` - declarations can only appear at a program's top level. Setting this - option to `true` allows them anywhere where a statement is allowed. - -- **allowHashBang**: When this is enabled (off by default), if the - code starts with the characters `#!` (as in a shellscript), the - first line will be treated as a comment. - -- **locations**: When `true`, each node has a `loc` object attached - with `start` and `end` subobjects, each of which contains the - one-based line and zero-based column numbers in `{line, column}` - form. Default is `false`. - -- **onToken**: If a function is passed for this option, each found - token will be passed in same format as tokens returned from - `tokenizer().getToken()`. - - If array is passed, each found token is pushed to it. - - Note that you are not allowed to call the parser from the - callback—that will corrupt its internal state. - -- **onComment**: If a function is passed for this option, whenever a - comment is encountered the function will be called with the - following parameters: - - - `block`: `true` if the comment is a block comment, false if it - is a line comment. - - `text`: The content of the comment. - - `start`: Character offset of the start of the comment. - - `end`: Character offset of the end of the comment. - - When the `locations` options is on, the `{line, column}` locations - of the comment’s start and end are passed as two additional - parameters. - - If array is passed for this option, each found comment is pushed - to it as object in Esprima format: - - ```javascript - { - "type": "Line" | "Block", - "value": "comment text", - "start": Number, - "end": Number, - // If `locations` option is on: - "loc": { - "start": {line: Number, column: Number} - "end": {line: Number, column: Number} - }, - // If `ranges` option is on: - "range": [Number, Number] - } - ``` - - Note that you are not allowed to call the parser from the - callback—that will corrupt its internal state. - -- **ranges**: Nodes have their start and end characters offsets - recorded in `start` and `end` properties (directly on the node, - rather than the `loc` object, which holds line/column data. To also - add a [semi-standardized][range] `range` property holding a - `[start, end]` array with the same numbers, set the `ranges` option - to `true`. - -- **program**: It is possible to parse multiple files into a single - AST by passing the tree produced by parsing the first file as the - `program` option in subsequent parses. This will add the toplevel - forms of the parsed file to the "Program" (top) node of an existing - parse tree. - -- **sourceFile**: When the `locations` option is `true`, you can pass - this option to add a `source` attribute in every node’s `loc` - object. Note that the contents of this option are not examined or - processed in any way; you are free to use whatever format you - choose. - -- **directSourceFile**: Like `sourceFile`, but a `sourceFile` property - will be added directly to the nodes, rather than the `loc` object. - -- **preserveParens**: If this option is `true`, parenthesized expressions - are represented by (non-standard) `ParenthesizedExpression` nodes - that have a single `expression` property containing the expression - inside parentheses. - -[range]: https://bugzilla.mozilla.org/show_bug.cgi?id=745678 - -**parseExpressionAt**`(input, offset, options)` will parse a single -expression in a string, and return its AST. It will not complain if -there is more of the string left after the expression. - -**getLineInfo**`(input, offset)` can be used to get a `{line, -column}` object for a given program string and character offset. - -**tokenizer**`(input, options)` returns an object with a `getToken` -method that can be called repeatedly to get the next token, a `{start, -end, type, value}` object (with added `loc` property when the -`locations` option is enabled and `range` property when the `ranges` -option is enabled). When the token's type is `tokTypes.eof`, you -should stop calling the method, since it will keep returning that same -token forever. - -In ES6 environment, returned result can be used as any other -protocol-compliant iterable: - -```javascript -for (let token of acorn.tokenizer(str)) { - // iterate over the tokens -} - -// transform code to array of tokens: -var tokens = [...acorn.tokenizer(str)]; -``` - -**tokTypes** holds an object mapping names to the token type objects -that end up in the `type` properties of tokens. - -#### Note on using with [Escodegen][escodegen] - -Escodegen supports generating comments from AST, attached in -Esprima-specific format. In order to simulate same format in -Acorn, consider following example: - -```javascript -var comments = [], tokens = []; - -var ast = acorn.parse('var x = 42; // answer', { - // collect ranges for each node - ranges: true, - // collect comments in Esprima's format - onComment: comments, - // collect token ranges - onToken: tokens -}); - -// attach comments using collected information -escodegen.attachComments(ast, comments, tokens); - -// generate code -console.log(escodegen.generate(ast, {comment: true})); -// > 'var x = 42; // answer' -``` - -[escodegen]: https://github.com/estools/escodegen - -### dist/acorn_loose.js ### - -This file implements an error-tolerant parser. It exposes a single -function. The loose parser is accessible in node.js via `require("acorn/dist/acorn_loose")`. - -**parse_dammit**`(input, options)` takes the same arguments and -returns the same syntax tree as the `parse` function in `acorn.js`, -but never raises an error, and will do its best to parse syntactically -invalid code in as meaningful a way as it can. It'll insert identifier -nodes with name `"✖"` as placeholders in places where it can't make -sense of the input. Depends on `acorn.js`, because it uses the same -tokenizer. - -### dist/walk.js ### - -Implements an abstract syntax tree walker. Will store its interface in -`acorn.walk` when loaded without a module system. - -**simple**`(node, visitors, base, state)` does a 'simple' walk over -a tree. `node` should be the AST node to walk, and `visitors` an -object with properties whose names correspond to node types in the -[ESTree spec][estree]. The properties should contain functions -that will be called with the node object and, if applicable the state -at that point. The last two arguments are optional. `base` is a walker -algorithm, and `state` is a start state. The default walker will -simply visit all statements and expressions and not produce a -meaningful state. (An example of a use of state is to track scope at -each point in the tree.) - -**ancestor**`(node, visitors, base, state)` does a 'simple' walk over -a tree, building up an array of ancestor nodes (including the current node) -and passing the array to callbacks in the `state` parameter. - -**recursive**`(node, state, functions, base)` does a 'recursive' -walk, where the walker functions are responsible for continuing the -walk on the child nodes of their target node. `state` is the start -state, and `functions` should contain an object that maps node types -to walker functions. Such functions are called with `(node, state, c)` -arguments, and can cause the walk to continue on a sub-node by calling -the `c` argument on it with `(node, state)` arguments. The optional -`base` argument provides the fallback walker functions for node types -that aren't handled in the `functions` object. If not given, the -default walkers will be used. - -**make**`(functions, base)` builds a new walker object by using the -walker functions in `functions` and filling in the missing ones by -taking defaults from `base`. - -**findNodeAt**`(node, start, end, test, base, state)` tries to -locate a node in a tree at the given start and/or end offsets, which -satisfies the predicate `test`. `start` and `end` can be either `null` -(as wildcard) or a number. `test` may be a string (indicating a node -type) or a function that takes `(nodeType, node)` arguments and -returns a boolean indicating whether this node is interesting. `base` -and `state` are optional, and can be used to specify a custom walker. -Nodes are tested from inner to outer, so if two nodes match the -boundaries, the inner one will be preferred. - -**findNodeAround**`(node, pos, test, base, state)` is a lot like -`findNodeAt`, but will match any node that exists 'around' (spanning) -the given position. - -**findNodeAfter**`(node, pos, test, base, state)` is similar to -`findNodeAround`, but will match all nodes *after* the given position -(testing outer nodes before inner nodes). - -## Command line interface - -The `bin/acorn` utility can be used to parse a file from the command -line. It accepts as arguments its input file and the following -options: - -- `--ecma3|--ecma5|--ecma6`: Sets the ECMAScript version to parse. Default is - version 5. - -- `--module`: Sets the parsing mode to `"module"`. Is set to `"script"` otherwise. - -- `--locations`: Attaches a "loc" object to each node with "start" and - "end" subobjects, each of which contains the one-based line and - zero-based column numbers in `{line, column}` form. - -- `--allow-hash-bang`: If the code starts with the characters #! (as in a shellscript), the first line will be treated as a comment. - -- `--compact`: No whitespace is used in the AST output. - -- `--silent`: Do not output the AST, just return the exit status. - -- `--help`: Print the usage information and quit. - -The utility spits out the syntax tree as JSON data. - -## Build system - -Acorn is written in ECMAScript 6, as a set of small modules, in the -project's `src` directory, and compiled down to bigger ECMAScript 3 -files in `dist` using [Browserify](http://browserify.org) and -[Babel](http://babeljs.io/). If you are already using Babel, you can -consider including the modules directly. - -The command-line test runner (`npm test`) uses the ES6 modules. The -browser-based test page (`test/index.html`) uses the compiled modules. -The `bin/build-acorn.js` script builds the latter from the former. - -If you are working on Acorn, you'll probably want to try the code out -directly, without an intermediate build step. In your scripts, you can -register the Babel require shim like this: - - require("babel-core/register") - -That will allow you to directly `require` the ES6 modules. - -## Plugins - -Acorn is designed support allow plugins which, within reasonable -bounds, redefine the way the parser works. Plugins can add new token -types and new tokenizer contexts (if necessary), and extend methods in -the parser object. This is not a clean, elegant API—using it requires -an understanding of Acorn's internals, and plugins are likely to break -whenever those internals are significantly changed. But still, it is -_possible_, in this way, to create parsers for JavaScript dialects -without forking all of Acorn. And in principle it is even possible to -combine such plugins, so that if you have, for example, a plugin for -parsing types and a plugin for parsing JSX-style XML literals, you -could load them both and parse code with both JSX tags and types. - -A plugin should register itself by adding a property to -`acorn.plugins`, which holds a function. Calling `acorn.parse`, a -`plugins` option can be passed, holding an object mapping plugin names -to configuration values (or just `true` for plugins that don't take -options). After the parser object has been created, the initialization -functions for the chosen plugins are called with `(parser, -configValue)` arguments. They are expected to use the `parser.extend` -method to extend parser methods. For example, the `readToken` method -could be extended like this: - -```javascript -parser.extend("readToken", function(nextMethod) { - return function(code) { - console.log("Reading a token!") - return nextMethod.call(this, code) - } -}) -``` - -The `nextMethod` argument passed to `extend`'s second argument is the -previous value of this method, and should usually be called through to -whenever the extended method does not handle the call itself. - -Similarly, the loose parser allows plugins to register themselves via -`acorn.pluginsLoose`. The extension mechanism is the same as for the -normal parser: - -```javascript -looseParser.extend("readToken", function(nextMethod) { - return function() { - console.log("Reading a token in the loose parser!") - return nextMethod.call(this) - } -}) -``` - -There is a proof-of-concept JSX plugin in the [`acorn-jsx`](https://github.com/RReverser/acorn-jsx) project. diff --git a/workshops/monte-carlo-on-ec2-spot-fleet/src/web/node_modules/acorn/bin/acorn b/workshops/monte-carlo-on-ec2-spot-fleet/src/web/node_modules/acorn/bin/acorn deleted file mode 100755 index db079096..00000000 --- a/workshops/monte-carlo-on-ec2-spot-fleet/src/web/node_modules/acorn/bin/acorn +++ /dev/null @@ -1,71 +0,0 @@ -#!/usr/bin/env node -"use strict"; - -function _interopRequireWildcard(obj) { if (obj && obj.__esModule) { return obj; } else { var newObj = {}; if (obj != null) { for (var key in obj) { if (Object.prototype.hasOwnProperty.call(obj, key)) newObj[key] = obj[key]; } } newObj["default"] = obj; return newObj; } } - -var _path = require("path"); - -var _fs = require("fs"); - -var _distAcornJs = require("../dist/acorn.js"); - -var acorn = _interopRequireWildcard(_distAcornJs); - -var infile = undefined, - forceFile = undefined, - silent = false, - compact = false, - tokenize = false; -var options = {}; - -function help(status) { - var print = status == 0 ? console.log : console.error; - print("usage: " + (0, _path.basename)(process.argv[1]) + " [--ecma3|--ecma5|--ecma6]"); - print(" [--tokenize] [--locations] [---allow-hash-bang] [--compact] [--silent] [--module] [--help] [--] [infile]"); - process.exit(status); -} - -for (var i = 2; i < process.argv.length; ++i) { - var arg = process.argv[i]; - if ((arg == "-" || arg[0] != "-") && !infile) infile = arg;else if (arg == "--" && !infile && i + 2 == process.argv.length) forceFile = infile = process.argv[++i];else if (arg == "--ecma3") options.ecmaVersion = 3;else if (arg == "--ecma5") options.ecmaVersion = 5;else if (arg == "--ecma6") options.ecmaVersion = 6;else if (arg == "--locations") options.locations = true;else if (arg == "--allow-hash-bang") options.allowHashBang = true;else if (arg == "--silent") silent = true;else if (arg == "--compact") compact = true;else if (arg == "--help") help(0);else if (arg == "--tokenize") tokenize = true;else if (arg == "--module") options.sourceType = 'module';else help(1); -} - -function run(code) { - var result = undefined; - if (!tokenize) { - try { - result = acorn.parse(code, options); - } catch (e) { - console.error(e.message);process.exit(1); - } - } else { - result = []; - var tokenizer = acorn.tokenizer(code, options), - token = undefined; - while (true) { - try { - token = tokenizer.getToken(); - } catch (e) { - console.error(e.message);process.exit(1); - } - result.push(token); - if (token.type == acorn.tokTypes.eof) break; - } - } - if (!silent) console.log(JSON.stringify(result, null, compact ? null : 2)); -} - -if (forceFile || infile && infile != "-") { - run((0, _fs.readFileSync)(infile, "utf8")); -} else { - (function () { - var code = ""; - process.stdin.resume(); - process.stdin.on("data", function (chunk) { - return code += chunk; - }); - process.stdin.on("end", function () { - return run(code); - }); - })(); -} \ No newline at end of file diff --git a/workshops/monte-carlo-on-ec2-spot-fleet/src/web/node_modules/acorn/bin/build-acorn.js b/workshops/monte-carlo-on-ec2-spot-fleet/src/web/node_modules/acorn/bin/build-acorn.js deleted file mode 100644 index 71f2cf94..00000000 --- a/workshops/monte-carlo-on-ec2-spot-fleet/src/web/node_modules/acorn/bin/build-acorn.js +++ /dev/null @@ -1,82 +0,0 @@ -var fs = require("fs"), path = require("path") -var stream = require("stream") - -var browserify = require("browserify") -var babel = require('babel-core') -var babelify = require("babelify").configure({loose: "all"}) - -process.chdir(path.resolve(__dirname, "..")) - -browserify({standalone: "acorn"}) - .plugin(require('browserify-derequire')) - .transform(babelify) - .require("./src/index.js", {entry: true}) - .bundle() - .on("error", function (err) { console.log("Error: " + err.message) }) - .pipe(fs.createWriteStream("dist/acorn.js")) - -var ACORN_PLACEHOLDER = "this_function_call_should_be_replaced_with_a_call_to_load_acorn()"; -function acornShimPrepare(file) { - var tr = new stream.Transform - if (file == path.resolve(__dirname, "../src/index.js")) { - var sent = false - tr._transform = function(chunk, _, callback) { - if (!sent) { - sent = true - callback(null, ACORN_PLACEHOLDER); - } else { - callback() - } - } - } else { - tr._transform = function(chunk, _, callback) { callback(null, chunk) } - } - return tr -} -function acornShimComplete() { - var tr = new stream.Transform - var buffer = ""; - tr._transform = function(chunk, _, callback) { - buffer += chunk.toString("utf8"); - callback(); - }; - tr._flush = function (callback) { - tr.push(buffer.replace(ACORN_PLACEHOLDER, "module.exports = typeof acorn != 'undefined' ? acorn : require(\"./acorn\")")); - callback(null); - }; - return tr; -} - -browserify({standalone: "acorn.loose"}) - .plugin(require('browserify-derequire')) - .transform(acornShimPrepare) - .transform(babelify) - .require("./src/loose/index.js", {entry: true}) - .bundle() - .on("error", function (err) { console.log("Error: " + err.message) }) - .pipe(acornShimComplete()) - .pipe(fs.createWriteStream("dist/acorn_loose.js")) - -browserify({standalone: "acorn.walk"}) - .plugin(require('browserify-derequire')) - .transform(acornShimPrepare) - .transform(babelify) - .require("./src/walk/index.js", {entry: true}) - .bundle() - .on("error", function (err) { console.log("Error: " + err.message) }) - .pipe(acornShimComplete()) - .pipe(fs.createWriteStream("dist/walk.js")) - -babel.transformFile("./src/bin/acorn.js", function (err, result) { - if (err) return console.log("Error: " + err.message) - fs.writeFile("bin/acorn", result.code, function (err) { - if (err) return console.log("Error: " + err.message) - - // Make bin/acorn executable - if (process.platform === 'win32') - return - var stat = fs.statSync("bin/acorn") - var newPerm = stat.mode | parseInt('111', 8) - fs.chmodSync("bin/acorn", newPerm) - }) -}) diff --git a/workshops/monte-carlo-on-ec2-spot-fleet/src/web/node_modules/acorn/bin/generate-identifier-regex.js b/workshops/monte-carlo-on-ec2-spot-fleet/src/web/node_modules/acorn/bin/generate-identifier-regex.js deleted file mode 100644 index 0d7c50fc..00000000 --- a/workshops/monte-carlo-on-ec2-spot-fleet/src/web/node_modules/acorn/bin/generate-identifier-regex.js +++ /dev/null @@ -1,47 +0,0 @@ -// Note: run `npm install unicode-7.0.0` first. - -// Which Unicode version should be used? -var version = '7.0.0'; - -var start = require('unicode-' + version + '/properties/ID_Start/code-points') - .filter(function(ch) { return ch > 127; }); -var cont = [0x200c, 0x200d].concat(require('unicode-' + version + '/properties/ID_Continue/code-points') - .filter(function(ch) { return ch > 127 && start.indexOf(ch) == -1; })); - -function pad(str, width) { - while (str.length < width) str = "0" + str; - return str; -} - -function esc(code) { - var hex = code.toString(16); - if (hex.length <= 2) return "\\x" + pad(hex, 2); - else return "\\u" + pad(hex, 4); -} - -function generate(chars) { - var astral = [], re = ""; - for (var i = 0, at = 0x10000; i < chars.length; i++) { - var from = chars[i], to = from; - while (i < chars.length - 1 && chars[i + 1] == to + 1) { - i++; - to++; - } - if (to <= 0xffff) { - if (from == to) re += esc(from); - else if (from + 1 == to) re += esc(from) + esc(to); - else re += esc(from) + "-" + esc(to); - } else { - astral.push(from - at, to - from); - at = to; - } - } - return {nonASCII: re, astral: astral}; -} - -var startData = generate(start), contData = generate(cont); - -console.log(" var nonASCIIidentifierStartChars = \"" + startData.nonASCII + "\";"); -console.log(" var nonASCIIidentifierChars = \"" + contData.nonASCII + "\";"); -console.log(" var astralIdentifierStartCodes = " + JSON.stringify(startData.astral) + ";"); -console.log(" var astralIdentifierCodes = " + JSON.stringify(contData.astral) + ";"); diff --git a/workshops/monte-carlo-on-ec2-spot-fleet/src/web/node_modules/acorn/bin/update_authors.sh b/workshops/monte-carlo-on-ec2-spot-fleet/src/web/node_modules/acorn/bin/update_authors.sh deleted file mode 100755 index 466c8db5..00000000 --- a/workshops/monte-carlo-on-ec2-spot-fleet/src/web/node_modules/acorn/bin/update_authors.sh +++ /dev/null @@ -1,6 +0,0 @@ -# Combine existing list of authors with everyone known in git, sort, add header. -tail --lines=+3 AUTHORS > AUTHORS.tmp -git log --format='%aN' | grep -v abraidwood >> AUTHORS.tmp -echo -e "List of Acorn contributors. Updated before every release.\n" > AUTHORS -sort -u AUTHORS.tmp >> AUTHORS -rm -f AUTHORS.tmp diff --git a/workshops/monte-carlo-on-ec2-spot-fleet/src/web/node_modules/acorn/dist/.keep b/workshops/monte-carlo-on-ec2-spot-fleet/src/web/node_modules/acorn/dist/.keep deleted file mode 100644 index e69de29b..00000000 diff --git a/workshops/monte-carlo-on-ec2-spot-fleet/src/web/node_modules/acorn/dist/acorn.js b/workshops/monte-carlo-on-ec2-spot-fleet/src/web/node_modules/acorn/dist/acorn.js deleted file mode 100644 index 9419f862..00000000 --- a/workshops/monte-carlo-on-ec2-spot-fleet/src/web/node_modules/acorn/dist/acorn.js +++ /dev/null @@ -1,3340 +0,0 @@ -(function(f){if(typeof exports==="object"&&typeof module!=="undefined"){module.exports=f()}else if(typeof define==="function"&&define.amd){define([],f)}else{var g;if(typeof window!=="undefined"){g=window}else if(typeof global!=="undefined"){g=global}else if(typeof self!=="undefined"){g=self}else{g=this}g.acorn = f()}})(function(){var define,module,exports;return (function e(t,n,r){function s(o,u){if(!n[o]){if(!t[o]){var a=typeof require=="function"&&require;if(!u&&a)return a(o,!0);if(i)return i(o,!0);var f=new Error("Cannot find module '"+o+"'");throw f.code="MODULE_NOT_FOUND",f}var l=n[o]={exports:{}};t[o][0].call(l.exports,function(e){var n=t[o][1][e];return s(n?n:e)},l,l.exports,e,t,n,r)}return n[o].exports}var i=typeof require=="function"&&require;for(var o=0;o= 6 && (prop.computed || prop.method || prop.shorthand)) return; - var key = prop.key;var name = undefined; - switch (key.type) { - case "Identifier": - name = key.name;break; - case "Literal": - name = String(key.value);break; - default: - return; - } - var kind = prop.kind; - - if (this.options.ecmaVersion >= 6) { - if (name === "__proto__" && kind === "init") { - if (propHash.proto) this.raise(key.start, "Redefinition of __proto__ property"); - propHash.proto = true; - } - return; - } - name = "$" + name; - var other = propHash[name]; - if (other) { - var isGetSet = kind !== "init"; - if ((this.strict || isGetSet) && other[kind] || !(isGetSet ^ other.init)) this.raise(key.start, "Redefinition of property"); - } else { - other = propHash[name] = { - init: false, - get: false, - set: false - }; - } - other[kind] = true; -}; - -// ### Expression parsing - -// These nest, from the most general expression type at the top to -// 'atomic', nondivisible expression types at the bottom. Most of -// the functions will simply let the function(s) below them parse, -// and, *if* the syntactic construct they handle is present, wrap -// the AST node that the inner parser gave them in another node. - -// Parse a full expression. The optional arguments are used to -// forbid the `in` operator (in for loops initalization expressions) -// and provide reference for storing '=' operator inside shorthand -// property assignment in contexts where both object expression -// and object pattern might appear (so it's possible to raise -// delayed syntax error at correct position). - -pp.parseExpression = function (noIn, refDestructuringErrors) { - var startPos = this.start, - startLoc = this.startLoc; - var expr = this.parseMaybeAssign(noIn, refDestructuringErrors); - if (this.type === _tokentype.types.comma) { - var node = this.startNodeAt(startPos, startLoc); - node.expressions = [expr]; - while (this.eat(_tokentype.types.comma)) node.expressions.push(this.parseMaybeAssign(noIn, refDestructuringErrors)); - return this.finishNode(node, "SequenceExpression"); - } - return expr; -}; - -// Parse an assignment expression. This includes applications of -// operators like `+=`. - -pp.parseMaybeAssign = function (noIn, refDestructuringErrors, afterLeftParse) { - if (this.type == _tokentype.types._yield && this.inGenerator) return this.parseYield(); - - var validateDestructuring = false; - if (!refDestructuringErrors) { - refDestructuringErrors = { shorthandAssign: 0, trailingComma: 0 }; - validateDestructuring = true; - } - var startPos = this.start, - startLoc = this.startLoc; - if (this.type == _tokentype.types.parenL || this.type == _tokentype.types.name) this.potentialArrowAt = this.start; - var left = this.parseMaybeConditional(noIn, refDestructuringErrors); - if (afterLeftParse) left = afterLeftParse.call(this, left, startPos, startLoc); - if (this.type.isAssign) { - if (validateDestructuring) this.checkPatternErrors(refDestructuringErrors, true); - var node = this.startNodeAt(startPos, startLoc); - node.operator = this.value; - node.left = this.type === _tokentype.types.eq ? this.toAssignable(left) : left; - refDestructuringErrors.shorthandAssign = 0; // reset because shorthand default was used correctly - this.checkLVal(left); - this.next(); - node.right = this.parseMaybeAssign(noIn); - return this.finishNode(node, "AssignmentExpression"); - } else { - if (validateDestructuring) this.checkExpressionErrors(refDestructuringErrors, true); - } - return left; -}; - -// Parse a ternary conditional (`?:`) operator. - -pp.parseMaybeConditional = function (noIn, refDestructuringErrors) { - var startPos = this.start, - startLoc = this.startLoc; - var expr = this.parseExprOps(noIn, refDestructuringErrors); - if (this.checkExpressionErrors(refDestructuringErrors)) return expr; - if (this.eat(_tokentype.types.question)) { - var node = this.startNodeAt(startPos, startLoc); - node.test = expr; - node.consequent = this.parseMaybeAssign(); - this.expect(_tokentype.types.colon); - node.alternate = this.parseMaybeAssign(noIn); - return this.finishNode(node, "ConditionalExpression"); - } - return expr; -}; - -// Start the precedence parser. - -pp.parseExprOps = function (noIn, refDestructuringErrors) { - var startPos = this.start, - startLoc = this.startLoc; - var expr = this.parseMaybeUnary(refDestructuringErrors); - if (this.checkExpressionErrors(refDestructuringErrors)) return expr; - return this.parseExprOp(expr, startPos, startLoc, -1, noIn); -}; - -// Parse binary operators with the operator precedence parsing -// algorithm. `left` is the left-hand side of the operator. -// `minPrec` provides context that allows the function to stop and -// defer further parser to one of its callers when it encounters an -// operator that has a lower precedence than the set it is parsing. - -pp.parseExprOp = function (left, leftStartPos, leftStartLoc, minPrec, noIn) { - var prec = this.type.binop; - if (prec != null && (!noIn || this.type !== _tokentype.types._in)) { - if (prec > minPrec) { - var node = this.startNodeAt(leftStartPos, leftStartLoc); - node.left = left; - node.operator = this.value; - var op = this.type; - this.next(); - var startPos = this.start, - startLoc = this.startLoc; - node.right = this.parseExprOp(this.parseMaybeUnary(), startPos, startLoc, prec, noIn); - this.finishNode(node, op === _tokentype.types.logicalOR || op === _tokentype.types.logicalAND ? "LogicalExpression" : "BinaryExpression"); - return this.parseExprOp(node, leftStartPos, leftStartLoc, minPrec, noIn); - } - } - return left; -}; - -// Parse unary operators, both prefix and postfix. - -pp.parseMaybeUnary = function (refDestructuringErrors) { - if (this.type.prefix) { - var node = this.startNode(), - update = this.type === _tokentype.types.incDec; - node.operator = this.value; - node.prefix = true; - this.next(); - node.argument = this.parseMaybeUnary(); - this.checkExpressionErrors(refDestructuringErrors, true); - if (update) this.checkLVal(node.argument);else if (this.strict && node.operator === "delete" && node.argument.type === "Identifier") this.raise(node.start, "Deleting local variable in strict mode"); - return this.finishNode(node, update ? "UpdateExpression" : "UnaryExpression"); - } - var startPos = this.start, - startLoc = this.startLoc; - var expr = this.parseExprSubscripts(refDestructuringErrors); - if (this.checkExpressionErrors(refDestructuringErrors)) return expr; - while (this.type.postfix && !this.canInsertSemicolon()) { - var node = this.startNodeAt(startPos, startLoc); - node.operator = this.value; - node.prefix = false; - node.argument = expr; - this.checkLVal(expr); - this.next(); - expr = this.finishNode(node, "UpdateExpression"); - } - return expr; -}; - -// Parse call, dot, and `[]`-subscript expressions. - -pp.parseExprSubscripts = function (refDestructuringErrors) { - var startPos = this.start, - startLoc = this.startLoc; - var expr = this.parseExprAtom(refDestructuringErrors); - var skipArrowSubscripts = expr.type === "ArrowFunctionExpression" && this.input.slice(this.lastTokStart, this.lastTokEnd) !== ")"; - if (this.checkExpressionErrors(refDestructuringErrors) || skipArrowSubscripts) return expr; - return this.parseSubscripts(expr, startPos, startLoc); -}; - -pp.parseSubscripts = function (base, startPos, startLoc, noCalls) { - for (;;) { - if (this.eat(_tokentype.types.dot)) { - var node = this.startNodeAt(startPos, startLoc); - node.object = base; - node.property = this.parseIdent(true); - node.computed = false; - base = this.finishNode(node, "MemberExpression"); - } else if (this.eat(_tokentype.types.bracketL)) { - var node = this.startNodeAt(startPos, startLoc); - node.object = base; - node.property = this.parseExpression(); - node.computed = true; - this.expect(_tokentype.types.bracketR); - base = this.finishNode(node, "MemberExpression"); - } else if (!noCalls && this.eat(_tokentype.types.parenL)) { - var node = this.startNodeAt(startPos, startLoc); - node.callee = base; - node.arguments = this.parseExprList(_tokentype.types.parenR, false); - base = this.finishNode(node, "CallExpression"); - } else if (this.type === _tokentype.types.backQuote) { - var node = this.startNodeAt(startPos, startLoc); - node.tag = base; - node.quasi = this.parseTemplate(); - base = this.finishNode(node, "TaggedTemplateExpression"); - } else { - return base; - } - } -}; - -// Parse an atomic expression — either a single token that is an -// expression, an expression started by a keyword like `function` or -// `new`, or an expression wrapped in punctuation like `()`, `[]`, -// or `{}`. - -pp.parseExprAtom = function (refDestructuringErrors) { - var node = undefined, - canBeArrow = this.potentialArrowAt == this.start; - switch (this.type) { - case _tokentype.types._super: - if (!this.inFunction) this.raise(this.start, "'super' outside of function or class"); - case _tokentype.types._this: - var type = this.type === _tokentype.types._this ? "ThisExpression" : "Super"; - node = this.startNode(); - this.next(); - return this.finishNode(node, type); - - case _tokentype.types._yield: - if (this.inGenerator) this.unexpected(); - - case _tokentype.types.name: - var startPos = this.start, - startLoc = this.startLoc; - var id = this.parseIdent(this.type !== _tokentype.types.name); - if (canBeArrow && !this.canInsertSemicolon() && this.eat(_tokentype.types.arrow)) return this.parseArrowExpression(this.startNodeAt(startPos, startLoc), [id]); - return id; - - case _tokentype.types.regexp: - var value = this.value; - node = this.parseLiteral(value.value); - node.regex = { pattern: value.pattern, flags: value.flags }; - return node; - - case _tokentype.types.num:case _tokentype.types.string: - return this.parseLiteral(this.value); - - case _tokentype.types._null:case _tokentype.types._true:case _tokentype.types._false: - node = this.startNode(); - node.value = this.type === _tokentype.types._null ? null : this.type === _tokentype.types._true; - node.raw = this.type.keyword; - this.next(); - return this.finishNode(node, "Literal"); - - case _tokentype.types.parenL: - return this.parseParenAndDistinguishExpression(canBeArrow); - - case _tokentype.types.bracketL: - node = this.startNode(); - this.next(); - // check whether this is array comprehension or regular array - if (this.options.ecmaVersion >= 7 && this.type === _tokentype.types._for) { - return this.parseComprehension(node, false); - } - node.elements = this.parseExprList(_tokentype.types.bracketR, true, true, refDestructuringErrors); - return this.finishNode(node, "ArrayExpression"); - - case _tokentype.types.braceL: - return this.parseObj(false, refDestructuringErrors); - - case _tokentype.types._function: - node = this.startNode(); - this.next(); - return this.parseFunction(node, false); - - case _tokentype.types._class: - return this.parseClass(this.startNode(), false); - - case _tokentype.types._new: - return this.parseNew(); - - case _tokentype.types.backQuote: - return this.parseTemplate(); - - default: - this.unexpected(); - } -}; - -pp.parseLiteral = function (value) { - var node = this.startNode(); - node.value = value; - node.raw = this.input.slice(this.start, this.end); - this.next(); - return this.finishNode(node, "Literal"); -}; - -pp.parseParenExpression = function () { - this.expect(_tokentype.types.parenL); - var val = this.parseExpression(); - this.expect(_tokentype.types.parenR); - return val; -}; - -pp.parseParenAndDistinguishExpression = function (canBeArrow) { - var startPos = this.start, - startLoc = this.startLoc, - val = undefined; - if (this.options.ecmaVersion >= 6) { - this.next(); - - if (this.options.ecmaVersion >= 7 && this.type === _tokentype.types._for) { - return this.parseComprehension(this.startNodeAt(startPos, startLoc), true); - } - - var innerStartPos = this.start, - innerStartLoc = this.startLoc; - var exprList = [], - first = true; - var refDestructuringErrors = { shorthandAssign: 0, trailingComma: 0 }, - spreadStart = undefined, - innerParenStart = undefined; - while (this.type !== _tokentype.types.parenR) { - first ? first = false : this.expect(_tokentype.types.comma); - if (this.type === _tokentype.types.ellipsis) { - spreadStart = this.start; - exprList.push(this.parseParenItem(this.parseRest())); - break; - } else { - if (this.type === _tokentype.types.parenL && !innerParenStart) { - innerParenStart = this.start; - } - exprList.push(this.parseMaybeAssign(false, refDestructuringErrors, this.parseParenItem)); - } - } - var innerEndPos = this.start, - innerEndLoc = this.startLoc; - this.expect(_tokentype.types.parenR); - - if (canBeArrow && !this.canInsertSemicolon() && this.eat(_tokentype.types.arrow)) { - this.checkPatternErrors(refDestructuringErrors, true); - if (innerParenStart) this.unexpected(innerParenStart); - return this.parseParenArrowList(startPos, startLoc, exprList); - } - - if (!exprList.length) this.unexpected(this.lastTokStart); - if (spreadStart) this.unexpected(spreadStart); - this.checkExpressionErrors(refDestructuringErrors, true); - - if (exprList.length > 1) { - val = this.startNodeAt(innerStartPos, innerStartLoc); - val.expressions = exprList; - this.finishNodeAt(val, "SequenceExpression", innerEndPos, innerEndLoc); - } else { - val = exprList[0]; - } - } else { - val = this.parseParenExpression(); - } - - if (this.options.preserveParens) { - var par = this.startNodeAt(startPos, startLoc); - par.expression = val; - return this.finishNode(par, "ParenthesizedExpression"); - } else { - return val; - } -}; - -pp.parseParenItem = function (item) { - return item; -}; - -pp.parseParenArrowList = function (startPos, startLoc, exprList) { - return this.parseArrowExpression(this.startNodeAt(startPos, startLoc), exprList); -}; - -// New's precedence is slightly tricky. It must allow its argument to -// be a `[]` or dot subscript expression, but not a call — at least, -// not without wrapping it in parentheses. Thus, it uses the noCalls -// argument to parseSubscripts to prevent it from consuming the -// argument list. - -var empty = []; - -pp.parseNew = function () { - var node = this.startNode(); - var meta = this.parseIdent(true); - if (this.options.ecmaVersion >= 6 && this.eat(_tokentype.types.dot)) { - node.meta = meta; - node.property = this.parseIdent(true); - if (node.property.name !== "target") this.raise(node.property.start, "The only valid meta property for new is new.target"); - if (!this.inFunction) this.raise(node.start, "new.target can only be used in functions"); - return this.finishNode(node, "MetaProperty"); - } - var startPos = this.start, - startLoc = this.startLoc; - node.callee = this.parseSubscripts(this.parseExprAtom(), startPos, startLoc, true); - if (this.eat(_tokentype.types.parenL)) node.arguments = this.parseExprList(_tokentype.types.parenR, false);else node.arguments = empty; - return this.finishNode(node, "NewExpression"); -}; - -// Parse template expression. - -pp.parseTemplateElement = function () { - var elem = this.startNode(); - elem.value = { - raw: this.input.slice(this.start, this.end).replace(/\r\n?/g, '\n'), - cooked: this.value - }; - this.next(); - elem.tail = this.type === _tokentype.types.backQuote; - return this.finishNode(elem, "TemplateElement"); -}; - -pp.parseTemplate = function () { - var node = this.startNode(); - this.next(); - node.expressions = []; - var curElt = this.parseTemplateElement(); - node.quasis = [curElt]; - while (!curElt.tail) { - this.expect(_tokentype.types.dollarBraceL); - node.expressions.push(this.parseExpression()); - this.expect(_tokentype.types.braceR); - node.quasis.push(curElt = this.parseTemplateElement()); - } - this.next(); - return this.finishNode(node, "TemplateLiteral"); -}; - -// Parse an object literal or binding pattern. - -pp.parseObj = function (isPattern, refDestructuringErrors) { - var node = this.startNode(), - first = true, - propHash = {}; - node.properties = []; - this.next(); - while (!this.eat(_tokentype.types.braceR)) { - if (!first) { - this.expect(_tokentype.types.comma); - if (this.afterTrailingComma(_tokentype.types.braceR)) break; - } else first = false; - - var prop = this.startNode(), - isGenerator = undefined, - startPos = undefined, - startLoc = undefined; - if (this.options.ecmaVersion >= 6) { - prop.method = false; - prop.shorthand = false; - if (isPattern || refDestructuringErrors) { - startPos = this.start; - startLoc = this.startLoc; - } - if (!isPattern) isGenerator = this.eat(_tokentype.types.star); - } - this.parsePropertyName(prop); - this.parsePropertyValue(prop, isPattern, isGenerator, startPos, startLoc, refDestructuringErrors); - this.checkPropClash(prop, propHash); - node.properties.push(this.finishNode(prop, "Property")); - } - return this.finishNode(node, isPattern ? "ObjectPattern" : "ObjectExpression"); -}; - -pp.parsePropertyValue = function (prop, isPattern, isGenerator, startPos, startLoc, refDestructuringErrors) { - if (this.eat(_tokentype.types.colon)) { - prop.value = isPattern ? this.parseMaybeDefault(this.start, this.startLoc) : this.parseMaybeAssign(false, refDestructuringErrors); - prop.kind = "init"; - } else if (this.options.ecmaVersion >= 6 && this.type === _tokentype.types.parenL) { - if (isPattern) this.unexpected(); - prop.kind = "init"; - prop.method = true; - prop.value = this.parseMethod(isGenerator); - } else if (this.options.ecmaVersion >= 5 && !prop.computed && prop.key.type === "Identifier" && (prop.key.name === "get" || prop.key.name === "set") && (this.type != _tokentype.types.comma && this.type != _tokentype.types.braceR)) { - if (isGenerator || isPattern) this.unexpected(); - prop.kind = prop.key.name; - this.parsePropertyName(prop); - prop.value = this.parseMethod(false); - var paramCount = prop.kind === "get" ? 0 : 1; - if (prop.value.params.length !== paramCount) { - var start = prop.value.start; - if (prop.kind === "get") this.raise(start, "getter should have no params");else this.raise(start, "setter should have exactly one param"); - } - if (prop.kind === "set" && prop.value.params[0].type === "RestElement") this.raise(prop.value.params[0].start, "Setter cannot use rest params"); - } else if (this.options.ecmaVersion >= 6 && !prop.computed && prop.key.type === "Identifier") { - prop.kind = "init"; - if (isPattern) { - if (this.keywords.test(prop.key.name) || (this.strict ? this.reservedWordsStrictBind : this.reservedWords).test(prop.key.name)) this.raise(prop.key.start, "Binding " + prop.key.name); - prop.value = this.parseMaybeDefault(startPos, startLoc, prop.key); - } else if (this.type === _tokentype.types.eq && refDestructuringErrors) { - if (!refDestructuringErrors.shorthandAssign) refDestructuringErrors.shorthandAssign = this.start; - prop.value = this.parseMaybeDefault(startPos, startLoc, prop.key); - } else { - prop.value = prop.key; - } - prop.shorthand = true; - } else this.unexpected(); -}; - -pp.parsePropertyName = function (prop) { - if (this.options.ecmaVersion >= 6) { - if (this.eat(_tokentype.types.bracketL)) { - prop.computed = true; - prop.key = this.parseMaybeAssign(); - this.expect(_tokentype.types.bracketR); - return prop.key; - } else { - prop.computed = false; - } - } - return prop.key = this.type === _tokentype.types.num || this.type === _tokentype.types.string ? this.parseExprAtom() : this.parseIdent(true); -}; - -// Initialize empty function node. - -pp.initFunction = function (node) { - node.id = null; - if (this.options.ecmaVersion >= 6) { - node.generator = false; - node.expression = false; - } -}; - -// Parse object or class method. - -pp.parseMethod = function (isGenerator) { - var node = this.startNode(); - this.initFunction(node); - this.expect(_tokentype.types.parenL); - node.params = this.parseBindingList(_tokentype.types.parenR, false, false); - if (this.options.ecmaVersion >= 6) node.generator = isGenerator; - this.parseFunctionBody(node, false); - return this.finishNode(node, "FunctionExpression"); -}; - -// Parse arrow function expression with given parameters. - -pp.parseArrowExpression = function (node, params) { - this.initFunction(node); - node.params = this.toAssignableList(params, true); - this.parseFunctionBody(node, true); - return this.finishNode(node, "ArrowFunctionExpression"); -}; - -// Parse function body and check parameters. - -pp.parseFunctionBody = function (node, isArrowFunction) { - var isExpression = isArrowFunction && this.type !== _tokentype.types.braceL; - - if (isExpression) { - node.body = this.parseMaybeAssign(); - node.expression = true; - } else { - // Start a new scope with regard to labels and the `inFunction` - // flag (restore them to their old value afterwards). - var oldInFunc = this.inFunction, - oldInGen = this.inGenerator, - oldLabels = this.labels; - this.inFunction = true;this.inGenerator = node.generator;this.labels = []; - node.body = this.parseBlock(true); - node.expression = false; - this.inFunction = oldInFunc;this.inGenerator = oldInGen;this.labels = oldLabels; - } - - // If this is a strict mode function, verify that argument names - // are not repeated, and it does not try to bind the words `eval` - // or `arguments`. - if (this.strict || !isExpression && node.body.body.length && this.isUseStrict(node.body.body[0])) { - var oldStrict = this.strict; - this.strict = true; - if (node.id) this.checkLVal(node.id, true); - this.checkParams(node); - this.strict = oldStrict; - } else if (isArrowFunction) { - this.checkParams(node); - } -}; - -// Checks function params for various disallowed patterns such as using "eval" -// or "arguments" and duplicate parameters. - -pp.checkParams = function (node) { - var nameHash = {}; - for (var i = 0; i < node.params.length; i++) { - this.checkLVal(node.params[i], true, nameHash); - } -}; - -// Parses a comma-separated list of expressions, and returns them as -// an array. `close` is the token type that ends the list, and -// `allowEmpty` can be turned on to allow subsequent commas with -// nothing in between them to be parsed as `null` (which is needed -// for array literals). - -pp.parseExprList = function (close, allowTrailingComma, allowEmpty, refDestructuringErrors) { - var elts = [], - first = true; - while (!this.eat(close)) { - if (!first) { - this.expect(_tokentype.types.comma); - if (this.type === close && refDestructuringErrors && !refDestructuringErrors.trailingComma) { - refDestructuringErrors.trailingComma = this.lastTokStart; - } - if (allowTrailingComma && this.afterTrailingComma(close)) break; - } else first = false; - - var elt = undefined; - if (allowEmpty && this.type === _tokentype.types.comma) elt = null;else if (this.type === _tokentype.types.ellipsis) elt = this.parseSpread(refDestructuringErrors);else elt = this.parseMaybeAssign(false, refDestructuringErrors); - elts.push(elt); - } - return elts; -}; - -// Parse the next token as an identifier. If `liberal` is true (used -// when parsing properties), it will also convert keywords into -// identifiers. - -pp.parseIdent = function (liberal) { - var node = this.startNode(); - if (liberal && this.options.allowReserved == "never") liberal = false; - if (this.type === _tokentype.types.name) { - if (!liberal && (this.strict ? this.reservedWordsStrict : this.reservedWords).test(this.value) && (this.options.ecmaVersion >= 6 || this.input.slice(this.start, this.end).indexOf("\\") == -1)) this.raise(this.start, "The keyword '" + this.value + "' is reserved"); - node.name = this.value; - } else if (liberal && this.type.keyword) { - node.name = this.type.keyword; - } else { - this.unexpected(); - } - this.next(); - return this.finishNode(node, "Identifier"); -}; - -// Parses yield expression inside generator. - -pp.parseYield = function () { - var node = this.startNode(); - this.next(); - if (this.type == _tokentype.types.semi || this.canInsertSemicolon() || this.type != _tokentype.types.star && !this.type.startsExpr) { - node.delegate = false; - node.argument = null; - } else { - node.delegate = this.eat(_tokentype.types.star); - node.argument = this.parseMaybeAssign(); - } - return this.finishNode(node, "YieldExpression"); -}; - -// Parses array and generator comprehensions. - -pp.parseComprehension = function (node, isGenerator) { - node.blocks = []; - while (this.type === _tokentype.types._for) { - var block = this.startNode(); - this.next(); - this.expect(_tokentype.types.parenL); - block.left = this.parseBindingAtom(); - this.checkLVal(block.left, true); - this.expectContextual("of"); - block.right = this.parseExpression(); - this.expect(_tokentype.types.parenR); - node.blocks.push(this.finishNode(block, "ComprehensionBlock")); - } - node.filter = this.eat(_tokentype.types._if) ? this.parseParenExpression() : null; - node.body = this.parseExpression(); - this.expect(isGenerator ? _tokentype.types.parenR : _tokentype.types.bracketR); - node.generator = isGenerator; - return this.finishNode(node, "ComprehensionExpression"); -}; - -},{"./state":10,"./tokentype":14}],2:[function(_dereq_,module,exports){ -// This is a trick taken from Esprima. It turns out that, on -// non-Chrome browsers, to check whether a string is in a set, a -// predicate containing a big ugly `switch` statement is faster than -// a regular expression, and on Chrome the two are about on par. -// This function uses `eval` (non-lexical) to produce such a -// predicate from a space-separated string of words. -// -// It starts by sorting the words by length. - -// Reserved word lists for various dialects of the language - -"use strict"; - -exports.__esModule = true; -exports.isIdentifierStart = isIdentifierStart; -exports.isIdentifierChar = isIdentifierChar; -var reservedWords = { - 3: "abstract boolean byte char class double enum export extends final float goto implements import int interface long native package private protected public short static super synchronized throws transient volatile", - 5: "class enum extends super const export import", - 6: "enum", - strict: "implements interface let package private protected public static yield", - strictBind: "eval arguments" -}; - -exports.reservedWords = reservedWords; -// And the keywords - -var ecma5AndLessKeywords = "break case catch continue debugger default do else finally for function if return switch throw try var while with null true false instanceof typeof void delete new in this"; - -var keywords = { - 5: ecma5AndLessKeywords, - 6: ecma5AndLessKeywords + " let const class extends export import yield super" -}; - -exports.keywords = keywords; -// ## Character categories - -// Big ugly regular expressions that match characters in the -// whitespace, identifier, and identifier-start categories. These -// are only applied when a character is found to actually have a -// code point above 128. -// Generated by `bin/generate-identifier-regex.js`. - -var nonASCIIidentifierStartChars = "ªµºÀ-ÖØ-öø-ˁˆ-ˑˠ-ˤˬˮͰ-ʹͶͷͺ-ͽͿΆΈ-ΊΌΎ-ΡΣ-ϵϷ-ҁҊ-ԯԱ-Ֆՙա-ևא-תװ-ײؠ-يٮٯٱ-ۓەۥۦۮۯۺ-ۼۿܐܒ-ܯݍ-ޥޱߊ-ߪߴߵߺࠀ-ࠕࠚࠤࠨࡀ-ࡘࢠ-ࢲऄ-हऽॐक़-ॡॱ-ঀঅ-ঌএঐও-নপ-রলশ-হঽৎড়ঢ়য়-ৡৰৱਅ-ਊਏਐਓ-ਨਪ-ਰਲਲ਼ਵਸ਼ਸਹਖ਼-ੜਫ਼ੲ-ੴઅ-ઍએ-ઑઓ-નપ-રલળવ-હઽૐૠૡଅ-ଌଏଐଓ-ନପ-ରଲଳଵ-ହଽଡ଼ଢ଼ୟ-ୡୱஃஅ-ஊஎ-ஐஒ-கஙசஜஞடணதந-பம-ஹௐఅ-ఌఎ-ఐఒ-నప-హఽౘౙౠౡಅ-ಌಎ-ಐಒ-ನಪ-ಳವ-ಹಽೞೠೡೱೲഅ-ഌഎ-ഐഒ-ഺഽൎൠൡൺ-ൿඅ-ඖක-නඳ-රලව-ෆก-ะาำเ-ๆກຂຄງຈຊຍດ-ທນ-ຟມ-ຣລວສຫອ-ະາຳຽເ-ໄໆໜ-ໟༀཀ-ཇཉ-ཬྈ-ྌက-ဪဿၐ-ၕၚ-ၝၡၥၦၮ-ၰၵ-ႁႎႠ-ჅჇჍა-ჺჼ-ቈቊ-ቍቐ-ቖቘቚ-ቝበ-ኈኊ-ኍነ-ኰኲ-ኵኸ-ኾዀዂ-ዅወ-ዖዘ-ጐጒ-ጕጘ-ፚᎀ-ᎏᎠ-Ᏼᐁ-ᙬᙯ-ᙿᚁ-ᚚᚠ-ᛪᛮ-ᛸᜀ-ᜌᜎ-ᜑᜠ-ᜱᝀ-ᝑᝠ-ᝬᝮ-ᝰក-ឳៗៜᠠ-ᡷᢀ-ᢨᢪᢰ-ᣵᤀ-ᤞᥐ-ᥭᥰ-ᥴᦀ-ᦫᧁ-ᧇᨀ-ᨖᨠ-ᩔᪧᬅ-ᬳᭅ-ᭋᮃ-ᮠᮮᮯᮺ-ᯥᰀ-ᰣᱍ-ᱏᱚ-ᱽᳩ-ᳬᳮ-ᳱᳵᳶᴀ-ᶿḀ-ἕἘ-Ἕἠ-ὅὈ-Ὅὐ-ὗὙὛὝὟ-ώᾀ-ᾴᾶ-ᾼιῂ-ῄῆ-ῌῐ-ΐῖ-Ίῠ-Ῥῲ-ῴῶ-ῼⁱⁿₐ-ₜℂℇℊ-ℓℕ℘-ℝℤΩℨK-ℹℼ-ℿⅅ-ⅉⅎⅠ-ↈⰀ-Ⱞⰰ-ⱞⱠ-ⳤⳫ-ⳮⳲⳳⴀ-ⴥⴧⴭⴰ-ⵧⵯⶀ-ⶖⶠ-ⶦⶨ-ⶮⶰ-ⶶⶸ-ⶾⷀ-ⷆⷈ-ⷎⷐ-ⷖⷘ-ⷞ々-〇〡-〩〱-〵〸-〼ぁ-ゖ゛-ゟァ-ヺー-ヿㄅ-ㄭㄱ-ㆎㆠ-ㆺㇰ-ㇿ㐀-䶵一-鿌ꀀ-ꒌꓐ-ꓽꔀ-ꘌꘐ-ꘟꘪꘫꙀ-ꙮꙿ-ꚝꚠ-ꛯꜗ-ꜟꜢ-ꞈꞋ-ꞎꞐ-ꞭꞰꞱꟷ-ꠁꠃ-ꠅꠇ-ꠊꠌ-ꠢꡀ-ꡳꢂ-ꢳꣲ-ꣷꣻꤊ-ꤥꤰ-ꥆꥠ-ꥼꦄ-ꦲꧏꧠ-ꧤꧦ-ꧯꧺ-ꧾꨀ-ꨨꩀ-ꩂꩄ-ꩋꩠ-ꩶꩺꩾ-ꪯꪱꪵꪶꪹ-ꪽꫀꫂꫛ-ꫝꫠ-ꫪꫲ-ꫴꬁ-ꬆꬉ-ꬎꬑ-ꬖꬠ-ꬦꬨ-ꬮꬰ-ꭚꭜ-ꭟꭤꭥꯀ-ꯢ가-힣ힰ-ퟆퟋ-ퟻ豈-舘並-龎ff-stﬓ-ﬗיִײַ-ﬨשׁ-זּטּ-לּמּנּסּףּפּצּ-ﮱﯓ-ﴽﵐ-ﶏﶒ-ﷇﷰ-ﷻﹰ-ﹴﹶ-ﻼA-Za-zヲ-하-ᅦᅧ-ᅬᅭ-ᅲᅳ-ᅵ"; -var nonASCIIidentifierChars = "‌‍·̀-ͯ·҃-֑҇-ׇֽֿׁׂׅׄؐ-ًؚ-٩ٰۖ-ۜ۟-۪ۤۧۨ-ۭ۰-۹ܑܰ-݊ަ-ް߀-߉߫-߳ࠖ-࠙ࠛ-ࠣࠥ-ࠧࠩ-࡙࠭-࡛ࣤ-ःऺ-़ा-ॏ॑-ॗॢॣ०-९ঁ-ঃ়া-ৄেৈো-্ৗৢৣ০-৯ਁ-ਃ਼ਾ-ੂੇੈੋ-੍ੑ੦-ੱੵઁ-ઃ઼ા-ૅે-ૉો-્ૢૣ૦-૯ଁ-ଃ଼ା-ୄେୈୋ-୍ୖୗୢୣ୦-୯ஂா-ூெ-ைொ-்ௗ௦-௯ఀ-ఃా-ౄె-ైొ-్ౕౖౢౣ౦-౯ಁ-ಃ಼ಾ-ೄೆ-ೈೊ-್ೕೖೢೣ೦-೯ഁ-ഃാ-ൄെ-ൈൊ-്ൗൢൣ൦-൯ංඃ්ා-ුූෘ-ෟ෦-෯ෲෳัิ-ฺ็-๎๐-๙ັິ-ູົຼ່-ໍ໐-໙༘༙༠-༩༹༵༷༾༿ཱ-྄྆྇ྍ-ྗྙ-ྼ࿆ါ-ှ၀-၉ၖ-ၙၞ-ၠၢ-ၤၧ-ၭၱ-ၴႂ-ႍႏ-ႝ፝-፟፩-፱ᜒ-᜔ᜲ-᜴ᝒᝓᝲᝳ឴-៓៝០-៩᠋-᠍᠐-᠙ᢩᤠ-ᤫᤰ-᤻᥆-᥏ᦰ-ᧀᧈᧉ᧐-᧚ᨗ-ᨛᩕ-ᩞ᩠-᩿᩼-᪉᪐-᪙᪰-᪽ᬀ-ᬄ᬴-᭄᭐-᭙᭫-᭳ᮀ-ᮂᮡ-ᮭ᮰-᮹᯦-᯳ᰤ-᰷᱀-᱉᱐-᱙᳐-᳔᳒-᳨᳭ᳲ-᳴᳸᳹᷀-᷵᷼-᷿‿⁀⁔⃐-⃥⃜⃡-⃰⳯-⵿⳱ⷠ-〪ⷿ-゙゚〯꘠-꘩꙯ꙴ-꙽ꚟ꛰꛱ꠂ꠆ꠋꠣ-ꠧꢀꢁꢴ-꣄꣐-꣙꣠-꣱꤀-꤉ꤦ-꤭ꥇ-꥓ꦀ-ꦃ꦳-꧀꧐-꧙ꧥ꧰-꧹ꨩ-ꨶꩃꩌꩍ꩐-꩙ꩻ-ꩽꪰꪲ-ꪴꪷꪸꪾ꪿꫁ꫫ-ꫯꫵ꫶ꯣ-ꯪ꯬꯭꯰-꯹ﬞ︀-️︠-︭︳︴﹍-﹏0-9_"; - -var nonASCIIidentifierStart = new RegExp("[" + nonASCIIidentifierStartChars + "]"); -var nonASCIIidentifier = new RegExp("[" + nonASCIIidentifierStartChars + nonASCIIidentifierChars + "]"); - -nonASCIIidentifierStartChars = nonASCIIidentifierChars = null; - -// These are a run-length and offset encoded representation of the -// >0xffff code points that are a valid part of identifiers. The -// offset starts at 0x10000, and each pair of numbers represents an -// offset to the next range, and then a size of the range. They were -// generated by tools/generate-identifier-regex.js -var astralIdentifierStartCodes = [0, 11, 2, 25, 2, 18, 2, 1, 2, 14, 3, 13, 35, 122, 70, 52, 268, 28, 4, 48, 48, 31, 17, 26, 6, 37, 11, 29, 3, 35, 5, 7, 2, 4, 43, 157, 99, 39, 9, 51, 157, 310, 10, 21, 11, 7, 153, 5, 3, 0, 2, 43, 2, 1, 4, 0, 3, 22, 11, 22, 10, 30, 98, 21, 11, 25, 71, 55, 7, 1, 65, 0, 16, 3, 2, 2, 2, 26, 45, 28, 4, 28, 36, 7, 2, 27, 28, 53, 11, 21, 11, 18, 14, 17, 111, 72, 955, 52, 76, 44, 33, 24, 27, 35, 42, 34, 4, 0, 13, 47, 15, 3, 22, 0, 38, 17, 2, 24, 133, 46, 39, 7, 3, 1, 3, 21, 2, 6, 2, 1, 2, 4, 4, 0, 32, 4, 287, 47, 21, 1, 2, 0, 185, 46, 82, 47, 21, 0, 60, 42, 502, 63, 32, 0, 449, 56, 1288, 920, 104, 110, 2962, 1070, 13266, 568, 8, 30, 114, 29, 19, 47, 17, 3, 32, 20, 6, 18, 881, 68, 12, 0, 67, 12, 16481, 1, 3071, 106, 6, 12, 4, 8, 8, 9, 5991, 84, 2, 70, 2, 1, 3, 0, 3, 1, 3, 3, 2, 11, 2, 0, 2, 6, 2, 64, 2, 3, 3, 7, 2, 6, 2, 27, 2, 3, 2, 4, 2, 0, 4, 6, 2, 339, 3, 24, 2, 24, 2, 30, 2, 24, 2, 30, 2, 24, 2, 30, 2, 24, 2, 30, 2, 24, 2, 7, 4149, 196, 1340, 3, 2, 26, 2, 1, 2, 0, 3, 0, 2, 9, 2, 3, 2, 0, 2, 0, 7, 0, 5, 0, 2, 0, 2, 0, 2, 2, 2, 1, 2, 0, 3, 0, 2, 0, 2, 0, 2, 0, 2, 0, 2, 1, 2, 0, 3, 3, 2, 6, 2, 3, 2, 3, 2, 0, 2, 9, 2, 16, 6, 2, 2, 4, 2, 16, 4421, 42710, 42, 4148, 12, 221, 16355, 541]; -var astralIdentifierCodes = [509, 0, 227, 0, 150, 4, 294, 9, 1368, 2, 2, 1, 6, 3, 41, 2, 5, 0, 166, 1, 1306, 2, 54, 14, 32, 9, 16, 3, 46, 10, 54, 9, 7, 2, 37, 13, 2, 9, 52, 0, 13, 2, 49, 13, 16, 9, 83, 11, 168, 11, 6, 9, 8, 2, 57, 0, 2, 6, 3, 1, 3, 2, 10, 0, 11, 1, 3, 6, 4, 4, 316, 19, 13, 9, 214, 6, 3, 8, 112, 16, 16, 9, 82, 12, 9, 9, 535, 9, 20855, 9, 135, 4, 60, 6, 26, 9, 1016, 45, 17, 3, 19723, 1, 5319, 4, 4, 5, 9, 7, 3, 6, 31, 3, 149, 2, 1418, 49, 4305, 6, 792618, 239]; - -// This has a complexity linear to the value of the code. The -// assumption is that looking up astral identifier characters is -// rare. -function isInAstralSet(code, set) { - var pos = 0x10000; - for (var i = 0; i < set.length; i += 2) { - pos += set[i]; - if (pos > code) return false; - pos += set[i + 1]; - if (pos >= code) return true; - } -} - -// Test whether a given character code starts an identifier. - -function isIdentifierStart(code, astral) { - if (code < 65) return code === 36; - if (code < 91) return true; - if (code < 97) return code === 95; - if (code < 123) return true; - if (code <= 0xffff) return code >= 0xaa && nonASCIIidentifierStart.test(String.fromCharCode(code)); - if (astral === false) return false; - return isInAstralSet(code, astralIdentifierStartCodes); -} - -// Test whether a given character is part of an identifier. - -function isIdentifierChar(code, astral) { - if (code < 48) return code === 36; - if (code < 58) return true; - if (code < 65) return false; - if (code < 91) return true; - if (code < 97) return code === 95; - if (code < 123) return true; - if (code <= 0xffff) return code >= 0xaa && nonASCIIidentifier.test(String.fromCharCode(code)); - if (astral === false) return false; - return isInAstralSet(code, astralIdentifierStartCodes) || isInAstralSet(code, astralIdentifierCodes); -} - -},{}],3:[function(_dereq_,module,exports){ -// Acorn is a tiny, fast JavaScript parser written in JavaScript. -// -// Acorn was written by Marijn Haverbeke, Ingvar Stepanyan, and -// various contributors and released under an MIT license. -// -// Git repositories for Acorn are available at -// -// http://marijnhaverbeke.nl/git/acorn -// https://github.com/ternjs/acorn.git -// -// Please use the [github bug tracker][ghbt] to report issues. -// -// [ghbt]: https://github.com/ternjs/acorn/issues -// -// This file defines the main parser interface. The library also comes -// with a [error-tolerant parser][dammit] and an -// [abstract syntax tree walker][walk], defined in other files. -// -// [dammit]: acorn_loose.js -// [walk]: util/walk.js - -"use strict"; - -exports.__esModule = true; -exports.parse = parse; -exports.parseExpressionAt = parseExpressionAt; -exports.tokenizer = tokenizer; - -var _state = _dereq_("./state"); - -_dereq_("./parseutil"); - -_dereq_("./statement"); - -_dereq_("./lval"); - -_dereq_("./expression"); - -_dereq_("./location"); - -exports.Parser = _state.Parser; -exports.plugins = _state.plugins; - -var _options = _dereq_("./options"); - -exports.defaultOptions = _options.defaultOptions; - -var _locutil = _dereq_("./locutil"); - -exports.Position = _locutil.Position; -exports.SourceLocation = _locutil.SourceLocation; -exports.getLineInfo = _locutil.getLineInfo; - -var _node = _dereq_("./node"); - -exports.Node = _node.Node; - -var _tokentype = _dereq_("./tokentype"); - -exports.TokenType = _tokentype.TokenType; -exports.tokTypes = _tokentype.types; - -var _tokencontext = _dereq_("./tokencontext"); - -exports.TokContext = _tokencontext.TokContext; -exports.tokContexts = _tokencontext.types; - -var _identifier = _dereq_("./identifier"); - -exports.isIdentifierChar = _identifier.isIdentifierChar; -exports.isIdentifierStart = _identifier.isIdentifierStart; - -var _tokenize = _dereq_("./tokenize"); - -exports.Token = _tokenize.Token; - -var _whitespace = _dereq_("./whitespace"); - -exports.isNewLine = _whitespace.isNewLine; -exports.lineBreak = _whitespace.lineBreak; -exports.lineBreakG = _whitespace.lineBreakG; -var version = "2.7.0"; - -exports.version = version; -// The main exported interface (under `self.acorn` when in the -// browser) is a `parse` function that takes a code string and -// returns an abstract syntax tree as specified by [Mozilla parser -// API][api]. -// -// [api]: https://developer.mozilla.org/en-US/docs/SpiderMonkey/Parser_API - -function parse(input, options) { - return new _state.Parser(options, input).parse(); -} - -// This function tries to parse a single expression at a given -// offset in a string. Useful for parsing mixed-language formats -// that embed JavaScript expressions. - -function parseExpressionAt(input, pos, options) { - var p = new _state.Parser(options, input, pos); - p.nextToken(); - return p.parseExpression(); -} - -// Acorn is organized as a tokenizer and a recursive-descent parser. -// The `tokenizer` export provides an interface to the tokenizer. - -function tokenizer(input, options) { - return new _state.Parser(options, input); -} - -},{"./expression":1,"./identifier":2,"./location":4,"./locutil":5,"./lval":6,"./node":7,"./options":8,"./parseutil":9,"./state":10,"./statement":11,"./tokencontext":12,"./tokenize":13,"./tokentype":14,"./whitespace":16}],4:[function(_dereq_,module,exports){ -"use strict"; - -var _state = _dereq_("./state"); - -var _locutil = _dereq_("./locutil"); - -var pp = _state.Parser.prototype; - -// This function is used to raise exceptions on parse errors. It -// takes an offset integer (into the current `input`) to indicate -// the location of the error, attaches the position to the end -// of the error message, and then raises a `SyntaxError` with that -// message. - -pp.raise = function (pos, message) { - var loc = _locutil.getLineInfo(this.input, pos); - message += " (" + loc.line + ":" + loc.column + ")"; - var err = new SyntaxError(message); - err.pos = pos;err.loc = loc;err.raisedAt = this.pos; - throw err; -}; - -pp.curPosition = function () { - if (this.options.locations) { - return new _locutil.Position(this.curLine, this.pos - this.lineStart); - } -}; - -},{"./locutil":5,"./state":10}],5:[function(_dereq_,module,exports){ -"use strict"; - -exports.__esModule = true; -exports.getLineInfo = getLineInfo; - -function _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError("Cannot call a class as a function"); } } - -var _whitespace = _dereq_("./whitespace"); - -// These are used when `options.locations` is on, for the -// `startLoc` and `endLoc` properties. - -var Position = (function () { - function Position(line, col) { - _classCallCheck(this, Position); - - this.line = line; - this.column = col; - } - - Position.prototype.offset = function offset(n) { - return new Position(this.line, this.column + n); - }; - - return Position; -})(); - -exports.Position = Position; - -var SourceLocation = function SourceLocation(p, start, end) { - _classCallCheck(this, SourceLocation); - - this.start = start; - this.end = end; - if (p.sourceFile !== null) this.source = p.sourceFile; -} - -// The `getLineInfo` function is mostly useful when the -// `locations` option is off (for performance reasons) and you -// want to find the line/column position for a given character -// offset. `input` should be the code string that the offset refers -// into. - -; - -exports.SourceLocation = SourceLocation; - -function getLineInfo(input, offset) { - for (var line = 1, cur = 0;;) { - _whitespace.lineBreakG.lastIndex = cur; - var match = _whitespace.lineBreakG.exec(input); - if (match && match.index < offset) { - ++line; - cur = match.index + match[0].length; - } else { - return new Position(line, offset - cur); - } - } -} - -},{"./whitespace":16}],6:[function(_dereq_,module,exports){ -"use strict"; - -var _tokentype = _dereq_("./tokentype"); - -var _state = _dereq_("./state"); - -var _util = _dereq_("./util"); - -var pp = _state.Parser.prototype; - -// Convert existing expression atom to assignable pattern -// if possible. - -pp.toAssignable = function (node, isBinding) { - if (this.options.ecmaVersion >= 6 && node) { - switch (node.type) { - case "Identifier": - case "ObjectPattern": - case "ArrayPattern": - break; - - case "ObjectExpression": - node.type = "ObjectPattern"; - for (var i = 0; i < node.properties.length; i++) { - var prop = node.properties[i]; - if (prop.kind !== "init") this.raise(prop.key.start, "Object pattern can't contain getter or setter"); - this.toAssignable(prop.value, isBinding); - } - break; - - case "ArrayExpression": - node.type = "ArrayPattern"; - this.toAssignableList(node.elements, isBinding); - break; - - case "AssignmentExpression": - if (node.operator === "=") { - node.type = "AssignmentPattern"; - delete node.operator; - // falls through to AssignmentPattern - } else { - this.raise(node.left.end, "Only '=' operator can be used for specifying default value."); - break; - } - - case "AssignmentPattern": - if (node.right.type === "YieldExpression") this.raise(node.right.start, "Yield expression cannot be a default value"); - break; - - case "ParenthesizedExpression": - node.expression = this.toAssignable(node.expression, isBinding); - break; - - case "MemberExpression": - if (!isBinding) break; - - default: - this.raise(node.start, "Assigning to rvalue"); - } - } - return node; -}; - -// Convert list of expression atoms to binding list. - -pp.toAssignableList = function (exprList, isBinding) { - var end = exprList.length; - if (end) { - var last = exprList[end - 1]; - if (last && last.type == "RestElement") { - --end; - } else if (last && last.type == "SpreadElement") { - last.type = "RestElement"; - var arg = last.argument; - this.toAssignable(arg, isBinding); - if (arg.type !== "Identifier" && arg.type !== "MemberExpression" && arg.type !== "ArrayPattern") this.unexpected(arg.start); - --end; - } - - if (isBinding && last.type === "RestElement" && last.argument.type !== "Identifier") this.unexpected(last.argument.start); - } - for (var i = 0; i < end; i++) { - var elt = exprList[i]; - if (elt) this.toAssignable(elt, isBinding); - } - return exprList; -}; - -// Parses spread element. - -pp.parseSpread = function (refDestructuringErrors) { - var node = this.startNode(); - this.next(); - node.argument = this.parseMaybeAssign(refDestructuringErrors); - return this.finishNode(node, "SpreadElement"); -}; - -pp.parseRest = function (allowNonIdent) { - var node = this.startNode(); - this.next(); - - // RestElement inside of a function parameter must be an identifier - if (allowNonIdent) node.argument = this.type === _tokentype.types.name ? this.parseIdent() : this.unexpected();else node.argument = this.type === _tokentype.types.name || this.type === _tokentype.types.bracketL ? this.parseBindingAtom() : this.unexpected(); - - return this.finishNode(node, "RestElement"); -}; - -// Parses lvalue (assignable) atom. - -pp.parseBindingAtom = function () { - if (this.options.ecmaVersion < 6) return this.parseIdent(); - switch (this.type) { - case _tokentype.types.name: - return this.parseIdent(); - - case _tokentype.types.bracketL: - var node = this.startNode(); - this.next(); - node.elements = this.parseBindingList(_tokentype.types.bracketR, true, true); - return this.finishNode(node, "ArrayPattern"); - - case _tokentype.types.braceL: - return this.parseObj(true); - - default: - this.unexpected(); - } -}; - -pp.parseBindingList = function (close, allowEmpty, allowTrailingComma, allowNonIdent) { - var elts = [], - first = true; - while (!this.eat(close)) { - if (first) first = false;else this.expect(_tokentype.types.comma); - if (allowEmpty && this.type === _tokentype.types.comma) { - elts.push(null); - } else if (allowTrailingComma && this.afterTrailingComma(close)) { - break; - } else if (this.type === _tokentype.types.ellipsis) { - var rest = this.parseRest(allowNonIdent); - this.parseBindingListItem(rest); - elts.push(rest); - this.expect(close); - break; - } else { - var elem = this.parseMaybeDefault(this.start, this.startLoc); - this.parseBindingListItem(elem); - elts.push(elem); - } - } - return elts; -}; - -pp.parseBindingListItem = function (param) { - return param; -}; - -// Parses assignment pattern around given atom if possible. - -pp.parseMaybeDefault = function (startPos, startLoc, left) { - left = left || this.parseBindingAtom(); - if (this.options.ecmaVersion < 6 || !this.eat(_tokentype.types.eq)) return left; - var node = this.startNodeAt(startPos, startLoc); - node.left = left; - node.right = this.parseMaybeAssign(); - return this.finishNode(node, "AssignmentPattern"); -}; - -// Verify that a node is an lval — something that can be assigned -// to. - -pp.checkLVal = function (expr, isBinding, checkClashes) { - switch (expr.type) { - case "Identifier": - if (this.strict && this.reservedWordsStrictBind.test(expr.name)) this.raise(expr.start, (isBinding ? "Binding " : "Assigning to ") + expr.name + " in strict mode"); - if (checkClashes) { - if (_util.has(checkClashes, expr.name)) this.raise(expr.start, "Argument name clash"); - checkClashes[expr.name] = true; - } - break; - - case "MemberExpression": - if (isBinding) this.raise(expr.start, (isBinding ? "Binding" : "Assigning to") + " member expression"); - break; - - case "ObjectPattern": - for (var i = 0; i < expr.properties.length; i++) { - this.checkLVal(expr.properties[i].value, isBinding, checkClashes); - }break; - - case "ArrayPattern": - for (var i = 0; i < expr.elements.length; i++) { - var elem = expr.elements[i]; - if (elem) this.checkLVal(elem, isBinding, checkClashes); - } - break; - - case "AssignmentPattern": - this.checkLVal(expr.left, isBinding, checkClashes); - break; - - case "RestElement": - this.checkLVal(expr.argument, isBinding, checkClashes); - break; - - case "ParenthesizedExpression": - this.checkLVal(expr.expression, isBinding, checkClashes); - break; - - default: - this.raise(expr.start, (isBinding ? "Binding" : "Assigning to") + " rvalue"); - } -}; - -},{"./state":10,"./tokentype":14,"./util":15}],7:[function(_dereq_,module,exports){ -"use strict"; - -exports.__esModule = true; - -function _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError("Cannot call a class as a function"); } } - -var _state = _dereq_("./state"); - -var _locutil = _dereq_("./locutil"); - -var Node = function Node(parser, pos, loc) { - _classCallCheck(this, Node); - - this.type = ""; - this.start = pos; - this.end = 0; - if (parser.options.locations) this.loc = new _locutil.SourceLocation(parser, loc); - if (parser.options.directSourceFile) this.sourceFile = parser.options.directSourceFile; - if (parser.options.ranges) this.range = [pos, 0]; -} - -// Start an AST node, attaching a start offset. - -; - -exports.Node = Node; -var pp = _state.Parser.prototype; - -pp.startNode = function () { - return new Node(this, this.start, this.startLoc); -}; - -pp.startNodeAt = function (pos, loc) { - return new Node(this, pos, loc); -}; - -// Finish an AST node, adding `type` and `end` properties. - -function finishNodeAt(node, type, pos, loc) { - node.type = type; - node.end = pos; - if (this.options.locations) node.loc.end = loc; - if (this.options.ranges) node.range[1] = pos; - return node; -} - -pp.finishNode = function (node, type) { - return finishNodeAt.call(this, node, type, this.lastTokEnd, this.lastTokEndLoc); -}; - -// Finish node at given position - -pp.finishNodeAt = function (node, type, pos, loc) { - return finishNodeAt.call(this, node, type, pos, loc); -}; - -},{"./locutil":5,"./state":10}],8:[function(_dereq_,module,exports){ -"use strict"; - -exports.__esModule = true; -exports.getOptions = getOptions; - -var _util = _dereq_("./util"); - -var _locutil = _dereq_("./locutil"); - -// A second optional argument can be given to further configure -// the parser process. These options are recognized: - -var defaultOptions = { - // `ecmaVersion` indicates the ECMAScript version to parse. Must - // be either 3, or 5, or 6. This influences support for strict - // mode, the set of reserved words, support for getters and - // setters and other features. - ecmaVersion: 5, - // Source type ("script" or "module") for different semantics - sourceType: "script", - // `onInsertedSemicolon` can be a callback that will be called - // when a semicolon is automatically inserted. It will be passed - // th position of the comma as an offset, and if `locations` is - // enabled, it is given the location as a `{line, column}` object - // as second argument. - onInsertedSemicolon: null, - // `onTrailingComma` is similar to `onInsertedSemicolon`, but for - // trailing commas. - onTrailingComma: null, - // By default, reserved words are only enforced if ecmaVersion >= 5. - // Set `allowReserved` to a boolean value to explicitly turn this on - // an off. When this option has the value "never", reserved words - // and keywords can also not be used as property names. - allowReserved: null, - // When enabled, a return at the top level is not considered an - // error. - allowReturnOutsideFunction: false, - // When enabled, import/export statements are not constrained to - // appearing at the top of the program. - allowImportExportEverywhere: false, - // When enabled, hashbang directive in the beginning of file - // is allowed and treated as a line comment. - allowHashBang: false, - // When `locations` is on, `loc` properties holding objects with - // `start` and `end` properties in `{line, column}` form (with - // line being 1-based and column 0-based) will be attached to the - // nodes. - locations: false, - // A function can be passed as `onToken` option, which will - // cause Acorn to call that function with object in the same - // format as tokens returned from `tokenizer().getToken()`. Note - // that you are not allowed to call the parser from the - // callback—that will corrupt its internal state. - onToken: null, - // A function can be passed as `onComment` option, which will - // cause Acorn to call that function with `(block, text, start, - // end)` parameters whenever a comment is skipped. `block` is a - // boolean indicating whether this is a block (`/* */`) comment, - // `text` is the content of the comment, and `start` and `end` are - // character offsets that denote the start and end of the comment. - // When the `locations` option is on, two more parameters are - // passed, the full `{line, column}` locations of the start and - // end of the comments. Note that you are not allowed to call the - // parser from the callback—that will corrupt its internal state. - onComment: null, - // Nodes have their start and end characters offsets recorded in - // `start` and `end` properties (directly on the node, rather than - // the `loc` object, which holds line/column data. To also add a - // [semi-standardized][range] `range` property holding a `[start, - // end]` array with the same numbers, set the `ranges` option to - // `true`. - // - // [range]: https://bugzilla.mozilla.org/show_bug.cgi?id=745678 - ranges: false, - // It is possible to parse multiple files into a single AST by - // passing the tree produced by parsing the first file as - // `program` option in subsequent parses. This will add the - // toplevel forms of the parsed file to the `Program` (top) node - // of an existing parse tree. - program: null, - // When `locations` is on, you can pass this to record the source - // file in every node's `loc` object. - sourceFile: null, - // This value, if given, is stored in every node, whether - // `locations` is on or off. - directSourceFile: null, - // When enabled, parenthesized expressions are represented by - // (non-standard) ParenthesizedExpression nodes - preserveParens: false, - plugins: {} -}; - -exports.defaultOptions = defaultOptions; -// Interpret and default an options object - -function getOptions(opts) { - var options = {}; - for (var opt in defaultOptions) { - options[opt] = opts && _util.has(opts, opt) ? opts[opt] : defaultOptions[opt]; - }if (options.allowReserved == null) options.allowReserved = options.ecmaVersion < 5; - - if (_util.isArray(options.onToken)) { - (function () { - var tokens = options.onToken; - options.onToken = function (token) { - return tokens.push(token); - }; - })(); - } - if (_util.isArray(options.onComment)) options.onComment = pushComment(options, options.onComment); - - return options; -} - -function pushComment(options, array) { - return function (block, text, start, end, startLoc, endLoc) { - var comment = { - type: block ? 'Block' : 'Line', - value: text, - start: start, - end: end - }; - if (options.locations) comment.loc = new _locutil.SourceLocation(this, startLoc, endLoc); - if (options.ranges) comment.range = [start, end]; - array.push(comment); - }; -} - -},{"./locutil":5,"./util":15}],9:[function(_dereq_,module,exports){ -"use strict"; - -var _tokentype = _dereq_("./tokentype"); - -var _state = _dereq_("./state"); - -var _whitespace = _dereq_("./whitespace"); - -var pp = _state.Parser.prototype; - -// ## Parser utilities - -// Test whether a statement node is the string literal `"use strict"`. - -pp.isUseStrict = function (stmt) { - return this.options.ecmaVersion >= 5 && stmt.type === "ExpressionStatement" && stmt.expression.type === "Literal" && stmt.expression.raw.slice(1, -1) === "use strict"; -}; - -// Predicate that tests whether the next token is of the given -// type, and if yes, consumes it as a side effect. - -pp.eat = function (type) { - if (this.type === type) { - this.next(); - return true; - } else { - return false; - } -}; - -// Tests whether parsed token is a contextual keyword. - -pp.isContextual = function (name) { - return this.type === _tokentype.types.name && this.value === name; -}; - -// Consumes contextual keyword if possible. - -pp.eatContextual = function (name) { - return this.value === name && this.eat(_tokentype.types.name); -}; - -// Asserts that following token is given contextual keyword. - -pp.expectContextual = function (name) { - if (!this.eatContextual(name)) this.unexpected(); -}; - -// Test whether a semicolon can be inserted at the current position. - -pp.canInsertSemicolon = function () { - return this.type === _tokentype.types.eof || this.type === _tokentype.types.braceR || _whitespace.lineBreak.test(this.input.slice(this.lastTokEnd, this.start)); -}; - -pp.insertSemicolon = function () { - if (this.canInsertSemicolon()) { - if (this.options.onInsertedSemicolon) this.options.onInsertedSemicolon(this.lastTokEnd, this.lastTokEndLoc); - return true; - } -}; - -// Consume a semicolon, or, failing that, see if we are allowed to -// pretend that there is a semicolon at this position. - -pp.semicolon = function () { - if (!this.eat(_tokentype.types.semi) && !this.insertSemicolon()) this.unexpected(); -}; - -pp.afterTrailingComma = function (tokType) { - if (this.type == tokType) { - if (this.options.onTrailingComma) this.options.onTrailingComma(this.lastTokStart, this.lastTokStartLoc); - this.next(); - return true; - } -}; - -// Expect a token of a given type. If found, consume it, otherwise, -// raise an unexpected token error. - -pp.expect = function (type) { - this.eat(type) || this.unexpected(); -}; - -// Raise an unexpected token error. - -pp.unexpected = function (pos) { - this.raise(pos != null ? pos : this.start, "Unexpected token"); -}; - -pp.checkPatternErrors = function (refDestructuringErrors, andThrow) { - var pos = refDestructuringErrors && refDestructuringErrors.trailingComma; - if (!andThrow) return !!pos; - if (pos) this.raise(pos, "Trailing comma is not permitted in destructuring patterns"); -}; - -pp.checkExpressionErrors = function (refDestructuringErrors, andThrow) { - var pos = refDestructuringErrors && refDestructuringErrors.shorthandAssign; - if (!andThrow) return !!pos; - if (pos) this.raise(pos, "Shorthand property assignments are valid only in destructuring patterns"); -}; - -},{"./state":10,"./tokentype":14,"./whitespace":16}],10:[function(_dereq_,module,exports){ -"use strict"; - -exports.__esModule = true; - -function _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError("Cannot call a class as a function"); } } - -var _identifier = _dereq_("./identifier"); - -var _tokentype = _dereq_("./tokentype"); - -var _whitespace = _dereq_("./whitespace"); - -var _options = _dereq_("./options"); - -// Registered plugins -var plugins = {}; - -exports.plugins = plugins; -function keywordRegexp(words) { - return new RegExp("^(" + words.replace(/ /g, "|") + ")$"); -} - -var Parser = (function () { - function Parser(options, input, startPos) { - _classCallCheck(this, Parser); - - this.options = options = _options.getOptions(options); - this.sourceFile = options.sourceFile; - this.keywords = keywordRegexp(_identifier.keywords[options.ecmaVersion >= 6 ? 6 : 5]); - var reserved = options.allowReserved ? "" : _identifier.reservedWords[options.ecmaVersion] + (options.sourceType == "module" ? " await" : ""); - this.reservedWords = keywordRegexp(reserved); - var reservedStrict = (reserved ? reserved + " " : "") + _identifier.reservedWords.strict; - this.reservedWordsStrict = keywordRegexp(reservedStrict); - this.reservedWordsStrictBind = keywordRegexp(reservedStrict + " " + _identifier.reservedWords.strictBind); - this.input = String(input); - - // Used to signal to callers of `readWord1` whether the word - // contained any escape sequences. This is needed because words with - // escape sequences must not be interpreted as keywords. - this.containsEsc = false; - - // Load plugins - this.loadPlugins(options.plugins); - - // Set up token state - - // The current position of the tokenizer in the input. - if (startPos) { - this.pos = startPos; - this.lineStart = Math.max(0, this.input.lastIndexOf("\n", startPos)); - this.curLine = this.input.slice(0, this.lineStart).split(_whitespace.lineBreak).length; - } else { - this.pos = this.lineStart = 0; - this.curLine = 1; - } - - // Properties of the current token: - // Its type - this.type = _tokentype.types.eof; - // For tokens that include more information than their type, the value - this.value = null; - // Its start and end offset - this.start = this.end = this.pos; - // And, if locations are used, the {line, column} object - // corresponding to those offsets - this.startLoc = this.endLoc = this.curPosition(); - - // Position information for the previous token - this.lastTokEndLoc = this.lastTokStartLoc = null; - this.lastTokStart = this.lastTokEnd = this.pos; - - // The context stack is used to superficially track syntactic - // context to predict whether a regular expression is allowed in a - // given position. - this.context = this.initialContext(); - this.exprAllowed = true; - - // Figure out if it's a module code. - this.strict = this.inModule = options.sourceType === "module"; - - // Used to signify the start of a potential arrow function - this.potentialArrowAt = -1; - - // Flags to track whether we are in a function, a generator. - this.inFunction = this.inGenerator = false; - // Labels in scope. - this.labels = []; - - // If enabled, skip leading hashbang line. - if (this.pos === 0 && options.allowHashBang && this.input.slice(0, 2) === '#!') this.skipLineComment(2); - } - - // DEPRECATED Kept for backwards compatibility until 3.0 in case a plugin uses them - - Parser.prototype.isKeyword = function isKeyword(word) { - return this.keywords.test(word); - }; - - Parser.prototype.isReservedWord = function isReservedWord(word) { - return this.reservedWords.test(word); - }; - - Parser.prototype.extend = function extend(name, f) { - this[name] = f(this[name]); - }; - - Parser.prototype.loadPlugins = function loadPlugins(pluginConfigs) { - for (var _name in pluginConfigs) { - var plugin = plugins[_name]; - if (!plugin) throw new Error("Plugin '" + _name + "' not found"); - plugin(this, pluginConfigs[_name]); - } - }; - - Parser.prototype.parse = function parse() { - var node = this.options.program || this.startNode(); - this.nextToken(); - return this.parseTopLevel(node); - }; - - return Parser; -})(); - -exports.Parser = Parser; - -},{"./identifier":2,"./options":8,"./tokentype":14,"./whitespace":16}],11:[function(_dereq_,module,exports){ -"use strict"; - -var _tokentype = _dereq_("./tokentype"); - -var _state = _dereq_("./state"); - -var _whitespace = _dereq_("./whitespace"); - -var pp = _state.Parser.prototype; - -// ### Statement parsing - -// Parse a program. Initializes the parser, reads any number of -// statements, and wraps them in a Program node. Optionally takes a -// `program` argument. If present, the statements will be appended -// to its body instead of creating a new node. - -pp.parseTopLevel = function (node) { - var first = true; - if (!node.body) node.body = []; - while (this.type !== _tokentype.types.eof) { - var stmt = this.parseStatement(true, true); - node.body.push(stmt); - if (first) { - if (this.isUseStrict(stmt)) this.setStrict(true); - first = false; - } - } - this.next(); - if (this.options.ecmaVersion >= 6) { - node.sourceType = this.options.sourceType; - } - return this.finishNode(node, "Program"); -}; - -var loopLabel = { kind: "loop" }, - switchLabel = { kind: "switch" }; - -// Parse a single statement. -// -// If expecting a statement and finding a slash operator, parse a -// regular expression literal. This is to handle cases like -// `if (foo) /blah/.exec(foo)`, where looking at the previous token -// does not help. - -pp.parseStatement = function (declaration, topLevel) { - var starttype = this.type, - node = this.startNode(); - - // Most types of statements are recognized by the keyword they - // start with. Many are trivial to parse, some require a bit of - // complexity. - - switch (starttype) { - case _tokentype.types._break:case _tokentype.types._continue: - return this.parseBreakContinueStatement(node, starttype.keyword); - case _tokentype.types._debugger: - return this.parseDebuggerStatement(node); - case _tokentype.types._do: - return this.parseDoStatement(node); - case _tokentype.types._for: - return this.parseForStatement(node); - case _tokentype.types._function: - if (!declaration && this.options.ecmaVersion >= 6) this.unexpected(); - return this.parseFunctionStatement(node); - case _tokentype.types._class: - if (!declaration) this.unexpected(); - return this.parseClass(node, true); - case _tokentype.types._if: - return this.parseIfStatement(node); - case _tokentype.types._return: - return this.parseReturnStatement(node); - case _tokentype.types._switch: - return this.parseSwitchStatement(node); - case _tokentype.types._throw: - return this.parseThrowStatement(node); - case _tokentype.types._try: - return this.parseTryStatement(node); - case _tokentype.types._let:case _tokentype.types._const: - if (!declaration) this.unexpected(); // NOTE: falls through to _var - case _tokentype.types._var: - return this.parseVarStatement(node, starttype); - case _tokentype.types._while: - return this.parseWhileStatement(node); - case _tokentype.types._with: - return this.parseWithStatement(node); - case _tokentype.types.braceL: - return this.parseBlock(); - case _tokentype.types.semi: - return this.parseEmptyStatement(node); - case _tokentype.types._export: - case _tokentype.types._import: - if (!this.options.allowImportExportEverywhere) { - if (!topLevel) this.raise(this.start, "'import' and 'export' may only appear at the top level"); - if (!this.inModule) this.raise(this.start, "'import' and 'export' may appear only with 'sourceType: module'"); - } - return starttype === _tokentype.types._import ? this.parseImport(node) : this.parseExport(node); - - // If the statement does not start with a statement keyword or a - // brace, it's an ExpressionStatement or LabeledStatement. We - // simply start parsing an expression, and afterwards, if the - // next token is a colon and the expression was a simple - // Identifier node, we switch to interpreting it as a label. - default: - var maybeName = this.value, - expr = this.parseExpression(); - if (starttype === _tokentype.types.name && expr.type === "Identifier" && this.eat(_tokentype.types.colon)) return this.parseLabeledStatement(node, maybeName, expr);else return this.parseExpressionStatement(node, expr); - } -}; - -pp.parseBreakContinueStatement = function (node, keyword) { - var isBreak = keyword == "break"; - this.next(); - if (this.eat(_tokentype.types.semi) || this.insertSemicolon()) node.label = null;else if (this.type !== _tokentype.types.name) this.unexpected();else { - node.label = this.parseIdent(); - this.semicolon(); - } - - // Verify that there is an actual destination to break or - // continue to. - for (var i = 0; i < this.labels.length; ++i) { - var lab = this.labels[i]; - if (node.label == null || lab.name === node.label.name) { - if (lab.kind != null && (isBreak || lab.kind === "loop")) break; - if (node.label && isBreak) break; - } - } - if (i === this.labels.length) this.raise(node.start, "Unsyntactic " + keyword); - return this.finishNode(node, isBreak ? "BreakStatement" : "ContinueStatement"); -}; - -pp.parseDebuggerStatement = function (node) { - this.next(); - this.semicolon(); - return this.finishNode(node, "DebuggerStatement"); -}; - -pp.parseDoStatement = function (node) { - this.next(); - this.labels.push(loopLabel); - node.body = this.parseStatement(false); - this.labels.pop(); - this.expect(_tokentype.types._while); - node.test = this.parseParenExpression(); - if (this.options.ecmaVersion >= 6) this.eat(_tokentype.types.semi);else this.semicolon(); - return this.finishNode(node, "DoWhileStatement"); -}; - -// Disambiguating between a `for` and a `for`/`in` or `for`/`of` -// loop is non-trivial. Basically, we have to parse the init `var` -// statement or expression, disallowing the `in` operator (see -// the second parameter to `parseExpression`), and then check -// whether the next token is `in` or `of`. When there is no init -// part (semicolon immediately after the opening parenthesis), it -// is a regular `for` loop. - -pp.parseForStatement = function (node) { - this.next(); - this.labels.push(loopLabel); - this.expect(_tokentype.types.parenL); - if (this.type === _tokentype.types.semi) return this.parseFor(node, null); - if (this.type === _tokentype.types._var || this.type === _tokentype.types._let || this.type === _tokentype.types._const) { - var _init = this.startNode(), - varKind = this.type; - this.next(); - this.parseVar(_init, true, varKind); - this.finishNode(_init, "VariableDeclaration"); - if ((this.type === _tokentype.types._in || this.options.ecmaVersion >= 6 && this.isContextual("of")) && _init.declarations.length === 1 && !(varKind !== _tokentype.types._var && _init.declarations[0].init)) return this.parseForIn(node, _init); - return this.parseFor(node, _init); - } - var refDestructuringErrors = { shorthandAssign: 0, trailingComma: 0 }; - var init = this.parseExpression(true, refDestructuringErrors); - if (this.type === _tokentype.types._in || this.options.ecmaVersion >= 6 && this.isContextual("of")) { - this.checkPatternErrors(refDestructuringErrors, true); - this.toAssignable(init); - this.checkLVal(init); - return this.parseForIn(node, init); - } else { - this.checkExpressionErrors(refDestructuringErrors, true); - } - return this.parseFor(node, init); -}; - -pp.parseFunctionStatement = function (node) { - this.next(); - return this.parseFunction(node, true); -}; - -pp.parseIfStatement = function (node) { - this.next(); - node.test = this.parseParenExpression(); - node.consequent = this.parseStatement(false); - node.alternate = this.eat(_tokentype.types._else) ? this.parseStatement(false) : null; - return this.finishNode(node, "IfStatement"); -}; - -pp.parseReturnStatement = function (node) { - if (!this.inFunction && !this.options.allowReturnOutsideFunction) this.raise(this.start, "'return' outside of function"); - this.next(); - - // In `return` (and `break`/`continue`), the keywords with - // optional arguments, we eagerly look for a semicolon or the - // possibility to insert one. - - if (this.eat(_tokentype.types.semi) || this.insertSemicolon()) node.argument = null;else { - node.argument = this.parseExpression();this.semicolon(); - } - return this.finishNode(node, "ReturnStatement"); -}; - -pp.parseSwitchStatement = function (node) { - this.next(); - node.discriminant = this.parseParenExpression(); - node.cases = []; - this.expect(_tokentype.types.braceL); - this.labels.push(switchLabel); - - // Statements under must be grouped (by label) in SwitchCase - // nodes. `cur` is used to keep the node that we are currently - // adding statements to. - - for (var cur, sawDefault = false; this.type != _tokentype.types.braceR;) { - if (this.type === _tokentype.types._case || this.type === _tokentype.types._default) { - var isCase = this.type === _tokentype.types._case; - if (cur) this.finishNode(cur, "SwitchCase"); - node.cases.push(cur = this.startNode()); - cur.consequent = []; - this.next(); - if (isCase) { - cur.test = this.parseExpression(); - } else { - if (sawDefault) this.raise(this.lastTokStart, "Multiple default clauses"); - sawDefault = true; - cur.test = null; - } - this.expect(_tokentype.types.colon); - } else { - if (!cur) this.unexpected(); - cur.consequent.push(this.parseStatement(true)); - } - } - if (cur) this.finishNode(cur, "SwitchCase"); - this.next(); // Closing brace - this.labels.pop(); - return this.finishNode(node, "SwitchStatement"); -}; - -pp.parseThrowStatement = function (node) { - this.next(); - if (_whitespace.lineBreak.test(this.input.slice(this.lastTokEnd, this.start))) this.raise(this.lastTokEnd, "Illegal newline after throw"); - node.argument = this.parseExpression(); - this.semicolon(); - return this.finishNode(node, "ThrowStatement"); -}; - -// Reused empty array added for node fields that are always empty. - -var empty = []; - -pp.parseTryStatement = function (node) { - this.next(); - node.block = this.parseBlock(); - node.handler = null; - if (this.type === _tokentype.types._catch) { - var clause = this.startNode(); - this.next(); - this.expect(_tokentype.types.parenL); - clause.param = this.parseBindingAtom(); - this.checkLVal(clause.param, true); - this.expect(_tokentype.types.parenR); - clause.body = this.parseBlock(); - node.handler = this.finishNode(clause, "CatchClause"); - } - node.finalizer = this.eat(_tokentype.types._finally) ? this.parseBlock() : null; - if (!node.handler && !node.finalizer) this.raise(node.start, "Missing catch or finally clause"); - return this.finishNode(node, "TryStatement"); -}; - -pp.parseVarStatement = function (node, kind) { - this.next(); - this.parseVar(node, false, kind); - this.semicolon(); - return this.finishNode(node, "VariableDeclaration"); -}; - -pp.parseWhileStatement = function (node) { - this.next(); - node.test = this.parseParenExpression(); - this.labels.push(loopLabel); - node.body = this.parseStatement(false); - this.labels.pop(); - return this.finishNode(node, "WhileStatement"); -}; - -pp.parseWithStatement = function (node) { - if (this.strict) this.raise(this.start, "'with' in strict mode"); - this.next(); - node.object = this.parseParenExpression(); - node.body = this.parseStatement(false); - return this.finishNode(node, "WithStatement"); -}; - -pp.parseEmptyStatement = function (node) { - this.next(); - return this.finishNode(node, "EmptyStatement"); -}; - -pp.parseLabeledStatement = function (node, maybeName, expr) { - for (var i = 0; i < this.labels.length; ++i) { - if (this.labels[i].name === maybeName) this.raise(expr.start, "Label '" + maybeName + "' is already declared"); - }var kind = this.type.isLoop ? "loop" : this.type === _tokentype.types._switch ? "switch" : null; - for (var i = this.labels.length - 1; i >= 0; i--) { - var label = this.labels[i]; - if (label.statementStart == node.start) { - label.statementStart = this.start; - label.kind = kind; - } else break; - } - this.labels.push({ name: maybeName, kind: kind, statementStart: this.start }); - node.body = this.parseStatement(true); - this.labels.pop(); - node.label = expr; - return this.finishNode(node, "LabeledStatement"); -}; - -pp.parseExpressionStatement = function (node, expr) { - node.expression = expr; - this.semicolon(); - return this.finishNode(node, "ExpressionStatement"); -}; - -// Parse a semicolon-enclosed block of statements, handling `"use -// strict"` declarations when `allowStrict` is true (used for -// function bodies). - -pp.parseBlock = function (allowStrict) { - var node = this.startNode(), - first = true, - oldStrict = undefined; - node.body = []; - this.expect(_tokentype.types.braceL); - while (!this.eat(_tokentype.types.braceR)) { - var stmt = this.parseStatement(true); - node.body.push(stmt); - if (first && allowStrict && this.isUseStrict(stmt)) { - oldStrict = this.strict; - this.setStrict(this.strict = true); - } - first = false; - } - if (oldStrict === false) this.setStrict(false); - return this.finishNode(node, "BlockStatement"); -}; - -// Parse a regular `for` loop. The disambiguation code in -// `parseStatement` will already have parsed the init statement or -// expression. - -pp.parseFor = function (node, init) { - node.init = init; - this.expect(_tokentype.types.semi); - node.test = this.type === _tokentype.types.semi ? null : this.parseExpression(); - this.expect(_tokentype.types.semi); - node.update = this.type === _tokentype.types.parenR ? null : this.parseExpression(); - this.expect(_tokentype.types.parenR); - node.body = this.parseStatement(false); - this.labels.pop(); - return this.finishNode(node, "ForStatement"); -}; - -// Parse a `for`/`in` and `for`/`of` loop, which are almost -// same from parser's perspective. - -pp.parseForIn = function (node, init) { - var type = this.type === _tokentype.types._in ? "ForInStatement" : "ForOfStatement"; - this.next(); - node.left = init; - node.right = this.parseExpression(); - this.expect(_tokentype.types.parenR); - node.body = this.parseStatement(false); - this.labels.pop(); - return this.finishNode(node, type); -}; - -// Parse a list of variable declarations. - -pp.parseVar = function (node, isFor, kind) { - node.declarations = []; - node.kind = kind.keyword; - for (;;) { - var decl = this.startNode(); - this.parseVarId(decl); - if (this.eat(_tokentype.types.eq)) { - decl.init = this.parseMaybeAssign(isFor); - } else if (kind === _tokentype.types._const && !(this.type === _tokentype.types._in || this.options.ecmaVersion >= 6 && this.isContextual("of"))) { - this.unexpected(); - } else if (decl.id.type != "Identifier" && !(isFor && (this.type === _tokentype.types._in || this.isContextual("of")))) { - this.raise(this.lastTokEnd, "Complex binding patterns require an initialization value"); - } else { - decl.init = null; - } - node.declarations.push(this.finishNode(decl, "VariableDeclarator")); - if (!this.eat(_tokentype.types.comma)) break; - } - return node; -}; - -pp.parseVarId = function (decl) { - decl.id = this.parseBindingAtom(); - this.checkLVal(decl.id, true); -}; - -// Parse a function declaration or literal (depending on the -// `isStatement` parameter). - -pp.parseFunction = function (node, isStatement, allowExpressionBody) { - this.initFunction(node); - if (this.options.ecmaVersion >= 6) node.generator = this.eat(_tokentype.types.star); - if (isStatement || this.type === _tokentype.types.name) node.id = this.parseIdent(); - this.parseFunctionParams(node); - this.parseFunctionBody(node, allowExpressionBody); - return this.finishNode(node, isStatement ? "FunctionDeclaration" : "FunctionExpression"); -}; - -pp.parseFunctionParams = function (node) { - this.expect(_tokentype.types.parenL); - node.params = this.parseBindingList(_tokentype.types.parenR, false, false, true); -}; - -// Parse a class declaration or literal (depending on the -// `isStatement` parameter). - -pp.parseClass = function (node, isStatement) { - this.next(); - this.parseClassId(node, isStatement); - this.parseClassSuper(node); - var classBody = this.startNode(); - var hadConstructor = false; - classBody.body = []; - this.expect(_tokentype.types.braceL); - while (!this.eat(_tokentype.types.braceR)) { - if (this.eat(_tokentype.types.semi)) continue; - var method = this.startNode(); - var isGenerator = this.eat(_tokentype.types.star); - var isMaybeStatic = this.type === _tokentype.types.name && this.value === "static"; - this.parsePropertyName(method); - method["static"] = isMaybeStatic && this.type !== _tokentype.types.parenL; - if (method["static"]) { - if (isGenerator) this.unexpected(); - isGenerator = this.eat(_tokentype.types.star); - this.parsePropertyName(method); - } - method.kind = "method"; - var isGetSet = false; - if (!method.computed) { - var key = method.key; - - if (!isGenerator && key.type === "Identifier" && this.type !== _tokentype.types.parenL && (key.name === "get" || key.name === "set")) { - isGetSet = true; - method.kind = key.name; - key = this.parsePropertyName(method); - } - if (!method["static"] && (key.type === "Identifier" && key.name === "constructor" || key.type === "Literal" && key.value === "constructor")) { - if (hadConstructor) this.raise(key.start, "Duplicate constructor in the same class"); - if (isGetSet) this.raise(key.start, "Constructor can't have get/set modifier"); - if (isGenerator) this.raise(key.start, "Constructor can't be a generator"); - method.kind = "constructor"; - hadConstructor = true; - } - } - this.parseClassMethod(classBody, method, isGenerator); - if (isGetSet) { - var paramCount = method.kind === "get" ? 0 : 1; - if (method.value.params.length !== paramCount) { - var start = method.value.start; - if (method.kind === "get") this.raise(start, "getter should have no params");else this.raise(start, "setter should have exactly one param"); - } - if (method.kind === "set" && method.value.params[0].type === "RestElement") this.raise(method.value.params[0].start, "Setter cannot use rest params"); - } - } - node.body = this.finishNode(classBody, "ClassBody"); - return this.finishNode(node, isStatement ? "ClassDeclaration" : "ClassExpression"); -}; - -pp.parseClassMethod = function (classBody, method, isGenerator) { - method.value = this.parseMethod(isGenerator); - classBody.body.push(this.finishNode(method, "MethodDefinition")); -}; - -pp.parseClassId = function (node, isStatement) { - node.id = this.type === _tokentype.types.name ? this.parseIdent() : isStatement ? this.unexpected() : null; -}; - -pp.parseClassSuper = function (node) { - node.superClass = this.eat(_tokentype.types._extends) ? this.parseExprSubscripts() : null; -}; - -// Parses module export declaration. - -pp.parseExport = function (node) { - this.next(); - // export * from '...' - if (this.eat(_tokentype.types.star)) { - this.expectContextual("from"); - node.source = this.type === _tokentype.types.string ? this.parseExprAtom() : this.unexpected(); - this.semicolon(); - return this.finishNode(node, "ExportAllDeclaration"); - } - if (this.eat(_tokentype.types._default)) { - // export default ... - var expr = this.parseMaybeAssign(); - var needsSemi = true; - if (expr.type == "FunctionExpression" || expr.type == "ClassExpression") { - needsSemi = false; - if (expr.id) { - expr.type = expr.type == "FunctionExpression" ? "FunctionDeclaration" : "ClassDeclaration"; - } - } - node.declaration = expr; - if (needsSemi) this.semicolon(); - return this.finishNode(node, "ExportDefaultDeclaration"); - } - // export var|const|let|function|class ... - if (this.shouldParseExportStatement()) { - node.declaration = this.parseStatement(true); - node.specifiers = []; - node.source = null; - } else { - // export { x, y as z } [from '...'] - node.declaration = null; - node.specifiers = this.parseExportSpecifiers(); - if (this.eatContextual("from")) { - node.source = this.type === _tokentype.types.string ? this.parseExprAtom() : this.unexpected(); - } else { - // check for keywords used as local names - for (var i = 0; i < node.specifiers.length; i++) { - if (this.keywords.test(node.specifiers[i].local.name) || this.reservedWords.test(node.specifiers[i].local.name)) { - this.unexpected(node.specifiers[i].local.start); - } - } - - node.source = null; - } - this.semicolon(); - } - return this.finishNode(node, "ExportNamedDeclaration"); -}; - -pp.shouldParseExportStatement = function () { - return this.type.keyword; -}; - -// Parses a comma-separated list of module exports. - -pp.parseExportSpecifiers = function () { - var nodes = [], - first = true; - // export { x, y as z } [from '...'] - this.expect(_tokentype.types.braceL); - while (!this.eat(_tokentype.types.braceR)) { - if (!first) { - this.expect(_tokentype.types.comma); - if (this.afterTrailingComma(_tokentype.types.braceR)) break; - } else first = false; - - var node = this.startNode(); - node.local = this.parseIdent(this.type === _tokentype.types._default); - node.exported = this.eatContextual("as") ? this.parseIdent(true) : node.local; - nodes.push(this.finishNode(node, "ExportSpecifier")); - } - return nodes; -}; - -// Parses import declaration. - -pp.parseImport = function (node) { - this.next(); - // import '...' - if (this.type === _tokentype.types.string) { - node.specifiers = empty; - node.source = this.parseExprAtom(); - } else { - node.specifiers = this.parseImportSpecifiers(); - this.expectContextual("from"); - node.source = this.type === _tokentype.types.string ? this.parseExprAtom() : this.unexpected(); - } - this.semicolon(); - return this.finishNode(node, "ImportDeclaration"); -}; - -// Parses a comma-separated list of module imports. - -pp.parseImportSpecifiers = function () { - var nodes = [], - first = true; - if (this.type === _tokentype.types.name) { - // import defaultObj, { x, y as z } from '...' - var node = this.startNode(); - node.local = this.parseIdent(); - this.checkLVal(node.local, true); - nodes.push(this.finishNode(node, "ImportDefaultSpecifier")); - if (!this.eat(_tokentype.types.comma)) return nodes; - } - if (this.type === _tokentype.types.star) { - var node = this.startNode(); - this.next(); - this.expectContextual("as"); - node.local = this.parseIdent(); - this.checkLVal(node.local, true); - nodes.push(this.finishNode(node, "ImportNamespaceSpecifier")); - return nodes; - } - this.expect(_tokentype.types.braceL); - while (!this.eat(_tokentype.types.braceR)) { - if (!first) { - this.expect(_tokentype.types.comma); - if (this.afterTrailingComma(_tokentype.types.braceR)) break; - } else first = false; - - var node = this.startNode(); - node.imported = this.parseIdent(true); - if (this.eatContextual("as")) { - node.local = this.parseIdent(); - } else { - node.local = node.imported; - if (this.isKeyword(node.local.name)) this.unexpected(node.local.start); - if (this.reservedWordsStrict.test(node.local.name)) this.raise(node.local.start, "The keyword '" + node.local.name + "' is reserved"); - } - this.checkLVal(node.local, true); - nodes.push(this.finishNode(node, "ImportSpecifier")); - } - return nodes; -}; - -},{"./state":10,"./tokentype":14,"./whitespace":16}],12:[function(_dereq_,module,exports){ -// The algorithm used to determine whether a regexp can appear at a -// given point in the program is loosely based on sweet.js' approach. -// See https://github.com/mozilla/sweet.js/wiki/design - -"use strict"; - -exports.__esModule = true; - -function _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError("Cannot call a class as a function"); } } - -var _state = _dereq_("./state"); - -var _tokentype = _dereq_("./tokentype"); - -var _whitespace = _dereq_("./whitespace"); - -var TokContext = function TokContext(token, isExpr, preserveSpace, override) { - _classCallCheck(this, TokContext); - - this.token = token; - this.isExpr = !!isExpr; - this.preserveSpace = !!preserveSpace; - this.override = override; -}; - -exports.TokContext = TokContext; -var types = { - b_stat: new TokContext("{", false), - b_expr: new TokContext("{", true), - b_tmpl: new TokContext("${", true), - p_stat: new TokContext("(", false), - p_expr: new TokContext("(", true), - q_tmpl: new TokContext("`", true, true, function (p) { - return p.readTmplToken(); - }), - f_expr: new TokContext("function", true) -}; - -exports.types = types; -var pp = _state.Parser.prototype; - -pp.initialContext = function () { - return [types.b_stat]; -}; - -pp.braceIsBlock = function (prevType) { - if (prevType === _tokentype.types.colon) { - var _parent = this.curContext(); - if (_parent === types.b_stat || _parent === types.b_expr) return !_parent.isExpr; - } - if (prevType === _tokentype.types._return) return _whitespace.lineBreak.test(this.input.slice(this.lastTokEnd, this.start)); - if (prevType === _tokentype.types._else || prevType === _tokentype.types.semi || prevType === _tokentype.types.eof || prevType === _tokentype.types.parenR) return true; - if (prevType == _tokentype.types.braceL) return this.curContext() === types.b_stat; - return !this.exprAllowed; -}; - -pp.updateContext = function (prevType) { - var update = undefined, - type = this.type; - if (type.keyword && prevType == _tokentype.types.dot) this.exprAllowed = false;else if (update = type.updateContext) update.call(this, prevType);else this.exprAllowed = type.beforeExpr; -}; - -// Token-specific context update code - -_tokentype.types.parenR.updateContext = _tokentype.types.braceR.updateContext = function () { - if (this.context.length == 1) { - this.exprAllowed = true; - return; - } - var out = this.context.pop(); - if (out === types.b_stat && this.curContext() === types.f_expr) { - this.context.pop(); - this.exprAllowed = false; - } else if (out === types.b_tmpl) { - this.exprAllowed = true; - } else { - this.exprAllowed = !out.isExpr; - } -}; - -_tokentype.types.braceL.updateContext = function (prevType) { - this.context.push(this.braceIsBlock(prevType) ? types.b_stat : types.b_expr); - this.exprAllowed = true; -}; - -_tokentype.types.dollarBraceL.updateContext = function () { - this.context.push(types.b_tmpl); - this.exprAllowed = true; -}; - -_tokentype.types.parenL.updateContext = function (prevType) { - var statementParens = prevType === _tokentype.types._if || prevType === _tokentype.types._for || prevType === _tokentype.types._with || prevType === _tokentype.types._while; - this.context.push(statementParens ? types.p_stat : types.p_expr); - this.exprAllowed = true; -}; - -_tokentype.types.incDec.updateContext = function () { - // tokExprAllowed stays unchanged -}; - -_tokentype.types._function.updateContext = function () { - if (this.curContext() !== types.b_stat) this.context.push(types.f_expr); - this.exprAllowed = false; -}; - -_tokentype.types.backQuote.updateContext = function () { - if (this.curContext() === types.q_tmpl) this.context.pop();else this.context.push(types.q_tmpl); - this.exprAllowed = false; -}; - -},{"./state":10,"./tokentype":14,"./whitespace":16}],13:[function(_dereq_,module,exports){ -"use strict"; - -exports.__esModule = true; - -function _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError("Cannot call a class as a function"); } } - -var _identifier = _dereq_("./identifier"); - -var _tokentype = _dereq_("./tokentype"); - -var _state = _dereq_("./state"); - -var _locutil = _dereq_("./locutil"); - -var _whitespace = _dereq_("./whitespace"); - -// Object type used to represent tokens. Note that normally, tokens -// simply exist as properties on the parser object. This is only -// used for the onToken callback and the external tokenizer. - -var Token = function Token(p) { - _classCallCheck(this, Token); - - this.type = p.type; - this.value = p.value; - this.start = p.start; - this.end = p.end; - if (p.options.locations) this.loc = new _locutil.SourceLocation(p, p.startLoc, p.endLoc); - if (p.options.ranges) this.range = [p.start, p.end]; -} - -// ## Tokenizer - -; - -exports.Token = Token; -var pp = _state.Parser.prototype; - -// Are we running under Rhino? -var isRhino = typeof Packages == "object" && Object.prototype.toString.call(Packages) == "[object JavaPackage]"; - -// Move to the next token - -pp.next = function () { - if (this.options.onToken) this.options.onToken(new Token(this)); - - this.lastTokEnd = this.end; - this.lastTokStart = this.start; - this.lastTokEndLoc = this.endLoc; - this.lastTokStartLoc = this.startLoc; - this.nextToken(); -}; - -pp.getToken = function () { - this.next(); - return new Token(this); -}; - -// If we're in an ES6 environment, make parsers iterable -if (typeof Symbol !== "undefined") pp[Symbol.iterator] = function () { - var self = this; - return { next: function next() { - var token = self.getToken(); - return { - done: token.type === _tokentype.types.eof, - value: token - }; - } }; -}; - -// Toggle strict mode. Re-reads the next number or string to please -// pedantic tests (`"use strict"; 010;` should fail). - -pp.setStrict = function (strict) { - this.strict = strict; - if (this.type !== _tokentype.types.num && this.type !== _tokentype.types.string) return; - this.pos = this.start; - if (this.options.locations) { - while (this.pos < this.lineStart) { - this.lineStart = this.input.lastIndexOf("\n", this.lineStart - 2) + 1; - --this.curLine; - } - } - this.nextToken(); -}; - -pp.curContext = function () { - return this.context[this.context.length - 1]; -}; - -// Read a single token, updating the parser object's token-related -// properties. - -pp.nextToken = function () { - var curContext = this.curContext(); - if (!curContext || !curContext.preserveSpace) this.skipSpace(); - - this.start = this.pos; - if (this.options.locations) this.startLoc = this.curPosition(); - if (this.pos >= this.input.length) return this.finishToken(_tokentype.types.eof); - - if (curContext.override) return curContext.override(this);else this.readToken(this.fullCharCodeAtPos()); -}; - -pp.readToken = function (code) { - // Identifier or keyword. '\uXXXX' sequences are allowed in - // identifiers, so '\' also dispatches to that. - if (_identifier.isIdentifierStart(code, this.options.ecmaVersion >= 6) || code === 92 /* '\' */) return this.readWord(); - - return this.getTokenFromCode(code); -}; - -pp.fullCharCodeAtPos = function () { - var code = this.input.charCodeAt(this.pos); - if (code <= 0xd7ff || code >= 0xe000) return code; - var next = this.input.charCodeAt(this.pos + 1); - return (code << 10) + next - 0x35fdc00; -}; - -pp.skipBlockComment = function () { - var startLoc = this.options.onComment && this.curPosition(); - var start = this.pos, - end = this.input.indexOf("*/", this.pos += 2); - if (end === -1) this.raise(this.pos - 2, "Unterminated comment"); - this.pos = end + 2; - if (this.options.locations) { - _whitespace.lineBreakG.lastIndex = start; - var match = undefined; - while ((match = _whitespace.lineBreakG.exec(this.input)) && match.index < this.pos) { - ++this.curLine; - this.lineStart = match.index + match[0].length; - } - } - if (this.options.onComment) this.options.onComment(true, this.input.slice(start + 2, end), start, this.pos, startLoc, this.curPosition()); -}; - -pp.skipLineComment = function (startSkip) { - var start = this.pos; - var startLoc = this.options.onComment && this.curPosition(); - var ch = this.input.charCodeAt(this.pos += startSkip); - while (this.pos < this.input.length && ch !== 10 && ch !== 13 && ch !== 8232 && ch !== 8233) { - ++this.pos; - ch = this.input.charCodeAt(this.pos); - } - if (this.options.onComment) this.options.onComment(false, this.input.slice(start + startSkip, this.pos), start, this.pos, startLoc, this.curPosition()); -}; - -// Called at the start of the parse and after every token. Skips -// whitespace and comments, and. - -pp.skipSpace = function () { - loop: while (this.pos < this.input.length) { - var ch = this.input.charCodeAt(this.pos); - switch (ch) { - case 32:case 160: - // ' ' - ++this.pos; - break; - case 13: - if (this.input.charCodeAt(this.pos + 1) === 10) { - ++this.pos; - } - case 10:case 8232:case 8233: - ++this.pos; - if (this.options.locations) { - ++this.curLine; - this.lineStart = this.pos; - } - break; - case 47: - // '/' - switch (this.input.charCodeAt(this.pos + 1)) { - case 42: - // '*' - this.skipBlockComment(); - break; - case 47: - this.skipLineComment(2); - break; - default: - break loop; - } - break; - default: - if (ch > 8 && ch < 14 || ch >= 5760 && _whitespace.nonASCIIwhitespace.test(String.fromCharCode(ch))) { - ++this.pos; - } else { - break loop; - } - } - } -}; - -// Called at the end of every token. Sets `end`, `val`, and -// maintains `context` and `exprAllowed`, and skips the space after -// the token, so that the next one's `start` will point at the -// right position. - -pp.finishToken = function (type, val) { - this.end = this.pos; - if (this.options.locations) this.endLoc = this.curPosition(); - var prevType = this.type; - this.type = type; - this.value = val; - - this.updateContext(prevType); -}; - -// ### Token reading - -// This is the function that is called to fetch the next token. It -// is somewhat obscure, because it works in character codes rather -// than characters, and because operator parsing has been inlined -// into it. -// -// All in the name of speed. -// -pp.readToken_dot = function () { - var next = this.input.charCodeAt(this.pos + 1); - if (next >= 48 && next <= 57) return this.readNumber(true); - var next2 = this.input.charCodeAt(this.pos + 2); - if (this.options.ecmaVersion >= 6 && next === 46 && next2 === 46) { - // 46 = dot '.' - this.pos += 3; - return this.finishToken(_tokentype.types.ellipsis); - } else { - ++this.pos; - return this.finishToken(_tokentype.types.dot); - } -}; - -pp.readToken_slash = function () { - // '/' - var next = this.input.charCodeAt(this.pos + 1); - if (this.exprAllowed) { - ++this.pos;return this.readRegexp(); - } - if (next === 61) return this.finishOp(_tokentype.types.assign, 2); - return this.finishOp(_tokentype.types.slash, 1); -}; - -pp.readToken_mult_modulo = function (code) { - // '%*' - var next = this.input.charCodeAt(this.pos + 1); - if (next === 61) return this.finishOp(_tokentype.types.assign, 2); - return this.finishOp(code === 42 ? _tokentype.types.star : _tokentype.types.modulo, 1); -}; - -pp.readToken_pipe_amp = function (code) { - // '|&' - var next = this.input.charCodeAt(this.pos + 1); - if (next === code) return this.finishOp(code === 124 ? _tokentype.types.logicalOR : _tokentype.types.logicalAND, 2); - if (next === 61) return this.finishOp(_tokentype.types.assign, 2); - return this.finishOp(code === 124 ? _tokentype.types.bitwiseOR : _tokentype.types.bitwiseAND, 1); -}; - -pp.readToken_caret = function () { - // '^' - var next = this.input.charCodeAt(this.pos + 1); - if (next === 61) return this.finishOp(_tokentype.types.assign, 2); - return this.finishOp(_tokentype.types.bitwiseXOR, 1); -}; - -pp.readToken_plus_min = function (code) { - // '+-' - var next = this.input.charCodeAt(this.pos + 1); - if (next === code) { - if (next == 45 && this.input.charCodeAt(this.pos + 2) == 62 && _whitespace.lineBreak.test(this.input.slice(this.lastTokEnd, this.pos))) { - // A `-->` line comment - this.skipLineComment(3); - this.skipSpace(); - return this.nextToken(); - } - return this.finishOp(_tokentype.types.incDec, 2); - } - if (next === 61) return this.finishOp(_tokentype.types.assign, 2); - return this.finishOp(_tokentype.types.plusMin, 1); -}; - -pp.readToken_lt_gt = function (code) { - // '<>' - var next = this.input.charCodeAt(this.pos + 1); - var size = 1; - if (next === code) { - size = code === 62 && this.input.charCodeAt(this.pos + 2) === 62 ? 3 : 2; - if (this.input.charCodeAt(this.pos + size) === 61) return this.finishOp(_tokentype.types.assign, size + 1); - return this.finishOp(_tokentype.types.bitShift, size); - } - if (next == 33 && code == 60 && this.input.charCodeAt(this.pos + 2) == 45 && this.input.charCodeAt(this.pos + 3) == 45) { - if (this.inModule) this.unexpected(); - // `` line comment - this.skipLineComment(3) - this.skipSpace() - return this.nextToken() - } - return this.finishOp(tt.incDec, 2) - } - if (next === 61) return this.finishOp(tt.assign, 2) - return this.finishOp(tt.plusMin, 1) -} - -pp.readToken_lt_gt = function(code) { // '<>' - let next = this.input.charCodeAt(this.pos + 1) - let size = 1 - if (next === code) { - size = code === 62 && this.input.charCodeAt(this.pos + 2) === 62 ? 3 : 2 - if (this.input.charCodeAt(this.pos + size) === 61) return this.finishOp(tt.assign, size + 1) - return this.finishOp(tt.bitShift, size) - } - if (next == 33 && code == 60 && this.input.charCodeAt(this.pos + 2) == 45 && - this.input.charCodeAt(this.pos + 3) == 45) { - if (this.inModule) this.unexpected() - // ` - - -## 2.133.0 -* feature: CodeCommit: This release includes the DeleteBranch API and a change to the contents of a Commit object. -* feature: DMS: This change includes addition of new optional parameter to an existing API -* feature: ElasticBeanstalk: Added the ability to add, delete or update Tags -* feature: Polly: Amazon Polly exposes two new voices: "Matthew" (US English) and "Takumi" (Japanese) -* feature: RDS: You can now call DescribeValidDBInstanceModifications to learn what modifications you can make to your DB instance. You can use this information when you call ModifyDBInstance. - -## 2.132.0 -* feature: ECR: Adds support for new API set used to manage Amazon ECR repository lifecycle policies. Amazon ECR lifecycle policies enable you to specify the lifecycle management of images in a repository. The configuration is a set of one or more rules, where each rule defines an action for Amazon ECR to apply to an image. This allows the automation of cleaning up unused images, for example expiring images based on age or status. A lifecycle policy preview API is provided as well, which allows you to see the impact of a lifecycle policy on an image repository before you execute it -* feature: SES: Added content related to email template management and templated email sending operations. - -## 2.131.0 -* feature: EC2: This release includes updates to AWS Virtual Private Gateway. -* feature: ELBv2: Server Name Indication (SNI) is an extension to the TLS protocol by which a client indicates the hostname to connect to at the start of the TLS handshake. The load balancer can present multiple certificates through the same secure listener, which enables it to support multiple secure websites using a single secure listener. Application Load Balancers also support a smart certificate selection algorithm with SNI. If the hostname indicated by a client matches multiple certificates, the load balancer determines the best certificate to use based on multiple factors including the capabilities of the client. -* feature: OpsWorksCM: Provide engine specific information for node associations. - -## 2.130.0 -* feature: ConfigService: Revert: Added missing enumeration values for ConfigurationItemStatus - -## 2.129.0 -* feature: ConfigService: Added missing enumeration values for ConfigurationItemStatus - -## 2.128.0 -* feature: Redshift: DescribeEventSubscriptions API supports tag keys and tag values as request parameters. - -## 2.127.0 -* feature: KinesisAnalytics: Kinesis Analytics now supports schema discovery on objects in S3. Additionally, Kinesis Analytics now supports input data preprocessing through Lambda. -* feature: Route53Domains: Added a new API that checks whether a domain name can be transferred to Amazon Route 53. - -## 2.126.0 -* feature: EC2: This release includes service updates to AWS VPN. -* feature: SSM: EC2 Systems Manager support for tagging SSM Documents. Also support for tag-based permissions to restrict access to SSM Documents based on these tags. - -## 2.125.0 -* feature: AppStream: Includes APIs for managing and accessing image builders, and deleting images. -* feature: CodeBuild: Adding support for Building GitHub Pull Requests in AWS CodeBuild -* feature: MTurk: Today, Amazon Mechanical Turk (MTurk) supports SQS Notifications being delivered to Customers' SQS queues when different stages of the MTurk workflow are complete. We are going to create new functionality so that Customers can leverage SNS topics as a destination for notification messages when various stages of the MTurk workflow are complete. -* feature: Organizations: This release flags the HandshakeParty structure's Type and Id fields as 'required'. They effectively were required in the past, as you received an error if you did not include them. This is now reflected at the API definition level. -* feature: Route53: This change allows customers to reset elements of health check. - -## 2.124.0 -* feature: Pinpoint: Added two new push notification channels: Amazon Device Messaging (ADM) and, for push notification support in China, Baidu Cloud Push. Added support for APNs auth via .p8 key file. Added operation for direct message deliveries to user IDs, enabling you to message an individual user on multiple endpoints. - -## 2.123.0 -* feature: CloudFormation: You can now prevent a stack from being accidentally deleted by enabling termination protection on the stack. If you attempt to delete a stack with termination protection enabled, the deletion fails and the stack, including its status, remains unchanged. You can enable termination protection on a stack when you create it. Termination protection on stacks is disabled by default. After creation, you can set termination protection on a stack whose status is CREATE_COMPLETE, UPDATE_COMPLETE, or UPDATE_ROLLBACK_COMPLETE. - -## 2.122.0 -* feature: ConfigService: AWS Config support for DynamoDB tables and Auto Scaling resource types -* feature: ECS: Amazon ECS users can now add and drop Linux capabilities to their containers through the use of docker's cap-add and cap-drop features. Customers can specify the capabilities they wish to add or drop for each container in their task definition. - -## 2.121.0 -* feature: Budgets: Including "DuplicateRecordException" in UpdateNotification and UpdateSubscriber. -* feature: CloudWatchLogs: Adds support for associating LogGroups with KMS Keys. -* feature: EC2: Add EC2 APIs to copy Amazon FPGA Images (AFIs) within the same region and across multiple regions, delete AFIs, and modify AFI attributes. AFI attributes include name, description and granting/denying other AWS accounts to load the AFI. - -## 2.120.0 -* feature: AppStream: API updates for supporting On-Demand fleets. -* feature: CodePipeline: This change includes a PipelineMetadata object that is part of the output from the GetPipeline API that includes the Pipeline ARN, created, and updated timestamp. -* feature: Greengrass: Reset Deployments feature allows you to clean-up the cloud resource so you can delete the group. It also cleans up the core so that it goes back to the pre-deployment state. -* feature: LexRuntime: Request attributes can be used to pass client specific information from the client to Amazon Lex as part of each request. -* feature: RDS: Introduces the --option-group-name parameter to the ModifyDBSnapshot CLI command. You can specify this parameter when you upgrade an Oracle DB snapshot. The same option group considerations apply when upgrading a DB snapshot as when upgrading a DB instance. For more information, see http://docs.aws.amazon.com/AmazonRDS/latest/UserGuide/USER_UpgradeDBInstance.Oracle.html#USER_UpgradeDBInstance.Oracle.OGPG.OG - -## 2.119.0 -* feature: EC2: Fixed bug in EC2 clients preventing ElasticGpuSet from being set. - -## 2.118.0 -* feature: EC2: Amazon EC2 now lets you opt for Spot instances to be stopped in the event of an interruption instead of being terminated. Your Spot request can be fulfilled again by restarting instances from a previously stopped state, subject to availability of capacity at or below your preferred price. When you submit a persistent Spot request, you can choose from "terminate" or "stop" as the instance interruption behavior. Choosing "stop" will shutdown your Spot instances so you can continue from this stopped state later on. This feature is only available for instances with Amazon EBS volume as their root device. -* feature: IAM: A new API, DeleteServiceLinkedRole, submits a service-linked role deletion request and returns a DeletionTaskId, which you can use to check the status of the deletion. -* feature: SES: Amazon Simple Email Service (Amazon SES) now lets you customize the domains used for tracking open and click events. Previously, open and click tracking links referred to destinations hosted on domains operated by Amazon SES. With this feature, you can use your own branded domains for capturing open and click events. - -## 2.117.0 -* feature: APIGateway: Add a new enum "REQUEST" to '--type ' field in the current create-authorizer API, and make "identitySource" optional. - -## 2.116.0 -* bugfix: clock skew: put the updating clock skew logic to each service client instead of using global config -* feature: CodeBuild: Supporting Parameter Store in environment variables for AWS CodeBuild -* feature: ServiceCatalog: This release of Service Catalog adds API support to copy products. - -## 2.115.0 -* feature: AutoScaling: Customers can create Life Cycle Hooks at the time of creating Auto Scaling Groups through the CreateAutoScalingGroup API -* feature: CloudWatchEvents: Exposes ConcurrentModificationException as one of the valid exceptions for PutPermission and RemovePermission operation. -* feature: EC2: You are now able to create and launch EC2 x1e.32xlarge instance, a new EC2 instance in the X1 family, in us-east-1, us-west-2, eu-west-1, and ap-northeast-1. x1e.32xlarge offers 128 vCPUs, 3,904 GiB of DDR4 instance memory, high memory bandwidth, large L3 caches, and leading reliability capabilities to boost the performance and reliability of in-memory applications. - -## 2.114.0 -* feature: EC2: Fixed bug in EC2 clients preventing HostOfferingSet from being set - -## 2.113.0 -* feature: DeviceFarm: DeviceFarm has added support for two features - RemoteDebugging and Customer Artifacts. Customers can now do remote Debugging on their Private Devices and can now retrieve custom files generated by their tests on the device and the device host (execution environment) on both public and private devices. - -## 2.112.0 -* feature: CloudWatchLogs: Adds support for the PutResourcePolicy, DescribeResourcePolicy and DeleteResourcePolicy APIs. - -## 2.111.0 -* feature: EC2: With Tagging support, you can add Key and Value metadata to search, filter and organize your NAT Gateways according to your organization's needs. -* feature: ELBv2: The feature enables the new Network Load Balancer that is optimized to handle volatile traffic patterns while using a single static IP address per Availability Zone. Network Load Balancer operates at the connection level (Layer 4), routing connections to Amazon EC2 instances and containers, within Amazon Virtual Private Cloud (Amazon VPC) based on IP protocol data. -* feature: LexModelBuildingService: Amazon Lex provides the ability to export your Amazon Lex chatbot definition as a JSON file that can be added to the target platform. The JSON configuration file contains the structure of your Amazon Lex chatbot, including the intent schema with utterances, slots, prompts and slot-types. -* feature: Route53: You can configure Amazon Route 53 to log information about the DNS queries that Amazon Route 53 receives for your domains and subdomains. When you configure query logging, Amazon Route 53 starts to send logs to CloudWatch Logs. You can use various tools, including the AWS console, to access the query logs. - -## 2.110.0 -* feature: Budgets: Add an optional "thresholdType" to notifications to support percentage or absolute value thresholds. - -## 2.109.0 -* feature: CodeStar: Added support to tag CodeStar projects. Tags can be used to organize and find CodeStar projects on key-value pairs that you can choose. For example, you could add a tag with a key of "Release" and a value of "Beta" to projects your organization is working on for an upcoming beta release. - -## 2.108.0 -* feature: GameLift: GameLift VPC resources can be peered with any other AWS VPC. R4 memory-optimized instances now available to deploy. -* feature: Mobile: AWS Mobile Hub is an integrated experience designed to help developers build, test, configure and release cloud-based applications for mobile devices using Amazon Web Services. AWS Mobile Hub provides a console and API for developers, allowing them to quickly select desired features and integrate them into mobile applications. Features include NoSQL Database, Cloud Logic, Messaging and Analytics. With AWS Mobile Hub, you pay only for the underlying services that Mobile Hub provisions based on the features you choose in the Mobile Hub console. -* feature: SSM: Adding KMS encryption support to SSM Inventory Resource Data Sync. Exposes the ClientToken parameter on SSM StartAutomationExecution to provide idempotent execution requests. - -## 2.107.0 -* feature: CodeBuild: The AWS CodeBuild HTTP API now provides the BatchDeleteBuilds operation, which enables you to delete existing builds. -* feature: EC2: Descriptions for Security Group Rules enables customers to be able to define a description for ingress and egress security group rules . The Descriptions for Security Group Rules feature supports one description field per Security Group rule for both ingress and egress rules . Descriptions for Security Group Rules provides a simple way to describe the purpose or function of a Security Group Rule allowing for easier customer identification of configuration elements . Prior to the release of Descriptions for Security Group Rules , customers had to maintain a separate system outside of AWS if they wanted to track Security Group Rule mapping and their purpose for being implemented. If a security group rule has already been created and you would like to update or change your description for that security group rule you can use the UpdateSecurityGroupRuleDescription API. -* feature: ELBv2: This change now allows Application Load Balancers to distribute traffic to AWS resources using their IP addresses as targets in addition to the instance IDs. You can also load balance to resources outside the VPC hosting the load balancer using their IP addresses as targets. This includes resources in peered VPCs, EC2-Classic, and on-premises locations reachable over AWS Direct Connect or a VPN connection. -* feature: LexModelBuildingService: Amazon Lex now supports synonyms for slot type values. If the user inputs a synonym, it will be resolved to the corresponding slot value. - -## 2.106.0 -* feature: ApplicationAutoScaling: Application Auto Scaling now supports the DisableScaleIn option for Target Tracking Scaling Policies. This allows customers to create scaling policies that will only add capacity to the target. -* feature: Organizations: The exception ConstraintViolationException now contains a new reason subcode MASTERACCOUNT_MISSING_CONTACT_INFO to make it easier to understand why attempting to remove an account from an Organization can fail. We also improved several other of the text descriptions and examples. - -## 2.105.0 -* feature: ConfigService: Increased the internal size limit of resourceId -* feature: EC2: Provides capability to add secondary CIDR blocks to a VPC. - -## 2.104.0 -* feature: CloudFormation: Rollback triggers enable you to have AWS CloudFormation monitor the state of your application during stack creation and updating, and to roll back that operation if the application breaches the threshold of any of the alarms you've specified. -* feature: GameLift: Update spelling of MatchmakingTicket status values for internal consistency. -* feature: RDS: Option group options now contain additional properties that identify requirements for certain options. Check these properties to determine if your DB instance must be in a VPC or have auto minor upgrade turned on before you can use an option. Check to see if you can downgrade the version of an option after you have installed it. - -## 2.103.0 -* feature: Rekognition: Update the enum value of LandmarkType and GenderType to be consistent with service response - -## 2.102.0 -* feature: SSM: Changes to associations in Systems Manager State Manager can now be recorded. Previously, when you edited associations, you could not go back and review older association settings. Now, associations are versioned, and can be named using human-readable strings, allowing you to see a trail of association changes. You can also perform rate-based scheduling, which allows you to schedule associations more granularly. - -## 2.101.0 -* feature: Firehose: This change will allow customers to attach a Firehose delivery stream to an existing Kinesis stream directly. You no longer need a forwarder to move data from a Kinesis stream to a Firehose delivery stream. You can now run your streaming applications on your Kinesis stream and easily attach a Firehose delivery stream to it for data delivery to S3, Redshift, or Elasticsearch concurrently. -* feature: Route53: Amazon Route 53 now supports CAA resource record type. A CAA record controls which certificate authorities are allowed to issue certificates for the domain or subdomain. - -## 2.100.0 -* feature: GameLift: The Matchmaking Grouping Service is a new feature that groups player match requests for a given game together into game sessions based on developer configured rules. - -## 2.99.0 -* feature: EC2: Fixed bug in EC2 clients preventing HostReservation from being set - -## 2.98.0 -* feature: Batch: This release enhances the DescribeJobs API to include the CloudWatch logStreamName attribute in ContainerDetail and ContainerDetailAttempt -* feature: CloudHSMV2: CloudHSM provides hardware security modules for protecting sensitive data and cryptographic keys within an EC2 VPC, and enable the customer to maintain control over key access and use. This is a second-generation of the service that will improve security, lower cost and provide better customer usability. -* feature: EFS: Customers can create encrypted EFS file systems and specify a KMS master key to encrypt it with. -* feature: Glue: AWS Glue is a fully managed extract, transform, and load (ETL) service that makes it easy for customers to prepare and load their data for analytics. You can create and run an ETL job with a few clicks in the AWS Management Console. You simply point AWS Glue to your data stored on AWS, and AWS Glue discovers your data and stores the associated metadata (e.g. table definition and schema) in the AWS Glue Data Catalog. Once cataloged, your data is immediately searchable, queryable, and available for ETL. AWS Glue generates the code to execute your data transformations and data loading processes. AWS Glue generates Python code that is entirely customizable, reusable, and portable. Once your ETL job is ready, you can schedule it to run on AWS Glue's fully managed, scale-out Spark environment. AWS Glue provides a flexible scheduler with dependency resolution, job monitoring, and alerting. AWS Glue is serverless, so there is no infrastructure to buy, set up, or manage. It automatically provisions the environment needed to complete the job, and customers pay only for the compute resources consumed while running ETL jobs. With AWS Glue, data can be available for analytics in minutes. -* feature: MigrationHub: AWS Migration Hub provides a single location to track migrations across multiple AWS and partner solutions. Using Migration Hub allows you to choose the AWS and partner migration tools that best fit your needs, while providing visibility into the status of your entire migration portfolio. Migration Hub also provides key metrics and progress for individual applications, regardless of which tools are being used to migrate them. For example, you might use AWS Database Migration Service, AWS Server Migration Service, and partner migration tools to migrate an application comprised of a database, virtualized web servers, and a bare metal server. Using Migration Hub will provide you with a single screen that shows the migration progress of all the resources in the application. This allows you to quickly get progress updates across all of your migrations, easily identify and troubleshoot any issues, and reduce the overall time and effort spent on your migration projects. Migration Hub is available to all AWS customers at no additional charge. You only pay for the cost of the migration tools you use, and any resources being consumed on AWS. -* feature: SSM: Systems Manager Maintenance Windows include the following changes or enhancements: New task options using Systems Manager Automation, AWS Lambda, and AWS Step Functions; enhanced ability to edit the targets of a Maintenance Window, including specifying a target name and description, and ability to edit the owner field; enhanced ability to edits tasks; enhanced support for Run Command parameters; and you can now use a --safe flag when attempting to deregister a target. If this flag is enabled when you attempt to deregister a target, the system returns an error if the target is referenced by any task. Also, Systems Manager now includes Configuration Compliance to scan your fleet of managed instances for patch compliance and configuration inconsistencies. You can collect and aggregate data from multiple AWS accounts and Regions, and then drill down into specific resources that aren't compliant. -* feature: StorageGateway: Add optional field ForceDelete to DeleteFileShare api. - -## 2.97.0 -* bugfix: REST-JSON serialization: Automatically add a content-type header of application/json to requests with a JSON body -* feature: CodeDeploy: Adds support for specifying Application Load Balancers in deployment groups, for both in-place and blue/green deployments. -* feature: CognitoIdentityServiceProvider: We have added support for features for Amazon Cognito User Pools that enable application developers to easily add and customize a sign-up and sign-in user experience, use OAuth 2.0, and integrate with Facebook, Google, Login with Amazon, and SAML-based identity providers. -* feature: EC2: Provides customers an opportunity to recover an EIP that was released - -## 2.96.0 -* feature: CloudDirectory: Enable BatchDetachPolicy -* feature: CodeBuild: Supporting Bitbucket as source type in AWS CodeBuild. - -## 2.95.0 -* bugfix: credentials: add typescript definition for resolvePromise() -* bugfix: typings: add readablestream type to clients that support streaming -* feature: ElasticBeanstalk: Add support for paginating the result of DescribeEnvironments Include the ARN of described environments in DescribeEnvironments output - -## 2.94.0 -* feature: CodeDeploy: AWS CodeDeploy now supports the use of multiple tag groups in a single deployment group (an intersection of tags) to identify the instances for a deployment. When you create or update a deployment group, use the new ec2TagSet and onPremisesTagSet structures to specify up to three groups of tags. Only instances that are identified by at least one tag in each of the tag groups are included in the deployment group. -* feature: ConfigService: Added new API, GetDiscoveredResourceCounts, which returns the resource types, the number of each resource type, and the total number of resources that AWS Config is recording in the given region for your AWS account. -* feature: EC2: Ec2 SpotInstanceRequestFulfilled waiter update -* feature: ELBv2: Add TargetInService and TargetDeregistered waiters -* feature: Pinpoint: This release of the Pinpoint SDK enables App management - create, delete, update operations, Raw Content delivery for APNs and GCM campaign messages and From Address override. -* feature: SES: This update adds information about publishing email open and click events. This update also adds information about publishing email events to Amazon Simple Notification Service (Amazon SNS). - -## 2.93.0 -* feature: DynamoDB: Add a `wrapNumbers` option to the Document Client to direct the client not to convert number attributes to JavaScript numbers. -* feature: Inspector: Inspector's StopAssessmentRun API has been updated with a new input option - stopAction. This request parameter can be set to either START_EVALUATION or SKIP_EVALUATION. START_EVALUATION (the default value, and the previous behavior) stops the AWS agent data collection and begins the results evaluation for findings generation based on the data collected so far. SKIP_EVALUATION cancels the assessment run immediately, after which no findings are generated. -* feature: SSM: Adds a SendAutomationSignal API to SSM Service. This API is used to send a signal to an automation execution to change the current behavior or status of the execution. - -## 2.92.0 -* feature: EC2: The CreateDefaultVPC API enables you to create a new default VPC . You no longer need to contact AWS support, if your default VPC has been deleted. -* feature: KinesisAnalytics: Added additional exception types and clarified documentation. - -## 2.91.0 -* feature: CloudWatch: This release adds high resolution features to CloudWatch, with support for Custom Metrics down to 1 second and Alarms down to 10 seconds. -* feature: EC2: Amazon EC2 Elastic GPUs allow you to easily attach low-cost graphics acceleration to current generation EC2 instances. With Amazon EC2 Elastic GPUs, you can configure the right amount of graphics acceleration to your particular workload without being constrained by fixed hardware configurations and limited GPU selection. - -## 2.90.0 -* feature: CloudDirectory: Cloud Directory adds support for additional batch operations. -* feature: CloudFormation: AWS CloudFormation StackSets enables you to manage stacks across multiple accounts and regions. - -## 2.89.0 -* feature: AppStream: Amazon AppStream 2.0 image builders and fleets can now access applications and network resources that rely on Microsoft Active Directory (AD) for authentication and permissions. This new feature allows you to join your streaming instances to your AD, so you can use your existing AD user management tools. -* feature: EC2: Spot Fleet tagging capability allows customers to automatically tag instances launched by Spot Fleet. You can use this feature to label or distinguish instances created by distinct Spot Fleets. Tagging your EC2 instances also enables you to see instance cost allocation by tag in your AWS bill. - -## 2.88.0 -* feature: EMR: Amazon EMR now includes the ability to use a custom Amazon Linux AMI and adjustable root volume size when launching a cluster. - -## 2.87.0 -* feature: Budgets: Update budget Management API's to list/create/update RI_UTILIZATION type budget. Update budget Management API's to support DAILY timeUnit for RI_UTILIZATION type budget. - -## 2.86.0 -* feature: CognitoIdentityServiceProvider: Allows developers to configure user pools for email/phone based signup and sign-in. -* feature: Lambda: Lambda@Edge lets you run code closer to your end users without provisioning or managing servers. With Lambda@Edge, your code runs in AWS edge locations, allowing you to respond to your end users at the lowest latency. Your code is triggered by Amazon CloudFront events, such as requests to and from origin servers and viewers, and it is ready to execute at every AWS edge location whenever a request for content is received. You just upload your Node.js code to AWS Lambda and Lambda takes care of everything required to run and scale your code with high availability. You only pay for the compute time you consume - there is no charge when your code is not running. - -## 2.85.0 -* feature: Discovery: Adding feature to the Export API for Discovery Service to allow filters for the export task to allow export based on per agent id. -* feature: EC2: New EC2 GPU Graphics instance - -## 2.84.0 -* bugfix: S3: Updates S3 client to no longer attempt to determine a bucket's region when a request is aborted. -* feature: APIGateway: Adds support for management of gateway responses. -* feature: EC2: X-ENI (or Cross-Account ENI) is a new feature that allows the attachment or association of Elastic Network Interfaces (ENI) between VPCs in different AWS accounts located in the same availability zone. With this new capability, service providers and partners can deliver managed solutions in a variety of new architectural patterns where the provider and consumer of the service are in different AWS accounts. - -## 2.83.0 -* feature: AutoScaling: Auto Scaling now supports a new type of scaling policy called target tracking scaling policies that you can use to set up dynamic scaling for your application. - -## 2.82.0 -* feature: DirectoryService: You can now improve the resilience and performance of your Microsoft AD directory by deploying additional domain controllers. Added UpdateNumberofDomainControllers API that allows you to update the number of domain controllers you want for your directory, and DescribeDomainControllers API that allows you to describe the detailed information of each domain controller of your directory. Also added the 'DesiredNumberOfDomainControllers' field to the DescribeDirectories API output for Microsoft AD. -* feature: KMS: This release of AWS Key Management Service introduces the ability to determine whether a key is AWS managed or customer managed. -* feature: Kinesis: You can now encrypt your data at rest within an Amazon Kinesis Stream using server-side encryption. Server-side encryption via AWS KMS makes it easy for customers to meet strict data management requirements by encrypting their data at rest within the Amazon Kinesis Streams, a fully managed real-time data processing service. -* feature: SSM: Amazon EC2 Systems Manager now expands Patching support to Amazon Linux, Red Hat and Ubuntu in addition to the already supported Windows Server. - -## 2.81.0 -* bugfix: Core: The SDK will now throw an InvalidHeader error when a header's value is not stringifiable. See #1598. -* bugfix: apigateway: ApiGateway.getExports will no longer override user-supplied 'accepts' with 'application/json' -* feature: CloudWatch: We are excited to announce the availability of APIs and CloudFormation support for CloudWatch Dashboards. You can use the new dashboard APIs or CloudFormation templates to dynamically build and maintain dashboards to monitor your infrastructure and applications. There are four new dashboard APIs - PutDashboard, GetDashboard, DeleteDashboards, and ListDashboards APIs. PutDashboard is used to create a new dashboard or modify an existing one whereas GetDashboard is the API to get the details of a specific dashboard. ListDashboards and DeleteDashboards are used to get the names or delete multiple dashboards respectively. Getting started with dashboard APIs is similar to any other AWS APIs. The APIs can be accessed through AWS SDK or through CLI tools. -* feature: Route53: Bug fix for InvalidChangeBatch exception. - -## 2.80.0 -* feature: S3: API Update for S3: Adding Object Tagging Header to MultipartUpload Initialization - -## 2.79.0 -* bugfix: LexRuntime: Adds support for non-file streams as an input to postContent. -* feature: CloudWatchEvents: CloudWatch Events now allows different AWS accounts to share events with each other through a new resource called event bus. Event buses accept events from AWS services, other AWS accounts and PutEvents API calls. Currently all AWS accounts have one default event bus. To send events to another account, customers simply write rules to match the events of interest and attach an event bus in the receiving account as the target to the rule. The PutTargets API has been updated to allow adding cross account event buses as targets. In addition, we have released two new APIs - PutPermission and RemovePermission - that enables customers to add/remove permissions to their default event bus. -* feature: GameLift: Allow developers to download GameLift fleet creation logs to assist with debugging. -* feature: SSM: Adding Resource Data Sync support to SSM Inventory. New APIs: * CreateResourceDataSync - creates a new resource data sync configuration, * ListResourceDataSync - lists existing resource data sync configurations, * DeleteResourceDataSync - deletes an existing resource data sync configuration. - -## 2.78.0 -* feature: ServiceCatalog: Proper tagging of resources is critical to post-launch operations such as billing, cost allocation, and resource management. By using Service Catalog's TagOption Library, administrators can define a library of re-usable TagOptions that conform to company standards, and associate these with Service Catalog portfolios and products. Learn how to move your current tags to the new library, create new TagOptions, and view and associate your library items with portfolios and products. Understand how to ensure that the right tags are created on products launched through Service Catalog and how to provide users with defined selectable tags. - -## 2.77.0 -* feature: Lambda: The Lambda Invoke API will now throw new exception InvalidRuntimeException (status code 502) for invokes with deprecated runtimes. - -## 2.76.0 -* feature: CodePipeline: A new API, ListPipelineExecutions, enables you to retrieve summary information about the most recent executions in a pipeline, including pipeline execution ID, status, start time, and last updated time. You can request information for a maximum of 100 executions. Pipeline execution data is available for the most recent 12 months of activity. -* feature: DMS: Added tagging for DMS certificates. -* feature: ELB: Add retry error state to InstanceInService waiter for ElasticLoadBalancer -* feature: Lightsail: This release adds a new nextPageToken property to the result of the GetOperationsForResource API. Developers can now get the next set of items in a list by making subsequent calls to GetOperationsForResource API with the token from the previous call. This release also deprecates the nextPageCount property, which previously returned null (use the nextPageToken property instead). This release also deprecates the customImageName property on the CreateInstancesRequest class, which was previously ignored by the API. -* feature: Route53: This release reintroduces the HealthCheckInUse exception. - -## 2.75.0 -* feature: DAX: Amazon DynamoDB Accelerator (DAX) is a fully managed, highly available, in-memory cache for DynamoDB that delivers up to a 10x performance improvement - from milliseconds to microseconds - even at millions of requests per second. DAX does all the heavy lifting required to add in-memory acceleration to your DynamoDB tables, without requiring developers to manage cache invalidation, data population, or cluster management. -* feature: Route53: Amazon Route 53 now supports multivalue answers in response to DNS queries, which lets you route traffic approximately randomly to multiple resources, such as web servers. Create one multivalue answer record for each resource and, optionally, associate an Amazon Route 53 health check with each record, and Amazon Route 53 responds to DNS queries with up to eight healthy records. -* feature: S3: Allows forward slashes in Bucket names when using SigV4 to create or retrieve objects. This is to maintain compatibility with behavior when using SigV2. In new code, Buckets should not contain forward slashes. Instead, directories should be part of an object's key. -* feature: SSM: Adding hierarchy support to the SSM Parameter Store API. Added support tor tagging. New APIs: GetParameter - retrieves one parameter, DeleteParameters - deletes multiple parameters (max number 10), GetParametersByPath - retrieves parameters located in the hierarchy. Updated APIs: PutParameter - added ability to enforce parameter value by applying regex (AllowedPattern), DescribeParameters - modified to support Tag filtering. -* feature: WAFRegional: You can now create, edit, update, and delete a new type of WAF rule with a rate tracking component. - -## 2.74.0 -* feature: WorkDocs: This release provides a new API to retrieve the activities performed by WorkDocs users. - -## 2.73.0 -* feature: Organizations: Improvements to Exception Modeling - -## 2.72.0 -* feature: XRay: Add a response time histogram to the services in response of GetServiceGraph API. - -## 2.71.0 -* feature: DynamoDB: Adds two new functions to the AWS.DynamoDB.Converter namespace: one to convert full DynamoDB items (such as what you might receive for events in a DynamoDB stream) into plain vanilla JavaScript objects and one to convert JavaScript objects back into DynamoDB items -* feature: EC2: Adds API to describe Amazon FPGA Images (AFIs) available to customers, which includes public AFIs, private AFIs that you own, and AFIs owned by other AWS accounts for which you have load permissions. -* feature: ECS: Added support for cpu, memory, and memory reservation container overrides on the RunTask and StartTask APIs. -* feature: Iot: Revert the last release: remove CertificatePem from DescribeCertificate API. -* feature: ServiceCatalog: Added ProvisioningArtifactSummaries to DescribeProductAsAdmin's output to show the provisioning artifacts belong to the product. Allow filtering by SourceProductId in SearchProductsAsAdmin for AWS Marketplace products. Added a verbose option to DescribeProvisioningArtifact to display the CloudFormation template used to create the provisioning artifact.Added DescribeProvisionedProduct API. Changed the type of ProvisionedProduct's Status to be distinct from Record's Status. New ProvisionedProduct's Status are AVAILABLE, UNDER_CHANGE, TAINTED, ERROR. Changed Record's Status set of values to CREATED, IN_PROGRESS, IN_PROGRESS_IN_ERROR, SUCCEEDED, FAILED. - -## 2.70.0 -* feature: ApplicationAutoScaling: Application Auto Scaling now supports automatic scaling of read and write throughput capacity for DynamoDB tables and global secondary indexes. - -## 2.69.0 -* feature: ConfigService: With this release AWS Config supports the Amazon CloudWatch alarm resource type. - -## 2.68.0 -* feature: RDS: API Update for RDS: this update enables copy-on-write, a new Aurora MySQL Compatible Edition feature that allows users to restore their database, and support copy of TDE enabled snapshot cross region. -* feature: S3: Switches S3 to use signatureVersion "v4" by default. To continue using signatureVersion "v2", set the signatureVersion: "v2" option in the S3 service client configuration. Presigned URLs will continue using "v2" by default. - -## 2.67.0 -* feature: EFS: CORS support added. Now a default service in the browser build of the JavaScript SDK. -* feature: OpsWorks: Tagging Support for AWS OpsWorks Stacks - -## 2.66.0 -* feature: Iot: In addition to using certificate ID, AWS IoT customers can now obtain the description of a certificate with the certificate PEM. -* feature: Pinpoint: Starting today Amazon Pinpoint adds SMS Text and Email Messaging support in addition to Mobile Push Notifications, providing developers, product managers and marketers with multi-channel messaging capabilities to drive user engagement in their applications. Pinpoint also enables backend services and applications to message users directly and provides advanced user and app analytics to understand user behavior and messaging performance. -* feature: Rekognition: API Update for AmazonRekognition: Adding RecognizeCelebrities API - -## 2.65.0 -* feature: CodeBuild: Add support to APIs for privileged containers. This change would allow performing privileged operations like starting the Docker daemon inside builds possible in custom docker images. -* feature: Greengrass: AWS Greengrass is software that lets you run local compute, messaging, and device state synchronization for connected devices in a secure way. With AWS Greengrass, connected devices can run AWS Lambda functions, keep device data in sync, and communicate with other devices securely even when not connected to the Internet. Using AWS Lambda, Greengrass ensures your IoT devices can respond quickly to local events, operate with intermittent connections, and minimize the cost of transmitting IoT data to the cloud. - -## 2.64.0 -* bugfix: S3: Calling send multiple times on an S3 ManagedUpload with leavePartsOnError set to true should no longer result in truncated files being uploaded to S3. Calling send multiple times is not supported with streams. -* feature: Iot: Update client side validation for SalesForce action. - -## 2.63.0 -* feature: AppStream: AppStream 2.0 Custom Security Groups allows you to easily control what network resources your streaming instances and images have access to. You can assign up to 5 security groups per Fleet to control the inbound and outbound network access to your streaming instances to specific IP ranges, network protocols, or ports. -* feature: AutoScaling: Autoscaling resource model update. -* feature: Iot: Added Salesforce action to IoT Rules Engine. - -## 2.62.0 -* feature: KinesisAnalytics: Kinesis Analytics publishes error messages CloudWatch logs in case of application misconfigurations -* feature: WorkDocs: This release includes new APIs to manage tags and custom metadata on resources and also new APIs to add and retrieve comments at the document level. - -## 2.61.0 -* feature: CodeDeploy: AWS CodeDeploy has improved how it manages connections to GitHub accounts and repositories. You can now create and store up to 25 connections to GitHub accounts in order to associate AWS CodeDeploy applications with GitHub repositories. Each connection can support multiple repositories. You can create connections to up to 25 different GitHub accounts, or create more than one connection to a single account. The ListGitHubAccountTokenNames command has been introduced to retrieve the names of stored connections to GitHub accounts that you have created. The name of the connection to GitHub used for an AWS CodeDeploy application is also included in the ApplicationInfo structure. Two new fields, lastAttemptedDeployment and lastSuccessfulDeployment, have been added to DeploymentGroupInfo to improve the handling of deployment group information in the AWS CodeDeploy console. Information about these latest deployments can also be retrieved using the GetDeploymentGroup and BatchGetDeployment group requests. Also includes a region update (us-gov-west-1). -* feature: CognitoIdentityServiceProvider: Added support within Amazon Cognito User Pools for 1) a customizable hosted UI for user sign up and sign in and 2) integration of external identity providers. -* feature: ELBv2: Update the existing DescribeRules API to support pagination. - -## 2.60.0 -* bugfix: Core: Fixes issue where some TimeStamp shapes had an incorrect timestampFormat. Specifically affects S3.putBucketLifecycleConfiguration when using Date fields. -* feature: RDS: Amazon RDS customers can now easily and quickly stop and start their DB instances. - -## 2.59.0 -* bugfix: S3: Update ManagedUploader body verification to allow empty strings -* feature: CloudDirectory: Cloud Directory has launched support for Typed Links, enabling customers to create object-to-object relationships that are not hierarchical in nature. Typed Links enable customers to quickly query for data along these relationships. Customers can also enforce referential integrity using Typed Links, ensuring data in use is not inadvertently deleted. - -## 2.58.0 -* feature: AppStream: Support added for persistent user storage, backed by S3. -* feature: Rekognition: Updated the CompareFaces API response to include orientation information, unmatched faces, landmarks, pose, and quality of the compared faces. - -## 2.57.0 -* feature: IAM: The unique ID and access key lengths were extended from 32 to 128 -* feature: STS: The unique ID and access key lengths were extended from 32 to 128. -* feature: StorageGateway: Two Storage Gateway data types, Tape and TapeArchive, each have a new response element, TapeUsedInBytes. This element helps you manage your virtual tapes. By using TapeUsedInBytes, you can see the amount of data written to each virtual tape. - -## 2.56.0 -* feature: DMS: This release adds support for using Amazon S3 and Amazon DynamoDB as targets for database migration, and using MongoDB as a source for database migration. For more information, see the AWS Database Migration Service documentation. - -## 2.55.0 -* bugfix: ReactNative: Requests will always have a Content-Type header if they also have a body. Works around an issue caused by React Native's Android XMLHttpRequest implementation that requires the Content-Type header to be present if there is a request body. -* feature: ResourceGroupsTaggingAPI: You can now specify the number of resources returned per page in GetResources operation, as an optional parameter, to easily manage the list of resources returned by your queries. - -## 2.54.0 -* feature: Athena: This release adds support for Amazon Athena. Amazon Athena is an interactive query service that makes it easy to analyze data in Amazon S3 using standard SQL. Athena is serverless, so there is no infrastructure to manage, and you pay only for the queries that you run. -* feature: Lightsail: This release adds new APIs that make it easier to set network port configurations on Lightsail instances. Developers can now make a single request to both open and close public ports on an instance using the PutInstancePublicPorts operation. - -## 2.53.0 -* feature: Polly: Amazon Polly adds new German voice "Vicki" - -## 2.52.0 -* feature: CodeDeploy: This release introduces the previousRevision field in the responses to the GetDeployment and BatchGetDeployments actions. previousRevision provides information about the application revision that was deployed to the deployment group before the most recent successful deployment. Also, the fileExistsBehavior parameter has been added for CreateDeployment action requests. In the past, if the AWS CodeDeploy agent detected files in a target location that weren't part of the application revision from the most recent successful deployment, it would fail the current deployment by default. This new parameter provides options for how the agent handles these files: fail the deployment, retain the content, or overwrite the content. -* feature: GameLift: Allow developers to specify how metrics are grouped in CloudWatch for their GameLift fleets. Developers can also specify how many concurrent game sessions activate on a per-instance basis. -* feature: Inspector: Adds ability to produce an assessment report that includes detailed and comprehensive results of a specified assessment run. - -## 2.51.0 -* feature: SSM: UpdateAssociation API now supports updating document name and targets of an association. GetAutomationExecution API can return FailureDetails as an optional field to the StepExecution Object, which contains failure type, failure stage as well as other failure related information for a failed step. - -## 2.50.0 -* bugfix: ReactNative: Fixes issue where binary responses were empty in iOS (e.g. s3.getObject) -* feature: ELB: Add a new API to allow customers to describe their account limits, such as load balancer limit, target group limit etc. -* feature: ELBv2: Add a new API to allow customers to describe their account limits, such as load balancer limit, target group limit etc. -* feature: LexModelBuildingService: Releasing new DeleteBotVersion, DeleteIntentVersion and DeleteSlotTypeVersion APIs. -* feature: Organizations: AWS Organizations APIs that return an Account object now include the email address associated with the account’s root user. -* bugfix: Request: Updates node.js request handling to obey socket read timeouts after response headers have been received. Previously timeouts were being ignored once headers were received, sometimes causing connections to hang. - -## 2.49.0 -* feature: ECS: Exposes container instance registration time in ECS:DescribeContainerInstances. -* feature: Lambda: Support for UpdateFunctionCode DryRun option -* feature: MarketplaceEntitlementService: AWS Marketplace Entitlement Service enables AWS Marketplace sellers to determine the capacity purchased by their customers. - -## 2.48.0 -* feature: CloudFormation: Adding back the removed waiters and paginators. - -## 2.47.0 -* feature: CloudFormation: API update for CloudFormation: New optional parameter ClientRequestToken which can be used as an idempotency token to safely retry certain operations as well as tagging StackEvents. -* feature: RDS: The DescribeDBClusterSnapshots API now returns a SourceDBClusterSnapshotArn field which identifies the source DB cluster snapshot of a copied snapshot. -* feature: React Native: Adds support for running the SDK in React Native. See the README for instructions. -* feature: Rekognition: Fix for missing file type check -* feature: SQS: Adding server-side encryption (SSE) support to SQS by integrating with AWS KMS; adding new queue attributes to SQS CreateQueue, SetQueueAttributes and GetQueueAttributes APIs to support SSE. -* feature: Snowball: The Snowball API has a new exception that can be thrown for list operation requests. - -## 2.46.0 -* bugfix: SharedIniFileCredentials: This fix reverts a regression introduced in version 2.44.0 in which the value returned by os.homedir would be used in preference over the value of the HOME environment variable -* feature: RDS: With Amazon Relational Database Service (Amazon RDS) running MySQL or Amazon Aurora, you can now authenticate to your DB instance using IAM database authentication. -* feature: RDS: Adds AWS.RDS.Signer class to generate auth tokens for connecting to a database. - -## 2.45.0 -* bugfix: Promise: Fixes an issue introduced in v2.44.0 where payload members on some CloudFront and S3 operations weren't hoisted when using promises. This issue was introduced in and could affect users that were accessing fields on a response that weren't documented, but were available for backwards compatibility. -* bugfix: Request: Make `$response` property of resolved promise value non-enumerable to prevent serialization errors -* feature: AppStream: The new feature named "Default Internet Access" will enable Internet access from AppStream 2.0 instances - image builders and fleet instances. Admins will check a flag either through AWS management console for AppStream 2.0 or through API while creating an image builder or while creating/updating a fleet. -* feature: Kinesis: Adds a new waiter, StreamNotExists, to Kinesis. - -## 2.44.0 -* feature: DeviceFarm: API Update for AWS Device Farm: Support for Deals and Promotions -* feature: ELBv2: Adding LoadBalancersDeleted waiter for Elasticloadbalancingv2 -* feature: EnvironmentVariable: Load config from ~/.aws/config if AWS_SDK_LOAD_CONFIG is set -* feature: EnvironmentVariable: Add support for specifying the location of the shared config file via the AWS_CONFIG_FILE environment variable. This variable is only honored if AWS_SDK_LOAD_CONFIG is set to a truthy value. -* feature: EnvironmentVariable: Add support for the AWS_SHARED_CREDENTIALS_FILE environment variable if AWS_SDK_LOAD_CONFIG is set -* feature: Promises: Binds response object to the data object with which successful request promises are resolved - -## 2.43.0 -* feature: APIGateway: Add support for "embed" property. -* feature: CodeStar: AWS CodeStar is a cloud-based service for creating, managing, and working with software development projects on AWS. An AWS CodeStar project creates and integrates AWS services for your project development toolchain. AWS CodeStar also manages the permissions required for project users. -* feature: EC2: Adds support for creating an Amazon FPGA Image (AFI) from a specified design checkpoint (DCP). -* feature: IAM: This changes introduces a new IAM role type, Service Linked Role, which works like a normal role but must be managed via services' control. -* feature: Lambda: Lambda integration with CloudDebugger service to enable customers to enable tracing for the Lambda functions and send trace information to the CloudDebugger service. -* feature: LexModelBuildingService: Amazon Lex is a service for building conversational interfaces into any application using voice and text. -* feature: Polly: API Update for Amazon Polly: Add support for speech marks -* feature: Rekognition: Given an image, the API detects explicit or suggestive adult content in the image and returns a list of corresponding labels with confidence scores, as well as a taxonomy (parent-child relation) for each label. - -## 2.42.0 -* bugfix: Parser: Makes casting payload blobs to strings an exceptional behavior rather than the default -* feature: Lambda: You can use tags to group and filter your Lambda functions, making it easier to analyze them for billing allocation purposes. For more information, see Tagging Lambda Functions. You can now write or upgrade your Lambda functions using Python version 3.6. For more information, see Programming Model for Authoring Lambda Functions in Python. Note: Features will be rolled out in the US regions on 4/19. - -## 2.41.0 -* feature: APIGateway: API Gateway request validators -* feature: Batch: API Update for AWS Batch: Customer provided AMI for MANAGED Compute Environment -* feature: GameLift: Allows developers to utilize an improved workflow when calling our Queues API and introduces a new feature that allows developers to specify a maximum allowable latency per Queue. -* feature: OpsWorks: Cloudwatch Logs agent configuration can now be attached to OpsWorks Layers using CreateLayer and UpdateLayer. OpsWorks will then automatically install and manage the CloudWatch Logs agent on the instances part of the OpsWorks Layer. - -## 2.40.0 -* feature: Redshift: This update adds the GetClusterCredentials API which is used to get temporary login credentials to the cluster. AccountWithRestoreAccess now has a new member AccountAlias, this is the identifier of the AWS support account authorized to restore the specified snapshot. This is added to support the feature where the customer can share their snapshot with the Amazon Redshift Support Account without having to manually specify the AWS Redshift Service account ID on the AWS Console/API. - -## 2.39.0 -* feature: ElastiCache: ElastiCache added support for testing the Elasticache Multi-AZ feature with Automatic Failover. -* feature: Http: Adds a connectTimeout option that allows slow-to-establish socket connections to be quickly abandoned - -## 2.38.0 -* feature: CloudWatch: Amazon Web Services announced the immediate availability of two additional alarm configuration rules for Amazon CloudWatch Alarms. The first rule is for configuring missing data treatment. Customers have the options to treat missing data as alarm threshold breached, alarm threshold not breached, maintain alarm state and the current default treatment. The second rule is for alarms based on percentiles metrics that can trigger unnecassarily if the percentile is calculated from a small number of samples. The new rule can treat percentiles with low sample counts as same as missing data. If the first rule is enabled, the same treatment will be applied when an alarm encounters a percentile with low sample counts. - -## 2.37.0 -* feature: LexRuntime: Adds support to PostContent for speech input - -## 2.36.0 -* feature: CloudDirectory: ListObjectAttributes now supports filtering by facet. - -## 2.35.0 -* feature: CloudFormation: Adding paginators for ListExports and ListImports -* feature: CloudFront: Amazon CloudFront now supports user configurable HTTP Read and Keep-Alive Idle Timeouts for your Custom Origin Servers -* feature: ResourceGroupsTaggingAPI: Resource Groups Tagging APIs can help you organize your resources and enable you to simplify resource management, access management, and cost allocation. -* feature: StorageGateway: File gateway mode in AWS Storage gateway provides access to objects in S3 as files on a Network File System (NFS) mount point. Once a file share is created, any changes made externally to the S3 bucket will not be reflected by the gateway. Using the cache refresh feature in this update, the customer can trigger an on-demand scan of the keys in their S3 bucket and refresh the file namespace cached on the gateway. It takes as an input the fileShare ARN and refreshes the cache for only that file share. Additionally there is new functionality on file gateway that allows you configure what squash options they would like on their file share, this allows a customer to configure their gateway to not squash root permissions. This can be done by setting options in NfsOptions for CreateNfsFileShare and UpdateNfsFileShare APIs. - -## 2.34.0 -* features: Batch: Customers can now provide a retryStrategy as part of the RegisterJobDefinition and SubmitJob API calls. -* features: EC2: Customers can now tag their Amazon EC2 Instances and Amazon EBS Volumes at the time of their creation. - -## 2.33.0 -* feature: core: Adds support for 'v4' and 'v4-unsigned-body' authtype traits. -* bugfix: ManagedUpload: Ensures multi-part upload locations are URI-decoded to match single-part upload locations. - -## 2.32.0 -* feature: S3: Adds a means of specifying tags to apply to objects of any size uploaded with AWS.S3.ManagedUploader -* feature: ApplicationAutoScaling: Application AutoScaling is launching support for a new target resource (AppStream 2.0 Fleets) as a scalable target. - -## 2.31.0 -* feature: DynamoDB: Adds ability to customize retry delays for DynamoDB. This previously worked for all services except DynamoDB. Also adds jitter to DynamoDB retries. See `AWS.Config.retryDelayOptions` for more information. -* feature: Waiter: Allow customization of a waiter using a special `$waiter` key -* feature: Lambda: Adds support for new runtime Node.js v6.10 for AWS Lambda service. :tada: -* feature: ELBv2: Adding waiters for Elastic Load Balancing V2 -* feature: Discovery: Adds export configuration options to the API. - -## 2.30.0 -* feature: DynamoDb: Allow objects with inheritance chains to be converted to MapAttributeValues instead of undefined -* bugfix: CredentialsError: Update AWS.Config.getCredentials to overwrite the name (in addition to message and code) of errors thrown by underlying credential providers. - -## 2.29.0 -* feature: protocol: The SDK can now support JSON-value string shapes in headers -* feature: Pinpoint: Added ability to segment endpoints by user attributes in addition to endpoint attributes. -* feature: Pinpoint: Added functionality to publish raw app analytics and campaign events data as events streams to Kinesis and Kinesis Firehose. -* feature: ELBv2: Adding waiters for LoadBalancers in ELBv2. -* feature: MarketplaceCommerceAnalytics: This update adds a new data set, us_sales_and_use_tax_records, which enables AWS Marketplace sellers to programmatically access to their U.S. Sales and Use Tax report data. - -## 2.28.0 -* feature: DeviceFarm: Network shaping allows users to simulate network connections and conditions while testing their Android, iOS, and web apps with AWS Device Farm. -* feature: CloudWatchEvents: This update extends Target Data Type for configuring Target behavior during invocation. - -## 2.27.0 -* bugfix: TemporaryCredentials: Ensure master credentials are not expired before using them to refresh temporary credentials -* feature: CodeDeploy: Add paginators for Codedeploy -* feature: EMR: This release includes support for instance fleets in Amazon EMR - -## 2.26.0 -* feature: APIGateway: API Gateway has added support for ACM certificates on custom domain names. Both Amazon-issued certificates and uploaded third-part certificates are supported. -* feature: CloudDirectory: Introduces a new Cloud Directory API that enables you to retrieve all available parent paths for any type of object (a node, leaf node, policy node, and index node) in a hierarchy. - -## 2.25.0 -* feature: WorkDocs: Amazon WorkDocs API provides full administrator level access to WorkDocs site resources, allowing developers to integrate their applications to manage WorkDocs users, content and permissions programmatically. - -## 2.24.0 -* feature: RDS: Add support to using encrypted clusters as cross-region replication masters. Update CopyDBClusterSnapshot API to support encrypted cross region copy of Aurora cluster snapshots. - -## 2.23.0 -* feature: Budgets: When creating or editing a budget via the AWS Budgets API you can define notifications that are sent to subscribers when the actual or forecasted value for cost or usage exceeds the notificationThreshold associated with the budget notification object. Starting today, the maximum allowed value for the notificationThreshold was raised from 100 to 300. This change was made to give you more flexibility when setting budget notifications. -* feature: OpsWorksCM: OpsWorks for Chef Automate has added a new field "AssociatePublicIpAddress" to the CreateServer request, "CloudFormationStackArn" to the Server model and "TERMINATED" server state. - -## 2.22.0 -* bugfix: MechanicalTurkRequester: Rename MechanicalTurkRequester to MTurk - -## 2.21.0 -* feature: DynamoDB: Time to Live (TTL) is a feature that allows you to define when items in a table expire and can be purged from the database, so that you don't have to track expired data and delete it manually. With TTL enabled on a DynamoDB table, you can set a timestamp for deletion on a per-item basis, allowing you to limit storage usage to only those records that are relevant. -* feature: DynamoDBStreams: Time to Live (TTL) is a feature that allows you to define when items in a table expire and can be purged from the database, so that you don't have to track expired data and delete it manually. With TTL enabled on a DynamoDB table, you can set a timestamp for deletion on a per-item basis, allowing you to limit storage usage to only those records that are relevant. -* feature: IAM: This release adds support for AWS Organizations service control policies (SCPs) to SimulatePrincipalPolicy operation. If there are SCPs associated with the simulated user's account, their effect on the result is captured in the OrganizationDecisionDetail element in the EvaluationResult. -* feature: MechanicalTurkRequester: Amazon Mechanical Turk is a web service that provides an on-demand, scalable, human workforce to complete jobs that humans can do better than computers, for example, recognizing objects in photos. -* feature: Organizations: AWS Organizations is a web service that enables you to consolidate your multiple AWS accounts into an organization and centrally manage your accounts and their resources. - -## 2.20.0 -* feature: ES: Added three new API calls to expose Amazon Elasticsearch imposed limits. - -## 2.19.0 -* bugfix: XHR: Fixes an issue where the callback provided to an operation would not fire if a request was aborted after being sent. The bug only affected the browser SDK. -* feature: S3: Added an instance method to S3 clients to create POST form data with presigned upload policies -* feature: DynamoDB: Expose DynamoDB DocumentClient marshaller/unmarshaller as AWS.DynamoDB.Converter - -## 2.18.0 -* feature: GameLift: Allow developers to configure global queues for creating GameSessions. Allow PlayerData on PlayerSessions to store player-specific data. -* feature: Route53: Added support for operations CreateVPCAssociationAuthorization and DeleteVPCAssociationAuthorization to throw a ConcurrentModification error when a conflicting modification occurs in parallel to the authorizations in place for a given hosted zone. -* feature: ElasticBeanstalk: Elastic Beanstalk adds support for creating and managing custom platform. - -## 2.17.0 -* bugfix: TypeScript: Enable the configuration credentials to be nulled so that the global config is not used. -* feature: EC2: Added the billingProduct parameter to the RegisterImage API. - -## 2.16.0 -* feature: DirectConnect: This update will introduce the ability for Direct Connect customers to take advantage of Link Aggregation (LAG). This allows you to bundle many individual physical interfaces into a single logical interface, referred to as a LAG. This makes administration much simpler as the majority of configuration is done on the LAG while you are free to add or remove physical interfaces from the bundle as bandwidth demand increases or decreases. A concrete example of the simplification added by LAG is that customers need only a single BGP session as opposed to one session per physical connection. - -## 2.15.0 -* feature: CognitoIdentity: Allows createIdentityPool and updateIdentityPool API to set server side token check value on identity pool. -* feature: ConfigService: AWS Config now supports a new test mode for the PutEvaluations API. Set the TestMode parameter to true in your custom rule to verify whether your AWS Lambda function will deliver evaluation results to AWS Config. No updates occur to your existing evaluations, and evaluation results are not sent to AWS Config. - -## 2.14.0 -* feature: KMS: This release of AWS Key Management Service introduces the ability to tag keys. Tagging keys can help you organize your keys and track your KMS costs in the cost allocation report. This release also increases the maximum length of a key ID to accommodate ARNs that include a long key alias. - -## 2.13.0 -* feature: Ec2: Adds support for the new Modify Volumes apis. - -## 2.12.0 -* feature: StorageGateway: File gateway mode in AWS Storage gateway provides access to objects in S3 as files on a Network File System (NFS) mount point. This is done by creating Nfs file shares using existing APIs CreateNfsFileShare. Using the feature in this update, the customer can restrict the clients that have read/write access to the gateway by specifying the list of clients as a list of IP addresses or CIDR blocks. This list can be specified using the API CreateNfsFileShare while creating new file shares, or UpdateNfsFileShare while update existing file shares. To find out the list of clients that have access, the existing API DescribeNfsFileShare will now output the list of clients that have access. - -## 2.11.0 -* bugfix: TypeScript: Add `endpoint` property to AWS.S3 instance declaration. -* feature: EC2: This feature allows customers to associate an IAM profile to running instances that do not have any. -* feature: Rekognition: DetectFaces and IndexFaces operations now return an estimate of the age of the face as an age range. - -## 2.10.0 -* bugfix: JSON: Fixes issue caused when trying to unmarshall null binary shapes. -* bugfix: TypeScript: Add `credentialProvider` as an optional parameter of `ConfigurationOptions`. -* feature: LexRuntime: Amazon Lex is a service for building conversational interactions into any application using voice or text. - -## 2.9.0 -* feature: EC2: Adds instance health check functionality to replace unhealthy EC2 Spot fleet instances with fresh ones -* feature: CloudDirectory: Amazon Cloud Directory is a highly scalable, high performance, multi-tenant directory service in the cloud. Its web-based directories make it easy for you to organize and manage application resources such as users, groups, locations, devices, policies, and the rich relationships between them. -* feature: CodeDeploy: This release of AWS CodeDeploy introduces support for blue/green deployments. In a blue/green deployment, the current set of instances in a deployment group is replaced by new instances that have the latest application revision installed on them. After traffic is rerouted behind a load balancer to the replacement instances, the original instances can be terminated automatically or kept running for other uses. -* feature: RDS: Added support for the `ModifyDBSnapshot` and `ModifyDBSnapshotMessage` operations - -## 2.8.0 -* bugfix: RDS: Fixes issue wherein the wrong parameter name was used for cross region presigned urls. -* feature: ELBv2: Application Load Balancers now support native Internet Protocol version 6 (IPv6) in an Amazon Virtual Private Cloud (VPC). With this ability, clients can now connect to the Application Load Balancer in a dual-stack mode via either IPv4 or IPv6. -* feature: RDS: Adds cross region read replica copying. - -## 2.7.28 -* feature: CognitoIdentityCredentials: Adds `clientConfig` as an optional parameter to the `CognitoIdentityCredentials` constructor. This parameter can be used to pass in client configuration to the underlying service clients. -* feature: TemporaryCredentials: Allows passing of master credentials to the TemporaryCredentials provider. -* feature: CodeCommit: Added new API to list the different files between 2 commits -* feature: ECS: Amazon ECS now supports a state for container instances that can be used to drain a container instance in preparation for maintenance or cluster scale down. - -## 2.7.27 -* bugfix: Performance: This change reverts a request body cast in the node HTTP handler that caused a performance regression. -* feature: ACM: Updated response elements for DescribeCertificate API in support of managed renewal. - -## 2.7.26 -* feature: EC2: Amazon EC2 Spot instances now support dedicated tenancy, providing the ability to run Spot instances single-tenant manner on physically isolated hardware within a VPC to satisfy security, privacy, or other compliance requirements. Dedicated Spot instances can be requested using RequestSpotInstances and RequestSpotFleet. - -## 2.7.25 -* feature: RDS: Updates AWS.RDS API to the latest version. - -## 2.7.24 -* bugfix: HTTP: Ensure that buffers are not created with Buffer.from in node 4.0-4.4 -* bugfix: core: Deprecate v2.7.23 - -## 2.7.23 -* bugfix: S3: Convert string bodies to buffers to ensure correct encoding is used -* feature: DynamoDB: Adds support for tagging tables and indexes. - -## 2.7.22 -* feature: CUR: The AWS Cost and Usage Report Service API allows you to enable and disable the Cost & Usage report, as well as modify the report name, the data granularity, and the delivery preferences. -* bugfix: DynamoDB.DocumentClient: Allows objects created using Object.create(null) to be properly serialized by the DDB document client. - -## 2.7.21 -* feature: ConfigService: Updates putConfigRule to support using/writing rules based on the OversizedConfigurationItemChangeNotification message type. -* feature: MarketplaceCommerceAnalytics: Added support for data set disbursed_amount_by_instance_hours, with historical data available starting 2012-09-04. New data is published to this data set every 30 days. -* bugfix: DynamoDB.DocumentClient: Fixes issue where empty strings in nested members were not removed when convertEmptyValues was set. -* bugfix: CognitoIdentityCredentials: Fixes issue where the cached identity id would sometimes not be retrieved when SDK is run while offline. - -## 2.7.20 -* feature: CodeDeploy: CodeDeploy supports IAM Session Arns in addition to IAM User Arns for on premise host authentication. -* feature: ECS: Amazon EC2 Container Service (ECS) now supports the ability to customize the placement of tasks on container instances. - -## 2.7.19 -* feature: APIGateway: This update introduces two new operations used to dynamically discover SDK types and what configuration each type accepts. -* feature: ElasticBeanstalk: Adds a new feature for managing Application Version Lifecycle. -* feature: IAM: Adds service-specific credentials to IAM service to make it easier to onboard CodeCommit customers. These are username/password credentials that work with a single service. - -## 2.7.18 -* feature: Rekognition: CORS support added. Now a default service in the browser build of the JavaScript SDK. -* feature: EC2: Adds cross region encrypted snapshot copying (CopyDBSnapshot). -* feature: ECR: Amazon ECR now implements Docker Image Manifest V2, Schema 2 providing the ability to use multiple tags per image, support for storing Windows container images, and compatibility with the Open Container Initiative (OCI) image format. With this update, customers can also add tags to an image via PutImage and delete tags using BatchDeleteImage. - -## 2.7.17 -* bugfix: Promises: Fixes issue introduced in v2.6.12. Calling AWS.config.setPromisesDependency(null) will once again force the SDK to use native promises if they are available. -* feature: Firehose: The processing feature enables users to process and modify records before Amazon Firehose delivers them to destinations. -* feature: StorageGateway: File gateway is a new mode in the AWS Storage Gateway that support a file interface into S3, alongside the current block-based volume and VTL storage. File gateway combines a service and virtual software appliance, enabling you to store and retrieve objects in Amazon S3 using industry standard file protocols such as NFS. The software appliance, or gateway, is deployed into your on-premises environment as a virtual machine (VM) running on VMware ESXi. The gateway provides access to objects in S3 as files on a Network File System (NFS) mount point. - -## 2.7.16 -* feature: DocumentClient: Add a constructor option to convert empty strings, sets, and binary strings to a Dynamo NULL typed field -* feature: Discovery: Adds new APIs to group discovered servers into Applications with get summary and neighbors. Includes additional filters for ListConfigurations and DescribeAgents API. -* feature: CognitoIdentity: Added fine-grained role-based access control for Cognito identity pools. Developers can configure an identity pool to get the IAM role from an authenticated user's token, or they can configure rules that will map a user to a different role - -## 2.7.15 -* bugfix: Buffer: Update base64 encode/decode to use Buffer.fill when available and throw an error if a number is provided. -* bugfix: XRay: Add X-Amzn-Trace-Id to list of unsigned headers to prevent signature mismatch errors if the header value is modified while the request is in flight. -* feature: Cognito: Add new regions and endpoints for Amazon Cognito Identity, Amazon Cognito Sync, and Amazon Cognito Identity Provider. -* feature: CognitoIdentityServiceProvider: User Pools now offers groups as an easy way to manage users and their permissions. -* feature: SSM: Add support for Patch Baseline and Patch Compliance APIs - -## 2.7.14 -* feature: Batch: AWS Batch is a batch computing service that lets customers define queues and compute environments and then submit work as batch jobs. -* feature: DMS: Adds support for SSL enabled Oracle endpoints and task modification. -* feature: CloudWatchLogs: Amazon CloudWatch announces detailed billing to CloudWatch Logs. You can now get usage and cost per log group. You can also add tags on your log groups to get a fine-grained view on cost for logs across business dimension such as cost center, application name, AWS services such as Lambda, CloudTrail, ECS, and other. Up to 50 tags can be added to each log group. - -## 2.7.13 -* feature: CloudFront: Add lambda function associations to cache behaviors. -* feature: RDS: Add cluster create data to DBCluster APIs. -* feature: WAFRegional: With this new feature, customers can use AWS WAF directly on Application Load Balancers in a VPC within available regions to protect their websites and web services from malicious attacks such as SQL injection, Cross Site Scripting, bad bots, etc. - -## 2.7.12 -* feature: S3: Add the Version ID field to the Get and Put object tagging operations. - -## 2.7.11 -* bugfix: TypeScript: Exposes typings for classes that live on service namespaces (i.e. DynamoDB.DocumentClient). Also exposes interfaces off of service namespaces to allow easier migration from some 3rd party typings. Interfaces will continue to be exposed via Service.Types as well. -* bugfix: TypeScript: Removes remaining `reference` comments from definitions. -* feature: ConfigService: Increases the number of config rules for all accounts from 25 to 50. -* feature: EC2: Adds T2.xlarge, T2.2xlarge, and R4 instance types. - -## 2.7.10 -* feature: APIGateway: You can now publish your APIs on Amazon API Gateway as products on the AWS Marketplace. Use the SDK to associate your APIs on API Gateway with Marketplace Product Codes. API Gateway will then send metering data to the Marketplace Metering Service on your behalf. Also, API Gateway now supports documenting your API. -* feature: Appstream: Announcing Amazon AppStream 2.0 - a secure, fully managed desktop application streaming service that provides users instant access to their apps from a web browser. -* feature: CodeBuild: AWS CodeBuild is a fully-managed build service in the cloud. CodeBuild compiles source code, runs tests, and produces packages that are ready to deploy. CodeBuild eliminates the need to provision, manage, and scale your own build servers. CodeBuild scales continuously and processes multiple builds concurrently, so your builds are never waiting in a queue. You can get started quickly with CodeBuild’s prepackaged build environments, or you can use custom build environments to use your own build tools. With CodeBuild, you only pay by the minute. -* feature: DirectConnect: API Update for IPv6 for Direct Connect. -* feature: EC2: Adds IPv6 Support for EC2 and new F1 Instance types. -* feature: ElasticBeanstalk: Integrates AWS CodeBuild into ElasticBeanstalk. -* feature: Health: When your business is counting on the performance of your cloud solutions, having relevant and timely insights into events impacting your AWS resources is essential. The AWS Health API serves as the primary source for you to receive personalized information related to your AWS infrastructure, guiding your through scheduled changes, and accelerating the troubleshooting of issues impacting your AWS resources and accounts. At launch, the APIs will be available to Business and Enterprise Support customers. -* feature: Lambda: Adds new API `getAccountSettings`, dotnetcore 1.0 runtime support, DeadLetterConfig, and event source mappings with kinesis streams. -* feature: OpsWorksCM: AWS OpsWorks for Chef Automate gives customers a single tenant Chef Automate server. The Chef Automate server is fully managed by AWS and supports automatic backup, restore and upgrade operations. -* feature: Pinpoint: Amazon Pinpoint makes it easy to run targeted campaigns to improve user engagement. Pinpoint helps you understand your users behavior, define who to target, what messages to send, when to deliver them, and tracks the results of the campaign. -* feature: Shield: AWS Shield is a managed Distributed Denial of Service (DDoS) protection for web applications running on AWS. -* feature: SSM: Amazon EC2 Systems Manager is a flexible and easy to use management service that enables enterprises to securely manage and administer their workloads running on-premises or in the AWS cloud, using a single unified experience. These tasks include collecting system inventory, AWSmaintaining consistent state, ad hoc remote execution, automating imaging creation, applying OS patches, and managing configuration parameters. -* feature: StepFunctions: Adds support for the AWS Step Functions API. -* feature: XRay: AWS X-Ray helps developers analyze and debug distributed applications. With X-Ray, you can understand how your application and its underlying services are performing to identify and troubleshoot the root cause of performance issues and errors. - -## 2.7.9 -* feature: Polly: Adds `AWS.Polly.Presigner` to create presigned urls for `synthesizeSpeech`. -* feature: Polly: Amazon Polly is a service that turns text into lifelike speech, making it easy to develop applications that use high-quality speech to increase engagement and accessibility. With Amazon Polly the developers can build speech-enabled apps that work in multiple geographies. -* feature: Lightsail: An extremely simplified VM creation and management service. -* feature: Rekognition: Amazon Rekognition is a service that makes it easy to add image analysis to your applications. With Rekognition, you can detect objects, scenes, and faces in images. You can also search and compare faces. Rekognition’s API enables you to quickly add sophisticated deep learning-based visual search and image classification to your applications. -* feature: Snowball: This release of AWS Snowball introduces a new job type, new APIs, and the new AWS Snowball Edge device to support local compute and storage use cases. The local compute is AWS Lambda powered by AWS Greengrass, and the local storage is compatible with Amazon S3. Each 100 TB Snowball Edge can use the storage and compute power of the AWS cloud locally in places where connecting to the internet may not be an option. Additionally, Snowball Edges can be used in clusters for applications that require greater data durability. - -## 2.7.8 -* feature: core: The SDK will now automatically provide a version 4 UUID for top-level operation parameters that are modeled with the `idempotencyToken` flag. Users may continue to provide their own tokens. -* feature: S3: Updates the AWS.S3 API to the latest version. - -## 2.7.7 -* feature: CloudFormation: List-imports API is to list all stacks of user's namespace that are using a specific output. -* feature: Glacier: Allow customers to retrieve their data with different tiers. -* feature: Route53: Expand current IPAddress field to accept IPv6 address. -* feature: S3: Allow customers to specify different restore tiers when accessing their data. - -## 2.7.6 -* feature: CloudTrail: This release of AWS CloudTrail supports configuring your trail with event selectors. Use event selectors to specify the type of events that you want your trails to log. You can configure event selectors to log read-only, write-only, or all events. CloudTrail supports logging Amazon S3 object level APIs such as GetObject, DeleteObject, and PutObject. You can configure event selectors for your trail to log object level operations. -* feature: ECS: ECS will include a new field named `version` in API responses relating to tasks and container instances. Version is a number that increments every time a change has been made to the associated resource. Users replicating their ECS resource state can use the version field reported by the ECS APIs to determine if their local state is fresh. - -## 2.7.5 -* bugfix: TypeScript: Stubs DOM interfaces and removes type reference to node. -* feature: ElasticTranscoder: Support for multiple media input files that can be stitched together. -* feature: Lambda: Adds support for Environment variables. -* feature: Gamelift: Provide the ability to remote access into GameLift managed servers. -* feature: EMR: Automatic Scaling of EMR clusters based on metrics. Adds support for cancelling a pending Amazon EMR step. -* feature: ApplicationAutoScaling: Adds support for a new target resource (EMR Instance Groups) as a scalable target. - -## 2.7.4 -* feature: MarketplaceMetering: Allows third parties to send metering records. -* feature: SQS: Updates the latest version of the SQS API. -* feature: CloudWatch: Amazon CloudWatch now supports Percentiles as a statistical function. -* feature: APIGateway: Allows defining an encoding for the API per content type in order to support 'binary' use case. - -## 2.7.3 -* feature: Route53: Adds support for cross account VPC association. -* feature: ServiceCatalog: This release enables Service Catalog users to perform administer operations via API. - -## 2.7.2 -* feature: ElastiCache: Additional parameter to 2 create apis to provide an auth Token for Redis. -* feature: DirectoryService: Adds support for SchemaExtensions. -* feature: Kinesis: Adds DescribeLimits API which displays customer's current shard limit and the number of open shards that are being used. Also adds a 'display stream creation timestamp' feature to DescribeStream API. - -## 2.7.1 -* feature: CognitoIdentityServiceProvider: Adds schema attributes to CreateUserPool. -* bugfix: TypeScript: Updates definitions to work when `noImplicitAny` and `strictNullChecks` are set to `true`. - -## 2.7.0 -* feature: TypeScript: Adds typescript definition files to the SDK. -* feature: CloudWatchLogs: Amazon CloudWatch Metrics to Logs is a capability that helps pivot from your logs-extracted metrics directly to the corresponding logs. - -## 2.6.15 -* feature: DirectConnect: AWS Direct Connect provides three new APIs to support basic tagging on Direct Connect resources. - -## 2.6.14 -* feature: SES: Amazon Simple Email Service (Amazon SES) now enables you to track your bounce, complaint, delivery, sent, and rejected email metrics with fine-grained granularity. - -## 2.6.13 -* feature: CloudFormation: Adding ResourcesToSkip parameter to ContinueUpdateRollback API, adding support for ListExports, new ChangeSet types and Transforms. - -## 2.6.12 -* feature: CredentialProviderChain: Adds promise support for the `resolve` method on the AWS.CredentialProviderChain class. Corresponding promise method is called `resolvePromise`. -* feature: Credentials: Adds promise support for the `get` and `refresh` methods of the AWS.Credentials class. Corresponding promise methods are called `getPromise` and `refreshPromise`. -* feature: ManagedUpload: Adds promise support for S3.ManagedUpload. Calling `s3.upload(params).promise()` will return a promise. -* feature: SMS: AWS Server Migration Service (SMS) is an agentless service which makes it easier and faster for you to migrate thousands of on-premises workloads to AWS. AWS SMS allows you to automate, schedule, and track incremental replications of live server volumes, making it easier for you to coordinate large-scale server migrations. - -## 2.6.11 -* feature: Budgets: Adds the AWS Budgets service API via AWS.Budgets. - -## 2.6.10 -* feature: CloudFront: Ability to use Amazon CloudFront to deliver your content both via IPv6 and IPv4 using HTTP/HTTPS. -* feature: IoT: Updates IoT API to the latest available version. -* feature: RDS: Updates RDS to support accessing other AWS services by gassociating an IAM role with necessary permissions to your DB cluster. - -## 2.6.9 -* bugfix: s3: Propagate an error from a stream to s3.upload callback #1169 -* feature: S3: Adds support for using dualstack with accelerate endpoints. -* feature: ACM: This change allows users to import third-party SSL/TLS certificates into ACM. -* feature: ElasticBeanstalk: Adds CodeCommit integraion. DescribeApplicationVersions updated to support pagination. -* feature: GameLift: New APIs to protect game developer resource (builds, alias, fleets, instances, game sessions and player sessions) against abuse. - -## 2.6.8 -* feature: ECR: DescribeImages is a new api used to expose image metadata which today includes image size and image creation timestamp. -* feature: ElastiCache: Elasticache is launching a new major engine release of Redis, 3.2 (providing stability updates and new command sets over 2.8), as well as ElasticSupport for enabling Redis Cluster in 3.2, which provides support for multiple node groups to horizontally scale data, as well as superior engine failover capabilities. - -## 2.6.7 -* feature: CognitoIdentityServiceProvider: Added new operation "AdminCreateUser" that creates a new user in the specified user pool and sends a welcome message via email or phone (SMS). -* feature: Route53: Retries PriorRequestNotComplete errors. - -## 2.6.6 -* feature: EC2: Adding support for EC2 Convertible RIs and the EC2 RI regional benefit. -* feature: S3: S3 API update with partNumber extension and a bug fix to address list-objects command failing when a bucket is marked with request-pays. - -## 2.6.5 -* bugfix: apiVersion: Fixes an issue where some service clients would fail to instantiate if an older apiVersion was specified. -* feature: CloudFormation: Adds support for specifying an IAM service role for CloudFormation stack operations. - -## 2.6.4 -* bugfix: Browser: Updates `url` and `querystring` dependencies to be controlled by the SDK instead of tools like browserify or webpack. -* bugfix: Config: Fixes an issue where specifying service-specific config on the global AWS.config object would fail if the service had not yet been instantiated. -* feature: CodeDeploy: AWS CodeDeploy now integrates with Amazon CloudWatch alarms, making it possible to stop a deployment if there is a change in the state of a specified alarm for a number of consecutive periods, as specified in the alarm threshold. AWS CodeDeploy also now supports automatically rolling back a deployment if certain conditions are met, such as a deployment failure or an activated alarm. -* feature: EMR: Added support for Security Configurations which can be used to enable encryption at-rest and in-transit for certain applications on Amazon EMR. -* feature: RDS: Provide local time zone support for AWS RDS SqlServer database instances. -* feature: Redshift: This release of Amazon Redshift introduces Enhanced VPC Routing. When you use Amazon Redshift Enhanced VPC Routing, Amazon Redshift forces all COPY and UNLOAD traffic between your cluster and your data repositories through your Amazon VPC. - -## 2.6.3 -* bugfix: Node_Https: Fixes an issue caused when https.globalAgent is set to false. -* feature: Iot: Updates registerCertificate operation, and allows users to specify cannedAcl for S3 action. -* feature: RDS: Updates describeDbCluster operation to allow specifying a ReaderEndpoint for accessing cluster readers. - -## 2.6.2 -* feature: ServiceCatalog: Updates the API for AWS.ServiceCatalog. - -## 2.6.1 -* bugfix: SDK: Fixes an issue that caused all services to be loaded into memory when requiring the SDK. This issue was introduced in version `2.6.0` of the SDK, and address #1124. - -## 2.6.0 -* feature: CloudFront: Adds HTTP2 support for Amazon CloudFront distributions. -* feature: MetadataService: Adds retry logic to the EC2 Metadata Service, so that EC2MetadataCredentials will retry TimeoutError. This retry logic is also added to ECSCredentials. Resolves #692 -* feature: ServiceCatalog: CORS support added. Now a default service in the browser build of the JavaScript SDK. -* feature: Tools: Adds support for bundling the SDK with webpack. Also adds support for creating node.js bundles using webpack or browserify. - -## 2.5.6 -* feature: RDS: Adds new operation describeSourceRegions to provide list of all the source region names and endpoints for any region. Source regions are the regions where current region can get a replica or copy a snapshot from. - -## 2.5.5 -* feature: CognitoIdentityServiceProvider: Adds support for bulk import of users. -* feature: GameLift: Adds Linux support. -* feature: Iot: Adds Iot as a default service in the browser distribution of the AWS SDK for JavaScript. -* feature: RDS: Adds information in response of describeOptionGroupOptions about options that conflict with each other. - -## 2.5.4 -* feature: CloudFront: CloudFront is adding a Querystring Whitelist Option. Customers will be able to choose to forward certain querystring keys instead of a.) all of them or b.) none of them. -* feature: CodePipeline: CodePiepline has introduced a new feature to return pipeline execution details. Execution details consists of source revisions that are running in the pipeline. Customers will be able to tell what source revisions that are running through the stages in pipeline by fetching execution details of each stage. -* feature: Route53: With this release, Route 53 will support the following new features: support for the NAPTR DNS record type, a new testDNSAnswer API which enables customers to send a test query against a specific name server using spoofed delegation nameserver, resolver, and ECS IPs, and support metric-based health check in ap-south-1 region. - -## 2.5.3 -* feature: RDS: Adds resource ARNs to Describe APIs. - -## 2.5.2 -* bugfix: Waiter: Fixes bug in `clusterDeleted` waiter for AWS.Redshift. -* feature: EC2: Adds new APIs supporting dedicated host reservations. Also adds new property to response of `describeSpotFleetRequests` to indicate the activity status of spot fleet requests. -* feature: Request: eachItem method stops iteration on returning false (like eachPage) -* feature: WorkSpaces: Adds new APIs to support the launch and management of WorkSpaces that are paid for and used by the hour. - -## 2.5.1 -* feature: ACM: Increase tagging limit from 10 to 50. -* feature: APIGateway: Amazon API Gateway now supports API usage plans. Usage plans allows you to easily manage and monetize your APIs for your API-based business. -* feature: ECS: Adds support for memory reservation and network mode on task definitions. Also adds splunk as a supported log driver. - -## 2.5.0 -* feature: AutoScaling: Adds 3 new APIs for ELB L7 integration: attachLoadBalancerTargetGroups, detachLoadBalancerTargetGroups, and describeLoadBalancerTargetGroups. -* feature: ECS: Adds ECS support for ELBv2. Supports Application Load Balancer target groups to enable dynamic ports and path-based routing. -* feature: ELBv2: Adds new backwards incompatible application load balancer API version. Application load balancers are a new load balancer that is now supported by the Elastic Load Balancing service. Application load balancers support HTTP/2, WebSockets, routing based on URL path, and routing to multiple ports on a single instance. -* feature: KMS: Adds support for importing customer-supplied cryptographic keys. New import key feature lets you import keys from your own key management infrastructure to KMS for greater control over generation and storage of keys and meeting compliance requirements of sensitive workloads. -* feature: KinesisAnalytics: Adds the new service Amazon Kinesis Analytics, a fully managed service for continuously querying streaming data using standard SQL. With Kinesis Analytics, you can write standard SQL queries on streaming data and gain actionable insights in real-time, without having to learn any new programming skills. The service allows you to build applications that continuously read data from streaming data sources, process that data using standard SQL, and send the processed data to up to four destinations of your choice. Kinesis Analytics enables you to generate time-series analytics, feed a real-time dashboard, create real-time alarms and notifications, and much more. -* feature: S3: Adds support for IPv6/IPv4 Dualstack endpoint. A new opt-in boolean option `use Dualstack` can be specified for S3 service clients: `new AWS.S3({useDualstack: true})`. Alternatively, to configure it once for all subsequent S3 service clients: `AWS.config.update({s3: {useDualstack: true}})`. -* feature: Snowball: Adds Amazon Snowball, a new job management service. - -## 2.4.14 -* feature: CloudFront: Amazon CloudFront now supports tagging for Web and Streaming distributions. Tags make it easier for you to allocate costs and optimize spending by categorizing and grouping AWS resources. -* feature: ECR: Adds filtering of ListImages requests based on whether an image is tagged or untagged. -* feature: MarketplaceCommerceAnalytics: Adds the `startSupportDataExport` operation. - -## 2.4.13 -* feature: ApplicationAutoScaling: CORS support added. Now a default service in the browser build of the JavaScript SDK. -* feature: AutoScaling: CORS support added. Now a default service in the browser build of the JavaScript SDK. -* feature: CodeDeploy: CORS support added. Now a default service in the browser build of the JavaScript SDK. -* feature: GameLift: Provides a new Search API for GameLift, which allows game developers to retrieve filtered and sorted lists of their GameSessions. -* feature: RDS: You can now use the AWS Management Console to easily move your DB instance to a different VPC, or to a different subnet group in the same VPC. For more information, see Updating the VPC for a DB Instance. If your DB instance is not in a VPC, you can now use the AWS Management Console to easily move your DB instance into a VPC. You can now copy the source files from a MySQL database to an Amazon Simple Storage Service (Amazon S3) bucket, and then restore an Amazon Aurora DB cluster from those files. This option can be considerably faster than migrating data using mysqldump. - -## 2.4.12 -* bugfix: Request: Adds a content-length check for the stream returned from `createReadStream()`, and the stream will emit an error when the bytes received are fewer than specified by the response content-length header. -* bugfix: S3: Reverts behavior introduced in version `2.4.0` of the SDK to default the `signatureVersion` of S3 clients to `v4`. S3 clients instantiated without a user-defined `signatureVersion` will now default to `v2` unless the region only supports `v4` signing. This change is being made due to issues sending non-ascii characters in headers when using `v4` signing. -* feature: CloudWatchLogs: Updates the `putMetricFilter` operation. -* feature: EMR: Adds enhanced debugging. -* feature: Iot: Adds `listOutgoingCertificates` and support for allowing autoregistration. -* feature: MachineLearning: Adds compute time and entity timestamp to multiple operations. -* feature: RDS: Support for license model and versioning of option groups. -* feature: Route53Domains: Adds new APIs to renew domains for a specified duration, get domain suggestions, and view billing. - -## 2.4.11 -* feature: APIGateway: Adds support for authentication through Cognito User Pools. -* feature: CognitoIdentityServiceProvider: Introduces support for Your User Pools. -* feature: DirectoryService: Enables routing to on-premises public IP for Microsoft Active Directory. -* feature: EC2: Enables resolution of DNS queries from a peered VPC to a private IP address. -* feature: ES: Updates to Elasticsearch version 2.3, which offers improved performance, memory management, and security. It also offers several new features includinng pipeline aggregations to perform advanced analytics like moving averages and derivatives, and enhancements to geospatial queries. -* feature: Waiter: Adds Waiters for AWS.CodeDeploy. - -## 2.4.10 -* feature: util: Parse ini files containing comments using # -* feature: Iot: Adds support for thing types. Thing types are entities that store a description of common features of Things that are of the same logical type. Also adds support for `:` in Thing name. Adds a separator in Firehose action. - -## 2.4.9 -* feature: ACM: Adds reason for failure when describing certificates. -* feature: ConfigService: Adds support for RDS and ACM resources types and introduces two new APIs: DeleteEvaluationResults and StartConfigRulesEvaluation. Updated PutConfigRule API can now create Config rules that are triggered by both configuration changes and periodicity. -* feature: ElasticTranscoder: Adds WAV file format output support. -* feature: Paginator: Adds paginator for SSM DescribeInstanceInformation operation. - -## 2.4.8 -* feature: CloudFormation: CORS support added. Now a default service in the browser build of the JavaScript SDK. -* feature: CloudHSM: CORS support added. Now a default service in the browser build of the JavaScript SDK. -* feature: DeviceFarm: Adds session-based APIs. -* feature: EMR: CORS support added. Now a default service in the browser build of the JavaScript SDK. -* feature: ElastiCache: CORS support added. Now a default service in the browser build of the JavaScript SDK. -* feature: ElasticBeanstalk: CORS support added. Now a default service in the browser build of the JavaScript SDK. -* feature: Redshift: CORS support added. Now a default service in the browser build of the JavaScript SDK. -* feature: SSM: Adds notification support. \ No newline at end of file diff --git a/workshops/monte-carlo-on-ec2-spot-fleet/src/web/node_modules/aws-sdk/CONTRIBUTING.md b/workshops/monte-carlo-on-ec2-spot-fleet/src/web/node_modules/aws-sdk/CONTRIBUTING.md deleted file mode 100644 index 6e6acc28..00000000 --- a/workshops/monte-carlo-on-ec2-spot-fleet/src/web/node_modules/aws-sdk/CONTRIBUTING.md +++ /dev/null @@ -1,108 +0,0 @@ -# Contributing to the AWS SDK for JavaScript - -We work hard to provide a high-quality and useful SDK, and we greatly value -feedback and contributions from our community. Whether it's a bug report, -new feature, correction, or additional documentation, we welcome your issues -and pull requests. Please read through this document before submitting any -issues or pull requests to ensure we have all the necessary information to -effectively respond to your bug report or contribution. - - -## Filing Bug Reports - -You can file bug reports against the SDK on the [GitHub issues][issues] page. - -If you are filing a report for a bug or regression in the SDK, it's extremely -helpful to provide as much information as possible when opening the original -issue. This helps us reproduce and investigate the possible bug without having -to wait for this extra information to be provided. Please read the following -guidelines prior to filing a bug report. - -1. Search through existing [issues][] to ensure that your specific issue has - not yet been reported. If it is a common issue, it is likely there is - already a bug report for your problem. - -2. Ensure that you have tested the latest version of the SDK. Although you - may have an issue against an older version of the SDK, we cannot provide - bug fixes for old versions. It's also possible that the bug may have been - fixed in the latest release. - -3. Provide as much information about your environment, SDK version, and - relevant dependencies as possible. For example, let us know what version - of Node.js you are using, or if it's a browser issue, which browser you - are using. If the issue only occurs with a specific dependency loaded, - please provide that dependency name and version. - -4. Provide a minimal test case that reproduces your issue or any error - information you related to your problem. We can provide feedback much - more quickly if we know what operations you are calling in the SDK. If - you cannot provide a full test case, provide as much code as you can - to help us diagnose the problem. Any relevant information should be provided - as well, like whether this is a persistent issue, or if it only occurs - some of the time. - - -## Submitting Pull Requests - -We are always happy to receive code and documentation contributions to the SDK. -Please be aware of the following notes prior to opening a pull request: - -1. The SDK is released under the [Apache license][license]. Any code you submit - will be released under that license. For substantial contributions, we may - ask you to sign a [Contributor License Agreement (CLA)][cla]. - -2. If you would like to implement support for a significant feature that is not - yet available in the SDK, please talk to us beforehand to avoid any - duplication of effort. - -3. Wherever possible, pull requests should contain tests as appropriate. - Bugfixes should contain tests that exercise the corrected behavior (i.e., the - test should fail without the bugfix and pass with it), and new features - should be accompanied by tests exercising the feature. - -4. Pull requests that contain failing tests will not be merged until the test - failures are addressed. Pull requests that cause a significant drop in the - SDK's test coverage percentage are unlikely to be merged until tests have - been added. - -### Testing - -To run the tests locally, install `phantomjs`. You can do so using [Homebrew][homebrew]: - -``` -brew install phantomjs -``` - -Then, to run all tests: - -``` -npm test -``` - -To run a particular test subset e.g. just the unit tests: - -``` -npm run unit -``` - -See the implementation of the `test` script in `package.json` for more options. - -### Changelog - -We have moved to using a changelog to document changes between SDK versions instead of [release notes][releasenotes]. -The release notes generally contained service client updates, and major SDK changes. -Our goal with the changelog is to document all changes made with each version of the SDK. -When submitting a pull request, please run the `add-change` script and commit the resulting JSON file so that your change gets added to the changelog. -From SDK root: -``` -npm run add-change -``` - -See the [add-change cli notes](./scripts/changelog/README.md) for more information. - -[issues]: https://github.com/aws/aws-sdk-js/issues -[pr]: https://github.com/aws/aws-sdk-js/pulls -[license]: http://aws.amazon.com/apache2.0/ -[cla]: http://en.wikipedia.org/wiki/Contributor_License_Agreement -[homebrew]: http://brew.sh/ -[releasenotes]: https://aws.amazon.com/releasenotes/JavaScript diff --git a/workshops/monte-carlo-on-ec2-spot-fleet/src/web/node_modules/aws-sdk/LICENSE.txt b/workshops/monte-carlo-on-ec2-spot-fleet/src/web/node_modules/aws-sdk/LICENSE.txt deleted file mode 100644 index 9c5b1fee..00000000 --- a/workshops/monte-carlo-on-ec2-spot-fleet/src/web/node_modules/aws-sdk/LICENSE.txt +++ /dev/null @@ -1,202 +0,0 @@ - - Apache License - Version 2.0, January 2004 - http://www.apache.org/licenses/ - - TERMS AND CONDITIONS FOR USE, REPRODUCTION, AND DISTRIBUTION - - 1. Definitions. - - "License" shall mean the terms and conditions for use, reproduction, - and distribution as defined by Sections 1 through 9 of this document. - - "Licensor" shall mean the copyright owner or entity authorized by - the copyright owner that is granting the License. - - "Legal Entity" shall mean the union of the acting entity and all - other entities that control, are controlled by, or are under common - control with that entity. For the purposes of this definition, - "control" means (i) the power, direct or indirect, to cause the - direction or management of such entity, whether by contract or - otherwise, or (ii) ownership of fifty percent (50%) or more of the - outstanding shares, or (iii) beneficial ownership of such entity. - - "You" (or "Your") shall mean an individual or Legal Entity - exercising permissions granted by this License. - - "Source" form shall mean the preferred form for making modifications, - including but not limited to software source code, documentation - source, and configuration files. - - "Object" form shall mean any form resulting from mechanical - transformation or translation of a Source form, including but - not limited to compiled object code, generated documentation, - and conversions to other media types. - - "Work" shall mean the work of authorship, whether in Source or - Object form, made available under the License, as indicated by a - copyright notice that is included in or attached to the work - (an example is provided in the Appendix below). - - "Derivative Works" shall mean any work, whether in Source or Object - form, that is based on (or derived from) the Work and for which the - editorial revisions, annotations, elaborations, or other modifications - represent, as a whole, an original work of authorship. For the purposes - of this License, Derivative Works shall not include works that remain - separable from, or merely link (or bind by name) to the interfaces of, - the Work and Derivative Works thereof. - - "Contribution" shall mean any work of authorship, including - the original version of the Work and any modifications or additions - to that Work or Derivative Works thereof, that is intentionally - submitted to Licensor for inclusion in the Work by the copyright owner - or by an individual or Legal Entity authorized to submit on behalf of - the copyright owner. For the purposes of this definition, "submitted" - means any form of electronic, verbal, or written communication sent - to the Licensor or its representatives, including but not limited to - communication on electronic mailing lists, source code control systems, - and issue tracking systems that are managed by, or on behalf of, the - Licensor for the purpose of discussing and improving the Work, but - excluding communication that is conspicuously marked or otherwise - designated in writing by the copyright owner as "Not a Contribution." - - "Contributor" shall mean Licensor and any individual or Legal Entity - on behalf of whom a Contribution has been received by Licensor and - subsequently incorporated within the Work. - - 2. Grant of Copyright License. Subject to the terms and conditions of - this License, each Contributor hereby grants to You a perpetual, - worldwide, non-exclusive, no-charge, royalty-free, irrevocable - copyright license to reproduce, prepare Derivative Works of, - publicly display, publicly perform, sublicense, and distribute the - Work and such Derivative Works in Source or Object form. - - 3. Grant of Patent License. Subject to the terms and conditions of - this License, each Contributor hereby grants to You a perpetual, - worldwide, non-exclusive, no-charge, royalty-free, irrevocable - (except as stated in this section) patent license to make, have made, - use, offer to sell, sell, import, and otherwise transfer the Work, - where such license applies only to those patent claims licensable - by such Contributor that are necessarily infringed by their - Contribution(s) alone or by combination of their Contribution(s) - with the Work to which such Contribution(s) was submitted. If You - institute patent litigation against any entity (including a - cross-claim or counterclaim in a lawsuit) alleging that the Work - or a Contribution incorporated within the Work constitutes direct - or contributory patent infringement, then any patent licenses - granted to You under this License for that Work shall terminate - as of the date such litigation is filed. - - 4. Redistribution. You may reproduce and distribute copies of the - Work or Derivative Works thereof in any medium, with or without - modifications, and in Source or Object form, provided that You - meet the following conditions: - - (a) You must give any other recipients of the Work or - Derivative Works a copy of this License; and - - (b) You must cause any modified files to carry prominent notices - stating that You changed the files; and - - (c) You must retain, in the Source form of any Derivative Works - that You distribute, all copyright, patent, trademark, and - attribution notices from the Source form of the Work, - excluding those notices that do not pertain to any part of - the Derivative Works; and - - (d) If the Work includes a "NOTICE" text file as part of its - distribution, then any Derivative Works that You distribute must - include a readable copy of the attribution notices contained - within such NOTICE file, excluding those notices that do not - pertain to any part of the Derivative Works, in at least one - of the following places: within a NOTICE text file distributed - as part of the Derivative Works; within the Source form or - documentation, if provided along with the Derivative Works; or, - within a display generated by the Derivative Works, if and - wherever such third-party notices normally appear. The contents - of the NOTICE file are for informational purposes only and - do not modify the License. You may add Your own attribution - notices within Derivative Works that You distribute, alongside - or as an addendum to the NOTICE text from the Work, provided - that such additional attribution notices cannot be construed - as modifying the License. - - You may add Your own copyright statement to Your modifications and - may provide additional or different license terms and conditions - for use, reproduction, or distribution of Your modifications, or - for any such Derivative Works as a whole, provided Your use, - reproduction, and distribution of the Work otherwise complies with - the conditions stated in this License. - - 5. Submission of Contributions. Unless You explicitly state otherwise, - any Contribution intentionally submitted for inclusion in the Work - by You to the Licensor shall be under the terms and conditions of - this License, without any additional terms or conditions. - Notwithstanding the above, nothing herein shall supersede or modify - the terms of any separate license agreement you may have executed - with Licensor regarding such Contributions. - - 6. Trademarks. This License does not grant permission to use the trade - names, trademarks, service marks, or product names of the Licensor, - except as required for reasonable and customary use in describing the - origin of the Work and reproducing the content of the NOTICE file. - - 7. Disclaimer of Warranty. Unless required by applicable law or - agreed to in writing, Licensor provides the Work (and each - Contributor provides its Contributions) on an "AS IS" BASIS, - WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or - implied, including, without limitation, any warranties or conditions - of TITLE, NON-INFRINGEMENT, MERCHANTABILITY, or FITNESS FOR A - PARTICULAR PURPOSE. You are solely responsible for determining the - appropriateness of using or redistributing the Work and assume any - risks associated with Your exercise of permissions under this License. - - 8. Limitation of Liability. In no event and under no legal theory, - whether in tort (including negligence), contract, or otherwise, - unless required by applicable law (such as deliberate and grossly - negligent acts) or agreed to in writing, shall any Contributor be - liable to You for damages, including any direct, indirect, special, - incidental, or consequential damages of any character arising as a - result of this License or out of the use or inability to use the - Work (including but not limited to damages for loss of goodwill, - work stoppage, computer failure or malfunction, or any and all - other commercial damages or losses), even if such Contributor - has been advised of the possibility of such damages. - - 9. Accepting Warranty or Additional Liability. While redistributing - the Work or Derivative Works thereof, You may choose to offer, - and charge a fee for, acceptance of support, warranty, indemnity, - or other liability obligations and/or rights consistent with this - License. However, in accepting such obligations, You may act only - on Your own behalf and on Your sole responsibility, not on behalf - of any other Contributor, and only if You agree to indemnify, - defend, and hold each Contributor harmless for any liability - incurred by, or claims asserted against, such Contributor by reason - of your accepting any such warranty or additional liability. - - END OF TERMS AND CONDITIONS - - APPENDIX: How to apply the Apache License to your work. - - To apply the Apache License to your work, attach the following - boilerplate notice, with the fields enclosed by brackets "[]" - replaced with your own identifying information. (Don't include - the brackets!) The text should be enclosed in the appropriate - comment syntax for the file format. We also recommend that a - file or class name and description of purpose be included on the - same "printed page" as the copyright notice for easier - identification within third-party archives. - - Copyright 2012-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. - You may obtain a copy of the License at - - http://www.apache.org/licenses/LICENSE-2.0 - - Unless required by applicable law or agreed to in writing, software - distributed under the License 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. diff --git a/workshops/monte-carlo-on-ec2-spot-fleet/src/web/node_modules/aws-sdk/NOTICE.txt b/workshops/monte-carlo-on-ec2-spot-fleet/src/web/node_modules/aws-sdk/NOTICE.txt deleted file mode 100644 index d8c7e15f..00000000 --- a/workshops/monte-carlo-on-ec2-spot-fleet/src/web/node_modules/aws-sdk/NOTICE.txt +++ /dev/null @@ -1,5 +0,0 @@ -AWS SDK for JavaScript -Copyright 2012-2017 Amazon.com, Inc. or its affiliates. All Rights Reserved. - -This product includes software developed at -Amazon Web Services, Inc. (http://aws.amazon.com/). diff --git a/workshops/monte-carlo-on-ec2-spot-fleet/src/web/node_modules/aws-sdk/README.md b/workshops/monte-carlo-on-ec2-spot-fleet/src/web/node_modules/aws-sdk/README.md deleted file mode 100644 index 3d1c8d7c..00000000 --- a/workshops/monte-carlo-on-ec2-spot-fleet/src/web/node_modules/aws-sdk/README.md +++ /dev/null @@ -1,163 +0,0 @@ -# AWS SDK for JavaScript - -[![NPM](https://nodei.co/npm/aws-sdk.svg?downloads=true&downloadRank=true&stars=true)](https://nodei.co/npm/aws-sdk/) - -[![Gitter chat](https://badges.gitter.im/gitterHQ/gitter.svg)](https://gitter.im/aws/aws-sdk-js) - -[![Version](https://badge.fury.io/js/aws-sdk.svg)](http://badge.fury.io/js/aws-sdk) [![Build Status](https://travis-ci.org/aws/aws-sdk-js.svg?branch=master)](https://travis-ci.org/aws/aws-sdk-js) [![Coverage Status](https://coveralls.io/repos/aws/aws-sdk-js/badge.svg?branch=master)](https://coveralls.io/r/aws/aws-sdk-js?branch=master) - -The official AWS SDK for JavaScript, available for browsers and mobile devices, -or Node.js backends - -For release notes, see the [CHANGELOG](CHANGELOG.md). Prior to v2.4.8, release notes can be found at http://aws.amazon.com/releasenotes/SDK/JavaScript - -

-If you are upgrading from 1.x to 2.0 of the SDK, please see -the {file:UPGRADING.md} notes for information on how to migrate existing code -to work with the new major version. -

- -## Installing - -### In the Browser - -To use the SDK in the browser, simply add the following script tag to your -HTML pages: - - - -You can also build a custom browser SDK with your specified set of AWS services. -This can allow you to reduce the SDK's size, specify different API versions of -services, or use AWS services that don't currently support CORS if you are -working in an environment that does not enforce CORS. To get started: - -http://docs.aws.amazon.com/sdk-for-javascript/v2/developer-guide/building-sdk-for-browsers.html - -The AWS SDK is also compatible with [browserify](http://browserify.org). - -### In Node.js - -The preferred way to install the AWS SDK for Node.js is to use the -[npm](http://npmjs.org) package manager for Node.js. Simply type the following -into a terminal window: - -```sh -npm install aws-sdk -``` - -### In React Native -To use the SDK in a react native project, first install the SDK using npm: - -```sh -npm install aws-sdk -``` - -Then within your application, you can reference the react native compatible version of the SDK with the following: - -```javascript -var AWS = require('aws-sdk/dist/aws-sdk-react-native'); -``` - -### Using Bower - -You can also use [Bower](http://bower.io) to install the SDK by typing the -following into a terminal window: - -```sh -bower install aws-sdk-js -``` - -## Usage and Getting Started - -You can find a getting started guide at: - -http://docs.aws.amazon.com/sdk-for-javascript/v2/developer-guide - -## Usage with TypeScript -The AWS SDK for JavaScript bundles TypeScript definition files for use in TypeScript projects and to support tools that can read `.d.ts` files. -Our goal is to keep these TypeScript definition files updated with each release for any public api. - -### Pre-requisites -Before you can begin using these TypeScript definitions with your project, you need to make sure your project meets a few of these requirements: - - * Use TypeScript v2.x - * Includes the TypeScript definitions for node. You can use npm to install this by typing the following into a terminal window: - - ```sh - npm install --save-dev @types/node - ``` - - * Your `tsconfig.json` or `jsconfig.json` includes `'dom'` and `'es2015.promise'` under `compilerOptions.lib`. - See [tsconfig.json](./ts/tsconfig.json) for an example. - -### In the Browser -To use the TypeScript definition files with the global `AWS` object in a front-end project, add the following line to the top of your JavaScript file: - -```javascript -/// -``` - -This will provide support for the global `AWS` object. - -### In Node.js -To use the TypeScript definition files within a Node.js project, simply import `aws-sdk` as you normally would. - -In a TypeScript file: - -```javascript -// import entire SDK -import AWS = require('aws-sdk'); -// import AWS object without services -import AWS = require('aws-sdk/global'); -// import individual service -import S3 = require('aws-sdk/clients/s3'); -``` - -In a JavaScript file: - -```javascript -// import entire SDK -var AWS = require('aws-sdk'); -// import AWS object without services -var AWS = require('aws-sdk/global'); -// import individual service -var S3 = require('aws-sdk/clients/s3'); -``` - -### Known Limitations -There are a few known limitations with the bundled TypeScript definitions at this time: - - * Service client typings reflect the latest `apiVersion`, regardless of which `apiVersion` is specified when creating a client. - * Service-bound parameters use the `any` type. - -## Getting Help -Please use these community resources for getting help. We use the GitHub issues for tracking bugs and feature requests and have limited bandwidth to address them. - - * Ask a question on [StackOverflow](https://stackoverflow.com/) and tag it with `aws-sdk-js` - * Come join the AWS JavaScript community on [gitter](https://gitter.im/aws/aws-sdk-js?source=orgpage) - * Open a support ticket with [AWS Support](https://console.aws.amazon.com/support/home#/) - * If it turns out that you may have found a bug, please [open an issue](https://github.com/aws/aws-sdk-js/issues/new) - -## Opening Issues -If you encounter a bug with the AWS SDK for JavaScript we would like to hear -about it. Search the [existing issues](https://github.com/aws/aws-sdk-js/issues) -and try to make sure your problem doesn’t already exist before opening a new -issue. It’s helpful if you include the version of the SDK, Node.js or browser -environment and OS you’re using. Please include a stack trace and reduced repro -case when appropriate, too. - -The GitHub issues are intended for bug reports and feature requests. For help -and questions with using the AWS SDK for JavaScript please make use of the -resources listed in the [Getting Help](https://github.com/aws/aws-sdk-js#getting-help) -section. There are limited resources available for handling issues and by -keeping the list of open issues lean we can respond in a timely manner. - -## Supported Services - -Please see [SERVICES.md](./SERVICES.md) for a list of supported services. - -## License - -This SDK is distributed under the -[Apache License, Version 2.0](http://www.apache.org/licenses/LICENSE-2.0), -see LICENSE.txt and NOTICE.txt for more information. diff --git a/workshops/monte-carlo-on-ec2-spot-fleet/src/web/node_modules/aws-sdk/SERVICES.md b/workshops/monte-carlo-on-ec2-spot-fleet/src/web/node_modules/aws-sdk/SERVICES.md deleted file mode 100644 index 9708ebd4..00000000 --- a/workshops/monte-carlo-on-ec2-spot-fleet/src/web/node_modules/aws-sdk/SERVICES.md +++ /dev/null @@ -1,112 +0,0 @@ -The SDK currently supports the following services: - -

Note: -Although all services are supported in the browser version of the SDK, -not all of the services are available in the default hosted build (using the -script tag provided above). Instructions on how to build a -custom version of the SDK with individual services are provided -in the "Building the SDK for Browsers" section of the SDK Developer Guide. -

- -Service Name | Class Name | API Version | Allows CORS | ------------- | ---------- | ----------- | ----------- | -AWS Certificate Manager | AWS.ACM | 2015-12-08 | :tada: | -Amazon API Gateway | AWS.APIGateway | 2015-07-09 | :tada: | -Application Auto Scaling | AWS.ApplicationAutoScaling | 2016-02-06 | :tada: | -Amazon AppStream | AWS.AppStream | 2016-12-01 | | -Auto Scaling | AWS.AutoScaling | 2011-01-01 | :tada: | -AWS Batch | AWS.Batch | 2016-08-10 | | -AWS Budgets | AWS.Budgets | 2016-10-20 | | -Amazon CloudDirectory | AWS.CloudDirectory | 2016-05-10 | | -AWS CloudFormation | AWS.CloudFormation | 2010-05-15 | :tada: | -Amazon CloudFront | AWS.CloudFront | 2016-11-25 | :tada: | -Amazon CloudHSM | AWS.CloudHSM | 2014-05-30 | :tada: | -Amazon CloudSearch | AWS.CloudSearch | 2013-01-01 | | -Amazon CloudSearch | AWS.CloudSearch | 2011-02-01 | | -Amazon CloudSearch Domain | AWS.CloudSearchDomain | 2013-01-01 | | -AWS CloudTrail | AWS.CloudTrail | 2013-11-01 | :tada: | -Amazon CloudWatch | AWS.CloudWatch | 2010-08-01 | :tada: | -Amazon CloudWatch Events | AWS.CloudWatchEvents | 2015-10-07 | :tada: | -Amazon CloudWatch Logs | AWS.CloudWatchLogs | 2014-03-28 | :tada: | -AWS CodeBuild | AWS.CodeBuild | 2016-10-06 | | -AWS CodeCommit | AWS.CodeCommit | 2015-04-13 | :tada: | -AWS CodeDeploy | AWS.CodeDeploy | 2014-10-06 | :tada: | -AWS CodePipeline | AWS.CodePipeline | 2015-07-09 | :tada: | -Amazon Cognito Identity | AWS.CognitoIdentity | 2014-06-30 | :tada: | -Amazon Cognito Identity Provider | AWS.CognitoIdentityServiceProvider | 2016-04-18 | :tada: | -Amazon Cognito Sync | AWS.CognitoSync | 2014-06-30 | :tada: | -AWS Config | AWS.ConfigService | 2014-11-12 | :tada: | -AWS Cost and Usage Report Service | AWS.CUR | 2017-01-06 | :tada: | -AWS Data Pipeline | AWS.DataPipeline | 2012-10-29 | | -AWS Device Farm | AWS.DeviceFarm | 2015-06-23 | :tada: | -AWS Direct Connect | AWS.DirectConnect | 2012-10-25 | :tada: | -AWS Directory Service | AWS.DirectoryService | 2015-04-16 | | -AWS Application Discovery Service | AWS.Discovery | 2015-11-01 | | -AWS Database Migration Service | AWS.DMS | 2016-01-01 | | -Amazon DynamoDB | AWS.DynamoDB | 2012-08-10 | :tada: | -Amazon DynamoDB | AWS.DynamoDB | 2011-12-05 | :tada: | -Amazon DynamoDB Streams | AWS.DynamoDBStreams | 2012-08-10 | :tada: | -Amazon Elastic Compute Cloud | AWS.EC2 | 2016-11-15 | :tada: | -Amazon EC2 Container Registry | AWS.ECR | 2015-09-21 | :tada: | -Amazon EC2 Container Service | AWS.ECS | 2014-11-13 | :tada: | -Amazon Elastic File System | AWS.EFS | 2015-02-01 | | -Amazon ElastiCache | AWS.ElastiCache | 2015-02-02 | :tada: | -AWS Elastic Beanstalk | AWS.ElasticBeanstalk | 2010-12-01 | :tada: | -Elastic Load Balancing | AWS.ELB | 2012-06-01 | :tada: | -Elastic Load Balancing | AWS.ELBv2 | 2015-12-01 | :tada: | -Amazon Elastic MapReduce | AWS.EMR | 2009-03-31 | :tada: | -Amazon Elasticsearch Service | AWS.ES | 2015-01-01 | | -Amazon Elastic Transcoder | AWS.ElasticTranscoder | 2012-09-25 | :tada: | -Amazon Kinesis Firehose | AWS.Firehose | 2015-08-04 | :tada: | -Amazon GameLift | AWS.GameLift | 2015-10-01 | :tada: | -Amazon Glacier | AWS.Glacier | 2012-06-01 | | -AWS Health APIs and Notifications | AWS.Health | 2016-08-04 | | -AWS Identity and Access Management | AWS.IAM | 2010-05-08 | | -AWS Import/Export | AWS.ImportExport | 2010-06-01 | | -Amazon Inspector | AWS.Inspector | 2016-02-16 | :tada: | -AWS IoT | AWS.Iot | 2015-05-28 | :tada: | -AWS IoT Data Plane | AWS.IotData | 2015-05-28 | :tada: | -Amazon Kinesis | AWS.Kinesis | 2013-12-02 | :tada: | -Amazon Kinesis Analytics | AWS.KinesisAnalytics | 2015-08-14 | | -AWS Key Management Service | AWS.KMS | 2014-11-01 | :tada: | -AWS Lambda | AWS.Lambda | 2015-03-31 | :tada: | -AWS Lambda | AWS.Lambda | 2014-11-11 | :tada: | -Amazon Lex Runtime Service | AWS.LexRuntime | 2016-11-28 | :tada: | -Amazon Lightsail | AWS.Lightsail | 2016-11-28 | | -Amazon Machine Learning | AWS.MachineLearning | 2014-12-12 | :tada: | -AWS Marketplace Commerce Analytics | AWS.MarketplaceCommerceAnalytics | 2015-07-01 | :tada: | -AWSMarketplace Metering | AWS.MarketplaceMetering | 2016-01-14 | | -Amazon Mechanical Turk | AWS.MTurk | 2017-01-17 | :tada: | -Amazon Mobile Analytics | AWS.MobileAnalytics | 2014-06-05 | :tada: | -AWS OpsWorks | AWS.OpsWorks | 2013-02-18 | :tada: | -AWS OpsWorks for Chef Automate | AWS.OpsWorksCM | 2016-11-01 | | -AWS Organizations | AWS.Organizations | 2016-11-28 | | -Amazon Pinpoint | AWS.Pinpoint | 2016-12-01 | | -Amazon Polly | AWS.Polly | 2016-06-10 | :tada: | -Amazon Relational Database Service | AWS.RDS | 2014-10-31 | :tada: | -Amazon Relational Database Service | AWS.RDS | 2013-09-09 | :tada: | -Amazon Relational Database Service | AWS.RDS | 2013-02-12 | :tada: | -Amazon Relational Database Service | AWS.RDS | 2013-01-10 | :tada: | -Amazon Redshift | AWS.Redshift | 2012-12-01 | :tada: | -Amazon Rekognition | AWS.Rekognition | 2016-06-27 | :tada: | -Amazon Route 53 | AWS.Route53 | 2013-04-01 | :tada: | -Amazon Route 53 Domains | AWS.Route53Domains | 2014-05-15 | :tada: | -Amazon Simple Storage Service | AWS.S3 | 2006-03-01 | :tada: | -AWS Service Catalog | AWS.ServiceCatalog | 2015-12-10 | :tada: | -Amazon Simple Email Service | AWS.SES | 2010-12-01 | :tada: | -AWS Shield | AWS.Shield | 2016-06-02 | | -Amazon SimpleDB | AWS.SimpleDB | 2009-04-15 | | -AWS Server Migration Service | AWS.SMS | 2016-10-24 | | -Amazon Import/Export Snowball | AWS.Snowball | 2016-06-30 | | -Amazon Simple Notification Service | AWS.SNS | 2010-03-31 | :tada: | -Amazon Simple Queue Service | AWS.SQS | 2012-11-05 | :tada: | -Amazon Simple Systems Manager (SSM) | AWS.SSM | 2014-11-06 | :tada: | -AWS Storage Gateway | AWS.StorageGateway | 2013-06-30 | :tada: | -AWS Step Functions | AWS.StepFunctions | 2016-11-23 | | -AWS Security Token Service | AWS.STS | 2011-06-15 | :tada: | -AWS Support | AWS.Support | 2013-04-15 | | -Amazon Simple Workflow Service | AWS.SWF | 2012-01-25 | | -AWS X-Ray | AWS.XRay | 2016-04-12 | | -AWS WAF | AWS.WAF | 2015-08-24 | :tada: | -AWS WAF Regional | AWS.WAFRegional | 2016-11-28 | | -Amazon WorkSpaces | AWS.WorkSpaces | 2015-04-08 | | diff --git a/workshops/monte-carlo-on-ec2-spot-fleet/src/web/node_modules/aws-sdk/UPGRADING.md b/workshops/monte-carlo-on-ec2-spot-fleet/src/web/node_modules/aws-sdk/UPGRADING.md deleted file mode 100644 index f67fd914..00000000 --- a/workshops/monte-carlo-on-ec2-spot-fleet/src/web/node_modules/aws-sdk/UPGRADING.md +++ /dev/null @@ -1,157 +0,0 @@ -# @!title Upgrading Notes (1.x to 2.0) - -# Upgrading Notes (1.x to 2.0) - -This document captures breaking changes from 1.x versions to the first -stable 2.x (non-RC) release of the AWS SDK for JavaScript. - -## 1. Automatic Conversion of Base64 and Timestamp Types on Input/Output - -The SDK will now automatically encode and decode base64-encoded values, as well -as timestamp values, on the user's behalf. This change affects any operation -where Base64 or Timestamp values were sent by a request or returned in a -response, i.e., `AWS.DynamoDB` and `AWS.SQS`, which allow for Base64 -encoded values. - -User code that previously did base64 conversion no longer requires this. -Furthermore, values encoded as base64 are now returned as Buffer objects -from server responses (and can also be passed as Buffer input). For -example, the following 1.x `SQS.sendMessage()` parameters: - -```javascript -var params = { - MessageBody: 'Some Message', - MessageAttributes: { - attrName: { - DataType: 'Binary', - BinaryValue: new Buffer('example text').toString('base64') - } - } -}; -``` - -Can be rewritten as: - -```javascript -var params = { - MessageBody: 'Some Message', - MessageAttributes: { - attrName: { - DataType: 'Binary', - BinaryValue: 'example text' - } - } -}; -``` - -And the message will be read as: - -```javascript -sqs.receiveMessage(params, function(err, data) { - // buf is - var buf = data.Messages[0].MessageAttributes.attrName.BinaryValue; - console.log(buf.toString()); // "example text" -}); -``` - -## 2. Moved response.data.RequestId to response.requestId - -The SDK now stores request IDs for all services in a consistent place on the -response object, rather than inside the response.data property. This is to -improve consistency across services that expose request IDs in different ways. -Note that this is also a breaking change that renames the -`response.data.RequestId` property to `response.requestId` -(or `this.requestId` inside of a callback). - -To migrate your code, change: - -```javascript -svc.operation(params, function (err, data) { - console.log('Request ID:', data.RequestId); -}); -``` - -To the following: - -```javascript -svc.operation(params, function () { - console.log('Request ID:', this.requestId); -}); -``` - -## 3. Exposed Wrapper Elements - -If you use {AWS.ElastiCache}, {AWS.RDS}, or {AWS.Redshift}, you must now access -the response through the top-level output property in the response for certain -operations. This change corrects the SDK to behave according to documentation -output, which was previously listing this wrapper element. - -Example: - -`RDS.describeEngineDefaultParameters()` used to return: - -```javascript -{ Parameters: [ ... ] } -``` - -This operation now returns: - -```javascript -{ EngineDefaults: { Parameters: [ ... ] } } -``` - -The full list of affected operations for each service are: - -**AWS.ElastiCache**: authorizeCacheSecurityGroupIngress, createCacheCluster, -createCacheParameterGroup, createCacheSecurityGroup, createCacheSubnetGroup, -createReplicationGroup, deleteCacheCluster, deleteReplicationGroup, -describeEngineDefaultParameters, modifyCacheCluster, modifyCacheSubnetGroup, -modifyReplicationGroup, purchaseReservedCacheNodesOffering, rebootCacheCluster, -revokeCacheSecurityGroupIngress - -**AWS.RDS**: addSourceIdentifierToSubscription, authorizeDBSecurityGroupIngress, -copyDBSnapshot, createDBInstance, createDBInstanceReadReplica, -createDBParameterGroup, createDBSecurityGroup, createDBSnapshot, -createDBSubnetGroup, createEventSubscription, createOptionGroup, -deleteDBInstance, deleteDBSnapshot, deleteEventSubscription, -describeEngineDefaultParameters, modifyDBInstance, modifyDBSubnetGroup, -modifyEventSubscription, modifyOptionGroup, promoteReadReplica, -purchaseReservedDBInstancesOffering, rebootDBInstance, -removeSourceIdentifierFromSubscription, restoreDBInstanceFromDBSnapshot, -restoreDBInstanceToPointInTime, revokeDBSecurityGroupIngress - -**AWS.Redshift**: authorizeClusterSecurityGroupIngress, authorizeSnapshotAccess, -copyClusterSnapshot, createCluster, createClusterParameterGroup, -createClusterSecurityGroup, createClusterSnapshot, createClusterSubnetGroup, -createEventSubscription, createHsmClientCertificate, createHsmConfiguration, -deleteCluster, deleteClusterSnapshot, describeDefaultClusterParameters, -disableSnapshotCopy, enableSnapshotCopy, modifyCluster, -modifyClusterSubnetGroup, modifyEventSubscription, -modifySnapshotCopyRetentionPeriod, purchaseReservedNodeOffering, rebootCluster, -restoreFromClusterSnapshot, revokeClusterSecurityGroupIngress, -revokeSnapshotAccess, rotateEncryptionKey - -## 4. Dropped `.Client` and `.client` Properties - -The `.Client` and `.client` properties have been removed from Service objects. -If you are using the `.Client` property on a Service class or a `.client` -property on an instance of the service, remove these properties from your code. - -Upgrading example: - -The following 1.x code: - -``` -var sts = new AWS.STS.Client(); -// or -var sts = new AWS.STS(); - -sts.client.operation(...); -``` - -Should be changed to the following: - -``` -var sts = new AWS.STS(); -sts.operation(...) -``` diff --git a/workshops/monte-carlo-on-ec2-spot-fleet/src/web/node_modules/aws-sdk/apis/AWSMigrationHub-2017-05-31.examples.json b/workshops/monte-carlo-on-ec2-spot-fleet/src/web/node_modules/aws-sdk/apis/AWSMigrationHub-2017-05-31.examples.json deleted file mode 100644 index 0ea7e3b0..00000000 --- a/workshops/monte-carlo-on-ec2-spot-fleet/src/web/node_modules/aws-sdk/apis/AWSMigrationHub-2017-05-31.examples.json +++ /dev/null @@ -1,5 +0,0 @@ -{ - "version": "1.0", - "examples": { - } -} diff --git a/workshops/monte-carlo-on-ec2-spot-fleet/src/web/node_modules/aws-sdk/apis/AWSMigrationHub-2017-05-31.min.json b/workshops/monte-carlo-on-ec2-spot-fleet/src/web/node_modules/aws-sdk/apis/AWSMigrationHub-2017-05-31.min.json deleted file mode 100644 index ed7c3e82..00000000 --- a/workshops/monte-carlo-on-ec2-spot-fleet/src/web/node_modules/aws-sdk/apis/AWSMigrationHub-2017-05-31.min.json +++ /dev/null @@ -1,465 +0,0 @@ -{ - "version": "2.0", - "metadata": { - "apiVersion": "2017-05-31", - "endpointPrefix": "mgh", - "jsonVersion": "1.1", - "protocol": "json", - "serviceFullName": "AWS Migration Hub", - "signatureVersion": "v4", - "targetPrefix": "AWSMigrationHub", - "uid": "AWSMigrationHub-2017-05-31" - }, - "operations": { - "AssociateCreatedArtifact": { - "input": { - "type": "structure", - "required": [ - "ProgressUpdateStream", - "MigrationTaskName", - "CreatedArtifact" - ], - "members": { - "ProgressUpdateStream": {}, - "MigrationTaskName": {}, - "CreatedArtifact": { - "shape": "S4" - }, - "DryRun": { - "type": "boolean" - } - } - }, - "output": { - "type": "structure", - "members": {} - } - }, - "AssociateDiscoveredResource": { - "input": { - "type": "structure", - "required": [ - "ProgressUpdateStream", - "MigrationTaskName", - "DiscoveredResource" - ], - "members": { - "ProgressUpdateStream": {}, - "MigrationTaskName": {}, - "DiscoveredResource": { - "shape": "Sa" - }, - "DryRun": { - "type": "boolean" - } - } - }, - "output": { - "type": "structure", - "members": {} - } - }, - "CreateProgressUpdateStream": { - "input": { - "type": "structure", - "required": [ - "ProgressUpdateStreamName" - ], - "members": { - "ProgressUpdateStreamName": {}, - "DryRun": { - "type": "boolean" - } - } - }, - "output": { - "type": "structure", - "members": {} - } - }, - "DeleteProgressUpdateStream": { - "input": { - "type": "structure", - "required": [ - "ProgressUpdateStreamName" - ], - "members": { - "ProgressUpdateStreamName": {}, - "DryRun": { - "type": "boolean" - } - } - }, - "output": { - "type": "structure", - "members": {} - } - }, - "DescribeApplicationState": { - "input": { - "type": "structure", - "required": [ - "ApplicationId" - ], - "members": { - "ApplicationId": {} - } - }, - "output": { - "type": "structure", - "members": { - "ApplicationStatus": {}, - "LastUpdatedTime": { - "type": "timestamp" - } - } - } - }, - "DescribeMigrationTask": { - "input": { - "type": "structure", - "required": [ - "ProgressUpdateStream", - "MigrationTaskName" - ], - "members": { - "ProgressUpdateStream": {}, - "MigrationTaskName": {} - } - }, - "output": { - "type": "structure", - "members": { - "MigrationTask": { - "type": "structure", - "members": { - "ProgressUpdateStream": {}, - "MigrationTaskName": {}, - "Task": { - "shape": "Sq" - }, - "UpdateDateTime": { - "type": "timestamp" - }, - "ResourceAttributeList": { - "type": "list", - "member": { - "shape": "Sv" - } - } - } - } - } - } - }, - "DisassociateCreatedArtifact": { - "input": { - "type": "structure", - "required": [ - "ProgressUpdateStream", - "MigrationTaskName", - "CreatedArtifactName" - ], - "members": { - "ProgressUpdateStream": {}, - "MigrationTaskName": {}, - "CreatedArtifactName": {}, - "DryRun": { - "type": "boolean" - } - } - }, - "output": { - "type": "structure", - "members": {} - } - }, - "DisassociateDiscoveredResource": { - "input": { - "type": "structure", - "required": [ - "ProgressUpdateStream", - "MigrationTaskName", - "ConfigurationId" - ], - "members": { - "ProgressUpdateStream": {}, - "MigrationTaskName": {}, - "ConfigurationId": {}, - "DryRun": { - "type": "boolean" - } - } - }, - "output": { - "type": "structure", - "members": {} - } - }, - "ImportMigrationTask": { - "input": { - "type": "structure", - "required": [ - "ProgressUpdateStream", - "MigrationTaskName" - ], - "members": { - "ProgressUpdateStream": {}, - "MigrationTaskName": {}, - "DryRun": { - "type": "boolean" - } - } - }, - "output": { - "type": "structure", - "members": {} - } - }, - "ListCreatedArtifacts": { - "input": { - "type": "structure", - "required": [ - "ProgressUpdateStream", - "MigrationTaskName" - ], - "members": { - "ProgressUpdateStream": {}, - "MigrationTaskName": {}, - "NextToken": {}, - "MaxResults": { - "type": "integer" - } - } - }, - "output": { - "type": "structure", - "members": { - "NextToken": {}, - "CreatedArtifactList": { - "type": "list", - "member": { - "shape": "S4" - } - } - } - } - }, - "ListDiscoveredResources": { - "input": { - "type": "structure", - "required": [ - "ProgressUpdateStream", - "MigrationTaskName" - ], - "members": { - "ProgressUpdateStream": {}, - "MigrationTaskName": {}, - "NextToken": {}, - "MaxResults": { - "type": "integer" - } - } - }, - "output": { - "type": "structure", - "members": { - "NextToken": {}, - "DiscoveredResourceList": { - "type": "list", - "member": { - "shape": "Sa" - } - } - } - } - }, - "ListMigrationTasks": { - "input": { - "type": "structure", - "members": { - "NextToken": {}, - "MaxResults": { - "type": "integer" - }, - "ResourceName": {} - } - }, - "output": { - "type": "structure", - "members": { - "NextToken": {}, - "MigrationTaskSummaryList": { - "type": "list", - "member": { - "type": "structure", - "members": { - "ProgressUpdateStream": {}, - "MigrationTaskName": {}, - "Status": {}, - "ProgressPercent": { - "type": "integer" - }, - "StatusDetail": {}, - "UpdateDateTime": { - "type": "timestamp" - } - } - } - } - } - } - }, - "ListProgressUpdateStreams": { - "input": { - "type": "structure", - "members": { - "NextToken": {}, - "MaxResults": { - "type": "integer" - } - } - }, - "output": { - "type": "structure", - "members": { - "ProgressUpdateStreamSummaryList": { - "type": "list", - "member": { - "type": "structure", - "members": { - "ProgressUpdateStreamName": {} - } - } - }, - "NextToken": {} - } - } - }, - "NotifyApplicationState": { - "input": { - "type": "structure", - "required": [ - "ApplicationId", - "Status" - ], - "members": { - "ApplicationId": {}, - "Status": {}, - "DryRun": { - "type": "boolean" - } - } - }, - "output": { - "type": "structure", - "members": {} - } - }, - "NotifyMigrationTaskState": { - "input": { - "type": "structure", - "required": [ - "ProgressUpdateStream", - "MigrationTaskName", - "Task", - "UpdateDateTime", - "NextUpdateSeconds" - ], - "members": { - "ProgressUpdateStream": {}, - "MigrationTaskName": {}, - "Task": { - "shape": "Sq" - }, - "UpdateDateTime": { - "type": "timestamp" - }, - "NextUpdateSeconds": { - "type": "integer" - }, - "DryRun": { - "type": "boolean" - } - } - }, - "output": { - "type": "structure", - "members": {} - } - }, - "PutResourceAttributes": { - "input": { - "type": "structure", - "required": [ - "ProgressUpdateStream", - "MigrationTaskName", - "ResourceAttributeList" - ], - "members": { - "ProgressUpdateStream": {}, - "MigrationTaskName": {}, - "ResourceAttributeList": { - "type": "list", - "member": { - "shape": "Sv" - } - }, - "DryRun": { - "type": "boolean" - } - } - }, - "output": { - "type": "structure", - "members": {} - } - } - }, - "shapes": { - "S4": { - "type": "structure", - "required": [ - "Name" - ], - "members": { - "Name": {}, - "Description": {} - } - }, - "Sa": { - "type": "structure", - "required": [ - "ConfigurationId" - ], - "members": { - "ConfigurationId": {}, - "Description": {} - } - }, - "Sq": { - "type": "structure", - "required": [ - "Status" - ], - "members": { - "Status": {}, - "StatusDetail": {}, - "ProgressPercent": { - "type": "integer" - } - } - }, - "Sv": { - "type": "structure", - "required": [ - "Type", - "Value" - ], - "members": { - "Type": {}, - "Value": {} - } - } - } -} \ No newline at end of file diff --git a/workshops/monte-carlo-on-ec2-spot-fleet/src/web/node_modules/aws-sdk/apis/AWSMigrationHub-2017-05-31.paginators.json b/workshops/monte-carlo-on-ec2-spot-fleet/src/web/node_modules/aws-sdk/apis/AWSMigrationHub-2017-05-31.paginators.json deleted file mode 100644 index 5677bd8e..00000000 --- a/workshops/monte-carlo-on-ec2-spot-fleet/src/web/node_modules/aws-sdk/apis/AWSMigrationHub-2017-05-31.paginators.json +++ /dev/null @@ -1,4 +0,0 @@ -{ - "pagination": { - } -} diff --git a/workshops/monte-carlo-on-ec2-spot-fleet/src/web/node_modules/aws-sdk/apis/acm-2015-12-08.examples.json b/workshops/monte-carlo-on-ec2-spot-fleet/src/web/node_modules/aws-sdk/apis/acm-2015-12-08.examples.json deleted file mode 100644 index 0ea7e3b0..00000000 --- a/workshops/monte-carlo-on-ec2-spot-fleet/src/web/node_modules/aws-sdk/apis/acm-2015-12-08.examples.json +++ /dev/null @@ -1,5 +0,0 @@ -{ - "version": "1.0", - "examples": { - } -} diff --git a/workshops/monte-carlo-on-ec2-spot-fleet/src/web/node_modules/aws-sdk/apis/acm-2015-12-08.min.json b/workshops/monte-carlo-on-ec2-spot-fleet/src/web/node_modules/aws-sdk/apis/acm-2015-12-08.min.json deleted file mode 100644 index 5eb40a6a..00000000 --- a/workshops/monte-carlo-on-ec2-spot-fleet/src/web/node_modules/aws-sdk/apis/acm-2015-12-08.min.json +++ /dev/null @@ -1,313 +0,0 @@ -{ - "version": "2.0", - "metadata": { - "apiVersion": "2015-12-08", - "endpointPrefix": "acm", - "jsonVersion": "1.1", - "protocol": "json", - "serviceAbbreviation": "ACM", - "serviceFullName": "AWS Certificate Manager", - "signatureVersion": "v4", - "targetPrefix": "CertificateManager", - "uid": "acm-2015-12-08" - }, - "operations": { - "AddTagsToCertificate": { - "input": { - "type": "structure", - "required": [ - "CertificateArn", - "Tags" - ], - "members": { - "CertificateArn": {}, - "Tags": { - "shape": "S3" - } - } - } - }, - "DeleteCertificate": { - "input": { - "type": "structure", - "required": [ - "CertificateArn" - ], - "members": { - "CertificateArn": {} - } - } - }, - "DescribeCertificate": { - "input": { - "type": "structure", - "required": [ - "CertificateArn" - ], - "members": { - "CertificateArn": {} - } - }, - "output": { - "type": "structure", - "members": { - "Certificate": { - "type": "structure", - "members": { - "CertificateArn": {}, - "DomainName": {}, - "SubjectAlternativeNames": { - "shape": "Sc" - }, - "DomainValidationOptions": { - "shape": "Sd" - }, - "Serial": {}, - "Subject": {}, - "Issuer": {}, - "CreatedAt": { - "type": "timestamp" - }, - "IssuedAt": { - "type": "timestamp" - }, - "ImportedAt": { - "type": "timestamp" - }, - "Status": {}, - "RevokedAt": { - "type": "timestamp" - }, - "RevocationReason": {}, - "NotBefore": { - "type": "timestamp" - }, - "NotAfter": { - "type": "timestamp" - }, - "KeyAlgorithm": {}, - "SignatureAlgorithm": {}, - "InUseBy": { - "type": "list", - "member": {} - }, - "FailureReason": {}, - "Type": {}, - "RenewalSummary": { - "type": "structure", - "required": [ - "RenewalStatus", - "DomainValidationOptions" - ], - "members": { - "RenewalStatus": {}, - "DomainValidationOptions": { - "shape": "Sd" - } - } - } - } - } - } - } - }, - "GetCertificate": { - "input": { - "type": "structure", - "required": [ - "CertificateArn" - ], - "members": { - "CertificateArn": {} - } - }, - "output": { - "type": "structure", - "members": { - "Certificate": {}, - "CertificateChain": {} - } - } - }, - "ImportCertificate": { - "input": { - "type": "structure", - "required": [ - "Certificate", - "PrivateKey" - ], - "members": { - "CertificateArn": {}, - "Certificate": { - "type": "blob" - }, - "PrivateKey": { - "type": "blob", - "sensitive": true - }, - "CertificateChain": { - "type": "blob" - } - } - }, - "output": { - "type": "structure", - "members": { - "CertificateArn": {} - } - } - }, - "ListCertificates": { - "input": { - "type": "structure", - "members": { - "CertificateStatuses": { - "type": "list", - "member": {} - }, - "NextToken": {}, - "MaxItems": { - "type": "integer" - } - } - }, - "output": { - "type": "structure", - "members": { - "NextToken": {}, - "CertificateSummaryList": { - "type": "list", - "member": { - "type": "structure", - "members": { - "CertificateArn": {}, - "DomainName": {} - } - } - } - } - } - }, - "ListTagsForCertificate": { - "input": { - "type": "structure", - "required": [ - "CertificateArn" - ], - "members": { - "CertificateArn": {} - } - }, - "output": { - "type": "structure", - "members": { - "Tags": { - "shape": "S3" - } - } - } - }, - "RemoveTagsFromCertificate": { - "input": { - "type": "structure", - "required": [ - "CertificateArn", - "Tags" - ], - "members": { - "CertificateArn": {}, - "Tags": { - "shape": "S3" - } - } - } - }, - "RequestCertificate": { - "input": { - "type": "structure", - "required": [ - "DomainName" - ], - "members": { - "DomainName": {}, - "SubjectAlternativeNames": { - "shape": "Sc" - }, - "IdempotencyToken": {}, - "DomainValidationOptions": { - "type": "list", - "member": { - "type": "structure", - "required": [ - "DomainName", - "ValidationDomain" - ], - "members": { - "DomainName": {}, - "ValidationDomain": {} - } - } - } - } - }, - "output": { - "type": "structure", - "members": { - "CertificateArn": {} - } - } - }, - "ResendValidationEmail": { - "input": { - "type": "structure", - "required": [ - "CertificateArn", - "Domain", - "ValidationDomain" - ], - "members": { - "CertificateArn": {}, - "Domain": {}, - "ValidationDomain": {} - } - } - } - }, - "shapes": { - "S3": { - "type": "list", - "member": { - "type": "structure", - "required": [ - "Key" - ], - "members": { - "Key": {}, - "Value": {} - } - } - }, - "Sc": { - "type": "list", - "member": {} - }, - "Sd": { - "type": "list", - "member": { - "type": "structure", - "required": [ - "DomainName" - ], - "members": { - "DomainName": {}, - "ValidationEmails": { - "type": "list", - "member": {} - }, - "ValidationDomain": {}, - "ValidationStatus": {} - } - } - } - } -} \ No newline at end of file diff --git a/workshops/monte-carlo-on-ec2-spot-fleet/src/web/node_modules/aws-sdk/apis/acm-2015-12-08.paginators.json b/workshops/monte-carlo-on-ec2-spot-fleet/src/web/node_modules/aws-sdk/apis/acm-2015-12-08.paginators.json deleted file mode 100644 index 611eb86d..00000000 --- a/workshops/monte-carlo-on-ec2-spot-fleet/src/web/node_modules/aws-sdk/apis/acm-2015-12-08.paginators.json +++ /dev/null @@ -1,10 +0,0 @@ -{ - "pagination": { - "ListCertificates": { - "input_token": "NextToken", - "limit_key": "MaxItems", - "output_token": "NextToken", - "result_key": "CertificateSummaryList" - } - } -} \ No newline at end of file diff --git a/workshops/monte-carlo-on-ec2-spot-fleet/src/web/node_modules/aws-sdk/apis/apigateway-2015-07-09.examples.json b/workshops/monte-carlo-on-ec2-spot-fleet/src/web/node_modules/aws-sdk/apis/apigateway-2015-07-09.examples.json deleted file mode 100644 index 0ea7e3b0..00000000 --- a/workshops/monte-carlo-on-ec2-spot-fleet/src/web/node_modules/aws-sdk/apis/apigateway-2015-07-09.examples.json +++ /dev/null @@ -1,5 +0,0 @@ -{ - "version": "1.0", - "examples": { - } -} diff --git a/workshops/monte-carlo-on-ec2-spot-fleet/src/web/node_modules/aws-sdk/apis/apigateway-2015-07-09.min.json b/workshops/monte-carlo-on-ec2-spot-fleet/src/web/node_modules/aws-sdk/apis/apigateway-2015-07-09.min.json deleted file mode 100644 index c2d581e8..00000000 --- a/workshops/monte-carlo-on-ec2-spot-fleet/src/web/node_modules/aws-sdk/apis/apigateway-2015-07-09.min.json +++ /dev/null @@ -1,3975 +0,0 @@ -{ - "version": "2.0", - "metadata": { - "apiVersion": "2015-07-09", - "endpointPrefix": "apigateway", - "protocol": "rest-json", - "serviceFullName": "Amazon API Gateway", - "signatureVersion": "v4", - "uid": "apigateway-2015-07-09" - }, - "operations": { - "CreateApiKey": { - "http": { - "requestUri": "/apikeys", - "responseCode": 201 - }, - "input": { - "type": "structure", - "members": { - "name": {}, - "description": {}, - "enabled": { - "type": "boolean" - }, - "generateDistinctId": { - "type": "boolean" - }, - "value": {}, - "stageKeys": { - "type": "list", - "member": { - "type": "structure", - "members": { - "restApiId": {}, - "stageName": {} - } - } - }, - "customerId": {} - } - }, - "output": { - "shape": "S6" - } - }, - "CreateAuthorizer": { - "http": { - "requestUri": "/restapis/{restapi_id}/authorizers", - "responseCode": 201 - }, - "input": { - "type": "structure", - "required": [ - "restApiId", - "name", - "type" - ], - "members": { - "restApiId": { - "location": "uri", - "locationName": "restapi_id" - }, - "name": {}, - "type": {}, - "providerARNs": { - "shape": "Sb" - }, - "authType": {}, - "authorizerUri": {}, - "authorizerCredentials": {}, - "identitySource": {}, - "identityValidationExpression": {}, - "authorizerResultTtlInSeconds": { - "type": "integer" - } - } - }, - "output": { - "shape": "Se" - } - }, - "CreateBasePathMapping": { - "http": { - "requestUri": "/domainnames/{domain_name}/basepathmappings", - "responseCode": 201 - }, - "input": { - "type": "structure", - "required": [ - "domainName", - "restApiId" - ], - "members": { - "domainName": { - "location": "uri", - "locationName": "domain_name" - }, - "basePath": {}, - "restApiId": {}, - "stage": {} - } - }, - "output": { - "shape": "Sg" - } - }, - "CreateDeployment": { - "http": { - "requestUri": "/restapis/{restapi_id}/deployments", - "responseCode": 201 - }, - "input": { - "type": "structure", - "required": [ - "restApiId" - ], - "members": { - "restApiId": { - "location": "uri", - "locationName": "restapi_id" - }, - "stageName": {}, - "stageDescription": {}, - "description": {}, - "cacheClusterEnabled": { - "type": "boolean" - }, - "cacheClusterSize": {}, - "variables": { - "shape": "Sk" - } - } - }, - "output": { - "shape": "Sl" - } - }, - "CreateDocumentationPart": { - "http": { - "requestUri": "/restapis/{restapi_id}/documentation/parts", - "responseCode": 201 - }, - "input": { - "type": "structure", - "required": [ - "restApiId", - "location", - "properties" - ], - "members": { - "restApiId": { - "location": "uri", - "locationName": "restapi_id" - }, - "location": { - "shape": "Sq" - }, - "properties": {} - } - }, - "output": { - "shape": "St" - } - }, - "CreateDocumentationVersion": { - "http": { - "requestUri": "/restapis/{restapi_id}/documentation/versions", - "responseCode": 201 - }, - "input": { - "type": "structure", - "required": [ - "restApiId", - "documentationVersion" - ], - "members": { - "restApiId": { - "location": "uri", - "locationName": "restapi_id" - }, - "documentationVersion": {}, - "stageName": {}, - "description": {} - } - }, - "output": { - "shape": "Sv" - } - }, - "CreateDomainName": { - "http": { - "requestUri": "/domainnames", - "responseCode": 201 - }, - "input": { - "type": "structure", - "required": [ - "domainName" - ], - "members": { - "domainName": {}, - "certificateName": {}, - "certificateBody": {}, - "certificatePrivateKey": {}, - "certificateChain": {}, - "certificateArn": {} - } - }, - "output": { - "shape": "Sx" - } - }, - "CreateModel": { - "http": { - "requestUri": "/restapis/{restapi_id}/models", - "responseCode": 201 - }, - "input": { - "type": "structure", - "required": [ - "restApiId", - "name", - "contentType" - ], - "members": { - "restApiId": { - "location": "uri", - "locationName": "restapi_id" - }, - "name": {}, - "description": {}, - "schema": {}, - "contentType": {} - } - }, - "output": { - "shape": "Sz" - } - }, - "CreateRequestValidator": { - "http": { - "requestUri": "/restapis/{restapi_id}/requestvalidators", - "responseCode": 201 - }, - "input": { - "type": "structure", - "required": [ - "restApiId" - ], - "members": { - "restApiId": { - "location": "uri", - "locationName": "restapi_id" - }, - "name": {}, - "validateRequestBody": { - "type": "boolean" - }, - "validateRequestParameters": { - "type": "boolean" - } - } - }, - "output": { - "shape": "S11" - } - }, - "CreateResource": { - "http": { - "requestUri": "/restapis/{restapi_id}/resources/{parent_id}", - "responseCode": 201 - }, - "input": { - "type": "structure", - "required": [ - "restApiId", - "parentId", - "pathPart" - ], - "members": { - "restApiId": { - "location": "uri", - "locationName": "restapi_id" - }, - "parentId": { - "location": "uri", - "locationName": "parent_id" - }, - "pathPart": {} - } - }, - "output": { - "shape": "S13" - } - }, - "CreateRestApi": { - "http": { - "requestUri": "/restapis", - "responseCode": 201 - }, - "input": { - "type": "structure", - "required": [ - "name" - ], - "members": { - "name": {}, - "description": {}, - "version": {}, - "cloneFrom": {}, - "binaryMediaTypes": { - "shape": "S8" - } - } - }, - "output": { - "shape": "S1g" - } - }, - "CreateStage": { - "http": { - "requestUri": "/restapis/{restapi_id}/stages", - "responseCode": 201 - }, - "input": { - "type": "structure", - "required": [ - "restApiId", - "stageName", - "deploymentId" - ], - "members": { - "restApiId": { - "location": "uri", - "locationName": "restapi_id" - }, - "stageName": {}, - "deploymentId": {}, - "description": {}, - "cacheClusterEnabled": { - "type": "boolean" - }, - "cacheClusterSize": {}, - "variables": { - "shape": "Sk" - }, - "documentationVersion": {} - } - }, - "output": { - "shape": "S1i" - } - }, - "CreateUsagePlan": { - "http": { - "requestUri": "/usageplans", - "responseCode": 201 - }, - "input": { - "type": "structure", - "required": [ - "name" - ], - "members": { - "name": {}, - "description": {}, - "apiStages": { - "shape": "S1q" - }, - "throttle": { - "shape": "S1s" - }, - "quota": { - "shape": "S1t" - } - } - }, - "output": { - "shape": "S1v" - } - }, - "CreateUsagePlanKey": { - "http": { - "requestUri": "/usageplans/{usageplanId}/keys", - "responseCode": 201 - }, - "input": { - "type": "structure", - "required": [ - "usagePlanId", - "keyId", - "keyType" - ], - "members": { - "usagePlanId": { - "location": "uri", - "locationName": "usageplanId" - }, - "keyId": {}, - "keyType": {} - } - }, - "output": { - "shape": "S1x" - } - }, - "DeleteApiKey": { - "http": { - "method": "DELETE", - "requestUri": "/apikeys/{api_Key}", - "responseCode": 202 - }, - "input": { - "type": "structure", - "required": [ - "apiKey" - ], - "members": { - "apiKey": { - "location": "uri", - "locationName": "api_Key" - } - } - } - }, - "DeleteAuthorizer": { - "http": { - "method": "DELETE", - "requestUri": "/restapis/{restapi_id}/authorizers/{authorizer_id}", - "responseCode": 202 - }, - "input": { - "type": "structure", - "required": [ - "restApiId", - "authorizerId" - ], - "members": { - "restApiId": { - "location": "uri", - "locationName": "restapi_id" - }, - "authorizerId": { - "location": "uri", - "locationName": "authorizer_id" - } - } - } - }, - "DeleteBasePathMapping": { - "http": { - "method": "DELETE", - "requestUri": "/domainnames/{domain_name}/basepathmappings/{base_path}", - "responseCode": 202 - }, - "input": { - "type": "structure", - "required": [ - "domainName", - "basePath" - ], - "members": { - "domainName": { - "location": "uri", - "locationName": "domain_name" - }, - "basePath": { - "location": "uri", - "locationName": "base_path" - } - } - } - }, - "DeleteClientCertificate": { - "http": { - "method": "DELETE", - "requestUri": "/clientcertificates/{clientcertificate_id}", - "responseCode": 202 - }, - "input": { - "type": "structure", - "required": [ - "clientCertificateId" - ], - "members": { - "clientCertificateId": { - "location": "uri", - "locationName": "clientcertificate_id" - } - } - } - }, - "DeleteDeployment": { - "http": { - "method": "DELETE", - "requestUri": "/restapis/{restapi_id}/deployments/{deployment_id}", - "responseCode": 202 - }, - "input": { - "type": "structure", - "required": [ - "restApiId", - "deploymentId" - ], - "members": { - "restApiId": { - "location": "uri", - "locationName": "restapi_id" - }, - "deploymentId": { - "location": "uri", - "locationName": "deployment_id" - } - } - } - }, - "DeleteDocumentationPart": { - "http": { - "method": "DELETE", - "requestUri": "/restapis/{restapi_id}/documentation/parts/{part_id}", - "responseCode": 202 - }, - "input": { - "type": "structure", - "required": [ - "restApiId", - "documentationPartId" - ], - "members": { - "restApiId": { - "location": "uri", - "locationName": "restapi_id" - }, - "documentationPartId": { - "location": "uri", - "locationName": "part_id" - } - } - } - }, - "DeleteDocumentationVersion": { - "http": { - "method": "DELETE", - "requestUri": "/restapis/{restapi_id}/documentation/versions/{doc_version}", - "responseCode": 202 - }, - "input": { - "type": "structure", - "required": [ - "restApiId", - "documentationVersion" - ], - "members": { - "restApiId": { - "location": "uri", - "locationName": "restapi_id" - }, - "documentationVersion": { - "location": "uri", - "locationName": "doc_version" - } - } - } - }, - "DeleteDomainName": { - "http": { - "method": "DELETE", - "requestUri": "/domainnames/{domain_name}", - "responseCode": 202 - }, - "input": { - "type": "structure", - "required": [ - "domainName" - ], - "members": { - "domainName": { - "location": "uri", - "locationName": "domain_name" - } - } - } - }, - "DeleteGatewayResponse": { - "http": { - "method": "DELETE", - "requestUri": "/restapis/{restapi_id}/gatewayresponses/{response_type}", - "responseCode": 202 - }, - "input": { - "type": "structure", - "required": [ - "restApiId", - "responseType" - ], - "members": { - "restApiId": { - "location": "uri", - "locationName": "restapi_id" - }, - "responseType": { - "location": "uri", - "locationName": "response_type" - } - } - } - }, - "DeleteIntegration": { - "http": { - "method": "DELETE", - "requestUri": "/restapis/{restapi_id}/resources/{resource_id}/methods/{http_method}/integration", - "responseCode": 204 - }, - "input": { - "type": "structure", - "required": [ - "restApiId", - "resourceId", - "httpMethod" - ], - "members": { - "restApiId": { - "location": "uri", - "locationName": "restapi_id" - }, - "resourceId": { - "location": "uri", - "locationName": "resource_id" - }, - "httpMethod": { - "location": "uri", - "locationName": "http_method" - } - } - } - }, - "DeleteIntegrationResponse": { - "http": { - "method": "DELETE", - "requestUri": "/restapis/{restapi_id}/resources/{resource_id}/methods/{http_method}/integration/responses/{status_code}", - "responseCode": 204 - }, - "input": { - "type": "structure", - "required": [ - "restApiId", - "resourceId", - "httpMethod", - "statusCode" - ], - "members": { - "restApiId": { - "location": "uri", - "locationName": "restapi_id" - }, - "resourceId": { - "location": "uri", - "locationName": "resource_id" - }, - "httpMethod": { - "location": "uri", - "locationName": "http_method" - }, - "statusCode": { - "location": "uri", - "locationName": "status_code" - } - } - } - }, - "DeleteMethod": { - "http": { - "method": "DELETE", - "requestUri": "/restapis/{restapi_id}/resources/{resource_id}/methods/{http_method}", - "responseCode": 204 - }, - "input": { - "type": "structure", - "required": [ - "restApiId", - "resourceId", - "httpMethod" - ], - "members": { - "restApiId": { - "location": "uri", - "locationName": "restapi_id" - }, - "resourceId": { - "location": "uri", - "locationName": "resource_id" - }, - "httpMethod": { - "location": "uri", - "locationName": "http_method" - } - } - } - }, - "DeleteMethodResponse": { - "http": { - "method": "DELETE", - "requestUri": "/restapis/{restapi_id}/resources/{resource_id}/methods/{http_method}/responses/{status_code}", - "responseCode": 204 - }, - "input": { - "type": "structure", - "required": [ - "restApiId", - "resourceId", - "httpMethod", - "statusCode" - ], - "members": { - "restApiId": { - "location": "uri", - "locationName": "restapi_id" - }, - "resourceId": { - "location": "uri", - "locationName": "resource_id" - }, - "httpMethod": { - "location": "uri", - "locationName": "http_method" - }, - "statusCode": { - "location": "uri", - "locationName": "status_code" - } - } - } - }, - "DeleteModel": { - "http": { - "method": "DELETE", - "requestUri": "/restapis/{restapi_id}/models/{model_name}", - "responseCode": 202 - }, - "input": { - "type": "structure", - "required": [ - "restApiId", - "modelName" - ], - "members": { - "restApiId": { - "location": "uri", - "locationName": "restapi_id" - }, - "modelName": { - "location": "uri", - "locationName": "model_name" - } - } - } - }, - "DeleteRequestValidator": { - "http": { - "method": "DELETE", - "requestUri": "/restapis/{restapi_id}/requestvalidators/{requestvalidator_id}", - "responseCode": 202 - }, - "input": { - "type": "structure", - "required": [ - "restApiId", - "requestValidatorId" - ], - "members": { - "restApiId": { - "location": "uri", - "locationName": "restapi_id" - }, - "requestValidatorId": { - "location": "uri", - "locationName": "requestvalidator_id" - } - } - } - }, - "DeleteResource": { - "http": { - "method": "DELETE", - "requestUri": "/restapis/{restapi_id}/resources/{resource_id}", - "responseCode": 202 - }, - "input": { - "type": "structure", - "required": [ - "restApiId", - "resourceId" - ], - "members": { - "restApiId": { - "location": "uri", - "locationName": "restapi_id" - }, - "resourceId": { - "location": "uri", - "locationName": "resource_id" - } - } - } - }, - "DeleteRestApi": { - "http": { - "method": "DELETE", - "requestUri": "/restapis/{restapi_id}", - "responseCode": 202 - }, - "input": { - "type": "structure", - "required": [ - "restApiId" - ], - "members": { - "restApiId": { - "location": "uri", - "locationName": "restapi_id" - } - } - } - }, - "DeleteStage": { - "http": { - "method": "DELETE", - "requestUri": "/restapis/{restapi_id}/stages/{stage_name}", - "responseCode": 202 - }, - "input": { - "type": "structure", - "required": [ - "restApiId", - "stageName" - ], - "members": { - "restApiId": { - "location": "uri", - "locationName": "restapi_id" - }, - "stageName": { - "location": "uri", - "locationName": "stage_name" - } - } - } - }, - "DeleteUsagePlan": { - "http": { - "method": "DELETE", - "requestUri": "/usageplans/{usageplanId}", - "responseCode": 202 - }, - "input": { - "type": "structure", - "required": [ - "usagePlanId" - ], - "members": { - "usagePlanId": { - "location": "uri", - "locationName": "usageplanId" - } - } - } - }, - "DeleteUsagePlanKey": { - "http": { - "method": "DELETE", - "requestUri": "/usageplans/{usageplanId}/keys/{keyId}", - "responseCode": 202 - }, - "input": { - "type": "structure", - "required": [ - "usagePlanId", - "keyId" - ], - "members": { - "usagePlanId": { - "location": "uri", - "locationName": "usageplanId" - }, - "keyId": { - "location": "uri", - "locationName": "keyId" - } - } - } - }, - "FlushStageAuthorizersCache": { - "http": { - "method": "DELETE", - "requestUri": "/restapis/{restapi_id}/stages/{stage_name}/cache/authorizers", - "responseCode": 202 - }, - "input": { - "type": "structure", - "required": [ - "restApiId", - "stageName" - ], - "members": { - "restApiId": { - "location": "uri", - "locationName": "restapi_id" - }, - "stageName": { - "location": "uri", - "locationName": "stage_name" - } - } - } - }, - "FlushStageCache": { - "http": { - "method": "DELETE", - "requestUri": "/restapis/{restapi_id}/stages/{stage_name}/cache/data", - "responseCode": 202 - }, - "input": { - "type": "structure", - "required": [ - "restApiId", - "stageName" - ], - "members": { - "restApiId": { - "location": "uri", - "locationName": "restapi_id" - }, - "stageName": { - "location": "uri", - "locationName": "stage_name" - } - } - } - }, - "GenerateClientCertificate": { - "http": { - "requestUri": "/clientcertificates", - "responseCode": 201 - }, - "input": { - "type": "structure", - "members": { - "description": {} - } - }, - "output": { - "shape": "S2m" - } - }, - "GetAccount": { - "http": { - "method": "GET", - "requestUri": "/account" - }, - "input": { - "type": "structure", - "members": {} - }, - "output": { - "shape": "S2o" - } - }, - "GetApiKey": { - "http": { - "method": "GET", - "requestUri": "/apikeys/{api_Key}" - }, - "input": { - "type": "structure", - "required": [ - "apiKey" - ], - "members": { - "apiKey": { - "location": "uri", - "locationName": "api_Key" - }, - "includeValue": { - "location": "querystring", - "locationName": "includeValue", - "type": "boolean" - } - } - }, - "output": { - "shape": "S6" - } - }, - "GetApiKeys": { - "http": { - "method": "GET", - "requestUri": "/apikeys" - }, - "input": { - "type": "structure", - "members": { - "position": { - "location": "querystring", - "locationName": "position" - }, - "limit": { - "location": "querystring", - "locationName": "limit", - "type": "integer" - }, - "nameQuery": { - "location": "querystring", - "locationName": "name" - }, - "customerId": { - "location": "querystring", - "locationName": "customerId" - }, - "includeValues": { - "location": "querystring", - "locationName": "includeValues", - "type": "boolean" - } - } - }, - "output": { - "type": "structure", - "members": { - "warnings": { - "shape": "S8" - }, - "position": {}, - "items": { - "locationName": "item", - "type": "list", - "member": { - "shape": "S6" - } - } - } - } - }, - "GetAuthorizer": { - "http": { - "method": "GET", - "requestUri": "/restapis/{restapi_id}/authorizers/{authorizer_id}" - }, - "input": { - "type": "structure", - "required": [ - "restApiId", - "authorizerId" - ], - "members": { - "restApiId": { - "location": "uri", - "locationName": "restapi_id" - }, - "authorizerId": { - "location": "uri", - "locationName": "authorizer_id" - } - } - }, - "output": { - "shape": "Se" - } - }, - "GetAuthorizers": { - "http": { - "method": "GET", - "requestUri": "/restapis/{restapi_id}/authorizers" - }, - "input": { - "type": "structure", - "required": [ - "restApiId" - ], - "members": { - "restApiId": { - "location": "uri", - "locationName": "restapi_id" - }, - "position": { - "location": "querystring", - "locationName": "position" - }, - "limit": { - "location": "querystring", - "locationName": "limit", - "type": "integer" - } - } - }, - "output": { - "type": "structure", - "members": { - "position": {}, - "items": { - "locationName": "item", - "type": "list", - "member": { - "shape": "Se" - } - } - } - } - }, - "GetBasePathMapping": { - "http": { - "method": "GET", - "requestUri": "/domainnames/{domain_name}/basepathmappings/{base_path}" - }, - "input": { - "type": "structure", - "required": [ - "domainName", - "basePath" - ], - "members": { - "domainName": { - "location": "uri", - "locationName": "domain_name" - }, - "basePath": { - "location": "uri", - "locationName": "base_path" - } - } - }, - "output": { - "shape": "Sg" - } - }, - "GetBasePathMappings": { - "http": { - "method": "GET", - "requestUri": "/domainnames/{domain_name}/basepathmappings" - }, - "input": { - "type": "structure", - "required": [ - "domainName" - ], - "members": { - "domainName": { - "location": "uri", - "locationName": "domain_name" - }, - "position": { - "location": "querystring", - "locationName": "position" - }, - "limit": { - "location": "querystring", - "locationName": "limit", - "type": "integer" - } - } - }, - "output": { - "type": "structure", - "members": { - "position": {}, - "items": { - "locationName": "item", - "type": "list", - "member": { - "shape": "Sg" - } - } - } - } - }, - "GetClientCertificate": { - "http": { - "method": "GET", - "requestUri": "/clientcertificates/{clientcertificate_id}" - }, - "input": { - "type": "structure", - "required": [ - "clientCertificateId" - ], - "members": { - "clientCertificateId": { - "location": "uri", - "locationName": "clientcertificate_id" - } - } - }, - "output": { - "shape": "S2m" - } - }, - "GetClientCertificates": { - "http": { - "method": "GET", - "requestUri": "/clientcertificates" - }, - "input": { - "type": "structure", - "members": { - "position": { - "location": "querystring", - "locationName": "position" - }, - "limit": { - "location": "querystring", - "locationName": "limit", - "type": "integer" - } - } - }, - "output": { - "type": "structure", - "members": { - "position": {}, - "items": { - "locationName": "item", - "type": "list", - "member": { - "shape": "S2m" - } - } - } - } - }, - "GetDeployment": { - "http": { - "method": "GET", - "requestUri": "/restapis/{restapi_id}/deployments/{deployment_id}" - }, - "input": { - "type": "structure", - "required": [ - "restApiId", - "deploymentId" - ], - "members": { - "restApiId": { - "location": "uri", - "locationName": "restapi_id" - }, - "deploymentId": { - "location": "uri", - "locationName": "deployment_id" - }, - "embed": { - "shape": "S8", - "location": "querystring", - "locationName": "embed" - } - } - }, - "output": { - "shape": "Sl" - } - }, - "GetDeployments": { - "http": { - "method": "GET", - "requestUri": "/restapis/{restapi_id}/deployments" - }, - "input": { - "type": "structure", - "required": [ - "restApiId" - ], - "members": { - "restApiId": { - "location": "uri", - "locationName": "restapi_id" - }, - "position": { - "location": "querystring", - "locationName": "position" - }, - "limit": { - "location": "querystring", - "locationName": "limit", - "type": "integer" - } - } - }, - "output": { - "type": "structure", - "members": { - "position": {}, - "items": { - "locationName": "item", - "type": "list", - "member": { - "shape": "Sl" - } - } - } - } - }, - "GetDocumentationPart": { - "http": { - "method": "GET", - "requestUri": "/restapis/{restapi_id}/documentation/parts/{part_id}" - }, - "input": { - "type": "structure", - "required": [ - "restApiId", - "documentationPartId" - ], - "members": { - "restApiId": { - "location": "uri", - "locationName": "restapi_id" - }, - "documentationPartId": { - "location": "uri", - "locationName": "part_id" - } - } - }, - "output": { - "shape": "St" - } - }, - "GetDocumentationParts": { - "http": { - "method": "GET", - "requestUri": "/restapis/{restapi_id}/documentation/parts" - }, - "input": { - "type": "structure", - "required": [ - "restApiId" - ], - "members": { - "restApiId": { - "location": "uri", - "locationName": "restapi_id" - }, - "type": { - "location": "querystring", - "locationName": "type" - }, - "nameQuery": { - "location": "querystring", - "locationName": "name" - }, - "path": { - "location": "querystring", - "locationName": "path" - }, - "position": { - "location": "querystring", - "locationName": "position" - }, - "limit": { - "location": "querystring", - "locationName": "limit", - "type": "integer" - } - } - }, - "output": { - "type": "structure", - "members": { - "position": {}, - "items": { - "locationName": "item", - "type": "list", - "member": { - "shape": "St" - } - } - } - } - }, - "GetDocumentationVersion": { - "http": { - "method": "GET", - "requestUri": "/restapis/{restapi_id}/documentation/versions/{doc_version}" - }, - "input": { - "type": "structure", - "required": [ - "restApiId", - "documentationVersion" - ], - "members": { - "restApiId": { - "location": "uri", - "locationName": "restapi_id" - }, - "documentationVersion": { - "location": "uri", - "locationName": "doc_version" - } - } - }, - "output": { - "shape": "Sv" - } - }, - "GetDocumentationVersions": { - "http": { - "method": "GET", - "requestUri": "/restapis/{restapi_id}/documentation/versions" - }, - "input": { - "type": "structure", - "required": [ - "restApiId" - ], - "members": { - "restApiId": { - "location": "uri", - "locationName": "restapi_id" - }, - "position": { - "location": "querystring", - "locationName": "position" - }, - "limit": { - "location": "querystring", - "locationName": "limit", - "type": "integer" - } - } - }, - "output": { - "type": "structure", - "members": { - "position": {}, - "items": { - "locationName": "item", - "type": "list", - "member": { - "shape": "Sv" - } - } - } - } - }, - "GetDomainName": { - "http": { - "method": "GET", - "requestUri": "/domainnames/{domain_name}" - }, - "input": { - "type": "structure", - "required": [ - "domainName" - ], - "members": { - "domainName": { - "location": "uri", - "locationName": "domain_name" - } - } - }, - "output": { - "shape": "Sx" - } - }, - "GetDomainNames": { - "http": { - "method": "GET", - "requestUri": "/domainnames" - }, - "input": { - "type": "structure", - "members": { - "position": { - "location": "querystring", - "locationName": "position" - }, - "limit": { - "location": "querystring", - "locationName": "limit", - "type": "integer" - } - } - }, - "output": { - "type": "structure", - "members": { - "position": {}, - "items": { - "locationName": "item", - "type": "list", - "member": { - "shape": "Sx" - } - } - } - } - }, - "GetExport": { - "http": { - "method": "GET", - "requestUri": "/restapis/{restapi_id}/stages/{stage_name}/exports/{export_type}", - "responseCode": 200 - }, - "input": { - "type": "structure", - "required": [ - "restApiId", - "stageName", - "exportType" - ], - "members": { - "restApiId": { - "location": "uri", - "locationName": "restapi_id" - }, - "stageName": { - "location": "uri", - "locationName": "stage_name" - }, - "exportType": { - "location": "uri", - "locationName": "export_type" - }, - "parameters": { - "shape": "Sk", - "location": "querystring" - }, - "accepts": { - "location": "header", - "locationName": "Accept" - } - } - }, - "output": { - "type": "structure", - "members": { - "contentType": { - "location": "header", - "locationName": "Content-Type" - }, - "contentDisposition": { - "location": "header", - "locationName": "Content-Disposition" - }, - "body": { - "type": "blob" - } - }, - "payload": "body" - } - }, - "GetGatewayResponse": { - "http": { - "method": "GET", - "requestUri": "/restapis/{restapi_id}/gatewayresponses/{response_type}" - }, - "input": { - "type": "structure", - "required": [ - "restApiId", - "responseType" - ], - "members": { - "restApiId": { - "location": "uri", - "locationName": "restapi_id" - }, - "responseType": { - "location": "uri", - "locationName": "response_type" - } - } - }, - "output": { - "shape": "S3p" - } - }, - "GetGatewayResponses": { - "http": { - "method": "GET", - "requestUri": "/restapis/{restapi_id}/gatewayresponses" - }, - "input": { - "type": "structure", - "required": [ - "restApiId" - ], - "members": { - "restApiId": { - "location": "uri", - "locationName": "restapi_id" - }, - "position": { - "location": "querystring", - "locationName": "position" - }, - "limit": { - "location": "querystring", - "locationName": "limit", - "type": "integer" - } - } - }, - "output": { - "type": "structure", - "members": { - "position": {}, - "items": { - "locationName": "item", - "type": "list", - "member": { - "shape": "S3p" - } - } - } - } - }, - "GetIntegration": { - "http": { - "method": "GET", - "requestUri": "/restapis/{restapi_id}/resources/{resource_id}/methods/{http_method}/integration" - }, - "input": { - "type": "structure", - "required": [ - "restApiId", - "resourceId", - "httpMethod" - ], - "members": { - "restApiId": { - "location": "uri", - "locationName": "restapi_id" - }, - "resourceId": { - "location": "uri", - "locationName": "resource_id" - }, - "httpMethod": { - "location": "uri", - "locationName": "http_method" - } - } - }, - "output": { - "shape": "S1a" - } - }, - "GetIntegrationResponse": { - "http": { - "method": "GET", - "requestUri": "/restapis/{restapi_id}/resources/{resource_id}/methods/{http_method}/integration/responses/{status_code}" - }, - "input": { - "type": "structure", - "required": [ - "restApiId", - "resourceId", - "httpMethod", - "statusCode" - ], - "members": { - "restApiId": { - "location": "uri", - "locationName": "restapi_id" - }, - "resourceId": { - "location": "uri", - "locationName": "resource_id" - }, - "httpMethod": { - "location": "uri", - "locationName": "http_method" - }, - "statusCode": { - "location": "uri", - "locationName": "status_code" - } - } - }, - "output": { - "shape": "S1e" - } - }, - "GetMethod": { - "http": { - "method": "GET", - "requestUri": "/restapis/{restapi_id}/resources/{resource_id}/methods/{http_method}" - }, - "input": { - "type": "structure", - "required": [ - "restApiId", - "resourceId", - "httpMethod" - ], - "members": { - "restApiId": { - "location": "uri", - "locationName": "restapi_id" - }, - "resourceId": { - "location": "uri", - "locationName": "resource_id" - }, - "httpMethod": { - "location": "uri", - "locationName": "http_method" - } - } - }, - "output": { - "shape": "S15" - } - }, - "GetMethodResponse": { - "http": { - "method": "GET", - "requestUri": "/restapis/{restapi_id}/resources/{resource_id}/methods/{http_method}/responses/{status_code}" - }, - "input": { - "type": "structure", - "required": [ - "restApiId", - "resourceId", - "httpMethod", - "statusCode" - ], - "members": { - "restApiId": { - "location": "uri", - "locationName": "restapi_id" - }, - "resourceId": { - "location": "uri", - "locationName": "resource_id" - }, - "httpMethod": { - "location": "uri", - "locationName": "http_method" - }, - "statusCode": { - "location": "uri", - "locationName": "status_code" - } - } - }, - "output": { - "shape": "S18" - } - }, - "GetModel": { - "http": { - "method": "GET", - "requestUri": "/restapis/{restapi_id}/models/{model_name}" - }, - "input": { - "type": "structure", - "required": [ - "restApiId", - "modelName" - ], - "members": { - "restApiId": { - "location": "uri", - "locationName": "restapi_id" - }, - "modelName": { - "location": "uri", - "locationName": "model_name" - }, - "flatten": { - "location": "querystring", - "locationName": "flatten", - "type": "boolean" - } - } - }, - "output": { - "shape": "Sz" - } - }, - "GetModelTemplate": { - "http": { - "method": "GET", - "requestUri": "/restapis/{restapi_id}/models/{model_name}/default_template" - }, - "input": { - "type": "structure", - "required": [ - "restApiId", - "modelName" - ], - "members": { - "restApiId": { - "location": "uri", - "locationName": "restapi_id" - }, - "modelName": { - "location": "uri", - "locationName": "model_name" - } - } - }, - "output": { - "type": "structure", - "members": { - "value": {} - } - } - }, - "GetModels": { - "http": { - "method": "GET", - "requestUri": "/restapis/{restapi_id}/models" - }, - "input": { - "type": "structure", - "required": [ - "restApiId" - ], - "members": { - "restApiId": { - "location": "uri", - "locationName": "restapi_id" - }, - "position": { - "location": "querystring", - "locationName": "position" - }, - "limit": { - "location": "querystring", - "locationName": "limit", - "type": "integer" - } - } - }, - "output": { - "type": "structure", - "members": { - "position": {}, - "items": { - "locationName": "item", - "type": "list", - "member": { - "shape": "Sz" - } - } - } - } - }, - "GetRequestValidator": { - "http": { - "method": "GET", - "requestUri": "/restapis/{restapi_id}/requestvalidators/{requestvalidator_id}" - }, - "input": { - "type": "structure", - "required": [ - "restApiId", - "requestValidatorId" - ], - "members": { - "restApiId": { - "location": "uri", - "locationName": "restapi_id" - }, - "requestValidatorId": { - "location": "uri", - "locationName": "requestvalidator_id" - } - } - }, - "output": { - "shape": "S11" - } - }, - "GetRequestValidators": { - "http": { - "method": "GET", - "requestUri": "/restapis/{restapi_id}/requestvalidators" - }, - "input": { - "type": "structure", - "required": [ - "restApiId" - ], - "members": { - "restApiId": { - "location": "uri", - "locationName": "restapi_id" - }, - "position": { - "location": "querystring", - "locationName": "position" - }, - "limit": { - "location": "querystring", - "locationName": "limit", - "type": "integer" - } - } - }, - "output": { - "type": "structure", - "members": { - "position": {}, - "items": { - "locationName": "item", - "type": "list", - "member": { - "shape": "S11" - } - } - } - } - }, - "GetResource": { - "http": { - "method": "GET", - "requestUri": "/restapis/{restapi_id}/resources/{resource_id}" - }, - "input": { - "type": "structure", - "required": [ - "restApiId", - "resourceId" - ], - "members": { - "restApiId": { - "location": "uri", - "locationName": "restapi_id" - }, - "resourceId": { - "location": "uri", - "locationName": "resource_id" - }, - "embed": { - "shape": "S8", - "location": "querystring", - "locationName": "embed" - } - } - }, - "output": { - "shape": "S13" - } - }, - "GetResources": { - "http": { - "method": "GET", - "requestUri": "/restapis/{restapi_id}/resources" - }, - "input": { - "type": "structure", - "required": [ - "restApiId" - ], - "members": { - "restApiId": { - "location": "uri", - "locationName": "restapi_id" - }, - "position": { - "location": "querystring", - "locationName": "position" - }, - "limit": { - "location": "querystring", - "locationName": "limit", - "type": "integer" - }, - "embed": { - "shape": "S8", - "location": "querystring", - "locationName": "embed" - } - } - }, - "output": { - "type": "structure", - "members": { - "position": {}, - "items": { - "locationName": "item", - "type": "list", - "member": { - "shape": "S13" - } - } - } - } - }, - "GetRestApi": { - "http": { - "method": "GET", - "requestUri": "/restapis/{restapi_id}" - }, - "input": { - "type": "structure", - "required": [ - "restApiId" - ], - "members": { - "restApiId": { - "location": "uri", - "locationName": "restapi_id" - } - } - }, - "output": { - "shape": "S1g" - } - }, - "GetRestApis": { - "http": { - "method": "GET", - "requestUri": "/restapis" - }, - "input": { - "type": "structure", - "members": { - "position": { - "location": "querystring", - "locationName": "position" - }, - "limit": { - "location": "querystring", - "locationName": "limit", - "type": "integer" - } - } - }, - "output": { - "type": "structure", - "members": { - "position": {}, - "items": { - "locationName": "item", - "type": "list", - "member": { - "shape": "S1g" - } - } - } - } - }, - "GetSdk": { - "http": { - "method": "GET", - "requestUri": "/restapis/{restapi_id}/stages/{stage_name}/sdks/{sdk_type}", - "responseCode": 200 - }, - "input": { - "type": "structure", - "required": [ - "restApiId", - "stageName", - "sdkType" - ], - "members": { - "restApiId": { - "location": "uri", - "locationName": "restapi_id" - }, - "stageName": { - "location": "uri", - "locationName": "stage_name" - }, - "sdkType": { - "location": "uri", - "locationName": "sdk_type" - }, - "parameters": { - "shape": "Sk", - "location": "querystring" - } - } - }, - "output": { - "type": "structure", - "members": { - "contentType": { - "location": "header", - "locationName": "Content-Type" - }, - "contentDisposition": { - "location": "header", - "locationName": "Content-Disposition" - }, - "body": { - "type": "blob" - } - }, - "payload": "body" - } - }, - "GetSdkType": { - "http": { - "method": "GET", - "requestUri": "/sdktypes/{sdktype_id}" - }, - "input": { - "type": "structure", - "required": [ - "id" - ], - "members": { - "id": { - "location": "uri", - "locationName": "sdktype_id" - } - } - }, - "output": { - "shape": "S4i" - } - }, - "GetSdkTypes": { - "http": { - "method": "GET", - "requestUri": "/sdktypes" - }, - "input": { - "type": "structure", - "members": { - "position": { - "location": "querystring", - "locationName": "position" - }, - "limit": { - "location": "querystring", - "locationName": "limit", - "type": "integer" - } - } - }, - "output": { - "type": "structure", - "members": { - "position": {}, - "items": { - "locationName": "item", - "type": "list", - "member": { - "shape": "S4i" - } - } - } - } - }, - "GetStage": { - "http": { - "method": "GET", - "requestUri": "/restapis/{restapi_id}/stages/{stage_name}" - }, - "input": { - "type": "structure", - "required": [ - "restApiId", - "stageName" - ], - "members": { - "restApiId": { - "location": "uri", - "locationName": "restapi_id" - }, - "stageName": { - "location": "uri", - "locationName": "stage_name" - } - } - }, - "output": { - "shape": "S1i" - } - }, - "GetStages": { - "http": { - "method": "GET", - "requestUri": "/restapis/{restapi_id}/stages" - }, - "input": { - "type": "structure", - "required": [ - "restApiId" - ], - "members": { - "restApiId": { - "location": "uri", - "locationName": "restapi_id" - }, - "deploymentId": { - "location": "querystring", - "locationName": "deploymentId" - } - } - }, - "output": { - "type": "structure", - "members": { - "item": { - "type": "list", - "member": { - "shape": "S1i" - } - } - } - } - }, - "GetUsage": { - "http": { - "method": "GET", - "requestUri": "/usageplans/{usageplanId}/usage" - }, - "input": { - "type": "structure", - "required": [ - "usagePlanId", - "startDate", - "endDate" - ], - "members": { - "usagePlanId": { - "location": "uri", - "locationName": "usageplanId" - }, - "keyId": { - "location": "querystring", - "locationName": "keyId" - }, - "startDate": { - "location": "querystring", - "locationName": "startDate" - }, - "endDate": { - "location": "querystring", - "locationName": "endDate" - }, - "position": { - "location": "querystring", - "locationName": "position" - }, - "limit": { - "location": "querystring", - "locationName": "limit", - "type": "integer" - } - } - }, - "output": { - "shape": "S4t" - } - }, - "GetUsagePlan": { - "http": { - "method": "GET", - "requestUri": "/usageplans/{usageplanId}" - }, - "input": { - "type": "structure", - "required": [ - "usagePlanId" - ], - "members": { - "usagePlanId": { - "location": "uri", - "locationName": "usageplanId" - } - } - }, - "output": { - "shape": "S1v" - } - }, - "GetUsagePlanKey": { - "http": { - "method": "GET", - "requestUri": "/usageplans/{usageplanId}/keys/{keyId}", - "responseCode": 200 - }, - "input": { - "type": "structure", - "required": [ - "usagePlanId", - "keyId" - ], - "members": { - "usagePlanId": { - "location": "uri", - "locationName": "usageplanId" - }, - "keyId": { - "location": "uri", - "locationName": "keyId" - } - } - }, - "output": { - "shape": "S1x" - } - }, - "GetUsagePlanKeys": { - "http": { - "method": "GET", - "requestUri": "/usageplans/{usageplanId}/keys" - }, - "input": { - "type": "structure", - "required": [ - "usagePlanId" - ], - "members": { - "usagePlanId": { - "location": "uri", - "locationName": "usageplanId" - }, - "position": { - "location": "querystring", - "locationName": "position" - }, - "limit": { - "location": "querystring", - "locationName": "limit", - "type": "integer" - }, - "nameQuery": { - "location": "querystring", - "locationName": "name" - } - } - }, - "output": { - "type": "structure", - "members": { - "position": {}, - "items": { - "locationName": "item", - "type": "list", - "member": { - "shape": "S1x" - } - } - } - } - }, - "GetUsagePlans": { - "http": { - "method": "GET", - "requestUri": "/usageplans" - }, - "input": { - "type": "structure", - "members": { - "position": { - "location": "querystring", - "locationName": "position" - }, - "keyId": { - "location": "querystring", - "locationName": "keyId" - }, - "limit": { - "location": "querystring", - "locationName": "limit", - "type": "integer" - } - } - }, - "output": { - "type": "structure", - "members": { - "position": {}, - "items": { - "locationName": "item", - "type": "list", - "member": { - "shape": "S1v" - } - } - } - } - }, - "ImportApiKeys": { - "http": { - "requestUri": "/apikeys?mode=import", - "responseCode": 201 - }, - "input": { - "type": "structure", - "required": [ - "body", - "format" - ], - "members": { - "body": { - "type": "blob" - }, - "format": { - "location": "querystring", - "locationName": "format" - }, - "failOnWarnings": { - "location": "querystring", - "locationName": "failonwarnings", - "type": "boolean" - } - }, - "payload": "body" - }, - "output": { - "type": "structure", - "members": { - "ids": { - "shape": "S8" - }, - "warnings": { - "shape": "S8" - } - } - } - }, - "ImportDocumentationParts": { - "http": { - "method": "PUT", - "requestUri": "/restapis/{restapi_id}/documentation/parts" - }, - "input": { - "type": "structure", - "required": [ - "restApiId", - "body" - ], - "members": { - "restApiId": { - "location": "uri", - "locationName": "restapi_id" - }, - "mode": { - "location": "querystring", - "locationName": "mode" - }, - "failOnWarnings": { - "location": "querystring", - "locationName": "failonwarnings", - "type": "boolean" - }, - "body": { - "type": "blob" - } - }, - "payload": "body" - }, - "output": { - "type": "structure", - "members": { - "ids": { - "shape": "S8" - }, - "warnings": { - "shape": "S8" - } - } - } - }, - "ImportRestApi": { - "http": { - "requestUri": "/restapis?mode=import", - "responseCode": 201 - }, - "input": { - "type": "structure", - "required": [ - "body" - ], - "members": { - "failOnWarnings": { - "location": "querystring", - "locationName": "failonwarnings", - "type": "boolean" - }, - "parameters": { - "shape": "Sk", - "location": "querystring" - }, - "body": { - "type": "blob" - } - }, - "payload": "body" - }, - "output": { - "shape": "S1g" - } - }, - "PutGatewayResponse": { - "http": { - "method": "PUT", - "requestUri": "/restapis/{restapi_id}/gatewayresponses/{response_type}", - "responseCode": 201 - }, - "input": { - "type": "structure", - "required": [ - "restApiId", - "responseType" - ], - "members": { - "restApiId": { - "location": "uri", - "locationName": "restapi_id" - }, - "responseType": { - "location": "uri", - "locationName": "response_type" - }, - "statusCode": {}, - "responseParameters": { - "shape": "Sk" - }, - "responseTemplates": { - "shape": "Sk" - } - } - }, - "output": { - "shape": "S3p" - } - }, - "PutIntegration": { - "http": { - "method": "PUT", - "requestUri": "/restapis/{restapi_id}/resources/{resource_id}/methods/{http_method}/integration", - "responseCode": 201 - }, - "input": { - "type": "structure", - "required": [ - "restApiId", - "resourceId", - "httpMethod", - "type" - ], - "members": { - "restApiId": { - "location": "uri", - "locationName": "restapi_id" - }, - "resourceId": { - "location": "uri", - "locationName": "resource_id" - }, - "httpMethod": { - "location": "uri", - "locationName": "http_method" - }, - "type": {}, - "integrationHttpMethod": { - "locationName": "httpMethod" - }, - "uri": {}, - "credentials": {}, - "requestParameters": { - "shape": "Sk" - }, - "requestTemplates": { - "shape": "Sk" - }, - "passthroughBehavior": {}, - "cacheNamespace": {}, - "cacheKeyParameters": { - "shape": "S8" - }, - "contentHandling": {} - } - }, - "output": { - "shape": "S1a" - } - }, - "PutIntegrationResponse": { - "http": { - "method": "PUT", - "requestUri": "/restapis/{restapi_id}/resources/{resource_id}/methods/{http_method}/integration/responses/{status_code}", - "responseCode": 201 - }, - "input": { - "type": "structure", - "required": [ - "restApiId", - "resourceId", - "httpMethod", - "statusCode" - ], - "members": { - "restApiId": { - "location": "uri", - "locationName": "restapi_id" - }, - "resourceId": { - "location": "uri", - "locationName": "resource_id" - }, - "httpMethod": { - "location": "uri", - "locationName": "http_method" - }, - "statusCode": { - "location": "uri", - "locationName": "status_code" - }, - "selectionPattern": {}, - "responseParameters": { - "shape": "Sk" - }, - "responseTemplates": { - "shape": "Sk" - }, - "contentHandling": {} - } - }, - "output": { - "shape": "S1e" - } - }, - "PutMethod": { - "http": { - "method": "PUT", - "requestUri": "/restapis/{restapi_id}/resources/{resource_id}/methods/{http_method}", - "responseCode": 201 - }, - "input": { - "type": "structure", - "required": [ - "restApiId", - "resourceId", - "httpMethod", - "authorizationType" - ], - "members": { - "restApiId": { - "location": "uri", - "locationName": "restapi_id" - }, - "resourceId": { - "location": "uri", - "locationName": "resource_id" - }, - "httpMethod": { - "location": "uri", - "locationName": "http_method" - }, - "authorizationType": {}, - "authorizerId": {}, - "apiKeyRequired": { - "type": "boolean" - }, - "operationName": {}, - "requestParameters": { - "shape": "S16" - }, - "requestModels": { - "shape": "Sk" - }, - "requestValidatorId": {} - } - }, - "output": { - "shape": "S15" - } - }, - "PutMethodResponse": { - "http": { - "method": "PUT", - "requestUri": "/restapis/{restapi_id}/resources/{resource_id}/methods/{http_method}/responses/{status_code}", - "responseCode": 201 - }, - "input": { - "type": "structure", - "required": [ - "restApiId", - "resourceId", - "httpMethod", - "statusCode" - ], - "members": { - "restApiId": { - "location": "uri", - "locationName": "restapi_id" - }, - "resourceId": { - "location": "uri", - "locationName": "resource_id" - }, - "httpMethod": { - "location": "uri", - "locationName": "http_method" - }, - "statusCode": { - "location": "uri", - "locationName": "status_code" - }, - "responseParameters": { - "shape": "S16" - }, - "responseModels": { - "shape": "Sk" - } - } - }, - "output": { - "shape": "S18" - } - }, - "PutRestApi": { - "http": { - "method": "PUT", - "requestUri": "/restapis/{restapi_id}" - }, - "input": { - "type": "structure", - "required": [ - "restApiId", - "body" - ], - "members": { - "restApiId": { - "location": "uri", - "locationName": "restapi_id" - }, - "mode": { - "location": "querystring", - "locationName": "mode" - }, - "failOnWarnings": { - "location": "querystring", - "locationName": "failonwarnings", - "type": "boolean" - }, - "parameters": { - "shape": "Sk", - "location": "querystring" - }, - "body": { - "type": "blob" - } - }, - "payload": "body" - }, - "output": { - "shape": "S1g" - } - }, - "TestInvokeAuthorizer": { - "http": { - "requestUri": "/restapis/{restapi_id}/authorizers/{authorizer_id}" - }, - "input": { - "type": "structure", - "required": [ - "restApiId", - "authorizerId" - ], - "members": { - "restApiId": { - "location": "uri", - "locationName": "restapi_id" - }, - "authorizerId": { - "location": "uri", - "locationName": "authorizer_id" - }, - "headers": { - "shape": "S5k" - }, - "pathWithQueryString": {}, - "body": {}, - "stageVariables": { - "shape": "Sk" - }, - "additionalContext": { - "shape": "Sk" - } - } - }, - "output": { - "type": "structure", - "members": { - "clientStatus": { - "type": "integer" - }, - "log": {}, - "latency": { - "type": "long" - }, - "principalId": {}, - "policy": {}, - "authorization": { - "type": "map", - "key": {}, - "value": { - "shape": "S8" - } - }, - "claims": { - "shape": "Sk" - } - } - } - }, - "TestInvokeMethod": { - "http": { - "requestUri": "/restapis/{restapi_id}/resources/{resource_id}/methods/{http_method}" - }, - "input": { - "type": "structure", - "required": [ - "restApiId", - "resourceId", - "httpMethod" - ], - "members": { - "restApiId": { - "location": "uri", - "locationName": "restapi_id" - }, - "resourceId": { - "location": "uri", - "locationName": "resource_id" - }, - "httpMethod": { - "location": "uri", - "locationName": "http_method" - }, - "pathWithQueryString": {}, - "body": {}, - "headers": { - "shape": "S5k" - }, - "clientCertificateId": {}, - "stageVariables": { - "shape": "Sk" - } - } - }, - "output": { - "type": "structure", - "members": { - "status": { - "type": "integer" - }, - "body": {}, - "headers": { - "shape": "S5k" - }, - "log": {}, - "latency": { - "type": "long" - } - } - } - }, - "UpdateAccount": { - "http": { - "method": "PATCH", - "requestUri": "/account" - }, - "input": { - "type": "structure", - "members": { - "patchOperations": { - "shape": "S5q" - } - } - }, - "output": { - "shape": "S2o" - } - }, - "UpdateApiKey": { - "http": { - "method": "PATCH", - "requestUri": "/apikeys/{api_Key}" - }, - "input": { - "type": "structure", - "required": [ - "apiKey" - ], - "members": { - "apiKey": { - "location": "uri", - "locationName": "api_Key" - }, - "patchOperations": { - "shape": "S5q" - } - } - }, - "output": { - "shape": "S6" - } - }, - "UpdateAuthorizer": { - "http": { - "method": "PATCH", - "requestUri": "/restapis/{restapi_id}/authorizers/{authorizer_id}" - }, - "input": { - "type": "structure", - "required": [ - "restApiId", - "authorizerId" - ], - "members": { - "restApiId": { - "location": "uri", - "locationName": "restapi_id" - }, - "authorizerId": { - "location": "uri", - "locationName": "authorizer_id" - }, - "patchOperations": { - "shape": "S5q" - } - } - }, - "output": { - "shape": "Se" - } - }, - "UpdateBasePathMapping": { - "http": { - "method": "PATCH", - "requestUri": "/domainnames/{domain_name}/basepathmappings/{base_path}" - }, - "input": { - "type": "structure", - "required": [ - "domainName", - "basePath" - ], - "members": { - "domainName": { - "location": "uri", - "locationName": "domain_name" - }, - "basePath": { - "location": "uri", - "locationName": "base_path" - }, - "patchOperations": { - "shape": "S5q" - } - } - }, - "output": { - "shape": "Sg" - } - }, - "UpdateClientCertificate": { - "http": { - "method": "PATCH", - "requestUri": "/clientcertificates/{clientcertificate_id}" - }, - "input": { - "type": "structure", - "required": [ - "clientCertificateId" - ], - "members": { - "clientCertificateId": { - "location": "uri", - "locationName": "clientcertificate_id" - }, - "patchOperations": { - "shape": "S5q" - } - } - }, - "output": { - "shape": "S2m" - } - }, - "UpdateDeployment": { - "http": { - "method": "PATCH", - "requestUri": "/restapis/{restapi_id}/deployments/{deployment_id}" - }, - "input": { - "type": "structure", - "required": [ - "restApiId", - "deploymentId" - ], - "members": { - "restApiId": { - "location": "uri", - "locationName": "restapi_id" - }, - "deploymentId": { - "location": "uri", - "locationName": "deployment_id" - }, - "patchOperations": { - "shape": "S5q" - } - } - }, - "output": { - "shape": "Sl" - } - }, - "UpdateDocumentationPart": { - "http": { - "method": "PATCH", - "requestUri": "/restapis/{restapi_id}/documentation/parts/{part_id}" - }, - "input": { - "type": "structure", - "required": [ - "restApiId", - "documentationPartId" - ], - "members": { - "restApiId": { - "location": "uri", - "locationName": "restapi_id" - }, - "documentationPartId": { - "location": "uri", - "locationName": "part_id" - }, - "patchOperations": { - "shape": "S5q" - } - } - }, - "output": { - "shape": "St" - } - }, - "UpdateDocumentationVersion": { - "http": { - "method": "PATCH", - "requestUri": "/restapis/{restapi_id}/documentation/versions/{doc_version}" - }, - "input": { - "type": "structure", - "required": [ - "restApiId", - "documentationVersion" - ], - "members": { - "restApiId": { - "location": "uri", - "locationName": "restapi_id" - }, - "documentationVersion": { - "location": "uri", - "locationName": "doc_version" - }, - "patchOperations": { - "shape": "S5q" - } - } - }, - "output": { - "shape": "Sv" - } - }, - "UpdateDomainName": { - "http": { - "method": "PATCH", - "requestUri": "/domainnames/{domain_name}" - }, - "input": { - "type": "structure", - "required": [ - "domainName" - ], - "members": { - "domainName": { - "location": "uri", - "locationName": "domain_name" - }, - "patchOperations": { - "shape": "S5q" - } - } - }, - "output": { - "shape": "Sx" - } - }, - "UpdateGatewayResponse": { - "http": { - "method": "PATCH", - "requestUri": "/restapis/{restapi_id}/gatewayresponses/{response_type}" - }, - "input": { - "type": "structure", - "required": [ - "restApiId", - "responseType" - ], - "members": { - "restApiId": { - "location": "uri", - "locationName": "restapi_id" - }, - "responseType": { - "location": "uri", - "locationName": "response_type" - }, - "patchOperations": { - "shape": "S5q" - } - } - }, - "output": { - "shape": "S3p" - } - }, - "UpdateIntegration": { - "http": { - "method": "PATCH", - "requestUri": "/restapis/{restapi_id}/resources/{resource_id}/methods/{http_method}/integration" - }, - "input": { - "type": "structure", - "required": [ - "restApiId", - "resourceId", - "httpMethod" - ], - "members": { - "restApiId": { - "location": "uri", - "locationName": "restapi_id" - }, - "resourceId": { - "location": "uri", - "locationName": "resource_id" - }, - "httpMethod": { - "location": "uri", - "locationName": "http_method" - }, - "patchOperations": { - "shape": "S5q" - } - } - }, - "output": { - "shape": "S1a" - } - }, - "UpdateIntegrationResponse": { - "http": { - "method": "PATCH", - "requestUri": "/restapis/{restapi_id}/resources/{resource_id}/methods/{http_method}/integration/responses/{status_code}" - }, - "input": { - "type": "structure", - "required": [ - "restApiId", - "resourceId", - "httpMethod", - "statusCode" - ], - "members": { - "restApiId": { - "location": "uri", - "locationName": "restapi_id" - }, - "resourceId": { - "location": "uri", - "locationName": "resource_id" - }, - "httpMethod": { - "location": "uri", - "locationName": "http_method" - }, - "statusCode": { - "location": "uri", - "locationName": "status_code" - }, - "patchOperations": { - "shape": "S5q" - } - } - }, - "output": { - "shape": "S1e" - } - }, - "UpdateMethod": { - "http": { - "method": "PATCH", - "requestUri": "/restapis/{restapi_id}/resources/{resource_id}/methods/{http_method}" - }, - "input": { - "type": "structure", - "required": [ - "restApiId", - "resourceId", - "httpMethod" - ], - "members": { - "restApiId": { - "location": "uri", - "locationName": "restapi_id" - }, - "resourceId": { - "location": "uri", - "locationName": "resource_id" - }, - "httpMethod": { - "location": "uri", - "locationName": "http_method" - }, - "patchOperations": { - "shape": "S5q" - } - } - }, - "output": { - "shape": "S15" - } - }, - "UpdateMethodResponse": { - "http": { - "method": "PATCH", - "requestUri": "/restapis/{restapi_id}/resources/{resource_id}/methods/{http_method}/responses/{status_code}", - "responseCode": 201 - }, - "input": { - "type": "structure", - "required": [ - "restApiId", - "resourceId", - "httpMethod", - "statusCode" - ], - "members": { - "restApiId": { - "location": "uri", - "locationName": "restapi_id" - }, - "resourceId": { - "location": "uri", - "locationName": "resource_id" - }, - "httpMethod": { - "location": "uri", - "locationName": "http_method" - }, - "statusCode": { - "location": "uri", - "locationName": "status_code" - }, - "patchOperations": { - "shape": "S5q" - } - } - }, - "output": { - "shape": "S18" - } - }, - "UpdateModel": { - "http": { - "method": "PATCH", - "requestUri": "/restapis/{restapi_id}/models/{model_name}" - }, - "input": { - "type": "structure", - "required": [ - "restApiId", - "modelName" - ], - "members": { - "restApiId": { - "location": "uri", - "locationName": "restapi_id" - }, - "modelName": { - "location": "uri", - "locationName": "model_name" - }, - "patchOperations": { - "shape": "S5q" - } - } - }, - "output": { - "shape": "Sz" - } - }, - "UpdateRequestValidator": { - "http": { - "method": "PATCH", - "requestUri": "/restapis/{restapi_id}/requestvalidators/{requestvalidator_id}" - }, - "input": { - "type": "structure", - "required": [ - "restApiId", - "requestValidatorId" - ], - "members": { - "restApiId": { - "location": "uri", - "locationName": "restapi_id" - }, - "requestValidatorId": { - "location": "uri", - "locationName": "requestvalidator_id" - }, - "patchOperations": { - "shape": "S5q" - } - } - }, - "output": { - "shape": "S11" - } - }, - "UpdateResource": { - "http": { - "method": "PATCH", - "requestUri": "/restapis/{restapi_id}/resources/{resource_id}" - }, - "input": { - "type": "structure", - "required": [ - "restApiId", - "resourceId" - ], - "members": { - "restApiId": { - "location": "uri", - "locationName": "restapi_id" - }, - "resourceId": { - "location": "uri", - "locationName": "resource_id" - }, - "patchOperations": { - "shape": "S5q" - } - } - }, - "output": { - "shape": "S13" - } - }, - "UpdateRestApi": { - "http": { - "method": "PATCH", - "requestUri": "/restapis/{restapi_id}" - }, - "input": { - "type": "structure", - "required": [ - "restApiId" - ], - "members": { - "restApiId": { - "location": "uri", - "locationName": "restapi_id" - }, - "patchOperations": { - "shape": "S5q" - } - } - }, - "output": { - "shape": "S1g" - } - }, - "UpdateStage": { - "http": { - "method": "PATCH", - "requestUri": "/restapis/{restapi_id}/stages/{stage_name}" - }, - "input": { - "type": "structure", - "required": [ - "restApiId", - "stageName" - ], - "members": { - "restApiId": { - "location": "uri", - "locationName": "restapi_id" - }, - "stageName": { - "location": "uri", - "locationName": "stage_name" - }, - "patchOperations": { - "shape": "S5q" - } - } - }, - "output": { - "shape": "S1i" - } - }, - "UpdateUsage": { - "http": { - "method": "PATCH", - "requestUri": "/usageplans/{usageplanId}/keys/{keyId}/usage" - }, - "input": { - "type": "structure", - "required": [ - "usagePlanId", - "keyId" - ], - "members": { - "usagePlanId": { - "location": "uri", - "locationName": "usageplanId" - }, - "keyId": { - "location": "uri", - "locationName": "keyId" - }, - "patchOperations": { - "shape": "S5q" - } - } - }, - "output": { - "shape": "S4t" - } - }, - "UpdateUsagePlan": { - "http": { - "method": "PATCH", - "requestUri": "/usageplans/{usageplanId}" - }, - "input": { - "type": "structure", - "required": [ - "usagePlanId" - ], - "members": { - "usagePlanId": { - "location": "uri", - "locationName": "usageplanId" - }, - "patchOperations": { - "shape": "S5q" - } - } - }, - "output": { - "shape": "S1v" - } - } - }, - "shapes": { - "S6": { - "type": "structure", - "members": { - "id": {}, - "value": {}, - "name": {}, - "customerId": {}, - "description": {}, - "enabled": { - "type": "boolean" - }, - "createdDate": { - "type": "timestamp" - }, - "lastUpdatedDate": { - "type": "timestamp" - }, - "stageKeys": { - "shape": "S8" - } - } - }, - "S8": { - "type": "list", - "member": {} - }, - "Sb": { - "type": "list", - "member": {} - }, - "Se": { - "type": "structure", - "members": { - "id": {}, - "name": {}, - "type": {}, - "providerARNs": { - "shape": "Sb" - }, - "authType": {}, - "authorizerUri": {}, - "authorizerCredentials": {}, - "identitySource": {}, - "identityValidationExpression": {}, - "authorizerResultTtlInSeconds": { - "type": "integer" - } - } - }, - "Sg": { - "type": "structure", - "members": { - "basePath": {}, - "restApiId": {}, - "stage": {} - } - }, - "Sk": { - "type": "map", - "key": {}, - "value": {} - }, - "Sl": { - "type": "structure", - "members": { - "id": {}, - "description": {}, - "createdDate": { - "type": "timestamp" - }, - "apiSummary": { - "type": "map", - "key": {}, - "value": { - "type": "map", - "key": {}, - "value": { - "type": "structure", - "members": { - "authorizationType": {}, - "apiKeyRequired": { - "type": "boolean" - } - } - } - } - } - } - }, - "Sq": { - "type": "structure", - "required": [ - "type" - ], - "members": { - "type": {}, - "path": {}, - "method": {}, - "statusCode": {}, - "name": {} - } - }, - "St": { - "type": "structure", - "members": { - "id": {}, - "location": { - "shape": "Sq" - }, - "properties": {} - } - }, - "Sv": { - "type": "structure", - "members": { - "version": {}, - "createdDate": { - "type": "timestamp" - }, - "description": {} - } - }, - "Sx": { - "type": "structure", - "members": { - "domainName": {}, - "certificateName": {}, - "certificateArn": {}, - "certificateUploadDate": { - "type": "timestamp" - }, - "distributionDomainName": {} - } - }, - "Sz": { - "type": "structure", - "members": { - "id": {}, - "name": {}, - "description": {}, - "schema": {}, - "contentType": {} - } - }, - "S11": { - "type": "structure", - "members": { - "id": {}, - "name": {}, - "validateRequestBody": { - "type": "boolean" - }, - "validateRequestParameters": { - "type": "boolean" - } - } - }, - "S13": { - "type": "structure", - "members": { - "id": {}, - "parentId": {}, - "pathPart": {}, - "path": {}, - "resourceMethods": { - "type": "map", - "key": {}, - "value": { - "shape": "S15" - } - } - } - }, - "S15": { - "type": "structure", - "members": { - "httpMethod": {}, - "authorizationType": {}, - "authorizerId": {}, - "apiKeyRequired": { - "type": "boolean" - }, - "requestValidatorId": {}, - "operationName": {}, - "requestParameters": { - "shape": "S16" - }, - "requestModels": { - "shape": "Sk" - }, - "methodResponses": { - "type": "map", - "key": {}, - "value": { - "shape": "S18" - } - }, - "methodIntegration": { - "shape": "S1a" - } - } - }, - "S16": { - "type": "map", - "key": {}, - "value": { - "type": "boolean" - } - }, - "S18": { - "type": "structure", - "members": { - "statusCode": {}, - "responseParameters": { - "shape": "S16" - }, - "responseModels": { - "shape": "Sk" - } - } - }, - "S1a": { - "type": "structure", - "members": { - "type": {}, - "httpMethod": {}, - "uri": {}, - "credentials": {}, - "requestParameters": { - "shape": "Sk" - }, - "requestTemplates": { - "shape": "Sk" - }, - "passthroughBehavior": {}, - "contentHandling": {}, - "cacheNamespace": {}, - "cacheKeyParameters": { - "shape": "S8" - }, - "integrationResponses": { - "type": "map", - "key": {}, - "value": { - "shape": "S1e" - } - } - } - }, - "S1e": { - "type": "structure", - "members": { - "statusCode": {}, - "selectionPattern": {}, - "responseParameters": { - "shape": "Sk" - }, - "responseTemplates": { - "shape": "Sk" - }, - "contentHandling": {} - } - }, - "S1g": { - "type": "structure", - "members": { - "id": {}, - "name": {}, - "description": {}, - "createdDate": { - "type": "timestamp" - }, - "version": {}, - "warnings": { - "shape": "S8" - }, - "binaryMediaTypes": { - "shape": "S8" - } - } - }, - "S1i": { - "type": "structure", - "members": { - "deploymentId": {}, - "clientCertificateId": {}, - "stageName": {}, - "description": {}, - "cacheClusterEnabled": { - "type": "boolean" - }, - "cacheClusterSize": {}, - "cacheClusterStatus": {}, - "methodSettings": { - "type": "map", - "key": {}, - "value": { - "type": "structure", - "members": { - "metricsEnabled": { - "type": "boolean" - }, - "loggingLevel": {}, - "dataTraceEnabled": { - "type": "boolean" - }, - "throttlingBurstLimit": { - "type": "integer" - }, - "throttlingRateLimit": { - "type": "double" - }, - "cachingEnabled": { - "type": "boolean" - }, - "cacheTtlInSeconds": { - "type": "integer" - }, - "cacheDataEncrypted": { - "type": "boolean" - }, - "requireAuthorizationForCacheControl": { - "type": "boolean" - }, - "unauthorizedCacheControlHeaderStrategy": {} - } - } - }, - "variables": { - "shape": "Sk" - }, - "documentationVersion": {}, - "createdDate": { - "type": "timestamp" - }, - "lastUpdatedDate": { - "type": "timestamp" - } - } - }, - "S1q": { - "type": "list", - "member": { - "type": "structure", - "members": { - "apiId": {}, - "stage": {} - } - } - }, - "S1s": { - "type": "structure", - "members": { - "burstLimit": { - "type": "integer" - }, - "rateLimit": { - "type": "double" - } - } - }, - "S1t": { - "type": "structure", - "members": { - "limit": { - "type": "integer" - }, - "offset": { - "type": "integer" - }, - "period": {} - } - }, - "S1v": { - "type": "structure", - "members": { - "id": {}, - "name": {}, - "description": {}, - "apiStages": { - "shape": "S1q" - }, - "throttle": { - "shape": "S1s" - }, - "quota": { - "shape": "S1t" - }, - "productCode": {} - } - }, - "S1x": { - "type": "structure", - "members": { - "id": {}, - "type": {}, - "value": {}, - "name": {} - } - }, - "S2m": { - "type": "structure", - "members": { - "clientCertificateId": {}, - "description": {}, - "pemEncodedCertificate": {}, - "createdDate": { - "type": "timestamp" - }, - "expirationDate": { - "type": "timestamp" - } - } - }, - "S2o": { - "type": "structure", - "members": { - "cloudwatchRoleArn": {}, - "throttleSettings": { - "shape": "S1s" - }, - "features": { - "shape": "S8" - }, - "apiKeyVersion": {} - } - }, - "S3p": { - "type": "structure", - "members": { - "responseType": {}, - "statusCode": {}, - "responseParameters": { - "shape": "Sk" - }, - "responseTemplates": { - "shape": "Sk" - }, - "defaultResponse": { - "type": "boolean" - } - } - }, - "S4i": { - "type": "structure", - "members": { - "id": {}, - "friendlyName": {}, - "description": {}, - "configurationProperties": { - "type": "list", - "member": { - "type": "structure", - "members": { - "name": {}, - "friendlyName": {}, - "description": {}, - "required": { - "type": "boolean" - }, - "defaultValue": {} - } - } - } - } - }, - "S4t": { - "type": "structure", - "members": { - "usagePlanId": {}, - "startDate": {}, - "endDate": {}, - "position": {}, - "items": { - "locationName": "values", - "type": "map", - "key": {}, - "value": { - "type": "list", - "member": { - "type": "list", - "member": { - "type": "long" - } - } - } - } - } - }, - "S5k": { - "type": "map", - "key": {}, - "value": {} - }, - "S5q": { - "type": "list", - "member": { - "type": "structure", - "members": { - "op": {}, - "path": {}, - "value": {}, - "from": {} - } - } - } - } -} \ No newline at end of file diff --git a/workshops/monte-carlo-on-ec2-spot-fleet/src/web/node_modules/aws-sdk/apis/apigateway-2015-07-09.paginators.json b/workshops/monte-carlo-on-ec2-spot-fleet/src/web/node_modules/aws-sdk/apis/apigateway-2015-07-09.paginators.json deleted file mode 100644 index 8c972ac2..00000000 --- a/workshops/monte-carlo-on-ec2-spot-fleet/src/web/node_modules/aws-sdk/apis/apigateway-2015-07-09.paginators.json +++ /dev/null @@ -1,70 +0,0 @@ -{ - "pagination": { - "GetApiKeys": { - "input_token": "position", - "limit_key": "limit", - "output_token": "position", - "result_key": "items" - }, - "GetBasePathMappings": { - "input_token": "position", - "limit_key": "limit", - "output_token": "position", - "result_key": "items" - }, - "GetClientCertificates": { - "input_token": "position", - "limit_key": "limit", - "output_token": "position", - "result_key": "items" - }, - "GetDeployments": { - "input_token": "position", - "limit_key": "limit", - "output_token": "position", - "result_key": "items" - }, - "GetDomainNames": { - "input_token": "position", - "limit_key": "limit", - "output_token": "position", - "result_key": "items" - }, - "GetModels": { - "input_token": "position", - "limit_key": "limit", - "output_token": "position", - "result_key": "items" - }, - "GetResources": { - "input_token": "position", - "limit_key": "limit", - "output_token": "position", - "result_key": "items" - }, - "GetRestApis": { - "input_token": "position", - "limit_key": "limit", - "output_token": "position", - "result_key": "items" - }, - "GetUsage": { - "input_token": "position", - "limit_key": "limit", - "output_token": "position", - "result_key": "items" - }, - "GetUsagePlanKeys": { - "input_token": "position", - "limit_key": "limit", - "output_token": "position", - "result_key": "items" - }, - "GetUsagePlans": { - "input_token": "position", - "limit_key": "limit", - "output_token": "position", - "result_key": "items" - } - } -} \ No newline at end of file diff --git a/workshops/monte-carlo-on-ec2-spot-fleet/src/web/node_modules/aws-sdk/apis/application-autoscaling-2016-02-06.examples.json b/workshops/monte-carlo-on-ec2-spot-fleet/src/web/node_modules/aws-sdk/apis/application-autoscaling-2016-02-06.examples.json deleted file mode 100644 index 53415ece..00000000 --- a/workshops/monte-carlo-on-ec2-spot-fleet/src/web/node_modules/aws-sdk/apis/application-autoscaling-2016-02-06.examples.json +++ /dev/null @@ -1,257 +0,0 @@ -{ - "version": "1.0", - "examples": { - "DeleteScalingPolicy": [ - { - "input": { - "PolicyName": "web-app-cpu-lt-25", - "ResourceId": "service/default/web-app", - "ScalableDimension": "ecs:service:DesiredCount", - "ServiceNamespace": "ecs" - }, - "output": { - }, - "comments": { - "input": { - }, - "output": { - } - }, - "description": "This example deletes a scaling policy for the Amazon ECS service called web-app, which is running in the default cluster.", - "id": "to-delete-a-scaling-policy-1470863892689", - "title": "To delete a scaling policy" - } - ], - "DeregisterScalableTarget": [ - { - "input": { - "ResourceId": "service/default/web-app", - "ScalableDimension": "ecs:service:DesiredCount", - "ServiceNamespace": "ecs" - }, - "output": { - }, - "comments": { - "input": { - }, - "output": { - } - }, - "description": "This example deregisters a scalable target for an Amazon ECS service called web-app that is running in the default cluster.", - "id": "to-deregister-a-scalable-target-1470864164895", - "title": "To deregister a scalable target" - } - ], - "DescribeScalableTargets": [ - { - "input": { - "ServiceNamespace": "ecs" - }, - "output": { - "ScalableTargets": [ - { - "CreationTime": "2016-05-06T11:21:46.199Z", - "MaxCapacity": 10, - "MinCapacity": 1, - "ResourceId": "service/default/web-app", - "RoleARN": "arn:aws:iam::012345678910:role/ApplicationAutoscalingECSRole", - "ScalableDimension": "ecs:service:DesiredCount", - "ServiceNamespace": "ecs" - } - ] - }, - "comments": { - "input": { - }, - "output": { - } - }, - "description": "This example describes the scalable targets for the ecs service namespace.", - "id": "to-describe-scalable-targets-1470864286961", - "title": "To describe scalable targets" - } - ], - "DescribeScalingActivities": [ - { - "input": { - "ResourceId": "service/default/web-app", - "ScalableDimension": "ecs:service:DesiredCount", - "ServiceNamespace": "ecs" - }, - "output": { - "ScalingActivities": [ - { - "ActivityId": "e6c5f7d1-dbbb-4a3f-89b2-51f33e766399", - "Cause": "monitor alarm web-app-cpu-lt-25 in state ALARM triggered policy web-app-cpu-lt-25", - "Description": "Setting desired count to 1.", - "EndTime": "2016-05-06T16:04:32.111Z", - "ResourceId": "service/default/web-app", - "ScalableDimension": "ecs:service:DesiredCount", - "ServiceNamespace": "ecs", - "StartTime": "2016-05-06T16:03:58.171Z", - "StatusCode": "Successful", - "StatusMessage": "Successfully set desired count to 1. Change successfully fulfilled by ecs." - } - ] - }, - "comments": { - "input": { - }, - "output": { - } - }, - "description": "This example describes the scaling activities for an Amazon ECS service called web-app that is running in the default cluster.", - "id": "to-describe-scaling-activities-for-a-scalable-target-1470864398629", - "title": "To describe scaling activities for a scalable target" - } - ], - "DescribeScalingPolicies": [ - { - "input": { - "ServiceNamespace": "ecs" - }, - "output": { - "NextToken": "", - "ScalingPolicies": [ - { - "Alarms": [ - { - "AlarmARN": "arn:aws:cloudwatch:us-west-2:012345678910:alarm:web-app-cpu-gt-75", - "AlarmName": "web-app-cpu-gt-75" - } - ], - "CreationTime": "2016-05-06T12:11:39.230Z", - "PolicyARN": "arn:aws:autoscaling:us-west-2:012345678910:scalingPolicy:6d8972f3-efc8-437c-92d1-6270f29a66e7:resource/ecs/service/default/web-app:policyName/web-app-cpu-gt-75", - "PolicyName": "web-app-cpu-gt-75", - "PolicyType": "StepScaling", - "ResourceId": "service/default/web-app", - "ScalableDimension": "ecs:service:DesiredCount", - "ServiceNamespace": "ecs", - "StepScalingPolicyConfiguration": { - "AdjustmentType": "PercentChangeInCapacity", - "Cooldown": 60, - "StepAdjustments": [ - { - "MetricIntervalLowerBound": 0, - "ScalingAdjustment": 200 - } - ] - } - } - ] - }, - "comments": { - "input": { - }, - "output": { - } - }, - "description": "This example describes the scaling policies for the ecs service namespace.", - "id": "to-describe-scaling-policies-1470864609734", - "title": "To describe scaling policies" - } - ], - "PutScalingPolicy": [ - { - "input": { - "PolicyName": "web-app-cpu-gt-75", - "PolicyType": "StepScaling", - "ResourceId": "service/default/web-app", - "ScalableDimension": "ecs:service:DesiredCount", - "ServiceNamespace": "ecs", - "StepScalingPolicyConfiguration": { - "AdjustmentType": "PercentChangeInCapacity", - "Cooldown": 60, - "StepAdjustments": [ - { - "MetricIntervalLowerBound": 0, - "ScalingAdjustment": 200 - } - ] - } - }, - "output": { - "PolicyARN": "arn:aws:autoscaling:us-west-2:012345678910:scalingPolicy:6d8972f3-efc8-437c-92d1-6270f29a66e7:resource/ecs/service/default/web-app:policyName/web-app-cpu-gt-75" - }, - "comments": { - "input": { - }, - "output": { - } - }, - "description": "This example applies a scaling policy to an Amazon ECS service called web-app in the default cluster. The policy increases the desired count of the service by 200%, with a cool down period of 60 seconds.", - "id": "to-apply-a-scaling-policy-to-an-amazon-ecs-service-1470864779862", - "title": "To apply a scaling policy to an Amazon ECS service" - }, - { - "input": { - "PolicyName": "fleet-cpu-gt-75", - "PolicyType": "StepScaling", - "ResourceId": "spot-fleet-request/sfr-45e69d8a-be48-4539-bbf3-3464e99c50c3", - "ScalableDimension": "ec2:spot-fleet-request:TargetCapacity", - "ServiceNamespace": "ec2", - "StepScalingPolicyConfiguration": { - "AdjustmentType": "PercentChangeInCapacity", - "Cooldown": 180, - "StepAdjustments": [ - { - "MetricIntervalLowerBound": 0, - "ScalingAdjustment": 200 - } - ] - } - }, - "output": { - "PolicyARN": "arn:aws:autoscaling:us-east-1:012345678910:scalingPolicy:89406401-0cb7-4130-b770-d97cca0e446b:resource/ec2/spot-fleet-request/sfr-45e69d8a-be48-4539-bbf3-3464e99c50c3:policyName/fleet-cpu-gt-75" - }, - "comments": { - "input": { - }, - "output": { - } - }, - "description": "This example applies a scaling policy to an Amazon EC2 Spot fleet. The policy increases the target capacity of the spot fleet by 200%, with a cool down period of 180 seconds.\",\n ", - "id": "to-apply-a-scaling-policy-to-an-amazon-ec2-spot-fleet-1472073278469", - "title": "To apply a scaling policy to an Amazon EC2 Spot fleet" - } - ], - "RegisterScalableTarget": [ - { - "input": { - "MaxCapacity": 10, - "MinCapacity": 1, - "ResourceId": "service/default/web-app", - "RoleARN": "arn:aws:iam::012345678910:role/ApplicationAutoscalingECSRole", - "ScalableDimension": "ecs:service:DesiredCount", - "ServiceNamespace": "ecs" - }, - "comments": { - "input": { - }, - "output": { - } - }, - "description": "This example registers a scalable target from an Amazon ECS service called web-app that is running on the default cluster, with a minimum desired count of 1 task and a maximum desired count of 10 tasks.", - "id": "to-register-a-new-scalable-target-1470864910380", - "title": "To register an ECS service as a scalable target" - }, - { - "input": { - "MaxCapacity": 10, - "MinCapacity": 1, - "ResourceId": "spot-fleet-request/sfr-45e69d8a-be48-4539-bbf3-3464e99c50c3", - "RoleARN": "arn:aws:iam::012345678910:role/ApplicationAutoscalingSpotRole", - "ScalableDimension": "ec2:spot-fleet-request:TargetCapacity", - "ServiceNamespace": "ec2" - }, - "output": { - }, - "comments": { - }, - "description": "This example registers a scalable target from an Amazon EC2 Spot fleet with a minimum target capacity of 1 and a maximum of 10.", - "id": "to-register-an-ec2-spot-fleet-as-a-scalable-target-1472072899649", - "title": "To register an EC2 Spot fleet as a scalable target" - } - ] - } -} diff --git a/workshops/monte-carlo-on-ec2-spot-fleet/src/web/node_modules/aws-sdk/apis/application-autoscaling-2016-02-06.min.json b/workshops/monte-carlo-on-ec2-spot-fleet/src/web/node_modules/aws-sdk/apis/application-autoscaling-2016-02-06.min.json deleted file mode 100644 index eac7ea90..00000000 --- a/workshops/monte-carlo-on-ec2-spot-fleet/src/web/node_modules/aws-sdk/apis/application-autoscaling-2016-02-06.min.json +++ /dev/null @@ -1,401 +0,0 @@ -{ - "version": "2.0", - "metadata": { - "apiVersion": "2016-02-06", - "endpointPrefix": "autoscaling", - "jsonVersion": "1.1", - "protocol": "json", - "serviceFullName": "Application Auto Scaling", - "signatureVersion": "v4", - "signingName": "application-autoscaling", - "targetPrefix": "AnyScaleFrontendService", - "uid": "application-autoscaling-2016-02-06" - }, - "operations": { - "DeleteScalingPolicy": { - "input": { - "type": "structure", - "required": [ - "PolicyName", - "ServiceNamespace", - "ResourceId", - "ScalableDimension" - ], - "members": { - "PolicyName": {}, - "ServiceNamespace": {}, - "ResourceId": {}, - "ScalableDimension": {} - } - }, - "output": { - "type": "structure", - "members": {} - } - }, - "DeregisterScalableTarget": { - "input": { - "type": "structure", - "required": [ - "ServiceNamespace", - "ResourceId", - "ScalableDimension" - ], - "members": { - "ServiceNamespace": {}, - "ResourceId": {}, - "ScalableDimension": {} - } - }, - "output": { - "type": "structure", - "members": {} - } - }, - "DescribeScalableTargets": { - "input": { - "type": "structure", - "required": [ - "ServiceNamespace" - ], - "members": { - "ServiceNamespace": {}, - "ResourceIds": { - "shape": "S9" - }, - "ScalableDimension": {}, - "MaxResults": { - "type": "integer" - }, - "NextToken": {} - } - }, - "output": { - "type": "structure", - "members": { - "ScalableTargets": { - "type": "list", - "member": { - "type": "structure", - "required": [ - "ServiceNamespace", - "ResourceId", - "ScalableDimension", - "MinCapacity", - "MaxCapacity", - "RoleARN", - "CreationTime" - ], - "members": { - "ServiceNamespace": {}, - "ResourceId": {}, - "ScalableDimension": {}, - "MinCapacity": { - "type": "integer" - }, - "MaxCapacity": { - "type": "integer" - }, - "RoleARN": {}, - "CreationTime": { - "type": "timestamp" - } - } - } - }, - "NextToken": {} - } - } - }, - "DescribeScalingActivities": { - "input": { - "type": "structure", - "required": [ - "ServiceNamespace" - ], - "members": { - "ServiceNamespace": {}, - "ResourceId": {}, - "ScalableDimension": {}, - "MaxResults": { - "type": "integer" - }, - "NextToken": {} - } - }, - "output": { - "type": "structure", - "members": { - "ScalingActivities": { - "type": "list", - "member": { - "type": "structure", - "required": [ - "ActivityId", - "ServiceNamespace", - "ResourceId", - "ScalableDimension", - "Description", - "Cause", - "StartTime", - "StatusCode" - ], - "members": { - "ActivityId": {}, - "ServiceNamespace": {}, - "ResourceId": {}, - "ScalableDimension": {}, - "Description": {}, - "Cause": {}, - "StartTime": { - "type": "timestamp" - }, - "EndTime": { - "type": "timestamp" - }, - "StatusCode": {}, - "StatusMessage": {}, - "Details": {} - } - } - }, - "NextToken": {} - } - } - }, - "DescribeScalingPolicies": { - "input": { - "type": "structure", - "required": [ - "ServiceNamespace" - ], - "members": { - "PolicyNames": { - "shape": "S9" - }, - "ServiceNamespace": {}, - "ResourceId": {}, - "ScalableDimension": {}, - "MaxResults": { - "type": "integer" - }, - "NextToken": {} - } - }, - "output": { - "type": "structure", - "members": { - "ScalingPolicies": { - "type": "list", - "member": { - "type": "structure", - "required": [ - "PolicyARN", - "PolicyName", - "ServiceNamespace", - "ResourceId", - "ScalableDimension", - "PolicyType", - "CreationTime" - ], - "members": { - "PolicyARN": {}, - "PolicyName": {}, - "ServiceNamespace": {}, - "ResourceId": {}, - "ScalableDimension": {}, - "PolicyType": {}, - "StepScalingPolicyConfiguration": { - "shape": "St" - }, - "TargetTrackingScalingPolicyConfiguration": { - "shape": "S12" - }, - "Alarms": { - "shape": "S1g" - }, - "CreationTime": { - "type": "timestamp" - } - } - } - }, - "NextToken": {} - } - } - }, - "PutScalingPolicy": { - "input": { - "type": "structure", - "required": [ - "PolicyName", - "ServiceNamespace", - "ResourceId", - "ScalableDimension" - ], - "members": { - "PolicyName": {}, - "ServiceNamespace": {}, - "ResourceId": {}, - "ScalableDimension": {}, - "PolicyType": {}, - "StepScalingPolicyConfiguration": { - "shape": "St" - }, - "TargetTrackingScalingPolicyConfiguration": { - "shape": "S12" - } - } - }, - "output": { - "type": "structure", - "required": [ - "PolicyARN" - ], - "members": { - "PolicyARN": {}, - "Alarms": { - "shape": "S1g" - } - } - } - }, - "RegisterScalableTarget": { - "input": { - "type": "structure", - "required": [ - "ServiceNamespace", - "ResourceId", - "ScalableDimension" - ], - "members": { - "ServiceNamespace": {}, - "ResourceId": {}, - "ScalableDimension": {}, - "MinCapacity": { - "type": "integer" - }, - "MaxCapacity": { - "type": "integer" - }, - "RoleARN": {} - } - }, - "output": { - "type": "structure", - "members": {} - } - } - }, - "shapes": { - "S9": { - "type": "list", - "member": {} - }, - "St": { - "type": "structure", - "members": { - "AdjustmentType": {}, - "StepAdjustments": { - "type": "list", - "member": { - "type": "structure", - "required": [ - "ScalingAdjustment" - ], - "members": { - "MetricIntervalLowerBound": { - "type": "double" - }, - "MetricIntervalUpperBound": { - "type": "double" - }, - "ScalingAdjustment": { - "type": "integer" - } - } - } - }, - "MinAdjustmentMagnitude": { - "type": "integer" - }, - "Cooldown": { - "type": "integer" - }, - "MetricAggregationType": {} - } - }, - "S12": { - "type": "structure", - "required": [ - "TargetValue" - ], - "members": { - "TargetValue": { - "type": "double" - }, - "PredefinedMetricSpecification": { - "type": "structure", - "required": [ - "PredefinedMetricType" - ], - "members": { - "PredefinedMetricType": {}, - "ResourceLabel": {} - } - }, - "CustomizedMetricSpecification": { - "type": "structure", - "required": [ - "MetricName", - "Namespace", - "Statistic" - ], - "members": { - "MetricName": {}, - "Namespace": {}, - "Dimensions": { - "type": "list", - "member": { - "type": "structure", - "required": [ - "Name", - "Value" - ], - "members": { - "Name": {}, - "Value": {} - } - } - }, - "Statistic": {}, - "Unit": {} - } - }, - "ScaleOutCooldown": { - "type": "integer" - }, - "ScaleInCooldown": { - "type": "integer" - }, - "DisableScaleIn": { - "type": "boolean" - } - } - }, - "S1g": { - "type": "list", - "member": { - "type": "structure", - "required": [ - "AlarmName", - "AlarmARN" - ], - "members": { - "AlarmName": {}, - "AlarmARN": {} - } - } - } - } -} \ No newline at end of file diff --git a/workshops/monte-carlo-on-ec2-spot-fleet/src/web/node_modules/aws-sdk/apis/application-autoscaling-2016-02-06.paginators.json b/workshops/monte-carlo-on-ec2-spot-fleet/src/web/node_modules/aws-sdk/apis/application-autoscaling-2016-02-06.paginators.json deleted file mode 100644 index 72eec099..00000000 --- a/workshops/monte-carlo-on-ec2-spot-fleet/src/web/node_modules/aws-sdk/apis/application-autoscaling-2016-02-06.paginators.json +++ /dev/null @@ -1,22 +0,0 @@ -{ - "pagination": { - "DescribeScalableTargets": { - "input_token": "NextToken", - "limit_key": "MaxResults", - "output_token": "NextToken", - "result_key": "ScalableTargets" - }, - "DescribeScalingActivities": { - "input_token": "NextToken", - "limit_key": "MaxResults", - "output_token": "NextToken", - "result_key": "ScalingActivities" - }, - "DescribeScalingPolicies": { - "input_token": "NextToken", - "limit_key": "MaxResults", - "output_token": "NextToken", - "result_key": "ScalingPolicies" - } - } -} \ No newline at end of file diff --git a/workshops/monte-carlo-on-ec2-spot-fleet/src/web/node_modules/aws-sdk/apis/appstream-2016-12-01.examples.json b/workshops/monte-carlo-on-ec2-spot-fleet/src/web/node_modules/aws-sdk/apis/appstream-2016-12-01.examples.json deleted file mode 100644 index 0ea7e3b0..00000000 --- a/workshops/monte-carlo-on-ec2-spot-fleet/src/web/node_modules/aws-sdk/apis/appstream-2016-12-01.examples.json +++ /dev/null @@ -1,5 +0,0 @@ -{ - "version": "1.0", - "examples": { - } -} diff --git a/workshops/monte-carlo-on-ec2-spot-fleet/src/web/node_modules/aws-sdk/apis/appstream-2016-12-01.min.json b/workshops/monte-carlo-on-ec2-spot-fleet/src/web/node_modules/aws-sdk/apis/appstream-2016-12-01.min.json deleted file mode 100644 index b6ad3025..00000000 --- a/workshops/monte-carlo-on-ec2-spot-fleet/src/web/node_modules/aws-sdk/apis/appstream-2016-12-01.min.json +++ /dev/null @@ -1,994 +0,0 @@ -{ - "version": "2.0", - "metadata": { - "apiVersion": "2016-12-01", - "endpointPrefix": "appstream2", - "jsonVersion": "1.1", - "protocol": "json", - "serviceFullName": "Amazon AppStream", - "signatureVersion": "v4", - "signingName": "appstream", - "targetPrefix": "PhotonAdminProxyService", - "uid": "appstream-2016-12-01" - }, - "operations": { - "AssociateFleet": { - "input": { - "type": "structure", - "required": [ - "FleetName", - "StackName" - ], - "members": { - "FleetName": {}, - "StackName": {} - } - }, - "output": { - "type": "structure", - "members": {} - } - }, - "CreateDirectoryConfig": { - "input": { - "type": "structure", - "required": [ - "DirectoryName", - "OrganizationalUnitDistinguishedNames", - "ServiceAccountCredentials" - ], - "members": { - "DirectoryName": {}, - "OrganizationalUnitDistinguishedNames": { - "shape": "S6" - }, - "ServiceAccountCredentials": { - "shape": "S8" - } - } - }, - "output": { - "type": "structure", - "members": { - "DirectoryConfig": { - "shape": "Sc" - } - } - } - }, - "CreateFleet": { - "input": { - "type": "structure", - "required": [ - "Name", - "ImageName", - "InstanceType", - "ComputeCapacity" - ], - "members": { - "Name": {}, - "ImageName": {}, - "InstanceType": {}, - "FleetType": {}, - "ComputeCapacity": { - "shape": "Sh" - }, - "VpcConfig": { - "shape": "Sj" - }, - "MaxUserDurationInSeconds": { - "type": "integer" - }, - "DisconnectTimeoutInSeconds": { - "type": "integer" - }, - "Description": {}, - "DisplayName": {}, - "EnableDefaultInternetAccess": { - "type": "boolean" - }, - "DomainJoinInfo": { - "shape": "Sp" - } - } - }, - "output": { - "type": "structure", - "members": { - "Fleet": { - "shape": "Sr" - } - } - } - }, - "CreateImageBuilder": { - "input": { - "type": "structure", - "required": [ - "Name", - "ImageName", - "InstanceType" - ], - "members": { - "Name": {}, - "ImageName": {}, - "InstanceType": {}, - "Description": {}, - "DisplayName": {}, - "VpcConfig": { - "shape": "Sj" - }, - "EnableDefaultInternetAccess": { - "type": "boolean" - }, - "DomainJoinInfo": { - "shape": "Sp" - } - } - }, - "output": { - "type": "structure", - "members": { - "ImageBuilder": { - "shape": "S10" - } - } - } - }, - "CreateImageBuilderStreamingURL": { - "input": { - "type": "structure", - "required": [ - "Name" - ], - "members": { - "Name": {}, - "Validity": { - "type": "long" - } - } - }, - "output": { - "type": "structure", - "members": { - "StreamingURL": {}, - "Expires": { - "type": "timestamp" - } - } - } - }, - "CreateStack": { - "input": { - "type": "structure", - "required": [ - "Name" - ], - "members": { - "Name": {}, - "Description": {}, - "DisplayName": {}, - "StorageConnectors": { - "shape": "S1b" - } - } - }, - "output": { - "type": "structure", - "members": { - "Stack": { - "shape": "S1g" - } - } - } - }, - "CreateStreamingURL": { - "input": { - "type": "structure", - "required": [ - "StackName", - "FleetName", - "UserId" - ], - "members": { - "StackName": {}, - "FleetName": {}, - "UserId": {}, - "ApplicationId": {}, - "Validity": { - "type": "long" - }, - "SessionContext": {} - } - }, - "output": { - "type": "structure", - "members": { - "StreamingURL": {}, - "Expires": { - "type": "timestamp" - } - } - } - }, - "DeleteDirectoryConfig": { - "input": { - "type": "structure", - "required": [ - "DirectoryName" - ], - "members": { - "DirectoryName": {} - } - }, - "output": { - "type": "structure", - "members": {} - } - }, - "DeleteFleet": { - "input": { - "type": "structure", - "required": [ - "Name" - ], - "members": { - "Name": {} - } - }, - "output": { - "type": "structure", - "members": {} - } - }, - "DeleteImage": { - "input": { - "type": "structure", - "required": [ - "Name" - ], - "members": { - "Name": {} - } - }, - "output": { - "type": "structure", - "members": { - "Image": { - "shape": "S1t" - } - } - } - }, - "DeleteImageBuilder": { - "input": { - "type": "structure", - "required": [ - "Name" - ], - "members": { - "Name": {} - } - }, - "output": { - "type": "structure", - "members": { - "ImageBuilder": { - "shape": "S10" - } - } - } - }, - "DeleteStack": { - "input": { - "type": "structure", - "required": [ - "Name" - ], - "members": { - "Name": {} - } - }, - "output": { - "type": "structure", - "members": {} - } - }, - "DescribeDirectoryConfigs": { - "input": { - "type": "structure", - "members": { - "DirectoryNames": { - "type": "list", - "member": {} - }, - "MaxResults": { - "type": "integer" - }, - "NextToken": {} - } - }, - "output": { - "type": "structure", - "members": { - "DirectoryConfigs": { - "type": "list", - "member": { - "shape": "Sc" - } - }, - "NextToken": {} - } - } - }, - "DescribeFleets": { - "input": { - "type": "structure", - "members": { - "Names": { - "shape": "S2b" - }, - "NextToken": {} - } - }, - "output": { - "type": "structure", - "members": { - "Fleets": { - "type": "list", - "member": { - "shape": "Sr" - } - }, - "NextToken": {} - } - } - }, - "DescribeImageBuilders": { - "input": { - "type": "structure", - "members": { - "Names": { - "shape": "S2b" - }, - "MaxResults": { - "type": "integer" - }, - "NextToken": {} - } - }, - "output": { - "type": "structure", - "members": { - "ImageBuilders": { - "type": "list", - "member": { - "shape": "S10" - } - }, - "NextToken": {} - } - } - }, - "DescribeImages": { - "input": { - "type": "structure", - "members": { - "Names": { - "shape": "S2b" - } - } - }, - "output": { - "type": "structure", - "members": { - "Images": { - "type": "list", - "member": { - "shape": "S1t" - } - } - } - } - }, - "DescribeSessions": { - "input": { - "type": "structure", - "required": [ - "StackName", - "FleetName" - ], - "members": { - "StackName": {}, - "FleetName": {}, - "UserId": {}, - "NextToken": {}, - "Limit": { - "type": "integer" - }, - "AuthenticationType": {} - } - }, - "output": { - "type": "structure", - "members": { - "Sessions": { - "type": "list", - "member": { - "type": "structure", - "required": [ - "Id", - "UserId", - "StackName", - "FleetName", - "State" - ], - "members": { - "Id": {}, - "UserId": {}, - "StackName": {}, - "FleetName": {}, - "State": {}, - "AuthenticationType": {} - } - } - }, - "NextToken": {} - } - } - }, - "DescribeStacks": { - "input": { - "type": "structure", - "members": { - "Names": { - "shape": "S2b" - }, - "NextToken": {} - } - }, - "output": { - "type": "structure", - "members": { - "Stacks": { - "type": "list", - "member": { - "shape": "S1g" - } - }, - "NextToken": {} - } - } - }, - "DisassociateFleet": { - "input": { - "type": "structure", - "required": [ - "FleetName", - "StackName" - ], - "members": { - "FleetName": {}, - "StackName": {} - } - }, - "output": { - "type": "structure", - "members": {} - } - }, - "ExpireSession": { - "input": { - "type": "structure", - "required": [ - "SessionId" - ], - "members": { - "SessionId": {} - } - }, - "output": { - "type": "structure", - "members": {} - } - }, - "ListAssociatedFleets": { - "input": { - "type": "structure", - "required": [ - "StackName" - ], - "members": { - "StackName": {}, - "NextToken": {} - } - }, - "output": { - "type": "structure", - "members": { - "Names": { - "shape": "S2b" - }, - "NextToken": {} - } - } - }, - "ListAssociatedStacks": { - "input": { - "type": "structure", - "required": [ - "FleetName" - ], - "members": { - "FleetName": {}, - "NextToken": {} - } - }, - "output": { - "type": "structure", - "members": { - "Names": { - "shape": "S2b" - }, - "NextToken": {} - } - } - }, - "StartFleet": { - "input": { - "type": "structure", - "required": [ - "Name" - ], - "members": { - "Name": {} - } - }, - "output": { - "type": "structure", - "members": {} - } - }, - "StartImageBuilder": { - "input": { - "type": "structure", - "required": [ - "Name" - ], - "members": { - "Name": {} - } - }, - "output": { - "type": "structure", - "members": { - "ImageBuilder": { - "shape": "S10" - } - } - } - }, - "StopFleet": { - "input": { - "type": "structure", - "required": [ - "Name" - ], - "members": { - "Name": {} - } - }, - "output": { - "type": "structure", - "members": {} - } - }, - "StopImageBuilder": { - "input": { - "type": "structure", - "required": [ - "Name" - ], - "members": { - "Name": {} - } - }, - "output": { - "type": "structure", - "members": { - "ImageBuilder": { - "shape": "S10" - } - } - } - }, - "UpdateDirectoryConfig": { - "input": { - "type": "structure", - "required": [ - "DirectoryName" - ], - "members": { - "DirectoryName": {}, - "OrganizationalUnitDistinguishedNames": { - "shape": "S6" - }, - "ServiceAccountCredentials": { - "shape": "S8" - } - } - }, - "output": { - "type": "structure", - "members": { - "DirectoryConfig": { - "shape": "Sc" - } - } - } - }, - "UpdateFleet": { - "input": { - "type": "structure", - "required": [ - "Name" - ], - "members": { - "ImageName": {}, - "Name": {}, - "InstanceType": {}, - "ComputeCapacity": { - "shape": "Sh" - }, - "VpcConfig": { - "shape": "Sj" - }, - "MaxUserDurationInSeconds": { - "type": "integer" - }, - "DisconnectTimeoutInSeconds": { - "type": "integer" - }, - "DeleteVpcConfig": { - "deprecated": true, - "type": "boolean" - }, - "Description": {}, - "DisplayName": {}, - "EnableDefaultInternetAccess": { - "type": "boolean" - }, - "DomainJoinInfo": { - "shape": "Sp" - }, - "AttributesToDelete": { - "type": "list", - "member": {} - } - } - }, - "output": { - "type": "structure", - "members": { - "Fleet": { - "shape": "Sr" - } - } - } - }, - "UpdateStack": { - "input": { - "type": "structure", - "required": [ - "Name" - ], - "members": { - "DisplayName": {}, - "Description": {}, - "Name": {}, - "StorageConnectors": { - "shape": "S1b" - }, - "DeleteStorageConnectors": { - "type": "boolean" - } - } - }, - "output": { - "type": "structure", - "members": { - "Stack": { - "shape": "S1g" - } - } - } - } - }, - "shapes": { - "S6": { - "type": "list", - "member": {} - }, - "S8": { - "type": "structure", - "required": [ - "AccountName", - "AccountPassword" - ], - "members": { - "AccountName": { - "type": "string", - "sensitive": true - }, - "AccountPassword": { - "type": "string", - "sensitive": true - } - } - }, - "Sc": { - "type": "structure", - "required": [ - "DirectoryName" - ], - "members": { - "DirectoryName": {}, - "OrganizationalUnitDistinguishedNames": { - "shape": "S6" - }, - "ServiceAccountCredentials": { - "shape": "S8" - }, - "CreatedTime": { - "type": "timestamp" - } - } - }, - "Sh": { - "type": "structure", - "required": [ - "DesiredInstances" - ], - "members": { - "DesiredInstances": { - "type": "integer" - } - } - }, - "Sj": { - "type": "structure", - "members": { - "SubnetIds": { - "type": "list", - "member": {} - }, - "SecurityGroupIds": { - "type": "list", - "member": {} - } - } - }, - "Sp": { - "type": "structure", - "members": { - "DirectoryName": {}, - "OrganizationalUnitDistinguishedName": {} - } - }, - "Sr": { - "type": "structure", - "required": [ - "Arn", - "Name", - "ImageName", - "InstanceType", - "ComputeCapacityStatus", - "State" - ], - "members": { - "Arn": {}, - "Name": {}, - "DisplayName": {}, - "Description": {}, - "ImageName": {}, - "InstanceType": {}, - "FleetType": {}, - "ComputeCapacityStatus": { - "type": "structure", - "required": [ - "Desired" - ], - "members": { - "Desired": { - "type": "integer" - }, - "Running": { - "type": "integer" - }, - "InUse": { - "type": "integer" - }, - "Available": { - "type": "integer" - } - } - }, - "MaxUserDurationInSeconds": { - "type": "integer" - }, - "DisconnectTimeoutInSeconds": { - "type": "integer" - }, - "State": {}, - "VpcConfig": { - "shape": "Sj" - }, - "CreatedTime": { - "type": "timestamp" - }, - "FleetErrors": { - "type": "list", - "member": { - "type": "structure", - "members": { - "ErrorCode": {}, - "ErrorMessage": {} - } - } - }, - "EnableDefaultInternetAccess": { - "type": "boolean" - }, - "DomainJoinInfo": { - "shape": "Sp" - } - } - }, - "S10": { - "type": "structure", - "required": [ - "Name" - ], - "members": { - "Name": {}, - "Arn": {}, - "ImageArn": {}, - "Description": {}, - "DisplayName": {}, - "VpcConfig": { - "shape": "Sj" - }, - "InstanceType": {}, - "Platform": {}, - "State": {}, - "StateChangeReason": { - "type": "structure", - "members": { - "Code": {}, - "Message": {} - } - }, - "CreatedTime": { - "type": "timestamp" - }, - "EnableDefaultInternetAccess": { - "type": "boolean" - }, - "DomainJoinInfo": { - "shape": "Sp" - }, - "ImageBuilderErrors": { - "type": "list", - "member": { - "type": "structure", - "members": { - "ErrorCode": {}, - "ErrorMessage": {}, - "ErrorTimestamp": { - "type": "timestamp" - } - } - } - } - } - }, - "S1b": { - "type": "list", - "member": { - "type": "structure", - "required": [ - "ConnectorType" - ], - "members": { - "ConnectorType": {}, - "ResourceIdentifier": {} - } - } - }, - "S1g": { - "type": "structure", - "required": [ - "Name" - ], - "members": { - "Arn": {}, - "Name": {}, - "Description": {}, - "DisplayName": {}, - "CreatedTime": { - "type": "timestamp" - }, - "StorageConnectors": { - "shape": "S1b" - }, - "StackErrors": { - "type": "list", - "member": { - "type": "structure", - "members": { - "ErrorCode": {}, - "ErrorMessage": {} - } - } - } - } - }, - "S1t": { - "type": "structure", - "required": [ - "Name" - ], - "members": { - "Name": {}, - "Arn": {}, - "BaseImageArn": {}, - "DisplayName": {}, - "State": {}, - "Visibility": {}, - "ImageBuilderSupported": { - "type": "boolean" - }, - "Platform": {}, - "Description": {}, - "StateChangeReason": { - "type": "structure", - "members": { - "Code": {}, - "Message": {} - } - }, - "Applications": { - "type": "list", - "member": { - "type": "structure", - "members": { - "Name": {}, - "DisplayName": {}, - "IconURL": {}, - "LaunchPath": {}, - "LaunchParameters": {}, - "Enabled": { - "type": "boolean" - }, - "Metadata": { - "type": "map", - "key": {}, - "value": {} - } - } - } - }, - "CreatedTime": { - "type": "timestamp" - }, - "PublicBaseImageReleasedDate": { - "type": "timestamp" - } - } - }, - "S2b": { - "type": "list", - "member": {} - } - } -} \ No newline at end of file diff --git a/workshops/monte-carlo-on-ec2-spot-fleet/src/web/node_modules/aws-sdk/apis/appstream-2016-12-01.paginators.json b/workshops/monte-carlo-on-ec2-spot-fleet/src/web/node_modules/aws-sdk/apis/appstream-2016-12-01.paginators.json deleted file mode 100644 index 5677bd8e..00000000 --- a/workshops/monte-carlo-on-ec2-spot-fleet/src/web/node_modules/aws-sdk/apis/appstream-2016-12-01.paginators.json +++ /dev/null @@ -1,4 +0,0 @@ -{ - "pagination": { - } -} diff --git a/workshops/monte-carlo-on-ec2-spot-fleet/src/web/node_modules/aws-sdk/apis/appstream-2016-12-01.waiters2.json b/workshops/monte-carlo-on-ec2-spot-fleet/src/web/node_modules/aws-sdk/apis/appstream-2016-12-01.waiters2.json deleted file mode 100644 index f53f609c..00000000 --- a/workshops/monte-carlo-on-ec2-spot-fleet/src/web/node_modules/aws-sdk/apis/appstream-2016-12-01.waiters2.json +++ /dev/null @@ -1,55 +0,0 @@ -{ - "version": 2, - "waiters": { - "FleetStarted": { - "delay": 30, - "maxAttempts": 40, - "operation": "DescribeFleets", - "acceptors": [ - { - "state": "success", - "matcher": "pathAll", - "argument": "Fleets[].State", - "expected": "ACTIVE" - }, - { - "state": "failure", - "matcher": "pathAny", - "argument": "Fleets[].State", - "expected": "PENDING_DEACTIVATE" - }, - { - "state": "failure", - "matcher": "pathAny", - "argument": "Fleets[].State", - "expected": "INACTIVE" - } - ] - }, - "FleetStopped": { - "delay": 30, - "maxAttempts": 40, - "operation": "DescribeFleets", - "acceptors": [ - { - "state": "success", - "matcher": "pathAll", - "argument": "Fleets[].State", - "expected": "INACTIVE" - }, - { - "state": "failure", - "matcher": "pathAny", - "argument": "Fleets[].State", - "expected": "PENDING_ACTIVATE" - }, - { - "state": "failure", - "matcher": "pathAny", - "argument": "Fleets[].State", - "expected": "ACTIVE" - } - ] - } - } -} \ No newline at end of file diff --git a/workshops/monte-carlo-on-ec2-spot-fleet/src/web/node_modules/aws-sdk/apis/athena-2017-05-18.examples.json b/workshops/monte-carlo-on-ec2-spot-fleet/src/web/node_modules/aws-sdk/apis/athena-2017-05-18.examples.json deleted file mode 100644 index 0ea7e3b0..00000000 --- a/workshops/monte-carlo-on-ec2-spot-fleet/src/web/node_modules/aws-sdk/apis/athena-2017-05-18.examples.json +++ /dev/null @@ -1,5 +0,0 @@ -{ - "version": "1.0", - "examples": { - } -} diff --git a/workshops/monte-carlo-on-ec2-spot-fleet/src/web/node_modules/aws-sdk/apis/athena-2017-05-18.min.json b/workshops/monte-carlo-on-ec2-spot-fleet/src/web/node_modules/aws-sdk/apis/athena-2017-05-18.min.json deleted file mode 100644 index 3bcd330a..00000000 --- a/workshops/monte-carlo-on-ec2-spot-fleet/src/web/node_modules/aws-sdk/apis/athena-2017-05-18.min.json +++ /dev/null @@ -1,416 +0,0 @@ -{ - "version": "2.0", - "metadata": { - "apiVersion": "2017-05-18", - "endpointPrefix": "athena", - "jsonVersion": "1.1", - "protocol": "json", - "serviceFullName": "Amazon Athena", - "signatureVersion": "v4", - "targetPrefix": "AmazonAthena", - "uid": "athena-2017-05-18" - }, - "operations": { - "BatchGetNamedQuery": { - "input": { - "type": "structure", - "required": [ - "NamedQueryIds" - ], - "members": { - "NamedQueryIds": { - "shape": "S2" - } - } - }, - "output": { - "type": "structure", - "members": { - "NamedQueries": { - "type": "list", - "member": { - "shape": "S6" - } - }, - "UnprocessedNamedQueryIds": { - "type": "list", - "member": { - "type": "structure", - "members": { - "NamedQueryId": {}, - "ErrorCode": {}, - "ErrorMessage": {} - } - } - } - } - } - }, - "BatchGetQueryExecution": { - "input": { - "type": "structure", - "required": [ - "QueryExecutionIds" - ], - "members": { - "QueryExecutionIds": { - "shape": "Sg" - } - } - }, - "output": { - "type": "structure", - "members": { - "QueryExecutions": { - "type": "list", - "member": { - "shape": "Sk" - } - }, - "UnprocessedQueryExecutionIds": { - "type": "list", - "member": { - "type": "structure", - "members": { - "QueryExecutionId": {}, - "ErrorCode": {}, - "ErrorMessage": {} - } - } - } - } - } - }, - "CreateNamedQuery": { - "input": { - "type": "structure", - "required": [ - "Name", - "Database", - "QueryString" - ], - "members": { - "Name": {}, - "Description": {}, - "Database": {}, - "QueryString": {}, - "ClientRequestToken": { - "idempotencyToken": true - } - } - }, - "output": { - "type": "structure", - "members": { - "NamedQueryId": {} - } - }, - "idempotent": true - }, - "DeleteNamedQuery": { - "input": { - "type": "structure", - "required": [ - "NamedQueryId" - ], - "members": { - "NamedQueryId": { - "idempotencyToken": true - } - } - }, - "output": { - "type": "structure", - "members": {} - }, - "idempotent": true - }, - "GetNamedQuery": { - "input": { - "type": "structure", - "required": [ - "NamedQueryId" - ], - "members": { - "NamedQueryId": {} - } - }, - "output": { - "type": "structure", - "members": { - "NamedQuery": { - "shape": "S6" - } - } - } - }, - "GetQueryExecution": { - "input": { - "type": "structure", - "required": [ - "QueryExecutionId" - ], - "members": { - "QueryExecutionId": {} - } - }, - "output": { - "type": "structure", - "members": { - "QueryExecution": { - "shape": "Sk" - } - } - } - }, - "GetQueryResults": { - "input": { - "type": "structure", - "required": [ - "QueryExecutionId" - ], - "members": { - "QueryExecutionId": {}, - "NextToken": {}, - "MaxResults": { - "type": "integer" - } - } - }, - "output": { - "type": "structure", - "members": { - "ResultSet": { - "type": "structure", - "members": { - "Rows": { - "type": "list", - "member": { - "type": "structure", - "members": { - "Data": { - "type": "list", - "member": { - "type": "structure", - "members": { - "VarCharValue": {} - } - } - } - } - } - }, - "ResultSetMetadata": { - "type": "structure", - "members": { - "ColumnInfo": { - "type": "list", - "member": { - "type": "structure", - "required": [ - "Name", - "Type" - ], - "members": { - "CatalogName": {}, - "SchemaName": {}, - "TableName": {}, - "Name": {}, - "Label": {}, - "Type": {}, - "Precision": { - "type": "integer" - }, - "Scale": { - "type": "integer" - }, - "Nullable": {}, - "CaseSensitive": { - "type": "boolean" - } - } - } - } - } - } - } - }, - "NextToken": {} - } - } - }, - "ListNamedQueries": { - "input": { - "type": "structure", - "members": { - "NextToken": {}, - "MaxResults": { - "type": "integer" - } - } - }, - "output": { - "type": "structure", - "members": { - "NamedQueryIds": { - "shape": "S2" - }, - "NextToken": {} - } - } - }, - "ListQueryExecutions": { - "input": { - "type": "structure", - "members": { - "NextToken": {}, - "MaxResults": { - "type": "integer" - } - } - }, - "output": { - "type": "structure", - "members": { - "QueryExecutionIds": { - "shape": "Sg" - }, - "NextToken": {} - } - } - }, - "StartQueryExecution": { - "input": { - "type": "structure", - "required": [ - "QueryString", - "ResultConfiguration" - ], - "members": { - "QueryString": {}, - "ClientRequestToken": { - "idempotencyToken": true - }, - "QueryExecutionContext": { - "shape": "Sp" - }, - "ResultConfiguration": { - "shape": "Sl" - } - } - }, - "output": { - "type": "structure", - "members": { - "QueryExecutionId": {} - } - }, - "idempotent": true - }, - "StopQueryExecution": { - "input": { - "type": "structure", - "required": [ - "QueryExecutionId" - ], - "members": { - "QueryExecutionId": { - "idempotencyToken": true - } - } - }, - "output": { - "type": "structure", - "members": {} - }, - "idempotent": true - } - }, - "shapes": { - "S2": { - "type": "list", - "member": {} - }, - "S6": { - "type": "structure", - "required": [ - "Name", - "Database", - "QueryString" - ], - "members": { - "Name": {}, - "Description": {}, - "Database": {}, - "QueryString": {}, - "NamedQueryId": {} - } - }, - "Sg": { - "type": "list", - "member": {} - }, - "Sk": { - "type": "structure", - "members": { - "QueryExecutionId": {}, - "Query": {}, - "ResultConfiguration": { - "shape": "Sl" - }, - "QueryExecutionContext": { - "shape": "Sp" - }, - "Status": { - "type": "structure", - "members": { - "State": {}, - "StateChangeReason": {}, - "SubmissionDateTime": { - "type": "timestamp" - }, - "CompletionDateTime": { - "type": "timestamp" - } - } - }, - "Statistics": { - "type": "structure", - "members": { - "EngineExecutionTimeInMillis": { - "type": "long" - }, - "DataScannedInBytes": { - "type": "long" - } - } - } - } - }, - "Sl": { - "type": "structure", - "required": [ - "OutputLocation" - ], - "members": { - "OutputLocation": {}, - "EncryptionConfiguration": { - "type": "structure", - "required": [ - "EncryptionOption" - ], - "members": { - "EncryptionOption": {}, - "KmsKey": {} - } - } - } - }, - "Sp": { - "type": "structure", - "members": { - "Database": {} - } - } - } -} \ No newline at end of file diff --git a/workshops/monte-carlo-on-ec2-spot-fleet/src/web/node_modules/aws-sdk/apis/athena-2017-05-18.paginators.json b/workshops/monte-carlo-on-ec2-spot-fleet/src/web/node_modules/aws-sdk/apis/athena-2017-05-18.paginators.json deleted file mode 100644 index be4b1f01..00000000 --- a/workshops/monte-carlo-on-ec2-spot-fleet/src/web/node_modules/aws-sdk/apis/athena-2017-05-18.paginators.json +++ /dev/null @@ -1,19 +0,0 @@ -{ - "pagination": { - "GetQueryResults": { - "input_token": "NextToken", - "output_token": "NextToken", - "limit_key": "MaxResults" - }, - "ListNamedQueries": { - "input_token": "NextToken", - "output_token": "NextToken", - "limit_key": "MaxResults" - }, - "ListQueryExecutions": { - "input_token": "NextToken", - "output_token": "NextToken", - "limit_key": "MaxResults" - } - } -} diff --git a/workshops/monte-carlo-on-ec2-spot-fleet/src/web/node_modules/aws-sdk/apis/autoscaling-2011-01-01.examples.json b/workshops/monte-carlo-on-ec2-spot-fleet/src/web/node_modules/aws-sdk/apis/autoscaling-2011-01-01.examples.json deleted file mode 100644 index 33ffc9c0..00000000 --- a/workshops/monte-carlo-on-ec2-spot-fleet/src/web/node_modules/aws-sdk/apis/autoscaling-2011-01-01.examples.json +++ /dev/null @@ -1,1396 +0,0 @@ -{ - "version": "1.0", - "examples": { - "AttachInstances": [ - { - "input": { - "AutoScalingGroupName": "my-auto-scaling-group", - "InstanceIds": [ - "i-93633f9b" - ] - }, - "comments": { - "input": { - }, - "output": { - } - }, - "description": "This example attaches the specified instance to the specified Auto Scaling group.", - "id": "autoscaling-attach-instances-1", - "title": "To attach an instance to an Auto Scaling group" - } - ], - "AttachLoadBalancerTargetGroups": [ - { - "input": { - "AutoScalingGroupName": "my-auto-scaling-group", - "TargetGroupARNs": [ - "arn:aws:elasticloadbalancing:us-west-2:123456789012:targetgroup/my-targets/73e2d6bc24d8a067" - ] - }, - "comments": { - "input": { - }, - "output": { - } - }, - "description": "This example attaches the specified target group to the specified Auto Scaling group.", - "id": "autoscaling-attach-load-balancer-target-groups-1", - "title": "To attach a target group to an Auto Scaling group" - } - ], - "AttachLoadBalancers": [ - { - "input": { - "AutoScalingGroupName": "my-auto-scaling-group", - "LoadBalancerNames": [ - "my-load-balancer" - ] - }, - "comments": { - "input": { - }, - "output": { - } - }, - "description": "This example attaches the specified load balancer to the specified Auto Scaling group.", - "id": "autoscaling-attach-load-balancers-1", - "title": "To attach a load balancer to an Auto Scaling group" - } - ], - "CompleteLifecycleAction": [ - { - "input": { - "AutoScalingGroupName": "my-auto-scaling-group", - "LifecycleActionResult": "CONTINUE", - "LifecycleActionToken": "bcd2f1b8-9a78-44d3-8a7a-4dd07d7cf635", - "LifecycleHookName": "my-lifecycle-hook" - }, - "comments": { - "input": { - }, - "output": { - } - }, - "description": "This example notifies Auto Scaling that the specified lifecycle action is complete so that it can finish launching or terminating the instance.", - "id": "autoscaling-complete-lifecycle-action-1", - "title": "To complete the lifecycle action" - } - ], - "CreateAutoScalingGroup": [ - { - "input": { - "AutoScalingGroupName": "my-auto-scaling-group", - "LaunchConfigurationName": "my-launch-config", - "MaxSize": 3, - "MinSize": 1, - "VPCZoneIdentifier": "subnet-4176792c" - }, - "comments": { - "input": { - }, - "output": { - } - }, - "description": "This example creates an Auto Scaling group.", - "id": "autoscaling-create-auto-scaling-group-1", - "title": "To create an Auto Scaling group" - }, - { - "input": { - "AutoScalingGroupName": "my-auto-scaling-group", - "AvailabilityZones": [ - "us-west-2c" - ], - "HealthCheckGracePeriod": 120, - "HealthCheckType": "ELB", - "LaunchConfigurationName": "my-launch-config", - "LoadBalancerNames": [ - "my-load-balancer" - ], - "MaxSize": 3, - "MinSize": 1 - }, - "comments": { - "input": { - }, - "output": { - } - }, - "description": "This example creates an Auto Scaling group and attaches the specified Classic Load Balancer.", - "id": "autoscaling-create-auto-scaling-group-2", - "title": "To create an Auto Scaling group with an attached load balancer" - }, - { - "input": { - "AutoScalingGroupName": "my-auto-scaling-group", - "HealthCheckGracePeriod": 120, - "HealthCheckType": "ELB", - "LaunchConfigurationName": "my-launch-config", - "MaxSize": 3, - "MinSize": 1, - "TargetGroupARNs": [ - "arn:aws:elasticloadbalancing:us-west-2:123456789012:targetgroup/my-targets/73e2d6bc24d8a067" - ], - "VPCZoneIdentifier": "subnet-4176792c, subnet-65ea5f08" - }, - "comments": { - "input": { - }, - "output": { - } - }, - "description": "This example creates an Auto Scaling group and attaches the specified target group.", - "id": "autoscaling-create-auto-scaling-group-3", - "title": "To create an Auto Scaling group with an attached target group" - } - ], - "CreateLaunchConfiguration": [ - { - "input": { - "IamInstanceProfile": "my-iam-role", - "ImageId": "ami-12345678", - "InstanceType": "m3.medium", - "LaunchConfigurationName": "my-launch-config", - "SecurityGroups": [ - "sg-eb2af88e" - ] - }, - "comments": { - "input": { - }, - "output": { - } - }, - "description": "This example creates a launch configuration.", - "id": "autoscaling-create-launch-configuration-1", - "title": "To create a launch configuration" - } - ], - "CreateOrUpdateTags": [ - { - "input": { - "Tags": [ - { - "Key": "Role", - "PropagateAtLaunch": true, - "ResourceId": "my-auto-scaling-group", - "ResourceType": "auto-scaling-group", - "Value": "WebServer" - }, - { - "Key": "Dept", - "PropagateAtLaunch": true, - "ResourceId": "my-auto-scaling-group", - "ResourceType": "auto-scaling-group", - "Value": "Research" - } - ] - }, - "comments": { - "input": { - }, - "output": { - } - }, - "description": "This example adds two tags to the specified Auto Scaling group.", - "id": "autoscaling-create-or-update-tags-1", - "title": "To create or update tags for an Auto Scaling group" - } - ], - "DeleteAutoScalingGroup": [ - { - "input": { - "AutoScalingGroupName": "my-auto-scaling-group" - }, - "comments": { - "input": { - }, - "output": { - } - }, - "description": "This example deletes the specified Auto Scaling group.", - "id": "autoscaling-delete-auto-scaling-group-1", - "title": "To delete an Auto Scaling group" - }, - { - "input": { - "AutoScalingGroupName": "my-auto-scaling-group", - "ForceDelete": true - }, - "comments": { - "input": { - }, - "output": { - } - }, - "description": "This example deletes the specified Auto Scaling group and all its instances.", - "id": "autoscaling-delete-auto-scaling-group-2", - "title": "To delete an Auto Scaling group and all its instances" - } - ], - "DeleteLaunchConfiguration": [ - { - "input": { - "LaunchConfigurationName": "my-launch-config" - }, - "comments": { - "input": { - }, - "output": { - } - }, - "description": "This example deletes the specified launch configuration.", - "id": "autoscaling-delete-launch-configuration-1", - "title": "To delete a launch configuration" - } - ], - "DeleteLifecycleHook": [ - { - "input": { - "AutoScalingGroupName": "my-auto-scaling-group", - "LifecycleHookName": "my-lifecycle-hook" - }, - "comments": { - "input": { - }, - "output": { - } - }, - "description": "This example deletes the specified lifecycle hook.", - "id": "autoscaling-delete-lifecycle-hook-1", - "title": "To delete a lifecycle hook" - } - ], - "DeleteNotificationConfiguration": [ - { - "input": { - "AutoScalingGroupName": "my-auto-scaling-group", - "TopicARN": "arn:aws:sns:us-west-2:123456789012:my-sns-topic" - }, - "comments": { - "input": { - }, - "output": { - } - }, - "description": "This example deletes the specified notification from the specified Auto Scaling group.", - "id": "autoscaling-delete-notification-configuration-1", - "title": "To delete an Auto Scaling notification" - } - ], - "DeletePolicy": [ - { - "input": { - "AutoScalingGroupName": "my-auto-scaling-group", - "PolicyName": "ScaleIn" - }, - "comments": { - "input": { - }, - "output": { - } - }, - "description": "This example deletes the specified Auto Scaling policy.", - "id": "autoscaling-delete-policy-1", - "title": "To delete an Auto Scaling policy" - } - ], - "DeleteScheduledAction": [ - { - "input": { - "AutoScalingGroupName": "my-auto-scaling-group", - "ScheduledActionName": "my-scheduled-action" - }, - "comments": { - "input": { - }, - "output": { - } - }, - "description": "This example deletes the specified scheduled action from the specified Auto Scaling group.", - "id": "autoscaling-delete-scheduled-action-1", - "title": "To delete a scheduled action from an Auto Scaling group" - } - ], - "DeleteTags": [ - { - "input": { - "Tags": [ - { - "Key": "Dept", - "ResourceId": "my-auto-scaling-group", - "ResourceType": "auto-scaling-group", - "Value": "Research" - } - ] - }, - "comments": { - "input": { - }, - "output": { - } - }, - "description": "This example deletes the specified tag from the specified Auto Scaling group.", - "id": "autoscaling-delete-tags-1", - "title": "To delete a tag from an Auto Scaling group" - } - ], - "DescribeAccountLimits": [ - { - "output": { - "MaxNumberOfAutoScalingGroups": 20, - "MaxNumberOfLaunchConfigurations": 100, - "NumberOfAutoScalingGroups": 3, - "NumberOfLaunchConfigurations": 5 - }, - "comments": { - "input": { - }, - "output": { - } - }, - "description": "This example describes the Auto Scaling limits for your AWS account.", - "id": "autoscaling-describe-account-limits-1", - "title": "To describe your Auto Scaling account limits" - } - ], - "DescribeAdjustmentTypes": [ - { - "output": { - "AdjustmentTypes": [ - { - "AdjustmentType": "ChangeInCapacity" - }, - { - "AdjustmentType": "ExactCapcity" - }, - { - "AdjustmentType": "PercentChangeInCapacity" - } - ] - }, - "comments": { - "input": { - }, - "output": { - } - }, - "description": "This example describes the available adjustment types.", - "id": "autoscaling-describe-adjustment-types-1", - "title": "To describe the Auto Scaling adjustment types" - } - ], - "DescribeAutoScalingGroups": [ - { - "input": { - "AutoScalingGroupNames": [ - "my-auto-scaling-group" - ] - }, - "output": { - "AutoScalingGroups": [ - { - "AutoScalingGroupARN": "arn:aws:autoscaling:us-west-2:123456789012:autoScalingGroup:930d940e-891e-4781-a11a-7b0acd480f03:autoScalingGroupName/my-auto-scaling-group", - "AutoScalingGroupName": "my-auto-scaling-group", - "AvailabilityZones": [ - "us-west-2c" - ], - "CreatedTime": "2013-08-19T20:53:25.584Z", - "DefaultCooldown": 300, - "DesiredCapacity": 1, - "EnabledMetrics": [ - - ], - "HealthCheckGracePeriod": 300, - "HealthCheckType": "EC2", - "Instances": [ - { - "AvailabilityZone": "us-west-2c", - "HealthStatus": "Healthy", - "InstanceId": "i-4ba0837f", - "LaunchConfigurationName": "my-launch-config", - "LifecycleState": "InService", - "ProtectedFromScaleIn": false - } - ], - "LaunchConfigurationName": "my-launch-config", - "LoadBalancerNames": [ - - ], - "MaxSize": 1, - "MinSize": 0, - "NewInstancesProtectedFromScaleIn": false, - "SuspendedProcesses": [ - - ], - "Tags": [ - - ], - "TerminationPolicies": [ - "Default" - ], - "VPCZoneIdentifier": "subnet-12345678" - } - ] - }, - "comments": { - "input": { - }, - "output": { - } - }, - "description": "This example describes the specified Auto Scaling group.", - "id": "autoscaling-describe-auto-scaling-groups-1", - "title": "To describe an Auto Scaling group" - } - ], - "DescribeAutoScalingInstances": [ - { - "input": { - "InstanceIds": [ - "i-4ba0837f" - ] - }, - "output": { - "AutoScalingInstances": [ - { - "AutoScalingGroupName": "my-auto-scaling-group", - "AvailabilityZone": "us-west-2c", - "HealthStatus": "HEALTHY", - "InstanceId": "i-4ba0837f", - "LaunchConfigurationName": "my-launch-config", - "LifecycleState": "InService", - "ProtectedFromScaleIn": false - } - ] - }, - "comments": { - "input": { - }, - "output": { - } - }, - "description": "This example describes the specified Auto Scaling instance.", - "id": "autoscaling-describe-auto-scaling-instances-1", - "title": "To describe one or more Auto Scaling instances" - } - ], - "DescribeAutoScalingNotificationTypes": [ - { - "output": { - "AutoScalingNotificationTypes": [ - "autoscaling:EC2_INSTANCE_LAUNCH", - "autoscaling:EC2_INSTANCE_LAUNCH_ERROR", - "autoscaling:EC2_INSTANCE_TERMINATE", - "autoscaling:EC2_INSTANCE_TERMINATE_ERROR", - "autoscaling:TEST_NOTIFICATION" - ] - }, - "comments": { - "input": { - }, - "output": { - } - }, - "description": "This example describes the available notification types.", - "id": "autoscaling-describe-auto-scaling-notification-types-1", - "title": "To describe the Auto Scaling notification types" - } - ], - "DescribeLaunchConfigurations": [ - { - "input": { - "LaunchConfigurationNames": [ - "my-launch-config" - ] - }, - "output": { - "LaunchConfigurations": [ - { - "AssociatePublicIpAddress": true, - "BlockDeviceMappings": [ - - ], - "CreatedTime": "2014-05-07T17:39:28.599Z", - "EbsOptimized": false, - "ImageId": "ami-043a5034", - "InstanceMonitoring": { - "Enabled": true - }, - "InstanceType": "t1.micro", - "LaunchConfigurationARN": "arn:aws:autoscaling:us-west-2:123456789012:launchConfiguration:98d3b196-4cf9-4e88-8ca1-8547c24ced8b:launchConfigurationName/my-launch-config", - "LaunchConfigurationName": "my-launch-config", - "SecurityGroups": [ - "sg-67ef0308" - ] - } - ] - }, - "comments": { - "input": { - }, - "output": { - } - }, - "description": "This example describes the specified launch configuration.", - "id": "autoscaling-describe-launch-configurations-1", - "title": "To describe Auto Scaling launch configurations" - } - ], - "DescribeLifecycleHookTypes": [ - { - "output": { - "LifecycleHookTypes": [ - "autoscaling:EC2_INSTANCE_LAUNCHING", - "autoscaling:EC2_INSTANCE_TERMINATING" - ] - }, - "comments": { - "input": { - }, - "output": { - } - }, - "description": "This example describes the available lifecycle hook types.", - "id": "autoscaling-describe-lifecycle-hook-types-1", - "title": "To describe the available types of lifecycle hooks" - } - ], - "DescribeLifecycleHooks": [ - { - "input": { - "AutoScalingGroupName": "my-auto-scaling-group" - }, - "output": { - "LifecycleHooks": [ - { - "AutoScalingGroupName": "my-auto-scaling-group", - "DefaultResult": "ABANDON", - "GlobalTimeout": 172800, - "HeartbeatTimeout": 3600, - "LifecycleHookName": "my-lifecycle-hook", - "LifecycleTransition": "autoscaling:EC2_INSTANCE_LAUNCHING", - "NotificationTargetARN": "arn:aws:sns:us-west-2:123456789012:my-sns-topic", - "RoleARN": "arn:aws:iam::123456789012:role/my-auto-scaling-role" - } - ] - }, - "comments": { - "input": { - }, - "output": { - } - }, - "description": "This example describes the lifecycle hooks for the specified Auto Scaling group.", - "id": "autoscaling-describe-lifecycle-hooks-1", - "title": "To describe your lifecycle hooks" - } - ], - "DescribeLoadBalancerTargetGroups": [ - { - "input": { - "AutoScalingGroupName": "my-auto-scaling-group" - }, - "output": { - "LoadBalancerTargetGroups": [ - { - "LoadBalancerTargetGroupARN": "arn:aws:elasticloadbalancing:us-west-2:123456789012:targetgroup/my-targets/73e2d6bc24d8a067", - "State": "Added" - } - ] - }, - "comments": { - "input": { - }, - "output": { - } - }, - "description": "This example describes the target groups attached to the specified Auto Scaling group.", - "id": "autoscaling-describe-load-balancer-target-groups-1", - "title": "To describe the target groups for an Auto Scaling group" - } - ], - "DescribeLoadBalancers": [ - { - "input": { - "AutoScalingGroupName": "my-auto-scaling-group" - }, - "output": { - "LoadBalancers": [ - { - "LoadBalancerName": "my-load-balancer", - "State": "Added" - } - ] - }, - "comments": { - "input": { - }, - "output": { - } - }, - "description": "This example describes the load balancers attached to the specified Auto Scaling group.", - "id": "autoscaling-describe-load-balancers-1", - "title": "To describe the load balancers for an Auto Scaling group" - } - ], - "DescribeMetricCollectionTypes": [ - { - "output": { - "Granularities": [ - { - "Granularity": "1Minute" - } - ], - "Metrics": [ - { - "Metric": "GroupMinSize" - }, - { - "Metric": "GroupMaxSize" - }, - { - "Metric": "GroupDesiredCapacity" - }, - { - "Metric": "GroupInServiceInstances" - }, - { - "Metric": "GroupPendingInstances" - }, - { - "Metric": "GroupTerminatingInstances" - }, - { - "Metric": "GroupStandbyInstances" - }, - { - "Metric": "GroupTotalInstances" - } - ] - }, - "comments": { - "input": { - }, - "output": { - } - }, - "description": "This example describes the available metric collection types.", - "id": "autoscaling-describe-metric-collection-types-1", - "title": "To describe the Auto Scaling metric collection types" - } - ], - "DescribeNotificationConfigurations": [ - { - "input": { - "AutoScalingGroupNames": [ - "my-auto-scaling-group" - ] - }, - "output": { - "NotificationConfigurations": [ - { - "AutoScalingGroupName": "my-auto-scaling-group", - "NotificationType": "autoscaling:TEST_NOTIFICATION", - "TopicARN": "arn:aws:sns:us-west-2:123456789012:my-sns-topic-2" - }, - { - "AutoScalingGroupName": "my-auto-scaling-group", - "NotificationType": "autoscaling:TEST_NOTIFICATION", - "TopicARN": "arn:aws:sns:us-west-2:123456789012:my-sns-topic" - } - ] - }, - "comments": { - "input": { - }, - "output": { - } - }, - "description": "This example describes the notification configurations for the specified Auto Scaling group.", - "id": "autoscaling-describe-notification-configurations-1", - "title": "To describe Auto Scaling notification configurations" - } - ], - "DescribePolicies": [ - { - "input": { - "AutoScalingGroupName": "my-auto-scaling-group" - }, - "output": { - "ScalingPolicies": [ - { - "AdjustmentType": "ChangeInCapacity", - "Alarms": [ - - ], - "AutoScalingGroupName": "my-auto-scaling-group", - "PolicyARN": "arn:aws:autoscaling:us-west-2:123456789012:scalingPolicy:2233f3d7-6290-403b-b632-93c553560106:autoScalingGroupName/my-auto-scaling-group:policyName/ScaleIn", - "PolicyName": "ScaleIn", - "ScalingAdjustment": -1 - }, - { - "AdjustmentType": "PercentChangeInCapacity", - "Alarms": [ - - ], - "AutoScalingGroupName": "my-auto-scaling-group", - "Cooldown": 60, - "MinAdjustmentStep": 2, - "PolicyARN": "arn:aws:autoscaling:us-west-2:123456789012:scalingPolicy:2b435159-cf77-4e89-8c0e-d63b497baad7:autoScalingGroupName/my-auto-scaling-group:policyName/ScalePercentChange", - "PolicyName": "ScalePercentChange", - "ScalingAdjustment": 25 - } - ] - }, - "comments": { - "input": { - }, - "output": { - } - }, - "description": "This example describes the policies for the specified Auto Scaling group.", - "id": "autoscaling-describe-policies-1", - "title": "To describe Auto Scaling policies" - } - ], - "DescribeScalingActivities": [ - { - "input": { - "AutoScalingGroupName": "my-auto-scaling-group" - }, - "output": { - "Activities": [ - { - "ActivityId": "f9f2d65b-f1f2-43e7-b46d-d86756459699", - "AutoScalingGroupName": "my-auto-scaling-group", - "Cause": "At 2013-08-19T20:53:25Z a user request created an AutoScalingGroup changing the desired capacity from 0 to 1. At 2013-08-19T20:53:29Z an instance was started in response to a difference between desired and actual capacity, increasing the capacity from 0 to 1.", - "Description": "Launching a new EC2 instance: i-4ba0837f", - "Details": "details", - "EndTime": "2013-08-19T20:54:02Z", - "Progress": 100, - "StartTime": "2013-08-19T20:53:29.930Z", - "StatusCode": "Successful" - } - ] - }, - "comments": { - "input": { - }, - "output": { - } - }, - "description": "This example describes the scaling activities for the specified Auto Scaling group.", - "id": "autoscaling-describe-scaling-activities-1", - "title": "To describe the scaling activities for an Auto Scaling group" - } - ], - "DescribeScalingProcessTypes": [ - { - "output": { - "Processes": [ - { - "ProcessName": "AZRebalance" - }, - { - "ProcessName": "AddToLoadBalancer" - }, - { - "ProcessName": "AlarmNotification" - }, - { - "ProcessName": "HealthCheck" - }, - { - "ProcessName": "Launch" - }, - { - "ProcessName": "ReplaceUnhealthy" - }, - { - "ProcessName": "ScheduledActions" - }, - { - "ProcessName": "Terminate" - } - ] - }, - "comments": { - "input": { - }, - "output": { - } - }, - "description": "This example describes the Auto Scaling process types.", - "id": "autoscaling-describe-scaling-process-types-1", - "title": "To describe the Auto Scaling process types" - } - ], - "DescribeScheduledActions": [ - { - "input": { - "AutoScalingGroupName": "my-auto-scaling-group" - }, - "output": { - "ScheduledUpdateGroupActions": [ - { - "AutoScalingGroupName": "my-auto-scaling-group", - "DesiredCapacity": 4, - "MaxSize": 6, - "MinSize": 2, - "Recurrence": "30 0 1 12 0", - "ScheduledActionARN": "arn:aws:autoscaling:us-west-2:123456789012:scheduledUpdateGroupAction:8e86b655-b2e6-4410-8f29-b4f094d6871c:autoScalingGroupName/my-auto-scaling-group:scheduledActionName/my-scheduled-action", - "ScheduledActionName": "my-scheduled-action", - "StartTime": "2016-12-01T00:30:00Z", - "Time": "2016-12-01T00:30:00Z" - } - ] - }, - "comments": { - "input": { - }, - "output": { - } - }, - "description": "This example describes the scheduled actions for the specified Auto Scaling group.", - "id": "autoscaling-describe-scheduled-actions-1", - "title": "To describe scheduled actions" - } - ], - "DescribeTags": [ - { - "input": { - "Filters": [ - { - "Name": "auto-scaling-group", - "Values": [ - "my-auto-scaling-group" - ] - } - ] - }, - "output": { - "Tags": [ - { - "Key": "Dept", - "PropagateAtLaunch": true, - "ResourceId": "my-auto-scaling-group", - "ResourceType": "auto-scaling-group", - "Value": "Research" - }, - { - "Key": "Role", - "PropagateAtLaunch": true, - "ResourceId": "my-auto-scaling-group", - "ResourceType": "auto-scaling-group", - "Value": "WebServer" - } - ] - }, - "comments": { - "input": { - }, - "output": { - } - }, - "description": "This example describes the tags for the specified Auto Scaling group.", - "id": "autoscaling-describe-tags-1", - "title": "To describe tags" - } - ], - "DescribeTerminationPolicyTypes": [ - { - "output": { - "TerminationPolicyTypes": [ - "ClosestToNextInstanceHour", - "Default", - "NewestInstance", - "OldestInstance", - "OldestLaunchConfiguration" - ] - }, - "comments": { - "input": { - }, - "output": { - } - }, - "description": "This example describes the available termination policy types.", - "id": "autoscaling-describe-termination-policy-types-1", - "title": "To describe termination policy types" - } - ], - "DetachInstances": [ - { - "input": { - "AutoScalingGroupName": "my-auto-scaling-group", - "InstanceIds": [ - "i-93633f9b" - ], - "ShouldDecrementDesiredCapacity": true - }, - "output": { - "Activities": [ - { - "ActivityId": "5091cb52-547a-47ce-a236-c9ccbc2cb2c9", - "AutoScalingGroupName": "my-auto-scaling-group", - "Cause": "At 2015-04-12T15:02:16Z instance i-93633f9b was detached in response to a user request, shrinking the capacity from 2 to 1.", - "Description": "Detaching EC2 instance: i-93633f9b", - "Details": "details", - "Progress": 50, - "StartTime": "2015-04-12T15:02:16.179Z", - "StatusCode": "InProgress" - } - ] - }, - "comments": { - "input": { - }, - "output": { - } - }, - "description": "This example detaches the specified instance from the specified Auto Scaling group.", - "id": "autoscaling-detach-instances-1", - "title": "To detach an instance from an Auto Scaling group" - } - ], - "DetachLoadBalancerTargetGroups": [ - { - "input": { - "AutoScalingGroupName": "my-auto-scaling-group", - "TargetGroupARNs": [ - "arn:aws:elasticloadbalancing:us-west-2:123456789012:targetgroup/my-targets/73e2d6bc24d8a067" - ] - }, - "comments": { - "input": { - }, - "output": { - } - }, - "description": "This example detaches the specified target group from the specified Auto Scaling group", - "id": "autoscaling-detach-load-balancer-target-groups-1", - "title": "To detach a target group from an Auto Scaling group" - } - ], - "DetachLoadBalancers": [ - { - "input": { - "AutoScalingGroupName": "my-auto-scaling-group", - "LoadBalancerNames": [ - "my-load-balancer" - ] - }, - "comments": { - "input": { - }, - "output": { - } - }, - "description": "This example detaches the specified load balancer from the specified Auto Scaling group.", - "id": "autoscaling-detach-load-balancers-1", - "title": "To detach a load balancer from an Auto Scaling group" - } - ], - "DisableMetricsCollection": [ - { - "input": { - "AutoScalingGroupName": "my-auto-scaling-group", - "Metrics": [ - "GroupDesiredCapacity" - ] - }, - "comments": { - "input": { - }, - "output": { - } - }, - "description": "This example disables collecting data for the GroupDesiredCapacity metric for the specified Auto Scaling group.", - "id": "autoscaling-disable-metrics-collection-1", - "title": "To disable metrics collection for an Auto Scaling group" - } - ], - "EnableMetricsCollection": [ - { - "input": { - "AutoScalingGroupName": "my-auto-scaling-group", - "Granularity": "1Minute" - }, - "comments": { - "input": { - }, - "output": { - } - }, - "description": "This example enables data collection for the specified Auto Scaling group.", - "id": "autoscaling-enable-metrics-collection-1", - "title": "To enable metrics collection for an Auto Scaling group" - } - ], - "EnterStandby": [ - { - "input": { - "AutoScalingGroupName": "my-auto-scaling-group", - "InstanceIds": [ - "i-93633f9b" - ], - "ShouldDecrementDesiredCapacity": true - }, - "output": { - "Activities": [ - { - "ActivityId": "ffa056b4-6ed3-41ba-ae7c-249dfae6eba1", - "AutoScalingGroupName": "my-auto-scaling-group", - "Cause": "At 2015-04-12T15:10:23Z instance i-93633f9b was moved to standby in response to a user request, shrinking the capacity from 2 to 1.", - "Description": "Moving EC2 instance to Standby: i-93633f9b", - "Details": "details", - "Progress": 50, - "StartTime": "2015-04-12T15:10:23.640Z", - "StatusCode": "InProgress" - } - ] - }, - "comments": { - "input": { - }, - "output": { - } - }, - "description": "This example puts the specified instance into standby mode.", - "id": "autoscaling-enter-standby-1", - "title": "To move instances into standby mode" - } - ], - "ExecutePolicy": [ - { - "input": { - "AutoScalingGroupName": "my-auto-scaling-group", - "HonorCooldown": true, - "PolicyName": "ScaleIn" - }, - "comments": { - "input": { - }, - "output": { - } - }, - "description": "This example executes the specified Auto Scaling policy for the specified Auto Scaling group.", - "id": "autoscaling-execute-policy-1", - "title": "To execute an Auto Scaling policy" - } - ], - "ExitStandby": [ - { - "input": { - "AutoScalingGroupName": "my-auto-scaling-group", - "InstanceIds": [ - "i-93633f9b" - ] - }, - "output": { - "Activities": [ - { - "ActivityId": "142928e1-a2dc-453a-9b24-b85ad6735928", - "AutoScalingGroupName": "my-auto-scaling-group", - "Cause": "At 2015-04-12T15:14:29Z instance i-93633f9b was moved out of standby in response to a user request, increasing the capacity from 1 to 2.", - "Description": "Moving EC2 instance out of Standby: i-93633f9b", - "Details": "details", - "Progress": 30, - "StartTime": "2015-04-12T15:14:29.886Z", - "StatusCode": "PreInService" - } - ] - }, - "comments": { - "input": { - }, - "output": { - } - }, - "description": "This example moves the specified instance out of standby mode.", - "id": "autoscaling-exit-standby-1", - "title": "To move instances out of standby mode" - } - ], - "PutLifecycleHook": [ - { - "input": { - "AutoScalingGroupName": "my-auto-scaling-group", - "LifecycleHookName": "my-lifecycle-hook", - "LifecycleTransition": "autoscaling:EC2_INSTANCE_LAUNCHING", - "NotificationTargetARN": "arn:aws:sns:us-west-2:123456789012:my-sns-topic --role-arn", - "RoleARN": "arn:aws:iam::123456789012:role/my-auto-scaling-role" - }, - "comments": { - "input": { - }, - "output": { - } - }, - "description": "This example creates a lifecycle hook.", - "id": "autoscaling-put-lifecycle-hook-1", - "title": "To create a lifecycle hook" - } - ], - "PutNotificationConfiguration": [ - { - "input": { - "AutoScalingGroupName": "my-auto-scaling-group", - "NotificationTypes": [ - "autoscaling:TEST_NOTIFICATION" - ], - "TopicARN": "arn:aws:sns:us-west-2:123456789012:my-sns-topic" - }, - "comments": { - "input": { - }, - "output": { - } - }, - "description": "This example adds the specified notification to the specified Auto Scaling group.", - "id": "autoscaling-put-notification-configuration-1", - "title": "To add an Auto Scaling notification" - } - ], - "PutScalingPolicy": [ - { - "input": { - "AdjustmentType": "ChangeInCapacity", - "AutoScalingGroupName": "my-auto-scaling-group", - "PolicyName": "ScaleIn", - "ScalingAdjustment": -1 - }, - "output": { - "PolicyARN": "arn:aws:autoscaling:us-west-2:123456789012:scalingPolicy:2233f3d7-6290-403b-b632-93c553560106:autoScalingGroupName/my-auto-scaling-group:policyName/ScaleIn" - }, - "comments": { - "input": { - }, - "output": { - } - }, - "description": "This example adds the specified policy to the specified Auto Scaling group.", - "id": "autoscaling-put-scaling-policy-1", - "title": "To add a scaling policy to an Auto Scaling group" - } - ], - "PutScheduledUpdateGroupAction": [ - { - "input": { - "AutoScalingGroupName": "my-auto-scaling-group", - "DesiredCapacity": 4, - "EndTime": "2014-05-12T08:00:00Z", - "MaxSize": 6, - "MinSize": 2, - "ScheduledActionName": "my-scheduled-action", - "StartTime": "2014-05-12T08:00:00Z" - }, - "comments": { - "input": { - }, - "output": { - } - }, - "description": "This example adds the specified scheduled action to the specified Auto Scaling group.", - "id": "autoscaling-put-scheduled-update-group-action-1", - "title": "To add a scheduled action to an Auto Scaling group" - } - ], - "RecordLifecycleActionHeartbeat": [ - { - "input": { - "AutoScalingGroupName": "my-auto-scaling-group", - "LifecycleActionToken": "bcd2f1b8-9a78-44d3-8a7a-4dd07d7cf635", - "LifecycleHookName": "my-lifecycle-hook" - }, - "comments": { - "input": { - }, - "output": { - } - }, - "description": "This example records a lifecycle action heartbeat to keep the instance in a pending state.", - "id": "autoscaling-record-lifecycle-action-heartbeat-1", - "title": "To record a lifecycle action heartbeat" - } - ], - "ResumeProcesses": [ - { - "input": { - "AutoScalingGroupName": "my-auto-scaling-group", - "ScalingProcesses": [ - "AlarmNotification" - ] - }, - "comments": { - "input": { - }, - "output": { - } - }, - "description": "This example resumes the specified suspended scaling process for the specified Auto Scaling group.", - "id": "autoscaling-resume-processes-1", - "title": "To resume Auto Scaling processes" - } - ], - "SetDesiredCapacity": [ - { - "input": { - "AutoScalingGroupName": "my-auto-scaling-group", - "DesiredCapacity": 2, - "HonorCooldown": true - }, - "comments": { - "input": { - }, - "output": { - } - }, - "description": "This example sets the desired capacity for the specified Auto Scaling group.", - "id": "autoscaling-set-desired-capacity-1", - "title": "To set the desired capacity for an Auto Scaling group" - } - ], - "SetInstanceHealth": [ - { - "input": { - "HealthStatus": "Unhealthy", - "InstanceId": "i-93633f9b" - }, - "comments": { - "input": { - }, - "output": { - } - }, - "description": "This example sets the health status of the specified instance to Unhealthy.", - "id": "autoscaling-set-instance-health-1", - "title": "To set the health status of an instance" - } - ], - "SetInstanceProtection": [ - { - "input": { - "AutoScalingGroupName": "my-auto-scaling-group", - "InstanceIds": [ - "i-93633f9b" - ], - "ProtectedFromScaleIn": true - }, - "comments": { - "input": { - }, - "output": { - } - }, - "description": "This example enables instance protection for the specified instance.", - "id": "autoscaling-set-instance-protection-1", - "title": "To enable instance protection for an instance" - }, - { - "input": { - "AutoScalingGroupName": "my-auto-scaling-group", - "InstanceIds": [ - "i-93633f9b" - ], - "ProtectedFromScaleIn": false - }, - "comments": { - "input": { - }, - "output": { - } - }, - "description": "This example disables instance protection for the specified instance.", - "id": "autoscaling-set-instance-protection-2", - "title": "To disable instance protection for an instance" - } - ], - "SuspendProcesses": [ - { - "input": { - "AutoScalingGroupName": "my-auto-scaling-group", - "ScalingProcesses": [ - "AlarmNotification" - ] - }, - "comments": { - "input": { - }, - "output": { - } - }, - "description": "This example suspends the specified scaling process for the specified Auto Scaling group.", - "id": "autoscaling-suspend-processes-1", - "title": "To suspend Auto Scaling processes" - } - ], - "TerminateInstanceInAutoScalingGroup": [ - { - "input": { - "InstanceId": "i-93633f9b", - "ShouldDecrementDesiredCapacity": false - }, - "comments": { - "input": { - }, - "output": { - } - }, - "description": "This example terminates the specified instance from the specified Auto Scaling group without updating the size of the group. Auto Scaling launches a replacement instance after the specified instance terminates.", - "id": "autoscaling-terminate-instance-in-auto-scaling-group-1", - "title": "To terminate an instance in an Auto Scaling group" - } - ], - "UpdateAutoScalingGroup": [ - { - "input": { - "AutoScalingGroupName": "my-auto-scaling-group", - "LaunchConfigurationName": "new-launch-config" - }, - "comments": { - "input": { - }, - "output": { - } - }, - "description": "This example updates the launch configuration of the specified Auto Scaling group.", - "id": "autoscaling-update-auto-scaling-group-1", - "title": "To update the launch configuration" - }, - { - "input": { - "AutoScalingGroupName": "my-auto-scaling-group", - "MaxSize": 3, - "MinSize": 1 - }, - "comments": { - "input": { - }, - "output": { - } - }, - "description": "This example updates the minimum size and maximum size of the specified Auto Scaling group.", - "id": "autoscaling-update-auto-scaling-group-2", - "title": "To update the minimum and maximum size" - }, - { - "input": { - "AutoScalingGroupName": "my-auto-scaling-group", - "NewInstancesProtectedFromScaleIn": true - }, - "comments": { - "input": { - }, - "output": { - } - }, - "description": "This example enables instance protection for the specified Auto Scaling group.", - "id": "autoscaling-update-auto-scaling-group-3", - "title": "To enable instance protection" - } - ] - } -} diff --git a/workshops/monte-carlo-on-ec2-spot-fleet/src/web/node_modules/aws-sdk/apis/autoscaling-2011-01-01.min.json b/workshops/monte-carlo-on-ec2-spot-fleet/src/web/node_modules/aws-sdk/apis/autoscaling-2011-01-01.min.json deleted file mode 100644 index ff414b8a..00000000 --- a/workshops/monte-carlo-on-ec2-spot-fleet/src/web/node_modules/aws-sdk/apis/autoscaling-2011-01-01.min.json +++ /dev/null @@ -1,1692 +0,0 @@ -{ - "version": "2.0", - "metadata": { - "apiVersion": "2011-01-01", - "endpointPrefix": "autoscaling", - "protocol": "query", - "serviceFullName": "Auto Scaling", - "signatureVersion": "v4", - "uid": "autoscaling-2011-01-01", - "xmlNamespace": "http://autoscaling.amazonaws.com/doc/2011-01-01/" - }, - "operations": { - "AttachInstances": { - "input": { - "type": "structure", - "required": [ - "AutoScalingGroupName" - ], - "members": { - "InstanceIds": { - "shape": "S2" - }, - "AutoScalingGroupName": {} - } - } - }, - "AttachLoadBalancerTargetGroups": { - "input": { - "type": "structure", - "required": [ - "AutoScalingGroupName", - "TargetGroupARNs" - ], - "members": { - "AutoScalingGroupName": {}, - "TargetGroupARNs": { - "shape": "S6" - } - } - }, - "output": { - "resultWrapper": "AttachLoadBalancerTargetGroupsResult", - "type": "structure", - "members": {} - } - }, - "AttachLoadBalancers": { - "input": { - "type": "structure", - "required": [ - "AutoScalingGroupName", - "LoadBalancerNames" - ], - "members": { - "AutoScalingGroupName": {}, - "LoadBalancerNames": { - "shape": "Sa" - } - } - }, - "output": { - "resultWrapper": "AttachLoadBalancersResult", - "type": "structure", - "members": {} - } - }, - "CompleteLifecycleAction": { - "input": { - "type": "structure", - "required": [ - "LifecycleHookName", - "AutoScalingGroupName", - "LifecycleActionResult" - ], - "members": { - "LifecycleHookName": {}, - "AutoScalingGroupName": {}, - "LifecycleActionToken": {}, - "LifecycleActionResult": {}, - "InstanceId": {} - } - }, - "output": { - "resultWrapper": "CompleteLifecycleActionResult", - "type": "structure", - "members": {} - } - }, - "CreateAutoScalingGroup": { - "input": { - "type": "structure", - "required": [ - "AutoScalingGroupName", - "MinSize", - "MaxSize" - ], - "members": { - "AutoScalingGroupName": {}, - "LaunchConfigurationName": {}, - "InstanceId": {}, - "MinSize": { - "type": "integer" - }, - "MaxSize": { - "type": "integer" - }, - "DesiredCapacity": { - "type": "integer" - }, - "DefaultCooldown": { - "type": "integer" - }, - "AvailabilityZones": { - "shape": "Sn" - }, - "LoadBalancerNames": { - "shape": "Sa" - }, - "TargetGroupARNs": { - "shape": "S6" - }, - "HealthCheckType": {}, - "HealthCheckGracePeriod": { - "type": "integer" - }, - "PlacementGroup": {}, - "VPCZoneIdentifier": {}, - "TerminationPolicies": { - "shape": "Sr" - }, - "NewInstancesProtectedFromScaleIn": { - "type": "boolean" - }, - "LifecycleHookSpecificationList": { - "type": "list", - "member": { - "type": "structure", - "required": [ - "LifecycleHookName" - ], - "members": { - "LifecycleHookName": {}, - "LifecycleTransition": {}, - "NotificationMetadata": {}, - "HeartbeatTimeout": { - "type": "integer" - }, - "DefaultResult": {}, - "NotificationTargetARN": {}, - "RoleARN": {} - } - } - }, - "Tags": { - "shape": "S10" - } - } - } - }, - "CreateLaunchConfiguration": { - "input": { - "type": "structure", - "required": [ - "LaunchConfigurationName" - ], - "members": { - "LaunchConfigurationName": {}, - "ImageId": {}, - "KeyName": {}, - "SecurityGroups": { - "shape": "S17" - }, - "ClassicLinkVPCId": {}, - "ClassicLinkVPCSecurityGroups": { - "shape": "S18" - }, - "UserData": {}, - "InstanceId": {}, - "InstanceType": {}, - "KernelId": {}, - "RamdiskId": {}, - "BlockDeviceMappings": { - "shape": "S1a" - }, - "InstanceMonitoring": { - "shape": "S1j" - }, - "SpotPrice": {}, - "IamInstanceProfile": {}, - "EbsOptimized": { - "type": "boolean" - }, - "AssociatePublicIpAddress": { - "type": "boolean" - }, - "PlacementTenancy": {} - } - } - }, - "CreateOrUpdateTags": { - "input": { - "type": "structure", - "required": [ - "Tags" - ], - "members": { - "Tags": { - "shape": "S10" - } - } - } - }, - "DeleteAutoScalingGroup": { - "input": { - "type": "structure", - "required": [ - "AutoScalingGroupName" - ], - "members": { - "AutoScalingGroupName": {}, - "ForceDelete": { - "type": "boolean" - } - } - } - }, - "DeleteLaunchConfiguration": { - "input": { - "type": "structure", - "required": [ - "LaunchConfigurationName" - ], - "members": { - "LaunchConfigurationName": {} - } - } - }, - "DeleteLifecycleHook": { - "input": { - "type": "structure", - "required": [ - "LifecycleHookName", - "AutoScalingGroupName" - ], - "members": { - "LifecycleHookName": {}, - "AutoScalingGroupName": {} - } - }, - "output": { - "resultWrapper": "DeleteLifecycleHookResult", - "type": "structure", - "members": {} - } - }, - "DeleteNotificationConfiguration": { - "input": { - "type": "structure", - "required": [ - "AutoScalingGroupName", - "TopicARN" - ], - "members": { - "AutoScalingGroupName": {}, - "TopicARN": {} - } - } - }, - "DeletePolicy": { - "input": { - "type": "structure", - "required": [ - "PolicyName" - ], - "members": { - "AutoScalingGroupName": {}, - "PolicyName": {} - } - } - }, - "DeleteScheduledAction": { - "input": { - "type": "structure", - "required": [ - "AutoScalingGroupName", - "ScheduledActionName" - ], - "members": { - "AutoScalingGroupName": {}, - "ScheduledActionName": {} - } - } - }, - "DeleteTags": { - "input": { - "type": "structure", - "required": [ - "Tags" - ], - "members": { - "Tags": { - "shape": "S10" - } - } - } - }, - "DescribeAccountLimits": { - "output": { - "resultWrapper": "DescribeAccountLimitsResult", - "type": "structure", - "members": { - "MaxNumberOfAutoScalingGroups": { - "type": "integer" - }, - "MaxNumberOfLaunchConfigurations": { - "type": "integer" - }, - "NumberOfAutoScalingGroups": { - "type": "integer" - }, - "NumberOfLaunchConfigurations": { - "type": "integer" - } - } - } - }, - "DescribeAdjustmentTypes": { - "output": { - "resultWrapper": "DescribeAdjustmentTypesResult", - "type": "structure", - "members": { - "AdjustmentTypes": { - "type": "list", - "member": { - "type": "structure", - "members": { - "AdjustmentType": {} - } - } - } - } - } - }, - "DescribeAutoScalingGroups": { - "input": { - "type": "structure", - "members": { - "AutoScalingGroupNames": { - "shape": "S28" - }, - "NextToken": {}, - "MaxRecords": { - "type": "integer" - } - } - }, - "output": { - "resultWrapper": "DescribeAutoScalingGroupsResult", - "type": "structure", - "required": [ - "AutoScalingGroups" - ], - "members": { - "AutoScalingGroups": { - "type": "list", - "member": { - "type": "structure", - "required": [ - "AutoScalingGroupName", - "MinSize", - "MaxSize", - "DesiredCapacity", - "DefaultCooldown", - "AvailabilityZones", - "HealthCheckType", - "CreatedTime" - ], - "members": { - "AutoScalingGroupName": {}, - "AutoScalingGroupARN": {}, - "LaunchConfigurationName": {}, - "MinSize": { - "type": "integer" - }, - "MaxSize": { - "type": "integer" - }, - "DesiredCapacity": { - "type": "integer" - }, - "DefaultCooldown": { - "type": "integer" - }, - "AvailabilityZones": { - "shape": "Sn" - }, - "LoadBalancerNames": { - "shape": "Sa" - }, - "TargetGroupARNs": { - "shape": "S6" - }, - "HealthCheckType": {}, - "HealthCheckGracePeriod": { - "type": "integer" - }, - "Instances": { - "type": "list", - "member": { - "type": "structure", - "required": [ - "InstanceId", - "AvailabilityZone", - "LifecycleState", - "HealthStatus", - "LaunchConfigurationName", - "ProtectedFromScaleIn" - ], - "members": { - "InstanceId": {}, - "AvailabilityZone": {}, - "LifecycleState": {}, - "HealthStatus": {}, - "LaunchConfigurationName": {}, - "ProtectedFromScaleIn": { - "type": "boolean" - } - } - } - }, - "CreatedTime": { - "type": "timestamp" - }, - "SuspendedProcesses": { - "type": "list", - "member": { - "type": "structure", - "members": { - "ProcessName": {}, - "SuspensionReason": {} - } - } - }, - "PlacementGroup": {}, - "VPCZoneIdentifier": {}, - "EnabledMetrics": { - "type": "list", - "member": { - "type": "structure", - "members": { - "Metric": {}, - "Granularity": {} - } - } - }, - "Status": {}, - "Tags": { - "shape": "S2l" - }, - "TerminationPolicies": { - "shape": "Sr" - }, - "NewInstancesProtectedFromScaleIn": { - "type": "boolean" - } - } - } - }, - "NextToken": {} - } - } - }, - "DescribeAutoScalingInstances": { - "input": { - "type": "structure", - "members": { - "InstanceIds": { - "shape": "S2" - }, - "MaxRecords": { - "type": "integer" - }, - "NextToken": {} - } - }, - "output": { - "resultWrapper": "DescribeAutoScalingInstancesResult", - "type": "structure", - "members": { - "AutoScalingInstances": { - "type": "list", - "member": { - "type": "structure", - "required": [ - "InstanceId", - "AutoScalingGroupName", - "AvailabilityZone", - "LifecycleState", - "HealthStatus", - "LaunchConfigurationName", - "ProtectedFromScaleIn" - ], - "members": { - "InstanceId": {}, - "AutoScalingGroupName": {}, - "AvailabilityZone": {}, - "LifecycleState": {}, - "HealthStatus": {}, - "LaunchConfigurationName": {}, - "ProtectedFromScaleIn": { - "type": "boolean" - } - } - } - }, - "NextToken": {} - } - } - }, - "DescribeAutoScalingNotificationTypes": { - "output": { - "resultWrapper": "DescribeAutoScalingNotificationTypesResult", - "type": "structure", - "members": { - "AutoScalingNotificationTypes": { - "shape": "S2s" - } - } - } - }, - "DescribeLaunchConfigurations": { - "input": { - "type": "structure", - "members": { - "LaunchConfigurationNames": { - "type": "list", - "member": {} - }, - "NextToken": {}, - "MaxRecords": { - "type": "integer" - } - } - }, - "output": { - "resultWrapper": "DescribeLaunchConfigurationsResult", - "type": "structure", - "required": [ - "LaunchConfigurations" - ], - "members": { - "LaunchConfigurations": { - "type": "list", - "member": { - "type": "structure", - "required": [ - "LaunchConfigurationName", - "ImageId", - "InstanceType", - "CreatedTime" - ], - "members": { - "LaunchConfigurationName": {}, - "LaunchConfigurationARN": {}, - "ImageId": {}, - "KeyName": {}, - "SecurityGroups": { - "shape": "S17" - }, - "ClassicLinkVPCId": {}, - "ClassicLinkVPCSecurityGroups": { - "shape": "S18" - }, - "UserData": {}, - "InstanceType": {}, - "KernelId": {}, - "RamdiskId": {}, - "BlockDeviceMappings": { - "shape": "S1a" - }, - "InstanceMonitoring": { - "shape": "S1j" - }, - "SpotPrice": {}, - "IamInstanceProfile": {}, - "CreatedTime": { - "type": "timestamp" - }, - "EbsOptimized": { - "type": "boolean" - }, - "AssociatePublicIpAddress": { - "type": "boolean" - }, - "PlacementTenancy": {} - } - } - }, - "NextToken": {} - } - } - }, - "DescribeLifecycleHookTypes": { - "output": { - "resultWrapper": "DescribeLifecycleHookTypesResult", - "type": "structure", - "members": { - "LifecycleHookTypes": { - "shape": "S2s" - } - } - } - }, - "DescribeLifecycleHooks": { - "input": { - "type": "structure", - "required": [ - "AutoScalingGroupName" - ], - "members": { - "AutoScalingGroupName": {}, - "LifecycleHookNames": { - "type": "list", - "member": {} - } - } - }, - "output": { - "resultWrapper": "DescribeLifecycleHooksResult", - "type": "structure", - "members": { - "LifecycleHooks": { - "type": "list", - "member": { - "type": "structure", - "members": { - "LifecycleHookName": {}, - "AutoScalingGroupName": {}, - "LifecycleTransition": {}, - "NotificationTargetARN": {}, - "RoleARN": {}, - "NotificationMetadata": {}, - "HeartbeatTimeout": { - "type": "integer" - }, - "GlobalTimeout": { - "type": "integer" - }, - "DefaultResult": {} - } - } - } - } - } - }, - "DescribeLoadBalancerTargetGroups": { - "input": { - "type": "structure", - "required": [ - "AutoScalingGroupName" - ], - "members": { - "AutoScalingGroupName": {}, - "NextToken": {}, - "MaxRecords": { - "type": "integer" - } - } - }, - "output": { - "resultWrapper": "DescribeLoadBalancerTargetGroupsResult", - "type": "structure", - "members": { - "LoadBalancerTargetGroups": { - "type": "list", - "member": { - "type": "structure", - "members": { - "LoadBalancerTargetGroupARN": {}, - "State": {} - } - } - }, - "NextToken": {} - } - } - }, - "DescribeLoadBalancers": { - "input": { - "type": "structure", - "required": [ - "AutoScalingGroupName" - ], - "members": { - "AutoScalingGroupName": {}, - "NextToken": {}, - "MaxRecords": { - "type": "integer" - } - } - }, - "output": { - "resultWrapper": "DescribeLoadBalancersResult", - "type": "structure", - "members": { - "LoadBalancers": { - "type": "list", - "member": { - "type": "structure", - "members": { - "LoadBalancerName": {}, - "State": {} - } - } - }, - "NextToken": {} - } - } - }, - "DescribeMetricCollectionTypes": { - "output": { - "resultWrapper": "DescribeMetricCollectionTypesResult", - "type": "structure", - "members": { - "Metrics": { - "type": "list", - "member": { - "type": "structure", - "members": { - "Metric": {} - } - } - }, - "Granularities": { - "type": "list", - "member": { - "type": "structure", - "members": { - "Granularity": {} - } - } - } - } - } - }, - "DescribeNotificationConfigurations": { - "input": { - "type": "structure", - "members": { - "AutoScalingGroupNames": { - "shape": "S28" - }, - "NextToken": {}, - "MaxRecords": { - "type": "integer" - } - } - }, - "output": { - "resultWrapper": "DescribeNotificationConfigurationsResult", - "type": "structure", - "required": [ - "NotificationConfigurations" - ], - "members": { - "NotificationConfigurations": { - "type": "list", - "member": { - "type": "structure", - "members": { - "AutoScalingGroupName": {}, - "TopicARN": {}, - "NotificationType": {} - } - } - }, - "NextToken": {} - } - } - }, - "DescribePolicies": { - "input": { - "type": "structure", - "members": { - "AutoScalingGroupName": {}, - "PolicyNames": { - "type": "list", - "member": {} - }, - "PolicyTypes": { - "type": "list", - "member": {} - }, - "NextToken": {}, - "MaxRecords": { - "type": "integer" - } - } - }, - "output": { - "resultWrapper": "DescribePoliciesResult", - "type": "structure", - "members": { - "ScalingPolicies": { - "type": "list", - "member": { - "type": "structure", - "members": { - "AutoScalingGroupName": {}, - "PolicyName": {}, - "PolicyARN": {}, - "PolicyType": {}, - "AdjustmentType": {}, - "MinAdjustmentStep": { - "shape": "S3s" - }, - "MinAdjustmentMagnitude": { - "type": "integer" - }, - "ScalingAdjustment": { - "type": "integer" - }, - "Cooldown": { - "type": "integer" - }, - "StepAdjustments": { - "shape": "S3v" - }, - "MetricAggregationType": {}, - "EstimatedInstanceWarmup": { - "type": "integer" - }, - "Alarms": { - "shape": "S3z" - }, - "TargetTrackingConfiguration": { - "shape": "S41" - } - } - } - }, - "NextToken": {} - } - } - }, - "DescribeScalingActivities": { - "input": { - "type": "structure", - "members": { - "ActivityIds": { - "type": "list", - "member": {} - }, - "AutoScalingGroupName": {}, - "MaxRecords": { - "type": "integer" - }, - "NextToken": {} - } - }, - "output": { - "resultWrapper": "DescribeScalingActivitiesResult", - "type": "structure", - "required": [ - "Activities" - ], - "members": { - "Activities": { - "shape": "S4h" - }, - "NextToken": {} - } - } - }, - "DescribeScalingProcessTypes": { - "output": { - "resultWrapper": "DescribeScalingProcessTypesResult", - "type": "structure", - "members": { - "Processes": { - "type": "list", - "member": { - "type": "structure", - "required": [ - "ProcessName" - ], - "members": { - "ProcessName": {} - } - } - } - } - } - }, - "DescribeScheduledActions": { - "input": { - "type": "structure", - "members": { - "AutoScalingGroupName": {}, - "ScheduledActionNames": { - "type": "list", - "member": {} - }, - "StartTime": { - "type": "timestamp" - }, - "EndTime": { - "type": "timestamp" - }, - "NextToken": {}, - "MaxRecords": { - "type": "integer" - } - } - }, - "output": { - "resultWrapper": "DescribeScheduledActionsResult", - "type": "structure", - "members": { - "ScheduledUpdateGroupActions": { - "type": "list", - "member": { - "type": "structure", - "members": { - "AutoScalingGroupName": {}, - "ScheduledActionName": {}, - "ScheduledActionARN": {}, - "Time": { - "type": "timestamp" - }, - "StartTime": { - "type": "timestamp" - }, - "EndTime": { - "type": "timestamp" - }, - "Recurrence": {}, - "MinSize": { - "type": "integer" - }, - "MaxSize": { - "type": "integer" - }, - "DesiredCapacity": { - "type": "integer" - } - } - } - }, - "NextToken": {} - } - } - }, - "DescribeTags": { - "input": { - "type": "structure", - "members": { - "Filters": { - "type": "list", - "member": { - "type": "structure", - "members": { - "Name": {}, - "Values": { - "type": "list", - "member": {} - } - } - } - }, - "NextToken": {}, - "MaxRecords": { - "type": "integer" - } - } - }, - "output": { - "resultWrapper": "DescribeTagsResult", - "type": "structure", - "members": { - "Tags": { - "shape": "S2l" - }, - "NextToken": {} - } - } - }, - "DescribeTerminationPolicyTypes": { - "output": { - "resultWrapper": "DescribeTerminationPolicyTypesResult", - "type": "structure", - "members": { - "TerminationPolicyTypes": { - "shape": "Sr" - } - } - } - }, - "DetachInstances": { - "input": { - "type": "structure", - "required": [ - "AutoScalingGroupName", - "ShouldDecrementDesiredCapacity" - ], - "members": { - "InstanceIds": { - "shape": "S2" - }, - "AutoScalingGroupName": {}, - "ShouldDecrementDesiredCapacity": { - "type": "boolean" - } - } - }, - "output": { - "resultWrapper": "DetachInstancesResult", - "type": "structure", - "members": { - "Activities": { - "shape": "S4h" - } - } - } - }, - "DetachLoadBalancerTargetGroups": { - "input": { - "type": "structure", - "required": [ - "AutoScalingGroupName", - "TargetGroupARNs" - ], - "members": { - "AutoScalingGroupName": {}, - "TargetGroupARNs": { - "shape": "S6" - } - } - }, - "output": { - "resultWrapper": "DetachLoadBalancerTargetGroupsResult", - "type": "structure", - "members": {} - } - }, - "DetachLoadBalancers": { - "input": { - "type": "structure", - "required": [ - "AutoScalingGroupName", - "LoadBalancerNames" - ], - "members": { - "AutoScalingGroupName": {}, - "LoadBalancerNames": { - "shape": "Sa" - } - } - }, - "output": { - "resultWrapper": "DetachLoadBalancersResult", - "type": "structure", - "members": {} - } - }, - "DisableMetricsCollection": { - "input": { - "type": "structure", - "required": [ - "AutoScalingGroupName" - ], - "members": { - "AutoScalingGroupName": {}, - "Metrics": { - "shape": "S57" - } - } - } - }, - "EnableMetricsCollection": { - "input": { - "type": "structure", - "required": [ - "AutoScalingGroupName", - "Granularity" - ], - "members": { - "AutoScalingGroupName": {}, - "Metrics": { - "shape": "S57" - }, - "Granularity": {} - } - } - }, - "EnterStandby": { - "input": { - "type": "structure", - "required": [ - "AutoScalingGroupName", - "ShouldDecrementDesiredCapacity" - ], - "members": { - "InstanceIds": { - "shape": "S2" - }, - "AutoScalingGroupName": {}, - "ShouldDecrementDesiredCapacity": { - "type": "boolean" - } - } - }, - "output": { - "resultWrapper": "EnterStandbyResult", - "type": "structure", - "members": { - "Activities": { - "shape": "S4h" - } - } - } - }, - "ExecutePolicy": { - "input": { - "type": "structure", - "required": [ - "PolicyName" - ], - "members": { - "AutoScalingGroupName": {}, - "PolicyName": {}, - "HonorCooldown": { - "type": "boolean" - }, - "MetricValue": { - "type": "double" - }, - "BreachThreshold": { - "type": "double" - } - } - } - }, - "ExitStandby": { - "input": { - "type": "structure", - "required": [ - "AutoScalingGroupName" - ], - "members": { - "InstanceIds": { - "shape": "S2" - }, - "AutoScalingGroupName": {} - } - }, - "output": { - "resultWrapper": "ExitStandbyResult", - "type": "structure", - "members": { - "Activities": { - "shape": "S4h" - } - } - } - }, - "PutLifecycleHook": { - "input": { - "type": "structure", - "required": [ - "LifecycleHookName", - "AutoScalingGroupName" - ], - "members": { - "LifecycleHookName": {}, - "AutoScalingGroupName": {}, - "LifecycleTransition": {}, - "RoleARN": {}, - "NotificationTargetARN": {}, - "NotificationMetadata": {}, - "HeartbeatTimeout": { - "type": "integer" - }, - "DefaultResult": {} - } - }, - "output": { - "resultWrapper": "PutLifecycleHookResult", - "type": "structure", - "members": {} - } - }, - "PutNotificationConfiguration": { - "input": { - "type": "structure", - "required": [ - "AutoScalingGroupName", - "TopicARN", - "NotificationTypes" - ], - "members": { - "AutoScalingGroupName": {}, - "TopicARN": {}, - "NotificationTypes": { - "shape": "S2s" - } - } - } - }, - "PutScalingPolicy": { - "input": { - "type": "structure", - "required": [ - "AutoScalingGroupName", - "PolicyName" - ], - "members": { - "AutoScalingGroupName": {}, - "PolicyName": {}, - "PolicyType": {}, - "AdjustmentType": {}, - "MinAdjustmentStep": { - "shape": "S3s" - }, - "MinAdjustmentMagnitude": { - "type": "integer" - }, - "ScalingAdjustment": { - "type": "integer" - }, - "Cooldown": { - "type": "integer" - }, - "MetricAggregationType": {}, - "StepAdjustments": { - "shape": "S3v" - }, - "EstimatedInstanceWarmup": { - "type": "integer" - }, - "TargetTrackingConfiguration": { - "shape": "S41" - } - } - }, - "output": { - "resultWrapper": "PutScalingPolicyResult", - "type": "structure", - "members": { - "PolicyARN": {}, - "Alarms": { - "shape": "S3z" - } - } - } - }, - "PutScheduledUpdateGroupAction": { - "input": { - "type": "structure", - "required": [ - "AutoScalingGroupName", - "ScheduledActionName" - ], - "members": { - "AutoScalingGroupName": {}, - "ScheduledActionName": {}, - "Time": { - "type": "timestamp" - }, - "StartTime": { - "type": "timestamp" - }, - "EndTime": { - "type": "timestamp" - }, - "Recurrence": {}, - "MinSize": { - "type": "integer" - }, - "MaxSize": { - "type": "integer" - }, - "DesiredCapacity": { - "type": "integer" - } - } - } - }, - "RecordLifecycleActionHeartbeat": { - "input": { - "type": "structure", - "required": [ - "LifecycleHookName", - "AutoScalingGroupName" - ], - "members": { - "LifecycleHookName": {}, - "AutoScalingGroupName": {}, - "LifecycleActionToken": {}, - "InstanceId": {} - } - }, - "output": { - "resultWrapper": "RecordLifecycleActionHeartbeatResult", - "type": "structure", - "members": {} - } - }, - "ResumeProcesses": { - "input": { - "shape": "S5n" - } - }, - "SetDesiredCapacity": { - "input": { - "type": "structure", - "required": [ - "AutoScalingGroupName", - "DesiredCapacity" - ], - "members": { - "AutoScalingGroupName": {}, - "DesiredCapacity": { - "type": "integer" - }, - "HonorCooldown": { - "type": "boolean" - } - } - } - }, - "SetInstanceHealth": { - "input": { - "type": "structure", - "required": [ - "InstanceId", - "HealthStatus" - ], - "members": { - "InstanceId": {}, - "HealthStatus": {}, - "ShouldRespectGracePeriod": { - "type": "boolean" - } - } - } - }, - "SetInstanceProtection": { - "input": { - "type": "structure", - "required": [ - "InstanceIds", - "AutoScalingGroupName", - "ProtectedFromScaleIn" - ], - "members": { - "InstanceIds": { - "shape": "S2" - }, - "AutoScalingGroupName": {}, - "ProtectedFromScaleIn": { - "type": "boolean" - } - } - }, - "output": { - "resultWrapper": "SetInstanceProtectionResult", - "type": "structure", - "members": {} - } - }, - "SuspendProcesses": { - "input": { - "shape": "S5n" - } - }, - "TerminateInstanceInAutoScalingGroup": { - "input": { - "type": "structure", - "required": [ - "InstanceId", - "ShouldDecrementDesiredCapacity" - ], - "members": { - "InstanceId": {}, - "ShouldDecrementDesiredCapacity": { - "type": "boolean" - } - } - }, - "output": { - "resultWrapper": "TerminateInstanceInAutoScalingGroupResult", - "type": "structure", - "members": { - "Activity": { - "shape": "S4i" - } - } - } - }, - "UpdateAutoScalingGroup": { - "input": { - "type": "structure", - "required": [ - "AutoScalingGroupName" - ], - "members": { - "AutoScalingGroupName": {}, - "LaunchConfigurationName": {}, - "MinSize": { - "type": "integer" - }, - "MaxSize": { - "type": "integer" - }, - "DesiredCapacity": { - "type": "integer" - }, - "DefaultCooldown": { - "type": "integer" - }, - "AvailabilityZones": { - "shape": "Sn" - }, - "HealthCheckType": {}, - "HealthCheckGracePeriod": { - "type": "integer" - }, - "PlacementGroup": {}, - "VPCZoneIdentifier": {}, - "TerminationPolicies": { - "shape": "Sr" - }, - "NewInstancesProtectedFromScaleIn": { - "type": "boolean" - } - } - } - } - }, - "shapes": { - "S2": { - "type": "list", - "member": {} - }, - "S6": { - "type": "list", - "member": {} - }, - "Sa": { - "type": "list", - "member": {} - }, - "Sn": { - "type": "list", - "member": {} - }, - "Sr": { - "type": "list", - "member": {} - }, - "S10": { - "type": "list", - "member": { - "type": "structure", - "required": [ - "Key" - ], - "members": { - "ResourceId": {}, - "ResourceType": {}, - "Key": {}, - "Value": {}, - "PropagateAtLaunch": { - "type": "boolean" - } - } - } - }, - "S17": { - "type": "list", - "member": {} - }, - "S18": { - "type": "list", - "member": {} - }, - "S1a": { - "type": "list", - "member": { - "type": "structure", - "required": [ - "DeviceName" - ], - "members": { - "VirtualName": {}, - "DeviceName": {}, - "Ebs": { - "type": "structure", - "members": { - "SnapshotId": {}, - "VolumeSize": { - "type": "integer" - }, - "VolumeType": {}, - "DeleteOnTermination": { - "type": "boolean" - }, - "Iops": { - "type": "integer" - }, - "Encrypted": { - "type": "boolean" - } - } - }, - "NoDevice": { - "type": "boolean" - } - } - } - }, - "S1j": { - "type": "structure", - "members": { - "Enabled": { - "type": "boolean" - } - } - }, - "S28": { - "type": "list", - "member": {} - }, - "S2l": { - "type": "list", - "member": { - "type": "structure", - "members": { - "ResourceId": {}, - "ResourceType": {}, - "Key": {}, - "Value": {}, - "PropagateAtLaunch": { - "type": "boolean" - } - } - } - }, - "S2s": { - "type": "list", - "member": {} - }, - "S3s": { - "type": "integer", - "deprecated": true - }, - "S3v": { - "type": "list", - "member": { - "type": "structure", - "required": [ - "ScalingAdjustment" - ], - "members": { - "MetricIntervalLowerBound": { - "type": "double" - }, - "MetricIntervalUpperBound": { - "type": "double" - }, - "ScalingAdjustment": { - "type": "integer" - } - } - } - }, - "S3z": { - "type": "list", - "member": { - "type": "structure", - "members": { - "AlarmName": {}, - "AlarmARN": {} - } - } - }, - "S41": { - "type": "structure", - "required": [ - "TargetValue" - ], - "members": { - "PredefinedMetricSpecification": { - "type": "structure", - "required": [ - "PredefinedMetricType" - ], - "members": { - "PredefinedMetricType": {}, - "ResourceLabel": {} - } - }, - "CustomizedMetricSpecification": { - "type": "structure", - "required": [ - "MetricName", - "Namespace", - "Statistic" - ], - "members": { - "MetricName": {}, - "Namespace": {}, - "Dimensions": { - "type": "list", - "member": { - "type": "structure", - "required": [ - "Name", - "Value" - ], - "members": { - "Name": {}, - "Value": {} - } - } - }, - "Statistic": {}, - "Unit": {} - } - }, - "TargetValue": { - "type": "double" - }, - "DisableScaleIn": { - "type": "boolean" - } - } - }, - "S4h": { - "type": "list", - "member": { - "shape": "S4i" - } - }, - "S4i": { - "type": "structure", - "required": [ - "ActivityId", - "AutoScalingGroupName", - "Cause", - "StartTime", - "StatusCode" - ], - "members": { - "ActivityId": {}, - "AutoScalingGroupName": {}, - "Description": {}, - "Cause": {}, - "StartTime": { - "type": "timestamp" - }, - "EndTime": { - "type": "timestamp" - }, - "StatusCode": {}, - "StatusMessage": {}, - "Progress": { - "type": "integer" - }, - "Details": {} - } - }, - "S57": { - "type": "list", - "member": {} - }, - "S5n": { - "type": "structure", - "required": [ - "AutoScalingGroupName" - ], - "members": { - "AutoScalingGroupName": {}, - "ScalingProcesses": { - "type": "list", - "member": {} - } - } - } - } -} \ No newline at end of file diff --git a/workshops/monte-carlo-on-ec2-spot-fleet/src/web/node_modules/aws-sdk/apis/autoscaling-2011-01-01.paginators.json b/workshops/monte-carlo-on-ec2-spot-fleet/src/web/node_modules/aws-sdk/apis/autoscaling-2011-01-01.paginators.json deleted file mode 100644 index 1b838597..00000000 --- a/workshops/monte-carlo-on-ec2-spot-fleet/src/web/node_modules/aws-sdk/apis/autoscaling-2011-01-01.paginators.json +++ /dev/null @@ -1,52 +0,0 @@ -{ - "pagination": { - "DescribeAutoScalingGroups": { - "input_token": "NextToken", - "limit_key": "MaxRecords", - "output_token": "NextToken", - "result_key": "AutoScalingGroups" - }, - "DescribeAutoScalingInstances": { - "input_token": "NextToken", - "limit_key": "MaxRecords", - "output_token": "NextToken", - "result_key": "AutoScalingInstances" - }, - "DescribeLaunchConfigurations": { - "input_token": "NextToken", - "limit_key": "MaxRecords", - "output_token": "NextToken", - "result_key": "LaunchConfigurations" - }, - "DescribeNotificationConfigurations": { - "input_token": "NextToken", - "limit_key": "MaxRecords", - "output_token": "NextToken", - "result_key": "NotificationConfigurations" - }, - "DescribePolicies": { - "input_token": "NextToken", - "limit_key": "MaxRecords", - "output_token": "NextToken", - "result_key": "ScalingPolicies" - }, - "DescribeScalingActivities": { - "input_token": "NextToken", - "limit_key": "MaxRecords", - "output_token": "NextToken", - "result_key": "Activities" - }, - "DescribeScheduledActions": { - "input_token": "NextToken", - "limit_key": "MaxRecords", - "output_token": "NextToken", - "result_key": "ScheduledUpdateGroupActions" - }, - "DescribeTags": { - "input_token": "NextToken", - "limit_key": "MaxRecords", - "output_token": "NextToken", - "result_key": "Tags" - } - } -} \ No newline at end of file diff --git a/workshops/monte-carlo-on-ec2-spot-fleet/src/web/node_modules/aws-sdk/apis/batch-2016-08-10.examples.json b/workshops/monte-carlo-on-ec2-spot-fleet/src/web/node_modules/aws-sdk/apis/batch-2016-08-10.examples.json deleted file mode 100644 index 68001e3c..00000000 --- a/workshops/monte-carlo-on-ec2-spot-fleet/src/web/node_modules/aws-sdk/apis/batch-2016-08-10.examples.json +++ /dev/null @@ -1,589 +0,0 @@ -{ - "version": "1.0", - "examples": { - "CancelJob": [ - { - "input": { - "jobId": "1d828f65-7a4d-42e8-996d-3b900ed59dc4", - "reason": "Cancelling job." - }, - "output": { - }, - "comments": { - "input": { - }, - "output": { - } - }, - "description": "This example cancels a job with the specified job ID.", - "id": "to-cancel-a-job-1481152314733", - "title": "To cancel a job" - } - ], - "CreateComputeEnvironment": [ - { - "input": { - "type": "MANAGED", - "computeEnvironmentName": "C4OnDemand", - "computeResources": { - "type": "EC2", - "desiredvCpus": 48, - "ec2KeyPair": "id_rsa", - "instanceRole": "ecsInstanceRole", - "instanceTypes": [ - "c4.large", - "c4.xlarge", - "c4.2xlarge", - "c4.4xlarge", - "c4.8xlarge" - ], - "maxvCpus": 128, - "minvCpus": 0, - "securityGroupIds": [ - "sg-cf5093b2" - ], - "subnets": [ - "subnet-220c0e0a", - "subnet-1a95556d", - "subnet-978f6dce" - ], - "tags": { - "Name": "Batch Instance - C4OnDemand" - } - }, - "serviceRole": "arn:aws:iam::012345678910:role/AWSBatchServiceRole", - "state": "ENABLED" - }, - "output": { - "computeEnvironmentArn": "arn:aws:batch:us-east-1:012345678910:compute-environment/C4OnDemand", - "computeEnvironmentName": "C4OnDemand" - }, - "comments": { - "input": { - }, - "output": { - } - }, - "description": "This example creates a managed compute environment with specific C4 instance types that are launched on demand. The compute environment is called C4OnDemand.", - "id": "to-create-a-managed-ec2-compute-environment-1481152600017", - "title": "To create a managed EC2 compute environment" - }, - { - "input": { - "type": "MANAGED", - "computeEnvironmentName": "M4Spot", - "computeResources": { - "type": "SPOT", - "bidPercentage": 20, - "desiredvCpus": 4, - "ec2KeyPair": "id_rsa", - "instanceRole": "ecsInstanceRole", - "instanceTypes": [ - "m4" - ], - "maxvCpus": 128, - "minvCpus": 0, - "securityGroupIds": [ - "sg-cf5093b2" - ], - "spotIamFleetRole": "arn:aws:iam::012345678910:role/aws-ec2-spot-fleet-role", - "subnets": [ - "subnet-220c0e0a", - "subnet-1a95556d", - "subnet-978f6dce" - ], - "tags": { - "Name": "Batch Instance - M4Spot" - } - }, - "serviceRole": "arn:aws:iam::012345678910:role/AWSBatchServiceRole", - "state": "ENABLED" - }, - "output": { - "computeEnvironmentArn": "arn:aws:batch:us-east-1:012345678910:compute-environment/M4Spot", - "computeEnvironmentName": "M4Spot" - }, - "comments": { - "input": { - }, - "output": { - } - }, - "description": "This example creates a managed compute environment with the M4 instance type that is launched when the Spot bid price is at or below 20% of the On-Demand price for the instance type. The compute environment is called M4Spot.", - "id": "to-create-a-managed-ec2-spot-compute-environment-1481152844190", - "title": "To create a managed EC2 Spot compute environment" - } - ], - "CreateJobQueue": [ - { - "input": { - "computeEnvironmentOrder": [ - { - "computeEnvironment": "M4Spot", - "order": 1 - } - ], - "jobQueueName": "LowPriority", - "priority": 1, - "state": "ENABLED" - }, - "output": { - "jobQueueArn": "arn:aws:batch:us-east-1:012345678910:job-queue/LowPriority", - "jobQueueName": "LowPriority" - }, - "comments": { - "input": { - }, - "output": { - } - }, - "description": "This example creates a job queue called LowPriority that uses the M4Spot compute environment.", - "id": "to-create-a-job-queue-with-a-single-compute-environment-1481152967946", - "title": "To create a job queue with a single compute environment" - }, - { - "input": { - "computeEnvironmentOrder": [ - { - "computeEnvironment": "C4OnDemand", - "order": 1 - }, - { - "computeEnvironment": "M4Spot", - "order": 2 - } - ], - "jobQueueName": "HighPriority", - "priority": 10, - "state": "ENABLED" - }, - "output": { - "jobQueueArn": "arn:aws:batch:us-east-1:012345678910:job-queue/HighPriority", - "jobQueueName": "HighPriority" - }, - "comments": { - "input": { - }, - "output": { - } - }, - "description": "This example creates a job queue called HighPriority that uses the C4OnDemand compute environment with an order of 1 and the M4Spot compute environment with an order of 2.", - "id": "to-create-a-job-queue-with-multiple-compute-environments-1481153027051", - "title": "To create a job queue with multiple compute environments" - } - ], - "DeleteComputeEnvironment": [ - { - "input": { - "computeEnvironment": "P2OnDemand" - }, - "output": { - }, - "comments": { - "input": { - }, - "output": { - } - }, - "description": "This example deletes the P2OnDemand compute environment.", - "id": "to-delete-a-compute-environment-1481153105644", - "title": "To delete a compute environment" - } - ], - "DeleteJobQueue": [ - { - "input": { - "jobQueue": "GPGPU" - }, - "output": { - }, - "comments": { - "input": { - }, - "output": { - } - }, - "description": "This example deletes the GPGPU job queue.", - "id": "to-delete-a-job-queue-1481153508134", - "title": "To delete a job queue" - } - ], - "DeregisterJobDefinition": [ - { - "input": { - "jobDefinition": "sleep10" - }, - "output": { - }, - "comments": { - "input": { - }, - "output": { - } - }, - "description": "This example deregisters a job definition called sleep10.", - "id": "to-deregister-a-job-definition-1481153579565", - "title": "To deregister a job definition" - } - ], - "DescribeComputeEnvironments": [ - { - "input": { - "computeEnvironments": [ - "P2OnDemand" - ] - }, - "output": { - "computeEnvironments": [ - { - "type": "MANAGED", - "computeEnvironmentArn": "arn:aws:batch:us-east-1:012345678910:compute-environment/P2OnDemand", - "computeEnvironmentName": "P2OnDemand", - "computeResources": { - "type": "EC2", - "desiredvCpus": 48, - "ec2KeyPair": "id_rsa", - "instanceRole": "ecsInstanceRole", - "instanceTypes": [ - "p2" - ], - "maxvCpus": 128, - "minvCpus": 0, - "securityGroupIds": [ - "sg-cf5093b2" - ], - "subnets": [ - "subnet-220c0e0a", - "subnet-1a95556d", - "subnet-978f6dce" - ], - "tags": { - "Name": "Batch Instance - P2OnDemand" - } - }, - "ecsClusterArn": "arn:aws:ecs:us-east-1:012345678910:cluster/P2OnDemand_Batch_2c06f29d-d1fe-3a49-879d-42394c86effc", - "serviceRole": "arn:aws:iam::012345678910:role/AWSBatchServiceRole", - "state": "ENABLED", - "status": "VALID", - "statusReason": "ComputeEnvironment Healthy" - } - ] - }, - "comments": { - "input": { - }, - "output": { - } - }, - "description": "This example describes the P2OnDemand compute environment.", - "id": "to-describe-a-compute-environment-1481153713334", - "title": "To describe a compute environment" - } - ], - "DescribeJobDefinitions": [ - { - "input": { - "status": "ACTIVE" - }, - "output": { - "jobDefinitions": [ - { - "type": "container", - "containerProperties": { - "command": [ - "sleep", - "60" - ], - "environment": [ - - ], - "image": "busybox", - "memory": 128, - "mountPoints": [ - - ], - "ulimits": [ - - ], - "vcpus": 1, - "volumes": [ - - ] - }, - "jobDefinitionArn": "arn:aws:batch:us-east-1:012345678910:job-definition/sleep60:1", - "jobDefinitionName": "sleep60", - "revision": 1, - "status": "ACTIVE" - } - ] - }, - "comments": { - "input": { - }, - "output": { - } - }, - "description": "This example describes all of your active job definitions.", - "id": "to-describe-active-job-definitions-1481153895831", - "title": "To describe active job definitions" - } - ], - "DescribeJobQueues": [ - { - "input": { - "jobQueues": [ - "HighPriority" - ] - }, - "output": { - "jobQueues": [ - { - "computeEnvironmentOrder": [ - { - "computeEnvironment": "arn:aws:batch:us-east-1:012345678910:compute-environment/C4OnDemand", - "order": 1 - } - ], - "jobQueueArn": "arn:aws:batch:us-east-1:012345678910:job-queue/HighPriority", - "jobQueueName": "HighPriority", - "priority": 1, - "state": "ENABLED", - "status": "VALID", - "statusReason": "JobQueue Healthy" - } - ] - }, - "comments": { - "input": { - }, - "output": { - } - }, - "description": "This example describes the HighPriority job queue.", - "id": "to-describe-a-job-queue-1481153995804", - "title": "To describe a job queue" - } - ], - "DescribeJobs": [ - { - "input": { - "jobs": [ - "24fa2d7a-64c4-49d2-8b47-f8da4fbde8e9" - ] - }, - "output": { - "jobs": [ - { - "container": { - "command": [ - "sleep", - "60" - ], - "containerInstanceArn": "arn:aws:ecs:us-east-1:012345678910:container-instance/5406d7cd-58bd-4b8f-9936-48d7c6b1526c", - "environment": [ - - ], - "exitCode": 0, - "image": "busybox", - "memory": 128, - "mountPoints": [ - - ], - "ulimits": [ - - ], - "vcpus": 1, - "volumes": [ - - ] - }, - "createdAt": 1480460782010, - "dependsOn": [ - - ], - "jobDefinition": "sleep60", - "jobId": "24fa2d7a-64c4-49d2-8b47-f8da4fbde8e9", - "jobName": "example", - "jobQueue": "arn:aws:batch:us-east-1:012345678910:job-queue/HighPriority", - "parameters": { - }, - "startedAt": 1480460816500, - "status": "SUCCEEDED", - "stoppedAt": 1480460880699 - } - ] - }, - "comments": { - "input": { - }, - "output": { - } - }, - "description": "This example describes a job with the specified job ID.", - "id": "to-describe-a-specific-job-1481154090490", - "title": "To describe a specific job" - } - ], - "ListJobs": [ - { - "input": { - "jobQueue": "HighPriority" - }, - "output": { - "jobSummaryList": [ - { - "jobId": "e66ff5fd-a1ff-4640-b1a2-0b0a142f49bb", - "jobName": "example" - } - ] - }, - "comments": { - "input": { - }, - "output": { - } - }, - "description": "This example lists the running jobs in the HighPriority job queue.", - "id": "to-list-running-jobs-1481154202164", - "title": "To list running jobs" - }, - { - "input": { - "jobQueue": "HighPriority", - "jobStatus": "SUBMITTED" - }, - "output": { - "jobSummaryList": [ - { - "jobId": "68f0c163-fbd4-44e6-9fd1-25b14a434786", - "jobName": "example" - } - ] - }, - "comments": { - "input": { - }, - "output": { - } - }, - "description": "This example lists jobs in the HighPriority job queue that are in the SUBMITTED job status.", - "id": "to-list-submitted-jobs-1481154251623", - "title": "To list submitted jobs" - } - ], - "RegisterJobDefinition": [ - { - "input": { - "type": "container", - "containerProperties": { - "command": [ - "sleep", - "10" - ], - "image": "busybox", - "memory": 128, - "vcpus": 1 - }, - "jobDefinitionName": "sleep10" - }, - "output": { - "jobDefinitionArn": "arn:aws:batch:us-east-1:012345678910:job-definition/sleep10:1", - "jobDefinitionName": "sleep10", - "revision": 1 - }, - "comments": { - "input": { - }, - "output": { - } - }, - "description": "This example registers a job definition for a simple container job.", - "id": "to-register-a-job-definition-1481154325325", - "title": "To register a job definition" - } - ], - "SubmitJob": [ - { - "input": { - "jobDefinition": "sleep60", - "jobName": "example", - "jobQueue": "HighPriority" - }, - "output": { - "jobId": "876da822-4198-45f2-a252-6cea32512ea8", - "jobName": "example" - }, - "comments": { - "input": { - }, - "output": { - } - }, - "description": "This example submits a simple container job called example to the HighPriority job queue.", - "id": "to-submit-a-job-to-a-queue-1481154481673", - "title": "To submit a job to a queue" - } - ], - "TerminateJob": [ - { - "input": { - "jobId": "61e743ed-35e4-48da-b2de-5c8333821c84", - "reason": "Terminating job." - }, - "output": { - }, - "comments": { - "input": { - }, - "output": { - } - }, - "description": "This example terminates a job with the specified job ID.", - "id": "to-terminate-a-job-1481154558276", - "title": "To terminate a job" - } - ], - "UpdateComputeEnvironment": [ - { - "input": { - "computeEnvironment": "P2OnDemand", - "state": "DISABLED" - }, - "output": { - "computeEnvironmentArn": "arn:aws:batch:us-east-1:012345678910:compute-environment/P2OnDemand", - "computeEnvironmentName": "P2OnDemand" - }, - "comments": { - "input": { - }, - "output": { - } - }, - "description": "This example disables the P2OnDemand compute environment so it can be deleted.", - "id": "to-update-a-compute-environment-1481154702731", - "title": "To update a compute environment" - } - ], - "UpdateJobQueue": [ - { - "input": { - "jobQueue": "GPGPU", - "state": "DISABLED" - }, - "output": { - "jobQueueArn": "arn:aws:batch:us-east-1:012345678910:job-queue/GPGPU", - "jobQueueName": "GPGPU" - }, - "comments": { - "input": { - }, - "output": { - } - }, - "description": "This example disables a job queue so that it can be deleted.", - "id": "to-update-a-job-queue-1481154806981", - "title": "To update a job queue" - } - ] - } -} diff --git a/workshops/monte-carlo-on-ec2-spot-fleet/src/web/node_modules/aws-sdk/apis/batch-2016-08-10.min.json b/workshops/monte-carlo-on-ec2-spot-fleet/src/web/node_modules/aws-sdk/apis/batch-2016-08-10.min.json deleted file mode 100644 index 8a0fb03a..00000000 --- a/workshops/monte-carlo-on-ec2-spot-fleet/src/web/node_modules/aws-sdk/apis/batch-2016-08-10.min.json +++ /dev/null @@ -1,842 +0,0 @@ -{ - "version": "2.0", - "metadata": { - "apiVersion": "2016-08-10", - "endpointPrefix": "batch", - "jsonVersion": "1.1", - "protocol": "rest-json", - "serviceAbbreviation": "AWS Batch", - "serviceFullName": "AWS Batch", - "signatureVersion": "v4", - "uid": "batch-2016-08-10" - }, - "operations": { - "CancelJob": { - "http": { - "requestUri": "/v1/canceljob" - }, - "input": { - "type": "structure", - "required": [ - "jobId", - "reason" - ], - "members": { - "jobId": {}, - "reason": {} - } - }, - "output": { - "type": "structure", - "members": {} - } - }, - "CreateComputeEnvironment": { - "http": { - "requestUri": "/v1/createcomputeenvironment" - }, - "input": { - "type": "structure", - "required": [ - "computeEnvironmentName", - "type", - "serviceRole" - ], - "members": { - "computeEnvironmentName": {}, - "type": {}, - "state": {}, - "computeResources": { - "shape": "S7" - }, - "serviceRole": {} - } - }, - "output": { - "type": "structure", - "members": { - "computeEnvironmentName": {}, - "computeEnvironmentArn": {} - } - } - }, - "CreateJobQueue": { - "http": { - "requestUri": "/v1/createjobqueue" - }, - "input": { - "type": "structure", - "required": [ - "jobQueueName", - "priority", - "computeEnvironmentOrder" - ], - "members": { - "jobQueueName": {}, - "state": {}, - "priority": { - "type": "integer" - }, - "computeEnvironmentOrder": { - "shape": "Sf" - } - } - }, - "output": { - "type": "structure", - "required": [ - "jobQueueName", - "jobQueueArn" - ], - "members": { - "jobQueueName": {}, - "jobQueueArn": {} - } - } - }, - "DeleteComputeEnvironment": { - "http": { - "requestUri": "/v1/deletecomputeenvironment" - }, - "input": { - "type": "structure", - "required": [ - "computeEnvironment" - ], - "members": { - "computeEnvironment": {} - } - }, - "output": { - "type": "structure", - "members": {} - } - }, - "DeleteJobQueue": { - "http": { - "requestUri": "/v1/deletejobqueue" - }, - "input": { - "type": "structure", - "required": [ - "jobQueue" - ], - "members": { - "jobQueue": {} - } - }, - "output": { - "type": "structure", - "members": {} - } - }, - "DeregisterJobDefinition": { - "http": { - "requestUri": "/v1/deregisterjobdefinition" - }, - "input": { - "type": "structure", - "required": [ - "jobDefinition" - ], - "members": { - "jobDefinition": {} - } - }, - "output": { - "type": "structure", - "members": {} - } - }, - "DescribeComputeEnvironments": { - "http": { - "requestUri": "/v1/describecomputeenvironments" - }, - "input": { - "type": "structure", - "members": { - "computeEnvironments": { - "shape": "Sa" - }, - "maxResults": { - "type": "integer" - }, - "nextToken": {} - } - }, - "output": { - "type": "structure", - "members": { - "computeEnvironments": { - "type": "list", - "member": { - "type": "structure", - "required": [ - "computeEnvironmentName", - "computeEnvironmentArn", - "ecsClusterArn" - ], - "members": { - "computeEnvironmentName": {}, - "computeEnvironmentArn": {}, - "ecsClusterArn": {}, - "type": {}, - "state": {}, - "status": {}, - "statusReason": {}, - "computeResources": { - "shape": "S7" - }, - "serviceRole": {} - } - } - }, - "nextToken": {} - } - } - }, - "DescribeJobDefinitions": { - "http": { - "requestUri": "/v1/describejobdefinitions" - }, - "input": { - "type": "structure", - "members": { - "jobDefinitions": { - "shape": "Sa" - }, - "maxResults": { - "type": "integer" - }, - "jobDefinitionName": {}, - "status": {}, - "nextToken": {} - } - }, - "output": { - "type": "structure", - "members": { - "jobDefinitions": { - "type": "list", - "member": { - "type": "structure", - "required": [ - "jobDefinitionName", - "jobDefinitionArn", - "revision", - "type" - ], - "members": { - "jobDefinitionName": {}, - "jobDefinitionArn": {}, - "revision": { - "type": "integer" - }, - "status": {}, - "type": {}, - "parameters": { - "shape": "Sx" - }, - "retryStrategy": { - "shape": "Sy" - }, - "containerProperties": { - "shape": "Sz" - } - } - } - }, - "nextToken": {} - } - } - }, - "DescribeJobQueues": { - "http": { - "requestUri": "/v1/describejobqueues" - }, - "input": { - "type": "structure", - "members": { - "jobQueues": { - "shape": "Sa" - }, - "maxResults": { - "type": "integer" - }, - "nextToken": {} - } - }, - "output": { - "type": "structure", - "members": { - "jobQueues": { - "type": "list", - "member": { - "type": "structure", - "required": [ - "jobQueueName", - "jobQueueArn", - "state", - "priority", - "computeEnvironmentOrder" - ], - "members": { - "jobQueueName": {}, - "jobQueueArn": {}, - "state": {}, - "status": {}, - "statusReason": {}, - "priority": { - "type": "integer" - }, - "computeEnvironmentOrder": { - "shape": "Sf" - } - } - } - }, - "nextToken": {} - } - } - }, - "DescribeJobs": { - "http": { - "requestUri": "/v1/describejobs" - }, - "input": { - "type": "structure", - "required": [ - "jobs" - ], - "members": { - "jobs": { - "shape": "Sa" - } - } - }, - "output": { - "type": "structure", - "members": { - "jobs": { - "type": "list", - "member": { - "type": "structure", - "required": [ - "jobName", - "jobId", - "jobQueue", - "status", - "startedAt", - "jobDefinition" - ], - "members": { - "jobName": {}, - "jobId": {}, - "jobQueue": {}, - "status": {}, - "attempts": { - "type": "list", - "member": { - "type": "structure", - "members": { - "container": { - "type": "structure", - "members": { - "containerInstanceArn": {}, - "taskArn": {}, - "exitCode": { - "type": "integer" - }, - "reason": {}, - "logStreamName": {} - } - }, - "startedAt": { - "type": "long" - }, - "stoppedAt": { - "type": "long" - }, - "statusReason": {} - } - } - }, - "statusReason": {}, - "createdAt": { - "type": "long" - }, - "retryStrategy": { - "shape": "Sy" - }, - "startedAt": { - "type": "long" - }, - "stoppedAt": { - "type": "long" - }, - "dependsOn": { - "shape": "S1o" - }, - "jobDefinition": {}, - "parameters": { - "shape": "Sx" - }, - "container": { - "type": "structure", - "members": { - "image": {}, - "vcpus": { - "type": "integer" - }, - "memory": { - "type": "integer" - }, - "command": { - "shape": "Sa" - }, - "jobRoleArn": {}, - "volumes": { - "shape": "S10" - }, - "environment": { - "shape": "S13" - }, - "mountPoints": { - "shape": "S15" - }, - "readonlyRootFilesystem": { - "type": "boolean" - }, - "ulimits": { - "shape": "S18" - }, - "privileged": { - "type": "boolean" - }, - "user": {}, - "exitCode": { - "type": "integer" - }, - "reason": {}, - "containerInstanceArn": {}, - "taskArn": {}, - "logStreamName": {} - } - } - } - } - } - } - } - }, - "ListJobs": { - "http": { - "requestUri": "/v1/listjobs" - }, - "input": { - "type": "structure", - "required": [ - "jobQueue" - ], - "members": { - "jobQueue": {}, - "jobStatus": {}, - "maxResults": { - "type": "integer" - }, - "nextToken": {} - } - }, - "output": { - "type": "structure", - "required": [ - "jobSummaryList" - ], - "members": { - "jobSummaryList": { - "type": "list", - "member": { - "type": "structure", - "required": [ - "jobId", - "jobName" - ], - "members": { - "jobId": {}, - "jobName": {} - } - } - }, - "nextToken": {} - } - } - }, - "RegisterJobDefinition": { - "http": { - "requestUri": "/v1/registerjobdefinition" - }, - "input": { - "type": "structure", - "required": [ - "jobDefinitionName", - "type" - ], - "members": { - "jobDefinitionName": {}, - "type": {}, - "parameters": { - "shape": "Sx" - }, - "containerProperties": { - "shape": "Sz" - }, - "retryStrategy": { - "shape": "Sy" - } - } - }, - "output": { - "type": "structure", - "required": [ - "jobDefinitionName", - "jobDefinitionArn", - "revision" - ], - "members": { - "jobDefinitionName": {}, - "jobDefinitionArn": {}, - "revision": { - "type": "integer" - } - } - } - }, - "SubmitJob": { - "http": { - "requestUri": "/v1/submitjob" - }, - "input": { - "type": "structure", - "required": [ - "jobName", - "jobQueue", - "jobDefinition" - ], - "members": { - "jobName": {}, - "jobQueue": {}, - "dependsOn": { - "shape": "S1o" - }, - "jobDefinition": {}, - "parameters": { - "shape": "Sx" - }, - "containerOverrides": { - "type": "structure", - "members": { - "vcpus": { - "type": "integer" - }, - "memory": { - "type": "integer" - }, - "command": { - "shape": "Sa" - }, - "environment": { - "shape": "S13" - } - } - }, - "retryStrategy": { - "shape": "Sy" - } - } - }, - "output": { - "type": "structure", - "required": [ - "jobName", - "jobId" - ], - "members": { - "jobName": {}, - "jobId": {} - } - } - }, - "TerminateJob": { - "http": { - "requestUri": "/v1/terminatejob" - }, - "input": { - "type": "structure", - "required": [ - "jobId", - "reason" - ], - "members": { - "jobId": {}, - "reason": {} - } - }, - "output": { - "type": "structure", - "members": {} - } - }, - "UpdateComputeEnvironment": { - "http": { - "requestUri": "/v1/updatecomputeenvironment" - }, - "input": { - "type": "structure", - "required": [ - "computeEnvironment" - ], - "members": { - "computeEnvironment": {}, - "state": {}, - "computeResources": { - "type": "structure", - "members": { - "minvCpus": { - "type": "integer" - }, - "maxvCpus": { - "type": "integer" - }, - "desiredvCpus": { - "type": "integer" - } - } - }, - "serviceRole": {} - } - }, - "output": { - "type": "structure", - "members": { - "computeEnvironmentName": {}, - "computeEnvironmentArn": {} - } - } - }, - "UpdateJobQueue": { - "http": { - "requestUri": "/v1/updatejobqueue" - }, - "input": { - "type": "structure", - "required": [ - "jobQueue" - ], - "members": { - "jobQueue": {}, - "state": {}, - "priority": { - "type": "integer" - }, - "computeEnvironmentOrder": { - "shape": "Sf" - } - } - }, - "output": { - "type": "structure", - "members": { - "jobQueueName": {}, - "jobQueueArn": {} - } - } - } - }, - "shapes": { - "S7": { - "type": "structure", - "required": [ - "type", - "minvCpus", - "maxvCpus", - "instanceTypes", - "subnets", - "securityGroupIds", - "instanceRole" - ], - "members": { - "type": {}, - "minvCpus": { - "type": "integer" - }, - "maxvCpus": { - "type": "integer" - }, - "desiredvCpus": { - "type": "integer" - }, - "instanceTypes": { - "shape": "Sa" - }, - "imageId": {}, - "subnets": { - "shape": "Sa" - }, - "securityGroupIds": { - "shape": "Sa" - }, - "ec2KeyPair": {}, - "instanceRole": {}, - "tags": { - "type": "map", - "key": {}, - "value": {} - }, - "bidPercentage": { - "type": "integer" - }, - "spotIamFleetRole": {} - } - }, - "Sa": { - "type": "list", - "member": {} - }, - "Sf": { - "type": "list", - "member": { - "type": "structure", - "required": [ - "order", - "computeEnvironment" - ], - "members": { - "order": { - "type": "integer" - }, - "computeEnvironment": {} - } - } - }, - "Sx": { - "type": "map", - "key": {}, - "value": {} - }, - "Sy": { - "type": "structure", - "members": { - "attempts": { - "type": "integer" - } - } - }, - "Sz": { - "type": "structure", - "required": [ - "image", - "vcpus", - "memory" - ], - "members": { - "image": {}, - "vcpus": { - "type": "integer" - }, - "memory": { - "type": "integer" - }, - "command": { - "shape": "Sa" - }, - "jobRoleArn": {}, - "volumes": { - "shape": "S10" - }, - "environment": { - "shape": "S13" - }, - "mountPoints": { - "shape": "S15" - }, - "readonlyRootFilesystem": { - "type": "boolean" - }, - "privileged": { - "type": "boolean" - }, - "ulimits": { - "shape": "S18" - }, - "user": {} - } - }, - "S10": { - "type": "list", - "member": { - "type": "structure", - "members": { - "host": { - "type": "structure", - "members": { - "sourcePath": {} - } - }, - "name": {} - } - } - }, - "S13": { - "type": "list", - "member": { - "type": "structure", - "members": { - "name": {}, - "value": {} - } - } - }, - "S15": { - "type": "list", - "member": { - "type": "structure", - "members": { - "containerPath": {}, - "readOnly": { - "type": "boolean" - }, - "sourceVolume": {} - } - } - }, - "S18": { - "type": "list", - "member": { - "type": "structure", - "required": [ - "hardLimit", - "name", - "softLimit" - ], - "members": { - "hardLimit": { - "type": "integer" - }, - "name": {}, - "softLimit": { - "type": "integer" - } - } - } - }, - "S1o": { - "type": "list", - "member": { - "type": "structure", - "members": { - "jobId": {} - } - } - } - } -} \ No newline at end of file diff --git a/workshops/monte-carlo-on-ec2-spot-fleet/src/web/node_modules/aws-sdk/apis/batch-2016-08-10.paginators.json b/workshops/monte-carlo-on-ec2-spot-fleet/src/web/node_modules/aws-sdk/apis/batch-2016-08-10.paginators.json deleted file mode 100644 index 5677bd8e..00000000 --- a/workshops/monte-carlo-on-ec2-spot-fleet/src/web/node_modules/aws-sdk/apis/batch-2016-08-10.paginators.json +++ /dev/null @@ -1,4 +0,0 @@ -{ - "pagination": { - } -} diff --git a/workshops/monte-carlo-on-ec2-spot-fleet/src/web/node_modules/aws-sdk/apis/budgets-2016-10-20.examples.json b/workshops/monte-carlo-on-ec2-spot-fleet/src/web/node_modules/aws-sdk/apis/budgets-2016-10-20.examples.json deleted file mode 100644 index 0ea7e3b0..00000000 --- a/workshops/monte-carlo-on-ec2-spot-fleet/src/web/node_modules/aws-sdk/apis/budgets-2016-10-20.examples.json +++ /dev/null @@ -1,5 +0,0 @@ -{ - "version": "1.0", - "examples": { - } -} diff --git a/workshops/monte-carlo-on-ec2-spot-fleet/src/web/node_modules/aws-sdk/apis/budgets-2016-10-20.min.json b/workshops/monte-carlo-on-ec2-spot-fleet/src/web/node_modules/aws-sdk/apis/budgets-2016-10-20.min.json deleted file mode 100644 index e164c1cb..00000000 --- a/workshops/monte-carlo-on-ec2-spot-fleet/src/web/node_modules/aws-sdk/apis/budgets-2016-10-20.min.json +++ /dev/null @@ -1,467 +0,0 @@ -{ - "version": "2.0", - "metadata": { - "apiVersion": "2016-10-20", - "endpointPrefix": "budgets", - "jsonVersion": "1.1", - "protocol": "json", - "serviceAbbreviation": "AWSBudgets", - "serviceFullName": "AWS Budgets", - "signatureVersion": "v4", - "targetPrefix": "AWSBudgetServiceGateway", - "uid": "budgets-2016-10-20" - }, - "operations": { - "CreateBudget": { - "input": { - "type": "structure", - "required": [ - "AccountId", - "Budget" - ], - "members": { - "AccountId": {}, - "Budget": { - "shape": "S3" - }, - "NotificationsWithSubscribers": { - "type": "list", - "member": { - "type": "structure", - "required": [ - "Notification", - "Subscribers" - ], - "members": { - "Notification": { - "shape": "Sk" - }, - "Subscribers": { - "shape": "Sp" - } - } - } - } - } - }, - "output": { - "type": "structure", - "members": {} - } - }, - "CreateNotification": { - "input": { - "type": "structure", - "required": [ - "AccountId", - "BudgetName", - "Notification", - "Subscribers" - ], - "members": { - "AccountId": {}, - "BudgetName": {}, - "Notification": { - "shape": "Sk" - }, - "Subscribers": { - "shape": "Sp" - } - } - }, - "output": { - "type": "structure", - "members": {} - } - }, - "CreateSubscriber": { - "input": { - "type": "structure", - "required": [ - "AccountId", - "BudgetName", - "Notification", - "Subscriber" - ], - "members": { - "AccountId": {}, - "BudgetName": {}, - "Notification": { - "shape": "Sk" - }, - "Subscriber": { - "shape": "Sq" - } - } - }, - "output": { - "type": "structure", - "members": {} - } - }, - "DeleteBudget": { - "input": { - "type": "structure", - "required": [ - "AccountId", - "BudgetName" - ], - "members": { - "AccountId": {}, - "BudgetName": {} - } - }, - "output": { - "type": "structure", - "members": {} - } - }, - "DeleteNotification": { - "input": { - "type": "structure", - "required": [ - "AccountId", - "BudgetName", - "Notification" - ], - "members": { - "AccountId": {}, - "BudgetName": {}, - "Notification": { - "shape": "Sk" - } - } - }, - "output": { - "type": "structure", - "members": {} - } - }, - "DeleteSubscriber": { - "input": { - "type": "structure", - "required": [ - "AccountId", - "BudgetName", - "Notification", - "Subscriber" - ], - "members": { - "AccountId": {}, - "BudgetName": {}, - "Notification": { - "shape": "Sk" - }, - "Subscriber": { - "shape": "Sq" - } - } - }, - "output": { - "type": "structure", - "members": {} - } - }, - "DescribeBudget": { - "input": { - "type": "structure", - "required": [ - "AccountId", - "BudgetName" - ], - "members": { - "AccountId": {}, - "BudgetName": {} - } - }, - "output": { - "type": "structure", - "members": { - "Budget": { - "shape": "S3" - } - } - } - }, - "DescribeBudgets": { - "input": { - "type": "structure", - "required": [ - "AccountId" - ], - "members": { - "AccountId": {}, - "MaxResults": { - "type": "integer" - }, - "NextToken": {} - } - }, - "output": { - "type": "structure", - "members": { - "Budgets": { - "type": "list", - "member": { - "shape": "S3" - } - }, - "NextToken": {} - } - } - }, - "DescribeNotificationsForBudget": { - "input": { - "type": "structure", - "required": [ - "AccountId", - "BudgetName" - ], - "members": { - "AccountId": {}, - "BudgetName": {}, - "MaxResults": { - "type": "integer" - }, - "NextToken": {} - } - }, - "output": { - "type": "structure", - "members": { - "Notifications": { - "type": "list", - "member": { - "shape": "Sk" - } - }, - "NextToken": {} - } - } - }, - "DescribeSubscribersForNotification": { - "input": { - "type": "structure", - "required": [ - "AccountId", - "BudgetName", - "Notification" - ], - "members": { - "AccountId": {}, - "BudgetName": {}, - "Notification": { - "shape": "Sk" - }, - "MaxResults": { - "type": "integer" - }, - "NextToken": {} - } - }, - "output": { - "type": "structure", - "members": { - "Subscribers": { - "shape": "Sp" - }, - "NextToken": {} - } - } - }, - "UpdateBudget": { - "input": { - "type": "structure", - "required": [ - "AccountId", - "NewBudget" - ], - "members": { - "AccountId": {}, - "NewBudget": { - "shape": "S3" - } - } - }, - "output": { - "type": "structure", - "members": {} - } - }, - "UpdateNotification": { - "input": { - "type": "structure", - "required": [ - "AccountId", - "BudgetName", - "OldNotification", - "NewNotification" - ], - "members": { - "AccountId": {}, - "BudgetName": {}, - "OldNotification": { - "shape": "Sk" - }, - "NewNotification": { - "shape": "Sk" - } - } - }, - "output": { - "type": "structure", - "members": {} - } - }, - "UpdateSubscriber": { - "input": { - "type": "structure", - "required": [ - "AccountId", - "BudgetName", - "Notification", - "OldSubscriber", - "NewSubscriber" - ], - "members": { - "AccountId": {}, - "BudgetName": {}, - "Notification": { - "shape": "Sk" - }, - "OldSubscriber": { - "shape": "Sq" - }, - "NewSubscriber": { - "shape": "Sq" - } - } - }, - "output": { - "type": "structure", - "members": {} - } - } - }, - "shapes": { - "S3": { - "type": "structure", - "required": [ - "BudgetName", - "BudgetLimit", - "CostTypes", - "TimeUnit", - "TimePeriod", - "BudgetType" - ], - "members": { - "BudgetName": {}, - "BudgetLimit": { - "shape": "S5" - }, - "CostFilters": { - "type": "map", - "key": {}, - "value": { - "type": "list", - "member": {} - } - }, - "CostTypes": { - "type": "structure", - "required": [ - "IncludeTax", - "IncludeSubscription", - "UseBlended" - ], - "members": { - "IncludeTax": { - "type": "boolean" - }, - "IncludeSubscription": { - "type": "boolean" - }, - "UseBlended": { - "type": "boolean" - } - } - }, - "TimeUnit": {}, - "TimePeriod": { - "type": "structure", - "required": [ - "Start", - "End" - ], - "members": { - "Start": { - "type": "timestamp" - }, - "End": { - "type": "timestamp" - } - } - }, - "CalculatedSpend": { - "type": "structure", - "required": [ - "ActualSpend" - ], - "members": { - "ActualSpend": { - "shape": "S5" - }, - "ForecastedSpend": { - "shape": "S5" - } - } - }, - "BudgetType": {} - } - }, - "S5": { - "type": "structure", - "required": [ - "Amount", - "Unit" - ], - "members": { - "Amount": {}, - "Unit": {} - } - }, - "Sk": { - "type": "structure", - "required": [ - "NotificationType", - "ComparisonOperator", - "Threshold" - ], - "members": { - "NotificationType": {}, - "ComparisonOperator": {}, - "Threshold": { - "type": "double" - }, - "ThresholdType": {} - } - }, - "Sp": { - "type": "list", - "member": { - "shape": "Sq" - } - }, - "Sq": { - "type": "structure", - "required": [ - "SubscriptionType", - "Address" - ], - "members": { - "SubscriptionType": {}, - "Address": {} - } - } - } -} \ No newline at end of file diff --git a/workshops/monte-carlo-on-ec2-spot-fleet/src/web/node_modules/aws-sdk/apis/budgets-2016-10-20.paginators.json b/workshops/monte-carlo-on-ec2-spot-fleet/src/web/node_modules/aws-sdk/apis/budgets-2016-10-20.paginators.json deleted file mode 100644 index 5677bd8e..00000000 --- a/workshops/monte-carlo-on-ec2-spot-fleet/src/web/node_modules/aws-sdk/apis/budgets-2016-10-20.paginators.json +++ /dev/null @@ -1,4 +0,0 @@ -{ - "pagination": { - } -} diff --git a/workshops/monte-carlo-on-ec2-spot-fleet/src/web/node_modules/aws-sdk/apis/clouddirectory-2016-05-10.examples.json b/workshops/monte-carlo-on-ec2-spot-fleet/src/web/node_modules/aws-sdk/apis/clouddirectory-2016-05-10.examples.json deleted file mode 100644 index 0ea7e3b0..00000000 --- a/workshops/monte-carlo-on-ec2-spot-fleet/src/web/node_modules/aws-sdk/apis/clouddirectory-2016-05-10.examples.json +++ /dev/null @@ -1,5 +0,0 @@ -{ - "version": "1.0", - "examples": { - } -} diff --git a/workshops/monte-carlo-on-ec2-spot-fleet/src/web/node_modules/aws-sdk/apis/clouddirectory-2016-05-10.min.json b/workshops/monte-carlo-on-ec2-spot-fleet/src/web/node_modules/aws-sdk/apis/clouddirectory-2016-05-10.min.json deleted file mode 100644 index 94cac3a4..00000000 --- a/workshops/monte-carlo-on-ec2-spot-fleet/src/web/node_modules/aws-sdk/apis/clouddirectory-2016-05-10.min.json +++ /dev/null @@ -1,2895 +0,0 @@ -{ - "version": "2.0", - "metadata": { - "apiVersion": "2016-05-10", - "endpointPrefix": "clouddirectory", - "protocol": "rest-json", - "serviceFullName": "Amazon CloudDirectory", - "signatureVersion": "v4", - "signingName": "clouddirectory", - "uid": "clouddirectory-2016-05-10" - }, - "operations": { - "AddFacetToObject": { - "http": { - "method": "PUT", - "requestUri": "/amazonclouddirectory/2017-01-11/object/facets", - "responseCode": 200 - }, - "input": { - "type": "structure", - "required": [ - "DirectoryArn", - "SchemaFacet", - "ObjectReference" - ], - "members": { - "DirectoryArn": { - "location": "header", - "locationName": "x-amz-data-partition" - }, - "SchemaFacet": { - "shape": "S3" - }, - "ObjectAttributeList": { - "shape": "S5" - }, - "ObjectReference": { - "shape": "Sf" - } - } - }, - "output": { - "type": "structure", - "members": {} - } - }, - "ApplySchema": { - "http": { - "method": "PUT", - "requestUri": "/amazonclouddirectory/2017-01-11/schema/apply", - "responseCode": 200 - }, - "input": { - "type": "structure", - "required": [ - "PublishedSchemaArn", - "DirectoryArn" - ], - "members": { - "PublishedSchemaArn": {}, - "DirectoryArn": { - "location": "header", - "locationName": "x-amz-data-partition" - } - } - }, - "output": { - "type": "structure", - "members": { - "AppliedSchemaArn": {}, - "DirectoryArn": {} - } - } - }, - "AttachObject": { - "http": { - "method": "PUT", - "requestUri": "/amazonclouddirectory/2017-01-11/object/attach", - "responseCode": 200 - }, - "input": { - "type": "structure", - "required": [ - "DirectoryArn", - "ParentReference", - "ChildReference", - "LinkName" - ], - "members": { - "DirectoryArn": { - "location": "header", - "locationName": "x-amz-data-partition" - }, - "ParentReference": { - "shape": "Sf" - }, - "ChildReference": { - "shape": "Sf" - }, - "LinkName": {} - } - }, - "output": { - "type": "structure", - "members": { - "AttachedObjectIdentifier": {} - } - } - }, - "AttachPolicy": { - "http": { - "method": "PUT", - "requestUri": "/amazonclouddirectory/2017-01-11/policy/attach", - "responseCode": 200 - }, - "input": { - "type": "structure", - "required": [ - "PolicyReference", - "ObjectReference" - ], - "members": { - "DirectoryArn": { - "location": "header", - "locationName": "x-amz-data-partition" - }, - "PolicyReference": { - "shape": "Sf" - }, - "ObjectReference": { - "shape": "Sf" - } - } - }, - "output": { - "type": "structure", - "members": {} - } - }, - "AttachToIndex": { - "http": { - "method": "PUT", - "requestUri": "/amazonclouddirectory/2017-01-11/index/attach", - "responseCode": 200 - }, - "input": { - "type": "structure", - "required": [ - "DirectoryArn", - "IndexReference", - "TargetReference" - ], - "members": { - "DirectoryArn": { - "location": "header", - "locationName": "x-amz-data-partition" - }, - "IndexReference": { - "shape": "Sf" - }, - "TargetReference": { - "shape": "Sf" - } - } - }, - "output": { - "type": "structure", - "members": { - "AttachedObjectIdentifier": {} - } - } - }, - "AttachTypedLink": { - "http": { - "method": "PUT", - "requestUri": "/amazonclouddirectory/2017-01-11/typedlink/attach", - "responseCode": 200 - }, - "input": { - "type": "structure", - "required": [ - "DirectoryArn", - "SourceObjectReference", - "TargetObjectReference", - "TypedLinkFacet", - "Attributes" - ], - "members": { - "DirectoryArn": { - "location": "header", - "locationName": "x-amz-data-partition" - }, - "SourceObjectReference": { - "shape": "Sf" - }, - "TargetObjectReference": { - "shape": "Sf" - }, - "TypedLinkFacet": { - "shape": "St" - }, - "Attributes": { - "shape": "Sv" - } - } - }, - "output": { - "type": "structure", - "members": { - "TypedLinkSpecifier": { - "shape": "Sy" - } - } - } - }, - "BatchRead": { - "http": { - "requestUri": "/amazonclouddirectory/2017-01-11/batchread", - "responseCode": 200 - }, - "input": { - "type": "structure", - "required": [ - "DirectoryArn", - "Operations" - ], - "members": { - "DirectoryArn": { - "location": "header", - "locationName": "x-amz-data-partition" - }, - "Operations": { - "type": "list", - "member": { - "type": "structure", - "members": { - "ListObjectAttributes": { - "type": "structure", - "required": [ - "ObjectReference" - ], - "members": { - "ObjectReference": { - "shape": "Sf" - }, - "NextToken": {}, - "MaxResults": { - "type": "integer" - }, - "FacetFilter": { - "shape": "S3" - } - } - }, - "ListObjectChildren": { - "type": "structure", - "required": [ - "ObjectReference" - ], - "members": { - "ObjectReference": { - "shape": "Sf" - }, - "NextToken": {}, - "MaxResults": { - "type": "integer" - } - } - }, - "ListAttachedIndices": { - "type": "structure", - "required": [ - "TargetReference" - ], - "members": { - "TargetReference": { - "shape": "Sf" - }, - "NextToken": {}, - "MaxResults": { - "type": "integer" - } - } - }, - "ListObjectParentPaths": { - "type": "structure", - "required": [ - "ObjectReference" - ], - "members": { - "ObjectReference": { - "shape": "Sf" - }, - "NextToken": {}, - "MaxResults": { - "type": "integer" - } - } - }, - "GetObjectInformation": { - "type": "structure", - "required": [ - "ObjectReference" - ], - "members": { - "ObjectReference": { - "shape": "Sf" - } - } - }, - "ListObjectPolicies": { - "type": "structure", - "required": [ - "ObjectReference" - ], - "members": { - "ObjectReference": { - "shape": "Sf" - }, - "NextToken": {}, - "MaxResults": { - "type": "integer" - } - } - }, - "ListPolicyAttachments": { - "type": "structure", - "required": [ - "PolicyReference" - ], - "members": { - "PolicyReference": { - "shape": "Sf" - }, - "NextToken": {}, - "MaxResults": { - "type": "integer" - } - } - }, - "LookupPolicy": { - "type": "structure", - "required": [ - "ObjectReference" - ], - "members": { - "ObjectReference": { - "shape": "Sf" - }, - "NextToken": {}, - "MaxResults": { - "type": "integer" - } - } - }, - "ListIndex": { - "type": "structure", - "required": [ - "IndexReference" - ], - "members": { - "RangesOnIndexedValues": { - "shape": "S1d" - }, - "IndexReference": { - "shape": "Sf" - }, - "MaxResults": { - "type": "integer" - }, - "NextToken": {} - } - }, - "ListOutgoingTypedLinks": { - "type": "structure", - "required": [ - "ObjectReference" - ], - "members": { - "ObjectReference": { - "shape": "Sf" - }, - "FilterAttributeRanges": { - "shape": "S1i" - }, - "FilterTypedLink": { - "shape": "St" - }, - "NextToken": {}, - "MaxResults": { - "type": "integer" - } - } - }, - "ListIncomingTypedLinks": { - "type": "structure", - "required": [ - "ObjectReference" - ], - "members": { - "ObjectReference": { - "shape": "Sf" - }, - "FilterAttributeRanges": { - "shape": "S1i" - }, - "FilterTypedLink": { - "shape": "St" - }, - "NextToken": {}, - "MaxResults": { - "type": "integer" - } - } - } - } - } - }, - "ConsistencyLevel": { - "location": "header", - "locationName": "x-amz-consistency-level" - } - } - }, - "output": { - "type": "structure", - "members": { - "Responses": { - "type": "list", - "member": { - "type": "structure", - "members": { - "SuccessfulResponse": { - "type": "structure", - "members": { - "ListObjectAttributes": { - "type": "structure", - "members": { - "Attributes": { - "shape": "S5" - }, - "NextToken": {} - } - }, - "ListObjectChildren": { - "type": "structure", - "members": { - "Children": { - "shape": "S1s" - }, - "NextToken": {} - } - }, - "GetObjectInformation": { - "type": "structure", - "members": { - "SchemaFacets": { - "shape": "S1u" - }, - "ObjectIdentifier": {} - } - }, - "ListAttachedIndices": { - "type": "structure", - "members": { - "IndexAttachments": { - "shape": "S1w" - }, - "NextToken": {} - } - }, - "ListObjectParentPaths": { - "type": "structure", - "members": { - "PathToObjectIdentifiersList": { - "shape": "S1z" - }, - "NextToken": {} - } - }, - "ListObjectPolicies": { - "type": "structure", - "members": { - "AttachedPolicyIds": { - "shape": "S22" - }, - "NextToken": {} - } - }, - "ListPolicyAttachments": { - "type": "structure", - "members": { - "ObjectIdentifiers": { - "shape": "S22" - }, - "NextToken": {} - } - }, - "LookupPolicy": { - "type": "structure", - "members": { - "PolicyToPathList": { - "shape": "S26" - }, - "NextToken": {} - } - }, - "ListIndex": { - "type": "structure", - "members": { - "IndexAttachments": { - "shape": "S1w" - }, - "NextToken": {} - } - }, - "ListOutgoingTypedLinks": { - "type": "structure", - "members": { - "TypedLinkSpecifiers": { - "shape": "S2d" - }, - "NextToken": {} - } - }, - "ListIncomingTypedLinks": { - "type": "structure", - "members": { - "LinkSpecifiers": { - "shape": "S2d" - }, - "NextToken": {} - } - } - } - }, - "ExceptionResponse": { - "type": "structure", - "members": { - "Type": {}, - "Message": {} - } - } - } - } - } - } - } - }, - "BatchWrite": { - "http": { - "method": "PUT", - "requestUri": "/amazonclouddirectory/2017-01-11/batchwrite", - "responseCode": 200 - }, - "input": { - "type": "structure", - "required": [ - "DirectoryArn", - "Operations" - ], - "members": { - "DirectoryArn": { - "location": "header", - "locationName": "x-amz-data-partition" - }, - "Operations": { - "type": "list", - "member": { - "type": "structure", - "members": { - "CreateObject": { - "type": "structure", - "required": [ - "SchemaFacet", - "ObjectAttributeList", - "ParentReference", - "LinkName", - "BatchReferenceName" - ], - "members": { - "SchemaFacet": { - "shape": "S1u" - }, - "ObjectAttributeList": { - "shape": "S5" - }, - "ParentReference": { - "shape": "Sf" - }, - "LinkName": {}, - "BatchReferenceName": {} - } - }, - "AttachObject": { - "type": "structure", - "required": [ - "ParentReference", - "ChildReference", - "LinkName" - ], - "members": { - "ParentReference": { - "shape": "Sf" - }, - "ChildReference": { - "shape": "Sf" - }, - "LinkName": {} - } - }, - "DetachObject": { - "type": "structure", - "required": [ - "ParentReference", - "LinkName", - "BatchReferenceName" - ], - "members": { - "ParentReference": { - "shape": "Sf" - }, - "LinkName": {}, - "BatchReferenceName": {} - } - }, - "UpdateObjectAttributes": { - "type": "structure", - "required": [ - "ObjectReference", - "AttributeUpdates" - ], - "members": { - "ObjectReference": { - "shape": "Sf" - }, - "AttributeUpdates": { - "shape": "S2q" - } - } - }, - "DeleteObject": { - "type": "structure", - "required": [ - "ObjectReference" - ], - "members": { - "ObjectReference": { - "shape": "Sf" - } - } - }, - "AddFacetToObject": { - "type": "structure", - "required": [ - "SchemaFacet", - "ObjectAttributeList", - "ObjectReference" - ], - "members": { - "SchemaFacet": { - "shape": "S3" - }, - "ObjectAttributeList": { - "shape": "S5" - }, - "ObjectReference": { - "shape": "Sf" - } - } - }, - "RemoveFacetFromObject": { - "type": "structure", - "required": [ - "SchemaFacet", - "ObjectReference" - ], - "members": { - "SchemaFacet": { - "shape": "S3" - }, - "ObjectReference": { - "shape": "Sf" - } - } - }, - "AttachPolicy": { - "type": "structure", - "required": [ - "PolicyReference", - "ObjectReference" - ], - "members": { - "PolicyReference": { - "shape": "Sf" - }, - "ObjectReference": { - "shape": "Sf" - } - } - }, - "DetachPolicy": { - "type": "structure", - "required": [ - "PolicyReference", - "ObjectReference" - ], - "members": { - "PolicyReference": { - "shape": "Sf" - }, - "ObjectReference": { - "shape": "Sf" - } - } - }, - "CreateIndex": { - "type": "structure", - "required": [ - "OrderedIndexedAttributeList", - "IsUnique" - ], - "members": { - "OrderedIndexedAttributeList": { - "shape": "S30" - }, - "IsUnique": { - "type": "boolean" - }, - "ParentReference": { - "shape": "Sf" - }, - "LinkName": {}, - "BatchReferenceName": {} - } - }, - "AttachToIndex": { - "type": "structure", - "required": [ - "IndexReference", - "TargetReference" - ], - "members": { - "IndexReference": { - "shape": "Sf" - }, - "TargetReference": { - "shape": "Sf" - } - } - }, - "DetachFromIndex": { - "type": "structure", - "required": [ - "IndexReference", - "TargetReference" - ], - "members": { - "IndexReference": { - "shape": "Sf" - }, - "TargetReference": { - "shape": "Sf" - } - } - }, - "AttachTypedLink": { - "type": "structure", - "required": [ - "SourceObjectReference", - "TargetObjectReference", - "TypedLinkFacet", - "Attributes" - ], - "members": { - "SourceObjectReference": { - "shape": "Sf" - }, - "TargetObjectReference": { - "shape": "Sf" - }, - "TypedLinkFacet": { - "shape": "St" - }, - "Attributes": { - "shape": "Sv" - } - } - }, - "DetachTypedLink": { - "type": "structure", - "required": [ - "TypedLinkSpecifier" - ], - "members": { - "TypedLinkSpecifier": { - "shape": "Sy" - } - } - } - } - } - } - } - }, - "output": { - "type": "structure", - "members": { - "Responses": { - "type": "list", - "member": { - "type": "structure", - "members": { - "CreateObject": { - "type": "structure", - "members": { - "ObjectIdentifier": {} - } - }, - "AttachObject": { - "type": "structure", - "members": { - "attachedObjectIdentifier": {} - } - }, - "DetachObject": { - "type": "structure", - "members": { - "detachedObjectIdentifier": {} - } - }, - "UpdateObjectAttributes": { - "type": "structure", - "members": { - "ObjectIdentifier": {} - } - }, - "DeleteObject": { - "type": "structure", - "members": {} - }, - "AddFacetToObject": { - "type": "structure", - "members": {} - }, - "RemoveFacetFromObject": { - "type": "structure", - "members": {} - }, - "AttachPolicy": { - "type": "structure", - "members": {} - }, - "DetachPolicy": { - "type": "structure", - "members": {} - }, - "CreateIndex": { - "type": "structure", - "members": { - "ObjectIdentifier": {} - } - }, - "AttachToIndex": { - "type": "structure", - "members": { - "AttachedObjectIdentifier": {} - } - }, - "DetachFromIndex": { - "type": "structure", - "members": { - "DetachedObjectIdentifier": {} - } - }, - "AttachTypedLink": { - "type": "structure", - "members": { - "TypedLinkSpecifier": { - "shape": "Sy" - } - } - }, - "DetachTypedLink": { - "type": "structure", - "members": {} - } - } - } - } - } - } - }, - "CreateDirectory": { - "http": { - "method": "PUT", - "requestUri": "/amazonclouddirectory/2017-01-11/directory/create", - "responseCode": 200 - }, - "input": { - "type": "structure", - "required": [ - "Name", - "SchemaArn" - ], - "members": { - "Name": {}, - "SchemaArn": { - "location": "header", - "locationName": "x-amz-data-partition" - } - } - }, - "output": { - "type": "structure", - "required": [ - "DirectoryArn", - "Name", - "ObjectIdentifier", - "AppliedSchemaArn" - ], - "members": { - "DirectoryArn": {}, - "Name": {}, - "ObjectIdentifier": {}, - "AppliedSchemaArn": {} - } - } - }, - "CreateFacet": { - "http": { - "method": "PUT", - "requestUri": "/amazonclouddirectory/2017-01-11/facet/create", - "responseCode": 200 - }, - "input": { - "type": "structure", - "required": [ - "SchemaArn", - "Name", - "ObjectType" - ], - "members": { - "SchemaArn": { - "location": "header", - "locationName": "x-amz-data-partition" - }, - "Name": {}, - "Attributes": { - "shape": "S3s" - }, - "ObjectType": {} - } - }, - "output": { - "type": "structure", - "members": {} - } - }, - "CreateIndex": { - "http": { - "method": "PUT", - "requestUri": "/amazonclouddirectory/2017-01-11/index", - "responseCode": 200 - }, - "input": { - "type": "structure", - "required": [ - "DirectoryArn", - "OrderedIndexedAttributeList", - "IsUnique" - ], - "members": { - "DirectoryArn": { - "location": "header", - "locationName": "x-amz-data-partition" - }, - "OrderedIndexedAttributeList": { - "shape": "S30" - }, - "IsUnique": { - "type": "boolean" - }, - "ParentReference": { - "shape": "Sf" - }, - "LinkName": {} - } - }, - "output": { - "type": "structure", - "members": { - "ObjectIdentifier": {} - } - } - }, - "CreateObject": { - "http": { - "method": "PUT", - "requestUri": "/amazonclouddirectory/2017-01-11/object", - "responseCode": 200 - }, - "input": { - "type": "structure", - "required": [ - "DirectoryArn", - "SchemaFacets" - ], - "members": { - "DirectoryArn": { - "location": "header", - "locationName": "x-amz-data-partition" - }, - "SchemaFacets": { - "shape": "S1u" - }, - "ObjectAttributeList": { - "shape": "S5" - }, - "ParentReference": { - "shape": "Sf" - }, - "LinkName": {} - } - }, - "output": { - "type": "structure", - "members": { - "ObjectIdentifier": {} - } - } - }, - "CreateSchema": { - "http": { - "method": "PUT", - "requestUri": "/amazonclouddirectory/2017-01-11/schema/create", - "responseCode": 200 - }, - "input": { - "type": "structure", - "required": [ - "Name" - ], - "members": { - "Name": {} - } - }, - "output": { - "type": "structure", - "members": { - "SchemaArn": {} - } - } - }, - "CreateTypedLinkFacet": { - "http": { - "method": "PUT", - "requestUri": "/amazonclouddirectory/2017-01-11/typedlink/facet/create", - "responseCode": 200 - }, - "input": { - "type": "structure", - "required": [ - "SchemaArn", - "Facet" - ], - "members": { - "SchemaArn": { - "location": "header", - "locationName": "x-amz-data-partition" - }, - "Facet": { - "type": "structure", - "required": [ - "Name", - "Attributes", - "IdentityAttributeOrder" - ], - "members": { - "Name": {}, - "Attributes": { - "shape": "S4g" - }, - "IdentityAttributeOrder": { - "shape": "S4i" - } - } - } - } - }, - "output": { - "type": "structure", - "members": {} - } - }, - "DeleteDirectory": { - "http": { - "method": "PUT", - "requestUri": "/amazonclouddirectory/2017-01-11/directory", - "responseCode": 200 - }, - "input": { - "type": "structure", - "required": [ - "DirectoryArn" - ], - "members": { - "DirectoryArn": { - "location": "header", - "locationName": "x-amz-data-partition" - } - } - }, - "output": { - "type": "structure", - "required": [ - "DirectoryArn" - ], - "members": { - "DirectoryArn": {} - } - } - }, - "DeleteFacet": { - "http": { - "method": "PUT", - "requestUri": "/amazonclouddirectory/2017-01-11/facet/delete", - "responseCode": 200 - }, - "input": { - "type": "structure", - "required": [ - "SchemaArn", - "Name" - ], - "members": { - "SchemaArn": { - "location": "header", - "locationName": "x-amz-data-partition" - }, - "Name": {} - } - }, - "output": { - "type": "structure", - "members": {} - } - }, - "DeleteObject": { - "http": { - "method": "PUT", - "requestUri": "/amazonclouddirectory/2017-01-11/object/delete", - "responseCode": 200 - }, - "input": { - "type": "structure", - "required": [ - "DirectoryArn", - "ObjectReference" - ], - "members": { - "DirectoryArn": { - "location": "header", - "locationName": "x-amz-data-partition" - }, - "ObjectReference": { - "shape": "Sf" - } - } - }, - "output": { - "type": "structure", - "members": {} - } - }, - "DeleteSchema": { - "http": { - "method": "PUT", - "requestUri": "/amazonclouddirectory/2017-01-11/schema", - "responseCode": 200 - }, - "input": { - "type": "structure", - "required": [ - "SchemaArn" - ], - "members": { - "SchemaArn": { - "location": "header", - "locationName": "x-amz-data-partition" - } - } - }, - "output": { - "type": "structure", - "members": { - "SchemaArn": {} - } - } - }, - "DeleteTypedLinkFacet": { - "http": { - "method": "PUT", - "requestUri": "/amazonclouddirectory/2017-01-11/typedlink/facet/delete", - "responseCode": 200 - }, - "input": { - "type": "structure", - "required": [ - "SchemaArn", - "Name" - ], - "members": { - "SchemaArn": { - "location": "header", - "locationName": "x-amz-data-partition" - }, - "Name": {} - } - }, - "output": { - "type": "structure", - "members": {} - } - }, - "DetachFromIndex": { - "http": { - "method": "PUT", - "requestUri": "/amazonclouddirectory/2017-01-11/index/detach", - "responseCode": 200 - }, - "input": { - "type": "structure", - "required": [ - "DirectoryArn", - "IndexReference", - "TargetReference" - ], - "members": { - "DirectoryArn": { - "location": "header", - "locationName": "x-amz-data-partition" - }, - "IndexReference": { - "shape": "Sf" - }, - "TargetReference": { - "shape": "Sf" - } - } - }, - "output": { - "type": "structure", - "members": { - "DetachedObjectIdentifier": {} - } - } - }, - "DetachObject": { - "http": { - "method": "PUT", - "requestUri": "/amazonclouddirectory/2017-01-11/object/detach", - "responseCode": 200 - }, - "input": { - "type": "structure", - "required": [ - "DirectoryArn", - "ParentReference", - "LinkName" - ], - "members": { - "DirectoryArn": { - "location": "header", - "locationName": "x-amz-data-partition" - }, - "ParentReference": { - "shape": "Sf" - }, - "LinkName": {} - } - }, - "output": { - "type": "structure", - "members": { - "DetachedObjectIdentifier": {} - } - } - }, - "DetachPolicy": { - "http": { - "method": "PUT", - "requestUri": "/amazonclouddirectory/2017-01-11/policy/detach", - "responseCode": 200 - }, - "input": { - "type": "structure", - "required": [ - "DirectoryArn", - "PolicyReference", - "ObjectReference" - ], - "members": { - "DirectoryArn": { - "location": "header", - "locationName": "x-amz-data-partition" - }, - "PolicyReference": { - "shape": "Sf" - }, - "ObjectReference": { - "shape": "Sf" - } - } - }, - "output": { - "type": "structure", - "members": {} - } - }, - "DetachTypedLink": { - "http": { - "method": "PUT", - "requestUri": "/amazonclouddirectory/2017-01-11/typedlink/detach", - "responseCode": 200 - }, - "input": { - "type": "structure", - "required": [ - "DirectoryArn", - "TypedLinkSpecifier" - ], - "members": { - "DirectoryArn": { - "location": "header", - "locationName": "x-amz-data-partition" - }, - "TypedLinkSpecifier": { - "shape": "Sy" - } - } - } - }, - "DisableDirectory": { - "http": { - "method": "PUT", - "requestUri": "/amazonclouddirectory/2017-01-11/directory/disable", - "responseCode": 200 - }, - "input": { - "type": "structure", - "required": [ - "DirectoryArn" - ], - "members": { - "DirectoryArn": { - "location": "header", - "locationName": "x-amz-data-partition" - } - } - }, - "output": { - "type": "structure", - "required": [ - "DirectoryArn" - ], - "members": { - "DirectoryArn": {} - } - } - }, - "EnableDirectory": { - "http": { - "method": "PUT", - "requestUri": "/amazonclouddirectory/2017-01-11/directory/enable", - "responseCode": 200 - }, - "input": { - "type": "structure", - "required": [ - "DirectoryArn" - ], - "members": { - "DirectoryArn": { - "location": "header", - "locationName": "x-amz-data-partition" - } - } - }, - "output": { - "type": "structure", - "required": [ - "DirectoryArn" - ], - "members": { - "DirectoryArn": {} - } - } - }, - "GetDirectory": { - "http": { - "requestUri": "/amazonclouddirectory/2017-01-11/directory/get", - "responseCode": 200 - }, - "input": { - "type": "structure", - "required": [ - "DirectoryArn" - ], - "members": { - "DirectoryArn": { - "location": "header", - "locationName": "x-amz-data-partition" - } - } - }, - "output": { - "type": "structure", - "required": [ - "Directory" - ], - "members": { - "Directory": { - "shape": "S57" - } - } - } - }, - "GetFacet": { - "http": { - "requestUri": "/amazonclouddirectory/2017-01-11/facet", - "responseCode": 200 - }, - "input": { - "type": "structure", - "required": [ - "SchemaArn", - "Name" - ], - "members": { - "SchemaArn": { - "location": "header", - "locationName": "x-amz-data-partition" - }, - "Name": {} - } - }, - "output": { - "type": "structure", - "members": { - "Facet": { - "type": "structure", - "members": { - "Name": {}, - "ObjectType": {} - } - } - } - } - }, - "GetObjectInformation": { - "http": { - "requestUri": "/amazonclouddirectory/2017-01-11/object/information", - "responseCode": 200 - }, - "input": { - "type": "structure", - "required": [ - "DirectoryArn", - "ObjectReference" - ], - "members": { - "DirectoryArn": { - "location": "header", - "locationName": "x-amz-data-partition" - }, - "ObjectReference": { - "shape": "Sf" - }, - "ConsistencyLevel": { - "location": "header", - "locationName": "x-amz-consistency-level" - } - } - }, - "output": { - "type": "structure", - "members": { - "SchemaFacets": { - "shape": "S1u" - }, - "ObjectIdentifier": {} - } - } - }, - "GetSchemaAsJson": { - "http": { - "requestUri": "/amazonclouddirectory/2017-01-11/schema/json", - "responseCode": 200 - }, - "input": { - "type": "structure", - "required": [ - "SchemaArn" - ], - "members": { - "SchemaArn": { - "location": "header", - "locationName": "x-amz-data-partition" - } - } - }, - "output": { - "type": "structure", - "members": { - "Name": {}, - "Document": {} - } - } - }, - "GetTypedLinkFacetInformation": { - "http": { - "requestUri": "/amazonclouddirectory/2017-01-11/typedlink/facet/get", - "responseCode": 200 - }, - "input": { - "type": "structure", - "required": [ - "SchemaArn", - "Name" - ], - "members": { - "SchemaArn": { - "location": "header", - "locationName": "x-amz-data-partition" - }, - "Name": {} - } - }, - "output": { - "type": "structure", - "members": { - "IdentityAttributeOrder": { - "shape": "S4i" - } - } - } - }, - "ListAppliedSchemaArns": { - "http": { - "requestUri": "/amazonclouddirectory/2017-01-11/schema/applied", - "responseCode": 200 - }, - "input": { - "type": "structure", - "required": [ - "DirectoryArn" - ], - "members": { - "DirectoryArn": {}, - "NextToken": {}, - "MaxResults": { - "type": "integer" - } - } - }, - "output": { - "type": "structure", - "members": { - "SchemaArns": { - "shape": "S5m" - }, - "NextToken": {} - } - } - }, - "ListAttachedIndices": { - "http": { - "requestUri": "/amazonclouddirectory/2017-01-11/object/indices", - "responseCode": 200 - }, - "input": { - "type": "structure", - "required": [ - "DirectoryArn", - "TargetReference" - ], - "members": { - "DirectoryArn": { - "location": "header", - "locationName": "x-amz-data-partition" - }, - "TargetReference": { - "shape": "Sf" - }, - "NextToken": {}, - "MaxResults": { - "type": "integer" - }, - "ConsistencyLevel": { - "location": "header", - "locationName": "x-amz-consistency-level" - } - } - }, - "output": { - "type": "structure", - "members": { - "IndexAttachments": { - "shape": "S1w" - }, - "NextToken": {} - } - } - }, - "ListDevelopmentSchemaArns": { - "http": { - "requestUri": "/amazonclouddirectory/2017-01-11/schema/development", - "responseCode": 200 - }, - "input": { - "type": "structure", - "members": { - "NextToken": {}, - "MaxResults": { - "type": "integer" - } - } - }, - "output": { - "type": "structure", - "members": { - "SchemaArns": { - "shape": "S5m" - }, - "NextToken": {} - } - } - }, - "ListDirectories": { - "http": { - "requestUri": "/amazonclouddirectory/2017-01-11/directory/list", - "responseCode": 200 - }, - "input": { - "type": "structure", - "members": { - "NextToken": {}, - "MaxResults": { - "type": "integer" - }, - "state": {} - } - }, - "output": { - "type": "structure", - "required": [ - "Directories" - ], - "members": { - "Directories": { - "type": "list", - "member": { - "shape": "S57" - } - }, - "NextToken": {} - } - } - }, - "ListFacetAttributes": { - "http": { - "requestUri": "/amazonclouddirectory/2017-01-11/facet/attributes", - "responseCode": 200 - }, - "input": { - "type": "structure", - "required": [ - "SchemaArn", - "Name" - ], - "members": { - "SchemaArn": { - "location": "header", - "locationName": "x-amz-data-partition" - }, - "Name": {}, - "NextToken": {}, - "MaxResults": { - "type": "integer" - } - } - }, - "output": { - "type": "structure", - "members": { - "Attributes": { - "shape": "S3s" - }, - "NextToken": {} - } - } - }, - "ListFacetNames": { - "http": { - "requestUri": "/amazonclouddirectory/2017-01-11/facet/list", - "responseCode": 200 - }, - "input": { - "type": "structure", - "required": [ - "SchemaArn" - ], - "members": { - "SchemaArn": { - "location": "header", - "locationName": "x-amz-data-partition" - }, - "NextToken": {}, - "MaxResults": { - "type": "integer" - } - } - }, - "output": { - "type": "structure", - "members": { - "FacetNames": { - "type": "list", - "member": {} - }, - "NextToken": {} - } - } - }, - "ListIncomingTypedLinks": { - "http": { - "requestUri": "/amazonclouddirectory/2017-01-11/typedlink/incoming", - "responseCode": 200 - }, - "input": { - "type": "structure", - "required": [ - "DirectoryArn", - "ObjectReference" - ], - "members": { - "DirectoryArn": { - "location": "header", - "locationName": "x-amz-data-partition" - }, - "ObjectReference": { - "shape": "Sf" - }, - "FilterAttributeRanges": { - "shape": "S1i" - }, - "FilterTypedLink": { - "shape": "St" - }, - "NextToken": {}, - "MaxResults": { - "type": "integer" - }, - "ConsistencyLevel": {} - } - }, - "output": { - "type": "structure", - "members": { - "LinkSpecifiers": { - "shape": "S2d" - }, - "NextToken": {} - } - } - }, - "ListIndex": { - "http": { - "requestUri": "/amazonclouddirectory/2017-01-11/index/targets", - "responseCode": 200 - }, - "input": { - "type": "structure", - "required": [ - "DirectoryArn", - "IndexReference" - ], - "members": { - "DirectoryArn": { - "location": "header", - "locationName": "x-amz-data-partition" - }, - "RangesOnIndexedValues": { - "shape": "S1d" - }, - "IndexReference": { - "shape": "Sf" - }, - "MaxResults": { - "type": "integer" - }, - "NextToken": {}, - "ConsistencyLevel": { - "location": "header", - "locationName": "x-amz-consistency-level" - } - } - }, - "output": { - "type": "structure", - "members": { - "IndexAttachments": { - "shape": "S1w" - }, - "NextToken": {} - } - } - }, - "ListObjectAttributes": { - "http": { - "requestUri": "/amazonclouddirectory/2017-01-11/object/attributes", - "responseCode": 200 - }, - "input": { - "type": "structure", - "required": [ - "DirectoryArn", - "ObjectReference" - ], - "members": { - "DirectoryArn": { - "location": "header", - "locationName": "x-amz-data-partition" - }, - "ObjectReference": { - "shape": "Sf" - }, - "NextToken": {}, - "MaxResults": { - "type": "integer" - }, - "ConsistencyLevel": { - "location": "header", - "locationName": "x-amz-consistency-level" - }, - "FacetFilter": { - "shape": "S3" - } - } - }, - "output": { - "type": "structure", - "members": { - "Attributes": { - "shape": "S5" - }, - "NextToken": {} - } - } - }, - "ListObjectChildren": { - "http": { - "requestUri": "/amazonclouddirectory/2017-01-11/object/children", - "responseCode": 200 - }, - "input": { - "type": "structure", - "required": [ - "DirectoryArn", - "ObjectReference" - ], - "members": { - "DirectoryArn": { - "location": "header", - "locationName": "x-amz-data-partition" - }, - "ObjectReference": { - "shape": "Sf" - }, - "NextToken": {}, - "MaxResults": { - "type": "integer" - }, - "ConsistencyLevel": { - "location": "header", - "locationName": "x-amz-consistency-level" - } - } - }, - "output": { - "type": "structure", - "members": { - "Children": { - "shape": "S1s" - }, - "NextToken": {} - } - } - }, - "ListObjectParentPaths": { - "http": { - "requestUri": "/amazonclouddirectory/2017-01-11/object/parentpaths", - "responseCode": 200 - }, - "input": { - "type": "structure", - "required": [ - "DirectoryArn", - "ObjectReference" - ], - "members": { - "DirectoryArn": { - "location": "header", - "locationName": "x-amz-data-partition" - }, - "ObjectReference": { - "shape": "Sf" - }, - "NextToken": {}, - "MaxResults": { - "type": "integer" - } - } - }, - "output": { - "type": "structure", - "members": { - "PathToObjectIdentifiersList": { - "shape": "S1z" - }, - "NextToken": {} - } - } - }, - "ListObjectParents": { - "http": { - "requestUri": "/amazonclouddirectory/2017-01-11/object/parent", - "responseCode": 200 - }, - "input": { - "type": "structure", - "required": [ - "DirectoryArn", - "ObjectReference" - ], - "members": { - "DirectoryArn": { - "location": "header", - "locationName": "x-amz-data-partition" - }, - "ObjectReference": { - "shape": "Sf" - }, - "NextToken": {}, - "MaxResults": { - "type": "integer" - }, - "ConsistencyLevel": { - "location": "header", - "locationName": "x-amz-consistency-level" - } - } - }, - "output": { - "type": "structure", - "members": { - "Parents": { - "type": "map", - "key": {}, - "value": {} - }, - "NextToken": {} - } - } - }, - "ListObjectPolicies": { - "http": { - "requestUri": "/amazonclouddirectory/2017-01-11/object/policy", - "responseCode": 200 - }, - "input": { - "type": "structure", - "required": [ - "DirectoryArn", - "ObjectReference" - ], - "members": { - "DirectoryArn": { - "location": "header", - "locationName": "x-amz-data-partition" - }, - "ObjectReference": { - "shape": "Sf" - }, - "NextToken": {}, - "MaxResults": { - "type": "integer" - }, - "ConsistencyLevel": { - "location": "header", - "locationName": "x-amz-consistency-level" - } - } - }, - "output": { - "type": "structure", - "members": { - "AttachedPolicyIds": { - "shape": "S22" - }, - "NextToken": {} - } - } - }, - "ListOutgoingTypedLinks": { - "http": { - "requestUri": "/amazonclouddirectory/2017-01-11/typedlink/outgoing", - "responseCode": 200 - }, - "input": { - "type": "structure", - "required": [ - "DirectoryArn", - "ObjectReference" - ], - "members": { - "DirectoryArn": { - "location": "header", - "locationName": "x-amz-data-partition" - }, - "ObjectReference": { - "shape": "Sf" - }, - "FilterAttributeRanges": { - "shape": "S1i" - }, - "FilterTypedLink": { - "shape": "St" - }, - "NextToken": {}, - "MaxResults": { - "type": "integer" - }, - "ConsistencyLevel": {} - } - }, - "output": { - "type": "structure", - "members": { - "TypedLinkSpecifiers": { - "shape": "S2d" - }, - "NextToken": {} - } - } - }, - "ListPolicyAttachments": { - "http": { - "requestUri": "/amazonclouddirectory/2017-01-11/policy/attachment", - "responseCode": 200 - }, - "input": { - "type": "structure", - "required": [ - "DirectoryArn", - "PolicyReference" - ], - "members": { - "DirectoryArn": { - "location": "header", - "locationName": "x-amz-data-partition" - }, - "PolicyReference": { - "shape": "Sf" - }, - "NextToken": {}, - "MaxResults": { - "type": "integer" - }, - "ConsistencyLevel": { - "location": "header", - "locationName": "x-amz-consistency-level" - } - } - }, - "output": { - "type": "structure", - "members": { - "ObjectIdentifiers": { - "shape": "S22" - }, - "NextToken": {} - } - } - }, - "ListPublishedSchemaArns": { - "http": { - "requestUri": "/amazonclouddirectory/2017-01-11/schema/published", - "responseCode": 200 - }, - "input": { - "type": "structure", - "members": { - "NextToken": {}, - "MaxResults": { - "type": "integer" - } - } - }, - "output": { - "type": "structure", - "members": { - "SchemaArns": { - "shape": "S5m" - }, - "NextToken": {} - } - } - }, - "ListTagsForResource": { - "http": { - "requestUri": "/amazonclouddirectory/2017-01-11/tags", - "responseCode": 200 - }, - "input": { - "type": "structure", - "required": [ - "ResourceArn" - ], - "members": { - "ResourceArn": {}, - "NextToken": {}, - "MaxResults": { - "type": "integer" - } - } - }, - "output": { - "type": "structure", - "members": { - "Tags": { - "shape": "S6n" - }, - "NextToken": {} - } - } - }, - "ListTypedLinkFacetAttributes": { - "http": { - "requestUri": "/amazonclouddirectory/2017-01-11/typedlink/facet/attributes", - "responseCode": 200 - }, - "input": { - "type": "structure", - "required": [ - "SchemaArn", - "Name" - ], - "members": { - "SchemaArn": { - "location": "header", - "locationName": "x-amz-data-partition" - }, - "Name": {}, - "NextToken": {}, - "MaxResults": { - "type": "integer" - } - } - }, - "output": { - "type": "structure", - "members": { - "Attributes": { - "shape": "S4g" - }, - "NextToken": {} - } - } - }, - "ListTypedLinkFacetNames": { - "http": { - "requestUri": "/amazonclouddirectory/2017-01-11/typedlink/facet/list", - "responseCode": 200 - }, - "input": { - "type": "structure", - "required": [ - "SchemaArn" - ], - "members": { - "SchemaArn": { - "location": "header", - "locationName": "x-amz-data-partition" - }, - "NextToken": {}, - "MaxResults": { - "type": "integer" - } - } - }, - "output": { - "type": "structure", - "members": { - "FacetNames": { - "type": "list", - "member": {} - }, - "NextToken": {} - } - } - }, - "LookupPolicy": { - "http": { - "requestUri": "/amazonclouddirectory/2017-01-11/policy/lookup", - "responseCode": 200 - }, - "input": { - "type": "structure", - "required": [ - "DirectoryArn", - "ObjectReference" - ], - "members": { - "DirectoryArn": { - "location": "header", - "locationName": "x-amz-data-partition" - }, - "ObjectReference": { - "shape": "Sf" - }, - "NextToken": {}, - "MaxResults": { - "type": "integer" - } - } - }, - "output": { - "type": "structure", - "members": { - "PolicyToPathList": { - "shape": "S26" - }, - "NextToken": {} - } - } - }, - "PublishSchema": { - "http": { - "method": "PUT", - "requestUri": "/amazonclouddirectory/2017-01-11/schema/publish", - "responseCode": 200 - }, - "input": { - "type": "structure", - "required": [ - "DevelopmentSchemaArn", - "Version" - ], - "members": { - "DevelopmentSchemaArn": { - "location": "header", - "locationName": "x-amz-data-partition" - }, - "Version": {}, - "Name": {} - } - }, - "output": { - "type": "structure", - "members": { - "PublishedSchemaArn": {} - } - } - }, - "PutSchemaFromJson": { - "http": { - "method": "PUT", - "requestUri": "/amazonclouddirectory/2017-01-11/schema/json", - "responseCode": 200 - }, - "input": { - "type": "structure", - "required": [ - "SchemaArn", - "Document" - ], - "members": { - "SchemaArn": { - "location": "header", - "locationName": "x-amz-data-partition" - }, - "Document": {} - } - }, - "output": { - "type": "structure", - "members": { - "Arn": {} - } - } - }, - "RemoveFacetFromObject": { - "http": { - "method": "PUT", - "requestUri": "/amazonclouddirectory/2017-01-11/object/facets/delete", - "responseCode": 200 - }, - "input": { - "type": "structure", - "required": [ - "DirectoryArn", - "SchemaFacet", - "ObjectReference" - ], - "members": { - "DirectoryArn": { - "location": "header", - "locationName": "x-amz-data-partition" - }, - "SchemaFacet": { - "shape": "S3" - }, - "ObjectReference": { - "shape": "Sf" - } - } - }, - "output": { - "type": "structure", - "members": {} - } - }, - "TagResource": { - "http": { - "method": "PUT", - "requestUri": "/amazonclouddirectory/2017-01-11/tags/add", - "responseCode": 200 - }, - "input": { - "type": "structure", - "required": [ - "ResourceArn", - "Tags" - ], - "members": { - "ResourceArn": {}, - "Tags": { - "shape": "S6n" - } - } - }, - "output": { - "type": "structure", - "members": {} - } - }, - "UntagResource": { - "http": { - "method": "PUT", - "requestUri": "/amazonclouddirectory/2017-01-11/tags/remove", - "responseCode": 200 - }, - "input": { - "type": "structure", - "required": [ - "ResourceArn", - "TagKeys" - ], - "members": { - "ResourceArn": {}, - "TagKeys": { - "type": "list", - "member": {} - } - } - }, - "output": { - "type": "structure", - "members": {} - } - }, - "UpdateFacet": { - "http": { - "method": "PUT", - "requestUri": "/amazonclouddirectory/2017-01-11/facet", - "responseCode": 200 - }, - "input": { - "type": "structure", - "required": [ - "SchemaArn", - "Name" - ], - "members": { - "SchemaArn": { - "location": "header", - "locationName": "x-amz-data-partition" - }, - "Name": {}, - "AttributeUpdates": { - "type": "list", - "member": { - "type": "structure", - "members": { - "Attribute": { - "shape": "S3t" - }, - "Action": {} - } - } - }, - "ObjectType": {} - } - }, - "output": { - "type": "structure", - "members": {} - } - }, - "UpdateObjectAttributes": { - "http": { - "method": "PUT", - "requestUri": "/amazonclouddirectory/2017-01-11/object/update", - "responseCode": 200 - }, - "input": { - "type": "structure", - "required": [ - "DirectoryArn", - "ObjectReference", - "AttributeUpdates" - ], - "members": { - "DirectoryArn": { - "location": "header", - "locationName": "x-amz-data-partition" - }, - "ObjectReference": { - "shape": "Sf" - }, - "AttributeUpdates": { - "shape": "S2q" - } - } - }, - "output": { - "type": "structure", - "members": { - "ObjectIdentifier": {} - } - } - }, - "UpdateSchema": { - "http": { - "method": "PUT", - "requestUri": "/amazonclouddirectory/2017-01-11/schema/update", - "responseCode": 200 - }, - "input": { - "type": "structure", - "required": [ - "SchemaArn", - "Name" - ], - "members": { - "SchemaArn": { - "location": "header", - "locationName": "x-amz-data-partition" - }, - "Name": {} - } - }, - "output": { - "type": "structure", - "members": { - "SchemaArn": {} - } - } - }, - "UpdateTypedLinkFacet": { - "http": { - "method": "PUT", - "requestUri": "/amazonclouddirectory/2017-01-11/typedlink/facet", - "responseCode": 200 - }, - "input": { - "type": "structure", - "required": [ - "SchemaArn", - "Name", - "AttributeUpdates", - "IdentityAttributeOrder" - ], - "members": { - "SchemaArn": { - "location": "header", - "locationName": "x-amz-data-partition" - }, - "Name": {}, - "AttributeUpdates": { - "type": "list", - "member": { - "type": "structure", - "required": [ - "Attribute", - "Action" - ], - "members": { - "Attribute": { - "shape": "S4h" - }, - "Action": {} - } - } - }, - "IdentityAttributeOrder": { - "shape": "S4i" - } - } - }, - "output": { - "type": "structure", - "members": {} - } - } - }, - "shapes": { - "S3": { - "type": "structure", - "members": { - "SchemaArn": {}, - "FacetName": {} - } - }, - "S5": { - "type": "list", - "member": { - "type": "structure", - "required": [ - "Key", - "Value" - ], - "members": { - "Key": { - "shape": "S7" - }, - "Value": { - "shape": "S9" - } - } - } - }, - "S7": { - "type": "structure", - "required": [ - "SchemaArn", - "FacetName", - "Name" - ], - "members": { - "SchemaArn": {}, - "FacetName": {}, - "Name": {} - } - }, - "S9": { - "type": "structure", - "members": { - "StringValue": {}, - "BinaryValue": { - "type": "blob" - }, - "BooleanValue": { - "type": "boolean" - }, - "NumberValue": {}, - "DatetimeValue": { - "type": "timestamp" - } - } - }, - "Sf": { - "type": "structure", - "members": { - "Selector": {} - } - }, - "St": { - "type": "structure", - "required": [ - "SchemaArn", - "TypedLinkName" - ], - "members": { - "SchemaArn": {}, - "TypedLinkName": {} - } - }, - "Sv": { - "type": "list", - "member": { - "type": "structure", - "required": [ - "AttributeName", - "Value" - ], - "members": { - "AttributeName": {}, - "Value": { - "shape": "S9" - } - } - } - }, - "Sy": { - "type": "structure", - "required": [ - "TypedLinkFacet", - "SourceObjectReference", - "TargetObjectReference", - "IdentityAttributeValues" - ], - "members": { - "TypedLinkFacet": { - "shape": "St" - }, - "SourceObjectReference": { - "shape": "Sf" - }, - "TargetObjectReference": { - "shape": "Sf" - }, - "IdentityAttributeValues": { - "shape": "Sv" - } - } - }, - "S1d": { - "type": "list", - "member": { - "type": "structure", - "members": { - "AttributeKey": { - "shape": "S7" - }, - "Range": { - "shape": "S1f" - } - } - } - }, - "S1f": { - "type": "structure", - "required": [ - "StartMode", - "EndMode" - ], - "members": { - "StartMode": {}, - "StartValue": { - "shape": "S9" - }, - "EndMode": {}, - "EndValue": { - "shape": "S9" - } - } - }, - "S1i": { - "type": "list", - "member": { - "type": "structure", - "required": [ - "Range" - ], - "members": { - "AttributeName": {}, - "Range": { - "shape": "S1f" - } - } - } - }, - "S1s": { - "type": "map", - "key": {}, - "value": {} - }, - "S1u": { - "type": "list", - "member": { - "shape": "S3" - } - }, - "S1w": { - "type": "list", - "member": { - "type": "structure", - "members": { - "IndexedAttributes": { - "shape": "S5" - }, - "ObjectIdentifier": {} - } - } - }, - "S1z": { - "type": "list", - "member": { - "type": "structure", - "members": { - "Path": {}, - "ObjectIdentifiers": { - "shape": "S22" - } - } - } - }, - "S22": { - "type": "list", - "member": {} - }, - "S26": { - "type": "list", - "member": { - "type": "structure", - "members": { - "Path": {}, - "Policies": { - "type": "list", - "member": { - "type": "structure", - "members": { - "PolicyId": {}, - "ObjectIdentifier": {}, - "PolicyType": {} - } - } - } - } - } - }, - "S2d": { - "type": "list", - "member": { - "shape": "Sy" - } - }, - "S2q": { - "type": "list", - "member": { - "type": "structure", - "members": { - "ObjectAttributeKey": { - "shape": "S7" - }, - "ObjectAttributeAction": { - "type": "structure", - "members": { - "ObjectAttributeActionType": {}, - "ObjectAttributeUpdateValue": { - "shape": "S9" - } - } - } - } - } - }, - "S30": { - "type": "list", - "member": { - "shape": "S7" - } - }, - "S3s": { - "type": "list", - "member": { - "shape": "S3t" - } - }, - "S3t": { - "type": "structure", - "required": [ - "Name" - ], - "members": { - "Name": {}, - "AttributeDefinition": { - "type": "structure", - "required": [ - "Type" - ], - "members": { - "Type": {}, - "DefaultValue": { - "shape": "S9" - }, - "IsImmutable": { - "type": "boolean" - }, - "Rules": { - "shape": "S3w" - } - } - }, - "AttributeReference": { - "type": "structure", - "required": [ - "TargetFacetName", - "TargetAttributeName" - ], - "members": { - "TargetFacetName": {}, - "TargetAttributeName": {} - } - }, - "RequiredBehavior": {} - } - }, - "S3w": { - "type": "map", - "key": {}, - "value": { - "type": "structure", - "members": { - "Type": {}, - "Parameters": { - "type": "map", - "key": {}, - "value": {} - } - } - } - }, - "S4g": { - "type": "list", - "member": { - "shape": "S4h" - } - }, - "S4h": { - "type": "structure", - "required": [ - "Name", - "Type", - "RequiredBehavior" - ], - "members": { - "Name": {}, - "Type": {}, - "DefaultValue": { - "shape": "S9" - }, - "IsImmutable": { - "type": "boolean" - }, - "Rules": { - "shape": "S3w" - }, - "RequiredBehavior": {} - } - }, - "S4i": { - "type": "list", - "member": {} - }, - "S57": { - "type": "structure", - "members": { - "Name": {}, - "DirectoryArn": {}, - "State": {}, - "CreationDateTime": { - "type": "timestamp" - } - } - }, - "S5m": { - "type": "list", - "member": {} - }, - "S6n": { - "type": "list", - "member": { - "type": "structure", - "members": { - "Key": {}, - "Value": {} - } - } - } - } -} \ No newline at end of file diff --git a/workshops/monte-carlo-on-ec2-spot-fleet/src/web/node_modules/aws-sdk/apis/clouddirectory-2016-05-10.paginators.json b/workshops/monte-carlo-on-ec2-spot-fleet/src/web/node_modules/aws-sdk/apis/clouddirectory-2016-05-10.paginators.json deleted file mode 100644 index d4164db1..00000000 --- a/workshops/monte-carlo-on-ec2-spot-fleet/src/web/node_modules/aws-sdk/apis/clouddirectory-2016-05-10.paginators.json +++ /dev/null @@ -1,94 +0,0 @@ -{ - "pagination": { - "ListAppliedSchemaArns": { - "input_token": "NextToken", - "output_token": "NextToken", - "limit_key": "MaxResults" - }, - "ListAttachedIndices": { - "input_token": "NextToken", - "output_token": "NextToken", - "limit_key": "MaxResults" - }, - "ListDevelopmentSchemaArns": { - "input_token": "NextToken", - "output_token": "NextToken", - "limit_key": "MaxResults" - }, - "ListDirectories": { - "input_token": "NextToken", - "output_token": "NextToken", - "limit_key": "MaxResults" - }, - "ListFacetAttributes": { - "input_token": "NextToken", - "output_token": "NextToken", - "limit_key": "MaxResults" - }, - "ListFacetNames": { - "input_token": "NextToken", - "output_token": "NextToken", - "limit_key": "MaxResults" - }, - "ListIndex": { - "input_token": "NextToken", - "output_token": "NextToken", - "limit_key": "MaxResults" - }, - "ListObjectAttributes": { - "input_token": "NextToken", - "output_token": "NextToken", - "limit_key": "MaxResults" - }, - "ListObjectChildren": { - "input_token": "NextToken", - "output_token": "NextToken", - "limit_key": "MaxResults" - }, - "ListObjectParentPaths": { - "input_token": "NextToken", - "output_token": "NextToken", - "limit_key": "MaxResults" - }, - "ListObjectParents": { - "input_token": "NextToken", - "output_token": "NextToken", - "limit_key": "MaxResults" - }, - "ListObjectPolicies": { - "input_token": "NextToken", - "output_token": "NextToken", - "limit_key": "MaxResults" - }, - "ListPolicyAttachments": { - "input_token": "NextToken", - "output_token": "NextToken", - "limit_key": "MaxResults" - }, - "ListPublishedSchemaArns": { - "input_token": "NextToken", - "output_token": "NextToken", - "limit_key": "MaxResults" - }, - "ListTagsForResource": { - "input_token": "NextToken", - "output_token": "NextToken", - "limit_key": "MaxResults" - }, - "ListTypedLinkFacetAttributes": { - "input_token": "NextToken", - "output_token": "NextToken", - "limit_key": "MaxResults" - }, - "ListTypedLinkFacetNames": { - "input_token": "NextToken", - "output_token": "NextToken", - "limit_key": "MaxResults" - }, - "LookupPolicy": { - "input_token": "NextToken", - "output_token": "NextToken", - "limit_key": "MaxResults" - } - } -} diff --git a/workshops/monte-carlo-on-ec2-spot-fleet/src/web/node_modules/aws-sdk/apis/cloudformation-2010-05-15.examples.json b/workshops/monte-carlo-on-ec2-spot-fleet/src/web/node_modules/aws-sdk/apis/cloudformation-2010-05-15.examples.json deleted file mode 100644 index 0ea7e3b0..00000000 --- a/workshops/monte-carlo-on-ec2-spot-fleet/src/web/node_modules/aws-sdk/apis/cloudformation-2010-05-15.examples.json +++ /dev/null @@ -1,5 +0,0 @@ -{ - "version": "1.0", - "examples": { - } -} diff --git a/workshops/monte-carlo-on-ec2-spot-fleet/src/web/node_modules/aws-sdk/apis/cloudformation-2010-05-15.min.json b/workshops/monte-carlo-on-ec2-spot-fleet/src/web/node_modules/aws-sdk/apis/cloudformation-2010-05-15.min.json deleted file mode 100644 index 29c1d835..00000000 --- a/workshops/monte-carlo-on-ec2-spot-fleet/src/web/node_modules/aws-sdk/apis/cloudformation-2010-05-15.min.json +++ /dev/null @@ -1,1476 +0,0 @@ -{ - "version": "2.0", - "metadata": { - "apiVersion": "2010-05-15", - "endpointPrefix": "cloudformation", - "protocol": "query", - "serviceFullName": "AWS CloudFormation", - "signatureVersion": "v4", - "uid": "cloudformation-2010-05-15", - "xmlNamespace": "http://cloudformation.amazonaws.com/doc/2010-05-15/" - }, - "operations": { - "CancelUpdateStack": { - "input": { - "type": "structure", - "required": [ - "StackName" - ], - "members": { - "StackName": {}, - "ClientRequestToken": {} - } - } - }, - "ContinueUpdateRollback": { - "input": { - "type": "structure", - "required": [ - "StackName" - ], - "members": { - "StackName": {}, - "RoleARN": {}, - "ResourcesToSkip": { - "type": "list", - "member": {} - }, - "ClientRequestToken": {} - } - }, - "output": { - "resultWrapper": "ContinueUpdateRollbackResult", - "type": "structure", - "members": {} - } - }, - "CreateChangeSet": { - "input": { - "type": "structure", - "required": [ - "StackName", - "ChangeSetName" - ], - "members": { - "StackName": {}, - "TemplateBody": {}, - "TemplateURL": {}, - "UsePreviousTemplate": { - "type": "boolean" - }, - "Parameters": { - "shape": "Se" - }, - "Capabilities": { - "shape": "Sj" - }, - "ResourceTypes": { - "shape": "Sl" - }, - "RoleARN": {}, - "RollbackConfiguration": { - "shape": "Sn" - }, - "NotificationARNs": { - "shape": "St" - }, - "Tags": { - "shape": "Sv" - }, - "ChangeSetName": {}, - "ClientToken": {}, - "Description": {}, - "ChangeSetType": {} - } - }, - "output": { - "resultWrapper": "CreateChangeSetResult", - "type": "structure", - "members": { - "Id": {}, - "StackId": {} - } - } - }, - "CreateStack": { - "input": { - "type": "structure", - "required": [ - "StackName" - ], - "members": { - "StackName": {}, - "TemplateBody": {}, - "TemplateURL": {}, - "Parameters": { - "shape": "Se" - }, - "DisableRollback": { - "type": "boolean" - }, - "RollbackConfiguration": { - "shape": "Sn" - }, - "TimeoutInMinutes": { - "type": "integer" - }, - "NotificationARNs": { - "shape": "St" - }, - "Capabilities": { - "shape": "Sj" - }, - "ResourceTypes": { - "shape": "Sl" - }, - "RoleARN": {}, - "OnFailure": {}, - "StackPolicyBody": {}, - "StackPolicyURL": {}, - "Tags": { - "shape": "Sv" - }, - "ClientRequestToken": {}, - "EnableTerminationProtection": { - "type": "boolean" - } - } - }, - "output": { - "resultWrapper": "CreateStackResult", - "type": "structure", - "members": { - "StackId": {} - } - } - }, - "CreateStackInstances": { - "input": { - "type": "structure", - "required": [ - "StackSetName", - "Accounts", - "Regions" - ], - "members": { - "StackSetName": {}, - "Accounts": { - "shape": "S1g" - }, - "Regions": { - "shape": "S1i" - }, - "OperationPreferences": { - "shape": "S1k" - }, - "OperationId": { - "idempotencyToken": true - } - } - }, - "output": { - "resultWrapper": "CreateStackInstancesResult", - "type": "structure", - "members": { - "OperationId": {} - } - } - }, - "CreateStackSet": { - "input": { - "type": "structure", - "required": [ - "StackSetName" - ], - "members": { - "StackSetName": {}, - "Description": {}, - "TemplateBody": {}, - "TemplateURL": {}, - "Parameters": { - "shape": "Se" - }, - "Capabilities": { - "shape": "Sj" - }, - "Tags": { - "shape": "Sv" - }, - "ClientRequestToken": { - "idempotencyToken": true - } - } - }, - "output": { - "resultWrapper": "CreateStackSetResult", - "type": "structure", - "members": { - "StackSetId": {} - } - } - }, - "DeleteChangeSet": { - "input": { - "type": "structure", - "required": [ - "ChangeSetName" - ], - "members": { - "ChangeSetName": {}, - "StackName": {} - } - }, - "output": { - "resultWrapper": "DeleteChangeSetResult", - "type": "structure", - "members": {} - } - }, - "DeleteStack": { - "input": { - "type": "structure", - "required": [ - "StackName" - ], - "members": { - "StackName": {}, - "RetainResources": { - "type": "list", - "member": {} - }, - "RoleARN": {}, - "ClientRequestToken": {} - } - } - }, - "DeleteStackInstances": { - "input": { - "type": "structure", - "required": [ - "StackSetName", - "Accounts", - "Regions", - "RetainStacks" - ], - "members": { - "StackSetName": {}, - "Accounts": { - "shape": "S1g" - }, - "Regions": { - "shape": "S1i" - }, - "OperationPreferences": { - "shape": "S1k" - }, - "RetainStacks": { - "type": "boolean" - }, - "OperationId": { - "idempotencyToken": true - } - } - }, - "output": { - "resultWrapper": "DeleteStackInstancesResult", - "type": "structure", - "members": { - "OperationId": {} - } - } - }, - "DeleteStackSet": { - "input": { - "type": "structure", - "required": [ - "StackSetName" - ], - "members": { - "StackSetName": {} - } - }, - "output": { - "resultWrapper": "DeleteStackSetResult", - "type": "structure", - "members": {} - } - }, - "DescribeAccountLimits": { - "input": { - "type": "structure", - "members": { - "NextToken": {} - } - }, - "output": { - "resultWrapper": "DescribeAccountLimitsResult", - "type": "structure", - "members": { - "AccountLimits": { - "type": "list", - "member": { - "type": "structure", - "members": { - "Name": {}, - "Value": { - "type": "integer" - } - } - } - }, - "NextToken": {} - } - } - }, - "DescribeChangeSet": { - "input": { - "type": "structure", - "required": [ - "ChangeSetName" - ], - "members": { - "ChangeSetName": {}, - "StackName": {}, - "NextToken": {} - } - }, - "output": { - "resultWrapper": "DescribeChangeSetResult", - "type": "structure", - "members": { - "ChangeSetName": {}, - "ChangeSetId": {}, - "StackId": {}, - "StackName": {}, - "Description": {}, - "Parameters": { - "shape": "Se" - }, - "CreationTime": { - "type": "timestamp" - }, - "ExecutionStatus": {}, - "Status": {}, - "StatusReason": {}, - "NotificationARNs": { - "shape": "St" - }, - "RollbackConfiguration": { - "shape": "Sn" - }, - "Capabilities": { - "shape": "Sj" - }, - "Tags": { - "shape": "Sv" - }, - "Changes": { - "type": "list", - "member": { - "type": "structure", - "members": { - "Type": {}, - "ResourceChange": { - "type": "structure", - "members": { - "Action": {}, - "LogicalResourceId": {}, - "PhysicalResourceId": {}, - "ResourceType": {}, - "Replacement": {}, - "Scope": { - "type": "list", - "member": {} - }, - "Details": { - "type": "list", - "member": { - "type": "structure", - "members": { - "Target": { - "type": "structure", - "members": { - "Attribute": {}, - "Name": {}, - "RequiresRecreation": {} - } - }, - "Evaluation": {}, - "ChangeSource": {}, - "CausingEntity": {} - } - } - } - } - } - } - } - }, - "NextToken": {} - } - } - }, - "DescribeStackEvents": { - "input": { - "type": "structure", - "members": { - "StackName": {}, - "NextToken": {} - } - }, - "output": { - "resultWrapper": "DescribeStackEventsResult", - "type": "structure", - "members": { - "StackEvents": { - "type": "list", - "member": { - "type": "structure", - "required": [ - "StackId", - "EventId", - "StackName", - "Timestamp" - ], - "members": { - "StackId": {}, - "EventId": {}, - "StackName": {}, - "LogicalResourceId": {}, - "PhysicalResourceId": {}, - "ResourceType": {}, - "Timestamp": { - "type": "timestamp" - }, - "ResourceStatus": {}, - "ResourceStatusReason": {}, - "ResourceProperties": {}, - "ClientRequestToken": {} - } - } - }, - "NextToken": {} - } - } - }, - "DescribeStackInstance": { - "input": { - "type": "structure", - "required": [ - "StackSetName", - "StackInstanceAccount", - "StackInstanceRegion" - ], - "members": { - "StackSetName": {}, - "StackInstanceAccount": {}, - "StackInstanceRegion": {} - } - }, - "output": { - "resultWrapper": "DescribeStackInstanceResult", - "type": "structure", - "members": { - "StackInstance": { - "type": "structure", - "members": { - "StackSetId": {}, - "Region": {}, - "Account": {}, - "StackId": {}, - "Status": {}, - "StatusReason": {} - } - } - } - } - }, - "DescribeStackResource": { - "input": { - "type": "structure", - "required": [ - "StackName", - "LogicalResourceId" - ], - "members": { - "StackName": {}, - "LogicalResourceId": {} - } - }, - "output": { - "resultWrapper": "DescribeStackResourceResult", - "type": "structure", - "members": { - "StackResourceDetail": { - "type": "structure", - "required": [ - "LogicalResourceId", - "ResourceType", - "LastUpdatedTimestamp", - "ResourceStatus" - ], - "members": { - "StackName": {}, - "StackId": {}, - "LogicalResourceId": {}, - "PhysicalResourceId": {}, - "ResourceType": {}, - "LastUpdatedTimestamp": { - "type": "timestamp" - }, - "ResourceStatus": {}, - "ResourceStatusReason": {}, - "Description": {}, - "Metadata": {} - } - } - } - } - }, - "DescribeStackResources": { - "input": { - "type": "structure", - "members": { - "StackName": {}, - "LogicalResourceId": {}, - "PhysicalResourceId": {} - } - }, - "output": { - "resultWrapper": "DescribeStackResourcesResult", - "type": "structure", - "members": { - "StackResources": { - "type": "list", - "member": { - "type": "structure", - "required": [ - "LogicalResourceId", - "ResourceType", - "Timestamp", - "ResourceStatus" - ], - "members": { - "StackName": {}, - "StackId": {}, - "LogicalResourceId": {}, - "PhysicalResourceId": {}, - "ResourceType": {}, - "Timestamp": { - "type": "timestamp" - }, - "ResourceStatus": {}, - "ResourceStatusReason": {}, - "Description": {} - } - } - } - } - } - }, - "DescribeStackSet": { - "input": { - "type": "structure", - "required": [ - "StackSetName" - ], - "members": { - "StackSetName": {} - } - }, - "output": { - "resultWrapper": "DescribeStackSetResult", - "type": "structure", - "members": { - "StackSet": { - "type": "structure", - "members": { - "StackSetName": {}, - "StackSetId": {}, - "Description": {}, - "Status": {}, - "TemplateBody": {}, - "Parameters": { - "shape": "Se" - }, - "Capabilities": { - "shape": "Sj" - }, - "Tags": { - "shape": "Sv" - } - } - } - } - } - }, - "DescribeStackSetOperation": { - "input": { - "type": "structure", - "required": [ - "StackSetName", - "OperationId" - ], - "members": { - "StackSetName": {}, - "OperationId": {} - } - }, - "output": { - "resultWrapper": "DescribeStackSetOperationResult", - "type": "structure", - "members": { - "StackSetOperation": { - "type": "structure", - "members": { - "OperationId": {}, - "StackSetId": {}, - "Action": {}, - "Status": {}, - "OperationPreferences": { - "shape": "S1k" - }, - "RetainStacks": { - "type": "boolean" - }, - "CreationTimestamp": { - "type": "timestamp" - }, - "EndTimestamp": { - "type": "timestamp" - } - } - } - } - } - }, - "DescribeStacks": { - "input": { - "type": "structure", - "members": { - "StackName": {}, - "NextToken": {} - } - }, - "output": { - "resultWrapper": "DescribeStacksResult", - "type": "structure", - "members": { - "Stacks": { - "type": "list", - "member": { - "type": "structure", - "required": [ - "StackName", - "CreationTime", - "StackStatus" - ], - "members": { - "StackId": {}, - "StackName": {}, - "ChangeSetId": {}, - "Description": {}, - "Parameters": { - "shape": "Se" - }, - "CreationTime": { - "type": "timestamp" - }, - "DeletionTime": { - "type": "timestamp" - }, - "LastUpdatedTime": { - "type": "timestamp" - }, - "RollbackConfiguration": { - "shape": "Sn" - }, - "StackStatus": {}, - "StackStatusReason": {}, - "DisableRollback": { - "type": "boolean" - }, - "NotificationARNs": { - "shape": "St" - }, - "TimeoutInMinutes": { - "type": "integer" - }, - "Capabilities": { - "shape": "Sj" - }, - "Outputs": { - "type": "list", - "member": { - "type": "structure", - "members": { - "OutputKey": {}, - "OutputValue": {}, - "Description": {}, - "ExportName": {} - } - } - }, - "RoleARN": {}, - "Tags": { - "shape": "Sv" - }, - "EnableTerminationProtection": { - "type": "boolean" - }, - "ParentId": {}, - "RootId": {} - } - } - }, - "NextToken": {} - } - } - }, - "EstimateTemplateCost": { - "input": { - "type": "structure", - "members": { - "TemplateBody": {}, - "TemplateURL": {}, - "Parameters": { - "shape": "Se" - } - } - }, - "output": { - "resultWrapper": "EstimateTemplateCostResult", - "type": "structure", - "members": { - "Url": {} - } - } - }, - "ExecuteChangeSet": { - "input": { - "type": "structure", - "required": [ - "ChangeSetName" - ], - "members": { - "ChangeSetName": {}, - "StackName": {}, - "ClientRequestToken": {} - } - }, - "output": { - "resultWrapper": "ExecuteChangeSetResult", - "type": "structure", - "members": {} - } - }, - "GetStackPolicy": { - "input": { - "type": "structure", - "required": [ - "StackName" - ], - "members": { - "StackName": {} - } - }, - "output": { - "resultWrapper": "GetStackPolicyResult", - "type": "structure", - "members": { - "StackPolicyBody": {} - } - } - }, - "GetTemplate": { - "input": { - "type": "structure", - "members": { - "StackName": {}, - "ChangeSetName": {}, - "TemplateStage": {} - } - }, - "output": { - "resultWrapper": "GetTemplateResult", - "type": "structure", - "members": { - "TemplateBody": {}, - "StagesAvailable": { - "type": "list", - "member": {} - } - } - } - }, - "GetTemplateSummary": { - "input": { - "type": "structure", - "members": { - "TemplateBody": {}, - "TemplateURL": {}, - "StackName": {}, - "StackSetName": {} - } - }, - "output": { - "resultWrapper": "GetTemplateSummaryResult", - "type": "structure", - "members": { - "Parameters": { - "type": "list", - "member": { - "type": "structure", - "members": { - "ParameterKey": {}, - "DefaultValue": {}, - "ParameterType": {}, - "NoEcho": { - "type": "boolean" - }, - "Description": {}, - "ParameterConstraints": { - "type": "structure", - "members": { - "AllowedValues": { - "type": "list", - "member": {} - } - } - } - } - } - }, - "Description": {}, - "Capabilities": { - "shape": "Sj" - }, - "CapabilitiesReason": {}, - "ResourceTypes": { - "shape": "Sl" - }, - "Version": {}, - "Metadata": {}, - "DeclaredTransforms": { - "shape": "S4u" - } - } - } - }, - "ListChangeSets": { - "input": { - "type": "structure", - "required": [ - "StackName" - ], - "members": { - "StackName": {}, - "NextToken": {} - } - }, - "output": { - "resultWrapper": "ListChangeSetsResult", - "type": "structure", - "members": { - "Summaries": { - "type": "list", - "member": { - "type": "structure", - "members": { - "StackId": {}, - "StackName": {}, - "ChangeSetId": {}, - "ChangeSetName": {}, - "ExecutionStatus": {}, - "Status": {}, - "StatusReason": {}, - "CreationTime": { - "type": "timestamp" - }, - "Description": {} - } - } - }, - "NextToken": {} - } - } - }, - "ListExports": { - "input": { - "type": "structure", - "members": { - "NextToken": {} - } - }, - "output": { - "resultWrapper": "ListExportsResult", - "type": "structure", - "members": { - "Exports": { - "type": "list", - "member": { - "type": "structure", - "members": { - "ExportingStackId": {}, - "Name": {}, - "Value": {} - } - } - }, - "NextToken": {} - } - } - }, - "ListImports": { - "input": { - "type": "structure", - "required": [ - "ExportName" - ], - "members": { - "ExportName": {}, - "NextToken": {} - } - }, - "output": { - "resultWrapper": "ListImportsResult", - "type": "structure", - "members": { - "Imports": { - "type": "list", - "member": {} - }, - "NextToken": {} - } - } - }, - "ListStackInstances": { - "input": { - "type": "structure", - "required": [ - "StackSetName" - ], - "members": { - "StackSetName": {}, - "NextToken": {}, - "MaxResults": { - "type": "integer" - }, - "StackInstanceAccount": {}, - "StackInstanceRegion": {} - } - }, - "output": { - "resultWrapper": "ListStackInstancesResult", - "type": "structure", - "members": { - "Summaries": { - "type": "list", - "member": { - "type": "structure", - "members": { - "StackSetId": {}, - "Region": {}, - "Account": {}, - "StackId": {}, - "Status": {}, - "StatusReason": {} - } - } - }, - "NextToken": {} - } - } - }, - "ListStackResources": { - "input": { - "type": "structure", - "required": [ - "StackName" - ], - "members": { - "StackName": {}, - "NextToken": {} - } - }, - "output": { - "resultWrapper": "ListStackResourcesResult", - "type": "structure", - "members": { - "StackResourceSummaries": { - "type": "list", - "member": { - "type": "structure", - "required": [ - "LogicalResourceId", - "ResourceType", - "LastUpdatedTimestamp", - "ResourceStatus" - ], - "members": { - "LogicalResourceId": {}, - "PhysicalResourceId": {}, - "ResourceType": {}, - "LastUpdatedTimestamp": { - "type": "timestamp" - }, - "ResourceStatus": {}, - "ResourceStatusReason": {} - } - } - }, - "NextToken": {} - } - } - }, - "ListStackSetOperationResults": { - "input": { - "type": "structure", - "required": [ - "StackSetName", - "OperationId" - ], - "members": { - "StackSetName": {}, - "OperationId": {}, - "NextToken": {}, - "MaxResults": { - "type": "integer" - } - } - }, - "output": { - "resultWrapper": "ListStackSetOperationResultsResult", - "type": "structure", - "members": { - "Summaries": { - "type": "list", - "member": { - "type": "structure", - "members": { - "Account": {}, - "Region": {}, - "Status": {}, - "StatusReason": {}, - "AccountGateResult": { - "type": "structure", - "members": { - "Status": {}, - "StatusReason": {} - } - } - } - } - }, - "NextToken": {} - } - } - }, - "ListStackSetOperations": { - "input": { - "type": "structure", - "required": [ - "StackSetName" - ], - "members": { - "StackSetName": {}, - "NextToken": {}, - "MaxResults": { - "type": "integer" - } - } - }, - "output": { - "resultWrapper": "ListStackSetOperationsResult", - "type": "structure", - "members": { - "Summaries": { - "type": "list", - "member": { - "type": "structure", - "members": { - "OperationId": {}, - "Action": {}, - "Status": {}, - "CreationTimestamp": { - "type": "timestamp" - }, - "EndTimestamp": { - "type": "timestamp" - } - } - } - }, - "NextToken": {} - } - } - }, - "ListStackSets": { - "input": { - "type": "structure", - "members": { - "NextToken": {}, - "MaxResults": { - "type": "integer" - }, - "Status": {} - } - }, - "output": { - "resultWrapper": "ListStackSetsResult", - "type": "structure", - "members": { - "Summaries": { - "type": "list", - "member": { - "type": "structure", - "members": { - "StackSetName": {}, - "StackSetId": {}, - "Description": {}, - "Status": {} - } - } - }, - "NextToken": {} - } - } - }, - "ListStacks": { - "input": { - "type": "structure", - "members": { - "NextToken": {}, - "StackStatusFilter": { - "type": "list", - "member": {} - } - } - }, - "output": { - "resultWrapper": "ListStacksResult", - "type": "structure", - "members": { - "StackSummaries": { - "type": "list", - "member": { - "type": "structure", - "required": [ - "StackName", - "CreationTime", - "StackStatus" - ], - "members": { - "StackId": {}, - "StackName": {}, - "TemplateDescription": {}, - "CreationTime": { - "type": "timestamp" - }, - "LastUpdatedTime": { - "type": "timestamp" - }, - "DeletionTime": { - "type": "timestamp" - }, - "StackStatus": {}, - "StackStatusReason": {}, - "ParentId": {}, - "RootId": {} - } - } - }, - "NextToken": {} - } - } - }, - "SetStackPolicy": { - "input": { - "type": "structure", - "required": [ - "StackName" - ], - "members": { - "StackName": {}, - "StackPolicyBody": {}, - "StackPolicyURL": {} - } - } - }, - "SignalResource": { - "input": { - "type": "structure", - "required": [ - "StackName", - "LogicalResourceId", - "UniqueId", - "Status" - ], - "members": { - "StackName": {}, - "LogicalResourceId": {}, - "UniqueId": {}, - "Status": {} - } - } - }, - "StopStackSetOperation": { - "input": { - "type": "structure", - "required": [ - "StackSetName", - "OperationId" - ], - "members": { - "StackSetName": {}, - "OperationId": {} - } - }, - "output": { - "resultWrapper": "StopStackSetOperationResult", - "type": "structure", - "members": {} - } - }, - "UpdateStack": { - "input": { - "type": "structure", - "required": [ - "StackName" - ], - "members": { - "StackName": {}, - "TemplateBody": {}, - "TemplateURL": {}, - "UsePreviousTemplate": { - "type": "boolean" - }, - "StackPolicyDuringUpdateBody": {}, - "StackPolicyDuringUpdateURL": {}, - "Parameters": { - "shape": "Se" - }, - "Capabilities": { - "shape": "Sj" - }, - "ResourceTypes": { - "shape": "Sl" - }, - "RoleARN": {}, - "RollbackConfiguration": { - "shape": "Sn" - }, - "StackPolicyBody": {}, - "StackPolicyURL": {}, - "NotificationARNs": { - "shape": "St" - }, - "Tags": { - "shape": "Sv" - }, - "ClientRequestToken": {} - } - }, - "output": { - "resultWrapper": "UpdateStackResult", - "type": "structure", - "members": { - "StackId": {} - } - } - }, - "UpdateStackSet": { - "input": { - "type": "structure", - "required": [ - "StackSetName" - ], - "members": { - "StackSetName": {}, - "Description": {}, - "TemplateBody": {}, - "TemplateURL": {}, - "UsePreviousTemplate": { - "type": "boolean" - }, - "Parameters": { - "shape": "Se" - }, - "Capabilities": { - "shape": "Sj" - }, - "Tags": { - "shape": "Sv" - }, - "OperationPreferences": { - "shape": "S1k" - }, - "OperationId": { - "idempotencyToken": true - } - } - }, - "output": { - "resultWrapper": "UpdateStackSetResult", - "type": "structure", - "members": { - "OperationId": {} - } - } - }, - "UpdateTerminationProtection": { - "input": { - "type": "structure", - "required": [ - "EnableTerminationProtection", - "StackName" - ], - "members": { - "EnableTerminationProtection": { - "type": "boolean" - }, - "StackName": {} - } - }, - "output": { - "resultWrapper": "UpdateTerminationProtectionResult", - "type": "structure", - "members": { - "StackId": {} - } - } - }, - "ValidateTemplate": { - "input": { - "type": "structure", - "members": { - "TemplateBody": {}, - "TemplateURL": {} - } - }, - "output": { - "resultWrapper": "ValidateTemplateResult", - "type": "structure", - "members": { - "Parameters": { - "type": "list", - "member": { - "type": "structure", - "members": { - "ParameterKey": {}, - "DefaultValue": {}, - "NoEcho": { - "type": "boolean" - }, - "Description": {} - } - } - }, - "Description": {}, - "Capabilities": { - "shape": "Sj" - }, - "CapabilitiesReason": {}, - "DeclaredTransforms": { - "shape": "S4u" - } - } - } - } - }, - "shapes": { - "Se": { - "type": "list", - "member": { - "type": "structure", - "members": { - "ParameterKey": {}, - "ParameterValue": {}, - "UsePreviousValue": { - "type": "boolean" - } - } - } - }, - "Sj": { - "type": "list", - "member": {} - }, - "Sl": { - "type": "list", - "member": {} - }, - "Sn": { - "type": "structure", - "members": { - "RollbackTriggers": { - "type": "list", - "member": { - "type": "structure", - "required": [ - "Arn", - "Type" - ], - "members": { - "Arn": {}, - "Type": {} - } - } - }, - "MonitoringTimeInMinutes": { - "type": "integer" - } - } - }, - "St": { - "type": "list", - "member": {} - }, - "Sv": { - "type": "list", - "member": { - "type": "structure", - "required": [ - "Key", - "Value" - ], - "members": { - "Key": {}, - "Value": {} - } - } - }, - "S1g": { - "type": "list", - "member": {} - }, - "S1i": { - "type": "list", - "member": {} - }, - "S1k": { - "type": "structure", - "members": { - "RegionOrder": { - "shape": "S1i" - }, - "FailureToleranceCount": { - "type": "integer" - }, - "FailureTolerancePercentage": { - "type": "integer" - }, - "MaxConcurrentCount": { - "type": "integer" - }, - "MaxConcurrentPercentage": { - "type": "integer" - } - } - }, - "S4u": { - "type": "list", - "member": {} - } - } -} \ No newline at end of file diff --git a/workshops/monte-carlo-on-ec2-spot-fleet/src/web/node_modules/aws-sdk/apis/cloudformation-2010-05-15.paginators.json b/workshops/monte-carlo-on-ec2-spot-fleet/src/web/node_modules/aws-sdk/apis/cloudformation-2010-05-15.paginators.json deleted file mode 100644 index a8afc23f..00000000 --- a/workshops/monte-carlo-on-ec2-spot-fleet/src/web/node_modules/aws-sdk/apis/cloudformation-2010-05-15.paginators.json +++ /dev/null @@ -1,37 +0,0 @@ -{ - "pagination": { - "DescribeStackEvents": { - "input_token": "NextToken", - "output_token": "NextToken", - "result_key": "StackEvents" - }, - "DescribeStackResources": { - "result_key": "StackResources" - }, - "DescribeStacks": { - "input_token": "NextToken", - "output_token": "NextToken", - "result_key": "Stacks" - }, - "ListExports": { - "input_token": "NextToken", - "output_token": "NextToken", - "result_key": "Exports" - }, - "ListImports": { - "input_token": "NextToken", - "output_token": "NextToken", - "result_key": "Imports" - }, - "ListStackResources": { - "input_token": "NextToken", - "output_token": "NextToken", - "result_key": "StackResourceSummaries" - }, - "ListStacks": { - "input_token": "NextToken", - "output_token": "NextToken", - "result_key": "StackSummaries" - } - } -} \ No newline at end of file diff --git a/workshops/monte-carlo-on-ec2-spot-fleet/src/web/node_modules/aws-sdk/apis/cloudformation-2010-05-15.waiters2.json b/workshops/monte-carlo-on-ec2-spot-fleet/src/web/node_modules/aws-sdk/apis/cloudformation-2010-05-15.waiters2.json deleted file mode 100644 index 4e8c8282..00000000 --- a/workshops/monte-carlo-on-ec2-spot-fleet/src/web/node_modules/aws-sdk/apis/cloudformation-2010-05-15.waiters2.json +++ /dev/null @@ -1,182 +0,0 @@ -{ - "version": 2, - "waiters": { - "StackExists": { - "delay": 5, - "operation": "DescribeStacks", - "maxAttempts": 20, - "acceptors": [ - { - "matcher": "status", - "expected": 200, - "state": "success" - }, - { - "matcher": "error", - "expected": "ValidationError", - "state": "retry" - } - ] - }, - "StackCreateComplete": { - "delay": 30, - "operation": "DescribeStacks", - "maxAttempts": 120, - "description": "Wait until stack status is CREATE_COMPLETE.", - "acceptors": [ - { - "argument": "Stacks[].StackStatus", - "expected": "CREATE_COMPLETE", - "matcher": "pathAll", - "state": "success" - }, - { - "argument": "Stacks[].StackStatus", - "expected": "CREATE_FAILED", - "matcher": "pathAny", - "state": "failure" - }, - { - "argument": "Stacks[].StackStatus", - "expected": "DELETE_COMPLETE", - "matcher": "pathAny", - "state": "failure" - }, - { - "argument": "Stacks[].StackStatus", - "expected": "DELETE_FAILED", - "matcher": "pathAny", - "state": "failure" - }, - { - "argument": "Stacks[].StackStatus", - "expected": "ROLLBACK_FAILED", - "matcher": "pathAny", - "state": "failure" - }, - { - "argument": "Stacks[].StackStatus", - "expected": "ROLLBACK_COMPLETE", - "matcher": "pathAny", - "state": "failure" - }, - { - "expected": "ValidationError", - "matcher": "error", - "state": "failure" - } - ] - }, - "StackDeleteComplete": { - "delay": 30, - "operation": "DescribeStacks", - "maxAttempts": 120, - "description": "Wait until stack status is DELETE_COMPLETE.", - "acceptors": [ - { - "argument": "Stacks[].StackStatus", - "expected": "DELETE_COMPLETE", - "matcher": "pathAll", - "state": "success" - }, - { - "expected": "ValidationError", - "matcher": "error", - "state": "success" - }, - { - "argument": "Stacks[].StackStatus", - "expected": "DELETE_FAILED", - "matcher": "pathAny", - "state": "failure" - }, - { - "argument": "Stacks[].StackStatus", - "expected": "CREATE_FAILED", - "matcher": "pathAny", - "state": "failure" - }, - { - "argument": "Stacks[].StackStatus", - "expected": "ROLLBACK_FAILED", - "matcher": "pathAny", - "state": "failure" - }, - { - "argument": "Stacks[].StackStatus", - "expected": "UPDATE_ROLLBACK_FAILED", - "matcher": "pathAny", - "state": "failure" - }, - { - "argument": "Stacks[].StackStatus", - "expected": "UPDATE_ROLLBACK_IN_PROGRESS", - "matcher": "pathAny", - "state": "failure" - } - ] - }, - "StackUpdateComplete": { - "delay": 30, - "maxAttempts": 120, - "operation": "DescribeStacks", - "description": "Wait until stack status is UPDATE_COMPLETE.", - "acceptors": [ - { - "argument": "Stacks[].StackStatus", - "expected": "UPDATE_COMPLETE", - "matcher": "pathAll", - "state": "success" - }, - { - "expected": "UPDATE_FAILED", - "matcher": "pathAny", - "state": "failure", - "argument": "Stacks[].StackStatus" - }, - { - "argument": "Stacks[].StackStatus", - "expected": "UPDATE_ROLLBACK_FAILED", - "matcher": "pathAny", - "state": "failure" - }, - { - "expected": "UPDATE_ROLLBACK_COMPLETE", - "matcher": "pathAny", - "state": "failure", - "argument": "Stacks[].StackStatus" - }, - { - "expected": "ValidationError", - "matcher": "error", - "state": "failure" - } - ] - }, - "ChangeSetCreateComplete": { - "delay": 30, - "operation": "DescribeChangeSet", - "maxAttempts": 120, - "description": "Wait until change set status is CREATE_COMPLETE.", - "acceptors": [ - { - "argument": "Status", - "expected": "CREATE_COMPLETE", - "matcher": "path", - "state": "success" - }, - { - "argument": "Status", - "expected": "FAILED", - "matcher": "path", - "state": "failure" - }, - { - "expected": "ValidationError", - "matcher": "error", - "state": "failure" - } - ] - } - } -} diff --git a/workshops/monte-carlo-on-ec2-spot-fleet/src/web/node_modules/aws-sdk/apis/cloudfront-2016-11-25.min.json b/workshops/monte-carlo-on-ec2-spot-fleet/src/web/node_modules/aws-sdk/apis/cloudfront-2016-11-25.min.json deleted file mode 100644 index 0d0c1b24..00000000 --- a/workshops/monte-carlo-on-ec2-spot-fleet/src/web/node_modules/aws-sdk/apis/cloudfront-2016-11-25.min.json +++ /dev/null @@ -1,1912 +0,0 @@ -{ - "version": "2.0", - "metadata": { - "apiVersion": "2016-11-25", - "endpointPrefix": "cloudfront", - "globalEndpoint": "cloudfront.amazonaws.com", - "protocol": "rest-xml", - "serviceAbbreviation": "CloudFront", - "serviceFullName": "Amazon CloudFront", - "signatureVersion": "v4", - "uid": "cloudfront-2016-11-25" - }, - "operations": { - "CreateCloudFrontOriginAccessIdentity": { - "http": { - "requestUri": "/2016-11-25/origin-access-identity/cloudfront", - "responseCode": 201 - }, - "input": { - "type": "structure", - "required": [ - "CloudFrontOriginAccessIdentityConfig" - ], - "members": { - "CloudFrontOriginAccessIdentityConfig": { - "shape": "S2", - "locationName": "CloudFrontOriginAccessIdentityConfig", - "xmlNamespace": { - "uri": "http://cloudfront.amazonaws.com/doc/2016-11-25/" - } - } - }, - "payload": "CloudFrontOriginAccessIdentityConfig" - }, - "output": { - "type": "structure", - "members": { - "CloudFrontOriginAccessIdentity": { - "shape": "S5" - }, - "Location": { - "location": "header", - "locationName": "Location" - }, - "ETag": { - "location": "header", - "locationName": "ETag" - } - }, - "payload": "CloudFrontOriginAccessIdentity" - } - }, - "CreateDistribution": { - "http": { - "requestUri": "/2016-11-25/distribution", - "responseCode": 201 - }, - "input": { - "type": "structure", - "required": [ - "DistributionConfig" - ], - "members": { - "DistributionConfig": { - "shape": "S7", - "locationName": "DistributionConfig", - "xmlNamespace": { - "uri": "http://cloudfront.amazonaws.com/doc/2016-11-25/" - } - } - }, - "payload": "DistributionConfig" - }, - "output": { - "type": "structure", - "members": { - "Distribution": { - "shape": "S1s" - }, - "Location": { - "location": "header", - "locationName": "Location" - }, - "ETag": { - "location": "header", - "locationName": "ETag" - } - }, - "payload": "Distribution" - } - }, - "CreateDistributionWithTags": { - "http": { - "requestUri": "/2016-11-25/distribution?WithTags", - "responseCode": 201 - }, - "input": { - "type": "structure", - "required": [ - "DistributionConfigWithTags" - ], - "members": { - "DistributionConfigWithTags": { - "locationName": "DistributionConfigWithTags", - "xmlNamespace": { - "uri": "http://cloudfront.amazonaws.com/doc/2016-11-25/" - }, - "type": "structure", - "required": [ - "DistributionConfig", - "Tags" - ], - "members": { - "DistributionConfig": { - "shape": "S7" - }, - "Tags": { - "shape": "S21" - } - } - } - }, - "payload": "DistributionConfigWithTags" - }, - "output": { - "type": "structure", - "members": { - "Distribution": { - "shape": "S1s" - }, - "Location": { - "location": "header", - "locationName": "Location" - }, - "ETag": { - "location": "header", - "locationName": "ETag" - } - }, - "payload": "Distribution" - } - }, - "CreateInvalidation": { - "http": { - "requestUri": "/2016-11-25/distribution/{DistributionId}/invalidation", - "responseCode": 201 - }, - "input": { - "type": "structure", - "required": [ - "DistributionId", - "InvalidationBatch" - ], - "members": { - "DistributionId": { - "location": "uri", - "locationName": "DistributionId" - }, - "InvalidationBatch": { - "shape": "S28", - "locationName": "InvalidationBatch", - "xmlNamespace": { - "uri": "http://cloudfront.amazonaws.com/doc/2016-11-25/" - } - } - }, - "payload": "InvalidationBatch" - }, - "output": { - "type": "structure", - "members": { - "Location": { - "location": "header", - "locationName": "Location" - }, - "Invalidation": { - "shape": "S2c" - } - }, - "payload": "Invalidation" - } - }, - "CreateStreamingDistribution": { - "http": { - "requestUri": "/2016-11-25/streaming-distribution", - "responseCode": 201 - }, - "input": { - "type": "structure", - "required": [ - "StreamingDistributionConfig" - ], - "members": { - "StreamingDistributionConfig": { - "shape": "S2e", - "locationName": "StreamingDistributionConfig", - "xmlNamespace": { - "uri": "http://cloudfront.amazonaws.com/doc/2016-11-25/" - } - } - }, - "payload": "StreamingDistributionConfig" - }, - "output": { - "type": "structure", - "members": { - "StreamingDistribution": { - "shape": "S2i" - }, - "Location": { - "location": "header", - "locationName": "Location" - }, - "ETag": { - "location": "header", - "locationName": "ETag" - } - }, - "payload": "StreamingDistribution" - } - }, - "CreateStreamingDistributionWithTags": { - "http": { - "requestUri": "/2016-11-25/streaming-distribution?WithTags", - "responseCode": 201 - }, - "input": { - "type": "structure", - "required": [ - "StreamingDistributionConfigWithTags" - ], - "members": { - "StreamingDistributionConfigWithTags": { - "locationName": "StreamingDistributionConfigWithTags", - "xmlNamespace": { - "uri": "http://cloudfront.amazonaws.com/doc/2016-11-25/" - }, - "type": "structure", - "required": [ - "StreamingDistributionConfig", - "Tags" - ], - "members": { - "StreamingDistributionConfig": { - "shape": "S2e" - }, - "Tags": { - "shape": "S21" - } - } - } - }, - "payload": "StreamingDistributionConfigWithTags" - }, - "output": { - "type": "structure", - "members": { - "StreamingDistribution": { - "shape": "S2i" - }, - "Location": { - "location": "header", - "locationName": "Location" - }, - "ETag": { - "location": "header", - "locationName": "ETag" - } - }, - "payload": "StreamingDistribution" - } - }, - "DeleteCloudFrontOriginAccessIdentity": { - "http": { - "method": "DELETE", - "requestUri": "/2016-11-25/origin-access-identity/cloudfront/{Id}", - "responseCode": 204 - }, - "input": { - "type": "structure", - "required": [ - "Id" - ], - "members": { - "Id": { - "location": "uri", - "locationName": "Id" - }, - "IfMatch": { - "location": "header", - "locationName": "If-Match" - } - } - } - }, - "DeleteDistribution": { - "http": { - "method": "DELETE", - "requestUri": "/2016-11-25/distribution/{Id}", - "responseCode": 204 - }, - "input": { - "type": "structure", - "required": [ - "Id" - ], - "members": { - "Id": { - "location": "uri", - "locationName": "Id" - }, - "IfMatch": { - "location": "header", - "locationName": "If-Match" - } - } - } - }, - "DeleteStreamingDistribution": { - "http": { - "method": "DELETE", - "requestUri": "/2016-11-25/streaming-distribution/{Id}", - "responseCode": 204 - }, - "input": { - "type": "structure", - "required": [ - "Id" - ], - "members": { - "Id": { - "location": "uri", - "locationName": "Id" - }, - "IfMatch": { - "location": "header", - "locationName": "If-Match" - } - } - } - }, - "GetCloudFrontOriginAccessIdentity": { - "http": { - "method": "GET", - "requestUri": "/2016-11-25/origin-access-identity/cloudfront/{Id}" - }, - "input": { - "type": "structure", - "required": [ - "Id" - ], - "members": { - "Id": { - "location": "uri", - "locationName": "Id" - } - } - }, - "output": { - "type": "structure", - "members": { - "CloudFrontOriginAccessIdentity": { - "shape": "S5" - }, - "ETag": { - "location": "header", - "locationName": "ETag" - } - }, - "payload": "CloudFrontOriginAccessIdentity" - } - }, - "GetCloudFrontOriginAccessIdentityConfig": { - "http": { - "method": "GET", - "requestUri": "/2016-11-25/origin-access-identity/cloudfront/{Id}/config" - }, - "input": { - "type": "structure", - "required": [ - "Id" - ], - "members": { - "Id": { - "location": "uri", - "locationName": "Id" - } - } - }, - "output": { - "type": "structure", - "members": { - "CloudFrontOriginAccessIdentityConfig": { - "shape": "S2" - }, - "ETag": { - "location": "header", - "locationName": "ETag" - } - }, - "payload": "CloudFrontOriginAccessIdentityConfig" - } - }, - "GetDistribution": { - "http": { - "method": "GET", - "requestUri": "/2016-11-25/distribution/{Id}" - }, - "input": { - "type": "structure", - "required": [ - "Id" - ], - "members": { - "Id": { - "location": "uri", - "locationName": "Id" - } - } - }, - "output": { - "type": "structure", - "members": { - "Distribution": { - "shape": "S1s" - }, - "ETag": { - "location": "header", - "locationName": "ETag" - } - }, - "payload": "Distribution" - } - }, - "GetDistributionConfig": { - "http": { - "method": "GET", - "requestUri": "/2016-11-25/distribution/{Id}/config" - }, - "input": { - "type": "structure", - "required": [ - "Id" - ], - "members": { - "Id": { - "location": "uri", - "locationName": "Id" - } - } - }, - "output": { - "type": "structure", - "members": { - "DistributionConfig": { - "shape": "S7" - }, - "ETag": { - "location": "header", - "locationName": "ETag" - } - }, - "payload": "DistributionConfig" - } - }, - "GetInvalidation": { - "http": { - "method": "GET", - "requestUri": "/2016-11-25/distribution/{DistributionId}/invalidation/{Id}" - }, - "input": { - "type": "structure", - "required": [ - "DistributionId", - "Id" - ], - "members": { - "DistributionId": { - "location": "uri", - "locationName": "DistributionId" - }, - "Id": { - "location": "uri", - "locationName": "Id" - } - } - }, - "output": { - "type": "structure", - "members": { - "Invalidation": { - "shape": "S2c" - } - }, - "payload": "Invalidation" - } - }, - "GetStreamingDistribution": { - "http": { - "method": "GET", - "requestUri": "/2016-11-25/streaming-distribution/{Id}" - }, - "input": { - "type": "structure", - "required": [ - "Id" - ], - "members": { - "Id": { - "location": "uri", - "locationName": "Id" - } - } - }, - "output": { - "type": "structure", - "members": { - "StreamingDistribution": { - "shape": "S2i" - }, - "ETag": { - "location": "header", - "locationName": "ETag" - } - }, - "payload": "StreamingDistribution" - } - }, - "GetStreamingDistributionConfig": { - "http": { - "method": "GET", - "requestUri": "/2016-11-25/streaming-distribution/{Id}/config" - }, - "input": { - "type": "structure", - "required": [ - "Id" - ], - "members": { - "Id": { - "location": "uri", - "locationName": "Id" - } - } - }, - "output": { - "type": "structure", - "members": { - "StreamingDistributionConfig": { - "shape": "S2e" - }, - "ETag": { - "location": "header", - "locationName": "ETag" - } - }, - "payload": "StreamingDistributionConfig" - } - }, - "ListCloudFrontOriginAccessIdentities": { - "http": { - "method": "GET", - "requestUri": "/2016-11-25/origin-access-identity/cloudfront" - }, - "input": { - "type": "structure", - "members": { - "Marker": { - "location": "querystring", - "locationName": "Marker" - }, - "MaxItems": { - "location": "querystring", - "locationName": "MaxItems" - } - } - }, - "output": { - "type": "structure", - "members": { - "CloudFrontOriginAccessIdentityList": { - "type": "structure", - "required": [ - "Marker", - "MaxItems", - "IsTruncated", - "Quantity" - ], - "members": { - "Marker": {}, - "NextMarker": {}, - "MaxItems": { - "type": "integer" - }, - "IsTruncated": { - "type": "boolean" - }, - "Quantity": { - "type": "integer" - }, - "Items": { - "type": "list", - "member": { - "locationName": "CloudFrontOriginAccessIdentitySummary", - "type": "structure", - "required": [ - "Id", - "S3CanonicalUserId", - "Comment" - ], - "members": { - "Id": {}, - "S3CanonicalUserId": {}, - "Comment": {} - } - } - } - } - } - }, - "payload": "CloudFrontOriginAccessIdentityList" - } - }, - "ListDistributions": { - "http": { - "method": "GET", - "requestUri": "/2016-11-25/distribution" - }, - "input": { - "type": "structure", - "members": { - "Marker": { - "location": "querystring", - "locationName": "Marker" - }, - "MaxItems": { - "location": "querystring", - "locationName": "MaxItems" - } - } - }, - "output": { - "type": "structure", - "members": { - "DistributionList": { - "shape": "S3a" - } - }, - "payload": "DistributionList" - } - }, - "ListDistributionsByWebACLId": { - "http": { - "method": "GET", - "requestUri": "/2016-11-25/distributionsByWebACLId/{WebACLId}" - }, - "input": { - "type": "structure", - "required": [ - "WebACLId" - ], - "members": { - "Marker": { - "location": "querystring", - "locationName": "Marker" - }, - "MaxItems": { - "location": "querystring", - "locationName": "MaxItems" - }, - "WebACLId": { - "location": "uri", - "locationName": "WebACLId" - } - } - }, - "output": { - "type": "structure", - "members": { - "DistributionList": { - "shape": "S3a" - } - }, - "payload": "DistributionList" - } - }, - "ListInvalidations": { - "http": { - "method": "GET", - "requestUri": "/2016-11-25/distribution/{DistributionId}/invalidation" - }, - "input": { - "type": "structure", - "required": [ - "DistributionId" - ], - "members": { - "DistributionId": { - "location": "uri", - "locationName": "DistributionId" - }, - "Marker": { - "location": "querystring", - "locationName": "Marker" - }, - "MaxItems": { - "location": "querystring", - "locationName": "MaxItems" - } - } - }, - "output": { - "type": "structure", - "members": { - "InvalidationList": { - "type": "structure", - "required": [ - "Marker", - "MaxItems", - "IsTruncated", - "Quantity" - ], - "members": { - "Marker": {}, - "NextMarker": {}, - "MaxItems": { - "type": "integer" - }, - "IsTruncated": { - "type": "boolean" - }, - "Quantity": { - "type": "integer" - }, - "Items": { - "type": "list", - "member": { - "locationName": "InvalidationSummary", - "type": "structure", - "required": [ - "Id", - "CreateTime", - "Status" - ], - "members": { - "Id": {}, - "CreateTime": { - "type": "timestamp" - }, - "Status": {} - } - } - } - } - } - }, - "payload": "InvalidationList" - } - }, - "ListStreamingDistributions": { - "http": { - "method": "GET", - "requestUri": "/2016-11-25/streaming-distribution" - }, - "input": { - "type": "structure", - "members": { - "Marker": { - "location": "querystring", - "locationName": "Marker" - }, - "MaxItems": { - "location": "querystring", - "locationName": "MaxItems" - } - } - }, - "output": { - "type": "structure", - "members": { - "StreamingDistributionList": { - "type": "structure", - "required": [ - "Marker", - "MaxItems", - "IsTruncated", - "Quantity" - ], - "members": { - "Marker": {}, - "NextMarker": {}, - "MaxItems": { - "type": "integer" - }, - "IsTruncated": { - "type": "boolean" - }, - "Quantity": { - "type": "integer" - }, - "Items": { - "type": "list", - "member": { - "locationName": "StreamingDistributionSummary", - "type": "structure", - "required": [ - "Id", - "ARN", - "Status", - "LastModifiedTime", - "DomainName", - "S3Origin", - "Aliases", - "TrustedSigners", - "Comment", - "PriceClass", - "Enabled" - ], - "members": { - "Id": {}, - "ARN": {}, - "Status": {}, - "LastModifiedTime": { - "type": "timestamp" - }, - "DomainName": {}, - "S3Origin": { - "shape": "S2f" - }, - "Aliases": { - "shape": "S8" - }, - "TrustedSigners": { - "shape": "Sy" - }, - "Comment": {}, - "PriceClass": {}, - "Enabled": { - "type": "boolean" - } - } - } - } - } - } - }, - "payload": "StreamingDistributionList" - } - }, - "ListTagsForResource": { - "http": { - "method": "GET", - "requestUri": "/2016-11-25/tagging" - }, - "input": { - "type": "structure", - "required": [ - "Resource" - ], - "members": { - "Resource": { - "location": "querystring", - "locationName": "Resource" - } - } - }, - "output": { - "type": "structure", - "required": [ - "Tags" - ], - "members": { - "Tags": { - "shape": "S21" - } - }, - "payload": "Tags" - } - }, - "TagResource": { - "http": { - "requestUri": "/2016-11-25/tagging?Operation=Tag", - "responseCode": 204 - }, - "input": { - "type": "structure", - "required": [ - "Resource", - "Tags" - ], - "members": { - "Resource": { - "location": "querystring", - "locationName": "Resource" - }, - "Tags": { - "shape": "S21", - "locationName": "Tags", - "xmlNamespace": { - "uri": "http://cloudfront.amazonaws.com/doc/2016-11-25/" - } - } - }, - "payload": "Tags" - } - }, - "UntagResource": { - "http": { - "requestUri": "/2016-11-25/tagging?Operation=Untag", - "responseCode": 204 - }, - "input": { - "type": "structure", - "required": [ - "Resource", - "TagKeys" - ], - "members": { - "Resource": { - "location": "querystring", - "locationName": "Resource" - }, - "TagKeys": { - "locationName": "TagKeys", - "xmlNamespace": { - "uri": "http://cloudfront.amazonaws.com/doc/2016-11-25/" - }, - "type": "structure", - "members": { - "Items": { - "type": "list", - "member": { - "locationName": "Key" - } - } - } - } - }, - "payload": "TagKeys" - } - }, - "UpdateCloudFrontOriginAccessIdentity": { - "http": { - "method": "PUT", - "requestUri": "/2016-11-25/origin-access-identity/cloudfront/{Id}/config" - }, - "input": { - "type": "structure", - "required": [ - "CloudFrontOriginAccessIdentityConfig", - "Id" - ], - "members": { - "CloudFrontOriginAccessIdentityConfig": { - "shape": "S2", - "locationName": "CloudFrontOriginAccessIdentityConfig", - "xmlNamespace": { - "uri": "http://cloudfront.amazonaws.com/doc/2016-11-25/" - } - }, - "Id": { - "location": "uri", - "locationName": "Id" - }, - "IfMatch": { - "location": "header", - "locationName": "If-Match" - } - }, - "payload": "CloudFrontOriginAccessIdentityConfig" - }, - "output": { - "type": "structure", - "members": { - "CloudFrontOriginAccessIdentity": { - "shape": "S5" - }, - "ETag": { - "location": "header", - "locationName": "ETag" - } - }, - "payload": "CloudFrontOriginAccessIdentity" - } - }, - "UpdateDistribution": { - "http": { - "method": "PUT", - "requestUri": "/2016-11-25/distribution/{Id}/config" - }, - "input": { - "type": "structure", - "required": [ - "DistributionConfig", - "Id" - ], - "members": { - "DistributionConfig": { - "shape": "S7", - "locationName": "DistributionConfig", - "xmlNamespace": { - "uri": "http://cloudfront.amazonaws.com/doc/2016-11-25/" - } - }, - "Id": { - "location": "uri", - "locationName": "Id" - }, - "IfMatch": { - "location": "header", - "locationName": "If-Match" - } - }, - "payload": "DistributionConfig" - }, - "output": { - "type": "structure", - "members": { - "Distribution": { - "shape": "S1s" - }, - "ETag": { - "location": "header", - "locationName": "ETag" - } - }, - "payload": "Distribution" - } - }, - "UpdateStreamingDistribution": { - "http": { - "method": "PUT", - "requestUri": "/2016-11-25/streaming-distribution/{Id}/config" - }, - "input": { - "type": "structure", - "required": [ - "StreamingDistributionConfig", - "Id" - ], - "members": { - "StreamingDistributionConfig": { - "shape": "S2e", - "locationName": "StreamingDistributionConfig", - "xmlNamespace": { - "uri": "http://cloudfront.amazonaws.com/doc/2016-11-25/" - } - }, - "Id": { - "location": "uri", - "locationName": "Id" - }, - "IfMatch": { - "location": "header", - "locationName": "If-Match" - } - }, - "payload": "StreamingDistributionConfig" - }, - "output": { - "type": "structure", - "members": { - "StreamingDistribution": { - "shape": "S2i" - }, - "ETag": { - "location": "header", - "locationName": "ETag" - } - }, - "payload": "StreamingDistribution" - } - } - }, - "shapes": { - "S2": { - "type": "structure", - "required": [ - "CallerReference", - "Comment" - ], - "members": { - "CallerReference": {}, - "Comment": {} - } - }, - "S5": { - "type": "structure", - "required": [ - "Id", - "S3CanonicalUserId" - ], - "members": { - "Id": {}, - "S3CanonicalUserId": {}, - "CloudFrontOriginAccessIdentityConfig": { - "shape": "S2" - } - } - }, - "S7": { - "type": "structure", - "required": [ - "CallerReference", - "Origins", - "DefaultCacheBehavior", - "Comment", - "Enabled" - ], - "members": { - "CallerReference": {}, - "Aliases": { - "shape": "S8" - }, - "DefaultRootObject": {}, - "Origins": { - "shape": "Sb" - }, - "DefaultCacheBehavior": { - "shape": "Sn" - }, - "CacheBehaviors": { - "shape": "S1a" - }, - "CustomErrorResponses": { - "shape": "S1d" - }, - "Comment": {}, - "Logging": { - "type": "structure", - "required": [ - "Enabled", - "IncludeCookies", - "Bucket", - "Prefix" - ], - "members": { - "Enabled": { - "type": "boolean" - }, - "IncludeCookies": { - "type": "boolean" - }, - "Bucket": {}, - "Prefix": {} - } - }, - "PriceClass": {}, - "Enabled": { - "type": "boolean" - }, - "ViewerCertificate": { - "shape": "S1i" - }, - "Restrictions": { - "shape": "S1m" - }, - "WebACLId": {}, - "HttpVersion": {}, - "IsIPV6Enabled": { - "type": "boolean" - } - } - }, - "S8": { - "type": "structure", - "required": [ - "Quantity" - ], - "members": { - "Quantity": { - "type": "integer" - }, - "Items": { - "type": "list", - "member": { - "locationName": "CNAME" - } - } - } - }, - "Sb": { - "type": "structure", - "required": [ - "Quantity" - ], - "members": { - "Quantity": { - "type": "integer" - }, - "Items": { - "type": "list", - "member": { - "locationName": "Origin", - "type": "structure", - "required": [ - "Id", - "DomainName" - ], - "members": { - "Id": {}, - "DomainName": {}, - "OriginPath": {}, - "CustomHeaders": { - "type": "structure", - "required": [ - "Quantity" - ], - "members": { - "Quantity": { - "type": "integer" - }, - "Items": { - "type": "list", - "member": { - "locationName": "OriginCustomHeader", - "type": "structure", - "required": [ - "HeaderName", - "HeaderValue" - ], - "members": { - "HeaderName": {}, - "HeaderValue": {} - } - } - } - } - }, - "S3OriginConfig": { - "type": "structure", - "required": [ - "OriginAccessIdentity" - ], - "members": { - "OriginAccessIdentity": {} - } - }, - "CustomOriginConfig": { - "type": "structure", - "required": [ - "HTTPPort", - "HTTPSPort", - "OriginProtocolPolicy" - ], - "members": { - "HTTPPort": { - "type": "integer" - }, - "HTTPSPort": { - "type": "integer" - }, - "OriginProtocolPolicy": {}, - "OriginSslProtocols": { - "type": "structure", - "required": [ - "Quantity", - "Items" - ], - "members": { - "Quantity": { - "type": "integer" - }, - "Items": { - "type": "list", - "member": { - "locationName": "SslProtocol" - } - } - } - } - } - } - } - } - } - } - }, - "Sn": { - "type": "structure", - "required": [ - "TargetOriginId", - "ForwardedValues", - "TrustedSigners", - "ViewerProtocolPolicy", - "MinTTL" - ], - "members": { - "TargetOriginId": {}, - "ForwardedValues": { - "shape": "So" - }, - "TrustedSigners": { - "shape": "Sy" - }, - "ViewerProtocolPolicy": {}, - "MinTTL": { - "type": "long" - }, - "AllowedMethods": { - "shape": "S12" - }, - "SmoothStreaming": { - "type": "boolean" - }, - "DefaultTTL": { - "type": "long" - }, - "MaxTTL": { - "type": "long" - }, - "Compress": { - "type": "boolean" - }, - "LambdaFunctionAssociations": { - "shape": "S16" - } - } - }, - "So": { - "type": "structure", - "required": [ - "QueryString", - "Cookies" - ], - "members": { - "QueryString": { - "type": "boolean" - }, - "Cookies": { - "type": "structure", - "required": [ - "Forward" - ], - "members": { - "Forward": {}, - "WhitelistedNames": { - "type": "structure", - "required": [ - "Quantity" - ], - "members": { - "Quantity": { - "type": "integer" - }, - "Items": { - "type": "list", - "member": { - "locationName": "Name" - } - } - } - } - } - }, - "Headers": { - "type": "structure", - "required": [ - "Quantity" - ], - "members": { - "Quantity": { - "type": "integer" - }, - "Items": { - "type": "list", - "member": { - "locationName": "Name" - } - } - } - }, - "QueryStringCacheKeys": { - "type": "structure", - "required": [ - "Quantity" - ], - "members": { - "Quantity": { - "type": "integer" - }, - "Items": { - "type": "list", - "member": { - "locationName": "Name" - } - } - } - } - } - }, - "Sy": { - "type": "structure", - "required": [ - "Enabled", - "Quantity" - ], - "members": { - "Enabled": { - "type": "boolean" - }, - "Quantity": { - "type": "integer" - }, - "Items": { - "type": "list", - "member": { - "locationName": "AwsAccountNumber" - } - } - } - }, - "S12": { - "type": "structure", - "required": [ - "Quantity", - "Items" - ], - "members": { - "Quantity": { - "type": "integer" - }, - "Items": { - "shape": "S13" - }, - "CachedMethods": { - "type": "structure", - "required": [ - "Quantity", - "Items" - ], - "members": { - "Quantity": { - "type": "integer" - }, - "Items": { - "shape": "S13" - } - } - } - } - }, - "S13": { - "type": "list", - "member": { - "locationName": "Method" - } - }, - "S16": { - "type": "structure", - "required": [ - "Quantity" - ], - "members": { - "Quantity": { - "type": "integer" - }, - "Items": { - "type": "list", - "member": { - "locationName": "LambdaFunctionAssociation", - "type": "structure", - "members": { - "LambdaFunctionARN": {}, - "EventType": {} - } - } - } - } - }, - "S1a": { - "type": "structure", - "required": [ - "Quantity" - ], - "members": { - "Quantity": { - "type": "integer" - }, - "Items": { - "type": "list", - "member": { - "locationName": "CacheBehavior", - "type": "structure", - "required": [ - "PathPattern", - "TargetOriginId", - "ForwardedValues", - "TrustedSigners", - "ViewerProtocolPolicy", - "MinTTL" - ], - "members": { - "PathPattern": {}, - "TargetOriginId": {}, - "ForwardedValues": { - "shape": "So" - }, - "TrustedSigners": { - "shape": "Sy" - }, - "ViewerProtocolPolicy": {}, - "MinTTL": { - "type": "long" - }, - "AllowedMethods": { - "shape": "S12" - }, - "SmoothStreaming": { - "type": "boolean" - }, - "DefaultTTL": { - "type": "long" - }, - "MaxTTL": { - "type": "long" - }, - "Compress": { - "type": "boolean" - }, - "LambdaFunctionAssociations": { - "shape": "S16" - } - } - } - } - } - }, - "S1d": { - "type": "structure", - "required": [ - "Quantity" - ], - "members": { - "Quantity": { - "type": "integer" - }, - "Items": { - "type": "list", - "member": { - "locationName": "CustomErrorResponse", - "type": "structure", - "required": [ - "ErrorCode" - ], - "members": { - "ErrorCode": { - "type": "integer" - }, - "ResponsePagePath": {}, - "ResponseCode": {}, - "ErrorCachingMinTTL": { - "type": "long" - } - } - } - } - } - }, - "S1i": { - "type": "structure", - "members": { - "CloudFrontDefaultCertificate": { - "type": "boolean" - }, - "IAMCertificateId": {}, - "ACMCertificateArn": {}, - "SSLSupportMethod": {}, - "MinimumProtocolVersion": {}, - "Certificate": { - "deprecated": true - }, - "CertificateSource": { - "deprecated": true - } - } - }, - "S1m": { - "type": "structure", - "required": [ - "GeoRestriction" - ], - "members": { - "GeoRestriction": { - "type": "structure", - "required": [ - "RestrictionType", - "Quantity" - ], - "members": { - "RestrictionType": {}, - "Quantity": { - "type": "integer" - }, - "Items": { - "type": "list", - "member": { - "locationName": "Location" - } - } - } - } - } - }, - "S1s": { - "type": "structure", - "required": [ - "Id", - "ARN", - "Status", - "LastModifiedTime", - "InProgressInvalidationBatches", - "DomainName", - "ActiveTrustedSigners", - "DistributionConfig" - ], - "members": { - "Id": {}, - "ARN": {}, - "Status": {}, - "LastModifiedTime": { - "type": "timestamp" - }, - "InProgressInvalidationBatches": { - "type": "integer" - }, - "DomainName": {}, - "ActiveTrustedSigners": { - "shape": "S1u" - }, - "DistributionConfig": { - "shape": "S7" - } - } - }, - "S1u": { - "type": "structure", - "required": [ - "Enabled", - "Quantity" - ], - "members": { - "Enabled": { - "type": "boolean" - }, - "Quantity": { - "type": "integer" - }, - "Items": { - "type": "list", - "member": { - "locationName": "Signer", - "type": "structure", - "members": { - "AwsAccountNumber": {}, - "KeyPairIds": { - "type": "structure", - "required": [ - "Quantity" - ], - "members": { - "Quantity": { - "type": "integer" - }, - "Items": { - "type": "list", - "member": { - "locationName": "KeyPairId" - } - } - } - } - } - } - } - } - }, - "S21": { - "type": "structure", - "members": { - "Items": { - "type": "list", - "member": { - "locationName": "Tag", - "type": "structure", - "required": [ - "Key" - ], - "members": { - "Key": {}, - "Value": {} - } - } - } - } - }, - "S28": { - "type": "structure", - "required": [ - "Paths", - "CallerReference" - ], - "members": { - "Paths": { - "type": "structure", - "required": [ - "Quantity" - ], - "members": { - "Quantity": { - "type": "integer" - }, - "Items": { - "type": "list", - "member": { - "locationName": "Path" - } - } - } - }, - "CallerReference": {} - } - }, - "S2c": { - "type": "structure", - "required": [ - "Id", - "Status", - "CreateTime", - "InvalidationBatch" - ], - "members": { - "Id": {}, - "Status": {}, - "CreateTime": { - "type": "timestamp" - }, - "InvalidationBatch": { - "shape": "S28" - } - } - }, - "S2e": { - "type": "structure", - "required": [ - "CallerReference", - "S3Origin", - "Comment", - "TrustedSigners", - "Enabled" - ], - "members": { - "CallerReference": {}, - "S3Origin": { - "shape": "S2f" - }, - "Aliases": { - "shape": "S8" - }, - "Comment": {}, - "Logging": { - "type": "structure", - "required": [ - "Enabled", - "Bucket", - "Prefix" - ], - "members": { - "Enabled": { - "type": "boolean" - }, - "Bucket": {}, - "Prefix": {} - } - }, - "TrustedSigners": { - "shape": "Sy" - }, - "PriceClass": {}, - "Enabled": { - "type": "boolean" - } - } - }, - "S2f": { - "type": "structure", - "required": [ - "DomainName", - "OriginAccessIdentity" - ], - "members": { - "DomainName": {}, - "OriginAccessIdentity": {} - } - }, - "S2i": { - "type": "structure", - "required": [ - "Id", - "ARN", - "Status", - "DomainName", - "ActiveTrustedSigners", - "StreamingDistributionConfig" - ], - "members": { - "Id": {}, - "ARN": {}, - "Status": {}, - "LastModifiedTime": { - "type": "timestamp" - }, - "DomainName": {}, - "ActiveTrustedSigners": { - "shape": "S1u" - }, - "StreamingDistributionConfig": { - "shape": "S2e" - } - } - }, - "S3a": { - "type": "structure", - "required": [ - "Marker", - "MaxItems", - "IsTruncated", - "Quantity" - ], - "members": { - "Marker": {}, - "NextMarker": {}, - "MaxItems": { - "type": "integer" - }, - "IsTruncated": { - "type": "boolean" - }, - "Quantity": { - "type": "integer" - }, - "Items": { - "type": "list", - "member": { - "locationName": "DistributionSummary", - "type": "structure", - "required": [ - "Id", - "ARN", - "Status", - "LastModifiedTime", - "DomainName", - "Aliases", - "Origins", - "DefaultCacheBehavior", - "CacheBehaviors", - "CustomErrorResponses", - "Comment", - "PriceClass", - "Enabled", - "ViewerCertificate", - "Restrictions", - "WebACLId", - "HttpVersion", - "IsIPV6Enabled" - ], - "members": { - "Id": {}, - "ARN": {}, - "Status": {}, - "LastModifiedTime": { - "type": "timestamp" - }, - "DomainName": {}, - "Aliases": { - "shape": "S8" - }, - "Origins": { - "shape": "Sb" - }, - "DefaultCacheBehavior": { - "shape": "Sn" - }, - "CacheBehaviors": { - "shape": "S1a" - }, - "CustomErrorResponses": { - "shape": "S1d" - }, - "Comment": {}, - "PriceClass": {}, - "Enabled": { - "type": "boolean" - }, - "ViewerCertificate": { - "shape": "S1i" - }, - "Restrictions": { - "shape": "S1m" - }, - "WebACLId": {}, - "HttpVersion": {}, - "IsIPV6Enabled": { - "type": "boolean" - } - } - } - } - } - } - } -} \ No newline at end of file diff --git a/workshops/monte-carlo-on-ec2-spot-fleet/src/web/node_modules/aws-sdk/apis/cloudfront-2016-11-25.paginators.json b/workshops/monte-carlo-on-ec2-spot-fleet/src/web/node_modules/aws-sdk/apis/cloudfront-2016-11-25.paginators.json deleted file mode 100644 index 51fbb907..00000000 --- a/workshops/monte-carlo-on-ec2-spot-fleet/src/web/node_modules/aws-sdk/apis/cloudfront-2016-11-25.paginators.json +++ /dev/null @@ -1,32 +0,0 @@ -{ - "pagination": { - "ListCloudFrontOriginAccessIdentities": { - "input_token": "Marker", - "output_token": "CloudFrontOriginAccessIdentityList.NextMarker", - "limit_key": "MaxItems", - "more_results": "CloudFrontOriginAccessIdentityList.IsTruncated", - "result_key": "CloudFrontOriginAccessIdentityList.Items" - }, - "ListDistributions": { - "input_token": "Marker", - "output_token": "DistributionList.NextMarker", - "limit_key": "MaxItems", - "more_results": "DistributionList.IsTruncated", - "result_key": "DistributionList.Items" - }, - "ListInvalidations": { - "input_token": "Marker", - "output_token": "InvalidationList.NextMarker", - "limit_key": "MaxItems", - "more_results": "InvalidationList.IsTruncated", - "result_key": "InvalidationList.Items" - }, - "ListStreamingDistributions": { - "input_token": "Marker", - "output_token": "StreamingDistributionList.NextMarker", - "limit_key": "MaxItems", - "more_results": "StreamingDistributionList.IsTruncated", - "result_key": "StreamingDistributionList.Items" - } - } -} diff --git a/workshops/monte-carlo-on-ec2-spot-fleet/src/web/node_modules/aws-sdk/apis/cloudfront-2016-11-25.waiters2.json b/workshops/monte-carlo-on-ec2-spot-fleet/src/web/node_modules/aws-sdk/apis/cloudfront-2016-11-25.waiters2.json deleted file mode 100644 index edd74b2a..00000000 --- a/workshops/monte-carlo-on-ec2-spot-fleet/src/web/node_modules/aws-sdk/apis/cloudfront-2016-11-25.waiters2.json +++ /dev/null @@ -1,47 +0,0 @@ -{ - "version": 2, - "waiters": { - "DistributionDeployed": { - "delay": 60, - "operation": "GetDistribution", - "maxAttempts": 25, - "description": "Wait until a distribution is deployed.", - "acceptors": [ - { - "expected": "Deployed", - "matcher": "path", - "state": "success", - "argument": "Distribution.Status" - } - ] - }, - "InvalidationCompleted": { - "delay": 20, - "operation": "GetInvalidation", - "maxAttempts": 30, - "description": "Wait until an invalidation has completed.", - "acceptors": [ - { - "expected": "Completed", - "matcher": "path", - "state": "success", - "argument": "Invalidation.Status" - } - ] - }, - "StreamingDistributionDeployed": { - "delay": 60, - "operation": "GetStreamingDistribution", - "maxAttempts": 25, - "description": "Wait until a streaming distribution is deployed.", - "acceptors": [ - { - "expected": "Deployed", - "matcher": "path", - "state": "success", - "argument": "StreamingDistribution.Status" - } - ] - } - } -} diff --git a/workshops/monte-carlo-on-ec2-spot-fleet/src/web/node_modules/aws-sdk/apis/cloudfront-2017-03-25.min.json b/workshops/monte-carlo-on-ec2-spot-fleet/src/web/node_modules/aws-sdk/apis/cloudfront-2017-03-25.min.json deleted file mode 100644 index bd43e088..00000000 --- a/workshops/monte-carlo-on-ec2-spot-fleet/src/web/node_modules/aws-sdk/apis/cloudfront-2017-03-25.min.json +++ /dev/null @@ -1,1918 +0,0 @@ -{ - "version": "2.0", - "metadata": { - "apiVersion": "2017-03-25", - "endpointPrefix": "cloudfront", - "globalEndpoint": "cloudfront.amazonaws.com", - "protocol": "rest-xml", - "serviceAbbreviation": "CloudFront", - "serviceFullName": "Amazon CloudFront", - "signatureVersion": "v4", - "uid": "cloudfront-2017-03-25" - }, - "operations": { - "CreateCloudFrontOriginAccessIdentity": { - "http": { - "requestUri": "/2017-03-25/origin-access-identity/cloudfront", - "responseCode": 201 - }, - "input": { - "type": "structure", - "required": [ - "CloudFrontOriginAccessIdentityConfig" - ], - "members": { - "CloudFrontOriginAccessIdentityConfig": { - "shape": "S2", - "locationName": "CloudFrontOriginAccessIdentityConfig", - "xmlNamespace": { - "uri": "http://cloudfront.amazonaws.com/doc/2017-03-25/" - } - } - }, - "payload": "CloudFrontOriginAccessIdentityConfig" - }, - "output": { - "type": "structure", - "members": { - "CloudFrontOriginAccessIdentity": { - "shape": "S5" - }, - "Location": { - "location": "header", - "locationName": "Location" - }, - "ETag": { - "location": "header", - "locationName": "ETag" - } - }, - "payload": "CloudFrontOriginAccessIdentity" - } - }, - "CreateDistribution": { - "http": { - "requestUri": "/2017-03-25/distribution", - "responseCode": 201 - }, - "input": { - "type": "structure", - "required": [ - "DistributionConfig" - ], - "members": { - "DistributionConfig": { - "shape": "S7", - "locationName": "DistributionConfig", - "xmlNamespace": { - "uri": "http://cloudfront.amazonaws.com/doc/2017-03-25/" - } - } - }, - "payload": "DistributionConfig" - }, - "output": { - "type": "structure", - "members": { - "Distribution": { - "shape": "S1s" - }, - "Location": { - "location": "header", - "locationName": "Location" - }, - "ETag": { - "location": "header", - "locationName": "ETag" - } - }, - "payload": "Distribution" - } - }, - "CreateDistributionWithTags": { - "http": { - "requestUri": "/2017-03-25/distribution?WithTags", - "responseCode": 201 - }, - "input": { - "type": "structure", - "required": [ - "DistributionConfigWithTags" - ], - "members": { - "DistributionConfigWithTags": { - "locationName": "DistributionConfigWithTags", - "xmlNamespace": { - "uri": "http://cloudfront.amazonaws.com/doc/2017-03-25/" - }, - "type": "structure", - "required": [ - "DistributionConfig", - "Tags" - ], - "members": { - "DistributionConfig": { - "shape": "S7" - }, - "Tags": { - "shape": "S21" - } - } - } - }, - "payload": "DistributionConfigWithTags" - }, - "output": { - "type": "structure", - "members": { - "Distribution": { - "shape": "S1s" - }, - "Location": { - "location": "header", - "locationName": "Location" - }, - "ETag": { - "location": "header", - "locationName": "ETag" - } - }, - "payload": "Distribution" - } - }, - "CreateInvalidation": { - "http": { - "requestUri": "/2017-03-25/distribution/{DistributionId}/invalidation", - "responseCode": 201 - }, - "input": { - "type": "structure", - "required": [ - "DistributionId", - "InvalidationBatch" - ], - "members": { - "DistributionId": { - "location": "uri", - "locationName": "DistributionId" - }, - "InvalidationBatch": { - "shape": "S28", - "locationName": "InvalidationBatch", - "xmlNamespace": { - "uri": "http://cloudfront.amazonaws.com/doc/2017-03-25/" - } - } - }, - "payload": "InvalidationBatch" - }, - "output": { - "type": "structure", - "members": { - "Location": { - "location": "header", - "locationName": "Location" - }, - "Invalidation": { - "shape": "S2c" - } - }, - "payload": "Invalidation" - } - }, - "CreateStreamingDistribution": { - "http": { - "requestUri": "/2017-03-25/streaming-distribution", - "responseCode": 201 - }, - "input": { - "type": "structure", - "required": [ - "StreamingDistributionConfig" - ], - "members": { - "StreamingDistributionConfig": { - "shape": "S2e", - "locationName": "StreamingDistributionConfig", - "xmlNamespace": { - "uri": "http://cloudfront.amazonaws.com/doc/2017-03-25/" - } - } - }, - "payload": "StreamingDistributionConfig" - }, - "output": { - "type": "structure", - "members": { - "StreamingDistribution": { - "shape": "S2i" - }, - "Location": { - "location": "header", - "locationName": "Location" - }, - "ETag": { - "location": "header", - "locationName": "ETag" - } - }, - "payload": "StreamingDistribution" - } - }, - "CreateStreamingDistributionWithTags": { - "http": { - "requestUri": "/2017-03-25/streaming-distribution?WithTags", - "responseCode": 201 - }, - "input": { - "type": "structure", - "required": [ - "StreamingDistributionConfigWithTags" - ], - "members": { - "StreamingDistributionConfigWithTags": { - "locationName": "StreamingDistributionConfigWithTags", - "xmlNamespace": { - "uri": "http://cloudfront.amazonaws.com/doc/2017-03-25/" - }, - "type": "structure", - "required": [ - "StreamingDistributionConfig", - "Tags" - ], - "members": { - "StreamingDistributionConfig": { - "shape": "S2e" - }, - "Tags": { - "shape": "S21" - } - } - } - }, - "payload": "StreamingDistributionConfigWithTags" - }, - "output": { - "type": "structure", - "members": { - "StreamingDistribution": { - "shape": "S2i" - }, - "Location": { - "location": "header", - "locationName": "Location" - }, - "ETag": { - "location": "header", - "locationName": "ETag" - } - }, - "payload": "StreamingDistribution" - } - }, - "DeleteCloudFrontOriginAccessIdentity": { - "http": { - "method": "DELETE", - "requestUri": "/2017-03-25/origin-access-identity/cloudfront/{Id}", - "responseCode": 204 - }, - "input": { - "type": "structure", - "required": [ - "Id" - ], - "members": { - "Id": { - "location": "uri", - "locationName": "Id" - }, - "IfMatch": { - "location": "header", - "locationName": "If-Match" - } - } - } - }, - "DeleteDistribution": { - "http": { - "method": "DELETE", - "requestUri": "/2017-03-25/distribution/{Id}", - "responseCode": 204 - }, - "input": { - "type": "structure", - "required": [ - "Id" - ], - "members": { - "Id": { - "location": "uri", - "locationName": "Id" - }, - "IfMatch": { - "location": "header", - "locationName": "If-Match" - } - } - } - }, - "DeleteStreamingDistribution": { - "http": { - "method": "DELETE", - "requestUri": "/2017-03-25/streaming-distribution/{Id}", - "responseCode": 204 - }, - "input": { - "type": "structure", - "required": [ - "Id" - ], - "members": { - "Id": { - "location": "uri", - "locationName": "Id" - }, - "IfMatch": { - "location": "header", - "locationName": "If-Match" - } - } - } - }, - "GetCloudFrontOriginAccessIdentity": { - "http": { - "method": "GET", - "requestUri": "/2017-03-25/origin-access-identity/cloudfront/{Id}" - }, - "input": { - "type": "structure", - "required": [ - "Id" - ], - "members": { - "Id": { - "location": "uri", - "locationName": "Id" - } - } - }, - "output": { - "type": "structure", - "members": { - "CloudFrontOriginAccessIdentity": { - "shape": "S5" - }, - "ETag": { - "location": "header", - "locationName": "ETag" - } - }, - "payload": "CloudFrontOriginAccessIdentity" - } - }, - "GetCloudFrontOriginAccessIdentityConfig": { - "http": { - "method": "GET", - "requestUri": "/2017-03-25/origin-access-identity/cloudfront/{Id}/config" - }, - "input": { - "type": "structure", - "required": [ - "Id" - ], - "members": { - "Id": { - "location": "uri", - "locationName": "Id" - } - } - }, - "output": { - "type": "structure", - "members": { - "CloudFrontOriginAccessIdentityConfig": { - "shape": "S2" - }, - "ETag": { - "location": "header", - "locationName": "ETag" - } - }, - "payload": "CloudFrontOriginAccessIdentityConfig" - } - }, - "GetDistribution": { - "http": { - "method": "GET", - "requestUri": "/2017-03-25/distribution/{Id}" - }, - "input": { - "type": "structure", - "required": [ - "Id" - ], - "members": { - "Id": { - "location": "uri", - "locationName": "Id" - } - } - }, - "output": { - "type": "structure", - "members": { - "Distribution": { - "shape": "S1s" - }, - "ETag": { - "location": "header", - "locationName": "ETag" - } - }, - "payload": "Distribution" - } - }, - "GetDistributionConfig": { - "http": { - "method": "GET", - "requestUri": "/2017-03-25/distribution/{Id}/config" - }, - "input": { - "type": "structure", - "required": [ - "Id" - ], - "members": { - "Id": { - "location": "uri", - "locationName": "Id" - } - } - }, - "output": { - "type": "structure", - "members": { - "DistributionConfig": { - "shape": "S7" - }, - "ETag": { - "location": "header", - "locationName": "ETag" - } - }, - "payload": "DistributionConfig" - } - }, - "GetInvalidation": { - "http": { - "method": "GET", - "requestUri": "/2017-03-25/distribution/{DistributionId}/invalidation/{Id}" - }, - "input": { - "type": "structure", - "required": [ - "DistributionId", - "Id" - ], - "members": { - "DistributionId": { - "location": "uri", - "locationName": "DistributionId" - }, - "Id": { - "location": "uri", - "locationName": "Id" - } - } - }, - "output": { - "type": "structure", - "members": { - "Invalidation": { - "shape": "S2c" - } - }, - "payload": "Invalidation" - } - }, - "GetStreamingDistribution": { - "http": { - "method": "GET", - "requestUri": "/2017-03-25/streaming-distribution/{Id}" - }, - "input": { - "type": "structure", - "required": [ - "Id" - ], - "members": { - "Id": { - "location": "uri", - "locationName": "Id" - } - } - }, - "output": { - "type": "structure", - "members": { - "StreamingDistribution": { - "shape": "S2i" - }, - "ETag": { - "location": "header", - "locationName": "ETag" - } - }, - "payload": "StreamingDistribution" - } - }, - "GetStreamingDistributionConfig": { - "http": { - "method": "GET", - "requestUri": "/2017-03-25/streaming-distribution/{Id}/config" - }, - "input": { - "type": "structure", - "required": [ - "Id" - ], - "members": { - "Id": { - "location": "uri", - "locationName": "Id" - } - } - }, - "output": { - "type": "structure", - "members": { - "StreamingDistributionConfig": { - "shape": "S2e" - }, - "ETag": { - "location": "header", - "locationName": "ETag" - } - }, - "payload": "StreamingDistributionConfig" - } - }, - "ListCloudFrontOriginAccessIdentities": { - "http": { - "method": "GET", - "requestUri": "/2017-03-25/origin-access-identity/cloudfront" - }, - "input": { - "type": "structure", - "members": { - "Marker": { - "location": "querystring", - "locationName": "Marker" - }, - "MaxItems": { - "location": "querystring", - "locationName": "MaxItems" - } - } - }, - "output": { - "type": "structure", - "members": { - "CloudFrontOriginAccessIdentityList": { - "type": "structure", - "required": [ - "Marker", - "MaxItems", - "IsTruncated", - "Quantity" - ], - "members": { - "Marker": {}, - "NextMarker": {}, - "MaxItems": { - "type": "integer" - }, - "IsTruncated": { - "type": "boolean" - }, - "Quantity": { - "type": "integer" - }, - "Items": { - "type": "list", - "member": { - "locationName": "CloudFrontOriginAccessIdentitySummary", - "type": "structure", - "required": [ - "Id", - "S3CanonicalUserId", - "Comment" - ], - "members": { - "Id": {}, - "S3CanonicalUserId": {}, - "Comment": {} - } - } - } - } - } - }, - "payload": "CloudFrontOriginAccessIdentityList" - } - }, - "ListDistributions": { - "http": { - "method": "GET", - "requestUri": "/2017-03-25/distribution" - }, - "input": { - "type": "structure", - "members": { - "Marker": { - "location": "querystring", - "locationName": "Marker" - }, - "MaxItems": { - "location": "querystring", - "locationName": "MaxItems" - } - } - }, - "output": { - "type": "structure", - "members": { - "DistributionList": { - "shape": "S3a" - } - }, - "payload": "DistributionList" - } - }, - "ListDistributionsByWebACLId": { - "http": { - "method": "GET", - "requestUri": "/2017-03-25/distributionsByWebACLId/{WebACLId}" - }, - "input": { - "type": "structure", - "required": [ - "WebACLId" - ], - "members": { - "Marker": { - "location": "querystring", - "locationName": "Marker" - }, - "MaxItems": { - "location": "querystring", - "locationName": "MaxItems" - }, - "WebACLId": { - "location": "uri", - "locationName": "WebACLId" - } - } - }, - "output": { - "type": "structure", - "members": { - "DistributionList": { - "shape": "S3a" - } - }, - "payload": "DistributionList" - } - }, - "ListInvalidations": { - "http": { - "method": "GET", - "requestUri": "/2017-03-25/distribution/{DistributionId}/invalidation" - }, - "input": { - "type": "structure", - "required": [ - "DistributionId" - ], - "members": { - "DistributionId": { - "location": "uri", - "locationName": "DistributionId" - }, - "Marker": { - "location": "querystring", - "locationName": "Marker" - }, - "MaxItems": { - "location": "querystring", - "locationName": "MaxItems" - } - } - }, - "output": { - "type": "structure", - "members": { - "InvalidationList": { - "type": "structure", - "required": [ - "Marker", - "MaxItems", - "IsTruncated", - "Quantity" - ], - "members": { - "Marker": {}, - "NextMarker": {}, - "MaxItems": { - "type": "integer" - }, - "IsTruncated": { - "type": "boolean" - }, - "Quantity": { - "type": "integer" - }, - "Items": { - "type": "list", - "member": { - "locationName": "InvalidationSummary", - "type": "structure", - "required": [ - "Id", - "CreateTime", - "Status" - ], - "members": { - "Id": {}, - "CreateTime": { - "type": "timestamp" - }, - "Status": {} - } - } - } - } - } - }, - "payload": "InvalidationList" - } - }, - "ListStreamingDistributions": { - "http": { - "method": "GET", - "requestUri": "/2017-03-25/streaming-distribution" - }, - "input": { - "type": "structure", - "members": { - "Marker": { - "location": "querystring", - "locationName": "Marker" - }, - "MaxItems": { - "location": "querystring", - "locationName": "MaxItems" - } - } - }, - "output": { - "type": "structure", - "members": { - "StreamingDistributionList": { - "type": "structure", - "required": [ - "Marker", - "MaxItems", - "IsTruncated", - "Quantity" - ], - "members": { - "Marker": {}, - "NextMarker": {}, - "MaxItems": { - "type": "integer" - }, - "IsTruncated": { - "type": "boolean" - }, - "Quantity": { - "type": "integer" - }, - "Items": { - "type": "list", - "member": { - "locationName": "StreamingDistributionSummary", - "type": "structure", - "required": [ - "Id", - "ARN", - "Status", - "LastModifiedTime", - "DomainName", - "S3Origin", - "Aliases", - "TrustedSigners", - "Comment", - "PriceClass", - "Enabled" - ], - "members": { - "Id": {}, - "ARN": {}, - "Status": {}, - "LastModifiedTime": { - "type": "timestamp" - }, - "DomainName": {}, - "S3Origin": { - "shape": "S2f" - }, - "Aliases": { - "shape": "S8" - }, - "TrustedSigners": { - "shape": "Sy" - }, - "Comment": {}, - "PriceClass": {}, - "Enabled": { - "type": "boolean" - } - } - } - } - } - } - }, - "payload": "StreamingDistributionList" - } - }, - "ListTagsForResource": { - "http": { - "method": "GET", - "requestUri": "/2017-03-25/tagging" - }, - "input": { - "type": "structure", - "required": [ - "Resource" - ], - "members": { - "Resource": { - "location": "querystring", - "locationName": "Resource" - } - } - }, - "output": { - "type": "structure", - "required": [ - "Tags" - ], - "members": { - "Tags": { - "shape": "S21" - } - }, - "payload": "Tags" - } - }, - "TagResource": { - "http": { - "requestUri": "/2017-03-25/tagging?Operation=Tag", - "responseCode": 204 - }, - "input": { - "type": "structure", - "required": [ - "Resource", - "Tags" - ], - "members": { - "Resource": { - "location": "querystring", - "locationName": "Resource" - }, - "Tags": { - "shape": "S21", - "locationName": "Tags", - "xmlNamespace": { - "uri": "http://cloudfront.amazonaws.com/doc/2017-03-25/" - } - } - }, - "payload": "Tags" - } - }, - "UntagResource": { - "http": { - "requestUri": "/2017-03-25/tagging?Operation=Untag", - "responseCode": 204 - }, - "input": { - "type": "structure", - "required": [ - "Resource", - "TagKeys" - ], - "members": { - "Resource": { - "location": "querystring", - "locationName": "Resource" - }, - "TagKeys": { - "locationName": "TagKeys", - "xmlNamespace": { - "uri": "http://cloudfront.amazonaws.com/doc/2017-03-25/" - }, - "type": "structure", - "members": { - "Items": { - "type": "list", - "member": { - "locationName": "Key" - } - } - } - } - }, - "payload": "TagKeys" - } - }, - "UpdateCloudFrontOriginAccessIdentity": { - "http": { - "method": "PUT", - "requestUri": "/2017-03-25/origin-access-identity/cloudfront/{Id}/config" - }, - "input": { - "type": "structure", - "required": [ - "CloudFrontOriginAccessIdentityConfig", - "Id" - ], - "members": { - "CloudFrontOriginAccessIdentityConfig": { - "shape": "S2", - "locationName": "CloudFrontOriginAccessIdentityConfig", - "xmlNamespace": { - "uri": "http://cloudfront.amazonaws.com/doc/2017-03-25/" - } - }, - "Id": { - "location": "uri", - "locationName": "Id" - }, - "IfMatch": { - "location": "header", - "locationName": "If-Match" - } - }, - "payload": "CloudFrontOriginAccessIdentityConfig" - }, - "output": { - "type": "structure", - "members": { - "CloudFrontOriginAccessIdentity": { - "shape": "S5" - }, - "ETag": { - "location": "header", - "locationName": "ETag" - } - }, - "payload": "CloudFrontOriginAccessIdentity" - } - }, - "UpdateDistribution": { - "http": { - "method": "PUT", - "requestUri": "/2017-03-25/distribution/{Id}/config" - }, - "input": { - "type": "structure", - "required": [ - "DistributionConfig", - "Id" - ], - "members": { - "DistributionConfig": { - "shape": "S7", - "locationName": "DistributionConfig", - "xmlNamespace": { - "uri": "http://cloudfront.amazonaws.com/doc/2017-03-25/" - } - }, - "Id": { - "location": "uri", - "locationName": "Id" - }, - "IfMatch": { - "location": "header", - "locationName": "If-Match" - } - }, - "payload": "DistributionConfig" - }, - "output": { - "type": "structure", - "members": { - "Distribution": { - "shape": "S1s" - }, - "ETag": { - "location": "header", - "locationName": "ETag" - } - }, - "payload": "Distribution" - } - }, - "UpdateStreamingDistribution": { - "http": { - "method": "PUT", - "requestUri": "/2017-03-25/streaming-distribution/{Id}/config" - }, - "input": { - "type": "structure", - "required": [ - "StreamingDistributionConfig", - "Id" - ], - "members": { - "StreamingDistributionConfig": { - "shape": "S2e", - "locationName": "StreamingDistributionConfig", - "xmlNamespace": { - "uri": "http://cloudfront.amazonaws.com/doc/2017-03-25/" - } - }, - "Id": { - "location": "uri", - "locationName": "Id" - }, - "IfMatch": { - "location": "header", - "locationName": "If-Match" - } - }, - "payload": "StreamingDistributionConfig" - }, - "output": { - "type": "structure", - "members": { - "StreamingDistribution": { - "shape": "S2i" - }, - "ETag": { - "location": "header", - "locationName": "ETag" - } - }, - "payload": "StreamingDistribution" - } - } - }, - "shapes": { - "S2": { - "type": "structure", - "required": [ - "CallerReference", - "Comment" - ], - "members": { - "CallerReference": {}, - "Comment": {} - } - }, - "S5": { - "type": "structure", - "required": [ - "Id", - "S3CanonicalUserId" - ], - "members": { - "Id": {}, - "S3CanonicalUserId": {}, - "CloudFrontOriginAccessIdentityConfig": { - "shape": "S2" - } - } - }, - "S7": { - "type": "structure", - "required": [ - "CallerReference", - "Origins", - "DefaultCacheBehavior", - "Comment", - "Enabled" - ], - "members": { - "CallerReference": {}, - "Aliases": { - "shape": "S8" - }, - "DefaultRootObject": {}, - "Origins": { - "shape": "Sb" - }, - "DefaultCacheBehavior": { - "shape": "Sn" - }, - "CacheBehaviors": { - "shape": "S1a" - }, - "CustomErrorResponses": { - "shape": "S1d" - }, - "Comment": {}, - "Logging": { - "type": "structure", - "required": [ - "Enabled", - "IncludeCookies", - "Bucket", - "Prefix" - ], - "members": { - "Enabled": { - "type": "boolean" - }, - "IncludeCookies": { - "type": "boolean" - }, - "Bucket": {}, - "Prefix": {} - } - }, - "PriceClass": {}, - "Enabled": { - "type": "boolean" - }, - "ViewerCertificate": { - "shape": "S1i" - }, - "Restrictions": { - "shape": "S1m" - }, - "WebACLId": {}, - "HttpVersion": {}, - "IsIPV6Enabled": { - "type": "boolean" - } - } - }, - "S8": { - "type": "structure", - "required": [ - "Quantity" - ], - "members": { - "Quantity": { - "type": "integer" - }, - "Items": { - "type": "list", - "member": { - "locationName": "CNAME" - } - } - } - }, - "Sb": { - "type": "structure", - "required": [ - "Quantity" - ], - "members": { - "Quantity": { - "type": "integer" - }, - "Items": { - "type": "list", - "member": { - "locationName": "Origin", - "type": "structure", - "required": [ - "Id", - "DomainName" - ], - "members": { - "Id": {}, - "DomainName": {}, - "OriginPath": {}, - "CustomHeaders": { - "type": "structure", - "required": [ - "Quantity" - ], - "members": { - "Quantity": { - "type": "integer" - }, - "Items": { - "type": "list", - "member": { - "locationName": "OriginCustomHeader", - "type": "structure", - "required": [ - "HeaderName", - "HeaderValue" - ], - "members": { - "HeaderName": {}, - "HeaderValue": {} - } - } - } - } - }, - "S3OriginConfig": { - "type": "structure", - "required": [ - "OriginAccessIdentity" - ], - "members": { - "OriginAccessIdentity": {} - } - }, - "CustomOriginConfig": { - "type": "structure", - "required": [ - "HTTPPort", - "HTTPSPort", - "OriginProtocolPolicy" - ], - "members": { - "HTTPPort": { - "type": "integer" - }, - "HTTPSPort": { - "type": "integer" - }, - "OriginProtocolPolicy": {}, - "OriginSslProtocols": { - "type": "structure", - "required": [ - "Quantity", - "Items" - ], - "members": { - "Quantity": { - "type": "integer" - }, - "Items": { - "type": "list", - "member": { - "locationName": "SslProtocol" - } - } - } - }, - "OriginReadTimeout": { - "type": "integer" - }, - "OriginKeepaliveTimeout": { - "type": "integer" - } - } - } - } - } - } - } - }, - "Sn": { - "type": "structure", - "required": [ - "TargetOriginId", - "ForwardedValues", - "TrustedSigners", - "ViewerProtocolPolicy", - "MinTTL" - ], - "members": { - "TargetOriginId": {}, - "ForwardedValues": { - "shape": "So" - }, - "TrustedSigners": { - "shape": "Sy" - }, - "ViewerProtocolPolicy": {}, - "MinTTL": { - "type": "long" - }, - "AllowedMethods": { - "shape": "S12" - }, - "SmoothStreaming": { - "type": "boolean" - }, - "DefaultTTL": { - "type": "long" - }, - "MaxTTL": { - "type": "long" - }, - "Compress": { - "type": "boolean" - }, - "LambdaFunctionAssociations": { - "shape": "S16" - } - } - }, - "So": { - "type": "structure", - "required": [ - "QueryString", - "Cookies" - ], - "members": { - "QueryString": { - "type": "boolean" - }, - "Cookies": { - "type": "structure", - "required": [ - "Forward" - ], - "members": { - "Forward": {}, - "WhitelistedNames": { - "type": "structure", - "required": [ - "Quantity" - ], - "members": { - "Quantity": { - "type": "integer" - }, - "Items": { - "type": "list", - "member": { - "locationName": "Name" - } - } - } - } - } - }, - "Headers": { - "type": "structure", - "required": [ - "Quantity" - ], - "members": { - "Quantity": { - "type": "integer" - }, - "Items": { - "type": "list", - "member": { - "locationName": "Name" - } - } - } - }, - "QueryStringCacheKeys": { - "type": "structure", - "required": [ - "Quantity" - ], - "members": { - "Quantity": { - "type": "integer" - }, - "Items": { - "type": "list", - "member": { - "locationName": "Name" - } - } - } - } - } - }, - "Sy": { - "type": "structure", - "required": [ - "Enabled", - "Quantity" - ], - "members": { - "Enabled": { - "type": "boolean" - }, - "Quantity": { - "type": "integer" - }, - "Items": { - "type": "list", - "member": { - "locationName": "AwsAccountNumber" - } - } - } - }, - "S12": { - "type": "structure", - "required": [ - "Quantity", - "Items" - ], - "members": { - "Quantity": { - "type": "integer" - }, - "Items": { - "shape": "S13" - }, - "CachedMethods": { - "type": "structure", - "required": [ - "Quantity", - "Items" - ], - "members": { - "Quantity": { - "type": "integer" - }, - "Items": { - "shape": "S13" - } - } - } - } - }, - "S13": { - "type": "list", - "member": { - "locationName": "Method" - } - }, - "S16": { - "type": "structure", - "required": [ - "Quantity" - ], - "members": { - "Quantity": { - "type": "integer" - }, - "Items": { - "type": "list", - "member": { - "locationName": "LambdaFunctionAssociation", - "type": "structure", - "members": { - "LambdaFunctionARN": {}, - "EventType": {} - } - } - } - } - }, - "S1a": { - "type": "structure", - "required": [ - "Quantity" - ], - "members": { - "Quantity": { - "type": "integer" - }, - "Items": { - "type": "list", - "member": { - "locationName": "CacheBehavior", - "type": "structure", - "required": [ - "PathPattern", - "TargetOriginId", - "ForwardedValues", - "TrustedSigners", - "ViewerProtocolPolicy", - "MinTTL" - ], - "members": { - "PathPattern": {}, - "TargetOriginId": {}, - "ForwardedValues": { - "shape": "So" - }, - "TrustedSigners": { - "shape": "Sy" - }, - "ViewerProtocolPolicy": {}, - "MinTTL": { - "type": "long" - }, - "AllowedMethods": { - "shape": "S12" - }, - "SmoothStreaming": { - "type": "boolean" - }, - "DefaultTTL": { - "type": "long" - }, - "MaxTTL": { - "type": "long" - }, - "Compress": { - "type": "boolean" - }, - "LambdaFunctionAssociations": { - "shape": "S16" - } - } - } - } - } - }, - "S1d": { - "type": "structure", - "required": [ - "Quantity" - ], - "members": { - "Quantity": { - "type": "integer" - }, - "Items": { - "type": "list", - "member": { - "locationName": "CustomErrorResponse", - "type": "structure", - "required": [ - "ErrorCode" - ], - "members": { - "ErrorCode": { - "type": "integer" - }, - "ResponsePagePath": {}, - "ResponseCode": {}, - "ErrorCachingMinTTL": { - "type": "long" - } - } - } - } - } - }, - "S1i": { - "type": "structure", - "members": { - "CloudFrontDefaultCertificate": { - "type": "boolean" - }, - "IAMCertificateId": {}, - "ACMCertificateArn": {}, - "SSLSupportMethod": {}, - "MinimumProtocolVersion": {}, - "Certificate": { - "deprecated": true - }, - "CertificateSource": { - "deprecated": true - } - } - }, - "S1m": { - "type": "structure", - "required": [ - "GeoRestriction" - ], - "members": { - "GeoRestriction": { - "type": "structure", - "required": [ - "RestrictionType", - "Quantity" - ], - "members": { - "RestrictionType": {}, - "Quantity": { - "type": "integer" - }, - "Items": { - "type": "list", - "member": { - "locationName": "Location" - } - } - } - } - } - }, - "S1s": { - "type": "structure", - "required": [ - "Id", - "ARN", - "Status", - "LastModifiedTime", - "InProgressInvalidationBatches", - "DomainName", - "ActiveTrustedSigners", - "DistributionConfig" - ], - "members": { - "Id": {}, - "ARN": {}, - "Status": {}, - "LastModifiedTime": { - "type": "timestamp" - }, - "InProgressInvalidationBatches": { - "type": "integer" - }, - "DomainName": {}, - "ActiveTrustedSigners": { - "shape": "S1u" - }, - "DistributionConfig": { - "shape": "S7" - } - } - }, - "S1u": { - "type": "structure", - "required": [ - "Enabled", - "Quantity" - ], - "members": { - "Enabled": { - "type": "boolean" - }, - "Quantity": { - "type": "integer" - }, - "Items": { - "type": "list", - "member": { - "locationName": "Signer", - "type": "structure", - "members": { - "AwsAccountNumber": {}, - "KeyPairIds": { - "type": "structure", - "required": [ - "Quantity" - ], - "members": { - "Quantity": { - "type": "integer" - }, - "Items": { - "type": "list", - "member": { - "locationName": "KeyPairId" - } - } - } - } - } - } - } - } - }, - "S21": { - "type": "structure", - "members": { - "Items": { - "type": "list", - "member": { - "locationName": "Tag", - "type": "structure", - "required": [ - "Key" - ], - "members": { - "Key": {}, - "Value": {} - } - } - } - } - }, - "S28": { - "type": "structure", - "required": [ - "Paths", - "CallerReference" - ], - "members": { - "Paths": { - "type": "structure", - "required": [ - "Quantity" - ], - "members": { - "Quantity": { - "type": "integer" - }, - "Items": { - "type": "list", - "member": { - "locationName": "Path" - } - } - } - }, - "CallerReference": {} - } - }, - "S2c": { - "type": "structure", - "required": [ - "Id", - "Status", - "CreateTime", - "InvalidationBatch" - ], - "members": { - "Id": {}, - "Status": {}, - "CreateTime": { - "type": "timestamp" - }, - "InvalidationBatch": { - "shape": "S28" - } - } - }, - "S2e": { - "type": "structure", - "required": [ - "CallerReference", - "S3Origin", - "Comment", - "TrustedSigners", - "Enabled" - ], - "members": { - "CallerReference": {}, - "S3Origin": { - "shape": "S2f" - }, - "Aliases": { - "shape": "S8" - }, - "Comment": {}, - "Logging": { - "type": "structure", - "required": [ - "Enabled", - "Bucket", - "Prefix" - ], - "members": { - "Enabled": { - "type": "boolean" - }, - "Bucket": {}, - "Prefix": {} - } - }, - "TrustedSigners": { - "shape": "Sy" - }, - "PriceClass": {}, - "Enabled": { - "type": "boolean" - } - } - }, - "S2f": { - "type": "structure", - "required": [ - "DomainName", - "OriginAccessIdentity" - ], - "members": { - "DomainName": {}, - "OriginAccessIdentity": {} - } - }, - "S2i": { - "type": "structure", - "required": [ - "Id", - "ARN", - "Status", - "DomainName", - "ActiveTrustedSigners", - "StreamingDistributionConfig" - ], - "members": { - "Id": {}, - "ARN": {}, - "Status": {}, - "LastModifiedTime": { - "type": "timestamp" - }, - "DomainName": {}, - "ActiveTrustedSigners": { - "shape": "S1u" - }, - "StreamingDistributionConfig": { - "shape": "S2e" - } - } - }, - "S3a": { - "type": "structure", - "required": [ - "Marker", - "MaxItems", - "IsTruncated", - "Quantity" - ], - "members": { - "Marker": {}, - "NextMarker": {}, - "MaxItems": { - "type": "integer" - }, - "IsTruncated": { - "type": "boolean" - }, - "Quantity": { - "type": "integer" - }, - "Items": { - "type": "list", - "member": { - "locationName": "DistributionSummary", - "type": "structure", - "required": [ - "Id", - "ARN", - "Status", - "LastModifiedTime", - "DomainName", - "Aliases", - "Origins", - "DefaultCacheBehavior", - "CacheBehaviors", - "CustomErrorResponses", - "Comment", - "PriceClass", - "Enabled", - "ViewerCertificate", - "Restrictions", - "WebACLId", - "HttpVersion", - "IsIPV6Enabled" - ], - "members": { - "Id": {}, - "ARN": {}, - "Status": {}, - "LastModifiedTime": { - "type": "timestamp" - }, - "DomainName": {}, - "Aliases": { - "shape": "S8" - }, - "Origins": { - "shape": "Sb" - }, - "DefaultCacheBehavior": { - "shape": "Sn" - }, - "CacheBehaviors": { - "shape": "S1a" - }, - "CustomErrorResponses": { - "shape": "S1d" - }, - "Comment": {}, - "PriceClass": {}, - "Enabled": { - "type": "boolean" - }, - "ViewerCertificate": { - "shape": "S1i" - }, - "Restrictions": { - "shape": "S1m" - }, - "WebACLId": {}, - "HttpVersion": {}, - "IsIPV6Enabled": { - "type": "boolean" - } - } - } - } - } - } - } -} \ No newline at end of file diff --git a/workshops/monte-carlo-on-ec2-spot-fleet/src/web/node_modules/aws-sdk/apis/cloudfront-2017-03-25.paginators.json b/workshops/monte-carlo-on-ec2-spot-fleet/src/web/node_modules/aws-sdk/apis/cloudfront-2017-03-25.paginators.json deleted file mode 100644 index 8edbda23..00000000 --- a/workshops/monte-carlo-on-ec2-spot-fleet/src/web/node_modules/aws-sdk/apis/cloudfront-2017-03-25.paginators.json +++ /dev/null @@ -1,32 +0,0 @@ -{ - "pagination": { - "ListCloudFrontOriginAccessIdentities": { - "input_token": "Marker", - "limit_key": "MaxItems", - "more_results": "CloudFrontOriginAccessIdentityList.IsTruncated", - "output_token": "CloudFrontOriginAccessIdentityList.NextMarker", - "result_key": "CloudFrontOriginAccessIdentityList.Items" - }, - "ListDistributions": { - "input_token": "Marker", - "limit_key": "MaxItems", - "more_results": "DistributionList.IsTruncated", - "output_token": "DistributionList.NextMarker", - "result_key": "DistributionList.Items" - }, - "ListInvalidations": { - "input_token": "Marker", - "limit_key": "MaxItems", - "more_results": "InvalidationList.IsTruncated", - "output_token": "InvalidationList.NextMarker", - "result_key": "InvalidationList.Items" - }, - "ListStreamingDistributions": { - "input_token": "Marker", - "limit_key": "MaxItems", - "more_results": "StreamingDistributionList.IsTruncated", - "output_token": "StreamingDistributionList.NextMarker", - "result_key": "StreamingDistributionList.Items" - } - } -} \ No newline at end of file diff --git a/workshops/monte-carlo-on-ec2-spot-fleet/src/web/node_modules/aws-sdk/apis/cloudfront-2017-03-25.waiters2.json b/workshops/monte-carlo-on-ec2-spot-fleet/src/web/node_modules/aws-sdk/apis/cloudfront-2017-03-25.waiters2.json deleted file mode 100644 index edd74b2a..00000000 --- a/workshops/monte-carlo-on-ec2-spot-fleet/src/web/node_modules/aws-sdk/apis/cloudfront-2017-03-25.waiters2.json +++ /dev/null @@ -1,47 +0,0 @@ -{ - "version": 2, - "waiters": { - "DistributionDeployed": { - "delay": 60, - "operation": "GetDistribution", - "maxAttempts": 25, - "description": "Wait until a distribution is deployed.", - "acceptors": [ - { - "expected": "Deployed", - "matcher": "path", - "state": "success", - "argument": "Distribution.Status" - } - ] - }, - "InvalidationCompleted": { - "delay": 20, - "operation": "GetInvalidation", - "maxAttempts": 30, - "description": "Wait until an invalidation has completed.", - "acceptors": [ - { - "expected": "Completed", - "matcher": "path", - "state": "success", - "argument": "Invalidation.Status" - } - ] - }, - "StreamingDistributionDeployed": { - "delay": 60, - "operation": "GetStreamingDistribution", - "maxAttempts": 25, - "description": "Wait until a streaming distribution is deployed.", - "acceptors": [ - { - "expected": "Deployed", - "matcher": "path", - "state": "success", - "argument": "StreamingDistribution.Status" - } - ] - } - } -} diff --git a/workshops/monte-carlo-on-ec2-spot-fleet/src/web/node_modules/aws-sdk/apis/cloudhsm-2014-05-30.examples.json b/workshops/monte-carlo-on-ec2-spot-fleet/src/web/node_modules/aws-sdk/apis/cloudhsm-2014-05-30.examples.json deleted file mode 100644 index 0ea7e3b0..00000000 --- a/workshops/monte-carlo-on-ec2-spot-fleet/src/web/node_modules/aws-sdk/apis/cloudhsm-2014-05-30.examples.json +++ /dev/null @@ -1,5 +0,0 @@ -{ - "version": "1.0", - "examples": { - } -} diff --git a/workshops/monte-carlo-on-ec2-spot-fleet/src/web/node_modules/aws-sdk/apis/cloudhsm-2014-05-30.min.json b/workshops/monte-carlo-on-ec2-spot-fleet/src/web/node_modules/aws-sdk/apis/cloudhsm-2014-05-30.min.json deleted file mode 100644 index c6425185..00000000 --- a/workshops/monte-carlo-on-ec2-spot-fleet/src/web/node_modules/aws-sdk/apis/cloudhsm-2014-05-30.min.json +++ /dev/null @@ -1,520 +0,0 @@ -{ - "version": "2.0", - "metadata": { - "apiVersion": "2014-05-30", - "endpointPrefix": "cloudhsm", - "jsonVersion": "1.1", - "protocol": "json", - "serviceAbbreviation": "CloudHSM", - "serviceFullName": "Amazon CloudHSM", - "signatureVersion": "v4", - "targetPrefix": "CloudHsmFrontendService", - "uid": "cloudhsm-2014-05-30" - }, - "operations": { - "AddTagsToResource": { - "input": { - "type": "structure", - "required": [ - "ResourceArn", - "TagList" - ], - "members": { - "ResourceArn": {}, - "TagList": { - "shape": "S3" - } - } - }, - "output": { - "type": "structure", - "required": [ - "Status" - ], - "members": { - "Status": {} - } - } - }, - "CreateHapg": { - "input": { - "type": "structure", - "required": [ - "Label" - ], - "members": { - "Label": {} - } - }, - "output": { - "type": "structure", - "members": { - "HapgArn": {} - } - } - }, - "CreateHsm": { - "input": { - "type": "structure", - "required": [ - "SubnetId", - "SshKey", - "IamRoleArn", - "SubscriptionType" - ], - "members": { - "SubnetId": { - "locationName": "SubnetId" - }, - "SshKey": { - "locationName": "SshKey" - }, - "EniIp": { - "locationName": "EniIp" - }, - "IamRoleArn": { - "locationName": "IamRoleArn" - }, - "ExternalId": { - "locationName": "ExternalId" - }, - "SubscriptionType": { - "locationName": "SubscriptionType" - }, - "ClientToken": { - "locationName": "ClientToken" - }, - "SyslogIp": { - "locationName": "SyslogIp" - } - }, - "locationName": "CreateHsmRequest" - }, - "output": { - "type": "structure", - "members": { - "HsmArn": {} - } - } - }, - "CreateLunaClient": { - "input": { - "type": "structure", - "required": [ - "Certificate" - ], - "members": { - "Label": {}, - "Certificate": {} - } - }, - "output": { - "type": "structure", - "members": { - "ClientArn": {} - } - } - }, - "DeleteHapg": { - "input": { - "type": "structure", - "required": [ - "HapgArn" - ], - "members": { - "HapgArn": {} - } - }, - "output": { - "type": "structure", - "required": [ - "Status" - ], - "members": { - "Status": {} - } - } - }, - "DeleteHsm": { - "input": { - "type": "structure", - "required": [ - "HsmArn" - ], - "members": { - "HsmArn": { - "locationName": "HsmArn" - } - }, - "locationName": "DeleteHsmRequest" - }, - "output": { - "type": "structure", - "required": [ - "Status" - ], - "members": { - "Status": {} - } - } - }, - "DeleteLunaClient": { - "input": { - "type": "structure", - "required": [ - "ClientArn" - ], - "members": { - "ClientArn": {} - } - }, - "output": { - "type": "structure", - "required": [ - "Status" - ], - "members": { - "Status": {} - } - } - }, - "DescribeHapg": { - "input": { - "type": "structure", - "required": [ - "HapgArn" - ], - "members": { - "HapgArn": {} - } - }, - "output": { - "type": "structure", - "members": { - "HapgArn": {}, - "HapgSerial": {}, - "HsmsLastActionFailed": { - "shape": "Sz" - }, - "HsmsPendingDeletion": { - "shape": "Sz" - }, - "HsmsPendingRegistration": { - "shape": "Sz" - }, - "Label": {}, - "LastModifiedTimestamp": {}, - "PartitionSerialList": { - "shape": "S11" - }, - "State": {} - } - } - }, - "DescribeHsm": { - "input": { - "type": "structure", - "members": { - "HsmArn": {}, - "HsmSerialNumber": {} - } - }, - "output": { - "type": "structure", - "members": { - "HsmArn": {}, - "Status": {}, - "StatusDetails": {}, - "AvailabilityZone": {}, - "EniId": {}, - "EniIp": {}, - "SubscriptionType": {}, - "SubscriptionStartDate": {}, - "SubscriptionEndDate": {}, - "VpcId": {}, - "SubnetId": {}, - "IamRoleArn": {}, - "SerialNumber": {}, - "VendorName": {}, - "HsmType": {}, - "SoftwareVersion": {}, - "SshPublicKey": {}, - "SshKeyLastUpdated": {}, - "ServerCertUri": {}, - "ServerCertLastUpdated": {}, - "Partitions": { - "type": "list", - "member": {} - } - } - } - }, - "DescribeLunaClient": { - "input": { - "type": "structure", - "members": { - "ClientArn": {}, - "CertificateFingerprint": {} - } - }, - "output": { - "type": "structure", - "members": { - "ClientArn": {}, - "Certificate": {}, - "CertificateFingerprint": {}, - "LastModifiedTimestamp": {}, - "Label": {} - } - } - }, - "GetConfig": { - "input": { - "type": "structure", - "required": [ - "ClientArn", - "ClientVersion", - "HapgList" - ], - "members": { - "ClientArn": {}, - "ClientVersion": {}, - "HapgList": { - "shape": "S1i" - } - } - }, - "output": { - "type": "structure", - "members": { - "ConfigType": {}, - "ConfigFile": {}, - "ConfigCred": {} - } - } - }, - "ListAvailableZones": { - "input": { - "type": "structure", - "members": {} - }, - "output": { - "type": "structure", - "members": { - "AZList": { - "type": "list", - "member": {} - } - } - } - }, - "ListHapgs": { - "input": { - "type": "structure", - "members": { - "NextToken": {} - } - }, - "output": { - "type": "structure", - "required": [ - "HapgList" - ], - "members": { - "HapgList": { - "shape": "S1i" - }, - "NextToken": {} - } - } - }, - "ListHsms": { - "input": { - "type": "structure", - "members": { - "NextToken": {} - } - }, - "output": { - "type": "structure", - "members": { - "HsmList": { - "shape": "Sz" - }, - "NextToken": {} - } - } - }, - "ListLunaClients": { - "input": { - "type": "structure", - "members": { - "NextToken": {} - } - }, - "output": { - "type": "structure", - "required": [ - "ClientList" - ], - "members": { - "ClientList": { - "type": "list", - "member": {} - }, - "NextToken": {} - } - } - }, - "ListTagsForResource": { - "input": { - "type": "structure", - "required": [ - "ResourceArn" - ], - "members": { - "ResourceArn": {} - } - }, - "output": { - "type": "structure", - "required": [ - "TagList" - ], - "members": { - "TagList": { - "shape": "S3" - } - } - } - }, - "ModifyHapg": { - "input": { - "type": "structure", - "required": [ - "HapgArn" - ], - "members": { - "HapgArn": {}, - "Label": {}, - "PartitionSerialList": { - "shape": "S11" - } - } - }, - "output": { - "type": "structure", - "members": { - "HapgArn": {} - } - } - }, - "ModifyHsm": { - "input": { - "type": "structure", - "required": [ - "HsmArn" - ], - "members": { - "HsmArn": { - "locationName": "HsmArn" - }, - "SubnetId": { - "locationName": "SubnetId" - }, - "EniIp": { - "locationName": "EniIp" - }, - "IamRoleArn": { - "locationName": "IamRoleArn" - }, - "ExternalId": { - "locationName": "ExternalId" - }, - "SyslogIp": { - "locationName": "SyslogIp" - } - }, - "locationName": "ModifyHsmRequest" - }, - "output": { - "type": "structure", - "members": { - "HsmArn": {} - } - } - }, - "ModifyLunaClient": { - "input": { - "type": "structure", - "required": [ - "ClientArn", - "Certificate" - ], - "members": { - "ClientArn": {}, - "Certificate": {} - } - }, - "output": { - "type": "structure", - "members": { - "ClientArn": {} - } - } - }, - "RemoveTagsFromResource": { - "input": { - "type": "structure", - "required": [ - "ResourceArn", - "TagKeyList" - ], - "members": { - "ResourceArn": {}, - "TagKeyList": { - "type": "list", - "member": {} - } - } - }, - "output": { - "type": "structure", - "required": [ - "Status" - ], - "members": { - "Status": {} - } - } - } - }, - "shapes": { - "S3": { - "type": "list", - "member": { - "type": "structure", - "required": [ - "Key", - "Value" - ], - "members": { - "Key": {}, - "Value": {} - } - } - }, - "Sz": { - "type": "list", - "member": {} - }, - "S11": { - "type": "list", - "member": {} - }, - "S1i": { - "type": "list", - "member": {} - } - } -} \ No newline at end of file diff --git a/workshops/monte-carlo-on-ec2-spot-fleet/src/web/node_modules/aws-sdk/apis/cloudhsm-2014-05-30.paginators.json b/workshops/monte-carlo-on-ec2-spot-fleet/src/web/node_modules/aws-sdk/apis/cloudhsm-2014-05-30.paginators.json deleted file mode 100644 index 5677bd8e..00000000 --- a/workshops/monte-carlo-on-ec2-spot-fleet/src/web/node_modules/aws-sdk/apis/cloudhsm-2014-05-30.paginators.json +++ /dev/null @@ -1,4 +0,0 @@ -{ - "pagination": { - } -} diff --git a/workshops/monte-carlo-on-ec2-spot-fleet/src/web/node_modules/aws-sdk/apis/cloudhsmv2-2017-04-28.examples.json b/workshops/monte-carlo-on-ec2-spot-fleet/src/web/node_modules/aws-sdk/apis/cloudhsmv2-2017-04-28.examples.json deleted file mode 100644 index 0ea7e3b0..00000000 --- a/workshops/monte-carlo-on-ec2-spot-fleet/src/web/node_modules/aws-sdk/apis/cloudhsmv2-2017-04-28.examples.json +++ /dev/null @@ -1,5 +0,0 @@ -{ - "version": "1.0", - "examples": { - } -} diff --git a/workshops/monte-carlo-on-ec2-spot-fleet/src/web/node_modules/aws-sdk/apis/cloudhsmv2-2017-04-28.min.json b/workshops/monte-carlo-on-ec2-spot-fleet/src/web/node_modules/aws-sdk/apis/cloudhsmv2-2017-04-28.min.json deleted file mode 100644 index d1c09568..00000000 --- a/workshops/monte-carlo-on-ec2-spot-fleet/src/web/node_modules/aws-sdk/apis/cloudhsmv2-2017-04-28.min.json +++ /dev/null @@ -1,332 +0,0 @@ -{ - "version": "2.0", - "metadata": { - "apiVersion": "2017-04-28", - "endpointPrefix": "cloudhsmv2", - "jsonVersion": "1.1", - "protocol": "json", - "serviceAbbreviation": "CloudHSM V2", - "serviceFullName": "AWS CloudHSM V2", - "signatureVersion": "v4", - "signingName": "cloudhsm", - "targetPrefix": "BaldrApiService", - "uid": "cloudhsmv2-2017-04-28" - }, - "operations": { - "CreateCluster": { - "input": { - "type": "structure", - "required": [ - "SubnetIds", - "HsmType" - ], - "members": { - "SubnetIds": { - "type": "list", - "member": {} - }, - "HsmType": {}, - "SourceBackupId": {} - } - }, - "output": { - "type": "structure", - "members": { - "Cluster": { - "shape": "S7" - } - } - } - }, - "CreateHsm": { - "input": { - "type": "structure", - "required": [ - "ClusterId", - "AvailabilityZone" - ], - "members": { - "ClusterId": {}, - "AvailabilityZone": {}, - "IpAddress": {} - } - }, - "output": { - "type": "structure", - "members": { - "Hsm": { - "shape": "Sc" - } - } - } - }, - "DeleteCluster": { - "input": { - "type": "structure", - "required": [ - "ClusterId" - ], - "members": { - "ClusterId": {} - } - }, - "output": { - "type": "structure", - "members": { - "Cluster": { - "shape": "S7" - } - } - } - }, - "DeleteHsm": { - "input": { - "type": "structure", - "required": [ - "ClusterId" - ], - "members": { - "ClusterId": {}, - "HsmId": {}, - "EniId": {}, - "EniIp": {} - } - }, - "output": { - "type": "structure", - "members": { - "HsmId": {} - } - } - }, - "DescribeBackups": { - "input": { - "type": "structure", - "members": { - "NextToken": {}, - "MaxResults": { - "type": "integer" - }, - "Filters": { - "shape": "S10" - } - } - }, - "output": { - "type": "structure", - "members": { - "Backups": { - "type": "list", - "member": { - "type": "structure", - "required": [ - "BackupId" - ], - "members": { - "BackupId": {}, - "BackupState": {}, - "ClusterId": {}, - "CreateTimestamp": { - "type": "timestamp" - } - } - } - }, - "NextToken": {} - } - } - }, - "DescribeClusters": { - "input": { - "type": "structure", - "members": { - "Filters": { - "shape": "S10" - }, - "NextToken": {}, - "MaxResults": { - "type": "integer" - } - } - }, - "output": { - "type": "structure", - "members": { - "Clusters": { - "type": "list", - "member": { - "shape": "S7" - } - }, - "NextToken": {} - } - } - }, - "InitializeCluster": { - "input": { - "type": "structure", - "required": [ - "ClusterId", - "SignedCert", - "TrustAnchor" - ], - "members": { - "ClusterId": {}, - "SignedCert": {}, - "TrustAnchor": {} - } - }, - "output": { - "type": "structure", - "members": { - "State": {}, - "StateMessage": {} - } - } - }, - "ListTags": { - "input": { - "type": "structure", - "required": [ - "ResourceId" - ], - "members": { - "ResourceId": {}, - "NextToken": {}, - "MaxResults": { - "type": "integer" - } - } - }, - "output": { - "type": "structure", - "required": [ - "TagList" - ], - "members": { - "TagList": { - "shape": "S1e" - }, - "NextToken": {} - } - } - }, - "TagResource": { - "input": { - "type": "structure", - "required": [ - "ResourceId", - "TagList" - ], - "members": { - "ResourceId": {}, - "TagList": { - "shape": "S1e" - } - } - }, - "output": { - "type": "structure", - "members": {} - } - }, - "UntagResource": { - "input": { - "type": "structure", - "required": [ - "ResourceId", - "TagKeyList" - ], - "members": { - "ResourceId": {}, - "TagKeyList": { - "type": "list", - "member": {} - } - } - }, - "output": { - "type": "structure", - "members": {} - } - } - }, - "shapes": { - "S7": { - "type": "structure", - "members": { - "BackupPolicy": {}, - "ClusterId": {}, - "CreateTimestamp": { - "type": "timestamp" - }, - "Hsms": { - "type": "list", - "member": { - "shape": "Sc" - } - }, - "HsmType": {}, - "PreCoPassword": {}, - "SecurityGroup": {}, - "SourceBackupId": {}, - "State": {}, - "StateMessage": {}, - "SubnetMapping": { - "type": "map", - "key": {}, - "value": {} - }, - "VpcId": {}, - "Certificates": { - "type": "structure", - "members": { - "ClusterCsr": {}, - "HsmCertificate": {}, - "AwsHardwareCertificate": {}, - "ManufacturerHardwareCertificate": {}, - "ClusterCertificate": {} - } - } - } - }, - "Sc": { - "type": "structure", - "required": [ - "HsmId" - ], - "members": { - "AvailabilityZone": {}, - "ClusterId": {}, - "SubnetId": {}, - "EniId": {}, - "EniIp": {}, - "HsmId": {}, - "State": {}, - "StateMessage": {} - } - }, - "S10": { - "type": "map", - "key": {}, - "value": { - "type": "list", - "member": {} - } - }, - "S1e": { - "type": "list", - "member": { - "type": "structure", - "required": [ - "Key", - "Value" - ], - "members": { - "Key": {}, - "Value": {} - } - } - } - } -} \ No newline at end of file diff --git a/workshops/monte-carlo-on-ec2-spot-fleet/src/web/node_modules/aws-sdk/apis/cloudhsmv2-2017-04-28.paginators.json b/workshops/monte-carlo-on-ec2-spot-fleet/src/web/node_modules/aws-sdk/apis/cloudhsmv2-2017-04-28.paginators.json deleted file mode 100644 index c0e07e74..00000000 --- a/workshops/monte-carlo-on-ec2-spot-fleet/src/web/node_modules/aws-sdk/apis/cloudhsmv2-2017-04-28.paginators.json +++ /dev/null @@ -1,19 +0,0 @@ -{ - "pagination": { - "DescribeBackups": { - "input_token": "NextToken", - "output_token": "NextToken", - "limit_key": "MaxResults" - }, - "DescribeClusters": { - "input_token": "NextToken", - "output_token": "NextToken", - "limit_key": "MaxResults" - }, - "ListTags": { - "input_token": "NextToken", - "output_token": "NextToken", - "limit_key": "MaxResults" - } - } -} diff --git a/workshops/monte-carlo-on-ec2-spot-fleet/src/web/node_modules/aws-sdk/apis/cloudsearch-2011-02-01.min.json b/workshops/monte-carlo-on-ec2-spot-fleet/src/web/node_modules/aws-sdk/apis/cloudsearch-2011-02-01.min.json deleted file mode 100644 index 5db90f23..00000000 --- a/workshops/monte-carlo-on-ec2-spot-fleet/src/web/node_modules/aws-sdk/apis/cloudsearch-2011-02-01.min.json +++ /dev/null @@ -1,837 +0,0 @@ -{ - "metadata": { - "apiVersion": "2011-02-01", - "endpointPrefix": "cloudsearch", - "serviceFullName": "Amazon CloudSearch", - "signatureVersion": "v4", - "xmlNamespace": "http://cloudsearch.amazonaws.com/doc/2011-02-01/", - "protocol": "query" - }, - "operations": { - "CreateDomain": { - "input": { - "type": "structure", - "required": [ - "DomainName" - ], - "members": { - "DomainName": {} - } - }, - "output": { - "resultWrapper": "CreateDomainResult", - "type": "structure", - "members": { - "DomainStatus": { - "shape": "S4" - } - } - } - }, - "DefineIndexField": { - "input": { - "type": "structure", - "required": [ - "DomainName", - "IndexField" - ], - "members": { - "DomainName": {}, - "IndexField": { - "shape": "Sf" - } - } - }, - "output": { - "resultWrapper": "DefineIndexFieldResult", - "type": "structure", - "required": [ - "IndexField" - ], - "members": { - "IndexField": { - "shape": "Sx" - } - } - } - }, - "DefineRankExpression": { - "input": { - "type": "structure", - "required": [ - "DomainName", - "RankExpression" - ], - "members": { - "DomainName": {}, - "RankExpression": { - "shape": "S12" - } - } - }, - "output": { - "resultWrapper": "DefineRankExpressionResult", - "type": "structure", - "required": [ - "RankExpression" - ], - "members": { - "RankExpression": { - "shape": "S15" - } - } - } - }, - "DeleteDomain": { - "input": { - "type": "structure", - "required": [ - "DomainName" - ], - "members": { - "DomainName": {} - } - }, - "output": { - "resultWrapper": "DeleteDomainResult", - "type": "structure", - "members": { - "DomainStatus": { - "shape": "S4" - } - } - } - }, - "DeleteIndexField": { - "input": { - "type": "structure", - "required": [ - "DomainName", - "IndexFieldName" - ], - "members": { - "DomainName": {}, - "IndexFieldName": {} - } - }, - "output": { - "resultWrapper": "DeleteIndexFieldResult", - "type": "structure", - "required": [ - "IndexField" - ], - "members": { - "IndexField": { - "shape": "Sx" - } - } - } - }, - "DeleteRankExpression": { - "input": { - "type": "structure", - "required": [ - "DomainName", - "RankName" - ], - "members": { - "DomainName": {}, - "RankName": {} - } - }, - "output": { - "resultWrapper": "DeleteRankExpressionResult", - "type": "structure", - "required": [ - "RankExpression" - ], - "members": { - "RankExpression": { - "shape": "S15" - } - } - } - }, - "DescribeAvailabilityOptions": { - "input": { - "type": "structure", - "required": [ - "DomainName" - ], - "members": { - "DomainName": {} - } - }, - "output": { - "resultWrapper": "DescribeAvailabilityOptionsResult", - "type": "structure", - "members": { - "AvailabilityOptions": { - "shape": "S1e" - } - } - } - }, - "DescribeDefaultSearchField": { - "input": { - "type": "structure", - "required": [ - "DomainName" - ], - "members": { - "DomainName": {} - } - }, - "output": { - "resultWrapper": "DescribeDefaultSearchFieldResult", - "type": "structure", - "required": [ - "DefaultSearchField" - ], - "members": { - "DefaultSearchField": { - "shape": "S1i" - } - } - } - }, - "DescribeDomains": { - "input": { - "type": "structure", - "members": { - "DomainNames": { - "type": "list", - "member": {} - } - } - }, - "output": { - "resultWrapper": "DescribeDomainsResult", - "type": "structure", - "required": [ - "DomainStatusList" - ], - "members": { - "DomainStatusList": { - "type": "list", - "member": { - "shape": "S4" - } - } - } - } - }, - "DescribeIndexFields": { - "input": { - "type": "structure", - "required": [ - "DomainName" - ], - "members": { - "DomainName": {}, - "FieldNames": { - "shape": "S1o" - } - } - }, - "output": { - "resultWrapper": "DescribeIndexFieldsResult", - "type": "structure", - "required": [ - "IndexFields" - ], - "members": { - "IndexFields": { - "type": "list", - "member": { - "shape": "Sx" - } - } - } - } - }, - "DescribeRankExpressions": { - "input": { - "type": "structure", - "required": [ - "DomainName" - ], - "members": { - "DomainName": {}, - "RankNames": { - "shape": "S1o" - } - } - }, - "output": { - "resultWrapper": "DescribeRankExpressionsResult", - "type": "structure", - "required": [ - "RankExpressions" - ], - "members": { - "RankExpressions": { - "type": "list", - "member": { - "shape": "S15" - } - } - } - } - }, - "DescribeServiceAccessPolicies": { - "input": { - "type": "structure", - "required": [ - "DomainName" - ], - "members": { - "DomainName": {} - } - }, - "output": { - "resultWrapper": "DescribeServiceAccessPoliciesResult", - "type": "structure", - "required": [ - "AccessPolicies" - ], - "members": { - "AccessPolicies": { - "shape": "S1w" - } - } - } - }, - "DescribeStemmingOptions": { - "input": { - "type": "structure", - "required": [ - "DomainName" - ], - "members": { - "DomainName": {} - } - }, - "output": { - "resultWrapper": "DescribeStemmingOptionsResult", - "type": "structure", - "required": [ - "Stems" - ], - "members": { - "Stems": { - "shape": "S20" - } - } - } - }, - "DescribeStopwordOptions": { - "input": { - "type": "structure", - "required": [ - "DomainName" - ], - "members": { - "DomainName": {} - } - }, - "output": { - "resultWrapper": "DescribeStopwordOptionsResult", - "type": "structure", - "required": [ - "Stopwords" - ], - "members": { - "Stopwords": { - "shape": "S24" - } - } - } - }, - "DescribeSynonymOptions": { - "input": { - "type": "structure", - "required": [ - "DomainName" - ], - "members": { - "DomainName": {} - } - }, - "output": { - "resultWrapper": "DescribeSynonymOptionsResult", - "type": "structure", - "required": [ - "Synonyms" - ], - "members": { - "Synonyms": { - "shape": "S28" - } - } - } - }, - "IndexDocuments": { - "input": { - "type": "structure", - "required": [ - "DomainName" - ], - "members": { - "DomainName": {} - } - }, - "output": { - "resultWrapper": "IndexDocumentsResult", - "type": "structure", - "members": { - "FieldNames": { - "shape": "S1o" - } - } - } - }, - "UpdateAvailabilityOptions": { - "input": { - "type": "structure", - "required": [ - "DomainName", - "MultiAZ" - ], - "members": { - "DomainName": {}, - "MultiAZ": { - "type": "boolean" - } - } - }, - "output": { - "resultWrapper": "UpdateAvailabilityOptionsResult", - "type": "structure", - "members": { - "AvailabilityOptions": { - "shape": "S1e" - } - } - } - }, - "UpdateDefaultSearchField": { - "input": { - "type": "structure", - "required": [ - "DomainName", - "DefaultSearchField" - ], - "members": { - "DomainName": {}, - "DefaultSearchField": {} - } - }, - "output": { - "resultWrapper": "UpdateDefaultSearchFieldResult", - "type": "structure", - "required": [ - "DefaultSearchField" - ], - "members": { - "DefaultSearchField": { - "shape": "S1i" - } - } - } - }, - "UpdateServiceAccessPolicies": { - "input": { - "type": "structure", - "required": [ - "DomainName", - "AccessPolicies" - ], - "members": { - "DomainName": {}, - "AccessPolicies": {} - } - }, - "output": { - "resultWrapper": "UpdateServiceAccessPoliciesResult", - "type": "structure", - "required": [ - "AccessPolicies" - ], - "members": { - "AccessPolicies": { - "shape": "S1w" - } - } - } - }, - "UpdateStemmingOptions": { - "input": { - "type": "structure", - "required": [ - "DomainName", - "Stems" - ], - "members": { - "DomainName": {}, - "Stems": {} - } - }, - "output": { - "resultWrapper": "UpdateStemmingOptionsResult", - "type": "structure", - "required": [ - "Stems" - ], - "members": { - "Stems": { - "shape": "S20" - } - } - } - }, - "UpdateStopwordOptions": { - "input": { - "type": "structure", - "required": [ - "DomainName", - "Stopwords" - ], - "members": { - "DomainName": {}, - "Stopwords": {} - } - }, - "output": { - "resultWrapper": "UpdateStopwordOptionsResult", - "type": "structure", - "required": [ - "Stopwords" - ], - "members": { - "Stopwords": { - "shape": "S24" - } - } - } - }, - "UpdateSynonymOptions": { - "input": { - "type": "structure", - "required": [ - "DomainName", - "Synonyms" - ], - "members": { - "DomainName": {}, - "Synonyms": {} - } - }, - "output": { - "resultWrapper": "UpdateSynonymOptionsResult", - "type": "structure", - "required": [ - "Synonyms" - ], - "members": { - "Synonyms": { - "shape": "S28" - } - } - } - } - }, - "shapes": { - "S4": { - "type": "structure", - "required": [ - "DomainId", - "DomainName", - "RequiresIndexDocuments" - ], - "members": { - "DomainId": {}, - "DomainName": {}, - "Created": { - "type": "boolean" - }, - "Deleted": { - "type": "boolean" - }, - "NumSearchableDocs": { - "type": "long" - }, - "DocService": { - "shape": "S8" - }, - "SearchService": { - "shape": "S8" - }, - "RequiresIndexDocuments": { - "type": "boolean" - }, - "Processing": { - "type": "boolean" - }, - "SearchInstanceType": {}, - "SearchPartitionCount": { - "type": "integer" - }, - "SearchInstanceCount": { - "type": "integer" - } - } - }, - "S8": { - "type": "structure", - "members": { - "Arn": {}, - "Endpoint": {} - } - }, - "Sf": { - "type": "structure", - "required": [ - "IndexFieldName", - "IndexFieldType" - ], - "members": { - "IndexFieldName": {}, - "IndexFieldType": {}, - "UIntOptions": { - "type": "structure", - "members": { - "DefaultValue": { - "type": "integer" - } - } - }, - "LiteralOptions": { - "type": "structure", - "members": { - "DefaultValue": {}, - "SearchEnabled": { - "type": "boolean" - }, - "FacetEnabled": { - "type": "boolean" - }, - "ResultEnabled": { - "type": "boolean" - } - } - }, - "TextOptions": { - "type": "structure", - "members": { - "DefaultValue": {}, - "FacetEnabled": { - "type": "boolean" - }, - "ResultEnabled": { - "type": "boolean" - }, - "TextProcessor": {} - } - }, - "SourceAttributes": { - "type": "list", - "member": { - "type": "structure", - "required": [ - "SourceDataFunction" - ], - "members": { - "SourceDataFunction": {}, - "SourceDataCopy": { - "type": "structure", - "required": [ - "SourceName" - ], - "members": { - "SourceName": {}, - "DefaultValue": {} - } - }, - "SourceDataTrimTitle": { - "type": "structure", - "required": [ - "SourceName" - ], - "members": { - "SourceName": {}, - "DefaultValue": {}, - "Separator": {}, - "Language": {} - } - }, - "SourceDataMap": { - "type": "structure", - "required": [ - "SourceName" - ], - "members": { - "SourceName": {}, - "DefaultValue": {}, - "Cases": { - "type": "map", - "key": {}, - "value": {} - } - } - } - } - } - } - } - }, - "Sx": { - "type": "structure", - "required": [ - "Options", - "Status" - ], - "members": { - "Options": { - "shape": "Sf" - }, - "Status": { - "shape": "Sy" - } - } - }, - "Sy": { - "type": "structure", - "required": [ - "CreationDate", - "UpdateDate", - "State" - ], - "members": { - "CreationDate": { - "type": "timestamp" - }, - "UpdateDate": { - "type": "timestamp" - }, - "UpdateVersion": { - "type": "integer" - }, - "State": {}, - "PendingDeletion": { - "type": "boolean" - } - } - }, - "S12": { - "type": "structure", - "required": [ - "RankName", - "RankExpression" - ], - "members": { - "RankName": {}, - "RankExpression": {} - } - }, - "S15": { - "type": "structure", - "required": [ - "Options", - "Status" - ], - "members": { - "Options": { - "shape": "S12" - }, - "Status": { - "shape": "Sy" - } - } - }, - "S1e": { - "type": "structure", - "required": [ - "Options", - "Status" - ], - "members": { - "Options": { - "type": "boolean" - }, - "Status": { - "shape": "Sy" - } - } - }, - "S1i": { - "type": "structure", - "required": [ - "Options", - "Status" - ], - "members": { - "Options": {}, - "Status": { - "shape": "Sy" - } - } - }, - "S1o": { - "type": "list", - "member": {} - }, - "S1w": { - "type": "structure", - "required": [ - "Options", - "Status" - ], - "members": { - "Options": {}, - "Status": { - "shape": "Sy" - } - } - }, - "S20": { - "type": "structure", - "required": [ - "Options", - "Status" - ], - "members": { - "Options": {}, - "Status": { - "shape": "Sy" - } - } - }, - "S24": { - "type": "structure", - "required": [ - "Options", - "Status" - ], - "members": { - "Options": {}, - "Status": { - "shape": "Sy" - } - } - }, - "S28": { - "type": "structure", - "required": [ - "Options", - "Status" - ], - "members": { - "Options": {}, - "Status": { - "shape": "Sy" - } - } - } - } -} \ No newline at end of file diff --git a/workshops/monte-carlo-on-ec2-spot-fleet/src/web/node_modules/aws-sdk/apis/cloudsearch-2011-02-01.paginators.json b/workshops/monte-carlo-on-ec2-spot-fleet/src/web/node_modules/aws-sdk/apis/cloudsearch-2011-02-01.paginators.json deleted file mode 100644 index 52164452..00000000 --- a/workshops/monte-carlo-on-ec2-spot-fleet/src/web/node_modules/aws-sdk/apis/cloudsearch-2011-02-01.paginators.json +++ /dev/null @@ -1,13 +0,0 @@ -{ - "pagination": { - "DescribeDomains": { - "result_key": "DomainStatusList" - }, - "DescribeIndexFields": { - "result_key": "IndexFields" - }, - "DescribeRankExpressions": { - "result_key": "RankExpressions" - } - } -} diff --git a/workshops/monte-carlo-on-ec2-spot-fleet/src/web/node_modules/aws-sdk/apis/cloudsearch-2013-01-01.min.json b/workshops/monte-carlo-on-ec2-spot-fleet/src/web/node_modules/aws-sdk/apis/cloudsearch-2013-01-01.min.json deleted file mode 100644 index b41f738e..00000000 --- a/workshops/monte-carlo-on-ec2-spot-fleet/src/web/node_modules/aws-sdk/apis/cloudsearch-2013-01-01.min.json +++ /dev/null @@ -1,1087 +0,0 @@ -{ - "version": "2.0", - "metadata": { - "apiVersion": "2013-01-01", - "endpointPrefix": "cloudsearch", - "serviceFullName": "Amazon CloudSearch", - "signatureVersion": "v4", - "xmlNamespace": "http://cloudsearch.amazonaws.com/doc/2013-01-01/", - "protocol": "query", - "uid": "cloudsearch-2013-01-01" - }, - "operations": { - "BuildSuggesters": { - "input": { - "type": "structure", - "required": [ - "DomainName" - ], - "members": { - "DomainName": {} - } - }, - "output": { - "resultWrapper": "BuildSuggestersResult", - "type": "structure", - "members": { - "FieldNames": { - "shape": "S4" - } - } - } - }, - "CreateDomain": { - "input": { - "type": "structure", - "required": [ - "DomainName" - ], - "members": { - "DomainName": {} - } - }, - "output": { - "resultWrapper": "CreateDomainResult", - "type": "structure", - "members": { - "DomainStatus": { - "shape": "S8" - } - } - } - }, - "DefineAnalysisScheme": { - "input": { - "type": "structure", - "required": [ - "DomainName", - "AnalysisScheme" - ], - "members": { - "DomainName": {}, - "AnalysisScheme": { - "shape": "Sl" - } - } - }, - "output": { - "resultWrapper": "DefineAnalysisSchemeResult", - "type": "structure", - "required": [ - "AnalysisScheme" - ], - "members": { - "AnalysisScheme": { - "shape": "Ss" - } - } - } - }, - "DefineExpression": { - "input": { - "type": "structure", - "required": [ - "DomainName", - "Expression" - ], - "members": { - "DomainName": {}, - "Expression": { - "shape": "Sy" - } - } - }, - "output": { - "resultWrapper": "DefineExpressionResult", - "type": "structure", - "required": [ - "Expression" - ], - "members": { - "Expression": { - "shape": "S11" - } - } - } - }, - "DefineIndexField": { - "input": { - "type": "structure", - "required": [ - "DomainName", - "IndexField" - ], - "members": { - "DomainName": {}, - "IndexField": { - "shape": "S13" - } - } - }, - "output": { - "resultWrapper": "DefineIndexFieldResult", - "type": "structure", - "required": [ - "IndexField" - ], - "members": { - "IndexField": { - "shape": "S1n" - } - } - } - }, - "DefineSuggester": { - "input": { - "type": "structure", - "required": [ - "DomainName", - "Suggester" - ], - "members": { - "DomainName": {}, - "Suggester": { - "shape": "S1p" - } - } - }, - "output": { - "resultWrapper": "DefineSuggesterResult", - "type": "structure", - "required": [ - "Suggester" - ], - "members": { - "Suggester": { - "shape": "S1t" - } - } - } - }, - "DeleteAnalysisScheme": { - "input": { - "type": "structure", - "required": [ - "DomainName", - "AnalysisSchemeName" - ], - "members": { - "DomainName": {}, - "AnalysisSchemeName": {} - } - }, - "output": { - "resultWrapper": "DeleteAnalysisSchemeResult", - "type": "structure", - "required": [ - "AnalysisScheme" - ], - "members": { - "AnalysisScheme": { - "shape": "Ss" - } - } - } - }, - "DeleteDomain": { - "input": { - "type": "structure", - "required": [ - "DomainName" - ], - "members": { - "DomainName": {} - } - }, - "output": { - "resultWrapper": "DeleteDomainResult", - "type": "structure", - "members": { - "DomainStatus": { - "shape": "S8" - } - } - } - }, - "DeleteExpression": { - "input": { - "type": "structure", - "required": [ - "DomainName", - "ExpressionName" - ], - "members": { - "DomainName": {}, - "ExpressionName": {} - } - }, - "output": { - "resultWrapper": "DeleteExpressionResult", - "type": "structure", - "required": [ - "Expression" - ], - "members": { - "Expression": { - "shape": "S11" - } - } - } - }, - "DeleteIndexField": { - "input": { - "type": "structure", - "required": [ - "DomainName", - "IndexFieldName" - ], - "members": { - "DomainName": {}, - "IndexFieldName": {} - } - }, - "output": { - "resultWrapper": "DeleteIndexFieldResult", - "type": "structure", - "required": [ - "IndexField" - ], - "members": { - "IndexField": { - "shape": "S1n" - } - } - } - }, - "DeleteSuggester": { - "input": { - "type": "structure", - "required": [ - "DomainName", - "SuggesterName" - ], - "members": { - "DomainName": {}, - "SuggesterName": {} - } - }, - "output": { - "resultWrapper": "DeleteSuggesterResult", - "type": "structure", - "required": [ - "Suggester" - ], - "members": { - "Suggester": { - "shape": "S1t" - } - } - } - }, - "DescribeAnalysisSchemes": { - "input": { - "type": "structure", - "required": [ - "DomainName" - ], - "members": { - "DomainName": {}, - "AnalysisSchemeNames": { - "shape": "S25" - }, - "Deployed": { - "type": "boolean" - } - } - }, - "output": { - "resultWrapper": "DescribeAnalysisSchemesResult", - "type": "structure", - "required": [ - "AnalysisSchemes" - ], - "members": { - "AnalysisSchemes": { - "type": "list", - "member": { - "shape": "Ss" - } - } - } - } - }, - "DescribeAvailabilityOptions": { - "input": { - "type": "structure", - "required": [ - "DomainName" - ], - "members": { - "DomainName": {}, - "Deployed": { - "type": "boolean" - } - } - }, - "output": { - "resultWrapper": "DescribeAvailabilityOptionsResult", - "type": "structure", - "members": { - "AvailabilityOptions": { - "shape": "S2a" - } - } - } - }, - "DescribeDomains": { - "input": { - "type": "structure", - "members": { - "DomainNames": { - "type": "list", - "member": {} - } - } - }, - "output": { - "resultWrapper": "DescribeDomainsResult", - "type": "structure", - "required": [ - "DomainStatusList" - ], - "members": { - "DomainStatusList": { - "type": "list", - "member": { - "shape": "S8" - } - } - } - } - }, - "DescribeExpressions": { - "input": { - "type": "structure", - "required": [ - "DomainName" - ], - "members": { - "DomainName": {}, - "ExpressionNames": { - "shape": "S25" - }, - "Deployed": { - "type": "boolean" - } - } - }, - "output": { - "resultWrapper": "DescribeExpressionsResult", - "type": "structure", - "required": [ - "Expressions" - ], - "members": { - "Expressions": { - "type": "list", - "member": { - "shape": "S11" - } - } - } - } - }, - "DescribeIndexFields": { - "input": { - "type": "structure", - "required": [ - "DomainName" - ], - "members": { - "DomainName": {}, - "FieldNames": { - "type": "list", - "member": {} - }, - "Deployed": { - "type": "boolean" - } - } - }, - "output": { - "resultWrapper": "DescribeIndexFieldsResult", - "type": "structure", - "required": [ - "IndexFields" - ], - "members": { - "IndexFields": { - "type": "list", - "member": { - "shape": "S1n" - } - } - } - } - }, - "DescribeScalingParameters": { - "input": { - "type": "structure", - "required": [ - "DomainName" - ], - "members": { - "DomainName": {} - } - }, - "output": { - "resultWrapper": "DescribeScalingParametersResult", - "type": "structure", - "required": [ - "ScalingParameters" - ], - "members": { - "ScalingParameters": { - "shape": "S2p" - } - } - } - }, - "DescribeServiceAccessPolicies": { - "input": { - "type": "structure", - "required": [ - "DomainName" - ], - "members": { - "DomainName": {}, - "Deployed": { - "type": "boolean" - } - } - }, - "output": { - "resultWrapper": "DescribeServiceAccessPoliciesResult", - "type": "structure", - "required": [ - "AccessPolicies" - ], - "members": { - "AccessPolicies": { - "shape": "S2u" - } - } - } - }, - "DescribeSuggesters": { - "input": { - "type": "structure", - "required": [ - "DomainName" - ], - "members": { - "DomainName": {}, - "SuggesterNames": { - "shape": "S25" - }, - "Deployed": { - "type": "boolean" - } - } - }, - "output": { - "resultWrapper": "DescribeSuggestersResult", - "type": "structure", - "required": [ - "Suggesters" - ], - "members": { - "Suggesters": { - "type": "list", - "member": { - "shape": "S1t" - } - } - } - } - }, - "IndexDocuments": { - "input": { - "type": "structure", - "required": [ - "DomainName" - ], - "members": { - "DomainName": {} - } - }, - "output": { - "resultWrapper": "IndexDocumentsResult", - "type": "structure", - "members": { - "FieldNames": { - "shape": "S4" - } - } - } - }, - "ListDomainNames": { - "output": { - "resultWrapper": "ListDomainNamesResult", - "type": "structure", - "members": { - "DomainNames": { - "type": "map", - "key": {}, - "value": {} - } - } - } - }, - "UpdateAvailabilityOptions": { - "input": { - "type": "structure", - "required": [ - "DomainName", - "MultiAZ" - ], - "members": { - "DomainName": {}, - "MultiAZ": { - "type": "boolean" - } - } - }, - "output": { - "resultWrapper": "UpdateAvailabilityOptionsResult", - "type": "structure", - "members": { - "AvailabilityOptions": { - "shape": "S2a" - } - } - } - }, - "UpdateScalingParameters": { - "input": { - "type": "structure", - "required": [ - "DomainName", - "ScalingParameters" - ], - "members": { - "DomainName": {}, - "ScalingParameters": { - "shape": "S2q" - } - } - }, - "output": { - "resultWrapper": "UpdateScalingParametersResult", - "type": "structure", - "required": [ - "ScalingParameters" - ], - "members": { - "ScalingParameters": { - "shape": "S2p" - } - } - } - }, - "UpdateServiceAccessPolicies": { - "input": { - "type": "structure", - "required": [ - "DomainName", - "AccessPolicies" - ], - "members": { - "DomainName": {}, - "AccessPolicies": {} - } - }, - "output": { - "resultWrapper": "UpdateServiceAccessPoliciesResult", - "type": "structure", - "required": [ - "AccessPolicies" - ], - "members": { - "AccessPolicies": { - "shape": "S2u" - } - } - } - } - }, - "shapes": { - "S4": { - "type": "list", - "member": {} - }, - "S8": { - "type": "structure", - "required": [ - "DomainId", - "DomainName", - "RequiresIndexDocuments" - ], - "members": { - "DomainId": {}, - "DomainName": {}, - "ARN": {}, - "Created": { - "type": "boolean" - }, - "Deleted": { - "type": "boolean" - }, - "DocService": { - "shape": "Sc" - }, - "SearchService": { - "shape": "Sc" - }, - "RequiresIndexDocuments": { - "type": "boolean" - }, - "Processing": { - "type": "boolean" - }, - "SearchInstanceType": {}, - "SearchPartitionCount": { - "type": "integer" - }, - "SearchInstanceCount": { - "type": "integer" - }, - "Limits": { - "type": "structure", - "required": [ - "MaximumReplicationCount", - "MaximumPartitionCount" - ], - "members": { - "MaximumReplicationCount": { - "type": "integer" - }, - "MaximumPartitionCount": { - "type": "integer" - } - } - } - } - }, - "Sc": { - "type": "structure", - "members": { - "Endpoint": {} - } - }, - "Sl": { - "type": "structure", - "required": [ - "AnalysisSchemeName", - "AnalysisSchemeLanguage" - ], - "members": { - "AnalysisSchemeName": {}, - "AnalysisSchemeLanguage": {}, - "AnalysisOptions": { - "type": "structure", - "members": { - "Synonyms": {}, - "Stopwords": {}, - "StemmingDictionary": {}, - "JapaneseTokenizationDictionary": {}, - "AlgorithmicStemming": {} - } - } - } - }, - "Ss": { - "type": "structure", - "required": [ - "Options", - "Status" - ], - "members": { - "Options": { - "shape": "Sl" - }, - "Status": { - "shape": "St" - } - } - }, - "St": { - "type": "structure", - "required": [ - "CreationDate", - "UpdateDate", - "State" - ], - "members": { - "CreationDate": { - "type": "timestamp" - }, - "UpdateDate": { - "type": "timestamp" - }, - "UpdateVersion": { - "type": "integer" - }, - "State": {}, - "PendingDeletion": { - "type": "boolean" - } - } - }, - "Sy": { - "type": "structure", - "required": [ - "ExpressionName", - "ExpressionValue" - ], - "members": { - "ExpressionName": {}, - "ExpressionValue": {} - } - }, - "S11": { - "type": "structure", - "required": [ - "Options", - "Status" - ], - "members": { - "Options": { - "shape": "Sy" - }, - "Status": { - "shape": "St" - } - } - }, - "S13": { - "type": "structure", - "required": [ - "IndexFieldName", - "IndexFieldType" - ], - "members": { - "IndexFieldName": {}, - "IndexFieldType": {}, - "IntOptions": { - "type": "structure", - "members": { - "DefaultValue": { - "type": "long" - }, - "SourceField": {}, - "FacetEnabled": { - "type": "boolean" - }, - "SearchEnabled": { - "type": "boolean" - }, - "ReturnEnabled": { - "type": "boolean" - }, - "SortEnabled": { - "type": "boolean" - } - } - }, - "DoubleOptions": { - "type": "structure", - "members": { - "DefaultValue": { - "type": "double" - }, - "SourceField": {}, - "FacetEnabled": { - "type": "boolean" - }, - "SearchEnabled": { - "type": "boolean" - }, - "ReturnEnabled": { - "type": "boolean" - }, - "SortEnabled": { - "type": "boolean" - } - } - }, - "LiteralOptions": { - "type": "structure", - "members": { - "DefaultValue": {}, - "SourceField": {}, - "FacetEnabled": { - "type": "boolean" - }, - "SearchEnabled": { - "type": "boolean" - }, - "ReturnEnabled": { - "type": "boolean" - }, - "SortEnabled": { - "type": "boolean" - } - } - }, - "TextOptions": { - "type": "structure", - "members": { - "DefaultValue": {}, - "SourceField": {}, - "ReturnEnabled": { - "type": "boolean" - }, - "SortEnabled": { - "type": "boolean" - }, - "HighlightEnabled": { - "type": "boolean" - }, - "AnalysisScheme": {} - } - }, - "DateOptions": { - "type": "structure", - "members": { - "DefaultValue": {}, - "SourceField": {}, - "FacetEnabled": { - "type": "boolean" - }, - "SearchEnabled": { - "type": "boolean" - }, - "ReturnEnabled": { - "type": "boolean" - }, - "SortEnabled": { - "type": "boolean" - } - } - }, - "LatLonOptions": { - "type": "structure", - "members": { - "DefaultValue": {}, - "SourceField": {}, - "FacetEnabled": { - "type": "boolean" - }, - "SearchEnabled": { - "type": "boolean" - }, - "ReturnEnabled": { - "type": "boolean" - }, - "SortEnabled": { - "type": "boolean" - } - } - }, - "IntArrayOptions": { - "type": "structure", - "members": { - "DefaultValue": { - "type": "long" - }, - "SourceFields": {}, - "FacetEnabled": { - "type": "boolean" - }, - "SearchEnabled": { - "type": "boolean" - }, - "ReturnEnabled": { - "type": "boolean" - } - } - }, - "DoubleArrayOptions": { - "type": "structure", - "members": { - "DefaultValue": { - "type": "double" - }, - "SourceFields": {}, - "FacetEnabled": { - "type": "boolean" - }, - "SearchEnabled": { - "type": "boolean" - }, - "ReturnEnabled": { - "type": "boolean" - } - } - }, - "LiteralArrayOptions": { - "type": "structure", - "members": { - "DefaultValue": {}, - "SourceFields": {}, - "FacetEnabled": { - "type": "boolean" - }, - "SearchEnabled": { - "type": "boolean" - }, - "ReturnEnabled": { - "type": "boolean" - } - } - }, - "TextArrayOptions": { - "type": "structure", - "members": { - "DefaultValue": {}, - "SourceFields": {}, - "ReturnEnabled": { - "type": "boolean" - }, - "HighlightEnabled": { - "type": "boolean" - }, - "AnalysisScheme": {} - } - }, - "DateArrayOptions": { - "type": "structure", - "members": { - "DefaultValue": {}, - "SourceFields": {}, - "FacetEnabled": { - "type": "boolean" - }, - "SearchEnabled": { - "type": "boolean" - }, - "ReturnEnabled": { - "type": "boolean" - } - } - } - } - }, - "S1n": { - "type": "structure", - "required": [ - "Options", - "Status" - ], - "members": { - "Options": { - "shape": "S13" - }, - "Status": { - "shape": "St" - } - } - }, - "S1p": { - "type": "structure", - "required": [ - "SuggesterName", - "DocumentSuggesterOptions" - ], - "members": { - "SuggesterName": {}, - "DocumentSuggesterOptions": { - "type": "structure", - "required": [ - "SourceField" - ], - "members": { - "SourceField": {}, - "FuzzyMatching": {}, - "SortExpression": {} - } - } - } - }, - "S1t": { - "type": "structure", - "required": [ - "Options", - "Status" - ], - "members": { - "Options": { - "shape": "S1p" - }, - "Status": { - "shape": "St" - } - } - }, - "S25": { - "type": "list", - "member": {} - }, - "S2a": { - "type": "structure", - "required": [ - "Options", - "Status" - ], - "members": { - "Options": { - "type": "boolean" - }, - "Status": { - "shape": "St" - } - } - }, - "S2p": { - "type": "structure", - "required": [ - "Options", - "Status" - ], - "members": { - "Options": { - "shape": "S2q" - }, - "Status": { - "shape": "St" - } - } - }, - "S2q": { - "type": "structure", - "members": { - "DesiredInstanceType": {}, - "DesiredReplicationCount": { - "type": "integer" - }, - "DesiredPartitionCount": { - "type": "integer" - } - } - }, - "S2u": { - "type": "structure", - "required": [ - "Options", - "Status" - ], - "members": { - "Options": {}, - "Status": { - "shape": "St" - } - } - } - } -} \ No newline at end of file diff --git a/workshops/monte-carlo-on-ec2-spot-fleet/src/web/node_modules/aws-sdk/apis/cloudsearch-2013-01-01.paginators.json b/workshops/monte-carlo-on-ec2-spot-fleet/src/web/node_modules/aws-sdk/apis/cloudsearch-2013-01-01.paginators.json deleted file mode 100644 index 82fa804a..00000000 --- a/workshops/monte-carlo-on-ec2-spot-fleet/src/web/node_modules/aws-sdk/apis/cloudsearch-2013-01-01.paginators.json +++ /dev/null @@ -1,20 +0,0 @@ -{ - "pagination": { - "DescribeAnalysisSchemes": { - "result_key": "AnalysisSchemes" - }, - "DescribeDomains": { - "result_key": "DomainStatusList" - }, - "DescribeExpressions": { - "result_key": "Expressions" - }, - "DescribeIndexFields": { - "result_key": "IndexFields" - }, - "DescribeSuggesters": { - "result_key": "Suggesters" - } - } -} - diff --git a/workshops/monte-carlo-on-ec2-spot-fleet/src/web/node_modules/aws-sdk/apis/cloudsearchdomain-2013-01-01.min.json b/workshops/monte-carlo-on-ec2-spot-fleet/src/web/node_modules/aws-sdk/apis/cloudsearchdomain-2013-01-01.min.json deleted file mode 100644 index 97f1b79c..00000000 --- a/workshops/monte-carlo-on-ec2-spot-fleet/src/web/node_modules/aws-sdk/apis/cloudsearchdomain-2013-01-01.min.json +++ /dev/null @@ -1,298 +0,0 @@ -{ - "version": "2.0", - "metadata": { - "apiVersion": "2013-01-01", - "endpointPrefix": "cloudsearchdomain", - "jsonVersion": "1.1", - "protocol": "rest-json", - "serviceFullName": "Amazon CloudSearch Domain", - "signatureVersion": "v4", - "signingName": "cloudsearch", - "uid": "cloudsearchdomain-2013-01-01" - }, - "operations": { - "Search": { - "http": { - "method": "GET", - "requestUri": "/2013-01-01/search?format=sdk&pretty=true" - }, - "input": { - "type": "structure", - "required": [ - "query" - ], - "members": { - "cursor": { - "location": "querystring", - "locationName": "cursor" - }, - "expr": { - "location": "querystring", - "locationName": "expr" - }, - "facet": { - "location": "querystring", - "locationName": "facet" - }, - "filterQuery": { - "location": "querystring", - "locationName": "fq" - }, - "highlight": { - "location": "querystring", - "locationName": "highlight" - }, - "partial": { - "location": "querystring", - "locationName": "partial", - "type": "boolean" - }, - "query": { - "location": "querystring", - "locationName": "q" - }, - "queryOptions": { - "location": "querystring", - "locationName": "q.options" - }, - "queryParser": { - "location": "querystring", - "locationName": "q.parser" - }, - "return": { - "location": "querystring", - "locationName": "return" - }, - "size": { - "location": "querystring", - "locationName": "size", - "type": "long" - }, - "sort": { - "location": "querystring", - "locationName": "sort" - }, - "start": { - "location": "querystring", - "locationName": "start", - "type": "long" - }, - "stats": { - "location": "querystring", - "locationName": "stats" - } - } - }, - "output": { - "type": "structure", - "members": { - "status": { - "type": "structure", - "members": { - "timems": { - "type": "long" - }, - "rid": {} - } - }, - "hits": { - "type": "structure", - "members": { - "found": { - "type": "long" - }, - "start": { - "type": "long" - }, - "cursor": {}, - "hit": { - "type": "list", - "member": { - "type": "structure", - "members": { - "id": {}, - "fields": { - "type": "map", - "key": {}, - "value": { - "type": "list", - "member": {} - } - }, - "exprs": { - "type": "map", - "key": {}, - "value": {} - }, - "highlights": { - "type": "map", - "key": {}, - "value": {} - } - } - } - } - } - }, - "facets": { - "type": "map", - "key": {}, - "value": { - "type": "structure", - "members": { - "buckets": { - "type": "list", - "member": { - "type": "structure", - "members": { - "value": {}, - "count": { - "type": "long" - } - } - } - } - } - } - }, - "stats": { - "type": "map", - "key": {}, - "value": { - "type": "structure", - "members": { - "min": {}, - "max": {}, - "count": { - "type": "long" - }, - "missing": { - "type": "long" - }, - "sum": { - "type": "double" - }, - "sumOfSquares": { - "type": "double" - }, - "mean": {}, - "stddev": { - "type": "double" - } - } - } - } - } - } - }, - "Suggest": { - "http": { - "method": "GET", - "requestUri": "/2013-01-01/suggest?format=sdk&pretty=true" - }, - "input": { - "type": "structure", - "required": [ - "query", - "suggester" - ], - "members": { - "query": { - "location": "querystring", - "locationName": "q" - }, - "suggester": { - "location": "querystring", - "locationName": "suggester" - }, - "size": { - "location": "querystring", - "locationName": "size", - "type": "long" - } - } - }, - "output": { - "type": "structure", - "members": { - "status": { - "type": "structure", - "members": { - "timems": { - "type": "long" - }, - "rid": {} - } - }, - "suggest": { - "type": "structure", - "members": { - "query": {}, - "found": { - "type": "long" - }, - "suggestions": { - "type": "list", - "member": { - "type": "structure", - "members": { - "suggestion": {}, - "score": { - "type": "long" - }, - "id": {} - } - } - } - } - } - } - } - }, - "UploadDocuments": { - "http": { - "requestUri": "/2013-01-01/documents/batch?format=sdk" - }, - "input": { - "type": "structure", - "required": [ - "documents", - "contentType" - ], - "members": { - "documents": { - "type": "blob", - "streaming": true - }, - "contentType": { - "location": "header", - "locationName": "Content-Type" - } - }, - "payload": "documents" - }, - "output": { - "type": "structure", - "members": { - "status": {}, - "adds": { - "type": "long" - }, - "deletes": { - "type": "long" - }, - "warnings": { - "type": "list", - "member": { - "type": "structure", - "members": { - "message": {} - } - } - } - } - } - } - }, - "shapes": {} -} \ No newline at end of file diff --git a/workshops/monte-carlo-on-ec2-spot-fleet/src/web/node_modules/aws-sdk/apis/cloudtrail-2013-11-01.min.json b/workshops/monte-carlo-on-ec2-spot-fleet/src/web/node_modules/aws-sdk/apis/cloudtrail-2013-11-01.min.json deleted file mode 100644 index cda9726d..00000000 --- a/workshops/monte-carlo-on-ec2-spot-fleet/src/web/node_modules/aws-sdk/apis/cloudtrail-2013-11-01.min.json +++ /dev/null @@ -1,530 +0,0 @@ -{ - "version": "2.0", - "metadata": { - "apiVersion": "2013-11-01", - "endpointPrefix": "cloudtrail", - "jsonVersion": "1.1", - "protocol": "json", - "serviceAbbreviation": "CloudTrail", - "serviceFullName": "AWS CloudTrail", - "signatureVersion": "v4", - "targetPrefix": "com.amazonaws.cloudtrail.v20131101.CloudTrail_20131101", - "uid": "cloudtrail-2013-11-01" - }, - "operations": { - "AddTags": { - "input": { - "type": "structure", - "required": [ - "ResourceId" - ], - "members": { - "ResourceId": {}, - "TagsList": { - "shape": "S3" - } - } - }, - "output": { - "type": "structure", - "members": {} - }, - "idempotent": true - }, - "CreateTrail": { - "input": { - "type": "structure", - "required": [ - "Name", - "S3BucketName" - ], - "members": { - "Name": {}, - "S3BucketName": {}, - "S3KeyPrefix": {}, - "SnsTopicName": {}, - "IncludeGlobalServiceEvents": { - "type": "boolean" - }, - "IsMultiRegionTrail": { - "type": "boolean" - }, - "EnableLogFileValidation": { - "type": "boolean" - }, - "CloudWatchLogsLogGroupArn": {}, - "CloudWatchLogsRoleArn": {}, - "KmsKeyId": {} - } - }, - "output": { - "type": "structure", - "members": { - "Name": {}, - "S3BucketName": {}, - "S3KeyPrefix": {}, - "SnsTopicName": { - "deprecated": true - }, - "SnsTopicARN": {}, - "IncludeGlobalServiceEvents": { - "type": "boolean" - }, - "IsMultiRegionTrail": { - "type": "boolean" - }, - "TrailARN": {}, - "LogFileValidationEnabled": { - "type": "boolean" - }, - "CloudWatchLogsLogGroupArn": {}, - "CloudWatchLogsRoleArn": {}, - "KmsKeyId": {} - } - }, - "idempotent": true - }, - "DeleteTrail": { - "input": { - "type": "structure", - "required": [ - "Name" - ], - "members": { - "Name": {} - } - }, - "output": { - "type": "structure", - "members": {} - }, - "idempotent": true - }, - "DescribeTrails": { - "input": { - "type": "structure", - "members": { - "trailNameList": { - "type": "list", - "member": {} - }, - "includeShadowTrails": { - "type": "boolean" - } - } - }, - "output": { - "type": "structure", - "members": { - "trailList": { - "type": "list", - "member": { - "type": "structure", - "members": { - "Name": {}, - "S3BucketName": {}, - "S3KeyPrefix": {}, - "SnsTopicName": { - "deprecated": true - }, - "SnsTopicARN": {}, - "IncludeGlobalServiceEvents": { - "type": "boolean" - }, - "IsMultiRegionTrail": { - "type": "boolean" - }, - "HomeRegion": {}, - "TrailARN": {}, - "LogFileValidationEnabled": { - "type": "boolean" - }, - "CloudWatchLogsLogGroupArn": {}, - "CloudWatchLogsRoleArn": {}, - "KmsKeyId": {}, - "HasCustomEventSelectors": { - "type": "boolean" - } - } - } - } - } - }, - "idempotent": true - }, - "GetEventSelectors": { - "input": { - "type": "structure", - "required": [ - "TrailName" - ], - "members": { - "TrailName": {} - } - }, - "output": { - "type": "structure", - "members": { - "TrailARN": {}, - "EventSelectors": { - "shape": "Si" - } - } - }, - "idempotent": true - }, - "GetTrailStatus": { - "input": { - "type": "structure", - "required": [ - "Name" - ], - "members": { - "Name": {} - } - }, - "output": { - "type": "structure", - "members": { - "IsLogging": { - "type": "boolean" - }, - "LatestDeliveryError": {}, - "LatestNotificationError": {}, - "LatestDeliveryTime": { - "type": "timestamp" - }, - "LatestNotificationTime": { - "type": "timestamp" - }, - "StartLoggingTime": { - "type": "timestamp" - }, - "StopLoggingTime": { - "type": "timestamp" - }, - "LatestCloudWatchLogsDeliveryError": {}, - "LatestCloudWatchLogsDeliveryTime": { - "type": "timestamp" - }, - "LatestDigestDeliveryTime": { - "type": "timestamp" - }, - "LatestDigestDeliveryError": {}, - "LatestDeliveryAttemptTime": {}, - "LatestNotificationAttemptTime": {}, - "LatestNotificationAttemptSucceeded": {}, - "LatestDeliveryAttemptSucceeded": {}, - "TimeLoggingStarted": {}, - "TimeLoggingStopped": {} - } - }, - "idempotent": true - }, - "ListPublicKeys": { - "input": { - "type": "structure", - "members": { - "StartTime": { - "type": "timestamp" - }, - "EndTime": { - "type": "timestamp" - }, - "NextToken": {} - } - }, - "output": { - "type": "structure", - "members": { - "PublicKeyList": { - "type": "list", - "member": { - "type": "structure", - "members": { - "Value": { - "type": "blob" - }, - "ValidityStartTime": { - "type": "timestamp" - }, - "ValidityEndTime": { - "type": "timestamp" - }, - "Fingerprint": {} - } - } - }, - "NextToken": {} - } - }, - "idempotent": true - }, - "ListTags": { - "input": { - "type": "structure", - "required": [ - "ResourceIdList" - ], - "members": { - "ResourceIdList": { - "type": "list", - "member": {} - }, - "NextToken": {} - } - }, - "output": { - "type": "structure", - "members": { - "ResourceTagList": { - "type": "list", - "member": { - "type": "structure", - "members": { - "ResourceId": {}, - "TagsList": { - "shape": "S3" - } - } - } - }, - "NextToken": {} - } - }, - "idempotent": true - }, - "LookupEvents": { - "input": { - "type": "structure", - "members": { - "LookupAttributes": { - "type": "list", - "member": { - "type": "structure", - "required": [ - "AttributeKey", - "AttributeValue" - ], - "members": { - "AttributeKey": {}, - "AttributeValue": {} - } - } - }, - "StartTime": { - "type": "timestamp" - }, - "EndTime": { - "type": "timestamp" - }, - "MaxResults": { - "type": "integer" - }, - "NextToken": {} - } - }, - "output": { - "type": "structure", - "members": { - "Events": { - "type": "list", - "member": { - "type": "structure", - "members": { - "EventId": {}, - "EventName": {}, - "EventTime": { - "type": "timestamp" - }, - "EventSource": {}, - "Username": {}, - "Resources": { - "type": "list", - "member": { - "type": "structure", - "members": { - "ResourceType": {}, - "ResourceName": {} - } - } - }, - "CloudTrailEvent": {} - } - } - }, - "NextToken": {} - } - }, - "idempotent": true - }, - "PutEventSelectors": { - "input": { - "type": "structure", - "required": [ - "TrailName", - "EventSelectors" - ], - "members": { - "TrailName": {}, - "EventSelectors": { - "shape": "Si" - } - } - }, - "output": { - "type": "structure", - "members": { - "TrailARN": {}, - "EventSelectors": { - "shape": "Si" - } - } - }, - "idempotent": true - }, - "RemoveTags": { - "input": { - "type": "structure", - "required": [ - "ResourceId" - ], - "members": { - "ResourceId": {}, - "TagsList": { - "shape": "S3" - } - } - }, - "output": { - "type": "structure", - "members": {} - }, - "idempotent": true - }, - "StartLogging": { - "input": { - "type": "structure", - "required": [ - "Name" - ], - "members": { - "Name": {} - } - }, - "output": { - "type": "structure", - "members": {} - }, - "idempotent": true - }, - "StopLogging": { - "input": { - "type": "structure", - "required": [ - "Name" - ], - "members": { - "Name": {} - } - }, - "output": { - "type": "structure", - "members": {} - }, - "idempotent": true - }, - "UpdateTrail": { - "input": { - "type": "structure", - "required": [ - "Name" - ], - "members": { - "Name": {}, - "S3BucketName": {}, - "S3KeyPrefix": {}, - "SnsTopicName": {}, - "IncludeGlobalServiceEvents": { - "type": "boolean" - }, - "IsMultiRegionTrail": { - "type": "boolean" - }, - "EnableLogFileValidation": { - "type": "boolean" - }, - "CloudWatchLogsLogGroupArn": {}, - "CloudWatchLogsRoleArn": {}, - "KmsKeyId": {} - } - }, - "output": { - "type": "structure", - "members": { - "Name": {}, - "S3BucketName": {}, - "S3KeyPrefix": {}, - "SnsTopicName": { - "deprecated": true - }, - "SnsTopicARN": {}, - "IncludeGlobalServiceEvents": { - "type": "boolean" - }, - "IsMultiRegionTrail": { - "type": "boolean" - }, - "TrailARN": {}, - "LogFileValidationEnabled": { - "type": "boolean" - }, - "CloudWatchLogsLogGroupArn": {}, - "CloudWatchLogsRoleArn": {}, - "KmsKeyId": {} - } - }, - "idempotent": true - } - }, - "shapes": { - "S3": { - "type": "list", - "member": { - "type": "structure", - "required": [ - "Key" - ], - "members": { - "Key": {}, - "Value": {} - } - } - }, - "Si": { - "type": "list", - "member": { - "type": "structure", - "members": { - "ReadWriteType": {}, - "IncludeManagementEvents": { - "type": "boolean" - }, - "DataResources": { - "type": "list", - "member": { - "type": "structure", - "members": { - "Type": {}, - "Values": { - "type": "list", - "member": {} - } - } - } - } - } - } - } - } -} \ No newline at end of file diff --git a/workshops/monte-carlo-on-ec2-spot-fleet/src/web/node_modules/aws-sdk/apis/cloudtrail-2013-11-01.paginators.json b/workshops/monte-carlo-on-ec2-spot-fleet/src/web/node_modules/aws-sdk/apis/cloudtrail-2013-11-01.paginators.json deleted file mode 100644 index 868fef81..00000000 --- a/workshops/monte-carlo-on-ec2-spot-fleet/src/web/node_modules/aws-sdk/apis/cloudtrail-2013-11-01.paginators.json +++ /dev/null @@ -1,13 +0,0 @@ -{ - "pagination": { - "DescribeTrails": { - "result_key": "trailList" - }, - "LookupEvents": { - "input_token": "NextToken", - "limit_key": "MaxResults", - "output_token": "NextToken", - "result_key": "Events" - } - } -} \ No newline at end of file diff --git a/workshops/monte-carlo-on-ec2-spot-fleet/src/web/node_modules/aws-sdk/apis/codebuild-2016-10-06.examples.json b/workshops/monte-carlo-on-ec2-spot-fleet/src/web/node_modules/aws-sdk/apis/codebuild-2016-10-06.examples.json deleted file mode 100644 index a5fb660e..00000000 --- a/workshops/monte-carlo-on-ec2-spot-fleet/src/web/node_modules/aws-sdk/apis/codebuild-2016-10-06.examples.json +++ /dev/null @@ -1,281 +0,0 @@ -{ - "version": "1.0", - "examples": { - "BatchGetBuilds": [ - { - "input": { - "ids": [ - "codebuild-demo-project:9b0ac37f-d19e-4254-9079-f47e9a389eEX", - "codebuild-demo-project:b79a46f7-1473-4636-a23f-da9c45c208EX" - ] - }, - "output": { - "builds": [ - { - "arn": "arn:aws:codebuild:us-east-1:123456789012:build/codebuild-demo-project:9b0ac37f-d19e-4254-9079-f47e9a389eEX", - "artifacts": { - "location": "arn:aws:s3:::codebuild-123456789012-output-bucket/codebuild-demo-project" - }, - "buildComplete": true, - "buildStatus": "SUCCEEDED", - "currentPhase": "COMPLETED", - "endTime": 1479832474.764, - "environment": { - "type": "LINUX_CONTAINER", - "computeType": "BUILD_GENERAL1_SMALL", - "environmentVariables": [ - - ], - "image": "aws/codebuild/java:openjdk-8", - "privilegedMode": false - }, - "id": "codebuild-demo-project:9b0ac37f-d19e-4254-9079-f47e9a389eEX", - "initiator": "MyDemoUser", - "logs": { - "deepLink": "https://console.aws.amazon.com/cloudwatch/home?region=us-east-1#logEvent:group=/aws/codebuild/codebuild-demo-project;stream=9b0ac37f-d19e-4254-9079-f47e9a389eEX", - "groupName": "/aws/codebuild/codebuild-demo-project", - "streamName": "9b0ac37f-d19e-4254-9079-f47e9a389eEX" - }, - "phases": [ - { - "durationInSeconds": 0, - "endTime": 1479832342.23, - "phaseStatus": "SUCCEEDED", - "phaseType": "SUBMITTED", - "startTime": 1479832341.854 - }, - { - "contexts": [ - - ], - "durationInSeconds": 72, - "endTime": 1479832415.064, - "phaseStatus": "SUCCEEDED", - "phaseType": "PROVISIONING", - "startTime": 1479832342.23 - }, - { - "contexts": [ - - ], - "durationInSeconds": 46, - "endTime": 1479832461.261, - "phaseStatus": "SUCCEEDED", - "phaseType": "DOWNLOAD_SOURCE", - "startTime": 1479832415.064 - }, - { - "contexts": [ - - ], - "durationInSeconds": 0, - "endTime": 1479832461.354, - "phaseStatus": "SUCCEEDED", - "phaseType": "INSTALL", - "startTime": 1479832461.261 - }, - { - "contexts": [ - - ], - "durationInSeconds": 0, - "endTime": 1479832461.448, - "phaseStatus": "SUCCEEDED", - "phaseType": "PRE_BUILD", - "startTime": 1479832461.354 - }, - { - "contexts": [ - - ], - "durationInSeconds": 9, - "endTime": 1479832471.115, - "phaseStatus": "SUCCEEDED", - "phaseType": "BUILD", - "startTime": 1479832461.448 - }, - { - "contexts": [ - - ], - "durationInSeconds": 0, - "endTime": 1479832471.224, - "phaseStatus": "SUCCEEDED", - "phaseType": "POST_BUILD", - "startTime": 1479832471.115 - }, - { - "contexts": [ - - ], - "durationInSeconds": 0, - "endTime": 1479832471.791, - "phaseStatus": "SUCCEEDED", - "phaseType": "UPLOAD_ARTIFACTS", - "startTime": 1479832471.224 - }, - { - "contexts": [ - - ], - "durationInSeconds": 2, - "endTime": 1479832474.764, - "phaseStatus": "SUCCEEDED", - "phaseType": "FINALIZING", - "startTime": 1479832471.791 - }, - { - "phaseType": "COMPLETED", - "startTime": 1479832474.764 - } - ], - "projectName": "codebuild-demo-project", - "source": { - "type": "S3", - "buildspec": "", - "location": "arn:aws:s3:::codebuild-123456789012-input-bucket/MessageUtil.zip" - }, - "startTime": 1479832341.854, - "timeoutInMinutes": 60 - }, - { - "arn": "arn:aws:codebuild:us-east-1:123456789012:build/codebuild-demo-project:b79a46f7-1473-4636-a23f-da9c45c208EX", - "artifacts": { - "location": "arn:aws:s3:::codebuild-123456789012-output-bucket/codebuild-demo-project" - }, - "buildComplete": true, - "buildStatus": "SUCCEEDED", - "currentPhase": "COMPLETED", - "endTime": 1479401214.239, - "environment": { - "type": "LINUX_CONTAINER", - "computeType": "BUILD_GENERAL1_SMALL", - "environmentVariables": [ - - ], - "image": "aws/codebuild/java:openjdk-8", - "privilegedMode": false - }, - "id": "codebuild-demo-project:b79a46f7-1473-4636-a23f-da9c45c208EX", - "initiator": "MyDemoUser", - "logs": { - "deepLink": "https://console.aws.amazon.com/cloudwatch/home?region=us-east-1#logEvent:group=/aws/codebuild/codebuild-demo-project;stream=b79a46f7-1473-4636-a23f-da9c45c208EX", - "groupName": "/aws/codebuild/codebuild-demo-project", - "streamName": "b79a46f7-1473-4636-a23f-da9c45c208EX" - }, - "phases": [ - { - "durationInSeconds": 0, - "endTime": 1479401082.342, - "phaseStatus": "SUCCEEDED", - "phaseType": "SUBMITTED", - "startTime": 1479401081.869 - }, - { - "contexts": [ - - ], - "durationInSeconds": 71, - "endTime": 1479401154.129, - "phaseStatus": "SUCCEEDED", - "phaseType": "PROVISIONING", - "startTime": 1479401082.342 - }, - { - "contexts": [ - - ], - "durationInSeconds": 45, - "endTime": 1479401199.136, - "phaseStatus": "SUCCEEDED", - "phaseType": "DOWNLOAD_SOURCE", - "startTime": 1479401154.129 - }, - { - "contexts": [ - - ], - "durationInSeconds": 0, - "endTime": 1479401199.236, - "phaseStatus": "SUCCEEDED", - "phaseType": "INSTALL", - "startTime": 1479401199.136 - }, - { - "contexts": [ - - ], - "durationInSeconds": 0, - "endTime": 1479401199.345, - "phaseStatus": "SUCCEEDED", - "phaseType": "PRE_BUILD", - "startTime": 1479401199.236 - }, - { - "contexts": [ - - ], - "durationInSeconds": 9, - "endTime": 1479401208.68, - "phaseStatus": "SUCCEEDED", - "phaseType": "BUILD", - "startTime": 1479401199.345 - }, - { - "contexts": [ - - ], - "durationInSeconds": 0, - "endTime": 1479401208.783, - "phaseStatus": "SUCCEEDED", - "phaseType": "POST_BUILD", - "startTime": 1479401208.68 - }, - { - "contexts": [ - - ], - "durationInSeconds": 0, - "endTime": 1479401209.463, - "phaseStatus": "SUCCEEDED", - "phaseType": "UPLOAD_ARTIFACTS", - "startTime": 1479401208.783 - }, - { - "contexts": [ - - ], - "durationInSeconds": 4, - "endTime": 1479401214.239, - "phaseStatus": "SUCCEEDED", - "phaseType": "FINALIZING", - "startTime": 1479401209.463 - }, - { - "phaseType": "COMPLETED", - "startTime": 1479401214.239 - } - ], - "projectName": "codebuild-demo-project", - "source": { - "type": "S3", - "location": "arn:aws:s3:::codebuild-123456789012-input-bucket/MessageUtil.zip" - }, - "startTime": 1479401081.869, - "timeoutInMinutes": 60 - } - ] - }, - "comments": { - "input": { - }, - "output": { - } - }, - "description": "The following example gets information about builds with the specified build IDs.", - "id": "to-get-information-about-builds-1501187184588", - "title": "To get information about builds" - } - ] - } -} diff --git a/workshops/monte-carlo-on-ec2-spot-fleet/src/web/node_modules/aws-sdk/apis/codebuild-2016-10-06.min.json b/workshops/monte-carlo-on-ec2-spot-fleet/src/web/node_modules/aws-sdk/apis/codebuild-2016-10-06.min.json deleted file mode 100644 index 8452d450..00000000 --- a/workshops/monte-carlo-on-ec2-spot-fleet/src/web/node_modules/aws-sdk/apis/codebuild-2016-10-06.min.json +++ /dev/null @@ -1,577 +0,0 @@ -{ - "version": "2.0", - "metadata": { - "apiVersion": "2016-10-06", - "endpointPrefix": "codebuild", - "jsonVersion": "1.1", - "protocol": "json", - "serviceFullName": "AWS CodeBuild", - "signatureVersion": "v4", - "targetPrefix": "CodeBuild_20161006", - "uid": "codebuild-2016-10-06" - }, - "operations": { - "BatchDeleteBuilds": { - "input": { - "type": "structure", - "required": [ - "ids" - ], - "members": { - "ids": { - "shape": "S2" - } - } - }, - "output": { - "type": "structure", - "members": { - "buildsDeleted": { - "shape": "S2" - }, - "buildsNotDeleted": { - "type": "list", - "member": { - "type": "structure", - "members": { - "id": {}, - "statusCode": {} - } - } - } - } - } - }, - "BatchGetBuilds": { - "input": { - "type": "structure", - "required": [ - "ids" - ], - "members": { - "ids": { - "shape": "S2" - } - } - }, - "output": { - "type": "structure", - "members": { - "builds": { - "type": "list", - "member": { - "shape": "Sb" - } - }, - "buildsNotFound": { - "shape": "S2" - } - } - } - }, - "BatchGetProjects": { - "input": { - "type": "structure", - "required": [ - "names" - ], - "members": { - "names": { - "shape": "S10" - } - } - }, - "output": { - "type": "structure", - "members": { - "projects": { - "type": "list", - "member": { - "shape": "S13" - } - }, - "projectsNotFound": { - "shape": "S10" - } - } - } - }, - "CreateProject": { - "input": { - "type": "structure", - "required": [ - "name", - "source", - "artifacts", - "environment" - ], - "members": { - "name": {}, - "description": {}, - "source": { - "shape": "Sk" - }, - "artifacts": { - "shape": "S16" - }, - "environment": { - "shape": "Sp" - }, - "serviceRole": {}, - "timeoutInMinutes": { - "type": "integer" - }, - "encryptionKey": {}, - "tags": { - "shape": "S1b" - } - } - }, - "output": { - "type": "structure", - "members": { - "project": { - "shape": "S13" - } - } - } - }, - "CreateWebhook": { - "input": { - "type": "structure", - "required": [ - "projectName" - ], - "members": { - "projectName": {} - } - }, - "output": { - "type": "structure", - "members": { - "webhook": { - "shape": "S1f" - } - } - } - }, - "DeleteProject": { - "input": { - "type": "structure", - "required": [ - "name" - ], - "members": { - "name": {} - } - }, - "output": { - "type": "structure", - "members": {} - } - }, - "DeleteWebhook": { - "input": { - "type": "structure", - "required": [ - "projectName" - ], - "members": { - "projectName": {} - } - }, - "output": { - "type": "structure", - "members": {} - } - }, - "ListBuilds": { - "input": { - "type": "structure", - "members": { - "sortOrder": {}, - "nextToken": {} - } - }, - "output": { - "type": "structure", - "members": { - "ids": { - "shape": "S2" - }, - "nextToken": {} - } - } - }, - "ListBuildsForProject": { - "input": { - "type": "structure", - "required": [ - "projectName" - ], - "members": { - "projectName": {}, - "sortOrder": {}, - "nextToken": {} - } - }, - "output": { - "type": "structure", - "members": { - "ids": { - "shape": "S2" - }, - "nextToken": {} - } - } - }, - "ListCuratedEnvironmentImages": { - "input": { - "type": "structure", - "members": {} - }, - "output": { - "type": "structure", - "members": { - "platforms": { - "type": "list", - "member": { - "type": "structure", - "members": { - "platform": {}, - "languages": { - "type": "list", - "member": { - "type": "structure", - "members": { - "language": {}, - "images": { - "type": "list", - "member": { - "type": "structure", - "members": { - "name": {}, - "description": {} - } - } - } - } - } - } - } - } - } - } - } - }, - "ListProjects": { - "input": { - "type": "structure", - "members": { - "sortBy": {}, - "sortOrder": {}, - "nextToken": {} - } - }, - "output": { - "type": "structure", - "members": { - "nextToken": {}, - "projects": { - "shape": "S10" - } - } - } - }, - "StartBuild": { - "input": { - "type": "structure", - "required": [ - "projectName" - ], - "members": { - "projectName": {}, - "sourceVersion": {}, - "artifactsOverride": { - "shape": "S16" - }, - "environmentVariablesOverride": { - "shape": "Ss" - }, - "buildspecOverride": {}, - "timeoutInMinutesOverride": { - "type": "integer" - } - } - }, - "output": { - "type": "structure", - "members": { - "build": { - "shape": "Sb" - } - } - } - }, - "StopBuild": { - "input": { - "type": "structure", - "required": [ - "id" - ], - "members": { - "id": {} - } - }, - "output": { - "type": "structure", - "members": { - "build": { - "shape": "Sb" - } - } - } - }, - "UpdateProject": { - "input": { - "type": "structure", - "required": [ - "name" - ], - "members": { - "name": {}, - "description": {}, - "source": { - "shape": "Sk" - }, - "artifacts": { - "shape": "S16" - }, - "environment": { - "shape": "Sp" - }, - "serviceRole": {}, - "timeoutInMinutes": { - "type": "integer" - }, - "encryptionKey": {}, - "tags": { - "shape": "S1b" - } - } - }, - "output": { - "type": "structure", - "members": { - "project": { - "shape": "S13" - } - } - } - } - }, - "shapes": { - "S2": { - "type": "list", - "member": {} - }, - "Sb": { - "type": "structure", - "members": { - "id": {}, - "arn": {}, - "startTime": { - "type": "timestamp" - }, - "endTime": { - "type": "timestamp" - }, - "currentPhase": {}, - "buildStatus": {}, - "sourceVersion": {}, - "projectName": {}, - "phases": { - "type": "list", - "member": { - "type": "structure", - "members": { - "phaseType": {}, - "phaseStatus": {}, - "startTime": { - "type": "timestamp" - }, - "endTime": { - "type": "timestamp" - }, - "durationInSeconds": { - "type": "long" - }, - "contexts": { - "type": "list", - "member": { - "type": "structure", - "members": { - "statusCode": {}, - "message": {} - } - } - } - } - } - }, - "source": { - "shape": "Sk" - }, - "artifacts": { - "type": "structure", - "members": { - "location": {}, - "sha256sum": {}, - "md5sum": {} - } - }, - "environment": { - "shape": "Sp" - }, - "logs": { - "type": "structure", - "members": { - "groupName": {}, - "streamName": {}, - "deepLink": {} - } - }, - "timeoutInMinutes": { - "type": "integer" - }, - "buildComplete": { - "type": "boolean" - }, - "initiator": {} - } - }, - "Sk": { - "type": "structure", - "required": [ - "type" - ], - "members": { - "type": {}, - "location": {}, - "buildspec": {}, - "auth": { - "type": "structure", - "required": [ - "type" - ], - "members": { - "type": {}, - "resource": {} - } - } - } - }, - "Sp": { - "type": "structure", - "required": [ - "type", - "image", - "computeType" - ], - "members": { - "type": {}, - "image": {}, - "computeType": {}, - "environmentVariables": { - "shape": "Ss" - }, - "privilegedMode": { - "type": "boolean" - } - } - }, - "Ss": { - "type": "list", - "member": { - "type": "structure", - "required": [ - "name", - "value" - ], - "members": { - "name": {}, - "value": {}, - "type": {} - } - } - }, - "S10": { - "type": "list", - "member": {} - }, - "S13": { - "type": "structure", - "members": { - "name": {}, - "arn": {}, - "description": {}, - "source": { - "shape": "Sk" - }, - "artifacts": { - "shape": "S16" - }, - "environment": { - "shape": "Sp" - }, - "serviceRole": {}, - "timeoutInMinutes": { - "type": "integer" - }, - "encryptionKey": {}, - "tags": { - "shape": "S1b" - }, - "created": { - "type": "timestamp" - }, - "lastModified": { - "type": "timestamp" - }, - "webhook": { - "shape": "S1f" - } - } - }, - "S16": { - "type": "structure", - "required": [ - "type" - ], - "members": { - "type": {}, - "location": {}, - "path": {}, - "namespaceType": {}, - "name": {}, - "packaging": {} - } - }, - "S1b": { - "type": "list", - "member": { - "type": "structure", - "members": { - "key": {}, - "value": {} - } - } - }, - "S1f": { - "type": "structure", - "members": { - "url": {} - } - } - } -} \ No newline at end of file diff --git a/workshops/monte-carlo-on-ec2-spot-fleet/src/web/node_modules/aws-sdk/apis/codebuild-2016-10-06.paginators.json b/workshops/monte-carlo-on-ec2-spot-fleet/src/web/node_modules/aws-sdk/apis/codebuild-2016-10-06.paginators.json deleted file mode 100644 index 5677bd8e..00000000 --- a/workshops/monte-carlo-on-ec2-spot-fleet/src/web/node_modules/aws-sdk/apis/codebuild-2016-10-06.paginators.json +++ /dev/null @@ -1,4 +0,0 @@ -{ - "pagination": { - } -} diff --git a/workshops/monte-carlo-on-ec2-spot-fleet/src/web/node_modules/aws-sdk/apis/codecommit-2015-04-13.examples.json b/workshops/monte-carlo-on-ec2-spot-fleet/src/web/node_modules/aws-sdk/apis/codecommit-2015-04-13.examples.json deleted file mode 100644 index 0ea7e3b0..00000000 --- a/workshops/monte-carlo-on-ec2-spot-fleet/src/web/node_modules/aws-sdk/apis/codecommit-2015-04-13.examples.json +++ /dev/null @@ -1,5 +0,0 @@ -{ - "version": "1.0", - "examples": { - } -} diff --git a/workshops/monte-carlo-on-ec2-spot-fleet/src/web/node_modules/aws-sdk/apis/codecommit-2015-04-13.min.json b/workshops/monte-carlo-on-ec2-spot-fleet/src/web/node_modules/aws-sdk/apis/codecommit-2015-04-13.min.json deleted file mode 100644 index d648c257..00000000 --- a/workshops/monte-carlo-on-ec2-spot-fleet/src/web/node_modules/aws-sdk/apis/codecommit-2015-04-13.min.json +++ /dev/null @@ -1,490 +0,0 @@ -{ - "version": "2.0", - "metadata": { - "apiVersion": "2015-04-13", - "endpointPrefix": "codecommit", - "jsonVersion": "1.1", - "protocol": "json", - "serviceAbbreviation": "CodeCommit", - "serviceFullName": "AWS CodeCommit", - "signatureVersion": "v4", - "targetPrefix": "CodeCommit_20150413", - "uid": "codecommit-2015-04-13" - }, - "operations": { - "BatchGetRepositories": { - "input": { - "type": "structure", - "required": [ - "repositoryNames" - ], - "members": { - "repositoryNames": { - "type": "list", - "member": {} - } - } - }, - "output": { - "type": "structure", - "members": { - "repositories": { - "type": "list", - "member": { - "shape": "S6" - } - }, - "repositoriesNotFound": { - "type": "list", - "member": {} - } - } - } - }, - "CreateBranch": { - "input": { - "type": "structure", - "required": [ - "repositoryName", - "branchName", - "commitId" - ], - "members": { - "repositoryName": {}, - "branchName": {}, - "commitId": {} - } - } - }, - "CreateRepository": { - "input": { - "type": "structure", - "required": [ - "repositoryName" - ], - "members": { - "repositoryName": {}, - "repositoryDescription": {} - } - }, - "output": { - "type": "structure", - "members": { - "repositoryMetadata": { - "shape": "S6" - } - } - } - }, - "DeleteBranch": { - "input": { - "type": "structure", - "required": [ - "repositoryName", - "branchName" - ], - "members": { - "repositoryName": {}, - "branchName": {} - } - }, - "output": { - "type": "structure", - "members": { - "deletedBranch": { - "shape": "Sn" - } - } - } - }, - "DeleteRepository": { - "input": { - "type": "structure", - "required": [ - "repositoryName" - ], - "members": { - "repositoryName": {} - } - }, - "output": { - "type": "structure", - "members": { - "repositoryId": {} - } - } - }, - "GetBlob": { - "input": { - "type": "structure", - "required": [ - "repositoryName", - "blobId" - ], - "members": { - "repositoryName": {}, - "blobId": {} - } - }, - "output": { - "type": "structure", - "required": [ - "content" - ], - "members": { - "content": { - "type": "blob" - } - } - } - }, - "GetBranch": { - "input": { - "type": "structure", - "members": { - "repositoryName": {}, - "branchName": {} - } - }, - "output": { - "type": "structure", - "members": { - "branch": { - "shape": "Sn" - } - } - } - }, - "GetCommit": { - "input": { - "type": "structure", - "required": [ - "repositoryName", - "commitId" - ], - "members": { - "repositoryName": {}, - "commitId": {} - } - }, - "output": { - "type": "structure", - "required": [ - "commit" - ], - "members": { - "commit": { - "type": "structure", - "members": { - "commitId": {}, - "treeId": {}, - "parents": { - "type": "list", - "member": {} - }, - "message": {}, - "author": { - "shape": "S11" - }, - "committer": { - "shape": "S11" - }, - "additionalData": {} - } - } - } - } - }, - "GetDifferences": { - "input": { - "type": "structure", - "required": [ - "repositoryName", - "afterCommitSpecifier" - ], - "members": { - "repositoryName": {}, - "beforeCommitSpecifier": {}, - "afterCommitSpecifier": {}, - "beforePath": {}, - "afterPath": {}, - "MaxResults": { - "type": "integer" - }, - "NextToken": {} - } - }, - "output": { - "type": "structure", - "members": { - "differences": { - "type": "list", - "member": { - "type": "structure", - "members": { - "beforeBlob": { - "shape": "S1e" - }, - "afterBlob": { - "shape": "S1e" - }, - "changeType": {} - } - } - }, - "NextToken": {} - } - } - }, - "GetRepository": { - "input": { - "type": "structure", - "required": [ - "repositoryName" - ], - "members": { - "repositoryName": {} - } - }, - "output": { - "type": "structure", - "members": { - "repositoryMetadata": { - "shape": "S6" - } - } - } - }, - "GetRepositoryTriggers": { - "input": { - "type": "structure", - "required": [ - "repositoryName" - ], - "members": { - "repositoryName": {} - } - }, - "output": { - "type": "structure", - "members": { - "configurationId": {}, - "triggers": { - "shape": "S1m" - } - } - } - }, - "ListBranches": { - "input": { - "type": "structure", - "required": [ - "repositoryName" - ], - "members": { - "repositoryName": {}, - "nextToken": {} - } - }, - "output": { - "type": "structure", - "members": { - "branches": { - "shape": "S1q" - }, - "nextToken": {} - } - } - }, - "ListRepositories": { - "input": { - "type": "structure", - "members": { - "nextToken": {}, - "sortBy": {}, - "order": {} - } - }, - "output": { - "type": "structure", - "members": { - "repositories": { - "type": "list", - "member": { - "type": "structure", - "members": { - "repositoryName": {}, - "repositoryId": {} - } - } - }, - "nextToken": {} - } - } - }, - "PutRepositoryTriggers": { - "input": { - "type": "structure", - "required": [ - "repositoryName", - "triggers" - ], - "members": { - "repositoryName": {}, - "triggers": { - "shape": "S1m" - } - } - }, - "output": { - "type": "structure", - "members": { - "configurationId": {} - } - } - }, - "TestRepositoryTriggers": { - "input": { - "type": "structure", - "required": [ - "repositoryName", - "triggers" - ], - "members": { - "repositoryName": {}, - "triggers": { - "shape": "S1m" - } - } - }, - "output": { - "type": "structure", - "members": { - "successfulExecutions": { - "type": "list", - "member": {} - }, - "failedExecutions": { - "type": "list", - "member": { - "type": "structure", - "members": { - "trigger": {}, - "failureMessage": {} - } - } - } - } - } - }, - "UpdateDefaultBranch": { - "input": { - "type": "structure", - "required": [ - "repositoryName", - "defaultBranchName" - ], - "members": { - "repositoryName": {}, - "defaultBranchName": {} - } - } - }, - "UpdateRepositoryDescription": { - "input": { - "type": "structure", - "required": [ - "repositoryName" - ], - "members": { - "repositoryName": {}, - "repositoryDescription": {} - } - } - }, - "UpdateRepositoryName": { - "input": { - "type": "structure", - "required": [ - "oldName", - "newName" - ], - "members": { - "oldName": {}, - "newName": {} - } - } - } - }, - "shapes": { - "S6": { - "type": "structure", - "members": { - "accountId": {}, - "repositoryId": {}, - "repositoryName": {}, - "repositoryDescription": {}, - "defaultBranch": {}, - "lastModifiedDate": { - "type": "timestamp" - }, - "creationDate": { - "type": "timestamp" - }, - "cloneUrlHttp": {}, - "cloneUrlSsh": {}, - "Arn": {} - } - }, - "Sn": { - "type": "structure", - "members": { - "branchName": {}, - "commitId": {} - } - }, - "S11": { - "type": "structure", - "members": { - "name": {}, - "email": {}, - "date": {} - } - }, - "S1e": { - "type": "structure", - "members": { - "blobId": {}, - "path": {}, - "mode": {} - } - }, - "S1m": { - "type": "list", - "member": { - "type": "structure", - "required": [ - "name", - "destinationArn", - "events" - ], - "members": { - "name": {}, - "destinationArn": {}, - "customData": {}, - "branches": { - "shape": "S1q" - }, - "events": { - "type": "list", - "member": {} - } - } - } - }, - "S1q": { - "type": "list", - "member": {} - } - } -} \ No newline at end of file diff --git a/workshops/monte-carlo-on-ec2-spot-fleet/src/web/node_modules/aws-sdk/apis/codecommit-2015-04-13.paginators.json b/workshops/monte-carlo-on-ec2-spot-fleet/src/web/node_modules/aws-sdk/apis/codecommit-2015-04-13.paginators.json deleted file mode 100644 index 8cbda7d8..00000000 --- a/workshops/monte-carlo-on-ec2-spot-fleet/src/web/node_modules/aws-sdk/apis/codecommit-2015-04-13.paginators.json +++ /dev/null @@ -1,19 +0,0 @@ -{ - "pagination": { - "GetDifferences": { - "input_token": "NextToken", - "limit_key": "MaxResults", - "output_token": "NextToken" - }, - "ListBranches": { - "input_token": "nextToken", - "output_token": "nextToken", - "result_key": "branches" - }, - "ListRepositories": { - "input_token": "nextToken", - "output_token": "nextToken", - "result_key": "repositories" - } - } -} \ No newline at end of file diff --git a/workshops/monte-carlo-on-ec2-spot-fleet/src/web/node_modules/aws-sdk/apis/codedeploy-2014-10-06.examples.json b/workshops/monte-carlo-on-ec2-spot-fleet/src/web/node_modules/aws-sdk/apis/codedeploy-2014-10-06.examples.json deleted file mode 100644 index 0ea7e3b0..00000000 --- a/workshops/monte-carlo-on-ec2-spot-fleet/src/web/node_modules/aws-sdk/apis/codedeploy-2014-10-06.examples.json +++ /dev/null @@ -1,5 +0,0 @@ -{ - "version": "1.0", - "examples": { - } -} diff --git a/workshops/monte-carlo-on-ec2-spot-fleet/src/web/node_modules/aws-sdk/apis/codedeploy-2014-10-06.min.json b/workshops/monte-carlo-on-ec2-spot-fleet/src/web/node_modules/aws-sdk/apis/codedeploy-2014-10-06.min.json deleted file mode 100644 index 3ffde4e5..00000000 --- a/workshops/monte-carlo-on-ec2-spot-fleet/src/web/node_modules/aws-sdk/apis/codedeploy-2014-10-06.min.json +++ /dev/null @@ -1,1349 +0,0 @@ -{ - "version": "2.0", - "metadata": { - "apiVersion": "2014-10-06", - "endpointPrefix": "codedeploy", - "jsonVersion": "1.1", - "protocol": "json", - "serviceAbbreviation": "CodeDeploy", - "serviceFullName": "AWS CodeDeploy", - "signatureVersion": "v4", - "targetPrefix": "CodeDeploy_20141006", - "timestampFormat": "unixTimestamp", - "uid": "codedeploy-2014-10-06" - }, - "operations": { - "AddTagsToOnPremisesInstances": { - "input": { - "type": "structure", - "required": [ - "tags", - "instanceNames" - ], - "members": { - "tags": { - "shape": "S2" - }, - "instanceNames": { - "shape": "S6" - } - } - } - }, - "BatchGetApplicationRevisions": { - "input": { - "type": "structure", - "required": [ - "applicationName", - "revisions" - ], - "members": { - "applicationName": {}, - "revisions": { - "shape": "Sa" - } - } - }, - "output": { - "type": "structure", - "members": { - "applicationName": {}, - "errorMessage": {}, - "revisions": { - "type": "list", - "member": { - "type": "structure", - "members": { - "revisionLocation": { - "shape": "Sb" - }, - "genericRevisionInfo": { - "shape": "Sq" - } - } - } - } - } - } - }, - "BatchGetApplications": { - "input": { - "type": "structure", - "members": { - "applicationNames": { - "shape": "Sw" - } - } - }, - "output": { - "type": "structure", - "members": { - "applicationsInfo": { - "type": "list", - "member": { - "shape": "Sz" - } - } - } - } - }, - "BatchGetDeploymentGroups": { - "input": { - "type": "structure", - "required": [ - "applicationName", - "deploymentGroupNames" - ], - "members": { - "applicationName": {}, - "deploymentGroupNames": { - "shape": "Ss" - } - } - }, - "output": { - "type": "structure", - "members": { - "deploymentGroupsInfo": { - "type": "list", - "member": { - "shape": "S16" - } - }, - "errorMessage": {} - } - } - }, - "BatchGetDeploymentInstances": { - "input": { - "type": "structure", - "required": [ - "deploymentId", - "instanceIds" - ], - "members": { - "deploymentId": {}, - "instanceIds": { - "shape": "S2n" - } - } - }, - "output": { - "type": "structure", - "members": { - "instancesSummary": { - "type": "list", - "member": { - "shape": "S2r" - } - }, - "errorMessage": {} - } - } - }, - "BatchGetDeployments": { - "input": { - "type": "structure", - "members": { - "deploymentIds": { - "shape": "S34" - } - } - }, - "output": { - "type": "structure", - "members": { - "deploymentsInfo": { - "type": "list", - "member": { - "shape": "S37" - } - } - } - } - }, - "BatchGetOnPremisesInstances": { - "input": { - "type": "structure", - "members": { - "instanceNames": { - "shape": "S6" - } - } - }, - "output": { - "type": "structure", - "members": { - "instanceInfos": { - "type": "list", - "member": { - "shape": "S3l" - } - } - } - } - }, - "ContinueDeployment": { - "input": { - "type": "structure", - "members": { - "deploymentId": {} - } - } - }, - "CreateApplication": { - "input": { - "type": "structure", - "required": [ - "applicationName" - ], - "members": { - "applicationName": {} - } - }, - "output": { - "type": "structure", - "members": { - "applicationId": {} - } - } - }, - "CreateDeployment": { - "input": { - "type": "structure", - "required": [ - "applicationName" - ], - "members": { - "applicationName": {}, - "deploymentGroupName": {}, - "revision": { - "shape": "Sb" - }, - "deploymentConfigName": {}, - "description": {}, - "ignoreApplicationStopFailures": { - "type": "boolean" - }, - "targetInstances": { - "shape": "S3e" - }, - "autoRollbackConfiguration": { - "shape": "S1u" - }, - "updateOutdatedInstancesOnly": { - "type": "boolean" - }, - "fileExistsBehavior": {} - } - }, - "output": { - "type": "structure", - "members": { - "deploymentId": {} - } - } - }, - "CreateDeploymentConfig": { - "input": { - "type": "structure", - "required": [ - "deploymentConfigName", - "minimumHealthyHosts" - ], - "members": { - "deploymentConfigName": {}, - "minimumHealthyHosts": { - "shape": "S3v" - } - } - }, - "output": { - "type": "structure", - "members": { - "deploymentConfigId": {} - } - } - }, - "CreateDeploymentGroup": { - "input": { - "type": "structure", - "required": [ - "applicationName", - "deploymentGroupName", - "serviceRoleArn" - ], - "members": { - "applicationName": {}, - "deploymentGroupName": {}, - "deploymentConfigName": {}, - "ec2TagFilters": { - "shape": "S19" - }, - "onPremisesInstanceTagFilters": { - "shape": "S1c" - }, - "autoScalingGroups": { - "shape": "S3f" - }, - "serviceRoleArn": {}, - "triggerConfigurations": { - "shape": "S1k" - }, - "alarmConfiguration": { - "shape": "S1q" - }, - "autoRollbackConfiguration": { - "shape": "S1u" - }, - "deploymentStyle": { - "shape": "S1x" - }, - "blueGreenDeploymentConfiguration": { - "shape": "S20" - }, - "loadBalancerInfo": { - "shape": "S28" - }, - "ec2TagSet": { - "shape": "S2i" - }, - "onPremisesTagSet": { - "shape": "S2k" - } - } - }, - "output": { - "type": "structure", - "members": { - "deploymentGroupId": {} - } - } - }, - "DeleteApplication": { - "input": { - "type": "structure", - "required": [ - "applicationName" - ], - "members": { - "applicationName": {} - } - } - }, - "DeleteDeploymentConfig": { - "input": { - "type": "structure", - "required": [ - "deploymentConfigName" - ], - "members": { - "deploymentConfigName": {} - } - } - }, - "DeleteDeploymentGroup": { - "input": { - "type": "structure", - "required": [ - "applicationName", - "deploymentGroupName" - ], - "members": { - "applicationName": {}, - "deploymentGroupName": {} - } - }, - "output": { - "type": "structure", - "members": { - "hooksNotCleanedUp": { - "shape": "S1f" - } - } - } - }, - "DeregisterOnPremisesInstance": { - "input": { - "type": "structure", - "required": [ - "instanceName" - ], - "members": { - "instanceName": {} - } - } - }, - "GetApplication": { - "input": { - "type": "structure", - "required": [ - "applicationName" - ], - "members": { - "applicationName": {} - } - }, - "output": { - "type": "structure", - "members": { - "application": { - "shape": "Sz" - } - } - } - }, - "GetApplicationRevision": { - "input": { - "type": "structure", - "required": [ - "applicationName", - "revision" - ], - "members": { - "applicationName": {}, - "revision": { - "shape": "Sb" - } - } - }, - "output": { - "type": "structure", - "members": { - "applicationName": {}, - "revision": { - "shape": "Sb" - }, - "revisionInfo": { - "shape": "Sq" - } - } - } - }, - "GetDeployment": { - "input": { - "type": "structure", - "required": [ - "deploymentId" - ], - "members": { - "deploymentId": {} - } - }, - "output": { - "type": "structure", - "members": { - "deploymentInfo": { - "shape": "S37" - } - } - } - }, - "GetDeploymentConfig": { - "input": { - "type": "structure", - "required": [ - "deploymentConfigName" - ], - "members": { - "deploymentConfigName": {} - } - }, - "output": { - "type": "structure", - "members": { - "deploymentConfigInfo": { - "type": "structure", - "members": { - "deploymentConfigId": {}, - "deploymentConfigName": {}, - "minimumHealthyHosts": { - "shape": "S3v" - }, - "createTime": { - "type": "timestamp" - } - } - } - } - } - }, - "GetDeploymentGroup": { - "input": { - "type": "structure", - "required": [ - "applicationName", - "deploymentGroupName" - ], - "members": { - "applicationName": {}, - "deploymentGroupName": {} - } - }, - "output": { - "type": "structure", - "members": { - "deploymentGroupInfo": { - "shape": "S16" - } - } - } - }, - "GetDeploymentInstance": { - "input": { - "type": "structure", - "required": [ - "deploymentId", - "instanceId" - ], - "members": { - "deploymentId": {}, - "instanceId": {} - } - }, - "output": { - "type": "structure", - "members": { - "instanceSummary": { - "shape": "S2r" - } - } - } - }, - "GetOnPremisesInstance": { - "input": { - "type": "structure", - "required": [ - "instanceName" - ], - "members": { - "instanceName": {} - } - }, - "output": { - "type": "structure", - "members": { - "instanceInfo": { - "shape": "S3l" - } - } - } - }, - "ListApplicationRevisions": { - "input": { - "type": "structure", - "required": [ - "applicationName" - ], - "members": { - "applicationName": {}, - "sortBy": {}, - "sortOrder": {}, - "s3Bucket": {}, - "s3KeyPrefix": {}, - "deployed": {}, - "nextToken": {} - } - }, - "output": { - "type": "structure", - "members": { - "revisions": { - "shape": "Sa" - }, - "nextToken": {} - } - } - }, - "ListApplications": { - "input": { - "type": "structure", - "members": { - "nextToken": {} - } - }, - "output": { - "type": "structure", - "members": { - "applications": { - "shape": "Sw" - }, - "nextToken": {} - } - } - }, - "ListDeploymentConfigs": { - "input": { - "type": "structure", - "members": { - "nextToken": {} - } - }, - "output": { - "type": "structure", - "members": { - "deploymentConfigsList": { - "type": "list", - "member": {} - }, - "nextToken": {} - } - } - }, - "ListDeploymentGroups": { - "input": { - "type": "structure", - "required": [ - "applicationName" - ], - "members": { - "applicationName": {}, - "nextToken": {} - } - }, - "output": { - "type": "structure", - "members": { - "applicationName": {}, - "deploymentGroups": { - "shape": "Ss" - }, - "nextToken": {} - } - } - }, - "ListDeploymentInstances": { - "input": { - "type": "structure", - "required": [ - "deploymentId" - ], - "members": { - "deploymentId": {}, - "nextToken": {}, - "instanceStatusFilter": { - "type": "list", - "member": {} - }, - "instanceTypeFilter": { - "type": "list", - "member": {} - } - } - }, - "output": { - "type": "structure", - "members": { - "instancesList": { - "shape": "S2n" - }, - "nextToken": {} - } - } - }, - "ListDeployments": { - "input": { - "type": "structure", - "members": { - "applicationName": {}, - "deploymentGroupName": {}, - "includeOnlyStatuses": { - "type": "list", - "member": {} - }, - "createTimeRange": { - "type": "structure", - "members": { - "start": { - "type": "timestamp" - }, - "end": { - "type": "timestamp" - } - } - }, - "nextToken": {} - } - }, - "output": { - "type": "structure", - "members": { - "deployments": { - "shape": "S34" - }, - "nextToken": {} - } - } - }, - "ListGitHubAccountTokenNames": { - "input": { - "type": "structure", - "members": { - "nextToken": {} - } - }, - "output": { - "type": "structure", - "members": { - "tokenNameList": { - "type": "list", - "member": {} - }, - "nextToken": {} - } - } - }, - "ListOnPremisesInstances": { - "input": { - "type": "structure", - "members": { - "registrationStatus": {}, - "tagFilters": { - "shape": "S1c" - }, - "nextToken": {} - } - }, - "output": { - "type": "structure", - "members": { - "instanceNames": { - "shape": "S6" - }, - "nextToken": {} - } - } - }, - "RegisterApplicationRevision": { - "input": { - "type": "structure", - "required": [ - "applicationName", - "revision" - ], - "members": { - "applicationName": {}, - "description": {}, - "revision": { - "shape": "Sb" - } - } - } - }, - "RegisterOnPremisesInstance": { - "input": { - "type": "structure", - "required": [ - "instanceName" - ], - "members": { - "instanceName": {}, - "iamSessionArn": {}, - "iamUserArn": {} - } - } - }, - "RemoveTagsFromOnPremisesInstances": { - "input": { - "type": "structure", - "required": [ - "tags", - "instanceNames" - ], - "members": { - "tags": { - "shape": "S2" - }, - "instanceNames": { - "shape": "S6" - } - } - } - }, - "SkipWaitTimeForInstanceTermination": { - "input": { - "type": "structure", - "members": { - "deploymentId": {} - } - } - }, - "StopDeployment": { - "input": { - "type": "structure", - "required": [ - "deploymentId" - ], - "members": { - "deploymentId": {}, - "autoRollbackEnabled": { - "type": "boolean" - } - } - }, - "output": { - "type": "structure", - "members": { - "status": {}, - "statusMessage": {} - } - } - }, - "UpdateApplication": { - "input": { - "type": "structure", - "members": { - "applicationName": {}, - "newApplicationName": {} - } - } - }, - "UpdateDeploymentGroup": { - "input": { - "type": "structure", - "required": [ - "applicationName", - "currentDeploymentGroupName" - ], - "members": { - "applicationName": {}, - "currentDeploymentGroupName": {}, - "newDeploymentGroupName": {}, - "deploymentConfigName": {}, - "ec2TagFilters": { - "shape": "S19" - }, - "onPremisesInstanceTagFilters": { - "shape": "S1c" - }, - "autoScalingGroups": { - "shape": "S3f" - }, - "serviceRoleArn": {}, - "triggerConfigurations": { - "shape": "S1k" - }, - "alarmConfiguration": { - "shape": "S1q" - }, - "autoRollbackConfiguration": { - "shape": "S1u" - }, - "deploymentStyle": { - "shape": "S1x" - }, - "blueGreenDeploymentConfiguration": { - "shape": "S20" - }, - "loadBalancerInfo": { - "shape": "S28" - }, - "ec2TagSet": { - "shape": "S2i" - }, - "onPremisesTagSet": { - "shape": "S2k" - } - } - }, - "output": { - "type": "structure", - "members": { - "hooksNotCleanedUp": { - "shape": "S1f" - } - } - } - } - }, - "shapes": { - "S2": { - "type": "list", - "member": { - "type": "structure", - "members": { - "Key": {}, - "Value": {} - } - } - }, - "S6": { - "type": "list", - "member": {} - }, - "Sa": { - "type": "list", - "member": { - "shape": "Sb" - } - }, - "Sb": { - "type": "structure", - "members": { - "revisionType": {}, - "s3Location": { - "type": "structure", - "members": { - "bucket": {}, - "key": {}, - "bundleType": {}, - "version": {}, - "eTag": {} - } - }, - "gitHubLocation": { - "type": "structure", - "members": { - "repository": {}, - "commitId": {} - } - } - } - }, - "Sq": { - "type": "structure", - "members": { - "description": {}, - "deploymentGroups": { - "shape": "Ss" - }, - "firstUsedTime": { - "type": "timestamp" - }, - "lastUsedTime": { - "type": "timestamp" - }, - "registerTime": { - "type": "timestamp" - } - } - }, - "Ss": { - "type": "list", - "member": {} - }, - "Sw": { - "type": "list", - "member": {} - }, - "Sz": { - "type": "structure", - "members": { - "applicationId": {}, - "applicationName": {}, - "createTime": { - "type": "timestamp" - }, - "linkedToGitHub": { - "type": "boolean" - }, - "gitHubAccountName": {} - } - }, - "S16": { - "type": "structure", - "members": { - "applicationName": {}, - "deploymentGroupId": {}, - "deploymentGroupName": {}, - "deploymentConfigName": {}, - "ec2TagFilters": { - "shape": "S19" - }, - "onPremisesInstanceTagFilters": { - "shape": "S1c" - }, - "autoScalingGroups": { - "shape": "S1f" - }, - "serviceRoleArn": {}, - "targetRevision": { - "shape": "Sb" - }, - "triggerConfigurations": { - "shape": "S1k" - }, - "alarmConfiguration": { - "shape": "S1q" - }, - "autoRollbackConfiguration": { - "shape": "S1u" - }, - "deploymentStyle": { - "shape": "S1x" - }, - "blueGreenDeploymentConfiguration": { - "shape": "S20" - }, - "loadBalancerInfo": { - "shape": "S28" - }, - "lastSuccessfulDeployment": { - "shape": "S2f" - }, - "lastAttemptedDeployment": { - "shape": "S2f" - }, - "ec2TagSet": { - "shape": "S2i" - }, - "onPremisesTagSet": { - "shape": "S2k" - } - } - }, - "S19": { - "type": "list", - "member": { - "type": "structure", - "members": { - "Key": {}, - "Value": {}, - "Type": {} - } - } - }, - "S1c": { - "type": "list", - "member": { - "type": "structure", - "members": { - "Key": {}, - "Value": {}, - "Type": {} - } - } - }, - "S1f": { - "type": "list", - "member": { - "type": "structure", - "members": { - "name": {}, - "hook": {} - } - } - }, - "S1k": { - "type": "list", - "member": { - "type": "structure", - "members": { - "triggerName": {}, - "triggerTargetArn": {}, - "triggerEvents": { - "type": "list", - "member": {} - } - } - } - }, - "S1q": { - "type": "structure", - "members": { - "enabled": { - "type": "boolean" - }, - "ignorePollAlarmFailure": { - "type": "boolean" - }, - "alarms": { - "type": "list", - "member": { - "type": "structure", - "members": { - "name": {} - } - } - } - } - }, - "S1u": { - "type": "structure", - "members": { - "enabled": { - "type": "boolean" - }, - "events": { - "type": "list", - "member": {} - } - } - }, - "S1x": { - "type": "structure", - "members": { - "deploymentType": {}, - "deploymentOption": {} - } - }, - "S20": { - "type": "structure", - "members": { - "terminateBlueInstancesOnDeploymentSuccess": { - "type": "structure", - "members": { - "action": {}, - "terminationWaitTimeInMinutes": { - "type": "integer" - } - } - }, - "deploymentReadyOption": { - "type": "structure", - "members": { - "actionOnTimeout": {}, - "waitTimeInMinutes": { - "type": "integer" - } - } - }, - "greenFleetProvisioningOption": { - "type": "structure", - "members": { - "action": {} - } - } - } - }, - "S28": { - "type": "structure", - "members": { - "elbInfoList": { - "type": "list", - "member": { - "type": "structure", - "members": { - "name": {} - } - } - }, - "targetGroupInfoList": { - "type": "list", - "member": { - "type": "structure", - "members": { - "name": {} - } - } - } - } - }, - "S2f": { - "type": "structure", - "members": { - "deploymentId": {}, - "status": {}, - "endTime": { - "type": "timestamp" - }, - "createTime": { - "type": "timestamp" - } - } - }, - "S2i": { - "type": "structure", - "members": { - "ec2TagSetList": { - "type": "list", - "member": { - "shape": "S19" - } - } - } - }, - "S2k": { - "type": "structure", - "members": { - "onPremisesTagSetList": { - "type": "list", - "member": { - "shape": "S1c" - } - } - } - }, - "S2n": { - "type": "list", - "member": {} - }, - "S2r": { - "type": "structure", - "members": { - "deploymentId": {}, - "instanceId": {}, - "status": {}, - "lastUpdatedAt": { - "type": "timestamp" - }, - "lifecycleEvents": { - "type": "list", - "member": { - "type": "structure", - "members": { - "lifecycleEventName": {}, - "diagnostics": { - "type": "structure", - "members": { - "errorCode": {}, - "scriptName": {}, - "message": {}, - "logTail": {} - } - }, - "startTime": { - "type": "timestamp" - }, - "endTime": { - "type": "timestamp" - }, - "status": {} - } - } - }, - "instanceType": {} - } - }, - "S34": { - "type": "list", - "member": {} - }, - "S37": { - "type": "structure", - "members": { - "applicationName": {}, - "deploymentGroupName": {}, - "deploymentConfigName": {}, - "deploymentId": {}, - "previousRevision": { - "shape": "Sb" - }, - "revision": { - "shape": "Sb" - }, - "status": {}, - "errorInformation": { - "type": "structure", - "members": { - "code": {}, - "message": {} - } - }, - "createTime": { - "type": "timestamp" - }, - "startTime": { - "type": "timestamp" - }, - "completeTime": { - "type": "timestamp" - }, - "deploymentOverview": { - "type": "structure", - "members": { - "Pending": { - "type": "long" - }, - "InProgress": { - "type": "long" - }, - "Succeeded": { - "type": "long" - }, - "Failed": { - "type": "long" - }, - "Skipped": { - "type": "long" - }, - "Ready": { - "type": "long" - } - } - }, - "description": {}, - "creator": {}, - "ignoreApplicationStopFailures": { - "type": "boolean" - }, - "autoRollbackConfiguration": { - "shape": "S1u" - }, - "updateOutdatedInstancesOnly": { - "type": "boolean" - }, - "rollbackInfo": { - "type": "structure", - "members": { - "rollbackDeploymentId": {}, - "rollbackTriggeringDeploymentId": {}, - "rollbackMessage": {} - } - }, - "deploymentStyle": { - "shape": "S1x" - }, - "targetInstances": { - "shape": "S3e" - }, - "instanceTerminationWaitTimeStarted": { - "type": "boolean" - }, - "blueGreenDeploymentConfiguration": { - "shape": "S20" - }, - "loadBalancerInfo": { - "shape": "S28" - }, - "additionalDeploymentStatusInfo": {}, - "fileExistsBehavior": {} - } - }, - "S3e": { - "type": "structure", - "members": { - "tagFilters": { - "shape": "S19" - }, - "autoScalingGroups": { - "shape": "S3f" - }, - "ec2TagSet": { - "shape": "S2i" - } - } - }, - "S3f": { - "type": "list", - "member": {} - }, - "S3l": { - "type": "structure", - "members": { - "instanceName": {}, - "iamSessionArn": {}, - "iamUserArn": {}, - "instanceArn": {}, - "registerTime": { - "type": "timestamp" - }, - "deregisterTime": { - "type": "timestamp" - }, - "tags": { - "shape": "S2" - } - } - }, - "S3v": { - "type": "structure", - "members": { - "value": { - "type": "integer" - }, - "type": {} - } - } - } -} \ No newline at end of file diff --git a/workshops/monte-carlo-on-ec2-spot-fleet/src/web/node_modules/aws-sdk/apis/codedeploy-2014-10-06.paginators.json b/workshops/monte-carlo-on-ec2-spot-fleet/src/web/node_modules/aws-sdk/apis/codedeploy-2014-10-06.paginators.json deleted file mode 100644 index aa398f00..00000000 --- a/workshops/monte-carlo-on-ec2-spot-fleet/src/web/node_modules/aws-sdk/apis/codedeploy-2014-10-06.paginators.json +++ /dev/null @@ -1,34 +0,0 @@ -{ - "pagination": { - "ListApplicationRevisions": { - "input_token": "nextToken", - "output_token": "nextToken", - "result_key": "revisions" - }, - "ListApplications": { - "input_token": "nextToken", - "output_token": "nextToken", - "result_key": "applications" - }, - "ListDeploymentConfigs": { - "input_token": "nextToken", - "output_token": "nextToken", - "result_key": "deploymentConfigsList" - }, - "ListDeploymentGroups": { - "input_token": "nextToken", - "output_token": "nextToken", - "result_key": "deploymentGroups" - }, - "ListDeploymentInstances": { - "input_token": "nextToken", - "output_token": "nextToken", - "result_key": "instancesList" - }, - "ListDeployments": { - "input_token": "nextToken", - "output_token": "nextToken", - "result_key": "deployments" - } - } -} \ No newline at end of file diff --git a/workshops/monte-carlo-on-ec2-spot-fleet/src/web/node_modules/aws-sdk/apis/codedeploy-2014-10-06.waiters2.json b/workshops/monte-carlo-on-ec2-spot-fleet/src/web/node_modules/aws-sdk/apis/codedeploy-2014-10-06.waiters2.json deleted file mode 100644 index 0fea4fac..00000000 --- a/workshops/monte-carlo-on-ec2-spot-fleet/src/web/node_modules/aws-sdk/apis/codedeploy-2014-10-06.waiters2.json +++ /dev/null @@ -1,30 +0,0 @@ -{ - "version": 2, - "waiters": { - "DeploymentSuccessful": { - "delay": 15, - "operation": "GetDeployment", - "maxAttempts": 120, - "acceptors": [ - { - "expected": "Succeeded", - "matcher": "path", - "state": "success", - "argument": "deploymentInfo.status" - }, - { - "expected": "Failed", - "matcher": "path", - "state": "failure", - "argument": "deploymentInfo.status" - }, - { - "expected": "Stopped", - "matcher": "path", - "state": "failure", - "argument": "deploymentInfo.status" - } - ] - } - } -} diff --git a/workshops/monte-carlo-on-ec2-spot-fleet/src/web/node_modules/aws-sdk/apis/codepipeline-2015-07-09.examples.json b/workshops/monte-carlo-on-ec2-spot-fleet/src/web/node_modules/aws-sdk/apis/codepipeline-2015-07-09.examples.json deleted file mode 100644 index 0ea7e3b0..00000000 --- a/workshops/monte-carlo-on-ec2-spot-fleet/src/web/node_modules/aws-sdk/apis/codepipeline-2015-07-09.examples.json +++ /dev/null @@ -1,5 +0,0 @@ -{ - "version": "1.0", - "examples": { - } -} diff --git a/workshops/monte-carlo-on-ec2-spot-fleet/src/web/node_modules/aws-sdk/apis/codepipeline-2015-07-09.min.json b/workshops/monte-carlo-on-ec2-spot-fleet/src/web/node_modules/aws-sdk/apis/codepipeline-2015-07-09.min.json deleted file mode 100644 index ec706987..00000000 --- a/workshops/monte-carlo-on-ec2-spot-fleet/src/web/node_modules/aws-sdk/apis/codepipeline-2015-07-09.min.json +++ /dev/null @@ -1,1150 +0,0 @@ -{ - "version": "2.0", - "metadata": { - "apiVersion": "2015-07-09", - "endpointPrefix": "codepipeline", - "jsonVersion": "1.1", - "protocol": "json", - "serviceAbbreviation": "CodePipeline", - "serviceFullName": "AWS CodePipeline", - "signatureVersion": "v4", - "targetPrefix": "CodePipeline_20150709", - "uid": "codepipeline-2015-07-09" - }, - "operations": { - "AcknowledgeJob": { - "input": { - "type": "structure", - "required": [ - "jobId", - "nonce" - ], - "members": { - "jobId": {}, - "nonce": {} - } - }, - "output": { - "type": "structure", - "members": { - "status": {} - } - } - }, - "AcknowledgeThirdPartyJob": { - "input": { - "type": "structure", - "required": [ - "jobId", - "nonce", - "clientToken" - ], - "members": { - "jobId": {}, - "nonce": {}, - "clientToken": {} - } - }, - "output": { - "type": "structure", - "members": { - "status": {} - } - } - }, - "CreateCustomActionType": { - "input": { - "type": "structure", - "required": [ - "category", - "provider", - "version", - "inputArtifactDetails", - "outputArtifactDetails" - ], - "members": { - "category": {}, - "provider": {}, - "version": {}, - "settings": { - "shape": "Se" - }, - "configurationProperties": { - "shape": "Sh" - }, - "inputArtifactDetails": { - "shape": "Sn" - }, - "outputArtifactDetails": { - "shape": "Sn" - } - } - }, - "output": { - "type": "structure", - "required": [ - "actionType" - ], - "members": { - "actionType": { - "shape": "Sr" - } - } - } - }, - "CreatePipeline": { - "input": { - "type": "structure", - "required": [ - "pipeline" - ], - "members": { - "pipeline": { - "shape": "Sv" - } - } - }, - "output": { - "type": "structure", - "members": { - "pipeline": { - "shape": "Sv" - } - } - } - }, - "DeleteCustomActionType": { - "input": { - "type": "structure", - "required": [ - "category", - "provider", - "version" - ], - "members": { - "category": {}, - "provider": {}, - "version": {} - } - } - }, - "DeletePipeline": { - "input": { - "type": "structure", - "required": [ - "name" - ], - "members": { - "name": {} - } - } - }, - "DisableStageTransition": { - "input": { - "type": "structure", - "required": [ - "pipelineName", - "stageName", - "transitionType", - "reason" - ], - "members": { - "pipelineName": {}, - "stageName": {}, - "transitionType": {}, - "reason": {} - } - } - }, - "EnableStageTransition": { - "input": { - "type": "structure", - "required": [ - "pipelineName", - "stageName", - "transitionType" - ], - "members": { - "pipelineName": {}, - "stageName": {}, - "transitionType": {} - } - } - }, - "GetJobDetails": { - "input": { - "type": "structure", - "required": [ - "jobId" - ], - "members": { - "jobId": {} - } - }, - "output": { - "type": "structure", - "members": { - "jobDetails": { - "type": "structure", - "members": { - "id": {}, - "data": { - "shape": "S1x" - }, - "accountId": {} - } - } - } - } - }, - "GetPipeline": { - "input": { - "type": "structure", - "required": [ - "name" - ], - "members": { - "name": {}, - "version": { - "type": "integer" - } - } - }, - "output": { - "type": "structure", - "members": { - "pipeline": { - "shape": "Sv" - }, - "metadata": { - "type": "structure", - "members": { - "pipelineArn": {}, - "created": { - "type": "timestamp" - }, - "updated": { - "type": "timestamp" - } - } - } - } - } - }, - "GetPipelineExecution": { - "input": { - "type": "structure", - "required": [ - "pipelineName", - "pipelineExecutionId" - ], - "members": { - "pipelineName": {}, - "pipelineExecutionId": {} - } - }, - "output": { - "type": "structure", - "members": { - "pipelineExecution": { - "type": "structure", - "members": { - "pipelineName": {}, - "pipelineVersion": { - "type": "integer" - }, - "pipelineExecutionId": {}, - "status": {}, - "artifactRevisions": { - "type": "list", - "member": { - "type": "structure", - "members": { - "name": {}, - "revisionId": {}, - "revisionChangeIdentifier": {}, - "revisionSummary": {}, - "created": { - "type": "timestamp" - }, - "revisionUrl": {} - } - } - } - } - } - } - } - }, - "GetPipelineState": { - "input": { - "type": "structure", - "required": [ - "name" - ], - "members": { - "name": {} - } - }, - "output": { - "type": "structure", - "members": { - "pipelineName": {}, - "pipelineVersion": { - "type": "integer" - }, - "stageStates": { - "type": "list", - "member": { - "type": "structure", - "members": { - "stageName": {}, - "inboundTransitionState": { - "type": "structure", - "members": { - "enabled": { - "type": "boolean" - }, - "lastChangedBy": {}, - "lastChangedAt": { - "type": "timestamp" - }, - "disabledReason": {} - } - }, - "actionStates": { - "type": "list", - "member": { - "type": "structure", - "members": { - "actionName": {}, - "currentRevision": { - "shape": "S34" - }, - "latestExecution": { - "type": "structure", - "members": { - "status": {}, - "summary": {}, - "lastStatusChange": { - "type": "timestamp" - }, - "token": {}, - "lastUpdatedBy": {}, - "externalExecutionId": {}, - "externalExecutionUrl": {}, - "percentComplete": { - "type": "integer" - }, - "errorDetails": { - "type": "structure", - "members": { - "code": {}, - "message": {} - } - } - } - }, - "entityUrl": {}, - "revisionUrl": {} - } - } - }, - "latestExecution": { - "type": "structure", - "required": [ - "pipelineExecutionId", - "status" - ], - "members": { - "pipelineExecutionId": {}, - "status": {} - } - } - } - } - }, - "created": { - "type": "timestamp" - }, - "updated": { - "type": "timestamp" - } - } - } - }, - "GetThirdPartyJobDetails": { - "input": { - "type": "structure", - "required": [ - "jobId", - "clientToken" - ], - "members": { - "jobId": {}, - "clientToken": {} - } - }, - "output": { - "type": "structure", - "members": { - "jobDetails": { - "type": "structure", - "members": { - "id": {}, - "data": { - "type": "structure", - "members": { - "actionTypeId": { - "shape": "Ss" - }, - "actionConfiguration": { - "shape": "S1y" - }, - "pipelineContext": { - "shape": "S1z" - }, - "inputArtifacts": { - "shape": "S22" - }, - "outputArtifacts": { - "shape": "S22" - }, - "artifactCredentials": { - "shape": "S2a" - }, - "continuationToken": {}, - "encryptionKey": { - "shape": "S11" - } - } - }, - "nonce": {} - } - } - } - } - }, - "ListActionTypes": { - "input": { - "type": "structure", - "members": { - "actionOwnerFilter": {}, - "nextToken": {} - } - }, - "output": { - "type": "structure", - "required": [ - "actionTypes" - ], - "members": { - "actionTypes": { - "type": "list", - "member": { - "shape": "Sr" - } - }, - "nextToken": {} - } - } - }, - "ListPipelineExecutions": { - "input": { - "type": "structure", - "required": [ - "pipelineName" - ], - "members": { - "pipelineName": {}, - "maxResults": { - "type": "integer" - }, - "nextToken": {} - } - }, - "output": { - "type": "structure", - "members": { - "pipelineExecutionSummaries": { - "type": "list", - "member": { - "type": "structure", - "members": { - "pipelineExecutionId": {}, - "status": {}, - "startTime": { - "type": "timestamp" - }, - "lastUpdateTime": { - "type": "timestamp" - } - } - } - }, - "nextToken": {} - } - } - }, - "ListPipelines": { - "input": { - "type": "structure", - "members": { - "nextToken": {} - } - }, - "output": { - "type": "structure", - "members": { - "pipelines": { - "type": "list", - "member": { - "type": "structure", - "members": { - "name": {}, - "version": { - "type": "integer" - }, - "created": { - "type": "timestamp" - }, - "updated": { - "type": "timestamp" - } - } - } - }, - "nextToken": {} - } - } - }, - "PollForJobs": { - "input": { - "type": "structure", - "required": [ - "actionTypeId" - ], - "members": { - "actionTypeId": { - "shape": "Ss" - }, - "maxBatchSize": { - "type": "integer" - }, - "queryParam": { - "type": "map", - "key": {}, - "value": {} - } - } - }, - "output": { - "type": "structure", - "members": { - "jobs": { - "type": "list", - "member": { - "type": "structure", - "members": { - "id": {}, - "data": { - "shape": "S1x" - }, - "nonce": {}, - "accountId": {} - } - } - } - } - } - }, - "PollForThirdPartyJobs": { - "input": { - "type": "structure", - "required": [ - "actionTypeId" - ], - "members": { - "actionTypeId": { - "shape": "Ss" - }, - "maxBatchSize": { - "type": "integer" - } - } - }, - "output": { - "type": "structure", - "members": { - "jobs": { - "type": "list", - "member": { - "type": "structure", - "members": { - "clientId": {}, - "jobId": {} - } - } - } - } - } - }, - "PutActionRevision": { - "input": { - "type": "structure", - "required": [ - "pipelineName", - "stageName", - "actionName", - "actionRevision" - ], - "members": { - "pipelineName": {}, - "stageName": {}, - "actionName": {}, - "actionRevision": { - "shape": "S34" - } - } - }, - "output": { - "type": "structure", - "members": { - "newRevision": { - "type": "boolean" - }, - "pipelineExecutionId": {} - } - } - }, - "PutApprovalResult": { - "input": { - "type": "structure", - "required": [ - "pipelineName", - "stageName", - "actionName", - "result", - "token" - ], - "members": { - "pipelineName": {}, - "stageName": {}, - "actionName": {}, - "result": { - "type": "structure", - "required": [ - "summary", - "status" - ], - "members": { - "summary": {}, - "status": {} - } - }, - "token": {} - } - }, - "output": { - "type": "structure", - "members": { - "approvedAt": { - "type": "timestamp" - } - } - } - }, - "PutJobFailureResult": { - "input": { - "type": "structure", - "required": [ - "jobId", - "failureDetails" - ], - "members": { - "jobId": {}, - "failureDetails": { - "shape": "S4j" - } - } - } - }, - "PutJobSuccessResult": { - "input": { - "type": "structure", - "required": [ - "jobId" - ], - "members": { - "jobId": {}, - "currentRevision": { - "shape": "S4m" - }, - "continuationToken": {}, - "executionDetails": { - "shape": "S4o" - } - } - } - }, - "PutThirdPartyJobFailureResult": { - "input": { - "type": "structure", - "required": [ - "jobId", - "clientToken", - "failureDetails" - ], - "members": { - "jobId": {}, - "clientToken": {}, - "failureDetails": { - "shape": "S4j" - } - } - } - }, - "PutThirdPartyJobSuccessResult": { - "input": { - "type": "structure", - "required": [ - "jobId", - "clientToken" - ], - "members": { - "jobId": {}, - "clientToken": {}, - "currentRevision": { - "shape": "S4m" - }, - "continuationToken": {}, - "executionDetails": { - "shape": "S4o" - } - } - } - }, - "RetryStageExecution": { - "input": { - "type": "structure", - "required": [ - "pipelineName", - "stageName", - "pipelineExecutionId", - "retryMode" - ], - "members": { - "pipelineName": {}, - "stageName": {}, - "pipelineExecutionId": {}, - "retryMode": {} - } - }, - "output": { - "type": "structure", - "members": { - "pipelineExecutionId": {} - } - } - }, - "StartPipelineExecution": { - "input": { - "type": "structure", - "required": [ - "name" - ], - "members": { - "name": {} - } - }, - "output": { - "type": "structure", - "members": { - "pipelineExecutionId": {} - } - } - }, - "UpdatePipeline": { - "input": { - "type": "structure", - "required": [ - "pipeline" - ], - "members": { - "pipeline": { - "shape": "Sv" - } - } - }, - "output": { - "type": "structure", - "members": { - "pipeline": { - "shape": "Sv" - } - } - } - } - }, - "shapes": { - "Se": { - "type": "structure", - "members": { - "thirdPartyConfigurationUrl": {}, - "entityUrlTemplate": {}, - "executionUrlTemplate": {}, - "revisionUrlTemplate": {} - } - }, - "Sh": { - "type": "list", - "member": { - "type": "structure", - "required": [ - "name", - "required", - "key", - "secret" - ], - "members": { - "name": {}, - "required": { - "type": "boolean" - }, - "key": { - "type": "boolean" - }, - "secret": { - "type": "boolean" - }, - "queryable": { - "type": "boolean" - }, - "description": {}, - "type": {} - } - } - }, - "Sn": { - "type": "structure", - "required": [ - "minimumCount", - "maximumCount" - ], - "members": { - "minimumCount": { - "type": "integer" - }, - "maximumCount": { - "type": "integer" - } - } - }, - "Sr": { - "type": "structure", - "required": [ - "id", - "inputArtifactDetails", - "outputArtifactDetails" - ], - "members": { - "id": { - "shape": "Ss" - }, - "settings": { - "shape": "Se" - }, - "actionConfigurationProperties": { - "shape": "Sh" - }, - "inputArtifactDetails": { - "shape": "Sn" - }, - "outputArtifactDetails": { - "shape": "Sn" - } - } - }, - "Ss": { - "type": "structure", - "required": [ - "category", - "owner", - "provider", - "version" - ], - "members": { - "category": {}, - "owner": {}, - "provider": {}, - "version": {} - } - }, - "Sv": { - "type": "structure", - "required": [ - "name", - "roleArn", - "artifactStore", - "stages" - ], - "members": { - "name": {}, - "roleArn": {}, - "artifactStore": { - "type": "structure", - "required": [ - "type", - "location" - ], - "members": { - "type": {}, - "location": {}, - "encryptionKey": { - "shape": "S11" - } - } - }, - "stages": { - "type": "list", - "member": { - "type": "structure", - "required": [ - "name", - "actions" - ], - "members": { - "name": {}, - "blockers": { - "type": "list", - "member": { - "type": "structure", - "required": [ - "name", - "type" - ], - "members": { - "name": {}, - "type": {} - } - } - }, - "actions": { - "type": "list", - "member": { - "type": "structure", - "required": [ - "name", - "actionTypeId" - ], - "members": { - "name": {}, - "actionTypeId": { - "shape": "Ss" - }, - "runOrder": { - "type": "integer" - }, - "configuration": { - "shape": "S1f" - }, - "outputArtifacts": { - "type": "list", - "member": { - "type": "structure", - "required": [ - "name" - ], - "members": { - "name": {} - } - } - }, - "inputArtifacts": { - "type": "list", - "member": { - "type": "structure", - "required": [ - "name" - ], - "members": { - "name": {} - } - } - }, - "roleArn": {} - } - } - } - } - } - }, - "version": { - "type": "integer" - } - } - }, - "S11": { - "type": "structure", - "required": [ - "id", - "type" - ], - "members": { - "id": {}, - "type": {} - } - }, - "S1f": { - "type": "map", - "key": {}, - "value": {} - }, - "S1x": { - "type": "structure", - "members": { - "actionTypeId": { - "shape": "Ss" - }, - "actionConfiguration": { - "shape": "S1y" - }, - "pipelineContext": { - "shape": "S1z" - }, - "inputArtifacts": { - "shape": "S22" - }, - "outputArtifacts": { - "shape": "S22" - }, - "artifactCredentials": { - "shape": "S2a" - }, - "continuationToken": {}, - "encryptionKey": { - "shape": "S11" - } - } - }, - "S1y": { - "type": "structure", - "members": { - "configuration": { - "shape": "S1f" - } - } - }, - "S1z": { - "type": "structure", - "members": { - "pipelineName": {}, - "stage": { - "type": "structure", - "members": { - "name": {} - } - }, - "action": { - "type": "structure", - "members": { - "name": {} - } - } - } - }, - "S22": { - "type": "list", - "member": { - "type": "structure", - "members": { - "name": {}, - "revision": {}, - "location": { - "type": "structure", - "members": { - "type": {}, - "s3Location": { - "type": "structure", - "required": [ - "bucketName", - "objectKey" - ], - "members": { - "bucketName": {}, - "objectKey": {} - } - } - } - } - } - } - }, - "S2a": { - "type": "structure", - "required": [ - "accessKeyId", - "secretAccessKey", - "sessionToken" - ], - "members": { - "accessKeyId": {}, - "secretAccessKey": {}, - "sessionToken": {} - }, - "sensitive": true - }, - "S34": { - "type": "structure", - "required": [ - "revisionId", - "revisionChangeId", - "created" - ], - "members": { - "revisionId": {}, - "revisionChangeId": {}, - "created": { - "type": "timestamp" - } - } - }, - "S4j": { - "type": "structure", - "required": [ - "type", - "message" - ], - "members": { - "type": {}, - "message": {}, - "externalExecutionId": {} - } - }, - "S4m": { - "type": "structure", - "required": [ - "revision", - "changeIdentifier" - ], - "members": { - "revision": {}, - "changeIdentifier": {}, - "created": { - "type": "timestamp" - }, - "revisionSummary": {} - } - }, - "S4o": { - "type": "structure", - "members": { - "summary": {}, - "externalExecutionId": {}, - "percentComplete": { - "type": "integer" - } - } - } - } -} \ No newline at end of file diff --git a/workshops/monte-carlo-on-ec2-spot-fleet/src/web/node_modules/aws-sdk/apis/codepipeline-2015-07-09.paginators.json b/workshops/monte-carlo-on-ec2-spot-fleet/src/web/node_modules/aws-sdk/apis/codepipeline-2015-07-09.paginators.json deleted file mode 100644 index 5677bd8e..00000000 --- a/workshops/monte-carlo-on-ec2-spot-fleet/src/web/node_modules/aws-sdk/apis/codepipeline-2015-07-09.paginators.json +++ /dev/null @@ -1,4 +0,0 @@ -{ - "pagination": { - } -} diff --git a/workshops/monte-carlo-on-ec2-spot-fleet/src/web/node_modules/aws-sdk/apis/codestar-2017-04-19.examples.json b/workshops/monte-carlo-on-ec2-spot-fleet/src/web/node_modules/aws-sdk/apis/codestar-2017-04-19.examples.json deleted file mode 100644 index 0ea7e3b0..00000000 --- a/workshops/monte-carlo-on-ec2-spot-fleet/src/web/node_modules/aws-sdk/apis/codestar-2017-04-19.examples.json +++ /dev/null @@ -1,5 +0,0 @@ -{ - "version": "1.0", - "examples": { - } -} diff --git a/workshops/monte-carlo-on-ec2-spot-fleet/src/web/node_modules/aws-sdk/apis/codestar-2017-04-19.min.json b/workshops/monte-carlo-on-ec2-spot-fleet/src/web/node_modules/aws-sdk/apis/codestar-2017-04-19.min.json deleted file mode 100644 index 38ae06ad..00000000 --- a/workshops/monte-carlo-on-ec2-spot-fleet/src/web/node_modules/aws-sdk/apis/codestar-2017-04-19.min.json +++ /dev/null @@ -1,541 +0,0 @@ -{ - "version": "2.0", - "metadata": { - "apiVersion": "2017-04-19", - "endpointPrefix": "codestar", - "jsonVersion": "1.1", - "protocol": "json", - "serviceAbbreviation": "CodeStar", - "serviceFullName": "AWS CodeStar", - "signatureVersion": "v4", - "targetPrefix": "CodeStar_20170419", - "uid": "codestar-2017-04-19" - }, - "operations": { - "AssociateTeamMember": { - "input": { - "type": "structure", - "required": [ - "projectId", - "userArn", - "projectRole" - ], - "members": { - "projectId": {}, - "clientRequestToken": {}, - "userArn": {}, - "projectRole": {}, - "remoteAccessAllowed": { - "type": "boolean" - } - } - }, - "output": { - "type": "structure", - "members": { - "clientRequestToken": {} - } - } - }, - "CreateProject": { - "input": { - "type": "structure", - "required": [ - "name", - "id" - ], - "members": { - "name": { - "shape": "S9" - }, - "id": {}, - "description": { - "shape": "Sa" - }, - "clientRequestToken": {} - } - }, - "output": { - "type": "structure", - "required": [ - "id", - "arn" - ], - "members": { - "id": {}, - "arn": {}, - "clientRequestToken": {}, - "projectTemplateId": {} - } - } - }, - "CreateUserProfile": { - "input": { - "type": "structure", - "required": [ - "userArn", - "displayName", - "emailAddress" - ], - "members": { - "userArn": {}, - "displayName": {}, - "emailAddress": { - "shape": "Sg" - }, - "sshPublicKey": {} - } - }, - "output": { - "type": "structure", - "required": [ - "userArn" - ], - "members": { - "userArn": {}, - "displayName": {}, - "emailAddress": { - "shape": "Sg" - }, - "sshPublicKey": {}, - "createdTimestamp": { - "type": "timestamp" - }, - "lastModifiedTimestamp": { - "type": "timestamp" - } - } - } - }, - "DeleteProject": { - "input": { - "type": "structure", - "required": [ - "id" - ], - "members": { - "id": {}, - "clientRequestToken": {}, - "deleteStack": { - "type": "boolean" - } - } - }, - "output": { - "type": "structure", - "members": { - "stackId": {}, - "projectArn": {} - } - } - }, - "DeleteUserProfile": { - "input": { - "type": "structure", - "required": [ - "userArn" - ], - "members": { - "userArn": {} - } - }, - "output": { - "type": "structure", - "required": [ - "userArn" - ], - "members": { - "userArn": {} - } - } - }, - "DescribeProject": { - "input": { - "type": "structure", - "required": [ - "id" - ], - "members": { - "id": {} - } - }, - "output": { - "type": "structure", - "members": { - "name": { - "shape": "S9" - }, - "id": {}, - "arn": {}, - "description": { - "shape": "Sa" - }, - "clientRequestToken": {}, - "createdTimeStamp": { - "type": "timestamp" - }, - "stackId": {}, - "projectTemplateId": {} - } - } - }, - "DescribeUserProfile": { - "input": { - "type": "structure", - "required": [ - "userArn" - ], - "members": { - "userArn": {} - } - }, - "output": { - "type": "structure", - "required": [ - "userArn", - "createdTimestamp", - "lastModifiedTimestamp" - ], - "members": { - "userArn": {}, - "displayName": {}, - "emailAddress": { - "shape": "Sg" - }, - "sshPublicKey": {}, - "createdTimestamp": { - "type": "timestamp" - }, - "lastModifiedTimestamp": { - "type": "timestamp" - } - } - } - }, - "DisassociateTeamMember": { - "input": { - "type": "structure", - "required": [ - "projectId", - "userArn" - ], - "members": { - "projectId": {}, - "userArn": {} - } - }, - "output": { - "type": "structure", - "members": {} - } - }, - "ListProjects": { - "input": { - "type": "structure", - "members": { - "nextToken": {}, - "maxResults": { - "type": "integer" - } - } - }, - "output": { - "type": "structure", - "required": [ - "projects" - ], - "members": { - "projects": { - "type": "list", - "member": { - "type": "structure", - "members": { - "projectId": {}, - "projectArn": {} - } - } - }, - "nextToken": {} - } - } - }, - "ListResources": { - "input": { - "type": "structure", - "required": [ - "projectId" - ], - "members": { - "projectId": {}, - "nextToken": {}, - "maxResults": { - "type": "integer" - } - } - }, - "output": { - "type": "structure", - "members": { - "resources": { - "type": "list", - "member": { - "type": "structure", - "required": [ - "id" - ], - "members": { - "id": {} - } - } - }, - "nextToken": {} - } - } - }, - "ListTagsForProject": { - "input": { - "type": "structure", - "required": [ - "id" - ], - "members": { - "id": {}, - "nextToken": {}, - "maxResults": { - "type": "integer" - } - } - }, - "output": { - "type": "structure", - "members": { - "tags": { - "shape": "S1a" - }, - "nextToken": {} - } - } - }, - "ListTeamMembers": { - "input": { - "type": "structure", - "required": [ - "projectId" - ], - "members": { - "projectId": {}, - "nextToken": {}, - "maxResults": { - "type": "integer" - } - } - }, - "output": { - "type": "structure", - "required": [ - "teamMembers" - ], - "members": { - "teamMembers": { - "type": "list", - "member": { - "type": "structure", - "required": [ - "userArn", - "projectRole" - ], - "members": { - "userArn": {}, - "projectRole": {}, - "remoteAccessAllowed": { - "type": "boolean" - } - } - } - }, - "nextToken": {} - } - } - }, - "ListUserProfiles": { - "input": { - "type": "structure", - "members": { - "nextToken": {}, - "maxResults": { - "type": "integer" - } - } - }, - "output": { - "type": "structure", - "required": [ - "userProfiles" - ], - "members": { - "userProfiles": { - "type": "list", - "member": { - "type": "structure", - "members": { - "userArn": {}, - "displayName": {}, - "emailAddress": { - "shape": "Sg" - }, - "sshPublicKey": {} - } - } - }, - "nextToken": {} - } - } - }, - "TagProject": { - "input": { - "type": "structure", - "required": [ - "id", - "tags" - ], - "members": { - "id": {}, - "tags": { - "shape": "S1a" - } - } - }, - "output": { - "type": "structure", - "members": { - "tags": { - "shape": "S1a" - } - } - } - }, - "UntagProject": { - "input": { - "type": "structure", - "required": [ - "id", - "tags" - ], - "members": { - "id": {}, - "tags": { - "type": "list", - "member": {} - } - } - }, - "output": { - "type": "structure", - "members": {} - } - }, - "UpdateProject": { - "input": { - "type": "structure", - "required": [ - "id" - ], - "members": { - "id": {}, - "name": { - "shape": "S9" - }, - "description": { - "shape": "Sa" - } - } - }, - "output": { - "type": "structure", - "members": {} - } - }, - "UpdateTeamMember": { - "input": { - "type": "structure", - "required": [ - "projectId", - "userArn" - ], - "members": { - "projectId": {}, - "userArn": {}, - "projectRole": {}, - "remoteAccessAllowed": { - "type": "boolean" - } - } - }, - "output": { - "type": "structure", - "members": { - "userArn": {}, - "projectRole": {}, - "remoteAccessAllowed": { - "type": "boolean" - } - } - } - }, - "UpdateUserProfile": { - "input": { - "type": "structure", - "required": [ - "userArn" - ], - "members": { - "userArn": {}, - "displayName": {}, - "emailAddress": { - "shape": "Sg" - }, - "sshPublicKey": {} - } - }, - "output": { - "type": "structure", - "required": [ - "userArn" - ], - "members": { - "userArn": {}, - "displayName": {}, - "emailAddress": { - "shape": "Sg" - }, - "sshPublicKey": {}, - "createdTimestamp": { - "type": "timestamp" - }, - "lastModifiedTimestamp": { - "type": "timestamp" - } - } - } - } - }, - "shapes": { - "S9": { - "type": "string", - "sensitive": true - }, - "Sa": { - "type": "string", - "sensitive": true - }, - "Sg": { - "type": "string", - "sensitive": true - }, - "S1a": { - "type": "map", - "key": {}, - "value": {} - } - } -} \ No newline at end of file diff --git a/workshops/monte-carlo-on-ec2-spot-fleet/src/web/node_modules/aws-sdk/apis/codestar-2017-04-19.paginators.json b/workshops/monte-carlo-on-ec2-spot-fleet/src/web/node_modules/aws-sdk/apis/codestar-2017-04-19.paginators.json deleted file mode 100644 index 5677bd8e..00000000 --- a/workshops/monte-carlo-on-ec2-spot-fleet/src/web/node_modules/aws-sdk/apis/codestar-2017-04-19.paginators.json +++ /dev/null @@ -1,4 +0,0 @@ -{ - "pagination": { - } -} diff --git a/workshops/monte-carlo-on-ec2-spot-fleet/src/web/node_modules/aws-sdk/apis/cognito-identity-2014-06-30.min.json b/workshops/monte-carlo-on-ec2-spot-fleet/src/web/node_modules/aws-sdk/apis/cognito-identity-2014-06-30.min.json deleted file mode 100644 index cf64a504..00000000 --- a/workshops/monte-carlo-on-ec2-spot-fleet/src/web/node_modules/aws-sdk/apis/cognito-identity-2014-06-30.min.json +++ /dev/null @@ -1,537 +0,0 @@ -{ - "version": "2.0", - "metadata": { - "apiVersion": "2014-06-30", - "endpointPrefix": "cognito-identity", - "jsonVersion": "1.1", - "protocol": "json", - "serviceFullName": "Amazon Cognito Identity", - "signatureVersion": "v4", - "targetPrefix": "AWSCognitoIdentityService", - "uid": "cognito-identity-2014-06-30" - }, - "operations": { - "CreateIdentityPool": { - "input": { - "type": "structure", - "required": [ - "IdentityPoolName", - "AllowUnauthenticatedIdentities" - ], - "members": { - "IdentityPoolName": {}, - "AllowUnauthenticatedIdentities": { - "type": "boolean" - }, - "SupportedLoginProviders": { - "shape": "S4" - }, - "DeveloperProviderName": {}, - "OpenIdConnectProviderARNs": { - "shape": "S8" - }, - "CognitoIdentityProviders": { - "shape": "Sa" - }, - "SamlProviderARNs": { - "shape": "Sf" - } - } - }, - "output": { - "shape": "Sg" - } - }, - "DeleteIdentities": { - "input": { - "type": "structure", - "required": [ - "IdentityIdsToDelete" - ], - "members": { - "IdentityIdsToDelete": { - "type": "list", - "member": {} - } - } - }, - "output": { - "type": "structure", - "members": { - "UnprocessedIdentityIds": { - "type": "list", - "member": { - "type": "structure", - "members": { - "IdentityId": {}, - "ErrorCode": {} - } - } - } - } - } - }, - "DeleteIdentityPool": { - "input": { - "type": "structure", - "required": [ - "IdentityPoolId" - ], - "members": { - "IdentityPoolId": {} - } - } - }, - "DescribeIdentity": { - "input": { - "type": "structure", - "required": [ - "IdentityId" - ], - "members": { - "IdentityId": {} - } - }, - "output": { - "shape": "Sr" - } - }, - "DescribeIdentityPool": { - "input": { - "type": "structure", - "required": [ - "IdentityPoolId" - ], - "members": { - "IdentityPoolId": {} - } - }, - "output": { - "shape": "Sg" - } - }, - "GetCredentialsForIdentity": { - "input": { - "type": "structure", - "required": [ - "IdentityId" - ], - "members": { - "IdentityId": {}, - "Logins": { - "shape": "Sw" - }, - "CustomRoleArn": {} - } - }, - "output": { - "type": "structure", - "members": { - "IdentityId": {}, - "Credentials": { - "type": "structure", - "members": { - "AccessKeyId": {}, - "SecretKey": {}, - "SessionToken": {}, - "Expiration": { - "type": "timestamp" - } - } - } - } - } - }, - "GetId": { - "input": { - "type": "structure", - "required": [ - "IdentityPoolId" - ], - "members": { - "AccountId": {}, - "IdentityPoolId": {}, - "Logins": { - "shape": "Sw" - } - } - }, - "output": { - "type": "structure", - "members": { - "IdentityId": {} - } - } - }, - "GetIdentityPoolRoles": { - "input": { - "type": "structure", - "required": [ - "IdentityPoolId" - ], - "members": { - "IdentityPoolId": {} - } - }, - "output": { - "type": "structure", - "members": { - "IdentityPoolId": {}, - "Roles": { - "shape": "S18" - }, - "RoleMappings": { - "shape": "S1a" - } - } - } - }, - "GetOpenIdToken": { - "input": { - "type": "structure", - "required": [ - "IdentityId" - ], - "members": { - "IdentityId": {}, - "Logins": { - "shape": "Sw" - } - } - }, - "output": { - "type": "structure", - "members": { - "IdentityId": {}, - "Token": {} - } - } - }, - "GetOpenIdTokenForDeveloperIdentity": { - "input": { - "type": "structure", - "required": [ - "IdentityPoolId", - "Logins" - ], - "members": { - "IdentityPoolId": {}, - "IdentityId": {}, - "Logins": { - "shape": "Sw" - }, - "TokenDuration": { - "type": "long" - } - } - }, - "output": { - "type": "structure", - "members": { - "IdentityId": {}, - "Token": {} - } - } - }, - "ListIdentities": { - "input": { - "type": "structure", - "required": [ - "IdentityPoolId", - "MaxResults" - ], - "members": { - "IdentityPoolId": {}, - "MaxResults": { - "type": "integer" - }, - "NextToken": {}, - "HideDisabled": { - "type": "boolean" - } - } - }, - "output": { - "type": "structure", - "members": { - "IdentityPoolId": {}, - "Identities": { - "type": "list", - "member": { - "shape": "Sr" - } - }, - "NextToken": {} - } - } - }, - "ListIdentityPools": { - "input": { - "type": "structure", - "required": [ - "MaxResults" - ], - "members": { - "MaxResults": { - "type": "integer" - }, - "NextToken": {} - } - }, - "output": { - "type": "structure", - "members": { - "IdentityPools": { - "type": "list", - "member": { - "type": "structure", - "members": { - "IdentityPoolId": {}, - "IdentityPoolName": {} - } - } - }, - "NextToken": {} - } - } - }, - "LookupDeveloperIdentity": { - "input": { - "type": "structure", - "required": [ - "IdentityPoolId" - ], - "members": { - "IdentityPoolId": {}, - "IdentityId": {}, - "DeveloperUserIdentifier": {}, - "MaxResults": { - "type": "integer" - }, - "NextToken": {} - } - }, - "output": { - "type": "structure", - "members": { - "IdentityId": {}, - "DeveloperUserIdentifierList": { - "type": "list", - "member": {} - }, - "NextToken": {} - } - } - }, - "MergeDeveloperIdentities": { - "input": { - "type": "structure", - "required": [ - "SourceUserIdentifier", - "DestinationUserIdentifier", - "DeveloperProviderName", - "IdentityPoolId" - ], - "members": { - "SourceUserIdentifier": {}, - "DestinationUserIdentifier": {}, - "DeveloperProviderName": {}, - "IdentityPoolId": {} - } - }, - "output": { - "type": "structure", - "members": { - "IdentityId": {} - } - } - }, - "SetIdentityPoolRoles": { - "input": { - "type": "structure", - "required": [ - "IdentityPoolId", - "Roles" - ], - "members": { - "IdentityPoolId": {}, - "Roles": { - "shape": "S18" - }, - "RoleMappings": { - "shape": "S1a" - } - } - } - }, - "UnlinkDeveloperIdentity": { - "input": { - "type": "structure", - "required": [ - "IdentityId", - "IdentityPoolId", - "DeveloperProviderName", - "DeveloperUserIdentifier" - ], - "members": { - "IdentityId": {}, - "IdentityPoolId": {}, - "DeveloperProviderName": {}, - "DeveloperUserIdentifier": {} - } - } - }, - "UnlinkIdentity": { - "input": { - "type": "structure", - "required": [ - "IdentityId", - "Logins", - "LoginsToRemove" - ], - "members": { - "IdentityId": {}, - "Logins": { - "shape": "Sw" - }, - "LoginsToRemove": { - "shape": "Ss" - } - } - } - }, - "UpdateIdentityPool": { - "input": { - "shape": "Sg" - }, - "output": { - "shape": "Sg" - } - } - }, - "shapes": { - "S4": { - "type": "map", - "key": {}, - "value": {} - }, - "S8": { - "type": "list", - "member": {} - }, - "Sa": { - "type": "list", - "member": { - "type": "structure", - "members": { - "ProviderName": {}, - "ClientId": {}, - "ServerSideTokenCheck": { - "type": "boolean" - } - } - } - }, - "Sf": { - "type": "list", - "member": {} - }, - "Sg": { - "type": "structure", - "required": [ - "IdentityPoolId", - "IdentityPoolName", - "AllowUnauthenticatedIdentities" - ], - "members": { - "IdentityPoolId": {}, - "IdentityPoolName": {}, - "AllowUnauthenticatedIdentities": { - "type": "boolean" - }, - "SupportedLoginProviders": { - "shape": "S4" - }, - "DeveloperProviderName": {}, - "OpenIdConnectProviderARNs": { - "shape": "S8" - }, - "CognitoIdentityProviders": { - "shape": "Sa" - }, - "SamlProviderARNs": { - "shape": "Sf" - } - } - }, - "Sr": { - "type": "structure", - "members": { - "IdentityId": {}, - "Logins": { - "shape": "Ss" - }, - "CreationDate": { - "type": "timestamp" - }, - "LastModifiedDate": { - "type": "timestamp" - } - } - }, - "Ss": { - "type": "list", - "member": {} - }, - "Sw": { - "type": "map", - "key": {}, - "value": {} - }, - "S18": { - "type": "map", - "key": {}, - "value": {} - }, - "S1a": { - "type": "map", - "key": {}, - "value": { - "type": "structure", - "required": [ - "Type" - ], - "members": { - "Type": {}, - "AmbiguousRoleResolution": {}, - "RulesConfiguration": { - "type": "structure", - "required": [ - "Rules" - ], - "members": { - "Rules": { - "type": "list", - "member": { - "type": "structure", - "required": [ - "Claim", - "MatchType", - "Value", - "RoleARN" - ], - "members": { - "Claim": {}, - "MatchType": {}, - "Value": {}, - "RoleARN": {} - } - } - } - } - } - } - } - } - } -} \ No newline at end of file diff --git a/workshops/monte-carlo-on-ec2-spot-fleet/src/web/node_modules/aws-sdk/apis/cognito-identity-2014-06-30.paginators.json b/workshops/monte-carlo-on-ec2-spot-fleet/src/web/node_modules/aws-sdk/apis/cognito-identity-2014-06-30.paginators.json deleted file mode 100644 index 5677bd8e..00000000 --- a/workshops/monte-carlo-on-ec2-spot-fleet/src/web/node_modules/aws-sdk/apis/cognito-identity-2014-06-30.paginators.json +++ /dev/null @@ -1,4 +0,0 @@ -{ - "pagination": { - } -} diff --git a/workshops/monte-carlo-on-ec2-spot-fleet/src/web/node_modules/aws-sdk/apis/cognito-idp-2016-04-18.examples.json b/workshops/monte-carlo-on-ec2-spot-fleet/src/web/node_modules/aws-sdk/apis/cognito-idp-2016-04-18.examples.json deleted file mode 100644 index 0ea7e3b0..00000000 --- a/workshops/monte-carlo-on-ec2-spot-fleet/src/web/node_modules/aws-sdk/apis/cognito-idp-2016-04-18.examples.json +++ /dev/null @@ -1,5 +0,0 @@ -{ - "version": "1.0", - "examples": { - } -} diff --git a/workshops/monte-carlo-on-ec2-spot-fleet/src/web/node_modules/aws-sdk/apis/cognito-idp-2016-04-18.min.json b/workshops/monte-carlo-on-ec2-spot-fleet/src/web/node_modules/aws-sdk/apis/cognito-idp-2016-04-18.min.json deleted file mode 100644 index 90a11f3f..00000000 --- a/workshops/monte-carlo-on-ec2-spot-fleet/src/web/node_modules/aws-sdk/apis/cognito-idp-2016-04-18.min.json +++ /dev/null @@ -1,2782 +0,0 @@ -{ - "version": "2.0", - "metadata": { - "apiVersion": "2016-04-18", - "endpointPrefix": "cognito-idp", - "jsonVersion": "1.1", - "protocol": "json", - "serviceFullName": "Amazon Cognito Identity Provider", - "signatureVersion": "v4", - "targetPrefix": "AWSCognitoIdentityProviderService", - "uid": "cognito-idp-2016-04-18" - }, - "operations": { - "AddCustomAttributes": { - "input": { - "type": "structure", - "required": [ - "UserPoolId", - "CustomAttributes" - ], - "members": { - "UserPoolId": {}, - "CustomAttributes": { - "type": "list", - "member": { - "shape": "S4" - } - } - } - }, - "output": { - "type": "structure", - "members": {} - } - }, - "AdminAddUserToGroup": { - "input": { - "type": "structure", - "required": [ - "UserPoolId", - "Username", - "GroupName" - ], - "members": { - "UserPoolId": {}, - "Username": { - "shape": "Sd" - }, - "GroupName": {} - } - } - }, - "AdminConfirmSignUp": { - "input": { - "type": "structure", - "required": [ - "UserPoolId", - "Username" - ], - "members": { - "UserPoolId": {}, - "Username": { - "shape": "Sd" - } - } - }, - "output": { - "type": "structure", - "members": {} - } - }, - "AdminCreateUser": { - "input": { - "type": "structure", - "required": [ - "UserPoolId", - "Username" - ], - "members": { - "UserPoolId": {}, - "Username": { - "shape": "Sd" - }, - "UserAttributes": { - "shape": "Si" - }, - "ValidationData": { - "shape": "Si" - }, - "TemporaryPassword": { - "shape": "Sm" - }, - "ForceAliasCreation": { - "type": "boolean" - }, - "MessageAction": {}, - "DesiredDeliveryMediums": { - "type": "list", - "member": {} - } - } - }, - "output": { - "type": "structure", - "members": { - "User": { - "shape": "Ss" - } - } - } - }, - "AdminDeleteUser": { - "input": { - "type": "structure", - "required": [ - "UserPoolId", - "Username" - ], - "members": { - "UserPoolId": {}, - "Username": { - "shape": "Sd" - } - } - } - }, - "AdminDeleteUserAttributes": { - "input": { - "type": "structure", - "required": [ - "UserPoolId", - "Username", - "UserAttributeNames" - ], - "members": { - "UserPoolId": {}, - "Username": { - "shape": "Sd" - }, - "UserAttributeNames": { - "shape": "Sz" - } - } - }, - "output": { - "type": "structure", - "members": {} - } - }, - "AdminDisableProviderForUser": { - "input": { - "type": "structure", - "required": [ - "UserPoolId", - "User" - ], - "members": { - "UserPoolId": {}, - "User": { - "shape": "S12" - } - } - }, - "output": { - "type": "structure", - "members": {} - } - }, - "AdminDisableUser": { - "input": { - "type": "structure", - "required": [ - "UserPoolId", - "Username" - ], - "members": { - "UserPoolId": {}, - "Username": { - "shape": "Sd" - } - } - }, - "output": { - "type": "structure", - "members": {} - } - }, - "AdminEnableUser": { - "input": { - "type": "structure", - "required": [ - "UserPoolId", - "Username" - ], - "members": { - "UserPoolId": {}, - "Username": { - "shape": "Sd" - } - } - }, - "output": { - "type": "structure", - "members": {} - } - }, - "AdminForgetDevice": { - "input": { - "type": "structure", - "required": [ - "UserPoolId", - "Username", - "DeviceKey" - ], - "members": { - "UserPoolId": {}, - "Username": { - "shape": "Sd" - }, - "DeviceKey": {} - } - } - }, - "AdminGetDevice": { - "input": { - "type": "structure", - "required": [ - "DeviceKey", - "UserPoolId", - "Username" - ], - "members": { - "DeviceKey": {}, - "UserPoolId": {}, - "Username": { - "shape": "Sd" - } - } - }, - "output": { - "type": "structure", - "required": [ - "Device" - ], - "members": { - "Device": { - "shape": "S1d" - } - } - } - }, - "AdminGetUser": { - "input": { - "type": "structure", - "required": [ - "UserPoolId", - "Username" - ], - "members": { - "UserPoolId": {}, - "Username": { - "shape": "Sd" - } - } - }, - "output": { - "type": "structure", - "required": [ - "Username" - ], - "members": { - "Username": { - "shape": "Sd" - }, - "UserAttributes": { - "shape": "Si" - }, - "UserCreateDate": { - "type": "timestamp" - }, - "UserLastModifiedDate": { - "type": "timestamp" - }, - "Enabled": { - "type": "boolean" - }, - "UserStatus": {}, - "MFAOptions": { - "shape": "Sv" - } - } - } - }, - "AdminInitiateAuth": { - "input": { - "type": "structure", - "required": [ - "UserPoolId", - "ClientId", - "AuthFlow" - ], - "members": { - "UserPoolId": {}, - "ClientId": { - "shape": "S1h" - }, - "AuthFlow": {}, - "AuthParameters": { - "shape": "S1j" - }, - "ClientMetadata": { - "shape": "S1k" - } - } - }, - "output": { - "type": "structure", - "members": { - "ChallengeName": {}, - "Session": {}, - "ChallengeParameters": { - "shape": "S1o" - }, - "AuthenticationResult": { - "shape": "S1p" - } - } - } - }, - "AdminLinkProviderForUser": { - "input": { - "type": "structure", - "required": [ - "UserPoolId", - "DestinationUser", - "SourceUser" - ], - "members": { - "UserPoolId": {}, - "DestinationUser": { - "shape": "S12" - }, - "SourceUser": { - "shape": "S12" - } - } - }, - "output": { - "type": "structure", - "members": {} - } - }, - "AdminListDevices": { - "input": { - "type": "structure", - "required": [ - "UserPoolId", - "Username" - ], - "members": { - "UserPoolId": {}, - "Username": { - "shape": "Sd" - }, - "Limit": { - "type": "integer" - }, - "PaginationToken": {} - } - }, - "output": { - "type": "structure", - "members": { - "Devices": { - "shape": "S1z" - }, - "PaginationToken": {} - } - } - }, - "AdminListGroupsForUser": { - "input": { - "type": "structure", - "required": [ - "Username", - "UserPoolId" - ], - "members": { - "Username": { - "shape": "Sd" - }, - "UserPoolId": {}, - "Limit": { - "type": "integer" - }, - "NextToken": {} - } - }, - "output": { - "type": "structure", - "members": { - "Groups": { - "shape": "S23" - }, - "NextToken": {} - } - } - }, - "AdminRemoveUserFromGroup": { - "input": { - "type": "structure", - "required": [ - "UserPoolId", - "Username", - "GroupName" - ], - "members": { - "UserPoolId": {}, - "Username": { - "shape": "Sd" - }, - "GroupName": {} - } - } - }, - "AdminResetUserPassword": { - "input": { - "type": "structure", - "required": [ - "UserPoolId", - "Username" - ], - "members": { - "UserPoolId": {}, - "Username": { - "shape": "Sd" - } - } - }, - "output": { - "type": "structure", - "members": {} - } - }, - "AdminRespondToAuthChallenge": { - "input": { - "type": "structure", - "required": [ - "UserPoolId", - "ClientId", - "ChallengeName" - ], - "members": { - "UserPoolId": {}, - "ClientId": { - "shape": "S1h" - }, - "ChallengeName": {}, - "ChallengeResponses": { - "shape": "S2c" - }, - "Session": {} - } - }, - "output": { - "type": "structure", - "members": { - "ChallengeName": {}, - "Session": {}, - "ChallengeParameters": { - "shape": "S1o" - }, - "AuthenticationResult": { - "shape": "S1p" - } - } - } - }, - "AdminSetUserSettings": { - "input": { - "type": "structure", - "required": [ - "UserPoolId", - "Username", - "MFAOptions" - ], - "members": { - "UserPoolId": {}, - "Username": { - "shape": "Sd" - }, - "MFAOptions": { - "shape": "Sv" - } - } - }, - "output": { - "type": "structure", - "members": {} - } - }, - "AdminUpdateDeviceStatus": { - "input": { - "type": "structure", - "required": [ - "UserPoolId", - "Username", - "DeviceKey" - ], - "members": { - "UserPoolId": {}, - "Username": { - "shape": "Sd" - }, - "DeviceKey": {}, - "DeviceRememberedStatus": {} - } - }, - "output": { - "type": "structure", - "members": {} - } - }, - "AdminUpdateUserAttributes": { - "input": { - "type": "structure", - "required": [ - "UserPoolId", - "Username", - "UserAttributes" - ], - "members": { - "UserPoolId": {}, - "Username": { - "shape": "Sd" - }, - "UserAttributes": { - "shape": "Si" - } - } - }, - "output": { - "type": "structure", - "members": {} - } - }, - "AdminUserGlobalSignOut": { - "input": { - "type": "structure", - "required": [ - "UserPoolId", - "Username" - ], - "members": { - "UserPoolId": {}, - "Username": { - "shape": "Sd" - } - } - }, - "output": { - "type": "structure", - "members": {} - } - }, - "ChangePassword": { - "input": { - "type": "structure", - "required": [ - "PreviousPassword", - "ProposedPassword", - "AccessToken" - ], - "members": { - "PreviousPassword": { - "shape": "Sm" - }, - "ProposedPassword": { - "shape": "Sm" - }, - "AccessToken": { - "shape": "S1q" - } - } - }, - "output": { - "type": "structure", - "members": {} - }, - "authtype": "none" - }, - "ConfirmDevice": { - "input": { - "type": "structure", - "required": [ - "AccessToken", - "DeviceKey" - ], - "members": { - "AccessToken": { - "shape": "S1q" - }, - "DeviceKey": {}, - "DeviceSecretVerifierConfig": { - "type": "structure", - "members": { - "PasswordVerifier": {}, - "Salt": {} - } - }, - "DeviceName": {} - } - }, - "output": { - "type": "structure", - "members": { - "UserConfirmationNecessary": { - "type": "boolean" - } - } - } - }, - "ConfirmForgotPassword": { - "input": { - "type": "structure", - "required": [ - "ClientId", - "Username", - "ConfirmationCode", - "Password" - ], - "members": { - "ClientId": { - "shape": "S1h" - }, - "SecretHash": { - "shape": "S2u" - }, - "Username": { - "shape": "Sd" - }, - "ConfirmationCode": {}, - "Password": { - "shape": "Sm" - } - } - }, - "output": { - "type": "structure", - "members": {} - }, - "authtype": "none" - }, - "ConfirmSignUp": { - "input": { - "type": "structure", - "required": [ - "ClientId", - "Username", - "ConfirmationCode" - ], - "members": { - "ClientId": { - "shape": "S1h" - }, - "SecretHash": { - "shape": "S2u" - }, - "Username": { - "shape": "Sd" - }, - "ConfirmationCode": {}, - "ForceAliasCreation": { - "type": "boolean" - } - } - }, - "output": { - "type": "structure", - "members": {} - }, - "authtype": "none" - }, - "CreateGroup": { - "input": { - "type": "structure", - "required": [ - "GroupName", - "UserPoolId" - ], - "members": { - "GroupName": {}, - "UserPoolId": {}, - "Description": {}, - "RoleArn": {}, - "Precedence": { - "type": "integer" - } - } - }, - "output": { - "type": "structure", - "members": { - "Group": { - "shape": "S24" - } - } - } - }, - "CreateIdentityProvider": { - "input": { - "type": "structure", - "required": [ - "UserPoolId", - "ProviderName", - "ProviderType", - "ProviderDetails" - ], - "members": { - "UserPoolId": {}, - "ProviderName": {}, - "ProviderType": {}, - "ProviderDetails": { - "shape": "S34" - }, - "AttributeMapping": { - "shape": "S35" - }, - "IdpIdentifiers": { - "shape": "S37" - } - } - }, - "output": { - "type": "structure", - "required": [ - "IdentityProvider" - ], - "members": { - "IdentityProvider": { - "shape": "S3a" - } - } - } - }, - "CreateResourceServer": { - "input": { - "type": "structure", - "required": [ - "UserPoolId", - "Identifier", - "Name" - ], - "members": { - "UserPoolId": {}, - "Identifier": {}, - "Name": {}, - "Scopes": { - "shape": "S3e" - } - } - }, - "output": { - "type": "structure", - "required": [ - "ResourceServer" - ], - "members": { - "ResourceServer": { - "shape": "S3j" - } - } - } - }, - "CreateUserImportJob": { - "input": { - "type": "structure", - "required": [ - "JobName", - "UserPoolId", - "CloudWatchLogsRoleArn" - ], - "members": { - "JobName": {}, - "UserPoolId": {}, - "CloudWatchLogsRoleArn": {} - } - }, - "output": { - "type": "structure", - "members": { - "UserImportJob": { - "shape": "S3n" - } - } - } - }, - "CreateUserPool": { - "input": { - "type": "structure", - "required": [ - "PoolName" - ], - "members": { - "PoolName": {}, - "Policies": { - "shape": "S3v" - }, - "LambdaConfig": { - "shape": "S3y" - }, - "AutoVerifiedAttributes": { - "shape": "S3z" - }, - "AliasAttributes": { - "shape": "S41" - }, - "UsernameAttributes": { - "shape": "S43" - }, - "SmsVerificationMessage": {}, - "EmailVerificationMessage": {}, - "EmailVerificationSubject": {}, - "VerificationMessageTemplate": { - "shape": "S48" - }, - "SmsAuthenticationMessage": {}, - "MfaConfiguration": {}, - "DeviceConfiguration": { - "shape": "S4d" - }, - "EmailConfiguration": { - "shape": "S4e" - }, - "SmsConfiguration": { - "shape": "S4g" - }, - "UserPoolTags": { - "shape": "S4h" - }, - "AdminCreateUserConfig": { - "shape": "S4i" - }, - "Schema": { - "shape": "S4l" - } - } - }, - "output": { - "type": "structure", - "members": { - "UserPool": { - "shape": "S4n" - } - } - } - }, - "CreateUserPoolClient": { - "input": { - "type": "structure", - "required": [ - "UserPoolId", - "ClientName" - ], - "members": { - "UserPoolId": {}, - "ClientName": {}, - "GenerateSecret": { - "type": "boolean" - }, - "RefreshTokenValidity": { - "type": "integer" - }, - "ReadAttributes": { - "shape": "S4t" - }, - "WriteAttributes": { - "shape": "S4t" - }, - "ExplicitAuthFlows": { - "shape": "S4v" - }, - "SupportedIdentityProviders": { - "shape": "S4x" - }, - "CallbackURLs": { - "shape": "S4y" - }, - "LogoutURLs": { - "shape": "S50" - }, - "DefaultRedirectURI": {}, - "AllowedOAuthFlows": { - "shape": "S51" - }, - "AllowedOAuthScopes": { - "shape": "S53" - }, - "AllowedOAuthFlowsUserPoolClient": { - "type": "boolean" - } - } - }, - "output": { - "type": "structure", - "members": { - "UserPoolClient": { - "shape": "S56" - } - } - } - }, - "CreateUserPoolDomain": { - "input": { - "type": "structure", - "required": [ - "Domain", - "UserPoolId" - ], - "members": { - "Domain": {}, - "UserPoolId": {} - } - }, - "output": { - "type": "structure", - "members": {} - } - }, - "DeleteGroup": { - "input": { - "type": "structure", - "required": [ - "GroupName", - "UserPoolId" - ], - "members": { - "GroupName": {}, - "UserPoolId": {} - } - } - }, - "DeleteIdentityProvider": { - "input": { - "type": "structure", - "required": [ - "UserPoolId", - "ProviderName" - ], - "members": { - "UserPoolId": {}, - "ProviderName": {} - } - } - }, - "DeleteResourceServer": { - "input": { - "type": "structure", - "required": [ - "UserPoolId", - "Identifier" - ], - "members": { - "UserPoolId": {}, - "Identifier": {} - } - } - }, - "DeleteUser": { - "input": { - "type": "structure", - "required": [ - "AccessToken" - ], - "members": { - "AccessToken": { - "shape": "S1q" - } - } - }, - "authtype": "none" - }, - "DeleteUserAttributes": { - "input": { - "type": "structure", - "required": [ - "UserAttributeNames", - "AccessToken" - ], - "members": { - "UserAttributeNames": { - "shape": "Sz" - }, - "AccessToken": { - "shape": "S1q" - } - } - }, - "output": { - "type": "structure", - "members": {} - }, - "authtype": "none" - }, - "DeleteUserPool": { - "input": { - "type": "structure", - "required": [ - "UserPoolId" - ], - "members": { - "UserPoolId": {} - } - } - }, - "DeleteUserPoolClient": { - "input": { - "type": "structure", - "required": [ - "UserPoolId", - "ClientId" - ], - "members": { - "UserPoolId": {}, - "ClientId": { - "shape": "S1h" - } - } - } - }, - "DeleteUserPoolDomain": { - "input": { - "type": "structure", - "required": [ - "Domain", - "UserPoolId" - ], - "members": { - "Domain": {}, - "UserPoolId": {} - } - }, - "output": { - "type": "structure", - "members": {} - } - }, - "DescribeIdentityProvider": { - "input": { - "type": "structure", - "required": [ - "UserPoolId", - "ProviderName" - ], - "members": { - "UserPoolId": {}, - "ProviderName": {} - } - }, - "output": { - "type": "structure", - "required": [ - "IdentityProvider" - ], - "members": { - "IdentityProvider": { - "shape": "S3a" - } - } - } - }, - "DescribeResourceServer": { - "input": { - "type": "structure", - "required": [ - "UserPoolId", - "Identifier" - ], - "members": { - "UserPoolId": {}, - "Identifier": {} - } - }, - "output": { - "type": "structure", - "required": [ - "ResourceServer" - ], - "members": { - "ResourceServer": { - "shape": "S3j" - } - } - } - }, - "DescribeUserImportJob": { - "input": { - "type": "structure", - "required": [ - "UserPoolId", - "JobId" - ], - "members": { - "UserPoolId": {}, - "JobId": {} - } - }, - "output": { - "type": "structure", - "members": { - "UserImportJob": { - "shape": "S3n" - } - } - } - }, - "DescribeUserPool": { - "input": { - "type": "structure", - "required": [ - "UserPoolId" - ], - "members": { - "UserPoolId": {} - } - }, - "output": { - "type": "structure", - "members": { - "UserPool": { - "shape": "S4n" - } - } - } - }, - "DescribeUserPoolClient": { - "input": { - "type": "structure", - "required": [ - "UserPoolId", - "ClientId" - ], - "members": { - "UserPoolId": {}, - "ClientId": { - "shape": "S1h" - } - } - }, - "output": { - "type": "structure", - "members": { - "UserPoolClient": { - "shape": "S56" - } - } - } - }, - "DescribeUserPoolDomain": { - "input": { - "type": "structure", - "required": [ - "Domain" - ], - "members": { - "Domain": {} - } - }, - "output": { - "type": "structure", - "members": { - "DomainDescription": { - "type": "structure", - "members": { - "UserPoolId": {}, - "AWSAccountId": {}, - "Domain": {}, - "S3Bucket": {}, - "CloudFrontDistribution": {}, - "Version": {}, - "Status": {} - } - } - } - } - }, - "ForgetDevice": { - "input": { - "type": "structure", - "required": [ - "DeviceKey" - ], - "members": { - "AccessToken": { - "shape": "S1q" - }, - "DeviceKey": {} - } - } - }, - "ForgotPassword": { - "input": { - "type": "structure", - "required": [ - "ClientId", - "Username" - ], - "members": { - "ClientId": { - "shape": "S1h" - }, - "SecretHash": { - "shape": "S2u" - }, - "Username": { - "shape": "Sd" - } - } - }, - "output": { - "type": "structure", - "members": { - "CodeDeliveryDetails": { - "shape": "S65" - } - } - }, - "authtype": "none" - }, - "GetCSVHeader": { - "input": { - "type": "structure", - "required": [ - "UserPoolId" - ], - "members": { - "UserPoolId": {} - } - }, - "output": { - "type": "structure", - "members": { - "UserPoolId": {}, - "CSVHeader": { - "type": "list", - "member": {} - } - } - } - }, - "GetDevice": { - "input": { - "type": "structure", - "required": [ - "DeviceKey" - ], - "members": { - "DeviceKey": {}, - "AccessToken": { - "shape": "S1q" - } - } - }, - "output": { - "type": "structure", - "required": [ - "Device" - ], - "members": { - "Device": { - "shape": "S1d" - } - } - } - }, - "GetGroup": { - "input": { - "type": "structure", - "required": [ - "GroupName", - "UserPoolId" - ], - "members": { - "GroupName": {}, - "UserPoolId": {} - } - }, - "output": { - "type": "structure", - "members": { - "Group": { - "shape": "S24" - } - } - } - }, - "GetIdentityProviderByIdentifier": { - "input": { - "type": "structure", - "required": [ - "UserPoolId", - "IdpIdentifier" - ], - "members": { - "UserPoolId": {}, - "IdpIdentifier": {} - } - }, - "output": { - "type": "structure", - "required": [ - "IdentityProvider" - ], - "members": { - "IdentityProvider": { - "shape": "S3a" - } - } - } - }, - "GetUICustomization": { - "input": { - "type": "structure", - "required": [ - "UserPoolId" - ], - "members": { - "UserPoolId": {}, - "ClientId": { - "shape": "S1h" - } - } - }, - "output": { - "type": "structure", - "required": [ - "UICustomization" - ], - "members": { - "UICustomization": { - "shape": "S6h" - } - } - } - }, - "GetUser": { - "input": { - "type": "structure", - "required": [ - "AccessToken" - ], - "members": { - "AccessToken": { - "shape": "S1q" - } - } - }, - "output": { - "type": "structure", - "required": [ - "Username", - "UserAttributes" - ], - "members": { - "Username": { - "shape": "Sd" - }, - "UserAttributes": { - "shape": "Si" - }, - "MFAOptions": { - "shape": "Sv" - } - } - }, - "authtype": "none" - }, - "GetUserAttributeVerificationCode": { - "input": { - "type": "structure", - "required": [ - "AccessToken", - "AttributeName" - ], - "members": { - "AccessToken": { - "shape": "S1q" - }, - "AttributeName": {} - } - }, - "output": { - "type": "structure", - "members": { - "CodeDeliveryDetails": { - "shape": "S65" - } - } - }, - "authtype": "none" - }, - "GlobalSignOut": { - "input": { - "type": "structure", - "required": [ - "AccessToken" - ], - "members": { - "AccessToken": { - "shape": "S1q" - } - } - }, - "output": { - "type": "structure", - "members": {} - } - }, - "InitiateAuth": { - "input": { - "type": "structure", - "required": [ - "AuthFlow", - "ClientId" - ], - "members": { - "AuthFlow": {}, - "AuthParameters": { - "shape": "S1j" - }, - "ClientMetadata": { - "shape": "S1k" - }, - "ClientId": { - "shape": "S1h" - } - } - }, - "output": { - "type": "structure", - "members": { - "ChallengeName": {}, - "Session": {}, - "ChallengeParameters": { - "shape": "S1o" - }, - "AuthenticationResult": { - "shape": "S1p" - } - } - } - }, - "ListDevices": { - "input": { - "type": "structure", - "required": [ - "AccessToken" - ], - "members": { - "AccessToken": { - "shape": "S1q" - }, - "Limit": { - "type": "integer" - }, - "PaginationToken": {} - } - }, - "output": { - "type": "structure", - "members": { - "Devices": { - "shape": "S1z" - }, - "PaginationToken": {} - } - } - }, - "ListGroups": { - "input": { - "type": "structure", - "required": [ - "UserPoolId" - ], - "members": { - "UserPoolId": {}, - "Limit": { - "type": "integer" - }, - "NextToken": {} - } - }, - "output": { - "type": "structure", - "members": { - "Groups": { - "shape": "S23" - }, - "NextToken": {} - } - } - }, - "ListIdentityProviders": { - "input": { - "type": "structure", - "required": [ - "UserPoolId" - ], - "members": { - "UserPoolId": {}, - "MaxResults": { - "type": "integer" - }, - "NextToken": {} - } - }, - "output": { - "type": "structure", - "required": [ - "Providers" - ], - "members": { - "Providers": { - "type": "list", - "member": { - "type": "structure", - "members": { - "ProviderName": {}, - "ProviderType": {}, - "LastModifiedDate": { - "type": "timestamp" - }, - "CreationDate": { - "type": "timestamp" - } - } - } - }, - "NextToken": {} - } - } - }, - "ListResourceServers": { - "input": { - "type": "structure", - "required": [ - "UserPoolId" - ], - "members": { - "UserPoolId": {}, - "MaxResults": { - "type": "integer" - }, - "NextToken": {} - } - }, - "output": { - "type": "structure", - "required": [ - "ResourceServers" - ], - "members": { - "ResourceServers": { - "type": "list", - "member": { - "shape": "S3j" - } - }, - "NextToken": {} - } - } - }, - "ListUserImportJobs": { - "input": { - "type": "structure", - "required": [ - "UserPoolId", - "MaxResults" - ], - "members": { - "UserPoolId": {}, - "MaxResults": { - "type": "integer" - }, - "PaginationToken": {} - } - }, - "output": { - "type": "structure", - "members": { - "UserImportJobs": { - "type": "list", - "member": { - "shape": "S3n" - } - }, - "PaginationToken": {} - } - } - }, - "ListUserPoolClients": { - "input": { - "type": "structure", - "required": [ - "UserPoolId" - ], - "members": { - "UserPoolId": {}, - "MaxResults": { - "type": "integer" - }, - "NextToken": {} - } - }, - "output": { - "type": "structure", - "members": { - "UserPoolClients": { - "type": "list", - "member": { - "type": "structure", - "members": { - "ClientId": { - "shape": "S1h" - }, - "UserPoolId": {}, - "ClientName": {} - } - } - }, - "NextToken": {} - } - } - }, - "ListUserPools": { - "input": { - "type": "structure", - "required": [ - "MaxResults" - ], - "members": { - "NextToken": {}, - "MaxResults": { - "type": "integer" - } - } - }, - "output": { - "type": "structure", - "members": { - "UserPools": { - "type": "list", - "member": { - "type": "structure", - "members": { - "Id": {}, - "Name": {}, - "LambdaConfig": { - "shape": "S3y" - }, - "Status": {}, - "LastModifiedDate": { - "type": "timestamp" - }, - "CreationDate": { - "type": "timestamp" - } - } - } - }, - "NextToken": {} - } - } - }, - "ListUsers": { - "input": { - "type": "structure", - "required": [ - "UserPoolId" - ], - "members": { - "UserPoolId": {}, - "AttributesToGet": { - "type": "list", - "member": {} - }, - "Limit": { - "type": "integer" - }, - "PaginationToken": {}, - "Filter": {} - } - }, - "output": { - "type": "structure", - "members": { - "Users": { - "shape": "S7o" - }, - "PaginationToken": {} - } - } - }, - "ListUsersInGroup": { - "input": { - "type": "structure", - "required": [ - "UserPoolId", - "GroupName" - ], - "members": { - "UserPoolId": {}, - "GroupName": {}, - "Limit": { - "type": "integer" - }, - "NextToken": {} - } - }, - "output": { - "type": "structure", - "members": { - "Users": { - "shape": "S7o" - }, - "NextToken": {} - } - } - }, - "ResendConfirmationCode": { - "input": { - "type": "structure", - "required": [ - "ClientId", - "Username" - ], - "members": { - "ClientId": { - "shape": "S1h" - }, - "SecretHash": { - "shape": "S2u" - }, - "Username": { - "shape": "Sd" - } - } - }, - "output": { - "type": "structure", - "members": { - "CodeDeliveryDetails": { - "shape": "S65" - } - } - }, - "authtype": "none" - }, - "RespondToAuthChallenge": { - "input": { - "type": "structure", - "required": [ - "ClientId", - "ChallengeName" - ], - "members": { - "ClientId": { - "shape": "S1h" - }, - "ChallengeName": {}, - "Session": {}, - "ChallengeResponses": { - "shape": "S2c" - } - } - }, - "output": { - "type": "structure", - "members": { - "ChallengeName": {}, - "Session": {}, - "ChallengeParameters": { - "shape": "S1o" - }, - "AuthenticationResult": { - "shape": "S1p" - } - } - } - }, - "SetUICustomization": { - "input": { - "type": "structure", - "required": [ - "UserPoolId" - ], - "members": { - "UserPoolId": {}, - "ClientId": { - "shape": "S1h" - }, - "CSS": {}, - "ImageFile": { - "type": "blob" - } - } - }, - "output": { - "type": "structure", - "required": [ - "UICustomization" - ], - "members": { - "UICustomization": { - "shape": "S6h" - } - } - } - }, - "SetUserSettings": { - "input": { - "type": "structure", - "required": [ - "AccessToken", - "MFAOptions" - ], - "members": { - "AccessToken": { - "shape": "S1q" - }, - "MFAOptions": { - "shape": "Sv" - } - } - }, - "output": { - "type": "structure", - "members": {} - }, - "authtype": "none" - }, - "SignUp": { - "input": { - "type": "structure", - "required": [ - "ClientId", - "Username", - "Password" - ], - "members": { - "ClientId": { - "shape": "S1h" - }, - "SecretHash": { - "shape": "S2u" - }, - "Username": { - "shape": "Sd" - }, - "Password": { - "shape": "Sm" - }, - "UserAttributes": { - "shape": "Si" - }, - "ValidationData": { - "shape": "Si" - } - } - }, - "output": { - "type": "structure", - "required": [ - "UserConfirmed", - "UserSub" - ], - "members": { - "UserConfirmed": { - "type": "boolean" - }, - "CodeDeliveryDetails": { - "shape": "S65" - }, - "UserSub": {} - } - }, - "authtype": "none" - }, - "StartUserImportJob": { - "input": { - "type": "structure", - "required": [ - "UserPoolId", - "JobId" - ], - "members": { - "UserPoolId": {}, - "JobId": {} - } - }, - "output": { - "type": "structure", - "members": { - "UserImportJob": { - "shape": "S3n" - } - } - } - }, - "StopUserImportJob": { - "input": { - "type": "structure", - "required": [ - "UserPoolId", - "JobId" - ], - "members": { - "UserPoolId": {}, - "JobId": {} - } - }, - "output": { - "type": "structure", - "members": { - "UserImportJob": { - "shape": "S3n" - } - } - } - }, - "UpdateDeviceStatus": { - "input": { - "type": "structure", - "required": [ - "AccessToken", - "DeviceKey" - ], - "members": { - "AccessToken": { - "shape": "S1q" - }, - "DeviceKey": {}, - "DeviceRememberedStatus": {} - } - }, - "output": { - "type": "structure", - "members": {} - } - }, - "UpdateGroup": { - "input": { - "type": "structure", - "required": [ - "GroupName", - "UserPoolId" - ], - "members": { - "GroupName": {}, - "UserPoolId": {}, - "Description": {}, - "RoleArn": {}, - "Precedence": { - "type": "integer" - } - } - }, - "output": { - "type": "structure", - "members": { - "Group": { - "shape": "S24" - } - } - } - }, - "UpdateIdentityProvider": { - "input": { - "type": "structure", - "required": [ - "UserPoolId", - "ProviderName" - ], - "members": { - "UserPoolId": {}, - "ProviderName": {}, - "ProviderDetails": { - "shape": "S34" - }, - "AttributeMapping": { - "shape": "S35" - }, - "IdpIdentifiers": { - "shape": "S37" - } - } - }, - "output": { - "type": "structure", - "required": [ - "IdentityProvider" - ], - "members": { - "IdentityProvider": { - "shape": "S3a" - } - } - } - }, - "UpdateResourceServer": { - "input": { - "type": "structure", - "required": [ - "UserPoolId", - "Identifier", - "Name" - ], - "members": { - "UserPoolId": {}, - "Identifier": {}, - "Name": {}, - "Scopes": { - "shape": "S3e" - } - } - }, - "output": { - "type": "structure", - "required": [ - "ResourceServer" - ], - "members": { - "ResourceServer": { - "shape": "S3j" - } - } - } - }, - "UpdateUserAttributes": { - "input": { - "type": "structure", - "required": [ - "UserAttributes", - "AccessToken" - ], - "members": { - "UserAttributes": { - "shape": "Si" - }, - "AccessToken": { - "shape": "S1q" - } - } - }, - "output": { - "type": "structure", - "members": { - "CodeDeliveryDetailsList": { - "type": "list", - "member": { - "shape": "S65" - } - } - } - }, - "authtype": "none" - }, - "UpdateUserPool": { - "input": { - "type": "structure", - "required": [ - "UserPoolId" - ], - "members": { - "UserPoolId": {}, - "Policies": { - "shape": "S3v" - }, - "LambdaConfig": { - "shape": "S3y" - }, - "AutoVerifiedAttributes": { - "shape": "S3z" - }, - "SmsVerificationMessage": {}, - "EmailVerificationMessage": {}, - "EmailVerificationSubject": {}, - "VerificationMessageTemplate": { - "shape": "S48" - }, - "SmsAuthenticationMessage": {}, - "MfaConfiguration": {}, - "DeviceConfiguration": { - "shape": "S4d" - }, - "EmailConfiguration": { - "shape": "S4e" - }, - "SmsConfiguration": { - "shape": "S4g" - }, - "UserPoolTags": { - "shape": "S4h" - }, - "AdminCreateUserConfig": { - "shape": "S4i" - } - } - }, - "output": { - "type": "structure", - "members": {} - } - }, - "UpdateUserPoolClient": { - "input": { - "type": "structure", - "required": [ - "UserPoolId", - "ClientId" - ], - "members": { - "UserPoolId": {}, - "ClientId": { - "shape": "S1h" - }, - "ClientName": {}, - "RefreshTokenValidity": { - "type": "integer" - }, - "ReadAttributes": { - "shape": "S4t" - }, - "WriteAttributes": { - "shape": "S4t" - }, - "ExplicitAuthFlows": { - "shape": "S4v" - }, - "SupportedIdentityProviders": { - "shape": "S4x" - }, - "CallbackURLs": { - "shape": "S4y" - }, - "LogoutURLs": { - "shape": "S50" - }, - "DefaultRedirectURI": {}, - "AllowedOAuthFlows": { - "shape": "S51" - }, - "AllowedOAuthScopes": { - "shape": "S53" - }, - "AllowedOAuthFlowsUserPoolClient": { - "type": "boolean" - } - } - }, - "output": { - "type": "structure", - "members": { - "UserPoolClient": { - "shape": "S56" - } - } - } - }, - "VerifyUserAttribute": { - "input": { - "type": "structure", - "required": [ - "AccessToken", - "AttributeName", - "Code" - ], - "members": { - "AccessToken": { - "shape": "S1q" - }, - "AttributeName": {}, - "Code": {} - } - }, - "output": { - "type": "structure", - "members": {} - }, - "authtype": "none" - } - }, - "shapes": { - "S4": { - "type": "structure", - "members": { - "Name": {}, - "AttributeDataType": {}, - "DeveloperOnlyAttribute": { - "type": "boolean" - }, - "Mutable": { - "type": "boolean" - }, - "Required": { - "type": "boolean" - }, - "NumberAttributeConstraints": { - "type": "structure", - "members": { - "MinValue": {}, - "MaxValue": {} - } - }, - "StringAttributeConstraints": { - "type": "structure", - "members": { - "MinLength": {}, - "MaxLength": {} - } - } - } - }, - "Sd": { - "type": "string", - "sensitive": true - }, - "Si": { - "type": "list", - "member": { - "type": "structure", - "required": [ - "Name" - ], - "members": { - "Name": {}, - "Value": { - "type": "string", - "sensitive": true - } - } - } - }, - "Sm": { - "type": "string", - "sensitive": true - }, - "Ss": { - "type": "structure", - "members": { - "Username": { - "shape": "Sd" - }, - "Attributes": { - "shape": "Si" - }, - "UserCreateDate": { - "type": "timestamp" - }, - "UserLastModifiedDate": { - "type": "timestamp" - }, - "Enabled": { - "type": "boolean" - }, - "UserStatus": {}, - "MFAOptions": { - "shape": "Sv" - } - } - }, - "Sv": { - "type": "list", - "member": { - "type": "structure", - "members": { - "DeliveryMedium": {}, - "AttributeName": {} - } - } - }, - "Sz": { - "type": "list", - "member": {} - }, - "S12": { - "type": "structure", - "members": { - "ProviderName": {}, - "ProviderAttributeName": {}, - "ProviderAttributeValue": {} - } - }, - "S1d": { - "type": "structure", - "members": { - "DeviceKey": {}, - "DeviceAttributes": { - "shape": "Si" - }, - "DeviceCreateDate": { - "type": "timestamp" - }, - "DeviceLastModifiedDate": { - "type": "timestamp" - }, - "DeviceLastAuthenticatedDate": { - "type": "timestamp" - } - } - }, - "S1h": { - "type": "string", - "sensitive": true - }, - "S1j": { - "type": "map", - "key": {}, - "value": {} - }, - "S1k": { - "type": "map", - "key": {}, - "value": {} - }, - "S1o": { - "type": "map", - "key": {}, - "value": {} - }, - "S1p": { - "type": "structure", - "members": { - "AccessToken": { - "shape": "S1q" - }, - "ExpiresIn": { - "type": "integer" - }, - "TokenType": {}, - "RefreshToken": { - "shape": "S1q" - }, - "IdToken": { - "shape": "S1q" - }, - "NewDeviceMetadata": { - "type": "structure", - "members": { - "DeviceKey": {}, - "DeviceGroupKey": {} - } - } - } - }, - "S1q": { - "type": "string", - "sensitive": true - }, - "S1z": { - "type": "list", - "member": { - "shape": "S1d" - } - }, - "S23": { - "type": "list", - "member": { - "shape": "S24" - } - }, - "S24": { - "type": "structure", - "members": { - "GroupName": {}, - "UserPoolId": {}, - "Description": {}, - "RoleArn": {}, - "Precedence": { - "type": "integer" - }, - "LastModifiedDate": { - "type": "timestamp" - }, - "CreationDate": { - "type": "timestamp" - } - } - }, - "S2c": { - "type": "map", - "key": {}, - "value": {} - }, - "S2u": { - "type": "string", - "sensitive": true - }, - "S34": { - "type": "map", - "key": {}, - "value": {} - }, - "S35": { - "type": "map", - "key": {}, - "value": {} - }, - "S37": { - "type": "list", - "member": {} - }, - "S3a": { - "type": "structure", - "members": { - "UserPoolId": {}, - "ProviderName": {}, - "ProviderType": {}, - "ProviderDetails": { - "shape": "S34" - }, - "AttributeMapping": { - "shape": "S35" - }, - "IdpIdentifiers": { - "shape": "S37" - }, - "LastModifiedDate": { - "type": "timestamp" - }, - "CreationDate": { - "type": "timestamp" - } - } - }, - "S3e": { - "type": "list", - "member": { - "type": "structure", - "required": [ - "ScopeName", - "ScopeDescription" - ], - "members": { - "ScopeName": {}, - "ScopeDescription": {} - } - } - }, - "S3j": { - "type": "structure", - "members": { - "UserPoolId": {}, - "Identifier": {}, - "Name": {}, - "Scopes": { - "shape": "S3e" - } - } - }, - "S3n": { - "type": "structure", - "members": { - "JobName": {}, - "JobId": {}, - "UserPoolId": {}, - "PreSignedUrl": {}, - "CreationDate": { - "type": "timestamp" - }, - "StartDate": { - "type": "timestamp" - }, - "CompletionDate": { - "type": "timestamp" - }, - "Status": {}, - "CloudWatchLogsRoleArn": {}, - "ImportedUsers": { - "type": "long" - }, - "SkippedUsers": { - "type": "long" - }, - "FailedUsers": { - "type": "long" - }, - "CompletionMessage": {} - } - }, - "S3v": { - "type": "structure", - "members": { - "PasswordPolicy": { - "type": "structure", - "members": { - "MinimumLength": { - "type": "integer" - }, - "RequireUppercase": { - "type": "boolean" - }, - "RequireLowercase": { - "type": "boolean" - }, - "RequireNumbers": { - "type": "boolean" - }, - "RequireSymbols": { - "type": "boolean" - } - } - } - } - }, - "S3y": { - "type": "structure", - "members": { - "PreSignUp": {}, - "CustomMessage": {}, - "PostConfirmation": {}, - "PreAuthentication": {}, - "PostAuthentication": {}, - "DefineAuthChallenge": {}, - "CreateAuthChallenge": {}, - "VerifyAuthChallengeResponse": {} - } - }, - "S3z": { - "type": "list", - "member": {} - }, - "S41": { - "type": "list", - "member": {} - }, - "S43": { - "type": "list", - "member": {} - }, - "S48": { - "type": "structure", - "members": { - "SmsMessage": {}, - "EmailMessage": {}, - "EmailSubject": {}, - "EmailMessageByLink": {}, - "EmailSubjectByLink": {}, - "DefaultEmailOption": {} - } - }, - "S4d": { - "type": "structure", - "members": { - "ChallengeRequiredOnNewDevice": { - "type": "boolean" - }, - "DeviceOnlyRememberedOnUserPrompt": { - "type": "boolean" - } - } - }, - "S4e": { - "type": "structure", - "members": { - "SourceArn": {}, - "ReplyToEmailAddress": {} - } - }, - "S4g": { - "type": "structure", - "required": [ - "SnsCallerArn" - ], - "members": { - "SnsCallerArn": {}, - "ExternalId": {} - } - }, - "S4h": { - "type": "map", - "key": {}, - "value": {} - }, - "S4i": { - "type": "structure", - "members": { - "AllowAdminCreateUserOnly": { - "type": "boolean" - }, - "UnusedAccountValidityDays": { - "type": "integer" - }, - "InviteMessageTemplate": { - "type": "structure", - "members": { - "SMSMessage": {}, - "EmailMessage": {}, - "EmailSubject": {} - } - } - } - }, - "S4l": { - "type": "list", - "member": { - "shape": "S4" - } - }, - "S4n": { - "type": "structure", - "members": { - "Id": {}, - "Name": {}, - "Policies": { - "shape": "S3v" - }, - "LambdaConfig": { - "shape": "S3y" - }, - "Status": {}, - "LastModifiedDate": { - "type": "timestamp" - }, - "CreationDate": { - "type": "timestamp" - }, - "SchemaAttributes": { - "shape": "S4l" - }, - "AutoVerifiedAttributes": { - "shape": "S3z" - }, - "AliasAttributes": { - "shape": "S41" - }, - "UsernameAttributes": { - "shape": "S43" - }, - "SmsVerificationMessage": {}, - "EmailVerificationMessage": {}, - "EmailVerificationSubject": {}, - "VerificationMessageTemplate": { - "shape": "S48" - }, - "SmsAuthenticationMessage": {}, - "MfaConfiguration": {}, - "DeviceConfiguration": { - "shape": "S4d" - }, - "EstimatedNumberOfUsers": { - "type": "integer" - }, - "EmailConfiguration": { - "shape": "S4e" - }, - "SmsConfiguration": { - "shape": "S4g" - }, - "UserPoolTags": { - "shape": "S4h" - }, - "SmsConfigurationFailure": {}, - "EmailConfigurationFailure": {}, - "AdminCreateUserConfig": { - "shape": "S4i" - } - } - }, - "S4t": { - "type": "list", - "member": {} - }, - "S4v": { - "type": "list", - "member": {} - }, - "S4x": { - "type": "list", - "member": {} - }, - "S4y": { - "type": "list", - "member": {} - }, - "S50": { - "type": "list", - "member": {} - }, - "S51": { - "type": "list", - "member": {} - }, - "S53": { - "type": "list", - "member": {} - }, - "S56": { - "type": "structure", - "members": { - "UserPoolId": {}, - "ClientName": {}, - "ClientId": { - "shape": "S1h" - }, - "ClientSecret": { - "type": "string", - "sensitive": true - }, - "LastModifiedDate": { - "type": "timestamp" - }, - "CreationDate": { - "type": "timestamp" - }, - "RefreshTokenValidity": { - "type": "integer" - }, - "ReadAttributes": { - "shape": "S4t" - }, - "WriteAttributes": { - "shape": "S4t" - }, - "ExplicitAuthFlows": { - "shape": "S4v" - }, - "SupportedIdentityProviders": { - "shape": "S4x" - }, - "CallbackURLs": { - "shape": "S4y" - }, - "LogoutURLs": { - "shape": "S50" - }, - "DefaultRedirectURI": {}, - "AllowedOAuthFlows": { - "shape": "S51" - }, - "AllowedOAuthScopes": { - "shape": "S53" - }, - "AllowedOAuthFlowsUserPoolClient": { - "type": "boolean" - } - } - }, - "S65": { - "type": "structure", - "members": { - "Destination": {}, - "DeliveryMedium": {}, - "AttributeName": {} - } - }, - "S6h": { - "type": "structure", - "members": { - "UserPoolId": {}, - "ClientId": { - "shape": "S1h" - }, - "ImageUrl": {}, - "CSS": {}, - "CSSVersion": {}, - "LastModifiedDate": { - "type": "timestamp" - }, - "CreationDate": { - "type": "timestamp" - } - } - }, - "S7o": { - "type": "list", - "member": { - "shape": "Ss" - } - } - } -} \ No newline at end of file diff --git a/workshops/monte-carlo-on-ec2-spot-fleet/src/web/node_modules/aws-sdk/apis/cognito-idp-2016-04-18.paginators.json b/workshops/monte-carlo-on-ec2-spot-fleet/src/web/node_modules/aws-sdk/apis/cognito-idp-2016-04-18.paginators.json deleted file mode 100644 index 5677bd8e..00000000 --- a/workshops/monte-carlo-on-ec2-spot-fleet/src/web/node_modules/aws-sdk/apis/cognito-idp-2016-04-18.paginators.json +++ /dev/null @@ -1,4 +0,0 @@ -{ - "pagination": { - } -} diff --git a/workshops/monte-carlo-on-ec2-spot-fleet/src/web/node_modules/aws-sdk/apis/cognito-sync-2014-06-30.min.json b/workshops/monte-carlo-on-ec2-spot-fleet/src/web/node_modules/aws-sdk/apis/cognito-sync-2014-06-30.min.json deleted file mode 100644 index 3195f1a3..00000000 --- a/workshops/monte-carlo-on-ec2-spot-fleet/src/web/node_modules/aws-sdk/apis/cognito-sync-2014-06-30.min.json +++ /dev/null @@ -1,747 +0,0 @@ -{ - "version": "2.0", - "metadata": { - "apiVersion": "2014-06-30", - "endpointPrefix": "cognito-sync", - "jsonVersion": "1.1", - "serviceFullName": "Amazon Cognito Sync", - "signatureVersion": "v4", - "protocol": "rest-json", - "uid": "cognito-sync-2014-06-30" - }, - "operations": { - "BulkPublish": { - "http": { - "requestUri": "/identitypools/{IdentityPoolId}/bulkpublish", - "responseCode": 200 - }, - "input": { - "type": "structure", - "required": [ - "IdentityPoolId" - ], - "members": { - "IdentityPoolId": { - "location": "uri", - "locationName": "IdentityPoolId" - } - } - }, - "output": { - "type": "structure", - "members": { - "IdentityPoolId": {} - } - } - }, - "DeleteDataset": { - "http": { - "method": "DELETE", - "requestUri": "/identitypools/{IdentityPoolId}/identities/{IdentityId}/datasets/{DatasetName}", - "responseCode": 200 - }, - "input": { - "type": "structure", - "required": [ - "IdentityPoolId", - "IdentityId", - "DatasetName" - ], - "members": { - "IdentityPoolId": { - "location": "uri", - "locationName": "IdentityPoolId" - }, - "IdentityId": { - "location": "uri", - "locationName": "IdentityId" - }, - "DatasetName": { - "location": "uri", - "locationName": "DatasetName" - } - } - }, - "output": { - "type": "structure", - "members": { - "Dataset": { - "shape": "S8" - } - } - } - }, - "DescribeDataset": { - "http": { - "method": "GET", - "requestUri": "/identitypools/{IdentityPoolId}/identities/{IdentityId}/datasets/{DatasetName}", - "responseCode": 200 - }, - "input": { - "type": "structure", - "required": [ - "IdentityPoolId", - "IdentityId", - "DatasetName" - ], - "members": { - "IdentityPoolId": { - "location": "uri", - "locationName": "IdentityPoolId" - }, - "IdentityId": { - "location": "uri", - "locationName": "IdentityId" - }, - "DatasetName": { - "location": "uri", - "locationName": "DatasetName" - } - } - }, - "output": { - "type": "structure", - "members": { - "Dataset": { - "shape": "S8" - } - } - } - }, - "DescribeIdentityPoolUsage": { - "http": { - "method": "GET", - "requestUri": "/identitypools/{IdentityPoolId}", - "responseCode": 200 - }, - "input": { - "type": "structure", - "required": [ - "IdentityPoolId" - ], - "members": { - "IdentityPoolId": { - "location": "uri", - "locationName": "IdentityPoolId" - } - } - }, - "output": { - "type": "structure", - "members": { - "IdentityPoolUsage": { - "shape": "Sg" - } - } - } - }, - "DescribeIdentityUsage": { - "http": { - "method": "GET", - "requestUri": "/identitypools/{IdentityPoolId}/identities/{IdentityId}", - "responseCode": 200 - }, - "input": { - "type": "structure", - "required": [ - "IdentityPoolId", - "IdentityId" - ], - "members": { - "IdentityPoolId": { - "location": "uri", - "locationName": "IdentityPoolId" - }, - "IdentityId": { - "location": "uri", - "locationName": "IdentityId" - } - } - }, - "output": { - "type": "structure", - "members": { - "IdentityUsage": { - "type": "structure", - "members": { - "IdentityId": {}, - "IdentityPoolId": {}, - "LastModifiedDate": { - "type": "timestamp" - }, - "DatasetCount": { - "type": "integer" - }, - "DataStorage": { - "type": "long" - } - } - } - } - } - }, - "GetBulkPublishDetails": { - "http": { - "requestUri": "/identitypools/{IdentityPoolId}/getBulkPublishDetails", - "responseCode": 200 - }, - "input": { - "type": "structure", - "required": [ - "IdentityPoolId" - ], - "members": { - "IdentityPoolId": { - "location": "uri", - "locationName": "IdentityPoolId" - } - } - }, - "output": { - "type": "structure", - "members": { - "IdentityPoolId": {}, - "BulkPublishStartTime": { - "type": "timestamp" - }, - "BulkPublishCompleteTime": { - "type": "timestamp" - }, - "BulkPublishStatus": {}, - "FailureMessage": {} - } - } - }, - "GetCognitoEvents": { - "http": { - "method": "GET", - "requestUri": "/identitypools/{IdentityPoolId}/events", - "responseCode": 200 - }, - "input": { - "type": "structure", - "required": [ - "IdentityPoolId" - ], - "members": { - "IdentityPoolId": { - "location": "uri", - "locationName": "IdentityPoolId" - } - } - }, - "output": { - "type": "structure", - "members": { - "Events": { - "shape": "Sq" - } - } - } - }, - "GetIdentityPoolConfiguration": { - "http": { - "method": "GET", - "requestUri": "/identitypools/{IdentityPoolId}/configuration", - "responseCode": 200 - }, - "input": { - "type": "structure", - "required": [ - "IdentityPoolId" - ], - "members": { - "IdentityPoolId": { - "location": "uri", - "locationName": "IdentityPoolId" - } - } - }, - "output": { - "type": "structure", - "members": { - "IdentityPoolId": {}, - "PushSync": { - "shape": "Sv" - }, - "CognitoStreams": { - "shape": "Sz" - } - } - } - }, - "ListDatasets": { - "http": { - "method": "GET", - "requestUri": "/identitypools/{IdentityPoolId}/identities/{IdentityId}/datasets", - "responseCode": 200 - }, - "input": { - "type": "structure", - "required": [ - "IdentityId", - "IdentityPoolId" - ], - "members": { - "IdentityPoolId": { - "location": "uri", - "locationName": "IdentityPoolId" - }, - "IdentityId": { - "location": "uri", - "locationName": "IdentityId" - }, - "NextToken": { - "location": "querystring", - "locationName": "nextToken" - }, - "MaxResults": { - "location": "querystring", - "locationName": "maxResults", - "type": "integer" - } - } - }, - "output": { - "type": "structure", - "members": { - "Datasets": { - "type": "list", - "member": { - "shape": "S8" - } - }, - "Count": { - "type": "integer" - }, - "NextToken": {} - } - } - }, - "ListIdentityPoolUsage": { - "http": { - "method": "GET", - "requestUri": "/identitypools", - "responseCode": 200 - }, - "input": { - "type": "structure", - "members": { - "NextToken": { - "location": "querystring", - "locationName": "nextToken" - }, - "MaxResults": { - "location": "querystring", - "locationName": "maxResults", - "type": "integer" - } - } - }, - "output": { - "type": "structure", - "members": { - "IdentityPoolUsages": { - "type": "list", - "member": { - "shape": "Sg" - } - }, - "MaxResults": { - "type": "integer" - }, - "Count": { - "type": "integer" - }, - "NextToken": {} - } - } - }, - "ListRecords": { - "http": { - "method": "GET", - "requestUri": "/identitypools/{IdentityPoolId}/identities/{IdentityId}/datasets/{DatasetName}/records", - "responseCode": 200 - }, - "input": { - "type": "structure", - "required": [ - "IdentityPoolId", - "IdentityId", - "DatasetName" - ], - "members": { - "IdentityPoolId": { - "location": "uri", - "locationName": "IdentityPoolId" - }, - "IdentityId": { - "location": "uri", - "locationName": "IdentityId" - }, - "DatasetName": { - "location": "uri", - "locationName": "DatasetName" - }, - "LastSyncCount": { - "location": "querystring", - "locationName": "lastSyncCount", - "type": "long" - }, - "NextToken": { - "location": "querystring", - "locationName": "nextToken" - }, - "MaxResults": { - "location": "querystring", - "locationName": "maxResults", - "type": "integer" - }, - "SyncSessionToken": { - "location": "querystring", - "locationName": "syncSessionToken" - } - } - }, - "output": { - "type": "structure", - "members": { - "Records": { - "shape": "S1c" - }, - "NextToken": {}, - "Count": { - "type": "integer" - }, - "DatasetSyncCount": { - "type": "long" - }, - "LastModifiedBy": {}, - "MergedDatasetNames": { - "type": "list", - "member": {} - }, - "DatasetExists": { - "type": "boolean" - }, - "DatasetDeletedAfterRequestedSyncCount": { - "type": "boolean" - }, - "SyncSessionToken": {} - } - } - }, - "RegisterDevice": { - "http": { - "requestUri": "/identitypools/{IdentityPoolId}/identity/{IdentityId}/device", - "responseCode": 200 - }, - "input": { - "type": "structure", - "required": [ - "IdentityPoolId", - "IdentityId", - "Platform", - "Token" - ], - "members": { - "IdentityPoolId": { - "location": "uri", - "locationName": "IdentityPoolId" - }, - "IdentityId": { - "location": "uri", - "locationName": "IdentityId" - }, - "Platform": {}, - "Token": {} - } - }, - "output": { - "type": "structure", - "members": { - "DeviceId": {} - } - } - }, - "SetCognitoEvents": { - "http": { - "requestUri": "/identitypools/{IdentityPoolId}/events", - "responseCode": 200 - }, - "input": { - "type": "structure", - "required": [ - "IdentityPoolId", - "Events" - ], - "members": { - "IdentityPoolId": { - "location": "uri", - "locationName": "IdentityPoolId" - }, - "Events": { - "shape": "Sq" - } - } - } - }, - "SetIdentityPoolConfiguration": { - "http": { - "requestUri": "/identitypools/{IdentityPoolId}/configuration", - "responseCode": 200 - }, - "input": { - "type": "structure", - "required": [ - "IdentityPoolId" - ], - "members": { - "IdentityPoolId": { - "location": "uri", - "locationName": "IdentityPoolId" - }, - "PushSync": { - "shape": "Sv" - }, - "CognitoStreams": { - "shape": "Sz" - } - } - }, - "output": { - "type": "structure", - "members": { - "IdentityPoolId": {}, - "PushSync": { - "shape": "Sv" - }, - "CognitoStreams": { - "shape": "Sz" - } - } - } - }, - "SubscribeToDataset": { - "http": { - "requestUri": "/identitypools/{IdentityPoolId}/identities/{IdentityId}/datasets/{DatasetName}/subscriptions/{DeviceId}", - "responseCode": 200 - }, - "input": { - "type": "structure", - "required": [ - "IdentityPoolId", - "IdentityId", - "DatasetName", - "DeviceId" - ], - "members": { - "IdentityPoolId": { - "location": "uri", - "locationName": "IdentityPoolId" - }, - "IdentityId": { - "location": "uri", - "locationName": "IdentityId" - }, - "DatasetName": { - "location": "uri", - "locationName": "DatasetName" - }, - "DeviceId": { - "location": "uri", - "locationName": "DeviceId" - } - } - }, - "output": { - "type": "structure", - "members": {} - } - }, - "UnsubscribeFromDataset": { - "http": { - "method": "DELETE", - "requestUri": "/identitypools/{IdentityPoolId}/identities/{IdentityId}/datasets/{DatasetName}/subscriptions/{DeviceId}", - "responseCode": 200 - }, - "input": { - "type": "structure", - "required": [ - "IdentityPoolId", - "IdentityId", - "DatasetName", - "DeviceId" - ], - "members": { - "IdentityPoolId": { - "location": "uri", - "locationName": "IdentityPoolId" - }, - "IdentityId": { - "location": "uri", - "locationName": "IdentityId" - }, - "DatasetName": { - "location": "uri", - "locationName": "DatasetName" - }, - "DeviceId": { - "location": "uri", - "locationName": "DeviceId" - } - } - }, - "output": { - "type": "structure", - "members": {} - } - }, - "UpdateRecords": { - "http": { - "requestUri": "/identitypools/{IdentityPoolId}/identities/{IdentityId}/datasets/{DatasetName}", - "responseCode": 200 - }, - "input": { - "type": "structure", - "required": [ - "IdentityPoolId", - "IdentityId", - "DatasetName", - "SyncSessionToken" - ], - "members": { - "IdentityPoolId": { - "location": "uri", - "locationName": "IdentityPoolId" - }, - "IdentityId": { - "location": "uri", - "locationName": "IdentityId" - }, - "DatasetName": { - "location": "uri", - "locationName": "DatasetName" - }, - "DeviceId": {}, - "RecordPatches": { - "type": "list", - "member": { - "type": "structure", - "required": [ - "Op", - "Key", - "SyncCount" - ], - "members": { - "Op": {}, - "Key": {}, - "Value": {}, - "SyncCount": { - "type": "long" - }, - "DeviceLastModifiedDate": { - "type": "timestamp" - } - } - } - }, - "SyncSessionToken": {}, - "ClientContext": { - "location": "header", - "locationName": "x-amz-Client-Context" - } - } - }, - "output": { - "type": "structure", - "members": { - "Records": { - "shape": "S1c" - } - } - } - } - }, - "shapes": { - "S8": { - "type": "structure", - "members": { - "IdentityId": {}, - "DatasetName": {}, - "CreationDate": { - "type": "timestamp" - }, - "LastModifiedDate": { - "type": "timestamp" - }, - "LastModifiedBy": {}, - "DataStorage": { - "type": "long" - }, - "NumRecords": { - "type": "long" - } - } - }, - "Sg": { - "type": "structure", - "members": { - "IdentityPoolId": {}, - "SyncSessionsCount": { - "type": "long" - }, - "DataStorage": { - "type": "long" - }, - "LastModifiedDate": { - "type": "timestamp" - } - } - }, - "Sq": { - "type": "map", - "key": {}, - "value": {} - }, - "Sv": { - "type": "structure", - "members": { - "ApplicationArns": { - "type": "list", - "member": {} - }, - "RoleArn": {} - } - }, - "Sz": { - "type": "structure", - "members": { - "StreamName": {}, - "RoleArn": {}, - "StreamingStatus": {} - } - }, - "S1c": { - "type": "list", - "member": { - "type": "structure", - "members": { - "Key": {}, - "Value": {}, - "SyncCount": { - "type": "long" - }, - "LastModifiedDate": { - "type": "timestamp" - }, - "LastModifiedBy": {}, - "DeviceLastModifiedDate": { - "type": "timestamp" - } - } - } - } - }, - "examples": {} -} \ No newline at end of file diff --git a/workshops/monte-carlo-on-ec2-spot-fleet/src/web/node_modules/aws-sdk/apis/config-2014-11-12.examples.json b/workshops/monte-carlo-on-ec2-spot-fleet/src/web/node_modules/aws-sdk/apis/config-2014-11-12.examples.json deleted file mode 100644 index 0ea7e3b0..00000000 --- a/workshops/monte-carlo-on-ec2-spot-fleet/src/web/node_modules/aws-sdk/apis/config-2014-11-12.examples.json +++ /dev/null @@ -1,5 +0,0 @@ -{ - "version": "1.0", - "examples": { - } -} diff --git a/workshops/monte-carlo-on-ec2-spot-fleet/src/web/node_modules/aws-sdk/apis/config-2014-11-12.min.json b/workshops/monte-carlo-on-ec2-spot-fleet/src/web/node_modules/aws-sdk/apis/config-2014-11-12.min.json deleted file mode 100644 index fe6cd919..00000000 --- a/workshops/monte-carlo-on-ec2-spot-fleet/src/web/node_modules/aws-sdk/apis/config-2014-11-12.min.json +++ /dev/null @@ -1,908 +0,0 @@ -{ - "version": "2.0", - "metadata": { - "apiVersion": "2014-11-12", - "endpointPrefix": "config", - "jsonVersion": "1.1", - "protocol": "json", - "serviceAbbreviation": "Config Service", - "serviceFullName": "AWS Config", - "signatureVersion": "v4", - "targetPrefix": "StarlingDoveService", - "uid": "config-2014-11-12" - }, - "operations": { - "DeleteConfigRule": { - "input": { - "type": "structure", - "required": [ - "ConfigRuleName" - ], - "members": { - "ConfigRuleName": {} - } - } - }, - "DeleteConfigurationRecorder": { - "input": { - "type": "structure", - "required": [ - "ConfigurationRecorderName" - ], - "members": { - "ConfigurationRecorderName": {} - } - } - }, - "DeleteDeliveryChannel": { - "input": { - "type": "structure", - "required": [ - "DeliveryChannelName" - ], - "members": { - "DeliveryChannelName": {} - } - } - }, - "DeleteEvaluationResults": { - "input": { - "type": "structure", - "required": [ - "ConfigRuleName" - ], - "members": { - "ConfigRuleName": {} - } - }, - "output": { - "type": "structure", - "members": {} - } - }, - "DeliverConfigSnapshot": { - "input": { - "type": "structure", - "required": [ - "deliveryChannelName" - ], - "members": { - "deliveryChannelName": {} - } - }, - "output": { - "type": "structure", - "members": { - "configSnapshotId": {} - } - } - }, - "DescribeComplianceByConfigRule": { - "input": { - "type": "structure", - "members": { - "ConfigRuleNames": { - "shape": "Sd" - }, - "ComplianceTypes": { - "shape": "Se" - }, - "NextToken": {} - } - }, - "output": { - "type": "structure", - "members": { - "ComplianceByConfigRules": { - "type": "list", - "member": { - "type": "structure", - "members": { - "ConfigRuleName": {}, - "Compliance": { - "shape": "Sj" - } - } - } - }, - "NextToken": {} - } - } - }, - "DescribeComplianceByResource": { - "input": { - "type": "structure", - "members": { - "ResourceType": {}, - "ResourceId": {}, - "ComplianceTypes": { - "shape": "Se" - }, - "Limit": { - "type": "integer" - }, - "NextToken": {} - } - }, - "output": { - "type": "structure", - "members": { - "ComplianceByResources": { - "type": "list", - "member": { - "type": "structure", - "members": { - "ResourceType": {}, - "ResourceId": {}, - "Compliance": { - "shape": "Sj" - } - } - } - }, - "NextToken": {} - } - } - }, - "DescribeConfigRuleEvaluationStatus": { - "input": { - "type": "structure", - "members": { - "ConfigRuleNames": { - "shape": "Sd" - }, - "NextToken": {}, - "Limit": { - "type": "integer" - } - } - }, - "output": { - "type": "structure", - "members": { - "ConfigRulesEvaluationStatus": { - "type": "list", - "member": { - "type": "structure", - "members": { - "ConfigRuleName": {}, - "ConfigRuleArn": {}, - "ConfigRuleId": {}, - "LastSuccessfulInvocationTime": { - "type": "timestamp" - }, - "LastFailedInvocationTime": { - "type": "timestamp" - }, - "LastSuccessfulEvaluationTime": { - "type": "timestamp" - }, - "LastFailedEvaluationTime": { - "type": "timestamp" - }, - "FirstActivatedTime": { - "type": "timestamp" - }, - "LastErrorCode": {}, - "LastErrorMessage": {}, - "FirstEvaluationStarted": { - "type": "boolean" - } - } - } - }, - "NextToken": {} - } - } - }, - "DescribeConfigRules": { - "input": { - "type": "structure", - "members": { - "ConfigRuleNames": { - "shape": "Sd" - }, - "NextToken": {} - } - }, - "output": { - "type": "structure", - "members": { - "ConfigRules": { - "type": "list", - "member": { - "shape": "S14" - } - }, - "NextToken": {} - } - } - }, - "DescribeConfigurationRecorderStatus": { - "input": { - "type": "structure", - "members": { - "ConfigurationRecorderNames": { - "shape": "S1j" - } - } - }, - "output": { - "type": "structure", - "members": { - "ConfigurationRecordersStatus": { - "type": "list", - "member": { - "type": "structure", - "members": { - "name": {}, - "lastStartTime": { - "type": "timestamp" - }, - "lastStopTime": { - "type": "timestamp" - }, - "recording": { - "type": "boolean" - }, - "lastStatus": {}, - "lastErrorCode": {}, - "lastErrorMessage": {}, - "lastStatusChangeTime": { - "type": "timestamp" - } - } - } - } - } - } - }, - "DescribeConfigurationRecorders": { - "input": { - "type": "structure", - "members": { - "ConfigurationRecorderNames": { - "shape": "S1j" - } - } - }, - "output": { - "type": "structure", - "members": { - "ConfigurationRecorders": { - "type": "list", - "member": { - "shape": "S1r" - } - } - } - } - }, - "DescribeDeliveryChannelStatus": { - "input": { - "type": "structure", - "members": { - "DeliveryChannelNames": { - "shape": "S1y" - } - } - }, - "output": { - "type": "structure", - "members": { - "DeliveryChannelsStatus": { - "type": "list", - "member": { - "type": "structure", - "members": { - "name": {}, - "configSnapshotDeliveryInfo": { - "shape": "S22" - }, - "configHistoryDeliveryInfo": { - "shape": "S22" - }, - "configStreamDeliveryInfo": { - "type": "structure", - "members": { - "lastStatus": {}, - "lastErrorCode": {}, - "lastErrorMessage": {}, - "lastStatusChangeTime": { - "type": "timestamp" - } - } - } - } - } - } - } - } - }, - "DescribeDeliveryChannels": { - "input": { - "type": "structure", - "members": { - "DeliveryChannelNames": { - "shape": "S1y" - } - } - }, - "output": { - "type": "structure", - "members": { - "DeliveryChannels": { - "type": "list", - "member": { - "shape": "S28" - } - } - } - } - }, - "GetComplianceDetailsByConfigRule": { - "input": { - "type": "structure", - "required": [ - "ConfigRuleName" - ], - "members": { - "ConfigRuleName": {}, - "ComplianceTypes": { - "shape": "Se" - }, - "Limit": { - "type": "integer" - }, - "NextToken": {} - } - }, - "output": { - "type": "structure", - "members": { - "EvaluationResults": { - "shape": "S2c" - }, - "NextToken": {} - } - } - }, - "GetComplianceDetailsByResource": { - "input": { - "type": "structure", - "required": [ - "ResourceType", - "ResourceId" - ], - "members": { - "ResourceType": {}, - "ResourceId": {}, - "ComplianceTypes": { - "shape": "Se" - }, - "NextToken": {} - } - }, - "output": { - "type": "structure", - "members": { - "EvaluationResults": { - "shape": "S2c" - }, - "NextToken": {} - } - } - }, - "GetComplianceSummaryByConfigRule": { - "output": { - "type": "structure", - "members": { - "ComplianceSummary": { - "shape": "S2j" - } - } - } - }, - "GetComplianceSummaryByResourceType": { - "input": { - "type": "structure", - "members": { - "ResourceTypes": { - "shape": "S2l" - } - } - }, - "output": { - "type": "structure", - "members": { - "ComplianceSummariesByResourceType": { - "type": "list", - "member": { - "type": "structure", - "members": { - "ResourceType": {}, - "ComplianceSummary": { - "shape": "S2j" - } - } - } - } - } - } - }, - "GetDiscoveredResourceCounts": { - "input": { - "type": "structure", - "members": { - "resourceTypes": { - "shape": "S2l" - }, - "limit": { - "type": "integer" - }, - "nextToken": {} - } - }, - "output": { - "type": "structure", - "members": { - "totalDiscoveredResources": { - "type": "long" - }, - "resourceCounts": { - "type": "list", - "member": { - "type": "structure", - "members": { - "resourceType": {}, - "count": { - "type": "long" - } - } - } - }, - "nextToken": {} - } - } - }, - "GetResourceConfigHistory": { - "input": { - "type": "structure", - "required": [ - "resourceType", - "resourceId" - ], - "members": { - "resourceType": {}, - "resourceId": {}, - "laterTime": { - "type": "timestamp" - }, - "earlierTime": { - "type": "timestamp" - }, - "chronologicalOrder": {}, - "limit": { - "type": "integer" - }, - "nextToken": {} - } - }, - "output": { - "type": "structure", - "members": { - "configurationItems": { - "type": "list", - "member": { - "type": "structure", - "members": { - "version": {}, - "accountId": {}, - "configurationItemCaptureTime": { - "type": "timestamp" - }, - "configurationItemStatus": {}, - "configurationStateId": {}, - "configurationItemMD5Hash": {}, - "arn": {}, - "resourceType": {}, - "resourceId": {}, - "resourceName": {}, - "awsRegion": {}, - "availabilityZone": {}, - "resourceCreationTime": { - "type": "timestamp" - }, - "tags": { - "type": "map", - "key": {}, - "value": {} - }, - "relatedEvents": { - "type": "list", - "member": {} - }, - "relationships": { - "type": "list", - "member": { - "type": "structure", - "members": { - "resourceType": {}, - "resourceId": {}, - "resourceName": {}, - "relationshipName": {} - } - } - }, - "configuration": {}, - "supplementaryConfiguration": { - "type": "map", - "key": {}, - "value": {} - } - } - } - }, - "nextToken": {} - } - } - }, - "ListDiscoveredResources": { - "input": { - "type": "structure", - "required": [ - "resourceType" - ], - "members": { - "resourceType": {}, - "resourceIds": { - "type": "list", - "member": {} - }, - "resourceName": {}, - "limit": { - "type": "integer" - }, - "includeDeletedResources": { - "type": "boolean" - }, - "nextToken": {} - } - }, - "output": { - "type": "structure", - "members": { - "resourceIdentifiers": { - "type": "list", - "member": { - "type": "structure", - "members": { - "resourceType": {}, - "resourceId": {}, - "resourceName": {}, - "resourceDeletionTime": { - "type": "timestamp" - } - } - } - }, - "nextToken": {} - } - } - }, - "PutConfigRule": { - "input": { - "type": "structure", - "required": [ - "ConfigRule" - ], - "members": { - "ConfigRule": { - "shape": "S14" - } - } - } - }, - "PutConfigurationRecorder": { - "input": { - "type": "structure", - "required": [ - "ConfigurationRecorder" - ], - "members": { - "ConfigurationRecorder": { - "shape": "S1r" - } - } - } - }, - "PutDeliveryChannel": { - "input": { - "type": "structure", - "required": [ - "DeliveryChannel" - ], - "members": { - "DeliveryChannel": { - "shape": "S28" - } - } - } - }, - "PutEvaluations": { - "input": { - "type": "structure", - "required": [ - "ResultToken" - ], - "members": { - "Evaluations": { - "shape": "S3z" - }, - "ResultToken": {}, - "TestMode": { - "type": "boolean" - } - } - }, - "output": { - "type": "structure", - "members": { - "FailedEvaluations": { - "shape": "S3z" - } - } - } - }, - "StartConfigRulesEvaluation": { - "input": { - "type": "structure", - "members": { - "ConfigRuleNames": { - "type": "list", - "member": {} - } - } - }, - "output": { - "type": "structure", - "members": {} - } - }, - "StartConfigurationRecorder": { - "input": { - "type": "structure", - "required": [ - "ConfigurationRecorderName" - ], - "members": { - "ConfigurationRecorderName": {} - } - } - }, - "StopConfigurationRecorder": { - "input": { - "type": "structure", - "required": [ - "ConfigurationRecorderName" - ], - "members": { - "ConfigurationRecorderName": {} - } - } - } - }, - "shapes": { - "Sd": { - "type": "list", - "member": {} - }, - "Se": { - "type": "list", - "member": {} - }, - "Sj": { - "type": "structure", - "members": { - "ComplianceType": {}, - "ComplianceContributorCount": { - "shape": "Sk" - } - } - }, - "Sk": { - "type": "structure", - "members": { - "CappedCount": { - "type": "integer" - }, - "CapExceeded": { - "type": "boolean" - } - } - }, - "S14": { - "type": "structure", - "required": [ - "Source" - ], - "members": { - "ConfigRuleName": {}, - "ConfigRuleArn": {}, - "ConfigRuleId": {}, - "Description": {}, - "Scope": { - "type": "structure", - "members": { - "ComplianceResourceTypes": { - "type": "list", - "member": {} - }, - "TagKey": {}, - "TagValue": {}, - "ComplianceResourceId": {} - } - }, - "Source": { - "type": "structure", - "required": [ - "Owner", - "SourceIdentifier" - ], - "members": { - "Owner": {}, - "SourceIdentifier": {}, - "SourceDetails": { - "type": "list", - "member": { - "type": "structure", - "members": { - "EventSource": {}, - "MessageType": {}, - "MaximumExecutionFrequency": {} - } - } - } - } - }, - "InputParameters": {}, - "MaximumExecutionFrequency": {}, - "ConfigRuleState": {} - } - }, - "S1j": { - "type": "list", - "member": {} - }, - "S1r": { - "type": "structure", - "members": { - "name": {}, - "roleARN": {}, - "recordingGroup": { - "type": "structure", - "members": { - "allSupported": { - "type": "boolean" - }, - "includeGlobalResourceTypes": { - "type": "boolean" - }, - "resourceTypes": { - "type": "list", - "member": {} - } - } - } - } - }, - "S1y": { - "type": "list", - "member": {} - }, - "S22": { - "type": "structure", - "members": { - "lastStatus": {}, - "lastErrorCode": {}, - "lastErrorMessage": {}, - "lastAttemptTime": { - "type": "timestamp" - }, - "lastSuccessfulTime": { - "type": "timestamp" - }, - "nextDeliveryTime": { - "type": "timestamp" - } - } - }, - "S28": { - "type": "structure", - "members": { - "name": {}, - "s3BucketName": {}, - "s3KeyPrefix": {}, - "snsTopicARN": {}, - "configSnapshotDeliveryProperties": { - "type": "structure", - "members": { - "deliveryFrequency": {} - } - } - } - }, - "S2c": { - "type": "list", - "member": { - "type": "structure", - "members": { - "EvaluationResultIdentifier": { - "type": "structure", - "members": { - "EvaluationResultQualifier": { - "type": "structure", - "members": { - "ConfigRuleName": {}, - "ResourceType": {}, - "ResourceId": {} - } - }, - "OrderingTimestamp": { - "type": "timestamp" - } - } - }, - "ComplianceType": {}, - "ResultRecordedTime": { - "type": "timestamp" - }, - "ConfigRuleInvokedTime": { - "type": "timestamp" - }, - "Annotation": {}, - "ResultToken": {} - } - } - }, - "S2j": { - "type": "structure", - "members": { - "CompliantResourceCount": { - "shape": "Sk" - }, - "NonCompliantResourceCount": { - "shape": "Sk" - }, - "ComplianceSummaryTimestamp": { - "type": "timestamp" - } - } - }, - "S2l": { - "type": "list", - "member": {} - }, - "S3z": { - "type": "list", - "member": { - "type": "structure", - "required": [ - "ComplianceResourceType", - "ComplianceResourceId", - "ComplianceType", - "OrderingTimestamp" - ], - "members": { - "ComplianceResourceType": {}, - "ComplianceResourceId": {}, - "ComplianceType": {}, - "Annotation": {}, - "OrderingTimestamp": { - "type": "timestamp" - } - } - } - } - } -} \ No newline at end of file diff --git a/workshops/monte-carlo-on-ec2-spot-fleet/src/web/node_modules/aws-sdk/apis/config-2014-11-12.paginators.json b/workshops/monte-carlo-on-ec2-spot-fleet/src/web/node_modules/aws-sdk/apis/config-2014-11-12.paginators.json deleted file mode 100644 index 2ccf9bc7..00000000 --- a/workshops/monte-carlo-on-ec2-spot-fleet/src/web/node_modules/aws-sdk/apis/config-2014-11-12.paginators.json +++ /dev/null @@ -1,10 +0,0 @@ -{ - "pagination": { - "GetResourceConfigHistory": { - "input_token": "nextToken", - "limit_key": "limit", - "output_token": "nextToken", - "result_key": "configurationItems" - } - } -} \ No newline at end of file diff --git a/workshops/monte-carlo-on-ec2-spot-fleet/src/web/node_modules/aws-sdk/apis/cur-2017-01-06.min.json b/workshops/monte-carlo-on-ec2-spot-fleet/src/web/node_modules/aws-sdk/apis/cur-2017-01-06.min.json deleted file mode 100644 index e9dba21e..00000000 --- a/workshops/monte-carlo-on-ec2-spot-fleet/src/web/node_modules/aws-sdk/apis/cur-2017-01-06.min.json +++ /dev/null @@ -1,102 +0,0 @@ -{ - "version": "2.0", - "metadata": { - "apiVersion": "2017-01-06", - "endpointPrefix": "cur", - "jsonVersion": "1.1", - "protocol": "json", - "serviceFullName": "AWS Cost and Usage Report Service", - "signatureVersion": "v4", - "signingName": "cur", - "targetPrefix": "AWSOrigamiServiceGatewayService", - "uid": "cur-2017-01-06" - }, - "operations": { - "DeleteReportDefinition": { - "input": { - "type": "structure", - "members": { - "ReportName": {} - } - }, - "output": { - "type": "structure", - "members": { - "ResponseMessage": {} - } - } - }, - "DescribeReportDefinitions": { - "input": { - "type": "structure", - "members": { - "MaxResults": { - "type": "integer" - }, - "NextToken": {} - } - }, - "output": { - "type": "structure", - "members": { - "ReportDefinitions": { - "type": "list", - "member": { - "shape": "Sa" - } - }, - "NextToken": {} - } - } - }, - "PutReportDefinition": { - "input": { - "type": "structure", - "required": [ - "ReportDefinition" - ], - "members": { - "ReportDefinition": { - "shape": "Sa" - } - } - }, - "output": { - "type": "structure", - "members": {} - } - } - }, - "shapes": { - "Sa": { - "type": "structure", - "required": [ - "ReportName", - "TimeUnit", - "Format", - "Compression", - "AdditionalSchemaElements", - "S3Bucket", - "S3Prefix", - "S3Region" - ], - "members": { - "ReportName": {}, - "TimeUnit": {}, - "Format": {}, - "Compression": {}, - "AdditionalSchemaElements": { - "type": "list", - "member": {} - }, - "S3Bucket": {}, - "S3Prefix": {}, - "S3Region": {}, - "AdditionalArtifacts": { - "type": "list", - "member": {} - } - } - } - } -} \ No newline at end of file diff --git a/workshops/monte-carlo-on-ec2-spot-fleet/src/web/node_modules/aws-sdk/apis/cur-2017-01-06.paginators.json b/workshops/monte-carlo-on-ec2-spot-fleet/src/web/node_modules/aws-sdk/apis/cur-2017-01-06.paginators.json deleted file mode 100644 index 78c6eed3..00000000 --- a/workshops/monte-carlo-on-ec2-spot-fleet/src/web/node_modules/aws-sdk/apis/cur-2017-01-06.paginators.json +++ /dev/null @@ -1,9 +0,0 @@ -{ - "pagination": { - "DescribeReportDefinitions": { - "input_token": "NextToken", - "output_token": "NextToken", - "limit_key": "MaxResults" - } - } -} diff --git a/workshops/monte-carlo-on-ec2-spot-fleet/src/web/node_modules/aws-sdk/apis/datapipeline-2012-10-29.min.json b/workshops/monte-carlo-on-ec2-spot-fleet/src/web/node_modules/aws-sdk/apis/datapipeline-2012-10-29.min.json deleted file mode 100644 index 117da056..00000000 --- a/workshops/monte-carlo-on-ec2-spot-fleet/src/web/node_modules/aws-sdk/apis/datapipeline-2012-10-29.min.json +++ /dev/null @@ -1,667 +0,0 @@ -{ - "version": "2.0", - "metadata": { - "apiVersion": "2012-10-29", - "endpointPrefix": "datapipeline", - "jsonVersion": "1.1", - "serviceFullName": "AWS Data Pipeline", - "signatureVersion": "v4", - "targetPrefix": "DataPipeline", - "protocol": "json", - "uid": "datapipeline-2012-10-29" - }, - "operations": { - "ActivatePipeline": { - "input": { - "type": "structure", - "required": [ - "pipelineId" - ], - "members": { - "pipelineId": {}, - "parameterValues": { - "shape": "S3" - }, - "startTimestamp": { - "type": "timestamp" - } - } - }, - "output": { - "type": "structure", - "members": {} - } - }, - "AddTags": { - "input": { - "type": "structure", - "required": [ - "pipelineId", - "tags" - ], - "members": { - "pipelineId": {}, - "tags": { - "shape": "Sa" - } - } - }, - "output": { - "type": "structure", - "members": {} - } - }, - "CreatePipeline": { - "input": { - "type": "structure", - "required": [ - "name", - "uniqueId" - ], - "members": { - "name": {}, - "uniqueId": {}, - "description": {}, - "tags": { - "shape": "Sa" - } - } - }, - "output": { - "type": "structure", - "required": [ - "pipelineId" - ], - "members": { - "pipelineId": {} - } - } - }, - "DeactivatePipeline": { - "input": { - "type": "structure", - "required": [ - "pipelineId" - ], - "members": { - "pipelineId": {}, - "cancelActive": { - "type": "boolean" - } - } - }, - "output": { - "type": "structure", - "members": {} - } - }, - "DeletePipeline": { - "input": { - "type": "structure", - "required": [ - "pipelineId" - ], - "members": { - "pipelineId": {} - } - } - }, - "DescribeObjects": { - "input": { - "type": "structure", - "required": [ - "pipelineId", - "objectIds" - ], - "members": { - "pipelineId": {}, - "objectIds": { - "shape": "Sn" - }, - "evaluateExpressions": { - "type": "boolean" - }, - "marker": {} - } - }, - "output": { - "type": "structure", - "required": [ - "pipelineObjects" - ], - "members": { - "pipelineObjects": { - "shape": "Sq" - }, - "marker": {}, - "hasMoreResults": { - "type": "boolean" - } - } - } - }, - "DescribePipelines": { - "input": { - "type": "structure", - "required": [ - "pipelineIds" - ], - "members": { - "pipelineIds": { - "shape": "Sn" - } - } - }, - "output": { - "type": "structure", - "required": [ - "pipelineDescriptionList" - ], - "members": { - "pipelineDescriptionList": { - "type": "list", - "member": { - "type": "structure", - "required": [ - "pipelineId", - "name", - "fields" - ], - "members": { - "pipelineId": {}, - "name": {}, - "fields": { - "shape": "Ss" - }, - "description": {}, - "tags": { - "shape": "Sa" - } - } - } - } - } - } - }, - "EvaluateExpression": { - "input": { - "type": "structure", - "required": [ - "pipelineId", - "objectId", - "expression" - ], - "members": { - "pipelineId": {}, - "objectId": {}, - "expression": {} - } - }, - "output": { - "type": "structure", - "required": [ - "evaluatedExpression" - ], - "members": { - "evaluatedExpression": {} - } - } - }, - "GetPipelineDefinition": { - "input": { - "type": "structure", - "required": [ - "pipelineId" - ], - "members": { - "pipelineId": {}, - "version": {} - } - }, - "output": { - "type": "structure", - "members": { - "pipelineObjects": { - "shape": "Sq" - }, - "parameterObjects": { - "shape": "S13" - }, - "parameterValues": { - "shape": "S3" - } - } - } - }, - "ListPipelines": { - "input": { - "type": "structure", - "members": { - "marker": {} - } - }, - "output": { - "type": "structure", - "required": [ - "pipelineIdList" - ], - "members": { - "pipelineIdList": { - "type": "list", - "member": { - "type": "structure", - "members": { - "id": {}, - "name": {} - } - } - }, - "marker": {}, - "hasMoreResults": { - "type": "boolean" - } - } - } - }, - "PollForTask": { - "input": { - "type": "structure", - "required": [ - "workerGroup" - ], - "members": { - "workerGroup": {}, - "hostname": {}, - "instanceIdentity": { - "type": "structure", - "members": { - "document": {}, - "signature": {} - } - } - } - }, - "output": { - "type": "structure", - "members": { - "taskObject": { - "type": "structure", - "members": { - "taskId": {}, - "pipelineId": {}, - "attemptId": {}, - "objects": { - "type": "map", - "key": {}, - "value": { - "shape": "Sr" - } - } - } - } - } - } - }, - "PutPipelineDefinition": { - "input": { - "type": "structure", - "required": [ - "pipelineId", - "pipelineObjects" - ], - "members": { - "pipelineId": {}, - "pipelineObjects": { - "shape": "Sq" - }, - "parameterObjects": { - "shape": "S13" - }, - "parameterValues": { - "shape": "S3" - } - } - }, - "output": { - "type": "structure", - "required": [ - "errored" - ], - "members": { - "validationErrors": { - "shape": "S1l" - }, - "validationWarnings": { - "shape": "S1p" - }, - "errored": { - "type": "boolean" - } - } - } - }, - "QueryObjects": { - "input": { - "type": "structure", - "required": [ - "pipelineId", - "sphere" - ], - "members": { - "pipelineId": {}, - "query": { - "type": "structure", - "members": { - "selectors": { - "type": "list", - "member": { - "type": "structure", - "members": { - "fieldName": {}, - "operator": { - "type": "structure", - "members": { - "type": {}, - "values": { - "shape": "S1x" - } - } - } - } - } - } - } - }, - "sphere": {}, - "marker": {}, - "limit": { - "type": "integer" - } - } - }, - "output": { - "type": "structure", - "members": { - "ids": { - "shape": "Sn" - }, - "marker": {}, - "hasMoreResults": { - "type": "boolean" - } - } - } - }, - "RemoveTags": { - "input": { - "type": "structure", - "required": [ - "pipelineId", - "tagKeys" - ], - "members": { - "pipelineId": {}, - "tagKeys": { - "shape": "S1x" - } - } - }, - "output": { - "type": "structure", - "members": {} - } - }, - "ReportTaskProgress": { - "input": { - "type": "structure", - "required": [ - "taskId" - ], - "members": { - "taskId": {}, - "fields": { - "shape": "Ss" - } - } - }, - "output": { - "type": "structure", - "required": [ - "canceled" - ], - "members": { - "canceled": { - "type": "boolean" - } - } - } - }, - "ReportTaskRunnerHeartbeat": { - "input": { - "type": "structure", - "required": [ - "taskrunnerId" - ], - "members": { - "taskrunnerId": {}, - "workerGroup": {}, - "hostname": {} - } - }, - "output": { - "type": "structure", - "required": [ - "terminate" - ], - "members": { - "terminate": { - "type": "boolean" - } - } - } - }, - "SetStatus": { - "input": { - "type": "structure", - "required": [ - "pipelineId", - "objectIds", - "status" - ], - "members": { - "pipelineId": {}, - "objectIds": { - "shape": "Sn" - }, - "status": {} - } - } - }, - "SetTaskStatus": { - "input": { - "type": "structure", - "required": [ - "taskId", - "taskStatus" - ], - "members": { - "taskId": {}, - "taskStatus": {}, - "errorId": {}, - "errorMessage": {}, - "errorStackTrace": {} - } - }, - "output": { - "type": "structure", - "members": {} - } - }, - "ValidatePipelineDefinition": { - "input": { - "type": "structure", - "required": [ - "pipelineId", - "pipelineObjects" - ], - "members": { - "pipelineId": {}, - "pipelineObjects": { - "shape": "Sq" - }, - "parameterObjects": { - "shape": "S13" - }, - "parameterValues": { - "shape": "S3" - } - } - }, - "output": { - "type": "structure", - "required": [ - "errored" - ], - "members": { - "validationErrors": { - "shape": "S1l" - }, - "validationWarnings": { - "shape": "S1p" - }, - "errored": { - "type": "boolean" - } - } - } - } - }, - "shapes": { - "S3": { - "type": "list", - "member": { - "type": "structure", - "required": [ - "id", - "stringValue" - ], - "members": { - "id": {}, - "stringValue": {} - } - } - }, - "Sa": { - "type": "list", - "member": { - "type": "structure", - "required": [ - "key", - "value" - ], - "members": { - "key": {}, - "value": {} - } - } - }, - "Sn": { - "type": "list", - "member": {} - }, - "Sq": { - "type": "list", - "member": { - "shape": "Sr" - } - }, - "Sr": { - "type": "structure", - "required": [ - "id", - "name", - "fields" - ], - "members": { - "id": {}, - "name": {}, - "fields": { - "shape": "Ss" - } - } - }, - "Ss": { - "type": "list", - "member": { - "type": "structure", - "required": [ - "key" - ], - "members": { - "key": {}, - "stringValue": {}, - "refValue": {} - } - } - }, - "S13": { - "type": "list", - "member": { - "type": "structure", - "required": [ - "id", - "attributes" - ], - "members": { - "id": {}, - "attributes": { - "type": "list", - "member": { - "type": "structure", - "required": [ - "key", - "stringValue" - ], - "members": { - "key": {}, - "stringValue": {} - } - } - } - } - } - }, - "S1l": { - "type": "list", - "member": { - "type": "structure", - "members": { - "id": {}, - "errors": { - "shape": "S1n" - } - } - } - }, - "S1n": { - "type": "list", - "member": {} - }, - "S1p": { - "type": "list", - "member": { - "type": "structure", - "members": { - "id": {}, - "warnings": { - "shape": "S1n" - } - } - } - }, - "S1x": { - "type": "list", - "member": {} - } - } -} \ No newline at end of file diff --git a/workshops/monte-carlo-on-ec2-spot-fleet/src/web/node_modules/aws-sdk/apis/datapipeline-2012-10-29.paginators.json b/workshops/monte-carlo-on-ec2-spot-fleet/src/web/node_modules/aws-sdk/apis/datapipeline-2012-10-29.paginators.json deleted file mode 100644 index db941936..00000000 --- a/workshops/monte-carlo-on-ec2-spot-fleet/src/web/node_modules/aws-sdk/apis/datapipeline-2012-10-29.paginators.json +++ /dev/null @@ -1,26 +0,0 @@ -{ - "pagination": { - "ListPipelines": { - "input_token": "marker", - "output_token": "marker", - "more_results": "hasMoreResults", - "result_key": "pipelineIdList" - }, - "DescribeObjects": { - "input_token": "marker", - "output_token": "marker", - "more_results": "hasMoreResults", - "result_key": "pipelineObjects" - }, - "DescribePipelines": { - "result_key": "pipelineDescriptionList" - }, - "QueryObjects": { - "input_token": "marker", - "output_token": "marker", - "more_results": "hasMoreResults", - "limit_key": "limit", - "result_key": "ids" - } - } -} diff --git a/workshops/monte-carlo-on-ec2-spot-fleet/src/web/node_modules/aws-sdk/apis/dax-2017-04-19.examples.json b/workshops/monte-carlo-on-ec2-spot-fleet/src/web/node_modules/aws-sdk/apis/dax-2017-04-19.examples.json deleted file mode 100644 index 0ea7e3b0..00000000 --- a/workshops/monte-carlo-on-ec2-spot-fleet/src/web/node_modules/aws-sdk/apis/dax-2017-04-19.examples.json +++ /dev/null @@ -1,5 +0,0 @@ -{ - "version": "1.0", - "examples": { - } -} diff --git a/workshops/monte-carlo-on-ec2-spot-fleet/src/web/node_modules/aws-sdk/apis/dax-2017-04-19.min.json b/workshops/monte-carlo-on-ec2-spot-fleet/src/web/node_modules/aws-sdk/apis/dax-2017-04-19.min.json deleted file mode 100644 index 309fcc3a..00000000 --- a/workshops/monte-carlo-on-ec2-spot-fleet/src/web/node_modules/aws-sdk/apis/dax-2017-04-19.min.json +++ /dev/null @@ -1,705 +0,0 @@ -{ - "version": "2.0", - "metadata": { - "apiVersion": "2017-04-19", - "endpointPrefix": "dax", - "jsonVersion": "1.1", - "protocol": "json", - "serviceAbbreviation": "Amazon DAX", - "serviceFullName": "Amazon DynamoDB Accelerator (DAX)", - "signatureVersion": "v4", - "targetPrefix": "AmazonDAXV3", - "uid": "dax-2017-04-19" - }, - "operations": { - "CreateCluster": { - "input": { - "type": "structure", - "required": [ - "ClusterName", - "NodeType", - "ReplicationFactor", - "IamRoleArn" - ], - "members": { - "ClusterName": {}, - "NodeType": {}, - "Description": {}, - "ReplicationFactor": { - "type": "integer" - }, - "AvailabilityZones": { - "shape": "S4" - }, - "SubnetGroupName": {}, - "SecurityGroupIds": { - "shape": "S5" - }, - "PreferredMaintenanceWindow": {}, - "NotificationTopicArn": {}, - "IamRoleArn": {}, - "ParameterGroupName": {}, - "Tags": { - "shape": "S6" - } - } - }, - "output": { - "type": "structure", - "members": { - "Cluster": { - "shape": "S9" - } - } - } - }, - "CreateParameterGroup": { - "input": { - "type": "structure", - "required": [ - "ParameterGroupName" - ], - "members": { - "ParameterGroupName": {}, - "Description": {} - } - }, - "output": { - "type": "structure", - "members": { - "ParameterGroup": { - "shape": "Sm" - } - } - } - }, - "CreateSubnetGroup": { - "input": { - "type": "structure", - "required": [ - "SubnetGroupName", - "SubnetIds" - ], - "members": { - "SubnetGroupName": {}, - "Description": {}, - "SubnetIds": { - "shape": "So" - } - } - }, - "output": { - "type": "structure", - "members": { - "SubnetGroup": { - "shape": "Sq" - } - } - } - }, - "DecreaseReplicationFactor": { - "input": { - "type": "structure", - "required": [ - "ClusterName", - "NewReplicationFactor" - ], - "members": { - "ClusterName": {}, - "NewReplicationFactor": { - "type": "integer" - }, - "AvailabilityZones": { - "shape": "S4" - }, - "NodeIdsToRemove": { - "shape": "Sc" - } - } - }, - "output": { - "type": "structure", - "members": { - "Cluster": { - "shape": "S9" - } - } - } - }, - "DeleteCluster": { - "input": { - "type": "structure", - "required": [ - "ClusterName" - ], - "members": { - "ClusterName": {} - } - }, - "output": { - "type": "structure", - "members": { - "Cluster": { - "shape": "S9" - } - } - } - }, - "DeleteParameterGroup": { - "input": { - "type": "structure", - "required": [ - "ParameterGroupName" - ], - "members": { - "ParameterGroupName": {} - } - }, - "output": { - "type": "structure", - "members": { - "DeletionMessage": {} - } - } - }, - "DeleteSubnetGroup": { - "input": { - "type": "structure", - "required": [ - "SubnetGroupName" - ], - "members": { - "SubnetGroupName": {} - } - }, - "output": { - "type": "structure", - "members": { - "DeletionMessage": {} - } - } - }, - "DescribeClusters": { - "input": { - "type": "structure", - "members": { - "ClusterNames": { - "type": "list", - "member": {} - }, - "MaxResults": { - "type": "integer" - }, - "NextToken": {} - } - }, - "output": { - "type": "structure", - "members": { - "NextToken": {}, - "Clusters": { - "type": "list", - "member": { - "shape": "S9" - } - } - } - } - }, - "DescribeDefaultParameters": { - "input": { - "type": "structure", - "members": { - "MaxResults": { - "type": "integer" - }, - "NextToken": {} - } - }, - "output": { - "type": "structure", - "members": { - "NextToken": {}, - "Parameters": { - "shape": "S17" - } - } - } - }, - "DescribeEvents": { - "input": { - "type": "structure", - "members": { - "SourceName": {}, - "SourceType": {}, - "StartTime": { - "type": "timestamp" - }, - "EndTime": { - "type": "timestamp" - }, - "Duration": { - "type": "integer" - }, - "MaxResults": { - "type": "integer" - }, - "NextToken": {} - } - }, - "output": { - "type": "structure", - "members": { - "NextToken": {}, - "Events": { - "type": "list", - "member": { - "type": "structure", - "members": { - "SourceName": {}, - "SourceType": {}, - "Message": {}, - "Date": { - "type": "timestamp" - } - } - } - } - } - } - }, - "DescribeParameterGroups": { - "input": { - "type": "structure", - "members": { - "ParameterGroupNames": { - "type": "list", - "member": {} - }, - "MaxResults": { - "type": "integer" - }, - "NextToken": {} - } - }, - "output": { - "type": "structure", - "members": { - "NextToken": {}, - "ParameterGroups": { - "type": "list", - "member": { - "shape": "Sm" - } - } - } - } - }, - "DescribeParameters": { - "input": { - "type": "structure", - "required": [ - "ParameterGroupName" - ], - "members": { - "ParameterGroupName": {}, - "Source": {}, - "MaxResults": { - "type": "integer" - }, - "NextToken": {} - } - }, - "output": { - "type": "structure", - "members": { - "NextToken": {}, - "Parameters": { - "shape": "S17" - } - } - } - }, - "DescribeSubnetGroups": { - "input": { - "type": "structure", - "members": { - "SubnetGroupNames": { - "type": "list", - "member": {} - }, - "MaxResults": { - "type": "integer" - }, - "NextToken": {} - } - }, - "output": { - "type": "structure", - "members": { - "NextToken": {}, - "SubnetGroups": { - "type": "list", - "member": { - "shape": "Sq" - } - } - } - } - }, - "IncreaseReplicationFactor": { - "input": { - "type": "structure", - "required": [ - "ClusterName", - "NewReplicationFactor" - ], - "members": { - "ClusterName": {}, - "NewReplicationFactor": { - "type": "integer" - }, - "AvailabilityZones": { - "shape": "S4" - } - } - }, - "output": { - "type": "structure", - "members": { - "Cluster": { - "shape": "S9" - } - } - } - }, - "ListTags": { - "input": { - "type": "structure", - "required": [ - "ResourceName" - ], - "members": { - "ResourceName": {}, - "NextToken": {} - } - }, - "output": { - "type": "structure", - "members": { - "Tags": { - "shape": "S6" - }, - "NextToken": {} - } - } - }, - "RebootNode": { - "input": { - "type": "structure", - "required": [ - "ClusterName", - "NodeId" - ], - "members": { - "ClusterName": {}, - "NodeId": {} - } - }, - "output": { - "type": "structure", - "members": { - "Cluster": { - "shape": "S9" - } - } - } - }, - "TagResource": { - "input": { - "type": "structure", - "required": [ - "ResourceName", - "Tags" - ], - "members": { - "ResourceName": {}, - "Tags": { - "shape": "S6" - } - } - }, - "output": { - "type": "structure", - "members": { - "Tags": { - "shape": "S6" - } - } - } - }, - "UntagResource": { - "input": { - "type": "structure", - "required": [ - "ResourceName", - "TagKeys" - ], - "members": { - "ResourceName": {}, - "TagKeys": { - "type": "list", - "member": {} - } - } - }, - "output": { - "type": "structure", - "members": { - "Tags": { - "shape": "S6" - } - } - } - }, - "UpdateCluster": { - "input": { - "type": "structure", - "required": [ - "ClusterName" - ], - "members": { - "ClusterName": {}, - "Description": {}, - "PreferredMaintenanceWindow": {}, - "NotificationTopicArn": {}, - "NotificationTopicStatus": {}, - "ParameterGroupName": {}, - "SecurityGroupIds": { - "shape": "S5" - } - } - }, - "output": { - "type": "structure", - "members": { - "Cluster": { - "shape": "S9" - } - } - } - }, - "UpdateParameterGroup": { - "input": { - "type": "structure", - "required": [ - "ParameterGroupName", - "ParameterNameValues" - ], - "members": { - "ParameterGroupName": {}, - "ParameterNameValues": { - "type": "list", - "member": { - "type": "structure", - "members": { - "ParameterName": {}, - "ParameterValue": {} - } - } - } - } - }, - "output": { - "type": "structure", - "members": { - "ParameterGroup": { - "shape": "Sm" - } - } - } - }, - "UpdateSubnetGroup": { - "input": { - "type": "structure", - "required": [ - "SubnetGroupName" - ], - "members": { - "SubnetGroupName": {}, - "Description": {}, - "SubnetIds": { - "shape": "So" - } - } - }, - "output": { - "type": "structure", - "members": { - "SubnetGroup": { - "shape": "Sq" - } - } - } - } - }, - "shapes": { - "S4": { - "type": "list", - "member": {} - }, - "S5": { - "type": "list", - "member": {} - }, - "S6": { - "type": "list", - "member": { - "type": "structure", - "members": { - "Key": {}, - "Value": {} - } - } - }, - "S9": { - "type": "structure", - "members": { - "ClusterName": {}, - "Description": {}, - "ClusterArn": {}, - "TotalNodes": { - "type": "integer" - }, - "ActiveNodes": { - "type": "integer" - }, - "NodeType": {}, - "Status": {}, - "ClusterDiscoveryEndpoint": { - "shape": "Sb" - }, - "NodeIdsToRemove": { - "shape": "Sc" - }, - "Nodes": { - "type": "list", - "member": { - "type": "structure", - "members": { - "NodeId": {}, - "Endpoint": { - "shape": "Sb" - }, - "NodeCreateTime": { - "type": "timestamp" - }, - "AvailabilityZone": {}, - "NodeStatus": {}, - "ParameterGroupStatus": {} - } - } - }, - "PreferredMaintenanceWindow": {}, - "NotificationConfiguration": { - "type": "structure", - "members": { - "TopicArn": {}, - "TopicStatus": {} - } - }, - "SubnetGroup": {}, - "SecurityGroups": { - "type": "list", - "member": { - "type": "structure", - "members": { - "SecurityGroupIdentifier": {}, - "Status": {} - } - } - }, - "IamRoleArn": {}, - "ParameterGroup": { - "type": "structure", - "members": { - "ParameterGroupName": {}, - "ParameterApplyStatus": {}, - "NodeIdsToReboot": { - "shape": "Sc" - } - } - } - } - }, - "Sb": { - "type": "structure", - "members": { - "Address": {}, - "Port": { - "type": "integer" - } - } - }, - "Sc": { - "type": "list", - "member": {} - }, - "Sm": { - "type": "structure", - "members": { - "ParameterGroupName": {}, - "Description": {} - } - }, - "So": { - "type": "list", - "member": {} - }, - "Sq": { - "type": "structure", - "members": { - "SubnetGroupName": {}, - "Description": {}, - "VpcId": {}, - "Subnets": { - "type": "list", - "member": { - "type": "structure", - "members": { - "SubnetIdentifier": {}, - "SubnetAvailabilityZone": {} - } - } - } - } - }, - "S17": { - "type": "list", - "member": { - "type": "structure", - "members": { - "ParameterName": {}, - "ParameterType": {}, - "ParameterValue": {}, - "NodeTypeSpecificValues": { - "type": "list", - "member": { - "type": "structure", - "members": { - "NodeType": {}, - "Value": {} - } - } - }, - "Description": {}, - "Source": {}, - "DataType": {}, - "AllowedValues": {}, - "IsModifiable": {}, - "ChangeType": {} - } - } - } - } -} \ No newline at end of file diff --git a/workshops/monte-carlo-on-ec2-spot-fleet/src/web/node_modules/aws-sdk/apis/dax-2017-04-19.paginators.json b/workshops/monte-carlo-on-ec2-spot-fleet/src/web/node_modules/aws-sdk/apis/dax-2017-04-19.paginators.json deleted file mode 100644 index 5677bd8e..00000000 --- a/workshops/monte-carlo-on-ec2-spot-fleet/src/web/node_modules/aws-sdk/apis/dax-2017-04-19.paginators.json +++ /dev/null @@ -1,4 +0,0 @@ -{ - "pagination": { - } -} diff --git a/workshops/monte-carlo-on-ec2-spot-fleet/src/web/node_modules/aws-sdk/apis/devicefarm-2015-06-23.examples.json b/workshops/monte-carlo-on-ec2-spot-fleet/src/web/node_modules/aws-sdk/apis/devicefarm-2015-06-23.examples.json deleted file mode 100644 index 4bfa22ba..00000000 --- a/workshops/monte-carlo-on-ec2-spot-fleet/src/web/node_modules/aws-sdk/apis/devicefarm-2015-06-23.examples.json +++ /dev/null @@ -1,1242 +0,0 @@ -{ - "version": "1.0", - "examples": { - "CreateDevicePool": [ - { - "input": { - "name": "MyDevicePool", - "description": "My Android devices", - "projectArn": "arn:aws:devicefarm:us-west-2:123456789101:project:EXAMPLE-GUID-123-456", - "rules": [ - - ] - }, - "output": { - "devicePool": { - } - }, - "comments": { - "input": { - "name": "A device pool contains related devices, such as devices that run only on Android or that run only on iOS.", - "projectArn": "You can get the project ARN by using the list-projects CLI command." - }, - "output": { - } - }, - "description": "The following example creates a new device pool named MyDevicePool inside an existing project.", - "id": "createdevicepool-example-1470862210860", - "title": "To create a new device pool" - } - ], - "CreateProject": [ - { - "input": { - "name": "MyProject" - }, - "output": { - "project": { - "name": "MyProject", - "arn": "arn:aws:devicefarm:us-west-2:123456789101:project:5e01a8c7-c861-4c0a-b1d5-12345EXAMPLE", - "created": "1472660939.152" - } - }, - "comments": { - "input": { - "name": "A project in Device Farm is a workspace that contains test runs. A run is a test of a single app against one or more devices." - }, - "output": { - } - }, - "description": "The following example creates a new project named MyProject.", - "id": "createproject-example-1470862210860", - "title": "To create a new project" - } - ], - "CreateRemoteAccessSession": [ - { - "input": { - "name": "MySession", - "configuration": { - "billingMethod": "METERED" - }, - "deviceArn": "arn:aws:devicefarm:us-west-2::device:123EXAMPLE", - "projectArn": "arn:aws:devicefarm:us-west-2:123456789101:project:EXAMPLE-GUID-123-456" - }, - "output": { - "remoteAccessSession": { - } - }, - "comments": { - "input": { - "deviceArn": "You can get the device ARN by using the list-devices CLI command.", - "projectArn": "You can get the project ARN by using the list-projects CLI command." - }, - "output": { - } - }, - "description": "The following example creates a remote access session named MySession.", - "id": "to-create-a-remote-access-session-1470970668274", - "title": "To create a remote access session" - } - ], - "CreateUpload": [ - { - "input": { - "name": "MyAppiumPythonUpload", - "type": "APPIUM_PYTHON_TEST_PACKAGE", - "projectArn": "arn:aws:devicefarm:us-west-2:123456789101:project:EXAMPLE-GUID-123-456" - }, - "output": { - "upload": { - "name": "MyAppiumPythonUpload", - "type": "APPIUM_PYTHON_TEST_PACKAGE", - "arn": "arn:aws:devicefarm:us-west-2:123456789101:upload:5e01a8c7-c861-4c0a-b1d5-5ec6e6c6dd23/b5340a65-3da7-4da6-a26e-12345EXAMPLE", - "created": "1472661404.186", - "status": "INITIALIZED", - "url": "https://prod-us-west-2-uploads.s3-us-west-2.amazonaws.com/arn%3Aaws%3Adevicefarm%3Aus-west-2%3A123456789101%3Aproject%3A5e01a8c7-c861-4c0a-b1d5-12345EXAMPLE/uploads/arn%3Aaws%3Adevicefarm%3Aus-west-2%3A123456789101%3Aupload%3A5e01a8c7-c861-4c0a-b1d5-5ec6e6c6dd23/b5340a65-3da7-4da6-a26e-12345EXAMPLE/MyAppiumPythonUpload?AWSAccessKeyId=1234567891011EXAMPLE&Expires=1472747804&Signature=1234567891011EXAMPLE" - } - }, - "comments": { - "input": { - "projectArn": "You can get the project ARN by using the list-projects CLI command." - }, - "output": { - } - }, - "description": "The following example creates a new Appium Python test package upload inside an existing project.", - "id": "createupload-example-1470864711775", - "title": "To create a new test package upload" - } - ], - "DeleteDevicePool": [ - { - "input": { - "arn": "arn:aws:devicefarm:us-west-2::devicepool:123-456-EXAMPLE-GUID" - }, - "output": { - }, - "comments": { - "input": { - "arn": "You can get the device pool ARN by using the list-device-pools CLI command." - }, - "output": { - } - }, - "description": "The following example deletes a specific device pool.", - "id": "deletedevicepool-example-1470866975494", - "title": "To delete a device pool" - } - ], - "DeleteProject": [ - { - "input": { - "arn": "arn:aws:devicefarm:us-west-2:123456789101:project:EXAMPLE-GUID-123-456" - }, - "output": { - }, - "comments": { - "input": { - "arn": "You can get the project ARN by using the list-projects CLI command." - }, - "output": { - } - }, - "description": "The following example deletes a specific project.", - "id": "deleteproject-example-1470867374212", - "title": "To delete a project" - } - ], - "DeleteRemoteAccessSession": [ - { - "input": { - "arn": "arn:aws:devicefarm:us-west-2:123456789101:session:EXAMPLE-GUID-123-456" - }, - "output": { - }, - "comments": { - "input": { - "arn": "You can get the remote access session ARN by using the list-remote-access-sessions CLI command." - }, - "output": { - } - }, - "description": "The following example deletes a specific remote access session.", - "id": "to-delete-a-specific-remote-access-session-1470971431677", - "title": "To delete a specific remote access session" - } - ], - "DeleteRun": [ - { - "input": { - "arn": "arn:aws:devicefarm:us-west-2:123456789101:run:EXAMPLE-GUID-123-456" - }, - "output": { - }, - "comments": { - "input": { - "arn": "You can get the run ARN by using the list-runs CLI command." - }, - "output": { - } - }, - "description": "The following example deletes a specific test run.", - "id": "deleterun-example-1470867905129", - "title": "To delete a run" - } - ], - "DeleteUpload": [ - { - "input": { - "arn": "arn:aws:devicefarm:us-west-2:123456789101:upload:EXAMPLE-GUID-123-456" - }, - "output": { - }, - "comments": { - "input": { - "arn": "You can get the upload ARN by using the list-uploads CLI command." - }, - "output": { - } - }, - "description": "The following example deletes a specific upload.", - "id": "deleteupload-example-1470868363942", - "title": "To delete a specific upload" - } - ], - "GetAccountSettings": [ - { - "input": { - }, - "output": { - "accountSettings": { - "awsAccountNumber": "123456789101", - "unmeteredDevices": { - "ANDROID": 1, - "IOS": 2 - } - } - }, - "comments": { - "input": { - }, - "output": { - } - }, - "description": "The following example returns information about your Device Farm account settings.", - "id": "to-get-information-about-account-settings-1472567568189", - "title": "To get information about account settings" - } - ], - "GetDevice": [ - { - "input": { - "arn": "arn:aws:devicefarm:us-west-2::device:123EXAMPLE" - }, - "output": { - "device": { - "name": "LG G2 (Sprint)", - "arn": "arn:aws:devicefarm:us-west-2::device:A0E6E6E1059E45918208DF75B2B7EF6C", - "cpu": { - "architecture": "armeabi-v7a", - "clock": 2265.6, - "frequency": "MHz" - }, - "formFactor": "PHONE", - "heapSize": 256000000, - "image": "75B2B7EF6C12345EXAMPLE", - "manufacturer": "LG", - "memory": 16000000000, - "model": "G2 (Sprint)", - "os": "4.2.2", - "platform": "ANDROID", - "resolution": { - "height": 1920, - "width": 1080 - } - } - }, - "comments": { - "input": { - }, - "output": { - } - }, - "description": "The following example returns information about a specific device.", - "id": "getdevice-example-1470870602173", - "title": "To get information about a device" - } - ], - "GetDevicePool": [ - { - "input": { - "arn": "arn:aws:devicefarm:us-west-2:123456789101:project:EXAMPLE-GUID-123-456" - }, - "output": { - "devicePool": { - } - }, - "comments": { - "input": { - "arn": "You can obtain the project ARN by using the list-projects CLI command." - }, - "output": { - } - }, - "description": "The following example returns information about a specific device pool, given a project ARN.", - "id": "getdevicepool-example-1470870873136", - "title": "To get information about a device pool" - } - ], - "GetDevicePoolCompatibility": [ - { - "input": { - "appArn": "arn:aws:devicefarm:us-west-2::app:123-456-EXAMPLE-GUID", - "devicePoolArn": "arn:aws:devicefarm:us-west-2::devicepool:123-456-EXAMPLE-GUID", - "testType": "APPIUM_PYTHON" - }, - "output": { - "compatibleDevices": [ - - ], - "incompatibleDevices": [ - - ] - }, - "comments": { - "input": { - "devicePoolArn": "You can get the device pool ARN by using the list-device-pools CLI command." - }, - "output": { - } - }, - "description": "The following example returns information about the compatibility of a specific device pool, given its ARN.", - "id": "getdevicepoolcompatibility-example-1470925003466", - "title": "To get information about the compatibility of a device pool" - } - ], - "GetJob": [ - { - "input": { - "arn": "arn:aws:devicefarm:us-west-2::job:123-456-EXAMPLE-GUID" - }, - "output": { - "job": { - } - }, - "comments": { - "input": { - "arn": "You can get the job ARN by using the list-jobs CLI command." - }, - "output": { - } - }, - "description": "The following example returns information about a specific job.", - "id": "getjob-example-1470928294268", - "title": "To get information about a job" - } - ], - "GetOfferingStatus": [ - { - "input": { - "nextToken": "RW5DdDJkMWYwZjM2MzM2VHVpOHJIUXlDUXlhc2QzRGViYnc9SEXAMPLE=" - }, - "output": { - "current": { - "D68B3C05-1BA6-4360-BC69-12345EXAMPLE": { - "offering": { - "type": "RECURRING", - "description": "Android Remote Access Unmetered Device Slot", - "id": "D68B3C05-1BA6-4360-BC69-12345EXAMPLE", - "platform": "ANDROID" - }, - "quantity": 1 - } - }, - "nextPeriod": { - "D68B3C05-1BA6-4360-BC69-12345EXAMPLE": { - "effectiveOn": "1472688000", - "offering": { - "type": "RECURRING", - "description": "Android Remote Access Unmetered Device Slot", - "id": "D68B3C05-1BA6-4360-BC69-12345EXAMPLE", - "platform": "ANDROID" - }, - "quantity": 1 - } - } - }, - "comments": { - "input": { - "nextToken": "A dynamically generated value, used for paginating results." - }, - "output": { - } - }, - "description": "The following example returns information about Device Farm offerings available to your account.", - "id": "to-get-status-information-about-device-offerings-1472568124402", - "title": "To get status information about device offerings" - } - ], - "GetProject": [ - { - "input": { - "arn": "arn:aws:devicefarm:us-west-2:123456789101:project:5e01a8c7-c861-4c0a-b1d5-12345EXAMPLE" - }, - "output": { - "project": { - "name": "My Project", - "arn": "arn:aws:devicefarm:us-west-2:123456789101:project:5e01a8c7-c861-4c0a-b1d5-12345EXAMPLE", - "created": "1472660939.152" - } - }, - "comments": { - "input": { - "arn": "You can get the project ARN by using the list-projects CLI command." - }, - "output": { - } - }, - "description": "The following example gets information about a specific project.", - "id": "to-get-a-project-1470975038449", - "title": "To get information about a project" - } - ], - "GetRemoteAccessSession": [ - { - "input": { - "arn": "arn:aws:devicefarm:us-west-2:123456789101:session:EXAMPLE-GUID-123-456" - }, - "output": { - "remoteAccessSession": { - } - }, - "comments": { - "input": { - "arn": "You can get the remote access session ARN by using the list-remote-access-sessions CLI command." - }, - "output": { - } - }, - "description": "The following example gets a specific remote access session.", - "id": "to-get-a-remote-access-session-1471014119414", - "title": "To get a remote access session" - } - ], - "GetRun": [ - { - "input": { - "arn": "arn:aws:devicefarm:us-west-2:123456789101:run:5e01a8c7-c861-4c0a-b1d5-5ec6e6c6dd23/0fcac17b-6122-44d7-ae5a-12345EXAMPLE" - }, - "output": { - "run": { - "name": "My Test Run", - "type": "BUILTIN_EXPLORER", - "arn": "arn:aws:devicefarm:us-west-2:123456789101:run:5e01a8c7-c861-4c0a-b1d5-5ec6e6c6dd23/0fcac17b-6122-44d7-ae5a-12345EXAMPLE", - "billingMethod": "METERED", - "completedJobs": 0, - "counters": { - "errored": 0, - "failed": 0, - "passed": 0, - "skipped": 0, - "stopped": 0, - "total": 0, - "warned": 0 - }, - "created": "1472667509.852", - "deviceMinutes": { - "metered": 0.0, - "total": 0.0, - "unmetered": 0.0 - }, - "platform": "ANDROID", - "result": "PENDING", - "status": "RUNNING", - "totalJobs": 3 - } - }, - "comments": { - "input": { - "arn": "You can get the run ARN by using the list-runs CLI command." - }, - "output": { - } - }, - "description": "The following example gets information about a specific test run.", - "id": "to-get-a-test-run-1471015895657", - "title": "To get information about a test run" - } - ], - "GetSuite": [ - { - "input": { - "arn": "arn:aws:devicefarm:us-west-2:123456789101:suite:EXAMPLE-GUID-123-456" - }, - "output": { - "suite": { - } - }, - "comments": { - "input": { - "arn": "You can get the suite ARN by using the list-suites CLI command." - }, - "output": { - } - }, - "description": "The following example gets information about a specific test suite.", - "id": "to-get-information-about-a-test-suite-1471016525008", - "title": "To get information about a test suite" - } - ], - "GetTest": [ - { - "input": { - "arn": "arn:aws:devicefarm:us-west-2:123456789101:test:EXAMPLE-GUID-123-456" - }, - "output": { - "test": { - } - }, - "comments": { - "input": { - "arn": "You can get the test ARN by using the list-tests CLI command." - }, - "output": { - } - }, - "description": "The following example gets information about a specific test.", - "id": "to-get-information-about-a-specific-test-1471025744238", - "title": "To get information about a specific test" - } - ], - "GetUpload": [ - { - "input": { - "arn": "arn:aws:devicefarm:us-west-2:123456789101:upload:EXAMPLE-GUID-123-456" - }, - "output": { - "upload": { - } - }, - "comments": { - "input": { - "arn": "You can get the test ARN by using the list-uploads CLI command." - }, - "output": { - } - }, - "description": "The following example gets information about a specific upload.", - "id": "to-get-information-about-a-specific-upload-1471025996221", - "title": "To get information about a specific upload" - } - ], - "InstallToRemoteAccessSession": [ - { - "input": { - "appArn": "arn:aws:devicefarm:us-west-2:123456789101:app:EXAMPLE-GUID-123-456", - "remoteAccessSessionArn": "arn:aws:devicefarm:us-west-2:123456789101:session:EXAMPLE-GUID-123-456" - }, - "output": { - "appUpload": { - } - }, - "comments": { - "input": { - "remoteAccessSessionArn": "You can get the remote access session ARN by using the list-remote-access-sessions CLI command." - }, - "output": { - } - }, - "description": "The following example installs a specific app to a device in a specific remote access session.", - "id": "to-install-to-a-remote-access-session-1471634453818", - "title": "To install to a remote access session" - } - ], - "ListArtifacts": [ - { - "input": { - "type": "SCREENSHOT", - "arn": "arn:aws:devicefarm:us-west-2:123456789101:run:EXAMPLE-GUID-123-456" - }, - "comments": { - "input": { - "arn": "Can also be used to list artifacts for a Job, Suite, or Test ARN." - }, - "output": { - } - }, - "description": "The following example lists screenshot artifacts for a specific run.", - "id": "to-list-artifacts-for-a-resource-1471635409527", - "title": "To list artifacts for a resource" - } - ], - "ListDevicePools": [ - { - "input": { - "type": "PRIVATE", - "arn": "arn:aws:devicefarm:us-west-2:123456789101:project:EXAMPLE-GUID-123-456" - }, - "output": { - "devicePools": [ - { - "name": "Top Devices", - "arn": "arn:aws:devicefarm:us-west-2::devicepool:082d10e5-d7d7-48a5-ba5c-12345EXAMPLE", - "description": "Top devices", - "rules": [ - { - "value": "[\"arn:aws:devicefarm:us-west-2::device:123456789EXAMPLE\",\"arn:aws:devicefarm:us-west-2::device:123456789EXAMPLE\",\"arn:aws:devicefarm:us-west-2::device:123456789EXAMPLE\",\"arn:aws:devicefarm:us-west-2::device:123456789EXAMPLE\",\"arn:aws:devicefarm:us-west-2::device:123456789EXAMPLE\",\"arn:aws:devicefarm:us-west-2::device:123456789EXAMPLE\",\"arn:aws:devicefarm:us-west-2::device:123456789EXAMPLE\",\"arn:aws:devicefarm:us-west-2::device:123456789EXAMPLE\",\"arn:aws:devicefarm:us-west-2::device:123456789EXAMPLE\",\"arn:aws:devicefarm:us-west-2::device:123456789EXAMPLE\"]", - "attribute": "ARN", - "operator": "IN" - } - ] - }, - { - "name": "My Android Device Pool", - "arn": "arn:aws:devicefarm:us-west-2:123456789101:devicepool:5e01a8c7-c861-4c0a-b1d5-5ec6e6c6dd23/bf96e75a-28f6-4e61-b6a7-12345EXAMPLE", - "description": "Samsung Galaxy Android devices", - "rules": [ - { - "value": "[\"arn:aws:devicefarm:us-west-2::device:123456789EXAMPLE\",\"arn:aws:devicefarm:us-west-2::device:123456789EXAMPLE\",\"arn:aws:devicefarm:us-west-2::device:123456789EXAMPLE\"]", - "attribute": "ARN", - "operator": "IN" - } - ] - } - ] - }, - "comments": { - "input": { - "arn": "You can get the project ARN by using the list-projects CLI command." - }, - "output": { - } - }, - "description": "The following example returns information about the private device pools in a specific project.", - "id": "to-get-information-about-device-pools-1471635745170", - "title": "To get information about device pools" - } - ], - "ListDevices": [ - { - "input": { - "arn": "arn:aws:devicefarm:us-west-2:123456789101:project:EXAMPLE-GUID-123-456" - }, - "output": { - }, - "comments": { - "input": { - "arn": "You can get the project ARN by using the list-projects CLI command." - }, - "output": { - } - }, - "description": "The following example returns information about the available devices in a specific project.", - "id": "to-get-information-about-devices-1471641699344", - "title": "To get information about devices" - } - ], - "ListJobs": [ - { - "input": { - "arn": "arn:aws:devicefarm:us-west-2:123456789101:project:EXAMPLE-GUID-123-456" - }, - "comments": { - "input": { - "arn": "You can get the project ARN by using the list-jobs CLI command." - }, - "output": { - } - }, - "description": "The following example returns information about jobs in a specific project.", - "id": "to-get-information-about-jobs-1471642228071", - "title": "To get information about jobs" - } - ], - "ListOfferingTransactions": [ - { - "input": { - "nextToken": "RW5DdDJkMWYwZjM2MzM2VHVpOHJIUXlDUXlhc2QzRGViYnc9SEXAMPLE=" - }, - "output": { - "offeringTransactions": [ - { - "cost": { - "amount": 0, - "currencyCode": "USD" - }, - "createdOn": "1470021420", - "offeringStatus": { - "type": "RENEW", - "effectiveOn": "1472688000", - "offering": { - "type": "RECURRING", - "description": "Android Remote Access Unmetered Device Slot", - "id": "D68B3C05-1BA6-4360-BC69-12345EXAMPLE", - "platform": "ANDROID" - }, - "quantity": 0 - }, - "transactionId": "03728003-d1ea-4851-abd6-12345EXAMPLE" - }, - { - "cost": { - "amount": 250, - "currencyCode": "USD" - }, - "createdOn": "1470021420", - "offeringStatus": { - "type": "PURCHASE", - "effectiveOn": "1470021420", - "offering": { - "type": "RECURRING", - "description": "Android Remote Access Unmetered Device Slot", - "id": "D68B3C05-1BA6-4360-BC69-12345EXAMPLE", - "platform": "ANDROID" - }, - "quantity": 1 - }, - "transactionId": "56820b6e-06bd-473a-8ff8-12345EXAMPLE" - }, - { - "cost": { - "amount": 175, - "currencyCode": "USD" - }, - "createdOn": "1465538520", - "offeringStatus": { - "type": "PURCHASE", - "effectiveOn": "1465538520", - "offering": { - "type": "RECURRING", - "description": "Android Unmetered Device Slot", - "id": "8980F81C-00D7-469D-8EC6-12345EXAMPLE", - "platform": "ANDROID" - }, - "quantity": 1 - }, - "transactionId": "953ae2c6-d760-4a04-9597-12345EXAMPLE" - }, - { - "cost": { - "amount": 8.07, - "currencyCode": "USD" - }, - "createdOn": "1459344300", - "offeringStatus": { - "type": "PURCHASE", - "effectiveOn": "1459344300", - "offering": { - "type": "RECURRING", - "description": "iOS Unmetered Device Slot", - "id": "A53D4D73-A6F6-4B82-A0B0-12345EXAMPLE", - "platform": "IOS" - }, - "quantity": 1 - }, - "transactionId": "2baf9021-ae3e-47f5-ab52-12345EXAMPLE" - } - ] - }, - "comments": { - "input": { - "nextToken": "A dynamically generated value, used for paginating results." - }, - "output": { - } - }, - "description": "The following example returns information about Device Farm offering transactions.", - "id": "to-get-information-about-device-offering-transactions-1472561712315", - "title": "To get information about device offering transactions" - } - ], - "ListOfferings": [ - { - "input": { - "nextToken": "RW5DdDJkMWYwZjM2MzM2VHVpOHJIUXlDUXlhc2QzRGViYnc9SEXAMPLE=" - }, - "output": { - "offerings": [ - { - "type": "RECURRING", - "description": "iOS Unmetered Device Slot", - "id": "A53D4D73-A6F6-4B82-A0B0-12345EXAMPLE", - "platform": "IOS", - "recurringCharges": [ - { - "cost": { - "amount": 250, - "currencyCode": "USD" - }, - "frequency": "MONTHLY" - } - ] - }, - { - "type": "RECURRING", - "description": "Android Unmetered Device Slot", - "id": "8980F81C-00D7-469D-8EC6-12345EXAMPLE", - "platform": "ANDROID", - "recurringCharges": [ - { - "cost": { - "amount": 250, - "currencyCode": "USD" - }, - "frequency": "MONTHLY" - } - ] - }, - { - "type": "RECURRING", - "description": "Android Remote Access Unmetered Device Slot", - "id": "D68B3C05-1BA6-4360-BC69-12345EXAMPLE", - "platform": "ANDROID", - "recurringCharges": [ - { - "cost": { - "amount": 250, - "currencyCode": "USD" - }, - "frequency": "MONTHLY" - } - ] - }, - { - "type": "RECURRING", - "description": "iOS Remote Access Unmetered Device Slot", - "id": "552B4DAD-A6C9-45C4-94FB-12345EXAMPLE", - "platform": "IOS", - "recurringCharges": [ - { - "cost": { - "amount": 250, - "currencyCode": "USD" - }, - "frequency": "MONTHLY" - } - ] - } - ] - }, - "comments": { - "input": { - "nextToken": "A dynamically generated value, used for paginating results." - }, - "output": { - } - }, - "description": "The following example returns information about available device offerings.", - "id": "to-get-information-about-device-offerings-1472562810999", - "title": "To get information about device offerings" - } - ], - "ListProjects": [ - { - "input": { - "arn": "arn:aws:devicefarm:us-west-2:123456789101:project:7ad300ed-8183-41a7-bf94-12345EXAMPLE", - "nextToken": "RW5DdDJkMWYwZjM2MzM2VHVpOHJIUXlDUXlhc2QzRGViYnc9SEXAMPLE" - }, - "output": { - "projects": [ - { - "name": "My Test Project", - "arn": "arn:aws:devicefarm:us-west-2:123456789101:project:7ad300ed-8183-41a7-bf94-12345EXAMPLE", - "created": "1453163262.105" - }, - { - "name": "Hello World", - "arn": "arn:aws:devicefarm:us-west-2:123456789101:project:d6b087d9-56db-4e44-b9ec-12345EXAMPLE", - "created": "1470350112.439" - } - ] - }, - "comments": { - "input": { - "nextToken": "A dynamically generated value, used for paginating results." - }, - "output": { - } - }, - "description": "The following example returns information about the specified project in Device Farm.", - "id": "to-get-information-about-a-device-farm-project-1472564014388", - "title": "To get information about a Device Farm project" - } - ], - "ListRemoteAccessSessions": [ - { - "input": { - "arn": "arn:aws:devicefarm:us-west-2:123456789101:session:EXAMPLE-GUID-123-456", - "nextToken": "RW5DdDJkMWYwZjM2MzM2VHVpOHJIUXlDUXlhc2QzRGViYnc9SEXAMPLE=" - }, - "output": { - "remoteAccessSessions": [ - - ] - }, - "comments": { - "input": { - "arn": "You can get the Amazon Resource Name (ARN) of the session by using the list-sessions CLI command.", - "nextToken": "A dynamically generated value, used for paginating results." - }, - "output": { - } - }, - "description": "The following example returns information about a specific Device Farm remote access session.", - "id": "to-get-information-about-a-remote-access-session-1472581144803", - "title": "To get information about a remote access session" - } - ], - "ListRuns": [ - { - "input": { - "arn": "arn:aws:devicefarm:us-west-2:123456789101:run:5e01a8c7-c861-4c0a-b1d5-5ec6e6c6dd23/0fcac17b-6122-44d7-ae5a-12345EXAMPLE", - "nextToken": "RW5DdDJkMWYwZjM2MzM2VHVpOHJIUXlDUXlhc2QzRGViYnc9SEXAMPLE" - }, - "output": { - "runs": [ - { - "name": "My Test Run", - "type": "BUILTIN_EXPLORER", - "arn": "arn:aws:devicefarm:us-west-2:123456789101:run:5e01a8c7-c861-4c0a-b1d5-5ec6e6c6dd23/0fcac17b-6122-44d7-ae5a-12345EXAMPLE", - "billingMethod": "METERED", - "completedJobs": 0, - "counters": { - "errored": 0, - "failed": 0, - "passed": 0, - "skipped": 0, - "stopped": 0, - "total": 0, - "warned": 0 - }, - "created": "1472667509.852", - "deviceMinutes": { - "metered": 0.0, - "total": 0.0, - "unmetered": 0.0 - }, - "platform": "ANDROID", - "result": "PENDING", - "status": "RUNNING", - "totalJobs": 3 - } - ] - }, - "comments": { - "input": { - "arn": "You can get the Amazon Resource Name (ARN) of the run by using the list-runs CLI command.", - "nextToken": "A dynamically generated value, used for paginating results." - }, - "output": { - } - }, - "description": "The following example returns information about a specific test run.", - "id": "to-get-information-about-test-runs-1472582711069", - "title": "To get information about a test run" - } - ], - "ListSamples": [ - { - "input": { - "arn": "arn:aws:devicefarm:us-west-2:123456789101:project:EXAMPLE-GUID-123-456", - "nextToken": "RW5DdDJkMWYwZjM2MzM2VHVpOHJIUXlDUXlhc2QzRGViYnc9SEXAMPLE" - }, - "output": { - "samples": [ - - ] - }, - "comments": { - "input": { - "arn": "You can get the Amazon Resource Name (ARN) of the project by using the list-projects CLI command.", - "nextToken": "A dynamically generated value, used for paginating results." - }, - "output": { - } - }, - "description": "The following example returns information about samples, given a specific Device Farm project.", - "id": "to-get-information-about-samples-1472582847534", - "title": "To get information about samples" - } - ], - "ListSuites": [ - { - "input": { - "arn": "arn:aws:devicefarm:us-west-2:123456789101:project:EXAMPLE-GUID-123-456", - "nextToken": "RW5DdDJkMWYwZjM2MzM2VHVpOHJIUXlDUXlhc2QzRGViYnc9SEXAMPLE" - }, - "output": { - "suites": [ - - ] - }, - "comments": { - "input": { - "arn": "You can get the Amazon Resource Name (ARN) of the project by using the list-projects CLI command.", - "nextToken": "A dynamically generated value, used for paginating results." - }, - "output": { - } - }, - "description": "The following example returns information about suites, given a specific Device Farm project.", - "id": "to-get-information-about-suites-1472583038218", - "title": "To get information about suites" - } - ], - "ListTests": [ - { - "input": { - "arn": "arn:aws:devicefarm:us-west-2:123456789101:project:EXAMPLE-GUID-123-456", - "nextToken": "RW5DdDJkMWYwZjM2MzM2VHVpOHJIUXlDUXlhc2QzRGViYnc9SEXAMPLE" - }, - "output": { - "tests": [ - - ] - }, - "comments": { - "input": { - "arn": "You can get the Amazon Resource Name (ARN) of the project by using the list-projects CLI command.", - "nextToken": "A dynamically generated value, used for paginating results." - }, - "output": { - } - }, - "description": "The following example returns information about tests, given a specific Device Farm project.", - "id": "to-get-information-about-tests-1472617372212", - "title": "To get information about tests" - } - ], - "ListUniqueProblems": [ - { - "input": { - "arn": "arn:aws:devicefarm:us-west-2:123456789101:project:EXAMPLE-GUID-123-456", - "nextToken": "RW5DdDJkMWYwZjM2MzM2VHVpOHJIUXlDUXlhc2QzRGViYnc9SEXAMPLE" - }, - "output": { - "uniqueProblems": { - } - }, - "comments": { - "input": { - "arn": "You can get the Amazon Resource Name (ARN) of the project by using the list-projects CLI command.", - "nextToken": "A dynamically generated value, used for paginating results." - }, - "output": { - } - }, - "description": "The following example returns information about unique problems, given a specific Device Farm project.", - "id": "to-get-information-about-unique-problems-1472617781008", - "title": "To get information about unique problems" - } - ], - "ListUploads": [ - { - "input": { - "arn": "arn:aws:devicefarm:us-west-2:123456789101:project:EXAMPLE-GUID-123-456", - "nextToken": "RW5DdDJkMWYwZjM2MzM2VHVpOHJIUXlDUXlhc2QzRGViYnc9SEXAMPLE" - }, - "output": { - "uploads": [ - - ] - }, - "comments": { - "input": { - "arn": "You can get the Amazon Resource Name (ARN) of the project by using the list-projects CLI command.", - "nextToken": "A dynamically generated value, used for paginating results." - }, - "output": { - } - }, - "description": "The following example returns information about uploads, given a specific Device Farm project.", - "id": "to-get-information-about-uploads-1472617943090", - "title": "To get information about uploads" - } - ], - "PurchaseOffering": [ - { - "input": { - "offeringId": "D68B3C05-1BA6-4360-BC69-12345EXAMPLE", - "quantity": 1 - }, - "output": { - "offeringTransaction": { - "cost": { - "amount": 8.07, - "currencyCode": "USD" - }, - "createdOn": "1472648340", - "offeringStatus": { - "type": "PURCHASE", - "effectiveOn": "1472648340", - "offering": { - "type": "RECURRING", - "description": "Android Remote Access Unmetered Device Slot", - "id": "D68B3C05-1BA6-4360-BC69-12345EXAMPLE", - "platform": "ANDROID" - }, - "quantity": 1 - }, - "transactionId": "d30614ed-1b03-404c-9893-12345EXAMPLE" - } - }, - "comments": { - "input": { - "offeringId": "You can get the offering ID by using the list-offerings CLI command." - }, - "output": { - } - }, - "description": "The following example purchases a specific device slot offering.", - "id": "to-purchase-a-device-slot-offering-1472648146343", - "title": "To purchase a device slot offering" - } - ], - "RenewOffering": [ - { - "input": { - "offeringId": "D68B3C05-1BA6-4360-BC69-12345EXAMPLE", - "quantity": 1 - }, - "output": { - "offeringTransaction": { - "cost": { - "amount": 250, - "currencyCode": "USD" - }, - "createdOn": "1472648880", - "offeringStatus": { - "type": "RENEW", - "effectiveOn": "1472688000", - "offering": { - "type": "RECURRING", - "description": "Android Remote Access Unmetered Device Slot", - "id": "D68B3C05-1BA6-4360-BC69-12345EXAMPLE", - "platform": "ANDROID" - }, - "quantity": 1 - }, - "transactionId": "e90f1405-8c35-4561-be43-12345EXAMPLE" - } - }, - "comments": { - "input": { - "offeringId": "You can get the offering ID by using the list-offerings CLI command." - }, - "output": { - } - }, - "description": "The following example renews a specific device slot offering.", - "id": "to-renew-a-device-slot-offering-1472648899785", - "title": "To renew a device slot offering" - } - ], - "ScheduleRun": [ - { - "input": { - "name": "MyRun", - "devicePoolArn": "arn:aws:devicefarm:us-west-2:123456789101:pool:EXAMPLE-GUID-123-456", - "projectArn": "arn:aws:devicefarm:us-west-2:123456789101:project:EXAMPLE-GUID-123-456", - "test": { - "type": "APPIUM_JAVA_JUNIT", - "testPackageArn": "arn:aws:devicefarm:us-west-2:123456789101:test:EXAMPLE-GUID-123-456" - } - }, - "output": { - "run": { - } - }, - "comments": { - "input": { - "devicePoolArn": "You can get the Amazon Resource Name (ARN) of the device pool by using the list-pools CLI command.", - "projectArn": "You can get the Amazon Resource Name (ARN) of the project by using the list-projects CLI command.", - "testPackageArn": "You can get the Amazon Resource Name (ARN) of the test package by using the list-tests CLI command." - }, - "output": { - } - }, - "description": "The following example schedules a test run named MyRun.", - "id": "to-schedule-a-test-run-1472652429636", - "title": "To schedule a test run" - } - ], - "StopRun": [ - { - "input": { - "arn": "arn:aws:devicefarm:us-west-2:123456789101:run:EXAMPLE-GUID-123-456" - }, - "output": { - "run": { - } - }, - "comments": { - "input": { - "arn": "You can get the Amazon Resource Name (ARN) of the test run by using the list-runs CLI command." - }, - "output": { - } - }, - "description": "The following example stops a specific test run.", - "id": "to-stop-a-test-run-1472653770340", - "title": "To stop a test run" - } - ], - "UpdateDevicePool": [ - { - "input": { - "name": "NewName", - "arn": "arn:aws:devicefarm:us-west-2::devicepool:082d10e5-d7d7-48a5-ba5c-12345EXAMPLE", - "description": "NewDescription", - "rules": [ - { - "value": "True", - "attribute": "REMOTE_ACCESS_ENABLED", - "operator": "EQUALS" - } - ] - }, - "output": { - "devicePool": { - } - }, - "comments": { - "input": { - "arn": "You can get the Amazon Resource Name (ARN) of the device pool by using the list-pools CLI command." - }, - "output": { - "devicePool": "Note: you cannot update curated device pools." - } - }, - "description": "The following example updates the specified device pool with a new name and description. It also enables remote access of devices in the device pool.", - "id": "to-update-a-device-pool-1472653887677", - "title": "To update a device pool" - } - ], - "UpdateProject": [ - { - "input": { - "name": "NewName", - "arn": "arn:aws:devicefarm:us-west-2:123456789101:project:8f75187d-101e-4625-accc-12345EXAMPLE" - }, - "output": { - "project": { - "name": "NewName", - "arn": "arn:aws:devicefarm:us-west-2:123456789101:project:8f75187d-101e-4625-accc-12345EXAMPLE", - "created": "1448400709.927" - } - }, - "comments": { - "input": { - "arn": "You can get the Amazon Resource Name (ARN) of the project by using the list-projects CLI command." - }, - "output": { - } - }, - "description": "The following example updates the specified project with a new name.", - "id": "to-update-a-device-pool-1472653887677", - "title": "To update a device pool" - } - ] - } -} diff --git a/workshops/monte-carlo-on-ec2-spot-fleet/src/web/node_modules/aws-sdk/apis/devicefarm-2015-06-23.min.json b/workshops/monte-carlo-on-ec2-spot-fleet/src/web/node_modules/aws-sdk/apis/devicefarm-2015-06-23.min.json deleted file mode 100644 index 62ca7a64..00000000 --- a/workshops/monte-carlo-on-ec2-spot-fleet/src/web/node_modules/aws-sdk/apis/devicefarm-2015-06-23.min.json +++ /dev/null @@ -1,1711 +0,0 @@ -{ - "version": "2.0", - "metadata": { - "apiVersion": "2015-06-23", - "endpointPrefix": "devicefarm", - "jsonVersion": "1.1", - "protocol": "json", - "serviceFullName": "AWS Device Farm", - "signatureVersion": "v4", - "targetPrefix": "DeviceFarm_20150623", - "uid": "devicefarm-2015-06-23" - }, - "operations": { - "CreateDevicePool": { - "input": { - "type": "structure", - "required": [ - "projectArn", - "name", - "rules" - ], - "members": { - "projectArn": {}, - "name": {}, - "description": {}, - "rules": { - "shape": "S5" - } - } - }, - "output": { - "type": "structure", - "members": { - "devicePool": { - "shape": "Sb" - } - } - } - }, - "CreateNetworkProfile": { - "input": { - "type": "structure", - "required": [ - "projectArn", - "name" - ], - "members": { - "projectArn": {}, - "name": {}, - "description": {}, - "type": {}, - "uplinkBandwidthBits": { - "type": "long" - }, - "downlinkBandwidthBits": { - "type": "long" - }, - "uplinkDelayMs": { - "type": "long" - }, - "downlinkDelayMs": { - "type": "long" - }, - "uplinkJitterMs": { - "type": "long" - }, - "downlinkJitterMs": { - "type": "long" - }, - "uplinkLossPercent": { - "type": "integer" - }, - "downlinkLossPercent": { - "type": "integer" - } - } - }, - "output": { - "type": "structure", - "members": { - "networkProfile": { - "shape": "Si" - } - } - } - }, - "CreateProject": { - "input": { - "type": "structure", - "required": [ - "name" - ], - "members": { - "name": {}, - "defaultJobTimeoutMinutes": { - "type": "integer" - } - } - }, - "output": { - "type": "structure", - "members": { - "project": { - "shape": "Sm" - } - } - } - }, - "CreateRemoteAccessSession": { - "input": { - "type": "structure", - "required": [ - "projectArn", - "deviceArn" - ], - "members": { - "projectArn": {}, - "deviceArn": {}, - "sshPublicKey": {}, - "remoteDebugEnabled": { - "type": "boolean" - }, - "name": {}, - "clientId": {}, - "configuration": { - "type": "structure", - "members": { - "billingMethod": {} - } - } - } - }, - "output": { - "type": "structure", - "members": { - "remoteAccessSession": { - "shape": "Sv" - } - } - } - }, - "CreateUpload": { - "input": { - "type": "structure", - "required": [ - "projectArn", - "name", - "type" - ], - "members": { - "projectArn": {}, - "name": {}, - "type": {}, - "contentType": {} - } - }, - "output": { - "type": "structure", - "members": { - "upload": { - "shape": "S1b" - } - } - } - }, - "DeleteDevicePool": { - "input": { - "type": "structure", - "required": [ - "arn" - ], - "members": { - "arn": {} - } - }, - "output": { - "type": "structure", - "members": {} - } - }, - "DeleteNetworkProfile": { - "input": { - "type": "structure", - "required": [ - "arn" - ], - "members": { - "arn": {} - } - }, - "output": { - "type": "structure", - "members": {} - } - }, - "DeleteProject": { - "input": { - "type": "structure", - "required": [ - "arn" - ], - "members": { - "arn": {} - } - }, - "output": { - "type": "structure", - "members": {} - } - }, - "DeleteRemoteAccessSession": { - "input": { - "type": "structure", - "required": [ - "arn" - ], - "members": { - "arn": {} - } - }, - "output": { - "type": "structure", - "members": {} - } - }, - "DeleteRun": { - "input": { - "type": "structure", - "required": [ - "arn" - ], - "members": { - "arn": {} - } - }, - "output": { - "type": "structure", - "members": {} - } - }, - "DeleteUpload": { - "input": { - "type": "structure", - "required": [ - "arn" - ], - "members": { - "arn": {} - } - }, - "output": { - "type": "structure", - "members": {} - } - }, - "GetAccountSettings": { - "input": { - "type": "structure", - "members": {} - }, - "output": { - "type": "structure", - "members": { - "accountSettings": { - "type": "structure", - "members": { - "awsAccountNumber": {}, - "unmeteredDevices": { - "shape": "S1v" - }, - "unmeteredRemoteAccessDevices": { - "shape": "S1v" - }, - "maxJobTimeoutMinutes": { - "type": "integer" - }, - "trialMinutes": { - "type": "structure", - "members": { - "total": { - "type": "double" - }, - "remaining": { - "type": "double" - } - } - }, - "maxSlots": { - "type": "map", - "key": {}, - "value": { - "type": "integer" - } - }, - "defaultJobTimeoutMinutes": { - "type": "integer" - } - } - } - } - } - }, - "GetDevice": { - "input": { - "type": "structure", - "required": [ - "arn" - ], - "members": { - "arn": {} - } - }, - "output": { - "type": "structure", - "members": { - "device": { - "shape": "Sy" - } - } - } - }, - "GetDevicePool": { - "input": { - "type": "structure", - "required": [ - "arn" - ], - "members": { - "arn": {} - } - }, - "output": { - "type": "structure", - "members": { - "devicePool": { - "shape": "Sb" - } - } - } - }, - "GetDevicePoolCompatibility": { - "input": { - "type": "structure", - "required": [ - "devicePoolArn" - ], - "members": { - "devicePoolArn": {}, - "appArn": {}, - "testType": {}, - "test": { - "shape": "S24" - } - } - }, - "output": { - "type": "structure", - "members": { - "compatibleDevices": { - "shape": "S28" - }, - "incompatibleDevices": { - "shape": "S28" - } - } - } - }, - "GetJob": { - "input": { - "type": "structure", - "required": [ - "arn" - ], - "members": { - "arn": {} - } - }, - "output": { - "type": "structure", - "members": { - "job": { - "shape": "S2e" - } - } - } - }, - "GetNetworkProfile": { - "input": { - "type": "structure", - "required": [ - "arn" - ], - "members": { - "arn": {} - } - }, - "output": { - "type": "structure", - "members": { - "networkProfile": { - "shape": "Si" - } - } - } - }, - "GetOfferingStatus": { - "input": { - "type": "structure", - "members": { - "nextToken": {} - } - }, - "output": { - "type": "structure", - "members": { - "current": { - "shape": "S2l" - }, - "nextPeriod": { - "shape": "S2l" - }, - "nextToken": {} - } - } - }, - "GetProject": { - "input": { - "type": "structure", - "required": [ - "arn" - ], - "members": { - "arn": {} - } - }, - "output": { - "type": "structure", - "members": { - "project": { - "shape": "Sm" - } - } - } - }, - "GetRemoteAccessSession": { - "input": { - "type": "structure", - "required": [ - "arn" - ], - "members": { - "arn": {} - } - }, - "output": { - "type": "structure", - "members": { - "remoteAccessSession": { - "shape": "Sv" - } - } - } - }, - "GetRun": { - "input": { - "type": "structure", - "required": [ - "arn" - ], - "members": { - "arn": {} - } - }, - "output": { - "type": "structure", - "members": { - "run": { - "shape": "S32" - } - } - } - }, - "GetSuite": { - "input": { - "type": "structure", - "required": [ - "arn" - ], - "members": { - "arn": {} - } - }, - "output": { - "type": "structure", - "members": { - "suite": { - "shape": "S3a" - } - } - } - }, - "GetTest": { - "input": { - "type": "structure", - "required": [ - "arn" - ], - "members": { - "arn": {} - } - }, - "output": { - "type": "structure", - "members": { - "test": { - "shape": "S3d" - } - } - } - }, - "GetUpload": { - "input": { - "type": "structure", - "required": [ - "arn" - ], - "members": { - "arn": {} - } - }, - "output": { - "type": "structure", - "members": { - "upload": { - "shape": "S1b" - } - } - } - }, - "InstallToRemoteAccessSession": { - "input": { - "type": "structure", - "required": [ - "remoteAccessSessionArn", - "appArn" - ], - "members": { - "remoteAccessSessionArn": {}, - "appArn": {} - } - }, - "output": { - "type": "structure", - "members": { - "appUpload": { - "shape": "S1b" - } - } - } - }, - "ListArtifacts": { - "input": { - "type": "structure", - "required": [ - "arn", - "type" - ], - "members": { - "arn": {}, - "type": {}, - "nextToken": {} - } - }, - "output": { - "type": "structure", - "members": { - "artifacts": { - "type": "list", - "member": { - "type": "structure", - "members": { - "arn": {}, - "name": {}, - "type": {}, - "extension": {}, - "url": {} - } - } - }, - "nextToken": {} - } - } - }, - "ListDevicePools": { - "input": { - "type": "structure", - "required": [ - "arn" - ], - "members": { - "arn": {}, - "type": {}, - "nextToken": {} - } - }, - "output": { - "type": "structure", - "members": { - "devicePools": { - "type": "list", - "member": { - "shape": "Sb" - } - }, - "nextToken": {} - } - } - }, - "ListDevices": { - "input": { - "type": "structure", - "members": { - "arn": {}, - "nextToken": {} - } - }, - "output": { - "type": "structure", - "members": { - "devices": { - "type": "list", - "member": { - "shape": "Sy" - } - }, - "nextToken": {} - } - } - }, - "ListJobs": { - "input": { - "type": "structure", - "required": [ - "arn" - ], - "members": { - "arn": {}, - "nextToken": {} - } - }, - "output": { - "type": "structure", - "members": { - "jobs": { - "type": "list", - "member": { - "shape": "S2e" - } - }, - "nextToken": {} - } - } - }, - "ListNetworkProfiles": { - "input": { - "type": "structure", - "required": [ - "arn" - ], - "members": { - "arn": {}, - "type": {}, - "nextToken": {} - } - }, - "output": { - "type": "structure", - "members": { - "networkProfiles": { - "type": "list", - "member": { - "shape": "Si" - } - }, - "nextToken": {} - } - } - }, - "ListOfferingPromotions": { - "input": { - "type": "structure", - "members": { - "nextToken": {} - } - }, - "output": { - "type": "structure", - "members": { - "offeringPromotions": { - "type": "list", - "member": { - "type": "structure", - "members": { - "id": {}, - "description": {} - } - } - }, - "nextToken": {} - } - } - }, - "ListOfferingTransactions": { - "input": { - "type": "structure", - "members": { - "nextToken": {} - } - }, - "output": { - "type": "structure", - "members": { - "offeringTransactions": { - "type": "list", - "member": { - "shape": "S48" - } - }, - "nextToken": {} - } - } - }, - "ListOfferings": { - "input": { - "type": "structure", - "members": { - "nextToken": {} - } - }, - "output": { - "type": "structure", - "members": { - "offerings": { - "type": "list", - "member": { - "shape": "S2p" - } - }, - "nextToken": {} - } - } - }, - "ListProjects": { - "input": { - "type": "structure", - "members": { - "arn": {}, - "nextToken": {} - } - }, - "output": { - "type": "structure", - "members": { - "projects": { - "type": "list", - "member": { - "shape": "Sm" - } - }, - "nextToken": {} - } - } - }, - "ListRemoteAccessSessions": { - "input": { - "type": "structure", - "required": [ - "arn" - ], - "members": { - "arn": {}, - "nextToken": {} - } - }, - "output": { - "type": "structure", - "members": { - "remoteAccessSessions": { - "type": "list", - "member": { - "shape": "Sv" - } - }, - "nextToken": {} - } - } - }, - "ListRuns": { - "input": { - "type": "structure", - "required": [ - "arn" - ], - "members": { - "arn": {}, - "nextToken": {} - } - }, - "output": { - "type": "structure", - "members": { - "runs": { - "type": "list", - "member": { - "shape": "S32" - } - }, - "nextToken": {} - } - } - }, - "ListSamples": { - "input": { - "type": "structure", - "required": [ - "arn" - ], - "members": { - "arn": {}, - "nextToken": {} - } - }, - "output": { - "type": "structure", - "members": { - "samples": { - "type": "list", - "member": { - "type": "structure", - "members": { - "arn": {}, - "type": {}, - "url": {} - } - } - }, - "nextToken": {} - } - } - }, - "ListSuites": { - "input": { - "type": "structure", - "required": [ - "arn" - ], - "members": { - "arn": {}, - "nextToken": {} - } - }, - "output": { - "type": "structure", - "members": { - "suites": { - "type": "list", - "member": { - "shape": "S3a" - } - }, - "nextToken": {} - } - } - }, - "ListTests": { - "input": { - "type": "structure", - "required": [ - "arn" - ], - "members": { - "arn": {}, - "nextToken": {} - } - }, - "output": { - "type": "structure", - "members": { - "tests": { - "type": "list", - "member": { - "shape": "S3d" - } - }, - "nextToken": {} - } - } - }, - "ListUniqueProblems": { - "input": { - "type": "structure", - "required": [ - "arn" - ], - "members": { - "arn": {}, - "nextToken": {} - } - }, - "output": { - "type": "structure", - "members": { - "uniqueProblems": { - "type": "map", - "key": {}, - "value": { - "type": "list", - "member": { - "type": "structure", - "members": { - "message": {}, - "problems": { - "type": "list", - "member": { - "type": "structure", - "members": { - "run": { - "shape": "S54" - }, - "job": { - "shape": "S54" - }, - "suite": { - "shape": "S54" - }, - "test": { - "shape": "S54" - }, - "device": { - "shape": "Sy" - }, - "result": {}, - "message": {} - } - } - } - } - } - } - }, - "nextToken": {} - } - } - }, - "ListUploads": { - "input": { - "type": "structure", - "required": [ - "arn" - ], - "members": { - "arn": {}, - "nextToken": {} - } - }, - "output": { - "type": "structure", - "members": { - "uploads": { - "type": "list", - "member": { - "shape": "S1b" - } - }, - "nextToken": {} - } - } - }, - "PurchaseOffering": { - "input": { - "type": "structure", - "members": { - "offeringId": {}, - "quantity": { - "type": "integer" - }, - "offeringPromotionId": {} - } - }, - "output": { - "type": "structure", - "members": { - "offeringTransaction": { - "shape": "S48" - } - } - } - }, - "RenewOffering": { - "input": { - "type": "structure", - "members": { - "offeringId": {}, - "quantity": { - "type": "integer" - } - } - }, - "output": { - "type": "structure", - "members": { - "offeringTransaction": { - "shape": "S48" - } - } - } - }, - "ScheduleRun": { - "input": { - "type": "structure", - "required": [ - "projectArn", - "devicePoolArn", - "test" - ], - "members": { - "projectArn": {}, - "appArn": {}, - "devicePoolArn": {}, - "name": {}, - "test": { - "shape": "S24" - }, - "configuration": { - "type": "structure", - "members": { - "extraDataPackageArn": {}, - "networkProfileArn": {}, - "locale": {}, - "location": { - "type": "structure", - "required": [ - "latitude", - "longitude" - ], - "members": { - "latitude": { - "type": "double" - }, - "longitude": { - "type": "double" - } - } - }, - "customerArtifactPaths": { - "shape": "S34" - }, - "radios": { - "type": "structure", - "members": { - "wifi": { - "type": "boolean" - }, - "bluetooth": { - "type": "boolean" - }, - "nfc": { - "type": "boolean" - }, - "gps": { - "type": "boolean" - } - } - }, - "auxiliaryApps": { - "type": "list", - "member": {} - }, - "billingMethod": {} - } - }, - "executionConfiguration": { - "type": "structure", - "members": { - "jobTimeoutMinutes": { - "type": "integer" - }, - "accountsCleanup": { - "type": "boolean" - }, - "appPackagesCleanup": { - "type": "boolean" - } - } - } - } - }, - "output": { - "type": "structure", - "members": { - "run": { - "shape": "S32" - } - } - } - }, - "StopRemoteAccessSession": { - "input": { - "type": "structure", - "required": [ - "arn" - ], - "members": { - "arn": {} - } - }, - "output": { - "type": "structure", - "members": { - "remoteAccessSession": { - "shape": "Sv" - } - } - } - }, - "StopRun": { - "input": { - "type": "structure", - "required": [ - "arn" - ], - "members": { - "arn": {} - } - }, - "output": { - "type": "structure", - "members": { - "run": { - "shape": "S32" - } - } - } - }, - "UpdateDevicePool": { - "input": { - "type": "structure", - "required": [ - "arn" - ], - "members": { - "arn": {}, - "name": {}, - "description": {}, - "rules": { - "shape": "S5" - } - } - }, - "output": { - "type": "structure", - "members": { - "devicePool": { - "shape": "Sb" - } - } - } - }, - "UpdateNetworkProfile": { - "input": { - "type": "structure", - "required": [ - "arn" - ], - "members": { - "arn": {}, - "name": {}, - "description": {}, - "type": {}, - "uplinkBandwidthBits": { - "type": "long" - }, - "downlinkBandwidthBits": { - "type": "long" - }, - "uplinkDelayMs": { - "type": "long" - }, - "downlinkDelayMs": { - "type": "long" - }, - "uplinkJitterMs": { - "type": "long" - }, - "downlinkJitterMs": { - "type": "long" - }, - "uplinkLossPercent": { - "type": "integer" - }, - "downlinkLossPercent": { - "type": "integer" - } - } - }, - "output": { - "type": "structure", - "members": { - "networkProfile": { - "shape": "Si" - } - } - } - }, - "UpdateProject": { - "input": { - "type": "structure", - "required": [ - "arn" - ], - "members": { - "arn": {}, - "name": {}, - "defaultJobTimeoutMinutes": { - "type": "integer" - } - } - }, - "output": { - "type": "structure", - "members": { - "project": { - "shape": "Sm" - } - } - } - } - }, - "shapes": { - "S5": { - "type": "list", - "member": { - "type": "structure", - "members": { - "attribute": {}, - "operator": {}, - "value": {} - } - } - }, - "Sb": { - "type": "structure", - "members": { - "arn": {}, - "name": {}, - "description": {}, - "type": {}, - "rules": { - "shape": "S5" - } - } - }, - "Si": { - "type": "structure", - "members": { - "arn": {}, - "name": {}, - "description": {}, - "type": {}, - "uplinkBandwidthBits": { - "type": "long" - }, - "downlinkBandwidthBits": { - "type": "long" - }, - "uplinkDelayMs": { - "type": "long" - }, - "downlinkDelayMs": { - "type": "long" - }, - "uplinkJitterMs": { - "type": "long" - }, - "downlinkJitterMs": { - "type": "long" - }, - "uplinkLossPercent": { - "type": "integer" - }, - "downlinkLossPercent": { - "type": "integer" - } - } - }, - "Sm": { - "type": "structure", - "members": { - "arn": {}, - "name": {}, - "defaultJobTimeoutMinutes": { - "type": "integer" - }, - "created": { - "type": "timestamp" - } - } - }, - "Sv": { - "type": "structure", - "members": { - "arn": {}, - "name": {}, - "created": { - "type": "timestamp" - }, - "status": {}, - "result": {}, - "message": {}, - "started": { - "type": "timestamp" - }, - "stopped": { - "type": "timestamp" - }, - "device": { - "shape": "Sy" - }, - "remoteDebugEnabled": { - "type": "boolean" - }, - "hostAddress": {}, - "clientId": {}, - "billingMethod": {}, - "deviceMinutes": { - "shape": "S16" - }, - "endpoint": {}, - "deviceUdid": {} - } - }, - "Sy": { - "type": "structure", - "members": { - "arn": {}, - "name": {}, - "manufacturer": {}, - "model": {}, - "formFactor": {}, - "platform": {}, - "os": {}, - "cpu": { - "type": "structure", - "members": { - "frequency": {}, - "architecture": {}, - "clock": { - "type": "double" - } - } - }, - "resolution": { - "type": "structure", - "members": { - "width": { - "type": "integer" - }, - "height": { - "type": "integer" - } - } - }, - "heapSize": { - "type": "long" - }, - "memory": { - "type": "long" - }, - "image": {}, - "carrier": {}, - "radio": {}, - "remoteAccessEnabled": { - "type": "boolean" - }, - "remoteDebugEnabled": { - "type": "boolean" - }, - "fleetType": {}, - "fleetName": {} - } - }, - "S16": { - "type": "structure", - "members": { - "total": { - "type": "double" - }, - "metered": { - "type": "double" - }, - "unmetered": { - "type": "double" - } - } - }, - "S1b": { - "type": "structure", - "members": { - "arn": {}, - "name": {}, - "created": { - "type": "timestamp" - }, - "type": {}, - "status": {}, - "url": {}, - "metadata": {}, - "contentType": {}, - "message": {} - } - }, - "S1v": { - "type": "map", - "key": {}, - "value": { - "type": "integer" - } - }, - "S24": { - "type": "structure", - "required": [ - "type" - ], - "members": { - "type": {}, - "testPackageArn": {}, - "filter": {}, - "parameters": { - "type": "map", - "key": {}, - "value": {} - } - } - }, - "S28": { - "type": "list", - "member": { - "type": "structure", - "members": { - "device": { - "shape": "Sy" - }, - "compatible": { - "type": "boolean" - }, - "incompatibilityMessages": { - "type": "list", - "member": { - "type": "structure", - "members": { - "message": {}, - "type": {} - } - } - } - } - } - }, - "S2e": { - "type": "structure", - "members": { - "arn": {}, - "name": {}, - "type": {}, - "created": { - "type": "timestamp" - }, - "status": {}, - "result": {}, - "started": { - "type": "timestamp" - }, - "stopped": { - "type": "timestamp" - }, - "counters": { - "shape": "S2f" - }, - "message": {}, - "device": { - "shape": "Sy" - }, - "deviceMinutes": { - "shape": "S16" - } - } - }, - "S2f": { - "type": "structure", - "members": { - "total": { - "type": "integer" - }, - "passed": { - "type": "integer" - }, - "failed": { - "type": "integer" - }, - "warned": { - "type": "integer" - }, - "errored": { - "type": "integer" - }, - "stopped": { - "type": "integer" - }, - "skipped": { - "type": "integer" - } - } - }, - "S2l": { - "type": "map", - "key": {}, - "value": { - "shape": "S2n" - } - }, - "S2n": { - "type": "structure", - "members": { - "type": {}, - "offering": { - "shape": "S2p" - }, - "quantity": { - "type": "integer" - }, - "effectiveOn": { - "type": "timestamp" - } - } - }, - "S2p": { - "type": "structure", - "members": { - "id": {}, - "description": {}, - "type": {}, - "platform": {}, - "recurringCharges": { - "type": "list", - "member": { - "type": "structure", - "members": { - "cost": { - "shape": "S2t" - }, - "frequency": {} - } - } - } - } - }, - "S2t": { - "type": "structure", - "members": { - "amount": { - "type": "double" - }, - "currencyCode": {} - } - }, - "S32": { - "type": "structure", - "members": { - "arn": {}, - "name": {}, - "type": {}, - "platform": {}, - "created": { - "type": "timestamp" - }, - "status": {}, - "result": {}, - "started": { - "type": "timestamp" - }, - "stopped": { - "type": "timestamp" - }, - "counters": { - "shape": "S2f" - }, - "message": {}, - "totalJobs": { - "type": "integer" - }, - "completedJobs": { - "type": "integer" - }, - "billingMethod": {}, - "deviceMinutes": { - "shape": "S16" - }, - "networkProfile": { - "shape": "Si" - }, - "parsingResultUrl": {}, - "resultCode": {}, - "customerArtifactPaths": { - "shape": "S34" - } - } - }, - "S34": { - "type": "structure", - "members": { - "iosPaths": { - "type": "list", - "member": {} - }, - "androidPaths": { - "type": "list", - "member": {} - }, - "deviceHostPaths": { - "type": "list", - "member": {} - } - } - }, - "S3a": { - "type": "structure", - "members": { - "arn": {}, - "name": {}, - "type": {}, - "created": { - "type": "timestamp" - }, - "status": {}, - "result": {}, - "started": { - "type": "timestamp" - }, - "stopped": { - "type": "timestamp" - }, - "counters": { - "shape": "S2f" - }, - "message": {}, - "deviceMinutes": { - "shape": "S16" - } - } - }, - "S3d": { - "type": "structure", - "members": { - "arn": {}, - "name": {}, - "type": {}, - "created": { - "type": "timestamp" - }, - "status": {}, - "result": {}, - "started": { - "type": "timestamp" - }, - "stopped": { - "type": "timestamp" - }, - "counters": { - "shape": "S2f" - }, - "message": {}, - "deviceMinutes": { - "shape": "S16" - } - } - }, - "S48": { - "type": "structure", - "members": { - "offeringStatus": { - "shape": "S2n" - }, - "transactionId": {}, - "offeringPromotionId": {}, - "createdOn": { - "type": "timestamp" - }, - "cost": { - "shape": "S2t" - } - } - }, - "S54": { - "type": "structure", - "members": { - "arn": {}, - "name": {} - } - } - } -} \ No newline at end of file diff --git a/workshops/monte-carlo-on-ec2-spot-fleet/src/web/node_modules/aws-sdk/apis/devicefarm-2015-06-23.paginators.json b/workshops/monte-carlo-on-ec2-spot-fleet/src/web/node_modules/aws-sdk/apis/devicefarm-2015-06-23.paginators.json deleted file mode 100644 index 7f9e88c8..00000000 --- a/workshops/monte-carlo-on-ec2-spot-fleet/src/web/node_modules/aws-sdk/apis/devicefarm-2015-06-23.paginators.json +++ /dev/null @@ -1,77 +0,0 @@ -{ - "pagination": { - "GetOfferingStatus": { - "input_token": "nextToken", - "output_token": "nextToken", - "result_key": [ - "current", - "nextPeriod" - ] - }, - "ListArtifacts": { - "input_token": "nextToken", - "output_token": "nextToken", - "result_key": "artifacts" - }, - "ListDevicePools": { - "input_token": "nextToken", - "output_token": "nextToken", - "result_key": "devicePools" - }, - "ListDevices": { - "input_token": "nextToken", - "output_token": "nextToken", - "result_key": "devices" - }, - "ListJobs": { - "input_token": "nextToken", - "output_token": "nextToken", - "result_key": "jobs" - }, - "ListOfferingTransactions": { - "input_token": "nextToken", - "output_token": "nextToken", - "result_key": "offeringTransactions" - }, - "ListOfferings": { - "input_token": "nextToken", - "output_token": "nextToken", - "result_key": "offerings" - }, - "ListProjects": { - "input_token": "nextToken", - "output_token": "nextToken", - "result_key": "projects" - }, - "ListRuns": { - "input_token": "nextToken", - "output_token": "nextToken", - "result_key": "runs" - }, - "ListSamples": { - "input_token": "nextToken", - "output_token": "nextToken", - "result_key": "samples" - }, - "ListSuites": { - "input_token": "nextToken", - "output_token": "nextToken", - "result_key": "suites" - }, - "ListTests": { - "input_token": "nextToken", - "output_token": "nextToken", - "result_key": "tests" - }, - "ListUniqueProblems": { - "input_token": "nextToken", - "output_token": "nextToken", - "result_key": "uniqueProblems" - }, - "ListUploads": { - "input_token": "nextToken", - "output_token": "nextToken", - "result_key": "uploads" - } - } -} \ No newline at end of file diff --git a/workshops/monte-carlo-on-ec2-spot-fleet/src/web/node_modules/aws-sdk/apis/directconnect-2012-10-25.examples.json b/workshops/monte-carlo-on-ec2-spot-fleet/src/web/node_modules/aws-sdk/apis/directconnect-2012-10-25.examples.json deleted file mode 100644 index 0ea7e3b0..00000000 --- a/workshops/monte-carlo-on-ec2-spot-fleet/src/web/node_modules/aws-sdk/apis/directconnect-2012-10-25.examples.json +++ /dev/null @@ -1,5 +0,0 @@ -{ - "version": "1.0", - "examples": { - } -} diff --git a/workshops/monte-carlo-on-ec2-spot-fleet/src/web/node_modules/aws-sdk/apis/directconnect-2012-10-25.min.json b/workshops/monte-carlo-on-ec2-spot-fleet/src/web/node_modules/aws-sdk/apis/directconnect-2012-10-25.min.json deleted file mode 100644 index 85004ffd..00000000 --- a/workshops/monte-carlo-on-ec2-spot-fleet/src/web/node_modules/aws-sdk/apis/directconnect-2012-10-25.min.json +++ /dev/null @@ -1,941 +0,0 @@ -{ - "version": "2.0", - "metadata": { - "apiVersion": "2012-10-25", - "endpointPrefix": "directconnect", - "jsonVersion": "1.1", - "protocol": "json", - "serviceFullName": "AWS Direct Connect", - "signatureVersion": "v4", - "targetPrefix": "OvertureService", - "uid": "directconnect-2012-10-25" - }, - "operations": { - "AllocateConnectionOnInterconnect": { - "input": { - "type": "structure", - "required": [ - "bandwidth", - "connectionName", - "ownerAccount", - "interconnectId", - "vlan" - ], - "members": { - "bandwidth": {}, - "connectionName": {}, - "ownerAccount": {}, - "interconnectId": {}, - "vlan": { - "type": "integer" - } - } - }, - "output": { - "shape": "S7" - }, - "deprecated": true - }, - "AllocateHostedConnection": { - "input": { - "type": "structure", - "required": [ - "connectionId", - "ownerAccount", - "bandwidth", - "connectionName", - "vlan" - ], - "members": { - "connectionId": {}, - "ownerAccount": {}, - "bandwidth": {}, - "connectionName": {}, - "vlan": { - "type": "integer" - } - } - }, - "output": { - "shape": "S7" - } - }, - "AllocatePrivateVirtualInterface": { - "input": { - "type": "structure", - "required": [ - "connectionId", - "ownerAccount", - "newPrivateVirtualInterfaceAllocation" - ], - "members": { - "connectionId": {}, - "ownerAccount": {}, - "newPrivateVirtualInterfaceAllocation": { - "type": "structure", - "required": [ - "virtualInterfaceName", - "vlan", - "asn" - ], - "members": { - "virtualInterfaceName": {}, - "vlan": { - "type": "integer" - }, - "asn": { - "type": "integer" - }, - "authKey": {}, - "amazonAddress": {}, - "addressFamily": {}, - "customerAddress": {} - } - } - } - }, - "output": { - "shape": "Sp" - } - }, - "AllocatePublicVirtualInterface": { - "input": { - "type": "structure", - "required": [ - "connectionId", - "ownerAccount", - "newPublicVirtualInterfaceAllocation" - ], - "members": { - "connectionId": {}, - "ownerAccount": {}, - "newPublicVirtualInterfaceAllocation": { - "type": "structure", - "required": [ - "virtualInterfaceName", - "vlan", - "asn" - ], - "members": { - "virtualInterfaceName": {}, - "vlan": { - "type": "integer" - }, - "asn": { - "type": "integer" - }, - "authKey": {}, - "amazonAddress": {}, - "customerAddress": {}, - "addressFamily": {}, - "routeFilterPrefixes": { - "shape": "Sv" - } - } - } - } - }, - "output": { - "shape": "Sp" - } - }, - "AssociateConnectionWithLag": { - "input": { - "type": "structure", - "required": [ - "connectionId", - "lagId" - ], - "members": { - "connectionId": {}, - "lagId": {} - } - }, - "output": { - "shape": "S7" - } - }, - "AssociateHostedConnection": { - "input": { - "type": "structure", - "required": [ - "connectionId", - "parentConnectionId" - ], - "members": { - "connectionId": {}, - "parentConnectionId": {} - } - }, - "output": { - "shape": "S7" - } - }, - "AssociateVirtualInterface": { - "input": { - "type": "structure", - "required": [ - "virtualInterfaceId", - "connectionId" - ], - "members": { - "virtualInterfaceId": {}, - "connectionId": {} - } - }, - "output": { - "shape": "Sp" - } - }, - "ConfirmConnection": { - "input": { - "type": "structure", - "required": [ - "connectionId" - ], - "members": { - "connectionId": {} - } - }, - "output": { - "type": "structure", - "members": { - "connectionState": {} - } - } - }, - "ConfirmPrivateVirtualInterface": { - "input": { - "type": "structure", - "required": [ - "virtualInterfaceId", - "virtualGatewayId" - ], - "members": { - "virtualInterfaceId": {}, - "virtualGatewayId": {} - } - }, - "output": { - "type": "structure", - "members": { - "virtualInterfaceState": {} - } - } - }, - "ConfirmPublicVirtualInterface": { - "input": { - "type": "structure", - "required": [ - "virtualInterfaceId" - ], - "members": { - "virtualInterfaceId": {} - } - }, - "output": { - "type": "structure", - "members": { - "virtualInterfaceState": {} - } - } - }, - "CreateBGPPeer": { - "input": { - "type": "structure", - "members": { - "virtualInterfaceId": {}, - "newBGPPeer": { - "type": "structure", - "members": { - "asn": { - "type": "integer" - }, - "authKey": {}, - "addressFamily": {}, - "amazonAddress": {}, - "customerAddress": {} - } - } - } - }, - "output": { - "type": "structure", - "members": { - "virtualInterface": { - "shape": "Sp" - } - } - } - }, - "CreateConnection": { - "input": { - "type": "structure", - "required": [ - "location", - "bandwidth", - "connectionName" - ], - "members": { - "location": {}, - "bandwidth": {}, - "connectionName": {}, - "lagId": {} - } - }, - "output": { - "shape": "S7" - } - }, - "CreateInterconnect": { - "input": { - "type": "structure", - "required": [ - "interconnectName", - "bandwidth", - "location" - ], - "members": { - "interconnectName": {}, - "bandwidth": {}, - "location": {}, - "lagId": {} - } - }, - "output": { - "shape": "S1j" - } - }, - "CreateLag": { - "input": { - "type": "structure", - "required": [ - "numberOfConnections", - "location", - "connectionsBandwidth", - "lagName" - ], - "members": { - "numberOfConnections": { - "type": "integer" - }, - "location": {}, - "connectionsBandwidth": {}, - "lagName": {}, - "connectionId": {} - } - }, - "output": { - "shape": "S1o" - } - }, - "CreatePrivateVirtualInterface": { - "input": { - "type": "structure", - "required": [ - "connectionId", - "newPrivateVirtualInterface" - ], - "members": { - "connectionId": {}, - "newPrivateVirtualInterface": { - "type": "structure", - "required": [ - "virtualInterfaceName", - "vlan", - "asn", - "virtualGatewayId" - ], - "members": { - "virtualInterfaceName": {}, - "vlan": { - "type": "integer" - }, - "asn": { - "type": "integer" - }, - "authKey": {}, - "amazonAddress": {}, - "customerAddress": {}, - "addressFamily": {}, - "virtualGatewayId": {} - } - } - } - }, - "output": { - "shape": "Sp" - } - }, - "CreatePublicVirtualInterface": { - "input": { - "type": "structure", - "required": [ - "connectionId", - "newPublicVirtualInterface" - ], - "members": { - "connectionId": {}, - "newPublicVirtualInterface": { - "type": "structure", - "required": [ - "virtualInterfaceName", - "vlan", - "asn" - ], - "members": { - "virtualInterfaceName": {}, - "vlan": { - "type": "integer" - }, - "asn": { - "type": "integer" - }, - "authKey": {}, - "amazonAddress": {}, - "customerAddress": {}, - "addressFamily": {}, - "routeFilterPrefixes": { - "shape": "Sv" - } - } - } - } - }, - "output": { - "shape": "Sp" - } - }, - "DeleteBGPPeer": { - "input": { - "type": "structure", - "members": { - "virtualInterfaceId": {}, - "asn": { - "type": "integer" - }, - "customerAddress": {} - } - }, - "output": { - "type": "structure", - "members": { - "virtualInterface": { - "shape": "Sp" - } - } - } - }, - "DeleteConnection": { - "input": { - "type": "structure", - "required": [ - "connectionId" - ], - "members": { - "connectionId": {} - } - }, - "output": { - "shape": "S7" - } - }, - "DeleteInterconnect": { - "input": { - "type": "structure", - "required": [ - "interconnectId" - ], - "members": { - "interconnectId": {} - } - }, - "output": { - "type": "structure", - "members": { - "interconnectState": {} - } - } - }, - "DeleteLag": { - "input": { - "type": "structure", - "required": [ - "lagId" - ], - "members": { - "lagId": {} - } - }, - "output": { - "shape": "S1o" - } - }, - "DeleteVirtualInterface": { - "input": { - "type": "structure", - "required": [ - "virtualInterfaceId" - ], - "members": { - "virtualInterfaceId": {} - } - }, - "output": { - "type": "structure", - "members": { - "virtualInterfaceState": {} - } - } - }, - "DescribeConnectionLoa": { - "input": { - "type": "structure", - "required": [ - "connectionId" - ], - "members": { - "connectionId": {}, - "providerName": {}, - "loaContentType": {} - } - }, - "output": { - "type": "structure", - "members": { - "loa": { - "shape": "S28" - } - } - }, - "deprecated": true - }, - "DescribeConnections": { - "input": { - "type": "structure", - "members": { - "connectionId": {} - } - }, - "output": { - "shape": "S2b" - } - }, - "DescribeConnectionsOnInterconnect": { - "input": { - "type": "structure", - "required": [ - "interconnectId" - ], - "members": { - "interconnectId": {} - } - }, - "output": { - "shape": "S2b" - }, - "deprecated": true - }, - "DescribeHostedConnections": { - "input": { - "type": "structure", - "required": [ - "connectionId" - ], - "members": { - "connectionId": {} - } - }, - "output": { - "shape": "S2b" - } - }, - "DescribeInterconnectLoa": { - "input": { - "type": "structure", - "required": [ - "interconnectId" - ], - "members": { - "interconnectId": {}, - "providerName": {}, - "loaContentType": {} - } - }, - "output": { - "type": "structure", - "members": { - "loa": { - "shape": "S28" - } - } - }, - "deprecated": true - }, - "DescribeInterconnects": { - "input": { - "type": "structure", - "members": { - "interconnectId": {} - } - }, - "output": { - "type": "structure", - "members": { - "interconnects": { - "type": "list", - "member": { - "shape": "S1j" - } - } - } - } - }, - "DescribeLags": { - "input": { - "type": "structure", - "members": { - "lagId": {} - } - }, - "output": { - "type": "structure", - "members": { - "lags": { - "type": "list", - "member": { - "shape": "S1o" - } - } - } - } - }, - "DescribeLoa": { - "input": { - "type": "structure", - "required": [ - "connectionId" - ], - "members": { - "connectionId": {}, - "providerName": {}, - "loaContentType": {} - } - }, - "output": { - "shape": "S28" - } - }, - "DescribeLocations": { - "output": { - "type": "structure", - "members": { - "locations": { - "type": "list", - "member": { - "type": "structure", - "members": { - "locationCode": {}, - "locationName": {} - } - } - } - } - } - }, - "DescribeTags": { - "input": { - "type": "structure", - "required": [ - "resourceArns" - ], - "members": { - "resourceArns": { - "type": "list", - "member": {} - } - } - }, - "output": { - "type": "structure", - "members": { - "resourceTags": { - "type": "list", - "member": { - "type": "structure", - "members": { - "resourceArn": {}, - "tags": { - "shape": "S2x" - } - } - } - } - } - } - }, - "DescribeVirtualGateways": { - "output": { - "type": "structure", - "members": { - "virtualGateways": { - "type": "list", - "member": { - "type": "structure", - "members": { - "virtualGatewayId": {}, - "virtualGatewayState": {} - } - } - } - } - } - }, - "DescribeVirtualInterfaces": { - "input": { - "type": "structure", - "members": { - "connectionId": {}, - "virtualInterfaceId": {} - } - }, - "output": { - "type": "structure", - "members": { - "virtualInterfaces": { - "type": "list", - "member": { - "shape": "Sp" - } - } - } - } - }, - "DisassociateConnectionFromLag": { - "input": { - "type": "structure", - "required": [ - "connectionId", - "lagId" - ], - "members": { - "connectionId": {}, - "lagId": {} - } - }, - "output": { - "shape": "S7" - } - }, - "TagResource": { - "input": { - "type": "structure", - "required": [ - "resourceArn", - "tags" - ], - "members": { - "resourceArn": {}, - "tags": { - "shape": "S2x" - } - } - }, - "output": { - "type": "structure", - "members": {} - } - }, - "UntagResource": { - "input": { - "type": "structure", - "required": [ - "resourceArn", - "tagKeys" - ], - "members": { - "resourceArn": {}, - "tagKeys": { - "type": "list", - "member": {} - } - } - }, - "output": { - "type": "structure", - "members": {} - } - }, - "UpdateLag": { - "input": { - "type": "structure", - "required": [ - "lagId" - ], - "members": { - "lagId": {}, - "lagName": {}, - "minimumLinks": { - "type": "integer" - } - } - }, - "output": { - "shape": "S1o" - } - } - }, - "shapes": { - "S7": { - "type": "structure", - "members": { - "ownerAccount": {}, - "connectionId": {}, - "connectionName": {}, - "connectionState": {}, - "region": {}, - "location": {}, - "bandwidth": {}, - "vlan": { - "type": "integer" - }, - "partnerName": {}, - "loaIssueTime": { - "type": "timestamp" - }, - "lagId": {}, - "awsDevice": {} - } - }, - "Sp": { - "type": "structure", - "members": { - "ownerAccount": {}, - "virtualInterfaceId": {}, - "location": {}, - "connectionId": {}, - "virtualInterfaceType": {}, - "virtualInterfaceName": {}, - "vlan": { - "type": "integer" - }, - "asn": { - "type": "integer" - }, - "authKey": {}, - "amazonAddress": {}, - "customerAddress": {}, - "addressFamily": {}, - "virtualInterfaceState": {}, - "customerRouterConfig": {}, - "virtualGatewayId": {}, - "routeFilterPrefixes": { - "shape": "Sv" - }, - "bgpPeers": { - "type": "list", - "member": { - "type": "structure", - "members": { - "asn": { - "type": "integer" - }, - "authKey": {}, - "addressFamily": {}, - "amazonAddress": {}, - "customerAddress": {}, - "bgpPeerState": {}, - "bgpStatus": {} - } - } - } - } - }, - "Sv": { - "type": "list", - "member": { - "type": "structure", - "members": { - "cidr": {} - } - } - }, - "S1j": { - "type": "structure", - "members": { - "interconnectId": {}, - "interconnectName": {}, - "interconnectState": {}, - "region": {}, - "location": {}, - "bandwidth": {}, - "loaIssueTime": { - "type": "timestamp" - }, - "lagId": {}, - "awsDevice": {} - } - }, - "S1o": { - "type": "structure", - "members": { - "connectionsBandwidth": {}, - "numberOfConnections": { - "type": "integer" - }, - "lagId": {}, - "ownerAccount": {}, - "lagName": {}, - "lagState": {}, - "location": {}, - "region": {}, - "minimumLinks": { - "type": "integer" - }, - "awsDevice": {}, - "connections": { - "shape": "S1q" - }, - "allowsHostedConnections": { - "type": "boolean" - } - } - }, - "S1q": { - "type": "list", - "member": { - "shape": "S7" - } - }, - "S28": { - "type": "structure", - "members": { - "loaContent": { - "type": "blob" - }, - "loaContentType": {} - } - }, - "S2b": { - "type": "structure", - "members": { - "connections": { - "shape": "S1q" - } - } - }, - "S2x": { - "type": "list", - "member": { - "type": "structure", - "required": [ - "key" - ], - "members": { - "key": {}, - "value": {} - } - } - } - } -} \ No newline at end of file diff --git a/workshops/monte-carlo-on-ec2-spot-fleet/src/web/node_modules/aws-sdk/apis/directconnect-2012-10-25.paginators.json b/workshops/monte-carlo-on-ec2-spot-fleet/src/web/node_modules/aws-sdk/apis/directconnect-2012-10-25.paginators.json deleted file mode 100644 index b5a985f0..00000000 --- a/workshops/monte-carlo-on-ec2-spot-fleet/src/web/node_modules/aws-sdk/apis/directconnect-2012-10-25.paginators.json +++ /dev/null @@ -1,22 +0,0 @@ -{ - "pagination": { - "DescribeConnections": { - "result_key": "connections" - }, - "DescribeConnectionsOnInterconnect": { - "result_key": "connections" - }, - "DescribeInterconnects": { - "result_key": "interconnects" - }, - "DescribeLocations": { - "result_key": "locations" - }, - "DescribeVirtualGateways": { - "result_key": "virtualGateways" - }, - "DescribeVirtualInterfaces": { - "result_key": "virtualInterfaces" - } - } -} \ No newline at end of file diff --git a/workshops/monte-carlo-on-ec2-spot-fleet/src/web/node_modules/aws-sdk/apis/discovery-2015-11-01.examples.json b/workshops/monte-carlo-on-ec2-spot-fleet/src/web/node_modules/aws-sdk/apis/discovery-2015-11-01.examples.json deleted file mode 100644 index 0ea7e3b0..00000000 --- a/workshops/monte-carlo-on-ec2-spot-fleet/src/web/node_modules/aws-sdk/apis/discovery-2015-11-01.examples.json +++ /dev/null @@ -1,5 +0,0 @@ -{ - "version": "1.0", - "examples": { - } -} diff --git a/workshops/monte-carlo-on-ec2-spot-fleet/src/web/node_modules/aws-sdk/apis/discovery-2015-11-01.min.json b/workshops/monte-carlo-on-ec2-spot-fleet/src/web/node_modules/aws-sdk/apis/discovery-2015-11-01.min.json deleted file mode 100644 index c284cd30..00000000 --- a/workshops/monte-carlo-on-ec2-spot-fleet/src/web/node_modules/aws-sdk/apis/discovery-2015-11-01.min.json +++ /dev/null @@ -1,706 +0,0 @@ -{ - "version": "2.0", - "metadata": { - "apiVersion": "2015-11-01", - "endpointPrefix": "discovery", - "jsonVersion": "1.1", - "protocol": "json", - "serviceFullName": "AWS Application Discovery Service", - "signatureVersion": "v4", - "targetPrefix": "AWSPoseidonService_V2015_11_01", - "uid": "discovery-2015-11-01" - }, - "operations": { - "AssociateConfigurationItemsToApplication": { - "input": { - "type": "structure", - "required": [ - "applicationConfigurationId", - "configurationIds" - ], - "members": { - "applicationConfigurationId": {}, - "configurationIds": { - "shape": "S3" - } - } - }, - "output": { - "type": "structure", - "members": {} - } - }, - "CreateApplication": { - "input": { - "type": "structure", - "required": [ - "name" - ], - "members": { - "name": {}, - "description": {} - } - }, - "output": { - "type": "structure", - "members": { - "configurationId": {} - } - } - }, - "CreateTags": { - "input": { - "type": "structure", - "required": [ - "configurationIds", - "tags" - ], - "members": { - "configurationIds": { - "shape": "S3" - }, - "tags": { - "shape": "Sa" - } - } - }, - "output": { - "type": "structure", - "members": {} - } - }, - "DeleteApplications": { - "input": { - "type": "structure", - "required": [ - "configurationIds" - ], - "members": { - "configurationIds": { - "type": "list", - "member": {} - } - } - }, - "output": { - "type": "structure", - "members": {} - } - }, - "DeleteTags": { - "input": { - "type": "structure", - "required": [ - "configurationIds" - ], - "members": { - "configurationIds": { - "shape": "S3" - }, - "tags": { - "shape": "Sa" - } - } - }, - "output": { - "type": "structure", - "members": {} - } - }, - "DescribeAgents": { - "input": { - "type": "structure", - "members": { - "agentIds": { - "shape": "Sl" - }, - "filters": { - "shape": "Sn" - }, - "maxResults": { - "type": "integer" - }, - "nextToken": {} - } - }, - "output": { - "type": "structure", - "members": { - "agentsInfo": { - "type": "list", - "member": { - "type": "structure", - "members": { - "agentId": {}, - "hostName": {}, - "agentNetworkInfoList": { - "type": "list", - "member": { - "type": "structure", - "members": { - "ipAddress": {}, - "macAddress": {} - } - } - }, - "connectorId": {}, - "version": {}, - "health": {}, - "lastHealthPingTime": {}, - "collectionStatus": {}, - "agentType": {}, - "registeredTime": {} - } - } - }, - "nextToken": {} - } - } - }, - "DescribeConfigurations": { - "input": { - "type": "structure", - "required": [ - "configurationIds" - ], - "members": { - "configurationIds": { - "shape": "S3" - } - } - }, - "output": { - "type": "structure", - "members": { - "configurations": { - "type": "list", - "member": { - "type": "map", - "key": {}, - "value": {} - } - } - } - } - }, - "DescribeExportConfigurations": { - "input": { - "type": "structure", - "members": { - "exportIds": { - "shape": "S15" - }, - "maxResults": { - "type": "integer" - }, - "nextToken": {} - } - }, - "output": { - "type": "structure", - "members": { - "exportsInfo": { - "shape": "S18" - }, - "nextToken": {} - } - }, - "deprecated": true - }, - "DescribeExportTasks": { - "input": { - "type": "structure", - "members": { - "exportIds": { - "shape": "S15" - }, - "filters": { - "shape": "S1h" - }, - "maxResults": { - "type": "integer" - }, - "nextToken": {} - } - }, - "output": { - "type": "structure", - "members": { - "exportsInfo": { - "shape": "S18" - }, - "nextToken": {} - } - } - }, - "DescribeTags": { - "input": { - "type": "structure", - "members": { - "filters": { - "type": "list", - "member": { - "type": "structure", - "required": [ - "name", - "values" - ], - "members": { - "name": {}, - "values": { - "shape": "Sp" - } - } - } - }, - "maxResults": { - "type": "integer" - }, - "nextToken": {} - } - }, - "output": { - "type": "structure", - "members": { - "tags": { - "type": "list", - "member": { - "locationName": "item", - "type": "structure", - "members": { - "configurationType": {}, - "configurationId": {}, - "key": {}, - "value": {}, - "timeOfCreation": { - "type": "timestamp" - } - } - } - }, - "nextToken": {} - } - } - }, - "DisassociateConfigurationItemsFromApplication": { - "input": { - "type": "structure", - "required": [ - "applicationConfigurationId", - "configurationIds" - ], - "members": { - "applicationConfigurationId": {}, - "configurationIds": { - "shape": "S3" - } - } - }, - "output": { - "type": "structure", - "members": {} - } - }, - "ExportConfigurations": { - "output": { - "type": "structure", - "members": { - "exportId": {} - } - }, - "deprecated": true - }, - "GetDiscoverySummary": { - "input": { - "type": "structure", - "members": {} - }, - "output": { - "type": "structure", - "members": { - "servers": { - "type": "long" - }, - "applications": { - "type": "long" - }, - "serversMappedToApplications": { - "type": "long" - }, - "serversMappedtoTags": { - "type": "long" - }, - "agentSummary": { - "type": "structure", - "required": [ - "activeAgents", - "healthyAgents", - "blackListedAgents", - "shutdownAgents", - "unhealthyAgents", - "totalAgents", - "unknownAgents" - ], - "members": { - "activeAgents": { - "type": "integer" - }, - "healthyAgents": { - "type": "integer" - }, - "blackListedAgents": { - "type": "integer" - }, - "shutdownAgents": { - "type": "integer" - }, - "unhealthyAgents": { - "type": "integer" - }, - "totalAgents": { - "type": "integer" - }, - "unknownAgents": { - "type": "integer" - } - } - }, - "connectorSummary": { - "type": "structure", - "required": [ - "activeConnectors", - "healthyConnectors", - "blackListedConnectors", - "shutdownConnectors", - "unhealthyConnectors", - "totalConnectors", - "unknownConnectors" - ], - "members": { - "activeConnectors": { - "type": "integer" - }, - "healthyConnectors": { - "type": "integer" - }, - "blackListedConnectors": { - "type": "integer" - }, - "shutdownConnectors": { - "type": "integer" - }, - "unhealthyConnectors": { - "type": "integer" - }, - "totalConnectors": { - "type": "integer" - }, - "unknownConnectors": { - "type": "integer" - } - } - } - } - } - }, - "ListConfigurations": { - "input": { - "type": "structure", - "required": [ - "configurationType" - ], - "members": { - "configurationType": {}, - "filters": { - "shape": "Sn" - }, - "maxResults": { - "type": "integer" - }, - "nextToken": {}, - "orderBy": { - "type": "list", - "member": { - "type": "structure", - "required": [ - "fieldName" - ], - "members": { - "fieldName": {}, - "sortOrder": {} - } - } - } - } - }, - "output": { - "type": "structure", - "members": { - "configurations": { - "type": "list", - "member": { - "type": "map", - "key": {}, - "value": {} - } - }, - "nextToken": {} - } - } - }, - "ListServerNeighbors": { - "input": { - "type": "structure", - "required": [ - "configurationId" - ], - "members": { - "configurationId": {}, - "portInformationNeeded": { - "type": "boolean" - }, - "neighborConfigurationIds": { - "shape": "S3" - }, - "maxResults": { - "type": "integer" - }, - "nextToken": {} - } - }, - "output": { - "type": "structure", - "required": [ - "neighbors" - ], - "members": { - "neighbors": { - "type": "list", - "member": { - "type": "structure", - "required": [ - "sourceServerId", - "destinationServerId", - "connectionsCount" - ], - "members": { - "sourceServerId": {}, - "destinationServerId": {}, - "destinationPort": { - "type": "integer" - }, - "transportProtocol": {}, - "connectionsCount": { - "type": "long" - } - } - } - }, - "nextToken": {}, - "knownDependencyCount": { - "type": "long" - } - } - } - }, - "StartDataCollectionByAgentIds": { - "input": { - "type": "structure", - "required": [ - "agentIds" - ], - "members": { - "agentIds": { - "shape": "Sl" - } - } - }, - "output": { - "type": "structure", - "members": { - "agentsConfigurationStatus": { - "shape": "S2e" - } - } - } - }, - "StartExportTask": { - "input": { - "type": "structure", - "members": { - "exportDataFormat": { - "type": "list", - "member": {} - }, - "filters": { - "shape": "S1h" - }, - "startTime": { - "type": "timestamp" - }, - "endTime": { - "type": "timestamp" - } - } - }, - "output": { - "type": "structure", - "members": { - "exportId": {} - } - } - }, - "StopDataCollectionByAgentIds": { - "input": { - "type": "structure", - "required": [ - "agentIds" - ], - "members": { - "agentIds": { - "shape": "Sl" - } - } - }, - "output": { - "type": "structure", - "members": { - "agentsConfigurationStatus": { - "shape": "S2e" - } - } - } - }, - "UpdateApplication": { - "input": { - "type": "structure", - "required": [ - "configurationId" - ], - "members": { - "configurationId": {}, - "name": {}, - "description": {} - } - }, - "output": { - "type": "structure", - "members": {} - } - } - }, - "shapes": { - "S3": { - "type": "list", - "member": {} - }, - "Sa": { - "type": "list", - "member": { - "locationName": "item", - "type": "structure", - "required": [ - "key", - "value" - ], - "members": { - "key": {}, - "value": {} - } - } - }, - "Sl": { - "type": "list", - "member": {} - }, - "Sn": { - "type": "list", - "member": { - "type": "structure", - "required": [ - "name", - "values", - "condition" - ], - "members": { - "name": {}, - "values": { - "shape": "Sp" - }, - "condition": {} - } - } - }, - "Sp": { - "type": "list", - "member": { - "locationName": "item" - } - }, - "S15": { - "type": "list", - "member": {} - }, - "S18": { - "type": "list", - "member": { - "type": "structure", - "required": [ - "exportId", - "exportStatus", - "statusMessage", - "exportRequestTime" - ], - "members": { - "exportId": {}, - "exportStatus": {}, - "statusMessage": {}, - "configurationsDownloadUrl": {}, - "exportRequestTime": { - "type": "timestamp" - }, - "isTruncated": { - "type": "boolean" - }, - "requestedStartTime": { - "type": "timestamp" - }, - "requestedEndTime": { - "type": "timestamp" - } - } - } - }, - "S1h": { - "type": "list", - "member": { - "type": "structure", - "required": [ - "name", - "values", - "condition" - ], - "members": { - "name": {}, - "values": { - "shape": "Sp" - }, - "condition": {} - } - } - }, - "S2e": { - "type": "list", - "member": { - "type": "structure", - "members": { - "agentId": {}, - "operationSucceeded": { - "type": "boolean" - }, - "description": {} - } - } - } - } -} \ No newline at end of file diff --git a/workshops/monte-carlo-on-ec2-spot-fleet/src/web/node_modules/aws-sdk/apis/discovery-2015-11-01.paginators.json b/workshops/monte-carlo-on-ec2-spot-fleet/src/web/node_modules/aws-sdk/apis/discovery-2015-11-01.paginators.json deleted file mode 100644 index 5677bd8e..00000000 --- a/workshops/monte-carlo-on-ec2-spot-fleet/src/web/node_modules/aws-sdk/apis/discovery-2015-11-01.paginators.json +++ /dev/null @@ -1,4 +0,0 @@ -{ - "pagination": { - } -} diff --git a/workshops/monte-carlo-on-ec2-spot-fleet/src/web/node_modules/aws-sdk/apis/dms-2016-01-01.examples.json b/workshops/monte-carlo-on-ec2-spot-fleet/src/web/node_modules/aws-sdk/apis/dms-2016-01-01.examples.json deleted file mode 100644 index 295fccf2..00000000 --- a/workshops/monte-carlo-on-ec2-spot-fleet/src/web/node_modules/aws-sdk/apis/dms-2016-01-01.examples.json +++ /dev/null @@ -1,1053 +0,0 @@ -{ - "version": "1.0", - "examples": { - "AddTagsToResource": [ - { - "input": { - "ResourceArn": "arn:aws:dms:us-east-1:123456789012:endpoint:ASXWXJZLNWNT5HTWCGV2BUJQ7E", - "Tags": [ - { - "Key": "Acount", - "Value": "1633456" - } - ] - }, - "output": { - }, - "comments": { - "input": { - "ResourceArn": "Required. Use the ARN of the resource you want to tag.", - "Tags": "Required. Use the Key/Value pair format." - }, - "output": { - } - }, - "description": "Adds metadata tags to an AWS DMS resource, including replication instance, endpoint, security group, and migration task. These tags can also be used with cost allocation reporting to track cost associated with AWS DMS resources, or used in a Condition statement in an IAM policy for AWS DMS.", - "id": "add-tags-to-resource-1481744141435", - "title": "Add tags to resource" - } - ], - "CreateEndpoint": [ - { - "input": { - "CertificateArn": "", - "DatabaseName": "testdb", - "EndpointIdentifier": "test-endpoint-1", - "EndpointType": "source", - "EngineName": "mysql", - "ExtraConnectionAttributes": "", - "KmsKeyId": "arn:aws:kms:us-east-1:123456789012:key/4c1731d6-5435-ed4d-be13-d53411a7cfbd", - "Password": "pasword", - "Port": 3306, - "ServerName": "mydb.cx1llnox7iyx.us-west-2.rds.amazonaws.com", - "SslMode": "require", - "Tags": [ - { - "Key": "Acount", - "Value": "143327655" - } - ], - "Username": "username" - }, - "output": { - "Endpoint": { - "EndpointArn": "arn:aws:dms:us-east-1:123456789012:endpoint:RAAR3R22XSH46S3PWLC3NJAWKM", - "EndpointIdentifier": "test-endpoint-1", - "EndpointType": "source", - "EngineName": "mysql", - "KmsKeyId": "arn:aws:kms:us-east-1:123456789012:key/4c1731d6-5435-ed4d-be13-d53411a7cfbd", - "Port": 3306, - "ServerName": "mydb.cx1llnox7iyx.us-west-2.rds.amazonaws.com", - "Status": "active", - "Username": "username" - } - }, - "comments": { - "input": { - }, - "output": { - } - }, - "description": "Creates an endpoint using the provided settings.", - "id": "create-endpoint-1481746254348", - "title": "Create endpoint" - } - ], - "CreateReplicationInstance": [ - { - "input": { - "AllocatedStorage": 123, - "AutoMinorVersionUpgrade": true, - "AvailabilityZone": "", - "EngineVersion": "", - "KmsKeyId": "", - "MultiAZ": true, - "PreferredMaintenanceWindow": "", - "PubliclyAccessible": true, - "ReplicationInstanceClass": "", - "ReplicationInstanceIdentifier": "", - "ReplicationSubnetGroupIdentifier": "", - "Tags": [ - { - "Key": "string", - "Value": "string" - } - ], - "VpcSecurityGroupIds": [ - - ] - }, - "output": { - "ReplicationInstance": { - "AllocatedStorage": 5, - "AutoMinorVersionUpgrade": true, - "EngineVersion": "1.5.0", - "KmsKeyId": "arn:aws:kms:us-east-1:123456789012:key/4c1731d6-5435-ed4d-be13-d53411a7cfbd", - "PendingModifiedValues": { - }, - "PreferredMaintenanceWindow": "sun:06:00-sun:14:00", - "PubliclyAccessible": true, - "ReplicationInstanceArn": "arn:aws:dms:us-east-1:123456789012:rep:6UTDJGBOUS3VI3SUWA66XFJCJQ", - "ReplicationInstanceClass": "dms.t2.micro", - "ReplicationInstanceIdentifier": "test-rep-1", - "ReplicationInstanceStatus": "creating", - "ReplicationSubnetGroup": { - "ReplicationSubnetGroupDescription": "default", - "ReplicationSubnetGroupIdentifier": "default", - "SubnetGroupStatus": "Complete", - "Subnets": [ - { - "SubnetAvailabilityZone": { - "Name": "us-east-1d" - }, - "SubnetIdentifier": "subnet-f6dd91af", - "SubnetStatus": "Active" - }, - { - "SubnetAvailabilityZone": { - "Name": "us-east-1b" - }, - "SubnetIdentifier": "subnet-3605751d", - "SubnetStatus": "Active" - }, - { - "SubnetAvailabilityZone": { - "Name": "us-east-1c" - }, - "SubnetIdentifier": "subnet-c2daefb5", - "SubnetStatus": "Active" - }, - { - "SubnetAvailabilityZone": { - "Name": "us-east-1e" - }, - "SubnetIdentifier": "subnet-85e90cb8", - "SubnetStatus": "Active" - } - ], - "VpcId": "vpc-6741a603" - } - } - }, - "comments": { - "output": { - } - }, - "description": "Creates the replication instance using the specified parameters.", - "id": "create-replication-instance-1481746705295", - "title": "Create replication instance" - } - ], - "CreateReplicationSubnetGroup": [ - { - "input": { - "ReplicationSubnetGroupDescription": "US West subnet group", - "ReplicationSubnetGroupIdentifier": "us-west-2ab-vpc-215ds366", - "SubnetIds": [ - "subnet-e145356n", - "subnet-58f79200" - ], - "Tags": [ - { - "Key": "Acount", - "Value": "145235" - } - ] - }, - "output": { - "ReplicationSubnetGroup": { - } - }, - "comments": { - "output": { - } - }, - "description": "Creates a replication subnet group given a list of the subnet IDs in a VPC.", - "id": "create-replication-subnet-group-1481747297930", - "title": "Create replication subnet group" - } - ], - "CreateReplicationTask": [ - { - "input": { - "CdcStartTime": "2016-12-14T18:25:43Z", - "MigrationType": "full-load", - "ReplicationInstanceArn": "arn:aws:dms:us-east-1:123456789012:rep:6UTDJGBOUS3VI3SUWA66XFJCJQ", - "ReplicationTaskIdentifier": "task1", - "ReplicationTaskSettings": "", - "SourceEndpointArn": "arn:aws:dms:us-east-1:123456789012:endpoint:ZW5UAN6P4E77EC7YWHK4RZZ3BE", - "TableMappings": "file://mappingfile.json", - "Tags": [ - { - "Key": "Acount", - "Value": "24352226" - } - ], - "TargetEndpointArn": "arn:aws:dms:us-east-1:123456789012:endpoint:ASXWXJZLNWNT5HTWCGV2BUJQ7E" - }, - "output": { - "ReplicationTask": { - "MigrationType": "full-load", - "ReplicationInstanceArn": "arn:aws:dms:us-east-1:123456789012:rep:6UTDJGBOUS3VI3SUWA66XFJCJQ", - "ReplicationTaskArn": "arn:aws:dms:us-east-1:123456789012:task:OEAMB3NXSTZ6LFYZFEPPBBXPYM", - "ReplicationTaskCreationDate": "2016-12-14T18:25:43Z", - "ReplicationTaskIdentifier": "task1", - "ReplicationTaskSettings": "{\"TargetMetadata\":{\"TargetSchema\":\"\",\"SupportLobs\":true,\"FullLobMode\":true,\"LobChunkSize\":64,\"LimitedSizeLobMode\":false,\"LobMaxSize\":0},\"FullLoadSettings\":{\"FullLoadEnabled\":true,\"ApplyChangesEnabled\":false,\"TargetTablePrepMode\":\"DROP_AND_CREATE\",\"CreatePkAfterFullLoad\":false,\"StopTaskCachedChangesApplied\":false,\"StopTaskCachedChangesNotApplied\":false,\"ResumeEnabled\":false,\"ResumeMinTableSize\":100000,\"ResumeOnlyClusteredPKTables\":true,\"MaxFullLoadSubTasks\":8,\"TransactionConsistencyTimeout\":600,\"CommitRate\":10000},\"Logging\":{\"EnableLogging\":false}}", - "SourceEndpointArn": "arn:aws:dms:us-east-1:123456789012:endpoint:ZW5UAN6P4E77EC7YWHK4RZZ3BE", - "Status": "creating", - "TableMappings": "file://mappingfile.json", - "TargetEndpointArn": "arn:aws:dms:us-east-1:123456789012:endpoint:ASXWXJZLNWNT5HTWCGV2BUJQ7E" - } - }, - "comments": { - "input": { - }, - "output": { - } - }, - "description": "Creates a replication task using the specified parameters.", - "id": "create-replication-task-1481747646288", - "title": "Create replication task" - } - ], - "DeleteCertificate": [ - { - "input": { - "CertificateArn": "arn:aws:dms:us-east-1:123456789012:rep:6UTDJGBOUSM457DE6XFJCJQ" - }, - "output": { - "Certificate": { - } - }, - "comments": { - "input": { - }, - "output": { - } - }, - "description": "Deletes the specified certificate.", - "id": "delete-certificate-1481751957981", - "title": "Delete Certificate" - } - ], - "DeleteEndpoint": [ - { - "input": { - "EndpointArn": "arn:aws:dms:us-east-1:123456789012:endpoint:RAAR3R22XSH46S3PWLC3NJAWKM" - }, - "output": { - "Endpoint": { - "EndpointArn": "arn:aws:dms:us-east-1:123456789012:endpoint:RAAR3R22XSH46S3PWLC3NJAWKM", - "EndpointIdentifier": "test-endpoint-1", - "EndpointType": "source", - "EngineName": "mysql", - "KmsKeyId": "arn:aws:kms:us-east-1:123456789012:key/4c1731d6-5435-ed4d-be13-d53411a7cfbd", - "Port": 3306, - "ServerName": "mydb.cx1llnox7iyx.us-west-2.rds.amazonaws.com", - "Status": "active", - "Username": "username" - } - }, - "comments": { - "input": { - }, - "output": { - } - }, - "description": "Deletes the specified endpoint. All tasks associated with the endpoint must be deleted before you can delete the endpoint.\n", - "id": "delete-endpoint-1481752425530", - "title": "Delete Endpoint" - } - ], - "DeleteReplicationInstance": [ - { - "input": { - "ReplicationInstanceArn": "arn:aws:dms:us-east-1:123456789012:rep:6UTDJGBOUS3VI3SUWA66XFJCJQ" - }, - "output": { - "ReplicationInstance": { - "AllocatedStorage": 5, - "AutoMinorVersionUpgrade": true, - "EngineVersion": "1.5.0", - "KmsKeyId": "arn:aws:kms:us-east-1:123456789012:key/4c1731d6-5435-ed4d-be13-d53411a7cfbd", - "PendingModifiedValues": { - }, - "PreferredMaintenanceWindow": "sun:06:00-sun:14:00", - "PubliclyAccessible": true, - "ReplicationInstanceArn": "arn:aws:dms:us-east-1:123456789012:rep:6UTDJGBOUS3VI3SUWA66XFJCJQ", - "ReplicationInstanceClass": "dms.t2.micro", - "ReplicationInstanceIdentifier": "test-rep-1", - "ReplicationInstanceStatus": "creating", - "ReplicationSubnetGroup": { - "ReplicationSubnetGroupDescription": "default", - "ReplicationSubnetGroupIdentifier": "default", - "SubnetGroupStatus": "Complete", - "Subnets": [ - { - "SubnetAvailabilityZone": { - "Name": "us-east-1d" - }, - "SubnetIdentifier": "subnet-f6dd91af", - "SubnetStatus": "Active" - }, - { - "SubnetAvailabilityZone": { - "Name": "us-east-1b" - }, - "SubnetIdentifier": "subnet-3605751d", - "SubnetStatus": "Active" - }, - { - "SubnetAvailabilityZone": { - "Name": "us-east-1c" - }, - "SubnetIdentifier": "subnet-c2daefb5", - "SubnetStatus": "Active" - }, - { - "SubnetAvailabilityZone": { - "Name": "us-east-1e" - }, - "SubnetIdentifier": "subnet-85e90cb8", - "SubnetStatus": "Active" - } - ], - "VpcId": "vpc-6741a603" - } - } - }, - "comments": { - "output": { - } - }, - "description": "Deletes the specified replication instance. You must delete any migration tasks that are associated with the replication instance before you can delete it.\n\n", - "id": "delete-replication-instance-1481752552839", - "title": "Delete Replication Instance" - } - ], - "DeleteReplicationSubnetGroup": [ - { - "input": { - "ReplicationSubnetGroupIdentifier": "us-west-2ab-vpc-215ds366" - }, - "output": { - }, - "comments": { - "input": { - }, - "output": { - } - }, - "description": "Deletes a replication subnet group.", - "id": "delete-replication-subnet-group-1481752728597", - "title": "Delete Replication Subnet Group" - } - ], - "DeleteReplicationTask": [ - { - "input": { - "ReplicationTaskArn": "arn:aws:dms:us-east-1:123456789012:rep:6UTDJGBOUS3VI3SUWA66XFJCJQ" - }, - "output": { - "ReplicationTask": { - "MigrationType": "full-load", - "ReplicationInstanceArn": "arn:aws:dms:us-east-1:123456789012:rep:6UTDJGBOUS3VI3SUWA66XFJCJQ", - "ReplicationTaskArn": "arn:aws:dms:us-east-1:123456789012:task:OEAMB3NXSTZ6LFYZFEPPBBXPYM", - "ReplicationTaskCreationDate": "2016-12-14T18:25:43Z", - "ReplicationTaskIdentifier": "task1", - "ReplicationTaskSettings": "{\"TargetMetadata\":{\"TargetSchema\":\"\",\"SupportLobs\":true,\"FullLobMode\":true,\"LobChunkSize\":64,\"LimitedSizeLobMode\":false,\"LobMaxSize\":0},\"FullLoadSettings\":{\"FullLoadEnabled\":true,\"ApplyChangesEnabled\":false,\"TargetTablePrepMode\":\"DROP_AND_CREATE\",\"CreatePkAfterFullLoad\":false,\"StopTaskCachedChangesApplied\":false,\"StopTaskCachedChangesNotApplied\":false,\"ResumeEnabled\":false,\"ResumeMinTableSize\":100000,\"ResumeOnlyClusteredPKTables\":true,\"MaxFullLoadSubTasks\":8,\"TransactionConsistencyTimeout\":600,\"CommitRate\":10000},\"Logging\":{\"EnableLogging\":false}}", - "SourceEndpointArn": "arn:aws:dms:us-east-1:123456789012:endpoint:ZW5UAN6P4E77EC7YWHK4RZZ3BE", - "Status": "creating", - "TableMappings": "file://mappingfile.json", - "TargetEndpointArn": "arn:aws:dms:us-east-1:123456789012:endpoint:ASXWXJZLNWNT5HTWCGV2BUJQ7E" - } - }, - "comments": { - "input": { - }, - "output": { - } - }, - "description": "Deletes the specified replication task.", - "id": "delete-replication-task-1481752903506", - "title": "Delete Replication Task" - } - ], - "DescribeAccountAttributes": [ - { - "input": { - }, - "output": { - "AccountQuotas": [ - { - "AccountQuotaName": "ReplicationInstances", - "Max": 20, - "Used": 0 - }, - { - "AccountQuotaName": "AllocatedStorage", - "Max": 20, - "Used": 0 - }, - { - "AccountQuotaName": "Endpoints", - "Max": 20, - "Used": 0 - } - ] - }, - "comments": { - "input": { - }, - "output": { - } - }, - "description": "Lists all of the AWS DMS attributes for a customer account. The attributes include AWS DMS quotas for the account, such as the number of replication instances allowed. The description for a quota includes the quota name, current usage toward that quota, and the quota's maximum value. This operation does not take any parameters.", - "id": "describe-acount-attributes-1481753085663", - "title": "Describe acount attributes" - } - ], - "DescribeCertificates": [ - { - "input": { - "Filters": [ - { - "Name": "string", - "Values": [ - "string", - "string" - ] - } - ], - "Marker": "", - "MaxRecords": 123 - }, - "output": { - "Certificates": [ - - ], - "Marker": "" - }, - "comments": { - "input": { - }, - "output": { - } - }, - "description": "Provides a description of the certificate.", - "id": "describe-certificates-1481753186244", - "title": "Describe certificates" - } - ], - "DescribeConnections": [ - { - "input": { - "Filters": [ - { - "Name": "string", - "Values": [ - "string", - "string" - ] - } - ], - "Marker": "", - "MaxRecords": 123 - }, - "output": { - "Connections": [ - { - "EndpointArn": "arn:aws:dms:us-east-arn:aws:dms:us-east-1:123456789012:endpoint:ZW5UAN6P4E77EC7YWHK4RZZ3BE", - "EndpointIdentifier": "testsrc1", - "ReplicationInstanceArn": "arn:aws:dms:us-east-1:123456789012:rep:6UTDJGBOUS3VI3SUWA66XFJCJQ", - "ReplicationInstanceIdentifier": "test", - "Status": "successful" - } - ], - "Marker": "" - }, - "comments": { - "input": { - }, - "output": { - } - }, - "description": "Describes the status of the connections that have been made between the replication instance and an endpoint. Connections are created when you test an endpoint.", - "id": "describe-connections-1481754477953", - "title": "Describe connections" - } - ], - "DescribeEndpointTypes": [ - { - "input": { - "Filters": [ - { - "Name": "string", - "Values": [ - "string", - "string" - ] - } - ], - "Marker": "", - "MaxRecords": 123 - }, - "output": { - "Marker": "", - "SupportedEndpointTypes": [ - - ] - }, - "comments": { - "input": { - }, - "output": { - } - }, - "description": "Returns information about the type of endpoints available.", - "id": "describe-endpoint-types-1481754742591", - "title": "Describe endpoint types" - } - ], - "DescribeEndpoints": [ - { - "input": { - "Filters": [ - { - "Name": "string", - "Values": [ - "string", - "string" - ] - } - ], - "Marker": "", - "MaxRecords": 123 - }, - "output": { - "Endpoints": [ - - ], - "Marker": "" - }, - "comments": { - "input": { - }, - "output": { - } - }, - "description": "Returns information about the endpoints for your account in the current region.", - "id": "describe-endpoints-1481754926060", - "title": "Describe endpoints" - } - ], - "DescribeOrderableReplicationInstances": [ - { - "input": { - "Marker": "", - "MaxRecords": 123 - }, - "output": { - "Marker": "", - "OrderableReplicationInstances": [ - - ] - }, - "comments": { - "input": { - }, - "output": { - } - }, - "description": "Returns information about the replication instance types that can be created in the specified region.", - "id": "describe-orderable-replication-instances-1481755123669", - "title": "Describe orderable replication instances" - } - ], - "DescribeRefreshSchemasStatus": [ - { - "input": { - "EndpointArn": "" - }, - "output": { - "RefreshSchemasStatus": { - } - }, - "comments": { - "input": { - }, - "output": { - } - }, - "description": "Returns the status of the refresh-schemas operation.", - "id": "describe-refresh-schema-status-1481755303497", - "title": "Describe refresh schema status" - } - ], - "DescribeReplicationInstances": [ - { - "input": { - "Filters": [ - { - "Name": "string", - "Values": [ - "string", - "string" - ] - } - ], - "Marker": "", - "MaxRecords": 123 - }, - "output": { - "Marker": "", - "ReplicationInstances": [ - - ] - }, - "comments": { - "input": { - }, - "output": { - } - }, - "description": "Returns the status of the refresh-schemas operation.", - "id": "describe-replication-instances-1481755443952", - "title": "Describe replication instances" - } - ], - "DescribeReplicationSubnetGroups": [ - { - "input": { - "Filters": [ - { - "Name": "string", - "Values": [ - "string", - "string" - ] - } - ], - "Marker": "", - "MaxRecords": 123 - }, - "output": { - "Marker": "", - "ReplicationSubnetGroups": [ - - ] - }, - "comments": { - "input": { - }, - "output": { - } - }, - "description": "Returns information about the replication subnet groups.", - "id": "describe-replication-subnet-groups-1481755621284", - "title": "Describe replication subnet groups" - } - ], - "DescribeReplicationTasks": [ - { - "input": { - "Filters": [ - { - "Name": "string", - "Values": [ - "string", - "string" - ] - } - ], - "Marker": "", - "MaxRecords": 123 - }, - "output": { - "Marker": "", - "ReplicationTasks": [ - - ] - }, - "comments": { - "input": { - }, - "output": { - } - }, - "description": "Returns information about replication tasks for your account in the current region.", - "id": "describe-replication-tasks-1481755777563", - "title": "Describe replication tasks" - } - ], - "DescribeSchemas": [ - { - "input": { - "EndpointArn": "", - "Marker": "", - "MaxRecords": 123 - }, - "output": { - "Marker": "", - "Schemas": [ - - ] - }, - "comments": { - "input": { - }, - "output": { - } - }, - "description": "Returns information about the schema for the specified endpoint.", - "id": "describe-schemas-1481755933924", - "title": "Describe schemas" - } - ], - "DescribeTableStatistics": [ - { - "input": { - "Marker": "", - "MaxRecords": 123, - "ReplicationTaskArn": "" - }, - "output": { - "Marker": "", - "ReplicationTaskArn": "", - "TableStatistics": [ - - ] - }, - "comments": { - "input": { - }, - "output": { - } - }, - "description": "Returns table statistics on the database migration task, including table name, rows inserted, rows updated, and rows deleted.", - "id": "describe-table-statistics-1481756071890", - "title": "Describe table statistics" - } - ], - "ImportCertificate": [ - { - "input": { - "CertificateIdentifier": "", - "CertificatePem": "" - }, - "output": { - "Certificate": { - } - }, - "comments": { - "input": { - }, - "output": { - } - }, - "description": "Uploads the specified certificate.", - "id": "import-certificate-1481756197206", - "title": "Import certificate" - } - ], - "ListTagsForResource": [ - { - "input": { - "ResourceArn": "" - }, - "output": { - "TagList": [ - - ] - }, - "comments": { - "input": { - }, - "output": { - } - }, - "description": "Lists all tags for an AWS DMS resource.", - "id": "list-tags-for-resource-1481761095501", - "title": "List tags for resource" - } - ], - "ModifyEndpoint": [ - { - "input": { - "CertificateArn": "", - "DatabaseName": "", - "EndpointArn": "", - "EndpointIdentifier": "", - "EndpointType": "source", - "EngineName": "", - "ExtraConnectionAttributes": "", - "Password": "", - "Port": 123, - "ServerName": "", - "SslMode": "require", - "Username": "" - }, - "output": { - "Endpoint": { - } - }, - "comments": { - "input": { - }, - "output": { - } - }, - "description": "Modifies the specified endpoint.", - "id": "modify-endpoint-1481761649937", - "title": "Modify endpoint" - } - ], - "ModifyReplicationInstance": [ - { - "input": { - "AllocatedStorage": 123, - "AllowMajorVersionUpgrade": true, - "ApplyImmediately": true, - "AutoMinorVersionUpgrade": true, - "EngineVersion": "1.5.0", - "MultiAZ": true, - "PreferredMaintenanceWindow": "sun:06:00-sun:14:00", - "ReplicationInstanceArn": "arn:aws:dms:us-east-1:123456789012:rep:6UTDJGBOUS3VI3SUWA66XFJCJQ", - "ReplicationInstanceClass": "dms.t2.micro", - "ReplicationInstanceIdentifier": "test-rep-1", - "VpcSecurityGroupIds": [ - - ] - }, - "output": { - "ReplicationInstance": { - "AllocatedStorage": 5, - "AutoMinorVersionUpgrade": true, - "EngineVersion": "1.5.0", - "KmsKeyId": "arn:aws:kms:us-east-1:123456789012:key/4c1731d6-5435-ed4d-be13-d53411a7cfbd", - "PendingModifiedValues": { - }, - "PreferredMaintenanceWindow": "sun:06:00-sun:14:00", - "PubliclyAccessible": true, - "ReplicationInstanceArn": "arn:aws:dms:us-east-1:123456789012:rep:6UTDJGBOUS3VI3SUWA66XFJCJQ", - "ReplicationInstanceClass": "dms.t2.micro", - "ReplicationInstanceIdentifier": "test-rep-1", - "ReplicationInstanceStatus": "available", - "ReplicationSubnetGroup": { - "ReplicationSubnetGroupDescription": "default", - "ReplicationSubnetGroupIdentifier": "default", - "SubnetGroupStatus": "Complete", - "Subnets": [ - { - "SubnetAvailabilityZone": { - "Name": "us-east-1d" - }, - "SubnetIdentifier": "subnet-f6dd91af", - "SubnetStatus": "Active" - }, - { - "SubnetAvailabilityZone": { - "Name": "us-east-1b" - }, - "SubnetIdentifier": "subnet-3605751d", - "SubnetStatus": "Active" - }, - { - "SubnetAvailabilityZone": { - "Name": "us-east-1c" - }, - "SubnetIdentifier": "subnet-c2daefb5", - "SubnetStatus": "Active" - }, - { - "SubnetAvailabilityZone": { - "Name": "us-east-1e" - }, - "SubnetIdentifier": "subnet-85e90cb8", - "SubnetStatus": "Active" - } - ], - "VpcId": "vpc-6741a603" - } - } - }, - "comments": { - "output": { - } - }, - "description": "Modifies the replication instance to apply new settings. You can change one or more parameters by specifying these parameters and the new values in the request. Some settings are applied during the maintenance window.", - "id": "modify-replication-instance-1481761784746", - "title": "Modify replication instance" - } - ], - "ModifyReplicationSubnetGroup": [ - { - "input": { - "ReplicationSubnetGroupDescription": "", - "ReplicationSubnetGroupIdentifier": "", - "SubnetIds": [ - - ] - }, - "output": { - "ReplicationSubnetGroup": { - } - }, - "comments": { - "input": { - }, - "output": { - } - }, - "description": "Modifies the settings for the specified replication subnet group.", - "id": "modify-replication-subnet-group-1481762275392", - "title": "Modify replication subnet group" - } - ], - "RefreshSchemas": [ - { - "input": { - "EndpointArn": "", - "ReplicationInstanceArn": "" - }, - "output": { - "RefreshSchemasStatus": { - } - }, - "comments": { - "input": { - }, - "output": { - } - }, - "description": "Populates the schema for the specified endpoint. This is an asynchronous operation and can take several minutes. You can check the status of this operation by calling the describe-refresh-schemas-status operation.", - "id": "refresh-schema-1481762399111", - "title": "Refresh schema" - } - ], - "RemoveTagsFromResource": [ - { - "input": { - "ResourceArn": "arn:aws:dms:us-east-1:123456789012:endpoint:ASXWXJZLNWNT5HTWCGV2BUJQ7E", - "TagKeys": [ - - ] - }, - "output": { - }, - "comments": { - "input": { - }, - "output": { - } - }, - "description": "Removes metadata tags from an AWS DMS resource.", - "id": "remove-tags-from-resource-1481762571330", - "title": "Remove tags from resource" - } - ], - "StartReplicationTask": [ - { - "input": { - "CdcStartTime": "2016-12-14T13:33:20Z", - "ReplicationTaskArn": "arn:aws:dms:us-east-1:123456789012:rep:6UTDJGBOUS3VI3SUWA66XFJCJQ", - "StartReplicationTaskType": "start-replication" - }, - "output": { - "ReplicationTask": { - "MigrationType": "full-load", - "ReplicationInstanceArn": "arn:aws:dms:us-east-1:123456789012:rep:6UTDJGBOUS3VI3SUWA66XFJCJQ", - "ReplicationTaskArn": "arn:aws:dms:us-east-1:123456789012:task:OEAMB3NXSTZ6LFYZFEPPBBXPYM", - "ReplicationTaskCreationDate": "2016-12-14T18:25:43Z", - "ReplicationTaskIdentifier": "task1", - "ReplicationTaskSettings": "{\"TargetMetadata\":{\"TargetSchema\":\"\",\"SupportLobs\":true,\"FullLobMode\":true,\"LobChunkSize\":64,\"LimitedSizeLobMode\":false,\"LobMaxSize\":0},\"FullLoadSettings\":{\"FullLoadEnabled\":true,\"ApplyChangesEnabled\":false,\"TargetTablePrepMode\":\"DROP_AND_CREATE\",\"CreatePkAfterFullLoad\":false,\"StopTaskCachedChangesApplied\":false,\"StopTaskCachedChangesNotApplied\":false,\"ResumeEnabled\":false,\"ResumeMinTableSize\":100000,\"ResumeOnlyClusteredPKTables\":true,\"MaxFullLoadSubTasks\":8,\"TransactionConsistencyTimeout\":600,\"CommitRate\":10000},\"Logging\":{\"EnableLogging\":false}}", - "SourceEndpointArn": "arn:aws:dms:us-east-1:123456789012:endpoint:ZW5UAN6P4E77EC7YWHK4RZZ3BE", - "Status": "creating", - "TableMappings": "file://mappingfile.json", - "TargetEndpointArn": "arn:aws:dms:us-east-1:123456789012:endpoint:ASXWXJZLNWNT5HTWCGV2BUJQ7E" - } - }, - "comments": { - "input": { - }, - "output": { - } - }, - "description": "Starts the replication task.", - "id": "start-replication-task-1481762706778", - "title": "Start replication task" - } - ], - "StopReplicationTask": [ - { - "input": { - "ReplicationTaskArn": "arn:aws:dms:us-east-1:123456789012:endpoint:ASXWXJZLNWNT5HTWCGV2BUJQ7E" - }, - "output": { - "ReplicationTask": { - "MigrationType": "full-load", - "ReplicationInstanceArn": "arn:aws:dms:us-east-1:123456789012:rep:6UTDJGBOUS3VI3SUWA66XFJCJQ", - "ReplicationTaskArn": "arn:aws:dms:us-east-1:123456789012:task:OEAMB3NXSTZ6LFYZFEPPBBXPYM", - "ReplicationTaskCreationDate": "2016-12-14T18:25:43Z", - "ReplicationTaskIdentifier": "task1", - "ReplicationTaskSettings": "{\"TargetMetadata\":{\"TargetSchema\":\"\",\"SupportLobs\":true,\"FullLobMode\":true,\"LobChunkSize\":64,\"LimitedSizeLobMode\":false,\"LobMaxSize\":0},\"FullLoadSettings\":{\"FullLoadEnabled\":true,\"ApplyChangesEnabled\":false,\"TargetTablePrepMode\":\"DROP_AND_CREATE\",\"CreatePkAfterFullLoad\":false,\"StopTaskCachedChangesApplied\":false,\"StopTaskCachedChangesNotApplied\":false,\"ResumeEnabled\":false,\"ResumeMinTableSize\":100000,\"ResumeOnlyClusteredPKTables\":true,\"MaxFullLoadSubTasks\":8,\"TransactionConsistencyTimeout\":600,\"CommitRate\":10000},\"Logging\":{\"EnableLogging\":false}}", - "SourceEndpointArn": "arn:aws:dms:us-east-1:123456789012:endpoint:ZW5UAN6P4E77EC7YWHK4RZZ3BE", - "Status": "creating", - "TableMappings": "file://mappingfile.json", - "TargetEndpointArn": "arn:aws:dms:us-east-1:123456789012:endpoint:ASXWXJZLNWNT5HTWCGV2BUJQ7E" - } - }, - "comments": { - "input": { - }, - "output": { - } - }, - "description": "Stops the replication task.", - "id": "stop-replication-task-1481762924947", - "title": "Stop replication task" - } - ], - "TestConnection": [ - { - "input": { - "EndpointArn": "arn:aws:dms:us-east-1:123456789012:endpoint:RAAR3R22XSH46S3PWLC3NJAWKM", - "ReplicationInstanceArn": "arn:aws:dms:us-east-1:123456789012:rep:6UTDJGBOUS3VI3SUWA66XFJCJQ" - }, - "output": { - "Connection": { - } - }, - "comments": { - "input": { - }, - "output": { - } - }, - "description": "Tests the connection between the replication instance and the endpoint.", - "id": "test-conection-1481763017636", - "title": "Test conection" - } - ] - } -} diff --git a/workshops/monte-carlo-on-ec2-spot-fleet/src/web/node_modules/aws-sdk/apis/dms-2016-01-01.min.json b/workshops/monte-carlo-on-ec2-spot-fleet/src/web/node_modules/aws-sdk/apis/dms-2016-01-01.min.json deleted file mode 100644 index 6d2ef460..00000000 --- a/workshops/monte-carlo-on-ec2-spot-fleet/src/web/node_modules/aws-sdk/apis/dms-2016-01-01.min.json +++ /dev/null @@ -1,1491 +0,0 @@ -{ - "version": "2.0", - "metadata": { - "apiVersion": "2016-01-01", - "endpointPrefix": "dms", - "jsonVersion": "1.1", - "protocol": "json", - "serviceFullName": "AWS Database Migration Service", - "signatureVersion": "v4", - "targetPrefix": "AmazonDMSv20160101", - "uid": "dms-2016-01-01" - }, - "operations": { - "AddTagsToResource": { - "input": { - "type": "structure", - "required": [ - "ResourceArn", - "Tags" - ], - "members": { - "ResourceArn": {}, - "Tags": { - "shape": "S3" - } - } - }, - "output": { - "type": "structure", - "members": {} - } - }, - "CreateEndpoint": { - "input": { - "type": "structure", - "required": [ - "EndpointIdentifier", - "EndpointType", - "EngineName" - ], - "members": { - "EndpointIdentifier": {}, - "EndpointType": {}, - "EngineName": {}, - "Username": {}, - "Password": { - "shape": "S8" - }, - "ServerName": {}, - "Port": { - "type": "integer" - }, - "DatabaseName": {}, - "ExtraConnectionAttributes": {}, - "KmsKeyId": {}, - "Tags": { - "shape": "S3" - }, - "CertificateArn": {}, - "SslMode": {}, - "DynamoDbSettings": { - "shape": "Sb" - }, - "S3Settings": { - "shape": "Sc" - }, - "MongoDbSettings": { - "shape": "Se" - } - } - }, - "output": { - "type": "structure", - "members": { - "Endpoint": { - "shape": "Sj" - } - } - } - }, - "CreateEventSubscription": { - "input": { - "type": "structure", - "required": [ - "SubscriptionName", - "SnsTopicArn" - ], - "members": { - "SubscriptionName": {}, - "SnsTopicArn": {}, - "SourceType": {}, - "EventCategories": { - "shape": "Sl" - }, - "SourceIds": { - "shape": "Sm" - }, - "Enabled": { - "type": "boolean" - }, - "Tags": { - "shape": "S3" - } - } - }, - "output": { - "type": "structure", - "members": { - "EventSubscription": { - "shape": "Sp" - } - } - } - }, - "CreateReplicationInstance": { - "input": { - "type": "structure", - "required": [ - "ReplicationInstanceIdentifier", - "ReplicationInstanceClass" - ], - "members": { - "ReplicationInstanceIdentifier": {}, - "AllocatedStorage": { - "type": "integer" - }, - "ReplicationInstanceClass": {}, - "VpcSecurityGroupIds": { - "shape": "Ss" - }, - "AvailabilityZone": {}, - "ReplicationSubnetGroupIdentifier": {}, - "PreferredMaintenanceWindow": {}, - "MultiAZ": { - "type": "boolean" - }, - "EngineVersion": {}, - "AutoMinorVersionUpgrade": { - "type": "boolean" - }, - "Tags": { - "shape": "S3" - }, - "KmsKeyId": {}, - "PubliclyAccessible": { - "type": "boolean" - } - } - }, - "output": { - "type": "structure", - "members": { - "ReplicationInstance": { - "shape": "Su" - } - } - } - }, - "CreateReplicationSubnetGroup": { - "input": { - "type": "structure", - "required": [ - "ReplicationSubnetGroupIdentifier", - "ReplicationSubnetGroupDescription", - "SubnetIds" - ], - "members": { - "ReplicationSubnetGroupIdentifier": {}, - "ReplicationSubnetGroupDescription": {}, - "SubnetIds": { - "shape": "S17" - }, - "Tags": { - "shape": "S3" - } - } - }, - "output": { - "type": "structure", - "members": { - "ReplicationSubnetGroup": { - "shape": "Sz" - } - } - } - }, - "CreateReplicationTask": { - "input": { - "type": "structure", - "required": [ - "ReplicationTaskIdentifier", - "SourceEndpointArn", - "TargetEndpointArn", - "ReplicationInstanceArn", - "MigrationType", - "TableMappings" - ], - "members": { - "ReplicationTaskIdentifier": {}, - "SourceEndpointArn": {}, - "TargetEndpointArn": {}, - "ReplicationInstanceArn": {}, - "MigrationType": {}, - "TableMappings": {}, - "ReplicationTaskSettings": {}, - "CdcStartTime": { - "type": "timestamp" - }, - "Tags": { - "shape": "S3" - } - } - }, - "output": { - "type": "structure", - "members": { - "ReplicationTask": { - "shape": "S1c" - } - } - } - }, - "DeleteCertificate": { - "input": { - "type": "structure", - "required": [ - "CertificateArn" - ], - "members": { - "CertificateArn": {} - } - }, - "output": { - "type": "structure", - "members": { - "Certificate": { - "shape": "S1h" - } - } - } - }, - "DeleteEndpoint": { - "input": { - "type": "structure", - "required": [ - "EndpointArn" - ], - "members": { - "EndpointArn": {} - } - }, - "output": { - "type": "structure", - "members": { - "Endpoint": { - "shape": "Sj" - } - } - } - }, - "DeleteEventSubscription": { - "input": { - "type": "structure", - "required": [ - "SubscriptionName" - ], - "members": { - "SubscriptionName": {} - } - }, - "output": { - "type": "structure", - "members": { - "EventSubscription": { - "shape": "Sp" - } - } - } - }, - "DeleteReplicationInstance": { - "input": { - "type": "structure", - "required": [ - "ReplicationInstanceArn" - ], - "members": { - "ReplicationInstanceArn": {} - } - }, - "output": { - "type": "structure", - "members": { - "ReplicationInstance": { - "shape": "Su" - } - } - } - }, - "DeleteReplicationSubnetGroup": { - "input": { - "type": "structure", - "required": [ - "ReplicationSubnetGroupIdentifier" - ], - "members": { - "ReplicationSubnetGroupIdentifier": {} - } - }, - "output": { - "type": "structure", - "members": {} - } - }, - "DeleteReplicationTask": { - "input": { - "type": "structure", - "required": [ - "ReplicationTaskArn" - ], - "members": { - "ReplicationTaskArn": {} - } - }, - "output": { - "type": "structure", - "members": { - "ReplicationTask": { - "shape": "S1c" - } - } - } - }, - "DescribeAccountAttributes": { - "input": { - "type": "structure", - "members": {} - }, - "output": { - "type": "structure", - "members": { - "AccountQuotas": { - "type": "list", - "member": { - "locationName": "AccountQuota", - "type": "structure", - "members": { - "AccountQuotaName": {}, - "Used": { - "type": "long" - }, - "Max": { - "type": "long" - } - } - } - } - } - } - }, - "DescribeCertificates": { - "input": { - "type": "structure", - "members": { - "Filters": { - "shape": "S1y" - }, - "MaxRecords": { - "type": "integer" - }, - "Marker": {} - } - }, - "output": { - "type": "structure", - "members": { - "Marker": {}, - "Certificates": { - "type": "list", - "member": { - "shape": "S1h", - "locationName": "Certificate" - } - } - } - } - }, - "DescribeConnections": { - "input": { - "type": "structure", - "members": { - "Filters": { - "shape": "S1y" - }, - "MaxRecords": { - "type": "integer" - }, - "Marker": {} - } - }, - "output": { - "type": "structure", - "members": { - "Marker": {}, - "Connections": { - "type": "list", - "member": { - "shape": "S26", - "locationName": "Connection" - } - } - } - } - }, - "DescribeEndpointTypes": { - "input": { - "type": "structure", - "members": { - "Filters": { - "shape": "S1y" - }, - "MaxRecords": { - "type": "integer" - }, - "Marker": {} - } - }, - "output": { - "type": "structure", - "members": { - "Marker": {}, - "SupportedEndpointTypes": { - "type": "list", - "member": { - "locationName": "SupportedEndpointType", - "type": "structure", - "members": { - "EngineName": {}, - "SupportsCDC": { - "type": "boolean" - }, - "EndpointType": {} - } - } - } - } - } - }, - "DescribeEndpoints": { - "input": { - "type": "structure", - "members": { - "Filters": { - "shape": "S1y" - }, - "MaxRecords": { - "type": "integer" - }, - "Marker": {} - } - }, - "output": { - "type": "structure", - "members": { - "Marker": {}, - "Endpoints": { - "type": "list", - "member": { - "shape": "Sj", - "locationName": "Endpoint" - } - } - } - } - }, - "DescribeEventCategories": { - "input": { - "type": "structure", - "members": { - "SourceType": {}, - "Filters": { - "shape": "S1y" - } - } - }, - "output": { - "type": "structure", - "members": { - "EventCategoryGroupList": { - "type": "list", - "member": { - "locationName": "EventCategoryGroup", - "type": "structure", - "members": { - "SourceType": {}, - "EventCategories": { - "shape": "Sl" - } - } - } - } - } - } - }, - "DescribeEventSubscriptions": { - "input": { - "type": "structure", - "members": { - "SubscriptionName": {}, - "Filters": { - "shape": "S1y" - }, - "MaxRecords": { - "type": "integer" - }, - "Marker": {} - } - }, - "output": { - "type": "structure", - "members": { - "Marker": {}, - "EventSubscriptionsList": { - "type": "list", - "member": { - "shape": "Sp", - "locationName": "EventSubscription" - } - } - } - } - }, - "DescribeEvents": { - "input": { - "type": "structure", - "members": { - "SourceIdentifier": {}, - "SourceType": {}, - "StartTime": { - "type": "timestamp" - }, - "EndTime": { - "type": "timestamp" - }, - "Duration": { - "type": "integer" - }, - "EventCategories": { - "shape": "Sl" - }, - "Filters": { - "shape": "S1y" - }, - "MaxRecords": { - "type": "integer" - }, - "Marker": {} - } - }, - "output": { - "type": "structure", - "members": { - "Marker": {}, - "Events": { - "type": "list", - "member": { - "locationName": "Event", - "type": "structure", - "members": { - "SourceIdentifier": {}, - "SourceType": {}, - "Message": {}, - "EventCategories": { - "shape": "Sl" - }, - "Date": { - "type": "timestamp" - } - } - } - } - } - } - }, - "DescribeOrderableReplicationInstances": { - "input": { - "type": "structure", - "members": { - "MaxRecords": { - "type": "integer" - }, - "Marker": {} - } - }, - "output": { - "type": "structure", - "members": { - "OrderableReplicationInstances": { - "type": "list", - "member": { - "locationName": "OrderableReplicationInstance", - "type": "structure", - "members": { - "EngineVersion": {}, - "ReplicationInstanceClass": {}, - "StorageType": {}, - "MinAllocatedStorage": { - "type": "integer" - }, - "MaxAllocatedStorage": { - "type": "integer" - }, - "DefaultAllocatedStorage": { - "type": "integer" - }, - "IncludedAllocatedStorage": { - "type": "integer" - } - } - } - }, - "Marker": {} - } - } - }, - "DescribeRefreshSchemasStatus": { - "input": { - "type": "structure", - "required": [ - "EndpointArn" - ], - "members": { - "EndpointArn": {} - } - }, - "output": { - "type": "structure", - "members": { - "RefreshSchemasStatus": { - "shape": "S2w" - } - } - } - }, - "DescribeReplicationInstances": { - "input": { - "type": "structure", - "members": { - "Filters": { - "shape": "S1y" - }, - "MaxRecords": { - "type": "integer" - }, - "Marker": {} - } - }, - "output": { - "type": "structure", - "members": { - "Marker": {}, - "ReplicationInstances": { - "type": "list", - "member": { - "shape": "Su", - "locationName": "ReplicationInstance" - } - } - } - } - }, - "DescribeReplicationSubnetGroups": { - "input": { - "type": "structure", - "members": { - "Filters": { - "shape": "S1y" - }, - "MaxRecords": { - "type": "integer" - }, - "Marker": {} - } - }, - "output": { - "type": "structure", - "members": { - "Marker": {}, - "ReplicationSubnetGroups": { - "type": "list", - "member": { - "shape": "Sz", - "locationName": "ReplicationSubnetGroup" - } - } - } - } - }, - "DescribeReplicationTasks": { - "input": { - "type": "structure", - "members": { - "Filters": { - "shape": "S1y" - }, - "MaxRecords": { - "type": "integer" - }, - "Marker": {} - } - }, - "output": { - "type": "structure", - "members": { - "Marker": {}, - "ReplicationTasks": { - "type": "list", - "member": { - "shape": "S1c", - "locationName": "ReplicationTask" - } - } - } - } - }, - "DescribeSchemas": { - "input": { - "type": "structure", - "required": [ - "EndpointArn" - ], - "members": { - "EndpointArn": {}, - "MaxRecords": { - "type": "integer" - }, - "Marker": {} - } - }, - "output": { - "type": "structure", - "members": { - "Marker": {}, - "Schemas": { - "type": "list", - "member": {} - } - } - } - }, - "DescribeTableStatistics": { - "input": { - "type": "structure", - "required": [ - "ReplicationTaskArn" - ], - "members": { - "ReplicationTaskArn": {}, - "MaxRecords": { - "type": "integer" - }, - "Marker": {}, - "Filters": { - "shape": "S1y" - } - } - }, - "output": { - "type": "structure", - "members": { - "ReplicationTaskArn": {}, - "TableStatistics": { - "type": "list", - "member": { - "type": "structure", - "members": { - "SchemaName": {}, - "TableName": {}, - "Inserts": { - "type": "long" - }, - "Deletes": { - "type": "long" - }, - "Updates": { - "type": "long" - }, - "Ddls": { - "type": "long" - }, - "FullLoadRows": { - "type": "long" - }, - "FullLoadCondtnlChkFailedRows": { - "type": "long" - }, - "FullLoadErrorRows": { - "type": "long" - }, - "LastUpdateTime": { - "type": "timestamp" - }, - "TableState": {} - } - } - }, - "Marker": {} - } - } - }, - "ImportCertificate": { - "input": { - "type": "structure", - "required": [ - "CertificateIdentifier" - ], - "members": { - "CertificateIdentifier": {}, - "CertificatePem": {}, - "CertificateWallet": { - "type": "blob" - }, - "Tags": { - "shape": "S3" - } - } - }, - "output": { - "type": "structure", - "members": { - "Certificate": { - "shape": "S1h" - } - } - } - }, - "ListTagsForResource": { - "input": { - "type": "structure", - "required": [ - "ResourceArn" - ], - "members": { - "ResourceArn": {} - } - }, - "output": { - "type": "structure", - "members": { - "TagList": { - "shape": "S3" - } - } - } - }, - "ModifyEndpoint": { - "input": { - "type": "structure", - "required": [ - "EndpointArn" - ], - "members": { - "EndpointArn": {}, - "EndpointIdentifier": {}, - "EndpointType": {}, - "EngineName": {}, - "Username": {}, - "Password": { - "shape": "S8" - }, - "ServerName": {}, - "Port": { - "type": "integer" - }, - "DatabaseName": {}, - "ExtraConnectionAttributes": {}, - "CertificateArn": {}, - "SslMode": {}, - "DynamoDbSettings": { - "shape": "Sb" - }, - "S3Settings": { - "shape": "Sc" - }, - "MongoDbSettings": { - "shape": "Se" - } - } - }, - "output": { - "type": "structure", - "members": { - "Endpoint": { - "shape": "Sj" - } - } - } - }, - "ModifyEventSubscription": { - "input": { - "type": "structure", - "required": [ - "SubscriptionName" - ], - "members": { - "SubscriptionName": {}, - "SnsTopicArn": {}, - "SourceType": {}, - "EventCategories": { - "shape": "Sl" - }, - "Enabled": { - "type": "boolean" - } - } - }, - "output": { - "type": "structure", - "members": { - "EventSubscription": { - "shape": "Sp" - } - } - } - }, - "ModifyReplicationInstance": { - "input": { - "type": "structure", - "required": [ - "ReplicationInstanceArn" - ], - "members": { - "ReplicationInstanceArn": {}, - "AllocatedStorage": { - "type": "integer" - }, - "ApplyImmediately": { - "type": "boolean" - }, - "ReplicationInstanceClass": {}, - "VpcSecurityGroupIds": { - "shape": "Ss" - }, - "PreferredMaintenanceWindow": {}, - "MultiAZ": { - "type": "boolean" - }, - "EngineVersion": {}, - "AllowMajorVersionUpgrade": { - "type": "boolean" - }, - "AutoMinorVersionUpgrade": { - "type": "boolean" - }, - "ReplicationInstanceIdentifier": {} - } - }, - "output": { - "type": "structure", - "members": { - "ReplicationInstance": { - "shape": "Su" - } - } - } - }, - "ModifyReplicationSubnetGroup": { - "input": { - "type": "structure", - "required": [ - "ReplicationSubnetGroupIdentifier", - "SubnetIds" - ], - "members": { - "ReplicationSubnetGroupIdentifier": {}, - "ReplicationSubnetGroupDescription": {}, - "SubnetIds": { - "shape": "S17" - } - } - }, - "output": { - "type": "structure", - "members": { - "ReplicationSubnetGroup": { - "shape": "Sz" - } - } - } - }, - "ModifyReplicationTask": { - "input": { - "type": "structure", - "required": [ - "ReplicationTaskArn" - ], - "members": { - "ReplicationTaskArn": {}, - "ReplicationTaskIdentifier": {}, - "MigrationType": {}, - "TableMappings": {}, - "ReplicationTaskSettings": {}, - "CdcStartTime": { - "type": "timestamp" - } - } - }, - "output": { - "type": "structure", - "members": { - "ReplicationTask": { - "shape": "S1c" - } - } - } - }, - "RefreshSchemas": { - "input": { - "type": "structure", - "required": [ - "EndpointArn", - "ReplicationInstanceArn" - ], - "members": { - "EndpointArn": {}, - "ReplicationInstanceArn": {} - } - }, - "output": { - "type": "structure", - "members": { - "RefreshSchemasStatus": { - "shape": "S2w" - } - } - } - }, - "ReloadTables": { - "input": { - "type": "structure", - "required": [ - "ReplicationTaskArn", - "TablesToReload" - ], - "members": { - "ReplicationTaskArn": {}, - "TablesToReload": { - "type": "list", - "member": { - "type": "structure", - "members": { - "SchemaName": {}, - "TableName": {} - } - } - } - } - }, - "output": { - "type": "structure", - "members": { - "ReplicationTaskArn": {} - } - } - }, - "RemoveTagsFromResource": { - "input": { - "type": "structure", - "required": [ - "ResourceArn", - "TagKeys" - ], - "members": { - "ResourceArn": {}, - "TagKeys": { - "type": "list", - "member": {} - } - } - }, - "output": { - "type": "structure", - "members": {} - } - }, - "StartReplicationTask": { - "input": { - "type": "structure", - "required": [ - "ReplicationTaskArn", - "StartReplicationTaskType" - ], - "members": { - "ReplicationTaskArn": {}, - "StartReplicationTaskType": {}, - "CdcStartTime": { - "type": "timestamp" - } - } - }, - "output": { - "type": "structure", - "members": { - "ReplicationTask": { - "shape": "S1c" - } - } - } - }, - "StopReplicationTask": { - "input": { - "type": "structure", - "required": [ - "ReplicationTaskArn" - ], - "members": { - "ReplicationTaskArn": {} - } - }, - "output": { - "type": "structure", - "members": { - "ReplicationTask": { - "shape": "S1c" - } - } - } - }, - "TestConnection": { - "input": { - "type": "structure", - "required": [ - "ReplicationInstanceArn", - "EndpointArn" - ], - "members": { - "ReplicationInstanceArn": {}, - "EndpointArn": {} - } - }, - "output": { - "type": "structure", - "members": { - "Connection": { - "shape": "S26" - } - } - } - } - }, - "shapes": { - "S3": { - "type": "list", - "member": { - "locationName": "Tag", - "type": "structure", - "members": { - "Key": {}, - "Value": {} - } - } - }, - "S8": { - "type": "string", - "sensitive": true - }, - "Sb": { - "type": "structure", - "required": [ - "ServiceAccessRoleArn" - ], - "members": { - "ServiceAccessRoleArn": {} - } - }, - "Sc": { - "type": "structure", - "members": { - "ServiceAccessRoleArn": {}, - "ExternalTableDefinition": {}, - "CsvRowDelimiter": {}, - "CsvDelimiter": {}, - "BucketFolder": {}, - "BucketName": {}, - "CompressionType": {} - } - }, - "Se": { - "type": "structure", - "members": { - "Username": {}, - "Password": { - "shape": "S8" - }, - "ServerName": {}, - "Port": { - "type": "integer" - }, - "DatabaseName": {}, - "AuthType": {}, - "AuthMechanism": {}, - "NestingLevel": {}, - "ExtractDocId": {}, - "DocsToInvestigate": {}, - "AuthSource": {} - } - }, - "Sj": { - "type": "structure", - "members": { - "EndpointIdentifier": {}, - "EndpointType": {}, - "EngineName": {}, - "Username": {}, - "ServerName": {}, - "Port": { - "type": "integer" - }, - "DatabaseName": {}, - "ExtraConnectionAttributes": {}, - "Status": {}, - "KmsKeyId": {}, - "EndpointArn": {}, - "CertificateArn": {}, - "SslMode": {}, - "ExternalId": {}, - "DynamoDbSettings": { - "shape": "Sb" - }, - "S3Settings": { - "shape": "Sc" - }, - "MongoDbSettings": { - "shape": "Se" - } - } - }, - "Sl": { - "type": "list", - "member": { - "locationName": "EventCategory" - } - }, - "Sm": { - "type": "list", - "member": { - "locationName": "SourceId" - } - }, - "Sp": { - "type": "structure", - "members": { - "CustomerAwsId": {}, - "CustSubscriptionId": {}, - "SnsTopicArn": {}, - "Status": {}, - "SubscriptionCreationTime": {}, - "SourceType": {}, - "SourceIdsList": { - "shape": "Sm" - }, - "EventCategoriesList": { - "shape": "Sl" - }, - "Enabled": { - "type": "boolean" - } - } - }, - "Ss": { - "type": "list", - "member": { - "locationName": "VpcSecurityGroupId" - } - }, - "Su": { - "type": "structure", - "members": { - "ReplicationInstanceIdentifier": {}, - "ReplicationInstanceClass": {}, - "ReplicationInstanceStatus": {}, - "AllocatedStorage": { - "type": "integer" - }, - "InstanceCreateTime": { - "type": "timestamp" - }, - "VpcSecurityGroups": { - "type": "list", - "member": { - "locationName": "VpcSecurityGroupMembership", - "type": "structure", - "members": { - "VpcSecurityGroupId": {}, - "Status": {} - } - } - }, - "AvailabilityZone": {}, - "ReplicationSubnetGroup": { - "shape": "Sz" - }, - "PreferredMaintenanceWindow": {}, - "PendingModifiedValues": { - "type": "structure", - "members": { - "ReplicationInstanceClass": {}, - "AllocatedStorage": { - "type": "integer" - }, - "MultiAZ": { - "type": "boolean" - }, - "EngineVersion": {} - } - }, - "MultiAZ": { - "type": "boolean" - }, - "EngineVersion": {}, - "AutoMinorVersionUpgrade": { - "type": "boolean" - }, - "KmsKeyId": {}, - "ReplicationInstanceArn": {}, - "ReplicationInstancePublicIpAddress": { - "deprecated": true - }, - "ReplicationInstancePrivateIpAddress": { - "deprecated": true - }, - "ReplicationInstancePublicIpAddresses": { - "type": "list", - "member": {} - }, - "ReplicationInstancePrivateIpAddresses": { - "type": "list", - "member": {} - }, - "PubliclyAccessible": { - "type": "boolean" - }, - "SecondaryAvailabilityZone": {} - } - }, - "Sz": { - "type": "structure", - "members": { - "ReplicationSubnetGroupIdentifier": {}, - "ReplicationSubnetGroupDescription": {}, - "VpcId": {}, - "SubnetGroupStatus": {}, - "Subnets": { - "type": "list", - "member": { - "locationName": "Subnet", - "type": "structure", - "members": { - "SubnetIdentifier": {}, - "SubnetAvailabilityZone": { - "type": "structure", - "members": { - "Name": {} - } - }, - "SubnetStatus": {} - } - } - } - } - }, - "S17": { - "type": "list", - "member": { - "locationName": "SubnetIdentifier" - } - }, - "S1c": { - "type": "structure", - "members": { - "ReplicationTaskIdentifier": {}, - "SourceEndpointArn": {}, - "TargetEndpointArn": {}, - "ReplicationInstanceArn": {}, - "MigrationType": {}, - "TableMappings": {}, - "ReplicationTaskSettings": {}, - "Status": {}, - "LastFailureMessage": {}, - "StopReason": {}, - "ReplicationTaskCreationDate": { - "type": "timestamp" - }, - "ReplicationTaskStartDate": { - "type": "timestamp" - }, - "ReplicationTaskArn": {}, - "ReplicationTaskStats": { - "type": "structure", - "members": { - "FullLoadProgressPercent": { - "type": "integer" - }, - "ElapsedTimeMillis": { - "type": "long" - }, - "TablesLoaded": { - "type": "integer" - }, - "TablesLoading": { - "type": "integer" - }, - "TablesQueued": { - "type": "integer" - }, - "TablesErrored": { - "type": "integer" - } - } - } - } - }, - "S1h": { - "type": "structure", - "members": { - "CertificateIdentifier": {}, - "CertificateCreationDate": { - "type": "timestamp" - }, - "CertificatePem": {}, - "CertificateWallet": { - "type": "blob" - }, - "CertificateArn": {}, - "CertificateOwner": {}, - "ValidFromDate": { - "type": "timestamp" - }, - "ValidToDate": { - "type": "timestamp" - }, - "SigningAlgorithm": {}, - "KeyLength": { - "type": "integer" - } - } - }, - "S1y": { - "type": "list", - "member": { - "locationName": "Filter", - "type": "structure", - "required": [ - "Name", - "Values" - ], - "members": { - "Name": {}, - "Values": { - "type": "list", - "member": { - "locationName": "Value" - } - } - } - } - }, - "S26": { - "type": "structure", - "members": { - "ReplicationInstanceArn": {}, - "EndpointArn": {}, - "Status": {}, - "LastFailureMessage": {}, - "EndpointIdentifier": {}, - "ReplicationInstanceIdentifier": {} - } - }, - "S2w": { - "type": "structure", - "members": { - "EndpointArn": {}, - "ReplicationInstanceArn": {}, - "Status": {}, - "LastRefreshDate": { - "type": "timestamp" - }, - "LastFailureMessage": {} - } - } - } -} \ No newline at end of file diff --git a/workshops/monte-carlo-on-ec2-spot-fleet/src/web/node_modules/aws-sdk/apis/dms-2016-01-01.paginators.json b/workshops/monte-carlo-on-ec2-spot-fleet/src/web/node_modules/aws-sdk/apis/dms-2016-01-01.paginators.json deleted file mode 100644 index dd79c616..00000000 --- a/workshops/monte-carlo-on-ec2-spot-fleet/src/web/node_modules/aws-sdk/apis/dms-2016-01-01.paginators.json +++ /dev/null @@ -1,64 +0,0 @@ -{ - "pagination": { - "DescribeCertificates": { - "input_token": "Marker", - "output_token": "Marker", - "limit_key": "MaxRecords" - }, - "DescribeConnections": { - "input_token": "Marker", - "output_token": "Marker", - "limit_key": "MaxRecords" - }, - "DescribeEndpointTypes": { - "input_token": "Marker", - "output_token": "Marker", - "limit_key": "MaxRecords" - }, - "DescribeEndpoints": { - "input_token": "Marker", - "output_token": "Marker", - "limit_key": "MaxRecords" - }, - "DescribeEventSubscriptions": { - "input_token": "Marker", - "output_token": "Marker", - "limit_key": "MaxRecords" - }, - "DescribeEvents": { - "input_token": "Marker", - "output_token": "Marker", - "limit_key": "MaxRecords" - }, - "DescribeOrderableReplicationInstances": { - "input_token": "Marker", - "output_token": "Marker", - "limit_key": "MaxRecords" - }, - "DescribeReplicationInstances": { - "input_token": "Marker", - "output_token": "Marker", - "limit_key": "MaxRecords" - }, - "DescribeReplicationSubnetGroups": { - "input_token": "Marker", - "output_token": "Marker", - "limit_key": "MaxRecords" - }, - "DescribeReplicationTasks": { - "input_token": "Marker", - "output_token": "Marker", - "limit_key": "MaxRecords" - }, - "DescribeSchemas": { - "input_token": "Marker", - "output_token": "Marker", - "limit_key": "MaxRecords" - }, - "DescribeTableStatistics": { - "input_token": "Marker", - "output_token": "Marker", - "limit_key": "MaxRecords" - } - } -} diff --git a/workshops/monte-carlo-on-ec2-spot-fleet/src/web/node_modules/aws-sdk/apis/ds-2015-04-16.examples.json b/workshops/monte-carlo-on-ec2-spot-fleet/src/web/node_modules/aws-sdk/apis/ds-2015-04-16.examples.json deleted file mode 100644 index 0ea7e3b0..00000000 --- a/workshops/monte-carlo-on-ec2-spot-fleet/src/web/node_modules/aws-sdk/apis/ds-2015-04-16.examples.json +++ /dev/null @@ -1,5 +0,0 @@ -{ - "version": "1.0", - "examples": { - } -} diff --git a/workshops/monte-carlo-on-ec2-spot-fleet/src/web/node_modules/aws-sdk/apis/ds-2015-04-16.min.json b/workshops/monte-carlo-on-ec2-spot-fleet/src/web/node_modules/aws-sdk/apis/ds-2015-04-16.min.json deleted file mode 100644 index 4cb65eee..00000000 --- a/workshops/monte-carlo-on-ec2-spot-fleet/src/web/node_modules/aws-sdk/apis/ds-2015-04-16.min.json +++ /dev/null @@ -1,1185 +0,0 @@ -{ - "version": "2.0", - "metadata": { - "apiVersion": "2015-04-16", - "endpointPrefix": "ds", - "jsonVersion": "1.1", - "protocol": "json", - "serviceAbbreviation": "Directory Service", - "serviceFullName": "AWS Directory Service", - "signatureVersion": "v4", - "targetPrefix": "DirectoryService_20150416", - "uid": "ds-2015-04-16" - }, - "operations": { - "AddIpRoutes": { - "input": { - "type": "structure", - "required": [ - "DirectoryId", - "IpRoutes" - ], - "members": { - "DirectoryId": {}, - "IpRoutes": { - "type": "list", - "member": { - "type": "structure", - "members": { - "CidrIp": {}, - "Description": {} - } - } - }, - "UpdateSecurityGroupForDirectoryControllers": { - "type": "boolean" - } - } - }, - "output": { - "type": "structure", - "members": {} - } - }, - "AddTagsToResource": { - "input": { - "type": "structure", - "required": [ - "ResourceId", - "Tags" - ], - "members": { - "ResourceId": {}, - "Tags": { - "shape": "Sb" - } - } - }, - "output": { - "type": "structure", - "members": {} - } - }, - "CancelSchemaExtension": { - "input": { - "type": "structure", - "required": [ - "DirectoryId", - "SchemaExtensionId" - ], - "members": { - "DirectoryId": {}, - "SchemaExtensionId": {} - } - }, - "output": { - "type": "structure", - "members": {} - } - }, - "ConnectDirectory": { - "input": { - "type": "structure", - "required": [ - "Name", - "Password", - "Size", - "ConnectSettings" - ], - "members": { - "Name": {}, - "ShortName": {}, - "Password": { - "shape": "Sm" - }, - "Description": {}, - "Size": {}, - "ConnectSettings": { - "type": "structure", - "required": [ - "VpcId", - "SubnetIds", - "CustomerDnsIps", - "CustomerUserName" - ], - "members": { - "VpcId": {}, - "SubnetIds": { - "shape": "Sq" - }, - "CustomerDnsIps": { - "shape": "Ss" - }, - "CustomerUserName": {} - } - } - } - }, - "output": { - "type": "structure", - "members": { - "DirectoryId": {} - } - } - }, - "CreateAlias": { - "input": { - "type": "structure", - "required": [ - "DirectoryId", - "Alias" - ], - "members": { - "DirectoryId": {}, - "Alias": {} - } - }, - "output": { - "type": "structure", - "members": { - "DirectoryId": {}, - "Alias": {} - } - } - }, - "CreateComputer": { - "input": { - "type": "structure", - "required": [ - "DirectoryId", - "ComputerName", - "Password" - ], - "members": { - "DirectoryId": {}, - "ComputerName": {}, - "Password": { - "type": "string", - "sensitive": true - }, - "OrganizationalUnitDistinguishedName": {}, - "ComputerAttributes": { - "shape": "S13" - } - } - }, - "output": { - "type": "structure", - "members": { - "Computer": { - "type": "structure", - "members": { - "ComputerId": {}, - "ComputerName": {}, - "ComputerAttributes": { - "shape": "S13" - } - } - } - } - } - }, - "CreateConditionalForwarder": { - "input": { - "type": "structure", - "required": [ - "DirectoryId", - "RemoteDomainName", - "DnsIpAddrs" - ], - "members": { - "DirectoryId": {}, - "RemoteDomainName": {}, - "DnsIpAddrs": { - "shape": "Ss" - } - } - }, - "output": { - "type": "structure", - "members": {} - } - }, - "CreateDirectory": { - "input": { - "type": "structure", - "required": [ - "Name", - "Password", - "Size" - ], - "members": { - "Name": {}, - "ShortName": {}, - "Password": { - "shape": "S1e" - }, - "Description": {}, - "Size": {}, - "VpcSettings": { - "shape": "S1f" - } - } - }, - "output": { - "type": "structure", - "members": { - "DirectoryId": {} - } - } - }, - "CreateMicrosoftAD": { - "input": { - "type": "structure", - "required": [ - "Name", - "Password", - "VpcSettings" - ], - "members": { - "Name": {}, - "ShortName": {}, - "Password": { - "shape": "S1e" - }, - "Description": {}, - "VpcSettings": { - "shape": "S1f" - } - } - }, - "output": { - "type": "structure", - "members": { - "DirectoryId": {} - } - } - }, - "CreateSnapshot": { - "input": { - "type": "structure", - "required": [ - "DirectoryId" - ], - "members": { - "DirectoryId": {}, - "Name": {} - } - }, - "output": { - "type": "structure", - "members": { - "SnapshotId": {} - } - } - }, - "CreateTrust": { - "input": { - "type": "structure", - "required": [ - "DirectoryId", - "RemoteDomainName", - "TrustPassword", - "TrustDirection" - ], - "members": { - "DirectoryId": {}, - "RemoteDomainName": {}, - "TrustPassword": { - "type": "string", - "sensitive": true - }, - "TrustDirection": {}, - "TrustType": {}, - "ConditionalForwarderIpAddrs": { - "shape": "Ss" - } - } - }, - "output": { - "type": "structure", - "members": { - "TrustId": {} - } - } - }, - "DeleteConditionalForwarder": { - "input": { - "type": "structure", - "required": [ - "DirectoryId", - "RemoteDomainName" - ], - "members": { - "DirectoryId": {}, - "RemoteDomainName": {} - } - }, - "output": { - "type": "structure", - "members": {} - } - }, - "DeleteDirectory": { - "input": { - "type": "structure", - "required": [ - "DirectoryId" - ], - "members": { - "DirectoryId": {} - } - }, - "output": { - "type": "structure", - "members": { - "DirectoryId": {} - } - } - }, - "DeleteSnapshot": { - "input": { - "type": "structure", - "required": [ - "SnapshotId" - ], - "members": { - "SnapshotId": {} - } - }, - "output": { - "type": "structure", - "members": { - "SnapshotId": {} - } - } - }, - "DeleteTrust": { - "input": { - "type": "structure", - "required": [ - "TrustId" - ], - "members": { - "TrustId": {}, - "DeleteAssociatedConditionalForwarder": { - "type": "boolean" - } - } - }, - "output": { - "type": "structure", - "members": { - "TrustId": {} - } - } - }, - "DeregisterEventTopic": { - "input": { - "type": "structure", - "required": [ - "DirectoryId", - "TopicName" - ], - "members": { - "DirectoryId": {}, - "TopicName": {} - } - }, - "output": { - "type": "structure", - "members": {} - } - }, - "DescribeConditionalForwarders": { - "input": { - "type": "structure", - "required": [ - "DirectoryId" - ], - "members": { - "DirectoryId": {}, - "RemoteDomainNames": { - "type": "list", - "member": {} - } - } - }, - "output": { - "type": "structure", - "members": { - "ConditionalForwarders": { - "type": "list", - "member": { - "type": "structure", - "members": { - "RemoteDomainName": {}, - "DnsIpAddrs": { - "shape": "Ss" - }, - "ReplicationScope": {} - } - } - } - } - } - }, - "DescribeDirectories": { - "input": { - "type": "structure", - "members": { - "DirectoryIds": { - "type": "list", - "member": {} - }, - "NextToken": {}, - "Limit": { - "type": "integer" - } - } - }, - "output": { - "type": "structure", - "members": { - "DirectoryDescriptions": { - "type": "list", - "member": { - "type": "structure", - "members": { - "DirectoryId": {}, - "Name": {}, - "ShortName": {}, - "Size": {}, - "Alias": {}, - "AccessUrl": {}, - "Description": {}, - "DnsIpAddrs": { - "shape": "Ss" - }, - "Stage": {}, - "LaunchTime": { - "type": "timestamp" - }, - "StageLastUpdatedDateTime": { - "type": "timestamp" - }, - "Type": {}, - "VpcSettings": { - "type": "structure", - "members": { - "VpcId": {}, - "SubnetIds": { - "shape": "Sq" - }, - "SecurityGroupId": {}, - "AvailabilityZones": { - "shape": "S2p" - } - } - }, - "ConnectSettings": { - "type": "structure", - "members": { - "VpcId": {}, - "SubnetIds": { - "shape": "Sq" - }, - "CustomerUserName": {}, - "SecurityGroupId": {}, - "AvailabilityZones": { - "shape": "S2p" - }, - "ConnectIps": { - "type": "list", - "member": {} - } - } - }, - "RadiusSettings": { - "shape": "S2t" - }, - "RadiusStatus": {}, - "StageReason": {}, - "SsoEnabled": { - "type": "boolean" - }, - "DesiredNumberOfDomainControllers": { - "type": "integer" - } - } - } - }, - "NextToken": {} - } - } - }, - "DescribeDomainControllers": { - "input": { - "type": "structure", - "required": [ - "DirectoryId" - ], - "members": { - "DirectoryId": {}, - "DomainControllerIds": { - "type": "list", - "member": {} - }, - "NextToken": {}, - "Limit": { - "type": "integer" - } - } - }, - "output": { - "type": "structure", - "members": { - "DomainControllers": { - "type": "list", - "member": { - "type": "structure", - "members": { - "DirectoryId": {}, - "DomainControllerId": {}, - "DnsIpAddr": {}, - "VpcId": {}, - "SubnetId": {}, - "AvailabilityZone": {}, - "Status": {}, - "StatusReason": {}, - "LaunchTime": { - "type": "timestamp" - }, - "StatusLastUpdatedDateTime": { - "type": "timestamp" - } - } - } - }, - "NextToken": {} - } - } - }, - "DescribeEventTopics": { - "input": { - "type": "structure", - "members": { - "DirectoryId": {}, - "TopicNames": { - "type": "list", - "member": {} - } - } - }, - "output": { - "type": "structure", - "members": { - "EventTopics": { - "type": "list", - "member": { - "type": "structure", - "members": { - "DirectoryId": {}, - "TopicName": {}, - "TopicArn": {}, - "CreatedDateTime": { - "type": "timestamp" - }, - "Status": {} - } - } - } - } - } - }, - "DescribeSnapshots": { - "input": { - "type": "structure", - "members": { - "DirectoryId": {}, - "SnapshotIds": { - "type": "list", - "member": {} - }, - "NextToken": {}, - "Limit": { - "type": "integer" - } - } - }, - "output": { - "type": "structure", - "members": { - "Snapshots": { - "type": "list", - "member": { - "type": "structure", - "members": { - "DirectoryId": {}, - "SnapshotId": {}, - "Type": {}, - "Name": {}, - "Status": {}, - "StartTime": { - "type": "timestamp" - } - } - } - }, - "NextToken": {} - } - } - }, - "DescribeTrusts": { - "input": { - "type": "structure", - "members": { - "DirectoryId": {}, - "TrustIds": { - "type": "list", - "member": {} - }, - "NextToken": {}, - "Limit": { - "type": "integer" - } - } - }, - "output": { - "type": "structure", - "members": { - "Trusts": { - "type": "list", - "member": { - "type": "structure", - "members": { - "DirectoryId": {}, - "TrustId": {}, - "RemoteDomainName": {}, - "TrustType": {}, - "TrustDirection": {}, - "TrustState": {}, - "CreatedDateTime": { - "type": "timestamp" - }, - "LastUpdatedDateTime": { - "type": "timestamp" - }, - "StateLastUpdatedDateTime": { - "type": "timestamp" - }, - "TrustStateReason": {} - } - } - }, - "NextToken": {} - } - } - }, - "DisableRadius": { - "input": { - "type": "structure", - "required": [ - "DirectoryId" - ], - "members": { - "DirectoryId": {} - } - }, - "output": { - "type": "structure", - "members": {} - } - }, - "DisableSso": { - "input": { - "type": "structure", - "required": [ - "DirectoryId" - ], - "members": { - "DirectoryId": {}, - "UserName": {}, - "Password": { - "shape": "Sm" - } - } - }, - "output": { - "type": "structure", - "members": {} - } - }, - "EnableRadius": { - "input": { - "type": "structure", - "required": [ - "DirectoryId", - "RadiusSettings" - ], - "members": { - "DirectoryId": {}, - "RadiusSettings": { - "shape": "S2t" - } - } - }, - "output": { - "type": "structure", - "members": {} - } - }, - "EnableSso": { - "input": { - "type": "structure", - "required": [ - "DirectoryId" - ], - "members": { - "DirectoryId": {}, - "UserName": {}, - "Password": { - "shape": "Sm" - } - } - }, - "output": { - "type": "structure", - "members": {} - } - }, - "GetDirectoryLimits": { - "input": { - "type": "structure", - "members": {} - }, - "output": { - "type": "structure", - "members": { - "DirectoryLimits": { - "type": "structure", - "members": { - "CloudOnlyDirectoriesLimit": { - "type": "integer" - }, - "CloudOnlyDirectoriesCurrentCount": { - "type": "integer" - }, - "CloudOnlyDirectoriesLimitReached": { - "type": "boolean" - }, - "CloudOnlyMicrosoftADLimit": { - "type": "integer" - }, - "CloudOnlyMicrosoftADCurrentCount": { - "type": "integer" - }, - "CloudOnlyMicrosoftADLimitReached": { - "type": "boolean" - }, - "ConnectedDirectoriesLimit": { - "type": "integer" - }, - "ConnectedDirectoriesCurrentCount": { - "type": "integer" - }, - "ConnectedDirectoriesLimitReached": { - "type": "boolean" - } - } - } - } - } - }, - "GetSnapshotLimits": { - "input": { - "type": "structure", - "required": [ - "DirectoryId" - ], - "members": { - "DirectoryId": {} - } - }, - "output": { - "type": "structure", - "members": { - "SnapshotLimits": { - "type": "structure", - "members": { - "ManualSnapshotsLimit": { - "type": "integer" - }, - "ManualSnapshotsCurrentCount": { - "type": "integer" - }, - "ManualSnapshotsLimitReached": { - "type": "boolean" - } - } - } - } - } - }, - "ListIpRoutes": { - "input": { - "type": "structure", - "required": [ - "DirectoryId" - ], - "members": { - "DirectoryId": {}, - "NextToken": {}, - "Limit": { - "type": "integer" - } - } - }, - "output": { - "type": "structure", - "members": { - "IpRoutesInfo": { - "type": "list", - "member": { - "type": "structure", - "members": { - "DirectoryId": {}, - "CidrIp": {}, - "IpRouteStatusMsg": {}, - "AddedDateTime": { - "type": "timestamp" - }, - "IpRouteStatusReason": {}, - "Description": {} - } - } - }, - "NextToken": {} - } - } - }, - "ListSchemaExtensions": { - "input": { - "type": "structure", - "required": [ - "DirectoryId" - ], - "members": { - "DirectoryId": {}, - "NextToken": {}, - "Limit": { - "type": "integer" - } - } - }, - "output": { - "type": "structure", - "members": { - "SchemaExtensionsInfo": { - "type": "list", - "member": { - "type": "structure", - "members": { - "DirectoryId": {}, - "SchemaExtensionId": {}, - "Description": {}, - "SchemaExtensionStatus": {}, - "SchemaExtensionStatusReason": {}, - "StartDateTime": { - "type": "timestamp" - }, - "EndDateTime": { - "type": "timestamp" - } - } - } - }, - "NextToken": {} - } - } - }, - "ListTagsForResource": { - "input": { - "type": "structure", - "required": [ - "ResourceId" - ], - "members": { - "ResourceId": {}, - "NextToken": {}, - "Limit": { - "type": "integer" - } - } - }, - "output": { - "type": "structure", - "members": { - "Tags": { - "shape": "Sb" - }, - "NextToken": {} - } - } - }, - "RegisterEventTopic": { - "input": { - "type": "structure", - "required": [ - "DirectoryId", - "TopicName" - ], - "members": { - "DirectoryId": {}, - "TopicName": {} - } - }, - "output": { - "type": "structure", - "members": {} - } - }, - "RemoveIpRoutes": { - "input": { - "type": "structure", - "required": [ - "DirectoryId", - "CidrIps" - ], - "members": { - "DirectoryId": {}, - "CidrIps": { - "type": "list", - "member": {} - } - } - }, - "output": { - "type": "structure", - "members": {} - } - }, - "RemoveTagsFromResource": { - "input": { - "type": "structure", - "required": [ - "ResourceId", - "TagKeys" - ], - "members": { - "ResourceId": {}, - "TagKeys": { - "type": "list", - "member": {} - } - } - }, - "output": { - "type": "structure", - "members": {} - } - }, - "RestoreFromSnapshot": { - "input": { - "type": "structure", - "required": [ - "SnapshotId" - ], - "members": { - "SnapshotId": {} - } - }, - "output": { - "type": "structure", - "members": {} - } - }, - "StartSchemaExtension": { - "input": { - "type": "structure", - "required": [ - "DirectoryId", - "CreateSnapshotBeforeSchemaExtension", - "LdifContent", - "Description" - ], - "members": { - "DirectoryId": {}, - "CreateSnapshotBeforeSchemaExtension": { - "type": "boolean" - }, - "LdifContent": {}, - "Description": {} - } - }, - "output": { - "type": "structure", - "members": { - "SchemaExtensionId": {} - } - } - }, - "UpdateConditionalForwarder": { - "input": { - "type": "structure", - "required": [ - "DirectoryId", - "RemoteDomainName", - "DnsIpAddrs" - ], - "members": { - "DirectoryId": {}, - "RemoteDomainName": {}, - "DnsIpAddrs": { - "shape": "Ss" - } - } - }, - "output": { - "type": "structure", - "members": {} - } - }, - "UpdateNumberOfDomainControllers": { - "input": { - "type": "structure", - "required": [ - "DirectoryId", - "DesiredNumber" - ], - "members": { - "DirectoryId": {}, - "DesiredNumber": { - "type": "integer" - } - } - }, - "output": { - "type": "structure", - "members": {} - } - }, - "UpdateRadius": { - "input": { - "type": "structure", - "required": [ - "DirectoryId", - "RadiusSettings" - ], - "members": { - "DirectoryId": {}, - "RadiusSettings": { - "shape": "S2t" - } - } - }, - "output": { - "type": "structure", - "members": {} - } - }, - "VerifyTrust": { - "input": { - "type": "structure", - "required": [ - "TrustId" - ], - "members": { - "TrustId": {} - } - }, - "output": { - "type": "structure", - "members": { - "TrustId": {} - } - } - } - }, - "shapes": { - "Sb": { - "type": "list", - "member": { - "type": "structure", - "required": [ - "Key", - "Value" - ], - "members": { - "Key": {}, - "Value": {} - } - } - }, - "Sm": { - "type": "string", - "sensitive": true - }, - "Sq": { - "type": "list", - "member": {} - }, - "Ss": { - "type": "list", - "member": {} - }, - "S13": { - "type": "list", - "member": { - "type": "structure", - "members": { - "Name": {}, - "Value": {} - } - } - }, - "S1e": { - "type": "string", - "sensitive": true - }, - "S1f": { - "type": "structure", - "required": [ - "VpcId", - "SubnetIds" - ], - "members": { - "VpcId": {}, - "SubnetIds": { - "shape": "Sq" - } - } - }, - "S2p": { - "type": "list", - "member": {} - }, - "S2t": { - "type": "structure", - "members": { - "RadiusServers": { - "type": "list", - "member": {} - }, - "RadiusPort": { - "type": "integer" - }, - "RadiusTimeout": { - "type": "integer" - }, - "RadiusRetries": { - "type": "integer" - }, - "SharedSecret": { - "type": "string", - "sensitive": true - }, - "AuthenticationProtocol": {}, - "DisplayLabel": {}, - "UseSameUsername": { - "type": "boolean" - } - } - } - } -} \ No newline at end of file diff --git a/workshops/monte-carlo-on-ec2-spot-fleet/src/web/node_modules/aws-sdk/apis/ds-2015-04-16.paginators.json b/workshops/monte-carlo-on-ec2-spot-fleet/src/web/node_modules/aws-sdk/apis/ds-2015-04-16.paginators.json deleted file mode 100644 index da0b8729..00000000 --- a/workshops/monte-carlo-on-ec2-spot-fleet/src/web/node_modules/aws-sdk/apis/ds-2015-04-16.paginators.json +++ /dev/null @@ -1,9 +0,0 @@ -{ - "pagination": { - "DescribeDomainControllers": { - "input_token": "NextToken", - "output_token": "NextToken", - "limit_key": "Limit" - } - } -} diff --git a/workshops/monte-carlo-on-ec2-spot-fleet/src/web/node_modules/aws-sdk/apis/dynamodb-2011-12-05.examples.json b/workshops/monte-carlo-on-ec2-spot-fleet/src/web/node_modules/aws-sdk/apis/dynamodb-2011-12-05.examples.json deleted file mode 100644 index 0ea7e3b0..00000000 --- a/workshops/monte-carlo-on-ec2-spot-fleet/src/web/node_modules/aws-sdk/apis/dynamodb-2011-12-05.examples.json +++ /dev/null @@ -1,5 +0,0 @@ -{ - "version": "1.0", - "examples": { - } -} diff --git a/workshops/monte-carlo-on-ec2-spot-fleet/src/web/node_modules/aws-sdk/apis/dynamodb-2011-12-05.min.json b/workshops/monte-carlo-on-ec2-spot-fleet/src/web/node_modules/aws-sdk/apis/dynamodb-2011-12-05.min.json deleted file mode 100644 index ddbf5193..00000000 --- a/workshops/monte-carlo-on-ec2-spot-fleet/src/web/node_modules/aws-sdk/apis/dynamodb-2011-12-05.min.json +++ /dev/null @@ -1,664 +0,0 @@ -{ - "version": "2.0", - "metadata": { - "apiVersion": "2011-12-05", - "endpointPrefix": "dynamodb", - "jsonVersion": "1.0", - "protocol": "json", - "serviceAbbreviation": "DynamoDB", - "serviceFullName": "Amazon DynamoDB", - "signatureVersion": "v4", - "targetPrefix": "DynamoDB_20111205", - "uid": "dynamodb-2011-12-05" - }, - "operations": { - "BatchGetItem": { - "input": { - "type": "structure", - "required": [ - "RequestItems" - ], - "members": { - "RequestItems": { - "shape": "S2" - } - } - }, - "output": { - "type": "structure", - "members": { - "Responses": { - "type": "map", - "key": {}, - "value": { - "type": "structure", - "members": { - "Items": { - "shape": "Sk" - }, - "ConsumedCapacityUnits": { - "type": "double" - } - } - } - }, - "UnprocessedKeys": { - "shape": "S2" - } - } - } - }, - "BatchWriteItem": { - "input": { - "type": "structure", - "required": [ - "RequestItems" - ], - "members": { - "RequestItems": { - "shape": "So" - } - } - }, - "output": { - "type": "structure", - "members": { - "Responses": { - "type": "map", - "key": {}, - "value": { - "type": "structure", - "members": { - "ConsumedCapacityUnits": { - "type": "double" - } - } - } - }, - "UnprocessedItems": { - "shape": "So" - } - } - } - }, - "CreateTable": { - "input": { - "type": "structure", - "required": [ - "TableName", - "KeySchema", - "ProvisionedThroughput" - ], - "members": { - "TableName": {}, - "KeySchema": { - "shape": "Sy" - }, - "ProvisionedThroughput": { - "shape": "S12" - } - } - }, - "output": { - "type": "structure", - "members": { - "TableDescription": { - "shape": "S15" - } - } - } - }, - "DeleteItem": { - "input": { - "type": "structure", - "required": [ - "TableName", - "Key" - ], - "members": { - "TableName": {}, - "Key": { - "shape": "S6" - }, - "Expected": { - "shape": "S1b" - }, - "ReturnValues": {} - } - }, - "output": { - "type": "structure", - "members": { - "Attributes": { - "shape": "Sl" - }, - "ConsumedCapacityUnits": { - "type": "double" - } - } - } - }, - "DeleteTable": { - "input": { - "type": "structure", - "required": [ - "TableName" - ], - "members": { - "TableName": {} - } - }, - "output": { - "type": "structure", - "members": { - "TableDescription": { - "shape": "S15" - } - } - } - }, - "DescribeTable": { - "input": { - "type": "structure", - "required": [ - "TableName" - ], - "members": { - "TableName": {} - } - }, - "output": { - "type": "structure", - "members": { - "Table": { - "shape": "S15" - } - } - } - }, - "GetItem": { - "input": { - "type": "structure", - "required": [ - "TableName", - "Key" - ], - "members": { - "TableName": {}, - "Key": { - "shape": "S6" - }, - "AttributesToGet": { - "shape": "Se" - }, - "ConsistentRead": { - "type": "boolean" - } - } - }, - "output": { - "type": "structure", - "members": { - "Item": { - "shape": "Sl" - }, - "ConsumedCapacityUnits": { - "type": "double" - } - } - } - }, - "ListTables": { - "input": { - "type": "structure", - "members": { - "ExclusiveStartTableName": {}, - "Limit": { - "type": "integer" - } - } - }, - "output": { - "type": "structure", - "members": { - "TableNames": { - "type": "list", - "member": {} - }, - "LastEvaluatedTableName": {} - } - } - }, - "PutItem": { - "input": { - "type": "structure", - "required": [ - "TableName", - "Item" - ], - "members": { - "TableName": {}, - "Item": { - "shape": "Ss" - }, - "Expected": { - "shape": "S1b" - }, - "ReturnValues": {} - } - }, - "output": { - "type": "structure", - "members": { - "Attributes": { - "shape": "Sl" - }, - "ConsumedCapacityUnits": { - "type": "double" - } - } - } - }, - "Query": { - "input": { - "type": "structure", - "required": [ - "TableName", - "HashKeyValue" - ], - "members": { - "TableName": {}, - "AttributesToGet": { - "shape": "Se" - }, - "Limit": { - "type": "integer" - }, - "ConsistentRead": { - "type": "boolean" - }, - "Count": { - "type": "boolean" - }, - "HashKeyValue": { - "shape": "S7" - }, - "RangeKeyCondition": { - "shape": "S1u" - }, - "ScanIndexForward": { - "type": "boolean" - }, - "ExclusiveStartKey": { - "shape": "S6" - } - } - }, - "output": { - "type": "structure", - "members": { - "Items": { - "shape": "Sk" - }, - "Count": { - "type": "integer" - }, - "LastEvaluatedKey": { - "shape": "S6" - }, - "ConsumedCapacityUnits": { - "type": "double" - } - } - } - }, - "Scan": { - "input": { - "type": "structure", - "required": [ - "TableName" - ], - "members": { - "TableName": {}, - "AttributesToGet": { - "shape": "Se" - }, - "Limit": { - "type": "integer" - }, - "Count": { - "type": "boolean" - }, - "ScanFilter": { - "type": "map", - "key": {}, - "value": { - "shape": "S1u" - } - }, - "ExclusiveStartKey": { - "shape": "S6" - } - } - }, - "output": { - "type": "structure", - "members": { - "Items": { - "shape": "Sk" - }, - "Count": { - "type": "integer" - }, - "ScannedCount": { - "type": "integer" - }, - "LastEvaluatedKey": { - "shape": "S6" - }, - "ConsumedCapacityUnits": { - "type": "double" - } - } - } - }, - "UpdateItem": { - "input": { - "type": "structure", - "required": [ - "TableName", - "Key", - "AttributeUpdates" - ], - "members": { - "TableName": {}, - "Key": { - "shape": "S6" - }, - "AttributeUpdates": { - "type": "map", - "key": {}, - "value": { - "type": "structure", - "members": { - "Value": { - "shape": "S7" - }, - "Action": {} - } - } - }, - "Expected": { - "shape": "S1b" - }, - "ReturnValues": {} - } - }, - "output": { - "type": "structure", - "members": { - "Attributes": { - "shape": "Sl" - }, - "ConsumedCapacityUnits": { - "type": "double" - } - } - } - }, - "UpdateTable": { - "input": { - "type": "structure", - "required": [ - "TableName", - "ProvisionedThroughput" - ], - "members": { - "TableName": {}, - "ProvisionedThroughput": { - "shape": "S12" - } - } - }, - "output": { - "type": "structure", - "members": { - "TableDescription": { - "shape": "S15" - } - } - } - } - }, - "shapes": { - "S2": { - "type": "map", - "key": {}, - "value": { - "type": "structure", - "required": [ - "Keys" - ], - "members": { - "Keys": { - "type": "list", - "member": { - "shape": "S6" - } - }, - "AttributesToGet": { - "shape": "Se" - }, - "ConsistentRead": { - "type": "boolean" - } - } - } - }, - "S6": { - "type": "structure", - "required": [ - "HashKeyElement" - ], - "members": { - "HashKeyElement": { - "shape": "S7" - }, - "RangeKeyElement": { - "shape": "S7" - } - } - }, - "S7": { - "type": "structure", - "members": { - "S": {}, - "N": {}, - "B": { - "type": "blob" - }, - "SS": { - "type": "list", - "member": {} - }, - "NS": { - "type": "list", - "member": {} - }, - "BS": { - "type": "list", - "member": { - "type": "blob" - } - } - } - }, - "Se": { - "type": "list", - "member": {} - }, - "Sk": { - "type": "list", - "member": { - "shape": "Sl" - } - }, - "Sl": { - "type": "map", - "key": {}, - "value": { - "shape": "S7" - } - }, - "So": { - "type": "map", - "key": {}, - "value": { - "type": "list", - "member": { - "type": "structure", - "members": { - "PutRequest": { - "type": "structure", - "required": [ - "Item" - ], - "members": { - "Item": { - "shape": "Ss" - } - } - }, - "DeleteRequest": { - "type": "structure", - "required": [ - "Key" - ], - "members": { - "Key": { - "shape": "S6" - } - } - } - } - } - } - }, - "Ss": { - "type": "map", - "key": {}, - "value": { - "shape": "S7" - } - }, - "Sy": { - "type": "structure", - "required": [ - "HashKeyElement" - ], - "members": { - "HashKeyElement": { - "shape": "Sz" - }, - "RangeKeyElement": { - "shape": "Sz" - } - } - }, - "Sz": { - "type": "structure", - "required": [ - "AttributeName", - "AttributeType" - ], - "members": { - "AttributeName": {}, - "AttributeType": {} - } - }, - "S12": { - "type": "structure", - "required": [ - "ReadCapacityUnits", - "WriteCapacityUnits" - ], - "members": { - "ReadCapacityUnits": { - "type": "long" - }, - "WriteCapacityUnits": { - "type": "long" - } - } - }, - "S15": { - "type": "structure", - "members": { - "TableName": {}, - "KeySchema": { - "shape": "Sy" - }, - "TableStatus": {}, - "CreationDateTime": { - "type": "timestamp" - }, - "ProvisionedThroughput": { - "type": "structure", - "members": { - "LastIncreaseDateTime": { - "type": "timestamp" - }, - "LastDecreaseDateTime": { - "type": "timestamp" - }, - "NumberOfDecreasesToday": { - "type": "long" - }, - "ReadCapacityUnits": { - "type": "long" - }, - "WriteCapacityUnits": { - "type": "long" - } - } - }, - "TableSizeBytes": { - "type": "long" - }, - "ItemCount": { - "type": "long" - } - } - }, - "S1b": { - "type": "map", - "key": {}, - "value": { - "type": "structure", - "members": { - "Value": { - "shape": "S7" - }, - "Exists": { - "type": "boolean" - } - } - } - }, - "S1u": { - "type": "structure", - "required": [ - "ComparisonOperator" - ], - "members": { - "AttributeValueList": { - "type": "list", - "member": { - "shape": "S7" - } - }, - "ComparisonOperator": {} - } - } - } -} \ No newline at end of file diff --git a/workshops/monte-carlo-on-ec2-spot-fleet/src/web/node_modules/aws-sdk/apis/dynamodb-2011-12-05.paginators.json b/workshops/monte-carlo-on-ec2-spot-fleet/src/web/node_modules/aws-sdk/apis/dynamodb-2011-12-05.paginators.json deleted file mode 100644 index 3037d662..00000000 --- a/workshops/monte-carlo-on-ec2-spot-fleet/src/web/node_modules/aws-sdk/apis/dynamodb-2011-12-05.paginators.json +++ /dev/null @@ -1,26 +0,0 @@ -{ - "pagination": { - "BatchGetItem": { - "input_token": "RequestItems", - "output_token": "UnprocessedKeys" - }, - "ListTables": { - "input_token": "ExclusiveStartTableName", - "limit_key": "Limit", - "output_token": "LastEvaluatedTableName", - "result_key": "TableNames" - }, - "Query": { - "input_token": "ExclusiveStartKey", - "limit_key": "Limit", - "output_token": "LastEvaluatedKey", - "result_key": "Items" - }, - "Scan": { - "input_token": "ExclusiveStartKey", - "limit_key": "Limit", - "output_token": "LastEvaluatedKey", - "result_key": "Items" - } - } -} \ No newline at end of file diff --git a/workshops/monte-carlo-on-ec2-spot-fleet/src/web/node_modules/aws-sdk/apis/dynamodb-2011-12-05.waiters2.json b/workshops/monte-carlo-on-ec2-spot-fleet/src/web/node_modules/aws-sdk/apis/dynamodb-2011-12-05.waiters2.json deleted file mode 100644 index 43a55ca7..00000000 --- a/workshops/monte-carlo-on-ec2-spot-fleet/src/web/node_modules/aws-sdk/apis/dynamodb-2011-12-05.waiters2.json +++ /dev/null @@ -1,35 +0,0 @@ -{ - "version": 2, - "waiters": { - "TableExists": { - "delay": 20, - "operation": "DescribeTable", - "maxAttempts": 25, - "acceptors": [ - { - "expected": "ACTIVE", - "matcher": "path", - "state": "success", - "argument": "Table.TableStatus" - }, - { - "expected": "ResourceNotFoundException", - "matcher": "error", - "state": "retry" - } - ] - }, - "TableNotExists": { - "delay": 20, - "operation": "DescribeTable", - "maxAttempts": 25, - "acceptors": [ - { - "expected": "ResourceNotFoundException", - "matcher": "error", - "state": "success" - } - ] - } - } -} diff --git a/workshops/monte-carlo-on-ec2-spot-fleet/src/web/node_modules/aws-sdk/apis/dynamodb-2012-08-10.examples.json b/workshops/monte-carlo-on-ec2-spot-fleet/src/web/node_modules/aws-sdk/apis/dynamodb-2012-08-10.examples.json deleted file mode 100644 index 5b6ad0f6..00000000 --- a/workshops/monte-carlo-on-ec2-spot-fleet/src/web/node_modules/aws-sdk/apis/dynamodb-2012-08-10.examples.json +++ /dev/null @@ -1,631 +0,0 @@ -{ - "version": "1.0", - "examples": { - "BatchGetItem": [ - { - "input": { - "RequestItems": { - "Music": { - "Keys": [ - { - "Artist": { - "S": "No One You Know" - }, - "SongTitle": { - "S": "Call Me Today" - } - }, - { - "Artist": { - "S": "Acme Band" - }, - "SongTitle": { - "S": "Happy Day" - } - }, - { - "Artist": { - "S": "No One You Know" - }, - "SongTitle": { - "S": "Scared of My Shadow" - } - } - ], - "ProjectionExpression": "AlbumTitle" - } - } - }, - "output": { - "Responses": { - "Music": [ - { - "AlbumTitle": { - "S": "Somewhat Famous" - } - }, - { - "AlbumTitle": { - "S": "Blue Sky Blues" - } - }, - { - "AlbumTitle": { - "S": "Louder Than Ever" - } - } - ] - } - }, - "comments": { - "input": { - }, - "output": { - } - }, - "description": "This example reads multiple items from the Music table using a batch of three GetItem requests. Only the AlbumTitle attribute is returned.", - "id": "to-retrieve-multiple-items-from-a-table-1476118438992", - "title": "To retrieve multiple items from a table" - } - ], - "BatchWriteItem": [ - { - "input": { - "RequestItems": { - "Music": [ - { - "PutRequest": { - "Item": { - "AlbumTitle": { - "S": "Somewhat Famous" - }, - "Artist": { - "S": "No One You Know" - }, - "SongTitle": { - "S": "Call Me Today" - } - } - } - }, - { - "PutRequest": { - "Item": { - "AlbumTitle": { - "S": "Songs About Life" - }, - "Artist": { - "S": "Acme Band" - }, - "SongTitle": { - "S": "Happy Day" - } - } - } - }, - { - "PutRequest": { - "Item": { - "AlbumTitle": { - "S": "Blue Sky Blues" - }, - "Artist": { - "S": "No One You Know" - }, - "SongTitle": { - "S": "Scared of My Shadow" - } - } - } - } - ] - } - }, - "output": { - }, - "comments": { - "input": { - }, - "output": { - } - }, - "description": "This example adds three new items to the Music table using a batch of three PutItem requests.", - "id": "to-add-multiple-items-to-a-table-1476118519747", - "title": "To add multiple items to a table" - } - ], - "CreateTable": [ - { - "input": { - "AttributeDefinitions": [ - { - "AttributeName": "Artist", - "AttributeType": "S" - }, - { - "AttributeName": "SongTitle", - "AttributeType": "S" - } - ], - "KeySchema": [ - { - "AttributeName": "Artist", - "KeyType": "HASH" - }, - { - "AttributeName": "SongTitle", - "KeyType": "RANGE" - } - ], - "ProvisionedThroughput": { - "ReadCapacityUnits": 5, - "WriteCapacityUnits": 5 - }, - "TableName": "Music" - }, - "output": { - "TableDescription": { - "AttributeDefinitions": [ - { - "AttributeName": "Artist", - "AttributeType": "S" - }, - { - "AttributeName": "SongTitle", - "AttributeType": "S" - } - ], - "CreationDateTime": "1421866952.062", - "ItemCount": 0, - "KeySchema": [ - { - "AttributeName": "Artist", - "KeyType": "HASH" - }, - { - "AttributeName": "SongTitle", - "KeyType": "RANGE" - } - ], - "ProvisionedThroughput": { - "ReadCapacityUnits": 5, - "WriteCapacityUnits": 5 - }, - "TableName": "Music", - "TableSizeBytes": 0, - "TableStatus": "CREATING" - } - }, - "comments": { - "input": { - }, - "output": { - } - }, - "description": "This example creates a table named Music.", - "id": "to-create-a-table-1476116291743", - "title": "To create a table" - } - ], - "DeleteItem": [ - { - "input": { - "Key": { - "Artist": { - "S": "No One You Know" - }, - "SongTitle": { - "S": "Scared of My Shadow" - } - }, - "TableName": "Music" - }, - "output": { - "ConsumedCapacity": { - "CapacityUnits": 1, - "TableName": "Music" - } - }, - "comments": { - "input": { - }, - "output": { - } - }, - "description": "This example deletes an item from the Music table.", - "id": "to-delete-an-item-1475884573758", - "title": "To delete an item" - } - ], - "DeleteTable": [ - { - "input": { - "TableName": "Music" - }, - "output": { - "TableDescription": { - "ItemCount": 0, - "ProvisionedThroughput": { - "NumberOfDecreasesToday": 1, - "ReadCapacityUnits": 5, - "WriteCapacityUnits": 5 - }, - "TableName": "Music", - "TableSizeBytes": 0, - "TableStatus": "DELETING" - } - }, - "comments": { - "input": { - }, - "output": { - } - }, - "description": "This example deletes the Music table.", - "id": "to-delete-a-table-1475884368755", - "title": "To delete a table" - } - ], - "DescribeLimits": [ - { - "input": { - }, - "output": { - "AccountMaxReadCapacityUnits": 20000, - "AccountMaxWriteCapacityUnits": 20000, - "TableMaxReadCapacityUnits": 10000, - "TableMaxWriteCapacityUnits": 10000 - }, - "comments": { - "input": { - }, - "output": { - } - }, - "description": "The following example returns the maximum read and write capacity units per table, and for the AWS account, in the current AWS region.", - "id": "to-determine-capacity-limits-per-table-and-account-in-the-current-aws-region-1475884162064", - "title": "To determine capacity limits per table and account, in the current AWS region" - } - ], - "DescribeTable": [ - { - "input": { - "TableName": "Music" - }, - "output": { - "Table": { - "AttributeDefinitions": [ - { - "AttributeName": "Artist", - "AttributeType": "S" - }, - { - "AttributeName": "SongTitle", - "AttributeType": "S" - } - ], - "CreationDateTime": "1421866952.062", - "ItemCount": 0, - "KeySchema": [ - { - "AttributeName": "Artist", - "KeyType": "HASH" - }, - { - "AttributeName": "SongTitle", - "KeyType": "RANGE" - } - ], - "ProvisionedThroughput": { - "NumberOfDecreasesToday": 1, - "ReadCapacityUnits": 5, - "WriteCapacityUnits": 5 - }, - "TableName": "Music", - "TableSizeBytes": 0, - "TableStatus": "ACTIVE" - } - }, - "comments": { - "input": { - }, - "output": { - } - }, - "description": "This example describes the Music table.", - "id": "to-describe-a-table-1475884440502", - "title": "To describe a table" - } - ], - "GetItem": [ - { - "input": { - "Key": { - "Artist": { - "S": "Acme Band" - }, - "SongTitle": { - "S": "Happy Day" - } - }, - "TableName": "Music" - }, - "output": { - "Item": { - "AlbumTitle": { - "S": "Songs About Life" - }, - "Artist": { - "S": "Acme Band" - }, - "SongTitle": { - "S": "Happy Day" - } - } - }, - "comments": { - "input": { - }, - "output": { - } - }, - "description": "This example retrieves an item from the Music table. The table has a partition key and a sort key (Artist and SongTitle), so you must specify both of these attributes.", - "id": "to-read-an-item-from-a-table-1475884258350", - "title": "To read an item from a table" - } - ], - "ListTables": [ - { - "input": { - }, - "output": { - "TableNames": [ - "Forum", - "ProductCatalog", - "Reply", - "Thread" - ] - }, - "comments": { - "input": { - }, - "output": { - } - }, - "description": "This example lists all of the tables associated with the current AWS account and endpoint.", - "id": "to-list-tables-1475884741238", - "title": "To list tables" - } - ], - "PutItem": [ - { - "input": { - "Item": { - "AlbumTitle": { - "S": "Somewhat Famous" - }, - "Artist": { - "S": "No One You Know" - }, - "SongTitle": { - "S": "Call Me Today" - } - }, - "ReturnConsumedCapacity": "TOTAL", - "TableName": "Music" - }, - "output": { - "ConsumedCapacity": { - "CapacityUnits": 1, - "TableName": "Music" - } - }, - "comments": { - "input": { - }, - "output": { - } - }, - "description": "This example adds a new item to the Music table.", - "id": "to-add-an-item-to-a-table-1476116191110", - "title": "To add an item to a table" - } - ], - "Query": [ - { - "input": { - "ExpressionAttributeValues": { - ":v1": { - "S": "No One You Know" - } - }, - "KeyConditionExpression": "Artist = :v1", - "ProjectionExpression": "SongTitle", - "TableName": "Music" - }, - "output": { - "ConsumedCapacity": { - }, - "Count": 2, - "Items": [ - { - "SongTitle": { - "S": "Call Me Today" - } - } - ], - "ScannedCount": 2 - }, - "comments": { - "input": { - }, - "output": { - } - }, - "description": "This example queries items in the Music table. The table has a partition key and sort key (Artist and SongTitle), but this query only specifies the partition key value. It returns song titles by the artist named \"No One You Know\".", - "id": "to-query-an-item-1475883874631", - "title": "To query an item" - } - ], - "Scan": [ - { - "input": { - "ExpressionAttributeNames": { - "AT": "AlbumTitle", - "ST": "SongTitle" - }, - "ExpressionAttributeValues": { - ":a": { - "S": "No One You Know" - } - }, - "FilterExpression": "Artist = :a", - "ProjectionExpression": "#ST, #AT", - "TableName": "Music" - }, - "output": { - "ConsumedCapacity": { - }, - "Count": 2, - "Items": [ - { - "AlbumTitle": { - "S": "Somewhat Famous" - }, - "SongTitle": { - "S": "Call Me Today" - } - }, - { - "AlbumTitle": { - "S": "Blue Sky Blues" - }, - "SongTitle": { - "S": "Scared of My Shadow" - } - } - ], - "ScannedCount": 3 - }, - "comments": { - "input": { - }, - "output": { - } - }, - "description": "This example scans the entire Music table, and then narrows the results to songs by the artist \"No One You Know\". For each item, only the album title and song title are returned.", - "id": "to-scan-a-table-1475883652470", - "title": "To scan a table" - } - ], - "UpdateItem": [ - { - "input": { - "ExpressionAttributeNames": { - "#AT": "AlbumTitle", - "#Y": "Year" - }, - "ExpressionAttributeValues": { - ":t": { - "S": "Louder Than Ever" - }, - ":y": { - "N": "2015" - } - }, - "Key": { - "Artist": { - "S": "Acme Band" - }, - "SongTitle": { - "S": "Happy Day" - } - }, - "ReturnValues": "ALL_NEW", - "TableName": "Music", - "UpdateExpression": "SET #Y = :y, #AT = :t" - }, - "output": { - "Attributes": { - "AlbumTitle": { - "S": "Louder Than Ever" - }, - "Artist": { - "S": "Acme Band" - }, - "SongTitle": { - "S": "Happy Day" - }, - "Year": { - "N": "2015" - } - } - }, - "comments": { - "input": { - }, - "output": { - } - }, - "description": "This example updates an item in the Music table. It adds a new attribute (Year) and modifies the AlbumTitle attribute. All of the attributes in the item, as they appear after the update, are returned in the response.", - "id": "to-update-an-item-in-a-table-1476118250055", - "title": "To update an item in a table" - } - ], - "UpdateTable": [ - { - "input": { - "ProvisionedThroughput": { - "ReadCapacityUnits": 10, - "WriteCapacityUnits": 10 - }, - "TableName": "MusicCollection" - }, - "output": { - "TableDescription": { - "AttributeDefinitions": [ - { - "AttributeName": "Artist", - "AttributeType": "S" - }, - { - "AttributeName": "SongTitle", - "AttributeType": "S" - } - ], - "CreationDateTime": "1421866952.062", - "ItemCount": 0, - "KeySchema": [ - { - "AttributeName": "Artist", - "KeyType": "HASH" - }, - { - "AttributeName": "SongTitle", - "KeyType": "RANGE" - } - ], - "ProvisionedThroughput": { - "LastIncreaseDateTime": "1421874759.194", - "NumberOfDecreasesToday": 1, - "ReadCapacityUnits": 1, - "WriteCapacityUnits": 1 - }, - "TableName": "MusicCollection", - "TableSizeBytes": 0, - "TableStatus": "UPDATING" - } - }, - "comments": { - "input": { - }, - "output": { - } - }, - "description": "This example increases the provisioned read and write capacity on the Music table.", - "id": "to-modify-a-tables-provisioned-throughput-1476118076147", - "title": "To modify a table's provisioned throughput" - } - ] - } -} diff --git a/workshops/monte-carlo-on-ec2-spot-fleet/src/web/node_modules/aws-sdk/apis/dynamodb-2012-08-10.min.json b/workshops/monte-carlo-on-ec2-spot-fleet/src/web/node_modules/aws-sdk/apis/dynamodb-2012-08-10.min.json deleted file mode 100644 index 79b73c0c..00000000 --- a/workshops/monte-carlo-on-ec2-spot-fleet/src/web/node_modules/aws-sdk/apis/dynamodb-2012-08-10.min.json +++ /dev/null @@ -1,1176 +0,0 @@ -{ - "version": "2.0", - "metadata": { - "apiVersion": "2012-08-10", - "endpointPrefix": "dynamodb", - "jsonVersion": "1.0", - "protocol": "json", - "serviceAbbreviation": "DynamoDB", - "serviceFullName": "Amazon DynamoDB", - "signatureVersion": "v4", - "targetPrefix": "DynamoDB_20120810", - "uid": "dynamodb-2012-08-10" - }, - "operations": { - "BatchGetItem": { - "input": { - "type": "structure", - "required": [ - "RequestItems" - ], - "members": { - "RequestItems": { - "shape": "S2" - }, - "ReturnConsumedCapacity": {} - } - }, - "output": { - "type": "structure", - "members": { - "Responses": { - "type": "map", - "key": {}, - "value": { - "shape": "Sr" - } - }, - "UnprocessedKeys": { - "shape": "S2" - }, - "ConsumedCapacity": { - "shape": "St" - } - } - } - }, - "BatchWriteItem": { - "input": { - "type": "structure", - "required": [ - "RequestItems" - ], - "members": { - "RequestItems": { - "shape": "S10" - }, - "ReturnConsumedCapacity": {}, - "ReturnItemCollectionMetrics": {} - } - }, - "output": { - "type": "structure", - "members": { - "UnprocessedItems": { - "shape": "S10" - }, - "ItemCollectionMetrics": { - "type": "map", - "key": {}, - "value": { - "type": "list", - "member": { - "shape": "S1a" - } - } - }, - "ConsumedCapacity": { - "shape": "St" - } - } - } - }, - "CreateTable": { - "input": { - "type": "structure", - "required": [ - "AttributeDefinitions", - "TableName", - "KeySchema", - "ProvisionedThroughput" - ], - "members": { - "AttributeDefinitions": { - "shape": "S1f" - }, - "TableName": {}, - "KeySchema": { - "shape": "S1j" - }, - "LocalSecondaryIndexes": { - "type": "list", - "member": { - "type": "structure", - "required": [ - "IndexName", - "KeySchema", - "Projection" - ], - "members": { - "IndexName": {}, - "KeySchema": { - "shape": "S1j" - }, - "Projection": { - "shape": "S1o" - } - } - } - }, - "GlobalSecondaryIndexes": { - "type": "list", - "member": { - "type": "structure", - "required": [ - "IndexName", - "KeySchema", - "Projection", - "ProvisionedThroughput" - ], - "members": { - "IndexName": {}, - "KeySchema": { - "shape": "S1j" - }, - "Projection": { - "shape": "S1o" - }, - "ProvisionedThroughput": { - "shape": "S1u" - } - } - } - }, - "ProvisionedThroughput": { - "shape": "S1u" - }, - "StreamSpecification": { - "shape": "S1w" - } - } - }, - "output": { - "type": "structure", - "members": { - "TableDescription": { - "shape": "S20" - } - } - } - }, - "DeleteItem": { - "input": { - "type": "structure", - "required": [ - "TableName", - "Key" - ], - "members": { - "TableName": {}, - "Key": { - "shape": "S6" - }, - "Expected": { - "shape": "S2e" - }, - "ConditionalOperator": {}, - "ReturnValues": {}, - "ReturnConsumedCapacity": {}, - "ReturnItemCollectionMetrics": {}, - "ConditionExpression": {}, - "ExpressionAttributeNames": { - "shape": "Sm" - }, - "ExpressionAttributeValues": { - "shape": "S2m" - } - } - }, - "output": { - "type": "structure", - "members": { - "Attributes": { - "shape": "Ss" - }, - "ConsumedCapacity": { - "shape": "Su" - }, - "ItemCollectionMetrics": { - "shape": "S1a" - } - } - } - }, - "DeleteTable": { - "input": { - "type": "structure", - "required": [ - "TableName" - ], - "members": { - "TableName": {} - } - }, - "output": { - "type": "structure", - "members": { - "TableDescription": { - "shape": "S20" - } - } - } - }, - "DescribeLimits": { - "input": { - "type": "structure", - "members": {} - }, - "output": { - "type": "structure", - "members": { - "AccountMaxReadCapacityUnits": { - "type": "long" - }, - "AccountMaxWriteCapacityUnits": { - "type": "long" - }, - "TableMaxReadCapacityUnits": { - "type": "long" - }, - "TableMaxWriteCapacityUnits": { - "type": "long" - } - } - } - }, - "DescribeTable": { - "input": { - "type": "structure", - "required": [ - "TableName" - ], - "members": { - "TableName": {} - } - }, - "output": { - "type": "structure", - "members": { - "Table": { - "shape": "S20" - } - } - } - }, - "DescribeTimeToLive": { - "input": { - "type": "structure", - "required": [ - "TableName" - ], - "members": { - "TableName": {} - } - }, - "output": { - "type": "structure", - "members": { - "TimeToLiveDescription": { - "type": "structure", - "members": { - "TimeToLiveStatus": {}, - "AttributeName": {} - } - } - } - } - }, - "GetItem": { - "input": { - "type": "structure", - "required": [ - "TableName", - "Key" - ], - "members": { - "TableName": {}, - "Key": { - "shape": "S6" - }, - "AttributesToGet": { - "shape": "Sj" - }, - "ConsistentRead": { - "type": "boolean" - }, - "ReturnConsumedCapacity": {}, - "ProjectionExpression": {}, - "ExpressionAttributeNames": { - "shape": "Sm" - } - } - }, - "output": { - "type": "structure", - "members": { - "Item": { - "shape": "Ss" - }, - "ConsumedCapacity": { - "shape": "Su" - } - } - } - }, - "ListTables": { - "input": { - "type": "structure", - "members": { - "ExclusiveStartTableName": {}, - "Limit": { - "type": "integer" - } - } - }, - "output": { - "type": "structure", - "members": { - "TableNames": { - "type": "list", - "member": {} - }, - "LastEvaluatedTableName": {} - } - } - }, - "ListTagsOfResource": { - "input": { - "type": "structure", - "required": [ - "ResourceArn" - ], - "members": { - "ResourceArn": {}, - "NextToken": {} - } - }, - "output": { - "type": "structure", - "members": { - "Tags": { - "shape": "S3a" - }, - "NextToken": {} - } - } - }, - "PutItem": { - "input": { - "type": "structure", - "required": [ - "TableName", - "Item" - ], - "members": { - "TableName": {}, - "Item": { - "shape": "S14" - }, - "Expected": { - "shape": "S2e" - }, - "ReturnValues": {}, - "ReturnConsumedCapacity": {}, - "ReturnItemCollectionMetrics": {}, - "ConditionalOperator": {}, - "ConditionExpression": {}, - "ExpressionAttributeNames": { - "shape": "Sm" - }, - "ExpressionAttributeValues": { - "shape": "S2m" - } - } - }, - "output": { - "type": "structure", - "members": { - "Attributes": { - "shape": "Ss" - }, - "ConsumedCapacity": { - "shape": "Su" - }, - "ItemCollectionMetrics": { - "shape": "S1a" - } - } - } - }, - "Query": { - "input": { - "type": "structure", - "required": [ - "TableName" - ], - "members": { - "TableName": {}, - "IndexName": {}, - "Select": {}, - "AttributesToGet": { - "shape": "Sj" - }, - "Limit": { - "type": "integer" - }, - "ConsistentRead": { - "type": "boolean" - }, - "KeyConditions": { - "type": "map", - "key": {}, - "value": { - "shape": "S3k" - } - }, - "QueryFilter": { - "shape": "S3l" - }, - "ConditionalOperator": {}, - "ScanIndexForward": { - "type": "boolean" - }, - "ExclusiveStartKey": { - "shape": "S6" - }, - "ReturnConsumedCapacity": {}, - "ProjectionExpression": {}, - "FilterExpression": {}, - "KeyConditionExpression": {}, - "ExpressionAttributeNames": { - "shape": "Sm" - }, - "ExpressionAttributeValues": { - "shape": "S2m" - } - } - }, - "output": { - "type": "structure", - "members": { - "Items": { - "shape": "Sr" - }, - "Count": { - "type": "integer" - }, - "ScannedCount": { - "type": "integer" - }, - "LastEvaluatedKey": { - "shape": "S6" - }, - "ConsumedCapacity": { - "shape": "Su" - } - } - } - }, - "Scan": { - "input": { - "type": "structure", - "required": [ - "TableName" - ], - "members": { - "TableName": {}, - "IndexName": {}, - "AttributesToGet": { - "shape": "Sj" - }, - "Limit": { - "type": "integer" - }, - "Select": {}, - "ScanFilter": { - "shape": "S3l" - }, - "ConditionalOperator": {}, - "ExclusiveStartKey": { - "shape": "S6" - }, - "ReturnConsumedCapacity": {}, - "TotalSegments": { - "type": "integer" - }, - "Segment": { - "type": "integer" - }, - "ProjectionExpression": {}, - "FilterExpression": {}, - "ExpressionAttributeNames": { - "shape": "Sm" - }, - "ExpressionAttributeValues": { - "shape": "S2m" - }, - "ConsistentRead": { - "type": "boolean" - } - } - }, - "output": { - "type": "structure", - "members": { - "Items": { - "shape": "Sr" - }, - "Count": { - "type": "integer" - }, - "ScannedCount": { - "type": "integer" - }, - "LastEvaluatedKey": { - "shape": "S6" - }, - "ConsumedCapacity": { - "shape": "Su" - } - } - } - }, - "TagResource": { - "input": { - "type": "structure", - "required": [ - "ResourceArn", - "Tags" - ], - "members": { - "ResourceArn": {}, - "Tags": { - "shape": "S3a" - } - } - } - }, - "UntagResource": { - "input": { - "type": "structure", - "required": [ - "ResourceArn", - "TagKeys" - ], - "members": { - "ResourceArn": {}, - "TagKeys": { - "type": "list", - "member": {} - } - } - } - }, - "UpdateItem": { - "input": { - "type": "structure", - "required": [ - "TableName", - "Key" - ], - "members": { - "TableName": {}, - "Key": { - "shape": "S6" - }, - "AttributeUpdates": { - "type": "map", - "key": {}, - "value": { - "type": "structure", - "members": { - "Value": { - "shape": "S8" - }, - "Action": {} - } - } - }, - "Expected": { - "shape": "S2e" - }, - "ConditionalOperator": {}, - "ReturnValues": {}, - "ReturnConsumedCapacity": {}, - "ReturnItemCollectionMetrics": {}, - "UpdateExpression": {}, - "ConditionExpression": {}, - "ExpressionAttributeNames": { - "shape": "Sm" - }, - "ExpressionAttributeValues": { - "shape": "S2m" - } - } - }, - "output": { - "type": "structure", - "members": { - "Attributes": { - "shape": "Ss" - }, - "ConsumedCapacity": { - "shape": "Su" - }, - "ItemCollectionMetrics": { - "shape": "S1a" - } - } - } - }, - "UpdateTable": { - "input": { - "type": "structure", - "required": [ - "TableName" - ], - "members": { - "AttributeDefinitions": { - "shape": "S1f" - }, - "TableName": {}, - "ProvisionedThroughput": { - "shape": "S1u" - }, - "GlobalSecondaryIndexUpdates": { - "type": "list", - "member": { - "type": "structure", - "members": { - "Update": { - "type": "structure", - "required": [ - "IndexName", - "ProvisionedThroughput" - ], - "members": { - "IndexName": {}, - "ProvisionedThroughput": { - "shape": "S1u" - } - } - }, - "Create": { - "type": "structure", - "required": [ - "IndexName", - "KeySchema", - "Projection", - "ProvisionedThroughput" - ], - "members": { - "IndexName": {}, - "KeySchema": { - "shape": "S1j" - }, - "Projection": { - "shape": "S1o" - }, - "ProvisionedThroughput": { - "shape": "S1u" - } - } - }, - "Delete": { - "type": "structure", - "required": [ - "IndexName" - ], - "members": { - "IndexName": {} - } - } - } - } - }, - "StreamSpecification": { - "shape": "S1w" - } - } - }, - "output": { - "type": "structure", - "members": { - "TableDescription": { - "shape": "S20" - } - } - } - }, - "UpdateTimeToLive": { - "input": { - "type": "structure", - "required": [ - "TableName", - "TimeToLiveSpecification" - ], - "members": { - "TableName": {}, - "TimeToLiveSpecification": { - "shape": "S4a" - } - } - }, - "output": { - "type": "structure", - "members": { - "TimeToLiveSpecification": { - "shape": "S4a" - } - } - } - } - }, - "shapes": { - "S2": { - "type": "map", - "key": {}, - "value": { - "type": "structure", - "required": [ - "Keys" - ], - "members": { - "Keys": { - "type": "list", - "member": { - "shape": "S6" - } - }, - "AttributesToGet": { - "shape": "Sj" - }, - "ConsistentRead": { - "type": "boolean" - }, - "ProjectionExpression": {}, - "ExpressionAttributeNames": { - "shape": "Sm" - } - } - } - }, - "S6": { - "type": "map", - "key": {}, - "value": { - "shape": "S8" - } - }, - "S8": { - "type": "structure", - "members": { - "S": {}, - "N": {}, - "B": { - "type": "blob" - }, - "SS": { - "type": "list", - "member": {} - }, - "NS": { - "type": "list", - "member": {} - }, - "BS": { - "type": "list", - "member": { - "type": "blob" - } - }, - "M": { - "type": "map", - "key": {}, - "value": { - "shape": "S8" - } - }, - "L": { - "type": "list", - "member": { - "shape": "S8" - } - }, - "NULL": { - "type": "boolean" - }, - "BOOL": { - "type": "boolean" - } - } - }, - "Sj": { - "type": "list", - "member": {} - }, - "Sm": { - "type": "map", - "key": {}, - "value": {} - }, - "Sr": { - "type": "list", - "member": { - "shape": "Ss" - } - }, - "Ss": { - "type": "map", - "key": {}, - "value": { - "shape": "S8" - } - }, - "St": { - "type": "list", - "member": { - "shape": "Su" - } - }, - "Su": { - "type": "structure", - "members": { - "TableName": {}, - "CapacityUnits": { - "type": "double" - }, - "Table": { - "shape": "Sw" - }, - "LocalSecondaryIndexes": { - "shape": "Sx" - }, - "GlobalSecondaryIndexes": { - "shape": "Sx" - } - } - }, - "Sw": { - "type": "structure", - "members": { - "CapacityUnits": { - "type": "double" - } - } - }, - "Sx": { - "type": "map", - "key": {}, - "value": { - "shape": "Sw" - } - }, - "S10": { - "type": "map", - "key": {}, - "value": { - "type": "list", - "member": { - "type": "structure", - "members": { - "PutRequest": { - "type": "structure", - "required": [ - "Item" - ], - "members": { - "Item": { - "shape": "S14" - } - } - }, - "DeleteRequest": { - "type": "structure", - "required": [ - "Key" - ], - "members": { - "Key": { - "shape": "S6" - } - } - } - } - } - } - }, - "S14": { - "type": "map", - "key": {}, - "value": { - "shape": "S8" - } - }, - "S1a": { - "type": "structure", - "members": { - "ItemCollectionKey": { - "type": "map", - "key": {}, - "value": { - "shape": "S8" - } - }, - "SizeEstimateRangeGB": { - "type": "list", - "member": { - "type": "double" - } - } - } - }, - "S1f": { - "type": "list", - "member": { - "type": "structure", - "required": [ - "AttributeName", - "AttributeType" - ], - "members": { - "AttributeName": {}, - "AttributeType": {} - } - } - }, - "S1j": { - "type": "list", - "member": { - "type": "structure", - "required": [ - "AttributeName", - "KeyType" - ], - "members": { - "AttributeName": {}, - "KeyType": {} - } - } - }, - "S1o": { - "type": "structure", - "members": { - "ProjectionType": {}, - "NonKeyAttributes": { - "type": "list", - "member": {} - } - } - }, - "S1u": { - "type": "structure", - "required": [ - "ReadCapacityUnits", - "WriteCapacityUnits" - ], - "members": { - "ReadCapacityUnits": { - "type": "long" - }, - "WriteCapacityUnits": { - "type": "long" - } - } - }, - "S1w": { - "type": "structure", - "members": { - "StreamEnabled": { - "type": "boolean" - }, - "StreamViewType": {} - } - }, - "S20": { - "type": "structure", - "members": { - "AttributeDefinitions": { - "shape": "S1f" - }, - "TableName": {}, - "KeySchema": { - "shape": "S1j" - }, - "TableStatus": {}, - "CreationDateTime": { - "type": "timestamp" - }, - "ProvisionedThroughput": { - "shape": "S23" - }, - "TableSizeBytes": { - "type": "long" - }, - "ItemCount": { - "type": "long" - }, - "TableArn": {}, - "LocalSecondaryIndexes": { - "type": "list", - "member": { - "type": "structure", - "members": { - "IndexName": {}, - "KeySchema": { - "shape": "S1j" - }, - "Projection": { - "shape": "S1o" - }, - "IndexSizeBytes": { - "type": "long" - }, - "ItemCount": { - "type": "long" - }, - "IndexArn": {} - } - } - }, - "GlobalSecondaryIndexes": { - "type": "list", - "member": { - "type": "structure", - "members": { - "IndexName": {}, - "KeySchema": { - "shape": "S1j" - }, - "Projection": { - "shape": "S1o" - }, - "IndexStatus": {}, - "Backfilling": { - "type": "boolean" - }, - "ProvisionedThroughput": { - "shape": "S23" - }, - "IndexSizeBytes": { - "type": "long" - }, - "ItemCount": { - "type": "long" - }, - "IndexArn": {} - } - } - }, - "StreamSpecification": { - "shape": "S1w" - }, - "LatestStreamLabel": {}, - "LatestStreamArn": {} - } - }, - "S23": { - "type": "structure", - "members": { - "LastIncreaseDateTime": { - "type": "timestamp" - }, - "LastDecreaseDateTime": { - "type": "timestamp" - }, - "NumberOfDecreasesToday": { - "type": "long" - }, - "ReadCapacityUnits": { - "type": "long" - }, - "WriteCapacityUnits": { - "type": "long" - } - } - }, - "S2e": { - "type": "map", - "key": {}, - "value": { - "type": "structure", - "members": { - "Value": { - "shape": "S8" - }, - "Exists": { - "type": "boolean" - }, - "ComparisonOperator": {}, - "AttributeValueList": { - "shape": "S2i" - } - } - } - }, - "S2i": { - "type": "list", - "member": { - "shape": "S8" - } - }, - "S2m": { - "type": "map", - "key": {}, - "value": { - "shape": "S8" - } - }, - "S3a": { - "type": "list", - "member": { - "type": "structure", - "required": [ - "Key", - "Value" - ], - "members": { - "Key": {}, - "Value": {} - } - } - }, - "S3k": { - "type": "structure", - "required": [ - "ComparisonOperator" - ], - "members": { - "AttributeValueList": { - "shape": "S2i" - }, - "ComparisonOperator": {} - } - }, - "S3l": { - "type": "map", - "key": {}, - "value": { - "shape": "S3k" - } - }, - "S4a": { - "type": "structure", - "required": [ - "Enabled", - "AttributeName" - ], - "members": { - "Enabled": { - "type": "boolean" - }, - "AttributeName": {} - } - } - } -} \ No newline at end of file diff --git a/workshops/monte-carlo-on-ec2-spot-fleet/src/web/node_modules/aws-sdk/apis/dynamodb-2012-08-10.paginators.json b/workshops/monte-carlo-on-ec2-spot-fleet/src/web/node_modules/aws-sdk/apis/dynamodb-2012-08-10.paginators.json deleted file mode 100644 index 3037d662..00000000 --- a/workshops/monte-carlo-on-ec2-spot-fleet/src/web/node_modules/aws-sdk/apis/dynamodb-2012-08-10.paginators.json +++ /dev/null @@ -1,26 +0,0 @@ -{ - "pagination": { - "BatchGetItem": { - "input_token": "RequestItems", - "output_token": "UnprocessedKeys" - }, - "ListTables": { - "input_token": "ExclusiveStartTableName", - "limit_key": "Limit", - "output_token": "LastEvaluatedTableName", - "result_key": "TableNames" - }, - "Query": { - "input_token": "ExclusiveStartKey", - "limit_key": "Limit", - "output_token": "LastEvaluatedKey", - "result_key": "Items" - }, - "Scan": { - "input_token": "ExclusiveStartKey", - "limit_key": "Limit", - "output_token": "LastEvaluatedKey", - "result_key": "Items" - } - } -} \ No newline at end of file diff --git a/workshops/monte-carlo-on-ec2-spot-fleet/src/web/node_modules/aws-sdk/apis/dynamodb-2012-08-10.waiters2.json b/workshops/monte-carlo-on-ec2-spot-fleet/src/web/node_modules/aws-sdk/apis/dynamodb-2012-08-10.waiters2.json deleted file mode 100644 index 43a55ca7..00000000 --- a/workshops/monte-carlo-on-ec2-spot-fleet/src/web/node_modules/aws-sdk/apis/dynamodb-2012-08-10.waiters2.json +++ /dev/null @@ -1,35 +0,0 @@ -{ - "version": 2, - "waiters": { - "TableExists": { - "delay": 20, - "operation": "DescribeTable", - "maxAttempts": 25, - "acceptors": [ - { - "expected": "ACTIVE", - "matcher": "path", - "state": "success", - "argument": "Table.TableStatus" - }, - { - "expected": "ResourceNotFoundException", - "matcher": "error", - "state": "retry" - } - ] - }, - "TableNotExists": { - "delay": 20, - "operation": "DescribeTable", - "maxAttempts": 25, - "acceptors": [ - { - "expected": "ResourceNotFoundException", - "matcher": "error", - "state": "success" - } - ] - } - } -} diff --git a/workshops/monte-carlo-on-ec2-spot-fleet/src/web/node_modules/aws-sdk/apis/ec2-2016-11-15.examples.json b/workshops/monte-carlo-on-ec2-spot-fleet/src/web/node_modules/aws-sdk/apis/ec2-2016-11-15.examples.json deleted file mode 100644 index f6a8719f..00000000 --- a/workshops/monte-carlo-on-ec2-spot-fleet/src/web/node_modules/aws-sdk/apis/ec2-2016-11-15.examples.json +++ /dev/null @@ -1,3740 +0,0 @@ -{ - "version": "1.0", - "examples": { - "AllocateAddress": [ - { - "input": { - "Domain": "vpc" - }, - "output": { - "AllocationId": "eipalloc-64d5890a", - "Domain": "vpc", - "PublicIp": "203.0.113.0" - }, - "comments": { - "input": { - }, - "output": { - } - }, - "description": "This example allocates an Elastic IP address to use with an instance in a VPC.", - "id": "ec2-allocate-address-1", - "title": "To allocate an Elastic IP address for EC2-VPC" - }, - { - "output": { - "Domain": "standard", - "PublicIp": "198.51.100.0" - }, - "comments": { - "input": { - }, - "output": { - } - }, - "description": "This example allocates an Elastic IP address to use with an instance in EC2-Classic.", - "id": "ec2-allocate-address-2", - "title": "To allocate an Elastic IP address for EC2-Classic" - } - ], - "AssignPrivateIpAddresses": [ - { - "input": { - "NetworkInterfaceId": "eni-e5aa89a3", - "PrivateIpAddresses": [ - "10.0.0.82" - ] - }, - "comments": { - "input": { - }, - "output": { - } - }, - "description": "This example assigns the specified secondary private IP address to the specified network interface.", - "id": "ec2-assign-private-ip-addresses-1", - "title": "To assign a specific secondary private IP address to an interface" - }, - { - "input": { - "NetworkInterfaceId": "eni-e5aa89a3", - "SecondaryPrivateIpAddressCount": 2 - }, - "comments": { - "input": { - }, - "output": { - } - }, - "description": "This example assigns two secondary private IP addresses to the specified network interface. Amazon EC2 automatically assigns these IP addresses from the available IP addresses in the CIDR block range of the subnet the network interface is associated with.", - "id": "ec2-assign-private-ip-addresses-2", - "title": "To assign secondary private IP addresses that Amazon EC2 selects to an interface" - } - ], - "AssociateAddress": [ - { - "input": { - "AllocationId": "eipalloc-64d5890a", - "InstanceId": "i-0b263919b6498b123" - }, - "output": { - "AssociationId": "eipassoc-2bebb745" - }, - "comments": { - "input": { - }, - "output": { - } - }, - "description": "This example associates the specified Elastic IP address with the specified instance in a VPC.", - "id": "ec2-associate-address-1", - "title": "To associate an Elastic IP address in EC2-VPC" - }, - { - "input": { - "AllocationId": "eipalloc-64d5890a", - "NetworkInterfaceId": "eni-1a2b3c4d" - }, - "output": { - "AssociationId": "eipassoc-2bebb745" - }, - "comments": { - "input": { - }, - "output": { - } - }, - "description": "This example associates the specified Elastic IP address with the specified network interface.", - "id": "ec2-associate-address-2", - "title": "To associate an Elastic IP address with a network interface" - }, - { - "input": { - "InstanceId": "i-07ffe74c7330ebf53", - "PublicIp": "198.51.100.0" - }, - "comments": { - "input": { - }, - "output": { - } - }, - "description": "This example associates an Elastic IP address with an instance in EC2-Classic.", - "id": "ec2-associate-address-3", - "title": "To associate an Elastic IP address in EC2-Classic" - } - ], - "AssociateDhcpOptions": [ - { - "input": { - "DhcpOptionsId": "dopt-d9070ebb", - "VpcId": "vpc-a01106c2" - }, - "comments": { - "input": { - }, - "output": { - } - }, - "description": "This example associates the specified DHCP options set with the specified VPC.", - "id": "ec2-associate-dhcp-options-1", - "title": "To associate a DHCP options set with a VPC" - }, - { - "input": { - "DhcpOptionsId": "default", - "VpcId": "vpc-a01106c2" - }, - "comments": { - "input": { - }, - "output": { - } - }, - "description": "This example associates the default DHCP options set with the specified VPC.", - "id": "ec2-associate-dhcp-options-2", - "title": "To associate the default DHCP options set with a VPC" - } - ], - "AssociateRouteTable": [ - { - "input": { - "RouteTableId": "rtb-22574640", - "SubnetId": "subnet-9d4a7b6" - }, - "output": { - "AssociationId": "rtbassoc-781d0d1a" - }, - "comments": { - "input": { - }, - "output": { - } - }, - "description": "This example associates the specified route table with the specified subnet.", - "id": "ec2-associate-route-table-1", - "title": "To associate a route table with a subnet" - } - ], - "AttachInternetGateway": [ - { - "input": { - "InternetGatewayId": "igw-c0a643a9", - "VpcId": "vpc-a01106c2" - }, - "comments": { - "input": { - }, - "output": { - } - }, - "description": "This example attaches the specified Internet gateway to the specified VPC.", - "id": "ec2-attach-internet-gateway-1", - "title": "To attach an Internet gateway to a VPC" - } - ], - "AttachNetworkInterface": [ - { - "input": { - "DeviceIndex": 1, - "InstanceId": "i-1234567890abcdef0", - "NetworkInterfaceId": "eni-e5aa89a3" - }, - "output": { - "AttachmentId": "eni-attach-66c4350a" - }, - "comments": { - "input": { - }, - "output": { - } - }, - "description": "This example attaches the specified network interface to the specified instance.", - "id": "ec2-attach-network-interface-1", - "title": "To attach a network interface to an instance" - } - ], - "AttachVolume": [ - { - "input": { - "Device": "/dev/sdf", - "InstanceId": "i-01474ef662b89480", - "VolumeId": "vol-1234567890abcdef0" - }, - "output": { - "AttachTime": "2016-08-29T18:52:32.724Z", - "Device": "/dev/sdf", - "InstanceId": "i-01474ef662b89480", - "State": "attaching", - "VolumeId": "vol-1234567890abcdef0" - }, - "comments": { - "input": { - }, - "output": { - } - }, - "description": "This example attaches a volume (``vol-1234567890abcdef0``) to an instance (``i-01474ef662b89480``) as ``/dev/sdf``.", - "id": "to-attach-a-volume-to-an-instance-1472499213109", - "title": "To attach a volume to an instance" - } - ], - "CancelSpotFleetRequests": [ - { - "input": { - "SpotFleetRequestIds": [ - "sfr-73fbd2ce-aa30-494c-8788-1cee4EXAMPLE" - ], - "TerminateInstances": true - }, - "output": { - "SuccessfulFleetRequests": [ - { - "CurrentSpotFleetRequestState": "cancelled_running", - "PreviousSpotFleetRequestState": "active", - "SpotFleetRequestId": "sfr-73fbd2ce-aa30-494c-8788-1cee4EXAMPLE" - } - ] - }, - "comments": { - "input": { - }, - "output": { - } - }, - "description": "This example cancels the specified Spot fleet request and terminates its associated Spot Instances.", - "id": "ec2-cancel-spot-fleet-requests-1", - "title": "To cancel a Spot fleet request" - }, - { - "input": { - "SpotFleetRequestIds": [ - "sfr-73fbd2ce-aa30-494c-8788-1cee4EXAMPLE" - ], - "TerminateInstances": false - }, - "output": { - "SuccessfulFleetRequests": [ - { - "CurrentSpotFleetRequestState": "cancelled_terminating", - "PreviousSpotFleetRequestState": "active", - "SpotFleetRequestId": "sfr-73fbd2ce-aa30-494c-8788-1cee4EXAMPLE" - } - ] - }, - "comments": { - "input": { - }, - "output": { - } - }, - "description": "This example cancels the specified Spot fleet request without terminating its associated Spot Instances.", - "id": "ec2-cancel-spot-fleet-requests-2", - "title": "To cancel a Spot fleet request without terminating its Spot Instances" - } - ], - "CancelSpotInstanceRequests": [ - { - "input": { - "SpotInstanceRequestIds": [ - "sir-08b93456" - ] - }, - "output": { - "CancelledSpotInstanceRequests": [ - { - "SpotInstanceRequestId": "sir-08b93456", - "State": "cancelled" - } - ] - }, - "comments": { - "input": { - }, - "output": { - } - }, - "description": "This example cancels a Spot Instance request.", - "id": "ec2-cancel-spot-instance-requests-1", - "title": "To cancel Spot Instance requests" - } - ], - "ConfirmProductInstance": [ - { - "input": { - "InstanceId": "i-1234567890abcdef0", - "ProductCode": "774F4FF8" - }, - "output": { - "OwnerId": "123456789012" - }, - "comments": { - "input": { - }, - "output": { - } - }, - "description": "This example determines whether the specified product code is associated with the specified instance.", - "id": "to-confirm-the-product-instance-1472712108494", - "title": "To confirm the product instance" - } - ], - "CopySnapshot": [ - { - "input": { - "Description": "This is my copied snapshot.", - "DestinationRegion": "us-east-1", - "SourceRegion": "us-west-2", - "SourceSnapshotId": "snap-066877671789bd71b" - }, - "output": { - "SnapshotId": "snap-066877671789bd71b" - }, - "comments": { - "input": { - }, - "output": { - } - }, - "description": "This example copies a snapshot with the snapshot ID of ``snap-066877671789bd71b`` from the ``us-west-2`` region to the ``us-east-1`` region and adds a short description to identify the snapshot.", - "id": "to-copy-a-snapshot-1472502259774", - "title": "To copy a snapshot" - } - ], - "CreateCustomerGateway": [ - { - "input": { - "BgpAsn": 65534, - "PublicIp": "12.1.2.3", - "Type": "ipsec.1" - }, - "output": { - "CustomerGateway": { - "BgpAsn": "65534", - "CustomerGatewayId": "cgw-0e11f167", - "IpAddress": "12.1.2.3", - "State": "available", - "Type": "ipsec.1" - } - }, - "comments": { - "input": { - }, - "output": { - } - }, - "description": "This example creates a customer gateway with the specified IP address for its outside interface.", - "id": "ec2-create-customer-gateway-1", - "title": "To create a customer gateway" - } - ], - "CreateDhcpOptions": [ - { - "input": { - "DhcpConfigurations": [ - { - "Key": "domain-name-servers", - "Values": [ - "10.2.5.1", - "10.2.5.2" - ] - } - ] - }, - "output": { - "DhcpOptions": { - "DhcpConfigurations": [ - { - "Key": "domain-name-servers", - "Values": [ - { - "Value": "10.2.5.2" - }, - { - "Value": "10.2.5.1" - } - ] - } - ], - "DhcpOptionsId": "dopt-d9070ebb" - } - }, - "comments": { - "input": { - }, - "output": { - } - }, - "description": "This example creates a DHCP options set.", - "id": "ec2-create-dhcp-options-1", - "title": "To create a DHCP options set" - } - ], - "CreateInternetGateway": [ - { - "output": { - "InternetGateway": { - "Attachments": [ - - ], - "InternetGatewayId": "igw-c0a643a9", - "Tags": [ - - ] - } - }, - "comments": { - "input": { - }, - "output": { - } - }, - "description": "This example creates an Internet gateway.", - "id": "ec2-create-internet-gateway-1", - "title": "To create an Internet gateway" - } - ], - "CreateKeyPair": [ - { - "input": { - "KeyName": "my-key-pair" - }, - "comments": { - "input": { - }, - "output": { - } - }, - "description": "This example creates a key pair named my-key-pair.", - "id": "ec2-create-key-pair-1", - "title": "To create a key pair" - } - ], - "CreateNatGateway": [ - { - "input": { - "AllocationId": "eipalloc-37fc1a52", - "SubnetId": "subnet-1a2b3c4d" - }, - "output": { - "NatGateway": { - "CreateTime": "2015-12-17T12:45:26.732Z", - "NatGatewayAddresses": [ - { - "AllocationId": "eipalloc-37fc1a52" - } - ], - "NatGatewayId": "nat-08d48af2a8e83edfd", - "State": "pending", - "SubnetId": "subnet-1a2b3c4d", - "VpcId": "vpc-1122aabb" - } - }, - "comments": { - "input": { - }, - "output": { - } - }, - "description": "This example creates a NAT gateway in subnet subnet-1a2b3c4d and associates an Elastic IP address with the allocation ID eipalloc-37fc1a52 with the NAT gateway.", - "id": "ec2-create-nat-gateway-1", - "title": "To create a NAT gateway" - } - ], - "CreateNetworkAcl": [ - { - "input": { - "VpcId": "vpc-a01106c2" - }, - "output": { - "NetworkAcl": { - "Associations": [ - - ], - "Entries": [ - { - "CidrBlock": "0.0.0.0/0", - "Egress": true, - "Protocol": "-1", - "RuleAction": "deny", - "RuleNumber": 32767 - }, - { - "CidrBlock": "0.0.0.0/0", - "Egress": false, - "Protocol": "-1", - "RuleAction": "deny", - "RuleNumber": 32767 - } - ], - "IsDefault": false, - "NetworkAclId": "acl-5fb85d36", - "Tags": [ - - ], - "VpcId": "vpc-a01106c2" - } - }, - "comments": { - "input": { - }, - "output": { - } - }, - "description": "This example creates a network ACL for the specified VPC.", - "id": "ec2-create-network-acl-1", - "title": "To create a network ACL" - } - ], - "CreateNetworkAclEntry": [ - { - "input": { - "CidrBlock": "0.0.0.0/0", - "Egress": false, - "NetworkAclId": "acl-5fb85d36", - "PortRange": { - "From": 53, - "To": 53 - }, - "Protocol": "udp", - "RuleAction": "allow", - "RuleNumber": 100 - }, - "comments": { - "input": { - }, - "output": { - } - }, - "description": "This example creates an entry for the specified network ACL. The rule allows ingress traffic from anywhere (0.0.0.0/0) on UDP port 53 (DNS) into any associated subnet.", - "id": "ec2-create-network-acl-entry-1", - "title": "To create a network ACL entry" - } - ], - "CreateNetworkInterface": [ - { - "input": { - "Description": "my network interface", - "Groups": [ - "sg-903004f8" - ], - "PrivateIpAddress": "10.0.2.17", - "SubnetId": "subnet-9d4a7b6c" - }, - "output": { - "NetworkInterface": { - "AvailabilityZone": "us-east-1d", - "Description": "my network interface", - "Groups": [ - { - "GroupId": "sg-903004f8", - "GroupName": "default" - } - ], - "MacAddress": "02:1a:80:41:52:9c", - "NetworkInterfaceId": "eni-e5aa89a3", - "OwnerId": "123456789012", - "PrivateIpAddress": "10.0.2.17", - "PrivateIpAddresses": [ - { - "Primary": true, - "PrivateIpAddress": "10.0.2.17" - } - ], - "RequesterManaged": false, - "SourceDestCheck": true, - "Status": "pending", - "SubnetId": "subnet-9d4a7b6c", - "TagSet": [ - - ], - "VpcId": "vpc-a01106c2" - } - }, - "comments": { - "input": { - }, - "output": { - } - }, - "description": "This example creates a network interface for the specified subnet.", - "id": "ec2-create-network-interface-1", - "title": "To create a network interface" - } - ], - "CreatePlacementGroup": [ - { - "input": { - "GroupName": "my-cluster", - "Strategy": "cluster" - }, - "output": { - }, - "comments": { - "input": { - }, - "output": { - } - }, - "description": "This example creates a placement group with the specified name.", - "id": "to-create-a-placement-group-1472712245768", - "title": "To create a placement group" - } - ], - "CreateRoute": [ - { - "input": { - "DestinationCidrBlock": "0.0.0.0/0", - "GatewayId": "igw-c0a643a9", - "RouteTableId": "rtb-22574640" - }, - "comments": { - "input": { - }, - "output": { - } - }, - "description": "This example creates a route for the specified route table. The route matches all traffic (0.0.0.0/0) and routes it to the specified Internet gateway.", - "id": "ec2-create-route-1", - "title": "To create a route" - } - ], - "CreateRouteTable": [ - { - "input": { - "VpcId": "vpc-a01106c2" - }, - "output": { - "RouteTable": { - "Associations": [ - - ], - "PropagatingVgws": [ - - ], - "RouteTableId": "rtb-22574640", - "Routes": [ - { - "DestinationCidrBlock": "10.0.0.0/16", - "GatewayId": "local", - "State": "active" - } - ], - "Tags": [ - - ], - "VpcId": "vpc-a01106c2" - } - }, - "comments": { - "input": { - }, - "output": { - } - }, - "description": "This example creates a route table for the specified VPC.", - "id": "ec2-create-route-table-1", - "title": "To create a route table" - } - ], - "CreateSnapshot": [ - { - "input": { - "Description": "This is my root volume snapshot.", - "VolumeId": "vol-1234567890abcdef0" - }, - "output": { - "Description": "This is my root volume snapshot.", - "OwnerId": "012345678910", - "SnapshotId": "snap-066877671789bd71b", - "StartTime": "2014-02-28T21:06:01.000Z", - "State": "pending", - "Tags": [ - - ], - "VolumeId": "vol-1234567890abcdef0", - "VolumeSize": 8 - }, - "comments": { - "input": { - }, - "output": { - } - }, - "description": "This example creates a snapshot of the volume with a volume ID of ``vol-1234567890abcdef0`` and a short description to identify the snapshot.", - "id": "to-create-a-snapshot-1472502529790", - "title": "To create a snapshot" - } - ], - "CreateSpotDatafeedSubscription": [ - { - "input": { - "Bucket": "my-s3-bucket", - "Prefix": "spotdata" - }, - "output": { - "SpotDatafeedSubscription": { - "Bucket": "my-s3-bucket", - "OwnerId": "123456789012", - "Prefix": "spotdata", - "State": "Active" - } - }, - "comments": { - "input": { - }, - "output": { - } - }, - "description": "This example creates a Spot Instance data feed for your AWS account.", - "id": "ec2-create-spot-datafeed-subscription-1", - "title": "To create a Spot Instance datafeed" - } - ], - "CreateSubnet": [ - { - "input": { - "CidrBlock": "10.0.1.0/24", - "VpcId": "vpc-a01106c2" - }, - "output": { - "Subnet": { - "AvailabilityZone": "us-west-2c", - "AvailableIpAddressCount": 251, - "CidrBlock": "10.0.1.0/24", - "State": "pending", - "SubnetId": "subnet-9d4a7b6c", - "VpcId": "vpc-a01106c2" - } - }, - "comments": { - "input": { - }, - "output": { - } - }, - "description": "This example creates a subnet in the specified VPC with the specified CIDR block. We recommend that you let us select an Availability Zone for you.", - "id": "ec2-create-subnet-1", - "title": "To create a subnet" - } - ], - "CreateTags": [ - { - "input": { - "Resources": [ - "ami-78a54011" - ], - "Tags": [ - { - "Key": "Stack", - "Value": "production" - } - ] - }, - "comments": { - "input": { - }, - "output": { - } - }, - "description": "This example adds the tag Stack=production to the specified image, or overwrites an existing tag for the AMI where the tag key is Stack.", - "id": "ec2-create-tags-1", - "title": "To add a tag to a resource" - } - ], - "CreateVolume": [ - { - "input": { - "AvailabilityZone": "us-east-1a", - "Size": 80, - "VolumeType": "gp2" - }, - "output": { - "AvailabilityZone": "us-east-1a", - "CreateTime": "2016-08-29T18:52:32.724Z", - "Encrypted": false, - "Iops": 240, - "Size": 80, - "SnapshotId": "", - "State": "creating", - "VolumeId": "vol-6b60b7c7", - "VolumeType": "gp2" - }, - "comments": { - "input": { - }, - "output": { - } - }, - "description": "This example creates an 80 GiB General Purpose (SSD) volume in the Availability Zone ``us-east-1a``.", - "id": "to-create-a-new-volume-1472496724296", - "title": "To create a new volume" - }, - { - "input": { - "AvailabilityZone": "us-east-1a", - "Iops": 1000, - "SnapshotId": "snap-066877671789bd71b", - "VolumeType": "io1" - }, - "output": { - "Attachments": [ - - ], - "AvailabilityZone": "us-east-1a", - "CreateTime": "2016-08-29T18:52:32.724Z", - "Iops": 1000, - "Size": 500, - "SnapshotId": "snap-066877671789bd71b", - "State": "creating", - "Tags": [ - - ], - "VolumeId": "vol-1234567890abcdef0", - "VolumeType": "io1" - }, - "comments": { - "input": { - }, - "output": { - } - }, - "description": "This example creates a new Provisioned IOPS (SSD) volume with 1000 provisioned IOPS from a snapshot in the Availability Zone ``us-east-1a``.", - "id": "to-create-a-new-provisioned-iops-ssd-volume-from-a-snapshot-1472498975176", - "title": "To create a new Provisioned IOPS (SSD) volume from a snapshot" - } - ], - "CreateVpc": [ - { - "input": { - "CidrBlock": "10.0.0.0/16" - }, - "output": { - "Vpc": { - "CidrBlock": "10.0.0.0/16", - "DhcpOptionsId": "dopt-7a8b9c2d", - "InstanceTenancy": "default", - "State": "pending", - "VpcId": "vpc-a01106c2" - } - }, - "comments": { - "input": { - }, - "output": { - } - }, - "description": "This example creates a VPC with the specified CIDR block.", - "id": "ec2-create-vpc-1", - "title": "To create a VPC" - } - ], - "DeleteCustomerGateway": [ - { - "input": { - "CustomerGatewayId": "cgw-0e11f167" - }, - "comments": { - "input": { - }, - "output": { - } - }, - "description": "This example deletes the specified customer gateway.", - "id": "ec2-delete-customer-gateway-1", - "title": "To delete a customer gateway" - } - ], - "DeleteDhcpOptions": [ - { - "input": { - "DhcpOptionsId": "dopt-d9070ebb" - }, - "comments": { - "input": { - }, - "output": { - } - }, - "description": "This example deletes the specified DHCP options set.", - "id": "ec2-delete-dhcp-options-1", - "title": "To delete a DHCP options set" - } - ], - "DeleteInternetGateway": [ - { - "input": { - "InternetGatewayId": "igw-c0a643a9" - }, - "comments": { - "input": { - }, - "output": { - } - }, - "description": "This example deletes the specified Internet gateway.", - "id": "ec2-delete-internet-gateway-1", - "title": "To delete an Internet gateway" - } - ], - "DeleteKeyPair": [ - { - "input": { - "KeyName": "my-key-pair" - }, - "comments": { - "input": { - }, - "output": { - } - }, - "description": "This example deletes the specified key pair.", - "id": "ec2-delete-key-pair-1", - "title": "To delete a key pair" - } - ], - "DeleteNatGateway": [ - { - "input": { - "NatGatewayId": "nat-04ae55e711cec5680" - }, - "output": { - "NatGatewayId": "nat-04ae55e711cec5680" - }, - "comments": { - "input": { - }, - "output": { - } - }, - "description": "This example deletes the specified NAT gateway.", - "id": "ec2-delete-nat-gateway-1", - "title": "To delete a NAT gateway" - } - ], - "DeleteNetworkAcl": [ - { - "input": { - "NetworkAclId": "acl-5fb85d36" - }, - "comments": { - "input": { - }, - "output": { - } - }, - "description": "This example deletes the specified network ACL.", - "id": "ec2-delete-network-acl-1", - "title": "To delete a network ACL" - } - ], - "DeleteNetworkAclEntry": [ - { - "input": { - "Egress": true, - "NetworkAclId": "acl-5fb85d36", - "RuleNumber": 100 - }, - "comments": { - "input": { - }, - "output": { - } - }, - "description": "This example deletes ingress rule number 100 from the specified network ACL.", - "id": "ec2-delete-network-acl-entry-1", - "title": "To delete a network ACL entry" - } - ], - "DeleteNetworkInterface": [ - { - "input": { - "NetworkInterfaceId": "eni-e5aa89a3" - }, - "comments": { - "input": { - }, - "output": { - } - }, - "description": "This example deletes the specified network interface.", - "id": "ec2-delete-network-interface-1", - "title": "To delete a network interface" - } - ], - "DeletePlacementGroup": [ - { - "input": { - "GroupName": "my-cluster" - }, - "output": { - }, - "comments": { - "input": { - }, - "output": { - } - }, - "description": "This example deletes the specified placement group.\n", - "id": "to-delete-a-placement-group-1472712349959", - "title": "To delete a placement group" - } - ], - "DeleteRoute": [ - { - "input": { - "DestinationCidrBlock": "0.0.0.0/0", - "RouteTableId": "rtb-22574640" - }, - "comments": { - "input": { - }, - "output": { - } - }, - "description": "This example deletes the specified route from the specified route table.", - "id": "ec2-delete-route-1", - "title": "To delete a route" - } - ], - "DeleteRouteTable": [ - { - "input": { - "RouteTableId": "rtb-22574640" - }, - "comments": { - "input": { - }, - "output": { - } - }, - "description": "This example deletes the specified route table.", - "id": "ec2-delete-route-table-1", - "title": "To delete a route table" - } - ], - "DeleteSnapshot": [ - { - "input": { - "SnapshotId": "snap-1234567890abcdef0" - }, - "output": { - }, - "comments": { - "input": { - }, - "output": { - } - }, - "description": "This example deletes a snapshot with the snapshot ID of ``snap-1234567890abcdef0``. If the command succeeds, no output is returned.", - "id": "to-delete-a-snapshot-1472503042567", - "title": "To delete a snapshot" - } - ], - "DeleteSpotDatafeedSubscription": [ - { - "comments": { - "input": { - }, - "output": { - } - }, - "description": "This example deletes a Spot data feed subscription for the account.", - "id": "ec2-delete-spot-datafeed-subscription-1", - "title": "To cancel a Spot Instance data feed subscription" - } - ], - "DeleteSubnet": [ - { - "input": { - "SubnetId": "subnet-9d4a7b6c" - }, - "comments": { - "input": { - }, - "output": { - } - }, - "description": "This example deletes the specified subnet.", - "id": "ec2-delete-subnet-1", - "title": "To delete a subnet" - } - ], - "DeleteTags": [ - { - "input": { - "Resources": [ - "ami-78a54011" - ], - "Tags": [ - { - "Key": "Stack", - "Value": "test" - } - ] - }, - "comments": { - "input": { - }, - "output": { - } - }, - "description": "This example deletes the tag Stack=test from the specified image.", - "id": "ec2-delete-tags-1", - "title": "To delete a tag from a resource" - } - ], - "DeleteVolume": [ - { - "input": { - "VolumeId": "vol-049df61146c4d7901" - }, - "output": { - }, - "comments": { - "input": { - }, - "output": { - } - }, - "description": "This example deletes an available volume with the volume ID of ``vol-049df61146c4d7901``. If the command succeeds, no output is returned.", - "id": "to-delete-a-volume-1472503111160", - "title": "To delete a volume" - } - ], - "DeleteVpc": [ - { - "input": { - "VpcId": "vpc-a01106c2" - }, - "comments": { - "input": { - }, - "output": { - } - }, - "description": "This example deletes the specified VPC.", - "id": "ec2-delete-vpc-1", - "title": "To delete a VPC" - } - ], - "DescribeAccountAttributes": [ - { - "input": { - "AttributeNames": [ - "supported-platforms" - ] - }, - "output": { - "AccountAttributes": [ - { - "AttributeName": "supported-platforms", - "AttributeValues": [ - { - "AttributeValue": "EC2" - }, - { - "AttributeValue": "VPC" - } - ] - } - ] - }, - "comments": { - "input": { - }, - "output": { - } - }, - "description": "This example describes the supported-platforms attribute for your AWS account.", - "id": "ec2-describe-account-attributes-1", - "title": "To describe a single attribute for your AWS account" - }, - { - "output": { - "AccountAttributes": [ - { - "AttributeName": "supported-platforms", - "AttributeValues": [ - { - "AttributeValue": "EC2" - }, - { - "AttributeValue": "VPC" - } - ] - }, - { - "AttributeName": "vpc-max-security-groups-per-interface", - "AttributeValues": [ - { - "AttributeValue": "5" - } - ] - }, - { - "AttributeName": "max-elastic-ips", - "AttributeValues": [ - { - "AttributeValue": "5" - } - ] - }, - { - "AttributeName": "max-instances", - "AttributeValues": [ - { - "AttributeValue": "20" - } - ] - }, - { - "AttributeName": "vpc-max-elastic-ips", - "AttributeValues": [ - { - "AttributeValue": "5" - } - ] - }, - { - "AttributeName": "default-vpc", - "AttributeValues": [ - { - "AttributeValue": "none" - } - ] - } - ] - }, - "comments": { - "input": { - }, - "output": { - } - }, - "description": "This example describes the attributes for your AWS account.", - "id": "ec2-describe-account-attributes-2", - "title": "To describe all attributes for your AWS account" - } - ], - "DescribeAddresses": [ - { - "output": { - "Addresses": [ - { - "Domain": "standard", - "InstanceId": "i-1234567890abcdef0", - "PublicIp": "198.51.100.0" - }, - { - "AllocationId": "eipalloc-12345678", - "AssociationId": "eipassoc-12345678", - "Domain": "vpc", - "InstanceId": "i-1234567890abcdef0", - "NetworkInterfaceId": "eni-12345678", - "NetworkInterfaceOwnerId": "123456789012", - "PrivateIpAddress": "10.0.1.241", - "PublicIp": "203.0.113.0" - } - ] - }, - "comments": { - "input": { - }, - "output": { - } - }, - "description": "This example describes your Elastic IP addresses.", - "id": "ec2-describe-addresses-1", - "title": "To describe your Elastic IP addresses" - }, - { - "input": { - "Filters": [ - { - "Name": "domain", - "Values": [ - "vpc" - ] - } - ] - }, - "output": { - "Addresses": [ - { - "AllocationId": "eipalloc-12345678", - "AssociationId": "eipassoc-12345678", - "Domain": "vpc", - "InstanceId": "i-1234567890abcdef0", - "NetworkInterfaceId": "eni-12345678", - "NetworkInterfaceOwnerId": "123456789012", - "PrivateIpAddress": "10.0.1.241", - "PublicIp": "203.0.113.0" - } - ] - }, - "comments": { - "input": { - }, - "output": { - } - }, - "description": "This example describes your Elastic IP addresses for use with instances in a VPC.", - "id": "ec2-describe-addresses-2", - "title": "To describe your Elastic IP addresses for EC2-VPC" - }, - { - "input": { - "Filters": [ - { - "Name": "domain", - "Values": [ - "standard" - ] - } - ] - }, - "output": { - "Addresses": [ - { - "Domain": "standard", - "InstanceId": "i-1234567890abcdef0", - "PublicIp": "198.51.100.0" - } - ] - }, - "comments": { - "input": { - }, - "output": { - } - }, - "description": "This example describes your Elastic IP addresses for use with instances in EC2-Classic.", - "id": "ec2-describe-addresses-3", - "title": "To describe your Elastic IP addresses for EC2-Classic" - } - ], - "DescribeAvailabilityZones": [ - { - "output": { - "AvailabilityZones": [ - { - "Messages": [ - - ], - "RegionName": "us-east-1", - "State": "available", - "ZoneName": "us-east-1b" - }, - { - "Messages": [ - - ], - "RegionName": "us-east-1", - "State": "available", - "ZoneName": "us-east-1c" - }, - { - "Messages": [ - - ], - "RegionName": "us-east-1", - "State": "available", - "ZoneName": "us-east-1d" - }, - { - "Messages": [ - - ], - "RegionName": "us-east-1", - "State": "available", - "ZoneName": "us-east-1e" - } - ] - }, - "comments": { - "input": { - }, - "output": { - } - }, - "description": "This example describes the Availability Zones that are available to you. The response includes Availability Zones only for the current region.", - "id": "ec2-describe-availability-zones-1", - "title": "To describe your Availability Zones" - } - ], - "DescribeCustomerGateways": [ - { - "input": { - "CustomerGatewayIds": [ - "cgw-0e11f167" - ] - }, - "output": { - "CustomerGateways": [ - { - "BgpAsn": "65534", - "CustomerGatewayId": "cgw-0e11f167", - "IpAddress": "12.1.2.3", - "State": "available", - "Type": "ipsec.1" - } - ] - }, - "comments": { - "input": { - }, - "output": { - } - }, - "description": "This example describes the specified customer gateway.", - "id": "ec2-describe-customer-gateways-1", - "title": "To describe a customer gateway" - } - ], - "DescribeDhcpOptions": [ - { - "input": { - "DhcpOptionsIds": [ - "dopt-d9070ebb" - ] - }, - "output": { - "DhcpOptions": [ - { - "DhcpConfigurations": [ - { - "Key": "domain-name-servers", - "Values": [ - { - "Value": "10.2.5.2" - }, - { - "Value": "10.2.5.1" - } - ] - } - ], - "DhcpOptionsId": "dopt-d9070ebb" - } - ] - }, - "comments": { - "input": { - }, - "output": { - } - }, - "description": "This example describes the specified DHCP options set.", - "id": "ec2-describe-dhcp-options-1", - "title": "To describe a DHCP options set" - } - ], - "DescribeInstanceAttribute": [ - { - "input": { - "Attribute": "instanceType", - "InstanceId": "i-1234567890abcdef0" - }, - "output": { - "InstanceId": "i-1234567890abcdef0", - "InstanceType": { - "Value": "t1.micro" - } - }, - "comments": { - "input": { - }, - "output": { - } - }, - "description": "This example describes the instance type of the specified instance.\n", - "id": "to-describe-the-instance-type-1472712432132", - "title": "To describe the instance type" - }, - { - "input": { - "Attribute": "disableApiTermination", - "InstanceId": "i-1234567890abcdef0" - }, - "output": { - "DisableApiTermination": { - "Value": "false" - }, - "InstanceId": "i-1234567890abcdef0" - }, - "comments": { - "input": { - }, - "output": { - } - }, - "description": "This example describes the ``disableApiTermination`` attribute of the specified instance.\n", - "id": "to-describe-the-disableapitermination-attribute-1472712533466", - "title": "To describe the disableApiTermination attribute" - }, - { - "input": { - "Attribute": "blockDeviceMapping", - "InstanceId": "i-1234567890abcdef0" - }, - "output": { - "BlockDeviceMappings": [ - { - "DeviceName": "/dev/sda1", - "Ebs": { - "AttachTime": "2013-05-17T22:42:34.000Z", - "DeleteOnTermination": true, - "Status": "attached", - "VolumeId": "vol-049df61146c4d7901" - } - }, - { - "DeviceName": "/dev/sdf", - "Ebs": { - "AttachTime": "2013-09-10T23:07:00.000Z", - "DeleteOnTermination": false, - "Status": "attached", - "VolumeId": "vol-049df61146c4d7901" - } - } - ], - "InstanceId": "i-1234567890abcdef0" - }, - "comments": { - "input": { - }, - "output": { - } - }, - "description": "This example describes the ``blockDeviceMapping`` attribute of the specified instance.\n", - "id": "to-describe-the-block-device-mapping-for-an-instance-1472712645423", - "title": "To describe the block device mapping for an instance" - } - ], - "DescribeInternetGateways": [ - { - "input": { - "Filters": [ - { - "Name": "attachment.vpc-id", - "Values": [ - "vpc-a01106c2" - ] - } - ] - }, - "output": { - "InternetGateways": [ - { - "Attachments": [ - { - "State": "available", - "VpcId": "vpc-a01106c2" - } - ], - "InternetGatewayId": "igw-c0a643a9", - "Tags": [ - - ] - } - ] - }, - "comments": { - "input": { - }, - "output": { - } - }, - "description": "This example describes the Internet gateway for the specified VPC.", - "id": "ec2-describe-internet-gateways-1", - "title": "To describe the Internet gateway for a VPC" - } - ], - "DescribeKeyPairs": [ - { - "input": { - "KeyNames": [ - "my-key-pair" - ] - }, - "output": { - "KeyPairs": [ - { - "KeyFingerprint": "1f:51:ae:28:bf:89:e9:d8:1f:25:5d:37:2d:7d:b8:ca:9f:f5:f1:6f", - "KeyName": "my-key-pair" - } - ] - }, - "comments": { - "input": { - }, - "output": { - } - }, - "description": "This example displays the fingerprint for the specified key.", - "id": "ec2-describe-key-pairs-1", - "title": "To display a key pair" - } - ], - "DescribeMovingAddresses": [ - { - "output": { - "MovingAddressStatuses": [ - { - "MoveStatus": "MovingToVpc", - "PublicIp": "198.51.100.0" - } - ] - }, - "comments": { - "input": { - }, - "output": { - } - }, - "description": "This example describes all of your moving Elastic IP addresses.", - "id": "ec2-describe-moving-addresses-1", - "title": "To describe your moving addresses" - } - ], - "DescribeNatGateways": [ - { - "input": { - "Filter": [ - { - "Name": "vpc-id", - "Values": [ - "vpc-1a2b3c4d" - ] - } - ] - }, - "output": { - "NatGateways": [ - { - "CreateTime": "2015-12-01T12:26:55.983Z", - "NatGatewayAddresses": [ - { - "AllocationId": "eipalloc-89c620ec", - "NetworkInterfaceId": "eni-9dec76cd", - "PrivateIp": "10.0.0.149", - "PublicIp": "198.11.222.333" - } - ], - "NatGatewayId": "nat-05dba92075d71c408", - "State": "available", - "SubnetId": "subnet-847e4dc2", - "VpcId": "vpc-1a2b3c4d" - } - ] - }, - "comments": { - "input": { - }, - "output": { - } - }, - "description": "This example describes the NAT gateway for the specified VPC.", - "id": "ec2-describe-nat-gateways-1", - "title": "To describe a NAT gateway" - } - ], - "DescribeNetworkAcls": [ - { - "input": { - "NetworkAclIds": [ - "acl-5fb85d36" - ] - }, - "output": { - "NetworkAcls": [ - { - "Associations": [ - { - "NetworkAclAssociationId": "aclassoc-66ea5f0b", - "NetworkAclId": "acl-9aeb5ef7", - "SubnetId": "subnet-65ea5f08" - } - ], - "Entries": [ - { - "CidrBlock": "0.0.0.0/0", - "Egress": true, - "Protocol": "-1", - "RuleAction": "deny", - "RuleNumber": 32767 - }, - { - "CidrBlock": "0.0.0.0/0", - "Egress": false, - "Protocol": "-1", - "RuleAction": "deny", - "RuleNumber": 32767 - } - ], - "IsDefault": false, - "NetworkAclId": "acl-5fb85d36", - "Tags": [ - - ], - "VpcId": "vpc-a01106c2" - } - ] - }, - "comments": { - "input": { - }, - "output": { - } - }, - "description": "This example describes the specified network ACL.", - "id": "ec2-", - "title": "To describe a network ACL" - } - ], - "DescribeNetworkInterfaceAttribute": [ - { - "input": { - "Attribute": "attachment", - "NetworkInterfaceId": "eni-686ea200" - }, - "output": { - "Attachment": { - "AttachTime": "2015-05-21T20:02:20.000Z", - "AttachmentId": "eni-attach-43348162", - "DeleteOnTermination": true, - "DeviceIndex": 0, - "InstanceId": "i-1234567890abcdef0", - "InstanceOwnerId": "123456789012", - "Status": "attached" - }, - "NetworkInterfaceId": "eni-686ea200" - }, - "comments": { - "input": { - }, - "output": { - } - }, - "description": "This example describes the attachment attribute of the specified network interface.", - "id": "ec2-describe-network-interface-attribute-1", - "title": "To describe the attachment attribute of a network interface" - }, - { - "input": { - "Attribute": "description", - "NetworkInterfaceId": "eni-686ea200" - }, - "output": { - "Description": { - "Value": "My description" - }, - "NetworkInterfaceId": "eni-686ea200" - }, - "comments": { - "input": { - }, - "output": { - } - }, - "description": "This example describes the description attribute of the specified network interface.", - "id": "ec2-describe-network-interface-attribute-2", - "title": "To describe the description attribute of a network interface" - }, - { - "input": { - "Attribute": "groupSet", - "NetworkInterfaceId": "eni-686ea200" - }, - "output": { - "Groups": [ - { - "GroupId": "sg-903004f8", - "GroupName": "my-security-group" - } - ], - "NetworkInterfaceId": "eni-686ea200" - }, - "comments": { - "input": { - }, - "output": { - } - }, - "description": "This example describes the groupSet attribute of the specified network interface.", - "id": "ec2-describe-network-interface-attribute-3", - "title": "To describe the groupSet attribute of a network interface" - }, - { - "input": { - "Attribute": "sourceDestCheck", - "NetworkInterfaceId": "eni-686ea200" - }, - "output": { - "NetworkInterfaceId": "eni-686ea200", - "SourceDestCheck": { - "Value": true - } - }, - "comments": { - "input": { - }, - "output": { - } - }, - "description": "This example describes the sourceDestCheck attribute of the specified network interface.", - "id": "ec2-describe-network-interface-attribute-4", - "title": "To describe the sourceDestCheck attribute of a network interface" - } - ], - "DescribeNetworkInterfaces": [ - { - "input": { - "NetworkInterfaceIds": [ - "eni-e5aa89a3" - ] - }, - "output": { - "NetworkInterfaces": [ - { - "Association": { - "AssociationId": "eipassoc-0fbb766a", - "IpOwnerId": "123456789012", - "PublicDnsName": "ec2-203-0-113-12.compute-1.amazonaws.com", - "PublicIp": "203.0.113.12" - }, - "Attachment": { - "AttachTime": "2013-11-30T23:36:42.000Z", - "AttachmentId": "eni-attach-66c4350a", - "DeleteOnTermination": false, - "DeviceIndex": 1, - "InstanceId": "i-1234567890abcdef0", - "InstanceOwnerId": "123456789012", - "Status": "attached" - }, - "AvailabilityZone": "us-east-1d", - "Description": "my network interface", - "Groups": [ - { - "GroupId": "sg-8637d3e3", - "GroupName": "default" - } - ], - "MacAddress": "02:2f:8f:b0:cf:75", - "NetworkInterfaceId": "eni-e5aa89a3", - "OwnerId": "123456789012", - "PrivateDnsName": "ip-10-0-1-17.ec2.internal", - "PrivateIpAddress": "10.0.1.17", - "PrivateIpAddresses": [ - { - "Association": { - "AssociationId": "eipassoc-0fbb766a", - "IpOwnerId": "123456789012", - "PublicDnsName": "ec2-203-0-113-12.compute-1.amazonaws.com", - "PublicIp": "203.0.113.12" - }, - "Primary": true, - "PrivateDnsName": "ip-10-0-1-17.ec2.internal", - "PrivateIpAddress": "10.0.1.17" - } - ], - "RequesterManaged": false, - "SourceDestCheck": true, - "Status": "in-use", - "SubnetId": "subnet-b61f49f0", - "TagSet": [ - - ], - "VpcId": "vpc-a01106c2" - } - ] - }, - "comments": { - "input": { - }, - "output": { - } - }, - "description": "", - "id": "ec2-describe-network-interfaces-1", - "title": "To describe a network interface" - } - ], - "DescribeRegions": [ - { - "output": { - "Regions": [ - { - "Endpoint": "ec2.ap-south-1.amazonaws.com", - "RegionName": "ap-south-1" - }, - { - "Endpoint": "ec2.eu-west-1.amazonaws.com", - "RegionName": "eu-west-1" - }, - { - "Endpoint": "ec2.ap-southeast-1.amazonaws.com", - "RegionName": "ap-southeast-1" - }, - { - "Endpoint": "ec2.ap-southeast-2.amazonaws.com", - "RegionName": "ap-southeast-2" - }, - { - "Endpoint": "ec2.eu-central-1.amazonaws.com", - "RegionName": "eu-central-1" - }, - { - "Endpoint": "ec2.ap-northeast-2.amazonaws.com", - "RegionName": "ap-northeast-2" - }, - { - "Endpoint": "ec2.ap-northeast-1.amazonaws.com", - "RegionName": "ap-northeast-1" - }, - { - "Endpoint": "ec2.us-east-1.amazonaws.com", - "RegionName": "us-east-1" - }, - { - "Endpoint": "ec2.sa-east-1.amazonaws.com", - "RegionName": "sa-east-1" - }, - { - "Endpoint": "ec2.us-west-1.amazonaws.com", - "RegionName": "us-west-1" - }, - { - "Endpoint": "ec2.us-west-2.amazonaws.com", - "RegionName": "us-west-2" - } - ] - }, - "comments": { - "input": { - }, - "output": { - } - }, - "description": "This example describes all the regions that are available to you.", - "id": "ec2-describe-regions-1", - "title": "To describe your regions" - } - ], - "DescribeRouteTables": [ - { - "input": { - "RouteTableIds": [ - "rtb-1f382e7d" - ] - }, - "output": { - "RouteTables": [ - { - "Associations": [ - { - "Main": true, - "RouteTableAssociationId": "rtbassoc-d8ccddba", - "RouteTableId": "rtb-1f382e7d" - } - ], - "PropagatingVgws": [ - - ], - "RouteTableId": "rtb-1f382e7d", - "Routes": [ - { - "DestinationCidrBlock": "10.0.0.0/16", - "GatewayId": "local", - "State": "active" - } - ], - "Tags": [ - - ], - "VpcId": "vpc-a01106c2" - } - ] - }, - "comments": { - "input": { - }, - "output": { - } - }, - "description": "This example describes the specified route table.", - "id": "ec2-describe-route-tables-1", - "title": "To describe a route table" - } - ], - "DescribeScheduledInstanceAvailability": [ - { - "input": { - "FirstSlotStartTimeRange": { - "EarliestTime": "2016-01-31T00:00:00Z", - "LatestTime": "2016-01-31T04:00:00Z" - }, - "Recurrence": { - "Frequency": "Weekly", - "Interval": 1, - "OccurrenceDays": [ - 1 - ] - } - }, - "output": { - "ScheduledInstanceAvailabilitySet": [ - { - "AvailabilityZone": "us-west-2b", - "AvailableInstanceCount": 20, - "FirstSlotStartTime": "2016-01-31T00:00:00Z", - "HourlyPrice": "0.095", - "InstanceType": "c4.large", - "MaxTermDurationInDays": 366, - "MinTermDurationInDays": 366, - "NetworkPlatform": "EC2-VPC", - "Platform": "Linux/UNIX", - "PurchaseToken": "eyJ2IjoiMSIsInMiOjEsImMiOi...", - "Recurrence": { - "Frequency": "Weekly", - "Interval": 1, - "OccurrenceDaySet": [ - 1 - ], - "OccurrenceRelativeToEnd": false - }, - "SlotDurationInHours": 23, - "TotalScheduledInstanceHours": 1219 - } - ] - }, - "comments": { - "input": { - }, - "output": { - } - }, - "description": "This example describes a schedule that occurs every week on Sunday, starting on the specified date. Note that the output contains a single schedule as an example.", - "id": "ec2-describe-scheduled-instance-availability-1", - "title": "To describe an available schedule" - } - ], - "DescribeScheduledInstances": [ - { - "input": { - "ScheduledInstanceIds": [ - "sci-1234-1234-1234-1234-123456789012" - ] - }, - "output": { - "ScheduledInstanceSet": [ - { - "AvailabilityZone": "us-west-2b", - "CreateDate": "2016-01-25T21:43:38.612Z", - "HourlyPrice": "0.095", - "InstanceCount": 1, - "InstanceType": "c4.large", - "NetworkPlatform": "EC2-VPC", - "NextSlotStartTime": "2016-01-31T09:00:00Z", - "Platform": "Linux/UNIX", - "Recurrence": { - "Frequency": "Weekly", - "Interval": 1, - "OccurrenceDaySet": [ - 1 - ], - "OccurrenceRelativeToEnd": false, - "OccurrenceUnit": "" - }, - "ScheduledInstanceId": "sci-1234-1234-1234-1234-123456789012", - "SlotDurationInHours": 32, - "TermEndDate": "2017-01-31T09:00:00Z", - "TermStartDate": "2016-01-31T09:00:00Z", - "TotalScheduledInstanceHours": 1696 - } - ] - }, - "comments": { - "input": { - }, - "output": { - } - }, - "description": "This example describes the specified Scheduled Instance.", - "id": "ec2-describe-scheduled-instances-1", - "title": "To describe your Scheduled Instances" - } - ], - "DescribeSnapshotAttribute": [ - { - "input": { - "Attribute": "createVolumePermission", - "SnapshotId": "snap-066877671789bd71b" - }, - "output": { - "CreateVolumePermissions": [ - - ], - "SnapshotId": "snap-066877671789bd71b" - }, - "comments": { - "input": { - }, - "output": { - } - }, - "description": "This example describes the ``createVolumePermission`` attribute on a snapshot with the snapshot ID of ``snap-066877671789bd71b``.", - "id": "to-describe-snapshot-attributes-1472503199736", - "title": "To describe snapshot attributes" - } - ], - "DescribeSnapshots": [ - { - "input": { - "SnapshotIds": [ - "snap-1234567890abcdef0" - ] - }, - "output": { - "NextToken": "", - "Snapshots": [ - { - "Description": "This is my snapshot.", - "OwnerId": "012345678910", - "Progress": "100%", - "SnapshotId": "snap-1234567890abcdef0", - "StartTime": "2014-02-28T21:28:32.000Z", - "State": "completed", - "VolumeId": "vol-049df61146c4d7901", - "VolumeSize": 8 - } - ] - }, - "comments": { - "input": { - }, - "output": { - } - }, - "description": "This example describes a snapshot with the snapshot ID of ``snap-1234567890abcdef0``.", - "id": "to-describe-a-snapshot-1472503807850", - "title": "To describe a snapshot" - }, - { - "input": { - "Filters": [ - { - "Name": "status", - "Values": [ - "pending" - ] - } - ], - "OwnerIds": [ - "012345678910" - ] - }, - "output": { - "NextToken": "", - "Snapshots": [ - { - "Description": "This is my copied snapshot.", - "OwnerId": "012345678910", - "Progress": "87%", - "SnapshotId": "snap-066877671789bd71b", - "StartTime": "2014-02-28T21:37:27.000Z", - "State": "pending", - "VolumeId": "vol-1234567890abcdef0", - "VolumeSize": 8 - } - ] - }, - "comments": { - "input": { - }, - "output": { - } - }, - "description": "This example describes all snapshots owned by the ID 012345678910 that are in the ``pending`` status.", - "id": "to-describe-snapshots-using-filters-1472503929793", - "title": "To describe snapshots using filters" - } - ], - "DescribeSpotDatafeedSubscription": [ - { - "output": { - "SpotDatafeedSubscription": { - "Bucket": "my-s3-bucket", - "OwnerId": "123456789012", - "Prefix": "spotdata", - "State": "Active" - } - }, - "comments": { - "input": { - }, - "output": { - } - }, - "description": "This example describes the Spot Instance datafeed subscription for your AWS account.", - "id": "ec2-describe-spot-datafeed-subscription-1", - "title": "To describe the datafeed for your AWS account" - } - ], - "DescribeSpotFleetInstances": [ - { - "input": { - "SpotFleetRequestId": "sfr-73fbd2ce-aa30-494c-8788-1cee4EXAMPLE" - }, - "output": { - "ActiveInstances": [ - { - "InstanceId": "i-1234567890abcdef0", - "InstanceType": "m3.medium", - "SpotInstanceRequestId": "sir-08b93456" - } - ], - "SpotFleetRequestId": "sfr-73fbd2ce-aa30-494c-8788-1cee4EXAMPLE" - }, - "comments": { - "input": { - }, - "output": { - } - }, - "description": "This example lists the Spot Instances associated with the specified Spot fleet.", - "id": "ec2-describe-spot-fleet-instances-1", - "title": "To describe the Spot Instances associated with a Spot fleet" - } - ], - "DescribeSpotFleetRequestHistory": [ - { - "input": { - "SpotFleetRequestId": "sfr-73fbd2ce-aa30-494c-8788-1cee4EXAMPLE", - "StartTime": "2015-05-26T00:00:00Z" - }, - "output": { - "HistoryRecords": [ - { - "EventInformation": { - "EventSubType": "submitted" - }, - "EventType": "fleetRequestChange", - "Timestamp": "2015-05-26T23:17:20.697Z" - }, - { - "EventInformation": { - "EventSubType": "active" - }, - "EventType": "fleetRequestChange", - "Timestamp": "2015-05-26T23:17:20.873Z" - }, - { - "EventInformation": { - "EventSubType": "launched", - "InstanceId": "i-1234567890abcdef0" - }, - "EventType": "instanceChange", - "Timestamp": "2015-05-26T23:21:21.712Z" - }, - { - "EventInformation": { - "EventSubType": "launched", - "InstanceId": "i-1234567890abcdef1" - }, - "EventType": "instanceChange", - "Timestamp": "2015-05-26T23:21:21.816Z" - } - ], - "NextToken": "CpHNsscimcV5oH7bSbub03CI2Qms5+ypNpNm+53MNlR0YcXAkp0xFlfKf91yVxSExmbtma3awYxMFzNA663ZskT0AHtJ6TCb2Z8bQC2EnZgyELbymtWPfpZ1ZbauVg+P+TfGlWxWWB/Vr5dk5d4LfdgA/DRAHUrYgxzrEXAMPLE=", - "SpotFleetRequestId": "sfr-73fbd2ce-aa30-494c-8788-1cee4EXAMPLE", - "StartTime": "2015-05-26T00:00:00Z" - }, - "comments": { - "input": { - }, - "output": { - } - }, - "description": "This example returns the history for the specified Spot fleet starting at the specified time.", - "id": "ec2-describe-spot-fleet-request-history-1", - "title": "To describe Spot fleet history" - } - ], - "DescribeSpotFleetRequests": [ - { - "input": { - "SpotFleetRequestIds": [ - "sfr-73fbd2ce-aa30-494c-8788-1cee4EXAMPLE" - ] - }, - "output": { - "SpotFleetRequestConfigs": [ - { - "SpotFleetRequestConfig": { - "IamFleetRole": "arn:aws:iam::123456789012:role/my-spot-fleet-role", - "LaunchSpecifications": [ - { - "EbsOptimized": false, - "ImageId": "ami-1a2b3c4d", - "InstanceType": "cc2.8xlarge", - "NetworkInterfaces": [ - { - "AssociatePublicIpAddress": true, - "DeleteOnTermination": false, - "DeviceIndex": 0, - "SecondaryPrivateIpAddressCount": 0, - "SubnetId": "subnet-a61dafcf" - } - ] - }, - { - "EbsOptimized": false, - "ImageId": "ami-1a2b3c4d", - "InstanceType": "r3.8xlarge", - "NetworkInterfaces": [ - { - "AssociatePublicIpAddress": true, - "DeleteOnTermination": false, - "DeviceIndex": 0, - "SecondaryPrivateIpAddressCount": 0, - "SubnetId": "subnet-a61dafcf" - } - ] - } - ], - "SpotPrice": "0.05", - "TargetCapacity": 20 - }, - "SpotFleetRequestId": "sfr-73fbd2ce-aa30-494c-8788-1cee4EXAMPLE", - "SpotFleetRequestState": "active" - } - ] - }, - "comments": { - "input": { - }, - "output": { - } - }, - "description": "This example describes the specified Spot fleet request.", - "id": "ec2-describe-spot-fleet-requests-1", - "title": "To describe a Spot fleet request" - } - ], - "DescribeSpotInstanceRequests": [ - { - "input": { - "SpotInstanceRequestIds": [ - "sir-08b93456" - ] - }, - "output": { - "SpotInstanceRequests": [ - { - "CreateTime": "2014-04-30T18:14:55.000Z", - "InstanceId": "i-1234567890abcdef0", - "LaunchSpecification": { - "BlockDeviceMappings": [ - { - "DeviceName": "/dev/sda1", - "Ebs": { - "DeleteOnTermination": true, - "VolumeSize": 8, - "VolumeType": "standard" - } - } - ], - "EbsOptimized": false, - "ImageId": "ami-7aba833f", - "InstanceType": "m1.small", - "KeyName": "my-key-pair", - "SecurityGroups": [ - { - "GroupId": "sg-e38f24a7", - "GroupName": "my-security-group" - } - ] - }, - "LaunchedAvailabilityZone": "us-west-1b", - "ProductDescription": "Linux/UNIX", - "SpotInstanceRequestId": "sir-08b93456", - "SpotPrice": "0.010000", - "State": "active", - "Status": { - "Code": "fulfilled", - "Message": "Your Spot request is fulfilled.", - "UpdateTime": "2014-04-30T18:16:21.000Z" - }, - "Type": "one-time" - } - ] - }, - "comments": { - "input": { - }, - "output": { - } - }, - "description": "This example describes the specified Spot Instance request.", - "id": "ec2-describe-spot-instance-requests-1", - "title": "To describe a Spot Instance request" - } - ], - "DescribeSpotPriceHistory": [ - { - "input": { - "EndTime": "2014-01-06T08:09:10", - "InstanceTypes": [ - "m1.xlarge" - ], - "ProductDescriptions": [ - "Linux/UNIX (Amazon VPC)" - ], - "StartTime": "2014-01-06T07:08:09" - }, - "output": { - "SpotPriceHistory": [ - { - "AvailabilityZone": "us-west-1a", - "InstanceType": "m1.xlarge", - "ProductDescription": "Linux/UNIX (Amazon VPC)", - "SpotPrice": "0.080000", - "Timestamp": "2014-01-06T04:32:53.000Z" - }, - { - "AvailabilityZone": "us-west-1c", - "InstanceType": "m1.xlarge", - "ProductDescription": "Linux/UNIX (Amazon VPC)", - "SpotPrice": "0.080000", - "Timestamp": "2014-01-05T11:28:26.000Z" - } - ] - }, - "comments": { - "input": { - }, - "output": { - } - }, - "description": "This example returns the Spot Price history for m1.xlarge, Linux/UNIX (Amazon VPC) instances for a particular day in January.", - "id": "ec2-describe-spot-price-history-1", - "title": "To describe Spot price history for Linux/UNIX (Amazon VPC)" - } - ], - "DescribeSubnets": [ - { - "input": { - "Filters": [ - { - "Name": "vpc-id", - "Values": [ - "vpc-a01106c2" - ] - } - ] - }, - "output": { - "Subnets": [ - { - "AvailabilityZone": "us-east-1c", - "AvailableIpAddressCount": 251, - "CidrBlock": "10.0.1.0/24", - "DefaultForAz": false, - "MapPublicIpOnLaunch": false, - "State": "available", - "SubnetId": "subnet-9d4a7b6c", - "VpcId": "vpc-a01106c2" - } - ] - }, - "comments": { - "input": { - }, - "output": { - } - }, - "description": "This example describes the subnets for the specified VPC.", - "id": "ec2-describe-subnets-1", - "title": "To describe the subnets for a VPC" - } - ], - "DescribeTags": [ - { - "input": { - "Filters": [ - { - "Name": "resource-id", - "Values": [ - "i-1234567890abcdef8" - ] - } - ] - }, - "output": { - "Tags": [ - { - "Key": "Stack", - "ResourceId": "i-1234567890abcdef8", - "ResourceType": "instance", - "Value": "test" - }, - { - "Key": "Name", - "ResourceId": "i-1234567890abcdef8", - "ResourceType": "instance", - "Value": "Beta Server" - } - ] - }, - "comments": { - "input": { - }, - "output": { - } - }, - "description": "This example describes the tags for the specified instance.", - "id": "ec2-describe-tags-1", - "title": "To describe the tags for a single resource" - } - ], - "DescribeVolumeAttribute": [ - { - "input": { - "Attribute": "autoEnableIO", - "VolumeId": "vol-049df61146c4d7901" - }, - "output": { - "AutoEnableIO": { - "Value": false - }, - "VolumeId": "vol-049df61146c4d7901" - }, - "comments": { - "input": { - }, - "output": { - } - }, - "description": "This example describes the ``autoEnableIo`` attribute of the volume with the ID ``vol-049df61146c4d7901``.", - "id": "to-describe-a-volume-attribute-1472505773492", - "title": "To describe a volume attribute" - } - ], - "DescribeVolumeStatus": [ - { - "input": { - "VolumeIds": [ - "vol-1234567890abcdef0" - ] - }, - "output": { - "VolumeStatuses": [ - { - "Actions": [ - - ], - "AvailabilityZone": "us-east-1a", - "Events": [ - - ], - "VolumeId": "vol-1234567890abcdef0", - "VolumeStatus": { - "Details": [ - { - "Name": "io-enabled", - "Status": "passed" - }, - { - "Name": "io-performance", - "Status": "not-applicable" - } - ], - "Status": "ok" - } - } - ] - }, - "comments": { - "input": { - }, - "output": { - } - }, - "description": "This example describes the status for the volume ``vol-1234567890abcdef0``.", - "id": "to-describe-the-status-of-a-single-volume-1472507016193", - "title": "To describe the status of a single volume" - }, - { - "input": { - "Filters": [ - { - "Name": "volume-status.status", - "Values": [ - "impaired" - ] - } - ] - }, - "output": { - "VolumeStatuses": [ - - ] - }, - "comments": { - "input": { - }, - "output": { - } - }, - "description": "This example describes the status for all volumes that are impaired. In this example output, there are no impaired volumes.", - "id": "to-describe-the-status-of-impaired-volumes-1472507239821", - "title": "To describe the status of impaired volumes" - } - ], - "DescribeVolumes": [ - { - "input": { - }, - "output": { - "NextToken": "", - "Volumes": [ - { - "Attachments": [ - { - "AttachTime": "2013-12-18T22:35:00.000Z", - "DeleteOnTermination": true, - "Device": "/dev/sda1", - "InstanceId": "i-1234567890abcdef0", - "State": "attached", - "VolumeId": "vol-049df61146c4d7901" - } - ], - "AvailabilityZone": "us-east-1a", - "CreateTime": "2013-12-18T22:35:00.084Z", - "Size": 8, - "SnapshotId": "snap-1234567890abcdef0", - "State": "in-use", - "VolumeId": "vol-049df61146c4d7901", - "VolumeType": "standard" - } - ] - }, - "comments": { - "input": { - }, - "output": { - } - }, - "description": "This example describes all of your volumes in the default region.", - "id": "to-describe-all-volumes-1472506358883", - "title": "To describe all volumes" - }, - { - "input": { - "Filters": [ - { - "Name": "attachment.instance-id", - "Values": [ - "i-1234567890abcdef0" - ] - }, - { - "Name": "attachment.delete-on-termination", - "Values": [ - "true" - ] - } - ] - }, - "output": { - "Volumes": [ - { - "Attachments": [ - { - "AttachTime": "2013-12-18T22:35:00.000Z", - "DeleteOnTermination": true, - "Device": "/dev/sda1", - "InstanceId": "i-1234567890abcdef0", - "State": "attached", - "VolumeId": "vol-049df61146c4d7901" - } - ], - "AvailabilityZone": "us-east-1a", - "CreateTime": "2013-12-18T22:35:00.084Z", - "Size": 8, - "SnapshotId": "snap-1234567890abcdef0", - "State": "in-use", - "VolumeId": "vol-049df61146c4d7901", - "VolumeType": "standard" - } - ] - }, - "comments": { - "input": { - }, - "output": { - } - }, - "description": "This example describes all volumes that are both attached to the instance with the ID i-1234567890abcdef0 and set to delete when the instance terminates.", - "id": "to-describe-volumes-that-are-attached-to-a-specific-instance-1472506613578", - "title": "To describe volumes that are attached to a specific instance" - } - ], - "DescribeVpcAttribute": [ - { - "input": { - "Attribute": "enableDnsSupport", - "VpcId": "vpc-a01106c2" - }, - "output": { - "EnableDnsSupport": { - "Value": true - }, - "VpcId": "vpc-a01106c2" - }, - "comments": { - "input": { - }, - "output": { - } - }, - "description": "This example describes the enableDnsSupport attribute. This attribute indicates whether DNS resolution is enabled for the VPC. If this attribute is true, the Amazon DNS server resolves DNS hostnames for your instances to their corresponding IP addresses; otherwise, it does not.", - "id": "ec2-describe-vpc-attribute-1", - "title": "To describe the enableDnsSupport attribute" - }, - { - "input": { - "Attribute": "enableDnsHostnames", - "VpcId": "vpc-a01106c2" - }, - "output": { - "EnableDnsHostnames": { - "Value": true - }, - "VpcId": "vpc-a01106c2" - }, - "comments": { - "input": { - }, - "output": { - } - }, - "description": "This example describes the enableDnsHostnames attribute. This attribute indicates whether the instances launched in the VPC get DNS hostnames. If this attribute is true, instances in the VPC get DNS hostnames; otherwise, they do not.", - "id": "ec2-describe-vpc-attribute-2", - "title": "To describe the enableDnsHostnames attribute" - } - ], - "DescribeVpcs": [ - { - "input": { - "VpcIds": [ - "vpc-a01106c2" - ] - }, - "output": { - "Vpcs": [ - { - "CidrBlock": "10.0.0.0/16", - "DhcpOptionsId": "dopt-7a8b9c2d", - "InstanceTenancy": "default", - "IsDefault": false, - "State": "available", - "Tags": [ - { - "Key": "Name", - "Value": "MyVPC" - } - ], - "VpcId": "vpc-a01106c2" - } - ] - }, - "comments": { - "input": { - }, - "output": { - } - }, - "description": "This example describes the specified VPC.", - "id": "ec2-describe-vpcs-1", - "title": "To describe a VPC" - } - ], - "DetachInternetGateway": [ - { - "input": { - "InternetGatewayId": "igw-c0a643a9", - "VpcId": "vpc-a01106c2" - }, - "comments": { - "input": { - }, - "output": { - } - }, - "description": "This example detaches the specified Internet gateway from the specified VPC.", - "id": "ec2-detach-internet-gateway-1", - "title": "To detach an Internet gateway from a VPC" - } - ], - "DetachNetworkInterface": [ - { - "input": { - "AttachmentId": "eni-attach-66c4350a" - }, - "comments": { - "input": { - }, - "output": { - } - }, - "description": "This example detaches the specified network interface from its attached instance.", - "id": "ec2-detach-network-interface-1", - "title": "To detach a network interface from an instance" - } - ], - "DetachVolume": [ - { - "input": { - "VolumeId": "vol-1234567890abcdef0" - }, - "output": { - "AttachTime": "2014-02-27T19:23:06.000Z", - "Device": "/dev/sdb", - "InstanceId": "i-1234567890abcdef0", - "State": "detaching", - "VolumeId": "vol-049df61146c4d7901" - }, - "comments": { - "input": { - }, - "output": { - } - }, - "description": "This example detaches the volume (``vol-049df61146c4d7901``) from the instance it is attached to.", - "id": "to-detach-a-volume-from-an-instance-1472507977694", - "title": "To detach a volume from an instance" - } - ], - "DisableVgwRoutePropagation": [ - { - "input": { - "GatewayId": "vgw-9a4cacf3", - "RouteTableId": "rtb-22574640" - }, - "comments": { - "input": { - }, - "output": { - } - }, - "description": "This example disables the specified virtual private gateway from propagating static routes to the specified route table.", - "id": "ec2-disable-vgw-route-propagation-1", - "title": "To disable route propagation" - } - ], - "DisassociateAddress": [ - { - "input": { - "AssociationId": "eipassoc-2bebb745" - }, - "comments": { - "input": { - }, - "output": { - } - }, - "description": "This example disassociates an Elastic IP address from an instance in a VPC.", - "id": "ec2-disassociate-address-1", - "title": "To disassociate an Elastic IP address in EC2-VPC" - }, - { - "input": { - "PublicIp": "198.51.100.0" - }, - "comments": { - "input": { - }, - "output": { - } - }, - "description": "This example disassociates an Elastic IP address from an instance in EC2-Classic.", - "id": "ec2-disassociate-address-2", - "title": "To disassociate an Elastic IP addresses in EC2-Classic" - } - ], - "DisassociateRouteTable": [ - { - "input": { - "AssociationId": "rtbassoc-781d0d1a" - }, - "comments": { - "input": { - }, - "output": { - } - }, - "description": "This example disassociates the specified route table from its associated subnet.", - "id": "ec2-disassociate-route-table-1", - "title": "To disassociate a route table" - } - ], - "EnableVgwRoutePropagation": [ - { - "input": { - "GatewayId": "vgw-9a4cacf3", - "RouteTableId": "rtb-22574640" - }, - "comments": { - "input": { - }, - "output": { - } - }, - "description": "This example enables the specified virtual private gateway to propagate static routes to the specified route table.", - "id": "ec2-enable-vgw-route-propagation-1", - "title": "To enable route propagation" - } - ], - "EnableVolumeIO": [ - { - "input": { - "VolumeId": "vol-1234567890abcdef0" - }, - "comments": { - "input": { - }, - "output": { - } - }, - "description": "This example enables I/O on volume ``vol-1234567890abcdef0``.", - "id": "to-enable-io-for-a-volume-1472508114867", - "title": "To enable I/O for a volume" - } - ], - "ModifyNetworkInterfaceAttribute": [ - { - "input": { - "Attachment": { - "AttachmentId": "eni-attach-43348162", - "DeleteOnTermination": false - }, - "NetworkInterfaceId": "eni-686ea200" - }, - "comments": { - "input": { - }, - "output": { - } - }, - "description": "This example modifies the attachment attribute of the specified network interface.", - "id": "ec2-modify-network-interface-attribute-1", - "title": "To modify the attachment attribute of a network interface" - }, - { - "input": { - "Description": { - "Value": "My description" - }, - "NetworkInterfaceId": "eni-686ea200" - }, - "comments": { - "input": { - }, - "output": { - } - }, - "description": "This example modifies the description attribute of the specified network interface.", - "id": "ec2-modify-network-interface-attribute-2", - "title": "To modify the description attribute of a network interface" - }, - { - "input": { - "Groups": [ - "sg-903004f8", - "sg-1a2b3c4d" - ], - "NetworkInterfaceId": "eni-686ea200" - }, - "comments": { - "input": { - }, - "output": { - } - }, - "description": "This example command modifies the groupSet attribute of the specified network interface.", - "id": "ec2-modify-network-interface-attribute-3", - "title": "To modify the groupSet attribute of a network interface" - }, - { - "input": { - "NetworkInterfaceId": "eni-686ea200", - "SourceDestCheck": { - "Value": false - } - }, - "comments": { - "input": { - }, - "output": { - } - }, - "description": "This example command modifies the sourceDestCheck attribute of the specified network interface.", - "id": "ec2-modify-network-interface-attribute-4", - "title": "To modify the sourceDestCheck attribute of a network interface" - } - ], - "ModifySnapshotAttribute": [ - { - "input": { - "Attribute": "createVolumePermission", - "OperationType": "remove", - "SnapshotId": "snap-1234567890abcdef0", - "UserIds": [ - "123456789012" - ] - }, - "output": { - }, - "comments": { - "input": { - }, - "output": { - } - }, - "description": "This example modifies snapshot ``snap-1234567890abcdef0`` to remove the create volume permission for a user with the account ID ``123456789012``. If the command succeeds, no output is returned.", - "id": "to-modify-a-snapshot-attribute-1472508385907", - "title": "To modify a snapshot attribute" - }, - { - "input": { - "Attribute": "createVolumePermission", - "GroupNames": [ - "all" - ], - "OperationType": "add", - "SnapshotId": "snap-1234567890abcdef0" - }, - "output": { - }, - "comments": { - "input": { - }, - "output": { - } - }, - "description": "This example makes the snapshot ``snap-1234567890abcdef0`` public.", - "id": "to-make-a-snapshot-public-1472508470529", - "title": "To make a snapshot public" - } - ], - "ModifySpotFleetRequest": [ - { - "input": { - "SpotFleetRequestId": "sfr-73fbd2ce-aa30-494c-8788-1cee4EXAMPLE", - "TargetCapacity": 20 - }, - "output": { - "Return": true - }, - "comments": { - "input": { - }, - "output": { - } - }, - "description": "This example increases the target capacity of the specified Spot fleet request.", - "id": "ec2-modify-spot-fleet-request-1", - "title": "To increase the target capacity of a Spot fleet request" - }, - { - "input": { - "ExcessCapacityTerminationPolicy": "NoTermination ", - "SpotFleetRequestId": "sfr-73fbd2ce-aa30-494c-8788-1cee4EXAMPLE", - "TargetCapacity": 10 - }, - "output": { - "Return": true - }, - "comments": { - "input": { - }, - "output": { - } - }, - "description": "This example decreases the target capacity of the specified Spot fleet request without terminating any Spot Instances as a result.", - "id": "ec2-modify-spot-fleet-request-2", - "title": "To decrease the target capacity of a Spot fleet request" - } - ], - "ModifySubnetAttribute": [ - { - "input": { - "MapPublicIpOnLaunch": { - "Value": true - }, - "SubnetId": "subnet-1a2b3c4d" - }, - "comments": { - "input": { - }, - "output": { - } - }, - "description": "This example modifies the specified subnet so that all instances launched into this subnet are assigned a public IP address.", - "id": "ec2-modify-subnet-attribute-1", - "title": "To change a subnet's public IP addressing behavior" - } - ], - "ModifyVolumeAttribute": [ - { - "input": { - "AutoEnableIO": { - "Value": true - }, - "DryRun": true, - "VolumeId": "vol-1234567890abcdef0" - }, - "output": { - }, - "comments": { - "input": { - }, - "output": { - } - }, - "description": "This example sets the ``autoEnableIo`` attribute of the volume with the ID ``vol-1234567890abcdef0`` to ``true``. If the command succeeds, no output is returned.", - "id": "to-modify-a-volume-attribute-1472508596749", - "title": "To modify a volume attribute" - } - ], - "ModifyVpcAttribute": [ - { - "input": { - "EnableDnsSupport": { - "Value": false - }, - "VpcId": "vpc-a01106c2" - }, - "comments": { - "input": { - }, - "output": { - } - }, - "description": "This example modifies the enableDnsSupport attribute. This attribute indicates whether DNS resolution is enabled for the VPC. If this attribute is true, the Amazon DNS server resolves DNS hostnames for instances in the VPC to their corresponding IP addresses; otherwise, it does not.", - "id": "ec2-modify-vpc-attribute-1", - "title": "To modify the enableDnsSupport attribute" - }, - { - "input": { - "EnableDnsHostnames": { - "Value": false - }, - "VpcId": "vpc-a01106c2" - }, - "comments": { - "input": { - }, - "output": { - } - }, - "description": "This example modifies the enableDnsHostnames attribute. This attribute indicates whether instances launched in the VPC get DNS hostnames. If this attribute is true, instances in the VPC get DNS hostnames; otherwise, they do not.", - "id": "ec2-modify-vpc-attribute-2", - "title": "To modify the enableDnsHostnames attribute" - } - ], - "MoveAddressToVpc": [ - { - "input": { - "PublicIp": "54.123.4.56" - }, - "output": { - "Status": "MoveInProgress" - }, - "comments": { - "input": { - }, - "output": { - } - }, - "description": "This example moves the specified Elastic IP address to the EC2-VPC platform.", - "id": "ec2-move-address-to-vpc-1", - "title": "To move an address to EC2-VPC" - } - ], - "PurchaseScheduledInstances": [ - { - "input": { - "PurchaseRequests": [ - { - "InstanceCount": 1, - "PurchaseToken": "eyJ2IjoiMSIsInMiOjEsImMiOi..." - } - ] - }, - "output": { - "ScheduledInstanceSet": [ - { - "AvailabilityZone": "us-west-2b", - "CreateDate": "2016-01-25T21:43:38.612Z", - "HourlyPrice": "0.095", - "InstanceCount": 1, - "InstanceType": "c4.large", - "NetworkPlatform": "EC2-VPC", - "NextSlotStartTime": "2016-01-31T09:00:00Z", - "Platform": "Linux/UNIX", - "Recurrence": { - "Frequency": "Weekly", - "Interval": 1, - "OccurrenceDaySet": [ - 1 - ], - "OccurrenceRelativeToEnd": false, - "OccurrenceUnit": "" - }, - "ScheduledInstanceId": "sci-1234-1234-1234-1234-123456789012", - "SlotDurationInHours": 32, - "TermEndDate": "2017-01-31T09:00:00Z", - "TermStartDate": "2016-01-31T09:00:00Z", - "TotalScheduledInstanceHours": 1696 - } - ] - }, - "comments": { - "input": { - }, - "output": { - } - }, - "description": "This example purchases a Scheduled Instance.", - "id": "ec2-purchase-scheduled-instances-1", - "title": "To purchase a Scheduled Instance" - } - ], - "ReleaseAddress": [ - { - "input": { - "AllocationId": "eipalloc-64d5890a" - }, - "comments": { - "input": { - }, - "output": { - } - }, - "description": "This example releases an Elastic IP address for use with instances in a VPC.", - "id": "ec2-release-address-1", - "title": "To release an Elastic IP address for EC2-VPC" - }, - { - "input": { - "PublicIp": "198.51.100.0" - }, - "comments": { - "input": { - }, - "output": { - } - }, - "description": "This example releases an Elastic IP address for use with instances in EC2-Classic.", - "id": "ec2-release-address-2", - "title": "To release an Elastic IP addresses for EC2-Classic" - } - ], - "ReplaceNetworkAclAssociation": [ - { - "input": { - "AssociationId": "aclassoc-e5b95c8c", - "NetworkAclId": "acl-5fb85d36" - }, - "output": { - "NewAssociationId": "aclassoc-3999875b" - }, - "comments": { - "input": { - }, - "output": { - } - }, - "description": "This example associates the specified network ACL with the subnet for the specified network ACL association.", - "id": "ec2-replace-network-acl-association-1", - "title": "To replace the network ACL associated with a subnet" - } - ], - "ReplaceNetworkAclEntry": [ - { - "input": { - "CidrBlock": "203.0.113.12/24", - "Egress": false, - "NetworkAclId": "acl-5fb85d36", - "PortRange": { - "From": 53, - "To": 53 - }, - "Protocol": "udp", - "RuleAction": "allow", - "RuleNumber": 100 - }, - "comments": { - "input": { - }, - "output": { - } - }, - "description": "This example replaces an entry for the specified network ACL. The new rule 100 allows ingress traffic from 203.0.113.12/24 on UDP port 53 (DNS) into any associated subnet.", - "id": "ec2-replace-network-acl-entry-1", - "title": "To replace a network ACL entry" - } - ], - "ReplaceRoute": [ - { - "input": { - "DestinationCidrBlock": "10.0.0.0/16", - "GatewayId": "vgw-9a4cacf3", - "RouteTableId": "rtb-22574640" - }, - "comments": { - "input": { - }, - "output": { - } - }, - "description": "This example replaces the specified route in the specified table table. The new route matches the specified CIDR and sends the traffic to the specified virtual private gateway.", - "id": "ec2-replace-route-1", - "title": "To replace a route" - } - ], - "ReplaceRouteTableAssociation": [ - { - "input": { - "AssociationId": "rtbassoc-781d0d1a", - "RouteTableId": "rtb-22574640" - }, - "output": { - "NewAssociationId": "rtbassoc-3a1f0f58" - }, - "comments": { - "input": { - }, - "output": { - } - }, - "description": "This example associates the specified route table with the subnet for the specified route table association.", - "id": "ec2-replace-route-table-association-1", - "title": "To replace the route table associated with a subnet" - } - ], - "RequestSpotFleet": [ - { - "input": { - "SpotFleetRequestConfig": { - "IamFleetRole": "arn:aws:iam::123456789012:role/my-spot-fleet-role", - "LaunchSpecifications": [ - { - "IamInstanceProfile": { - "Arn": "arn:aws:iam::123456789012:instance-profile/my-iam-role" - }, - "ImageId": "ami-1a2b3c4d", - "InstanceType": "m3.medium", - "KeyName": "my-key-pair", - "SecurityGroups": [ - { - "GroupId": "sg-1a2b3c4d" - } - ], - "SubnetId": "subnet-1a2b3c4d, subnet-3c4d5e6f" - } - ], - "SpotPrice": "0.04", - "TargetCapacity": 2 - } - }, - "output": { - "SpotFleetRequestId": "sfr-73fbd2ce-aa30-494c-8788-1cee4EXAMPLE" - }, - "comments": { - "input": { - }, - "output": { - } - }, - "description": "This example creates a Spot fleet request with two launch specifications that differ only by subnet. The Spot fleet launches the instances in the specified subnet with the lowest price. If the instances are launched in a default VPC, they receive a public IP address by default. If the instances are launched in a nondefault VPC, they do not receive a public IP address by default. Note that you can't specify different subnets from the same Availability Zone in a Spot fleet request.", - "id": "ec2-request-spot-fleet-1", - "title": "To request a Spot fleet in the subnet with the lowest price" - }, - { - "input": { - "SpotFleetRequestConfig": { - "IamFleetRole": "arn:aws:iam::123456789012:role/my-spot-fleet-role", - "LaunchSpecifications": [ - { - "IamInstanceProfile": { - "Arn": "arn:aws:iam::123456789012:instance-profile/my-iam-role" - }, - "ImageId": "ami-1a2b3c4d", - "InstanceType": "m3.medium", - "KeyName": "my-key-pair", - "Placement": { - "AvailabilityZone": "us-west-2a, us-west-2b" - }, - "SecurityGroups": [ - { - "GroupId": "sg-1a2b3c4d" - } - ] - } - ], - "SpotPrice": "0.04", - "TargetCapacity": 2 - } - }, - "output": { - "SpotFleetRequestId": "sfr-73fbd2ce-aa30-494c-8788-1cee4EXAMPLE" - }, - "comments": { - "input": { - }, - "output": { - } - }, - "description": "This example creates a Spot fleet request with two launch specifications that differ only by Availability Zone. The Spot fleet launches the instances in the specified Availability Zone with the lowest price. If your account supports EC2-VPC only, Amazon EC2 launches the Spot instances in the default subnet of the Availability Zone. If your account supports EC2-Classic, Amazon EC2 launches the instances in EC2-Classic in the Availability Zone.", - "id": "ec2-request-spot-fleet-2", - "title": "To request a Spot fleet in the Availability Zone with the lowest price" - }, - { - "input": { - "SpotFleetRequestConfig": { - "IamFleetRole": "arn:aws:iam::123456789012:role/my-spot-fleet-role", - "LaunchSpecifications": [ - { - "IamInstanceProfile": { - "Arn": "arn:aws:iam::880185128111:instance-profile/my-iam-role" - }, - "ImageId": "ami-1a2b3c4d", - "InstanceType": "m3.medium", - "KeyName": "my-key-pair", - "NetworkInterfaces": [ - { - "AssociatePublicIpAddress": true, - "DeviceIndex": 0, - "Groups": [ - "sg-1a2b3c4d" - ], - "SubnetId": "subnet-1a2b3c4d" - } - ] - } - ], - "SpotPrice": "0.04", - "TargetCapacity": 2 - } - }, - "output": { - "SpotFleetRequestId": "sfr-73fbd2ce-aa30-494c-8788-1cee4EXAMPLE" - }, - "comments": { - "input": { - }, - "output": { - } - }, - "description": "This example assigns public addresses to instances launched in a nondefault VPC. Note that when you specify a network interface, you must include the subnet ID and security group ID using the network interface.", - "id": "ec2-request-spot-fleet-3", - "title": "To launch Spot instances in a subnet and assign them public IP addresses" - }, - { - "input": { - "SpotFleetRequestConfig": { - "AllocationStrategy": "diversified", - "IamFleetRole": "arn:aws:iam::123456789012:role/my-spot-fleet-role", - "LaunchSpecifications": [ - { - "ImageId": "ami-1a2b3c4d", - "InstanceType": "c4.2xlarge", - "SubnetId": "subnet-1a2b3c4d" - }, - { - "ImageId": "ami-1a2b3c4d", - "InstanceType": "m3.2xlarge", - "SubnetId": "subnet-1a2b3c4d" - }, - { - "ImageId": "ami-1a2b3c4d", - "InstanceType": "r3.2xlarge", - "SubnetId": "subnet-1a2b3c4d" - } - ], - "SpotPrice": "0.70", - "TargetCapacity": 30 - } - }, - "output": { - "SpotFleetRequestId": "sfr-73fbd2ce-aa30-494c-8788-1cee4EXAMPLE" - }, - "comments": { - "input": { - }, - "output": { - } - }, - "description": "This example creates a Spot fleet request that launches 30 instances using the diversified allocation strategy. The launch specifications differ by instance type. The Spot fleet distributes the instances across the launch specifications such that there are 10 instances of each type.", - "id": "ec2-request-spot-fleet-4", - "title": "To request a Spot fleet using the diversified allocation strategy" - } - ], - "RequestSpotInstances": [ - { - "input": { - "InstanceCount": 5, - "LaunchSpecification": { - "IamInstanceProfile": { - "Arn": "arn:aws:iam::123456789012:instance-profile/my-iam-role" - }, - "ImageId": "ami-1a2b3c4d", - "InstanceType": "m3.medium", - "KeyName": "my-key-pair", - "Placement": { - "AvailabilityZone": "us-west-2a" - }, - "SecurityGroupIds": [ - "sg-1a2b3c4d" - ] - }, - "SpotPrice": "0.03", - "Type": "one-time" - }, - "comments": { - "input": { - }, - "output": { - } - }, - "description": "This example creates a one-time Spot Instance request for five instances in the specified Availability Zone. If your account supports EC2-VPC only, Amazon EC2 launches the instances in the default subnet of the specified Availability Zone. If your account supports EC2-Classic, Amazon EC2 launches the instances in EC2-Classic in the specified Availability Zone.", - "id": "ec2-request-spot-instances-1", - "title": "To create a one-time Spot Instance request" - }, - { - "input": { - "InstanceCount": 5, - "LaunchSpecification": { - "IamInstanceProfile": { - "Arn": "arn:aws:iam::123456789012:instance-profile/my-iam-role" - }, - "ImageId": "ami-1a2b3c4d", - "InstanceType": "m3.medium", - "SecurityGroupIds": [ - "sg-1a2b3c4d" - ], - "SubnetId": "subnet-1a2b3c4d" - }, - "SpotPrice": "0.050", - "Type": "one-time" - }, - "comments": { - "input": { - }, - "output": { - } - }, - "description": "This example command creates a one-time Spot Instance request for five instances in the specified subnet. Amazon EC2 launches the instances in the specified subnet. If the VPC is a nondefault VPC, the instances do not receive a public IP address by default.", - "id": "ec2-request-spot-instances-2", - "title": "To create a one-time Spot Instance request" - } - ], - "ResetSnapshotAttribute": [ - { - "input": { - "Attribute": "createVolumePermission", - "SnapshotId": "snap-1234567890abcdef0" - }, - "output": { - }, - "comments": { - "input": { - }, - "output": { - } - }, - "description": "This example resets the create volume permissions for snapshot ``snap-1234567890abcdef0``. If the command succeeds, no output is returned.", - "id": "to-reset-a-snapshot-attribute-1472508825735", - "title": "To reset a snapshot attribute" - } - ], - "RestoreAddressToClassic": [ - { - "input": { - "PublicIp": "198.51.100.0" - }, - "output": { - "PublicIp": "198.51.100.0", - "Status": "MoveInProgress" - }, - "comments": { - "input": { - }, - "output": { - } - }, - "description": "This example restores the specified Elastic IP address to the EC2-Classic platform.", - "id": "ec2-restore-address-to-classic-1", - "title": "To restore an address to EC2-Classic" - } - ], - "RunScheduledInstances": [ - { - "input": { - "InstanceCount": 1, - "LaunchSpecification": { - "IamInstanceProfile": { - "Name": "my-iam-role" - }, - "ImageId": "ami-12345678", - "InstanceType": "c4.large", - "KeyName": "my-key-pair", - "NetworkInterfaces": [ - { - "AssociatePublicIpAddress": true, - "DeviceIndex": 0, - "Groups": [ - "sg-12345678" - ], - "SubnetId": "subnet-12345678" - } - ] - }, - "ScheduledInstanceId": "sci-1234-1234-1234-1234-123456789012" - }, - "output": { - "InstanceIdSet": [ - "i-1234567890abcdef0" - ] - }, - "comments": { - "input": { - }, - "output": { - } - }, - "description": "This example launches the specified Scheduled Instance in a VPC.", - "id": "ec2-run-scheduled-instances-1", - "title": "To launch a Scheduled Instance in a VPC" - }, - { - "input": { - "InstanceCount": 1, - "LaunchSpecification": { - "IamInstanceProfile": { - "Name": "my-iam-role" - }, - "ImageId": "ami-12345678", - "InstanceType": "c4.large", - "KeyName": "my-key-pair", - "Placement": { - "AvailabilityZone": "us-west-2b" - }, - "SecurityGroupIds": [ - "sg-12345678" - ] - }, - "ScheduledInstanceId": "sci-1234-1234-1234-1234-123456789012" - }, - "output": { - "InstanceIdSet": [ - "i-1234567890abcdef0" - ] - }, - "comments": { - "input": { - }, - "output": { - } - }, - "description": "This example launches the specified Scheduled Instance in EC2-Classic.", - "id": "ec2-run-scheduled-instances-2", - "title": "To launch a Scheduled Instance in EC2-Classic" - } - ], - "UnassignPrivateIpAddresses": [ - { - "input": { - "NetworkInterfaceId": "eni-e5aa89a3", - "PrivateIpAddresses": [ - "10.0.0.82" - ] - }, - "comments": { - "input": { - }, - "output": { - } - }, - "description": "This example unassigns the specified private IP address from the specified network interface.", - "id": "ec2-unassign-private-ip-addresses-1", - "title": "To unassign a secondary private IP address from a network interface" - } - ] - } -} diff --git a/workshops/monte-carlo-on-ec2-spot-fleet/src/web/node_modules/aws-sdk/apis/ec2-2016-11-15.min.json b/workshops/monte-carlo-on-ec2-spot-fleet/src/web/node_modules/aws-sdk/apis/ec2-2016-11-15.min.json deleted file mode 100644 index 931722e1..00000000 --- a/workshops/monte-carlo-on-ec2-spot-fleet/src/web/node_modules/aws-sdk/apis/ec2-2016-11-15.min.json +++ /dev/null @@ -1,12418 +0,0 @@ -{ - "version": "2.0", - "metadata": { - "apiVersion": "2016-11-15", - "endpointPrefix": "ec2", - "protocol": "ec2", - "serviceAbbreviation": "Amazon EC2", - "serviceFullName": "Amazon Elastic Compute Cloud", - "signatureVersion": "v4", - "uid": "ec2-2016-11-15", - "xmlNamespace": "http://ec2.amazonaws.com/doc/2016-11-15" - }, - "operations": { - "AcceptReservedInstancesExchangeQuote": { - "input": { - "type": "structure", - "required": [ - "ReservedInstanceIds" - ], - "members": { - "DryRun": { - "type": "boolean" - }, - "ReservedInstanceIds": { - "shape": "S3", - "locationName": "ReservedInstanceId" - }, - "TargetConfigurations": { - "shape": "S5", - "locationName": "TargetConfiguration" - } - } - }, - "output": { - "type": "structure", - "members": { - "ExchangeId": { - "locationName": "exchangeId" - } - } - } - }, - "AcceptVpcPeeringConnection": { - "input": { - "type": "structure", - "members": { - "DryRun": { - "locationName": "dryRun", - "type": "boolean" - }, - "VpcPeeringConnectionId": { - "locationName": "vpcPeeringConnectionId" - } - } - }, - "output": { - "type": "structure", - "members": { - "VpcPeeringConnection": { - "shape": "Sb", - "locationName": "vpcPeeringConnection" - } - } - } - }, - "AllocateAddress": { - "input": { - "type": "structure", - "members": { - "Domain": {}, - "Address": {}, - "DryRun": { - "locationName": "dryRun", - "type": "boolean" - } - } - }, - "output": { - "type": "structure", - "members": { - "PublicIp": { - "locationName": "publicIp" - }, - "AllocationId": { - "locationName": "allocationId" - }, - "Domain": { - "locationName": "domain" - } - } - } - }, - "AllocateHosts": { - "input": { - "type": "structure", - "required": [ - "AvailabilityZone", - "InstanceType", - "Quantity" - ], - "members": { - "AutoPlacement": { - "locationName": "autoPlacement" - }, - "AvailabilityZone": { - "locationName": "availabilityZone" - }, - "ClientToken": { - "locationName": "clientToken" - }, - "InstanceType": { - "locationName": "instanceType" - }, - "Quantity": { - "locationName": "quantity", - "type": "integer" - } - } - }, - "output": { - "type": "structure", - "members": { - "HostIds": { - "shape": "St", - "locationName": "hostIdSet" - } - } - } - }, - "AssignIpv6Addresses": { - "input": { - "type": "structure", - "required": [ - "NetworkInterfaceId" - ], - "members": { - "Ipv6AddressCount": { - "locationName": "ipv6AddressCount", - "type": "integer" - }, - "Ipv6Addresses": { - "shape": "Sv", - "locationName": "ipv6Addresses" - }, - "NetworkInterfaceId": { - "locationName": "networkInterfaceId" - } - } - }, - "output": { - "type": "structure", - "members": { - "AssignedIpv6Addresses": { - "shape": "Sv", - "locationName": "assignedIpv6Addresses" - }, - "NetworkInterfaceId": { - "locationName": "networkInterfaceId" - } - } - } - }, - "AssignPrivateIpAddresses": { - "input": { - "type": "structure", - "required": [ - "NetworkInterfaceId" - ], - "members": { - "AllowReassignment": { - "locationName": "allowReassignment", - "type": "boolean" - }, - "NetworkInterfaceId": { - "locationName": "networkInterfaceId" - }, - "PrivateIpAddresses": { - "shape": "Sy", - "locationName": "privateIpAddress" - }, - "SecondaryPrivateIpAddressCount": { - "locationName": "secondaryPrivateIpAddressCount", - "type": "integer" - } - } - } - }, - "AssociateAddress": { - "input": { - "type": "structure", - "members": { - "AllocationId": {}, - "InstanceId": {}, - "PublicIp": {}, - "AllowReassociation": { - "locationName": "allowReassociation", - "type": "boolean" - }, - "DryRun": { - "locationName": "dryRun", - "type": "boolean" - }, - "NetworkInterfaceId": { - "locationName": "networkInterfaceId" - }, - "PrivateIpAddress": { - "locationName": "privateIpAddress" - } - } - }, - "output": { - "type": "structure", - "members": { - "AssociationId": { - "locationName": "associationId" - } - } - } - }, - "AssociateDhcpOptions": { - "input": { - "type": "structure", - "required": [ - "DhcpOptionsId", - "VpcId" - ], - "members": { - "DhcpOptionsId": {}, - "VpcId": {}, - "DryRun": { - "locationName": "dryRun", - "type": "boolean" - } - } - } - }, - "AssociateIamInstanceProfile": { - "input": { - "type": "structure", - "required": [ - "IamInstanceProfile", - "InstanceId" - ], - "members": { - "IamInstanceProfile": { - "shape": "S13" - }, - "InstanceId": {} - } - }, - "output": { - "type": "structure", - "members": { - "IamInstanceProfileAssociation": { - "shape": "S15", - "locationName": "iamInstanceProfileAssociation" - } - } - } - }, - "AssociateRouteTable": { - "input": { - "type": "structure", - "required": [ - "RouteTableId", - "SubnetId" - ], - "members": { - "DryRun": { - "locationName": "dryRun", - "type": "boolean" - }, - "RouteTableId": { - "locationName": "routeTableId" - }, - "SubnetId": { - "locationName": "subnetId" - } - } - }, - "output": { - "type": "structure", - "members": { - "AssociationId": { - "locationName": "associationId" - } - } - } - }, - "AssociateSubnetCidrBlock": { - "input": { - "type": "structure", - "required": [ - "Ipv6CidrBlock", - "SubnetId" - ], - "members": { - "Ipv6CidrBlock": { - "locationName": "ipv6CidrBlock" - }, - "SubnetId": { - "locationName": "subnetId" - } - } - }, - "output": { - "type": "structure", - "members": { - "Ipv6CidrBlockAssociation": { - "shape": "S1c", - "locationName": "ipv6CidrBlockAssociation" - }, - "SubnetId": { - "locationName": "subnetId" - } - } - } - }, - "AssociateVpcCidrBlock": { - "input": { - "type": "structure", - "required": [ - "VpcId" - ], - "members": { - "AmazonProvidedIpv6CidrBlock": { - "locationName": "amazonProvidedIpv6CidrBlock", - "type": "boolean" - }, - "CidrBlock": {}, - "VpcId": { - "locationName": "vpcId" - } - } - }, - "output": { - "type": "structure", - "members": { - "Ipv6CidrBlockAssociation": { - "shape": "S1h", - "locationName": "ipv6CidrBlockAssociation" - }, - "CidrBlockAssociation": { - "shape": "S1k", - "locationName": "cidrBlockAssociation" - }, - "VpcId": { - "locationName": "vpcId" - } - } - } - }, - "AttachClassicLinkVpc": { - "input": { - "type": "structure", - "required": [ - "Groups", - "InstanceId", - "VpcId" - ], - "members": { - "DryRun": { - "locationName": "dryRun", - "type": "boolean" - }, - "Groups": { - "shape": "S1m", - "locationName": "SecurityGroupId" - }, - "InstanceId": { - "locationName": "instanceId" - }, - "VpcId": { - "locationName": "vpcId" - } - } - }, - "output": { - "type": "structure", - "members": { - "Return": { - "locationName": "return", - "type": "boolean" - } - } - } - }, - "AttachInternetGateway": { - "input": { - "type": "structure", - "required": [ - "InternetGatewayId", - "VpcId" - ], - "members": { - "DryRun": { - "locationName": "dryRun", - "type": "boolean" - }, - "InternetGatewayId": { - "locationName": "internetGatewayId" - }, - "VpcId": { - "locationName": "vpcId" - } - } - } - }, - "AttachNetworkInterface": { - "input": { - "type": "structure", - "required": [ - "DeviceIndex", - "InstanceId", - "NetworkInterfaceId" - ], - "members": { - "DeviceIndex": { - "locationName": "deviceIndex", - "type": "integer" - }, - "DryRun": { - "locationName": "dryRun", - "type": "boolean" - }, - "InstanceId": { - "locationName": "instanceId" - }, - "NetworkInterfaceId": { - "locationName": "networkInterfaceId" - } - } - }, - "output": { - "type": "structure", - "members": { - "AttachmentId": { - "locationName": "attachmentId" - } - } - } - }, - "AttachVolume": { - "input": { - "type": "structure", - "required": [ - "Device", - "InstanceId", - "VolumeId" - ], - "members": { - "Device": {}, - "InstanceId": {}, - "VolumeId": {}, - "DryRun": { - "locationName": "dryRun", - "type": "boolean" - } - } - }, - "output": { - "shape": "S1s" - } - }, - "AttachVpnGateway": { - "input": { - "type": "structure", - "required": [ - "VpcId", - "VpnGatewayId" - ], - "members": { - "VpcId": {}, - "VpnGatewayId": {}, - "DryRun": { - "locationName": "dryRun", - "type": "boolean" - } - } - }, - "output": { - "type": "structure", - "members": { - "VpcAttachment": { - "shape": "S1w", - "locationName": "attachment" - } - } - } - }, - "AuthorizeSecurityGroupEgress": { - "input": { - "type": "structure", - "required": [ - "GroupId" - ], - "members": { - "DryRun": { - "locationName": "dryRun", - "type": "boolean" - }, - "GroupId": { - "locationName": "groupId" - }, - "IpPermissions": { - "shape": "S1z", - "locationName": "ipPermissions" - }, - "CidrIp": { - "locationName": "cidrIp" - }, - "FromPort": { - "locationName": "fromPort", - "type": "integer" - }, - "IpProtocol": { - "locationName": "ipProtocol" - }, - "ToPort": { - "locationName": "toPort", - "type": "integer" - }, - "SourceSecurityGroupName": { - "locationName": "sourceSecurityGroupName" - }, - "SourceSecurityGroupOwnerId": { - "locationName": "sourceSecurityGroupOwnerId" - } - } - } - }, - "AuthorizeSecurityGroupIngress": { - "input": { - "type": "structure", - "members": { - "CidrIp": {}, - "FromPort": { - "type": "integer" - }, - "GroupId": {}, - "GroupName": {}, - "IpPermissions": { - "shape": "S1z" - }, - "IpProtocol": {}, - "SourceSecurityGroupName": {}, - "SourceSecurityGroupOwnerId": {}, - "ToPort": { - "type": "integer" - }, - "DryRun": { - "locationName": "dryRun", - "type": "boolean" - } - } - } - }, - "BundleInstance": { - "input": { - "type": "structure", - "required": [ - "InstanceId", - "Storage" - ], - "members": { - "InstanceId": {}, - "Storage": { - "shape": "S2b" - }, - "DryRun": { - "locationName": "dryRun", - "type": "boolean" - } - } - }, - "output": { - "type": "structure", - "members": { - "BundleTask": { - "shape": "S2f", - "locationName": "bundleInstanceTask" - } - } - } - }, - "CancelBundleTask": { - "input": { - "type": "structure", - "required": [ - "BundleId" - ], - "members": { - "BundleId": {}, - "DryRun": { - "locationName": "dryRun", - "type": "boolean" - } - } - }, - "output": { - "type": "structure", - "members": { - "BundleTask": { - "shape": "S2f", - "locationName": "bundleInstanceTask" - } - } - } - }, - "CancelConversionTask": { - "input": { - "type": "structure", - "required": [ - "ConversionTaskId" - ], - "members": { - "ConversionTaskId": { - "locationName": "conversionTaskId" - }, - "DryRun": { - "locationName": "dryRun", - "type": "boolean" - }, - "ReasonMessage": { - "locationName": "reasonMessage" - } - } - } - }, - "CancelExportTask": { - "input": { - "type": "structure", - "required": [ - "ExportTaskId" - ], - "members": { - "ExportTaskId": { - "locationName": "exportTaskId" - } - } - } - }, - "CancelImportTask": { - "input": { - "type": "structure", - "members": { - "CancelReason": {}, - "DryRun": { - "type": "boolean" - }, - "ImportTaskId": {} - } - }, - "output": { - "type": "structure", - "members": { - "ImportTaskId": { - "locationName": "importTaskId" - }, - "PreviousState": { - "locationName": "previousState" - }, - "State": { - "locationName": "state" - } - } - } - }, - "CancelReservedInstancesListing": { - "input": { - "type": "structure", - "required": [ - "ReservedInstancesListingId" - ], - "members": { - "ReservedInstancesListingId": { - "locationName": "reservedInstancesListingId" - } - } - }, - "output": { - "type": "structure", - "members": { - "ReservedInstancesListings": { - "shape": "S2q", - "locationName": "reservedInstancesListingsSet" - } - } - } - }, - "CancelSpotFleetRequests": { - "input": { - "type": "structure", - "required": [ - "SpotFleetRequestIds", - "TerminateInstances" - ], - "members": { - "DryRun": { - "locationName": "dryRun", - "type": "boolean" - }, - "SpotFleetRequestIds": { - "shape": "S32", - "locationName": "spotFleetRequestId" - }, - "TerminateInstances": { - "locationName": "terminateInstances", - "type": "boolean" - } - } - }, - "output": { - "type": "structure", - "members": { - "SuccessfulFleetRequests": { - "locationName": "successfulFleetRequestSet", - "type": "list", - "member": { - "locationName": "item", - "type": "structure", - "required": [ - "CurrentSpotFleetRequestState", - "PreviousSpotFleetRequestState", - "SpotFleetRequestId" - ], - "members": { - "CurrentSpotFleetRequestState": { - "locationName": "currentSpotFleetRequestState" - }, - "PreviousSpotFleetRequestState": { - "locationName": "previousSpotFleetRequestState" - }, - "SpotFleetRequestId": { - "locationName": "spotFleetRequestId" - } - } - } - }, - "UnsuccessfulFleetRequests": { - "locationName": "unsuccessfulFleetRequestSet", - "type": "list", - "member": { - "locationName": "item", - "type": "structure", - "required": [ - "Error", - "SpotFleetRequestId" - ], - "members": { - "Error": { - "locationName": "error", - "type": "structure", - "required": [ - "Code", - "Message" - ], - "members": { - "Code": { - "locationName": "code" - }, - "Message": { - "locationName": "message" - } - } - }, - "SpotFleetRequestId": { - "locationName": "spotFleetRequestId" - } - } - } - } - } - } - }, - "CancelSpotInstanceRequests": { - "input": { - "type": "structure", - "required": [ - "SpotInstanceRequestIds" - ], - "members": { - "DryRun": { - "locationName": "dryRun", - "type": "boolean" - }, - "SpotInstanceRequestIds": { - "shape": "S3c", - "locationName": "SpotInstanceRequestId" - } - } - }, - "output": { - "type": "structure", - "members": { - "CancelledSpotInstanceRequests": { - "locationName": "spotInstanceRequestSet", - "type": "list", - "member": { - "locationName": "item", - "type": "structure", - "members": { - "SpotInstanceRequestId": { - "locationName": "spotInstanceRequestId" - }, - "State": { - "locationName": "state" - } - } - } - } - } - } - }, - "ConfirmProductInstance": { - "input": { - "type": "structure", - "required": [ - "InstanceId", - "ProductCode" - ], - "members": { - "InstanceId": {}, - "ProductCode": {}, - "DryRun": { - "locationName": "dryRun", - "type": "boolean" - } - } - }, - "output": { - "type": "structure", - "members": { - "OwnerId": { - "locationName": "ownerId" - }, - "Return": { - "locationName": "return", - "type": "boolean" - } - } - } - }, - "CopyFpgaImage": { - "input": { - "type": "structure", - "required": [ - "SourceFpgaImageId", - "SourceRegion" - ], - "members": { - "DryRun": { - "type": "boolean" - }, - "SourceFpgaImageId": {}, - "Description": {}, - "Name": {}, - "SourceRegion": {}, - "ClientToken": {} - } - }, - "output": { - "type": "structure", - "members": { - "FpgaImageId": { - "locationName": "fpgaImageId" - } - } - } - }, - "CopyImage": { - "input": { - "type": "structure", - "required": [ - "Name", - "SourceImageId", - "SourceRegion" - ], - "members": { - "ClientToken": {}, - "Description": {}, - "Encrypted": { - "locationName": "encrypted", - "type": "boolean" - }, - "KmsKeyId": { - "locationName": "kmsKeyId" - }, - "Name": {}, - "SourceImageId": {}, - "SourceRegion": {}, - "DryRun": { - "locationName": "dryRun", - "type": "boolean" - } - } - }, - "output": { - "type": "structure", - "members": { - "ImageId": { - "locationName": "imageId" - } - } - } - }, - "CopySnapshot": { - "input": { - "type": "structure", - "required": [ - "SourceRegion", - "SourceSnapshotId" - ], - "members": { - "Description": {}, - "DestinationRegion": { - "locationName": "destinationRegion" - }, - "Encrypted": { - "locationName": "encrypted", - "type": "boolean" - }, - "KmsKeyId": { - "locationName": "kmsKeyId" - }, - "PresignedUrl": { - "locationName": "presignedUrl" - }, - "SourceRegion": {}, - "SourceSnapshotId": {}, - "DryRun": { - "locationName": "dryRun", - "type": "boolean" - } - } - }, - "output": { - "type": "structure", - "members": { - "SnapshotId": { - "locationName": "snapshotId" - } - } - } - }, - "CreateCustomerGateway": { - "input": { - "type": "structure", - "required": [ - "BgpAsn", - "PublicIp", - "Type" - ], - "members": { - "BgpAsn": { - "type": "integer" - }, - "PublicIp": { - "locationName": "IpAddress" - }, - "Type": {}, - "DryRun": { - "locationName": "dryRun", - "type": "boolean" - } - } - }, - "output": { - "type": "structure", - "members": { - "CustomerGateway": { - "shape": "S3s", - "locationName": "customerGateway" - } - } - } - }, - "CreateDefaultVpc": { - "input": { - "type": "structure", - "members": { - "DryRun": { - "type": "boolean" - } - } - }, - "output": { - "type": "structure", - "members": { - "Vpc": { - "shape": "S3v", - "locationName": "vpc" - } - } - } - }, - "CreateDhcpOptions": { - "input": { - "type": "structure", - "required": [ - "DhcpConfigurations" - ], - "members": { - "DhcpConfigurations": { - "locationName": "dhcpConfiguration", - "type": "list", - "member": { - "locationName": "item", - "type": "structure", - "members": { - "Key": { - "locationName": "key" - }, - "Values": { - "shape": "S32", - "locationName": "Value" - } - } - } - }, - "DryRun": { - "locationName": "dryRun", - "type": "boolean" - } - } - }, - "output": { - "type": "structure", - "members": { - "DhcpOptions": { - "shape": "S44", - "locationName": "dhcpOptions" - } - } - } - }, - "CreateEgressOnlyInternetGateway": { - "input": { - "type": "structure", - "required": [ - "VpcId" - ], - "members": { - "ClientToken": {}, - "DryRun": { - "type": "boolean" - }, - "VpcId": {} - } - }, - "output": { - "type": "structure", - "members": { - "ClientToken": { - "locationName": "clientToken" - }, - "EgressOnlyInternetGateway": { - "shape": "S4b", - "locationName": "egressOnlyInternetGateway" - } - } - } - }, - "CreateFlowLogs": { - "input": { - "type": "structure", - "required": [ - "DeliverLogsPermissionArn", - "LogGroupName", - "ResourceIds", - "ResourceType", - "TrafficType" - ], - "members": { - "ClientToken": {}, - "DeliverLogsPermissionArn": {}, - "LogGroupName": {}, - "ResourceIds": { - "shape": "S32", - "locationName": "ResourceId" - }, - "ResourceType": {}, - "TrafficType": {} - } - }, - "output": { - "type": "structure", - "members": { - "ClientToken": { - "locationName": "clientToken" - }, - "FlowLogIds": { - "shape": "S32", - "locationName": "flowLogIdSet" - }, - "Unsuccessful": { - "shape": "S4j", - "locationName": "unsuccessful" - } - } - } - }, - "CreateFpgaImage": { - "input": { - "type": "structure", - "required": [ - "InputStorageLocation" - ], - "members": { - "DryRun": { - "type": "boolean" - }, - "InputStorageLocation": { - "shape": "S4n" - }, - "LogsStorageLocation": { - "shape": "S4n" - }, - "Description": {}, - "Name": {}, - "ClientToken": {} - } - }, - "output": { - "type": "structure", - "members": { - "FpgaImageId": { - "locationName": "fpgaImageId" - }, - "FpgaImageGlobalId": { - "locationName": "fpgaImageGlobalId" - } - } - } - }, - "CreateImage": { - "input": { - "type": "structure", - "required": [ - "InstanceId", - "Name" - ], - "members": { - "BlockDeviceMappings": { - "shape": "S4q", - "locationName": "blockDeviceMapping" - }, - "Description": { - "locationName": "description" - }, - "DryRun": { - "locationName": "dryRun", - "type": "boolean" - }, - "InstanceId": { - "locationName": "instanceId" - }, - "Name": { - "locationName": "name" - }, - "NoReboot": { - "locationName": "noReboot", - "type": "boolean" - } - } - }, - "output": { - "type": "structure", - "members": { - "ImageId": { - "locationName": "imageId" - } - } - } - }, - "CreateInstanceExportTask": { - "input": { - "type": "structure", - "required": [ - "InstanceId" - ], - "members": { - "Description": { - "locationName": "description" - }, - "ExportToS3Task": { - "locationName": "exportToS3", - "type": "structure", - "members": { - "ContainerFormat": { - "locationName": "containerFormat" - }, - "DiskImageFormat": { - "locationName": "diskImageFormat" - }, - "S3Bucket": { - "locationName": "s3Bucket" - }, - "S3Prefix": { - "locationName": "s3Prefix" - } - } - }, - "InstanceId": { - "locationName": "instanceId" - }, - "TargetEnvironment": { - "locationName": "targetEnvironment" - } - } - }, - "output": { - "type": "structure", - "members": { - "ExportTask": { - "shape": "S51", - "locationName": "exportTask" - } - } - } - }, - "CreateInternetGateway": { - "input": { - "type": "structure", - "members": { - "DryRun": { - "locationName": "dryRun", - "type": "boolean" - } - } - }, - "output": { - "type": "structure", - "members": { - "InternetGateway": { - "shape": "S57", - "locationName": "internetGateway" - } - } - } - }, - "CreateKeyPair": { - "input": { - "type": "structure", - "required": [ - "KeyName" - ], - "members": { - "KeyName": {}, - "DryRun": { - "locationName": "dryRun", - "type": "boolean" - } - } - }, - "output": { - "type": "structure", - "members": { - "KeyFingerprint": { - "locationName": "keyFingerprint" - }, - "KeyMaterial": { - "locationName": "keyMaterial" - }, - "KeyName": { - "locationName": "keyName" - } - } - } - }, - "CreateNatGateway": { - "input": { - "type": "structure", - "required": [ - "AllocationId", - "SubnetId" - ], - "members": { - "AllocationId": {}, - "ClientToken": {}, - "SubnetId": {} - } - }, - "output": { - "type": "structure", - "members": { - "ClientToken": { - "locationName": "clientToken" - }, - "NatGateway": { - "shape": "S5c", - "locationName": "natGateway" - } - } - } - }, - "CreateNetworkAcl": { - "input": { - "type": "structure", - "required": [ - "VpcId" - ], - "members": { - "DryRun": { - "locationName": "dryRun", - "type": "boolean" - }, - "VpcId": { - "locationName": "vpcId" - } - } - }, - "output": { - "type": "structure", - "members": { - "NetworkAcl": { - "shape": "S5j", - "locationName": "networkAcl" - } - } - } - }, - "CreateNetworkAclEntry": { - "input": { - "type": "structure", - "required": [ - "Egress", - "NetworkAclId", - "Protocol", - "RuleAction", - "RuleNumber" - ], - "members": { - "CidrBlock": { - "locationName": "cidrBlock" - }, - "DryRun": { - "locationName": "dryRun", - "type": "boolean" - }, - "Egress": { - "locationName": "egress", - "type": "boolean" - }, - "IcmpTypeCode": { - "shape": "S5o", - "locationName": "Icmp" - }, - "Ipv6CidrBlock": { - "locationName": "ipv6CidrBlock" - }, - "NetworkAclId": { - "locationName": "networkAclId" - }, - "PortRange": { - "shape": "S5p", - "locationName": "portRange" - }, - "Protocol": { - "locationName": "protocol" - }, - "RuleAction": { - "locationName": "ruleAction" - }, - "RuleNumber": { - "locationName": "ruleNumber", - "type": "integer" - } - } - } - }, - "CreateNetworkInterface": { - "input": { - "type": "structure", - "required": [ - "SubnetId" - ], - "members": { - "Description": { - "locationName": "description" - }, - "DryRun": { - "locationName": "dryRun", - "type": "boolean" - }, - "Groups": { - "shape": "S5t", - "locationName": "SecurityGroupId" - }, - "Ipv6AddressCount": { - "locationName": "ipv6AddressCount", - "type": "integer" - }, - "Ipv6Addresses": { - "shape": "S5u", - "locationName": "ipv6Addresses" - }, - "PrivateIpAddress": { - "locationName": "privateIpAddress" - }, - "PrivateIpAddresses": { - "shape": "S5w", - "locationName": "privateIpAddresses" - }, - "SecondaryPrivateIpAddressCount": { - "locationName": "secondaryPrivateIpAddressCount", - "type": "integer" - }, - "SubnetId": { - "locationName": "subnetId" - } - } - }, - "output": { - "type": "structure", - "members": { - "NetworkInterface": { - "shape": "S5z", - "locationName": "networkInterface" - } - } - } - }, - "CreateNetworkInterfacePermission": { - "input": { - "type": "structure", - "required": [ - "NetworkInterfaceId", - "Permission" - ], - "members": { - "NetworkInterfaceId": {}, - "AwsAccountId": {}, - "AwsService": {}, - "Permission": {}, - "DryRun": { - "type": "boolean" - } - } - }, - "output": { - "type": "structure", - "members": { - "InterfacePermission": { - "shape": "S6d", - "locationName": "interfacePermission" - } - } - } - }, - "CreatePlacementGroup": { - "input": { - "type": "structure", - "required": [ - "GroupName", - "Strategy" - ], - "members": { - "DryRun": { - "locationName": "dryRun", - "type": "boolean" - }, - "GroupName": { - "locationName": "groupName" - }, - "Strategy": { - "locationName": "strategy" - } - } - } - }, - "CreateReservedInstancesListing": { - "input": { - "type": "structure", - "required": [ - "ClientToken", - "InstanceCount", - "PriceSchedules", - "ReservedInstancesId" - ], - "members": { - "ClientToken": { - "locationName": "clientToken" - }, - "InstanceCount": { - "locationName": "instanceCount", - "type": "integer" - }, - "PriceSchedules": { - "locationName": "priceSchedules", - "type": "list", - "member": { - "locationName": "item", - "type": "structure", - "members": { - "CurrencyCode": { - "locationName": "currencyCode" - }, - "Price": { - "locationName": "price", - "type": "double" - }, - "Term": { - "locationName": "term", - "type": "long" - } - } - } - }, - "ReservedInstancesId": { - "locationName": "reservedInstancesId" - } - } - }, - "output": { - "type": "structure", - "members": { - "ReservedInstancesListings": { - "shape": "S2q", - "locationName": "reservedInstancesListingsSet" - } - } - } - }, - "CreateRoute": { - "input": { - "type": "structure", - "required": [ - "RouteTableId" - ], - "members": { - "DestinationCidrBlock": { - "locationName": "destinationCidrBlock" - }, - "DestinationIpv6CidrBlock": { - "locationName": "destinationIpv6CidrBlock" - }, - "DryRun": { - "locationName": "dryRun", - "type": "boolean" - }, - "EgressOnlyInternetGatewayId": { - "locationName": "egressOnlyInternetGatewayId" - }, - "GatewayId": { - "locationName": "gatewayId" - }, - "InstanceId": { - "locationName": "instanceId" - }, - "NatGatewayId": { - "locationName": "natGatewayId" - }, - "NetworkInterfaceId": { - "locationName": "networkInterfaceId" - }, - "RouteTableId": { - "locationName": "routeTableId" - }, - "VpcPeeringConnectionId": { - "locationName": "vpcPeeringConnectionId" - } - } - }, - "output": { - "type": "structure", - "members": { - "Return": { - "locationName": "return", - "type": "boolean" - } - } - } - }, - "CreateRouteTable": { - "input": { - "type": "structure", - "required": [ - "VpcId" - ], - "members": { - "DryRun": { - "locationName": "dryRun", - "type": "boolean" - }, - "VpcId": { - "locationName": "vpcId" - } - } - }, - "output": { - "type": "structure", - "members": { - "RouteTable": { - "shape": "S6q", - "locationName": "routeTable" - } - } - } - }, - "CreateSecurityGroup": { - "input": { - "type": "structure", - "required": [ - "Description", - "GroupName" - ], - "members": { - "Description": { - "locationName": "GroupDescription" - }, - "GroupName": {}, - "VpcId": {}, - "DryRun": { - "locationName": "dryRun", - "type": "boolean" - } - } - }, - "output": { - "type": "structure", - "members": { - "GroupId": { - "locationName": "groupId" - } - } - } - }, - "CreateSnapshot": { - "input": { - "type": "structure", - "required": [ - "VolumeId" - ], - "members": { - "Description": {}, - "VolumeId": {}, - "DryRun": { - "locationName": "dryRun", - "type": "boolean" - } - } - }, - "output": { - "shape": "S72" - } - }, - "CreateSpotDatafeedSubscription": { - "input": { - "type": "structure", - "required": [ - "Bucket" - ], - "members": { - "Bucket": { - "locationName": "bucket" - }, - "DryRun": { - "locationName": "dryRun", - "type": "boolean" - }, - "Prefix": { - "locationName": "prefix" - } - } - }, - "output": { - "type": "structure", - "members": { - "SpotDatafeedSubscription": { - "shape": "S76", - "locationName": "spotDatafeedSubscription" - } - } - } - }, - "CreateSubnet": { - "input": { - "type": "structure", - "required": [ - "CidrBlock", - "VpcId" - ], - "members": { - "AvailabilityZone": {}, - "CidrBlock": {}, - "Ipv6CidrBlock": {}, - "VpcId": {}, - "DryRun": { - "locationName": "dryRun", - "type": "boolean" - } - } - }, - "output": { - "type": "structure", - "members": { - "Subnet": { - "shape": "S7b", - "locationName": "subnet" - } - } - } - }, - "CreateTags": { - "input": { - "type": "structure", - "required": [ - "Resources", - "Tags" - ], - "members": { - "DryRun": { - "locationName": "dryRun", - "type": "boolean" - }, - "Resources": { - "shape": "S7f", - "locationName": "ResourceId" - }, - "Tags": { - "shape": "Sl", - "locationName": "Tag" - } - } - } - }, - "CreateVolume": { - "input": { - "type": "structure", - "required": [ - "AvailabilityZone" - ], - "members": { - "AvailabilityZone": {}, - "Encrypted": { - "locationName": "encrypted", - "type": "boolean" - }, - "Iops": { - "type": "integer" - }, - "KmsKeyId": {}, - "Size": { - "type": "integer" - }, - "SnapshotId": {}, - "VolumeType": {}, - "DryRun": { - "locationName": "dryRun", - "type": "boolean" - }, - "TagSpecifications": { - "shape": "S7h", - "locationName": "TagSpecification" - } - } - }, - "output": { - "shape": "S7k" - } - }, - "CreateVpc": { - "input": { - "type": "structure", - "required": [ - "CidrBlock" - ], - "members": { - "CidrBlock": {}, - "AmazonProvidedIpv6CidrBlock": { - "locationName": "amazonProvidedIpv6CidrBlock", - "type": "boolean" - }, - "DryRun": { - "locationName": "dryRun", - "type": "boolean" - }, - "InstanceTenancy": { - "locationName": "instanceTenancy" - } - } - }, - "output": { - "type": "structure", - "members": { - "Vpc": { - "shape": "S3v", - "locationName": "vpc" - } - } - } - }, - "CreateVpcEndpoint": { - "input": { - "type": "structure", - "required": [ - "ServiceName", - "VpcId" - ], - "members": { - "ClientToken": {}, - "DryRun": { - "type": "boolean" - }, - "PolicyDocument": {}, - "RouteTableIds": { - "shape": "S32", - "locationName": "RouteTableId" - }, - "ServiceName": {}, - "VpcId": {} - } - }, - "output": { - "type": "structure", - "members": { - "ClientToken": { - "locationName": "clientToken" - }, - "VpcEndpoint": { - "shape": "S7r", - "locationName": "vpcEndpoint" - } - } - } - }, - "CreateVpcPeeringConnection": { - "input": { - "type": "structure", - "members": { - "DryRun": { - "locationName": "dryRun", - "type": "boolean" - }, - "PeerOwnerId": { - "locationName": "peerOwnerId" - }, - "PeerVpcId": { - "locationName": "peerVpcId" - }, - "VpcId": { - "locationName": "vpcId" - } - } - }, - "output": { - "type": "structure", - "members": { - "VpcPeeringConnection": { - "shape": "Sb", - "locationName": "vpcPeeringConnection" - } - } - } - }, - "CreateVpnConnection": { - "input": { - "type": "structure", - "required": [ - "CustomerGatewayId", - "Type", - "VpnGatewayId" - ], - "members": { - "CustomerGatewayId": {}, - "Type": {}, - "VpnGatewayId": {}, - "DryRun": { - "locationName": "dryRun", - "type": "boolean" - }, - "Options": { - "locationName": "options", - "type": "structure", - "members": { - "StaticRoutesOnly": { - "locationName": "staticRoutesOnly", - "type": "boolean" - }, - "TunnelOptions": { - "type": "list", - "member": { - "locationName": "item", - "type": "structure", - "members": { - "TunnelInsideCidr": {}, - "PreSharedKey": {} - } - } - } - } - } - } - }, - "output": { - "type": "structure", - "members": { - "VpnConnection": { - "shape": "S80", - "locationName": "vpnConnection" - } - } - } - }, - "CreateVpnConnectionRoute": { - "input": { - "type": "structure", - "required": [ - "DestinationCidrBlock", - "VpnConnectionId" - ], - "members": { - "DestinationCidrBlock": {}, - "VpnConnectionId": {} - } - } - }, - "CreateVpnGateway": { - "input": { - "type": "structure", - "required": [ - "Type" - ], - "members": { - "AvailabilityZone": {}, - "Type": {}, - "AmazonSideAsn": { - "type": "long" - }, - "DryRun": { - "locationName": "dryRun", - "type": "boolean" - } - } - }, - "output": { - "type": "structure", - "members": { - "VpnGateway": { - "shape": "S8c", - "locationName": "vpnGateway" - } - } - } - }, - "DeleteCustomerGateway": { - "input": { - "type": "structure", - "required": [ - "CustomerGatewayId" - ], - "members": { - "CustomerGatewayId": {}, - "DryRun": { - "locationName": "dryRun", - "type": "boolean" - } - } - } - }, - "DeleteDhcpOptions": { - "input": { - "type": "structure", - "required": [ - "DhcpOptionsId" - ], - "members": { - "DhcpOptionsId": {}, - "DryRun": { - "locationName": "dryRun", - "type": "boolean" - } - } - } - }, - "DeleteEgressOnlyInternetGateway": { - "input": { - "type": "structure", - "required": [ - "EgressOnlyInternetGatewayId" - ], - "members": { - "DryRun": { - "type": "boolean" - }, - "EgressOnlyInternetGatewayId": {} - } - }, - "output": { - "type": "structure", - "members": { - "ReturnCode": { - "locationName": "returnCode", - "type": "boolean" - } - } - } - }, - "DeleteFlowLogs": { - "input": { - "type": "structure", - "required": [ - "FlowLogIds" - ], - "members": { - "FlowLogIds": { - "shape": "S32", - "locationName": "FlowLogId" - } - } - }, - "output": { - "type": "structure", - "members": { - "Unsuccessful": { - "shape": "S4j", - "locationName": "unsuccessful" - } - } - } - }, - "DeleteFpgaImage": { - "input": { - "type": "structure", - "required": [ - "FpgaImageId" - ], - "members": { - "DryRun": { - "type": "boolean" - }, - "FpgaImageId": {} - } - }, - "output": { - "type": "structure", - "members": { - "Return": { - "locationName": "return", - "type": "boolean" - } - } - } - }, - "DeleteInternetGateway": { - "input": { - "type": "structure", - "required": [ - "InternetGatewayId" - ], - "members": { - "DryRun": { - "locationName": "dryRun", - "type": "boolean" - }, - "InternetGatewayId": { - "locationName": "internetGatewayId" - } - } - } - }, - "DeleteKeyPair": { - "input": { - "type": "structure", - "required": [ - "KeyName" - ], - "members": { - "KeyName": {}, - "DryRun": { - "locationName": "dryRun", - "type": "boolean" - } - } - } - }, - "DeleteNatGateway": { - "input": { - "type": "structure", - "required": [ - "NatGatewayId" - ], - "members": { - "NatGatewayId": {} - } - }, - "output": { - "type": "structure", - "members": { - "NatGatewayId": { - "locationName": "natGatewayId" - } - } - } - }, - "DeleteNetworkAcl": { - "input": { - "type": "structure", - "required": [ - "NetworkAclId" - ], - "members": { - "DryRun": { - "locationName": "dryRun", - "type": "boolean" - }, - "NetworkAclId": { - "locationName": "networkAclId" - } - } - } - }, - "DeleteNetworkAclEntry": { - "input": { - "type": "structure", - "required": [ - "Egress", - "NetworkAclId", - "RuleNumber" - ], - "members": { - "DryRun": { - "locationName": "dryRun", - "type": "boolean" - }, - "Egress": { - "locationName": "egress", - "type": "boolean" - }, - "NetworkAclId": { - "locationName": "networkAclId" - }, - "RuleNumber": { - "locationName": "ruleNumber", - "type": "integer" - } - } - } - }, - "DeleteNetworkInterface": { - "input": { - "type": "structure", - "required": [ - "NetworkInterfaceId" - ], - "members": { - "DryRun": { - "locationName": "dryRun", - "type": "boolean" - }, - "NetworkInterfaceId": { - "locationName": "networkInterfaceId" - } - } - } - }, - "DeleteNetworkInterfacePermission": { - "input": { - "type": "structure", - "required": [ - "NetworkInterfacePermissionId" - ], - "members": { - "NetworkInterfacePermissionId": {}, - "Force": { - "type": "boolean" - }, - "DryRun": { - "type": "boolean" - } - } - }, - "output": { - "type": "structure", - "members": { - "Return": { - "locationName": "return", - "type": "boolean" - } - } - } - }, - "DeletePlacementGroup": { - "input": { - "type": "structure", - "required": [ - "GroupName" - ], - "members": { - "DryRun": { - "locationName": "dryRun", - "type": "boolean" - }, - "GroupName": { - "locationName": "groupName" - } - } - } - }, - "DeleteRoute": { - "input": { - "type": "structure", - "required": [ - "RouteTableId" - ], - "members": { - "DestinationCidrBlock": { - "locationName": "destinationCidrBlock" - }, - "DestinationIpv6CidrBlock": { - "locationName": "destinationIpv6CidrBlock" - }, - "DryRun": { - "locationName": "dryRun", - "type": "boolean" - }, - "RouteTableId": { - "locationName": "routeTableId" - } - } - } - }, - "DeleteRouteTable": { - "input": { - "type": "structure", - "required": [ - "RouteTableId" - ], - "members": { - "DryRun": { - "locationName": "dryRun", - "type": "boolean" - }, - "RouteTableId": { - "locationName": "routeTableId" - } - } - } - }, - "DeleteSecurityGroup": { - "input": { - "type": "structure", - "members": { - "GroupId": {}, - "GroupName": {}, - "DryRun": { - "locationName": "dryRun", - "type": "boolean" - } - } - } - }, - "DeleteSnapshot": { - "input": { - "type": "structure", - "required": [ - "SnapshotId" - ], - "members": { - "SnapshotId": {}, - "DryRun": { - "locationName": "dryRun", - "type": "boolean" - } - } - } - }, - "DeleteSpotDatafeedSubscription": { - "input": { - "type": "structure", - "members": { - "DryRun": { - "locationName": "dryRun", - "type": "boolean" - } - } - } - }, - "DeleteSubnet": { - "input": { - "type": "structure", - "required": [ - "SubnetId" - ], - "members": { - "SubnetId": {}, - "DryRun": { - "locationName": "dryRun", - "type": "boolean" - } - } - } - }, - "DeleteTags": { - "input": { - "type": "structure", - "required": [ - "Resources" - ], - "members": { - "DryRun": { - "locationName": "dryRun", - "type": "boolean" - }, - "Resources": { - "shape": "S7f", - "locationName": "resourceId" - }, - "Tags": { - "shape": "Sl", - "locationName": "tag" - } - } - } - }, - "DeleteVolume": { - "input": { - "type": "structure", - "required": [ - "VolumeId" - ], - "members": { - "VolumeId": {}, - "DryRun": { - "locationName": "dryRun", - "type": "boolean" - } - } - } - }, - "DeleteVpc": { - "input": { - "type": "structure", - "required": [ - "VpcId" - ], - "members": { - "VpcId": {}, - "DryRun": { - "locationName": "dryRun", - "type": "boolean" - } - } - } - }, - "DeleteVpcEndpoints": { - "input": { - "type": "structure", - "required": [ - "VpcEndpointIds" - ], - "members": { - "DryRun": { - "type": "boolean" - }, - "VpcEndpointIds": { - "shape": "S32", - "locationName": "VpcEndpointId" - } - } - }, - "output": { - "type": "structure", - "members": { - "Unsuccessful": { - "shape": "S4j", - "locationName": "unsuccessful" - } - } - } - }, - "DeleteVpcPeeringConnection": { - "input": { - "type": "structure", - "required": [ - "VpcPeeringConnectionId" - ], - "members": { - "DryRun": { - "locationName": "dryRun", - "type": "boolean" - }, - "VpcPeeringConnectionId": { - "locationName": "vpcPeeringConnectionId" - } - } - }, - "output": { - "type": "structure", - "members": { - "Return": { - "locationName": "return", - "type": "boolean" - } - } - } - }, - "DeleteVpnConnection": { - "input": { - "type": "structure", - "required": [ - "VpnConnectionId" - ], - "members": { - "VpnConnectionId": {}, - "DryRun": { - "locationName": "dryRun", - "type": "boolean" - } - } - } - }, - "DeleteVpnConnectionRoute": { - "input": { - "type": "structure", - "required": [ - "DestinationCidrBlock", - "VpnConnectionId" - ], - "members": { - "DestinationCidrBlock": {}, - "VpnConnectionId": {} - } - } - }, - "DeleteVpnGateway": { - "input": { - "type": "structure", - "required": [ - "VpnGatewayId" - ], - "members": { - "VpnGatewayId": {}, - "DryRun": { - "locationName": "dryRun", - "type": "boolean" - } - } - } - }, - "DeregisterImage": { - "input": { - "type": "structure", - "required": [ - "ImageId" - ], - "members": { - "ImageId": {}, - "DryRun": { - "locationName": "dryRun", - "type": "boolean" - } - } - } - }, - "DescribeAccountAttributes": { - "input": { - "type": "structure", - "members": { - "AttributeNames": { - "locationName": "attributeName", - "type": "list", - "member": { - "locationName": "attributeName" - } - }, - "DryRun": { - "locationName": "dryRun", - "type": "boolean" - } - } - }, - "output": { - "type": "structure", - "members": { - "AccountAttributes": { - "locationName": "accountAttributeSet", - "type": "list", - "member": { - "locationName": "item", - "type": "structure", - "members": { - "AttributeName": { - "locationName": "attributeName" - }, - "AttributeValues": { - "locationName": "attributeValueSet", - "type": "list", - "member": { - "locationName": "item", - "type": "structure", - "members": { - "AttributeValue": { - "locationName": "attributeValue" - } - } - } - } - } - } - } - } - } - }, - "DescribeAddresses": { - "input": { - "type": "structure", - "members": { - "Filters": { - "shape": "S9m", - "locationName": "Filter" - }, - "PublicIps": { - "locationName": "PublicIp", - "type": "list", - "member": { - "locationName": "PublicIp" - } - }, - "AllocationIds": { - "locationName": "AllocationId", - "type": "list", - "member": { - "locationName": "AllocationId" - } - }, - "DryRun": { - "locationName": "dryRun", - "type": "boolean" - } - } - }, - "output": { - "type": "structure", - "members": { - "Addresses": { - "locationName": "addressesSet", - "type": "list", - "member": { - "locationName": "item", - "type": "structure", - "members": { - "InstanceId": { - "locationName": "instanceId" - }, - "PublicIp": { - "locationName": "publicIp" - }, - "AllocationId": { - "locationName": "allocationId" - }, - "AssociationId": { - "locationName": "associationId" - }, - "Domain": { - "locationName": "domain" - }, - "NetworkInterfaceId": { - "locationName": "networkInterfaceId" - }, - "NetworkInterfaceOwnerId": { - "locationName": "networkInterfaceOwnerId" - }, - "PrivateIpAddress": { - "locationName": "privateIpAddress" - } - } - } - } - } - } - }, - "DescribeAvailabilityZones": { - "input": { - "type": "structure", - "members": { - "Filters": { - "shape": "S9m", - "locationName": "Filter" - }, - "ZoneNames": { - "locationName": "ZoneName", - "type": "list", - "member": { - "locationName": "ZoneName" - } - }, - "DryRun": { - "locationName": "dryRun", - "type": "boolean" - } - } - }, - "output": { - "type": "structure", - "members": { - "AvailabilityZones": { - "locationName": "availabilityZoneInfo", - "type": "list", - "member": { - "locationName": "item", - "type": "structure", - "members": { - "State": { - "locationName": "zoneState" - }, - "Messages": { - "locationName": "messageSet", - "type": "list", - "member": { - "locationName": "item", - "type": "structure", - "members": { - "Message": { - "locationName": "message" - } - } - } - }, - "RegionName": { - "locationName": "regionName" - }, - "ZoneName": { - "locationName": "zoneName" - } - } - } - } - } - } - }, - "DescribeBundleTasks": { - "input": { - "type": "structure", - "members": { - "BundleIds": { - "locationName": "BundleId", - "type": "list", - "member": { - "locationName": "BundleId" - } - }, - "Filters": { - "shape": "S9m", - "locationName": "Filter" - }, - "DryRun": { - "locationName": "dryRun", - "type": "boolean" - } - } - }, - "output": { - "type": "structure", - "members": { - "BundleTasks": { - "locationName": "bundleInstanceTasksSet", - "type": "list", - "member": { - "shape": "S2f", - "locationName": "item" - } - } - } - } - }, - "DescribeClassicLinkInstances": { - "input": { - "type": "structure", - "members": { - "Filters": { - "shape": "S9m", - "locationName": "Filter" - }, - "DryRun": { - "locationName": "dryRun", - "type": "boolean" - }, - "InstanceIds": { - "shape": "Sa6", - "locationName": "InstanceId" - }, - "MaxResults": { - "locationName": "maxResults", - "type": "integer" - }, - "NextToken": { - "locationName": "nextToken" - } - } - }, - "output": { - "type": "structure", - "members": { - "Instances": { - "locationName": "instancesSet", - "type": "list", - "member": { - "locationName": "item", - "type": "structure", - "members": { - "Groups": { - "shape": "S62", - "locationName": "groupSet" - }, - "InstanceId": { - "locationName": "instanceId" - }, - "Tags": { - "shape": "Sl", - "locationName": "tagSet" - }, - "VpcId": { - "locationName": "vpcId" - } - } - } - }, - "NextToken": { - "locationName": "nextToken" - } - } - } - }, - "DescribeConversionTasks": { - "input": { - "type": "structure", - "members": { - "ConversionTaskIds": { - "locationName": "conversionTaskId", - "type": "list", - "member": { - "locationName": "item" - } - }, - "DryRun": { - "locationName": "dryRun", - "type": "boolean" - } - } - }, - "output": { - "type": "structure", - "members": { - "ConversionTasks": { - "locationName": "conversionTasks", - "type": "list", - "member": { - "shape": "Sae", - "locationName": "item" - } - } - } - } - }, - "DescribeCustomerGateways": { - "input": { - "type": "structure", - "members": { - "CustomerGatewayIds": { - "locationName": "CustomerGatewayId", - "type": "list", - "member": { - "locationName": "CustomerGatewayId" - } - }, - "Filters": { - "shape": "S9m", - "locationName": "Filter" - }, - "DryRun": { - "locationName": "dryRun", - "type": "boolean" - } - } - }, - "output": { - "type": "structure", - "members": { - "CustomerGateways": { - "locationName": "customerGatewaySet", - "type": "list", - "member": { - "shape": "S3s", - "locationName": "item" - } - } - } - } - }, - "DescribeDhcpOptions": { - "input": { - "type": "structure", - "members": { - "DhcpOptionsIds": { - "locationName": "DhcpOptionsId", - "type": "list", - "member": { - "locationName": "DhcpOptionsId" - } - }, - "Filters": { - "shape": "S9m", - "locationName": "Filter" - }, - "DryRun": { - "locationName": "dryRun", - "type": "boolean" - } - } - }, - "output": { - "type": "structure", - "members": { - "DhcpOptions": { - "locationName": "dhcpOptionsSet", - "type": "list", - "member": { - "shape": "S44", - "locationName": "item" - } - } - } - } - }, - "DescribeEgressOnlyInternetGateways": { - "input": { - "type": "structure", - "members": { - "DryRun": { - "type": "boolean" - }, - "EgressOnlyInternetGatewayIds": { - "locationName": "EgressOnlyInternetGatewayId", - "type": "list", - "member": { - "locationName": "item" - } - }, - "MaxResults": { - "type": "integer" - }, - "NextToken": {} - } - }, - "output": { - "type": "structure", - "members": { - "EgressOnlyInternetGateways": { - "locationName": "egressOnlyInternetGatewaySet", - "type": "list", - "member": { - "shape": "S4b", - "locationName": "item" - } - }, - "NextToken": { - "locationName": "nextToken" - } - } - } - }, - "DescribeElasticGpus": { - "input": { - "type": "structure", - "members": { - "ElasticGpuIds": { - "locationName": "ElasticGpuId", - "type": "list", - "member": { - "locationName": "item" - } - }, - "DryRun": { - "type": "boolean" - }, - "Filters": { - "shape": "S9m", - "locationName": "Filter" - }, - "MaxResults": { - "type": "integer" - }, - "NextToken": {} - } - }, - "output": { - "type": "structure", - "members": { - "ElasticGpuSet": { - "locationName": "elasticGpuSet", - "type": "list", - "member": { - "locationName": "item", - "type": "structure", - "members": { - "ElasticGpuId": { - "locationName": "elasticGpuId" - }, - "AvailabilityZone": { - "locationName": "availabilityZone" - }, - "ElasticGpuType": { - "locationName": "elasticGpuType" - }, - "ElasticGpuHealth": { - "locationName": "elasticGpuHealth", - "type": "structure", - "members": { - "Status": { - "locationName": "status" - } - } - }, - "ElasticGpuState": { - "locationName": "elasticGpuState" - }, - "InstanceId": { - "locationName": "instanceId" - } - } - } - }, - "MaxResults": { - "locationName": "maxResults", - "type": "integer" - }, - "NextToken": { - "locationName": "nextToken" - } - } - } - }, - "DescribeExportTasks": { - "input": { - "type": "structure", - "members": { - "ExportTaskIds": { - "locationName": "exportTaskId", - "type": "list", - "member": { - "locationName": "ExportTaskId" - } - } - } - }, - "output": { - "type": "structure", - "members": { - "ExportTasks": { - "locationName": "exportTaskSet", - "type": "list", - "member": { - "shape": "S51", - "locationName": "item" - } - } - } - } - }, - "DescribeFlowLogs": { - "input": { - "type": "structure", - "members": { - "Filter": { - "shape": "S9m" - }, - "FlowLogIds": { - "shape": "S32", - "locationName": "FlowLogId" - }, - "MaxResults": { - "type": "integer" - }, - "NextToken": {} - } - }, - "output": { - "type": "structure", - "members": { - "FlowLogs": { - "locationName": "flowLogSet", - "type": "list", - "member": { - "locationName": "item", - "type": "structure", - "members": { - "CreationTime": { - "locationName": "creationTime", - "type": "timestamp" - }, - "DeliverLogsErrorMessage": { - "locationName": "deliverLogsErrorMessage" - }, - "DeliverLogsPermissionArn": { - "locationName": "deliverLogsPermissionArn" - }, - "DeliverLogsStatus": { - "locationName": "deliverLogsStatus" - }, - "FlowLogId": { - "locationName": "flowLogId" - }, - "FlowLogStatus": { - "locationName": "flowLogStatus" - }, - "LogGroupName": { - "locationName": "logGroupName" - }, - "ResourceId": { - "locationName": "resourceId" - }, - "TrafficType": { - "locationName": "trafficType" - } - } - } - }, - "NextToken": { - "locationName": "nextToken" - } - } - } - }, - "DescribeFpgaImageAttribute": { - "input": { - "type": "structure", - "required": [ - "FpgaImageId", - "Attribute" - ], - "members": { - "DryRun": { - "type": "boolean" - }, - "FpgaImageId": {}, - "Attribute": {} - } - }, - "output": { - "type": "structure", - "members": { - "FpgaImageAttribute": { - "shape": "Sbi", - "locationName": "fpgaImageAttribute" - } - } - } - }, - "DescribeFpgaImages": { - "input": { - "type": "structure", - "members": { - "DryRun": { - "type": "boolean" - }, - "FpgaImageIds": { - "locationName": "FpgaImageId", - "type": "list", - "member": { - "locationName": "item" - } - }, - "Owners": { - "shape": "Sbr", - "locationName": "Owner" - }, - "Filters": { - "shape": "S9m", - "locationName": "Filter" - }, - "NextToken": {}, - "MaxResults": { - "type": "integer" - } - } - }, - "output": { - "type": "structure", - "members": { - "FpgaImages": { - "locationName": "fpgaImageSet", - "type": "list", - "member": { - "locationName": "item", - "type": "structure", - "members": { - "FpgaImageId": { - "locationName": "fpgaImageId" - }, - "FpgaImageGlobalId": { - "locationName": "fpgaImageGlobalId" - }, - "Name": { - "locationName": "name" - }, - "Description": { - "locationName": "description" - }, - "ShellVersion": { - "locationName": "shellVersion" - }, - "PciId": { - "locationName": "pciId", - "type": "structure", - "members": { - "DeviceId": {}, - "VendorId": {}, - "SubsystemId": {}, - "SubsystemVendorId": {} - } - }, - "State": { - "locationName": "state", - "type": "structure", - "members": { - "Code": { - "locationName": "code" - }, - "Message": { - "locationName": "message" - } - } - }, - "CreateTime": { - "locationName": "createTime", - "type": "timestamp" - }, - "UpdateTime": { - "locationName": "updateTime", - "type": "timestamp" - }, - "OwnerId": { - "locationName": "ownerId" - }, - "OwnerAlias": { - "locationName": "ownerAlias" - }, - "ProductCodes": { - "shape": "Sbm", - "locationName": "productCodes" - }, - "Tags": { - "shape": "Sl", - "locationName": "tags" - }, - "Public": { - "locationName": "public", - "type": "boolean" - } - } - } - }, - "NextToken": { - "locationName": "nextToken" - } - } - } - }, - "DescribeHostReservationOfferings": { - "input": { - "type": "structure", - "members": { - "Filter": { - "shape": "S9m" - }, - "MaxDuration": { - "type": "integer" - }, - "MaxResults": { - "type": "integer" - }, - "MinDuration": { - "type": "integer" - }, - "NextToken": {}, - "OfferingId": {} - } - }, - "output": { - "type": "structure", - "members": { - "NextToken": { - "locationName": "nextToken" - }, - "OfferingSet": { - "locationName": "offeringSet", - "type": "list", - "member": { - "locationName": "item", - "type": "structure", - "members": { - "CurrencyCode": { - "locationName": "currencyCode" - }, - "Duration": { - "locationName": "duration", - "type": "integer" - }, - "HourlyPrice": { - "locationName": "hourlyPrice" - }, - "InstanceFamily": { - "locationName": "instanceFamily" - }, - "OfferingId": { - "locationName": "offeringId" - }, - "PaymentOption": { - "locationName": "paymentOption" - }, - "UpfrontPrice": { - "locationName": "upfrontPrice" - } - } - } - } - } - } - }, - "DescribeHostReservations": { - "input": { - "type": "structure", - "members": { - "Filter": { - "shape": "S9m" - }, - "HostReservationIdSet": { - "type": "list", - "member": { - "locationName": "item" - } - }, - "MaxResults": { - "type": "integer" - }, - "NextToken": {} - } - }, - "output": { - "type": "structure", - "members": { - "HostReservationSet": { - "locationName": "hostReservationSet", - "type": "list", - "member": { - "locationName": "item", - "type": "structure", - "members": { - "Count": { - "locationName": "count", - "type": "integer" - }, - "CurrencyCode": { - "locationName": "currencyCode" - }, - "Duration": { - "locationName": "duration", - "type": "integer" - }, - "End": { - "locationName": "end", - "type": "timestamp" - }, - "HostIdSet": { - "shape": "Sca", - "locationName": "hostIdSet" - }, - "HostReservationId": { - "locationName": "hostReservationId" - }, - "HourlyPrice": { - "locationName": "hourlyPrice" - }, - "InstanceFamily": { - "locationName": "instanceFamily" - }, - "OfferingId": { - "locationName": "offeringId" - }, - "PaymentOption": { - "locationName": "paymentOption" - }, - "Start": { - "locationName": "start", - "type": "timestamp" - }, - "State": { - "locationName": "state" - }, - "UpfrontPrice": { - "locationName": "upfrontPrice" - } - } - } - }, - "NextToken": { - "locationName": "nextToken" - } - } - } - }, - "DescribeHosts": { - "input": { - "type": "structure", - "members": { - "Filter": { - "shape": "S9m", - "locationName": "filter" - }, - "HostIds": { - "shape": "Scd", - "locationName": "hostId" - }, - "MaxResults": { - "locationName": "maxResults", - "type": "integer" - }, - "NextToken": { - "locationName": "nextToken" - } - } - }, - "output": { - "type": "structure", - "members": { - "Hosts": { - "locationName": "hostSet", - "type": "list", - "member": { - "locationName": "item", - "type": "structure", - "members": { - "AutoPlacement": { - "locationName": "autoPlacement" - }, - "AvailabilityZone": { - "locationName": "availabilityZone" - }, - "AvailableCapacity": { - "locationName": "availableCapacity", - "type": "structure", - "members": { - "AvailableInstanceCapacity": { - "locationName": "availableInstanceCapacity", - "type": "list", - "member": { - "locationName": "item", - "type": "structure", - "members": { - "AvailableCapacity": { - "locationName": "availableCapacity", - "type": "integer" - }, - "InstanceType": { - "locationName": "instanceType" - }, - "TotalCapacity": { - "locationName": "totalCapacity", - "type": "integer" - } - } - } - }, - "AvailableVCpus": { - "locationName": "availableVCpus", - "type": "integer" - } - } - }, - "ClientToken": { - "locationName": "clientToken" - }, - "HostId": { - "locationName": "hostId" - }, - "HostProperties": { - "locationName": "hostProperties", - "type": "structure", - "members": { - "Cores": { - "locationName": "cores", - "type": "integer" - }, - "InstanceType": { - "locationName": "instanceType" - }, - "Sockets": { - "locationName": "sockets", - "type": "integer" - }, - "TotalVCpus": { - "locationName": "totalVCpus", - "type": "integer" - } - } - }, - "HostReservationId": { - "locationName": "hostReservationId" - }, - "Instances": { - "locationName": "instances", - "type": "list", - "member": { - "locationName": "item", - "type": "structure", - "members": { - "InstanceId": { - "locationName": "instanceId" - }, - "InstanceType": { - "locationName": "instanceType" - } - } - } - }, - "State": { - "locationName": "state" - } - } - } - }, - "NextToken": { - "locationName": "nextToken" - } - } - } - }, - "DescribeIamInstanceProfileAssociations": { - "input": { - "type": "structure", - "members": { - "AssociationIds": { - "locationName": "AssociationId", - "type": "list", - "member": { - "locationName": "AssociationId" - } - }, - "Filters": { - "shape": "S9m", - "locationName": "Filter" - }, - "MaxResults": { - "type": "integer" - }, - "NextToken": {} - } - }, - "output": { - "type": "structure", - "members": { - "IamInstanceProfileAssociations": { - "locationName": "iamInstanceProfileAssociationSet", - "type": "list", - "member": { - "shape": "S15", - "locationName": "item" - } - }, - "NextToken": { - "locationName": "nextToken" - } - } - } - }, - "DescribeIdFormat": { - "input": { - "type": "structure", - "members": { - "Resource": {} - } - }, - "output": { - "type": "structure", - "members": { - "Statuses": { - "shape": "Scu", - "locationName": "statusSet" - } - } - } - }, - "DescribeIdentityIdFormat": { - "input": { - "type": "structure", - "required": [ - "PrincipalArn" - ], - "members": { - "PrincipalArn": { - "locationName": "principalArn" - }, - "Resource": { - "locationName": "resource" - } - } - }, - "output": { - "type": "structure", - "members": { - "Statuses": { - "shape": "Scu", - "locationName": "statusSet" - } - } - } - }, - "DescribeImageAttribute": { - "input": { - "type": "structure", - "required": [ - "Attribute", - "ImageId" - ], - "members": { - "Attribute": {}, - "ImageId": {}, - "DryRun": { - "locationName": "dryRun", - "type": "boolean" - } - } - }, - "output": { - "type": "structure", - "members": { - "BlockDeviceMappings": { - "shape": "Sd1", - "locationName": "blockDeviceMapping" - }, - "ImageId": { - "locationName": "imageId" - }, - "LaunchPermissions": { - "shape": "Sd2", - "locationName": "launchPermission" - }, - "ProductCodes": { - "shape": "Sbm", - "locationName": "productCodes" - }, - "Description": { - "shape": "S48", - "locationName": "description" - }, - "KernelId": { - "shape": "S48", - "locationName": "kernel" - }, - "RamdiskId": { - "shape": "S48", - "locationName": "ramdisk" - }, - "SriovNetSupport": { - "shape": "S48", - "locationName": "sriovNetSupport" - } - } - } - }, - "DescribeImages": { - "input": { - "type": "structure", - "members": { - "ExecutableUsers": { - "locationName": "ExecutableBy", - "type": "list", - "member": { - "locationName": "ExecutableBy" - } - }, - "Filters": { - "shape": "S9m", - "locationName": "Filter" - }, - "ImageIds": { - "locationName": "ImageId", - "type": "list", - "member": { - "locationName": "ImageId" - } - }, - "Owners": { - "shape": "Sbr", - "locationName": "Owner" - }, - "DryRun": { - "locationName": "dryRun", - "type": "boolean" - } - } - }, - "output": { - "type": "structure", - "members": { - "Images": { - "locationName": "imagesSet", - "type": "list", - "member": { - "locationName": "item", - "type": "structure", - "members": { - "Architecture": { - "locationName": "architecture" - }, - "CreationDate": { - "locationName": "creationDate" - }, - "ImageId": { - "locationName": "imageId" - }, - "ImageLocation": { - "locationName": "imageLocation" - }, - "ImageType": { - "locationName": "imageType" - }, - "Public": { - "locationName": "isPublic", - "type": "boolean" - }, - "KernelId": { - "locationName": "kernelId" - }, - "OwnerId": { - "locationName": "imageOwnerId" - }, - "Platform": { - "locationName": "platform" - }, - "ProductCodes": { - "shape": "Sbm", - "locationName": "productCodes" - }, - "RamdiskId": { - "locationName": "ramdiskId" - }, - "State": { - "locationName": "imageState" - }, - "BlockDeviceMappings": { - "shape": "Sd1", - "locationName": "blockDeviceMapping" - }, - "Description": { - "locationName": "description" - }, - "EnaSupport": { - "locationName": "enaSupport", - "type": "boolean" - }, - "Hypervisor": { - "locationName": "hypervisor" - }, - "ImageOwnerAlias": { - "locationName": "imageOwnerAlias" - }, - "Name": { - "locationName": "name" - }, - "RootDeviceName": { - "locationName": "rootDeviceName" - }, - "RootDeviceType": { - "locationName": "rootDeviceType" - }, - "SriovNetSupport": { - "locationName": "sriovNetSupport" - }, - "StateReason": { - "shape": "Sdf", - "locationName": "stateReason" - }, - "Tags": { - "shape": "Sl", - "locationName": "tagSet" - }, - "VirtualizationType": { - "locationName": "virtualizationType" - } - } - } - } - } - } - }, - "DescribeImportImageTasks": { - "input": { - "type": "structure", - "members": { - "DryRun": { - "type": "boolean" - }, - "Filters": { - "shape": "S9m" - }, - "ImportTaskIds": { - "shape": "Sdi", - "locationName": "ImportTaskId" - }, - "MaxResults": { - "type": "integer" - }, - "NextToken": {} - } - }, - "output": { - "type": "structure", - "members": { - "ImportImageTasks": { - "locationName": "importImageTaskSet", - "type": "list", - "member": { - "locationName": "item", - "type": "structure", - "members": { - "Architecture": { - "locationName": "architecture" - }, - "Description": { - "locationName": "description" - }, - "Hypervisor": { - "locationName": "hypervisor" - }, - "ImageId": { - "locationName": "imageId" - }, - "ImportTaskId": { - "locationName": "importTaskId" - }, - "LicenseType": { - "locationName": "licenseType" - }, - "Platform": { - "locationName": "platform" - }, - "Progress": { - "locationName": "progress" - }, - "SnapshotDetails": { - "shape": "Sdm", - "locationName": "snapshotDetailSet" - }, - "Status": { - "locationName": "status" - }, - "StatusMessage": { - "locationName": "statusMessage" - } - } - } - }, - "NextToken": { - "locationName": "nextToken" - } - } - } - }, - "DescribeImportSnapshotTasks": { - "input": { - "type": "structure", - "members": { - "DryRun": { - "type": "boolean" - }, - "Filters": { - "shape": "S9m" - }, - "ImportTaskIds": { - "shape": "Sdi", - "locationName": "ImportTaskId" - }, - "MaxResults": { - "type": "integer" - }, - "NextToken": {} - } - }, - "output": { - "type": "structure", - "members": { - "ImportSnapshotTasks": { - "locationName": "importSnapshotTaskSet", - "type": "list", - "member": { - "locationName": "item", - "type": "structure", - "members": { - "Description": { - "locationName": "description" - }, - "ImportTaskId": { - "locationName": "importTaskId" - }, - "SnapshotTaskDetail": { - "shape": "Sdt", - "locationName": "snapshotTaskDetail" - } - } - } - }, - "NextToken": { - "locationName": "nextToken" - } - } - } - }, - "DescribeInstanceAttribute": { - "input": { - "type": "structure", - "required": [ - "Attribute", - "InstanceId" - ], - "members": { - "Attribute": { - "locationName": "attribute" - }, - "DryRun": { - "locationName": "dryRun", - "type": "boolean" - }, - "InstanceId": { - "locationName": "instanceId" - } - } - }, - "output": { - "type": "structure", - "members": { - "Groups": { - "shape": "S62", - "locationName": "groupSet" - }, - "BlockDeviceMappings": { - "shape": "Sdx", - "locationName": "blockDeviceMapping" - }, - "DisableApiTermination": { - "shape": "Se0", - "locationName": "disableApiTermination" - }, - "EnaSupport": { - "shape": "Se0", - "locationName": "enaSupport" - }, - "EbsOptimized": { - "shape": "Se0", - "locationName": "ebsOptimized" - }, - "InstanceId": { - "locationName": "instanceId" - }, - "InstanceInitiatedShutdownBehavior": { - "shape": "S48", - "locationName": "instanceInitiatedShutdownBehavior" - }, - "InstanceType": { - "shape": "S48", - "locationName": "instanceType" - }, - "KernelId": { - "shape": "S48", - "locationName": "kernel" - }, - "ProductCodes": { - "shape": "Sbm", - "locationName": "productCodes" - }, - "RamdiskId": { - "shape": "S48", - "locationName": "ramdisk" - }, - "RootDeviceName": { - "shape": "S48", - "locationName": "rootDeviceName" - }, - "SourceDestCheck": { - "shape": "Se0", - "locationName": "sourceDestCheck" - }, - "SriovNetSupport": { - "shape": "S48", - "locationName": "sriovNetSupport" - }, - "UserData": { - "shape": "S48", - "locationName": "userData" - } - } - } - }, - "DescribeInstanceStatus": { - "input": { - "type": "structure", - "members": { - "Filters": { - "shape": "S9m", - "locationName": "Filter" - }, - "InstanceIds": { - "shape": "Sa6", - "locationName": "InstanceId" - }, - "MaxResults": { - "type": "integer" - }, - "NextToken": {}, - "DryRun": { - "locationName": "dryRun", - "type": "boolean" - }, - "IncludeAllInstances": { - "locationName": "includeAllInstances", - "type": "boolean" - } - } - }, - "output": { - "type": "structure", - "members": { - "InstanceStatuses": { - "locationName": "instanceStatusSet", - "type": "list", - "member": { - "locationName": "item", - "type": "structure", - "members": { - "AvailabilityZone": { - "locationName": "availabilityZone" - }, - "Events": { - "locationName": "eventsSet", - "type": "list", - "member": { - "locationName": "item", - "type": "structure", - "members": { - "Code": { - "locationName": "code" - }, - "Description": { - "locationName": "description" - }, - "NotAfter": { - "locationName": "notAfter", - "type": "timestamp" - }, - "NotBefore": { - "locationName": "notBefore", - "type": "timestamp" - } - } - } - }, - "InstanceId": { - "locationName": "instanceId" - }, - "InstanceState": { - "shape": "Se8", - "locationName": "instanceState" - }, - "InstanceStatus": { - "shape": "Sea", - "locationName": "instanceStatus" - }, - "SystemStatus": { - "shape": "Sea", - "locationName": "systemStatus" - } - } - } - }, - "NextToken": { - "locationName": "nextToken" - } - } - } - }, - "DescribeInstances": { - "input": { - "type": "structure", - "members": { - "Filters": { - "shape": "S9m", - "locationName": "Filter" - }, - "InstanceIds": { - "shape": "Sa6", - "locationName": "InstanceId" - }, - "DryRun": { - "locationName": "dryRun", - "type": "boolean" - }, - "MaxResults": { - "locationName": "maxResults", - "type": "integer" - }, - "NextToken": { - "locationName": "nextToken" - } - } - }, - "output": { - "type": "structure", - "members": { - "Reservations": { - "locationName": "reservationSet", - "type": "list", - "member": { - "shape": "Sej", - "locationName": "item" - } - }, - "NextToken": { - "locationName": "nextToken" - } - } - } - }, - "DescribeInternetGateways": { - "input": { - "type": "structure", - "members": { - "Filters": { - "shape": "S9m", - "locationName": "Filter" - }, - "DryRun": { - "locationName": "dryRun", - "type": "boolean" - }, - "InternetGatewayIds": { - "shape": "S32", - "locationName": "internetGatewayId" - } - } - }, - "output": { - "type": "structure", - "members": { - "InternetGateways": { - "locationName": "internetGatewaySet", - "type": "list", - "member": { - "shape": "S57", - "locationName": "item" - } - } - } - } - }, - "DescribeKeyPairs": { - "input": { - "type": "structure", - "members": { - "Filters": { - "shape": "S9m", - "locationName": "Filter" - }, - "KeyNames": { - "locationName": "KeyName", - "type": "list", - "member": { - "locationName": "KeyName" - } - }, - "DryRun": { - "locationName": "dryRun", - "type": "boolean" - } - } - }, - "output": { - "type": "structure", - "members": { - "KeyPairs": { - "locationName": "keySet", - "type": "list", - "member": { - "locationName": "item", - "type": "structure", - "members": { - "KeyFingerprint": { - "locationName": "keyFingerprint" - }, - "KeyName": { - "locationName": "keyName" - } - } - } - } - } - } - }, - "DescribeMovingAddresses": { - "input": { - "type": "structure", - "members": { - "Filters": { - "shape": "S9m", - "locationName": "filter" - }, - "DryRun": { - "locationName": "dryRun", - "type": "boolean" - }, - "MaxResults": { - "locationName": "maxResults", - "type": "integer" - }, - "NextToken": { - "locationName": "nextToken" - }, - "PublicIps": { - "shape": "S32", - "locationName": "publicIp" - } - } - }, - "output": { - "type": "structure", - "members": { - "MovingAddressStatuses": { - "locationName": "movingAddressStatusSet", - "type": "list", - "member": { - "locationName": "item", - "type": "structure", - "members": { - "MoveStatus": { - "locationName": "moveStatus" - }, - "PublicIp": { - "locationName": "publicIp" - } - } - } - }, - "NextToken": { - "locationName": "nextToken" - } - } - } - }, - "DescribeNatGateways": { - "input": { - "type": "structure", - "members": { - "Filter": { - "shape": "S9m" - }, - "MaxResults": { - "type": "integer" - }, - "NatGatewayIds": { - "shape": "S32", - "locationName": "NatGatewayId" - }, - "NextToken": {} - } - }, - "output": { - "type": "structure", - "members": { - "NatGateways": { - "locationName": "natGatewaySet", - "type": "list", - "member": { - "shape": "S5c", - "locationName": "item" - } - }, - "NextToken": { - "locationName": "nextToken" - } - } - } - }, - "DescribeNetworkAcls": { - "input": { - "type": "structure", - "members": { - "Filters": { - "shape": "S9m", - "locationName": "Filter" - }, - "DryRun": { - "locationName": "dryRun", - "type": "boolean" - }, - "NetworkAclIds": { - "shape": "S32", - "locationName": "NetworkAclId" - } - } - }, - "output": { - "type": "structure", - "members": { - "NetworkAcls": { - "locationName": "networkAclSet", - "type": "list", - "member": { - "shape": "S5j", - "locationName": "item" - } - } - } - } - }, - "DescribeNetworkInterfaceAttribute": { - "input": { - "type": "structure", - "required": [ - "NetworkInterfaceId" - ], - "members": { - "Attribute": { - "locationName": "attribute" - }, - "DryRun": { - "locationName": "dryRun", - "type": "boolean" - }, - "NetworkInterfaceId": { - "locationName": "networkInterfaceId" - } - } - }, - "output": { - "type": "structure", - "members": { - "Attachment": { - "shape": "S61", - "locationName": "attachment" - }, - "Description": { - "shape": "S48", - "locationName": "description" - }, - "Groups": { - "shape": "S62", - "locationName": "groupSet" - }, - "NetworkInterfaceId": { - "locationName": "networkInterfaceId" - }, - "SourceDestCheck": { - "shape": "Se0", - "locationName": "sourceDestCheck" - } - } - } - }, - "DescribeNetworkInterfacePermissions": { - "input": { - "type": "structure", - "members": { - "NetworkInterfacePermissionIds": { - "locationName": "NetworkInterfacePermissionId", - "type": "list", - "member": {} - }, - "Filters": { - "shape": "S9m", - "locationName": "Filter" - }, - "NextToken": {}, - "MaxResults": { - "type": "integer" - } - } - }, - "output": { - "type": "structure", - "members": { - "NetworkInterfacePermissions": { - "locationName": "networkInterfacePermissions", - "type": "list", - "member": { - "shape": "S6d", - "locationName": "item" - } - }, - "NextToken": { - "locationName": "nextToken" - } - } - } - }, - "DescribeNetworkInterfaces": { - "input": { - "type": "structure", - "members": { - "Filters": { - "shape": "S9m", - "locationName": "filter" - }, - "DryRun": { - "locationName": "dryRun", - "type": "boolean" - }, - "NetworkInterfaceIds": { - "locationName": "NetworkInterfaceId", - "type": "list", - "member": { - "locationName": "item" - } - } - } - }, - "output": { - "type": "structure", - "members": { - "NetworkInterfaces": { - "locationName": "networkInterfaceSet", - "type": "list", - "member": { - "shape": "S5z", - "locationName": "item" - } - } - } - } - }, - "DescribePlacementGroups": { - "input": { - "type": "structure", - "members": { - "Filters": { - "shape": "S9m", - "locationName": "Filter" - }, - "DryRun": { - "locationName": "dryRun", - "type": "boolean" - }, - "GroupNames": { - "locationName": "groupName", - "type": "list", - "member": {} - } - } - }, - "output": { - "type": "structure", - "members": { - "PlacementGroups": { - "locationName": "placementGroupSet", - "type": "list", - "member": { - "locationName": "item", - "type": "structure", - "members": { - "GroupName": { - "locationName": "groupName" - }, - "State": { - "locationName": "state" - }, - "Strategy": { - "locationName": "strategy" - } - } - } - } - } - } - }, - "DescribePrefixLists": { - "input": { - "type": "structure", - "members": { - "DryRun": { - "type": "boolean" - }, - "Filters": { - "shape": "S9m", - "locationName": "Filter" - }, - "MaxResults": { - "type": "integer" - }, - "NextToken": {}, - "PrefixListIds": { - "shape": "S32", - "locationName": "PrefixListId" - } - } - }, - "output": { - "type": "structure", - "members": { - "NextToken": { - "locationName": "nextToken" - }, - "PrefixLists": { - "locationName": "prefixListSet", - "type": "list", - "member": { - "locationName": "item", - "type": "structure", - "members": { - "Cidrs": { - "shape": "S32", - "locationName": "cidrSet" - }, - "PrefixListId": { - "locationName": "prefixListId" - }, - "PrefixListName": { - "locationName": "prefixListName" - } - } - } - } - } - } - }, - "DescribeRegions": { - "input": { - "type": "structure", - "members": { - "Filters": { - "shape": "S9m", - "locationName": "Filter" - }, - "RegionNames": { - "locationName": "RegionName", - "type": "list", - "member": { - "locationName": "RegionName" - } - }, - "DryRun": { - "locationName": "dryRun", - "type": "boolean" - } - } - }, - "output": { - "type": "structure", - "members": { - "Regions": { - "locationName": "regionInfo", - "type": "list", - "member": { - "locationName": "item", - "type": "structure", - "members": { - "Endpoint": { - "locationName": "regionEndpoint" - }, - "RegionName": { - "locationName": "regionName" - } - } - } - } - } - } - }, - "DescribeReservedInstances": { - "input": { - "type": "structure", - "members": { - "Filters": { - "shape": "S9m", - "locationName": "Filter" - }, - "OfferingClass": {}, - "ReservedInstancesIds": { - "shape": "Sga", - "locationName": "ReservedInstancesId" - }, - "DryRun": { - "locationName": "dryRun", - "type": "boolean" - }, - "OfferingType": { - "locationName": "offeringType" - } - } - }, - "output": { - "type": "structure", - "members": { - "ReservedInstances": { - "locationName": "reservedInstancesSet", - "type": "list", - "member": { - "locationName": "item", - "type": "structure", - "members": { - "AvailabilityZone": { - "locationName": "availabilityZone" - }, - "Duration": { - "locationName": "duration", - "type": "long" - }, - "End": { - "locationName": "end", - "type": "timestamp" - }, - "FixedPrice": { - "locationName": "fixedPrice", - "type": "float" - }, - "InstanceCount": { - "locationName": "instanceCount", - "type": "integer" - }, - "InstanceType": { - "locationName": "instanceType" - }, - "ProductDescription": { - "locationName": "productDescription" - }, - "ReservedInstancesId": { - "locationName": "reservedInstancesId" - }, - "Start": { - "locationName": "start", - "type": "timestamp" - }, - "State": { - "locationName": "state" - }, - "UsagePrice": { - "locationName": "usagePrice", - "type": "float" - }, - "CurrencyCode": { - "locationName": "currencyCode" - }, - "InstanceTenancy": { - "locationName": "instanceTenancy" - }, - "OfferingClass": { - "locationName": "offeringClass" - }, - "OfferingType": { - "locationName": "offeringType" - }, - "RecurringCharges": { - "shape": "Sgi", - "locationName": "recurringCharges" - }, - "Scope": { - "locationName": "scope" - }, - "Tags": { - "shape": "Sl", - "locationName": "tagSet" - } - } - } - } - } - } - }, - "DescribeReservedInstancesListings": { - "input": { - "type": "structure", - "members": { - "Filters": { - "shape": "S9m", - "locationName": "Filter" - }, - "ReservedInstancesId": { - "locationName": "reservedInstancesId" - }, - "ReservedInstancesListingId": { - "locationName": "reservedInstancesListingId" - } - } - }, - "output": { - "type": "structure", - "members": { - "ReservedInstancesListings": { - "shape": "S2q", - "locationName": "reservedInstancesListingsSet" - } - } - } - }, - "DescribeReservedInstancesModifications": { - "input": { - "type": "structure", - "members": { - "Filters": { - "shape": "S9m", - "locationName": "Filter" - }, - "ReservedInstancesModificationIds": { - "locationName": "ReservedInstancesModificationId", - "type": "list", - "member": { - "locationName": "ReservedInstancesModificationId" - } - }, - "NextToken": { - "locationName": "nextToken" - } - } - }, - "output": { - "type": "structure", - "members": { - "NextToken": { - "locationName": "nextToken" - }, - "ReservedInstancesModifications": { - "locationName": "reservedInstancesModificationsSet", - "type": "list", - "member": { - "locationName": "item", - "type": "structure", - "members": { - "ClientToken": { - "locationName": "clientToken" - }, - "CreateDate": { - "locationName": "createDate", - "type": "timestamp" - }, - "EffectiveDate": { - "locationName": "effectiveDate", - "type": "timestamp" - }, - "ModificationResults": { - "locationName": "modificationResultSet", - "type": "list", - "member": { - "locationName": "item", - "type": "structure", - "members": { - "ReservedInstancesId": { - "locationName": "reservedInstancesId" - }, - "TargetConfiguration": { - "shape": "Sgv", - "locationName": "targetConfiguration" - } - } - } - }, - "ReservedInstancesIds": { - "locationName": "reservedInstancesSet", - "type": "list", - "member": { - "locationName": "item", - "type": "structure", - "members": { - "ReservedInstancesId": { - "locationName": "reservedInstancesId" - } - } - } - }, - "ReservedInstancesModificationId": { - "locationName": "reservedInstancesModificationId" - }, - "Status": { - "locationName": "status" - }, - "StatusMessage": { - "locationName": "statusMessage" - }, - "UpdateDate": { - "locationName": "updateDate", - "type": "timestamp" - } - } - } - } - } - } - }, - "DescribeReservedInstancesOfferings": { - "input": { - "type": "structure", - "members": { - "AvailabilityZone": {}, - "Filters": { - "shape": "S9m", - "locationName": "Filter" - }, - "IncludeMarketplace": { - "type": "boolean" - }, - "InstanceType": {}, - "MaxDuration": { - "type": "long" - }, - "MaxInstanceCount": { - "type": "integer" - }, - "MinDuration": { - "type": "long" - }, - "OfferingClass": {}, - "ProductDescription": {}, - "ReservedInstancesOfferingIds": { - "locationName": "ReservedInstancesOfferingId", - "type": "list", - "member": {} - }, - "DryRun": { - "locationName": "dryRun", - "type": "boolean" - }, - "InstanceTenancy": { - "locationName": "instanceTenancy" - }, - "MaxResults": { - "locationName": "maxResults", - "type": "integer" - }, - "NextToken": { - "locationName": "nextToken" - }, - "OfferingType": { - "locationName": "offeringType" - } - } - }, - "output": { - "type": "structure", - "members": { - "ReservedInstancesOfferings": { - "locationName": "reservedInstancesOfferingsSet", - "type": "list", - "member": { - "locationName": "item", - "type": "structure", - "members": { - "AvailabilityZone": { - "locationName": "availabilityZone" - }, - "Duration": { - "locationName": "duration", - "type": "long" - }, - "FixedPrice": { - "locationName": "fixedPrice", - "type": "float" - }, - "InstanceType": { - "locationName": "instanceType" - }, - "ProductDescription": { - "locationName": "productDescription" - }, - "ReservedInstancesOfferingId": { - "locationName": "reservedInstancesOfferingId" - }, - "UsagePrice": { - "locationName": "usagePrice", - "type": "float" - }, - "CurrencyCode": { - "locationName": "currencyCode" - }, - "InstanceTenancy": { - "locationName": "instanceTenancy" - }, - "Marketplace": { - "locationName": "marketplace", - "type": "boolean" - }, - "OfferingClass": { - "locationName": "offeringClass" - }, - "OfferingType": { - "locationName": "offeringType" - }, - "PricingDetails": { - "locationName": "pricingDetailsSet", - "type": "list", - "member": { - "locationName": "item", - "type": "structure", - "members": { - "Count": { - "locationName": "count", - "type": "integer" - }, - "Price": { - "locationName": "price", - "type": "double" - } - } - } - }, - "RecurringCharges": { - "shape": "Sgi", - "locationName": "recurringCharges" - }, - "Scope": { - "locationName": "scope" - } - } - } - }, - "NextToken": { - "locationName": "nextToken" - } - } - } - }, - "DescribeRouteTables": { - "input": { - "type": "structure", - "members": { - "Filters": { - "shape": "S9m", - "locationName": "Filter" - }, - "DryRun": { - "locationName": "dryRun", - "type": "boolean" - }, - "RouteTableIds": { - "shape": "S32", - "locationName": "RouteTableId" - } - } - }, - "output": { - "type": "structure", - "members": { - "RouteTables": { - "locationName": "routeTableSet", - "type": "list", - "member": { - "shape": "S6q", - "locationName": "item" - } - } - } - } - }, - "DescribeScheduledInstanceAvailability": { - "input": { - "type": "structure", - "required": [ - "FirstSlotStartTimeRange", - "Recurrence" - ], - "members": { - "DryRun": { - "type": "boolean" - }, - "Filters": { - "shape": "S9m", - "locationName": "Filter" - }, - "FirstSlotStartTimeRange": { - "type": "structure", - "required": [ - "EarliestTime", - "LatestTime" - ], - "members": { - "EarliestTime": { - "type": "timestamp" - }, - "LatestTime": { - "type": "timestamp" - } - } - }, - "MaxResults": { - "type": "integer" - }, - "MaxSlotDurationInHours": { - "type": "integer" - }, - "MinSlotDurationInHours": { - "type": "integer" - }, - "NextToken": {}, - "Recurrence": { - "type": "structure", - "members": { - "Frequency": {}, - "Interval": { - "type": "integer" - }, - "OccurrenceDays": { - "locationName": "OccurrenceDay", - "type": "list", - "member": { - "locationName": "OccurenceDay", - "type": "integer" - } - }, - "OccurrenceRelativeToEnd": { - "type": "boolean" - }, - "OccurrenceUnit": {} - } - } - } - }, - "output": { - "type": "structure", - "members": { - "NextToken": { - "locationName": "nextToken" - }, - "ScheduledInstanceAvailabilitySet": { - "locationName": "scheduledInstanceAvailabilitySet", - "type": "list", - "member": { - "locationName": "item", - "type": "structure", - "members": { - "AvailabilityZone": { - "locationName": "availabilityZone" - }, - "AvailableInstanceCount": { - "locationName": "availableInstanceCount", - "type": "integer" - }, - "FirstSlotStartTime": { - "locationName": "firstSlotStartTime", - "type": "timestamp" - }, - "HourlyPrice": { - "locationName": "hourlyPrice" - }, - "InstanceType": { - "locationName": "instanceType" - }, - "MaxTermDurationInDays": { - "locationName": "maxTermDurationInDays", - "type": "integer" - }, - "MinTermDurationInDays": { - "locationName": "minTermDurationInDays", - "type": "integer" - }, - "NetworkPlatform": { - "locationName": "networkPlatform" - }, - "Platform": { - "locationName": "platform" - }, - "PurchaseToken": { - "locationName": "purchaseToken" - }, - "Recurrence": { - "shape": "Shf", - "locationName": "recurrence" - }, - "SlotDurationInHours": { - "locationName": "slotDurationInHours", - "type": "integer" - }, - "TotalScheduledInstanceHours": { - "locationName": "totalScheduledInstanceHours", - "type": "integer" - } - } - } - } - } - } - }, - "DescribeScheduledInstances": { - "input": { - "type": "structure", - "members": { - "DryRun": { - "type": "boolean" - }, - "Filters": { - "shape": "S9m", - "locationName": "Filter" - }, - "MaxResults": { - "type": "integer" - }, - "NextToken": {}, - "ScheduledInstanceIds": { - "locationName": "ScheduledInstanceId", - "type": "list", - "member": { - "locationName": "ScheduledInstanceId" - } - }, - "SlotStartTimeRange": { - "type": "structure", - "members": { - "EarliestTime": { - "type": "timestamp" - }, - "LatestTime": { - "type": "timestamp" - } - } - } - } - }, - "output": { - "type": "structure", - "members": { - "NextToken": { - "locationName": "nextToken" - }, - "ScheduledInstanceSet": { - "locationName": "scheduledInstanceSet", - "type": "list", - "member": { - "shape": "Shm", - "locationName": "item" - } - } - } - } - }, - "DescribeSecurityGroupReferences": { - "input": { - "type": "structure", - "required": [ - "GroupId" - ], - "members": { - "DryRun": { - "type": "boolean" - }, - "GroupId": { - "type": "list", - "member": { - "locationName": "item" - } - } - } - }, - "output": { - "type": "structure", - "members": { - "SecurityGroupReferenceSet": { - "locationName": "securityGroupReferenceSet", - "type": "list", - "member": { - "locationName": "item", - "type": "structure", - "required": [ - "GroupId", - "ReferencingVpcId" - ], - "members": { - "GroupId": { - "locationName": "groupId" - }, - "ReferencingVpcId": { - "locationName": "referencingVpcId" - }, - "VpcPeeringConnectionId": { - "locationName": "vpcPeeringConnectionId" - } - } - } - } - } - } - }, - "DescribeSecurityGroups": { - "input": { - "type": "structure", - "members": { - "Filters": { - "shape": "S9m", - "locationName": "Filter" - }, - "GroupIds": { - "shape": "S1m", - "locationName": "GroupId" - }, - "GroupNames": { - "shape": "Sht", - "locationName": "GroupName" - }, - "DryRun": { - "locationName": "dryRun", - "type": "boolean" - } - } - }, - "output": { - "type": "structure", - "members": { - "SecurityGroups": { - "locationName": "securityGroupInfo", - "type": "list", - "member": { - "locationName": "item", - "type": "structure", - "members": { - "Description": { - "locationName": "groupDescription" - }, - "GroupName": { - "locationName": "groupName" - }, - "IpPermissions": { - "shape": "S1z", - "locationName": "ipPermissions" - }, - "OwnerId": { - "locationName": "ownerId" - }, - "GroupId": { - "locationName": "groupId" - }, - "IpPermissionsEgress": { - "shape": "S1z", - "locationName": "ipPermissionsEgress" - }, - "Tags": { - "shape": "Sl", - "locationName": "tagSet" - }, - "VpcId": { - "locationName": "vpcId" - } - } - } - } - } - } - }, - "DescribeSnapshotAttribute": { - "input": { - "type": "structure", - "required": [ - "Attribute", - "SnapshotId" - ], - "members": { - "Attribute": {}, - "SnapshotId": {}, - "DryRun": { - "locationName": "dryRun", - "type": "boolean" - } - } - }, - "output": { - "type": "structure", - "members": { - "CreateVolumePermissions": { - "shape": "Si0", - "locationName": "createVolumePermission" - }, - "ProductCodes": { - "shape": "Sbm", - "locationName": "productCodes" - }, - "SnapshotId": { - "locationName": "snapshotId" - } - } - } - }, - "DescribeSnapshots": { - "input": { - "type": "structure", - "members": { - "Filters": { - "shape": "S9m", - "locationName": "Filter" - }, - "MaxResults": { - "type": "integer" - }, - "NextToken": {}, - "OwnerIds": { - "shape": "Sbr", - "locationName": "Owner" - }, - "RestorableByUserIds": { - "locationName": "RestorableBy", - "type": "list", - "member": {} - }, - "SnapshotIds": { - "locationName": "SnapshotId", - "type": "list", - "member": { - "locationName": "SnapshotId" - } - }, - "DryRun": { - "locationName": "dryRun", - "type": "boolean" - } - } - }, - "output": { - "type": "structure", - "members": { - "Snapshots": { - "locationName": "snapshotSet", - "type": "list", - "member": { - "shape": "S72", - "locationName": "item" - } - }, - "NextToken": { - "locationName": "nextToken" - } - } - } - }, - "DescribeSpotDatafeedSubscription": { - "input": { - "type": "structure", - "members": { - "DryRun": { - "locationName": "dryRun", - "type": "boolean" - } - } - }, - "output": { - "type": "structure", - "members": { - "SpotDatafeedSubscription": { - "shape": "S76", - "locationName": "spotDatafeedSubscription" - } - } - } - }, - "DescribeSpotFleetInstances": { - "input": { - "type": "structure", - "required": [ - "SpotFleetRequestId" - ], - "members": { - "DryRun": { - "locationName": "dryRun", - "type": "boolean" - }, - "MaxResults": { - "locationName": "maxResults", - "type": "integer" - }, - "NextToken": { - "locationName": "nextToken" - }, - "SpotFleetRequestId": { - "locationName": "spotFleetRequestId" - } - } - }, - "output": { - "type": "structure", - "required": [ - "ActiveInstances", - "SpotFleetRequestId" - ], - "members": { - "ActiveInstances": { - "locationName": "activeInstanceSet", - "type": "list", - "member": { - "locationName": "item", - "type": "structure", - "members": { - "InstanceId": { - "locationName": "instanceId" - }, - "InstanceType": { - "locationName": "instanceType" - }, - "SpotInstanceRequestId": { - "locationName": "spotInstanceRequestId" - }, - "InstanceHealth": { - "locationName": "instanceHealth" - } - } - } - }, - "NextToken": { - "locationName": "nextToken" - }, - "SpotFleetRequestId": { - "locationName": "spotFleetRequestId" - } - } - } - }, - "DescribeSpotFleetRequestHistory": { - "input": { - "type": "structure", - "required": [ - "SpotFleetRequestId", - "StartTime" - ], - "members": { - "DryRun": { - "locationName": "dryRun", - "type": "boolean" - }, - "EventType": { - "locationName": "eventType" - }, - "MaxResults": { - "locationName": "maxResults", - "type": "integer" - }, - "NextToken": { - "locationName": "nextToken" - }, - "SpotFleetRequestId": { - "locationName": "spotFleetRequestId" - }, - "StartTime": { - "locationName": "startTime", - "type": "timestamp" - } - } - }, - "output": { - "type": "structure", - "required": [ - "HistoryRecords", - "LastEvaluatedTime", - "SpotFleetRequestId", - "StartTime" - ], - "members": { - "HistoryRecords": { - "locationName": "historyRecordSet", - "type": "list", - "member": { - "locationName": "item", - "type": "structure", - "required": [ - "EventInformation", - "EventType", - "Timestamp" - ], - "members": { - "EventInformation": { - "locationName": "eventInformation", - "type": "structure", - "members": { - "EventDescription": { - "locationName": "eventDescription" - }, - "EventSubType": { - "locationName": "eventSubType" - }, - "InstanceId": { - "locationName": "instanceId" - } - } - }, - "EventType": { - "locationName": "eventType" - }, - "Timestamp": { - "locationName": "timestamp", - "type": "timestamp" - } - } - } - }, - "LastEvaluatedTime": { - "locationName": "lastEvaluatedTime", - "type": "timestamp" - }, - "NextToken": { - "locationName": "nextToken" - }, - "SpotFleetRequestId": { - "locationName": "spotFleetRequestId" - }, - "StartTime": { - "locationName": "startTime", - "type": "timestamp" - } - } - } - }, - "DescribeSpotFleetRequests": { - "input": { - "type": "structure", - "members": { - "DryRun": { - "locationName": "dryRun", - "type": "boolean" - }, - "MaxResults": { - "locationName": "maxResults", - "type": "integer" - }, - "NextToken": { - "locationName": "nextToken" - }, - "SpotFleetRequestIds": { - "shape": "S32", - "locationName": "spotFleetRequestId" - } - } - }, - "output": { - "type": "structure", - "required": [ - "SpotFleetRequestConfigs" - ], - "members": { - "NextToken": { - "locationName": "nextToken" - }, - "SpotFleetRequestConfigs": { - "locationName": "spotFleetRequestConfigSet", - "type": "list", - "member": { - "locationName": "item", - "type": "structure", - "required": [ - "CreateTime", - "SpotFleetRequestConfig", - "SpotFleetRequestId", - "SpotFleetRequestState" - ], - "members": { - "ActivityStatus": { - "locationName": "activityStatus" - }, - "CreateTime": { - "locationName": "createTime", - "type": "timestamp" - }, - "SpotFleetRequestConfig": { - "shape": "Sip", - "locationName": "spotFleetRequestConfig" - }, - "SpotFleetRequestId": { - "locationName": "spotFleetRequestId" - }, - "SpotFleetRequestState": { - "locationName": "spotFleetRequestState" - } - } - } - } - } - } - }, - "DescribeSpotInstanceRequests": { - "input": { - "type": "structure", - "members": { - "Filters": { - "shape": "S9m", - "locationName": "Filter" - }, - "DryRun": { - "locationName": "dryRun", - "type": "boolean" - }, - "SpotInstanceRequestIds": { - "shape": "S3c", - "locationName": "SpotInstanceRequestId" - } - } - }, - "output": { - "type": "structure", - "members": { - "SpotInstanceRequests": { - "shape": "Sj4", - "locationName": "spotInstanceRequestSet" - } - } - } - }, - "DescribeSpotPriceHistory": { - "input": { - "type": "structure", - "members": { - "Filters": { - "shape": "S9m", - "locationName": "Filter" - }, - "AvailabilityZone": { - "locationName": "availabilityZone" - }, - "DryRun": { - "locationName": "dryRun", - "type": "boolean" - }, - "EndTime": { - "locationName": "endTime", - "type": "timestamp" - }, - "InstanceTypes": { - "locationName": "InstanceType", - "type": "list", - "member": {} - }, - "MaxResults": { - "locationName": "maxResults", - "type": "integer" - }, - "NextToken": { - "locationName": "nextToken" - }, - "ProductDescriptions": { - "locationName": "ProductDescription", - "type": "list", - "member": {} - }, - "StartTime": { - "locationName": "startTime", - "type": "timestamp" - } - } - }, - "output": { - "type": "structure", - "members": { - "NextToken": { - "locationName": "nextToken" - }, - "SpotPriceHistory": { - "locationName": "spotPriceHistorySet", - "type": "list", - "member": { - "locationName": "item", - "type": "structure", - "members": { - "AvailabilityZone": { - "locationName": "availabilityZone" - }, - "InstanceType": { - "locationName": "instanceType" - }, - "ProductDescription": { - "locationName": "productDescription" - }, - "SpotPrice": { - "locationName": "spotPrice" - }, - "Timestamp": { - "locationName": "timestamp", - "type": "timestamp" - } - } - } - } - } - } - }, - "DescribeStaleSecurityGroups": { - "input": { - "type": "structure", - "required": [ - "VpcId" - ], - "members": { - "DryRun": { - "type": "boolean" - }, - "MaxResults": { - "type": "integer" - }, - "NextToken": {}, - "VpcId": {} - } - }, - "output": { - "type": "structure", - "members": { - "NextToken": { - "locationName": "nextToken" - }, - "StaleSecurityGroupSet": { - "locationName": "staleSecurityGroupSet", - "type": "list", - "member": { - "locationName": "item", - "type": "structure", - "required": [ - "GroupId" - ], - "members": { - "Description": { - "locationName": "description" - }, - "GroupId": { - "locationName": "groupId" - }, - "GroupName": { - "locationName": "groupName" - }, - "StaleIpPermissions": { - "shape": "Sjl", - "locationName": "staleIpPermissions" - }, - "StaleIpPermissionsEgress": { - "shape": "Sjl", - "locationName": "staleIpPermissionsEgress" - }, - "VpcId": { - "locationName": "vpcId" - } - } - } - } - } - } - }, - "DescribeSubnets": { - "input": { - "type": "structure", - "members": { - "Filters": { - "shape": "S9m", - "locationName": "Filter" - }, - "SubnetIds": { - "locationName": "SubnetId", - "type": "list", - "member": { - "locationName": "SubnetId" - } - }, - "DryRun": { - "locationName": "dryRun", - "type": "boolean" - } - } - }, - "output": { - "type": "structure", - "members": { - "Subnets": { - "locationName": "subnetSet", - "type": "list", - "member": { - "shape": "S7b", - "locationName": "item" - } - } - } - } - }, - "DescribeTags": { - "input": { - "type": "structure", - "members": { - "DryRun": { - "locationName": "dryRun", - "type": "boolean" - }, - "Filters": { - "shape": "S9m", - "locationName": "Filter" - }, - "MaxResults": { - "locationName": "maxResults", - "type": "integer" - }, - "NextToken": { - "locationName": "nextToken" - } - } - }, - "output": { - "type": "structure", - "members": { - "NextToken": { - "locationName": "nextToken" - }, - "Tags": { - "locationName": "tagSet", - "type": "list", - "member": { - "locationName": "item", - "type": "structure", - "members": { - "Key": { - "locationName": "key" - }, - "ResourceId": { - "locationName": "resourceId" - }, - "ResourceType": { - "locationName": "resourceType" - }, - "Value": { - "locationName": "value" - } - } - } - } - } - } - }, - "DescribeVolumeAttribute": { - "input": { - "type": "structure", - "required": [ - "VolumeId" - ], - "members": { - "Attribute": {}, - "VolumeId": {}, - "DryRun": { - "locationName": "dryRun", - "type": "boolean" - } - } - }, - "output": { - "type": "structure", - "members": { - "AutoEnableIO": { - "shape": "Se0", - "locationName": "autoEnableIO" - }, - "ProductCodes": { - "shape": "Sbm", - "locationName": "productCodes" - }, - "VolumeId": { - "locationName": "volumeId" - } - } - } - }, - "DescribeVolumeStatus": { - "input": { - "type": "structure", - "members": { - "Filters": { - "shape": "S9m", - "locationName": "Filter" - }, - "MaxResults": { - "type": "integer" - }, - "NextToken": {}, - "VolumeIds": { - "shape": "Sk2", - "locationName": "VolumeId" - }, - "DryRun": { - "locationName": "dryRun", - "type": "boolean" - } - } - }, - "output": { - "type": "structure", - "members": { - "NextToken": { - "locationName": "nextToken" - }, - "VolumeStatuses": { - "locationName": "volumeStatusSet", - "type": "list", - "member": { - "locationName": "item", - "type": "structure", - "members": { - "Actions": { - "locationName": "actionsSet", - "type": "list", - "member": { - "locationName": "item", - "type": "structure", - "members": { - "Code": { - "locationName": "code" - }, - "Description": { - "locationName": "description" - }, - "EventId": { - "locationName": "eventId" - }, - "EventType": { - "locationName": "eventType" - } - } - } - }, - "AvailabilityZone": { - "locationName": "availabilityZone" - }, - "Events": { - "locationName": "eventsSet", - "type": "list", - "member": { - "locationName": "item", - "type": "structure", - "members": { - "Description": { - "locationName": "description" - }, - "EventId": { - "locationName": "eventId" - }, - "EventType": { - "locationName": "eventType" - }, - "NotAfter": { - "locationName": "notAfter", - "type": "timestamp" - }, - "NotBefore": { - "locationName": "notBefore", - "type": "timestamp" - } - } - } - }, - "VolumeId": { - "locationName": "volumeId" - }, - "VolumeStatus": { - "locationName": "volumeStatus", - "type": "structure", - "members": { - "Details": { - "locationName": "details", - "type": "list", - "member": { - "locationName": "item", - "type": "structure", - "members": { - "Name": { - "locationName": "name" - }, - "Status": { - "locationName": "status" - } - } - } - }, - "Status": { - "locationName": "status" - } - } - } - } - } - } - } - } - }, - "DescribeVolumes": { - "input": { - "type": "structure", - "members": { - "Filters": { - "shape": "S9m", - "locationName": "Filter" - }, - "VolumeIds": { - "shape": "Sk2", - "locationName": "VolumeId" - }, - "DryRun": { - "locationName": "dryRun", - "type": "boolean" - }, - "MaxResults": { - "locationName": "maxResults", - "type": "integer" - }, - "NextToken": { - "locationName": "nextToken" - } - } - }, - "output": { - "type": "structure", - "members": { - "Volumes": { - "locationName": "volumeSet", - "type": "list", - "member": { - "shape": "S7k", - "locationName": "item" - } - }, - "NextToken": { - "locationName": "nextToken" - } - } - } - }, - "DescribeVolumesModifications": { - "input": { - "type": "structure", - "members": { - "DryRun": { - "type": "boolean" - }, - "VolumeIds": { - "shape": "Sk2", - "locationName": "VolumeId" - }, - "Filters": { - "shape": "S9m", - "locationName": "Filter" - }, - "NextToken": {}, - "MaxResults": { - "type": "integer" - } - } - }, - "output": { - "type": "structure", - "members": { - "VolumesModifications": { - "locationName": "volumeModificationSet", - "type": "list", - "member": { - "shape": "Skl", - "locationName": "item" - } - }, - "NextToken": { - "locationName": "nextToken" - } - } - } - }, - "DescribeVpcAttribute": { - "input": { - "type": "structure", - "required": [ - "Attribute", - "VpcId" - ], - "members": { - "Attribute": {}, - "VpcId": {}, - "DryRun": { - "locationName": "dryRun", - "type": "boolean" - } - } - }, - "output": { - "type": "structure", - "members": { - "VpcId": { - "locationName": "vpcId" - }, - "EnableDnsHostnames": { - "shape": "Se0", - "locationName": "enableDnsHostnames" - }, - "EnableDnsSupport": { - "shape": "Se0", - "locationName": "enableDnsSupport" - } - } - } - }, - "DescribeVpcClassicLink": { - "input": { - "type": "structure", - "members": { - "Filters": { - "shape": "S9m", - "locationName": "Filter" - }, - "DryRun": { - "locationName": "dryRun", - "type": "boolean" - }, - "VpcIds": { - "shape": "Skr", - "locationName": "VpcId" - } - } - }, - "output": { - "type": "structure", - "members": { - "Vpcs": { - "locationName": "vpcSet", - "type": "list", - "member": { - "locationName": "item", - "type": "structure", - "members": { - "ClassicLinkEnabled": { - "locationName": "classicLinkEnabled", - "type": "boolean" - }, - "Tags": { - "shape": "Sl", - "locationName": "tagSet" - }, - "VpcId": { - "locationName": "vpcId" - } - } - } - } - } - } - }, - "DescribeVpcClassicLinkDnsSupport": { - "input": { - "type": "structure", - "members": { - "MaxResults": { - "locationName": "maxResults", - "type": "integer" - }, - "NextToken": { - "locationName": "nextToken" - }, - "VpcIds": { - "shape": "Skr" - } - } - }, - "output": { - "type": "structure", - "members": { - "NextToken": { - "locationName": "nextToken" - }, - "Vpcs": { - "locationName": "vpcs", - "type": "list", - "member": { - "locationName": "item", - "type": "structure", - "members": { - "ClassicLinkDnsSupported": { - "locationName": "classicLinkDnsSupported", - "type": "boolean" - }, - "VpcId": { - "locationName": "vpcId" - } - } - } - } - } - } - }, - "DescribeVpcEndpointServices": { - "input": { - "type": "structure", - "members": { - "DryRun": { - "type": "boolean" - }, - "MaxResults": { - "type": "integer" - }, - "NextToken": {} - } - }, - "output": { - "type": "structure", - "members": { - "NextToken": { - "locationName": "nextToken" - }, - "ServiceNames": { - "shape": "S32", - "locationName": "serviceNameSet" - } - } - } - }, - "DescribeVpcEndpoints": { - "input": { - "type": "structure", - "members": { - "DryRun": { - "type": "boolean" - }, - "Filters": { - "shape": "S9m", - "locationName": "Filter" - }, - "MaxResults": { - "type": "integer" - }, - "NextToken": {}, - "VpcEndpointIds": { - "shape": "S32", - "locationName": "VpcEndpointId" - } - } - }, - "output": { - "type": "structure", - "members": { - "NextToken": { - "locationName": "nextToken" - }, - "VpcEndpoints": { - "locationName": "vpcEndpointSet", - "type": "list", - "member": { - "shape": "S7r", - "locationName": "item" - } - } - } - } - }, - "DescribeVpcPeeringConnections": { - "input": { - "type": "structure", - "members": { - "Filters": { - "shape": "S9m", - "locationName": "Filter" - }, - "DryRun": { - "locationName": "dryRun", - "type": "boolean" - }, - "VpcPeeringConnectionIds": { - "shape": "S32", - "locationName": "VpcPeeringConnectionId" - } - } - }, - "output": { - "type": "structure", - "members": { - "VpcPeeringConnections": { - "locationName": "vpcPeeringConnectionSet", - "type": "list", - "member": { - "shape": "Sb", - "locationName": "item" - } - } - } - } - }, - "DescribeVpcs": { - "input": { - "type": "structure", - "members": { - "Filters": { - "shape": "S9m", - "locationName": "Filter" - }, - "VpcIds": { - "locationName": "VpcId", - "type": "list", - "member": { - "locationName": "VpcId" - } - }, - "DryRun": { - "locationName": "dryRun", - "type": "boolean" - } - } - }, - "output": { - "type": "structure", - "members": { - "Vpcs": { - "locationName": "vpcSet", - "type": "list", - "member": { - "shape": "S3v", - "locationName": "item" - } - } - } - } - }, - "DescribeVpnConnections": { - "input": { - "type": "structure", - "members": { - "Filters": { - "shape": "S9m", - "locationName": "Filter" - }, - "VpnConnectionIds": { - "locationName": "VpnConnectionId", - "type": "list", - "member": { - "locationName": "VpnConnectionId" - } - }, - "DryRun": { - "locationName": "dryRun", - "type": "boolean" - } - } - }, - "output": { - "type": "structure", - "members": { - "VpnConnections": { - "locationName": "vpnConnectionSet", - "type": "list", - "member": { - "shape": "S80", - "locationName": "item" - } - } - } - } - }, - "DescribeVpnGateways": { - "input": { - "type": "structure", - "members": { - "Filters": { - "shape": "S9m", - "locationName": "Filter" - }, - "VpnGatewayIds": { - "locationName": "VpnGatewayId", - "type": "list", - "member": { - "locationName": "VpnGatewayId" - } - }, - "DryRun": { - "locationName": "dryRun", - "type": "boolean" - } - } - }, - "output": { - "type": "structure", - "members": { - "VpnGateways": { - "locationName": "vpnGatewaySet", - "type": "list", - "member": { - "shape": "S8c", - "locationName": "item" - } - } - } - } - }, - "DetachClassicLinkVpc": { - "input": { - "type": "structure", - "required": [ - "InstanceId", - "VpcId" - ], - "members": { - "DryRun": { - "locationName": "dryRun", - "type": "boolean" - }, - "InstanceId": { - "locationName": "instanceId" - }, - "VpcId": { - "locationName": "vpcId" - } - } - }, - "output": { - "type": "structure", - "members": { - "Return": { - "locationName": "return", - "type": "boolean" - } - } - } - }, - "DetachInternetGateway": { - "input": { - "type": "structure", - "required": [ - "InternetGatewayId", - "VpcId" - ], - "members": { - "DryRun": { - "locationName": "dryRun", - "type": "boolean" - }, - "InternetGatewayId": { - "locationName": "internetGatewayId" - }, - "VpcId": { - "locationName": "vpcId" - } - } - } - }, - "DetachNetworkInterface": { - "input": { - "type": "structure", - "required": [ - "AttachmentId" - ], - "members": { - "AttachmentId": { - "locationName": "attachmentId" - }, - "DryRun": { - "locationName": "dryRun", - "type": "boolean" - }, - "Force": { - "locationName": "force", - "type": "boolean" - } - } - } - }, - "DetachVolume": { - "input": { - "type": "structure", - "required": [ - "VolumeId" - ], - "members": { - "Device": {}, - "Force": { - "type": "boolean" - }, - "InstanceId": {}, - "VolumeId": {}, - "DryRun": { - "locationName": "dryRun", - "type": "boolean" - } - } - }, - "output": { - "shape": "S1s" - } - }, - "DetachVpnGateway": { - "input": { - "type": "structure", - "required": [ - "VpcId", - "VpnGatewayId" - ], - "members": { - "VpcId": {}, - "VpnGatewayId": {}, - "DryRun": { - "locationName": "dryRun", - "type": "boolean" - } - } - } - }, - "DisableVgwRoutePropagation": { - "input": { - "type": "structure", - "required": [ - "GatewayId", - "RouteTableId" - ], - "members": { - "GatewayId": {}, - "RouteTableId": {} - } - } - }, - "DisableVpcClassicLink": { - "input": { - "type": "structure", - "required": [ - "VpcId" - ], - "members": { - "DryRun": { - "locationName": "dryRun", - "type": "boolean" - }, - "VpcId": { - "locationName": "vpcId" - } - } - }, - "output": { - "type": "structure", - "members": { - "Return": { - "locationName": "return", - "type": "boolean" - } - } - } - }, - "DisableVpcClassicLinkDnsSupport": { - "input": { - "type": "structure", - "members": { - "VpcId": {} - } - }, - "output": { - "type": "structure", - "members": { - "Return": { - "locationName": "return", - "type": "boolean" - } - } - } - }, - "DisassociateAddress": { - "input": { - "type": "structure", - "members": { - "AssociationId": {}, - "PublicIp": {}, - "DryRun": { - "locationName": "dryRun", - "type": "boolean" - } - } - } - }, - "DisassociateIamInstanceProfile": { - "input": { - "type": "structure", - "required": [ - "AssociationId" - ], - "members": { - "AssociationId": {} - } - }, - "output": { - "type": "structure", - "members": { - "IamInstanceProfileAssociation": { - "shape": "S15", - "locationName": "iamInstanceProfileAssociation" - } - } - } - }, - "DisassociateRouteTable": { - "input": { - "type": "structure", - "required": [ - "AssociationId" - ], - "members": { - "AssociationId": { - "locationName": "associationId" - }, - "DryRun": { - "locationName": "dryRun", - "type": "boolean" - } - } - } - }, - "DisassociateSubnetCidrBlock": { - "input": { - "type": "structure", - "required": [ - "AssociationId" - ], - "members": { - "AssociationId": { - "locationName": "associationId" - } - } - }, - "output": { - "type": "structure", - "members": { - "Ipv6CidrBlockAssociation": { - "shape": "S1c", - "locationName": "ipv6CidrBlockAssociation" - }, - "SubnetId": { - "locationName": "subnetId" - } - } - } - }, - "DisassociateVpcCidrBlock": { - "input": { - "type": "structure", - "required": [ - "AssociationId" - ], - "members": { - "AssociationId": { - "locationName": "associationId" - } - } - }, - "output": { - "type": "structure", - "members": { - "Ipv6CidrBlockAssociation": { - "shape": "S1h", - "locationName": "ipv6CidrBlockAssociation" - }, - "CidrBlockAssociation": { - "shape": "S1k", - "locationName": "cidrBlockAssociation" - }, - "VpcId": { - "locationName": "vpcId" - } - } - } - }, - "EnableVgwRoutePropagation": { - "input": { - "type": "structure", - "required": [ - "GatewayId", - "RouteTableId" - ], - "members": { - "GatewayId": {}, - "RouteTableId": {} - } - } - }, - "EnableVolumeIO": { - "input": { - "type": "structure", - "required": [ - "VolumeId" - ], - "members": { - "DryRun": { - "locationName": "dryRun", - "type": "boolean" - }, - "VolumeId": { - "locationName": "volumeId" - } - } - } - }, - "EnableVpcClassicLink": { - "input": { - "type": "structure", - "required": [ - "VpcId" - ], - "members": { - "DryRun": { - "locationName": "dryRun", - "type": "boolean" - }, - "VpcId": { - "locationName": "vpcId" - } - } - }, - "output": { - "type": "structure", - "members": { - "Return": { - "locationName": "return", - "type": "boolean" - } - } - } - }, - "EnableVpcClassicLinkDnsSupport": { - "input": { - "type": "structure", - "members": { - "VpcId": {} - } - }, - "output": { - "type": "structure", - "members": { - "Return": { - "locationName": "return", - "type": "boolean" - } - } - } - }, - "GetConsoleOutput": { - "input": { - "type": "structure", - "required": [ - "InstanceId" - ], - "members": { - "InstanceId": {}, - "DryRun": { - "locationName": "dryRun", - "type": "boolean" - } - } - }, - "output": { - "type": "structure", - "members": { - "InstanceId": { - "locationName": "instanceId" - }, - "Output": { - "locationName": "output" - }, - "Timestamp": { - "locationName": "timestamp", - "type": "timestamp" - } - } - } - }, - "GetConsoleScreenshot": { - "input": { - "type": "structure", - "required": [ - "InstanceId" - ], - "members": { - "DryRun": { - "type": "boolean" - }, - "InstanceId": {}, - "WakeUp": { - "type": "boolean" - } - } - }, - "output": { - "type": "structure", - "members": { - "ImageData": { - "locationName": "imageData" - }, - "InstanceId": { - "locationName": "instanceId" - } - } - } - }, - "GetHostReservationPurchasePreview": { - "input": { - "type": "structure", - "required": [ - "HostIdSet", - "OfferingId" - ], - "members": { - "HostIdSet": { - "shape": "Smd" - }, - "OfferingId": {} - } - }, - "output": { - "type": "structure", - "members": { - "CurrencyCode": { - "locationName": "currencyCode" - }, - "Purchase": { - "shape": "Smf", - "locationName": "purchase" - }, - "TotalHourlyPrice": { - "locationName": "totalHourlyPrice" - }, - "TotalUpfrontPrice": { - "locationName": "totalUpfrontPrice" - } - } - } - }, - "GetPasswordData": { - "input": { - "type": "structure", - "required": [ - "InstanceId" - ], - "members": { - "InstanceId": {}, - "DryRun": { - "locationName": "dryRun", - "type": "boolean" - } - } - }, - "output": { - "type": "structure", - "members": { - "InstanceId": { - "locationName": "instanceId" - }, - "PasswordData": { - "locationName": "passwordData" - }, - "Timestamp": { - "locationName": "timestamp", - "type": "timestamp" - } - } - } - }, - "GetReservedInstancesExchangeQuote": { - "input": { - "type": "structure", - "required": [ - "ReservedInstanceIds" - ], - "members": { - "DryRun": { - "type": "boolean" - }, - "ReservedInstanceIds": { - "shape": "S3", - "locationName": "ReservedInstanceId" - }, - "TargetConfigurations": { - "shape": "S5", - "locationName": "TargetConfiguration" - } - } - }, - "output": { - "type": "structure", - "members": { - "CurrencyCode": { - "locationName": "currencyCode" - }, - "IsValidExchange": { - "locationName": "isValidExchange", - "type": "boolean" - }, - "OutputReservedInstancesWillExpireAt": { - "locationName": "outputReservedInstancesWillExpireAt", - "type": "timestamp" - }, - "PaymentDue": { - "locationName": "paymentDue" - }, - "ReservedInstanceValueRollup": { - "shape": "Sml", - "locationName": "reservedInstanceValueRollup" - }, - "ReservedInstanceValueSet": { - "locationName": "reservedInstanceValueSet", - "type": "list", - "member": { - "locationName": "item", - "type": "structure", - "members": { - "ReservationValue": { - "shape": "Sml", - "locationName": "reservationValue" - }, - "ReservedInstanceId": { - "locationName": "reservedInstanceId" - } - } - } - }, - "TargetConfigurationValueRollup": { - "shape": "Sml", - "locationName": "targetConfigurationValueRollup" - }, - "TargetConfigurationValueSet": { - "locationName": "targetConfigurationValueSet", - "type": "list", - "member": { - "locationName": "item", - "type": "structure", - "members": { - "ReservationValue": { - "shape": "Sml", - "locationName": "reservationValue" - }, - "TargetConfiguration": { - "locationName": "targetConfiguration", - "type": "structure", - "members": { - "InstanceCount": { - "locationName": "instanceCount", - "type": "integer" - }, - "OfferingId": { - "locationName": "offeringId" - } - } - } - } - } - }, - "ValidationFailureReason": { - "locationName": "validationFailureReason" - } - } - } - }, - "ImportImage": { - "input": { - "type": "structure", - "members": { - "Architecture": {}, - "ClientData": { - "shape": "Sms" - }, - "ClientToken": {}, - "Description": {}, - "DiskContainers": { - "locationName": "DiskContainer", - "type": "list", - "member": { - "locationName": "item", - "type": "structure", - "members": { - "Description": {}, - "DeviceName": {}, - "Format": {}, - "SnapshotId": {}, - "Url": {}, - "UserBucket": { - "shape": "Smv" - } - } - } - }, - "DryRun": { - "type": "boolean" - }, - "Hypervisor": {}, - "LicenseType": {}, - "Platform": {}, - "RoleName": {} - } - }, - "output": { - "type": "structure", - "members": { - "Architecture": { - "locationName": "architecture" - }, - "Description": { - "locationName": "description" - }, - "Hypervisor": { - "locationName": "hypervisor" - }, - "ImageId": { - "locationName": "imageId" - }, - "ImportTaskId": { - "locationName": "importTaskId" - }, - "LicenseType": { - "locationName": "licenseType" - }, - "Platform": { - "locationName": "platform" - }, - "Progress": { - "locationName": "progress" - }, - "SnapshotDetails": { - "shape": "Sdm", - "locationName": "snapshotDetailSet" - }, - "Status": { - "locationName": "status" - }, - "StatusMessage": { - "locationName": "statusMessage" - } - } - } - }, - "ImportInstance": { - "input": { - "type": "structure", - "required": [ - "Platform" - ], - "members": { - "Description": { - "locationName": "description" - }, - "DiskImages": { - "locationName": "diskImage", - "type": "list", - "member": { - "type": "structure", - "members": { - "Description": {}, - "Image": { - "shape": "Sn0" - }, - "Volume": { - "shape": "Sn1" - } - } - } - }, - "DryRun": { - "locationName": "dryRun", - "type": "boolean" - }, - "LaunchSpecification": { - "locationName": "launchSpecification", - "type": "structure", - "members": { - "AdditionalInfo": { - "locationName": "additionalInfo" - }, - "Architecture": { - "locationName": "architecture" - }, - "GroupIds": { - "shape": "S5t", - "locationName": "GroupId" - }, - "GroupNames": { - "shape": "Sn3", - "locationName": "GroupName" - }, - "InstanceInitiatedShutdownBehavior": { - "locationName": "instanceInitiatedShutdownBehavior" - }, - "InstanceType": { - "locationName": "instanceType" - }, - "Monitoring": { - "locationName": "monitoring", - "type": "boolean" - }, - "Placement": { - "shape": "Sep", - "locationName": "placement" - }, - "PrivateIpAddress": { - "locationName": "privateIpAddress" - }, - "SubnetId": { - "locationName": "subnetId" - }, - "UserData": { - "locationName": "userData", - "type": "structure", - "members": { - "Data": { - "locationName": "data" - } - } - } - } - }, - "Platform": { - "locationName": "platform" - } - } - }, - "output": { - "type": "structure", - "members": { - "ConversionTask": { - "shape": "Sae", - "locationName": "conversionTask" - } - } - } - }, - "ImportKeyPair": { - "input": { - "type": "structure", - "required": [ - "KeyName", - "PublicKeyMaterial" - ], - "members": { - "DryRun": { - "locationName": "dryRun", - "type": "boolean" - }, - "KeyName": { - "locationName": "keyName" - }, - "PublicKeyMaterial": { - "locationName": "publicKeyMaterial", - "type": "blob" - } - } - }, - "output": { - "type": "structure", - "members": { - "KeyFingerprint": { - "locationName": "keyFingerprint" - }, - "KeyName": { - "locationName": "keyName" - } - } - } - }, - "ImportSnapshot": { - "input": { - "type": "structure", - "members": { - "ClientData": { - "shape": "Sms" - }, - "ClientToken": {}, - "Description": {}, - "DiskContainer": { - "type": "structure", - "members": { - "Description": {}, - "Format": {}, - "Url": {}, - "UserBucket": { - "shape": "Smv" - } - } - }, - "DryRun": { - "type": "boolean" - }, - "RoleName": {} - } - }, - "output": { - "type": "structure", - "members": { - "Description": { - "locationName": "description" - }, - "ImportTaskId": { - "locationName": "importTaskId" - }, - "SnapshotTaskDetail": { - "shape": "Sdt", - "locationName": "snapshotTaskDetail" - } - } - } - }, - "ImportVolume": { - "input": { - "type": "structure", - "required": [ - "AvailabilityZone", - "Image", - "Volume" - ], - "members": { - "AvailabilityZone": { - "locationName": "availabilityZone" - }, - "Description": { - "locationName": "description" - }, - "DryRun": { - "locationName": "dryRun", - "type": "boolean" - }, - "Image": { - "shape": "Sn0", - "locationName": "image" - }, - "Volume": { - "shape": "Sn1", - "locationName": "volume" - } - } - }, - "output": { - "type": "structure", - "members": { - "ConversionTask": { - "shape": "Sae", - "locationName": "conversionTask" - } - } - } - }, - "ModifyFpgaImageAttribute": { - "input": { - "type": "structure", - "required": [ - "FpgaImageId" - ], - "members": { - "DryRun": { - "type": "boolean" - }, - "FpgaImageId": {}, - "Attribute": {}, - "OperationType": {}, - "UserIds": { - "shape": "Sng", - "locationName": "UserId" - }, - "UserGroups": { - "shape": "Snh", - "locationName": "UserGroup" - }, - "ProductCodes": { - "shape": "Sni", - "locationName": "ProductCode" - }, - "LoadPermission": { - "type": "structure", - "members": { - "Add": { - "shape": "Snk" - }, - "Remove": { - "shape": "Snk" - } - } - }, - "Description": {}, - "Name": {} - } - }, - "output": { - "type": "structure", - "members": { - "FpgaImageAttribute": { - "shape": "Sbi", - "locationName": "fpgaImageAttribute" - } - } - } - }, - "ModifyHosts": { - "input": { - "type": "structure", - "required": [ - "AutoPlacement", - "HostIds" - ], - "members": { - "AutoPlacement": { - "locationName": "autoPlacement" - }, - "HostIds": { - "shape": "Scd", - "locationName": "hostId" - } - } - }, - "output": { - "type": "structure", - "members": { - "Successful": { - "shape": "St", - "locationName": "successful" - }, - "Unsuccessful": { - "shape": "Snp", - "locationName": "unsuccessful" - } - } - } - }, - "ModifyIdFormat": { - "input": { - "type": "structure", - "required": [ - "Resource", - "UseLongIds" - ], - "members": { - "Resource": {}, - "UseLongIds": { - "type": "boolean" - } - } - } - }, - "ModifyIdentityIdFormat": { - "input": { - "type": "structure", - "required": [ - "PrincipalArn", - "Resource", - "UseLongIds" - ], - "members": { - "PrincipalArn": { - "locationName": "principalArn" - }, - "Resource": { - "locationName": "resource" - }, - "UseLongIds": { - "locationName": "useLongIds", - "type": "boolean" - } - } - } - }, - "ModifyImageAttribute": { - "input": { - "type": "structure", - "required": [ - "ImageId" - ], - "members": { - "Attribute": {}, - "Description": { - "shape": "S48" - }, - "ImageId": {}, - "LaunchPermission": { - "type": "structure", - "members": { - "Add": { - "shape": "Sd2" - }, - "Remove": { - "shape": "Sd2" - } - } - }, - "OperationType": {}, - "ProductCodes": { - "shape": "Sni", - "locationName": "ProductCode" - }, - "UserGroups": { - "shape": "Snh", - "locationName": "UserGroup" - }, - "UserIds": { - "shape": "Sng", - "locationName": "UserId" - }, - "Value": {}, - "DryRun": { - "locationName": "dryRun", - "type": "boolean" - } - } - } - }, - "ModifyInstanceAttribute": { - "input": { - "type": "structure", - "required": [ - "InstanceId" - ], - "members": { - "SourceDestCheck": { - "shape": "Se0" - }, - "Attribute": { - "locationName": "attribute" - }, - "BlockDeviceMappings": { - "locationName": "blockDeviceMapping", - "type": "list", - "member": { - "locationName": "item", - "type": "structure", - "members": { - "DeviceName": { - "locationName": "deviceName" - }, - "Ebs": { - "locationName": "ebs", - "type": "structure", - "members": { - "DeleteOnTermination": { - "locationName": "deleteOnTermination", - "type": "boolean" - }, - "VolumeId": { - "locationName": "volumeId" - } - } - }, - "NoDevice": { - "locationName": "noDevice" - }, - "VirtualName": { - "locationName": "virtualName" - } - } - } - }, - "DisableApiTermination": { - "shape": "Se0", - "locationName": "disableApiTermination" - }, - "DryRun": { - "locationName": "dryRun", - "type": "boolean" - }, - "EbsOptimized": { - "shape": "Se0", - "locationName": "ebsOptimized" - }, - "EnaSupport": { - "shape": "Se0", - "locationName": "enaSupport" - }, - "Groups": { - "shape": "S1m", - "locationName": "GroupId" - }, - "InstanceId": { - "locationName": "instanceId" - }, - "InstanceInitiatedShutdownBehavior": { - "shape": "S48", - "locationName": "instanceInitiatedShutdownBehavior" - }, - "InstanceType": { - "shape": "S48", - "locationName": "instanceType" - }, - "Kernel": { - "shape": "S48", - "locationName": "kernel" - }, - "Ramdisk": { - "shape": "S48", - "locationName": "ramdisk" - }, - "SriovNetSupport": { - "shape": "S48", - "locationName": "sriovNetSupport" - }, - "UserData": { - "locationName": "userData", - "type": "structure", - "members": { - "Value": { - "locationName": "value", - "type": "blob" - } - } - }, - "Value": { - "locationName": "value" - } - } - } - }, - "ModifyInstancePlacement": { - "input": { - "type": "structure", - "required": [ - "InstanceId" - ], - "members": { - "Affinity": { - "locationName": "affinity" - }, - "HostId": { - "locationName": "hostId" - }, - "InstanceId": { - "locationName": "instanceId" - }, - "Tenancy": { - "locationName": "tenancy" - } - } - }, - "output": { - "type": "structure", - "members": { - "Return": { - "locationName": "return", - "type": "boolean" - } - } - } - }, - "ModifyNetworkInterfaceAttribute": { - "input": { - "type": "structure", - "required": [ - "NetworkInterfaceId" - ], - "members": { - "Attachment": { - "locationName": "attachment", - "type": "structure", - "members": { - "AttachmentId": { - "locationName": "attachmentId" - }, - "DeleteOnTermination": { - "locationName": "deleteOnTermination", - "type": "boolean" - } - } - }, - "Description": { - "shape": "S48", - "locationName": "description" - }, - "DryRun": { - "locationName": "dryRun", - "type": "boolean" - }, - "Groups": { - "shape": "S5t", - "locationName": "SecurityGroupId" - }, - "NetworkInterfaceId": { - "locationName": "networkInterfaceId" - }, - "SourceDestCheck": { - "shape": "Se0", - "locationName": "sourceDestCheck" - } - } - } - }, - "ModifyReservedInstances": { - "input": { - "type": "structure", - "required": [ - "ReservedInstancesIds", - "TargetConfigurations" - ], - "members": { - "ReservedInstancesIds": { - "shape": "Sga", - "locationName": "ReservedInstancesId" - }, - "ClientToken": { - "locationName": "clientToken" - }, - "TargetConfigurations": { - "locationName": "ReservedInstancesConfigurationSetItemType", - "type": "list", - "member": { - "shape": "Sgv", - "locationName": "item" - } - } - } - }, - "output": { - "type": "structure", - "members": { - "ReservedInstancesModificationId": { - "locationName": "reservedInstancesModificationId" - } - } - } - }, - "ModifySnapshotAttribute": { - "input": { - "type": "structure", - "required": [ - "SnapshotId" - ], - "members": { - "Attribute": {}, - "CreateVolumePermission": { - "type": "structure", - "members": { - "Add": { - "shape": "Si0" - }, - "Remove": { - "shape": "Si0" - } - } - }, - "GroupNames": { - "shape": "Sht", - "locationName": "UserGroup" - }, - "OperationType": {}, - "SnapshotId": {}, - "UserIds": { - "shape": "Sng", - "locationName": "UserId" - }, - "DryRun": { - "locationName": "dryRun", - "type": "boolean" - } - } - } - }, - "ModifySpotFleetRequest": { - "input": { - "type": "structure", - "required": [ - "SpotFleetRequestId" - ], - "members": { - "ExcessCapacityTerminationPolicy": { - "locationName": "excessCapacityTerminationPolicy" - }, - "SpotFleetRequestId": { - "locationName": "spotFleetRequestId" - }, - "TargetCapacity": { - "locationName": "targetCapacity", - "type": "integer" - } - } - }, - "output": { - "type": "structure", - "members": { - "Return": { - "locationName": "return", - "type": "boolean" - } - } - } - }, - "ModifySubnetAttribute": { - "input": { - "type": "structure", - "required": [ - "SubnetId" - ], - "members": { - "AssignIpv6AddressOnCreation": { - "shape": "Se0" - }, - "MapPublicIpOnLaunch": { - "shape": "Se0" - }, - "SubnetId": { - "locationName": "subnetId" - } - } - } - }, - "ModifyVolume": { - "input": { - "type": "structure", - "required": [ - "VolumeId" - ], - "members": { - "DryRun": { - "type": "boolean" - }, - "VolumeId": {}, - "Size": { - "type": "integer" - }, - "VolumeType": {}, - "Iops": { - "type": "integer" - } - } - }, - "output": { - "type": "structure", - "members": { - "VolumeModification": { - "shape": "Skl", - "locationName": "volumeModification" - } - } - } - }, - "ModifyVolumeAttribute": { - "input": { - "type": "structure", - "required": [ - "VolumeId" - ], - "members": { - "AutoEnableIO": { - "shape": "Se0" - }, - "VolumeId": {}, - "DryRun": { - "locationName": "dryRun", - "type": "boolean" - } - } - } - }, - "ModifyVpcAttribute": { - "input": { - "type": "structure", - "required": [ - "VpcId" - ], - "members": { - "EnableDnsHostnames": { - "shape": "Se0" - }, - "EnableDnsSupport": { - "shape": "Se0" - }, - "VpcId": { - "locationName": "vpcId" - } - } - } - }, - "ModifyVpcEndpoint": { - "input": { - "type": "structure", - "required": [ - "VpcEndpointId" - ], - "members": { - "AddRouteTableIds": { - "shape": "S32", - "locationName": "AddRouteTableId" - }, - "DryRun": { - "type": "boolean" - }, - "PolicyDocument": {}, - "RemoveRouteTableIds": { - "shape": "S32", - "locationName": "RemoveRouteTableId" - }, - "ResetPolicy": { - "type": "boolean" - }, - "VpcEndpointId": {} - } - }, - "output": { - "type": "structure", - "members": { - "Return": { - "locationName": "return", - "type": "boolean" - } - } - } - }, - "ModifyVpcPeeringConnectionOptions": { - "input": { - "type": "structure", - "required": [ - "VpcPeeringConnectionId" - ], - "members": { - "AccepterPeeringConnectionOptions": { - "shape": "Sok" - }, - "DryRun": { - "type": "boolean" - }, - "RequesterPeeringConnectionOptions": { - "shape": "Sok" - }, - "VpcPeeringConnectionId": {} - } - }, - "output": { - "type": "structure", - "members": { - "AccepterPeeringConnectionOptions": { - "shape": "Som", - "locationName": "accepterPeeringConnectionOptions" - }, - "RequesterPeeringConnectionOptions": { - "shape": "Som", - "locationName": "requesterPeeringConnectionOptions" - } - } - } - }, - "MonitorInstances": { - "input": { - "type": "structure", - "required": [ - "InstanceIds" - ], - "members": { - "InstanceIds": { - "shape": "Sa6", - "locationName": "InstanceId" - }, - "DryRun": { - "locationName": "dryRun", - "type": "boolean" - } - } - }, - "output": { - "type": "structure", - "members": { - "InstanceMonitorings": { - "shape": "Sop", - "locationName": "instancesSet" - } - } - } - }, - "MoveAddressToVpc": { - "input": { - "type": "structure", - "required": [ - "PublicIp" - ], - "members": { - "DryRun": { - "locationName": "dryRun", - "type": "boolean" - }, - "PublicIp": { - "locationName": "publicIp" - } - } - }, - "output": { - "type": "structure", - "members": { - "AllocationId": { - "locationName": "allocationId" - }, - "Status": { - "locationName": "status" - } - } - } - }, - "PurchaseHostReservation": { - "input": { - "type": "structure", - "required": [ - "HostIdSet", - "OfferingId" - ], - "members": { - "ClientToken": {}, - "CurrencyCode": {}, - "HostIdSet": { - "shape": "Smd" - }, - "LimitPrice": {}, - "OfferingId": {} - } - }, - "output": { - "type": "structure", - "members": { - "ClientToken": { - "locationName": "clientToken" - }, - "CurrencyCode": { - "locationName": "currencyCode" - }, - "Purchase": { - "shape": "Smf", - "locationName": "purchase" - }, - "TotalHourlyPrice": { - "locationName": "totalHourlyPrice" - }, - "TotalUpfrontPrice": { - "locationName": "totalUpfrontPrice" - } - } - } - }, - "PurchaseReservedInstancesOffering": { - "input": { - "type": "structure", - "required": [ - "InstanceCount", - "ReservedInstancesOfferingId" - ], - "members": { - "InstanceCount": { - "type": "integer" - }, - "ReservedInstancesOfferingId": {}, - "DryRun": { - "locationName": "dryRun", - "type": "boolean" - }, - "LimitPrice": { - "locationName": "limitPrice", - "type": "structure", - "members": { - "Amount": { - "locationName": "amount", - "type": "double" - }, - "CurrencyCode": { - "locationName": "currencyCode" - } - } - } - } - }, - "output": { - "type": "structure", - "members": { - "ReservedInstancesId": { - "locationName": "reservedInstancesId" - } - } - } - }, - "PurchaseScheduledInstances": { - "input": { - "type": "structure", - "required": [ - "PurchaseRequests" - ], - "members": { - "ClientToken": { - "idempotencyToken": true - }, - "DryRun": { - "type": "boolean" - }, - "PurchaseRequests": { - "locationName": "PurchaseRequest", - "type": "list", - "member": { - "locationName": "PurchaseRequest", - "type": "structure", - "required": [ - "InstanceCount", - "PurchaseToken" - ], - "members": { - "InstanceCount": { - "type": "integer" - }, - "PurchaseToken": {} - } - } - } - } - }, - "output": { - "type": "structure", - "members": { - "ScheduledInstanceSet": { - "locationName": "scheduledInstanceSet", - "type": "list", - "member": { - "shape": "Shm", - "locationName": "item" - } - } - } - } - }, - "RebootInstances": { - "input": { - "type": "structure", - "required": [ - "InstanceIds" - ], - "members": { - "InstanceIds": { - "shape": "Sa6", - "locationName": "InstanceId" - }, - "DryRun": { - "locationName": "dryRun", - "type": "boolean" - } - } - } - }, - "RegisterImage": { - "input": { - "type": "structure", - "required": [ - "Name" - ], - "members": { - "ImageLocation": {}, - "Architecture": { - "locationName": "architecture" - }, - "BlockDeviceMappings": { - "shape": "S4q", - "locationName": "BlockDeviceMapping" - }, - "Description": { - "locationName": "description" - }, - "DryRun": { - "locationName": "dryRun", - "type": "boolean" - }, - "EnaSupport": { - "locationName": "enaSupport", - "type": "boolean" - }, - "KernelId": { - "locationName": "kernelId" - }, - "Name": { - "locationName": "name" - }, - "BillingProducts": { - "locationName": "BillingProduct", - "type": "list", - "member": { - "locationName": "item" - } - }, - "RamdiskId": { - "locationName": "ramdiskId" - }, - "RootDeviceName": { - "locationName": "rootDeviceName" - }, - "SriovNetSupport": { - "locationName": "sriovNetSupport" - }, - "VirtualizationType": { - "locationName": "virtualizationType" - } - } - }, - "output": { - "type": "structure", - "members": { - "ImageId": { - "locationName": "imageId" - } - } - } - }, - "RejectVpcPeeringConnection": { - "input": { - "type": "structure", - "required": [ - "VpcPeeringConnectionId" - ], - "members": { - "DryRun": { - "locationName": "dryRun", - "type": "boolean" - }, - "VpcPeeringConnectionId": { - "locationName": "vpcPeeringConnectionId" - } - } - }, - "output": { - "type": "structure", - "members": { - "Return": { - "locationName": "return", - "type": "boolean" - } - } - } - }, - "ReleaseAddress": { - "input": { - "type": "structure", - "members": { - "AllocationId": {}, - "PublicIp": {}, - "DryRun": { - "locationName": "dryRun", - "type": "boolean" - } - } - } - }, - "ReleaseHosts": { - "input": { - "type": "structure", - "required": [ - "HostIds" - ], - "members": { - "HostIds": { - "shape": "Scd", - "locationName": "hostId" - } - } - }, - "output": { - "type": "structure", - "members": { - "Successful": { - "shape": "St", - "locationName": "successful" - }, - "Unsuccessful": { - "shape": "Snp", - "locationName": "unsuccessful" - } - } - } - }, - "ReplaceIamInstanceProfileAssociation": { - "input": { - "type": "structure", - "required": [ - "IamInstanceProfile", - "AssociationId" - ], - "members": { - "IamInstanceProfile": { - "shape": "S13" - }, - "AssociationId": {} - } - }, - "output": { - "type": "structure", - "members": { - "IamInstanceProfileAssociation": { - "shape": "S15", - "locationName": "iamInstanceProfileAssociation" - } - } - } - }, - "ReplaceNetworkAclAssociation": { - "input": { - "type": "structure", - "required": [ - "AssociationId", - "NetworkAclId" - ], - "members": { - "AssociationId": { - "locationName": "associationId" - }, - "DryRun": { - "locationName": "dryRun", - "type": "boolean" - }, - "NetworkAclId": { - "locationName": "networkAclId" - } - } - }, - "output": { - "type": "structure", - "members": { - "NewAssociationId": { - "locationName": "newAssociationId" - } - } - } - }, - "ReplaceNetworkAclEntry": { - "input": { - "type": "structure", - "required": [ - "Egress", - "NetworkAclId", - "Protocol", - "RuleAction", - "RuleNumber" - ], - "members": { - "CidrBlock": { - "locationName": "cidrBlock" - }, - "DryRun": { - "locationName": "dryRun", - "type": "boolean" - }, - "Egress": { - "locationName": "egress", - "type": "boolean" - }, - "IcmpTypeCode": { - "shape": "S5o", - "locationName": "Icmp" - }, - "Ipv6CidrBlock": { - "locationName": "ipv6CidrBlock" - }, - "NetworkAclId": { - "locationName": "networkAclId" - }, - "PortRange": { - "shape": "S5p", - "locationName": "portRange" - }, - "Protocol": { - "locationName": "protocol" - }, - "RuleAction": { - "locationName": "ruleAction" - }, - "RuleNumber": { - "locationName": "ruleNumber", - "type": "integer" - } - } - } - }, - "ReplaceRoute": { - "input": { - "type": "structure", - "required": [ - "RouteTableId" - ], - "members": { - "DestinationCidrBlock": { - "locationName": "destinationCidrBlock" - }, - "DestinationIpv6CidrBlock": { - "locationName": "destinationIpv6CidrBlock" - }, - "DryRun": { - "locationName": "dryRun", - "type": "boolean" - }, - "EgressOnlyInternetGatewayId": { - "locationName": "egressOnlyInternetGatewayId" - }, - "GatewayId": { - "locationName": "gatewayId" - }, - "InstanceId": { - "locationName": "instanceId" - }, - "NatGatewayId": { - "locationName": "natGatewayId" - }, - "NetworkInterfaceId": { - "locationName": "networkInterfaceId" - }, - "RouteTableId": { - "locationName": "routeTableId" - }, - "VpcPeeringConnectionId": { - "locationName": "vpcPeeringConnectionId" - } - } - } - }, - "ReplaceRouteTableAssociation": { - "input": { - "type": "structure", - "required": [ - "AssociationId", - "RouteTableId" - ], - "members": { - "AssociationId": { - "locationName": "associationId" - }, - "DryRun": { - "locationName": "dryRun", - "type": "boolean" - }, - "RouteTableId": { - "locationName": "routeTableId" - } - } - }, - "output": { - "type": "structure", - "members": { - "NewAssociationId": { - "locationName": "newAssociationId" - } - } - } - }, - "ReportInstanceStatus": { - "input": { - "type": "structure", - "required": [ - "Instances", - "ReasonCodes", - "Status" - ], - "members": { - "Description": { - "locationName": "description" - }, - "DryRun": { - "locationName": "dryRun", - "type": "boolean" - }, - "EndTime": { - "locationName": "endTime", - "type": "timestamp" - }, - "Instances": { - "shape": "Sa6", - "locationName": "instanceId" - }, - "ReasonCodes": { - "locationName": "reasonCode", - "type": "list", - "member": { - "locationName": "item" - } - }, - "StartTime": { - "locationName": "startTime", - "type": "timestamp" - }, - "Status": { - "locationName": "status" - } - } - } - }, - "RequestSpotFleet": { - "input": { - "type": "structure", - "required": [ - "SpotFleetRequestConfig" - ], - "members": { - "DryRun": { - "locationName": "dryRun", - "type": "boolean" - }, - "SpotFleetRequestConfig": { - "shape": "Sip", - "locationName": "spotFleetRequestConfig" - } - } - }, - "output": { - "type": "structure", - "required": [ - "SpotFleetRequestId" - ], - "members": { - "SpotFleetRequestId": { - "locationName": "spotFleetRequestId" - } - } - } - }, - "RequestSpotInstances": { - "input": { - "type": "structure", - "required": [ - "SpotPrice" - ], - "members": { - "AvailabilityZoneGroup": { - "locationName": "availabilityZoneGroup" - }, - "BlockDurationMinutes": { - "locationName": "blockDurationMinutes", - "type": "integer" - }, - "ClientToken": { - "locationName": "clientToken" - }, - "DryRun": { - "locationName": "dryRun", - "type": "boolean" - }, - "InstanceCount": { - "locationName": "instanceCount", - "type": "integer" - }, - "LaunchGroup": { - "locationName": "launchGroup" - }, - "LaunchSpecification": { - "type": "structure", - "members": { - "SecurityGroupIds": { - "shape": "S32", - "locationName": "SecurityGroupId" - }, - "SecurityGroups": { - "shape": "S32", - "locationName": "SecurityGroup" - }, - "AddressingType": { - "locationName": "addressingType" - }, - "BlockDeviceMappings": { - "shape": "Sd1", - "locationName": "blockDeviceMapping" - }, - "EbsOptimized": { - "locationName": "ebsOptimized", - "type": "boolean" - }, - "IamInstanceProfile": { - "shape": "S13", - "locationName": "iamInstanceProfile" - }, - "ImageId": { - "locationName": "imageId" - }, - "InstanceType": { - "locationName": "instanceType" - }, - "KernelId": { - "locationName": "kernelId" - }, - "KeyName": { - "locationName": "keyName" - }, - "Monitoring": { - "shape": "Sj7", - "locationName": "monitoring" - }, - "NetworkInterfaces": { - "shape": "Siv", - "locationName": "NetworkInterface" - }, - "Placement": { - "shape": "Six", - "locationName": "placement" - }, - "RamdiskId": { - "locationName": "ramdiskId" - }, - "SubnetId": { - "locationName": "subnetId" - }, - "UserData": { - "locationName": "userData" - } - } - }, - "SpotPrice": { - "locationName": "spotPrice" - }, - "Type": { - "locationName": "type" - }, - "ValidFrom": { - "locationName": "validFrom", - "type": "timestamp" - }, - "ValidUntil": { - "locationName": "validUntil", - "type": "timestamp" - }, - "InstanceInterruptionBehavior": {} - } - }, - "output": { - "type": "structure", - "members": { - "SpotInstanceRequests": { - "shape": "Sj4", - "locationName": "spotInstanceRequestSet" - } - } - } - }, - "ResetFpgaImageAttribute": { - "input": { - "type": "structure", - "required": [ - "FpgaImageId" - ], - "members": { - "DryRun": { - "type": "boolean" - }, - "FpgaImageId": {}, - "Attribute": {} - } - }, - "output": { - "type": "structure", - "members": { - "Return": { - "locationName": "return", - "type": "boolean" - } - } - } - }, - "ResetImageAttribute": { - "input": { - "type": "structure", - "required": [ - "Attribute", - "ImageId" - ], - "members": { - "Attribute": {}, - "ImageId": {}, - "DryRun": { - "locationName": "dryRun", - "type": "boolean" - } - } - } - }, - "ResetInstanceAttribute": { - "input": { - "type": "structure", - "required": [ - "Attribute", - "InstanceId" - ], - "members": { - "Attribute": { - "locationName": "attribute" - }, - "DryRun": { - "locationName": "dryRun", - "type": "boolean" - }, - "InstanceId": { - "locationName": "instanceId" - } - } - } - }, - "ResetNetworkInterfaceAttribute": { - "input": { - "type": "structure", - "required": [ - "NetworkInterfaceId" - ], - "members": { - "DryRun": { - "locationName": "dryRun", - "type": "boolean" - }, - "NetworkInterfaceId": { - "locationName": "networkInterfaceId" - }, - "SourceDestCheck": { - "locationName": "sourceDestCheck" - } - } - } - }, - "ResetSnapshotAttribute": { - "input": { - "type": "structure", - "required": [ - "Attribute", - "SnapshotId" - ], - "members": { - "Attribute": {}, - "SnapshotId": {}, - "DryRun": { - "locationName": "dryRun", - "type": "boolean" - } - } - } - }, - "RestoreAddressToClassic": { - "input": { - "type": "structure", - "required": [ - "PublicIp" - ], - "members": { - "DryRun": { - "locationName": "dryRun", - "type": "boolean" - }, - "PublicIp": { - "locationName": "publicIp" - } - } - }, - "output": { - "type": "structure", - "members": { - "PublicIp": { - "locationName": "publicIp" - }, - "Status": { - "locationName": "status" - } - } - } - }, - "RevokeSecurityGroupEgress": { - "input": { - "type": "structure", - "required": [ - "GroupId" - ], - "members": { - "DryRun": { - "locationName": "dryRun", - "type": "boolean" - }, - "GroupId": { - "locationName": "groupId" - }, - "IpPermissions": { - "shape": "S1z", - "locationName": "ipPermissions" - }, - "CidrIp": { - "locationName": "cidrIp" - }, - "FromPort": { - "locationName": "fromPort", - "type": "integer" - }, - "IpProtocol": { - "locationName": "ipProtocol" - }, - "ToPort": { - "locationName": "toPort", - "type": "integer" - }, - "SourceSecurityGroupName": { - "locationName": "sourceSecurityGroupName" - }, - "SourceSecurityGroupOwnerId": { - "locationName": "sourceSecurityGroupOwnerId" - } - } - } - }, - "RevokeSecurityGroupIngress": { - "input": { - "type": "structure", - "members": { - "CidrIp": {}, - "FromPort": { - "type": "integer" - }, - "GroupId": {}, - "GroupName": {}, - "IpPermissions": { - "shape": "S1z" - }, - "IpProtocol": {}, - "SourceSecurityGroupName": {}, - "SourceSecurityGroupOwnerId": {}, - "ToPort": { - "type": "integer" - }, - "DryRun": { - "locationName": "dryRun", - "type": "boolean" - } - } - } - }, - "RunInstances": { - "input": { - "type": "structure", - "required": [ - "ImageId", - "MaxCount", - "MinCount" - ], - "members": { - "BlockDeviceMappings": { - "shape": "S4q", - "locationName": "BlockDeviceMapping" - }, - "ImageId": {}, - "InstanceType": {}, - "Ipv6AddressCount": { - "type": "integer" - }, - "Ipv6Addresses": { - "shape": "S5u", - "locationName": "Ipv6Address" - }, - "KernelId": {}, - "KeyName": {}, - "MaxCount": { - "type": "integer" - }, - "MinCount": { - "type": "integer" - }, - "Monitoring": { - "shape": "Sj7" - }, - "Placement": { - "shape": "Sep" - }, - "RamdiskId": {}, - "SecurityGroupIds": { - "shape": "S5t", - "locationName": "SecurityGroupId" - }, - "SecurityGroups": { - "shape": "Sn3", - "locationName": "SecurityGroup" - }, - "SubnetId": {}, - "UserData": {}, - "AdditionalInfo": { - "locationName": "additionalInfo" - }, - "ClientToken": { - "locationName": "clientToken" - }, - "DisableApiTermination": { - "locationName": "disableApiTermination", - "type": "boolean" - }, - "DryRun": { - "locationName": "dryRun", - "type": "boolean" - }, - "EbsOptimized": { - "locationName": "ebsOptimized", - "type": "boolean" - }, - "IamInstanceProfile": { - "shape": "S13", - "locationName": "iamInstanceProfile" - }, - "InstanceInitiatedShutdownBehavior": { - "locationName": "instanceInitiatedShutdownBehavior" - }, - "NetworkInterfaces": { - "shape": "Siv", - "locationName": "networkInterface" - }, - "PrivateIpAddress": { - "locationName": "privateIpAddress" - }, - "ElasticGpuSpecification": { - "type": "list", - "member": { - "locationName": "item", - "type": "structure", - "required": [ - "Type" - ], - "members": { - "Type": {} - } - } - }, - "TagSpecifications": { - "shape": "S7h", - "locationName": "TagSpecification" - } - } - }, - "output": { - "shape": "Sej" - } - }, - "RunScheduledInstances": { - "input": { - "type": "structure", - "required": [ - "LaunchSpecification", - "ScheduledInstanceId" - ], - "members": { - "ClientToken": { - "idempotencyToken": true - }, - "DryRun": { - "type": "boolean" - }, - "InstanceCount": { - "type": "integer" - }, - "LaunchSpecification": { - "type": "structure", - "required": [ - "ImageId" - ], - "members": { - "BlockDeviceMappings": { - "locationName": "BlockDeviceMapping", - "type": "list", - "member": { - "locationName": "BlockDeviceMapping", - "type": "structure", - "members": { - "DeviceName": {}, - "Ebs": { - "type": "structure", - "members": { - "DeleteOnTermination": { - "type": "boolean" - }, - "Encrypted": { - "type": "boolean" - }, - "Iops": { - "type": "integer" - }, - "SnapshotId": {}, - "VolumeSize": { - "type": "integer" - }, - "VolumeType": {} - } - }, - "NoDevice": {}, - "VirtualName": {} - } - } - }, - "EbsOptimized": { - "type": "boolean" - }, - "IamInstanceProfile": { - "type": "structure", - "members": { - "Arn": {}, - "Name": {} - } - }, - "ImageId": {}, - "InstanceType": {}, - "KernelId": {}, - "KeyName": {}, - "Monitoring": { - "type": "structure", - "members": { - "Enabled": { - "type": "boolean" - } - } - }, - "NetworkInterfaces": { - "locationName": "NetworkInterface", - "type": "list", - "member": { - "locationName": "NetworkInterface", - "type": "structure", - "members": { - "AssociatePublicIpAddress": { - "type": "boolean" - }, - "DeleteOnTermination": { - "type": "boolean" - }, - "Description": {}, - "DeviceIndex": { - "type": "integer" - }, - "Groups": { - "shape": "Sqi", - "locationName": "Group" - }, - "Ipv6AddressCount": { - "type": "integer" - }, - "Ipv6Addresses": { - "locationName": "Ipv6Address", - "type": "list", - "member": { - "locationName": "Ipv6Address", - "type": "structure", - "members": { - "Ipv6Address": {} - } - } - }, - "NetworkInterfaceId": {}, - "PrivateIpAddress": {}, - "PrivateIpAddressConfigs": { - "locationName": "PrivateIpAddressConfig", - "type": "list", - "member": { - "locationName": "PrivateIpAddressConfigSet", - "type": "structure", - "members": { - "Primary": { - "type": "boolean" - }, - "PrivateIpAddress": {} - } - } - }, - "SecondaryPrivateIpAddressCount": { - "type": "integer" - }, - "SubnetId": {} - } - } - }, - "Placement": { - "type": "structure", - "members": { - "AvailabilityZone": {}, - "GroupName": {} - } - }, - "RamdiskId": {}, - "SecurityGroupIds": { - "shape": "Sqi", - "locationName": "SecurityGroupId" - }, - "SubnetId": {}, - "UserData": {} - } - }, - "ScheduledInstanceId": {} - } - }, - "output": { - "type": "structure", - "members": { - "InstanceIdSet": { - "locationName": "instanceIdSet", - "type": "list", - "member": { - "locationName": "item" - } - } - } - } - }, - "StartInstances": { - "input": { - "type": "structure", - "required": [ - "InstanceIds" - ], - "members": { - "InstanceIds": { - "shape": "Sa6", - "locationName": "InstanceId" - }, - "AdditionalInfo": { - "locationName": "additionalInfo" - }, - "DryRun": { - "locationName": "dryRun", - "type": "boolean" - } - } - }, - "output": { - "type": "structure", - "members": { - "StartingInstances": { - "shape": "Sqt", - "locationName": "instancesSet" - } - } - } - }, - "StopInstances": { - "input": { - "type": "structure", - "required": [ - "InstanceIds" - ], - "members": { - "InstanceIds": { - "shape": "Sa6", - "locationName": "InstanceId" - }, - "DryRun": { - "locationName": "dryRun", - "type": "boolean" - }, - "Force": { - "locationName": "force", - "type": "boolean" - } - } - }, - "output": { - "type": "structure", - "members": { - "StoppingInstances": { - "shape": "Sqt", - "locationName": "instancesSet" - } - } - } - }, - "TerminateInstances": { - "input": { - "type": "structure", - "required": [ - "InstanceIds" - ], - "members": { - "InstanceIds": { - "shape": "Sa6", - "locationName": "InstanceId" - }, - "DryRun": { - "locationName": "dryRun", - "type": "boolean" - } - } - }, - "output": { - "type": "structure", - "members": { - "TerminatingInstances": { - "shape": "Sqt", - "locationName": "instancesSet" - } - } - } - }, - "UnassignIpv6Addresses": { - "input": { - "type": "structure", - "required": [ - "Ipv6Addresses", - "NetworkInterfaceId" - ], - "members": { - "Ipv6Addresses": { - "shape": "Sv", - "locationName": "ipv6Addresses" - }, - "NetworkInterfaceId": { - "locationName": "networkInterfaceId" - } - } - }, - "output": { - "type": "structure", - "members": { - "NetworkInterfaceId": { - "locationName": "networkInterfaceId" - }, - "UnassignedIpv6Addresses": { - "shape": "Sv", - "locationName": "unassignedIpv6Addresses" - } - } - } - }, - "UnassignPrivateIpAddresses": { - "input": { - "type": "structure", - "required": [ - "NetworkInterfaceId", - "PrivateIpAddresses" - ], - "members": { - "NetworkInterfaceId": { - "locationName": "networkInterfaceId" - }, - "PrivateIpAddresses": { - "shape": "Sy", - "locationName": "privateIpAddress" - } - } - } - }, - "UnmonitorInstances": { - "input": { - "type": "structure", - "required": [ - "InstanceIds" - ], - "members": { - "InstanceIds": { - "shape": "Sa6", - "locationName": "InstanceId" - }, - "DryRun": { - "locationName": "dryRun", - "type": "boolean" - } - } - }, - "output": { - "type": "structure", - "members": { - "InstanceMonitorings": { - "shape": "Sop", - "locationName": "instancesSet" - } - } - } - }, - "UpdateSecurityGroupRuleDescriptionsEgress": { - "input": { - "type": "structure", - "required": [ - "IpPermissions" - ], - "members": { - "DryRun": { - "type": "boolean" - }, - "GroupId": {}, - "GroupName": {}, - "IpPermissions": { - "shape": "S1z" - } - } - }, - "output": { - "type": "structure", - "members": { - "Return": { - "locationName": "return", - "type": "boolean" - } - } - } - }, - "UpdateSecurityGroupRuleDescriptionsIngress": { - "input": { - "type": "structure", - "required": [ - "IpPermissions" - ], - "members": { - "DryRun": { - "type": "boolean" - }, - "GroupId": {}, - "GroupName": {}, - "IpPermissions": { - "shape": "S1z" - } - } - }, - "output": { - "type": "structure", - "members": { - "Return": { - "locationName": "return", - "type": "boolean" - } - } - } - } - }, - "shapes": { - "S3": { - "type": "list", - "member": { - "locationName": "ReservedInstanceId" - } - }, - "S5": { - "type": "list", - "member": { - "locationName": "TargetConfigurationRequest", - "type": "structure", - "required": [ - "OfferingId" - ], - "members": { - "InstanceCount": { - "type": "integer" - }, - "OfferingId": {} - } - } - }, - "Sb": { - "type": "structure", - "members": { - "AccepterVpcInfo": { - "shape": "Sc", - "locationName": "accepterVpcInfo" - }, - "ExpirationTime": { - "locationName": "expirationTime", - "type": "timestamp" - }, - "RequesterVpcInfo": { - "shape": "Sc", - "locationName": "requesterVpcInfo" - }, - "Status": { - "locationName": "status", - "type": "structure", - "members": { - "Code": { - "locationName": "code" - }, - "Message": { - "locationName": "message" - } - } - }, - "Tags": { - "shape": "Sl", - "locationName": "tagSet" - }, - "VpcPeeringConnectionId": { - "locationName": "vpcPeeringConnectionId" - } - } - }, - "Sc": { - "type": "structure", - "members": { - "CidrBlock": { - "locationName": "cidrBlock" - }, - "Ipv6CidrBlockSet": { - "locationName": "ipv6CidrBlockSet", - "type": "list", - "member": { - "locationName": "item", - "type": "structure", - "members": { - "Ipv6CidrBlock": { - "locationName": "ipv6CidrBlock" - } - } - } - }, - "CidrBlockSet": { - "locationName": "cidrBlockSet", - "type": "list", - "member": { - "locationName": "item", - "type": "structure", - "members": { - "CidrBlock": { - "locationName": "cidrBlock" - } - } - } - }, - "OwnerId": { - "locationName": "ownerId" - }, - "PeeringOptions": { - "locationName": "peeringOptions", - "type": "structure", - "members": { - "AllowDnsResolutionFromRemoteVpc": { - "locationName": "allowDnsResolutionFromRemoteVpc", - "type": "boolean" - }, - "AllowEgressFromLocalClassicLinkToRemoteVpc": { - "locationName": "allowEgressFromLocalClassicLinkToRemoteVpc", - "type": "boolean" - }, - "AllowEgressFromLocalVpcToRemoteClassicLink": { - "locationName": "allowEgressFromLocalVpcToRemoteClassicLink", - "type": "boolean" - } - } - }, - "VpcId": { - "locationName": "vpcId" - } - } - }, - "Sl": { - "type": "list", - "member": { - "locationName": "item", - "type": "structure", - "members": { - "Key": { - "locationName": "key" - }, - "Value": { - "locationName": "value" - } - } - } - }, - "St": { - "type": "list", - "member": { - "locationName": "item" - } - }, - "Sv": { - "type": "list", - "member": { - "locationName": "item" - } - }, - "Sy": { - "type": "list", - "member": { - "locationName": "PrivateIpAddress" - } - }, - "S13": { - "type": "structure", - "members": { - "Arn": { - "locationName": "arn" - }, - "Name": { - "locationName": "name" - } - } - }, - "S15": { - "type": "structure", - "members": { - "AssociationId": { - "locationName": "associationId" - }, - "InstanceId": { - "locationName": "instanceId" - }, - "IamInstanceProfile": { - "shape": "S16", - "locationName": "iamInstanceProfile" - }, - "State": { - "locationName": "state" - }, - "Timestamp": { - "locationName": "timestamp", - "type": "timestamp" - } - } - }, - "S16": { - "type": "structure", - "members": { - "Arn": { - "locationName": "arn" - }, - "Id": { - "locationName": "id" - } - } - }, - "S1c": { - "type": "structure", - "members": { - "AssociationId": { - "locationName": "associationId" - }, - "Ipv6CidrBlock": { - "locationName": "ipv6CidrBlock" - }, - "Ipv6CidrBlockState": { - "locationName": "ipv6CidrBlockState", - "type": "structure", - "members": { - "State": { - "locationName": "state" - }, - "StatusMessage": { - "locationName": "statusMessage" - } - } - } - } - }, - "S1h": { - "type": "structure", - "members": { - "AssociationId": { - "locationName": "associationId" - }, - "Ipv6CidrBlock": { - "locationName": "ipv6CidrBlock" - }, - "Ipv6CidrBlockState": { - "shape": "S1i", - "locationName": "ipv6CidrBlockState" - } - } - }, - "S1i": { - "type": "structure", - "members": { - "State": { - "locationName": "state" - }, - "StatusMessage": { - "locationName": "statusMessage" - } - } - }, - "S1k": { - "type": "structure", - "members": { - "AssociationId": { - "locationName": "associationId" - }, - "CidrBlock": { - "locationName": "cidrBlock" - }, - "CidrBlockState": { - "shape": "S1i", - "locationName": "cidrBlockState" - } - } - }, - "S1m": { - "type": "list", - "member": { - "locationName": "groupId" - } - }, - "S1s": { - "type": "structure", - "members": { - "AttachTime": { - "locationName": "attachTime", - "type": "timestamp" - }, - "Device": { - "locationName": "device" - }, - "InstanceId": { - "locationName": "instanceId" - }, - "State": { - "locationName": "status" - }, - "VolumeId": { - "locationName": "volumeId" - }, - "DeleteOnTermination": { - "locationName": "deleteOnTermination", - "type": "boolean" - } - } - }, - "S1w": { - "type": "structure", - "members": { - "State": { - "locationName": "state" - }, - "VpcId": { - "locationName": "vpcId" - } - } - }, - "S1z": { - "type": "list", - "member": { - "locationName": "item", - "type": "structure", - "members": { - "FromPort": { - "locationName": "fromPort", - "type": "integer" - }, - "IpProtocol": { - "locationName": "ipProtocol" - }, - "IpRanges": { - "locationName": "ipRanges", - "type": "list", - "member": { - "locationName": "item", - "type": "structure", - "members": { - "CidrIp": { - "locationName": "cidrIp" - }, - "Description": { - "locationName": "description" - } - } - } - }, - "Ipv6Ranges": { - "locationName": "ipv6Ranges", - "type": "list", - "member": { - "locationName": "item", - "type": "structure", - "members": { - "CidrIpv6": { - "locationName": "cidrIpv6" - }, - "Description": { - "locationName": "description" - } - } - } - }, - "PrefixListIds": { - "locationName": "prefixListIds", - "type": "list", - "member": { - "locationName": "item", - "type": "structure", - "members": { - "Description": { - "locationName": "description" - }, - "PrefixListId": { - "locationName": "prefixListId" - } - } - } - }, - "ToPort": { - "locationName": "toPort", - "type": "integer" - }, - "UserIdGroupPairs": { - "locationName": "groups", - "type": "list", - "member": { - "shape": "S28", - "locationName": "item" - } - } - } - } - }, - "S28": { - "type": "structure", - "members": { - "Description": { - "locationName": "description" - }, - "GroupId": { - "locationName": "groupId" - }, - "GroupName": { - "locationName": "groupName" - }, - "PeeringStatus": { - "locationName": "peeringStatus" - }, - "UserId": { - "locationName": "userId" - }, - "VpcId": { - "locationName": "vpcId" - }, - "VpcPeeringConnectionId": { - "locationName": "vpcPeeringConnectionId" - } - } - }, - "S2b": { - "type": "structure", - "members": { - "S3": { - "type": "structure", - "members": { - "AWSAccessKeyId": {}, - "Bucket": { - "locationName": "bucket" - }, - "Prefix": { - "locationName": "prefix" - }, - "UploadPolicy": { - "locationName": "uploadPolicy", - "type": "blob" - }, - "UploadPolicySignature": { - "locationName": "uploadPolicySignature" - } - } - } - } - }, - "S2f": { - "type": "structure", - "members": { - "BundleId": { - "locationName": "bundleId" - }, - "BundleTaskError": { - "locationName": "error", - "type": "structure", - "members": { - "Code": { - "locationName": "code" - }, - "Message": { - "locationName": "message" - } - } - }, - "InstanceId": { - "locationName": "instanceId" - }, - "Progress": { - "locationName": "progress" - }, - "StartTime": { - "locationName": "startTime", - "type": "timestamp" - }, - "State": { - "locationName": "state" - }, - "Storage": { - "shape": "S2b", - "locationName": "storage" - }, - "UpdateTime": { - "locationName": "updateTime", - "type": "timestamp" - } - } - }, - "S2q": { - "type": "list", - "member": { - "locationName": "item", - "type": "structure", - "members": { - "ClientToken": { - "locationName": "clientToken" - }, - "CreateDate": { - "locationName": "createDate", - "type": "timestamp" - }, - "InstanceCounts": { - "locationName": "instanceCounts", - "type": "list", - "member": { - "locationName": "item", - "type": "structure", - "members": { - "InstanceCount": { - "locationName": "instanceCount", - "type": "integer" - }, - "State": { - "locationName": "state" - } - } - } - }, - "PriceSchedules": { - "locationName": "priceSchedules", - "type": "list", - "member": { - "locationName": "item", - "type": "structure", - "members": { - "Active": { - "locationName": "active", - "type": "boolean" - }, - "CurrencyCode": { - "locationName": "currencyCode" - }, - "Price": { - "locationName": "price", - "type": "double" - }, - "Term": { - "locationName": "term", - "type": "long" - } - } - } - }, - "ReservedInstancesId": { - "locationName": "reservedInstancesId" - }, - "ReservedInstancesListingId": { - "locationName": "reservedInstancesListingId" - }, - "Status": { - "locationName": "status" - }, - "StatusMessage": { - "locationName": "statusMessage" - }, - "Tags": { - "shape": "Sl", - "locationName": "tagSet" - }, - "UpdateDate": { - "locationName": "updateDate", - "type": "timestamp" - } - } - } - }, - "S32": { - "type": "list", - "member": { - "locationName": "item" - } - }, - "S3c": { - "type": "list", - "member": { - "locationName": "SpotInstanceRequestId" - } - }, - "S3s": { - "type": "structure", - "members": { - "BgpAsn": { - "locationName": "bgpAsn" - }, - "CustomerGatewayId": { - "locationName": "customerGatewayId" - }, - "IpAddress": { - "locationName": "ipAddress" - }, - "State": { - "locationName": "state" - }, - "Type": { - "locationName": "type" - }, - "Tags": { - "shape": "Sl", - "locationName": "tagSet" - } - } - }, - "S3v": { - "type": "structure", - "members": { - "CidrBlock": { - "locationName": "cidrBlock" - }, - "DhcpOptionsId": { - "locationName": "dhcpOptionsId" - }, - "State": { - "locationName": "state" - }, - "VpcId": { - "locationName": "vpcId" - }, - "InstanceTenancy": { - "locationName": "instanceTenancy" - }, - "Ipv6CidrBlockAssociationSet": { - "locationName": "ipv6CidrBlockAssociationSet", - "type": "list", - "member": { - "shape": "S1h", - "locationName": "item" - } - }, - "CidrBlockAssociationSet": { - "locationName": "cidrBlockAssociationSet", - "type": "list", - "member": { - "shape": "S1k", - "locationName": "item" - } - }, - "IsDefault": { - "locationName": "isDefault", - "type": "boolean" - }, - "Tags": { - "shape": "Sl", - "locationName": "tagSet" - } - } - }, - "S44": { - "type": "structure", - "members": { - "DhcpConfigurations": { - "locationName": "dhcpConfigurationSet", - "type": "list", - "member": { - "locationName": "item", - "type": "structure", - "members": { - "Key": { - "locationName": "key" - }, - "Values": { - "locationName": "valueSet", - "type": "list", - "member": { - "shape": "S48", - "locationName": "item" - } - } - } - } - }, - "DhcpOptionsId": { - "locationName": "dhcpOptionsId" - }, - "Tags": { - "shape": "Sl", - "locationName": "tagSet" - } - } - }, - "S48": { - "type": "structure", - "members": { - "Value": { - "locationName": "value" - } - } - }, - "S4b": { - "type": "structure", - "members": { - "Attachments": { - "shape": "S4c", - "locationName": "attachmentSet" - }, - "EgressOnlyInternetGatewayId": { - "locationName": "egressOnlyInternetGatewayId" - } - } - }, - "S4c": { - "type": "list", - "member": { - "locationName": "item", - "type": "structure", - "members": { - "State": { - "locationName": "state" - }, - "VpcId": { - "locationName": "vpcId" - } - } - } - }, - "S4j": { - "type": "list", - "member": { - "shape": "S4k", - "locationName": "item" - } - }, - "S4k": { - "type": "structure", - "required": [ - "Error" - ], - "members": { - "Error": { - "locationName": "error", - "type": "structure", - "required": [ - "Code", - "Message" - ], - "members": { - "Code": { - "locationName": "code" - }, - "Message": { - "locationName": "message" - } - } - }, - "ResourceId": { - "locationName": "resourceId" - } - } - }, - "S4n": { - "type": "structure", - "members": { - "Bucket": {}, - "Key": {} - } - }, - "S4q": { - "type": "list", - "member": { - "shape": "S4r", - "locationName": "BlockDeviceMapping" - } - }, - "S4r": { - "type": "structure", - "members": { - "DeviceName": { - "locationName": "deviceName" - }, - "VirtualName": { - "locationName": "virtualName" - }, - "Ebs": { - "locationName": "ebs", - "type": "structure", - "members": { - "Encrypted": { - "locationName": "encrypted", - "type": "boolean" - }, - "DeleteOnTermination": { - "locationName": "deleteOnTermination", - "type": "boolean" - }, - "Iops": { - "locationName": "iops", - "type": "integer" - }, - "SnapshotId": { - "locationName": "snapshotId" - }, - "VolumeSize": { - "locationName": "volumeSize", - "type": "integer" - }, - "VolumeType": { - "locationName": "volumeType" - } - } - }, - "NoDevice": { - "locationName": "noDevice" - } - } - }, - "S51": { - "type": "structure", - "members": { - "Description": { - "locationName": "description" - }, - "ExportTaskId": { - "locationName": "exportTaskId" - }, - "ExportToS3Task": { - "locationName": "exportToS3", - "type": "structure", - "members": { - "ContainerFormat": { - "locationName": "containerFormat" - }, - "DiskImageFormat": { - "locationName": "diskImageFormat" - }, - "S3Bucket": { - "locationName": "s3Bucket" - }, - "S3Key": { - "locationName": "s3Key" - } - } - }, - "InstanceExportDetails": { - "locationName": "instanceExport", - "type": "structure", - "members": { - "InstanceId": { - "locationName": "instanceId" - }, - "TargetEnvironment": { - "locationName": "targetEnvironment" - } - } - }, - "State": { - "locationName": "state" - }, - "StatusMessage": { - "locationName": "statusMessage" - } - } - }, - "S57": { - "type": "structure", - "members": { - "Attachments": { - "shape": "S4c", - "locationName": "attachmentSet" - }, - "InternetGatewayId": { - "locationName": "internetGatewayId" - }, - "Tags": { - "shape": "Sl", - "locationName": "tagSet" - } - } - }, - "S5c": { - "type": "structure", - "members": { - "CreateTime": { - "locationName": "createTime", - "type": "timestamp" - }, - "DeleteTime": { - "locationName": "deleteTime", - "type": "timestamp" - }, - "FailureCode": { - "locationName": "failureCode" - }, - "FailureMessage": { - "locationName": "failureMessage" - }, - "NatGatewayAddresses": { - "locationName": "natGatewayAddressSet", - "type": "list", - "member": { - "locationName": "item", - "type": "structure", - "members": { - "AllocationId": { - "locationName": "allocationId" - }, - "NetworkInterfaceId": { - "locationName": "networkInterfaceId" - }, - "PrivateIp": { - "locationName": "privateIp" - }, - "PublicIp": { - "locationName": "publicIp" - } - } - } - }, - "NatGatewayId": { - "locationName": "natGatewayId" - }, - "ProvisionedBandwidth": { - "locationName": "provisionedBandwidth", - "type": "structure", - "members": { - "ProvisionTime": { - "locationName": "provisionTime", - "type": "timestamp" - }, - "Provisioned": { - "locationName": "provisioned" - }, - "RequestTime": { - "locationName": "requestTime", - "type": "timestamp" - }, - "Requested": { - "locationName": "requested" - }, - "Status": { - "locationName": "status" - } - } - }, - "State": { - "locationName": "state" - }, - "SubnetId": { - "locationName": "subnetId" - }, - "VpcId": { - "locationName": "vpcId" - }, - "Tags": { - "shape": "Sl", - "locationName": "tagSet" - } - } - }, - "S5j": { - "type": "structure", - "members": { - "Associations": { - "locationName": "associationSet", - "type": "list", - "member": { - "locationName": "item", - "type": "structure", - "members": { - "NetworkAclAssociationId": { - "locationName": "networkAclAssociationId" - }, - "NetworkAclId": { - "locationName": "networkAclId" - }, - "SubnetId": { - "locationName": "subnetId" - } - } - } - }, - "Entries": { - "locationName": "entrySet", - "type": "list", - "member": { - "locationName": "item", - "type": "structure", - "members": { - "CidrBlock": { - "locationName": "cidrBlock" - }, - "Egress": { - "locationName": "egress", - "type": "boolean" - }, - "IcmpTypeCode": { - "shape": "S5o", - "locationName": "icmpTypeCode" - }, - "Ipv6CidrBlock": { - "locationName": "ipv6CidrBlock" - }, - "PortRange": { - "shape": "S5p", - "locationName": "portRange" - }, - "Protocol": { - "locationName": "protocol" - }, - "RuleAction": { - "locationName": "ruleAction" - }, - "RuleNumber": { - "locationName": "ruleNumber", - "type": "integer" - } - } - } - }, - "IsDefault": { - "locationName": "default", - "type": "boolean" - }, - "NetworkAclId": { - "locationName": "networkAclId" - }, - "Tags": { - "shape": "Sl", - "locationName": "tagSet" - }, - "VpcId": { - "locationName": "vpcId" - } - } - }, - "S5o": { - "type": "structure", - "members": { - "Code": { - "locationName": "code", - "type": "integer" - }, - "Type": { - "locationName": "type", - "type": "integer" - } - } - }, - "S5p": { - "type": "structure", - "members": { - "From": { - "locationName": "from", - "type": "integer" - }, - "To": { - "locationName": "to", - "type": "integer" - } - } - }, - "S5t": { - "type": "list", - "member": { - "locationName": "SecurityGroupId" - } - }, - "S5u": { - "type": "list", - "member": { - "locationName": "item", - "type": "structure", - "members": { - "Ipv6Address": { - "locationName": "ipv6Address" - } - } - } - }, - "S5w": { - "type": "list", - "member": { - "locationName": "item", - "type": "structure", - "required": [ - "PrivateIpAddress" - ], - "members": { - "Primary": { - "locationName": "primary", - "type": "boolean" - }, - "PrivateIpAddress": { - "locationName": "privateIpAddress" - } - } - } - }, - "S5z": { - "type": "structure", - "members": { - "Association": { - "shape": "S60", - "locationName": "association" - }, - "Attachment": { - "shape": "S61", - "locationName": "attachment" - }, - "AvailabilityZone": { - "locationName": "availabilityZone" - }, - "Description": { - "locationName": "description" - }, - "Groups": { - "shape": "S62", - "locationName": "groupSet" - }, - "InterfaceType": { - "locationName": "interfaceType" - }, - "Ipv6Addresses": { - "locationName": "ipv6AddressesSet", - "type": "list", - "member": { - "locationName": "item", - "type": "structure", - "members": { - "Ipv6Address": { - "locationName": "ipv6Address" - } - } - } - }, - "MacAddress": { - "locationName": "macAddress" - }, - "NetworkInterfaceId": { - "locationName": "networkInterfaceId" - }, - "OwnerId": { - "locationName": "ownerId" - }, - "PrivateDnsName": { - "locationName": "privateDnsName" - }, - "PrivateIpAddress": { - "locationName": "privateIpAddress" - }, - "PrivateIpAddresses": { - "locationName": "privateIpAddressesSet", - "type": "list", - "member": { - "locationName": "item", - "type": "structure", - "members": { - "Association": { - "shape": "S60", - "locationName": "association" - }, - "Primary": { - "locationName": "primary", - "type": "boolean" - }, - "PrivateDnsName": { - "locationName": "privateDnsName" - }, - "PrivateIpAddress": { - "locationName": "privateIpAddress" - } - } - } - }, - "RequesterId": { - "locationName": "requesterId" - }, - "RequesterManaged": { - "locationName": "requesterManaged", - "type": "boolean" - }, - "SourceDestCheck": { - "locationName": "sourceDestCheck", - "type": "boolean" - }, - "Status": { - "locationName": "status" - }, - "SubnetId": { - "locationName": "subnetId" - }, - "TagSet": { - "shape": "Sl", - "locationName": "tagSet" - }, - "VpcId": { - "locationName": "vpcId" - } - } - }, - "S60": { - "type": "structure", - "members": { - "AllocationId": { - "locationName": "allocationId" - }, - "AssociationId": { - "locationName": "associationId" - }, - "IpOwnerId": { - "locationName": "ipOwnerId" - }, - "PublicDnsName": { - "locationName": "publicDnsName" - }, - "PublicIp": { - "locationName": "publicIp" - } - } - }, - "S61": { - "type": "structure", - "members": { - "AttachTime": { - "locationName": "attachTime", - "type": "timestamp" - }, - "AttachmentId": { - "locationName": "attachmentId" - }, - "DeleteOnTermination": { - "locationName": "deleteOnTermination", - "type": "boolean" - }, - "DeviceIndex": { - "locationName": "deviceIndex", - "type": "integer" - }, - "InstanceId": { - "locationName": "instanceId" - }, - "InstanceOwnerId": { - "locationName": "instanceOwnerId" - }, - "Status": { - "locationName": "status" - } - } - }, - "S62": { - "type": "list", - "member": { - "locationName": "item", - "type": "structure", - "members": { - "GroupName": { - "locationName": "groupName" - }, - "GroupId": { - "locationName": "groupId" - } - } - } - }, - "S6d": { - "type": "structure", - "members": { - "NetworkInterfacePermissionId": { - "locationName": "networkInterfacePermissionId" - }, - "NetworkInterfaceId": { - "locationName": "networkInterfaceId" - }, - "AwsAccountId": { - "locationName": "awsAccountId" - }, - "AwsService": { - "locationName": "awsService" - }, - "Permission": { - "locationName": "permission" - }, - "PermissionState": { - "locationName": "permissionState", - "type": "structure", - "members": { - "State": { - "locationName": "state" - }, - "StatusMessage": { - "locationName": "statusMessage" - } - } - } - } - }, - "S6q": { - "type": "structure", - "members": { - "Associations": { - "locationName": "associationSet", - "type": "list", - "member": { - "locationName": "item", - "type": "structure", - "members": { - "Main": { - "locationName": "main", - "type": "boolean" - }, - "RouteTableAssociationId": { - "locationName": "routeTableAssociationId" - }, - "RouteTableId": { - "locationName": "routeTableId" - }, - "SubnetId": { - "locationName": "subnetId" - } - } - } - }, - "PropagatingVgws": { - "locationName": "propagatingVgwSet", - "type": "list", - "member": { - "locationName": "item", - "type": "structure", - "members": { - "GatewayId": { - "locationName": "gatewayId" - } - } - } - }, - "RouteTableId": { - "locationName": "routeTableId" - }, - "Routes": { - "locationName": "routeSet", - "type": "list", - "member": { - "locationName": "item", - "type": "structure", - "members": { - "DestinationCidrBlock": { - "locationName": "destinationCidrBlock" - }, - "DestinationIpv6CidrBlock": { - "locationName": "destinationIpv6CidrBlock" - }, - "DestinationPrefixListId": { - "locationName": "destinationPrefixListId" - }, - "EgressOnlyInternetGatewayId": { - "locationName": "egressOnlyInternetGatewayId" - }, - "GatewayId": { - "locationName": "gatewayId" - }, - "InstanceId": { - "locationName": "instanceId" - }, - "InstanceOwnerId": { - "locationName": "instanceOwnerId" - }, - "NatGatewayId": { - "locationName": "natGatewayId" - }, - "NetworkInterfaceId": { - "locationName": "networkInterfaceId" - }, - "Origin": { - "locationName": "origin" - }, - "State": { - "locationName": "state" - }, - "VpcPeeringConnectionId": { - "locationName": "vpcPeeringConnectionId" - } - } - } - }, - "Tags": { - "shape": "Sl", - "locationName": "tagSet" - }, - "VpcId": { - "locationName": "vpcId" - } - } - }, - "S72": { - "type": "structure", - "members": { - "DataEncryptionKeyId": { - "locationName": "dataEncryptionKeyId" - }, - "Description": { - "locationName": "description" - }, - "Encrypted": { - "locationName": "encrypted", - "type": "boolean" - }, - "KmsKeyId": { - "locationName": "kmsKeyId" - }, - "OwnerId": { - "locationName": "ownerId" - }, - "Progress": { - "locationName": "progress" - }, - "SnapshotId": { - "locationName": "snapshotId" - }, - "StartTime": { - "locationName": "startTime", - "type": "timestamp" - }, - "State": { - "locationName": "status" - }, - "StateMessage": { - "locationName": "statusMessage" - }, - "VolumeId": { - "locationName": "volumeId" - }, - "VolumeSize": { - "locationName": "volumeSize", - "type": "integer" - }, - "OwnerAlias": { - "locationName": "ownerAlias" - }, - "Tags": { - "shape": "Sl", - "locationName": "tagSet" - } - } - }, - "S76": { - "type": "structure", - "members": { - "Bucket": { - "locationName": "bucket" - }, - "Fault": { - "shape": "S77", - "locationName": "fault" - }, - "OwnerId": { - "locationName": "ownerId" - }, - "Prefix": { - "locationName": "prefix" - }, - "State": { - "locationName": "state" - } - } - }, - "S77": { - "type": "structure", - "members": { - "Code": { - "locationName": "code" - }, - "Message": { - "locationName": "message" - } - } - }, - "S7b": { - "type": "structure", - "members": { - "AvailabilityZone": { - "locationName": "availabilityZone" - }, - "AvailableIpAddressCount": { - "locationName": "availableIpAddressCount", - "type": "integer" - }, - "CidrBlock": { - "locationName": "cidrBlock" - }, - "DefaultForAz": { - "locationName": "defaultForAz", - "type": "boolean" - }, - "MapPublicIpOnLaunch": { - "locationName": "mapPublicIpOnLaunch", - "type": "boolean" - }, - "State": { - "locationName": "state" - }, - "SubnetId": { - "locationName": "subnetId" - }, - "VpcId": { - "locationName": "vpcId" - }, - "AssignIpv6AddressOnCreation": { - "locationName": "assignIpv6AddressOnCreation", - "type": "boolean" - }, - "Ipv6CidrBlockAssociationSet": { - "locationName": "ipv6CidrBlockAssociationSet", - "type": "list", - "member": { - "shape": "S1c", - "locationName": "item" - } - }, - "Tags": { - "shape": "Sl", - "locationName": "tagSet" - } - } - }, - "S7f": { - "type": "list", - "member": {} - }, - "S7h": { - "type": "list", - "member": { - "locationName": "item", - "type": "structure", - "members": { - "ResourceType": { - "locationName": "resourceType" - }, - "Tags": { - "shape": "Sl", - "locationName": "Tag" - } - } - } - }, - "S7k": { - "type": "structure", - "members": { - "Attachments": { - "locationName": "attachmentSet", - "type": "list", - "member": { - "shape": "S1s", - "locationName": "item" - } - }, - "AvailabilityZone": { - "locationName": "availabilityZone" - }, - "CreateTime": { - "locationName": "createTime", - "type": "timestamp" - }, - "Encrypted": { - "locationName": "encrypted", - "type": "boolean" - }, - "KmsKeyId": { - "locationName": "kmsKeyId" - }, - "Size": { - "locationName": "size", - "type": "integer" - }, - "SnapshotId": { - "locationName": "snapshotId" - }, - "State": { - "locationName": "status" - }, - "VolumeId": { - "locationName": "volumeId" - }, - "Iops": { - "locationName": "iops", - "type": "integer" - }, - "Tags": { - "shape": "Sl", - "locationName": "tagSet" - }, - "VolumeType": { - "locationName": "volumeType" - } - } - }, - "S7r": { - "type": "structure", - "members": { - "CreationTimestamp": { - "locationName": "creationTimestamp", - "type": "timestamp" - }, - "PolicyDocument": { - "locationName": "policyDocument" - }, - "RouteTableIds": { - "shape": "S32", - "locationName": "routeTableIdSet" - }, - "ServiceName": { - "locationName": "serviceName" - }, - "State": { - "locationName": "state" - }, - "VpcEndpointId": { - "locationName": "vpcEndpointId" - }, - "VpcId": { - "locationName": "vpcId" - } - } - }, - "S80": { - "type": "structure", - "members": { - "CustomerGatewayConfiguration": { - "locationName": "customerGatewayConfiguration" - }, - "CustomerGatewayId": { - "locationName": "customerGatewayId" - }, - "Category": { - "locationName": "category" - }, - "State": { - "locationName": "state" - }, - "Type": { - "locationName": "type" - }, - "VpnConnectionId": { - "locationName": "vpnConnectionId" - }, - "VpnGatewayId": { - "locationName": "vpnGatewayId" - }, - "Options": { - "locationName": "options", - "type": "structure", - "members": { - "StaticRoutesOnly": { - "locationName": "staticRoutesOnly", - "type": "boolean" - } - } - }, - "Routes": { - "locationName": "routes", - "type": "list", - "member": { - "locationName": "item", - "type": "structure", - "members": { - "DestinationCidrBlock": { - "locationName": "destinationCidrBlock" - }, - "Source": { - "locationName": "source" - }, - "State": { - "locationName": "state" - } - } - } - }, - "Tags": { - "shape": "Sl", - "locationName": "tagSet" - }, - "VgwTelemetry": { - "locationName": "vgwTelemetry", - "type": "list", - "member": { - "locationName": "item", - "type": "structure", - "members": { - "AcceptedRouteCount": { - "locationName": "acceptedRouteCount", - "type": "integer" - }, - "LastStatusChange": { - "locationName": "lastStatusChange", - "type": "timestamp" - }, - "OutsideIpAddress": { - "locationName": "outsideIpAddress" - }, - "Status": { - "locationName": "status" - }, - "StatusMessage": { - "locationName": "statusMessage" - } - } - } - } - } - }, - "S8c": { - "type": "structure", - "members": { - "AvailabilityZone": { - "locationName": "availabilityZone" - }, - "State": { - "locationName": "state" - }, - "Type": { - "locationName": "type" - }, - "VpcAttachments": { - "locationName": "attachments", - "type": "list", - "member": { - "shape": "S1w", - "locationName": "item" - } - }, - "VpnGatewayId": { - "locationName": "vpnGatewayId" - }, - "AmazonSideAsn": { - "locationName": "amazonSideAsn", - "type": "long" - }, - "Tags": { - "shape": "Sl", - "locationName": "tagSet" - } - } - }, - "S9m": { - "type": "list", - "member": { - "locationName": "Filter", - "type": "structure", - "members": { - "Name": {}, - "Values": { - "shape": "S32", - "locationName": "Value" - } - } - } - }, - "Sa6": { - "type": "list", - "member": { - "locationName": "InstanceId" - } - }, - "Sae": { - "type": "structure", - "required": [ - "ConversionTaskId", - "State" - ], - "members": { - "ConversionTaskId": { - "locationName": "conversionTaskId" - }, - "ExpirationTime": { - "locationName": "expirationTime" - }, - "ImportInstance": { - "locationName": "importInstance", - "type": "structure", - "required": [ - "Volumes" - ], - "members": { - "Description": { - "locationName": "description" - }, - "InstanceId": { - "locationName": "instanceId" - }, - "Platform": { - "locationName": "platform" - }, - "Volumes": { - "locationName": "volumes", - "type": "list", - "member": { - "locationName": "item", - "type": "structure", - "required": [ - "AvailabilityZone", - "BytesConverted", - "Image", - "Status", - "Volume" - ], - "members": { - "AvailabilityZone": { - "locationName": "availabilityZone" - }, - "BytesConverted": { - "locationName": "bytesConverted", - "type": "long" - }, - "Description": { - "locationName": "description" - }, - "Image": { - "shape": "Saj", - "locationName": "image" - }, - "Status": { - "locationName": "status" - }, - "StatusMessage": { - "locationName": "statusMessage" - }, - "Volume": { - "shape": "Sak", - "locationName": "volume" - } - } - } - } - } - }, - "ImportVolume": { - "locationName": "importVolume", - "type": "structure", - "required": [ - "AvailabilityZone", - "BytesConverted", - "Image", - "Volume" - ], - "members": { - "AvailabilityZone": { - "locationName": "availabilityZone" - }, - "BytesConverted": { - "locationName": "bytesConverted", - "type": "long" - }, - "Description": { - "locationName": "description" - }, - "Image": { - "shape": "Saj", - "locationName": "image" - }, - "Volume": { - "shape": "Sak", - "locationName": "volume" - } - } - }, - "State": { - "locationName": "state" - }, - "StatusMessage": { - "locationName": "statusMessage" - }, - "Tags": { - "shape": "Sl", - "locationName": "tagSet" - } - } - }, - "Saj": { - "type": "structure", - "required": [ - "Format", - "ImportManifestUrl", - "Size" - ], - "members": { - "Checksum": { - "locationName": "checksum" - }, - "Format": { - "locationName": "format" - }, - "ImportManifestUrl": { - "locationName": "importManifestUrl" - }, - "Size": { - "locationName": "size", - "type": "long" - } - } - }, - "Sak": { - "type": "structure", - "required": [ - "Id" - ], - "members": { - "Id": { - "locationName": "id" - }, - "Size": { - "locationName": "size", - "type": "long" - } - } - }, - "Sbi": { - "type": "structure", - "members": { - "FpgaImageId": { - "locationName": "fpgaImageId" - }, - "Name": { - "locationName": "name" - }, - "Description": { - "locationName": "description" - }, - "LoadPermissions": { - "locationName": "loadPermissions", - "type": "list", - "member": { - "locationName": "item", - "type": "structure", - "members": { - "UserId": { - "locationName": "userId" - }, - "Group": { - "locationName": "group" - } - } - } - }, - "ProductCodes": { - "shape": "Sbm", - "locationName": "productCodes" - } - } - }, - "Sbm": { - "type": "list", - "member": { - "locationName": "item", - "type": "structure", - "members": { - "ProductCodeId": { - "locationName": "productCode" - }, - "ProductCodeType": { - "locationName": "type" - } - } - } - }, - "Sbr": { - "type": "list", - "member": { - "locationName": "Owner" - } - }, - "Sca": { - "type": "list", - "member": { - "locationName": "item" - } - }, - "Scd": { - "type": "list", - "member": { - "locationName": "item" - } - }, - "Scu": { - "type": "list", - "member": { - "locationName": "item", - "type": "structure", - "members": { - "Deadline": { - "locationName": "deadline", - "type": "timestamp" - }, - "Resource": { - "locationName": "resource" - }, - "UseLongIds": { - "locationName": "useLongIds", - "type": "boolean" - } - } - } - }, - "Sd1": { - "type": "list", - "member": { - "shape": "S4r", - "locationName": "item" - } - }, - "Sd2": { - "type": "list", - "member": { - "locationName": "item", - "type": "structure", - "members": { - "Group": { - "locationName": "group" - }, - "UserId": { - "locationName": "userId" - } - } - } - }, - "Sdf": { - "type": "structure", - "members": { - "Code": { - "locationName": "code" - }, - "Message": { - "locationName": "message" - } - } - }, - "Sdi": { - "type": "list", - "member": { - "locationName": "ImportTaskId" - } - }, - "Sdm": { - "type": "list", - "member": { - "locationName": "item", - "type": "structure", - "members": { - "Description": { - "locationName": "description" - }, - "DeviceName": { - "locationName": "deviceName" - }, - "DiskImageSize": { - "locationName": "diskImageSize", - "type": "double" - }, - "Format": { - "locationName": "format" - }, - "Progress": { - "locationName": "progress" - }, - "SnapshotId": { - "locationName": "snapshotId" - }, - "Status": { - "locationName": "status" - }, - "StatusMessage": { - "locationName": "statusMessage" - }, - "Url": { - "locationName": "url" - }, - "UserBucket": { - "shape": "Sdo", - "locationName": "userBucket" - } - } - } - }, - "Sdo": { - "type": "structure", - "members": { - "S3Bucket": { - "locationName": "s3Bucket" - }, - "S3Key": { - "locationName": "s3Key" - } - } - }, - "Sdt": { - "type": "structure", - "members": { - "Description": { - "locationName": "description" - }, - "DiskImageSize": { - "locationName": "diskImageSize", - "type": "double" - }, - "Format": { - "locationName": "format" - }, - "Progress": { - "locationName": "progress" - }, - "SnapshotId": { - "locationName": "snapshotId" - }, - "Status": { - "locationName": "status" - }, - "StatusMessage": { - "locationName": "statusMessage" - }, - "Url": { - "locationName": "url" - }, - "UserBucket": { - "shape": "Sdo", - "locationName": "userBucket" - } - } - }, - "Sdx": { - "type": "list", - "member": { - "locationName": "item", - "type": "structure", - "members": { - "DeviceName": { - "locationName": "deviceName" - }, - "Ebs": { - "locationName": "ebs", - "type": "structure", - "members": { - "AttachTime": { - "locationName": "attachTime", - "type": "timestamp" - }, - "DeleteOnTermination": { - "locationName": "deleteOnTermination", - "type": "boolean" - }, - "Status": { - "locationName": "status" - }, - "VolumeId": { - "locationName": "volumeId" - } - } - } - } - } - }, - "Se0": { - "type": "structure", - "members": { - "Value": { - "locationName": "value", - "type": "boolean" - } - } - }, - "Se8": { - "type": "structure", - "members": { - "Code": { - "locationName": "code", - "type": "integer" - }, - "Name": { - "locationName": "name" - } - } - }, - "Sea": { - "type": "structure", - "members": { - "Details": { - "locationName": "details", - "type": "list", - "member": { - "locationName": "item", - "type": "structure", - "members": { - "ImpairedSince": { - "locationName": "impairedSince", - "type": "timestamp" - }, - "Name": { - "locationName": "name" - }, - "Status": { - "locationName": "status" - } - } - } - }, - "Status": { - "locationName": "status" - } - } - }, - "Sej": { - "type": "structure", - "members": { - "Groups": { - "shape": "S62", - "locationName": "groupSet" - }, - "Instances": { - "locationName": "instancesSet", - "type": "list", - "member": { - "locationName": "item", - "type": "structure", - "members": { - "AmiLaunchIndex": { - "locationName": "amiLaunchIndex", - "type": "integer" - }, - "ImageId": { - "locationName": "imageId" - }, - "InstanceId": { - "locationName": "instanceId" - }, - "InstanceType": { - "locationName": "instanceType" - }, - "KernelId": { - "locationName": "kernelId" - }, - "KeyName": { - "locationName": "keyName" - }, - "LaunchTime": { - "locationName": "launchTime", - "type": "timestamp" - }, - "Monitoring": { - "shape": "Sen", - "locationName": "monitoring" - }, - "Placement": { - "shape": "Sep", - "locationName": "placement" - }, - "Platform": { - "locationName": "platform" - }, - "PrivateDnsName": { - "locationName": "privateDnsName" - }, - "PrivateIpAddress": { - "locationName": "privateIpAddress" - }, - "ProductCodes": { - "shape": "Sbm", - "locationName": "productCodes" - }, - "PublicDnsName": { - "locationName": "dnsName" - }, - "PublicIpAddress": { - "locationName": "ipAddress" - }, - "RamdiskId": { - "locationName": "ramdiskId" - }, - "State": { - "shape": "Se8", - "locationName": "instanceState" - }, - "StateTransitionReason": { - "locationName": "reason" - }, - "SubnetId": { - "locationName": "subnetId" - }, - "VpcId": { - "locationName": "vpcId" - }, - "Architecture": { - "locationName": "architecture" - }, - "BlockDeviceMappings": { - "shape": "Sdx", - "locationName": "blockDeviceMapping" - }, - "ClientToken": { - "locationName": "clientToken" - }, - "EbsOptimized": { - "locationName": "ebsOptimized", - "type": "boolean" - }, - "EnaSupport": { - "locationName": "enaSupport", - "type": "boolean" - }, - "Hypervisor": { - "locationName": "hypervisor" - }, - "IamInstanceProfile": { - "shape": "S16", - "locationName": "iamInstanceProfile" - }, - "InstanceLifecycle": { - "locationName": "instanceLifecycle" - }, - "ElasticGpuAssociations": { - "locationName": "elasticGpuAssociationSet", - "type": "list", - "member": { - "locationName": "item", - "type": "structure", - "members": { - "ElasticGpuId": { - "locationName": "elasticGpuId" - }, - "ElasticGpuAssociationId": { - "locationName": "elasticGpuAssociationId" - }, - "ElasticGpuAssociationState": { - "locationName": "elasticGpuAssociationState" - }, - "ElasticGpuAssociationTime": { - "locationName": "elasticGpuAssociationTime" - } - } - } - }, - "NetworkInterfaces": { - "locationName": "networkInterfaceSet", - "type": "list", - "member": { - "locationName": "item", - "type": "structure", - "members": { - "Association": { - "shape": "Sev", - "locationName": "association" - }, - "Attachment": { - "locationName": "attachment", - "type": "structure", - "members": { - "AttachTime": { - "locationName": "attachTime", - "type": "timestamp" - }, - "AttachmentId": { - "locationName": "attachmentId" - }, - "DeleteOnTermination": { - "locationName": "deleteOnTermination", - "type": "boolean" - }, - "DeviceIndex": { - "locationName": "deviceIndex", - "type": "integer" - }, - "Status": { - "locationName": "status" - } - } - }, - "Description": { - "locationName": "description" - }, - "Groups": { - "shape": "S62", - "locationName": "groupSet" - }, - "Ipv6Addresses": { - "shape": "S5u", - "locationName": "ipv6AddressesSet" - }, - "MacAddress": { - "locationName": "macAddress" - }, - "NetworkInterfaceId": { - "locationName": "networkInterfaceId" - }, - "OwnerId": { - "locationName": "ownerId" - }, - "PrivateDnsName": { - "locationName": "privateDnsName" - }, - "PrivateIpAddress": { - "locationName": "privateIpAddress" - }, - "PrivateIpAddresses": { - "locationName": "privateIpAddressesSet", - "type": "list", - "member": { - "locationName": "item", - "type": "structure", - "members": { - "Association": { - "shape": "Sev", - "locationName": "association" - }, - "Primary": { - "locationName": "primary", - "type": "boolean" - }, - "PrivateDnsName": { - "locationName": "privateDnsName" - }, - "PrivateIpAddress": { - "locationName": "privateIpAddress" - } - } - } - }, - "SourceDestCheck": { - "locationName": "sourceDestCheck", - "type": "boolean" - }, - "Status": { - "locationName": "status" - }, - "SubnetId": { - "locationName": "subnetId" - }, - "VpcId": { - "locationName": "vpcId" - } - } - } - }, - "RootDeviceName": { - "locationName": "rootDeviceName" - }, - "RootDeviceType": { - "locationName": "rootDeviceType" - }, - "SecurityGroups": { - "shape": "S62", - "locationName": "groupSet" - }, - "SourceDestCheck": { - "locationName": "sourceDestCheck", - "type": "boolean" - }, - "SpotInstanceRequestId": { - "locationName": "spotInstanceRequestId" - }, - "SriovNetSupport": { - "locationName": "sriovNetSupport" - }, - "StateReason": { - "shape": "Sdf", - "locationName": "stateReason" - }, - "Tags": { - "shape": "Sl", - "locationName": "tagSet" - }, - "VirtualizationType": { - "locationName": "virtualizationType" - } - } - } - }, - "OwnerId": { - "locationName": "ownerId" - }, - "RequesterId": { - "locationName": "requesterId" - }, - "ReservationId": { - "locationName": "reservationId" - } - } - }, - "Sen": { - "type": "structure", - "members": { - "State": { - "locationName": "state" - } - } - }, - "Sep": { - "type": "structure", - "members": { - "AvailabilityZone": { - "locationName": "availabilityZone" - }, - "Affinity": { - "locationName": "affinity" - }, - "GroupName": { - "locationName": "groupName" - }, - "HostId": { - "locationName": "hostId" - }, - "Tenancy": { - "locationName": "tenancy" - }, - "SpreadDomain": { - "locationName": "spreadDomain" - } - } - }, - "Sev": { - "type": "structure", - "members": { - "IpOwnerId": { - "locationName": "ipOwnerId" - }, - "PublicDnsName": { - "locationName": "publicDnsName" - }, - "PublicIp": { - "locationName": "publicIp" - } - } - }, - "Sga": { - "type": "list", - "member": { - "locationName": "ReservedInstancesId" - } - }, - "Sgi": { - "type": "list", - "member": { - "locationName": "item", - "type": "structure", - "members": { - "Amount": { - "locationName": "amount", - "type": "double" - }, - "Frequency": { - "locationName": "frequency" - } - } - } - }, - "Sgv": { - "type": "structure", - "members": { - "AvailabilityZone": { - "locationName": "availabilityZone" - }, - "InstanceCount": { - "locationName": "instanceCount", - "type": "integer" - }, - "InstanceType": { - "locationName": "instanceType" - }, - "Platform": { - "locationName": "platform" - }, - "Scope": { - "locationName": "scope" - } - } - }, - "Shf": { - "type": "structure", - "members": { - "Frequency": { - "locationName": "frequency" - }, - "Interval": { - "locationName": "interval", - "type": "integer" - }, - "OccurrenceDaySet": { - "locationName": "occurrenceDaySet", - "type": "list", - "member": { - "locationName": "item", - "type": "integer" - } - }, - "OccurrenceRelativeToEnd": { - "locationName": "occurrenceRelativeToEnd", - "type": "boolean" - }, - "OccurrenceUnit": { - "locationName": "occurrenceUnit" - } - } - }, - "Shm": { - "type": "structure", - "members": { - "AvailabilityZone": { - "locationName": "availabilityZone" - }, - "CreateDate": { - "locationName": "createDate", - "type": "timestamp" - }, - "HourlyPrice": { - "locationName": "hourlyPrice" - }, - "InstanceCount": { - "locationName": "instanceCount", - "type": "integer" - }, - "InstanceType": { - "locationName": "instanceType" - }, - "NetworkPlatform": { - "locationName": "networkPlatform" - }, - "NextSlotStartTime": { - "locationName": "nextSlotStartTime", - "type": "timestamp" - }, - "Platform": { - "locationName": "platform" - }, - "PreviousSlotEndTime": { - "locationName": "previousSlotEndTime", - "type": "timestamp" - }, - "Recurrence": { - "shape": "Shf", - "locationName": "recurrence" - }, - "ScheduledInstanceId": { - "locationName": "scheduledInstanceId" - }, - "SlotDurationInHours": { - "locationName": "slotDurationInHours", - "type": "integer" - }, - "TermEndDate": { - "locationName": "termEndDate", - "type": "timestamp" - }, - "TermStartDate": { - "locationName": "termStartDate", - "type": "timestamp" - }, - "TotalScheduledInstanceHours": { - "locationName": "totalScheduledInstanceHours", - "type": "integer" - } - } - }, - "Sht": { - "type": "list", - "member": { - "locationName": "GroupName" - } - }, - "Si0": { - "type": "list", - "member": { - "locationName": "item", - "type": "structure", - "members": { - "Group": { - "locationName": "group" - }, - "UserId": { - "locationName": "userId" - } - } - } - }, - "Sip": { - "type": "structure", - "required": [ - "IamFleetRole", - "LaunchSpecifications", - "SpotPrice", - "TargetCapacity" - ], - "members": { - "AllocationStrategy": { - "locationName": "allocationStrategy" - }, - "ClientToken": { - "locationName": "clientToken" - }, - "ExcessCapacityTerminationPolicy": { - "locationName": "excessCapacityTerminationPolicy" - }, - "FulfilledCapacity": { - "locationName": "fulfilledCapacity", - "type": "double" - }, - "IamFleetRole": { - "locationName": "iamFleetRole" - }, - "LaunchSpecifications": { - "locationName": "launchSpecifications", - "type": "list", - "member": { - "locationName": "item", - "type": "structure", - "members": { - "SecurityGroups": { - "shape": "S62", - "locationName": "groupSet" - }, - "AddressingType": { - "locationName": "addressingType" - }, - "BlockDeviceMappings": { - "shape": "Sd1", - "locationName": "blockDeviceMapping" - }, - "EbsOptimized": { - "locationName": "ebsOptimized", - "type": "boolean" - }, - "IamInstanceProfile": { - "shape": "S13", - "locationName": "iamInstanceProfile" - }, - "ImageId": { - "locationName": "imageId" - }, - "InstanceType": { - "locationName": "instanceType" - }, - "KernelId": { - "locationName": "kernelId" - }, - "KeyName": { - "locationName": "keyName" - }, - "Monitoring": { - "locationName": "monitoring", - "type": "structure", - "members": { - "Enabled": { - "locationName": "enabled", - "type": "boolean" - } - } - }, - "NetworkInterfaces": { - "shape": "Siv", - "locationName": "networkInterfaceSet" - }, - "Placement": { - "shape": "Six", - "locationName": "placement" - }, - "RamdiskId": { - "locationName": "ramdiskId" - }, - "SpotPrice": { - "locationName": "spotPrice" - }, - "SubnetId": { - "locationName": "subnetId" - }, - "UserData": { - "locationName": "userData" - }, - "WeightedCapacity": { - "locationName": "weightedCapacity", - "type": "double" - }, - "TagSpecifications": { - "locationName": "tagSpecificationSet", - "type": "list", - "member": { - "locationName": "item", - "type": "structure", - "members": { - "ResourceType": { - "locationName": "resourceType" - }, - "Tags": { - "shape": "Sl", - "locationName": "tag" - } - } - } - } - } - } - }, - "SpotPrice": { - "locationName": "spotPrice" - }, - "TargetCapacity": { - "locationName": "targetCapacity", - "type": "integer" - }, - "TerminateInstancesWithExpiration": { - "locationName": "terminateInstancesWithExpiration", - "type": "boolean" - }, - "Type": { - "locationName": "type" - }, - "ValidFrom": { - "locationName": "validFrom", - "type": "timestamp" - }, - "ValidUntil": { - "locationName": "validUntil", - "type": "timestamp" - }, - "ReplaceUnhealthyInstances": { - "locationName": "replaceUnhealthyInstances", - "type": "boolean" - }, - "InstanceInterruptionBehavior": { - "locationName": "instanceInterruptionBehavior" - } - } - }, - "Siv": { - "type": "list", - "member": { - "locationName": "item", - "type": "structure", - "members": { - "AssociatePublicIpAddress": { - "locationName": "associatePublicIpAddress", - "type": "boolean" - }, - "DeleteOnTermination": { - "locationName": "deleteOnTermination", - "type": "boolean" - }, - "Description": { - "locationName": "description" - }, - "DeviceIndex": { - "locationName": "deviceIndex", - "type": "integer" - }, - "Groups": { - "shape": "S5t", - "locationName": "SecurityGroupId" - }, - "Ipv6AddressCount": { - "locationName": "ipv6AddressCount", - "type": "integer" - }, - "Ipv6Addresses": { - "shape": "S5u", - "locationName": "ipv6AddressesSet", - "queryName": "Ipv6Addresses" - }, - "NetworkInterfaceId": { - "locationName": "networkInterfaceId" - }, - "PrivateIpAddress": { - "locationName": "privateIpAddress" - }, - "PrivateIpAddresses": { - "shape": "S5w", - "locationName": "privateIpAddressesSet", - "queryName": "PrivateIpAddresses" - }, - "SecondaryPrivateIpAddressCount": { - "locationName": "secondaryPrivateIpAddressCount", - "type": "integer" - }, - "SubnetId": { - "locationName": "subnetId" - } - } - } - }, - "Six": { - "type": "structure", - "members": { - "AvailabilityZone": { - "locationName": "availabilityZone" - }, - "GroupName": { - "locationName": "groupName" - }, - "Tenancy": { - "locationName": "tenancy" - } - } - }, - "Sj4": { - "type": "list", - "member": { - "locationName": "item", - "type": "structure", - "members": { - "ActualBlockHourlyPrice": { - "locationName": "actualBlockHourlyPrice" - }, - "AvailabilityZoneGroup": { - "locationName": "availabilityZoneGroup" - }, - "BlockDurationMinutes": { - "locationName": "blockDurationMinutes", - "type": "integer" - }, - "CreateTime": { - "locationName": "createTime", - "type": "timestamp" - }, - "Fault": { - "shape": "S77", - "locationName": "fault" - }, - "InstanceId": { - "locationName": "instanceId" - }, - "LaunchGroup": { - "locationName": "launchGroup" - }, - "LaunchSpecification": { - "locationName": "launchSpecification", - "type": "structure", - "members": { - "UserData": { - "locationName": "userData" - }, - "SecurityGroups": { - "shape": "S62", - "locationName": "groupSet" - }, - "AddressingType": { - "locationName": "addressingType" - }, - "BlockDeviceMappings": { - "shape": "Sd1", - "locationName": "blockDeviceMapping" - }, - "EbsOptimized": { - "locationName": "ebsOptimized", - "type": "boolean" - }, - "IamInstanceProfile": { - "shape": "S13", - "locationName": "iamInstanceProfile" - }, - "ImageId": { - "locationName": "imageId" - }, - "InstanceType": { - "locationName": "instanceType" - }, - "KernelId": { - "locationName": "kernelId" - }, - "KeyName": { - "locationName": "keyName" - }, - "NetworkInterfaces": { - "shape": "Siv", - "locationName": "networkInterfaceSet" - }, - "Placement": { - "shape": "Six", - "locationName": "placement" - }, - "RamdiskId": { - "locationName": "ramdiskId" - }, - "SubnetId": { - "locationName": "subnetId" - }, - "Monitoring": { - "shape": "Sj7", - "locationName": "monitoring" - } - } - }, - "LaunchedAvailabilityZone": { - "locationName": "launchedAvailabilityZone" - }, - "ProductDescription": { - "locationName": "productDescription" - }, - "SpotInstanceRequestId": { - "locationName": "spotInstanceRequestId" - }, - "SpotPrice": { - "locationName": "spotPrice" - }, - "State": { - "locationName": "state" - }, - "Status": { - "locationName": "status", - "type": "structure", - "members": { - "Code": { - "locationName": "code" - }, - "Message": { - "locationName": "message" - }, - "UpdateTime": { - "locationName": "updateTime", - "type": "timestamp" - } - } - }, - "Tags": { - "shape": "Sl", - "locationName": "tagSet" - }, - "Type": { - "locationName": "type" - }, - "ValidFrom": { - "locationName": "validFrom", - "type": "timestamp" - }, - "ValidUntil": { - "locationName": "validUntil", - "type": "timestamp" - }, - "InstanceInterruptionBehavior": { - "locationName": "instanceInterruptionBehavior" - } - } - } - }, - "Sj7": { - "type": "structure", - "required": [ - "Enabled" - ], - "members": { - "Enabled": { - "locationName": "enabled", - "type": "boolean" - } - } - }, - "Sjl": { - "type": "list", - "member": { - "locationName": "item", - "type": "structure", - "members": { - "FromPort": { - "locationName": "fromPort", - "type": "integer" - }, - "IpProtocol": { - "locationName": "ipProtocol" - }, - "IpRanges": { - "locationName": "ipRanges", - "type": "list", - "member": { - "locationName": "item" - } - }, - "PrefixListIds": { - "locationName": "prefixListIds", - "type": "list", - "member": { - "locationName": "item" - } - }, - "ToPort": { - "locationName": "toPort", - "type": "integer" - }, - "UserIdGroupPairs": { - "locationName": "groups", - "type": "list", - "member": { - "shape": "S28", - "locationName": "item" - } - } - } - } - }, - "Sk2": { - "type": "list", - "member": { - "locationName": "VolumeId" - } - }, - "Skl": { - "type": "structure", - "members": { - "VolumeId": { - "locationName": "volumeId" - }, - "ModificationState": { - "locationName": "modificationState" - }, - "StatusMessage": { - "locationName": "statusMessage" - }, - "TargetSize": { - "locationName": "targetSize", - "type": "integer" - }, - "TargetIops": { - "locationName": "targetIops", - "type": "integer" - }, - "TargetVolumeType": { - "locationName": "targetVolumeType" - }, - "OriginalSize": { - "locationName": "originalSize", - "type": "integer" - }, - "OriginalIops": { - "locationName": "originalIops", - "type": "integer" - }, - "OriginalVolumeType": { - "locationName": "originalVolumeType" - }, - "Progress": { - "locationName": "progress", - "type": "long" - }, - "StartTime": { - "locationName": "startTime", - "type": "timestamp" - }, - "EndTime": { - "locationName": "endTime", - "type": "timestamp" - } - } - }, - "Skr": { - "type": "list", - "member": { - "locationName": "VpcId" - } - }, - "Smd": { - "type": "list", - "member": { - "locationName": "item" - } - }, - "Smf": { - "type": "list", - "member": { - "locationName": "item", - "type": "structure", - "members": { - "CurrencyCode": { - "locationName": "currencyCode" - }, - "Duration": { - "locationName": "duration", - "type": "integer" - }, - "HostIdSet": { - "shape": "Sca", - "locationName": "hostIdSet" - }, - "HostReservationId": { - "locationName": "hostReservationId" - }, - "HourlyPrice": { - "locationName": "hourlyPrice" - }, - "InstanceFamily": { - "locationName": "instanceFamily" - }, - "PaymentOption": { - "locationName": "paymentOption" - }, - "UpfrontPrice": { - "locationName": "upfrontPrice" - } - } - } - }, - "Sml": { - "type": "structure", - "members": { - "HourlyPrice": { - "locationName": "hourlyPrice" - }, - "RemainingTotalValue": { - "locationName": "remainingTotalValue" - }, - "RemainingUpfrontValue": { - "locationName": "remainingUpfrontValue" - } - } - }, - "Sms": { - "type": "structure", - "members": { - "Comment": {}, - "UploadEnd": { - "type": "timestamp" - }, - "UploadSize": { - "type": "double" - }, - "UploadStart": { - "type": "timestamp" - } - } - }, - "Smv": { - "type": "structure", - "members": { - "S3Bucket": {}, - "S3Key": {} - } - }, - "Sn0": { - "type": "structure", - "required": [ - "Bytes", - "Format", - "ImportManifestUrl" - ], - "members": { - "Bytes": { - "locationName": "bytes", - "type": "long" - }, - "Format": { - "locationName": "format" - }, - "ImportManifestUrl": { - "locationName": "importManifestUrl" - } - } - }, - "Sn1": { - "type": "structure", - "required": [ - "Size" - ], - "members": { - "Size": { - "locationName": "size", - "type": "long" - } - } - }, - "Sn3": { - "type": "list", - "member": { - "locationName": "SecurityGroup" - } - }, - "Sng": { - "type": "list", - "member": { - "locationName": "UserId" - } - }, - "Snh": { - "type": "list", - "member": { - "locationName": "UserGroup" - } - }, - "Sni": { - "type": "list", - "member": { - "locationName": "ProductCode" - } - }, - "Snk": { - "type": "list", - "member": { - "locationName": "item", - "type": "structure", - "members": { - "Group": {}, - "UserId": {} - } - } - }, - "Snp": { - "type": "list", - "member": { - "shape": "S4k", - "locationName": "item" - } - }, - "Sok": { - "type": "structure", - "members": { - "AllowDnsResolutionFromRemoteVpc": { - "type": "boolean" - }, - "AllowEgressFromLocalClassicLinkToRemoteVpc": { - "type": "boolean" - }, - "AllowEgressFromLocalVpcToRemoteClassicLink": { - "type": "boolean" - } - } - }, - "Som": { - "type": "structure", - "members": { - "AllowDnsResolutionFromRemoteVpc": { - "locationName": "allowDnsResolutionFromRemoteVpc", - "type": "boolean" - }, - "AllowEgressFromLocalClassicLinkToRemoteVpc": { - "locationName": "allowEgressFromLocalClassicLinkToRemoteVpc", - "type": "boolean" - }, - "AllowEgressFromLocalVpcToRemoteClassicLink": { - "locationName": "allowEgressFromLocalVpcToRemoteClassicLink", - "type": "boolean" - } - } - }, - "Sop": { - "type": "list", - "member": { - "locationName": "item", - "type": "structure", - "members": { - "InstanceId": { - "locationName": "instanceId" - }, - "Monitoring": { - "shape": "Sen", - "locationName": "monitoring" - } - } - } - }, - "Sqi": { - "type": "list", - "member": { - "locationName": "SecurityGroupId" - } - }, - "Sqt": { - "type": "list", - "member": { - "locationName": "item", - "type": "structure", - "members": { - "CurrentState": { - "shape": "Se8", - "locationName": "currentState" - }, - "InstanceId": { - "locationName": "instanceId" - }, - "PreviousState": { - "shape": "Se8", - "locationName": "previousState" - } - } - } - } - } -} \ No newline at end of file diff --git a/workshops/monte-carlo-on-ec2-spot-fleet/src/web/node_modules/aws-sdk/apis/ec2-2016-11-15.paginators.json b/workshops/monte-carlo-on-ec2-spot-fleet/src/web/node_modules/aws-sdk/apis/ec2-2016-11-15.paginators.json deleted file mode 100644 index fdee7f5d..00000000 --- a/workshops/monte-carlo-on-ec2-spot-fleet/src/web/node_modules/aws-sdk/apis/ec2-2016-11-15.paginators.json +++ /dev/null @@ -1,144 +0,0 @@ -{ - "pagination": { - "DescribeAccountAttributes": { - "result_key": "AccountAttributes" - }, - "DescribeAddresses": { - "result_key": "Addresses" - }, - "DescribeAvailabilityZones": { - "result_key": "AvailabilityZones" - }, - "DescribeBundleTasks": { - "result_key": "BundleTasks" - }, - "DescribeConversionTasks": { - "result_key": "ConversionTasks" - }, - "DescribeCustomerGateways": { - "result_key": "CustomerGateways" - }, - "DescribeDhcpOptions": { - "result_key": "DhcpOptions" - }, - "DescribeExportTasks": { - "result_key": "ExportTasks" - }, - "DescribeImages": { - "result_key": "Images" - }, - "DescribeInstanceStatus": { - "input_token": "NextToken", - "limit_key": "MaxResults", - "output_token": "NextToken", - "result_key": "InstanceStatuses" - }, - "DescribeInstances": { - "input_token": "NextToken", - "limit_key": "MaxResults", - "output_token": "NextToken", - "result_key": "Reservations" - }, - "DescribeInternetGateways": { - "result_key": "InternetGateways" - }, - "DescribeKeyPairs": { - "result_key": "KeyPairs" - }, - "DescribeNatGateways": { - "input_token": "NextToken", - "limit_key": "MaxResults", - "output_token": "NextToken", - "result_key": "NatGateways" - }, - "DescribeNetworkAcls": { - "result_key": "NetworkAcls" - }, - "DescribeNetworkInterfaces": { - "result_key": "NetworkInterfaces" - }, - "DescribePlacementGroups": { - "result_key": "PlacementGroups" - }, - "DescribeRegions": { - "result_key": "Regions" - }, - "DescribeReservedInstances": { - "result_key": "ReservedInstances" - }, - "DescribeReservedInstancesListings": { - "result_key": "ReservedInstancesListings" - }, - "DescribeReservedInstancesModifications": { - "input_token": "NextToken", - "output_token": "NextToken", - "result_key": "ReservedInstancesModifications" - }, - "DescribeReservedInstancesOfferings": { - "input_token": "NextToken", - "limit_key": "MaxResults", - "output_token": "NextToken", - "result_key": "ReservedInstancesOfferings" - }, - "DescribeRouteTables": { - "result_key": "RouteTables" - }, - "DescribeSecurityGroups": { - "result_key": "SecurityGroups" - }, - "DescribeSnapshots": { - "input_token": "NextToken", - "limit_key": "MaxResults", - "output_token": "NextToken", - "result_key": "Snapshots" - }, - "DescribeSpotFleetRequests": { - "input_token": "NextToken", - "limit_key": "MaxResults", - "output_token": "NextToken", - "result_key": "SpotFleetRequestConfigs" - }, - "DescribeSpotInstanceRequests": { - "result_key": "SpotInstanceRequests" - }, - "DescribeSpotPriceHistory": { - "input_token": "NextToken", - "limit_key": "MaxResults", - "output_token": "NextToken", - "result_key": "SpotPriceHistory" - }, - "DescribeSubnets": { - "result_key": "Subnets" - }, - "DescribeTags": { - "input_token": "NextToken", - "limit_key": "MaxResults", - "output_token": "NextToken", - "result_key": "Tags" - }, - "DescribeVolumeStatus": { - "input_token": "NextToken", - "limit_key": "MaxResults", - "output_token": "NextToken", - "result_key": "VolumeStatuses" - }, - "DescribeVolumes": { - "input_token": "NextToken", - "limit_key": "MaxResults", - "output_token": "NextToken", - "result_key": "Volumes" - }, - "DescribeVpcPeeringConnections": { - "result_key": "VpcPeeringConnections" - }, - "DescribeVpcs": { - "result_key": "Vpcs" - }, - "DescribeVpnConnections": { - "result_key": "VpnConnections" - }, - "DescribeVpnGateways": { - "result_key": "VpnGateways" - } - } -} \ No newline at end of file diff --git a/workshops/monte-carlo-on-ec2-spot-fleet/src/web/node_modules/aws-sdk/apis/ec2-2016-11-15.waiters2.json b/workshops/monte-carlo-on-ec2-spot-fleet/src/web/node_modules/aws-sdk/apis/ec2-2016-11-15.waiters2.json deleted file mode 100644 index 33ea7b04..00000000 --- a/workshops/monte-carlo-on-ec2-spot-fleet/src/web/node_modules/aws-sdk/apis/ec2-2016-11-15.waiters2.json +++ /dev/null @@ -1,622 +0,0 @@ -{ - "version": 2, - "waiters": { - "InstanceExists": { - "delay": 5, - "maxAttempts": 40, - "operation": "DescribeInstances", - "acceptors": [ - { - "matcher": "path", - "expected": true, - "argument": "length(Reservations[]) > `0`", - "state": "success" - }, - { - "matcher": "error", - "expected": "InvalidInstanceID.NotFound", - "state": "retry" - } - ] - }, - "BundleTaskComplete": { - "delay": 15, - "operation": "DescribeBundleTasks", - "maxAttempts": 40, - "acceptors": [ - { - "expected": "complete", - "matcher": "pathAll", - "state": "success", - "argument": "BundleTasks[].State" - }, - { - "expected": "failed", - "matcher": "pathAny", - "state": "failure", - "argument": "BundleTasks[].State" - } - ] - }, - "ConversionTaskCancelled": { - "delay": 15, - "operation": "DescribeConversionTasks", - "maxAttempts": 40, - "acceptors": [ - { - "expected": "cancelled", - "matcher": "pathAll", - "state": "success", - "argument": "ConversionTasks[].State" - } - ] - }, - "ConversionTaskCompleted": { - "delay": 15, - "operation": "DescribeConversionTasks", - "maxAttempts": 40, - "acceptors": [ - { - "expected": "completed", - "matcher": "pathAll", - "state": "success", - "argument": "ConversionTasks[].State" - }, - { - "expected": "cancelled", - "matcher": "pathAny", - "state": "failure", - "argument": "ConversionTasks[].State" - }, - { - "expected": "cancelling", - "matcher": "pathAny", - "state": "failure", - "argument": "ConversionTasks[].State" - } - ] - }, - "ConversionTaskDeleted": { - "delay": 15, - "operation": "DescribeConversionTasks", - "maxAttempts": 40, - "acceptors": [ - { - "expected": "deleted", - "matcher": "pathAll", - "state": "success", - "argument": "ConversionTasks[].State" - } - ] - }, - "CustomerGatewayAvailable": { - "delay": 15, - "operation": "DescribeCustomerGateways", - "maxAttempts": 40, - "acceptors": [ - { - "expected": "available", - "matcher": "pathAll", - "state": "success", - "argument": "CustomerGateways[].State" - }, - { - "expected": "deleted", - "matcher": "pathAny", - "state": "failure", - "argument": "CustomerGateways[].State" - }, - { - "expected": "deleting", - "matcher": "pathAny", - "state": "failure", - "argument": "CustomerGateways[].State" - } - ] - }, - "ExportTaskCancelled": { - "delay": 15, - "operation": "DescribeExportTasks", - "maxAttempts": 40, - "acceptors": [ - { - "expected": "cancelled", - "matcher": "pathAll", - "state": "success", - "argument": "ExportTasks[].State" - } - ] - }, - "ExportTaskCompleted": { - "delay": 15, - "operation": "DescribeExportTasks", - "maxAttempts": 40, - "acceptors": [ - { - "expected": "completed", - "matcher": "pathAll", - "state": "success", - "argument": "ExportTasks[].State" - } - ] - }, - "ImageExists": { - "operation": "DescribeImages", - "maxAttempts": 40, - "delay": 15, - "acceptors": [ - { - "matcher": "path", - "expected": true, - "argument": "length(Images[]) > `0`", - "state": "success" - }, - { - "matcher": "error", - "expected": "InvalidAMIID.NotFound", - "state": "retry" - } - ] - }, - "ImageAvailable": { - "operation": "DescribeImages", - "maxAttempts": 40, - "delay": 15, - "acceptors": [ - { - "state": "success", - "matcher": "pathAll", - "argument": "Images[].State", - "expected": "available" - }, - { - "state": "failure", - "matcher": "pathAny", - "argument": "Images[].State", - "expected": "failed" - } - ] - }, - "InstanceRunning": { - "delay": 15, - "operation": "DescribeInstances", - "maxAttempts": 40, - "acceptors": [ - { - "expected": "running", - "matcher": "pathAll", - "state": "success", - "argument": "Reservations[].Instances[].State.Name" - }, - { - "expected": "shutting-down", - "matcher": "pathAny", - "state": "failure", - "argument": "Reservations[].Instances[].State.Name" - }, - { - "expected": "terminated", - "matcher": "pathAny", - "state": "failure", - "argument": "Reservations[].Instances[].State.Name" - }, - { - "expected": "stopping", - "matcher": "pathAny", - "state": "failure", - "argument": "Reservations[].Instances[].State.Name" - }, - { - "matcher": "error", - "expected": "InvalidInstanceID.NotFound", - "state": "retry" - } - ] - }, - "InstanceStatusOk": { - "operation": "DescribeInstanceStatus", - "maxAttempts": 40, - "delay": 15, - "acceptors": [ - { - "state": "success", - "matcher": "pathAll", - "argument": "InstanceStatuses[].InstanceStatus.Status", - "expected": "ok" - }, - { - "matcher": "error", - "expected": "InvalidInstanceID.NotFound", - "state": "retry" - } - ] - }, - "InstanceStopped": { - "delay": 15, - "operation": "DescribeInstances", - "maxAttempts": 40, - "acceptors": [ - { - "expected": "stopped", - "matcher": "pathAll", - "state": "success", - "argument": "Reservations[].Instances[].State.Name" - }, - { - "expected": "pending", - "matcher": "pathAny", - "state": "failure", - "argument": "Reservations[].Instances[].State.Name" - }, - { - "expected": "terminated", - "matcher": "pathAny", - "state": "failure", - "argument": "Reservations[].Instances[].State.Name" - } - ] - }, - "InstanceTerminated": { - "delay": 15, - "operation": "DescribeInstances", - "maxAttempts": 40, - "acceptors": [ - { - "expected": "terminated", - "matcher": "pathAll", - "state": "success", - "argument": "Reservations[].Instances[].State.Name" - }, - { - "expected": "pending", - "matcher": "pathAny", - "state": "failure", - "argument": "Reservations[].Instances[].State.Name" - }, - { - "expected": "stopping", - "matcher": "pathAny", - "state": "failure", - "argument": "Reservations[].Instances[].State.Name" - } - ] - }, - "KeyPairExists": { - "operation": "DescribeKeyPairs", - "delay": 5, - "maxAttempts": 6, - "acceptors": [ - { - "expected": true, - "matcher": "path", - "state": "success", - "argument": "length(KeyPairs[].KeyName) > `0`" - }, - { - "expected": "InvalidKeyPair.NotFound", - "matcher": "error", - "state": "retry" - } - ] - }, - "NatGatewayAvailable": { - "operation": "DescribeNatGateways", - "delay": 15, - "maxAttempts": 40, - "acceptors": [ - { - "state": "success", - "matcher": "pathAll", - "argument": "NatGateways[].State", - "expected": "available" - }, - { - "state": "failure", - "matcher": "pathAny", - "argument": "NatGateways[].State", - "expected": "failed" - }, - { - "state": "failure", - "matcher": "pathAny", - "argument": "NatGateways[].State", - "expected": "deleting" - }, - { - "state": "failure", - "matcher": "pathAny", - "argument": "NatGateways[].State", - "expected": "deleted" - }, - { - "state": "retry", - "matcher": "error", - "expected": "NatGatewayNotFound" - } - ] - }, - "NetworkInterfaceAvailable": { - "operation": "DescribeNetworkInterfaces", - "delay": 20, - "maxAttempts": 10, - "acceptors": [ - { - "expected": "available", - "matcher": "pathAll", - "state": "success", - "argument": "NetworkInterfaces[].Status" - }, - { - "expected": "InvalidNetworkInterfaceID.NotFound", - "matcher": "error", - "state": "failure" - } - ] - }, - "PasswordDataAvailable": { - "operation": "GetPasswordData", - "maxAttempts": 40, - "delay": 15, - "acceptors": [ - { - "state": "success", - "matcher": "path", - "argument": "length(PasswordData) > `0`", - "expected": true - } - ] - }, - "SnapshotCompleted": { - "delay": 15, - "operation": "DescribeSnapshots", - "maxAttempts": 40, - "acceptors": [ - { - "expected": "completed", - "matcher": "pathAll", - "state": "success", - "argument": "Snapshots[].State" - } - ] - }, - "SpotInstanceRequestFulfilled": { - "operation": "DescribeSpotInstanceRequests", - "maxAttempts": 40, - "delay": 15, - "acceptors": [ - { - "state": "success", - "matcher": "pathAll", - "argument": "SpotInstanceRequests[].Status.Code", - "expected": "fulfilled" - }, - { - "state": "success", - "matcher": "pathAll", - "argument": "SpotInstanceRequests[].Status.Code", - "expected": "request-canceled-and-instance-running" - }, - { - "state": "failure", - "matcher": "pathAny", - "argument": "SpotInstanceRequests[].Status.Code", - "expected": "schedule-expired" - }, - { - "state": "failure", - "matcher": "pathAny", - "argument": "SpotInstanceRequests[].Status.Code", - "expected": "canceled-before-fulfillment" - }, - { - "state": "failure", - "matcher": "pathAny", - "argument": "SpotInstanceRequests[].Status.Code", - "expected": "bad-parameters" - }, - { - "state": "failure", - "matcher": "pathAny", - "argument": "SpotInstanceRequests[].Status.Code", - "expected": "system-error" - }, - { - "state": "retry", - "matcher": "error", - "expected": "InvalidSpotInstanceRequestID.NotFound" - } - ] - }, - "SubnetAvailable": { - "delay": 15, - "operation": "DescribeSubnets", - "maxAttempts": 40, - "acceptors": [ - { - "expected": "available", - "matcher": "pathAll", - "state": "success", - "argument": "Subnets[].State" - } - ] - }, - "SystemStatusOk": { - "operation": "DescribeInstanceStatus", - "maxAttempts": 40, - "delay": 15, - "acceptors": [ - { - "state": "success", - "matcher": "pathAll", - "argument": "InstanceStatuses[].SystemStatus.Status", - "expected": "ok" - } - ] - }, - "VolumeAvailable": { - "delay": 15, - "operation": "DescribeVolumes", - "maxAttempts": 40, - "acceptors": [ - { - "expected": "available", - "matcher": "pathAll", - "state": "success", - "argument": "Volumes[].State" - }, - { - "expected": "deleted", - "matcher": "pathAny", - "state": "failure", - "argument": "Volumes[].State" - } - ] - }, - "VolumeDeleted": { - "delay": 15, - "operation": "DescribeVolumes", - "maxAttempts": 40, - "acceptors": [ - { - "expected": "deleted", - "matcher": "pathAll", - "state": "success", - "argument": "Volumes[].State" - }, - { - "matcher": "error", - "expected": "InvalidVolume.NotFound", - "state": "success" - } - ] - }, - "VolumeInUse": { - "delay": 15, - "operation": "DescribeVolumes", - "maxAttempts": 40, - "acceptors": [ - { - "expected": "in-use", - "matcher": "pathAll", - "state": "success", - "argument": "Volumes[].State" - }, - { - "expected": "deleted", - "matcher": "pathAny", - "state": "failure", - "argument": "Volumes[].State" - } - ] - }, - "VpcAvailable": { - "delay": 15, - "operation": "DescribeVpcs", - "maxAttempts": 40, - "acceptors": [ - { - "expected": "available", - "matcher": "pathAll", - "state": "success", - "argument": "Vpcs[].State" - } - ] - }, - "VpcExists": { - "operation": "DescribeVpcs", - "delay": 1, - "maxAttempts": 5, - "acceptors": [ - { - "matcher": "status", - "expected": 200, - "state": "success" - }, - { - "matcher": "error", - "expected": "InvalidVpcID.NotFound", - "state": "retry" - } - ] - }, - "VpnConnectionAvailable": { - "delay": 15, - "operation": "DescribeVpnConnections", - "maxAttempts": 40, - "acceptors": [ - { - "expected": "available", - "matcher": "pathAll", - "state": "success", - "argument": "VpnConnections[].State" - }, - { - "expected": "deleting", - "matcher": "pathAny", - "state": "failure", - "argument": "VpnConnections[].State" - }, - { - "expected": "deleted", - "matcher": "pathAny", - "state": "failure", - "argument": "VpnConnections[].State" - } - ] - }, - "VpnConnectionDeleted": { - "delay": 15, - "operation": "DescribeVpnConnections", - "maxAttempts": 40, - "acceptors": [ - { - "expected": "deleted", - "matcher": "pathAll", - "state": "success", - "argument": "VpnConnections[].State" - }, - { - "expected": "pending", - "matcher": "pathAny", - "state": "failure", - "argument": "VpnConnections[].State" - } - ] - }, - "VpcPeeringConnectionExists": { - "delay": 15, - "operation": "DescribeVpcPeeringConnections", - "maxAttempts": 40, - "acceptors": [ - { - "matcher": "status", - "expected": 200, - "state": "success" - }, - { - "matcher": "error", - "expected": "InvalidVpcPeeringConnectionID.NotFound", - "state": "retry" - } - ] - }, - "VpcPeeringConnectionDeleted": { - "delay": 15, - "operation": "DescribeVpcPeeringConnections", - "maxAttempts": 40, - "acceptors": [ - { - "expected": "deleted", - "matcher": "pathAll", - "state": "success", - "argument": "VpcPeeringConnections[].Status.Code" - }, - { - "matcher": "error", - "expected": "InvalidVpcPeeringConnectionID.NotFound", - "state": "success" - } - ] - } - } -} diff --git a/workshops/monte-carlo-on-ec2-spot-fleet/src/web/node_modules/aws-sdk/apis/ecr-2015-09-21.examples.json b/workshops/monte-carlo-on-ec2-spot-fleet/src/web/node_modules/aws-sdk/apis/ecr-2015-09-21.examples.json deleted file mode 100644 index d11aa8dd..00000000 --- a/workshops/monte-carlo-on-ec2-spot-fleet/src/web/node_modules/aws-sdk/apis/ecr-2015-09-21.examples.json +++ /dev/null @@ -1,215 +0,0 @@ -{ - "version": "1.0", - "examples": { - "BatchDeleteImage": [ - { - "input": { - "imageIds": [ - { - "imageTag": "precise" - } - ], - "repositoryName": "ubuntu" - }, - "output": { - "failures": [ - - ], - "imageIds": [ - { - "imageDigest": "sha256:examplee6d1e504117a17000003d3753086354a38375961f2e665416ef4b1b2f", - "imageTag": "precise" - } - ] - }, - "comments": { - }, - "description": "This example deletes images with the tags precise and trusty in a repository called ubuntu in the default registry for an account.", - "id": "batchdeleteimages-example-1470860541707", - "title": "To delete multiple images" - } - ], - "BatchGetImage": [ - { - "input": { - "imageIds": [ - { - "imageTag": "precise" - } - ], - "repositoryName": "ubuntu" - }, - "output": { - "failures": [ - - ], - "images": [ - { - "imageId": { - "imageDigest": "sha256:example76bdff6d83a09ba2a818f0d00000063724a9ac3ba5019c56f74ebf42a", - "imageTag": "precise" - }, - "imageManifest": "{\n \"schemaVersion\": 1,\n \"name\": \"ubuntu\",\n \"tag\": \"precise\",\n...", - "registryId": "244698725403", - "repositoryName": "ubuntu" - } - ] - }, - "comments": { - "output": { - "imageManifest": "In this example, the imageManifest in the output JSON has been truncated." - } - }, - "description": "This example obtains information for an image with a specified image digest ID from the repository named ubuntu in the current account.", - "id": "batchgetimage-example-1470862771437", - "title": "To obtain multiple images in a single request" - } - ], - "CreateRepository": [ - { - "input": { - "repositoryName": "project-a/nginx-web-app" - }, - "output": { - "repository": { - "registryId": "012345678901", - "repositoryArn": "arn:aws:ecr:us-west-2:012345678901:repository/project-a/nginx-web-app", - "repositoryName": "project-a/nginx-web-app" - } - }, - "comments": { - "output": { - "imageManifest": "In this example, the imageManifest in the output JSON has been truncated." - } - }, - "description": "This example creates a repository called nginx-web-app inside the project-a namespace in the default registry for an account.", - "id": "createrepository-example-1470863688724", - "title": "To create a new repository" - } - ], - "DeleteRepository": [ - { - "input": { - "force": true, - "repositoryName": "ubuntu" - }, - "output": { - "repository": { - "registryId": "012345678901", - "repositoryArn": "arn:aws:ecr:us-west-2:012345678901:repository/ubuntu", - "repositoryName": "ubuntu" - } - }, - "comments": { - "output": { - "imageManifest": "In this example, the imageManifest in the output JSON has been truncated." - } - }, - "description": "This example force deletes a repository named ubuntu in the default registry for an account. The force parameter is required if the repository contains images.", - "id": "deleterepository-example-1470863805703", - "title": "To force delete a repository" - } - ], - "DeleteRepositoryPolicy": [ - { - "input": { - "repositoryName": "ubuntu" - }, - "output": { - "policyText": "{ ... }", - "registryId": "012345678901", - "repositoryName": "ubuntu" - }, - "comments": { - }, - "description": "This example deletes the policy associated with the repository named ubuntu in the current account.", - "id": "deleterepositorypolicy-example-1470866943748", - "title": "To delete the policy associated with a repository" - } - ], - "DescribeRepositories": [ - { - "input": { - }, - "output": { - "repositories": [ - { - "registryId": "012345678910", - "repositoryArn": "arn:aws:ecr:us-west-2:012345678910:repository/ubuntu", - "repositoryName": "ubuntu" - }, - { - "registryId": "012345678910", - "repositoryArn": "arn:aws:ecr:us-west-2:012345678910:repository/test", - "repositoryName": "test" - } - ] - }, - "comments": { - "output": { - } - }, - "description": "The following example obtains a list and description of all repositories in the default registry to which the current user has access.", - "id": "describe-repositories-1470856017467", - "title": "To describe all repositories in the current account" - } - ], - "GetAuthorizationToken": [ - { - "input": { - }, - "output": { - "authorizationData": [ - { - "authorizationToken": "QVdTOkN...", - "expiresAt": "1470951892432", - "proxyEndpoint": "https://012345678901.dkr.ecr.us-west-2.amazonaws.com" - } - ] - }, - "comments": { - }, - "description": "This example gets an authorization token for your default registry.", - "id": "getauthorizationtoken-example-1470867047084", - "title": "To obtain an authorization token" - } - ], - "GetRepositoryPolicy": [ - { - "input": { - "repositoryName": "ubuntu" - }, - "output": { - "policyText": "{\n \"Version\" : \"2008-10-17\",\n \"Statement\" : [ {\n \"Sid\" : \"new statement\",\n \"Effect\" : \"Allow\",\n \"Principal\" : {\n \"AWS\" : \"arn:aws:iam::012345678901:role/CodeDeployDemo\"\n },\n\"Action\" : [ \"ecr:GetDownloadUrlForLayer\", \"ecr:BatchGetImage\", \"ecr:BatchCheckLayerAvailability\" ]\n } ]\n}", - "registryId": "012345678901", - "repositoryName": "ubuntu" - }, - "comments": { - }, - "description": "This example obtains the repository policy for the repository named ubuntu.", - "id": "getrepositorypolicy-example-1470867669211", - "title": "To get the current policy for a repository" - } - ], - "ListImages": [ - { - "input": { - "repositoryName": "ubuntu" - }, - "output": { - "imageIds": [ - { - "imageDigest": "sha256:764f63476bdff6d83a09ba2a818f0d35757063724a9ac3ba5019c56f74ebf42a", - "imageTag": "precise" - } - ] - }, - "comments": { - }, - "description": "This example lists all of the images in the repository named ubuntu in the default registry in the current account. ", - "id": "listimages-example-1470868161594", - "title": "To list all images in a repository" - } - ] - } -} diff --git a/workshops/monte-carlo-on-ec2-spot-fleet/src/web/node_modules/aws-sdk/apis/ecr-2015-09-21.min.json b/workshops/monte-carlo-on-ec2-spot-fleet/src/web/node_modules/aws-sdk/apis/ecr-2015-09-21.min.json deleted file mode 100644 index c2ec24ac..00000000 --- a/workshops/monte-carlo-on-ec2-spot-fleet/src/web/node_modules/aws-sdk/apis/ecr-2015-09-21.min.json +++ /dev/null @@ -1,712 +0,0 @@ -{ - "version": "2.0", - "metadata": { - "apiVersion": "2015-09-21", - "endpointPrefix": "ecr", - "jsonVersion": "1.1", - "protocol": "json", - "serviceAbbreviation": "Amazon ECR", - "serviceFullName": "Amazon EC2 Container Registry", - "signatureVersion": "v4", - "targetPrefix": "AmazonEC2ContainerRegistry_V20150921", - "uid": "ecr-2015-09-21" - }, - "operations": { - "BatchCheckLayerAvailability": { - "input": { - "type": "structure", - "required": [ - "repositoryName", - "layerDigests" - ], - "members": { - "registryId": {}, - "repositoryName": {}, - "layerDigests": { - "type": "list", - "member": {} - } - } - }, - "output": { - "type": "structure", - "members": { - "layers": { - "type": "list", - "member": { - "type": "structure", - "members": { - "layerDigest": {}, - "layerAvailability": {}, - "layerSize": { - "type": "long" - }, - "mediaType": {} - } - } - }, - "failures": { - "type": "list", - "member": { - "type": "structure", - "members": { - "layerDigest": {}, - "failureCode": {}, - "failureReason": {} - } - } - } - } - } - }, - "BatchDeleteImage": { - "input": { - "type": "structure", - "required": [ - "repositoryName", - "imageIds" - ], - "members": { - "registryId": {}, - "repositoryName": {}, - "imageIds": { - "shape": "Si" - } - } - }, - "output": { - "type": "structure", - "members": { - "imageIds": { - "shape": "Si" - }, - "failures": { - "shape": "Sn" - } - } - } - }, - "BatchGetImage": { - "input": { - "type": "structure", - "required": [ - "repositoryName", - "imageIds" - ], - "members": { - "registryId": {}, - "repositoryName": {}, - "imageIds": { - "shape": "Si" - }, - "acceptedMediaTypes": { - "type": "list", - "member": {} - } - } - }, - "output": { - "type": "structure", - "members": { - "images": { - "type": "list", - "member": { - "shape": "Sv" - } - }, - "failures": { - "shape": "Sn" - } - } - } - }, - "CompleteLayerUpload": { - "input": { - "type": "structure", - "required": [ - "repositoryName", - "uploadId", - "layerDigests" - ], - "members": { - "registryId": {}, - "repositoryName": {}, - "uploadId": {}, - "layerDigests": { - "type": "list", - "member": {} - } - } - }, - "output": { - "type": "structure", - "members": { - "registryId": {}, - "repositoryName": {}, - "uploadId": {}, - "layerDigest": {} - } - } - }, - "CreateRepository": { - "input": { - "type": "structure", - "required": [ - "repositoryName" - ], - "members": { - "repositoryName": {} - } - }, - "output": { - "type": "structure", - "members": { - "repository": { - "shape": "S13" - } - } - } - }, - "DeleteLifecyclePolicy": { - "input": { - "type": "structure", - "required": [ - "repositoryName" - ], - "members": { - "registryId": {}, - "repositoryName": {} - } - }, - "output": { - "type": "structure", - "members": { - "registryId": {}, - "repositoryName": {}, - "lifecyclePolicyText": {}, - "lastEvaluatedAt": { - "type": "timestamp" - } - } - } - }, - "DeleteRepository": { - "input": { - "type": "structure", - "required": [ - "repositoryName" - ], - "members": { - "registryId": {}, - "repositoryName": {}, - "force": { - "type": "boolean" - } - } - }, - "output": { - "type": "structure", - "members": { - "repository": { - "shape": "S13" - } - } - } - }, - "DeleteRepositoryPolicy": { - "input": { - "type": "structure", - "required": [ - "repositoryName" - ], - "members": { - "registryId": {}, - "repositoryName": {} - } - }, - "output": { - "type": "structure", - "members": { - "registryId": {}, - "repositoryName": {}, - "policyText": {} - } - } - }, - "DescribeImages": { - "input": { - "type": "structure", - "required": [ - "repositoryName" - ], - "members": { - "registryId": {}, - "repositoryName": {}, - "imageIds": { - "shape": "Si" - }, - "nextToken": {}, - "maxResults": { - "type": "integer" - }, - "filter": { - "type": "structure", - "members": { - "tagStatus": {} - } - } - } - }, - "output": { - "type": "structure", - "members": { - "imageDetails": { - "type": "list", - "member": { - "type": "structure", - "members": { - "registryId": {}, - "repositoryName": {}, - "imageDigest": {}, - "imageTags": { - "shape": "S1p" - }, - "imageSizeInBytes": { - "type": "long" - }, - "imagePushedAt": { - "type": "timestamp" - } - } - } - }, - "nextToken": {} - } - } - }, - "DescribeRepositories": { - "input": { - "type": "structure", - "members": { - "registryId": {}, - "repositoryNames": { - "type": "list", - "member": {} - }, - "nextToken": {}, - "maxResults": { - "type": "integer" - } - } - }, - "output": { - "type": "structure", - "members": { - "repositories": { - "type": "list", - "member": { - "shape": "S13" - } - }, - "nextToken": {} - } - } - }, - "GetAuthorizationToken": { - "input": { - "type": "structure", - "members": { - "registryIds": { - "type": "list", - "member": {} - } - } - }, - "output": { - "type": "structure", - "members": { - "authorizationData": { - "type": "list", - "member": { - "type": "structure", - "members": { - "authorizationToken": {}, - "expiresAt": { - "type": "timestamp" - }, - "proxyEndpoint": {} - } - } - } - } - } - }, - "GetDownloadUrlForLayer": { - "input": { - "type": "structure", - "required": [ - "repositoryName", - "layerDigest" - ], - "members": { - "registryId": {}, - "repositoryName": {}, - "layerDigest": {} - } - }, - "output": { - "type": "structure", - "members": { - "downloadUrl": {}, - "layerDigest": {} - } - } - }, - "GetLifecyclePolicy": { - "input": { - "type": "structure", - "required": [ - "repositoryName" - ], - "members": { - "registryId": {}, - "repositoryName": {} - } - }, - "output": { - "type": "structure", - "members": { - "registryId": {}, - "repositoryName": {}, - "lifecyclePolicyText": {}, - "lastEvaluatedAt": { - "type": "timestamp" - } - } - } - }, - "GetLifecyclePolicyPreview": { - "input": { - "type": "structure", - "required": [ - "repositoryName" - ], - "members": { - "registryId": {}, - "repositoryName": {}, - "imageIds": { - "shape": "Si" - }, - "nextToken": {}, - "maxResults": { - "type": "integer" - }, - "filter": { - "type": "structure", - "members": { - "tagStatus": {} - } - } - } - }, - "output": { - "type": "structure", - "members": { - "registryId": {}, - "repositoryName": {}, - "lifecyclePolicyText": {}, - "status": {}, - "nextToken": {}, - "previewResults": { - "type": "list", - "member": { - "type": "structure", - "members": { - "imageTags": { - "shape": "S1p" - }, - "imageDigest": {}, - "imagePushedAt": { - "type": "timestamp" - }, - "action": { - "type": "structure", - "members": { - "type": {} - } - }, - "appliedRulePriority": { - "type": "integer" - } - } - } - }, - "summary": { - "type": "structure", - "members": { - "expiringImageTotalCount": { - "type": "integer" - } - } - } - } - } - }, - "GetRepositoryPolicy": { - "input": { - "type": "structure", - "required": [ - "repositoryName" - ], - "members": { - "registryId": {}, - "repositoryName": {} - } - }, - "output": { - "type": "structure", - "members": { - "registryId": {}, - "repositoryName": {}, - "policyText": {} - } - } - }, - "InitiateLayerUpload": { - "input": { - "type": "structure", - "required": [ - "repositoryName" - ], - "members": { - "registryId": {}, - "repositoryName": {} - } - }, - "output": { - "type": "structure", - "members": { - "uploadId": {}, - "partSize": { - "type": "long" - } - } - } - }, - "ListImages": { - "input": { - "type": "structure", - "required": [ - "repositoryName" - ], - "members": { - "registryId": {}, - "repositoryName": {}, - "nextToken": {}, - "maxResults": { - "type": "integer" - }, - "filter": { - "type": "structure", - "members": { - "tagStatus": {} - } - } - } - }, - "output": { - "type": "structure", - "members": { - "imageIds": { - "shape": "Si" - }, - "nextToken": {} - } - } - }, - "PutImage": { - "input": { - "type": "structure", - "required": [ - "repositoryName", - "imageManifest" - ], - "members": { - "registryId": {}, - "repositoryName": {}, - "imageManifest": {}, - "imageTag": {} - } - }, - "output": { - "type": "structure", - "members": { - "image": { - "shape": "Sv" - } - } - } - }, - "PutLifecyclePolicy": { - "input": { - "type": "structure", - "required": [ - "repositoryName", - "lifecyclePolicyText" - ], - "members": { - "registryId": {}, - "repositoryName": {}, - "lifecyclePolicyText": {} - } - }, - "output": { - "type": "structure", - "members": { - "registryId": {}, - "repositoryName": {}, - "lifecyclePolicyText": {} - } - } - }, - "SetRepositoryPolicy": { - "input": { - "type": "structure", - "required": [ - "repositoryName", - "policyText" - ], - "members": { - "registryId": {}, - "repositoryName": {}, - "policyText": {}, - "force": { - "type": "boolean" - } - } - }, - "output": { - "type": "structure", - "members": { - "registryId": {}, - "repositoryName": {}, - "policyText": {} - } - } - }, - "StartLifecyclePolicyPreview": { - "input": { - "type": "structure", - "required": [ - "repositoryName" - ], - "members": { - "registryId": {}, - "repositoryName": {}, - "lifecyclePolicyText": {} - } - }, - "output": { - "type": "structure", - "members": { - "registryId": {}, - "repositoryName": {}, - "lifecyclePolicyText": {}, - "status": {} - } - } - }, - "UploadLayerPart": { - "input": { - "type": "structure", - "required": [ - "repositoryName", - "uploadId", - "partFirstByte", - "partLastByte", - "layerPartBlob" - ], - "members": { - "registryId": {}, - "repositoryName": {}, - "uploadId": {}, - "partFirstByte": { - "type": "long" - }, - "partLastByte": { - "type": "long" - }, - "layerPartBlob": { - "type": "blob" - } - } - }, - "output": { - "type": "structure", - "members": { - "registryId": {}, - "repositoryName": {}, - "uploadId": {}, - "lastByteReceived": { - "type": "long" - } - } - } - } - }, - "shapes": { - "Si": { - "type": "list", - "member": { - "shape": "Sj" - } - }, - "Sj": { - "type": "structure", - "members": { - "imageDigest": {}, - "imageTag": {} - } - }, - "Sn": { - "type": "list", - "member": { - "type": "structure", - "members": { - "imageId": { - "shape": "Sj" - }, - "failureCode": {}, - "failureReason": {} - } - } - }, - "Sv": { - "type": "structure", - "members": { - "registryId": {}, - "repositoryName": {}, - "imageId": { - "shape": "Sj" - }, - "imageManifest": {} - } - }, - "S13": { - "type": "structure", - "members": { - "repositoryArn": {}, - "registryId": {}, - "repositoryName": {}, - "repositoryUri": {}, - "createdAt": { - "type": "timestamp" - } - } - }, - "S1p": { - "type": "list", - "member": {} - } - } -} \ No newline at end of file diff --git a/workshops/monte-carlo-on-ec2-spot-fleet/src/web/node_modules/aws-sdk/apis/ecr-2015-09-21.paginators.json b/workshops/monte-carlo-on-ec2-spot-fleet/src/web/node_modules/aws-sdk/apis/ecr-2015-09-21.paginators.json deleted file mode 100644 index f7a7f102..00000000 --- a/workshops/monte-carlo-on-ec2-spot-fleet/src/web/node_modules/aws-sdk/apis/ecr-2015-09-21.paginators.json +++ /dev/null @@ -1,22 +0,0 @@ -{ - "pagination": { - "DescribeImages": { - "input_token": "nextToken", - "limit_key": "maxResults", - "output_token": "nextToken", - "result_key": "imageDetails" - }, - "DescribeRepositories": { - "input_token": "nextToken", - "limit_key": "maxResults", - "output_token": "nextToken", - "result_key": "repositories" - }, - "ListImages": { - "input_token": "nextToken", - "limit_key": "maxResults", - "output_token": "nextToken", - "result_key": "imageIds" - } - } -} \ No newline at end of file diff --git a/workshops/monte-carlo-on-ec2-spot-fleet/src/web/node_modules/aws-sdk/apis/ecs-2014-11-13.examples.json b/workshops/monte-carlo-on-ec2-spot-fleet/src/web/node_modules/aws-sdk/apis/ecs-2014-11-13.examples.json deleted file mode 100644 index c14ba44a..00000000 --- a/workshops/monte-carlo-on-ec2-spot-fleet/src/web/node_modules/aws-sdk/apis/ecs-2014-11-13.examples.json +++ /dev/null @@ -1,883 +0,0 @@ -{ - "version": "1.0", - "examples": { - "CreateCluster": [ - { - "input": { - "clusterName": "my_cluster" - }, - "output": { - "cluster": { - "activeServicesCount": 0, - "clusterArn": "arn:aws:ecs:us-east-1:012345678910:cluster/my_cluster", - "clusterName": "my_cluster", - "pendingTasksCount": 0, - "registeredContainerInstancesCount": 0, - "runningTasksCount": 0, - "status": "ACTIVE" - } - }, - "comments": { - "input": { - }, - "output": { - } - }, - "description": "This example creates a cluster in your default region.", - "id": "to-create-a-new-cluster-1472514079365", - "title": "To create a new cluster" - } - ], - "CreateService": [ - { - "input": { - "desiredCount": 10, - "serviceName": "ecs-simple-service", - "taskDefinition": "hello_world" - }, - "output": { - "service": { - "clusterArn": "arn:aws:ecs:us-east-1:012345678910:cluster/default", - "createdAt": "2016-08-29T16:13:47.298Z", - "deploymentConfiguration": { - "maximumPercent": 200, - "minimumHealthyPercent": 100 - }, - "deployments": [ - { - "createdAt": "2016-08-29T16:13:47.298Z", - "desiredCount": 10, - "id": "ecs-svc/9223370564342348388", - "pendingCount": 0, - "runningCount": 0, - "status": "PRIMARY", - "taskDefinition": "arn:aws:ecs:us-east-1:012345678910:task-definition/hello_world:6", - "updatedAt": "2016-08-29T16:13:47.298Z" - }, - { - "createdAt": "2016-08-29T15:52:44.481Z", - "desiredCount": 0, - "id": "ecs-svc/9223370564343611322", - "pendingCount": 0, - "runningCount": 0, - "status": "ACTIVE", - "taskDefinition": "arn:aws:ecs:us-east-1:012345678910:task-definition/hello_world:6", - "updatedAt": "2016-08-29T16:11:38.941Z" - } - ], - "desiredCount": 10, - "events": [ - - ], - "loadBalancers": [ - - ], - "pendingCount": 0, - "runningCount": 0, - "serviceArn": "arn:aws:ecs:us-east-1:012345678910:service/ecs-simple-service", - "serviceName": "ecs-simple-service", - "status": "ACTIVE", - "taskDefinition": "arn:aws:ecs:us-east-1:012345678910:task-definition/hello_world:6" - } - }, - "comments": { - "input": { - }, - "output": { - } - }, - "description": "This example creates a service in your default region called ``ecs-simple-service``. The service uses the ``hello_world`` task definition and it maintains 10 copies of that task.", - "id": "to-create-a-new-service-1472512584282", - "title": "To create a new service" - }, - { - "input": { - "desiredCount": 10, - "loadBalancers": [ - { - "containerName": "simple-app", - "containerPort": 80, - "loadBalancerName": "EC2Contai-EcsElast-15DCDAURT3ZO2" - } - ], - "role": "ecsServiceRole", - "serviceName": "ecs-simple-service-elb", - "taskDefinition": "console-sample-app-static" - }, - "output": { - "service": { - "clusterArn": "arn:aws:ecs:us-east-1:012345678910:cluster/default", - "createdAt": "2016-08-29T16:02:54.884Z", - "deploymentConfiguration": { - "maximumPercent": 200, - "minimumHealthyPercent": 100 - }, - "deployments": [ - { - "createdAt": "2016-08-29T16:02:54.884Z", - "desiredCount": 10, - "id": "ecs-svc/9223370564343000923", - "pendingCount": 0, - "runningCount": 0, - "status": "PRIMARY", - "taskDefinition": "arn:aws:ecs:us-east-1:012345678910:task-definition/console-sample-app-static:6", - "updatedAt": "2016-08-29T16:02:54.884Z" - } - ], - "desiredCount": 10, - "events": [ - - ], - "loadBalancers": [ - { - "containerName": "simple-app", - "containerPort": 80, - "loadBalancerName": "EC2Contai-EcsElast-15DCDAURT3ZO2" - } - ], - "pendingCount": 0, - "roleArn": "arn:aws:iam::012345678910:role/ecsServiceRole", - "runningCount": 0, - "serviceArn": "arn:aws:ecs:us-east-1:012345678910:service/ecs-simple-service-elb", - "serviceName": "ecs-simple-service-elb", - "status": "ACTIVE", - "taskDefinition": "arn:aws:ecs:us-east-1:012345678910:task-definition/console-sample-app-static:6" - } - }, - "comments": { - "input": { - }, - "output": { - } - }, - "description": "This example creates a service in your default region called ``ecs-simple-service-elb``. The service uses the ``ecs-demo`` task definition and it maintains 10 copies of that task. You must reference an existing load balancer in the same region by its name.", - "id": "to-create-a-new-service-behind-a-load-balancer-1472512484823", - "title": "To create a new service behind a load balancer" - } - ], - "DeleteCluster": [ - { - "input": { - "cluster": "my_cluster" - }, - "output": { - "cluster": { - "activeServicesCount": 0, - "clusterArn": "arn:aws:ecs:us-east-1:012345678910:cluster/my_cluster", - "clusterName": "my_cluster", - "pendingTasksCount": 0, - "registeredContainerInstancesCount": 0, - "runningTasksCount": 0, - "status": "INACTIVE" - } - }, - "comments": { - "input": { - }, - "output": { - } - }, - "description": "This example deletes an empty cluster in your default region.", - "id": "to-delete-an-empty-cluster-1472512705352", - "title": "To delete an empty cluster" - } - ], - "DeleteService": [ - { - "input": { - "service": "my-http-service" - }, - "output": { - }, - "comments": { - "input": { - }, - "output": { - } - }, - "description": "This example deletes the my-http-service service. The service must have a desired count and running count of 0 before you can delete it.", - "id": "e8183e38-f86e-4390-b811-f74f30a6007d", - "title": "To delete a service" - } - ], - "DeregisterContainerInstance": [ - { - "input": { - "cluster": "default", - "containerInstance": "container_instance_UUID", - "force": true - }, - "output": { - }, - "comments": { - "input": { - }, - "output": { - } - }, - "description": "This example deregisters a container instance from the specified cluster in your default region. If there are still tasks running on the container instance, you must either stop those tasks before deregistering, or use the force option.", - "id": "bf624927-cf64-4f4b-8b7e-c024a4e682f6", - "title": "To deregister a container instance from a cluster" - } - ], - "DescribeClusters": [ - { - "input": { - "clusters": [ - "default" - ] - }, - "output": { - "clusters": [ - { - "clusterArn": "arn:aws:ecs:us-east-1:aws_account_id:cluster/default", - "clusterName": "default", - "status": "ACTIVE" - } - ], - "failures": [ - - ] - }, - "comments": { - "input": { - }, - "output": { - } - }, - "description": "This example provides a description of the specified cluster in your default region.", - "id": "ba88d100-9672-4231-80da-a4bd210bf728", - "title": "To describe a cluster" - } - ], - "DescribeContainerInstances": [ - { - "input": { - "cluster": "default", - "containerInstances": [ - "f2756532-8f13-4d53-87c9-aed50dc94cd7" - ] - }, - "output": { - "containerInstances": [ - { - "agentConnected": true, - "containerInstanceArn": "arn:aws:ecs:us-east-1:012345678910:container-instance/f2756532-8f13-4d53-87c9-aed50dc94cd7", - "ec2InstanceId": "i-807f3249", - "pendingTasksCount": 0, - "registeredResources": [ - { - "name": "CPU", - "type": "INTEGER", - "doubleValue": 0.0, - "integerValue": 2048, - "longValue": 0 - }, - { - "name": "MEMORY", - "type": "INTEGER", - "doubleValue": 0.0, - "integerValue": 3768, - "longValue": 0 - }, - { - "name": "PORTS", - "type": "STRINGSET", - "doubleValue": 0.0, - "integerValue": 0, - "longValue": 0, - "stringSetValue": [ - "2376", - "22", - "51678", - "2375" - ] - } - ], - "remainingResources": [ - { - "name": "CPU", - "type": "INTEGER", - "doubleValue": 0.0, - "integerValue": 1948, - "longValue": 0 - }, - { - "name": "MEMORY", - "type": "INTEGER", - "doubleValue": 0.0, - "integerValue": 3668, - "longValue": 0 - }, - { - "name": "PORTS", - "type": "STRINGSET", - "doubleValue": 0.0, - "integerValue": 0, - "longValue": 0, - "stringSetValue": [ - "2376", - "22", - "80", - "51678", - "2375" - ] - } - ], - "runningTasksCount": 1, - "status": "ACTIVE" - } - ], - "failures": [ - - ] - }, - "comments": { - "input": { - }, - "output": { - } - }, - "description": "This example provides a description of the specified container instance in your default region, using the container instance UUID as an identifier.", - "id": "c8f439de-eb27-4269-8ca7-2c0a7ba75ab0", - "title": "To describe container instance" - } - ], - "DescribeServices": [ - { - "input": { - "services": [ - "ecs-simple-service" - ] - }, - "output": { - "failures": [ - - ], - "services": [ - { - "clusterArn": "arn:aws:ecs:us-east-1:012345678910:cluster/default", - "createdAt": "2016-08-29T16:25:52.130Z", - "deploymentConfiguration": { - "maximumPercent": 200, - "minimumHealthyPercent": 100 - }, - "deployments": [ - { - "createdAt": "2016-08-29T16:25:52.130Z", - "desiredCount": 1, - "id": "ecs-svc/9223370564341623665", - "pendingCount": 0, - "runningCount": 0, - "status": "PRIMARY", - "taskDefinition": "arn:aws:ecs:us-east-1:012345678910:task-definition/hello_world:6", - "updatedAt": "2016-08-29T16:25:52.130Z" - } - ], - "desiredCount": 1, - "events": [ - { - "createdAt": "2016-08-29T16:25:58.520Z", - "id": "38c285e5-d335-4b68-8b15-e46dedc8e88d", - "message": "(service ecs-simple-service) was unable to place a task because no container instance met all of its requirements. The closest matching (container-instance 3f4de1c5-ffdd-4954-af7e-75b4be0c8841) is already using a port required by your task. For more information, see the Troubleshooting section of the Amazon ECS Developer Guide." - } - ], - "loadBalancers": [ - - ], - "pendingCount": 0, - "runningCount": 0, - "serviceArn": "arn:aws:ecs:us-east-1:012345678910:service/ecs-simple-service", - "serviceName": "ecs-simple-service", - "status": "ACTIVE", - "taskDefinition": "arn:aws:ecs:us-east-1:012345678910:task-definition/hello_world:6" - } - ] - }, - "comments": { - "input": { - }, - "output": { - "services[0].events[0].message": "In this example, there is a service event that shows unavailable cluster resources." - } - }, - "description": "This example provides descriptive information about the service named ``ecs-simple-service``.", - "id": "to-describe-a-service-1472513256350", - "title": "To describe a service" - } - ], - "DescribeTaskDefinition": [ - { - "input": { - "taskDefinition": "hello_world:8" - }, - "output": { - "taskDefinition": { - "containerDefinitions": [ - { - "name": "wordpress", - "cpu": 10, - "environment": [ - - ], - "essential": true, - "image": "wordpress", - "links": [ - "mysql" - ], - "memory": 500, - "mountPoints": [ - - ], - "portMappings": [ - { - "containerPort": 80, - "hostPort": 80 - } - ], - "volumesFrom": [ - - ] - }, - { - "name": "mysql", - "cpu": 10, - "environment": [ - { - "name": "MYSQL_ROOT_PASSWORD", - "value": "password" - } - ], - "essential": true, - "image": "mysql", - "memory": 500, - "mountPoints": [ - - ], - "portMappings": [ - - ], - "volumesFrom": [ - - ] - } - ], - "family": "hello_world", - "revision": 8, - "taskDefinitionArn": "arn:aws:ecs:us-east-1::task-definition/hello_world:8", - "volumes": [ - - ] - } - }, - "comments": { - "input": { - }, - "output": { - } - }, - "description": "This example provides a description of the specified task definition.", - "id": "4c21eeb1-f1da-4a08-8c44-297fc8d0ea88", - "title": "To describe a task definition" - } - ], - "DescribeTasks": [ - { - "input": { - "tasks": [ - "c5cba4eb-5dad-405e-96db-71ef8eefe6a8" - ] - }, - "output": { - "failures": [ - - ], - "tasks": [ - { - "clusterArn": "arn:aws:ecs:::cluster/default", - "containerInstanceArn": "arn:aws:ecs:::container-instance/18f9eda5-27d7-4c19-b133-45adc516e8fb", - "containers": [ - { - "name": "ecs-demo", - "containerArn": "arn:aws:ecs:::container/7c01765b-c588-45b3-8290-4ba38bd6c5a6", - "lastStatus": "RUNNING", - "networkBindings": [ - { - "bindIP": "0.0.0.0", - "containerPort": 80, - "hostPort": 80 - } - ], - "taskArn": "arn:aws:ecs:::task/c5cba4eb-5dad-405e-96db-71ef8eefe6a8" - } - ], - "desiredStatus": "RUNNING", - "lastStatus": "RUNNING", - "overrides": { - "containerOverrides": [ - { - "name": "ecs-demo" - } - ] - }, - "startedBy": "ecs-svc/9223370608528463088", - "taskArn": "arn:aws:ecs:::task/c5cba4eb-5dad-405e-96db-71ef8eefe6a8", - "taskDefinitionArn": "arn:aws:ecs:::task-definition/amazon-ecs-sample:1" - } - ] - }, - "comments": { - "input": { - }, - "output": { - } - }, - "description": "This example provides a description of the specified task, using the task UUID as an identifier.", - "id": "a90b0cde-f965-4946-b55e-cfd8cc54e827", - "title": "To describe a task" - } - ], - "ListClusters": [ - { - "input": { - }, - "output": { - "clusterArns": [ - "arn:aws:ecs:us-east-1::cluster/test", - "arn:aws:ecs:us-east-1::cluster/default" - ] - }, - "comments": { - "input": { - }, - "output": { - } - }, - "description": "This example lists all of your available clusters in your default region.", - "id": "e337d059-134f-4125-ba8e-4f499139facf", - "title": "To list your available clusters" - } - ], - "ListContainerInstances": [ - { - "input": { - "cluster": "default" - }, - "output": { - "containerInstanceArns": [ - "arn:aws:ecs:us-east-1::container-instance/f6bbb147-5370-4ace-8c73-c7181ded911f", - "arn:aws:ecs:us-east-1::container-instance/ffe3d344-77e2-476c-a4d0-bf560ad50acb" - ] - }, - "comments": { - "input": { - }, - "output": { - } - }, - "description": "This example lists all of your available container instances in the specified cluster in your default region.", - "id": "62a82a94-713c-4e18-8420-1d2b2ba9d484", - "title": "To list your available container instances in a cluster" - } - ], - "ListServices": [ - { - "input": { - }, - "output": { - "serviceArns": [ - "arn:aws:ecs:us-east-1:012345678910:service/my-http-service" - ] - }, - "comments": { - "input": { - }, - "output": { - } - }, - "description": "This example lists the services running in the default cluster for an account.", - "id": "1d9a8037-4e0e-4234-a528-609656809a3a", - "title": "To list the services in a cluster" - } - ], - "ListTaskDefinitionFamilies": [ - { - "input": { - }, - "output": { - "families": [ - "node-js-app", - "web-timer", - "hpcc", - "hpcc-c4-8xlarge" - ] - }, - "comments": { - "input": { - }, - "output": { - } - }, - "description": "This example lists all of your registered task definition families.", - "id": "b5c89769-1d94-4ca2-a79e-8069103c7f75", - "title": "To list your registered task definition families" - }, - { - "input": { - "familyPrefix": "hpcc" - }, - "output": { - "families": [ - "hpcc", - "hpcc-c4-8xlarge" - ] - }, - "comments": { - "input": { - }, - "output": { - } - }, - "description": "This example lists the task definition revisions that start with \"hpcc\".", - "id": "8a4cf9a6-42c1-4fe3-852d-99ac8968e11b", - "title": "To filter your registered task definition families" - } - ], - "ListTaskDefinitions": [ - { - "input": { - }, - "output": { - "taskDefinitionArns": [ - "arn:aws:ecs:us-east-1::task-definition/sleep300:2", - "arn:aws:ecs:us-east-1::task-definition/sleep360:1", - "arn:aws:ecs:us-east-1::task-definition/wordpress:3", - "arn:aws:ecs:us-east-1::task-definition/wordpress:4", - "arn:aws:ecs:us-east-1::task-definition/wordpress:5", - "arn:aws:ecs:us-east-1::task-definition/wordpress:6" - ] - }, - "comments": { - "input": { - }, - "output": { - } - }, - "description": "This example lists all of your registered task definitions.", - "id": "b381ebaf-7eba-4d60-b99b-7f6ae49d3d60", - "title": "To list your registered task definitions" - }, - { - "input": { - "familyPrefix": "wordpress" - }, - "output": { - "taskDefinitionArns": [ - "arn:aws:ecs:us-east-1::task-definition/wordpress:3", - "arn:aws:ecs:us-east-1::task-definition/wordpress:4", - "arn:aws:ecs:us-east-1::task-definition/wordpress:5", - "arn:aws:ecs:us-east-1::task-definition/wordpress:6" - ] - }, - "comments": { - "input": { - }, - "output": { - } - }, - "description": "This example lists the task definition revisions of a specified family.", - "id": "734e7afd-753a-4bc2-85d0-badddce10910", - "title": "To list the registered task definitions in a family" - } - ], - "ListTasks": [ - { - "input": { - "cluster": "default" - }, - "output": { - "taskArns": [ - "arn:aws:ecs:us-east-1:012345678910:task/0cc43cdb-3bee-4407-9c26-c0e6ea5bee84", - "arn:aws:ecs:us-east-1:012345678910:task/6b809ef6-c67e-4467-921f-ee261c15a0a1" - ] - }, - "comments": { - "input": { - }, - "output": { - } - }, - "description": "This example lists all of the tasks in a cluster.", - "id": "9a6ec707-1a77-45d0-b2eb-516b5dd9e924", - "title": "To list the tasks in a cluster" - }, - { - "input": { - "cluster": "default", - "containerInstance": "f6bbb147-5370-4ace-8c73-c7181ded911f" - }, - "output": { - "taskArns": [ - "arn:aws:ecs:us-east-1:012345678910:task/0cc43cdb-3bee-4407-9c26-c0e6ea5bee84" - ] - }, - "comments": { - "input": { - }, - "output": { - } - }, - "description": "This example lists the tasks of a specified container instance. Specifying a ``containerInstance`` value limits the results to tasks that belong to that container instance.", - "id": "024bf3b7-9cbb-44e3-848f-9d074e1fecce", - "title": "To list the tasks on a particular container instance" - } - ], - "RegisterTaskDefinition": [ - { - "input": { - "containerDefinitions": [ - { - "name": "sleep", - "command": [ - "sleep", - "360" - ], - "cpu": 10, - "essential": true, - "image": "busybox", - "memory": 10 - } - ], - "family": "sleep360", - "taskRoleArn": "", - "volumes": [ - - ] - }, - "output": { - "taskDefinition": { - "containerDefinitions": [ - { - "name": "sleep", - "command": [ - "sleep", - "360" - ], - "cpu": 10, - "environment": [ - - ], - "essential": true, - "image": "busybox", - "memory": 10, - "mountPoints": [ - - ], - "portMappings": [ - - ], - "volumesFrom": [ - - ] - } - ], - "family": "sleep360", - "revision": 1, - "taskDefinitionArn": "arn:aws:ecs:us-east-1::task-definition/sleep360:19", - "volumes": [ - - ] - } - }, - "comments": { - "input": { - }, - "output": { - } - }, - "description": "This example registers a task definition to the specified family.", - "id": "to-register-a-task-definition-1470764550877", - "title": "To register a task definition" - } - ], - "RunTask": [ - { - "input": { - "cluster": "default", - "taskDefinition": "sleep360:1" - }, - "output": { - "tasks": [ - { - "containerInstanceArn": "arn:aws:ecs:us-east-1::container-instance/ffe3d344-77e2-476c-a4d0-bf560ad50acb", - "containers": [ - { - "name": "sleep", - "containerArn": "arn:aws:ecs:us-east-1::container/58591c8e-be29-4ddf-95aa-ee459d4c59fd", - "lastStatus": "PENDING", - "taskArn": "arn:aws:ecs:us-east-1::task/a9f21ea7-c9f5-44b1-b8e6-b31f50ed33c0" - } - ], - "desiredStatus": "RUNNING", - "lastStatus": "PENDING", - "overrides": { - "containerOverrides": [ - { - "name": "sleep" - } - ] - }, - "taskArn": "arn:aws:ecs:us-east-1::task/a9f21ea7-c9f5-44b1-b8e6-b31f50ed33c0", - "taskDefinitionArn": "arn:aws:ecs:us-east-1::task-definition/sleep360:1" - } - ] - }, - "comments": { - "input": { - }, - "output": { - } - }, - "description": "This example runs the specified task definition on your default cluster.", - "id": "6f238c83-a133-42cd-ab3d-abeca0560445", - "title": "To run a task on your default cluster" - } - ], - "UpdateService": [ - { - "input": { - "service": "my-http-service", - "taskDefinition": "amazon-ecs-sample" - }, - "output": { - }, - "comments": { - "input": { - }, - "output": { - } - }, - "description": "This example updates the my-http-service service to use the amazon-ecs-sample task definition.", - "id": "cc9e8900-0cc2-44d2-8491-64d1d3d37887", - "title": "To change the task definition used in a service" - }, - { - "input": { - "desiredCount": 10, - "service": "my-http-service" - }, - "output": { - }, - "comments": { - "input": { - }, - "output": { - } - }, - "description": "This example updates the desired count of the my-http-service service to 10.", - "id": "9581d6c5-02e3-4140-8cc1-5a4301586633", - "title": "To change the number of tasks in a service" - } - ] - } -} diff --git a/workshops/monte-carlo-on-ec2-spot-fleet/src/web/node_modules/aws-sdk/apis/ecs-2014-11-13.min.json b/workshops/monte-carlo-on-ec2-spot-fleet/src/web/node_modules/aws-sdk/apis/ecs-2014-11-13.min.json deleted file mode 100644 index 52822c34..00000000 --- a/workshops/monte-carlo-on-ec2-spot-fleet/src/web/node_modules/aws-sdk/apis/ecs-2014-11-13.min.json +++ /dev/null @@ -1,1332 +0,0 @@ -{ - "version": "2.0", - "metadata": { - "apiVersion": "2014-11-13", - "endpointPrefix": "ecs", - "jsonVersion": "1.1", - "protocol": "json", - "serviceAbbreviation": "Amazon ECS", - "serviceFullName": "Amazon EC2 Container Service", - "signatureVersion": "v4", - "targetPrefix": "AmazonEC2ContainerServiceV20141113", - "uid": "ecs-2014-11-13" - }, - "operations": { - "CreateCluster": { - "input": { - "type": "structure", - "members": { - "clusterName": {} - } - }, - "output": { - "type": "structure", - "members": { - "cluster": { - "shape": "S4" - } - } - } - }, - "CreateService": { - "input": { - "type": "structure", - "required": [ - "serviceName", - "taskDefinition", - "desiredCount" - ], - "members": { - "cluster": {}, - "serviceName": {}, - "taskDefinition": {}, - "loadBalancers": { - "shape": "S7" - }, - "desiredCount": { - "type": "integer" - }, - "clientToken": {}, - "role": {}, - "deploymentConfiguration": { - "shape": "Sa" - }, - "placementConstraints": { - "shape": "Sb" - }, - "placementStrategy": { - "shape": "Se" - } - } - }, - "output": { - "type": "structure", - "members": { - "service": { - "shape": "Si" - } - } - } - }, - "DeleteAttributes": { - "input": { - "type": "structure", - "required": [ - "attributes" - ], - "members": { - "cluster": {}, - "attributes": { - "shape": "Sp" - } - } - }, - "output": { - "type": "structure", - "members": { - "attributes": { - "shape": "Sp" - } - } - } - }, - "DeleteCluster": { - "input": { - "type": "structure", - "required": [ - "cluster" - ], - "members": { - "cluster": {} - } - }, - "output": { - "type": "structure", - "members": { - "cluster": { - "shape": "S4" - } - } - } - }, - "DeleteService": { - "input": { - "type": "structure", - "required": [ - "service" - ], - "members": { - "cluster": {}, - "service": {} - } - }, - "output": { - "type": "structure", - "members": { - "service": { - "shape": "Si" - } - } - } - }, - "DeregisterContainerInstance": { - "input": { - "type": "structure", - "required": [ - "containerInstance" - ], - "members": { - "cluster": {}, - "containerInstance": {}, - "force": { - "type": "boolean" - } - } - }, - "output": { - "type": "structure", - "members": { - "containerInstance": { - "shape": "S10" - } - } - } - }, - "DeregisterTaskDefinition": { - "input": { - "type": "structure", - "required": [ - "taskDefinition" - ], - "members": { - "taskDefinition": {} - } - }, - "output": { - "type": "structure", - "members": { - "taskDefinition": { - "shape": "S1b" - } - } - } - }, - "DescribeClusters": { - "input": { - "type": "structure", - "members": { - "clusters": { - "shape": "S16" - } - } - }, - "output": { - "type": "structure", - "members": { - "clusters": { - "type": "list", - "member": { - "shape": "S4" - } - }, - "failures": { - "shape": "S2a" - } - } - } - }, - "DescribeContainerInstances": { - "input": { - "type": "structure", - "required": [ - "containerInstances" - ], - "members": { - "cluster": {}, - "containerInstances": { - "shape": "S16" - } - } - }, - "output": { - "type": "structure", - "members": { - "containerInstances": { - "shape": "S2e" - }, - "failures": { - "shape": "S2a" - } - } - } - }, - "DescribeServices": { - "input": { - "type": "structure", - "required": [ - "services" - ], - "members": { - "cluster": {}, - "services": { - "shape": "S16" - } - } - }, - "output": { - "type": "structure", - "members": { - "services": { - "type": "list", - "member": { - "shape": "Si" - } - }, - "failures": { - "shape": "S2a" - } - } - } - }, - "DescribeTaskDefinition": { - "input": { - "type": "structure", - "required": [ - "taskDefinition" - ], - "members": { - "taskDefinition": {} - } - }, - "output": { - "type": "structure", - "members": { - "taskDefinition": { - "shape": "S1b" - } - } - } - }, - "DescribeTasks": { - "input": { - "type": "structure", - "required": [ - "tasks" - ], - "members": { - "cluster": {}, - "tasks": { - "shape": "S16" - } - } - }, - "output": { - "type": "structure", - "members": { - "tasks": { - "shape": "S2m" - }, - "failures": { - "shape": "S2a" - } - } - } - }, - "DiscoverPollEndpoint": { - "input": { - "type": "structure", - "members": { - "containerInstance": {}, - "cluster": {} - } - }, - "output": { - "type": "structure", - "members": { - "endpoint": {}, - "telemetryEndpoint": {} - } - } - }, - "ListAttributes": { - "input": { - "type": "structure", - "required": [ - "targetType" - ], - "members": { - "cluster": {}, - "targetType": {}, - "attributeName": {}, - "attributeValue": {}, - "nextToken": {}, - "maxResults": { - "type": "integer" - } - } - }, - "output": { - "type": "structure", - "members": { - "attributes": { - "shape": "Sp" - }, - "nextToken": {} - } - } - }, - "ListClusters": { - "input": { - "type": "structure", - "members": { - "nextToken": {}, - "maxResults": { - "type": "integer" - } - } - }, - "output": { - "type": "structure", - "members": { - "clusterArns": { - "shape": "S16" - }, - "nextToken": {} - } - } - }, - "ListContainerInstances": { - "input": { - "type": "structure", - "members": { - "cluster": {}, - "filter": {}, - "nextToken": {}, - "maxResults": { - "type": "integer" - }, - "status": {} - } - }, - "output": { - "type": "structure", - "members": { - "containerInstanceArns": { - "shape": "S16" - }, - "nextToken": {} - } - } - }, - "ListServices": { - "input": { - "type": "structure", - "members": { - "cluster": {}, - "nextToken": {}, - "maxResults": { - "type": "integer" - } - } - }, - "output": { - "type": "structure", - "members": { - "serviceArns": { - "shape": "S16" - }, - "nextToken": {} - } - } - }, - "ListTaskDefinitionFamilies": { - "input": { - "type": "structure", - "members": { - "familyPrefix": {}, - "status": {}, - "nextToken": {}, - "maxResults": { - "type": "integer" - } - } - }, - "output": { - "type": "structure", - "members": { - "families": { - "shape": "S16" - }, - "nextToken": {} - } - } - }, - "ListTaskDefinitions": { - "input": { - "type": "structure", - "members": { - "familyPrefix": {}, - "status": {}, - "sort": {}, - "nextToken": {}, - "maxResults": { - "type": "integer" - } - } - }, - "output": { - "type": "structure", - "members": { - "taskDefinitionArns": { - "shape": "S16" - }, - "nextToken": {} - } - } - }, - "ListTasks": { - "input": { - "type": "structure", - "members": { - "cluster": {}, - "containerInstance": {}, - "family": {}, - "nextToken": {}, - "maxResults": { - "type": "integer" - }, - "startedBy": {}, - "serviceName": {}, - "desiredStatus": {} - } - }, - "output": { - "type": "structure", - "members": { - "taskArns": { - "shape": "S16" - }, - "nextToken": {} - } - } - }, - "PutAttributes": { - "input": { - "type": "structure", - "required": [ - "attributes" - ], - "members": { - "cluster": {}, - "attributes": { - "shape": "Sp" - } - } - }, - "output": { - "type": "structure", - "members": { - "attributes": { - "shape": "Sp" - } - } - } - }, - "RegisterContainerInstance": { - "input": { - "type": "structure", - "members": { - "cluster": {}, - "instanceIdentityDocument": {}, - "instanceIdentityDocumentSignature": {}, - "totalResources": { - "shape": "S13" - }, - "versionInfo": { - "shape": "S12" - }, - "containerInstanceArn": {}, - "attributes": { - "shape": "Sp" - } - } - }, - "output": { - "type": "structure", - "members": { - "containerInstance": { - "shape": "S10" - } - } - } - }, - "RegisterTaskDefinition": { - "input": { - "type": "structure", - "required": [ - "family", - "containerDefinitions" - ], - "members": { - "family": {}, - "taskRoleArn": {}, - "networkMode": {}, - "containerDefinitions": { - "shape": "S1c" - }, - "volumes": { - "shape": "S1z" - }, - "placementConstraints": { - "shape": "S24" - } - } - }, - "output": { - "type": "structure", - "members": { - "taskDefinition": { - "shape": "S1b" - } - } - } - }, - "RunTask": { - "input": { - "type": "structure", - "required": [ - "taskDefinition" - ], - "members": { - "cluster": {}, - "taskDefinition": {}, - "overrides": { - "shape": "S2o" - }, - "count": { - "type": "integer" - }, - "startedBy": {}, - "group": {}, - "placementConstraints": { - "shape": "Sb" - }, - "placementStrategy": { - "shape": "Se" - } - } - }, - "output": { - "type": "structure", - "members": { - "tasks": { - "shape": "S2m" - }, - "failures": { - "shape": "S2a" - } - } - } - }, - "StartTask": { - "input": { - "type": "structure", - "required": [ - "taskDefinition", - "containerInstances" - ], - "members": { - "cluster": {}, - "taskDefinition": {}, - "overrides": { - "shape": "S2o" - }, - "containerInstances": { - "shape": "S16" - }, - "startedBy": {}, - "group": {} - } - }, - "output": { - "type": "structure", - "members": { - "tasks": { - "shape": "S2m" - }, - "failures": { - "shape": "S2a" - } - } - } - }, - "StopTask": { - "input": { - "type": "structure", - "required": [ - "task" - ], - "members": { - "cluster": {}, - "task": {}, - "reason": {} - } - }, - "output": { - "type": "structure", - "members": { - "task": { - "shape": "S2n" - } - } - } - }, - "SubmitContainerStateChange": { - "input": { - "type": "structure", - "members": { - "cluster": {}, - "task": {}, - "containerName": {}, - "status": {}, - "exitCode": { - "type": "integer" - }, - "reason": {}, - "networkBindings": { - "shape": "S2t" - } - } - }, - "output": { - "type": "structure", - "members": { - "acknowledgment": {} - } - } - }, - "SubmitTaskStateChange": { - "input": { - "type": "structure", - "members": { - "cluster": {}, - "task": {}, - "status": {}, - "reason": {} - } - }, - "output": { - "type": "structure", - "members": { - "acknowledgment": {} - } - } - }, - "UpdateContainerAgent": { - "input": { - "type": "structure", - "required": [ - "containerInstance" - ], - "members": { - "cluster": {}, - "containerInstance": {} - } - }, - "output": { - "type": "structure", - "members": { - "containerInstance": { - "shape": "S10" - } - } - } - }, - "UpdateContainerInstancesState": { - "input": { - "type": "structure", - "required": [ - "containerInstances", - "status" - ], - "members": { - "cluster": {}, - "containerInstances": { - "shape": "S16" - }, - "status": {} - } - }, - "output": { - "type": "structure", - "members": { - "containerInstances": { - "shape": "S2e" - }, - "failures": { - "shape": "S2a" - } - } - } - }, - "UpdateService": { - "input": { - "type": "structure", - "required": [ - "service" - ], - "members": { - "cluster": {}, - "service": {}, - "desiredCount": { - "type": "integer" - }, - "taskDefinition": {}, - "deploymentConfiguration": { - "shape": "Sa" - } - } - }, - "output": { - "type": "structure", - "members": { - "service": { - "shape": "Si" - } - } - } - } - }, - "shapes": { - "S4": { - "type": "structure", - "members": { - "clusterArn": {}, - "clusterName": {}, - "status": {}, - "registeredContainerInstancesCount": { - "type": "integer" - }, - "runningTasksCount": { - "type": "integer" - }, - "pendingTasksCount": { - "type": "integer" - }, - "activeServicesCount": { - "type": "integer" - } - } - }, - "S7": { - "type": "list", - "member": { - "type": "structure", - "members": { - "targetGroupArn": {}, - "loadBalancerName": {}, - "containerName": {}, - "containerPort": { - "type": "integer" - } - } - } - }, - "Sa": { - "type": "structure", - "members": { - "maximumPercent": { - "type": "integer" - }, - "minimumHealthyPercent": { - "type": "integer" - } - } - }, - "Sb": { - "type": "list", - "member": { - "type": "structure", - "members": { - "type": {}, - "expression": {} - } - } - }, - "Se": { - "type": "list", - "member": { - "type": "structure", - "members": { - "type": {}, - "field": {} - } - } - }, - "Si": { - "type": "structure", - "members": { - "serviceArn": {}, - "serviceName": {}, - "clusterArn": {}, - "loadBalancers": { - "shape": "S7" - }, - "status": {}, - "desiredCount": { - "type": "integer" - }, - "runningCount": { - "type": "integer" - }, - "pendingCount": { - "type": "integer" - }, - "taskDefinition": {}, - "deploymentConfiguration": { - "shape": "Sa" - }, - "deployments": { - "type": "list", - "member": { - "type": "structure", - "members": { - "id": {}, - "status": {}, - "taskDefinition": {}, - "desiredCount": { - "type": "integer" - }, - "pendingCount": { - "type": "integer" - }, - "runningCount": { - "type": "integer" - }, - "createdAt": { - "type": "timestamp" - }, - "updatedAt": { - "type": "timestamp" - } - } - } - }, - "roleArn": {}, - "events": { - "type": "list", - "member": { - "type": "structure", - "members": { - "id": {}, - "createdAt": { - "type": "timestamp" - }, - "message": {} - } - } - }, - "createdAt": { - "type": "timestamp" - }, - "placementConstraints": { - "shape": "Sb" - }, - "placementStrategy": { - "shape": "Se" - } - } - }, - "Sp": { - "type": "list", - "member": { - "shape": "Sq" - } - }, - "Sq": { - "type": "structure", - "required": [ - "name" - ], - "members": { - "name": {}, - "value": {}, - "targetType": {}, - "targetId": {} - } - }, - "S10": { - "type": "structure", - "members": { - "containerInstanceArn": {}, - "ec2InstanceId": {}, - "version": { - "type": "long" - }, - "versionInfo": { - "shape": "S12" - }, - "remainingResources": { - "shape": "S13" - }, - "registeredResources": { - "shape": "S13" - }, - "status": {}, - "agentConnected": { - "type": "boolean" - }, - "runningTasksCount": { - "type": "integer" - }, - "pendingTasksCount": { - "type": "integer" - }, - "agentUpdateStatus": {}, - "attributes": { - "shape": "Sp" - }, - "registeredAt": { - "type": "timestamp" - } - } - }, - "S12": { - "type": "structure", - "members": { - "agentVersion": {}, - "agentHash": {}, - "dockerVersion": {} - } - }, - "S13": { - "type": "list", - "member": { - "type": "structure", - "members": { - "name": {}, - "type": {}, - "doubleValue": { - "type": "double" - }, - "longValue": { - "type": "long" - }, - "integerValue": { - "type": "integer" - }, - "stringSetValue": { - "shape": "S16" - } - } - } - }, - "S16": { - "type": "list", - "member": {} - }, - "S1b": { - "type": "structure", - "members": { - "taskDefinitionArn": {}, - "containerDefinitions": { - "shape": "S1c" - }, - "family": {}, - "taskRoleArn": {}, - "networkMode": {}, - "revision": { - "type": "integer" - }, - "volumes": { - "shape": "S1z" - }, - "status": {}, - "requiresAttributes": { - "type": "list", - "member": { - "shape": "Sq" - } - }, - "placementConstraints": { - "shape": "S24" - } - } - }, - "S1c": { - "type": "list", - "member": { - "type": "structure", - "members": { - "name": {}, - "image": {}, - "cpu": { - "type": "integer" - }, - "memory": { - "type": "integer" - }, - "memoryReservation": { - "type": "integer" - }, - "links": { - "shape": "S16" - }, - "portMappings": { - "type": "list", - "member": { - "type": "structure", - "members": { - "containerPort": { - "type": "integer" - }, - "hostPort": { - "type": "integer" - }, - "protocol": {} - } - } - }, - "essential": { - "type": "boolean" - }, - "entryPoint": { - "shape": "S16" - }, - "command": { - "shape": "S16" - }, - "environment": { - "shape": "S1h" - }, - "mountPoints": { - "type": "list", - "member": { - "type": "structure", - "members": { - "sourceVolume": {}, - "containerPath": {}, - "readOnly": { - "type": "boolean" - } - } - } - }, - "volumesFrom": { - "type": "list", - "member": { - "type": "structure", - "members": { - "sourceContainer": {}, - "readOnly": { - "type": "boolean" - } - } - } - }, - "linuxParameters": { - "type": "structure", - "members": { - "capabilities": { - "type": "structure", - "members": { - "add": { - "shape": "S16" - }, - "drop": { - "shape": "S16" - } - } - } - } - }, - "hostname": {}, - "user": {}, - "workingDirectory": {}, - "disableNetworking": { - "type": "boolean" - }, - "privileged": { - "type": "boolean" - }, - "readonlyRootFilesystem": { - "type": "boolean" - }, - "dnsServers": { - "shape": "S16" - }, - "dnsSearchDomains": { - "shape": "S16" - }, - "extraHosts": { - "type": "list", - "member": { - "type": "structure", - "required": [ - "hostname", - "ipAddress" - ], - "members": { - "hostname": {}, - "ipAddress": {} - } - } - }, - "dockerSecurityOptions": { - "shape": "S16" - }, - "dockerLabels": { - "type": "map", - "key": {}, - "value": {} - }, - "ulimits": { - "type": "list", - "member": { - "type": "structure", - "required": [ - "name", - "softLimit", - "hardLimit" - ], - "members": { - "name": {}, - "softLimit": { - "type": "integer" - }, - "hardLimit": { - "type": "integer" - } - } - } - }, - "logConfiguration": { - "type": "structure", - "required": [ - "logDriver" - ], - "members": { - "logDriver": {}, - "options": { - "type": "map", - "key": {}, - "value": {} - } - } - } - } - } - }, - "S1h": { - "type": "list", - "member": { - "type": "structure", - "members": { - "name": {}, - "value": {} - } - } - }, - "S1z": { - "type": "list", - "member": { - "type": "structure", - "members": { - "name": {}, - "host": { - "type": "structure", - "members": { - "sourcePath": {} - } - } - } - } - }, - "S24": { - "type": "list", - "member": { - "type": "structure", - "members": { - "type": {}, - "expression": {} - } - } - }, - "S2a": { - "type": "list", - "member": { - "type": "structure", - "members": { - "arn": {}, - "reason": {} - } - } - }, - "S2e": { - "type": "list", - "member": { - "shape": "S10" - } - }, - "S2m": { - "type": "list", - "member": { - "shape": "S2n" - } - }, - "S2n": { - "type": "structure", - "members": { - "taskArn": {}, - "clusterArn": {}, - "taskDefinitionArn": {}, - "containerInstanceArn": {}, - "overrides": { - "shape": "S2o" - }, - "lastStatus": {}, - "desiredStatus": {}, - "containers": { - "type": "list", - "member": { - "type": "structure", - "members": { - "containerArn": {}, - "taskArn": {}, - "name": {}, - "lastStatus": {}, - "exitCode": { - "type": "integer" - }, - "reason": {}, - "networkBindings": { - "shape": "S2t" - } - } - } - }, - "startedBy": {}, - "version": { - "type": "long" - }, - "stoppedReason": {}, - "createdAt": { - "type": "timestamp" - }, - "startedAt": { - "type": "timestamp" - }, - "stoppedAt": { - "type": "timestamp" - }, - "group": {} - } - }, - "S2o": { - "type": "structure", - "members": { - "containerOverrides": { - "type": "list", - "member": { - "type": "structure", - "members": { - "name": {}, - "command": { - "shape": "S16" - }, - "environment": { - "shape": "S1h" - }, - "cpu": { - "type": "integer" - }, - "memory": { - "type": "integer" - }, - "memoryReservation": { - "type": "integer" - } - } - } - }, - "taskRoleArn": {} - } - }, - "S2t": { - "type": "list", - "member": { - "type": "structure", - "members": { - "bindIP": {}, - "containerPort": { - "type": "integer" - }, - "hostPort": { - "type": "integer" - }, - "protocol": {} - } - } - } - } -} \ No newline at end of file diff --git a/workshops/monte-carlo-on-ec2-spot-fleet/src/web/node_modules/aws-sdk/apis/ecs-2014-11-13.paginators.json b/workshops/monte-carlo-on-ec2-spot-fleet/src/web/node_modules/aws-sdk/apis/ecs-2014-11-13.paginators.json deleted file mode 100644 index 46cea2a6..00000000 --- a/workshops/monte-carlo-on-ec2-spot-fleet/src/web/node_modules/aws-sdk/apis/ecs-2014-11-13.paginators.json +++ /dev/null @@ -1,40 +0,0 @@ -{ - "pagination": { - "ListClusters": { - "input_token": "nextToken", - "limit_key": "maxResults", - "output_token": "nextToken", - "result_key": "clusterArns" - }, - "ListContainerInstances": { - "input_token": "nextToken", - "limit_key": "maxResults", - "output_token": "nextToken", - "result_key": "containerInstanceArns" - }, - "ListServices": { - "input_token": "nextToken", - "limit_key": "maxResults", - "output_token": "nextToken", - "result_key": "serviceArns" - }, - "ListTaskDefinitionFamilies": { - "input_token": "nextToken", - "limit_key": "maxResults", - "output_token": "nextToken", - "result_key": "families" - }, - "ListTaskDefinitions": { - "input_token": "nextToken", - "limit_key": "maxResults", - "output_token": "nextToken", - "result_key": "taskDefinitionArns" - }, - "ListTasks": { - "input_token": "nextToken", - "limit_key": "maxResults", - "output_token": "nextToken", - "result_key": "taskArns" - } - } -} \ No newline at end of file diff --git a/workshops/monte-carlo-on-ec2-spot-fleet/src/web/node_modules/aws-sdk/apis/ecs-2014-11-13.waiters2.json b/workshops/monte-carlo-on-ec2-spot-fleet/src/web/node_modules/aws-sdk/apis/ecs-2014-11-13.waiters2.json deleted file mode 100644 index 8a0b19d8..00000000 --- a/workshops/monte-carlo-on-ec2-spot-fleet/src/web/node_modules/aws-sdk/apis/ecs-2014-11-13.waiters2.json +++ /dev/null @@ -1,93 +0,0 @@ -{ - "version": 2, - "waiters": { - "TasksRunning": { - "delay": 6, - "operation": "DescribeTasks", - "maxAttempts": 100, - "acceptors": [ - { - "expected": "STOPPED", - "matcher": "pathAny", - "state": "failure", - "argument": "tasks[].lastStatus" - }, - { - "expected": "MISSING", - "matcher": "pathAny", - "state": "failure", - "argument": "failures[].reason" - }, - { - "expected": "RUNNING", - "matcher": "pathAll", - "state": "success", - "argument": "tasks[].lastStatus" - } - ] - }, - "TasksStopped": { - "delay": 6, - "operation": "DescribeTasks", - "maxAttempts": 100, - "acceptors": [ - { - "expected": "STOPPED", - "matcher": "pathAll", - "state": "success", - "argument": "tasks[].lastStatus" - } - ] - }, - "ServicesStable": { - "delay": 15, - "operation": "DescribeServices", - "maxAttempts": 40, - "acceptors": [ - { - "expected": "MISSING", - "matcher": "pathAny", - "state": "failure", - "argument": "failures[].reason" - }, - { - "expected": "DRAINING", - "matcher": "pathAny", - "state": "failure", - "argument": "services[].status" - }, - { - "expected": "INACTIVE", - "matcher": "pathAny", - "state": "failure", - "argument": "services[].status" - }, - { - "expected": true, - "matcher": "path", - "state": "success", - "argument": "length(services[?!(length(deployments) == `1` && runningCount == desiredCount)]) == `0`" - } - ] - }, - "ServicesInactive": { - "delay": 15, - "operation": "DescribeServices", - "maxAttempts": 40, - "acceptors": [ - { - "expected": "MISSING", - "matcher": "pathAny", - "state": "failure", - "argument": "failures[].reason" - }, - { - "expected": "INACTIVE", - "matcher": "pathAny", - "state": "success", - "argument": "services[].status" - } - ] - } - } -} diff --git a/workshops/monte-carlo-on-ec2-spot-fleet/src/web/node_modules/aws-sdk/apis/elasticache-2015-02-02.min.json b/workshops/monte-carlo-on-ec2-spot-fleet/src/web/node_modules/aws-sdk/apis/elasticache-2015-02-02.min.json deleted file mode 100644 index ee9e9d92..00000000 --- a/workshops/monte-carlo-on-ec2-spot-fleet/src/web/node_modules/aws-sdk/apis/elasticache-2015-02-02.min.json +++ /dev/null @@ -1,1600 +0,0 @@ -{ - "version": "2.0", - "metadata": { - "apiVersion": "2015-02-02", - "endpointPrefix": "elasticache", - "protocol": "query", - "serviceFullName": "Amazon ElastiCache", - "signatureVersion": "v4", - "uid": "elasticache-2015-02-02", - "xmlNamespace": "http://elasticache.amazonaws.com/doc/2015-02-02/" - }, - "operations": { - "AddTagsToResource": { - "input": { - "type": "structure", - "required": [ - "ResourceName", - "Tags" - ], - "members": { - "ResourceName": {}, - "Tags": { - "shape": "S3" - } - } - }, - "output": { - "shape": "S5", - "resultWrapper": "AddTagsToResourceResult" - } - }, - "AuthorizeCacheSecurityGroupIngress": { - "input": { - "type": "structure", - "required": [ - "CacheSecurityGroupName", - "EC2SecurityGroupName", - "EC2SecurityGroupOwnerId" - ], - "members": { - "CacheSecurityGroupName": {}, - "EC2SecurityGroupName": {}, - "EC2SecurityGroupOwnerId": {} - } - }, - "output": { - "resultWrapper": "AuthorizeCacheSecurityGroupIngressResult", - "type": "structure", - "members": { - "CacheSecurityGroup": { - "shape": "S8" - } - } - } - }, - "CopySnapshot": { - "input": { - "type": "structure", - "required": [ - "SourceSnapshotName", - "TargetSnapshotName" - ], - "members": { - "SourceSnapshotName": {}, - "TargetSnapshotName": {}, - "TargetBucket": {} - } - }, - "output": { - "resultWrapper": "CopySnapshotResult", - "type": "structure", - "members": { - "Snapshot": { - "shape": "Sd" - } - } - } - }, - "CreateCacheCluster": { - "input": { - "type": "structure", - "required": [ - "CacheClusterId" - ], - "members": { - "CacheClusterId": {}, - "ReplicationGroupId": {}, - "AZMode": {}, - "PreferredAvailabilityZone": {}, - "PreferredAvailabilityZones": { - "shape": "So" - }, - "NumCacheNodes": { - "type": "integer" - }, - "CacheNodeType": {}, - "Engine": {}, - "EngineVersion": {}, - "CacheParameterGroupName": {}, - "CacheSubnetGroupName": {}, - "CacheSecurityGroupNames": { - "shape": "Sp" - }, - "SecurityGroupIds": { - "shape": "Sq" - }, - "Tags": { - "shape": "S3" - }, - "SnapshotArns": { - "shape": "Sr" - }, - "SnapshotName": {}, - "PreferredMaintenanceWindow": {}, - "Port": { - "type": "integer" - }, - "NotificationTopicArn": {}, - "AutoMinorVersionUpgrade": { - "type": "boolean" - }, - "SnapshotRetentionLimit": { - "type": "integer" - }, - "SnapshotWindow": {}, - "AuthToken": {} - } - }, - "output": { - "resultWrapper": "CreateCacheClusterResult", - "type": "structure", - "members": { - "CacheCluster": { - "shape": "Su" - } - } - } - }, - "CreateCacheParameterGroup": { - "input": { - "type": "structure", - "required": [ - "CacheParameterGroupName", - "CacheParameterGroupFamily", - "Description" - ], - "members": { - "CacheParameterGroupName": {}, - "CacheParameterGroupFamily": {}, - "Description": {} - } - }, - "output": { - "resultWrapper": "CreateCacheParameterGroupResult", - "type": "structure", - "members": { - "CacheParameterGroup": { - "shape": "S19" - } - } - } - }, - "CreateCacheSecurityGroup": { - "input": { - "type": "structure", - "required": [ - "CacheSecurityGroupName", - "Description" - ], - "members": { - "CacheSecurityGroupName": {}, - "Description": {} - } - }, - "output": { - "resultWrapper": "CreateCacheSecurityGroupResult", - "type": "structure", - "members": { - "CacheSecurityGroup": { - "shape": "S8" - } - } - } - }, - "CreateCacheSubnetGroup": { - "input": { - "type": "structure", - "required": [ - "CacheSubnetGroupName", - "CacheSubnetGroupDescription", - "SubnetIds" - ], - "members": { - "CacheSubnetGroupName": {}, - "CacheSubnetGroupDescription": {}, - "SubnetIds": { - "shape": "S1d" - } - } - }, - "output": { - "resultWrapper": "CreateCacheSubnetGroupResult", - "type": "structure", - "members": { - "CacheSubnetGroup": { - "shape": "S1f" - } - } - } - }, - "CreateReplicationGroup": { - "input": { - "type": "structure", - "required": [ - "ReplicationGroupId", - "ReplicationGroupDescription" - ], - "members": { - "ReplicationGroupId": {}, - "ReplicationGroupDescription": {}, - "PrimaryClusterId": {}, - "AutomaticFailoverEnabled": { - "type": "boolean" - }, - "NumCacheClusters": { - "type": "integer" - }, - "PreferredCacheClusterAZs": { - "shape": "Sl" - }, - "NumNodeGroups": { - "type": "integer" - }, - "ReplicasPerNodeGroup": { - "type": "integer" - }, - "NodeGroupConfiguration": { - "type": "list", - "member": { - "shape": "Sk", - "locationName": "NodeGroupConfiguration" - } - }, - "CacheNodeType": {}, - "Engine": {}, - "EngineVersion": {}, - "CacheParameterGroupName": {}, - "CacheSubnetGroupName": {}, - "CacheSecurityGroupNames": { - "shape": "Sp" - }, - "SecurityGroupIds": { - "shape": "Sq" - }, - "Tags": { - "shape": "S3" - }, - "SnapshotArns": { - "shape": "Sr" - }, - "SnapshotName": {}, - "PreferredMaintenanceWindow": {}, - "Port": { - "type": "integer" - }, - "NotificationTopicArn": {}, - "AutoMinorVersionUpgrade": { - "type": "boolean" - }, - "SnapshotRetentionLimit": { - "type": "integer" - }, - "SnapshotWindow": {}, - "AuthToken": {} - } - }, - "output": { - "resultWrapper": "CreateReplicationGroupResult", - "type": "structure", - "members": { - "ReplicationGroup": { - "shape": "S1m" - } - } - } - }, - "CreateSnapshot": { - "input": { - "type": "structure", - "required": [ - "SnapshotName" - ], - "members": { - "ReplicationGroupId": {}, - "CacheClusterId": {}, - "SnapshotName": {} - } - }, - "output": { - "resultWrapper": "CreateSnapshotResult", - "type": "structure", - "members": { - "Snapshot": { - "shape": "Sd" - } - } - } - }, - "DeleteCacheCluster": { - "input": { - "type": "structure", - "required": [ - "CacheClusterId" - ], - "members": { - "CacheClusterId": {}, - "FinalSnapshotIdentifier": {} - } - }, - "output": { - "resultWrapper": "DeleteCacheClusterResult", - "type": "structure", - "members": { - "CacheCluster": { - "shape": "Su" - } - } - } - }, - "DeleteCacheParameterGroup": { - "input": { - "type": "structure", - "required": [ - "CacheParameterGroupName" - ], - "members": { - "CacheParameterGroupName": {} - } - } - }, - "DeleteCacheSecurityGroup": { - "input": { - "type": "structure", - "required": [ - "CacheSecurityGroupName" - ], - "members": { - "CacheSecurityGroupName": {} - } - } - }, - "DeleteCacheSubnetGroup": { - "input": { - "type": "structure", - "required": [ - "CacheSubnetGroupName" - ], - "members": { - "CacheSubnetGroupName": {} - } - } - }, - "DeleteReplicationGroup": { - "input": { - "type": "structure", - "required": [ - "ReplicationGroupId" - ], - "members": { - "ReplicationGroupId": {}, - "RetainPrimaryCluster": { - "type": "boolean" - }, - "FinalSnapshotIdentifier": {} - } - }, - "output": { - "resultWrapper": "DeleteReplicationGroupResult", - "type": "structure", - "members": { - "ReplicationGroup": { - "shape": "S1m" - } - } - } - }, - "DeleteSnapshot": { - "input": { - "type": "structure", - "required": [ - "SnapshotName" - ], - "members": { - "SnapshotName": {} - } - }, - "output": { - "resultWrapper": "DeleteSnapshotResult", - "type": "structure", - "members": { - "Snapshot": { - "shape": "Sd" - } - } - } - }, - "DescribeCacheClusters": { - "input": { - "type": "structure", - "members": { - "CacheClusterId": {}, - "MaxRecords": { - "type": "integer" - }, - "Marker": {}, - "ShowCacheNodeInfo": { - "type": "boolean" - }, - "ShowCacheClustersNotInReplicationGroups": { - "type": "boolean" - } - } - }, - "output": { - "resultWrapper": "DescribeCacheClustersResult", - "type": "structure", - "members": { - "Marker": {}, - "CacheClusters": { - "type": "list", - "member": { - "shape": "Su", - "locationName": "CacheCluster" - } - } - } - } - }, - "DescribeCacheEngineVersions": { - "input": { - "type": "structure", - "members": { - "Engine": {}, - "EngineVersion": {}, - "CacheParameterGroupFamily": {}, - "MaxRecords": { - "type": "integer" - }, - "Marker": {}, - "DefaultOnly": { - "type": "boolean" - } - } - }, - "output": { - "resultWrapper": "DescribeCacheEngineVersionsResult", - "type": "structure", - "members": { - "Marker": {}, - "CacheEngineVersions": { - "type": "list", - "member": { - "locationName": "CacheEngineVersion", - "type": "structure", - "members": { - "Engine": {}, - "EngineVersion": {}, - "CacheParameterGroupFamily": {}, - "CacheEngineDescription": {}, - "CacheEngineVersionDescription": {} - } - } - } - } - } - }, - "DescribeCacheParameterGroups": { - "input": { - "type": "structure", - "members": { - "CacheParameterGroupName": {}, - "MaxRecords": { - "type": "integer" - }, - "Marker": {} - } - }, - "output": { - "resultWrapper": "DescribeCacheParameterGroupsResult", - "type": "structure", - "members": { - "Marker": {}, - "CacheParameterGroups": { - "type": "list", - "member": { - "shape": "S19", - "locationName": "CacheParameterGroup" - } - } - } - } - }, - "DescribeCacheParameters": { - "input": { - "type": "structure", - "required": [ - "CacheParameterGroupName" - ], - "members": { - "CacheParameterGroupName": {}, - "Source": {}, - "MaxRecords": { - "type": "integer" - }, - "Marker": {} - } - }, - "output": { - "resultWrapper": "DescribeCacheParametersResult", - "type": "structure", - "members": { - "Marker": {}, - "Parameters": { - "shape": "S2h" - }, - "CacheNodeTypeSpecificParameters": { - "shape": "S2k" - } - } - } - }, - "DescribeCacheSecurityGroups": { - "input": { - "type": "structure", - "members": { - "CacheSecurityGroupName": {}, - "MaxRecords": { - "type": "integer" - }, - "Marker": {} - } - }, - "output": { - "resultWrapper": "DescribeCacheSecurityGroupsResult", - "type": "structure", - "members": { - "Marker": {}, - "CacheSecurityGroups": { - "type": "list", - "member": { - "shape": "S8", - "locationName": "CacheSecurityGroup" - } - } - } - } - }, - "DescribeCacheSubnetGroups": { - "input": { - "type": "structure", - "members": { - "CacheSubnetGroupName": {}, - "MaxRecords": { - "type": "integer" - }, - "Marker": {} - } - }, - "output": { - "resultWrapper": "DescribeCacheSubnetGroupsResult", - "type": "structure", - "members": { - "Marker": {}, - "CacheSubnetGroups": { - "type": "list", - "member": { - "shape": "S1f", - "locationName": "CacheSubnetGroup" - } - } - } - } - }, - "DescribeEngineDefaultParameters": { - "input": { - "type": "structure", - "required": [ - "CacheParameterGroupFamily" - ], - "members": { - "CacheParameterGroupFamily": {}, - "MaxRecords": { - "type": "integer" - }, - "Marker": {} - } - }, - "output": { - "resultWrapper": "DescribeEngineDefaultParametersResult", - "type": "structure", - "members": { - "EngineDefaults": { - "type": "structure", - "members": { - "CacheParameterGroupFamily": {}, - "Marker": {}, - "Parameters": { - "shape": "S2h" - }, - "CacheNodeTypeSpecificParameters": { - "shape": "S2k" - } - }, - "wrapper": true - } - } - } - }, - "DescribeEvents": { - "input": { - "type": "structure", - "members": { - "SourceIdentifier": {}, - "SourceType": {}, - "StartTime": { - "type": "timestamp" - }, - "EndTime": { - "type": "timestamp" - }, - "Duration": { - "type": "integer" - }, - "MaxRecords": { - "type": "integer" - }, - "Marker": {} - } - }, - "output": { - "resultWrapper": "DescribeEventsResult", - "type": "structure", - "members": { - "Marker": {}, - "Events": { - "type": "list", - "member": { - "locationName": "Event", - "type": "structure", - "members": { - "SourceIdentifier": {}, - "SourceType": {}, - "Message": {}, - "Date": { - "type": "timestamp" - } - } - } - } - } - } - }, - "DescribeReplicationGroups": { - "input": { - "type": "structure", - "members": { - "ReplicationGroupId": {}, - "MaxRecords": { - "type": "integer" - }, - "Marker": {} - } - }, - "output": { - "resultWrapper": "DescribeReplicationGroupsResult", - "type": "structure", - "members": { - "Marker": {}, - "ReplicationGroups": { - "type": "list", - "member": { - "shape": "S1m", - "locationName": "ReplicationGroup" - } - } - } - } - }, - "DescribeReservedCacheNodes": { - "input": { - "type": "structure", - "members": { - "ReservedCacheNodeId": {}, - "ReservedCacheNodesOfferingId": {}, - "CacheNodeType": {}, - "Duration": {}, - "ProductDescription": {}, - "OfferingType": {}, - "MaxRecords": { - "type": "integer" - }, - "Marker": {} - } - }, - "output": { - "resultWrapper": "DescribeReservedCacheNodesResult", - "type": "structure", - "members": { - "Marker": {}, - "ReservedCacheNodes": { - "type": "list", - "member": { - "shape": "S38", - "locationName": "ReservedCacheNode" - } - } - } - } - }, - "DescribeReservedCacheNodesOfferings": { - "input": { - "type": "structure", - "members": { - "ReservedCacheNodesOfferingId": {}, - "CacheNodeType": {}, - "Duration": {}, - "ProductDescription": {}, - "OfferingType": {}, - "MaxRecords": { - "type": "integer" - }, - "Marker": {} - } - }, - "output": { - "resultWrapper": "DescribeReservedCacheNodesOfferingsResult", - "type": "structure", - "members": { - "Marker": {}, - "ReservedCacheNodesOfferings": { - "type": "list", - "member": { - "locationName": "ReservedCacheNodesOffering", - "type": "structure", - "members": { - "ReservedCacheNodesOfferingId": {}, - "CacheNodeType": {}, - "Duration": { - "type": "integer" - }, - "FixedPrice": { - "type": "double" - }, - "UsagePrice": { - "type": "double" - }, - "ProductDescription": {}, - "OfferingType": {}, - "RecurringCharges": { - "shape": "S3a" - } - }, - "wrapper": true - } - } - } - } - }, - "DescribeSnapshots": { - "input": { - "type": "structure", - "members": { - "ReplicationGroupId": {}, - "CacheClusterId": {}, - "SnapshotName": {}, - "SnapshotSource": {}, - "Marker": {}, - "MaxRecords": { - "type": "integer" - }, - "ShowNodeGroupConfig": { - "type": "boolean" - } - } - }, - "output": { - "resultWrapper": "DescribeSnapshotsResult", - "type": "structure", - "members": { - "Marker": {}, - "Snapshots": { - "type": "list", - "member": { - "shape": "Sd", - "locationName": "Snapshot" - } - } - } - } - }, - "ListAllowedNodeTypeModifications": { - "input": { - "type": "structure", - "members": { - "CacheClusterId": {}, - "ReplicationGroupId": {} - } - }, - "output": { - "resultWrapper": "ListAllowedNodeTypeModificationsResult", - "type": "structure", - "members": { - "ScaleUpModifications": { - "type": "list", - "member": {} - } - } - } - }, - "ListTagsForResource": { - "input": { - "type": "structure", - "required": [ - "ResourceName" - ], - "members": { - "ResourceName": {} - } - }, - "output": { - "shape": "S5", - "resultWrapper": "ListTagsForResourceResult" - } - }, - "ModifyCacheCluster": { - "input": { - "type": "structure", - "required": [ - "CacheClusterId" - ], - "members": { - "CacheClusterId": {}, - "NumCacheNodes": { - "type": "integer" - }, - "CacheNodeIdsToRemove": { - "shape": "Sy" - }, - "AZMode": {}, - "NewAvailabilityZones": { - "shape": "So" - }, - "CacheSecurityGroupNames": { - "shape": "Sp" - }, - "SecurityGroupIds": { - "shape": "Sq" - }, - "PreferredMaintenanceWindow": {}, - "NotificationTopicArn": {}, - "CacheParameterGroupName": {}, - "NotificationTopicStatus": {}, - "ApplyImmediately": { - "type": "boolean" - }, - "EngineVersion": {}, - "AutoMinorVersionUpgrade": { - "type": "boolean" - }, - "SnapshotRetentionLimit": { - "type": "integer" - }, - "SnapshotWindow": {}, - "CacheNodeType": {} - } - }, - "output": { - "resultWrapper": "ModifyCacheClusterResult", - "type": "structure", - "members": { - "CacheCluster": { - "shape": "Su" - } - } - } - }, - "ModifyCacheParameterGroup": { - "input": { - "type": "structure", - "required": [ - "CacheParameterGroupName", - "ParameterNameValues" - ], - "members": { - "CacheParameterGroupName": {}, - "ParameterNameValues": { - "shape": "S3q" - } - } - }, - "output": { - "shape": "S3s", - "resultWrapper": "ModifyCacheParameterGroupResult" - } - }, - "ModifyCacheSubnetGroup": { - "input": { - "type": "structure", - "required": [ - "CacheSubnetGroupName" - ], - "members": { - "CacheSubnetGroupName": {}, - "CacheSubnetGroupDescription": {}, - "SubnetIds": { - "shape": "S1d" - } - } - }, - "output": { - "resultWrapper": "ModifyCacheSubnetGroupResult", - "type": "structure", - "members": { - "CacheSubnetGroup": { - "shape": "S1f" - } - } - } - }, - "ModifyReplicationGroup": { - "input": { - "type": "structure", - "required": [ - "ReplicationGroupId" - ], - "members": { - "ReplicationGroupId": {}, - "ReplicationGroupDescription": {}, - "PrimaryClusterId": {}, - "SnapshottingClusterId": {}, - "AutomaticFailoverEnabled": { - "type": "boolean" - }, - "CacheSecurityGroupNames": { - "shape": "Sp" - }, - "SecurityGroupIds": { - "shape": "Sq" - }, - "PreferredMaintenanceWindow": {}, - "NotificationTopicArn": {}, - "CacheParameterGroupName": {}, - "NotificationTopicStatus": {}, - "ApplyImmediately": { - "type": "boolean" - }, - "EngineVersion": {}, - "AutoMinorVersionUpgrade": { - "type": "boolean" - }, - "SnapshotRetentionLimit": { - "type": "integer" - }, - "SnapshotWindow": {}, - "CacheNodeType": {}, - "NodeGroupId": {} - } - }, - "output": { - "resultWrapper": "ModifyReplicationGroupResult", - "type": "structure", - "members": { - "ReplicationGroup": { - "shape": "S1m" - } - } - } - }, - "PurchaseReservedCacheNodesOffering": { - "input": { - "type": "structure", - "required": [ - "ReservedCacheNodesOfferingId" - ], - "members": { - "ReservedCacheNodesOfferingId": {}, - "ReservedCacheNodeId": {}, - "CacheNodeCount": { - "type": "integer" - } - } - }, - "output": { - "resultWrapper": "PurchaseReservedCacheNodesOfferingResult", - "type": "structure", - "members": { - "ReservedCacheNode": { - "shape": "S38" - } - } - } - }, - "RebootCacheCluster": { - "input": { - "type": "structure", - "required": [ - "CacheClusterId", - "CacheNodeIdsToReboot" - ], - "members": { - "CacheClusterId": {}, - "CacheNodeIdsToReboot": { - "shape": "Sy" - } - } - }, - "output": { - "resultWrapper": "RebootCacheClusterResult", - "type": "structure", - "members": { - "CacheCluster": { - "shape": "Su" - } - } - } - }, - "RemoveTagsFromResource": { - "input": { - "type": "structure", - "required": [ - "ResourceName", - "TagKeys" - ], - "members": { - "ResourceName": {}, - "TagKeys": { - "type": "list", - "member": {} - } - } - }, - "output": { - "shape": "S5", - "resultWrapper": "RemoveTagsFromResourceResult" - } - }, - "ResetCacheParameterGroup": { - "input": { - "type": "structure", - "required": [ - "CacheParameterGroupName" - ], - "members": { - "CacheParameterGroupName": {}, - "ResetAllParameters": { - "type": "boolean" - }, - "ParameterNameValues": { - "shape": "S3q" - } - } - }, - "output": { - "shape": "S3s", - "resultWrapper": "ResetCacheParameterGroupResult" - } - }, - "RevokeCacheSecurityGroupIngress": { - "input": { - "type": "structure", - "required": [ - "CacheSecurityGroupName", - "EC2SecurityGroupName", - "EC2SecurityGroupOwnerId" - ], - "members": { - "CacheSecurityGroupName": {}, - "EC2SecurityGroupName": {}, - "EC2SecurityGroupOwnerId": {} - } - }, - "output": { - "resultWrapper": "RevokeCacheSecurityGroupIngressResult", - "type": "structure", - "members": { - "CacheSecurityGroup": { - "shape": "S8" - } - } - } - }, - "TestFailover": { - "input": { - "type": "structure", - "required": [ - "ReplicationGroupId", - "NodeGroupId" - ], - "members": { - "ReplicationGroupId": {}, - "NodeGroupId": {} - } - }, - "output": { - "resultWrapper": "TestFailoverResult", - "type": "structure", - "members": { - "ReplicationGroup": { - "shape": "S1m" - } - } - } - } - }, - "shapes": { - "S3": { - "type": "list", - "member": { - "locationName": "Tag", - "type": "structure", - "members": { - "Key": {}, - "Value": {} - } - } - }, - "S5": { - "type": "structure", - "members": { - "TagList": { - "shape": "S3" - } - } - }, - "S8": { - "type": "structure", - "members": { - "OwnerId": {}, - "CacheSecurityGroupName": {}, - "Description": {}, - "EC2SecurityGroups": { - "type": "list", - "member": { - "locationName": "EC2SecurityGroup", - "type": "structure", - "members": { - "Status": {}, - "EC2SecurityGroupName": {}, - "EC2SecurityGroupOwnerId": {} - } - } - } - }, - "wrapper": true - }, - "Sd": { - "type": "structure", - "members": { - "SnapshotName": {}, - "ReplicationGroupId": {}, - "ReplicationGroupDescription": {}, - "CacheClusterId": {}, - "SnapshotStatus": {}, - "SnapshotSource": {}, - "CacheNodeType": {}, - "Engine": {}, - "EngineVersion": {}, - "NumCacheNodes": { - "type": "integer" - }, - "PreferredAvailabilityZone": {}, - "CacheClusterCreateTime": { - "type": "timestamp" - }, - "PreferredMaintenanceWindow": {}, - "TopicArn": {}, - "Port": { - "type": "integer" - }, - "CacheParameterGroupName": {}, - "CacheSubnetGroupName": {}, - "VpcId": {}, - "AutoMinorVersionUpgrade": { - "type": "boolean" - }, - "SnapshotRetentionLimit": { - "type": "integer" - }, - "SnapshotWindow": {}, - "NumNodeGroups": { - "type": "integer" - }, - "AutomaticFailover": {}, - "NodeSnapshots": { - "type": "list", - "member": { - "locationName": "NodeSnapshot", - "type": "structure", - "members": { - "CacheClusterId": {}, - "NodeGroupId": {}, - "CacheNodeId": {}, - "NodeGroupConfiguration": { - "shape": "Sk" - }, - "CacheSize": {}, - "CacheNodeCreateTime": { - "type": "timestamp" - }, - "SnapshotCreateTime": { - "type": "timestamp" - } - }, - "wrapper": true - } - } - }, - "wrapper": true - }, - "Sk": { - "type": "structure", - "members": { - "Slots": {}, - "ReplicaCount": { - "type": "integer" - }, - "PrimaryAvailabilityZone": {}, - "ReplicaAvailabilityZones": { - "shape": "Sl" - } - } - }, - "Sl": { - "type": "list", - "member": { - "locationName": "AvailabilityZone" - } - }, - "So": { - "type": "list", - "member": { - "locationName": "PreferredAvailabilityZone" - } - }, - "Sp": { - "type": "list", - "member": { - "locationName": "CacheSecurityGroupName" - } - }, - "Sq": { - "type": "list", - "member": { - "locationName": "SecurityGroupId" - } - }, - "Sr": { - "type": "list", - "member": { - "locationName": "SnapshotArn" - } - }, - "Su": { - "type": "structure", - "members": { - "CacheClusterId": {}, - "ConfigurationEndpoint": { - "shape": "Sv" - }, - "ClientDownloadLandingPage": {}, - "CacheNodeType": {}, - "Engine": {}, - "EngineVersion": {}, - "CacheClusterStatus": {}, - "NumCacheNodes": { - "type": "integer" - }, - "PreferredAvailabilityZone": {}, - "CacheClusterCreateTime": { - "type": "timestamp" - }, - "PreferredMaintenanceWindow": {}, - "PendingModifiedValues": { - "type": "structure", - "members": { - "NumCacheNodes": { - "type": "integer" - }, - "CacheNodeIdsToRemove": { - "shape": "Sy" - }, - "EngineVersion": {}, - "CacheNodeType": {} - } - }, - "NotificationConfiguration": { - "type": "structure", - "members": { - "TopicArn": {}, - "TopicStatus": {} - } - }, - "CacheSecurityGroups": { - "type": "list", - "member": { - "locationName": "CacheSecurityGroup", - "type": "structure", - "members": { - "CacheSecurityGroupName": {}, - "Status": {} - } - } - }, - "CacheParameterGroup": { - "type": "structure", - "members": { - "CacheParameterGroupName": {}, - "ParameterApplyStatus": {}, - "CacheNodeIdsToReboot": { - "shape": "Sy" - } - } - }, - "CacheSubnetGroupName": {}, - "CacheNodes": { - "type": "list", - "member": { - "locationName": "CacheNode", - "type": "structure", - "members": { - "CacheNodeId": {}, - "CacheNodeStatus": {}, - "CacheNodeCreateTime": { - "type": "timestamp" - }, - "Endpoint": { - "shape": "Sv" - }, - "ParameterGroupStatus": {}, - "SourceCacheNodeId": {}, - "CustomerAvailabilityZone": {} - } - } - }, - "AutoMinorVersionUpgrade": { - "type": "boolean" - }, - "SecurityGroups": { - "type": "list", - "member": { - "type": "structure", - "members": { - "SecurityGroupId": {}, - "Status": {} - } - } - }, - "ReplicationGroupId": {}, - "SnapshotRetentionLimit": { - "type": "integer" - }, - "SnapshotWindow": {} - }, - "wrapper": true - }, - "Sv": { - "type": "structure", - "members": { - "Address": {}, - "Port": { - "type": "integer" - } - } - }, - "Sy": { - "type": "list", - "member": { - "locationName": "CacheNodeId" - } - }, - "S19": { - "type": "structure", - "members": { - "CacheParameterGroupName": {}, - "CacheParameterGroupFamily": {}, - "Description": {} - }, - "wrapper": true - }, - "S1d": { - "type": "list", - "member": { - "locationName": "SubnetIdentifier" - } - }, - "S1f": { - "type": "structure", - "members": { - "CacheSubnetGroupName": {}, - "CacheSubnetGroupDescription": {}, - "VpcId": {}, - "Subnets": { - "type": "list", - "member": { - "locationName": "Subnet", - "type": "structure", - "members": { - "SubnetIdentifier": {}, - "SubnetAvailabilityZone": { - "type": "structure", - "members": { - "Name": {} - }, - "wrapper": true - } - } - } - } - }, - "wrapper": true - }, - "S1m": { - "type": "structure", - "members": { - "ReplicationGroupId": {}, - "Description": {}, - "Status": {}, - "PendingModifiedValues": { - "type": "structure", - "members": { - "PrimaryClusterId": {}, - "AutomaticFailoverStatus": {} - } - }, - "MemberClusters": { - "type": "list", - "member": { - "locationName": "ClusterId" - } - }, - "NodeGroups": { - "type": "list", - "member": { - "locationName": "NodeGroup", - "type": "structure", - "members": { - "NodeGroupId": {}, - "Status": {}, - "PrimaryEndpoint": { - "shape": "Sv" - }, - "Slots": {}, - "NodeGroupMembers": { - "type": "list", - "member": { - "locationName": "NodeGroupMember", - "type": "structure", - "members": { - "CacheClusterId": {}, - "CacheNodeId": {}, - "ReadEndpoint": { - "shape": "Sv" - }, - "PreferredAvailabilityZone": {}, - "CurrentRole": {} - } - } - } - } - } - }, - "SnapshottingClusterId": {}, - "AutomaticFailover": {}, - "ConfigurationEndpoint": { - "shape": "Sv" - }, - "SnapshotRetentionLimit": { - "type": "integer" - }, - "SnapshotWindow": {}, - "ClusterEnabled": { - "type": "boolean" - }, - "CacheNodeType": {} - }, - "wrapper": true - }, - "S2h": { - "type": "list", - "member": { - "locationName": "Parameter", - "type": "structure", - "members": { - "ParameterName": {}, - "ParameterValue": {}, - "Description": {}, - "Source": {}, - "DataType": {}, - "AllowedValues": {}, - "IsModifiable": { - "type": "boolean" - }, - "MinimumEngineVersion": {}, - "ChangeType": {} - } - } - }, - "S2k": { - "type": "list", - "member": { - "locationName": "CacheNodeTypeSpecificParameter", - "type": "structure", - "members": { - "ParameterName": {}, - "Description": {}, - "Source": {}, - "DataType": {}, - "AllowedValues": {}, - "IsModifiable": { - "type": "boolean" - }, - "MinimumEngineVersion": {}, - "CacheNodeTypeSpecificValues": { - "type": "list", - "member": { - "locationName": "CacheNodeTypeSpecificValue", - "type": "structure", - "members": { - "CacheNodeType": {}, - "Value": {} - } - } - }, - "ChangeType": {} - } - } - }, - "S38": { - "type": "structure", - "members": { - "ReservedCacheNodeId": {}, - "ReservedCacheNodesOfferingId": {}, - "CacheNodeType": {}, - "StartTime": { - "type": "timestamp" - }, - "Duration": { - "type": "integer" - }, - "FixedPrice": { - "type": "double" - }, - "UsagePrice": { - "type": "double" - }, - "CacheNodeCount": { - "type": "integer" - }, - "ProductDescription": {}, - "OfferingType": {}, - "State": {}, - "RecurringCharges": { - "shape": "S3a" - } - }, - "wrapper": true - }, - "S3a": { - "type": "list", - "member": { - "locationName": "RecurringCharge", - "type": "structure", - "members": { - "RecurringChargeAmount": { - "type": "double" - }, - "RecurringChargeFrequency": {} - }, - "wrapper": true - } - }, - "S3q": { - "type": "list", - "member": { - "locationName": "ParameterNameValue", - "type": "structure", - "members": { - "ParameterName": {}, - "ParameterValue": {} - } - } - }, - "S3s": { - "type": "structure", - "members": { - "CacheParameterGroupName": {} - } - } - } -} \ No newline at end of file diff --git a/workshops/monte-carlo-on-ec2-spot-fleet/src/web/node_modules/aws-sdk/apis/elasticache-2015-02-02.paginators.json b/workshops/monte-carlo-on-ec2-spot-fleet/src/web/node_modules/aws-sdk/apis/elasticache-2015-02-02.paginators.json deleted file mode 100644 index 44f59260..00000000 --- a/workshops/monte-carlo-on-ec2-spot-fleet/src/web/node_modules/aws-sdk/apis/elasticache-2015-02-02.paginators.json +++ /dev/null @@ -1,76 +0,0 @@ -{ - "pagination": { - "DescribeCacheClusters": { - "input_token": "Marker", - "limit_key": "MaxRecords", - "output_token": "Marker", - "result_key": "CacheClusters" - }, - "DescribeCacheEngineVersions": { - "input_token": "Marker", - "limit_key": "MaxRecords", - "output_token": "Marker", - "result_key": "CacheEngineVersions" - }, - "DescribeCacheParameterGroups": { - "input_token": "Marker", - "limit_key": "MaxRecords", - "output_token": "Marker", - "result_key": "CacheParameterGroups" - }, - "DescribeCacheParameters": { - "input_token": "Marker", - "limit_key": "MaxRecords", - "output_token": "Marker", - "result_key": "Parameters" - }, - "DescribeCacheSecurityGroups": { - "input_token": "Marker", - "limit_key": "MaxRecords", - "output_token": "Marker", - "result_key": "CacheSecurityGroups" - }, - "DescribeCacheSubnetGroups": { - "input_token": "Marker", - "limit_key": "MaxRecords", - "output_token": "Marker", - "result_key": "CacheSubnetGroups" - }, - "DescribeEngineDefaultParameters": { - "input_token": "Marker", - "limit_key": "MaxRecords", - "output_token": "EngineDefaults.Marker", - "result_key": "EngineDefaults.Parameters" - }, - "DescribeEvents": { - "input_token": "Marker", - "limit_key": "MaxRecords", - "output_token": "Marker", - "result_key": "Events" - }, - "DescribeReplicationGroups": { - "input_token": "Marker", - "limit_key": "MaxRecords", - "output_token": "Marker", - "result_key": "ReplicationGroups" - }, - "DescribeReservedCacheNodes": { - "input_token": "Marker", - "limit_key": "MaxRecords", - "output_token": "Marker", - "result_key": "ReservedCacheNodes" - }, - "DescribeReservedCacheNodesOfferings": { - "input_token": "Marker", - "limit_key": "MaxRecords", - "output_token": "Marker", - "result_key": "ReservedCacheNodesOfferings" - }, - "DescribeSnapshots": { - "input_token": "Marker", - "limit_key": "MaxRecords", - "output_token": "Marker", - "result_key": "Snapshots" - } - } -} \ No newline at end of file diff --git a/workshops/monte-carlo-on-ec2-spot-fleet/src/web/node_modules/aws-sdk/apis/elasticache-2015-02-02.waiters2.json b/workshops/monte-carlo-on-ec2-spot-fleet/src/web/node_modules/aws-sdk/apis/elasticache-2015-02-02.waiters2.json deleted file mode 100644 index c177d7b9..00000000 --- a/workshops/monte-carlo-on-ec2-spot-fleet/src/web/node_modules/aws-sdk/apis/elasticache-2015-02-02.waiters2.json +++ /dev/null @@ -1,143 +0,0 @@ -{ - "version":2, - "waiters":{ - "CacheClusterAvailable":{ - "acceptors":[ - { - "argument":"CacheClusters[].CacheClusterStatus", - "expected":"available", - "matcher":"pathAll", - "state":"success" - }, - { - "argument":"CacheClusters[].CacheClusterStatus", - "expected":"deleted", - "matcher":"pathAny", - "state":"failure" - }, - { - "argument":"CacheClusters[].CacheClusterStatus", - "expected":"deleting", - "matcher":"pathAny", - "state":"failure" - }, - { - "argument":"CacheClusters[].CacheClusterStatus", - "expected":"incompatible-network", - "matcher":"pathAny", - "state":"failure" - }, - { - "argument":"CacheClusters[].CacheClusterStatus", - "expected":"restore-failed", - "matcher":"pathAny", - "state":"failure" - } - ], - "delay":15, - "description":"Wait until ElastiCache cluster is available.", - "maxAttempts":40, - "operation":"DescribeCacheClusters" - }, - "CacheClusterDeleted":{ - "acceptors":[ - { - "argument":"CacheClusters[].CacheClusterStatus", - "expected":"deleted", - "matcher":"pathAll", - "state":"success" - }, - { - "expected":"CacheClusterNotFound", - "matcher":"error", - "state":"success" - }, - { - "argument":"CacheClusters[].CacheClusterStatus", - "expected":"available", - "matcher":"pathAny", - "state":"failure" - }, - { - "argument":"CacheClusters[].CacheClusterStatus", - "expected":"creating", - "matcher":"pathAny", - "state":"failure" - }, - { - "argument":"CacheClusters[].CacheClusterStatus", - "expected":"incompatible-network", - "matcher":"pathAny", - "state":"failure" - }, - { - "argument":"CacheClusters[].CacheClusterStatus", - "expected":"modifying", - "matcher":"pathAny", - "state":"failure" - }, - { - "argument":"CacheClusters[].CacheClusterStatus", - "expected":"restore-failed", - "matcher":"pathAny", - "state":"failure" - }, - { - "argument":"CacheClusters[].CacheClusterStatus", - "expected":"snapshotting", - "matcher":"pathAny", - "state":"failure" - } - ], - "delay":15, - "description":"Wait until ElastiCache cluster is deleted.", - "maxAttempts":40, - "operation":"DescribeCacheClusters" - }, - "ReplicationGroupAvailable":{ - "acceptors":[ - { - "argument":"ReplicationGroups[].Status", - "expected":"available", - "matcher":"pathAll", - "state":"success" - }, - { - "argument":"ReplicationGroups[].Status", - "expected":"deleted", - "matcher":"pathAny", - "state":"failure" - } - ], - "delay":15, - "description":"Wait until ElastiCache replication group is available.", - "maxAttempts":40, - "operation":"DescribeReplicationGroups" - }, - "ReplicationGroupDeleted":{ - "acceptors":[ - { - "argument":"ReplicationGroups[].Status", - "expected":"deleted", - "matcher":"pathAll", - "state":"success" - }, - { - "argument":"ReplicationGroups[].Status", - "expected":"available", - "matcher":"pathAny", - "state":"failure" - }, - { - "expected":"ReplicationGroupNotFoundFault", - "matcher":"error", - "state":"success" - } - ], - "delay":15, - "description":"Wait until ElastiCache replication group is deleted.", - "maxAttempts":40, - "operation":"DescribeReplicationGroups" - } - } -} diff --git a/workshops/monte-carlo-on-ec2-spot-fleet/src/web/node_modules/aws-sdk/apis/elasticbeanstalk-2010-12-01.examples.json b/workshops/monte-carlo-on-ec2-spot-fleet/src/web/node_modules/aws-sdk/apis/elasticbeanstalk-2010-12-01.examples.json deleted file mode 100644 index 0fded628..00000000 --- a/workshops/monte-carlo-on-ec2-spot-fleet/src/web/node_modules/aws-sdk/apis/elasticbeanstalk-2010-12-01.examples.json +++ /dev/null @@ -1,1109 +0,0 @@ -{ - "version": "1.0", - "examples": { - "AbortEnvironmentUpdate": [ - { - "input": { - "EnvironmentName": "my-env" - }, - "comments": { - "input": { - }, - "output": { - } - }, - "description": "The following code aborts a running application version deployment for an environment named my-env:", - "id": "to-abort-a-deployment-1456267848227", - "title": "To abort a deployment" - } - ], - "CheckDNSAvailability": [ - { - "input": { - "CNAMEPrefix": "my-cname" - }, - "output": { - "Available": true, - "FullyQualifiedCNAME": "my-cname.us-west-2.elasticbeanstalk.com" - }, - "comments": { - "input": { - }, - "output": { - } - }, - "description": "The following operation checks the availability of the subdomain my-cname:", - "id": "to-check-the-availability-of-a-cname-1456268589537", - "title": "To check the availability of a CNAME" - } - ], - "CreateApplication": [ - { - "input": { - "ApplicationName": "my-app", - "Description": "my application" - }, - "output": { - "Application": { - "ApplicationName": "my-app", - "ConfigurationTemplates": [ - - ], - "DateCreated": "2015-02-12T18:32:21.181Z", - "DateUpdated": "2015-02-12T18:32:21.181Z", - "Description": "my application" - } - }, - "comments": { - "input": { - }, - "output": { - } - }, - "description": "The following operation creates a new application named my-app:", - "id": "to-create-a-new-application-1456268895683", - "title": "To create a new application" - } - ], - "CreateApplicationVersion": [ - { - "input": { - "ApplicationName": "my-app", - "AutoCreateApplication": true, - "Description": "my-app-v1", - "Process": true, - "SourceBundle": { - "S3Bucket": "my-bucket", - "S3Key": "sample.war" - }, - "VersionLabel": "v1" - }, - "output": { - "ApplicationVersion": { - "ApplicationName": "my-app", - "DateCreated": "2015-02-03T23:01:25.412Z", - "DateUpdated": "2015-02-03T23:01:25.412Z", - "Description": "my-app-v1", - "SourceBundle": { - "S3Bucket": "my-bucket", - "S3Key": "sample.war" - }, - "VersionLabel": "v1" - } - }, - "comments": { - "input": { - }, - "output": { - } - }, - "description": "The following operation creates a new version (v1) of an application named my-app:", - "id": "to-create-a-new-application-1456268895683", - "title": "To create a new application" - } - ], - "CreateConfigurationTemplate": [ - { - "input": { - "ApplicationName": "my-app", - "EnvironmentId": "e-rpqsewtp2j", - "TemplateName": "my-app-v1" - }, - "output": { - "ApplicationName": "my-app", - "DateCreated": "2015-08-12T18:40:39Z", - "DateUpdated": "2015-08-12T18:40:39Z", - "SolutionStackName": "64bit Amazon Linux 2015.03 v2.0.0 running Tomcat 8 Java 8", - "TemplateName": "my-app-v1" - }, - "comments": { - "input": { - }, - "output": { - } - }, - "description": "The following operation creates a configuration template named my-app-v1 from the settings applied to an environment with the id e-rpqsewtp2j:", - "id": "to-create-a-configuration-template-1456269283586", - "title": "To create a configuration template" - } - ], - "CreateEnvironment": [ - { - "input": { - "ApplicationName": "my-app", - "CNAMEPrefix": "my-app", - "EnvironmentName": "my-env", - "SolutionStackName": "64bit Amazon Linux 2015.03 v2.0.0 running Tomcat 8 Java 8", - "VersionLabel": "v1" - }, - "output": { - "ApplicationName": "my-app", - "CNAME": "my-app.elasticbeanstalk.com", - "DateCreated": "2015-02-03T23:04:54.479Z", - "DateUpdated": "2015-02-03T23:04:54.479Z", - "EnvironmentId": "e-izqpassy4h", - "EnvironmentName": "my-env", - "Health": "Grey", - "SolutionStackName": "64bit Amazon Linux 2015.03 v2.0.0 running Tomcat 8 Java 8", - "Status": "Launching", - "Tier": { - "Name": "WebServer", - "Type": "Standard", - "Version": " " - }, - "VersionLabel": "v1" - }, - "comments": { - "input": { - }, - "output": { - } - }, - "description": "The following operation creates a new environment for version v1 of a java application named my-app:", - "id": "to-create-a-new-environment-for-an-application-1456269380396", - "title": "To create a new environment for an application" - } - ], - "CreateStorageLocation": [ - { - "output": { - "S3Bucket": "elasticbeanstalk-us-west-2-0123456789012" - }, - "comments": { - "input": { - }, - "output": { - } - }, - "description": "The following operation creates a new environment for version v1 of a java application named my-app:", - "id": "to-create-a-new-environment-for-an-application-1456269380396", - "title": "To create a new environment for an application" - } - ], - "DeleteApplication": [ - { - "input": { - "ApplicationName": "my-app" - }, - "comments": { - "input": { - }, - "output": { - } - }, - "description": "The following operation deletes an application named my-app:", - "id": "to-delete-an-application-1456269699366", - "title": "To delete an application" - } - ], - "DeleteApplicationVersion": [ - { - "input": { - "ApplicationName": "my-app", - "DeleteSourceBundle": true, - "VersionLabel": "22a0-stage-150819_182129" - }, - "comments": { - "input": { - }, - "output": { - } - }, - "description": "The following operation deletes an application version named 22a0-stage-150819_182129 for an application named my-app:", - "id": "to-delete-an-application-version-1456269792956", - "title": "To delete an application version" - } - ], - "DeleteConfigurationTemplate": [ - { - "input": { - "ApplicationName": "my-app", - "TemplateName": "my-template" - }, - "comments": { - "input": { - }, - "output": { - } - }, - "description": "The following operation deletes a configuration template named my-template for an application named my-app:", - "id": "to-delete-a-configuration-template-1456269836701", - "title": "To delete a configuration template" - } - ], - "DeleteEnvironmentConfiguration": [ - { - "input": { - "ApplicationName": "my-app", - "EnvironmentName": "my-env" - }, - "comments": { - "input": { - }, - "output": { - } - }, - "description": "The following operation deletes a draft configuration for an environment named my-env:", - "id": "to-delete-a-draft-configuration-1456269886654", - "title": "To delete a draft configuration" - } - ], - "DescribeApplicationVersions": [ - { - "input": { - "ApplicationName": "my-app", - "VersionLabels": [ - "v2" - ] - }, - "output": { - "ApplicationVersions": [ - { - "ApplicationName": "my-app", - "DateCreated": "2015-07-23T01:32:26.079Z", - "DateUpdated": "2015-07-23T01:32:26.079Z", - "Description": "update cover page", - "SourceBundle": { - "S3Bucket": "elasticbeanstalk-us-west-2-015321684451", - "S3Key": "my-app/5026-stage-150723_224258.war" - }, - "VersionLabel": "v2" - }, - { - "ApplicationName": "my-app", - "DateCreated": "2015-07-23T22:26:10.816Z", - "DateUpdated": "2015-07-23T22:26:10.816Z", - "Description": "initial version", - "SourceBundle": { - "S3Bucket": "elasticbeanstalk-us-west-2-015321684451", - "S3Key": "my-app/5026-stage-150723_222618.war" - }, - "VersionLabel": "v1" - } - ] - }, - "comments": { - "input": { - }, - "output": { - } - }, - "description": "The following operation retrieves information about an application version labeled v2:", - "id": "to-view-information-about-an-application-version-1456269947428", - "title": "To view information about an application version" - } - ], - "DescribeApplications": [ - { - "input": { - }, - "output": { - "Applications": [ - { - "ApplicationName": "ruby", - "ConfigurationTemplates": [ - - ], - "DateCreated": "2015-08-13T21:05:44.376Z", - "DateUpdated": "2015-08-13T21:05:44.376Z", - "Versions": [ - "Sample Application" - ] - }, - { - "ApplicationName": "pythonsample", - "ConfigurationTemplates": [ - - ], - "DateCreated": "2015-08-13T19:05:43.637Z", - "DateUpdated": "2015-08-13T19:05:43.637Z", - "Description": "Application created from the EB CLI using \"eb init\"", - "Versions": [ - "Sample Application" - ] - }, - { - "ApplicationName": "nodejs-example", - "ConfigurationTemplates": [ - - ], - "DateCreated": "2015-08-06T17:50:02.486Z", - "DateUpdated": "2015-08-06T17:50:02.486Z", - "Versions": [ - "add elasticache", - "First Release" - ] - } - ] - }, - "comments": { - "input": { - }, - "output": { - } - }, - "description": "The following operation retrieves information about applications in the current region:", - "id": "to-view-a-list-of-applications-1456270027373", - "title": "To view a list of applications" - } - ], - "DescribeConfigurationOptions": [ - { - "input": { - "ApplicationName": "my-app", - "EnvironmentName": "my-env" - }, - "output": { - "Options": [ - { - "ChangeSeverity": "NoInterruption", - "DefaultValue": "30", - "MaxValue": 300, - "MinValue": 5, - "Name": "Interval", - "Namespace": "aws:elb:healthcheck", - "UserDefined": false, - "ValueType": "Scalar" - }, - { - "ChangeSeverity": "NoInterruption", - "DefaultValue": "2000000", - "MinValue": 0, - "Name": "LowerThreshold", - "Namespace": "aws:autoscaling:trigger", - "UserDefined": false, - "ValueType": "Scalar" - } - ] - }, - "comments": { - "input": { - }, - "output": { - } - }, - "description": "The following operation retrieves descriptions of all available configuration options for an environment named my-env:", - "id": "to-view-configuration-options-for-an-environment-1456276763917", - "title": "To view configuration options for an environment" - } - ], - "DescribeConfigurationSettings": [ - { - "input": { - "ApplicationName": "my-app", - "EnvironmentName": "my-env" - }, - "output": { - "ConfigurationSettings": [ - { - "ApplicationName": "my-app", - "DateCreated": "2015-08-13T19:16:25Z", - "DateUpdated": "2015-08-13T23:30:07Z", - "DeploymentStatus": "deployed", - "Description": "Environment created from the EB CLI using \"eb create\"", - "EnvironmentName": "my-env", - "OptionSettings": [ - { - "Namespace": "aws:autoscaling:asg", - "OptionName": "Availability Zones", - "ResourceName": "AWSEBAutoScalingGroup", - "Value": "Any" - }, - { - "Namespace": "aws:autoscaling:asg", - "OptionName": "Cooldown", - "ResourceName": "AWSEBAutoScalingGroup", - "Value": "360" - }, - { - "Namespace": "aws:elb:policies", - "OptionName": "ConnectionDrainingTimeout", - "ResourceName": "AWSEBLoadBalancer", - "Value": "20" - }, - { - "Namespace": "aws:elb:policies", - "OptionName": "ConnectionSettingIdleTimeout", - "ResourceName": "AWSEBLoadBalancer", - "Value": "60" - } - ], - "SolutionStackName": "64bit Amazon Linux 2015.03 v2.0.0 running Tomcat 8 Java 8" - } - ] - }, - "comments": { - "input": { - }, - "output": { - "abbreviated": "Output is abbreviated" - } - }, - "description": "The following operation retrieves configuration settings for an environment named my-env:", - "id": "to-view-configurations-settings-for-an-environment-1456276924537", - "title": "To view configurations settings for an environment" - } - ], - "DescribeEnvironmentHealth": [ - { - "input": { - "AttributeNames": [ - "All" - ], - "EnvironmentName": "my-env" - }, - "output": { - "ApplicationMetrics": { - "Duration": 10, - "Latency": { - "P10": 0.001, - "P50": 0.001, - "P75": 0.002, - "P85": 0.003, - "P90": 0.003, - "P95": 0.004, - "P99": 0.004, - "P999": 0.004 - }, - "RequestCount": 45, - "StatusCodes": { - "Status2xx": 45, - "Status3xx": 0, - "Status4xx": 0, - "Status5xx": 0 - } - }, - "Causes": [ - - ], - "Color": "Green", - "EnvironmentName": "my-env", - "HealthStatus": "Ok", - "InstancesHealth": { - "Degraded": 0, - "Info": 0, - "NoData": 0, - "Ok": 1, - "Pending": 0, - "Severe": 0, - "Unknown": 0, - "Warning": 0 - }, - "RefreshedAt": "2015-08-20T21:09:18Z" - }, - "comments": { - "input": { - }, - "output": { - } - }, - "description": "The following operation retrieves overall health information for an environment named my-env:", - "id": "to-view-environment-health-1456277109510", - "title": "To view environment health" - } - ], - "DescribeEnvironmentResources": [ - { - "input": { - "EnvironmentName": "my-env" - }, - "output": { - "EnvironmentResources": { - "AutoScalingGroups": [ - { - "Name": "awseb-e-qu3fyyjyjs-stack-AWSEBAutoScalingGroup-QSB2ZO88SXZT" - } - ], - "EnvironmentName": "my-env", - "Instances": [ - { - "Id": "i-0c91c786" - } - ], - "LaunchConfigurations": [ - { - "Name": "awseb-e-qu3fyyjyjs-stack-AWSEBAutoScalingLaunchConfiguration-1UUVQIBC96TQ2" - } - ], - "LoadBalancers": [ - { - "Name": "awseb-e-q-AWSEBLoa-1EEPZ0K98BIF0" - } - ], - "Queues": [ - - ], - "Triggers": [ - - ] - } - }, - "comments": { - "input": { - }, - "output": { - } - }, - "description": "The following operation retrieves information about resources in an environment named my-env:", - "id": "to-view-information-about-the-aws-resources-in-your-environment-1456277206232", - "title": "To view information about the AWS resources in your environment" - } - ], - "DescribeEnvironments": [ - { - "input": { - "EnvironmentNames": [ - "my-env" - ] - }, - "output": { - "Environments": [ - { - "AbortableOperationInProgress": false, - "ApplicationName": "my-app", - "CNAME": "my-env.elasticbeanstalk.com", - "DateCreated": "2015-08-07T20:48:49.599Z", - "DateUpdated": "2015-08-12T18:16:55.019Z", - "EndpointURL": "awseb-e-w-AWSEBLoa-1483140XB0Q4L-109QXY8121.us-west-2.elb.amazonaws.com", - "EnvironmentId": "e-rpqsewtp2j", - "EnvironmentName": "my-env", - "Health": "Green", - "SolutionStackName": "64bit Amazon Linux 2015.03 v2.0.0 running Tomcat 8 Java 8", - "Status": "Ready", - "Tier": { - "Name": "WebServer", - "Type": "Standard", - "Version": " " - }, - "VersionLabel": "7f58-stage-150812_025409" - } - ] - }, - "comments": { - "input": { - }, - "output": { - } - }, - "description": "The following operation retrieves information about an environment named my-env:", - "id": "to-view-information-about-an-environment-1456277288662", - "title": "To view information about an environment" - } - ], - "DescribeEvents": [ - { - "input": { - "EnvironmentName": "my-env" - }, - "output": { - "Events": [ - { - "ApplicationName": "my-app", - "EnvironmentName": "my-env", - "EventDate": "2015-08-20T07:06:53.535Z", - "Message": "Environment health has transitioned from Info to Ok.", - "Severity": "INFO" - }, - { - "ApplicationName": "my-app", - "EnvironmentName": "my-env", - "EventDate": "2015-08-20T07:06:02.049Z", - "Message": "Environment update completed successfully.", - "RequestId": "b7f3960b-4709-11e5-ba1e-07e16200da41", - "Severity": "INFO" - }, - { - "ApplicationName": "my-app", - "EnvironmentName": "my-env", - "EventDate": "2015-08-13T19:16:27.561Z", - "Message": "Using elasticbeanstalk-us-west-2-012445113685 as Amazon S3 storage bucket for environment data.", - "RequestId": "ca8dfbf6-41ef-11e5-988b-651aa638f46b", - "Severity": "INFO" - }, - { - "ApplicationName": "my-app", - "EnvironmentName": "my-env", - "EventDate": "2015-08-13T19:16:26.581Z", - "Message": "createEnvironment is starting.", - "RequestId": "cdfba8f6-41ef-11e5-988b-65638f41aa6b", - "Severity": "INFO" - } - ] - }, - "comments": { - "input": { - }, - "output": { - } - }, - "description": "The following operation retrieves events for an environment named my-env:", - "id": "to-view-events-for-an-environment-1456277367589", - "title": "To view events for an environment" - } - ], - "DescribeInstancesHealth": [ - { - "input": { - "AttributeNames": [ - "All" - ], - "EnvironmentName": "my-env" - }, - "output": { - "InstanceHealthList": [ - { - "ApplicationMetrics": { - "Duration": 10, - "Latency": { - "P10": 0, - "P50": 0.001, - "P75": 0.002, - "P85": 0.003, - "P90": 0.004, - "P95": 0.005, - "P99": 0.006, - "P999": 0.006 - }, - "RequestCount": 48, - "StatusCodes": { - "Status2xx": 47, - "Status3xx": 0, - "Status4xx": 1, - "Status5xx": 0 - } - }, - "Causes": [ - - ], - "Color": "Green", - "HealthStatus": "Ok", - "InstanceId": "i-08691cc7", - "LaunchedAt": "2015-08-13T19:17:09Z", - "System": { - "CPUUtilization": { - "IOWait": 0.2, - "IRQ": 0, - "Idle": 97.8, - "Nice": 0.1, - "SoftIRQ": 0.1, - "System": 0.3, - "User": 1.5 - }, - "LoadAverage": [ - 0, - 0.02, - 0.05 - ] - } - } - ], - "RefreshedAt": "2015-08-20T21:09:08Z" - }, - "comments": { - "input": { - }, - "output": { - } - }, - "description": "The following operation retrieves health information for instances in an environment named my-env:", - "id": "to-view-environment-health-1456277424757", - "title": "To view environment health" - } - ], - "ListAvailableSolutionStacks": [ - { - "output": { - "SolutionStackDetails": [ - { - "PermittedFileTypes": [ - "zip" - ], - "SolutionStackName": "64bit Amazon Linux 2015.03 v2.0.0 running Node.js" - } - ], - "SolutionStacks": [ - "64bit Amazon Linux 2015.03 v2.0.0 running Node.js", - "64bit Amazon Linux 2015.03 v2.0.0 running PHP 5.6", - "64bit Amazon Linux 2015.03 v2.0.0 running PHP 5.5", - "64bit Amazon Linux 2015.03 v2.0.0 running PHP 5.4", - "64bit Amazon Linux 2015.03 v2.0.0 running Python 3.4", - "64bit Amazon Linux 2015.03 v2.0.0 running Python 2.7", - "64bit Amazon Linux 2015.03 v2.0.0 running Python", - "64bit Amazon Linux 2015.03 v2.0.0 running Ruby 2.2 (Puma)", - "64bit Amazon Linux 2015.03 v2.0.0 running Ruby 2.2 (Passenger Standalone)", - "64bit Amazon Linux 2015.03 v2.0.0 running Ruby 2.1 (Puma)", - "64bit Amazon Linux 2015.03 v2.0.0 running Ruby 2.1 (Passenger Standalone)", - "64bit Amazon Linux 2015.03 v2.0.0 running Ruby 2.0 (Puma)", - "64bit Amazon Linux 2015.03 v2.0.0 running Ruby 2.0 (Passenger Standalone)", - "64bit Amazon Linux 2015.03 v2.0.0 running Ruby 1.9.3", - "64bit Amazon Linux 2015.03 v2.0.0 running Tomcat 8 Java 8", - "64bit Amazon Linux 2015.03 v2.0.0 running Tomcat 7 Java 7", - "64bit Amazon Linux 2015.03 v2.0.0 running Tomcat 7 Java 6", - "64bit Windows Server Core 2012 R2 running IIS 8.5", - "64bit Windows Server 2012 R2 running IIS 8.5", - "64bit Windows Server 2012 running IIS 8", - "64bit Windows Server 2008 R2 running IIS 7.5", - "64bit Amazon Linux 2015.03 v2.0.0 running Docker 1.6.2", - "64bit Amazon Linux 2015.03 v2.0.0 running Multi-container Docker 1.6.2 (Generic)", - "64bit Debian jessie v2.0.0 running GlassFish 4.1 Java 8 (Preconfigured - Docker)", - "64bit Debian jessie v2.0.0 running GlassFish 4.0 Java 7 (Preconfigured - Docker)", - "64bit Debian jessie v2.0.0 running Go 1.4 (Preconfigured - Docker)", - "64bit Debian jessie v2.0.0 running Go 1.3 (Preconfigured - Docker)", - "64bit Debian jessie v2.0.0 running Python 3.4 (Preconfigured - Docker)" - ] - }, - "comments": { - "input": { - }, - "output": { - } - }, - "description": "The following operation lists solution stacks for all currently available platform configurations and any that you have used in the past:", - "id": "to-view-solution-stacks-1456277504811", - "title": "To view solution stacks" - } - ], - "RebuildEnvironment": [ - { - "input": { - "EnvironmentName": "my-env" - }, - "comments": { - "input": { - }, - "output": { - } - }, - "description": "The following operation terminates and recreates the resources in an environment named my-env:", - "id": "to-rebuild-an-environment-1456277600918", - "title": "To rebuild an environment" - } - ], - "RequestEnvironmentInfo": [ - { - "input": { - "EnvironmentName": "my-env", - "InfoType": "tail" - }, - "comments": { - "input": { - }, - "output": { - } - }, - "description": "The following operation requests logs from an environment named my-env:", - "id": "to-request-tailed-logs-1456277657045", - "title": "To request tailed logs" - } - ], - "RestartAppServer": [ - { - "input": { - "EnvironmentName": "my-env" - }, - "comments": { - "input": { - }, - "output": { - } - }, - "description": "The following operation restarts application servers on all instances in an environment named my-env:", - "id": "to-restart-application-servers-1456277739302", - "title": "To restart application servers" - } - ], - "RetrieveEnvironmentInfo": [ - { - "input": { - "EnvironmentName": "my-env", - "InfoType": "tail" - }, - "output": { - "EnvironmentInfo": [ - { - "Ec2InstanceId": "i-09c1c867", - "InfoType": "tail", - "Message": "https://elasticbeanstalk-us-west-2-0123456789012.s3.amazonaws.com/resources/environments/logs/tail/e-fyqyju3yjs/i-09c1c867/TailLogs-1440109397703.out?AWSAccessKeyId=AKGPT4J56IAJ2EUBL5CQ&Expires=1440195891&Signature=n%2BEalOV6A2HIOx4Rcfb7LT16bBM%3D", - "SampleTimestamp": "2015-08-20T22:23:17.703Z" - } - ] - }, - "comments": { - "input": { - }, - "output": { - } - }, - "description": "The following operation retrieves a link to logs from an environment named my-env:", - "id": "to-retrieve-tailed-logs-1456277792734", - "title": "To retrieve tailed logs" - } - ], - "SwapEnvironmentCNAMEs": [ - { - "input": { - "DestinationEnvironmentName": "my-env-green", - "SourceEnvironmentName": "my-env-blue" - }, - "comments": { - "input": { - }, - "output": { - } - }, - "description": "The following operation swaps the assigned subdomains of two environments:", - "id": "to-swap-environment-cnames-1456277839438", - "title": "To swap environment CNAMES" - } - ], - "TerminateEnvironment": [ - { - "input": { - "EnvironmentName": "my-env" - }, - "output": { - "AbortableOperationInProgress": false, - "ApplicationName": "my-app", - "CNAME": "my-env.elasticbeanstalk.com", - "DateCreated": "2015-08-12T18:52:53.622Z", - "DateUpdated": "2015-08-12T19:05:54.744Z", - "EndpointURL": "awseb-e-f-AWSEBLoa-1I9XUMP4-8492WNUP202574.us-west-2.elb.amazonaws.com", - "EnvironmentId": "e-fh2eravpns", - "EnvironmentName": "my-env", - "Health": "Grey", - "SolutionStackName": "64bit Amazon Linux 2015.03 v2.0.0 running Tomcat 8 Java 8", - "Status": "Terminating", - "Tier": { - "Name": "WebServer", - "Type": "Standard", - "Version": " " - } - }, - "comments": { - "input": { - }, - "output": { - } - }, - "description": "The following operation terminates an Elastic Beanstalk environment named my-env:", - "id": "to-terminate-an-environment-1456277888556", - "title": "To terminate an environment" - } - ], - "UpdateApplication": [ - { - "input": { - "ApplicationName": "my-app", - "Description": "my Elastic Beanstalk application" - }, - "output": { - "Application": { - "ApplicationName": "my-app", - "ConfigurationTemplates": [ - - ], - "DateCreated": "2015-08-13T19:15:50.449Z", - "DateUpdated": "2015-08-20T22:34:56.195Z", - "Description": "my Elastic Beanstalk application", - "Versions": [ - "2fba-stage-150819_234450", - "bf07-stage-150820_214945", - "93f8", - "fd7c-stage-150820_000431", - "22a0-stage-150819_185942" - ] - } - }, - "comments": { - "input": { - }, - "output": { - } - }, - "description": "The following operation updates the description of an application named my-app:", - "id": "to-change-an-applications-description-1456277957075", - "title": "To change an application's description" - } - ], - "UpdateApplicationVersion": [ - { - "input": { - "ApplicationName": "my-app", - "Description": "new description", - "VersionLabel": "22a0-stage-150819_185942" - }, - "output": { - "ApplicationVersion": { - "ApplicationName": "my-app", - "DateCreated": "2015-08-19T18:59:17.646Z", - "DateUpdated": "2015-08-20T22:53:28.871Z", - "Description": "new description", - "SourceBundle": { - "S3Bucket": "elasticbeanstalk-us-west-2-0123456789012", - "S3Key": "my-app/22a0-stage-150819_185942.war" - }, - "VersionLabel": "22a0-stage-150819_185942" - } - }, - "comments": { - "input": { - }, - "output": { - } - }, - "description": "The following operation updates the description of an application version named 22a0-stage-150819_185942:", - "id": "to-change-an-application-versions-description-1456278019237", - "title": "To change an application version's description" - } - ], - "UpdateConfigurationTemplate": [ - { - "input": { - "ApplicationName": "my-app", - "OptionsToRemove": [ - { - "Namespace": "aws:elasticbeanstalk:healthreporting:system", - "OptionName": "ConfigDocument" - } - ], - "TemplateName": "my-template" - }, - "output": { - "ApplicationName": "my-app", - "DateCreated": "2015-08-20T22:39:31Z", - "DateUpdated": "2015-08-20T22:43:11Z", - "SolutionStackName": "64bit Amazon Linux 2015.03 v2.0.0 running Tomcat 8 Java 8", - "TemplateName": "my-template" - }, - "comments": { - "input": { - }, - "output": { - } - }, - "description": "The following operation removes the configured CloudWatch custom health metrics configuration ConfigDocument from a saved configuration template named my-template:", - "id": "to-update-a-configuration-template-1456278075300", - "title": "To update a configuration template" - } - ], - "UpdateEnvironment": [ - { - "input": { - "EnvironmentName": "my-env", - "VersionLabel": "v2" - }, - "output": { - "ApplicationName": "my-app", - "CNAME": "my-env.elasticbeanstalk.com", - "DateCreated": "2015-02-03T23:04:54.453Z", - "DateUpdated": "2015-02-03T23:12:29.119Z", - "EndpointURL": "awseb-e-i-AWSEBLoa-1RDLX6TC9VUAO-0123456789.us-west-2.elb.amazonaws.com", - "EnvironmentId": "e-szqipays4h", - "EnvironmentName": "my-env", - "Health": "Grey", - "SolutionStackName": "64bit Amazon Linux running Tomcat 7", - "Status": "Updating", - "Tier": { - "Name": "WebServer", - "Type": "Standard", - "Version": " " - }, - "VersionLabel": "v2" - }, - "comments": { - "input": { - }, - "output": { - } - }, - "description": "The following operation updates an environment named \"my-env\" to version \"v2\" of the application to which it belongs:", - "id": "to-update-an-environment-to-a-new-version-1456278210718", - "title": "To update an environment to a new version" - }, - { - "input": { - "EnvironmentName": "my-env", - "OptionSettings": [ - { - "Namespace": "aws:elb:healthcheck", - "OptionName": "Interval", - "Value": "15" - }, - { - "Namespace": "aws:elb:healthcheck", - "OptionName": "Timeout", - "Value": "8" - }, - { - "Namespace": "aws:elb:healthcheck", - "OptionName": "HealthyThreshold", - "Value": "2" - }, - { - "Namespace": "aws:elb:healthcheck", - "OptionName": "UnhealthyThreshold", - "Value": "3" - } - ] - }, - "output": { - "AbortableOperationInProgress": true, - "ApplicationName": "my-app", - "CNAME": "my-env.elasticbeanstalk.com", - "DateCreated": "2015-08-07T20:48:49.599Z", - "DateUpdated": "2015-08-12T18:15:23.804Z", - "EndpointURL": "awseb-e-w-AWSEBLoa-14XB83101Q4L-104QXY80921.sa-east-1.elb.amazonaws.com", - "EnvironmentId": "e-wtp2rpqsej", - "EnvironmentName": "my-env", - "Health": "Grey", - "SolutionStackName": "64bit Amazon Linux 2015.03 v2.0.0 running Tomcat 8 Java 8", - "Status": "Updating", - "Tier": { - "Name": "WebServer", - "Type": "Standard", - "Version": " " - }, - "VersionLabel": "7f58-stage-150812_025409" - }, - "comments": { - "input": { - }, - "output": { - } - }, - "description": "The following operation configures several options in the aws:elb:loadbalancer namespace:", - "id": "to-configure-option-settings-1456278286349", - "title": "To configure option settings" - } - ], - "ValidateConfigurationSettings": [ - { - "input": { - "ApplicationName": "my-app", - "EnvironmentName": "my-env", - "OptionSettings": [ - { - "Namespace": "aws:elasticbeanstalk:healthreporting:system", - "OptionName": "ConfigDocument", - "Value": "{\"CloudWatchMetrics\": {\"Environment\": {\"ApplicationLatencyP99.9\": null,\"InstancesSevere\": 60,\"ApplicationLatencyP90\": 60,\"ApplicationLatencyP99\": null,\"ApplicationLatencyP95\": 60,\"InstancesUnknown\": 60,\"ApplicationLatencyP85\": 60,\"InstancesInfo\": null,\"ApplicationRequests2xx\": null,\"InstancesDegraded\": null,\"InstancesWarning\": 60,\"ApplicationLatencyP50\": 60,\"ApplicationRequestsTotal\": null,\"InstancesNoData\": null,\"InstancesPending\": 60,\"ApplicationLatencyP10\": null,\"ApplicationRequests5xx\": null,\"ApplicationLatencyP75\": null,\"InstancesOk\": 60,\"ApplicationRequests3xx\": null,\"ApplicationRequests4xx\": null},\"Instance\": {\"ApplicationLatencyP99.9\": null,\"ApplicationLatencyP90\": 60,\"ApplicationLatencyP99\": null,\"ApplicationLatencyP95\": null,\"ApplicationLatencyP85\": null,\"CPUUser\": 60,\"ApplicationRequests2xx\": null,\"CPUIdle\": null,\"ApplicationLatencyP50\": null,\"ApplicationRequestsTotal\": 60,\"RootFilesystemUtil\": null,\"LoadAverage1min\": null,\"CPUIrq\": null,\"CPUNice\": 60,\"CPUIowait\": 60,\"ApplicationLatencyP10\": null,\"LoadAverage5min\": null,\"ApplicationRequests5xx\": null,\"ApplicationLatencyP75\": 60,\"CPUSystem\": 60,\"ApplicationRequests3xx\": 60,\"ApplicationRequests4xx\": null,\"InstanceHealth\": null,\"CPUSoftirq\": 60}},\"Version\": 1}" - } - ] - }, - "output": { - "Messages": [ - - ] - }, - "comments": { - "input": { - }, - "output": { - } - }, - "description": "The following operation validates a CloudWatch custom metrics config document:", - "id": "to-validate-configuration-settings-1456278393654", - "title": "To validate configuration settings" - } - ] - } -} diff --git a/workshops/monte-carlo-on-ec2-spot-fleet/src/web/node_modules/aws-sdk/apis/elasticbeanstalk-2010-12-01.min.json b/workshops/monte-carlo-on-ec2-spot-fleet/src/web/node_modules/aws-sdk/apis/elasticbeanstalk-2010-12-01.min.json deleted file mode 100644 index 832dba8d..00000000 --- a/workshops/monte-carlo-on-ec2-spot-fleet/src/web/node_modules/aws-sdk/apis/elasticbeanstalk-2010-12-01.min.json +++ /dev/null @@ -1,1633 +0,0 @@ -{ - "version": "2.0", - "metadata": { - "apiVersion": "2010-12-01", - "endpointPrefix": "elasticbeanstalk", - "protocol": "query", - "serviceAbbreviation": "Elastic Beanstalk", - "serviceFullName": "AWS Elastic Beanstalk", - "signatureVersion": "v4", - "uid": "elasticbeanstalk-2010-12-01", - "xmlNamespace": "http://elasticbeanstalk.amazonaws.com/docs/2010-12-01/" - }, - "operations": { - "AbortEnvironmentUpdate": { - "input": { - "type": "structure", - "members": { - "EnvironmentId": {}, - "EnvironmentName": {} - } - } - }, - "ApplyEnvironmentManagedAction": { - "input": { - "type": "structure", - "required": [ - "ActionId" - ], - "members": { - "EnvironmentName": {}, - "EnvironmentId": {}, - "ActionId": {} - } - }, - "output": { - "resultWrapper": "ApplyEnvironmentManagedActionResult", - "type": "structure", - "members": { - "ActionId": {}, - "ActionDescription": {}, - "ActionType": {}, - "Status": {} - } - } - }, - "CheckDNSAvailability": { - "input": { - "type": "structure", - "required": [ - "CNAMEPrefix" - ], - "members": { - "CNAMEPrefix": {} - } - }, - "output": { - "resultWrapper": "CheckDNSAvailabilityResult", - "type": "structure", - "members": { - "Available": { - "type": "boolean" - }, - "FullyQualifiedCNAME": {} - } - } - }, - "ComposeEnvironments": { - "input": { - "type": "structure", - "members": { - "ApplicationName": {}, - "GroupName": {}, - "VersionLabels": { - "type": "list", - "member": {} - } - } - }, - "output": { - "shape": "Si", - "resultWrapper": "ComposeEnvironmentsResult" - } - }, - "CreateApplication": { - "input": { - "type": "structure", - "required": [ - "ApplicationName" - ], - "members": { - "ApplicationName": {}, - "Description": {}, - "ResourceLifecycleConfig": { - "shape": "S17" - } - } - }, - "output": { - "shape": "S1d", - "resultWrapper": "CreateApplicationResult" - } - }, - "CreateApplicationVersion": { - "input": { - "type": "structure", - "required": [ - "ApplicationName", - "VersionLabel" - ], - "members": { - "ApplicationName": {}, - "VersionLabel": {}, - "Description": {}, - "SourceBuildInformation": { - "shape": "S1i" - }, - "SourceBundle": { - "shape": "S1m" - }, - "BuildConfiguration": { - "type": "structure", - "required": [ - "CodeBuildServiceRole", - "Image" - ], - "members": { - "ArtifactName": {}, - "CodeBuildServiceRole": {}, - "ComputeType": {}, - "Image": {}, - "TimeoutInMinutes": { - "type": "integer" - } - } - }, - "AutoCreateApplication": { - "type": "boolean" - }, - "Process": { - "type": "boolean" - } - } - }, - "output": { - "shape": "S1u", - "resultWrapper": "CreateApplicationVersionResult" - } - }, - "CreateConfigurationTemplate": { - "input": { - "type": "structure", - "required": [ - "ApplicationName", - "TemplateName" - ], - "members": { - "ApplicationName": {}, - "TemplateName": {}, - "SolutionStackName": {}, - "PlatformArn": {}, - "SourceConfiguration": { - "type": "structure", - "members": { - "ApplicationName": {}, - "TemplateName": {} - } - }, - "EnvironmentId": {}, - "Description": {}, - "OptionSettings": { - "shape": "S1z" - } - } - }, - "output": { - "shape": "S25", - "resultWrapper": "CreateConfigurationTemplateResult" - } - }, - "CreateEnvironment": { - "input": { - "type": "structure", - "required": [ - "ApplicationName" - ], - "members": { - "ApplicationName": {}, - "EnvironmentName": {}, - "GroupName": {}, - "Description": {}, - "CNAMEPrefix": {}, - "Tier": { - "shape": "S11" - }, - "Tags": { - "type": "list", - "member": { - "shape": "S29" - } - }, - "VersionLabel": {}, - "TemplateName": {}, - "SolutionStackName": {}, - "PlatformArn": {}, - "OptionSettings": { - "shape": "S1z" - }, - "OptionsToRemove": { - "shape": "S2c" - } - } - }, - "output": { - "shape": "Sk", - "resultWrapper": "CreateEnvironmentResult" - } - }, - "CreatePlatformVersion": { - "input": { - "type": "structure", - "required": [ - "PlatformName", - "PlatformVersion", - "PlatformDefinitionBundle" - ], - "members": { - "PlatformName": {}, - "PlatformVersion": {}, - "PlatformDefinitionBundle": { - "shape": "S1m" - }, - "EnvironmentName": {}, - "OptionSettings": { - "shape": "S1z" - } - } - }, - "output": { - "resultWrapper": "CreatePlatformVersionResult", - "type": "structure", - "members": { - "PlatformSummary": { - "shape": "S2i" - }, - "Builder": { - "type": "structure", - "members": { - "ARN": {} - } - } - } - } - }, - "CreateStorageLocation": { - "output": { - "resultWrapper": "CreateStorageLocationResult", - "type": "structure", - "members": { - "S3Bucket": {} - } - } - }, - "DeleteApplication": { - "input": { - "type": "structure", - "required": [ - "ApplicationName" - ], - "members": { - "ApplicationName": {}, - "TerminateEnvByForce": { - "type": "boolean" - } - } - } - }, - "DeleteApplicationVersion": { - "input": { - "type": "structure", - "required": [ - "ApplicationName", - "VersionLabel" - ], - "members": { - "ApplicationName": {}, - "VersionLabel": {}, - "DeleteSourceBundle": { - "type": "boolean" - } - } - } - }, - "DeleteConfigurationTemplate": { - "input": { - "type": "structure", - "required": [ - "ApplicationName", - "TemplateName" - ], - "members": { - "ApplicationName": {}, - "TemplateName": {} - } - } - }, - "DeleteEnvironmentConfiguration": { - "input": { - "type": "structure", - "required": [ - "ApplicationName", - "EnvironmentName" - ], - "members": { - "ApplicationName": {}, - "EnvironmentName": {} - } - } - }, - "DeletePlatformVersion": { - "input": { - "type": "structure", - "members": { - "PlatformArn": {} - } - }, - "output": { - "resultWrapper": "DeletePlatformVersionResult", - "type": "structure", - "members": { - "PlatformSummary": { - "shape": "S2i" - } - } - } - }, - "DescribeApplicationVersions": { - "input": { - "type": "structure", - "members": { - "ApplicationName": {}, - "VersionLabels": { - "shape": "S1f" - }, - "MaxRecords": { - "type": "integer" - }, - "NextToken": {} - } - }, - "output": { - "resultWrapper": "DescribeApplicationVersionsResult", - "type": "structure", - "members": { - "ApplicationVersions": { - "type": "list", - "member": { - "shape": "S1v" - } - }, - "NextToken": {} - } - } - }, - "DescribeApplications": { - "input": { - "type": "structure", - "members": { - "ApplicationNames": { - "type": "list", - "member": {} - } - } - }, - "output": { - "resultWrapper": "DescribeApplicationsResult", - "type": "structure", - "members": { - "Applications": { - "type": "list", - "member": { - "shape": "S1e" - } - } - } - } - }, - "DescribeConfigurationOptions": { - "input": { - "type": "structure", - "members": { - "ApplicationName": {}, - "TemplateName": {}, - "EnvironmentName": {}, - "SolutionStackName": {}, - "PlatformArn": {}, - "Options": { - "shape": "S2c" - } - } - }, - "output": { - "resultWrapper": "DescribeConfigurationOptionsResult", - "type": "structure", - "members": { - "SolutionStackName": {}, - "PlatformArn": {}, - "Options": { - "type": "list", - "member": { - "type": "structure", - "members": { - "Namespace": {}, - "Name": {}, - "DefaultValue": {}, - "ChangeSeverity": {}, - "UserDefined": { - "type": "boolean" - }, - "ValueType": {}, - "ValueOptions": { - "type": "list", - "member": {} - }, - "MinValue": { - "type": "integer" - }, - "MaxValue": { - "type": "integer" - }, - "MaxLength": { - "type": "integer" - }, - "Regex": { - "type": "structure", - "members": { - "Pattern": {}, - "Label": {} - } - } - } - } - } - } - } - }, - "DescribeConfigurationSettings": { - "input": { - "type": "structure", - "required": [ - "ApplicationName" - ], - "members": { - "ApplicationName": {}, - "TemplateName": {}, - "EnvironmentName": {} - } - }, - "output": { - "resultWrapper": "DescribeConfigurationSettingsResult", - "type": "structure", - "members": { - "ConfigurationSettings": { - "type": "list", - "member": { - "shape": "S25" - } - } - } - } - }, - "DescribeEnvironmentHealth": { - "input": { - "type": "structure", - "members": { - "EnvironmentName": {}, - "EnvironmentId": {}, - "AttributeNames": { - "type": "list", - "member": {} - } - } - }, - "output": { - "resultWrapper": "DescribeEnvironmentHealthResult", - "type": "structure", - "members": { - "EnvironmentName": {}, - "HealthStatus": {}, - "Status": {}, - "Color": {}, - "Causes": { - "shape": "S3y" - }, - "ApplicationMetrics": { - "shape": "S40" - }, - "InstancesHealth": { - "type": "structure", - "members": { - "NoData": { - "type": "integer" - }, - "Unknown": { - "type": "integer" - }, - "Pending": { - "type": "integer" - }, - "Ok": { - "type": "integer" - }, - "Info": { - "type": "integer" - }, - "Warning": { - "type": "integer" - }, - "Degraded": { - "type": "integer" - }, - "Severe": { - "type": "integer" - } - } - }, - "RefreshedAt": { - "type": "timestamp" - } - } - } - }, - "DescribeEnvironmentManagedActionHistory": { - "input": { - "type": "structure", - "members": { - "EnvironmentId": {}, - "EnvironmentName": {}, - "NextToken": {}, - "MaxItems": { - "type": "integer" - } - } - }, - "output": { - "resultWrapper": "DescribeEnvironmentManagedActionHistoryResult", - "type": "structure", - "members": { - "ManagedActionHistoryItems": { - "type": "list", - "member": { - "type": "structure", - "members": { - "ActionId": {}, - "ActionType": {}, - "ActionDescription": {}, - "FailureType": {}, - "Status": {}, - "FailureDescription": {}, - "ExecutedTime": { - "type": "timestamp" - }, - "FinishedTime": { - "type": "timestamp" - } - } - } - }, - "NextToken": {} - } - } - }, - "DescribeEnvironmentManagedActions": { - "input": { - "type": "structure", - "members": { - "EnvironmentName": {}, - "EnvironmentId": {}, - "Status": {} - } - }, - "output": { - "resultWrapper": "DescribeEnvironmentManagedActionsResult", - "type": "structure", - "members": { - "ManagedActions": { - "type": "list", - "member": { - "type": "structure", - "members": { - "ActionId": {}, - "ActionDescription": {}, - "ActionType": {}, - "Status": {}, - "WindowStartTime": { - "type": "timestamp" - } - } - } - } - } - } - }, - "DescribeEnvironmentResources": { - "input": { - "type": "structure", - "members": { - "EnvironmentId": {}, - "EnvironmentName": {} - } - }, - "output": { - "resultWrapper": "DescribeEnvironmentResourcesResult", - "type": "structure", - "members": { - "EnvironmentResources": { - "type": "structure", - "members": { - "EnvironmentName": {}, - "AutoScalingGroups": { - "type": "list", - "member": { - "type": "structure", - "members": { - "Name": {} - } - } - }, - "Instances": { - "type": "list", - "member": { - "type": "structure", - "members": { - "Id": {} - } - } - }, - "LaunchConfigurations": { - "type": "list", - "member": { - "type": "structure", - "members": { - "Name": {} - } - } - }, - "LoadBalancers": { - "type": "list", - "member": { - "type": "structure", - "members": { - "Name": {} - } - } - }, - "Triggers": { - "type": "list", - "member": { - "type": "structure", - "members": { - "Name": {} - } - } - }, - "Queues": { - "type": "list", - "member": { - "type": "structure", - "members": { - "Name": {}, - "URL": {} - } - } - } - } - } - } - } - }, - "DescribeEnvironments": { - "input": { - "type": "structure", - "members": { - "ApplicationName": {}, - "VersionLabel": {}, - "EnvironmentIds": { - "type": "list", - "member": {} - }, - "EnvironmentNames": { - "type": "list", - "member": {} - }, - "IncludeDeleted": { - "type": "boolean" - }, - "IncludedDeletedBackTo": { - "type": "timestamp" - }, - "MaxRecords": { - "type": "integer" - }, - "NextToken": {} - } - }, - "output": { - "shape": "Si", - "resultWrapper": "DescribeEnvironmentsResult" - } - }, - "DescribeEvents": { - "input": { - "type": "structure", - "members": { - "ApplicationName": {}, - "VersionLabel": {}, - "TemplateName": {}, - "EnvironmentId": {}, - "EnvironmentName": {}, - "PlatformArn": {}, - "RequestId": {}, - "Severity": {}, - "StartTime": { - "type": "timestamp" - }, - "EndTime": { - "type": "timestamp" - }, - "MaxRecords": { - "type": "integer" - }, - "NextToken": {} - } - }, - "output": { - "resultWrapper": "DescribeEventsResult", - "type": "structure", - "members": { - "Events": { - "type": "list", - "member": { - "type": "structure", - "members": { - "EventDate": { - "type": "timestamp" - }, - "Message": {}, - "ApplicationName": {}, - "VersionLabel": {}, - "TemplateName": {}, - "EnvironmentName": {}, - "PlatformArn": {}, - "RequestId": {}, - "Severity": {} - } - } - }, - "NextToken": {} - } - } - }, - "DescribeInstancesHealth": { - "input": { - "type": "structure", - "members": { - "EnvironmentName": {}, - "EnvironmentId": {}, - "AttributeNames": { - "type": "list", - "member": {} - }, - "NextToken": {} - } - }, - "output": { - "resultWrapper": "DescribeInstancesHealthResult", - "type": "structure", - "members": { - "InstanceHealthList": { - "type": "list", - "member": { - "type": "structure", - "members": { - "InstanceId": {}, - "HealthStatus": {}, - "Color": {}, - "Causes": { - "shape": "S3y" - }, - "LaunchedAt": { - "type": "timestamp" - }, - "ApplicationMetrics": { - "shape": "S40" - }, - "System": { - "type": "structure", - "members": { - "CPUUtilization": { - "type": "structure", - "members": { - "User": { - "type": "double" - }, - "Nice": { - "type": "double" - }, - "System": { - "type": "double" - }, - "Idle": { - "type": "double" - }, - "IOWait": { - "type": "double" - }, - "IRQ": { - "type": "double" - }, - "SoftIRQ": { - "type": "double" - } - } - }, - "LoadAverage": { - "type": "list", - "member": { - "type": "double" - } - } - } - }, - "Deployment": { - "type": "structure", - "members": { - "VersionLabel": {}, - "DeploymentId": { - "type": "long" - }, - "Status": {}, - "DeploymentTime": { - "type": "timestamp" - } - } - }, - "AvailabilityZone": {}, - "InstanceType": {} - } - } - }, - "RefreshedAt": { - "type": "timestamp" - }, - "NextToken": {} - } - } - }, - "DescribePlatformVersion": { - "input": { - "type": "structure", - "members": { - "PlatformArn": {} - } - }, - "output": { - "resultWrapper": "DescribePlatformVersionResult", - "type": "structure", - "members": { - "PlatformDescription": { - "type": "structure", - "members": { - "PlatformArn": {}, - "PlatformOwner": {}, - "PlatformName": {}, - "PlatformVersion": {}, - "SolutionStackName": {}, - "PlatformStatus": {}, - "DateCreated": { - "type": "timestamp" - }, - "DateUpdated": { - "type": "timestamp" - }, - "PlatformCategory": {}, - "Description": {}, - "Maintainer": {}, - "OperatingSystemName": {}, - "OperatingSystemVersion": {}, - "ProgrammingLanguages": { - "type": "list", - "member": { - "type": "structure", - "members": { - "Name": {}, - "Version": {} - } - } - }, - "Frameworks": { - "type": "list", - "member": { - "type": "structure", - "members": { - "Name": {}, - "Version": {} - } - } - }, - "CustomAmiList": { - "type": "list", - "member": { - "type": "structure", - "members": { - "VirtualizationType": {}, - "ImageId": {} - } - } - }, - "SupportedTierList": { - "shape": "S2o" - }, - "SupportedAddonList": { - "shape": "S2q" - } - } - } - } - } - }, - "ListAvailableSolutionStacks": { - "output": { - "resultWrapper": "ListAvailableSolutionStacksResult", - "type": "structure", - "members": { - "SolutionStacks": { - "type": "list", - "member": {} - }, - "SolutionStackDetails": { - "type": "list", - "member": { - "type": "structure", - "members": { - "SolutionStackName": {}, - "PermittedFileTypes": { - "type": "list", - "member": {} - } - } - } - } - } - } - }, - "ListPlatformVersions": { - "input": { - "type": "structure", - "members": { - "Filters": { - "type": "list", - "member": { - "type": "structure", - "members": { - "Type": {}, - "Operator": {}, - "Values": { - "type": "list", - "member": {} - } - } - } - }, - "MaxRecords": { - "type": "integer" - }, - "NextToken": {} - } - }, - "output": { - "resultWrapper": "ListPlatformVersionsResult", - "type": "structure", - "members": { - "PlatformSummaryList": { - "type": "list", - "member": { - "shape": "S2i" - } - }, - "NextToken": {} - } - } - }, - "ListTagsForResource": { - "input": { - "type": "structure", - "required": [ - "ResourceArn" - ], - "members": { - "ResourceArn": {} - } - }, - "output": { - "resultWrapper": "ListTagsForResourceResult", - "type": "structure", - "members": { - "ResourceArn": {}, - "ResourceTags": { - "shape": "S6q" - } - } - } - }, - "RebuildEnvironment": { - "input": { - "type": "structure", - "members": { - "EnvironmentId": {}, - "EnvironmentName": {} - } - } - }, - "RequestEnvironmentInfo": { - "input": { - "type": "structure", - "required": [ - "InfoType" - ], - "members": { - "EnvironmentId": {}, - "EnvironmentName": {}, - "InfoType": {} - } - } - }, - "RestartAppServer": { - "input": { - "type": "structure", - "members": { - "EnvironmentId": {}, - "EnvironmentName": {} - } - } - }, - "RetrieveEnvironmentInfo": { - "input": { - "type": "structure", - "required": [ - "InfoType" - ], - "members": { - "EnvironmentId": {}, - "EnvironmentName": {}, - "InfoType": {} - } - }, - "output": { - "resultWrapper": "RetrieveEnvironmentInfoResult", - "type": "structure", - "members": { - "EnvironmentInfo": { - "type": "list", - "member": { - "type": "structure", - "members": { - "InfoType": {}, - "Ec2InstanceId": {}, - "SampleTimestamp": { - "type": "timestamp" - }, - "Message": {} - } - } - } - } - } - }, - "SwapEnvironmentCNAMEs": { - "input": { - "type": "structure", - "members": { - "SourceEnvironmentId": {}, - "SourceEnvironmentName": {}, - "DestinationEnvironmentId": {}, - "DestinationEnvironmentName": {} - } - } - }, - "TerminateEnvironment": { - "input": { - "type": "structure", - "members": { - "EnvironmentId": {}, - "EnvironmentName": {}, - "TerminateResources": { - "type": "boolean" - }, - "ForceTerminate": { - "type": "boolean" - } - } - }, - "output": { - "shape": "Sk", - "resultWrapper": "TerminateEnvironmentResult" - } - }, - "UpdateApplication": { - "input": { - "type": "structure", - "required": [ - "ApplicationName" - ], - "members": { - "ApplicationName": {}, - "Description": {} - } - }, - "output": { - "shape": "S1d", - "resultWrapper": "UpdateApplicationResult" - } - }, - "UpdateApplicationResourceLifecycle": { - "input": { - "type": "structure", - "required": [ - "ApplicationName", - "ResourceLifecycleConfig" - ], - "members": { - "ApplicationName": {}, - "ResourceLifecycleConfig": { - "shape": "S17" - } - } - }, - "output": { - "resultWrapper": "UpdateApplicationResourceLifecycleResult", - "type": "structure", - "members": { - "ApplicationName": {}, - "ResourceLifecycleConfig": { - "shape": "S17" - } - } - } - }, - "UpdateApplicationVersion": { - "input": { - "type": "structure", - "required": [ - "ApplicationName", - "VersionLabel" - ], - "members": { - "ApplicationName": {}, - "VersionLabel": {}, - "Description": {} - } - }, - "output": { - "shape": "S1u", - "resultWrapper": "UpdateApplicationVersionResult" - } - }, - "UpdateConfigurationTemplate": { - "input": { - "type": "structure", - "required": [ - "ApplicationName", - "TemplateName" - ], - "members": { - "ApplicationName": {}, - "TemplateName": {}, - "Description": {}, - "OptionSettings": { - "shape": "S1z" - }, - "OptionsToRemove": { - "shape": "S2c" - } - } - }, - "output": { - "shape": "S25", - "resultWrapper": "UpdateConfigurationTemplateResult" - } - }, - "UpdateEnvironment": { - "input": { - "type": "structure", - "members": { - "ApplicationName": {}, - "EnvironmentId": {}, - "EnvironmentName": {}, - "GroupName": {}, - "Description": {}, - "Tier": { - "shape": "S11" - }, - "VersionLabel": {}, - "TemplateName": {}, - "SolutionStackName": {}, - "PlatformArn": {}, - "OptionSettings": { - "shape": "S1z" - }, - "OptionsToRemove": { - "shape": "S2c" - } - } - }, - "output": { - "shape": "Sk", - "resultWrapper": "UpdateEnvironmentResult" - } - }, - "UpdateTagsForResource": { - "input": { - "type": "structure", - "required": [ - "ResourceArn" - ], - "members": { - "ResourceArn": {}, - "TagsToAdd": { - "shape": "S6q" - }, - "TagsToRemove": { - "type": "list", - "member": {} - } - } - } - }, - "ValidateConfigurationSettings": { - "input": { - "type": "structure", - "required": [ - "ApplicationName", - "OptionSettings" - ], - "members": { - "ApplicationName": {}, - "TemplateName": {}, - "EnvironmentName": {}, - "OptionSettings": { - "shape": "S1z" - } - } - }, - "output": { - "resultWrapper": "ValidateConfigurationSettingsResult", - "type": "structure", - "members": { - "Messages": { - "type": "list", - "member": { - "type": "structure", - "members": { - "Message": {}, - "Severity": {}, - "Namespace": {}, - "OptionName": {} - } - } - } - } - } - } - }, - "shapes": { - "Si": { - "type": "structure", - "members": { - "Environments": { - "type": "list", - "member": { - "shape": "Sk" - } - }, - "NextToken": {} - } - }, - "Sk": { - "type": "structure", - "members": { - "EnvironmentName": {}, - "EnvironmentId": {}, - "ApplicationName": {}, - "VersionLabel": {}, - "SolutionStackName": {}, - "PlatformArn": {}, - "TemplateName": {}, - "Description": {}, - "EndpointURL": {}, - "CNAME": {}, - "DateCreated": { - "type": "timestamp" - }, - "DateUpdated": { - "type": "timestamp" - }, - "Status": {}, - "AbortableOperationInProgress": { - "type": "boolean" - }, - "Health": {}, - "HealthStatus": {}, - "Resources": { - "type": "structure", - "members": { - "LoadBalancer": { - "type": "structure", - "members": { - "LoadBalancerName": {}, - "Domain": {}, - "Listeners": { - "type": "list", - "member": { - "type": "structure", - "members": { - "Protocol": {}, - "Port": { - "type": "integer" - } - } - } - } - } - } - } - }, - "Tier": { - "shape": "S11" - }, - "EnvironmentLinks": { - "type": "list", - "member": { - "type": "structure", - "members": { - "LinkName": {}, - "EnvironmentName": {} - } - } - }, - "EnvironmentArn": {} - } - }, - "S11": { - "type": "structure", - "members": { - "Name": {}, - "Type": {}, - "Version": {} - } - }, - "S17": { - "type": "structure", - "members": { - "ServiceRole": {}, - "VersionLifecycleConfig": { - "type": "structure", - "members": { - "MaxCountRule": { - "type": "structure", - "required": [ - "Enabled" - ], - "members": { - "Enabled": { - "type": "boolean" - }, - "MaxCount": { - "type": "integer" - }, - "DeleteSourceFromS3": { - "type": "boolean" - } - } - }, - "MaxAgeRule": { - "type": "structure", - "required": [ - "Enabled" - ], - "members": { - "Enabled": { - "type": "boolean" - }, - "MaxAgeInDays": { - "type": "integer" - }, - "DeleteSourceFromS3": { - "type": "boolean" - } - } - } - } - } - } - }, - "S1d": { - "type": "structure", - "members": { - "Application": { - "shape": "S1e" - } - } - }, - "S1e": { - "type": "structure", - "members": { - "ApplicationName": {}, - "Description": {}, - "DateCreated": { - "type": "timestamp" - }, - "DateUpdated": { - "type": "timestamp" - }, - "Versions": { - "shape": "S1f" - }, - "ConfigurationTemplates": { - "type": "list", - "member": {} - }, - "ResourceLifecycleConfig": { - "shape": "S17" - } - } - }, - "S1f": { - "type": "list", - "member": {} - }, - "S1i": { - "type": "structure", - "required": [ - "SourceType", - "SourceRepository", - "SourceLocation" - ], - "members": { - "SourceType": {}, - "SourceRepository": {}, - "SourceLocation": {} - } - }, - "S1m": { - "type": "structure", - "members": { - "S3Bucket": {}, - "S3Key": {} - } - }, - "S1u": { - "type": "structure", - "members": { - "ApplicationVersion": { - "shape": "S1v" - } - } - }, - "S1v": { - "type": "structure", - "members": { - "ApplicationName": {}, - "Description": {}, - "VersionLabel": {}, - "SourceBuildInformation": { - "shape": "S1i" - }, - "BuildArn": {}, - "SourceBundle": { - "shape": "S1m" - }, - "DateCreated": { - "type": "timestamp" - }, - "DateUpdated": { - "type": "timestamp" - }, - "Status": {} - } - }, - "S1z": { - "type": "list", - "member": { - "type": "structure", - "members": { - "ResourceName": {}, - "Namespace": {}, - "OptionName": {}, - "Value": {} - } - } - }, - "S25": { - "type": "structure", - "members": { - "SolutionStackName": {}, - "PlatformArn": {}, - "ApplicationName": {}, - "TemplateName": {}, - "Description": {}, - "EnvironmentName": {}, - "DeploymentStatus": {}, - "DateCreated": { - "type": "timestamp" - }, - "DateUpdated": { - "type": "timestamp" - }, - "OptionSettings": { - "shape": "S1z" - } - } - }, - "S29": { - "type": "structure", - "members": { - "Key": {}, - "Value": {} - } - }, - "S2c": { - "type": "list", - "member": { - "type": "structure", - "members": { - "ResourceName": {}, - "Namespace": {}, - "OptionName": {} - } - } - }, - "S2i": { - "type": "structure", - "members": { - "PlatformArn": {}, - "PlatformOwner": {}, - "PlatformStatus": {}, - "PlatformCategory": {}, - "OperatingSystemName": {}, - "OperatingSystemVersion": {}, - "SupportedTierList": { - "shape": "S2o" - }, - "SupportedAddonList": { - "shape": "S2q" - } - } - }, - "S2o": { - "type": "list", - "member": {} - }, - "S2q": { - "type": "list", - "member": {} - }, - "S3y": { - "type": "list", - "member": {} - }, - "S40": { - "type": "structure", - "members": { - "Duration": { - "type": "integer" - }, - "RequestCount": { - "type": "integer" - }, - "StatusCodes": { - "type": "structure", - "members": { - "Status2xx": { - "type": "integer" - }, - "Status3xx": { - "type": "integer" - }, - "Status4xx": { - "type": "integer" - }, - "Status5xx": { - "type": "integer" - } - } - }, - "Latency": { - "type": "structure", - "members": { - "P999": { - "type": "double" - }, - "P99": { - "type": "double" - }, - "P95": { - "type": "double" - }, - "P90": { - "type": "double" - }, - "P85": { - "type": "double" - }, - "P75": { - "type": "double" - }, - "P50": { - "type": "double" - }, - "P10": { - "type": "double" - } - } - } - } - }, - "S6q": { - "type": "list", - "member": { - "shape": "S29" - } - } - } -} \ No newline at end of file diff --git a/workshops/monte-carlo-on-ec2-spot-fleet/src/web/node_modules/aws-sdk/apis/elasticbeanstalk-2010-12-01.paginators.json b/workshops/monte-carlo-on-ec2-spot-fleet/src/web/node_modules/aws-sdk/apis/elasticbeanstalk-2010-12-01.paginators.json deleted file mode 100644 index b4e93b3d..00000000 --- a/workshops/monte-carlo-on-ec2-spot-fleet/src/web/node_modules/aws-sdk/apis/elasticbeanstalk-2010-12-01.paginators.json +++ /dev/null @@ -1,25 +0,0 @@ -{ - "pagination": { - "DescribeApplicationVersions": { - "result_key": "ApplicationVersions" - }, - "DescribeApplications": { - "result_key": "Applications" - }, - "DescribeConfigurationOptions": { - "result_key": "Options" - }, - "DescribeEnvironments": { - "result_key": "Environments" - }, - "DescribeEvents": { - "input_token": "NextToken", - "limit_key": "MaxRecords", - "output_token": "NextToken", - "result_key": "Events" - }, - "ListAvailableSolutionStacks": { - "result_key": "SolutionStacks" - } - } -} \ No newline at end of file diff --git a/workshops/monte-carlo-on-ec2-spot-fleet/src/web/node_modules/aws-sdk/apis/elasticfilesystem-2015-02-01.examples.json b/workshops/monte-carlo-on-ec2-spot-fleet/src/web/node_modules/aws-sdk/apis/elasticfilesystem-2015-02-01.examples.json deleted file mode 100644 index 4a4b982d..00000000 --- a/workshops/monte-carlo-on-ec2-spot-fleet/src/web/node_modules/aws-sdk/apis/elasticfilesystem-2015-02-01.examples.json +++ /dev/null @@ -1,222 +0,0 @@ -{ - "version": "1.0", - "examples": { - "CreateFileSystem": [ - { - "input": { - "CreationToken": "tokenstring", - "PerformanceMode": "generalPurpose" - }, - "output": { - "CreationTime": "1481841524.0", - "CreationToken": "tokenstring", - "FileSystemId": "fs-01234567", - "LifeCycleState": "creating", - "NumberOfMountTargets": 0, - "OwnerId": "012345678912", - "PerformanceMode": "generalPurpose", - "SizeInBytes": { - "Value": 0 - } - }, - "comments": { - "input": { - }, - "output": { - } - }, - "description": "This operation creates a new file system with the default generalpurpose performance mode.", - "id": "to-create-a-new-file-system-1481840798547", - "title": "To create a new file system" - } - ], - "CreateMountTarget": [ - { - "input": { - "FileSystemId": "fs-01234567", - "SubnetId": "subnet-1234abcd" - }, - "output": { - "FileSystemId": "fs-01234567", - "IpAddress": "192.0.0.2", - "LifeCycleState": "creating", - "MountTargetId": "fsmt-12340abc", - "NetworkInterfaceId": "eni-cedf6789", - "OwnerId": "012345678912", - "SubnetId": "subnet-1234abcd" - }, - "comments": { - "input": { - }, - "output": { - } - }, - "description": "This operation creates a new mount target for an EFS file system.", - "id": "to-create-a-new-mount-target-1481842289329", - "title": "To create a new mount target" - } - ], - "CreateTags": [ - { - "input": { - "FileSystemId": "fs-01234567", - "Tags": [ - { - "Key": "Name", - "Value": "MyFileSystem" - } - ] - }, - "comments": { - }, - "description": "This operation creates a new tag for an EFS file system.", - "id": "to-create-a-new-tag-1481843409357", - "title": "To create a new tag" - } - ], - "DeleteFileSystem": [ - { - "input": { - "FileSystemId": "fs-01234567" - }, - "comments": { - }, - "description": "This operation deletes an EFS file system.", - "id": "to-delete-a-file-system-1481847318348", - "title": "To delete a file system" - } - ], - "DeleteMountTarget": [ - { - "input": { - "MountTargetId": "fsmt-12340abc" - }, - "comments": { - }, - "description": "This operation deletes a mount target.", - "id": "to-delete-a-mount-target-1481847635607", - "title": "To delete a mount target" - } - ], - "DeleteTags": [ - { - "input": { - "FileSystemId": "fs-01234567", - "TagKeys": [ - "Name" - ] - }, - "comments": { - }, - "description": "This operation deletes tags for an EFS file system.", - "id": "to-delete-tags-for-an-efs-file-system-1481848189061", - "title": "To delete tags for an EFS file system" - } - ], - "DescribeFileSystems": [ - { - "input": { - }, - "output": { - "FileSystems": [ - { - "CreationTime": "1481841524.0", - "CreationToken": "tokenstring", - "FileSystemId": "fs-01234567", - "LifeCycleState": "available", - "Name": "MyFileSystem", - "NumberOfMountTargets": 1, - "OwnerId": "012345678912", - "PerformanceMode": "generalPurpose", - "SizeInBytes": { - "Value": 6144 - } - } - ] - }, - "comments": { - }, - "description": "This operation describes all of the EFS file systems in an account.", - "id": "to-describe-an-efs-file-system-1481848448460", - "title": "To describe an EFS file system" - } - ], - "DescribeMountTargetSecurityGroups": [ - { - "input": { - "MountTargetId": "fsmt-12340abc" - }, - "output": { - "SecurityGroups": [ - "sg-fghi4567" - ] - }, - "comments": { - }, - "description": "This operation describes all of the security groups for a file system's mount target.", - "id": "to-describe-the-security-groups-for-a-mount-target-1481849317823", - "title": "To describe the security groups for a mount target" - } - ], - "DescribeMountTargets": [ - { - "input": { - "FileSystemId": "fs-01234567" - }, - "output": { - "MountTargets": [ - { - "FileSystemId": "fs-01234567", - "IpAddress": "192.0.0.2", - "LifeCycleState": "available", - "MountTargetId": "fsmt-12340abc", - "NetworkInterfaceId": "eni-cedf6789", - "OwnerId": "012345678912", - "SubnetId": "subnet-1234abcd" - } - ] - }, - "comments": { - }, - "description": "This operation describes all of a file system's mount targets.", - "id": "to-describe-the-mount-targets-for-a-file-system-1481849958584", - "title": "To describe the mount targets for a file system" - } - ], - "DescribeTags": [ - { - "input": { - "FileSystemId": "fs-01234567" - }, - "output": { - "Tags": [ - { - "Key": "Name", - "Value": "MyFileSystem" - } - ] - }, - "comments": { - }, - "description": "This operation describes all of a file system's tags.", - "id": "to-describe-the-tags-for-a-file-system-1481850497090", - "title": "To describe the tags for a file system" - } - ], - "ModifyMountTargetSecurityGroups": [ - { - "input": { - "MountTargetId": "fsmt-12340abc", - "SecurityGroups": [ - "sg-abcd1234" - ] - }, - "comments": { - }, - "description": "This operation modifies the security groups associated with a mount target for a file system.", - "id": "to-modify-the-security-groups-associated-with-a-mount-target-for-a-file-system-1481850772562", - "title": "To modify the security groups associated with a mount target for a file system" - } - ] - } -} diff --git a/workshops/monte-carlo-on-ec2-spot-fleet/src/web/node_modules/aws-sdk/apis/elasticfilesystem-2015-02-01.min.json b/workshops/monte-carlo-on-ec2-spot-fleet/src/web/node_modules/aws-sdk/apis/elasticfilesystem-2015-02-01.min.json deleted file mode 100644 index 964ac611..00000000 --- a/workshops/monte-carlo-on-ec2-spot-fleet/src/web/node_modules/aws-sdk/apis/elasticfilesystem-2015-02-01.min.json +++ /dev/null @@ -1,404 +0,0 @@ -{ - "version": "2.0", - "metadata": { - "apiVersion": "2015-02-01", - "endpointPrefix": "elasticfilesystem", - "protocol": "rest-json", - "serviceAbbreviation": "EFS", - "serviceFullName": "Amazon Elastic File System", - "signatureVersion": "v4", - "uid": "elasticfilesystem-2015-02-01" - }, - "operations": { - "CreateFileSystem": { - "http": { - "requestUri": "/2015-02-01/file-systems", - "responseCode": 201 - }, - "input": { - "type": "structure", - "required": [ - "CreationToken" - ], - "members": { - "CreationToken": {}, - "PerformanceMode": {}, - "Encrypted": { - "type": "boolean" - }, - "KmsKeyId": {} - } - }, - "output": { - "shape": "S6" - } - }, - "CreateMountTarget": { - "http": { - "requestUri": "/2015-02-01/mount-targets", - "responseCode": 200 - }, - "input": { - "type": "structure", - "required": [ - "FileSystemId", - "SubnetId" - ], - "members": { - "FileSystemId": {}, - "SubnetId": {}, - "IpAddress": {}, - "SecurityGroups": { - "shape": "Si" - } - } - }, - "output": { - "shape": "Sk" - } - }, - "CreateTags": { - "http": { - "requestUri": "/2015-02-01/create-tags/{FileSystemId}", - "responseCode": 204 - }, - "input": { - "type": "structure", - "required": [ - "FileSystemId", - "Tags" - ], - "members": { - "FileSystemId": { - "location": "uri", - "locationName": "FileSystemId" - }, - "Tags": { - "shape": "So" - } - } - } - }, - "DeleteFileSystem": { - "http": { - "method": "DELETE", - "requestUri": "/2015-02-01/file-systems/{FileSystemId}", - "responseCode": 204 - }, - "input": { - "type": "structure", - "required": [ - "FileSystemId" - ], - "members": { - "FileSystemId": { - "location": "uri", - "locationName": "FileSystemId" - } - } - } - }, - "DeleteMountTarget": { - "http": { - "method": "DELETE", - "requestUri": "/2015-02-01/mount-targets/{MountTargetId}", - "responseCode": 204 - }, - "input": { - "type": "structure", - "required": [ - "MountTargetId" - ], - "members": { - "MountTargetId": { - "location": "uri", - "locationName": "MountTargetId" - } - } - } - }, - "DeleteTags": { - "http": { - "requestUri": "/2015-02-01/delete-tags/{FileSystemId}", - "responseCode": 204 - }, - "input": { - "type": "structure", - "required": [ - "FileSystemId", - "TagKeys" - ], - "members": { - "FileSystemId": { - "location": "uri", - "locationName": "FileSystemId" - }, - "TagKeys": { - "type": "list", - "member": {} - } - } - } - }, - "DescribeFileSystems": { - "http": { - "method": "GET", - "requestUri": "/2015-02-01/file-systems", - "responseCode": 200 - }, - "input": { - "type": "structure", - "members": { - "MaxItems": { - "location": "querystring", - "locationName": "MaxItems", - "type": "integer" - }, - "Marker": { - "location": "querystring", - "locationName": "Marker" - }, - "CreationToken": { - "location": "querystring", - "locationName": "CreationToken" - }, - "FileSystemId": { - "location": "querystring", - "locationName": "FileSystemId" - } - } - }, - "output": { - "type": "structure", - "members": { - "Marker": {}, - "FileSystems": { - "type": "list", - "member": { - "shape": "S6" - } - }, - "NextMarker": {} - } - } - }, - "DescribeMountTargetSecurityGroups": { - "http": { - "method": "GET", - "requestUri": "/2015-02-01/mount-targets/{MountTargetId}/security-groups", - "responseCode": 200 - }, - "input": { - "type": "structure", - "required": [ - "MountTargetId" - ], - "members": { - "MountTargetId": { - "location": "uri", - "locationName": "MountTargetId" - } - } - }, - "output": { - "type": "structure", - "required": [ - "SecurityGroups" - ], - "members": { - "SecurityGroups": { - "shape": "Si" - } - } - } - }, - "DescribeMountTargets": { - "http": { - "method": "GET", - "requestUri": "/2015-02-01/mount-targets", - "responseCode": 200 - }, - "input": { - "type": "structure", - "members": { - "MaxItems": { - "location": "querystring", - "locationName": "MaxItems", - "type": "integer" - }, - "Marker": { - "location": "querystring", - "locationName": "Marker" - }, - "FileSystemId": { - "location": "querystring", - "locationName": "FileSystemId" - }, - "MountTargetId": { - "location": "querystring", - "locationName": "MountTargetId" - } - } - }, - "output": { - "type": "structure", - "members": { - "Marker": {}, - "MountTargets": { - "type": "list", - "member": { - "shape": "Sk" - } - }, - "NextMarker": {} - } - } - }, - "DescribeTags": { - "http": { - "method": "GET", - "requestUri": "/2015-02-01/tags/{FileSystemId}/", - "responseCode": 200 - }, - "input": { - "type": "structure", - "required": [ - "FileSystemId" - ], - "members": { - "MaxItems": { - "location": "querystring", - "locationName": "MaxItems", - "type": "integer" - }, - "Marker": { - "location": "querystring", - "locationName": "Marker" - }, - "FileSystemId": { - "location": "uri", - "locationName": "FileSystemId" - } - } - }, - "output": { - "type": "structure", - "required": [ - "Tags" - ], - "members": { - "Marker": {}, - "Tags": { - "shape": "So" - }, - "NextMarker": {} - } - } - }, - "ModifyMountTargetSecurityGroups": { - "http": { - "method": "PUT", - "requestUri": "/2015-02-01/mount-targets/{MountTargetId}/security-groups", - "responseCode": 204 - }, - "input": { - "type": "structure", - "required": [ - "MountTargetId" - ], - "members": { - "MountTargetId": { - "location": "uri", - "locationName": "MountTargetId" - }, - "SecurityGroups": { - "shape": "Si" - } - } - } - } - }, - "shapes": { - "S6": { - "type": "structure", - "required": [ - "OwnerId", - "CreationToken", - "FileSystemId", - "CreationTime", - "LifeCycleState", - "NumberOfMountTargets", - "SizeInBytes", - "PerformanceMode" - ], - "members": { - "OwnerId": {}, - "CreationToken": {}, - "FileSystemId": {}, - "CreationTime": { - "type": "timestamp" - }, - "LifeCycleState": {}, - "Name": {}, - "NumberOfMountTargets": { - "type": "integer" - }, - "SizeInBytes": { - "type": "structure", - "required": [ - "Value" - ], - "members": { - "Value": { - "type": "long" - }, - "Timestamp": { - "type": "timestamp" - } - } - }, - "PerformanceMode": {}, - "Encrypted": { - "type": "boolean" - }, - "KmsKeyId": {} - } - }, - "Si": { - "type": "list", - "member": {} - }, - "Sk": { - "type": "structure", - "required": [ - "MountTargetId", - "FileSystemId", - "SubnetId", - "LifeCycleState" - ], - "members": { - "OwnerId": {}, - "MountTargetId": {}, - "FileSystemId": {}, - "SubnetId": {}, - "LifeCycleState": {}, - "IpAddress": {}, - "NetworkInterfaceId": {} - } - }, - "So": { - "type": "list", - "member": { - "type": "structure", - "required": [ - "Key", - "Value" - ], - "members": { - "Key": {}, - "Value": {} - } - } - } - } -} \ No newline at end of file diff --git a/workshops/monte-carlo-on-ec2-spot-fleet/src/web/node_modules/aws-sdk/apis/elasticfilesystem-2015-02-01.paginators.json b/workshops/monte-carlo-on-ec2-spot-fleet/src/web/node_modules/aws-sdk/apis/elasticfilesystem-2015-02-01.paginators.json deleted file mode 100644 index 5677bd8e..00000000 --- a/workshops/monte-carlo-on-ec2-spot-fleet/src/web/node_modules/aws-sdk/apis/elasticfilesystem-2015-02-01.paginators.json +++ /dev/null @@ -1,4 +0,0 @@ -{ - "pagination": { - } -} diff --git a/workshops/monte-carlo-on-ec2-spot-fleet/src/web/node_modules/aws-sdk/apis/elasticloadbalancing-2012-06-01.examples.json b/workshops/monte-carlo-on-ec2-spot-fleet/src/web/node_modules/aws-sdk/apis/elasticloadbalancing-2012-06-01.examples.json deleted file mode 100644 index ce50fdd1..00000000 --- a/workshops/monte-carlo-on-ec2-spot-fleet/src/web/node_modules/aws-sdk/apis/elasticloadbalancing-2012-06-01.examples.json +++ /dev/null @@ -1,1036 +0,0 @@ -{ - "version": "1.0", - "examples": { - "AddTags": [ - { - "input": { - "LoadBalancerNames": [ - "my-load-balancer" - ], - "Tags": [ - { - "Key": "project", - "Value": "lima" - }, - { - "Key": "department", - "Value": "digital-media" - } - ] - }, - "comments": { - "input": { - }, - "output": { - } - }, - "description": "This example adds two tags to the specified load balancer.", - "id": "elb-add-tags-1", - "title": "To add tags to a load balancer" - } - ], - "ApplySecurityGroupsToLoadBalancer": [ - { - "input": { - "LoadBalancerName": "my-load-balancer", - "SecurityGroups": [ - "sg-fc448899" - ] - }, - "output": { - "SecurityGroups": [ - "sg-fc448899" - ] - }, - "comments": { - "input": { - }, - "output": { - } - }, - "description": "This example associates a security group with the specified load balancer in a VPC.", - "id": "elb-apply-security-groups-to-load-balancer-1", - "title": "To associate a security group with a load balancer in a VPC" - } - ], - "AttachLoadBalancerToSubnets": [ - { - "input": { - "LoadBalancerName": "my-load-balancer", - "Subnets": [ - "subnet-0ecac448" - ] - }, - "output": { - "Subnets": [ - "subnet-15aaab61", - "subnet-0ecac448" - ] - }, - "comments": { - "input": { - }, - "output": { - } - }, - "description": "This example adds the specified subnet to the set of configured subnets for the specified load balancer.", - "id": "elb-attach-load-balancer-to-subnets-1", - "title": "To attach subnets to a load balancer" - } - ], - "ConfigureHealthCheck": [ - { - "input": { - "HealthCheck": { - "HealthyThreshold": 2, - "Interval": 30, - "Target": "HTTP:80/png", - "Timeout": 3, - "UnhealthyThreshold": 2 - }, - "LoadBalancerName": "my-load-balancer" - }, - "output": { - "HealthCheck": { - "HealthyThreshold": 2, - "Interval": 30, - "Target": "HTTP:80/png", - "Timeout": 3, - "UnhealthyThreshold": 2 - } - }, - "comments": { - "input": { - }, - "output": { - } - }, - "description": "This example specifies the health check settings used to evaluate the health of your backend EC2 instances.", - "id": "elb-configure-health-check-1", - "title": "To specify the health check settings for your backend EC2 instances" - } - ], - "CreateAppCookieStickinessPolicy": [ - { - "input": { - "CookieName": "my-app-cookie", - "LoadBalancerName": "my-load-balancer", - "PolicyName": "my-app-cookie-policy" - }, - "comments": { - "input": { - }, - "output": { - } - }, - "description": "This example generates a stickiness policy that follows the sticky session lifetimes of the application-generated cookie.", - "id": "elb-create-app-cookie-stickiness-policy-1", - "title": "To generate a stickiness policy for your load balancer" - } - ], - "CreateLBCookieStickinessPolicy": [ - { - "input": { - "CookieExpirationPeriod": 60, - "LoadBalancerName": "my-load-balancer", - "PolicyName": "my-duration-cookie-policy" - }, - "comments": { - "input": { - }, - "output": { - } - }, - "description": "This example generates a stickiness policy with sticky session lifetimes controlled by the specified expiration period.", - "id": "elb-create-lb-cookie-stickiness-policy-1", - "title": "To generate a duration-based stickiness policy for your load balancer" - } - ], - "CreateLoadBalancer": [ - { - "input": { - "Listeners": [ - { - "InstancePort": 80, - "InstanceProtocol": "HTTP", - "LoadBalancerPort": 80, - "Protocol": "HTTP" - } - ], - "LoadBalancerName": "my-load-balancer", - "SecurityGroups": [ - "sg-a61988c3" - ], - "Subnets": [ - "subnet-15aaab61" - ] - }, - "output": { - "DNSName": "my-load-balancer-1234567890.us-west-2.elb.amazonaws.com" - }, - "comments": { - "input": { - }, - "output": { - } - }, - "description": "This example creates a load balancer with an HTTP listener in a VPC.", - "id": "elb-create-load-balancer-1", - "title": "To create an HTTP load balancer in a VPC" - }, - { - "input": { - "AvailabilityZones": [ - "us-west-2a" - ], - "Listeners": [ - { - "InstancePort": 80, - "InstanceProtocol": "HTTP", - "LoadBalancerPort": 80, - "Protocol": "HTTP" - } - ], - "LoadBalancerName": "my-load-balancer" - }, - "output": { - "DNSName": "my-load-balancer-123456789.us-west-2.elb.amazonaws.com" - }, - "comments": { - "input": { - }, - "output": { - } - }, - "description": "This example creates a load balancer with an HTTP listener in EC2-Classic.", - "id": "elb-create-load-balancer-2", - "title": "To create an HTTP load balancer in EC2-Classic" - }, - { - "input": { - "Listeners": [ - { - "InstancePort": 80, - "InstanceProtocol": "HTTP", - "LoadBalancerPort": 80, - "Protocol": "HTTP" - }, - { - "InstancePort": 80, - "InstanceProtocol": "HTTP", - "LoadBalancerPort": 443, - "Protocol": "HTTPS", - "SSLCertificateId": "arn:aws:iam::123456789012:server-certificate/my-server-cert" - } - ], - "LoadBalancerName": "my-load-balancer", - "SecurityGroups": [ - "sg-a61988c3" - ], - "Subnets": [ - "subnet-15aaab61" - ] - }, - "output": { - "DNSName": "my-load-balancer-1234567890.us-west-2.elb.amazonaws.com" - }, - "comments": { - "input": { - }, - "output": { - } - }, - "description": "This example creates a load balancer with an HTTPS listener in a VPC.", - "id": "elb-create-load-balancer-3", - "title": "To create an HTTPS load balancer in a VPC" - }, - { - "input": { - "AvailabilityZones": [ - "us-west-2a" - ], - "Listeners": [ - { - "InstancePort": 80, - "InstanceProtocol": "HTTP", - "LoadBalancerPort": 80, - "Protocol": "HTTP" - }, - { - "InstancePort": 80, - "InstanceProtocol": "HTTP", - "LoadBalancerPort": 443, - "Protocol": "HTTPS", - "SSLCertificateId": "arn:aws:iam::123456789012:server-certificate/my-server-cert" - } - ], - "LoadBalancerName": "my-load-balancer" - }, - "output": { - "DNSName": "my-load-balancer-123456789.us-west-2.elb.amazonaws.com" - }, - "comments": { - "input": { - }, - "output": { - } - }, - "description": "This example creates a load balancer with an HTTPS listener in EC2-Classic.", - "id": "elb-create-load-balancer-4", - "title": "To create an HTTPS load balancer in EC2-Classic" - }, - { - "input": { - "Listeners": [ - { - "InstancePort": 80, - "InstanceProtocol": "HTTP", - "LoadBalancerPort": 80, - "Protocol": "HTTP" - } - ], - "LoadBalancerName": "my-load-balancer", - "Scheme": "internal", - "SecurityGroups": [ - "sg-a61988c3" - ], - "Subnets": [ - "subnet-15aaab61" - ] - }, - "output": { - "DNSName": "internal-my-load-balancer-123456789.us-west-2.elb.amazonaws.com" - }, - "comments": { - "input": { - }, - "output": { - } - }, - "description": "This example creates an internal load balancer with an HTTP listener in a VPC.", - "id": "elb-create-load-balancer-5", - "title": "To create an internal load balancer" - } - ], - "CreateLoadBalancerListeners": [ - { - "input": { - "Listeners": [ - { - "InstancePort": 80, - "InstanceProtocol": "HTTP", - "LoadBalancerPort": 80, - "Protocol": "HTTP" - } - ], - "LoadBalancerName": "my-load-balancer" - }, - "comments": { - "input": { - }, - "output": { - } - }, - "description": "This example creates a listener for your load balancer at port 80 using the HTTP protocol.", - "id": "elb-create-load-balancer-listeners-1", - "title": "To create an HTTP listener for a load balancer" - }, - { - "input": { - "Listeners": [ - { - "InstancePort": 80, - "InstanceProtocol": "HTTP", - "LoadBalancerPort": 443, - "Protocol": "HTTPS", - "SSLCertificateId": "arn:aws:iam::123456789012:server-certificate/my-server-cert" - } - ], - "LoadBalancerName": "my-load-balancer" - }, - "comments": { - "input": { - }, - "output": { - } - }, - "description": "This example creates a listener for your load balancer at port 443 using the HTTPS protocol.", - "id": "elb-create-load-balancer-listeners-2", - "title": "To create an HTTPS listener for a load balancer" - } - ], - "CreateLoadBalancerPolicy": [ - { - "input": { - "LoadBalancerName": "my-load-balancer", - "PolicyAttributes": [ - { - "AttributeName": "ProxyProtocol", - "AttributeValue": "true" - } - ], - "PolicyName": "my-ProxyProtocol-policy", - "PolicyTypeName": "ProxyProtocolPolicyType" - }, - "comments": { - "input": { - }, - "output": { - } - }, - "description": "This example creates a policy that enables Proxy Protocol on the specified load balancer.", - "id": "elb-create-load-balancer-policy-1", - "title": "To create a policy that enables Proxy Protocol on a load balancer" - }, - { - "input": { - "LoadBalancerName": "my-load-balancer", - "PolicyAttributes": [ - { - "AttributeName": "PublicKey", - "AttributeValue": "MIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEAwAYUjnfyEyXr1pxjhFWBpMlggUcqoi3kl+dS74kj//c6x7ROtusUaeQCTgIUkayttRDWchuqo1pHC1u+n5xxXnBBe2ejbb2WRsKIQ5rXEeixsjFpFsojpSQKkzhVGI6mJVZBJDVKSHmswnwLBdofLhzvllpovBPTHe+o4haAWvDBALJU0pkSI1FecPHcs2hwxf14zHoXy1e2k36A64nXW43wtfx5qcVSIxtCEOjnYRg7RPvybaGfQ+v6Iaxb/+7J5kEvZhTFQId+bSiJImF1FSUT1W1xwzBZPUbcUkkXDj45vC2s3Z8E+Lk7a3uZhvsQHLZnrfuWjBWGWvZ/MhZYgEXAMPLE" - } - ], - "PolicyName": "my-PublicKey-policy", - "PolicyTypeName": "PublicKeyPolicyType" - }, - "comments": { - "input": { - }, - "output": { - } - }, - "description": "This example creates a public key policy.", - "id": "elb-create-load-balancer-policy-2", - "title": "To create a public key policy" - }, - { - "input": { - "LoadBalancerName": "my-load-balancer", - "PolicyAttributes": [ - { - "AttributeName": "PublicKeyPolicyName", - "AttributeValue": "my-PublicKey-policy" - } - ], - "PolicyName": "my-authentication-policy", - "PolicyTypeName": "BackendServerAuthenticationPolicyType" - }, - "comments": { - "input": { - }, - "output": { - } - }, - "description": "This example creates a backend server authentication policy that enables authentication on your backend instance using a public key policy.", - "id": "elb-create-load-balancer-policy-3", - "title": "To create a backend server authentication policy" - } - ], - "DeleteLoadBalancer": [ - { - "input": { - "LoadBalancerName": "my-load-balancer" - }, - "comments": { - "input": { - }, - "output": { - } - }, - "description": "This example deletes the specified load balancer.", - "id": "elb-delete-load-balancer-1", - "title": "To delete a load balancer" - } - ], - "DeleteLoadBalancerListeners": [ - { - "input": { - "LoadBalancerName": "my-load-balancer", - "LoadBalancerPorts": [ - 80 - ] - }, - "comments": { - "input": { - }, - "output": { - } - }, - "description": "This example deletes the listener for the specified port from the specified load balancer.", - "id": "elb-delete-load-balancer-listeners-1", - "title": "To delete a listener from your load balancer" - } - ], - "DeleteLoadBalancerPolicy": [ - { - "input": { - "LoadBalancerName": "my-load-balancer", - "PolicyName": "my-duration-cookie-policy" - }, - "comments": { - "input": { - }, - "output": { - } - }, - "description": "This example deletes the specified policy from the specified load balancer. The policy must not be enabled on any listener.", - "id": "elb-delete-load-balancer-policy-1", - "title": "To delete a policy from your load balancer" - } - ], - "DeregisterInstancesFromLoadBalancer": [ - { - "input": { - "Instances": [ - { - "InstanceId": "i-d6f6fae3" - } - ], - "LoadBalancerName": "my-load-balancer" - }, - "output": { - "Instances": [ - { - "InstanceId": "i-207d9717" - }, - { - "InstanceId": "i-afefb49b" - } - ] - }, - "comments": { - "input": { - }, - "output": { - } - }, - "description": "This example deregisters the specified instance from the specified load balancer.", - "id": "elb-deregister-instances-from-load-balancer-1", - "title": "To deregister instances from a load balancer" - } - ], - "DescribeInstanceHealth": [ - { - "input": { - "LoadBalancerName": "my-load-balancer" - }, - "output": { - "InstanceStates": [ - { - "Description": "N/A", - "InstanceId": "i-207d9717", - "ReasonCode": "N/A", - "State": "InService" - }, - { - "Description": "N/A", - "InstanceId": "i-afefb49b", - "ReasonCode": "N/A", - "State": "InService" - } - ] - }, - "comments": { - "input": { - }, - "output": { - } - }, - "description": "This example describes the health of the instances for the specified load balancer.", - "id": "elb-describe-instance-health-1", - "title": "To describe the health of the instances for a load balancer" - } - ], - "DescribeLoadBalancerAttributes": [ - { - "input": { - "LoadBalancerName": "my-load-balancer" - }, - "output": { - "LoadBalancerAttributes": { - "AccessLog": { - "Enabled": false - }, - "ConnectionDraining": { - "Enabled": false, - "Timeout": 300 - }, - "ConnectionSettings": { - "IdleTimeout": 60 - }, - "CrossZoneLoadBalancing": { - "Enabled": false - } - } - }, - "comments": { - "input": { - }, - "output": { - } - }, - "description": "This example describes the attributes of the specified load balancer.", - "id": "elb-describe-load-balancer-attributes-1", - "title": "To describe the attributes of a load balancer" - } - ], - "DescribeLoadBalancerPolicies": [ - { - "input": { - "LoadBalancerName": "my-load-balancer", - "PolicyNames": [ - "my-authentication-policy" - ] - }, - "output": { - "PolicyDescriptions": [ - { - "PolicyAttributeDescriptions": [ - { - "AttributeName": "PublicKeyPolicyName", - "AttributeValue": "my-PublicKey-policy" - } - ], - "PolicyName": "my-authentication-policy", - "PolicyTypeName": "BackendServerAuthenticationPolicyType" - } - ] - }, - "comments": { - "input": { - }, - "output": { - } - }, - "description": "This example describes the specified policy associated with the specified load balancer.", - "id": "elb-describe-load-balancer-policies-1", - "title": "To describe a policy associated with a load balancer" - } - ], - "DescribeLoadBalancerPolicyTypes": [ - { - "input": { - "PolicyTypeNames": [ - "ProxyProtocolPolicyType" - ] - }, - "output": { - "PolicyTypeDescriptions": [ - { - "Description": "Policy that controls whether to include the IP address and port of the originating request for TCP messages. This policy operates on TCP listeners only.", - "PolicyAttributeTypeDescriptions": [ - { - "AttributeName": "ProxyProtocol", - "AttributeType": "Boolean", - "Cardinality": "ONE" - } - ], - "PolicyTypeName": "ProxyProtocolPolicyType" - } - ] - }, - "comments": { - "input": { - }, - "output": { - } - }, - "description": "This example describes the specified load balancer policy type.", - "id": "elb-describe-load-balancer-policy-types-1", - "title": "To describe a load balancer policy type defined by Elastic Load Balancing" - } - ], - "DescribeLoadBalancers": [ - { - "input": { - "LoadBalancerNames": [ - "my-load-balancer" - ] - }, - "output": { - "LoadBalancerDescriptions": [ - { - "AvailabilityZones": [ - "us-west-2a" - ], - "BackendServerDescriptions": [ - { - "InstancePort": 80, - "PolicyNames": [ - "my-ProxyProtocol-policy" - ] - } - ], - "CanonicalHostedZoneName": "my-load-balancer-1234567890.us-west-2.elb.amazonaws.com", - "CanonicalHostedZoneNameID": "Z3DZXE0EXAMPLE", - "CreatedTime": "2015-03-19T03:24:02.650Z", - "DNSName": "my-load-balancer-1234567890.us-west-2.elb.amazonaws.com", - "HealthCheck": { - "HealthyThreshold": 2, - "Interval": 30, - "Target": "HTTP:80/png", - "Timeout": 3, - "UnhealthyThreshold": 2 - }, - "Instances": [ - { - "InstanceId": "i-207d9717" - }, - { - "InstanceId": "i-afefb49b" - } - ], - "ListenerDescriptions": [ - { - "Listener": { - "InstancePort": 80, - "InstanceProtocol": "HTTP", - "LoadBalancerPort": 80, - "Protocol": "HTTP" - }, - "PolicyNames": [ - - ] - }, - { - "Listener": { - "InstancePort": 443, - "InstanceProtocol": "HTTPS", - "LoadBalancerPort": 443, - "Protocol": "HTTPS", - "SSLCertificateId": "arn:aws:iam::123456789012:server-certificate/my-server-cert" - }, - "PolicyNames": [ - "ELBSecurityPolicy-2015-03" - ] - } - ], - "LoadBalancerName": "my-load-balancer", - "Policies": { - "AppCookieStickinessPolicies": [ - - ], - "LBCookieStickinessPolicies": [ - { - "CookieExpirationPeriod": 60, - "PolicyName": "my-duration-cookie-policy" - } - ], - "OtherPolicies": [ - "my-PublicKey-policy", - "my-authentication-policy", - "my-SSLNegotiation-policy", - "my-ProxyProtocol-policy", - "ELBSecurityPolicy-2015-03" - ] - }, - "Scheme": "internet-facing", - "SecurityGroups": [ - "sg-a61988c3" - ], - "SourceSecurityGroup": { - "GroupName": "my-elb-sg", - "OwnerAlias": "123456789012" - }, - "Subnets": [ - "subnet-15aaab61" - ], - "VPCId": "vpc-a01106c2" - } - ] - }, - "comments": { - "input": { - }, - "output": { - } - }, - "description": "This example describes the specified load balancer.", - "id": "elb-describe-load-balancers-1", - "title": "To describe one of your load balancers" - } - ], - "DescribeTags": [ - { - "input": { - "LoadBalancerNames": [ - "my-load-balancer" - ] - }, - "output": { - "TagDescriptions": [ - { - "LoadBalancerName": "my-load-balancer", - "Tags": [ - { - "Key": "project", - "Value": "lima" - }, - { - "Key": "department", - "Value": "digital-media" - } - ] - } - ] - }, - "comments": { - "input": { - }, - "output": { - } - }, - "description": "This example describes the tags for the specified load balancer.", - "id": "elb-describe-tags-1", - "title": "To describe the tags for a load balancer" - } - ], - "DetachLoadBalancerFromSubnets": [ - { - "input": { - "LoadBalancerName": "my-load-balancer", - "Subnets": [ - "subnet-0ecac448" - ] - }, - "output": { - "Subnets": [ - "subnet-15aaab61" - ] - }, - "comments": { - "input": { - }, - "output": { - } - }, - "description": "This example detaches the specified load balancer from the specified subnet.", - "id": "elb-detach-load-balancer-from-subnets-1", - "title": "To detach a load balancer from a subnet" - } - ], - "DisableAvailabilityZonesForLoadBalancer": [ - { - "input": { - "AvailabilityZones": [ - "us-west-2a" - ], - "LoadBalancerName": "my-load-balancer" - }, - "output": { - "AvailabilityZones": [ - "us-west-2b" - ] - }, - "comments": { - "input": { - }, - "output": { - } - }, - "description": "This example removes the specified Availability Zone from the set of Availability Zones for the specified load balancer.", - "id": "elb-disable-availability-zones-for-load-balancer-1", - "title": "To disable an Availability Zone for a load balancer" - } - ], - "EnableAvailabilityZonesForLoadBalancer": [ - { - "input": { - "AvailabilityZones": [ - "us-west-2b" - ], - "LoadBalancerName": "my-load-balancer" - }, - "output": { - "AvailabilityZones": [ - "us-west-2a", - "us-west-2b" - ] - }, - "comments": { - "input": { - }, - "output": { - } - }, - "description": "This example adds the specified Availability Zone to the specified load balancer.", - "id": "elb-enable-availability-zones-for-load-balancer-1", - "title": "To enable an Availability Zone for a load balancer" - } - ], - "ModifyLoadBalancerAttributes": [ - { - "input": { - "LoadBalancerAttributes": { - "CrossZoneLoadBalancing": { - "Enabled": true - } - }, - "LoadBalancerName": "my-load-balancer" - }, - "output": { - "LoadBalancerAttributes": { - "CrossZoneLoadBalancing": { - "Enabled": true - } - }, - "LoadBalancerName": "my-load-balancer" - }, - "comments": { - "input": { - }, - "output": { - } - }, - "description": "This example enables cross-zone load balancing for the specified load balancer.", - "id": "elb-modify-load-balancer-attributes-1", - "title": "To enable cross-zone load balancing" - }, - { - "input": { - "LoadBalancerAttributes": { - "ConnectionDraining": { - "Enabled": true, - "Timeout": 300 - } - }, - "LoadBalancerName": "my-load-balancer" - }, - "output": { - "LoadBalancerAttributes": { - "ConnectionDraining": { - "Enabled": true, - "Timeout": 300 - } - }, - "LoadBalancerName": "my-load-balancer" - }, - "comments": { - "input": { - }, - "output": { - } - }, - "description": "This example enables connection draining for the specified load balancer.", - "id": "elb-modify-load-balancer-attributes-2", - "title": "To enable connection draining" - } - ], - "RegisterInstancesWithLoadBalancer": [ - { - "input": { - "Instances": [ - { - "InstanceId": "i-d6f6fae3" - } - ], - "LoadBalancerName": "my-load-balancer" - }, - "output": { - "Instances": [ - { - "InstanceId": "i-d6f6fae3" - }, - { - "InstanceId": "i-207d9717" - }, - { - "InstanceId": "i-afefb49b" - } - ] - }, - "comments": { - "input": { - }, - "output": { - } - }, - "description": "This example registers the specified instance with the specified load balancer.", - "id": "elb-register-instances-with-load-balancer-1", - "title": "To register instances with a load balancer" - } - ], - "RemoveTags": [ - { - "input": { - "LoadBalancerNames": [ - "my-load-balancer" - ], - "Tags": [ - { - "Key": "project" - } - ] - }, - "comments": { - "input": { - }, - "output": { - } - }, - "description": "This example removes the specified tag from the specified load balancer.", - "id": "elb-remove-tags-1", - "title": "To remove tags from a load balancer" - } - ], - "SetLoadBalancerListenerSSLCertificate": [ - { - "input": { - "LoadBalancerName": "my-load-balancer", - "LoadBalancerPort": 443, - "SSLCertificateId": "arn:aws:iam::123456789012:server-certificate/new-server-cert" - }, - "comments": { - "input": { - }, - "output": { - } - }, - "description": "This example replaces the existing SSL certificate for the specified HTTPS listener.", - "id": "elb-set-load-balancer-listener-ssl-certificate-1", - "title": "To update the SSL certificate for an HTTPS listener" - } - ], - "SetLoadBalancerPoliciesForBackendServer": [ - { - "input": { - "InstancePort": 80, - "LoadBalancerName": "my-load-balancer", - "PolicyNames": [ - "my-ProxyProtocol-policy" - ] - }, - "comments": { - "input": { - }, - "output": { - } - }, - "description": "This example replaces the policies that are currently associated with the specified port.", - "id": "elb-set-load-balancer-policies-for-backend-server-1", - "title": "To replace the policies associated with a port for a backend instance" - } - ], - "SetLoadBalancerPoliciesOfListener": [ - { - "input": { - "LoadBalancerName": "my-load-balancer", - "LoadBalancerPort": 80, - "PolicyNames": [ - "my-SSLNegotiation-policy" - ] - }, - "comments": { - "input": { - }, - "output": { - } - }, - "description": "This example replaces the policies that are currently associated with the specified listener.", - "id": "elb-set-load-balancer-policies-of-listener-1", - "title": "To replace the policies associated with a listener" - } - ] - } -} diff --git a/workshops/monte-carlo-on-ec2-spot-fleet/src/web/node_modules/aws-sdk/apis/elasticloadbalancing-2012-06-01.min.json b/workshops/monte-carlo-on-ec2-spot-fleet/src/web/node_modules/aws-sdk/apis/elasticloadbalancing-2012-06-01.min.json deleted file mode 100644 index 78fde781..00000000 --- a/workshops/monte-carlo-on-ec2-spot-fleet/src/web/node_modules/aws-sdk/apis/elasticloadbalancing-2012-06-01.min.json +++ /dev/null @@ -1,1002 +0,0 @@ -{ - "version": "2.0", - "metadata": { - "apiVersion": "2012-06-01", - "endpointPrefix": "elasticloadbalancing", - "protocol": "query", - "serviceFullName": "Elastic Load Balancing", - "signatureVersion": "v4", - "uid": "elasticloadbalancing-2012-06-01", - "xmlNamespace": "http://elasticloadbalancing.amazonaws.com/doc/2012-06-01/" - }, - "operations": { - "AddTags": { - "input": { - "type": "structure", - "required": [ - "LoadBalancerNames", - "Tags" - ], - "members": { - "LoadBalancerNames": { - "shape": "S2" - }, - "Tags": { - "shape": "S4" - } - } - }, - "output": { - "resultWrapper": "AddTagsResult", - "type": "structure", - "members": {} - } - }, - "ApplySecurityGroupsToLoadBalancer": { - "input": { - "type": "structure", - "required": [ - "LoadBalancerName", - "SecurityGroups" - ], - "members": { - "LoadBalancerName": {}, - "SecurityGroups": { - "shape": "Sa" - } - } - }, - "output": { - "resultWrapper": "ApplySecurityGroupsToLoadBalancerResult", - "type": "structure", - "members": { - "SecurityGroups": { - "shape": "Sa" - } - } - } - }, - "AttachLoadBalancerToSubnets": { - "input": { - "type": "structure", - "required": [ - "LoadBalancerName", - "Subnets" - ], - "members": { - "LoadBalancerName": {}, - "Subnets": { - "shape": "Se" - } - } - }, - "output": { - "resultWrapper": "AttachLoadBalancerToSubnetsResult", - "type": "structure", - "members": { - "Subnets": { - "shape": "Se" - } - } - } - }, - "ConfigureHealthCheck": { - "input": { - "type": "structure", - "required": [ - "LoadBalancerName", - "HealthCheck" - ], - "members": { - "LoadBalancerName": {}, - "HealthCheck": { - "shape": "Si" - } - } - }, - "output": { - "resultWrapper": "ConfigureHealthCheckResult", - "type": "structure", - "members": { - "HealthCheck": { - "shape": "Si" - } - } - } - }, - "CreateAppCookieStickinessPolicy": { - "input": { - "type": "structure", - "required": [ - "LoadBalancerName", - "PolicyName", - "CookieName" - ], - "members": { - "LoadBalancerName": {}, - "PolicyName": {}, - "CookieName": {} - } - }, - "output": { - "resultWrapper": "CreateAppCookieStickinessPolicyResult", - "type": "structure", - "members": {} - } - }, - "CreateLBCookieStickinessPolicy": { - "input": { - "type": "structure", - "required": [ - "LoadBalancerName", - "PolicyName" - ], - "members": { - "LoadBalancerName": {}, - "PolicyName": {}, - "CookieExpirationPeriod": { - "type": "long" - } - } - }, - "output": { - "resultWrapper": "CreateLBCookieStickinessPolicyResult", - "type": "structure", - "members": {} - } - }, - "CreateLoadBalancer": { - "input": { - "type": "structure", - "required": [ - "LoadBalancerName", - "Listeners" - ], - "members": { - "LoadBalancerName": {}, - "Listeners": { - "shape": "Sx" - }, - "AvailabilityZones": { - "shape": "S13" - }, - "Subnets": { - "shape": "Se" - }, - "SecurityGroups": { - "shape": "Sa" - }, - "Scheme": {}, - "Tags": { - "shape": "S4" - } - } - }, - "output": { - "resultWrapper": "CreateLoadBalancerResult", - "type": "structure", - "members": { - "DNSName": {} - } - } - }, - "CreateLoadBalancerListeners": { - "input": { - "type": "structure", - "required": [ - "LoadBalancerName", - "Listeners" - ], - "members": { - "LoadBalancerName": {}, - "Listeners": { - "shape": "Sx" - } - } - }, - "output": { - "resultWrapper": "CreateLoadBalancerListenersResult", - "type": "structure", - "members": {} - } - }, - "CreateLoadBalancerPolicy": { - "input": { - "type": "structure", - "required": [ - "LoadBalancerName", - "PolicyName", - "PolicyTypeName" - ], - "members": { - "LoadBalancerName": {}, - "PolicyName": {}, - "PolicyTypeName": {}, - "PolicyAttributes": { - "type": "list", - "member": { - "type": "structure", - "members": { - "AttributeName": {}, - "AttributeValue": {} - } - } - } - } - }, - "output": { - "resultWrapper": "CreateLoadBalancerPolicyResult", - "type": "structure", - "members": {} - } - }, - "DeleteLoadBalancer": { - "input": { - "type": "structure", - "required": [ - "LoadBalancerName" - ], - "members": { - "LoadBalancerName": {} - } - }, - "output": { - "resultWrapper": "DeleteLoadBalancerResult", - "type": "structure", - "members": {} - } - }, - "DeleteLoadBalancerListeners": { - "input": { - "type": "structure", - "required": [ - "LoadBalancerName", - "LoadBalancerPorts" - ], - "members": { - "LoadBalancerName": {}, - "LoadBalancerPorts": { - "type": "list", - "member": { - "type": "integer" - } - } - } - }, - "output": { - "resultWrapper": "DeleteLoadBalancerListenersResult", - "type": "structure", - "members": {} - } - }, - "DeleteLoadBalancerPolicy": { - "input": { - "type": "structure", - "required": [ - "LoadBalancerName", - "PolicyName" - ], - "members": { - "LoadBalancerName": {}, - "PolicyName": {} - } - }, - "output": { - "resultWrapper": "DeleteLoadBalancerPolicyResult", - "type": "structure", - "members": {} - } - }, - "DeregisterInstancesFromLoadBalancer": { - "input": { - "type": "structure", - "required": [ - "LoadBalancerName", - "Instances" - ], - "members": { - "LoadBalancerName": {}, - "Instances": { - "shape": "S1p" - } - } - }, - "output": { - "resultWrapper": "DeregisterInstancesFromLoadBalancerResult", - "type": "structure", - "members": { - "Instances": { - "shape": "S1p" - } - } - } - }, - "DescribeAccountLimits": { - "input": { - "type": "structure", - "members": { - "Marker": {}, - "PageSize": { - "type": "integer" - } - } - }, - "output": { - "resultWrapper": "DescribeAccountLimitsResult", - "type": "structure", - "members": { - "Limits": { - "type": "list", - "member": { - "type": "structure", - "members": { - "Name": {}, - "Max": {} - } - } - }, - "NextMarker": {} - } - } - }, - "DescribeInstanceHealth": { - "input": { - "type": "structure", - "required": [ - "LoadBalancerName" - ], - "members": { - "LoadBalancerName": {}, - "Instances": { - "shape": "S1p" - } - } - }, - "output": { - "resultWrapper": "DescribeInstanceHealthResult", - "type": "structure", - "members": { - "InstanceStates": { - "type": "list", - "member": { - "type": "structure", - "members": { - "InstanceId": {}, - "State": {}, - "ReasonCode": {}, - "Description": {} - } - } - } - } - } - }, - "DescribeLoadBalancerAttributes": { - "input": { - "type": "structure", - "required": [ - "LoadBalancerName" - ], - "members": { - "LoadBalancerName": {} - } - }, - "output": { - "resultWrapper": "DescribeLoadBalancerAttributesResult", - "type": "structure", - "members": { - "LoadBalancerAttributes": { - "shape": "S2a" - } - } - } - }, - "DescribeLoadBalancerPolicies": { - "input": { - "type": "structure", - "members": { - "LoadBalancerName": {}, - "PolicyNames": { - "shape": "S2s" - } - } - }, - "output": { - "resultWrapper": "DescribeLoadBalancerPoliciesResult", - "type": "structure", - "members": { - "PolicyDescriptions": { - "type": "list", - "member": { - "type": "structure", - "members": { - "PolicyName": {}, - "PolicyTypeName": {}, - "PolicyAttributeDescriptions": { - "type": "list", - "member": { - "type": "structure", - "members": { - "AttributeName": {}, - "AttributeValue": {} - } - } - } - } - } - } - } - } - }, - "DescribeLoadBalancerPolicyTypes": { - "input": { - "type": "structure", - "members": { - "PolicyTypeNames": { - "type": "list", - "member": {} - } - } - }, - "output": { - "resultWrapper": "DescribeLoadBalancerPolicyTypesResult", - "type": "structure", - "members": { - "PolicyTypeDescriptions": { - "type": "list", - "member": { - "type": "structure", - "members": { - "PolicyTypeName": {}, - "Description": {}, - "PolicyAttributeTypeDescriptions": { - "type": "list", - "member": { - "type": "structure", - "members": { - "AttributeName": {}, - "AttributeType": {}, - "Description": {}, - "DefaultValue": {}, - "Cardinality": {} - } - } - } - } - } - } - } - } - }, - "DescribeLoadBalancers": { - "input": { - "type": "structure", - "members": { - "LoadBalancerNames": { - "shape": "S2" - }, - "Marker": {}, - "PageSize": { - "type": "integer" - } - } - }, - "output": { - "resultWrapper": "DescribeLoadBalancersResult", - "type": "structure", - "members": { - "LoadBalancerDescriptions": { - "type": "list", - "member": { - "type": "structure", - "members": { - "LoadBalancerName": {}, - "DNSName": {}, - "CanonicalHostedZoneName": {}, - "CanonicalHostedZoneNameID": {}, - "ListenerDescriptions": { - "type": "list", - "member": { - "type": "structure", - "members": { - "Listener": { - "shape": "Sy" - }, - "PolicyNames": { - "shape": "S2s" - } - } - } - }, - "Policies": { - "type": "structure", - "members": { - "AppCookieStickinessPolicies": { - "type": "list", - "member": { - "type": "structure", - "members": { - "PolicyName": {}, - "CookieName": {} - } - } - }, - "LBCookieStickinessPolicies": { - "type": "list", - "member": { - "type": "structure", - "members": { - "PolicyName": {}, - "CookieExpirationPeriod": { - "type": "long" - } - } - } - }, - "OtherPolicies": { - "shape": "S2s" - } - } - }, - "BackendServerDescriptions": { - "type": "list", - "member": { - "type": "structure", - "members": { - "InstancePort": { - "type": "integer" - }, - "PolicyNames": { - "shape": "S2s" - } - } - } - }, - "AvailabilityZones": { - "shape": "S13" - }, - "Subnets": { - "shape": "Se" - }, - "VPCId": {}, - "Instances": { - "shape": "S1p" - }, - "HealthCheck": { - "shape": "Si" - }, - "SourceSecurityGroup": { - "type": "structure", - "members": { - "OwnerAlias": {}, - "GroupName": {} - } - }, - "SecurityGroups": { - "shape": "Sa" - }, - "CreatedTime": { - "type": "timestamp" - }, - "Scheme": {} - } - } - }, - "NextMarker": {} - } - } - }, - "DescribeTags": { - "input": { - "type": "structure", - "required": [ - "LoadBalancerNames" - ], - "members": { - "LoadBalancerNames": { - "type": "list", - "member": {} - } - } - }, - "output": { - "resultWrapper": "DescribeTagsResult", - "type": "structure", - "members": { - "TagDescriptions": { - "type": "list", - "member": { - "type": "structure", - "members": { - "LoadBalancerName": {}, - "Tags": { - "shape": "S4" - } - } - } - } - } - } - }, - "DetachLoadBalancerFromSubnets": { - "input": { - "type": "structure", - "required": [ - "LoadBalancerName", - "Subnets" - ], - "members": { - "LoadBalancerName": {}, - "Subnets": { - "shape": "Se" - } - } - }, - "output": { - "resultWrapper": "DetachLoadBalancerFromSubnetsResult", - "type": "structure", - "members": { - "Subnets": { - "shape": "Se" - } - } - } - }, - "DisableAvailabilityZonesForLoadBalancer": { - "input": { - "type": "structure", - "required": [ - "LoadBalancerName", - "AvailabilityZones" - ], - "members": { - "LoadBalancerName": {}, - "AvailabilityZones": { - "shape": "S13" - } - } - }, - "output": { - "resultWrapper": "DisableAvailabilityZonesForLoadBalancerResult", - "type": "structure", - "members": { - "AvailabilityZones": { - "shape": "S13" - } - } - } - }, - "EnableAvailabilityZonesForLoadBalancer": { - "input": { - "type": "structure", - "required": [ - "LoadBalancerName", - "AvailabilityZones" - ], - "members": { - "LoadBalancerName": {}, - "AvailabilityZones": { - "shape": "S13" - } - } - }, - "output": { - "resultWrapper": "EnableAvailabilityZonesForLoadBalancerResult", - "type": "structure", - "members": { - "AvailabilityZones": { - "shape": "S13" - } - } - } - }, - "ModifyLoadBalancerAttributes": { - "input": { - "type": "structure", - "required": [ - "LoadBalancerName", - "LoadBalancerAttributes" - ], - "members": { - "LoadBalancerName": {}, - "LoadBalancerAttributes": { - "shape": "S2a" - } - } - }, - "output": { - "resultWrapper": "ModifyLoadBalancerAttributesResult", - "type": "structure", - "members": { - "LoadBalancerName": {}, - "LoadBalancerAttributes": { - "shape": "S2a" - } - } - } - }, - "RegisterInstancesWithLoadBalancer": { - "input": { - "type": "structure", - "required": [ - "LoadBalancerName", - "Instances" - ], - "members": { - "LoadBalancerName": {}, - "Instances": { - "shape": "S1p" - } - } - }, - "output": { - "resultWrapper": "RegisterInstancesWithLoadBalancerResult", - "type": "structure", - "members": { - "Instances": { - "shape": "S1p" - } - } - } - }, - "RemoveTags": { - "input": { - "type": "structure", - "required": [ - "LoadBalancerNames", - "Tags" - ], - "members": { - "LoadBalancerNames": { - "shape": "S2" - }, - "Tags": { - "type": "list", - "member": { - "type": "structure", - "members": { - "Key": {} - } - } - } - } - }, - "output": { - "resultWrapper": "RemoveTagsResult", - "type": "structure", - "members": {} - } - }, - "SetLoadBalancerListenerSSLCertificate": { - "input": { - "type": "structure", - "required": [ - "LoadBalancerName", - "LoadBalancerPort", - "SSLCertificateId" - ], - "members": { - "LoadBalancerName": {}, - "LoadBalancerPort": { - "type": "integer" - }, - "SSLCertificateId": {} - } - }, - "output": { - "resultWrapper": "SetLoadBalancerListenerSSLCertificateResult", - "type": "structure", - "members": {} - } - }, - "SetLoadBalancerPoliciesForBackendServer": { - "input": { - "type": "structure", - "required": [ - "LoadBalancerName", - "InstancePort", - "PolicyNames" - ], - "members": { - "LoadBalancerName": {}, - "InstancePort": { - "type": "integer" - }, - "PolicyNames": { - "shape": "S2s" - } - } - }, - "output": { - "resultWrapper": "SetLoadBalancerPoliciesForBackendServerResult", - "type": "structure", - "members": {} - } - }, - "SetLoadBalancerPoliciesOfListener": { - "input": { - "type": "structure", - "required": [ - "LoadBalancerName", - "LoadBalancerPort", - "PolicyNames" - ], - "members": { - "LoadBalancerName": {}, - "LoadBalancerPort": { - "type": "integer" - }, - "PolicyNames": { - "shape": "S2s" - } - } - }, - "output": { - "resultWrapper": "SetLoadBalancerPoliciesOfListenerResult", - "type": "structure", - "members": {} - } - } - }, - "shapes": { - "S2": { - "type": "list", - "member": {} - }, - "S4": { - "type": "list", - "member": { - "type": "structure", - "required": [ - "Key" - ], - "members": { - "Key": {}, - "Value": {} - } - } - }, - "Sa": { - "type": "list", - "member": {} - }, - "Se": { - "type": "list", - "member": {} - }, - "Si": { - "type": "structure", - "required": [ - "Target", - "Interval", - "Timeout", - "UnhealthyThreshold", - "HealthyThreshold" - ], - "members": { - "Target": {}, - "Interval": { - "type": "integer" - }, - "Timeout": { - "type": "integer" - }, - "UnhealthyThreshold": { - "type": "integer" - }, - "HealthyThreshold": { - "type": "integer" - } - } - }, - "Sx": { - "type": "list", - "member": { - "shape": "Sy" - } - }, - "Sy": { - "type": "structure", - "required": [ - "Protocol", - "LoadBalancerPort", - "InstancePort" - ], - "members": { - "Protocol": {}, - "LoadBalancerPort": { - "type": "integer" - }, - "InstanceProtocol": {}, - "InstancePort": { - "type": "integer" - }, - "SSLCertificateId": {} - } - }, - "S13": { - "type": "list", - "member": {} - }, - "S1p": { - "type": "list", - "member": { - "type": "structure", - "members": { - "InstanceId": {} - } - } - }, - "S2a": { - "type": "structure", - "members": { - "CrossZoneLoadBalancing": { - "type": "structure", - "required": [ - "Enabled" - ], - "members": { - "Enabled": { - "type": "boolean" - } - } - }, - "AccessLog": { - "type": "structure", - "required": [ - "Enabled" - ], - "members": { - "Enabled": { - "type": "boolean" - }, - "S3BucketName": {}, - "EmitInterval": { - "type": "integer" - }, - "S3BucketPrefix": {} - } - }, - "ConnectionDraining": { - "type": "structure", - "required": [ - "Enabled" - ], - "members": { - "Enabled": { - "type": "boolean" - }, - "Timeout": { - "type": "integer" - } - } - }, - "ConnectionSettings": { - "type": "structure", - "required": [ - "IdleTimeout" - ], - "members": { - "IdleTimeout": { - "type": "integer" - } - } - }, - "AdditionalAttributes": { - "type": "list", - "member": { - "type": "structure", - "members": { - "Key": {}, - "Value": {} - } - } - } - } - }, - "S2s": { - "type": "list", - "member": {} - } - } -} \ No newline at end of file diff --git a/workshops/monte-carlo-on-ec2-spot-fleet/src/web/node_modules/aws-sdk/apis/elasticloadbalancing-2012-06-01.paginators.json b/workshops/monte-carlo-on-ec2-spot-fleet/src/web/node_modules/aws-sdk/apis/elasticloadbalancing-2012-06-01.paginators.json deleted file mode 100644 index 85742cce..00000000 --- a/workshops/monte-carlo-on-ec2-spot-fleet/src/web/node_modules/aws-sdk/apis/elasticloadbalancing-2012-06-01.paginators.json +++ /dev/null @@ -1,18 +0,0 @@ -{ - "pagination": { - "DescribeInstanceHealth": { - "result_key": "InstanceStates" - }, - "DescribeLoadBalancerPolicies": { - "result_key": "PolicyDescriptions" - }, - "DescribeLoadBalancerPolicyTypes": { - "result_key": "PolicyTypeDescriptions" - }, - "DescribeLoadBalancers": { - "input_token": "Marker", - "output_token": "NextMarker", - "result_key": "LoadBalancerDescriptions" - } - } -} \ No newline at end of file diff --git a/workshops/monte-carlo-on-ec2-spot-fleet/src/web/node_modules/aws-sdk/apis/elasticloadbalancing-2012-06-01.waiters2.json b/workshops/monte-carlo-on-ec2-spot-fleet/src/web/node_modules/aws-sdk/apis/elasticloadbalancing-2012-06-01.waiters2.json deleted file mode 100644 index 182e070b..00000000 --- a/workshops/monte-carlo-on-ec2-spot-fleet/src/web/node_modules/aws-sdk/apis/elasticloadbalancing-2012-06-01.waiters2.json +++ /dev/null @@ -1,54 +0,0 @@ -{ - "version":2, - "waiters":{ - "InstanceDeregistered": { - "delay": 15, - "operation": "DescribeInstanceHealth", - "maxAttempts": 40, - "acceptors": [ - { - "expected": "OutOfService", - "matcher": "pathAll", - "state": "success", - "argument": "InstanceStates[].State" - }, - { - "matcher": "error", - "expected": "InvalidInstance", - "state": "success" - } - ] - }, - "AnyInstanceInService":{ - "acceptors":[ - { - "argument":"InstanceStates[].State", - "expected":"InService", - "matcher":"pathAny", - "state":"success" - } - ], - "delay":15, - "maxAttempts":40, - "operation":"DescribeInstanceHealth" - }, - "InstanceInService":{ - "acceptors":[ - { - "argument":"InstanceStates[].State", - "expected":"InService", - "matcher":"pathAll", - "state":"success" - }, - { - "matcher": "error", - "expected": "InvalidInstance", - "state": "retry" - } - ], - "delay":15, - "maxAttempts":40, - "operation":"DescribeInstanceHealth" - } - } -} diff --git a/workshops/monte-carlo-on-ec2-spot-fleet/src/web/node_modules/aws-sdk/apis/elasticloadbalancingv2-2015-12-01.examples.json b/workshops/monte-carlo-on-ec2-spot-fleet/src/web/node_modules/aws-sdk/apis/elasticloadbalancingv2-2015-12-01.examples.json deleted file mode 100644 index 508b0991..00000000 --- a/workshops/monte-carlo-on-ec2-spot-fleet/src/web/node_modules/aws-sdk/apis/elasticloadbalancingv2-2015-12-01.examples.json +++ /dev/null @@ -1,1384 +0,0 @@ -{ - "version": "1.0", - "examples": { - "AddTags": [ - { - "input": { - "ResourceArns": [ - "arn:aws:elasticloadbalancing:us-west-2:123456789012:loadbalancer/app/my-load-balancer/50dc6c495c0c9188" - ], - "Tags": [ - { - "Key": "project", - "Value": "lima" - }, - { - "Key": "department", - "Value": "digital-media" - } - ] - }, - "comments": { - "input": { - }, - "output": { - } - }, - "description": "This example adds the specified tags to the specified load balancer.", - "id": "elbv2-add-tags-1", - "title": "To add tags to a load balancer" - } - ], - "CreateListener": [ - { - "input": { - "DefaultActions": [ - { - "TargetGroupArn": "arn:aws:elasticloadbalancing:us-west-2:123456789012:targetgroup/my-targets/73e2d6bc24d8a067", - "Type": "forward" - } - ], - "LoadBalancerArn": "arn:aws:elasticloadbalancing:us-west-2:123456789012:loadbalancer/app/my-load-balancer/50dc6c495c0c9188", - "Port": 80, - "Protocol": "HTTP" - }, - "output": { - "Listeners": [ - { - "DefaultActions": [ - { - "TargetGroupArn": "arn:aws:elasticloadbalancing:us-west-2:123456789012:targetgroup/my-targets/73e2d6bc24d8a067", - "Type": "forward" - } - ], - "ListenerArn": "arn:aws:elasticloadbalancing:us-west-2:123456789012:listener/app/my-load-balancer/50dc6c495c0c9188/f2f7dc8efc522ab2", - "LoadBalancerArn": "arn:aws:elasticloadbalancing:us-west-2:123456789012:loadbalancer/app/my-load-balancer/50dc6c495c0c9188", - "Port": 80, - "Protocol": "HTTP" - } - ] - }, - "comments": { - "input": { - }, - "output": { - } - }, - "description": "This example creates an HTTP listener for the specified load balancer that forwards requests to the specified target group.", - "id": "elbv2-create-listener-1", - "title": "To create an HTTP listener" - }, - { - "input": { - "Certificates": [ - { - "CertificateArn": "arn:aws:iam::123456789012:server-certificate/my-server-cert" - } - ], - "DefaultActions": [ - { - "TargetGroupArn": "arn:aws:elasticloadbalancing:us-west-2:123456789012:targetgroup/my-targets/73e2d6bc24d8a067", - "Type": "forward" - } - ], - "LoadBalancerArn": "arn:aws:elasticloadbalancing:us-west-2:123456789012:loadbalancer/app/my-load-balancer/50dc6c495c0c9188", - "Port": 443, - "Protocol": "HTTPS", - "SslPolicy": "ELBSecurityPolicy-2015-05" - }, - "output": { - "Listeners": [ - { - "Certificates": [ - { - "CertificateArn": "arn:aws:iam::123456789012:server-certificate/my-server-cert" - } - ], - "DefaultActions": [ - { - "TargetGroupArn": "arn:aws:elasticloadbalancing:us-west-2:123456789012:targetgroup/my-targets/73e2d6bc24d8a067", - "Type": "forward" - } - ], - "ListenerArn": "arn:aws:elasticloadbalancing:us-west-2:123456789012:listener/app/my-load-balancer/50dc6c495c0c9188/f2f7dc8efc522ab2", - "LoadBalancerArn": "arn:aws:elasticloadbalancing:us-west-2:123456789012:loadbalancer/app/my-load-balancer/50dc6c495c0c9188", - "Port": 443, - "Protocol": "HTTPS", - "SslPolicy": "ELBSecurityPolicy-2015-05" - } - ] - }, - "comments": { - "input": { - }, - "output": { - } - }, - "description": "This example creates an HTTPS listener for the specified load balancer that forwards requests to the specified target group. Note that you must specify an SSL certificate for an HTTPS listener. You can create and manage certificates using AWS Certificate Manager (ACM). Alternatively, you can create a certificate using SSL/TLS tools, get the certificate signed by a certificate authority (CA), and upload the certificate to AWS Identity and Access Management (IAM).", - "id": "elbv2-create-listener-2", - "title": "To create an HTTPS listener" - } - ], - "CreateLoadBalancer": [ - { - "input": { - "Name": "my-load-balancer", - "Subnets": [ - "subnet-b7d581c0", - "subnet-8360a9e7" - ] - }, - "output": { - "LoadBalancers": [ - { - "AvailabilityZones": [ - { - "SubnetId": "subnet-8360a9e7", - "ZoneName": "us-west-2a" - }, - { - "SubnetId": "subnet-b7d581c0", - "ZoneName": "us-west-2b" - } - ], - "CanonicalHostedZoneId": "Z2P70J7EXAMPLE", - "CreatedTime": "2016-03-25T21:26:12.920Z", - "DNSName": "my-load-balancer-424835706.us-west-2.elb.amazonaws.com", - "LoadBalancerArn": "arn:aws:elasticloadbalancing:us-west-2:123456789012:loadbalancer/app/my-load-balancer/50dc6c495c0c9188", - "LoadBalancerName": "my-load-balancer", - "Scheme": "internet-facing", - "SecurityGroups": [ - "sg-5943793c" - ], - "State": { - "Code": "provisioning" - }, - "Type": "application", - "VpcId": "vpc-3ac0fb5f" - } - ] - }, - "comments": { - "input": { - }, - "output": { - } - }, - "description": "This example creates an Internet-facing load balancer and enables the Availability Zones for the specified subnets.", - "id": "elbv2-create-load-balancer-1", - "title": "To create an Internet-facing load balancer" - }, - { - "input": { - "Name": "my-internal-load-balancer", - "Scheme": "internal", - "SecurityGroups": [ - - ], - "Subnets": [ - "subnet-b7d581c0", - "subnet-8360a9e7" - ] - }, - "output": { - "LoadBalancers": [ - { - "AvailabilityZones": [ - { - "SubnetId": "subnet-8360a9e7", - "ZoneName": "us-west-2a" - }, - { - "SubnetId": "subnet-b7d581c0", - "ZoneName": "us-west-2b" - } - ], - "CanonicalHostedZoneId": "Z2P70J7EXAMPLE", - "CreatedTime": "2016-03-25T21:29:48.850Z", - "DNSName": "internal-my-internal-load-balancer-1529930873.us-west-2.elb.amazonaws.com", - "LoadBalancerArn": "arn:aws:elasticloadbalancing:us-west-2:123456789012:loadbalancer/app/my-internal-load-balancer/5b49b8d4303115c2", - "LoadBalancerName": "my-internal-load-balancer", - "Scheme": "internal", - "SecurityGroups": [ - "sg-5943793c" - ], - "State": { - "Code": "provisioning" - }, - "Type": "application", - "VpcId": "vpc-3ac0fb5f" - } - ] - }, - "comments": { - "input": { - }, - "output": { - } - }, - "description": "This example creates an internal load balancer and enables the Availability Zones for the specified subnets.", - "id": "elbv2-create-load-balancer-2", - "title": "To create an internal load balancer" - } - ], - "CreateRule": [ - { - "input": { - "Actions": [ - { - "TargetGroupArn": "arn:aws:elasticloadbalancing:us-west-2:123456789012:targetgroup/my-targets/73e2d6bc24d8a067", - "Type": "forward" - } - ], - "Conditions": [ - { - "Field": "path-pattern", - "Values": [ - "/img/*" - ] - } - ], - "ListenerArn": "arn:aws:elasticloadbalancing:us-west-2:123456789012:listener/app/my-load-balancer/50dc6c495c0c9188/f2f7dc8efc522ab2", - "Priority": 10 - }, - "output": { - "Rules": [ - { - "Actions": [ - { - "TargetGroupArn": "arn:aws:elasticloadbalancing:us-west-2:123456789012:targetgroup/my-targets/73e2d6bc24d8a067", - "Type": "forward" - } - ], - "Conditions": [ - { - "Field": "path-pattern", - "Values": [ - "/img/*" - ] - } - ], - "IsDefault": false, - "Priority": "10", - "RuleArn": "arn:aws:elasticloadbalancing:us-west-2:123456789012:listener-rule/app/my-load-balancer/50dc6c495c0c9188/f2f7dc8efc522ab2/9683b2d02a6cabee" - } - ] - }, - "comments": { - "input": { - }, - "output": { - } - }, - "description": "This example creates a rule that forwards requests to the specified target group if the URL contains the specified pattern (for example, /img/*).", - "id": "elbv2-create-rule-1", - "title": "To create a rule" - } - ], - "CreateTargetGroup": [ - { - "input": { - "Name": "my-targets", - "Port": 80, - "Protocol": "HTTP", - "VpcId": "vpc-3ac0fb5f" - }, - "output": { - "TargetGroups": [ - { - "HealthCheckIntervalSeconds": 30, - "HealthCheckPath": "/", - "HealthCheckPort": "traffic-port", - "HealthCheckProtocol": "HTTP", - "HealthCheckTimeoutSeconds": 5, - "HealthyThresholdCount": 5, - "Matcher": { - "HttpCode": "200" - }, - "Port": 80, - "Protocol": "HTTP", - "TargetGroupArn": "arn:aws:elasticloadbalancing:us-west-2:123456789012:targetgroup/my-targets/73e2d6bc24d8a067", - "TargetGroupName": "my-targets", - "UnhealthyThresholdCount": 2, - "VpcId": "vpc-3ac0fb5f" - } - ] - }, - "comments": { - "input": { - }, - "output": { - } - }, - "description": "This example creates a target group that you can use to route traffic to targets using HTTP on port 80. This target group uses the default health check configuration.", - "id": "elbv2-create-target-group-1", - "title": "To create a target group" - } - ], - "DeleteListener": [ - { - "input": { - "ListenerArn": "arn:aws:elasticloadbalancing:ua-west-2:123456789012:listener/app/my-load-balancer/50dc6c495c0c9188/f2f7dc8efc522ab2" - }, - "comments": { - "input": { - }, - "output": { - } - }, - "description": "This example deletes the specified listener.", - "id": "elbv2-delete-listener-1", - "title": "To delete a listener" - } - ], - "DeleteLoadBalancer": [ - { - "input": { - "LoadBalancerArn": "arn:aws:elasticloadbalancing:us-west-2:123456789012:loadbalancer/app/my-load-balancer/50dc6c495c0c9188" - }, - "comments": { - "input": { - }, - "output": { - } - }, - "description": "This example deletes the specified load balancer.", - "id": "elbv2-delete-load-balancer-1", - "title": "To delete a load balancer" - } - ], - "DeleteRule": [ - { - "input": { - "RuleArn": "arn:aws:elasticloadbalancing:us-west-2:123456789012:listener-rule/app/my-load-balancer/50dc6c495c0c9188/f2f7dc8efc522ab2/1291d13826f405c3" - }, - "comments": { - "input": { - }, - "output": { - } - }, - "description": "This example deletes the specified rule.", - "id": "elbv2-delete-rule-1", - "title": "To delete a rule" - } - ], - "DeleteTargetGroup": [ - { - "input": { - "TargetGroupArn": "arn:aws:elasticloadbalancing:us-west-2:123456789012:targetgroup/my-targets/73e2d6bc24d8a067" - }, - "comments": { - "input": { - }, - "output": { - } - }, - "description": "This example deletes the specified target group.", - "id": "elbv2-delete-target-group-1", - "title": "To delete a target group" - } - ], - "DeregisterTargets": [ - { - "input": { - "TargetGroupArn": "arn:aws:elasticloadbalancing:us-west-2:123456789012:targetgroup/my-targets/73e2d6bc24d8a067", - "Targets": [ - { - "Id": "i-0f76fade" - } - ] - }, - "comments": { - "input": { - }, - "output": { - } - }, - "description": "This example deregisters the specified instance from the specified target group.", - "id": "elbv2-deregister-targets-1", - "title": "To deregister a target from a target group" - } - ], - "DescribeListeners": [ - { - "input": { - "ListenerArns": [ - "arn:aws:elasticloadbalancing:us-west-2:123456789012:listener/app/my-load-balancer/50dc6c495c0c9188/f2f7dc8efc522ab2" - ] - }, - "output": { - "Listeners": [ - { - "DefaultActions": [ - { - "TargetGroupArn": "arn:aws:elasticloadbalancing:us-west-2:123456789012:targetgroup/my-targets/73e2d6bc24d8a067", - "Type": "forward" - } - ], - "ListenerArn": "arn:aws:elasticloadbalancing:us-west-2:123456789012:listener/app/my-load-balancer/50dc6c495c0c9188/f2f7dc8efc522ab2", - "LoadBalancerArn": "arn:aws:elasticloadbalancing:us-west-2:123456789012:loadbalancer/app/my-load-balancer/50dc6c495c0c9188", - "Port": 80, - "Protocol": "HTTP" - } - ] - }, - "comments": { - "input": { - }, - "output": { - } - }, - "description": "This example describes the specified listener.", - "id": "elbv2-describe-listeners-1", - "title": "To describe a listener" - } - ], - "DescribeLoadBalancerAttributes": [ - { - "input": { - "LoadBalancerArn": "arn:aws:elasticloadbalancing:us-west-2:123456789012:loadbalancer/app/my-load-balancer/50dc6c495c0c9188" - }, - "output": { - "Attributes": [ - { - "Key": "access_logs.s3.enabled", - "Value": "false" - }, - { - "Key": "idle_timeout.timeout_seconds", - "Value": "60" - }, - { - "Key": "access_logs.s3.prefix", - "Value": "" - }, - { - "Key": "deletion_protection.enabled", - "Value": "false" - }, - { - "Key": "access_logs.s3.bucket", - "Value": "" - } - ] - }, - "comments": { - "input": { - }, - "output": { - } - }, - "description": "This example describes the attributes of the specified load balancer.", - "id": "elbv2-describe-load-balancer-attributes-1", - "title": "To describe load balancer attributes" - } - ], - "DescribeLoadBalancers": [ - { - "input": { - "LoadBalancerArns": [ - "arn:aws:elasticloadbalancing:us-west-2:123456789012:loadbalancer/app/my-load-balancer/50dc6c495c0c9188" - ] - }, - "output": { - "LoadBalancers": [ - { - "AvailabilityZones": [ - { - "SubnetId": "subnet-8360a9e7", - "ZoneName": "us-west-2a" - }, - { - "SubnetId": "subnet-b7d581c0", - "ZoneName": "us-west-2b" - } - ], - "CanonicalHostedZoneId": "Z2P70J7EXAMPLE", - "CreatedTime": "2016-03-25T21:26:12.920Z", - "DNSName": "my-load-balancer-424835706.us-west-2.elb.amazonaws.com", - "LoadBalancerArn": "arn:aws:elasticloadbalancing:us-west-2:123456789012:loadbalancer/app/my-load-balancer/50dc6c495c0c9188", - "LoadBalancerName": "my-load-balancer", - "Scheme": "internet-facing", - "SecurityGroups": [ - "sg-5943793c" - ], - "State": { - "Code": "active" - }, - "Type": "application", - "VpcId": "vpc-3ac0fb5f" - } - ] - }, - "comments": { - "input": { - }, - "output": { - } - }, - "description": "This example describes the specified load balancer.", - "id": "elbv2-describe-load-balancers-1", - "title": "To describe a load balancer" - } - ], - "DescribeRules": [ - { - "input": { - "RuleArns": [ - "arn:aws:elasticloadbalancing:us-west-2:123456789012:listener-rule/app/my-load-balancer/50dc6c495c0c9188/f2f7dc8efc522ab2/9683b2d02a6cabee" - ] - }, - "output": { - "Rules": [ - { - "Actions": [ - { - "TargetGroupArn": "arn:aws:elasticloadbalancing:us-west-2:123456789012:targetgroup/my-targets/73e2d6bc24d8a067", - "Type": "forward" - } - ], - "Conditions": [ - { - "Field": "path-pattern", - "Values": [ - "/img/*" - ] - } - ], - "IsDefault": false, - "Priority": "10", - "RuleArn": "arn:aws:elasticloadbalancing:us-west-2:123456789012:listener-rule/app/my-load-balancer/50dc6c495c0c9188/f2f7dc8efc522ab2/9683b2d02a6cabee" - } - ] - }, - "comments": { - "input": { - }, - "output": { - } - }, - "description": "This example describes the specified rule.", - "id": "elbv2-describe-rules-1", - "title": "To describe a rule" - } - ], - "DescribeSSLPolicies": [ - { - "input": { - "Names": [ - "ELBSecurityPolicy-2015-05" - ] - }, - "output": { - "SslPolicies": [ - { - "Ciphers": [ - { - "Name": "ECDHE-ECDSA-AES128-GCM-SHA256", - "Priority": 1 - }, - { - "Name": "ECDHE-RSA-AES128-GCM-SHA256", - "Priority": 2 - }, - { - "Name": "ECDHE-ECDSA-AES128-SHA256", - "Priority": 3 - }, - { - "Name": "ECDHE-RSA-AES128-SHA256", - "Priority": 4 - }, - { - "Name": "ECDHE-ECDSA-AES128-SHA", - "Priority": 5 - }, - { - "Name": "ECDHE-RSA-AES128-SHA", - "Priority": 6 - }, - { - "Name": "DHE-RSA-AES128-SHA", - "Priority": 7 - }, - { - "Name": "ECDHE-ECDSA-AES256-GCM-SHA384", - "Priority": 8 - }, - { - "Name": "ECDHE-RSA-AES256-GCM-SHA384", - "Priority": 9 - }, - { - "Name": "ECDHE-ECDSA-AES256-SHA384", - "Priority": 10 - }, - { - "Name": "ECDHE-RSA-AES256-SHA384", - "Priority": 11 - }, - { - "Name": "ECDHE-RSA-AES256-SHA", - "Priority": 12 - }, - { - "Name": "ECDHE-ECDSA-AES256-SHA", - "Priority": 13 - }, - { - "Name": "AES128-GCM-SHA256", - "Priority": 14 - }, - { - "Name": "AES128-SHA256", - "Priority": 15 - }, - { - "Name": "AES128-SHA", - "Priority": 16 - }, - { - "Name": "AES256-GCM-SHA384", - "Priority": 17 - }, - { - "Name": "AES256-SHA256", - "Priority": 18 - }, - { - "Name": "AES256-SHA", - "Priority": 19 - } - ], - "Name": "ELBSecurityPolicy-2015-05", - "SslProtocols": [ - "TLSv1", - "TLSv1.1", - "TLSv1.2" - ] - } - ] - }, - "comments": { - "input": { - }, - "output": { - } - }, - "description": "This example describes the specified policy used for SSL negotiation.", - "id": "elbv2-describe-ssl-policies-1", - "title": "To describe a policy used for SSL negotiation" - } - ], - "DescribeTags": [ - { - "input": { - "ResourceArns": [ - "arn:aws:elasticloadbalancing:us-west-2:123456789012:loadbalancer/app/my-load-balancer/50dc6c495c0c9188" - ] - }, - "output": { - "TagDescriptions": [ - { - "ResourceArn": "arn:aws:elasticloadbalancing:us-west-2:123456789012:loadbalancer/app/my-load-balancer/50dc6c495c0c9188", - "Tags": [ - { - "Key": "project", - "Value": "lima" - }, - { - "Key": "department", - "Value": "digital-media" - } - ] - } - ] - }, - "comments": { - "input": { - }, - "output": { - } - }, - "description": "This example describes the tags assigned to the specified load balancer.", - "id": "elbv2-describe-tags-1", - "title": "To describe the tags assigned to a load balancer" - } - ], - "DescribeTargetGroupAttributes": [ - { - "input": { - "TargetGroupArn": "arn:aws:elasticloadbalancing:us-west-2:123456789012:targetgroup/my-targets/73e2d6bc24d8a067" - }, - "output": { - "Attributes": [ - { - "Key": "stickiness.enabled", - "Value": "false" - }, - { - "Key": "deregistration_delay.timeout_seconds", - "Value": "300" - }, - { - "Key": "stickiness.type", - "Value": "lb_cookie" - }, - { - "Key": "stickiness.lb_cookie.duration_seconds", - "Value": "86400" - } - ] - }, - "comments": { - "input": { - }, - "output": { - } - }, - "description": "This example describes the attributes of the specified target group.", - "id": "elbv2-describe-target-group-attributes-1", - "title": "To describe target group attributes" - } - ], - "DescribeTargetGroups": [ - { - "input": { - "TargetGroupArns": [ - "arn:aws:elasticloadbalancing:us-west-2:123456789012:targetgroup/my-targets/73e2d6bc24d8a067" - ] - }, - "output": { - "TargetGroups": [ - { - "HealthCheckIntervalSeconds": 30, - "HealthCheckPath": "/", - "HealthCheckPort": "traffic-port", - "HealthCheckProtocol": "HTTP", - "HealthCheckTimeoutSeconds": 5, - "HealthyThresholdCount": 5, - "LoadBalancerArns": [ - "arn:aws:elasticloadbalancing:us-west-2:123456789012:loadbalancer/app/my-load-balancer/50dc6c495c0c9188" - ], - "Matcher": { - "HttpCode": "200" - }, - "Port": 80, - "Protocol": "HTTP", - "TargetGroupArn": "arn:aws:elasticloadbalancing:us-west-2:123456789012:targetgroup/my-targets/73e2d6bc24d8a067", - "TargetGroupName": "my-targets", - "UnhealthyThresholdCount": 2, - "VpcId": "vpc-3ac0fb5f" - } - ] - }, - "comments": { - "input": { - }, - "output": { - } - }, - "description": "This example describes the specified target group.", - "id": "elbv2-describe-target-groups-1", - "title": "To describe a target group" - } - ], - "DescribeTargetHealth": [ - { - "input": { - "TargetGroupArn": "arn:aws:elasticloadbalancing:us-west-2:123456789012:targetgroup/my-targets/73e2d6bc24d8a067" - }, - "output": { - "TargetHealthDescriptions": [ - { - "Target": { - "Id": "i-0f76fade", - "Port": 80 - }, - "TargetHealth": { - "Description": "Given target group is not configured to receive traffic from ELB", - "Reason": "Target.NotInUse", - "State": "unused" - } - }, - { - "HealthCheckPort": "80", - "Target": { - "Id": "i-0f76fade", - "Port": 80 - }, - "TargetHealth": { - "State": "healthy" - } - } - ] - }, - "comments": { - "input": { - }, - "output": { - } - }, - "description": "This example describes the health of the targets for the specified target group. One target is healthy but the other is not specified in an action, so it can't receive traffic from the load balancer.", - "id": "elbv2-describe-target-health-1", - "title": "To describe the health of the targets for a target group" - }, - { - "input": { - "TargetGroupArn": "arn:aws:elasticloadbalancing:us-west-2:123456789012:targetgroup/my-targets/73e2d6bc24d8a067", - "Targets": [ - { - "Id": "i-0f76fade", - "Port": 80 - } - ] - }, - "output": { - "TargetHealthDescriptions": [ - { - "HealthCheckPort": "80", - "Target": { - "Id": "i-0f76fade", - "Port": 80 - }, - "TargetHealth": { - "State": "healthy" - } - } - ] - }, - "comments": { - "input": { - }, - "output": { - } - }, - "description": "This example describes the health of the specified target. This target is healthy.", - "id": "elbv2-describe-target-health-2", - "title": "To describe the health of a target" - } - ], - "ModifyListener": [ - { - "input": { - "DefaultActions": [ - { - "TargetGroupArn": "arn:aws:elasticloadbalancing:us-west-2:123456789012:targetgroup/my-new-targets/2453ed029918f21f", - "Type": "forward" - } - ], - "ListenerArn": "arn:aws:elasticloadbalancing:us-west-2:123456789012:listener/app/my-load-balancer/50dc6c495c0c9188/f2f7dc8efc522ab2" - }, - "output": { - "Listeners": [ - { - "DefaultActions": [ - { - "TargetGroupArn": "arn:aws:elasticloadbalancing:us-west-2:123456789012:targetgroup/my-new-targets/2453ed029918f21f", - "Type": "forward" - } - ], - "ListenerArn": "arn:aws:elasticloadbalancing:us-west-2:123456789012:listener/app/my-load-balancer/50dc6c495c0c9188/f2f7dc8efc522ab2", - "LoadBalancerArn": "arn:aws:elasticloadbalancing:us-west-2:123456789012:loadbalancer/app/my-load-balancer/50dc6c495c0c9188", - "Port": 80, - "Protocol": "HTTP" - } - ] - }, - "comments": { - "input": { - }, - "output": { - } - }, - "description": "This example changes the default action for the specified listener.", - "id": "elbv2-modify-listener-1", - "title": "To change the default action for a listener" - }, - { - "input": { - "Certificates": [ - { - "CertificateArn": "arn:aws:iam::123456789012:server-certificate/my-new-server-cert" - } - ], - "ListenerArn": "arn:aws:elasticloadbalancing:us-west-2:123456789012:listener/app/my-load-balancer/50dc6c495c0c9188/0467ef3c8400ae65" - }, - "output": { - "Listeners": [ - { - "Certificates": [ - { - "CertificateArn": "arn:aws:iam::123456789012:server-certificate/my-new-server-cert" - } - ], - "DefaultActions": [ - { - "TargetGroupArn": "arn:aws:elasticloadbalancing:us-west-2:123456789012:targetgroup/my-targets/73e2d6bc24d8a067", - "Type": "forward" - } - ], - "ListenerArn": "arn:aws:elasticloadbalancing:us-west-2:123456789012:listener/app/my-load-balancer/50dc6c495c0c9188/0467ef3c8400ae65", - "LoadBalancerArn": "arn:aws:elasticloadbalancing:us-west-2:123456789012:loadbalancer/app/my-load-balancer/50dc6c495c0c9188", - "Port": 443, - "Protocol": "HTTPS", - "SslPolicy": "ELBSecurityPolicy-2015-05" - } - ] - }, - "comments": { - "input": { - }, - "output": { - } - }, - "description": "This example changes the server certificate for the specified HTTPS listener.", - "id": "elbv2-modify-listener-2", - "title": "To change the server certificate" - } - ], - "ModifyLoadBalancerAttributes": [ - { - "input": { - "Attributes": [ - { - "Key": "deletion_protection.enabled", - "Value": "true" - } - ], - "LoadBalancerArn": "arn:aws:elasticloadbalancing:us-west-2:123456789012:loadbalancer/app/my-load-balancer/50dc6c495c0c9188" - }, - "output": { - "Attributes": [ - { - "Key": "deletion_protection.enabled", - "Value": "true" - }, - { - "Key": "access_logs.s3.enabled", - "Value": "false" - }, - { - "Key": "idle_timeout.timeout_seconds", - "Value": "60" - }, - { - "Key": "access_logs.s3.prefix", - "Value": "" - }, - { - "Key": "access_logs.s3.bucket", - "Value": "" - } - ] - }, - "comments": { - "input": { - }, - "output": { - } - }, - "description": "This example enables deletion protection for the specified load balancer.", - "id": "elbv2-modify-load-balancer-attributes-1", - "title": "To enable deletion protection" - }, - { - "input": { - "Attributes": [ - { - "Key": "idle_timeout.timeout_seconds", - "Value": "30" - } - ], - "LoadBalancerArn": "arn:aws:elasticloadbalancing:us-west-2:123456789012:loadbalancer/app/my-load-balancer/50dc6c495c0c9188" - }, - "output": { - "Attributes": [ - { - "Key": "idle_timeout.timeout_seconds", - "Value": "30" - }, - { - "Key": "access_logs.s3.enabled", - "Value": "false" - }, - { - "Key": "access_logs.s3.prefix", - "Value": "" - }, - { - "Key": "deletion_protection.enabled", - "Value": "true" - }, - { - "Key": "access_logs.s3.bucket", - "Value": "" - } - ] - }, - "comments": { - "input": { - }, - "output": { - } - }, - "description": "This example changes the idle timeout value for the specified load balancer.", - "id": "elbv2-modify-load-balancer-attributes-2", - "title": "To change the idle timeout" - }, - { - "input": { - "Attributes": [ - { - "Key": "access_logs.s3.enabled", - "Value": "true" - }, - { - "Key": "access_logs.s3.bucket", - "Value": "my-loadbalancer-logs" - }, - { - "Key": "access_logs.s3.prefix", - "Value": "myapp" - } - ], - "LoadBalancerArn": "arn:aws:elasticloadbalancing:us-west-2:123456789012:loadbalancer/app/my-load-balancer/50dc6c495c0c9188" - }, - "output": { - "Attributes": [ - { - "Key": "access_logs.s3.enabled", - "Value": "true" - }, - { - "Key": "access_logs.s3.bucket", - "Value": "my-load-balancer-logs" - }, - { - "Key": "access_logs.s3.prefix", - "Value": "myapp" - }, - { - "Key": "idle_timeout.timeout_seconds", - "Value": "60" - }, - { - "Key": "deletion_protection.enabled", - "Value": "false" - } - ] - }, - "comments": { - "input": { - }, - "output": { - } - }, - "description": "This example enables access logs for the specified load balancer. Note that the S3 bucket must exist in the same region as the load balancer and must have a policy attached that grants access to the Elastic Load Balancing service.", - "id": "elbv2-modify-load-balancer-attributes-3", - "title": "To enable access logs" - } - ], - "ModifyRule": [ - { - "input": { - "Conditions": [ - { - "Field": "path-pattern", - "Values": [ - "/images/*" - ] - } - ], - "RuleArn": "arn:aws:elasticloadbalancing:us-west-2:123456789012:listener-rule/app/my-load-balancer/50dc6c495c0c9188/f2f7dc8efc522ab2/9683b2d02a6cabee" - }, - "output": { - "Rules": [ - { - "Actions": [ - { - "TargetGroupArn": "arn:aws:elasticloadbalancing:us-west-2:123456789012:targetgroup/my-targets/73e2d6bc24d8a067", - "Type": "forward" - } - ], - "Conditions": [ - { - "Field": "path-pattern", - "Values": [ - "/images/*" - ] - } - ], - "IsDefault": false, - "Priority": "10", - "RuleArn": "arn:aws:elasticloadbalancing:us-west-2:123456789012:listener-rule/app/my-load-balancer/50dc6c495c0c9188/f2f7dc8efc522ab2/9683b2d02a6cabee" - } - ] - }, - "comments": { - "input": { - }, - "output": { - } - }, - "description": "This example modifies the condition for the specified rule.", - "id": "elbv2-modify-rule-1", - "title": "To modify a rule" - } - ], - "ModifyTargetGroup": [ - { - "input": { - "HealthCheckPort": "443", - "HealthCheckProtocol": "HTTPS", - "TargetGroupArn": "arn:aws:elasticloadbalancing:us-west-2:123456789012:targetgroup/my-https-targets/2453ed029918f21f" - }, - "output": { - "TargetGroups": [ - { - "HealthCheckIntervalSeconds": 30, - "HealthCheckPort": "443", - "HealthCheckProtocol": "HTTPS", - "HealthCheckTimeoutSeconds": 5, - "HealthyThresholdCount": 5, - "LoadBalancerArns": [ - "arn:aws:elasticloadbalancing:us-west-2:123456789012:loadbalancer/app/my-load-balancer/50dc6c495c0c9188" - ], - "Matcher": { - "HttpCode": "200" - }, - "Port": 443, - "Protocol": "HTTPS", - "TargetGroupArn": "arn:aws:elasticloadbalancing:us-west-2:123456789012:targetgroup/my-https-targets/2453ed029918f21f", - "TargetGroupName": "my-https-targets", - "UnhealthyThresholdCount": 2, - "VpcId": "vpc-3ac0fb5f" - } - ] - }, - "comments": { - "input": { - }, - "output": { - } - }, - "description": "This example changes the configuration of the health checks used to evaluate the health of the targets for the specified target group.", - "id": "elbv2-modify-target-group-1", - "title": "To modify the health check configuration for a target group" - } - ], - "ModifyTargetGroupAttributes": [ - { - "input": { - "Attributes": [ - { - "Key": "deregistration_delay.timeout_seconds", - "Value": "600" - } - ], - "TargetGroupArn": "arn:aws:elasticloadbalancing:us-west-2:123456789012:targetgroup/my-targets/73e2d6bc24d8a067" - }, - "output": { - "Attributes": [ - { - "Key": "stickiness.enabled", - "Value": "false" - }, - { - "Key": "deregistration_delay.timeout_seconds", - "Value": "600" - }, - { - "Key": "stickiness.type", - "Value": "lb_cookie" - }, - { - "Key": "stickiness.lb_cookie.duration_seconds", - "Value": "86400" - } - ] - }, - "comments": { - "input": { - }, - "output": { - } - }, - "description": "This example sets the deregistration delay timeout to the specified value for the specified target group.", - "id": "elbv2-modify-target-group-attributes-1", - "title": "To modify the deregistration delay timeout" - } - ], - "RegisterTargets": [ - { - "input": { - "TargetGroupArn": "arn:aws:elasticloadbalancing:us-west-2:123456789012:targetgroup/my-targets/73e2d6bc24d8a067", - "Targets": [ - { - "Id": "i-80c8dd94" - }, - { - "Id": "i-ceddcd4d" - } - ] - }, - "comments": { - "input": { - }, - "output": { - } - }, - "description": "This example registers the specified instances with the specified target group.", - "id": "elbv2-register-targets-1", - "title": "To register targets with a target group" - }, - { - "input": { - "TargetGroupArn": "arn:aws:elasticloadbalancing:us-west-2:123456789012:targetgroup/my-new-targets/3bb63f11dfb0faf9", - "Targets": [ - { - "Id": "i-80c8dd94", - "Port": 80 - }, - { - "Id": "i-80c8dd94", - "Port": 766 - } - ] - }, - "comments": { - "input": { - }, - "output": { - } - }, - "description": "This example registers the specified instance with the specified target group using multiple ports. This enables you to register ECS containers on the same instance as targets in the target group.", - "id": "elbv2-register-targets-2", - "title": "To register targets with a target group using port overrides" - } - ], - "RemoveTags": [ - { - "input": { - "ResourceArns": [ - "arn:aws:elasticloadbalancing:us-west-2:123456789012:loadbalancer/app/my-load-balancer/50dc6c495c0c9188" - ], - "TagKeys": [ - "project", - "department" - ] - }, - "comments": { - "input": { - }, - "output": { - } - }, - "description": "This example removes the specified tags from the specified load balancer.", - "id": "elbv2-remove-tags-1", - "title": "To remove tags from a load balancer" - } - ], - "SetRulePriorities": [ - { - "input": { - "RulePriorities": [ - { - "Priority": 5, - "RuleArn": "arn:aws:elasticloadbalancing:us-west-2:123456789012:listener-rule/app/my-load-balancer/50dc6c495c0c9188/f2f7dc8efc522ab2/1291d13826f405c3" - } - ] - }, - "output": { - "Rules": [ - { - "Actions": [ - { - "TargetGroupArn": "arn:aws:elasticloadbalancing:us-west-2:123456789012:targetgroup/my-targets/73e2d6bc24d8a067", - "Type": "forward" - } - ], - "Conditions": [ - { - "Field": "path-pattern", - "Values": [ - "/img/*" - ] - } - ], - "IsDefault": false, - "Priority": "5", - "RuleArn": "arn:aws:elasticloadbalancing:us-west-2:123456789012:listener-rule/app/my-load-balancer/50dc6c495c0c9188/f2f7dc8efc522ab2/1291d13826f405c3" - } - ] - }, - "comments": { - "input": { - }, - "output": { - } - }, - "description": "This example sets the priority of the specified rule.", - "id": "elbv2-set-rule-priorities-1", - "title": "To set the rule priority" - } - ], - "SetSecurityGroups": [ - { - "input": { - "LoadBalancerArn": "arn:aws:elasticloadbalancing:us-west-2:123456789012:loadbalancer/app/my-load-balancer/50dc6c495c0c9188", - "SecurityGroups": [ - "sg-5943793c" - ] - }, - "output": { - "SecurityGroupIds": [ - "sg-5943793c" - ] - }, - "comments": { - "input": { - }, - "output": { - } - }, - "description": "This example associates the specified security group with the specified load balancer.", - "id": "elbv2-set-security-groups-1", - "title": "To associate a security group with a load balancer" - } - ], - "SetSubnets": [ - { - "input": { - "LoadBalancerArn": "arn:aws:elasticloadbalancing:us-west-2:123456789012:loadbalancer/app/my-load-balancer/50dc6c495c0c9188", - "Subnets": [ - "subnet-8360a9e7", - "subnet-b7d581c0" - ] - }, - "output": { - "AvailabilityZones": [ - { - "SubnetId": "subnet-8360a9e7", - "ZoneName": "us-west-2a" - }, - { - "SubnetId": "subnet-b7d581c0", - "ZoneName": "us-west-2b" - } - ] - }, - "comments": { - "input": { - }, - "output": { - } - }, - "description": "This example enables the Availability Zones for the specified subnets for the specified load balancer.", - "id": "elbv2-set-subnets-1", - "title": "To enable Availability Zones for a load balancer" - } - ] - } -} diff --git a/workshops/monte-carlo-on-ec2-spot-fleet/src/web/node_modules/aws-sdk/apis/elasticloadbalancingv2-2015-12-01.min.json b/workshops/monte-carlo-on-ec2-spot-fleet/src/web/node_modules/aws-sdk/apis/elasticloadbalancingv2-2015-12-01.min.json deleted file mode 100644 index edf67f98..00000000 --- a/workshops/monte-carlo-on-ec2-spot-fleet/src/web/node_modules/aws-sdk/apis/elasticloadbalancingv2-2015-12-01.min.json +++ /dev/null @@ -1,1179 +0,0 @@ -{ - "version": "2.0", - "metadata": { - "apiVersion": "2015-12-01", - "endpointPrefix": "elasticloadbalancing", - "protocol": "query", - "serviceAbbreviation": "Elastic Load Balancing v2", - "serviceFullName": "Elastic Load Balancing", - "signatureVersion": "v4", - "uid": "elasticloadbalancingv2-2015-12-01", - "xmlNamespace": "http://elasticloadbalancing.amazonaws.com/doc/2015-12-01/" - }, - "operations": { - "AddListenerCertificates": { - "input": { - "type": "structure", - "required": [ - "ListenerArn", - "Certificates" - ], - "members": { - "ListenerArn": {}, - "Certificates": { - "shape": "S3" - } - } - }, - "output": { - "resultWrapper": "AddListenerCertificatesResult", - "type": "structure", - "members": { - "Certificates": { - "shape": "S3" - } - } - } - }, - "AddTags": { - "input": { - "type": "structure", - "required": [ - "ResourceArns", - "Tags" - ], - "members": { - "ResourceArns": { - "shape": "S9" - }, - "Tags": { - "shape": "Sb" - } - } - }, - "output": { - "resultWrapper": "AddTagsResult", - "type": "structure", - "members": {} - } - }, - "CreateListener": { - "input": { - "type": "structure", - "required": [ - "LoadBalancerArn", - "Protocol", - "Port", - "DefaultActions" - ], - "members": { - "LoadBalancerArn": {}, - "Protocol": {}, - "Port": { - "type": "integer" - }, - "SslPolicy": {}, - "Certificates": { - "shape": "S3" - }, - "DefaultActions": { - "shape": "Sl" - } - } - }, - "output": { - "resultWrapper": "CreateListenerResult", - "type": "structure", - "members": { - "Listeners": { - "shape": "Sq" - } - } - } - }, - "CreateLoadBalancer": { - "input": { - "type": "structure", - "required": [ - "Name" - ], - "members": { - "Name": {}, - "Subnets": { - "shape": "Su" - }, - "SubnetMappings": { - "shape": "Sw" - }, - "SecurityGroups": { - "shape": "Sz" - }, - "Scheme": {}, - "Tags": { - "shape": "Sb" - }, - "Type": {}, - "IpAddressType": {} - } - }, - "output": { - "resultWrapper": "CreateLoadBalancerResult", - "type": "structure", - "members": { - "LoadBalancers": { - "shape": "S15" - } - } - } - }, - "CreateRule": { - "input": { - "type": "structure", - "required": [ - "ListenerArn", - "Conditions", - "Priority", - "Actions" - ], - "members": { - "ListenerArn": {}, - "Conditions": { - "shape": "S1l" - }, - "Priority": { - "type": "integer" - }, - "Actions": { - "shape": "Sl" - } - } - }, - "output": { - "resultWrapper": "CreateRuleResult", - "type": "structure", - "members": { - "Rules": { - "shape": "S1s" - } - } - } - }, - "CreateTargetGroup": { - "input": { - "type": "structure", - "required": [ - "Name", - "Protocol", - "Port", - "VpcId" - ], - "members": { - "Name": {}, - "Protocol": {}, - "Port": { - "type": "integer" - }, - "VpcId": {}, - "HealthCheckProtocol": {}, - "HealthCheckPort": {}, - "HealthCheckPath": {}, - "HealthCheckIntervalSeconds": { - "type": "integer" - }, - "HealthCheckTimeoutSeconds": { - "type": "integer" - }, - "HealthyThresholdCount": { - "type": "integer" - }, - "UnhealthyThresholdCount": { - "type": "integer" - }, - "Matcher": { - "shape": "S24" - }, - "TargetType": {} - } - }, - "output": { - "resultWrapper": "CreateTargetGroupResult", - "type": "structure", - "members": { - "TargetGroups": { - "shape": "S28" - } - } - } - }, - "DeleteListener": { - "input": { - "type": "structure", - "required": [ - "ListenerArn" - ], - "members": { - "ListenerArn": {} - } - }, - "output": { - "resultWrapper": "DeleteListenerResult", - "type": "structure", - "members": {} - } - }, - "DeleteLoadBalancer": { - "input": { - "type": "structure", - "required": [ - "LoadBalancerArn" - ], - "members": { - "LoadBalancerArn": {} - } - }, - "output": { - "resultWrapper": "DeleteLoadBalancerResult", - "type": "structure", - "members": {} - } - }, - "DeleteRule": { - "input": { - "type": "structure", - "required": [ - "RuleArn" - ], - "members": { - "RuleArn": {} - } - }, - "output": { - "resultWrapper": "DeleteRuleResult", - "type": "structure", - "members": {} - } - }, - "DeleteTargetGroup": { - "input": { - "type": "structure", - "required": [ - "TargetGroupArn" - ], - "members": { - "TargetGroupArn": {} - } - }, - "output": { - "resultWrapper": "DeleteTargetGroupResult", - "type": "structure", - "members": {} - } - }, - "DeregisterTargets": { - "input": { - "type": "structure", - "required": [ - "TargetGroupArn", - "Targets" - ], - "members": { - "TargetGroupArn": {}, - "Targets": { - "shape": "S2k" - } - } - }, - "output": { - "resultWrapper": "DeregisterTargetsResult", - "type": "structure", - "members": {} - } - }, - "DescribeAccountLimits": { - "input": { - "type": "structure", - "members": { - "Marker": {}, - "PageSize": { - "type": "integer" - } - } - }, - "output": { - "resultWrapper": "DescribeAccountLimitsResult", - "type": "structure", - "members": { - "Limits": { - "type": "list", - "member": { - "type": "structure", - "members": { - "Name": {}, - "Max": {} - } - } - }, - "NextMarker": {} - } - } - }, - "DescribeListenerCertificates": { - "input": { - "type": "structure", - "required": [ - "ListenerArn" - ], - "members": { - "ListenerArn": {}, - "Marker": {}, - "PageSize": { - "type": "integer" - } - } - }, - "output": { - "resultWrapper": "DescribeListenerCertificatesResult", - "type": "structure", - "members": { - "Certificates": { - "shape": "S3" - }, - "NextMarker": {} - } - } - }, - "DescribeListeners": { - "input": { - "type": "structure", - "members": { - "LoadBalancerArn": {}, - "ListenerArns": { - "type": "list", - "member": {} - }, - "Marker": {}, - "PageSize": { - "type": "integer" - } - } - }, - "output": { - "resultWrapper": "DescribeListenersResult", - "type": "structure", - "members": { - "Listeners": { - "shape": "Sq" - }, - "NextMarker": {} - } - } - }, - "DescribeLoadBalancerAttributes": { - "input": { - "type": "structure", - "required": [ - "LoadBalancerArn" - ], - "members": { - "LoadBalancerArn": {} - } - }, - "output": { - "resultWrapper": "DescribeLoadBalancerAttributesResult", - "type": "structure", - "members": { - "Attributes": { - "shape": "S33" - } - } - } - }, - "DescribeLoadBalancers": { - "input": { - "type": "structure", - "members": { - "LoadBalancerArns": { - "shape": "S2a" - }, - "Names": { - "type": "list", - "member": {} - }, - "Marker": {}, - "PageSize": { - "type": "integer" - } - } - }, - "output": { - "resultWrapper": "DescribeLoadBalancersResult", - "type": "structure", - "members": { - "LoadBalancers": { - "shape": "S15" - }, - "NextMarker": {} - } - } - }, - "DescribeRules": { - "input": { - "type": "structure", - "members": { - "ListenerArn": {}, - "RuleArns": { - "type": "list", - "member": {} - }, - "Marker": {}, - "PageSize": { - "type": "integer" - } - } - }, - "output": { - "resultWrapper": "DescribeRulesResult", - "type": "structure", - "members": { - "Rules": { - "shape": "S1s" - }, - "NextMarker": {} - } - } - }, - "DescribeSSLPolicies": { - "input": { - "type": "structure", - "members": { - "Names": { - "type": "list", - "member": {} - }, - "Marker": {}, - "PageSize": { - "type": "integer" - } - } - }, - "output": { - "resultWrapper": "DescribeSSLPoliciesResult", - "type": "structure", - "members": { - "SslPolicies": { - "type": "list", - "member": { - "type": "structure", - "members": { - "SslProtocols": { - "type": "list", - "member": {} - }, - "Ciphers": { - "type": "list", - "member": { - "type": "structure", - "members": { - "Name": {}, - "Priority": { - "type": "integer" - } - } - } - }, - "Name": {} - } - } - }, - "NextMarker": {} - } - } - }, - "DescribeTags": { - "input": { - "type": "structure", - "required": [ - "ResourceArns" - ], - "members": { - "ResourceArns": { - "shape": "S9" - } - } - }, - "output": { - "resultWrapper": "DescribeTagsResult", - "type": "structure", - "members": { - "TagDescriptions": { - "type": "list", - "member": { - "type": "structure", - "members": { - "ResourceArn": {}, - "Tags": { - "shape": "Sb" - } - } - } - } - } - } - }, - "DescribeTargetGroupAttributes": { - "input": { - "type": "structure", - "required": [ - "TargetGroupArn" - ], - "members": { - "TargetGroupArn": {} - } - }, - "output": { - "resultWrapper": "DescribeTargetGroupAttributesResult", - "type": "structure", - "members": { - "Attributes": { - "shape": "S3u" - } - } - } - }, - "DescribeTargetGroups": { - "input": { - "type": "structure", - "members": { - "LoadBalancerArn": {}, - "TargetGroupArns": { - "type": "list", - "member": {} - }, - "Names": { - "type": "list", - "member": {} - }, - "Marker": {}, - "PageSize": { - "type": "integer" - } - } - }, - "output": { - "resultWrapper": "DescribeTargetGroupsResult", - "type": "structure", - "members": { - "TargetGroups": { - "shape": "S28" - }, - "NextMarker": {} - } - } - }, - "DescribeTargetHealth": { - "input": { - "type": "structure", - "required": [ - "TargetGroupArn" - ], - "members": { - "TargetGroupArn": {}, - "Targets": { - "shape": "S2k" - } - } - }, - "output": { - "resultWrapper": "DescribeTargetHealthResult", - "type": "structure", - "members": { - "TargetHealthDescriptions": { - "type": "list", - "member": { - "type": "structure", - "members": { - "Target": { - "shape": "S2l" - }, - "HealthCheckPort": {}, - "TargetHealth": { - "type": "structure", - "members": { - "State": {}, - "Reason": {}, - "Description": {} - } - } - } - } - } - } - } - }, - "ModifyListener": { - "input": { - "type": "structure", - "required": [ - "ListenerArn" - ], - "members": { - "ListenerArn": {}, - "Port": { - "type": "integer" - }, - "Protocol": {}, - "SslPolicy": {}, - "Certificates": { - "shape": "S3" - }, - "DefaultActions": { - "shape": "Sl" - } - } - }, - "output": { - "resultWrapper": "ModifyListenerResult", - "type": "structure", - "members": { - "Listeners": { - "shape": "Sq" - } - } - } - }, - "ModifyLoadBalancerAttributes": { - "input": { - "type": "structure", - "required": [ - "LoadBalancerArn", - "Attributes" - ], - "members": { - "LoadBalancerArn": {}, - "Attributes": { - "shape": "S33" - } - } - }, - "output": { - "resultWrapper": "ModifyLoadBalancerAttributesResult", - "type": "structure", - "members": { - "Attributes": { - "shape": "S33" - } - } - } - }, - "ModifyRule": { - "input": { - "type": "structure", - "required": [ - "RuleArn" - ], - "members": { - "RuleArn": {}, - "Conditions": { - "shape": "S1l" - }, - "Actions": { - "shape": "Sl" - } - } - }, - "output": { - "resultWrapper": "ModifyRuleResult", - "type": "structure", - "members": { - "Rules": { - "shape": "S1s" - } - } - } - }, - "ModifyTargetGroup": { - "input": { - "type": "structure", - "required": [ - "TargetGroupArn" - ], - "members": { - "TargetGroupArn": {}, - "HealthCheckProtocol": {}, - "HealthCheckPort": {}, - "HealthCheckPath": {}, - "HealthCheckIntervalSeconds": { - "type": "integer" - }, - "HealthCheckTimeoutSeconds": { - "type": "integer" - }, - "HealthyThresholdCount": { - "type": "integer" - }, - "UnhealthyThresholdCount": { - "type": "integer" - }, - "Matcher": { - "shape": "S24" - } - } - }, - "output": { - "resultWrapper": "ModifyTargetGroupResult", - "type": "structure", - "members": { - "TargetGroups": { - "shape": "S28" - } - } - } - }, - "ModifyTargetGroupAttributes": { - "input": { - "type": "structure", - "required": [ - "TargetGroupArn", - "Attributes" - ], - "members": { - "TargetGroupArn": {}, - "Attributes": { - "shape": "S3u" - } - } - }, - "output": { - "resultWrapper": "ModifyTargetGroupAttributesResult", - "type": "structure", - "members": { - "Attributes": { - "shape": "S3u" - } - } - } - }, - "RegisterTargets": { - "input": { - "type": "structure", - "required": [ - "TargetGroupArn", - "Targets" - ], - "members": { - "TargetGroupArn": {}, - "Targets": { - "shape": "S2k" - } - } - }, - "output": { - "resultWrapper": "RegisterTargetsResult", - "type": "structure", - "members": {} - } - }, - "RemoveListenerCertificates": { - "input": { - "type": "structure", - "required": [ - "ListenerArn", - "Certificates" - ], - "members": { - "ListenerArn": {}, - "Certificates": { - "shape": "S3" - } - } - }, - "output": { - "resultWrapper": "RemoveListenerCertificatesResult", - "type": "structure", - "members": {} - } - }, - "RemoveTags": { - "input": { - "type": "structure", - "required": [ - "ResourceArns", - "TagKeys" - ], - "members": { - "ResourceArns": { - "shape": "S9" - }, - "TagKeys": { - "type": "list", - "member": {} - } - } - }, - "output": { - "resultWrapper": "RemoveTagsResult", - "type": "structure", - "members": {} - } - }, - "SetIpAddressType": { - "input": { - "type": "structure", - "required": [ - "LoadBalancerArn", - "IpAddressType" - ], - "members": { - "LoadBalancerArn": {}, - "IpAddressType": {} - } - }, - "output": { - "resultWrapper": "SetIpAddressTypeResult", - "type": "structure", - "members": { - "IpAddressType": {} - } - } - }, - "SetRulePriorities": { - "input": { - "type": "structure", - "required": [ - "RulePriorities" - ], - "members": { - "RulePriorities": { - "type": "list", - "member": { - "type": "structure", - "members": { - "RuleArn": {}, - "Priority": { - "type": "integer" - } - } - } - } - } - }, - "output": { - "resultWrapper": "SetRulePrioritiesResult", - "type": "structure", - "members": { - "Rules": { - "shape": "S1s" - } - } - } - }, - "SetSecurityGroups": { - "input": { - "type": "structure", - "required": [ - "LoadBalancerArn", - "SecurityGroups" - ], - "members": { - "LoadBalancerArn": {}, - "SecurityGroups": { - "shape": "Sz" - } - } - }, - "output": { - "resultWrapper": "SetSecurityGroupsResult", - "type": "structure", - "members": { - "SecurityGroupIds": { - "shape": "Sz" - } - } - } - }, - "SetSubnets": { - "input": { - "type": "structure", - "required": [ - "LoadBalancerArn", - "Subnets" - ], - "members": { - "LoadBalancerArn": {}, - "Subnets": { - "shape": "Su" - }, - "SubnetMappings": { - "shape": "Sw" - } - } - }, - "output": { - "resultWrapper": "SetSubnetsResult", - "type": "structure", - "members": { - "AvailabilityZones": { - "shape": "S1e" - } - } - } - } - }, - "shapes": { - "S3": { - "type": "list", - "member": { - "type": "structure", - "members": { - "CertificateArn": {}, - "IsDefault": { - "type": "boolean" - } - } - } - }, - "S9": { - "type": "list", - "member": {} - }, - "Sb": { - "type": "list", - "member": { - "type": "structure", - "required": [ - "Key" - ], - "members": { - "Key": {}, - "Value": {} - } - } - }, - "Sl": { - "type": "list", - "member": { - "type": "structure", - "required": [ - "Type", - "TargetGroupArn" - ], - "members": { - "Type": {}, - "TargetGroupArn": {} - } - } - }, - "Sq": { - "type": "list", - "member": { - "type": "structure", - "members": { - "ListenerArn": {}, - "LoadBalancerArn": {}, - "Port": { - "type": "integer" - }, - "Protocol": {}, - "Certificates": { - "shape": "S3" - }, - "SslPolicy": {}, - "DefaultActions": { - "shape": "Sl" - } - } - } - }, - "Su": { - "type": "list", - "member": {} - }, - "Sw": { - "type": "list", - "member": { - "type": "structure", - "members": { - "SubnetId": {}, - "AllocationId": {} - } - } - }, - "Sz": { - "type": "list", - "member": {} - }, - "S15": { - "type": "list", - "member": { - "type": "structure", - "members": { - "LoadBalancerArn": {}, - "DNSName": {}, - "CanonicalHostedZoneId": {}, - "CreatedTime": { - "type": "timestamp" - }, - "LoadBalancerName": {}, - "Scheme": {}, - "VpcId": {}, - "State": { - "type": "structure", - "members": { - "Code": {}, - "Reason": {} - } - }, - "Type": {}, - "AvailabilityZones": { - "shape": "S1e" - }, - "SecurityGroups": { - "shape": "Sz" - }, - "IpAddressType": {} - } - } - }, - "S1e": { - "type": "list", - "member": { - "type": "structure", - "members": { - "ZoneName": {}, - "SubnetId": {}, - "LoadBalancerAddresses": { - "type": "list", - "member": { - "type": "structure", - "members": { - "IpAddress": {}, - "AllocationId": {} - } - } - } - } - } - }, - "S1l": { - "type": "list", - "member": { - "type": "structure", - "members": { - "Field": {}, - "Values": { - "type": "list", - "member": {} - } - } - } - }, - "S1s": { - "type": "list", - "member": { - "type": "structure", - "members": { - "RuleArn": {}, - "Priority": {}, - "Conditions": { - "shape": "S1l" - }, - "Actions": { - "shape": "Sl" - }, - "IsDefault": { - "type": "boolean" - } - } - } - }, - "S24": { - "type": "structure", - "required": [ - "HttpCode" - ], - "members": { - "HttpCode": {} - } - }, - "S28": { - "type": "list", - "member": { - "type": "structure", - "members": { - "TargetGroupArn": {}, - "TargetGroupName": {}, - "Protocol": {}, - "Port": { - "type": "integer" - }, - "VpcId": {}, - "HealthCheckProtocol": {}, - "HealthCheckPort": {}, - "HealthCheckIntervalSeconds": { - "type": "integer" - }, - "HealthCheckTimeoutSeconds": { - "type": "integer" - }, - "HealthyThresholdCount": { - "type": "integer" - }, - "UnhealthyThresholdCount": { - "type": "integer" - }, - "HealthCheckPath": {}, - "Matcher": { - "shape": "S24" - }, - "LoadBalancerArns": { - "shape": "S2a" - }, - "TargetType": {} - } - } - }, - "S2a": { - "type": "list", - "member": {} - }, - "S2k": { - "type": "list", - "member": { - "shape": "S2l" - } - }, - "S2l": { - "type": "structure", - "required": [ - "Id" - ], - "members": { - "Id": {}, - "Port": { - "type": "integer" - }, - "AvailabilityZone": {} - } - }, - "S33": { - "type": "list", - "member": { - "type": "structure", - "members": { - "Key": {}, - "Value": {} - } - } - }, - "S3u": { - "type": "list", - "member": { - "type": "structure", - "members": { - "Key": {}, - "Value": {} - } - } - } - } -} \ No newline at end of file diff --git a/workshops/monte-carlo-on-ec2-spot-fleet/src/web/node_modules/aws-sdk/apis/elasticloadbalancingv2-2015-12-01.paginators.json b/workshops/monte-carlo-on-ec2-spot-fleet/src/web/node_modules/aws-sdk/apis/elasticloadbalancingv2-2015-12-01.paginators.json deleted file mode 100644 index 1a281f25..00000000 --- a/workshops/monte-carlo-on-ec2-spot-fleet/src/web/node_modules/aws-sdk/apis/elasticloadbalancingv2-2015-12-01.paginators.json +++ /dev/null @@ -1,19 +0,0 @@ -{ - "pagination": { - "DescribeListeners": { - "input_token": "Marker", - "output_token": "NextMarker", - "result_key": "Listeners" - }, - "DescribeLoadBalancers": { - "input_token": "Marker", - "output_token": "NextMarker", - "result_key": "LoadBalancers" - }, - "DescribeTargetGroups": { - "input_token": "Marker", - "output_token": "NextMarker", - "result_key": "TargetGroups" - } - } -} \ No newline at end of file diff --git a/workshops/monte-carlo-on-ec2-spot-fleet/src/web/node_modules/aws-sdk/apis/elasticloadbalancingv2-2015-12-01.waiters2.json b/workshops/monte-carlo-on-ec2-spot-fleet/src/web/node_modules/aws-sdk/apis/elasticloadbalancingv2-2015-12-01.waiters2.json deleted file mode 100644 index 9f3d77d8..00000000 --- a/workshops/monte-carlo-on-ec2-spot-fleet/src/web/node_modules/aws-sdk/apis/elasticloadbalancingv2-2015-12-01.waiters2.json +++ /dev/null @@ -1,100 +0,0 @@ -{ - "version": 2, - "waiters": { - "LoadBalancerExists": { - "delay": 15, - "operation": "DescribeLoadBalancers", - "maxAttempts": 40, - "acceptors": [ - { - "matcher": "status", - "expected": 200, - "state": "success" - }, - { - "matcher": "error", - "expected": "LoadBalancerNotFound", - "state": "retry" - } - ] - }, - "LoadBalancerAvailable": { - "delay": 15, - "operation": "DescribeLoadBalancers", - "maxAttempts": 40, - "acceptors": [ - { - "state": "success", - "matcher": "pathAll", - "argument": "LoadBalancers[].State.Code", - "expected": "active" - }, - { - "state": "retry", - "matcher": "pathAny", - "argument": "LoadBalancers[].State.Code", - "expected": "provisioning" - }, - { - "state": "retry", - "matcher": "error", - "expected": "LoadBalancerNotFound" - } - ] - }, - "LoadBalancersDeleted": { - "delay": 15, - "operation": "DescribeLoadBalancers", - "maxAttempts": 40, - "acceptors": [ - { - "state": "retry", - "matcher": "pathAll", - "argument": "LoadBalancers[].State.Code", - "expected": "active" - }, - { - "matcher": "error", - "expected": "LoadBalancerNotFound", - "state": "success" - } - ] - }, - "TargetInService":{ - "delay":15, - "maxAttempts":40, - "operation":"DescribeTargetHealth", - "acceptors":[ - { - "argument":"TargetHealthDescriptions[].TargetHealth.State", - "expected":"healthy", - "matcher":"pathAll", - "state":"success" - }, - { - "matcher": "error", - "expected": "InvalidInstance", - "state": "retry" - } - ] - }, - "TargetDeregistered": { - "delay": 15, - "maxAttempts": 40, - "operation": "DescribeTargetHealth", - "acceptors": [ - { - "matcher": "error", - "expected": "InvalidTarget", - "state": "success" - }, - { - "argument":"TargetHealthDescriptions[].TargetHealth.State", - "expected":"unused", - "matcher":"pathAll", - "state":"success" - } - ] - } - } -} diff --git a/workshops/monte-carlo-on-ec2-spot-fleet/src/web/node_modules/aws-sdk/apis/elasticmapreduce-2009-03-31.examples.json b/workshops/monte-carlo-on-ec2-spot-fleet/src/web/node_modules/aws-sdk/apis/elasticmapreduce-2009-03-31.examples.json deleted file mode 100644 index 0ea7e3b0..00000000 --- a/workshops/monte-carlo-on-ec2-spot-fleet/src/web/node_modules/aws-sdk/apis/elasticmapreduce-2009-03-31.examples.json +++ /dev/null @@ -1,5 +0,0 @@ -{ - "version": "1.0", - "examples": { - } -} diff --git a/workshops/monte-carlo-on-ec2-spot-fleet/src/web/node_modules/aws-sdk/apis/elasticmapreduce-2009-03-31.min.json b/workshops/monte-carlo-on-ec2-spot-fleet/src/web/node_modules/aws-sdk/apis/elasticmapreduce-2009-03-31.min.json deleted file mode 100644 index 5a45b1d6..00000000 --- a/workshops/monte-carlo-on-ec2-spot-fleet/src/web/node_modules/aws-sdk/apis/elasticmapreduce-2009-03-31.min.json +++ /dev/null @@ -1,1719 +0,0 @@ -{ - "version": "2.0", - "metadata": { - "apiVersion": "2009-03-31", - "endpointPrefix": "elasticmapreduce", - "jsonVersion": "1.1", - "protocol": "json", - "serviceAbbreviation": "Amazon EMR", - "serviceFullName": "Amazon Elastic MapReduce", - "signatureVersion": "v4", - "targetPrefix": "ElasticMapReduce", - "timestampFormat": "unixTimestamp", - "uid": "elasticmapreduce-2009-03-31" - }, - "operations": { - "AddInstanceFleet": { - "input": { - "type": "structure", - "required": [ - "ClusterId", - "InstanceFleet" - ], - "members": { - "ClusterId": {}, - "InstanceFleet": { - "shape": "S3" - } - } - }, - "output": { - "type": "structure", - "members": { - "ClusterId": {}, - "InstanceFleetId": {} - } - } - }, - "AddInstanceGroups": { - "input": { - "type": "structure", - "required": [ - "InstanceGroups", - "JobFlowId" - ], - "members": { - "InstanceGroups": { - "shape": "Sq" - }, - "JobFlowId": {} - } - }, - "output": { - "type": "structure", - "members": { - "JobFlowId": {}, - "InstanceGroupIds": { - "type": "list", - "member": {} - } - } - } - }, - "AddJobFlowSteps": { - "input": { - "type": "structure", - "required": [ - "JobFlowId", - "Steps" - ], - "members": { - "JobFlowId": {}, - "Steps": { - "shape": "S1b" - } - } - }, - "output": { - "type": "structure", - "members": { - "StepIds": { - "shape": "S1k" - } - } - } - }, - "AddTags": { - "input": { - "type": "structure", - "required": [ - "ResourceId", - "Tags" - ], - "members": { - "ResourceId": {}, - "Tags": { - "shape": "S1n" - } - } - }, - "output": { - "type": "structure", - "members": {} - } - }, - "CancelSteps": { - "input": { - "type": "structure", - "members": { - "ClusterId": {}, - "StepIds": { - "shape": "S1k" - } - } - }, - "output": { - "type": "structure", - "members": { - "CancelStepsInfoList": { - "type": "list", - "member": { - "type": "structure", - "members": { - "StepId": {}, - "Status": {}, - "Reason": {} - } - } - } - } - } - }, - "CreateSecurityConfiguration": { - "input": { - "type": "structure", - "required": [ - "Name", - "SecurityConfiguration" - ], - "members": { - "Name": {}, - "SecurityConfiguration": {} - } - }, - "output": { - "type": "structure", - "required": [ - "Name", - "CreationDateTime" - ], - "members": { - "Name": {}, - "CreationDateTime": { - "type": "timestamp" - } - } - } - }, - "DeleteSecurityConfiguration": { - "input": { - "type": "structure", - "required": [ - "Name" - ], - "members": { - "Name": {} - } - }, - "output": { - "type": "structure", - "members": {} - } - }, - "DescribeCluster": { - "input": { - "type": "structure", - "required": [ - "ClusterId" - ], - "members": { - "ClusterId": {} - } - }, - "output": { - "type": "structure", - "members": { - "Cluster": { - "type": "structure", - "members": { - "Id": {}, - "Name": {}, - "Status": { - "shape": "S25" - }, - "Ec2InstanceAttributes": { - "type": "structure", - "members": { - "Ec2KeyName": {}, - "Ec2SubnetId": {}, - "RequestedEc2SubnetIds": { - "shape": "S2b" - }, - "Ec2AvailabilityZone": {}, - "RequestedEc2AvailabilityZones": { - "shape": "S2b" - }, - "IamInstanceProfile": {}, - "EmrManagedMasterSecurityGroup": {}, - "EmrManagedSlaveSecurityGroup": {}, - "ServiceAccessSecurityGroup": {}, - "AdditionalMasterSecurityGroups": { - "shape": "S2c" - }, - "AdditionalSlaveSecurityGroups": { - "shape": "S2c" - } - } - }, - "InstanceCollectionType": {}, - "LogUri": {}, - "RequestedAmiVersion": {}, - "RunningAmiVersion": {}, - "ReleaseLabel": {}, - "AutoTerminate": { - "type": "boolean" - }, - "TerminationProtected": { - "type": "boolean" - }, - "VisibleToAllUsers": { - "type": "boolean" - }, - "Applications": { - "shape": "S2f" - }, - "Tags": { - "shape": "S1n" - }, - "ServiceRole": {}, - "NormalizedInstanceHours": { - "type": "integer" - }, - "MasterPublicDnsName": {}, - "Configurations": { - "shape": "Sh" - }, - "SecurityConfiguration": {}, - "AutoScalingRole": {}, - "ScaleDownBehavior": {}, - "CustomAmiId": {}, - "EbsRootVolumeSize": { - "type": "integer" - }, - "RepoUpgradeOnBoot": {} - } - } - } - } - }, - "DescribeJobFlows": { - "input": { - "type": "structure", - "members": { - "CreatedAfter": { - "type": "timestamp" - }, - "CreatedBefore": { - "type": "timestamp" - }, - "JobFlowIds": { - "shape": "S1i" - }, - "JobFlowStates": { - "type": "list", - "member": {} - } - } - }, - "output": { - "type": "structure", - "members": { - "JobFlows": { - "type": "list", - "member": { - "type": "structure", - "required": [ - "JobFlowId", - "Name", - "ExecutionStatusDetail", - "Instances" - ], - "members": { - "JobFlowId": {}, - "Name": {}, - "LogUri": {}, - "AmiVersion": {}, - "ExecutionStatusDetail": { - "type": "structure", - "required": [ - "State", - "CreationDateTime" - ], - "members": { - "State": {}, - "CreationDateTime": { - "type": "timestamp" - }, - "StartDateTime": { - "type": "timestamp" - }, - "ReadyDateTime": { - "type": "timestamp" - }, - "EndDateTime": { - "type": "timestamp" - }, - "LastStateChangeReason": {} - } - }, - "Instances": { - "type": "structure", - "required": [ - "MasterInstanceType", - "SlaveInstanceType", - "InstanceCount" - ], - "members": { - "MasterInstanceType": {}, - "MasterPublicDnsName": {}, - "MasterInstanceId": {}, - "SlaveInstanceType": {}, - "InstanceCount": { - "type": "integer" - }, - "InstanceGroups": { - "type": "list", - "member": { - "type": "structure", - "required": [ - "Market", - "InstanceRole", - "InstanceType", - "InstanceRequestCount", - "InstanceRunningCount", - "State", - "CreationDateTime" - ], - "members": { - "InstanceGroupId": {}, - "Name": {}, - "Market": {}, - "InstanceRole": {}, - "BidPrice": {}, - "InstanceType": {}, - "InstanceRequestCount": { - "type": "integer" - }, - "InstanceRunningCount": { - "type": "integer" - }, - "State": {}, - "LastStateChangeReason": {}, - "CreationDateTime": { - "type": "timestamp" - }, - "StartDateTime": { - "type": "timestamp" - }, - "ReadyDateTime": { - "type": "timestamp" - }, - "EndDateTime": { - "type": "timestamp" - } - } - } - }, - "NormalizedInstanceHours": { - "type": "integer" - }, - "Ec2KeyName": {}, - "Ec2SubnetId": {}, - "Placement": { - "shape": "S2u" - }, - "KeepJobFlowAliveWhenNoSteps": { - "type": "boolean" - }, - "TerminationProtected": { - "type": "boolean" - }, - "HadoopVersion": {} - } - }, - "Steps": { - "type": "list", - "member": { - "type": "structure", - "required": [ - "StepConfig", - "ExecutionStatusDetail" - ], - "members": { - "StepConfig": { - "shape": "S1c" - }, - "ExecutionStatusDetail": { - "type": "structure", - "required": [ - "State", - "CreationDateTime" - ], - "members": { - "State": {}, - "CreationDateTime": { - "type": "timestamp" - }, - "StartDateTime": { - "type": "timestamp" - }, - "EndDateTime": { - "type": "timestamp" - }, - "LastStateChangeReason": {} - } - } - } - } - }, - "BootstrapActions": { - "type": "list", - "member": { - "type": "structure", - "members": { - "BootstrapActionConfig": { - "shape": "S31" - } - } - } - }, - "SupportedProducts": { - "shape": "S33" - }, - "VisibleToAllUsers": { - "type": "boolean" - }, - "JobFlowRole": {}, - "ServiceRole": {}, - "AutoScalingRole": {}, - "ScaleDownBehavior": {} - } - } - } - } - }, - "deprecated": true - }, - "DescribeSecurityConfiguration": { - "input": { - "type": "structure", - "required": [ - "Name" - ], - "members": { - "Name": {} - } - }, - "output": { - "type": "structure", - "members": { - "Name": {}, - "SecurityConfiguration": {}, - "CreationDateTime": { - "type": "timestamp" - } - } - } - }, - "DescribeStep": { - "input": { - "type": "structure", - "required": [ - "ClusterId", - "StepId" - ], - "members": { - "ClusterId": {}, - "StepId": {} - } - }, - "output": { - "type": "structure", - "members": { - "Step": { - "type": "structure", - "members": { - "Id": {}, - "Name": {}, - "Config": { - "shape": "S39" - }, - "ActionOnFailure": {}, - "Status": { - "shape": "S3a" - } - } - } - } - } - }, - "ListBootstrapActions": { - "input": { - "type": "structure", - "required": [ - "ClusterId" - ], - "members": { - "ClusterId": {}, - "Marker": {} - } - }, - "output": { - "type": "structure", - "members": { - "BootstrapActions": { - "type": "list", - "member": { - "type": "structure", - "members": { - "Name": {}, - "ScriptPath": {}, - "Args": { - "shape": "S2c" - } - } - } - }, - "Marker": {} - } - } - }, - "ListClusters": { - "input": { - "type": "structure", - "members": { - "CreatedAfter": { - "type": "timestamp" - }, - "CreatedBefore": { - "type": "timestamp" - }, - "ClusterStates": { - "type": "list", - "member": {} - }, - "Marker": {} - } - }, - "output": { - "type": "structure", - "members": { - "Clusters": { - "type": "list", - "member": { - "type": "structure", - "members": { - "Id": {}, - "Name": {}, - "Status": { - "shape": "S25" - }, - "NormalizedInstanceHours": { - "type": "integer" - } - } - } - }, - "Marker": {} - } - } - }, - "ListInstanceFleets": { - "input": { - "type": "structure", - "required": [ - "ClusterId" - ], - "members": { - "ClusterId": {}, - "Marker": {} - } - }, - "output": { - "type": "structure", - "members": { - "InstanceFleets": { - "type": "list", - "member": { - "type": "structure", - "members": { - "Id": {}, - "Name": {}, - "Status": { - "type": "structure", - "members": { - "State": {}, - "StateChangeReason": { - "type": "structure", - "members": { - "Code": {}, - "Message": {} - } - }, - "Timeline": { - "type": "structure", - "members": { - "CreationDateTime": { - "type": "timestamp" - }, - "ReadyDateTime": { - "type": "timestamp" - }, - "EndDateTime": { - "type": "timestamp" - } - } - } - } - }, - "InstanceFleetType": {}, - "TargetOnDemandCapacity": { - "type": "integer" - }, - "TargetSpotCapacity": { - "type": "integer" - }, - "ProvisionedOnDemandCapacity": { - "type": "integer" - }, - "ProvisionedSpotCapacity": { - "type": "integer" - }, - "InstanceTypeSpecifications": { - "type": "list", - "member": { - "type": "structure", - "members": { - "InstanceType": {}, - "WeightedCapacity": { - "type": "integer" - }, - "BidPrice": {}, - "BidPriceAsPercentageOfOnDemandPrice": { - "type": "double" - }, - "Configurations": { - "shape": "Sh" - }, - "EbsBlockDevices": { - "shape": "S41" - }, - "EbsOptimized": { - "type": "boolean" - } - } - } - }, - "LaunchSpecifications": { - "shape": "Sk" - } - } - } - }, - "Marker": {} - } - } - }, - "ListInstanceGroups": { - "input": { - "type": "structure", - "required": [ - "ClusterId" - ], - "members": { - "ClusterId": {}, - "Marker": {} - } - }, - "output": { - "type": "structure", - "members": { - "InstanceGroups": { - "type": "list", - "member": { - "type": "structure", - "members": { - "Id": {}, - "Name": {}, - "Market": {}, - "InstanceGroupType": {}, - "BidPrice": {}, - "InstanceType": {}, - "RequestedInstanceCount": { - "type": "integer" - }, - "RunningInstanceCount": { - "type": "integer" - }, - "Status": { - "type": "structure", - "members": { - "State": {}, - "StateChangeReason": { - "type": "structure", - "members": { - "Code": {}, - "Message": {} - } - }, - "Timeline": { - "type": "structure", - "members": { - "CreationDateTime": { - "type": "timestamp" - }, - "ReadyDateTime": { - "type": "timestamp" - }, - "EndDateTime": { - "type": "timestamp" - } - } - } - } - }, - "Configurations": { - "shape": "Sh" - }, - "EbsBlockDevices": { - "shape": "S41" - }, - "EbsOptimized": { - "type": "boolean" - }, - "ShrinkPolicy": { - "shape": "S4d" - }, - "AutoScalingPolicy": { - "shape": "S4h" - } - } - } - }, - "Marker": {} - } - } - }, - "ListInstances": { - "input": { - "type": "structure", - "required": [ - "ClusterId" - ], - "members": { - "ClusterId": {}, - "InstanceGroupId": {}, - "InstanceGroupTypes": { - "type": "list", - "member": {} - }, - "InstanceFleetId": {}, - "InstanceFleetType": {}, - "InstanceStates": { - "type": "list", - "member": {} - }, - "Marker": {} - } - }, - "output": { - "type": "structure", - "members": { - "Instances": { - "type": "list", - "member": { - "type": "structure", - "members": { - "Id": {}, - "Ec2InstanceId": {}, - "PublicDnsName": {}, - "PublicIpAddress": {}, - "PrivateDnsName": {}, - "PrivateIpAddress": {}, - "Status": { - "type": "structure", - "members": { - "State": {}, - "StateChangeReason": { - "type": "structure", - "members": { - "Code": {}, - "Message": {} - } - }, - "Timeline": { - "type": "structure", - "members": { - "CreationDateTime": { - "type": "timestamp" - }, - "ReadyDateTime": { - "type": "timestamp" - }, - "EndDateTime": { - "type": "timestamp" - } - } - } - } - }, - "InstanceGroupId": {}, - "InstanceFleetId": {}, - "Market": {}, - "InstanceType": {}, - "EbsVolumes": { - "type": "list", - "member": { - "type": "structure", - "members": { - "Device": {}, - "VolumeId": {} - } - } - } - } - } - }, - "Marker": {} - } - } - }, - "ListSecurityConfigurations": { - "input": { - "type": "structure", - "members": { - "Marker": {} - } - }, - "output": { - "type": "structure", - "members": { - "SecurityConfigurations": { - "type": "list", - "member": { - "type": "structure", - "members": { - "Name": {}, - "CreationDateTime": { - "type": "timestamp" - } - } - } - }, - "Marker": {} - } - } - }, - "ListSteps": { - "input": { - "type": "structure", - "required": [ - "ClusterId" - ], - "members": { - "ClusterId": {}, - "StepStates": { - "type": "list", - "member": {} - }, - "StepIds": { - "shape": "S1i" - }, - "Marker": {} - } - }, - "output": { - "type": "structure", - "members": { - "Steps": { - "type": "list", - "member": { - "type": "structure", - "members": { - "Id": {}, - "Name": {}, - "Config": { - "shape": "S39" - }, - "ActionOnFailure": {}, - "Status": { - "shape": "S3a" - } - } - } - }, - "Marker": {} - } - } - }, - "ModifyInstanceFleet": { - "input": { - "type": "structure", - "required": [ - "ClusterId", - "InstanceFleet" - ], - "members": { - "ClusterId": {}, - "InstanceFleet": { - "type": "structure", - "required": [ - "InstanceFleetId" - ], - "members": { - "InstanceFleetId": {}, - "TargetOnDemandCapacity": { - "type": "integer" - }, - "TargetSpotCapacity": { - "type": "integer" - } - } - } - } - } - }, - "ModifyInstanceGroups": { - "input": { - "type": "structure", - "members": { - "ClusterId": {}, - "InstanceGroups": { - "type": "list", - "member": { - "type": "structure", - "required": [ - "InstanceGroupId" - ], - "members": { - "InstanceGroupId": {}, - "InstanceCount": { - "type": "integer" - }, - "EC2InstanceIdsToTerminate": { - "type": "list", - "member": {} - }, - "ShrinkPolicy": { - "shape": "S4d" - } - } - } - } - } - } - }, - "PutAutoScalingPolicy": { - "input": { - "type": "structure", - "required": [ - "ClusterId", - "InstanceGroupId", - "AutoScalingPolicy" - ], - "members": { - "ClusterId": {}, - "InstanceGroupId": {}, - "AutoScalingPolicy": { - "shape": "Su" - } - } - }, - "output": { - "type": "structure", - "members": { - "ClusterId": {}, - "InstanceGroupId": {}, - "AutoScalingPolicy": { - "shape": "S4h" - } - } - } - }, - "RemoveAutoScalingPolicy": { - "input": { - "type": "structure", - "required": [ - "ClusterId", - "InstanceGroupId" - ], - "members": { - "ClusterId": {}, - "InstanceGroupId": {} - } - }, - "output": { - "type": "structure", - "members": {} - } - }, - "RemoveTags": { - "input": { - "type": "structure", - "required": [ - "ResourceId", - "TagKeys" - ], - "members": { - "ResourceId": {}, - "TagKeys": { - "shape": "S2c" - } - } - }, - "output": { - "type": "structure", - "members": {} - } - }, - "RunJobFlow": { - "input": { - "type": "structure", - "required": [ - "Name", - "Instances" - ], - "members": { - "Name": {}, - "LogUri": {}, - "AdditionalInfo": {}, - "AmiVersion": {}, - "ReleaseLabel": {}, - "Instances": { - "type": "structure", - "members": { - "MasterInstanceType": {}, - "SlaveInstanceType": {}, - "InstanceCount": { - "type": "integer" - }, - "InstanceGroups": { - "shape": "Sq" - }, - "InstanceFleets": { - "type": "list", - "member": { - "shape": "S3" - } - }, - "Ec2KeyName": {}, - "Placement": { - "shape": "S2u" - }, - "KeepJobFlowAliveWhenNoSteps": { - "type": "boolean" - }, - "TerminationProtected": { - "type": "boolean" - }, - "HadoopVersion": {}, - "Ec2SubnetId": {}, - "Ec2SubnetIds": { - "shape": "S2b" - }, - "EmrManagedMasterSecurityGroup": {}, - "EmrManagedSlaveSecurityGroup": {}, - "ServiceAccessSecurityGroup": {}, - "AdditionalMasterSecurityGroups": { - "shape": "S5n" - }, - "AdditionalSlaveSecurityGroups": { - "shape": "S5n" - } - } - }, - "Steps": { - "shape": "S1b" - }, - "BootstrapActions": { - "type": "list", - "member": { - "shape": "S31" - } - }, - "SupportedProducts": { - "shape": "S33" - }, - "NewSupportedProducts": { - "type": "list", - "member": { - "type": "structure", - "members": { - "Name": {}, - "Args": { - "shape": "S1i" - } - } - } - }, - "Applications": { - "shape": "S2f" - }, - "Configurations": { - "shape": "Sh" - }, - "VisibleToAllUsers": { - "type": "boolean" - }, - "JobFlowRole": {}, - "ServiceRole": {}, - "Tags": { - "shape": "S1n" - }, - "SecurityConfiguration": {}, - "AutoScalingRole": {}, - "ScaleDownBehavior": {}, - "CustomAmiId": {}, - "EbsRootVolumeSize": { - "type": "integer" - }, - "RepoUpgradeOnBoot": {} - } - }, - "output": { - "type": "structure", - "members": { - "JobFlowId": {} - } - } - }, - "SetTerminationProtection": { - "input": { - "type": "structure", - "required": [ - "JobFlowIds", - "TerminationProtected" - ], - "members": { - "JobFlowIds": { - "shape": "S1i" - }, - "TerminationProtected": { - "type": "boolean" - } - } - } - }, - "SetVisibleToAllUsers": { - "input": { - "type": "structure", - "required": [ - "JobFlowIds", - "VisibleToAllUsers" - ], - "members": { - "JobFlowIds": { - "shape": "S1i" - }, - "VisibleToAllUsers": { - "type": "boolean" - } - } - } - }, - "TerminateJobFlows": { - "input": { - "type": "structure", - "required": [ - "JobFlowIds" - ], - "members": { - "JobFlowIds": { - "shape": "S1i" - } - } - } - } - }, - "shapes": { - "S3": { - "type": "structure", - "required": [ - "InstanceFleetType" - ], - "members": { - "Name": {}, - "InstanceFleetType": {}, - "TargetOnDemandCapacity": { - "type": "integer" - }, - "TargetSpotCapacity": { - "type": "integer" - }, - "InstanceTypeConfigs": { - "type": "list", - "member": { - "type": "structure", - "required": [ - "InstanceType" - ], - "members": { - "InstanceType": {}, - "WeightedCapacity": { - "type": "integer" - }, - "BidPrice": {}, - "BidPriceAsPercentageOfOnDemandPrice": { - "type": "double" - }, - "EbsConfiguration": { - "shape": "Sa" - }, - "Configurations": { - "shape": "Sh" - } - } - } - }, - "LaunchSpecifications": { - "shape": "Sk" - } - } - }, - "Sa": { - "type": "structure", - "members": { - "EbsBlockDeviceConfigs": { - "type": "list", - "member": { - "type": "structure", - "required": [ - "VolumeSpecification" - ], - "members": { - "VolumeSpecification": { - "shape": "Sd" - }, - "VolumesPerInstance": { - "type": "integer" - } - } - } - }, - "EbsOptimized": { - "type": "boolean" - } - } - }, - "Sd": { - "type": "structure", - "required": [ - "VolumeType", - "SizeInGB" - ], - "members": { - "VolumeType": {}, - "Iops": { - "type": "integer" - }, - "SizeInGB": { - "type": "integer" - } - } - }, - "Sh": { - "type": "list", - "member": { - "type": "structure", - "members": { - "Classification": {}, - "Configurations": { - "shape": "Sh" - }, - "Properties": { - "shape": "Sj" - } - } - } - }, - "Sj": { - "type": "map", - "key": {}, - "value": {} - }, - "Sk": { - "type": "structure", - "required": [ - "SpotSpecification" - ], - "members": { - "SpotSpecification": { - "type": "structure", - "required": [ - "TimeoutDurationMinutes", - "TimeoutAction" - ], - "members": { - "TimeoutDurationMinutes": { - "type": "integer" - }, - "TimeoutAction": {}, - "BlockDurationMinutes": { - "type": "integer" - } - } - } - } - }, - "Sq": { - "type": "list", - "member": { - "type": "structure", - "required": [ - "InstanceRole", - "InstanceType", - "InstanceCount" - ], - "members": { - "Name": {}, - "Market": {}, - "InstanceRole": {}, - "BidPrice": {}, - "InstanceType": {}, - "InstanceCount": { - "type": "integer" - }, - "Configurations": { - "shape": "Sh" - }, - "EbsConfiguration": { - "shape": "Sa" - }, - "AutoScalingPolicy": { - "shape": "Su" - } - } - } - }, - "Su": { - "type": "structure", - "required": [ - "Constraints", - "Rules" - ], - "members": { - "Constraints": { - "shape": "Sv" - }, - "Rules": { - "shape": "Sw" - } - } - }, - "Sv": { - "type": "structure", - "required": [ - "MinCapacity", - "MaxCapacity" - ], - "members": { - "MinCapacity": { - "type": "integer" - }, - "MaxCapacity": { - "type": "integer" - } - } - }, - "Sw": { - "type": "list", - "member": { - "type": "structure", - "required": [ - "Name", - "Action", - "Trigger" - ], - "members": { - "Name": {}, - "Description": {}, - "Action": { - "type": "structure", - "required": [ - "SimpleScalingPolicyConfiguration" - ], - "members": { - "Market": {}, - "SimpleScalingPolicyConfiguration": { - "type": "structure", - "required": [ - "ScalingAdjustment" - ], - "members": { - "AdjustmentType": {}, - "ScalingAdjustment": { - "type": "integer" - }, - "CoolDown": { - "type": "integer" - } - } - } - } - }, - "Trigger": { - "type": "structure", - "required": [ - "CloudWatchAlarmDefinition" - ], - "members": { - "CloudWatchAlarmDefinition": { - "type": "structure", - "required": [ - "ComparisonOperator", - "MetricName", - "Period", - "Threshold" - ], - "members": { - "ComparisonOperator": {}, - "EvaluationPeriods": { - "type": "integer" - }, - "MetricName": {}, - "Namespace": {}, - "Period": { - "type": "integer" - }, - "Statistic": {}, - "Threshold": { - "type": "double" - }, - "Unit": {}, - "Dimensions": { - "type": "list", - "member": { - "type": "structure", - "members": { - "Key": {}, - "Value": {} - } - } - } - } - } - } - } - } - } - }, - "S1b": { - "type": "list", - "member": { - "shape": "S1c" - } - }, - "S1c": { - "type": "structure", - "required": [ - "Name", - "HadoopJarStep" - ], - "members": { - "Name": {}, - "ActionOnFailure": {}, - "HadoopJarStep": { - "type": "structure", - "required": [ - "Jar" - ], - "members": { - "Properties": { - "type": "list", - "member": { - "type": "structure", - "members": { - "Key": {}, - "Value": {} - } - } - }, - "Jar": {}, - "MainClass": {}, - "Args": { - "shape": "S1i" - } - } - } - } - }, - "S1i": { - "type": "list", - "member": {} - }, - "S1k": { - "type": "list", - "member": {} - }, - "S1n": { - "type": "list", - "member": { - "type": "structure", - "members": { - "Key": {}, - "Value": {} - } - } - }, - "S25": { - "type": "structure", - "members": { - "State": {}, - "StateChangeReason": { - "type": "structure", - "members": { - "Code": {}, - "Message": {} - } - }, - "Timeline": { - "type": "structure", - "members": { - "CreationDateTime": { - "type": "timestamp" - }, - "ReadyDateTime": { - "type": "timestamp" - }, - "EndDateTime": { - "type": "timestamp" - } - } - } - } - }, - "S2b": { - "type": "list", - "member": {} - }, - "S2c": { - "type": "list", - "member": {} - }, - "S2f": { - "type": "list", - "member": { - "type": "structure", - "members": { - "Name": {}, - "Version": {}, - "Args": { - "shape": "S2c" - }, - "AdditionalInfo": { - "shape": "Sj" - } - } - } - }, - "S2u": { - "type": "structure", - "members": { - "AvailabilityZone": {}, - "AvailabilityZones": { - "shape": "S2b" - } - } - }, - "S31": { - "type": "structure", - "required": [ - "Name", - "ScriptBootstrapAction" - ], - "members": { - "Name": {}, - "ScriptBootstrapAction": { - "type": "structure", - "required": [ - "Path" - ], - "members": { - "Path": {}, - "Args": { - "shape": "S1i" - } - } - } - } - }, - "S33": { - "type": "list", - "member": {} - }, - "S39": { - "type": "structure", - "members": { - "Jar": {}, - "Properties": { - "shape": "Sj" - }, - "MainClass": {}, - "Args": { - "shape": "S2c" - } - } - }, - "S3a": { - "type": "structure", - "members": { - "State": {}, - "StateChangeReason": { - "type": "structure", - "members": { - "Code": {}, - "Message": {} - } - }, - "FailureDetails": { - "type": "structure", - "members": { - "Reason": {}, - "Message": {}, - "LogFile": {} - } - }, - "Timeline": { - "type": "structure", - "members": { - "CreationDateTime": { - "type": "timestamp" - }, - "StartDateTime": { - "type": "timestamp" - }, - "EndDateTime": { - "type": "timestamp" - } - } - } - } - }, - "S41": { - "type": "list", - "member": { - "type": "structure", - "members": { - "VolumeSpecification": { - "shape": "Sd" - }, - "Device": {} - } - } - }, - "S4d": { - "type": "structure", - "members": { - "DecommissionTimeout": { - "type": "integer" - }, - "InstanceResizePolicy": { - "type": "structure", - "members": { - "InstancesToTerminate": { - "shape": "S4f" - }, - "InstancesToProtect": { - "shape": "S4f" - }, - "InstanceTerminationTimeout": { - "type": "integer" - } - } - } - } - }, - "S4f": { - "type": "list", - "member": {} - }, - "S4h": { - "type": "structure", - "members": { - "Status": { - "type": "structure", - "members": { - "State": {}, - "StateChangeReason": { - "type": "structure", - "members": { - "Code": {}, - "Message": {} - } - } - } - }, - "Constraints": { - "shape": "Sv" - }, - "Rules": { - "shape": "Sw" - } - } - }, - "S5n": { - "type": "list", - "member": {} - } - } -} \ No newline at end of file diff --git a/workshops/monte-carlo-on-ec2-spot-fleet/src/web/node_modules/aws-sdk/apis/elasticmapreduce-2009-03-31.paginators.json b/workshops/monte-carlo-on-ec2-spot-fleet/src/web/node_modules/aws-sdk/apis/elasticmapreduce-2009-03-31.paginators.json deleted file mode 100644 index dafb1d93..00000000 --- a/workshops/monte-carlo-on-ec2-spot-fleet/src/web/node_modules/aws-sdk/apis/elasticmapreduce-2009-03-31.paginators.json +++ /dev/null @@ -1,37 +0,0 @@ -{ - "pagination": { - "DescribeJobFlows": { - "result_key": "JobFlows" - }, - "ListBootstrapActions": { - "input_token": "Marker", - "output_token": "Marker", - "result_key": "BootstrapActions" - }, - "ListClusters": { - "input_token": "Marker", - "output_token": "Marker", - "result_key": "Clusters" - }, - "ListInstanceFleets": { - "input_token": "Marker", - "output_token": "Marker", - "result_key": "InstanceFleets" - }, - "ListInstanceGroups": { - "input_token": "Marker", - "output_token": "Marker", - "result_key": "InstanceGroups" - }, - "ListInstances": { - "input_token": "Marker", - "output_token": "Marker", - "result_key": "Instances" - }, - "ListSteps": { - "input_token": "Marker", - "output_token": "Marker", - "result_key": "Steps" - } - } -} \ No newline at end of file diff --git a/workshops/monte-carlo-on-ec2-spot-fleet/src/web/node_modules/aws-sdk/apis/elasticmapreduce-2009-03-31.waiters2.json b/workshops/monte-carlo-on-ec2-spot-fleet/src/web/node_modules/aws-sdk/apis/elasticmapreduce-2009-03-31.waiters2.json deleted file mode 100644 index abba8c3c..00000000 --- a/workshops/monte-carlo-on-ec2-spot-fleet/src/web/node_modules/aws-sdk/apis/elasticmapreduce-2009-03-31.waiters2.json +++ /dev/null @@ -1,86 +0,0 @@ -{ - "version": 2, - "waiters": { - "ClusterRunning": { - "delay": 30, - "operation": "DescribeCluster", - "maxAttempts": 60, - "acceptors": [ - { - "state": "success", - "matcher": "path", - "argument": "Cluster.Status.State", - "expected": "RUNNING" - }, - { - "state": "success", - "matcher": "path", - "argument": "Cluster.Status.State", - "expected": "WAITING" - }, - { - "state": "failure", - "matcher": "path", - "argument": "Cluster.Status.State", - "expected": "TERMINATING" - }, - { - "state": "failure", - "matcher": "path", - "argument": "Cluster.Status.State", - "expected": "TERMINATED" - }, - { - "state": "failure", - "matcher": "path", - "argument": "Cluster.Status.State", - "expected": "TERMINATED_WITH_ERRORS" - } - ] - }, - "StepComplete": { - "delay": 30, - "operation": "DescribeStep", - "maxAttempts": 60, - "acceptors": [ - { - "state": "success", - "matcher": "path", - "argument": "Step.Status.State", - "expected": "COMPLETED" - }, - { - "state": "failure", - "matcher": "path", - "argument": "Step.Status.State", - "expected": "FAILED" - }, - { - "state": "failure", - "matcher": "path", - "argument": "Step.Status.State", - "expected": "CANCELLED" - } - ] - }, - "ClusterTerminated": { - "delay": 30, - "operation": "DescribeCluster", - "maxAttempts": 60, - "acceptors": [ - { - "state": "success", - "matcher": "path", - "argument": "Cluster.Status.State", - "expected": "TERMINATED" - }, - { - "state": "failure", - "matcher": "path", - "argument": "Cluster.Status.State", - "expected": "TERMINATED_WITH_ERRORS" - } - ] - } - } -} diff --git a/workshops/monte-carlo-on-ec2-spot-fleet/src/web/node_modules/aws-sdk/apis/elastictranscoder-2012-09-25.min.json b/workshops/monte-carlo-on-ec2-spot-fleet/src/web/node_modules/aws-sdk/apis/elastictranscoder-2012-09-25.min.json deleted file mode 100644 index ffa21e70..00000000 --- a/workshops/monte-carlo-on-ec2-spot-fleet/src/web/node_modules/aws-sdk/apis/elastictranscoder-2012-09-25.min.json +++ /dev/null @@ -1,1059 +0,0 @@ -{ - "version": "2.0", - "metadata": { - "uid": "elastictranscoder-2012-09-25", - "apiVersion": "2012-09-25", - "endpointPrefix": "elastictranscoder", - "protocol": "rest-json", - "serviceFullName": "Amazon Elastic Transcoder", - "signatureVersion": "v4" - }, - "operations": { - "CancelJob": { - "http": { - "method": "DELETE", - "requestUri": "/2012-09-25/jobs/{Id}", - "responseCode": 202 - }, - "input": { - "type": "structure", - "required": [ - "Id" - ], - "members": { - "Id": { - "location": "uri", - "locationName": "Id" - } - } - }, - "output": { - "type": "structure", - "members": {} - } - }, - "CreateJob": { - "http": { - "requestUri": "/2012-09-25/jobs", - "responseCode": 201 - }, - "input": { - "type": "structure", - "required": [ - "PipelineId" - ], - "members": { - "PipelineId": {}, - "Input": { - "shape": "S5" - }, - "Inputs": { - "shape": "St" - }, - "Output": { - "shape": "Su" - }, - "Outputs": { - "type": "list", - "member": { - "shape": "Su" - } - }, - "OutputKeyPrefix": {}, - "Playlists": { - "type": "list", - "member": { - "type": "structure", - "members": { - "Name": {}, - "Format": {}, - "OutputKeys": { - "shape": "S1l" - }, - "HlsContentProtection": { - "shape": "S1m" - }, - "PlayReadyDrm": { - "shape": "S1q" - } - } - } - }, - "UserMetadata": { - "shape": "S1v" - } - } - }, - "output": { - "type": "structure", - "members": { - "Job": { - "shape": "S1y" - } - } - } - }, - "CreatePipeline": { - "http": { - "requestUri": "/2012-09-25/pipelines", - "responseCode": 201 - }, - "input": { - "type": "structure", - "required": [ - "Name", - "InputBucket", - "Role" - ], - "members": { - "Name": {}, - "InputBucket": {}, - "OutputBucket": {}, - "Role": {}, - "AwsKmsKeyArn": {}, - "Notifications": { - "shape": "S2a" - }, - "ContentConfig": { - "shape": "S2c" - }, - "ThumbnailConfig": { - "shape": "S2c" - } - } - }, - "output": { - "type": "structure", - "members": { - "Pipeline": { - "shape": "S2l" - }, - "Warnings": { - "shape": "S2n" - } - } - } - }, - "CreatePreset": { - "http": { - "requestUri": "/2012-09-25/presets", - "responseCode": 201 - }, - "input": { - "type": "structure", - "required": [ - "Name", - "Container" - ], - "members": { - "Name": {}, - "Description": {}, - "Container": {}, - "Video": { - "shape": "S2r" - }, - "Audio": { - "shape": "S37" - }, - "Thumbnails": { - "shape": "S3i" - } - } - }, - "output": { - "type": "structure", - "members": { - "Preset": { - "shape": "S3m" - }, - "Warning": {} - } - } - }, - "DeletePipeline": { - "http": { - "method": "DELETE", - "requestUri": "/2012-09-25/pipelines/{Id}", - "responseCode": 202 - }, - "input": { - "type": "structure", - "required": [ - "Id" - ], - "members": { - "Id": { - "location": "uri", - "locationName": "Id" - } - } - }, - "output": { - "type": "structure", - "members": {} - } - }, - "DeletePreset": { - "http": { - "method": "DELETE", - "requestUri": "/2012-09-25/presets/{Id}", - "responseCode": 202 - }, - "input": { - "type": "structure", - "required": [ - "Id" - ], - "members": { - "Id": { - "location": "uri", - "locationName": "Id" - } - } - }, - "output": { - "type": "structure", - "members": {} - } - }, - "ListJobsByPipeline": { - "http": { - "method": "GET", - "requestUri": "/2012-09-25/jobsByPipeline/{PipelineId}" - }, - "input": { - "type": "structure", - "required": [ - "PipelineId" - ], - "members": { - "PipelineId": { - "location": "uri", - "locationName": "PipelineId" - }, - "Ascending": { - "location": "querystring", - "locationName": "Ascending" - }, - "PageToken": { - "location": "querystring", - "locationName": "PageToken" - } - } - }, - "output": { - "type": "structure", - "members": { - "Jobs": { - "shape": "S3v" - }, - "NextPageToken": {} - } - } - }, - "ListJobsByStatus": { - "http": { - "method": "GET", - "requestUri": "/2012-09-25/jobsByStatus/{Status}" - }, - "input": { - "type": "structure", - "required": [ - "Status" - ], - "members": { - "Status": { - "location": "uri", - "locationName": "Status" - }, - "Ascending": { - "location": "querystring", - "locationName": "Ascending" - }, - "PageToken": { - "location": "querystring", - "locationName": "PageToken" - } - } - }, - "output": { - "type": "structure", - "members": { - "Jobs": { - "shape": "S3v" - }, - "NextPageToken": {} - } - } - }, - "ListPipelines": { - "http": { - "method": "GET", - "requestUri": "/2012-09-25/pipelines" - }, - "input": { - "type": "structure", - "members": { - "Ascending": { - "location": "querystring", - "locationName": "Ascending" - }, - "PageToken": { - "location": "querystring", - "locationName": "PageToken" - } - } - }, - "output": { - "type": "structure", - "members": { - "Pipelines": { - "type": "list", - "member": { - "shape": "S2l" - } - }, - "NextPageToken": {} - } - } - }, - "ListPresets": { - "http": { - "method": "GET", - "requestUri": "/2012-09-25/presets" - }, - "input": { - "type": "structure", - "members": { - "Ascending": { - "location": "querystring", - "locationName": "Ascending" - }, - "PageToken": { - "location": "querystring", - "locationName": "PageToken" - } - } - }, - "output": { - "type": "structure", - "members": { - "Presets": { - "type": "list", - "member": { - "shape": "S3m" - } - }, - "NextPageToken": {} - } - } - }, - "ReadJob": { - "http": { - "method": "GET", - "requestUri": "/2012-09-25/jobs/{Id}" - }, - "input": { - "type": "structure", - "required": [ - "Id" - ], - "members": { - "Id": { - "location": "uri", - "locationName": "Id" - } - } - }, - "output": { - "type": "structure", - "members": { - "Job": { - "shape": "S1y" - } - } - } - }, - "ReadPipeline": { - "http": { - "method": "GET", - "requestUri": "/2012-09-25/pipelines/{Id}" - }, - "input": { - "type": "structure", - "required": [ - "Id" - ], - "members": { - "Id": { - "location": "uri", - "locationName": "Id" - } - } - }, - "output": { - "type": "structure", - "members": { - "Pipeline": { - "shape": "S2l" - }, - "Warnings": { - "shape": "S2n" - } - } - } - }, - "ReadPreset": { - "http": { - "method": "GET", - "requestUri": "/2012-09-25/presets/{Id}" - }, - "input": { - "type": "structure", - "required": [ - "Id" - ], - "members": { - "Id": { - "location": "uri", - "locationName": "Id" - } - } - }, - "output": { - "type": "structure", - "members": { - "Preset": { - "shape": "S3m" - } - } - } - }, - "TestRole": { - "http": { - "requestUri": "/2012-09-25/roleTests", - "responseCode": 200 - }, - "input": { - "type": "structure", - "required": [ - "Role", - "InputBucket", - "OutputBucket", - "Topics" - ], - "members": { - "Role": {}, - "InputBucket": {}, - "OutputBucket": {}, - "Topics": { - "type": "list", - "member": {} - } - }, - "deprecated": true - }, - "output": { - "type": "structure", - "members": { - "Success": {}, - "Messages": { - "type": "list", - "member": {} - } - }, - "deprecated": true - }, - "deprecated": true - }, - "UpdatePipeline": { - "http": { - "method": "PUT", - "requestUri": "/2012-09-25/pipelines/{Id}", - "responseCode": 200 - }, - "input": { - "type": "structure", - "required": [ - "Id" - ], - "members": { - "Id": { - "location": "uri", - "locationName": "Id" - }, - "Name": {}, - "InputBucket": {}, - "Role": {}, - "AwsKmsKeyArn": {}, - "Notifications": { - "shape": "S2a" - }, - "ContentConfig": { - "shape": "S2c" - }, - "ThumbnailConfig": { - "shape": "S2c" - } - } - }, - "output": { - "type": "structure", - "members": { - "Pipeline": { - "shape": "S2l" - }, - "Warnings": { - "shape": "S2n" - } - } - } - }, - "UpdatePipelineNotifications": { - "http": { - "requestUri": "/2012-09-25/pipelines/{Id}/notifications" - }, - "input": { - "type": "structure", - "required": [ - "Id", - "Notifications" - ], - "members": { - "Id": { - "location": "uri", - "locationName": "Id" - }, - "Notifications": { - "shape": "S2a" - } - } - }, - "output": { - "type": "structure", - "members": { - "Pipeline": { - "shape": "S2l" - } - } - } - }, - "UpdatePipelineStatus": { - "http": { - "requestUri": "/2012-09-25/pipelines/{Id}/status" - }, - "input": { - "type": "structure", - "required": [ - "Id", - "Status" - ], - "members": { - "Id": { - "location": "uri", - "locationName": "Id" - }, - "Status": {} - } - }, - "output": { - "type": "structure", - "members": { - "Pipeline": { - "shape": "S2l" - } - } - } - } - }, - "shapes": { - "S5": { - "type": "structure", - "members": { - "Key": {}, - "FrameRate": {}, - "Resolution": {}, - "AspectRatio": {}, - "Interlaced": {}, - "Container": {}, - "Encryption": { - "shape": "Sc" - }, - "TimeSpan": { - "shape": "Sg" - }, - "InputCaptions": { - "type": "structure", - "members": { - "MergePolicy": {}, - "CaptionSources": { - "shape": "Sk" - } - } - }, - "DetectedProperties": { - "type": "structure", - "members": { - "Width": { - "type": "integer" - }, - "Height": { - "type": "integer" - }, - "FrameRate": {}, - "FileSize": { - "type": "long" - }, - "DurationMillis": { - "type": "long" - } - } - } - } - }, - "Sc": { - "type": "structure", - "members": { - "Mode": {}, - "Key": {}, - "KeyMd5": {}, - "InitializationVector": {} - } - }, - "Sg": { - "type": "structure", - "members": { - "StartTime": {}, - "Duration": {} - } - }, - "Sk": { - "type": "list", - "member": { - "type": "structure", - "members": { - "Key": {}, - "Language": {}, - "TimeOffset": {}, - "Label": {}, - "Encryption": { - "shape": "Sc" - } - } - } - }, - "St": { - "type": "list", - "member": { - "shape": "S5" - } - }, - "Su": { - "type": "structure", - "members": { - "Key": {}, - "ThumbnailPattern": {}, - "ThumbnailEncryption": { - "shape": "Sc" - }, - "Rotate": {}, - "PresetId": {}, - "SegmentDuration": {}, - "Watermarks": { - "shape": "Sx" - }, - "AlbumArt": { - "shape": "S11" - }, - "Composition": { - "shape": "S19", - "deprecated": true - }, - "Captions": { - "shape": "S1b" - }, - "Encryption": { - "shape": "Sc" - } - } - }, - "Sx": { - "type": "list", - "member": { - "type": "structure", - "members": { - "PresetWatermarkId": {}, - "InputKey": {}, - "Encryption": { - "shape": "Sc" - } - } - } - }, - "S11": { - "type": "structure", - "members": { - "MergePolicy": {}, - "Artwork": { - "type": "list", - "member": { - "type": "structure", - "members": { - "InputKey": {}, - "MaxWidth": {}, - "MaxHeight": {}, - "SizingPolicy": {}, - "PaddingPolicy": {}, - "AlbumArtFormat": {}, - "Encryption": { - "shape": "Sc" - } - } - } - } - } - }, - "S19": { - "type": "list", - "member": { - "type": "structure", - "members": { - "TimeSpan": { - "shape": "Sg" - } - }, - "deprecated": true - }, - "deprecated": true - }, - "S1b": { - "type": "structure", - "members": { - "MergePolicy": { - "deprecated": true - }, - "CaptionSources": { - "shape": "Sk", - "deprecated": true - }, - "CaptionFormats": { - "type": "list", - "member": { - "type": "structure", - "members": { - "Format": {}, - "Pattern": {}, - "Encryption": { - "shape": "Sc" - } - } - } - } - } - }, - "S1l": { - "type": "list", - "member": {} - }, - "S1m": { - "type": "structure", - "members": { - "Method": {}, - "Key": {}, - "KeyMd5": {}, - "InitializationVector": {}, - "LicenseAcquisitionUrl": {}, - "KeyStoragePolicy": {} - } - }, - "S1q": { - "type": "structure", - "members": { - "Format": {}, - "Key": {}, - "KeyMd5": {}, - "KeyId": {}, - "InitializationVector": {}, - "LicenseAcquisitionUrl": {} - } - }, - "S1v": { - "type": "map", - "key": {}, - "value": {} - }, - "S1y": { - "type": "structure", - "members": { - "Id": {}, - "Arn": {}, - "PipelineId": {}, - "Input": { - "shape": "S5" - }, - "Inputs": { - "shape": "St" - }, - "Output": { - "shape": "S1z" - }, - "Outputs": { - "type": "list", - "member": { - "shape": "S1z" - } - }, - "OutputKeyPrefix": {}, - "Playlists": { - "type": "list", - "member": { - "type": "structure", - "members": { - "Name": {}, - "Format": {}, - "OutputKeys": { - "shape": "S1l" - }, - "HlsContentProtection": { - "shape": "S1m" - }, - "PlayReadyDrm": { - "shape": "S1q" - }, - "Status": {}, - "StatusDetail": {} - } - } - }, - "Status": {}, - "UserMetadata": { - "shape": "S1v" - }, - "Timing": { - "type": "structure", - "members": { - "SubmitTimeMillis": { - "type": "long" - }, - "StartTimeMillis": { - "type": "long" - }, - "FinishTimeMillis": { - "type": "long" - } - } - } - } - }, - "S1z": { - "type": "structure", - "members": { - "Id": {}, - "Key": {}, - "ThumbnailPattern": {}, - "ThumbnailEncryption": { - "shape": "Sc" - }, - "Rotate": {}, - "PresetId": {}, - "SegmentDuration": {}, - "Status": {}, - "StatusDetail": {}, - "Duration": { - "type": "long" - }, - "Width": { - "type": "integer" - }, - "Height": { - "type": "integer" - }, - "FrameRate": {}, - "FileSize": { - "type": "long" - }, - "DurationMillis": { - "type": "long" - }, - "Watermarks": { - "shape": "Sx" - }, - "AlbumArt": { - "shape": "S11" - }, - "Composition": { - "shape": "S19", - "deprecated": true - }, - "Captions": { - "shape": "S1b" - }, - "Encryption": { - "shape": "Sc" - }, - "AppliedColorSpaceConversion": {} - } - }, - "S2a": { - "type": "structure", - "members": { - "Progressing": {}, - "Completed": {}, - "Warning": {}, - "Error": {} - } - }, - "S2c": { - "type": "structure", - "members": { - "Bucket": {}, - "StorageClass": {}, - "Permissions": { - "type": "list", - "member": { - "type": "structure", - "members": { - "GranteeType": {}, - "Grantee": {}, - "Access": { - "type": "list", - "member": {} - } - } - } - } - } - }, - "S2l": { - "type": "structure", - "members": { - "Id": {}, - "Arn": {}, - "Name": {}, - "Status": {}, - "InputBucket": {}, - "OutputBucket": {}, - "Role": {}, - "AwsKmsKeyArn": {}, - "Notifications": { - "shape": "S2a" - }, - "ContentConfig": { - "shape": "S2c" - }, - "ThumbnailConfig": { - "shape": "S2c" - } - } - }, - "S2n": { - "type": "list", - "member": { - "type": "structure", - "members": { - "Code": {}, - "Message": {} - } - } - }, - "S2r": { - "type": "structure", - "members": { - "Codec": {}, - "CodecOptions": { - "type": "map", - "key": {}, - "value": {} - }, - "KeyframesMaxDist": {}, - "FixedGOP": {}, - "BitRate": {}, - "FrameRate": {}, - "MaxFrameRate": {}, - "Resolution": {}, - "AspectRatio": {}, - "MaxWidth": {}, - "MaxHeight": {}, - "DisplayAspectRatio": {}, - "SizingPolicy": {}, - "PaddingPolicy": {}, - "Watermarks": { - "type": "list", - "member": { - "type": "structure", - "members": { - "Id": {}, - "MaxWidth": {}, - "MaxHeight": {}, - "SizingPolicy": {}, - "HorizontalAlign": {}, - "HorizontalOffset": {}, - "VerticalAlign": {}, - "VerticalOffset": {}, - "Opacity": {}, - "Target": {} - } - } - } - } - }, - "S37": { - "type": "structure", - "members": { - "Codec": {}, - "SampleRate": {}, - "BitRate": {}, - "Channels": {}, - "AudioPackingMode": {}, - "CodecOptions": { - "type": "structure", - "members": { - "Profile": {}, - "BitDepth": {}, - "BitOrder": {}, - "Signed": {} - } - } - } - }, - "S3i": { - "type": "structure", - "members": { - "Format": {}, - "Interval": {}, - "Resolution": {}, - "AspectRatio": {}, - "MaxWidth": {}, - "MaxHeight": {}, - "SizingPolicy": {}, - "PaddingPolicy": {} - } - }, - "S3m": { - "type": "structure", - "members": { - "Id": {}, - "Arn": {}, - "Name": {}, - "Description": {}, - "Container": {}, - "Audio": { - "shape": "S37" - }, - "Video": { - "shape": "S2r" - }, - "Thumbnails": { - "shape": "S3i" - }, - "Type": {} - } - }, - "S3v": { - "type": "list", - "member": { - "shape": "S1y" - } - } - } -} \ No newline at end of file diff --git a/workshops/monte-carlo-on-ec2-spot-fleet/src/web/node_modules/aws-sdk/apis/elastictranscoder-2012-09-25.paginators.json b/workshops/monte-carlo-on-ec2-spot-fleet/src/web/node_modules/aws-sdk/apis/elastictranscoder-2012-09-25.paginators.json deleted file mode 100644 index 5a145d36..00000000 --- a/workshops/monte-carlo-on-ec2-spot-fleet/src/web/node_modules/aws-sdk/apis/elastictranscoder-2012-09-25.paginators.json +++ /dev/null @@ -1,24 +0,0 @@ -{ - "pagination": { - "ListJobsByPipeline": { - "input_token": "PageToken", - "output_token": "NextPageToken", - "result_key": "Jobs" - }, - "ListJobsByStatus": { - "input_token": "PageToken", - "output_token": "NextPageToken", - "result_key": "Jobs" - }, - "ListPipelines": { - "input_token": "PageToken", - "output_token": "NextPageToken", - "result_key": "Pipelines" - }, - "ListPresets": { - "input_token": "PageToken", - "output_token": "NextPageToken", - "result_key": "Presets" - } - } -} diff --git a/workshops/monte-carlo-on-ec2-spot-fleet/src/web/node_modules/aws-sdk/apis/elastictranscoder-2012-09-25.waiters2.json b/workshops/monte-carlo-on-ec2-spot-fleet/src/web/node_modules/aws-sdk/apis/elastictranscoder-2012-09-25.waiters2.json deleted file mode 100644 index 55c36280..00000000 --- a/workshops/monte-carlo-on-ec2-spot-fleet/src/web/node_modules/aws-sdk/apis/elastictranscoder-2012-09-25.waiters2.json +++ /dev/null @@ -1,30 +0,0 @@ -{ - "version": 2, - "waiters": { - "JobComplete": { - "delay": 30, - "operation": "ReadJob", - "maxAttempts": 120, - "acceptors": [ - { - "expected": "Complete", - "matcher": "path", - "state": "success", - "argument": "Job.Status" - }, - { - "expected": "Canceled", - "matcher": "path", - "state": "failure", - "argument": "Job.Status" - }, - { - "expected": "Error", - "matcher": "path", - "state": "failure", - "argument": "Job.Status" - } - ] - } - } -} diff --git a/workshops/monte-carlo-on-ec2-spot-fleet/src/web/node_modules/aws-sdk/apis/email-2010-12-01.examples.json b/workshops/monte-carlo-on-ec2-spot-fleet/src/web/node_modules/aws-sdk/apis/email-2010-12-01.examples.json deleted file mode 100644 index 67d43a0d..00000000 --- a/workshops/monte-carlo-on-ec2-spot-fleet/src/web/node_modules/aws-sdk/apis/email-2010-12-01.examples.json +++ /dev/null @@ -1,955 +0,0 @@ -{ - "version": "1.0", - "examples": { - "CloneReceiptRuleSet": [ - { - "input": { - "OriginalRuleSetName": "RuleSetToClone", - "RuleSetName": "RuleSetToCreate" - }, - "comments": { - "input": { - }, - "output": { - } - }, - "description": "The following example creates a receipt rule set by cloning an existing one:", - "id": "clonereceiptruleset-1469055039770", - "title": "CloneReceiptRuleSet" - } - ], - "CreateReceiptFilter": [ - { - "input": { - "Filter": { - "IpFilter": { - "Cidr": "1.2.3.4/24", - "Policy": "Allow" - }, - "Name": "MyFilter" - } - }, - "comments": { - "input": { - }, - "output": { - } - }, - "description": "The following example creates a new IP address filter:", - "id": "createreceiptfilter-1469122681253", - "title": "CreateReceiptFilter" - } - ], - "CreateReceiptRule": [ - { - "input": { - "After": "", - "Rule": { - "Actions": [ - { - "S3Action": { - "BucketName": "MyBucket", - "ObjectKeyPrefix": "email" - } - } - ], - "Enabled": true, - "Name": "MyRule", - "ScanEnabled": true, - "TlsPolicy": "Optional" - }, - "RuleSetName": "MyRuleSet" - }, - "comments": { - "input": { - }, - "output": { - } - }, - "description": "The following example creates a new receipt rule:", - "id": "createreceiptrule-1469122946515", - "title": "CreateReceiptRule" - } - ], - "CreateReceiptRuleSet": [ - { - "input": { - "RuleSetName": "MyRuleSet" - }, - "comments": { - "input": { - }, - "output": { - } - }, - "description": "The following example creates an empty receipt rule set:", - "id": "createreceiptruleset-1469058761646", - "title": "CreateReceiptRuleSet" - } - ], - "DeleteIdentity": [ - { - "input": { - "Identity": "user@example.com" - }, - "comments": { - "input": { - }, - "output": { - } - }, - "description": "The following example deletes an identity from the list of identities that have been submitted for verification with Amazon SES:", - "id": "deleteidentity-1469047858906", - "title": "DeleteIdentity" - } - ], - "DeleteIdentityPolicy": [ - { - "input": { - "Identity": "user@example.com", - "PolicyName": "MyPolicy" - }, - "comments": { - "input": { - }, - "output": { - } - }, - "description": "The following example deletes a sending authorization policy for an identity:", - "id": "deleteidentitypolicy-1469055282499", - "title": "DeleteIdentityPolicy" - } - ], - "DeleteReceiptFilter": [ - { - "input": { - "FilterName": "MyFilter" - }, - "comments": { - "input": { - }, - "output": { - } - }, - "description": "The following example deletes an IP address filter:", - "id": "deletereceiptfilter-1469055456835", - "title": "DeleteReceiptFilter" - } - ], - "DeleteReceiptRule": [ - { - "input": { - "RuleName": "MyRule", - "RuleSetName": "MyRuleSet" - }, - "comments": { - "input": { - }, - "output": { - } - }, - "description": "The following example deletes a receipt rule:", - "id": "deletereceiptrule-1469055563599", - "title": "DeleteReceiptRule" - } - ], - "DeleteReceiptRuleSet": [ - { - "input": { - "RuleSetName": "MyRuleSet" - }, - "comments": { - "input": { - }, - "output": { - } - }, - "description": "The following example deletes a receipt rule set:", - "id": "deletereceiptruleset-1469055713690", - "title": "DeleteReceiptRuleSet" - } - ], - "DeleteVerifiedEmailAddress": [ - { - "input": { - "EmailAddress": "user@example.com" - }, - "comments": { - "input": { - }, - "output": { - } - }, - "description": "The following example deletes an email address from the list of identities that have been submitted for verification with Amazon SES:", - "id": "deleteverifiedemailaddress-1469051086444", - "title": "DeleteVerifiedEmailAddress" - } - ], - "DescribeActiveReceiptRuleSet": [ - { - "input": { - }, - "output": { - "Metadata": { - "CreatedTimestamp": "2016-07-15T16:25:59.607Z", - "Name": "default-rule-set" - }, - "Rules": [ - { - "Actions": [ - { - "S3Action": { - "BucketName": "MyBucket", - "ObjectKeyPrefix": "email" - } - } - ], - "Enabled": true, - "Name": "MyRule", - "ScanEnabled": true, - "TlsPolicy": "Optional" - } - ] - }, - "comments": { - "input": { - }, - "output": { - } - }, - "description": "The following example returns the metadata and receipt rules for the receipt rule set that is currently active:", - "id": "describeactivereceiptruleset-1469121611502", - "title": "DescribeActiveReceiptRuleSet" - } - ], - "DescribeReceiptRule": [ - { - "input": { - "RuleName": "MyRule", - "RuleSetName": "MyRuleSet" - }, - "output": { - "Rule": { - "Actions": [ - { - "S3Action": { - "BucketName": "MyBucket", - "ObjectKeyPrefix": "email" - } - } - ], - "Enabled": true, - "Name": "MyRule", - "ScanEnabled": true, - "TlsPolicy": "Optional" - } - }, - "comments": { - "input": { - }, - "output": { - } - }, - "description": "The following example returns the details of a receipt rule:", - "id": "describereceiptrule-1469055813118", - "title": "DescribeReceiptRule" - } - ], - "DescribeReceiptRuleSet": [ - { - "input": { - "RuleSetName": "MyRuleSet" - }, - "output": { - "Metadata": { - "CreatedTimestamp": "2016-07-15T16:25:59.607Z", - "Name": "MyRuleSet" - }, - "Rules": [ - { - "Actions": [ - { - "S3Action": { - "BucketName": "MyBucket", - "ObjectKeyPrefix": "email" - } - } - ], - "Enabled": true, - "Name": "MyRule", - "ScanEnabled": true, - "TlsPolicy": "Optional" - } - ] - }, - "comments": { - "input": { - }, - "output": { - } - }, - "description": "The following example returns the metadata and receipt rules of a receipt rule set:", - "id": "describereceiptruleset-1469121240385", - "title": "DescribeReceiptRuleSet" - } - ], - "GetIdentityDkimAttributes": [ - { - "input": { - "Identities": [ - "example.com", - "user@example.com" - ] - }, - "output": { - "DkimAttributes": { - "example.com": { - "DkimEnabled": true, - "DkimTokens": [ - "EXAMPLEjcs5xoyqytjsotsijas7236gr", - "EXAMPLEjr76cvoc6mysspnioorxsn6ep", - "EXAMPLEkbmkqkhlm2lyz77ppkulerm4k" - ], - "DkimVerificationStatus": "Success" - }, - "user@example.com": { - "DkimEnabled": false, - "DkimVerificationStatus": "NotStarted" - } - } - }, - "comments": { - "input": { - }, - "output": { - } - }, - "description": "The following example retrieves the Amazon SES Easy DKIM attributes for a list of identities:", - "id": "getidentitydkimattributes-1469050695628", - "title": "GetIdentityDkimAttributes" - } - ], - "GetIdentityMailFromDomainAttributes": [ - { - "input": { - "Identities": [ - "example.com" - ] - }, - "output": { - "MailFromDomainAttributes": { - "example.com": { - "BehaviorOnMXFailure": "UseDefaultValue", - "MailFromDomain": "bounces.example.com", - "MailFromDomainStatus": "Success" - } - } - }, - "comments": { - "input": { - }, - "output": { - } - }, - "description": "The following example returns the custom MAIL FROM attributes for an identity:", - "id": "getidentitymailfromdomainattributes-1469123114860", - "title": "GetIdentityMailFromDomainAttributes" - } - ], - "GetIdentityNotificationAttributes": [ - { - "input": { - "Identities": [ - "example.com" - ] - }, - "output": { - "NotificationAttributes": { - "example.com": { - "BounceTopic": "arn:aws:sns:us-east-1:EXAMPLE65304:ExampleTopic", - "ComplaintTopic": "arn:aws:sns:us-east-1:EXAMPLE65304:ExampleTopic", - "DeliveryTopic": "arn:aws:sns:us-east-1:EXAMPLE65304:ExampleTopic", - "ForwardingEnabled": true, - "HeadersInBounceNotificationsEnabled": false, - "HeadersInComplaintNotificationsEnabled": false, - "HeadersInDeliveryNotificationsEnabled": false - } - } - }, - "comments": { - "input": { - }, - "output": { - } - }, - "description": "The following example returns the notification attributes for an identity:", - "id": "getidentitynotificationattributes-1469123466947", - "title": "GetIdentityNotificationAttributes" - } - ], - "GetIdentityPolicies": [ - { - "input": { - "Identity": "example.com", - "PolicyNames": [ - "MyPolicy" - ] - }, - "output": { - "Policies": { - "MyPolicy": "{\"Version\":\"2008-10-17\",\"Statement\":[{\"Sid\":\"stmt1469123904194\",\"Effect\":\"Allow\",\"Principal\":{\"AWS\":\"arn:aws:iam::123456789012:root\"},\"Action\":[\"ses:SendEmail\",\"ses:SendRawEmail\"],\"Resource\":\"arn:aws:ses:us-east-1:EXAMPLE65304:identity/example.com\"}]}" - } - }, - "comments": { - "input": { - }, - "output": { - } - }, - "description": "The following example returns a sending authorization policy for an identity:", - "id": "getidentitypolicies-1469123949351", - "title": "GetIdentityPolicies" - } - ], - "GetIdentityVerificationAttributes": [ - { - "input": { - "Identities": [ - "example.com" - ] - }, - "output": { - "VerificationAttributes": { - "example.com": { - "VerificationStatus": "Success", - "VerificationToken": "EXAMPLE3VYb9EDI2nTOQRi/Tf6MI/6bD6THIGiP1MVY=" - } - } - }, - "comments": { - "input": { - }, - "output": { - } - }, - "description": "The following example returns the verification status and the verification token for a domain identity:", - "id": "getidentityverificationattributes-1469124205897", - "title": "GetIdentityVerificationAttributes" - } - ], - "GetSendQuota": [ - { - "output": { - "Max24HourSend": 200, - "MaxSendRate": 1, - "SentLast24Hours": 1 - }, - "comments": { - "input": { - }, - "output": { - } - }, - "description": "The following example returns the Amazon SES sending limits for an AWS account:", - "id": "getsendquota-1469047324508", - "title": "GetSendQuota" - } - ], - "GetSendStatistics": [ - { - "output": { - "SendDataPoints": [ - { - "Bounces": 0, - "Complaints": 0, - "DeliveryAttempts": 5, - "Rejects": 0, - "Timestamp": "2016-07-13T22:43:00Z" - }, - { - "Bounces": 0, - "Complaints": 0, - "DeliveryAttempts": 3, - "Rejects": 0, - "Timestamp": "2016-07-13T23:13:00Z" - }, - { - "Bounces": 0, - "Complaints": 0, - "DeliveryAttempts": 1, - "Rejects": 0, - "Timestamp": "2016-07-13T21:13:00Z" - } - ] - }, - "comments": { - "input": { - }, - "output": { - } - }, - "description": "The following example returns Amazon SES sending statistics:", - "id": "getsendstatistics-1469047741329", - "title": "GetSendStatistics" - } - ], - "ListIdentities": [ - { - "input": { - "IdentityType": "EmailAddress", - "MaxItems": 123, - "NextToken": "" - }, - "output": { - "Identities": [ - "user@example.com" - ], - "NextToken": "" - }, - "comments": { - "input": { - }, - "output": { - } - }, - "description": "The following example lists the email address identities that have been submitted for verification with Amazon SES:", - "id": "listidentities-1469048638493", - "title": "ListIdentities" - } - ], - "ListIdentityPolicies": [ - { - "input": { - "Identity": "example.com" - }, - "output": { - "PolicyNames": [ - "MyPolicy" - ] - }, - "comments": { - "input": { - }, - "output": { - } - }, - "description": "The following example returns a list of sending authorization policies that are attached to an identity:", - "id": "listidentitypolicies-1469124417674", - "title": "ListIdentityPolicies" - } - ], - "ListReceiptFilters": [ - { - "output": { - "Filters": [ - { - "IpFilter": { - "Cidr": "1.2.3.4/24", - "Policy": "Block" - }, - "Name": "MyFilter" - } - ] - }, - "comments": { - "input": { - }, - "output": { - } - }, - "description": "The following example lists the IP address filters that are associated with an AWS account:", - "id": "listreceiptfilters-1469120786789", - "title": "ListReceiptFilters" - } - ], - "ListReceiptRuleSets": [ - { - "input": { - "NextToken": "" - }, - "output": { - "NextToken": "", - "RuleSets": [ - { - "CreatedTimestamp": "2016-07-15T16:25:59.607Z", - "Name": "MyRuleSet" - } - ] - }, - "comments": { - "input": { - }, - "output": { - } - }, - "description": "The following example lists the receipt rule sets that exist under an AWS account:", - "id": "listreceiptrulesets-1469121037235", - "title": "ListReceiptRuleSets" - } - ], - "ListVerifiedEmailAddresses": [ - { - "output": { - "VerifiedEmailAddresses": [ - "user1@example.com", - "user2@example.com" - ] - }, - "comments": { - "input": { - }, - "output": { - } - }, - "description": "The following example lists all email addresses that have been submitted for verification with Amazon SES:", - "id": "listverifiedemailaddresses-1469051402570", - "title": "ListVerifiedEmailAddresses" - } - ], - "PutIdentityPolicy": [ - { - "input": { - "Identity": "example.com", - "Policy": "{\"Version\":\"2008-10-17\",\"Statement\":[{\"Sid\":\"stmt1469123904194\",\"Effect\":\"Allow\",\"Principal\":{\"AWS\":\"arn:aws:iam::123456789012:root\"},\"Action\":[\"ses:SendEmail\",\"ses:SendRawEmail\"],\"Resource\":\"arn:aws:ses:us-east-1:EXAMPLE65304:identity/example.com\"}]}", - "PolicyName": "MyPolicy" - }, - "comments": { - "input": { - }, - "output": { - } - }, - "description": "The following example adds a sending authorization policy to an identity:", - "id": "putidentitypolicy-1469124560016", - "title": "PutIdentityPolicy" - } - ], - "ReorderReceiptRuleSet": [ - { - "input": { - "RuleNames": [ - "MyRule", - "MyOtherRule" - ], - "RuleSetName": "MyRuleSet" - }, - "comments": { - "input": { - }, - "output": { - } - }, - "description": "The following example reorders the receipt rules within a receipt rule set:", - "id": "reorderreceiptruleset-1469058156806", - "title": "ReorderReceiptRuleSet" - } - ], - "SendEmail": [ - { - "input": { - "Destination": { - "BccAddresses": [ - - ], - "CcAddresses": [ - "recipient3@example.com" - ], - "ToAddresses": [ - "recipient1@example.com", - "recipient2@example.com" - ] - }, - "Message": { - "Body": { - "Html": { - "Charset": "UTF-8", - "Data": "This message body contains HTML formatting. It can, for example, contain links like this one: Amazon SES Developer Guide." - }, - "Text": { - "Charset": "UTF-8", - "Data": "This is the message body in text format." - } - }, - "Subject": { - "Charset": "UTF-8", - "Data": "Test email" - } - }, - "ReplyToAddresses": [ - - ], - "ReturnPath": "", - "ReturnPathArn": "", - "Source": "sender@example.com", - "SourceArn": "" - }, - "output": { - "MessageId": "EXAMPLE78603177f-7a5433e7-8edb-42ae-af10-f0181f34d6ee-000000" - }, - "comments": { - "input": { - }, - "output": { - } - }, - "description": "The following example sends a formatted email:", - "id": "sendemail-1469049656296", - "title": "SendEmail" - } - ], - "SendRawEmail": [ - { - "input": { - "Destinations": [ - - ], - "FromArn": "", - "RawMessage": { - "Data": "From: sender@example.com\\nTo: recipient@example.com\\nSubject: Test email (contains an attachment)\\nMIME-Version: 1.0\\nContent-type: Multipart/Mixed; boundary=\"NextPart\"\\n\\n--NextPart\\nContent-Type: text/plain\\n\\nThis is the message body.\\n\\n--NextPart\\nContent-Type: text/plain;\\nContent-Disposition: attachment; filename=\"attachment.txt\"\\n\\nThis is the text in the attachment.\\n\\n--NextPart--" - }, - "ReturnPathArn": "", - "Source": "", - "SourceArn": "" - }, - "output": { - "MessageId": "EXAMPLEf3f73d99b-c63fb06f-d263-41f8-a0fb-d0dc67d56c07-000000" - }, - "comments": { - "input": { - }, - "output": { - } - }, - "description": "The following example sends an email with an attachment:", - "id": "sendrawemail-1469118548649", - "title": "SendRawEmail" - } - ], - "SetActiveReceiptRuleSet": [ - { - "input": { - "RuleSetName": "RuleSetToActivate" - }, - "comments": { - "input": { - }, - "output": { - } - }, - "description": "The following example sets the active receipt rule set:", - "id": "setactivereceiptruleset-1469058391329", - "title": "SetActiveReceiptRuleSet" - } - ], - "SetIdentityDkimEnabled": [ - { - "input": { - "DkimEnabled": true, - "Identity": "user@example.com" - }, - "comments": { - "input": { - }, - "output": { - } - }, - "description": "The following example configures Amazon SES to Easy DKIM-sign the email sent from an identity:", - "id": "setidentitydkimenabled-1469057485202", - "title": "SetIdentityDkimEnabled" - } - ], - "SetIdentityFeedbackForwardingEnabled": [ - { - "input": { - "ForwardingEnabled": true, - "Identity": "user@example.com" - }, - "comments": { - "input": { - }, - "output": { - } - }, - "description": "The following example configures Amazon SES to forward an identity's bounces and complaints via email:", - "id": "setidentityfeedbackforwardingenabled-1469056811329", - "title": "SetIdentityFeedbackForwardingEnabled" - } - ], - "SetIdentityHeadersInNotificationsEnabled": [ - { - "input": { - "Enabled": true, - "Identity": "user@example.com", - "NotificationType": "Bounce" - }, - "comments": { - "input": { - }, - "output": { - } - }, - "description": "The following example configures Amazon SES to include the original email headers in the Amazon SNS bounce notifications for an identity:", - "id": "setidentityheadersinnotificationsenabled-1469057295001", - "title": "SetIdentityHeadersInNotificationsEnabled" - } - ], - "SetIdentityMailFromDomain": [ - { - "input": { - "BehaviorOnMXFailure": "UseDefaultValue", - "Identity": "user@example.com", - "MailFromDomain": "bounces.example.com" - }, - "comments": { - "input": { - }, - "output": { - } - }, - "description": "The following example configures Amazon SES to use a custom MAIL FROM domain for an identity:", - "id": "setidentitymailfromdomain-1469057693908", - "title": "SetIdentityMailFromDomain" - } - ], - "SetIdentityNotificationTopic": [ - { - "input": { - "Identity": "user@example.com", - "NotificationType": "Bounce", - "SnsTopic": "arn:aws:sns:us-west-2:111122223333:MyTopic" - }, - "comments": { - "input": { - }, - "output": { - } - }, - "description": "The following example sets the Amazon SNS topic to which Amazon SES will publish bounce, complaint, and/or delivery notifications for emails sent with the specified identity as the Source:", - "id": "setidentitynotificationtopic-1469057854966", - "title": "SetIdentityNotificationTopic" - } - ], - "SetReceiptRulePosition": [ - { - "input": { - "After": "PutRuleAfterThisRule", - "RuleName": "RuleToReposition", - "RuleSetName": "MyRuleSet" - }, - "comments": { - "input": { - }, - "output": { - } - }, - "description": "The following example sets the position of a receipt rule in a receipt rule set:", - "id": "setreceiptruleposition-1469058530550", - "title": "SetReceiptRulePosition" - } - ], - "UpdateReceiptRule": [ - { - "input": { - "Rule": { - "Actions": [ - { - "S3Action": { - "BucketName": "MyBucket", - "ObjectKeyPrefix": "email" - } - } - ], - "Enabled": true, - "Name": "MyRule", - "ScanEnabled": true, - "TlsPolicy": "Optional" - }, - "RuleSetName": "MyRuleSet" - }, - "comments": { - "input": { - }, - "output": { - } - }, - "description": "The following example updates a receipt rule to use an Amazon S3 action:", - "id": "updatereceiptrule-1469051756940", - "title": "UpdateReceiptRule" - } - ], - "VerifyDomainDkim": [ - { - "input": { - "Domain": "example.com" - }, - "output": { - "DkimTokens": [ - "EXAMPLEq76owjnks3lnluwg65scbemvw", - "EXAMPLEi3dnsj67hstzaj673klariwx2", - "EXAMPLEwfbtcukvimehexktmdtaz6naj" - ] - }, - "comments": { - "input": { - }, - "output": { - } - }, - "description": "The following example generates DKIM tokens for a domain that has been verified with Amazon SES:", - "id": "verifydomaindkim-1469049503083", - "title": "VerifyDomainDkim" - } - ], - "VerifyDomainIdentity": [ - { - "input": { - "Domain": "example.com" - }, - "output": { - "VerificationToken": "eoEmxw+YaYhb3h3iVJHuXMJXqeu1q1/wwmvjuEXAMPLE" - }, - "comments": { - "input": { - }, - "output": { - } - }, - "description": "The following example starts the domain verification process with Amazon SES:", - "id": "verifydomainidentity-1469049165936", - "title": "VerifyDomainIdentity" - } - ], - "VerifyEmailAddress": [ - { - "input": { - "EmailAddress": "user@example.com" - }, - "comments": { - "input": { - }, - "output": { - } - }, - "description": "The following example starts the email address verification process with Amazon SES:", - "id": "verifyemailaddress-1469048849187", - "title": "VerifyEmailAddress" - } - ], - "VerifyEmailIdentity": [ - { - "input": { - "EmailAddress": "user@example.com" - }, - "comments": { - "input": { - }, - "output": { - } - }, - "description": "The following example starts the email address verification process with Amazon SES:", - "id": "verifyemailidentity-1469049068623", - "title": "VerifyEmailIdentity" - } - ] - } -} diff --git a/workshops/monte-carlo-on-ec2-spot-fleet/src/web/node_modules/aws-sdk/apis/email-2010-12-01.min.json b/workshops/monte-carlo-on-ec2-spot-fleet/src/web/node_modules/aws-sdk/apis/email-2010-12-01.min.json deleted file mode 100644 index a468ef36..00000000 --- a/workshops/monte-carlo-on-ec2-spot-fleet/src/web/node_modules/aws-sdk/apis/email-2010-12-01.min.json +++ /dev/null @@ -1,1759 +0,0 @@ -{ - "version": "2.0", - "metadata": { - "apiVersion": "2010-12-01", - "endpointPrefix": "email", - "protocol": "query", - "serviceAbbreviation": "Amazon SES", - "serviceFullName": "Amazon Simple Email Service", - "signatureVersion": "v4", - "signingName": "ses", - "uid": "email-2010-12-01", - "xmlNamespace": "http://ses.amazonaws.com/doc/2010-12-01/" - }, - "operations": { - "CloneReceiptRuleSet": { - "input": { - "type": "structure", - "required": [ - "RuleSetName", - "OriginalRuleSetName" - ], - "members": { - "RuleSetName": {}, - "OriginalRuleSetName": {} - } - }, - "output": { - "resultWrapper": "CloneReceiptRuleSetResult", - "type": "structure", - "members": {} - } - }, - "CreateConfigurationSet": { - "input": { - "type": "structure", - "required": [ - "ConfigurationSet" - ], - "members": { - "ConfigurationSet": { - "shape": "S5" - } - } - }, - "output": { - "resultWrapper": "CreateConfigurationSetResult", - "type": "structure", - "members": {} - } - }, - "CreateConfigurationSetEventDestination": { - "input": { - "type": "structure", - "required": [ - "ConfigurationSetName", - "EventDestination" - ], - "members": { - "ConfigurationSetName": {}, - "EventDestination": { - "shape": "S9" - } - } - }, - "output": { - "resultWrapper": "CreateConfigurationSetEventDestinationResult", - "type": "structure", - "members": {} - } - }, - "CreateConfigurationSetTrackingOptions": { - "input": { - "type": "structure", - "required": [ - "ConfigurationSetName", - "TrackingOptions" - ], - "members": { - "ConfigurationSetName": {}, - "TrackingOptions": { - "shape": "Sp" - } - } - }, - "output": { - "resultWrapper": "CreateConfigurationSetTrackingOptionsResult", - "type": "structure", - "members": {} - } - }, - "CreateReceiptFilter": { - "input": { - "type": "structure", - "required": [ - "Filter" - ], - "members": { - "Filter": { - "shape": "St" - } - } - }, - "output": { - "resultWrapper": "CreateReceiptFilterResult", - "type": "structure", - "members": {} - } - }, - "CreateReceiptRule": { - "input": { - "type": "structure", - "required": [ - "RuleSetName", - "Rule" - ], - "members": { - "RuleSetName": {}, - "After": {}, - "Rule": { - "shape": "S11" - } - } - }, - "output": { - "resultWrapper": "CreateReceiptRuleResult", - "type": "structure", - "members": {} - } - }, - "CreateReceiptRuleSet": { - "input": { - "type": "structure", - "required": [ - "RuleSetName" - ], - "members": { - "RuleSetName": {} - } - }, - "output": { - "resultWrapper": "CreateReceiptRuleSetResult", - "type": "structure", - "members": {} - } - }, - "CreateTemplate": { - "input": { - "type": "structure", - "required": [ - "Template" - ], - "members": { - "Template": { - "shape": "S1t" - } - } - }, - "output": { - "resultWrapper": "CreateTemplateResult", - "type": "structure", - "members": {} - } - }, - "DeleteConfigurationSet": { - "input": { - "type": "structure", - "required": [ - "ConfigurationSetName" - ], - "members": { - "ConfigurationSetName": {} - } - }, - "output": { - "resultWrapper": "DeleteConfigurationSetResult", - "type": "structure", - "members": {} - } - }, - "DeleteConfigurationSetEventDestination": { - "input": { - "type": "structure", - "required": [ - "ConfigurationSetName", - "EventDestinationName" - ], - "members": { - "ConfigurationSetName": {}, - "EventDestinationName": {} - } - }, - "output": { - "resultWrapper": "DeleteConfigurationSetEventDestinationResult", - "type": "structure", - "members": {} - } - }, - "DeleteConfigurationSetTrackingOptions": { - "input": { - "type": "structure", - "required": [ - "ConfigurationSetName" - ], - "members": { - "ConfigurationSetName": {} - } - }, - "output": { - "resultWrapper": "DeleteConfigurationSetTrackingOptionsResult", - "type": "structure", - "members": {} - } - }, - "DeleteIdentity": { - "input": { - "type": "structure", - "required": [ - "Identity" - ], - "members": { - "Identity": {} - } - }, - "output": { - "resultWrapper": "DeleteIdentityResult", - "type": "structure", - "members": {} - } - }, - "DeleteIdentityPolicy": { - "input": { - "type": "structure", - "required": [ - "Identity", - "PolicyName" - ], - "members": { - "Identity": {}, - "PolicyName": {} - } - }, - "output": { - "resultWrapper": "DeleteIdentityPolicyResult", - "type": "structure", - "members": {} - } - }, - "DeleteReceiptFilter": { - "input": { - "type": "structure", - "required": [ - "FilterName" - ], - "members": { - "FilterName": {} - } - }, - "output": { - "resultWrapper": "DeleteReceiptFilterResult", - "type": "structure", - "members": {} - } - }, - "DeleteReceiptRule": { - "input": { - "type": "structure", - "required": [ - "RuleSetName", - "RuleName" - ], - "members": { - "RuleSetName": {}, - "RuleName": {} - } - }, - "output": { - "resultWrapper": "DeleteReceiptRuleResult", - "type": "structure", - "members": {} - } - }, - "DeleteReceiptRuleSet": { - "input": { - "type": "structure", - "required": [ - "RuleSetName" - ], - "members": { - "RuleSetName": {} - } - }, - "output": { - "resultWrapper": "DeleteReceiptRuleSetResult", - "type": "structure", - "members": {} - } - }, - "DeleteTemplate": { - "input": { - "type": "structure", - "required": [ - "TemplateName" - ], - "members": { - "TemplateName": {} - } - }, - "output": { - "resultWrapper": "DeleteTemplateResult", - "type": "structure", - "members": {} - } - }, - "DeleteVerifiedEmailAddress": { - "input": { - "type": "structure", - "required": [ - "EmailAddress" - ], - "members": { - "EmailAddress": {} - } - } - }, - "DescribeActiveReceiptRuleSet": { - "input": { - "type": "structure", - "members": {} - }, - "output": { - "resultWrapper": "DescribeActiveReceiptRuleSetResult", - "type": "structure", - "members": { - "Metadata": { - "shape": "S2m" - }, - "Rules": { - "shape": "S2o" - } - } - } - }, - "DescribeConfigurationSet": { - "input": { - "type": "structure", - "required": [ - "ConfigurationSetName" - ], - "members": { - "ConfigurationSetName": {}, - "ConfigurationSetAttributeNames": { - "type": "list", - "member": {} - } - } - }, - "output": { - "resultWrapper": "DescribeConfigurationSetResult", - "type": "structure", - "members": { - "ConfigurationSet": { - "shape": "S5" - }, - "EventDestinations": { - "type": "list", - "member": { - "shape": "S9" - } - }, - "TrackingOptions": { - "shape": "Sp" - } - } - } - }, - "DescribeReceiptRule": { - "input": { - "type": "structure", - "required": [ - "RuleSetName", - "RuleName" - ], - "members": { - "RuleSetName": {}, - "RuleName": {} - } - }, - "output": { - "resultWrapper": "DescribeReceiptRuleResult", - "type": "structure", - "members": { - "Rule": { - "shape": "S11" - } - } - } - }, - "DescribeReceiptRuleSet": { - "input": { - "type": "structure", - "required": [ - "RuleSetName" - ], - "members": { - "RuleSetName": {} - } - }, - "output": { - "resultWrapper": "DescribeReceiptRuleSetResult", - "type": "structure", - "members": { - "Metadata": { - "shape": "S2m" - }, - "Rules": { - "shape": "S2o" - } - } - } - }, - "GetIdentityDkimAttributes": { - "input": { - "type": "structure", - "required": [ - "Identities" - ], - "members": { - "Identities": { - "shape": "S2z" - } - } - }, - "output": { - "resultWrapper": "GetIdentityDkimAttributesResult", - "type": "structure", - "required": [ - "DkimAttributes" - ], - "members": { - "DkimAttributes": { - "type": "map", - "key": {}, - "value": { - "type": "structure", - "required": [ - "DkimEnabled", - "DkimVerificationStatus" - ], - "members": { - "DkimEnabled": { - "type": "boolean" - }, - "DkimVerificationStatus": {}, - "DkimTokens": { - "shape": "S34" - } - } - } - } - } - } - }, - "GetIdentityMailFromDomainAttributes": { - "input": { - "type": "structure", - "required": [ - "Identities" - ], - "members": { - "Identities": { - "shape": "S2z" - } - } - }, - "output": { - "resultWrapper": "GetIdentityMailFromDomainAttributesResult", - "type": "structure", - "required": [ - "MailFromDomainAttributes" - ], - "members": { - "MailFromDomainAttributes": { - "type": "map", - "key": {}, - "value": { - "type": "structure", - "required": [ - "MailFromDomain", - "MailFromDomainStatus", - "BehaviorOnMXFailure" - ], - "members": { - "MailFromDomain": {}, - "MailFromDomainStatus": {}, - "BehaviorOnMXFailure": {} - } - } - } - } - } - }, - "GetIdentityNotificationAttributes": { - "input": { - "type": "structure", - "required": [ - "Identities" - ], - "members": { - "Identities": { - "shape": "S2z" - } - } - }, - "output": { - "resultWrapper": "GetIdentityNotificationAttributesResult", - "type": "structure", - "required": [ - "NotificationAttributes" - ], - "members": { - "NotificationAttributes": { - "type": "map", - "key": {}, - "value": { - "type": "structure", - "required": [ - "BounceTopic", - "ComplaintTopic", - "DeliveryTopic", - "ForwardingEnabled" - ], - "members": { - "BounceTopic": {}, - "ComplaintTopic": {}, - "DeliveryTopic": {}, - "ForwardingEnabled": { - "type": "boolean" - }, - "HeadersInBounceNotificationsEnabled": { - "type": "boolean" - }, - "HeadersInComplaintNotificationsEnabled": { - "type": "boolean" - }, - "HeadersInDeliveryNotificationsEnabled": { - "type": "boolean" - } - } - } - } - } - } - }, - "GetIdentityPolicies": { - "input": { - "type": "structure", - "required": [ - "Identity", - "PolicyNames" - ], - "members": { - "Identity": {}, - "PolicyNames": { - "shape": "S3j" - } - } - }, - "output": { - "resultWrapper": "GetIdentityPoliciesResult", - "type": "structure", - "required": [ - "Policies" - ], - "members": { - "Policies": { - "type": "map", - "key": {}, - "value": {} - } - } - } - }, - "GetIdentityVerificationAttributes": { - "input": { - "type": "structure", - "required": [ - "Identities" - ], - "members": { - "Identities": { - "shape": "S2z" - } - } - }, - "output": { - "resultWrapper": "GetIdentityVerificationAttributesResult", - "type": "structure", - "required": [ - "VerificationAttributes" - ], - "members": { - "VerificationAttributes": { - "type": "map", - "key": {}, - "value": { - "type": "structure", - "required": [ - "VerificationStatus" - ], - "members": { - "VerificationStatus": {}, - "VerificationToken": {} - } - } - } - } - } - }, - "GetSendQuota": { - "output": { - "resultWrapper": "GetSendQuotaResult", - "type": "structure", - "members": { - "Max24HourSend": { - "type": "double" - }, - "MaxSendRate": { - "type": "double" - }, - "SentLast24Hours": { - "type": "double" - } - } - } - }, - "GetSendStatistics": { - "output": { - "resultWrapper": "GetSendStatisticsResult", - "type": "structure", - "members": { - "SendDataPoints": { - "type": "list", - "member": { - "type": "structure", - "members": { - "Timestamp": { - "type": "timestamp" - }, - "DeliveryAttempts": { - "type": "long" - }, - "Bounces": { - "type": "long" - }, - "Complaints": { - "type": "long" - }, - "Rejects": { - "type": "long" - } - } - } - } - } - } - }, - "GetTemplate": { - "input": { - "type": "structure", - "required": [ - "TemplateName" - ], - "members": { - "TemplateName": {} - } - }, - "output": { - "resultWrapper": "GetTemplateResult", - "type": "structure", - "members": { - "Template": { - "shape": "S1t" - } - } - } - }, - "ListConfigurationSets": { - "input": { - "type": "structure", - "members": { - "NextToken": {}, - "MaxItems": { - "type": "integer" - } - } - }, - "output": { - "resultWrapper": "ListConfigurationSetsResult", - "type": "structure", - "members": { - "ConfigurationSets": { - "type": "list", - "member": { - "shape": "S5" - } - }, - "NextToken": {} - } - } - }, - "ListIdentities": { - "input": { - "type": "structure", - "members": { - "IdentityType": {}, - "NextToken": {}, - "MaxItems": { - "type": "integer" - } - } - }, - "output": { - "resultWrapper": "ListIdentitiesResult", - "type": "structure", - "required": [ - "Identities" - ], - "members": { - "Identities": { - "shape": "S2z" - }, - "NextToken": {} - } - } - }, - "ListIdentityPolicies": { - "input": { - "type": "structure", - "required": [ - "Identity" - ], - "members": { - "Identity": {} - } - }, - "output": { - "resultWrapper": "ListIdentityPoliciesResult", - "type": "structure", - "required": [ - "PolicyNames" - ], - "members": { - "PolicyNames": { - "shape": "S3j" - } - } - } - }, - "ListReceiptFilters": { - "input": { - "type": "structure", - "members": {} - }, - "output": { - "resultWrapper": "ListReceiptFiltersResult", - "type": "structure", - "members": { - "Filters": { - "type": "list", - "member": { - "shape": "St" - } - } - } - } - }, - "ListReceiptRuleSets": { - "input": { - "type": "structure", - "members": { - "NextToken": {} - } - }, - "output": { - "resultWrapper": "ListReceiptRuleSetsResult", - "type": "structure", - "members": { - "RuleSets": { - "type": "list", - "member": { - "shape": "S2m" - } - }, - "NextToken": {} - } - } - }, - "ListTemplates": { - "input": { - "type": "structure", - "members": { - "NextToken": {}, - "MaxItems": { - "type": "integer" - } - } - }, - "output": { - "resultWrapper": "ListTemplatesResult", - "type": "structure", - "members": { - "TemplatesMetadata": { - "type": "list", - "member": { - "type": "structure", - "members": { - "Name": {}, - "CreatedTimestamp": { - "type": "timestamp" - } - } - } - }, - "NextToken": {} - } - } - }, - "ListVerifiedEmailAddresses": { - "output": { - "resultWrapper": "ListVerifiedEmailAddressesResult", - "type": "structure", - "members": { - "VerifiedEmailAddresses": { - "shape": "S4m" - } - } - } - }, - "PutIdentityPolicy": { - "input": { - "type": "structure", - "required": [ - "Identity", - "PolicyName", - "Policy" - ], - "members": { - "Identity": {}, - "PolicyName": {}, - "Policy": {} - } - }, - "output": { - "resultWrapper": "PutIdentityPolicyResult", - "type": "structure", - "members": {} - } - }, - "ReorderReceiptRuleSet": { - "input": { - "type": "structure", - "required": [ - "RuleSetName", - "RuleNames" - ], - "members": { - "RuleSetName": {}, - "RuleNames": { - "type": "list", - "member": {} - } - } - }, - "output": { - "resultWrapper": "ReorderReceiptRuleSetResult", - "type": "structure", - "members": {} - } - }, - "SendBounce": { - "input": { - "type": "structure", - "required": [ - "OriginalMessageId", - "BounceSender", - "BouncedRecipientInfoList" - ], - "members": { - "OriginalMessageId": {}, - "BounceSender": {}, - "Explanation": {}, - "MessageDsn": { - "type": "structure", - "required": [ - "ReportingMta" - ], - "members": { - "ReportingMta": {}, - "ArrivalDate": { - "type": "timestamp" - }, - "ExtensionFields": { - "shape": "S4y" - } - } - }, - "BouncedRecipientInfoList": { - "type": "list", - "member": { - "type": "structure", - "required": [ - "Recipient" - ], - "members": { - "Recipient": {}, - "RecipientArn": {}, - "BounceType": {}, - "RecipientDsnFields": { - "type": "structure", - "required": [ - "Action", - "Status" - ], - "members": { - "FinalRecipient": {}, - "Action": {}, - "RemoteMta": {}, - "Status": {}, - "DiagnosticCode": {}, - "LastAttemptDate": { - "type": "timestamp" - }, - "ExtensionFields": { - "shape": "S4y" - } - } - } - } - } - }, - "BounceSenderArn": {} - } - }, - "output": { - "resultWrapper": "SendBounceResult", - "type": "structure", - "members": { - "MessageId": {} - } - } - }, - "SendBulkTemplatedEmail": { - "input": { - "type": "structure", - "required": [ - "Source", - "Template", - "Destinations" - ], - "members": { - "Source": {}, - "SourceArn": {}, - "ReplyToAddresses": { - "shape": "S4m" - }, - "ReturnPath": {}, - "ReturnPathArn": {}, - "ConfigurationSetName": {}, - "DefaultTags": { - "shape": "S5d" - }, - "Template": {}, - "TemplateArn": {}, - "DefaultTemplateData": {}, - "Destinations": { - "type": "list", - "member": { - "type": "structure", - "required": [ - "Destination" - ], - "members": { - "Destination": { - "shape": "S5k" - }, - "ReplacementTags": { - "shape": "S5d" - }, - "ReplacementTemplateData": {} - } - } - } - } - }, - "output": { - "resultWrapper": "SendBulkTemplatedEmailResult", - "type": "structure", - "required": [ - "Status" - ], - "members": { - "Status": { - "type": "list", - "member": { - "type": "structure", - "members": { - "Status": {}, - "Error": {}, - "MessageId": {} - } - } - } - } - } - }, - "SendEmail": { - "input": { - "type": "structure", - "required": [ - "Source", - "Destination", - "Message" - ], - "members": { - "Source": {}, - "Destination": { - "shape": "S5k" - }, - "Message": { - "type": "structure", - "required": [ - "Subject", - "Body" - ], - "members": { - "Subject": { - "shape": "S5s" - }, - "Body": { - "type": "structure", - "members": { - "Text": { - "shape": "S5s" - }, - "Html": { - "shape": "S5s" - } - } - } - } - }, - "ReplyToAddresses": { - "shape": "S4m" - }, - "ReturnPath": {}, - "SourceArn": {}, - "ReturnPathArn": {}, - "Tags": { - "shape": "S5d" - }, - "ConfigurationSetName": {} - } - }, - "output": { - "resultWrapper": "SendEmailResult", - "type": "structure", - "required": [ - "MessageId" - ], - "members": { - "MessageId": {} - } - } - }, - "SendRawEmail": { - "input": { - "type": "structure", - "required": [ - "RawMessage" - ], - "members": { - "Source": {}, - "Destinations": { - "shape": "S4m" - }, - "RawMessage": { - "type": "structure", - "required": [ - "Data" - ], - "members": { - "Data": { - "type": "blob" - } - } - }, - "FromArn": {}, - "SourceArn": {}, - "ReturnPathArn": {}, - "Tags": { - "shape": "S5d" - }, - "ConfigurationSetName": {} - } - }, - "output": { - "resultWrapper": "SendRawEmailResult", - "type": "structure", - "required": [ - "MessageId" - ], - "members": { - "MessageId": {} - } - } - }, - "SendTemplatedEmail": { - "input": { - "type": "structure", - "required": [ - "Source", - "Destination", - "Template", - "TemplateData" - ], - "members": { - "Source": {}, - "Destination": { - "shape": "S5k" - }, - "ReplyToAddresses": { - "shape": "S4m" - }, - "ReturnPath": {}, - "SourceArn": {}, - "ReturnPathArn": {}, - "Tags": { - "shape": "S5d" - }, - "ConfigurationSetName": {}, - "Template": {}, - "TemplateArn": {}, - "TemplateData": {} - } - }, - "output": { - "resultWrapper": "SendTemplatedEmailResult", - "type": "structure", - "required": [ - "MessageId" - ], - "members": { - "MessageId": {} - } - } - }, - "SetActiveReceiptRuleSet": { - "input": { - "type": "structure", - "members": { - "RuleSetName": {} - } - }, - "output": { - "resultWrapper": "SetActiveReceiptRuleSetResult", - "type": "structure", - "members": {} - } - }, - "SetIdentityDkimEnabled": { - "input": { - "type": "structure", - "required": [ - "Identity", - "DkimEnabled" - ], - "members": { - "Identity": {}, - "DkimEnabled": { - "type": "boolean" - } - } - }, - "output": { - "resultWrapper": "SetIdentityDkimEnabledResult", - "type": "structure", - "members": {} - } - }, - "SetIdentityFeedbackForwardingEnabled": { - "input": { - "type": "structure", - "required": [ - "Identity", - "ForwardingEnabled" - ], - "members": { - "Identity": {}, - "ForwardingEnabled": { - "type": "boolean" - } - } - }, - "output": { - "resultWrapper": "SetIdentityFeedbackForwardingEnabledResult", - "type": "structure", - "members": {} - } - }, - "SetIdentityHeadersInNotificationsEnabled": { - "input": { - "type": "structure", - "required": [ - "Identity", - "NotificationType", - "Enabled" - ], - "members": { - "Identity": {}, - "NotificationType": {}, - "Enabled": { - "type": "boolean" - } - } - }, - "output": { - "resultWrapper": "SetIdentityHeadersInNotificationsEnabledResult", - "type": "structure", - "members": {} - } - }, - "SetIdentityMailFromDomain": { - "input": { - "type": "structure", - "required": [ - "Identity" - ], - "members": { - "Identity": {}, - "MailFromDomain": {}, - "BehaviorOnMXFailure": {} - } - }, - "output": { - "resultWrapper": "SetIdentityMailFromDomainResult", - "type": "structure", - "members": {} - } - }, - "SetIdentityNotificationTopic": { - "input": { - "type": "structure", - "required": [ - "Identity", - "NotificationType" - ], - "members": { - "Identity": {}, - "NotificationType": {}, - "SnsTopic": {} - } - }, - "output": { - "resultWrapper": "SetIdentityNotificationTopicResult", - "type": "structure", - "members": {} - } - }, - "SetReceiptRulePosition": { - "input": { - "type": "structure", - "required": [ - "RuleSetName", - "RuleName" - ], - "members": { - "RuleSetName": {}, - "RuleName": {}, - "After": {} - } - }, - "output": { - "resultWrapper": "SetReceiptRulePositionResult", - "type": "structure", - "members": {} - } - }, - "TestRenderTemplate": { - "input": { - "type": "structure", - "required": [ - "TemplateName", - "TemplateData" - ], - "members": { - "TemplateName": {}, - "TemplateData": {} - } - }, - "output": { - "resultWrapper": "TestRenderTemplateResult", - "type": "structure", - "members": { - "RenderedTemplate": {} - } - } - }, - "UpdateConfigurationSetEventDestination": { - "input": { - "type": "structure", - "required": [ - "ConfigurationSetName", - "EventDestination" - ], - "members": { - "ConfigurationSetName": {}, - "EventDestination": { - "shape": "S9" - } - } - }, - "output": { - "resultWrapper": "UpdateConfigurationSetEventDestinationResult", - "type": "structure", - "members": {} - } - }, - "UpdateConfigurationSetTrackingOptions": { - "input": { - "type": "structure", - "required": [ - "ConfigurationSetName", - "TrackingOptions" - ], - "members": { - "ConfigurationSetName": {}, - "TrackingOptions": { - "shape": "Sp" - } - } - }, - "output": { - "resultWrapper": "UpdateConfigurationSetTrackingOptionsResult", - "type": "structure", - "members": {} - } - }, - "UpdateReceiptRule": { - "input": { - "type": "structure", - "required": [ - "RuleSetName", - "Rule" - ], - "members": { - "RuleSetName": {}, - "Rule": { - "shape": "S11" - } - } - }, - "output": { - "resultWrapper": "UpdateReceiptRuleResult", - "type": "structure", - "members": {} - } - }, - "UpdateTemplate": { - "input": { - "type": "structure", - "required": [ - "Template" - ], - "members": { - "Template": { - "shape": "S1t" - } - } - }, - "output": { - "resultWrapper": "UpdateTemplateResult", - "type": "structure", - "members": {} - } - }, - "VerifyDomainDkim": { - "input": { - "type": "structure", - "required": [ - "Domain" - ], - "members": { - "Domain": {} - } - }, - "output": { - "resultWrapper": "VerifyDomainDkimResult", - "type": "structure", - "required": [ - "DkimTokens" - ], - "members": { - "DkimTokens": { - "shape": "S34" - } - } - } - }, - "VerifyDomainIdentity": { - "input": { - "type": "structure", - "required": [ - "Domain" - ], - "members": { - "Domain": {} - } - }, - "output": { - "resultWrapper": "VerifyDomainIdentityResult", - "type": "structure", - "required": [ - "VerificationToken" - ], - "members": { - "VerificationToken": {} - } - } - }, - "VerifyEmailAddress": { - "input": { - "type": "structure", - "required": [ - "EmailAddress" - ], - "members": { - "EmailAddress": {} - } - } - }, - "VerifyEmailIdentity": { - "input": { - "type": "structure", - "required": [ - "EmailAddress" - ], - "members": { - "EmailAddress": {} - } - }, - "output": { - "resultWrapper": "VerifyEmailIdentityResult", - "type": "structure", - "members": {} - } - } - }, - "shapes": { - "S5": { - "type": "structure", - "required": [ - "Name" - ], - "members": { - "Name": {} - } - }, - "S9": { - "type": "structure", - "required": [ - "Name", - "MatchingEventTypes" - ], - "members": { - "Name": {}, - "Enabled": { - "type": "boolean" - }, - "MatchingEventTypes": { - "type": "list", - "member": {} - }, - "KinesisFirehoseDestination": { - "type": "structure", - "required": [ - "IAMRoleARN", - "DeliveryStreamARN" - ], - "members": { - "IAMRoleARN": {}, - "DeliveryStreamARN": {} - } - }, - "CloudWatchDestination": { - "type": "structure", - "required": [ - "DimensionConfigurations" - ], - "members": { - "DimensionConfigurations": { - "type": "list", - "member": { - "type": "structure", - "required": [ - "DimensionName", - "DimensionValueSource", - "DefaultDimensionValue" - ], - "members": { - "DimensionName": {}, - "DimensionValueSource": {}, - "DefaultDimensionValue": {} - } - } - } - } - }, - "SNSDestination": { - "type": "structure", - "required": [ - "TopicARN" - ], - "members": { - "TopicARN": {} - } - } - } - }, - "Sp": { - "type": "structure", - "members": { - "CustomRedirectDomain": {} - } - }, - "St": { - "type": "structure", - "required": [ - "Name", - "IpFilter" - ], - "members": { - "Name": {}, - "IpFilter": { - "type": "structure", - "required": [ - "Policy", - "Cidr" - ], - "members": { - "Policy": {}, - "Cidr": {} - } - } - } - }, - "S11": { - "type": "structure", - "required": [ - "Name" - ], - "members": { - "Name": {}, - "Enabled": { - "type": "boolean" - }, - "TlsPolicy": {}, - "Recipients": { - "type": "list", - "member": {} - }, - "Actions": { - "type": "list", - "member": { - "type": "structure", - "members": { - "S3Action": { - "type": "structure", - "required": [ - "BucketName" - ], - "members": { - "TopicArn": {}, - "BucketName": {}, - "ObjectKeyPrefix": {}, - "KmsKeyArn": {} - } - }, - "BounceAction": { - "type": "structure", - "required": [ - "SmtpReplyCode", - "Message", - "Sender" - ], - "members": { - "TopicArn": {}, - "SmtpReplyCode": {}, - "StatusCode": {}, - "Message": {}, - "Sender": {} - } - }, - "WorkmailAction": { - "type": "structure", - "required": [ - "OrganizationArn" - ], - "members": { - "TopicArn": {}, - "OrganizationArn": {} - } - }, - "LambdaAction": { - "type": "structure", - "required": [ - "FunctionArn" - ], - "members": { - "TopicArn": {}, - "FunctionArn": {}, - "InvocationType": {} - } - }, - "StopAction": { - "type": "structure", - "required": [ - "Scope" - ], - "members": { - "Scope": {}, - "TopicArn": {} - } - }, - "AddHeaderAction": { - "type": "structure", - "required": [ - "HeaderName", - "HeaderValue" - ], - "members": { - "HeaderName": {}, - "HeaderValue": {} - } - }, - "SNSAction": { - "type": "structure", - "required": [ - "TopicArn" - ], - "members": { - "TopicArn": {}, - "Encoding": {} - } - } - } - } - }, - "ScanEnabled": { - "type": "boolean" - } - } - }, - "S1t": { - "type": "structure", - "required": [ - "TemplateName" - ], - "members": { - "TemplateName": {}, - "SubjectPart": {}, - "TextPart": {}, - "HtmlPart": {} - } - }, - "S2m": { - "type": "structure", - "members": { - "Name": {}, - "CreatedTimestamp": { - "type": "timestamp" - } - } - }, - "S2o": { - "type": "list", - "member": { - "shape": "S11" - } - }, - "S2z": { - "type": "list", - "member": {} - }, - "S34": { - "type": "list", - "member": {} - }, - "S3j": { - "type": "list", - "member": {} - }, - "S4m": { - "type": "list", - "member": {} - }, - "S4y": { - "type": "list", - "member": { - "type": "structure", - "required": [ - "Name", - "Value" - ], - "members": { - "Name": {}, - "Value": {} - } - } - }, - "S5d": { - "type": "list", - "member": { - "type": "structure", - "required": [ - "Name", - "Value" - ], - "members": { - "Name": {}, - "Value": {} - } - } - }, - "S5k": { - "type": "structure", - "members": { - "ToAddresses": { - "shape": "S4m" - }, - "CcAddresses": { - "shape": "S4m" - }, - "BccAddresses": { - "shape": "S4m" - } - } - }, - "S5s": { - "type": "structure", - "required": [ - "Data" - ], - "members": { - "Data": {}, - "Charset": {} - } - } - } -} \ No newline at end of file diff --git a/workshops/monte-carlo-on-ec2-spot-fleet/src/web/node_modules/aws-sdk/apis/email-2010-12-01.paginators.json b/workshops/monte-carlo-on-ec2-spot-fleet/src/web/node_modules/aws-sdk/apis/email-2010-12-01.paginators.json deleted file mode 100644 index 8a21098f..00000000 --- a/workshops/monte-carlo-on-ec2-spot-fleet/src/web/node_modules/aws-sdk/apis/email-2010-12-01.paginators.json +++ /dev/null @@ -1,13 +0,0 @@ -{ - "pagination": { - "ListIdentities": { - "input_token": "NextToken", - "limit_key": "MaxItems", - "output_token": "NextToken", - "result_key": "Identities" - }, - "ListVerifiedEmailAddresses": { - "result_key": "VerifiedEmailAddresses" - } - } -} \ No newline at end of file diff --git a/workshops/monte-carlo-on-ec2-spot-fleet/src/web/node_modules/aws-sdk/apis/email-2010-12-01.waiters2.json b/workshops/monte-carlo-on-ec2-spot-fleet/src/web/node_modules/aws-sdk/apis/email-2010-12-01.waiters2.json deleted file mode 100644 index b585d309..00000000 --- a/workshops/monte-carlo-on-ec2-spot-fleet/src/web/node_modules/aws-sdk/apis/email-2010-12-01.waiters2.json +++ /dev/null @@ -1,18 +0,0 @@ -{ - "version": 2, - "waiters": { - "IdentityExists": { - "delay": 3, - "operation": "GetIdentityVerificationAttributes", - "maxAttempts": 20, - "acceptors": [ - { - "expected": "Success", - "matcher": "pathAll", - "state": "success", - "argument": "VerificationAttributes.*.VerificationStatus" - } - ] - } - } -} diff --git a/workshops/monte-carlo-on-ec2-spot-fleet/src/web/node_modules/aws-sdk/apis/entitlement.marketplace-2017-01-11.examples.json b/workshops/monte-carlo-on-ec2-spot-fleet/src/web/node_modules/aws-sdk/apis/entitlement.marketplace-2017-01-11.examples.json deleted file mode 100644 index 0ea7e3b0..00000000 --- a/workshops/monte-carlo-on-ec2-spot-fleet/src/web/node_modules/aws-sdk/apis/entitlement.marketplace-2017-01-11.examples.json +++ /dev/null @@ -1,5 +0,0 @@ -{ - "version": "1.0", - "examples": { - } -} diff --git a/workshops/monte-carlo-on-ec2-spot-fleet/src/web/node_modules/aws-sdk/apis/entitlement.marketplace-2017-01-11.min.json b/workshops/monte-carlo-on-ec2-spot-fleet/src/web/node_modules/aws-sdk/apis/entitlement.marketplace-2017-01-11.min.json deleted file mode 100644 index fb54d6ca..00000000 --- a/workshops/monte-carlo-on-ec2-spot-fleet/src/web/node_modules/aws-sdk/apis/entitlement.marketplace-2017-01-11.min.json +++ /dev/null @@ -1,75 +0,0 @@ -{ - "version": "2.0", - "metadata": { - "apiVersion": "2017-01-11", - "endpointPrefix": "entitlement.marketplace", - "jsonVersion": "1.1", - "protocol": "json", - "serviceFullName": "AWS Marketplace Entitlement Service", - "signatureVersion": "v4", - "signingName": "aws-marketplace", - "targetPrefix": "AWSMPEntitlementService", - "uid": "entitlement.marketplace-2017-01-11" - }, - "operations": { - "GetEntitlements": { - "input": { - "type": "structure", - "required": [ - "ProductCode" - ], - "members": { - "ProductCode": {}, - "Filter": { - "type": "map", - "key": {}, - "value": { - "type": "list", - "member": {} - } - }, - "NextToken": {}, - "MaxResults": { - "type": "integer" - } - } - }, - "output": { - "type": "structure", - "members": { - "Entitlements": { - "type": "list", - "member": { - "type": "structure", - "members": { - "ProductCode": {}, - "Dimension": {}, - "CustomerIdentifier": {}, - "Value": { - "type": "structure", - "members": { - "IntegerValue": { - "type": "integer" - }, - "DoubleValue": { - "type": "double" - }, - "BooleanValue": { - "type": "boolean" - }, - "StringValue": {} - } - }, - "ExpirationDate": { - "type": "timestamp" - } - } - } - }, - "NextToken": {} - } - } - } - }, - "shapes": {} -} \ No newline at end of file diff --git a/workshops/monte-carlo-on-ec2-spot-fleet/src/web/node_modules/aws-sdk/apis/entitlement.marketplace-2017-01-11.paginators.json b/workshops/monte-carlo-on-ec2-spot-fleet/src/web/node_modules/aws-sdk/apis/entitlement.marketplace-2017-01-11.paginators.json deleted file mode 100644 index 5677bd8e..00000000 --- a/workshops/monte-carlo-on-ec2-spot-fleet/src/web/node_modules/aws-sdk/apis/entitlement.marketplace-2017-01-11.paginators.json +++ /dev/null @@ -1,4 +0,0 @@ -{ - "pagination": { - } -} diff --git a/workshops/monte-carlo-on-ec2-spot-fleet/src/web/node_modules/aws-sdk/apis/es-2015-01-01.min.json b/workshops/monte-carlo-on-ec2-spot-fleet/src/web/node_modules/aws-sdk/apis/es-2015-01-01.min.json deleted file mode 100644 index 5f39fee1..00000000 --- a/workshops/monte-carlo-on-ec2-spot-fleet/src/web/node_modules/aws-sdk/apis/es-2015-01-01.min.json +++ /dev/null @@ -1,669 +0,0 @@ -{ - "version": "2.0", - "metadata": { - "apiVersion": "2015-01-01", - "endpointPrefix": "es", - "protocol": "rest-json", - "serviceFullName": "Amazon Elasticsearch Service", - "signatureVersion": "v4", - "uid": "es-2015-01-01" - }, - "operations": { - "AddTags": { - "http": { - "requestUri": "/2015-01-01/tags" - }, - "input": { - "type": "structure", - "required": [ - "ARN", - "TagList" - ], - "members": { - "ARN": {}, - "TagList": { - "shape": "S3" - } - } - } - }, - "CreateElasticsearchDomain": { - "http": { - "requestUri": "/2015-01-01/es/domain" - }, - "input": { - "type": "structure", - "required": [ - "DomainName" - ], - "members": { - "DomainName": {}, - "ElasticsearchVersion": {}, - "ElasticsearchClusterConfig": { - "shape": "Sa" - }, - "EBSOptions": { - "shape": "Se" - }, - "AccessPolicies": {}, - "SnapshotOptions": { - "shape": "Sh" - }, - "AdvancedOptions": { - "shape": "Si" - } - } - }, - "output": { - "type": "structure", - "members": { - "DomainStatus": { - "shape": "Sl" - } - } - } - }, - "DeleteElasticsearchDomain": { - "http": { - "method": "DELETE", - "requestUri": "/2015-01-01/es/domain/{DomainName}" - }, - "input": { - "type": "structure", - "required": [ - "DomainName" - ], - "members": { - "DomainName": { - "location": "uri", - "locationName": "DomainName" - } - } - }, - "output": { - "type": "structure", - "members": { - "DomainStatus": { - "shape": "Sl" - } - } - } - }, - "DescribeElasticsearchDomain": { - "http": { - "method": "GET", - "requestUri": "/2015-01-01/es/domain/{DomainName}" - }, - "input": { - "type": "structure", - "required": [ - "DomainName" - ], - "members": { - "DomainName": { - "location": "uri", - "locationName": "DomainName" - } - } - }, - "output": { - "type": "structure", - "required": [ - "DomainStatus" - ], - "members": { - "DomainStatus": { - "shape": "Sl" - } - } - } - }, - "DescribeElasticsearchDomainConfig": { - "http": { - "method": "GET", - "requestUri": "/2015-01-01/es/domain/{DomainName}/config" - }, - "input": { - "type": "structure", - "required": [ - "DomainName" - ], - "members": { - "DomainName": { - "location": "uri", - "locationName": "DomainName" - } - } - }, - "output": { - "type": "structure", - "required": [ - "DomainConfig" - ], - "members": { - "DomainConfig": { - "shape": "Su" - } - } - } - }, - "DescribeElasticsearchDomains": { - "http": { - "requestUri": "/2015-01-01/es/domain-info" - }, - "input": { - "type": "structure", - "required": [ - "DomainNames" - ], - "members": { - "DomainNames": { - "type": "list", - "member": {} - } - } - }, - "output": { - "type": "structure", - "required": [ - "DomainStatusList" - ], - "members": { - "DomainStatusList": { - "type": "list", - "member": { - "shape": "Sl" - } - } - } - } - }, - "DescribeElasticsearchInstanceTypeLimits": { - "http": { - "method": "GET", - "requestUri": "/2015-01-01/es/instanceTypeLimits/{ElasticsearchVersion}/{InstanceType}" - }, - "input": { - "type": "structure", - "required": [ - "InstanceType", - "ElasticsearchVersion" - ], - "members": { - "DomainName": { - "location": "querystring", - "locationName": "domainName" - }, - "InstanceType": { - "location": "uri", - "locationName": "InstanceType" - }, - "ElasticsearchVersion": { - "location": "uri", - "locationName": "ElasticsearchVersion" - } - } - }, - "output": { - "type": "structure", - "members": { - "LimitsByRole": { - "type": "map", - "key": {}, - "value": { - "type": "structure", - "members": { - "StorageTypes": { - "type": "list", - "member": { - "type": "structure", - "members": { - "StorageTypeName": {}, - "StorageSubTypeName": {}, - "StorageTypeLimits": { - "type": "list", - "member": { - "type": "structure", - "members": { - "LimitName": {}, - "LimitValues": { - "shape": "S1l" - } - } - } - } - } - } - }, - "InstanceLimits": { - "type": "structure", - "members": { - "InstanceCountLimits": { - "type": "structure", - "members": { - "MinimumInstanceCount": { - "type": "integer" - }, - "MaximumInstanceCount": { - "type": "integer" - } - } - } - } - }, - "AdditionalLimits": { - "type": "list", - "member": { - "type": "structure", - "members": { - "LimitName": {}, - "LimitValues": { - "shape": "S1l" - } - } - } - } - } - } - } - } - } - }, - "ListDomainNames": { - "http": { - "method": "GET", - "requestUri": "/2015-01-01/domain" - }, - "output": { - "type": "structure", - "members": { - "DomainNames": { - "type": "list", - "member": { - "type": "structure", - "members": { - "DomainName": {} - } - } - } - } - } - }, - "ListElasticsearchInstanceTypes": { - "http": { - "method": "GET", - "requestUri": "/2015-01-01/es/instanceTypes/{ElasticsearchVersion}" - }, - "input": { - "type": "structure", - "required": [ - "ElasticsearchVersion" - ], - "members": { - "ElasticsearchVersion": { - "location": "uri", - "locationName": "ElasticsearchVersion" - }, - "DomainName": { - "location": "querystring", - "locationName": "domainName" - }, - "MaxResults": { - "location": "querystring", - "locationName": "maxResults", - "type": "integer" - }, - "NextToken": { - "location": "querystring", - "locationName": "nextToken" - } - } - }, - "output": { - "type": "structure", - "members": { - "ElasticsearchInstanceTypes": { - "type": "list", - "member": {} - }, - "NextToken": {} - } - } - }, - "ListElasticsearchVersions": { - "http": { - "method": "GET", - "requestUri": "/2015-01-01/es/versions" - }, - "input": { - "type": "structure", - "members": { - "MaxResults": { - "location": "querystring", - "locationName": "maxResults", - "type": "integer" - }, - "NextToken": { - "location": "querystring", - "locationName": "nextToken" - } - } - }, - "output": { - "type": "structure", - "members": { - "ElasticsearchVersions": { - "type": "list", - "member": {} - }, - "NextToken": {} - } - } - }, - "ListTags": { - "http": { - "method": "GET", - "requestUri": "/2015-01-01/tags/" - }, - "input": { - "type": "structure", - "required": [ - "ARN" - ], - "members": { - "ARN": { - "location": "querystring", - "locationName": "arn" - } - } - }, - "output": { - "type": "structure", - "members": { - "TagList": { - "shape": "S3" - } - } - } - }, - "RemoveTags": { - "http": { - "requestUri": "/2015-01-01/tags-removal" - }, - "input": { - "type": "structure", - "required": [ - "ARN", - "TagKeys" - ], - "members": { - "ARN": {}, - "TagKeys": { - "type": "list", - "member": {} - } - } - } - }, - "UpdateElasticsearchDomainConfig": { - "http": { - "requestUri": "/2015-01-01/es/domain/{DomainName}/config" - }, - "input": { - "type": "structure", - "required": [ - "DomainName" - ], - "members": { - "DomainName": { - "location": "uri", - "locationName": "DomainName" - }, - "ElasticsearchClusterConfig": { - "shape": "Sa" - }, - "EBSOptions": { - "shape": "Se" - }, - "SnapshotOptions": { - "shape": "Sh" - }, - "AdvancedOptions": { - "shape": "Si" - }, - "AccessPolicies": {} - } - }, - "output": { - "type": "structure", - "required": [ - "DomainConfig" - ], - "members": { - "DomainConfig": { - "shape": "Su" - } - } - } - } - }, - "shapes": { - "S3": { - "type": "list", - "member": { - "type": "structure", - "required": [ - "Key", - "Value" - ], - "members": { - "Key": {}, - "Value": {} - } - } - }, - "Sa": { - "type": "structure", - "members": { - "InstanceType": {}, - "InstanceCount": { - "type": "integer" - }, - "DedicatedMasterEnabled": { - "type": "boolean" - }, - "ZoneAwarenessEnabled": { - "type": "boolean" - }, - "DedicatedMasterType": {}, - "DedicatedMasterCount": { - "type": "integer" - } - } - }, - "Se": { - "type": "structure", - "members": { - "EBSEnabled": { - "type": "boolean" - }, - "VolumeType": {}, - "VolumeSize": { - "type": "integer" - }, - "Iops": { - "type": "integer" - } - } - }, - "Sh": { - "type": "structure", - "members": { - "AutomatedSnapshotStartHour": { - "type": "integer" - } - } - }, - "Si": { - "type": "map", - "key": {}, - "value": {} - }, - "Sl": { - "type": "structure", - "required": [ - "DomainId", - "DomainName", - "ARN", - "ElasticsearchClusterConfig" - ], - "members": { - "DomainId": {}, - "DomainName": {}, - "ARN": {}, - "Created": { - "type": "boolean" - }, - "Deleted": { - "type": "boolean" - }, - "Endpoint": {}, - "Processing": { - "type": "boolean" - }, - "ElasticsearchVersion": {}, - "ElasticsearchClusterConfig": { - "shape": "Sa" - }, - "EBSOptions": { - "shape": "Se" - }, - "AccessPolicies": {}, - "SnapshotOptions": { - "shape": "Sh" - }, - "AdvancedOptions": { - "shape": "Si" - } - } - }, - "Su": { - "type": "structure", - "members": { - "ElasticsearchVersion": { - "type": "structure", - "required": [ - "Options", - "Status" - ], - "members": { - "Options": {}, - "Status": { - "shape": "Sw" - } - } - }, - "ElasticsearchClusterConfig": { - "type": "structure", - "required": [ - "Options", - "Status" - ], - "members": { - "Options": { - "shape": "Sa" - }, - "Status": { - "shape": "Sw" - } - } - }, - "EBSOptions": { - "type": "structure", - "required": [ - "Options", - "Status" - ], - "members": { - "Options": { - "shape": "Se" - }, - "Status": { - "shape": "Sw" - } - } - }, - "AccessPolicies": { - "type": "structure", - "required": [ - "Options", - "Status" - ], - "members": { - "Options": {}, - "Status": { - "shape": "Sw" - } - } - }, - "SnapshotOptions": { - "type": "structure", - "required": [ - "Options", - "Status" - ], - "members": { - "Options": { - "shape": "Sh" - }, - "Status": { - "shape": "Sw" - } - } - }, - "AdvancedOptions": { - "type": "structure", - "required": [ - "Options", - "Status" - ], - "members": { - "Options": { - "shape": "Si" - }, - "Status": { - "shape": "Sw" - } - } - } - } - }, - "Sw": { - "type": "structure", - "required": [ - "CreationDate", - "UpdateDate", - "State" - ], - "members": { - "CreationDate": { - "type": "timestamp" - }, - "UpdateDate": { - "type": "timestamp" - }, - "UpdateVersion": { - "type": "integer" - }, - "State": {}, - "PendingDeletion": { - "type": "boolean" - } - } - }, - "S1l": { - "type": "list", - "member": {} - } - } -} \ No newline at end of file diff --git a/workshops/monte-carlo-on-ec2-spot-fleet/src/web/node_modules/aws-sdk/apis/es-2015-01-01.paginators.json b/workshops/monte-carlo-on-ec2-spot-fleet/src/web/node_modules/aws-sdk/apis/es-2015-01-01.paginators.json deleted file mode 100644 index 5a6c3dd1..00000000 --- a/workshops/monte-carlo-on-ec2-spot-fleet/src/web/node_modules/aws-sdk/apis/es-2015-01-01.paginators.json +++ /dev/null @@ -1,14 +0,0 @@ -{ - "pagination": { - "ListElasticsearchInstanceTypes": { - "input_token": "NextToken", - "output_token": "NextToken", - "limit_key": "MaxResults" - }, - "ListElasticsearchVersions": { - "input_token": "NextToken", - "output_token": "NextToken", - "limit_key": "MaxResults" - } - } -} diff --git a/workshops/monte-carlo-on-ec2-spot-fleet/src/web/node_modules/aws-sdk/apis/events-2015-10-07.examples.json b/workshops/monte-carlo-on-ec2-spot-fleet/src/web/node_modules/aws-sdk/apis/events-2015-10-07.examples.json deleted file mode 100644 index 0ea7e3b0..00000000 --- a/workshops/monte-carlo-on-ec2-spot-fleet/src/web/node_modules/aws-sdk/apis/events-2015-10-07.examples.json +++ /dev/null @@ -1,5 +0,0 @@ -{ - "version": "1.0", - "examples": { - } -} diff --git a/workshops/monte-carlo-on-ec2-spot-fleet/src/web/node_modules/aws-sdk/apis/events-2015-10-07.min.json b/workshops/monte-carlo-on-ec2-spot-fleet/src/web/node_modules/aws-sdk/apis/events-2015-10-07.min.json deleted file mode 100644 index d07a5400..00000000 --- a/workshops/monte-carlo-on-ec2-spot-fleet/src/web/node_modules/aws-sdk/apis/events-2015-10-07.min.json +++ /dev/null @@ -1,431 +0,0 @@ -{ - "version": "2.0", - "metadata": { - "apiVersion": "2015-10-07", - "endpointPrefix": "events", - "jsonVersion": "1.1", - "protocol": "json", - "serviceFullName": "Amazon CloudWatch Events", - "signatureVersion": "v4", - "targetPrefix": "AWSEvents", - "uid": "events-2015-10-07" - }, - "operations": { - "DeleteRule": { - "input": { - "type": "structure", - "required": [ - "Name" - ], - "members": { - "Name": {} - } - } - }, - "DescribeEventBus": { - "input": { - "type": "structure", - "members": {} - }, - "output": { - "type": "structure", - "members": { - "Name": {}, - "Arn": {}, - "Policy": {} - } - } - }, - "DescribeRule": { - "input": { - "type": "structure", - "required": [ - "Name" - ], - "members": { - "Name": {} - } - }, - "output": { - "type": "structure", - "members": { - "Name": {}, - "Arn": {}, - "EventPattern": {}, - "ScheduleExpression": {}, - "State": {}, - "Description": {}, - "RoleArn": {} - } - } - }, - "DisableRule": { - "input": { - "type": "structure", - "required": [ - "Name" - ], - "members": { - "Name": {} - } - } - }, - "EnableRule": { - "input": { - "type": "structure", - "required": [ - "Name" - ], - "members": { - "Name": {} - } - } - }, - "ListRuleNamesByTarget": { - "input": { - "type": "structure", - "required": [ - "TargetArn" - ], - "members": { - "TargetArn": {}, - "NextToken": {}, - "Limit": { - "type": "integer" - } - } - }, - "output": { - "type": "structure", - "members": { - "RuleNames": { - "type": "list", - "member": {} - }, - "NextToken": {} - } - } - }, - "ListRules": { - "input": { - "type": "structure", - "members": { - "NamePrefix": {}, - "NextToken": {}, - "Limit": { - "type": "integer" - } - } - }, - "output": { - "type": "structure", - "members": { - "Rules": { - "type": "list", - "member": { - "type": "structure", - "members": { - "Name": {}, - "Arn": {}, - "EventPattern": {}, - "State": {}, - "Description": {}, - "ScheduleExpression": {}, - "RoleArn": {} - } - } - }, - "NextToken": {} - } - } - }, - "ListTargetsByRule": { - "input": { - "type": "structure", - "required": [ - "Rule" - ], - "members": { - "Rule": {}, - "NextToken": {}, - "Limit": { - "type": "integer" - } - } - }, - "output": { - "type": "structure", - "members": { - "Targets": { - "shape": "Ss" - }, - "NextToken": {} - } - } - }, - "PutEvents": { - "input": { - "type": "structure", - "required": [ - "Entries" - ], - "members": { - "Entries": { - "type": "list", - "member": { - "type": "structure", - "members": { - "Time": { - "type": "timestamp" - }, - "Source": {}, - "Resources": { - "type": "list", - "member": {} - }, - "DetailType": {}, - "Detail": {} - } - } - } - } - }, - "output": { - "type": "structure", - "members": { - "FailedEntryCount": { - "type": "integer" - }, - "Entries": { - "type": "list", - "member": { - "type": "structure", - "members": { - "EventId": {}, - "ErrorCode": {}, - "ErrorMessage": {} - } - } - } - } - } - }, - "PutPermission": { - "input": { - "type": "structure", - "required": [ - "Action", - "Principal", - "StatementId" - ], - "members": { - "Action": {}, - "Principal": {}, - "StatementId": {} - } - } - }, - "PutRule": { - "input": { - "type": "structure", - "required": [ - "Name" - ], - "members": { - "Name": {}, - "ScheduleExpression": {}, - "EventPattern": {}, - "State": {}, - "Description": {}, - "RoleArn": {} - } - }, - "output": { - "type": "structure", - "members": { - "RuleArn": {} - } - } - }, - "PutTargets": { - "input": { - "type": "structure", - "required": [ - "Rule", - "Targets" - ], - "members": { - "Rule": {}, - "Targets": { - "shape": "Ss" - } - } - }, - "output": { - "type": "structure", - "members": { - "FailedEntryCount": { - "type": "integer" - }, - "FailedEntries": { - "type": "list", - "member": { - "type": "structure", - "members": { - "TargetId": {}, - "ErrorCode": {}, - "ErrorMessage": {} - } - } - } - } - } - }, - "RemovePermission": { - "input": { - "type": "structure", - "required": [ - "StatementId" - ], - "members": { - "StatementId": {} - } - } - }, - "RemoveTargets": { - "input": { - "type": "structure", - "required": [ - "Rule", - "Ids" - ], - "members": { - "Rule": {}, - "Ids": { - "type": "list", - "member": {} - } - } - }, - "output": { - "type": "structure", - "members": { - "FailedEntryCount": { - "type": "integer" - }, - "FailedEntries": { - "type": "list", - "member": { - "type": "structure", - "members": { - "TargetId": {}, - "ErrorCode": {}, - "ErrorMessage": {} - } - } - } - } - } - }, - "TestEventPattern": { - "input": { - "type": "structure", - "required": [ - "EventPattern", - "Event" - ], - "members": { - "EventPattern": {}, - "Event": {} - } - }, - "output": { - "type": "structure", - "members": { - "Result": { - "type": "boolean" - } - } - } - } - }, - "shapes": { - "Ss": { - "type": "list", - "member": { - "type": "structure", - "required": [ - "Id", - "Arn" - ], - "members": { - "Id": {}, - "Arn": {}, - "RoleArn": {}, - "Input": {}, - "InputPath": {}, - "InputTransformer": { - "type": "structure", - "required": [ - "InputTemplate" - ], - "members": { - "InputPathsMap": { - "type": "map", - "key": {}, - "value": {} - }, - "InputTemplate": {} - } - }, - "KinesisParameters": { - "type": "structure", - "required": [ - "PartitionKeyPath" - ], - "members": { - "PartitionKeyPath": {} - } - }, - "RunCommandParameters": { - "type": "structure", - "required": [ - "RunCommandTargets" - ], - "members": { - "RunCommandTargets": { - "type": "list", - "member": { - "type": "structure", - "required": [ - "Key", - "Values" - ], - "members": { - "Key": {}, - "Values": { - "type": "list", - "member": {} - } - } - } - } - } - }, - "EcsParameters": { - "type": "structure", - "required": [ - "TaskDefinitionArn" - ], - "members": { - "TaskDefinitionArn": {}, - "TaskCount": { - "type": "integer" - } - } - } - } - } - } - } -} \ No newline at end of file diff --git a/workshops/monte-carlo-on-ec2-spot-fleet/src/web/node_modules/aws-sdk/apis/events-2015-10-07.paginators.json b/workshops/monte-carlo-on-ec2-spot-fleet/src/web/node_modules/aws-sdk/apis/events-2015-10-07.paginators.json deleted file mode 100644 index 5677bd8e..00000000 --- a/workshops/monte-carlo-on-ec2-spot-fleet/src/web/node_modules/aws-sdk/apis/events-2015-10-07.paginators.json +++ /dev/null @@ -1,4 +0,0 @@ -{ - "pagination": { - } -} diff --git a/workshops/monte-carlo-on-ec2-spot-fleet/src/web/node_modules/aws-sdk/apis/firehose-2015-08-04.examples.json b/workshops/monte-carlo-on-ec2-spot-fleet/src/web/node_modules/aws-sdk/apis/firehose-2015-08-04.examples.json deleted file mode 100644 index 0ea7e3b0..00000000 --- a/workshops/monte-carlo-on-ec2-spot-fleet/src/web/node_modules/aws-sdk/apis/firehose-2015-08-04.examples.json +++ /dev/null @@ -1,5 +0,0 @@ -{ - "version": "1.0", - "examples": { - } -} diff --git a/workshops/monte-carlo-on-ec2-spot-fleet/src/web/node_modules/aws-sdk/apis/firehose-2015-08-04.min.json b/workshops/monte-carlo-on-ec2-spot-fleet/src/web/node_modules/aws-sdk/apis/firehose-2015-08-04.min.json deleted file mode 100644 index a4909cb0..00000000 --- a/workshops/monte-carlo-on-ec2-spot-fleet/src/web/node_modules/aws-sdk/apis/firehose-2015-08-04.min.json +++ /dev/null @@ -1,768 +0,0 @@ -{ - "version": "2.0", - "metadata": { - "apiVersion": "2015-08-04", - "endpointPrefix": "firehose", - "jsonVersion": "1.1", - "protocol": "json", - "serviceAbbreviation": "Firehose", - "serviceFullName": "Amazon Kinesis Firehose", - "signatureVersion": "v4", - "targetPrefix": "Firehose_20150804", - "uid": "firehose-2015-08-04" - }, - "operations": { - "CreateDeliveryStream": { - "input": { - "type": "structure", - "required": [ - "DeliveryStreamName" - ], - "members": { - "DeliveryStreamName": {}, - "DeliveryStreamType": {}, - "KinesisStreamSourceConfiguration": { - "type": "structure", - "required": [ - "KinesisStreamARN", - "RoleARN" - ], - "members": { - "KinesisStreamARN": {}, - "RoleARN": {} - } - }, - "S3DestinationConfiguration": { - "shape": "S7", - "deprecated": true - }, - "ExtendedS3DestinationConfiguration": { - "type": "structure", - "required": [ - "RoleARN", - "BucketARN" - ], - "members": { - "RoleARN": {}, - "BucketARN": {}, - "Prefix": {}, - "BufferingHints": { - "shape": "Sa" - }, - "CompressionFormat": {}, - "EncryptionConfiguration": { - "shape": "Se" - }, - "CloudWatchLoggingOptions": { - "shape": "Si" - }, - "ProcessingConfiguration": { - "shape": "Sn" - }, - "S3BackupMode": {}, - "S3BackupConfiguration": { - "shape": "S7" - } - } - }, - "RedshiftDestinationConfiguration": { - "type": "structure", - "required": [ - "RoleARN", - "ClusterJDBCURL", - "CopyCommand", - "Username", - "Password", - "S3Configuration" - ], - "members": { - "RoleARN": {}, - "ClusterJDBCURL": {}, - "CopyCommand": { - "shape": "Sy" - }, - "Username": { - "shape": "S12" - }, - "Password": { - "shape": "S13" - }, - "RetryOptions": { - "shape": "S14" - }, - "S3Configuration": { - "shape": "S7" - }, - "ProcessingConfiguration": { - "shape": "Sn" - }, - "S3BackupMode": {}, - "S3BackupConfiguration": { - "shape": "S7" - }, - "CloudWatchLoggingOptions": { - "shape": "Si" - } - } - }, - "ElasticsearchDestinationConfiguration": { - "type": "structure", - "required": [ - "RoleARN", - "DomainARN", - "IndexName", - "TypeName", - "S3Configuration" - ], - "members": { - "RoleARN": {}, - "DomainARN": {}, - "IndexName": {}, - "TypeName": {}, - "IndexRotationPeriod": {}, - "BufferingHints": { - "shape": "S1c" - }, - "RetryOptions": { - "shape": "S1f" - }, - "S3BackupMode": {}, - "S3Configuration": { - "shape": "S7" - }, - "ProcessingConfiguration": { - "shape": "Sn" - }, - "CloudWatchLoggingOptions": { - "shape": "Si" - } - } - } - } - }, - "output": { - "type": "structure", - "members": { - "DeliveryStreamARN": {} - } - } - }, - "DeleteDeliveryStream": { - "input": { - "type": "structure", - "required": [ - "DeliveryStreamName" - ], - "members": { - "DeliveryStreamName": {} - } - }, - "output": { - "type": "structure", - "members": {} - } - }, - "DescribeDeliveryStream": { - "input": { - "type": "structure", - "required": [ - "DeliveryStreamName" - ], - "members": { - "DeliveryStreamName": {}, - "Limit": { - "type": "integer" - }, - "ExclusiveStartDestinationId": {} - } - }, - "output": { - "type": "structure", - "required": [ - "DeliveryStreamDescription" - ], - "members": { - "DeliveryStreamDescription": { - "type": "structure", - "required": [ - "DeliveryStreamName", - "DeliveryStreamARN", - "DeliveryStreamStatus", - "DeliveryStreamType", - "VersionId", - "Destinations", - "HasMoreDestinations" - ], - "members": { - "DeliveryStreamName": {}, - "DeliveryStreamARN": {}, - "DeliveryStreamStatus": {}, - "DeliveryStreamType": {}, - "VersionId": {}, - "CreateTimestamp": { - "type": "timestamp" - }, - "LastUpdateTimestamp": { - "type": "timestamp" - }, - "Source": { - "type": "structure", - "members": { - "KinesisStreamSourceDescription": { - "type": "structure", - "members": { - "KinesisStreamARN": {}, - "RoleARN": {}, - "DeliveryStartTimestamp": { - "type": "timestamp" - } - } - } - } - }, - "Destinations": { - "type": "list", - "member": { - "type": "structure", - "required": [ - "DestinationId" - ], - "members": { - "DestinationId": {}, - "S3DestinationDescription": { - "shape": "S1z" - }, - "ExtendedS3DestinationDescription": { - "type": "structure", - "required": [ - "RoleARN", - "BucketARN", - "BufferingHints", - "CompressionFormat", - "EncryptionConfiguration" - ], - "members": { - "RoleARN": {}, - "BucketARN": {}, - "Prefix": {}, - "BufferingHints": { - "shape": "Sa" - }, - "CompressionFormat": {}, - "EncryptionConfiguration": { - "shape": "Se" - }, - "CloudWatchLoggingOptions": { - "shape": "Si" - }, - "ProcessingConfiguration": { - "shape": "Sn" - }, - "S3BackupMode": {}, - "S3BackupDescription": { - "shape": "S1z" - } - } - }, - "RedshiftDestinationDescription": { - "type": "structure", - "required": [ - "RoleARN", - "ClusterJDBCURL", - "CopyCommand", - "Username", - "S3DestinationDescription" - ], - "members": { - "RoleARN": {}, - "ClusterJDBCURL": {}, - "CopyCommand": { - "shape": "Sy" - }, - "Username": { - "shape": "S12" - }, - "RetryOptions": { - "shape": "S14" - }, - "S3DestinationDescription": { - "shape": "S1z" - }, - "ProcessingConfiguration": { - "shape": "Sn" - }, - "S3BackupMode": {}, - "S3BackupDescription": { - "shape": "S1z" - }, - "CloudWatchLoggingOptions": { - "shape": "Si" - } - } - }, - "ElasticsearchDestinationDescription": { - "type": "structure", - "members": { - "RoleARN": {}, - "DomainARN": {}, - "IndexName": {}, - "TypeName": {}, - "IndexRotationPeriod": {}, - "BufferingHints": { - "shape": "S1c" - }, - "RetryOptions": { - "shape": "S1f" - }, - "S3BackupMode": {}, - "S3DestinationDescription": { - "shape": "S1z" - }, - "ProcessingConfiguration": { - "shape": "Sn" - }, - "CloudWatchLoggingOptions": { - "shape": "Si" - } - } - } - } - } - }, - "HasMoreDestinations": { - "type": "boolean" - } - } - } - } - } - }, - "GetKinesisStream": { - "input": { - "type": "structure", - "required": [ - "DeliveryStreamARN" - ], - "members": { - "DeliveryStreamARN": {} - } - }, - "output": { - "type": "structure", - "members": { - "KinesisStreamARN": {}, - "CredentialsForReadingKinesisStream": { - "type": "structure", - "required": [ - "AccessKeyId", - "SecretAccessKey", - "SessionToken", - "Expiration" - ], - "members": { - "AccessKeyId": {}, - "SecretAccessKey": {}, - "SessionToken": {}, - "Expiration": { - "type": "timestamp" - } - } - } - } - }, - "internalonly": true - }, - "ListDeliveryStreams": { - "input": { - "type": "structure", - "members": { - "Limit": { - "type": "integer" - }, - "DeliveryStreamType": {}, - "ExclusiveStartDeliveryStreamName": {} - } - }, - "output": { - "type": "structure", - "required": [ - "DeliveryStreamNames", - "HasMoreDeliveryStreams" - ], - "members": { - "DeliveryStreamNames": { - "type": "list", - "member": {} - }, - "HasMoreDeliveryStreams": { - "type": "boolean" - } - } - } - }, - "PutRecord": { - "input": { - "type": "structure", - "required": [ - "DeliveryStreamName", - "Record" - ], - "members": { - "DeliveryStreamName": {}, - "Record": { - "shape": "S2e" - } - } - }, - "output": { - "type": "structure", - "required": [ - "RecordId" - ], - "members": { - "RecordId": {} - } - } - }, - "PutRecordBatch": { - "input": { - "type": "structure", - "required": [ - "DeliveryStreamName", - "Records" - ], - "members": { - "DeliveryStreamName": {}, - "Records": { - "type": "list", - "member": { - "shape": "S2e" - } - } - } - }, - "output": { - "type": "structure", - "required": [ - "FailedPutCount", - "RequestResponses" - ], - "members": { - "FailedPutCount": { - "type": "integer" - }, - "RequestResponses": { - "type": "list", - "member": { - "type": "structure", - "members": { - "RecordId": {}, - "ErrorCode": {}, - "ErrorMessage": {} - } - } - } - } - } - }, - "UpdateDestination": { - "input": { - "type": "structure", - "required": [ - "DeliveryStreamName", - "CurrentDeliveryStreamVersionId", - "DestinationId" - ], - "members": { - "DeliveryStreamName": {}, - "CurrentDeliveryStreamVersionId": {}, - "DestinationId": {}, - "S3DestinationUpdate": { - "shape": "S2r", - "deprecated": true - }, - "ExtendedS3DestinationUpdate": { - "type": "structure", - "members": { - "RoleARN": {}, - "BucketARN": {}, - "Prefix": {}, - "BufferingHints": { - "shape": "Sa" - }, - "CompressionFormat": {}, - "EncryptionConfiguration": { - "shape": "Se" - }, - "CloudWatchLoggingOptions": { - "shape": "Si" - }, - "ProcessingConfiguration": { - "shape": "Sn" - }, - "S3BackupMode": {}, - "S3BackupUpdate": { - "shape": "S2r" - } - } - }, - "RedshiftDestinationUpdate": { - "type": "structure", - "members": { - "RoleARN": {}, - "ClusterJDBCURL": {}, - "CopyCommand": { - "shape": "Sy" - }, - "Username": { - "shape": "S12" - }, - "Password": { - "shape": "S13" - }, - "RetryOptions": { - "shape": "S14" - }, - "S3Update": { - "shape": "S2r" - }, - "ProcessingConfiguration": { - "shape": "Sn" - }, - "S3BackupMode": {}, - "S3BackupUpdate": { - "shape": "S2r" - }, - "CloudWatchLoggingOptions": { - "shape": "Si" - } - } - }, - "ElasticsearchDestinationUpdate": { - "type": "structure", - "members": { - "RoleARN": {}, - "DomainARN": {}, - "IndexName": {}, - "TypeName": {}, - "IndexRotationPeriod": {}, - "BufferingHints": { - "shape": "S1c" - }, - "RetryOptions": { - "shape": "S1f" - }, - "S3Update": { - "shape": "S2r" - }, - "ProcessingConfiguration": { - "shape": "Sn" - }, - "CloudWatchLoggingOptions": { - "shape": "Si" - } - } - } - } - }, - "output": { - "type": "structure", - "members": {} - } - } - }, - "shapes": { - "S7": { - "type": "structure", - "required": [ - "RoleARN", - "BucketARN" - ], - "members": { - "RoleARN": {}, - "BucketARN": {}, - "Prefix": {}, - "BufferingHints": { - "shape": "Sa" - }, - "CompressionFormat": {}, - "EncryptionConfiguration": { - "shape": "Se" - }, - "CloudWatchLoggingOptions": { - "shape": "Si" - } - } - }, - "Sa": { - "type": "structure", - "members": { - "SizeInMBs": { - "type": "integer" - }, - "IntervalInSeconds": { - "type": "integer" - } - } - }, - "Se": { - "type": "structure", - "members": { - "NoEncryptionConfig": {}, - "KMSEncryptionConfig": { - "type": "structure", - "required": [ - "AWSKMSKeyARN" - ], - "members": { - "AWSKMSKeyARN": {} - } - } - } - }, - "Si": { - "type": "structure", - "members": { - "Enabled": { - "type": "boolean" - }, - "LogGroupName": {}, - "LogStreamName": {} - } - }, - "Sn": { - "type": "structure", - "members": { - "Enabled": { - "type": "boolean" - }, - "Processors": { - "type": "list", - "member": { - "type": "structure", - "required": [ - "Type" - ], - "members": { - "Type": {}, - "Parameters": { - "type": "list", - "member": { - "type": "structure", - "required": [ - "ParameterName", - "ParameterValue" - ], - "members": { - "ParameterName": {}, - "ParameterValue": {} - } - } - } - } - } - } - } - }, - "Sy": { - "type": "structure", - "required": [ - "DataTableName" - ], - "members": { - "DataTableName": {}, - "DataTableColumns": {}, - "CopyOptions": {} - } - }, - "S12": { - "type": "string", - "sensitive": true - }, - "S13": { - "type": "string", - "sensitive": true - }, - "S14": { - "type": "structure", - "members": { - "DurationInSeconds": { - "type": "integer" - } - } - }, - "S1c": { - "type": "structure", - "members": { - "IntervalInSeconds": { - "type": "integer" - }, - "SizeInMBs": { - "type": "integer" - } - } - }, - "S1f": { - "type": "structure", - "members": { - "DurationInSeconds": { - "type": "integer" - } - } - }, - "S1z": { - "type": "structure", - "required": [ - "RoleARN", - "BucketARN", - "BufferingHints", - "CompressionFormat", - "EncryptionConfiguration" - ], - "members": { - "RoleARN": {}, - "BucketARN": {}, - "Prefix": {}, - "BufferingHints": { - "shape": "Sa" - }, - "CompressionFormat": {}, - "EncryptionConfiguration": { - "shape": "Se" - }, - "CloudWatchLoggingOptions": { - "shape": "Si" - } - } - }, - "S2e": { - "type": "structure", - "required": [ - "Data" - ], - "members": { - "Data": { - "type": "blob" - } - } - }, - "S2r": { - "type": "structure", - "members": { - "RoleARN": {}, - "BucketARN": {}, - "Prefix": {}, - "BufferingHints": { - "shape": "Sa" - }, - "CompressionFormat": {}, - "EncryptionConfiguration": { - "shape": "Se" - }, - "CloudWatchLoggingOptions": { - "shape": "Si" - } - } - } - } -} \ No newline at end of file diff --git a/workshops/monte-carlo-on-ec2-spot-fleet/src/web/node_modules/aws-sdk/apis/firehose-2015-08-04.paginators.json b/workshops/monte-carlo-on-ec2-spot-fleet/src/web/node_modules/aws-sdk/apis/firehose-2015-08-04.paginators.json deleted file mode 100644 index 5677bd8e..00000000 --- a/workshops/monte-carlo-on-ec2-spot-fleet/src/web/node_modules/aws-sdk/apis/firehose-2015-08-04.paginators.json +++ /dev/null @@ -1,4 +0,0 @@ -{ - "pagination": { - } -} diff --git a/workshops/monte-carlo-on-ec2-spot-fleet/src/web/node_modules/aws-sdk/apis/gamelift-2015-10-01.examples.json b/workshops/monte-carlo-on-ec2-spot-fleet/src/web/node_modules/aws-sdk/apis/gamelift-2015-10-01.examples.json deleted file mode 100644 index 0ea7e3b0..00000000 --- a/workshops/monte-carlo-on-ec2-spot-fleet/src/web/node_modules/aws-sdk/apis/gamelift-2015-10-01.examples.json +++ /dev/null @@ -1,5 +0,0 @@ -{ - "version": "1.0", - "examples": { - } -} diff --git a/workshops/monte-carlo-on-ec2-spot-fleet/src/web/node_modules/aws-sdk/apis/gamelift-2015-10-01.min.json b/workshops/monte-carlo-on-ec2-spot-fleet/src/web/node_modules/aws-sdk/apis/gamelift-2015-10-01.min.json deleted file mode 100644 index a2471b5b..00000000 --- a/workshops/monte-carlo-on-ec2-spot-fleet/src/web/node_modules/aws-sdk/apis/gamelift-2015-10-01.min.json +++ /dev/null @@ -1,2139 +0,0 @@ -{ - "version": "2.0", - "metadata": { - "apiVersion": "2015-10-01", - "endpointPrefix": "gamelift", - "jsonVersion": "1.1", - "protocol": "json", - "serviceFullName": "Amazon GameLift", - "signatureVersion": "v4", - "targetPrefix": "GameLift", - "uid": "gamelift-2015-10-01" - }, - "operations": { - "AcceptMatch": { - "input": { - "type": "structure", - "required": [ - "TicketId", - "PlayerIds", - "AcceptanceType" - ], - "members": { - "TicketId": {}, - "PlayerIds": { - "type": "list", - "member": {} - }, - "AcceptanceType": {} - } - }, - "output": { - "type": "structure", - "members": {} - } - }, - "CreateAlias": { - "input": { - "type": "structure", - "required": [ - "Name", - "RoutingStrategy" - ], - "members": { - "Name": {}, - "Description": {}, - "RoutingStrategy": { - "shape": "Sa" - } - } - }, - "output": { - "type": "structure", - "members": { - "Alias": { - "shape": "Sf" - } - } - } - }, - "CreateBuild": { - "input": { - "type": "structure", - "members": { - "Name": {}, - "Version": {}, - "StorageLocation": { - "shape": "Sk" - }, - "OperatingSystem": {} - } - }, - "output": { - "type": "structure", - "members": { - "Build": { - "shape": "So" - }, - "UploadCredentials": { - "shape": "Ss" - }, - "StorageLocation": { - "shape": "Sk" - } - } - } - }, - "CreateFleet": { - "input": { - "type": "structure", - "required": [ - "Name", - "BuildId", - "EC2InstanceType" - ], - "members": { - "Name": {}, - "Description": {}, - "BuildId": {}, - "ServerLaunchPath": {}, - "ServerLaunchParameters": {}, - "LogPaths": { - "shape": "Su" - }, - "EC2InstanceType": {}, - "EC2InboundPermissions": { - "shape": "Sw" - }, - "NewGameSessionProtectionPolicy": {}, - "RuntimeConfiguration": { - "shape": "S12" - }, - "ResourceCreationLimitPolicy": { - "shape": "S18" - }, - "MetricGroups": { - "shape": "S1a" - }, - "PeerVpcAwsAccountId": {}, - "PeerVpcId": {} - } - }, - "output": { - "type": "structure", - "members": { - "FleetAttributes": { - "shape": "S1d" - } - } - } - }, - "CreateGameSession": { - "input": { - "type": "structure", - "required": [ - "MaximumPlayerSessionCount" - ], - "members": { - "FleetId": {}, - "AliasId": {}, - "MaximumPlayerSessionCount": { - "type": "integer" - }, - "Name": {}, - "GameProperties": { - "shape": "S1g" - }, - "CreatorId": {}, - "GameSessionId": {}, - "IdempotencyToken": {}, - "GameSessionData": {} - } - }, - "output": { - "type": "structure", - "members": { - "GameSession": { - "shape": "S1n" - } - } - } - }, - "CreateGameSessionQueue": { - "input": { - "type": "structure", - "required": [ - "Name" - ], - "members": { - "Name": {}, - "TimeoutInSeconds": { - "type": "integer" - }, - "PlayerLatencyPolicies": { - "shape": "S1t" - }, - "Destinations": { - "shape": "S1v" - } - } - }, - "output": { - "type": "structure", - "members": { - "GameSessionQueue": { - "shape": "S1y" - } - } - } - }, - "CreateMatchmakingConfiguration": { - "input": { - "type": "structure", - "required": [ - "Name", - "GameSessionQueueArns", - "RequestTimeoutSeconds", - "AcceptanceRequired", - "RuleSetName" - ], - "members": { - "Name": {}, - "Description": {}, - "GameSessionQueueArns": { - "shape": "S20" - }, - "RequestTimeoutSeconds": { - "type": "integer" - }, - "AcceptanceTimeoutSeconds": { - "type": "integer" - }, - "AcceptanceRequired": { - "type": "boolean" - }, - "RuleSetName": {}, - "NotificationTarget": {}, - "AdditionalPlayerCount": { - "type": "integer" - }, - "CustomEventData": {}, - "GameProperties": { - "shape": "S1g" - }, - "GameSessionData": {} - } - }, - "output": { - "type": "structure", - "members": { - "Configuration": { - "shape": "S27" - } - } - } - }, - "CreateMatchmakingRuleSet": { - "input": { - "type": "structure", - "required": [ - "Name", - "RuleSetBody" - ], - "members": { - "Name": {}, - "RuleSetBody": {} - } - }, - "output": { - "type": "structure", - "required": [ - "RuleSet" - ], - "members": { - "RuleSet": { - "shape": "S2b" - } - } - } - }, - "CreatePlayerSession": { - "input": { - "type": "structure", - "required": [ - "GameSessionId", - "PlayerId" - ], - "members": { - "GameSessionId": {}, - "PlayerId": {}, - "PlayerData": {} - } - }, - "output": { - "type": "structure", - "members": { - "PlayerSession": { - "shape": "S2f" - } - } - } - }, - "CreatePlayerSessions": { - "input": { - "type": "structure", - "required": [ - "GameSessionId", - "PlayerIds" - ], - "members": { - "GameSessionId": {}, - "PlayerIds": { - "type": "list", - "member": {} - }, - "PlayerDataMap": { - "type": "map", - "key": {}, - "value": {} - } - } - }, - "output": { - "type": "structure", - "members": { - "PlayerSessions": { - "shape": "S2m" - } - } - } - }, - "CreateVpcPeeringAuthorization": { - "input": { - "type": "structure", - "required": [ - "GameLiftAwsAccountId", - "PeerVpcId" - ], - "members": { - "GameLiftAwsAccountId": {}, - "PeerVpcId": {} - } - }, - "output": { - "type": "structure", - "members": { - "VpcPeeringAuthorization": { - "shape": "S2p" - } - } - } - }, - "CreateVpcPeeringConnection": { - "input": { - "type": "structure", - "required": [ - "FleetId", - "PeerVpcAwsAccountId", - "PeerVpcId" - ], - "members": { - "FleetId": {}, - "PeerVpcAwsAccountId": {}, - "PeerVpcId": {} - } - }, - "output": { - "type": "structure", - "members": {} - } - }, - "DeleteAlias": { - "input": { - "type": "structure", - "required": [ - "AliasId" - ], - "members": { - "AliasId": {} - } - } - }, - "DeleteBuild": { - "input": { - "type": "structure", - "required": [ - "BuildId" - ], - "members": { - "BuildId": {} - } - } - }, - "DeleteFleet": { - "input": { - "type": "structure", - "required": [ - "FleetId" - ], - "members": { - "FleetId": {} - } - } - }, - "DeleteGameSessionQueue": { - "input": { - "type": "structure", - "required": [ - "Name" - ], - "members": { - "Name": {} - } - }, - "output": { - "type": "structure", - "members": {} - } - }, - "DeleteMatchmakingConfiguration": { - "input": { - "type": "structure", - "required": [ - "Name" - ], - "members": { - "Name": {} - } - }, - "output": { - "type": "structure", - "members": {} - } - }, - "DeleteScalingPolicy": { - "input": { - "type": "structure", - "required": [ - "Name", - "FleetId" - ], - "members": { - "Name": {}, - "FleetId": {} - } - } - }, - "DeleteVpcPeeringAuthorization": { - "input": { - "type": "structure", - "required": [ - "GameLiftAwsAccountId", - "PeerVpcId" - ], - "members": { - "GameLiftAwsAccountId": {}, - "PeerVpcId": {} - } - }, - "output": { - "type": "structure", - "members": {} - } - }, - "DeleteVpcPeeringConnection": { - "input": { - "type": "structure", - "required": [ - "FleetId", - "VpcPeeringConnectionId" - ], - "members": { - "FleetId": {}, - "VpcPeeringConnectionId": {} - } - }, - "output": { - "type": "structure", - "members": {} - } - }, - "DescribeAlias": { - "input": { - "type": "structure", - "required": [ - "AliasId" - ], - "members": { - "AliasId": {} - } - }, - "output": { - "type": "structure", - "members": { - "Alias": { - "shape": "Sf" - } - } - } - }, - "DescribeBuild": { - "input": { - "type": "structure", - "required": [ - "BuildId" - ], - "members": { - "BuildId": {} - } - }, - "output": { - "type": "structure", - "members": { - "Build": { - "shape": "So" - } - } - } - }, - "DescribeEC2InstanceLimits": { - "input": { - "type": "structure", - "members": { - "EC2InstanceType": {} - } - }, - "output": { - "type": "structure", - "members": { - "EC2InstanceLimits": { - "type": "list", - "member": { - "type": "structure", - "members": { - "EC2InstanceType": {}, - "CurrentInstances": { - "type": "integer" - }, - "InstanceLimit": { - "type": "integer" - } - } - } - } - } - } - }, - "DescribeFleetAttributes": { - "input": { - "type": "structure", - "members": { - "FleetIds": { - "shape": "S3d" - }, - "Limit": { - "type": "integer" - }, - "NextToken": {} - } - }, - "output": { - "type": "structure", - "members": { - "FleetAttributes": { - "type": "list", - "member": { - "shape": "S1d" - } - }, - "NextToken": {} - } - } - }, - "DescribeFleetCapacity": { - "input": { - "type": "structure", - "members": { - "FleetIds": { - "shape": "S3d" - }, - "Limit": { - "type": "integer" - }, - "NextToken": {} - } - }, - "output": { - "type": "structure", - "members": { - "FleetCapacity": { - "type": "list", - "member": { - "type": "structure", - "members": { - "FleetId": {}, - "InstanceType": {}, - "InstanceCounts": { - "type": "structure", - "members": { - "DESIRED": { - "type": "integer" - }, - "MINIMUM": { - "type": "integer" - }, - "MAXIMUM": { - "type": "integer" - }, - "PENDING": { - "type": "integer" - }, - "ACTIVE": { - "type": "integer" - }, - "IDLE": { - "type": "integer" - }, - "TERMINATING": { - "type": "integer" - } - } - } - } - } - }, - "NextToken": {} - } - } - }, - "DescribeFleetEvents": { - "input": { - "type": "structure", - "required": [ - "FleetId" - ], - "members": { - "FleetId": {}, - "StartTime": { - "type": "timestamp" - }, - "EndTime": { - "type": "timestamp" - }, - "Limit": { - "type": "integer" - }, - "NextToken": {} - } - }, - "output": { - "type": "structure", - "members": { - "Events": { - "type": "list", - "member": { - "type": "structure", - "members": { - "EventId": {}, - "ResourceId": {}, - "EventCode": {}, - "Message": {}, - "EventTime": { - "type": "timestamp" - }, - "PreSignedLogUrl": {} - } - } - }, - "NextToken": {} - } - } - }, - "DescribeFleetPortSettings": { - "input": { - "type": "structure", - "required": [ - "FleetId" - ], - "members": { - "FleetId": {} - } - }, - "output": { - "type": "structure", - "members": { - "InboundPermissions": { - "shape": "Sw" - } - } - } - }, - "DescribeFleetUtilization": { - "input": { - "type": "structure", - "members": { - "FleetIds": { - "shape": "S3d" - }, - "Limit": { - "type": "integer" - }, - "NextToken": {} - } - }, - "output": { - "type": "structure", - "members": { - "FleetUtilization": { - "type": "list", - "member": { - "type": "structure", - "members": { - "FleetId": {}, - "ActiveServerProcessCount": { - "type": "integer" - }, - "ActiveGameSessionCount": { - "type": "integer" - }, - "CurrentPlayerSessionCount": { - "type": "integer" - }, - "MaximumPlayerSessionCount": { - "type": "integer" - } - } - } - }, - "NextToken": {} - } - } - }, - "DescribeGameSessionDetails": { - "input": { - "type": "structure", - "members": { - "FleetId": {}, - "GameSessionId": {}, - "AliasId": {}, - "StatusFilter": {}, - "Limit": { - "type": "integer" - }, - "NextToken": {} - } - }, - "output": { - "type": "structure", - "members": { - "GameSessionDetails": { - "type": "list", - "member": { - "type": "structure", - "members": { - "GameSession": { - "shape": "S1n" - }, - "ProtectionPolicy": {} - } - } - }, - "NextToken": {} - } - } - }, - "DescribeGameSessionPlacement": { - "input": { - "type": "structure", - "required": [ - "PlacementId" - ], - "members": { - "PlacementId": {} - } - }, - "output": { - "type": "structure", - "members": { - "GameSessionPlacement": { - "shape": "S42" - } - } - } - }, - "DescribeGameSessionQueues": { - "input": { - "type": "structure", - "members": { - "Names": { - "type": "list", - "member": {} - }, - "Limit": { - "type": "integer" - }, - "NextToken": {} - } - }, - "output": { - "type": "structure", - "members": { - "GameSessionQueues": { - "type": "list", - "member": { - "shape": "S1y" - } - }, - "NextToken": {} - } - } - }, - "DescribeGameSessions": { - "input": { - "type": "structure", - "members": { - "FleetId": {}, - "GameSessionId": {}, - "AliasId": {}, - "StatusFilter": {}, - "Limit": { - "type": "integer" - }, - "NextToken": {} - } - }, - "output": { - "type": "structure", - "members": { - "GameSessions": { - "shape": "S4f" - }, - "NextToken": {} - } - } - }, - "DescribeInstances": { - "input": { - "type": "structure", - "required": [ - "FleetId" - ], - "members": { - "FleetId": {}, - "InstanceId": {}, - "Limit": { - "type": "integer" - }, - "NextToken": {} - } - }, - "output": { - "type": "structure", - "members": { - "Instances": { - "type": "list", - "member": { - "type": "structure", - "members": { - "FleetId": {}, - "InstanceId": {}, - "IpAddress": {}, - "OperatingSystem": {}, - "Type": {}, - "Status": {}, - "CreationTime": { - "type": "timestamp" - } - } - } - }, - "NextToken": {} - } - } - }, - "DescribeMatchmaking": { - "input": { - "type": "structure", - "required": [ - "TicketIds" - ], - "members": { - "TicketIds": { - "shape": "S4n" - } - } - }, - "output": { - "type": "structure", - "members": { - "TicketList": { - "type": "list", - "member": { - "shape": "S4q" - } - } - } - } - }, - "DescribeMatchmakingConfigurations": { - "input": { - "type": "structure", - "members": { - "Names": { - "shape": "S4n" - }, - "RuleSetName": {}, - "Limit": { - "type": "integer" - }, - "NextToken": {} - } - }, - "output": { - "type": "structure", - "members": { - "Configurations": { - "type": "list", - "member": { - "shape": "S27" - } - }, - "NextToken": {} - } - } - }, - "DescribeMatchmakingRuleSets": { - "input": { - "type": "structure", - "members": { - "Names": { - "type": "list", - "member": {} - }, - "Limit": { - "type": "integer" - }, - "NextToken": {} - } - }, - "output": { - "type": "structure", - "required": [ - "RuleSets" - ], - "members": { - "RuleSets": { - "type": "list", - "member": { - "shape": "S2b" - } - }, - "NextToken": {} - } - } - }, - "DescribePlayerSessions": { - "input": { - "type": "structure", - "members": { - "GameSessionId": {}, - "PlayerId": {}, - "PlayerSessionId": {}, - "PlayerSessionStatusFilter": {}, - "Limit": { - "type": "integer" - }, - "NextToken": {} - } - }, - "output": { - "type": "structure", - "members": { - "PlayerSessions": { - "shape": "S2m" - }, - "NextToken": {} - } - } - }, - "DescribeRuntimeConfiguration": { - "input": { - "type": "structure", - "required": [ - "FleetId" - ], - "members": { - "FleetId": {} - } - }, - "output": { - "type": "structure", - "members": { - "RuntimeConfiguration": { - "shape": "S12" - } - } - } - }, - "DescribeScalingPolicies": { - "input": { - "type": "structure", - "required": [ - "FleetId" - ], - "members": { - "FleetId": {}, - "StatusFilter": {}, - "Limit": { - "type": "integer" - }, - "NextToken": {} - } - }, - "output": { - "type": "structure", - "members": { - "ScalingPolicies": { - "type": "list", - "member": { - "type": "structure", - "members": { - "FleetId": {}, - "Name": {}, - "Status": {}, - "ScalingAdjustment": { - "type": "integer" - }, - "ScalingAdjustmentType": {}, - "ComparisonOperator": {}, - "Threshold": { - "type": "double" - }, - "EvaluationPeriods": { - "type": "integer" - }, - "MetricName": {} - } - } - }, - "NextToken": {} - } - } - }, - "DescribeVpcPeeringAuthorizations": { - "input": { - "type": "structure", - "members": {} - }, - "output": { - "type": "structure", - "members": { - "VpcPeeringAuthorizations": { - "type": "list", - "member": { - "shape": "S2p" - } - } - } - } - }, - "DescribeVpcPeeringConnections": { - "input": { - "type": "structure", - "members": { - "FleetId": {} - } - }, - "output": { - "type": "structure", - "members": { - "VpcPeeringConnections": { - "type": "list", - "member": { - "type": "structure", - "members": { - "FleetId": {}, - "IpV4CidrBlock": {}, - "VpcPeeringConnectionId": {}, - "Status": { - "type": "structure", - "members": { - "Code": {}, - "Message": {} - } - }, - "PeerVpcId": {}, - "GameLiftVpcId": {} - } - } - } - } - } - }, - "GetGameSessionLogUrl": { - "input": { - "type": "structure", - "required": [ - "GameSessionId" - ], - "members": { - "GameSessionId": {} - } - }, - "output": { - "type": "structure", - "members": { - "PreSignedUrl": {} - } - } - }, - "GetInstanceAccess": { - "input": { - "type": "structure", - "required": [ - "FleetId", - "InstanceId" - ], - "members": { - "FleetId": {}, - "InstanceId": {} - } - }, - "output": { - "type": "structure", - "members": { - "InstanceAccess": { - "type": "structure", - "members": { - "FleetId": {}, - "InstanceId": {}, - "IpAddress": {}, - "OperatingSystem": {}, - "Credentials": { - "type": "structure", - "members": { - "UserName": {}, - "Secret": {} - }, - "sensitive": true - } - } - } - } - } - }, - "ListAliases": { - "input": { - "type": "structure", - "members": { - "RoutingStrategyType": {}, - "Name": {}, - "Limit": { - "type": "integer" - }, - "NextToken": {} - } - }, - "output": { - "type": "structure", - "members": { - "Aliases": { - "type": "list", - "member": { - "shape": "Sf" - } - }, - "NextToken": {} - } - } - }, - "ListBuilds": { - "input": { - "type": "structure", - "members": { - "Status": {}, - "Limit": { - "type": "integer" - }, - "NextToken": {} - } - }, - "output": { - "type": "structure", - "members": { - "Builds": { - "type": "list", - "member": { - "shape": "So" - } - }, - "NextToken": {} - } - } - }, - "ListFleets": { - "input": { - "type": "structure", - "members": { - "BuildId": {}, - "Limit": { - "type": "integer" - }, - "NextToken": {} - } - }, - "output": { - "type": "structure", - "members": { - "FleetIds": { - "shape": "S3d" - }, - "NextToken": {} - } - } - }, - "PutScalingPolicy": { - "input": { - "type": "structure", - "required": [ - "Name", - "FleetId", - "ScalingAdjustment", - "ScalingAdjustmentType", - "Threshold", - "ComparisonOperator", - "EvaluationPeriods", - "MetricName" - ], - "members": { - "Name": {}, - "FleetId": {}, - "ScalingAdjustment": { - "type": "integer" - }, - "ScalingAdjustmentType": {}, - "Threshold": { - "type": "double" - }, - "ComparisonOperator": {}, - "EvaluationPeriods": { - "type": "integer" - }, - "MetricName": {} - } - }, - "output": { - "type": "structure", - "members": { - "Name": {} - } - } - }, - "RequestUploadCredentials": { - "input": { - "type": "structure", - "required": [ - "BuildId" - ], - "members": { - "BuildId": {} - } - }, - "output": { - "type": "structure", - "members": { - "UploadCredentials": { - "shape": "Ss" - }, - "StorageLocation": { - "shape": "Sk" - } - } - } - }, - "ResolveAlias": { - "input": { - "type": "structure", - "required": [ - "AliasId" - ], - "members": { - "AliasId": {} - } - }, - "output": { - "type": "structure", - "members": { - "FleetId": {} - } - } - }, - "SearchGameSessions": { - "input": { - "type": "structure", - "members": { - "FleetId": {}, - "AliasId": {}, - "FilterExpression": {}, - "SortExpression": {}, - "Limit": { - "type": "integer" - }, - "NextToken": {} - } - }, - "output": { - "type": "structure", - "members": { - "GameSessions": { - "shape": "S4f" - }, - "NextToken": {} - } - } - }, - "StartGameSessionPlacement": { - "input": { - "type": "structure", - "required": [ - "PlacementId", - "GameSessionQueueName", - "MaximumPlayerSessionCount" - ], - "members": { - "PlacementId": {}, - "GameSessionQueueName": {}, - "GameProperties": { - "shape": "S1g" - }, - "MaximumPlayerSessionCount": { - "type": "integer" - }, - "GameSessionName": {}, - "PlayerLatencies": { - "shape": "S44" - }, - "DesiredPlayerSessions": { - "type": "list", - "member": { - "type": "structure", - "members": { - "PlayerId": {}, - "PlayerData": {} - } - } - }, - "GameSessionData": {} - } - }, - "output": { - "type": "structure", - "members": { - "GameSessionPlacement": { - "shape": "S42" - } - } - } - }, - "StartMatchmaking": { - "input": { - "type": "structure", - "required": [ - "ConfigurationName", - "Players" - ], - "members": { - "TicketId": {}, - "ConfigurationName": {}, - "Players": { - "shape": "S4t" - } - } - }, - "output": { - "type": "structure", - "members": { - "MatchmakingTicket": { - "shape": "S4q" - } - } - } - }, - "StopGameSessionPlacement": { - "input": { - "type": "structure", - "required": [ - "PlacementId" - ], - "members": { - "PlacementId": {} - } - }, - "output": { - "type": "structure", - "members": { - "GameSessionPlacement": { - "shape": "S42" - } - } - } - }, - "StopMatchmaking": { - "input": { - "type": "structure", - "required": [ - "TicketId" - ], - "members": { - "TicketId": {} - } - }, - "output": { - "type": "structure", - "members": {} - } - }, - "UpdateAlias": { - "input": { - "type": "structure", - "required": [ - "AliasId" - ], - "members": { - "AliasId": {}, - "Name": {}, - "Description": {}, - "RoutingStrategy": { - "shape": "Sa" - } - } - }, - "output": { - "type": "structure", - "members": { - "Alias": { - "shape": "Sf" - } - } - } - }, - "UpdateBuild": { - "input": { - "type": "structure", - "required": [ - "BuildId" - ], - "members": { - "BuildId": {}, - "Name": {}, - "Version": {} - } - }, - "output": { - "type": "structure", - "members": { - "Build": { - "shape": "So" - } - } - } - }, - "UpdateFleetAttributes": { - "input": { - "type": "structure", - "required": [ - "FleetId" - ], - "members": { - "FleetId": {}, - "Name": {}, - "Description": {}, - "NewGameSessionProtectionPolicy": {}, - "ResourceCreationLimitPolicy": { - "shape": "S18" - }, - "MetricGroups": { - "shape": "S1a" - } - } - }, - "output": { - "type": "structure", - "members": { - "FleetId": {} - } - } - }, - "UpdateFleetCapacity": { - "input": { - "type": "structure", - "required": [ - "FleetId" - ], - "members": { - "FleetId": {}, - "DesiredInstances": { - "type": "integer" - }, - "MinSize": { - "type": "integer" - }, - "MaxSize": { - "type": "integer" - } - } - }, - "output": { - "type": "structure", - "members": { - "FleetId": {} - } - } - }, - "UpdateFleetPortSettings": { - "input": { - "type": "structure", - "required": [ - "FleetId" - ], - "members": { - "FleetId": {}, - "InboundPermissionAuthorizations": { - "shape": "Sw" - }, - "InboundPermissionRevocations": { - "shape": "Sw" - } - } - }, - "output": { - "type": "structure", - "members": { - "FleetId": {} - } - } - }, - "UpdateGameSession": { - "input": { - "type": "structure", - "required": [ - "GameSessionId" - ], - "members": { - "GameSessionId": {}, - "MaximumPlayerSessionCount": { - "type": "integer" - }, - "Name": {}, - "PlayerSessionCreationPolicy": {}, - "ProtectionPolicy": {} - } - }, - "output": { - "type": "structure", - "members": { - "GameSession": { - "shape": "S1n" - } - } - } - }, - "UpdateGameSessionQueue": { - "input": { - "type": "structure", - "required": [ - "Name" - ], - "members": { - "Name": {}, - "TimeoutInSeconds": { - "type": "integer" - }, - "PlayerLatencyPolicies": { - "shape": "S1t" - }, - "Destinations": { - "shape": "S1v" - } - } - }, - "output": { - "type": "structure", - "members": { - "GameSessionQueue": { - "shape": "S1y" - } - } - } - }, - "UpdateMatchmakingConfiguration": { - "input": { - "type": "structure", - "required": [ - "Name" - ], - "members": { - "Name": {}, - "Description": {}, - "GameSessionQueueArns": { - "shape": "S20" - }, - "RequestTimeoutSeconds": { - "type": "integer" - }, - "AcceptanceTimeoutSeconds": { - "type": "integer" - }, - "AcceptanceRequired": { - "type": "boolean" - }, - "RuleSetName": {}, - "NotificationTarget": {}, - "AdditionalPlayerCount": { - "type": "integer" - }, - "CustomEventData": {}, - "GameProperties": { - "shape": "S1g" - }, - "GameSessionData": {} - } - }, - "output": { - "type": "structure", - "members": { - "Configuration": { - "shape": "S27" - } - } - } - }, - "UpdateRuntimeConfiguration": { - "input": { - "type": "structure", - "required": [ - "FleetId", - "RuntimeConfiguration" - ], - "members": { - "FleetId": {}, - "RuntimeConfiguration": { - "shape": "S12" - } - } - }, - "output": { - "type": "structure", - "members": { - "RuntimeConfiguration": { - "shape": "S12" - } - } - } - }, - "ValidateMatchmakingRuleSet": { - "input": { - "type": "structure", - "required": [ - "RuleSetBody" - ], - "members": { - "RuleSetBody": {} - } - }, - "output": { - "type": "structure", - "members": { - "Valid": { - "type": "boolean" - } - } - } - } - }, - "shapes": { - "Sa": { - "type": "structure", - "members": { - "Type": {}, - "FleetId": {}, - "Message": {} - } - }, - "Sf": { - "type": "structure", - "members": { - "AliasId": {}, - "Name": {}, - "AliasArn": {}, - "Description": {}, - "RoutingStrategy": { - "shape": "Sa" - }, - "CreationTime": { - "type": "timestamp" - }, - "LastUpdatedTime": { - "type": "timestamp" - } - } - }, - "Sk": { - "type": "structure", - "members": { - "Bucket": {}, - "Key": {}, - "RoleArn": {} - } - }, - "So": { - "type": "structure", - "members": { - "BuildId": {}, - "Name": {}, - "Version": {}, - "Status": {}, - "SizeOnDisk": { - "type": "long" - }, - "OperatingSystem": {}, - "CreationTime": { - "type": "timestamp" - } - } - }, - "Ss": { - "type": "structure", - "members": { - "AccessKeyId": {}, - "SecretAccessKey": {}, - "SessionToken": {} - }, - "sensitive": true - }, - "Su": { - "type": "list", - "member": {} - }, - "Sw": { - "type": "list", - "member": { - "type": "structure", - "required": [ - "FromPort", - "ToPort", - "IpRange", - "Protocol" - ], - "members": { - "FromPort": { - "type": "integer" - }, - "ToPort": { - "type": "integer" - }, - "IpRange": {}, - "Protocol": {} - } - } - }, - "S12": { - "type": "structure", - "members": { - "ServerProcesses": { - "type": "list", - "member": { - "type": "structure", - "required": [ - "LaunchPath", - "ConcurrentExecutions" - ], - "members": { - "LaunchPath": {}, - "Parameters": {}, - "ConcurrentExecutions": { - "type": "integer" - } - } - } - }, - "MaxConcurrentGameSessionActivations": { - "type": "integer" - }, - "GameSessionActivationTimeoutSeconds": { - "type": "integer" - } - } - }, - "S18": { - "type": "structure", - "members": { - "NewGameSessionsPerCreator": { - "type": "integer" - }, - "PolicyPeriodInMinutes": { - "type": "integer" - } - } - }, - "S1a": { - "type": "list", - "member": {} - }, - "S1d": { - "type": "structure", - "members": { - "FleetId": {}, - "FleetArn": {}, - "Description": {}, - "Name": {}, - "CreationTime": { - "type": "timestamp" - }, - "TerminationTime": { - "type": "timestamp" - }, - "Status": {}, - "BuildId": {}, - "ServerLaunchPath": {}, - "ServerLaunchParameters": {}, - "LogPaths": { - "shape": "Su" - }, - "NewGameSessionProtectionPolicy": {}, - "OperatingSystem": {}, - "ResourceCreationLimitPolicy": { - "shape": "S18" - }, - "MetricGroups": { - "shape": "S1a" - } - } - }, - "S1g": { - "type": "list", - "member": { - "type": "structure", - "required": [ - "Key", - "Value" - ], - "members": { - "Key": {}, - "Value": {} - } - } - }, - "S1n": { - "type": "structure", - "members": { - "GameSessionId": {}, - "Name": {}, - "FleetId": {}, - "CreationTime": { - "type": "timestamp" - }, - "TerminationTime": { - "type": "timestamp" - }, - "CurrentPlayerSessionCount": { - "type": "integer" - }, - "MaximumPlayerSessionCount": { - "type": "integer" - }, - "Status": {}, - "GameProperties": { - "shape": "S1g" - }, - "IpAddress": {}, - "Port": { - "type": "integer" - }, - "PlayerSessionCreationPolicy": {}, - "CreatorId": {}, - "GameSessionData": {} - } - }, - "S1t": { - "type": "list", - "member": { - "type": "structure", - "members": { - "MaximumIndividualPlayerLatencyMilliseconds": { - "type": "integer" - }, - "PolicyDurationSeconds": { - "type": "integer" - } - } - } - }, - "S1v": { - "type": "list", - "member": { - "type": "structure", - "members": { - "DestinationArn": {} - } - } - }, - "S1y": { - "type": "structure", - "members": { - "Name": {}, - "GameSessionQueueArn": {}, - "TimeoutInSeconds": { - "type": "integer" - }, - "PlayerLatencyPolicies": { - "shape": "S1t" - }, - "Destinations": { - "shape": "S1v" - } - } - }, - "S20": { - "type": "list", - "member": {} - }, - "S27": { - "type": "structure", - "members": { - "Name": {}, - "Description": {}, - "GameSessionQueueArns": { - "shape": "S20" - }, - "RequestTimeoutSeconds": { - "type": "integer" - }, - "AcceptanceTimeoutSeconds": { - "type": "integer" - }, - "AcceptanceRequired": { - "type": "boolean" - }, - "RuleSetName": {}, - "NotificationTarget": {}, - "AdditionalPlayerCount": { - "type": "integer" - }, - "CustomEventData": {}, - "CreationTime": { - "type": "timestamp" - }, - "GameProperties": { - "shape": "S1g" - }, - "GameSessionData": {} - } - }, - "S2b": { - "type": "structure", - "required": [ - "RuleSetBody" - ], - "members": { - "RuleSetName": {}, - "RuleSetBody": {}, - "CreationTime": { - "type": "timestamp" - } - } - }, - "S2f": { - "type": "structure", - "members": { - "PlayerSessionId": {}, - "PlayerId": {}, - "GameSessionId": {}, - "FleetId": {}, - "CreationTime": { - "type": "timestamp" - }, - "TerminationTime": { - "type": "timestamp" - }, - "Status": {}, - "IpAddress": {}, - "Port": { - "type": "integer" - }, - "PlayerData": {} - } - }, - "S2m": { - "type": "list", - "member": { - "shape": "S2f" - } - }, - "S2p": { - "type": "structure", - "members": { - "GameLiftAwsAccountId": {}, - "PeerVpcAwsAccountId": {}, - "PeerVpcId": {}, - "CreationTime": { - "type": "timestamp" - }, - "ExpirationTime": { - "type": "timestamp" - } - } - }, - "S3d": { - "type": "list", - "member": {} - }, - "S42": { - "type": "structure", - "members": { - "PlacementId": {}, - "GameSessionQueueName": {}, - "Status": {}, - "GameProperties": { - "shape": "S1g" - }, - "MaximumPlayerSessionCount": { - "type": "integer" - }, - "GameSessionName": {}, - "GameSessionId": {}, - "GameSessionArn": {}, - "GameSessionRegion": {}, - "PlayerLatencies": { - "shape": "S44" - }, - "StartTime": { - "type": "timestamp" - }, - "EndTime": { - "type": "timestamp" - }, - "IpAddress": {}, - "Port": { - "type": "integer" - }, - "PlacedPlayerSessions": { - "type": "list", - "member": { - "type": "structure", - "members": { - "PlayerId": {}, - "PlayerSessionId": {} - } - } - }, - "GameSessionData": {} - } - }, - "S44": { - "type": "list", - "member": { - "type": "structure", - "members": { - "PlayerId": {}, - "RegionIdentifier": {}, - "LatencyInMilliseconds": { - "type": "float" - } - } - } - }, - "S4f": { - "type": "list", - "member": { - "shape": "S1n" - } - }, - "S4n": { - "type": "list", - "member": {} - }, - "S4q": { - "type": "structure", - "members": { - "TicketId": {}, - "ConfigurationName": {}, - "Status": {}, - "StatusReason": {}, - "StatusMessage": {}, - "StartTime": { - "type": "timestamp" - }, - "EndTime": { - "type": "timestamp" - }, - "Players": { - "shape": "S4t" - }, - "GameSessionConnectionInfo": { - "type": "structure", - "members": { - "GameSessionArn": {}, - "IpAddress": {}, - "Port": { - "type": "integer" - }, - "MatchedPlayerSessions": { - "type": "list", - "member": { - "type": "structure", - "members": { - "PlayerId": {}, - "PlayerSessionId": {} - } - } - } - } - }, - "EstimatedWaitTime": { - "type": "integer" - } - } - }, - "S4t": { - "type": "list", - "member": { - "type": "structure", - "members": { - "PlayerId": {}, - "PlayerAttributes": { - "type": "map", - "key": {}, - "value": { - "type": "structure", - "members": { - "S": {}, - "N": { - "type": "double" - }, - "SL": { - "shape": "Su" - }, - "SDM": { - "type": "map", - "key": {}, - "value": { - "type": "double" - } - } - } - } - }, - "Team": {}, - "LatencyInMs": { - "type": "map", - "key": {}, - "value": { - "type": "integer" - } - } - } - } - } - } -} \ No newline at end of file diff --git a/workshops/monte-carlo-on-ec2-spot-fleet/src/web/node_modules/aws-sdk/apis/gamelift-2015-10-01.paginators.json b/workshops/monte-carlo-on-ec2-spot-fleet/src/web/node_modules/aws-sdk/apis/gamelift-2015-10-01.paginators.json deleted file mode 100644 index 5677bd8e..00000000 --- a/workshops/monte-carlo-on-ec2-spot-fleet/src/web/node_modules/aws-sdk/apis/gamelift-2015-10-01.paginators.json +++ /dev/null @@ -1,4 +0,0 @@ -{ - "pagination": { - } -} diff --git a/workshops/monte-carlo-on-ec2-spot-fleet/src/web/node_modules/aws-sdk/apis/glacier-2012-06-01.examples.json b/workshops/monte-carlo-on-ec2-spot-fleet/src/web/node_modules/aws-sdk/apis/glacier-2012-06-01.examples.json deleted file mode 100644 index 7ecea259..00000000 --- a/workshops/monte-carlo-on-ec2-spot-fleet/src/web/node_modules/aws-sdk/apis/glacier-2012-06-01.examples.json +++ /dev/null @@ -1,806 +0,0 @@ -{ - "version": "1.0", - "examples": { - "AbortMultipartUpload": [ - { - "input": { - "accountId": "-", - "uploadId": "19gaRezEXAMPLES6Ry5YYdqthHOC_kGRCT03L9yetr220UmPtBYKk-OssZtLqyFu7sY1_lR7vgFuJV6NtcV5zpsJ", - "vaultName": "my-vault" - }, - "comments": { - "input": { - }, - "output": { - } - }, - "description": "The example deletes an in-progress multipart upload to a vault named my-vault:", - "id": "f3d907f6-e71c-420c-8f71-502346a2c48a", - "title": "To abort a multipart upload identified by the upload ID" - } - ], - "AbortVaultLock": [ - { - "input": { - "accountId": "-", - "vaultName": "examplevault" - }, - "comments": { - "input": { - }, - "output": { - } - }, - "description": "The example aborts the vault locking process if the vault lock is not in the Locked state for the vault named examplevault.", - "id": "to-abort-a-vault-lock-1481839357947", - "title": "To abort a vault lock" - } - ], - "AddTagsToVault": [ - { - "input": { - "Tags": { - "examplekey1": "examplevalue1", - "examplekey2": "examplevalue2" - }, - "accountId": "-", - "vaultName": "my-vault" - }, - "comments": { - "input": { - }, - "output": { - } - }, - "description": "The example adds two tags to a my-vault.", - "id": "add-tags-to-vault-post-tags-add-1481663457694", - "title": "To add tags to a vault" - } - ], - "CompleteMultipartUpload": [ - { - "input": { - "accountId": "-", - "archiveSize": "3145728", - "checksum": "9628195fcdbcbbe76cdde456d4646fa7de5f219fb39823836d81f0cc0e18aa67", - "uploadId": "19gaRezEXAMPLES6Ry5YYdqthHOC_kGRCT03L9yetr220UmPtBYKk-OssZtLqyFu7sY1_lR7vgFuJV6NtcV5zpsJ", - "vaultName": "my-vault" - }, - "output": { - "archiveId": "NkbByEejwEggmBz2fTHgJrg0XBoDfjP4q6iu87-TjhqG6eGoOY9Z8i1_AUyUsuhPAdTqLHy8pTl5nfCFJmDl2yEZONi5L26Omw12vcs01MNGntHEQL8MBfGlqrEXAMPLEArchiveId", - "checksum": "9628195fcdbcbbe76cdde456d4646fa7de5f219fb39823836d81f0cc0e18aa67", - "location": "/111122223333/vaults/my-vault/archives/NkbByEejwEggmBz2fTHgJrg0XBoDfjP4q6iu87-TjhqG6eGoOY9Z8i1_AUyUsuhPAdTqLHy8pTl5nfCFJmDl2yEZONi5L26Omw12vcs01MNGntHEQL8MBfGlqrEXAMPLEArchiveId" - }, - "comments": { - "input": { - }, - "output": { - } - }, - "description": "The example completes a multipart upload for a 3 MiB archive.", - "id": "272aa0b8-e44c-4a64-add2-ad905a37984d", - "title": "To complete a multipart upload" - } - ], - "CompleteVaultLock": [ - { - "input": { - "accountId": "-", - "lockId": "AE863rKkWZU53SLW5be4DUcW", - "vaultName": "example-vault" - }, - "comments": { - "input": { - }, - "output": { - } - }, - "description": "The example completes the vault locking process by transitioning the vault lock from the InProgress state to the Locked state.", - "id": "to-complete-a-vault-lock-1481839721312", - "title": "To complete a vault lock" - } - ], - "CreateVault": [ - { - "input": { - "accountId": "-", - "vaultName": "my-vault" - }, - "output": { - "location": "/111122223333/vaults/my-vault" - }, - "comments": { - "input": { - }, - "output": { - } - }, - "description": "The following example creates a new vault named my-vault.", - "id": "1dc0313d-ace1-4e6c-9d13-1ec7813b14b7", - "title": "To create a new vault" - } - ], - "DeleteArchive": [ - { - "input": { - "accountId": "-", - "archiveId": "NkbByEejwEggmBz2fTHgJrg0XBoDfjP4q6iu87-TjhqG6eGoOY9Z8i1_AUyUsuhPAdTqLHy8pTl5nfCFJmDl2yEZONi5L26Omw12vcs01MNGntHEQL8MBfGlqrEXAMPLEArchiveId", - "vaultName": "examplevault" - }, - "comments": { - "input": { - }, - "output": { - } - }, - "description": "The example deletes the archive specified by the archive ID.", - "id": "delete-archive-1481667809463", - "title": "To delete an archive" - } - ], - "DeleteVault": [ - { - "input": { - "accountId": "-", - "vaultName": "my-vault" - }, - "comments": { - "input": { - }, - "output": { - } - }, - "description": "The example deletes a vault named my-vault:", - "id": "7f7f000b-4bdb-40d2-91e6-7c902f60f60f", - "title": "To delete a vault" - } - ], - "DeleteVaultAccessPolicy": [ - { - "input": { - "accountId": "-", - "vaultName": "examplevault" - }, - "comments": { - "input": { - }, - "output": { - } - }, - "description": "The example deletes the access policy associated with the vault named examplevault.", - "id": "to-delete-the-vault-access-policy-1481840424677", - "title": "To delete the vault access policy" - } - ], - "DeleteVaultNotifications": [ - { - "input": { - "accountId": "-", - "vaultName": "examplevault" - }, - "comments": { - "input": { - }, - "output": { - } - }, - "description": "The example deletes the notification configuration set for the vault named examplevault.", - "id": "to-delete-the-notification-configuration-set-for-a-vault-1481840646090", - "title": "To delete the notification configuration set for a vault" - } - ], - "DescribeJob": [ - { - "input": { - "accountId": "-", - "jobId": "zbxcm3Z_3z5UkoroF7SuZKrxgGoDc3RloGduS7Eg-RO47Yc6FxsdGBgf_Q2DK5Ejh18CnTS5XW4_XqlNHS61dsO4Cn", - "vaultName": "my-vault" - }, - "output": { - "Action": "InventoryRetrieval", - "Completed": false, - "CreationDate": "2015-07-17T20:23:41.616Z", - "InventoryRetrievalParameters": { - "Format": "JSON" - }, - "JobId": "zbxcm3Z_3z5UkoroF7SuZKrxgGoDc3RloGduS7Eg-RO47Yc6FxsdGBgf_Q2DK5Ejh18CnTS5XW4_XqlNHS61dsO4CnMW", - "StatusCode": "InProgress", - "VaultARN": "arn:aws:glacier:us-west-2:0123456789012:vaults/my-vault" - }, - "comments": { - "input": { - }, - "output": { - } - }, - "description": "The example returns information about the previously initiated job specified by the job ID.", - "id": "to-get-information-about-a-job-you-previously-initiated-1481840928592", - "title": "To get information about a previously initiated job" - } - ], - "DescribeVault": [ - { - "input": { - "accountId": "-", - "vaultName": "my-vault" - }, - "output": { - "CreationDate": "2016-09-23T19:27:18.665Z", - "NumberOfArchives": 0, - "SizeInBytes": 0, - "VaultARN": "arn:aws:glacier:us-west-2:111122223333:vaults/my-vault", - "VaultName": "my-vault" - }, - "comments": { - "input": { - }, - "output": { - } - }, - "description": "The example retrieves data about a vault named my-vault.", - "id": "3c1c6e9d-f5a2-427a-aa6a-f439eacfc05f", - "title": "To retrieve information about a vault" - } - ], - "GetDataRetrievalPolicy": [ - { - "input": { - "accountId": "-" - }, - "output": { - "Policy": { - "Rules": [ - { - "BytesPerHour": 10737418240, - "Strategy": "BytesPerHour" - } - ] - } - }, - "comments": { - "input": { - }, - "output": { - } - }, - "description": "The example returns the current data retrieval policy for the account.", - "id": "to-get-the-current-data-retrieval-policy-for-the-account-1481851580439", - "title": "To get the current data retrieval policy for an account" - } - ], - "GetJobOutput": [ - { - "input": { - "accountId": "-", - "jobId": "zbxcm3Z_3z5UkoroF7SuZKrxgGoDc3RloGduS7Eg-RO47Yc6FxsdGBgf_Q2DK5Ejh18CnTS5XW4_XqlNHS61dsO4CnMW", - "range": "", - "vaultName": "my-vaul" - }, - "output": { - "acceptRanges": "bytes", - "body": "inventory-data", - "contentType": "application/json", - "status": 200 - }, - "comments": { - "input": { - }, - "output": { - } - }, - "description": "The example downloads the output of a previously initiated inventory retrieval job that is identified by the job ID.", - "id": "to-get-the-output-of-a-previously-initiated-job-1481848550859", - "title": "To get the output of a previously initiated job" - } - ], - "GetVaultAccessPolicy": [ - { - "input": { - "accountId": "-", - "vaultName": "example-vault" - }, - "output": { - "policy": { - "Policy": "{\"Version\":\"2012-10-17\",\"Statement\":[{\"Sid\":\"Define-owner-access-rights\",\"Effect\":\"Allow\",\"Principal\":{\"AWS\":\"arn:aws:iam::999999999999:root\"},\"Action\":\"glacier:DeleteArchive\",\"Resource\":\"arn:aws:glacier:us-west-2:999999999999:vaults/examplevault\"}]}" - } - }, - "comments": { - "input": { - }, - "output": { - } - }, - "description": "The example retrieves the access-policy set on the vault named example-vault.", - "id": "to--get-the-access-policy-set-on-the-vault-1481936004590", - "title": "To get the access-policy set on the vault" - } - ], - "GetVaultLock": [ - { - "input": { - "accountId": "-", - "vaultName": "examplevault" - }, - "output": { - "CreationDate": "exampledate", - "ExpirationDate": "exampledate", - "Policy": "{\"Version\":\"2012-10-17\",\"Statement\":[{\"Sid\":\"Define-vault-lock\",\"Effect\":\"Deny\",\"Principal\":{\"AWS\":\"arn:aws:iam::999999999999:root\"},\"Action\":\"glacier:DeleteArchive\",\"Resource\":\"arn:aws:glacier:us-west-2:999999999999:vaults/examplevault\",\"Condition\":{\"NumericLessThanEquals\":{\"glacier:ArchiveAgeinDays\":\"365\"}}}]}", - "State": "InProgress" - }, - "comments": { - "input": { - }, - "output": { - } - }, - "description": "The example retrieves the attributes from the lock-policy subresource set on the vault named examplevault.", - "id": "to-retrieve-vault-lock-policy-related-attributes-that-are-set-on-a-vault-1481851363097", - "title": "To retrieve vault lock-policy related attributes that are set on a vault" - } - ], - "GetVaultNotifications": [ - { - "input": { - "accountId": "-", - "vaultName": "my-vault" - }, - "output": { - "vaultNotificationConfig": { - "Events": [ - "InventoryRetrievalCompleted", - "ArchiveRetrievalCompleted" - ], - "SNSTopic": "arn:aws:sns:us-west-2:0123456789012:my-vault" - } - }, - "comments": { - "input": { - }, - "output": { - } - }, - "description": "The example retrieves the notification-configuration for the vault named my-vault.", - "id": "to-get-the-notification-configuration-for-the-specified-vault-1481918746677", - "title": "To get the notification-configuration for the specified vault" - } - ], - "InitiateJob": [ - { - "input": { - "accountId": "-", - "jobParameters": { - "Description": "My inventory job", - "Format": "CSV", - "SNSTopic": "arn:aws:sns:us-west-2:111111111111:Glacier-InventoryRetrieval-topic-Example", - "Type": "inventory-retrieval" - }, - "vaultName": "examplevault" - }, - "output": { - "jobId": " HkF9p6o7yjhFx-K3CGl6fuSm6VzW9T7esGQfco8nUXVYwS0jlb5gq1JZ55yHgt5vP54ZShjoQzQVVh7vEXAMPLEjobID", - "location": "/111122223333/vaults/examplevault/jobs/HkF9p6o7yjhFx-K3CGl6fuSm6VzW9T7esGQfco8nUXVYwS0jlb5gq1JZ55yHgt5vP54ZShjoQzQVVh7vEXAMPLEjobID" - }, - "comments": { - "input": { - }, - "output": { - } - }, - "description": "The example initiates an inventory-retrieval job for the vault named examplevault.", - "id": "to-initiate-an-inventory-retrieval-job-1482186883826", - "title": "To initiate an inventory-retrieval job" - } - ], - "InitiateMultipartUpload": [ - { - "input": { - "accountId": "-", - "partSize": "1048576", - "vaultName": "my-vault" - }, - "output": { - "location": "/111122223333/vaults/my-vault/multipart-uploads/19gaRezEXAMPLES6Ry5YYdqthHOC_kGRCT03L9yetr220UmPtBYKk-OssZtLqyFu7sY1_lR7vgFuJV6NtcV5zpsJ", - "uploadId": "19gaRezEXAMPLES6Ry5YYdqthHOC_kGRCT03L9yetr220UmPtBYKk-OssZtLqyFu7sY1_lR7vgFuJV6NtcV5zpsJ" - }, - "comments": { - "input": { - }, - "output": { - } - }, - "description": "The example initiates a multipart upload to a vault named my-vault with a part size of 1 MiB (1024 x 1024 bytes) per file.", - "id": "72f2db19-3d93-4c74-b2ed-38703baacf49", - "title": "To initiate a multipart upload" - } - ], - "InitiateVaultLock": [ - { - "input": { - "accountId": "-", - "policy": { - "Policy": "{\"Version\":\"2012-10-17\",\"Statement\":[{\"Sid\":\"Define-vault-lock\",\"Effect\":\"Deny\",\"Principal\":{\"AWS\":\"arn:aws:iam::999999999999:root\"},\"Action\":\"glacier:DeleteArchive\",\"Resource\":\"arn:aws:glacier:us-west-2:999999999999:vaults/examplevault\",\"Condition\":{\"NumericLessThanEquals\":{\"glacier:ArchiveAgeinDays\":\"365\"}}}]}" - }, - "vaultName": "my-vault" - }, - "output": { - "lockId": "AE863rKkWZU53SLW5be4DUcW" - }, - "comments": { - "input": { - }, - "output": { - } - }, - "description": "The example initiates the vault locking process for the vault named my-vault.", - "id": "to-initiate-the-vault-locking-process-1481919693394", - "title": "To initiate the vault locking process" - } - ], - "ListJobs": [ - { - "input": { - "accountId": "-", - "vaultName": "my-vault" - }, - "output": { - "JobList": [ - { - "Action": "ArchiveRetrieval", - "ArchiveId": "kKB7ymWJVpPSwhGP6ycSOAekp9ZYe_--zM_mw6k76ZFGEIWQX-ybtRDvc2VkPSDtfKmQrj0IRQLSGsNuDp-AJVlu2ccmDSyDUmZwKbwbpAdGATGDiB3hHO0bjbGehXTcApVud_wyDw", - "ArchiveSHA256TreeHash": "9628195fcdbcbbe76cdde932d4646fa7de5f219fb39823836d81f0cc0e18aa67", - "ArchiveSizeInBytes": 3145728, - "Completed": false, - "CreationDate": "2015-07-17T21:16:13.840Z", - "JobDescription": "Retrieve archive on 2015-07-17", - "JobId": "l7IL5-EkXyEY9Ws95fClzIbk2O5uLYaFdAYOi-azsX_Z8V6NH4yERHzars8wTKYQMX6nBDI9cMNHzyZJO59-8N9aHWav", - "RetrievalByteRange": "0-3145727", - "SHA256TreeHash": "9628195fcdbcbbe76cdde932d4646fa7de5f219fb39823836d81f0cc0e18aa67", - "SNSTopic": "arn:aws:sns:us-west-2:0123456789012:my-vault", - "StatusCode": "InProgress", - "VaultARN": "arn:aws:glacier:us-west-2:0123456789012:vaults/my-vault" - }, - { - "Action": "InventoryRetrieval", - "Completed": false, - "CreationDate": "2015-07-17T20:23:41.616Z", - "InventoryRetrievalParameters": { - "Format": "JSON" - }, - "JobId": "zbxcm3Z_3z5UkoroF7SuZKrxgGoDc3RloGduS7Eg-RO47Yc6FxsdGBgf_Q2DK5Ejh18CnTS5XW4_XqlNHS61dsO4CnMW", - "StatusCode": "InProgress", - "VaultARN": "arn:aws:glacier:us-west-2:0123456789012:vaults/my-vault" - } - ] - }, - "comments": { - "input": { - }, - "output": { - } - }, - "description": "The example lists jobs for the vault named my-vault.", - "id": "to-list-jobs-for-a-vault-1481920530537", - "title": "To list jobs for a vault" - } - ], - "ListMultipartUploads": [ - { - "input": { - "accountId": "-", - "vaultName": "examplevault" - }, - "output": { - "Marker": "null", - "UploadsList": [ - { - "ArchiveDescription": "archive 1", - "CreationDate": "2012-03-19T23:20:59.130Z", - "MultipartUploadId": "xsQdFIRsfJr20CW2AbZBKpRZAFTZSJIMtL2hYf8mvp8dM0m4RUzlaqoEye6g3h3ecqB_zqwB7zLDMeSWhwo65re4C4Ev", - "PartSizeInBytes": 4194304, - "VaultARN": "arn:aws:glacier:us-west-2:012345678901:vaults/examplevault" - }, - { - "ArchiveDescription": "archive 2", - "CreationDate": "2012-04-01T15:00:00.000Z", - "MultipartUploadId": "nPyGOnyFcx67qqX7E-0tSGiRi88hHMOwOxR-_jNyM6RjVMFfV29lFqZ3rNsSaWBugg6OP92pRtufeHdQH7ClIpSF6uJc", - "PartSizeInBytes": 4194304, - "VaultARN": "arn:aws:glacier:us-west-2:012345678901:vaults/examplevault" - }, - { - "ArchiveDescription": "archive 3", - "CreationDate": "2012-03-20T17:03:43.221Z", - "MultipartUploadId": "qt-RBst_7yO8gVIonIBsAxr2t-db0pE4s8MNeGjKjGdNpuU-cdSAcqG62guwV9r5jh5mLyFPzFEitTpNE7iQfHiu1XoV", - "PartSizeInBytes": 4194304, - "VaultARN": "arn:aws:glacier:us-west-2:012345678901:vaults/examplevault" - } - ] - }, - "comments": { - "input": { - }, - "output": { - } - }, - "description": "The example lists all the in-progress multipart uploads for the vault named examplevault.", - "id": "to-list-all-the-in-progress-multipart-uploads-for-a-vault-1481935250590", - "title": "To list all the in-progress multipart uploads for a vault" - } - ], - "ListParts": [ - { - "input": { - "accountId": "-", - "uploadId": "OW2fM5iVylEpFEMM9_HpKowRapC3vn5sSL39_396UW9zLFUWVrnRHaPjUJddQ5OxSHVXjYtrN47NBZ-khxOjyEXAMPLE", - "vaultName": "examplevault" - }, - "output": { - "ArchiveDescription": "archive description", - "CreationDate": "2012-03-20T17:03:43.221Z", - "Marker": "null", - "MultipartUploadId": "OW2fM5iVylEpFEMM9_HpKowRapC3vn5sSL39_396UW9zLFUWVrnRHaPjUJddQ5OxSHVXjYtrN47NBZ-khxOjyEXAMPLE", - "PartSizeInBytes": 4194304, - "Parts": [ - { - "RangeInBytes": "0-4194303", - "SHA256TreeHash": "01d34dabf7be316472c93b1ef80721f5d4" - }, - { - "RangeInBytes": "4194304-8388607", - "SHA256TreeHash": "0195875365afda349fc21c84c099987164" - } - ], - "VaultARN": "arn:aws:glacier:us-west-2:012345678901:vaults/demo1-vault" - }, - "comments": { - "input": { - }, - "output": { - } - }, - "description": "The example lists all the parts of a multipart upload.", - "id": "to-list-the-parts-of-an-archive-that-have-been-uploaded-in-a-multipart-upload-1481921767590", - "title": "To list the parts of an archive that have been uploaded in a multipart upload" - } - ], - "ListProvisionedCapacity": [ - { - "input": { - "accountId": "-" - }, - "output": { - "ProvisionedCapacityList": [ - { - "CapacityId": "zSaq7NzHFQDANTfQkDen4V7z", - "ExpirationDate": "2016-12-12T00:00:00.000Z", - "StartDate": "2016-11-11T20:11:51.095Z" - }, - { - "CapacityId": "yXaq7NzHFQNADTfQkDen4V7z", - "ExpirationDate": "2017-01-15T00:00:00.000Z", - "StartDate": "2016-12-13T20:11:51.095Z" - } - ] - }, - "comments": { - "input": { - }, - "output": { - } - }, - "description": "The example lists the provisioned capacity units for an account.", - "id": "to-list-the-provisioned-capacity-units-for-an-account-1481923656130", - "title": "To list the provisioned capacity units for an account" - } - ], - "ListTagsForVault": [ - { - "input": { - "accountId": "-", - "vaultName": "examplevault" - }, - "output": { - "Tags": { - "date": "july2015", - "id": "1234" - } - }, - "comments": { - "input": { - }, - "output": { - } - }, - "description": "The example lists all the tags attached to the vault examplevault.", - "id": "list-tags-for-vault-1481755839720", - "title": "To list the tags for a vault" - } - ], - "ListVaults": [ - { - "input": { - "accountId": "-", - "limit": "", - "marker": "" - }, - "output": { - "VaultList": [ - { - "CreationDate": "2015-04-06T21:23:45.708Z", - "LastInventoryDate": "2015-04-07T00:26:19.028Z", - "NumberOfArchives": 1, - "SizeInBytes": 3178496, - "VaultARN": "arn:aws:glacier:us-west-2:0123456789012:vaults/my-vault", - "VaultName": "my-vault" - } - ] - }, - "comments": { - "input": { - }, - "output": { - } - }, - "description": "The example lists all vaults owned by the specified AWS account.", - "id": "list-vaults-1481753006990", - "title": "To list all vaults owned by the calling user's account" - } - ], - "PurchaseProvisionedCapacity": [ - { - "input": { - "accountId": "-" - }, - "output": { - "capacityId": "zSaq7NzHFQDANTfQkDen4V7z" - }, - "comments": { - "input": { - }, - "output": { - } - }, - "description": "The example purchases provisioned capacity unit for an AWS account.", - "id": "to-purchases-a-provisioned-capacity-unit-for-an-aws-account-1481927446662", - "title": "To purchases a provisioned capacity unit for an AWS account" - } - ], - "RemoveTagsFromVault": [ - { - "input": { - "TagKeys": [ - "examplekey1", - "examplekey2" - ], - "accountId": "-", - "vaultName": "examplevault" - }, - "comments": { - "input": { - }, - "output": { - } - }, - "description": "The example removes two tags from the vault named examplevault.", - "id": "remove-tags-from-vault-1481754998801", - "title": "To remove tags from a vault" - } - ], - "SetDataRetrievalPolicy": [ - { - "input": { - "Policy": { - "Rules": [ - { - "BytesPerHour": 10737418240, - "Strategy": "BytesPerHour" - } - ] - }, - "accountId": "-" - }, - "comments": { - "input": { - }, - "output": { - } - }, - "description": "The example sets and then enacts a data retrieval policy.", - "id": "to-set-and-then-enact-a-data-retrieval-policy--1481928352408", - "title": "To set and then enact a data retrieval policy " - } - ], - "SetVaultAccessPolicy": [ - { - "input": { - "accountId": "-", - "policy": { - "Policy": "{\"Version\":\"2012-10-17\",\"Statement\":[{\"Sid\":\"Define-owner-access-rights\",\"Effect\":\"Allow\",\"Principal\":{\"AWS\":\"arn:aws:iam::999999999999:root\"},\"Action\":\"glacier:DeleteArchive\",\"Resource\":\"arn:aws:glacier:us-west-2:999999999999:vaults/examplevault\"}]}" - }, - "vaultName": "examplevault" - }, - "comments": { - "input": { - }, - "output": { - } - }, - "description": "The example configures an access policy for the vault named examplevault.", - "id": "to--set-the-access-policy-on-a-vault-1482185872517", - "title": "To set the access-policy on a vault" - } - ], - "SetVaultNotifications": [ - { - "input": { - "accountId": "-", - "vaultName": "examplevault", - "vaultNotificationConfig": { - "Events": [ - "ArchiveRetrievalCompleted", - "InventoryRetrievalCompleted" - ], - "SNSTopic": "arn:aws:sns:us-west-2:012345678901:mytopic" - } - }, - "comments": { - "input": { - }, - "output": { - } - }, - "description": "The example sets the examplevault notification configuration.", - "id": "to-configure-a-vault-to-post-a-message-to-an-amazon-simple-notification-service-amazon-sns-topic-when-jobs-complete-1482186397475", - "title": "To configure a vault to post a message to an Amazon SNS topic when jobs complete" - } - ], - "UploadArchive": [ - { - "input": { - "accountId": "-", - "archiveDescription": "", - "body": "example-data-to-upload", - "checksum": "", - "vaultName": "my-vault" - }, - "output": { - "archiveId": "kKB7ymWJVpPSwhGP6ycSOAekp9ZYe_--zM_mw6k76ZFGEIWQX-ybtRDvc2VkPSDtfKmQrj0IRQLSGsNuDp-AJVlu2ccmDSyDUmZwKbwbpAdGATGDiB3hHO0bjbGehXTcApVud_wyDw", - "checksum": "969fb39823836d81f0cc028195fcdbcbbe76cdde932d4646fa7de5f21e18aa67", - "location": "/0123456789012/vaults/my-vault/archives/kKB7ymWJVpPSwhGP6ycSOAekp9ZYe_--zM_mw6k76ZFGEIWQX-ybtRDvc2VkPSDtfKmQrj0IRQLSGsNuDp-AJVlu2ccmDSyDUmZwKbwbpAdGATGDiB3hHO0bjbGehXTcApVud_wyDw" - }, - "comments": { - "input": { - }, - "output": { - } - }, - "description": "The example adds an archive to a vault.", - "id": "upload-archive-1481668510494", - "title": "To upload an archive" - } - ], - "UploadMultipartPart": [ - { - "input": { - "accountId": "-", - "body": "part1", - "checksum": "c06f7cd4baacb087002a99a5f48bf953", - "range": "bytes 0-1048575/*", - "uploadId": "19gaRezEXAMPLES6Ry5YYdqthHOC_kGRCT03L9yetr220UmPtBYKk-OssZtLqyFu7sY1_lR7vgFuJV6NtcV5zpsJ", - "vaultName": "examplevault" - }, - "output": { - "checksum": "c06f7cd4baacb087002a99a5f48bf953" - }, - "comments": { - "input": { - }, - "output": { - } - }, - "description": "The example uploads the first 1 MiB (1024 x 1024 bytes) part of an archive.", - "id": "to-upload-the-first-part-of-an-archive-1481835899519", - "title": "To upload the first part of an archive" - } - ] - } -} diff --git a/workshops/monte-carlo-on-ec2-spot-fleet/src/web/node_modules/aws-sdk/apis/glacier-2012-06-01.min.json b/workshops/monte-carlo-on-ec2-spot-fleet/src/web/node_modules/aws-sdk/apis/glacier-2012-06-01.min.json deleted file mode 100644 index 2375bc81..00000000 --- a/workshops/monte-carlo-on-ec2-spot-fleet/src/web/node_modules/aws-sdk/apis/glacier-2012-06-01.min.json +++ /dev/null @@ -1,1278 +0,0 @@ -{ - "version": "2.0", - "metadata": { - "apiVersion": "2012-06-01", - "checksumFormat": "sha256", - "endpointPrefix": "glacier", - "protocol": "rest-json", - "serviceFullName": "Amazon Glacier", - "signatureVersion": "v4", - "uid": "glacier-2012-06-01" - }, - "operations": { - "AbortMultipartUpload": { - "http": { - "method": "DELETE", - "requestUri": "/{accountId}/vaults/{vaultName}/multipart-uploads/{uploadId}", - "responseCode": 204 - }, - "input": { - "type": "structure", - "required": [ - "accountId", - "vaultName", - "uploadId" - ], - "members": { - "accountId": { - "location": "uri", - "locationName": "accountId" - }, - "vaultName": { - "location": "uri", - "locationName": "vaultName" - }, - "uploadId": { - "location": "uri", - "locationName": "uploadId" - } - } - } - }, - "AbortVaultLock": { - "http": { - "method": "DELETE", - "requestUri": "/{accountId}/vaults/{vaultName}/lock-policy", - "responseCode": 204 - }, - "input": { - "type": "structure", - "required": [ - "accountId", - "vaultName" - ], - "members": { - "accountId": { - "location": "uri", - "locationName": "accountId" - }, - "vaultName": { - "location": "uri", - "locationName": "vaultName" - } - } - } - }, - "AddTagsToVault": { - "http": { - "requestUri": "/{accountId}/vaults/{vaultName}/tags?operation=add", - "responseCode": 204 - }, - "input": { - "type": "structure", - "required": [ - "accountId", - "vaultName" - ], - "members": { - "accountId": { - "location": "uri", - "locationName": "accountId" - }, - "vaultName": { - "location": "uri", - "locationName": "vaultName" - }, - "Tags": { - "shape": "S5" - } - } - } - }, - "CompleteMultipartUpload": { - "http": { - "requestUri": "/{accountId}/vaults/{vaultName}/multipart-uploads/{uploadId}", - "responseCode": 201 - }, - "input": { - "type": "structure", - "required": [ - "accountId", - "vaultName", - "uploadId" - ], - "members": { - "accountId": { - "location": "uri", - "locationName": "accountId" - }, - "vaultName": { - "location": "uri", - "locationName": "vaultName" - }, - "uploadId": { - "location": "uri", - "locationName": "uploadId" - }, - "archiveSize": { - "location": "header", - "locationName": "x-amz-archive-size" - }, - "checksum": { - "location": "header", - "locationName": "x-amz-sha256-tree-hash" - } - } - }, - "output": { - "shape": "S9" - } - }, - "CompleteVaultLock": { - "http": { - "requestUri": "/{accountId}/vaults/{vaultName}/lock-policy/{lockId}", - "responseCode": 204 - }, - "input": { - "type": "structure", - "required": [ - "accountId", - "vaultName", - "lockId" - ], - "members": { - "accountId": { - "location": "uri", - "locationName": "accountId" - }, - "vaultName": { - "location": "uri", - "locationName": "vaultName" - }, - "lockId": { - "location": "uri", - "locationName": "lockId" - } - } - } - }, - "CreateVault": { - "http": { - "method": "PUT", - "requestUri": "/{accountId}/vaults/{vaultName}", - "responseCode": 201 - }, - "input": { - "type": "structure", - "required": [ - "accountId", - "vaultName" - ], - "members": { - "accountId": { - "location": "uri", - "locationName": "accountId" - }, - "vaultName": { - "location": "uri", - "locationName": "vaultName" - } - } - }, - "output": { - "type": "structure", - "members": { - "location": { - "location": "header", - "locationName": "Location" - } - } - } - }, - "DeleteArchive": { - "http": { - "method": "DELETE", - "requestUri": "/{accountId}/vaults/{vaultName}/archives/{archiveId}", - "responseCode": 204 - }, - "input": { - "type": "structure", - "required": [ - "accountId", - "vaultName", - "archiveId" - ], - "members": { - "accountId": { - "location": "uri", - "locationName": "accountId" - }, - "vaultName": { - "location": "uri", - "locationName": "vaultName" - }, - "archiveId": { - "location": "uri", - "locationName": "archiveId" - } - } - } - }, - "DeleteVault": { - "http": { - "method": "DELETE", - "requestUri": "/{accountId}/vaults/{vaultName}", - "responseCode": 204 - }, - "input": { - "type": "structure", - "required": [ - "accountId", - "vaultName" - ], - "members": { - "accountId": { - "location": "uri", - "locationName": "accountId" - }, - "vaultName": { - "location": "uri", - "locationName": "vaultName" - } - } - } - }, - "DeleteVaultAccessPolicy": { - "http": { - "method": "DELETE", - "requestUri": "/{accountId}/vaults/{vaultName}/access-policy", - "responseCode": 204 - }, - "input": { - "type": "structure", - "required": [ - "accountId", - "vaultName" - ], - "members": { - "accountId": { - "location": "uri", - "locationName": "accountId" - }, - "vaultName": { - "location": "uri", - "locationName": "vaultName" - } - } - } - }, - "DeleteVaultNotifications": { - "http": { - "method": "DELETE", - "requestUri": "/{accountId}/vaults/{vaultName}/notification-configuration", - "responseCode": 204 - }, - "input": { - "type": "structure", - "required": [ - "accountId", - "vaultName" - ], - "members": { - "accountId": { - "location": "uri", - "locationName": "accountId" - }, - "vaultName": { - "location": "uri", - "locationName": "vaultName" - } - } - } - }, - "DescribeJob": { - "http": { - "method": "GET", - "requestUri": "/{accountId}/vaults/{vaultName}/jobs/{jobId}" - }, - "input": { - "type": "structure", - "required": [ - "accountId", - "vaultName", - "jobId" - ], - "members": { - "accountId": { - "location": "uri", - "locationName": "accountId" - }, - "vaultName": { - "location": "uri", - "locationName": "vaultName" - }, - "jobId": { - "location": "uri", - "locationName": "jobId" - } - } - }, - "output": { - "shape": "Si" - } - }, - "DescribeVault": { - "http": { - "method": "GET", - "requestUri": "/{accountId}/vaults/{vaultName}" - }, - "input": { - "type": "structure", - "required": [ - "accountId", - "vaultName" - ], - "members": { - "accountId": { - "location": "uri", - "locationName": "accountId" - }, - "vaultName": { - "location": "uri", - "locationName": "vaultName" - } - } - }, - "output": { - "shape": "Sq" - } - }, - "GetDataRetrievalPolicy": { - "http": { - "method": "GET", - "requestUri": "/{accountId}/policies/data-retrieval" - }, - "input": { - "type": "structure", - "required": [ - "accountId" - ], - "members": { - "accountId": { - "location": "uri", - "locationName": "accountId" - } - } - }, - "output": { - "type": "structure", - "members": { - "Policy": { - "shape": "Su" - } - } - } - }, - "GetJobOutput": { - "http": { - "method": "GET", - "requestUri": "/{accountId}/vaults/{vaultName}/jobs/{jobId}/output" - }, - "input": { - "type": "structure", - "required": [ - "accountId", - "vaultName", - "jobId" - ], - "members": { - "accountId": { - "location": "uri", - "locationName": "accountId" - }, - "vaultName": { - "location": "uri", - "locationName": "vaultName" - }, - "jobId": { - "location": "uri", - "locationName": "jobId" - }, - "range": { - "location": "header", - "locationName": "Range" - } - } - }, - "output": { - "type": "structure", - "members": { - "body": { - "shape": "S10" - }, - "checksum": { - "location": "header", - "locationName": "x-amz-sha256-tree-hash" - }, - "status": { - "location": "statusCode", - "type": "integer" - }, - "contentRange": { - "location": "header", - "locationName": "Content-Range" - }, - "acceptRanges": { - "location": "header", - "locationName": "Accept-Ranges" - }, - "contentType": { - "location": "header", - "locationName": "Content-Type" - }, - "archiveDescription": { - "location": "header", - "locationName": "x-amz-archive-description" - } - }, - "payload": "body" - } - }, - "GetVaultAccessPolicy": { - "http": { - "method": "GET", - "requestUri": "/{accountId}/vaults/{vaultName}/access-policy" - }, - "input": { - "type": "structure", - "required": [ - "accountId", - "vaultName" - ], - "members": { - "accountId": { - "location": "uri", - "locationName": "accountId" - }, - "vaultName": { - "location": "uri", - "locationName": "vaultName" - } - } - }, - "output": { - "type": "structure", - "members": { - "policy": { - "shape": "S14" - } - }, - "payload": "policy" - } - }, - "GetVaultLock": { - "http": { - "method": "GET", - "requestUri": "/{accountId}/vaults/{vaultName}/lock-policy" - }, - "input": { - "type": "structure", - "required": [ - "accountId", - "vaultName" - ], - "members": { - "accountId": { - "location": "uri", - "locationName": "accountId" - }, - "vaultName": { - "location": "uri", - "locationName": "vaultName" - } - } - }, - "output": { - "type": "structure", - "members": { - "Policy": {}, - "State": {}, - "ExpirationDate": {}, - "CreationDate": {} - } - } - }, - "GetVaultNotifications": { - "http": { - "method": "GET", - "requestUri": "/{accountId}/vaults/{vaultName}/notification-configuration" - }, - "input": { - "type": "structure", - "required": [ - "accountId", - "vaultName" - ], - "members": { - "accountId": { - "location": "uri", - "locationName": "accountId" - }, - "vaultName": { - "location": "uri", - "locationName": "vaultName" - } - } - }, - "output": { - "type": "structure", - "members": { - "vaultNotificationConfig": { - "shape": "S19" - } - }, - "payload": "vaultNotificationConfig" - } - }, - "InitiateJob": { - "http": { - "requestUri": "/{accountId}/vaults/{vaultName}/jobs", - "responseCode": 202 - }, - "input": { - "type": "structure", - "required": [ - "accountId", - "vaultName" - ], - "members": { - "accountId": { - "location": "uri", - "locationName": "accountId" - }, - "vaultName": { - "location": "uri", - "locationName": "vaultName" - }, - "jobParameters": { - "type": "structure", - "members": { - "Format": {}, - "Type": {}, - "ArchiveId": {}, - "Description": {}, - "SNSTopic": {}, - "RetrievalByteRange": {}, - "Tier": {}, - "InventoryRetrievalParameters": { - "type": "structure", - "members": { - "StartDate": {}, - "EndDate": {}, - "Limit": {}, - "Marker": {} - } - } - } - } - }, - "payload": "jobParameters" - }, - "output": { - "type": "structure", - "members": { - "location": { - "location": "header", - "locationName": "Location" - }, - "jobId": { - "location": "header", - "locationName": "x-amz-job-id" - } - } - } - }, - "InitiateMultipartUpload": { - "http": { - "requestUri": "/{accountId}/vaults/{vaultName}/multipart-uploads", - "responseCode": 201 - }, - "input": { - "type": "structure", - "required": [ - "accountId", - "vaultName" - ], - "members": { - "accountId": { - "location": "uri", - "locationName": "accountId" - }, - "vaultName": { - "location": "uri", - "locationName": "vaultName" - }, - "archiveDescription": { - "location": "header", - "locationName": "x-amz-archive-description" - }, - "partSize": { - "location": "header", - "locationName": "x-amz-part-size" - } - } - }, - "output": { - "type": "structure", - "members": { - "location": { - "location": "header", - "locationName": "Location" - }, - "uploadId": { - "location": "header", - "locationName": "x-amz-multipart-upload-id" - } - } - } - }, - "InitiateVaultLock": { - "http": { - "requestUri": "/{accountId}/vaults/{vaultName}/lock-policy", - "responseCode": 201 - }, - "input": { - "type": "structure", - "required": [ - "accountId", - "vaultName" - ], - "members": { - "accountId": { - "location": "uri", - "locationName": "accountId" - }, - "vaultName": { - "location": "uri", - "locationName": "vaultName" - }, - "policy": { - "type": "structure", - "members": { - "Policy": {} - } - } - }, - "payload": "policy" - }, - "output": { - "type": "structure", - "members": { - "lockId": { - "location": "header", - "locationName": "x-amz-lock-id" - } - } - } - }, - "ListJobs": { - "http": { - "method": "GET", - "requestUri": "/{accountId}/vaults/{vaultName}/jobs" - }, - "input": { - "type": "structure", - "required": [ - "accountId", - "vaultName" - ], - "members": { - "accountId": { - "location": "uri", - "locationName": "accountId" - }, - "vaultName": { - "location": "uri", - "locationName": "vaultName" - }, - "limit": { - "location": "querystring", - "locationName": "limit" - }, - "marker": { - "location": "querystring", - "locationName": "marker" - }, - "statuscode": { - "location": "querystring", - "locationName": "statuscode" - }, - "completed": { - "location": "querystring", - "locationName": "completed" - } - } - }, - "output": { - "type": "structure", - "members": { - "JobList": { - "type": "list", - "member": { - "shape": "Si" - } - }, - "Marker": {} - } - } - }, - "ListMultipartUploads": { - "http": { - "method": "GET", - "requestUri": "/{accountId}/vaults/{vaultName}/multipart-uploads" - }, - "input": { - "type": "structure", - "required": [ - "accountId", - "vaultName" - ], - "members": { - "accountId": { - "location": "uri", - "locationName": "accountId" - }, - "vaultName": { - "location": "uri", - "locationName": "vaultName" - }, - "marker": { - "location": "querystring", - "locationName": "marker" - }, - "limit": { - "location": "querystring", - "locationName": "limit" - } - } - }, - "output": { - "type": "structure", - "members": { - "UploadsList": { - "type": "list", - "member": { - "type": "structure", - "members": { - "MultipartUploadId": {}, - "VaultARN": {}, - "ArchiveDescription": {}, - "PartSizeInBytes": { - "type": "long" - }, - "CreationDate": {} - } - } - }, - "Marker": {} - } - } - }, - "ListParts": { - "http": { - "method": "GET", - "requestUri": "/{accountId}/vaults/{vaultName}/multipart-uploads/{uploadId}" - }, - "input": { - "type": "structure", - "required": [ - "accountId", - "vaultName", - "uploadId" - ], - "members": { - "accountId": { - "location": "uri", - "locationName": "accountId" - }, - "vaultName": { - "location": "uri", - "locationName": "vaultName" - }, - "uploadId": { - "location": "uri", - "locationName": "uploadId" - }, - "marker": { - "location": "querystring", - "locationName": "marker" - }, - "limit": { - "location": "querystring", - "locationName": "limit" - } - } - }, - "output": { - "type": "structure", - "members": { - "MultipartUploadId": {}, - "VaultARN": {}, - "ArchiveDescription": {}, - "PartSizeInBytes": { - "type": "long" - }, - "CreationDate": {}, - "Parts": { - "type": "list", - "member": { - "type": "structure", - "members": { - "RangeInBytes": {}, - "SHA256TreeHash": {} - } - } - }, - "Marker": {} - } - } - }, - "ListProvisionedCapacity": { - "http": { - "method": "GET", - "requestUri": "/{accountId}/provisioned-capacity" - }, - "input": { - "type": "structure", - "required": [ - "accountId" - ], - "members": { - "accountId": { - "location": "uri", - "locationName": "accountId" - } - } - }, - "output": { - "type": "structure", - "members": { - "ProvisionedCapacityList": { - "type": "list", - "member": { - "type": "structure", - "members": { - "CapacityId": {}, - "StartDate": {}, - "ExpirationDate": {} - } - } - } - } - } - }, - "ListTagsForVault": { - "http": { - "method": "GET", - "requestUri": "/{accountId}/vaults/{vaultName}/tags" - }, - "input": { - "type": "structure", - "required": [ - "accountId", - "vaultName" - ], - "members": { - "accountId": { - "location": "uri", - "locationName": "accountId" - }, - "vaultName": { - "location": "uri", - "locationName": "vaultName" - } - } - }, - "output": { - "type": "structure", - "members": { - "Tags": { - "shape": "S5" - } - } - } - }, - "ListVaults": { - "http": { - "method": "GET", - "requestUri": "/{accountId}/vaults" - }, - "input": { - "type": "structure", - "required": [ - "accountId" - ], - "members": { - "accountId": { - "location": "uri", - "locationName": "accountId" - }, - "marker": { - "location": "querystring", - "locationName": "marker" - }, - "limit": { - "location": "querystring", - "locationName": "limit" - } - } - }, - "output": { - "type": "structure", - "members": { - "VaultList": { - "type": "list", - "member": { - "shape": "Sq" - } - }, - "Marker": {} - } - } - }, - "PurchaseProvisionedCapacity": { - "http": { - "requestUri": "/{accountId}/provisioned-capacity", - "responseCode": 201 - }, - "input": { - "type": "structure", - "required": [ - "accountId" - ], - "members": { - "accountId": { - "location": "uri", - "locationName": "accountId" - } - } - }, - "output": { - "type": "structure", - "members": { - "capacityId": { - "location": "header", - "locationName": "x-amz-capacity-id" - } - } - } - }, - "RemoveTagsFromVault": { - "http": { - "requestUri": "/{accountId}/vaults/{vaultName}/tags?operation=remove", - "responseCode": 204 - }, - "input": { - "type": "structure", - "required": [ - "accountId", - "vaultName" - ], - "members": { - "accountId": { - "location": "uri", - "locationName": "accountId" - }, - "vaultName": { - "location": "uri", - "locationName": "vaultName" - }, - "TagKeys": { - "type": "list", - "member": {} - } - } - } - }, - "SetDataRetrievalPolicy": { - "http": { - "method": "PUT", - "requestUri": "/{accountId}/policies/data-retrieval", - "responseCode": 204 - }, - "input": { - "type": "structure", - "required": [ - "accountId" - ], - "members": { - "accountId": { - "location": "uri", - "locationName": "accountId" - }, - "Policy": { - "shape": "Su" - } - } - } - }, - "SetVaultAccessPolicy": { - "http": { - "method": "PUT", - "requestUri": "/{accountId}/vaults/{vaultName}/access-policy", - "responseCode": 204 - }, - "input": { - "type": "structure", - "required": [ - "accountId", - "vaultName" - ], - "members": { - "accountId": { - "location": "uri", - "locationName": "accountId" - }, - "vaultName": { - "location": "uri", - "locationName": "vaultName" - }, - "policy": { - "shape": "S14" - } - }, - "payload": "policy" - } - }, - "SetVaultNotifications": { - "http": { - "method": "PUT", - "requestUri": "/{accountId}/vaults/{vaultName}/notification-configuration", - "responseCode": 204 - }, - "input": { - "type": "structure", - "required": [ - "accountId", - "vaultName" - ], - "members": { - "accountId": { - "location": "uri", - "locationName": "accountId" - }, - "vaultName": { - "location": "uri", - "locationName": "vaultName" - }, - "vaultNotificationConfig": { - "shape": "S19" - } - }, - "payload": "vaultNotificationConfig" - } - }, - "UploadArchive": { - "http": { - "requestUri": "/{accountId}/vaults/{vaultName}/archives", - "responseCode": 201 - }, - "input": { - "type": "structure", - "required": [ - "vaultName", - "accountId" - ], - "members": { - "vaultName": { - "location": "uri", - "locationName": "vaultName" - }, - "accountId": { - "location": "uri", - "locationName": "accountId" - }, - "archiveDescription": { - "location": "header", - "locationName": "x-amz-archive-description" - }, - "checksum": { - "location": "header", - "locationName": "x-amz-sha256-tree-hash" - }, - "body": { - "shape": "S10" - } - }, - "payload": "body" - }, - "output": { - "shape": "S9" - } - }, - "UploadMultipartPart": { - "http": { - "method": "PUT", - "requestUri": "/{accountId}/vaults/{vaultName}/multipart-uploads/{uploadId}", - "responseCode": 204 - }, - "input": { - "type": "structure", - "required": [ - "accountId", - "vaultName", - "uploadId" - ], - "members": { - "accountId": { - "location": "uri", - "locationName": "accountId" - }, - "vaultName": { - "location": "uri", - "locationName": "vaultName" - }, - "uploadId": { - "location": "uri", - "locationName": "uploadId" - }, - "checksum": { - "location": "header", - "locationName": "x-amz-sha256-tree-hash" - }, - "range": { - "location": "header", - "locationName": "Content-Range" - }, - "body": { - "shape": "S10" - } - }, - "payload": "body" - }, - "output": { - "type": "structure", - "members": { - "checksum": { - "location": "header", - "locationName": "x-amz-sha256-tree-hash" - } - } - } - } - }, - "shapes": { - "S5": { - "type": "map", - "key": {}, - "value": {} - }, - "S9": { - "type": "structure", - "members": { - "location": { - "location": "header", - "locationName": "Location" - }, - "checksum": { - "location": "header", - "locationName": "x-amz-sha256-tree-hash" - }, - "archiveId": { - "location": "header", - "locationName": "x-amz-archive-id" - } - } - }, - "Si": { - "type": "structure", - "members": { - "JobId": {}, - "JobDescription": {}, - "Action": {}, - "ArchiveId": {}, - "VaultARN": {}, - "CreationDate": {}, - "Completed": { - "type": "boolean" - }, - "StatusCode": {}, - "StatusMessage": {}, - "ArchiveSizeInBytes": { - "type": "long" - }, - "InventorySizeInBytes": { - "type": "long" - }, - "SNSTopic": {}, - "CompletionDate": {}, - "SHA256TreeHash": {}, - "ArchiveSHA256TreeHash": {}, - "RetrievalByteRange": {}, - "Tier": {}, - "InventoryRetrievalParameters": { - "type": "structure", - "members": { - "Format": {}, - "StartDate": {}, - "EndDate": {}, - "Limit": {}, - "Marker": {} - } - } - } - }, - "Sq": { - "type": "structure", - "members": { - "VaultARN": {}, - "VaultName": {}, - "CreationDate": {}, - "LastInventoryDate": {}, - "NumberOfArchives": { - "type": "long" - }, - "SizeInBytes": { - "type": "long" - } - } - }, - "Su": { - "type": "structure", - "members": { - "Rules": { - "type": "list", - "member": { - "type": "structure", - "members": { - "Strategy": {}, - "BytesPerHour": { - "type": "long" - } - } - } - } - } - }, - "S10": { - "type": "blob", - "streaming": true - }, - "S14": { - "type": "structure", - "members": { - "Policy": {} - } - }, - "S19": { - "type": "structure", - "members": { - "SNSTopic": {}, - "Events": { - "type": "list", - "member": {} - } - } - } - } -} \ No newline at end of file diff --git a/workshops/monte-carlo-on-ec2-spot-fleet/src/web/node_modules/aws-sdk/apis/glacier-2012-06-01.paginators.json b/workshops/monte-carlo-on-ec2-spot-fleet/src/web/node_modules/aws-sdk/apis/glacier-2012-06-01.paginators.json deleted file mode 100644 index cf247b7a..00000000 --- a/workshops/monte-carlo-on-ec2-spot-fleet/src/web/node_modules/aws-sdk/apis/glacier-2012-06-01.paginators.json +++ /dev/null @@ -1,28 +0,0 @@ -{ - "pagination": { - "ListJobs": { - "input_token": "marker", - "limit_key": "limit", - "output_token": "Marker", - "result_key": "JobList" - }, - "ListMultipartUploads": { - "input_token": "marker", - "limit_key": "limit", - "output_token": "Marker", - "result_key": "UploadsList" - }, - "ListParts": { - "input_token": "marker", - "limit_key": "limit", - "output_token": "Marker", - "result_key": "Parts" - }, - "ListVaults": { - "input_token": "marker", - "limit_key": "limit", - "output_token": "Marker", - "result_key": "VaultList" - } - } -} \ No newline at end of file diff --git a/workshops/monte-carlo-on-ec2-spot-fleet/src/web/node_modules/aws-sdk/apis/glacier-2012-06-01.waiters2.json b/workshops/monte-carlo-on-ec2-spot-fleet/src/web/node_modules/aws-sdk/apis/glacier-2012-06-01.waiters2.json deleted file mode 100644 index 07a64a05..00000000 --- a/workshops/monte-carlo-on-ec2-spot-fleet/src/web/node_modules/aws-sdk/apis/glacier-2012-06-01.waiters2.json +++ /dev/null @@ -1,39 +0,0 @@ -{ - "version": 2, - "waiters": { - "VaultExists": { - "operation": "DescribeVault", - "delay": 3, - "maxAttempts": 15, - "acceptors": [ - { - "state": "success", - "matcher": "status", - "expected": 200 - }, - { - "state": "retry", - "matcher": "error", - "expected": "ResourceNotFoundException" - } - ] - }, - "VaultNotExists": { - "operation": "DescribeVault", - "delay": 3, - "maxAttempts": 15, - "acceptors": [ - { - "state": "retry", - "matcher": "status", - "expected": 200 - }, - { - "state": "success", - "matcher": "error", - "expected": "ResourceNotFoundException" - } - ] - } - } -} diff --git a/workshops/monte-carlo-on-ec2-spot-fleet/src/web/node_modules/aws-sdk/apis/glue-2017-03-31.examples.json b/workshops/monte-carlo-on-ec2-spot-fleet/src/web/node_modules/aws-sdk/apis/glue-2017-03-31.examples.json deleted file mode 100644 index 0ea7e3b0..00000000 --- a/workshops/monte-carlo-on-ec2-spot-fleet/src/web/node_modules/aws-sdk/apis/glue-2017-03-31.examples.json +++ /dev/null @@ -1,5 +0,0 @@ -{ - "version": "1.0", - "examples": { - } -} diff --git a/workshops/monte-carlo-on-ec2-spot-fleet/src/web/node_modules/aws-sdk/apis/glue-2017-03-31.min.json b/workshops/monte-carlo-on-ec2-spot-fleet/src/web/node_modules/aws-sdk/apis/glue-2017-03-31.min.json deleted file mode 100644 index b7ca8d1d..00000000 --- a/workshops/monte-carlo-on-ec2-spot-fleet/src/web/node_modules/aws-sdk/apis/glue-2017-03-31.min.json +++ /dev/null @@ -1,2578 +0,0 @@ -{ - "version": "2.0", - "metadata": { - "apiVersion": "2017-03-31", - "endpointPrefix": "glue", - "jsonVersion": "1.1", - "protocol": "json", - "serviceFullName": "AWS Glue", - "signatureVersion": "v4", - "targetPrefix": "AWSGlue", - "uid": "glue-2017-03-31" - }, - "operations": { - "BatchCreatePartition": { - "input": { - "type": "structure", - "required": [ - "DatabaseName", - "TableName", - "PartitionInputList" - ], - "members": { - "CatalogId": {}, - "DatabaseName": {}, - "TableName": {}, - "PartitionInputList": { - "type": "list", - "member": { - "shape": "S5" - } - } - } - }, - "output": { - "type": "structure", - "members": { - "Errors": { - "shape": "Sv" - } - } - } - }, - "BatchDeleteConnection": { - "input": { - "type": "structure", - "required": [ - "ConnectionNameList" - ], - "members": { - "CatalogId": {}, - "ConnectionNameList": { - "type": "list", - "member": {} - } - } - }, - "output": { - "type": "structure", - "members": { - "Succeeded": { - "shape": "Sm" - }, - "Errors": { - "type": "map", - "key": {}, - "value": { - "shape": "Sx" - } - } - } - } - }, - "BatchDeletePartition": { - "input": { - "type": "structure", - "required": [ - "DatabaseName", - "TableName", - "PartitionsToDelete" - ], - "members": { - "CatalogId": {}, - "DatabaseName": {}, - "TableName": {}, - "PartitionsToDelete": { - "type": "list", - "member": { - "shape": "S15" - } - } - } - }, - "output": { - "type": "structure", - "members": { - "Errors": { - "shape": "Sv" - } - } - } - }, - "BatchDeleteTable": { - "input": { - "type": "structure", - "required": [ - "DatabaseName", - "TablesToDelete" - ], - "members": { - "CatalogId": {}, - "DatabaseName": {}, - "TablesToDelete": { - "type": "list", - "member": {} - } - } - }, - "output": { - "type": "structure", - "members": { - "Errors": { - "type": "list", - "member": { - "type": "structure", - "members": { - "TableName": {}, - "ErrorDetail": { - "shape": "Sx" - } - } - } - } - } - } - }, - "BatchGetPartition": { - "input": { - "type": "structure", - "required": [ - "DatabaseName", - "TableName", - "PartitionsToGet" - ], - "members": { - "CatalogId": {}, - "DatabaseName": {}, - "TableName": {}, - "PartitionsToGet": { - "shape": "S1d" - } - } - }, - "output": { - "type": "structure", - "members": { - "Partitions": { - "shape": "S1f" - }, - "UnprocessedKeys": { - "shape": "S1d" - } - } - } - }, - "CreateClassifier": { - "input": { - "type": "structure", - "members": { - "GrokClassifier": { - "type": "structure", - "required": [ - "Classification", - "Name", - "GrokPattern" - ], - "members": { - "Classification": {}, - "Name": {}, - "GrokPattern": {}, - "CustomPatterns": {} - } - } - } - }, - "output": { - "type": "structure", - "members": {} - } - }, - "CreateConnection": { - "input": { - "type": "structure", - "required": [ - "ConnectionInput" - ], - "members": { - "CatalogId": {}, - "ConnectionInput": { - "shape": "S1o" - } - } - }, - "output": { - "type": "structure", - "members": {} - } - }, - "CreateCrawler": { - "input": { - "type": "structure", - "required": [ - "Name", - "Role", - "DatabaseName", - "Targets" - ], - "members": { - "Name": {}, - "Role": {}, - "DatabaseName": {}, - "Description": {}, - "Targets": { - "shape": "S1z" - }, - "Schedule": {}, - "Classifiers": { - "shape": "S28" - }, - "TablePrefix": {}, - "SchemaChangePolicy": { - "shape": "S2a" - } - } - }, - "output": { - "type": "structure", - "members": {} - } - }, - "CreateDatabase": { - "input": { - "type": "structure", - "required": [ - "DatabaseInput" - ], - "members": { - "CatalogId": {}, - "DatabaseInput": { - "shape": "S2f" - } - } - }, - "output": { - "type": "structure", - "members": {} - } - }, - "CreateDevEndpoint": { - "input": { - "type": "structure", - "required": [ - "EndpointName", - "RoleArn", - "SecurityGroupIds", - "SubnetId" - ], - "members": { - "EndpointName": {}, - "RoleArn": {}, - "SecurityGroupIds": { - "shape": "S2k" - }, - "SubnetId": {}, - "PublicKey": {}, - "NumberOfNodes": { - "type": "integer" - }, - "ExtraPythonLibsS3Path": {}, - "ExtraJarsS3Path": {} - } - }, - "output": { - "type": "structure", - "members": { - "EndpointName": {}, - "Status": {}, - "SecurityGroupIds": { - "shape": "S2k" - }, - "SubnetId": {}, - "RoleArn": {}, - "YarnEndpointAddress": {}, - "NumberOfNodes": { - "type": "integer" - }, - "AvailabilityZone": {}, - "VpcId": {}, - "ExtraPythonLibsS3Path": {}, - "ExtraJarsS3Path": {}, - "FailureReason": {}, - "CreatedTimestamp": { - "type": "timestamp" - } - } - } - }, - "CreateJob": { - "input": { - "type": "structure", - "required": [ - "Name", - "Role", - "Command" - ], - "members": { - "Name": {}, - "Description": {}, - "LogUri": {}, - "Role": {}, - "ExecutionProperty": { - "shape": "S2r" - }, - "Command": { - "shape": "S2t" - }, - "DefaultArguments": { - "shape": "S2v" - }, - "Connections": { - "shape": "S2w" - }, - "MaxRetries": { - "type": "integer" - }, - "AllocatedCapacity": { - "type": "integer" - } - } - }, - "output": { - "type": "structure", - "members": { - "Name": {} - } - } - }, - "CreatePartition": { - "input": { - "type": "structure", - "required": [ - "DatabaseName", - "TableName", - "PartitionInput" - ], - "members": { - "CatalogId": {}, - "DatabaseName": {}, - "TableName": {}, - "PartitionInput": { - "shape": "S5" - } - } - }, - "output": { - "type": "structure", - "members": {} - } - }, - "CreateScript": { - "input": { - "type": "structure", - "members": { - "DagNodes": { - "shape": "S32" - }, - "DagEdges": { - "shape": "S3a" - } - } - }, - "output": { - "type": "structure", - "members": { - "PythonScript": {} - } - } - }, - "CreateTable": { - "input": { - "type": "structure", - "required": [ - "DatabaseName", - "TableInput" - ], - "members": { - "CatalogId": {}, - "DatabaseName": {}, - "TableInput": { - "shape": "S3f" - } - } - }, - "output": { - "type": "structure", - "members": {} - } - }, - "CreateTrigger": { - "input": { - "type": "structure", - "required": [ - "Name", - "Type", - "Actions" - ], - "members": { - "Name": {}, - "Type": {}, - "Schedule": {}, - "Predicate": { - "shape": "S3m" - }, - "Actions": { - "shape": "S3s" - }, - "Description": {} - } - }, - "output": { - "type": "structure", - "members": { - "Name": {} - } - } - }, - "CreateUserDefinedFunction": { - "input": { - "type": "structure", - "required": [ - "DatabaseName", - "FunctionInput" - ], - "members": { - "CatalogId": {}, - "DatabaseName": {}, - "FunctionInput": { - "shape": "S3w" - } - } - }, - "output": { - "type": "structure", - "members": {} - } - }, - "DeleteClassifier": { - "input": { - "type": "structure", - "required": [ - "Name" - ], - "members": { - "Name": {} - } - }, - "output": { - "type": "structure", - "members": {} - } - }, - "DeleteConnection": { - "input": { - "type": "structure", - "required": [ - "ConnectionName" - ], - "members": { - "CatalogId": {}, - "ConnectionName": {} - } - }, - "output": { - "type": "structure", - "members": {} - } - }, - "DeleteCrawler": { - "input": { - "type": "structure", - "required": [ - "Name" - ], - "members": { - "Name": {} - } - }, - "output": { - "type": "structure", - "members": {} - } - }, - "DeleteDatabase": { - "input": { - "type": "structure", - "required": [ - "Name" - ], - "members": { - "CatalogId": {}, - "Name": {} - } - }, - "output": { - "type": "structure", - "members": {} - } - }, - "DeleteDevEndpoint": { - "input": { - "type": "structure", - "required": [ - "EndpointName" - ], - "members": { - "EndpointName": {} - } - }, - "output": { - "type": "structure", - "members": {} - } - }, - "DeleteJob": { - "input": { - "type": "structure", - "required": [ - "JobName" - ], - "members": { - "JobName": {} - } - }, - "output": { - "type": "structure", - "members": { - "JobName": {} - } - } - }, - "DeletePartition": { - "input": { - "type": "structure", - "required": [ - "DatabaseName", - "TableName", - "PartitionValues" - ], - "members": { - "CatalogId": {}, - "DatabaseName": {}, - "TableName": {}, - "PartitionValues": { - "shape": "S6" - } - } - }, - "output": { - "type": "structure", - "members": {} - } - }, - "DeleteTable": { - "input": { - "type": "structure", - "required": [ - "DatabaseName", - "Name" - ], - "members": { - "CatalogId": {}, - "DatabaseName": {}, - "Name": {} - } - }, - "output": { - "type": "structure", - "members": {} - } - }, - "DeleteTrigger": { - "input": { - "type": "structure", - "required": [ - "Name" - ], - "members": { - "Name": {} - } - }, - "output": { - "type": "structure", - "members": { - "Name": {} - } - } - }, - "DeleteUserDefinedFunction": { - "input": { - "type": "structure", - "required": [ - "DatabaseName", - "FunctionName" - ], - "members": { - "CatalogId": {}, - "DatabaseName": {}, - "FunctionName": {} - } - }, - "output": { - "type": "structure", - "members": {} - } - }, - "GetCatalogImportStatus": { - "input": { - "type": "structure", - "members": { - "CatalogId": {} - } - }, - "output": { - "type": "structure", - "members": { - "ImportStatus": { - "type": "structure", - "members": { - "ImportCompleted": { - "type": "boolean" - }, - "ImportTime": { - "type": "timestamp" - }, - "ImportedBy": {} - } - } - } - } - }, - "GetClassifier": { - "input": { - "type": "structure", - "required": [ - "Name" - ], - "members": { - "Name": {} - } - }, - "output": { - "type": "structure", - "members": { - "Classifier": { - "shape": "S4r" - } - } - } - }, - "GetClassifiers": { - "input": { - "type": "structure", - "members": { - "MaxResults": { - "type": "integer" - }, - "NextToken": {} - } - }, - "output": { - "type": "structure", - "members": { - "Classifiers": { - "type": "list", - "member": { - "shape": "S4r" - } - }, - "NextToken": {} - } - } - }, - "GetConnection": { - "input": { - "type": "structure", - "required": [ - "Name" - ], - "members": { - "CatalogId": {}, - "Name": {} - } - }, - "output": { - "type": "structure", - "members": { - "Connection": { - "shape": "S51" - } - } - } - }, - "GetConnections": { - "input": { - "type": "structure", - "members": { - "CatalogId": {}, - "Filter": { - "type": "structure", - "members": { - "MatchCriteria": { - "shape": "S1q" - }, - "ConnectionType": {} - } - }, - "NextToken": {}, - "MaxResults": { - "type": "integer" - } - } - }, - "output": { - "type": "structure", - "members": { - "ConnectionList": { - "type": "list", - "member": { - "shape": "S51" - } - }, - "NextToken": {} - } - } - }, - "GetCrawler": { - "input": { - "type": "structure", - "required": [ - "Name" - ], - "members": { - "Name": {} - } - }, - "output": { - "type": "structure", - "members": { - "Crawler": { - "shape": "S58" - } - } - } - }, - "GetCrawlerMetrics": { - "input": { - "type": "structure", - "members": { - "CrawlerNameList": { - "type": "list", - "member": {} - }, - "MaxResults": { - "type": "integer" - }, - "NextToken": {} - } - }, - "output": { - "type": "structure", - "members": { - "CrawlerMetricsList": { - "type": "list", - "member": { - "type": "structure", - "members": { - "CrawlerName": {}, - "TimeLeftSeconds": { - "type": "double" - }, - "StillEstimating": { - "type": "boolean" - }, - "LastRuntimeSeconds": { - "type": "double" - }, - "MedianRuntimeSeconds": { - "type": "double" - }, - "TablesCreated": { - "type": "integer" - }, - "TablesUpdated": { - "type": "integer" - }, - "TablesDeleted": { - "type": "integer" - } - } - } - }, - "NextToken": {} - } - } - }, - "GetCrawlers": { - "input": { - "type": "structure", - "members": { - "MaxResults": { - "type": "integer" - }, - "NextToken": {} - } - }, - "output": { - "type": "structure", - "members": { - "Crawlers": { - "type": "list", - "member": { - "shape": "S58" - } - }, - "NextToken": {} - } - } - }, - "GetDatabase": { - "input": { - "type": "structure", - "required": [ - "Name" - ], - "members": { - "CatalogId": {}, - "Name": {} - } - }, - "output": { - "type": "structure", - "members": { - "Database": { - "shape": "S5t" - } - } - } - }, - "GetDatabases": { - "input": { - "type": "structure", - "members": { - "CatalogId": {}, - "NextToken": {}, - "MaxResults": { - "type": "integer" - } - } - }, - "output": { - "type": "structure", - "required": [ - "DatabaseList" - ], - "members": { - "DatabaseList": { - "type": "list", - "member": { - "shape": "S5t" - } - }, - "NextToken": {} - } - } - }, - "GetDataflowGraph": { - "input": { - "type": "structure", - "members": { - "PythonScript": {} - } - }, - "output": { - "type": "structure", - "members": { - "DagNodes": { - "shape": "S32" - }, - "DagEdges": { - "shape": "S3a" - } - } - } - }, - "GetDevEndpoint": { - "input": { - "type": "structure", - "required": [ - "EndpointName" - ], - "members": { - "EndpointName": {} - } - }, - "output": { - "type": "structure", - "members": { - "DevEndpoint": { - "shape": "S61" - } - } - } - }, - "GetDevEndpoints": { - "input": { - "type": "structure", - "members": { - "MaxResults": { - "type": "integer" - }, - "NextToken": {} - } - }, - "output": { - "type": "structure", - "members": { - "DevEndpoints": { - "type": "list", - "member": { - "shape": "S61" - } - }, - "NextToken": {} - } - } - }, - "GetJob": { - "input": { - "type": "structure", - "required": [ - "JobName" - ], - "members": { - "JobName": {} - } - }, - "output": { - "type": "structure", - "members": { - "Job": { - "shape": "S67" - } - } - } - }, - "GetJobRun": { - "input": { - "type": "structure", - "required": [ - "JobName", - "RunId" - ], - "members": { - "JobName": {}, - "RunId": {}, - "PredecessorsIncluded": { - "type": "boolean" - } - } - }, - "output": { - "type": "structure", - "members": { - "JobRun": { - "shape": "S6c" - } - } - } - }, - "GetJobRuns": { - "input": { - "type": "structure", - "required": [ - "JobName" - ], - "members": { - "JobName": {}, - "NextToken": {}, - "MaxResults": { - "type": "integer" - } - } - }, - "output": { - "type": "structure", - "members": { - "JobRuns": { - "type": "list", - "member": { - "shape": "S6c" - } - }, - "NextToken": {} - } - } - }, - "GetJobs": { - "input": { - "type": "structure", - "members": { - "NextToken": {}, - "MaxResults": { - "type": "integer" - } - } - }, - "output": { - "type": "structure", - "members": { - "Jobs": { - "type": "list", - "member": { - "shape": "S67" - } - }, - "NextToken": {} - } - } - }, - "GetMapping": { - "input": { - "type": "structure", - "required": [ - "Source" - ], - "members": { - "Source": { - "shape": "S6o" - }, - "Sinks": { - "shape": "S6p" - }, - "Location": { - "shape": "S6q" - } - } - }, - "output": { - "type": "structure", - "required": [ - "Mapping" - ], - "members": { - "Mapping": { - "shape": "S6s" - } - } - } - }, - "GetPartition": { - "input": { - "type": "structure", - "required": [ - "DatabaseName", - "TableName", - "PartitionValues" - ], - "members": { - "CatalogId": {}, - "DatabaseName": {}, - "TableName": {}, - "PartitionValues": { - "shape": "S6" - } - } - }, - "output": { - "type": "structure", - "members": { - "Partition": { - "shape": "S1g" - } - } - } - }, - "GetPartitions": { - "input": { - "type": "structure", - "required": [ - "DatabaseName", - "TableName" - ], - "members": { - "CatalogId": {}, - "DatabaseName": {}, - "TableName": {}, - "Expression": {}, - "NextToken": {}, - "Segment": { - "type": "structure", - "required": [ - "SegmentNumber", - "TotalSegments" - ], - "members": { - "SegmentNumber": { - "type": "integer" - }, - "TotalSegments": { - "type": "integer" - } - } - }, - "MaxResults": { - "type": "integer" - } - } - }, - "output": { - "type": "structure", - "members": { - "Partitions": { - "shape": "S1f" - }, - "NextToken": {} - } - } - }, - "GetPlan": { - "input": { - "type": "structure", - "required": [ - "Mapping", - "Source" - ], - "members": { - "Mapping": { - "shape": "S6s" - }, - "Source": { - "shape": "S6o" - }, - "Sinks": { - "shape": "S6p" - }, - "Location": { - "shape": "S6q" - } - } - }, - "output": { - "type": "structure", - "members": { - "PythonScript": {} - } - } - }, - "GetTable": { - "input": { - "type": "structure", - "required": [ - "DatabaseName", - "Name" - ], - "members": { - "CatalogId": {}, - "DatabaseName": {}, - "Name": {} - } - }, - "output": { - "type": "structure", - "members": { - "Table": { - "shape": "S78" - } - } - } - }, - "GetTableVersions": { - "input": { - "type": "structure", - "required": [ - "DatabaseName", - "TableName" - ], - "members": { - "CatalogId": {}, - "DatabaseName": {}, - "TableName": {}, - "NextToken": {}, - "MaxResults": { - "type": "integer" - } - } - }, - "output": { - "type": "structure", - "members": { - "TableVersions": { - "type": "list", - "member": { - "type": "structure", - "members": { - "Table": { - "shape": "S78" - }, - "VersionId": {} - } - } - }, - "NextToken": {} - } - } - }, - "GetTables": { - "input": { - "type": "structure", - "required": [ - "DatabaseName" - ], - "members": { - "CatalogId": {}, - "DatabaseName": {}, - "Expression": {}, - "NextToken": {}, - "MaxResults": { - "type": "integer" - } - } - }, - "output": { - "type": "structure", - "members": { - "TableList": { - "type": "list", - "member": { - "shape": "S78" - } - }, - "NextToken": {} - } - } - }, - "GetTrigger": { - "input": { - "type": "structure", - "required": [ - "Name" - ], - "members": { - "Name": {} - } - }, - "output": { - "type": "structure", - "members": { - "Trigger": { - "shape": "S7k" - } - } - } - }, - "GetTriggers": { - "input": { - "type": "structure", - "members": { - "NextToken": {}, - "DependentJobName": {}, - "MaxResults": { - "type": "integer" - } - } - }, - "output": { - "type": "structure", - "members": { - "Triggers": { - "type": "list", - "member": { - "shape": "S7k" - } - }, - "NextToken": {} - } - } - }, - "GetUserDefinedFunction": { - "input": { - "type": "structure", - "required": [ - "DatabaseName", - "FunctionName" - ], - "members": { - "CatalogId": {}, - "DatabaseName": {}, - "FunctionName": {} - } - }, - "output": { - "type": "structure", - "members": { - "UserDefinedFunction": { - "shape": "S7r" - } - } - } - }, - "GetUserDefinedFunctions": { - "input": { - "type": "structure", - "required": [ - "DatabaseName", - "Pattern" - ], - "members": { - "CatalogId": {}, - "DatabaseName": {}, - "Pattern": {}, - "NextToken": {}, - "MaxResults": { - "type": "integer" - } - } - }, - "output": { - "type": "structure", - "members": { - "UserDefinedFunctions": { - "type": "list", - "member": { - "shape": "S7r" - } - }, - "NextToken": {} - } - } - }, - "ImportCatalogToGlue": { - "input": { - "type": "structure", - "members": { - "CatalogId": {} - } - }, - "output": { - "type": "structure", - "members": {} - } - }, - "ResetJobBookmark": { - "input": { - "type": "structure", - "required": [ - "JobName" - ], - "members": { - "JobName": {} - } - }, - "output": { - "type": "structure", - "members": { - "JobBookmarkEntry": { - "type": "structure", - "members": { - "JobName": {}, - "Version": { - "type": "integer" - }, - "Run": { - "type": "integer" - }, - "Attempt": { - "type": "integer" - }, - "JobBookmark": {} - } - } - } - } - }, - "StartCrawler": { - "input": { - "type": "structure", - "required": [ - "Name" - ], - "members": { - "Name": {} - } - }, - "output": { - "type": "structure", - "members": {} - } - }, - "StartCrawlerSchedule": { - "input": { - "type": "structure", - "required": [ - "CrawlerName" - ], - "members": { - "CrawlerName": {} - } - }, - "output": { - "type": "structure", - "members": {} - } - }, - "StartJobRun": { - "input": { - "type": "structure", - "required": [ - "JobName" - ], - "members": { - "JobName": {}, - "JobRunId": {}, - "Arguments": { - "shape": "S2v" - }, - "AllocatedCapacity": { - "type": "integer" - } - } - }, - "output": { - "type": "structure", - "members": { - "JobRunId": {} - } - } - }, - "StartTrigger": { - "input": { - "type": "structure", - "required": [ - "Name" - ], - "members": { - "Name": {} - } - }, - "output": { - "type": "structure", - "members": { - "Name": {} - } - } - }, - "StopCrawler": { - "input": { - "type": "structure", - "required": [ - "Name" - ], - "members": { - "Name": {} - } - }, - "output": { - "type": "structure", - "members": {} - } - }, - "StopCrawlerSchedule": { - "input": { - "type": "structure", - "required": [ - "CrawlerName" - ], - "members": { - "CrawlerName": {} - } - }, - "output": { - "type": "structure", - "members": {} - } - }, - "StopTrigger": { - "input": { - "type": "structure", - "required": [ - "Name" - ], - "members": { - "Name": {} - } - }, - "output": { - "type": "structure", - "members": { - "Name": {} - } - } - }, - "UpdateClassifier": { - "input": { - "type": "structure", - "members": { - "GrokClassifier": { - "type": "structure", - "required": [ - "Name" - ], - "members": { - "Name": {}, - "Classification": {}, - "GrokPattern": {}, - "CustomPatterns": {} - } - } - } - }, - "output": { - "type": "structure", - "members": {} - } - }, - "UpdateConnection": { - "input": { - "type": "structure", - "required": [ - "Name", - "ConnectionInput" - ], - "members": { - "CatalogId": {}, - "Name": {}, - "ConnectionInput": { - "shape": "S1o" - } - } - }, - "output": { - "type": "structure", - "members": {} - } - }, - "UpdateCrawler": { - "input": { - "type": "structure", - "required": [ - "Name" - ], - "members": { - "Name": {}, - "Role": {}, - "DatabaseName": {}, - "Description": {}, - "Targets": { - "shape": "S1z" - }, - "Schedule": {}, - "Classifiers": { - "shape": "S28" - }, - "TablePrefix": {}, - "SchemaChangePolicy": { - "shape": "S2a" - } - } - }, - "output": { - "type": "structure", - "members": {} - } - }, - "UpdateCrawlerSchedule": { - "input": { - "type": "structure", - "required": [ - "CrawlerName" - ], - "members": { - "CrawlerName": {}, - "Schedule": {} - } - }, - "output": { - "type": "structure", - "members": {} - } - }, - "UpdateDatabase": { - "input": { - "type": "structure", - "required": [ - "Name", - "DatabaseInput" - ], - "members": { - "CatalogId": {}, - "Name": {}, - "DatabaseInput": { - "shape": "S2f" - } - } - }, - "output": { - "type": "structure", - "members": {} - } - }, - "UpdateDevEndpoint": { - "input": { - "type": "structure", - "required": [ - "EndpointName" - ], - "members": { - "EndpointName": {}, - "PublicKey": {}, - "CustomLibraries": { - "type": "structure", - "members": { - "ExtraPythonLibsS3Path": {}, - "ExtraJarsS3Path": {} - } - } - } - }, - "output": { - "type": "structure", - "members": {} - } - }, - "UpdateJob": { - "input": { - "type": "structure", - "required": [ - "JobName", - "JobUpdate" - ], - "members": { - "JobName": {}, - "JobUpdate": { - "type": "structure", - "members": { - "Description": {}, - "LogUri": {}, - "Role": {}, - "ExecutionProperty": { - "shape": "S2r" - }, - "Command": { - "shape": "S2t" - }, - "DefaultArguments": { - "shape": "S2v" - }, - "Connections": { - "shape": "S2w" - }, - "MaxRetries": { - "type": "integer" - }, - "AllocatedCapacity": { - "type": "integer" - } - } - } - } - }, - "output": { - "type": "structure", - "members": { - "JobName": {} - } - } - }, - "UpdatePartition": { - "input": { - "type": "structure", - "required": [ - "DatabaseName", - "TableName", - "PartitionValueList", - "PartitionInput" - ], - "members": { - "CatalogId": {}, - "DatabaseName": {}, - "TableName": {}, - "PartitionValueList": { - "type": "list", - "member": {} - }, - "PartitionInput": { - "shape": "S5" - } - } - }, - "output": { - "type": "structure", - "members": {} - } - }, - "UpdateTable": { - "input": { - "type": "structure", - "required": [ - "DatabaseName", - "TableInput" - ], - "members": { - "CatalogId": {}, - "DatabaseName": {}, - "TableInput": { - "shape": "S3f" - } - } - }, - "output": { - "type": "structure", - "members": {} - } - }, - "UpdateTrigger": { - "input": { - "type": "structure", - "required": [ - "Name", - "TriggerUpdate" - ], - "members": { - "Name": {}, - "TriggerUpdate": { - "type": "structure", - "members": { - "Name": {}, - "Description": {}, - "Schedule": {}, - "Actions": { - "shape": "S3s" - }, - "Predicate": { - "shape": "S3m" - } - } - } - } - }, - "output": { - "type": "structure", - "members": { - "Trigger": { - "shape": "S7k" - } - } - } - }, - "UpdateUserDefinedFunction": { - "input": { - "type": "structure", - "required": [ - "DatabaseName", - "FunctionName", - "FunctionInput" - ], - "members": { - "CatalogId": {}, - "DatabaseName": {}, - "FunctionName": {}, - "FunctionInput": { - "shape": "S3w" - } - } - }, - "output": { - "type": "structure", - "members": {} - } - } - }, - "shapes": { - "S5": { - "type": "structure", - "members": { - "Values": { - "shape": "S6" - }, - "LastAccessTime": { - "type": "timestamp" - }, - "StorageDescriptor": { - "shape": "S9" - }, - "Parameters": { - "shape": "Sj" - }, - "LastAnalyzedTime": { - "type": "timestamp" - } - } - }, - "S6": { - "type": "list", - "member": {} - }, - "S9": { - "type": "structure", - "members": { - "Columns": { - "shape": "Sa" - }, - "Location": {}, - "InputFormat": {}, - "OutputFormat": {}, - "Compressed": { - "type": "boolean" - }, - "NumberOfBuckets": { - "type": "integer" - }, - "SerdeInfo": { - "type": "structure", - "members": { - "Name": {}, - "SerializationLibrary": {}, - "Parameters": { - "shape": "Sj" - } - } - }, - "BucketColumns": { - "shape": "Sm" - }, - "SortColumns": { - "type": "list", - "member": { - "type": "structure", - "required": [ - "Column", - "SortOrder" - ], - "members": { - "Column": {}, - "SortOrder": { - "type": "integer" - } - } - } - }, - "Parameters": { - "shape": "Sj" - }, - "SkewedInfo": { - "type": "structure", - "members": { - "SkewedColumnNames": { - "shape": "Sm" - }, - "SkewedColumnValues": { - "type": "list", - "member": {} - }, - "SkewedColumnValueLocationMaps": { - "type": "map", - "key": {}, - "value": {} - } - } - }, - "StoredAsSubDirectories": { - "type": "boolean" - } - } - }, - "Sa": { - "type": "list", - "member": { - "type": "structure", - "required": [ - "Name" - ], - "members": { - "Name": {}, - "Type": {}, - "Comment": {} - } - } - }, - "Sj": { - "type": "map", - "key": {}, - "value": {} - }, - "Sm": { - "type": "list", - "member": {} - }, - "Sv": { - "type": "list", - "member": { - "type": "structure", - "members": { - "PartitionValues": { - "shape": "S6" - }, - "ErrorDetail": { - "shape": "Sx" - } - } - } - }, - "Sx": { - "type": "structure", - "members": { - "ErrorCode": {}, - "ErrorMessage": {} - } - }, - "S15": { - "type": "structure", - "required": [ - "Values" - ], - "members": { - "Values": { - "shape": "S6" - } - } - }, - "S1d": { - "type": "list", - "member": { - "shape": "S15" - } - }, - "S1f": { - "type": "list", - "member": { - "shape": "S1g" - } - }, - "S1g": { - "type": "structure", - "members": { - "Values": { - "shape": "S6" - }, - "DatabaseName": {}, - "TableName": {}, - "CreationTime": { - "type": "timestamp" - }, - "LastAccessTime": { - "type": "timestamp" - }, - "StorageDescriptor": { - "shape": "S9" - }, - "Parameters": { - "shape": "Sj" - }, - "LastAnalyzedTime": { - "type": "timestamp" - } - } - }, - "S1o": { - "type": "structure", - "members": { - "Name": {}, - "Description": {}, - "ConnectionType": {}, - "MatchCriteria": { - "shape": "S1q" - }, - "ConnectionProperties": { - "shape": "S1r" - }, - "PhysicalConnectionRequirements": { - "shape": "S1t" - } - } - }, - "S1q": { - "type": "list", - "member": {} - }, - "S1r": { - "type": "map", - "key": {}, - "value": {} - }, - "S1t": { - "type": "structure", - "members": { - "SubnetId": {}, - "SecurityGroupIdList": { - "type": "list", - "member": {} - }, - "AvailabilityZone": {} - } - }, - "S1z": { - "type": "structure", - "members": { - "S3Targets": { - "type": "list", - "member": { - "type": "structure", - "members": { - "Path": {}, - "Exclusions": { - "shape": "S23" - } - } - } - }, - "JdbcTargets": { - "type": "list", - "member": { - "type": "structure", - "members": { - "ConnectionName": {}, - "Path": {}, - "Exclusions": { - "shape": "S23" - } - } - } - } - } - }, - "S23": { - "type": "list", - "member": {} - }, - "S28": { - "type": "list", - "member": {} - }, - "S2a": { - "type": "structure", - "members": { - "UpdateBehavior": {}, - "DeleteBehavior": {} - } - }, - "S2f": { - "type": "structure", - "required": [ - "Name" - ], - "members": { - "Name": {}, - "Description": {}, - "LocationUri": {}, - "Parameters": { - "shape": "Sj" - } - } - }, - "S2k": { - "type": "list", - "member": {} - }, - "S2r": { - "type": "structure", - "members": { - "MaxConcurrentRuns": { - "type": "integer" - } - } - }, - "S2t": { - "type": "structure", - "members": { - "Name": {}, - "ScriptLocation": {} - } - }, - "S2v": { - "type": "map", - "key": {}, - "value": {} - }, - "S2w": { - "type": "structure", - "members": { - "Connections": { - "shape": "S2k" - } - } - }, - "S32": { - "type": "list", - "member": { - "type": "structure", - "required": [ - "Id", - "NodeType", - "Args" - ], - "members": { - "Id": {}, - "NodeType": {}, - "Args": { - "shape": "S36" - }, - "LineNumber": { - "type": "integer" - } - } - } - }, - "S36": { - "type": "list", - "member": { - "type": "structure", - "required": [ - "Name", - "Value" - ], - "members": { - "Name": {}, - "Value": {}, - "Param": { - "type": "boolean" - } - } - } - }, - "S3a": { - "type": "list", - "member": { - "type": "structure", - "required": [ - "Source", - "Target" - ], - "members": { - "Source": {}, - "Target": {}, - "TargetParameter": {} - } - } - }, - "S3f": { - "type": "structure", - "required": [ - "Name" - ], - "members": { - "Name": {}, - "Description": {}, - "Owner": {}, - "LastAccessTime": { - "type": "timestamp" - }, - "LastAnalyzedTime": { - "type": "timestamp" - }, - "Retention": { - "type": "integer" - }, - "StorageDescriptor": { - "shape": "S9" - }, - "PartitionKeys": { - "shape": "Sa" - }, - "ViewOriginalText": {}, - "ViewExpandedText": {}, - "TableType": {}, - "Parameters": { - "shape": "Sj" - } - } - }, - "S3m": { - "type": "structure", - "members": { - "Logical": {}, - "Conditions": { - "type": "list", - "member": { - "type": "structure", - "members": { - "LogicalOperator": {}, - "JobName": {}, - "State": {} - } - } - } - } - }, - "S3s": { - "type": "list", - "member": { - "type": "structure", - "members": { - "JobName": {}, - "Arguments": { - "shape": "S2v" - } - } - } - }, - "S3w": { - "type": "structure", - "members": { - "FunctionName": {}, - "ClassName": {}, - "OwnerName": {}, - "OwnerType": {}, - "ResourceUris": { - "shape": "S3y" - } - } - }, - "S3y": { - "type": "list", - "member": { - "type": "structure", - "members": { - "ResourceType": {}, - "Uri": {} - } - } - }, - "S4r": { - "type": "structure", - "members": { - "GrokClassifier": { - "type": "structure", - "required": [ - "Name", - "Classification", - "GrokPattern" - ], - "members": { - "Name": {}, - "Classification": {}, - "CreationTime": { - "type": "timestamp" - }, - "LastUpdated": { - "type": "timestamp" - }, - "Version": { - "type": "long" - }, - "GrokPattern": {}, - "CustomPatterns": {} - } - } - } - }, - "S51": { - "type": "structure", - "members": { - "Name": {}, - "Description": {}, - "ConnectionType": {}, - "MatchCriteria": { - "shape": "S1q" - }, - "ConnectionProperties": { - "shape": "S1r" - }, - "PhysicalConnectionRequirements": { - "shape": "S1t" - }, - "CreationTime": { - "type": "timestamp" - }, - "LastUpdatedTime": { - "type": "timestamp" - }, - "LastUpdatedBy": {} - } - }, - "S58": { - "type": "structure", - "members": { - "Name": {}, - "Role": {}, - "Targets": { - "shape": "S1z" - }, - "DatabaseName": {}, - "Description": {}, - "Classifiers": { - "shape": "S28" - }, - "SchemaChangePolicy": { - "shape": "S2a" - }, - "State": {}, - "TablePrefix": {}, - "Schedule": { - "type": "structure", - "members": { - "ScheduleExpression": {}, - "State": {} - } - }, - "CrawlElapsedTime": { - "type": "long" - }, - "CreationTime": { - "type": "timestamp" - }, - "LastUpdated": { - "type": "timestamp" - }, - "LastCrawl": { - "type": "structure", - "members": { - "Status": {}, - "ErrorMessage": {}, - "LogGroup": {}, - "LogStream": {}, - "MessagePrefix": {}, - "StartTime": { - "type": "timestamp" - } - } - }, - "Version": { - "type": "long" - } - } - }, - "S5t": { - "type": "structure", - "required": [ - "Name" - ], - "members": { - "Name": {}, - "Description": {}, - "LocationUri": {}, - "Parameters": { - "shape": "Sj" - }, - "CreateTime": { - "type": "timestamp" - } - } - }, - "S61": { - "type": "structure", - "members": { - "EndpointName": {}, - "RoleArn": {}, - "SecurityGroupIds": { - "shape": "S2k" - }, - "SubnetId": {}, - "YarnEndpointAddress": {}, - "PublicAddress": {}, - "Status": {}, - "NumberOfNodes": { - "type": "integer" - }, - "AvailabilityZone": {}, - "VpcId": {}, - "ExtraPythonLibsS3Path": {}, - "ExtraJarsS3Path": {}, - "FailureReason": {}, - "LastUpdateStatus": {}, - "CreatedTimestamp": { - "type": "timestamp" - }, - "LastModifiedTimestamp": { - "type": "timestamp" - }, - "PublicKey": {} - } - }, - "S67": { - "type": "structure", - "members": { - "Name": {}, - "Description": {}, - "LogUri": {}, - "Role": {}, - "CreatedOn": { - "type": "timestamp" - }, - "LastModifiedOn": { - "type": "timestamp" - }, - "ExecutionProperty": { - "shape": "S2r" - }, - "Command": { - "shape": "S2t" - }, - "DefaultArguments": { - "shape": "S2v" - }, - "Connections": { - "shape": "S2w" - }, - "MaxRetries": { - "type": "integer" - }, - "AllocatedCapacity": { - "type": "integer" - } - } - }, - "S6c": { - "type": "structure", - "members": { - "Id": {}, - "Attempt": { - "type": "integer" - }, - "PreviousRunId": {}, - "TriggerName": {}, - "JobName": {}, - "StartedOn": { - "type": "timestamp" - }, - "LastModifiedOn": { - "type": "timestamp" - }, - "CompletedOn": { - "type": "timestamp" - }, - "JobRunState": {}, - "Arguments": { - "shape": "S2v" - }, - "ErrorMessage": {}, - "PredecessorRuns": { - "type": "list", - "member": { - "type": "structure", - "members": { - "JobName": {}, - "RunId": {} - } - } - }, - "AllocatedCapacity": { - "type": "integer" - } - } - }, - "S6o": { - "type": "structure", - "required": [ - "DatabaseName", - "TableName" - ], - "members": { - "DatabaseName": {}, - "TableName": {} - } - }, - "S6p": { - "type": "list", - "member": { - "shape": "S6o" - } - }, - "S6q": { - "type": "structure", - "members": { - "Jdbc": { - "shape": "S36" - }, - "S3": { - "shape": "S36" - } - } - }, - "S6s": { - "type": "list", - "member": { - "type": "structure", - "members": { - "SourceTable": {}, - "SourcePath": {}, - "SourceType": {}, - "TargetTable": {}, - "TargetPath": {}, - "TargetType": {} - } - } - }, - "S78": { - "type": "structure", - "required": [ - "Name" - ], - "members": { - "Name": {}, - "DatabaseName": {}, - "Description": {}, - "Owner": {}, - "CreateTime": { - "type": "timestamp" - }, - "UpdateTime": { - "type": "timestamp" - }, - "LastAccessTime": { - "type": "timestamp" - }, - "LastAnalyzedTime": { - "type": "timestamp" - }, - "Retention": { - "type": "integer" - }, - "StorageDescriptor": { - "shape": "S9" - }, - "PartitionKeys": { - "shape": "Sa" - }, - "ViewOriginalText": {}, - "ViewExpandedText": {}, - "TableType": {}, - "Parameters": { - "shape": "Sj" - }, - "CreatedBy": {} - } - }, - "S7k": { - "type": "structure", - "members": { - "Name": {}, - "Id": {}, - "Type": {}, - "State": {}, - "Description": {}, - "Schedule": {}, - "Actions": { - "shape": "S3s" - }, - "Predicate": { - "shape": "S3m" - } - } - }, - "S7r": { - "type": "structure", - "members": { - "FunctionName": {}, - "ClassName": {}, - "OwnerName": {}, - "OwnerType": {}, - "CreateTime": { - "type": "timestamp" - }, - "ResourceUris": { - "shape": "S3y" - } - } - } - } -} \ No newline at end of file diff --git a/workshops/monte-carlo-on-ec2-spot-fleet/src/web/node_modules/aws-sdk/apis/glue-2017-03-31.paginators.json b/workshops/monte-carlo-on-ec2-spot-fleet/src/web/node_modules/aws-sdk/apis/glue-2017-03-31.paginators.json deleted file mode 100644 index aecd4ce6..00000000 --- a/workshops/monte-carlo-on-ec2-spot-fleet/src/web/node_modules/aws-sdk/apis/glue-2017-03-31.paginators.json +++ /dev/null @@ -1,69 +0,0 @@ -{ - "pagination": { - "GetClassifiers": { - "input_token": "NextToken", - "output_token": "NextToken", - "limit_key": "MaxResults" - }, - "GetConnections": { - "input_token": "NextToken", - "output_token": "NextToken", - "limit_key": "MaxResults" - }, - "GetCrawlerMetrics": { - "input_token": "NextToken", - "output_token": "NextToken", - "limit_key": "MaxResults" - }, - "GetCrawlers": { - "input_token": "NextToken", - "output_token": "NextToken", - "limit_key": "MaxResults" - }, - "GetDatabases": { - "input_token": "NextToken", - "output_token": "NextToken", - "limit_key": "MaxResults" - }, - "GetDevEndpoints": { - "input_token": "NextToken", - "output_token": "NextToken", - "limit_key": "MaxResults" - }, - "GetJobRuns": { - "input_token": "NextToken", - "output_token": "NextToken", - "limit_key": "MaxResults" - }, - "GetJobs": { - "input_token": "NextToken", - "output_token": "NextToken", - "limit_key": "MaxResults" - }, - "GetPartitions": { - "input_token": "NextToken", - "output_token": "NextToken", - "limit_key": "MaxResults" - }, - "GetTableVersions": { - "input_token": "NextToken", - "output_token": "NextToken", - "limit_key": "MaxResults" - }, - "GetTables": { - "input_token": "NextToken", - "output_token": "NextToken", - "limit_key": "MaxResults" - }, - "GetTriggers": { - "input_token": "NextToken", - "output_token": "NextToken", - "limit_key": "MaxResults" - }, - "GetUserDefinedFunctions": { - "input_token": "NextToken", - "output_token": "NextToken", - "limit_key": "MaxResults" - } - } -} diff --git a/workshops/monte-carlo-on-ec2-spot-fleet/src/web/node_modules/aws-sdk/apis/greengrass-2017-06-07.min.json b/workshops/monte-carlo-on-ec2-spot-fleet/src/web/node_modules/aws-sdk/apis/greengrass-2017-06-07.min.json deleted file mode 100644 index c48fcb5d..00000000 --- a/workshops/monte-carlo-on-ec2-spot-fleet/src/web/node_modules/aws-sdk/apis/greengrass-2017-06-07.min.json +++ /dev/null @@ -1,2170 +0,0 @@ -{ - "metadata": { - "apiVersion": "2017-06-07", - "endpointPrefix": "greengrass", - "signingName": "greengrass", - "serviceFullName": "AWS Greengrass", - "protocol": "rest-json", - "jsonVersion": "1.1", - "uid": "greengrass-2017-06-07", - "signatureVersion": "v4" - }, - "operations": { - "AssociateRoleToGroup": { - "http": { - "method": "PUT", - "requestUri": "/greengrass/groups/{GroupId}/role", - "responseCode": 200 - }, - "input": { - "type": "structure", - "members": { - "GroupId": { - "location": "uri", - "locationName": "GroupId" - }, - "RoleArn": {} - }, - "required": [ - "GroupId" - ] - }, - "output": { - "type": "structure", - "members": { - "AssociatedAt": {} - } - } - }, - "AssociateServiceRoleToAccount": { - "http": { - "method": "PUT", - "requestUri": "/greengrass/servicerole", - "responseCode": 200 - }, - "input": { - "type": "structure", - "members": { - "RoleArn": {} - } - }, - "output": { - "type": "structure", - "members": { - "AssociatedAt": {} - } - } - }, - "CreateCoreDefinition": { - "http": { - "requestUri": "/greengrass/definition/cores", - "responseCode": 200 - }, - "input": { - "type": "structure", - "members": { - "AmznClientToken": { - "location": "header", - "locationName": "X-Amzn-Client-Token" - }, - "InitialVersion": { - "shape": "S7" - }, - "Name": {} - } - }, - "output": { - "type": "structure", - "members": { - "Arn": {}, - "CreationTimestamp": {}, - "Id": {}, - "LastUpdatedTimestamp": {}, - "LatestVersion": {}, - "LatestVersionArn": {}, - "Name": {} - } - } - }, - "CreateCoreDefinitionVersion": { - "http": { - "requestUri": "/greengrass/definition/cores/{CoreDefinitionId}/versions", - "responseCode": 200 - }, - "input": { - "type": "structure", - "members": { - "AmznClientToken": { - "location": "header", - "locationName": "X-Amzn-Client-Token" - }, - "CoreDefinitionId": { - "location": "uri", - "locationName": "CoreDefinitionId" - }, - "Cores": { - "shape": "S8" - } - }, - "required": [ - "CoreDefinitionId" - ] - }, - "output": { - "type": "structure", - "members": { - "Arn": {}, - "CreationTimestamp": {}, - "Id": {}, - "Version": {} - } - } - }, - "CreateDeployment": { - "http": { - "requestUri": "/greengrass/groups/{GroupId}/deployments", - "responseCode": 200 - }, - "input": { - "type": "structure", - "members": { - "AmznClientToken": { - "location": "header", - "locationName": "X-Amzn-Client-Token" - }, - "DeploymentId": {}, - "DeploymentType": {}, - "GroupId": { - "location": "uri", - "locationName": "GroupId" - }, - "GroupVersionId": {} - }, - "required": [ - "GroupId" - ] - }, - "output": { - "type": "structure", - "members": { - "DeploymentArn": {}, - "DeploymentId": {} - } - } - }, - "CreateDeviceDefinition": { - "http": { - "requestUri": "/greengrass/definition/devices", - "responseCode": 200 - }, - "input": { - "type": "structure", - "members": { - "AmznClientToken": { - "location": "header", - "locationName": "X-Amzn-Client-Token" - }, - "InitialVersion": { - "shape": "Si" - }, - "Name": {} - } - }, - "output": { - "type": "structure", - "members": { - "Arn": {}, - "CreationTimestamp": {}, - "Id": {}, - "LastUpdatedTimestamp": {}, - "LatestVersion": {}, - "LatestVersionArn": {}, - "Name": {} - } - } - }, - "CreateDeviceDefinitionVersion": { - "http": { - "requestUri": "/greengrass/definition/devices/{DeviceDefinitionId}/versions", - "responseCode": 200 - }, - "input": { - "type": "structure", - "members": { - "AmznClientToken": { - "location": "header", - "locationName": "X-Amzn-Client-Token" - }, - "DeviceDefinitionId": { - "location": "uri", - "locationName": "DeviceDefinitionId" - }, - "Devices": { - "shape": "Sj" - } - }, - "required": [ - "DeviceDefinitionId" - ] - }, - "output": { - "type": "structure", - "members": { - "Arn": {}, - "CreationTimestamp": {}, - "Id": {}, - "Version": {} - } - } - }, - "CreateFunctionDefinition": { - "http": { - "requestUri": "/greengrass/definition/functions", - "responseCode": 200 - }, - "input": { - "type": "structure", - "members": { - "AmznClientToken": { - "location": "header", - "locationName": "X-Amzn-Client-Token" - }, - "InitialVersion": { - "shape": "Sp" - }, - "Name": {} - } - }, - "output": { - "type": "structure", - "members": { - "Arn": {}, - "CreationTimestamp": {}, - "Id": {}, - "LastUpdatedTimestamp": {}, - "LatestVersion": {}, - "LatestVersionArn": {}, - "Name": {} - } - } - }, - "CreateFunctionDefinitionVersion": { - "http": { - "requestUri": "/greengrass/definition/functions/{FunctionDefinitionId}/versions", - "responseCode": 200 - }, - "input": { - "type": "structure", - "members": { - "AmznClientToken": { - "location": "header", - "locationName": "X-Amzn-Client-Token" - }, - "FunctionDefinitionId": { - "location": "uri", - "locationName": "FunctionDefinitionId" - }, - "Functions": { - "shape": "Sq" - } - }, - "required": [ - "FunctionDefinitionId" - ] - }, - "output": { - "type": "structure", - "members": { - "Arn": {}, - "CreationTimestamp": {}, - "Id": {}, - "Version": {} - } - } - }, - "CreateGroup": { - "http": { - "requestUri": "/greengrass/groups", - "responseCode": 200 - }, - "input": { - "type": "structure", - "members": { - "AmznClientToken": { - "location": "header", - "locationName": "X-Amzn-Client-Token" - }, - "InitialVersion": { - "shape": "S10" - }, - "Name": {} - } - }, - "output": { - "type": "structure", - "members": { - "Arn": {}, - "CreationTimestamp": {}, - "Id": {}, - "LastUpdatedTimestamp": {}, - "LatestVersion": {}, - "LatestVersionArn": {}, - "Name": {} - } - } - }, - "CreateGroupCertificateAuthority": { - "http": { - "requestUri": "/greengrass/groups/{GroupId}/certificateauthorities", - "responseCode": 200 - }, - "input": { - "type": "structure", - "members": { - "AmznClientToken": { - "location": "header", - "locationName": "X-Amzn-Client-Token" - }, - "GroupId": { - "location": "uri", - "locationName": "GroupId" - } - }, - "required": [ - "GroupId" - ] - }, - "output": { - "type": "structure", - "members": { - "GroupCertificateAuthorityArn": {} - } - } - }, - "CreateGroupVersion": { - "http": { - "requestUri": "/greengrass/groups/{GroupId}/versions", - "responseCode": 200 - }, - "input": { - "type": "structure", - "members": { - "AmznClientToken": { - "location": "header", - "locationName": "X-Amzn-Client-Token" - }, - "CoreDefinitionVersionArn": {}, - "DeviceDefinitionVersionArn": {}, - "FunctionDefinitionVersionArn": {}, - "GroupId": { - "location": "uri", - "locationName": "GroupId" - }, - "LoggerDefinitionVersionArn": {}, - "SubscriptionDefinitionVersionArn": {} - }, - "required": [ - "GroupId" - ] - }, - "output": { - "type": "structure", - "members": { - "Arn": {}, - "CreationTimestamp": {}, - "Id": {}, - "Version": {} - } - } - }, - "CreateLoggerDefinition": { - "http": { - "requestUri": "/greengrass/definition/loggers", - "responseCode": 200 - }, - "input": { - "type": "structure", - "members": { - "AmznClientToken": { - "location": "header", - "locationName": "X-Amzn-Client-Token" - }, - "InitialVersion": { - "shape": "S17" - }, - "Name": {} - } - }, - "output": { - "type": "structure", - "members": { - "Arn": {}, - "CreationTimestamp": {}, - "Id": {}, - "LastUpdatedTimestamp": {}, - "LatestVersion": {}, - "LatestVersionArn": {}, - "Name": {} - } - } - }, - "CreateLoggerDefinitionVersion": { - "http": { - "requestUri": "/greengrass/definition/loggers/{LoggerDefinitionId}/versions", - "responseCode": 200 - }, - "input": { - "type": "structure", - "members": { - "AmznClientToken": { - "location": "header", - "locationName": "X-Amzn-Client-Token" - }, - "LoggerDefinitionId": { - "location": "uri", - "locationName": "LoggerDefinitionId" - }, - "Loggers": { - "shape": "S18" - } - }, - "required": [ - "LoggerDefinitionId" - ] - }, - "output": { - "type": "structure", - "members": { - "Arn": {}, - "CreationTimestamp": {}, - "Id": {}, - "Version": {} - } - } - }, - "CreateSubscriptionDefinition": { - "http": { - "requestUri": "/greengrass/definition/subscriptions", - "responseCode": 200 - }, - "input": { - "type": "structure", - "members": { - "AmznClientToken": { - "location": "header", - "locationName": "X-Amzn-Client-Token" - }, - "InitialVersion": { - "shape": "S1h" - }, - "Name": {} - } - }, - "output": { - "type": "structure", - "members": { - "Arn": {}, - "CreationTimestamp": {}, - "Id": {}, - "LastUpdatedTimestamp": {}, - "LatestVersion": {}, - "LatestVersionArn": {}, - "Name": {} - } - } - }, - "CreateSubscriptionDefinitionVersion": { - "http": { - "requestUri": "/greengrass/definition/subscriptions/{SubscriptionDefinitionId}/versions", - "responseCode": 200 - }, - "input": { - "type": "structure", - "members": { - "AmznClientToken": { - "location": "header", - "locationName": "X-Amzn-Client-Token" - }, - "SubscriptionDefinitionId": { - "location": "uri", - "locationName": "SubscriptionDefinitionId" - }, - "Subscriptions": { - "shape": "S1i" - } - }, - "required": [ - "SubscriptionDefinitionId" - ] - }, - "output": { - "type": "structure", - "members": { - "Arn": {}, - "CreationTimestamp": {}, - "Id": {}, - "Version": {} - } - } - }, - "DeleteCoreDefinition": { - "http": { - "method": "DELETE", - "requestUri": "/greengrass/definition/cores/{CoreDefinitionId}", - "responseCode": 200 - }, - "input": { - "type": "structure", - "members": { - "CoreDefinitionId": { - "location": "uri", - "locationName": "CoreDefinitionId" - } - }, - "required": [ - "CoreDefinitionId" - ] - }, - "output": { - "type": "structure", - "members": {} - } - }, - "DeleteDeviceDefinition": { - "http": { - "method": "DELETE", - "requestUri": "/greengrass/definition/devices/{DeviceDefinitionId}", - "responseCode": 200 - }, - "input": { - "type": "structure", - "members": { - "DeviceDefinitionId": { - "location": "uri", - "locationName": "DeviceDefinitionId" - } - }, - "required": [ - "DeviceDefinitionId" - ] - }, - "output": { - "type": "structure", - "members": {} - } - }, - "DeleteFunctionDefinition": { - "http": { - "method": "DELETE", - "requestUri": "/greengrass/definition/functions/{FunctionDefinitionId}", - "responseCode": 200 - }, - "input": { - "type": "structure", - "members": { - "FunctionDefinitionId": { - "location": "uri", - "locationName": "FunctionDefinitionId" - } - }, - "required": [ - "FunctionDefinitionId" - ] - }, - "output": { - "type": "structure", - "members": {} - } - }, - "DeleteGroup": { - "http": { - "method": "DELETE", - "requestUri": "/greengrass/groups/{GroupId}", - "responseCode": 200 - }, - "input": { - "type": "structure", - "members": { - "GroupId": { - "location": "uri", - "locationName": "GroupId" - } - }, - "required": [ - "GroupId" - ] - }, - "output": { - "type": "structure", - "members": {} - } - }, - "DeleteLoggerDefinition": { - "http": { - "method": "DELETE", - "requestUri": "/greengrass/definition/loggers/{LoggerDefinitionId}", - "responseCode": 200 - }, - "input": { - "type": "structure", - "members": { - "LoggerDefinitionId": { - "location": "uri", - "locationName": "LoggerDefinitionId" - } - }, - "required": [ - "LoggerDefinitionId" - ] - }, - "output": { - "type": "structure", - "members": {} - } - }, - "DeleteSubscriptionDefinition": { - "http": { - "method": "DELETE", - "requestUri": "/greengrass/definition/subscriptions/{SubscriptionDefinitionId}", - "responseCode": 200 - }, - "input": { - "type": "structure", - "members": { - "SubscriptionDefinitionId": { - "location": "uri", - "locationName": "SubscriptionDefinitionId" - } - }, - "required": [ - "SubscriptionDefinitionId" - ] - }, - "output": { - "type": "structure", - "members": {} - } - }, - "DisassociateRoleFromGroup": { - "http": { - "method": "DELETE", - "requestUri": "/greengrass/groups/{GroupId}/role", - "responseCode": 200 - }, - "input": { - "type": "structure", - "members": { - "GroupId": { - "location": "uri", - "locationName": "GroupId" - } - }, - "required": [ - "GroupId" - ] - }, - "output": { - "type": "structure", - "members": { - "DisassociatedAt": {} - } - } - }, - "DisassociateServiceRoleFromAccount": { - "http": { - "method": "DELETE", - "requestUri": "/greengrass/servicerole", - "responseCode": 200 - }, - "input": { - "type": "structure", - "members": {} - }, - "output": { - "type": "structure", - "members": { - "DisassociatedAt": {} - } - } - }, - "GetAssociatedRole": { - "http": { - "method": "GET", - "requestUri": "/greengrass/groups/{GroupId}/role", - "responseCode": 200 - }, - "input": { - "type": "structure", - "members": { - "GroupId": { - "location": "uri", - "locationName": "GroupId" - } - }, - "required": [ - "GroupId" - ] - }, - "output": { - "type": "structure", - "members": { - "AssociatedAt": {}, - "RoleArn": {} - } - } - }, - "GetConnectivityInfo": { - "http": { - "method": "GET", - "requestUri": "/greengrass/things/{ThingName}/connectivityInfo", - "responseCode": 200 - }, - "input": { - "type": "structure", - "members": { - "ThingName": { - "location": "uri", - "locationName": "ThingName" - } - }, - "required": [ - "ThingName" - ] - }, - "output": { - "type": "structure", - "members": { - "ConnectivityInfo": { - "shape": "S27" - }, - "Message": { - "locationName": "message" - } - } - } - }, - "GetCoreDefinition": { - "http": { - "method": "GET", - "requestUri": "/greengrass/definition/cores/{CoreDefinitionId}", - "responseCode": 200 - }, - "input": { - "type": "structure", - "members": { - "CoreDefinitionId": { - "location": "uri", - "locationName": "CoreDefinitionId" - } - }, - "required": [ - "CoreDefinitionId" - ] - }, - "output": { - "type": "structure", - "members": { - "Arn": {}, - "CreationTimestamp": {}, - "Id": {}, - "LastUpdatedTimestamp": {}, - "LatestVersion": {}, - "LatestVersionArn": {}, - "Name": {} - } - } - }, - "GetCoreDefinitionVersion": { - "http": { - "method": "GET", - "requestUri": "/greengrass/definition/cores/{CoreDefinitionId}/versions/{CoreDefinitionVersionId}", - "responseCode": 200 - }, - "input": { - "type": "structure", - "members": { - "CoreDefinitionId": { - "location": "uri", - "locationName": "CoreDefinitionId" - }, - "CoreDefinitionVersionId": { - "location": "uri", - "locationName": "CoreDefinitionVersionId" - } - }, - "required": [ - "CoreDefinitionId", - "CoreDefinitionVersionId" - ] - }, - "output": { - "type": "structure", - "members": { - "Arn": {}, - "CreationTimestamp": {}, - "Definition": { - "shape": "S7" - }, - "Id": {}, - "Version": {} - } - } - }, - "GetDeploymentStatus": { - "http": { - "method": "GET", - "requestUri": "/greengrass/groups/{GroupId}/deployments/{DeploymentId}/status", - "responseCode": 200 - }, - "input": { - "type": "structure", - "members": { - "DeploymentId": { - "location": "uri", - "locationName": "DeploymentId" - }, - "GroupId": { - "location": "uri", - "locationName": "GroupId" - } - }, - "required": [ - "GroupId", - "DeploymentId" - ] - }, - "output": { - "type": "structure", - "members": { - "DeploymentStatus": {}, - "DeploymentType": {}, - "ErrorDetails": { - "type": "list", - "member": { - "type": "structure", - "members": { - "DetailedErrorCode": {}, - "DetailedErrorMessage": {} - } - } - }, - "ErrorMessage": {}, - "UpdatedAt": {} - } - } - }, - "GetDeviceDefinition": { - "http": { - "method": "GET", - "requestUri": "/greengrass/definition/devices/{DeviceDefinitionId}", - "responseCode": 200 - }, - "input": { - "type": "structure", - "members": { - "DeviceDefinitionId": { - "location": "uri", - "locationName": "DeviceDefinitionId" - } - }, - "required": [ - "DeviceDefinitionId" - ] - }, - "output": { - "type": "structure", - "members": { - "Arn": {}, - "CreationTimestamp": {}, - "Id": {}, - "LastUpdatedTimestamp": {}, - "LatestVersion": {}, - "LatestVersionArn": {}, - "Name": {} - } - } - }, - "GetDeviceDefinitionVersion": { - "http": { - "method": "GET", - "requestUri": "/greengrass/definition/devices/{DeviceDefinitionId}/versions/{DeviceDefinitionVersionId}", - "responseCode": 200 - }, - "input": { - "type": "structure", - "members": { - "DeviceDefinitionId": { - "location": "uri", - "locationName": "DeviceDefinitionId" - }, - "DeviceDefinitionVersionId": { - "location": "uri", - "locationName": "DeviceDefinitionVersionId" - } - }, - "required": [ - "DeviceDefinitionVersionId", - "DeviceDefinitionId" - ] - }, - "output": { - "type": "structure", - "members": { - "Arn": {}, - "CreationTimestamp": {}, - "Definition": { - "shape": "Si" - }, - "Id": {}, - "Version": {} - } - } - }, - "GetFunctionDefinition": { - "http": { - "method": "GET", - "requestUri": "/greengrass/definition/functions/{FunctionDefinitionId}", - "responseCode": 200 - }, - "input": { - "type": "structure", - "members": { - "FunctionDefinitionId": { - "location": "uri", - "locationName": "FunctionDefinitionId" - } - }, - "required": [ - "FunctionDefinitionId" - ] - }, - "output": { - "type": "structure", - "members": { - "Arn": {}, - "CreationTimestamp": {}, - "Id": {}, - "LastUpdatedTimestamp": {}, - "LatestVersion": {}, - "LatestVersionArn": {}, - "Name": {} - } - } - }, - "GetFunctionDefinitionVersion": { - "http": { - "method": "GET", - "requestUri": "/greengrass/definition/functions/{FunctionDefinitionId}/versions/{FunctionDefinitionVersionId}", - "responseCode": 200 - }, - "input": { - "type": "structure", - "members": { - "FunctionDefinitionId": { - "location": "uri", - "locationName": "FunctionDefinitionId" - }, - "FunctionDefinitionVersionId": { - "location": "uri", - "locationName": "FunctionDefinitionVersionId" - } - }, - "required": [ - "FunctionDefinitionId", - "FunctionDefinitionVersionId" - ] - }, - "output": { - "type": "structure", - "members": { - "Arn": {}, - "CreationTimestamp": {}, - "Definition": { - "shape": "Sp" - }, - "Id": {}, - "Version": {} - } - } - }, - "GetGroup": { - "http": { - "method": "GET", - "requestUri": "/greengrass/groups/{GroupId}", - "responseCode": 200 - }, - "input": { - "type": "structure", - "members": { - "GroupId": { - "location": "uri", - "locationName": "GroupId" - } - }, - "required": [ - "GroupId" - ] - }, - "output": { - "type": "structure", - "members": { - "Arn": {}, - "CreationTimestamp": {}, - "Id": {}, - "LastUpdatedTimestamp": {}, - "LatestVersion": {}, - "LatestVersionArn": {}, - "Name": {} - } - } - }, - "GetGroupCertificateAuthority": { - "http": { - "method": "GET", - "requestUri": "/greengrass/groups/{GroupId}/certificateauthorities/{CertificateAuthorityId}", - "responseCode": 200 - }, - "input": { - "type": "structure", - "members": { - "CertificateAuthorityId": { - "location": "uri", - "locationName": "CertificateAuthorityId" - }, - "GroupId": { - "location": "uri", - "locationName": "GroupId" - } - }, - "required": [ - "CertificateAuthorityId", - "GroupId" - ] - }, - "output": { - "type": "structure", - "members": { - "GroupCertificateAuthorityArn": {}, - "GroupCertificateAuthorityId": {}, - "PemEncodedCertificate": {} - } - } - }, - "GetGroupCertificateConfiguration": { - "http": { - "method": "GET", - "requestUri": "/greengrass/groups/{GroupId}/certificateauthorities/configuration/expiry", - "responseCode": 200 - }, - "input": { - "type": "structure", - "members": { - "GroupId": { - "location": "uri", - "locationName": "GroupId" - } - }, - "required": [ - "GroupId" - ] - }, - "output": { - "type": "structure", - "members": { - "CertificateAuthorityExpiryInMilliseconds": {}, - "CertificateExpiryInMilliseconds": {}, - "GroupId": {} - } - } - }, - "GetGroupVersion": { - "http": { - "method": "GET", - "requestUri": "/greengrass/groups/{GroupId}/versions/{GroupVersionId}", - "responseCode": 200 - }, - "input": { - "type": "structure", - "members": { - "GroupId": { - "location": "uri", - "locationName": "GroupId" - }, - "GroupVersionId": { - "location": "uri", - "locationName": "GroupVersionId" - } - }, - "required": [ - "GroupVersionId", - "GroupId" - ] - }, - "output": { - "type": "structure", - "members": { - "Arn": {}, - "CreationTimestamp": {}, - "Definition": { - "shape": "S10" - }, - "Id": {}, - "Version": {} - } - } - }, - "GetLoggerDefinition": { - "http": { - "method": "GET", - "requestUri": "/greengrass/definition/loggers/{LoggerDefinitionId}", - "responseCode": 200 - }, - "input": { - "type": "structure", - "members": { - "LoggerDefinitionId": { - "location": "uri", - "locationName": "LoggerDefinitionId" - } - }, - "required": [ - "LoggerDefinitionId" - ] - }, - "output": { - "type": "structure", - "members": { - "Arn": {}, - "CreationTimestamp": {}, - "Id": {}, - "LastUpdatedTimestamp": {}, - "LatestVersion": {}, - "LatestVersionArn": {}, - "Name": {} - } - } - }, - "GetLoggerDefinitionVersion": { - "http": { - "method": "GET", - "requestUri": "/greengrass/definition/loggers/{LoggerDefinitionId}/versions/{LoggerDefinitionVersionId}", - "responseCode": 200 - }, - "input": { - "type": "structure", - "members": { - "LoggerDefinitionId": { - "location": "uri", - "locationName": "LoggerDefinitionId" - }, - "LoggerDefinitionVersionId": { - "location": "uri", - "locationName": "LoggerDefinitionVersionId" - } - }, - "required": [ - "LoggerDefinitionVersionId", - "LoggerDefinitionId" - ] - }, - "output": { - "type": "structure", - "members": { - "Arn": {}, - "CreationTimestamp": {}, - "Definition": { - "shape": "S17" - }, - "Id": {}, - "Version": {} - } - } - }, - "GetServiceRoleForAccount": { - "http": { - "method": "GET", - "requestUri": "/greengrass/servicerole", - "responseCode": 200 - }, - "input": { - "type": "structure", - "members": {} - }, - "output": { - "type": "structure", - "members": { - "AssociatedAt": {}, - "RoleArn": {} - } - } - }, - "GetSubscriptionDefinition": { - "http": { - "method": "GET", - "requestUri": "/greengrass/definition/subscriptions/{SubscriptionDefinitionId}", - "responseCode": 200 - }, - "input": { - "type": "structure", - "members": { - "SubscriptionDefinitionId": { - "location": "uri", - "locationName": "SubscriptionDefinitionId" - } - }, - "required": [ - "SubscriptionDefinitionId" - ] - }, - "output": { - "type": "structure", - "members": { - "Arn": {}, - "CreationTimestamp": {}, - "Id": {}, - "LastUpdatedTimestamp": {}, - "LatestVersion": {}, - "LatestVersionArn": {}, - "Name": {} - } - } - }, - "GetSubscriptionDefinitionVersion": { - "http": { - "method": "GET", - "requestUri": "/greengrass/definition/subscriptions/{SubscriptionDefinitionId}/versions/{SubscriptionDefinitionVersionId}", - "responseCode": 200 - }, - "input": { - "type": "structure", - "members": { - "SubscriptionDefinitionId": { - "location": "uri", - "locationName": "SubscriptionDefinitionId" - }, - "SubscriptionDefinitionVersionId": { - "location": "uri", - "locationName": "SubscriptionDefinitionVersionId" - } - }, - "required": [ - "SubscriptionDefinitionId", - "SubscriptionDefinitionVersionId" - ] - }, - "output": { - "type": "structure", - "members": { - "Arn": {}, - "CreationTimestamp": {}, - "Definition": { - "shape": "S1h" - }, - "Id": {}, - "Version": {} - } - } - }, - "ListCoreDefinitionVersions": { - "http": { - "method": "GET", - "requestUri": "/greengrass/definition/cores/{CoreDefinitionId}/versions", - "responseCode": 200 - }, - "input": { - "type": "structure", - "members": { - "CoreDefinitionId": { - "location": "uri", - "locationName": "CoreDefinitionId" - }, - "MaxResults": { - "location": "querystring", - "locationName": "MaxResults" - }, - "NextToken": { - "location": "querystring", - "locationName": "NextToken" - } - }, - "required": [ - "CoreDefinitionId" - ] - }, - "output": { - "type": "structure", - "members": { - "NextToken": {}, - "Versions": { - "shape": "S39" - } - } - } - }, - "ListCoreDefinitions": { - "http": { - "method": "GET", - "requestUri": "/greengrass/definition/cores", - "responseCode": 200 - }, - "input": { - "type": "structure", - "members": { - "MaxResults": { - "location": "querystring", - "locationName": "MaxResults" - }, - "NextToken": { - "location": "querystring", - "locationName": "NextToken" - } - } - }, - "output": { - "type": "structure", - "members": { - "Definitions": { - "shape": "S3d" - }, - "NextToken": {} - } - } - }, - "ListDeployments": { - "http": { - "method": "GET", - "requestUri": "/greengrass/groups/{GroupId}/deployments", - "responseCode": 200 - }, - "input": { - "type": "structure", - "members": { - "GroupId": { - "location": "uri", - "locationName": "GroupId" - }, - "MaxResults": { - "location": "querystring", - "locationName": "MaxResults" - }, - "NextToken": { - "location": "querystring", - "locationName": "NextToken" - } - }, - "required": [ - "GroupId" - ] - }, - "output": { - "type": "structure", - "members": { - "Deployments": { - "type": "list", - "member": { - "type": "structure", - "members": { - "CreatedAt": {}, - "DeploymentArn": {}, - "DeploymentId": {}, - "DeploymentType": {}, - "GroupArn": {} - } - } - }, - "NextToken": {} - } - } - }, - "ListDeviceDefinitionVersions": { - "http": { - "method": "GET", - "requestUri": "/greengrass/definition/devices/{DeviceDefinitionId}/versions", - "responseCode": 200 - }, - "input": { - "type": "structure", - "members": { - "DeviceDefinitionId": { - "location": "uri", - "locationName": "DeviceDefinitionId" - }, - "MaxResults": { - "location": "querystring", - "locationName": "MaxResults" - }, - "NextToken": { - "location": "querystring", - "locationName": "NextToken" - } - }, - "required": [ - "DeviceDefinitionId" - ] - }, - "output": { - "type": "structure", - "members": { - "NextToken": {}, - "Versions": { - "shape": "S39" - } - } - } - }, - "ListDeviceDefinitions": { - "http": { - "method": "GET", - "requestUri": "/greengrass/definition/devices", - "responseCode": 200 - }, - "input": { - "type": "structure", - "members": { - "MaxResults": { - "location": "querystring", - "locationName": "MaxResults" - }, - "NextToken": { - "location": "querystring", - "locationName": "NextToken" - } - } - }, - "output": { - "type": "structure", - "members": { - "Definitions": { - "shape": "S3d" - }, - "NextToken": {} - } - } - }, - "ListFunctionDefinitionVersions": { - "http": { - "method": "GET", - "requestUri": "/greengrass/definition/functions/{FunctionDefinitionId}/versions", - "responseCode": 200 - }, - "input": { - "type": "structure", - "members": { - "FunctionDefinitionId": { - "location": "uri", - "locationName": "FunctionDefinitionId" - }, - "MaxResults": { - "location": "querystring", - "locationName": "MaxResults" - }, - "NextToken": { - "location": "querystring", - "locationName": "NextToken" - } - }, - "required": [ - "FunctionDefinitionId" - ] - }, - "output": { - "type": "structure", - "members": { - "NextToken": {}, - "Versions": { - "shape": "S39" - } - } - } - }, - "ListFunctionDefinitions": { - "http": { - "method": "GET", - "requestUri": "/greengrass/definition/functions", - "responseCode": 200 - }, - "input": { - "type": "structure", - "members": { - "MaxResults": { - "location": "querystring", - "locationName": "MaxResults" - }, - "NextToken": { - "location": "querystring", - "locationName": "NextToken" - } - } - }, - "output": { - "type": "structure", - "members": { - "Definitions": { - "shape": "S3d" - }, - "NextToken": {} - } - } - }, - "ListGroupCertificateAuthorities": { - "http": { - "method": "GET", - "requestUri": "/greengrass/groups/{GroupId}/certificateauthorities", - "responseCode": 200 - }, - "input": { - "type": "structure", - "members": { - "GroupId": { - "location": "uri", - "locationName": "GroupId" - } - }, - "required": [ - "GroupId" - ] - }, - "output": { - "type": "structure", - "members": { - "GroupCertificateAuthorities": { - "type": "list", - "member": { - "type": "structure", - "members": { - "GroupCertificateAuthorityArn": {}, - "GroupCertificateAuthorityId": {} - } - } - } - } - } - }, - "ListGroupVersions": { - "http": { - "method": "GET", - "requestUri": "/greengrass/groups/{GroupId}/versions", - "responseCode": 200 - }, - "input": { - "type": "structure", - "members": { - "GroupId": { - "location": "uri", - "locationName": "GroupId" - }, - "MaxResults": { - "location": "querystring", - "locationName": "MaxResults" - }, - "NextToken": { - "location": "querystring", - "locationName": "NextToken" - } - }, - "required": [ - "GroupId" - ] - }, - "output": { - "type": "structure", - "members": { - "NextToken": {}, - "Versions": { - "shape": "S39" - } - } - } - }, - "ListGroups": { - "http": { - "method": "GET", - "requestUri": "/greengrass/groups", - "responseCode": 200 - }, - "input": { - "type": "structure", - "members": { - "MaxResults": { - "location": "querystring", - "locationName": "MaxResults" - }, - "NextToken": { - "location": "querystring", - "locationName": "NextToken" - } - } - }, - "output": { - "type": "structure", - "members": { - "Groups": { - "type": "list", - "member": { - "type": "structure", - "members": { - "Arn": {}, - "CreationTimestamp": {}, - "Id": {}, - "LastUpdatedTimestamp": {}, - "LatestVersion": {}, - "LatestVersionArn": {}, - "Name": {} - } - } - }, - "NextToken": {} - } - } - }, - "ListLoggerDefinitionVersions": { - "http": { - "method": "GET", - "requestUri": "/greengrass/definition/loggers/{LoggerDefinitionId}/versions", - "responseCode": 200 - }, - "input": { - "type": "structure", - "members": { - "LoggerDefinitionId": { - "location": "uri", - "locationName": "LoggerDefinitionId" - }, - "MaxResults": { - "location": "querystring", - "locationName": "MaxResults" - }, - "NextToken": { - "location": "querystring", - "locationName": "NextToken" - } - }, - "required": [ - "LoggerDefinitionId" - ] - }, - "output": { - "type": "structure", - "members": { - "NextToken": {}, - "Versions": { - "shape": "S39" - } - } - } - }, - "ListLoggerDefinitions": { - "http": { - "method": "GET", - "requestUri": "/greengrass/definition/loggers", - "responseCode": 200 - }, - "input": { - "type": "structure", - "members": { - "MaxResults": { - "location": "querystring", - "locationName": "MaxResults" - }, - "NextToken": { - "location": "querystring", - "locationName": "NextToken" - } - } - }, - "output": { - "type": "structure", - "members": { - "Definitions": { - "shape": "S3d" - }, - "NextToken": {} - } - } - }, - "ListSubscriptionDefinitionVersions": { - "http": { - "method": "GET", - "requestUri": "/greengrass/definition/subscriptions/{SubscriptionDefinitionId}/versions", - "responseCode": 200 - }, - "input": { - "type": "structure", - "members": { - "MaxResults": { - "location": "querystring", - "locationName": "MaxResults" - }, - "NextToken": { - "location": "querystring", - "locationName": "NextToken" - }, - "SubscriptionDefinitionId": { - "location": "uri", - "locationName": "SubscriptionDefinitionId" - } - }, - "required": [ - "SubscriptionDefinitionId" - ] - }, - "output": { - "type": "structure", - "members": { - "NextToken": {}, - "Versions": { - "shape": "S39" - } - } - } - }, - "ListSubscriptionDefinitions": { - "http": { - "method": "GET", - "requestUri": "/greengrass/definition/subscriptions", - "responseCode": 200 - }, - "input": { - "type": "structure", - "members": { - "MaxResults": { - "location": "querystring", - "locationName": "MaxResults" - }, - "NextToken": { - "location": "querystring", - "locationName": "NextToken" - } - } - }, - "output": { - "type": "structure", - "members": { - "Definitions": { - "shape": "S3d" - }, - "NextToken": {} - } - } - }, - "ResetDeployments": { - "http": { - "requestUri": "/greengrass/groups/{GroupId}/deployments/$reset", - "responseCode": 200 - }, - "input": { - "type": "structure", - "members": { - "AmznClientToken": { - "location": "header", - "locationName": "X-Amzn-Client-Token" - }, - "Force": { - "type": "boolean" - }, - "GroupId": { - "location": "uri", - "locationName": "GroupId" - } - }, - "required": [ - "GroupId" - ] - }, - "output": { - "type": "structure", - "members": { - "DeploymentArn": {}, - "DeploymentId": {} - } - } - }, - "UpdateConnectivityInfo": { - "http": { - "method": "PUT", - "requestUri": "/greengrass/things/{ThingName}/connectivityInfo", - "responseCode": 200 - }, - "input": { - "type": "structure", - "members": { - "ConnectivityInfo": { - "shape": "S27" - }, - "ThingName": { - "location": "uri", - "locationName": "ThingName" - } - }, - "required": [ - "ThingName" - ] - }, - "output": { - "type": "structure", - "members": { - "Message": { - "locationName": "message" - }, - "Version": {} - } - } - }, - "UpdateCoreDefinition": { - "http": { - "method": "PUT", - "requestUri": "/greengrass/definition/cores/{CoreDefinitionId}", - "responseCode": 200 - }, - "input": { - "type": "structure", - "members": { - "CoreDefinitionId": { - "location": "uri", - "locationName": "CoreDefinitionId" - }, - "Name": {} - }, - "required": [ - "CoreDefinitionId" - ] - }, - "output": { - "type": "structure", - "members": {} - } - }, - "UpdateDeviceDefinition": { - "http": { - "method": "PUT", - "requestUri": "/greengrass/definition/devices/{DeviceDefinitionId}", - "responseCode": 200 - }, - "input": { - "type": "structure", - "members": { - "DeviceDefinitionId": { - "location": "uri", - "locationName": "DeviceDefinitionId" - }, - "Name": {} - }, - "required": [ - "DeviceDefinitionId" - ] - }, - "output": { - "type": "structure", - "members": {} - } - }, - "UpdateFunctionDefinition": { - "http": { - "method": "PUT", - "requestUri": "/greengrass/definition/functions/{FunctionDefinitionId}", - "responseCode": 200 - }, - "input": { - "type": "structure", - "members": { - "FunctionDefinitionId": { - "location": "uri", - "locationName": "FunctionDefinitionId" - }, - "Name": {} - }, - "required": [ - "FunctionDefinitionId" - ] - }, - "output": { - "type": "structure", - "members": {} - } - }, - "UpdateGroup": { - "http": { - "method": "PUT", - "requestUri": "/greengrass/groups/{GroupId}", - "responseCode": 200 - }, - "input": { - "type": "structure", - "members": { - "GroupId": { - "location": "uri", - "locationName": "GroupId" - }, - "Name": {} - }, - "required": [ - "GroupId" - ] - }, - "output": { - "type": "structure", - "members": {} - } - }, - "UpdateGroupCertificateConfiguration": { - "http": { - "method": "PUT", - "requestUri": "/greengrass/groups/{GroupId}/certificateauthorities/configuration/expiry", - "responseCode": 200 - }, - "input": { - "type": "structure", - "members": { - "CertificateExpiryInMilliseconds": {}, - "GroupId": { - "location": "uri", - "locationName": "GroupId" - } - }, - "required": [ - "GroupId" - ] - }, - "output": { - "type": "structure", - "members": { - "CertificateAuthorityExpiryInMilliseconds": {}, - "CertificateExpiryInMilliseconds": {}, - "GroupId": {} - } - } - }, - "UpdateLoggerDefinition": { - "http": { - "method": "PUT", - "requestUri": "/greengrass/definition/loggers/{LoggerDefinitionId}", - "responseCode": 200 - }, - "input": { - "type": "structure", - "members": { - "LoggerDefinitionId": { - "location": "uri", - "locationName": "LoggerDefinitionId" - }, - "Name": {} - }, - "required": [ - "LoggerDefinitionId" - ] - }, - "output": { - "type": "structure", - "members": {} - } - }, - "UpdateSubscriptionDefinition": { - "http": { - "method": "PUT", - "requestUri": "/greengrass/definition/subscriptions/{SubscriptionDefinitionId}", - "responseCode": 200 - }, - "input": { - "type": "structure", - "members": { - "Name": {}, - "SubscriptionDefinitionId": { - "location": "uri", - "locationName": "SubscriptionDefinitionId" - } - }, - "required": [ - "SubscriptionDefinitionId" - ] - }, - "output": { - "type": "structure", - "members": {} - } - } - }, - "shapes": { - "S7": { - "type": "structure", - "members": { - "Cores": { - "shape": "S8" - } - } - }, - "S8": { - "type": "list", - "member": { - "type": "structure", - "members": { - "CertificateArn": {}, - "Id": {}, - "SyncShadow": { - "type": "boolean" - }, - "ThingArn": {} - } - } - }, - "Si": { - "type": "structure", - "members": { - "Devices": { - "shape": "Sj" - } - } - }, - "Sj": { - "type": "list", - "member": { - "type": "structure", - "members": { - "CertificateArn": {}, - "Id": {}, - "SyncShadow": { - "type": "boolean" - }, - "ThingArn": {} - } - } - }, - "Sp": { - "type": "structure", - "members": { - "Functions": { - "shape": "Sq" - } - } - }, - "Sq": { - "type": "list", - "member": { - "type": "structure", - "members": { - "FunctionArn": {}, - "FunctionConfiguration": { - "type": "structure", - "members": { - "Environment": { - "type": "structure", - "members": { - "Variables": { - "type": "map", - "key": {}, - "value": {} - } - } - }, - "ExecArgs": {}, - "Executable": {}, - "MemorySize": { - "type": "integer" - }, - "Pinned": { - "type": "boolean" - }, - "Timeout": { - "type": "integer" - } - } - }, - "Id": {} - } - } - }, - "S10": { - "type": "structure", - "members": { - "CoreDefinitionVersionArn": {}, - "DeviceDefinitionVersionArn": {}, - "FunctionDefinitionVersionArn": {}, - "LoggerDefinitionVersionArn": {}, - "SubscriptionDefinitionVersionArn": {} - } - }, - "S17": { - "type": "structure", - "members": { - "Loggers": { - "shape": "S18" - } - } - }, - "S18": { - "type": "list", - "member": { - "type": "structure", - "members": { - "Component": {}, - "Id": {}, - "Level": {}, - "Space": { - "type": "integer" - }, - "Type": {} - } - } - }, - "S1h": { - "type": "structure", - "members": { - "Subscriptions": { - "shape": "S1i" - } - } - }, - "S1i": { - "type": "list", - "member": { - "type": "structure", - "members": { - "Id": {}, - "Source": {}, - "Subject": {}, - "Target": {} - } - } - }, - "S27": { - "type": "list", - "member": { - "type": "structure", - "members": { - "HostAddress": {}, - "Id": {}, - "Metadata": {}, - "PortNumber": { - "type": "integer" - } - } - } - }, - "S39": { - "type": "list", - "member": { - "type": "structure", - "members": { - "Arn": {}, - "CreationTimestamp": {}, - "Id": {}, - "Version": {} - } - } - }, - "S3d": { - "type": "list", - "member": { - "type": "structure", - "members": { - "Arn": {}, - "CreationTimestamp": {}, - "Id": {}, - "LastUpdatedTimestamp": {}, - "LatestVersion": {}, - "LatestVersionArn": {}, - "Name": {} - } - } - } - } -} \ No newline at end of file diff --git a/workshops/monte-carlo-on-ec2-spot-fleet/src/web/node_modules/aws-sdk/apis/health-2016-08-04.min.json b/workshops/monte-carlo-on-ec2-spot-fleet/src/web/node_modules/aws-sdk/apis/health-2016-08-04.min.json deleted file mode 100644 index 0818a298..00000000 --- a/workshops/monte-carlo-on-ec2-spot-fleet/src/web/node_modules/aws-sdk/apis/health-2016-08-04.min.json +++ /dev/null @@ -1,390 +0,0 @@ -{ - "version": "2.0", - "metadata": { - "apiVersion": "2016-08-04", - "endpointPrefix": "health", - "jsonVersion": "1.1", - "protocol": "json", - "serviceAbbreviation": "AWSHealth", - "serviceFullName": "AWS Health APIs and Notifications", - "signatureVersion": "v4", - "targetPrefix": "AWSHealth_20160804", - "uid": "health-2016-08-04" - }, - "operations": { - "DescribeAffectedEntities": { - "input": { - "type": "structure", - "required": [ - "filter" - ], - "members": { - "filter": { - "type": "structure", - "required": [ - "eventArns" - ], - "members": { - "eventArns": { - "shape": "S3" - }, - "entityArns": { - "shape": "S5" - }, - "entityValues": { - "shape": "S7" - }, - "lastUpdatedTimes": { - "shape": "S9" - }, - "tags": { - "shape": "Sc" - }, - "statusCodes": { - "type": "list", - "member": {} - } - } - }, - "locale": {}, - "nextToken": {}, - "maxResults": { - "type": "integer" - } - } - }, - "output": { - "type": "structure", - "members": { - "entities": { - "type": "list", - "member": { - "type": "structure", - "members": { - "entityArn": {}, - "eventArn": {}, - "entityValue": {}, - "awsAccountId": {}, - "lastUpdatedTime": { - "type": "timestamp" - }, - "statusCode": {}, - "tags": { - "shape": "Sd" - } - } - } - }, - "nextToken": {} - } - }, - "idempotent": true - }, - "DescribeEntityAggregates": { - "input": { - "type": "structure", - "members": { - "eventArns": { - "type": "list", - "member": {} - } - } - }, - "output": { - "type": "structure", - "members": { - "entityAggregates": { - "type": "list", - "member": { - "type": "structure", - "members": { - "eventArn": {}, - "count": { - "type": "integer" - } - } - } - } - } - }, - "idempotent": true - }, - "DescribeEventAggregates": { - "input": { - "type": "structure", - "required": [ - "aggregateField" - ], - "members": { - "filter": { - "shape": "Sw" - }, - "aggregateField": {}, - "maxResults": { - "type": "integer" - }, - "nextToken": {} - } - }, - "output": { - "type": "structure", - "members": { - "eventAggregates": { - "type": "list", - "member": { - "type": "structure", - "members": { - "aggregateValue": {}, - "count": { - "type": "integer" - } - } - } - }, - "nextToken": {} - } - }, - "idempotent": true - }, - "DescribeEventDetails": { - "input": { - "type": "structure", - "required": [ - "eventArns" - ], - "members": { - "eventArns": { - "shape": "S3" - }, - "locale": {} - } - }, - "output": { - "type": "structure", - "members": { - "successfulSet": { - "type": "list", - "member": { - "type": "structure", - "members": { - "event": { - "shape": "S1i" - }, - "eventDescription": { - "type": "structure", - "members": { - "latestDescription": {} - } - }, - "eventMetadata": { - "type": "map", - "key": {}, - "value": {} - } - } - } - }, - "failedSet": { - "type": "list", - "member": { - "type": "structure", - "members": { - "eventArn": {}, - "errorName": {}, - "errorMessage": {} - } - } - } - } - }, - "idempotent": true - }, - "DescribeEventTypes": { - "input": { - "type": "structure", - "members": { - "filter": { - "type": "structure", - "members": { - "eventTypeCodes": { - "type": "list", - "member": {} - }, - "services": { - "shape": "Sz" - }, - "eventTypeCategories": { - "type": "list", - "member": {} - } - } - }, - "locale": {}, - "nextToken": {}, - "maxResults": { - "type": "integer" - } - } - }, - "output": { - "type": "structure", - "members": { - "eventTypes": { - "type": "list", - "member": { - "type": "structure", - "members": { - "service": {}, - "code": {}, - "category": {} - } - } - }, - "nextToken": {} - } - }, - "idempotent": true - }, - "DescribeEvents": { - "input": { - "type": "structure", - "members": { - "filter": { - "shape": "Sw" - }, - "nextToken": {}, - "maxResults": { - "type": "integer" - }, - "locale": {} - } - }, - "output": { - "type": "structure", - "members": { - "events": { - "type": "list", - "member": { - "shape": "S1i" - } - }, - "nextToken": {} - } - }, - "idempotent": true - } - }, - "shapes": { - "S3": { - "type": "list", - "member": {} - }, - "S5": { - "type": "list", - "member": {} - }, - "S7": { - "type": "list", - "member": {} - }, - "S9": { - "type": "list", - "member": { - "type": "structure", - "members": { - "from": { - "type": "timestamp" - }, - "to": { - "type": "timestamp" - } - } - } - }, - "Sc": { - "type": "list", - "member": { - "shape": "Sd" - } - }, - "Sd": { - "type": "map", - "key": {}, - "value": {} - }, - "Sw": { - "type": "structure", - "members": { - "eventArns": { - "shape": "S3" - }, - "eventTypeCodes": { - "type": "list", - "member": {} - }, - "services": { - "shape": "Sz" - }, - "regions": { - "type": "list", - "member": {} - }, - "availabilityZones": { - "type": "list", - "member": {} - }, - "startTimes": { - "shape": "S9" - }, - "endTimes": { - "shape": "S9" - }, - "lastUpdatedTimes": { - "shape": "S9" - }, - "entityArns": { - "shape": "S5" - }, - "entityValues": { - "shape": "S7" - }, - "eventTypeCategories": { - "type": "list", - "member": {} - }, - "tags": { - "shape": "Sc" - }, - "eventStatusCodes": { - "type": "list", - "member": {} - } - } - }, - "Sz": { - "type": "list", - "member": {} - }, - "S1i": { - "type": "structure", - "members": { - "arn": {}, - "service": {}, - "eventTypeCode": {}, - "eventTypeCategory": {}, - "region": {}, - "availabilityZone": {}, - "startTime": { - "type": "timestamp" - }, - "endTime": { - "type": "timestamp" - }, - "lastUpdatedTime": { - "type": "timestamp" - }, - "statusCode": {} - } - } - } -} \ No newline at end of file diff --git a/workshops/monte-carlo-on-ec2-spot-fleet/src/web/node_modules/aws-sdk/apis/health-2016-08-04.paginators.json b/workshops/monte-carlo-on-ec2-spot-fleet/src/web/node_modules/aws-sdk/apis/health-2016-08-04.paginators.json deleted file mode 100644 index 47b03169..00000000 --- a/workshops/monte-carlo-on-ec2-spot-fleet/src/web/node_modules/aws-sdk/apis/health-2016-08-04.paginators.json +++ /dev/null @@ -1,31 +0,0 @@ -{ - "pagination": { - "DescribeAffectedEntities": { - "input_token": "nextToken", - "output_token": "nextToken", - "limit_key": "maxResults", - "result_key": "entities" - }, - "DescribeEntityAggregates": { - "result_key": "entityAggregates" - }, - "DescribeEventAggregates": { - "input_token": "nextToken", - "output_token": "nextToken", - "limit_key": "maxResults", - "result_key": "eventAggregates" - }, - "DescribeEvents": { - "input_token": "nextToken", - "output_token": "nextToken", - "limit_key": "maxResults", - "result_key": "events" - }, - "DescribeEventTypes": { - "input_token": "nextToken", - "output_token": "nextToken", - "limit_key": "maxResults", - "result_key": "eventTypes" - } - } -} diff --git a/workshops/monte-carlo-on-ec2-spot-fleet/src/web/node_modules/aws-sdk/apis/iam-2010-05-08.examples.json b/workshops/monte-carlo-on-ec2-spot-fleet/src/web/node_modules/aws-sdk/apis/iam-2010-05-08.examples.json deleted file mode 100644 index f23d8ebf..00000000 --- a/workshops/monte-carlo-on-ec2-spot-fleet/src/web/node_modules/aws-sdk/apis/iam-2010-05-08.examples.json +++ /dev/null @@ -1,1191 +0,0 @@ -{ - "version": "1.0", - "examples": { - "AddClientIDToOpenIDConnectProvider": [ - { - "input": { - "ClientID": "my-application-ID", - "OpenIDConnectProviderArn": "arn:aws:iam::123456789012:oidc-provider/server.example.com" - }, - "comments": { - "input": { - }, - "output": { - } - }, - "description": "The following add-client-id-to-open-id-connect-provider command adds the client ID my-application-ID to the OIDC provider named server.example.com:", - "id": "028e91f4-e2a6-4d59-9e3b-4965a3fb19be", - "title": "To add a client ID (audience) to an Open-ID Connect (OIDC) provider" - } - ], - "AddRoleToInstanceProfile": [ - { - "input": { - "InstanceProfileName": "Webserver", - "RoleName": "S3Access" - }, - "comments": { - "input": { - }, - "output": { - } - }, - "description": "The following command adds the role named S3Access to the instance profile named Webserver:", - "id": "c107fac3-edb6-4827-8a71-8863ec91c81f", - "title": "To add a role to an instance profile" - } - ], - "AddUserToGroup": [ - { - "input": { - "GroupName": "Admins", - "UserName": "Bob" - }, - "comments": { - "input": { - }, - "output": { - } - }, - "description": "The following command adds an IAM user named Bob to the IAM group named Admins:", - "id": "619c7e6b-09f8-4036-857b-51a6ea5027ca", - "title": "To add a user to an IAM group" - } - ], - "AttachGroupPolicy": [ - { - "input": { - "GroupName": "Finance", - "PolicyArn": "arn:aws:iam::aws:policy/ReadOnlyAccess" - }, - "comments": { - "input": { - }, - "output": { - } - }, - "description": "The following command attaches the AWS managed policy named ReadOnlyAccess to the IAM group named Finance.", - "id": "87551489-86f0-45db-9889-759936778f2b", - "title": "To attach a managed policy to an IAM group" - } - ], - "AttachRolePolicy": [ - { - "input": { - "PolicyArn": "arn:aws:iam::aws:policy/ReadOnlyAccess", - "RoleName": "ReadOnlyRole" - }, - "comments": { - "input": { - }, - "output": { - } - }, - "description": "The following command attaches the AWS managed policy named ReadOnlyAccess to the IAM role named ReadOnlyRole.", - "id": "3e1b8c7c-99c8-4fc4-a20c-131fe3f22c7e", - "title": "To attach a managed policy to an IAM role" - } - ], - "AttachUserPolicy": [ - { - "input": { - "PolicyArn": "arn:aws:iam::aws:policy/AdministratorAccess", - "UserName": "Alice" - }, - "comments": { - "input": { - }, - "output": { - } - }, - "description": "The following command attaches the AWS managed policy named AdministratorAccess to the IAM user named Alice.", - "id": "1372ebd8-9475-4b1a-a479-23b6fd4b8b3e", - "title": "To attach a managed policy to an IAM user" - } - ], - "ChangePassword": [ - { - "input": { - "NewPassword": "]35d/{pB9Fo9wJ", - "OldPassword": "3s0K_;xh4~8XXI" - }, - "comments": { - "input": { - }, - "output": { - } - }, - "description": "The following command changes the password for the current IAM user.", - "id": "3a80c66f-bffb-46df-947c-1e8fa583b470", - "title": "To change the password for your IAM user" - } - ], - "CreateAccessKey": [ - { - "input": { - "UserName": "Bob" - }, - "output": { - "AccessKey": { - "AccessKeyId": "AKIAIOSFODNN7EXAMPLE", - "CreateDate": "2015-03-09T18:39:23.411Z", - "SecretAccessKey": "wJalrXUtnFEMI/K7MDENG/bPxRfiCYzEXAMPLEKEY", - "Status": "Active", - "UserName": "Bob" - } - }, - "comments": { - "input": { - }, - "output": { - } - }, - "description": "The following command creates an access key (access key ID and secret access key) for the IAM user named Bob.", - "id": "1fbb3211-4cf2-41db-8c20-ba58d9f5802d", - "title": "To create an access key for an IAM user" - } - ], - "CreateAccountAlias": [ - { - "input": { - "AccountAlias": "examplecorp" - }, - "comments": { - "input": { - }, - "output": { - } - }, - "description": "The following command associates the alias examplecorp to your AWS account.", - "id": "5adaf6fb-94fc-4ca2-b825-2fbc2062add1", - "title": "To create an account alias" - } - ], - "CreateGroup": [ - { - "input": { - "GroupName": "Admins" - }, - "output": { - "Group": { - "Arn": "arn:aws:iam::123456789012:group/Admins", - "CreateDate": "2015-03-09T20:30:24.940Z", - "GroupId": "AIDGPMS9RO4H3FEXAMPLE", - "GroupName": "Admins", - "Path": "/" - } - }, - "comments": { - "input": { - }, - "output": { - } - }, - "description": "The following command creates an IAM group named Admins.", - "id": "d5da2a90-5e69-4ef7-8ae8-4c33dc21fd21", - "title": "To create an IAM group" - } - ], - "CreateInstanceProfile": [ - { - "input": { - "InstanceProfileName": "Webserver" - }, - "output": { - "InstanceProfile": { - "Arn": "arn:aws:iam::123456789012:instance-profile/Webserver", - "CreateDate": "2015-03-09T20:33:19.626Z", - "InstanceProfileId": "AIPAJMBYC7DLSPEXAMPLE", - "InstanceProfileName": "Webserver", - "Path": "/", - "Roles": [ - - ] - } - }, - "comments": { - "input": { - }, - "output": { - } - }, - "description": "The following command creates an instance profile named Webserver that is ready to have a role attached and then be associated with an EC2 instance.", - "id": "5d84e6ae-5921-4e39-8454-10232cd9ff9a", - "title": "To create an instance profile" - } - ], - "CreateLoginProfile": [ - { - "input": { - "Password": "h]6EszR}vJ*m", - "PasswordResetRequired": true, - "UserName": "Bob" - }, - "output": { - "LoginProfile": { - "CreateDate": "2015-03-10T20:55:40.274Z", - "PasswordResetRequired": true, - "UserName": "Bob" - } - }, - "comments": { - "input": { - }, - "output": { - } - }, - "description": "The following command changes IAM user Bob's password and sets the flag that required Bob to change the password the next time he signs in.", - "id": "c63795bc-3444-40b3-89df-83c474ef88be", - "title": "To create an instance profile" - } - ], - "CreateOpenIDConnectProvider": [ - { - "input": { - "ClientIDList": [ - "my-application-id" - ], - "ThumbprintList": [ - "3768084dfb3d2b68b7897bf5f565da8efEXAMPLE" - ], - "Url": "https://server.example.com" - }, - "output": { - "OpenIDConnectProviderArn": "arn:aws:iam::123456789012:oidc-provider/server.example.com" - }, - "comments": { - "input": { - }, - "output": { - } - }, - "description": "The following example defines a new OIDC provider in IAM with a client ID of my-application-id and pointing at the server with a URL of https://server.example.com.", - "id": "4e4a6bff-cc97-4406-922e-0ab4a82cdb63", - "title": "To create an instance profile" - } - ], - "CreateRole": [ - { - "input": { - "AssumeRolePolicyDocument": "", - "Path": "/", - "RoleName": "Test-Role" - }, - "output": { - "Role": { - "Arn": "arn:aws:iam::123456789012:role/Test-Role", - "AssumeRolePolicyDocument": "", - "CreateDate": "2013-06-07T20:43:32.821Z", - "Path": "/", - "RoleId": "AKIAIOSFODNN7EXAMPLE", - "RoleName": "Test-Role" - } - }, - "comments": { - "input": { - }, - "output": { - } - }, - "description": "The following command creates a role named Test-Role and attaches a trust policy to it that is provided as a URL-encoded JSON string.", - "id": "eaaa4b5f-51f1-4f73-b0d3-30127040eff8", - "title": "To create an IAM role" - } - ], - "CreateUser": [ - { - "input": { - "UserName": "Bob" - }, - "output": { - "User": { - "Arn": "arn:aws:iam::123456789012:user/Bob", - "CreateDate": "2013-06-08T03:20:41.270Z", - "Path": "/", - "UserId": "AKIAIOSFODNN7EXAMPLE", - "UserName": "Bob" - } - }, - "comments": { - "input": { - }, - "output": { - } - }, - "description": "The following create-user command creates an IAM user named Bob in the current account.", - "id": "eb15f90b-e5f5-4af8-a594-e4e82b181a62", - "title": "To create an IAM user" - } - ], - "DeleteAccessKey": [ - { - "input": { - "AccessKeyId": "AKIDPMS9RO4H3FEXAMPLE", - "UserName": "Bob" - }, - "comments": { - "input": { - }, - "output": { - } - }, - "description": "The following command deletes one access key (access key ID and secret access key) assigned to the IAM user named Bob.", - "id": "61a785a7-d30a-415a-ae18-ab9236e56871", - "title": "To delete an access key for an IAM user" - } - ], - "DeleteAccountAlias": [ - { - "input": { - "AccountAlias": "mycompany" - }, - "comments": { - "input": { - }, - "output": { - } - }, - "description": "The following command removes the alias mycompany from the current AWS account:", - "id": "7abeca65-04a8-4500-a890-47f1092bf766", - "title": "To delete an account alias" - } - ], - "DeleteAccountPasswordPolicy": [ - { - "comments": { - "input": { - }, - "output": { - } - }, - "description": "The following command removes the password policy from the current AWS account:", - "id": "9ddf755e-495c-49bc-ae3b-ea6cc9b8ebcf", - "title": "To delete the current account password policy" - } - ], - "DeleteGroupPolicy": [ - { - "input": { - "GroupName": "Admins", - "PolicyName": "ExamplePolicy" - }, - "comments": { - "input": { - }, - "output": { - } - }, - "description": "The following command deletes the policy named ExamplePolicy from the group named Admins:", - "id": "e683f2bd-98a4-4fe0-bb66-33169c692d4a", - "title": "To delete a policy from an IAM group" - } - ], - "DeleteInstanceProfile": [ - { - "input": { - "InstanceProfileName": "ExampleInstanceProfile" - }, - "comments": { - "input": { - }, - "output": { - } - }, - "description": "The following command deletes the instance profile named ExampleInstanceProfile", - "id": "12d74fb8-3433-49db-8171-a1fc764e354d", - "title": "To delete an instance profile" - } - ], - "DeleteLoginProfile": [ - { - "input": { - "UserName": "Bob" - }, - "comments": { - "input": { - }, - "output": { - } - }, - "description": "The following command deletes the password for the IAM user named Bob.", - "id": "1fe57059-fc73-42e2-b992-517b7d573b5c", - "title": "To delete a password for an IAM user" - } - ], - "DeleteRole": [ - { - "input": { - "RoleName": "Test-Role" - }, - "comments": { - "input": { - }, - "output": { - } - }, - "description": "The following command removes the role named Test-Role.", - "id": "053cdf74-9bda-44b8-bdbb-140fd5a32603", - "title": "To delete an IAM role" - } - ], - "DeleteRolePolicy": [ - { - "input": { - "PolicyName": "ExamplePolicy", - "RoleName": "Test-Role" - }, - "comments": { - "input": { - }, - "output": { - } - }, - "description": "The following command removes the policy named ExamplePolicy from the role named Test-Role.", - "id": "9c667336-fde3-462c-b8f3-950800821e27", - "title": "To remove a policy from an IAM role" - } - ], - "DeleteSigningCertificate": [ - { - "input": { - "CertificateId": "TA7SMP42TDN5Z26OBPJE7EXAMPLE", - "UserName": "Anika" - }, - "comments": { - "input": { - }, - "output": { - } - }, - "description": "The following command deletes the specified signing certificate for the IAM user named Anika.", - "id": "e3357586-ba9c-4070-b35b-d1a899b71987", - "title": "To delete a signing certificate for an IAM user" - } - ], - "DeleteUser": [ - { - "input": { - "UserName": "Bob" - }, - "comments": { - "input": { - }, - "output": { - } - }, - "description": "The following command removes the IAM user named Bob from the current account.", - "id": "a13dc3f9-59fe-42d9-abbb-fb98b204fdf0", - "title": "To delete an IAM user" - } - ], - "DeleteUserPolicy": [ - { - "input": { - "PolicyName": "ExamplePolicy", - "UserName": "Juan" - }, - "comments": { - "input": { - }, - "output": { - } - }, - "description": "The following delete-user-policy command removes the specified policy from the IAM user named Juan:", - "id": "34f07ddc-9bc1-4f52-bc59-cd0a3ccd06c8", - "title": "To remove a policy from an IAM user" - } - ], - "DeleteVirtualMFADevice": [ - { - "input": { - "SerialNumber": "arn:aws:iam::123456789012:mfa/ExampleName" - }, - "comments": { - "input": { - }, - "output": { - } - }, - "description": "The following delete-virtual-mfa-device command removes the specified MFA device from the current AWS account.", - "id": "2933b08b-dbe7-4b89-b8c1-fdf75feea1ee", - "title": "To remove a virtual MFA device" - } - ], - "GetAccountPasswordPolicy": [ - { - "output": { - "PasswordPolicy": { - "AllowUsersToChangePassword": false, - "ExpirePasswords": false, - "HardExpiry": false, - "MaxPasswordAge": 90, - "MinimumPasswordLength": 8, - "PasswordReusePrevention": 12, - "RequireLowercaseCharacters": false, - "RequireNumbers": true, - "RequireSymbols": true, - "RequireUppercaseCharacters": false - } - }, - "comments": { - "input": { - }, - "output": { - } - }, - "description": "The following command displays details about the password policy for the current AWS account.", - "id": "5e4598c7-c425-431f-8af1-19073b3c4a5f", - "title": "To see the current account password policy" - } - ], - "GetAccountSummary": [ - { - "output": { - "SummaryMap": { - "AccessKeysPerUserQuota": 2, - "AccountAccessKeysPresent": 1, - "AccountMFAEnabled": 0, - "AccountSigningCertificatesPresent": 0, - "AttachedPoliciesPerGroupQuota": 10, - "AttachedPoliciesPerRoleQuota": 10, - "AttachedPoliciesPerUserQuota": 10, - "GroupPolicySizeQuota": 5120, - "Groups": 15, - "GroupsPerUserQuota": 10, - "GroupsQuota": 100, - "MFADevices": 6, - "MFADevicesInUse": 3, - "Policies": 8, - "PoliciesQuota": 1000, - "PolicySizeQuota": 5120, - "PolicyVersionsInUse": 22, - "PolicyVersionsInUseQuota": 10000, - "ServerCertificates": 1, - "ServerCertificatesQuota": 20, - "SigningCertificatesPerUserQuota": 2, - "UserPolicySizeQuota": 2048, - "Users": 27, - "UsersQuota": 5000, - "VersionsPerPolicyQuota": 5 - } - }, - "comments": { - "input": { - }, - "output": { - } - }, - "description": "The following command returns information about the IAM entity quotas and usage in the current AWS account.", - "id": "9d8447af-f344-45de-8219-2cebc3cce7f2", - "title": "To get information about IAM entity quotas and usage in the current account" - } - ], - "GetInstanceProfile": [ - { - "input": { - "InstanceProfileName": "ExampleInstanceProfile" - }, - "output": { - "InstanceProfile": { - "Arn": "arn:aws:iam::336924118301:instance-profile/ExampleInstanceProfile", - "CreateDate": "2013-06-12T23:52:02Z", - "InstanceProfileId": "AID2MAB8DPLSRHEXAMPLE", - "InstanceProfileName": "ExampleInstanceProfile", - "Path": "/", - "Roles": [ - { - "Arn": "arn:aws:iam::336924118301:role/Test-Role", - "AssumeRolePolicyDocument": "", - "CreateDate": "2013-01-09T06:33:26Z", - "Path": "/", - "RoleId": "AIDGPMS9RO4H3FEXAMPLE", - "RoleName": "Test-Role" - } - ] - } - }, - "comments": { - "input": { - }, - "output": { - } - }, - "description": "The following command gets information about the instance profile named ExampleInstanceProfile.", - "id": "463b9ba5-18cc-4608-9ccb-5a7c6b6e5fe7", - "title": "To get information about an instance profile" - } - ], - "GetLoginProfile": [ - { - "input": { - "UserName": "Anika" - }, - "output": { - "LoginProfile": { - "CreateDate": "2012-09-21T23:03:39Z", - "UserName": "Anika" - } - }, - "comments": { - "input": { - }, - "output": { - } - }, - "description": "The following command gets information about the password for the IAM user named Anika.", - "id": "d6b580cc-909f-4925-9caa-d425cbc1ad47", - "title": "To get password information for an IAM user" - } - ], - "GetRole": [ - { - "input": { - "RoleName": "Test-Role" - }, - "output": { - "Role": { - "Arn": "arn:aws:iam::123456789012:role/Test-Role", - "AssumeRolePolicyDocument": "", - "CreateDate": "2013-04-18T05:01:58Z", - "Path": "/", - "RoleId": "AIDIODR4TAW7CSEXAMPLE", - "RoleName": "Test-Role" - } - }, - "comments": { - "input": { - }, - "output": { - } - }, - "description": "The following command gets information about the role named Test-Role.", - "id": "5b7d03a6-340c-472d-aa77-56425950d8b0", - "title": "To get information about an IAM role" - } - ], - "GetUser": [ - { - "input": { - "UserName": "Bob" - }, - "output": { - "User": { - "Arn": "arn:aws:iam::123456789012:user/Bob", - "CreateDate": "2012-09-21T23:03:13Z", - "Path": "/", - "UserId": "AKIAIOSFODNN7EXAMPLE", - "UserName": "Bob" - } - }, - "comments": { - "input": { - }, - "output": { - } - }, - "description": "The following command gets information about the IAM user named Bob.", - "id": "ede000a1-9e4c-40db-bd0a-d4f95e41a6ab", - "title": "To get information about an IAM user" - } - ], - "ListAccessKeys": [ - { - "input": { - "UserName": "Alice" - }, - "output": { - "AccessKeyMetadata": [ - { - "AccessKeyId": "AKIA111111111EXAMPLE", - "CreateDate": "2016-12-01T22:19:58Z", - "Status": "Active", - "UserName": "Alice" - }, - { - "AccessKeyId": "AKIA222222222EXAMPLE", - "CreateDate": "2016-12-01T22:20:01Z", - "Status": "Active", - "UserName": "Alice" - } - ] - }, - "comments": { - "input": { - }, - "output": { - } - }, - "description": "The following command lists the access keys IDs for the IAM user named Alice.", - "id": "15571463-ebea-411a-a021-1c76bd2a3625", - "title": "To list the access key IDs for an IAM user" - } - ], - "ListAccountAliases": [ - { - "input": { - }, - "output": { - "AccountAliases": [ - "exmaple-corporation" - ] - }, - "comments": { - "input": { - }, - "output": { - } - }, - "description": "The following command lists the aliases for the current account.", - "id": "e27b457a-16f9-4e05-a006-3df7b3472741", - "title": "To list account aliases" - } - ], - "ListGroupPolicies": [ - { - "input": { - "GroupName": "Admins" - }, - "output": { - "PolicyNames": [ - "AdminRoot", - "KeyPolicy" - ] - }, - "comments": { - "input": { - }, - "output": { - } - }, - "description": "The following command lists the names of in-line policies that are embedded in the IAM group named Admins.", - "id": "02de5095-2410-4d3a-ac1b-cc40234af68f", - "title": "To list the in-line policies for an IAM group" - } - ], - "ListGroups": [ - { - "input": { - }, - "output": { - "Groups": [ - { - "Arn": "arn:aws:iam::123456789012:group/Admins", - "CreateDate": "2016-12-15T21:40:08.121Z", - "GroupId": "AGPA1111111111EXAMPLE", - "GroupName": "Admins", - "Path": "/division_abc/subdivision_xyz/" - }, - { - "Arn": "arn:aws:iam::123456789012:group/division_abc/subdivision_xyz/product_1234/engineering/Test", - "CreateDate": "2016-11-30T14:10:01.156Z", - "GroupId": "AGP22222222222EXAMPLE", - "GroupName": "Test", - "Path": "/division_abc/subdivision_xyz/product_1234/engineering/" - }, - { - "Arn": "arn:aws:iam::123456789012:group/division_abc/subdivision_xyz/product_1234/Managers", - "CreateDate": "2016-06-12T20:14:52.032Z", - "GroupId": "AGPI3333333333EXAMPLE", - "GroupName": "Managers", - "Path": "/division_abc/subdivision_xyz/product_1234/" - } - ] - }, - "comments": { - "input": { - }, - "output": { - } - }, - "description": "The following command lists the IAM groups in the current account:", - "id": "b3ab1380-2a21-42fb-8e85-503f65512c66", - "title": "To list the IAM groups for the current account" - } - ], - "ListGroupsForUser": [ - { - "input": { - "UserName": "Bob" - }, - "output": { - "Groups": [ - { - "Arn": "arn:aws:iam::123456789012:group/division_abc/subdivision_xyz/product_1234/engineering/Test", - "CreateDate": "2016-11-30T14:10:01.156Z", - "GroupId": "AGP2111111111EXAMPLE", - "GroupName": "Test", - "Path": "/division_abc/subdivision_xyz/product_1234/engineering/" - }, - { - "Arn": "arn:aws:iam::123456789012:group/division_abc/subdivision_xyz/product_1234/Managers", - "CreateDate": "2016-06-12T20:14:52.032Z", - "GroupId": "AGPI222222222SEXAMPLE", - "GroupName": "Managers", - "Path": "/division_abc/subdivision_xyz/product_1234/" - } - ] - }, - "comments": { - "input": { - }, - "output": { - } - }, - "description": "The following command displays the groups that the IAM user named Bob belongs to.", - "id": "278ec2ee-fc28-4136-83fb-433af0ae46a2", - "title": "To list the groups that an IAM user belongs to" - } - ], - "ListSigningCertificates": [ - { - "input": { - "UserName": "Bob" - }, - "output": { - "Certificates": [ - { - "CertificateBody": "-----BEGIN CERTIFICATE----------END CERTIFICATE-----", - "CertificateId": "TA7SMP42TDN5Z26OBPJE7EXAMPLE", - "Status": "Active", - "UploadDate": "2013-06-06T21:40:08Z", - "UserName": "Bob" - } - ] - }, - "comments": { - "input": { - }, - "output": { - } - }, - "description": "The following command lists the signing certificates for the IAM user named Bob.", - "id": "b4c10256-4fc9-457e-b3fd-4a110d4d73dc", - "title": "To list the signing certificates for an IAM user" - } - ], - "ListUsers": [ - { - "input": { - }, - "output": { - "Users": [ - { - "Arn": "arn:aws:iam::123456789012:user/division_abc/subdivision_xyz/engineering/Juan", - "CreateDate": "2012-09-05T19:38:48Z", - "PasswordLastUsed": "2016-09-08T21:47:36Z", - "Path": "/division_abc/subdivision_xyz/engineering/", - "UserId": "AID2MAB8DPLSRHEXAMPLE", - "UserName": "Juan" - }, - { - "Arn": "arn:aws:iam::123456789012:user/division_abc/subdivision_xyz/engineering/Anika", - "CreateDate": "2014-04-09T15:43:45Z", - "PasswordLastUsed": "2016-09-24T16:18:07Z", - "Path": "/division_abc/subdivision_xyz/engineering/", - "UserId": "AIDIODR4TAW7CSEXAMPLE", - "UserName": "Anika" - } - ] - }, - "comments": { - "input": { - }, - "output": { - } - }, - "description": "The following command lists the IAM users in the current account.", - "id": "9edfbd73-03d8-4d8a-9a79-76c85e8c8298", - "title": "To list IAM users" - } - ], - "ListVirtualMFADevices": [ - { - "input": { - }, - "output": { - "VirtualMFADevices": [ - { - "SerialNumber": "arn:aws:iam::123456789012:mfa/ExampleMFADevice" - }, - { - "SerialNumber": "arn:aws:iam::123456789012:mfa/Juan" - } - ] - }, - "comments": { - "input": { - }, - "output": { - } - }, - "description": "The following command lists the virtual MFA devices that have been configured for the current account.", - "id": "54f9ac18-5100-4070-bec4-fe5f612710d5", - "title": "To list virtual MFA devices" - } - ], - "PutGroupPolicy": [ - { - "input": { - "GroupName": "Admins", - "PolicyDocument": "{\"Version\":\"2012-10-17\",\"Statement\":{\"Effect\":\"Allow\",\"Action\":\"*\",\"Resource\":\"*\"}}", - "PolicyName": "AllPerms" - }, - "comments": { - "input": { - }, - "output": { - } - }, - "description": "The following command adds a policy named AllPerms to the IAM group named Admins.", - "id": "4bc17418-758f-4d0f-ab0c-4d00265fec2e", - "title": "To add a policy to a group" - } - ], - "PutRolePolicy": [ - { - "input": { - "PolicyDocument": "{\"Version\":\"2012-10-17\",\"Statement\":{\"Effect\":\"Allow\",\"Action\":\"s3:*\",\"Resource\":\"*\"}}", - "PolicyName": "S3AccessPolicy", - "RoleName": "S3Access" - }, - "comments": { - "input": { - }, - "output": { - } - }, - "description": "The following command adds a permissions policy to the role named Test-Role.", - "id": "de62fd00-46c7-4601-9e0d-71d5fbb11ecb", - "title": "To attach a permissions policy to an IAM role" - } - ], - "PutUserPolicy": [ - { - "input": { - "PolicyDocument": "{\"Version\":\"2012-10-17\",\"Statement\":{\"Effect\":\"Allow\",\"Action\":\"*\",\"Resource\":\"*\"}}", - "PolicyName": "AllAccessPolicy", - "UserName": "Bob" - }, - "comments": { - "input": { - }, - "output": { - } - }, - "description": "The following command attaches a policy to the IAM user named Bob.", - "id": "2551ffc6-3576-4d39-823f-30b60bffc2c7", - "title": "To attach a policy to an IAM user" - } - ], - "RemoveRoleFromInstanceProfile": [ - { - "input": { - "InstanceProfileName": "ExampleInstanceProfile", - "RoleName": "Test-Role" - }, - "comments": { - "input": { - }, - "output": { - } - }, - "description": "The following command removes the role named Test-Role from the instance profile named ExampleInstanceProfile.", - "id": "6d9f46f1-9f4a-4873-b403-51a85c5c627c", - "title": "To remove a role from an instance profile" - } - ], - "RemoveUserFromGroup": [ - { - "input": { - "GroupName": "Admins", - "UserName": "Bob" - }, - "comments": { - "input": { - }, - "output": { - } - }, - "description": "The following command removes the user named Bob from the IAM group named Admins.", - "id": "fb54d5b4-0caf-41d8-af0e-10a84413f174", - "title": "To remove a user from an IAM group" - } - ], - "UpdateAccessKey": [ - { - "input": { - "AccessKeyId": "AKIAIOSFODNN7EXAMPLE", - "Status": "Inactive", - "UserName": "Bob" - }, - "comments": { - "input": { - }, - "output": { - } - }, - "description": "The following command deactivates the specified access key (access key ID and secret access key) for the IAM user named Bob.", - "id": "02b556fd-e673-49b7-ab6b-f2f9035967d0", - "title": "To activate or deactivate an access key for an IAM user" - } - ], - "UpdateAccountPasswordPolicy": [ - { - "input": { - "MinimumPasswordLength": 8, - "RequireNumbers": true - }, - "comments": { - "input": { - }, - "output": { - } - }, - "description": "The following command sets the password policy to require a minimum length of eight characters and to require one or more numbers in the password:", - "id": "c263a1af-37dc-4423-8dba-9790284ef5e0", - "title": "To set or change the current account password policy" - } - ], - "UpdateAssumeRolePolicy": [ - { - "input": { - "PolicyDocument": "{\"Version\":\"2012-10-17\",\"Statement\":[{\"Effect\":\"Allow\",\"Principal\":{\"Service\":[\"ec2.amazonaws.com\"]},\"Action\":[\"sts:AssumeRole\"]}]}", - "RoleName": "S3AccessForEC2Instances" - }, - "comments": { - "input": { - }, - "output": { - } - }, - "description": "The following command updates the role trust policy for the role named Test-Role:", - "id": "c9150063-d953-4e99-9576-9685872006c6", - "title": "To update the trust policy for an IAM role" - } - ], - "UpdateGroup": [ - { - "input": { - "GroupName": "Test", - "NewGroupName": "Test-1" - }, - "comments": { - "input": { - }, - "output": { - } - }, - "description": "The following command changes the name of the IAM group Test to Test-1.", - "id": "f0cf1662-91ae-4278-a80e-7db54256ccba", - "title": "To rename an IAM group" - } - ], - "UpdateLoginProfile": [ - { - "input": { - "Password": "SomeKindOfPassword123!@#", - "UserName": "Bob" - }, - "comments": { - "input": { - }, - "output": { - } - }, - "description": "The following command creates or changes the password for the IAM user named Bob.", - "id": "036d9498-ecdb-4ed6-a8d8-366c383d1487", - "title": "To change the password for an IAM user" - } - ], - "UpdateSigningCertificate": [ - { - "input": { - "CertificateId": "TA7SMP42TDN5Z26OBPJE7EXAMPLE", - "Status": "Inactive", - "UserName": "Bob" - }, - "comments": { - "input": { - }, - "output": { - } - }, - "description": "The following command changes the status of a signing certificate for a user named Bob to Inactive.", - "id": "829aee7b-efc5-4b3b-84a5-7f899b38018d", - "title": "To change the active status of a signing certificate for an IAM user" - } - ], - "UpdateUser": [ - { - "input": { - "NewUserName": "Robert", - "UserName": "Bob" - }, - "comments": { - "input": { - }, - "output": { - } - }, - "description": "The following command changes the name of the IAM user Bob to Robert. It does not change the user's path.", - "id": "275d53ed-347a-44e6-b7d0-a96276154352", - "title": "To change an IAM user's name" - } - ], - "UploadServerCertificate": [ - { - "input": { - "CertificateBody": "-----BEGIN CERTIFICATE----------END CERTIFICATE-----", - "Path": "/company/servercerts/", - "PrivateKey": "-----BEGIN DSA PRIVATE KEY----------END DSA PRIVATE KEY-----", - "ServerCertificateName": "ProdServerCert" - }, - "output": { - "ServerCertificateMetadata": { - "Arn": "arn:aws:iam::123456789012:server-certificate/company/servercerts/ProdServerCert", - "Expiration": "2012-05-08T01:02:03.004Z", - "Path": "/company/servercerts/", - "ServerCertificateId": "ASCA1111111111EXAMPLE", - "ServerCertificateName": "ProdServerCert", - "UploadDate": "2010-05-08T01:02:03.004Z" - } - }, - "comments": { - "input": { - }, - "output": { - } - }, - "description": "The following upload-server-certificate command uploads a server certificate to your AWS account:", - "id": "06eab6d1-ebf2-4bd9-839d-f7508b9a38b6", - "title": "To upload a server certificate to your AWS account" - } - ], - "UploadSigningCertificate": [ - { - "input": { - "CertificateBody": "-----BEGIN CERTIFICATE----------END CERTIFICATE-----", - "UserName": "Bob" - }, - "output": { - "Certificate": { - "CertificateBody": "-----BEGIN CERTIFICATE----------END CERTIFICATE-----", - "CertificateId": "ID123456789012345EXAMPLE", - "Status": "Active", - "UploadDate": "2015-06-06T21:40:08.121Z", - "UserName": "Bob" - } - }, - "comments": { - "input": { - }, - "output": { - } - }, - "description": "The following command uploads a signing certificate for the IAM user named Bob.", - "id": "e67489b6-7b73-4e30-9ed3-9a9e0231e458", - "title": "To upload a signing certificate for an IAM user" - } - ] - } -} diff --git a/workshops/monte-carlo-on-ec2-spot-fleet/src/web/node_modules/aws-sdk/apis/iam-2010-05-08.min.json b/workshops/monte-carlo-on-ec2-spot-fleet/src/web/node_modules/aws-sdk/apis/iam-2010-05-08.min.json deleted file mode 100644 index 5331ceee..00000000 --- a/workshops/monte-carlo-on-ec2-spot-fleet/src/web/node_modules/aws-sdk/apis/iam-2010-05-08.min.json +++ /dev/null @@ -1,3186 +0,0 @@ -{ - "version": "2.0", - "metadata": { - "apiVersion": "2010-05-08", - "endpointPrefix": "iam", - "globalEndpoint": "iam.amazonaws.com", - "protocol": "query", - "serviceAbbreviation": "IAM", - "serviceFullName": "AWS Identity and Access Management", - "signatureVersion": "v4", - "uid": "iam-2010-05-08", - "xmlNamespace": "https://iam.amazonaws.com/doc/2010-05-08/" - }, - "operations": { - "AddClientIDToOpenIDConnectProvider": { - "input": { - "type": "structure", - "required": [ - "OpenIDConnectProviderArn", - "ClientID" - ], - "members": { - "OpenIDConnectProviderArn": {}, - "ClientID": {} - } - } - }, - "AddRoleToInstanceProfile": { - "input": { - "type": "structure", - "required": [ - "InstanceProfileName", - "RoleName" - ], - "members": { - "InstanceProfileName": {}, - "RoleName": {} - } - } - }, - "AddUserToGroup": { - "input": { - "type": "structure", - "required": [ - "GroupName", - "UserName" - ], - "members": { - "GroupName": {}, - "UserName": {} - } - } - }, - "AttachGroupPolicy": { - "input": { - "type": "structure", - "required": [ - "GroupName", - "PolicyArn" - ], - "members": { - "GroupName": {}, - "PolicyArn": {} - } - } - }, - "AttachRolePolicy": { - "input": { - "type": "structure", - "required": [ - "RoleName", - "PolicyArn" - ], - "members": { - "RoleName": {}, - "PolicyArn": {} - } - } - }, - "AttachUserPolicy": { - "input": { - "type": "structure", - "required": [ - "UserName", - "PolicyArn" - ], - "members": { - "UserName": {}, - "PolicyArn": {} - } - } - }, - "ChangePassword": { - "input": { - "type": "structure", - "required": [ - "OldPassword", - "NewPassword" - ], - "members": { - "OldPassword": { - "shape": "Sf" - }, - "NewPassword": { - "shape": "Sf" - } - } - } - }, - "CreateAccessKey": { - "input": { - "type": "structure", - "members": { - "UserName": {} - } - }, - "output": { - "resultWrapper": "CreateAccessKeyResult", - "type": "structure", - "required": [ - "AccessKey" - ], - "members": { - "AccessKey": { - "type": "structure", - "required": [ - "UserName", - "AccessKeyId", - "Status", - "SecretAccessKey" - ], - "members": { - "UserName": {}, - "AccessKeyId": {}, - "Status": {}, - "SecretAccessKey": { - "type": "string", - "sensitive": true - }, - "CreateDate": { - "type": "timestamp" - } - } - } - } - } - }, - "CreateAccountAlias": { - "input": { - "type": "structure", - "required": [ - "AccountAlias" - ], - "members": { - "AccountAlias": {} - } - } - }, - "CreateGroup": { - "input": { - "type": "structure", - "required": [ - "GroupName" - ], - "members": { - "Path": {}, - "GroupName": {} - } - }, - "output": { - "resultWrapper": "CreateGroupResult", - "type": "structure", - "required": [ - "Group" - ], - "members": { - "Group": { - "shape": "Ss" - } - } - } - }, - "CreateInstanceProfile": { - "input": { - "type": "structure", - "required": [ - "InstanceProfileName" - ], - "members": { - "InstanceProfileName": {}, - "Path": {} - } - }, - "output": { - "resultWrapper": "CreateInstanceProfileResult", - "type": "structure", - "required": [ - "InstanceProfile" - ], - "members": { - "InstanceProfile": { - "shape": "Sw" - } - } - } - }, - "CreateLoginProfile": { - "input": { - "type": "structure", - "required": [ - "UserName", - "Password" - ], - "members": { - "UserName": {}, - "Password": { - "shape": "Sf" - }, - "PasswordResetRequired": { - "type": "boolean" - } - } - }, - "output": { - "resultWrapper": "CreateLoginProfileResult", - "type": "structure", - "required": [ - "LoginProfile" - ], - "members": { - "LoginProfile": { - "shape": "S14" - } - } - } - }, - "CreateOpenIDConnectProvider": { - "input": { - "type": "structure", - "required": [ - "Url", - "ThumbprintList" - ], - "members": { - "Url": {}, - "ClientIDList": { - "shape": "S17" - }, - "ThumbprintList": { - "shape": "S18" - } - } - }, - "output": { - "resultWrapper": "CreateOpenIDConnectProviderResult", - "type": "structure", - "members": { - "OpenIDConnectProviderArn": {} - } - } - }, - "CreatePolicy": { - "input": { - "type": "structure", - "required": [ - "PolicyName", - "PolicyDocument" - ], - "members": { - "PolicyName": {}, - "Path": {}, - "PolicyDocument": {}, - "Description": {} - } - }, - "output": { - "resultWrapper": "CreatePolicyResult", - "type": "structure", - "members": { - "Policy": { - "shape": "S1g" - } - } - } - }, - "CreatePolicyVersion": { - "input": { - "type": "structure", - "required": [ - "PolicyArn", - "PolicyDocument" - ], - "members": { - "PolicyArn": {}, - "PolicyDocument": {}, - "SetAsDefault": { - "type": "boolean" - } - } - }, - "output": { - "resultWrapper": "CreatePolicyVersionResult", - "type": "structure", - "members": { - "PolicyVersion": { - "shape": "S1l" - } - } - } - }, - "CreateRole": { - "input": { - "type": "structure", - "required": [ - "RoleName", - "AssumeRolePolicyDocument" - ], - "members": { - "Path": {}, - "RoleName": {}, - "AssumeRolePolicyDocument": {}, - "Description": {} - } - }, - "output": { - "resultWrapper": "CreateRoleResult", - "type": "structure", - "required": [ - "Role" - ], - "members": { - "Role": { - "shape": "Sy" - } - } - } - }, - "CreateSAMLProvider": { - "input": { - "type": "structure", - "required": [ - "SAMLMetadataDocument", - "Name" - ], - "members": { - "SAMLMetadataDocument": {}, - "Name": {} - } - }, - "output": { - "resultWrapper": "CreateSAMLProviderResult", - "type": "structure", - "members": { - "SAMLProviderArn": {} - } - } - }, - "CreateServiceLinkedRole": { - "input": { - "type": "structure", - "required": [ - "AWSServiceName" - ], - "members": { - "AWSServiceName": {}, - "Description": {}, - "CustomSuffix": {} - } - }, - "output": { - "resultWrapper": "CreateServiceLinkedRoleResult", - "type": "structure", - "members": { - "Role": { - "shape": "Sy" - } - } - } - }, - "CreateServiceSpecificCredential": { - "input": { - "type": "structure", - "required": [ - "UserName", - "ServiceName" - ], - "members": { - "UserName": {}, - "ServiceName": {} - } - }, - "output": { - "resultWrapper": "CreateServiceSpecificCredentialResult", - "type": "structure", - "members": { - "ServiceSpecificCredential": { - "shape": "S1y" - } - } - } - }, - "CreateUser": { - "input": { - "type": "structure", - "required": [ - "UserName" - ], - "members": { - "Path": {}, - "UserName": {} - } - }, - "output": { - "resultWrapper": "CreateUserResult", - "type": "structure", - "members": { - "User": { - "shape": "S24" - } - } - } - }, - "CreateVirtualMFADevice": { - "input": { - "type": "structure", - "required": [ - "VirtualMFADeviceName" - ], - "members": { - "Path": {}, - "VirtualMFADeviceName": {} - } - }, - "output": { - "resultWrapper": "CreateVirtualMFADeviceResult", - "type": "structure", - "required": [ - "VirtualMFADevice" - ], - "members": { - "VirtualMFADevice": { - "shape": "S28" - } - } - } - }, - "DeactivateMFADevice": { - "input": { - "type": "structure", - "required": [ - "UserName", - "SerialNumber" - ], - "members": { - "UserName": {}, - "SerialNumber": {} - } - } - }, - "DeleteAccessKey": { - "input": { - "type": "structure", - "required": [ - "AccessKeyId" - ], - "members": { - "UserName": {}, - "AccessKeyId": {} - } - } - }, - "DeleteAccountAlias": { - "input": { - "type": "structure", - "required": [ - "AccountAlias" - ], - "members": { - "AccountAlias": {} - } - } - }, - "DeleteAccountPasswordPolicy": {}, - "DeleteGroup": { - "input": { - "type": "structure", - "required": [ - "GroupName" - ], - "members": { - "GroupName": {} - } - } - }, - "DeleteGroupPolicy": { - "input": { - "type": "structure", - "required": [ - "GroupName", - "PolicyName" - ], - "members": { - "GroupName": {}, - "PolicyName": {} - } - } - }, - "DeleteInstanceProfile": { - "input": { - "type": "structure", - "required": [ - "InstanceProfileName" - ], - "members": { - "InstanceProfileName": {} - } - } - }, - "DeleteLoginProfile": { - "input": { - "type": "structure", - "required": [ - "UserName" - ], - "members": { - "UserName": {} - } - } - }, - "DeleteOpenIDConnectProvider": { - "input": { - "type": "structure", - "required": [ - "OpenIDConnectProviderArn" - ], - "members": { - "OpenIDConnectProviderArn": {} - } - } - }, - "DeletePolicy": { - "input": { - "type": "structure", - "required": [ - "PolicyArn" - ], - "members": { - "PolicyArn": {} - } - } - }, - "DeletePolicyVersion": { - "input": { - "type": "structure", - "required": [ - "PolicyArn", - "VersionId" - ], - "members": { - "PolicyArn": {}, - "VersionId": {} - } - } - }, - "DeleteRole": { - "input": { - "type": "structure", - "required": [ - "RoleName" - ], - "members": { - "RoleName": {} - } - } - }, - "DeleteRolePolicy": { - "input": { - "type": "structure", - "required": [ - "RoleName", - "PolicyName" - ], - "members": { - "RoleName": {}, - "PolicyName": {} - } - } - }, - "DeleteSAMLProvider": { - "input": { - "type": "structure", - "required": [ - "SAMLProviderArn" - ], - "members": { - "SAMLProviderArn": {} - } - } - }, - "DeleteSSHPublicKey": { - "input": { - "type": "structure", - "required": [ - "UserName", - "SSHPublicKeyId" - ], - "members": { - "UserName": {}, - "SSHPublicKeyId": {} - } - } - }, - "DeleteServerCertificate": { - "input": { - "type": "structure", - "required": [ - "ServerCertificateName" - ], - "members": { - "ServerCertificateName": {} - } - } - }, - "DeleteServiceLinkedRole": { - "input": { - "type": "structure", - "required": [ - "RoleName" - ], - "members": { - "RoleName": {} - } - }, - "output": { - "resultWrapper": "DeleteServiceLinkedRoleResult", - "type": "structure", - "required": [ - "DeletionTaskId" - ], - "members": { - "DeletionTaskId": {} - } - } - }, - "DeleteServiceSpecificCredential": { - "input": { - "type": "structure", - "required": [ - "ServiceSpecificCredentialId" - ], - "members": { - "UserName": {}, - "ServiceSpecificCredentialId": {} - } - } - }, - "DeleteSigningCertificate": { - "input": { - "type": "structure", - "required": [ - "CertificateId" - ], - "members": { - "UserName": {}, - "CertificateId": {} - } - } - }, - "DeleteUser": { - "input": { - "type": "structure", - "required": [ - "UserName" - ], - "members": { - "UserName": {} - } - } - }, - "DeleteUserPolicy": { - "input": { - "type": "structure", - "required": [ - "UserName", - "PolicyName" - ], - "members": { - "UserName": {}, - "PolicyName": {} - } - } - }, - "DeleteVirtualMFADevice": { - "input": { - "type": "structure", - "required": [ - "SerialNumber" - ], - "members": { - "SerialNumber": {} - } - } - }, - "DetachGroupPolicy": { - "input": { - "type": "structure", - "required": [ - "GroupName", - "PolicyArn" - ], - "members": { - "GroupName": {}, - "PolicyArn": {} - } - } - }, - "DetachRolePolicy": { - "input": { - "type": "structure", - "required": [ - "RoleName", - "PolicyArn" - ], - "members": { - "RoleName": {}, - "PolicyArn": {} - } - } - }, - "DetachUserPolicy": { - "input": { - "type": "structure", - "required": [ - "UserName", - "PolicyArn" - ], - "members": { - "UserName": {}, - "PolicyArn": {} - } - } - }, - "EnableMFADevice": { - "input": { - "type": "structure", - "required": [ - "UserName", - "SerialNumber", - "AuthenticationCode1", - "AuthenticationCode2" - ], - "members": { - "UserName": {}, - "SerialNumber": {}, - "AuthenticationCode1": {}, - "AuthenticationCode2": {} - } - } - }, - "GenerateCredentialReport": { - "output": { - "resultWrapper": "GenerateCredentialReportResult", - "type": "structure", - "members": { - "State": {}, - "Description": {} - } - } - }, - "GetAccessKeyLastUsed": { - "input": { - "type": "structure", - "required": [ - "AccessKeyId" - ], - "members": { - "AccessKeyId": {} - } - }, - "output": { - "resultWrapper": "GetAccessKeyLastUsedResult", - "type": "structure", - "members": { - "UserName": {}, - "AccessKeyLastUsed": { - "type": "structure", - "required": [ - "LastUsedDate", - "ServiceName", - "Region" - ], - "members": { - "LastUsedDate": { - "type": "timestamp" - }, - "ServiceName": {}, - "Region": {} - } - } - } - } - }, - "GetAccountAuthorizationDetails": { - "input": { - "type": "structure", - "members": { - "Filter": { - "type": "list", - "member": {} - }, - "MaxItems": { - "type": "integer" - }, - "Marker": {} - } - }, - "output": { - "resultWrapper": "GetAccountAuthorizationDetailsResult", - "type": "structure", - "members": { - "UserDetailList": { - "type": "list", - "member": { - "type": "structure", - "members": { - "Path": {}, - "UserName": {}, - "UserId": {}, - "Arn": {}, - "CreateDate": { - "type": "timestamp" - }, - "UserPolicyList": { - "shape": "S3l" - }, - "GroupList": { - "type": "list", - "member": {} - }, - "AttachedManagedPolicies": { - "shape": "S3o" - } - } - } - }, - "GroupDetailList": { - "type": "list", - "member": { - "type": "structure", - "members": { - "Path": {}, - "GroupName": {}, - "GroupId": {}, - "Arn": {}, - "CreateDate": { - "type": "timestamp" - }, - "GroupPolicyList": { - "shape": "S3l" - }, - "AttachedManagedPolicies": { - "shape": "S3o" - } - } - } - }, - "RoleDetailList": { - "type": "list", - "member": { - "type": "structure", - "members": { - "Path": {}, - "RoleName": {}, - "RoleId": {}, - "Arn": {}, - "CreateDate": { - "type": "timestamp" - }, - "AssumeRolePolicyDocument": {}, - "InstanceProfileList": { - "shape": "S3u" - }, - "RolePolicyList": { - "shape": "S3l" - }, - "AttachedManagedPolicies": { - "shape": "S3o" - } - } - } - }, - "Policies": { - "type": "list", - "member": { - "type": "structure", - "members": { - "PolicyName": {}, - "PolicyId": {}, - "Arn": {}, - "Path": {}, - "DefaultVersionId": {}, - "AttachmentCount": { - "type": "integer" - }, - "IsAttachable": { - "type": "boolean" - }, - "Description": {}, - "CreateDate": { - "type": "timestamp" - }, - "UpdateDate": { - "type": "timestamp" - }, - "PolicyVersionList": { - "shape": "S3x" - } - } - } - }, - "IsTruncated": { - "type": "boolean" - }, - "Marker": {} - } - } - }, - "GetAccountPasswordPolicy": { - "output": { - "resultWrapper": "GetAccountPasswordPolicyResult", - "type": "structure", - "required": [ - "PasswordPolicy" - ], - "members": { - "PasswordPolicy": { - "type": "structure", - "members": { - "MinimumPasswordLength": { - "type": "integer" - }, - "RequireSymbols": { - "type": "boolean" - }, - "RequireNumbers": { - "type": "boolean" - }, - "RequireUppercaseCharacters": { - "type": "boolean" - }, - "RequireLowercaseCharacters": { - "type": "boolean" - }, - "AllowUsersToChangePassword": { - "type": "boolean" - }, - "ExpirePasswords": { - "type": "boolean" - }, - "MaxPasswordAge": { - "type": "integer" - }, - "PasswordReusePrevention": { - "type": "integer" - }, - "HardExpiry": { - "type": "boolean" - } - } - } - } - } - }, - "GetAccountSummary": { - "output": { - "resultWrapper": "GetAccountSummaryResult", - "type": "structure", - "members": { - "SummaryMap": { - "type": "map", - "key": {}, - "value": { - "type": "integer" - } - } - } - } - }, - "GetContextKeysForCustomPolicy": { - "input": { - "type": "structure", - "required": [ - "PolicyInputList" - ], - "members": { - "PolicyInputList": { - "shape": "S49" - } - } - }, - "output": { - "shape": "S4a", - "resultWrapper": "GetContextKeysForCustomPolicyResult" - } - }, - "GetContextKeysForPrincipalPolicy": { - "input": { - "type": "structure", - "required": [ - "PolicySourceArn" - ], - "members": { - "PolicySourceArn": {}, - "PolicyInputList": { - "shape": "S49" - } - } - }, - "output": { - "shape": "S4a", - "resultWrapper": "GetContextKeysForPrincipalPolicyResult" - } - }, - "GetCredentialReport": { - "output": { - "resultWrapper": "GetCredentialReportResult", - "type": "structure", - "members": { - "Content": { - "type": "blob" - }, - "ReportFormat": {}, - "GeneratedTime": { - "type": "timestamp" - } - } - } - }, - "GetGroup": { - "input": { - "type": "structure", - "required": [ - "GroupName" - ], - "members": { - "GroupName": {}, - "Marker": {}, - "MaxItems": { - "type": "integer" - } - } - }, - "output": { - "resultWrapper": "GetGroupResult", - "type": "structure", - "required": [ - "Group", - "Users" - ], - "members": { - "Group": { - "shape": "Ss" - }, - "Users": { - "shape": "S4j" - }, - "IsTruncated": { - "type": "boolean" - }, - "Marker": {} - } - } - }, - "GetGroupPolicy": { - "input": { - "type": "structure", - "required": [ - "GroupName", - "PolicyName" - ], - "members": { - "GroupName": {}, - "PolicyName": {} - } - }, - "output": { - "resultWrapper": "GetGroupPolicyResult", - "type": "structure", - "required": [ - "GroupName", - "PolicyName", - "PolicyDocument" - ], - "members": { - "GroupName": {}, - "PolicyName": {}, - "PolicyDocument": {} - } - } - }, - "GetInstanceProfile": { - "input": { - "type": "structure", - "required": [ - "InstanceProfileName" - ], - "members": { - "InstanceProfileName": {} - } - }, - "output": { - "resultWrapper": "GetInstanceProfileResult", - "type": "structure", - "required": [ - "InstanceProfile" - ], - "members": { - "InstanceProfile": { - "shape": "Sw" - } - } - } - }, - "GetLoginProfile": { - "input": { - "type": "structure", - "required": [ - "UserName" - ], - "members": { - "UserName": {} - } - }, - "output": { - "resultWrapper": "GetLoginProfileResult", - "type": "structure", - "required": [ - "LoginProfile" - ], - "members": { - "LoginProfile": { - "shape": "S14" - } - } - } - }, - "GetOpenIDConnectProvider": { - "input": { - "type": "structure", - "required": [ - "OpenIDConnectProviderArn" - ], - "members": { - "OpenIDConnectProviderArn": {} - } - }, - "output": { - "resultWrapper": "GetOpenIDConnectProviderResult", - "type": "structure", - "members": { - "Url": {}, - "ClientIDList": { - "shape": "S17" - }, - "ThumbprintList": { - "shape": "S18" - }, - "CreateDate": { - "type": "timestamp" - } - } - } - }, - "GetPolicy": { - "input": { - "type": "structure", - "required": [ - "PolicyArn" - ], - "members": { - "PolicyArn": {} - } - }, - "output": { - "resultWrapper": "GetPolicyResult", - "type": "structure", - "members": { - "Policy": { - "shape": "S1g" - } - } - } - }, - "GetPolicyVersion": { - "input": { - "type": "structure", - "required": [ - "PolicyArn", - "VersionId" - ], - "members": { - "PolicyArn": {}, - "VersionId": {} - } - }, - "output": { - "resultWrapper": "GetPolicyVersionResult", - "type": "structure", - "members": { - "PolicyVersion": { - "shape": "S1l" - } - } - } - }, - "GetRole": { - "input": { - "type": "structure", - "required": [ - "RoleName" - ], - "members": { - "RoleName": {} - } - }, - "output": { - "resultWrapper": "GetRoleResult", - "type": "structure", - "required": [ - "Role" - ], - "members": { - "Role": { - "shape": "Sy" - } - } - } - }, - "GetRolePolicy": { - "input": { - "type": "structure", - "required": [ - "RoleName", - "PolicyName" - ], - "members": { - "RoleName": {}, - "PolicyName": {} - } - }, - "output": { - "resultWrapper": "GetRolePolicyResult", - "type": "structure", - "required": [ - "RoleName", - "PolicyName", - "PolicyDocument" - ], - "members": { - "RoleName": {}, - "PolicyName": {}, - "PolicyDocument": {} - } - } - }, - "GetSAMLProvider": { - "input": { - "type": "structure", - "required": [ - "SAMLProviderArn" - ], - "members": { - "SAMLProviderArn": {} - } - }, - "output": { - "resultWrapper": "GetSAMLProviderResult", - "type": "structure", - "members": { - "SAMLMetadataDocument": {}, - "CreateDate": { - "type": "timestamp" - }, - "ValidUntil": { - "type": "timestamp" - } - } - } - }, - "GetSSHPublicKey": { - "input": { - "type": "structure", - "required": [ - "UserName", - "SSHPublicKeyId", - "Encoding" - ], - "members": { - "UserName": {}, - "SSHPublicKeyId": {}, - "Encoding": {} - } - }, - "output": { - "resultWrapper": "GetSSHPublicKeyResult", - "type": "structure", - "members": { - "SSHPublicKey": { - "shape": "S55" - } - } - } - }, - "GetServerCertificate": { - "input": { - "type": "structure", - "required": [ - "ServerCertificateName" - ], - "members": { - "ServerCertificateName": {} - } - }, - "output": { - "resultWrapper": "GetServerCertificateResult", - "type": "structure", - "required": [ - "ServerCertificate" - ], - "members": { - "ServerCertificate": { - "type": "structure", - "required": [ - "ServerCertificateMetadata", - "CertificateBody" - ], - "members": { - "ServerCertificateMetadata": { - "shape": "S5b" - }, - "CertificateBody": {}, - "CertificateChain": {} - } - } - } - } - }, - "GetServiceLinkedRoleDeletionStatus": { - "input": { - "type": "structure", - "required": [ - "DeletionTaskId" - ], - "members": { - "DeletionTaskId": {} - } - }, - "output": { - "resultWrapper": "GetServiceLinkedRoleDeletionStatusResult", - "type": "structure", - "required": [ - "Status" - ], - "members": { - "Status": {}, - "Reason": { - "type": "structure", - "members": { - "Reason": {}, - "RoleUsageList": { - "type": "list", - "member": { - "type": "structure", - "members": { - "Region": {}, - "Resources": { - "type": "list", - "member": {} - } - } - } - } - } - } - } - } - }, - "GetUser": { - "input": { - "type": "structure", - "members": { - "UserName": {} - } - }, - "output": { - "resultWrapper": "GetUserResult", - "type": "structure", - "required": [ - "User" - ], - "members": { - "User": { - "shape": "S24" - } - } - } - }, - "GetUserPolicy": { - "input": { - "type": "structure", - "required": [ - "UserName", - "PolicyName" - ], - "members": { - "UserName": {}, - "PolicyName": {} - } - }, - "output": { - "resultWrapper": "GetUserPolicyResult", - "type": "structure", - "required": [ - "UserName", - "PolicyName", - "PolicyDocument" - ], - "members": { - "UserName": {}, - "PolicyName": {}, - "PolicyDocument": {} - } - } - }, - "ListAccessKeys": { - "input": { - "type": "structure", - "members": { - "UserName": {}, - "Marker": {}, - "MaxItems": { - "type": "integer" - } - } - }, - "output": { - "resultWrapper": "ListAccessKeysResult", - "type": "structure", - "required": [ - "AccessKeyMetadata" - ], - "members": { - "AccessKeyMetadata": { - "type": "list", - "member": { - "type": "structure", - "members": { - "UserName": {}, - "AccessKeyId": {}, - "Status": {}, - "CreateDate": { - "type": "timestamp" - } - } - } - }, - "IsTruncated": { - "type": "boolean" - }, - "Marker": {} - } - } - }, - "ListAccountAliases": { - "input": { - "type": "structure", - "members": { - "Marker": {}, - "MaxItems": { - "type": "integer" - } - } - }, - "output": { - "resultWrapper": "ListAccountAliasesResult", - "type": "structure", - "required": [ - "AccountAliases" - ], - "members": { - "AccountAliases": { - "type": "list", - "member": {} - }, - "IsTruncated": { - "type": "boolean" - }, - "Marker": {} - } - } - }, - "ListAttachedGroupPolicies": { - "input": { - "type": "structure", - "required": [ - "GroupName" - ], - "members": { - "GroupName": {}, - "PathPrefix": {}, - "Marker": {}, - "MaxItems": { - "type": "integer" - } - } - }, - "output": { - "resultWrapper": "ListAttachedGroupPoliciesResult", - "type": "structure", - "members": { - "AttachedPolicies": { - "shape": "S3o" - }, - "IsTruncated": { - "type": "boolean" - }, - "Marker": {} - } - } - }, - "ListAttachedRolePolicies": { - "input": { - "type": "structure", - "required": [ - "RoleName" - ], - "members": { - "RoleName": {}, - "PathPrefix": {}, - "Marker": {}, - "MaxItems": { - "type": "integer" - } - } - }, - "output": { - "resultWrapper": "ListAttachedRolePoliciesResult", - "type": "structure", - "members": { - "AttachedPolicies": { - "shape": "S3o" - }, - "IsTruncated": { - "type": "boolean" - }, - "Marker": {} - } - } - }, - "ListAttachedUserPolicies": { - "input": { - "type": "structure", - "required": [ - "UserName" - ], - "members": { - "UserName": {}, - "PathPrefix": {}, - "Marker": {}, - "MaxItems": { - "type": "integer" - } - } - }, - "output": { - "resultWrapper": "ListAttachedUserPoliciesResult", - "type": "structure", - "members": { - "AttachedPolicies": { - "shape": "S3o" - }, - "IsTruncated": { - "type": "boolean" - }, - "Marker": {} - } - } - }, - "ListEntitiesForPolicy": { - "input": { - "type": "structure", - "required": [ - "PolicyArn" - ], - "members": { - "PolicyArn": {}, - "EntityFilter": {}, - "PathPrefix": {}, - "Marker": {}, - "MaxItems": { - "type": "integer" - } - } - }, - "output": { - "resultWrapper": "ListEntitiesForPolicyResult", - "type": "structure", - "members": { - "PolicyGroups": { - "type": "list", - "member": { - "type": "structure", - "members": { - "GroupName": {}, - "GroupId": {} - } - } - }, - "PolicyUsers": { - "type": "list", - "member": { - "type": "structure", - "members": { - "UserName": {}, - "UserId": {} - } - } - }, - "PolicyRoles": { - "type": "list", - "member": { - "type": "structure", - "members": { - "RoleName": {}, - "RoleId": {} - } - } - }, - "IsTruncated": { - "type": "boolean" - }, - "Marker": {} - } - } - }, - "ListGroupPolicies": { - "input": { - "type": "structure", - "required": [ - "GroupName" - ], - "members": { - "GroupName": {}, - "Marker": {}, - "MaxItems": { - "type": "integer" - } - } - }, - "output": { - "resultWrapper": "ListGroupPoliciesResult", - "type": "structure", - "required": [ - "PolicyNames" - ], - "members": { - "PolicyNames": { - "shape": "S6e" - }, - "IsTruncated": { - "type": "boolean" - }, - "Marker": {} - } - } - }, - "ListGroups": { - "input": { - "type": "structure", - "members": { - "PathPrefix": {}, - "Marker": {}, - "MaxItems": { - "type": "integer" - } - } - }, - "output": { - "resultWrapper": "ListGroupsResult", - "type": "structure", - "required": [ - "Groups" - ], - "members": { - "Groups": { - "shape": "S6i" - }, - "IsTruncated": { - "type": "boolean" - }, - "Marker": {} - } - } - }, - "ListGroupsForUser": { - "input": { - "type": "structure", - "required": [ - "UserName" - ], - "members": { - "UserName": {}, - "Marker": {}, - "MaxItems": { - "type": "integer" - } - } - }, - "output": { - "resultWrapper": "ListGroupsForUserResult", - "type": "structure", - "required": [ - "Groups" - ], - "members": { - "Groups": { - "shape": "S6i" - }, - "IsTruncated": { - "type": "boolean" - }, - "Marker": {} - } - } - }, - "ListInstanceProfiles": { - "input": { - "type": "structure", - "members": { - "PathPrefix": {}, - "Marker": {}, - "MaxItems": { - "type": "integer" - } - } - }, - "output": { - "resultWrapper": "ListInstanceProfilesResult", - "type": "structure", - "required": [ - "InstanceProfiles" - ], - "members": { - "InstanceProfiles": { - "shape": "S3u" - }, - "IsTruncated": { - "type": "boolean" - }, - "Marker": {} - } - } - }, - "ListInstanceProfilesForRole": { - "input": { - "type": "structure", - "required": [ - "RoleName" - ], - "members": { - "RoleName": {}, - "Marker": {}, - "MaxItems": { - "type": "integer" - } - } - }, - "output": { - "resultWrapper": "ListInstanceProfilesForRoleResult", - "type": "structure", - "required": [ - "InstanceProfiles" - ], - "members": { - "InstanceProfiles": { - "shape": "S3u" - }, - "IsTruncated": { - "type": "boolean" - }, - "Marker": {} - } - } - }, - "ListMFADevices": { - "input": { - "type": "structure", - "members": { - "UserName": {}, - "Marker": {}, - "MaxItems": { - "type": "integer" - } - } - }, - "output": { - "resultWrapper": "ListMFADevicesResult", - "type": "structure", - "required": [ - "MFADevices" - ], - "members": { - "MFADevices": { - "type": "list", - "member": { - "type": "structure", - "required": [ - "UserName", - "SerialNumber", - "EnableDate" - ], - "members": { - "UserName": {}, - "SerialNumber": {}, - "EnableDate": { - "type": "timestamp" - } - } - } - }, - "IsTruncated": { - "type": "boolean" - }, - "Marker": {} - } - } - }, - "ListOpenIDConnectProviders": { - "input": { - "type": "structure", - "members": {} - }, - "output": { - "resultWrapper": "ListOpenIDConnectProvidersResult", - "type": "structure", - "members": { - "OpenIDConnectProviderList": { - "type": "list", - "member": { - "type": "structure", - "members": { - "Arn": {} - } - } - } - } - } - }, - "ListPolicies": { - "input": { - "type": "structure", - "members": { - "Scope": {}, - "OnlyAttached": { - "type": "boolean" - }, - "PathPrefix": {}, - "Marker": {}, - "MaxItems": { - "type": "integer" - } - } - }, - "output": { - "resultWrapper": "ListPoliciesResult", - "type": "structure", - "members": { - "Policies": { - "type": "list", - "member": { - "shape": "S1g" - } - }, - "IsTruncated": { - "type": "boolean" - }, - "Marker": {} - } - } - }, - "ListPolicyVersions": { - "input": { - "type": "structure", - "required": [ - "PolicyArn" - ], - "members": { - "PolicyArn": {}, - "Marker": {}, - "MaxItems": { - "type": "integer" - } - } - }, - "output": { - "resultWrapper": "ListPolicyVersionsResult", - "type": "structure", - "members": { - "Versions": { - "shape": "S3x" - }, - "IsTruncated": { - "type": "boolean" - }, - "Marker": {} - } - } - }, - "ListRolePolicies": { - "input": { - "type": "structure", - "required": [ - "RoleName" - ], - "members": { - "RoleName": {}, - "Marker": {}, - "MaxItems": { - "type": "integer" - } - } - }, - "output": { - "resultWrapper": "ListRolePoliciesResult", - "type": "structure", - "required": [ - "PolicyNames" - ], - "members": { - "PolicyNames": { - "shape": "S6e" - }, - "IsTruncated": { - "type": "boolean" - }, - "Marker": {} - } - } - }, - "ListRoles": { - "input": { - "type": "structure", - "members": { - "PathPrefix": {}, - "Marker": {}, - "MaxItems": { - "type": "integer" - } - } - }, - "output": { - "resultWrapper": "ListRolesResult", - "type": "structure", - "required": [ - "Roles" - ], - "members": { - "Roles": { - "shape": "Sx" - }, - "IsTruncated": { - "type": "boolean" - }, - "Marker": {} - } - } - }, - "ListSAMLProviders": { - "input": { - "type": "structure", - "members": {} - }, - "output": { - "resultWrapper": "ListSAMLProvidersResult", - "type": "structure", - "members": { - "SAMLProviderList": { - "type": "list", - "member": { - "type": "structure", - "members": { - "Arn": {}, - "ValidUntil": { - "type": "timestamp" - }, - "CreateDate": { - "type": "timestamp" - } - } - } - } - } - } - }, - "ListSSHPublicKeys": { - "input": { - "type": "structure", - "members": { - "UserName": {}, - "Marker": {}, - "MaxItems": { - "type": "integer" - } - } - }, - "output": { - "resultWrapper": "ListSSHPublicKeysResult", - "type": "structure", - "members": { - "SSHPublicKeys": { - "type": "list", - "member": { - "type": "structure", - "required": [ - "UserName", - "SSHPublicKeyId", - "Status", - "UploadDate" - ], - "members": { - "UserName": {}, - "SSHPublicKeyId": {}, - "Status": {}, - "UploadDate": { - "type": "timestamp" - } - } - } - }, - "IsTruncated": { - "type": "boolean" - }, - "Marker": {} - } - } - }, - "ListServerCertificates": { - "input": { - "type": "structure", - "members": { - "PathPrefix": {}, - "Marker": {}, - "MaxItems": { - "type": "integer" - } - } - }, - "output": { - "resultWrapper": "ListServerCertificatesResult", - "type": "structure", - "required": [ - "ServerCertificateMetadataList" - ], - "members": { - "ServerCertificateMetadataList": { - "type": "list", - "member": { - "shape": "S5b" - } - }, - "IsTruncated": { - "type": "boolean" - }, - "Marker": {} - } - } - }, - "ListServiceSpecificCredentials": { - "input": { - "type": "structure", - "members": { - "UserName": {}, - "ServiceName": {} - } - }, - "output": { - "resultWrapper": "ListServiceSpecificCredentialsResult", - "type": "structure", - "members": { - "ServiceSpecificCredentials": { - "type": "list", - "member": { - "type": "structure", - "required": [ - "UserName", - "Status", - "ServiceUserName", - "CreateDate", - "ServiceSpecificCredentialId", - "ServiceName" - ], - "members": { - "UserName": {}, - "Status": {}, - "ServiceUserName": {}, - "CreateDate": { - "type": "timestamp" - }, - "ServiceSpecificCredentialId": {}, - "ServiceName": {} - } - } - } - } - } - }, - "ListSigningCertificates": { - "input": { - "type": "structure", - "members": { - "UserName": {}, - "Marker": {}, - "MaxItems": { - "type": "integer" - } - } - }, - "output": { - "resultWrapper": "ListSigningCertificatesResult", - "type": "structure", - "required": [ - "Certificates" - ], - "members": { - "Certificates": { - "type": "list", - "member": { - "shape": "S7p" - } - }, - "IsTruncated": { - "type": "boolean" - }, - "Marker": {} - } - } - }, - "ListUserPolicies": { - "input": { - "type": "structure", - "required": [ - "UserName" - ], - "members": { - "UserName": {}, - "Marker": {}, - "MaxItems": { - "type": "integer" - } - } - }, - "output": { - "resultWrapper": "ListUserPoliciesResult", - "type": "structure", - "required": [ - "PolicyNames" - ], - "members": { - "PolicyNames": { - "shape": "S6e" - }, - "IsTruncated": { - "type": "boolean" - }, - "Marker": {} - } - } - }, - "ListUsers": { - "input": { - "type": "structure", - "members": { - "PathPrefix": {}, - "Marker": {}, - "MaxItems": { - "type": "integer" - } - } - }, - "output": { - "resultWrapper": "ListUsersResult", - "type": "structure", - "required": [ - "Users" - ], - "members": { - "Users": { - "shape": "S4j" - }, - "IsTruncated": { - "type": "boolean" - }, - "Marker": {} - } - } - }, - "ListVirtualMFADevices": { - "input": { - "type": "structure", - "members": { - "AssignmentStatus": {}, - "Marker": {}, - "MaxItems": { - "type": "integer" - } - } - }, - "output": { - "resultWrapper": "ListVirtualMFADevicesResult", - "type": "structure", - "required": [ - "VirtualMFADevices" - ], - "members": { - "VirtualMFADevices": { - "type": "list", - "member": { - "shape": "S28" - } - }, - "IsTruncated": { - "type": "boolean" - }, - "Marker": {} - } - } - }, - "PutGroupPolicy": { - "input": { - "type": "structure", - "required": [ - "GroupName", - "PolicyName", - "PolicyDocument" - ], - "members": { - "GroupName": {}, - "PolicyName": {}, - "PolicyDocument": {} - } - } - }, - "PutRolePolicy": { - "input": { - "type": "structure", - "required": [ - "RoleName", - "PolicyName", - "PolicyDocument" - ], - "members": { - "RoleName": {}, - "PolicyName": {}, - "PolicyDocument": {} - } - } - }, - "PutUserPolicy": { - "input": { - "type": "structure", - "required": [ - "UserName", - "PolicyName", - "PolicyDocument" - ], - "members": { - "UserName": {}, - "PolicyName": {}, - "PolicyDocument": {} - } - } - }, - "RemoveClientIDFromOpenIDConnectProvider": { - "input": { - "type": "structure", - "required": [ - "OpenIDConnectProviderArn", - "ClientID" - ], - "members": { - "OpenIDConnectProviderArn": {}, - "ClientID": {} - } - } - }, - "RemoveRoleFromInstanceProfile": { - "input": { - "type": "structure", - "required": [ - "InstanceProfileName", - "RoleName" - ], - "members": { - "InstanceProfileName": {}, - "RoleName": {} - } - } - }, - "RemoveUserFromGroup": { - "input": { - "type": "structure", - "required": [ - "GroupName", - "UserName" - ], - "members": { - "GroupName": {}, - "UserName": {} - } - } - }, - "ResetServiceSpecificCredential": { - "input": { - "type": "structure", - "required": [ - "ServiceSpecificCredentialId" - ], - "members": { - "UserName": {}, - "ServiceSpecificCredentialId": {} - } - }, - "output": { - "resultWrapper": "ResetServiceSpecificCredentialResult", - "type": "structure", - "members": { - "ServiceSpecificCredential": { - "shape": "S1y" - } - } - } - }, - "ResyncMFADevice": { - "input": { - "type": "structure", - "required": [ - "UserName", - "SerialNumber", - "AuthenticationCode1", - "AuthenticationCode2" - ], - "members": { - "UserName": {}, - "SerialNumber": {}, - "AuthenticationCode1": {}, - "AuthenticationCode2": {} - } - } - }, - "SetDefaultPolicyVersion": { - "input": { - "type": "structure", - "required": [ - "PolicyArn", - "VersionId" - ], - "members": { - "PolicyArn": {}, - "VersionId": {} - } - } - }, - "SimulateCustomPolicy": { - "input": { - "type": "structure", - "required": [ - "PolicyInputList", - "ActionNames" - ], - "members": { - "PolicyInputList": { - "shape": "S49" - }, - "ActionNames": { - "shape": "S89" - }, - "ResourceArns": { - "shape": "S8b" - }, - "ResourcePolicy": {}, - "ResourceOwner": {}, - "CallerArn": {}, - "ContextEntries": { - "shape": "S8d" - }, - "ResourceHandlingOption": {}, - "MaxItems": { - "type": "integer" - }, - "Marker": {} - } - }, - "output": { - "shape": "S8j", - "resultWrapper": "SimulateCustomPolicyResult" - } - }, - "SimulatePrincipalPolicy": { - "input": { - "type": "structure", - "required": [ - "PolicySourceArn", - "ActionNames" - ], - "members": { - "PolicySourceArn": {}, - "PolicyInputList": { - "shape": "S49" - }, - "ActionNames": { - "shape": "S89" - }, - "ResourceArns": { - "shape": "S8b" - }, - "ResourcePolicy": {}, - "ResourceOwner": {}, - "CallerArn": {}, - "ContextEntries": { - "shape": "S8d" - }, - "ResourceHandlingOption": {}, - "MaxItems": { - "type": "integer" - }, - "Marker": {} - } - }, - "output": { - "shape": "S8j", - "resultWrapper": "SimulatePrincipalPolicyResult" - } - }, - "UpdateAccessKey": { - "input": { - "type": "structure", - "required": [ - "AccessKeyId", - "Status" - ], - "members": { - "UserName": {}, - "AccessKeyId": {}, - "Status": {} - } - } - }, - "UpdateAccountPasswordPolicy": { - "input": { - "type": "structure", - "members": { - "MinimumPasswordLength": { - "type": "integer" - }, - "RequireSymbols": { - "type": "boolean" - }, - "RequireNumbers": { - "type": "boolean" - }, - "RequireUppercaseCharacters": { - "type": "boolean" - }, - "RequireLowercaseCharacters": { - "type": "boolean" - }, - "AllowUsersToChangePassword": { - "type": "boolean" - }, - "MaxPasswordAge": { - "type": "integer" - }, - "PasswordReusePrevention": { - "type": "integer" - }, - "HardExpiry": { - "type": "boolean" - } - } - } - }, - "UpdateAssumeRolePolicy": { - "input": { - "type": "structure", - "required": [ - "RoleName", - "PolicyDocument" - ], - "members": { - "RoleName": {}, - "PolicyDocument": {} - } - } - }, - "UpdateGroup": { - "input": { - "type": "structure", - "required": [ - "GroupName" - ], - "members": { - "GroupName": {}, - "NewPath": {}, - "NewGroupName": {} - } - } - }, - "UpdateLoginProfile": { - "input": { - "type": "structure", - "required": [ - "UserName" - ], - "members": { - "UserName": {}, - "Password": { - "shape": "Sf" - }, - "PasswordResetRequired": { - "type": "boolean" - } - } - } - }, - "UpdateOpenIDConnectProviderThumbprint": { - "input": { - "type": "structure", - "required": [ - "OpenIDConnectProviderArn", - "ThumbprintList" - ], - "members": { - "OpenIDConnectProviderArn": {}, - "ThumbprintList": { - "shape": "S18" - } - } - } - }, - "UpdateRoleDescription": { - "input": { - "type": "structure", - "required": [ - "RoleName", - "Description" - ], - "members": { - "RoleName": {}, - "Description": {} - } - }, - "output": { - "resultWrapper": "UpdateRoleDescriptionResult", - "type": "structure", - "members": { - "Role": { - "shape": "Sy" - } - } - } - }, - "UpdateSAMLProvider": { - "input": { - "type": "structure", - "required": [ - "SAMLMetadataDocument", - "SAMLProviderArn" - ], - "members": { - "SAMLMetadataDocument": {}, - "SAMLProviderArn": {} - } - }, - "output": { - "resultWrapper": "UpdateSAMLProviderResult", - "type": "structure", - "members": { - "SAMLProviderArn": {} - } - } - }, - "UpdateSSHPublicKey": { - "input": { - "type": "structure", - "required": [ - "UserName", - "SSHPublicKeyId", - "Status" - ], - "members": { - "UserName": {}, - "SSHPublicKeyId": {}, - "Status": {} - } - } - }, - "UpdateServerCertificate": { - "input": { - "type": "structure", - "required": [ - "ServerCertificateName" - ], - "members": { - "ServerCertificateName": {}, - "NewPath": {}, - "NewServerCertificateName": {} - } - } - }, - "UpdateServiceSpecificCredential": { - "input": { - "type": "structure", - "required": [ - "ServiceSpecificCredentialId", - "Status" - ], - "members": { - "UserName": {}, - "ServiceSpecificCredentialId": {}, - "Status": {} - } - } - }, - "UpdateSigningCertificate": { - "input": { - "type": "structure", - "required": [ - "CertificateId", - "Status" - ], - "members": { - "UserName": {}, - "CertificateId": {}, - "Status": {} - } - } - }, - "UpdateUser": { - "input": { - "type": "structure", - "required": [ - "UserName" - ], - "members": { - "UserName": {}, - "NewPath": {}, - "NewUserName": {} - } - } - }, - "UploadSSHPublicKey": { - "input": { - "type": "structure", - "required": [ - "UserName", - "SSHPublicKeyBody" - ], - "members": { - "UserName": {}, - "SSHPublicKeyBody": {} - } - }, - "output": { - "resultWrapper": "UploadSSHPublicKeyResult", - "type": "structure", - "members": { - "SSHPublicKey": { - "shape": "S55" - } - } - } - }, - "UploadServerCertificate": { - "input": { - "type": "structure", - "required": [ - "ServerCertificateName", - "CertificateBody", - "PrivateKey" - ], - "members": { - "Path": {}, - "ServerCertificateName": {}, - "CertificateBody": {}, - "PrivateKey": { - "type": "string", - "sensitive": true - }, - "CertificateChain": {} - } - }, - "output": { - "resultWrapper": "UploadServerCertificateResult", - "type": "structure", - "members": { - "ServerCertificateMetadata": { - "shape": "S5b" - } - } - } - }, - "UploadSigningCertificate": { - "input": { - "type": "structure", - "required": [ - "CertificateBody" - ], - "members": { - "UserName": {}, - "CertificateBody": {} - } - }, - "output": { - "resultWrapper": "UploadSigningCertificateResult", - "type": "structure", - "required": [ - "Certificate" - ], - "members": { - "Certificate": { - "shape": "S7p" - } - } - } - } - }, - "shapes": { - "Sf": { - "type": "string", - "sensitive": true - }, - "Ss": { - "type": "structure", - "required": [ - "Path", - "GroupName", - "GroupId", - "Arn", - "CreateDate" - ], - "members": { - "Path": {}, - "GroupName": {}, - "GroupId": {}, - "Arn": {}, - "CreateDate": { - "type": "timestamp" - } - } - }, - "Sw": { - "type": "structure", - "required": [ - "Path", - "InstanceProfileName", - "InstanceProfileId", - "Arn", - "CreateDate", - "Roles" - ], - "members": { - "Path": {}, - "InstanceProfileName": {}, - "InstanceProfileId": {}, - "Arn": {}, - "CreateDate": { - "type": "timestamp" - }, - "Roles": { - "shape": "Sx" - } - } - }, - "Sx": { - "type": "list", - "member": { - "shape": "Sy" - } - }, - "Sy": { - "type": "structure", - "required": [ - "Path", - "RoleName", - "RoleId", - "Arn", - "CreateDate" - ], - "members": { - "Path": {}, - "RoleName": {}, - "RoleId": {}, - "Arn": {}, - "CreateDate": { - "type": "timestamp" - }, - "AssumeRolePolicyDocument": {}, - "Description": {} - } - }, - "S14": { - "type": "structure", - "required": [ - "UserName", - "CreateDate" - ], - "members": { - "UserName": {}, - "CreateDate": { - "type": "timestamp" - }, - "PasswordResetRequired": { - "type": "boolean" - } - } - }, - "S17": { - "type": "list", - "member": {} - }, - "S18": { - "type": "list", - "member": {} - }, - "S1g": { - "type": "structure", - "members": { - "PolicyName": {}, - "PolicyId": {}, - "Arn": {}, - "Path": {}, - "DefaultVersionId": {}, - "AttachmentCount": { - "type": "integer" - }, - "IsAttachable": { - "type": "boolean" - }, - "Description": {}, - "CreateDate": { - "type": "timestamp" - }, - "UpdateDate": { - "type": "timestamp" - } - } - }, - "S1l": { - "type": "structure", - "members": { - "Document": {}, - "VersionId": {}, - "IsDefaultVersion": { - "type": "boolean" - }, - "CreateDate": { - "type": "timestamp" - } - } - }, - "S1y": { - "type": "structure", - "required": [ - "CreateDate", - "ServiceName", - "ServiceUserName", - "ServicePassword", - "ServiceSpecificCredentialId", - "UserName", - "Status" - ], - "members": { - "CreateDate": { - "type": "timestamp" - }, - "ServiceName": {}, - "ServiceUserName": {}, - "ServicePassword": { - "type": "string", - "sensitive": true - }, - "ServiceSpecificCredentialId": {}, - "UserName": {}, - "Status": {} - } - }, - "S24": { - "type": "structure", - "required": [ - "Path", - "UserName", - "UserId", - "Arn", - "CreateDate" - ], - "members": { - "Path": {}, - "UserName": {}, - "UserId": {}, - "Arn": {}, - "CreateDate": { - "type": "timestamp" - }, - "PasswordLastUsed": { - "type": "timestamp" - } - } - }, - "S28": { - "type": "structure", - "required": [ - "SerialNumber" - ], - "members": { - "SerialNumber": {}, - "Base32StringSeed": { - "shape": "S2a" - }, - "QRCodePNG": { - "shape": "S2a" - }, - "User": { - "shape": "S24" - }, - "EnableDate": { - "type": "timestamp" - } - } - }, - "S2a": { - "type": "blob", - "sensitive": true - }, - "S3l": { - "type": "list", - "member": { - "type": "structure", - "members": { - "PolicyName": {}, - "PolicyDocument": {} - } - } - }, - "S3o": { - "type": "list", - "member": { - "type": "structure", - "members": { - "PolicyName": {}, - "PolicyArn": {} - } - } - }, - "S3u": { - "type": "list", - "member": { - "shape": "Sw" - } - }, - "S3x": { - "type": "list", - "member": { - "shape": "S1l" - } - }, - "S49": { - "type": "list", - "member": {} - }, - "S4a": { - "type": "structure", - "members": { - "ContextKeyNames": { - "shape": "S4b" - } - } - }, - "S4b": { - "type": "list", - "member": {} - }, - "S4j": { - "type": "list", - "member": { - "shape": "S24" - } - }, - "S55": { - "type": "structure", - "required": [ - "UserName", - "SSHPublicKeyId", - "Fingerprint", - "SSHPublicKeyBody", - "Status" - ], - "members": { - "UserName": {}, - "SSHPublicKeyId": {}, - "Fingerprint": {}, - "SSHPublicKeyBody": {}, - "Status": {}, - "UploadDate": { - "type": "timestamp" - } - } - }, - "S5b": { - "type": "structure", - "required": [ - "Path", - "ServerCertificateName", - "ServerCertificateId", - "Arn" - ], - "members": { - "Path": {}, - "ServerCertificateName": {}, - "ServerCertificateId": {}, - "Arn": {}, - "UploadDate": { - "type": "timestamp" - }, - "Expiration": { - "type": "timestamp" - } - } - }, - "S6e": { - "type": "list", - "member": {} - }, - "S6i": { - "type": "list", - "member": { - "shape": "Ss" - } - }, - "S7p": { - "type": "structure", - "required": [ - "UserName", - "CertificateId", - "CertificateBody", - "Status" - ], - "members": { - "UserName": {}, - "CertificateId": {}, - "CertificateBody": {}, - "Status": {}, - "UploadDate": { - "type": "timestamp" - } - } - }, - "S89": { - "type": "list", - "member": {} - }, - "S8b": { - "type": "list", - "member": {} - }, - "S8d": { - "type": "list", - "member": { - "type": "structure", - "members": { - "ContextKeyName": {}, - "ContextKeyValues": { - "type": "list", - "member": {} - }, - "ContextKeyType": {} - } - } - }, - "S8j": { - "type": "structure", - "members": { - "EvaluationResults": { - "type": "list", - "member": { - "type": "structure", - "required": [ - "EvalActionName", - "EvalDecision" - ], - "members": { - "EvalActionName": {}, - "EvalResourceName": {}, - "EvalDecision": {}, - "MatchedStatements": { - "shape": "S8n" - }, - "MissingContextValues": { - "shape": "S4b" - }, - "OrganizationsDecisionDetail": { - "type": "structure", - "members": { - "AllowedByOrganizations": { - "type": "boolean" - } - } - }, - "EvalDecisionDetails": { - "shape": "S8v" - }, - "ResourceSpecificResults": { - "type": "list", - "member": { - "type": "structure", - "required": [ - "EvalResourceName", - "EvalResourceDecision" - ], - "members": { - "EvalResourceName": {}, - "EvalResourceDecision": {}, - "MatchedStatements": { - "shape": "S8n" - }, - "MissingContextValues": { - "shape": "S4b" - }, - "EvalDecisionDetails": { - "shape": "S8v" - } - } - } - } - } - } - }, - "IsTruncated": { - "type": "boolean" - }, - "Marker": {} - } - }, - "S8n": { - "type": "list", - "member": { - "type": "structure", - "members": { - "SourcePolicyId": {}, - "SourcePolicyType": {}, - "StartPosition": { - "shape": "S8r" - }, - "EndPosition": { - "shape": "S8r" - } - } - } - }, - "S8r": { - "type": "structure", - "members": { - "Line": { - "type": "integer" - }, - "Column": { - "type": "integer" - } - } - }, - "S8v": { - "type": "map", - "key": {}, - "value": {} - } - } -} \ No newline at end of file diff --git a/workshops/monte-carlo-on-ec2-spot-fleet/src/web/node_modules/aws-sdk/apis/iam-2010-05-08.paginators.json b/workshops/monte-carlo-on-ec2-spot-fleet/src/web/node_modules/aws-sdk/apis/iam-2010-05-08.paginators.json deleted file mode 100644 index 3ac7a424..00000000 --- a/workshops/monte-carlo-on-ec2-spot-fleet/src/web/node_modules/aws-sdk/apis/iam-2010-05-08.paginators.json +++ /dev/null @@ -1,198 +0,0 @@ -{ - "pagination": { - "GetAccountAuthorizationDetails": { - "input_token": "Marker", - "limit_key": "MaxItems", - "more_results": "IsTruncated", - "output_token": "Marker", - "result_key": [ - "UserDetailList", - "GroupDetailList", - "RoleDetailList", - "Policies" - ] - }, - "GetGroup": { - "input_token": "Marker", - "limit_key": "MaxItems", - "more_results": "IsTruncated", - "output_token": "Marker", - "result_key": "Users" - }, - "ListAccessKeys": { - "input_token": "Marker", - "limit_key": "MaxItems", - "more_results": "IsTruncated", - "output_token": "Marker", - "result_key": "AccessKeyMetadata" - }, - "ListAccountAliases": { - "input_token": "Marker", - "limit_key": "MaxItems", - "more_results": "IsTruncated", - "output_token": "Marker", - "result_key": "AccountAliases" - }, - "ListAttachedGroupPolicies": { - "input_token": "Marker", - "limit_key": "MaxItems", - "more_results": "IsTruncated", - "output_token": "Marker", - "result_key": "AttachedPolicies" - }, - "ListAttachedRolePolicies": { - "input_token": "Marker", - "limit_key": "MaxItems", - "more_results": "IsTruncated", - "output_token": "Marker", - "result_key": "AttachedPolicies" - }, - "ListAttachedUserPolicies": { - "input_token": "Marker", - "limit_key": "MaxItems", - "more_results": "IsTruncated", - "output_token": "Marker", - "result_key": "AttachedPolicies" - }, - "ListEntitiesForPolicy": { - "input_token": "Marker", - "limit_key": "MaxItems", - "more_results": "IsTruncated", - "output_token": "Marker", - "result_key": [ - "PolicyGroups", - "PolicyUsers", - "PolicyRoles" - ] - }, - "ListGroupPolicies": { - "input_token": "Marker", - "limit_key": "MaxItems", - "more_results": "IsTruncated", - "output_token": "Marker", - "result_key": "PolicyNames" - }, - "ListGroups": { - "input_token": "Marker", - "limit_key": "MaxItems", - "more_results": "IsTruncated", - "output_token": "Marker", - "result_key": "Groups" - }, - "ListGroupsForUser": { - "input_token": "Marker", - "limit_key": "MaxItems", - "more_results": "IsTruncated", - "output_token": "Marker", - "result_key": "Groups" - }, - "ListInstanceProfiles": { - "input_token": "Marker", - "limit_key": "MaxItems", - "more_results": "IsTruncated", - "output_token": "Marker", - "result_key": "InstanceProfiles" - }, - "ListInstanceProfilesForRole": { - "input_token": "Marker", - "limit_key": "MaxItems", - "more_results": "IsTruncated", - "output_token": "Marker", - "result_key": "InstanceProfiles" - }, - "ListMFADevices": { - "input_token": "Marker", - "limit_key": "MaxItems", - "more_results": "IsTruncated", - "output_token": "Marker", - "result_key": "MFADevices" - }, - "ListPolicies": { - "input_token": "Marker", - "limit_key": "MaxItems", - "more_results": "IsTruncated", - "output_token": "Marker", - "result_key": "Policies" - }, - "ListPolicyVersions": { - "input_token": "Marker", - "limit_key": "MaxItems", - "more_results": "IsTruncated", - "output_token": "Marker", - "result_key": "Versions" - }, - "ListRolePolicies": { - "input_token": "Marker", - "limit_key": "MaxItems", - "more_results": "IsTruncated", - "output_token": "Marker", - "result_key": "PolicyNames" - }, - "ListRoles": { - "input_token": "Marker", - "limit_key": "MaxItems", - "more_results": "IsTruncated", - "output_token": "Marker", - "result_key": "Roles" - }, - "ListSAMLProviders": { - "result_key": "SAMLProviderList" - }, - "ListSSHPublicKeys": { - "input_token": "Marker", - "limit_key": "MaxItems", - "more_results": "IsTruncated", - "output_token": "Marker", - "result_key": "SSHPublicKeys" - }, - "ListServerCertificates": { - "input_token": "Marker", - "limit_key": "MaxItems", - "more_results": "IsTruncated", - "output_token": "Marker", - "result_key": "ServerCertificateMetadataList" - }, - "ListSigningCertificates": { - "input_token": "Marker", - "limit_key": "MaxItems", - "more_results": "IsTruncated", - "output_token": "Marker", - "result_key": "Certificates" - }, - "ListUserPolicies": { - "input_token": "Marker", - "limit_key": "MaxItems", - "more_results": "IsTruncated", - "output_token": "Marker", - "result_key": "PolicyNames" - }, - "ListUsers": { - "input_token": "Marker", - "limit_key": "MaxItems", - "more_results": "IsTruncated", - "output_token": "Marker", - "result_key": "Users" - }, - "ListVirtualMFADevices": { - "input_token": "Marker", - "limit_key": "MaxItems", - "more_results": "IsTruncated", - "output_token": "Marker", - "result_key": "VirtualMFADevices" - }, - "SimulateCustomPolicy": { - "input_token": "Marker", - "limit_key": "MaxItems", - "more_results": "IsTruncated", - "output_token": "Marker", - "result_key": "EvaluationResults" - }, - "SimulatePrincipalPolicy": { - "input_token": "Marker", - "limit_key": "MaxItems", - "more_results": "IsTruncated", - "output_token": "Marker", - "result_key": "EvaluationResults" - } - } -} \ No newline at end of file diff --git a/workshops/monte-carlo-on-ec2-spot-fleet/src/web/node_modules/aws-sdk/apis/iam-2010-05-08.waiters2.json b/workshops/monte-carlo-on-ec2-spot-fleet/src/web/node_modules/aws-sdk/apis/iam-2010-05-08.waiters2.json deleted file mode 100644 index ba453826..00000000 --- a/workshops/monte-carlo-on-ec2-spot-fleet/src/web/node_modules/aws-sdk/apis/iam-2010-05-08.waiters2.json +++ /dev/null @@ -1,39 +0,0 @@ -{ - "version": 2, - "waiters": { - "InstanceProfileExists": { - "delay": 1, - "operation": "GetInstanceProfile", - "maxAttempts": 40, - "acceptors": [ - { - "expected": 200, - "matcher": "status", - "state": "success" - }, - { - "state": "retry", - "matcher": "status", - "expected": 404 - } - ] - }, - "UserExists": { - "delay": 1, - "operation": "GetUser", - "maxAttempts": 20, - "acceptors": [ - { - "state": "success", - "matcher": "status", - "expected": 200 - }, - { - "state": "retry", - "matcher": "error", - "expected": "NoSuchEntity" - } - ] - } - } -} diff --git a/workshops/monte-carlo-on-ec2-spot-fleet/src/web/node_modules/aws-sdk/apis/importexport-2010-06-01.min.json b/workshops/monte-carlo-on-ec2-spot-fleet/src/web/node_modules/aws-sdk/apis/importexport-2010-06-01.min.json deleted file mode 100644 index 9c2ce025..00000000 --- a/workshops/monte-carlo-on-ec2-spot-fleet/src/web/node_modules/aws-sdk/apis/importexport-2010-06-01.min.json +++ /dev/null @@ -1,243 +0,0 @@ -{ - "version": "2.0", - "metadata": { - "uid": "importexport-2010-06-01", - "apiVersion": "2010-06-01", - "endpointPrefix": "importexport", - "globalEndpoint": "importexport.amazonaws.com", - "serviceFullName": "AWS Import/Export", - "signatureVersion": "v2", - "xmlNamespace": "http://importexport.amazonaws.com/doc/2010-06-01/", - "protocol": "query" - }, - "operations": { - "CancelJob": { - "http": { - "requestUri": "/?Operation=CancelJob" - }, - "input": { - "type": "structure", - "required": [ - "JobId" - ], - "members": { - "JobId": {}, - "APIVersion": {} - } - }, - "output": { - "resultWrapper": "CancelJobResult", - "type": "structure", - "members": { - "Success": { - "type": "boolean" - } - } - } - }, - "CreateJob": { - "http": { - "requestUri": "/?Operation=CreateJob" - }, - "input": { - "type": "structure", - "required": [ - "JobType", - "Manifest", - "ValidateOnly" - ], - "members": { - "JobType": {}, - "Manifest": {}, - "ManifestAddendum": {}, - "ValidateOnly": { - "type": "boolean" - }, - "APIVersion": {} - } - }, - "output": { - "resultWrapper": "CreateJobResult", - "type": "structure", - "members": { - "JobId": {}, - "JobType": {}, - "Signature": {}, - "SignatureFileContents": {}, - "WarningMessage": {}, - "ArtifactList": { - "shape": "Sf" - } - } - } - }, - "GetShippingLabel": { - "http": { - "requestUri": "/?Operation=GetShippingLabel" - }, - "input": { - "type": "structure", - "required": [ - "jobIds" - ], - "members": { - "jobIds": { - "type": "list", - "member": {} - }, - "name": {}, - "company": {}, - "phoneNumber": {}, - "country": {}, - "stateOrProvince": {}, - "city": {}, - "postalCode": {}, - "street1": {}, - "street2": {}, - "street3": {}, - "APIVersion": {} - } - }, - "output": { - "resultWrapper": "GetShippingLabelResult", - "type": "structure", - "members": { - "ShippingLabelURL": {}, - "Warning": {} - } - } - }, - "GetStatus": { - "http": { - "requestUri": "/?Operation=GetStatus" - }, - "input": { - "type": "structure", - "required": [ - "JobId" - ], - "members": { - "JobId": {}, - "APIVersion": {} - } - }, - "output": { - "resultWrapper": "GetStatusResult", - "type": "structure", - "members": { - "JobId": {}, - "JobType": {}, - "LocationCode": {}, - "LocationMessage": {}, - "ProgressCode": {}, - "ProgressMessage": {}, - "Carrier": {}, - "TrackingNumber": {}, - "LogBucket": {}, - "LogKey": {}, - "ErrorCount": { - "type": "integer" - }, - "Signature": {}, - "SignatureFileContents": {}, - "CurrentManifest": {}, - "CreationDate": { - "type": "timestamp" - }, - "ArtifactList": { - "shape": "Sf" - } - } - } - }, - "ListJobs": { - "http": { - "requestUri": "/?Operation=ListJobs" - }, - "input": { - "type": "structure", - "members": { - "MaxJobs": { - "type": "integer" - }, - "Marker": {}, - "APIVersion": {} - } - }, - "output": { - "resultWrapper": "ListJobsResult", - "type": "structure", - "members": { - "Jobs": { - "type": "list", - "member": { - "type": "structure", - "members": { - "JobId": {}, - "CreationDate": { - "type": "timestamp" - }, - "IsCanceled": { - "type": "boolean" - }, - "JobType": {} - } - } - }, - "IsTruncated": { - "type": "boolean" - } - } - } - }, - "UpdateJob": { - "http": { - "requestUri": "/?Operation=UpdateJob" - }, - "input": { - "type": "structure", - "required": [ - "JobId", - "Manifest", - "JobType", - "ValidateOnly" - ], - "members": { - "JobId": {}, - "Manifest": {}, - "JobType": {}, - "ValidateOnly": { - "type": "boolean" - }, - "APIVersion": {} - } - }, - "output": { - "resultWrapper": "UpdateJobResult", - "type": "structure", - "members": { - "Success": { - "type": "boolean" - }, - "WarningMessage": {}, - "ArtifactList": { - "shape": "Sf" - } - } - } - } - }, - "shapes": { - "Sf": { - "type": "list", - "member": { - "type": "structure", - "members": { - "Description": {}, - "URL": {} - } - } - } - }, - "examples": {} -} \ No newline at end of file diff --git a/workshops/monte-carlo-on-ec2-spot-fleet/src/web/node_modules/aws-sdk/apis/importexport-2010-06-01.paginators.json b/workshops/monte-carlo-on-ec2-spot-fleet/src/web/node_modules/aws-sdk/apis/importexport-2010-06-01.paginators.json deleted file mode 100644 index 702385ea..00000000 --- a/workshops/monte-carlo-on-ec2-spot-fleet/src/web/node_modules/aws-sdk/apis/importexport-2010-06-01.paginators.json +++ /dev/null @@ -1,11 +0,0 @@ -{ - "pagination": { - "ListJobs": { - "input_token": "Marker", - "output_token": "Jobs[-1].JobId", - "more_results": "IsTruncated", - "limit_key": "MaxJobs", - "result_key": "Jobs" - } - } -} diff --git a/workshops/monte-carlo-on-ec2-spot-fleet/src/web/node_modules/aws-sdk/apis/inspector-2016-02-16.examples.json b/workshops/monte-carlo-on-ec2-spot-fleet/src/web/node_modules/aws-sdk/apis/inspector-2016-02-16.examples.json deleted file mode 100644 index d06decc4..00000000 --- a/workshops/monte-carlo-on-ec2-spot-fleet/src/web/node_modules/aws-sdk/apis/inspector-2016-02-16.examples.json +++ /dev/null @@ -1,1147 +0,0 @@ -{ - "version": "1.0", - "examples": { - "AddAttributesToFindings": [ - { - "input": { - "attributes": [ - { - "key": "Example", - "value": "example" - } - ], - "findingArns": [ - "arn:aws:inspector:us-west-2:123456789012:target/0-0kFIPusq/template/0-8l1VIE0D/run/0-Z02cjjug/finding/0-T8yM9mEU" - ] - }, - "output": { - "failedItems": { - } - }, - "comments": { - "input": { - }, - "output": { - } - }, - "description": "Assigns attributes (key and value pairs) to the findings that are specified by the ARNs of the findings.", - "id": "add-attributes-to-findings-1481063856401", - "title": "Add attributes to findings" - } - ], - "CreateAssessmentTarget": [ - { - "input": { - "assessmentTargetName": "ExampleAssessmentTarget", - "resourceGroupArn": "arn:aws:inspector:us-west-2:123456789012:resourcegroup/0-AB6DMKnv" - }, - "output": { - "assessmentTargetArn": "arn:aws:inspector:us-west-2:123456789012:target/0-nvgVhaxX" - }, - "comments": { - "input": { - }, - "output": { - } - }, - "description": "Creates a new assessment target using the ARN of the resource group that is generated by CreateResourceGroup. You can create up to 50 assessment targets per AWS account. You can run up to 500 concurrent agents per AWS account.", - "id": "create-assessment-target-1481063953657", - "title": "Create assessment target" - } - ], - "CreateAssessmentTemplate": [ - { - "input": { - "assessmentTargetArn": "arn:aws:inspector:us-west-2:123456789012:target/0-nvgVhaxX", - "assessmentTemplateName": "ExampleAssessmentTemplate", - "durationInSeconds": 180, - "rulesPackageArns": [ - "arn:aws:inspector:us-west-2:758058086616:rulespackage/0-11B9DBXp" - ], - "userAttributesForFindings": [ - { - "key": "Example", - "value": "example" - } - ] - }, - "output": { - "assessmentTemplateArn": "arn:aws:inspector:us-west-2:123456789012:target/0-nvgVhaxX/template/0-it5r2S4T" - }, - "comments": { - "input": { - }, - "output": { - } - }, - "description": "Creates an assessment template for the assessment target that is specified by the ARN of the assessment target.", - "id": "create-assessment-template-1481064046719", - "title": "Create assessment template" - } - ], - "CreateResourceGroup": [ - { - "input": { - "resourceGroupTags": [ - { - "key": "Name", - "value": "example" - } - ] - }, - "output": { - "resourceGroupArn": "arn:aws:inspector:us-west-2:123456789012:resourcegroup/0-AB6DMKnv" - }, - "comments": { - "input": { - }, - "output": { - } - }, - "description": "Creates a resource group using the specified set of tags (key and value pairs) that are used to select the EC2 instances to be included in an Amazon Inspector assessment target. The created resource group is then used to create an Amazon Inspector assessment target. ", - "id": "create-resource-group-1481064169037", - "title": "Create resource group" - } - ], - "DeleteAssessmentRun": [ - { - "input": { - "assessmentRunArn": "arn:aws:inspector:us-west-2:123456789012:target/0-nvgVhaxX/template/0-it5r2S4T/run/0-11LMTAVe" - }, - "comments": { - "input": { - }, - "output": { - } - }, - "description": "Deletes the assessment run that is specified by the ARN of the assessment run.", - "id": "delete-assessment-run-1481064251629", - "title": "Delete assessment run" - } - ], - "DeleteAssessmentTarget": [ - { - "input": { - "assessmentTargetArn": "arn:aws:inspector:us-west-2:123456789012:target/0-0kFIPusq" - }, - "comments": { - "input": { - }, - "output": { - } - }, - "description": "Deletes the assessment target that is specified by the ARN of the assessment target.", - "id": "delete-assessment-target-1481064309029", - "title": "Delete assessment target" - } - ], - "DeleteAssessmentTemplate": [ - { - "input": { - "assessmentTemplateArn": "arn:aws:inspector:us-west-2:123456789012:target/0-nvgVhaxX/template/0-it5r2S4T" - }, - "comments": { - "input": { - }, - "output": { - } - }, - "description": "Deletes the assessment template that is specified by the ARN of the assessment template.", - "id": "delete-assessment-template-1481064364074", - "title": "Delete assessment template" - } - ], - "DescribeAssessmentRuns": [ - { - "input": { - "assessmentRunArns": [ - "arn:aws:inspector:us-west-2:123456789012:target/0-0kFIPusq/template/0-4r1V2mAw/run/0-MKkpXXPE" - ] - }, - "output": { - "assessmentRuns": [ - { - "name": "Run 1 for ExampleAssessmentTemplate", - "arn": "arn:aws:inspector:us-west-2:123456789012:target/0-0kFIPusq/template/0-4r1V2mAw/run/0-MKkpXXPE", - "assessmentTemplateArn": "arn:aws:inspector:us-west-2:123456789012:target/0-0kFIPusq/template/0-4r1V2mAw", - "completedAt": "1458680301.4", - "createdAt": "1458680170.035", - "dataCollected": true, - "durationInSeconds": 3600, - "findingCounts": { - "High": 14, - "Informational": 0, - "Low": 0, - "Medium": 2, - "Undefined": 0 - }, - "notifications": [ - - ], - "rulesPackageArns": [ - "arn:aws:inspector:us-west-2:758058086616:rulespackage/0-X1KXtawP" - ], - "startedAt": "1458680170.161", - "state": "COMPLETED", - "stateChangedAt": "1458680301.4", - "stateChanges": [ - { - "state": "CREATED", - "stateChangedAt": "1458680170.035" - }, - { - "state": "START_DATA_COLLECTION_PENDING", - "stateChangedAt": "1458680170.065" - }, - { - "state": "START_DATA_COLLECTION_IN_PROGRESS", - "stateChangedAt": "1458680170.096" - }, - { - "state": "COLLECTING_DATA", - "stateChangedAt": "1458680170.161" - }, - { - "state": "STOP_DATA_COLLECTION_PENDING", - "stateChangedAt": "1458680239.883" - }, - { - "state": "DATA_COLLECTED", - "stateChangedAt": "1458680299.847" - }, - { - "state": "EVALUATING_RULES", - "stateChangedAt": "1458680300.099" - }, - { - "state": "COMPLETED", - "stateChangedAt": "1458680301.4" - } - ], - "userAttributesForFindings": [ - - ] - } - ], - "failedItems": { - } - }, - "comments": { - "input": { - }, - "output": { - } - }, - "description": "Describes the assessment runs that are specified by the ARNs of the assessment runs.", - "id": "describte-assessment-runs-1481064424352", - "title": "Describte assessment runs" - } - ], - "DescribeAssessmentTargets": [ - { - "input": { - "assessmentTargetArns": [ - "arn:aws:inspector:us-west-2:123456789012:target/0-0kFIPusq" - ] - }, - "output": { - "assessmentTargets": [ - { - "name": "ExampleAssessmentTarget", - "arn": "arn:aws:inspector:us-west-2:123456789012:target/0-0kFIPusq", - "createdAt": "1458074191.459", - "resourceGroupArn": "arn:aws:inspector:us-west-2:123456789012:resourcegroup/0-PyGXopAI", - "updatedAt": "1458074191.459" - } - ], - "failedItems": { - } - }, - "comments": { - "input": { - }, - "output": { - } - }, - "description": "Describes the assessment targets that are specified by the ARNs of the assessment targets.", - "id": "describte-assessment-targets-1481064527735", - "title": "Describte assessment targets" - } - ], - "DescribeAssessmentTemplates": [ - { - "input": { - "assessmentTemplateArns": [ - "arn:aws:inspector:us-west-2:123456789012:target/0-0kFIPusq/template/0-4r1V2mAw" - ] - }, - "output": { - "assessmentTemplates": [ - { - "name": "ExampleAssessmentTemplate", - "arn": "arn:aws:inspector:us-west-2:123456789012:target/0-0kFIPusq/template/0-4r1V2mAw", - "assessmentTargetArn": "arn:aws:inspector:us-west-2:123456789012:target/0-0kFIPusq", - "createdAt": "1458074191.844", - "durationInSeconds": 3600, - "rulesPackageArns": [ - "arn:aws:inspector:us-west-2:758058086616:rulespackage/0-X1KXtawP" - ], - "userAttributesForFindings": [ - - ] - } - ], - "failedItems": { - } - }, - "comments": { - "input": { - }, - "output": { - } - }, - "description": "Describes the assessment templates that are specified by the ARNs of the assessment templates.", - "id": "describte-assessment-templates-1481064606829", - "title": "Describte assessment templates" - } - ], - "DescribeCrossAccountAccessRole": [ - { - "output": { - "registeredAt": "1458069182.826", - "roleArn": "arn:aws:iam::123456789012:role/inspector", - "valid": true - }, - "comments": { - "input": { - }, - "output": { - } - }, - "description": "Describes the IAM role that enables Amazon Inspector to access your AWS account.", - "id": "describte-cross-account-access-role-1481064682267", - "title": "Describte cross account access role" - } - ], - "DescribeFindings": [ - { - "input": { - "findingArns": [ - "arn:aws:inspector:us-west-2:123456789012:target/0-0kFIPusq/template/0-4r1V2mAw/run/0-MKkpXXPE/finding/0-HwPnsDm4" - ] - }, - "output": { - "failedItems": { - }, - "findings": [ - { - "arn": "arn:aws:inspector:us-west-2:123456789012:target/0-0kFIPusq/template/0-4r1V2mAw/run/0-MKkpXXPE/finding/0-HwPnsDm4", - "assetAttributes": { - "ipv4Addresses": [ - - ], - "schemaVersion": 1 - }, - "assetType": "ec2-instance", - "attributes": [ - - ], - "confidence": 10, - "createdAt": "1458680301.37", - "description": "Amazon Inspector did not find any potential security issues during this assessment.", - "indicatorOfCompromise": false, - "numericSeverity": 0, - "recommendation": "No remediation needed.", - "schemaVersion": 1, - "service": "Inspector", - "serviceAttributes": { - "assessmentRunArn": "arn:aws:inspector:us-west-2:123456789012:target/0-0kFIPusq/template/0-4r1V2mAw/run/0-MKkpXXPE", - "rulesPackageArn": "arn:aws:inspector:us-west-2:758058086616:rulespackage/0-X1KXtawP", - "schemaVersion": 1 - }, - "severity": "Informational", - "title": "No potential security issues found", - "updatedAt": "1458680301.37", - "userAttributes": [ - - ] - } - ] - }, - "comments": { - "input": { - }, - "output": { - } - }, - "description": "Describes the findings that are specified by the ARNs of the findings.", - "id": "describte-findings-1481064771803", - "title": "Describe findings" - } - ], - "DescribeResourceGroups": [ - { - "input": { - "resourceGroupArns": [ - "arn:aws:inspector:us-west-2:123456789012:resourcegroup/0-PyGXopAI" - ] - }, - "output": { - "failedItems": { - }, - "resourceGroups": [ - { - "arn": "arn:aws:inspector:us-west-2:123456789012:resourcegroup/0-PyGXopAI", - "createdAt": "1458074191.098", - "tags": [ - { - "key": "Name", - "value": "example" - } - ] - } - ] - }, - "comments": { - "input": { - }, - "output": { - } - }, - "description": "Describes the resource groups that are specified by the ARNs of the resource groups.", - "id": "describe-resource-groups-1481065787743", - "title": "Describe resource groups" - } - ], - "DescribeRulesPackages": [ - { - "input": { - "rulesPackageArns": [ - "arn:aws:inspector:us-west-2:758058086616:rulespackage/0-JJOtZiqQ" - ] - }, - "output": { - "failedItems": { - }, - "rulesPackages": [ - { - "version": "1.1", - "name": "Security Best Practices", - "arn": "arn:aws:inspector:us-west-2:758058086616:rulespackage/0-JJOtZiqQ", - "description": "The rules in this package help determine whether your systems are configured securely.", - "provider": "Amazon Web Services, Inc." - } - ] - }, - "comments": { - "input": { - }, - "output": { - } - }, - "description": "Describes the rules packages that are specified by the ARNs of the rules packages.", - "id": "describe-rules-packages-1481069641979", - "title": "Describe rules packages" - } - ], - "GetTelemetryMetadata": [ - { - "input": { - "assessmentRunArn": "arn:aws:inspector:us-west-2:123456789012:target/0-0kFIPusq/template/0-4r1V2mAw/run/0-MKkpXXPE" - }, - "output": { - "telemetryMetadata": [ - { - "count": 2, - "dataSize": 345, - "messageType": "InspectorDuplicateProcess" - }, - { - "count": 3, - "dataSize": 255, - "messageType": "InspectorTimeEventMsg" - }, - { - "count": 4, - "dataSize": 1082, - "messageType": "InspectorNetworkInterface" - }, - { - "count": 2, - "dataSize": 349, - "messageType": "InspectorDnsEntry" - }, - { - "count": 11, - "dataSize": 2514, - "messageType": "InspectorDirectoryInfoMsg" - }, - { - "count": 1, - "dataSize": 179, - "messageType": "InspectorTcpV6ListeningPort" - }, - { - "count": 101, - "dataSize": 10949, - "messageType": "InspectorTerminal" - }, - { - "count": 26, - "dataSize": 5916, - "messageType": "InspectorUser" - }, - { - "count": 282, - "dataSize": 32148, - "messageType": "InspectorDynamicallyLoadedCodeModule" - }, - { - "count": 18, - "dataSize": 10172, - "messageType": "InspectorCreateProcess" - }, - { - "count": 3, - "dataSize": 8001, - "messageType": "InspectorProcessPerformance" - }, - { - "count": 1, - "dataSize": 360, - "messageType": "InspectorOperatingSystem" - }, - { - "count": 6, - "dataSize": 546, - "messageType": "InspectorStopProcess" - }, - { - "count": 1, - "dataSize": 1553, - "messageType": "InspectorInstanceMetaData" - }, - { - "count": 2, - "dataSize": 434, - "messageType": "InspectorTcpV4Connection" - }, - { - "count": 474, - "dataSize": 2960322, - "messageType": "InspectorPackageInfo" - }, - { - "count": 3, - "dataSize": 2235, - "messageType": "InspectorSystemPerformance" - }, - { - "count": 105, - "dataSize": 46048, - "messageType": "InspectorCodeModule" - }, - { - "count": 1, - "dataSize": 182, - "messageType": "InspectorUdpV6ListeningPort" - }, - { - "count": 2, - "dataSize": 371, - "messageType": "InspectorUdpV4ListeningPort" - }, - { - "count": 18, - "dataSize": 8362, - "messageType": "InspectorKernelModule" - }, - { - "count": 29, - "dataSize": 48788, - "messageType": "InspectorConfigurationInfo" - }, - { - "count": 1, - "dataSize": 79, - "messageType": "InspectorMonitoringStart" - }, - { - "count": 5, - "dataSize": 0, - "messageType": "InspectorSplitMsgBegin" - }, - { - "count": 51, - "dataSize": 4593, - "messageType": "InspectorGroup" - }, - { - "count": 1, - "dataSize": 184, - "messageType": "InspectorTcpV4ListeningPort" - }, - { - "count": 1159, - "dataSize": 3146579, - "messageType": "Total" - }, - { - "count": 5, - "dataSize": 0, - "messageType": "InspectorSplitMsgEnd" - }, - { - "count": 1, - "dataSize": 612, - "messageType": "InspectorLoadImageInProcess" - } - ] - }, - "comments": { - "input": { - }, - "output": { - } - }, - "description": "Information about the data that is collected for the specified assessment run.", - "id": "get-telemetry-metadata-1481066021297", - "title": "Get telemetry metadata" - } - ], - "ListAssessmentRunAgents": [ - { - "input": { - "assessmentRunArn": "arn:aws:inspector:us-west-2:123456789012:target/0-0kFIPusq/template/0-4r1V2mAw/run/0-MKkpXXPE", - "maxResults": 123 - }, - "output": { - "assessmentRunAgents": [ - { - "agentHealth": "HEALTHY", - "agentHealthCode": "RUNNING", - "agentId": "i-49113b93", - "assessmentRunArn": "arn:aws:inspector:us-west-2:123456789012:target/0-0kFIPusq/template/0-4r1V2mAw/run/0-MKkpXXPE", - "telemetryMetadata": [ - { - "count": 2, - "dataSize": 345, - "messageType": "InspectorDuplicateProcess" - }, - { - "count": 3, - "dataSize": 255, - "messageType": "InspectorTimeEventMsg" - }, - { - "count": 4, - "dataSize": 1082, - "messageType": "InspectorNetworkInterface" - }, - { - "count": 2, - "dataSize": 349, - "messageType": "InspectorDnsEntry" - }, - { - "count": 11, - "dataSize": 2514, - "messageType": "InspectorDirectoryInfoMsg" - }, - { - "count": 1, - "dataSize": 179, - "messageType": "InspectorTcpV6ListeningPort" - }, - { - "count": 101, - "dataSize": 10949, - "messageType": "InspectorTerminal" - }, - { - "count": 26, - "dataSize": 5916, - "messageType": "InspectorUser" - }, - { - "count": 282, - "dataSize": 32148, - "messageType": "InspectorDynamicallyLoadedCodeModule" - }, - { - "count": 18, - "dataSize": 10172, - "messageType": "InspectorCreateProcess" - }, - { - "count": 3, - "dataSize": 8001, - "messageType": "InspectorProcessPerformance" - }, - { - "count": 1, - "dataSize": 360, - "messageType": "InspectorOperatingSystem" - }, - { - "count": 6, - "dataSize": 546, - "messageType": "InspectorStopProcess" - }, - { - "count": 1, - "dataSize": 1553, - "messageType": "InspectorInstanceMetaData" - }, - { - "count": 2, - "dataSize": 434, - "messageType": "InspectorTcpV4Connection" - }, - { - "count": 474, - "dataSize": 2960322, - "messageType": "InspectorPackageInfo" - }, - { - "count": 3, - "dataSize": 2235, - "messageType": "InspectorSystemPerformance" - }, - { - "count": 105, - "dataSize": 46048, - "messageType": "InspectorCodeModule" - }, - { - "count": 1, - "dataSize": 182, - "messageType": "InspectorUdpV6ListeningPort" - }, - { - "count": 2, - "dataSize": 371, - "messageType": "InspectorUdpV4ListeningPort" - }, - { - "count": 18, - "dataSize": 8362, - "messageType": "InspectorKernelModule" - }, - { - "count": 29, - "dataSize": 48788, - "messageType": "InspectorConfigurationInfo" - }, - { - "count": 1, - "dataSize": 79, - "messageType": "InspectorMonitoringStart" - }, - { - "count": 5, - "dataSize": 0, - "messageType": "InspectorSplitMsgBegin" - }, - { - "count": 51, - "dataSize": 4593, - "messageType": "InspectorGroup" - }, - { - "count": 1, - "dataSize": 184, - "messageType": "InspectorTcpV4ListeningPort" - }, - { - "count": 1159, - "dataSize": 3146579, - "messageType": "Total" - }, - { - "count": 5, - "dataSize": 0, - "messageType": "InspectorSplitMsgEnd" - }, - { - "count": 1, - "dataSize": 612, - "messageType": "InspectorLoadImageInProcess" - } - ] - } - ], - "nextToken": "1" - }, - "comments": { - "input": { - }, - "output": { - } - }, - "description": "Lists the agents of the assessment runs that are specified by the ARNs of the assessment runs.", - "id": "list-assessment-run-agents-1481918140642", - "title": "List assessment run agents" - } - ], - "ListAssessmentRuns": [ - { - "input": { - "assessmentTemplateArns": [ - "arn:aws:inspector:us-west-2:123456789012:target/0-0kFIPusq/template/0-4r1V2mAw" - ], - "maxResults": 123 - }, - "output": { - "assessmentRunArns": [ - "arn:aws:inspector:us-west-2:123456789012:target/0-0kFIPusq/template/0-4r1V2mAw/run/0-MKkpXXPE", - "arn:aws:inspector:us-west-2:123456789012:target/0-0kFIPusq/template/0-4r1V2mAw/run/0-v5D6fI3v" - ], - "nextToken": "1" - }, - "comments": { - "input": { - }, - "output": { - } - }, - "description": "Lists the assessment runs that correspond to the assessment templates that are specified by the ARNs of the assessment templates.", - "id": "list-assessment-runs-1481066340844", - "title": "List assessment runs" - } - ], - "ListAssessmentTargets": [ - { - "input": { - "maxResults": 123 - }, - "output": { - "assessmentTargetArns": [ - "arn:aws:inspector:us-west-2:123456789012:target/0-0kFIPusq" - ], - "nextToken": "1" - }, - "comments": { - "input": { - }, - "output": { - } - }, - "description": "Lists the ARNs of the assessment targets within this AWS account. ", - "id": "list-assessment-targets-1481066540849", - "title": "List assessment targets" - } - ], - "ListAssessmentTemplates": [ - { - "input": { - "assessmentTargetArns": [ - "arn:aws:inspector:us-west-2:123456789012:target/0-0kFIPusq" - ], - "maxResults": 123 - }, - "output": { - "assessmentTemplateArns": [ - "arn:aws:inspector:us-west-2:123456789012:target/0-0kFIPusq/template/0-4r1V2mAw", - "arn:aws:inspector:us-west-2:123456789012:target/0-0kFIPusq/template/0-Uza6ihLh" - ], - "nextToken": "1" - }, - "comments": { - "input": { - }, - "output": { - } - }, - "description": "Lists the assessment templates that correspond to the assessment targets that are specified by the ARNs of the assessment targets.", - "id": "list-assessment-templates-1481066623520", - "title": "List assessment templates" - } - ], - "ListEventSubscriptions": [ - { - "input": { - "maxResults": 123, - "resourceArn": "arn:aws:inspector:us-west-2:123456789012:target/0-nvgVhaxX/template/0-7sbz2Kz0" - }, - "output": { - "nextToken": "1", - "subscriptions": [ - { - "eventSubscriptions": [ - { - "event": "ASSESSMENT_RUN_COMPLETED", - "subscribedAt": "1459455440.867" - } - ], - "resourceArn": "arn:aws:inspector:us-west-2:123456789012:target/0-nvgVhaxX/template/0-7sbz2Kz0", - "topicArn": "arn:aws:sns:us-west-2:123456789012:exampletopic" - } - ] - }, - "comments": { - "input": { - }, - "output": { - } - }, - "description": "Lists all the event subscriptions for the assessment template that is specified by the ARN of the assessment template. ", - "id": "list-event-subscriptions-1481068376945", - "title": "List event subscriptions" - } - ], - "ListFindings": [ - { - "input": { - "assessmentRunArns": [ - "arn:aws:inspector:us-west-2:123456789012:target/0-0kFIPusq/template/0-4r1V2mAw/run/0-MKkpXXPE" - ], - "maxResults": 123 - }, - "output": { - "findingArns": [ - "arn:aws:inspector:us-west-2:123456789012:target/0-0kFIPusq/template/0-4r1V2mAw/run/0-MKkpXXPE/finding/0-HwPnsDm4", - "arn:aws:inspector:us-west-2:123456789012:target/0-0kFIPusq/template/0-4r1V2mAw/run/0-v5D6fI3v/finding/0-tyvmqBLy" - ], - "nextToken": "1" - }, - "comments": { - "input": { - }, - "output": { - } - }, - "description": "Lists findings that are generated by the assessment runs that are specified by the ARNs of the assessment runs.", - "id": "list-findings-1481066840611", - "title": "List findings" - } - ], - "ListRulesPackages": [ - { - "input": { - "maxResults": 123 - }, - "output": { - "nextToken": "1", - "rulesPackageArns": [ - "arn:aws:inspector:us-west-2:758058086616:rulespackage/0-9hgA516p", - "arn:aws:inspector:us-west-2:758058086616:rulespackage/0-H5hpSawc", - "arn:aws:inspector:us-west-2:758058086616:rulespackage/0-JJOtZiqQ", - "arn:aws:inspector:us-west-2:758058086616:rulespackage/0-vg5GGHSD" - ] - }, - "comments": { - "input": { - }, - "output": { - } - }, - "description": "Lists all available Amazon Inspector rules packages.", - "id": "list-rules-packages-1481066954883", - "title": "List rules packages" - } - ], - "ListTagsForResource": [ - { - "input": { - "resourceArn": "arn:aws:inspector:us-west-2:123456789012:target/0-0kFIPusq/template/0-gcwFliYu" - }, - "output": { - "tags": [ - { - "key": "Name", - "value": "Example" - } - ] - }, - "comments": { - "input": { - }, - "output": { - } - }, - "description": "Lists all tags associated with an assessment template.", - "id": "list-tags-for-resource-1481067025240", - "title": "List tags for resource" - } - ], - "PreviewAgents": [ - { - "input": { - "maxResults": 123, - "previewAgentsArn": "arn:aws:inspector:us-west-2:123456789012:target/0-0kFIPusq" - }, - "output": { - "agentPreviews": [ - { - "agentId": "i-49113b93" - } - ], - "nextToken": "1" - }, - "comments": { - "input": { - }, - "output": { - } - }, - "description": "Previews the agents installed on the EC2 instances that are part of the specified assessment target.", - "id": "preview-agents-1481067101888", - "title": "Preview agents" - } - ], - "RegisterCrossAccountAccessRole": [ - { - "input": { - "roleArn": "arn:aws:iam::123456789012:role/inspector" - }, - "comments": { - "input": { - }, - "output": { - } - }, - "description": "Registers the IAM role that Amazon Inspector uses to list your EC2 instances at the start of the assessment run or when you call the PreviewAgents action.", - "id": "register-cross-account-access-role-1481067178301", - "title": "Register cross account access role" - } - ], - "RemoveAttributesFromFindings": [ - { - "input": { - "attributeKeys": [ - "key=Example,value=example" - ], - "findingArns": [ - "arn:aws:inspector:us-west-2:123456789012:target/0-0kFIPusq/template/0-8l1VIE0D/run/0-Z02cjjug/finding/0-T8yM9mEU" - ] - }, - "output": { - "failedItems": { - } - }, - "comments": { - "input": { - }, - "output": { - } - }, - "description": "Removes entire attributes (key and value pairs) from the findings that are specified by the ARNs of the findings where an attribute with the specified key exists.", - "id": "remove-attributes-from-findings-1481067246548", - "title": "Remove attributes from findings" - } - ], - "SetTagsForResource": [ - { - "input": { - "resourceArn": "arn:aws:inspector:us-west-2:123456789012:target/0-nvgVhaxX/template/0-7sbz2Kz0", - "tags": [ - { - "key": "Example", - "value": "example" - } - ] - }, - "comments": { - "input": { - }, - "output": { - } - }, - "description": "Sets tags (key and value pairs) to the assessment template that is specified by the ARN of the assessment template.", - "id": "set-tags-for-resource-1481067329646", - "title": "Set tags for resource" - } - ], - "StartAssessmentRun": [ - { - "input": { - "assessmentRunName": "examplerun", - "assessmentTemplateArn": "arn:aws:inspector:us-west-2:123456789012:target/0-nvgVhaxX/template/0-it5r2S4T" - }, - "output": { - "assessmentRunArn": "arn:aws:inspector:us-west-2:123456789012:target/0-nvgVhaxX/template/0-it5r2S4T/run/0-jOoroxyY" - }, - "comments": { - "input": { - }, - "output": { - } - }, - "description": "Starts the assessment run specified by the ARN of the assessment template. For this API to function properly, you must not exceed the limit of running up to 500 concurrent agents per AWS account.", - "id": "start-assessment-run-1481067407484", - "title": "Start assessment run" - } - ], - "StopAssessmentRun": [ - { - "input": { - "assessmentRunArn": "arn:aws:inspector:us-west-2:123456789012:target/0-nvgVhaxX/template/0-it5r2S4T/run/0-11LMTAVe" - }, - "comments": { - "input": { - }, - "output": { - } - }, - "description": "Stops the assessment run that is specified by the ARN of the assessment run.", - "id": "stop-assessment-run-1481067502857", - "title": "Stop assessment run" - } - ], - "SubscribeToEvent": [ - { - "input": { - "event": "ASSESSMENT_RUN_COMPLETED", - "resourceArn": "arn:aws:inspector:us-west-2:123456789012:target/0-nvgVhaxX/template/0-7sbz2Kz0", - "topicArn": "arn:aws:sns:us-west-2:123456789012:exampletopic" - }, - "comments": { - "input": { - }, - "output": { - } - }, - "description": "Enables the process of sending Amazon Simple Notification Service (SNS) notifications about a specified event to a specified SNS topic.", - "id": "subscribe-to-event-1481067686031", - "title": "Subscribe to event" - } - ], - "UnsubscribeFromEvent": [ - { - "input": { - "event": "ASSESSMENT_RUN_COMPLETED", - "resourceArn": "arn:aws:inspector:us-west-2:123456789012:target/0-nvgVhaxX/template/0-7sbz2Kz0", - "topicArn": "arn:aws:sns:us-west-2:123456789012:exampletopic" - }, - "comments": { - "input": { - }, - "output": { - } - }, - "description": "Disables the process of sending Amazon Simple Notification Service (SNS) notifications about a specified event to a specified SNS topic.", - "id": "unsubscribe-from-event-1481067781705", - "title": "Unsubscribe from event" - } - ], - "UpdateAssessmentTarget": [ - { - "input": { - "assessmentTargetArn": "arn:aws:inspector:us-west-2:123456789012:target/0-nvgVhaxX", - "assessmentTargetName": "Example", - "resourceGroupArn": "arn:aws:inspector:us-west-2:123456789012:resourcegroup/0-yNbgL5Pt" - }, - "comments": { - "input": { - }, - "output": { - } - }, - "description": "Updates the assessment target that is specified by the ARN of the assessment target.", - "id": "update-assessment-target-1481067866692", - "title": "Update assessment target" - } - ] - } -} diff --git a/workshops/monte-carlo-on-ec2-spot-fleet/src/web/node_modules/aws-sdk/apis/inspector-2016-02-16.min.json b/workshops/monte-carlo-on-ec2-spot-fleet/src/web/node_modules/aws-sdk/apis/inspector-2016-02-16.min.json deleted file mode 100644 index 0ba00f0c..00000000 --- a/workshops/monte-carlo-on-ec2-spot-fleet/src/web/node_modules/aws-sdk/apis/inspector-2016-02-16.min.json +++ /dev/null @@ -1,1283 +0,0 @@ -{ - "version": "2.0", - "metadata": { - "apiVersion": "2016-02-16", - "endpointPrefix": "inspector", - "jsonVersion": "1.1", - "protocol": "json", - "serviceFullName": "Amazon Inspector", - "signatureVersion": "v4", - "targetPrefix": "InspectorService", - "uid": "inspector-2016-02-16" - }, - "operations": { - "AddAttributesToFindings": { - "input": { - "type": "structure", - "required": [ - "findingArns", - "attributes" - ], - "members": { - "findingArns": { - "shape": "S2" - }, - "attributes": { - "shape": "S4" - } - } - }, - "output": { - "type": "structure", - "required": [ - "failedItems" - ], - "members": { - "failedItems": { - "shape": "S9" - } - } - } - }, - "CreateAssessmentTarget": { - "input": { - "type": "structure", - "required": [ - "assessmentTargetName", - "resourceGroupArn" - ], - "members": { - "assessmentTargetName": {}, - "resourceGroupArn": {} - } - }, - "output": { - "type": "structure", - "required": [ - "assessmentTargetArn" - ], - "members": { - "assessmentTargetArn": {} - } - } - }, - "CreateAssessmentTemplate": { - "input": { - "type": "structure", - "required": [ - "assessmentTargetArn", - "assessmentTemplateName", - "durationInSeconds", - "rulesPackageArns" - ], - "members": { - "assessmentTargetArn": {}, - "assessmentTemplateName": {}, - "durationInSeconds": { - "type": "integer" - }, - "rulesPackageArns": { - "shape": "Sj" - }, - "userAttributesForFindings": { - "shape": "S4" - } - } - }, - "output": { - "type": "structure", - "required": [ - "assessmentTemplateArn" - ], - "members": { - "assessmentTemplateArn": {} - } - } - }, - "CreateResourceGroup": { - "input": { - "type": "structure", - "required": [ - "resourceGroupTags" - ], - "members": { - "resourceGroupTags": { - "shape": "Sm" - } - } - }, - "output": { - "type": "structure", - "required": [ - "resourceGroupArn" - ], - "members": { - "resourceGroupArn": {} - } - } - }, - "DeleteAssessmentRun": { - "input": { - "type": "structure", - "required": [ - "assessmentRunArn" - ], - "members": { - "assessmentRunArn": {} - } - } - }, - "DeleteAssessmentTarget": { - "input": { - "type": "structure", - "required": [ - "assessmentTargetArn" - ], - "members": { - "assessmentTargetArn": {} - } - } - }, - "DeleteAssessmentTemplate": { - "input": { - "type": "structure", - "required": [ - "assessmentTemplateArn" - ], - "members": { - "assessmentTemplateArn": {} - } - } - }, - "DescribeAssessmentRuns": { - "input": { - "type": "structure", - "required": [ - "assessmentRunArns" - ], - "members": { - "assessmentRunArns": { - "shape": "Sv" - } - } - }, - "output": { - "type": "structure", - "required": [ - "assessmentRuns", - "failedItems" - ], - "members": { - "assessmentRuns": { - "type": "list", - "member": { - "type": "structure", - "required": [ - "arn", - "name", - "assessmentTemplateArn", - "state", - "durationInSeconds", - "rulesPackageArns", - "userAttributesForFindings", - "createdAt", - "stateChangedAt", - "dataCollected", - "stateChanges", - "notifications", - "findingCounts" - ], - "members": { - "arn": {}, - "name": {}, - "assessmentTemplateArn": {}, - "state": {}, - "durationInSeconds": { - "type": "integer" - }, - "rulesPackageArns": { - "type": "list", - "member": {} - }, - "userAttributesForFindings": { - "shape": "S4" - }, - "createdAt": { - "type": "timestamp" - }, - "startedAt": { - "type": "timestamp" - }, - "completedAt": { - "type": "timestamp" - }, - "stateChangedAt": { - "type": "timestamp" - }, - "dataCollected": { - "type": "boolean" - }, - "stateChanges": { - "type": "list", - "member": { - "type": "structure", - "required": [ - "stateChangedAt", - "state" - ], - "members": { - "stateChangedAt": { - "type": "timestamp" - }, - "state": {} - } - } - }, - "notifications": { - "type": "list", - "member": { - "type": "structure", - "required": [ - "date", - "event", - "error" - ], - "members": { - "date": { - "type": "timestamp" - }, - "event": {}, - "message": {}, - "error": { - "type": "boolean" - }, - "snsTopicArn": {}, - "snsPublishStatusCode": {} - } - } - }, - "findingCounts": { - "type": "map", - "key": {}, - "value": { - "type": "integer" - } - } - } - } - }, - "failedItems": { - "shape": "S9" - } - } - } - }, - "DescribeAssessmentTargets": { - "input": { - "type": "structure", - "required": [ - "assessmentTargetArns" - ], - "members": { - "assessmentTargetArns": { - "shape": "Sv" - } - } - }, - "output": { - "type": "structure", - "required": [ - "assessmentTargets", - "failedItems" - ], - "members": { - "assessmentTargets": { - "type": "list", - "member": { - "type": "structure", - "required": [ - "arn", - "name", - "resourceGroupArn", - "createdAt", - "updatedAt" - ], - "members": { - "arn": {}, - "name": {}, - "resourceGroupArn": {}, - "createdAt": { - "type": "timestamp" - }, - "updatedAt": { - "type": "timestamp" - } - } - } - }, - "failedItems": { - "shape": "S9" - } - } - } - }, - "DescribeAssessmentTemplates": { - "input": { - "type": "structure", - "required": [ - "assessmentTemplateArns" - ], - "members": { - "assessmentTemplateArns": { - "shape": "Sv" - } - } - }, - "output": { - "type": "structure", - "required": [ - "assessmentTemplates", - "failedItems" - ], - "members": { - "assessmentTemplates": { - "type": "list", - "member": { - "type": "structure", - "required": [ - "arn", - "name", - "assessmentTargetArn", - "durationInSeconds", - "rulesPackageArns", - "userAttributesForFindings", - "createdAt" - ], - "members": { - "arn": {}, - "name": {}, - "assessmentTargetArn": {}, - "durationInSeconds": { - "type": "integer" - }, - "rulesPackageArns": { - "shape": "Sj" - }, - "userAttributesForFindings": { - "shape": "S4" - }, - "createdAt": { - "type": "timestamp" - } - } - } - }, - "failedItems": { - "shape": "S9" - } - } - } - }, - "DescribeCrossAccountAccessRole": { - "output": { - "type": "structure", - "required": [ - "roleArn", - "valid", - "registeredAt" - ], - "members": { - "roleArn": {}, - "valid": { - "type": "boolean" - }, - "registeredAt": { - "type": "timestamp" - } - } - } - }, - "DescribeFindings": { - "input": { - "type": "structure", - "required": [ - "findingArns" - ], - "members": { - "findingArns": { - "shape": "Sv" - }, - "locale": {} - } - }, - "output": { - "type": "structure", - "required": [ - "findings", - "failedItems" - ], - "members": { - "findings": { - "type": "list", - "member": { - "type": "structure", - "required": [ - "arn", - "attributes", - "userAttributes", - "createdAt", - "updatedAt" - ], - "members": { - "arn": {}, - "schemaVersion": { - "type": "integer" - }, - "service": {}, - "serviceAttributes": { - "type": "structure", - "required": [ - "schemaVersion" - ], - "members": { - "schemaVersion": { - "type": "integer" - }, - "assessmentRunArn": {}, - "rulesPackageArn": {} - } - }, - "assetType": {}, - "assetAttributes": { - "type": "structure", - "required": [ - "schemaVersion" - ], - "members": { - "schemaVersion": { - "type": "integer" - }, - "agentId": {}, - "autoScalingGroup": {}, - "amiId": {}, - "hostname": {}, - "ipv4Addresses": { - "type": "list", - "member": {} - } - } - }, - "id": {}, - "title": {}, - "description": {}, - "recommendation": {}, - "severity": {}, - "numericSeverity": { - "type": "double" - }, - "confidence": { - "type": "integer" - }, - "indicatorOfCompromise": { - "type": "boolean" - }, - "attributes": { - "shape": "S26" - }, - "userAttributes": { - "shape": "S4" - }, - "createdAt": { - "type": "timestamp" - }, - "updatedAt": { - "type": "timestamp" - } - } - } - }, - "failedItems": { - "shape": "S9" - } - } - } - }, - "DescribeResourceGroups": { - "input": { - "type": "structure", - "required": [ - "resourceGroupArns" - ], - "members": { - "resourceGroupArns": { - "shape": "Sv" - } - } - }, - "output": { - "type": "structure", - "required": [ - "resourceGroups", - "failedItems" - ], - "members": { - "resourceGroups": { - "type": "list", - "member": { - "type": "structure", - "required": [ - "arn", - "tags", - "createdAt" - ], - "members": { - "arn": {}, - "tags": { - "shape": "Sm" - }, - "createdAt": { - "type": "timestamp" - } - } - } - }, - "failedItems": { - "shape": "S9" - } - } - } - }, - "DescribeRulesPackages": { - "input": { - "type": "structure", - "required": [ - "rulesPackageArns" - ], - "members": { - "rulesPackageArns": { - "shape": "Sv" - }, - "locale": {} - } - }, - "output": { - "type": "structure", - "required": [ - "rulesPackages", - "failedItems" - ], - "members": { - "rulesPackages": { - "type": "list", - "member": { - "type": "structure", - "required": [ - "arn", - "name", - "version", - "provider" - ], - "members": { - "arn": {}, - "name": {}, - "version": {}, - "provider": {}, - "description": {} - } - } - }, - "failedItems": { - "shape": "S9" - } - } - } - }, - "GetAssessmentReport": { - "input": { - "type": "structure", - "required": [ - "assessmentRunArn", - "reportFileFormat", - "reportType" - ], - "members": { - "assessmentRunArn": {}, - "reportFileFormat": {}, - "reportType": {} - } - }, - "output": { - "type": "structure", - "required": [ - "status" - ], - "members": { - "status": {}, - "url": {} - } - } - }, - "GetTelemetryMetadata": { - "input": { - "type": "structure", - "required": [ - "assessmentRunArn" - ], - "members": { - "assessmentRunArn": {} - } - }, - "output": { - "type": "structure", - "required": [ - "telemetryMetadata" - ], - "members": { - "telemetryMetadata": { - "shape": "S2q" - } - } - } - }, - "ListAssessmentRunAgents": { - "input": { - "type": "structure", - "required": [ - "assessmentRunArn" - ], - "members": { - "assessmentRunArn": {}, - "filter": { - "type": "structure", - "required": [ - "agentHealths", - "agentHealthCodes" - ], - "members": { - "agentHealths": { - "type": "list", - "member": {} - }, - "agentHealthCodes": { - "type": "list", - "member": {} - } - } - }, - "nextToken": {}, - "maxResults": { - "type": "integer" - } - } - }, - "output": { - "type": "structure", - "required": [ - "assessmentRunAgents" - ], - "members": { - "assessmentRunAgents": { - "type": "list", - "member": { - "type": "structure", - "required": [ - "agentId", - "assessmentRunArn", - "agentHealth", - "agentHealthCode", - "telemetryMetadata" - ], - "members": { - "agentId": {}, - "assessmentRunArn": {}, - "agentHealth": {}, - "agentHealthCode": {}, - "agentHealthDetails": {}, - "autoScalingGroup": {}, - "telemetryMetadata": { - "shape": "S2q" - } - } - } - }, - "nextToken": {} - } - } - }, - "ListAssessmentRuns": { - "input": { - "type": "structure", - "members": { - "assessmentTemplateArns": { - "shape": "S36" - }, - "filter": { - "type": "structure", - "members": { - "namePattern": {}, - "states": { - "type": "list", - "member": {} - }, - "durationRange": { - "shape": "S3a" - }, - "rulesPackageArns": { - "shape": "S3b" - }, - "startTimeRange": { - "shape": "S3c" - }, - "completionTimeRange": { - "shape": "S3c" - }, - "stateChangeTimeRange": { - "shape": "S3c" - } - } - }, - "nextToken": {}, - "maxResults": { - "type": "integer" - } - } - }, - "output": { - "type": "structure", - "required": [ - "assessmentRunArns" - ], - "members": { - "assessmentRunArns": { - "shape": "S3e" - }, - "nextToken": {} - } - } - }, - "ListAssessmentTargets": { - "input": { - "type": "structure", - "members": { - "filter": { - "type": "structure", - "members": { - "assessmentTargetNamePattern": {} - } - }, - "nextToken": {}, - "maxResults": { - "type": "integer" - } - } - }, - "output": { - "type": "structure", - "required": [ - "assessmentTargetArns" - ], - "members": { - "assessmentTargetArns": { - "shape": "S3e" - }, - "nextToken": {} - } - } - }, - "ListAssessmentTemplates": { - "input": { - "type": "structure", - "members": { - "assessmentTargetArns": { - "shape": "S36" - }, - "filter": { - "type": "structure", - "members": { - "namePattern": {}, - "durationRange": { - "shape": "S3a" - }, - "rulesPackageArns": { - "shape": "S3b" - } - } - }, - "nextToken": {}, - "maxResults": { - "type": "integer" - } - } - }, - "output": { - "type": "structure", - "required": [ - "assessmentTemplateArns" - ], - "members": { - "assessmentTemplateArns": { - "shape": "S3e" - }, - "nextToken": {} - } - } - }, - "ListEventSubscriptions": { - "input": { - "type": "structure", - "members": { - "resourceArn": {}, - "nextToken": {}, - "maxResults": { - "type": "integer" - } - } - }, - "output": { - "type": "structure", - "required": [ - "subscriptions" - ], - "members": { - "subscriptions": { - "type": "list", - "member": { - "type": "structure", - "required": [ - "resourceArn", - "topicArn", - "eventSubscriptions" - ], - "members": { - "resourceArn": {}, - "topicArn": {}, - "eventSubscriptions": { - "type": "list", - "member": { - "type": "structure", - "required": [ - "event", - "subscribedAt" - ], - "members": { - "event": {}, - "subscribedAt": { - "type": "timestamp" - } - } - } - } - } - } - }, - "nextToken": {} - } - } - }, - "ListFindings": { - "input": { - "type": "structure", - "members": { - "assessmentRunArns": { - "shape": "S36" - }, - "filter": { - "type": "structure", - "members": { - "agentIds": { - "type": "list", - "member": {} - }, - "autoScalingGroups": { - "type": "list", - "member": {} - }, - "ruleNames": { - "type": "list", - "member": {} - }, - "severities": { - "type": "list", - "member": {} - }, - "rulesPackageArns": { - "shape": "S3b" - }, - "attributes": { - "shape": "S26" - }, - "userAttributes": { - "shape": "S26" - }, - "creationTimeRange": { - "shape": "S3c" - } - } - }, - "nextToken": {}, - "maxResults": { - "type": "integer" - } - } - }, - "output": { - "type": "structure", - "required": [ - "findingArns" - ], - "members": { - "findingArns": { - "shape": "S3e" - }, - "nextToken": {} - } - } - }, - "ListRulesPackages": { - "input": { - "type": "structure", - "members": { - "nextToken": {}, - "maxResults": { - "type": "integer" - } - } - }, - "output": { - "type": "structure", - "required": [ - "rulesPackageArns" - ], - "members": { - "rulesPackageArns": { - "shape": "S3e" - }, - "nextToken": {} - } - } - }, - "ListTagsForResource": { - "input": { - "type": "structure", - "required": [ - "resourceArn" - ], - "members": { - "resourceArn": {} - } - }, - "output": { - "type": "structure", - "required": [ - "tags" - ], - "members": { - "tags": { - "shape": "S44" - } - } - } - }, - "PreviewAgents": { - "input": { - "type": "structure", - "required": [ - "previewAgentsArn" - ], - "members": { - "previewAgentsArn": {}, - "nextToken": {}, - "maxResults": { - "type": "integer" - } - } - }, - "output": { - "type": "structure", - "required": [ - "agentPreviews" - ], - "members": { - "agentPreviews": { - "type": "list", - "member": { - "type": "structure", - "required": [ - "agentId" - ], - "members": { - "agentId": {}, - "autoScalingGroup": {} - } - } - }, - "nextToken": {} - } - } - }, - "RegisterCrossAccountAccessRole": { - "input": { - "type": "structure", - "required": [ - "roleArn" - ], - "members": { - "roleArn": {} - } - } - }, - "RemoveAttributesFromFindings": { - "input": { - "type": "structure", - "required": [ - "findingArns", - "attributeKeys" - ], - "members": { - "findingArns": { - "shape": "S2" - }, - "attributeKeys": { - "type": "list", - "member": {} - } - } - }, - "output": { - "type": "structure", - "required": [ - "failedItems" - ], - "members": { - "failedItems": { - "shape": "S9" - } - } - } - }, - "SetTagsForResource": { - "input": { - "type": "structure", - "required": [ - "resourceArn" - ], - "members": { - "resourceArn": {}, - "tags": { - "shape": "S44" - } - } - } - }, - "StartAssessmentRun": { - "input": { - "type": "structure", - "required": [ - "assessmentTemplateArn" - ], - "members": { - "assessmentTemplateArn": {}, - "assessmentRunName": {} - } - }, - "output": { - "type": "structure", - "required": [ - "assessmentRunArn" - ], - "members": { - "assessmentRunArn": {} - } - } - }, - "StopAssessmentRun": { - "input": { - "type": "structure", - "required": [ - "assessmentRunArn" - ], - "members": { - "assessmentRunArn": {}, - "stopAction": {} - } - } - }, - "SubscribeToEvent": { - "input": { - "type": "structure", - "required": [ - "resourceArn", - "event", - "topicArn" - ], - "members": { - "resourceArn": {}, - "event": {}, - "topicArn": {} - } - } - }, - "UnsubscribeFromEvent": { - "input": { - "type": "structure", - "required": [ - "resourceArn", - "event", - "topicArn" - ], - "members": { - "resourceArn": {}, - "event": {}, - "topicArn": {} - } - } - }, - "UpdateAssessmentTarget": { - "input": { - "type": "structure", - "required": [ - "assessmentTargetArn", - "assessmentTargetName", - "resourceGroupArn" - ], - "members": { - "assessmentTargetArn": {}, - "assessmentTargetName": {}, - "resourceGroupArn": {} - } - } - } - }, - "shapes": { - "S2": { - "type": "list", - "member": {} - }, - "S4": { - "type": "list", - "member": { - "shape": "S5" - } - }, - "S5": { - "type": "structure", - "required": [ - "key" - ], - "members": { - "key": {}, - "value": {} - } - }, - "S9": { - "type": "map", - "key": {}, - "value": { - "type": "structure", - "required": [ - "failureCode", - "retryable" - ], - "members": { - "failureCode": {}, - "retryable": { - "type": "boolean" - } - } - } - }, - "Sj": { - "type": "list", - "member": {} - }, - "Sm": { - "type": "list", - "member": { - "type": "structure", - "required": [ - "key" - ], - "members": { - "key": {}, - "value": {} - } - } - }, - "Sv": { - "type": "list", - "member": {} - }, - "S26": { - "type": "list", - "member": { - "shape": "S5" - } - }, - "S2q": { - "type": "list", - "member": { - "type": "structure", - "required": [ - "messageType", - "count" - ], - "members": { - "messageType": {}, - "count": { - "type": "long" - }, - "dataSize": { - "type": "long" - } - } - } - }, - "S36": { - "type": "list", - "member": {} - }, - "S3a": { - "type": "structure", - "members": { - "minSeconds": { - "type": "integer" - }, - "maxSeconds": { - "type": "integer" - } - } - }, - "S3b": { - "type": "list", - "member": {} - }, - "S3c": { - "type": "structure", - "members": { - "beginDate": { - "type": "timestamp" - }, - "endDate": { - "type": "timestamp" - } - } - }, - "S3e": { - "type": "list", - "member": {} - }, - "S44": { - "type": "list", - "member": { - "type": "structure", - "required": [ - "key" - ], - "members": { - "key": {}, - "value": {} - } - } - } - } -} \ No newline at end of file diff --git a/workshops/monte-carlo-on-ec2-spot-fleet/src/web/node_modules/aws-sdk/apis/inspector-2016-02-16.paginators.json b/workshops/monte-carlo-on-ec2-spot-fleet/src/web/node_modules/aws-sdk/apis/inspector-2016-02-16.paginators.json deleted file mode 100644 index 0f2aaeeb..00000000 --- a/workshops/monte-carlo-on-ec2-spot-fleet/src/web/node_modules/aws-sdk/apis/inspector-2016-02-16.paginators.json +++ /dev/null @@ -1,44 +0,0 @@ -{ - "pagination": { - "ListAssessmentRunAgents": { - "input_token": "nextToken", - "output_token": "nextToken", - "limit_key": "maxResults" - }, - "ListAssessmentRuns": { - "input_token": "nextToken", - "output_token": "nextToken", - "limit_key": "maxResults" - }, - "ListAssessmentTargets": { - "input_token": "nextToken", - "output_token": "nextToken", - "limit_key": "maxResults" - }, - "ListAssessmentTemplates": { - "input_token": "nextToken", - "output_token": "nextToken", - "limit_key": "maxResults" - }, - "ListEventSubscriptions": { - "input_token": "nextToken", - "output_token": "nextToken", - "limit_key": "maxResults" - }, - "ListFindings": { - "input_token": "nextToken", - "output_token": "nextToken", - "limit_key": "maxResults" - }, - "ListRulesPackages": { - "input_token": "nextToken", - "output_token": "nextToken", - "limit_key": "maxResults" - }, - "PreviewAgents": { - "input_token": "nextToken", - "output_token": "nextToken", - "limit_key": "maxResults" - } - } -} diff --git a/workshops/monte-carlo-on-ec2-spot-fleet/src/web/node_modules/aws-sdk/apis/iot-2015-05-28.examples.json b/workshops/monte-carlo-on-ec2-spot-fleet/src/web/node_modules/aws-sdk/apis/iot-2015-05-28.examples.json deleted file mode 100644 index 0ea7e3b0..00000000 --- a/workshops/monte-carlo-on-ec2-spot-fleet/src/web/node_modules/aws-sdk/apis/iot-2015-05-28.examples.json +++ /dev/null @@ -1,5 +0,0 @@ -{ - "version": "1.0", - "examples": { - } -} diff --git a/workshops/monte-carlo-on-ec2-spot-fleet/src/web/node_modules/aws-sdk/apis/iot-2015-05-28.min.json b/workshops/monte-carlo-on-ec2-spot-fleet/src/web/node_modules/aws-sdk/apis/iot-2015-05-28.min.json deleted file mode 100644 index 82d2b057..00000000 --- a/workshops/monte-carlo-on-ec2-spot-fleet/src/web/node_modules/aws-sdk/apis/iot-2015-05-28.min.json +++ /dev/null @@ -1,1960 +0,0 @@ -{ - "version": "2.0", - "metadata": { - "apiVersion": "2015-05-28", - "endpointPrefix": "iot", - "protocol": "rest-json", - "serviceFullName": "AWS IoT", - "signatureVersion": "v4", - "signingName": "execute-api", - "uid": "iot-2015-05-28" - }, - "operations": { - "AcceptCertificateTransfer": { - "http": { - "method": "PATCH", - "requestUri": "/accept-certificate-transfer/{certificateId}" - }, - "input": { - "type": "structure", - "required": [ - "certificateId" - ], - "members": { - "certificateId": { - "location": "uri", - "locationName": "certificateId" - }, - "setAsActive": { - "location": "querystring", - "locationName": "setAsActive", - "type": "boolean" - } - } - } - }, - "AttachPrincipalPolicy": { - "http": { - "method": "PUT", - "requestUri": "/principal-policies/{policyName}" - }, - "input": { - "type": "structure", - "required": [ - "policyName", - "principal" - ], - "members": { - "policyName": { - "location": "uri", - "locationName": "policyName" - }, - "principal": { - "location": "header", - "locationName": "x-amzn-iot-principal" - } - } - } - }, - "AttachThingPrincipal": { - "http": { - "method": "PUT", - "requestUri": "/things/{thingName}/principals" - }, - "input": { - "type": "structure", - "required": [ - "thingName", - "principal" - ], - "members": { - "thingName": { - "location": "uri", - "locationName": "thingName" - }, - "principal": { - "location": "header", - "locationName": "x-amzn-principal" - } - } - }, - "output": { - "type": "structure", - "members": {} - } - }, - "CancelCertificateTransfer": { - "http": { - "method": "PATCH", - "requestUri": "/cancel-certificate-transfer/{certificateId}" - }, - "input": { - "type": "structure", - "required": [ - "certificateId" - ], - "members": { - "certificateId": { - "location": "uri", - "locationName": "certificateId" - } - } - } - }, - "CreateCertificateFromCsr": { - "http": { - "requestUri": "/certificates" - }, - "input": { - "type": "structure", - "required": [ - "certificateSigningRequest" - ], - "members": { - "certificateSigningRequest": {}, - "setAsActive": { - "location": "querystring", - "locationName": "setAsActive", - "type": "boolean" - } - } - }, - "output": { - "type": "structure", - "members": { - "certificateArn": {}, - "certificateId": {}, - "certificatePem": {} - } - } - }, - "CreateKeysAndCertificate": { - "http": { - "requestUri": "/keys-and-certificate" - }, - "input": { - "type": "structure", - "members": { - "setAsActive": { - "location": "querystring", - "locationName": "setAsActive", - "type": "boolean" - } - } - }, - "output": { - "type": "structure", - "members": { - "certificateArn": {}, - "certificateId": {}, - "certificatePem": {}, - "keyPair": { - "type": "structure", - "members": { - "PublicKey": {}, - "PrivateKey": { - "type": "string", - "sensitive": true - } - } - } - } - } - }, - "CreatePolicy": { - "http": { - "requestUri": "/policies/{policyName}" - }, - "input": { - "type": "structure", - "required": [ - "policyName", - "policyDocument" - ], - "members": { - "policyName": { - "location": "uri", - "locationName": "policyName" - }, - "policyDocument": {} - } - }, - "output": { - "type": "structure", - "members": { - "policyName": {}, - "policyArn": {}, - "policyDocument": {}, - "policyVersionId": {} - } - } - }, - "CreatePolicyVersion": { - "http": { - "requestUri": "/policies/{policyName}/version" - }, - "input": { - "type": "structure", - "required": [ - "policyName", - "policyDocument" - ], - "members": { - "policyName": { - "location": "uri", - "locationName": "policyName" - }, - "policyDocument": {}, - "setAsDefault": { - "location": "querystring", - "locationName": "setAsDefault", - "type": "boolean" - } - } - }, - "output": { - "type": "structure", - "members": { - "policyArn": {}, - "policyDocument": {}, - "policyVersionId": {}, - "isDefaultVersion": { - "type": "boolean" - } - } - } - }, - "CreateThing": { - "http": { - "requestUri": "/things/{thingName}" - }, - "input": { - "type": "structure", - "required": [ - "thingName" - ], - "members": { - "thingName": { - "location": "uri", - "locationName": "thingName" - }, - "thingTypeName": {}, - "attributePayload": { - "shape": "Sw" - } - } - }, - "output": { - "type": "structure", - "members": { - "thingName": {}, - "thingArn": {} - } - } - }, - "CreateThingType": { - "http": { - "requestUri": "/thing-types/{thingTypeName}" - }, - "input": { - "type": "structure", - "required": [ - "thingTypeName" - ], - "members": { - "thingTypeName": { - "location": "uri", - "locationName": "thingTypeName" - }, - "thingTypeProperties": { - "shape": "S14" - } - } - }, - "output": { - "type": "structure", - "members": { - "thingTypeName": {}, - "thingTypeArn": {} - } - } - }, - "CreateTopicRule": { - "http": { - "requestUri": "/rules/{ruleName}" - }, - "input": { - "type": "structure", - "required": [ - "ruleName", - "topicRulePayload" - ], - "members": { - "ruleName": { - "location": "uri", - "locationName": "ruleName" - }, - "topicRulePayload": { - "shape": "S1b" - } - }, - "payload": "topicRulePayload" - } - }, - "DeleteCACertificate": { - "http": { - "method": "DELETE", - "requestUri": "/cacertificate/{caCertificateId}" - }, - "input": { - "type": "structure", - "required": [ - "certificateId" - ], - "members": { - "certificateId": { - "location": "uri", - "locationName": "caCertificateId" - } - } - }, - "output": { - "type": "structure", - "members": {} - } - }, - "DeleteCertificate": { - "http": { - "method": "DELETE", - "requestUri": "/certificates/{certificateId}" - }, - "input": { - "type": "structure", - "required": [ - "certificateId" - ], - "members": { - "certificateId": { - "location": "uri", - "locationName": "certificateId" - } - } - } - }, - "DeletePolicy": { - "http": { - "method": "DELETE", - "requestUri": "/policies/{policyName}" - }, - "input": { - "type": "structure", - "required": [ - "policyName" - ], - "members": { - "policyName": { - "location": "uri", - "locationName": "policyName" - } - } - } - }, - "DeletePolicyVersion": { - "http": { - "method": "DELETE", - "requestUri": "/policies/{policyName}/version/{policyVersionId}" - }, - "input": { - "type": "structure", - "required": [ - "policyName", - "policyVersionId" - ], - "members": { - "policyName": { - "location": "uri", - "locationName": "policyName" - }, - "policyVersionId": { - "location": "uri", - "locationName": "policyVersionId" - } - } - } - }, - "DeleteRegistrationCode": { - "http": { - "method": "DELETE", - "requestUri": "/registrationcode" - }, - "input": { - "type": "structure", - "members": {} - }, - "output": { - "type": "structure", - "members": {} - } - }, - "DeleteThing": { - "http": { - "method": "DELETE", - "requestUri": "/things/{thingName}" - }, - "input": { - "type": "structure", - "required": [ - "thingName" - ], - "members": { - "thingName": { - "location": "uri", - "locationName": "thingName" - }, - "expectedVersion": { - "location": "querystring", - "locationName": "expectedVersion", - "type": "long" - } - } - }, - "output": { - "type": "structure", - "members": {} - } - }, - "DeleteThingType": { - "http": { - "method": "DELETE", - "requestUri": "/thing-types/{thingTypeName}" - }, - "input": { - "type": "structure", - "required": [ - "thingTypeName" - ], - "members": { - "thingTypeName": { - "location": "uri", - "locationName": "thingTypeName" - } - } - }, - "output": { - "type": "structure", - "members": {} - } - }, - "DeleteTopicRule": { - "http": { - "method": "DELETE", - "requestUri": "/rules/{ruleName}" - }, - "input": { - "type": "structure", - "required": [ - "ruleName" - ], - "members": { - "ruleName": { - "location": "uri", - "locationName": "ruleName" - } - } - } - }, - "DeprecateThingType": { - "http": { - "requestUri": "/thing-types/{thingTypeName}/deprecate" - }, - "input": { - "type": "structure", - "required": [ - "thingTypeName" - ], - "members": { - "thingTypeName": { - "location": "uri", - "locationName": "thingTypeName" - }, - "undoDeprecate": { - "type": "boolean" - } - } - }, - "output": { - "type": "structure", - "members": {} - } - }, - "DescribeCACertificate": { - "http": { - "method": "GET", - "requestUri": "/cacertificate/{caCertificateId}" - }, - "input": { - "type": "structure", - "required": [ - "certificateId" - ], - "members": { - "certificateId": { - "location": "uri", - "locationName": "caCertificateId" - } - } - }, - "output": { - "type": "structure", - "members": { - "certificateDescription": { - "type": "structure", - "members": { - "certificateArn": {}, - "certificateId": {}, - "status": {}, - "certificatePem": {}, - "ownedBy": {}, - "creationDate": { - "type": "timestamp" - }, - "autoRegistrationStatus": {} - } - } - } - } - }, - "DescribeCertificate": { - "http": { - "method": "GET", - "requestUri": "/certificates/{certificateId}" - }, - "input": { - "type": "structure", - "required": [ - "certificateId" - ], - "members": { - "certificateId": { - "location": "uri", - "locationName": "certificateId" - } - } - }, - "output": { - "type": "structure", - "members": { - "certificateDescription": { - "type": "structure", - "members": { - "certificateArn": {}, - "certificateId": {}, - "caCertificateId": {}, - "status": {}, - "certificatePem": {}, - "ownedBy": {}, - "previousOwnedBy": {}, - "creationDate": { - "type": "timestamp" - }, - "lastModifiedDate": { - "type": "timestamp" - }, - "transferData": { - "type": "structure", - "members": { - "transferMessage": {}, - "rejectReason": {}, - "transferDate": { - "type": "timestamp" - }, - "acceptDate": { - "type": "timestamp" - }, - "rejectDate": { - "type": "timestamp" - } - } - } - } - } - } - } - }, - "DescribeEndpoint": { - "http": { - "method": "GET", - "requestUri": "/endpoint" - }, - "input": { - "type": "structure", - "members": {} - }, - "output": { - "type": "structure", - "members": { - "endpointAddress": {} - } - } - }, - "DescribeThing": { - "http": { - "method": "GET", - "requestUri": "/things/{thingName}" - }, - "input": { - "type": "structure", - "required": [ - "thingName" - ], - "members": { - "thingName": { - "location": "uri", - "locationName": "thingName" - } - } - }, - "output": { - "type": "structure", - "members": { - "defaultClientId": {}, - "thingName": {}, - "thingTypeName": {}, - "attributes": { - "shape": "Sx" - }, - "version": { - "type": "long" - } - } - } - }, - "DescribeThingType": { - "http": { - "method": "GET", - "requestUri": "/thing-types/{thingTypeName}" - }, - "input": { - "type": "structure", - "required": [ - "thingTypeName" - ], - "members": { - "thingTypeName": { - "location": "uri", - "locationName": "thingTypeName" - } - } - }, - "output": { - "type": "structure", - "members": { - "thingTypeName": {}, - "thingTypeProperties": { - "shape": "S14" - }, - "thingTypeMetadata": { - "shape": "S3x" - } - } - } - }, - "DetachPrincipalPolicy": { - "http": { - "method": "DELETE", - "requestUri": "/principal-policies/{policyName}" - }, - "input": { - "type": "structure", - "required": [ - "policyName", - "principal" - ], - "members": { - "policyName": { - "location": "uri", - "locationName": "policyName" - }, - "principal": { - "location": "header", - "locationName": "x-amzn-iot-principal" - } - } - } - }, - "DetachThingPrincipal": { - "http": { - "method": "DELETE", - "requestUri": "/things/{thingName}/principals" - }, - "input": { - "type": "structure", - "required": [ - "thingName", - "principal" - ], - "members": { - "thingName": { - "location": "uri", - "locationName": "thingName" - }, - "principal": { - "location": "header", - "locationName": "x-amzn-principal" - } - } - }, - "output": { - "type": "structure", - "members": {} - } - }, - "DisableTopicRule": { - "http": { - "requestUri": "/rules/{ruleName}/disable" - }, - "input": { - "type": "structure", - "required": [ - "ruleName" - ], - "members": { - "ruleName": { - "location": "uri", - "locationName": "ruleName" - } - } - } - }, - "EnableTopicRule": { - "http": { - "requestUri": "/rules/{ruleName}/enable" - }, - "input": { - "type": "structure", - "required": [ - "ruleName" - ], - "members": { - "ruleName": { - "location": "uri", - "locationName": "ruleName" - } - } - } - }, - "GetLoggingOptions": { - "http": { - "method": "GET", - "requestUri": "/loggingOptions" - }, - "input": { - "type": "structure", - "members": {} - }, - "output": { - "type": "structure", - "members": { - "roleArn": {}, - "logLevel": {} - } - } - }, - "GetPolicy": { - "http": { - "method": "GET", - "requestUri": "/policies/{policyName}" - }, - "input": { - "type": "structure", - "required": [ - "policyName" - ], - "members": { - "policyName": { - "location": "uri", - "locationName": "policyName" - } - } - }, - "output": { - "type": "structure", - "members": { - "policyName": {}, - "policyArn": {}, - "policyDocument": {}, - "defaultVersionId": {} - } - } - }, - "GetPolicyVersion": { - "http": { - "method": "GET", - "requestUri": "/policies/{policyName}/version/{policyVersionId}" - }, - "input": { - "type": "structure", - "required": [ - "policyName", - "policyVersionId" - ], - "members": { - "policyName": { - "location": "uri", - "locationName": "policyName" - }, - "policyVersionId": { - "location": "uri", - "locationName": "policyVersionId" - } - } - }, - "output": { - "type": "structure", - "members": { - "policyArn": {}, - "policyName": {}, - "policyDocument": {}, - "policyVersionId": {}, - "isDefaultVersion": { - "type": "boolean" - } - } - } - }, - "GetRegistrationCode": { - "http": { - "method": "GET", - "requestUri": "/registrationcode" - }, - "input": { - "type": "structure", - "members": {} - }, - "output": { - "type": "structure", - "members": { - "registrationCode": {} - } - } - }, - "GetTopicRule": { - "http": { - "method": "GET", - "requestUri": "/rules/{ruleName}" - }, - "input": { - "type": "structure", - "required": [ - "ruleName" - ], - "members": { - "ruleName": { - "location": "uri", - "locationName": "ruleName" - } - } - }, - "output": { - "type": "structure", - "members": { - "ruleArn": {}, - "rule": { - "type": "structure", - "members": { - "ruleName": {}, - "sql": {}, - "description": {}, - "createdAt": { - "type": "timestamp" - }, - "actions": { - "shape": "S1e" - }, - "ruleDisabled": { - "type": "boolean" - }, - "awsIotSqlVersion": {} - } - } - } - } - }, - "ListCACertificates": { - "http": { - "method": "GET", - "requestUri": "/cacertificates" - }, - "input": { - "type": "structure", - "members": { - "pageSize": { - "location": "querystring", - "locationName": "pageSize", - "type": "integer" - }, - "marker": { - "location": "querystring", - "locationName": "marker" - }, - "ascendingOrder": { - "location": "querystring", - "locationName": "isAscendingOrder", - "type": "boolean" - } - } - }, - "output": { - "type": "structure", - "members": { - "certificates": { - "type": "list", - "member": { - "type": "structure", - "members": { - "certificateArn": {}, - "certificateId": {}, - "status": {}, - "creationDate": { - "type": "timestamp" - } - } - } - }, - "nextMarker": {} - } - } - }, - "ListCertificates": { - "http": { - "method": "GET", - "requestUri": "/certificates" - }, - "input": { - "type": "structure", - "members": { - "pageSize": { - "location": "querystring", - "locationName": "pageSize", - "type": "integer" - }, - "marker": { - "location": "querystring", - "locationName": "marker" - }, - "ascendingOrder": { - "location": "querystring", - "locationName": "isAscendingOrder", - "type": "boolean" - } - } - }, - "output": { - "type": "structure", - "members": { - "certificates": { - "shape": "S4u" - }, - "nextMarker": {} - } - } - }, - "ListCertificatesByCA": { - "http": { - "method": "GET", - "requestUri": "/certificates-by-ca/{caCertificateId}" - }, - "input": { - "type": "structure", - "required": [ - "caCertificateId" - ], - "members": { - "caCertificateId": { - "location": "uri", - "locationName": "caCertificateId" - }, - "pageSize": { - "location": "querystring", - "locationName": "pageSize", - "type": "integer" - }, - "marker": { - "location": "querystring", - "locationName": "marker" - }, - "ascendingOrder": { - "location": "querystring", - "locationName": "isAscendingOrder", - "type": "boolean" - } - } - }, - "output": { - "type": "structure", - "members": { - "certificates": { - "shape": "S4u" - }, - "nextMarker": {} - } - } - }, - "ListOutgoingCertificates": { - "http": { - "method": "GET", - "requestUri": "/certificates-out-going" - }, - "input": { - "type": "structure", - "members": { - "pageSize": { - "location": "querystring", - "locationName": "pageSize", - "type": "integer" - }, - "marker": { - "location": "querystring", - "locationName": "marker" - }, - "ascendingOrder": { - "location": "querystring", - "locationName": "isAscendingOrder", - "type": "boolean" - } - } - }, - "output": { - "type": "structure", - "members": { - "outgoingCertificates": { - "type": "list", - "member": { - "type": "structure", - "members": { - "certificateArn": {}, - "certificateId": {}, - "transferredTo": {}, - "transferDate": { - "type": "timestamp" - }, - "transferMessage": {}, - "creationDate": { - "type": "timestamp" - } - } - } - }, - "nextMarker": {} - } - } - }, - "ListPolicies": { - "http": { - "method": "GET", - "requestUri": "/policies" - }, - "input": { - "type": "structure", - "members": { - "marker": { - "location": "querystring", - "locationName": "marker" - }, - "pageSize": { - "location": "querystring", - "locationName": "pageSize", - "type": "integer" - }, - "ascendingOrder": { - "location": "querystring", - "locationName": "isAscendingOrder", - "type": "boolean" - } - } - }, - "output": { - "type": "structure", - "members": { - "policies": { - "shape": "S54" - }, - "nextMarker": {} - } - } - }, - "ListPolicyPrincipals": { - "http": { - "method": "GET", - "requestUri": "/policy-principals" - }, - "input": { - "type": "structure", - "required": [ - "policyName" - ], - "members": { - "policyName": { - "location": "header", - "locationName": "x-amzn-iot-policy" - }, - "marker": { - "location": "querystring", - "locationName": "marker" - }, - "pageSize": { - "location": "querystring", - "locationName": "pageSize", - "type": "integer" - }, - "ascendingOrder": { - "location": "querystring", - "locationName": "isAscendingOrder", - "type": "boolean" - } - } - }, - "output": { - "type": "structure", - "members": { - "principals": { - "shape": "S58" - }, - "nextMarker": {} - } - } - }, - "ListPolicyVersions": { - "http": { - "method": "GET", - "requestUri": "/policies/{policyName}/version" - }, - "input": { - "type": "structure", - "required": [ - "policyName" - ], - "members": { - "policyName": { - "location": "uri", - "locationName": "policyName" - } - } - }, - "output": { - "type": "structure", - "members": { - "policyVersions": { - "type": "list", - "member": { - "type": "structure", - "members": { - "versionId": {}, - "isDefaultVersion": { - "type": "boolean" - }, - "createDate": { - "type": "timestamp" - } - } - } - } - } - } - }, - "ListPrincipalPolicies": { - "http": { - "method": "GET", - "requestUri": "/principal-policies" - }, - "input": { - "type": "structure", - "required": [ - "principal" - ], - "members": { - "principal": { - "location": "header", - "locationName": "x-amzn-iot-principal" - }, - "marker": { - "location": "querystring", - "locationName": "marker" - }, - "pageSize": { - "location": "querystring", - "locationName": "pageSize", - "type": "integer" - }, - "ascendingOrder": { - "location": "querystring", - "locationName": "isAscendingOrder", - "type": "boolean" - } - } - }, - "output": { - "type": "structure", - "members": { - "policies": { - "shape": "S54" - }, - "nextMarker": {} - } - } - }, - "ListPrincipalThings": { - "http": { - "method": "GET", - "requestUri": "/principals/things" - }, - "input": { - "type": "structure", - "required": [ - "principal" - ], - "members": { - "nextToken": { - "location": "querystring", - "locationName": "nextToken" - }, - "maxResults": { - "location": "querystring", - "locationName": "maxResults", - "type": "integer" - }, - "principal": { - "location": "header", - "locationName": "x-amzn-principal" - } - } - }, - "output": { - "type": "structure", - "members": { - "things": { - "type": "list", - "member": {} - }, - "nextToken": {} - } - } - }, - "ListThingPrincipals": { - "http": { - "method": "GET", - "requestUri": "/things/{thingName}/principals" - }, - "input": { - "type": "structure", - "required": [ - "thingName" - ], - "members": { - "thingName": { - "location": "uri", - "locationName": "thingName" - } - } - }, - "output": { - "type": "structure", - "members": { - "principals": { - "shape": "S58" - } - } - } - }, - "ListThingTypes": { - "http": { - "method": "GET", - "requestUri": "/thing-types" - }, - "input": { - "type": "structure", - "members": { - "nextToken": { - "location": "querystring", - "locationName": "nextToken" - }, - "maxResults": { - "location": "querystring", - "locationName": "maxResults", - "type": "integer" - }, - "thingTypeName": { - "location": "querystring", - "locationName": "thingTypeName" - } - } - }, - "output": { - "type": "structure", - "members": { - "thingTypes": { - "type": "list", - "member": { - "type": "structure", - "members": { - "thingTypeName": {}, - "thingTypeProperties": { - "shape": "S14" - }, - "thingTypeMetadata": { - "shape": "S3x" - } - } - } - }, - "nextToken": {} - } - } - }, - "ListThings": { - "http": { - "method": "GET", - "requestUri": "/things" - }, - "input": { - "type": "structure", - "members": { - "nextToken": { - "location": "querystring", - "locationName": "nextToken" - }, - "maxResults": { - "location": "querystring", - "locationName": "maxResults", - "type": "integer" - }, - "attributeName": { - "location": "querystring", - "locationName": "attributeName" - }, - "attributeValue": { - "location": "querystring", - "locationName": "attributeValue" - }, - "thingTypeName": { - "location": "querystring", - "locationName": "thingTypeName" - } - } - }, - "output": { - "type": "structure", - "members": { - "things": { - "type": "list", - "member": { - "type": "structure", - "members": { - "thingName": {}, - "thingTypeName": {}, - "attributes": { - "shape": "Sx" - }, - "version": { - "type": "long" - } - } - } - }, - "nextToken": {} - } - } - }, - "ListTopicRules": { - "http": { - "method": "GET", - "requestUri": "/rules" - }, - "input": { - "type": "structure", - "members": { - "topic": { - "location": "querystring", - "locationName": "topic" - }, - "maxResults": { - "location": "querystring", - "locationName": "maxResults", - "type": "integer" - }, - "nextToken": { - "location": "querystring", - "locationName": "nextToken" - }, - "ruleDisabled": { - "location": "querystring", - "locationName": "ruleDisabled", - "type": "boolean" - } - } - }, - "output": { - "type": "structure", - "members": { - "rules": { - "type": "list", - "member": { - "type": "structure", - "members": { - "ruleArn": {}, - "ruleName": {}, - "topicPattern": {}, - "createdAt": { - "type": "timestamp" - }, - "ruleDisabled": { - "type": "boolean" - } - } - } - }, - "nextToken": {} - } - } - }, - "RegisterCACertificate": { - "http": { - "requestUri": "/cacertificate" - }, - "input": { - "type": "structure", - "required": [ - "caCertificate", - "verificationCertificate" - ], - "members": { - "caCertificate": {}, - "verificationCertificate": {}, - "setAsActive": { - "location": "querystring", - "locationName": "setAsActive", - "type": "boolean" - }, - "allowAutoRegistration": { - "location": "querystring", - "locationName": "allowAutoRegistration", - "type": "boolean" - } - } - }, - "output": { - "type": "structure", - "members": { - "certificateArn": {}, - "certificateId": {} - } - } - }, - "RegisterCertificate": { - "http": { - "requestUri": "/certificate/register" - }, - "input": { - "type": "structure", - "required": [ - "certificatePem" - ], - "members": { - "certificatePem": {}, - "caCertificatePem": {}, - "setAsActive": { - "deprecated": true, - "location": "querystring", - "locationName": "setAsActive", - "type": "boolean" - }, - "status": {} - } - }, - "output": { - "type": "structure", - "members": { - "certificateArn": {}, - "certificateId": {} - } - } - }, - "RejectCertificateTransfer": { - "http": { - "method": "PATCH", - "requestUri": "/reject-certificate-transfer/{certificateId}" - }, - "input": { - "type": "structure", - "required": [ - "certificateId" - ], - "members": { - "certificateId": { - "location": "uri", - "locationName": "certificateId" - }, - "rejectReason": {} - } - } - }, - "ReplaceTopicRule": { - "http": { - "method": "PATCH", - "requestUri": "/rules/{ruleName}" - }, - "input": { - "type": "structure", - "required": [ - "ruleName", - "topicRulePayload" - ], - "members": { - "ruleName": { - "location": "uri", - "locationName": "ruleName" - }, - "topicRulePayload": { - "shape": "S1b" - } - }, - "payload": "topicRulePayload" - } - }, - "SetDefaultPolicyVersion": { - "http": { - "method": "PATCH", - "requestUri": "/policies/{policyName}/version/{policyVersionId}" - }, - "input": { - "type": "structure", - "required": [ - "policyName", - "policyVersionId" - ], - "members": { - "policyName": { - "location": "uri", - "locationName": "policyName" - }, - "policyVersionId": { - "location": "uri", - "locationName": "policyVersionId" - } - } - } - }, - "SetLoggingOptions": { - "http": { - "requestUri": "/loggingOptions" - }, - "input": { - "type": "structure", - "required": [ - "loggingOptionsPayload" - ], - "members": { - "loggingOptionsPayload": { - "type": "structure", - "required": [ - "roleArn" - ], - "members": { - "roleArn": {}, - "logLevel": {} - } - } - }, - "payload": "loggingOptionsPayload" - } - }, - "TransferCertificate": { - "http": { - "method": "PATCH", - "requestUri": "/transfer-certificate/{certificateId}" - }, - "input": { - "type": "structure", - "required": [ - "certificateId", - "targetAwsAccount" - ], - "members": { - "certificateId": { - "location": "uri", - "locationName": "certificateId" - }, - "targetAwsAccount": { - "location": "querystring", - "locationName": "targetAwsAccount" - }, - "transferMessage": {} - } - }, - "output": { - "type": "structure", - "members": { - "transferredCertificateArn": {} - } - } - }, - "UpdateCACertificate": { - "http": { - "method": "PUT", - "requestUri": "/cacertificate/{caCertificateId}" - }, - "input": { - "type": "structure", - "required": [ - "certificateId" - ], - "members": { - "certificateId": { - "location": "uri", - "locationName": "caCertificateId" - }, - "newStatus": { - "location": "querystring", - "locationName": "newStatus" - }, - "newAutoRegistrationStatus": { - "location": "querystring", - "locationName": "newAutoRegistrationStatus" - } - } - } - }, - "UpdateCertificate": { - "http": { - "method": "PUT", - "requestUri": "/certificates/{certificateId}" - }, - "input": { - "type": "structure", - "required": [ - "certificateId", - "newStatus" - ], - "members": { - "certificateId": { - "location": "uri", - "locationName": "certificateId" - }, - "newStatus": { - "location": "querystring", - "locationName": "newStatus" - } - } - } - }, - "UpdateThing": { - "http": { - "method": "PATCH", - "requestUri": "/things/{thingName}" - }, - "input": { - "type": "structure", - "required": [ - "thingName" - ], - "members": { - "thingName": { - "location": "uri", - "locationName": "thingName" - }, - "thingTypeName": {}, - "attributePayload": { - "shape": "Sw" - }, - "expectedVersion": { - "type": "long" - }, - "removeThingType": { - "type": "boolean" - } - } - }, - "output": { - "type": "structure", - "members": {} - } - } - }, - "shapes": { - "Sw": { - "type": "structure", - "members": { - "attributes": { - "shape": "Sx" - }, - "merge": { - "type": "boolean" - } - } - }, - "Sx": { - "type": "map", - "key": {}, - "value": {} - }, - "S14": { - "type": "structure", - "members": { - "thingTypeDescription": {}, - "searchableAttributes": { - "type": "list", - "member": {} - } - } - }, - "S1b": { - "type": "structure", - "required": [ - "sql", - "actions" - ], - "members": { - "sql": {}, - "description": {}, - "actions": { - "shape": "S1e" - }, - "ruleDisabled": { - "type": "boolean" - }, - "awsIotSqlVersion": {} - } - }, - "S1e": { - "type": "list", - "member": { - "type": "structure", - "members": { - "dynamoDB": { - "type": "structure", - "required": [ - "tableName", - "roleArn", - "hashKeyField", - "hashKeyValue" - ], - "members": { - "tableName": {}, - "roleArn": {}, - "operation": {}, - "hashKeyField": {}, - "hashKeyValue": {}, - "hashKeyType": {}, - "rangeKeyField": {}, - "rangeKeyValue": {}, - "rangeKeyType": {}, - "payloadField": {} - } - }, - "dynamoDBv2": { - "type": "structure", - "members": { - "roleArn": {}, - "putItem": { - "type": "structure", - "required": [ - "tableName" - ], - "members": { - "tableName": {} - } - } - } - }, - "lambda": { - "type": "structure", - "required": [ - "functionArn" - ], - "members": { - "functionArn": {} - } - }, - "sns": { - "type": "structure", - "required": [ - "targetArn", - "roleArn" - ], - "members": { - "targetArn": {}, - "roleArn": {}, - "messageFormat": {} - } - }, - "sqs": { - "type": "structure", - "required": [ - "roleArn", - "queueUrl" - ], - "members": { - "roleArn": {}, - "queueUrl": {}, - "useBase64": { - "type": "boolean" - } - } - }, - "kinesis": { - "type": "structure", - "required": [ - "roleArn", - "streamName" - ], - "members": { - "roleArn": {}, - "streamName": {}, - "partitionKey": {} - } - }, - "republish": { - "type": "structure", - "required": [ - "roleArn", - "topic" - ], - "members": { - "roleArn": {}, - "topic": {} - } - }, - "s3": { - "type": "structure", - "required": [ - "roleArn", - "bucketName", - "key" - ], - "members": { - "roleArn": {}, - "bucketName": {}, - "key": {}, - "cannedAcl": {} - } - }, - "firehose": { - "type": "structure", - "required": [ - "roleArn", - "deliveryStreamName" - ], - "members": { - "roleArn": {}, - "deliveryStreamName": {}, - "separator": {} - } - }, - "cloudwatchMetric": { - "type": "structure", - "required": [ - "roleArn", - "metricNamespace", - "metricName", - "metricValue", - "metricUnit" - ], - "members": { - "roleArn": {}, - "metricNamespace": {}, - "metricName": {}, - "metricValue": {}, - "metricUnit": {}, - "metricTimestamp": {} - } - }, - "cloudwatchAlarm": { - "type": "structure", - "required": [ - "roleArn", - "alarmName", - "stateReason", - "stateValue" - ], - "members": { - "roleArn": {}, - "alarmName": {}, - "stateReason": {}, - "stateValue": {} - } - }, - "elasticsearch": { - "type": "structure", - "required": [ - "roleArn", - "endpoint", - "index", - "type", - "id" - ], - "members": { - "roleArn": {}, - "endpoint": {}, - "index": {}, - "type": {}, - "id": {} - } - }, - "salesforce": { - "type": "structure", - "required": [ - "token", - "url" - ], - "members": { - "token": {}, - "url": {} - } - } - } - } - }, - "S3x": { - "type": "structure", - "members": { - "deprecated": { - "type": "boolean" - }, - "deprecationDate": { - "type": "timestamp" - }, - "creationDate": { - "type": "timestamp" - } - } - }, - "S4u": { - "type": "list", - "member": { - "type": "structure", - "members": { - "certificateArn": {}, - "certificateId": {}, - "status": {}, - "creationDate": { - "type": "timestamp" - } - } - } - }, - "S54": { - "type": "list", - "member": { - "type": "structure", - "members": { - "policyName": {}, - "policyArn": {} - } - } - }, - "S58": { - "type": "list", - "member": {} - } - } -} \ No newline at end of file diff --git a/workshops/monte-carlo-on-ec2-spot-fleet/src/web/node_modules/aws-sdk/apis/iot-2015-05-28.paginators.json b/workshops/monte-carlo-on-ec2-spot-fleet/src/web/node_modules/aws-sdk/apis/iot-2015-05-28.paginators.json deleted file mode 100644 index 5677bd8e..00000000 --- a/workshops/monte-carlo-on-ec2-spot-fleet/src/web/node_modules/aws-sdk/apis/iot-2015-05-28.paginators.json +++ /dev/null @@ -1,4 +0,0 @@ -{ - "pagination": { - } -} diff --git a/workshops/monte-carlo-on-ec2-spot-fleet/src/web/node_modules/aws-sdk/apis/iot-data-2015-05-28.min.json b/workshops/monte-carlo-on-ec2-spot-fleet/src/web/node_modules/aws-sdk/apis/iot-data-2015-05-28.min.json deleted file mode 100644 index d3946b8d..00000000 --- a/workshops/monte-carlo-on-ec2-spot-fleet/src/web/node_modules/aws-sdk/apis/iot-data-2015-05-28.min.json +++ /dev/null @@ -1,129 +0,0 @@ -{ - "version": "2.0", - "metadata": { - "uid": "iot-data-2015-05-28", - "apiVersion": "2015-05-28", - "endpointPrefix": "data.iot", - "protocol": "rest-json", - "serviceFullName": "AWS IoT Data Plane", - "signatureVersion": "v4", - "signingName": "iotdata" - }, - "operations": { - "DeleteThingShadow": { - "http": { - "method": "DELETE", - "requestUri": "/things/{thingName}/shadow" - }, - "input": { - "type": "structure", - "required": [ - "thingName" - ], - "members": { - "thingName": { - "location": "uri", - "locationName": "thingName" - } - } - }, - "output": { - "type": "structure", - "required": [ - "payload" - ], - "members": { - "payload": { - "type": "blob" - } - }, - "payload": "payload" - } - }, - "GetThingShadow": { - "http": { - "method": "GET", - "requestUri": "/things/{thingName}/shadow" - }, - "input": { - "type": "structure", - "required": [ - "thingName" - ], - "members": { - "thingName": { - "location": "uri", - "locationName": "thingName" - } - } - }, - "output": { - "type": "structure", - "members": { - "payload": { - "type": "blob" - } - }, - "payload": "payload" - } - }, - "Publish": { - "http": { - "requestUri": "/topics/{topic}" - }, - "input": { - "type": "structure", - "required": [ - "topic" - ], - "members": { - "topic": { - "location": "uri", - "locationName": "topic" - }, - "qos": { - "location": "querystring", - "locationName": "qos", - "type": "integer" - }, - "payload": { - "type": "blob" - } - }, - "payload": "payload" - } - }, - "UpdateThingShadow": { - "http": { - "requestUri": "/things/{thingName}/shadow" - }, - "input": { - "type": "structure", - "required": [ - "thingName", - "payload" - ], - "members": { - "thingName": { - "location": "uri", - "locationName": "thingName" - }, - "payload": { - "type": "blob" - } - }, - "payload": "payload" - }, - "output": { - "type": "structure", - "members": { - "payload": { - "type": "blob" - } - }, - "payload": "payload" - } - } - }, - "shapes": {} -} \ No newline at end of file diff --git a/workshops/monte-carlo-on-ec2-spot-fleet/src/web/node_modules/aws-sdk/apis/kinesis-2013-12-02.examples.json b/workshops/monte-carlo-on-ec2-spot-fleet/src/web/node_modules/aws-sdk/apis/kinesis-2013-12-02.examples.json deleted file mode 100644 index 0ea7e3b0..00000000 --- a/workshops/monte-carlo-on-ec2-spot-fleet/src/web/node_modules/aws-sdk/apis/kinesis-2013-12-02.examples.json +++ /dev/null @@ -1,5 +0,0 @@ -{ - "version": "1.0", - "examples": { - } -} diff --git a/workshops/monte-carlo-on-ec2-spot-fleet/src/web/node_modules/aws-sdk/apis/kinesis-2013-12-02.min.json b/workshops/monte-carlo-on-ec2-spot-fleet/src/web/node_modules/aws-sdk/apis/kinesis-2013-12-02.min.json deleted file mode 100644 index c95dbb0d..00000000 --- a/workshops/monte-carlo-on-ec2-spot-fleet/src/web/node_modules/aws-sdk/apis/kinesis-2013-12-02.min.json +++ /dev/null @@ -1,593 +0,0 @@ -{ - "version": "2.0", - "metadata": { - "apiVersion": "2013-12-02", - "endpointPrefix": "kinesis", - "jsonVersion": "1.1", - "protocol": "json", - "serviceAbbreviation": "Kinesis", - "serviceFullName": "Amazon Kinesis", - "signatureVersion": "v4", - "targetPrefix": "Kinesis_20131202", - "uid": "kinesis-2013-12-02" - }, - "operations": { - "AddTagsToStream": { - "input": { - "type": "structure", - "required": [ - "StreamName", - "Tags" - ], - "members": { - "StreamName": {}, - "Tags": { - "type": "map", - "key": {}, - "value": {} - } - } - } - }, - "CreateStream": { - "input": { - "type": "structure", - "required": [ - "StreamName", - "ShardCount" - ], - "members": { - "StreamName": {}, - "ShardCount": { - "type": "integer" - } - } - } - }, - "DecreaseStreamRetentionPeriod": { - "input": { - "type": "structure", - "required": [ - "StreamName", - "RetentionPeriodHours" - ], - "members": { - "StreamName": {}, - "RetentionPeriodHours": { - "type": "integer" - } - } - } - }, - "DeleteStream": { - "input": { - "type": "structure", - "required": [ - "StreamName" - ], - "members": { - "StreamName": {} - } - } - }, - "DescribeLimits": { - "input": { - "type": "structure", - "members": {} - }, - "output": { - "type": "structure", - "required": [ - "ShardLimit", - "OpenShardCount" - ], - "members": { - "ShardLimit": { - "type": "integer" - }, - "OpenShardCount": { - "type": "integer" - } - } - } - }, - "DescribeStream": { - "input": { - "type": "structure", - "required": [ - "StreamName" - ], - "members": { - "StreamName": {}, - "Limit": { - "type": "integer" - }, - "ExclusiveStartShardId": {} - } - }, - "output": { - "type": "structure", - "required": [ - "StreamDescription" - ], - "members": { - "StreamDescription": { - "type": "structure", - "required": [ - "StreamName", - "StreamARN", - "StreamStatus", - "Shards", - "HasMoreShards", - "RetentionPeriodHours", - "StreamCreationTimestamp", - "EnhancedMonitoring" - ], - "members": { - "StreamName": {}, - "StreamARN": {}, - "StreamStatus": {}, - "Shards": { - "type": "list", - "member": { - "type": "structure", - "required": [ - "ShardId", - "HashKeyRange", - "SequenceNumberRange" - ], - "members": { - "ShardId": {}, - "ParentShardId": {}, - "AdjacentParentShardId": {}, - "HashKeyRange": { - "type": "structure", - "required": [ - "StartingHashKey", - "EndingHashKey" - ], - "members": { - "StartingHashKey": {}, - "EndingHashKey": {} - } - }, - "SequenceNumberRange": { - "type": "structure", - "required": [ - "StartingSequenceNumber" - ], - "members": { - "StartingSequenceNumber": {}, - "EndingSequenceNumber": {} - } - } - } - } - }, - "HasMoreShards": { - "type": "boolean" - }, - "RetentionPeriodHours": { - "type": "integer" - }, - "StreamCreationTimestamp": { - "type": "timestamp" - }, - "EnhancedMonitoring": { - "type": "list", - "member": { - "type": "structure", - "members": { - "ShardLevelMetrics": { - "shape": "Su" - } - } - } - }, - "EncryptionType": {}, - "KeyId": {} - } - } - } - } - }, - "DisableEnhancedMonitoring": { - "input": { - "type": "structure", - "required": [ - "StreamName", - "ShardLevelMetrics" - ], - "members": { - "StreamName": {}, - "ShardLevelMetrics": { - "shape": "Su" - } - } - }, - "output": { - "shape": "Sz" - } - }, - "EnableEnhancedMonitoring": { - "input": { - "type": "structure", - "required": [ - "StreamName", - "ShardLevelMetrics" - ], - "members": { - "StreamName": {}, - "ShardLevelMetrics": { - "shape": "Su" - } - } - }, - "output": { - "shape": "Sz" - } - }, - "GetRecords": { - "input": { - "type": "structure", - "required": [ - "ShardIterator" - ], - "members": { - "ShardIterator": {}, - "Limit": { - "type": "integer" - } - } - }, - "output": { - "type": "structure", - "required": [ - "Records" - ], - "members": { - "Records": { - "type": "list", - "member": { - "type": "structure", - "required": [ - "SequenceNumber", - "Data", - "PartitionKey" - ], - "members": { - "SequenceNumber": {}, - "ApproximateArrivalTimestamp": { - "type": "timestamp" - }, - "Data": { - "type": "blob" - }, - "PartitionKey": {}, - "EncryptionType": {} - } - } - }, - "NextShardIterator": {}, - "MillisBehindLatest": { - "type": "long" - } - } - } - }, - "GetShardIterator": { - "input": { - "type": "structure", - "required": [ - "StreamName", - "ShardId", - "ShardIteratorType" - ], - "members": { - "StreamName": {}, - "ShardId": {}, - "ShardIteratorType": {}, - "StartingSequenceNumber": {}, - "Timestamp": { - "type": "timestamp" - } - } - }, - "output": { - "type": "structure", - "members": { - "ShardIterator": {} - } - } - }, - "IncreaseStreamRetentionPeriod": { - "input": { - "type": "structure", - "required": [ - "StreamName", - "RetentionPeriodHours" - ], - "members": { - "StreamName": {}, - "RetentionPeriodHours": { - "type": "integer" - } - } - } - }, - "ListStreams": { - "input": { - "type": "structure", - "members": { - "Limit": { - "type": "integer" - }, - "ExclusiveStartStreamName": {} - } - }, - "output": { - "type": "structure", - "required": [ - "StreamNames", - "HasMoreStreams" - ], - "members": { - "StreamNames": { - "type": "list", - "member": {} - }, - "HasMoreStreams": { - "type": "boolean" - } - } - } - }, - "ListTagsForStream": { - "input": { - "type": "structure", - "required": [ - "StreamName" - ], - "members": { - "StreamName": {}, - "ExclusiveStartTagKey": {}, - "Limit": { - "type": "integer" - } - } - }, - "output": { - "type": "structure", - "required": [ - "Tags", - "HasMoreTags" - ], - "members": { - "Tags": { - "type": "list", - "member": { - "type": "structure", - "required": [ - "Key" - ], - "members": { - "Key": {}, - "Value": {} - } - } - }, - "HasMoreTags": { - "type": "boolean" - } - } - } - }, - "MergeShards": { - "input": { - "type": "structure", - "required": [ - "StreamName", - "ShardToMerge", - "AdjacentShardToMerge" - ], - "members": { - "StreamName": {}, - "ShardToMerge": {}, - "AdjacentShardToMerge": {} - } - } - }, - "PutRecord": { - "input": { - "type": "structure", - "required": [ - "StreamName", - "Data", - "PartitionKey" - ], - "members": { - "StreamName": {}, - "Data": { - "type": "blob" - }, - "PartitionKey": {}, - "ExplicitHashKey": {}, - "SequenceNumberForOrdering": {} - } - }, - "output": { - "type": "structure", - "required": [ - "ShardId", - "SequenceNumber" - ], - "members": { - "ShardId": {}, - "SequenceNumber": {}, - "EncryptionType": {} - } - } - }, - "PutRecords": { - "input": { - "type": "structure", - "required": [ - "Records", - "StreamName" - ], - "members": { - "Records": { - "type": "list", - "member": { - "type": "structure", - "required": [ - "Data", - "PartitionKey" - ], - "members": { - "Data": { - "type": "blob" - }, - "ExplicitHashKey": {}, - "PartitionKey": {} - } - } - }, - "StreamName": {} - } - }, - "output": { - "type": "structure", - "required": [ - "Records" - ], - "members": { - "FailedRecordCount": { - "type": "integer" - }, - "Records": { - "type": "list", - "member": { - "type": "structure", - "members": { - "SequenceNumber": {}, - "ShardId": {}, - "ErrorCode": {}, - "ErrorMessage": {} - } - } - }, - "EncryptionType": {} - } - } - }, - "RemoveTagsFromStream": { - "input": { - "type": "structure", - "required": [ - "StreamName", - "TagKeys" - ], - "members": { - "StreamName": {}, - "TagKeys": { - "type": "list", - "member": {} - } - } - } - }, - "SplitShard": { - "input": { - "type": "structure", - "required": [ - "StreamName", - "ShardToSplit", - "NewStartingHashKey" - ], - "members": { - "StreamName": {}, - "ShardToSplit": {}, - "NewStartingHashKey": {} - } - } - }, - "StartStreamEncryption": { - "input": { - "type": "structure", - "required": [ - "StreamName", - "EncryptionType", - "KeyId" - ], - "members": { - "StreamName": {}, - "EncryptionType": {}, - "KeyId": {} - } - } - }, - "StopStreamEncryption": { - "input": { - "type": "structure", - "required": [ - "StreamName", - "EncryptionType", - "KeyId" - ], - "members": { - "StreamName": {}, - "EncryptionType": {}, - "KeyId": {} - } - } - }, - "UpdateShardCount": { - "input": { - "type": "structure", - "required": [ - "StreamName", - "TargetShardCount", - "ScalingType" - ], - "members": { - "StreamName": {}, - "TargetShardCount": { - "type": "integer" - }, - "ScalingType": {} - } - }, - "output": { - "type": "structure", - "members": { - "StreamName": {}, - "CurrentShardCount": { - "type": "integer" - }, - "TargetShardCount": { - "type": "integer" - } - } - } - } - }, - "shapes": { - "Su": { - "type": "list", - "member": {} - }, - "Sz": { - "type": "structure", - "members": { - "StreamName": {}, - "CurrentShardLevelMetrics": { - "shape": "Su" - }, - "DesiredShardLevelMetrics": { - "shape": "Su" - } - } - } - } -} \ No newline at end of file diff --git a/workshops/monte-carlo-on-ec2-spot-fleet/src/web/node_modules/aws-sdk/apis/kinesis-2013-12-02.paginators.json b/workshops/monte-carlo-on-ec2-spot-fleet/src/web/node_modules/aws-sdk/apis/kinesis-2013-12-02.paginators.json deleted file mode 100644 index 118a5900..00000000 --- a/workshops/monte-carlo-on-ec2-spot-fleet/src/web/node_modules/aws-sdk/apis/kinesis-2013-12-02.paginators.json +++ /dev/null @@ -1,18 +0,0 @@ -{ - "pagination": { - "DescribeStream": { - "input_token": "ExclusiveStartShardId", - "limit_key": "Limit", - "more_results": "StreamDescription.HasMoreShards", - "output_token": "StreamDescription.Shards[-1].ShardId", - "result_key": "StreamDescription.Shards" - }, - "ListStreams": { - "input_token": "ExclusiveStartStreamName", - "limit_key": "Limit", - "more_results": "HasMoreStreams", - "output_token": "StreamNames[-1]", - "result_key": "StreamNames" - } - } -} \ No newline at end of file diff --git a/workshops/monte-carlo-on-ec2-spot-fleet/src/web/node_modules/aws-sdk/apis/kinesis-2013-12-02.waiters2.json b/workshops/monte-carlo-on-ec2-spot-fleet/src/web/node_modules/aws-sdk/apis/kinesis-2013-12-02.waiters2.json deleted file mode 100644 index d61efe43..00000000 --- a/workshops/monte-carlo-on-ec2-spot-fleet/src/web/node_modules/aws-sdk/apis/kinesis-2013-12-02.waiters2.json +++ /dev/null @@ -1,30 +0,0 @@ -{ - "version": 2, - "waiters": { - "StreamExists": { - "delay": 10, - "operation": "DescribeStream", - "maxAttempts": 18, - "acceptors": [ - { - "expected": "ACTIVE", - "matcher": "path", - "state": "success", - "argument": "StreamDescription.StreamStatus" - } - ] - }, - "StreamNotExists": { - "delay": 10, - "operation": "DescribeStream", - "maxAttempts": 18, - "acceptors": [ - { - "expected": "ResourceNotFoundException", - "matcher": "error", - "state": "success" - } - ] - } - } -} diff --git a/workshops/monte-carlo-on-ec2-spot-fleet/src/web/node_modules/aws-sdk/apis/kinesisanalytics-2015-08-14.examples.json b/workshops/monte-carlo-on-ec2-spot-fleet/src/web/node_modules/aws-sdk/apis/kinesisanalytics-2015-08-14.examples.json deleted file mode 100644 index 0ea7e3b0..00000000 --- a/workshops/monte-carlo-on-ec2-spot-fleet/src/web/node_modules/aws-sdk/apis/kinesisanalytics-2015-08-14.examples.json +++ /dev/null @@ -1,5 +0,0 @@ -{ - "version": "1.0", - "examples": { - } -} diff --git a/workshops/monte-carlo-on-ec2-spot-fleet/src/web/node_modules/aws-sdk/apis/kinesisanalytics-2015-08-14.min.json b/workshops/monte-carlo-on-ec2-spot-fleet/src/web/node_modules/aws-sdk/apis/kinesisanalytics-2015-08-14.min.json deleted file mode 100644 index 52111ea0..00000000 --- a/workshops/monte-carlo-on-ec2-spot-fleet/src/web/node_modules/aws-sdk/apis/kinesisanalytics-2015-08-14.min.json +++ /dev/null @@ -1,957 +0,0 @@ -{ - "version": "2.0", - "metadata": { - "apiVersion": "2015-08-14", - "endpointPrefix": "kinesisanalytics", - "jsonVersion": "1.1", - "protocol": "json", - "serviceAbbreviation": "Kinesis Analytics", - "serviceFullName": "Amazon Kinesis Analytics", - "signatureVersion": "v4", - "targetPrefix": "KinesisAnalytics_20150814", - "timestampFormat": "unixTimestamp", - "uid": "kinesisanalytics-2015-08-14" - }, - "operations": { - "AddApplicationCloudWatchLoggingOption": { - "input": { - "type": "structure", - "required": [ - "ApplicationName", - "CurrentApplicationVersionId", - "CloudWatchLoggingOption" - ], - "members": { - "ApplicationName": {}, - "CurrentApplicationVersionId": { - "type": "long" - }, - "CloudWatchLoggingOption": { - "shape": "S4" - } - } - }, - "output": { - "type": "structure", - "members": {} - } - }, - "AddApplicationInput": { - "input": { - "type": "structure", - "required": [ - "ApplicationName", - "CurrentApplicationVersionId", - "Input" - ], - "members": { - "ApplicationName": {}, - "CurrentApplicationVersionId": { - "type": "long" - }, - "Input": { - "shape": "S9" - } - } - }, - "output": { - "type": "structure", - "members": {} - } - }, - "AddApplicationInputProcessingConfiguration": { - "input": { - "type": "structure", - "required": [ - "ApplicationName", - "CurrentApplicationVersionId", - "InputId", - "InputProcessingConfiguration" - ], - "members": { - "ApplicationName": {}, - "CurrentApplicationVersionId": { - "type": "long" - }, - "InputId": {}, - "InputProcessingConfiguration": { - "shape": "Sb" - } - } - }, - "output": { - "type": "structure", - "members": {} - } - }, - "AddApplicationOutput": { - "input": { - "type": "structure", - "required": [ - "ApplicationName", - "CurrentApplicationVersionId", - "Output" - ], - "members": { - "ApplicationName": {}, - "CurrentApplicationVersionId": { - "type": "long" - }, - "Output": { - "shape": "S12" - } - } - }, - "output": { - "type": "structure", - "members": {} - } - }, - "AddApplicationReferenceDataSource": { - "input": { - "type": "structure", - "required": [ - "ApplicationName", - "CurrentApplicationVersionId", - "ReferenceDataSource" - ], - "members": { - "ApplicationName": {}, - "CurrentApplicationVersionId": { - "type": "long" - }, - "ReferenceDataSource": { - "type": "structure", - "required": [ - "TableName", - "ReferenceSchema" - ], - "members": { - "TableName": {}, - "S3ReferenceDataSource": { - "type": "structure", - "required": [ - "BucketARN", - "FileKey", - "ReferenceRoleARN" - ], - "members": { - "BucketARN": {}, - "FileKey": {}, - "ReferenceRoleARN": {} - } - }, - "ReferenceSchema": { - "shape": "Si" - } - } - } - } - }, - "output": { - "type": "structure", - "members": {} - } - }, - "CreateApplication": { - "input": { - "type": "structure", - "required": [ - "ApplicationName" - ], - "members": { - "ApplicationName": {}, - "ApplicationDescription": {}, - "Inputs": { - "type": "list", - "member": { - "shape": "S9" - } - }, - "Outputs": { - "type": "list", - "member": { - "shape": "S12" - } - }, - "CloudWatchLoggingOptions": { - "type": "list", - "member": { - "shape": "S4" - } - }, - "ApplicationCode": {} - } - }, - "output": { - "type": "structure", - "required": [ - "ApplicationSummary" - ], - "members": { - "ApplicationSummary": { - "shape": "S1l" - } - } - } - }, - "DeleteApplication": { - "input": { - "type": "structure", - "required": [ - "ApplicationName", - "CreateTimestamp" - ], - "members": { - "ApplicationName": {}, - "CreateTimestamp": { - "type": "timestamp" - } - } - }, - "output": { - "type": "structure", - "members": {} - } - }, - "DeleteApplicationCloudWatchLoggingOption": { - "input": { - "type": "structure", - "required": [ - "ApplicationName", - "CurrentApplicationVersionId", - "CloudWatchLoggingOptionId" - ], - "members": { - "ApplicationName": {}, - "CurrentApplicationVersionId": { - "type": "long" - }, - "CloudWatchLoggingOptionId": {} - } - }, - "output": { - "type": "structure", - "members": {} - } - }, - "DeleteApplicationInputProcessingConfiguration": { - "input": { - "type": "structure", - "required": [ - "ApplicationName", - "CurrentApplicationVersionId", - "InputId" - ], - "members": { - "ApplicationName": {}, - "CurrentApplicationVersionId": { - "type": "long" - }, - "InputId": {} - } - }, - "output": { - "type": "structure", - "members": {} - } - }, - "DeleteApplicationOutput": { - "input": { - "type": "structure", - "required": [ - "ApplicationName", - "CurrentApplicationVersionId", - "OutputId" - ], - "members": { - "ApplicationName": {}, - "CurrentApplicationVersionId": { - "type": "long" - }, - "OutputId": {} - } - }, - "output": { - "type": "structure", - "members": {} - } - }, - "DeleteApplicationReferenceDataSource": { - "input": { - "type": "structure", - "required": [ - "ApplicationName", - "CurrentApplicationVersionId", - "ReferenceId" - ], - "members": { - "ApplicationName": {}, - "CurrentApplicationVersionId": { - "type": "long" - }, - "ReferenceId": {} - } - }, - "output": { - "type": "structure", - "members": {} - } - }, - "DescribeApplication": { - "input": { - "type": "structure", - "required": [ - "ApplicationName" - ], - "members": { - "ApplicationName": {} - } - }, - "output": { - "type": "structure", - "required": [ - "ApplicationDetail" - ], - "members": { - "ApplicationDetail": { - "type": "structure", - "required": [ - "ApplicationName", - "ApplicationARN", - "ApplicationStatus", - "ApplicationVersionId" - ], - "members": { - "ApplicationName": {}, - "ApplicationDescription": {}, - "ApplicationARN": {}, - "ApplicationStatus": {}, - "CreateTimestamp": { - "type": "timestamp" - }, - "LastUpdateTimestamp": { - "type": "timestamp" - }, - "InputDescriptions": { - "type": "list", - "member": { - "type": "structure", - "members": { - "InputId": {}, - "NamePrefix": {}, - "InAppStreamNames": { - "type": "list", - "member": {} - }, - "InputProcessingConfigurationDescription": { - "type": "structure", - "members": { - "InputLambdaProcessorDescription": { - "type": "structure", - "members": { - "ResourceARN": {}, - "RoleARN": {} - } - } - } - }, - "KinesisStreamsInputDescription": { - "type": "structure", - "members": { - "ResourceARN": {}, - "RoleARN": {} - } - }, - "KinesisFirehoseInputDescription": { - "type": "structure", - "members": { - "ResourceARN": {}, - "RoleARN": {} - } - }, - "InputSchema": { - "shape": "Si" - }, - "InputParallelism": { - "shape": "Sg" - }, - "InputStartingPositionConfiguration": { - "shape": "S28" - } - } - } - }, - "OutputDescriptions": { - "type": "list", - "member": { - "type": "structure", - "members": { - "OutputId": {}, - "Name": {}, - "KinesisStreamsOutputDescription": { - "type": "structure", - "members": { - "ResourceARN": {}, - "RoleARN": {} - } - }, - "KinesisFirehoseOutputDescription": { - "type": "structure", - "members": { - "ResourceARN": {}, - "RoleARN": {} - } - }, - "DestinationSchema": { - "shape": "S15" - } - } - } - }, - "ReferenceDataSourceDescriptions": { - "type": "list", - "member": { - "type": "structure", - "required": [ - "ReferenceId", - "TableName", - "S3ReferenceDataSourceDescription" - ], - "members": { - "ReferenceId": {}, - "TableName": {}, - "S3ReferenceDataSourceDescription": { - "type": "structure", - "required": [ - "BucketARN", - "FileKey", - "ReferenceRoleARN" - ], - "members": { - "BucketARN": {}, - "FileKey": {}, - "ReferenceRoleARN": {} - } - }, - "ReferenceSchema": { - "shape": "Si" - } - } - } - }, - "CloudWatchLoggingOptionDescriptions": { - "type": "list", - "member": { - "type": "structure", - "required": [ - "LogStreamARN", - "RoleARN" - ], - "members": { - "CloudWatchLoggingOptionId": {}, - "LogStreamARN": {}, - "RoleARN": {} - } - } - }, - "ApplicationCode": {}, - "ApplicationVersionId": { - "type": "long" - } - } - } - } - } - }, - "DiscoverInputSchema": { - "input": { - "type": "structure", - "members": { - "ResourceARN": {}, - "RoleARN": {}, - "InputStartingPositionConfiguration": { - "shape": "S28" - }, - "S3Configuration": { - "type": "structure", - "required": [ - "RoleARN", - "BucketARN", - "FileKey" - ], - "members": { - "RoleARN": {}, - "BucketARN": {}, - "FileKey": {} - } - }, - "InputProcessingConfiguration": { - "shape": "Sb" - } - } - }, - "output": { - "type": "structure", - "members": { - "InputSchema": { - "shape": "Si" - }, - "ParsedInputRecords": { - "type": "list", - "member": { - "type": "list", - "member": {} - } - }, - "ProcessedInputRecords": { - "type": "list", - "member": {} - }, - "RawInputRecords": { - "type": "list", - "member": {} - } - } - } - }, - "ListApplications": { - "input": { - "type": "structure", - "members": { - "Limit": { - "type": "integer" - }, - "ExclusiveStartApplicationName": {} - } - }, - "output": { - "type": "structure", - "required": [ - "ApplicationSummaries", - "HasMoreApplications" - ], - "members": { - "ApplicationSummaries": { - "type": "list", - "member": { - "shape": "S1l" - } - }, - "HasMoreApplications": { - "type": "boolean" - } - } - } - }, - "StartApplication": { - "input": { - "type": "structure", - "required": [ - "ApplicationName", - "InputConfigurations" - ], - "members": { - "ApplicationName": {}, - "InputConfigurations": { - "type": "list", - "member": { - "type": "structure", - "required": [ - "Id", - "InputStartingPositionConfiguration" - ], - "members": { - "Id": {}, - "InputStartingPositionConfiguration": { - "shape": "S28" - } - } - } - } - } - }, - "output": { - "type": "structure", - "members": {} - } - }, - "StopApplication": { - "input": { - "type": "structure", - "required": [ - "ApplicationName" - ], - "members": { - "ApplicationName": {} - } - }, - "output": { - "type": "structure", - "members": {} - } - }, - "UpdateApplication": { - "input": { - "type": "structure", - "required": [ - "ApplicationName", - "CurrentApplicationVersionId", - "ApplicationUpdate" - ], - "members": { - "ApplicationName": {}, - "CurrentApplicationVersionId": { - "type": "long" - }, - "ApplicationUpdate": { - "type": "structure", - "members": { - "InputUpdates": { - "type": "list", - "member": { - "type": "structure", - "required": [ - "InputId" - ], - "members": { - "InputId": {}, - "NamePrefixUpdate": {}, - "InputProcessingConfigurationUpdate": { - "type": "structure", - "required": [ - "InputLambdaProcessorUpdate" - ], - "members": { - "InputLambdaProcessorUpdate": { - "type": "structure", - "members": { - "ResourceARNUpdate": {}, - "RoleARNUpdate": {} - } - } - } - }, - "KinesisStreamsInputUpdate": { - "type": "structure", - "members": { - "ResourceARNUpdate": {}, - "RoleARNUpdate": {} - } - }, - "KinesisFirehoseInputUpdate": { - "type": "structure", - "members": { - "ResourceARNUpdate": {}, - "RoleARNUpdate": {} - } - }, - "InputSchemaUpdate": { - "type": "structure", - "members": { - "RecordFormatUpdate": { - "shape": "Sj" - }, - "RecordEncodingUpdate": {}, - "RecordColumnUpdates": { - "shape": "Ss" - } - } - }, - "InputParallelismUpdate": { - "type": "structure", - "members": { - "CountUpdate": { - "type": "integer" - } - } - } - } - } - }, - "ApplicationCodeUpdate": {}, - "OutputUpdates": { - "type": "list", - "member": { - "type": "structure", - "required": [ - "OutputId" - ], - "members": { - "OutputId": {}, - "NameUpdate": {}, - "KinesisStreamsOutputUpdate": { - "type": "structure", - "members": { - "ResourceARNUpdate": {}, - "RoleARNUpdate": {} - } - }, - "KinesisFirehoseOutputUpdate": { - "type": "structure", - "members": { - "ResourceARNUpdate": {}, - "RoleARNUpdate": {} - } - }, - "DestinationSchemaUpdate": { - "shape": "S15" - } - } - } - }, - "ReferenceDataSourceUpdates": { - "type": "list", - "member": { - "type": "structure", - "required": [ - "ReferenceId" - ], - "members": { - "ReferenceId": {}, - "TableNameUpdate": {}, - "S3ReferenceDataSourceUpdate": { - "type": "structure", - "members": { - "BucketARNUpdate": {}, - "FileKeyUpdate": {}, - "ReferenceRoleARNUpdate": {} - } - }, - "ReferenceSchemaUpdate": { - "shape": "Si" - } - } - } - }, - "CloudWatchLoggingOptionUpdates": { - "type": "list", - "member": { - "type": "structure", - "required": [ - "CloudWatchLoggingOptionId" - ], - "members": { - "CloudWatchLoggingOptionId": {}, - "LogStreamARNUpdate": {}, - "RoleARNUpdate": {} - } - } - } - } - } - } - }, - "output": { - "type": "structure", - "members": {} - } - } - }, - "shapes": { - "S4": { - "type": "structure", - "required": [ - "LogStreamARN", - "RoleARN" - ], - "members": { - "LogStreamARN": {}, - "RoleARN": {} - } - }, - "S9": { - "type": "structure", - "required": [ - "NamePrefix", - "InputSchema" - ], - "members": { - "NamePrefix": {}, - "InputProcessingConfiguration": { - "shape": "Sb" - }, - "KinesisStreamsInput": { - "type": "structure", - "required": [ - "ResourceARN", - "RoleARN" - ], - "members": { - "ResourceARN": {}, - "RoleARN": {} - } - }, - "KinesisFirehoseInput": { - "type": "structure", - "required": [ - "ResourceARN", - "RoleARN" - ], - "members": { - "ResourceARN": {}, - "RoleARN": {} - } - }, - "InputParallelism": { - "shape": "Sg" - }, - "InputSchema": { - "shape": "Si" - } - } - }, - "Sb": { - "type": "structure", - "required": [ - "InputLambdaProcessor" - ], - "members": { - "InputLambdaProcessor": { - "type": "structure", - "required": [ - "ResourceARN", - "RoleARN" - ], - "members": { - "ResourceARN": {}, - "RoleARN": {} - } - } - } - }, - "Sg": { - "type": "structure", - "members": { - "Count": { - "type": "integer" - } - } - }, - "Si": { - "type": "structure", - "required": [ - "RecordFormat", - "RecordColumns" - ], - "members": { - "RecordFormat": { - "shape": "Sj" - }, - "RecordEncoding": {}, - "RecordColumns": { - "shape": "Ss" - } - } - }, - "Sj": { - "type": "structure", - "required": [ - "RecordFormatType" - ], - "members": { - "RecordFormatType": {}, - "MappingParameters": { - "type": "structure", - "members": { - "JSONMappingParameters": { - "type": "structure", - "required": [ - "RecordRowPath" - ], - "members": { - "RecordRowPath": {} - } - }, - "CSVMappingParameters": { - "type": "structure", - "required": [ - "RecordRowDelimiter", - "RecordColumnDelimiter" - ], - "members": { - "RecordRowDelimiter": {}, - "RecordColumnDelimiter": {} - } - } - } - } - } - }, - "Ss": { - "type": "list", - "member": { - "type": "structure", - "required": [ - "Name", - "SqlType" - ], - "members": { - "Name": {}, - "Mapping": {}, - "SqlType": {} - } - } - }, - "S12": { - "type": "structure", - "required": [ - "Name", - "DestinationSchema" - ], - "members": { - "Name": {}, - "KinesisStreamsOutput": { - "type": "structure", - "required": [ - "ResourceARN", - "RoleARN" - ], - "members": { - "ResourceARN": {}, - "RoleARN": {} - } - }, - "KinesisFirehoseOutput": { - "type": "structure", - "required": [ - "ResourceARN", - "RoleARN" - ], - "members": { - "ResourceARN": {}, - "RoleARN": {} - } - }, - "DestinationSchema": { - "shape": "S15" - } - } - }, - "S15": { - "type": "structure", - "members": { - "RecordFormatType": {} - } - }, - "S1l": { - "type": "structure", - "required": [ - "ApplicationName", - "ApplicationARN", - "ApplicationStatus" - ], - "members": { - "ApplicationName": {}, - "ApplicationARN": {}, - "ApplicationStatus": {} - } - }, - "S28": { - "type": "structure", - "members": { - "InputStartingPosition": {} - } - } - } -} \ No newline at end of file diff --git a/workshops/monte-carlo-on-ec2-spot-fleet/src/web/node_modules/aws-sdk/apis/kinesisanalytics-2015-08-14.paginators.json b/workshops/monte-carlo-on-ec2-spot-fleet/src/web/node_modules/aws-sdk/apis/kinesisanalytics-2015-08-14.paginators.json deleted file mode 100644 index 5677bd8e..00000000 --- a/workshops/monte-carlo-on-ec2-spot-fleet/src/web/node_modules/aws-sdk/apis/kinesisanalytics-2015-08-14.paginators.json +++ /dev/null @@ -1,4 +0,0 @@ -{ - "pagination": { - } -} diff --git a/workshops/monte-carlo-on-ec2-spot-fleet/src/web/node_modules/aws-sdk/apis/kms-2014-11-01.examples.json b/workshops/monte-carlo-on-ec2-spot-fleet/src/web/node_modules/aws-sdk/apis/kms-2014-11-01.examples.json deleted file mode 100644 index 39ffbeec..00000000 --- a/workshops/monte-carlo-on-ec2-spot-fleet/src/web/node_modules/aws-sdk/apis/kms-2014-11-01.examples.json +++ /dev/null @@ -1,904 +0,0 @@ -{ - "version": "1.0", - "examples": { - "CancelKeyDeletion": [ - { - "input": { - "KeyId": "1234abcd-12ab-34cd-56ef-1234567890ab" - }, - "output": { - "KeyId": "arn:aws:kms:us-east-2:111122223333:key/1234abcd-12ab-34cd-56ef-1234567890ab" - }, - "comments": { - "input": { - "KeyId": "The identifier of the CMK whose deletion you are canceling. You can use the key ID or the Amazon Resource Name (ARN) of the CMK." - }, - "output": { - "KeyId": "The ARN of the CMK whose deletion you canceled." - } - }, - "description": "The following example cancels deletion of the specified CMK.", - "id": "to-cancel-deletion-of-a-cmk-1477428535102", - "title": "To cancel deletion of a customer master key (CMK)" - } - ], - "CreateAlias": [ - { - "input": { - "AliasName": "alias/ExampleAlias", - "TargetKeyId": "1234abcd-12ab-34cd-56ef-1234567890ab" - }, - "comments": { - "input": { - "AliasName": "The alias to create. Aliases must begin with 'alias/'. Do not use aliases that begin with 'alias/aws' because they are reserved for use by AWS.", - "TargetKeyId": "The identifier of the CMK whose alias you are creating. You can use the key ID or the Amazon Resource Name (ARN) of the CMK." - } - }, - "description": "The following example creates an alias for the specified customer master key (CMK).", - "id": "to-create-an-alias-1477505685119", - "title": "To create an alias" - } - ], - "CreateGrant": [ - { - "input": { - "GranteePrincipal": "arn:aws:iam::111122223333:role/ExampleRole", - "KeyId": "arn:aws:kms:us-east-2:444455556666:key/1234abcd-12ab-34cd-56ef-1234567890ab", - "Operations": [ - "Encrypt", - "Decrypt" - ] - }, - "output": { - "GrantId": "0c237476b39f8bc44e45212e08498fbe3151305030726c0590dd8d3e9f3d6a60", - "GrantToken": "AQpAM2RhZTk1MGMyNTk2ZmZmMzEyYWVhOWViN2I1MWM4Mzc0MWFiYjc0ZDE1ODkyNGFlNTIzODZhMzgyZjBlNGY3NiKIAgEBAgB4Pa6VDCWW__MSrqnre1HIN0Grt00ViSSuUjhqOC8OT3YAAADfMIHcBgkqhkiG9w0BBwaggc4wgcsCAQAwgcUGCSqGSIb3DQEHATAeBglghkgBZQMEAS4wEQQMmqLyBTAegIn9XlK5AgEQgIGXZQjkBcl1dykDdqZBUQ6L1OfUivQy7JVYO2-ZJP7m6f1g8GzV47HX5phdtONAP7K_HQIflcgpkoCqd_fUnE114mSmiagWkbQ5sqAVV3ov-VeqgrvMe5ZFEWLMSluvBAqdjHEdMIkHMlhlj4ENZbzBfo9Wxk8b8SnwP4kc4gGivedzFXo-dwN8fxjjq_ZZ9JFOj2ijIbj5FyogDCN0drOfi8RORSEuCEmPvjFRMFAwcmwFkN2NPp89amA" - }, - "comments": { - "input": { - "GranteePrincipal": "The identity that is given permission to perform the operations specified in the grant.", - "KeyId": "The identifier of the CMK to which the grant applies. You can use the key ID or the Amazon Resource Name (ARN) of the CMK.", - "Operations": "A list of operations that the grant allows." - }, - "output": { - "GrantId": "The unique identifier of the grant.", - "GrantToken": "The grant token." - } - }, - "description": "The following example creates a grant that allows the specified IAM role to encrypt data with the specified customer master key (CMK).", - "id": "to-create-a-grant-1477972226782", - "title": "To create a grant" - } - ], - "CreateKey": [ - { - "input": { - "Tags": [ - { - "TagKey": "CreatedBy", - "TagValue": "ExampleUser" - } - ] - }, - "output": { - "KeyMetadata": { - "AWSAccountId": "111122223333", - "Arn": "arn:aws:kms:us-east-2:111122223333:key/1234abcd-12ab-34cd-56ef-1234567890ab", - "CreationDate": "2017-01-09T12:00:07-08:00", - "Description": "", - "Enabled": true, - "KeyId": "1234abcd-12ab-34cd-56ef-1234567890ab", - "KeyState": "Enabled", - "KeyUsage": "ENCRYPT_DECRYPT", - "Origin": "AWS_KMS" - } - }, - "comments": { - "input": { - "Tags": "One or more tags. Each tag consists of a tag key and a tag value." - }, - "output": { - "KeyMetadata": "An object that contains information about the CMK created by this operation." - } - }, - "description": "The following example creates a CMK.", - "id": "to-create-a-cmk-1478028992966", - "title": "To create a customer master key (CMK)" - } - ], - "Decrypt": [ - { - "input": { - "CiphertextBlob": "" - }, - "output": { - "KeyId": "arn:aws:kms:us-west-2:111122223333:key/1234abcd-12ab-34cd-56ef-1234567890ab", - "Plaintext": "" - }, - "comments": { - "input": { - "CiphertextBlob": "The encrypted data (ciphertext)." - }, - "output": { - "KeyId": "The Amazon Resource Name (ARN) of the CMK that was used to decrypt the data.", - "Plaintext": "The decrypted (plaintext) data." - } - }, - "description": "The following example decrypts data that was encrypted with a customer master key (CMK) in AWS KMS.", - "id": "to-decrypt-data-1478281622886", - "title": "To decrypt data" - } - ], - "DeleteAlias": [ - { - "input": { - "AliasName": "alias/ExampleAlias" - }, - "comments": { - "input": { - "AliasName": "The alias to delete." - } - }, - "description": "The following example deletes the specified alias.", - "id": "to-delete-an-alias-1478285209338", - "title": "To delete an alias" - } - ], - "DeleteImportedKeyMaterial": [ - { - "input": { - "KeyId": "1234abcd-12ab-34cd-56ef-1234567890ab" - }, - "comments": { - "input": { - "KeyId": "The identifier of the CMK whose imported key material you are deleting. You can use the key ID or the Amazon Resource Name (ARN) of the CMK." - } - }, - "description": "The following example deletes the imported key material from the specified customer master key (CMK).", - "id": "to-delete-imported-key-material-1478561674507", - "title": "To delete imported key material" - } - ], - "DescribeKey": [ - { - "input": { - "KeyId": "1234abcd-12ab-34cd-56ef-1234567890ab" - }, - "output": { - "KeyMetadata": { - "AWSAccountId": "111122223333", - "Arn": "arn:aws:kms:us-west-2:111122223333:key/1234abcd-12ab-34cd-56ef-1234567890ab", - "CreationDate": "2015-10-12T11:45:07-07:00", - "Description": "", - "Enabled": true, - "KeyId": "1234abcd-12ab-34cd-56ef-1234567890ab", - "KeyState": "Enabled", - "KeyUsage": "ENCRYPT_DECRYPT", - "Origin": "AWS_KMS" - } - }, - "comments": { - "input": { - "KeyId": "The identifier of the CMK that you want information about. You can use the key ID or the Amazon Resource Name (ARN) of the CMK." - }, - "output": { - "KeyMetadata": "An object that contains information about the specified CMK." - } - }, - "description": "The following example returns information (metadata) about the specified CMK.", - "id": "to-obtain-information-about-a-cmk-1478565820907", - "title": "To obtain information about a customer master key (CMK)" - } - ], - "DisableKey": [ - { - "input": { - "KeyId": "1234abcd-12ab-34cd-56ef-1234567890ab" - }, - "comments": { - "input": { - "KeyId": "The identifier of the CMK to disable. You can use the key ID or the Amazon Resource Name (ARN) of the CMK." - } - }, - "description": "The following example disables the specified CMK.", - "id": "to-disable-a-cmk-1478566583659", - "title": "To disable a customer master key (CMK)" - } - ], - "DisableKeyRotation": [ - { - "input": { - "KeyId": "1234abcd-12ab-34cd-56ef-1234567890ab" - }, - "comments": { - "input": { - "KeyId": "The identifier of the CMK whose key material will no longer be rotated. You can use the key ID or the Amazon Resource Name (ARN) of the CMK." - } - }, - "description": "The following example disables automatic annual rotation of the key material for the specified CMK.", - "id": "to-disable-automatic-rotation-of-key-material-1478624396092", - "title": "To disable automatic rotation of key material" - } - ], - "EnableKey": [ - { - "input": { - "KeyId": "1234abcd-12ab-34cd-56ef-1234567890ab" - }, - "comments": { - "input": { - "KeyId": "The identifier of the CMK to enable. You can use the key ID or the Amazon Resource Name (ARN) of the CMK." - } - }, - "description": "The following example enables the specified CMK.", - "id": "to-enable-a-cmk-1478627501129", - "title": "To enable a customer master key (CMK)" - } - ], - "EnableKeyRotation": [ - { - "input": { - "KeyId": "1234abcd-12ab-34cd-56ef-1234567890ab" - }, - "comments": { - "input": { - "KeyId": "The identifier of the CMK whose key material will be rotated annually. You can use the key ID or the Amazon Resource Name (ARN) of the CMK." - } - }, - "description": "The following example enables automatic annual rotation of the key material for the specified CMK.", - "id": "to-enable-automatic-rotation-of-key-material-1478629109677", - "title": "To enable automatic rotation of key material" - } - ], - "Encrypt": [ - { - "input": { - "KeyId": "1234abcd-12ab-34cd-56ef-1234567890ab", - "Plaintext": "" - }, - "output": { - "CiphertextBlob": "", - "KeyId": "arn:aws:kms:us-west-2:111122223333:key/1234abcd-12ab-34cd-56ef-1234567890ab" - }, - "comments": { - "input": { - "KeyId": "The identifier of the CMK to use for encryption. You can use the key ID or Amazon Resource Name (ARN) of the CMK, or the name or ARN of an alias that refers to the CMK.", - "Plaintext": "The data to encrypt." - }, - "output": { - "CiphertextBlob": "The encrypted data (ciphertext).", - "KeyId": "The ARN of the CMK that was used to encrypt the data." - } - }, - "description": "The following example encrypts data with the specified customer master key (CMK).", - "id": "to-encrypt-data-1478906026012", - "title": "To encrypt data" - } - ], - "GenerateDataKey": [ - { - "input": { - "KeyId": "alias/ExampleAlias", - "KeySpec": "AES_256" - }, - "output": { - "CiphertextBlob": "", - "KeyId": "arn:aws:kms:us-east-2:111122223333:key/1234abcd-12ab-34cd-56ef-1234567890ab", - "Plaintext": "" - }, - "comments": { - "input": { - "KeyId": "The identifier of the CMK to use to encrypt the data key. You can use the key ID or Amazon Resource Name (ARN) of the CMK, or the name or ARN of an alias that refers to the CMK.", - "KeySpec": "Specifies the type of data key to return." - }, - "output": { - "CiphertextBlob": "The encrypted data key.", - "KeyId": "The ARN of the CMK that was used to encrypt the data key.", - "Plaintext": "The unencrypted (plaintext) data key." - } - }, - "description": "The following example generates a 256-bit symmetric data encryption key (data key) in two formats. One is the unencrypted (plainext) data key, and the other is the data key encrypted with the specified customer master key (CMK).", - "id": "to-generate-a-data-key-1478912956062", - "title": "To generate a data key" - } - ], - "GenerateDataKeyWithoutPlaintext": [ - { - "input": { - "KeyId": "alias/ExampleAlias", - "KeySpec": "AES_256" - }, - "output": { - "CiphertextBlob": "", - "KeyId": "arn:aws:kms:us-east-2:111122223333:key/1234abcd-12ab-34cd-56ef-1234567890ab" - }, - "comments": { - "input": { - "KeyId": "The identifier of the CMK to use to encrypt the data key. You can use the key ID or Amazon Resource Name (ARN) of the CMK, or the name or ARN of an alias that refers to the CMK.", - "KeySpec": "Specifies the type of data key to return." - }, - "output": { - "CiphertextBlob": "The encrypted data key.", - "KeyId": "The ARN of the CMK that was used to encrypt the data key." - } - }, - "description": "The following example generates an encrypted copy of a 256-bit symmetric data encryption key (data key). The data key is encrypted with the specified customer master key (CMK).", - "id": "to-generate-an-encrypted-data-key-1478914121134", - "title": "To generate an encrypted data key" - } - ], - "GenerateRandom": [ - { - "input": { - "NumberOfBytes": 32 - }, - "output": { - "Plaintext": "" - }, - "comments": { - "input": { - "NumberOfBytes": "The length of the random data, specified in number of bytes." - }, - "output": { - "Plaintext": "The random data." - } - }, - "description": "The following example uses AWS KMS to generate 32 bytes of random data.", - "id": "to-generate-random-data-1479163645600", - "title": "To generate random data" - } - ], - "GetKeyPolicy": [ - { - "input": { - "KeyId": "1234abcd-12ab-34cd-56ef-1234567890ab", - "PolicyName": "default" - }, - "output": { - "Policy": "{\n \"Version\" : \"2012-10-17\",\n \"Id\" : \"key-default-1\",\n \"Statement\" : [ {\n \"Sid\" : \"Enable IAM User Permissions\",\n \"Effect\" : \"Allow\",\n \"Principal\" : {\n \"AWS\" : \"arn:aws:iam::111122223333:root\"\n },\n \"Action\" : \"kms:*\",\n \"Resource\" : \"*\"\n } ]\n}" - }, - "comments": { - "input": { - "KeyId": "The identifier of the CMK whose key policy you want to retrieve. You can use the key ID or the Amazon Resource Name (ARN) of the CMK.", - "PolicyName": "The name of the key policy to retrieve." - }, - "output": { - "Policy": "The key policy document." - } - }, - "description": "The following example retrieves the key policy for the specified customer master key (CMK).", - "id": "to-retrieve-a-key-policy-1479170128325", - "title": "To retrieve a key policy" - } - ], - "GetKeyRotationStatus": [ - { - "input": { - "KeyId": "1234abcd-12ab-34cd-56ef-1234567890ab" - }, - "output": { - "KeyRotationEnabled": true - }, - "comments": { - "input": { - "KeyId": "The identifier of the CMK whose key material rotation status you want to retrieve. You can use the key ID or the Amazon Resource Name (ARN) of the CMK." - }, - "output": { - "KeyRotationEnabled": "A boolean that indicates the key material rotation status. Returns true when automatic annual rotation of the key material is enabled, or false when it is not." - } - }, - "description": "The following example retrieves the status of automatic annual rotation of the key material for the specified CMK.", - "id": "to-retrieve-the-rotation-status-for-a-cmk-1479172287408", - "title": "To retrieve the rotation status for a customer master key (CMK)" - } - ], - "GetParametersForImport": [ - { - "input": { - "KeyId": "1234abcd-12ab-34cd-56ef-1234567890ab", - "WrappingAlgorithm": "RSAES_OAEP_SHA_1", - "WrappingKeySpec": "RSA_2048" - }, - "output": { - "ImportToken": "", - "KeyId": "arn:aws:kms:us-east-2:111122223333:key/1234abcd-12ab-34cd-56ef-1234567890ab", - "ParametersValidTo": "2016-12-01T14:52:17-08:00", - "PublicKey": "" - }, - "comments": { - "input": { - "KeyId": "The identifier of the CMK for which to retrieve the public key and import token. You can use the key ID or the Amazon Resource Name (ARN) of the CMK.", - "WrappingAlgorithm": "The algorithm that you will use to encrypt the key material before importing it.", - "WrappingKeySpec": "The type of wrapping key (public key) to return in the response." - }, - "output": { - "ImportToken": "The import token to send with a subsequent ImportKeyMaterial request.", - "KeyId": "The ARN of the CMK for which you are retrieving the public key and import token. This is the same CMK specified in the request.", - "ParametersValidTo": "The time at which the import token and public key are no longer valid.", - "PublicKey": "The public key to use to encrypt the key material before importing it." - } - }, - "description": "The following example retrieves the public key and import token for the specified CMK.", - "id": "to-retrieve-the-public-key-and-import-token-for-a-cmk-1480626483211", - "title": "To retrieve the public key and import token for a customer master key (CMK)" - } - ], - "ImportKeyMaterial": [ - { - "input": { - "EncryptedKeyMaterial": "", - "ExpirationModel": "KEY_MATERIAL_DOES_NOT_EXPIRE", - "ImportToken": "", - "KeyId": "1234abcd-12ab-34cd-56ef-1234567890ab" - }, - "comments": { - "input": { - "EncryptedKeyMaterial": "The encrypted key material to import.", - "ExpirationModel": "A value that specifies whether the key material expires.", - "ImportToken": "The import token that you received in the response to a previous GetParametersForImport request.", - "KeyId": "The identifier of the CMK to import the key material into. You can use the key ID or the Amazon Resource Name (ARN) of the CMK." - } - }, - "description": "The following example imports key material into the specified CMK.", - "id": "to-import-key-material-into-a-cmk-1480630551969", - "title": "To import key material into a customer master key (CMK)" - } - ], - "ListAliases": [ - { - "output": { - "Aliases": [ - { - "AliasArn": "arn:aws:kms:us-east-2:111122223333:alias/aws/acm", - "AliasName": "alias/aws/acm", - "TargetKeyId": "da03f6f7-d279-427a-9cae-de48d07e5b66" - }, - { - "AliasArn": "arn:aws:kms:us-east-2:111122223333:alias/aws/ebs", - "AliasName": "alias/aws/ebs", - "TargetKeyId": "25a217e7-7170-4b8c-8bf6-045ea5f70e5b" - }, - { - "AliasArn": "arn:aws:kms:us-east-2:111122223333:alias/aws/rds", - "AliasName": "alias/aws/rds", - "TargetKeyId": "7ec3104e-c3f2-4b5c-bf42-bfc4772c6685" - }, - { - "AliasArn": "arn:aws:kms:us-east-2:111122223333:alias/aws/redshift", - "AliasName": "alias/aws/redshift", - "TargetKeyId": "08f7a25a-69e2-4fb5-8f10-393db27326fa" - }, - { - "AliasArn": "arn:aws:kms:us-east-2:111122223333:alias/aws/s3", - "AliasName": "alias/aws/s3", - "TargetKeyId": "d2b0f1a3-580d-4f79-b836-bc983be8cfa5" - }, - { - "AliasArn": "arn:aws:kms:us-east-2:111122223333:alias/example1", - "AliasName": "alias/example1", - "TargetKeyId": "4da1e216-62d0-46c5-a7c0-5f3a3d2f8046" - }, - { - "AliasArn": "arn:aws:kms:us-east-2:111122223333:alias/example2", - "AliasName": "alias/example2", - "TargetKeyId": "f32fef59-2cc2-445b-8573-2d73328acbee" - }, - { - "AliasArn": "arn:aws:kms:us-east-2:111122223333:alias/example3", - "AliasName": "alias/example3", - "TargetKeyId": "1374ef38-d34e-4d5f-b2c9-4e0daee38855" - } - ], - "Truncated": false - }, - "comments": { - "output": { - "Aliases": "A list of aliases, including the key ID of the customer master key (CMK) that each alias refers to.", - "Truncated": "A boolean that indicates whether there are more items in the list. Returns true when there are more items, or false when there are not." - } - }, - "description": "The following example lists aliases.", - "id": "to-list-aliases-1480729693349", - "title": "To list aliases" - } - ], - "ListGrants": [ - { - "input": { - "KeyId": "1234abcd-12ab-34cd-56ef-1234567890ab" - }, - "output": { - "Grants": [ - { - "CreationDate": "2016-10-25T14:37:41-07:00", - "GrantId": "91ad875e49b04a9d1f3bdeb84d821f9db6ea95e1098813f6d47f0c65fbe2a172", - "GranteePrincipal": "acm.us-east-2.amazonaws.com", - "IssuingAccount": "arn:aws:iam::111122223333:root", - "KeyId": "arn:aws:kms:us-east-2:111122223333:key/1234abcd-12ab-34cd-56ef-1234567890ab", - "Operations": [ - "Encrypt", - "ReEncryptFrom", - "ReEncryptTo" - ], - "RetiringPrincipal": "acm.us-east-2.amazonaws.com" - }, - { - "CreationDate": "2016-10-25T14:37:41-07:00", - "GrantId": "a5d67d3e207a8fc1f4928749ee3e52eb0440493a8b9cf05bbfad91655b056200", - "GranteePrincipal": "acm.us-east-2.amazonaws.com", - "IssuingAccount": "arn:aws:iam::111122223333:root", - "KeyId": "arn:aws:kms:us-east-2:111122223333:key/1234abcd-12ab-34cd-56ef-1234567890ab", - "Operations": [ - "ReEncryptFrom", - "ReEncryptTo" - ], - "RetiringPrincipal": "acm.us-east-2.amazonaws.com" - }, - { - "CreationDate": "2016-10-25T14:37:41-07:00", - "GrantId": "c541aaf05d90cb78846a73b346fc43e65be28b7163129488c738e0c9e0628f4f", - "GranteePrincipal": "acm.us-east-2.amazonaws.com", - "IssuingAccount": "arn:aws:iam::111122223333:root", - "KeyId": "arn:aws:kms:us-east-2:111122223333:key/1234abcd-12ab-34cd-56ef-1234567890ab", - "Operations": [ - "Encrypt", - "ReEncryptFrom", - "ReEncryptTo" - ], - "RetiringPrincipal": "acm.us-east-2.amazonaws.com" - }, - { - "CreationDate": "2016-10-25T14:37:41-07:00", - "GrantId": "dd2052c67b4c76ee45caf1dc6a1e2d24e8dc744a51b36ae2f067dc540ce0105c", - "GranteePrincipal": "acm.us-east-2.amazonaws.com", - "IssuingAccount": "arn:aws:iam::111122223333:root", - "KeyId": "arn:aws:kms:us-east-2:111122223333:key/1234abcd-12ab-34cd-56ef-1234567890ab", - "Operations": [ - "Encrypt", - "ReEncryptFrom", - "ReEncryptTo" - ], - "RetiringPrincipal": "acm.us-east-2.amazonaws.com" - } - ], - "Truncated": true - }, - "comments": { - "input": { - "KeyId": "The identifier of the CMK whose grants you want to list. You can use the key ID or the Amazon Resource Name (ARN) of the CMK." - }, - "output": { - "Grants": "A list of grants.", - "Truncated": "A boolean that indicates whether there are more items in the list. Returns true when there are more items, or false when there are not." - } - }, - "description": "The following example lists grants for the specified CMK.", - "id": "to-list-grants-for-a-cmk-1481067365389", - "title": "To list grants for a customer master key (CMK)" - } - ], - "ListKeyPolicies": [ - { - "input": { - "KeyId": "1234abcd-12ab-34cd-56ef-1234567890ab" - }, - "output": { - "PolicyNames": [ - "default" - ], - "Truncated": false - }, - "comments": { - "input": { - "KeyId": "The identifier of the CMK whose key policies you want to list. You can use the key ID or the Amazon Resource Name (ARN) of the CMK." - }, - "output": { - "PolicyNames": "A list of key policy names.", - "Truncated": "A boolean that indicates whether there are more items in the list. Returns true when there are more items, or false when there are not." - } - }, - "description": "The following example lists key policies for the specified CMK.", - "id": "to-list-key-policies-for-a-cmk-1481069780998", - "title": "To list key policies for a customer master key (CMK)" - } - ], - "ListKeys": [ - { - "output": { - "Keys": [ - { - "KeyArn": "arn:aws:kms:us-east-2:111122223333:key/0d990263-018e-4e65-a703-eff731de951e", - "KeyId": "0d990263-018e-4e65-a703-eff731de951e" - }, - { - "KeyArn": "arn:aws:kms:us-east-2:111122223333:key/144be297-0ae1-44ac-9c8f-93cd8c82f841", - "KeyId": "144be297-0ae1-44ac-9c8f-93cd8c82f841" - }, - { - "KeyArn": "arn:aws:kms:us-east-2:111122223333:key/21184251-b765-428e-b852-2c7353e72571", - "KeyId": "21184251-b765-428e-b852-2c7353e72571" - }, - { - "KeyArn": "arn:aws:kms:us-east-2:111122223333:key/214fe92f-5b03-4ae1-b350-db2a45dbe10c", - "KeyId": "214fe92f-5b03-4ae1-b350-db2a45dbe10c" - }, - { - "KeyArn": "arn:aws:kms:us-east-2:111122223333:key/339963f2-e523-49d3-af24-a0fe752aa458", - "KeyId": "339963f2-e523-49d3-af24-a0fe752aa458" - }, - { - "KeyArn": "arn:aws:kms:us-east-2:111122223333:key/b776a44b-df37-4438-9be4-a27494e4271a", - "KeyId": "b776a44b-df37-4438-9be4-a27494e4271a" - }, - { - "KeyArn": "arn:aws:kms:us-east-2:111122223333:key/deaf6c9e-cf2c-46a6-bf6d-0b6d487cffbb", - "KeyId": "deaf6c9e-cf2c-46a6-bf6d-0b6d487cffbb" - } - ], - "Truncated": false - }, - "comments": { - "output": { - "Keys": "A list of CMKs, including the key ID and Amazon Resource Name (ARN) of each one.", - "Truncated": "A boolean that indicates whether there are more items in the list. Returns true when there are more items, or false when there are not." - } - }, - "description": "The following example lists CMKs.", - "id": "to-list-cmks-1481071643069", - "title": "To list customer master keys (CMKs)" - } - ], - "ListResourceTags": [ - { - "input": { - "KeyId": "1234abcd-12ab-34cd-56ef-1234567890ab" - }, - "output": { - "Tags": [ - { - "TagKey": "CostCenter", - "TagValue": "87654" - }, - { - "TagKey": "CreatedBy", - "TagValue": "ExampleUser" - }, - { - "TagKey": "Purpose", - "TagValue": "Test" - } - ], - "Truncated": false - }, - "comments": { - "input": { - "KeyId": "The identifier of the CMK whose tags you are listing. You can use the key ID or the Amazon Resource Name (ARN) of the CMK." - }, - "output": { - "Tags": "A list of tags.", - "Truncated": "A boolean that indicates whether there are more items in the list. Returns true when there are more items, or false when there are not." - } - }, - "description": "The following example lists tags for a CMK.", - "id": "to-list-tags-for-a-cmk-1483996855796", - "title": "To list tags for a customer master key (CMK)" - } - ], - "ListRetirableGrants": [ - { - "input": { - "RetiringPrincipal": "arn:aws:iam::111122223333:role/ExampleRole" - }, - "output": { - "Grants": [ - { - "CreationDate": "2016-12-07T11:09:35-08:00", - "GrantId": "0c237476b39f8bc44e45212e08498fbe3151305030726c0590dd8d3e9f3d6a60", - "GranteePrincipal": "arn:aws:iam::111122223333:role/ExampleRole", - "IssuingAccount": "arn:aws:iam::444455556666:root", - "KeyId": "arn:aws:kms:us-east-2:444455556666:key/1234abcd-12ab-34cd-56ef-1234567890ab", - "Operations": [ - "Decrypt", - "Encrypt" - ], - "RetiringPrincipal": "arn:aws:iam::111122223333:role/ExampleRole" - } - ], - "Truncated": false - }, - "comments": { - "input": { - "RetiringPrincipal": "The retiring principal whose grants you want to list. Use the Amazon Resource Name (ARN) of an AWS principal such as an AWS account (root), IAM user, federated user, or assumed role user." - }, - "output": { - "Grants": "A list of grants that the specified principal can retire.", - "Truncated": "A boolean that indicates whether there are more items in the list. Returns true when there are more items, or false when there are not." - } - }, - "description": "The following example lists the grants that the specified principal (identity) can retire.", - "id": "to-list-grants-that-the-specified-principal-can-retire-1481140499620", - "title": "To list grants that the specified principal can retire" - } - ], - "PutKeyPolicy": [ - { - "input": { - "KeyId": "1234abcd-12ab-34cd-56ef-1234567890ab", - "Policy": "{\n \"Version\": \"2012-10-17\",\n \"Id\": \"custom-policy-2016-12-07\",\n \"Statement\": [\n {\n \"Sid\": \"Enable IAM User Permissions\",\n \"Effect\": \"Allow\",\n \"Principal\": {\n \"AWS\": \"arn:aws:iam::111122223333:root\"\n },\n \"Action\": \"kms:*\",\n \"Resource\": \"*\"\n },\n {\n \"Sid\": \"Allow access for Key Administrators\",\n \"Effect\": \"Allow\",\n \"Principal\": {\n \"AWS\": [\n \"arn:aws:iam::111122223333:user/ExampleAdminUser\",\n \"arn:aws:iam::111122223333:role/ExampleAdminRole\"\n ]\n },\n \"Action\": [\n \"kms:Create*\",\n \"kms:Describe*\",\n \"kms:Enable*\",\n \"kms:List*\",\n \"kms:Put*\",\n \"kms:Update*\",\n \"kms:Revoke*\",\n \"kms:Disable*\",\n \"kms:Get*\",\n \"kms:Delete*\",\n \"kms:ScheduleKeyDeletion\",\n \"kms:CancelKeyDeletion\"\n ],\n \"Resource\": \"*\"\n },\n {\n \"Sid\": \"Allow use of the key\",\n \"Effect\": \"Allow\",\n \"Principal\": {\n \"AWS\": \"arn:aws:iam::111122223333:role/ExamplePowerUserRole\"\n },\n \"Action\": [\n \"kms:Encrypt\",\n \"kms:Decrypt\",\n \"kms:ReEncrypt*\",\n \"kms:GenerateDataKey*\",\n \"kms:DescribeKey\"\n ],\n \"Resource\": \"*\"\n },\n {\n \"Sid\": \"Allow attachment of persistent resources\",\n \"Effect\": \"Allow\",\n \"Principal\": {\n \"AWS\": \"arn:aws:iam::111122223333:role/ExamplePowerUserRole\"\n },\n \"Action\": [\n \"kms:CreateGrant\",\n \"kms:ListGrants\",\n \"kms:RevokeGrant\"\n ],\n \"Resource\": \"*\",\n \"Condition\": {\n \"Bool\": {\n \"kms:GrantIsForAWSResource\": \"true\"\n }\n }\n }\n ]\n}\n", - "PolicyName": "default" - }, - "comments": { - "input": { - "KeyId": "The identifier of the CMK to attach the key policy to. You can use the key ID or the Amazon Resource Name (ARN) of the CMK.", - "Policy": "The key policy document.", - "PolicyName": "The name of the key policy." - } - }, - "description": "The following example attaches a key policy to the specified CMK.", - "id": "to-attach-a-key-policy-to-a-cmk-1481147345018", - "title": "To attach a key policy to a customer master key (CMK)" - } - ], - "ReEncrypt": [ - { - "input": { - "CiphertextBlob": "", - "DestinationKeyId": "0987dcba-09fe-87dc-65ba-ab0987654321" - }, - "output": { - "CiphertextBlob": "", - "KeyId": "arn:aws:kms:us-east-2:111122223333:key/0987dcba-09fe-87dc-65ba-ab0987654321", - "SourceKeyId": "arn:aws:kms:us-east-2:111122223333:key/1234abcd-12ab-34cd-56ef-1234567890ab" - }, - "comments": { - "input": { - "CiphertextBlob": "The data to reencrypt.", - "DestinationKeyId": "The identifier of the CMK to use to reencrypt the data. You can use the key ID or Amazon Resource Name (ARN) of the CMK, or the name or ARN of an alias that refers to the CMK." - }, - "output": { - "CiphertextBlob": "The reencrypted data.", - "KeyId": "The ARN of the CMK that was used to reencrypt the data.", - "SourceKeyId": "The ARN of the CMK that was used to originally encrypt the data." - } - }, - "description": "The following example reencrypts data with the specified CMK.", - "id": "to-reencrypt-data-1481230358001", - "title": "To reencrypt data" - } - ], - "RetireGrant": [ - { - "input": { - "GrantId": "0c237476b39f8bc44e45212e08498fbe3151305030726c0590dd8d3e9f3d6a60", - "KeyId": "arn:aws:kms:us-east-2:444455556666:key/1234abcd-12ab-34cd-56ef-1234567890ab" - }, - "comments": { - "input": { - "GrantId": "The identifier of the grant to retire.", - "KeyId": "The Amazon Resource Name (ARN) of the customer master key (CMK) associated with the grant." - } - }, - "description": "The following example retires a grant.", - "id": "to-retire-a-grant-1481327028297", - "title": "To retire a grant" - } - ], - "RevokeGrant": [ - { - "input": { - "GrantId": "0c237476b39f8bc44e45212e08498fbe3151305030726c0590dd8d3e9f3d6a60", - "KeyId": "1234abcd-12ab-34cd-56ef-1234567890ab" - }, - "comments": { - "input": { - "GrantId": "The identifier of the grant to revoke.", - "KeyId": "The identifier of the customer master key (CMK) associated with the grant. You can use the key ID or the Amazon Resource Name (ARN) of the CMK." - } - }, - "description": "The following example revokes a grant.", - "id": "to-revoke-a-grant-1481329549302", - "title": "To revoke a grant" - } - ], - "ScheduleKeyDeletion": [ - { - "input": { - "KeyId": "1234abcd-12ab-34cd-56ef-1234567890ab", - "PendingWindowInDays": 7 - }, - "output": { - "DeletionDate": "2016-12-17T16:00:00-08:00", - "KeyId": "arn:aws:kms:us-east-2:111122223333:key/1234abcd-12ab-34cd-56ef-1234567890ab" - }, - "comments": { - "input": { - "KeyId": "The identifier of the CMK to schedule for deletion. You can use the key ID or the Amazon Resource Name (ARN) of the CMK.", - "PendingWindowInDays": "The waiting period, specified in number of days. After the waiting period ends, AWS KMS deletes the CMK." - }, - "output": { - "DeletionDate": "The date and time after which AWS KMS deletes the CMK.", - "KeyId": "The ARN of the CMK that is scheduled for deletion." - } - }, - "description": "The following example schedules the specified CMK for deletion.", - "id": "to-schedule-a-cmk-for-deletion-1481331111094", - "title": "To schedule a customer master key (CMK) for deletion" - } - ], - "TagResource": [ - { - "input": { - "KeyId": "1234abcd-12ab-34cd-56ef-1234567890ab", - "Tags": [ - { - "TagKey": "Purpose", - "TagValue": "Test" - } - ] - }, - "comments": { - "input": { - "KeyId": "The identifier of the CMK you are tagging. You can use the key ID or the Amazon Resource Name (ARN) of the CMK.", - "Tags": "A list of tags." - } - }, - "description": "The following example tags a CMK.", - "id": "to-tag-a-cmk-1483997246518", - "title": "To tag a customer master key (CMK)" - } - ], - "UntagResource": [ - { - "input": { - "KeyId": "1234abcd-12ab-34cd-56ef-1234567890ab", - "TagKeys": [ - "Purpose", - "CostCenter" - ] - }, - "comments": { - "input": { - "KeyId": "The identifier of the CMK whose tags you are removing.", - "TagKeys": "A list of tag keys. Provide only the tag keys, not the tag values." - } - }, - "description": "The following example removes tags from a CMK.", - "id": "to-remove-tags-from-a-cmk-1483997590962", - "title": "To remove tags from a customer master key (CMK)" - } - ], - "UpdateAlias": [ - { - "input": { - "AliasName": "alias/ExampleAlias", - "TargetKeyId": "1234abcd-12ab-34cd-56ef-1234567890ab" - }, - "comments": { - "input": { - "AliasName": "The alias to update.", - "TargetKeyId": "The identifier of the CMK that the alias will refer to after this operation succeeds. You can use the key ID or the Amazon Resource Name (ARN) of the CMK." - } - }, - "description": "The following example updates the specified alias to refer to the specified customer master key (CMK).", - "id": "to-update-an-alias-1481572726920", - "title": "To update an alias" - } - ], - "UpdateKeyDescription": [ - { - "input": { - "Description": "Example description that indicates the intended use of this CMK.", - "KeyId": "1234abcd-12ab-34cd-56ef-1234567890ab" - }, - "comments": { - "input": { - "Description": "The updated description.", - "KeyId": "The identifier of the CMK whose description you are updating. You can use the key ID or the Amazon Resource Name (ARN) of the CMK." - } - }, - "description": "The following example updates the description of the specified CMK.", - "id": "to-update-the-description-of-a-cmk-1481574808619", - "title": "To update the description of a customer master key (CMK)" - } - ] - } -} diff --git a/workshops/monte-carlo-on-ec2-spot-fleet/src/web/node_modules/aws-sdk/apis/kms-2014-11-01.min.json b/workshops/monte-carlo-on-ec2-spot-fleet/src/web/node_modules/aws-sdk/apis/kms-2014-11-01.min.json deleted file mode 100644 index fd2f5972..00000000 --- a/workshops/monte-carlo-on-ec2-spot-fleet/src/web/node_modules/aws-sdk/apis/kms-2014-11-01.min.json +++ /dev/null @@ -1,836 +0,0 @@ -{ - "version": "2.0", - "metadata": { - "apiVersion": "2014-11-01", - "endpointPrefix": "kms", - "jsonVersion": "1.1", - "protocol": "json", - "serviceAbbreviation": "KMS", - "serviceFullName": "AWS Key Management Service", - "signatureVersion": "v4", - "targetPrefix": "TrentService", - "uid": "kms-2014-11-01" - }, - "operations": { - "CancelKeyDeletion": { - "input": { - "type": "structure", - "required": [ - "KeyId" - ], - "members": { - "KeyId": {} - } - }, - "output": { - "type": "structure", - "members": { - "KeyId": {} - } - } - }, - "CreateAlias": { - "input": { - "type": "structure", - "required": [ - "AliasName", - "TargetKeyId" - ], - "members": { - "AliasName": {}, - "TargetKeyId": {} - } - } - }, - "CreateGrant": { - "input": { - "type": "structure", - "required": [ - "KeyId", - "GranteePrincipal" - ], - "members": { - "KeyId": {}, - "GranteePrincipal": {}, - "RetiringPrincipal": {}, - "Operations": { - "shape": "S8" - }, - "Constraints": { - "shape": "Sa" - }, - "GrantTokens": { - "shape": "Se" - }, - "Name": {} - } - }, - "output": { - "type": "structure", - "members": { - "GrantToken": {}, - "GrantId": {} - } - } - }, - "CreateKey": { - "input": { - "type": "structure", - "members": { - "Policy": {}, - "Description": {}, - "KeyUsage": {}, - "Origin": {}, - "BypassPolicyLockoutSafetyCheck": { - "type": "boolean" - }, - "Tags": { - "shape": "Sp" - } - } - }, - "output": { - "type": "structure", - "members": { - "KeyMetadata": { - "shape": "Su" - } - } - } - }, - "Decrypt": { - "input": { - "type": "structure", - "required": [ - "CiphertextBlob" - ], - "members": { - "CiphertextBlob": { - "type": "blob" - }, - "EncryptionContext": { - "shape": "Sb" - }, - "GrantTokens": { - "shape": "Se" - } - } - }, - "output": { - "type": "structure", - "members": { - "KeyId": {}, - "Plaintext": { - "shape": "S14" - } - } - } - }, - "DeleteAlias": { - "input": { - "type": "structure", - "required": [ - "AliasName" - ], - "members": { - "AliasName": {} - } - } - }, - "DeleteImportedKeyMaterial": { - "input": { - "type": "structure", - "required": [ - "KeyId" - ], - "members": { - "KeyId": {} - } - } - }, - "DescribeKey": { - "input": { - "type": "structure", - "required": [ - "KeyId" - ], - "members": { - "KeyId": {}, - "GrantTokens": { - "shape": "Se" - } - } - }, - "output": { - "type": "structure", - "members": { - "KeyMetadata": { - "shape": "Su" - } - } - } - }, - "DisableKey": { - "input": { - "type": "structure", - "required": [ - "KeyId" - ], - "members": { - "KeyId": {} - } - } - }, - "DisableKeyRotation": { - "input": { - "type": "structure", - "required": [ - "KeyId" - ], - "members": { - "KeyId": {} - } - } - }, - "EnableKey": { - "input": { - "type": "structure", - "required": [ - "KeyId" - ], - "members": { - "KeyId": {} - } - } - }, - "EnableKeyRotation": { - "input": { - "type": "structure", - "required": [ - "KeyId" - ], - "members": { - "KeyId": {} - } - } - }, - "Encrypt": { - "input": { - "type": "structure", - "required": [ - "KeyId", - "Plaintext" - ], - "members": { - "KeyId": {}, - "Plaintext": { - "shape": "S14" - }, - "EncryptionContext": { - "shape": "Sb" - }, - "GrantTokens": { - "shape": "Se" - } - } - }, - "output": { - "type": "structure", - "members": { - "CiphertextBlob": { - "type": "blob" - }, - "KeyId": {} - } - } - }, - "GenerateDataKey": { - "input": { - "type": "structure", - "required": [ - "KeyId" - ], - "members": { - "KeyId": {}, - "EncryptionContext": { - "shape": "Sb" - }, - "NumberOfBytes": { - "type": "integer" - }, - "KeySpec": {}, - "GrantTokens": { - "shape": "Se" - } - } - }, - "output": { - "type": "structure", - "members": { - "CiphertextBlob": { - "type": "blob" - }, - "Plaintext": { - "shape": "S14" - }, - "KeyId": {} - } - } - }, - "GenerateDataKeyWithoutPlaintext": { - "input": { - "type": "structure", - "required": [ - "KeyId" - ], - "members": { - "KeyId": {}, - "EncryptionContext": { - "shape": "Sb" - }, - "KeySpec": {}, - "NumberOfBytes": { - "type": "integer" - }, - "GrantTokens": { - "shape": "Se" - } - } - }, - "output": { - "type": "structure", - "members": { - "CiphertextBlob": { - "type": "blob" - }, - "KeyId": {} - } - } - }, - "GenerateRandom": { - "input": { - "type": "structure", - "members": { - "NumberOfBytes": { - "type": "integer" - } - } - }, - "output": { - "type": "structure", - "members": { - "Plaintext": { - "shape": "S14" - } - } - } - }, - "GetKeyPolicy": { - "input": { - "type": "structure", - "required": [ - "KeyId", - "PolicyName" - ], - "members": { - "KeyId": {}, - "PolicyName": {} - } - }, - "output": { - "type": "structure", - "members": { - "Policy": {} - } - } - }, - "GetKeyRotationStatus": { - "input": { - "type": "structure", - "required": [ - "KeyId" - ], - "members": { - "KeyId": {} - } - }, - "output": { - "type": "structure", - "members": { - "KeyRotationEnabled": { - "type": "boolean" - } - } - } - }, - "GetParametersForImport": { - "input": { - "type": "structure", - "required": [ - "KeyId", - "WrappingAlgorithm", - "WrappingKeySpec" - ], - "members": { - "KeyId": {}, - "WrappingAlgorithm": {}, - "WrappingKeySpec": {} - } - }, - "output": { - "type": "structure", - "members": { - "KeyId": {}, - "ImportToken": { - "type": "blob" - }, - "PublicKey": { - "shape": "S14" - }, - "ParametersValidTo": { - "type": "timestamp" - } - } - } - }, - "ImportKeyMaterial": { - "input": { - "type": "structure", - "required": [ - "KeyId", - "ImportToken", - "EncryptedKeyMaterial" - ], - "members": { - "KeyId": {}, - "ImportToken": { - "type": "blob" - }, - "EncryptedKeyMaterial": { - "type": "blob" - }, - "ValidTo": { - "type": "timestamp" - }, - "ExpirationModel": {} - } - }, - "output": { - "type": "structure", - "members": {} - } - }, - "ListAliases": { - "input": { - "type": "structure", - "members": { - "Limit": { - "type": "integer" - }, - "Marker": {} - } - }, - "output": { - "type": "structure", - "members": { - "Aliases": { - "type": "list", - "member": { - "type": "structure", - "members": { - "AliasName": {}, - "AliasArn": {}, - "TargetKeyId": {} - } - } - }, - "NextMarker": {}, - "Truncated": { - "type": "boolean" - } - } - } - }, - "ListGrants": { - "input": { - "type": "structure", - "required": [ - "KeyId" - ], - "members": { - "Limit": { - "type": "integer" - }, - "Marker": {}, - "KeyId": {} - } - }, - "output": { - "shape": "S25" - } - }, - "ListKeyPolicies": { - "input": { - "type": "structure", - "required": [ - "KeyId" - ], - "members": { - "KeyId": {}, - "Limit": { - "type": "integer" - }, - "Marker": {} - } - }, - "output": { - "type": "structure", - "members": { - "PolicyNames": { - "type": "list", - "member": {} - }, - "NextMarker": {}, - "Truncated": { - "type": "boolean" - } - } - } - }, - "ListKeys": { - "input": { - "type": "structure", - "members": { - "Limit": { - "type": "integer" - }, - "Marker": {} - } - }, - "output": { - "type": "structure", - "members": { - "Keys": { - "type": "list", - "member": { - "type": "structure", - "members": { - "KeyId": {}, - "KeyArn": {} - } - } - }, - "NextMarker": {}, - "Truncated": { - "type": "boolean" - } - } - } - }, - "ListResourceTags": { - "input": { - "type": "structure", - "required": [ - "KeyId" - ], - "members": { - "KeyId": {}, - "Limit": { - "type": "integer" - }, - "Marker": {} - } - }, - "output": { - "type": "structure", - "members": { - "Tags": { - "shape": "Sp" - }, - "NextMarker": {}, - "Truncated": { - "type": "boolean" - } - } - } - }, - "ListRetirableGrants": { - "input": { - "type": "structure", - "required": [ - "RetiringPrincipal" - ], - "members": { - "Limit": { - "type": "integer" - }, - "Marker": {}, - "RetiringPrincipal": {} - } - }, - "output": { - "shape": "S25" - } - }, - "PutKeyPolicy": { - "input": { - "type": "structure", - "required": [ - "KeyId", - "PolicyName", - "Policy" - ], - "members": { - "KeyId": {}, - "PolicyName": {}, - "Policy": {}, - "BypassPolicyLockoutSafetyCheck": { - "type": "boolean" - } - } - } - }, - "ReEncrypt": { - "input": { - "type": "structure", - "required": [ - "CiphertextBlob", - "DestinationKeyId" - ], - "members": { - "CiphertextBlob": { - "type": "blob" - }, - "SourceEncryptionContext": { - "shape": "Sb" - }, - "DestinationKeyId": {}, - "DestinationEncryptionContext": { - "shape": "Sb" - }, - "GrantTokens": { - "shape": "Se" - } - } - }, - "output": { - "type": "structure", - "members": { - "CiphertextBlob": { - "type": "blob" - }, - "SourceKeyId": {}, - "KeyId": {} - } - } - }, - "RetireGrant": { - "input": { - "type": "structure", - "members": { - "GrantToken": {}, - "KeyId": {}, - "GrantId": {} - } - } - }, - "RevokeGrant": { - "input": { - "type": "structure", - "required": [ - "KeyId", - "GrantId" - ], - "members": { - "KeyId": {}, - "GrantId": {} - } - } - }, - "ScheduleKeyDeletion": { - "input": { - "type": "structure", - "required": [ - "KeyId" - ], - "members": { - "KeyId": {}, - "PendingWindowInDays": { - "type": "integer" - } - } - }, - "output": { - "type": "structure", - "members": { - "KeyId": {}, - "DeletionDate": { - "type": "timestamp" - } - } - } - }, - "TagResource": { - "input": { - "type": "structure", - "required": [ - "KeyId", - "Tags" - ], - "members": { - "KeyId": {}, - "Tags": { - "shape": "Sp" - } - } - } - }, - "UntagResource": { - "input": { - "type": "structure", - "required": [ - "KeyId", - "TagKeys" - ], - "members": { - "KeyId": {}, - "TagKeys": { - "type": "list", - "member": {} - } - } - } - }, - "UpdateAlias": { - "input": { - "type": "structure", - "required": [ - "AliasName", - "TargetKeyId" - ], - "members": { - "AliasName": {}, - "TargetKeyId": {} - } - } - }, - "UpdateKeyDescription": { - "input": { - "type": "structure", - "required": [ - "KeyId", - "Description" - ], - "members": { - "KeyId": {}, - "Description": {} - } - } - } - }, - "shapes": { - "S8": { - "type": "list", - "member": {} - }, - "Sa": { - "type": "structure", - "members": { - "EncryptionContextSubset": { - "shape": "Sb" - }, - "EncryptionContextEquals": { - "shape": "Sb" - } - } - }, - "Sb": { - "type": "map", - "key": {}, - "value": {} - }, - "Se": { - "type": "list", - "member": {} - }, - "Sp": { - "type": "list", - "member": { - "type": "structure", - "required": [ - "TagKey", - "TagValue" - ], - "members": { - "TagKey": {}, - "TagValue": {} - } - } - }, - "Su": { - "type": "structure", - "required": [ - "KeyId" - ], - "members": { - "AWSAccountId": {}, - "KeyId": {}, - "Arn": {}, - "CreationDate": { - "type": "timestamp" - }, - "Enabled": { - "type": "boolean" - }, - "Description": {}, - "KeyUsage": {}, - "KeyState": {}, - "DeletionDate": { - "type": "timestamp" - }, - "ValidTo": { - "type": "timestamp" - }, - "Origin": {}, - "ExpirationModel": {}, - "KeyManager": {} - } - }, - "S14": { - "type": "blob", - "sensitive": true - }, - "S25": { - "type": "structure", - "members": { - "Grants": { - "type": "list", - "member": { - "type": "structure", - "members": { - "KeyId": {}, - "GrantId": {}, - "Name": {}, - "CreationDate": { - "type": "timestamp" - }, - "GranteePrincipal": {}, - "RetiringPrincipal": {}, - "IssuingAccount": {}, - "Operations": { - "shape": "S8" - }, - "Constraints": { - "shape": "Sa" - } - } - } - }, - "NextMarker": {}, - "Truncated": { - "type": "boolean" - } - } - } - } -} \ No newline at end of file diff --git a/workshops/monte-carlo-on-ec2-spot-fleet/src/web/node_modules/aws-sdk/apis/kms-2014-11-01.paginators.json b/workshops/monte-carlo-on-ec2-spot-fleet/src/web/node_modules/aws-sdk/apis/kms-2014-11-01.paginators.json deleted file mode 100644 index 6b5be67f..00000000 --- a/workshops/monte-carlo-on-ec2-spot-fleet/src/web/node_modules/aws-sdk/apis/kms-2014-11-01.paginators.json +++ /dev/null @@ -1,32 +0,0 @@ -{ - "pagination": { - "ListAliases": { - "input_token": "Marker", - "limit_key": "Limit", - "more_results": "Truncated", - "output_token": "NextMarker", - "result_key": "Aliases" - }, - "ListGrants": { - "input_token": "Marker", - "limit_key": "Limit", - "more_results": "Truncated", - "output_token": "NextMarker", - "result_key": "Grants" - }, - "ListKeyPolicies": { - "input_token": "Marker", - "limit_key": "Limit", - "more_results": "Truncated", - "output_token": "NextMarker", - "result_key": "PolicyNames" - }, - "ListKeys": { - "input_token": "Marker", - "limit_key": "Limit", - "more_results": "Truncated", - "output_token": "NextMarker", - "result_key": "Keys" - } - } -} \ No newline at end of file diff --git a/workshops/monte-carlo-on-ec2-spot-fleet/src/web/node_modules/aws-sdk/apis/lambda-2014-11-11.min.json b/workshops/monte-carlo-on-ec2-spot-fleet/src/web/node_modules/aws-sdk/apis/lambda-2014-11-11.min.json deleted file mode 100644 index fc006a8b..00000000 --- a/workshops/monte-carlo-on-ec2-spot-fleet/src/web/node_modules/aws-sdk/apis/lambda-2014-11-11.min.json +++ /dev/null @@ -1,423 +0,0 @@ -{ - "metadata": { - "apiVersion": "2014-11-11", - "endpointPrefix": "lambda", - "serviceFullName": "AWS Lambda", - "signatureVersion": "v4", - "protocol": "rest-json" - }, - "operations": { - "AddEventSource": { - "http": { - "requestUri": "/2014-11-13/event-source-mappings/" - }, - "input": { - "type": "structure", - "required": [ - "EventSource", - "FunctionName", - "Role" - ], - "members": { - "EventSource": {}, - "FunctionName": {}, - "Role": {}, - "BatchSize": { - "type": "integer" - }, - "Parameters": { - "shape": "S6" - } - } - }, - "output": { - "shape": "S7" - } - }, - "DeleteFunction": { - "http": { - "method": "DELETE", - "requestUri": "/2014-11-13/functions/{FunctionName}", - "responseCode": 204 - }, - "input": { - "type": "structure", - "required": [ - "FunctionName" - ], - "members": { - "FunctionName": { - "location": "uri", - "locationName": "FunctionName" - } - } - } - }, - "GetEventSource": { - "http": { - "method": "GET", - "requestUri": "/2014-11-13/event-source-mappings/{UUID}", - "responseCode": 200 - }, - "input": { - "type": "structure", - "required": [ - "UUID" - ], - "members": { - "UUID": { - "location": "uri", - "locationName": "UUID" - } - } - }, - "output": { - "shape": "S7" - } - }, - "GetFunction": { - "http": { - "method": "GET", - "requestUri": "/2014-11-13/functions/{FunctionName}", - "responseCode": 200 - }, - "input": { - "type": "structure", - "required": [ - "FunctionName" - ], - "members": { - "FunctionName": { - "location": "uri", - "locationName": "FunctionName" - } - } - }, - "output": { - "type": "structure", - "members": { - "Configuration": { - "shape": "Se" - }, - "Code": { - "type": "structure", - "members": { - "RepositoryType": {}, - "Location": {} - } - } - } - } - }, - "GetFunctionConfiguration": { - "http": { - "method": "GET", - "requestUri": "/2014-11-13/functions/{FunctionName}/configuration", - "responseCode": 200 - }, - "input": { - "type": "structure", - "required": [ - "FunctionName" - ], - "members": { - "FunctionName": { - "location": "uri", - "locationName": "FunctionName" - } - } - }, - "output": { - "shape": "Se" - } - }, - "InvokeAsync": { - "http": { - "requestUri": "/2014-11-13/functions/{FunctionName}/invoke-async/", - "responseCode": 202 - }, - "input": { - "type": "structure", - "required": [ - "FunctionName", - "InvokeArgs" - ], - "members": { - "FunctionName": { - "location": "uri", - "locationName": "FunctionName" - }, - "InvokeArgs": { - "shape": "Sq" - } - }, - "payload": "InvokeArgs" - }, - "output": { - "type": "structure", - "members": { - "Status": { - "location": "statusCode", - "type": "integer" - } - } - } - }, - "ListEventSources": { - "http": { - "method": "GET", - "requestUri": "/2014-11-13/event-source-mappings/", - "responseCode": 200 - }, - "input": { - "type": "structure", - "members": { - "EventSourceArn": { - "location": "querystring", - "locationName": "EventSource" - }, - "FunctionName": { - "location": "querystring", - "locationName": "FunctionName" - }, - "Marker": { - "location": "querystring", - "locationName": "Marker" - }, - "MaxItems": { - "location": "querystring", - "locationName": "MaxItems", - "type": "integer" - } - } - }, - "output": { - "type": "structure", - "members": { - "NextMarker": {}, - "EventSources": { - "type": "list", - "member": { - "shape": "S7" - } - } - } - } - }, - "ListFunctions": { - "http": { - "method": "GET", - "requestUri": "/2014-11-13/functions/", - "responseCode": 200 - }, - "input": { - "type": "structure", - "members": { - "Marker": { - "location": "querystring", - "locationName": "Marker" - }, - "MaxItems": { - "location": "querystring", - "locationName": "MaxItems", - "type": "integer" - } - } - }, - "output": { - "type": "structure", - "members": { - "NextMarker": {}, - "Functions": { - "type": "list", - "member": { - "shape": "Se" - } - } - } - } - }, - "RemoveEventSource": { - "http": { - "method": "DELETE", - "requestUri": "/2014-11-13/event-source-mappings/{UUID}", - "responseCode": 204 - }, - "input": { - "type": "structure", - "required": [ - "UUID" - ], - "members": { - "UUID": { - "location": "uri", - "locationName": "UUID" - } - } - } - }, - "UpdateFunctionConfiguration": { - "http": { - "method": "PUT", - "requestUri": "/2014-11-13/functions/{FunctionName}/configuration", - "responseCode": 200 - }, - "input": { - "type": "structure", - "required": [ - "FunctionName" - ], - "members": { - "FunctionName": { - "location": "uri", - "locationName": "FunctionName" - }, - "Role": { - "location": "querystring", - "locationName": "Role" - }, - "Handler": { - "location": "querystring", - "locationName": "Handler" - }, - "Description": { - "location": "querystring", - "locationName": "Description" - }, - "Timeout": { - "location": "querystring", - "locationName": "Timeout", - "type": "integer" - }, - "MemorySize": { - "location": "querystring", - "locationName": "MemorySize", - "type": "integer" - } - } - }, - "output": { - "shape": "Se" - } - }, - "UploadFunction": { - "http": { - "method": "PUT", - "requestUri": "/2014-11-13/functions/{FunctionName}", - "responseCode": 201 - }, - "input": { - "type": "structure", - "required": [ - "FunctionName", - "FunctionZip", - "Runtime", - "Role", - "Handler", - "Mode" - ], - "members": { - "FunctionName": { - "location": "uri", - "locationName": "FunctionName" - }, - "FunctionZip": { - "shape": "Sq" - }, - "Runtime": { - "location": "querystring", - "locationName": "Runtime" - }, - "Role": { - "location": "querystring", - "locationName": "Role" - }, - "Handler": { - "location": "querystring", - "locationName": "Handler" - }, - "Mode": { - "location": "querystring", - "locationName": "Mode" - }, - "Description": { - "location": "querystring", - "locationName": "Description" - }, - "Timeout": { - "location": "querystring", - "locationName": "Timeout", - "type": "integer" - }, - "MemorySize": { - "location": "querystring", - "locationName": "MemorySize", - "type": "integer" - } - }, - "payload": "FunctionZip" - }, - "output": { - "shape": "Se" - } - } - }, - "shapes": { - "S6": { - "type": "map", - "key": {}, - "value": {} - }, - "S7": { - "type": "structure", - "members": { - "UUID": {}, - "BatchSize": { - "type": "integer" - }, - "EventSource": {}, - "FunctionName": {}, - "Parameters": { - "shape": "S6" - }, - "Role": {}, - "LastModified": { - "type": "timestamp" - }, - "IsActive": { - "type": "boolean" - }, - "Status": {} - } - }, - "Se": { - "type": "structure", - "members": { - "FunctionName": {}, - "FunctionARN": {}, - "ConfigurationId": {}, - "Runtime": {}, - "Role": {}, - "Handler": {}, - "Mode": {}, - "CodeSize": { - "type": "long" - }, - "Description": {}, - "Timeout": { - "type": "integer" - }, - "MemorySize": { - "type": "integer" - }, - "LastModified": { - "type": "timestamp" - } - } - }, - "Sq": { - "type": "blob", - "streaming": true - } - } -} \ No newline at end of file diff --git a/workshops/monte-carlo-on-ec2-spot-fleet/src/web/node_modules/aws-sdk/apis/lambda-2014-11-11.paginators.json b/workshops/monte-carlo-on-ec2-spot-fleet/src/web/node_modules/aws-sdk/apis/lambda-2014-11-11.paginators.json deleted file mode 100644 index deaf07d3..00000000 --- a/workshops/monte-carlo-on-ec2-spot-fleet/src/web/node_modules/aws-sdk/apis/lambda-2014-11-11.paginators.json +++ /dev/null @@ -1,16 +0,0 @@ -{ - "pagination": { - "ListEventSources": { - "input_token": "Marker", - "output_token": "NextMarker", - "limit_key": "MaxItems", - "result_key": "EventSources" - }, - "ListFunctions": { - "input_token": "Marker", - "output_token": "NextMarker", - "limit_key": "MaxItems", - "result_key": "Functions" - } - } -} diff --git a/workshops/monte-carlo-on-ec2-spot-fleet/src/web/node_modules/aws-sdk/apis/lambda-2015-03-31.examples.json b/workshops/monte-carlo-on-ec2-spot-fleet/src/web/node_modules/aws-sdk/apis/lambda-2015-03-31.examples.json deleted file mode 100644 index c5a45d3f..00000000 --- a/workshops/monte-carlo-on-ec2-spot-fleet/src/web/node_modules/aws-sdk/apis/lambda-2015-03-31.examples.json +++ /dev/null @@ -1,614 +0,0 @@ -{ - "version": "1.0", - "examples": { - "AddPermission": [ - { - "input": { - "Action": "lambda:InvokeFunction", - "FunctionName": "MyFunction", - "Principal": "s3.amazonaws.com", - "SourceAccount": "123456789012", - "SourceArn": "arn:aws:s3:::examplebucket/*", - "StatementId": "ID-1" - }, - "output": { - "Statement": "ID-1" - }, - "comments": { - "input": { - }, - "output": { - } - }, - "description": "This example adds a permission for an S3 bucket to invoke a Lambda function.", - "id": "add-permission-1474651469455", - "title": "add-permission" - } - ], - "CreateFunction": [ - { - "input": { - "Code": { - }, - "Description": "", - "FunctionName": "MyFunction", - "Handler": "souce_file.handler_name", - "MemorySize": 128, - "Publish": true, - "Role": "arn:aws:iam::123456789012:role/service-role/role-name", - "Runtime": "nodejs4.3", - "Timeout": 15, - "VpcConfig": { - } - }, - "output": { - "CodeSha256": "", - "CodeSize": 123, - "Description": "", - "FunctionArn": "arn:aws:lambda:us-west-2:123456789012:function:MyFunction", - "FunctionName": "MyFunction", - "Handler": "source_file.handler_name", - "LastModified": "2016-11-21T19:49:20.006+0000", - "MemorySize": 128, - "Role": "arn:aws:iam::123456789012:role/service-role/role-name", - "Runtime": "nodejs4.3", - "Timeout": 123, - "Version": "1", - "VpcConfig": { - } - }, - "comments": { - "input": { - "Handler": "is of the form of the name of your source file and then name of your function handler", - "Role": "replace with the actual arn of the execution role you created" - }, - "output": { - } - }, - "description": "This example creates a Lambda function.", - "id": "create-function-1474653449931", - "title": "create-function" - } - ], - "DeleteAlias": [ - { - "input": { - "FunctionName": "myFunction", - "Name": "alias" - }, - "comments": { - "input": { - }, - "output": { - } - }, - "description": "This operation deletes a Lambda function alias", - "id": "to-delete-a-lambda-function-alias-1481660370804", - "title": "To delete a Lambda function alias" - } - ], - "DeleteEventSourceMapping": [ - { - "input": { - "UUID": "12345kxodurf3443" - }, - "output": { - "BatchSize": 123, - "EventSourceArn": "arn:aws:s3:::examplebucket/*", - "FunctionArn": "arn:aws:lambda:us-west-2:123456789012:function:myFunction", - "LastModified": "2016-11-21T19:49:20.006+0000", - "LastProcessingResult": "", - "State": "", - "StateTransitionReason": "", - "UUID": "12345kxodurf3443" - }, - "comments": { - "input": { - }, - "output": { - } - }, - "description": "This operation deletes a Lambda function event source mapping", - "id": "to-delete-a-lambda-function-event-source-mapping-1481658973862", - "title": "To delete a Lambda function event source mapping" - } - ], - "DeleteFunction": [ - { - "input": { - "FunctionName": "myFunction", - "Qualifier": "1" - }, - "comments": { - "input": { - }, - "output": { - } - }, - "description": "This operation deletes a Lambda function", - "id": "to-delete-a-lambda-function-1481648553696", - "title": "To delete a Lambda function" - } - ], - "GetAccountSettings": [ - { - "input": { - }, - "output": { - "AccountLimit": { - }, - "AccountUsage": { - } - }, - "comments": { - "input": { - }, - "output": { - } - }, - "description": "This operation retrieves a Lambda customer's account settings", - "id": "to-retrieves-a-lambda-customers-account-settings-1481657495274", - "title": "To retrieves a Lambda customer's account settings" - } - ], - "GetAlias": [ - { - "input": { - "FunctionName": "myFunction", - "Name": "myFunctionAlias" - }, - "output": { - "AliasArn": "arn:aws:lambda:us-west-2:123456789012:function:myFunctionAlias", - "Description": "", - "FunctionVersion": "1", - "Name": "myFunctionAlias" - }, - "comments": { - "input": { - }, - "output": { - } - }, - "description": "This operation retrieves a Lambda function alias", - "id": "to-retrieve-a-lambda-function-alias-1481648742254", - "title": "To retrieve a Lambda function alias" - } - ], - "GetEventSourceMapping": [ - { - "input": { - "UUID": "123489-xxxxx-kdla8d89d7" - }, - "output": { - "BatchSize": 123, - "EventSourceArn": "arn:aws:iam::123456789012:eventsource", - "FunctionArn": "arn:aws:lambda:us-west-2:123456789012:function:myFunction", - "LastModified": "2016-11-21T19:49:20.006+0000", - "LastProcessingResult": "", - "State": "", - "StateTransitionReason": "", - "UUID": "123489-xxxxx-kdla8d89d7" - }, - "comments": { - "input": { - }, - "output": { - } - }, - "description": "This operation retrieves a Lambda function's event source mapping", - "id": "to-retrieve-a-lambda-functions-event-source-mapping-1481661622799", - "title": "To retrieve a Lambda function's event source mapping" - } - ], - "GetFunction": [ - { - "input": { - "FunctionName": "myFunction", - "Qualifier": "1" - }, - "output": { - "Code": { - "Location": "somelocation", - "RepositoryType": "S3" - }, - "Configuration": { - "CodeSha256": "LQT+0DHxxxxcfwLyQjzoEFKZtdqQjHXanlSdfXBlEW0VA=", - "CodeSize": 262, - "Description": "A starter AWS Lambda function.", - "Environment": { - "Variables": { - "S3_BUCKET": "test" - } - }, - "FunctionArn": "arn:aws:lambda:us-west-2:123456789012:function:myFunction", - "FunctionName": "myFunction", - "Handler": "index.handler", - "LastModified": "2016-11-21T19:49:20.006+0000", - "MemorySize": 128, - "Role": "arn:aws:iam::123456789012:role/lambda_basic_execution", - "Runtime": "nodejs4.3", - "Timeout": 3, - "Version": "$LATEST", - "VpcConfig": { - "SecurityGroupIds": [ - - ], - "SubnetIds": [ - - ] - } - } - }, - "comments": { - "input": { - }, - "output": { - } - }, - "description": "This operation retrieves a Lambda function's event source mapping", - "id": "to-retrieve-a-lambda-functions-event-source-mapping-1481661622799", - "title": "To retrieve a Lambda function's event source mapping" - } - ], - "GetFunctionConfiguration": [ - { - "input": { - "FunctionName": "myFunction", - "Qualifier": "1" - }, - "output": { - "CodeSha256": "LQT+0DHxxxxcfwLyQjzoEFKZtdqQjHXanlSdfXBlEW0VA=", - "CodeSize": 123, - "DeadLetterConfig": { - }, - "Description": "", - "Environment": { - }, - "FunctionArn": "arn:aws:lambda:us-west-2:123456789012:function:myFunction", - "FunctionName": "myFunction", - "Handler": "index.handler", - "KMSKeyArn": "", - "LastModified": "2016-11-21T19:49:20.006+0000", - "MemorySize": 128, - "Role": "arn:aws:iam::123456789012:role/lambda_basic_execution", - "Runtime": "python2.7", - "Timeout": 123, - "Version": "1", - "VpcConfig": { - } - }, - "comments": { - "input": { - }, - "output": { - } - }, - "description": "This operation retrieves a Lambda function's event source mapping", - "id": "to-retrieve-a-lambda-functions-event-source-mapping-1481661622799", - "title": "To retrieve a Lambda function's event source mapping" - } - ], - "GetPolicy": [ - { - "input": { - "FunctionName": "myFunction", - "Qualifier": "1" - }, - "output": { - "Policy": "" - }, - "comments": { - "input": { - }, - "output": { - } - }, - "description": "This operation retrieves a Lambda function policy", - "id": "to-retrieve-a-lambda-function-policy-1481649319053", - "title": "To retrieve a Lambda function policy" - } - ], - "Invoke": [ - { - "input": { - "ClientContext": "MyApp", - "FunctionName": "MyFunction", - "InvocationType": "Event", - "LogType": "Tail", - "Payload": "fileb://file-path/input.json", - "Qualifier": "1" - }, - "output": { - "FunctionError": "", - "LogResult": "", - "Payload": "?", - "StatusCode": 123 - }, - "comments": { - "input": { - }, - "output": { - } - }, - "description": "This operation invokes a Lambda function", - "id": "to-invoke-a-lambda-function-1481659683915", - "title": "To invoke a Lambda function" - } - ], - "InvokeAsync": [ - { - "input": { - "FunctionName": "myFunction", - "InvokeArgs": "fileb://file-path/input.json" - }, - "output": { - "Status": 123 - }, - "comments": { - "input": { - }, - "output": { - } - }, - "description": "This operation invokes a Lambda function asynchronously", - "id": "to-invoke-a-lambda-function-asynchronously-1481649694923", - "title": "To invoke a Lambda function asynchronously" - } - ], - "ListAliases": [ - { - "input": { - "FunctionName": "myFunction", - "FunctionVersion": "1", - "Marker": "", - "MaxItems": 123 - }, - "output": { - "Aliases": [ - - ], - "NextMarker": "" - }, - "comments": { - "input": { - }, - "output": { - } - }, - "description": "This operation retrieves a Lambda function's aliases", - "id": "to-retrieve-a-lambda-function-aliases-1481650199732", - "title": "To retrieve a Lambda function aliases" - } - ], - "ListFunctions": [ - { - "input": { - "Marker": "", - "MaxItems": 123 - }, - "output": { - "Functions": [ - - ], - "NextMarker": "" - }, - "comments": { - "input": { - }, - "output": { - } - }, - "description": "This operation retrieves a Lambda functions", - "id": "to-retrieve-a-list-of-lambda-functions-1481650507425", - "title": "To retrieve a list of Lambda functions" - } - ], - "ListVersionsByFunction": [ - { - "input": { - "FunctionName": "myFunction", - "Marker": "", - "MaxItems": 123 - }, - "output": { - "NextMarker": "", - "Versions": [ - - ] - }, - "comments": { - "input": { - }, - "output": { - } - }, - "description": "This operation retrieves a Lambda function versions", - "id": "to-retrieve-a-list-of-lambda-function-versions-1481650603750", - "title": "To retrieve a list of Lambda function versions" - } - ], - "PublishVersion": [ - { - "input": { - "CodeSha256": "", - "Description": "", - "FunctionName": "myFunction" - }, - "output": { - "CodeSha256": "", - "CodeSize": 123, - "Description": "", - "FunctionArn": "arn:aws:lambda:us-west-2:123456789012:function:myFunction", - "FunctionName": "myFunction", - "Handler": "index.handler", - "LastModified": "2016-11-21T19:49:20.006+0000", - "MemorySize": 128, - "Role": "arn:aws:iam::123456789012:role/lambda_basic_execution", - "Runtime": "python2.7", - "Timeout": 123, - "Version": "1", - "VpcConfig": { - } - }, - "comments": { - "input": { - }, - "output": { - } - }, - "description": "This operation publishes a version of a Lambda function", - "id": "to-publish-a-version-of-a-lambda-function-1481650704986", - "title": "To publish a version of a Lambda function" - } - ], - "RemovePermission": [ - { - "input": { - "FunctionName": "myFunction", - "Qualifier": "1", - "StatementId": "role-statement-id" - }, - "comments": { - "input": { - }, - "output": { - } - }, - "description": "This operation removes a Lambda function's permissions", - "id": "to-remove-a-lambda-functions-permissions-1481661337021", - "title": "To remove a Lambda function's permissions" - } - ], - "UpdateAlias": [ - { - "input": { - "Description": "", - "FunctionName": "myFunction", - "FunctionVersion": "1", - "Name": "functionAlias" - }, - "output": { - "AliasArn": "arn:aws:lambda:us-west-2:123456789012:function:functionAlias", - "Description": "", - "FunctionVersion": "1", - "Name": "functionAlias" - }, - "comments": { - "input": { - }, - "output": { - } - }, - "description": "This operation updates a Lambda function alias", - "id": "to-update-a-lambda-function-alias-1481650817950", - "title": "To update a Lambda function alias" - } - ], - "UpdateEventSourceMapping": [ - { - "input": { - "BatchSize": 123, - "Enabled": true, - "FunctionName": "myFunction", - "UUID": "1234xCy789012" - }, - "output": { - "BatchSize": 123, - "EventSourceArn": "arn:aws:s3:::examplebucket/*", - "FunctionArn": "arn:aws:lambda:us-west-2:123456789012:function:myFunction", - "LastModified": "2016-11-21T19:49:20.006+0000", - "LastProcessingResult": "", - "State": "", - "StateTransitionReason": "", - "UUID": "1234xCy789012" - }, - "comments": { - "input": { - }, - "output": { - } - }, - "description": "This operation updates a Lambda function event source mapping", - "id": "to-update-a-lambda-function-event-source-mapping-1481650907413", - "title": "To update a Lambda function event source mapping" - } - ], - "UpdateFunctionCode": [ - { - "input": { - "FunctionName": "myFunction", - "Publish": true, - "S3Bucket": "myBucket", - "S3Key": "myKey", - "S3ObjectVersion": "1", - "ZipFile": "fileb://file-path/file.zip" - }, - "output": { - "CodeSha256": "LQT+0DHxxxxcfwLyQjzoEFKZtdqQjHXanlSdfXBlEW0VA=", - "CodeSize": 123, - "Description": "", - "FunctionArn": "arn:aws:lambda:us-west-2:123456789012:function:myFunction", - "FunctionName": "myFunction", - "Handler": "index.handler", - "LastModified": "2016-11-21T19:49:20.006+0000", - "MemorySize": 128, - "Role": "arn:aws:iam::123456789012:role/lambda_basic_execution", - "Runtime": "python2.7", - "Timeout": 123, - "Version": "1", - "VpcConfig": { - } - }, - "comments": { - "input": { - }, - "output": { - } - }, - "description": "This operation updates a Lambda function's code", - "id": "to-update-a-lambda-functions-code-1481650992672", - "title": "To update a Lambda function's code" - } - ], - "UpdateFunctionConfiguration": [ - { - "input": { - "Description": "", - "FunctionName": "myFunction", - "Handler": "index.handler", - "MemorySize": 128, - "Role": "arn:aws:iam::123456789012:role/lambda_basic_execution", - "Runtime": "python2.7", - "Timeout": 123, - "VpcConfig": { - } - }, - "output": { - "CodeSha256": "LQT+0DHxxxxcfwLyQjzoEFKZtdqQjHXanlSdfXBlEW0VA=", - "CodeSize": 123, - "Description": "", - "FunctionArn": "arn:aws:lambda:us-west-2:123456789012:function:myFunction", - "FunctionName": "myFunction", - "Handler": "index.handler", - "LastModified": "2016-11-21T19:49:20.006+0000", - "MemorySize": 128, - "Role": "arn:aws:iam::123456789012:role/lambda_basic_execution", - "Runtime": "python2.7", - "Timeout": 123, - "Version": "1", - "VpcConfig": { - } - }, - "comments": { - "input": { - }, - "output": { - } - }, - "description": "This operation updates a Lambda function's configuration", - "id": "to-update-a-lambda-functions-configuration-1481651096447", - "title": "To update a Lambda function's configuration" - } - ] - } -} diff --git a/workshops/monte-carlo-on-ec2-spot-fleet/src/web/node_modules/aws-sdk/apis/lambda-2015-03-31.min.json b/workshops/monte-carlo-on-ec2-spot-fleet/src/web/node_modules/aws-sdk/apis/lambda-2015-03-31.min.json deleted file mode 100644 index 0cbcd0af..00000000 --- a/workshops/monte-carlo-on-ec2-spot-fleet/src/web/node_modules/aws-sdk/apis/lambda-2015-03-31.min.json +++ /dev/null @@ -1,1101 +0,0 @@ -{ - "version": "2.0", - "metadata": { - "apiVersion": "2015-03-31", - "endpointPrefix": "lambda", - "protocol": "rest-json", - "serviceFullName": "AWS Lambda", - "signatureVersion": "v4", - "uid": "lambda-2015-03-31" - }, - "operations": { - "AddPermission": { - "http": { - "requestUri": "/2015-03-31/functions/{FunctionName}/policy", - "responseCode": 201 - }, - "input": { - "type": "structure", - "required": [ - "FunctionName", - "StatementId", - "Action", - "Principal" - ], - "members": { - "FunctionName": { - "location": "uri", - "locationName": "FunctionName" - }, - "StatementId": {}, - "Action": {}, - "Principal": {}, - "SourceArn": {}, - "SourceAccount": {}, - "EventSourceToken": {}, - "Qualifier": { - "location": "querystring", - "locationName": "Qualifier" - } - } - }, - "output": { - "type": "structure", - "members": { - "Statement": {} - } - } - }, - "CreateAlias": { - "http": { - "requestUri": "/2015-03-31/functions/{FunctionName}/aliases", - "responseCode": 201 - }, - "input": { - "type": "structure", - "required": [ - "FunctionName", - "Name", - "FunctionVersion" - ], - "members": { - "FunctionName": { - "location": "uri", - "locationName": "FunctionName" - }, - "Name": {}, - "FunctionVersion": {}, - "Description": {} - } - }, - "output": { - "shape": "Sg" - } - }, - "CreateEventSourceMapping": { - "http": { - "requestUri": "/2015-03-31/event-source-mappings/", - "responseCode": 202 - }, - "input": { - "type": "structure", - "required": [ - "EventSourceArn", - "FunctionName", - "StartingPosition" - ], - "members": { - "EventSourceArn": {}, - "FunctionName": {}, - "Enabled": { - "type": "boolean" - }, - "BatchSize": { - "type": "integer" - }, - "StartingPosition": {}, - "StartingPositionTimestamp": { - "type": "timestamp" - } - } - }, - "output": { - "shape": "Sn" - } - }, - "CreateFunction": { - "http": { - "requestUri": "/2015-03-31/functions", - "responseCode": 201 - }, - "input": { - "type": "structure", - "required": [ - "FunctionName", - "Runtime", - "Role", - "Handler", - "Code" - ], - "members": { - "FunctionName": {}, - "Runtime": {}, - "Role": {}, - "Handler": {}, - "Code": { - "type": "structure", - "members": { - "ZipFile": { - "shape": "St" - }, - "S3Bucket": {}, - "S3Key": {}, - "S3ObjectVersion": {} - } - }, - "Description": {}, - "Timeout": { - "type": "integer" - }, - "MemorySize": { - "type": "integer" - }, - "Publish": { - "type": "boolean" - }, - "VpcConfig": { - "shape": "S10" - }, - "DeadLetterConfig": { - "shape": "S15" - }, - "Environment": { - "shape": "S17" - }, - "KMSKeyArn": {}, - "TracingConfig": { - "shape": "S1c" - }, - "Tags": { - "shape": "S1e" - } - } - }, - "output": { - "shape": "S1h" - } - }, - "DeleteAlias": { - "http": { - "method": "DELETE", - "requestUri": "/2015-03-31/functions/{FunctionName}/aliases/{Name}", - "responseCode": 204 - }, - "input": { - "type": "structure", - "required": [ - "FunctionName", - "Name" - ], - "members": { - "FunctionName": { - "location": "uri", - "locationName": "FunctionName" - }, - "Name": { - "location": "uri", - "locationName": "Name" - } - } - } - }, - "DeleteEventSourceMapping": { - "http": { - "method": "DELETE", - "requestUri": "/2015-03-31/event-source-mappings/{UUID}", - "responseCode": 202 - }, - "input": { - "type": "structure", - "required": [ - "UUID" - ], - "members": { - "UUID": { - "location": "uri", - "locationName": "UUID" - } - } - }, - "output": { - "shape": "Sn" - } - }, - "DeleteFunction": { - "http": { - "method": "DELETE", - "requestUri": "/2015-03-31/functions/{FunctionName}", - "responseCode": 204 - }, - "input": { - "type": "structure", - "required": [ - "FunctionName" - ], - "members": { - "FunctionName": { - "location": "uri", - "locationName": "FunctionName" - }, - "Qualifier": { - "location": "querystring", - "locationName": "Qualifier" - } - } - } - }, - "GetAccountSettings": { - "http": { - "method": "GET", - "requestUri": "/2016-08-19/account-settings/", - "responseCode": 200 - }, - "input": { - "type": "structure", - "members": {} - }, - "output": { - "type": "structure", - "members": { - "AccountLimit": { - "type": "structure", - "members": { - "TotalCodeSize": { - "type": "long" - }, - "CodeSizeUnzipped": { - "type": "long" - }, - "CodeSizeZipped": { - "type": "long" - }, - "ConcurrentExecutions": { - "type": "integer" - } - } - }, - "AccountUsage": { - "type": "structure", - "members": { - "TotalCodeSize": { - "type": "long" - }, - "FunctionCount": { - "type": "long" - } - } - } - } - } - }, - "GetAlias": { - "http": { - "method": "GET", - "requestUri": "/2015-03-31/functions/{FunctionName}/aliases/{Name}", - "responseCode": 200 - }, - "input": { - "type": "structure", - "required": [ - "FunctionName", - "Name" - ], - "members": { - "FunctionName": { - "location": "uri", - "locationName": "FunctionName" - }, - "Name": { - "location": "uri", - "locationName": "Name" - } - } - }, - "output": { - "shape": "Sg" - } - }, - "GetEventSourceMapping": { - "http": { - "method": "GET", - "requestUri": "/2015-03-31/event-source-mappings/{UUID}", - "responseCode": 200 - }, - "input": { - "type": "structure", - "required": [ - "UUID" - ], - "members": { - "UUID": { - "location": "uri", - "locationName": "UUID" - } - } - }, - "output": { - "shape": "Sn" - } - }, - "GetFunction": { - "http": { - "method": "GET", - "requestUri": "/2015-03-31/functions/{FunctionName}", - "responseCode": 200 - }, - "input": { - "type": "structure", - "required": [ - "FunctionName" - ], - "members": { - "FunctionName": { - "location": "uri", - "locationName": "FunctionName" - }, - "Qualifier": { - "location": "querystring", - "locationName": "Qualifier" - } - } - }, - "output": { - "type": "structure", - "members": { - "Configuration": { - "shape": "S1h" - }, - "Code": { - "type": "structure", - "members": { - "RepositoryType": {}, - "Location": {} - } - }, - "Tags": { - "shape": "S1e" - } - } - } - }, - "GetFunctionConfiguration": { - "http": { - "method": "GET", - "requestUri": "/2015-03-31/functions/{FunctionName}/configuration", - "responseCode": 200 - }, - "input": { - "type": "structure", - "required": [ - "FunctionName" - ], - "members": { - "FunctionName": { - "location": "uri", - "locationName": "FunctionName" - }, - "Qualifier": { - "location": "querystring", - "locationName": "Qualifier" - } - } - }, - "output": { - "shape": "S1h" - } - }, - "GetPolicy": { - "http": { - "method": "GET", - "requestUri": "/2015-03-31/functions/{FunctionName}/policy", - "responseCode": 200 - }, - "input": { - "type": "structure", - "required": [ - "FunctionName" - ], - "members": { - "FunctionName": { - "location": "uri", - "locationName": "FunctionName" - }, - "Qualifier": { - "location": "querystring", - "locationName": "Qualifier" - } - } - }, - "output": { - "type": "structure", - "members": { - "Policy": {} - } - } - }, - "Invoke": { - "http": { - "requestUri": "/2015-03-31/functions/{FunctionName}/invocations" - }, - "input": { - "type": "structure", - "required": [ - "FunctionName" - ], - "members": { - "FunctionName": { - "location": "uri", - "locationName": "FunctionName" - }, - "InvocationType": { - "location": "header", - "locationName": "X-Amz-Invocation-Type" - }, - "LogType": { - "location": "header", - "locationName": "X-Amz-Log-Type" - }, - "ClientContext": { - "location": "header", - "locationName": "X-Amz-Client-Context" - }, - "Payload": { - "shape": "St" - }, - "Qualifier": { - "location": "querystring", - "locationName": "Qualifier" - } - }, - "payload": "Payload" - }, - "output": { - "type": "structure", - "members": { - "StatusCode": { - "location": "statusCode", - "type": "integer" - }, - "FunctionError": { - "location": "header", - "locationName": "X-Amz-Function-Error" - }, - "LogResult": { - "location": "header", - "locationName": "X-Amz-Log-Result" - }, - "Payload": { - "shape": "St" - } - }, - "payload": "Payload" - } - }, - "InvokeAsync": { - "http": { - "requestUri": "/2014-11-13/functions/{FunctionName}/invoke-async/", - "responseCode": 202 - }, - "input": { - "type": "structure", - "required": [ - "FunctionName", - "InvokeArgs" - ], - "members": { - "FunctionName": { - "location": "uri", - "locationName": "FunctionName" - }, - "InvokeArgs": { - "type": "blob", - "streaming": true - } - }, - "deprecated": true, - "payload": "InvokeArgs" - }, - "output": { - "type": "structure", - "members": { - "Status": { - "location": "statusCode", - "type": "integer" - } - }, - "deprecated": true - }, - "deprecated": true - }, - "ListAliases": { - "http": { - "method": "GET", - "requestUri": "/2015-03-31/functions/{FunctionName}/aliases", - "responseCode": 200 - }, - "input": { - "type": "structure", - "required": [ - "FunctionName" - ], - "members": { - "FunctionName": { - "location": "uri", - "locationName": "FunctionName" - }, - "FunctionVersion": { - "location": "querystring", - "locationName": "FunctionVersion" - }, - "Marker": { - "location": "querystring", - "locationName": "Marker" - }, - "MaxItems": { - "location": "querystring", - "locationName": "MaxItems", - "type": "integer" - } - } - }, - "output": { - "type": "structure", - "members": { - "NextMarker": {}, - "Aliases": { - "type": "list", - "member": { - "shape": "Sg" - } - } - } - } - }, - "ListEventSourceMappings": { - "http": { - "method": "GET", - "requestUri": "/2015-03-31/event-source-mappings/", - "responseCode": 200 - }, - "input": { - "type": "structure", - "members": { - "EventSourceArn": { - "location": "querystring", - "locationName": "EventSourceArn" - }, - "FunctionName": { - "location": "querystring", - "locationName": "FunctionName" - }, - "Marker": { - "location": "querystring", - "locationName": "Marker" - }, - "MaxItems": { - "location": "querystring", - "locationName": "MaxItems", - "type": "integer" - } - } - }, - "output": { - "type": "structure", - "members": { - "NextMarker": {}, - "EventSourceMappings": { - "type": "list", - "member": { - "shape": "Sn" - } - } - } - } - }, - "ListFunctions": { - "http": { - "method": "GET", - "requestUri": "/2015-03-31/functions/", - "responseCode": 200 - }, - "input": { - "type": "structure", - "members": { - "MasterRegion": { - "location": "querystring", - "locationName": "MasterRegion" - }, - "FunctionVersion": { - "location": "querystring", - "locationName": "FunctionVersion" - }, - "Marker": { - "location": "querystring", - "locationName": "Marker" - }, - "MaxItems": { - "location": "querystring", - "locationName": "MaxItems", - "type": "integer" - } - } - }, - "output": { - "type": "structure", - "members": { - "NextMarker": {}, - "Functions": { - "shape": "S2r" - } - } - } - }, - "ListTags": { - "http": { - "method": "GET", - "requestUri": "/2017-03-31/tags/{ARN}" - }, - "input": { - "type": "structure", - "required": [ - "Resource" - ], - "members": { - "Resource": { - "location": "uri", - "locationName": "ARN" - } - } - }, - "output": { - "type": "structure", - "members": { - "Tags": { - "shape": "S1e" - } - } - } - }, - "ListVersionsByFunction": { - "http": { - "method": "GET", - "requestUri": "/2015-03-31/functions/{FunctionName}/versions", - "responseCode": 200 - }, - "input": { - "type": "structure", - "required": [ - "FunctionName" - ], - "members": { - "FunctionName": { - "location": "uri", - "locationName": "FunctionName" - }, - "Marker": { - "location": "querystring", - "locationName": "Marker" - }, - "MaxItems": { - "location": "querystring", - "locationName": "MaxItems", - "type": "integer" - } - } - }, - "output": { - "type": "structure", - "members": { - "NextMarker": {}, - "Versions": { - "shape": "S2r" - } - } - } - }, - "PublishVersion": { - "http": { - "requestUri": "/2015-03-31/functions/{FunctionName}/versions", - "responseCode": 201 - }, - "input": { - "type": "structure", - "required": [ - "FunctionName" - ], - "members": { - "FunctionName": { - "location": "uri", - "locationName": "FunctionName" - }, - "CodeSha256": {}, - "Description": {} - } - }, - "output": { - "shape": "S1h" - } - }, - "RemovePermission": { - "http": { - "method": "DELETE", - "requestUri": "/2015-03-31/functions/{FunctionName}/policy/{StatementId}", - "responseCode": 204 - }, - "input": { - "type": "structure", - "required": [ - "FunctionName", - "StatementId" - ], - "members": { - "FunctionName": { - "location": "uri", - "locationName": "FunctionName" - }, - "StatementId": { - "location": "uri", - "locationName": "StatementId" - }, - "Qualifier": { - "location": "querystring", - "locationName": "Qualifier" - } - } - } - }, - "TagResource": { - "http": { - "requestUri": "/2017-03-31/tags/{ARN}", - "responseCode": 204 - }, - "input": { - "type": "structure", - "required": [ - "Resource", - "Tags" - ], - "members": { - "Resource": { - "location": "uri", - "locationName": "ARN" - }, - "Tags": { - "shape": "S1e" - } - } - } - }, - "UntagResource": { - "http": { - "method": "DELETE", - "requestUri": "/2017-03-31/tags/{ARN}", - "responseCode": 204 - }, - "input": { - "type": "structure", - "required": [ - "Resource", - "TagKeys" - ], - "members": { - "Resource": { - "location": "uri", - "locationName": "ARN" - }, - "TagKeys": { - "location": "querystring", - "locationName": "tagKeys", - "type": "list", - "member": {} - } - } - } - }, - "UpdateAlias": { - "http": { - "method": "PUT", - "requestUri": "/2015-03-31/functions/{FunctionName}/aliases/{Name}", - "responseCode": 200 - }, - "input": { - "type": "structure", - "required": [ - "FunctionName", - "Name" - ], - "members": { - "FunctionName": { - "location": "uri", - "locationName": "FunctionName" - }, - "Name": { - "location": "uri", - "locationName": "Name" - }, - "FunctionVersion": {}, - "Description": {} - } - }, - "output": { - "shape": "Sg" - } - }, - "UpdateEventSourceMapping": { - "http": { - "method": "PUT", - "requestUri": "/2015-03-31/event-source-mappings/{UUID}", - "responseCode": 202 - }, - "input": { - "type": "structure", - "required": [ - "UUID" - ], - "members": { - "UUID": { - "location": "uri", - "locationName": "UUID" - }, - "FunctionName": {}, - "Enabled": { - "type": "boolean" - }, - "BatchSize": { - "type": "integer" - } - } - }, - "output": { - "shape": "Sn" - } - }, - "UpdateFunctionCode": { - "http": { - "method": "PUT", - "requestUri": "/2015-03-31/functions/{FunctionName}/code", - "responseCode": 200 - }, - "input": { - "type": "structure", - "required": [ - "FunctionName" - ], - "members": { - "FunctionName": { - "location": "uri", - "locationName": "FunctionName" - }, - "ZipFile": { - "shape": "St" - }, - "S3Bucket": {}, - "S3Key": {}, - "S3ObjectVersion": {}, - "Publish": { - "type": "boolean" - }, - "DryRun": { - "type": "boolean" - } - } - }, - "output": { - "shape": "S1h" - } - }, - "UpdateFunctionConfiguration": { - "http": { - "method": "PUT", - "requestUri": "/2015-03-31/functions/{FunctionName}/configuration", - "responseCode": 200 - }, - "input": { - "type": "structure", - "required": [ - "FunctionName" - ], - "members": { - "FunctionName": { - "location": "uri", - "locationName": "FunctionName" - }, - "Role": {}, - "Handler": {}, - "Description": {}, - "Timeout": { - "type": "integer" - }, - "MemorySize": { - "type": "integer" - }, - "VpcConfig": { - "shape": "S10" - }, - "Environment": { - "shape": "S17" - }, - "Runtime": {}, - "DeadLetterConfig": { - "shape": "S15" - }, - "KMSKeyArn": {}, - "TracingConfig": { - "shape": "S1c" - } - } - }, - "output": { - "shape": "S1h" - } - } - }, - "shapes": { - "Sg": { - "type": "structure", - "members": { - "AliasArn": {}, - "Name": {}, - "FunctionVersion": {}, - "Description": {} - } - }, - "Sn": { - "type": "structure", - "members": { - "UUID": {}, - "BatchSize": { - "type": "integer" - }, - "EventSourceArn": {}, - "FunctionArn": {}, - "LastModified": { - "type": "timestamp" - }, - "LastProcessingResult": {}, - "State": {}, - "StateTransitionReason": {} - } - }, - "St": { - "type": "blob", - "sensitive": true - }, - "S10": { - "type": "structure", - "members": { - "SubnetIds": { - "shape": "S11" - }, - "SecurityGroupIds": { - "shape": "S13" - } - } - }, - "S11": { - "type": "list", - "member": {} - }, - "S13": { - "type": "list", - "member": {} - }, - "S15": { - "type": "structure", - "members": { - "TargetArn": {} - } - }, - "S17": { - "type": "structure", - "members": { - "Variables": { - "shape": "S18" - } - } - }, - "S18": { - "type": "map", - "key": { - "type": "string", - "sensitive": true - }, - "value": { - "type": "string", - "sensitive": true - }, - "sensitive": true - }, - "S1c": { - "type": "structure", - "members": { - "Mode": {} - } - }, - "S1e": { - "type": "map", - "key": {}, - "value": {} - }, - "S1h": { - "type": "structure", - "members": { - "FunctionName": {}, - "FunctionArn": {}, - "Runtime": {}, - "Role": {}, - "Handler": {}, - "CodeSize": { - "type": "long" - }, - "Description": {}, - "Timeout": { - "type": "integer" - }, - "MemorySize": { - "type": "integer" - }, - "LastModified": {}, - "CodeSha256": {}, - "Version": {}, - "VpcConfig": { - "type": "structure", - "members": { - "SubnetIds": { - "shape": "S11" - }, - "SecurityGroupIds": { - "shape": "S13" - }, - "VpcId": {} - } - }, - "DeadLetterConfig": { - "shape": "S15" - }, - "Environment": { - "type": "structure", - "members": { - "Variables": { - "shape": "S18" - }, - "Error": { - "type": "structure", - "members": { - "ErrorCode": {}, - "Message": { - "type": "string", - "sensitive": true - } - } - } - } - }, - "KMSKeyArn": {}, - "TracingConfig": { - "type": "structure", - "members": { - "Mode": {} - } - }, - "MasterArn": {} - } - }, - "S2r": { - "type": "list", - "member": { - "shape": "S1h" - } - } - } -} \ No newline at end of file diff --git a/workshops/monte-carlo-on-ec2-spot-fleet/src/web/node_modules/aws-sdk/apis/lambda-2015-03-31.paginators.json b/workshops/monte-carlo-on-ec2-spot-fleet/src/web/node_modules/aws-sdk/apis/lambda-2015-03-31.paginators.json deleted file mode 100644 index a667b8a1..00000000 --- a/workshops/monte-carlo-on-ec2-spot-fleet/src/web/node_modules/aws-sdk/apis/lambda-2015-03-31.paginators.json +++ /dev/null @@ -1,16 +0,0 @@ -{ - "pagination": { - "ListEventSourceMappings": { - "input_token": "Marker", - "limit_key": "MaxItems", - "output_token": "NextMarker", - "result_key": "EventSourceMappings" - }, - "ListFunctions": { - "input_token": "Marker", - "limit_key": "MaxItems", - "output_token": "NextMarker", - "result_key": "Functions" - } - } -} \ No newline at end of file diff --git a/workshops/monte-carlo-on-ec2-spot-fleet/src/web/node_modules/aws-sdk/apis/lex-models-2017-04-19.examples.json b/workshops/monte-carlo-on-ec2-spot-fleet/src/web/node_modules/aws-sdk/apis/lex-models-2017-04-19.examples.json deleted file mode 100644 index 4a56e6e1..00000000 --- a/workshops/monte-carlo-on-ec2-spot-fleet/src/web/node_modules/aws-sdk/apis/lex-models-2017-04-19.examples.json +++ /dev/null @@ -1,758 +0,0 @@ -{ - "version": "1.0", - "examples": { - "GetBot": [ - { - "input": { - "name": "DocOrderPizza", - "versionOrAlias": "$LATEST" - }, - "output": { - "version": "$LATEST", - "name": "DocOrderPizzaBot", - "abortStatement": { - "messages": [ - { - "content": "I don't understand. Can you try again?", - "contentType": "PlainText" - }, - { - "content": "I'm sorry, I don't understand.", - "contentType": "PlainText" - } - ] - }, - "checksum": "20172ee3-fa06-49b2-bbc5-667c090303e9", - "childDirected": true, - "clarificationPrompt": { - "maxAttempts": 1, - "messages": [ - { - "content": "I'm sorry, I didn't hear that. Can you repeate what you just said?", - "contentType": "PlainText" - }, - { - "content": "Can you say that again?", - "contentType": "PlainText" - } - ] - }, - "createdDate": 1494360160.133, - "description": "Orders a pizza from a local pizzeria.", - "idleSessionTTLInSeconds": 300, - "intents": [ - { - "intentName": "DocOrderPizza", - "intentVersion": "$LATEST" - } - ], - "lastUpdatedDate": 1494360160.133, - "locale": "en-US", - "status": "NOT_BUILT" - }, - "comments": { - "input": { - }, - "output": { - } - }, - "description": "This example shows how to get configuration information for a bot.", - "id": "to-get-information-about-a-bot-1494431724188", - "title": "To get information about a bot" - } - ], - "GetBots": [ - { - "input": { - "maxResults": 5, - "nextToken": "" - }, - "output": { - "bots": [ - { - "version": "$LATEST", - "name": "DocOrderPizzaBot", - "createdDate": 1494360160.133, - "description": "Orders a pizza from a local pizzeria.", - "lastUpdatedDate": 1494360160.133, - "status": "NOT_BUILT" - } - ] - }, - "comments": { - "input": { - }, - "output": { - } - }, - "description": "This example shows how to get a list of all of the bots in your account.", - "id": "to-get-a-list-of-bots-1494432220036", - "title": "To get a list of bots" - } - ], - "GetIntent": [ - { - "input": { - "version": "$LATEST", - "name": "DocOrderPizza" - }, - "output": { - "version": "$LATEST", - "name": "DocOrderPizza", - "checksum": "ca9bc13d-afc8-4706-bbaf-091f7a5935d6", - "conclusionStatement": { - "messages": [ - { - "content": "All right, I ordered you a {Crust} crust {Type} pizza with {Sauce} sauce.", - "contentType": "PlainText" - }, - { - "content": "OK, your {Crust} crust {Type} pizza with {Sauce} sauce is on the way.", - "contentType": "PlainText" - } - ], - "responseCard": "foo" - }, - "confirmationPrompt": { - "maxAttempts": 1, - "messages": [ - { - "content": "Should I order your {Crust} crust {Type} pizza with {Sauce} sauce?", - "contentType": "PlainText" - } - ] - }, - "createdDate": 1494359783.453, - "description": "Order a pizza from a local pizzeria.", - "fulfillmentActivity": { - "type": "ReturnIntent" - }, - "lastUpdatedDate": 1494359783.453, - "rejectionStatement": { - "messages": [ - { - "content": "Ok, I'll cancel your order.", - "contentType": "PlainText" - }, - { - "content": "I cancelled your order.", - "contentType": "PlainText" - } - ] - }, - "sampleUtterances": [ - "Order me a pizza.", - "Order me a {Type} pizza.", - "I want a {Crust} crust {Type} pizza", - "I want a {Crust} crust {Type} pizza with {Sauce} sauce." - ], - "slots": [ - { - "name": "Type", - "description": "The type of pizza to order.", - "priority": 1, - "sampleUtterances": [ - "Get me a {Type} pizza.", - "A {Type} pizza please.", - "I'd like a {Type} pizza." - ], - "slotConstraint": "Required", - "slotType": "DocPizzaType", - "slotTypeVersion": "$LATEST", - "valueElicitationPrompt": { - "maxAttempts": 1, - "messages": [ - { - "content": "What type of pizza would you like?", - "contentType": "PlainText" - }, - { - "content": "Vegie or cheese pizza?", - "contentType": "PlainText" - }, - { - "content": "I can get you a vegie or a cheese pizza.", - "contentType": "PlainText" - } - ] - } - }, - { - "name": "Crust", - "description": "The type of pizza crust to order.", - "priority": 2, - "sampleUtterances": [ - "Make it a {Crust} crust.", - "I'd like a {Crust} crust." - ], - "slotConstraint": "Required", - "slotType": "DocPizzaCrustType", - "slotTypeVersion": "$LATEST", - "valueElicitationPrompt": { - "maxAttempts": 1, - "messages": [ - { - "content": "What type of crust would you like?", - "contentType": "PlainText" - }, - { - "content": "Thick or thin crust?", - "contentType": "PlainText" - } - ] - } - }, - { - "name": "Sauce", - "description": "The type of sauce to use on the pizza.", - "priority": 3, - "sampleUtterances": [ - "Make it {Sauce} sauce.", - "I'd like {Sauce} sauce." - ], - "slotConstraint": "Required", - "slotType": "DocPizzaSauceType", - "slotTypeVersion": "$LATEST", - "valueElicitationPrompt": { - "maxAttempts": 1, - "messages": [ - { - "content": "White or red sauce?", - "contentType": "PlainText" - }, - { - "content": "Garlic or tomato sauce?", - "contentType": "PlainText" - } - ] - } - } - ] - }, - "comments": { - "input": { - }, - "output": { - } - }, - "description": "This example shows how to get information about an intent.", - "id": "to-get-a-information-about-an-intent-1494432574147", - "title": "To get a information about an intent" - } - ], - "GetIntents": [ - { - "input": { - "maxResults": 10, - "nextToken": "" - }, - "output": { - "intents": [ - { - "version": "$LATEST", - "name": "DocOrderPizza", - "createdDate": 1494359783.453, - "description": "Order a pizza from a local pizzeria.", - "lastUpdatedDate": 1494359783.453 - } - ] - }, - "comments": { - "input": { - }, - "output": { - } - }, - "description": "This example shows how to get a list of all of the intents in your account.", - "id": "to-get-a-list-of-intents-1494432416363", - "title": "To get a list of intents" - } - ], - "GetSlotType": [ - { - "input": { - "version": "$LATEST", - "name": "DocPizzaCrustType" - }, - "output": { - "version": "$LATEST", - "name": "DocPizzaCrustType", - "checksum": "210b3d5a-90a3-4b22-ac7e-f50c2c71095f", - "createdDate": 1494359274.403, - "description": "Available crust types", - "enumerationValues": [ - { - "value": "thick" - }, - { - "value": "thin" - } - ], - "lastUpdatedDate": 1494359274.403 - }, - "comments": { - "input": { - }, - "output": { - } - }, - "description": "This example shows how to get information about a slot type.", - "id": "to-get-information-about-a-slot-type-1494432961004", - "title": "To get information about a slot type" - } - ], - "GetSlotTypes": [ - { - "input": { - "maxResults": 10, - "nextToken": "" - }, - "output": { - "slotTypes": [ - { - "version": "$LATEST", - "name": "DocPizzaCrustType", - "createdDate": 1494359274.403, - "description": "Available crust types", - "lastUpdatedDate": 1494359274.403 - }, - { - "version": "$LATEST", - "name": "DocPizzaSauceType", - "createdDate": 1494356442.23, - "description": "Available pizza sauces", - "lastUpdatedDate": 1494356442.23 - }, - { - "version": "$LATEST", - "name": "DocPizzaType", - "createdDate": 1494359198.656, - "description": "Available pizzas", - "lastUpdatedDate": 1494359198.656 - } - ] - }, - "comments": { - "input": { - }, - "output": { - } - }, - "description": "This example shows how to get a list of all of the slot types in your account.", - "id": "to-get-a-list-of-slot-types-1494432757458", - "title": "To get a list of slot types" - } - ], - "PutBot": [ - { - "input": { - "name": "DocOrderPizzaBot", - "abortStatement": { - "messages": [ - { - "content": "I don't understand. Can you try again?", - "contentType": "PlainText" - }, - { - "content": "I'm sorry, I don't understand.", - "contentType": "PlainText" - } - ] - }, - "childDirected": true, - "clarificationPrompt": { - "maxAttempts": 1, - "messages": [ - { - "content": "I'm sorry, I didn't hear that. Can you repeate what you just said?", - "contentType": "PlainText" - }, - { - "content": "Can you say that again?", - "contentType": "PlainText" - } - ] - }, - "description": "Orders a pizza from a local pizzeria.", - "idleSessionTTLInSeconds": 300, - "intents": [ - { - "intentName": "DocOrderPizza", - "intentVersion": "$LATEST" - } - ], - "locale": "en-US", - "processBehavior": "SAVE" - }, - "output": { - "version": "$LATEST", - "name": "DocOrderPizzaBot", - "abortStatement": { - "messages": [ - { - "content": "I don't understand. Can you try again?", - "contentType": "PlainText" - }, - { - "content": "I'm sorry, I don't understand.", - "contentType": "PlainText" - } - ] - }, - "checksum": "20172ee3-fa06-49b2-bbc5-667c090303e9", - "childDirected": true, - "clarificationPrompt": { - "maxAttempts": 1, - "messages": [ - { - "content": "I'm sorry, I didn't hear that. Can you repeate what you just said?", - "contentType": "PlainText" - }, - { - "content": "Can you say that again?", - "contentType": "PlainText" - } - ] - }, - "createdDate": 1494360160.133, - "description": "Orders a pizza from a local pizzeria.", - "idleSessionTTLInSeconds": 300, - "intents": [ - { - "intentName": "DocOrderPizza", - "intentVersion": "$LATEST" - } - ], - "lastUpdatedDate": 1494360160.133, - "locale": "en-US", - "status": "NOT_BUILT" - }, - "comments": { - "input": { - }, - "output": { - } - }, - "description": "This example shows how to create a bot for ordering pizzas.", - "id": "to-create-a-bot-1494360003886", - "title": "To create a bot" - } - ], - "PutIntent": [ - { - "input": { - "name": "DocOrderPizza", - "conclusionStatement": { - "messages": [ - { - "content": "All right, I ordered you a {Crust} crust {Type} pizza with {Sauce} sauce.", - "contentType": "PlainText" - }, - { - "content": "OK, your {Crust} crust {Type} pizza with {Sauce} sauce is on the way.", - "contentType": "PlainText" - } - ], - "responseCard": "foo" - }, - "confirmationPrompt": { - "maxAttempts": 1, - "messages": [ - { - "content": "Should I order your {Crust} crust {Type} pizza with {Sauce} sauce?", - "contentType": "PlainText" - } - ] - }, - "description": "Order a pizza from a local pizzeria.", - "fulfillmentActivity": { - "type": "ReturnIntent" - }, - "rejectionStatement": { - "messages": [ - { - "content": "Ok, I'll cancel your order.", - "contentType": "PlainText" - }, - { - "content": "I cancelled your order.", - "contentType": "PlainText" - } - ] - }, - "sampleUtterances": [ - "Order me a pizza.", - "Order me a {Type} pizza.", - "I want a {Crust} crust {Type} pizza", - "I want a {Crust} crust {Type} pizza with {Sauce} sauce." - ], - "slots": [ - { - "name": "Type", - "description": "The type of pizza to order.", - "priority": 1, - "sampleUtterances": [ - "Get me a {Type} pizza.", - "A {Type} pizza please.", - "I'd like a {Type} pizza." - ], - "slotConstraint": "Required", - "slotType": "DocPizzaType", - "slotTypeVersion": "$LATEST", - "valueElicitationPrompt": { - "maxAttempts": 1, - "messages": [ - { - "content": "What type of pizza would you like?", - "contentType": "PlainText" - }, - { - "content": "Vegie or cheese pizza?", - "contentType": "PlainText" - }, - { - "content": "I can get you a vegie or a cheese pizza.", - "contentType": "PlainText" - } - ] - } - }, - { - "name": "Crust", - "description": "The type of pizza crust to order.", - "priority": 2, - "sampleUtterances": [ - "Make it a {Crust} crust.", - "I'd like a {Crust} crust." - ], - "slotConstraint": "Required", - "slotType": "DocPizzaCrustType", - "slotTypeVersion": "$LATEST", - "valueElicitationPrompt": { - "maxAttempts": 1, - "messages": [ - { - "content": "What type of crust would you like?", - "contentType": "PlainText" - }, - { - "content": "Thick or thin crust?", - "contentType": "PlainText" - } - ] - } - }, - { - "name": "Sauce", - "description": "The type of sauce to use on the pizza.", - "priority": 3, - "sampleUtterances": [ - "Make it {Sauce} sauce.", - "I'd like {Sauce} sauce." - ], - "slotConstraint": "Required", - "slotType": "DocPizzaSauceType", - "slotTypeVersion": "$LATEST", - "valueElicitationPrompt": { - "maxAttempts": 1, - "messages": [ - { - "content": "White or red sauce?", - "contentType": "PlainText" - }, - { - "content": "Garlic or tomato sauce?", - "contentType": "PlainText" - } - ] - } - } - ] - }, - "output": { - "version": "$LATEST", - "name": "DocOrderPizza", - "checksum": "ca9bc13d-afc8-4706-bbaf-091f7a5935d6", - "conclusionStatement": { - "messages": [ - { - "content": "All right, I ordered you a {Crust} crust {Type} pizza with {Sauce} sauce.", - "contentType": "PlainText" - }, - { - "content": "OK, your {Crust} crust {Type} pizza with {Sauce} sauce is on the way.", - "contentType": "PlainText" - } - ], - "responseCard": "foo" - }, - "confirmationPrompt": { - "maxAttempts": 1, - "messages": [ - { - "content": "Should I order your {Crust} crust {Type} pizza with {Sauce} sauce?", - "contentType": "PlainText" - } - ] - }, - "createdDate": 1494359783.453, - "description": "Order a pizza from a local pizzeria.", - "fulfillmentActivity": { - "type": "ReturnIntent" - }, - "lastUpdatedDate": 1494359783.453, - "rejectionStatement": { - "messages": [ - { - "content": "Ok, I'll cancel your order.", - "contentType": "PlainText" - }, - { - "content": "I cancelled your order.", - "contentType": "PlainText" - } - ] - }, - "sampleUtterances": [ - "Order me a pizza.", - "Order me a {Type} pizza.", - "I want a {Crust} crust {Type} pizza", - "I want a {Crust} crust {Type} pizza with {Sauce} sauce." - ], - "slots": [ - { - "name": "Sauce", - "description": "The type of sauce to use on the pizza.", - "priority": 3, - "sampleUtterances": [ - "Make it {Sauce} sauce.", - "I'd like {Sauce} sauce." - ], - "slotConstraint": "Required", - "slotType": "DocPizzaSauceType", - "slotTypeVersion": "$LATEST", - "valueElicitationPrompt": { - "maxAttempts": 1, - "messages": [ - { - "content": "White or red sauce?", - "contentType": "PlainText" - }, - { - "content": "Garlic or tomato sauce?", - "contentType": "PlainText" - } - ] - } - }, - { - "name": "Type", - "description": "The type of pizza to order.", - "priority": 1, - "sampleUtterances": [ - "Get me a {Type} pizza.", - "A {Type} pizza please.", - "I'd like a {Type} pizza." - ], - "slotConstraint": "Required", - "slotType": "DocPizzaType", - "slotTypeVersion": "$LATEST", - "valueElicitationPrompt": { - "maxAttempts": 1, - "messages": [ - { - "content": "What type of pizza would you like?", - "contentType": "PlainText" - }, - { - "content": "Vegie or cheese pizza?", - "contentType": "PlainText" - }, - { - "content": "I can get you a vegie or a cheese pizza.", - "contentType": "PlainText" - } - ] - } - }, - { - "name": "Crust", - "description": "The type of pizza crust to order.", - "priority": 2, - "sampleUtterances": [ - "Make it a {Crust} crust.", - "I'd like a {Crust} crust." - ], - "slotConstraint": "Required", - "slotType": "DocPizzaCrustType", - "slotTypeVersion": "$LATEST", - "valueElicitationPrompt": { - "maxAttempts": 1, - "messages": [ - { - "content": "What type of crust would you like?", - "contentType": "PlainText" - }, - { - "content": "Thick or thin crust?", - "contentType": "PlainText" - } - ] - } - } - ] - }, - "comments": { - "input": { - }, - "output": { - } - }, - "description": "This example shows how to create an intent for ordering pizzas.", - "id": "to-create-an-intent-1494358144659", - "title": "To create an intent" - } - ], - "PutSlotType": [ - { - "input": { - "name": "PizzaSauceType", - "description": "Available pizza sauces", - "enumerationValues": [ - { - "value": "red" - }, - { - "value": "white" - } - ] - }, - "output": { - "version": "$LATEST", - "name": "DocPizzaSauceType", - "checksum": "cfd00ed1-775d-4357-947c-aca7e73b44ba", - "createdDate": 1494356442.23, - "description": "Available pizza sauces", - "enumerationValues": [ - { - "value": "red" - }, - { - "value": "white" - } - ], - "lastUpdatedDate": 1494356442.23 - }, - "comments": { - "input": { - }, - "output": { - } - }, - "description": "This example shows how to create a slot type that describes pizza sauces.", - "id": "to-create-a-slot-type-1494357262258", - "title": "To Create a Slot Type" - } - ] - } -} diff --git a/workshops/monte-carlo-on-ec2-spot-fleet/src/web/node_modules/aws-sdk/apis/lex-models-2017-04-19.min.json b/workshops/monte-carlo-on-ec2-spot-fleet/src/web/node_modules/aws-sdk/apis/lex-models-2017-04-19.min.json deleted file mode 100644 index 514bab8b..00000000 --- a/workshops/monte-carlo-on-ec2-spot-fleet/src/web/node_modules/aws-sdk/apis/lex-models-2017-04-19.min.json +++ /dev/null @@ -1,1652 +0,0 @@ -{ - "version": "2.0", - "metadata": { - "apiVersion": "2017-04-19", - "endpointPrefix": "models.lex", - "jsonVersion": "1.1", - "protocol": "rest-json", - "serviceFullName": "Amazon Lex Model Building Service", - "signatureVersion": "v4", - "signingName": "lex", - "uid": "lex-models-2017-04-19" - }, - "operations": { - "CreateBotVersion": { - "http": { - "requestUri": "/bots/{name}/versions", - "responseCode": 201 - }, - "input": { - "type": "structure", - "required": [ - "name" - ], - "members": { - "name": { - "location": "uri", - "locationName": "name" - }, - "checksum": {} - } - }, - "output": { - "type": "structure", - "members": { - "name": {}, - "description": {}, - "intents": { - "shape": "S6" - }, - "clarificationPrompt": { - "shape": "Sa" - }, - "abortStatement": { - "shape": "Sh" - }, - "status": {}, - "failureReason": {}, - "lastUpdatedDate": { - "type": "timestamp" - }, - "createdDate": { - "type": "timestamp" - }, - "idleSessionTTLInSeconds": { - "type": "integer" - }, - "voiceId": {}, - "checksum": {}, - "version": {}, - "locale": {}, - "childDirected": { - "type": "boolean" - } - } - } - }, - "CreateIntentVersion": { - "http": { - "requestUri": "/intents/{name}/versions", - "responseCode": 201 - }, - "input": { - "type": "structure", - "required": [ - "name" - ], - "members": { - "name": { - "location": "uri", - "locationName": "name" - }, - "checksum": {} - } - }, - "output": { - "type": "structure", - "members": { - "name": {}, - "description": {}, - "slots": { - "shape": "Sp" - }, - "sampleUtterances": { - "shape": "Sx" - }, - "confirmationPrompt": { - "shape": "Sa" - }, - "rejectionStatement": { - "shape": "Sh" - }, - "followUpPrompt": { - "shape": "Sy" - }, - "conclusionStatement": { - "shape": "Sh" - }, - "dialogCodeHook": { - "shape": "Sz" - }, - "fulfillmentActivity": { - "shape": "S12" - }, - "parentIntentSignature": {}, - "lastUpdatedDate": { - "type": "timestamp" - }, - "createdDate": { - "type": "timestamp" - }, - "version": {}, - "checksum": {} - } - } - }, - "CreateSlotTypeVersion": { - "http": { - "requestUri": "/slottypes/{name}/versions", - "responseCode": 201 - }, - "input": { - "type": "structure", - "required": [ - "name" - ], - "members": { - "name": { - "location": "uri", - "locationName": "name" - }, - "checksum": {} - } - }, - "output": { - "type": "structure", - "members": { - "name": {}, - "description": {}, - "enumerationValues": { - "shape": "S18" - }, - "lastUpdatedDate": { - "type": "timestamp" - }, - "createdDate": { - "type": "timestamp" - }, - "version": {}, - "checksum": {}, - "valueSelectionStrategy": {} - } - } - }, - "DeleteBot": { - "http": { - "method": "DELETE", - "requestUri": "/bots/{name}", - "responseCode": 204 - }, - "input": { - "type": "structure", - "required": [ - "name" - ], - "members": { - "name": { - "location": "uri", - "locationName": "name" - } - } - } - }, - "DeleteBotAlias": { - "http": { - "method": "DELETE", - "requestUri": "/bots/{botName}/aliases/{name}", - "responseCode": 204 - }, - "input": { - "type": "structure", - "required": [ - "name", - "botName" - ], - "members": { - "name": { - "location": "uri", - "locationName": "name" - }, - "botName": { - "location": "uri", - "locationName": "botName" - } - } - } - }, - "DeleteBotChannelAssociation": { - "http": { - "method": "DELETE", - "requestUri": "/bots/{botName}/aliases/{aliasName}/channels/{name}", - "responseCode": 204 - }, - "input": { - "type": "structure", - "required": [ - "name", - "botName", - "botAlias" - ], - "members": { - "name": { - "location": "uri", - "locationName": "name" - }, - "botName": { - "location": "uri", - "locationName": "botName" - }, - "botAlias": { - "location": "uri", - "locationName": "aliasName" - } - } - } - }, - "DeleteBotVersion": { - "http": { - "method": "DELETE", - "requestUri": "/bots/{name}/versions/{version}", - "responseCode": 204 - }, - "input": { - "type": "structure", - "required": [ - "name", - "version" - ], - "members": { - "name": { - "location": "uri", - "locationName": "name" - }, - "version": { - "location": "uri", - "locationName": "version" - } - } - } - }, - "DeleteIntent": { - "http": { - "method": "DELETE", - "requestUri": "/intents/{name}", - "responseCode": 204 - }, - "input": { - "type": "structure", - "required": [ - "name" - ], - "members": { - "name": { - "location": "uri", - "locationName": "name" - } - } - } - }, - "DeleteIntentVersion": { - "http": { - "method": "DELETE", - "requestUri": "/intents/{name}/versions/{version}", - "responseCode": 204 - }, - "input": { - "type": "structure", - "required": [ - "name", - "version" - ], - "members": { - "name": { - "location": "uri", - "locationName": "name" - }, - "version": { - "location": "uri", - "locationName": "version" - } - } - } - }, - "DeleteSlotType": { - "http": { - "method": "DELETE", - "requestUri": "/slottypes/{name}", - "responseCode": 204 - }, - "input": { - "type": "structure", - "required": [ - "name" - ], - "members": { - "name": { - "location": "uri", - "locationName": "name" - } - } - } - }, - "DeleteSlotTypeVersion": { - "http": { - "method": "DELETE", - "requestUri": "/slottypes/{name}/version/{version}", - "responseCode": 204 - }, - "input": { - "type": "structure", - "required": [ - "name", - "version" - ], - "members": { - "name": { - "location": "uri", - "locationName": "name" - }, - "version": { - "location": "uri", - "locationName": "version" - } - } - } - }, - "DeleteUtterances": { - "http": { - "method": "DELETE", - "requestUri": "/bots/{botName}/utterances/{userId}", - "responseCode": 204 - }, - "input": { - "type": "structure", - "required": [ - "botName", - "userId" - ], - "members": { - "botName": { - "location": "uri", - "locationName": "botName" - }, - "userId": { - "location": "uri", - "locationName": "userId" - } - } - } - }, - "GetBot": { - "http": { - "method": "GET", - "requestUri": "/bots/{name}/versions/{versionoralias}", - "responseCode": 200 - }, - "input": { - "type": "structure", - "required": [ - "name", - "versionOrAlias" - ], - "members": { - "name": { - "location": "uri", - "locationName": "name" - }, - "versionOrAlias": { - "location": "uri", - "locationName": "versionoralias" - } - } - }, - "output": { - "type": "structure", - "members": { - "name": {}, - "description": {}, - "intents": { - "shape": "S6" - }, - "clarificationPrompt": { - "shape": "Sa" - }, - "abortStatement": { - "shape": "Sh" - }, - "status": {}, - "failureReason": {}, - "lastUpdatedDate": { - "type": "timestamp" - }, - "createdDate": { - "type": "timestamp" - }, - "idleSessionTTLInSeconds": { - "type": "integer" - }, - "voiceId": {}, - "checksum": {}, - "version": {}, - "locale": {}, - "childDirected": { - "type": "boolean" - } - } - } - }, - "GetBotAlias": { - "http": { - "method": "GET", - "requestUri": "/bots/{botName}/aliases/{name}", - "responseCode": 200 - }, - "input": { - "type": "structure", - "required": [ - "name", - "botName" - ], - "members": { - "name": { - "location": "uri", - "locationName": "name" - }, - "botName": { - "location": "uri", - "locationName": "botName" - } - } - }, - "output": { - "type": "structure", - "members": { - "name": {}, - "description": {}, - "botVersion": {}, - "botName": {}, - "lastUpdatedDate": { - "type": "timestamp" - }, - "createdDate": { - "type": "timestamp" - }, - "checksum": {} - } - } - }, - "GetBotAliases": { - "http": { - "method": "GET", - "requestUri": "/bots/{botName}/aliases/", - "responseCode": 200 - }, - "input": { - "type": "structure", - "required": [ - "botName" - ], - "members": { - "botName": { - "location": "uri", - "locationName": "botName" - }, - "nextToken": { - "location": "querystring", - "locationName": "nextToken" - }, - "maxResults": { - "location": "querystring", - "locationName": "maxResults", - "type": "integer" - }, - "nameContains": { - "location": "querystring", - "locationName": "nameContains" - } - } - }, - "output": { - "type": "structure", - "members": { - "BotAliases": { - "type": "list", - "member": { - "type": "structure", - "members": { - "name": {}, - "description": {}, - "botVersion": {}, - "botName": {}, - "lastUpdatedDate": { - "type": "timestamp" - }, - "createdDate": { - "type": "timestamp" - }, - "checksum": {} - } - } - }, - "nextToken": {} - } - } - }, - "GetBotChannelAssociation": { - "http": { - "method": "GET", - "requestUri": "/bots/{botName}/aliases/{aliasName}/channels/{name}", - "responseCode": 200 - }, - "input": { - "type": "structure", - "required": [ - "name", - "botName", - "botAlias" - ], - "members": { - "name": { - "location": "uri", - "locationName": "name" - }, - "botName": { - "location": "uri", - "locationName": "botName" - }, - "botAlias": { - "location": "uri", - "locationName": "aliasName" - } - } - }, - "output": { - "type": "structure", - "members": { - "name": {}, - "description": {}, - "botAlias": {}, - "botName": {}, - "createdDate": { - "type": "timestamp" - }, - "type": {}, - "botConfiguration": { - "shape": "S23" - } - } - } - }, - "GetBotChannelAssociations": { - "http": { - "method": "GET", - "requestUri": "/bots/{botName}/aliases/{aliasName}/channels/", - "responseCode": 200 - }, - "input": { - "type": "structure", - "required": [ - "botName", - "botAlias" - ], - "members": { - "botName": { - "location": "uri", - "locationName": "botName" - }, - "botAlias": { - "location": "uri", - "locationName": "aliasName" - }, - "nextToken": { - "location": "querystring", - "locationName": "nextToken" - }, - "maxResults": { - "location": "querystring", - "locationName": "maxResults", - "type": "integer" - }, - "nameContains": { - "location": "querystring", - "locationName": "nameContains" - } - } - }, - "output": { - "type": "structure", - "members": { - "botChannelAssociations": { - "type": "list", - "member": { - "type": "structure", - "members": { - "name": {}, - "description": {}, - "botAlias": {}, - "botName": {}, - "createdDate": { - "type": "timestamp" - }, - "type": {}, - "botConfiguration": { - "shape": "S23" - } - } - } - }, - "nextToken": {} - } - } - }, - "GetBotVersions": { - "http": { - "method": "GET", - "requestUri": "/bots/{name}/versions/", - "responseCode": 200 - }, - "input": { - "type": "structure", - "required": [ - "name" - ], - "members": { - "name": { - "location": "uri", - "locationName": "name" - }, - "nextToken": { - "location": "querystring", - "locationName": "nextToken" - }, - "maxResults": { - "location": "querystring", - "locationName": "maxResults", - "type": "integer" - } - } - }, - "output": { - "type": "structure", - "members": { - "bots": { - "shape": "S2b" - }, - "nextToken": {} - } - } - }, - "GetBots": { - "http": { - "method": "GET", - "requestUri": "/bots/", - "responseCode": 200 - }, - "input": { - "type": "structure", - "members": { - "nextToken": { - "location": "querystring", - "locationName": "nextToken" - }, - "maxResults": { - "location": "querystring", - "locationName": "maxResults", - "type": "integer" - }, - "nameContains": { - "location": "querystring", - "locationName": "nameContains" - } - } - }, - "output": { - "type": "structure", - "members": { - "bots": { - "shape": "S2b" - }, - "nextToken": {} - } - } - }, - "GetBuiltinIntent": { - "http": { - "method": "GET", - "requestUri": "/builtins/intents/{signature}", - "responseCode": 200 - }, - "input": { - "type": "structure", - "required": [ - "signature" - ], - "members": { - "signature": { - "location": "uri", - "locationName": "signature" - } - } - }, - "output": { - "type": "structure", - "members": { - "signature": {}, - "supportedLocales": { - "shape": "S2h" - }, - "slots": { - "type": "list", - "member": { - "type": "structure", - "members": { - "name": {} - } - } - } - } - } - }, - "GetBuiltinIntents": { - "http": { - "method": "GET", - "requestUri": "/builtins/intents/", - "responseCode": 200 - }, - "input": { - "type": "structure", - "members": { - "locale": { - "location": "querystring", - "locationName": "locale" - }, - "signatureContains": { - "location": "querystring", - "locationName": "signatureContains" - }, - "nextToken": { - "location": "querystring", - "locationName": "nextToken" - }, - "maxResults": { - "location": "querystring", - "locationName": "maxResults", - "type": "integer" - } - } - }, - "output": { - "type": "structure", - "members": { - "intents": { - "type": "list", - "member": { - "type": "structure", - "members": { - "signature": {}, - "supportedLocales": { - "shape": "S2h" - } - } - } - }, - "nextToken": {} - } - } - }, - "GetBuiltinSlotTypes": { - "http": { - "method": "GET", - "requestUri": "/builtins/slottypes/", - "responseCode": 200 - }, - "input": { - "type": "structure", - "members": { - "locale": { - "location": "querystring", - "locationName": "locale" - }, - "signatureContains": { - "location": "querystring", - "locationName": "signatureContains" - }, - "nextToken": { - "location": "querystring", - "locationName": "nextToken" - }, - "maxResults": { - "location": "querystring", - "locationName": "maxResults", - "type": "integer" - } - } - }, - "output": { - "type": "structure", - "members": { - "slotTypes": { - "type": "list", - "member": { - "type": "structure", - "members": { - "signature": {}, - "supportedLocales": { - "shape": "S2h" - } - } - } - }, - "nextToken": {} - } - } - }, - "GetExport": { - "http": { - "method": "GET", - "requestUri": "/exports/", - "responseCode": 200 - }, - "input": { - "type": "structure", - "required": [ - "name", - "version", - "resourceType", - "exportType" - ], - "members": { - "name": { - "location": "querystring", - "locationName": "name" - }, - "version": { - "location": "querystring", - "locationName": "version" - }, - "resourceType": { - "location": "querystring", - "locationName": "resourceType" - }, - "exportType": { - "location": "querystring", - "locationName": "exportType" - } - } - }, - "output": { - "type": "structure", - "members": { - "name": {}, - "version": {}, - "resourceType": {}, - "exportType": {}, - "exportStatus": {}, - "failureReason": {}, - "url": {} - } - } - }, - "GetIntent": { - "http": { - "method": "GET", - "requestUri": "/intents/{name}/versions/{version}", - "responseCode": 200 - }, - "input": { - "type": "structure", - "required": [ - "name", - "version" - ], - "members": { - "name": { - "location": "uri", - "locationName": "name" - }, - "version": { - "location": "uri", - "locationName": "version" - } - } - }, - "output": { - "type": "structure", - "members": { - "name": {}, - "description": {}, - "slots": { - "shape": "Sp" - }, - "sampleUtterances": { - "shape": "Sx" - }, - "confirmationPrompt": { - "shape": "Sa" - }, - "rejectionStatement": { - "shape": "Sh" - }, - "followUpPrompt": { - "shape": "Sy" - }, - "conclusionStatement": { - "shape": "Sh" - }, - "dialogCodeHook": { - "shape": "Sz" - }, - "fulfillmentActivity": { - "shape": "S12" - }, - "parentIntentSignature": {}, - "lastUpdatedDate": { - "type": "timestamp" - }, - "createdDate": { - "type": "timestamp" - }, - "version": {}, - "checksum": {} - } - } - }, - "GetIntentVersions": { - "http": { - "method": "GET", - "requestUri": "/intents/{name}/versions/", - "responseCode": 200 - }, - "input": { - "type": "structure", - "required": [ - "name" - ], - "members": { - "name": { - "location": "uri", - "locationName": "name" - }, - "nextToken": { - "location": "querystring", - "locationName": "nextToken" - }, - "maxResults": { - "location": "querystring", - "locationName": "maxResults", - "type": "integer" - } - } - }, - "output": { - "type": "structure", - "members": { - "intents": { - "shape": "S33" - }, - "nextToken": {} - } - } - }, - "GetIntents": { - "http": { - "method": "GET", - "requestUri": "/intents/", - "responseCode": 200 - }, - "input": { - "type": "structure", - "members": { - "nextToken": { - "location": "querystring", - "locationName": "nextToken" - }, - "maxResults": { - "location": "querystring", - "locationName": "maxResults", - "type": "integer" - }, - "nameContains": { - "location": "querystring", - "locationName": "nameContains" - } - } - }, - "output": { - "type": "structure", - "members": { - "intents": { - "shape": "S33" - }, - "nextToken": {} - } - } - }, - "GetSlotType": { - "http": { - "method": "GET", - "requestUri": "/slottypes/{name}/versions/{version}", - "responseCode": 200 - }, - "input": { - "type": "structure", - "required": [ - "name", - "version" - ], - "members": { - "name": { - "location": "uri", - "locationName": "name" - }, - "version": { - "location": "uri", - "locationName": "version" - } - } - }, - "output": { - "type": "structure", - "members": { - "name": {}, - "description": {}, - "enumerationValues": { - "shape": "S18" - }, - "lastUpdatedDate": { - "type": "timestamp" - }, - "createdDate": { - "type": "timestamp" - }, - "version": {}, - "checksum": {}, - "valueSelectionStrategy": {} - } - } - }, - "GetSlotTypeVersions": { - "http": { - "method": "GET", - "requestUri": "/slottypes/{name}/versions/", - "responseCode": 200 - }, - "input": { - "type": "structure", - "required": [ - "name" - ], - "members": { - "name": { - "location": "uri", - "locationName": "name" - }, - "nextToken": { - "location": "querystring", - "locationName": "nextToken" - }, - "maxResults": { - "location": "querystring", - "locationName": "maxResults", - "type": "integer" - } - } - }, - "output": { - "type": "structure", - "members": { - "slotTypes": { - "shape": "S3b" - }, - "nextToken": {} - } - } - }, - "GetSlotTypes": { - "http": { - "method": "GET", - "requestUri": "/slottypes/", - "responseCode": 200 - }, - "input": { - "type": "structure", - "members": { - "nextToken": { - "location": "querystring", - "locationName": "nextToken" - }, - "maxResults": { - "location": "querystring", - "locationName": "maxResults", - "type": "integer" - }, - "nameContains": { - "location": "querystring", - "locationName": "nameContains" - } - } - }, - "output": { - "type": "structure", - "members": { - "slotTypes": { - "shape": "S3b" - }, - "nextToken": {} - } - } - }, - "GetUtterancesView": { - "http": { - "method": "GET", - "requestUri": "/bots/{botname}/utterances?view=aggregation", - "responseCode": 200 - }, - "input": { - "type": "structure", - "required": [ - "botName", - "botVersions", - "statusType" - ], - "members": { - "botName": { - "location": "uri", - "locationName": "botname" - }, - "botVersions": { - "location": "querystring", - "locationName": "bot_versions", - "type": "list", - "member": {} - }, - "statusType": { - "location": "querystring", - "locationName": "status_type" - } - } - }, - "output": { - "type": "structure", - "members": { - "botName": {}, - "utterances": { - "type": "list", - "member": { - "type": "structure", - "members": { - "botVersion": {}, - "utterances": { - "type": "list", - "member": { - "type": "structure", - "members": { - "utteranceString": {}, - "count": { - "type": "integer" - }, - "distinctUsers": { - "type": "integer" - }, - "firstUtteredDate": { - "type": "timestamp" - }, - "lastUtteredDate": { - "type": "timestamp" - } - } - } - } - } - } - } - } - } - }, - "PutBot": { - "http": { - "method": "PUT", - "requestUri": "/bots/{name}/versions/$LATEST", - "responseCode": 200 - }, - "input": { - "type": "structure", - "required": [ - "name", - "locale", - "childDirected" - ], - "members": { - "name": { - "location": "uri", - "locationName": "name" - }, - "description": {}, - "intents": { - "shape": "S6" - }, - "clarificationPrompt": { - "shape": "Sa" - }, - "abortStatement": { - "shape": "Sh" - }, - "idleSessionTTLInSeconds": { - "type": "integer" - }, - "voiceId": {}, - "checksum": {}, - "processBehavior": {}, - "locale": {}, - "childDirected": { - "type": "boolean" - } - } - }, - "output": { - "type": "structure", - "members": { - "name": {}, - "description": {}, - "intents": { - "shape": "S6" - }, - "clarificationPrompt": { - "shape": "Sa" - }, - "abortStatement": { - "shape": "Sh" - }, - "status": {}, - "failureReason": {}, - "lastUpdatedDate": { - "type": "timestamp" - }, - "createdDate": { - "type": "timestamp" - }, - "idleSessionTTLInSeconds": { - "type": "integer" - }, - "voiceId": {}, - "checksum": {}, - "version": {}, - "locale": {}, - "childDirected": { - "type": "boolean" - } - } - } - }, - "PutBotAlias": { - "http": { - "method": "PUT", - "requestUri": "/bots/{botName}/aliases/{name}", - "responseCode": 200 - }, - "input": { - "type": "structure", - "required": [ - "name", - "botVersion", - "botName" - ], - "members": { - "name": { - "location": "uri", - "locationName": "name" - }, - "description": {}, - "botVersion": {}, - "botName": { - "location": "uri", - "locationName": "botName" - }, - "checksum": {} - } - }, - "output": { - "type": "structure", - "members": { - "name": {}, - "description": {}, - "botVersion": {}, - "botName": {}, - "lastUpdatedDate": { - "type": "timestamp" - }, - "createdDate": { - "type": "timestamp" - }, - "checksum": {} - } - } - }, - "PutIntent": { - "http": { - "method": "PUT", - "requestUri": "/intents/{name}/versions/$LATEST", - "responseCode": 200 - }, - "input": { - "type": "structure", - "required": [ - "name" - ], - "members": { - "name": { - "location": "uri", - "locationName": "name" - }, - "description": {}, - "slots": { - "shape": "Sp" - }, - "sampleUtterances": { - "shape": "Sx" - }, - "confirmationPrompt": { - "shape": "Sa" - }, - "rejectionStatement": { - "shape": "Sh" - }, - "followUpPrompt": { - "shape": "Sy" - }, - "conclusionStatement": { - "shape": "Sh" - }, - "dialogCodeHook": { - "shape": "Sz" - }, - "fulfillmentActivity": { - "shape": "S12" - }, - "parentIntentSignature": {}, - "checksum": {} - } - }, - "output": { - "type": "structure", - "members": { - "name": {}, - "description": {}, - "slots": { - "shape": "Sp" - }, - "sampleUtterances": { - "shape": "Sx" - }, - "confirmationPrompt": { - "shape": "Sa" - }, - "rejectionStatement": { - "shape": "Sh" - }, - "followUpPrompt": { - "shape": "Sy" - }, - "conclusionStatement": { - "shape": "Sh" - }, - "dialogCodeHook": { - "shape": "Sz" - }, - "fulfillmentActivity": { - "shape": "S12" - }, - "parentIntentSignature": {}, - "lastUpdatedDate": { - "type": "timestamp" - }, - "createdDate": { - "type": "timestamp" - }, - "version": {}, - "checksum": {} - } - } - }, - "PutSlotType": { - "http": { - "method": "PUT", - "requestUri": "/slottypes/{name}/versions/$LATEST", - "responseCode": 200 - }, - "input": { - "type": "structure", - "required": [ - "name" - ], - "members": { - "name": { - "location": "uri", - "locationName": "name" - }, - "description": {}, - "enumerationValues": { - "shape": "S18" - }, - "checksum": {}, - "valueSelectionStrategy": {} - } - }, - "output": { - "type": "structure", - "members": { - "name": {}, - "description": {}, - "enumerationValues": { - "shape": "S18" - }, - "lastUpdatedDate": { - "type": "timestamp" - }, - "createdDate": { - "type": "timestamp" - }, - "version": {}, - "checksum": {}, - "valueSelectionStrategy": {} - } - } - } - }, - "shapes": { - "S6": { - "type": "list", - "member": { - "type": "structure", - "required": [ - "intentName", - "intentVersion" - ], - "members": { - "intentName": {}, - "intentVersion": {} - } - } - }, - "Sa": { - "type": "structure", - "required": [ - "messages", - "maxAttempts" - ], - "members": { - "messages": { - "shape": "Sb" - }, - "maxAttempts": { - "type": "integer" - }, - "responseCard": {} - } - }, - "Sb": { - "type": "list", - "member": { - "type": "structure", - "required": [ - "contentType", - "content" - ], - "members": { - "contentType": {}, - "content": {} - } - } - }, - "Sh": { - "type": "structure", - "required": [ - "messages" - ], - "members": { - "messages": { - "shape": "Sb" - }, - "responseCard": {} - } - }, - "Sp": { - "type": "list", - "member": { - "type": "structure", - "required": [ - "name", - "slotConstraint" - ], - "members": { - "name": {}, - "description": {}, - "slotConstraint": {}, - "slotType": {}, - "slotTypeVersion": {}, - "valueElicitationPrompt": { - "shape": "Sa" - }, - "priority": { - "type": "integer" - }, - "sampleUtterances": { - "type": "list", - "member": {} - }, - "responseCard": {} - } - } - }, - "Sx": { - "type": "list", - "member": {} - }, - "Sy": { - "type": "structure", - "required": [ - "prompt", - "rejectionStatement" - ], - "members": { - "prompt": { - "shape": "Sa" - }, - "rejectionStatement": { - "shape": "Sh" - } - } - }, - "Sz": { - "type": "structure", - "required": [ - "uri", - "messageVersion" - ], - "members": { - "uri": {}, - "messageVersion": {} - } - }, - "S12": { - "type": "structure", - "required": [ - "type" - ], - "members": { - "type": {}, - "codeHook": { - "shape": "Sz" - } - } - }, - "S18": { - "type": "list", - "member": { - "type": "structure", - "required": [ - "value" - ], - "members": { - "value": {}, - "synonyms": { - "type": "list", - "member": {} - } - } - } - }, - "S23": { - "type": "map", - "key": {}, - "value": {}, - "sensitive": true - }, - "S2b": { - "type": "list", - "member": { - "type": "structure", - "members": { - "name": {}, - "description": {}, - "status": {}, - "lastUpdatedDate": { - "type": "timestamp" - }, - "createdDate": { - "type": "timestamp" - }, - "version": {} - } - } - }, - "S2h": { - "type": "list", - "member": {} - }, - "S33": { - "type": "list", - "member": { - "type": "structure", - "members": { - "name": {}, - "description": {}, - "lastUpdatedDate": { - "type": "timestamp" - }, - "createdDate": { - "type": "timestamp" - }, - "version": {} - } - } - }, - "S3b": { - "type": "list", - "member": { - "type": "structure", - "members": { - "name": {}, - "description": {}, - "lastUpdatedDate": { - "type": "timestamp" - }, - "createdDate": { - "type": "timestamp" - }, - "version": {} - } - } - } - } -} \ No newline at end of file diff --git a/workshops/monte-carlo-on-ec2-spot-fleet/src/web/node_modules/aws-sdk/apis/lex-models-2017-04-19.paginators.json b/workshops/monte-carlo-on-ec2-spot-fleet/src/web/node_modules/aws-sdk/apis/lex-models-2017-04-19.paginators.json deleted file mode 100644 index 57cb7bf2..00000000 --- a/workshops/monte-carlo-on-ec2-spot-fleet/src/web/node_modules/aws-sdk/apis/lex-models-2017-04-19.paginators.json +++ /dev/null @@ -1,54 +0,0 @@ -{ - "pagination": { - "GetBotAliases": { - "input_token": "nextToken", - "output_token": "nextToken", - "limit_key": "maxResults" - }, - "GetBotChannelAssociations": { - "input_token": "nextToken", - "output_token": "nextToken", - "limit_key": "maxResults" - }, - "GetBotVersions": { - "input_token": "nextToken", - "output_token": "nextToken", - "limit_key": "maxResults" - }, - "GetBots": { - "input_token": "nextToken", - "output_token": "nextToken", - "limit_key": "maxResults" - }, - "GetBuiltinIntents": { - "input_token": "nextToken", - "output_token": "nextToken", - "limit_key": "maxResults" - }, - "GetBuiltinSlotTypes": { - "input_token": "nextToken", - "output_token": "nextToken", - "limit_key": "maxResults" - }, - "GetIntentVersions": { - "input_token": "nextToken", - "output_token": "nextToken", - "limit_key": "maxResults" - }, - "GetIntents": { - "input_token": "nextToken", - "output_token": "nextToken", - "limit_key": "maxResults" - }, - "GetSlotTypeVersions": { - "input_token": "nextToken", - "output_token": "nextToken", - "limit_key": "maxResults" - }, - "GetSlotTypes": { - "input_token": "nextToken", - "output_token": "nextToken", - "limit_key": "maxResults" - } - } -} diff --git a/workshops/monte-carlo-on-ec2-spot-fleet/src/web/node_modules/aws-sdk/apis/lightsail-2016-11-28.examples.json b/workshops/monte-carlo-on-ec2-spot-fleet/src/web/node_modules/aws-sdk/apis/lightsail-2016-11-28.examples.json deleted file mode 100644 index 0ea7e3b0..00000000 --- a/workshops/monte-carlo-on-ec2-spot-fleet/src/web/node_modules/aws-sdk/apis/lightsail-2016-11-28.examples.json +++ /dev/null @@ -1,5 +0,0 @@ -{ - "version": "1.0", - "examples": { - } -} diff --git a/workshops/monte-carlo-on-ec2-spot-fleet/src/web/node_modules/aws-sdk/apis/lightsail-2016-11-28.min.json b/workshops/monte-carlo-on-ec2-spot-fleet/src/web/node_modules/aws-sdk/apis/lightsail-2016-11-28.min.json deleted file mode 100644 index fa2889b8..00000000 --- a/workshops/monte-carlo-on-ec2-spot-fleet/src/web/node_modules/aws-sdk/apis/lightsail-2016-11-28.min.json +++ /dev/null @@ -1,1382 +0,0 @@ -{ - "version": "2.0", - "metadata": { - "apiVersion": "2016-11-28", - "endpointPrefix": "lightsail", - "jsonVersion": "1.1", - "protocol": "json", - "serviceFullName": "Amazon Lightsail", - "signatureVersion": "v4", - "targetPrefix": "Lightsail_20161128", - "uid": "lightsail-2016-11-28" - }, - "operations": { - "AllocateStaticIp": { - "input": { - "type": "structure", - "required": [ - "staticIpName" - ], - "members": { - "staticIpName": {} - } - }, - "output": { - "type": "structure", - "members": { - "operations": { - "shape": "S4" - } - } - } - }, - "AttachStaticIp": { - "input": { - "type": "structure", - "required": [ - "staticIpName", - "instanceName" - ], - "members": { - "staticIpName": {}, - "instanceName": {} - } - }, - "output": { - "type": "structure", - "members": { - "operations": { - "shape": "S4" - } - } - } - }, - "CloseInstancePublicPorts": { - "input": { - "type": "structure", - "required": [ - "portInfo", - "instanceName" - ], - "members": { - "portInfo": { - "shape": "Si" - }, - "instanceName": {} - } - }, - "output": { - "type": "structure", - "members": { - "operation": { - "shape": "S5" - } - } - } - }, - "CreateDomain": { - "input": { - "type": "structure", - "required": [ - "domainName" - ], - "members": { - "domainName": {} - } - }, - "output": { - "type": "structure", - "members": { - "operation": { - "shape": "S5" - } - } - } - }, - "CreateDomainEntry": { - "input": { - "type": "structure", - "required": [ - "domainName", - "domainEntry" - ], - "members": { - "domainName": {}, - "domainEntry": { - "shape": "Sq" - } - } - }, - "output": { - "type": "structure", - "members": { - "operation": { - "shape": "S5" - } - } - } - }, - "CreateInstanceSnapshot": { - "input": { - "type": "structure", - "required": [ - "instanceSnapshotName", - "instanceName" - ], - "members": { - "instanceSnapshotName": {}, - "instanceName": {} - } - }, - "output": { - "type": "structure", - "members": { - "operations": { - "shape": "S4" - } - } - } - }, - "CreateInstances": { - "input": { - "type": "structure", - "required": [ - "instanceNames", - "availabilityZone", - "blueprintId", - "bundleId" - ], - "members": { - "instanceNames": { - "shape": "Sy" - }, - "availabilityZone": {}, - "customImageName": { - "deprecated": true - }, - "blueprintId": {}, - "bundleId": {}, - "userData": {}, - "keyPairName": {} - } - }, - "output": { - "type": "structure", - "members": { - "operations": { - "shape": "S4" - } - } - } - }, - "CreateInstancesFromSnapshot": { - "input": { - "type": "structure", - "required": [ - "instanceNames", - "availabilityZone", - "instanceSnapshotName", - "bundleId" - ], - "members": { - "instanceNames": { - "shape": "Sy" - }, - "availabilityZone": {}, - "instanceSnapshotName": {}, - "bundleId": {}, - "userData": {}, - "keyPairName": {} - } - }, - "output": { - "type": "structure", - "members": { - "operations": { - "shape": "S4" - } - } - } - }, - "CreateKeyPair": { - "input": { - "type": "structure", - "required": [ - "keyPairName" - ], - "members": { - "keyPairName": {} - } - }, - "output": { - "type": "structure", - "members": { - "keyPair": { - "shape": "S14" - }, - "publicKeyBase64": {}, - "privateKeyBase64": {}, - "operation": { - "shape": "S5" - } - } - } - }, - "DeleteDomain": { - "input": { - "type": "structure", - "required": [ - "domainName" - ], - "members": { - "domainName": {} - } - }, - "output": { - "type": "structure", - "members": { - "operation": { - "shape": "S5" - } - } - } - }, - "DeleteDomainEntry": { - "input": { - "type": "structure", - "required": [ - "domainName", - "domainEntry" - ], - "members": { - "domainName": {}, - "domainEntry": { - "shape": "Sq" - } - } - }, - "output": { - "type": "structure", - "members": { - "operation": { - "shape": "S5" - } - } - } - }, - "DeleteInstance": { - "input": { - "type": "structure", - "required": [ - "instanceName" - ], - "members": { - "instanceName": {} - } - }, - "output": { - "type": "structure", - "members": { - "operations": { - "shape": "S4" - } - } - } - }, - "DeleteInstanceSnapshot": { - "input": { - "type": "structure", - "required": [ - "instanceSnapshotName" - ], - "members": { - "instanceSnapshotName": {} - } - }, - "output": { - "type": "structure", - "members": { - "operations": { - "shape": "S4" - } - } - } - }, - "DeleteKeyPair": { - "input": { - "type": "structure", - "required": [ - "keyPairName" - ], - "members": { - "keyPairName": {} - } - }, - "output": { - "type": "structure", - "members": { - "operation": { - "shape": "S5" - } - } - } - }, - "DetachStaticIp": { - "input": { - "type": "structure", - "required": [ - "staticIpName" - ], - "members": { - "staticIpName": {} - } - }, - "output": { - "type": "structure", - "members": { - "operations": { - "shape": "S4" - } - } - } - }, - "DownloadDefaultKeyPair": { - "input": { - "type": "structure", - "members": {} - }, - "output": { - "type": "structure", - "members": { - "publicKeyBase64": {}, - "privateKeyBase64": {} - } - } - }, - "GetActiveNames": { - "input": { - "type": "structure", - "members": { - "pageToken": {} - } - }, - "output": { - "type": "structure", - "members": { - "activeNames": { - "shape": "Sy" - }, - "nextPageToken": {} - } - } - }, - "GetBlueprints": { - "input": { - "type": "structure", - "members": { - "includeInactive": { - "type": "boolean" - }, - "pageToken": {} - } - }, - "output": { - "type": "structure", - "members": { - "blueprints": { - "type": "list", - "member": { - "type": "structure", - "members": { - "blueprintId": {}, - "name": {}, - "group": {}, - "type": {}, - "description": {}, - "isActive": { - "type": "boolean" - }, - "minPower": { - "type": "integer" - }, - "version": {}, - "versionCode": {}, - "productUrl": {}, - "licenseUrl": {} - } - } - }, - "nextPageToken": {} - } - } - }, - "GetBundles": { - "input": { - "type": "structure", - "members": { - "includeInactive": { - "type": "boolean" - }, - "pageToken": {} - } - }, - "output": { - "type": "structure", - "members": { - "bundles": { - "type": "list", - "member": { - "type": "structure", - "members": { - "price": { - "type": "float" - }, - "cpuCount": { - "type": "integer" - }, - "diskSizeInGb": { - "type": "integer" - }, - "bundleId": {}, - "instanceType": {}, - "isActive": { - "type": "boolean" - }, - "name": {}, - "power": { - "type": "integer" - }, - "ramSizeInGb": { - "type": "float" - }, - "transferPerMonthInGb": { - "type": "integer" - } - } - } - }, - "nextPageToken": {} - } - } - }, - "GetDomain": { - "input": { - "type": "structure", - "required": [ - "domainName" - ], - "members": { - "domainName": {} - } - }, - "output": { - "type": "structure", - "members": { - "domain": { - "shape": "S1z" - } - } - } - }, - "GetDomains": { - "input": { - "type": "structure", - "members": { - "pageToken": {} - } - }, - "output": { - "type": "structure", - "members": { - "domains": { - "type": "list", - "member": { - "shape": "S1z" - } - }, - "nextPageToken": {} - } - } - }, - "GetInstance": { - "input": { - "type": "structure", - "required": [ - "instanceName" - ], - "members": { - "instanceName": {} - } - }, - "output": { - "type": "structure", - "members": { - "instance": { - "shape": "S26" - } - } - } - }, - "GetInstanceAccessDetails": { - "input": { - "type": "structure", - "required": [ - "instanceName" - ], - "members": { - "instanceName": {}, - "protocol": {} - } - }, - "output": { - "type": "structure", - "members": { - "accessDetails": { - "type": "structure", - "members": { - "certKey": {}, - "expiresAt": { - "type": "timestamp" - }, - "ipAddress": {}, - "password": {}, - "privateKey": {}, - "protocol": {}, - "instanceName": {}, - "username": {} - } - } - } - } - }, - "GetInstanceMetricData": { - "input": { - "type": "structure", - "required": [ - "instanceName", - "metricName", - "period", - "startTime", - "endTime", - "unit", - "statistics" - ], - "members": { - "instanceName": {}, - "metricName": {}, - "period": { - "type": "integer" - }, - "startTime": { - "type": "timestamp" - }, - "endTime": { - "type": "timestamp" - }, - "unit": {}, - "statistics": { - "type": "list", - "member": {} - } - } - }, - "output": { - "type": "structure", - "members": { - "metricName": {}, - "metricData": { - "type": "list", - "member": { - "type": "structure", - "members": { - "average": { - "type": "double" - }, - "maximum": { - "type": "double" - }, - "minimum": { - "type": "double" - }, - "sampleCount": { - "type": "double" - }, - "sum": { - "type": "double" - }, - "timestamp": { - "type": "timestamp" - }, - "unit": {} - } - } - } - } - } - }, - "GetInstancePortStates": { - "input": { - "type": "structure", - "required": [ - "instanceName" - ], - "members": { - "instanceName": {} - } - }, - "output": { - "type": "structure", - "members": { - "portStates": { - "type": "list", - "member": { - "type": "structure", - "members": { - "fromPort": { - "type": "integer" - }, - "toPort": { - "type": "integer" - }, - "protocol": {}, - "state": {} - } - } - } - } - } - }, - "GetInstanceSnapshot": { - "input": { - "type": "structure", - "required": [ - "instanceSnapshotName" - ], - "members": { - "instanceSnapshotName": {} - } - }, - "output": { - "type": "structure", - "members": { - "instanceSnapshot": { - "shape": "S35" - } - } - } - }, - "GetInstanceSnapshots": { - "input": { - "type": "structure", - "members": { - "pageToken": {} - } - }, - "output": { - "type": "structure", - "members": { - "instanceSnapshots": { - "type": "list", - "member": { - "shape": "S35" - } - }, - "nextPageToken": {} - } - } - }, - "GetInstanceState": { - "input": { - "type": "structure", - "required": [ - "instanceName" - ], - "members": { - "instanceName": {} - } - }, - "output": { - "type": "structure", - "members": { - "state": { - "shape": "S2i" - } - } - } - }, - "GetInstances": { - "input": { - "type": "structure", - "members": { - "pageToken": {} - } - }, - "output": { - "type": "structure", - "members": { - "instances": { - "type": "list", - "member": { - "shape": "S26" - } - }, - "nextPageToken": {} - } - } - }, - "GetKeyPair": { - "input": { - "type": "structure", - "required": [ - "keyPairName" - ], - "members": { - "keyPairName": {} - } - }, - "output": { - "type": "structure", - "members": { - "keyPair": { - "shape": "S14" - } - } - } - }, - "GetKeyPairs": { - "input": { - "type": "structure", - "members": { - "pageToken": {} - } - }, - "output": { - "type": "structure", - "members": { - "keyPairs": { - "type": "list", - "member": { - "shape": "S14" - } - }, - "nextPageToken": {} - } - } - }, - "GetOperation": { - "input": { - "type": "structure", - "required": [ - "operationId" - ], - "members": { - "operationId": {} - } - }, - "output": { - "type": "structure", - "members": { - "operation": { - "shape": "S5" - } - } - } - }, - "GetOperations": { - "input": { - "type": "structure", - "members": { - "pageToken": {} - } - }, - "output": { - "type": "structure", - "members": { - "operations": { - "shape": "S4" - }, - "nextPageToken": {} - } - } - }, - "GetOperationsForResource": { - "input": { - "type": "structure", - "required": [ - "resourceName" - ], - "members": { - "resourceName": {}, - "pageToken": {} - } - }, - "output": { - "type": "structure", - "members": { - "operations": { - "shape": "S4" - }, - "nextPageCount": { - "deprecated": true - }, - "nextPageToken": {} - } - } - }, - "GetRegions": { - "input": { - "type": "structure", - "members": { - "includeAvailabilityZones": { - "type": "boolean" - } - } - }, - "output": { - "type": "structure", - "members": { - "regions": { - "type": "list", - "member": { - "type": "structure", - "members": { - "continentCode": {}, - "description": {}, - "displayName": {}, - "name": {}, - "availabilityZones": { - "type": "list", - "member": { - "type": "structure", - "members": { - "zoneName": {}, - "state": {} - } - } - } - } - } - } - } - } - }, - "GetStaticIp": { - "input": { - "type": "structure", - "required": [ - "staticIpName" - ], - "members": { - "staticIpName": {} - } - }, - "output": { - "type": "structure", - "members": { - "staticIp": { - "shape": "S3y" - } - } - } - }, - "GetStaticIps": { - "input": { - "type": "structure", - "members": { - "pageToken": {} - } - }, - "output": { - "type": "structure", - "members": { - "staticIps": { - "type": "list", - "member": { - "shape": "S3y" - } - }, - "nextPageToken": {} - } - } - }, - "ImportKeyPair": { - "input": { - "type": "structure", - "required": [ - "keyPairName", - "publicKeyBase64" - ], - "members": { - "keyPairName": {}, - "publicKeyBase64": {} - } - }, - "output": { - "type": "structure", - "members": { - "operation": { - "shape": "S5" - } - } - } - }, - "IsVpcPeered": { - "input": { - "type": "structure", - "members": {} - }, - "output": { - "type": "structure", - "members": { - "isPeered": { - "type": "boolean" - } - } - } - }, - "OpenInstancePublicPorts": { - "input": { - "type": "structure", - "required": [ - "portInfo", - "instanceName" - ], - "members": { - "portInfo": { - "shape": "Si" - }, - "instanceName": {} - } - }, - "output": { - "type": "structure", - "members": { - "operation": { - "shape": "S5" - } - } - } - }, - "PeerVpc": { - "input": { - "type": "structure", - "members": {} - }, - "output": { - "type": "structure", - "members": { - "operation": { - "shape": "S5" - } - } - } - }, - "PutInstancePublicPorts": { - "input": { - "type": "structure", - "required": [ - "portInfos", - "instanceName" - ], - "members": { - "portInfos": { - "type": "list", - "member": { - "shape": "Si" - } - }, - "instanceName": {} - } - }, - "output": { - "type": "structure", - "members": { - "operation": { - "shape": "S5" - } - } - } - }, - "RebootInstance": { - "input": { - "type": "structure", - "required": [ - "instanceName" - ], - "members": { - "instanceName": {} - } - }, - "output": { - "type": "structure", - "members": { - "operations": { - "shape": "S4" - } - } - } - }, - "ReleaseStaticIp": { - "input": { - "type": "structure", - "required": [ - "staticIpName" - ], - "members": { - "staticIpName": {} - } - }, - "output": { - "type": "structure", - "members": { - "operations": { - "shape": "S4" - } - } - } - }, - "StartInstance": { - "input": { - "type": "structure", - "required": [ - "instanceName" - ], - "members": { - "instanceName": {} - } - }, - "output": { - "type": "structure", - "members": { - "operations": { - "shape": "S4" - } - } - } - }, - "StopInstance": { - "input": { - "type": "structure", - "required": [ - "instanceName" - ], - "members": { - "instanceName": {} - } - }, - "output": { - "type": "structure", - "members": { - "operations": { - "shape": "S4" - } - } - } - }, - "UnpeerVpc": { - "input": { - "type": "structure", - "members": {} - }, - "output": { - "type": "structure", - "members": { - "operation": { - "shape": "S5" - } - } - } - }, - "UpdateDomainEntry": { - "input": { - "type": "structure", - "required": [ - "domainName", - "domainEntry" - ], - "members": { - "domainName": {}, - "domainEntry": { - "shape": "Sq" - } - } - }, - "output": { - "type": "structure", - "members": { - "operations": { - "shape": "S4" - } - } - } - } - }, - "shapes": { - "S4": { - "type": "list", - "member": { - "shape": "S5" - } - }, - "S5": { - "type": "structure", - "members": { - "id": {}, - "resourceName": {}, - "resourceType": {}, - "createdAt": { - "type": "timestamp" - }, - "location": { - "shape": "S9" - }, - "isTerminal": { - "type": "boolean" - }, - "operationDetails": {}, - "operationType": {}, - "status": {}, - "statusChangedAt": { - "type": "timestamp" - }, - "errorCode": {}, - "errorDetails": {} - } - }, - "S9": { - "type": "structure", - "members": { - "availabilityZone": {}, - "regionName": {} - } - }, - "Si": { - "type": "structure", - "members": { - "fromPort": { - "type": "integer" - }, - "toPort": { - "type": "integer" - }, - "protocol": {} - } - }, - "Sq": { - "type": "structure", - "members": { - "id": {}, - "name": {}, - "target": {}, - "type": {}, - "options": { - "type": "map", - "key": {}, - "value": {} - } - } - }, - "Sy": { - "type": "list", - "member": {} - }, - "S14": { - "type": "structure", - "members": { - "name": {}, - "arn": {}, - "supportCode": {}, - "createdAt": { - "type": "timestamp" - }, - "location": { - "shape": "S9" - }, - "resourceType": {}, - "fingerprint": {} - } - }, - "S1z": { - "type": "structure", - "members": { - "name": {}, - "arn": {}, - "supportCode": {}, - "createdAt": { - "type": "timestamp" - }, - "location": { - "shape": "S9" - }, - "resourceType": {}, - "domainEntries": { - "type": "list", - "member": { - "shape": "Sq" - } - } - } - }, - "S26": { - "type": "structure", - "members": { - "name": {}, - "arn": {}, - "supportCode": {}, - "createdAt": { - "type": "timestamp" - }, - "location": { - "shape": "S9" - }, - "resourceType": {}, - "blueprintId": {}, - "blueprintName": {}, - "bundleId": {}, - "isStaticIp": { - "type": "boolean" - }, - "privateIpAddress": {}, - "publicIpAddress": {}, - "ipv6Address": {}, - "hardware": { - "type": "structure", - "members": { - "cpuCount": { - "type": "integer" - }, - "disks": { - "type": "list", - "member": { - "type": "structure", - "members": { - "name": {}, - "arn": {}, - "supportCode": {}, - "createdAt": { - "type": "timestamp" - }, - "location": { - "shape": "S9" - }, - "resourceType": {}, - "sizeInGb": { - "type": "integer" - }, - "gbInUse": { - "type": "integer" - }, - "isSystemDisk": { - "type": "boolean" - }, - "iops": { - "type": "integer" - }, - "path": {}, - "attachedTo": {}, - "isAttached": { - "type": "boolean" - }, - "attachmentState": {} - } - } - }, - "ramSizeInGb": { - "type": "float" - } - } - }, - "networking": { - "type": "structure", - "members": { - "monthlyTransfer": { - "type": "structure", - "members": { - "gbPerMonthAllocated": { - "type": "integer" - } - } - }, - "ports": { - "type": "list", - "member": { - "type": "structure", - "members": { - "fromPort": { - "type": "integer" - }, - "toPort": { - "type": "integer" - }, - "protocol": {}, - "accessFrom": {}, - "accessType": {}, - "commonName": {}, - "accessDirection": {} - } - } - } - } - }, - "state": { - "shape": "S2i" - }, - "username": {}, - "sshKeyName": {} - } - }, - "S2i": { - "type": "structure", - "members": { - "code": { - "type": "integer" - }, - "name": {} - } - }, - "S35": { - "type": "structure", - "members": { - "name": {}, - "arn": {}, - "supportCode": {}, - "createdAt": { - "type": "timestamp" - }, - "location": { - "shape": "S9" - }, - "resourceType": {}, - "state": {}, - "progress": {}, - "fromInstanceName": {}, - "fromInstanceArn": {}, - "fromBlueprintId": {}, - "fromBundleId": {}, - "sizeInGb": { - "type": "integer" - } - } - }, - "S3y": { - "type": "structure", - "members": { - "name": {}, - "arn": {}, - "supportCode": {}, - "createdAt": { - "type": "timestamp" - }, - "location": { - "shape": "S9" - }, - "resourceType": {}, - "ipAddress": {}, - "attachedTo": {}, - "isAttached": { - "type": "boolean" - } - } - } - } -} \ No newline at end of file diff --git a/workshops/monte-carlo-on-ec2-spot-fleet/src/web/node_modules/aws-sdk/apis/lightsail-2016-11-28.paginators.json b/workshops/monte-carlo-on-ec2-spot-fleet/src/web/node_modules/aws-sdk/apis/lightsail-2016-11-28.paginators.json deleted file mode 100644 index 5677bd8e..00000000 --- a/workshops/monte-carlo-on-ec2-spot-fleet/src/web/node_modules/aws-sdk/apis/lightsail-2016-11-28.paginators.json +++ /dev/null @@ -1,4 +0,0 @@ -{ - "pagination": { - } -} diff --git a/workshops/monte-carlo-on-ec2-spot-fleet/src/web/node_modules/aws-sdk/apis/logs-2014-03-28.examples.json b/workshops/monte-carlo-on-ec2-spot-fleet/src/web/node_modules/aws-sdk/apis/logs-2014-03-28.examples.json deleted file mode 100644 index 0ea7e3b0..00000000 --- a/workshops/monte-carlo-on-ec2-spot-fleet/src/web/node_modules/aws-sdk/apis/logs-2014-03-28.examples.json +++ /dev/null @@ -1,5 +0,0 @@ -{ - "version": "1.0", - "examples": { - } -} diff --git a/workshops/monte-carlo-on-ec2-spot-fleet/src/web/node_modules/aws-sdk/apis/logs-2014-03-28.min.json b/workshops/monte-carlo-on-ec2-spot-fleet/src/web/node_modules/aws-sdk/apis/logs-2014-03-28.min.json deleted file mode 100644 index 83c9c006..00000000 --- a/workshops/monte-carlo-on-ec2-spot-fleet/src/web/node_modules/aws-sdk/apis/logs-2014-03-28.min.json +++ /dev/null @@ -1,867 +0,0 @@ -{ - "version": "2.0", - "metadata": { - "apiVersion": "2014-03-28", - "endpointPrefix": "logs", - "jsonVersion": "1.1", - "protocol": "json", - "serviceFullName": "Amazon CloudWatch Logs", - "signatureVersion": "v4", - "targetPrefix": "Logs_20140328", - "uid": "logs-2014-03-28" - }, - "operations": { - "AssociateKmsKey": { - "input": { - "type": "structure", - "required": [ - "logGroupName", - "kmsKeyId" - ], - "members": { - "logGroupName": {}, - "kmsKeyId": {} - } - } - }, - "CancelExportTask": { - "input": { - "type": "structure", - "required": [ - "taskId" - ], - "members": { - "taskId": {} - } - } - }, - "CreateExportTask": { - "input": { - "type": "structure", - "required": [ - "logGroupName", - "from", - "to", - "destination" - ], - "members": { - "taskName": {}, - "logGroupName": {}, - "logStreamNamePrefix": {}, - "from": { - "type": "long" - }, - "to": { - "type": "long" - }, - "destination": {}, - "destinationPrefix": {} - } - }, - "output": { - "type": "structure", - "members": { - "taskId": {} - } - } - }, - "CreateLogGroup": { - "input": { - "type": "structure", - "required": [ - "logGroupName" - ], - "members": { - "logGroupName": {}, - "kmsKeyId": {}, - "tags": { - "shape": "Se" - } - } - } - }, - "CreateLogStream": { - "input": { - "type": "structure", - "required": [ - "logGroupName", - "logStreamName" - ], - "members": { - "logGroupName": {}, - "logStreamName": {} - } - } - }, - "DeleteDestination": { - "input": { - "type": "structure", - "required": [ - "destinationName" - ], - "members": { - "destinationName": {} - } - } - }, - "DeleteLogGroup": { - "input": { - "type": "structure", - "required": [ - "logGroupName" - ], - "members": { - "logGroupName": {} - } - } - }, - "DeleteLogStream": { - "input": { - "type": "structure", - "required": [ - "logGroupName", - "logStreamName" - ], - "members": { - "logGroupName": {}, - "logStreamName": {} - } - } - }, - "DeleteMetricFilter": { - "input": { - "type": "structure", - "required": [ - "logGroupName", - "filterName" - ], - "members": { - "logGroupName": {}, - "filterName": {} - } - } - }, - "DeleteResourcePolicy": { - "input": { - "type": "structure", - "members": { - "policyName": {} - } - } - }, - "DeleteRetentionPolicy": { - "input": { - "type": "structure", - "required": [ - "logGroupName" - ], - "members": { - "logGroupName": {} - } - } - }, - "DeleteSubscriptionFilter": { - "input": { - "type": "structure", - "required": [ - "logGroupName", - "filterName" - ], - "members": { - "logGroupName": {}, - "filterName": {} - } - } - }, - "DescribeDestinations": { - "input": { - "type": "structure", - "members": { - "DestinationNamePrefix": {}, - "nextToken": {}, - "limit": { - "type": "integer" - } - } - }, - "output": { - "type": "structure", - "members": { - "destinations": { - "type": "list", - "member": { - "shape": "Sx" - } - }, - "nextToken": {} - } - } - }, - "DescribeExportTasks": { - "input": { - "type": "structure", - "members": { - "taskId": {}, - "statusCode": {}, - "nextToken": {}, - "limit": { - "type": "integer" - } - } - }, - "output": { - "type": "structure", - "members": { - "exportTasks": { - "type": "list", - "member": { - "type": "structure", - "members": { - "taskId": {}, - "taskName": {}, - "logGroupName": {}, - "from": { - "type": "long" - }, - "to": { - "type": "long" - }, - "destination": {}, - "destinationPrefix": {}, - "status": { - "type": "structure", - "members": { - "code": {}, - "message": {} - } - }, - "executionInfo": { - "type": "structure", - "members": { - "creationTime": { - "type": "long" - }, - "completionTime": { - "type": "long" - } - } - } - } - } - }, - "nextToken": {} - } - } - }, - "DescribeLogGroups": { - "input": { - "type": "structure", - "members": { - "logGroupNamePrefix": {}, - "nextToken": {}, - "limit": { - "type": "integer" - } - } - }, - "output": { - "type": "structure", - "members": { - "logGroups": { - "type": "list", - "member": { - "type": "structure", - "members": { - "logGroupName": {}, - "creationTime": { - "type": "long" - }, - "retentionInDays": { - "type": "integer" - }, - "metricFilterCount": { - "type": "integer" - }, - "arn": {}, - "storedBytes": { - "type": "long" - }, - "kmsKeyId": {} - } - } - }, - "nextToken": {} - } - } - }, - "DescribeLogStreams": { - "input": { - "type": "structure", - "required": [ - "logGroupName" - ], - "members": { - "logGroupName": {}, - "logStreamNamePrefix": {}, - "orderBy": {}, - "descending": { - "type": "boolean" - }, - "nextToken": {}, - "limit": { - "type": "integer" - } - } - }, - "output": { - "type": "structure", - "members": { - "logStreams": { - "type": "list", - "member": { - "type": "structure", - "members": { - "logStreamName": {}, - "creationTime": { - "type": "long" - }, - "firstEventTimestamp": { - "type": "long" - }, - "lastEventTimestamp": { - "type": "long" - }, - "lastIngestionTime": { - "type": "long" - }, - "uploadSequenceToken": {}, - "arn": {}, - "storedBytes": { - "type": "long" - } - } - } - }, - "nextToken": {} - } - } - }, - "DescribeMetricFilters": { - "input": { - "type": "structure", - "members": { - "logGroupName": {}, - "filterNamePrefix": {}, - "nextToken": {}, - "limit": { - "type": "integer" - }, - "metricName": {}, - "metricNamespace": {} - } - }, - "output": { - "type": "structure", - "members": { - "metricFilters": { - "type": "list", - "member": { - "type": "structure", - "members": { - "filterName": {}, - "filterPattern": {}, - "metricTransformations": { - "shape": "S1v" - }, - "creationTime": { - "type": "long" - }, - "logGroupName": {} - } - } - }, - "nextToken": {} - } - } - }, - "DescribeResourcePolicies": { - "input": { - "type": "structure", - "members": { - "nextToken": {}, - "limit": { - "type": "integer" - } - } - }, - "output": { - "type": "structure", - "members": { - "resourcePolicies": { - "type": "list", - "member": { - "shape": "S22" - } - }, - "nextToken": {} - } - } - }, - "DescribeSubscriptionFilters": { - "input": { - "type": "structure", - "required": [ - "logGroupName" - ], - "members": { - "logGroupName": {}, - "filterNamePrefix": {}, - "nextToken": {}, - "limit": { - "type": "integer" - } - } - }, - "output": { - "type": "structure", - "members": { - "subscriptionFilters": { - "type": "list", - "member": { - "type": "structure", - "members": { - "filterName": {}, - "logGroupName": {}, - "filterPattern": {}, - "destinationArn": {}, - "roleArn": {}, - "distribution": {}, - "creationTime": { - "type": "long" - } - } - } - }, - "nextToken": {} - } - } - }, - "DisassociateKmsKey": { - "input": { - "type": "structure", - "required": [ - "logGroupName" - ], - "members": { - "logGroupName": {} - } - } - }, - "FilterLogEvents": { - "input": { - "type": "structure", - "required": [ - "logGroupName" - ], - "members": { - "logGroupName": {}, - "logStreamNames": { - "type": "list", - "member": {} - }, - "startTime": { - "type": "long" - }, - "endTime": { - "type": "long" - }, - "filterPattern": {}, - "nextToken": {}, - "limit": { - "type": "integer" - }, - "interleaved": { - "type": "boolean" - } - } - }, - "output": { - "type": "structure", - "members": { - "events": { - "type": "list", - "member": { - "type": "structure", - "members": { - "logStreamName": {}, - "timestamp": { - "type": "long" - }, - "message": {}, - "ingestionTime": { - "type": "long" - }, - "eventId": {} - } - } - }, - "searchedLogStreams": { - "type": "list", - "member": { - "type": "structure", - "members": { - "logStreamName": {}, - "searchedCompletely": { - "type": "boolean" - } - } - } - }, - "nextToken": {} - } - } - }, - "GetLogEvents": { - "input": { - "type": "structure", - "required": [ - "logGroupName", - "logStreamName" - ], - "members": { - "logGroupName": {}, - "logStreamName": {}, - "startTime": { - "type": "long" - }, - "endTime": { - "type": "long" - }, - "nextToken": {}, - "limit": { - "type": "integer" - }, - "startFromHead": { - "type": "boolean" - } - } - }, - "output": { - "type": "structure", - "members": { - "events": { - "type": "list", - "member": { - "type": "structure", - "members": { - "timestamp": { - "type": "long" - }, - "message": {}, - "ingestionTime": { - "type": "long" - } - } - } - }, - "nextForwardToken": {}, - "nextBackwardToken": {} - } - } - }, - "ListTagsLogGroup": { - "input": { - "type": "structure", - "required": [ - "logGroupName" - ], - "members": { - "logGroupName": {} - } - }, - "output": { - "type": "structure", - "members": { - "tags": { - "shape": "Se" - } - } - } - }, - "PutDestination": { - "input": { - "type": "structure", - "required": [ - "destinationName", - "targetArn", - "roleArn" - ], - "members": { - "destinationName": {}, - "targetArn": {}, - "roleArn": {} - } - }, - "output": { - "type": "structure", - "members": { - "destination": { - "shape": "Sx" - } - } - } - }, - "PutDestinationPolicy": { - "input": { - "type": "structure", - "required": [ - "destinationName", - "accessPolicy" - ], - "members": { - "destinationName": {}, - "accessPolicy": {} - } - } - }, - "PutLogEvents": { - "input": { - "type": "structure", - "required": [ - "logGroupName", - "logStreamName", - "logEvents" - ], - "members": { - "logGroupName": {}, - "logStreamName": {}, - "logEvents": { - "type": "list", - "member": { - "type": "structure", - "required": [ - "timestamp", - "message" - ], - "members": { - "timestamp": { - "type": "long" - }, - "message": {} - } - } - }, - "sequenceToken": {} - } - }, - "output": { - "type": "structure", - "members": { - "nextSequenceToken": {}, - "rejectedLogEventsInfo": { - "type": "structure", - "members": { - "tooNewLogEventStartIndex": { - "type": "integer" - }, - "tooOldLogEventEndIndex": { - "type": "integer" - }, - "expiredLogEventEndIndex": { - "type": "integer" - } - } - } - } - } - }, - "PutMetricFilter": { - "input": { - "type": "structure", - "required": [ - "logGroupName", - "filterName", - "filterPattern", - "metricTransformations" - ], - "members": { - "logGroupName": {}, - "filterName": {}, - "filterPattern": {}, - "metricTransformations": { - "shape": "S1v" - } - } - } - }, - "PutResourcePolicy": { - "input": { - "type": "structure", - "members": { - "policyName": {}, - "policyDocument": {} - } - }, - "output": { - "type": "structure", - "members": { - "resourcePolicy": { - "shape": "S22" - } - } - } - }, - "PutRetentionPolicy": { - "input": { - "type": "structure", - "required": [ - "logGroupName", - "retentionInDays" - ], - "members": { - "logGroupName": {}, - "retentionInDays": { - "type": "integer" - } - } - } - }, - "PutSubscriptionFilter": { - "input": { - "type": "structure", - "required": [ - "logGroupName", - "filterName", - "filterPattern", - "destinationArn" - ], - "members": { - "logGroupName": {}, - "filterName": {}, - "filterPattern": {}, - "destinationArn": {}, - "roleArn": {}, - "distribution": {} - } - } - }, - "TagLogGroup": { - "input": { - "type": "structure", - "required": [ - "logGroupName", - "tags" - ], - "members": { - "logGroupName": {}, - "tags": { - "shape": "Se" - } - } - } - }, - "TestMetricFilter": { - "input": { - "type": "structure", - "required": [ - "filterPattern", - "logEventMessages" - ], - "members": { - "filterPattern": {}, - "logEventMessages": { - "type": "list", - "member": {} - } - } - }, - "output": { - "type": "structure", - "members": { - "matches": { - "type": "list", - "member": { - "type": "structure", - "members": { - "eventNumber": { - "type": "long" - }, - "eventMessage": {}, - "extractedValues": { - "type": "map", - "key": {}, - "value": {} - } - } - } - } - } - } - }, - "UntagLogGroup": { - "input": { - "type": "structure", - "required": [ - "logGroupName", - "tags" - ], - "members": { - "logGroupName": {}, - "tags": { - "type": "list", - "member": {} - } - } - } - } - }, - "shapes": { - "Se": { - "type": "map", - "key": {}, - "value": {} - }, - "Sx": { - "type": "structure", - "members": { - "destinationName": {}, - "targetArn": {}, - "roleArn": {}, - "accessPolicy": {}, - "arn": {}, - "creationTime": { - "type": "long" - } - } - }, - "S1v": { - "type": "list", - "member": { - "type": "structure", - "required": [ - "metricName", - "metricNamespace", - "metricValue" - ], - "members": { - "metricName": {}, - "metricNamespace": {}, - "metricValue": {}, - "defaultValue": { - "type": "double" - } - } - } - }, - "S22": { - "type": "structure", - "members": { - "policyName": {}, - "policyDocument": {}, - "lastUpdatedTime": { - "type": "long" - } - } - } - } -} \ No newline at end of file diff --git a/workshops/monte-carlo-on-ec2-spot-fleet/src/web/node_modules/aws-sdk/apis/logs-2014-03-28.paginators.json b/workshops/monte-carlo-on-ec2-spot-fleet/src/web/node_modules/aws-sdk/apis/logs-2014-03-28.paginators.json deleted file mode 100644 index d7020682..00000000 --- a/workshops/monte-carlo-on-ec2-spot-fleet/src/web/node_modules/aws-sdk/apis/logs-2014-03-28.paginators.json +++ /dev/null @@ -1,49 +0,0 @@ -{ - "pagination": { - "DescribeDestinations": { - "input_token": "nextToken", - "limit_key": "limit", - "output_token": "nextToken", - "result_key": "destinations" - }, - "DescribeLogGroups": { - "input_token": "nextToken", - "limit_key": "limit", - "output_token": "nextToken", - "result_key": "logGroups" - }, - "DescribeLogStreams": { - "input_token": "nextToken", - "limit_key": "limit", - "output_token": "nextToken", - "result_key": "logStreams" - }, - "DescribeMetricFilters": { - "input_token": "nextToken", - "limit_key": "limit", - "output_token": "nextToken", - "result_key": "metricFilters" - }, - "DescribeSubscriptionFilters": { - "input_token": "nextToken", - "limit_key": "limit", - "output_token": "nextToken", - "result_key": "subscriptionFilters" - }, - "FilterLogEvents": { - "input_token": "nextToken", - "limit_key": "limit", - "output_token": "nextToken", - "result_key": [ - "events", - "searchedLogStreams" - ] - }, - "GetLogEvents": { - "input_token": "nextToken", - "limit_key": "limit", - "output_token": "nextForwardToken", - "result_key": "events" - } - } -} \ No newline at end of file diff --git a/workshops/monte-carlo-on-ec2-spot-fleet/src/web/node_modules/aws-sdk/apis/machinelearning-2014-12-12.min.json b/workshops/monte-carlo-on-ec2-spot-fleet/src/web/node_modules/aws-sdk/apis/machinelearning-2014-12-12.min.json deleted file mode 100644 index 1e4d6333..00000000 --- a/workshops/monte-carlo-on-ec2-spot-fleet/src/web/node_modules/aws-sdk/apis/machinelearning-2014-12-12.min.json +++ /dev/null @@ -1,1108 +0,0 @@ -{ - "version": "2.0", - "metadata": { - "uid": "machinelearning-2014-12-12", - "apiVersion": "2014-12-12", - "endpointPrefix": "machinelearning", - "jsonVersion": "1.1", - "serviceFullName": "Amazon Machine Learning", - "signatureVersion": "v4", - "targetPrefix": "AmazonML_20141212", - "protocol": "json" - }, - "operations": { - "AddTags": { - "input": { - "type": "structure", - "required": [ - "Tags", - "ResourceId", - "ResourceType" - ], - "members": { - "Tags": { - "shape": "S2" - }, - "ResourceId": {}, - "ResourceType": {} - } - }, - "output": { - "type": "structure", - "members": { - "ResourceId": {}, - "ResourceType": {} - } - } - }, - "CreateBatchPrediction": { - "input": { - "type": "structure", - "required": [ - "BatchPredictionId", - "MLModelId", - "BatchPredictionDataSourceId", - "OutputUri" - ], - "members": { - "BatchPredictionId": {}, - "BatchPredictionName": {}, - "MLModelId": {}, - "BatchPredictionDataSourceId": {}, - "OutputUri": {} - } - }, - "output": { - "type": "structure", - "members": { - "BatchPredictionId": {} - } - } - }, - "CreateDataSourceFromRDS": { - "input": { - "type": "structure", - "required": [ - "DataSourceId", - "RDSData", - "RoleARN" - ], - "members": { - "DataSourceId": {}, - "DataSourceName": {}, - "RDSData": { - "type": "structure", - "required": [ - "DatabaseInformation", - "SelectSqlQuery", - "DatabaseCredentials", - "S3StagingLocation", - "ResourceRole", - "ServiceRole", - "SubnetId", - "SecurityGroupIds" - ], - "members": { - "DatabaseInformation": { - "shape": "Sf" - }, - "SelectSqlQuery": {}, - "DatabaseCredentials": { - "type": "structure", - "required": [ - "Username", - "Password" - ], - "members": { - "Username": {}, - "Password": {} - } - }, - "S3StagingLocation": {}, - "DataRearrangement": {}, - "DataSchema": {}, - "DataSchemaUri": {}, - "ResourceRole": {}, - "ServiceRole": {}, - "SubnetId": {}, - "SecurityGroupIds": { - "type": "list", - "member": {} - } - } - }, - "RoleARN": {}, - "ComputeStatistics": { - "type": "boolean" - } - } - }, - "output": { - "type": "structure", - "members": { - "DataSourceId": {} - } - } - }, - "CreateDataSourceFromRedshift": { - "input": { - "type": "structure", - "required": [ - "DataSourceId", - "DataSpec", - "RoleARN" - ], - "members": { - "DataSourceId": {}, - "DataSourceName": {}, - "DataSpec": { - "type": "structure", - "required": [ - "DatabaseInformation", - "SelectSqlQuery", - "DatabaseCredentials", - "S3StagingLocation" - ], - "members": { - "DatabaseInformation": { - "shape": "Sy" - }, - "SelectSqlQuery": {}, - "DatabaseCredentials": { - "type": "structure", - "required": [ - "Username", - "Password" - ], - "members": { - "Username": {}, - "Password": {} - } - }, - "S3StagingLocation": {}, - "DataRearrangement": {}, - "DataSchema": {}, - "DataSchemaUri": {} - } - }, - "RoleARN": {}, - "ComputeStatistics": { - "type": "boolean" - } - } - }, - "output": { - "type": "structure", - "members": { - "DataSourceId": {} - } - } - }, - "CreateDataSourceFromS3": { - "input": { - "type": "structure", - "required": [ - "DataSourceId", - "DataSpec" - ], - "members": { - "DataSourceId": {}, - "DataSourceName": {}, - "DataSpec": { - "type": "structure", - "required": [ - "DataLocationS3" - ], - "members": { - "DataLocationS3": {}, - "DataRearrangement": {}, - "DataSchema": {}, - "DataSchemaLocationS3": {} - } - }, - "ComputeStatistics": { - "type": "boolean" - } - } - }, - "output": { - "type": "structure", - "members": { - "DataSourceId": {} - } - } - }, - "CreateEvaluation": { - "input": { - "type": "structure", - "required": [ - "EvaluationId", - "MLModelId", - "EvaluationDataSourceId" - ], - "members": { - "EvaluationId": {}, - "EvaluationName": {}, - "MLModelId": {}, - "EvaluationDataSourceId": {} - } - }, - "output": { - "type": "structure", - "members": { - "EvaluationId": {} - } - } - }, - "CreateMLModel": { - "input": { - "type": "structure", - "required": [ - "MLModelId", - "MLModelType", - "TrainingDataSourceId" - ], - "members": { - "MLModelId": {}, - "MLModelName": {}, - "MLModelType": {}, - "Parameters": { - "shape": "S1d" - }, - "TrainingDataSourceId": {}, - "Recipe": {}, - "RecipeUri": {} - } - }, - "output": { - "type": "structure", - "members": { - "MLModelId": {} - } - } - }, - "CreateRealtimeEndpoint": { - "input": { - "type": "structure", - "required": [ - "MLModelId" - ], - "members": { - "MLModelId": {} - } - }, - "output": { - "type": "structure", - "members": { - "MLModelId": {}, - "RealtimeEndpointInfo": { - "shape": "S1j" - } - } - } - }, - "DeleteBatchPrediction": { - "input": { - "type": "structure", - "required": [ - "BatchPredictionId" - ], - "members": { - "BatchPredictionId": {} - } - }, - "output": { - "type": "structure", - "members": { - "BatchPredictionId": {} - } - } - }, - "DeleteDataSource": { - "input": { - "type": "structure", - "required": [ - "DataSourceId" - ], - "members": { - "DataSourceId": {} - } - }, - "output": { - "type": "structure", - "members": { - "DataSourceId": {} - } - } - }, - "DeleteEvaluation": { - "input": { - "type": "structure", - "required": [ - "EvaluationId" - ], - "members": { - "EvaluationId": {} - } - }, - "output": { - "type": "structure", - "members": { - "EvaluationId": {} - } - } - }, - "DeleteMLModel": { - "input": { - "type": "structure", - "required": [ - "MLModelId" - ], - "members": { - "MLModelId": {} - } - }, - "output": { - "type": "structure", - "members": { - "MLModelId": {} - } - } - }, - "DeleteRealtimeEndpoint": { - "input": { - "type": "structure", - "required": [ - "MLModelId" - ], - "members": { - "MLModelId": {} - } - }, - "output": { - "type": "structure", - "members": { - "MLModelId": {}, - "RealtimeEndpointInfo": { - "shape": "S1j" - } - } - } - }, - "DeleteTags": { - "input": { - "type": "structure", - "required": [ - "TagKeys", - "ResourceId", - "ResourceType" - ], - "members": { - "TagKeys": { - "type": "list", - "member": {} - }, - "ResourceId": {}, - "ResourceType": {} - } - }, - "output": { - "type": "structure", - "members": { - "ResourceId": {}, - "ResourceType": {} - } - } - }, - "DescribeBatchPredictions": { - "input": { - "type": "structure", - "members": { - "FilterVariable": {}, - "EQ": {}, - "GT": {}, - "LT": {}, - "GE": {}, - "LE": {}, - "NE": {}, - "Prefix": {}, - "SortOrder": {}, - "NextToken": {}, - "Limit": { - "type": "integer" - } - } - }, - "output": { - "type": "structure", - "members": { - "Results": { - "type": "list", - "member": { - "type": "structure", - "members": { - "BatchPredictionId": {}, - "MLModelId": {}, - "BatchPredictionDataSourceId": {}, - "InputDataLocationS3": {}, - "CreatedByIamUser": {}, - "CreatedAt": { - "type": "timestamp" - }, - "LastUpdatedAt": { - "type": "timestamp" - }, - "Name": {}, - "Status": {}, - "OutputUri": {}, - "Message": {}, - "ComputeTime": { - "type": "long" - }, - "FinishedAt": { - "type": "timestamp" - }, - "StartedAt": { - "type": "timestamp" - }, - "TotalRecordCount": { - "type": "long" - }, - "InvalidRecordCount": { - "type": "long" - } - } - } - }, - "NextToken": {} - } - } - }, - "DescribeDataSources": { - "input": { - "type": "structure", - "members": { - "FilterVariable": {}, - "EQ": {}, - "GT": {}, - "LT": {}, - "GE": {}, - "LE": {}, - "NE": {}, - "Prefix": {}, - "SortOrder": {}, - "NextToken": {}, - "Limit": { - "type": "integer" - } - } - }, - "output": { - "type": "structure", - "members": { - "Results": { - "type": "list", - "member": { - "type": "structure", - "members": { - "DataSourceId": {}, - "DataLocationS3": {}, - "DataRearrangement": {}, - "CreatedByIamUser": {}, - "CreatedAt": { - "type": "timestamp" - }, - "LastUpdatedAt": { - "type": "timestamp" - }, - "DataSizeInBytes": { - "type": "long" - }, - "NumberOfFiles": { - "type": "long" - }, - "Name": {}, - "Status": {}, - "Message": {}, - "RedshiftMetadata": { - "shape": "S2i" - }, - "RDSMetadata": { - "shape": "S2j" - }, - "RoleARN": {}, - "ComputeStatistics": { - "type": "boolean" - }, - "ComputeTime": { - "type": "long" - }, - "FinishedAt": { - "type": "timestamp" - }, - "StartedAt": { - "type": "timestamp" - } - } - } - }, - "NextToken": {} - } - } - }, - "DescribeEvaluations": { - "input": { - "type": "structure", - "members": { - "FilterVariable": {}, - "EQ": {}, - "GT": {}, - "LT": {}, - "GE": {}, - "LE": {}, - "NE": {}, - "Prefix": {}, - "SortOrder": {}, - "NextToken": {}, - "Limit": { - "type": "integer" - } - } - }, - "output": { - "type": "structure", - "members": { - "Results": { - "type": "list", - "member": { - "type": "structure", - "members": { - "EvaluationId": {}, - "MLModelId": {}, - "EvaluationDataSourceId": {}, - "InputDataLocationS3": {}, - "CreatedByIamUser": {}, - "CreatedAt": { - "type": "timestamp" - }, - "LastUpdatedAt": { - "type": "timestamp" - }, - "Name": {}, - "Status": {}, - "PerformanceMetrics": { - "shape": "S2q" - }, - "Message": {}, - "ComputeTime": { - "type": "long" - }, - "FinishedAt": { - "type": "timestamp" - }, - "StartedAt": { - "type": "timestamp" - } - } - } - }, - "NextToken": {} - } - } - }, - "DescribeMLModels": { - "input": { - "type": "structure", - "members": { - "FilterVariable": {}, - "EQ": {}, - "GT": {}, - "LT": {}, - "GE": {}, - "LE": {}, - "NE": {}, - "Prefix": {}, - "SortOrder": {}, - "NextToken": {}, - "Limit": { - "type": "integer" - } - } - }, - "output": { - "type": "structure", - "members": { - "Results": { - "type": "list", - "member": { - "type": "structure", - "members": { - "MLModelId": {}, - "TrainingDataSourceId": {}, - "CreatedByIamUser": {}, - "CreatedAt": { - "type": "timestamp" - }, - "LastUpdatedAt": { - "type": "timestamp" - }, - "Name": {}, - "Status": {}, - "SizeInBytes": { - "type": "long" - }, - "EndpointInfo": { - "shape": "S1j" - }, - "TrainingParameters": { - "shape": "S1d" - }, - "InputDataLocationS3": {}, - "Algorithm": {}, - "MLModelType": {}, - "ScoreThreshold": { - "type": "float" - }, - "ScoreThresholdLastUpdatedAt": { - "type": "timestamp" - }, - "Message": {}, - "ComputeTime": { - "type": "long" - }, - "FinishedAt": { - "type": "timestamp" - }, - "StartedAt": { - "type": "timestamp" - } - } - } - }, - "NextToken": {} - } - } - }, - "DescribeTags": { - "input": { - "type": "structure", - "required": [ - "ResourceId", - "ResourceType" - ], - "members": { - "ResourceId": {}, - "ResourceType": {} - } - }, - "output": { - "type": "structure", - "members": { - "ResourceId": {}, - "ResourceType": {}, - "Tags": { - "shape": "S2" - } - } - } - }, - "GetBatchPrediction": { - "input": { - "type": "structure", - "required": [ - "BatchPredictionId" - ], - "members": { - "BatchPredictionId": {} - } - }, - "output": { - "type": "structure", - "members": { - "BatchPredictionId": {}, - "MLModelId": {}, - "BatchPredictionDataSourceId": {}, - "InputDataLocationS3": {}, - "CreatedByIamUser": {}, - "CreatedAt": { - "type": "timestamp" - }, - "LastUpdatedAt": { - "type": "timestamp" - }, - "Name": {}, - "Status": {}, - "OutputUri": {}, - "LogUri": {}, - "Message": {}, - "ComputeTime": { - "type": "long" - }, - "FinishedAt": { - "type": "timestamp" - }, - "StartedAt": { - "type": "timestamp" - }, - "TotalRecordCount": { - "type": "long" - }, - "InvalidRecordCount": { - "type": "long" - } - } - } - }, - "GetDataSource": { - "input": { - "type": "structure", - "required": [ - "DataSourceId" - ], - "members": { - "DataSourceId": {}, - "Verbose": { - "type": "boolean" - } - } - }, - "output": { - "type": "structure", - "members": { - "DataSourceId": {}, - "DataLocationS3": {}, - "DataRearrangement": {}, - "CreatedByIamUser": {}, - "CreatedAt": { - "type": "timestamp" - }, - "LastUpdatedAt": { - "type": "timestamp" - }, - "DataSizeInBytes": { - "type": "long" - }, - "NumberOfFiles": { - "type": "long" - }, - "Name": {}, - "Status": {}, - "LogUri": {}, - "Message": {}, - "RedshiftMetadata": { - "shape": "S2i" - }, - "RDSMetadata": { - "shape": "S2j" - }, - "RoleARN": {}, - "ComputeStatistics": { - "type": "boolean" - }, - "ComputeTime": { - "type": "long" - }, - "FinishedAt": { - "type": "timestamp" - }, - "StartedAt": { - "type": "timestamp" - }, - "DataSourceSchema": {} - } - } - }, - "GetEvaluation": { - "input": { - "type": "structure", - "required": [ - "EvaluationId" - ], - "members": { - "EvaluationId": {} - } - }, - "output": { - "type": "structure", - "members": { - "EvaluationId": {}, - "MLModelId": {}, - "EvaluationDataSourceId": {}, - "InputDataLocationS3": {}, - "CreatedByIamUser": {}, - "CreatedAt": { - "type": "timestamp" - }, - "LastUpdatedAt": { - "type": "timestamp" - }, - "Name": {}, - "Status": {}, - "PerformanceMetrics": { - "shape": "S2q" - }, - "LogUri": {}, - "Message": {}, - "ComputeTime": { - "type": "long" - }, - "FinishedAt": { - "type": "timestamp" - }, - "StartedAt": { - "type": "timestamp" - } - } - } - }, - "GetMLModel": { - "input": { - "type": "structure", - "required": [ - "MLModelId" - ], - "members": { - "MLModelId": {}, - "Verbose": { - "type": "boolean" - } - } - }, - "output": { - "type": "structure", - "members": { - "MLModelId": {}, - "TrainingDataSourceId": {}, - "CreatedByIamUser": {}, - "CreatedAt": { - "type": "timestamp" - }, - "LastUpdatedAt": { - "type": "timestamp" - }, - "Name": {}, - "Status": {}, - "SizeInBytes": { - "type": "long" - }, - "EndpointInfo": { - "shape": "S1j" - }, - "TrainingParameters": { - "shape": "S1d" - }, - "InputDataLocationS3": {}, - "MLModelType": {}, - "ScoreThreshold": { - "type": "float" - }, - "ScoreThresholdLastUpdatedAt": { - "type": "timestamp" - }, - "LogUri": {}, - "Message": {}, - "ComputeTime": { - "type": "long" - }, - "FinishedAt": { - "type": "timestamp" - }, - "StartedAt": { - "type": "timestamp" - }, - "Recipe": {}, - "Schema": {} - } - } - }, - "Predict": { - "input": { - "type": "structure", - "required": [ - "MLModelId", - "Record", - "PredictEndpoint" - ], - "members": { - "MLModelId": {}, - "Record": { - "type": "map", - "key": {}, - "value": {} - }, - "PredictEndpoint": {} - } - }, - "output": { - "type": "structure", - "members": { - "Prediction": { - "type": "structure", - "members": { - "predictedLabel": {}, - "predictedValue": { - "type": "float" - }, - "predictedScores": { - "type": "map", - "key": {}, - "value": { - "type": "float" - } - }, - "details": { - "type": "map", - "key": {}, - "value": {} - } - } - } - } - } - }, - "UpdateBatchPrediction": { - "input": { - "type": "structure", - "required": [ - "BatchPredictionId", - "BatchPredictionName" - ], - "members": { - "BatchPredictionId": {}, - "BatchPredictionName": {} - } - }, - "output": { - "type": "structure", - "members": { - "BatchPredictionId": {} - } - } - }, - "UpdateDataSource": { - "input": { - "type": "structure", - "required": [ - "DataSourceId", - "DataSourceName" - ], - "members": { - "DataSourceId": {}, - "DataSourceName": {} - } - }, - "output": { - "type": "structure", - "members": { - "DataSourceId": {} - } - } - }, - "UpdateEvaluation": { - "input": { - "type": "structure", - "required": [ - "EvaluationId", - "EvaluationName" - ], - "members": { - "EvaluationId": {}, - "EvaluationName": {} - } - }, - "output": { - "type": "structure", - "members": { - "EvaluationId": {} - } - } - }, - "UpdateMLModel": { - "input": { - "type": "structure", - "required": [ - "MLModelId" - ], - "members": { - "MLModelId": {}, - "MLModelName": {}, - "ScoreThreshold": { - "type": "float" - } - } - }, - "output": { - "type": "structure", - "members": { - "MLModelId": {} - } - } - } - }, - "shapes": { - "S2": { - "type": "list", - "member": { - "type": "structure", - "members": { - "Key": {}, - "Value": {} - } - } - }, - "Sf": { - "type": "structure", - "required": [ - "InstanceIdentifier", - "DatabaseName" - ], - "members": { - "InstanceIdentifier": {}, - "DatabaseName": {} - } - }, - "Sy": { - "type": "structure", - "required": [ - "DatabaseName", - "ClusterIdentifier" - ], - "members": { - "DatabaseName": {}, - "ClusterIdentifier": {} - } - }, - "S1d": { - "type": "map", - "key": {}, - "value": {} - }, - "S1j": { - "type": "structure", - "members": { - "PeakRequestsPerSecond": { - "type": "integer" - }, - "CreatedAt": { - "type": "timestamp" - }, - "EndpointUrl": {}, - "EndpointStatus": {} - } - }, - "S2i": { - "type": "structure", - "members": { - "RedshiftDatabase": { - "shape": "Sy" - }, - "DatabaseUserName": {}, - "SelectSqlQuery": {} - } - }, - "S2j": { - "type": "structure", - "members": { - "Database": { - "shape": "Sf" - }, - "DatabaseUserName": {}, - "SelectSqlQuery": {}, - "ResourceRole": {}, - "ServiceRole": {}, - "DataPipelineId": {} - } - }, - "S2q": { - "type": "structure", - "members": { - "Properties": { - "type": "map", - "key": {}, - "value": {} - } - } - } - }, - "examples": {} -} \ No newline at end of file diff --git a/workshops/monte-carlo-on-ec2-spot-fleet/src/web/node_modules/aws-sdk/apis/machinelearning-2014-12-12.paginators.json b/workshops/monte-carlo-on-ec2-spot-fleet/src/web/node_modules/aws-sdk/apis/machinelearning-2014-12-12.paginators.json deleted file mode 100644 index c13ce65a..00000000 --- a/workshops/monte-carlo-on-ec2-spot-fleet/src/web/node_modules/aws-sdk/apis/machinelearning-2014-12-12.paginators.json +++ /dev/null @@ -1,28 +0,0 @@ -{ - "pagination": { - "DescribeBatchPredictions": { - "limit_key": "Limit", - "output_token": "NextToken", - "input_token": "NextToken", - "result_key": "Results" - }, - "DescribeDataSources": { - "limit_key": "Limit", - "output_token": "NextToken", - "input_token": "NextToken", - "result_key": "Results" - }, - "DescribeEvaluations": { - "limit_key": "Limit", - "output_token": "NextToken", - "input_token": "NextToken", - "result_key": "Results" - }, - "DescribeMLModels": { - "limit_key": "Limit", - "output_token": "NextToken", - "input_token": "NextToken", - "result_key": "Results" - } - } -} diff --git a/workshops/monte-carlo-on-ec2-spot-fleet/src/web/node_modules/aws-sdk/apis/machinelearning-2014-12-12.waiters2.json b/workshops/monte-carlo-on-ec2-spot-fleet/src/web/node_modules/aws-sdk/apis/machinelearning-2014-12-12.waiters2.json deleted file mode 100644 index da6b1c95..00000000 --- a/workshops/monte-carlo-on-ec2-spot-fleet/src/web/node_modules/aws-sdk/apis/machinelearning-2014-12-12.waiters2.json +++ /dev/null @@ -1,81 +0,0 @@ -{ - "version": 2, - "waiters": { - "DataSourceAvailable": { - "delay": 30, - "operation": "DescribeDataSources", - "maxAttempts": 60, - "acceptors": [ - { - "expected": "COMPLETED", - "matcher": "pathAll", - "state": "success", - "argument": "Results[].Status" - }, - { - "expected": "FAILED", - "matcher": "pathAny", - "state": "failure", - "argument": "Results[].Status" - } - ] - }, - "MLModelAvailable": { - "delay": 30, - "operation": "DescribeMLModels", - "maxAttempts": 60, - "acceptors": [ - { - "expected": "COMPLETED", - "matcher": "pathAll", - "state": "success", - "argument": "Results[].Status" - }, - { - "expected": "FAILED", - "matcher": "pathAny", - "state": "failure", - "argument": "Results[].Status" - } - ] - }, - "EvaluationAvailable": { - "delay": 30, - "operation": "DescribeEvaluations", - "maxAttempts": 60, - "acceptors": [ - { - "expected": "COMPLETED", - "matcher": "pathAll", - "state": "success", - "argument": "Results[].Status" - }, - { - "expected": "FAILED", - "matcher": "pathAny", - "state": "failure", - "argument": "Results[].Status" - } - ] - }, - "BatchPredictionAvailable": { - "delay": 30, - "operation": "DescribeBatchPredictions", - "maxAttempts": 60, - "acceptors": [ - { - "expected": "COMPLETED", - "matcher": "pathAll", - "state": "success", - "argument": "Results[].Status" - }, - { - "expected": "FAILED", - "matcher": "pathAny", - "state": "failure", - "argument": "Results[].Status" - } - ] - } - } -} diff --git a/workshops/monte-carlo-on-ec2-spot-fleet/src/web/node_modules/aws-sdk/apis/marketplacecommerceanalytics-2015-07-01.examples.json b/workshops/monte-carlo-on-ec2-spot-fleet/src/web/node_modules/aws-sdk/apis/marketplacecommerceanalytics-2015-07-01.examples.json deleted file mode 100644 index 0ea7e3b0..00000000 --- a/workshops/monte-carlo-on-ec2-spot-fleet/src/web/node_modules/aws-sdk/apis/marketplacecommerceanalytics-2015-07-01.examples.json +++ /dev/null @@ -1,5 +0,0 @@ -{ - "version": "1.0", - "examples": { - } -} diff --git a/workshops/monte-carlo-on-ec2-spot-fleet/src/web/node_modules/aws-sdk/apis/marketplacecommerceanalytics-2015-07-01.min.json b/workshops/monte-carlo-on-ec2-spot-fleet/src/web/node_modules/aws-sdk/apis/marketplacecommerceanalytics-2015-07-01.min.json deleted file mode 100644 index a83fc816..00000000 --- a/workshops/monte-carlo-on-ec2-spot-fleet/src/web/node_modules/aws-sdk/apis/marketplacecommerceanalytics-2015-07-01.min.json +++ /dev/null @@ -1,85 +0,0 @@ -{ - "version": "2.0", - "metadata": { - "apiVersion": "2015-07-01", - "endpointPrefix": "marketplacecommerceanalytics", - "jsonVersion": "1.1", - "protocol": "json", - "serviceFullName": "AWS Marketplace Commerce Analytics", - "signatureVersion": "v4", - "signingName": "marketplacecommerceanalytics", - "targetPrefix": "MarketplaceCommerceAnalytics20150701", - "uid": "marketplacecommerceanalytics-2015-07-01" - }, - "operations": { - "GenerateDataSet": { - "input": { - "type": "structure", - "required": [ - "dataSetType", - "dataSetPublicationDate", - "roleNameArn", - "destinationS3BucketName", - "snsTopicArn" - ], - "members": { - "dataSetType": {}, - "dataSetPublicationDate": { - "type": "timestamp" - }, - "roleNameArn": {}, - "destinationS3BucketName": {}, - "destinationS3Prefix": {}, - "snsTopicArn": {}, - "customerDefinedValues": { - "shape": "S8" - } - } - }, - "output": { - "type": "structure", - "members": { - "dataSetRequestId": {} - } - } - }, - "StartSupportDataExport": { - "input": { - "type": "structure", - "required": [ - "dataSetType", - "fromDate", - "roleNameArn", - "destinationS3BucketName", - "snsTopicArn" - ], - "members": { - "dataSetType": {}, - "fromDate": { - "type": "timestamp" - }, - "roleNameArn": {}, - "destinationS3BucketName": {}, - "destinationS3Prefix": {}, - "snsTopicArn": {}, - "customerDefinedValues": { - "shape": "S8" - } - } - }, - "output": { - "type": "structure", - "members": { - "dataSetRequestId": {} - } - } - } - }, - "shapes": { - "S8": { - "type": "map", - "key": {}, - "value": {} - } - } -} \ No newline at end of file diff --git a/workshops/monte-carlo-on-ec2-spot-fleet/src/web/node_modules/aws-sdk/apis/marketplacecommerceanalytics-2015-07-01.paginators.json b/workshops/monte-carlo-on-ec2-spot-fleet/src/web/node_modules/aws-sdk/apis/marketplacecommerceanalytics-2015-07-01.paginators.json deleted file mode 100644 index 5677bd8e..00000000 --- a/workshops/monte-carlo-on-ec2-spot-fleet/src/web/node_modules/aws-sdk/apis/marketplacecommerceanalytics-2015-07-01.paginators.json +++ /dev/null @@ -1,4 +0,0 @@ -{ - "pagination": { - } -} diff --git a/workshops/monte-carlo-on-ec2-spot-fleet/src/web/node_modules/aws-sdk/apis/metadata.json b/workshops/monte-carlo-on-ec2-spot-fleet/src/web/node_modules/aws-sdk/apis/metadata.json deleted file mode 100644 index 993a1cac..00000000 --- a/workshops/monte-carlo-on-ec2-spot-fleet/src/web/node_modules/aws-sdk/apis/metadata.json +++ /dev/null @@ -1,455 +0,0 @@ -{ - "acm": { - "name": "ACM", - "cors": true - }, - "apigateway": { - "name": "APIGateway", - "cors": true - }, - "applicationautoscaling": { - "prefix": "application-autoscaling", - "name": "ApplicationAutoScaling", - "cors": true - }, - "appstream": { - "name": "AppStream" - }, - "autoscaling": { - "name": "AutoScaling", - "cors": true - }, - "batch": { - "name": "Batch" - }, - "budgets": { - "name": "Budgets" - }, - "clouddirectory": { - "name": "CloudDirectory" - }, - "cloudformation": { - "name": "CloudFormation", - "cors": true - }, - "cloudfront": { - "name": "CloudFront", - "versions": [ - "2013-05-12*", - "2013-11-11*", - "2014-05-31*", - "2014-10-21*", - "2014-11-06*", - "2015-04-17*", - "2015-07-27*", - "2015-09-17*", - "2016-01-13*", - "2016-01-28*", - "2016-08-01*", - "2016-08-20*", - "2016-09-07*", - "2016-09-29*", - "2016-11-25*" - ], - "cors": true - }, - "cloudhsm": { - "name": "CloudHSM", - "cors": true - }, - "cloudsearch": { - "name": "CloudSearch" - }, - "cloudsearchdomain": { - "name": "CloudSearchDomain" - }, - "cloudtrail": { - "name": "CloudTrail", - "cors": true - }, - "cloudwatch": { - "prefix": "monitoring", - "name": "CloudWatch", - "cors": true - }, - "cloudwatchevents": { - "prefix": "events", - "name": "CloudWatchEvents", - "versions": [ - "2014-02-03*" - ], - "cors": true - }, - "cloudwatchlogs": { - "prefix": "logs", - "name": "CloudWatchLogs", - "cors": true - }, - "codebuild": { - "name": "CodeBuild" - }, - "codecommit": { - "name": "CodeCommit", - "cors": true - }, - "codedeploy": { - "name": "CodeDeploy", - "cors": true - }, - "codepipeline": { - "name": "CodePipeline", - "cors": true - }, - "cognitoidentity": { - "prefix": "cognito-identity", - "name": "CognitoIdentity", - "cors": true - }, - "cognitoidentityserviceprovider": { - "prefix": "cognito-idp", - "name": "CognitoIdentityServiceProvider", - "cors": true - }, - "cognitosync": { - "prefix": "cognito-sync", - "name": "CognitoSync", - "cors": true - }, - "configservice": { - "prefix": "config", - "name": "ConfigService", - "cors": true - }, - "cur": { - "name": "CUR", - "cors": true - }, - "datapipeline": { - "name": "DataPipeline" - }, - "devicefarm": { - "name": "DeviceFarm", - "cors": true - }, - "directconnect": { - "name": "DirectConnect", - "cors": true - }, - "directoryservice": { - "prefix": "ds", - "name": "DirectoryService" - }, - "discovery": { - "name": "Discovery" - }, - "dms": { - "name": "DMS" - }, - "dynamodb": { - "name": "DynamoDB", - "cors": true - }, - "dynamodbstreams": { - "prefix": "streams.dynamodb", - "name": "DynamoDBStreams", - "cors": true - }, - "ec2": { - "name": "EC2", - "versions": [ - "2013-06-15*", - "2013-10-15*", - "2014-02-01*", - "2014-05-01*", - "2014-06-15*", - "2014-09-01*", - "2014-10-01*", - "2015-03-01*", - "2015-04-15*", - "2015-10-01*", - "2016-04-01*", - "2016-09-15*" - ], - "cors": true - }, - "ecr": { - "name": "ECR", - "cors": true - }, - "ecs": { - "name": "ECS", - "cors": true - }, - "efs": { - "prefix": "elasticfilesystem", - "name": "EFS", - "cors": true - }, - "elasticache": { - "name": "ElastiCache", - "versions": [ - "2012-11-15*", - "2014-03-24*", - "2014-07-15*", - "2014-09-30*" - ], - "cors": true - }, - "elasticbeanstalk": { - "name": "ElasticBeanstalk", - "cors": true - }, - "elb": { - "prefix": "elasticloadbalancing", - "name": "ELB", - "cors": true - }, - "elbv2": { - "prefix": "elasticloadbalancingv2", - "name": "ELBv2", - "cors": true - }, - "emr": { - "prefix": "elasticmapreduce", - "name": "EMR", - "cors": true - }, - "es": { - "name": "ES" - }, - "elastictranscoder": { - "name": "ElasticTranscoder", - "cors": true - }, - "firehose": { - "name": "Firehose", - "cors": true - }, - "gamelift": { - "name": "GameLift", - "cors": true - }, - "glacier": { - "name": "Glacier" - }, - "health": { - "name": "Health" - }, - "iam": { - "name": "IAM" - }, - "importexport": { - "name": "ImportExport" - }, - "inspector": { - "name": "Inspector", - "versions": [ - "2015-08-18*" - ], - "cors": true - }, - "iot": { - "name": "Iot", - "cors": true - }, - "iotdata": { - "prefix": "iot-data", - "name": "IotData", - "cors": true - }, - "kinesis": { - "name": "Kinesis", - "cors": true - }, - "kinesisanalytics": { - "name": "KinesisAnalytics" - }, - "kms": { - "name": "KMS", - "cors": true - }, - "lambda": { - "name": "Lambda", - "cors": true - }, - "lexruntime": { - "prefix": "runtime.lex", - "name": "LexRuntime", - "cors": true - }, - "lightsail": { - "name": "Lightsail" - }, - "machinelearning": { - "name": "MachineLearning", - "cors": true - }, - "marketplacecommerceanalytics": { - "name": "MarketplaceCommerceAnalytics", - "cors": true - }, - "marketplacemetering": { - "prefix": "meteringmarketplace", - "name": "MarketplaceMetering" - }, - "mturk": { - "prefix": "mturk-requester", - "name": "MTurk", - "cors": true - }, - "mobileanalytics": { - "name": "MobileAnalytics", - "cors": true - }, - "opsworks": { - "name": "OpsWorks", - "cors": true - }, - "opsworkscm": { - "name": "OpsWorksCM" - }, - "organizations": { - "name": "Organizations" - }, - "pinpoint": { - "name": "Pinpoint" - }, - "polly": { - "name": "Polly", - "cors": true - }, - "rds": { - "name": "RDS", - "versions": [ - "2014-09-01*" - ], - "cors": true - }, - "redshift": { - "name": "Redshift", - "cors": true - }, - "rekognition": { - "name": "Rekognition", - "cors": true - }, - "resourcegroupstaggingapi": { - "name": "ResourceGroupsTaggingAPI" - }, - "route53": { - "name": "Route53", - "cors": true - }, - "route53domains": { - "name": "Route53Domains", - "cors": true - }, - "s3": { - "name": "S3", - "dualstackAvailable": true, - "cors": true - }, - "servicecatalog": { - "name": "ServiceCatalog", - "cors": true - }, - "ses": { - "prefix": "email", - "name": "SES", - "cors": true - }, - "shield": { - "name": "Shield" - }, - "simpledb": { - "prefix": "sdb", - "name": "SimpleDB" - }, - "sms": { - "name": "SMS" - }, - "snowball": { - "name": "Snowball" - }, - "sns": { - "name": "SNS", - "cors": true - }, - "sqs": { - "name": "SQS", - "cors": true - }, - "ssm": { - "name": "SSM", - "cors": true - }, - "storagegateway": { - "name": "StorageGateway", - "cors": true - }, - "stepfunctions": { - "prefix": "states", - "name": "StepFunctions" - }, - "sts": { - "name": "STS", - "cors": true - }, - "support": { - "name": "Support" - }, - "swf": { - "name": "SWF" - }, - "xray": { - "name": "XRay" - }, - "waf": { - "name": "WAF", - "cors": true - }, - "wafregional": { - "prefix": "waf-regional", - "name": "WAFRegional" - }, - "workdocs": { - "name": "WorkDocs", - "cors": true - }, - "workspaces": { - "name": "WorkSpaces" - }, - "codestar": { - "name": "CodeStar" - }, - "lexmodelbuildingservice": { - "prefix": "lex-models", - "name": "LexModelBuildingService" - }, - "marketplaceentitlementservice": { - "prefix": "entitlement.marketplace", - "name": "MarketplaceEntitlementService" - }, - "athena": { - "name": "Athena" - }, - "greengrass": { - "name": "Greengrass" - }, - "dax": { - "name": "DAX" - }, - "migrationhub": { - "prefix": "AWSMigrationHub", - "name": "MigrationHub" - }, - "cloudhsmv2": { - "name": "CloudHSMV2" - }, - "glue": { - "name": "Glue" - }, - "mobile": { - "name": "Mobile" - } -} \ No newline at end of file diff --git a/workshops/monte-carlo-on-ec2-spot-fleet/src/web/node_modules/aws-sdk/apis/meteringmarketplace-2016-01-14.min.json b/workshops/monte-carlo-on-ec2-spot-fleet/src/web/node_modules/aws-sdk/apis/meteringmarketplace-2016-01-14.min.json deleted file mode 100644 index dc5258c3..00000000 --- a/workshops/monte-carlo-on-ec2-spot-fleet/src/web/node_modules/aws-sdk/apis/meteringmarketplace-2016-01-14.min.json +++ /dev/null @@ -1,128 +0,0 @@ -{ - "version": "2.0", - "metadata": { - "uid": "meteringmarketplace-2016-01-14", - "apiVersion": "2016-01-14", - "endpointPrefix": "metering.marketplace", - "jsonVersion": "1.1", - "protocol": "json", - "serviceFullName": "AWSMarketplace Metering", - "signatureVersion": "v4", - "signingName": "aws-marketplace", - "targetPrefix": "AWSMPMeteringService" - }, - "operations": { - "BatchMeterUsage": { - "input": { - "type": "structure", - "required": [ - "UsageRecords", - "ProductCode" - ], - "members": { - "UsageRecords": { - "shape": "S2" - }, - "ProductCode": {} - } - }, - "output": { - "type": "structure", - "members": { - "Results": { - "type": "list", - "member": { - "type": "structure", - "members": { - "UsageRecord": { - "shape": "S3" - }, - "MeteringRecordId": {}, - "Status": {} - } - } - }, - "UnprocessedRecords": { - "shape": "S2" - } - } - } - }, - "MeterUsage": { - "input": { - "type": "structure", - "required": [ - "ProductCode", - "Timestamp", - "UsageDimension", - "UsageQuantity", - "DryRun" - ], - "members": { - "ProductCode": {}, - "Timestamp": { - "type": "timestamp" - }, - "UsageDimension": {}, - "UsageQuantity": { - "type": "integer" - }, - "DryRun": { - "type": "boolean" - } - } - }, - "output": { - "type": "structure", - "members": { - "MeteringRecordId": {} - } - } - }, - "ResolveCustomer": { - "input": { - "type": "structure", - "required": [ - "RegistrationToken" - ], - "members": { - "RegistrationToken": {} - } - }, - "output": { - "type": "structure", - "members": { - "CustomerIdentifier": {}, - "ProductCode": {} - } - } - } - }, - "shapes": { - "S2": { - "type": "list", - "member": { - "shape": "S3" - } - }, - "S3": { - "type": "structure", - "required": [ - "Timestamp", - "CustomerIdentifier", - "Dimension", - "Quantity" - ], - "members": { - "Timestamp": { - "type": "timestamp" - }, - "CustomerIdentifier": {}, - "Dimension": {}, - "Quantity": { - "type": "integer" - } - } - } - } -} \ No newline at end of file diff --git a/workshops/monte-carlo-on-ec2-spot-fleet/src/web/node_modules/aws-sdk/apis/mobile-2017-07-01.examples.json b/workshops/monte-carlo-on-ec2-spot-fleet/src/web/node_modules/aws-sdk/apis/mobile-2017-07-01.examples.json deleted file mode 100644 index 0ea7e3b0..00000000 --- a/workshops/monte-carlo-on-ec2-spot-fleet/src/web/node_modules/aws-sdk/apis/mobile-2017-07-01.examples.json +++ /dev/null @@ -1,5 +0,0 @@ -{ - "version": "1.0", - "examples": { - } -} diff --git a/workshops/monte-carlo-on-ec2-spot-fleet/src/web/node_modules/aws-sdk/apis/mobile-2017-07-01.min.json b/workshops/monte-carlo-on-ec2-spot-fleet/src/web/node_modules/aws-sdk/apis/mobile-2017-07-01.min.json deleted file mode 100644 index b2eb097a..00000000 --- a/workshops/monte-carlo-on-ec2-spot-fleet/src/web/node_modules/aws-sdk/apis/mobile-2017-07-01.min.json +++ /dev/null @@ -1,340 +0,0 @@ -{ - "version": "2.0", - "metadata": { - "apiVersion": "2017-07-01", - "endpointPrefix": "mobile", - "jsonVersion": "1.1", - "protocol": "rest-json", - "serviceFullName": "AWS Mobile", - "signatureVersion": "v4", - "signingName": "AWSMobileHubService", - "uid": "mobile-2017-07-01" - }, - "operations": { - "CreateProject": { - "http": { - "requestUri": "/projects" - }, - "input": { - "type": "structure", - "members": { - "name": { - "location": "querystring", - "locationName": "name" - }, - "region": { - "location": "querystring", - "locationName": "region" - }, - "contents": { - "type": "blob" - }, - "snapshotId": { - "location": "querystring", - "locationName": "snapshotId" - } - }, - "payload": "contents" - }, - "output": { - "type": "structure", - "members": { - "details": { - "shape": "S7" - } - } - } - }, - "DeleteProject": { - "http": { - "method": "DELETE", - "requestUri": "/projects/{projectId}" - }, - "input": { - "type": "structure", - "required": [ - "projectId" - ], - "members": { - "projectId": { - "location": "uri", - "locationName": "projectId" - } - } - }, - "output": { - "type": "structure", - "members": { - "deletedResources": { - "shape": "Sc" - }, - "orphanedResources": { - "shape": "Sc" - } - } - } - }, - "DescribeBundle": { - "http": { - "method": "GET", - "requestUri": "/bundles/{bundleId}" - }, - "input": { - "type": "structure", - "required": [ - "bundleId" - ], - "members": { - "bundleId": { - "location": "uri", - "locationName": "bundleId" - } - } - }, - "output": { - "type": "structure", - "members": { - "details": { - "shape": "Sq" - } - } - } - }, - "DescribeProject": { - "http": { - "method": "GET", - "requestUri": "/project" - }, - "input": { - "type": "structure", - "required": [ - "projectId" - ], - "members": { - "projectId": { - "location": "querystring", - "locationName": "projectId" - }, - "syncFromResources": { - "location": "querystring", - "locationName": "syncFromResources", - "type": "boolean" - } - } - }, - "output": { - "type": "structure", - "members": { - "details": { - "shape": "S7" - } - } - } - }, - "ExportBundle": { - "http": { - "requestUri": "/bundles/{bundleId}" - }, - "input": { - "type": "structure", - "required": [ - "bundleId" - ], - "members": { - "bundleId": { - "location": "uri", - "locationName": "bundleId" - }, - "projectId": { - "location": "querystring", - "locationName": "projectId" - }, - "platform": { - "location": "querystring", - "locationName": "platform" - } - } - }, - "output": { - "type": "structure", - "members": { - "downloadUrl": {} - } - } - }, - "ExportProject": { - "http": { - "requestUri": "/exports/{projectId}" - }, - "input": { - "type": "structure", - "required": [ - "projectId" - ], - "members": { - "projectId": { - "location": "uri", - "locationName": "projectId" - } - } - }, - "output": { - "type": "structure", - "members": { - "downloadUrl": {}, - "shareUrl": {}, - "snapshotId": {} - } - } - }, - "ListBundles": { - "http": { - "method": "GET", - "requestUri": "/bundles" - }, - "input": { - "type": "structure", - "members": { - "maxResults": { - "location": "querystring", - "locationName": "maxResults", - "type": "integer" - }, - "nextToken": { - "location": "querystring", - "locationName": "nextToken" - } - } - }, - "output": { - "type": "structure", - "members": { - "bundleList": { - "type": "list", - "member": { - "shape": "Sq" - } - }, - "nextToken": {} - } - } - }, - "ListProjects": { - "http": { - "method": "GET", - "requestUri": "/projects" - }, - "input": { - "type": "structure", - "members": { - "maxResults": { - "location": "querystring", - "locationName": "maxResults", - "type": "integer" - }, - "nextToken": { - "location": "querystring", - "locationName": "nextToken" - } - } - }, - "output": { - "type": "structure", - "members": { - "projects": { - "type": "list", - "member": { - "type": "structure", - "members": { - "name": {}, - "projectId": {} - } - } - }, - "nextToken": {} - } - } - }, - "UpdateProject": { - "http": { - "requestUri": "/update" - }, - "input": { - "type": "structure", - "required": [ - "projectId" - ], - "members": { - "contents": { - "type": "blob" - }, - "projectId": { - "location": "querystring", - "locationName": "projectId" - } - }, - "payload": "contents" - }, - "output": { - "type": "structure", - "members": { - "details": { - "shape": "S7" - } - } - } - } - }, - "shapes": { - "S7": { - "type": "structure", - "members": { - "name": {}, - "projectId": {}, - "region": {}, - "state": {}, - "createdDate": { - "type": "timestamp" - }, - "lastUpdatedDate": { - "type": "timestamp" - }, - "consoleUrl": {}, - "resources": { - "shape": "Sc" - } - } - }, - "Sc": { - "type": "list", - "member": { - "type": "structure", - "members": { - "type": {}, - "name": {}, - "arn": {}, - "feature": {}, - "attributes": { - "type": "map", - "key": {}, - "value": {} - } - } - } - }, - "Sq": { - "type": "structure", - "members": { - "bundleId": {}, - "title": {}, - "version": {}, - "description": {}, - "iconUrl": {}, - "availablePlatforms": { - "type": "list", - "member": {} - } - } - } - } -} \ No newline at end of file diff --git a/workshops/monte-carlo-on-ec2-spot-fleet/src/web/node_modules/aws-sdk/apis/mobile-2017-07-01.paginators.json b/workshops/monte-carlo-on-ec2-spot-fleet/src/web/node_modules/aws-sdk/apis/mobile-2017-07-01.paginators.json deleted file mode 100644 index 6dcde776..00000000 --- a/workshops/monte-carlo-on-ec2-spot-fleet/src/web/node_modules/aws-sdk/apis/mobile-2017-07-01.paginators.json +++ /dev/null @@ -1,14 +0,0 @@ -{ - "pagination": { - "ListBundles": { - "input_token": "nextToken", - "output_token": "nextToken", - "limit_key": "maxResults" - }, - "ListProjects": { - "input_token": "nextToken", - "output_token": "nextToken", - "limit_key": "maxResults" - } - } -} diff --git a/workshops/monte-carlo-on-ec2-spot-fleet/src/web/node_modules/aws-sdk/apis/mobileanalytics-2014-06-05.min.json b/workshops/monte-carlo-on-ec2-spot-fleet/src/web/node_modules/aws-sdk/apis/mobileanalytics-2014-06-05.min.json deleted file mode 100644 index a327cb12..00000000 --- a/workshops/monte-carlo-on-ec2-spot-fleet/src/web/node_modules/aws-sdk/apis/mobileanalytics-2014-06-05.min.json +++ /dev/null @@ -1,74 +0,0 @@ -{ - "version": "2.0", - "metadata": { - "apiVersion": "2014-06-05", - "endpointPrefix": "mobileanalytics", - "serviceFullName": "Amazon Mobile Analytics", - "signatureVersion": "v4", - "protocol": "rest-json" - }, - "operations": { - "PutEvents": { - "http": { - "requestUri": "/2014-06-05/events", - "responseCode": 202 - }, - "input": { - "type": "structure", - "required": [ - "events", - "clientContext" - ], - "members": { - "events": { - "type": "list", - "member": { - "type": "structure", - "required": [ - "eventType", - "timestamp" - ], - "members": { - "eventType": {}, - "timestamp": {}, - "session": { - "type": "structure", - "members": { - "id": {}, - "duration": { - "type": "long" - }, - "startTimestamp": {}, - "stopTimestamp": {} - } - }, - "version": {}, - "attributes": { - "type": "map", - "key": {}, - "value": {} - }, - "metrics": { - "type": "map", - "key": {}, - "value": { - "type": "double" - } - } - } - } - }, - "clientContext": { - "location": "header", - "locationName": "x-amz-Client-Context" - }, - "clientContextEncoding": { - "location": "header", - "locationName": "x-amz-Client-Context-Encoding" - } - } - } - } - }, - "shapes": {} -} \ No newline at end of file diff --git a/workshops/monte-carlo-on-ec2-spot-fleet/src/web/node_modules/aws-sdk/apis/monitoring-2010-08-01.examples.json b/workshops/monte-carlo-on-ec2-spot-fleet/src/web/node_modules/aws-sdk/apis/monitoring-2010-08-01.examples.json deleted file mode 100644 index 0ea7e3b0..00000000 --- a/workshops/monte-carlo-on-ec2-spot-fleet/src/web/node_modules/aws-sdk/apis/monitoring-2010-08-01.examples.json +++ /dev/null @@ -1,5 +0,0 @@ -{ - "version": "1.0", - "examples": { - } -} diff --git a/workshops/monte-carlo-on-ec2-spot-fleet/src/web/node_modules/aws-sdk/apis/monitoring-2010-08-01.min.json b/workshops/monte-carlo-on-ec2-spot-fleet/src/web/node_modules/aws-sdk/apis/monitoring-2010-08-01.min.json deleted file mode 100644 index 5a0b62b1..00000000 --- a/workshops/monte-carlo-on-ec2-spot-fleet/src/web/node_modules/aws-sdk/apis/monitoring-2010-08-01.min.json +++ /dev/null @@ -1,615 +0,0 @@ -{ - "version": "2.0", - "metadata": { - "apiVersion": "2010-08-01", - "endpointPrefix": "monitoring", - "protocol": "query", - "serviceAbbreviation": "CloudWatch", - "serviceFullName": "Amazon CloudWatch", - "signatureVersion": "v4", - "uid": "monitoring-2010-08-01", - "xmlNamespace": "http://monitoring.amazonaws.com/doc/2010-08-01/" - }, - "operations": { - "DeleteAlarms": { - "input": { - "type": "structure", - "required": [ - "AlarmNames" - ], - "members": { - "AlarmNames": { - "shape": "S2" - } - } - } - }, - "DeleteDashboards": { - "input": { - "type": "structure", - "members": { - "DashboardNames": { - "type": "list", - "member": {} - } - } - }, - "output": { - "resultWrapper": "DeleteDashboardsResult", - "type": "structure", - "members": {} - } - }, - "DescribeAlarmHistory": { - "input": { - "type": "structure", - "members": { - "AlarmName": {}, - "HistoryItemType": {}, - "StartDate": { - "type": "timestamp" - }, - "EndDate": { - "type": "timestamp" - }, - "MaxRecords": { - "type": "integer" - }, - "NextToken": {} - } - }, - "output": { - "resultWrapper": "DescribeAlarmHistoryResult", - "type": "structure", - "members": { - "AlarmHistoryItems": { - "type": "list", - "member": { - "type": "structure", - "members": { - "AlarmName": {}, - "Timestamp": { - "type": "timestamp" - }, - "HistoryItemType": {}, - "HistorySummary": {}, - "HistoryData": {} - } - } - }, - "NextToken": {} - } - } - }, - "DescribeAlarms": { - "input": { - "type": "structure", - "members": { - "AlarmNames": { - "shape": "S2" - }, - "AlarmNamePrefix": {}, - "StateValue": {}, - "ActionPrefix": {}, - "MaxRecords": { - "type": "integer" - }, - "NextToken": {} - } - }, - "output": { - "resultWrapper": "DescribeAlarmsResult", - "type": "structure", - "members": { - "MetricAlarms": { - "shape": "Sn" - }, - "NextToken": {} - } - } - }, - "DescribeAlarmsForMetric": { - "input": { - "type": "structure", - "required": [ - "MetricName", - "Namespace" - ], - "members": { - "MetricName": {}, - "Namespace": {}, - "Statistic": {}, - "ExtendedStatistic": {}, - "Dimensions": { - "shape": "S10" - }, - "Period": { - "type": "integer" - }, - "Unit": {} - } - }, - "output": { - "resultWrapper": "DescribeAlarmsForMetricResult", - "type": "structure", - "members": { - "MetricAlarms": { - "shape": "Sn" - } - } - } - }, - "DisableAlarmActions": { - "input": { - "type": "structure", - "required": [ - "AlarmNames" - ], - "members": { - "AlarmNames": { - "shape": "S2" - } - } - } - }, - "EnableAlarmActions": { - "input": { - "type": "structure", - "required": [ - "AlarmNames" - ], - "members": { - "AlarmNames": { - "shape": "S2" - } - } - } - }, - "GetDashboard": { - "input": { - "type": "structure", - "members": { - "DashboardName": {} - } - }, - "output": { - "resultWrapper": "GetDashboardResult", - "type": "structure", - "members": { - "DashboardArn": {}, - "DashboardBody": {}, - "DashboardName": {} - } - } - }, - "GetMetricStatistics": { - "input": { - "type": "structure", - "required": [ - "Namespace", - "MetricName", - "StartTime", - "EndTime", - "Period" - ], - "members": { - "Namespace": {}, - "MetricName": {}, - "Dimensions": { - "shape": "S10" - }, - "StartTime": { - "type": "timestamp" - }, - "EndTime": { - "type": "timestamp" - }, - "Period": { - "type": "integer" - }, - "Statistics": { - "type": "list", - "member": {} - }, - "ExtendedStatistics": { - "type": "list", - "member": {} - }, - "Unit": {} - } - }, - "output": { - "resultWrapper": "GetMetricStatisticsResult", - "type": "structure", - "members": { - "Label": {}, - "Datapoints": { - "type": "list", - "member": { - "type": "structure", - "members": { - "Timestamp": { - "type": "timestamp" - }, - "SampleCount": { - "type": "double" - }, - "Average": { - "type": "double" - }, - "Sum": { - "type": "double" - }, - "Minimum": { - "type": "double" - }, - "Maximum": { - "type": "double" - }, - "Unit": {}, - "ExtendedStatistics": { - "type": "map", - "key": {}, - "value": { - "type": "double" - } - } - }, - "xmlOrder": [ - "Timestamp", - "SampleCount", - "Average", - "Sum", - "Minimum", - "Maximum", - "Unit", - "ExtendedStatistics" - ] - } - } - } - } - }, - "ListDashboards": { - "input": { - "type": "structure", - "members": { - "DashboardNamePrefix": {}, - "NextToken": {} - } - }, - "output": { - "resultWrapper": "ListDashboardsResult", - "type": "structure", - "members": { - "DashboardEntries": { - "type": "list", - "member": { - "type": "structure", - "members": { - "DashboardName": {}, - "DashboardArn": {}, - "LastModified": { - "type": "timestamp" - }, - "Size": { - "type": "long" - } - } - } - }, - "NextToken": {} - } - } - }, - "ListMetrics": { - "input": { - "type": "structure", - "members": { - "Namespace": {}, - "MetricName": {}, - "Dimensions": { - "type": "list", - "member": { - "type": "structure", - "required": [ - "Name" - ], - "members": { - "Name": {}, - "Value": {} - } - } - }, - "NextToken": {} - } - }, - "output": { - "resultWrapper": "ListMetricsResult", - "type": "structure", - "members": { - "Metrics": { - "type": "list", - "member": { - "type": "structure", - "members": { - "Namespace": {}, - "MetricName": {}, - "Dimensions": { - "shape": "S10" - } - }, - "xmlOrder": [ - "Namespace", - "MetricName", - "Dimensions" - ] - } - }, - "NextToken": {} - }, - "xmlOrder": [ - "Metrics", - "NextToken" - ] - } - }, - "PutDashboard": { - "input": { - "type": "structure", - "members": { - "DashboardName": {}, - "DashboardBody": {} - } - }, - "output": { - "resultWrapper": "PutDashboardResult", - "type": "structure", - "members": { - "DashboardValidationMessages": { - "type": "list", - "member": { - "type": "structure", - "members": { - "DataPath": {}, - "Message": {} - } - } - } - } - } - }, - "PutMetricAlarm": { - "input": { - "type": "structure", - "required": [ - "AlarmName", - "MetricName", - "Namespace", - "Period", - "EvaluationPeriods", - "Threshold", - "ComparisonOperator" - ], - "members": { - "AlarmName": {}, - "AlarmDescription": {}, - "ActionsEnabled": { - "type": "boolean" - }, - "OKActions": { - "shape": "Ss" - }, - "AlarmActions": { - "shape": "Ss" - }, - "InsufficientDataActions": { - "shape": "Ss" - }, - "MetricName": {}, - "Namespace": {}, - "Statistic": {}, - "ExtendedStatistic": {}, - "Dimensions": { - "shape": "S10" - }, - "Period": { - "type": "integer" - }, - "Unit": {}, - "EvaluationPeriods": { - "type": "integer" - }, - "Threshold": { - "type": "double" - }, - "ComparisonOperator": {}, - "TreatMissingData": {}, - "EvaluateLowSampleCountPercentile": {} - } - } - }, - "PutMetricData": { - "input": { - "type": "structure", - "required": [ - "Namespace", - "MetricData" - ], - "members": { - "Namespace": {}, - "MetricData": { - "type": "list", - "member": { - "type": "structure", - "required": [ - "MetricName" - ], - "members": { - "MetricName": {}, - "Dimensions": { - "shape": "S10" - }, - "Timestamp": { - "type": "timestamp" - }, - "Value": { - "type": "double" - }, - "StatisticValues": { - "type": "structure", - "required": [ - "SampleCount", - "Sum", - "Minimum", - "Maximum" - ], - "members": { - "SampleCount": { - "type": "double" - }, - "Sum": { - "type": "double" - }, - "Minimum": { - "type": "double" - }, - "Maximum": { - "type": "double" - } - } - }, - "Unit": {}, - "StorageResolution": { - "type": "integer" - } - } - } - } - } - } - }, - "SetAlarmState": { - "input": { - "type": "structure", - "required": [ - "AlarmName", - "StateValue", - "StateReason" - ], - "members": { - "AlarmName": {}, - "StateValue": {}, - "StateReason": {}, - "StateReasonData": {} - } - } - } - }, - "shapes": { - "S2": { - "type": "list", - "member": {} - }, - "Sn": { - "type": "list", - "member": { - "type": "structure", - "members": { - "AlarmName": {}, - "AlarmArn": {}, - "AlarmDescription": {}, - "AlarmConfigurationUpdatedTimestamp": { - "type": "timestamp" - }, - "ActionsEnabled": { - "type": "boolean" - }, - "OKActions": { - "shape": "Ss" - }, - "AlarmActions": { - "shape": "Ss" - }, - "InsufficientDataActions": { - "shape": "Ss" - }, - "StateValue": {}, - "StateReason": {}, - "StateReasonData": {}, - "StateUpdatedTimestamp": { - "type": "timestamp" - }, - "MetricName": {}, - "Namespace": {}, - "Statistic": {}, - "ExtendedStatistic": {}, - "Dimensions": { - "shape": "S10" - }, - "Period": { - "type": "integer" - }, - "Unit": {}, - "EvaluationPeriods": { - "type": "integer" - }, - "Threshold": { - "type": "double" - }, - "ComparisonOperator": {}, - "TreatMissingData": {}, - "EvaluateLowSampleCountPercentile": {} - }, - "xmlOrder": [ - "AlarmName", - "AlarmArn", - "AlarmDescription", - "AlarmConfigurationUpdatedTimestamp", - "ActionsEnabled", - "OKActions", - "AlarmActions", - "InsufficientDataActions", - "StateValue", - "StateReason", - "StateReasonData", - "StateUpdatedTimestamp", - "MetricName", - "Namespace", - "Statistic", - "Dimensions", - "Period", - "Unit", - "EvaluationPeriods", - "Threshold", - "ComparisonOperator", - "ExtendedStatistic", - "TreatMissingData", - "EvaluateLowSampleCountPercentile" - ] - } - }, - "Ss": { - "type": "list", - "member": {} - }, - "S10": { - "type": "list", - "member": { - "type": "structure", - "required": [ - "Name", - "Value" - ], - "members": { - "Name": {}, - "Value": {} - }, - "xmlOrder": [ - "Name", - "Value" - ] - } - } - } -} \ No newline at end of file diff --git a/workshops/monte-carlo-on-ec2-spot-fleet/src/web/node_modules/aws-sdk/apis/monitoring-2010-08-01.paginators.json b/workshops/monte-carlo-on-ec2-spot-fleet/src/web/node_modules/aws-sdk/apis/monitoring-2010-08-01.paginators.json deleted file mode 100644 index 9f0ad85a..00000000 --- a/workshops/monte-carlo-on-ec2-spot-fleet/src/web/node_modules/aws-sdk/apis/monitoring-2010-08-01.paginators.json +++ /dev/null @@ -1,24 +0,0 @@ -{ - "pagination": { - "DescribeAlarmHistory": { - "input_token": "NextToken", - "limit_key": "MaxRecords", - "output_token": "NextToken", - "result_key": "AlarmHistoryItems" - }, - "DescribeAlarms": { - "input_token": "NextToken", - "limit_key": "MaxRecords", - "output_token": "NextToken", - "result_key": "MetricAlarms" - }, - "DescribeAlarmsForMetric": { - "result_key": "MetricAlarms" - }, - "ListMetrics": { - "input_token": "NextToken", - "output_token": "NextToken", - "result_key": "Metrics" - } - } -} \ No newline at end of file diff --git a/workshops/monte-carlo-on-ec2-spot-fleet/src/web/node_modules/aws-sdk/apis/monitoring-2010-08-01.waiters2.json b/workshops/monte-carlo-on-ec2-spot-fleet/src/web/node_modules/aws-sdk/apis/monitoring-2010-08-01.waiters2.json deleted file mode 100644 index cb0cf0bf..00000000 --- a/workshops/monte-carlo-on-ec2-spot-fleet/src/web/node_modules/aws-sdk/apis/monitoring-2010-08-01.waiters2.json +++ /dev/null @@ -1,18 +0,0 @@ -{ - "version": 2, - "waiters": { - "AlarmExists": { - "delay": 5, - "maxAttempts": 40, - "operation": "DescribeAlarms", - "acceptors": [ - { - "matcher": "path", - "expected": true, - "argument": "length(MetricAlarms[]) > `0`", - "state": "success" - } - ] - } - } -} diff --git a/workshops/monte-carlo-on-ec2-spot-fleet/src/web/node_modules/aws-sdk/apis/mturk-requester-2017-01-17.examples.json b/workshops/monte-carlo-on-ec2-spot-fleet/src/web/node_modules/aws-sdk/apis/mturk-requester-2017-01-17.examples.json deleted file mode 100644 index 0ea7e3b0..00000000 --- a/workshops/monte-carlo-on-ec2-spot-fleet/src/web/node_modules/aws-sdk/apis/mturk-requester-2017-01-17.examples.json +++ /dev/null @@ -1,5 +0,0 @@ -{ - "version": "1.0", - "examples": { - } -} diff --git a/workshops/monte-carlo-on-ec2-spot-fleet/src/web/node_modules/aws-sdk/apis/mturk-requester-2017-01-17.min.json b/workshops/monte-carlo-on-ec2-spot-fleet/src/web/node_modules/aws-sdk/apis/mturk-requester-2017-01-17.min.json deleted file mode 100644 index c76c2a47..00000000 --- a/workshops/monte-carlo-on-ec2-spot-fleet/src/web/node_modules/aws-sdk/apis/mturk-requester-2017-01-17.min.json +++ /dev/null @@ -1,1294 +0,0 @@ -{ - "version": "2.0", - "metadata": { - "apiVersion": "2017-01-17", - "endpointPrefix": "mturk-requester", - "jsonVersion": "1.1", - "protocol": "json", - "serviceAbbreviation": "Amazon MTurk", - "serviceFullName": "Amazon Mechanical Turk", - "signatureVersion": "v4", - "targetPrefix": "MTurkRequesterServiceV20170117", - "uid": "mturk-requester-2017-01-17" - }, - "operations": { - "AcceptQualificationRequest": { - "input": { - "type": "structure", - "required": [ - "QualificationRequestId" - ], - "members": { - "QualificationRequestId": {}, - "IntegerValue": { - "type": "integer" - } - } - }, - "output": { - "type": "structure", - "members": {} - } - }, - "ApproveAssignment": { - "input": { - "type": "structure", - "required": [ - "AssignmentId" - ], - "members": { - "AssignmentId": {}, - "RequesterFeedback": {}, - "OverrideRejection": { - "type": "boolean" - } - } - }, - "output": { - "type": "structure", - "members": {} - }, - "idempotent": true - }, - "AssociateQualificationWithWorker": { - "input": { - "type": "structure", - "required": [ - "QualificationTypeId", - "WorkerId" - ], - "members": { - "QualificationTypeId": {}, - "WorkerId": {}, - "IntegerValue": { - "type": "integer" - }, - "SendNotification": { - "type": "boolean" - } - } - }, - "output": { - "type": "structure", - "members": {} - } - }, - "CreateAdditionalAssignmentsForHIT": { - "input": { - "type": "structure", - "required": [ - "HITId", - "NumberOfAdditionalAssignments" - ], - "members": { - "HITId": {}, - "NumberOfAdditionalAssignments": { - "type": "integer" - }, - "UniqueRequestToken": {} - } - }, - "output": { - "type": "structure", - "members": {} - } - }, - "CreateHIT": { - "input": { - "type": "structure", - "required": [ - "LifetimeInSeconds", - "AssignmentDurationInSeconds", - "Reward", - "Title", - "Description" - ], - "members": { - "MaxAssignments": { - "type": "integer" - }, - "AutoApprovalDelayInSeconds": { - "type": "long" - }, - "LifetimeInSeconds": { - "type": "long" - }, - "AssignmentDurationInSeconds": { - "type": "long" - }, - "Reward": {}, - "Title": {}, - "Keywords": {}, - "Description": {}, - "Question": {}, - "RequesterAnnotation": {}, - "QualificationRequirements": { - "shape": "Si" - }, - "UniqueRequestToken": {}, - "AssignmentReviewPolicy": { - "shape": "Sp" - }, - "HITReviewPolicy": { - "shape": "Sp" - }, - "HITLayoutId": {}, - "HITLayoutParameters": { - "shape": "Sv" - } - } - }, - "output": { - "type": "structure", - "members": { - "HIT": { - "shape": "Sy" - } - } - } - }, - "CreateHITType": { - "input": { - "type": "structure", - "required": [ - "AssignmentDurationInSeconds", - "Reward", - "Title", - "Description" - ], - "members": { - "AutoApprovalDelayInSeconds": { - "type": "long" - }, - "AssignmentDurationInSeconds": { - "type": "long" - }, - "Reward": {}, - "Title": {}, - "Keywords": {}, - "Description": {}, - "QualificationRequirements": { - "shape": "Si" - } - } - }, - "output": { - "type": "structure", - "members": { - "HITTypeId": {} - } - }, - "idempotent": true - }, - "CreateHITWithHITType": { - "input": { - "type": "structure", - "required": [ - "HITTypeId", - "LifetimeInSeconds" - ], - "members": { - "HITTypeId": {}, - "MaxAssignments": { - "type": "integer" - }, - "LifetimeInSeconds": { - "type": "long" - }, - "Question": {}, - "RequesterAnnotation": {}, - "UniqueRequestToken": {}, - "AssignmentReviewPolicy": { - "shape": "Sp" - }, - "HITReviewPolicy": { - "shape": "Sp" - }, - "HITLayoutId": {}, - "HITLayoutParameters": { - "shape": "Sv" - } - } - }, - "output": { - "type": "structure", - "members": { - "HIT": { - "shape": "Sy" - } - } - } - }, - "CreateQualificationType": { - "input": { - "type": "structure", - "required": [ - "Name", - "Description", - "QualificationTypeStatus" - ], - "members": { - "Name": {}, - "Keywords": {}, - "Description": {}, - "QualificationTypeStatus": {}, - "RetryDelayInSeconds": { - "type": "long" - }, - "Test": {}, - "AnswerKey": {}, - "TestDurationInSeconds": { - "type": "long" - }, - "AutoGranted": { - "type": "boolean" - }, - "AutoGrantedValue": { - "type": "integer" - } - } - }, - "output": { - "type": "structure", - "members": { - "QualificationType": { - "shape": "S19" - } - } - } - }, - "CreateWorkerBlock": { - "input": { - "type": "structure", - "required": [ - "WorkerId", - "Reason" - ], - "members": { - "WorkerId": {}, - "Reason": {} - } - }, - "output": { - "type": "structure", - "members": {} - } - }, - "DeleteHIT": { - "input": { - "type": "structure", - "required": [ - "HITId" - ], - "members": { - "HITId": {} - } - }, - "output": { - "type": "structure", - "members": {} - }, - "idempotent": true - }, - "DeleteQualificationType": { - "input": { - "type": "structure", - "required": [ - "QualificationTypeId" - ], - "members": { - "QualificationTypeId": {} - } - }, - "output": { - "type": "structure", - "members": {} - }, - "idempotent": true - }, - "DeleteWorkerBlock": { - "input": { - "type": "structure", - "required": [ - "WorkerId" - ], - "members": { - "WorkerId": {}, - "Reason": {} - } - }, - "output": { - "type": "structure", - "members": {} - }, - "idempotent": true - }, - "DisassociateQualificationFromWorker": { - "input": { - "type": "structure", - "required": [ - "WorkerId", - "QualificationTypeId" - ], - "members": { - "WorkerId": {}, - "QualificationTypeId": {}, - "Reason": {} - } - }, - "output": { - "type": "structure", - "members": {} - } - }, - "GetAccountBalance": { - "input": { - "type": "structure", - "members": {} - }, - "output": { - "type": "structure", - "members": { - "AvailableBalance": {}, - "OnHoldBalance": {} - } - }, - "idempotent": true - }, - "GetAssignment": { - "input": { - "type": "structure", - "required": [ - "AssignmentId" - ], - "members": { - "AssignmentId": {} - } - }, - "output": { - "type": "structure", - "members": { - "Assignment": { - "shape": "S1o" - }, - "HIT": { - "shape": "Sy" - } - } - }, - "idempotent": true - }, - "GetFileUploadURL": { - "input": { - "type": "structure", - "required": [ - "AssignmentId", - "QuestionIdentifier" - ], - "members": { - "AssignmentId": {}, - "QuestionIdentifier": {} - } - }, - "output": { - "type": "structure", - "members": { - "FileUploadURL": {} - } - }, - "idempotent": true - }, - "GetHIT": { - "input": { - "type": "structure", - "required": [ - "HITId" - ], - "members": { - "HITId": {} - } - }, - "output": { - "type": "structure", - "members": { - "HIT": { - "shape": "Sy" - } - } - }, - "idempotent": true - }, - "GetQualificationScore": { - "input": { - "type": "structure", - "required": [ - "QualificationTypeId", - "WorkerId" - ], - "members": { - "QualificationTypeId": {}, - "WorkerId": {} - } - }, - "output": { - "type": "structure", - "members": { - "Qualification": { - "shape": "S1w" - } - } - }, - "idempotent": true - }, - "GetQualificationType": { - "input": { - "type": "structure", - "required": [ - "QualificationTypeId" - ], - "members": { - "QualificationTypeId": {} - } - }, - "output": { - "type": "structure", - "members": { - "QualificationType": { - "shape": "S19" - } - } - }, - "idempotent": true - }, - "ListAssignmentsForHIT": { - "input": { - "type": "structure", - "required": [ - "HITId" - ], - "members": { - "HITId": {}, - "NextToken": {}, - "MaxResults": { - "type": "integer" - }, - "AssignmentStatuses": { - "type": "list", - "member": {} - } - } - }, - "output": { - "type": "structure", - "members": { - "NextToken": {}, - "NumResults": { - "type": "integer" - }, - "Assignments": { - "type": "list", - "member": { - "shape": "S1o" - } - } - } - }, - "idempotent": true - }, - "ListBonusPayments": { - "input": { - "type": "structure", - "members": { - "HITId": {}, - "AssignmentId": {}, - "NextToken": {}, - "MaxResults": { - "type": "integer" - } - } - }, - "output": { - "type": "structure", - "members": { - "NumResults": { - "type": "integer" - }, - "NextToken": {}, - "BonusPayments": { - "type": "list", - "member": { - "type": "structure", - "members": { - "WorkerId": {}, - "BonusAmount": {}, - "AssignmentId": {}, - "Reason": {}, - "GrantTime": { - "type": "timestamp" - } - } - } - } - } - }, - "idempotent": true - }, - "ListHITs": { - "input": { - "type": "structure", - "members": { - "NextToken": {}, - "MaxResults": { - "type": "integer" - } - } - }, - "output": { - "type": "structure", - "members": { - "NextToken": {}, - "NumResults": { - "type": "integer" - }, - "HITs": { - "shape": "S2c" - } - } - }, - "idempotent": true - }, - "ListHITsForQualificationType": { - "input": { - "type": "structure", - "required": [ - "QualificationTypeId" - ], - "members": { - "QualificationTypeId": {}, - "NextToken": {}, - "MaxResults": { - "type": "integer" - } - } - }, - "output": { - "type": "structure", - "members": { - "NextToken": {}, - "NumResults": { - "type": "integer" - }, - "HITs": { - "shape": "S2c" - } - } - }, - "idempotent": true - }, - "ListQualificationRequests": { - "input": { - "type": "structure", - "members": { - "QualificationTypeId": {}, - "NextToken": {}, - "MaxResults": { - "type": "integer" - } - } - }, - "output": { - "type": "structure", - "members": { - "NumResults": { - "type": "integer" - }, - "NextToken": {}, - "QualificationRequests": { - "type": "list", - "member": { - "type": "structure", - "members": { - "QualificationRequestId": {}, - "QualificationTypeId": {}, - "WorkerId": {}, - "Test": {}, - "Answer": {}, - "SubmitTime": { - "type": "timestamp" - } - } - } - } - } - }, - "idempotent": true - }, - "ListQualificationTypes": { - "input": { - "type": "structure", - "required": [ - "MustBeRequestable" - ], - "members": { - "Query": {}, - "MustBeRequestable": { - "type": "boolean" - }, - "MustBeOwnedByCaller": { - "type": "boolean" - }, - "NextToken": {}, - "MaxResults": { - "type": "integer" - } - } - }, - "output": { - "type": "structure", - "members": { - "NumResults": { - "type": "integer" - }, - "NextToken": {}, - "QualificationTypes": { - "type": "list", - "member": { - "shape": "S19" - } - } - } - }, - "idempotent": true - }, - "ListReviewPolicyResultsForHIT": { - "input": { - "type": "structure", - "required": [ - "HITId" - ], - "members": { - "HITId": {}, - "PolicyLevels": { - "type": "list", - "member": {} - }, - "RetrieveActions": { - "type": "boolean" - }, - "RetrieveResults": { - "type": "boolean" - }, - "NextToken": {}, - "MaxResults": { - "type": "integer" - } - } - }, - "output": { - "type": "structure", - "members": { - "HITId": {}, - "AssignmentReviewPolicy": { - "shape": "Sp" - }, - "HITReviewPolicy": { - "shape": "Sp" - }, - "AssignmentReviewReport": { - "shape": "S2q" - }, - "HITReviewReport": { - "shape": "S2q" - }, - "NextToken": {} - } - }, - "idempotent": true - }, - "ListReviewableHITs": { - "input": { - "type": "structure", - "members": { - "HITTypeId": {}, - "Status": {}, - "NextToken": {}, - "MaxResults": { - "type": "integer" - } - } - }, - "output": { - "type": "structure", - "members": { - "NextToken": {}, - "NumResults": { - "type": "integer" - }, - "HITs": { - "shape": "S2c" - } - } - }, - "idempotent": true - }, - "ListWorkerBlocks": { - "input": { - "type": "structure", - "members": { - "NextToken": {}, - "MaxResults": { - "type": "integer" - } - } - }, - "output": { - "type": "structure", - "members": { - "NextToken": {}, - "NumResults": { - "type": "integer" - }, - "WorkerBlocks": { - "type": "list", - "member": { - "type": "structure", - "members": { - "WorkerId": {}, - "Reason": {} - } - } - } - } - }, - "idempotent": true - }, - "ListWorkersWithQualificationType": { - "input": { - "type": "structure", - "required": [ - "QualificationTypeId" - ], - "members": { - "QualificationTypeId": {}, - "Status": {}, - "NextToken": {}, - "MaxResults": { - "type": "integer" - } - } - }, - "output": { - "type": "structure", - "members": { - "NextToken": {}, - "NumResults": { - "type": "integer" - }, - "Qualifications": { - "type": "list", - "member": { - "shape": "S1w" - } - } - } - }, - "idempotent": true - }, - "NotifyWorkers": { - "input": { - "type": "structure", - "required": [ - "Subject", - "MessageText", - "WorkerIds" - ], - "members": { - "Subject": {}, - "MessageText": {}, - "WorkerIds": { - "type": "list", - "member": {} - } - } - }, - "output": { - "type": "structure", - "members": { - "NotifyWorkersFailureStatuses": { - "type": "list", - "member": { - "type": "structure", - "members": { - "NotifyWorkersFailureCode": {}, - "NotifyWorkersFailureMessage": {}, - "WorkerId": {} - } - } - } - } - } - }, - "RejectAssignment": { - "input": { - "type": "structure", - "required": [ - "AssignmentId", - "RequesterFeedback" - ], - "members": { - "AssignmentId": {}, - "RequesterFeedback": {} - } - }, - "output": { - "type": "structure", - "members": {} - }, - "idempotent": true - }, - "RejectQualificationRequest": { - "input": { - "type": "structure", - "required": [ - "QualificationRequestId" - ], - "members": { - "QualificationRequestId": {}, - "Reason": {} - } - }, - "output": { - "type": "structure", - "members": {} - } - }, - "SendBonus": { - "input": { - "type": "structure", - "required": [ - "WorkerId", - "BonusAmount", - "AssignmentId", - "Reason" - ], - "members": { - "WorkerId": {}, - "BonusAmount": {}, - "AssignmentId": {}, - "Reason": {}, - "UniqueRequestToken": {} - } - }, - "output": { - "type": "structure", - "members": {} - } - }, - "SendTestEventNotification": { - "input": { - "type": "structure", - "required": [ - "Notification", - "TestEventType" - ], - "members": { - "Notification": { - "shape": "S3j" - }, - "TestEventType": {} - } - }, - "output": { - "type": "structure", - "members": {} - } - }, - "UpdateExpirationForHIT": { - "input": { - "type": "structure", - "required": [ - "HITId", - "ExpireAt" - ], - "members": { - "HITId": {}, - "ExpireAt": { - "type": "timestamp" - } - } - }, - "output": { - "type": "structure", - "members": {} - }, - "idempotent": true - }, - "UpdateHITReviewStatus": { - "input": { - "type": "structure", - "required": [ - "HITId" - ], - "members": { - "HITId": {}, - "Revert": { - "type": "boolean" - } - } - }, - "output": { - "type": "structure", - "members": {} - }, - "idempotent": true - }, - "UpdateHITTypeOfHIT": { - "input": { - "type": "structure", - "required": [ - "HITId", - "HITTypeId" - ], - "members": { - "HITId": {}, - "HITTypeId": {} - } - }, - "output": { - "type": "structure", - "members": {} - }, - "idempotent": true - }, - "UpdateNotificationSettings": { - "input": { - "type": "structure", - "required": [ - "HITTypeId" - ], - "members": { - "HITTypeId": {}, - "Notification": { - "shape": "S3j" - }, - "Active": { - "type": "boolean" - } - } - }, - "output": { - "type": "structure", - "members": {} - }, - "idempotent": true - }, - "UpdateQualificationType": { - "input": { - "type": "structure", - "required": [ - "QualificationTypeId" - ], - "members": { - "QualificationTypeId": {}, - "Description": {}, - "QualificationTypeStatus": {}, - "Test": {}, - "AnswerKey": {}, - "TestDurationInSeconds": { - "type": "long" - }, - "RetryDelayInSeconds": { - "type": "long" - }, - "AutoGranted": { - "type": "boolean" - }, - "AutoGrantedValue": { - "type": "integer" - } - } - }, - "output": { - "type": "structure", - "members": { - "QualificationType": { - "shape": "S19" - } - } - } - } - }, - "shapes": { - "Si": { - "type": "list", - "member": { - "type": "structure", - "required": [ - "QualificationTypeId", - "Comparator" - ], - "members": { - "QualificationTypeId": {}, - "Comparator": {}, - "IntegerValues": { - "type": "list", - "member": { - "type": "integer" - } - }, - "LocaleValues": { - "type": "list", - "member": { - "shape": "Sn" - } - }, - "RequiredToPreview": { - "type": "boolean" - } - } - } - }, - "Sn": { - "type": "structure", - "required": [ - "Country" - ], - "members": { - "Country": {}, - "Subdivision": {} - } - }, - "Sp": { - "type": "structure", - "required": [ - "PolicyName" - ], - "members": { - "PolicyName": {}, - "Parameters": { - "type": "list", - "member": { - "type": "structure", - "members": { - "Key": {}, - "Values": { - "shape": "Ss" - }, - "MapEntries": { - "type": "list", - "member": { - "type": "structure", - "members": { - "Key": {}, - "Values": { - "shape": "Ss" - } - } - } - } - } - } - } - } - }, - "Ss": { - "type": "list", - "member": {} - }, - "Sv": { - "type": "list", - "member": { - "type": "structure", - "required": [ - "Name", - "Value" - ], - "members": { - "Name": {}, - "Value": {} - } - } - }, - "Sy": { - "type": "structure", - "members": { - "HITId": {}, - "HITTypeId": {}, - "HITGroupId": {}, - "HITLayoutId": {}, - "CreationTime": { - "type": "timestamp" - }, - "Title": {}, - "Description": {}, - "Question": {}, - "Keywords": {}, - "HITStatus": {}, - "MaxAssignments": { - "type": "integer" - }, - "Reward": {}, - "AutoApprovalDelayInSeconds": { - "type": "long" - }, - "Expiration": { - "type": "timestamp" - }, - "AssignmentDurationInSeconds": { - "type": "long" - }, - "RequesterAnnotation": {}, - "QualificationRequirements": { - "shape": "Si" - }, - "HITReviewStatus": {}, - "NumberOfAssignmentsPending": { - "type": "integer" - }, - "NumberOfAssignmentsAvailable": { - "type": "integer" - }, - "NumberOfAssignmentsCompleted": { - "type": "integer" - } - } - }, - "S19": { - "type": "structure", - "members": { - "QualificationTypeId": {}, - "CreationTime": { - "type": "timestamp" - }, - "Name": {}, - "Description": {}, - "Keywords": {}, - "QualificationTypeStatus": {}, - "Test": {}, - "TestDurationInSeconds": { - "type": "long" - }, - "AnswerKey": {}, - "RetryDelayInSeconds": { - "type": "long" - }, - "IsRequestable": { - "type": "boolean" - }, - "AutoGranted": { - "type": "boolean" - }, - "AutoGrantedValue": { - "type": "integer" - } - } - }, - "S1o": { - "type": "structure", - "members": { - "AssignmentId": {}, - "WorkerId": {}, - "HITId": {}, - "AssignmentStatus": {}, - "AutoApprovalTime": { - "type": "timestamp" - }, - "AcceptTime": { - "type": "timestamp" - }, - "SubmitTime": { - "type": "timestamp" - }, - "ApprovalTime": { - "type": "timestamp" - }, - "RejectionTime": { - "type": "timestamp" - }, - "Deadline": { - "type": "timestamp" - }, - "Answer": {}, - "RequesterFeedback": {} - } - }, - "S1w": { - "type": "structure", - "members": { - "QualificationTypeId": {}, - "WorkerId": {}, - "GrantTime": { - "type": "timestamp" - }, - "IntegerValue": { - "type": "integer" - }, - "LocaleValue": { - "shape": "Sn" - }, - "Status": {} - } - }, - "S2c": { - "type": "list", - "member": { - "shape": "Sy" - } - }, - "S2q": { - "type": "structure", - "members": { - "ReviewResults": { - "type": "list", - "member": { - "type": "structure", - "members": { - "ActionId": {}, - "SubjectId": {}, - "SubjectType": {}, - "QuestionId": {}, - "Key": {}, - "Value": {} - } - } - }, - "ReviewActions": { - "type": "list", - "member": { - "type": "structure", - "members": { - "ActionId": {}, - "ActionName": {}, - "TargetId": {}, - "TargetType": {}, - "Status": {}, - "CompleteTime": { - "type": "timestamp" - }, - "Result": {}, - "ErrorCode": {} - } - } - } - } - }, - "S3j": { - "type": "structure", - "required": [ - "Destination", - "Transport", - "Version", - "EventTypes" - ], - "members": { - "Destination": {}, - "Transport": {}, - "Version": {}, - "EventTypes": { - "type": "list", - "member": {} - } - } - } - } -} \ No newline at end of file diff --git a/workshops/monte-carlo-on-ec2-spot-fleet/src/web/node_modules/aws-sdk/apis/mturk-requester-2017-01-17.paginators.json b/workshops/monte-carlo-on-ec2-spot-fleet/src/web/node_modules/aws-sdk/apis/mturk-requester-2017-01-17.paginators.json deleted file mode 100644 index 4a99bf71..00000000 --- a/workshops/monte-carlo-on-ec2-spot-fleet/src/web/node_modules/aws-sdk/apis/mturk-requester-2017-01-17.paginators.json +++ /dev/null @@ -1,54 +0,0 @@ -{ - "pagination": { - "ListAssignmentsForHIT": { - "input_token": "NextToken", - "output_token": "NextToken", - "limit_key": "MaxResults" - }, - "ListBonusPayments": { - "input_token": "NextToken", - "output_token": "NextToken", - "limit_key": "MaxResults" - }, - "ListHITs": { - "input_token": "NextToken", - "output_token": "NextToken", - "limit_key": "MaxResults" - }, - "ListHITsForQualificationType": { - "input_token": "NextToken", - "output_token": "NextToken", - "limit_key": "MaxResults" - }, - "ListQualificationRequests": { - "input_token": "NextToken", - "output_token": "NextToken", - "limit_key": "MaxResults" - }, - "ListQualificationTypes": { - "input_token": "NextToken", - "output_token": "NextToken", - "limit_key": "MaxResults" - }, - "ListReviewPolicyResultsForHIT": { - "input_token": "NextToken", - "output_token": "NextToken", - "limit_key": "MaxResults" - }, - "ListReviewableHITs": { - "input_token": "NextToken", - "output_token": "NextToken", - "limit_key": "MaxResults" - }, - "ListWorkerBlocks": { - "input_token": "NextToken", - "output_token": "NextToken", - "limit_key": "MaxResults" - }, - "ListWorkersWithQualificationType": { - "input_token": "NextToken", - "output_token": "NextToken", - "limit_key": "MaxResults" - } - } -} diff --git a/workshops/monte-carlo-on-ec2-spot-fleet/src/web/node_modules/aws-sdk/apis/opsworks-2013-02-18.examples.json b/workshops/monte-carlo-on-ec2-spot-fleet/src/web/node_modules/aws-sdk/apis/opsworks-2013-02-18.examples.json deleted file mode 100644 index 0ea7e3b0..00000000 --- a/workshops/monte-carlo-on-ec2-spot-fleet/src/web/node_modules/aws-sdk/apis/opsworks-2013-02-18.examples.json +++ /dev/null @@ -1,5 +0,0 @@ -{ - "version": "1.0", - "examples": { - } -} diff --git a/workshops/monte-carlo-on-ec2-spot-fleet/src/web/node_modules/aws-sdk/apis/opsworks-2013-02-18.min.json b/workshops/monte-carlo-on-ec2-spot-fleet/src/web/node_modules/aws-sdk/apis/opsworks-2013-02-18.min.json deleted file mode 100644 index fae32860..00000000 --- a/workshops/monte-carlo-on-ec2-spot-fleet/src/web/node_modules/aws-sdk/apis/opsworks-2013-02-18.min.json +++ /dev/null @@ -1,2246 +0,0 @@ -{ - "version": "2.0", - "metadata": { - "apiVersion": "2013-02-18", - "endpointPrefix": "opsworks", - "jsonVersion": "1.1", - "protocol": "json", - "serviceFullName": "AWS OpsWorks", - "signatureVersion": "v4", - "targetPrefix": "OpsWorks_20130218", - "uid": "opsworks-2013-02-18" - }, - "operations": { - "AssignInstance": { - "input": { - "type": "structure", - "required": [ - "InstanceId", - "LayerIds" - ], - "members": { - "InstanceId": {}, - "LayerIds": { - "shape": "S3" - } - } - } - }, - "AssignVolume": { - "input": { - "type": "structure", - "required": [ - "VolumeId" - ], - "members": { - "VolumeId": {}, - "InstanceId": {} - } - } - }, - "AssociateElasticIp": { - "input": { - "type": "structure", - "required": [ - "ElasticIp" - ], - "members": { - "ElasticIp": {}, - "InstanceId": {} - } - } - }, - "AttachElasticLoadBalancer": { - "input": { - "type": "structure", - "required": [ - "ElasticLoadBalancerName", - "LayerId" - ], - "members": { - "ElasticLoadBalancerName": {}, - "LayerId": {} - } - } - }, - "CloneStack": { - "input": { - "type": "structure", - "required": [ - "SourceStackId", - "ServiceRoleArn" - ], - "members": { - "SourceStackId": {}, - "Name": {}, - "Region": {}, - "VpcId": {}, - "Attributes": { - "shape": "S8" - }, - "ServiceRoleArn": {}, - "DefaultInstanceProfileArn": {}, - "DefaultOs": {}, - "HostnameTheme": {}, - "DefaultAvailabilityZone": {}, - "DefaultSubnetId": {}, - "CustomJson": {}, - "ConfigurationManager": { - "shape": "Sa" - }, - "ChefConfiguration": { - "shape": "Sb" - }, - "UseCustomCookbooks": { - "type": "boolean" - }, - "UseOpsworksSecurityGroups": { - "type": "boolean" - }, - "CustomCookbooksSource": { - "shape": "Sd" - }, - "DefaultSshKeyName": {}, - "ClonePermissions": { - "type": "boolean" - }, - "CloneAppIds": { - "shape": "S3" - }, - "DefaultRootDeviceType": {}, - "AgentVersion": {} - } - }, - "output": { - "type": "structure", - "members": { - "StackId": {} - } - } - }, - "CreateApp": { - "input": { - "type": "structure", - "required": [ - "StackId", - "Name", - "Type" - ], - "members": { - "StackId": {}, - "Shortname": {}, - "Name": {}, - "Description": {}, - "DataSources": { - "shape": "Si" - }, - "Type": {}, - "AppSource": { - "shape": "Sd" - }, - "Domains": { - "shape": "S3" - }, - "EnableSsl": { - "type": "boolean" - }, - "SslConfiguration": { - "shape": "Sl" - }, - "Attributes": { - "shape": "Sm" - }, - "Environment": { - "shape": "So" - } - } - }, - "output": { - "type": "structure", - "members": { - "AppId": {} - } - } - }, - "CreateDeployment": { - "input": { - "type": "structure", - "required": [ - "StackId", - "Command" - ], - "members": { - "StackId": {}, - "AppId": {}, - "InstanceIds": { - "shape": "S3" - }, - "LayerIds": { - "shape": "S3" - }, - "Command": { - "shape": "Ss" - }, - "Comment": {}, - "CustomJson": {} - } - }, - "output": { - "type": "structure", - "members": { - "DeploymentId": {} - } - } - }, - "CreateInstance": { - "input": { - "type": "structure", - "required": [ - "StackId", - "LayerIds", - "InstanceType" - ], - "members": { - "StackId": {}, - "LayerIds": { - "shape": "S3" - }, - "InstanceType": {}, - "AutoScalingType": {}, - "Hostname": {}, - "Os": {}, - "AmiId": {}, - "SshKeyName": {}, - "AvailabilityZone": {}, - "VirtualizationType": {}, - "SubnetId": {}, - "Architecture": {}, - "RootDeviceType": {}, - "BlockDeviceMappings": { - "shape": "Sz" - }, - "InstallUpdatesOnBoot": { - "type": "boolean" - }, - "EbsOptimized": { - "type": "boolean" - }, - "AgentVersion": {}, - "Tenancy": {} - } - }, - "output": { - "type": "structure", - "members": { - "InstanceId": {} - } - } - }, - "CreateLayer": { - "input": { - "type": "structure", - "required": [ - "StackId", - "Type", - "Name", - "Shortname" - ], - "members": { - "StackId": {}, - "Type": {}, - "Name": {}, - "Shortname": {}, - "Attributes": { - "shape": "S17" - }, - "CloudWatchLogsConfiguration": { - "shape": "S19" - }, - "CustomInstanceProfileArn": {}, - "CustomJson": {}, - "CustomSecurityGroupIds": { - "shape": "S3" - }, - "Packages": { - "shape": "S3" - }, - "VolumeConfigurations": { - "shape": "S1f" - }, - "EnableAutoHealing": { - "type": "boolean" - }, - "AutoAssignElasticIps": { - "type": "boolean" - }, - "AutoAssignPublicIps": { - "type": "boolean" - }, - "CustomRecipes": { - "shape": "S1h" - }, - "InstallUpdatesOnBoot": { - "type": "boolean" - }, - "UseEbsOptimizedInstances": { - "type": "boolean" - }, - "LifecycleEventConfiguration": { - "shape": "S1i" - } - } - }, - "output": { - "type": "structure", - "members": { - "LayerId": {} - } - } - }, - "CreateStack": { - "input": { - "type": "structure", - "required": [ - "Name", - "Region", - "ServiceRoleArn", - "DefaultInstanceProfileArn" - ], - "members": { - "Name": {}, - "Region": {}, - "VpcId": {}, - "Attributes": { - "shape": "S8" - }, - "ServiceRoleArn": {}, - "DefaultInstanceProfileArn": {}, - "DefaultOs": {}, - "HostnameTheme": {}, - "DefaultAvailabilityZone": {}, - "DefaultSubnetId": {}, - "CustomJson": {}, - "ConfigurationManager": { - "shape": "Sa" - }, - "ChefConfiguration": { - "shape": "Sb" - }, - "UseCustomCookbooks": { - "type": "boolean" - }, - "UseOpsworksSecurityGroups": { - "type": "boolean" - }, - "CustomCookbooksSource": { - "shape": "Sd" - }, - "DefaultSshKeyName": {}, - "DefaultRootDeviceType": {}, - "AgentVersion": {} - } - }, - "output": { - "type": "structure", - "members": { - "StackId": {} - } - } - }, - "CreateUserProfile": { - "input": { - "type": "structure", - "required": [ - "IamUserArn" - ], - "members": { - "IamUserArn": {}, - "SshUsername": {}, - "SshPublicKey": {}, - "AllowSelfManagement": { - "type": "boolean" - } - } - }, - "output": { - "type": "structure", - "members": { - "IamUserArn": {} - } - } - }, - "DeleteApp": { - "input": { - "type": "structure", - "required": [ - "AppId" - ], - "members": { - "AppId": {} - } - } - }, - "DeleteInstance": { - "input": { - "type": "structure", - "required": [ - "InstanceId" - ], - "members": { - "InstanceId": {}, - "DeleteElasticIp": { - "type": "boolean" - }, - "DeleteVolumes": { - "type": "boolean" - } - } - } - }, - "DeleteLayer": { - "input": { - "type": "structure", - "required": [ - "LayerId" - ], - "members": { - "LayerId": {} - } - } - }, - "DeleteStack": { - "input": { - "type": "structure", - "required": [ - "StackId" - ], - "members": { - "StackId": {} - } - } - }, - "DeleteUserProfile": { - "input": { - "type": "structure", - "required": [ - "IamUserArn" - ], - "members": { - "IamUserArn": {} - } - } - }, - "DeregisterEcsCluster": { - "input": { - "type": "structure", - "required": [ - "EcsClusterArn" - ], - "members": { - "EcsClusterArn": {} - } - } - }, - "DeregisterElasticIp": { - "input": { - "type": "structure", - "required": [ - "ElasticIp" - ], - "members": { - "ElasticIp": {} - } - } - }, - "DeregisterInstance": { - "input": { - "type": "structure", - "required": [ - "InstanceId" - ], - "members": { - "InstanceId": {} - } - } - }, - "DeregisterRdsDbInstance": { - "input": { - "type": "structure", - "required": [ - "RdsDbInstanceArn" - ], - "members": { - "RdsDbInstanceArn": {} - } - } - }, - "DeregisterVolume": { - "input": { - "type": "structure", - "required": [ - "VolumeId" - ], - "members": { - "VolumeId": {} - } - } - }, - "DescribeAgentVersions": { - "input": { - "type": "structure", - "members": { - "StackId": {}, - "ConfigurationManager": { - "shape": "Sa" - } - } - }, - "output": { - "type": "structure", - "members": { - "AgentVersions": { - "type": "list", - "member": { - "type": "structure", - "members": { - "Version": {}, - "ConfigurationManager": { - "shape": "Sa" - } - } - } - } - } - } - }, - "DescribeApps": { - "input": { - "type": "structure", - "members": { - "StackId": {}, - "AppIds": { - "shape": "S3" - } - } - }, - "output": { - "type": "structure", - "members": { - "Apps": { - "type": "list", - "member": { - "type": "structure", - "members": { - "AppId": {}, - "StackId": {}, - "Shortname": {}, - "Name": {}, - "Description": {}, - "DataSources": { - "shape": "Si" - }, - "Type": {}, - "AppSource": { - "shape": "Sd" - }, - "Domains": { - "shape": "S3" - }, - "EnableSsl": { - "type": "boolean" - }, - "SslConfiguration": { - "shape": "Sl" - }, - "Attributes": { - "shape": "Sm" - }, - "CreatedAt": {}, - "Environment": { - "shape": "So" - } - } - } - } - } - } - }, - "DescribeCommands": { - "input": { - "type": "structure", - "members": { - "DeploymentId": {}, - "InstanceId": {}, - "CommandIds": { - "shape": "S3" - } - } - }, - "output": { - "type": "structure", - "members": { - "Commands": { - "type": "list", - "member": { - "type": "structure", - "members": { - "CommandId": {}, - "InstanceId": {}, - "DeploymentId": {}, - "CreatedAt": {}, - "AcknowledgedAt": {}, - "CompletedAt": {}, - "Status": {}, - "ExitCode": { - "type": "integer" - }, - "LogUrl": {}, - "Type": {} - } - } - } - } - } - }, - "DescribeDeployments": { - "input": { - "type": "structure", - "members": { - "StackId": {}, - "AppId": {}, - "DeploymentIds": { - "shape": "S3" - } - } - }, - "output": { - "type": "structure", - "members": { - "Deployments": { - "type": "list", - "member": { - "type": "structure", - "members": { - "DeploymentId": {}, - "StackId": {}, - "AppId": {}, - "CreatedAt": {}, - "CompletedAt": {}, - "Duration": { - "type": "integer" - }, - "IamUserArn": {}, - "Comment": {}, - "Command": { - "shape": "Ss" - }, - "Status": {}, - "CustomJson": {}, - "InstanceIds": { - "shape": "S3" - } - } - } - } - } - } - }, - "DescribeEcsClusters": { - "input": { - "type": "structure", - "members": { - "EcsClusterArns": { - "shape": "S3" - }, - "StackId": {}, - "NextToken": {}, - "MaxResults": { - "type": "integer" - } - } - }, - "output": { - "type": "structure", - "members": { - "EcsClusters": { - "type": "list", - "member": { - "type": "structure", - "members": { - "EcsClusterArn": {}, - "EcsClusterName": {}, - "StackId": {}, - "RegisteredAt": {} - } - } - }, - "NextToken": {} - } - } - }, - "DescribeElasticIps": { - "input": { - "type": "structure", - "members": { - "InstanceId": {}, - "StackId": {}, - "Ips": { - "shape": "S3" - } - } - }, - "output": { - "type": "structure", - "members": { - "ElasticIps": { - "type": "list", - "member": { - "type": "structure", - "members": { - "Ip": {}, - "Name": {}, - "Domain": {}, - "Region": {}, - "InstanceId": {} - } - } - } - } - } - }, - "DescribeElasticLoadBalancers": { - "input": { - "type": "structure", - "members": { - "StackId": {}, - "LayerIds": { - "shape": "S3" - } - } - }, - "output": { - "type": "structure", - "members": { - "ElasticLoadBalancers": { - "type": "list", - "member": { - "type": "structure", - "members": { - "ElasticLoadBalancerName": {}, - "Region": {}, - "DnsName": {}, - "StackId": {}, - "LayerId": {}, - "VpcId": {}, - "AvailabilityZones": { - "shape": "S3" - }, - "SubnetIds": { - "shape": "S3" - }, - "Ec2InstanceIds": { - "shape": "S3" - } - } - } - } - } - } - }, - "DescribeInstances": { - "input": { - "type": "structure", - "members": { - "StackId": {}, - "LayerId": {}, - "InstanceIds": { - "shape": "S3" - } - } - }, - "output": { - "type": "structure", - "members": { - "Instances": { - "type": "list", - "member": { - "type": "structure", - "members": { - "AgentVersion": {}, - "AmiId": {}, - "Architecture": {}, - "Arn": {}, - "AutoScalingType": {}, - "AvailabilityZone": {}, - "BlockDeviceMappings": { - "shape": "Sz" - }, - "CreatedAt": {}, - "EbsOptimized": { - "type": "boolean" - }, - "Ec2InstanceId": {}, - "EcsClusterArn": {}, - "EcsContainerInstanceArn": {}, - "ElasticIp": {}, - "Hostname": {}, - "InfrastructureClass": {}, - "InstallUpdatesOnBoot": { - "type": "boolean" - }, - "InstanceId": {}, - "InstanceProfileArn": {}, - "InstanceType": {}, - "LastServiceErrorId": {}, - "LayerIds": { - "shape": "S3" - }, - "Os": {}, - "Platform": {}, - "PrivateDns": {}, - "PrivateIp": {}, - "PublicDns": {}, - "PublicIp": {}, - "RegisteredBy": {}, - "ReportedAgentVersion": {}, - "ReportedOs": { - "type": "structure", - "members": { - "Family": {}, - "Name": {}, - "Version": {} - } - }, - "RootDeviceType": {}, - "RootDeviceVolumeId": {}, - "SecurityGroupIds": { - "shape": "S3" - }, - "SshHostDsaKeyFingerprint": {}, - "SshHostRsaKeyFingerprint": {}, - "SshKeyName": {}, - "StackId": {}, - "Status": {}, - "SubnetId": {}, - "Tenancy": {}, - "VirtualizationType": {} - } - } - } - } - } - }, - "DescribeLayers": { - "input": { - "type": "structure", - "members": { - "StackId": {}, - "LayerIds": { - "shape": "S3" - } - } - }, - "output": { - "type": "structure", - "members": { - "Layers": { - "type": "list", - "member": { - "type": "structure", - "members": { - "Arn": {}, - "StackId": {}, - "LayerId": {}, - "Type": {}, - "Name": {}, - "Shortname": {}, - "Attributes": { - "shape": "S17" - }, - "CloudWatchLogsConfiguration": { - "shape": "S19" - }, - "CustomInstanceProfileArn": {}, - "CustomJson": {}, - "CustomSecurityGroupIds": { - "shape": "S3" - }, - "DefaultSecurityGroupNames": { - "shape": "S3" - }, - "Packages": { - "shape": "S3" - }, - "VolumeConfigurations": { - "shape": "S1f" - }, - "EnableAutoHealing": { - "type": "boolean" - }, - "AutoAssignElasticIps": { - "type": "boolean" - }, - "AutoAssignPublicIps": { - "type": "boolean" - }, - "DefaultRecipes": { - "shape": "S1h" - }, - "CustomRecipes": { - "shape": "S1h" - }, - "CreatedAt": {}, - "InstallUpdatesOnBoot": { - "type": "boolean" - }, - "UseEbsOptimizedInstances": { - "type": "boolean" - }, - "LifecycleEventConfiguration": { - "shape": "S1i" - } - } - } - } - } - } - }, - "DescribeLoadBasedAutoScaling": { - "input": { - "type": "structure", - "required": [ - "LayerIds" - ], - "members": { - "LayerIds": { - "shape": "S3" - } - } - }, - "output": { - "type": "structure", - "members": { - "LoadBasedAutoScalingConfigurations": { - "type": "list", - "member": { - "type": "structure", - "members": { - "LayerId": {}, - "Enable": { - "type": "boolean" - }, - "UpScaling": { - "shape": "S36" - }, - "DownScaling": { - "shape": "S36" - } - } - } - } - } - } - }, - "DescribeMyUserProfile": { - "output": { - "type": "structure", - "members": { - "UserProfile": { - "type": "structure", - "members": { - "IamUserArn": {}, - "Name": {}, - "SshUsername": {}, - "SshPublicKey": {} - } - } - } - } - }, - "DescribePermissions": { - "input": { - "type": "structure", - "members": { - "IamUserArn": {}, - "StackId": {} - } - }, - "output": { - "type": "structure", - "members": { - "Permissions": { - "type": "list", - "member": { - "type": "structure", - "members": { - "StackId": {}, - "IamUserArn": {}, - "AllowSsh": { - "type": "boolean" - }, - "AllowSudo": { - "type": "boolean" - }, - "Level": {} - } - } - } - } - } - }, - "DescribeRaidArrays": { - "input": { - "type": "structure", - "members": { - "InstanceId": {}, - "StackId": {}, - "RaidArrayIds": { - "shape": "S3" - } - } - }, - "output": { - "type": "structure", - "members": { - "RaidArrays": { - "type": "list", - "member": { - "type": "structure", - "members": { - "RaidArrayId": {}, - "InstanceId": {}, - "Name": {}, - "RaidLevel": { - "type": "integer" - }, - "NumberOfDisks": { - "type": "integer" - }, - "Size": { - "type": "integer" - }, - "Device": {}, - "MountPoint": {}, - "AvailabilityZone": {}, - "CreatedAt": {}, - "StackId": {}, - "VolumeType": {}, - "Iops": { - "type": "integer" - } - } - } - } - } - } - }, - "DescribeRdsDbInstances": { - "input": { - "type": "structure", - "required": [ - "StackId" - ], - "members": { - "StackId": {}, - "RdsDbInstanceArns": { - "shape": "S3" - } - } - }, - "output": { - "type": "structure", - "members": { - "RdsDbInstances": { - "type": "list", - "member": { - "type": "structure", - "members": { - "RdsDbInstanceArn": {}, - "DbInstanceIdentifier": {}, - "DbUser": {}, - "DbPassword": {}, - "Region": {}, - "Address": {}, - "Engine": {}, - "StackId": {}, - "MissingOnRds": { - "type": "boolean" - } - } - } - } - } - } - }, - "DescribeServiceErrors": { - "input": { - "type": "structure", - "members": { - "StackId": {}, - "InstanceId": {}, - "ServiceErrorIds": { - "shape": "S3" - } - } - }, - "output": { - "type": "structure", - "members": { - "ServiceErrors": { - "type": "list", - "member": { - "type": "structure", - "members": { - "ServiceErrorId": {}, - "StackId": {}, - "InstanceId": {}, - "Type": {}, - "Message": {}, - "CreatedAt": {} - } - } - } - } - } - }, - "DescribeStackProvisioningParameters": { - "input": { - "type": "structure", - "required": [ - "StackId" - ], - "members": { - "StackId": {} - } - }, - "output": { - "type": "structure", - "members": { - "AgentInstallerUrl": {}, - "Parameters": { - "type": "map", - "key": {}, - "value": {} - } - } - } - }, - "DescribeStackSummary": { - "input": { - "type": "structure", - "required": [ - "StackId" - ], - "members": { - "StackId": {} - } - }, - "output": { - "type": "structure", - "members": { - "StackSummary": { - "type": "structure", - "members": { - "StackId": {}, - "Name": {}, - "Arn": {}, - "LayersCount": { - "type": "integer" - }, - "AppsCount": { - "type": "integer" - }, - "InstancesCount": { - "type": "structure", - "members": { - "Assigning": { - "type": "integer" - }, - "Booting": { - "type": "integer" - }, - "ConnectionLost": { - "type": "integer" - }, - "Deregistering": { - "type": "integer" - }, - "Online": { - "type": "integer" - }, - "Pending": { - "type": "integer" - }, - "Rebooting": { - "type": "integer" - }, - "Registered": { - "type": "integer" - }, - "Registering": { - "type": "integer" - }, - "Requested": { - "type": "integer" - }, - "RunningSetup": { - "type": "integer" - }, - "SetupFailed": { - "type": "integer" - }, - "ShuttingDown": { - "type": "integer" - }, - "StartFailed": { - "type": "integer" - }, - "Stopped": { - "type": "integer" - }, - "Stopping": { - "type": "integer" - }, - "Terminated": { - "type": "integer" - }, - "Terminating": { - "type": "integer" - }, - "Unassigning": { - "type": "integer" - } - } - } - } - } - } - } - }, - "DescribeStacks": { - "input": { - "type": "structure", - "members": { - "StackIds": { - "shape": "S3" - } - } - }, - "output": { - "type": "structure", - "members": { - "Stacks": { - "type": "list", - "member": { - "type": "structure", - "members": { - "StackId": {}, - "Name": {}, - "Arn": {}, - "Region": {}, - "VpcId": {}, - "Attributes": { - "shape": "S8" - }, - "ServiceRoleArn": {}, - "DefaultInstanceProfileArn": {}, - "DefaultOs": {}, - "HostnameTheme": {}, - "DefaultAvailabilityZone": {}, - "DefaultSubnetId": {}, - "CustomJson": {}, - "ConfigurationManager": { - "shape": "Sa" - }, - "ChefConfiguration": { - "shape": "Sb" - }, - "UseCustomCookbooks": { - "type": "boolean" - }, - "UseOpsworksSecurityGroups": { - "type": "boolean" - }, - "CustomCookbooksSource": { - "shape": "Sd" - }, - "DefaultSshKeyName": {}, - "CreatedAt": {}, - "DefaultRootDeviceType": {}, - "AgentVersion": {} - } - } - } - } - } - }, - "DescribeTimeBasedAutoScaling": { - "input": { - "type": "structure", - "required": [ - "InstanceIds" - ], - "members": { - "InstanceIds": { - "shape": "S3" - } - } - }, - "output": { - "type": "structure", - "members": { - "TimeBasedAutoScalingConfigurations": { - "type": "list", - "member": { - "type": "structure", - "members": { - "InstanceId": {}, - "AutoScalingSchedule": { - "shape": "S46" - } - } - } - } - } - } - }, - "DescribeUserProfiles": { - "input": { - "type": "structure", - "members": { - "IamUserArns": { - "shape": "S3" - } - } - }, - "output": { - "type": "structure", - "members": { - "UserProfiles": { - "type": "list", - "member": { - "type": "structure", - "members": { - "IamUserArn": {}, - "Name": {}, - "SshUsername": {}, - "SshPublicKey": {}, - "AllowSelfManagement": { - "type": "boolean" - } - } - } - } - } - } - }, - "DescribeVolumes": { - "input": { - "type": "structure", - "members": { - "InstanceId": {}, - "StackId": {}, - "RaidArrayId": {}, - "VolumeIds": { - "shape": "S3" - } - } - }, - "output": { - "type": "structure", - "members": { - "Volumes": { - "type": "list", - "member": { - "type": "structure", - "members": { - "VolumeId": {}, - "Ec2VolumeId": {}, - "Name": {}, - "RaidArrayId": {}, - "InstanceId": {}, - "Status": {}, - "Size": { - "type": "integer" - }, - "Device": {}, - "MountPoint": {}, - "Region": {}, - "AvailabilityZone": {}, - "VolumeType": {}, - "Iops": { - "type": "integer" - } - } - } - } - } - } - }, - "DetachElasticLoadBalancer": { - "input": { - "type": "structure", - "required": [ - "ElasticLoadBalancerName", - "LayerId" - ], - "members": { - "ElasticLoadBalancerName": {}, - "LayerId": {} - } - } - }, - "DisassociateElasticIp": { - "input": { - "type": "structure", - "required": [ - "ElasticIp" - ], - "members": { - "ElasticIp": {} - } - } - }, - "GetHostnameSuggestion": { - "input": { - "type": "structure", - "required": [ - "LayerId" - ], - "members": { - "LayerId": {} - } - }, - "output": { - "type": "structure", - "members": { - "LayerId": {}, - "Hostname": {} - } - } - }, - "GrantAccess": { - "input": { - "type": "structure", - "required": [ - "InstanceId" - ], - "members": { - "InstanceId": {}, - "ValidForInMinutes": { - "type": "integer" - } - } - }, - "output": { - "type": "structure", - "members": { - "TemporaryCredential": { - "type": "structure", - "members": { - "Username": {}, - "Password": {}, - "ValidForInMinutes": { - "type": "integer" - }, - "InstanceId": {} - } - } - } - } - }, - "ListTags": { - "input": { - "type": "structure", - "required": [ - "ResourceArn" - ], - "members": { - "ResourceArn": {}, - "MaxResults": { - "type": "integer" - }, - "NextToken": {} - } - }, - "output": { - "type": "structure", - "members": { - "Tags": { - "shape": "S4v" - }, - "NextToken": {} - } - } - }, - "RebootInstance": { - "input": { - "type": "structure", - "required": [ - "InstanceId" - ], - "members": { - "InstanceId": {} - } - } - }, - "RegisterEcsCluster": { - "input": { - "type": "structure", - "required": [ - "EcsClusterArn", - "StackId" - ], - "members": { - "EcsClusterArn": {}, - "StackId": {} - } - }, - "output": { - "type": "structure", - "members": { - "EcsClusterArn": {} - } - } - }, - "RegisterElasticIp": { - "input": { - "type": "structure", - "required": [ - "ElasticIp", - "StackId" - ], - "members": { - "ElasticIp": {}, - "StackId": {} - } - }, - "output": { - "type": "structure", - "members": { - "ElasticIp": {} - } - } - }, - "RegisterInstance": { - "input": { - "type": "structure", - "required": [ - "StackId" - ], - "members": { - "StackId": {}, - "Hostname": {}, - "PublicIp": {}, - "PrivateIp": {}, - "RsaPublicKey": {}, - "RsaPublicKeyFingerprint": {}, - "InstanceIdentity": { - "type": "structure", - "members": { - "Document": {}, - "Signature": {} - } - } - } - }, - "output": { - "type": "structure", - "members": { - "InstanceId": {} - } - } - }, - "RegisterRdsDbInstance": { - "input": { - "type": "structure", - "required": [ - "StackId", - "RdsDbInstanceArn", - "DbUser", - "DbPassword" - ], - "members": { - "StackId": {}, - "RdsDbInstanceArn": {}, - "DbUser": {}, - "DbPassword": {} - } - } - }, - "RegisterVolume": { - "input": { - "type": "structure", - "required": [ - "StackId" - ], - "members": { - "Ec2VolumeId": {}, - "StackId": {} - } - }, - "output": { - "type": "structure", - "members": { - "VolumeId": {} - } - } - }, - "SetLoadBasedAutoScaling": { - "input": { - "type": "structure", - "required": [ - "LayerId" - ], - "members": { - "LayerId": {}, - "Enable": { - "type": "boolean" - }, - "UpScaling": { - "shape": "S36" - }, - "DownScaling": { - "shape": "S36" - } - } - } - }, - "SetPermission": { - "input": { - "type": "structure", - "required": [ - "StackId", - "IamUserArn" - ], - "members": { - "StackId": {}, - "IamUserArn": {}, - "AllowSsh": { - "type": "boolean" - }, - "AllowSudo": { - "type": "boolean" - }, - "Level": {} - } - } - }, - "SetTimeBasedAutoScaling": { - "input": { - "type": "structure", - "required": [ - "InstanceId" - ], - "members": { - "InstanceId": {}, - "AutoScalingSchedule": { - "shape": "S46" - } - } - } - }, - "StartInstance": { - "input": { - "type": "structure", - "required": [ - "InstanceId" - ], - "members": { - "InstanceId": {} - } - } - }, - "StartStack": { - "input": { - "type": "structure", - "required": [ - "StackId" - ], - "members": { - "StackId": {} - } - } - }, - "StopInstance": { - "input": { - "type": "structure", - "required": [ - "InstanceId" - ], - "members": { - "InstanceId": {} - } - } - }, - "StopStack": { - "input": { - "type": "structure", - "required": [ - "StackId" - ], - "members": { - "StackId": {} - } - } - }, - "TagResource": { - "input": { - "type": "structure", - "required": [ - "ResourceArn", - "Tags" - ], - "members": { - "ResourceArn": {}, - "Tags": { - "shape": "S4v" - } - } - } - }, - "UnassignInstance": { - "input": { - "type": "structure", - "required": [ - "InstanceId" - ], - "members": { - "InstanceId": {} - } - } - }, - "UnassignVolume": { - "input": { - "type": "structure", - "required": [ - "VolumeId" - ], - "members": { - "VolumeId": {} - } - } - }, - "UntagResource": { - "input": { - "type": "structure", - "required": [ - "ResourceArn", - "TagKeys" - ], - "members": { - "ResourceArn": {}, - "TagKeys": { - "type": "list", - "member": {} - } - } - } - }, - "UpdateApp": { - "input": { - "type": "structure", - "required": [ - "AppId" - ], - "members": { - "AppId": {}, - "Name": {}, - "Description": {}, - "DataSources": { - "shape": "Si" - }, - "Type": {}, - "AppSource": { - "shape": "Sd" - }, - "Domains": { - "shape": "S3" - }, - "EnableSsl": { - "type": "boolean" - }, - "SslConfiguration": { - "shape": "Sl" - }, - "Attributes": { - "shape": "Sm" - }, - "Environment": { - "shape": "So" - } - } - } - }, - "UpdateElasticIp": { - "input": { - "type": "structure", - "required": [ - "ElasticIp" - ], - "members": { - "ElasticIp": {}, - "Name": {} - } - } - }, - "UpdateInstance": { - "input": { - "type": "structure", - "required": [ - "InstanceId" - ], - "members": { - "InstanceId": {}, - "LayerIds": { - "shape": "S3" - }, - "InstanceType": {}, - "AutoScalingType": {}, - "Hostname": {}, - "Os": {}, - "AmiId": {}, - "SshKeyName": {}, - "Architecture": {}, - "InstallUpdatesOnBoot": { - "type": "boolean" - }, - "EbsOptimized": { - "type": "boolean" - }, - "AgentVersion": {} - } - } - }, - "UpdateLayer": { - "input": { - "type": "structure", - "required": [ - "LayerId" - ], - "members": { - "LayerId": {}, - "Name": {}, - "Shortname": {}, - "Attributes": { - "shape": "S17" - }, - "CloudWatchLogsConfiguration": { - "shape": "S19" - }, - "CustomInstanceProfileArn": {}, - "CustomJson": {}, - "CustomSecurityGroupIds": { - "shape": "S3" - }, - "Packages": { - "shape": "S3" - }, - "VolumeConfigurations": { - "shape": "S1f" - }, - "EnableAutoHealing": { - "type": "boolean" - }, - "AutoAssignElasticIps": { - "type": "boolean" - }, - "AutoAssignPublicIps": { - "type": "boolean" - }, - "CustomRecipes": { - "shape": "S1h" - }, - "InstallUpdatesOnBoot": { - "type": "boolean" - }, - "UseEbsOptimizedInstances": { - "type": "boolean" - }, - "LifecycleEventConfiguration": { - "shape": "S1i" - } - } - } - }, - "UpdateMyUserProfile": { - "input": { - "type": "structure", - "members": { - "SshPublicKey": {} - } - } - }, - "UpdateRdsDbInstance": { - "input": { - "type": "structure", - "required": [ - "RdsDbInstanceArn" - ], - "members": { - "RdsDbInstanceArn": {}, - "DbUser": {}, - "DbPassword": {} - } - } - }, - "UpdateStack": { - "input": { - "type": "structure", - "required": [ - "StackId" - ], - "members": { - "StackId": {}, - "Name": {}, - "Attributes": { - "shape": "S8" - }, - "ServiceRoleArn": {}, - "DefaultInstanceProfileArn": {}, - "DefaultOs": {}, - "HostnameTheme": {}, - "DefaultAvailabilityZone": {}, - "DefaultSubnetId": {}, - "CustomJson": {}, - "ConfigurationManager": { - "shape": "Sa" - }, - "ChefConfiguration": { - "shape": "Sb" - }, - "UseCustomCookbooks": { - "type": "boolean" - }, - "CustomCookbooksSource": { - "shape": "Sd" - }, - "DefaultSshKeyName": {}, - "DefaultRootDeviceType": {}, - "UseOpsworksSecurityGroups": { - "type": "boolean" - }, - "AgentVersion": {} - } - } - }, - "UpdateUserProfile": { - "input": { - "type": "structure", - "required": [ - "IamUserArn" - ], - "members": { - "IamUserArn": {}, - "SshUsername": {}, - "SshPublicKey": {}, - "AllowSelfManagement": { - "type": "boolean" - } - } - } - }, - "UpdateVolume": { - "input": { - "type": "structure", - "required": [ - "VolumeId" - ], - "members": { - "VolumeId": {}, - "Name": {}, - "MountPoint": {} - } - } - } - }, - "shapes": { - "S3": { - "type": "list", - "member": {} - }, - "S8": { - "type": "map", - "key": {}, - "value": {} - }, - "Sa": { - "type": "structure", - "members": { - "Name": {}, - "Version": {} - } - }, - "Sb": { - "type": "structure", - "members": { - "ManageBerkshelf": { - "type": "boolean" - }, - "BerkshelfVersion": {} - } - }, - "Sd": { - "type": "structure", - "members": { - "Type": {}, - "Url": {}, - "Username": {}, - "Password": {}, - "SshKey": {}, - "Revision": {} - } - }, - "Si": { - "type": "list", - "member": { - "type": "structure", - "members": { - "Type": {}, - "Arn": {}, - "DatabaseName": {} - } - } - }, - "Sl": { - "type": "structure", - "required": [ - "Certificate", - "PrivateKey" - ], - "members": { - "Certificate": {}, - "PrivateKey": {}, - "Chain": {} - } - }, - "Sm": { - "type": "map", - "key": {}, - "value": {} - }, - "So": { - "type": "list", - "member": { - "type": "structure", - "required": [ - "Key", - "Value" - ], - "members": { - "Key": {}, - "Value": {}, - "Secure": { - "type": "boolean" - } - } - } - }, - "Ss": { - "type": "structure", - "required": [ - "Name" - ], - "members": { - "Name": {}, - "Args": { - "type": "map", - "key": {}, - "value": { - "shape": "S3" - } - } - } - }, - "Sz": { - "type": "list", - "member": { - "type": "structure", - "members": { - "DeviceName": {}, - "NoDevice": {}, - "VirtualName": {}, - "Ebs": { - "type": "structure", - "members": { - "SnapshotId": {}, - "Iops": { - "type": "integer" - }, - "VolumeSize": { - "type": "integer" - }, - "VolumeType": {}, - "DeleteOnTermination": { - "type": "boolean" - } - } - } - } - } - }, - "S17": { - "type": "map", - "key": {}, - "value": {} - }, - "S19": { - "type": "structure", - "members": { - "Enabled": { - "type": "boolean" - }, - "LogStreams": { - "type": "list", - "member": { - "type": "structure", - "members": { - "LogGroupName": {}, - "DatetimeFormat": {}, - "TimeZone": {}, - "File": {}, - "FileFingerprintLines": {}, - "MultiLineStartPattern": {}, - "InitialPosition": {}, - "Encoding": {}, - "BufferDuration": { - "type": "integer" - }, - "BatchCount": { - "type": "integer" - }, - "BatchSize": { - "type": "integer" - } - } - } - } - } - }, - "S1f": { - "type": "list", - "member": { - "type": "structure", - "required": [ - "MountPoint", - "NumberOfDisks", - "Size" - ], - "members": { - "MountPoint": {}, - "RaidLevel": { - "type": "integer" - }, - "NumberOfDisks": { - "type": "integer" - }, - "Size": { - "type": "integer" - }, - "VolumeType": {}, - "Iops": { - "type": "integer" - } - } - } - }, - "S1h": { - "type": "structure", - "members": { - "Setup": { - "shape": "S3" - }, - "Configure": { - "shape": "S3" - }, - "Deploy": { - "shape": "S3" - }, - "Undeploy": { - "shape": "S3" - }, - "Shutdown": { - "shape": "S3" - } - } - }, - "S1i": { - "type": "structure", - "members": { - "Shutdown": { - "type": "structure", - "members": { - "ExecutionTimeout": { - "type": "integer" - }, - "DelayUntilElbConnectionsDrained": { - "type": "boolean" - } - } - } - } - }, - "S36": { - "type": "structure", - "members": { - "InstanceCount": { - "type": "integer" - }, - "ThresholdsWaitTime": { - "type": "integer" - }, - "IgnoreMetricsTime": { - "type": "integer" - }, - "CpuThreshold": { - "type": "double" - }, - "MemoryThreshold": { - "type": "double" - }, - "LoadThreshold": { - "type": "double" - }, - "Alarms": { - "shape": "S3" - } - } - }, - "S46": { - "type": "structure", - "members": { - "Monday": { - "shape": "S47" - }, - "Tuesday": { - "shape": "S47" - }, - "Wednesday": { - "shape": "S47" - }, - "Thursday": { - "shape": "S47" - }, - "Friday": { - "shape": "S47" - }, - "Saturday": { - "shape": "S47" - }, - "Sunday": { - "shape": "S47" - } - } - }, - "S47": { - "type": "map", - "key": {}, - "value": {} - }, - "S4v": { - "type": "map", - "key": {}, - "value": {} - } - } -} \ No newline at end of file diff --git a/workshops/monte-carlo-on-ec2-spot-fleet/src/web/node_modules/aws-sdk/apis/opsworks-2013-02-18.paginators.json b/workshops/monte-carlo-on-ec2-spot-fleet/src/web/node_modules/aws-sdk/apis/opsworks-2013-02-18.paginators.json deleted file mode 100644 index 775589a5..00000000 --- a/workshops/monte-carlo-on-ec2-spot-fleet/src/web/node_modules/aws-sdk/apis/opsworks-2013-02-18.paginators.json +++ /dev/null @@ -1,55 +0,0 @@ -{ - "pagination": { - "DescribeApps": { - "result_key": "Apps" - }, - "DescribeCommands": { - "result_key": "Commands" - }, - "DescribeDeployments": { - "result_key": "Deployments" - }, - "DescribeEcsClusters": { - "input_token": "NextToken", - "limit_key": "MaxResults", - "output_token": "NextToken", - "result_key": "EcsClusters" - }, - "DescribeElasticIps": { - "result_key": "ElasticIps" - }, - "DescribeElasticLoadBalancers": { - "result_key": "ElasticLoadBalancers" - }, - "DescribeInstances": { - "result_key": "Instances" - }, - "DescribeLayers": { - "result_key": "Layers" - }, - "DescribeLoadBasedAutoScaling": { - "result_key": "LoadBasedAutoScalingConfigurations" - }, - "DescribePermissions": { - "result_key": "Permissions" - }, - "DescribeRaidArrays": { - "result_key": "RaidArrays" - }, - "DescribeServiceErrors": { - "result_key": "ServiceErrors" - }, - "DescribeStacks": { - "result_key": "Stacks" - }, - "DescribeTimeBasedAutoScaling": { - "result_key": "TimeBasedAutoScalingConfigurations" - }, - "DescribeUserProfiles": { - "result_key": "UserProfiles" - }, - "DescribeVolumes": { - "result_key": "Volumes" - } - } -} \ No newline at end of file diff --git a/workshops/monte-carlo-on-ec2-spot-fleet/src/web/node_modules/aws-sdk/apis/opsworks-2013-02-18.waiters2.json b/workshops/monte-carlo-on-ec2-spot-fleet/src/web/node_modules/aws-sdk/apis/opsworks-2013-02-18.waiters2.json deleted file mode 100644 index 8daa084f..00000000 --- a/workshops/monte-carlo-on-ec2-spot-fleet/src/web/node_modules/aws-sdk/apis/opsworks-2013-02-18.waiters2.json +++ /dev/null @@ -1,295 +0,0 @@ -{ - "version": 2, - "waiters": { - "AppExists": { - "delay": 1, - "operation": "DescribeApps", - "maxAttempts": 40, - "acceptors": [ - { - "expected": 200, - "matcher": "status", - "state": "success" - }, - { - "matcher": "status", - "expected": 400, - "state": "failure" - } - ] - }, - "DeploymentSuccessful": { - "delay": 15, - "operation": "DescribeDeployments", - "maxAttempts": 40, - "description": "Wait until a deployment has completed successfully", - "acceptors": [ - { - "expected": "successful", - "matcher": "pathAll", - "state": "success", - "argument": "Deployments[].Status" - }, - { - "expected": "failed", - "matcher": "pathAny", - "state": "failure", - "argument": "Deployments[].Status" - } - ] - }, - "InstanceOnline": { - "delay": 15, - "operation": "DescribeInstances", - "maxAttempts": 40, - "description": "Wait until OpsWorks instance is online.", - "acceptors": [ - { - "expected": "online", - "matcher": "pathAll", - "state": "success", - "argument": "Instances[].Status" - }, - { - "expected": "setup_failed", - "matcher": "pathAny", - "state": "failure", - "argument": "Instances[].Status" - }, - { - "expected": "shutting_down", - "matcher": "pathAny", - "state": "failure", - "argument": "Instances[].Status" - }, - { - "expected": "start_failed", - "matcher": "pathAny", - "state": "failure", - "argument": "Instances[].Status" - }, - { - "expected": "stopped", - "matcher": "pathAny", - "state": "failure", - "argument": "Instances[].Status" - }, - { - "expected": "stopping", - "matcher": "pathAny", - "state": "failure", - "argument": "Instances[].Status" - }, - { - "expected": "terminating", - "matcher": "pathAny", - "state": "failure", - "argument": "Instances[].Status" - }, - { - "expected": "terminated", - "matcher": "pathAny", - "state": "failure", - "argument": "Instances[].Status" - }, - { - "expected": "stop_failed", - "matcher": "pathAny", - "state": "failure", - "argument": "Instances[].Status" - } - ] - }, - "InstanceRegistered": { - "delay": 15, - "operation": "DescribeInstances", - "maxAttempts": 40, - "description": "Wait until OpsWorks instance is registered.", - "acceptors": [ - { - "expected": "registered", - "matcher": "pathAll", - "state": "success", - "argument": "Instances[].Status" - }, - { - "expected": "setup_failed", - "matcher": "pathAny", - "state": "failure", - "argument": "Instances[].Status" - }, - { - "expected": "shutting_down", - "matcher": "pathAny", - "state": "failure", - "argument": "Instances[].Status" - }, - { - "expected": "stopped", - "matcher": "pathAny", - "state": "failure", - "argument": "Instances[].Status" - }, - { - "expected": "stopping", - "matcher": "pathAny", - "state": "failure", - "argument": "Instances[].Status" - }, - { - "expected": "terminating", - "matcher": "pathAny", - "state": "failure", - "argument": "Instances[].Status" - }, - { - "expected": "terminated", - "matcher": "pathAny", - "state": "failure", - "argument": "Instances[].Status" - }, - { - "expected": "stop_failed", - "matcher": "pathAny", - "state": "failure", - "argument": "Instances[].Status" - } - ] - }, - "InstanceStopped": { - "delay": 15, - "operation": "DescribeInstances", - "maxAttempts": 40, - "description": "Wait until OpsWorks instance is stopped.", - "acceptors": [ - { - "expected": "stopped", - "matcher": "pathAll", - "state": "success", - "argument": "Instances[].Status" - }, - { - "expected": "booting", - "matcher": "pathAny", - "state": "failure", - "argument": "Instances[].Status" - }, - { - "expected": "online", - "matcher": "pathAny", - "state": "failure", - "argument": "Instances[].Status" - }, - { - "expected": "pending", - "matcher": "pathAny", - "state": "failure", - "argument": "Instances[].Status" - }, - { - "expected": "rebooting", - "matcher": "pathAny", - "state": "failure", - "argument": "Instances[].Status" - }, - { - "expected": "requested", - "matcher": "pathAny", - "state": "failure", - "argument": "Instances[].Status" - }, - { - "expected": "running_setup", - "matcher": "pathAny", - "state": "failure", - "argument": "Instances[].Status" - }, - { - "expected": "setup_failed", - "matcher": "pathAny", - "state": "failure", - "argument": "Instances[].Status" - }, - { - "expected": "start_failed", - "matcher": "pathAny", - "state": "failure", - "argument": "Instances[].Status" - }, - { - "expected": "stop_failed", - "matcher": "pathAny", - "state": "failure", - "argument": "Instances[].Status" - } - ] - }, - "InstanceTerminated": { - "delay": 15, - "operation": "DescribeInstances", - "maxAttempts": 40, - "description": "Wait until OpsWorks instance is terminated.", - "acceptors": [ - { - "expected": "terminated", - "matcher": "pathAll", - "state": "success", - "argument": "Instances[].Status" - }, - { - "expected": "ResourceNotFoundException", - "matcher": "error", - "state": "success" - }, - { - "expected": "booting", - "matcher": "pathAny", - "state": "failure", - "argument": "Instances[].Status" - }, - { - "expected": "online", - "matcher": "pathAny", - "state": "failure", - "argument": "Instances[].Status" - }, - { - "expected": "pending", - "matcher": "pathAny", - "state": "failure", - "argument": "Instances[].Status" - }, - { - "expected": "rebooting", - "matcher": "pathAny", - "state": "failure", - "argument": "Instances[].Status" - }, - { - "expected": "requested", - "matcher": "pathAny", - "state": "failure", - "argument": "Instances[].Status" - }, - { - "expected": "running_setup", - "matcher": "pathAny", - "state": "failure", - "argument": "Instances[].Status" - }, - { - "expected": "setup_failed", - "matcher": "pathAny", - "state": "failure", - "argument": "Instances[].Status" - }, - { - "expected": "start_failed", - "matcher": "pathAny", - "state": "failure", - "argument": "Instances[].Status" - } - ] - } - } -} diff --git a/workshops/monte-carlo-on-ec2-spot-fleet/src/web/node_modules/aws-sdk/apis/opsworkscm-2016-11-01.examples.json b/workshops/monte-carlo-on-ec2-spot-fleet/src/web/node_modules/aws-sdk/apis/opsworkscm-2016-11-01.examples.json deleted file mode 100644 index 0ea7e3b0..00000000 --- a/workshops/monte-carlo-on-ec2-spot-fleet/src/web/node_modules/aws-sdk/apis/opsworkscm-2016-11-01.examples.json +++ /dev/null @@ -1,5 +0,0 @@ -{ - "version": "1.0", - "examples": { - } -} diff --git a/workshops/monte-carlo-on-ec2-spot-fleet/src/web/node_modules/aws-sdk/apis/opsworkscm-2016-11-01.min.json b/workshops/monte-carlo-on-ec2-spot-fleet/src/web/node_modules/aws-sdk/apis/opsworkscm-2016-11-01.min.json deleted file mode 100644 index 02c8db59..00000000 --- a/workshops/monte-carlo-on-ec2-spot-fleet/src/web/node_modules/aws-sdk/apis/opsworkscm-2016-11-01.min.json +++ /dev/null @@ -1,485 +0,0 @@ -{ - "version": "2.0", - "metadata": { - "apiVersion": "2016-11-01", - "endpointPrefix": "opsworks-cm", - "jsonVersion": "1.1", - "protocol": "json", - "serviceAbbreviation": "OpsWorksCM", - "serviceFullName": "AWS OpsWorks for Chef Automate", - "signatureVersion": "v4", - "signingName": "opsworks-cm", - "targetPrefix": "OpsWorksCM_V2016_11_01", - "uid": "opsworkscm-2016-11-01" - }, - "operations": { - "AssociateNode": { - "input": { - "type": "structure", - "required": [ - "ServerName", - "NodeName", - "EngineAttributes" - ], - "members": { - "ServerName": {}, - "NodeName": {}, - "EngineAttributes": { - "shape": "S4" - } - } - }, - "output": { - "type": "structure", - "members": { - "NodeAssociationStatusToken": {} - } - } - }, - "CreateBackup": { - "input": { - "type": "structure", - "required": [ - "ServerName" - ], - "members": { - "ServerName": {}, - "Description": {} - } - }, - "output": { - "type": "structure", - "members": { - "Backup": { - "shape": "Sd" - } - } - } - }, - "CreateServer": { - "input": { - "type": "structure", - "required": [ - "ServerName", - "InstanceProfileArn", - "InstanceType", - "ServiceRoleArn" - ], - "members": { - "AssociatePublicIpAddress": { - "type": "boolean" - }, - "DisableAutomatedBackup": { - "type": "boolean" - }, - "Engine": {}, - "EngineModel": {}, - "EngineVersion": {}, - "EngineAttributes": { - "shape": "S4" - }, - "BackupRetentionCount": { - "type": "integer" - }, - "ServerName": {}, - "InstanceProfileArn": {}, - "InstanceType": {}, - "KeyPair": {}, - "PreferredMaintenanceWindow": {}, - "PreferredBackupWindow": {}, - "SecurityGroupIds": { - "shape": "Sj" - }, - "ServiceRoleArn": {}, - "SubnetIds": { - "shape": "Sj" - }, - "BackupId": {} - } - }, - "output": { - "type": "structure", - "members": { - "Server": { - "shape": "Ss" - } - } - } - }, - "DeleteBackup": { - "input": { - "type": "structure", - "required": [ - "BackupId" - ], - "members": { - "BackupId": {} - } - }, - "output": { - "type": "structure", - "members": {} - } - }, - "DeleteServer": { - "input": { - "type": "structure", - "required": [ - "ServerName" - ], - "members": { - "ServerName": {} - } - }, - "output": { - "type": "structure", - "members": {} - } - }, - "DescribeAccountAttributes": { - "input": { - "type": "structure", - "members": {} - }, - "output": { - "type": "structure", - "members": { - "Attributes": { - "type": "list", - "member": { - "type": "structure", - "members": { - "Name": {}, - "Maximum": { - "type": "integer" - }, - "Used": { - "type": "integer" - } - } - } - } - } - } - }, - "DescribeBackups": { - "input": { - "type": "structure", - "members": { - "BackupId": {}, - "ServerName": {}, - "NextToken": {}, - "MaxResults": { - "type": "integer" - } - } - }, - "output": { - "type": "structure", - "members": { - "Backups": { - "type": "list", - "member": { - "shape": "Sd" - } - }, - "NextToken": {} - } - } - }, - "DescribeEvents": { - "input": { - "type": "structure", - "required": [ - "ServerName" - ], - "members": { - "ServerName": {}, - "NextToken": {}, - "MaxResults": { - "type": "integer" - } - } - }, - "output": { - "type": "structure", - "members": { - "ServerEvents": { - "type": "list", - "member": { - "type": "structure", - "members": { - "CreatedAt": { - "type": "timestamp" - }, - "ServerName": {}, - "Message": {}, - "LogUrl": {} - } - } - }, - "NextToken": {} - } - } - }, - "DescribeNodeAssociationStatus": { - "input": { - "type": "structure", - "required": [ - "NodeAssociationStatusToken", - "ServerName" - ], - "members": { - "NodeAssociationStatusToken": {}, - "ServerName": {} - } - }, - "output": { - "type": "structure", - "members": { - "NodeAssociationStatus": {}, - "EngineAttributes": { - "shape": "S4" - } - } - } - }, - "DescribeServers": { - "input": { - "type": "structure", - "members": { - "ServerName": {}, - "NextToken": {}, - "MaxResults": { - "type": "integer" - } - } - }, - "output": { - "type": "structure", - "members": { - "Servers": { - "type": "list", - "member": { - "shape": "Ss" - } - }, - "NextToken": {} - } - } - }, - "DisassociateNode": { - "input": { - "type": "structure", - "required": [ - "ServerName", - "NodeName" - ], - "members": { - "ServerName": {}, - "NodeName": {}, - "EngineAttributes": { - "shape": "S4" - } - } - }, - "output": { - "type": "structure", - "members": { - "NodeAssociationStatusToken": {} - } - } - }, - "RestoreServer": { - "input": { - "type": "structure", - "required": [ - "BackupId", - "ServerName" - ], - "members": { - "BackupId": {}, - "ServerName": {}, - "InstanceType": {}, - "KeyPair": {} - } - }, - "output": { - "type": "structure", - "members": {} - } - }, - "StartMaintenance": { - "input": { - "type": "structure", - "required": [ - "ServerName" - ], - "members": { - "ServerName": {}, - "EngineAttributes": { - "shape": "S4" - } - } - }, - "output": { - "type": "structure", - "members": { - "Server": { - "shape": "Ss" - } - } - } - }, - "UpdateServer": { - "input": { - "type": "structure", - "required": [ - "ServerName" - ], - "members": { - "DisableAutomatedBackup": { - "type": "boolean" - }, - "BackupRetentionCount": { - "type": "integer" - }, - "ServerName": {}, - "PreferredMaintenanceWindow": {}, - "PreferredBackupWindow": {} - } - }, - "output": { - "type": "structure", - "members": { - "Server": { - "shape": "Ss" - } - } - } - }, - "UpdateServerEngineAttributes": { - "input": { - "type": "structure", - "required": [ - "ServerName", - "AttributeName" - ], - "members": { - "ServerName": {}, - "AttributeName": {}, - "AttributeValue": {} - } - }, - "output": { - "type": "structure", - "members": { - "Server": { - "shape": "Ss" - } - } - } - } - }, - "shapes": { - "S4": { - "type": "list", - "member": { - "type": "structure", - "members": { - "Name": {}, - "Value": { - "type": "string", - "sensitive": true - } - } - } - }, - "Sd": { - "type": "structure", - "members": { - "BackupArn": {}, - "BackupId": {}, - "BackupType": {}, - "CreatedAt": { - "type": "timestamp" - }, - "Description": {}, - "Engine": {}, - "EngineModel": {}, - "EngineVersion": {}, - "InstanceProfileArn": {}, - "InstanceType": {}, - "KeyPair": {}, - "PreferredBackupWindow": {}, - "PreferredMaintenanceWindow": {}, - "S3DataSize": { - "deprecated": true, - "type": "integer" - }, - "S3DataUrl": { - "deprecated": true - }, - "S3LogUrl": {}, - "SecurityGroupIds": { - "shape": "Sj" - }, - "ServerName": {}, - "ServiceRoleArn": {}, - "Status": {}, - "StatusDescription": {}, - "SubnetIds": { - "shape": "Sj" - }, - "ToolsVersion": {}, - "UserArn": {} - } - }, - "Sj": { - "type": "list", - "member": {} - }, - "Ss": { - "type": "structure", - "members": { - "AssociatePublicIpAddress": { - "type": "boolean" - }, - "BackupRetentionCount": { - "type": "integer" - }, - "ServerName": {}, - "CreatedAt": { - "type": "timestamp" - }, - "CloudFormationStackArn": {}, - "DisableAutomatedBackup": { - "type": "boolean" - }, - "Endpoint": {}, - "Engine": {}, - "EngineModel": {}, - "EngineAttributes": { - "shape": "S4" - }, - "EngineVersion": {}, - "InstanceProfileArn": {}, - "InstanceType": {}, - "KeyPair": {}, - "MaintenanceStatus": {}, - "PreferredMaintenanceWindow": {}, - "PreferredBackupWindow": {}, - "SecurityGroupIds": { - "shape": "Sj" - }, - "ServiceRoleArn": {}, - "Status": {}, - "StatusReason": {}, - "SubnetIds": { - "shape": "Sj" - }, - "ServerArn": {} - } - } - } -} \ No newline at end of file diff --git a/workshops/monte-carlo-on-ec2-spot-fleet/src/web/node_modules/aws-sdk/apis/opsworkscm-2016-11-01.paginators.json b/workshops/monte-carlo-on-ec2-spot-fleet/src/web/node_modules/aws-sdk/apis/opsworkscm-2016-11-01.paginators.json deleted file mode 100644 index 5677bd8e..00000000 --- a/workshops/monte-carlo-on-ec2-spot-fleet/src/web/node_modules/aws-sdk/apis/opsworkscm-2016-11-01.paginators.json +++ /dev/null @@ -1,4 +0,0 @@ -{ - "pagination": { - } -} diff --git a/workshops/monte-carlo-on-ec2-spot-fleet/src/web/node_modules/aws-sdk/apis/organizations-2016-11-28.examples.json b/workshops/monte-carlo-on-ec2-spot-fleet/src/web/node_modules/aws-sdk/apis/organizations-2016-11-28.examples.json deleted file mode 100644 index 8e39290e..00000000 --- a/workshops/monte-carlo-on-ec2-spot-fleet/src/web/node_modules/aws-sdk/apis/organizations-2016-11-28.examples.json +++ /dev/null @@ -1,1409 +0,0 @@ -{ - "version": "1.0", - "examples": { - "AcceptHandshake": [ - { - "input": { - "HandshakeId": "h-examplehandshakeid111" - }, - "output": { - "Handshake": { - "Action": "INVITE", - "Arn": "arn:aws:organizations::111111111111:handshake/o-exampleorgid/invite/h-examplehandshakeid111", - "ExpirationTimestamp": "20170228T1215Z", - "Id": "h-examplehandshakeid111", - "Parties": [ - { - "Id": "o-exampleorgid", - "Type": "ORGANIZATION" - }, - { - "Id": "juan@example.com", - "Type": "EMAIL" - } - ], - "RequestedTimestamp": "20170214T1215Z", - "Resources": [ - { - "Resources": [ - { - "Type": "MASTER_EMAIL", - "Value": "bill@amazon.com" - }, - { - "Type": "MASTER_NAME", - "Value": "Org Master Account" - }, - { - "Type": "ORGANIZATION_FEATURE_SET", - "Value": "ALL" - } - ], - "Type": "ORGANIZATION", - "Value": "o-exampleorgid" - }, - { - "Type": "ACCOUNT", - "Value": "222222222222" - } - ], - "State": "ACCEPTED" - } - }, - "comments": { - "input": { - }, - "output": { - } - }, - "description": "Bill is the owner of an organization, and he invites Juan's account (222222222222) to join his organization. The following example shows Juan's account accepting the handshake and thus agreeing to the invitation.", - "id": "to-accept-a-handshake-from-another-account-1472500561150", - "title": "To accept a handshake from another account" - } - ], - "AttachPolicy": [ - { - "input": { - "PolicyId": "p-examplepolicyid111", - "TargetId": "ou-examplerootid111-exampleouid111" - }, - "comments": { - "input": { - }, - "output": { - } - }, - "description": "The following example shows how to attach a service control policy (SCP) to an OU:\n", - "id": "to-attach-a-policy-to-an-ou", - "title": "To attach a policy to an OU" - }, - { - "input": { - "PolicyId": "p-examplepolicyid111", - "TargetId": "333333333333" - }, - "comments": { - "input": { - }, - "output": { - } - }, - "description": "The following example shows how to attach a service control policy (SCP) to an account:\n", - "id": "to-attach-a-policy-to-an-account", - "title": "To attach a policy to an account" - } - ], - "CancelHandshake": [ - { - "input": { - "HandshakeId": "h-examplehandshakeid111" - }, - "output": { - "Handshake": { - "Action": "INVITE", - "Arn": "arn:aws:organizations::111111111111:handshake/o-exampleorgid/invite/h-examplehandshakeid111", - "ExpirationTimestamp": "20170228T1215Z", - "Id": "h-examplehandshakeid111", - "Parties": [ - { - "Id": "o-exampleorgid", - "Type": "ORGANIZATION" - }, - { - "Id": "susan@example.com", - "Type": "EMAIL" - } - ], - "RequestedTimestamp": "20170214T1215Z", - "Resources": [ - { - "Resources": [ - { - "Type": "MASTER_EMAIL", - "Value": "bill@example.com" - }, - { - "Type": "MASTER_NAME", - "Value": "Master Account" - }, - { - "Type": "ORGANIZATION_FEATURE_SET", - "Value": "CONSOLIDATED_BILLING" - } - ], - "Type": "ORGANIZATION", - "Value": "o-exampleorgid" - }, - { - "Type": "ACCOUNT", - "Value": "222222222222" - }, - { - "Type": "NOTES", - "Value": "This is a request for Susan's account to join Bob's organization." - } - ], - "State": "CANCELED" - } - }, - "comments": { - "input": { - }, - "output": { - } - }, - "description": "Bill previously sent an invitation to Susan's account to join his organization. He changes his mind and decides to cancel the invitation before Susan accepts it. The following example shows Bill's cancellation:\n", - "id": "to-cancel-a-handshake-sent-to-a-member-account-1472501320506", - "title": "To cancel a handshake sent to a member account" - } - ], - "CreateAccount": [ - { - "input": { - "AccountName": "Production Account", - "Email": "susan@example.com" - }, - "output": { - "CreateAccountStatus": { - "Id": "car-examplecreateaccountrequestid111", - "State": "IN_PROGRESS" - } - }, - "comments": { - "input": { - }, - "output": { - } - }, - "description": "The owner of an organization creates a member account in the organization. The following example shows that when the organization owner creates the member account, the account is preconfigured with the name \"Production Account\" and an owner email address of susan@example.com. An IAM role is automatically created using the default name because the roleName parameter is not used. AWS Organizations sends Susan a \"Welcome to AWS\" email:\n\n", - "id": "to-create-a-new-account-that-is-automatically-part-of-the-organization-1472501463507", - "title": "To create a new account that is automatically part of the organization" - } - ], - "CreateOrganization": [ - { - "input": { - }, - "output": { - "Organization": { - "Arn": "arn:aws:organizations::111111111111:organization/o-exampleorgid", - "AvailablePolicyTypes": [ - { - "Status": "ENABLED", - "Type": "SERVICE_CONTROL_POLICY" - } - ], - "FeatureSet": "ALL", - "Id": "o-exampleorgid", - "MasterAccountArn": "arn:aws:organizations::111111111111:account/o-exampleorgid/111111111111", - "MasterAccountEmail": "bill@example.com", - "MasterAccountId": "111111111111" - } - }, - "comments": { - "input": { - }, - "output": { - } - }, - "description": "Bill wants to create an organization using credentials from account 111111111111. The following example shows that the account becomes the master account in the new organization. Because he does not specify a feature set, the new organization defaults to all features enabled and service control policies enabled on the root:\n\n", - "id": "to-create-a-new-organization-with-all-features enabled", - "title": "To create a new organization with all features enabled" - }, - { - "input": { - "FeatureSet": "CONSOLIDATED_BILLING" - }, - "output": { - "Organization": { - "Arn": "arn:aws:organizations::111111111111:organization/o-exampleorgid", - "AvailablePolicyTypes": [ - - ], - "FeatureSet": "CONSOLIDATED_BILLING", - "Id": "o-exampleorgid", - "MasterAccountArn": "arn:aws:organizations::111111111111:account/o-exampleorgid/111111111111", - "MasterAccountEmail": "bill@example.com", - "MasterAccountId": "111111111111" - } - }, - "comments": { - "input": { - }, - "output": { - } - }, - "description": "In the following example, Bill creates an organization using credentials from account 111111111111, and configures the organization to support only the consolidated billing feature set:\n\n", - "id": "to-create-a-new-organization-with-consolidated-billing-features-only", - "title": "To create a new organization with consolidated billing features only" - } - ], - "CreateOrganizationalUnit": [ - { - "input": { - "Name": "AccountingOU", - "ParentId": "r-examplerootid111" - }, - "output": { - "OrganizationalUnit": { - "Arn": "arn:aws:organizations::111111111111:ou/o-exampleorgid/ou-examplerootid111-exampleouid111", - "Id": "ou-examplerootid111-exampleouid111", - "Name": "AccountingOU" - } - }, - "comments": { - "input": { - }, - "output": { - } - }, - "description": "The following example shows how to create an OU that is named AccountingOU. The new OU is directly under the root.:\n\n", - "id": "to-create-a-new-organizational-unit", - "title": "To create a new organization unit" - } - ], - "CreatePolicy": [ - { - "input": { - "Content": "{\\\"Version\\\":\\\"2012-10-17\\\",\\\"Statement\\\":{\\\"Effect\\\":\\\"Allow\\\",\\\"Action\\\":\\\"s3:*\\\"}}", - "Description": "Enables admins of attached accounts to delegate all S3 permissions", - "Name": "AllowAllS3Actions", - "Type": "SERVICE_CONTROL_POLICY" - }, - "output": { - "Policy": { - "Content": "{\"Version\":\"2012-10-17\",\"Statement\":{\"Effect\":\"Allow\",\"Action\":\"s3:*\"}}", - "PolicySummary": { - "Arn": "arn:aws:organizations::111111111111:policy/o-exampleorgid/service_control_policy/p-examplepolicyid111", - "Description": "Allows delegation of all S3 actions", - "Name": "AllowAllS3Actions", - "Type": "SERVICE_CONTROL_POLICY" - } - } - }, - "comments": { - "input": { - }, - "output": { - } - }, - "description": "The following example shows how to create a service control policy (SCP) that is named AllowAllS3Actions. The JSON string in the content parameter specifies the content in the policy. The parameter string is escaped with backslashes to ensure that the embedded double quotes in the JSON policy are treated as literals in the parameter, which itself is surrounded by double quotes:\n\n", - "id": "to-create-a-service-control-policy", - "title": "To create a service control policy" - } - ], - "DeclineHandshake": [ - { - "input": { - "HandshakeId": "h-examplehandshakeid111" - }, - "output": { - "Handshake": { - "Action": "INVITE", - "Arn": "arn:aws:organizations::111111111111:handshake/o-exampleorgid/invite/h-examplehandshakeid111", - "ExpirationTimestamp": "2016-12-15T19:27:58Z", - "Id": "h-examplehandshakeid111", - "Parties": [ - { - "Id": "222222222222", - "Type": "ACCOUNT" - }, - { - "Id": "o-exampleorgid", - "Type": "ORGANIZATION" - } - ], - "RequestedTimestamp": "2016-11-30T19:27:58Z", - "Resources": [ - { - "Resources": [ - { - "Type": "MASTER_EMAIL", - "Value": "bill@example.com" - }, - { - "Type": "MASTER_NAME", - "Value": "Master Account" - } - ], - "Type": "ORGANIZATION", - "Value": "o-exampleorgid" - }, - { - "Type": "ACCOUNT", - "Value": "222222222222" - }, - { - "Type": "NOTES", - "Value": "This is an invitation to Susan's account to join the Bill's organization." - } - ], - "State": "DECLINED" - } - }, - "comments": { - "input": { - }, - "output": { - } - }, - "description": "The following example shows Susan declining an invitation to join Bill's organization. The DeclineHandshake operation returns a handshake object, showing that the state is now DECLINED:", - "id": "to-decline-a-handshake-sent-from-the-master-account-1472502666967", - "title": "To decline a handshake sent from the master account" - } - ], - "DeleteOrganizationalUnit": [ - { - "input": { - "OrganizationalUnitId": "ou-examplerootid111-exampleouid111" - }, - "comments": { - "input": { - }, - "output": { - } - }, - "description": "The following example shows how to delete an OU. The example assumes that you previously removed all accounts and other OUs from the OU:\n\n", - "id": "to-delete-an-organizational-unit", - "title": "To delete an organization unit" - } - ], - "DeletePolicy": [ - { - "input": { - "PolicyId": "p-examplepolicyid111" - }, - "comments": { - "input": { - }, - "output": { - } - }, - "description": "The following example shows how to delete a policy from an organization. The example assumes that you previously detached the policy from all entities:\n\n", - "id": "to-delete-a-policy", - "title": "To delete a policy" - } - ], - "DescribeAccount": [ - { - "input": { - "AccountId": "555555555555" - }, - "output": { - "Account": { - "Arn": "arn:aws:organizations::111111111111:account/o-exampleorgid/555555555555", - "Email": "anika@example.com", - "Id": "555555555555", - "Name": "Beta Account" - } - }, - "comments": { - "input": { - }, - "output": { - } - }, - "description": "The following example shows a user in the master account (111111111111) asking for details about account 555555555555:", - "id": "to-get-the-details-about-an-account-1472503166868", - "title": "To get the details about an account" - } - ], - "DescribeCreateAccountStatus": [ - { - "input": { - "CreateAccountRequestId": "car-exampleaccountcreationrequestid" - }, - "output": { - "CreateAccountStatus": { - "AccountId": "333333333333", - "Id": "car-exampleaccountcreationrequestid", - "State": "SUCCEEDED" - } - }, - "comments": { - "input": { - }, - "output": { - } - }, - "description": "The following example shows how to request the status about a previous request to create an account in an organization. This operation can be called only by a principal from the organization's master account. In the example, the specified \"createAccountRequestId\" comes from the response of the original call to \"CreateAccount\":", - "id": "to-get-information-about-a-request-to-create-an-account-1472503727223", - "title": "To get information about a request to create an account" - } - ], - "DescribeHandshake": [ - { - "input": { - "HandshakeId": "h-examplehandshakeid111" - }, - "output": { - "Handshake": { - "Action": "INVITE", - "Arn": "arn:aws:organizations::111111111111:handshake/o-exampleorgid/invite/h-examplehandshakeid111", - "ExpirationTimestamp": "2016-11-30T17:24:58.046Z", - "Id": "h-examplehandshakeid111", - "Parties": [ - { - "Id": "o-exampleorgid", - "Type": "ORGANIZATION" - }, - { - "Id": "333333333333", - "Type": "ACCOUNT" - } - ], - "RequestedTimestamp": "2016-11-30T17:24:58.046Z", - "Resources": [ - { - "Resources": [ - { - "Type": "MASTER_EMAIL", - "Value": "bill@example.com" - }, - { - "Type": "MASTER_NAME", - "Value": "Master Account" - } - ], - "Type": "ORGANIZATION", - "Value": "o-exampleorgid" - }, - { - "Type": "ACCOUNT", - "Value": "333333333333" - } - ], - "State": "OPEN" - } - }, - "comments": { - "input": { - }, - "output": { - } - }, - "description": "The following example shows you how to request details about a handshake. The handshake ID comes either from the original call to \"InviteAccountToOrganization\", or from a call to \"ListHandshakesForAccount\" or \"ListHandshakesForOrganization\":", - "id": "to-get-information-about-a-handshake-1472503400505", - "title": "To get information about a handshake" - } - ], - "DescribeOrganization": [ - { - "output": { - "Organization": { - "Arn": "arn:aws:organizations::111111111111:organization/o-exampleorgid", - "AvailablePolicyTypes": [ - { - "Status": "ENABLED", - "Type": "SERVICE_CONTROL_POLICY" - } - ], - "FeatureSet": "ALL", - "Id": "o-exampleorgid", - "MasterAccountArn": "arn:aws:organizations::111111111111:account/o-exampleorgid/111111111111", - "MasterAccountEmail": "bill@example.com" - } - }, - "comments": { - "input": { - }, - "output": { - } - }, - "description": "The following example shows how to request information about the current user's organization:/n/n", - "id": "to-get-information-about-an-organization-1472503400505", - "title": "To get information about an organization" - } - ], - "DescribeOrganizationalUnit": [ - { - "input": { - "OrganizationalUnitId": "ou-examplerootid111-exampleouid111" - }, - "output": { - "OrganizationalUnit": { - "Arn": "arn:aws:organizations::111111111111:ou/o-exampleorgid/ou-examplerootid111-exampleouid111", - "Id": "ou-examplerootid111-exampleouid111", - "Name": "Accounting Group" - } - }, - "comments": { - "input": { - }, - "output": { - } - }, - "description": "The following example shows how to request details about an OU:/n/n", - "id": "to-get-information-about-an-organizational-unit", - "title": "To get information about an organizational unit" - } - ], - "DescribePolicy": [ - { - "input": { - "PolicyId": "p-examplepolicyid111" - }, - "output": { - "Policy": { - "Content": "{\\n \\\"Version\\\": \\\"2012-10-17\\\",\\n \\\"Statement\\\": [\\n {\\n \\\"Effect\\\": \\\"Allow\\\",\\n \\\"Action\\\": \\\"*\\\",\\n \\\"Resource\\\": \\\"*\\\"\\n }\\n ]\\n}", - "PolicySummary": { - "Arn": "arn:aws:organizations::111111111111:policy/o-exampleorgid/service_control_policy/p-examplepolicyid111", - "AwsManaged": false, - "Description": "Enables admins to delegate S3 permissions", - "Id": "p-examplepolicyid111", - "Name": "AllowAllS3Actions", - "Type": "SERVICE_CONTROL_POLICY" - } - } - }, - "comments": { - "input": { - }, - "output": { - } - }, - "description": "The following example shows how to request information about a policy:/n/n", - "id": "to-get-information-about-a-policy", - "title": "To get information about a policy" - } - ], - "DetachPolicy": [ - { - "input": { - "PolicyId": "p-examplepolicyid111", - "TargetId": "ou-examplerootid111-exampleouid111" - }, - "comments": { - "input": { - }, - "output": { - } - }, - "description": "The following example shows how to detach a policy from an OU:/n/n", - "id": "to-detach-a-policy-from-a-root-ou-or-account", - "title": "To detach a policy from a root, OU, or account" - } - ], - "DisablePolicyType": [ - { - "input": { - "PolicyType": "SERVICE_CONTROL_POLICY", - "RootId": "r-examplerootid111" - }, - "output": { - "Root": { - "Arn": "arn:aws:organizations::111111111111:root/o-exampleorgid/r-examplerootid111", - "Id": "r-examplerootid111", - "Name": "Root", - "PolicyTypes": [ - - ] - } - }, - "comments": { - "input": { - }, - "output": { - } - }, - "description": "The following example shows how to disable the service control policy (SCP) policy type in a root. The response shows that the PolicyTypes response element no longer includes SERVICE_CONTROL_POLICY:/n/n", - "id": "to-disable-a-policy-type-in-a-root", - "title": "To disable a policy type in a root" - } - ], - "EnableAllFeatures": [ - { - "input": { - }, - "output": { - "Handshake": { - "Action": "ENABLE_ALL_FEATURES", - "Arn": "arn:aws:organizations::111111111111:handshake/o-exampleorgid/enable_all_features/h-examplehandshakeid111", - "ExpirationTimestamp": "2017-02-28T09:35:40.05Z", - "Id": "h-examplehandshakeid111", - "Parties": [ - { - "Id": "o-exampleorgid", - "Type": "ORGANIZATION" - } - ], - "RequestedTimestamp": "2017-02-13T09:35:40.05Z", - "Resources": [ - { - "Type": "ORGANIZATION", - "Value": "o-exampleorgid" - } - ], - "State": "REQUESTED" - } - }, - "comments": { - "input": { - }, - "output": { - } - }, - "description": "This example shows the administrator asking all the invited accounts in the organization to approve enabling all features in the organization. AWS Organizations sends an email to the address that is registered with every invited member account asking the owner to approve the change by accepting the handshake that is sent. After all invited member accounts accept the handshake, the organization administrator can finalize the change to enable all features, and those with appropriate permissions can create policies and apply them to roots, OUs, and accounts:/n/n", - "id": "to-enable-all-features-in-an-organization", - "title": "To enable all features in an organization" - } - ], - "EnablePolicyType": [ - { - "input": { - "PolicyType": "SERVICE_CONTROL_POLICY", - "RootId": "r-examplerootid111" - }, - "output": { - "Root": { - "Arn": "arn:aws:organizations::111111111111:root/o-exampleorgid/r-examplerootid111", - "Id": "r-examplerootid111", - "Name": "Root", - "PolicyTypes": [ - { - "Status": "ENABLED", - "Type": "SERVICE_CONTROL_POLICY" - } - ] - } - }, - "comments": { - "input": { - }, - "output": { - } - }, - "description": "The following example shows how to enable the service control policy (SCP) policy type in a root. The output shows a root object with a PolicyTypes response element showing that SCPs are now enabled:/n/n", - "id": "to-enable-a-policy-type-in-a-root", - "title": "To enable a policy type in a root" - } - ], - "InviteAccountToOrganization": [ - { - "input": { - "Notes": "This is a request for Juan's account to join Bill's organization", - "Target": { - "Id": "juan@example.com", - "Type": "EMAIL" - } - }, - "output": { - "Handshake": { - "Action": "INVITE", - "Arn": "arn:aws:organizations::111111111111:handshake/o-exampleorgid/invite/h-examplehandshakeid111", - "ExpirationTimestamp": "2017-02-16T09:36:05.02Z", - "Id": "h-examplehandshakeid111", - "Parties": [ - { - "Id": "o-exampleorgid", - "Type": "ORGANIZATION" - }, - { - "Id": "juan@example.com", - "Type": "EMAIL" - } - ], - "RequestedTimestamp": "2017-02-01T09:36:05.02Z", - "Resources": [ - { - "Resources": [ - { - "Type": "MASTER_EMAIL", - "Value": "bill@amazon.com" - }, - { - "Type": "MASTER_NAME", - "Value": "Org Master Account" - }, - { - "Type": "ORGANIZATION_FEATURE_SET", - "Value": "FULL" - } - ], - "Type": "ORGANIZATION", - "Value": "o-exampleorgid" - }, - { - "Type": "EMAIL", - "Value": "juan@example.com" - } - ], - "State": "OPEN" - } - }, - "comments": { - "input": { - }, - "output": { - } - }, - "description": "The following example shows the admin of the master account owned by bill@example.com inviting the account owned by juan@example.com to join an organization.", - "id": "to-invite-an-account-to-join-an-organization-1472508594110", - "title": "To invite an account to join an organization" - } - ], - "LeaveOrganization": [ - { - "comments": { - "input": { - }, - "output": { - } - }, - "description": "TThe following example shows how to remove your member account from an organization:", - "id": "to-leave-an-organization-as-a-member-account-1472508784736", - "title": "To leave an organization as a member account" - } - ], - "ListAccounts": [ - { - "input": { - }, - "output": { - "Accounts": [ - { - "Arn": "arn:aws:organizations::111111111111:account/o-exampleorgid/111111111111", - "Email": "bill@example.com", - "Id": "111111111111", - "JoinedMethod": "INVITED", - "JoinedTimestamp": "20161215T193015Z", - "Name": "Master Account", - "Status": "ACTIVE" - }, - { - "Arn": "arn:aws:organizations::111111111111:account/o-exampleorgid/222222222222", - "Email": "alice@example.com", - "Id": "222222222222", - "JoinedMethod": "INVITED", - "JoinedTimestamp": "20161215T210221Z", - "Name": "Developer Account", - "Status": "ACTIVE" - }, - { - "Arn": "arn:aws:organizations::111111111111:account/o-exampleorgid/333333333333", - "Email": "juan@example.com", - "Id": "333333333333", - "JoinedMethod": "INVITED", - "JoinedTimestamp": "20161215T210347Z", - "Name": "Test Account", - "Status": "ACTIVE" - }, - { - "Arn": "arn:aws:organizations::111111111111:account/o-exampleorgid/444444444444", - "Email": "anika@example.com", - "Id": "444444444444", - "JoinedMethod": "INVITED", - "JoinedTimestamp": "20161215T210332Z", - "Name": "Production Account", - "Status": "ACTIVE" - } - ] - }, - "comments": { - "input": { - }, - "output": { - } - }, - "description": "The following example shows you how to request a list of the accounts in an organization:", - "id": "to-retrieve-a-list-of-all-of-the-accounts-in-an-organization-1472509590974", - "title": "To retrieve a list of all of the accounts in an organization" - } - ], - "ListAccountsForParent": [ - { - "input": { - "ParentId": "ou-examplerootid111-exampleouid111" - }, - "output": { - "Accounts": [ - { - "Arn": "arn:aws:organizations::111111111111:account/o-exampleorgid/333333333333", - "Email": "juan@example.com", - "Id": "333333333333", - "JoinedMethod": "INVITED", - "JoinedTimestamp": 1481835795.536, - "Name": "Development Account", - "Status": "ACTIVE" - }, - { - "Arn": "arn:aws:organizations::111111111111:account/o-exampleorgid/444444444444", - "Email": "anika@example.com", - "Id": "444444444444", - "JoinedMethod": "INVITED", - "JoinedTimestamp": 1481835812.143, - "Name": "Test Account", - "Status": "ACTIVE" - } - ] - }, - "comments": { - "input": { - }, - "output": { - } - }, - "description": "The following example shows how to request a list of the accounts in an OU:/n/n", - "id": "to-retrieve-a-list-of-all-of-the-accounts-in-a-root-or-ou-1472509590974", - "title": "To retrieve a list of all of the accounts in a root or OU" - } - ], - "ListChildren": [ - { - "input": { - "ChildType": "ORGANIZATIONAL_UNIT", - "ParentId": "ou-examplerootid111-exampleouid111" - }, - "output": { - "Children": [ - { - "Id": "ou-examplerootid111-exampleouid111", - "Type": "ORGANIZATIONAL_UNIT" - }, - { - "Id": "ou-examplerootid111-exampleouid222", - "Type": "ORGANIZATIONAL_UNIT" - } - ] - }, - "comments": { - "input": { - }, - "output": { - } - }, - "description": "The following example shows how to request a list of the child OUs in a parent root or OU:/n/n", - "id": "to-retrieve-a-list-of-all-of-the-child-accounts-and-OUs-in-a-parent-container", - "title": "To retrieve a list of all of the child accounts and OUs in a parent root or OU" - } - ], - "ListCreateAccountStatus": [ - { - "input": { - "States": [ - "SUCCEEDED" - ] - }, - "output": { - "CreateAccountStatuses": [ - { - "AccountId": "444444444444", - "AccountName": "Developer Test Account", - "CompletedTimestamp": "2017-01-15T13:45:23.6Z", - "Id": "car-exampleaccountcreationrequestid1", - "RequestedTimestamp": "2017-01-15T13:45:23.01Z", - "State": "SUCCEEDED" - } - ] - }, - "comments": { - "input": { - }, - "output": { - } - }, - "description": "The following example shows a user requesting a list of only the completed account creation requests made for the current organization:", - "id": "to-get-a-list-of-completed-account-creation-requests-made-in-the-organization", - "title": "To get a list of completed account creation requests made in the organization" - }, - { - "input": { - "States": [ - "IN_PROGRESS" - ] - }, - "output": { - "CreateAccountStatuses": [ - { - "AccountName": "Production Account", - "Id": "car-exampleaccountcreationrequestid2", - "RequestedTimestamp": "2017-01-15T13:45:23.01Z", - "State": "IN_PROGRESS" - } - ] - }, - "comments": { - "input": { - }, - "output": { - } - }, - "description": "The following example shows a user requesting a list of only the in-progress account creation requests made for the current organization:", - "id": "to-get-a-list-of-all-account-creation-requests-made-in-the-organization-1472509174532", - "title": "To get a list of all account creation requests made in the organization" - } - ], - "ListHandshakesForAccount": [ - { - "output": { - "Handshakes": [ - { - "Action": "INVITE", - "Arn": "arn:aws:organizations::111111111111:handshake/o-exampleorgid/invite/h-examplehandshakeid111", - "ExpirationTimestamp": "2017-01-28T14:35:23.3Z", - "Id": "h-examplehandshakeid111", - "Parties": [ - { - "Id": "o-exampleorgid", - "Type": "ORGANIZATION" - }, - { - "Id": "juan@example.com", - "Type": "EMAIL" - } - ], - "RequestedTimestamp": "2017-01-13T14:35:23.3Z", - "Resources": [ - { - "Resources": [ - { - "Type": "MASTER_EMAIL", - "Value": "bill@amazon.com" - }, - { - "Type": "MASTER_NAME", - "Value": "Org Master Account" - }, - { - "Type": "ORGANIZATION_FEATURE_SET", - "Value": "FULL" - } - ], - "Type": "ORGANIZATION", - "Value": "o-exampleorgid" - }, - { - "Type": "EMAIL", - "Value": "juan@example.com" - } - ], - "State": "OPEN" - } - ] - }, - "comments": { - "input": { - }, - "output": { - } - }, - "description": "The following example shows you how to get a list of handshakes that are associated with the account of the credentials used to call the operation:", - "id": "to-retrieve-a-list-of-the-handshakes-sent-to-an-account-1472510214747", - "title": "To retrieve a list of the handshakes sent to an account" - } - ], - "ListHandshakesForOrganization": [ - { - "output": { - "Handshakes": [ - { - "Action": "INVITE", - "Arn": "arn:aws:organizations::111111111111:handshake/o-exampleorgid/invite/h-examplehandshakeid111", - "ExpirationTimestamp": "2017-01-28T14:35:23.3Z", - "Id": "h-examplehandshakeid111", - "Parties": [ - { - "Id": "o-exampleorgid", - "Type": "ORGANIZATION" - }, - { - "Id": "juan@example.com", - "Type": "EMAIL" - } - ], - "RequestedTimestamp": "2017-01-13T14:35:23.3Z", - "Resources": [ - { - "Resources": [ - { - "Type": "MASTER_EMAIL", - "Value": "bill@amazon.com" - }, - { - "Type": "MASTER_NAME", - "Value": "Org Master Account" - }, - { - "Type": "ORGANIZATION_FEATURE_SET", - "Value": "FULL" - } - ], - "Type": "ORGANIZATION", - "Value": "o-exampleorgid" - }, - { - "Type": "EMAIL", - "Value": "juan@example.com" - } - ], - "State": "OPEN" - }, - { - "Action": "INVITE", - "Arn": "arn:aws:organizations::111111111111:handshake/o-exampleorgid/invite/h-examplehandshakeid111", - "ExpirationTimestamp": "2017-01-28T14:35:23.3Z", - "Id": "h-examplehandshakeid222", - "Parties": [ - { - "Id": "o-exampleorgid", - "Type": "ORGANIZATION" - }, - { - "Id": "anika@example.com", - "Type": "EMAIL" - } - ], - "RequestedTimestamp": "2017-01-13T14:35:23.3Z", - "Resources": [ - { - "Resources": [ - { - "Type": "MASTER_EMAIL", - "Value": "bill@example.com" - }, - { - "Type": "MASTER_NAME", - "Value": "Master Account" - } - ], - "Type": "ORGANIZATION", - "Value": "o-exampleorgid" - }, - { - "Type": "EMAIL", - "Value": "anika@example.com" - }, - { - "Type": "NOTES", - "Value": "This is an invitation to Anika's account to join Bill's organization." - } - ], - "State": "ACCEPTED" - } - ] - }, - "comments": { - "input": { - }, - "output": { - } - }, - "description": "The following example shows you how to get a list of handshakes associated with the current organization:", - "id": "to-retrieve-a-list-of-the-handshakes-associated-with-an-organization-1472511206653", - "title": "To retrieve a list of the handshakes associated with an organization" - } - ], - "ListOrganizationalUnitsForParent": [ - { - "input": { - "ParentId": "r-examplerootid111" - }, - "output": { - "OrganizationalUnits": [ - { - "Arn": "arn:aws:organizations::111111111111:ou/o-exampleorgid/ou-examlerootid111-exampleouid111", - "Id": "ou-examplerootid111-exampleouid111", - "Name": "Development" - }, - { - "Arn": "arn:aws:organizations::111111111111:ou/o-exampleorgid/ou-examlerootid111-exampleouid222", - "Id": "ou-examplerootid111-exampleouid222", - "Name": "Production" - } - ] - }, - "comments": { - "input": { - }, - "output": { - } - }, - "description": "The following example shows how to get a list of OUs in a specified root:/n/n", - "id": "to-retrieve-a-list-of-all-of-the-OUs-in-a-parent-container", - "title": "To retrieve a list of all of the child OUs in a parent root or OU" - } - ], - "ListParents": [ - { - "input": { - "ChildId": "444444444444" - }, - "output": { - "Parents": [ - { - "Id": "ou-examplerootid111-exampleouid111", - "Type": "ORGANIZATIONAL_UNIT" - } - ] - }, - "comments": { - "input": { - }, - "output": { - } - }, - "description": "The following example shows how to list the root or OUs that contain account 444444444444:/n/n", - "id": "to-retrieve-a-list-of-all-of-the-parents-of-a-child-ou-or-account", - "title": "To retrieve a list of all of the parents of a child OU or account" - } - ], - "ListPolicies": [ - { - "input": { - "Filter": "SERVICE_CONTROL_POLICY" - }, - "output": { - "Policies": [ - { - "Arn": "arn:aws:organizations::111111111111:policy/o-exampleorgid/service_control_policy/p-examplepolicyid111", - "AwsManaged": false, - "Description": "Enables account admins to delegate permissions for any S3 actions to users and roles in their accounts.", - "Id": "p-examplepolicyid111", - "Name": "AllowAllS3Actions", - "Type": "SERVICE_CONTROL_POLICY" - }, - { - "Arn": "arn:aws:organizations::111111111111:policy/o-exampleorgid/service_control_policy/p-examplepolicyid222", - "AwsManaged": false, - "Description": "Enables account admins to delegate permissions for any EC2 actions to users and roles in their accounts.", - "Id": "p-examplepolicyid222", - "Name": "AllowAllEC2Actions", - "Type": "SERVICE_CONTROL_POLICY" - }, - { - "Arn": "arn:aws:organizations::aws:policy/service_control_policy/p-FullAWSAccess", - "AwsManaged": true, - "Description": "Allows access to every operation", - "Id": "p-FullAWSAccess", - "Name": "FullAWSAccess", - "Type": "SERVICE_CONTROL_POLICY" - } - ] - }, - "comments": { - "input": { - }, - "output": { - } - }, - "description": "The following example shows how to get a list of service control policies (SCPs):/n/n", - "id": "to-retrieve-a-list-of--policies-in-the-organization", - "title": "To retrieve a list policies in the organization" - } - ], - "ListPoliciesForTarget": [ - { - "input": { - "Filter": "SERVICE_CONTROL_POLICY", - "TargetId": "444444444444" - }, - "output": { - "Policies": [ - { - "Arn": "arn:aws:organizations::111111111111:policy/o-exampleorgid/service_control_policy/p-examplepolicyid222", - "AwsManaged": false, - "Description": "Enables account admins to delegate permissions for any EC2 actions to users and roles in their accounts.", - "Id": "p-examplepolicyid222", - "Name": "AllowAllEC2Actions", - "Type": "SERVICE_CONTROL_POLICY" - } - ] - }, - "comments": { - "input": { - }, - "output": { - } - }, - "description": "The following example shows how to get a list of all service control policies (SCPs) of the type specified by the Filter parameter, that are directly attached to an account. The returned list does not include policies that apply to the account because of inheritance from its location in an OU hierarchy:/n/n", - "id": "to-retrieve-a-list-of-policies-attached-to-a-root-ou-or-account", - "title": "To retrieve a list policies attached to a root, OU, or account" - } - ], - "ListRoots": [ - { - "input": { - }, - "output": { - "Roots": [ - { - "Arn": "arn:aws:organizations::111111111111:root/o-exampleorgid/r-examplerootid111", - "Id": "r-examplerootid111", - "Name": "Root", - "PolicyTypes": [ - { - "Status": "ENABLED", - "Type": "SERVICE_CONTROL_POLICY" - } - ] - } - ] - }, - "comments": { - "input": { - }, - "output": { - } - }, - "description": "The following example shows how to get the list of the roots in the current organization:/n/n", - "id": "to-retrieve-a-list-of-roots-in-the-organization", - "title": "To retrieve a list of roots in the organization" - } - ], - "ListTargetsForPolicy": [ - { - "input": { - "PolicyId": "p-FullAWSAccess" - }, - "output": { - "Targets": [ - { - "Arn": "arn:aws:organizations::111111111111:root/o-exampleorgid/r-examplerootid111", - "Name": "Root", - "TargetId": "r-examplerootid111", - "Type": "ROOT" - }, - { - "Arn": "arn:aws:organizations::111111111111:account/o-exampleorgid/333333333333;", - "Name": "Developer Test Account", - "TargetId": "333333333333", - "Type": "ACCOUNT" - }, - { - "Arn": "arn:aws:organizations::111111111111:ou/o-exampleorgid/ou-examplerootid111-exampleouid111", - "Name": "Accounting", - "TargetId": "ou-examplerootid111-exampleouid111", - "Type": "ORGANIZATIONAL_UNIT" - } - ] - }, - "comments": { - "input": { - }, - "output": { - } - }, - "description": "The following example shows how to get the list of roots, OUs, and accounts to which the specified policy is attached:/n/n", - "id": "to-retrieve-a-list-of-roots-ous-and-accounts-to-which-a-policy-is-attached", - "title": "To retrieve a list of roots, OUs, and accounts to which a policy is attached" - } - ], - "MoveAccount": [ - { - "input": { - "AccountId": "333333333333", - "DestinationParentId": "ou-examplerootid111-exampleouid111", - "SourceParentId": "r-examplerootid111" - }, - "comments": { - "input": { - }, - "output": { - } - }, - "description": "The following example shows how to move a member account from the root to an OU:/n/n", - "id": "to-move-an-ou-or-account-to-another-ou-or-the-root", - "title": "To move an OU or account to another OU or the root" - } - ], - "RemoveAccountFromOrganization": [ - { - "input": { - "AccountId": "333333333333" - }, - "comments": { - "input": { - }, - "output": { - } - }, - "description": "The following example shows you how to remove an account from an organization:", - "id": "to-remove-an-account-from-an-organization-as-the-master-account", - "title": "To remove an account from an organization as the master account" - } - ], - "UpdateOrganizationalUnit": [ - { - "input": { - "Name": "AccountingOU", - "OrganizationalUnitId": "ou-examplerootid111-exampleouid111" - }, - "output": { - "OrganizationalUnit": { - "Arn": "arn:aws:organizations::111111111111:ou/o-exampleorgid/ou-examplerootid111-exampleouid111", - "Id": "ou-examplerootid111-exampleouid111", - "Name": "AccountingOU" - } - }, - "comments": { - "input": { - }, - "output": { - } - }, - "description": "The following example shows how to rename an OU. The output confirms the new name:/n/n", - "id": "to-rename-an-organizational-unit", - "title": "To rename an organizational unit" - } - ], - "UpdatePolicy": [ - { - "input": { - "Description": "This description replaces the original.", - "Name": "Renamed-Policy", - "PolicyId": "p-examplepolicyid111" - }, - "output": { - "Policy": { - "Content": "{ \"Version\": \"2012-10-17\", \"Statement\": { \"Effect\": \"Allow\", \"Action\": \"ec2:*\", \"Resource\": \"*\" } }", - "PolicySummary": { - "Arn": "arn:aws:organizations::111111111111:policy/o-exampleorgid/service_control_policy/p-examplepolicyid111", - "AwsManaged": false, - "Description": "This description replaces the original.", - "Id": "p-examplepolicyid111", - "Name": "Renamed-Policy", - "Type": "SERVICE_CONTROL_POLICY" - } - } - }, - "comments": { - "input": { - }, - "output": { - } - }, - "description": "The following example shows how to rename a policy and give it a new description and new content. The output confirms the new name and description text:/n/n", - "id": "to-update-the-details-of-a-policy", - "title": "To update the details of a policy" - }, - { - "input": { - "Content": "{ \\\"Version\\\": \\\"2012-10-17\\\", \\\"Statement\\\": {\\\"Effect\\\": \\\"Allow\\\", \\\"Action\\\": \\\"s3:*\\\", \\\"Resource\\\": \\\"*\\\" } }", - "PolicyId": "p-examplepolicyid111" - }, - "output": { - "Policy": { - "Content": "{ \\\"Version\\\": \\\"2012-10-17\\\", \\\"Statement\\\": { \\\"Effect\\\": \\\"Allow\\\", \\\"Action\\\": \\\"s3:*\\\", \\\"Resource\\\": \\\"*\\\" } }", - "PolicySummary": { - "Arn": "arn:aws:organizations::111111111111:policy/o-exampleorgid/service_control_policy/p-examplepolicyid111", - "AwsManaged": false, - "Description": "This description replaces the original.", - "Id": "p-examplepolicyid111", - "Name": "Renamed-Policy", - "Type": "SERVICE_CONTROL_POLICY" - } - } - }, - "comments": { - "input": { - }, - "output": { - } - }, - "description": "The following example shows how to replace the JSON text of the SCP from the preceding example with a new JSON policy text string that allows S3 actions instead of EC2 actions:/n/n", - "id": "to-update-the-content-of-a-policy", - "title": "To update the content of a policy" - } - ] - } -} diff --git a/workshops/monte-carlo-on-ec2-spot-fleet/src/web/node_modules/aws-sdk/apis/organizations-2016-11-28.min.json b/workshops/monte-carlo-on-ec2-spot-fleet/src/web/node_modules/aws-sdk/apis/organizations-2016-11-28.min.json deleted file mode 100644 index 7e929e12..00000000 --- a/workshops/monte-carlo-on-ec2-spot-fleet/src/web/node_modules/aws-sdk/apis/organizations-2016-11-28.min.json +++ /dev/null @@ -1,973 +0,0 @@ -{ - "version": "2.0", - "metadata": { - "apiVersion": "2016-11-28", - "endpointPrefix": "organizations", - "jsonVersion": "1.1", - "protocol": "json", - "serviceAbbreviation": "Organizations", - "serviceFullName": "AWS Organizations", - "signatureVersion": "v4", - "targetPrefix": "AWSOrganizationsV20161128", - "timestampFormat": "unixTimestamp", - "uid": "organizations-2016-11-28" - }, - "operations": { - "AcceptHandshake": { - "input": { - "type": "structure", - "required": [ - "HandshakeId" - ], - "members": { - "HandshakeId": {} - } - }, - "output": { - "type": "structure", - "members": { - "Handshake": { - "shape": "S4" - } - } - } - }, - "AttachPolicy": { - "input": { - "type": "structure", - "required": [ - "PolicyId", - "TargetId" - ], - "members": { - "PolicyId": {}, - "TargetId": {} - } - } - }, - "CancelHandshake": { - "input": { - "type": "structure", - "required": [ - "HandshakeId" - ], - "members": { - "HandshakeId": {} - } - }, - "output": { - "type": "structure", - "members": { - "Handshake": { - "shape": "S4" - } - } - } - }, - "CreateAccount": { - "input": { - "type": "structure", - "required": [ - "Email", - "AccountName" - ], - "members": { - "Email": { - "shape": "Sn" - }, - "AccountName": { - "shape": "So" - }, - "RoleName": {}, - "IamUserAccessToBilling": {} - } - }, - "output": { - "type": "structure", - "members": { - "CreateAccountStatus": { - "shape": "Ss" - } - } - } - }, - "CreateOrganization": { - "input": { - "type": "structure", - "members": { - "FeatureSet": {} - } - }, - "output": { - "type": "structure", - "members": { - "Organization": { - "shape": "S10" - } - } - } - }, - "CreateOrganizationalUnit": { - "input": { - "type": "structure", - "required": [ - "ParentId", - "Name" - ], - "members": { - "ParentId": {}, - "Name": {} - } - }, - "output": { - "type": "structure", - "members": { - "OrganizationalUnit": { - "shape": "S1c" - } - } - } - }, - "CreatePolicy": { - "input": { - "type": "structure", - "required": [ - "Content", - "Description", - "Name", - "Type" - ], - "members": { - "Content": {}, - "Description": {}, - "Name": {}, - "Type": {} - } - }, - "output": { - "type": "structure", - "members": { - "Policy": { - "shape": "S1k" - } - } - } - }, - "DeclineHandshake": { - "input": { - "type": "structure", - "required": [ - "HandshakeId" - ], - "members": { - "HandshakeId": {} - } - }, - "output": { - "type": "structure", - "members": { - "Handshake": { - "shape": "S4" - } - } - } - }, - "DeleteOrganization": {}, - "DeleteOrganizationalUnit": { - "input": { - "type": "structure", - "required": [ - "OrganizationalUnitId" - ], - "members": { - "OrganizationalUnitId": {} - } - } - }, - "DeletePolicy": { - "input": { - "type": "structure", - "required": [ - "PolicyId" - ], - "members": { - "PolicyId": {} - } - } - }, - "DescribeAccount": { - "input": { - "type": "structure", - "required": [ - "AccountId" - ], - "members": { - "AccountId": {} - } - }, - "output": { - "type": "structure", - "members": { - "Account": { - "shape": "S1u" - } - } - } - }, - "DescribeCreateAccountStatus": { - "input": { - "type": "structure", - "required": [ - "CreateAccountRequestId" - ], - "members": { - "CreateAccountRequestId": {} - } - }, - "output": { - "type": "structure", - "members": { - "CreateAccountStatus": { - "shape": "Ss" - } - } - } - }, - "DescribeHandshake": { - "input": { - "type": "structure", - "required": [ - "HandshakeId" - ], - "members": { - "HandshakeId": {} - } - }, - "output": { - "type": "structure", - "members": { - "Handshake": { - "shape": "S4" - } - } - } - }, - "DescribeOrganization": { - "output": { - "type": "structure", - "members": { - "Organization": { - "shape": "S10" - } - } - } - }, - "DescribeOrganizationalUnit": { - "input": { - "type": "structure", - "required": [ - "OrganizationalUnitId" - ], - "members": { - "OrganizationalUnitId": {} - } - }, - "output": { - "type": "structure", - "members": { - "OrganizationalUnit": { - "shape": "S1c" - } - } - } - }, - "DescribePolicy": { - "input": { - "type": "structure", - "required": [ - "PolicyId" - ], - "members": { - "PolicyId": {} - } - }, - "output": { - "type": "structure", - "members": { - "Policy": { - "shape": "S1k" - } - } - } - }, - "DetachPolicy": { - "input": { - "type": "structure", - "required": [ - "PolicyId", - "TargetId" - ], - "members": { - "PolicyId": {}, - "TargetId": {} - } - } - }, - "DisablePolicyType": { - "input": { - "type": "structure", - "required": [ - "RootId", - "PolicyType" - ], - "members": { - "RootId": {}, - "PolicyType": {} - } - }, - "output": { - "type": "structure", - "members": { - "Root": { - "shape": "S2a" - } - } - } - }, - "EnableAllFeatures": { - "input": { - "type": "structure", - "members": {} - }, - "output": { - "type": "structure", - "members": { - "Handshake": { - "shape": "S4" - } - } - } - }, - "EnablePolicyType": { - "input": { - "type": "structure", - "required": [ - "RootId", - "PolicyType" - ], - "members": { - "RootId": {}, - "PolicyType": {} - } - }, - "output": { - "type": "structure", - "members": { - "Root": { - "shape": "S2a" - } - } - } - }, - "InviteAccountToOrganization": { - "input": { - "type": "structure", - "required": [ - "Target" - ], - "members": { - "Target": { - "shape": "S7" - }, - "Notes": { - "type": "string", - "sensitive": true - } - } - }, - "output": { - "type": "structure", - "members": { - "Handshake": { - "shape": "S4" - } - } - } - }, - "LeaveOrganization": {}, - "ListAccounts": { - "input": { - "type": "structure", - "members": { - "NextToken": {}, - "MaxResults": { - "type": "integer" - } - } - }, - "output": { - "type": "structure", - "members": { - "Accounts": { - "shape": "S2o" - }, - "NextToken": {} - } - } - }, - "ListAccountsForParent": { - "input": { - "type": "structure", - "required": [ - "ParentId" - ], - "members": { - "ParentId": {}, - "NextToken": {}, - "MaxResults": { - "type": "integer" - } - } - }, - "output": { - "type": "structure", - "members": { - "Accounts": { - "shape": "S2o" - }, - "NextToken": {} - } - } - }, - "ListChildren": { - "input": { - "type": "structure", - "required": [ - "ParentId", - "ChildType" - ], - "members": { - "ParentId": {}, - "ChildType": {}, - "NextToken": {}, - "MaxResults": { - "type": "integer" - } - } - }, - "output": { - "type": "structure", - "members": { - "Children": { - "type": "list", - "member": { - "type": "structure", - "members": { - "Id": {}, - "Type": {} - } - } - }, - "NextToken": {} - } - } - }, - "ListCreateAccountStatus": { - "input": { - "type": "structure", - "members": { - "States": { - "type": "list", - "member": {} - }, - "NextToken": {}, - "MaxResults": { - "type": "integer" - } - } - }, - "output": { - "type": "structure", - "members": { - "CreateAccountStatuses": { - "type": "list", - "member": { - "shape": "Ss" - } - }, - "NextToken": {} - } - } - }, - "ListHandshakesForAccount": { - "input": { - "type": "structure", - "members": { - "Filter": { - "shape": "S32" - }, - "NextToken": {}, - "MaxResults": { - "type": "integer" - } - } - }, - "output": { - "type": "structure", - "members": { - "Handshakes": { - "shape": "S34" - }, - "NextToken": {} - } - } - }, - "ListHandshakesForOrganization": { - "input": { - "type": "structure", - "members": { - "Filter": { - "shape": "S32" - }, - "NextToken": {}, - "MaxResults": { - "type": "integer" - } - } - }, - "output": { - "type": "structure", - "members": { - "Handshakes": { - "shape": "S34" - }, - "NextToken": {} - } - } - }, - "ListOrganizationalUnitsForParent": { - "input": { - "type": "structure", - "required": [ - "ParentId" - ], - "members": { - "ParentId": {}, - "NextToken": {}, - "MaxResults": { - "type": "integer" - } - } - }, - "output": { - "type": "structure", - "members": { - "OrganizationalUnits": { - "type": "list", - "member": { - "shape": "S1c" - } - }, - "NextToken": {} - } - } - }, - "ListParents": { - "input": { - "type": "structure", - "required": [ - "ChildId" - ], - "members": { - "ChildId": {}, - "NextToken": {}, - "MaxResults": { - "type": "integer" - } - } - }, - "output": { - "type": "structure", - "members": { - "Parents": { - "type": "list", - "member": { - "type": "structure", - "members": { - "Id": {}, - "Type": {} - } - } - }, - "NextToken": {} - } - } - }, - "ListPolicies": { - "input": { - "type": "structure", - "required": [ - "Filter" - ], - "members": { - "Filter": {}, - "NextToken": {}, - "MaxResults": { - "type": "integer" - } - } - }, - "output": { - "type": "structure", - "members": { - "Policies": { - "shape": "S3h" - }, - "NextToken": {} - } - } - }, - "ListPoliciesForTarget": { - "input": { - "type": "structure", - "required": [ - "TargetId", - "Filter" - ], - "members": { - "TargetId": {}, - "Filter": {}, - "NextToken": {}, - "MaxResults": { - "type": "integer" - } - } - }, - "output": { - "type": "structure", - "members": { - "Policies": { - "shape": "S3h" - }, - "NextToken": {} - } - } - }, - "ListRoots": { - "input": { - "type": "structure", - "members": { - "NextToken": {}, - "MaxResults": { - "type": "integer" - } - } - }, - "output": { - "type": "structure", - "members": { - "Roots": { - "type": "list", - "member": { - "shape": "S2a" - } - }, - "NextToken": {} - } - } - }, - "ListTargetsForPolicy": { - "input": { - "type": "structure", - "required": [ - "PolicyId" - ], - "members": { - "PolicyId": {}, - "NextToken": {}, - "MaxResults": { - "type": "integer" - } - } - }, - "output": { - "type": "structure", - "members": { - "Targets": { - "type": "list", - "member": { - "type": "structure", - "members": { - "TargetId": {}, - "Arn": {}, - "Name": {}, - "Type": {} - } - } - }, - "NextToken": {} - } - } - }, - "MoveAccount": { - "input": { - "type": "structure", - "required": [ - "AccountId", - "SourceParentId", - "DestinationParentId" - ], - "members": { - "AccountId": {}, - "SourceParentId": {}, - "DestinationParentId": {} - } - } - }, - "RemoveAccountFromOrganization": { - "input": { - "type": "structure", - "required": [ - "AccountId" - ], - "members": { - "AccountId": {} - } - } - }, - "UpdateOrganizationalUnit": { - "input": { - "type": "structure", - "required": [ - "OrganizationalUnitId" - ], - "members": { - "OrganizationalUnitId": {}, - "Name": {} - } - }, - "output": { - "type": "structure", - "members": { - "OrganizationalUnit": { - "shape": "S1c" - } - } - } - }, - "UpdatePolicy": { - "input": { - "type": "structure", - "required": [ - "PolicyId" - ], - "members": { - "PolicyId": {}, - "Name": {}, - "Description": {}, - "Content": {} - } - }, - "output": { - "type": "structure", - "members": { - "Policy": { - "shape": "S1k" - } - } - } - } - }, - "shapes": { - "S4": { - "type": "structure", - "members": { - "Id": {}, - "Arn": {}, - "Parties": { - "type": "list", - "member": { - "shape": "S7" - } - }, - "State": {}, - "RequestedTimestamp": { - "type": "timestamp" - }, - "ExpirationTimestamp": { - "type": "timestamp" - }, - "Action": {}, - "Resources": { - "shape": "Sd" - } - } - }, - "S7": { - "type": "structure", - "required": [ - "Id", - "Type" - ], - "members": { - "Id": { - "type": "string", - "sensitive": true - }, - "Type": {} - } - }, - "Sd": { - "type": "list", - "member": { - "type": "structure", - "members": { - "Value": { - "type": "string", - "sensitive": true - }, - "Type": {}, - "Resources": { - "shape": "Sd" - } - } - } - }, - "Sn": { - "type": "string", - "sensitive": true - }, - "So": { - "type": "string", - "sensitive": true - }, - "Ss": { - "type": "structure", - "members": { - "Id": {}, - "AccountName": { - "shape": "So" - }, - "State": {}, - "RequestedTimestamp": { - "type": "timestamp" - }, - "CompletedTimestamp": { - "type": "timestamp" - }, - "AccountId": {}, - "FailureReason": {} - } - }, - "S10": { - "type": "structure", - "members": { - "Id": {}, - "Arn": {}, - "FeatureSet": {}, - "MasterAccountArn": {}, - "MasterAccountId": {}, - "MasterAccountEmail": { - "shape": "Sn" - }, - "AvailablePolicyTypes": { - "shape": "S14" - } - } - }, - "S14": { - "type": "list", - "member": { - "type": "structure", - "members": { - "Type": {}, - "Status": {} - } - } - }, - "S1c": { - "type": "structure", - "members": { - "Id": {}, - "Arn": {}, - "Name": {} - } - }, - "S1k": { - "type": "structure", - "members": { - "PolicySummary": { - "shape": "S1l" - }, - "Content": {} - } - }, - "S1l": { - "type": "structure", - "members": { - "Id": {}, - "Arn": {}, - "Name": {}, - "Description": {}, - "Type": {}, - "AwsManaged": { - "type": "boolean" - } - } - }, - "S1u": { - "type": "structure", - "members": { - "Id": {}, - "Arn": {}, - "Email": { - "shape": "Sn" - }, - "Name": { - "shape": "So" - }, - "Status": {}, - "JoinedMethod": {}, - "JoinedTimestamp": { - "type": "timestamp" - } - } - }, - "S2a": { - "type": "structure", - "members": { - "Id": {}, - "Arn": {}, - "Name": {}, - "PolicyTypes": { - "shape": "S14" - } - } - }, - "S2o": { - "type": "list", - "member": { - "shape": "S1u" - } - }, - "S32": { - "type": "structure", - "members": { - "ActionType": {}, - "ParentHandshakeId": {} - } - }, - "S34": { - "type": "list", - "member": { - "shape": "S4" - } - }, - "S3h": { - "type": "list", - "member": { - "shape": "S1l" - } - } - } -} \ No newline at end of file diff --git a/workshops/monte-carlo-on-ec2-spot-fleet/src/web/node_modules/aws-sdk/apis/organizations-2016-11-28.paginators.json b/workshops/monte-carlo-on-ec2-spot-fleet/src/web/node_modules/aws-sdk/apis/organizations-2016-11-28.paginators.json deleted file mode 100644 index ad365ba8..00000000 --- a/workshops/monte-carlo-on-ec2-spot-fleet/src/web/node_modules/aws-sdk/apis/organizations-2016-11-28.paginators.json +++ /dev/null @@ -1,64 +0,0 @@ -{ - "pagination": { - "ListAccounts": { - "input_token": "NextToken", - "output_token": "NextToken", - "limit_key": "MaxResults" - }, - "ListAccountsForParent": { - "input_token": "NextToken", - "output_token": "NextToken", - "limit_key": "MaxResults" - }, - "ListChildren": { - "input_token": "NextToken", - "output_token": "NextToken", - "limit_key": "MaxResults" - }, - "ListCreateAccountStatus": { - "input_token": "NextToken", - "output_token": "NextToken", - "limit_key": "MaxResults" - }, - "ListHandshakesForAccount": { - "input_token": "NextToken", - "output_token": "NextToken", - "limit_key": "MaxResults" - }, - "ListHandshakesForOrganization": { - "input_token": "NextToken", - "output_token": "NextToken", - "limit_key": "MaxResults" - }, - "ListOrganizationalUnitsForParent": { - "input_token": "NextToken", - "output_token": "NextToken", - "limit_key": "MaxResults" - }, - "ListParents": { - "input_token": "NextToken", - "output_token": "NextToken", - "limit_key": "MaxResults" - }, - "ListPolicies": { - "input_token": "NextToken", - "output_token": "NextToken", - "limit_key": "MaxResults" - }, - "ListPoliciesForTarget": { - "input_token": "NextToken", - "output_token": "NextToken", - "limit_key": "MaxResults" - }, - "ListRoots": { - "input_token": "NextToken", - "output_token": "NextToken", - "limit_key": "MaxResults" - }, - "ListTargetsForPolicy": { - "input_token": "NextToken", - "output_token": "NextToken", - "limit_key": "MaxResults" - } - } -} diff --git a/workshops/monte-carlo-on-ec2-spot-fleet/src/web/node_modules/aws-sdk/apis/pinpoint-2016-12-01.examples.json b/workshops/monte-carlo-on-ec2-spot-fleet/src/web/node_modules/aws-sdk/apis/pinpoint-2016-12-01.examples.json deleted file mode 100644 index 0ea7e3b0..00000000 --- a/workshops/monte-carlo-on-ec2-spot-fleet/src/web/node_modules/aws-sdk/apis/pinpoint-2016-12-01.examples.json +++ /dev/null @@ -1,5 +0,0 @@ -{ - "version": "1.0", - "examples": { - } -} diff --git a/workshops/monte-carlo-on-ec2-spot-fleet/src/web/node_modules/aws-sdk/apis/pinpoint-2016-12-01.min.json b/workshops/monte-carlo-on-ec2-spot-fleet/src/web/node_modules/aws-sdk/apis/pinpoint-2016-12-01.min.json deleted file mode 100644 index bf9b91ff..00000000 --- a/workshops/monte-carlo-on-ec2-spot-fleet/src/web/node_modules/aws-sdk/apis/pinpoint-2016-12-01.min.json +++ /dev/null @@ -1,3061 +0,0 @@ -{ - "metadata": { - "apiVersion": "2016-12-01", - "endpointPrefix": "pinpoint", - "signingName": "mobiletargeting", - "serviceFullName": "Amazon Pinpoint", - "signatureVersion": "v4", - "protocol": "rest-json", - "jsonVersion": "1.1", - "uid": "pinpoint-2016-12-01" - }, - "operations": { - "CreateApp": { - "http": { - "requestUri": "/v1/apps", - "responseCode": 201 - }, - "input": { - "type": "structure", - "members": { - "CreateApplicationRequest": { - "type": "structure", - "members": { - "Name": {} - } - } - }, - "required": [ - "CreateApplicationRequest" - ], - "payload": "CreateApplicationRequest" - }, - "output": { - "type": "structure", - "members": { - "ApplicationResponse": { - "shape": "S5" - } - }, - "required": [ - "ApplicationResponse" - ], - "payload": "ApplicationResponse" - } - }, - "CreateCampaign": { - "http": { - "requestUri": "/v1/apps/{application-id}/campaigns", - "responseCode": 201 - }, - "input": { - "type": "structure", - "members": { - "ApplicationId": { - "location": "uri", - "locationName": "application-id" - }, - "WriteCampaignRequest": { - "shape": "S7" - } - }, - "required": [ - "ApplicationId", - "WriteCampaignRequest" - ], - "payload": "WriteCampaignRequest" - }, - "output": { - "type": "structure", - "members": { - "CampaignResponse": { - "shape": "Sn" - } - }, - "required": [ - "CampaignResponse" - ], - "payload": "CampaignResponse" - } - }, - "CreateImportJob": { - "http": { - "requestUri": "/v1/apps/{application-id}/jobs/import", - "responseCode": 201 - }, - "input": { - "type": "structure", - "members": { - "ApplicationId": { - "location": "uri", - "locationName": "application-id" - }, - "ImportJobRequest": { - "type": "structure", - "members": { - "DefineSegment": { - "type": "boolean" - }, - "ExternalId": {}, - "Format": {}, - "RegisterEndpoints": { - "type": "boolean" - }, - "RoleArn": {}, - "S3Url": {}, - "SegmentId": {}, - "SegmentName": {} - } - } - }, - "required": [ - "ApplicationId", - "ImportJobRequest" - ], - "payload": "ImportJobRequest" - }, - "output": { - "type": "structure", - "members": { - "ImportJobResponse": { - "shape": "Sw" - } - }, - "required": [ - "ImportJobResponse" - ], - "payload": "ImportJobResponse" - } - }, - "CreateSegment": { - "http": { - "requestUri": "/v1/apps/{application-id}/segments", - "responseCode": 201 - }, - "input": { - "type": "structure", - "members": { - "ApplicationId": { - "location": "uri", - "locationName": "application-id" - }, - "WriteSegmentRequest": { - "shape": "S11" - } - }, - "required": [ - "ApplicationId", - "WriteSegmentRequest" - ], - "payload": "WriteSegmentRequest" - }, - "output": { - "type": "structure", - "members": { - "SegmentResponse": { - "shape": "S1f" - } - }, - "required": [ - "SegmentResponse" - ], - "payload": "SegmentResponse" - } - }, - "DeleteAdmChannel": { - "http": { - "method": "DELETE", - "requestUri": "/v1/apps/{application-id}/channels/adm", - "responseCode": 200 - }, - "input": { - "type": "structure", - "members": { - "ApplicationId": { - "location": "uri", - "locationName": "application-id" - } - }, - "required": [ - "ApplicationId" - ] - }, - "output": { - "type": "structure", - "members": { - "ADMChannelResponse": { - "shape": "S1l" - } - }, - "required": [ - "ADMChannelResponse" - ], - "payload": "ADMChannelResponse" - } - }, - "DeleteApnsChannel": { - "http": { - "method": "DELETE", - "requestUri": "/v1/apps/{application-id}/channels/apns", - "responseCode": 200 - }, - "input": { - "type": "structure", - "members": { - "ApplicationId": { - "location": "uri", - "locationName": "application-id" - } - }, - "required": [ - "ApplicationId" - ] - }, - "output": { - "type": "structure", - "members": { - "APNSChannelResponse": { - "shape": "S1o" - } - }, - "required": [ - "APNSChannelResponse" - ], - "payload": "APNSChannelResponse" - } - }, - "DeleteApnsSandboxChannel": { - "http": { - "method": "DELETE", - "requestUri": "/v1/apps/{application-id}/channels/apns_sandbox", - "responseCode": 200 - }, - "input": { - "type": "structure", - "members": { - "ApplicationId": { - "location": "uri", - "locationName": "application-id" - } - }, - "required": [ - "ApplicationId" - ] - }, - "output": { - "type": "structure", - "members": { - "APNSSandboxChannelResponse": { - "shape": "S1r" - } - }, - "required": [ - "APNSSandboxChannelResponse" - ], - "payload": "APNSSandboxChannelResponse" - } - }, - "DeleteApp": { - "http": { - "method": "DELETE", - "requestUri": "/v1/apps/{application-id}", - "responseCode": 200 - }, - "input": { - "type": "structure", - "members": { - "ApplicationId": { - "location": "uri", - "locationName": "application-id" - } - }, - "required": [ - "ApplicationId" - ] - }, - "output": { - "type": "structure", - "members": { - "ApplicationResponse": { - "shape": "S5" - } - }, - "required": [ - "ApplicationResponse" - ], - "payload": "ApplicationResponse" - } - }, - "DeleteBaiduChannel": { - "http": { - "method": "DELETE", - "requestUri": "/v1/apps/{application-id}/channels/baidu", - "responseCode": 200 - }, - "input": { - "type": "structure", - "members": { - "ApplicationId": { - "location": "uri", - "locationName": "application-id" - } - }, - "required": [ - "ApplicationId" - ] - }, - "output": { - "type": "structure", - "members": { - "BaiduChannelResponse": { - "shape": "S1w" - } - }, - "required": [ - "BaiduChannelResponse" - ], - "payload": "BaiduChannelResponse" - } - }, - "DeleteCampaign": { - "http": { - "method": "DELETE", - "requestUri": "/v1/apps/{application-id}/campaigns/{campaign-id}", - "responseCode": 200 - }, - "input": { - "type": "structure", - "members": { - "ApplicationId": { - "location": "uri", - "locationName": "application-id" - }, - "CampaignId": { - "location": "uri", - "locationName": "campaign-id" - } - }, - "required": [ - "CampaignId", - "ApplicationId" - ] - }, - "output": { - "type": "structure", - "members": { - "CampaignResponse": { - "shape": "Sn" - } - }, - "required": [ - "CampaignResponse" - ], - "payload": "CampaignResponse" - } - }, - "DeleteEmailChannel": { - "http": { - "method": "DELETE", - "requestUri": "/v1/apps/{application-id}/channels/email", - "responseCode": 200 - }, - "input": { - "type": "structure", - "members": { - "ApplicationId": { - "location": "uri", - "locationName": "application-id" - } - }, - "required": [ - "ApplicationId" - ] - }, - "output": { - "type": "structure", - "members": { - "EmailChannelResponse": { - "shape": "S21" - } - }, - "required": [ - "EmailChannelResponse" - ], - "payload": "EmailChannelResponse" - } - }, - "DeleteEventStream": { - "http": { - "method": "DELETE", - "requestUri": "/v1/apps/{application-id}/eventstream", - "responseCode": 200 - }, - "input": { - "type": "structure", - "members": { - "ApplicationId": { - "location": "uri", - "locationName": "application-id" - } - }, - "required": [ - "ApplicationId" - ] - }, - "output": { - "type": "structure", - "members": { - "EventStream": { - "shape": "S24" - } - }, - "required": [ - "EventStream" - ], - "payload": "EventStream" - } - }, - "DeleteGcmChannel": { - "http": { - "method": "DELETE", - "requestUri": "/v1/apps/{application-id}/channels/gcm", - "responseCode": 200 - }, - "input": { - "type": "structure", - "members": { - "ApplicationId": { - "location": "uri", - "locationName": "application-id" - } - }, - "required": [ - "ApplicationId" - ] - }, - "output": { - "type": "structure", - "members": { - "GCMChannelResponse": { - "shape": "S27" - } - }, - "required": [ - "GCMChannelResponse" - ], - "payload": "GCMChannelResponse" - } - }, - "DeleteSegment": { - "http": { - "method": "DELETE", - "requestUri": "/v1/apps/{application-id}/segments/{segment-id}", - "responseCode": 200 - }, - "input": { - "type": "structure", - "members": { - "ApplicationId": { - "location": "uri", - "locationName": "application-id" - }, - "SegmentId": { - "location": "uri", - "locationName": "segment-id" - } - }, - "required": [ - "SegmentId", - "ApplicationId" - ] - }, - "output": { - "type": "structure", - "members": { - "SegmentResponse": { - "shape": "S1f" - } - }, - "required": [ - "SegmentResponse" - ], - "payload": "SegmentResponse" - } - }, - "DeleteSmsChannel": { - "http": { - "method": "DELETE", - "requestUri": "/v1/apps/{application-id}/channels/sms", - "responseCode": 200 - }, - "input": { - "type": "structure", - "members": { - "ApplicationId": { - "location": "uri", - "locationName": "application-id" - } - }, - "required": [ - "ApplicationId" - ] - }, - "output": { - "type": "structure", - "members": { - "SMSChannelResponse": { - "shape": "S2c" - } - }, - "required": [ - "SMSChannelResponse" - ], - "payload": "SMSChannelResponse" - } - }, - "GetAdmChannel": { - "http": { - "method": "GET", - "requestUri": "/v1/apps/{application-id}/channels/adm", - "responseCode": 200 - }, - "input": { - "type": "structure", - "members": { - "ApplicationId": { - "location": "uri", - "locationName": "application-id" - } - }, - "required": [ - "ApplicationId" - ] - }, - "output": { - "type": "structure", - "members": { - "ADMChannelResponse": { - "shape": "S1l" - } - }, - "required": [ - "ADMChannelResponse" - ], - "payload": "ADMChannelResponse" - } - }, - "GetApnsChannel": { - "http": { - "method": "GET", - "requestUri": "/v1/apps/{application-id}/channels/apns", - "responseCode": 200 - }, - "input": { - "type": "structure", - "members": { - "ApplicationId": { - "location": "uri", - "locationName": "application-id" - } - }, - "required": [ - "ApplicationId" - ] - }, - "output": { - "type": "structure", - "members": { - "APNSChannelResponse": { - "shape": "S1o" - } - }, - "required": [ - "APNSChannelResponse" - ], - "payload": "APNSChannelResponse" - } - }, - "GetApnsSandboxChannel": { - "http": { - "method": "GET", - "requestUri": "/v1/apps/{application-id}/channels/apns_sandbox", - "responseCode": 200 - }, - "input": { - "type": "structure", - "members": { - "ApplicationId": { - "location": "uri", - "locationName": "application-id" - } - }, - "required": [ - "ApplicationId" - ] - }, - "output": { - "type": "structure", - "members": { - "APNSSandboxChannelResponse": { - "shape": "S1r" - } - }, - "required": [ - "APNSSandboxChannelResponse" - ], - "payload": "APNSSandboxChannelResponse" - } - }, - "GetApp": { - "http": { - "method": "GET", - "requestUri": "/v1/apps/{application-id}", - "responseCode": 200 - }, - "input": { - "type": "structure", - "members": { - "ApplicationId": { - "location": "uri", - "locationName": "application-id" - } - }, - "required": [ - "ApplicationId" - ] - }, - "output": { - "type": "structure", - "members": { - "ApplicationResponse": { - "shape": "S5" - } - }, - "required": [ - "ApplicationResponse" - ], - "payload": "ApplicationResponse" - } - }, - "GetApplicationSettings": { - "http": { - "method": "GET", - "requestUri": "/v1/apps/{application-id}/settings", - "responseCode": 200 - }, - "input": { - "type": "structure", - "members": { - "ApplicationId": { - "location": "uri", - "locationName": "application-id" - } - }, - "required": [ - "ApplicationId" - ] - }, - "output": { - "type": "structure", - "members": { - "ApplicationSettingsResource": { - "shape": "S2n" - } - }, - "required": [ - "ApplicationSettingsResource" - ], - "payload": "ApplicationSettingsResource" - } - }, - "GetApps": { - "http": { - "method": "GET", - "requestUri": "/v1/apps", - "responseCode": 200 - }, - "input": { - "type": "structure", - "members": { - "PageSize": { - "location": "querystring", - "locationName": "page-size" - }, - "Token": { - "location": "querystring", - "locationName": "token" - } - } - }, - "output": { - "type": "structure", - "members": { - "ApplicationsResponse": { - "type": "structure", - "members": { - "Item": { - "type": "list", - "member": { - "shape": "S5" - } - }, - "NextToken": {} - } - } - }, - "required": [ - "ApplicationsResponse" - ], - "payload": "ApplicationsResponse" - } - }, - "GetBaiduChannel": { - "http": { - "method": "GET", - "requestUri": "/v1/apps/{application-id}/channels/baidu", - "responseCode": 200 - }, - "input": { - "type": "structure", - "members": { - "ApplicationId": { - "location": "uri", - "locationName": "application-id" - } - }, - "required": [ - "ApplicationId" - ] - }, - "output": { - "type": "structure", - "members": { - "BaiduChannelResponse": { - "shape": "S1w" - } - }, - "required": [ - "BaiduChannelResponse" - ], - "payload": "BaiduChannelResponse" - } - }, - "GetCampaign": { - "http": { - "method": "GET", - "requestUri": "/v1/apps/{application-id}/campaigns/{campaign-id}", - "responseCode": 200 - }, - "input": { - "type": "structure", - "members": { - "ApplicationId": { - "location": "uri", - "locationName": "application-id" - }, - "CampaignId": { - "location": "uri", - "locationName": "campaign-id" - } - }, - "required": [ - "CampaignId", - "ApplicationId" - ] - }, - "output": { - "type": "structure", - "members": { - "CampaignResponse": { - "shape": "Sn" - } - }, - "required": [ - "CampaignResponse" - ], - "payload": "CampaignResponse" - } - }, - "GetCampaignActivities": { - "http": { - "method": "GET", - "requestUri": "/v1/apps/{application-id}/campaigns/{campaign-id}/activities", - "responseCode": 200 - }, - "input": { - "type": "structure", - "members": { - "ApplicationId": { - "location": "uri", - "locationName": "application-id" - }, - "CampaignId": { - "location": "uri", - "locationName": "campaign-id" - }, - "PageSize": { - "location": "querystring", - "locationName": "page-size" - }, - "Token": { - "location": "querystring", - "locationName": "token" - } - }, - "required": [ - "ApplicationId", - "CampaignId" - ] - }, - "output": { - "type": "structure", - "members": { - "ActivitiesResponse": { - "type": "structure", - "members": { - "Item": { - "type": "list", - "member": { - "type": "structure", - "members": { - "ApplicationId": {}, - "CampaignId": {}, - "End": {}, - "Id": {}, - "Result": {}, - "ScheduledStart": {}, - "Start": {}, - "State": {}, - "SuccessfulEndpointCount": { - "type": "integer" - }, - "TimezonesCompletedCount": { - "type": "integer" - }, - "TimezonesTotalCount": { - "type": "integer" - }, - "TotalEndpointCount": { - "type": "integer" - }, - "TreatmentId": {} - } - } - } - } - } - }, - "required": [ - "ActivitiesResponse" - ], - "payload": "ActivitiesResponse" - } - }, - "GetCampaignVersion": { - "http": { - "method": "GET", - "requestUri": "/v1/apps/{application-id}/campaigns/{campaign-id}/versions/{version}", - "responseCode": 200 - }, - "input": { - "type": "structure", - "members": { - "ApplicationId": { - "location": "uri", - "locationName": "application-id" - }, - "CampaignId": { - "location": "uri", - "locationName": "campaign-id" - }, - "Version": { - "location": "uri", - "locationName": "version" - } - }, - "required": [ - "Version", - "ApplicationId", - "CampaignId" - ] - }, - "output": { - "type": "structure", - "members": { - "CampaignResponse": { - "shape": "Sn" - } - }, - "required": [ - "CampaignResponse" - ], - "payload": "CampaignResponse" - } - }, - "GetCampaignVersions": { - "http": { - "method": "GET", - "requestUri": "/v1/apps/{application-id}/campaigns/{campaign-id}/versions", - "responseCode": 200 - }, - "input": { - "type": "structure", - "members": { - "ApplicationId": { - "location": "uri", - "locationName": "application-id" - }, - "CampaignId": { - "location": "uri", - "locationName": "campaign-id" - }, - "PageSize": { - "location": "querystring", - "locationName": "page-size" - }, - "Token": { - "location": "querystring", - "locationName": "token" - } - }, - "required": [ - "ApplicationId", - "CampaignId" - ] - }, - "output": { - "type": "structure", - "members": { - "CampaignsResponse": { - "shape": "S35" - } - }, - "required": [ - "CampaignsResponse" - ], - "payload": "CampaignsResponse" - } - }, - "GetCampaigns": { - "http": { - "method": "GET", - "requestUri": "/v1/apps/{application-id}/campaigns", - "responseCode": 200 - }, - "input": { - "type": "structure", - "members": { - "ApplicationId": { - "location": "uri", - "locationName": "application-id" - }, - "PageSize": { - "location": "querystring", - "locationName": "page-size" - }, - "Token": { - "location": "querystring", - "locationName": "token" - } - }, - "required": [ - "ApplicationId" - ] - }, - "output": { - "type": "structure", - "members": { - "CampaignsResponse": { - "shape": "S35" - } - }, - "required": [ - "CampaignsResponse" - ], - "payload": "CampaignsResponse" - } - }, - "GetEmailChannel": { - "http": { - "method": "GET", - "requestUri": "/v1/apps/{application-id}/channels/email", - "responseCode": 200 - }, - "input": { - "type": "structure", - "members": { - "ApplicationId": { - "location": "uri", - "locationName": "application-id" - } - }, - "required": [ - "ApplicationId" - ] - }, - "output": { - "type": "structure", - "members": { - "EmailChannelResponse": { - "shape": "S21" - } - }, - "required": [ - "EmailChannelResponse" - ], - "payload": "EmailChannelResponse" - } - }, - "GetEndpoint": { - "http": { - "method": "GET", - "requestUri": "/v1/apps/{application-id}/endpoints/{endpoint-id}", - "responseCode": 200 - }, - "input": { - "type": "structure", - "members": { - "ApplicationId": { - "location": "uri", - "locationName": "application-id" - }, - "EndpointId": { - "location": "uri", - "locationName": "endpoint-id" - } - }, - "required": [ - "ApplicationId", - "EndpointId" - ] - }, - "output": { - "type": "structure", - "members": { - "EndpointResponse": { - "type": "structure", - "members": { - "Address": {}, - "ApplicationId": {}, - "Attributes": { - "shape": "S3e" - }, - "ChannelType": {}, - "CohortId": {}, - "CreationDate": {}, - "Demographic": { - "shape": "S3g" - }, - "EffectiveDate": {}, - "EndpointStatus": {}, - "Id": {}, - "Location": { - "shape": "S3h" - }, - "Metrics": { - "shape": "S3j" - }, - "OptOut": {}, - "RequestId": {}, - "ShardId": {}, - "User": { - "shape": "S3k" - } - } - } - }, - "required": [ - "EndpointResponse" - ], - "payload": "EndpointResponse" - } - }, - "GetEventStream": { - "http": { - "method": "GET", - "requestUri": "/v1/apps/{application-id}/eventstream", - "responseCode": 200 - }, - "input": { - "type": "structure", - "members": { - "ApplicationId": { - "location": "uri", - "locationName": "application-id" - } - }, - "required": [ - "ApplicationId" - ] - }, - "output": { - "type": "structure", - "members": { - "EventStream": { - "shape": "S24" - } - }, - "required": [ - "EventStream" - ], - "payload": "EventStream" - } - }, - "GetGcmChannel": { - "http": { - "method": "GET", - "requestUri": "/v1/apps/{application-id}/channels/gcm", - "responseCode": 200 - }, - "input": { - "type": "structure", - "members": { - "ApplicationId": { - "location": "uri", - "locationName": "application-id" - } - }, - "required": [ - "ApplicationId" - ] - }, - "output": { - "type": "structure", - "members": { - "GCMChannelResponse": { - "shape": "S27" - } - }, - "required": [ - "GCMChannelResponse" - ], - "payload": "GCMChannelResponse" - } - }, - "GetImportJob": { - "http": { - "method": "GET", - "requestUri": "/v1/apps/{application-id}/jobs/import/{job-id}", - "responseCode": 200 - }, - "input": { - "type": "structure", - "members": { - "ApplicationId": { - "location": "uri", - "locationName": "application-id" - }, - "JobId": { - "location": "uri", - "locationName": "job-id" - } - }, - "required": [ - "ApplicationId", - "JobId" - ] - }, - "output": { - "type": "structure", - "members": { - "ImportJobResponse": { - "shape": "Sw" - } - }, - "required": [ - "ImportJobResponse" - ], - "payload": "ImportJobResponse" - } - }, - "GetImportJobs": { - "http": { - "method": "GET", - "requestUri": "/v1/apps/{application-id}/jobs/import", - "responseCode": 200 - }, - "input": { - "type": "structure", - "members": { - "ApplicationId": { - "location": "uri", - "locationName": "application-id" - }, - "PageSize": { - "location": "querystring", - "locationName": "page-size" - }, - "Token": { - "location": "querystring", - "locationName": "token" - } - }, - "required": [ - "ApplicationId" - ] - }, - "output": { - "type": "structure", - "members": { - "ImportJobsResponse": { - "shape": "S3t" - } - }, - "required": [ - "ImportJobsResponse" - ], - "payload": "ImportJobsResponse" - } - }, - "GetSegment": { - "http": { - "method": "GET", - "requestUri": "/v1/apps/{application-id}/segments/{segment-id}", - "responseCode": 200 - }, - "input": { - "type": "structure", - "members": { - "ApplicationId": { - "location": "uri", - "locationName": "application-id" - }, - "SegmentId": { - "location": "uri", - "locationName": "segment-id" - } - }, - "required": [ - "SegmentId", - "ApplicationId" - ] - }, - "output": { - "type": "structure", - "members": { - "SegmentResponse": { - "shape": "S1f" - } - }, - "required": [ - "SegmentResponse" - ], - "payload": "SegmentResponse" - } - }, - "GetSegmentImportJobs": { - "http": { - "method": "GET", - "requestUri": "/v1/apps/{application-id}/segments/{segment-id}/jobs/import", - "responseCode": 200 - }, - "input": { - "type": "structure", - "members": { - "ApplicationId": { - "location": "uri", - "locationName": "application-id" - }, - "PageSize": { - "location": "querystring", - "locationName": "page-size" - }, - "SegmentId": { - "location": "uri", - "locationName": "segment-id" - }, - "Token": { - "location": "querystring", - "locationName": "token" - } - }, - "required": [ - "SegmentId", - "ApplicationId" - ] - }, - "output": { - "type": "structure", - "members": { - "ImportJobsResponse": { - "shape": "S3t" - } - }, - "required": [ - "ImportJobsResponse" - ], - "payload": "ImportJobsResponse" - } - }, - "GetSegmentVersion": { - "http": { - "method": "GET", - "requestUri": "/v1/apps/{application-id}/segments/{segment-id}/versions/{version}", - "responseCode": 200 - }, - "input": { - "type": "structure", - "members": { - "ApplicationId": { - "location": "uri", - "locationName": "application-id" - }, - "SegmentId": { - "location": "uri", - "locationName": "segment-id" - }, - "Version": { - "location": "uri", - "locationName": "version" - } - }, - "required": [ - "SegmentId", - "Version", - "ApplicationId" - ] - }, - "output": { - "type": "structure", - "members": { - "SegmentResponse": { - "shape": "S1f" - } - }, - "required": [ - "SegmentResponse" - ], - "payload": "SegmentResponse" - } - }, - "GetSegmentVersions": { - "http": { - "method": "GET", - "requestUri": "/v1/apps/{application-id}/segments/{segment-id}/versions", - "responseCode": 200 - }, - "input": { - "type": "structure", - "members": { - "ApplicationId": { - "location": "uri", - "locationName": "application-id" - }, - "PageSize": { - "location": "querystring", - "locationName": "page-size" - }, - "SegmentId": { - "location": "uri", - "locationName": "segment-id" - }, - "Token": { - "location": "querystring", - "locationName": "token" - } - }, - "required": [ - "SegmentId", - "ApplicationId" - ] - }, - "output": { - "type": "structure", - "members": { - "SegmentsResponse": { - "shape": "S43" - } - }, - "required": [ - "SegmentsResponse" - ], - "payload": "SegmentsResponse" - } - }, - "GetSegments": { - "http": { - "method": "GET", - "requestUri": "/v1/apps/{application-id}/segments", - "responseCode": 200 - }, - "input": { - "type": "structure", - "members": { - "ApplicationId": { - "location": "uri", - "locationName": "application-id" - }, - "PageSize": { - "location": "querystring", - "locationName": "page-size" - }, - "Token": { - "location": "querystring", - "locationName": "token" - } - }, - "required": [ - "ApplicationId" - ] - }, - "output": { - "type": "structure", - "members": { - "SegmentsResponse": { - "shape": "S43" - } - }, - "required": [ - "SegmentsResponse" - ], - "payload": "SegmentsResponse" - } - }, - "GetSmsChannel": { - "http": { - "method": "GET", - "requestUri": "/v1/apps/{application-id}/channels/sms", - "responseCode": 200 - }, - "input": { - "type": "structure", - "members": { - "ApplicationId": { - "location": "uri", - "locationName": "application-id" - } - }, - "required": [ - "ApplicationId" - ] - }, - "output": { - "type": "structure", - "members": { - "SMSChannelResponse": { - "shape": "S2c" - } - }, - "required": [ - "SMSChannelResponse" - ], - "payload": "SMSChannelResponse" - } - }, - "PutEventStream": { - "http": { - "requestUri": "/v1/apps/{application-id}/eventstream", - "responseCode": 200 - }, - "input": { - "type": "structure", - "members": { - "ApplicationId": { - "location": "uri", - "locationName": "application-id" - }, - "WriteEventStream": { - "type": "structure", - "members": { - "DestinationStreamArn": {}, - "ExternalId": {}, - "RoleArn": {} - } - } - }, - "required": [ - "ApplicationId", - "WriteEventStream" - ], - "payload": "WriteEventStream" - }, - "output": { - "type": "structure", - "members": { - "EventStream": { - "shape": "S24" - } - }, - "required": [ - "EventStream" - ], - "payload": "EventStream" - } - }, - "SendMessages": { - "http": { - "requestUri": "/v1/apps/{application-id}/messages", - "responseCode": 200 - }, - "input": { - "type": "structure", - "members": { - "ApplicationId": { - "location": "uri", - "locationName": "application-id" - }, - "MessageRequest": { - "type": "structure", - "members": { - "Addresses": { - "type": "map", - "key": {}, - "value": { - "type": "structure", - "members": { - "BodyOverride": {}, - "ChannelType": {}, - "Context": { - "shape": "S4g" - }, - "RawContent": {}, - "Substitutions": { - "shape": "S3e" - }, - "TitleOverride": {} - } - } - }, - "Campaign": { - "shape": "S4g" - }, - "Context": { - "shape": "S4g" - }, - "Endpoints": { - "shape": "S4h" - }, - "MessageConfiguration": { - "shape": "S4j" - }, - "RequestId": {} - } - } - }, - "required": [ - "ApplicationId", - "MessageRequest" - ], - "payload": "MessageRequest" - }, - "output": { - "type": "structure", - "members": { - "MessageResponse": { - "type": "structure", - "members": { - "ApplicationId": {}, - "EndpointResult": { - "shape": "S4u" - }, - "RequestId": {}, - "Result": { - "type": "map", - "key": {}, - "value": { - "type": "structure", - "members": { - "DeliveryStatus": {}, - "StatusCode": { - "type": "integer" - }, - "StatusMessage": {}, - "UpdatedToken": {} - } - } - } - } - } - }, - "required": [ - "MessageResponse" - ], - "payload": "MessageResponse" - } - }, - "SendUsersMessages": { - "http": { - "requestUri": "/v1/apps/{application-id}/users-messages", - "responseCode": 200 - }, - "input": { - "type": "structure", - "members": { - "ApplicationId": { - "location": "uri", - "locationName": "application-id" - }, - "SendUsersMessageRequest": { - "type": "structure", - "members": { - "Context": { - "shape": "S4g" - }, - "MessageConfiguration": { - "shape": "S4j" - }, - "RequestId": {}, - "Users": { - "shape": "S4h" - } - } - } - }, - "required": [ - "ApplicationId", - "SendUsersMessageRequest" - ], - "payload": "SendUsersMessageRequest" - }, - "output": { - "type": "structure", - "members": { - "SendUsersMessageResponse": { - "type": "structure", - "members": { - "ApplicationId": {}, - "RequestId": {}, - "Result": { - "type": "map", - "key": {}, - "value": { - "shape": "S4u" - } - } - } - } - }, - "required": [ - "SendUsersMessageResponse" - ], - "payload": "SendUsersMessageResponse" - } - }, - "UpdateAdmChannel": { - "http": { - "method": "PUT", - "requestUri": "/v1/apps/{application-id}/channels/adm", - "responseCode": 200 - }, - "input": { - "type": "structure", - "members": { - "ADMChannelRequest": { - "type": "structure", - "members": { - "ClientId": {}, - "ClientSecret": {}, - "Enabled": { - "type": "boolean" - } - } - }, - "ApplicationId": { - "location": "uri", - "locationName": "application-id" - } - }, - "required": [ - "ApplicationId", - "ADMChannelRequest" - ], - "payload": "ADMChannelRequest" - }, - "output": { - "type": "structure", - "members": { - "ADMChannelResponse": { - "shape": "S1l" - } - }, - "required": [ - "ADMChannelResponse" - ], - "payload": "ADMChannelResponse" - } - }, - "UpdateApnsChannel": { - "http": { - "method": "PUT", - "requestUri": "/v1/apps/{application-id}/channels/apns", - "responseCode": 200 - }, - "input": { - "type": "structure", - "members": { - "APNSChannelRequest": { - "type": "structure", - "members": { - "BundleId": {}, - "Certificate": {}, - "DefaultAuthenticationMethod": {}, - "Enabled": { - "type": "boolean" - }, - "PrivateKey": {}, - "TeamId": {}, - "TokenKey": {}, - "TokenKeyId": {} - } - }, - "ApplicationId": { - "location": "uri", - "locationName": "application-id" - } - }, - "required": [ - "ApplicationId", - "APNSChannelRequest" - ], - "payload": "APNSChannelRequest" - }, - "output": { - "type": "structure", - "members": { - "APNSChannelResponse": { - "shape": "S1o" - } - }, - "required": [ - "APNSChannelResponse" - ], - "payload": "APNSChannelResponse" - } - }, - "UpdateApnsSandboxChannel": { - "http": { - "method": "PUT", - "requestUri": "/v1/apps/{application-id}/channels/apns_sandbox", - "responseCode": 200 - }, - "input": { - "type": "structure", - "members": { - "APNSSandboxChannelRequest": { - "type": "structure", - "members": { - "BundleId": {}, - "Certificate": {}, - "DefaultAuthenticationMethod": {}, - "Enabled": { - "type": "boolean" - }, - "PrivateKey": {}, - "TeamId": {}, - "TokenKey": {}, - "TokenKeyId": {} - } - }, - "ApplicationId": { - "location": "uri", - "locationName": "application-id" - } - }, - "required": [ - "ApplicationId", - "APNSSandboxChannelRequest" - ], - "payload": "APNSSandboxChannelRequest" - }, - "output": { - "type": "structure", - "members": { - "APNSSandboxChannelResponse": { - "shape": "S1r" - } - }, - "required": [ - "APNSSandboxChannelResponse" - ], - "payload": "APNSSandboxChannelResponse" - } - }, - "UpdateApplicationSettings": { - "http": { - "method": "PUT", - "requestUri": "/v1/apps/{application-id}/settings", - "responseCode": 200 - }, - "input": { - "type": "structure", - "members": { - "ApplicationId": { - "location": "uri", - "locationName": "application-id" - }, - "WriteApplicationSettingsRequest": { - "type": "structure", - "members": { - "Limits": { - "shape": "Sl" - }, - "QuietTime": { - "shape": "Sj" - } - } - } - }, - "required": [ - "ApplicationId", - "WriteApplicationSettingsRequest" - ], - "payload": "WriteApplicationSettingsRequest" - }, - "output": { - "type": "structure", - "members": { - "ApplicationSettingsResource": { - "shape": "S2n" - } - }, - "required": [ - "ApplicationSettingsResource" - ], - "payload": "ApplicationSettingsResource" - } - }, - "UpdateBaiduChannel": { - "http": { - "method": "PUT", - "requestUri": "/v1/apps/{application-id}/channels/baidu", - "responseCode": 200 - }, - "input": { - "type": "structure", - "members": { - "ApplicationId": { - "location": "uri", - "locationName": "application-id" - }, - "BaiduChannelRequest": { - "type": "structure", - "members": { - "ApiKey": {}, - "Enabled": { - "type": "boolean" - }, - "SecretKey": {} - } - } - }, - "required": [ - "ApplicationId", - "BaiduChannelRequest" - ], - "payload": "BaiduChannelRequest" - }, - "output": { - "type": "structure", - "members": { - "BaiduChannelResponse": { - "shape": "S1w" - } - }, - "required": [ - "BaiduChannelResponse" - ], - "payload": "BaiduChannelResponse" - } - }, - "UpdateCampaign": { - "http": { - "method": "PUT", - "requestUri": "/v1/apps/{application-id}/campaigns/{campaign-id}", - "responseCode": 200 - }, - "input": { - "type": "structure", - "members": { - "ApplicationId": { - "location": "uri", - "locationName": "application-id" - }, - "CampaignId": { - "location": "uri", - "locationName": "campaign-id" - }, - "WriteCampaignRequest": { - "shape": "S7" - } - }, - "required": [ - "CampaignId", - "ApplicationId", - "WriteCampaignRequest" - ], - "payload": "WriteCampaignRequest" - }, - "output": { - "type": "structure", - "members": { - "CampaignResponse": { - "shape": "Sn" - } - }, - "required": [ - "CampaignResponse" - ], - "payload": "CampaignResponse" - } - }, - "UpdateEmailChannel": { - "http": { - "method": "PUT", - "requestUri": "/v1/apps/{application-id}/channels/email", - "responseCode": 200 - }, - "input": { - "type": "structure", - "members": { - "ApplicationId": { - "location": "uri", - "locationName": "application-id" - }, - "EmailChannelRequest": { - "type": "structure", - "members": { - "Enabled": { - "type": "boolean" - }, - "FromAddress": {}, - "Identity": {}, - "RoleArn": {} - } - } - }, - "required": [ - "ApplicationId", - "EmailChannelRequest" - ], - "payload": "EmailChannelRequest" - }, - "output": { - "type": "structure", - "members": { - "EmailChannelResponse": { - "shape": "S21" - } - }, - "required": [ - "EmailChannelResponse" - ], - "payload": "EmailChannelResponse" - } - }, - "UpdateEndpoint": { - "http": { - "method": "PUT", - "requestUri": "/v1/apps/{application-id}/endpoints/{endpoint-id}", - "responseCode": 202 - }, - "input": { - "type": "structure", - "members": { - "ApplicationId": { - "location": "uri", - "locationName": "application-id" - }, - "EndpointId": { - "location": "uri", - "locationName": "endpoint-id" - }, - "EndpointRequest": { - "type": "structure", - "members": { - "Address": {}, - "Attributes": { - "shape": "S3e" - }, - "ChannelType": {}, - "Demographic": { - "shape": "S3g" - }, - "EffectiveDate": {}, - "EndpointStatus": {}, - "Location": { - "shape": "S3h" - }, - "Metrics": { - "shape": "S3j" - }, - "OptOut": {}, - "RequestId": {}, - "User": { - "shape": "S3k" - } - } - } - }, - "required": [ - "ApplicationId", - "EndpointId", - "EndpointRequest" - ], - "payload": "EndpointRequest" - }, - "output": { - "type": "structure", - "members": { - "MessageBody": { - "shape": "S5r" - } - }, - "required": [ - "MessageBody" - ], - "payload": "MessageBody" - } - }, - "UpdateEndpointsBatch": { - "http": { - "method": "PUT", - "requestUri": "/v1/apps/{application-id}/endpoints", - "responseCode": 202 - }, - "input": { - "type": "structure", - "members": { - "ApplicationId": { - "location": "uri", - "locationName": "application-id" - }, - "EndpointBatchRequest": { - "type": "structure", - "members": { - "Item": { - "type": "list", - "member": { - "type": "structure", - "members": { - "Address": {}, - "Attributes": { - "shape": "S3e" - }, - "ChannelType": {}, - "Demographic": { - "shape": "S3g" - }, - "EffectiveDate": {}, - "EndpointStatus": {}, - "Id": {}, - "Location": { - "shape": "S3h" - }, - "Metrics": { - "shape": "S3j" - }, - "OptOut": {}, - "RequestId": {}, - "User": { - "shape": "S3k" - } - } - } - } - } - } - }, - "required": [ - "ApplicationId", - "EndpointBatchRequest" - ], - "payload": "EndpointBatchRequest" - }, - "output": { - "type": "structure", - "members": { - "MessageBody": { - "shape": "S5r" - } - }, - "required": [ - "MessageBody" - ], - "payload": "MessageBody" - } - }, - "UpdateGcmChannel": { - "http": { - "method": "PUT", - "requestUri": "/v1/apps/{application-id}/channels/gcm", - "responseCode": 200 - }, - "input": { - "type": "structure", - "members": { - "ApplicationId": { - "location": "uri", - "locationName": "application-id" - }, - "GCMChannelRequest": { - "type": "structure", - "members": { - "ApiKey": {}, - "Enabled": { - "type": "boolean" - } - } - } - }, - "required": [ - "ApplicationId", - "GCMChannelRequest" - ], - "payload": "GCMChannelRequest" - }, - "output": { - "type": "structure", - "members": { - "GCMChannelResponse": { - "shape": "S27" - } - }, - "required": [ - "GCMChannelResponse" - ], - "payload": "GCMChannelResponse" - } - }, - "UpdateSegment": { - "http": { - "method": "PUT", - "requestUri": "/v1/apps/{application-id}/segments/{segment-id}", - "responseCode": 200 - }, - "input": { - "type": "structure", - "members": { - "ApplicationId": { - "location": "uri", - "locationName": "application-id" - }, - "SegmentId": { - "location": "uri", - "locationName": "segment-id" - }, - "WriteSegmentRequest": { - "shape": "S11" - } - }, - "required": [ - "SegmentId", - "ApplicationId", - "WriteSegmentRequest" - ], - "payload": "WriteSegmentRequest" - }, - "output": { - "type": "structure", - "members": { - "SegmentResponse": { - "shape": "S1f" - } - }, - "required": [ - "SegmentResponse" - ], - "payload": "SegmentResponse" - } - }, - "UpdateSmsChannel": { - "http": { - "method": "PUT", - "requestUri": "/v1/apps/{application-id}/channels/sms", - "responseCode": 200 - }, - "input": { - "type": "structure", - "members": { - "ApplicationId": { - "location": "uri", - "locationName": "application-id" - }, - "SMSChannelRequest": { - "type": "structure", - "members": { - "Enabled": { - "type": "boolean" - }, - "SenderId": {}, - "ShortCode": {} - } - } - }, - "required": [ - "ApplicationId", - "SMSChannelRequest" - ], - "payload": "SMSChannelRequest" - }, - "output": { - "type": "structure", - "members": { - "SMSChannelResponse": { - "shape": "S2c" - } - }, - "required": [ - "SMSChannelResponse" - ], - "payload": "SMSChannelResponse" - } - } - }, - "shapes": { - "S5": { - "type": "structure", - "members": { - "Id": {}, - "Name": {} - } - }, - "S7": { - "type": "structure", - "members": { - "AdditionalTreatments": { - "type": "list", - "member": { - "type": "structure", - "members": { - "MessageConfiguration": { - "shape": "Sa" - }, - "Schedule": { - "shape": "Sh" - }, - "SizePercent": { - "type": "integer" - }, - "TreatmentDescription": {}, - "TreatmentName": {} - } - } - }, - "Description": {}, - "HoldoutPercent": { - "type": "integer" - }, - "IsPaused": { - "type": "boolean" - }, - "Limits": { - "shape": "Sl" - }, - "MessageConfiguration": { - "shape": "Sa" - }, - "Name": {}, - "Schedule": { - "shape": "Sh" - }, - "SegmentId": {}, - "SegmentVersion": { - "type": "integer" - }, - "Trace": { - "type": "boolean" - }, - "TreatmentDescription": {}, - "TreatmentName": {} - } - }, - "Sa": { - "type": "structure", - "members": { - "APNSMessage": { - "shape": "Sb" - }, - "DefaultMessage": { - "shape": "Sb" - }, - "EmailMessage": { - "type": "structure", - "members": { - "Body": {}, - "FromAddress": {}, - "HtmlBody": {}, - "Title": {} - } - }, - "GCMMessage": { - "shape": "Sb" - }, - "SMSMessage": { - "type": "structure", - "members": { - "Body": {}, - "MessageType": {}, - "SenderId": {} - } - } - } - }, - "Sb": { - "type": "structure", - "members": { - "Action": {}, - "Body": {}, - "ImageIconUrl": {}, - "ImageSmallIconUrl": {}, - "ImageUrl": {}, - "JsonBody": {}, - "MediaUrl": {}, - "RawContent": {}, - "SilentPush": { - "type": "boolean" - }, - "Title": {}, - "Url": {} - } - }, - "Sh": { - "type": "structure", - "members": { - "EndTime": {}, - "Frequency": {}, - "IsLocalTime": { - "type": "boolean" - }, - "QuietTime": { - "shape": "Sj" - }, - "StartTime": {}, - "Timezone": {} - } - }, - "Sj": { - "type": "structure", - "members": { - "End": {}, - "Start": {} - } - }, - "Sl": { - "type": "structure", - "members": { - "Daily": { - "type": "integer" - }, - "MaximumDuration": { - "type": "integer" - }, - "MessagesPerSecond": { - "type": "integer" - }, - "Total": { - "type": "integer" - } - } - }, - "Sn": { - "type": "structure", - "members": { - "AdditionalTreatments": { - "type": "list", - "member": { - "type": "structure", - "members": { - "Id": {}, - "MessageConfiguration": { - "shape": "Sa" - }, - "Schedule": { - "shape": "Sh" - }, - "SizePercent": { - "type": "integer" - }, - "State": { - "shape": "Sq" - }, - "TreatmentDescription": {}, - "TreatmentName": {} - } - } - }, - "ApplicationId": {}, - "CreationDate": {}, - "DefaultState": { - "shape": "Sq" - }, - "Description": {}, - "HoldoutPercent": { - "type": "integer" - }, - "Id": {}, - "IsPaused": { - "type": "boolean" - }, - "LastModifiedDate": {}, - "Limits": { - "shape": "Sl" - }, - "MessageConfiguration": { - "shape": "Sa" - }, - "Name": {}, - "Schedule": { - "shape": "Sh" - }, - "SegmentId": {}, - "SegmentVersion": { - "type": "integer" - }, - "State": { - "shape": "Sq" - }, - "TreatmentDescription": {}, - "TreatmentName": {}, - "Version": { - "type": "integer" - } - } - }, - "Sq": { - "type": "structure", - "members": { - "CampaignStatus": {} - } - }, - "Sw": { - "type": "structure", - "members": { - "ApplicationId": {}, - "CompletedPieces": { - "type": "integer" - }, - "CompletionDate": {}, - "CreationDate": {}, - "Definition": { - "type": "structure", - "members": { - "DefineSegment": { - "type": "boolean" - }, - "ExternalId": {}, - "Format": {}, - "RegisterEndpoints": { - "type": "boolean" - }, - "RoleArn": {}, - "S3Url": {}, - "SegmentId": {}, - "SegmentName": {} - } - }, - "FailedPieces": { - "type": "integer" - }, - "Failures": { - "shape": "Sy" - }, - "Id": {}, - "JobStatus": {}, - "TotalFailures": { - "type": "integer" - }, - "TotalPieces": { - "type": "integer" - }, - "TotalProcessed": { - "type": "integer" - }, - "Type": {} - } - }, - "Sy": { - "type": "list", - "member": {} - }, - "S11": { - "type": "structure", - "members": { - "Dimensions": { - "shape": "S12" - }, - "Name": {} - } - }, - "S12": { - "type": "structure", - "members": { - "Attributes": { - "shape": "S13" - }, - "Behavior": { - "type": "structure", - "members": { - "Recency": { - "type": "structure", - "members": { - "Duration": {}, - "RecencyType": {} - } - } - } - }, - "Demographic": { - "type": "structure", - "members": { - "AppVersion": { - "shape": "S1b" - }, - "Channel": { - "shape": "S1b" - }, - "DeviceType": { - "shape": "S1b" - }, - "Make": { - "shape": "S1b" - }, - "Model": { - "shape": "S1b" - }, - "Platform": { - "shape": "S1b" - } - } - }, - "Location": { - "type": "structure", - "members": { - "Country": { - "shape": "S1b" - } - } - }, - "UserAttributes": { - "shape": "S13" - } - } - }, - "S13": { - "type": "map", - "key": {}, - "value": { - "type": "structure", - "members": { - "AttributeType": {}, - "Values": { - "shape": "Sy" - } - } - } - }, - "S1b": { - "type": "structure", - "members": { - "DimensionType": {}, - "Values": { - "shape": "Sy" - } - } - }, - "S1f": { - "type": "structure", - "members": { - "ApplicationId": {}, - "CreationDate": {}, - "Dimensions": { - "shape": "S12" - }, - "Id": {}, - "ImportDefinition": { - "type": "structure", - "members": { - "ChannelCounts": { - "type": "map", - "key": {}, - "value": { - "type": "integer" - } - }, - "ExternalId": {}, - "Format": {}, - "RoleArn": {}, - "S3Url": {}, - "Size": { - "type": "integer" - } - } - }, - "LastModifiedDate": {}, - "Name": {}, - "SegmentType": {}, - "Version": { - "type": "integer" - } - } - }, - "S1l": { - "type": "structure", - "members": { - "ApplicationId": {}, - "CreationDate": {}, - "Enabled": { - "type": "boolean" - }, - "Id": {}, - "IsArchived": { - "type": "boolean" - }, - "LastModifiedBy": {}, - "LastModifiedDate": {}, - "Platform": {}, - "Version": { - "type": "integer" - } - } - }, - "S1o": { - "type": "structure", - "members": { - "ApplicationId": {}, - "CreationDate": {}, - "Enabled": { - "type": "boolean" - }, - "Id": {}, - "IsArchived": { - "type": "boolean" - }, - "LastModifiedBy": {}, - "LastModifiedDate": {}, - "Platform": {}, - "Version": { - "type": "integer" - } - } - }, - "S1r": { - "type": "structure", - "members": { - "ApplicationId": {}, - "CreationDate": {}, - "Enabled": { - "type": "boolean" - }, - "Id": {}, - "IsArchived": { - "type": "boolean" - }, - "LastModifiedBy": {}, - "LastModifiedDate": {}, - "Platform": {}, - "Version": { - "type": "integer" - } - } - }, - "S1w": { - "type": "structure", - "members": { - "ApplicationId": {}, - "CreationDate": {}, - "Credential": {}, - "Enabled": { - "type": "boolean" - }, - "Id": {}, - "IsArchived": { - "type": "boolean" - }, - "LastModifiedBy": {}, - "LastModifiedDate": {}, - "Platform": {}, - "Version": { - "type": "integer" - } - } - }, - "S21": { - "type": "structure", - "members": { - "ApplicationId": {}, - "CreationDate": {}, - "Enabled": { - "type": "boolean" - }, - "FromAddress": {}, - "Id": {}, - "Identity": {}, - "IsArchived": { - "type": "boolean" - }, - "LastModifiedBy": {}, - "LastModifiedDate": {}, - "Platform": {}, - "RoleArn": {}, - "Version": { - "type": "integer" - } - } - }, - "S24": { - "type": "structure", - "members": { - "ApplicationId": {}, - "DestinationStreamArn": {}, - "ExternalId": {}, - "LastModifiedDate": {}, - "LastUpdatedBy": {}, - "RoleArn": {} - } - }, - "S27": { - "type": "structure", - "members": { - "ApplicationId": {}, - "CreationDate": {}, - "Credential": {}, - "Enabled": { - "type": "boolean" - }, - "Id": {}, - "IsArchived": { - "type": "boolean" - }, - "LastModifiedBy": {}, - "LastModifiedDate": {}, - "Platform": {}, - "Version": { - "type": "integer" - } - } - }, - "S2c": { - "type": "structure", - "members": { - "ApplicationId": {}, - "CreationDate": {}, - "Enabled": { - "type": "boolean" - }, - "Id": {}, - "IsArchived": { - "type": "boolean" - }, - "LastModifiedBy": {}, - "LastModifiedDate": {}, - "Platform": {}, - "SenderId": {}, - "ShortCode": {}, - "Version": { - "type": "integer" - } - } - }, - "S2n": { - "type": "structure", - "members": { - "ApplicationId": {}, - "LastModifiedDate": {}, - "Limits": { - "shape": "Sl" - }, - "QuietTime": { - "shape": "Sj" - } - } - }, - "S35": { - "type": "structure", - "members": { - "Item": { - "type": "list", - "member": { - "shape": "Sn" - } - }, - "NextToken": {} - } - }, - "S3e": { - "type": "map", - "key": {}, - "value": { - "shape": "Sy" - } - }, - "S3g": { - "type": "structure", - "members": { - "AppVersion": {}, - "Locale": {}, - "Make": {}, - "Model": {}, - "ModelVersion": {}, - "Platform": {}, - "PlatformVersion": {}, - "Timezone": {} - } - }, - "S3h": { - "type": "structure", - "members": { - "City": {}, - "Country": {}, - "Latitude": { - "type": "double" - }, - "Longitude": { - "type": "double" - }, - "PostalCode": {}, - "Region": {} - } - }, - "S3j": { - "type": "map", - "key": {}, - "value": { - "type": "double" - } - }, - "S3k": { - "type": "structure", - "members": { - "UserAttributes": { - "shape": "S3e" - }, - "UserId": {} - } - }, - "S3t": { - "type": "structure", - "members": { - "Item": { - "type": "list", - "member": { - "shape": "Sw" - } - }, - "NextToken": {} - } - }, - "S43": { - "type": "structure", - "members": { - "Item": { - "type": "list", - "member": { - "shape": "S1f" - } - }, - "NextToken": {} - } - }, - "S4g": { - "type": "map", - "key": {}, - "value": {} - }, - "S4h": { - "type": "map", - "key": {}, - "value": { - "type": "structure", - "members": { - "BodyOverride": {}, - "Context": { - "shape": "S4g" - }, - "RawContent": {}, - "Substitutions": { - "shape": "S3e" - }, - "TitleOverride": {} - } - } - }, - "S4j": { - "type": "structure", - "members": { - "ADMMessage": { - "type": "structure", - "members": { - "Action": {}, - "Body": {}, - "ConsolidationKey": {}, - "Data": { - "shape": "S4g" - }, - "ExpiresAfter": {}, - "IconReference": {}, - "ImageIconUrl": {}, - "ImageUrl": {}, - "JsonData": {}, - "MD5": {}, - "RawContent": {}, - "SilentPush": { - "type": "boolean" - }, - "SmallImageIconUrl": {}, - "Sound": {}, - "Substitutions": { - "shape": "S3e" - }, - "Title": {}, - "Url": {} - } - }, - "APNSMessage": { - "type": "structure", - "members": { - "Action": {}, - "Badge": { - "type": "integer" - }, - "Body": {}, - "Category": {}, - "Data": { - "shape": "S4g" - }, - "JsonData": {}, - "MediaUrl": {}, - "PreferredAuthenticationMethod": {}, - "RawContent": {}, - "SilentPush": { - "type": "boolean" - }, - "Sound": {}, - "Substitutions": { - "shape": "S3e" - }, - "ThreadId": {}, - "Title": {}, - "Url": {} - } - }, - "BaiduMessage": { - "type": "structure", - "members": { - "Action": {}, - "Body": {}, - "Data": { - "shape": "S4g" - }, - "IconReference": {}, - "ImageIconUrl": {}, - "ImageUrl": {}, - "JsonData": {}, - "RawContent": {}, - "SilentPush": { - "type": "boolean" - }, - "SmallImageIconUrl": {}, - "Sound": {}, - "Substitutions": { - "shape": "S3e" - }, - "Title": {}, - "Url": {} - } - }, - "DefaultMessage": { - "type": "structure", - "members": { - "Body": {}, - "Substitutions": { - "shape": "S3e" - } - } - }, - "DefaultPushNotificationMessage": { - "type": "structure", - "members": { - "Action": {}, - "Body": {}, - "Data": { - "shape": "S4g" - }, - "JsonData": {}, - "SilentPush": { - "type": "boolean" - }, - "Substitutions": { - "shape": "S3e" - }, - "Title": {}, - "Url": {} - } - }, - "EmailMessage": { - "type": "structure", - "members": { - "Body": {}, - "FromAddress": {}, - "HtmlBody": {}, - "Substitutions": { - "shape": "S3e" - }, - "TemplateArn": {}, - "Title": {} - } - }, - "GCMMessage": { - "type": "structure", - "members": { - "Action": {}, - "Body": {}, - "CollapseKey": {}, - "Data": { - "shape": "S4g" - }, - "IconReference": {}, - "ImageIconUrl": {}, - "ImageUrl": {}, - "JsonData": {}, - "RawContent": {}, - "RestrictedPackageName": {}, - "SilentPush": { - "type": "boolean" - }, - "SmallImageIconUrl": {}, - "Sound": {}, - "Substitutions": { - "shape": "S3e" - }, - "Title": {}, - "Url": {} - } - }, - "SMSMessage": { - "type": "structure", - "members": { - "Body": {}, - "MessageType": {}, - "SenderId": {}, - "Substitutions": { - "shape": "S3e" - } - } - } - } - }, - "S4u": { - "type": "map", - "key": {}, - "value": { - "type": "structure", - "members": { - "Address": {}, - "DeliveryStatus": {}, - "StatusCode": { - "type": "integer" - }, - "StatusMessage": {}, - "UpdatedToken": {} - } - } - }, - "S5r": { - "type": "structure", - "members": { - "Message": {}, - "RequestID": {} - } - } - } -} \ No newline at end of file diff --git a/workshops/monte-carlo-on-ec2-spot-fleet/src/web/node_modules/aws-sdk/apis/polly-2016-06-10.examples.json b/workshops/monte-carlo-on-ec2-spot-fleet/src/web/node_modules/aws-sdk/apis/polly-2016-06-10.examples.json deleted file mode 100644 index 38205dbe..00000000 --- a/workshops/monte-carlo-on-ec2-spot-fleet/src/web/node_modules/aws-sdk/apis/polly-2016-06-10.examples.json +++ /dev/null @@ -1,171 +0,0 @@ -{ - "version": "1.0", - "examples": { - "DeleteLexicon": [ - { - "input": { - "Name": "example" - }, - "output": { - }, - "comments": { - "input": { - }, - "output": { - } - }, - "description": "Deletes a specified pronunciation lexicon stored in an AWS Region.", - "id": "to-delete-a-lexicon-1481922498332", - "title": "To delete a lexicon" - } - ], - "DescribeVoices": [ - { - "input": { - "LanguageCode": "en-GB" - }, - "output": { - "Voices": [ - { - "Gender": "Female", - "Id": "Emma", - "LanguageCode": "en-GB", - "LanguageName": "British English", - "Name": "Emma" - }, - { - "Gender": "Male", - "Id": "Brian", - "LanguageCode": "en-GB", - "LanguageName": "British English", - "Name": "Brian" - }, - { - "Gender": "Female", - "Id": "Amy", - "LanguageCode": "en-GB", - "LanguageName": "British English", - "Name": "Amy" - } - ] - }, - "comments": { - "input": { - }, - "output": { - } - }, - "description": "Returns the list of voices that are available for use when requesting speech synthesis. Displayed languages are those within the specified language code. If no language code is specified, voices for all available languages are displayed.", - "id": "to-describe-available-voices-1482180557753", - "title": "To describe available voices" - } - ], - "GetLexicon": [ - { - "input": { - "Name": "" - }, - "output": { - "Lexicon": { - "Content": "\r\n\r\n \r\n W3C\r\n World Wide Web Consortium\r\n \r\n", - "Name": "example" - }, - "LexiconAttributes": { - "Alphabet": "ipa", - "LanguageCode": "en-US", - "LastModified": 1478542980.117, - "LexemesCount": 1, - "LexiconArn": "arn:aws:polly:us-east-1:123456789012:lexicon/example", - "Size": 503 - } - }, - "comments": { - "input": { - }, - "output": { - } - }, - "description": "Returns the content of the specified pronunciation lexicon stored in an AWS Region.", - "id": "to-retrieve-a-lexicon-1481912870836", - "title": "To retrieve a lexicon" - } - ], - "ListLexicons": [ - { - "input": { - }, - "output": { - "Lexicons": [ - { - "Attributes": { - "Alphabet": "ipa", - "LanguageCode": "en-US", - "LastModified": 1478542980.117, - "LexemesCount": 1, - "LexiconArn": "arn:aws:polly:us-east-1:123456789012:lexicon/example", - "Size": 503 - }, - "Name": "example" - } - ] - }, - "comments": { - "input": { - }, - "output": { - } - }, - "description": "Returns a list of pronunciation lexicons stored in an AWS Region.", - "id": "to-list-all-lexicons-in-a-region-1481842106487", - "title": "To list all lexicons in a region" - } - ], - "PutLexicon": [ - { - "input": { - "Content": "file://example.pls", - "Name": "W3C" - }, - "output": { - }, - "comments": { - "input": { - }, - "output": { - } - }, - "description": "Stores a pronunciation lexicon in an AWS Region.", - "id": "to-save-a-lexicon-1482272584088", - "title": "To save a lexicon" - } - ], - "SynthesizeSpeech": [ - { - "input": { - "LexiconNames": [ - "example" - ], - "OutputFormat": "mp3", - "SampleRate": "8000", - "Text": "All Gaul is divided into three parts", - "TextType": "text", - "VoiceId": "Joanna" - }, - "output": { - "AudioStream": "TEXT", - "ContentType": "audio/mpeg", - "RequestCharacters": 37 - }, - "comments": { - "input": { - }, - "output": { - } - }, - "description": "Synthesizes plain text or SSML into a file of human-like speech.", - "id": "to-synthesize-speech-1482186064046", - "title": "To synthesize speech" - } - ] - } -} diff --git a/workshops/monte-carlo-on-ec2-spot-fleet/src/web/node_modules/aws-sdk/apis/polly-2016-06-10.min.json b/workshops/monte-carlo-on-ec2-spot-fleet/src/web/node_modules/aws-sdk/apis/polly-2016-06-10.min.json deleted file mode 100644 index a0ea47b1..00000000 --- a/workshops/monte-carlo-on-ec2-spot-fleet/src/web/node_modules/aws-sdk/apis/polly-2016-06-10.min.json +++ /dev/null @@ -1,248 +0,0 @@ -{ - "version": "2.0", - "metadata": { - "apiVersion": "2016-06-10", - "endpointPrefix": "polly", - "protocol": "rest-json", - "serviceFullName": "Amazon Polly", - "signatureVersion": "v4", - "uid": "polly-2016-06-10" - }, - "operations": { - "DeleteLexicon": { - "http": { - "method": "DELETE", - "requestUri": "/v1/lexicons/{LexiconName}", - "responseCode": 200 - }, - "input": { - "type": "structure", - "required": [ - "Name" - ], - "members": { - "Name": { - "shape": "S2", - "location": "uri", - "locationName": "LexiconName" - } - } - }, - "output": { - "type": "structure", - "members": {} - } - }, - "DescribeVoices": { - "http": { - "method": "GET", - "requestUri": "/v1/voices", - "responseCode": 200 - }, - "input": { - "type": "structure", - "members": { - "LanguageCode": { - "location": "querystring", - "locationName": "LanguageCode" - }, - "NextToken": { - "location": "querystring", - "locationName": "NextToken" - } - } - }, - "output": { - "type": "structure", - "members": { - "Voices": { - "type": "list", - "member": { - "type": "structure", - "members": { - "Gender": {}, - "Id": {}, - "LanguageCode": {}, - "LanguageName": {}, - "Name": {} - } - } - }, - "NextToken": {} - } - } - }, - "GetLexicon": { - "http": { - "method": "GET", - "requestUri": "/v1/lexicons/{LexiconName}", - "responseCode": 200 - }, - "input": { - "type": "structure", - "required": [ - "Name" - ], - "members": { - "Name": { - "shape": "S2", - "location": "uri", - "locationName": "LexiconName" - } - } - }, - "output": { - "type": "structure", - "members": { - "Lexicon": { - "type": "structure", - "members": { - "Content": {}, - "Name": { - "shape": "S2" - } - } - }, - "LexiconAttributes": { - "shape": "Si" - } - } - } - }, - "ListLexicons": { - "http": { - "method": "GET", - "requestUri": "/v1/lexicons", - "responseCode": 200 - }, - "input": { - "type": "structure", - "members": { - "NextToken": { - "location": "querystring", - "locationName": "NextToken" - } - } - }, - "output": { - "type": "structure", - "members": { - "Lexicons": { - "type": "list", - "member": { - "type": "structure", - "members": { - "Name": { - "shape": "S2" - }, - "Attributes": { - "shape": "Si" - } - } - } - }, - "NextToken": {} - } - } - }, - "PutLexicon": { - "http": { - "method": "PUT", - "requestUri": "/v1/lexicons/{LexiconName}", - "responseCode": 200 - }, - "input": { - "type": "structure", - "required": [ - "Name", - "Content" - ], - "members": { - "Name": { - "shape": "S2", - "location": "uri", - "locationName": "LexiconName" - }, - "Content": {} - } - }, - "output": { - "type": "structure", - "members": {} - } - }, - "SynthesizeSpeech": { - "http": { - "requestUri": "/v1/speech", - "responseCode": 200 - }, - "input": { - "type": "structure", - "required": [ - "OutputFormat", - "Text", - "VoiceId" - ], - "members": { - "LexiconNames": { - "type": "list", - "member": { - "shape": "S2" - } - }, - "OutputFormat": {}, - "SampleRate": {}, - "SpeechMarkTypes": { - "type": "list", - "member": {} - }, - "Text": {}, - "TextType": {}, - "VoiceId": {} - } - }, - "output": { - "type": "structure", - "members": { - "AudioStream": { - "type": "blob", - "streaming": true - }, - "ContentType": { - "location": "header", - "locationName": "Content-Type" - }, - "RequestCharacters": { - "location": "header", - "locationName": "x-amzn-RequestCharacters", - "type": "integer" - } - }, - "payload": "AudioStream" - } - } - }, - "shapes": { - "S2": { - "type": "string", - "sensitive": true - }, - "Si": { - "type": "structure", - "members": { - "Alphabet": {}, - "LanguageCode": {}, - "LastModified": { - "type": "timestamp" - }, - "LexiconArn": {}, - "LexemesCount": { - "type": "integer" - }, - "Size": { - "type": "integer" - } - } - } - } -} \ No newline at end of file diff --git a/workshops/monte-carlo-on-ec2-spot-fleet/src/web/node_modules/aws-sdk/apis/polly-2016-06-10.paginators.json b/workshops/monte-carlo-on-ec2-spot-fleet/src/web/node_modules/aws-sdk/apis/polly-2016-06-10.paginators.json deleted file mode 100644 index 5677bd8e..00000000 --- a/workshops/monte-carlo-on-ec2-spot-fleet/src/web/node_modules/aws-sdk/apis/polly-2016-06-10.paginators.json +++ /dev/null @@ -1,4 +0,0 @@ -{ - "pagination": { - } -} diff --git a/workshops/monte-carlo-on-ec2-spot-fleet/src/web/node_modules/aws-sdk/apis/rds-2013-01-10.examples.json b/workshops/monte-carlo-on-ec2-spot-fleet/src/web/node_modules/aws-sdk/apis/rds-2013-01-10.examples.json deleted file mode 100644 index 0ea7e3b0..00000000 --- a/workshops/monte-carlo-on-ec2-spot-fleet/src/web/node_modules/aws-sdk/apis/rds-2013-01-10.examples.json +++ /dev/null @@ -1,5 +0,0 @@ -{ - "version": "1.0", - "examples": { - } -} diff --git a/workshops/monte-carlo-on-ec2-spot-fleet/src/web/node_modules/aws-sdk/apis/rds-2013-01-10.min.json b/workshops/monte-carlo-on-ec2-spot-fleet/src/web/node_modules/aws-sdk/apis/rds-2013-01-10.min.json deleted file mode 100644 index d000f795..00000000 --- a/workshops/monte-carlo-on-ec2-spot-fleet/src/web/node_modules/aws-sdk/apis/rds-2013-01-10.min.json +++ /dev/null @@ -1,1896 +0,0 @@ -{ - "version": "2.0", - "metadata": { - "apiVersion": "2013-01-10", - "endpointPrefix": "rds", - "protocol": "query", - "serviceAbbreviation": "Amazon RDS", - "serviceFullName": "Amazon Relational Database Service", - "signatureVersion": "v4", - "uid": "rds-2013-01-10", - "xmlNamespace": "http://rds.amazonaws.com/doc/2013-01-10/" - }, - "operations": { - "AddSourceIdentifierToSubscription": { - "input": { - "type": "structure", - "required": [ - "SubscriptionName", - "SourceIdentifier" - ], - "members": { - "SubscriptionName": {}, - "SourceIdentifier": {} - } - }, - "output": { - "resultWrapper": "AddSourceIdentifierToSubscriptionResult", - "type": "structure", - "members": { - "EventSubscription": { - "shape": "S4" - } - } - } - }, - "AddTagsToResource": { - "input": { - "type": "structure", - "required": [ - "ResourceName", - "Tags" - ], - "members": { - "ResourceName": {}, - "Tags": { - "shape": "S9" - } - } - } - }, - "AuthorizeDBSecurityGroupIngress": { - "input": { - "type": "structure", - "required": [ - "DBSecurityGroupName" - ], - "members": { - "DBSecurityGroupName": {}, - "CIDRIP": {}, - "EC2SecurityGroupName": {}, - "EC2SecurityGroupId": {}, - "EC2SecurityGroupOwnerId": {} - } - }, - "output": { - "resultWrapper": "AuthorizeDBSecurityGroupIngressResult", - "type": "structure", - "members": { - "DBSecurityGroup": { - "shape": "Sd" - } - } - } - }, - "CopyDBSnapshot": { - "input": { - "type": "structure", - "required": [ - "SourceDBSnapshotIdentifier", - "TargetDBSnapshotIdentifier" - ], - "members": { - "SourceDBSnapshotIdentifier": {}, - "TargetDBSnapshotIdentifier": {} - } - }, - "output": { - "resultWrapper": "CopyDBSnapshotResult", - "type": "structure", - "members": { - "DBSnapshot": { - "shape": "Sk" - } - } - } - }, - "CreateDBInstance": { - "input": { - "type": "structure", - "required": [ - "DBInstanceIdentifier", - "AllocatedStorage", - "DBInstanceClass", - "Engine", - "MasterUsername", - "MasterUserPassword" - ], - "members": { - "DBName": {}, - "DBInstanceIdentifier": {}, - "AllocatedStorage": { - "type": "integer" - }, - "DBInstanceClass": {}, - "Engine": {}, - "MasterUsername": {}, - "MasterUserPassword": {}, - "DBSecurityGroups": { - "shape": "Sp" - }, - "VpcSecurityGroupIds": { - "shape": "Sq" - }, - "AvailabilityZone": {}, - "DBSubnetGroupName": {}, - "PreferredMaintenanceWindow": {}, - "DBParameterGroupName": {}, - "BackupRetentionPeriod": { - "type": "integer" - }, - "PreferredBackupWindow": {}, - "Port": { - "type": "integer" - }, - "MultiAZ": { - "type": "boolean" - }, - "EngineVersion": {}, - "AutoMinorVersionUpgrade": { - "type": "boolean" - }, - "LicenseModel": {}, - "Iops": { - "type": "integer" - }, - "OptionGroupName": {}, - "CharacterSetName": {}, - "PubliclyAccessible": { - "type": "boolean" - } - } - }, - "output": { - "resultWrapper": "CreateDBInstanceResult", - "type": "structure", - "members": { - "DBInstance": { - "shape": "St" - } - } - } - }, - "CreateDBInstanceReadReplica": { - "input": { - "type": "structure", - "required": [ - "DBInstanceIdentifier", - "SourceDBInstanceIdentifier" - ], - "members": { - "DBInstanceIdentifier": {}, - "SourceDBInstanceIdentifier": {}, - "DBInstanceClass": {}, - "AvailabilityZone": {}, - "Port": { - "type": "integer" - }, - "AutoMinorVersionUpgrade": { - "type": "boolean" - }, - "Iops": { - "type": "integer" - }, - "OptionGroupName": {}, - "PubliclyAccessible": { - "type": "boolean" - } - } - }, - "output": { - "resultWrapper": "CreateDBInstanceReadReplicaResult", - "type": "structure", - "members": { - "DBInstance": { - "shape": "St" - } - } - } - }, - "CreateDBParameterGroup": { - "input": { - "type": "structure", - "required": [ - "DBParameterGroupName", - "DBParameterGroupFamily", - "Description" - ], - "members": { - "DBParameterGroupName": {}, - "DBParameterGroupFamily": {}, - "Description": {} - } - }, - "output": { - "resultWrapper": "CreateDBParameterGroupResult", - "type": "structure", - "members": { - "DBParameterGroup": { - "shape": "S1c" - } - } - } - }, - "CreateDBSecurityGroup": { - "input": { - "type": "structure", - "required": [ - "DBSecurityGroupName", - "DBSecurityGroupDescription" - ], - "members": { - "DBSecurityGroupName": {}, - "DBSecurityGroupDescription": {} - } - }, - "output": { - "resultWrapper": "CreateDBSecurityGroupResult", - "type": "structure", - "members": { - "DBSecurityGroup": { - "shape": "Sd" - } - } - } - }, - "CreateDBSnapshot": { - "input": { - "type": "structure", - "required": [ - "DBSnapshotIdentifier", - "DBInstanceIdentifier" - ], - "members": { - "DBSnapshotIdentifier": {}, - "DBInstanceIdentifier": {} - } - }, - "output": { - "resultWrapper": "CreateDBSnapshotResult", - "type": "structure", - "members": { - "DBSnapshot": { - "shape": "Sk" - } - } - } - }, - "CreateDBSubnetGroup": { - "input": { - "type": "structure", - "required": [ - "DBSubnetGroupName", - "DBSubnetGroupDescription", - "SubnetIds" - ], - "members": { - "DBSubnetGroupName": {}, - "DBSubnetGroupDescription": {}, - "SubnetIds": { - "shape": "S1i" - } - } - }, - "output": { - "resultWrapper": "CreateDBSubnetGroupResult", - "type": "structure", - "members": { - "DBSubnetGroup": { - "shape": "S11" - } - } - } - }, - "CreateEventSubscription": { - "input": { - "type": "structure", - "required": [ - "SubscriptionName", - "SnsTopicArn" - ], - "members": { - "SubscriptionName": {}, - "SnsTopicArn": {}, - "SourceType": {}, - "EventCategories": { - "shape": "S6" - }, - "SourceIds": { - "shape": "S5" - }, - "Enabled": { - "type": "boolean" - } - } - }, - "output": { - "resultWrapper": "CreateEventSubscriptionResult", - "type": "structure", - "members": { - "EventSubscription": { - "shape": "S4" - } - } - } - }, - "CreateOptionGroup": { - "input": { - "type": "structure", - "required": [ - "OptionGroupName", - "EngineName", - "MajorEngineVersion", - "OptionGroupDescription" - ], - "members": { - "OptionGroupName": {}, - "EngineName": {}, - "MajorEngineVersion": {}, - "OptionGroupDescription": {} - } - }, - "output": { - "resultWrapper": "CreateOptionGroupResult", - "type": "structure", - "members": { - "OptionGroup": { - "shape": "S1o" - } - } - } - }, - "DeleteDBInstance": { - "input": { - "type": "structure", - "required": [ - "DBInstanceIdentifier" - ], - "members": { - "DBInstanceIdentifier": {}, - "SkipFinalSnapshot": { - "type": "boolean" - }, - "FinalDBSnapshotIdentifier": {} - } - }, - "output": { - "resultWrapper": "DeleteDBInstanceResult", - "type": "structure", - "members": { - "DBInstance": { - "shape": "St" - } - } - } - }, - "DeleteDBParameterGroup": { - "input": { - "type": "structure", - "required": [ - "DBParameterGroupName" - ], - "members": { - "DBParameterGroupName": {} - } - } - }, - "DeleteDBSecurityGroup": { - "input": { - "type": "structure", - "required": [ - "DBSecurityGroupName" - ], - "members": { - "DBSecurityGroupName": {} - } - } - }, - "DeleteDBSnapshot": { - "input": { - "type": "structure", - "required": [ - "DBSnapshotIdentifier" - ], - "members": { - "DBSnapshotIdentifier": {} - } - }, - "output": { - "resultWrapper": "DeleteDBSnapshotResult", - "type": "structure", - "members": { - "DBSnapshot": { - "shape": "Sk" - } - } - } - }, - "DeleteDBSubnetGroup": { - "input": { - "type": "structure", - "required": [ - "DBSubnetGroupName" - ], - "members": { - "DBSubnetGroupName": {} - } - } - }, - "DeleteEventSubscription": { - "input": { - "type": "structure", - "required": [ - "SubscriptionName" - ], - "members": { - "SubscriptionName": {} - } - }, - "output": { - "resultWrapper": "DeleteEventSubscriptionResult", - "type": "structure", - "members": { - "EventSubscription": { - "shape": "S4" - } - } - } - }, - "DeleteOptionGroup": { - "input": { - "type": "structure", - "required": [ - "OptionGroupName" - ], - "members": { - "OptionGroupName": {} - } - } - }, - "DescribeDBEngineVersions": { - "input": { - "type": "structure", - "members": { - "Engine": {}, - "EngineVersion": {}, - "DBParameterGroupFamily": {}, - "MaxRecords": { - "type": "integer" - }, - "Marker": {}, - "DefaultOnly": { - "type": "boolean" - }, - "ListSupportedCharacterSets": { - "type": "boolean" - } - } - }, - "output": { - "resultWrapper": "DescribeDBEngineVersionsResult", - "type": "structure", - "members": { - "Marker": {}, - "DBEngineVersions": { - "type": "list", - "member": { - "locationName": "DBEngineVersion", - "type": "structure", - "members": { - "Engine": {}, - "EngineVersion": {}, - "DBParameterGroupFamily": {}, - "DBEngineDescription": {}, - "DBEngineVersionDescription": {}, - "DefaultCharacterSet": { - "shape": "S25" - }, - "SupportedCharacterSets": { - "type": "list", - "member": { - "shape": "S25", - "locationName": "CharacterSet" - } - } - } - } - } - } - } - }, - "DescribeDBInstances": { - "input": { - "type": "structure", - "members": { - "DBInstanceIdentifier": {}, - "MaxRecords": { - "type": "integer" - }, - "Marker": {} - } - }, - "output": { - "resultWrapper": "DescribeDBInstancesResult", - "type": "structure", - "members": { - "Marker": {}, - "DBInstances": { - "type": "list", - "member": { - "shape": "St", - "locationName": "DBInstance" - } - } - } - } - }, - "DescribeDBParameterGroups": { - "input": { - "type": "structure", - "members": { - "DBParameterGroupName": {}, - "MaxRecords": { - "type": "integer" - }, - "Marker": {} - } - }, - "output": { - "resultWrapper": "DescribeDBParameterGroupsResult", - "type": "structure", - "members": { - "Marker": {}, - "DBParameterGroups": { - "type": "list", - "member": { - "shape": "S1c", - "locationName": "DBParameterGroup" - } - } - } - } - }, - "DescribeDBParameters": { - "input": { - "type": "structure", - "required": [ - "DBParameterGroupName" - ], - "members": { - "DBParameterGroupName": {}, - "Source": {}, - "MaxRecords": { - "type": "integer" - }, - "Marker": {} - } - }, - "output": { - "resultWrapper": "DescribeDBParametersResult", - "type": "structure", - "members": { - "Parameters": { - "shape": "S2f" - }, - "Marker": {} - } - } - }, - "DescribeDBSecurityGroups": { - "input": { - "type": "structure", - "members": { - "DBSecurityGroupName": {}, - "MaxRecords": { - "type": "integer" - }, - "Marker": {} - } - }, - "output": { - "resultWrapper": "DescribeDBSecurityGroupsResult", - "type": "structure", - "members": { - "Marker": {}, - "DBSecurityGroups": { - "type": "list", - "member": { - "shape": "Sd", - "locationName": "DBSecurityGroup" - } - } - } - } - }, - "DescribeDBSnapshots": { - "input": { - "type": "structure", - "members": { - "DBInstanceIdentifier": {}, - "DBSnapshotIdentifier": {}, - "SnapshotType": {}, - "MaxRecords": { - "type": "integer" - }, - "Marker": {} - } - }, - "output": { - "resultWrapper": "DescribeDBSnapshotsResult", - "type": "structure", - "members": { - "Marker": {}, - "DBSnapshots": { - "type": "list", - "member": { - "shape": "Sk", - "locationName": "DBSnapshot" - } - } - } - } - }, - "DescribeDBSubnetGroups": { - "input": { - "type": "structure", - "members": { - "DBSubnetGroupName": {}, - "MaxRecords": { - "type": "integer" - }, - "Marker": {} - } - }, - "output": { - "resultWrapper": "DescribeDBSubnetGroupsResult", - "type": "structure", - "members": { - "Marker": {}, - "DBSubnetGroups": { - "type": "list", - "member": { - "shape": "S11", - "locationName": "DBSubnetGroup" - } - } - } - } - }, - "DescribeEngineDefaultParameters": { - "input": { - "type": "structure", - "required": [ - "DBParameterGroupFamily" - ], - "members": { - "DBParameterGroupFamily": {}, - "MaxRecords": { - "type": "integer" - }, - "Marker": {} - } - }, - "output": { - "resultWrapper": "DescribeEngineDefaultParametersResult", - "type": "structure", - "members": { - "EngineDefaults": { - "type": "structure", - "members": { - "DBParameterGroupFamily": {}, - "Marker": {}, - "Parameters": { - "shape": "S2f" - } - }, - "wrapper": true - } - } - } - }, - "DescribeEventCategories": { - "input": { - "type": "structure", - "members": { - "SourceType": {} - } - }, - "output": { - "resultWrapper": "DescribeEventCategoriesResult", - "type": "structure", - "members": { - "EventCategoriesMapList": { - "type": "list", - "member": { - "locationName": "EventCategoriesMap", - "type": "structure", - "members": { - "SourceType": {}, - "EventCategories": { - "shape": "S6" - } - }, - "wrapper": true - } - } - } - } - }, - "DescribeEventSubscriptions": { - "input": { - "type": "structure", - "members": { - "SubscriptionName": {}, - "MaxRecords": { - "type": "integer" - }, - "Marker": {} - } - }, - "output": { - "resultWrapper": "DescribeEventSubscriptionsResult", - "type": "structure", - "members": { - "Marker": {}, - "EventSubscriptionsList": { - "type": "list", - "member": { - "shape": "S4", - "locationName": "EventSubscription" - } - } - } - } - }, - "DescribeEvents": { - "input": { - "type": "structure", - "members": { - "SourceIdentifier": {}, - "SourceType": {}, - "StartTime": { - "type": "timestamp" - }, - "EndTime": { - "type": "timestamp" - }, - "Duration": { - "type": "integer" - }, - "EventCategories": { - "shape": "S6" - }, - "MaxRecords": { - "type": "integer" - }, - "Marker": {} - } - }, - "output": { - "resultWrapper": "DescribeEventsResult", - "type": "structure", - "members": { - "Marker": {}, - "Events": { - "type": "list", - "member": { - "locationName": "Event", - "type": "structure", - "members": { - "SourceIdentifier": {}, - "SourceType": {}, - "Message": {}, - "EventCategories": { - "shape": "S6" - }, - "Date": { - "type": "timestamp" - } - } - } - } - } - } - }, - "DescribeOptionGroupOptions": { - "input": { - "type": "structure", - "required": [ - "EngineName" - ], - "members": { - "EngineName": {}, - "MajorEngineVersion": {}, - "MaxRecords": { - "type": "integer" - }, - "Marker": {} - } - }, - "output": { - "resultWrapper": "DescribeOptionGroupOptionsResult", - "type": "structure", - "members": { - "OptionGroupOptions": { - "type": "list", - "member": { - "locationName": "OptionGroupOption", - "type": "structure", - "members": { - "Name": {}, - "Description": {}, - "EngineName": {}, - "MajorEngineVersion": {}, - "MinimumRequiredMinorEngineVersion": {}, - "PortRequired": { - "type": "boolean" - }, - "DefaultPort": { - "type": "integer" - }, - "OptionsDependedOn": { - "type": "list", - "member": { - "locationName": "OptionName" - } - } - } - } - }, - "Marker": {} - } - } - }, - "DescribeOptionGroups": { - "input": { - "type": "structure", - "members": { - "OptionGroupName": {}, - "Marker": {}, - "MaxRecords": { - "type": "integer" - }, - "EngineName": {}, - "MajorEngineVersion": {} - } - }, - "output": { - "resultWrapper": "DescribeOptionGroupsResult", - "type": "structure", - "members": { - "OptionGroupsList": { - "type": "list", - "member": { - "shape": "S1o", - "locationName": "OptionGroup" - } - }, - "Marker": {} - } - } - }, - "DescribeOrderableDBInstanceOptions": { - "input": { - "type": "structure", - "required": [ - "Engine" - ], - "members": { - "Engine": {}, - "EngineVersion": {}, - "DBInstanceClass": {}, - "LicenseModel": {}, - "Vpc": { - "type": "boolean" - }, - "MaxRecords": { - "type": "integer" - }, - "Marker": {} - } - }, - "output": { - "resultWrapper": "DescribeOrderableDBInstanceOptionsResult", - "type": "structure", - "members": { - "OrderableDBInstanceOptions": { - "type": "list", - "member": { - "locationName": "OrderableDBInstanceOption", - "type": "structure", - "members": { - "Engine": {}, - "EngineVersion": {}, - "DBInstanceClass": {}, - "LicenseModel": {}, - "AvailabilityZones": { - "type": "list", - "member": { - "shape": "S14", - "locationName": "AvailabilityZone" - } - }, - "MultiAZCapable": { - "type": "boolean" - }, - "ReadReplicaCapable": { - "type": "boolean" - }, - "Vpc": { - "type": "boolean" - } - }, - "wrapper": true - } - }, - "Marker": {} - } - } - }, - "DescribeReservedDBInstances": { - "input": { - "type": "structure", - "members": { - "ReservedDBInstanceId": {}, - "ReservedDBInstancesOfferingId": {}, - "DBInstanceClass": {}, - "Duration": {}, - "ProductDescription": {}, - "OfferingType": {}, - "MultiAZ": { - "type": "boolean" - }, - "MaxRecords": { - "type": "integer" - }, - "Marker": {} - } - }, - "output": { - "resultWrapper": "DescribeReservedDBInstancesResult", - "type": "structure", - "members": { - "Marker": {}, - "ReservedDBInstances": { - "type": "list", - "member": { - "shape": "S3m", - "locationName": "ReservedDBInstance" - } - } - } - } - }, - "DescribeReservedDBInstancesOfferings": { - "input": { - "type": "structure", - "members": { - "ReservedDBInstancesOfferingId": {}, - "DBInstanceClass": {}, - "Duration": {}, - "ProductDescription": {}, - "OfferingType": {}, - "MultiAZ": { - "type": "boolean" - }, - "MaxRecords": { - "type": "integer" - }, - "Marker": {} - } - }, - "output": { - "resultWrapper": "DescribeReservedDBInstancesOfferingsResult", - "type": "structure", - "members": { - "Marker": {}, - "ReservedDBInstancesOfferings": { - "type": "list", - "member": { - "locationName": "ReservedDBInstancesOffering", - "type": "structure", - "members": { - "ReservedDBInstancesOfferingId": {}, - "DBInstanceClass": {}, - "Duration": { - "type": "integer" - }, - "FixedPrice": { - "type": "double" - }, - "UsagePrice": { - "type": "double" - }, - "CurrencyCode": {}, - "ProductDescription": {}, - "OfferingType": {}, - "MultiAZ": { - "type": "boolean" - }, - "RecurringCharges": { - "shape": "S3o" - } - }, - "wrapper": true - } - } - } - } - }, - "ListTagsForResource": { - "input": { - "type": "structure", - "required": [ - "ResourceName" - ], - "members": { - "ResourceName": {} - } - }, - "output": { - "resultWrapper": "ListTagsForResourceResult", - "type": "structure", - "members": { - "TagList": { - "shape": "S9" - } - } - } - }, - "ModifyDBInstance": { - "input": { - "type": "structure", - "required": [ - "DBInstanceIdentifier" - ], - "members": { - "DBInstanceIdentifier": {}, - "AllocatedStorage": { - "type": "integer" - }, - "DBInstanceClass": {}, - "DBSecurityGroups": { - "shape": "Sp" - }, - "VpcSecurityGroupIds": { - "shape": "Sq" - }, - "ApplyImmediately": { - "type": "boolean" - }, - "MasterUserPassword": {}, - "DBParameterGroupName": {}, - "BackupRetentionPeriod": { - "type": "integer" - }, - "PreferredBackupWindow": {}, - "PreferredMaintenanceWindow": {}, - "MultiAZ": { - "type": "boolean" - }, - "EngineVersion": {}, - "AllowMajorVersionUpgrade": { - "type": "boolean" - }, - "AutoMinorVersionUpgrade": { - "type": "boolean" - }, - "Iops": { - "type": "integer" - }, - "OptionGroupName": {}, - "NewDBInstanceIdentifier": {} - } - }, - "output": { - "resultWrapper": "ModifyDBInstanceResult", - "type": "structure", - "members": { - "DBInstance": { - "shape": "St" - } - } - } - }, - "ModifyDBParameterGroup": { - "input": { - "type": "structure", - "required": [ - "DBParameterGroupName", - "Parameters" - ], - "members": { - "DBParameterGroupName": {}, - "Parameters": { - "shape": "S2f" - } - } - }, - "output": { - "shape": "S3z", - "resultWrapper": "ModifyDBParameterGroupResult" - } - }, - "ModifyDBSubnetGroup": { - "input": { - "type": "structure", - "required": [ - "DBSubnetGroupName", - "SubnetIds" - ], - "members": { - "DBSubnetGroupName": {}, - "DBSubnetGroupDescription": {}, - "SubnetIds": { - "shape": "S1i" - } - } - }, - "output": { - "resultWrapper": "ModifyDBSubnetGroupResult", - "type": "structure", - "members": { - "DBSubnetGroup": { - "shape": "S11" - } - } - } - }, - "ModifyEventSubscription": { - "input": { - "type": "structure", - "required": [ - "SubscriptionName" - ], - "members": { - "SubscriptionName": {}, - "SnsTopicArn": {}, - "SourceType": {}, - "EventCategories": { - "shape": "S6" - }, - "Enabled": { - "type": "boolean" - } - } - }, - "output": { - "resultWrapper": "ModifyEventSubscriptionResult", - "type": "structure", - "members": { - "EventSubscription": { - "shape": "S4" - } - } - } - }, - "ModifyOptionGroup": { - "input": { - "type": "structure", - "required": [ - "OptionGroupName" - ], - "members": { - "OptionGroupName": {}, - "OptionsToInclude": { - "type": "list", - "member": { - "locationName": "OptionConfiguration", - "type": "structure", - "required": [ - "OptionName" - ], - "members": { - "OptionName": {}, - "Port": { - "type": "integer" - }, - "DBSecurityGroupMemberships": { - "shape": "Sp" - }, - "VpcSecurityGroupMemberships": { - "shape": "Sq" - } - } - } - }, - "OptionsToRemove": { - "type": "list", - "member": {} - }, - "ApplyImmediately": { - "type": "boolean" - } - } - }, - "output": { - "resultWrapper": "ModifyOptionGroupResult", - "type": "structure", - "members": { - "OptionGroup": { - "shape": "S1o" - } - } - } - }, - "PromoteReadReplica": { - "input": { - "type": "structure", - "required": [ - "DBInstanceIdentifier" - ], - "members": { - "DBInstanceIdentifier": {}, - "BackupRetentionPeriod": { - "type": "integer" - }, - "PreferredBackupWindow": {} - } - }, - "output": { - "resultWrapper": "PromoteReadReplicaResult", - "type": "structure", - "members": { - "DBInstance": { - "shape": "St" - } - } - } - }, - "PurchaseReservedDBInstancesOffering": { - "input": { - "type": "structure", - "required": [ - "ReservedDBInstancesOfferingId" - ], - "members": { - "ReservedDBInstancesOfferingId": {}, - "ReservedDBInstanceId": {}, - "DBInstanceCount": { - "type": "integer" - } - } - }, - "output": { - "resultWrapper": "PurchaseReservedDBInstancesOfferingResult", - "type": "structure", - "members": { - "ReservedDBInstance": { - "shape": "S3m" - } - } - } - }, - "RebootDBInstance": { - "input": { - "type": "structure", - "required": [ - "DBInstanceIdentifier" - ], - "members": { - "DBInstanceIdentifier": {}, - "ForceFailover": { - "type": "boolean" - } - } - }, - "output": { - "resultWrapper": "RebootDBInstanceResult", - "type": "structure", - "members": { - "DBInstance": { - "shape": "St" - } - } - } - }, - "RemoveSourceIdentifierFromSubscription": { - "input": { - "type": "structure", - "required": [ - "SubscriptionName", - "SourceIdentifier" - ], - "members": { - "SubscriptionName": {}, - "SourceIdentifier": {} - } - }, - "output": { - "resultWrapper": "RemoveSourceIdentifierFromSubscriptionResult", - "type": "structure", - "members": { - "EventSubscription": { - "shape": "S4" - } - } - } - }, - "RemoveTagsFromResource": { - "input": { - "type": "structure", - "required": [ - "ResourceName", - "TagKeys" - ], - "members": { - "ResourceName": {}, - "TagKeys": { - "type": "list", - "member": {} - } - } - } - }, - "ResetDBParameterGroup": { - "input": { - "type": "structure", - "required": [ - "DBParameterGroupName" - ], - "members": { - "DBParameterGroupName": {}, - "ResetAllParameters": { - "type": "boolean" - }, - "Parameters": { - "shape": "S2f" - } - } - }, - "output": { - "shape": "S3z", - "resultWrapper": "ResetDBParameterGroupResult" - } - }, - "RestoreDBInstanceFromDBSnapshot": { - "input": { - "type": "structure", - "required": [ - "DBInstanceIdentifier", - "DBSnapshotIdentifier" - ], - "members": { - "DBInstanceIdentifier": {}, - "DBSnapshotIdentifier": {}, - "DBInstanceClass": {}, - "Port": { - "type": "integer" - }, - "AvailabilityZone": {}, - "DBSubnetGroupName": {}, - "MultiAZ": { - "type": "boolean" - }, - "PubliclyAccessible": { - "type": "boolean" - }, - "AutoMinorVersionUpgrade": { - "type": "boolean" - }, - "LicenseModel": {}, - "DBName": {}, - "Engine": {}, - "Iops": { - "type": "integer" - }, - "OptionGroupName": {} - } - }, - "output": { - "resultWrapper": "RestoreDBInstanceFromDBSnapshotResult", - "type": "structure", - "members": { - "DBInstance": { - "shape": "St" - } - } - } - }, - "RestoreDBInstanceToPointInTime": { - "input": { - "type": "structure", - "required": [ - "SourceDBInstanceIdentifier", - "TargetDBInstanceIdentifier" - ], - "members": { - "SourceDBInstanceIdentifier": {}, - "TargetDBInstanceIdentifier": {}, - "RestoreTime": { - "type": "timestamp" - }, - "UseLatestRestorableTime": { - "type": "boolean" - }, - "DBInstanceClass": {}, - "Port": { - "type": "integer" - }, - "AvailabilityZone": {}, - "DBSubnetGroupName": {}, - "MultiAZ": { - "type": "boolean" - }, - "PubliclyAccessible": { - "type": "boolean" - }, - "AutoMinorVersionUpgrade": { - "type": "boolean" - }, - "LicenseModel": {}, - "DBName": {}, - "Engine": {}, - "Iops": { - "type": "integer" - }, - "OptionGroupName": {} - } - }, - "output": { - "resultWrapper": "RestoreDBInstanceToPointInTimeResult", - "type": "structure", - "members": { - "DBInstance": { - "shape": "St" - } - } - } - }, - "RevokeDBSecurityGroupIngress": { - "input": { - "type": "structure", - "required": [ - "DBSecurityGroupName" - ], - "members": { - "DBSecurityGroupName": {}, - "CIDRIP": {}, - "EC2SecurityGroupName": {}, - "EC2SecurityGroupId": {}, - "EC2SecurityGroupOwnerId": {} - } - }, - "output": { - "resultWrapper": "RevokeDBSecurityGroupIngressResult", - "type": "structure", - "members": { - "DBSecurityGroup": { - "shape": "Sd" - } - } - } - } - }, - "shapes": { - "S4": { - "type": "structure", - "members": { - "Id": {}, - "CustomerAwsId": {}, - "CustSubscriptionId": {}, - "SnsTopicArn": {}, - "Status": {}, - "SubscriptionCreationTime": {}, - "SourceType": {}, - "SourceIdsList": { - "shape": "S5" - }, - "EventCategoriesList": { - "shape": "S6" - }, - "Enabled": { - "type": "boolean" - } - }, - "wrapper": true - }, - "S5": { - "type": "list", - "member": { - "locationName": "SourceId" - } - }, - "S6": { - "type": "list", - "member": { - "locationName": "EventCategory" - } - }, - "S9": { - "type": "list", - "member": { - "locationName": "Tag", - "type": "structure", - "members": { - "Key": {}, - "Value": {} - } - } - }, - "Sd": { - "type": "structure", - "members": { - "OwnerId": {}, - "DBSecurityGroupName": {}, - "DBSecurityGroupDescription": {}, - "VpcId": {}, - "EC2SecurityGroups": { - "type": "list", - "member": { - "locationName": "EC2SecurityGroup", - "type": "structure", - "members": { - "Status": {}, - "EC2SecurityGroupName": {}, - "EC2SecurityGroupId": {}, - "EC2SecurityGroupOwnerId": {} - } - } - }, - "IPRanges": { - "type": "list", - "member": { - "locationName": "IPRange", - "type": "structure", - "members": { - "Status": {}, - "CIDRIP": {} - } - } - } - }, - "wrapper": true - }, - "Sk": { - "type": "structure", - "members": { - "DBSnapshotIdentifier": {}, - "DBInstanceIdentifier": {}, - "SnapshotCreateTime": { - "type": "timestamp" - }, - "Engine": {}, - "AllocatedStorage": { - "type": "integer" - }, - "Status": {}, - "Port": { - "type": "integer" - }, - "AvailabilityZone": {}, - "VpcId": {}, - "InstanceCreateTime": { - "type": "timestamp" - }, - "MasterUsername": {}, - "EngineVersion": {}, - "LicenseModel": {}, - "SnapshotType": {}, - "Iops": { - "type": "integer" - } - }, - "wrapper": true - }, - "Sp": { - "type": "list", - "member": { - "locationName": "DBSecurityGroupName" - } - }, - "Sq": { - "type": "list", - "member": { - "locationName": "VpcSecurityGroupId" - } - }, - "St": { - "type": "structure", - "members": { - "DBInstanceIdentifier": {}, - "DBInstanceClass": {}, - "Engine": {}, - "DBInstanceStatus": {}, - "MasterUsername": {}, - "DBName": {}, - "Endpoint": { - "type": "structure", - "members": { - "Address": {}, - "Port": { - "type": "integer" - } - } - }, - "AllocatedStorage": { - "type": "integer" - }, - "InstanceCreateTime": { - "type": "timestamp" - }, - "PreferredBackupWindow": {}, - "BackupRetentionPeriod": { - "type": "integer" - }, - "DBSecurityGroups": { - "shape": "Sv" - }, - "VpcSecurityGroups": { - "shape": "Sx" - }, - "DBParameterGroups": { - "type": "list", - "member": { - "locationName": "DBParameterGroup", - "type": "structure", - "members": { - "DBParameterGroupName": {}, - "ParameterApplyStatus": {} - } - } - }, - "AvailabilityZone": {}, - "DBSubnetGroup": { - "shape": "S11" - }, - "PreferredMaintenanceWindow": {}, - "PendingModifiedValues": { - "type": "structure", - "members": { - "DBInstanceClass": {}, - "AllocatedStorage": { - "type": "integer" - }, - "MasterUserPassword": {}, - "Port": { - "type": "integer" - }, - "BackupRetentionPeriod": { - "type": "integer" - }, - "MultiAZ": { - "type": "boolean" - }, - "EngineVersion": {}, - "Iops": { - "type": "integer" - }, - "DBInstanceIdentifier": {} - } - }, - "LatestRestorableTime": { - "type": "timestamp" - }, - "MultiAZ": { - "type": "boolean" - }, - "EngineVersion": {}, - "AutoMinorVersionUpgrade": { - "type": "boolean" - }, - "ReadReplicaSourceDBInstanceIdentifier": {}, - "ReadReplicaDBInstanceIdentifiers": { - "type": "list", - "member": { - "locationName": "ReadReplicaDBInstanceIdentifier" - } - }, - "LicenseModel": {}, - "Iops": { - "type": "integer" - }, - "OptionGroupMembership": { - "type": "structure", - "members": { - "OptionGroupName": {}, - "Status": {} - } - }, - "CharacterSetName": {}, - "SecondaryAvailabilityZone": {}, - "PubliclyAccessible": { - "type": "boolean" - } - }, - "wrapper": true - }, - "Sv": { - "type": "list", - "member": { - "locationName": "DBSecurityGroup", - "type": "structure", - "members": { - "DBSecurityGroupName": {}, - "Status": {} - } - } - }, - "Sx": { - "type": "list", - "member": { - "locationName": "VpcSecurityGroupMembership", - "type": "structure", - "members": { - "VpcSecurityGroupId": {}, - "Status": {} - } - } - }, - "S11": { - "type": "structure", - "members": { - "DBSubnetGroupName": {}, - "DBSubnetGroupDescription": {}, - "VpcId": {}, - "SubnetGroupStatus": {}, - "Subnets": { - "type": "list", - "member": { - "locationName": "Subnet", - "type": "structure", - "members": { - "SubnetIdentifier": {}, - "SubnetAvailabilityZone": { - "shape": "S14" - }, - "SubnetStatus": {} - } - } - } - }, - "wrapper": true - }, - "S14": { - "type": "structure", - "members": { - "Name": {}, - "ProvisionedIopsCapable": { - "type": "boolean" - } - }, - "wrapper": true - }, - "S1c": { - "type": "structure", - "members": { - "DBParameterGroupName": {}, - "DBParameterGroupFamily": {}, - "Description": {} - }, - "wrapper": true - }, - "S1i": { - "type": "list", - "member": { - "locationName": "SubnetIdentifier" - } - }, - "S1o": { - "type": "structure", - "members": { - "OptionGroupName": {}, - "OptionGroupDescription": {}, - "EngineName": {}, - "MajorEngineVersion": {}, - "Options": { - "type": "list", - "member": { - "locationName": "Option", - "type": "structure", - "members": { - "OptionName": {}, - "OptionDescription": {}, - "Port": { - "type": "integer" - }, - "DBSecurityGroupMemberships": { - "shape": "Sv" - }, - "VpcSecurityGroupMemberships": { - "shape": "Sx" - } - } - } - }, - "AllowsVpcAndNonVpcInstanceMemberships": { - "type": "boolean" - }, - "VpcId": {} - }, - "wrapper": true - }, - "S25": { - "type": "structure", - "members": { - "CharacterSetName": {}, - "CharacterSetDescription": {} - } - }, - "S2f": { - "type": "list", - "member": { - "locationName": "Parameter", - "type": "structure", - "members": { - "ParameterName": {}, - "ParameterValue": {}, - "Description": {}, - "Source": {}, - "ApplyType": {}, - "DataType": {}, - "AllowedValues": {}, - "IsModifiable": { - "type": "boolean" - }, - "MinimumEngineVersion": {}, - "ApplyMethod": {} - } - } - }, - "S3m": { - "type": "structure", - "members": { - "ReservedDBInstanceId": {}, - "ReservedDBInstancesOfferingId": {}, - "DBInstanceClass": {}, - "StartTime": { - "type": "timestamp" - }, - "Duration": { - "type": "integer" - }, - "FixedPrice": { - "type": "double" - }, - "UsagePrice": { - "type": "double" - }, - "CurrencyCode": {}, - "DBInstanceCount": { - "type": "integer" - }, - "ProductDescription": {}, - "OfferingType": {}, - "MultiAZ": { - "type": "boolean" - }, - "State": {}, - "RecurringCharges": { - "shape": "S3o" - } - }, - "wrapper": true - }, - "S3o": { - "type": "list", - "member": { - "locationName": "RecurringCharge", - "type": "structure", - "members": { - "RecurringChargeAmount": { - "type": "double" - }, - "RecurringChargeFrequency": {} - }, - "wrapper": true - } - }, - "S3z": { - "type": "structure", - "members": { - "DBParameterGroupName": {} - } - } - } -} \ No newline at end of file diff --git a/workshops/monte-carlo-on-ec2-spot-fleet/src/web/node_modules/aws-sdk/apis/rds-2013-01-10.paginators.json b/workshops/monte-carlo-on-ec2-spot-fleet/src/web/node_modules/aws-sdk/apis/rds-2013-01-10.paginators.json deleted file mode 100644 index 2461b481..00000000 --- a/workshops/monte-carlo-on-ec2-spot-fleet/src/web/node_modules/aws-sdk/apis/rds-2013-01-10.paginators.json +++ /dev/null @@ -1,97 +0,0 @@ -{ - "pagination": { - "DescribeDBEngineVersions": { - "input_token": "Marker", - "limit_key": "MaxRecords", - "output_token": "Marker", - "result_key": "DBEngineVersions" - }, - "DescribeDBInstances": { - "input_token": "Marker", - "limit_key": "MaxRecords", - "output_token": "Marker", - "result_key": "DBInstances" - }, - "DescribeDBParameterGroups": { - "input_token": "Marker", - "limit_key": "MaxRecords", - "output_token": "Marker", - "result_key": "DBParameterGroups" - }, - "DescribeDBParameters": { - "input_token": "Marker", - "limit_key": "MaxRecords", - "output_token": "Marker", - "result_key": "Parameters" - }, - "DescribeDBSecurityGroups": { - "input_token": "Marker", - "limit_key": "MaxRecords", - "output_token": "Marker", - "result_key": "DBSecurityGroups" - }, - "DescribeDBSnapshots": { - "input_token": "Marker", - "limit_key": "MaxRecords", - "output_token": "Marker", - "result_key": "DBSnapshots" - }, - "DescribeDBSubnetGroups": { - "input_token": "Marker", - "limit_key": "MaxRecords", - "output_token": "Marker", - "result_key": "DBSubnetGroups" - }, - "DescribeEngineDefaultParameters": { - "input_token": "Marker", - "limit_key": "MaxRecords", - "output_token": "EngineDefaults.Marker", - "result_key": "EngineDefaults.Parameters" - }, - "DescribeEventSubscriptions": { - "input_token": "Marker", - "limit_key": "MaxRecords", - "output_token": "Marker", - "result_key": "EventSubscriptionsList" - }, - "DescribeEvents": { - "input_token": "Marker", - "limit_key": "MaxRecords", - "output_token": "Marker", - "result_key": "Events" - }, - "DescribeOptionGroupOptions": { - "input_token": "Marker", - "limit_key": "MaxRecords", - "output_token": "Marker", - "result_key": "OptionGroupOptions" - }, - "DescribeOptionGroups": { - "input_token": "Marker", - "limit_key": "MaxRecords", - "output_token": "Marker", - "result_key": "OptionGroupsList" - }, - "DescribeOrderableDBInstanceOptions": { - "input_token": "Marker", - "limit_key": "MaxRecords", - "output_token": "Marker", - "result_key": "OrderableDBInstanceOptions" - }, - "DescribeReservedDBInstances": { - "input_token": "Marker", - "limit_key": "MaxRecords", - "output_token": "Marker", - "result_key": "ReservedDBInstances" - }, - "DescribeReservedDBInstancesOfferings": { - "input_token": "Marker", - "limit_key": "MaxRecords", - "output_token": "Marker", - "result_key": "ReservedDBInstancesOfferings" - }, - "ListTagsForResource": { - "result_key": "TagList" - } - } -} \ No newline at end of file diff --git a/workshops/monte-carlo-on-ec2-spot-fleet/src/web/node_modules/aws-sdk/apis/rds-2013-02-12.examples.json b/workshops/monte-carlo-on-ec2-spot-fleet/src/web/node_modules/aws-sdk/apis/rds-2013-02-12.examples.json deleted file mode 100644 index 0ea7e3b0..00000000 --- a/workshops/monte-carlo-on-ec2-spot-fleet/src/web/node_modules/aws-sdk/apis/rds-2013-02-12.examples.json +++ /dev/null @@ -1,5 +0,0 @@ -{ - "version": "1.0", - "examples": { - } -} diff --git a/workshops/monte-carlo-on-ec2-spot-fleet/src/web/node_modules/aws-sdk/apis/rds-2013-02-12.min.json b/workshops/monte-carlo-on-ec2-spot-fleet/src/web/node_modules/aws-sdk/apis/rds-2013-02-12.min.json deleted file mode 100644 index 8da4b1c0..00000000 --- a/workshops/monte-carlo-on-ec2-spot-fleet/src/web/node_modules/aws-sdk/apis/rds-2013-02-12.min.json +++ /dev/null @@ -1,2028 +0,0 @@ -{ - "version": "2.0", - "metadata": { - "apiVersion": "2013-02-12", - "endpointPrefix": "rds", - "protocol": "query", - "serviceAbbreviation": "Amazon RDS", - "serviceFullName": "Amazon Relational Database Service", - "signatureVersion": "v4", - "uid": "rds-2013-02-12", - "xmlNamespace": "http://rds.amazonaws.com/doc/2013-02-12/" - }, - "operations": { - "AddSourceIdentifierToSubscription": { - "input": { - "type": "structure", - "required": [ - "SubscriptionName", - "SourceIdentifier" - ], - "members": { - "SubscriptionName": {}, - "SourceIdentifier": {} - } - }, - "output": { - "resultWrapper": "AddSourceIdentifierToSubscriptionResult", - "type": "structure", - "members": { - "EventSubscription": { - "shape": "S4" - } - } - } - }, - "AddTagsToResource": { - "input": { - "type": "structure", - "required": [ - "ResourceName", - "Tags" - ], - "members": { - "ResourceName": {}, - "Tags": { - "shape": "S9" - } - } - } - }, - "AuthorizeDBSecurityGroupIngress": { - "input": { - "type": "structure", - "required": [ - "DBSecurityGroupName" - ], - "members": { - "DBSecurityGroupName": {}, - "CIDRIP": {}, - "EC2SecurityGroupName": {}, - "EC2SecurityGroupId": {}, - "EC2SecurityGroupOwnerId": {} - } - }, - "output": { - "resultWrapper": "AuthorizeDBSecurityGroupIngressResult", - "type": "structure", - "members": { - "DBSecurityGroup": { - "shape": "Sd" - } - } - } - }, - "CopyDBSnapshot": { - "input": { - "type": "structure", - "required": [ - "SourceDBSnapshotIdentifier", - "TargetDBSnapshotIdentifier" - ], - "members": { - "SourceDBSnapshotIdentifier": {}, - "TargetDBSnapshotIdentifier": {} - } - }, - "output": { - "resultWrapper": "CopyDBSnapshotResult", - "type": "structure", - "members": { - "DBSnapshot": { - "shape": "Sk" - } - } - } - }, - "CreateDBInstance": { - "input": { - "type": "structure", - "required": [ - "DBInstanceIdentifier", - "AllocatedStorage", - "DBInstanceClass", - "Engine", - "MasterUsername", - "MasterUserPassword" - ], - "members": { - "DBName": {}, - "DBInstanceIdentifier": {}, - "AllocatedStorage": { - "type": "integer" - }, - "DBInstanceClass": {}, - "Engine": {}, - "MasterUsername": {}, - "MasterUserPassword": {}, - "DBSecurityGroups": { - "shape": "Sp" - }, - "VpcSecurityGroupIds": { - "shape": "Sq" - }, - "AvailabilityZone": {}, - "DBSubnetGroupName": {}, - "PreferredMaintenanceWindow": {}, - "DBParameterGroupName": {}, - "BackupRetentionPeriod": { - "type": "integer" - }, - "PreferredBackupWindow": {}, - "Port": { - "type": "integer" - }, - "MultiAZ": { - "type": "boolean" - }, - "EngineVersion": {}, - "AutoMinorVersionUpgrade": { - "type": "boolean" - }, - "LicenseModel": {}, - "Iops": { - "type": "integer" - }, - "OptionGroupName": {}, - "CharacterSetName": {}, - "PubliclyAccessible": { - "type": "boolean" - } - } - }, - "output": { - "resultWrapper": "CreateDBInstanceResult", - "type": "structure", - "members": { - "DBInstance": { - "shape": "St" - } - } - } - }, - "CreateDBInstanceReadReplica": { - "input": { - "type": "structure", - "required": [ - "DBInstanceIdentifier", - "SourceDBInstanceIdentifier" - ], - "members": { - "DBInstanceIdentifier": {}, - "SourceDBInstanceIdentifier": {}, - "DBInstanceClass": {}, - "AvailabilityZone": {}, - "Port": { - "type": "integer" - }, - "AutoMinorVersionUpgrade": { - "type": "boolean" - }, - "Iops": { - "type": "integer" - }, - "OptionGroupName": {}, - "PubliclyAccessible": { - "type": "boolean" - } - } - }, - "output": { - "resultWrapper": "CreateDBInstanceReadReplicaResult", - "type": "structure", - "members": { - "DBInstance": { - "shape": "St" - } - } - } - }, - "CreateDBParameterGroup": { - "input": { - "type": "structure", - "required": [ - "DBParameterGroupName", - "DBParameterGroupFamily", - "Description" - ], - "members": { - "DBParameterGroupName": {}, - "DBParameterGroupFamily": {}, - "Description": {} - } - }, - "output": { - "resultWrapper": "CreateDBParameterGroupResult", - "type": "structure", - "members": { - "DBParameterGroup": { - "shape": "S1d" - } - } - } - }, - "CreateDBSecurityGroup": { - "input": { - "type": "structure", - "required": [ - "DBSecurityGroupName", - "DBSecurityGroupDescription" - ], - "members": { - "DBSecurityGroupName": {}, - "DBSecurityGroupDescription": {} - } - }, - "output": { - "resultWrapper": "CreateDBSecurityGroupResult", - "type": "structure", - "members": { - "DBSecurityGroup": { - "shape": "Sd" - } - } - } - }, - "CreateDBSnapshot": { - "input": { - "type": "structure", - "required": [ - "DBSnapshotIdentifier", - "DBInstanceIdentifier" - ], - "members": { - "DBSnapshotIdentifier": {}, - "DBInstanceIdentifier": {} - } - }, - "output": { - "resultWrapper": "CreateDBSnapshotResult", - "type": "structure", - "members": { - "DBSnapshot": { - "shape": "Sk" - } - } - } - }, - "CreateDBSubnetGroup": { - "input": { - "type": "structure", - "required": [ - "DBSubnetGroupName", - "DBSubnetGroupDescription", - "SubnetIds" - ], - "members": { - "DBSubnetGroupName": {}, - "DBSubnetGroupDescription": {}, - "SubnetIds": { - "shape": "S1j" - } - } - }, - "output": { - "resultWrapper": "CreateDBSubnetGroupResult", - "type": "structure", - "members": { - "DBSubnetGroup": { - "shape": "S11" - } - } - } - }, - "CreateEventSubscription": { - "input": { - "type": "structure", - "required": [ - "SubscriptionName", - "SnsTopicArn" - ], - "members": { - "SubscriptionName": {}, - "SnsTopicArn": {}, - "SourceType": {}, - "EventCategories": { - "shape": "S6" - }, - "SourceIds": { - "shape": "S5" - }, - "Enabled": { - "type": "boolean" - } - } - }, - "output": { - "resultWrapper": "CreateEventSubscriptionResult", - "type": "structure", - "members": { - "EventSubscription": { - "shape": "S4" - } - } - } - }, - "CreateOptionGroup": { - "input": { - "type": "structure", - "required": [ - "OptionGroupName", - "EngineName", - "MajorEngineVersion", - "OptionGroupDescription" - ], - "members": { - "OptionGroupName": {}, - "EngineName": {}, - "MajorEngineVersion": {}, - "OptionGroupDescription": {} - } - }, - "output": { - "resultWrapper": "CreateOptionGroupResult", - "type": "structure", - "members": { - "OptionGroup": { - "shape": "S1p" - } - } - } - }, - "DeleteDBInstance": { - "input": { - "type": "structure", - "required": [ - "DBInstanceIdentifier" - ], - "members": { - "DBInstanceIdentifier": {}, - "SkipFinalSnapshot": { - "type": "boolean" - }, - "FinalDBSnapshotIdentifier": {} - } - }, - "output": { - "resultWrapper": "DeleteDBInstanceResult", - "type": "structure", - "members": { - "DBInstance": { - "shape": "St" - } - } - } - }, - "DeleteDBParameterGroup": { - "input": { - "type": "structure", - "required": [ - "DBParameterGroupName" - ], - "members": { - "DBParameterGroupName": {} - } - } - }, - "DeleteDBSecurityGroup": { - "input": { - "type": "structure", - "required": [ - "DBSecurityGroupName" - ], - "members": { - "DBSecurityGroupName": {} - } - } - }, - "DeleteDBSnapshot": { - "input": { - "type": "structure", - "required": [ - "DBSnapshotIdentifier" - ], - "members": { - "DBSnapshotIdentifier": {} - } - }, - "output": { - "resultWrapper": "DeleteDBSnapshotResult", - "type": "structure", - "members": { - "DBSnapshot": { - "shape": "Sk" - } - } - } - }, - "DeleteDBSubnetGroup": { - "input": { - "type": "structure", - "required": [ - "DBSubnetGroupName" - ], - "members": { - "DBSubnetGroupName": {} - } - } - }, - "DeleteEventSubscription": { - "input": { - "type": "structure", - "required": [ - "SubscriptionName" - ], - "members": { - "SubscriptionName": {} - } - }, - "output": { - "resultWrapper": "DeleteEventSubscriptionResult", - "type": "structure", - "members": { - "EventSubscription": { - "shape": "S4" - } - } - } - }, - "DeleteOptionGroup": { - "input": { - "type": "structure", - "required": [ - "OptionGroupName" - ], - "members": { - "OptionGroupName": {} - } - } - }, - "DescribeDBEngineVersions": { - "input": { - "type": "structure", - "members": { - "Engine": {}, - "EngineVersion": {}, - "DBParameterGroupFamily": {}, - "MaxRecords": { - "type": "integer" - }, - "Marker": {}, - "DefaultOnly": { - "type": "boolean" - }, - "ListSupportedCharacterSets": { - "type": "boolean" - } - } - }, - "output": { - "resultWrapper": "DescribeDBEngineVersionsResult", - "type": "structure", - "members": { - "Marker": {}, - "DBEngineVersions": { - "type": "list", - "member": { - "locationName": "DBEngineVersion", - "type": "structure", - "members": { - "Engine": {}, - "EngineVersion": {}, - "DBParameterGroupFamily": {}, - "DBEngineDescription": {}, - "DBEngineVersionDescription": {}, - "DefaultCharacterSet": { - "shape": "S28" - }, - "SupportedCharacterSets": { - "type": "list", - "member": { - "shape": "S28", - "locationName": "CharacterSet" - } - } - } - } - } - } - } - }, - "DescribeDBInstances": { - "input": { - "type": "structure", - "members": { - "DBInstanceIdentifier": {}, - "MaxRecords": { - "type": "integer" - }, - "Marker": {} - } - }, - "output": { - "resultWrapper": "DescribeDBInstancesResult", - "type": "structure", - "members": { - "Marker": {}, - "DBInstances": { - "type": "list", - "member": { - "shape": "St", - "locationName": "DBInstance" - } - } - } - } - }, - "DescribeDBLogFiles": { - "input": { - "type": "structure", - "required": [ - "DBInstanceIdentifier" - ], - "members": { - "DBInstanceIdentifier": {}, - "FilenameContains": {}, - "FileLastWritten": { - "type": "long" - }, - "FileSize": { - "type": "long" - }, - "MaxRecords": { - "type": "integer" - }, - "Marker": {} - } - }, - "output": { - "resultWrapper": "DescribeDBLogFilesResult", - "type": "structure", - "members": { - "DescribeDBLogFiles": { - "type": "list", - "member": { - "locationName": "DescribeDBLogFilesDetails", - "type": "structure", - "members": { - "LogFileName": {}, - "LastWritten": { - "type": "long" - }, - "Size": { - "type": "long" - } - } - } - }, - "Marker": {} - } - } - }, - "DescribeDBParameterGroups": { - "input": { - "type": "structure", - "members": { - "DBParameterGroupName": {}, - "MaxRecords": { - "type": "integer" - }, - "Marker": {} - } - }, - "output": { - "resultWrapper": "DescribeDBParameterGroupsResult", - "type": "structure", - "members": { - "Marker": {}, - "DBParameterGroups": { - "type": "list", - "member": { - "shape": "S1d", - "locationName": "DBParameterGroup" - } - } - } - } - }, - "DescribeDBParameters": { - "input": { - "type": "structure", - "required": [ - "DBParameterGroupName" - ], - "members": { - "DBParameterGroupName": {}, - "Source": {}, - "MaxRecords": { - "type": "integer" - }, - "Marker": {} - } - }, - "output": { - "resultWrapper": "DescribeDBParametersResult", - "type": "structure", - "members": { - "Parameters": { - "shape": "S2n" - }, - "Marker": {} - } - } - }, - "DescribeDBSecurityGroups": { - "input": { - "type": "structure", - "members": { - "DBSecurityGroupName": {}, - "MaxRecords": { - "type": "integer" - }, - "Marker": {} - } - }, - "output": { - "resultWrapper": "DescribeDBSecurityGroupsResult", - "type": "structure", - "members": { - "Marker": {}, - "DBSecurityGroups": { - "type": "list", - "member": { - "shape": "Sd", - "locationName": "DBSecurityGroup" - } - } - } - } - }, - "DescribeDBSnapshots": { - "input": { - "type": "structure", - "members": { - "DBInstanceIdentifier": {}, - "DBSnapshotIdentifier": {}, - "SnapshotType": {}, - "MaxRecords": { - "type": "integer" - }, - "Marker": {} - } - }, - "output": { - "resultWrapper": "DescribeDBSnapshotsResult", - "type": "structure", - "members": { - "Marker": {}, - "DBSnapshots": { - "type": "list", - "member": { - "shape": "Sk", - "locationName": "DBSnapshot" - } - } - } - } - }, - "DescribeDBSubnetGroups": { - "input": { - "type": "structure", - "members": { - "DBSubnetGroupName": {}, - "MaxRecords": { - "type": "integer" - }, - "Marker": {} - } - }, - "output": { - "resultWrapper": "DescribeDBSubnetGroupsResult", - "type": "structure", - "members": { - "Marker": {}, - "DBSubnetGroups": { - "type": "list", - "member": { - "shape": "S11", - "locationName": "DBSubnetGroup" - } - } - } - } - }, - "DescribeEngineDefaultParameters": { - "input": { - "type": "structure", - "required": [ - "DBParameterGroupFamily" - ], - "members": { - "DBParameterGroupFamily": {}, - "MaxRecords": { - "type": "integer" - }, - "Marker": {} - } - }, - "output": { - "resultWrapper": "DescribeEngineDefaultParametersResult", - "type": "structure", - "members": { - "EngineDefaults": { - "type": "structure", - "members": { - "DBParameterGroupFamily": {}, - "Marker": {}, - "Parameters": { - "shape": "S2n" - } - }, - "wrapper": true - } - } - } - }, - "DescribeEventCategories": { - "input": { - "type": "structure", - "members": { - "SourceType": {} - } - }, - "output": { - "resultWrapper": "DescribeEventCategoriesResult", - "type": "structure", - "members": { - "EventCategoriesMapList": { - "type": "list", - "member": { - "locationName": "EventCategoriesMap", - "type": "structure", - "members": { - "SourceType": {}, - "EventCategories": { - "shape": "S6" - } - }, - "wrapper": true - } - } - } - } - }, - "DescribeEventSubscriptions": { - "input": { - "type": "structure", - "members": { - "SubscriptionName": {}, - "MaxRecords": { - "type": "integer" - }, - "Marker": {} - } - }, - "output": { - "resultWrapper": "DescribeEventSubscriptionsResult", - "type": "structure", - "members": { - "Marker": {}, - "EventSubscriptionsList": { - "type": "list", - "member": { - "shape": "S4", - "locationName": "EventSubscription" - } - } - } - } - }, - "DescribeEvents": { - "input": { - "type": "structure", - "members": { - "SourceIdentifier": {}, - "SourceType": {}, - "StartTime": { - "type": "timestamp" - }, - "EndTime": { - "type": "timestamp" - }, - "Duration": { - "type": "integer" - }, - "EventCategories": { - "shape": "S6" - }, - "MaxRecords": { - "type": "integer" - }, - "Marker": {} - } - }, - "output": { - "resultWrapper": "DescribeEventsResult", - "type": "structure", - "members": { - "Marker": {}, - "Events": { - "type": "list", - "member": { - "locationName": "Event", - "type": "structure", - "members": { - "SourceIdentifier": {}, - "SourceType": {}, - "Message": {}, - "EventCategories": { - "shape": "S6" - }, - "Date": { - "type": "timestamp" - } - } - } - } - } - } - }, - "DescribeOptionGroupOptions": { - "input": { - "type": "structure", - "required": [ - "EngineName" - ], - "members": { - "EngineName": {}, - "MajorEngineVersion": {}, - "MaxRecords": { - "type": "integer" - }, - "Marker": {} - } - }, - "output": { - "resultWrapper": "DescribeOptionGroupOptionsResult", - "type": "structure", - "members": { - "OptionGroupOptions": { - "type": "list", - "member": { - "locationName": "OptionGroupOption", - "type": "structure", - "members": { - "Name": {}, - "Description": {}, - "EngineName": {}, - "MajorEngineVersion": {}, - "MinimumRequiredMinorEngineVersion": {}, - "PortRequired": { - "type": "boolean" - }, - "DefaultPort": { - "type": "integer" - }, - "OptionsDependedOn": { - "type": "list", - "member": { - "locationName": "OptionName" - } - }, - "Persistent": { - "type": "boolean" - }, - "OptionGroupOptionSettings": { - "type": "list", - "member": { - "locationName": "OptionGroupOptionSetting", - "type": "structure", - "members": { - "SettingName": {}, - "SettingDescription": {}, - "DefaultValue": {}, - "ApplyType": {}, - "AllowedValues": {}, - "IsModifiable": { - "type": "boolean" - } - } - } - } - } - } - }, - "Marker": {} - } - } - }, - "DescribeOptionGroups": { - "input": { - "type": "structure", - "members": { - "OptionGroupName": {}, - "Marker": {}, - "MaxRecords": { - "type": "integer" - }, - "EngineName": {}, - "MajorEngineVersion": {} - } - }, - "output": { - "resultWrapper": "DescribeOptionGroupsResult", - "type": "structure", - "members": { - "OptionGroupsList": { - "type": "list", - "member": { - "shape": "S1p", - "locationName": "OptionGroup" - } - }, - "Marker": {} - } - } - }, - "DescribeOrderableDBInstanceOptions": { - "input": { - "type": "structure", - "required": [ - "Engine" - ], - "members": { - "Engine": {}, - "EngineVersion": {}, - "DBInstanceClass": {}, - "LicenseModel": {}, - "Vpc": { - "type": "boolean" - }, - "MaxRecords": { - "type": "integer" - }, - "Marker": {} - } - }, - "output": { - "resultWrapper": "DescribeOrderableDBInstanceOptionsResult", - "type": "structure", - "members": { - "OrderableDBInstanceOptions": { - "type": "list", - "member": { - "locationName": "OrderableDBInstanceOption", - "type": "structure", - "members": { - "Engine": {}, - "EngineVersion": {}, - "DBInstanceClass": {}, - "LicenseModel": {}, - "AvailabilityZones": { - "type": "list", - "member": { - "shape": "S14", - "locationName": "AvailabilityZone" - } - }, - "MultiAZCapable": { - "type": "boolean" - }, - "ReadReplicaCapable": { - "type": "boolean" - }, - "Vpc": { - "type": "boolean" - } - }, - "wrapper": true - } - }, - "Marker": {} - } - } - }, - "DescribeReservedDBInstances": { - "input": { - "type": "structure", - "members": { - "ReservedDBInstanceId": {}, - "ReservedDBInstancesOfferingId": {}, - "DBInstanceClass": {}, - "Duration": {}, - "ProductDescription": {}, - "OfferingType": {}, - "MultiAZ": { - "type": "boolean" - }, - "MaxRecords": { - "type": "integer" - }, - "Marker": {} - } - }, - "output": { - "resultWrapper": "DescribeReservedDBInstancesResult", - "type": "structure", - "members": { - "Marker": {}, - "ReservedDBInstances": { - "type": "list", - "member": { - "shape": "S3w", - "locationName": "ReservedDBInstance" - } - } - } - } - }, - "DescribeReservedDBInstancesOfferings": { - "input": { - "type": "structure", - "members": { - "ReservedDBInstancesOfferingId": {}, - "DBInstanceClass": {}, - "Duration": {}, - "ProductDescription": {}, - "OfferingType": {}, - "MultiAZ": { - "type": "boolean" - }, - "MaxRecords": { - "type": "integer" - }, - "Marker": {} - } - }, - "output": { - "resultWrapper": "DescribeReservedDBInstancesOfferingsResult", - "type": "structure", - "members": { - "Marker": {}, - "ReservedDBInstancesOfferings": { - "type": "list", - "member": { - "locationName": "ReservedDBInstancesOffering", - "type": "structure", - "members": { - "ReservedDBInstancesOfferingId": {}, - "DBInstanceClass": {}, - "Duration": { - "type": "integer" - }, - "FixedPrice": { - "type": "double" - }, - "UsagePrice": { - "type": "double" - }, - "CurrencyCode": {}, - "ProductDescription": {}, - "OfferingType": {}, - "MultiAZ": { - "type": "boolean" - }, - "RecurringCharges": { - "shape": "S3y" - } - }, - "wrapper": true - } - } - } - } - }, - "DownloadDBLogFilePortion": { - "input": { - "type": "structure", - "required": [ - "DBInstanceIdentifier", - "LogFileName" - ], - "members": { - "DBInstanceIdentifier": {}, - "LogFileName": {}, - "Marker": {}, - "NumberOfLines": { - "type": "integer" - } - } - }, - "output": { - "resultWrapper": "DownloadDBLogFilePortionResult", - "type": "structure", - "members": { - "LogFileData": {}, - "Marker": {}, - "AdditionalDataPending": { - "type": "boolean" - } - } - } - }, - "ListTagsForResource": { - "input": { - "type": "structure", - "required": [ - "ResourceName" - ], - "members": { - "ResourceName": {} - } - }, - "output": { - "resultWrapper": "ListTagsForResourceResult", - "type": "structure", - "members": { - "TagList": { - "shape": "S9" - } - } - } - }, - "ModifyDBInstance": { - "input": { - "type": "structure", - "required": [ - "DBInstanceIdentifier" - ], - "members": { - "DBInstanceIdentifier": {}, - "AllocatedStorage": { - "type": "integer" - }, - "DBInstanceClass": {}, - "DBSecurityGroups": { - "shape": "Sp" - }, - "VpcSecurityGroupIds": { - "shape": "Sq" - }, - "ApplyImmediately": { - "type": "boolean" - }, - "MasterUserPassword": {}, - "DBParameterGroupName": {}, - "BackupRetentionPeriod": { - "type": "integer" - }, - "PreferredBackupWindow": {}, - "PreferredMaintenanceWindow": {}, - "MultiAZ": { - "type": "boolean" - }, - "EngineVersion": {}, - "AllowMajorVersionUpgrade": { - "type": "boolean" - }, - "AutoMinorVersionUpgrade": { - "type": "boolean" - }, - "Iops": { - "type": "integer" - }, - "OptionGroupName": {}, - "NewDBInstanceIdentifier": {} - } - }, - "output": { - "resultWrapper": "ModifyDBInstanceResult", - "type": "structure", - "members": { - "DBInstance": { - "shape": "St" - } - } - } - }, - "ModifyDBParameterGroup": { - "input": { - "type": "structure", - "required": [ - "DBParameterGroupName", - "Parameters" - ], - "members": { - "DBParameterGroupName": {}, - "Parameters": { - "shape": "S2n" - } - } - }, - "output": { - "shape": "S4b", - "resultWrapper": "ModifyDBParameterGroupResult" - } - }, - "ModifyDBSubnetGroup": { - "input": { - "type": "structure", - "required": [ - "DBSubnetGroupName", - "SubnetIds" - ], - "members": { - "DBSubnetGroupName": {}, - "DBSubnetGroupDescription": {}, - "SubnetIds": { - "shape": "S1j" - } - } - }, - "output": { - "resultWrapper": "ModifyDBSubnetGroupResult", - "type": "structure", - "members": { - "DBSubnetGroup": { - "shape": "S11" - } - } - } - }, - "ModifyEventSubscription": { - "input": { - "type": "structure", - "required": [ - "SubscriptionName" - ], - "members": { - "SubscriptionName": {}, - "SnsTopicArn": {}, - "SourceType": {}, - "EventCategories": { - "shape": "S6" - }, - "Enabled": { - "type": "boolean" - } - } - }, - "output": { - "resultWrapper": "ModifyEventSubscriptionResult", - "type": "structure", - "members": { - "EventSubscription": { - "shape": "S4" - } - } - } - }, - "ModifyOptionGroup": { - "input": { - "type": "structure", - "required": [ - "OptionGroupName" - ], - "members": { - "OptionGroupName": {}, - "OptionsToInclude": { - "type": "list", - "member": { - "locationName": "OptionConfiguration", - "type": "structure", - "required": [ - "OptionName" - ], - "members": { - "OptionName": {}, - "Port": { - "type": "integer" - }, - "DBSecurityGroupMemberships": { - "shape": "Sp" - }, - "VpcSecurityGroupMemberships": { - "shape": "Sq" - }, - "OptionSettings": { - "type": "list", - "member": { - "shape": "S1t", - "locationName": "OptionSetting" - } - } - } - } - }, - "OptionsToRemove": { - "type": "list", - "member": {} - }, - "ApplyImmediately": { - "type": "boolean" - } - } - }, - "output": { - "resultWrapper": "ModifyOptionGroupResult", - "type": "structure", - "members": { - "OptionGroup": { - "shape": "S1p" - } - } - } - }, - "PromoteReadReplica": { - "input": { - "type": "structure", - "required": [ - "DBInstanceIdentifier" - ], - "members": { - "DBInstanceIdentifier": {}, - "BackupRetentionPeriod": { - "type": "integer" - }, - "PreferredBackupWindow": {} - } - }, - "output": { - "resultWrapper": "PromoteReadReplicaResult", - "type": "structure", - "members": { - "DBInstance": { - "shape": "St" - } - } - } - }, - "PurchaseReservedDBInstancesOffering": { - "input": { - "type": "structure", - "required": [ - "ReservedDBInstancesOfferingId" - ], - "members": { - "ReservedDBInstancesOfferingId": {}, - "ReservedDBInstanceId": {}, - "DBInstanceCount": { - "type": "integer" - } - } - }, - "output": { - "resultWrapper": "PurchaseReservedDBInstancesOfferingResult", - "type": "structure", - "members": { - "ReservedDBInstance": { - "shape": "S3w" - } - } - } - }, - "RebootDBInstance": { - "input": { - "type": "structure", - "required": [ - "DBInstanceIdentifier" - ], - "members": { - "DBInstanceIdentifier": {}, - "ForceFailover": { - "type": "boolean" - } - } - }, - "output": { - "resultWrapper": "RebootDBInstanceResult", - "type": "structure", - "members": { - "DBInstance": { - "shape": "St" - } - } - } - }, - "RemoveSourceIdentifierFromSubscription": { - "input": { - "type": "structure", - "required": [ - "SubscriptionName", - "SourceIdentifier" - ], - "members": { - "SubscriptionName": {}, - "SourceIdentifier": {} - } - }, - "output": { - "resultWrapper": "RemoveSourceIdentifierFromSubscriptionResult", - "type": "structure", - "members": { - "EventSubscription": { - "shape": "S4" - } - } - } - }, - "RemoveTagsFromResource": { - "input": { - "type": "structure", - "required": [ - "ResourceName", - "TagKeys" - ], - "members": { - "ResourceName": {}, - "TagKeys": { - "type": "list", - "member": {} - } - } - } - }, - "ResetDBParameterGroup": { - "input": { - "type": "structure", - "required": [ - "DBParameterGroupName" - ], - "members": { - "DBParameterGroupName": {}, - "ResetAllParameters": { - "type": "boolean" - }, - "Parameters": { - "shape": "S2n" - } - } - }, - "output": { - "shape": "S4b", - "resultWrapper": "ResetDBParameterGroupResult" - } - }, - "RestoreDBInstanceFromDBSnapshot": { - "input": { - "type": "structure", - "required": [ - "DBInstanceIdentifier", - "DBSnapshotIdentifier" - ], - "members": { - "DBInstanceIdentifier": {}, - "DBSnapshotIdentifier": {}, - "DBInstanceClass": {}, - "Port": { - "type": "integer" - }, - "AvailabilityZone": {}, - "DBSubnetGroupName": {}, - "MultiAZ": { - "type": "boolean" - }, - "PubliclyAccessible": { - "type": "boolean" - }, - "AutoMinorVersionUpgrade": { - "type": "boolean" - }, - "LicenseModel": {}, - "DBName": {}, - "Engine": {}, - "Iops": { - "type": "integer" - }, - "OptionGroupName": {} - } - }, - "output": { - "resultWrapper": "RestoreDBInstanceFromDBSnapshotResult", - "type": "structure", - "members": { - "DBInstance": { - "shape": "St" - } - } - } - }, - "RestoreDBInstanceToPointInTime": { - "input": { - "type": "structure", - "required": [ - "SourceDBInstanceIdentifier", - "TargetDBInstanceIdentifier" - ], - "members": { - "SourceDBInstanceIdentifier": {}, - "TargetDBInstanceIdentifier": {}, - "RestoreTime": { - "type": "timestamp" - }, - "UseLatestRestorableTime": { - "type": "boolean" - }, - "DBInstanceClass": {}, - "Port": { - "type": "integer" - }, - "AvailabilityZone": {}, - "DBSubnetGroupName": {}, - "MultiAZ": { - "type": "boolean" - }, - "PubliclyAccessible": { - "type": "boolean" - }, - "AutoMinorVersionUpgrade": { - "type": "boolean" - }, - "LicenseModel": {}, - "DBName": {}, - "Engine": {}, - "Iops": { - "type": "integer" - }, - "OptionGroupName": {} - } - }, - "output": { - "resultWrapper": "RestoreDBInstanceToPointInTimeResult", - "type": "structure", - "members": { - "DBInstance": { - "shape": "St" - } - } - } - }, - "RevokeDBSecurityGroupIngress": { - "input": { - "type": "structure", - "required": [ - "DBSecurityGroupName" - ], - "members": { - "DBSecurityGroupName": {}, - "CIDRIP": {}, - "EC2SecurityGroupName": {}, - "EC2SecurityGroupId": {}, - "EC2SecurityGroupOwnerId": {} - } - }, - "output": { - "resultWrapper": "RevokeDBSecurityGroupIngressResult", - "type": "structure", - "members": { - "DBSecurityGroup": { - "shape": "Sd" - } - } - } - } - }, - "shapes": { - "S4": { - "type": "structure", - "members": { - "CustomerAwsId": {}, - "CustSubscriptionId": {}, - "SnsTopicArn": {}, - "Status": {}, - "SubscriptionCreationTime": {}, - "SourceType": {}, - "SourceIdsList": { - "shape": "S5" - }, - "EventCategoriesList": { - "shape": "S6" - }, - "Enabled": { - "type": "boolean" - } - }, - "wrapper": true - }, - "S5": { - "type": "list", - "member": { - "locationName": "SourceId" - } - }, - "S6": { - "type": "list", - "member": { - "locationName": "EventCategory" - } - }, - "S9": { - "type": "list", - "member": { - "locationName": "Tag", - "type": "structure", - "members": { - "Key": {}, - "Value": {} - } - } - }, - "Sd": { - "type": "structure", - "members": { - "OwnerId": {}, - "DBSecurityGroupName": {}, - "DBSecurityGroupDescription": {}, - "VpcId": {}, - "EC2SecurityGroups": { - "type": "list", - "member": { - "locationName": "EC2SecurityGroup", - "type": "structure", - "members": { - "Status": {}, - "EC2SecurityGroupName": {}, - "EC2SecurityGroupId": {}, - "EC2SecurityGroupOwnerId": {} - } - } - }, - "IPRanges": { - "type": "list", - "member": { - "locationName": "IPRange", - "type": "structure", - "members": { - "Status": {}, - "CIDRIP": {} - } - } - } - }, - "wrapper": true - }, - "Sk": { - "type": "structure", - "members": { - "DBSnapshotIdentifier": {}, - "DBInstanceIdentifier": {}, - "SnapshotCreateTime": { - "type": "timestamp" - }, - "Engine": {}, - "AllocatedStorage": { - "type": "integer" - }, - "Status": {}, - "Port": { - "type": "integer" - }, - "AvailabilityZone": {}, - "VpcId": {}, - "InstanceCreateTime": { - "type": "timestamp" - }, - "MasterUsername": {}, - "EngineVersion": {}, - "LicenseModel": {}, - "SnapshotType": {}, - "Iops": { - "type": "integer" - }, - "OptionGroupName": {} - }, - "wrapper": true - }, - "Sp": { - "type": "list", - "member": { - "locationName": "DBSecurityGroupName" - } - }, - "Sq": { - "type": "list", - "member": { - "locationName": "VpcSecurityGroupId" - } - }, - "St": { - "type": "structure", - "members": { - "DBInstanceIdentifier": {}, - "DBInstanceClass": {}, - "Engine": {}, - "DBInstanceStatus": {}, - "MasterUsername": {}, - "DBName": {}, - "Endpoint": { - "type": "structure", - "members": { - "Address": {}, - "Port": { - "type": "integer" - } - } - }, - "AllocatedStorage": { - "type": "integer" - }, - "InstanceCreateTime": { - "type": "timestamp" - }, - "PreferredBackupWindow": {}, - "BackupRetentionPeriod": { - "type": "integer" - }, - "DBSecurityGroups": { - "shape": "Sv" - }, - "VpcSecurityGroups": { - "shape": "Sx" - }, - "DBParameterGroups": { - "type": "list", - "member": { - "locationName": "DBParameterGroup", - "type": "structure", - "members": { - "DBParameterGroupName": {}, - "ParameterApplyStatus": {} - } - } - }, - "AvailabilityZone": {}, - "DBSubnetGroup": { - "shape": "S11" - }, - "PreferredMaintenanceWindow": {}, - "PendingModifiedValues": { - "type": "structure", - "members": { - "DBInstanceClass": {}, - "AllocatedStorage": { - "type": "integer" - }, - "MasterUserPassword": {}, - "Port": { - "type": "integer" - }, - "BackupRetentionPeriod": { - "type": "integer" - }, - "MultiAZ": { - "type": "boolean" - }, - "EngineVersion": {}, - "Iops": { - "type": "integer" - }, - "DBInstanceIdentifier": {} - } - }, - "LatestRestorableTime": { - "type": "timestamp" - }, - "MultiAZ": { - "type": "boolean" - }, - "EngineVersion": {}, - "AutoMinorVersionUpgrade": { - "type": "boolean" - }, - "ReadReplicaSourceDBInstanceIdentifier": {}, - "ReadReplicaDBInstanceIdentifiers": { - "type": "list", - "member": { - "locationName": "ReadReplicaDBInstanceIdentifier" - } - }, - "LicenseModel": {}, - "Iops": { - "type": "integer" - }, - "OptionGroupMemberships": { - "type": "list", - "member": { - "locationName": "OptionGroupMembership", - "type": "structure", - "members": { - "OptionGroupName": {}, - "Status": {} - } - } - }, - "CharacterSetName": {}, - "SecondaryAvailabilityZone": {}, - "PubliclyAccessible": { - "type": "boolean" - } - }, - "wrapper": true - }, - "Sv": { - "type": "list", - "member": { - "locationName": "DBSecurityGroup", - "type": "structure", - "members": { - "DBSecurityGroupName": {}, - "Status": {} - } - } - }, - "Sx": { - "type": "list", - "member": { - "locationName": "VpcSecurityGroupMembership", - "type": "structure", - "members": { - "VpcSecurityGroupId": {}, - "Status": {} - } - } - }, - "S11": { - "type": "structure", - "members": { - "DBSubnetGroupName": {}, - "DBSubnetGroupDescription": {}, - "VpcId": {}, - "SubnetGroupStatus": {}, - "Subnets": { - "type": "list", - "member": { - "locationName": "Subnet", - "type": "structure", - "members": { - "SubnetIdentifier": {}, - "SubnetAvailabilityZone": { - "shape": "S14" - }, - "SubnetStatus": {} - } - } - } - }, - "wrapper": true - }, - "S14": { - "type": "structure", - "members": { - "Name": {}, - "ProvisionedIopsCapable": { - "type": "boolean" - } - }, - "wrapper": true - }, - "S1d": { - "type": "structure", - "members": { - "DBParameterGroupName": {}, - "DBParameterGroupFamily": {}, - "Description": {} - }, - "wrapper": true - }, - "S1j": { - "type": "list", - "member": { - "locationName": "SubnetIdentifier" - } - }, - "S1p": { - "type": "structure", - "members": { - "OptionGroupName": {}, - "OptionGroupDescription": {}, - "EngineName": {}, - "MajorEngineVersion": {}, - "Options": { - "type": "list", - "member": { - "locationName": "Option", - "type": "structure", - "members": { - "OptionName": {}, - "OptionDescription": {}, - "Persistent": { - "type": "boolean" - }, - "Port": { - "type": "integer" - }, - "OptionSettings": { - "type": "list", - "member": { - "shape": "S1t", - "locationName": "OptionSetting" - } - }, - "DBSecurityGroupMemberships": { - "shape": "Sv" - }, - "VpcSecurityGroupMemberships": { - "shape": "Sx" - } - } - } - }, - "AllowsVpcAndNonVpcInstanceMemberships": { - "type": "boolean" - }, - "VpcId": {} - }, - "wrapper": true - }, - "S1t": { - "type": "structure", - "members": { - "Name": {}, - "Value": {}, - "DefaultValue": {}, - "Description": {}, - "ApplyType": {}, - "DataType": {}, - "AllowedValues": {}, - "IsModifiable": { - "type": "boolean" - }, - "IsCollection": { - "type": "boolean" - } - } - }, - "S28": { - "type": "structure", - "members": { - "CharacterSetName": {}, - "CharacterSetDescription": {} - } - }, - "S2n": { - "type": "list", - "member": { - "locationName": "Parameter", - "type": "structure", - "members": { - "ParameterName": {}, - "ParameterValue": {}, - "Description": {}, - "Source": {}, - "ApplyType": {}, - "DataType": {}, - "AllowedValues": {}, - "IsModifiable": { - "type": "boolean" - }, - "MinimumEngineVersion": {}, - "ApplyMethod": {} - } - } - }, - "S3w": { - "type": "structure", - "members": { - "ReservedDBInstanceId": {}, - "ReservedDBInstancesOfferingId": {}, - "DBInstanceClass": {}, - "StartTime": { - "type": "timestamp" - }, - "Duration": { - "type": "integer" - }, - "FixedPrice": { - "type": "double" - }, - "UsagePrice": { - "type": "double" - }, - "CurrencyCode": {}, - "DBInstanceCount": { - "type": "integer" - }, - "ProductDescription": {}, - "OfferingType": {}, - "MultiAZ": { - "type": "boolean" - }, - "State": {}, - "RecurringCharges": { - "shape": "S3y" - } - }, - "wrapper": true - }, - "S3y": { - "type": "list", - "member": { - "locationName": "RecurringCharge", - "type": "structure", - "members": { - "RecurringChargeAmount": { - "type": "double" - }, - "RecurringChargeFrequency": {} - }, - "wrapper": true - } - }, - "S4b": { - "type": "structure", - "members": { - "DBParameterGroupName": {} - } - } - } -} \ No newline at end of file diff --git a/workshops/monte-carlo-on-ec2-spot-fleet/src/web/node_modules/aws-sdk/apis/rds-2013-02-12.paginators.json b/workshops/monte-carlo-on-ec2-spot-fleet/src/web/node_modules/aws-sdk/apis/rds-2013-02-12.paginators.json deleted file mode 100644 index c51d8d15..00000000 --- a/workshops/monte-carlo-on-ec2-spot-fleet/src/web/node_modules/aws-sdk/apis/rds-2013-02-12.paginators.json +++ /dev/null @@ -1,110 +0,0 @@ -{ - "pagination": { - "DescribeDBEngineVersions": { - "input_token": "Marker", - "limit_key": "MaxRecords", - "output_token": "Marker", - "result_key": "DBEngineVersions" - }, - "DescribeDBInstances": { - "input_token": "Marker", - "limit_key": "MaxRecords", - "output_token": "Marker", - "result_key": "DBInstances" - }, - "DescribeDBLogFiles": { - "input_token": "Marker", - "limit_key": "MaxRecords", - "output_token": "Marker", - "result_key": "DescribeDBLogFiles" - }, - "DescribeDBParameterGroups": { - "input_token": "Marker", - "limit_key": "MaxRecords", - "output_token": "Marker", - "result_key": "DBParameterGroups" - }, - "DescribeDBParameters": { - "input_token": "Marker", - "limit_key": "MaxRecords", - "output_token": "Marker", - "result_key": "Parameters" - }, - "DescribeDBSecurityGroups": { - "input_token": "Marker", - "limit_key": "MaxRecords", - "output_token": "Marker", - "result_key": "DBSecurityGroups" - }, - "DescribeDBSnapshots": { - "input_token": "Marker", - "limit_key": "MaxRecords", - "output_token": "Marker", - "result_key": "DBSnapshots" - }, - "DescribeDBSubnetGroups": { - "input_token": "Marker", - "limit_key": "MaxRecords", - "output_token": "Marker", - "result_key": "DBSubnetGroups" - }, - "DescribeEngineDefaultParameters": { - "input_token": "Marker", - "limit_key": "MaxRecords", - "output_token": "EngineDefaults.Marker", - "result_key": "EngineDefaults.Parameters" - }, - "DescribeEventSubscriptions": { - "input_token": "Marker", - "limit_key": "MaxRecords", - "output_token": "Marker", - "result_key": "EventSubscriptionsList" - }, - "DescribeEvents": { - "input_token": "Marker", - "limit_key": "MaxRecords", - "output_token": "Marker", - "result_key": "Events" - }, - "DescribeOptionGroupOptions": { - "input_token": "Marker", - "limit_key": "MaxRecords", - "output_token": "Marker", - "result_key": "OptionGroupOptions" - }, - "DescribeOptionGroups": { - "input_token": "Marker", - "limit_key": "MaxRecords", - "output_token": "Marker", - "result_key": "OptionGroupsList" - }, - "DescribeOrderableDBInstanceOptions": { - "input_token": "Marker", - "limit_key": "MaxRecords", - "output_token": "Marker", - "result_key": "OrderableDBInstanceOptions" - }, - "DescribeReservedDBInstances": { - "input_token": "Marker", - "limit_key": "MaxRecords", - "output_token": "Marker", - "result_key": "ReservedDBInstances" - }, - "DescribeReservedDBInstancesOfferings": { - "input_token": "Marker", - "limit_key": "MaxRecords", - "output_token": "Marker", - "result_key": "ReservedDBInstancesOfferings" - }, - "DownloadDBLogFilePortion": { - "input_token": "Marker", - "limit_key": "NumberOfLines", - "more_results": "AdditionalDataPending", - "output_token": "Marker", - "result_key": "LogFileData" - }, - "ListTagsForResource": { - "result_key": "TagList" - } - } -} \ No newline at end of file diff --git a/workshops/monte-carlo-on-ec2-spot-fleet/src/web/node_modules/aws-sdk/apis/rds-2013-09-09.examples.json b/workshops/monte-carlo-on-ec2-spot-fleet/src/web/node_modules/aws-sdk/apis/rds-2013-09-09.examples.json deleted file mode 100644 index 0ea7e3b0..00000000 --- a/workshops/monte-carlo-on-ec2-spot-fleet/src/web/node_modules/aws-sdk/apis/rds-2013-09-09.examples.json +++ /dev/null @@ -1,5 +0,0 @@ -{ - "version": "1.0", - "examples": { - } -} diff --git a/workshops/monte-carlo-on-ec2-spot-fleet/src/web/node_modules/aws-sdk/apis/rds-2013-09-09.min.json b/workshops/monte-carlo-on-ec2-spot-fleet/src/web/node_modules/aws-sdk/apis/rds-2013-09-09.min.json deleted file mode 100644 index 3722f46f..00000000 --- a/workshops/monte-carlo-on-ec2-spot-fleet/src/web/node_modules/aws-sdk/apis/rds-2013-09-09.min.json +++ /dev/null @@ -1,2164 +0,0 @@ -{ - "version": "2.0", - "metadata": { - "apiVersion": "2013-09-09", - "endpointPrefix": "rds", - "protocol": "query", - "serviceAbbreviation": "Amazon RDS", - "serviceFullName": "Amazon Relational Database Service", - "signatureVersion": "v4", - "uid": "rds-2013-09-09", - "xmlNamespace": "http://rds.amazonaws.com/doc/2013-09-09/" - }, - "operations": { - "AddSourceIdentifierToSubscription": { - "input": { - "type": "structure", - "required": [ - "SubscriptionName", - "SourceIdentifier" - ], - "members": { - "SubscriptionName": {}, - "SourceIdentifier": {} - } - }, - "output": { - "resultWrapper": "AddSourceIdentifierToSubscriptionResult", - "type": "structure", - "members": { - "EventSubscription": { - "shape": "S4" - } - } - } - }, - "AddTagsToResource": { - "input": { - "type": "structure", - "required": [ - "ResourceName", - "Tags" - ], - "members": { - "ResourceName": {}, - "Tags": { - "shape": "S9" - } - } - } - }, - "AuthorizeDBSecurityGroupIngress": { - "input": { - "type": "structure", - "required": [ - "DBSecurityGroupName" - ], - "members": { - "DBSecurityGroupName": {}, - "CIDRIP": {}, - "EC2SecurityGroupName": {}, - "EC2SecurityGroupId": {}, - "EC2SecurityGroupOwnerId": {} - } - }, - "output": { - "resultWrapper": "AuthorizeDBSecurityGroupIngressResult", - "type": "structure", - "members": { - "DBSecurityGroup": { - "shape": "Sd" - } - } - } - }, - "CopyDBSnapshot": { - "input": { - "type": "structure", - "required": [ - "SourceDBSnapshotIdentifier", - "TargetDBSnapshotIdentifier" - ], - "members": { - "SourceDBSnapshotIdentifier": {}, - "TargetDBSnapshotIdentifier": {}, - "Tags": { - "shape": "S9" - } - } - }, - "output": { - "resultWrapper": "CopyDBSnapshotResult", - "type": "structure", - "members": { - "DBSnapshot": { - "shape": "Sk" - } - } - } - }, - "CreateDBInstance": { - "input": { - "type": "structure", - "required": [ - "DBInstanceIdentifier", - "AllocatedStorage", - "DBInstanceClass", - "Engine", - "MasterUsername", - "MasterUserPassword" - ], - "members": { - "DBName": {}, - "DBInstanceIdentifier": {}, - "AllocatedStorage": { - "type": "integer" - }, - "DBInstanceClass": {}, - "Engine": {}, - "MasterUsername": {}, - "MasterUserPassword": {}, - "DBSecurityGroups": { - "shape": "Sp" - }, - "VpcSecurityGroupIds": { - "shape": "Sq" - }, - "AvailabilityZone": {}, - "DBSubnetGroupName": {}, - "PreferredMaintenanceWindow": {}, - "DBParameterGroupName": {}, - "BackupRetentionPeriod": { - "type": "integer" - }, - "PreferredBackupWindow": {}, - "Port": { - "type": "integer" - }, - "MultiAZ": { - "type": "boolean" - }, - "EngineVersion": {}, - "AutoMinorVersionUpgrade": { - "type": "boolean" - }, - "LicenseModel": {}, - "Iops": { - "type": "integer" - }, - "OptionGroupName": {}, - "CharacterSetName": {}, - "PubliclyAccessible": { - "type": "boolean" - }, - "Tags": { - "shape": "S9" - } - } - }, - "output": { - "resultWrapper": "CreateDBInstanceResult", - "type": "structure", - "members": { - "DBInstance": { - "shape": "St" - } - } - } - }, - "CreateDBInstanceReadReplica": { - "input": { - "type": "structure", - "required": [ - "DBInstanceIdentifier", - "SourceDBInstanceIdentifier" - ], - "members": { - "DBInstanceIdentifier": {}, - "SourceDBInstanceIdentifier": {}, - "DBInstanceClass": {}, - "AvailabilityZone": {}, - "Port": { - "type": "integer" - }, - "AutoMinorVersionUpgrade": { - "type": "boolean" - }, - "Iops": { - "type": "integer" - }, - "OptionGroupName": {}, - "PubliclyAccessible": { - "type": "boolean" - }, - "Tags": { - "shape": "S9" - }, - "DBSubnetGroupName": {} - } - }, - "output": { - "resultWrapper": "CreateDBInstanceReadReplicaResult", - "type": "structure", - "members": { - "DBInstance": { - "shape": "St" - } - } - } - }, - "CreateDBParameterGroup": { - "input": { - "type": "structure", - "required": [ - "DBParameterGroupName", - "DBParameterGroupFamily", - "Description" - ], - "members": { - "DBParameterGroupName": {}, - "DBParameterGroupFamily": {}, - "Description": {}, - "Tags": { - "shape": "S9" - } - } - }, - "output": { - "resultWrapper": "CreateDBParameterGroupResult", - "type": "structure", - "members": { - "DBParameterGroup": { - "shape": "S1f" - } - } - } - }, - "CreateDBSecurityGroup": { - "input": { - "type": "structure", - "required": [ - "DBSecurityGroupName", - "DBSecurityGroupDescription" - ], - "members": { - "DBSecurityGroupName": {}, - "DBSecurityGroupDescription": {}, - "Tags": { - "shape": "S9" - } - } - }, - "output": { - "resultWrapper": "CreateDBSecurityGroupResult", - "type": "structure", - "members": { - "DBSecurityGroup": { - "shape": "Sd" - } - } - } - }, - "CreateDBSnapshot": { - "input": { - "type": "structure", - "required": [ - "DBSnapshotIdentifier", - "DBInstanceIdentifier" - ], - "members": { - "DBSnapshotIdentifier": {}, - "DBInstanceIdentifier": {}, - "Tags": { - "shape": "S9" - } - } - }, - "output": { - "resultWrapper": "CreateDBSnapshotResult", - "type": "structure", - "members": { - "DBSnapshot": { - "shape": "Sk" - } - } - } - }, - "CreateDBSubnetGroup": { - "input": { - "type": "structure", - "required": [ - "DBSubnetGroupName", - "DBSubnetGroupDescription", - "SubnetIds" - ], - "members": { - "DBSubnetGroupName": {}, - "DBSubnetGroupDescription": {}, - "SubnetIds": { - "shape": "S1l" - }, - "Tags": { - "shape": "S9" - } - } - }, - "output": { - "resultWrapper": "CreateDBSubnetGroupResult", - "type": "structure", - "members": { - "DBSubnetGroup": { - "shape": "S11" - } - } - } - }, - "CreateEventSubscription": { - "input": { - "type": "structure", - "required": [ - "SubscriptionName", - "SnsTopicArn" - ], - "members": { - "SubscriptionName": {}, - "SnsTopicArn": {}, - "SourceType": {}, - "EventCategories": { - "shape": "S6" - }, - "SourceIds": { - "shape": "S5" - }, - "Enabled": { - "type": "boolean" - }, - "Tags": { - "shape": "S9" - } - } - }, - "output": { - "resultWrapper": "CreateEventSubscriptionResult", - "type": "structure", - "members": { - "EventSubscription": { - "shape": "S4" - } - } - } - }, - "CreateOptionGroup": { - "input": { - "type": "structure", - "required": [ - "OptionGroupName", - "EngineName", - "MajorEngineVersion", - "OptionGroupDescription" - ], - "members": { - "OptionGroupName": {}, - "EngineName": {}, - "MajorEngineVersion": {}, - "OptionGroupDescription": {}, - "Tags": { - "shape": "S9" - } - } - }, - "output": { - "resultWrapper": "CreateOptionGroupResult", - "type": "structure", - "members": { - "OptionGroup": { - "shape": "S1r" - } - } - } - }, - "DeleteDBInstance": { - "input": { - "type": "structure", - "required": [ - "DBInstanceIdentifier" - ], - "members": { - "DBInstanceIdentifier": {}, - "SkipFinalSnapshot": { - "type": "boolean" - }, - "FinalDBSnapshotIdentifier": {} - } - }, - "output": { - "resultWrapper": "DeleteDBInstanceResult", - "type": "structure", - "members": { - "DBInstance": { - "shape": "St" - } - } - } - }, - "DeleteDBParameterGroup": { - "input": { - "type": "structure", - "required": [ - "DBParameterGroupName" - ], - "members": { - "DBParameterGroupName": {} - } - } - }, - "DeleteDBSecurityGroup": { - "input": { - "type": "structure", - "required": [ - "DBSecurityGroupName" - ], - "members": { - "DBSecurityGroupName": {} - } - } - }, - "DeleteDBSnapshot": { - "input": { - "type": "structure", - "required": [ - "DBSnapshotIdentifier" - ], - "members": { - "DBSnapshotIdentifier": {} - } - }, - "output": { - "resultWrapper": "DeleteDBSnapshotResult", - "type": "structure", - "members": { - "DBSnapshot": { - "shape": "Sk" - } - } - } - }, - "DeleteDBSubnetGroup": { - "input": { - "type": "structure", - "required": [ - "DBSubnetGroupName" - ], - "members": { - "DBSubnetGroupName": {} - } - } - }, - "DeleteEventSubscription": { - "input": { - "type": "structure", - "required": [ - "SubscriptionName" - ], - "members": { - "SubscriptionName": {} - } - }, - "output": { - "resultWrapper": "DeleteEventSubscriptionResult", - "type": "structure", - "members": { - "EventSubscription": { - "shape": "S4" - } - } - } - }, - "DeleteOptionGroup": { - "input": { - "type": "structure", - "required": [ - "OptionGroupName" - ], - "members": { - "OptionGroupName": {} - } - } - }, - "DescribeDBEngineVersions": { - "input": { - "type": "structure", - "members": { - "Engine": {}, - "EngineVersion": {}, - "DBParameterGroupFamily": {}, - "Filters": { - "shape": "S27" - }, - "MaxRecords": { - "type": "integer" - }, - "Marker": {}, - "DefaultOnly": { - "type": "boolean" - }, - "ListSupportedCharacterSets": { - "type": "boolean" - } - } - }, - "output": { - "resultWrapper": "DescribeDBEngineVersionsResult", - "type": "structure", - "members": { - "Marker": {}, - "DBEngineVersions": { - "type": "list", - "member": { - "locationName": "DBEngineVersion", - "type": "structure", - "members": { - "Engine": {}, - "EngineVersion": {}, - "DBParameterGroupFamily": {}, - "DBEngineDescription": {}, - "DBEngineVersionDescription": {}, - "DefaultCharacterSet": { - "shape": "S2d" - }, - "SupportedCharacterSets": { - "type": "list", - "member": { - "shape": "S2d", - "locationName": "CharacterSet" - } - } - } - } - } - } - } - }, - "DescribeDBInstances": { - "input": { - "type": "structure", - "members": { - "DBInstanceIdentifier": {}, - "Filters": { - "shape": "S27" - }, - "MaxRecords": { - "type": "integer" - }, - "Marker": {} - } - }, - "output": { - "resultWrapper": "DescribeDBInstancesResult", - "type": "structure", - "members": { - "Marker": {}, - "DBInstances": { - "type": "list", - "member": { - "shape": "St", - "locationName": "DBInstance" - } - } - } - } - }, - "DescribeDBLogFiles": { - "input": { - "type": "structure", - "required": [ - "DBInstanceIdentifier" - ], - "members": { - "DBInstanceIdentifier": {}, - "FilenameContains": {}, - "FileLastWritten": { - "type": "long" - }, - "FileSize": { - "type": "long" - }, - "Filters": { - "shape": "S27" - }, - "MaxRecords": { - "type": "integer" - }, - "Marker": {} - } - }, - "output": { - "resultWrapper": "DescribeDBLogFilesResult", - "type": "structure", - "members": { - "DescribeDBLogFiles": { - "type": "list", - "member": { - "locationName": "DescribeDBLogFilesDetails", - "type": "structure", - "members": { - "LogFileName": {}, - "LastWritten": { - "type": "long" - }, - "Size": { - "type": "long" - } - } - } - }, - "Marker": {} - } - } - }, - "DescribeDBParameterGroups": { - "input": { - "type": "structure", - "members": { - "DBParameterGroupName": {}, - "Filters": { - "shape": "S27" - }, - "MaxRecords": { - "type": "integer" - }, - "Marker": {} - } - }, - "output": { - "resultWrapper": "DescribeDBParameterGroupsResult", - "type": "structure", - "members": { - "Marker": {}, - "DBParameterGroups": { - "type": "list", - "member": { - "shape": "S1f", - "locationName": "DBParameterGroup" - } - } - } - } - }, - "DescribeDBParameters": { - "input": { - "type": "structure", - "required": [ - "DBParameterGroupName" - ], - "members": { - "DBParameterGroupName": {}, - "Source": {}, - "Filters": { - "shape": "S27" - }, - "MaxRecords": { - "type": "integer" - }, - "Marker": {} - } - }, - "output": { - "resultWrapper": "DescribeDBParametersResult", - "type": "structure", - "members": { - "Parameters": { - "shape": "S2s" - }, - "Marker": {} - } - } - }, - "DescribeDBSecurityGroups": { - "input": { - "type": "structure", - "members": { - "DBSecurityGroupName": {}, - "Filters": { - "shape": "S27" - }, - "MaxRecords": { - "type": "integer" - }, - "Marker": {} - } - }, - "output": { - "resultWrapper": "DescribeDBSecurityGroupsResult", - "type": "structure", - "members": { - "Marker": {}, - "DBSecurityGroups": { - "type": "list", - "member": { - "shape": "Sd", - "locationName": "DBSecurityGroup" - } - } - } - } - }, - "DescribeDBSnapshots": { - "input": { - "type": "structure", - "members": { - "DBInstanceIdentifier": {}, - "DBSnapshotIdentifier": {}, - "SnapshotType": {}, - "Filters": { - "shape": "S27" - }, - "MaxRecords": { - "type": "integer" - }, - "Marker": {} - } - }, - "output": { - "resultWrapper": "DescribeDBSnapshotsResult", - "type": "structure", - "members": { - "Marker": {}, - "DBSnapshots": { - "type": "list", - "member": { - "shape": "Sk", - "locationName": "DBSnapshot" - } - } - } - } - }, - "DescribeDBSubnetGroups": { - "input": { - "type": "structure", - "members": { - "DBSubnetGroupName": {}, - "Filters": { - "shape": "S27" - }, - "MaxRecords": { - "type": "integer" - }, - "Marker": {} - } - }, - "output": { - "resultWrapper": "DescribeDBSubnetGroupsResult", - "type": "structure", - "members": { - "Marker": {}, - "DBSubnetGroups": { - "type": "list", - "member": { - "shape": "S11", - "locationName": "DBSubnetGroup" - } - } - } - } - }, - "DescribeEngineDefaultParameters": { - "input": { - "type": "structure", - "required": [ - "DBParameterGroupFamily" - ], - "members": { - "DBParameterGroupFamily": {}, - "Filters": { - "shape": "S27" - }, - "MaxRecords": { - "type": "integer" - }, - "Marker": {} - } - }, - "output": { - "resultWrapper": "DescribeEngineDefaultParametersResult", - "type": "structure", - "members": { - "EngineDefaults": { - "type": "structure", - "members": { - "DBParameterGroupFamily": {}, - "Marker": {}, - "Parameters": { - "shape": "S2s" - } - }, - "wrapper": true - } - } - } - }, - "DescribeEventCategories": { - "input": { - "type": "structure", - "members": { - "SourceType": {}, - "Filters": { - "shape": "S27" - } - } - }, - "output": { - "resultWrapper": "DescribeEventCategoriesResult", - "type": "structure", - "members": { - "EventCategoriesMapList": { - "type": "list", - "member": { - "locationName": "EventCategoriesMap", - "type": "structure", - "members": { - "SourceType": {}, - "EventCategories": { - "shape": "S6" - } - }, - "wrapper": true - } - } - } - } - }, - "DescribeEventSubscriptions": { - "input": { - "type": "structure", - "members": { - "SubscriptionName": {}, - "Filters": { - "shape": "S27" - }, - "MaxRecords": { - "type": "integer" - }, - "Marker": {} - } - }, - "output": { - "resultWrapper": "DescribeEventSubscriptionsResult", - "type": "structure", - "members": { - "Marker": {}, - "EventSubscriptionsList": { - "type": "list", - "member": { - "shape": "S4", - "locationName": "EventSubscription" - } - } - } - } - }, - "DescribeEvents": { - "input": { - "type": "structure", - "members": { - "SourceIdentifier": {}, - "SourceType": {}, - "StartTime": { - "type": "timestamp" - }, - "EndTime": { - "type": "timestamp" - }, - "Duration": { - "type": "integer" - }, - "EventCategories": { - "shape": "S6" - }, - "Filters": { - "shape": "S27" - }, - "MaxRecords": { - "type": "integer" - }, - "Marker": {} - } - }, - "output": { - "resultWrapper": "DescribeEventsResult", - "type": "structure", - "members": { - "Marker": {}, - "Events": { - "type": "list", - "member": { - "locationName": "Event", - "type": "structure", - "members": { - "SourceIdentifier": {}, - "SourceType": {}, - "Message": {}, - "EventCategories": { - "shape": "S6" - }, - "Date": { - "type": "timestamp" - } - } - } - } - } - } - }, - "DescribeOptionGroupOptions": { - "input": { - "type": "structure", - "required": [ - "EngineName" - ], - "members": { - "EngineName": {}, - "MajorEngineVersion": {}, - "Filters": { - "shape": "S27" - }, - "MaxRecords": { - "type": "integer" - }, - "Marker": {} - } - }, - "output": { - "resultWrapper": "DescribeOptionGroupOptionsResult", - "type": "structure", - "members": { - "OptionGroupOptions": { - "type": "list", - "member": { - "locationName": "OptionGroupOption", - "type": "structure", - "members": { - "Name": {}, - "Description": {}, - "EngineName": {}, - "MajorEngineVersion": {}, - "MinimumRequiredMinorEngineVersion": {}, - "PortRequired": { - "type": "boolean" - }, - "DefaultPort": { - "type": "integer" - }, - "OptionsDependedOn": { - "type": "list", - "member": { - "locationName": "OptionName" - } - }, - "Persistent": { - "type": "boolean" - }, - "Permanent": { - "type": "boolean" - }, - "OptionGroupOptionSettings": { - "type": "list", - "member": { - "locationName": "OptionGroupOptionSetting", - "type": "structure", - "members": { - "SettingName": {}, - "SettingDescription": {}, - "DefaultValue": {}, - "ApplyType": {}, - "AllowedValues": {}, - "IsModifiable": { - "type": "boolean" - } - } - } - } - } - } - }, - "Marker": {} - } - } - }, - "DescribeOptionGroups": { - "input": { - "type": "structure", - "members": { - "OptionGroupName": {}, - "Filters": { - "shape": "S27" - }, - "Marker": {}, - "MaxRecords": { - "type": "integer" - }, - "EngineName": {}, - "MajorEngineVersion": {} - } - }, - "output": { - "resultWrapper": "DescribeOptionGroupsResult", - "type": "structure", - "members": { - "OptionGroupsList": { - "type": "list", - "member": { - "shape": "S1r", - "locationName": "OptionGroup" - } - }, - "Marker": {} - } - } - }, - "DescribeOrderableDBInstanceOptions": { - "input": { - "type": "structure", - "required": [ - "Engine" - ], - "members": { - "Engine": {}, - "EngineVersion": {}, - "DBInstanceClass": {}, - "LicenseModel": {}, - "Vpc": { - "type": "boolean" - }, - "Filters": { - "shape": "S27" - }, - "MaxRecords": { - "type": "integer" - }, - "Marker": {} - } - }, - "output": { - "resultWrapper": "DescribeOrderableDBInstanceOptionsResult", - "type": "structure", - "members": { - "OrderableDBInstanceOptions": { - "type": "list", - "member": { - "locationName": "OrderableDBInstanceOption", - "type": "structure", - "members": { - "Engine": {}, - "EngineVersion": {}, - "DBInstanceClass": {}, - "LicenseModel": {}, - "AvailabilityZones": { - "type": "list", - "member": { - "shape": "S14", - "locationName": "AvailabilityZone" - } - }, - "MultiAZCapable": { - "type": "boolean" - }, - "ReadReplicaCapable": { - "type": "boolean" - }, - "Vpc": { - "type": "boolean" - } - }, - "wrapper": true - } - }, - "Marker": {} - } - } - }, - "DescribeReservedDBInstances": { - "input": { - "type": "structure", - "members": { - "ReservedDBInstanceId": {}, - "ReservedDBInstancesOfferingId": {}, - "DBInstanceClass": {}, - "Duration": {}, - "ProductDescription": {}, - "OfferingType": {}, - "MultiAZ": { - "type": "boolean" - }, - "Filters": { - "shape": "S27" - }, - "MaxRecords": { - "type": "integer" - }, - "Marker": {} - } - }, - "output": { - "resultWrapper": "DescribeReservedDBInstancesResult", - "type": "structure", - "members": { - "Marker": {}, - "ReservedDBInstances": { - "type": "list", - "member": { - "shape": "S41", - "locationName": "ReservedDBInstance" - } - } - } - } - }, - "DescribeReservedDBInstancesOfferings": { - "input": { - "type": "structure", - "members": { - "ReservedDBInstancesOfferingId": {}, - "DBInstanceClass": {}, - "Duration": {}, - "ProductDescription": {}, - "OfferingType": {}, - "MultiAZ": { - "type": "boolean" - }, - "Filters": { - "shape": "S27" - }, - "MaxRecords": { - "type": "integer" - }, - "Marker": {} - } - }, - "output": { - "resultWrapper": "DescribeReservedDBInstancesOfferingsResult", - "type": "structure", - "members": { - "Marker": {}, - "ReservedDBInstancesOfferings": { - "type": "list", - "member": { - "locationName": "ReservedDBInstancesOffering", - "type": "structure", - "members": { - "ReservedDBInstancesOfferingId": {}, - "DBInstanceClass": {}, - "Duration": { - "type": "integer" - }, - "FixedPrice": { - "type": "double" - }, - "UsagePrice": { - "type": "double" - }, - "CurrencyCode": {}, - "ProductDescription": {}, - "OfferingType": {}, - "MultiAZ": { - "type": "boolean" - }, - "RecurringCharges": { - "shape": "S43" - } - }, - "wrapper": true - } - } - } - } - }, - "DownloadDBLogFilePortion": { - "input": { - "type": "structure", - "required": [ - "DBInstanceIdentifier", - "LogFileName" - ], - "members": { - "DBInstanceIdentifier": {}, - "LogFileName": {}, - "Marker": {}, - "NumberOfLines": { - "type": "integer" - } - } - }, - "output": { - "resultWrapper": "DownloadDBLogFilePortionResult", - "type": "structure", - "members": { - "LogFileData": {}, - "Marker": {}, - "AdditionalDataPending": { - "type": "boolean" - } - } - } - }, - "ListTagsForResource": { - "input": { - "type": "structure", - "required": [ - "ResourceName" - ], - "members": { - "ResourceName": {}, - "Filters": { - "shape": "S27" - } - } - }, - "output": { - "resultWrapper": "ListTagsForResourceResult", - "type": "structure", - "members": { - "TagList": { - "shape": "S9" - } - } - } - }, - "ModifyDBInstance": { - "input": { - "type": "structure", - "required": [ - "DBInstanceIdentifier" - ], - "members": { - "DBInstanceIdentifier": {}, - "AllocatedStorage": { - "type": "integer" - }, - "DBInstanceClass": {}, - "DBSecurityGroups": { - "shape": "Sp" - }, - "VpcSecurityGroupIds": { - "shape": "Sq" - }, - "ApplyImmediately": { - "type": "boolean" - }, - "MasterUserPassword": {}, - "DBParameterGroupName": {}, - "BackupRetentionPeriod": { - "type": "integer" - }, - "PreferredBackupWindow": {}, - "PreferredMaintenanceWindow": {}, - "MultiAZ": { - "type": "boolean" - }, - "EngineVersion": {}, - "AllowMajorVersionUpgrade": { - "type": "boolean" - }, - "AutoMinorVersionUpgrade": { - "type": "boolean" - }, - "Iops": { - "type": "integer" - }, - "OptionGroupName": {}, - "NewDBInstanceIdentifier": {} - } - }, - "output": { - "resultWrapper": "ModifyDBInstanceResult", - "type": "structure", - "members": { - "DBInstance": { - "shape": "St" - } - } - } - }, - "ModifyDBParameterGroup": { - "input": { - "type": "structure", - "required": [ - "DBParameterGroupName", - "Parameters" - ], - "members": { - "DBParameterGroupName": {}, - "Parameters": { - "shape": "S2s" - } - } - }, - "output": { - "shape": "S4g", - "resultWrapper": "ModifyDBParameterGroupResult" - } - }, - "ModifyDBSubnetGroup": { - "input": { - "type": "structure", - "required": [ - "DBSubnetGroupName", - "SubnetIds" - ], - "members": { - "DBSubnetGroupName": {}, - "DBSubnetGroupDescription": {}, - "SubnetIds": { - "shape": "S1l" - } - } - }, - "output": { - "resultWrapper": "ModifyDBSubnetGroupResult", - "type": "structure", - "members": { - "DBSubnetGroup": { - "shape": "S11" - } - } - } - }, - "ModifyEventSubscription": { - "input": { - "type": "structure", - "required": [ - "SubscriptionName" - ], - "members": { - "SubscriptionName": {}, - "SnsTopicArn": {}, - "SourceType": {}, - "EventCategories": { - "shape": "S6" - }, - "Enabled": { - "type": "boolean" - } - } - }, - "output": { - "resultWrapper": "ModifyEventSubscriptionResult", - "type": "structure", - "members": { - "EventSubscription": { - "shape": "S4" - } - } - } - }, - "ModifyOptionGroup": { - "input": { - "type": "structure", - "required": [ - "OptionGroupName" - ], - "members": { - "OptionGroupName": {}, - "OptionsToInclude": { - "type": "list", - "member": { - "locationName": "OptionConfiguration", - "type": "structure", - "required": [ - "OptionName" - ], - "members": { - "OptionName": {}, - "Port": { - "type": "integer" - }, - "DBSecurityGroupMemberships": { - "shape": "Sp" - }, - "VpcSecurityGroupMemberships": { - "shape": "Sq" - }, - "OptionSettings": { - "type": "list", - "member": { - "shape": "S1v", - "locationName": "OptionSetting" - } - } - } - } - }, - "OptionsToRemove": { - "type": "list", - "member": {} - }, - "ApplyImmediately": { - "type": "boolean" - } - } - }, - "output": { - "resultWrapper": "ModifyOptionGroupResult", - "type": "structure", - "members": { - "OptionGroup": { - "shape": "S1r" - } - } - } - }, - "PromoteReadReplica": { - "input": { - "type": "structure", - "required": [ - "DBInstanceIdentifier" - ], - "members": { - "DBInstanceIdentifier": {}, - "BackupRetentionPeriod": { - "type": "integer" - }, - "PreferredBackupWindow": {} - } - }, - "output": { - "resultWrapper": "PromoteReadReplicaResult", - "type": "structure", - "members": { - "DBInstance": { - "shape": "St" - } - } - } - }, - "PurchaseReservedDBInstancesOffering": { - "input": { - "type": "structure", - "required": [ - "ReservedDBInstancesOfferingId" - ], - "members": { - "ReservedDBInstancesOfferingId": {}, - "ReservedDBInstanceId": {}, - "DBInstanceCount": { - "type": "integer" - }, - "Tags": { - "shape": "S9" - } - } - }, - "output": { - "resultWrapper": "PurchaseReservedDBInstancesOfferingResult", - "type": "structure", - "members": { - "ReservedDBInstance": { - "shape": "S41" - } - } - } - }, - "RebootDBInstance": { - "input": { - "type": "structure", - "required": [ - "DBInstanceIdentifier" - ], - "members": { - "DBInstanceIdentifier": {}, - "ForceFailover": { - "type": "boolean" - } - } - }, - "output": { - "resultWrapper": "RebootDBInstanceResult", - "type": "structure", - "members": { - "DBInstance": { - "shape": "St" - } - } - } - }, - "RemoveSourceIdentifierFromSubscription": { - "input": { - "type": "structure", - "required": [ - "SubscriptionName", - "SourceIdentifier" - ], - "members": { - "SubscriptionName": {}, - "SourceIdentifier": {} - } - }, - "output": { - "resultWrapper": "RemoveSourceIdentifierFromSubscriptionResult", - "type": "structure", - "members": { - "EventSubscription": { - "shape": "S4" - } - } - } - }, - "RemoveTagsFromResource": { - "input": { - "type": "structure", - "required": [ - "ResourceName", - "TagKeys" - ], - "members": { - "ResourceName": {}, - "TagKeys": { - "type": "list", - "member": {} - } - } - } - }, - "ResetDBParameterGroup": { - "input": { - "type": "structure", - "required": [ - "DBParameterGroupName" - ], - "members": { - "DBParameterGroupName": {}, - "ResetAllParameters": { - "type": "boolean" - }, - "Parameters": { - "shape": "S2s" - } - } - }, - "output": { - "shape": "S4g", - "resultWrapper": "ResetDBParameterGroupResult" - } - }, - "RestoreDBInstanceFromDBSnapshot": { - "input": { - "type": "structure", - "required": [ - "DBInstanceIdentifier", - "DBSnapshotIdentifier" - ], - "members": { - "DBInstanceIdentifier": {}, - "DBSnapshotIdentifier": {}, - "DBInstanceClass": {}, - "Port": { - "type": "integer" - }, - "AvailabilityZone": {}, - "DBSubnetGroupName": {}, - "MultiAZ": { - "type": "boolean" - }, - "PubliclyAccessible": { - "type": "boolean" - }, - "AutoMinorVersionUpgrade": { - "type": "boolean" - }, - "LicenseModel": {}, - "DBName": {}, - "Engine": {}, - "Iops": { - "type": "integer" - }, - "OptionGroupName": {}, - "Tags": { - "shape": "S9" - } - } - }, - "output": { - "resultWrapper": "RestoreDBInstanceFromDBSnapshotResult", - "type": "structure", - "members": { - "DBInstance": { - "shape": "St" - } - } - } - }, - "RestoreDBInstanceToPointInTime": { - "input": { - "type": "structure", - "required": [ - "SourceDBInstanceIdentifier", - "TargetDBInstanceIdentifier" - ], - "members": { - "SourceDBInstanceIdentifier": {}, - "TargetDBInstanceIdentifier": {}, - "RestoreTime": { - "type": "timestamp" - }, - "UseLatestRestorableTime": { - "type": "boolean" - }, - "DBInstanceClass": {}, - "Port": { - "type": "integer" - }, - "AvailabilityZone": {}, - "DBSubnetGroupName": {}, - "MultiAZ": { - "type": "boolean" - }, - "PubliclyAccessible": { - "type": "boolean" - }, - "AutoMinorVersionUpgrade": { - "type": "boolean" - }, - "LicenseModel": {}, - "DBName": {}, - "Engine": {}, - "Iops": { - "type": "integer" - }, - "OptionGroupName": {}, - "Tags": { - "shape": "S9" - } - } - }, - "output": { - "resultWrapper": "RestoreDBInstanceToPointInTimeResult", - "type": "structure", - "members": { - "DBInstance": { - "shape": "St" - } - } - } - }, - "RevokeDBSecurityGroupIngress": { - "input": { - "type": "structure", - "required": [ - "DBSecurityGroupName" - ], - "members": { - "DBSecurityGroupName": {}, - "CIDRIP": {}, - "EC2SecurityGroupName": {}, - "EC2SecurityGroupId": {}, - "EC2SecurityGroupOwnerId": {} - } - }, - "output": { - "resultWrapper": "RevokeDBSecurityGroupIngressResult", - "type": "structure", - "members": { - "DBSecurityGroup": { - "shape": "Sd" - } - } - } - } - }, - "shapes": { - "S4": { - "type": "structure", - "members": { - "CustomerAwsId": {}, - "CustSubscriptionId": {}, - "SnsTopicArn": {}, - "Status": {}, - "SubscriptionCreationTime": {}, - "SourceType": {}, - "SourceIdsList": { - "shape": "S5" - }, - "EventCategoriesList": { - "shape": "S6" - }, - "Enabled": { - "type": "boolean" - } - }, - "wrapper": true - }, - "S5": { - "type": "list", - "member": { - "locationName": "SourceId" - } - }, - "S6": { - "type": "list", - "member": { - "locationName": "EventCategory" - } - }, - "S9": { - "type": "list", - "member": { - "locationName": "Tag", - "type": "structure", - "members": { - "Key": {}, - "Value": {} - } - } - }, - "Sd": { - "type": "structure", - "members": { - "OwnerId": {}, - "DBSecurityGroupName": {}, - "DBSecurityGroupDescription": {}, - "VpcId": {}, - "EC2SecurityGroups": { - "type": "list", - "member": { - "locationName": "EC2SecurityGroup", - "type": "structure", - "members": { - "Status": {}, - "EC2SecurityGroupName": {}, - "EC2SecurityGroupId": {}, - "EC2SecurityGroupOwnerId": {} - } - } - }, - "IPRanges": { - "type": "list", - "member": { - "locationName": "IPRange", - "type": "structure", - "members": { - "Status": {}, - "CIDRIP": {} - } - } - } - }, - "wrapper": true - }, - "Sk": { - "type": "structure", - "members": { - "DBSnapshotIdentifier": {}, - "DBInstanceIdentifier": {}, - "SnapshotCreateTime": { - "type": "timestamp" - }, - "Engine": {}, - "AllocatedStorage": { - "type": "integer" - }, - "Status": {}, - "Port": { - "type": "integer" - }, - "AvailabilityZone": {}, - "VpcId": {}, - "InstanceCreateTime": { - "type": "timestamp" - }, - "MasterUsername": {}, - "EngineVersion": {}, - "LicenseModel": {}, - "SnapshotType": {}, - "Iops": { - "type": "integer" - }, - "OptionGroupName": {}, - "PercentProgress": { - "type": "integer" - }, - "SourceRegion": {} - }, - "wrapper": true - }, - "Sp": { - "type": "list", - "member": { - "locationName": "DBSecurityGroupName" - } - }, - "Sq": { - "type": "list", - "member": { - "locationName": "VpcSecurityGroupId" - } - }, - "St": { - "type": "structure", - "members": { - "DBInstanceIdentifier": {}, - "DBInstanceClass": {}, - "Engine": {}, - "DBInstanceStatus": {}, - "MasterUsername": {}, - "DBName": {}, - "Endpoint": { - "type": "structure", - "members": { - "Address": {}, - "Port": { - "type": "integer" - } - } - }, - "AllocatedStorage": { - "type": "integer" - }, - "InstanceCreateTime": { - "type": "timestamp" - }, - "PreferredBackupWindow": {}, - "BackupRetentionPeriod": { - "type": "integer" - }, - "DBSecurityGroups": { - "shape": "Sv" - }, - "VpcSecurityGroups": { - "shape": "Sx" - }, - "DBParameterGroups": { - "type": "list", - "member": { - "locationName": "DBParameterGroup", - "type": "structure", - "members": { - "DBParameterGroupName": {}, - "ParameterApplyStatus": {} - } - } - }, - "AvailabilityZone": {}, - "DBSubnetGroup": { - "shape": "S11" - }, - "PreferredMaintenanceWindow": {}, - "PendingModifiedValues": { - "type": "structure", - "members": { - "DBInstanceClass": {}, - "AllocatedStorage": { - "type": "integer" - }, - "MasterUserPassword": {}, - "Port": { - "type": "integer" - }, - "BackupRetentionPeriod": { - "type": "integer" - }, - "MultiAZ": { - "type": "boolean" - }, - "EngineVersion": {}, - "Iops": { - "type": "integer" - }, - "DBInstanceIdentifier": {} - } - }, - "LatestRestorableTime": { - "type": "timestamp" - }, - "MultiAZ": { - "type": "boolean" - }, - "EngineVersion": {}, - "AutoMinorVersionUpgrade": { - "type": "boolean" - }, - "ReadReplicaSourceDBInstanceIdentifier": {}, - "ReadReplicaDBInstanceIdentifiers": { - "type": "list", - "member": { - "locationName": "ReadReplicaDBInstanceIdentifier" - } - }, - "LicenseModel": {}, - "Iops": { - "type": "integer" - }, - "OptionGroupMemberships": { - "type": "list", - "member": { - "locationName": "OptionGroupMembership", - "type": "structure", - "members": { - "OptionGroupName": {}, - "Status": {} - } - } - }, - "CharacterSetName": {}, - "SecondaryAvailabilityZone": {}, - "PubliclyAccessible": { - "type": "boolean" - }, - "StatusInfos": { - "type": "list", - "member": { - "locationName": "DBInstanceStatusInfo", - "type": "structure", - "members": { - "StatusType": {}, - "Normal": { - "type": "boolean" - }, - "Status": {}, - "Message": {} - } - } - } - }, - "wrapper": true - }, - "Sv": { - "type": "list", - "member": { - "locationName": "DBSecurityGroup", - "type": "structure", - "members": { - "DBSecurityGroupName": {}, - "Status": {} - } - } - }, - "Sx": { - "type": "list", - "member": { - "locationName": "VpcSecurityGroupMembership", - "type": "structure", - "members": { - "VpcSecurityGroupId": {}, - "Status": {} - } - } - }, - "S11": { - "type": "structure", - "members": { - "DBSubnetGroupName": {}, - "DBSubnetGroupDescription": {}, - "VpcId": {}, - "SubnetGroupStatus": {}, - "Subnets": { - "type": "list", - "member": { - "locationName": "Subnet", - "type": "structure", - "members": { - "SubnetIdentifier": {}, - "SubnetAvailabilityZone": { - "shape": "S14" - }, - "SubnetStatus": {} - } - } - } - }, - "wrapper": true - }, - "S14": { - "type": "structure", - "members": { - "Name": {}, - "ProvisionedIopsCapable": { - "type": "boolean" - } - }, - "wrapper": true - }, - "S1f": { - "type": "structure", - "members": { - "DBParameterGroupName": {}, - "DBParameterGroupFamily": {}, - "Description": {} - }, - "wrapper": true - }, - "S1l": { - "type": "list", - "member": { - "locationName": "SubnetIdentifier" - } - }, - "S1r": { - "type": "structure", - "members": { - "OptionGroupName": {}, - "OptionGroupDescription": {}, - "EngineName": {}, - "MajorEngineVersion": {}, - "Options": { - "type": "list", - "member": { - "locationName": "Option", - "type": "structure", - "members": { - "OptionName": {}, - "OptionDescription": {}, - "Persistent": { - "type": "boolean" - }, - "Permanent": { - "type": "boolean" - }, - "Port": { - "type": "integer" - }, - "OptionSettings": { - "type": "list", - "member": { - "shape": "S1v", - "locationName": "OptionSetting" - } - }, - "DBSecurityGroupMemberships": { - "shape": "Sv" - }, - "VpcSecurityGroupMemberships": { - "shape": "Sx" - } - } - } - }, - "AllowsVpcAndNonVpcInstanceMemberships": { - "type": "boolean" - }, - "VpcId": {} - }, - "wrapper": true - }, - "S1v": { - "type": "structure", - "members": { - "Name": {}, - "Value": {}, - "DefaultValue": {}, - "Description": {}, - "ApplyType": {}, - "DataType": {}, - "AllowedValues": {}, - "IsModifiable": { - "type": "boolean" - }, - "IsCollection": { - "type": "boolean" - } - } - }, - "S27": { - "type": "list", - "member": { - "locationName": "Filter", - "type": "structure", - "required": [ - "Name", - "Values" - ], - "members": { - "Name": {}, - "Values": { - "type": "list", - "member": { - "locationName": "Value" - } - } - } - } - }, - "S2d": { - "type": "structure", - "members": { - "CharacterSetName": {}, - "CharacterSetDescription": {} - } - }, - "S2s": { - "type": "list", - "member": { - "locationName": "Parameter", - "type": "structure", - "members": { - "ParameterName": {}, - "ParameterValue": {}, - "Description": {}, - "Source": {}, - "ApplyType": {}, - "DataType": {}, - "AllowedValues": {}, - "IsModifiable": { - "type": "boolean" - }, - "MinimumEngineVersion": {}, - "ApplyMethod": {} - } - } - }, - "S41": { - "type": "structure", - "members": { - "ReservedDBInstanceId": {}, - "ReservedDBInstancesOfferingId": {}, - "DBInstanceClass": {}, - "StartTime": { - "type": "timestamp" - }, - "Duration": { - "type": "integer" - }, - "FixedPrice": { - "type": "double" - }, - "UsagePrice": { - "type": "double" - }, - "CurrencyCode": {}, - "DBInstanceCount": { - "type": "integer" - }, - "ProductDescription": {}, - "OfferingType": {}, - "MultiAZ": { - "type": "boolean" - }, - "State": {}, - "RecurringCharges": { - "shape": "S43" - } - }, - "wrapper": true - }, - "S43": { - "type": "list", - "member": { - "locationName": "RecurringCharge", - "type": "structure", - "members": { - "RecurringChargeAmount": { - "type": "double" - }, - "RecurringChargeFrequency": {} - }, - "wrapper": true - } - }, - "S4g": { - "type": "structure", - "members": { - "DBParameterGroupName": {} - } - } - } -} \ No newline at end of file diff --git a/workshops/monte-carlo-on-ec2-spot-fleet/src/web/node_modules/aws-sdk/apis/rds-2013-09-09.paginators.json b/workshops/monte-carlo-on-ec2-spot-fleet/src/web/node_modules/aws-sdk/apis/rds-2013-09-09.paginators.json deleted file mode 100644 index c51d8d15..00000000 --- a/workshops/monte-carlo-on-ec2-spot-fleet/src/web/node_modules/aws-sdk/apis/rds-2013-09-09.paginators.json +++ /dev/null @@ -1,110 +0,0 @@ -{ - "pagination": { - "DescribeDBEngineVersions": { - "input_token": "Marker", - "limit_key": "MaxRecords", - "output_token": "Marker", - "result_key": "DBEngineVersions" - }, - "DescribeDBInstances": { - "input_token": "Marker", - "limit_key": "MaxRecords", - "output_token": "Marker", - "result_key": "DBInstances" - }, - "DescribeDBLogFiles": { - "input_token": "Marker", - "limit_key": "MaxRecords", - "output_token": "Marker", - "result_key": "DescribeDBLogFiles" - }, - "DescribeDBParameterGroups": { - "input_token": "Marker", - "limit_key": "MaxRecords", - "output_token": "Marker", - "result_key": "DBParameterGroups" - }, - "DescribeDBParameters": { - "input_token": "Marker", - "limit_key": "MaxRecords", - "output_token": "Marker", - "result_key": "Parameters" - }, - "DescribeDBSecurityGroups": { - "input_token": "Marker", - "limit_key": "MaxRecords", - "output_token": "Marker", - "result_key": "DBSecurityGroups" - }, - "DescribeDBSnapshots": { - "input_token": "Marker", - "limit_key": "MaxRecords", - "output_token": "Marker", - "result_key": "DBSnapshots" - }, - "DescribeDBSubnetGroups": { - "input_token": "Marker", - "limit_key": "MaxRecords", - "output_token": "Marker", - "result_key": "DBSubnetGroups" - }, - "DescribeEngineDefaultParameters": { - "input_token": "Marker", - "limit_key": "MaxRecords", - "output_token": "EngineDefaults.Marker", - "result_key": "EngineDefaults.Parameters" - }, - "DescribeEventSubscriptions": { - "input_token": "Marker", - "limit_key": "MaxRecords", - "output_token": "Marker", - "result_key": "EventSubscriptionsList" - }, - "DescribeEvents": { - "input_token": "Marker", - "limit_key": "MaxRecords", - "output_token": "Marker", - "result_key": "Events" - }, - "DescribeOptionGroupOptions": { - "input_token": "Marker", - "limit_key": "MaxRecords", - "output_token": "Marker", - "result_key": "OptionGroupOptions" - }, - "DescribeOptionGroups": { - "input_token": "Marker", - "limit_key": "MaxRecords", - "output_token": "Marker", - "result_key": "OptionGroupsList" - }, - "DescribeOrderableDBInstanceOptions": { - "input_token": "Marker", - "limit_key": "MaxRecords", - "output_token": "Marker", - "result_key": "OrderableDBInstanceOptions" - }, - "DescribeReservedDBInstances": { - "input_token": "Marker", - "limit_key": "MaxRecords", - "output_token": "Marker", - "result_key": "ReservedDBInstances" - }, - "DescribeReservedDBInstancesOfferings": { - "input_token": "Marker", - "limit_key": "MaxRecords", - "output_token": "Marker", - "result_key": "ReservedDBInstancesOfferings" - }, - "DownloadDBLogFilePortion": { - "input_token": "Marker", - "limit_key": "NumberOfLines", - "more_results": "AdditionalDataPending", - "output_token": "Marker", - "result_key": "LogFileData" - }, - "ListTagsForResource": { - "result_key": "TagList" - } - } -} \ No newline at end of file diff --git a/workshops/monte-carlo-on-ec2-spot-fleet/src/web/node_modules/aws-sdk/apis/rds-2013-09-09.waiters2.json b/workshops/monte-carlo-on-ec2-spot-fleet/src/web/node_modules/aws-sdk/apis/rds-2013-09-09.waiters2.json deleted file mode 100644 index b0150079..00000000 --- a/workshops/monte-carlo-on-ec2-spot-fleet/src/web/node_modules/aws-sdk/apis/rds-2013-09-09.waiters2.json +++ /dev/null @@ -1,97 +0,0 @@ -{ - "version": 2, - "waiters": { - "DBInstanceAvailable": { - "delay": 30, - "operation": "DescribeDBInstances", - "maxAttempts": 60, - "acceptors": [ - { - "expected": "available", - "matcher": "pathAll", - "state": "success", - "argument": "DBInstances[].DBInstanceStatus" - }, - { - "expected": "deleted", - "matcher": "pathAny", - "state": "failure", - "argument": "DBInstances[].DBInstanceStatus" - }, - { - "expected": "deleting", - "matcher": "pathAny", - "state": "failure", - "argument": "DBInstances[].DBInstanceStatus" - }, - { - "expected": "failed", - "matcher": "pathAny", - "state": "failure", - "argument": "DBInstances[].DBInstanceStatus" - }, - { - "expected": "incompatible-restore", - "matcher": "pathAny", - "state": "failure", - "argument": "DBInstances[].DBInstanceStatus" - }, - { - "expected": "incompatible-parameters", - "matcher": "pathAny", - "state": "failure", - "argument": "DBInstances[].DBInstanceStatus" - }, - { - "expected": "incompatible-parameters", - "matcher": "pathAny", - "state": "failure", - "argument": "DBInstances[].DBInstanceStatus" - }, - { - "expected": "incompatible-restore", - "matcher": "pathAny", - "state": "failure", - "argument": "DBInstances[].DBInstanceStatus" - } - ] - }, - "DBInstanceDeleted": { - "delay": 30, - "operation": "DescribeDBInstances", - "maxAttempts": 60, - "acceptors": [ - { - "expected": "deleted", - "matcher": "pathAll", - "state": "success", - "argument": "DBInstances[].DBInstanceStatus" - }, - { - "expected": "creating", - "matcher": "pathAny", - "state": "failure", - "argument": "DBInstances[].DBInstanceStatus" - }, - { - "expected": "modifying", - "matcher": "pathAny", - "state": "failure", - "argument": "DBInstances[].DBInstanceStatus" - }, - { - "expected": "rebooting", - "matcher": "pathAny", - "state": "failure", - "argument": "DBInstances[].DBInstanceStatus" - }, - { - "expected": "resetting-master-credentials", - "matcher": "pathAny", - "state": "failure", - "argument": "DBInstances[].DBInstanceStatus" - } - ] - } - } -} diff --git a/workshops/monte-carlo-on-ec2-spot-fleet/src/web/node_modules/aws-sdk/apis/rds-2014-09-01.examples.json b/workshops/monte-carlo-on-ec2-spot-fleet/src/web/node_modules/aws-sdk/apis/rds-2014-09-01.examples.json deleted file mode 100644 index 0ea7e3b0..00000000 --- a/workshops/monte-carlo-on-ec2-spot-fleet/src/web/node_modules/aws-sdk/apis/rds-2014-09-01.examples.json +++ /dev/null @@ -1,5 +0,0 @@ -{ - "version": "1.0", - "examples": { - } -} diff --git a/workshops/monte-carlo-on-ec2-spot-fleet/src/web/node_modules/aws-sdk/apis/rds-2014-09-01.min.json b/workshops/monte-carlo-on-ec2-spot-fleet/src/web/node_modules/aws-sdk/apis/rds-2014-09-01.min.json deleted file mode 100644 index fe2e6c21..00000000 --- a/workshops/monte-carlo-on-ec2-spot-fleet/src/web/node_modules/aws-sdk/apis/rds-2014-09-01.min.json +++ /dev/null @@ -1,2237 +0,0 @@ -{ - "version": "2.0", - "metadata": { - "apiVersion": "2014-09-01", - "endpointPrefix": "rds", - "protocol": "query", - "serviceAbbreviation": "Amazon RDS", - "serviceFullName": "Amazon Relational Database Service", - "signatureVersion": "v4", - "uid": "rds-2014-09-01", - "xmlNamespace": "http://rds.amazonaws.com/doc/2014-09-01/" - }, - "operations": { - "AddSourceIdentifierToSubscription": { - "input": { - "type": "structure", - "required": [ - "SubscriptionName", - "SourceIdentifier" - ], - "members": { - "SubscriptionName": {}, - "SourceIdentifier": {} - } - }, - "output": { - "resultWrapper": "AddSourceIdentifierToSubscriptionResult", - "type": "structure", - "members": { - "EventSubscription": { - "shape": "S4" - } - } - } - }, - "AddTagsToResource": { - "input": { - "type": "structure", - "required": [ - "ResourceName", - "Tags" - ], - "members": { - "ResourceName": {}, - "Tags": { - "shape": "S9" - } - } - } - }, - "AuthorizeDBSecurityGroupIngress": { - "input": { - "type": "structure", - "required": [ - "DBSecurityGroupName" - ], - "members": { - "DBSecurityGroupName": {}, - "CIDRIP": {}, - "EC2SecurityGroupName": {}, - "EC2SecurityGroupId": {}, - "EC2SecurityGroupOwnerId": {} - } - }, - "output": { - "resultWrapper": "AuthorizeDBSecurityGroupIngressResult", - "type": "structure", - "members": { - "DBSecurityGroup": { - "shape": "Sd" - } - } - } - }, - "CopyDBParameterGroup": { - "input": { - "type": "structure", - "required": [ - "SourceDBParameterGroupIdentifier", - "TargetDBParameterGroupIdentifier", - "TargetDBParameterGroupDescription" - ], - "members": { - "SourceDBParameterGroupIdentifier": {}, - "TargetDBParameterGroupIdentifier": {}, - "TargetDBParameterGroupDescription": {}, - "Tags": { - "shape": "S9" - } - } - }, - "output": { - "resultWrapper": "CopyDBParameterGroupResult", - "type": "structure", - "members": { - "DBParameterGroup": { - "shape": "Sk" - } - } - } - }, - "CopyDBSnapshot": { - "input": { - "type": "structure", - "required": [ - "SourceDBSnapshotIdentifier", - "TargetDBSnapshotIdentifier" - ], - "members": { - "SourceDBSnapshotIdentifier": {}, - "TargetDBSnapshotIdentifier": {}, - "Tags": { - "shape": "S9" - } - } - }, - "output": { - "resultWrapper": "CopyDBSnapshotResult", - "type": "structure", - "members": { - "DBSnapshot": { - "shape": "Sn" - } - } - } - }, - "CopyOptionGroup": { - "input": { - "type": "structure", - "required": [ - "SourceOptionGroupIdentifier", - "TargetOptionGroupIdentifier", - "TargetOptionGroupDescription" - ], - "members": { - "SourceOptionGroupIdentifier": {}, - "TargetOptionGroupIdentifier": {}, - "TargetOptionGroupDescription": {}, - "Tags": { - "shape": "S9" - } - } - }, - "output": { - "resultWrapper": "CopyOptionGroupResult", - "type": "structure", - "members": { - "OptionGroup": { - "shape": "St" - } - } - } - }, - "CreateDBInstance": { - "input": { - "type": "structure", - "required": [ - "DBInstanceIdentifier", - "AllocatedStorage", - "DBInstanceClass", - "Engine", - "MasterUsername", - "MasterUserPassword" - ], - "members": { - "DBName": {}, - "DBInstanceIdentifier": {}, - "AllocatedStorage": { - "type": "integer" - }, - "DBInstanceClass": {}, - "Engine": {}, - "MasterUsername": {}, - "MasterUserPassword": {}, - "DBSecurityGroups": { - "shape": "S13" - }, - "VpcSecurityGroupIds": { - "shape": "S14" - }, - "AvailabilityZone": {}, - "DBSubnetGroupName": {}, - "PreferredMaintenanceWindow": {}, - "DBParameterGroupName": {}, - "BackupRetentionPeriod": { - "type": "integer" - }, - "PreferredBackupWindow": {}, - "Port": { - "type": "integer" - }, - "MultiAZ": { - "type": "boolean" - }, - "EngineVersion": {}, - "AutoMinorVersionUpgrade": { - "type": "boolean" - }, - "LicenseModel": {}, - "Iops": { - "type": "integer" - }, - "OptionGroupName": {}, - "CharacterSetName": {}, - "PubliclyAccessible": { - "type": "boolean" - }, - "Tags": { - "shape": "S9" - }, - "StorageType": {}, - "TdeCredentialArn": {}, - "TdeCredentialPassword": {} - } - }, - "output": { - "resultWrapper": "CreateDBInstanceResult", - "type": "structure", - "members": { - "DBInstance": { - "shape": "S17" - } - } - } - }, - "CreateDBInstanceReadReplica": { - "input": { - "type": "structure", - "required": [ - "DBInstanceIdentifier", - "SourceDBInstanceIdentifier" - ], - "members": { - "DBInstanceIdentifier": {}, - "SourceDBInstanceIdentifier": {}, - "DBInstanceClass": {}, - "AvailabilityZone": {}, - "Port": { - "type": "integer" - }, - "AutoMinorVersionUpgrade": { - "type": "boolean" - }, - "Iops": { - "type": "integer" - }, - "OptionGroupName": {}, - "PubliclyAccessible": { - "type": "boolean" - }, - "Tags": { - "shape": "S9" - }, - "DBSubnetGroupName": {}, - "StorageType": {} - } - }, - "output": { - "resultWrapper": "CreateDBInstanceReadReplicaResult", - "type": "structure", - "members": { - "DBInstance": { - "shape": "S17" - } - } - } - }, - "CreateDBParameterGroup": { - "input": { - "type": "structure", - "required": [ - "DBParameterGroupName", - "DBParameterGroupFamily", - "Description" - ], - "members": { - "DBParameterGroupName": {}, - "DBParameterGroupFamily": {}, - "Description": {}, - "Tags": { - "shape": "S9" - } - } - }, - "output": { - "resultWrapper": "CreateDBParameterGroupResult", - "type": "structure", - "members": { - "DBParameterGroup": { - "shape": "Sk" - } - } - } - }, - "CreateDBSecurityGroup": { - "input": { - "type": "structure", - "required": [ - "DBSecurityGroupName", - "DBSecurityGroupDescription" - ], - "members": { - "DBSecurityGroupName": {}, - "DBSecurityGroupDescription": {}, - "Tags": { - "shape": "S9" - } - } - }, - "output": { - "resultWrapper": "CreateDBSecurityGroupResult", - "type": "structure", - "members": { - "DBSecurityGroup": { - "shape": "Sd" - } - } - } - }, - "CreateDBSnapshot": { - "input": { - "type": "structure", - "required": [ - "DBSnapshotIdentifier", - "DBInstanceIdentifier" - ], - "members": { - "DBSnapshotIdentifier": {}, - "DBInstanceIdentifier": {}, - "Tags": { - "shape": "S9" - } - } - }, - "output": { - "resultWrapper": "CreateDBSnapshotResult", - "type": "structure", - "members": { - "DBSnapshot": { - "shape": "Sn" - } - } - } - }, - "CreateDBSubnetGroup": { - "input": { - "type": "structure", - "required": [ - "DBSubnetGroupName", - "DBSubnetGroupDescription", - "SubnetIds" - ], - "members": { - "DBSubnetGroupName": {}, - "DBSubnetGroupDescription": {}, - "SubnetIds": { - "shape": "S1u" - }, - "Tags": { - "shape": "S9" - } - } - }, - "output": { - "resultWrapper": "CreateDBSubnetGroupResult", - "type": "structure", - "members": { - "DBSubnetGroup": { - "shape": "S1b" - } - } - } - }, - "CreateEventSubscription": { - "input": { - "type": "structure", - "required": [ - "SubscriptionName", - "SnsTopicArn" - ], - "members": { - "SubscriptionName": {}, - "SnsTopicArn": {}, - "SourceType": {}, - "EventCategories": { - "shape": "S6" - }, - "SourceIds": { - "shape": "S5" - }, - "Enabled": { - "type": "boolean" - }, - "Tags": { - "shape": "S9" - } - } - }, - "output": { - "resultWrapper": "CreateEventSubscriptionResult", - "type": "structure", - "members": { - "EventSubscription": { - "shape": "S4" - } - } - } - }, - "CreateOptionGroup": { - "input": { - "type": "structure", - "required": [ - "OptionGroupName", - "EngineName", - "MajorEngineVersion", - "OptionGroupDescription" - ], - "members": { - "OptionGroupName": {}, - "EngineName": {}, - "MajorEngineVersion": {}, - "OptionGroupDescription": {}, - "Tags": { - "shape": "S9" - } - } - }, - "output": { - "resultWrapper": "CreateOptionGroupResult", - "type": "structure", - "members": { - "OptionGroup": { - "shape": "St" - } - } - } - }, - "DeleteDBInstance": { - "input": { - "type": "structure", - "required": [ - "DBInstanceIdentifier" - ], - "members": { - "DBInstanceIdentifier": {}, - "SkipFinalSnapshot": { - "type": "boolean" - }, - "FinalDBSnapshotIdentifier": {} - } - }, - "output": { - "resultWrapper": "DeleteDBInstanceResult", - "type": "structure", - "members": { - "DBInstance": { - "shape": "S17" - } - } - } - }, - "DeleteDBParameterGroup": { - "input": { - "type": "structure", - "required": [ - "DBParameterGroupName" - ], - "members": { - "DBParameterGroupName": {} - } - } - }, - "DeleteDBSecurityGroup": { - "input": { - "type": "structure", - "required": [ - "DBSecurityGroupName" - ], - "members": { - "DBSecurityGroupName": {} - } - } - }, - "DeleteDBSnapshot": { - "input": { - "type": "structure", - "required": [ - "DBSnapshotIdentifier" - ], - "members": { - "DBSnapshotIdentifier": {} - } - }, - "output": { - "resultWrapper": "DeleteDBSnapshotResult", - "type": "structure", - "members": { - "DBSnapshot": { - "shape": "Sn" - } - } - } - }, - "DeleteDBSubnetGroup": { - "input": { - "type": "structure", - "required": [ - "DBSubnetGroupName" - ], - "members": { - "DBSubnetGroupName": {} - } - } - }, - "DeleteEventSubscription": { - "input": { - "type": "structure", - "required": [ - "SubscriptionName" - ], - "members": { - "SubscriptionName": {} - } - }, - "output": { - "resultWrapper": "DeleteEventSubscriptionResult", - "type": "structure", - "members": { - "EventSubscription": { - "shape": "S4" - } - } - } - }, - "DeleteOptionGroup": { - "input": { - "type": "structure", - "required": [ - "OptionGroupName" - ], - "members": { - "OptionGroupName": {} - } - } - }, - "DescribeDBEngineVersions": { - "input": { - "type": "structure", - "members": { - "Engine": {}, - "EngineVersion": {}, - "DBParameterGroupFamily": {}, - "Filters": { - "shape": "S2b" - }, - "MaxRecords": { - "type": "integer" - }, - "Marker": {}, - "DefaultOnly": { - "type": "boolean" - }, - "ListSupportedCharacterSets": { - "type": "boolean" - } - } - }, - "output": { - "resultWrapper": "DescribeDBEngineVersionsResult", - "type": "structure", - "members": { - "Marker": {}, - "DBEngineVersions": { - "type": "list", - "member": { - "locationName": "DBEngineVersion", - "type": "structure", - "members": { - "Engine": {}, - "EngineVersion": {}, - "DBParameterGroupFamily": {}, - "DBEngineDescription": {}, - "DBEngineVersionDescription": {}, - "DefaultCharacterSet": { - "shape": "S2h" - }, - "SupportedCharacterSets": { - "type": "list", - "member": { - "shape": "S2h", - "locationName": "CharacterSet" - } - } - } - } - } - } - } - }, - "DescribeDBInstances": { - "input": { - "type": "structure", - "members": { - "DBInstanceIdentifier": {}, - "Filters": { - "shape": "S2b" - }, - "MaxRecords": { - "type": "integer" - }, - "Marker": {} - } - }, - "output": { - "resultWrapper": "DescribeDBInstancesResult", - "type": "structure", - "members": { - "Marker": {}, - "DBInstances": { - "type": "list", - "member": { - "shape": "S17", - "locationName": "DBInstance" - } - } - } - } - }, - "DescribeDBLogFiles": { - "input": { - "type": "structure", - "required": [ - "DBInstanceIdentifier" - ], - "members": { - "DBInstanceIdentifier": {}, - "FilenameContains": {}, - "FileLastWritten": { - "type": "long" - }, - "FileSize": { - "type": "long" - }, - "Filters": { - "shape": "S2b" - }, - "MaxRecords": { - "type": "integer" - }, - "Marker": {} - } - }, - "output": { - "resultWrapper": "DescribeDBLogFilesResult", - "type": "structure", - "members": { - "DescribeDBLogFiles": { - "type": "list", - "member": { - "locationName": "DescribeDBLogFilesDetails", - "type": "structure", - "members": { - "LogFileName": {}, - "LastWritten": { - "type": "long" - }, - "Size": { - "type": "long" - } - } - } - }, - "Marker": {} - } - } - }, - "DescribeDBParameterGroups": { - "input": { - "type": "structure", - "members": { - "DBParameterGroupName": {}, - "Filters": { - "shape": "S2b" - }, - "MaxRecords": { - "type": "integer" - }, - "Marker": {} - } - }, - "output": { - "resultWrapper": "DescribeDBParameterGroupsResult", - "type": "structure", - "members": { - "Marker": {}, - "DBParameterGroups": { - "type": "list", - "member": { - "shape": "Sk", - "locationName": "DBParameterGroup" - } - } - } - } - }, - "DescribeDBParameters": { - "input": { - "type": "structure", - "required": [ - "DBParameterGroupName" - ], - "members": { - "DBParameterGroupName": {}, - "Source": {}, - "Filters": { - "shape": "S2b" - }, - "MaxRecords": { - "type": "integer" - }, - "Marker": {} - } - }, - "output": { - "resultWrapper": "DescribeDBParametersResult", - "type": "structure", - "members": { - "Parameters": { - "shape": "S2w" - }, - "Marker": {} - } - } - }, - "DescribeDBSecurityGroups": { - "input": { - "type": "structure", - "members": { - "DBSecurityGroupName": {}, - "Filters": { - "shape": "S2b" - }, - "MaxRecords": { - "type": "integer" - }, - "Marker": {} - } - }, - "output": { - "resultWrapper": "DescribeDBSecurityGroupsResult", - "type": "structure", - "members": { - "Marker": {}, - "DBSecurityGroups": { - "type": "list", - "member": { - "shape": "Sd", - "locationName": "DBSecurityGroup" - } - } - } - } - }, - "DescribeDBSnapshots": { - "input": { - "type": "structure", - "members": { - "DBInstanceIdentifier": {}, - "DBSnapshotIdentifier": {}, - "SnapshotType": {}, - "Filters": { - "shape": "S2b" - }, - "MaxRecords": { - "type": "integer" - }, - "Marker": {} - } - }, - "output": { - "resultWrapper": "DescribeDBSnapshotsResult", - "type": "structure", - "members": { - "Marker": {}, - "DBSnapshots": { - "type": "list", - "member": { - "shape": "Sn", - "locationName": "DBSnapshot" - } - } - } - } - }, - "DescribeDBSubnetGroups": { - "input": { - "type": "structure", - "members": { - "DBSubnetGroupName": {}, - "Filters": { - "shape": "S2b" - }, - "MaxRecords": { - "type": "integer" - }, - "Marker": {} - } - }, - "output": { - "resultWrapper": "DescribeDBSubnetGroupsResult", - "type": "structure", - "members": { - "Marker": {}, - "DBSubnetGroups": { - "type": "list", - "member": { - "shape": "S1b", - "locationName": "DBSubnetGroup" - } - } - } - } - }, - "DescribeEngineDefaultParameters": { - "input": { - "type": "structure", - "required": [ - "DBParameterGroupFamily" - ], - "members": { - "DBParameterGroupFamily": {}, - "Filters": { - "shape": "S2b" - }, - "MaxRecords": { - "type": "integer" - }, - "Marker": {} - } - }, - "output": { - "resultWrapper": "DescribeEngineDefaultParametersResult", - "type": "structure", - "members": { - "EngineDefaults": { - "type": "structure", - "members": { - "DBParameterGroupFamily": {}, - "Marker": {}, - "Parameters": { - "shape": "S2w" - } - }, - "wrapper": true - } - } - } - }, - "DescribeEventCategories": { - "input": { - "type": "structure", - "members": { - "SourceType": {}, - "Filters": { - "shape": "S2b" - } - } - }, - "output": { - "resultWrapper": "DescribeEventCategoriesResult", - "type": "structure", - "members": { - "EventCategoriesMapList": { - "type": "list", - "member": { - "locationName": "EventCategoriesMap", - "type": "structure", - "members": { - "SourceType": {}, - "EventCategories": { - "shape": "S6" - } - }, - "wrapper": true - } - } - } - } - }, - "DescribeEventSubscriptions": { - "input": { - "type": "structure", - "members": { - "SubscriptionName": {}, - "Filters": { - "shape": "S2b" - }, - "MaxRecords": { - "type": "integer" - }, - "Marker": {} - } - }, - "output": { - "resultWrapper": "DescribeEventSubscriptionsResult", - "type": "structure", - "members": { - "Marker": {}, - "EventSubscriptionsList": { - "type": "list", - "member": { - "shape": "S4", - "locationName": "EventSubscription" - } - } - } - } - }, - "DescribeEvents": { - "input": { - "type": "structure", - "members": { - "SourceIdentifier": {}, - "SourceType": {}, - "StartTime": { - "type": "timestamp" - }, - "EndTime": { - "type": "timestamp" - }, - "Duration": { - "type": "integer" - }, - "EventCategories": { - "shape": "S6" - }, - "Filters": { - "shape": "S2b" - }, - "MaxRecords": { - "type": "integer" - }, - "Marker": {} - } - }, - "output": { - "resultWrapper": "DescribeEventsResult", - "type": "structure", - "members": { - "Marker": {}, - "Events": { - "type": "list", - "member": { - "locationName": "Event", - "type": "structure", - "members": { - "SourceIdentifier": {}, - "SourceType": {}, - "Message": {}, - "EventCategories": { - "shape": "S6" - }, - "Date": { - "type": "timestamp" - } - } - } - } - } - } - }, - "DescribeOptionGroupOptions": { - "input": { - "type": "structure", - "required": [ - "EngineName" - ], - "members": { - "EngineName": {}, - "MajorEngineVersion": {}, - "Filters": { - "shape": "S2b" - }, - "MaxRecords": { - "type": "integer" - }, - "Marker": {} - } - }, - "output": { - "resultWrapper": "DescribeOptionGroupOptionsResult", - "type": "structure", - "members": { - "OptionGroupOptions": { - "type": "list", - "member": { - "locationName": "OptionGroupOption", - "type": "structure", - "members": { - "Name": {}, - "Description": {}, - "EngineName": {}, - "MajorEngineVersion": {}, - "MinimumRequiredMinorEngineVersion": {}, - "PortRequired": { - "type": "boolean" - }, - "DefaultPort": { - "type": "integer" - }, - "OptionsDependedOn": { - "type": "list", - "member": { - "locationName": "OptionName" - } - }, - "Persistent": { - "type": "boolean" - }, - "Permanent": { - "type": "boolean" - }, - "OptionGroupOptionSettings": { - "type": "list", - "member": { - "locationName": "OptionGroupOptionSetting", - "type": "structure", - "members": { - "SettingName": {}, - "SettingDescription": {}, - "DefaultValue": {}, - "ApplyType": {}, - "AllowedValues": {}, - "IsModifiable": { - "type": "boolean" - } - } - } - } - } - } - }, - "Marker": {} - } - } - }, - "DescribeOptionGroups": { - "input": { - "type": "structure", - "members": { - "OptionGroupName": {}, - "Filters": { - "shape": "S2b" - }, - "Marker": {}, - "MaxRecords": { - "type": "integer" - }, - "EngineName": {}, - "MajorEngineVersion": {} - } - }, - "output": { - "resultWrapper": "DescribeOptionGroupsResult", - "type": "structure", - "members": { - "OptionGroupsList": { - "type": "list", - "member": { - "shape": "St", - "locationName": "OptionGroup" - } - }, - "Marker": {} - } - } - }, - "DescribeOrderableDBInstanceOptions": { - "input": { - "type": "structure", - "required": [ - "Engine" - ], - "members": { - "Engine": {}, - "EngineVersion": {}, - "DBInstanceClass": {}, - "LicenseModel": {}, - "Vpc": { - "type": "boolean" - }, - "Filters": { - "shape": "S2b" - }, - "MaxRecords": { - "type": "integer" - }, - "Marker": {} - } - }, - "output": { - "resultWrapper": "DescribeOrderableDBInstanceOptionsResult", - "type": "structure", - "members": { - "OrderableDBInstanceOptions": { - "type": "list", - "member": { - "locationName": "OrderableDBInstanceOption", - "type": "structure", - "members": { - "Engine": {}, - "EngineVersion": {}, - "DBInstanceClass": {}, - "LicenseModel": {}, - "AvailabilityZones": { - "type": "list", - "member": { - "shape": "S1e", - "locationName": "AvailabilityZone" - } - }, - "MultiAZCapable": { - "type": "boolean" - }, - "ReadReplicaCapable": { - "type": "boolean" - }, - "Vpc": { - "type": "boolean" - }, - "StorageType": {}, - "SupportsIops": { - "type": "boolean" - } - }, - "wrapper": true - } - }, - "Marker": {} - } - } - }, - "DescribeReservedDBInstances": { - "input": { - "type": "structure", - "members": { - "ReservedDBInstanceId": {}, - "ReservedDBInstancesOfferingId": {}, - "DBInstanceClass": {}, - "Duration": {}, - "ProductDescription": {}, - "OfferingType": {}, - "MultiAZ": { - "type": "boolean" - }, - "Filters": { - "shape": "S2b" - }, - "MaxRecords": { - "type": "integer" - }, - "Marker": {} - } - }, - "output": { - "resultWrapper": "DescribeReservedDBInstancesResult", - "type": "structure", - "members": { - "Marker": {}, - "ReservedDBInstances": { - "type": "list", - "member": { - "shape": "S45", - "locationName": "ReservedDBInstance" - } - } - } - } - }, - "DescribeReservedDBInstancesOfferings": { - "input": { - "type": "structure", - "members": { - "ReservedDBInstancesOfferingId": {}, - "DBInstanceClass": {}, - "Duration": {}, - "ProductDescription": {}, - "OfferingType": {}, - "MultiAZ": { - "type": "boolean" - }, - "Filters": { - "shape": "S2b" - }, - "MaxRecords": { - "type": "integer" - }, - "Marker": {} - } - }, - "output": { - "resultWrapper": "DescribeReservedDBInstancesOfferingsResult", - "type": "structure", - "members": { - "Marker": {}, - "ReservedDBInstancesOfferings": { - "type": "list", - "member": { - "locationName": "ReservedDBInstancesOffering", - "type": "structure", - "members": { - "ReservedDBInstancesOfferingId": {}, - "DBInstanceClass": {}, - "Duration": { - "type": "integer" - }, - "FixedPrice": { - "type": "double" - }, - "UsagePrice": { - "type": "double" - }, - "CurrencyCode": {}, - "ProductDescription": {}, - "OfferingType": {}, - "MultiAZ": { - "type": "boolean" - }, - "RecurringCharges": { - "shape": "S47" - } - }, - "wrapper": true - } - } - } - } - }, - "DownloadDBLogFilePortion": { - "input": { - "type": "structure", - "required": [ - "DBInstanceIdentifier", - "LogFileName" - ], - "members": { - "DBInstanceIdentifier": {}, - "LogFileName": {}, - "Marker": {}, - "NumberOfLines": { - "type": "integer" - } - } - }, - "output": { - "resultWrapper": "DownloadDBLogFilePortionResult", - "type": "structure", - "members": { - "LogFileData": {}, - "Marker": {}, - "AdditionalDataPending": { - "type": "boolean" - } - } - } - }, - "ListTagsForResource": { - "input": { - "type": "structure", - "required": [ - "ResourceName" - ], - "members": { - "ResourceName": {}, - "Filters": { - "shape": "S2b" - } - } - }, - "output": { - "resultWrapper": "ListTagsForResourceResult", - "type": "structure", - "members": { - "TagList": { - "shape": "S9" - } - } - } - }, - "ModifyDBInstance": { - "input": { - "type": "structure", - "required": [ - "DBInstanceIdentifier" - ], - "members": { - "DBInstanceIdentifier": {}, - "AllocatedStorage": { - "type": "integer" - }, - "DBInstanceClass": {}, - "DBSecurityGroups": { - "shape": "S13" - }, - "VpcSecurityGroupIds": { - "shape": "S14" - }, - "ApplyImmediately": { - "type": "boolean" - }, - "MasterUserPassword": {}, - "DBParameterGroupName": {}, - "BackupRetentionPeriod": { - "type": "integer" - }, - "PreferredBackupWindow": {}, - "PreferredMaintenanceWindow": {}, - "MultiAZ": { - "type": "boolean" - }, - "EngineVersion": {}, - "AllowMajorVersionUpgrade": { - "type": "boolean" - }, - "AutoMinorVersionUpgrade": { - "type": "boolean" - }, - "Iops": { - "type": "integer" - }, - "OptionGroupName": {}, - "NewDBInstanceIdentifier": {}, - "StorageType": {}, - "TdeCredentialArn": {}, - "TdeCredentialPassword": {} - } - }, - "output": { - "resultWrapper": "ModifyDBInstanceResult", - "type": "structure", - "members": { - "DBInstance": { - "shape": "S17" - } - } - } - }, - "ModifyDBParameterGroup": { - "input": { - "type": "structure", - "required": [ - "DBParameterGroupName", - "Parameters" - ], - "members": { - "DBParameterGroupName": {}, - "Parameters": { - "shape": "S2w" - } - } - }, - "output": { - "shape": "S4k", - "resultWrapper": "ModifyDBParameterGroupResult" - } - }, - "ModifyDBSubnetGroup": { - "input": { - "type": "structure", - "required": [ - "DBSubnetGroupName", - "SubnetIds" - ], - "members": { - "DBSubnetGroupName": {}, - "DBSubnetGroupDescription": {}, - "SubnetIds": { - "shape": "S1u" - } - } - }, - "output": { - "resultWrapper": "ModifyDBSubnetGroupResult", - "type": "structure", - "members": { - "DBSubnetGroup": { - "shape": "S1b" - } - } - } - }, - "ModifyEventSubscription": { - "input": { - "type": "structure", - "required": [ - "SubscriptionName" - ], - "members": { - "SubscriptionName": {}, - "SnsTopicArn": {}, - "SourceType": {}, - "EventCategories": { - "shape": "S6" - }, - "Enabled": { - "type": "boolean" - } - } - }, - "output": { - "resultWrapper": "ModifyEventSubscriptionResult", - "type": "structure", - "members": { - "EventSubscription": { - "shape": "S4" - } - } - } - }, - "ModifyOptionGroup": { - "input": { - "type": "structure", - "required": [ - "OptionGroupName" - ], - "members": { - "OptionGroupName": {}, - "OptionsToInclude": { - "type": "list", - "member": { - "locationName": "OptionConfiguration", - "type": "structure", - "required": [ - "OptionName" - ], - "members": { - "OptionName": {}, - "Port": { - "type": "integer" - }, - "DBSecurityGroupMemberships": { - "shape": "S13" - }, - "VpcSecurityGroupMemberships": { - "shape": "S14" - }, - "OptionSettings": { - "type": "list", - "member": { - "shape": "Sx", - "locationName": "OptionSetting" - } - } - } - } - }, - "OptionsToRemove": { - "type": "list", - "member": {} - }, - "ApplyImmediately": { - "type": "boolean" - } - } - }, - "output": { - "resultWrapper": "ModifyOptionGroupResult", - "type": "structure", - "members": { - "OptionGroup": { - "shape": "St" - } - } - } - }, - "PromoteReadReplica": { - "input": { - "type": "structure", - "required": [ - "DBInstanceIdentifier" - ], - "members": { - "DBInstanceIdentifier": {}, - "BackupRetentionPeriod": { - "type": "integer" - }, - "PreferredBackupWindow": {} - } - }, - "output": { - "resultWrapper": "PromoteReadReplicaResult", - "type": "structure", - "members": { - "DBInstance": { - "shape": "S17" - } - } - } - }, - "PurchaseReservedDBInstancesOffering": { - "input": { - "type": "structure", - "required": [ - "ReservedDBInstancesOfferingId" - ], - "members": { - "ReservedDBInstancesOfferingId": {}, - "ReservedDBInstanceId": {}, - "DBInstanceCount": { - "type": "integer" - }, - "Tags": { - "shape": "S9" - } - } - }, - "output": { - "resultWrapper": "PurchaseReservedDBInstancesOfferingResult", - "type": "structure", - "members": { - "ReservedDBInstance": { - "shape": "S45" - } - } - } - }, - "RebootDBInstance": { - "input": { - "type": "structure", - "required": [ - "DBInstanceIdentifier" - ], - "members": { - "DBInstanceIdentifier": {}, - "ForceFailover": { - "type": "boolean" - } - } - }, - "output": { - "resultWrapper": "RebootDBInstanceResult", - "type": "structure", - "members": { - "DBInstance": { - "shape": "S17" - } - } - } - }, - "RemoveSourceIdentifierFromSubscription": { - "input": { - "type": "structure", - "required": [ - "SubscriptionName", - "SourceIdentifier" - ], - "members": { - "SubscriptionName": {}, - "SourceIdentifier": {} - } - }, - "output": { - "resultWrapper": "RemoveSourceIdentifierFromSubscriptionResult", - "type": "structure", - "members": { - "EventSubscription": { - "shape": "S4" - } - } - } - }, - "RemoveTagsFromResource": { - "input": { - "type": "structure", - "required": [ - "ResourceName", - "TagKeys" - ], - "members": { - "ResourceName": {}, - "TagKeys": { - "type": "list", - "member": {} - } - } - } - }, - "ResetDBParameterGroup": { - "input": { - "type": "structure", - "required": [ - "DBParameterGroupName" - ], - "members": { - "DBParameterGroupName": {}, - "ResetAllParameters": { - "type": "boolean" - }, - "Parameters": { - "shape": "S2w" - } - } - }, - "output": { - "shape": "S4k", - "resultWrapper": "ResetDBParameterGroupResult" - } - }, - "RestoreDBInstanceFromDBSnapshot": { - "input": { - "type": "structure", - "required": [ - "DBInstanceIdentifier", - "DBSnapshotIdentifier" - ], - "members": { - "DBInstanceIdentifier": {}, - "DBSnapshotIdentifier": {}, - "DBInstanceClass": {}, - "Port": { - "type": "integer" - }, - "AvailabilityZone": {}, - "DBSubnetGroupName": {}, - "MultiAZ": { - "type": "boolean" - }, - "PubliclyAccessible": { - "type": "boolean" - }, - "AutoMinorVersionUpgrade": { - "type": "boolean" - }, - "LicenseModel": {}, - "DBName": {}, - "Engine": {}, - "Iops": { - "type": "integer" - }, - "OptionGroupName": {}, - "Tags": { - "shape": "S9" - }, - "StorageType": {}, - "TdeCredentialArn": {}, - "TdeCredentialPassword": {} - } - }, - "output": { - "resultWrapper": "RestoreDBInstanceFromDBSnapshotResult", - "type": "structure", - "members": { - "DBInstance": { - "shape": "S17" - } - } - } - }, - "RestoreDBInstanceToPointInTime": { - "input": { - "type": "structure", - "required": [ - "SourceDBInstanceIdentifier", - "TargetDBInstanceIdentifier" - ], - "members": { - "SourceDBInstanceIdentifier": {}, - "TargetDBInstanceIdentifier": {}, - "RestoreTime": { - "type": "timestamp" - }, - "UseLatestRestorableTime": { - "type": "boolean" - }, - "DBInstanceClass": {}, - "Port": { - "type": "integer" - }, - "AvailabilityZone": {}, - "DBSubnetGroupName": {}, - "MultiAZ": { - "type": "boolean" - }, - "PubliclyAccessible": { - "type": "boolean" - }, - "AutoMinorVersionUpgrade": { - "type": "boolean" - }, - "LicenseModel": {}, - "DBName": {}, - "Engine": {}, - "Iops": { - "type": "integer" - }, - "OptionGroupName": {}, - "Tags": { - "shape": "S9" - }, - "StorageType": {}, - "TdeCredentialArn": {}, - "TdeCredentialPassword": {} - } - }, - "output": { - "resultWrapper": "RestoreDBInstanceToPointInTimeResult", - "type": "structure", - "members": { - "DBInstance": { - "shape": "S17" - } - } - } - }, - "RevokeDBSecurityGroupIngress": { - "input": { - "type": "structure", - "required": [ - "DBSecurityGroupName" - ], - "members": { - "DBSecurityGroupName": {}, - "CIDRIP": {}, - "EC2SecurityGroupName": {}, - "EC2SecurityGroupId": {}, - "EC2SecurityGroupOwnerId": {} - } - }, - "output": { - "resultWrapper": "RevokeDBSecurityGroupIngressResult", - "type": "structure", - "members": { - "DBSecurityGroup": { - "shape": "Sd" - } - } - } - } - }, - "shapes": { - "S4": { - "type": "structure", - "members": { - "CustomerAwsId": {}, - "CustSubscriptionId": {}, - "SnsTopicArn": {}, - "Status": {}, - "SubscriptionCreationTime": {}, - "SourceType": {}, - "SourceIdsList": { - "shape": "S5" - }, - "EventCategoriesList": { - "shape": "S6" - }, - "Enabled": { - "type": "boolean" - } - }, - "wrapper": true - }, - "S5": { - "type": "list", - "member": { - "locationName": "SourceId" - } - }, - "S6": { - "type": "list", - "member": { - "locationName": "EventCategory" - } - }, - "S9": { - "type": "list", - "member": { - "locationName": "Tag", - "type": "structure", - "members": { - "Key": {}, - "Value": {} - } - } - }, - "Sd": { - "type": "structure", - "members": { - "OwnerId": {}, - "DBSecurityGroupName": {}, - "DBSecurityGroupDescription": {}, - "VpcId": {}, - "EC2SecurityGroups": { - "type": "list", - "member": { - "locationName": "EC2SecurityGroup", - "type": "structure", - "members": { - "Status": {}, - "EC2SecurityGroupName": {}, - "EC2SecurityGroupId": {}, - "EC2SecurityGroupOwnerId": {} - } - } - }, - "IPRanges": { - "type": "list", - "member": { - "locationName": "IPRange", - "type": "structure", - "members": { - "Status": {}, - "CIDRIP": {} - } - } - } - }, - "wrapper": true - }, - "Sk": { - "type": "structure", - "members": { - "DBParameterGroupName": {}, - "DBParameterGroupFamily": {}, - "Description": {} - }, - "wrapper": true - }, - "Sn": { - "type": "structure", - "members": { - "DBSnapshotIdentifier": {}, - "DBInstanceIdentifier": {}, - "SnapshotCreateTime": { - "type": "timestamp" - }, - "Engine": {}, - "AllocatedStorage": { - "type": "integer" - }, - "Status": {}, - "Port": { - "type": "integer" - }, - "AvailabilityZone": {}, - "VpcId": {}, - "InstanceCreateTime": { - "type": "timestamp" - }, - "MasterUsername": {}, - "EngineVersion": {}, - "LicenseModel": {}, - "SnapshotType": {}, - "Iops": { - "type": "integer" - }, - "OptionGroupName": {}, - "PercentProgress": { - "type": "integer" - }, - "SourceRegion": {}, - "StorageType": {}, - "TdeCredentialArn": {} - }, - "wrapper": true - }, - "St": { - "type": "structure", - "members": { - "OptionGroupName": {}, - "OptionGroupDescription": {}, - "EngineName": {}, - "MajorEngineVersion": {}, - "Options": { - "type": "list", - "member": { - "locationName": "Option", - "type": "structure", - "members": { - "OptionName": {}, - "OptionDescription": {}, - "Persistent": { - "type": "boolean" - }, - "Permanent": { - "type": "boolean" - }, - "Port": { - "type": "integer" - }, - "OptionSettings": { - "type": "list", - "member": { - "shape": "Sx", - "locationName": "OptionSetting" - } - }, - "DBSecurityGroupMemberships": { - "shape": "Sy" - }, - "VpcSecurityGroupMemberships": { - "shape": "S10" - } - } - } - }, - "AllowsVpcAndNonVpcInstanceMemberships": { - "type": "boolean" - }, - "VpcId": {} - }, - "wrapper": true - }, - "Sx": { - "type": "structure", - "members": { - "Name": {}, - "Value": {}, - "DefaultValue": {}, - "Description": {}, - "ApplyType": {}, - "DataType": {}, - "AllowedValues": {}, - "IsModifiable": { - "type": "boolean" - }, - "IsCollection": { - "type": "boolean" - } - } - }, - "Sy": { - "type": "list", - "member": { - "locationName": "DBSecurityGroup", - "type": "structure", - "members": { - "DBSecurityGroupName": {}, - "Status": {} - } - } - }, - "S10": { - "type": "list", - "member": { - "locationName": "VpcSecurityGroupMembership", - "type": "structure", - "members": { - "VpcSecurityGroupId": {}, - "Status": {} - } - } - }, - "S13": { - "type": "list", - "member": { - "locationName": "DBSecurityGroupName" - } - }, - "S14": { - "type": "list", - "member": { - "locationName": "VpcSecurityGroupId" - } - }, - "S17": { - "type": "structure", - "members": { - "DBInstanceIdentifier": {}, - "DBInstanceClass": {}, - "Engine": {}, - "DBInstanceStatus": {}, - "MasterUsername": {}, - "DBName": {}, - "Endpoint": { - "type": "structure", - "members": { - "Address": {}, - "Port": { - "type": "integer" - } - } - }, - "AllocatedStorage": { - "type": "integer" - }, - "InstanceCreateTime": { - "type": "timestamp" - }, - "PreferredBackupWindow": {}, - "BackupRetentionPeriod": { - "type": "integer" - }, - "DBSecurityGroups": { - "shape": "Sy" - }, - "VpcSecurityGroups": { - "shape": "S10" - }, - "DBParameterGroups": { - "type": "list", - "member": { - "locationName": "DBParameterGroup", - "type": "structure", - "members": { - "DBParameterGroupName": {}, - "ParameterApplyStatus": {} - } - } - }, - "AvailabilityZone": {}, - "DBSubnetGroup": { - "shape": "S1b" - }, - "PreferredMaintenanceWindow": {}, - "PendingModifiedValues": { - "type": "structure", - "members": { - "DBInstanceClass": {}, - "AllocatedStorage": { - "type": "integer" - }, - "MasterUserPassword": {}, - "Port": { - "type": "integer" - }, - "BackupRetentionPeriod": { - "type": "integer" - }, - "MultiAZ": { - "type": "boolean" - }, - "EngineVersion": {}, - "Iops": { - "type": "integer" - }, - "DBInstanceIdentifier": {}, - "StorageType": {} - } - }, - "LatestRestorableTime": { - "type": "timestamp" - }, - "MultiAZ": { - "type": "boolean" - }, - "EngineVersion": {}, - "AutoMinorVersionUpgrade": { - "type": "boolean" - }, - "ReadReplicaSourceDBInstanceIdentifier": {}, - "ReadReplicaDBInstanceIdentifiers": { - "type": "list", - "member": { - "locationName": "ReadReplicaDBInstanceIdentifier" - } - }, - "LicenseModel": {}, - "Iops": { - "type": "integer" - }, - "OptionGroupMemberships": { - "type": "list", - "member": { - "locationName": "OptionGroupMembership", - "type": "structure", - "members": { - "OptionGroupName": {}, - "Status": {} - } - } - }, - "CharacterSetName": {}, - "SecondaryAvailabilityZone": {}, - "PubliclyAccessible": { - "type": "boolean" - }, - "StatusInfos": { - "type": "list", - "member": { - "locationName": "DBInstanceStatusInfo", - "type": "structure", - "members": { - "StatusType": {}, - "Normal": { - "type": "boolean" - }, - "Status": {}, - "Message": {} - } - } - }, - "StorageType": {}, - "TdeCredentialArn": {} - }, - "wrapper": true - }, - "S1b": { - "type": "structure", - "members": { - "DBSubnetGroupName": {}, - "DBSubnetGroupDescription": {}, - "VpcId": {}, - "SubnetGroupStatus": {}, - "Subnets": { - "type": "list", - "member": { - "locationName": "Subnet", - "type": "structure", - "members": { - "SubnetIdentifier": {}, - "SubnetAvailabilityZone": { - "shape": "S1e" - }, - "SubnetStatus": {} - } - } - } - }, - "wrapper": true - }, - "S1e": { - "type": "structure", - "members": { - "Name": {} - }, - "wrapper": true - }, - "S1u": { - "type": "list", - "member": { - "locationName": "SubnetIdentifier" - } - }, - "S2b": { - "type": "list", - "member": { - "locationName": "Filter", - "type": "structure", - "required": [ - "Name", - "Values" - ], - "members": { - "Name": {}, - "Values": { - "type": "list", - "member": { - "locationName": "Value" - } - } - } - } - }, - "S2h": { - "type": "structure", - "members": { - "CharacterSetName": {}, - "CharacterSetDescription": {} - } - }, - "S2w": { - "type": "list", - "member": { - "locationName": "Parameter", - "type": "structure", - "members": { - "ParameterName": {}, - "ParameterValue": {}, - "Description": {}, - "Source": {}, - "ApplyType": {}, - "DataType": {}, - "AllowedValues": {}, - "IsModifiable": { - "type": "boolean" - }, - "MinimumEngineVersion": {}, - "ApplyMethod": {} - } - } - }, - "S45": { - "type": "structure", - "members": { - "ReservedDBInstanceId": {}, - "ReservedDBInstancesOfferingId": {}, - "DBInstanceClass": {}, - "StartTime": { - "type": "timestamp" - }, - "Duration": { - "type": "integer" - }, - "FixedPrice": { - "type": "double" - }, - "UsagePrice": { - "type": "double" - }, - "CurrencyCode": {}, - "DBInstanceCount": { - "type": "integer" - }, - "ProductDescription": {}, - "OfferingType": {}, - "MultiAZ": { - "type": "boolean" - }, - "State": {}, - "RecurringCharges": { - "shape": "S47" - } - }, - "wrapper": true - }, - "S47": { - "type": "list", - "member": { - "locationName": "RecurringCharge", - "type": "structure", - "members": { - "RecurringChargeAmount": { - "type": "double" - }, - "RecurringChargeFrequency": {} - }, - "wrapper": true - } - }, - "S4k": { - "type": "structure", - "members": { - "DBParameterGroupName": {} - } - } - } -} \ No newline at end of file diff --git a/workshops/monte-carlo-on-ec2-spot-fleet/src/web/node_modules/aws-sdk/apis/rds-2014-09-01.paginators.json b/workshops/monte-carlo-on-ec2-spot-fleet/src/web/node_modules/aws-sdk/apis/rds-2014-09-01.paginators.json deleted file mode 100644 index 5677bd8e..00000000 --- a/workshops/monte-carlo-on-ec2-spot-fleet/src/web/node_modules/aws-sdk/apis/rds-2014-09-01.paginators.json +++ /dev/null @@ -1,4 +0,0 @@ -{ - "pagination": { - } -} diff --git a/workshops/monte-carlo-on-ec2-spot-fleet/src/web/node_modules/aws-sdk/apis/rds-2014-10-31.min.json b/workshops/monte-carlo-on-ec2-spot-fleet/src/web/node_modules/aws-sdk/apis/rds-2014-10-31.min.json deleted file mode 100644 index 42aa8e24..00000000 --- a/workshops/monte-carlo-on-ec2-spot-fleet/src/web/node_modules/aws-sdk/apis/rds-2014-10-31.min.json +++ /dev/null @@ -1,3783 +0,0 @@ -{ - "version": "2.0", - "metadata": { - "apiVersion": "2014-10-31", - "endpointPrefix": "rds", - "protocol": "query", - "serviceAbbreviation": "Amazon RDS", - "serviceFullName": "Amazon Relational Database Service", - "signatureVersion": "v4", - "uid": "rds-2014-10-31", - "xmlNamespace": "http://rds.amazonaws.com/doc/2014-10-31/" - }, - "operations": { - "AddRoleToDBCluster": { - "input": { - "type": "structure", - "required": [ - "DBClusterIdentifier", - "RoleArn" - ], - "members": { - "DBClusterIdentifier": {}, - "RoleArn": {} - } - } - }, - "AddSourceIdentifierToSubscription": { - "input": { - "type": "structure", - "required": [ - "SubscriptionName", - "SourceIdentifier" - ], - "members": { - "SubscriptionName": {}, - "SourceIdentifier": {} - } - }, - "output": { - "resultWrapper": "AddSourceIdentifierToSubscriptionResult", - "type": "structure", - "members": { - "EventSubscription": { - "shape": "S5" - } - } - } - }, - "AddTagsToResource": { - "input": { - "type": "structure", - "required": [ - "ResourceName", - "Tags" - ], - "members": { - "ResourceName": {}, - "Tags": { - "shape": "Sa" - } - } - } - }, - "ApplyPendingMaintenanceAction": { - "input": { - "type": "structure", - "required": [ - "ResourceIdentifier", - "ApplyAction", - "OptInType" - ], - "members": { - "ResourceIdentifier": {}, - "ApplyAction": {}, - "OptInType": {} - } - }, - "output": { - "resultWrapper": "ApplyPendingMaintenanceActionResult", - "type": "structure", - "members": { - "ResourcePendingMaintenanceActions": { - "shape": "Se" - } - } - } - }, - "AuthorizeDBSecurityGroupIngress": { - "input": { - "type": "structure", - "required": [ - "DBSecurityGroupName" - ], - "members": { - "DBSecurityGroupName": {}, - "CIDRIP": {}, - "EC2SecurityGroupName": {}, - "EC2SecurityGroupId": {}, - "EC2SecurityGroupOwnerId": {} - } - }, - "output": { - "resultWrapper": "AuthorizeDBSecurityGroupIngressResult", - "type": "structure", - "members": { - "DBSecurityGroup": { - "shape": "Sk" - } - } - } - }, - "CopyDBClusterParameterGroup": { - "input": { - "type": "structure", - "required": [ - "SourceDBClusterParameterGroupIdentifier", - "TargetDBClusterParameterGroupIdentifier", - "TargetDBClusterParameterGroupDescription" - ], - "members": { - "SourceDBClusterParameterGroupIdentifier": {}, - "TargetDBClusterParameterGroupIdentifier": {}, - "TargetDBClusterParameterGroupDescription": {}, - "Tags": { - "shape": "Sa" - } - } - }, - "output": { - "resultWrapper": "CopyDBClusterParameterGroupResult", - "type": "structure", - "members": { - "DBClusterParameterGroup": { - "shape": "Sr" - } - } - } - }, - "CopyDBClusterSnapshot": { - "input": { - "type": "structure", - "required": [ - "SourceDBClusterSnapshotIdentifier", - "TargetDBClusterSnapshotIdentifier" - ], - "members": { - "SourceDBClusterSnapshotIdentifier": {}, - "TargetDBClusterSnapshotIdentifier": {}, - "KmsKeyId": {}, - "PreSignedUrl": {}, - "CopyTags": { - "type": "boolean" - }, - "Tags": { - "shape": "Sa" - }, - "SourceRegion": {} - } - }, - "output": { - "resultWrapper": "CopyDBClusterSnapshotResult", - "type": "structure", - "members": { - "DBClusterSnapshot": { - "shape": "Sv" - } - } - } - }, - "CopyDBParameterGroup": { - "input": { - "type": "structure", - "required": [ - "SourceDBParameterGroupIdentifier", - "TargetDBParameterGroupIdentifier", - "TargetDBParameterGroupDescription" - ], - "members": { - "SourceDBParameterGroupIdentifier": {}, - "TargetDBParameterGroupIdentifier": {}, - "TargetDBParameterGroupDescription": {}, - "Tags": { - "shape": "Sa" - } - } - }, - "output": { - "resultWrapper": "CopyDBParameterGroupResult", - "type": "structure", - "members": { - "DBParameterGroup": { - "shape": "S10" - } - } - } - }, - "CopyDBSnapshot": { - "input": { - "type": "structure", - "required": [ - "SourceDBSnapshotIdentifier", - "TargetDBSnapshotIdentifier" - ], - "members": { - "SourceDBSnapshotIdentifier": {}, - "TargetDBSnapshotIdentifier": {}, - "KmsKeyId": {}, - "Tags": { - "shape": "Sa" - }, - "CopyTags": { - "type": "boolean" - }, - "PreSignedUrl": {}, - "OptionGroupName": {}, - "SourceRegion": {} - } - }, - "output": { - "resultWrapper": "CopyDBSnapshotResult", - "type": "structure", - "members": { - "DBSnapshot": { - "shape": "S13" - } - } - } - }, - "CopyOptionGroup": { - "input": { - "type": "structure", - "required": [ - "SourceOptionGroupIdentifier", - "TargetOptionGroupIdentifier", - "TargetOptionGroupDescription" - ], - "members": { - "SourceOptionGroupIdentifier": {}, - "TargetOptionGroupIdentifier": {}, - "TargetOptionGroupDescription": {}, - "Tags": { - "shape": "Sa" - } - } - }, - "output": { - "resultWrapper": "CopyOptionGroupResult", - "type": "structure", - "members": { - "OptionGroup": { - "shape": "S17" - } - } - } - }, - "CreateDBCluster": { - "input": { - "type": "structure", - "required": [ - "DBClusterIdentifier", - "Engine" - ], - "members": { - "AvailabilityZones": { - "shape": "Sw" - }, - "BackupRetentionPeriod": { - "type": "integer" - }, - "CharacterSetName": {}, - "DatabaseName": {}, - "DBClusterIdentifier": {}, - "DBClusterParameterGroupName": {}, - "VpcSecurityGroupIds": { - "shape": "S1h" - }, - "DBSubnetGroupName": {}, - "Engine": {}, - "EngineVersion": {}, - "Port": { - "type": "integer" - }, - "MasterUsername": {}, - "MasterUserPassword": {}, - "OptionGroupName": {}, - "PreferredBackupWindow": {}, - "PreferredMaintenanceWindow": {}, - "ReplicationSourceIdentifier": {}, - "Tags": { - "shape": "Sa" - }, - "StorageEncrypted": { - "type": "boolean" - }, - "KmsKeyId": {}, - "PreSignedUrl": {}, - "EnableIAMDatabaseAuthentication": { - "type": "boolean" - }, - "SourceRegion": {} - } - }, - "output": { - "resultWrapper": "CreateDBClusterResult", - "type": "structure", - "members": { - "DBCluster": { - "shape": "S1j" - } - } - } - }, - "CreateDBClusterParameterGroup": { - "input": { - "type": "structure", - "required": [ - "DBClusterParameterGroupName", - "DBParameterGroupFamily", - "Description" - ], - "members": { - "DBClusterParameterGroupName": {}, - "DBParameterGroupFamily": {}, - "Description": {}, - "Tags": { - "shape": "Sa" - } - } - }, - "output": { - "resultWrapper": "CreateDBClusterParameterGroupResult", - "type": "structure", - "members": { - "DBClusterParameterGroup": { - "shape": "Sr" - } - } - } - }, - "CreateDBClusterSnapshot": { - "input": { - "type": "structure", - "required": [ - "DBClusterSnapshotIdentifier", - "DBClusterIdentifier" - ], - "members": { - "DBClusterSnapshotIdentifier": {}, - "DBClusterIdentifier": {}, - "Tags": { - "shape": "Sa" - } - } - }, - "output": { - "resultWrapper": "CreateDBClusterSnapshotResult", - "type": "structure", - "members": { - "DBClusterSnapshot": { - "shape": "Sv" - } - } - } - }, - "CreateDBInstance": { - "input": { - "type": "structure", - "required": [ - "DBInstanceIdentifier", - "DBInstanceClass", - "Engine" - ], - "members": { - "DBName": {}, - "DBInstanceIdentifier": {}, - "AllocatedStorage": { - "type": "integer" - }, - "DBInstanceClass": {}, - "Engine": {}, - "MasterUsername": {}, - "MasterUserPassword": {}, - "DBSecurityGroups": { - "shape": "S1w" - }, - "VpcSecurityGroupIds": { - "shape": "S1h" - }, - "AvailabilityZone": {}, - "DBSubnetGroupName": {}, - "PreferredMaintenanceWindow": {}, - "DBParameterGroupName": {}, - "BackupRetentionPeriod": { - "type": "integer" - }, - "PreferredBackupWindow": {}, - "Port": { - "type": "integer" - }, - "MultiAZ": { - "type": "boolean" - }, - "EngineVersion": {}, - "AutoMinorVersionUpgrade": { - "type": "boolean" - }, - "LicenseModel": {}, - "Iops": { - "type": "integer" - }, - "OptionGroupName": {}, - "CharacterSetName": {}, - "PubliclyAccessible": { - "type": "boolean" - }, - "Tags": { - "shape": "Sa" - }, - "DBClusterIdentifier": {}, - "StorageType": {}, - "TdeCredentialArn": {}, - "TdeCredentialPassword": {}, - "StorageEncrypted": { - "type": "boolean" - }, - "KmsKeyId": {}, - "Domain": {}, - "CopyTagsToSnapshot": { - "type": "boolean" - }, - "MonitoringInterval": { - "type": "integer" - }, - "MonitoringRoleArn": {}, - "DomainIAMRoleName": {}, - "PromotionTier": { - "type": "integer" - }, - "Timezone": {}, - "EnableIAMDatabaseAuthentication": { - "type": "boolean" - }, - "EnablePerformanceInsights": { - "type": "boolean" - }, - "PerformanceInsightsKMSKeyId": {} - } - }, - "output": { - "resultWrapper": "CreateDBInstanceResult", - "type": "structure", - "members": { - "DBInstance": { - "shape": "S1y" - } - } - } - }, - "CreateDBInstanceReadReplica": { - "input": { - "type": "structure", - "required": [ - "DBInstanceIdentifier", - "SourceDBInstanceIdentifier" - ], - "members": { - "DBInstanceIdentifier": {}, - "SourceDBInstanceIdentifier": {}, - "DBInstanceClass": {}, - "AvailabilityZone": {}, - "Port": { - "type": "integer" - }, - "AutoMinorVersionUpgrade": { - "type": "boolean" - }, - "Iops": { - "type": "integer" - }, - "OptionGroupName": {}, - "PubliclyAccessible": { - "type": "boolean" - }, - "Tags": { - "shape": "Sa" - }, - "DBSubnetGroupName": {}, - "StorageType": {}, - "CopyTagsToSnapshot": { - "type": "boolean" - }, - "MonitoringInterval": { - "type": "integer" - }, - "MonitoringRoleArn": {}, - "KmsKeyId": {}, - "PreSignedUrl": {}, - "EnableIAMDatabaseAuthentication": { - "type": "boolean" - }, - "EnablePerformanceInsights": { - "type": "boolean" - }, - "PerformanceInsightsKMSKeyId": {}, - "SourceRegion": {} - } - }, - "output": { - "resultWrapper": "CreateDBInstanceReadReplicaResult", - "type": "structure", - "members": { - "DBInstance": { - "shape": "S1y" - } - } - } - }, - "CreateDBParameterGroup": { - "input": { - "type": "structure", - "required": [ - "DBParameterGroupName", - "DBParameterGroupFamily", - "Description" - ], - "members": { - "DBParameterGroupName": {}, - "DBParameterGroupFamily": {}, - "Description": {}, - "Tags": { - "shape": "Sa" - } - } - }, - "output": { - "resultWrapper": "CreateDBParameterGroupResult", - "type": "structure", - "members": { - "DBParameterGroup": { - "shape": "S10" - } - } - } - }, - "CreateDBSecurityGroup": { - "input": { - "type": "structure", - "required": [ - "DBSecurityGroupName", - "DBSecurityGroupDescription" - ], - "members": { - "DBSecurityGroupName": {}, - "DBSecurityGroupDescription": {}, - "Tags": { - "shape": "Sa" - } - } - }, - "output": { - "resultWrapper": "CreateDBSecurityGroupResult", - "type": "structure", - "members": { - "DBSecurityGroup": { - "shape": "Sk" - } - } - } - }, - "CreateDBSnapshot": { - "input": { - "type": "structure", - "required": [ - "DBSnapshotIdentifier", - "DBInstanceIdentifier" - ], - "members": { - "DBSnapshotIdentifier": {}, - "DBInstanceIdentifier": {}, - "Tags": { - "shape": "Sa" - } - } - }, - "output": { - "resultWrapper": "CreateDBSnapshotResult", - "type": "structure", - "members": { - "DBSnapshot": { - "shape": "S13" - } - } - } - }, - "CreateDBSubnetGroup": { - "input": { - "type": "structure", - "required": [ - "DBSubnetGroupName", - "DBSubnetGroupDescription", - "SubnetIds" - ], - "members": { - "DBSubnetGroupName": {}, - "DBSubnetGroupDescription": {}, - "SubnetIds": { - "shape": "S2o" - }, - "Tags": { - "shape": "Sa" - } - } - }, - "output": { - "resultWrapper": "CreateDBSubnetGroupResult", - "type": "structure", - "members": { - "DBSubnetGroup": { - "shape": "S22" - } - } - } - }, - "CreateEventSubscription": { - "input": { - "type": "structure", - "required": [ - "SubscriptionName", - "SnsTopicArn" - ], - "members": { - "SubscriptionName": {}, - "SnsTopicArn": {}, - "SourceType": {}, - "EventCategories": { - "shape": "S7" - }, - "SourceIds": { - "shape": "S6" - }, - "Enabled": { - "type": "boolean" - }, - "Tags": { - "shape": "Sa" - } - } - }, - "output": { - "resultWrapper": "CreateEventSubscriptionResult", - "type": "structure", - "members": { - "EventSubscription": { - "shape": "S5" - } - } - } - }, - "CreateOptionGroup": { - "input": { - "type": "structure", - "required": [ - "OptionGroupName", - "EngineName", - "MajorEngineVersion", - "OptionGroupDescription" - ], - "members": { - "OptionGroupName": {}, - "EngineName": {}, - "MajorEngineVersion": {}, - "OptionGroupDescription": {}, - "Tags": { - "shape": "Sa" - } - } - }, - "output": { - "resultWrapper": "CreateOptionGroupResult", - "type": "structure", - "members": { - "OptionGroup": { - "shape": "S17" - } - } - } - }, - "DeleteDBCluster": { - "input": { - "type": "structure", - "required": [ - "DBClusterIdentifier" - ], - "members": { - "DBClusterIdentifier": {}, - "SkipFinalSnapshot": { - "type": "boolean" - }, - "FinalDBSnapshotIdentifier": {} - } - }, - "output": { - "resultWrapper": "DeleteDBClusterResult", - "type": "structure", - "members": { - "DBCluster": { - "shape": "S1j" - } - } - } - }, - "DeleteDBClusterParameterGroup": { - "input": { - "type": "structure", - "required": [ - "DBClusterParameterGroupName" - ], - "members": { - "DBClusterParameterGroupName": {} - } - } - }, - "DeleteDBClusterSnapshot": { - "input": { - "type": "structure", - "required": [ - "DBClusterSnapshotIdentifier" - ], - "members": { - "DBClusterSnapshotIdentifier": {} - } - }, - "output": { - "resultWrapper": "DeleteDBClusterSnapshotResult", - "type": "structure", - "members": { - "DBClusterSnapshot": { - "shape": "Sv" - } - } - } - }, - "DeleteDBInstance": { - "input": { - "type": "structure", - "required": [ - "DBInstanceIdentifier" - ], - "members": { - "DBInstanceIdentifier": {}, - "SkipFinalSnapshot": { - "type": "boolean" - }, - "FinalDBSnapshotIdentifier": {} - } - }, - "output": { - "resultWrapper": "DeleteDBInstanceResult", - "type": "structure", - "members": { - "DBInstance": { - "shape": "S1y" - } - } - } - }, - "DeleteDBParameterGroup": { - "input": { - "type": "structure", - "required": [ - "DBParameterGroupName" - ], - "members": { - "DBParameterGroupName": {} - } - } - }, - "DeleteDBSecurityGroup": { - "input": { - "type": "structure", - "required": [ - "DBSecurityGroupName" - ], - "members": { - "DBSecurityGroupName": {} - } - } - }, - "DeleteDBSnapshot": { - "input": { - "type": "structure", - "required": [ - "DBSnapshotIdentifier" - ], - "members": { - "DBSnapshotIdentifier": {} - } - }, - "output": { - "resultWrapper": "DeleteDBSnapshotResult", - "type": "structure", - "members": { - "DBSnapshot": { - "shape": "S13" - } - } - } - }, - "DeleteDBSubnetGroup": { - "input": { - "type": "structure", - "required": [ - "DBSubnetGroupName" - ], - "members": { - "DBSubnetGroupName": {} - } - } - }, - "DeleteEventSubscription": { - "input": { - "type": "structure", - "required": [ - "SubscriptionName" - ], - "members": { - "SubscriptionName": {} - } - }, - "output": { - "resultWrapper": "DeleteEventSubscriptionResult", - "type": "structure", - "members": { - "EventSubscription": { - "shape": "S5" - } - } - } - }, - "DeleteOptionGroup": { - "input": { - "type": "structure", - "required": [ - "OptionGroupName" - ], - "members": { - "OptionGroupName": {} - } - } - }, - "DescribeAccountAttributes": { - "input": { - "type": "structure", - "members": {} - }, - "output": { - "resultWrapper": "DescribeAccountAttributesResult", - "type": "structure", - "members": { - "AccountQuotas": { - "type": "list", - "member": { - "locationName": "AccountQuota", - "type": "structure", - "members": { - "AccountQuotaName": {}, - "Used": { - "type": "long" - }, - "Max": { - "type": "long" - } - }, - "wrapper": true - } - } - } - } - }, - "DescribeCertificates": { - "input": { - "type": "structure", - "members": { - "CertificateIdentifier": {}, - "Filters": { - "shape": "S3f" - }, - "MaxRecords": { - "type": "integer" - }, - "Marker": {} - } - }, - "output": { - "resultWrapper": "DescribeCertificatesResult", - "type": "structure", - "members": { - "Certificates": { - "type": "list", - "member": { - "locationName": "Certificate", - "type": "structure", - "members": { - "CertificateIdentifier": {}, - "CertificateType": {}, - "Thumbprint": {}, - "ValidFrom": { - "type": "timestamp" - }, - "ValidTill": { - "type": "timestamp" - }, - "CertificateArn": {} - }, - "wrapper": true - } - }, - "Marker": {} - } - } - }, - "DescribeDBClusterParameterGroups": { - "input": { - "type": "structure", - "members": { - "DBClusterParameterGroupName": {}, - "Filters": { - "shape": "S3f" - }, - "MaxRecords": { - "type": "integer" - }, - "Marker": {} - } - }, - "output": { - "resultWrapper": "DescribeDBClusterParameterGroupsResult", - "type": "structure", - "members": { - "Marker": {}, - "DBClusterParameterGroups": { - "type": "list", - "member": { - "shape": "Sr", - "locationName": "DBClusterParameterGroup" - } - } - } - } - }, - "DescribeDBClusterParameters": { - "input": { - "type": "structure", - "required": [ - "DBClusterParameterGroupName" - ], - "members": { - "DBClusterParameterGroupName": {}, - "Source": {}, - "Filters": { - "shape": "S3f" - }, - "MaxRecords": { - "type": "integer" - }, - "Marker": {} - } - }, - "output": { - "resultWrapper": "DescribeDBClusterParametersResult", - "type": "structure", - "members": { - "Parameters": { - "shape": "S3q" - }, - "Marker": {} - } - } - }, - "DescribeDBClusterSnapshotAttributes": { - "input": { - "type": "structure", - "required": [ - "DBClusterSnapshotIdentifier" - ], - "members": { - "DBClusterSnapshotIdentifier": {} - } - }, - "output": { - "resultWrapper": "DescribeDBClusterSnapshotAttributesResult", - "type": "structure", - "members": { - "DBClusterSnapshotAttributesResult": { - "shape": "S3v" - } - } - } - }, - "DescribeDBClusterSnapshots": { - "input": { - "type": "structure", - "members": { - "DBClusterIdentifier": {}, - "DBClusterSnapshotIdentifier": {}, - "SnapshotType": {}, - "Filters": { - "shape": "S3f" - }, - "MaxRecords": { - "type": "integer" - }, - "Marker": {}, - "IncludeShared": { - "type": "boolean" - }, - "IncludePublic": { - "type": "boolean" - } - } - }, - "output": { - "resultWrapper": "DescribeDBClusterSnapshotsResult", - "type": "structure", - "members": { - "Marker": {}, - "DBClusterSnapshots": { - "type": "list", - "member": { - "shape": "Sv", - "locationName": "DBClusterSnapshot" - } - } - } - } - }, - "DescribeDBClusters": { - "input": { - "type": "structure", - "members": { - "DBClusterIdentifier": {}, - "Filters": { - "shape": "S3f" - }, - "MaxRecords": { - "type": "integer" - }, - "Marker": {} - } - }, - "output": { - "resultWrapper": "DescribeDBClustersResult", - "type": "structure", - "members": { - "Marker": {}, - "DBClusters": { - "type": "list", - "member": { - "shape": "S1j", - "locationName": "DBCluster" - } - } - } - } - }, - "DescribeDBEngineVersions": { - "input": { - "type": "structure", - "members": { - "Engine": {}, - "EngineVersion": {}, - "DBParameterGroupFamily": {}, - "Filters": { - "shape": "S3f" - }, - "MaxRecords": { - "type": "integer" - }, - "Marker": {}, - "DefaultOnly": { - "type": "boolean" - }, - "ListSupportedCharacterSets": { - "type": "boolean" - }, - "ListSupportedTimezones": { - "type": "boolean" - } - } - }, - "output": { - "resultWrapper": "DescribeDBEngineVersionsResult", - "type": "structure", - "members": { - "Marker": {}, - "DBEngineVersions": { - "type": "list", - "member": { - "locationName": "DBEngineVersion", - "type": "structure", - "members": { - "Engine": {}, - "EngineVersion": {}, - "DBParameterGroupFamily": {}, - "DBEngineDescription": {}, - "DBEngineVersionDescription": {}, - "DefaultCharacterSet": { - "shape": "S49" - }, - "SupportedCharacterSets": { - "type": "list", - "member": { - "shape": "S49", - "locationName": "CharacterSet" - } - }, - "ValidUpgradeTarget": { - "type": "list", - "member": { - "locationName": "UpgradeTarget", - "type": "structure", - "members": { - "Engine": {}, - "EngineVersion": {}, - "Description": {}, - "AutoUpgrade": { - "type": "boolean" - }, - "IsMajorVersionUpgrade": { - "type": "boolean" - } - } - } - }, - "SupportedTimezones": { - "type": "list", - "member": { - "locationName": "Timezone", - "type": "structure", - "members": { - "TimezoneName": {} - } - } - } - } - } - } - } - } - }, - "DescribeDBInstances": { - "input": { - "type": "structure", - "members": { - "DBInstanceIdentifier": {}, - "Filters": { - "shape": "S3f" - }, - "MaxRecords": { - "type": "integer" - }, - "Marker": {} - } - }, - "output": { - "resultWrapper": "DescribeDBInstancesResult", - "type": "structure", - "members": { - "Marker": {}, - "DBInstances": { - "type": "list", - "member": { - "shape": "S1y", - "locationName": "DBInstance" - } - } - } - } - }, - "DescribeDBLogFiles": { - "input": { - "type": "structure", - "required": [ - "DBInstanceIdentifier" - ], - "members": { - "DBInstanceIdentifier": {}, - "FilenameContains": {}, - "FileLastWritten": { - "type": "long" - }, - "FileSize": { - "type": "long" - }, - "Filters": { - "shape": "S3f" - }, - "MaxRecords": { - "type": "integer" - }, - "Marker": {} - } - }, - "output": { - "resultWrapper": "DescribeDBLogFilesResult", - "type": "structure", - "members": { - "DescribeDBLogFiles": { - "type": "list", - "member": { - "locationName": "DescribeDBLogFilesDetails", - "type": "structure", - "members": { - "LogFileName": {}, - "LastWritten": { - "type": "long" - }, - "Size": { - "type": "long" - } - } - } - }, - "Marker": {} - } - } - }, - "DescribeDBParameterGroups": { - "input": { - "type": "structure", - "members": { - "DBParameterGroupName": {}, - "Filters": { - "shape": "S3f" - }, - "MaxRecords": { - "type": "integer" - }, - "Marker": {} - } - }, - "output": { - "resultWrapper": "DescribeDBParameterGroupsResult", - "type": "structure", - "members": { - "Marker": {}, - "DBParameterGroups": { - "type": "list", - "member": { - "shape": "S10", - "locationName": "DBParameterGroup" - } - } - } - } - }, - "DescribeDBParameters": { - "input": { - "type": "structure", - "required": [ - "DBParameterGroupName" - ], - "members": { - "DBParameterGroupName": {}, - "Source": {}, - "Filters": { - "shape": "S3f" - }, - "MaxRecords": { - "type": "integer" - }, - "Marker": {} - } - }, - "output": { - "resultWrapper": "DescribeDBParametersResult", - "type": "structure", - "members": { - "Parameters": { - "shape": "S3q" - }, - "Marker": {} - } - } - }, - "DescribeDBSecurityGroups": { - "input": { - "type": "structure", - "members": { - "DBSecurityGroupName": {}, - "Filters": { - "shape": "S3f" - }, - "MaxRecords": { - "type": "integer" - }, - "Marker": {} - } - }, - "output": { - "resultWrapper": "DescribeDBSecurityGroupsResult", - "type": "structure", - "members": { - "Marker": {}, - "DBSecurityGroups": { - "type": "list", - "member": { - "shape": "Sk", - "locationName": "DBSecurityGroup" - } - } - } - } - }, - "DescribeDBSnapshotAttributes": { - "input": { - "type": "structure", - "required": [ - "DBSnapshotIdentifier" - ], - "members": { - "DBSnapshotIdentifier": {} - } - }, - "output": { - "resultWrapper": "DescribeDBSnapshotAttributesResult", - "type": "structure", - "members": { - "DBSnapshotAttributesResult": { - "shape": "S4w" - } - } - } - }, - "DescribeDBSnapshots": { - "input": { - "type": "structure", - "members": { - "DBInstanceIdentifier": {}, - "DBSnapshotIdentifier": {}, - "SnapshotType": {}, - "Filters": { - "shape": "S3f" - }, - "MaxRecords": { - "type": "integer" - }, - "Marker": {}, - "IncludeShared": { - "type": "boolean" - }, - "IncludePublic": { - "type": "boolean" - } - } - }, - "output": { - "resultWrapper": "DescribeDBSnapshotsResult", - "type": "structure", - "members": { - "Marker": {}, - "DBSnapshots": { - "type": "list", - "member": { - "shape": "S13", - "locationName": "DBSnapshot" - } - } - } - } - }, - "DescribeDBSubnetGroups": { - "input": { - "type": "structure", - "members": { - "DBSubnetGroupName": {}, - "Filters": { - "shape": "S3f" - }, - "MaxRecords": { - "type": "integer" - }, - "Marker": {} - } - }, - "output": { - "resultWrapper": "DescribeDBSubnetGroupsResult", - "type": "structure", - "members": { - "Marker": {}, - "DBSubnetGroups": { - "type": "list", - "member": { - "shape": "S22", - "locationName": "DBSubnetGroup" - } - } - } - } - }, - "DescribeEngineDefaultClusterParameters": { - "input": { - "type": "structure", - "required": [ - "DBParameterGroupFamily" - ], - "members": { - "DBParameterGroupFamily": {}, - "Filters": { - "shape": "S3f" - }, - "MaxRecords": { - "type": "integer" - }, - "Marker": {} - } - }, - "output": { - "resultWrapper": "DescribeEngineDefaultClusterParametersResult", - "type": "structure", - "members": { - "EngineDefaults": { - "shape": "S57" - } - } - } - }, - "DescribeEngineDefaultParameters": { - "input": { - "type": "structure", - "required": [ - "DBParameterGroupFamily" - ], - "members": { - "DBParameterGroupFamily": {}, - "Filters": { - "shape": "S3f" - }, - "MaxRecords": { - "type": "integer" - }, - "Marker": {} - } - }, - "output": { - "resultWrapper": "DescribeEngineDefaultParametersResult", - "type": "structure", - "members": { - "EngineDefaults": { - "shape": "S57" - } - } - } - }, - "DescribeEventCategories": { - "input": { - "type": "structure", - "members": { - "SourceType": {}, - "Filters": { - "shape": "S3f" - } - } - }, - "output": { - "resultWrapper": "DescribeEventCategoriesResult", - "type": "structure", - "members": { - "EventCategoriesMapList": { - "type": "list", - "member": { - "locationName": "EventCategoriesMap", - "type": "structure", - "members": { - "SourceType": {}, - "EventCategories": { - "shape": "S7" - } - }, - "wrapper": true - } - } - } - } - }, - "DescribeEventSubscriptions": { - "input": { - "type": "structure", - "members": { - "SubscriptionName": {}, - "Filters": { - "shape": "S3f" - }, - "MaxRecords": { - "type": "integer" - }, - "Marker": {} - } - }, - "output": { - "resultWrapper": "DescribeEventSubscriptionsResult", - "type": "structure", - "members": { - "Marker": {}, - "EventSubscriptionsList": { - "type": "list", - "member": { - "shape": "S5", - "locationName": "EventSubscription" - } - } - } - } - }, - "DescribeEvents": { - "input": { - "type": "structure", - "members": { - "SourceIdentifier": {}, - "SourceType": {}, - "StartTime": { - "type": "timestamp" - }, - "EndTime": { - "type": "timestamp" - }, - "Duration": { - "type": "integer" - }, - "EventCategories": { - "shape": "S7" - }, - "Filters": { - "shape": "S3f" - }, - "MaxRecords": { - "type": "integer" - }, - "Marker": {} - } - }, - "output": { - "resultWrapper": "DescribeEventsResult", - "type": "structure", - "members": { - "Marker": {}, - "Events": { - "type": "list", - "member": { - "locationName": "Event", - "type": "structure", - "members": { - "SourceIdentifier": {}, - "SourceType": {}, - "Message": {}, - "EventCategories": { - "shape": "S7" - }, - "Date": { - "type": "timestamp" - }, - "SourceArn": {} - } - } - } - } - } - }, - "DescribeOptionGroupOptions": { - "input": { - "type": "structure", - "required": [ - "EngineName" - ], - "members": { - "EngineName": {}, - "MajorEngineVersion": {}, - "Filters": { - "shape": "S3f" - }, - "MaxRecords": { - "type": "integer" - }, - "Marker": {} - } - }, - "output": { - "resultWrapper": "DescribeOptionGroupOptionsResult", - "type": "structure", - "members": { - "OptionGroupOptions": { - "type": "list", - "member": { - "locationName": "OptionGroupOption", - "type": "structure", - "members": { - "Name": {}, - "Description": {}, - "EngineName": {}, - "MajorEngineVersion": {}, - "MinimumRequiredMinorEngineVersion": {}, - "PortRequired": { - "type": "boolean" - }, - "DefaultPort": { - "type": "integer" - }, - "OptionsDependedOn": { - "type": "list", - "member": { - "locationName": "OptionName" - } - }, - "OptionsConflictsWith": { - "type": "list", - "member": { - "locationName": "OptionConflictName" - } - }, - "Persistent": { - "type": "boolean" - }, - "Permanent": { - "type": "boolean" - }, - "RequiresAutoMinorEngineVersionUpgrade": { - "type": "boolean" - }, - "VpcOnly": { - "type": "boolean" - }, - "SupportsOptionVersionDowngrade": { - "type": "boolean" - }, - "OptionGroupOptionSettings": { - "type": "list", - "member": { - "locationName": "OptionGroupOptionSetting", - "type": "structure", - "members": { - "SettingName": {}, - "SettingDescription": {}, - "DefaultValue": {}, - "ApplyType": {}, - "AllowedValues": {}, - "IsModifiable": { - "type": "boolean" - } - } - } - }, - "OptionGroupOptionVersions": { - "type": "list", - "member": { - "locationName": "OptionVersion", - "type": "structure", - "members": { - "Version": {}, - "IsDefault": { - "type": "boolean" - } - } - } - } - } - } - }, - "Marker": {} - } - } - }, - "DescribeOptionGroups": { - "input": { - "type": "structure", - "members": { - "OptionGroupName": {}, - "Filters": { - "shape": "S3f" - }, - "Marker": {}, - "MaxRecords": { - "type": "integer" - }, - "EngineName": {}, - "MajorEngineVersion": {} - } - }, - "output": { - "resultWrapper": "DescribeOptionGroupsResult", - "type": "structure", - "members": { - "OptionGroupsList": { - "type": "list", - "member": { - "shape": "S17", - "locationName": "OptionGroup" - } - }, - "Marker": {} - } - } - }, - "DescribeOrderableDBInstanceOptions": { - "input": { - "type": "structure", - "required": [ - "Engine" - ], - "members": { - "Engine": {}, - "EngineVersion": {}, - "DBInstanceClass": {}, - "LicenseModel": {}, - "Vpc": { - "type": "boolean" - }, - "Filters": { - "shape": "S3f" - }, - "MaxRecords": { - "type": "integer" - }, - "Marker": {} - } - }, - "output": { - "resultWrapper": "DescribeOrderableDBInstanceOptionsResult", - "type": "structure", - "members": { - "OrderableDBInstanceOptions": { - "type": "list", - "member": { - "locationName": "OrderableDBInstanceOption", - "type": "structure", - "members": { - "Engine": {}, - "EngineVersion": {}, - "DBInstanceClass": {}, - "LicenseModel": {}, - "AvailabilityZones": { - "type": "list", - "member": { - "shape": "S25", - "locationName": "AvailabilityZone" - } - }, - "MultiAZCapable": { - "type": "boolean" - }, - "ReadReplicaCapable": { - "type": "boolean" - }, - "Vpc": { - "type": "boolean" - }, - "SupportsStorageEncryption": { - "type": "boolean" - }, - "StorageType": {}, - "SupportsIops": { - "type": "boolean" - }, - "SupportsEnhancedMonitoring": { - "type": "boolean" - }, - "SupportsIAMDatabaseAuthentication": { - "type": "boolean" - }, - "SupportsPerformanceInsights": { - "type": "boolean" - } - }, - "wrapper": true - } - }, - "Marker": {} - } - } - }, - "DescribePendingMaintenanceActions": { - "input": { - "type": "structure", - "members": { - "ResourceIdentifier": {}, - "Filters": { - "shape": "S3f" - }, - "Marker": {}, - "MaxRecords": { - "type": "integer" - } - } - }, - "output": { - "resultWrapper": "DescribePendingMaintenanceActionsResult", - "type": "structure", - "members": { - "PendingMaintenanceActions": { - "type": "list", - "member": { - "shape": "Se", - "locationName": "ResourcePendingMaintenanceActions" - } - }, - "Marker": {} - } - } - }, - "DescribeReservedDBInstances": { - "input": { - "type": "structure", - "members": { - "ReservedDBInstanceId": {}, - "ReservedDBInstancesOfferingId": {}, - "DBInstanceClass": {}, - "Duration": {}, - "ProductDescription": {}, - "OfferingType": {}, - "MultiAZ": { - "type": "boolean" - }, - "Filters": { - "shape": "S3f" - }, - "MaxRecords": { - "type": "integer" - }, - "Marker": {} - } - }, - "output": { - "resultWrapper": "DescribeReservedDBInstancesResult", - "type": "structure", - "members": { - "Marker": {}, - "ReservedDBInstances": { - "type": "list", - "member": { - "shape": "S6a", - "locationName": "ReservedDBInstance" - } - } - } - } - }, - "DescribeReservedDBInstancesOfferings": { - "input": { - "type": "structure", - "members": { - "ReservedDBInstancesOfferingId": {}, - "DBInstanceClass": {}, - "Duration": {}, - "ProductDescription": {}, - "OfferingType": {}, - "MultiAZ": { - "type": "boolean" - }, - "Filters": { - "shape": "S3f" - }, - "MaxRecords": { - "type": "integer" - }, - "Marker": {} - } - }, - "output": { - "resultWrapper": "DescribeReservedDBInstancesOfferingsResult", - "type": "structure", - "members": { - "Marker": {}, - "ReservedDBInstancesOfferings": { - "type": "list", - "member": { - "locationName": "ReservedDBInstancesOffering", - "type": "structure", - "members": { - "ReservedDBInstancesOfferingId": {}, - "DBInstanceClass": {}, - "Duration": { - "type": "integer" - }, - "FixedPrice": { - "type": "double" - }, - "UsagePrice": { - "type": "double" - }, - "CurrencyCode": {}, - "ProductDescription": {}, - "OfferingType": {}, - "MultiAZ": { - "type": "boolean" - }, - "RecurringCharges": { - "shape": "S6c" - } - }, - "wrapper": true - } - } - } - } - }, - "DescribeSourceRegions": { - "input": { - "type": "structure", - "members": { - "RegionName": {}, - "MaxRecords": { - "type": "integer" - }, - "Marker": {}, - "Filters": { - "shape": "S3f" - } - } - }, - "output": { - "resultWrapper": "DescribeSourceRegionsResult", - "type": "structure", - "members": { - "Marker": {}, - "SourceRegions": { - "type": "list", - "member": { - "locationName": "SourceRegion", - "type": "structure", - "members": { - "RegionName": {}, - "Endpoint": {}, - "Status": {} - } - } - } - } - } - }, - "DescribeValidDBInstanceModifications": { - "input": { - "type": "structure", - "required": [ - "DBInstanceIdentifier" - ], - "members": { - "DBInstanceIdentifier": {} - } - }, - "output": { - "resultWrapper": "DescribeValidDBInstanceModificationsResult", - "type": "structure", - "members": { - "ValidDBInstanceModificationsMessage": { - "type": "structure", - "members": { - "Storage": { - "type": "list", - "member": { - "locationName": "ValidStorageOptions", - "type": "structure", - "members": { - "StorageType": {}, - "StorageSize": { - "shape": "S6r" - }, - "ProvisionedIops": { - "shape": "S6r" - }, - "IopsToStorageRatio": { - "type": "list", - "member": { - "locationName": "DoubleRange", - "type": "structure", - "members": { - "From": { - "type": "double" - }, - "To": { - "type": "double" - } - } - } - } - } - } - } - }, - "wrapper": true - } - } - } - }, - "DownloadDBLogFilePortion": { - "input": { - "type": "structure", - "required": [ - "DBInstanceIdentifier", - "LogFileName" - ], - "members": { - "DBInstanceIdentifier": {}, - "LogFileName": {}, - "Marker": {}, - "NumberOfLines": { - "type": "integer" - } - } - }, - "output": { - "resultWrapper": "DownloadDBLogFilePortionResult", - "type": "structure", - "members": { - "LogFileData": {}, - "Marker": {}, - "AdditionalDataPending": { - "type": "boolean" - } - } - } - }, - "FailoverDBCluster": { - "input": { - "type": "structure", - "members": { - "DBClusterIdentifier": {}, - "TargetDBInstanceIdentifier": {} - } - }, - "output": { - "resultWrapper": "FailoverDBClusterResult", - "type": "structure", - "members": { - "DBCluster": { - "shape": "S1j" - } - } - } - }, - "ListTagsForResource": { - "input": { - "type": "structure", - "required": [ - "ResourceName" - ], - "members": { - "ResourceName": {}, - "Filters": { - "shape": "S3f" - } - } - }, - "output": { - "resultWrapper": "ListTagsForResourceResult", - "type": "structure", - "members": { - "TagList": { - "shape": "Sa" - } - } - } - }, - "ModifyDBCluster": { - "input": { - "type": "structure", - "required": [ - "DBClusterIdentifier" - ], - "members": { - "DBClusterIdentifier": {}, - "NewDBClusterIdentifier": {}, - "ApplyImmediately": { - "type": "boolean" - }, - "BackupRetentionPeriod": { - "type": "integer" - }, - "DBClusterParameterGroupName": {}, - "VpcSecurityGroupIds": { - "shape": "S1h" - }, - "Port": { - "type": "integer" - }, - "MasterUserPassword": {}, - "OptionGroupName": {}, - "PreferredBackupWindow": {}, - "PreferredMaintenanceWindow": {}, - "EnableIAMDatabaseAuthentication": { - "type": "boolean" - } - } - }, - "output": { - "resultWrapper": "ModifyDBClusterResult", - "type": "structure", - "members": { - "DBCluster": { - "shape": "S1j" - } - } - } - }, - "ModifyDBClusterParameterGroup": { - "input": { - "type": "structure", - "required": [ - "DBClusterParameterGroupName", - "Parameters" - ], - "members": { - "DBClusterParameterGroupName": {}, - "Parameters": { - "shape": "S3q" - } - } - }, - "output": { - "shape": "S74", - "resultWrapper": "ModifyDBClusterParameterGroupResult" - } - }, - "ModifyDBClusterSnapshotAttribute": { - "input": { - "type": "structure", - "required": [ - "DBClusterSnapshotIdentifier", - "AttributeName" - ], - "members": { - "DBClusterSnapshotIdentifier": {}, - "AttributeName": {}, - "ValuesToAdd": { - "shape": "S3y" - }, - "ValuesToRemove": { - "shape": "S3y" - } - } - }, - "output": { - "resultWrapper": "ModifyDBClusterSnapshotAttributeResult", - "type": "structure", - "members": { - "DBClusterSnapshotAttributesResult": { - "shape": "S3v" - } - } - } - }, - "ModifyDBInstance": { - "input": { - "type": "structure", - "required": [ - "DBInstanceIdentifier" - ], - "members": { - "DBInstanceIdentifier": {}, - "AllocatedStorage": { - "type": "integer" - }, - "DBInstanceClass": {}, - "DBSubnetGroupName": {}, - "DBSecurityGroups": { - "shape": "S1w" - }, - "VpcSecurityGroupIds": { - "shape": "S1h" - }, - "ApplyImmediately": { - "type": "boolean" - }, - "MasterUserPassword": {}, - "DBParameterGroupName": {}, - "BackupRetentionPeriod": { - "type": "integer" - }, - "PreferredBackupWindow": {}, - "PreferredMaintenanceWindow": {}, - "MultiAZ": { - "type": "boolean" - }, - "EngineVersion": {}, - "AllowMajorVersionUpgrade": { - "type": "boolean" - }, - "AutoMinorVersionUpgrade": { - "type": "boolean" - }, - "LicenseModel": {}, - "Iops": { - "type": "integer" - }, - "OptionGroupName": {}, - "NewDBInstanceIdentifier": {}, - "StorageType": {}, - "TdeCredentialArn": {}, - "TdeCredentialPassword": {}, - "CACertificateIdentifier": {}, - "Domain": {}, - "CopyTagsToSnapshot": { - "type": "boolean" - }, - "MonitoringInterval": { - "type": "integer" - }, - "DBPortNumber": { - "type": "integer" - }, - "PubliclyAccessible": { - "type": "boolean" - }, - "MonitoringRoleArn": {}, - "DomainIAMRoleName": {}, - "PromotionTier": { - "type": "integer" - }, - "EnableIAMDatabaseAuthentication": { - "type": "boolean" - }, - "EnablePerformanceInsights": { - "type": "boolean" - }, - "PerformanceInsightsKMSKeyId": {} - } - }, - "output": { - "resultWrapper": "ModifyDBInstanceResult", - "type": "structure", - "members": { - "DBInstance": { - "shape": "S1y" - } - } - } - }, - "ModifyDBParameterGroup": { - "input": { - "type": "structure", - "required": [ - "DBParameterGroupName", - "Parameters" - ], - "members": { - "DBParameterGroupName": {}, - "Parameters": { - "shape": "S3q" - } - } - }, - "output": { - "shape": "S7a", - "resultWrapper": "ModifyDBParameterGroupResult" - } - }, - "ModifyDBSnapshot": { - "input": { - "type": "structure", - "required": [ - "DBSnapshotIdentifier" - ], - "members": { - "DBSnapshotIdentifier": {}, - "EngineVersion": {}, - "OptionGroupName": {} - } - }, - "output": { - "resultWrapper": "ModifyDBSnapshotResult", - "type": "structure", - "members": { - "DBSnapshot": { - "shape": "S13" - } - } - } - }, - "ModifyDBSnapshotAttribute": { - "input": { - "type": "structure", - "required": [ - "DBSnapshotIdentifier", - "AttributeName" - ], - "members": { - "DBSnapshotIdentifier": {}, - "AttributeName": {}, - "ValuesToAdd": { - "shape": "S3y" - }, - "ValuesToRemove": { - "shape": "S3y" - } - } - }, - "output": { - "resultWrapper": "ModifyDBSnapshotAttributeResult", - "type": "structure", - "members": { - "DBSnapshotAttributesResult": { - "shape": "S4w" - } - } - } - }, - "ModifyDBSubnetGroup": { - "input": { - "type": "structure", - "required": [ - "DBSubnetGroupName", - "SubnetIds" - ], - "members": { - "DBSubnetGroupName": {}, - "DBSubnetGroupDescription": {}, - "SubnetIds": { - "shape": "S2o" - } - } - }, - "output": { - "resultWrapper": "ModifyDBSubnetGroupResult", - "type": "structure", - "members": { - "DBSubnetGroup": { - "shape": "S22" - } - } - } - }, - "ModifyEventSubscription": { - "input": { - "type": "structure", - "required": [ - "SubscriptionName" - ], - "members": { - "SubscriptionName": {}, - "SnsTopicArn": {}, - "SourceType": {}, - "EventCategories": { - "shape": "S7" - }, - "Enabled": { - "type": "boolean" - } - } - }, - "output": { - "resultWrapper": "ModifyEventSubscriptionResult", - "type": "structure", - "members": { - "EventSubscription": { - "shape": "S5" - } - } - } - }, - "ModifyOptionGroup": { - "input": { - "type": "structure", - "required": [ - "OptionGroupName" - ], - "members": { - "OptionGroupName": {}, - "OptionsToInclude": { - "type": "list", - "member": { - "locationName": "OptionConfiguration", - "type": "structure", - "required": [ - "OptionName" - ], - "members": { - "OptionName": {}, - "Port": { - "type": "integer" - }, - "OptionVersion": {}, - "DBSecurityGroupMemberships": { - "shape": "S1w" - }, - "VpcSecurityGroupMemberships": { - "shape": "S1h" - }, - "OptionSettings": { - "type": "list", - "member": { - "shape": "S1b", - "locationName": "OptionSetting" - } - } - } - } - }, - "OptionsToRemove": { - "type": "list", - "member": {} - }, - "ApplyImmediately": { - "type": "boolean" - } - } - }, - "output": { - "resultWrapper": "ModifyOptionGroupResult", - "type": "structure", - "members": { - "OptionGroup": { - "shape": "S17" - } - } - } - }, - "PromoteReadReplica": { - "input": { - "type": "structure", - "required": [ - "DBInstanceIdentifier" - ], - "members": { - "DBInstanceIdentifier": {}, - "BackupRetentionPeriod": { - "type": "integer" - }, - "PreferredBackupWindow": {} - } - }, - "output": { - "resultWrapper": "PromoteReadReplicaResult", - "type": "structure", - "members": { - "DBInstance": { - "shape": "S1y" - } - } - } - }, - "PromoteReadReplicaDBCluster": { - "input": { - "type": "structure", - "required": [ - "DBClusterIdentifier" - ], - "members": { - "DBClusterIdentifier": {} - } - }, - "output": { - "resultWrapper": "PromoteReadReplicaDBClusterResult", - "type": "structure", - "members": { - "DBCluster": { - "shape": "S1j" - } - } - } - }, - "PurchaseReservedDBInstancesOffering": { - "input": { - "type": "structure", - "required": [ - "ReservedDBInstancesOfferingId" - ], - "members": { - "ReservedDBInstancesOfferingId": {}, - "ReservedDBInstanceId": {}, - "DBInstanceCount": { - "type": "integer" - }, - "Tags": { - "shape": "Sa" - } - } - }, - "output": { - "resultWrapper": "PurchaseReservedDBInstancesOfferingResult", - "type": "structure", - "members": { - "ReservedDBInstance": { - "shape": "S6a" - } - } - } - }, - "RebootDBInstance": { - "input": { - "type": "structure", - "required": [ - "DBInstanceIdentifier" - ], - "members": { - "DBInstanceIdentifier": {}, - "ForceFailover": { - "type": "boolean" - } - } - }, - "output": { - "resultWrapper": "RebootDBInstanceResult", - "type": "structure", - "members": { - "DBInstance": { - "shape": "S1y" - } - } - } - }, - "RemoveRoleFromDBCluster": { - "input": { - "type": "structure", - "required": [ - "DBClusterIdentifier", - "RoleArn" - ], - "members": { - "DBClusterIdentifier": {}, - "RoleArn": {} - } - } - }, - "RemoveSourceIdentifierFromSubscription": { - "input": { - "type": "structure", - "required": [ - "SubscriptionName", - "SourceIdentifier" - ], - "members": { - "SubscriptionName": {}, - "SourceIdentifier": {} - } - }, - "output": { - "resultWrapper": "RemoveSourceIdentifierFromSubscriptionResult", - "type": "structure", - "members": { - "EventSubscription": { - "shape": "S5" - } - } - } - }, - "RemoveTagsFromResource": { - "input": { - "type": "structure", - "required": [ - "ResourceName", - "TagKeys" - ], - "members": { - "ResourceName": {}, - "TagKeys": { - "type": "list", - "member": {} - } - } - } - }, - "ResetDBClusterParameterGroup": { - "input": { - "type": "structure", - "required": [ - "DBClusterParameterGroupName" - ], - "members": { - "DBClusterParameterGroupName": {}, - "ResetAllParameters": { - "type": "boolean" - }, - "Parameters": { - "shape": "S3q" - } - } - }, - "output": { - "shape": "S74", - "resultWrapper": "ResetDBClusterParameterGroupResult" - } - }, - "ResetDBParameterGroup": { - "input": { - "type": "structure", - "required": [ - "DBParameterGroupName" - ], - "members": { - "DBParameterGroupName": {}, - "ResetAllParameters": { - "type": "boolean" - }, - "Parameters": { - "shape": "S3q" - } - } - }, - "output": { - "shape": "S7a", - "resultWrapper": "ResetDBParameterGroupResult" - } - }, - "RestoreDBClusterFromS3": { - "input": { - "type": "structure", - "required": [ - "DBClusterIdentifier", - "Engine", - "MasterUsername", - "MasterUserPassword", - "SourceEngine", - "SourceEngineVersion", - "S3BucketName", - "S3IngestionRoleArn" - ], - "members": { - "AvailabilityZones": { - "shape": "Sw" - }, - "BackupRetentionPeriod": { - "type": "integer" - }, - "CharacterSetName": {}, - "DatabaseName": {}, - "DBClusterIdentifier": {}, - "DBClusterParameterGroupName": {}, - "VpcSecurityGroupIds": { - "shape": "S1h" - }, - "DBSubnetGroupName": {}, - "Engine": {}, - "EngineVersion": {}, - "Port": { - "type": "integer" - }, - "MasterUsername": {}, - "MasterUserPassword": {}, - "OptionGroupName": {}, - "PreferredBackupWindow": {}, - "PreferredMaintenanceWindow": {}, - "Tags": { - "shape": "Sa" - }, - "StorageEncrypted": { - "type": "boolean" - }, - "KmsKeyId": {}, - "EnableIAMDatabaseAuthentication": { - "type": "boolean" - }, - "SourceEngine": {}, - "SourceEngineVersion": {}, - "S3BucketName": {}, - "S3Prefix": {}, - "S3IngestionRoleArn": {} - } - }, - "output": { - "resultWrapper": "RestoreDBClusterFromS3Result", - "type": "structure", - "members": { - "DBCluster": { - "shape": "S1j" - } - } - } - }, - "RestoreDBClusterFromSnapshot": { - "input": { - "type": "structure", - "required": [ - "DBClusterIdentifier", - "SnapshotIdentifier", - "Engine" - ], - "members": { - "AvailabilityZones": { - "shape": "Sw" - }, - "DBClusterIdentifier": {}, - "SnapshotIdentifier": {}, - "Engine": {}, - "EngineVersion": {}, - "Port": { - "type": "integer" - }, - "DBSubnetGroupName": {}, - "DatabaseName": {}, - "OptionGroupName": {}, - "VpcSecurityGroupIds": { - "shape": "S1h" - }, - "Tags": { - "shape": "Sa" - }, - "KmsKeyId": {}, - "EnableIAMDatabaseAuthentication": { - "type": "boolean" - } - } - }, - "output": { - "resultWrapper": "RestoreDBClusterFromSnapshotResult", - "type": "structure", - "members": { - "DBCluster": { - "shape": "S1j" - } - } - } - }, - "RestoreDBClusterToPointInTime": { - "input": { - "type": "structure", - "required": [ - "DBClusterIdentifier", - "SourceDBClusterIdentifier" - ], - "members": { - "DBClusterIdentifier": {}, - "RestoreType": {}, - "SourceDBClusterIdentifier": {}, - "RestoreToTime": { - "type": "timestamp" - }, - "UseLatestRestorableTime": { - "type": "boolean" - }, - "Port": { - "type": "integer" - }, - "DBSubnetGroupName": {}, - "OptionGroupName": {}, - "VpcSecurityGroupIds": { - "shape": "S1h" - }, - "Tags": { - "shape": "Sa" - }, - "KmsKeyId": {}, - "EnableIAMDatabaseAuthentication": { - "type": "boolean" - } - } - }, - "output": { - "resultWrapper": "RestoreDBClusterToPointInTimeResult", - "type": "structure", - "members": { - "DBCluster": { - "shape": "S1j" - } - } - } - }, - "RestoreDBInstanceFromDBSnapshot": { - "input": { - "type": "structure", - "required": [ - "DBInstanceIdentifier", - "DBSnapshotIdentifier" - ], - "members": { - "DBInstanceIdentifier": {}, - "DBSnapshotIdentifier": {}, - "DBInstanceClass": {}, - "Port": { - "type": "integer" - }, - "AvailabilityZone": {}, - "DBSubnetGroupName": {}, - "MultiAZ": { - "type": "boolean" - }, - "PubliclyAccessible": { - "type": "boolean" - }, - "AutoMinorVersionUpgrade": { - "type": "boolean" - }, - "LicenseModel": {}, - "DBName": {}, - "Engine": {}, - "Iops": { - "type": "integer" - }, - "OptionGroupName": {}, - "Tags": { - "shape": "Sa" - }, - "StorageType": {}, - "TdeCredentialArn": {}, - "TdeCredentialPassword": {}, - "Domain": {}, - "CopyTagsToSnapshot": { - "type": "boolean" - }, - "DomainIAMRoleName": {}, - "EnableIAMDatabaseAuthentication": { - "type": "boolean" - } - } - }, - "output": { - "resultWrapper": "RestoreDBInstanceFromDBSnapshotResult", - "type": "structure", - "members": { - "DBInstance": { - "shape": "S1y" - } - } - } - }, - "RestoreDBInstanceToPointInTime": { - "input": { - "type": "structure", - "required": [ - "SourceDBInstanceIdentifier", - "TargetDBInstanceIdentifier" - ], - "members": { - "SourceDBInstanceIdentifier": {}, - "TargetDBInstanceIdentifier": {}, - "RestoreTime": { - "type": "timestamp" - }, - "UseLatestRestorableTime": { - "type": "boolean" - }, - "DBInstanceClass": {}, - "Port": { - "type": "integer" - }, - "AvailabilityZone": {}, - "DBSubnetGroupName": {}, - "MultiAZ": { - "type": "boolean" - }, - "PubliclyAccessible": { - "type": "boolean" - }, - "AutoMinorVersionUpgrade": { - "type": "boolean" - }, - "LicenseModel": {}, - "DBName": {}, - "Engine": {}, - "Iops": { - "type": "integer" - }, - "OptionGroupName": {}, - "CopyTagsToSnapshot": { - "type": "boolean" - }, - "Tags": { - "shape": "Sa" - }, - "StorageType": {}, - "TdeCredentialArn": {}, - "TdeCredentialPassword": {}, - "Domain": {}, - "DomainIAMRoleName": {}, - "EnableIAMDatabaseAuthentication": { - "type": "boolean" - } - } - }, - "output": { - "resultWrapper": "RestoreDBInstanceToPointInTimeResult", - "type": "structure", - "members": { - "DBInstance": { - "shape": "S1y" - } - } - } - }, - "RevokeDBSecurityGroupIngress": { - "input": { - "type": "structure", - "required": [ - "DBSecurityGroupName" - ], - "members": { - "DBSecurityGroupName": {}, - "CIDRIP": {}, - "EC2SecurityGroupName": {}, - "EC2SecurityGroupId": {}, - "EC2SecurityGroupOwnerId": {} - } - }, - "output": { - "resultWrapper": "RevokeDBSecurityGroupIngressResult", - "type": "structure", - "members": { - "DBSecurityGroup": { - "shape": "Sk" - } - } - } - }, - "StartDBInstance": { - "input": { - "type": "structure", - "required": [ - "DBInstanceIdentifier" - ], - "members": { - "DBInstanceIdentifier": {} - } - }, - "output": { - "resultWrapper": "StartDBInstanceResult", - "type": "structure", - "members": { - "DBInstance": { - "shape": "S1y" - } - } - } - }, - "StopDBInstance": { - "input": { - "type": "structure", - "required": [ - "DBInstanceIdentifier" - ], - "members": { - "DBInstanceIdentifier": {}, - "DBSnapshotIdentifier": {} - } - }, - "output": { - "resultWrapper": "StopDBInstanceResult", - "type": "structure", - "members": { - "DBInstance": { - "shape": "S1y" - } - } - } - } - }, - "shapes": { - "S5": { - "type": "structure", - "members": { - "CustomerAwsId": {}, - "CustSubscriptionId": {}, - "SnsTopicArn": {}, - "Status": {}, - "SubscriptionCreationTime": {}, - "SourceType": {}, - "SourceIdsList": { - "shape": "S6" - }, - "EventCategoriesList": { - "shape": "S7" - }, - "Enabled": { - "type": "boolean" - }, - "EventSubscriptionArn": {} - }, - "wrapper": true - }, - "S6": { - "type": "list", - "member": { - "locationName": "SourceId" - } - }, - "S7": { - "type": "list", - "member": { - "locationName": "EventCategory" - } - }, - "Sa": { - "type": "list", - "member": { - "locationName": "Tag", - "type": "structure", - "members": { - "Key": {}, - "Value": {} - } - } - }, - "Se": { - "type": "structure", - "members": { - "ResourceIdentifier": {}, - "PendingMaintenanceActionDetails": { - "type": "list", - "member": { - "locationName": "PendingMaintenanceAction", - "type": "structure", - "members": { - "Action": {}, - "AutoAppliedAfterDate": { - "type": "timestamp" - }, - "ForcedApplyDate": { - "type": "timestamp" - }, - "OptInStatus": {}, - "CurrentApplyDate": { - "type": "timestamp" - }, - "Description": {} - } - } - } - }, - "wrapper": true - }, - "Sk": { - "type": "structure", - "members": { - "OwnerId": {}, - "DBSecurityGroupName": {}, - "DBSecurityGroupDescription": {}, - "VpcId": {}, - "EC2SecurityGroups": { - "type": "list", - "member": { - "locationName": "EC2SecurityGroup", - "type": "structure", - "members": { - "Status": {}, - "EC2SecurityGroupName": {}, - "EC2SecurityGroupId": {}, - "EC2SecurityGroupOwnerId": {} - } - } - }, - "IPRanges": { - "type": "list", - "member": { - "locationName": "IPRange", - "type": "structure", - "members": { - "Status": {}, - "CIDRIP": {} - } - } - }, - "DBSecurityGroupArn": {} - }, - "wrapper": true - }, - "Sr": { - "type": "structure", - "members": { - "DBClusterParameterGroupName": {}, - "DBParameterGroupFamily": {}, - "Description": {}, - "DBClusterParameterGroupArn": {} - }, - "wrapper": true - }, - "Sv": { - "type": "structure", - "members": { - "AvailabilityZones": { - "shape": "Sw" - }, - "DBClusterSnapshotIdentifier": {}, - "DBClusterIdentifier": {}, - "SnapshotCreateTime": { - "type": "timestamp" - }, - "Engine": {}, - "AllocatedStorage": { - "type": "integer" - }, - "Status": {}, - "Port": { - "type": "integer" - }, - "VpcId": {}, - "ClusterCreateTime": { - "type": "timestamp" - }, - "MasterUsername": {}, - "EngineVersion": {}, - "LicenseModel": {}, - "SnapshotType": {}, - "PercentProgress": { - "type": "integer" - }, - "StorageEncrypted": { - "type": "boolean" - }, - "KmsKeyId": {}, - "DBClusterSnapshotArn": {}, - "SourceDBClusterSnapshotArn": {}, - "IAMDatabaseAuthenticationEnabled": { - "type": "boolean" - } - }, - "wrapper": true - }, - "Sw": { - "type": "list", - "member": { - "locationName": "AvailabilityZone" - } - }, - "S10": { - "type": "structure", - "members": { - "DBParameterGroupName": {}, - "DBParameterGroupFamily": {}, - "Description": {}, - "DBParameterGroupArn": {} - }, - "wrapper": true - }, - "S13": { - "type": "structure", - "members": { - "DBSnapshotIdentifier": {}, - "DBInstanceIdentifier": {}, - "SnapshotCreateTime": { - "type": "timestamp" - }, - "Engine": {}, - "AllocatedStorage": { - "type": "integer" - }, - "Status": {}, - "Port": { - "type": "integer" - }, - "AvailabilityZone": {}, - "VpcId": {}, - "InstanceCreateTime": { - "type": "timestamp" - }, - "MasterUsername": {}, - "EngineVersion": {}, - "LicenseModel": {}, - "SnapshotType": {}, - "Iops": { - "type": "integer" - }, - "OptionGroupName": {}, - "PercentProgress": { - "type": "integer" - }, - "SourceRegion": {}, - "SourceDBSnapshotIdentifier": {}, - "StorageType": {}, - "TdeCredentialArn": {}, - "Encrypted": { - "type": "boolean" - }, - "KmsKeyId": {}, - "DBSnapshotArn": {}, - "Timezone": {}, - "IAMDatabaseAuthenticationEnabled": { - "type": "boolean" - } - }, - "wrapper": true - }, - "S17": { - "type": "structure", - "members": { - "OptionGroupName": {}, - "OptionGroupDescription": {}, - "EngineName": {}, - "MajorEngineVersion": {}, - "Options": { - "type": "list", - "member": { - "locationName": "Option", - "type": "structure", - "members": { - "OptionName": {}, - "OptionDescription": {}, - "Persistent": { - "type": "boolean" - }, - "Permanent": { - "type": "boolean" - }, - "Port": { - "type": "integer" - }, - "OptionVersion": {}, - "OptionSettings": { - "type": "list", - "member": { - "shape": "S1b", - "locationName": "OptionSetting" - } - }, - "DBSecurityGroupMemberships": { - "shape": "S1c" - }, - "VpcSecurityGroupMemberships": { - "shape": "S1e" - } - } - } - }, - "AllowsVpcAndNonVpcInstanceMemberships": { - "type": "boolean" - }, - "VpcId": {}, - "OptionGroupArn": {} - }, - "wrapper": true - }, - "S1b": { - "type": "structure", - "members": { - "Name": {}, - "Value": {}, - "DefaultValue": {}, - "Description": {}, - "ApplyType": {}, - "DataType": {}, - "AllowedValues": {}, - "IsModifiable": { - "type": "boolean" - }, - "IsCollection": { - "type": "boolean" - } - } - }, - "S1c": { - "type": "list", - "member": { - "locationName": "DBSecurityGroup", - "type": "structure", - "members": { - "DBSecurityGroupName": {}, - "Status": {} - } - } - }, - "S1e": { - "type": "list", - "member": { - "locationName": "VpcSecurityGroupMembership", - "type": "structure", - "members": { - "VpcSecurityGroupId": {}, - "Status": {} - } - } - }, - "S1h": { - "type": "list", - "member": { - "locationName": "VpcSecurityGroupId" - } - }, - "S1j": { - "type": "structure", - "members": { - "AllocatedStorage": { - "type": "integer" - }, - "AvailabilityZones": { - "shape": "Sw" - }, - "BackupRetentionPeriod": { - "type": "integer" - }, - "CharacterSetName": {}, - "DatabaseName": {}, - "DBClusterIdentifier": {}, - "DBClusterParameterGroup": {}, - "DBSubnetGroup": {}, - "Status": {}, - "PercentProgress": {}, - "EarliestRestorableTime": { - "type": "timestamp" - }, - "Endpoint": {}, - "ReaderEndpoint": {}, - "MultiAZ": { - "type": "boolean" - }, - "Engine": {}, - "EngineVersion": {}, - "LatestRestorableTime": { - "type": "timestamp" - }, - "Port": { - "type": "integer" - }, - "MasterUsername": {}, - "DBClusterOptionGroupMemberships": { - "type": "list", - "member": { - "locationName": "DBClusterOptionGroup", - "type": "structure", - "members": { - "DBClusterOptionGroupName": {}, - "Status": {} - } - } - }, - "PreferredBackupWindow": {}, - "PreferredMaintenanceWindow": {}, - "ReplicationSourceIdentifier": {}, - "ReadReplicaIdentifiers": { - "type": "list", - "member": { - "locationName": "ReadReplicaIdentifier" - } - }, - "DBClusterMembers": { - "type": "list", - "member": { - "locationName": "DBClusterMember", - "type": "structure", - "members": { - "DBInstanceIdentifier": {}, - "IsClusterWriter": { - "type": "boolean" - }, - "DBClusterParameterGroupStatus": {}, - "PromotionTier": { - "type": "integer" - } - }, - "wrapper": true - } - }, - "VpcSecurityGroups": { - "shape": "S1e" - }, - "HostedZoneId": {}, - "StorageEncrypted": { - "type": "boolean" - }, - "KmsKeyId": {}, - "DbClusterResourceId": {}, - "DBClusterArn": {}, - "AssociatedRoles": { - "type": "list", - "member": { - "locationName": "DBClusterRole", - "type": "structure", - "members": { - "RoleArn": {}, - "Status": {} - } - } - }, - "IAMDatabaseAuthenticationEnabled": { - "type": "boolean" - }, - "CloneGroupId": {}, - "ClusterCreateTime": { - "type": "timestamp" - } - }, - "wrapper": true - }, - "S1w": { - "type": "list", - "member": { - "locationName": "DBSecurityGroupName" - } - }, - "S1y": { - "type": "structure", - "members": { - "DBInstanceIdentifier": {}, - "DBInstanceClass": {}, - "Engine": {}, - "DBInstanceStatus": {}, - "MasterUsername": {}, - "DBName": {}, - "Endpoint": { - "type": "structure", - "members": { - "Address": {}, - "Port": { - "type": "integer" - }, - "HostedZoneId": {} - } - }, - "AllocatedStorage": { - "type": "integer" - }, - "InstanceCreateTime": { - "type": "timestamp" - }, - "PreferredBackupWindow": {}, - "BackupRetentionPeriod": { - "type": "integer" - }, - "DBSecurityGroups": { - "shape": "S1c" - }, - "VpcSecurityGroups": { - "shape": "S1e" - }, - "DBParameterGroups": { - "type": "list", - "member": { - "locationName": "DBParameterGroup", - "type": "structure", - "members": { - "DBParameterGroupName": {}, - "ParameterApplyStatus": {} - } - } - }, - "AvailabilityZone": {}, - "DBSubnetGroup": { - "shape": "S22" - }, - "PreferredMaintenanceWindow": {}, - "PendingModifiedValues": { - "type": "structure", - "members": { - "DBInstanceClass": {}, - "AllocatedStorage": { - "type": "integer" - }, - "MasterUserPassword": {}, - "Port": { - "type": "integer" - }, - "BackupRetentionPeriod": { - "type": "integer" - }, - "MultiAZ": { - "type": "boolean" - }, - "EngineVersion": {}, - "LicenseModel": {}, - "Iops": { - "type": "integer" - }, - "DBInstanceIdentifier": {}, - "StorageType": {}, - "CACertificateIdentifier": {}, - "DBSubnetGroupName": {} - } - }, - "LatestRestorableTime": { - "type": "timestamp" - }, - "MultiAZ": { - "type": "boolean" - }, - "EngineVersion": {}, - "AutoMinorVersionUpgrade": { - "type": "boolean" - }, - "ReadReplicaSourceDBInstanceIdentifier": {}, - "ReadReplicaDBInstanceIdentifiers": { - "type": "list", - "member": { - "locationName": "ReadReplicaDBInstanceIdentifier" - } - }, - "ReadReplicaDBClusterIdentifiers": { - "type": "list", - "member": { - "locationName": "ReadReplicaDBClusterIdentifier" - } - }, - "LicenseModel": {}, - "Iops": { - "type": "integer" - }, - "OptionGroupMemberships": { - "type": "list", - "member": { - "locationName": "OptionGroupMembership", - "type": "structure", - "members": { - "OptionGroupName": {}, - "Status": {} - } - } - }, - "CharacterSetName": {}, - "SecondaryAvailabilityZone": {}, - "PubliclyAccessible": { - "type": "boolean" - }, - "StatusInfos": { - "type": "list", - "member": { - "locationName": "DBInstanceStatusInfo", - "type": "structure", - "members": { - "StatusType": {}, - "Normal": { - "type": "boolean" - }, - "Status": {}, - "Message": {} - } - } - }, - "StorageType": {}, - "TdeCredentialArn": {}, - "DbInstancePort": { - "type": "integer" - }, - "DBClusterIdentifier": {}, - "StorageEncrypted": { - "type": "boolean" - }, - "KmsKeyId": {}, - "DbiResourceId": {}, - "CACertificateIdentifier": {}, - "DomainMemberships": { - "type": "list", - "member": { - "locationName": "DomainMembership", - "type": "structure", - "members": { - "Domain": {}, - "Status": {}, - "FQDN": {}, - "IAMRoleName": {} - } - } - }, - "CopyTagsToSnapshot": { - "type": "boolean" - }, - "MonitoringInterval": { - "type": "integer" - }, - "EnhancedMonitoringResourceArn": {}, - "MonitoringRoleArn": {}, - "PromotionTier": { - "type": "integer" - }, - "DBInstanceArn": {}, - "Timezone": {}, - "IAMDatabaseAuthenticationEnabled": { - "type": "boolean" - }, - "PerformanceInsightsEnabled": { - "type": "boolean" - }, - "PerformanceInsightsKMSKeyId": {} - }, - "wrapper": true - }, - "S22": { - "type": "structure", - "members": { - "DBSubnetGroupName": {}, - "DBSubnetGroupDescription": {}, - "VpcId": {}, - "SubnetGroupStatus": {}, - "Subnets": { - "type": "list", - "member": { - "locationName": "Subnet", - "type": "structure", - "members": { - "SubnetIdentifier": {}, - "SubnetAvailabilityZone": { - "shape": "S25" - }, - "SubnetStatus": {} - } - } - }, - "DBSubnetGroupArn": {} - }, - "wrapper": true - }, - "S25": { - "type": "structure", - "members": { - "Name": {} - }, - "wrapper": true - }, - "S2o": { - "type": "list", - "member": { - "locationName": "SubnetIdentifier" - } - }, - "S3f": { - "type": "list", - "member": { - "locationName": "Filter", - "type": "structure", - "required": [ - "Name", - "Values" - ], - "members": { - "Name": {}, - "Values": { - "type": "list", - "member": { - "locationName": "Value" - } - } - } - } - }, - "S3q": { - "type": "list", - "member": { - "locationName": "Parameter", - "type": "structure", - "members": { - "ParameterName": {}, - "ParameterValue": {}, - "Description": {}, - "Source": {}, - "ApplyType": {}, - "DataType": {}, - "AllowedValues": {}, - "IsModifiable": { - "type": "boolean" - }, - "MinimumEngineVersion": {}, - "ApplyMethod": {} - } - } - }, - "S3v": { - "type": "structure", - "members": { - "DBClusterSnapshotIdentifier": {}, - "DBClusterSnapshotAttributes": { - "type": "list", - "member": { - "locationName": "DBClusterSnapshotAttribute", - "type": "structure", - "members": { - "AttributeName": {}, - "AttributeValues": { - "shape": "S3y" - } - } - } - } - }, - "wrapper": true - }, - "S3y": { - "type": "list", - "member": { - "locationName": "AttributeValue" - } - }, - "S49": { - "type": "structure", - "members": { - "CharacterSetName": {}, - "CharacterSetDescription": {} - } - }, - "S4w": { - "type": "structure", - "members": { - "DBSnapshotIdentifier": {}, - "DBSnapshotAttributes": { - "type": "list", - "member": { - "locationName": "DBSnapshotAttribute", - "type": "structure", - "members": { - "AttributeName": {}, - "AttributeValues": { - "shape": "S3y" - } - }, - "wrapper": true - } - } - }, - "wrapper": true - }, - "S57": { - "type": "structure", - "members": { - "DBParameterGroupFamily": {}, - "Marker": {}, - "Parameters": { - "shape": "S3q" - } - }, - "wrapper": true - }, - "S6a": { - "type": "structure", - "members": { - "ReservedDBInstanceId": {}, - "ReservedDBInstancesOfferingId": {}, - "DBInstanceClass": {}, - "StartTime": { - "type": "timestamp" - }, - "Duration": { - "type": "integer" - }, - "FixedPrice": { - "type": "double" - }, - "UsagePrice": { - "type": "double" - }, - "CurrencyCode": {}, - "DBInstanceCount": { - "type": "integer" - }, - "ProductDescription": {}, - "OfferingType": {}, - "MultiAZ": { - "type": "boolean" - }, - "State": {}, - "RecurringCharges": { - "shape": "S6c" - }, - "ReservedDBInstanceArn": {} - }, - "wrapper": true - }, - "S6c": { - "type": "list", - "member": { - "locationName": "RecurringCharge", - "type": "structure", - "members": { - "RecurringChargeAmount": { - "type": "double" - }, - "RecurringChargeFrequency": {} - }, - "wrapper": true - } - }, - "S6r": { - "type": "list", - "member": { - "locationName": "Range", - "type": "structure", - "members": { - "From": { - "type": "integer" - }, - "To": { - "type": "integer" - }, - "Step": { - "type": "integer" - } - } - } - }, - "S74": { - "type": "structure", - "members": { - "DBClusterParameterGroupName": {} - } - }, - "S7a": { - "type": "structure", - "members": { - "DBParameterGroupName": {} - } - } - } -} \ No newline at end of file diff --git a/workshops/monte-carlo-on-ec2-spot-fleet/src/web/node_modules/aws-sdk/apis/rds-2014-10-31.paginators.json b/workshops/monte-carlo-on-ec2-spot-fleet/src/web/node_modules/aws-sdk/apis/rds-2014-10-31.paginators.json deleted file mode 100644 index c51d8d15..00000000 --- a/workshops/monte-carlo-on-ec2-spot-fleet/src/web/node_modules/aws-sdk/apis/rds-2014-10-31.paginators.json +++ /dev/null @@ -1,110 +0,0 @@ -{ - "pagination": { - "DescribeDBEngineVersions": { - "input_token": "Marker", - "limit_key": "MaxRecords", - "output_token": "Marker", - "result_key": "DBEngineVersions" - }, - "DescribeDBInstances": { - "input_token": "Marker", - "limit_key": "MaxRecords", - "output_token": "Marker", - "result_key": "DBInstances" - }, - "DescribeDBLogFiles": { - "input_token": "Marker", - "limit_key": "MaxRecords", - "output_token": "Marker", - "result_key": "DescribeDBLogFiles" - }, - "DescribeDBParameterGroups": { - "input_token": "Marker", - "limit_key": "MaxRecords", - "output_token": "Marker", - "result_key": "DBParameterGroups" - }, - "DescribeDBParameters": { - "input_token": "Marker", - "limit_key": "MaxRecords", - "output_token": "Marker", - "result_key": "Parameters" - }, - "DescribeDBSecurityGroups": { - "input_token": "Marker", - "limit_key": "MaxRecords", - "output_token": "Marker", - "result_key": "DBSecurityGroups" - }, - "DescribeDBSnapshots": { - "input_token": "Marker", - "limit_key": "MaxRecords", - "output_token": "Marker", - "result_key": "DBSnapshots" - }, - "DescribeDBSubnetGroups": { - "input_token": "Marker", - "limit_key": "MaxRecords", - "output_token": "Marker", - "result_key": "DBSubnetGroups" - }, - "DescribeEngineDefaultParameters": { - "input_token": "Marker", - "limit_key": "MaxRecords", - "output_token": "EngineDefaults.Marker", - "result_key": "EngineDefaults.Parameters" - }, - "DescribeEventSubscriptions": { - "input_token": "Marker", - "limit_key": "MaxRecords", - "output_token": "Marker", - "result_key": "EventSubscriptionsList" - }, - "DescribeEvents": { - "input_token": "Marker", - "limit_key": "MaxRecords", - "output_token": "Marker", - "result_key": "Events" - }, - "DescribeOptionGroupOptions": { - "input_token": "Marker", - "limit_key": "MaxRecords", - "output_token": "Marker", - "result_key": "OptionGroupOptions" - }, - "DescribeOptionGroups": { - "input_token": "Marker", - "limit_key": "MaxRecords", - "output_token": "Marker", - "result_key": "OptionGroupsList" - }, - "DescribeOrderableDBInstanceOptions": { - "input_token": "Marker", - "limit_key": "MaxRecords", - "output_token": "Marker", - "result_key": "OrderableDBInstanceOptions" - }, - "DescribeReservedDBInstances": { - "input_token": "Marker", - "limit_key": "MaxRecords", - "output_token": "Marker", - "result_key": "ReservedDBInstances" - }, - "DescribeReservedDBInstancesOfferings": { - "input_token": "Marker", - "limit_key": "MaxRecords", - "output_token": "Marker", - "result_key": "ReservedDBInstancesOfferings" - }, - "DownloadDBLogFilePortion": { - "input_token": "Marker", - "limit_key": "NumberOfLines", - "more_results": "AdditionalDataPending", - "output_token": "Marker", - "result_key": "LogFileData" - }, - "ListTagsForResource": { - "result_key": "TagList" - } - } -} \ No newline at end of file diff --git a/workshops/monte-carlo-on-ec2-spot-fleet/src/web/node_modules/aws-sdk/apis/rds-2014-10-31.waiters2.json b/workshops/monte-carlo-on-ec2-spot-fleet/src/web/node_modules/aws-sdk/apis/rds-2014-10-31.waiters2.json deleted file mode 100644 index e75f03b2..00000000 --- a/workshops/monte-carlo-on-ec2-spot-fleet/src/web/node_modules/aws-sdk/apis/rds-2014-10-31.waiters2.json +++ /dev/null @@ -1,90 +0,0 @@ -{ - "version": 2, - "waiters": { - "DBInstanceAvailable": { - "delay": 30, - "operation": "DescribeDBInstances", - "maxAttempts": 60, - "acceptors": [ - { - "expected": "available", - "matcher": "pathAll", - "state": "success", - "argument": "DBInstances[].DBInstanceStatus" - }, - { - "expected": "deleted", - "matcher": "pathAny", - "state": "failure", - "argument": "DBInstances[].DBInstanceStatus" - }, - { - "expected": "deleting", - "matcher": "pathAny", - "state": "failure", - "argument": "DBInstances[].DBInstanceStatus" - }, - { - "expected": "failed", - "matcher": "pathAny", - "state": "failure", - "argument": "DBInstances[].DBInstanceStatus" - }, - { - "expected": "incompatible-restore", - "matcher": "pathAny", - "state": "failure", - "argument": "DBInstances[].DBInstanceStatus" - }, - { - "expected": "incompatible-parameters", - "matcher": "pathAny", - "state": "failure", - "argument": "DBInstances[].DBInstanceStatus" - } - ] - }, - "DBInstanceDeleted": { - "delay": 30, - "operation": "DescribeDBInstances", - "maxAttempts": 60, - "acceptors": [ - { - "expected": "deleted", - "matcher": "pathAll", - "state": "success", - "argument": "DBInstances[].DBInstanceStatus" - }, - { - "expected": "DBInstanceNotFound", - "matcher": "error", - "state": "success" - }, - { - "expected": "creating", - "matcher": "pathAny", - "state": "failure", - "argument": "DBInstances[].DBInstanceStatus" - }, - { - "expected": "modifying", - "matcher": "pathAny", - "state": "failure", - "argument": "DBInstances[].DBInstanceStatus" - }, - { - "expected": "rebooting", - "matcher": "pathAny", - "state": "failure", - "argument": "DBInstances[].DBInstanceStatus" - }, - { - "expected": "resetting-master-credentials", - "matcher": "pathAny", - "state": "failure", - "argument": "DBInstances[].DBInstanceStatus" - } - ] - } - } -} diff --git a/workshops/monte-carlo-on-ec2-spot-fleet/src/web/node_modules/aws-sdk/apis/redshift-2012-12-01.examples.json b/workshops/monte-carlo-on-ec2-spot-fleet/src/web/node_modules/aws-sdk/apis/redshift-2012-12-01.examples.json deleted file mode 100644 index 0ea7e3b0..00000000 --- a/workshops/monte-carlo-on-ec2-spot-fleet/src/web/node_modules/aws-sdk/apis/redshift-2012-12-01.examples.json +++ /dev/null @@ -1,5 +0,0 @@ -{ - "version": "1.0", - "examples": { - } -} diff --git a/workshops/monte-carlo-on-ec2-spot-fleet/src/web/node_modules/aws-sdk/apis/redshift-2012-12-01.min.json b/workshops/monte-carlo-on-ec2-spot-fleet/src/web/node_modules/aws-sdk/apis/redshift-2012-12-01.min.json deleted file mode 100644 index 9b1c45af..00000000 --- a/workshops/monte-carlo-on-ec2-spot-fleet/src/web/node_modules/aws-sdk/apis/redshift-2012-12-01.min.json +++ /dev/null @@ -1,2354 +0,0 @@ -{ - "version": "2.0", - "metadata": { - "apiVersion": "2012-12-01", - "endpointPrefix": "redshift", - "protocol": "query", - "serviceFullName": "Amazon Redshift", - "signatureVersion": "v4", - "uid": "redshift-2012-12-01", - "xmlNamespace": "http://redshift.amazonaws.com/doc/2012-12-01/" - }, - "operations": { - "AuthorizeClusterSecurityGroupIngress": { - "input": { - "type": "structure", - "required": [ - "ClusterSecurityGroupName" - ], - "members": { - "ClusterSecurityGroupName": {}, - "CIDRIP": {}, - "EC2SecurityGroupName": {}, - "EC2SecurityGroupOwnerId": {} - } - }, - "output": { - "resultWrapper": "AuthorizeClusterSecurityGroupIngressResult", - "type": "structure", - "members": { - "ClusterSecurityGroup": { - "shape": "S4" - } - } - } - }, - "AuthorizeSnapshotAccess": { - "input": { - "type": "structure", - "required": [ - "SnapshotIdentifier", - "AccountWithRestoreAccess" - ], - "members": { - "SnapshotIdentifier": {}, - "SnapshotClusterIdentifier": {}, - "AccountWithRestoreAccess": {} - } - }, - "output": { - "resultWrapper": "AuthorizeSnapshotAccessResult", - "type": "structure", - "members": { - "Snapshot": { - "shape": "Sd" - } - } - } - }, - "CopyClusterSnapshot": { - "input": { - "type": "structure", - "required": [ - "SourceSnapshotIdentifier", - "TargetSnapshotIdentifier" - ], - "members": { - "SourceSnapshotIdentifier": {}, - "SourceSnapshotClusterIdentifier": {}, - "TargetSnapshotIdentifier": {} - } - }, - "output": { - "resultWrapper": "CopyClusterSnapshotResult", - "type": "structure", - "members": { - "Snapshot": { - "shape": "Sd" - } - } - } - }, - "CreateCluster": { - "input": { - "type": "structure", - "required": [ - "ClusterIdentifier", - "NodeType", - "MasterUsername", - "MasterUserPassword" - ], - "members": { - "DBName": {}, - "ClusterIdentifier": {}, - "ClusterType": {}, - "NodeType": {}, - "MasterUsername": {}, - "MasterUserPassword": {}, - "ClusterSecurityGroups": { - "shape": "Sp" - }, - "VpcSecurityGroupIds": { - "shape": "Sq" - }, - "ClusterSubnetGroupName": {}, - "AvailabilityZone": {}, - "PreferredMaintenanceWindow": {}, - "ClusterParameterGroupName": {}, - "AutomatedSnapshotRetentionPeriod": { - "type": "integer" - }, - "Port": { - "type": "integer" - }, - "ClusterVersion": {}, - "AllowVersionUpgrade": { - "type": "boolean" - }, - "NumberOfNodes": { - "type": "integer" - }, - "PubliclyAccessible": { - "type": "boolean" - }, - "Encrypted": { - "type": "boolean" - }, - "HsmClientCertificateIdentifier": {}, - "HsmConfigurationIdentifier": {}, - "ElasticIp": {}, - "Tags": { - "shape": "S7" - }, - "KmsKeyId": {}, - "EnhancedVpcRouting": { - "type": "boolean" - }, - "AdditionalInfo": {}, - "IamRoles": { - "shape": "St" - } - } - }, - "output": { - "resultWrapper": "CreateClusterResult", - "type": "structure", - "members": { - "Cluster": { - "shape": "Sv" - } - } - } - }, - "CreateClusterParameterGroup": { - "input": { - "type": "structure", - "required": [ - "ParameterGroupName", - "ParameterGroupFamily", - "Description" - ], - "members": { - "ParameterGroupName": {}, - "ParameterGroupFamily": {}, - "Description": {}, - "Tags": { - "shape": "S7" - } - } - }, - "output": { - "resultWrapper": "CreateClusterParameterGroupResult", - "type": "structure", - "members": { - "ClusterParameterGroup": { - "shape": "S1g" - } - } - } - }, - "CreateClusterSecurityGroup": { - "input": { - "type": "structure", - "required": [ - "ClusterSecurityGroupName", - "Description" - ], - "members": { - "ClusterSecurityGroupName": {}, - "Description": {}, - "Tags": { - "shape": "S7" - } - } - }, - "output": { - "resultWrapper": "CreateClusterSecurityGroupResult", - "type": "structure", - "members": { - "ClusterSecurityGroup": { - "shape": "S4" - } - } - } - }, - "CreateClusterSnapshot": { - "input": { - "type": "structure", - "required": [ - "SnapshotIdentifier", - "ClusterIdentifier" - ], - "members": { - "SnapshotIdentifier": {}, - "ClusterIdentifier": {}, - "Tags": { - "shape": "S7" - } - } - }, - "output": { - "resultWrapper": "CreateClusterSnapshotResult", - "type": "structure", - "members": { - "Snapshot": { - "shape": "Sd" - } - } - } - }, - "CreateClusterSubnetGroup": { - "input": { - "type": "structure", - "required": [ - "ClusterSubnetGroupName", - "Description", - "SubnetIds" - ], - "members": { - "ClusterSubnetGroupName": {}, - "Description": {}, - "SubnetIds": { - "shape": "S1m" - }, - "Tags": { - "shape": "S7" - } - } - }, - "output": { - "resultWrapper": "CreateClusterSubnetGroupResult", - "type": "structure", - "members": { - "ClusterSubnetGroup": { - "shape": "S1o" - } - } - } - }, - "CreateEventSubscription": { - "input": { - "type": "structure", - "required": [ - "SubscriptionName", - "SnsTopicArn" - ], - "members": { - "SubscriptionName": {}, - "SnsTopicArn": {}, - "SourceType": {}, - "SourceIds": { - "shape": "S1t" - }, - "EventCategories": { - "shape": "S1u" - }, - "Severity": {}, - "Enabled": { - "type": "boolean" - }, - "Tags": { - "shape": "S7" - } - } - }, - "output": { - "resultWrapper": "CreateEventSubscriptionResult", - "type": "structure", - "members": { - "EventSubscription": { - "shape": "S1w" - } - } - } - }, - "CreateHsmClientCertificate": { - "input": { - "type": "structure", - "required": [ - "HsmClientCertificateIdentifier" - ], - "members": { - "HsmClientCertificateIdentifier": {}, - "Tags": { - "shape": "S7" - } - } - }, - "output": { - "resultWrapper": "CreateHsmClientCertificateResult", - "type": "structure", - "members": { - "HsmClientCertificate": { - "shape": "S1z" - } - } - } - }, - "CreateHsmConfiguration": { - "input": { - "type": "structure", - "required": [ - "HsmConfigurationIdentifier", - "Description", - "HsmIpAddress", - "HsmPartitionName", - "HsmPartitionPassword", - "HsmServerPublicCertificate" - ], - "members": { - "HsmConfigurationIdentifier": {}, - "Description": {}, - "HsmIpAddress": {}, - "HsmPartitionName": {}, - "HsmPartitionPassword": {}, - "HsmServerPublicCertificate": {}, - "Tags": { - "shape": "S7" - } - } - }, - "output": { - "resultWrapper": "CreateHsmConfigurationResult", - "type": "structure", - "members": { - "HsmConfiguration": { - "shape": "S22" - } - } - } - }, - "CreateSnapshotCopyGrant": { - "input": { - "type": "structure", - "required": [ - "SnapshotCopyGrantName" - ], - "members": { - "SnapshotCopyGrantName": {}, - "KmsKeyId": {}, - "Tags": { - "shape": "S7" - } - } - }, - "output": { - "resultWrapper": "CreateSnapshotCopyGrantResult", - "type": "structure", - "members": { - "SnapshotCopyGrant": { - "shape": "S25" - } - } - } - }, - "CreateTags": { - "input": { - "type": "structure", - "required": [ - "ResourceName", - "Tags" - ], - "members": { - "ResourceName": {}, - "Tags": { - "shape": "S7" - } - } - } - }, - "DeleteCluster": { - "input": { - "type": "structure", - "required": [ - "ClusterIdentifier" - ], - "members": { - "ClusterIdentifier": {}, - "SkipFinalClusterSnapshot": { - "type": "boolean" - }, - "FinalClusterSnapshotIdentifier": {} - } - }, - "output": { - "resultWrapper": "DeleteClusterResult", - "type": "structure", - "members": { - "Cluster": { - "shape": "Sv" - } - } - } - }, - "DeleteClusterParameterGroup": { - "input": { - "type": "structure", - "required": [ - "ParameterGroupName" - ], - "members": { - "ParameterGroupName": {} - } - } - }, - "DeleteClusterSecurityGroup": { - "input": { - "type": "structure", - "required": [ - "ClusterSecurityGroupName" - ], - "members": { - "ClusterSecurityGroupName": {} - } - } - }, - "DeleteClusterSnapshot": { - "input": { - "type": "structure", - "required": [ - "SnapshotIdentifier" - ], - "members": { - "SnapshotIdentifier": {}, - "SnapshotClusterIdentifier": {} - } - }, - "output": { - "resultWrapper": "DeleteClusterSnapshotResult", - "type": "structure", - "members": { - "Snapshot": { - "shape": "Sd" - } - } - } - }, - "DeleteClusterSubnetGroup": { - "input": { - "type": "structure", - "required": [ - "ClusterSubnetGroupName" - ], - "members": { - "ClusterSubnetGroupName": {} - } - } - }, - "DeleteEventSubscription": { - "input": { - "type": "structure", - "required": [ - "SubscriptionName" - ], - "members": { - "SubscriptionName": {} - } - } - }, - "DeleteHsmClientCertificate": { - "input": { - "type": "structure", - "required": [ - "HsmClientCertificateIdentifier" - ], - "members": { - "HsmClientCertificateIdentifier": {} - } - } - }, - "DeleteHsmConfiguration": { - "input": { - "type": "structure", - "required": [ - "HsmConfigurationIdentifier" - ], - "members": { - "HsmConfigurationIdentifier": {} - } - } - }, - "DeleteSnapshotCopyGrant": { - "input": { - "type": "structure", - "required": [ - "SnapshotCopyGrantName" - ], - "members": { - "SnapshotCopyGrantName": {} - } - } - }, - "DeleteTags": { - "input": { - "type": "structure", - "required": [ - "ResourceName", - "TagKeys" - ], - "members": { - "ResourceName": {}, - "TagKeys": { - "shape": "S2j" - } - } - } - }, - "DescribeClusterParameterGroups": { - "input": { - "type": "structure", - "members": { - "ParameterGroupName": {}, - "MaxRecords": { - "type": "integer" - }, - "Marker": {}, - "TagKeys": { - "shape": "S2j" - }, - "TagValues": { - "shape": "S2l" - } - } - }, - "output": { - "resultWrapper": "DescribeClusterParameterGroupsResult", - "type": "structure", - "members": { - "Marker": {}, - "ParameterGroups": { - "type": "list", - "member": { - "shape": "S1g", - "locationName": "ClusterParameterGroup" - } - } - } - } - }, - "DescribeClusterParameters": { - "input": { - "type": "structure", - "required": [ - "ParameterGroupName" - ], - "members": { - "ParameterGroupName": {}, - "Source": {}, - "MaxRecords": { - "type": "integer" - }, - "Marker": {} - } - }, - "output": { - "resultWrapper": "DescribeClusterParametersResult", - "type": "structure", - "members": { - "Parameters": { - "shape": "S2q" - }, - "Marker": {} - } - } - }, - "DescribeClusterSecurityGroups": { - "input": { - "type": "structure", - "members": { - "ClusterSecurityGroupName": {}, - "MaxRecords": { - "type": "integer" - }, - "Marker": {}, - "TagKeys": { - "shape": "S2j" - }, - "TagValues": { - "shape": "S2l" - } - } - }, - "output": { - "resultWrapper": "DescribeClusterSecurityGroupsResult", - "type": "structure", - "members": { - "Marker": {}, - "ClusterSecurityGroups": { - "type": "list", - "member": { - "shape": "S4", - "locationName": "ClusterSecurityGroup" - } - } - } - } - }, - "DescribeClusterSnapshots": { - "input": { - "type": "structure", - "members": { - "ClusterIdentifier": {}, - "SnapshotIdentifier": {}, - "SnapshotType": {}, - "StartTime": { - "type": "timestamp" - }, - "EndTime": { - "type": "timestamp" - }, - "MaxRecords": { - "type": "integer" - }, - "Marker": {}, - "OwnerAccount": {}, - "TagKeys": { - "shape": "S2j" - }, - "TagValues": { - "shape": "S2l" - } - } - }, - "output": { - "resultWrapper": "DescribeClusterSnapshotsResult", - "type": "structure", - "members": { - "Marker": {}, - "Snapshots": { - "type": "list", - "member": { - "shape": "Sd", - "locationName": "Snapshot" - } - } - } - } - }, - "DescribeClusterSubnetGroups": { - "input": { - "type": "structure", - "members": { - "ClusterSubnetGroupName": {}, - "MaxRecords": { - "type": "integer" - }, - "Marker": {}, - "TagKeys": { - "shape": "S2j" - }, - "TagValues": { - "shape": "S2l" - } - } - }, - "output": { - "resultWrapper": "DescribeClusterSubnetGroupsResult", - "type": "structure", - "members": { - "Marker": {}, - "ClusterSubnetGroups": { - "type": "list", - "member": { - "shape": "S1o", - "locationName": "ClusterSubnetGroup" - } - } - } - } - }, - "DescribeClusterVersions": { - "input": { - "type": "structure", - "members": { - "ClusterVersion": {}, - "ClusterParameterGroupFamily": {}, - "MaxRecords": { - "type": "integer" - }, - "Marker": {} - } - }, - "output": { - "resultWrapper": "DescribeClusterVersionsResult", - "type": "structure", - "members": { - "Marker": {}, - "ClusterVersions": { - "type": "list", - "member": { - "locationName": "ClusterVersion", - "type": "structure", - "members": { - "ClusterVersion": {}, - "ClusterParameterGroupFamily": {}, - "Description": {} - } - } - } - } - } - }, - "DescribeClusters": { - "input": { - "type": "structure", - "members": { - "ClusterIdentifier": {}, - "MaxRecords": { - "type": "integer" - }, - "Marker": {}, - "TagKeys": { - "shape": "S2j" - }, - "TagValues": { - "shape": "S2l" - } - } - }, - "output": { - "resultWrapper": "DescribeClustersResult", - "type": "structure", - "members": { - "Marker": {}, - "Clusters": { - "type": "list", - "member": { - "shape": "Sv", - "locationName": "Cluster" - } - } - } - } - }, - "DescribeDefaultClusterParameters": { - "input": { - "type": "structure", - "required": [ - "ParameterGroupFamily" - ], - "members": { - "ParameterGroupFamily": {}, - "MaxRecords": { - "type": "integer" - }, - "Marker": {} - } - }, - "output": { - "resultWrapper": "DescribeDefaultClusterParametersResult", - "type": "structure", - "members": { - "DefaultClusterParameters": { - "type": "structure", - "members": { - "ParameterGroupFamily": {}, - "Marker": {}, - "Parameters": { - "shape": "S2q" - } - }, - "wrapper": true - } - } - } - }, - "DescribeEventCategories": { - "input": { - "type": "structure", - "members": { - "SourceType": {} - } - }, - "output": { - "resultWrapper": "DescribeEventCategoriesResult", - "type": "structure", - "members": { - "EventCategoriesMapList": { - "type": "list", - "member": { - "locationName": "EventCategoriesMap", - "type": "structure", - "members": { - "SourceType": {}, - "Events": { - "type": "list", - "member": { - "locationName": "EventInfoMap", - "type": "structure", - "members": { - "EventId": {}, - "EventCategories": { - "shape": "S1u" - }, - "EventDescription": {}, - "Severity": {} - }, - "wrapper": true - } - } - }, - "wrapper": true - } - } - } - } - }, - "DescribeEventSubscriptions": { - "input": { - "type": "structure", - "members": { - "SubscriptionName": {}, - "MaxRecords": { - "type": "integer" - }, - "Marker": {}, - "TagKeys": { - "shape": "S2j" - }, - "TagValues": { - "shape": "S2l" - } - } - }, - "output": { - "resultWrapper": "DescribeEventSubscriptionsResult", - "type": "structure", - "members": { - "Marker": {}, - "EventSubscriptionsList": { - "type": "list", - "member": { - "shape": "S1w", - "locationName": "EventSubscription" - } - } - } - } - }, - "DescribeEvents": { - "input": { - "type": "structure", - "members": { - "SourceIdentifier": {}, - "SourceType": {}, - "StartTime": { - "type": "timestamp" - }, - "EndTime": { - "type": "timestamp" - }, - "Duration": { - "type": "integer" - }, - "MaxRecords": { - "type": "integer" - }, - "Marker": {} - } - }, - "output": { - "resultWrapper": "DescribeEventsResult", - "type": "structure", - "members": { - "Marker": {}, - "Events": { - "type": "list", - "member": { - "locationName": "Event", - "type": "structure", - "members": { - "SourceIdentifier": {}, - "SourceType": {}, - "Message": {}, - "EventCategories": { - "shape": "S1u" - }, - "Severity": {}, - "Date": { - "type": "timestamp" - }, - "EventId": {} - } - } - } - } - } - }, - "DescribeHsmClientCertificates": { - "input": { - "type": "structure", - "members": { - "HsmClientCertificateIdentifier": {}, - "MaxRecords": { - "type": "integer" - }, - "Marker": {}, - "TagKeys": { - "shape": "S2j" - }, - "TagValues": { - "shape": "S2l" - } - } - }, - "output": { - "resultWrapper": "DescribeHsmClientCertificatesResult", - "type": "structure", - "members": { - "Marker": {}, - "HsmClientCertificates": { - "type": "list", - "member": { - "shape": "S1z", - "locationName": "HsmClientCertificate" - } - } - } - } - }, - "DescribeHsmConfigurations": { - "input": { - "type": "structure", - "members": { - "HsmConfigurationIdentifier": {}, - "MaxRecords": { - "type": "integer" - }, - "Marker": {}, - "TagKeys": { - "shape": "S2j" - }, - "TagValues": { - "shape": "S2l" - } - } - }, - "output": { - "resultWrapper": "DescribeHsmConfigurationsResult", - "type": "structure", - "members": { - "Marker": {}, - "HsmConfigurations": { - "type": "list", - "member": { - "shape": "S22", - "locationName": "HsmConfiguration" - } - } - } - } - }, - "DescribeLoggingStatus": { - "input": { - "type": "structure", - "required": [ - "ClusterIdentifier" - ], - "members": { - "ClusterIdentifier": {} - } - }, - "output": { - "shape": "S3x", - "resultWrapper": "DescribeLoggingStatusResult" - } - }, - "DescribeOrderableClusterOptions": { - "input": { - "type": "structure", - "members": { - "ClusterVersion": {}, - "NodeType": {}, - "MaxRecords": { - "type": "integer" - }, - "Marker": {} - } - }, - "output": { - "resultWrapper": "DescribeOrderableClusterOptionsResult", - "type": "structure", - "members": { - "OrderableClusterOptions": { - "type": "list", - "member": { - "locationName": "OrderableClusterOption", - "type": "structure", - "members": { - "ClusterVersion": {}, - "ClusterType": {}, - "NodeType": {}, - "AvailabilityZones": { - "type": "list", - "member": { - "shape": "S1r", - "locationName": "AvailabilityZone" - } - } - }, - "wrapper": true - } - }, - "Marker": {} - } - } - }, - "DescribeReservedNodeOfferings": { - "input": { - "type": "structure", - "members": { - "ReservedNodeOfferingId": {}, - "MaxRecords": { - "type": "integer" - }, - "Marker": {} - } - }, - "output": { - "resultWrapper": "DescribeReservedNodeOfferingsResult", - "type": "structure", - "members": { - "Marker": {}, - "ReservedNodeOfferings": { - "type": "list", - "member": { - "locationName": "ReservedNodeOffering", - "type": "structure", - "members": { - "ReservedNodeOfferingId": {}, - "NodeType": {}, - "Duration": { - "type": "integer" - }, - "FixedPrice": { - "type": "double" - }, - "UsagePrice": { - "type": "double" - }, - "CurrencyCode": {}, - "OfferingType": {}, - "RecurringCharges": { - "shape": "S47" - } - }, - "wrapper": true - } - } - } - } - }, - "DescribeReservedNodes": { - "input": { - "type": "structure", - "members": { - "ReservedNodeId": {}, - "MaxRecords": { - "type": "integer" - }, - "Marker": {} - } - }, - "output": { - "resultWrapper": "DescribeReservedNodesResult", - "type": "structure", - "members": { - "Marker": {}, - "ReservedNodes": { - "type": "list", - "member": { - "shape": "S4c", - "locationName": "ReservedNode" - } - } - } - } - }, - "DescribeResize": { - "input": { - "type": "structure", - "required": [ - "ClusterIdentifier" - ], - "members": { - "ClusterIdentifier": {} - } - }, - "output": { - "resultWrapper": "DescribeResizeResult", - "type": "structure", - "members": { - "TargetNodeType": {}, - "TargetNumberOfNodes": { - "type": "integer" - }, - "TargetClusterType": {}, - "Status": {}, - "ImportTablesCompleted": { - "type": "list", - "member": {} - }, - "ImportTablesInProgress": { - "type": "list", - "member": {} - }, - "ImportTablesNotStarted": { - "type": "list", - "member": {} - }, - "AvgResizeRateInMegaBytesPerSecond": { - "type": "double" - }, - "TotalResizeDataInMegaBytes": { - "type": "long" - }, - "ProgressInMegaBytes": { - "type": "long" - }, - "ElapsedTimeInSeconds": { - "type": "long" - }, - "EstimatedTimeToCompletionInSeconds": { - "type": "long" - } - } - } - }, - "DescribeSnapshotCopyGrants": { - "input": { - "type": "structure", - "members": { - "SnapshotCopyGrantName": {}, - "MaxRecords": { - "type": "integer" - }, - "Marker": {}, - "TagKeys": { - "shape": "S2j" - }, - "TagValues": { - "shape": "S2l" - } - } - }, - "output": { - "resultWrapper": "DescribeSnapshotCopyGrantsResult", - "type": "structure", - "members": { - "Marker": {}, - "SnapshotCopyGrants": { - "type": "list", - "member": { - "shape": "S25", - "locationName": "SnapshotCopyGrant" - } - } - } - } - }, - "DescribeTableRestoreStatus": { - "input": { - "type": "structure", - "members": { - "ClusterIdentifier": {}, - "TableRestoreRequestId": {}, - "MaxRecords": { - "type": "integer" - }, - "Marker": {} - } - }, - "output": { - "resultWrapper": "DescribeTableRestoreStatusResult", - "type": "structure", - "members": { - "TableRestoreStatusDetails": { - "type": "list", - "member": { - "shape": "S4q", - "locationName": "TableRestoreStatus" - } - }, - "Marker": {} - } - } - }, - "DescribeTags": { - "input": { - "type": "structure", - "members": { - "ResourceName": {}, - "ResourceType": {}, - "MaxRecords": { - "type": "integer" - }, - "Marker": {}, - "TagKeys": { - "shape": "S2j" - }, - "TagValues": { - "shape": "S2l" - } - } - }, - "output": { - "resultWrapper": "DescribeTagsResult", - "type": "structure", - "members": { - "TaggedResources": { - "type": "list", - "member": { - "locationName": "TaggedResource", - "type": "structure", - "members": { - "Tag": { - "shape": "S8" - }, - "ResourceName": {}, - "ResourceType": {} - } - } - }, - "Marker": {} - } - } - }, - "DisableLogging": { - "input": { - "type": "structure", - "required": [ - "ClusterIdentifier" - ], - "members": { - "ClusterIdentifier": {} - } - }, - "output": { - "shape": "S3x", - "resultWrapper": "DisableLoggingResult" - } - }, - "DisableSnapshotCopy": { - "input": { - "type": "structure", - "required": [ - "ClusterIdentifier" - ], - "members": { - "ClusterIdentifier": {} - } - }, - "output": { - "resultWrapper": "DisableSnapshotCopyResult", - "type": "structure", - "members": { - "Cluster": { - "shape": "Sv" - } - } - } - }, - "EnableLogging": { - "input": { - "type": "structure", - "required": [ - "ClusterIdentifier", - "BucketName" - ], - "members": { - "ClusterIdentifier": {}, - "BucketName": {}, - "S3KeyPrefix": {} - } - }, - "output": { - "shape": "S3x", - "resultWrapper": "EnableLoggingResult" - } - }, - "EnableSnapshotCopy": { - "input": { - "type": "structure", - "required": [ - "ClusterIdentifier", - "DestinationRegion" - ], - "members": { - "ClusterIdentifier": {}, - "DestinationRegion": {}, - "RetentionPeriod": { - "type": "integer" - }, - "SnapshotCopyGrantName": {} - } - }, - "output": { - "resultWrapper": "EnableSnapshotCopyResult", - "type": "structure", - "members": { - "Cluster": { - "shape": "Sv" - } - } - } - }, - "GetClusterCredentials": { - "input": { - "type": "structure", - "required": [ - "DbUser", - "ClusterIdentifier" - ], - "members": { - "DbUser": {}, - "DbName": {}, - "ClusterIdentifier": {}, - "DurationSeconds": { - "type": "integer" - }, - "AutoCreate": { - "type": "boolean" - }, - "DbGroups": { - "type": "list", - "member": { - "locationName": "DbGroup" - } - } - } - }, - "output": { - "resultWrapper": "GetClusterCredentialsResult", - "type": "structure", - "members": { - "DbUser": {}, - "DbPassword": { - "type": "string", - "sensitive": true - }, - "Expiration": { - "type": "timestamp" - } - } - } - }, - "ModifyCluster": { - "input": { - "type": "structure", - "required": [ - "ClusterIdentifier" - ], - "members": { - "ClusterIdentifier": {}, - "ClusterType": {}, - "NodeType": {}, - "NumberOfNodes": { - "type": "integer" - }, - "ClusterSecurityGroups": { - "shape": "Sp" - }, - "VpcSecurityGroupIds": { - "shape": "Sq" - }, - "MasterUserPassword": {}, - "ClusterParameterGroupName": {}, - "AutomatedSnapshotRetentionPeriod": { - "type": "integer" - }, - "PreferredMaintenanceWindow": {}, - "ClusterVersion": {}, - "AllowVersionUpgrade": { - "type": "boolean" - }, - "HsmClientCertificateIdentifier": {}, - "HsmConfigurationIdentifier": {}, - "NewClusterIdentifier": {}, - "PubliclyAccessible": { - "type": "boolean" - }, - "ElasticIp": {}, - "EnhancedVpcRouting": { - "type": "boolean" - } - } - }, - "output": { - "resultWrapper": "ModifyClusterResult", - "type": "structure", - "members": { - "Cluster": { - "shape": "Sv" - } - } - } - }, - "ModifyClusterIamRoles": { - "input": { - "type": "structure", - "required": [ - "ClusterIdentifier" - ], - "members": { - "ClusterIdentifier": {}, - "AddIamRoles": { - "shape": "St" - }, - "RemoveIamRoles": { - "shape": "St" - } - } - }, - "output": { - "resultWrapper": "ModifyClusterIamRolesResult", - "type": "structure", - "members": { - "Cluster": { - "shape": "Sv" - } - } - } - }, - "ModifyClusterParameterGroup": { - "input": { - "type": "structure", - "required": [ - "ParameterGroupName", - "Parameters" - ], - "members": { - "ParameterGroupName": {}, - "Parameters": { - "shape": "S2q" - } - } - }, - "output": { - "shape": "S5b", - "resultWrapper": "ModifyClusterParameterGroupResult" - } - }, - "ModifyClusterSubnetGroup": { - "input": { - "type": "structure", - "required": [ - "ClusterSubnetGroupName", - "SubnetIds" - ], - "members": { - "ClusterSubnetGroupName": {}, - "Description": {}, - "SubnetIds": { - "shape": "S1m" - } - } - }, - "output": { - "resultWrapper": "ModifyClusterSubnetGroupResult", - "type": "structure", - "members": { - "ClusterSubnetGroup": { - "shape": "S1o" - } - } - } - }, - "ModifyEventSubscription": { - "input": { - "type": "structure", - "required": [ - "SubscriptionName" - ], - "members": { - "SubscriptionName": {}, - "SnsTopicArn": {}, - "SourceType": {}, - "SourceIds": { - "shape": "S1t" - }, - "EventCategories": { - "shape": "S1u" - }, - "Severity": {}, - "Enabled": { - "type": "boolean" - } - } - }, - "output": { - "resultWrapper": "ModifyEventSubscriptionResult", - "type": "structure", - "members": { - "EventSubscription": { - "shape": "S1w" - } - } - } - }, - "ModifySnapshotCopyRetentionPeriod": { - "input": { - "type": "structure", - "required": [ - "ClusterIdentifier", - "RetentionPeriod" - ], - "members": { - "ClusterIdentifier": {}, - "RetentionPeriod": { - "type": "integer" - } - } - }, - "output": { - "resultWrapper": "ModifySnapshotCopyRetentionPeriodResult", - "type": "structure", - "members": { - "Cluster": { - "shape": "Sv" - } - } - } - }, - "PurchaseReservedNodeOffering": { - "input": { - "type": "structure", - "required": [ - "ReservedNodeOfferingId" - ], - "members": { - "ReservedNodeOfferingId": {}, - "NodeCount": { - "type": "integer" - } - } - }, - "output": { - "resultWrapper": "PurchaseReservedNodeOfferingResult", - "type": "structure", - "members": { - "ReservedNode": { - "shape": "S4c" - } - } - } - }, - "RebootCluster": { - "input": { - "type": "structure", - "required": [ - "ClusterIdentifier" - ], - "members": { - "ClusterIdentifier": {} - } - }, - "output": { - "resultWrapper": "RebootClusterResult", - "type": "structure", - "members": { - "Cluster": { - "shape": "Sv" - } - } - } - }, - "ResetClusterParameterGroup": { - "input": { - "type": "structure", - "required": [ - "ParameterGroupName" - ], - "members": { - "ParameterGroupName": {}, - "ResetAllParameters": { - "type": "boolean" - }, - "Parameters": { - "shape": "S2q" - } - } - }, - "output": { - "shape": "S5b", - "resultWrapper": "ResetClusterParameterGroupResult" - } - }, - "RestoreFromClusterSnapshot": { - "input": { - "type": "structure", - "required": [ - "ClusterIdentifier", - "SnapshotIdentifier" - ], - "members": { - "ClusterIdentifier": {}, - "SnapshotIdentifier": {}, - "SnapshotClusterIdentifier": {}, - "Port": { - "type": "integer" - }, - "AvailabilityZone": {}, - "AllowVersionUpgrade": { - "type": "boolean" - }, - "ClusterSubnetGroupName": {}, - "PubliclyAccessible": { - "type": "boolean" - }, - "OwnerAccount": {}, - "HsmClientCertificateIdentifier": {}, - "HsmConfigurationIdentifier": {}, - "ElasticIp": {}, - "ClusterParameterGroupName": {}, - "ClusterSecurityGroups": { - "shape": "Sp" - }, - "VpcSecurityGroupIds": { - "shape": "Sq" - }, - "PreferredMaintenanceWindow": {}, - "AutomatedSnapshotRetentionPeriod": { - "type": "integer" - }, - "KmsKeyId": {}, - "NodeType": {}, - "EnhancedVpcRouting": { - "type": "boolean" - }, - "AdditionalInfo": {}, - "IamRoles": { - "shape": "St" - } - } - }, - "output": { - "resultWrapper": "RestoreFromClusterSnapshotResult", - "type": "structure", - "members": { - "Cluster": { - "shape": "Sv" - } - } - } - }, - "RestoreTableFromClusterSnapshot": { - "input": { - "type": "structure", - "required": [ - "ClusterIdentifier", - "SnapshotIdentifier", - "SourceDatabaseName", - "SourceTableName", - "NewTableName" - ], - "members": { - "ClusterIdentifier": {}, - "SnapshotIdentifier": {}, - "SourceDatabaseName": {}, - "SourceSchemaName": {}, - "SourceTableName": {}, - "TargetDatabaseName": {}, - "TargetSchemaName": {}, - "NewTableName": {} - } - }, - "output": { - "resultWrapper": "RestoreTableFromClusterSnapshotResult", - "type": "structure", - "members": { - "TableRestoreStatus": { - "shape": "S4q" - } - } - } - }, - "RevokeClusterSecurityGroupIngress": { - "input": { - "type": "structure", - "required": [ - "ClusterSecurityGroupName" - ], - "members": { - "ClusterSecurityGroupName": {}, - "CIDRIP": {}, - "EC2SecurityGroupName": {}, - "EC2SecurityGroupOwnerId": {} - } - }, - "output": { - "resultWrapper": "RevokeClusterSecurityGroupIngressResult", - "type": "structure", - "members": { - "ClusterSecurityGroup": { - "shape": "S4" - } - } - } - }, - "RevokeSnapshotAccess": { - "input": { - "type": "structure", - "required": [ - "SnapshotIdentifier", - "AccountWithRestoreAccess" - ], - "members": { - "SnapshotIdentifier": {}, - "SnapshotClusterIdentifier": {}, - "AccountWithRestoreAccess": {} - } - }, - "output": { - "resultWrapper": "RevokeSnapshotAccessResult", - "type": "structure", - "members": { - "Snapshot": { - "shape": "Sd" - } - } - } - }, - "RotateEncryptionKey": { - "input": { - "type": "structure", - "required": [ - "ClusterIdentifier" - ], - "members": { - "ClusterIdentifier": {} - } - }, - "output": { - "resultWrapper": "RotateEncryptionKeyResult", - "type": "structure", - "members": { - "Cluster": { - "shape": "Sv" - } - } - } - } - }, - "shapes": { - "S4": { - "type": "structure", - "members": { - "ClusterSecurityGroupName": {}, - "Description": {}, - "EC2SecurityGroups": { - "type": "list", - "member": { - "locationName": "EC2SecurityGroup", - "type": "structure", - "members": { - "Status": {}, - "EC2SecurityGroupName": {}, - "EC2SecurityGroupOwnerId": {}, - "Tags": { - "shape": "S7" - } - } - } - }, - "IPRanges": { - "type": "list", - "member": { - "locationName": "IPRange", - "type": "structure", - "members": { - "Status": {}, - "CIDRIP": {}, - "Tags": { - "shape": "S7" - } - } - } - }, - "Tags": { - "shape": "S7" - } - }, - "wrapper": true - }, - "S7": { - "type": "list", - "member": { - "shape": "S8", - "locationName": "Tag" - } - }, - "S8": { - "type": "structure", - "members": { - "Key": {}, - "Value": {} - } - }, - "Sd": { - "type": "structure", - "members": { - "SnapshotIdentifier": {}, - "ClusterIdentifier": {}, - "SnapshotCreateTime": { - "type": "timestamp" - }, - "Status": {}, - "Port": { - "type": "integer" - }, - "AvailabilityZone": {}, - "ClusterCreateTime": { - "type": "timestamp" - }, - "MasterUsername": {}, - "ClusterVersion": {}, - "SnapshotType": {}, - "NodeType": {}, - "NumberOfNodes": { - "type": "integer" - }, - "DBName": {}, - "VpcId": {}, - "Encrypted": { - "type": "boolean" - }, - "KmsKeyId": {}, - "EncryptedWithHSM": { - "type": "boolean" - }, - "AccountsWithRestoreAccess": { - "type": "list", - "member": { - "locationName": "AccountWithRestoreAccess", - "type": "structure", - "members": { - "AccountId": {}, - "AccountAlias": {} - } - } - }, - "OwnerAccount": {}, - "TotalBackupSizeInMegaBytes": { - "type": "double" - }, - "ActualIncrementalBackupSizeInMegaBytes": { - "type": "double" - }, - "BackupProgressInMegaBytes": { - "type": "double" - }, - "CurrentBackupRateInMegaBytesPerSecond": { - "type": "double" - }, - "EstimatedSecondsToCompletion": { - "type": "long" - }, - "ElapsedTimeInSeconds": { - "type": "long" - }, - "SourceRegion": {}, - "Tags": { - "shape": "S7" - }, - "RestorableNodeTypes": { - "type": "list", - "member": { - "locationName": "NodeType" - } - }, - "EnhancedVpcRouting": { - "type": "boolean" - } - }, - "wrapper": true - }, - "Sp": { - "type": "list", - "member": { - "locationName": "ClusterSecurityGroupName" - } - }, - "Sq": { - "type": "list", - "member": { - "locationName": "VpcSecurityGroupId" - } - }, - "St": { - "type": "list", - "member": { - "locationName": "IamRoleArn" - } - }, - "Sv": { - "type": "structure", - "members": { - "ClusterIdentifier": {}, - "NodeType": {}, - "ClusterStatus": {}, - "ModifyStatus": {}, - "MasterUsername": {}, - "DBName": {}, - "Endpoint": { - "type": "structure", - "members": { - "Address": {}, - "Port": { - "type": "integer" - } - } - }, - "ClusterCreateTime": { - "type": "timestamp" - }, - "AutomatedSnapshotRetentionPeriod": { - "type": "integer" - }, - "ClusterSecurityGroups": { - "type": "list", - "member": { - "locationName": "ClusterSecurityGroup", - "type": "structure", - "members": { - "ClusterSecurityGroupName": {}, - "Status": {} - } - } - }, - "VpcSecurityGroups": { - "type": "list", - "member": { - "locationName": "VpcSecurityGroup", - "type": "structure", - "members": { - "VpcSecurityGroupId": {}, - "Status": {} - } - } - }, - "ClusterParameterGroups": { - "type": "list", - "member": { - "locationName": "ClusterParameterGroup", - "type": "structure", - "members": { - "ParameterGroupName": {}, - "ParameterApplyStatus": {}, - "ClusterParameterStatusList": { - "type": "list", - "member": { - "type": "structure", - "members": { - "ParameterName": {}, - "ParameterApplyStatus": {}, - "ParameterApplyErrorDescription": {} - } - } - } - } - } - }, - "ClusterSubnetGroupName": {}, - "VpcId": {}, - "AvailabilityZone": {}, - "PreferredMaintenanceWindow": {}, - "PendingModifiedValues": { - "type": "structure", - "members": { - "MasterUserPassword": {}, - "NodeType": {}, - "NumberOfNodes": { - "type": "integer" - }, - "ClusterType": {}, - "ClusterVersion": {}, - "AutomatedSnapshotRetentionPeriod": { - "type": "integer" - }, - "ClusterIdentifier": {}, - "PubliclyAccessible": { - "type": "boolean" - }, - "EnhancedVpcRouting": { - "type": "boolean" - } - } - }, - "ClusterVersion": {}, - "AllowVersionUpgrade": { - "type": "boolean" - }, - "NumberOfNodes": { - "type": "integer" - }, - "PubliclyAccessible": { - "type": "boolean" - }, - "Encrypted": { - "type": "boolean" - }, - "RestoreStatus": { - "type": "structure", - "members": { - "Status": {}, - "CurrentRestoreRateInMegaBytesPerSecond": { - "type": "double" - }, - "SnapshotSizeInMegaBytes": { - "type": "long" - }, - "ProgressInMegaBytes": { - "type": "long" - }, - "ElapsedTimeInSeconds": { - "type": "long" - }, - "EstimatedTimeToCompletionInSeconds": { - "type": "long" - } - } - }, - "HsmStatus": { - "type": "structure", - "members": { - "HsmClientCertificateIdentifier": {}, - "HsmConfigurationIdentifier": {}, - "Status": {} - } - }, - "ClusterSnapshotCopyStatus": { - "type": "structure", - "members": { - "DestinationRegion": {}, - "RetentionPeriod": { - "type": "long" - }, - "SnapshotCopyGrantName": {} - } - }, - "ClusterPublicKey": {}, - "ClusterNodes": { - "type": "list", - "member": { - "type": "structure", - "members": { - "NodeRole": {}, - "PrivateIPAddress": {}, - "PublicIPAddress": {} - } - } - }, - "ElasticIpStatus": { - "type": "structure", - "members": { - "ElasticIp": {}, - "Status": {} - } - }, - "ClusterRevisionNumber": {}, - "Tags": { - "shape": "S7" - }, - "KmsKeyId": {}, - "EnhancedVpcRouting": { - "type": "boolean" - }, - "IamRoles": { - "type": "list", - "member": { - "locationName": "ClusterIamRole", - "type": "structure", - "members": { - "IamRoleArn": {}, - "ApplyStatus": {} - } - } - } - }, - "wrapper": true - }, - "S1g": { - "type": "structure", - "members": { - "ParameterGroupName": {}, - "ParameterGroupFamily": {}, - "Description": {}, - "Tags": { - "shape": "S7" - } - }, - "wrapper": true - }, - "S1m": { - "type": "list", - "member": { - "locationName": "SubnetIdentifier" - } - }, - "S1o": { - "type": "structure", - "members": { - "ClusterSubnetGroupName": {}, - "Description": {}, - "VpcId": {}, - "SubnetGroupStatus": {}, - "Subnets": { - "type": "list", - "member": { - "locationName": "Subnet", - "type": "structure", - "members": { - "SubnetIdentifier": {}, - "SubnetAvailabilityZone": { - "shape": "S1r" - }, - "SubnetStatus": {} - } - } - }, - "Tags": { - "shape": "S7" - } - }, - "wrapper": true - }, - "S1r": { - "type": "structure", - "members": { - "Name": {} - }, - "wrapper": true - }, - "S1t": { - "type": "list", - "member": { - "locationName": "SourceId" - } - }, - "S1u": { - "type": "list", - "member": { - "locationName": "EventCategory" - } - }, - "S1w": { - "type": "structure", - "members": { - "CustomerAwsId": {}, - "CustSubscriptionId": {}, - "SnsTopicArn": {}, - "Status": {}, - "SubscriptionCreationTime": { - "type": "timestamp" - }, - "SourceType": {}, - "SourceIdsList": { - "shape": "S1t" - }, - "EventCategoriesList": { - "shape": "S1u" - }, - "Severity": {}, - "Enabled": { - "type": "boolean" - }, - "Tags": { - "shape": "S7" - } - }, - "wrapper": true - }, - "S1z": { - "type": "structure", - "members": { - "HsmClientCertificateIdentifier": {}, - "HsmClientCertificatePublicKey": {}, - "Tags": { - "shape": "S7" - } - }, - "wrapper": true - }, - "S22": { - "type": "structure", - "members": { - "HsmConfigurationIdentifier": {}, - "Description": {}, - "HsmIpAddress": {}, - "HsmPartitionName": {}, - "Tags": { - "shape": "S7" - } - }, - "wrapper": true - }, - "S25": { - "type": "structure", - "members": { - "SnapshotCopyGrantName": {}, - "KmsKeyId": {}, - "Tags": { - "shape": "S7" - } - }, - "wrapper": true - }, - "S2j": { - "type": "list", - "member": { - "locationName": "TagKey" - } - }, - "S2l": { - "type": "list", - "member": { - "locationName": "TagValue" - } - }, - "S2q": { - "type": "list", - "member": { - "locationName": "Parameter", - "type": "structure", - "members": { - "ParameterName": {}, - "ParameterValue": {}, - "Description": {}, - "Source": {}, - "DataType": {}, - "AllowedValues": {}, - "ApplyType": {}, - "IsModifiable": { - "type": "boolean" - }, - "MinimumEngineVersion": {} - } - } - }, - "S3x": { - "type": "structure", - "members": { - "LoggingEnabled": { - "type": "boolean" - }, - "BucketName": {}, - "S3KeyPrefix": {}, - "LastSuccessfulDeliveryTime": { - "type": "timestamp" - }, - "LastFailureTime": { - "type": "timestamp" - }, - "LastFailureMessage": {} - } - }, - "S47": { - "type": "list", - "member": { - "locationName": "RecurringCharge", - "type": "structure", - "members": { - "RecurringChargeAmount": { - "type": "double" - }, - "RecurringChargeFrequency": {} - }, - "wrapper": true - } - }, - "S4c": { - "type": "structure", - "members": { - "ReservedNodeId": {}, - "ReservedNodeOfferingId": {}, - "NodeType": {}, - "StartTime": { - "type": "timestamp" - }, - "Duration": { - "type": "integer" - }, - "FixedPrice": { - "type": "double" - }, - "UsagePrice": { - "type": "double" - }, - "CurrencyCode": {}, - "NodeCount": { - "type": "integer" - }, - "State": {}, - "OfferingType": {}, - "RecurringCharges": { - "shape": "S47" - } - }, - "wrapper": true - }, - "S4q": { - "type": "structure", - "members": { - "TableRestoreRequestId": {}, - "Status": {}, - "Message": {}, - "RequestTime": { - "type": "timestamp" - }, - "ProgressInMegaBytes": { - "type": "long" - }, - "TotalDataInMegaBytes": { - "type": "long" - }, - "ClusterIdentifier": {}, - "SnapshotIdentifier": {}, - "SourceDatabaseName": {}, - "SourceSchemaName": {}, - "SourceTableName": {}, - "TargetDatabaseName": {}, - "TargetSchemaName": {}, - "NewTableName": {} - }, - "wrapper": true - }, - "S5b": { - "type": "structure", - "members": { - "ParameterGroupName": {}, - "ParameterGroupStatus": {} - } - } - } -} \ No newline at end of file diff --git a/workshops/monte-carlo-on-ec2-spot-fleet/src/web/node_modules/aws-sdk/apis/redshift-2012-12-01.paginators.json b/workshops/monte-carlo-on-ec2-spot-fleet/src/web/node_modules/aws-sdk/apis/redshift-2012-12-01.paginators.json deleted file mode 100644 index 9ed71e35..00000000 --- a/workshops/monte-carlo-on-ec2-spot-fleet/src/web/node_modules/aws-sdk/apis/redshift-2012-12-01.paginators.json +++ /dev/null @@ -1,94 +0,0 @@ -{ - "pagination": { - "DescribeClusterParameterGroups": { - "input_token": "Marker", - "limit_key": "MaxRecords", - "output_token": "Marker", - "result_key": "ParameterGroups" - }, - "DescribeClusterParameters": { - "input_token": "Marker", - "limit_key": "MaxRecords", - "output_token": "Marker", - "result_key": "Parameters" - }, - "DescribeClusterSecurityGroups": { - "input_token": "Marker", - "limit_key": "MaxRecords", - "output_token": "Marker", - "result_key": "ClusterSecurityGroups" - }, - "DescribeClusterSnapshots": { - "input_token": "Marker", - "limit_key": "MaxRecords", - "output_token": "Marker", - "result_key": "Snapshots" - }, - "DescribeClusterSubnetGroups": { - "input_token": "Marker", - "limit_key": "MaxRecords", - "output_token": "Marker", - "result_key": "ClusterSubnetGroups" - }, - "DescribeClusterVersions": { - "input_token": "Marker", - "limit_key": "MaxRecords", - "output_token": "Marker", - "result_key": "ClusterVersions" - }, - "DescribeClusters": { - "input_token": "Marker", - "limit_key": "MaxRecords", - "output_token": "Marker", - "result_key": "Clusters" - }, - "DescribeDefaultClusterParameters": { - "input_token": "Marker", - "limit_key": "MaxRecords", - "output_token": "DefaultClusterParameters.Marker", - "result_key": "DefaultClusterParameters.Parameters" - }, - "DescribeEventSubscriptions": { - "input_token": "Marker", - "limit_key": "MaxRecords", - "output_token": "Marker", - "result_key": "EventSubscriptionsList" - }, - "DescribeEvents": { - "input_token": "Marker", - "limit_key": "MaxRecords", - "output_token": "Marker", - "result_key": "Events" - }, - "DescribeHsmClientCertificates": { - "input_token": "Marker", - "limit_key": "MaxRecords", - "output_token": "Marker", - "result_key": "HsmClientCertificates" - }, - "DescribeHsmConfigurations": { - "input_token": "Marker", - "limit_key": "MaxRecords", - "output_token": "Marker", - "result_key": "HsmConfigurations" - }, - "DescribeOrderableClusterOptions": { - "input_token": "Marker", - "limit_key": "MaxRecords", - "output_token": "Marker", - "result_key": "OrderableClusterOptions" - }, - "DescribeReservedNodeOfferings": { - "input_token": "Marker", - "limit_key": "MaxRecords", - "output_token": "Marker", - "result_key": "ReservedNodeOfferings" - }, - "DescribeReservedNodes": { - "input_token": "Marker", - "limit_key": "MaxRecords", - "output_token": "Marker", - "result_key": "ReservedNodes" - } - } -} \ No newline at end of file diff --git a/workshops/monte-carlo-on-ec2-spot-fleet/src/web/node_modules/aws-sdk/apis/redshift-2012-12-01.waiters2.json b/workshops/monte-carlo-on-ec2-spot-fleet/src/web/node_modules/aws-sdk/apis/redshift-2012-12-01.waiters2.json deleted file mode 100644 index 164e9b0d..00000000 --- a/workshops/monte-carlo-on-ec2-spot-fleet/src/web/node_modules/aws-sdk/apis/redshift-2012-12-01.waiters2.json +++ /dev/null @@ -1,97 +0,0 @@ -{ - "version": 2, - "waiters": { - "ClusterAvailable": { - "delay": 60, - "operation": "DescribeClusters", - "maxAttempts": 30, - "acceptors": [ - { - "expected": "available", - "matcher": "pathAll", - "state": "success", - "argument": "Clusters[].ClusterStatus" - }, - { - "expected": "deleting", - "matcher": "pathAny", - "state": "failure", - "argument": "Clusters[].ClusterStatus" - }, - { - "expected": "ClusterNotFound", - "matcher": "error", - "state": "retry" - } - ] - }, - "ClusterDeleted": { - "delay": 60, - "operation": "DescribeClusters", - "maxAttempts": 30, - "acceptors": [ - { - "expected": "ClusterNotFound", - "matcher": "error", - "state": "success" - }, - { - "expected": "creating", - "matcher": "pathAny", - "state": "failure", - "argument": "Clusters[].ClusterStatus" - }, - { - "expected": "modifying", - "matcher": "pathAny", - "state": "failure", - "argument": "Clusters[].ClusterStatus" - } - ] - }, - "ClusterRestored": { - "operation": "DescribeClusters", - "maxAttempts": 30, - "delay": 60, - "acceptors": [ - { - "state": "success", - "matcher": "pathAll", - "argument": "Clusters[].RestoreStatus.Status", - "expected": "completed" - }, - { - "state": "failure", - "matcher": "pathAny", - "argument": "Clusters[].ClusterStatus", - "expected": "deleting" - } - ] - }, - "SnapshotAvailable": { - "delay": 15, - "operation": "DescribeClusterSnapshots", - "maxAttempts": 20, - "acceptors": [ - { - "expected": "available", - "matcher": "pathAll", - "state": "success", - "argument": "Snapshots[].Status" - }, - { - "expected": "failed", - "matcher": "pathAny", - "state": "failure", - "argument": "Snapshots[].Status" - }, - { - "expected": "deleted", - "matcher": "pathAny", - "state": "failure", - "argument": "Snapshots[].Status" - } - ] - } - } -} diff --git a/workshops/monte-carlo-on-ec2-spot-fleet/src/web/node_modules/aws-sdk/apis/rekognition-2016-06-27.examples.json b/workshops/monte-carlo-on-ec2-spot-fleet/src/web/node_modules/aws-sdk/apis/rekognition-2016-06-27.examples.json deleted file mode 100644 index 039e04d6..00000000 --- a/workshops/monte-carlo-on-ec2-spot-fleet/src/web/node_modules/aws-sdk/apis/rekognition-2016-06-27.examples.json +++ /dev/null @@ -1,651 +0,0 @@ -{ - "version": "1.0", - "examples": { - "CompareFaces": [ - { - "input": { - "SimilarityThreshold": 90, - "SourceImage": { - "S3Object": { - "Bucket": "mybucket", - "Name": "mysourceimage" - } - }, - "TargetImage": { - "S3Object": { - "Bucket": "mybucket", - "Name": "mytargetimage" - } - } - }, - "output": { - "FaceMatches": [ - { - "Face": { - "BoundingBox": { - "Height": 0.33481481671333313, - "Left": 0.31888890266418457, - "Top": 0.4933333396911621, - "Width": 0.25 - }, - "Confidence": 99.9991226196289 - }, - "Similarity": 100 - } - ], - "SourceImageFace": { - "BoundingBox": { - "Height": 0.33481481671333313, - "Left": 0.31888890266418457, - "Top": 0.4933333396911621, - "Width": 0.25 - }, - "Confidence": 99.9991226196289 - } - }, - "comments": { - "input": { - }, - "output": { - } - }, - "description": "This operation compares the largest face detected in the source image with each face detected in the target image.", - "id": "to-compare-two-images-1482181985581", - "title": "To compare two images" - } - ], - "CreateCollection": [ - { - "input": { - "CollectionId": "myphotos" - }, - "output": { - "CollectionArn": "aws:rekognition:us-west-2:123456789012:collection/myphotos", - "StatusCode": 200 - }, - "comments": { - "input": { - }, - "output": { - } - }, - "description": "This operation creates a Rekognition collection for storing image data.", - "id": "to-create-a-collection-1481833313674", - "title": "To create a collection" - } - ], - "DeleteCollection": [ - { - "input": { - "CollectionId": "myphotos" - }, - "output": { - "StatusCode": 200 - }, - "comments": { - "input": { - }, - "output": { - } - }, - "description": "This operation deletes a Rekognition collection.", - "id": "to-delete-a-collection-1481838179973", - "title": "To delete a collection" - } - ], - "DeleteFaces": [ - { - "input": { - "CollectionId": "myphotos", - "FaceIds": [ - "ff43d742-0c13-5d16-a3e8-03d3f58e980b" - ] - }, - "output": { - "DeletedFaces": [ - "ff43d742-0c13-5d16-a3e8-03d3f58e980b" - ] - }, - "comments": { - "input": { - }, - "output": { - } - }, - "description": "This operation deletes one or more faces from a Rekognition collection.", - "id": "to-delete-a-face-1482182799377", - "title": "To delete a face" - } - ], - "DetectFaces": [ - { - "input": { - "Image": { - "S3Object": { - "Bucket": "mybucket", - "Name": "myphoto" - } - } - }, - "output": { - "FaceDetails": [ - { - "BoundingBox": { - "Height": 0.18000000715255737, - "Left": 0.5555555820465088, - "Top": 0.33666667342185974, - "Width": 0.23999999463558197 - }, - "Confidence": 100, - "Landmarks": [ - { - "Type": "eyeLeft", - "X": 0.6394737362861633, - "Y": 0.40819624066352844 - }, - { - "Type": "eyeRight", - "X": 0.7266660928726196, - "Y": 0.41039225459098816 - }, - { - "Type": "eyeRight", - "X": 0.6912462115287781, - "Y": 0.44240960478782654 - }, - { - "Type": "mouthDown", - "X": 0.6306198239326477, - "Y": 0.46700039505958557 - }, - { - "Type": "mouthUp", - "X": 0.7215608954429626, - "Y": 0.47114261984825134 - } - ], - "Pose": { - "Pitch": 4.050806522369385, - "Roll": 0.9950747489929199, - "Yaw": 13.693790435791016 - }, - "Quality": { - "Brightness": 37.60169982910156, - "Sharpness": 80 - } - } - ], - "OrientationCorrection": "ROTATE_0" - }, - "comments": { - "input": { - }, - "output": { - } - }, - "description": "This operation detects faces in an image stored in an AWS S3 bucket.", - "id": "to-detect-faces-in-an-image-1481841782793", - "title": "To detect faces in an image" - } - ], - "DetectLabels": [ - { - "input": { - "Image": { - "S3Object": { - "Bucket": "mybucket", - "Name": "myphoto" - } - }, - "MaxLabels": 123, - "MinConfidence": 70 - }, - "output": { - "Labels": [ - { - "Confidence": 99.25072479248047, - "Name": "People" - }, - { - "Confidence": 99.25074005126953, - "Name": "Person" - } - ] - }, - "comments": { - "input": { - }, - "output": { - } - }, - "description": "This operation detects labels in the supplied image", - "id": "to-detect-labels-1481834255770", - "title": "To detect labels" - } - ], - "IndexFaces": [ - { - "input": { - "CollectionId": "myphotos", - "DetectionAttributes": [ - - ], - "ExternalImageId": "myphotoid", - "Image": { - "S3Object": { - "Bucket": "mybucket", - "Name": "myphoto" - } - } - }, - "output": { - "FaceRecords": [ - { - "Face": { - "BoundingBox": { - "Height": 0.33481481671333313, - "Left": 0.31888890266418457, - "Top": 0.4933333396911621, - "Width": 0.25 - }, - "Confidence": 99.9991226196289, - "FaceId": "ff43d742-0c13-5d16-a3e8-03d3f58e980b", - "ImageId": "465f4e93-763e-51d0-b030-b9667a2d94b1" - }, - "FaceDetail": { - "BoundingBox": { - "Height": 0.33481481671333313, - "Left": 0.31888890266418457, - "Top": 0.4933333396911621, - "Width": 0.25 - }, - "Confidence": 99.9991226196289, - "Landmarks": [ - { - "Type": "eyeLeft", - "X": 0.3976764678955078, - "Y": 0.6248345971107483 - }, - { - "Type": "eyeRight", - "X": 0.4810936450958252, - "Y": 0.6317117214202881 - }, - { - "Type": "noseLeft", - "X": 0.41986238956451416, - "Y": 0.7111940383911133 - }, - { - "Type": "mouthDown", - "X": 0.40525302290916443, - "Y": 0.7497701048851013 - }, - { - "Type": "mouthUp", - "X": 0.4753248989582062, - "Y": 0.7558549642562866 - } - ], - "Pose": { - "Pitch": -9.713645935058594, - "Roll": 4.707281112670898, - "Yaw": -24.438663482666016 - }, - "Quality": { - "Brightness": 29.23358917236328, - "Sharpness": 80 - } - } - }, - { - "Face": { - "BoundingBox": { - "Height": 0.32592591643333435, - "Left": 0.5144444704055786, - "Top": 0.15111111104488373, - "Width": 0.24444444477558136 - }, - "Confidence": 99.99950408935547, - "FaceId": "8be04dba-4e58-520d-850e-9eae4af70eb2", - "ImageId": "465f4e93-763e-51d0-b030-b9667a2d94b1" - }, - "FaceDetail": { - "BoundingBox": { - "Height": 0.32592591643333435, - "Left": 0.5144444704055786, - "Top": 0.15111111104488373, - "Width": 0.24444444477558136 - }, - "Confidence": 99.99950408935547, - "Landmarks": [ - { - "Type": "eyeLeft", - "X": 0.6006892323493958, - "Y": 0.290842205286026 - }, - { - "Type": "eyeRight", - "X": 0.6808141469955444, - "Y": 0.29609042406082153 - }, - { - "Type": "noseLeft", - "X": 0.6395332217216492, - "Y": 0.3522595763206482 - }, - { - "Type": "mouthDown", - "X": 0.5892083048820496, - "Y": 0.38689887523651123 - }, - { - "Type": "mouthUp", - "X": 0.674560010433197, - "Y": 0.394125759601593 - } - ], - "Pose": { - "Pitch": -4.683138370513916, - "Roll": 2.1029529571533203, - "Yaw": 6.716655254364014 - }, - "Quality": { - "Brightness": 34.951698303222656, - "Sharpness": 160 - } - } - } - ], - "OrientationCorrection": "ROTATE_0" - }, - "comments": { - "input": { - }, - "output": { - } - }, - "description": "This operation detects faces in an image and adds them to the specified Rekognition collection.", - "id": "to-add-a-face-to-a-collection-1482179542923", - "title": "To add a face to a collection" - } - ], - "ListCollections": [ - { - "input": { - }, - "output": { - "CollectionIds": [ - "myphotos" - ] - }, - "comments": { - "input": { - }, - "output": { - } - }, - "description": "This operation returns a list of Rekognition collections.", - "id": "to-list-the-collections-1482179199088", - "title": "To list the collections" - } - ], - "ListFaces": [ - { - "input": { - "CollectionId": "myphotos", - "MaxResults": 20 - }, - "output": { - "Faces": [ - { - "BoundingBox": { - "Height": 0.18000000715255737, - "Left": 0.5555559992790222, - "Top": 0.336667001247406, - "Width": 0.23999999463558197 - }, - "Confidence": 100, - "FaceId": "1c62e8b5-69a7-5b7d-b3cd-db4338a8a7e7", - "ImageId": "147fdf82-7a71-52cf-819b-e786c7b9746e" - }, - { - "BoundingBox": { - "Height": 0.16555599868297577, - "Left": 0.30963000655174255, - "Top": 0.7066670060157776, - "Width": 0.22074100375175476 - }, - "Confidence": 100, - "FaceId": "29a75abe-397b-5101-ba4f-706783b2246c", - "ImageId": "147fdf82-7a71-52cf-819b-e786c7b9746e" - }, - { - "BoundingBox": { - "Height": 0.3234420120716095, - "Left": 0.3233329951763153, - "Top": 0.5, - "Width": 0.24222199618816376 - }, - "Confidence": 99.99829864501953, - "FaceId": "38271d79-7bc2-5efb-b752-398a8d575b85", - "ImageId": "d5631190-d039-54e4-b267-abd22c8647c5" - }, - { - "BoundingBox": { - "Height": 0.03555560111999512, - "Left": 0.37388700246810913, - "Top": 0.2477779984474182, - "Width": 0.04747769981622696 - }, - "Confidence": 99.99210357666016, - "FaceId": "3b01bef0-c883-5654-ba42-d5ad28b720b3", - "ImageId": "812d9f04-86f9-54fc-9275-8d0dcbcb6784" - }, - { - "BoundingBox": { - "Height": 0.05333330109715462, - "Left": 0.2937690019607544, - "Top": 0.35666701197624207, - "Width": 0.07121659815311432 - }, - "Confidence": 99.99919891357422, - "FaceId": "4839a608-49d0-566c-8301-509d71b534d1", - "ImageId": "812d9f04-86f9-54fc-9275-8d0dcbcb6784" - }, - { - "BoundingBox": { - "Height": 0.3249259889125824, - "Left": 0.5155559778213501, - "Top": 0.1513350009918213, - "Width": 0.24333299696445465 - }, - "Confidence": 99.99949645996094, - "FaceId": "70008e50-75e4-55d0-8e80-363fb73b3a14", - "ImageId": "d5631190-d039-54e4-b267-abd22c8647c5" - }, - { - "BoundingBox": { - "Height": 0.03777780011296272, - "Left": 0.7002969980239868, - "Top": 0.18777799606323242, - "Width": 0.05044509842991829 - }, - "Confidence": 99.92639923095703, - "FaceId": "7f5f88ed-d684-5a88-b0df-01e4a521552b", - "ImageId": "812d9f04-86f9-54fc-9275-8d0dcbcb6784" - }, - { - "BoundingBox": { - "Height": 0.05555560067296028, - "Left": 0.13946600258350372, - "Top": 0.46333301067352295, - "Width": 0.07270029932260513 - }, - "Confidence": 99.99469757080078, - "FaceId": "895b4e2c-81de-5902-a4bd-d1792bda00b2", - "ImageId": "812d9f04-86f9-54fc-9275-8d0dcbcb6784" - }, - { - "BoundingBox": { - "Height": 0.3259260058403015, - "Left": 0.5144439935684204, - "Top": 0.15111100673675537, - "Width": 0.24444399774074554 - }, - "Confidence": 99.99949645996094, - "FaceId": "8be04dba-4e58-520d-850e-9eae4af70eb2", - "ImageId": "465f4e93-763e-51d0-b030-b9667a2d94b1" - }, - { - "BoundingBox": { - "Height": 0.18888899683952332, - "Left": 0.3783380091190338, - "Top": 0.2355560064315796, - "Width": 0.25222599506378174 - }, - "Confidence": 99.9999008178711, - "FaceId": "908544ad-edc3-59df-8faf-6a87cc256cf5", - "ImageId": "3c731605-d772-541a-a5e7-0375dbc68a07" - }, - { - "BoundingBox": { - "Height": 0.33481499552726746, - "Left": 0.31888899207115173, - "Top": 0.49333301186561584, - "Width": 0.25 - }, - "Confidence": 99.99909973144531, - "FaceId": "ff43d742-0c13-5d16-a3e8-03d3f58e980b", - "ImageId": "465f4e93-763e-51d0-b030-b9667a2d94b1" - } - ] - }, - "comments": { - "input": { - }, - "output": { - } - }, - "description": "This operation lists the faces in a Rekognition collection.", - "id": "to-list-the-faces-in-a-collection-1482181416530", - "title": "To list the faces in a collection" - } - ], - "SearchFaces": [ - { - "input": { - "CollectionId": "myphotos", - "FaceId": "70008e50-75e4-55d0-8e80-363fb73b3a14", - "FaceMatchThreshold": 90, - "MaxFaces": 10 - }, - "output": { - "FaceMatches": [ - { - "Face": { - "BoundingBox": { - "Height": 0.3259260058403015, - "Left": 0.5144439935684204, - "Top": 0.15111100673675537, - "Width": 0.24444399774074554 - }, - "Confidence": 99.99949645996094, - "FaceId": "8be04dba-4e58-520d-850e-9eae4af70eb2", - "ImageId": "465f4e93-763e-51d0-b030-b9667a2d94b1" - }, - "Similarity": 99.97222137451172 - }, - { - "Face": { - "BoundingBox": { - "Height": 0.16555599868297577, - "Left": 0.30963000655174255, - "Top": 0.7066670060157776, - "Width": 0.22074100375175476 - }, - "Confidence": 100, - "FaceId": "29a75abe-397b-5101-ba4f-706783b2246c", - "ImageId": "147fdf82-7a71-52cf-819b-e786c7b9746e" - }, - "Similarity": 97.04154968261719 - }, - { - "Face": { - "BoundingBox": { - "Height": 0.18888899683952332, - "Left": 0.3783380091190338, - "Top": 0.2355560064315796, - "Width": 0.25222599506378174 - }, - "Confidence": 99.9999008178711, - "FaceId": "908544ad-edc3-59df-8faf-6a87cc256cf5", - "ImageId": "3c731605-d772-541a-a5e7-0375dbc68a07" - }, - "Similarity": 95.94520568847656 - } - ], - "SearchedFaceId": "70008e50-75e4-55d0-8e80-363fb73b3a14" - }, - "comments": { - "input": { - }, - "output": { - } - }, - "description": "This operation searches for matching faces in the collection the supplied face belongs to.", - "id": "to-delete-a-face-1482182799377", - "title": "To delete a face" - } - ], - "SearchFacesByImage": [ - { - "input": { - "CollectionId": "myphotos", - "FaceMatchThreshold": 95, - "Image": { - "S3Object": { - "Bucket": "mybucket", - "Name": "myphoto" - } - }, - "MaxFaces": 5 - }, - "output": { - "FaceMatches": [ - { - "Face": { - "BoundingBox": { - "Height": 0.3234420120716095, - "Left": 0.3233329951763153, - "Top": 0.5, - "Width": 0.24222199618816376 - }, - "Confidence": 99.99829864501953, - "FaceId": "38271d79-7bc2-5efb-b752-398a8d575b85", - "ImageId": "d5631190-d039-54e4-b267-abd22c8647c5" - }, - "Similarity": 99.97036743164062 - } - ], - "SearchedFaceBoundingBox": { - "Height": 0.33481481671333313, - "Left": 0.31888890266418457, - "Top": 0.4933333396911621, - "Width": 0.25 - }, - "SearchedFaceConfidence": 99.9991226196289 - }, - "comments": { - "input": { - }, - "output": { - } - }, - "description": "This operation searches for faces in a Rekognition collection that match the largest face in an S3 bucket stored image.", - "id": "to-search-for-faces-matching-a-supplied-image-1482175994491", - "title": "To search for faces matching a supplied image" - } - ] - } -} diff --git a/workshops/monte-carlo-on-ec2-spot-fleet/src/web/node_modules/aws-sdk/apis/rekognition-2016-06-27.min.json b/workshops/monte-carlo-on-ec2-spot-fleet/src/web/node_modules/aws-sdk/apis/rekognition-2016-06-27.min.json deleted file mode 100644 index b547d455..00000000 --- a/workshops/monte-carlo-on-ec2-spot-fleet/src/web/node_modules/aws-sdk/apis/rekognition-2016-06-27.min.json +++ /dev/null @@ -1,712 +0,0 @@ -{ - "version": "2.0", - "metadata": { - "apiVersion": "2016-06-27", - "endpointPrefix": "rekognition", - "jsonVersion": "1.1", - "protocol": "json", - "serviceFullName": "Amazon Rekognition", - "signatureVersion": "v4", - "targetPrefix": "RekognitionService", - "uid": "rekognition-2016-06-27" - }, - "operations": { - "CompareFaces": { - "input": { - "type": "structure", - "required": [ - "SourceImage", - "TargetImage" - ], - "members": { - "SourceImage": { - "shape": "S2" - }, - "TargetImage": { - "shape": "S2" - }, - "SimilarityThreshold": { - "type": "float" - } - } - }, - "output": { - "type": "structure", - "members": { - "SourceImageFace": { - "type": "structure", - "members": { - "BoundingBox": { - "shape": "Sb" - }, - "Confidence": { - "type": "float" - } - } - }, - "FaceMatches": { - "type": "list", - "member": { - "type": "structure", - "members": { - "Similarity": { - "type": "float" - }, - "Face": { - "shape": "Sf" - } - } - } - }, - "UnmatchedFaces": { - "type": "list", - "member": { - "shape": "Sf" - } - }, - "SourceImageOrientationCorrection": {}, - "TargetImageOrientationCorrection": {} - } - } - }, - "CreateCollection": { - "input": { - "type": "structure", - "required": [ - "CollectionId" - ], - "members": { - "CollectionId": {} - } - }, - "output": { - "type": "structure", - "members": { - "StatusCode": { - "type": "integer" - }, - "CollectionArn": {} - } - } - }, - "DeleteCollection": { - "input": { - "type": "structure", - "required": [ - "CollectionId" - ], - "members": { - "CollectionId": {} - } - }, - "output": { - "type": "structure", - "members": { - "StatusCode": { - "type": "integer" - } - } - } - }, - "DeleteFaces": { - "input": { - "type": "structure", - "required": [ - "CollectionId", - "FaceIds" - ], - "members": { - "CollectionId": {}, - "FaceIds": { - "shape": "Sw" - } - } - }, - "output": { - "type": "structure", - "members": { - "DeletedFaces": { - "shape": "Sw" - } - } - } - }, - "DetectFaces": { - "input": { - "type": "structure", - "required": [ - "Image" - ], - "members": { - "Image": { - "shape": "S2" - }, - "Attributes": { - "shape": "S10" - } - } - }, - "output": { - "type": "structure", - "members": { - "FaceDetails": { - "type": "list", - "member": { - "shape": "S14" - } - }, - "OrientationCorrection": {} - } - } - }, - "DetectLabels": { - "input": { - "type": "structure", - "required": [ - "Image" - ], - "members": { - "Image": { - "shape": "S2" - }, - "MaxLabels": { - "type": "integer" - }, - "MinConfidence": { - "type": "float" - } - } - }, - "output": { - "type": "structure", - "members": { - "Labels": { - "type": "list", - "member": { - "type": "structure", - "members": { - "Name": {}, - "Confidence": { - "type": "float" - } - } - } - }, - "OrientationCorrection": {} - } - } - }, - "DetectModerationLabels": { - "input": { - "type": "structure", - "required": [ - "Image" - ], - "members": { - "Image": { - "shape": "S2" - }, - "MinConfidence": { - "type": "float" - } - } - }, - "output": { - "type": "structure", - "members": { - "ModerationLabels": { - "type": "list", - "member": { - "type": "structure", - "members": { - "Confidence": { - "type": "float" - }, - "Name": {}, - "ParentName": {} - } - } - } - } - } - }, - "GetCelebrityInfo": { - "input": { - "type": "structure", - "required": [ - "Id" - ], - "members": { - "Id": {} - } - }, - "output": { - "type": "structure", - "members": { - "Urls": { - "shape": "S1u" - }, - "Name": {} - } - } - }, - "IndexFaces": { - "input": { - "type": "structure", - "required": [ - "CollectionId", - "Image" - ], - "members": { - "CollectionId": {}, - "Image": { - "shape": "S2" - }, - "ExternalImageId": {}, - "DetectionAttributes": { - "shape": "S10" - } - } - }, - "output": { - "type": "structure", - "members": { - "FaceRecords": { - "type": "list", - "member": { - "type": "structure", - "members": { - "Face": { - "shape": "S21" - }, - "FaceDetail": { - "shape": "S14" - } - } - } - }, - "OrientationCorrection": {} - } - } - }, - "ListCollections": { - "input": { - "type": "structure", - "members": { - "NextToken": {}, - "MaxResults": { - "type": "integer" - } - } - }, - "output": { - "type": "structure", - "members": { - "CollectionIds": { - "type": "list", - "member": {} - }, - "NextToken": {} - } - } - }, - "ListFaces": { - "input": { - "type": "structure", - "required": [ - "CollectionId" - ], - "members": { - "CollectionId": {}, - "NextToken": {}, - "MaxResults": { - "type": "integer" - } - } - }, - "output": { - "type": "structure", - "members": { - "Faces": { - "type": "list", - "member": { - "shape": "S21" - } - }, - "NextToken": {} - } - } - }, - "RecognizeCelebrities": { - "input": { - "type": "structure", - "required": [ - "Image" - ], - "members": { - "Image": { - "shape": "S2" - } - } - }, - "output": { - "type": "structure", - "members": { - "CelebrityFaces": { - "type": "list", - "member": { - "type": "structure", - "members": { - "Urls": { - "shape": "S1u" - }, - "Name": {}, - "Id": {}, - "Face": { - "shape": "Sf" - }, - "MatchConfidence": { - "type": "float" - } - } - } - }, - "UnrecognizedFaces": { - "type": "list", - "member": { - "shape": "Sf" - } - }, - "OrientationCorrection": {} - } - } - }, - "SearchFaces": { - "input": { - "type": "structure", - "required": [ - "CollectionId", - "FaceId" - ], - "members": { - "CollectionId": {}, - "FaceId": {}, - "MaxFaces": { - "type": "integer" - }, - "FaceMatchThreshold": { - "type": "float" - } - } - }, - "output": { - "type": "structure", - "members": { - "SearchedFaceId": {}, - "FaceMatches": { - "shape": "S2j" - } - } - } - }, - "SearchFacesByImage": { - "input": { - "type": "structure", - "required": [ - "CollectionId", - "Image" - ], - "members": { - "CollectionId": {}, - "Image": { - "shape": "S2" - }, - "MaxFaces": { - "type": "integer" - }, - "FaceMatchThreshold": { - "type": "float" - } - } - }, - "output": { - "type": "structure", - "members": { - "SearchedFaceBoundingBox": { - "shape": "Sb" - }, - "SearchedFaceConfidence": { - "type": "float" - }, - "FaceMatches": { - "shape": "S2j" - } - } - } - } - }, - "shapes": { - "S2": { - "type": "structure", - "members": { - "Bytes": { - "type": "blob" - }, - "S3Object": { - "type": "structure", - "members": { - "Bucket": {}, - "Name": {}, - "Version": {} - } - } - } - }, - "Sb": { - "type": "structure", - "members": { - "Width": { - "type": "float" - }, - "Height": { - "type": "float" - }, - "Left": { - "type": "float" - }, - "Top": { - "type": "float" - } - } - }, - "Sf": { - "type": "structure", - "members": { - "BoundingBox": { - "shape": "Sb" - }, - "Confidence": { - "type": "float" - }, - "Landmarks": { - "shape": "Sg" - }, - "Pose": { - "shape": "Sj" - }, - "Quality": { - "shape": "Sl" - } - } - }, - "Sg": { - "type": "list", - "member": { - "type": "structure", - "members": { - "Type": {}, - "X": { - "type": "float" - }, - "Y": { - "type": "float" - } - } - } - }, - "Sj": { - "type": "structure", - "members": { - "Roll": { - "type": "float" - }, - "Yaw": { - "type": "float" - }, - "Pitch": { - "type": "float" - } - } - }, - "Sl": { - "type": "structure", - "members": { - "Brightness": { - "type": "float" - }, - "Sharpness": { - "type": "float" - } - } - }, - "Sw": { - "type": "list", - "member": {} - }, - "S10": { - "type": "list", - "member": {} - }, - "S14": { - "type": "structure", - "members": { - "BoundingBox": { - "shape": "Sb" - }, - "AgeRange": { - "type": "structure", - "members": { - "Low": { - "type": "integer" - }, - "High": { - "type": "integer" - } - } - }, - "Smile": { - "type": "structure", - "members": { - "Value": { - "type": "boolean" - }, - "Confidence": { - "type": "float" - } - } - }, - "Eyeglasses": { - "type": "structure", - "members": { - "Value": { - "type": "boolean" - }, - "Confidence": { - "type": "float" - } - } - }, - "Sunglasses": { - "type": "structure", - "members": { - "Value": { - "type": "boolean" - }, - "Confidence": { - "type": "float" - } - } - }, - "Gender": { - "type": "structure", - "members": { - "Value": {}, - "Confidence": { - "type": "float" - } - } - }, - "Beard": { - "type": "structure", - "members": { - "Value": { - "type": "boolean" - }, - "Confidence": { - "type": "float" - } - } - }, - "Mustache": { - "type": "structure", - "members": { - "Value": { - "type": "boolean" - }, - "Confidence": { - "type": "float" - } - } - }, - "EyesOpen": { - "type": "structure", - "members": { - "Value": { - "type": "boolean" - }, - "Confidence": { - "type": "float" - } - } - }, - "MouthOpen": { - "type": "structure", - "members": { - "Value": { - "type": "boolean" - }, - "Confidence": { - "type": "float" - } - } - }, - "Emotions": { - "type": "list", - "member": { - "type": "structure", - "members": { - "Type": {}, - "Confidence": { - "type": "float" - } - } - } - }, - "Landmarks": { - "shape": "Sg" - }, - "Pose": { - "shape": "Sj" - }, - "Quality": { - "shape": "Sl" - }, - "Confidence": { - "type": "float" - } - } - }, - "S1u": { - "type": "list", - "member": {} - }, - "S21": { - "type": "structure", - "members": { - "FaceId": {}, - "BoundingBox": { - "shape": "Sb" - }, - "ImageId": {}, - "ExternalImageId": {}, - "Confidence": { - "type": "float" - } - } - }, - "S2j": { - "type": "list", - "member": { - "type": "structure", - "members": { - "Similarity": { - "type": "float" - }, - "Face": { - "shape": "S21" - } - } - } - } - } -} \ No newline at end of file diff --git a/workshops/monte-carlo-on-ec2-spot-fleet/src/web/node_modules/aws-sdk/apis/rekognition-2016-06-27.paginators.json b/workshops/monte-carlo-on-ec2-spot-fleet/src/web/node_modules/aws-sdk/apis/rekognition-2016-06-27.paginators.json deleted file mode 100644 index 69bb561a..00000000 --- a/workshops/monte-carlo-on-ec2-spot-fleet/src/web/node_modules/aws-sdk/apis/rekognition-2016-06-27.paginators.json +++ /dev/null @@ -1,16 +0,0 @@ -{ - "pagination": { - "ListCollections": { - "input_token": "NextToken", - "limit_key": "MaxResults", - "output_token": "NextToken", - "result_key": "CollectionIds" - }, - "ListFaces": { - "input_token": "NextToken", - "limit_key": "MaxResults", - "output_token": "NextToken", - "result_key": "Faces" - } - } -} \ No newline at end of file diff --git a/workshops/monte-carlo-on-ec2-spot-fleet/src/web/node_modules/aws-sdk/apis/resourcegroupstaggingapi-2017-01-26.examples.json b/workshops/monte-carlo-on-ec2-spot-fleet/src/web/node_modules/aws-sdk/apis/resourcegroupstaggingapi-2017-01-26.examples.json deleted file mode 100644 index 0ea7e3b0..00000000 --- a/workshops/monte-carlo-on-ec2-spot-fleet/src/web/node_modules/aws-sdk/apis/resourcegroupstaggingapi-2017-01-26.examples.json +++ /dev/null @@ -1,5 +0,0 @@ -{ - "version": "1.0", - "examples": { - } -} diff --git a/workshops/monte-carlo-on-ec2-spot-fleet/src/web/node_modules/aws-sdk/apis/resourcegroupstaggingapi-2017-01-26.min.json b/workshops/monte-carlo-on-ec2-spot-fleet/src/web/node_modules/aws-sdk/apis/resourcegroupstaggingapi-2017-01-26.min.json deleted file mode 100644 index 588d579a..00000000 --- a/workshops/monte-carlo-on-ec2-spot-fleet/src/web/node_modules/aws-sdk/apis/resourcegroupstaggingapi-2017-01-26.min.json +++ /dev/null @@ -1,188 +0,0 @@ -{ - "version": "2.0", - "metadata": { - "apiVersion": "2017-01-26", - "endpointPrefix": "tagging", - "jsonVersion": "1.1", - "protocol": "json", - "serviceFullName": "AWS Resource Groups Tagging API", - "signatureVersion": "v4", - "targetPrefix": "ResourceGroupsTaggingAPI_20170126", - "uid": "resourcegroupstaggingapi-2017-01-26" - }, - "operations": { - "GetResources": { - "input": { - "type": "structure", - "members": { - "PaginationToken": {}, - "TagFilters": { - "type": "list", - "member": { - "type": "structure", - "members": { - "Key": {}, - "Values": { - "type": "list", - "member": {} - } - } - } - }, - "ResourcesPerPage": { - "type": "integer" - }, - "TagsPerPage": { - "type": "integer" - }, - "ResourceTypeFilters": { - "type": "list", - "member": {} - } - } - }, - "output": { - "type": "structure", - "members": { - "PaginationToken": {}, - "ResourceTagMappingList": { - "type": "list", - "member": { - "type": "structure", - "members": { - "ResourceARN": {}, - "Tags": { - "type": "list", - "member": { - "type": "structure", - "required": [ - "Key", - "Value" - ], - "members": { - "Key": {}, - "Value": {} - } - } - } - } - } - } - } - } - }, - "GetTagKeys": { - "input": { - "type": "structure", - "members": { - "PaginationToken": {} - } - }, - "output": { - "type": "structure", - "members": { - "PaginationToken": {}, - "TagKeys": { - "type": "list", - "member": {} - } - } - } - }, - "GetTagValues": { - "input": { - "type": "structure", - "required": [ - "Key" - ], - "members": { - "PaginationToken": {}, - "Key": {} - } - }, - "output": { - "type": "structure", - "members": { - "PaginationToken": {}, - "TagValues": { - "type": "list", - "member": {} - } - } - } - }, - "TagResources": { - "input": { - "type": "structure", - "required": [ - "ResourceARNList", - "Tags" - ], - "members": { - "ResourceARNList": { - "shape": "Sp" - }, - "Tags": { - "type": "map", - "key": {}, - "value": {} - } - } - }, - "output": { - "type": "structure", - "members": { - "FailedResourcesMap": { - "shape": "Ss" - } - } - } - }, - "UntagResources": { - "input": { - "type": "structure", - "required": [ - "ResourceARNList", - "TagKeys" - ], - "members": { - "ResourceARNList": { - "shape": "Sp" - }, - "TagKeys": { - "type": "list", - "member": {} - } - } - }, - "output": { - "type": "structure", - "members": { - "FailedResourcesMap": { - "shape": "Ss" - } - } - } - } - }, - "shapes": { - "Sp": { - "type": "list", - "member": {} - }, - "Ss": { - "type": "map", - "key": {}, - "value": { - "type": "structure", - "members": { - "StatusCode": { - "type": "integer" - }, - "ErrorCode": {}, - "ErrorMessage": {} - } - } - } - } -} \ No newline at end of file diff --git a/workshops/monte-carlo-on-ec2-spot-fleet/src/web/node_modules/aws-sdk/apis/resourcegroupstaggingapi-2017-01-26.paginators.json b/workshops/monte-carlo-on-ec2-spot-fleet/src/web/node_modules/aws-sdk/apis/resourcegroupstaggingapi-2017-01-26.paginators.json deleted file mode 100644 index 7bff285b..00000000 --- a/workshops/monte-carlo-on-ec2-spot-fleet/src/web/node_modules/aws-sdk/apis/resourcegroupstaggingapi-2017-01-26.paginators.json +++ /dev/null @@ -1,20 +0,0 @@ -{ - "pagination": { - "GetResources": { - "input_token": "PaginationToken", - "limit_key": "ResourcesPerPage", - "output_token": "PaginationToken", - "result_key": "ResourceTagMappingList" - }, - "GetTagKeys": { - "input_token": "PaginationToken", - "output_token": "PaginationToken", - "result_key": "TagKeys" - }, - "GetTagValues": { - "input_token": "PaginationToken", - "output_token": "PaginationToken", - "result_key": "TagValues" - } - } -} \ No newline at end of file diff --git a/workshops/monte-carlo-on-ec2-spot-fleet/src/web/node_modules/aws-sdk/apis/route53-2013-04-01.examples.json b/workshops/monte-carlo-on-ec2-spot-fleet/src/web/node_modules/aws-sdk/apis/route53-2013-04-01.examples.json deleted file mode 100644 index d757c2b9..00000000 --- a/workshops/monte-carlo-on-ec2-spot-fleet/src/web/node_modules/aws-sdk/apis/route53-2013-04-01.examples.json +++ /dev/null @@ -1,762 +0,0 @@ -{ - "version": "1.0", - "examples": { - "AssociateVPCWithHostedZone": [ - { - "input": { - "Comment": "", - "HostedZoneId": "Z3M3LMPEXAMPLE", - "VPC": { - "VPCId": "vpc-1a2b3c4d", - "VPCRegion": "us-east-2" - } - }, - "output": { - "ChangeInfo": { - "Comment": "", - "Id": "/change/C3HC6WDB2UANE2", - "Status": "INSYNC", - "SubmittedAt": "2017-01-31T01:36:41.958Z" - } - }, - "comments": { - "input": { - }, - "output": { - "Status": "Valid values are PENDING and INSYNC.", - "SubmittedAt": "The date and time are in Coordinated Universal Time (UTC) and ISO 8601 format." - } - }, - "description": "The following example associates the VPC with ID vpc-1a2b3c4d with the hosted zone with ID Z3M3LMPEXAMPLE.", - "id": "to-associate-a-vpc-with-a-hosted-zone-1484069228699", - "title": "To associate a VPC with a hosted zone" - } - ], - "ChangeResourceRecordSets": [ - { - "input": { - "ChangeBatch": { - "Changes": [ - { - "Action": "CREATE", - "ResourceRecordSet": { - "Name": "example.com", - "ResourceRecords": [ - { - "Value": "192.0.2.44" - } - ], - "TTL": 60, - "Type": "A" - } - } - ], - "Comment": "Web server for example.com" - }, - "HostedZoneId": "Z3M3LMPEXAMPLE" - }, - "output": { - "ChangeInfo": { - "Comment": "Web server for example.com", - "Id": "/change/C2682N5HXP0BZ4", - "Status": "PENDING", - "SubmittedAt": "2017-02-10T01:36:41.958Z" - } - }, - "comments": { - "input": { - "Action": "Valid values: CREATE, DELETE, UPSERT", - "TTL": "The amount of time in seconds that you want DNS resolvers to cache the values in this resource record set before submitting another request to Route 53", - "Value": "The value that is applicable to the value of Type. For example, if Type is A, Value is an IPv4 address" - }, - "output": { - "SubmittedAt": "The date and time are in Coordinated Universal Time (UTC) and ISO 8601 format." - } - }, - "description": "The following example creates a resource record set that routes Internet traffic to a resource with an IP address of 192.0.2.44.", - "id": "to-create-update-or-delete-resource-record-sets-1484344703668", - "title": "To create a basic resource record set" - }, - { - "input": { - "ChangeBatch": { - "Changes": [ - { - "Action": "CREATE", - "ResourceRecordSet": { - "HealthCheckId": "abcdef11-2222-3333-4444-555555fedcba", - "Name": "example.com", - "ResourceRecords": [ - { - "Value": "192.0.2.44" - } - ], - "SetIdentifier": "Seattle data center", - "TTL": 60, - "Type": "A", - "Weight": 100 - } - }, - { - "Action": "CREATE", - "ResourceRecordSet": { - "HealthCheckId": "abcdef66-7777-8888-9999-000000fedcba", - "Name": "example.com", - "ResourceRecords": [ - { - "Value": "192.0.2.45" - } - ], - "SetIdentifier": "Portland data center", - "TTL": 60, - "Type": "A", - "Weight": 200 - } - } - ], - "Comment": "Web servers for example.com" - }, - "HostedZoneId": "Z3M3LMPEXAMPLE" - }, - "output": { - "ChangeInfo": { - "Comment": "Web servers for example.com", - "Id": "/change/C2682N5HXP0BZ4", - "Status": "PENDING", - "SubmittedAt": "2017-02-10T01:36:41.958Z" - } - }, - "comments": { - "input": { - "Action": "Valid values: CREATE, DELETE, UPSERT", - "TTL": "The amount of time in seconds that you want DNS resolvers to cache the values in this resource record set before submitting another request to Route 53. TTLs must be the same for all weighted resource record sets that have the same name and type.", - "Value": "The value that is applicable to the value of Type. For example, if Type is A, Value is an IPv4 address" - }, - "output": { - "SubmittedAt": "The date and time are in Coordinated Universal Time (UTC) and ISO 8601 format." - } - }, - "description": "The following example creates two weighted resource record sets. The resource with a Weight of 100 will get 1/3rd of traffic (100/100+200), and the other resource will get the rest of the traffic for example.com.", - "id": "to-create-weighted-resource-record-sets-1484348208522", - "title": "To create weighted resource record sets" - }, - { - "input": { - "ChangeBatch": { - "Changes": [ - { - "Action": "CREATE", - "ResourceRecordSet": { - "AliasTarget": { - "DNSName": "d123rk29d0stfj.cloudfront.net", - "EvaluateTargetHealth": false, - "HostedZoneId": "Z2FDTNDATAQYW2" - }, - "Name": "example.com", - "Type": "A" - } - } - ], - "Comment": "CloudFront distribution for example.com" - }, - "HostedZoneId": "Z3M3LMPEXAMPLE" - }, - "output": { - "ChangeInfo": { - "Comment": "CloudFront distribution for example.com", - "Id": "/change/C2682N5HXP0BZ4", - "Status": "PENDING", - "SubmittedAt": "2017-02-10T01:36:41.958Z" - } - }, - "comments": { - "input": { - "Action": "Valid values: CREATE, DELETE, UPSERT", - "DNSName": "The DNS name assigned to the resource", - "HostedZoneId": "Depends on the type of resource that you want to route traffic to", - "Type": "A or AAAA, depending on the type of resource that you want to route traffic to" - }, - "output": { - "SubmittedAt": "The date and time are in Coordinated Universal Time (UTC) and ISO 8601 format." - } - }, - "description": "The following example creates an alias resource record set that routes traffic to a CloudFront distribution.", - "id": "to-create-an-alias-resource-record-set-1484348404062", - "title": "To create an alias resource record set" - }, - { - "input": { - "ChangeBatch": { - "Changes": [ - { - "Action": "CREATE", - "ResourceRecordSet": { - "AliasTarget": { - "DNSName": "example-com-123456789.us-east-2.elb.amazonaws.com ", - "EvaluateTargetHealth": true, - "HostedZoneId": "Z3AADJGX6KTTL2" - }, - "Name": "example.com", - "SetIdentifier": "Ohio region", - "Type": "A", - "Weight": 100 - } - }, - { - "Action": "CREATE", - "ResourceRecordSet": { - "AliasTarget": { - "DNSName": "example-com-987654321.us-west-2.elb.amazonaws.com ", - "EvaluateTargetHealth": true, - "HostedZoneId": "Z1H1FL5HABSF5" - }, - "Name": "example.com", - "SetIdentifier": "Oregon region", - "Type": "A", - "Weight": 200 - } - } - ], - "Comment": "ELB load balancers for example.com" - }, - "HostedZoneId": "Z3M3LMPEXAMPLE" - }, - "output": { - "ChangeInfo": { - "Comment": "ELB load balancers for example.com", - "Id": "/change/C2682N5HXP0BZ4", - "Status": "PENDING", - "SubmittedAt": "2017-02-10T01:36:41.958Z" - } - }, - "comments": { - "input": { - "Action": "Valid values: CREATE, DELETE, UPSERT", - "DNSName": "The DNS name assigned to the resource", - "HostedZoneId": "Depends on the type of resource that you want to route traffic to", - "Type": "A or AAAA, depending on the type of resource that you want to route traffic to" - }, - "output": { - "SubmittedAt": "The date and time are in Coordinated Universal Time (UTC) and ISO 8601 format." - } - }, - "description": "The following example creates two weighted alias resource record sets that route traffic to ELB load balancers. The resource with a Weight of 100 will get 1/3rd of traffic (100/100+200), and the other resource will get the rest of the traffic for example.com.", - "id": "to-create-weighted-alias-resource-record-sets-1484349467416", - "title": "To create weighted alias resource record sets" - }, - { - "input": { - "ChangeBatch": { - "Changes": [ - { - "Action": "CREATE", - "ResourceRecordSet": { - "HealthCheckId": "abcdef11-2222-3333-4444-555555fedcba", - "Name": "example.com", - "Region": "us-east-2", - "ResourceRecords": [ - { - "Value": "192.0.2.44" - } - ], - "SetIdentifier": "Ohio region", - "TTL": 60, - "Type": "A" - } - }, - { - "Action": "CREATE", - "ResourceRecordSet": { - "HealthCheckId": "abcdef66-7777-8888-9999-000000fedcba", - "Name": "example.com", - "Region": "us-west-2", - "ResourceRecords": [ - { - "Value": "192.0.2.45" - } - ], - "SetIdentifier": "Oregon region", - "TTL": 60, - "Type": "A" - } - } - ], - "Comment": "EC2 instances for example.com" - }, - "HostedZoneId": "Z3M3LMPEXAMPLE" - }, - "output": { - "ChangeInfo": { - "Comment": "EC2 instances for example.com", - "Id": "/change/C2682N5HXP0BZ4", - "Status": "PENDING", - "SubmittedAt": "2017-02-10T01:36:41.958Z" - } - }, - "comments": { - "input": { - "Action": "Valid values: CREATE, DELETE, UPSERT", - "TTL": "The amount of time in seconds that you want DNS resolvers to cache the values in this resource record set before submitting another request to Route 53", - "Value": "The value that is applicable to the value of Type. For example, if Type is A, Value is an IPv4 address" - }, - "output": { - "SubmittedAt": "The date and time are in Coordinated Universal Time (UTC) and ISO 8601 format." - } - }, - "description": "The following example creates two latency resource record sets that route traffic to EC2 instances. Traffic for example.com is routed either to the Ohio region or the Oregon region, depending on the latency between the user and those regions.", - "id": "to-create-latency-resource-record-sets-1484350219917", - "title": "To create latency resource record sets" - }, - { - "input": { - "ChangeBatch": { - "Changes": [ - { - "Action": "CREATE", - "ResourceRecordSet": { - "AliasTarget": { - "DNSName": "example-com-123456789.us-east-2.elb.amazonaws.com ", - "EvaluateTargetHealth": true, - "HostedZoneId": "Z3AADJGX6KTTL2" - }, - "Name": "example.com", - "Region": "us-east-2", - "SetIdentifier": "Ohio region", - "Type": "A" - } - }, - { - "Action": "CREATE", - "ResourceRecordSet": { - "AliasTarget": { - "DNSName": "example-com-987654321.us-west-2.elb.amazonaws.com ", - "EvaluateTargetHealth": true, - "HostedZoneId": "Z1H1FL5HABSF5" - }, - "Name": "example.com", - "Region": "us-west-2", - "SetIdentifier": "Oregon region", - "Type": "A" - } - } - ], - "Comment": "ELB load balancers for example.com" - }, - "HostedZoneId": "Z3M3LMPEXAMPLE" - }, - "output": { - "ChangeInfo": { - "Comment": "ELB load balancers for example.com", - "Id": "/change/C2682N5HXP0BZ4", - "Status": "PENDING", - "SubmittedAt": "2017-02-10T01:36:41.958Z" - } - }, - "comments": { - "input": { - "Action": "Valid values: CREATE, DELETE, UPSERT", - "DNSName": "The DNS name assigned to the resource", - "HostedZoneId": "Depends on the type of resource that you want to route traffic to", - "Type": "A or AAAA, depending on the type of resource that you want to route traffic to" - }, - "output": { - "SubmittedAt": "The date and time are in Coordinated Universal Time (UTC) and ISO 8601 format." - } - }, - "description": "The following example creates two latency alias resource record sets that route traffic for example.com to ELB load balancers. Requests are routed either to the Ohio region or the Oregon region, depending on the latency between the user and those regions.", - "id": "to-create-latency-alias-resource-record-sets-1484601774179", - "title": "To create latency alias resource record sets" - }, - { - "input": { - "ChangeBatch": { - "Changes": [ - { - "Action": "CREATE", - "ResourceRecordSet": { - "Failover": "PRIMARY", - "HealthCheckId": "abcdef11-2222-3333-4444-555555fedcba", - "Name": "example.com", - "ResourceRecords": [ - { - "Value": "192.0.2.44" - } - ], - "SetIdentifier": "Ohio region", - "TTL": 60, - "Type": "A" - } - }, - { - "Action": "CREATE", - "ResourceRecordSet": { - "Failover": "SECONDARY", - "HealthCheckId": "abcdef66-7777-8888-9999-000000fedcba", - "Name": "example.com", - "ResourceRecords": [ - { - "Value": "192.0.2.45" - } - ], - "SetIdentifier": "Oregon region", - "TTL": 60, - "Type": "A" - } - } - ], - "Comment": "Failover configuration for example.com" - }, - "HostedZoneId": "Z3M3LMPEXAMPLE" - }, - "output": { - "ChangeInfo": { - "Comment": "Failover configuration for example.com", - "Id": "/change/C2682N5HXP0BZ4", - "Status": "PENDING", - "SubmittedAt": "2017-02-10T01:36:41.958Z" - } - }, - "comments": { - "input": { - "Action": "Valid values: CREATE, DELETE, UPSERT", - "TTL": "The amount of time in seconds that you want DNS resolvers to cache the values in this resource record set before submitting another request to Route 53", - "Value": "The value that is applicable to the value of Type. For example, if Type is A, Value is an IPv4 address" - }, - "output": { - "SubmittedAt": "The date and time are in Coordinated Universal Time (UTC) and ISO 8601 format." - } - }, - "description": "The following example creates primary and secondary failover resource record sets that route traffic to EC2 instances. Traffic is generally routed to the primary resource, in the Ohio region. If that resource is unavailable, traffic is routed to the secondary resource, in the Oregon region.", - "id": "to-create-failover-resource-record-sets-1484604541740", - "title": "To create failover resource record sets" - }, - { - "input": { - "ChangeBatch": { - "Changes": [ - { - "Action": "CREATE", - "ResourceRecordSet": { - "AliasTarget": { - "DNSName": "example-com-123456789.us-east-2.elb.amazonaws.com ", - "EvaluateTargetHealth": true, - "HostedZoneId": "Z3AADJGX6KTTL2" - }, - "Failover": "PRIMARY", - "Name": "example.com", - "SetIdentifier": "Ohio region", - "Type": "A" - } - }, - { - "Action": "CREATE", - "ResourceRecordSet": { - "AliasTarget": { - "DNSName": "example-com-987654321.us-west-2.elb.amazonaws.com ", - "EvaluateTargetHealth": true, - "HostedZoneId": "Z1H1FL5HABSF5" - }, - "Failover": "SECONDARY", - "Name": "example.com", - "SetIdentifier": "Oregon region", - "Type": "A" - } - } - ], - "Comment": "Failover alias configuration for example.com" - }, - "HostedZoneId": "Z3M3LMPEXAMPLE" - }, - "output": { - "ChangeInfo": { - "Comment": "Failover alias configuration for example.com", - "Id": "/change/C2682N5HXP0BZ4", - "Status": "PENDING", - "SubmittedAt": "2017-02-10T01:36:41.958Z" - } - }, - "comments": { - "input": { - "Action": "Valid values: CREATE, DELETE, UPSERT", - "DNSName": "The DNS name assigned to the resource", - "HostedZoneId": "Depends on the type of resource that you want to route traffic to", - "Type": "A or AAAA, depending on the type of resource that you want to route traffic to" - }, - "output": { - "SubmittedAt": "The date and time are in Coordinated Universal Time (UTC) and ISO 8601 format." - } - }, - "description": "The following example creates primary and secondary failover alias resource record sets that route traffic to ELB load balancers. Traffic is generally routed to the primary resource, in the Ohio region. If that resource is unavailable, traffic is routed to the secondary resource, in the Oregon region.", - "id": "to-create-failover-alias-resource-record-sets-1484607497724", - "title": "To create failover alias resource record sets" - }, - { - "input": { - "ChangeBatch": { - "Changes": [ - { - "Action": "CREATE", - "ResourceRecordSet": { - "GeoLocation": { - "ContinentCode": "NA" - }, - "Name": "example.com", - "ResourceRecords": [ - { - "Value": "192.0.2.44" - } - ], - "SetIdentifier": "North America", - "TTL": 60, - "Type": "A" - } - }, - { - "Action": "CREATE", - "ResourceRecordSet": { - "GeoLocation": { - "ContinentCode": "SA" - }, - "Name": "example.com", - "ResourceRecords": [ - { - "Value": "192.0.2.45" - } - ], - "SetIdentifier": "South America", - "TTL": 60, - "Type": "A" - } - }, - { - "Action": "CREATE", - "ResourceRecordSet": { - "GeoLocation": { - "ContinentCode": "EU" - }, - "Name": "example.com", - "ResourceRecords": [ - { - "Value": "192.0.2.46" - } - ], - "SetIdentifier": "Europe", - "TTL": 60, - "Type": "A" - } - }, - { - "Action": "CREATE", - "ResourceRecordSet": { - "GeoLocation": { - "CountryCode": "*" - }, - "Name": "example.com", - "ResourceRecords": [ - { - "Value": "192.0.2.47" - } - ], - "SetIdentifier": "Other locations", - "TTL": 60, - "Type": "A" - } - } - ], - "Comment": "Geolocation configuration for example.com" - }, - "HostedZoneId": "Z3M3LMPEXAMPLE" - }, - "output": { - "ChangeInfo": { - "Comment": "Geolocation configuration for example.com", - "Id": "/change/C2682N5HXP0BZ4", - "Status": "PENDING", - "SubmittedAt": "2017-02-10T01:36:41.958Z" - } - }, - "comments": { - "input": { - "Action": "Valid values: CREATE, DELETE, UPSERT", - "TTL": "The amount of time in seconds that you want DNS resolvers to cache the values in this resource record set before submitting another request to Route 53", - "Value": "The value that is applicable to the value of Type. For example, if Type is A, Value is an IPv4 address" - }, - "output": { - "SubmittedAt": "The date and time are in Coordinated Universal Time (UTC) and ISO 8601 format." - } - }, - "description": "The following example creates four geolocation resource record sets that use IPv4 addresses to route traffic to resources such as web servers running on EC2 instances. Traffic is routed to one of four IP addresses, for North America (NA), for South America (SA), for Europe (EU), and for all other locations (*).", - "id": "to-create-geolocation-resource-record-sets-1484612462466", - "title": "To create geolocation resource record sets" - }, - { - "input": { - "ChangeBatch": { - "Changes": [ - { - "Action": "CREATE", - "ResourceRecordSet": { - "AliasTarget": { - "DNSName": "example-com-123456789.us-east-2.elb.amazonaws.com ", - "EvaluateTargetHealth": true, - "HostedZoneId": "Z3AADJGX6KTTL2" - }, - "GeoLocation": { - "ContinentCode": "NA" - }, - "Name": "example.com", - "SetIdentifier": "North America", - "Type": "A" - } - }, - { - "Action": "CREATE", - "ResourceRecordSet": { - "AliasTarget": { - "DNSName": "example-com-234567890.sa-east-1.elb.amazonaws.com ", - "EvaluateTargetHealth": true, - "HostedZoneId": "Z2P70J7HTTTPLU" - }, - "GeoLocation": { - "ContinentCode": "SA" - }, - "Name": "example.com", - "SetIdentifier": "South America", - "Type": "A" - } - }, - { - "Action": "CREATE", - "ResourceRecordSet": { - "AliasTarget": { - "DNSName": "example-com-234567890.eu-central-1.elb.amazonaws.com ", - "EvaluateTargetHealth": true, - "HostedZoneId": "Z215JYRZR1TBD5" - }, - "GeoLocation": { - "ContinentCode": "EU" - }, - "Name": "example.com", - "SetIdentifier": "Europe", - "Type": "A" - } - }, - { - "Action": "CREATE", - "ResourceRecordSet": { - "AliasTarget": { - "DNSName": "example-com-234567890.ap-southeast-1.elb.amazonaws.com ", - "EvaluateTargetHealth": true, - "HostedZoneId": "Z1LMS91P8CMLE5" - }, - "GeoLocation": { - "CountryCode": "*" - }, - "Name": "example.com", - "SetIdentifier": "Other locations", - "Type": "A" - } - } - ], - "Comment": "Geolocation alias configuration for example.com" - }, - "HostedZoneId": "Z3M3LMPEXAMPLE" - }, - "output": { - "ChangeInfo": { - "Comment": "Geolocation alias configuration for example.com", - "Id": "/change/C2682N5HXP0BZ4", - "Status": "PENDING", - "SubmittedAt": "2017-02-10T01:36:41.958Z" - } - }, - "comments": { - "input": { - "Action": "Valid values: CREATE, DELETE, UPSERT", - "DNSName": "The DNS name assigned to the resource", - "HostedZoneId": "Depends on the type of resource that you want to route traffic to", - "Type": "A or AAAA, depending on the type of resource that you want to route traffic to" - }, - "output": { - "SubmittedAt": "The date and time are in Coordinated Universal Time (UTC) and ISO 8601 format." - } - }, - "description": "The following example creates four geolocation alias resource record sets that route traffic to ELB load balancers. Traffic is routed to one of four IP addresses, for North America (NA), for South America (SA), for Europe (EU), and for all other locations (*).", - "id": "to-create-geolocation-alias-resource-record-sets-1484612871203", - "title": "To create geolocation alias resource record sets" - } - ], - "ChangeTagsForResource": [ - { - "input": { - "AddTags": [ - { - "Key": "apex", - "Value": "3874" - }, - { - "Key": "acme", - "Value": "4938" - } - ], - "RemoveTagKeys": [ - "Nadir" - ], - "ResourceId": "Z3M3LMPEXAMPLE", - "ResourceType": "hostedzone" - }, - "output": { - }, - "comments": { - "input": { - "ResourceType": "Valid values are healthcheck and hostedzone." - }, - "output": { - } - }, - "description": "The following example adds two tags and removes one tag from the hosted zone with ID Z3M3LMPEXAMPLE.", - "id": "to-add-or-remove-tags-from-a-hosted-zone-or-health-check-1484084752409", - "title": "To add or remove tags from a hosted zone or health check" - } - ], - "GetHostedZone": [ - { - "input": { - "Id": "Z3M3LMPEXAMPLE" - }, - "output": { - "DelegationSet": { - "NameServers": [ - "ns-2048.awsdns-64.com", - "ns-2049.awsdns-65.net", - "ns-2050.awsdns-66.org", - "ns-2051.awsdns-67.co.uk" - ] - }, - "HostedZone": { - "CallerReference": "C741617D-04E4-F8DE-B9D7-0D150FC61C2E", - "Config": { - "PrivateZone": false - }, - "Id": "/hostedzone/Z3M3LMPEXAMPLE", - "Name": "myawsbucket.com.", - "ResourceRecordSetCount": 8 - } - }, - "comments": { - "input": { - }, - "output": { - "Id": "The ID of the hosted zone that you specified in the GetHostedZone request.", - "Name": "The name of the hosted zone.", - "NameServers": "The servers that you specify in your domain configuration.", - "PrivateZone": "True if this is a private hosted zone, false if it's a public hosted zone." - } - }, - "description": "The following example gets information about the Z3M3LMPEXAMPLE hosted zone.", - "id": "to-get-information-about-a-hosted-zone-1481752361124", - "title": "To get information about a hosted zone" - } - ] - } -} diff --git a/workshops/monte-carlo-on-ec2-spot-fleet/src/web/node_modules/aws-sdk/apis/route53-2013-04-01.min.json b/workshops/monte-carlo-on-ec2-spot-fleet/src/web/node_modules/aws-sdk/apis/route53-2013-04-01.min.json deleted file mode 100644 index 0de496db..00000000 --- a/workshops/monte-carlo-on-ec2-spot-fleet/src/web/node_modules/aws-sdk/apis/route53-2013-04-01.min.json +++ /dev/null @@ -1,2429 +0,0 @@ -{ - "version": "2.0", - "metadata": { - "apiVersion": "2013-04-01", - "endpointPrefix": "route53", - "globalEndpoint": "route53.amazonaws.com", - "protocol": "rest-xml", - "serviceAbbreviation": "Route 53", - "serviceFullName": "Amazon Route 53", - "signatureVersion": "v4", - "uid": "route53-2013-04-01" - }, - "operations": { - "AssociateVPCWithHostedZone": { - "http": { - "requestUri": "/2013-04-01/hostedzone/{Id}/associatevpc" - }, - "input": { - "locationName": "AssociateVPCWithHostedZoneRequest", - "xmlNamespace": { - "uri": "https://route53.amazonaws.com/doc/2013-04-01/" - }, - "type": "structure", - "required": [ - "HostedZoneId", - "VPC" - ], - "members": { - "HostedZoneId": { - "location": "uri", - "locationName": "Id" - }, - "VPC": { - "shape": "S3" - }, - "Comment": {} - } - }, - "output": { - "type": "structure", - "required": [ - "ChangeInfo" - ], - "members": { - "ChangeInfo": { - "shape": "S8" - } - } - } - }, - "ChangeResourceRecordSets": { - "http": { - "requestUri": "/2013-04-01/hostedzone/{Id}/rrset/" - }, - "input": { - "locationName": "ChangeResourceRecordSetsRequest", - "xmlNamespace": { - "uri": "https://route53.amazonaws.com/doc/2013-04-01/" - }, - "type": "structure", - "required": [ - "HostedZoneId", - "ChangeBatch" - ], - "members": { - "HostedZoneId": { - "location": "uri", - "locationName": "Id" - }, - "ChangeBatch": { - "type": "structure", - "required": [ - "Changes" - ], - "members": { - "Comment": {}, - "Changes": { - "type": "list", - "member": { - "locationName": "Change", - "type": "structure", - "required": [ - "Action", - "ResourceRecordSet" - ], - "members": { - "Action": {}, - "ResourceRecordSet": { - "shape": "Sh" - } - } - } - } - } - } - } - }, - "output": { - "type": "structure", - "required": [ - "ChangeInfo" - ], - "members": { - "ChangeInfo": { - "shape": "S8" - } - } - } - }, - "ChangeTagsForResource": { - "http": { - "requestUri": "/2013-04-01/tags/{ResourceType}/{ResourceId}" - }, - "input": { - "locationName": "ChangeTagsForResourceRequest", - "xmlNamespace": { - "uri": "https://route53.amazonaws.com/doc/2013-04-01/" - }, - "type": "structure", - "required": [ - "ResourceType", - "ResourceId" - ], - "members": { - "ResourceType": { - "location": "uri", - "locationName": "ResourceType" - }, - "ResourceId": { - "location": "uri", - "locationName": "ResourceId" - }, - "AddTags": { - "shape": "S15" - }, - "RemoveTagKeys": { - "type": "list", - "member": { - "locationName": "Key" - } - } - } - }, - "output": { - "type": "structure", - "members": {} - } - }, - "CreateHealthCheck": { - "http": { - "requestUri": "/2013-04-01/healthcheck", - "responseCode": 201 - }, - "input": { - "locationName": "CreateHealthCheckRequest", - "xmlNamespace": { - "uri": "https://route53.amazonaws.com/doc/2013-04-01/" - }, - "type": "structure", - "required": [ - "CallerReference", - "HealthCheckConfig" - ], - "members": { - "CallerReference": {}, - "HealthCheckConfig": { - "shape": "S1d" - } - } - }, - "output": { - "type": "structure", - "required": [ - "HealthCheck", - "Location" - ], - "members": { - "HealthCheck": { - "shape": "S1y" - }, - "Location": { - "location": "header", - "locationName": "Location" - } - } - } - }, - "CreateHostedZone": { - "http": { - "requestUri": "/2013-04-01/hostedzone", - "responseCode": 201 - }, - "input": { - "locationName": "CreateHostedZoneRequest", - "xmlNamespace": { - "uri": "https://route53.amazonaws.com/doc/2013-04-01/" - }, - "type": "structure", - "required": [ - "Name", - "CallerReference" - ], - "members": { - "Name": {}, - "VPC": { - "shape": "S3" - }, - "CallerReference": {}, - "HostedZoneConfig": { - "shape": "S2e" - }, - "DelegationSetId": {} - } - }, - "output": { - "type": "structure", - "required": [ - "HostedZone", - "ChangeInfo", - "DelegationSet", - "Location" - ], - "members": { - "HostedZone": { - "shape": "S2h" - }, - "ChangeInfo": { - "shape": "S8" - }, - "DelegationSet": { - "shape": "S2j" - }, - "VPC": { - "shape": "S3" - }, - "Location": { - "location": "header", - "locationName": "Location" - } - } - } - }, - "CreateQueryLoggingConfig": { - "http": { - "requestUri": "/2013-04-01/queryloggingconfig", - "responseCode": 201 - }, - "input": { - "locationName": "CreateQueryLoggingConfigRequest", - "xmlNamespace": { - "uri": "https://route53.amazonaws.com/doc/2013-04-01/" - }, - "type": "structure", - "required": [ - "HostedZoneId", - "CloudWatchLogsLogGroupArn" - ], - "members": { - "HostedZoneId": {}, - "CloudWatchLogsLogGroupArn": {} - } - }, - "output": { - "type": "structure", - "required": [ - "QueryLoggingConfig", - "Location" - ], - "members": { - "QueryLoggingConfig": { - "shape": "S2o" - }, - "Location": { - "location": "header", - "locationName": "Location" - } - } - } - }, - "CreateReusableDelegationSet": { - "http": { - "requestUri": "/2013-04-01/delegationset", - "responseCode": 201 - }, - "input": { - "locationName": "CreateReusableDelegationSetRequest", - "xmlNamespace": { - "uri": "https://route53.amazonaws.com/doc/2013-04-01/" - }, - "type": "structure", - "required": [ - "CallerReference" - ], - "members": { - "CallerReference": {}, - "HostedZoneId": {} - } - }, - "output": { - "type": "structure", - "required": [ - "DelegationSet", - "Location" - ], - "members": { - "DelegationSet": { - "shape": "S2j" - }, - "Location": { - "location": "header", - "locationName": "Location" - } - } - } - }, - "CreateTrafficPolicy": { - "http": { - "requestUri": "/2013-04-01/trafficpolicy", - "responseCode": 201 - }, - "input": { - "locationName": "CreateTrafficPolicyRequest", - "xmlNamespace": { - "uri": "https://route53.amazonaws.com/doc/2013-04-01/" - }, - "type": "structure", - "required": [ - "Name", - "Document" - ], - "members": { - "Name": {}, - "Document": {}, - "Comment": {} - } - }, - "output": { - "type": "structure", - "required": [ - "TrafficPolicy", - "Location" - ], - "members": { - "TrafficPolicy": { - "shape": "S2x" - }, - "Location": { - "location": "header", - "locationName": "Location" - } - } - } - }, - "CreateTrafficPolicyInstance": { - "http": { - "requestUri": "/2013-04-01/trafficpolicyinstance", - "responseCode": 201 - }, - "input": { - "locationName": "CreateTrafficPolicyInstanceRequest", - "xmlNamespace": { - "uri": "https://route53.amazonaws.com/doc/2013-04-01/" - }, - "type": "structure", - "required": [ - "HostedZoneId", - "Name", - "TTL", - "TrafficPolicyId", - "TrafficPolicyVersion" - ], - "members": { - "HostedZoneId": {}, - "Name": {}, - "TTL": { - "type": "long" - }, - "TrafficPolicyId": {}, - "TrafficPolicyVersion": { - "type": "integer" - } - } - }, - "output": { - "type": "structure", - "required": [ - "TrafficPolicyInstance", - "Location" - ], - "members": { - "TrafficPolicyInstance": { - "shape": "S32" - }, - "Location": { - "location": "header", - "locationName": "Location" - } - } - } - }, - "CreateTrafficPolicyVersion": { - "http": { - "requestUri": "/2013-04-01/trafficpolicy/{Id}", - "responseCode": 201 - }, - "input": { - "locationName": "CreateTrafficPolicyVersionRequest", - "xmlNamespace": { - "uri": "https://route53.amazonaws.com/doc/2013-04-01/" - }, - "type": "structure", - "required": [ - "Id", - "Document" - ], - "members": { - "Id": { - "location": "uri", - "locationName": "Id" - }, - "Document": {}, - "Comment": {} - } - }, - "output": { - "type": "structure", - "required": [ - "TrafficPolicy", - "Location" - ], - "members": { - "TrafficPolicy": { - "shape": "S2x" - }, - "Location": { - "location": "header", - "locationName": "Location" - } - } - } - }, - "CreateVPCAssociationAuthorization": { - "http": { - "requestUri": "/2013-04-01/hostedzone/{Id}/authorizevpcassociation" - }, - "input": { - "locationName": "CreateVPCAssociationAuthorizationRequest", - "xmlNamespace": { - "uri": "https://route53.amazonaws.com/doc/2013-04-01/" - }, - "type": "structure", - "required": [ - "HostedZoneId", - "VPC" - ], - "members": { - "HostedZoneId": { - "location": "uri", - "locationName": "Id" - }, - "VPC": { - "shape": "S3" - } - } - }, - "output": { - "type": "structure", - "required": [ - "HostedZoneId", - "VPC" - ], - "members": { - "HostedZoneId": {}, - "VPC": { - "shape": "S3" - } - } - } - }, - "DeleteHealthCheck": { - "http": { - "method": "DELETE", - "requestUri": "/2013-04-01/healthcheck/{HealthCheckId}" - }, - "input": { - "type": "structure", - "required": [ - "HealthCheckId" - ], - "members": { - "HealthCheckId": { - "location": "uri", - "locationName": "HealthCheckId" - } - } - }, - "output": { - "type": "structure", - "members": {} - } - }, - "DeleteHostedZone": { - "http": { - "method": "DELETE", - "requestUri": "/2013-04-01/hostedzone/{Id}" - }, - "input": { - "type": "structure", - "required": [ - "Id" - ], - "members": { - "Id": { - "location": "uri", - "locationName": "Id" - } - } - }, - "output": { - "type": "structure", - "required": [ - "ChangeInfo" - ], - "members": { - "ChangeInfo": { - "shape": "S8" - } - } - } - }, - "DeleteQueryLoggingConfig": { - "http": { - "method": "DELETE", - "requestUri": "/2013-04-01/queryloggingconfig/{Id}" - }, - "input": { - "type": "structure", - "required": [ - "Id" - ], - "members": { - "Id": { - "location": "uri", - "locationName": "Id" - } - } - }, - "output": { - "type": "structure", - "members": {} - } - }, - "DeleteReusableDelegationSet": { - "http": { - "method": "DELETE", - "requestUri": "/2013-04-01/delegationset/{Id}" - }, - "input": { - "type": "structure", - "required": [ - "Id" - ], - "members": { - "Id": { - "location": "uri", - "locationName": "Id" - } - } - }, - "output": { - "type": "structure", - "members": {} - } - }, - "DeleteTrafficPolicy": { - "http": { - "method": "DELETE", - "requestUri": "/2013-04-01/trafficpolicy/{Id}/{Version}" - }, - "input": { - "type": "structure", - "required": [ - "Id", - "Version" - ], - "members": { - "Id": { - "location": "uri", - "locationName": "Id" - }, - "Version": { - "location": "uri", - "locationName": "Version", - "type": "integer" - } - } - }, - "output": { - "type": "structure", - "members": {} - } - }, - "DeleteTrafficPolicyInstance": { - "http": { - "method": "DELETE", - "requestUri": "/2013-04-01/trafficpolicyinstance/{Id}" - }, - "input": { - "type": "structure", - "required": [ - "Id" - ], - "members": { - "Id": { - "location": "uri", - "locationName": "Id" - } - } - }, - "output": { - "type": "structure", - "members": {} - } - }, - "DeleteVPCAssociationAuthorization": { - "http": { - "requestUri": "/2013-04-01/hostedzone/{Id}/deauthorizevpcassociation" - }, - "input": { - "locationName": "DeleteVPCAssociationAuthorizationRequest", - "xmlNamespace": { - "uri": "https://route53.amazonaws.com/doc/2013-04-01/" - }, - "type": "structure", - "required": [ - "HostedZoneId", - "VPC" - ], - "members": { - "HostedZoneId": { - "location": "uri", - "locationName": "Id" - }, - "VPC": { - "shape": "S3" - } - } - }, - "output": { - "type": "structure", - "members": {} - } - }, - "DisassociateVPCFromHostedZone": { - "http": { - "requestUri": "/2013-04-01/hostedzone/{Id}/disassociatevpc" - }, - "input": { - "locationName": "DisassociateVPCFromHostedZoneRequest", - "xmlNamespace": { - "uri": "https://route53.amazonaws.com/doc/2013-04-01/" - }, - "type": "structure", - "required": [ - "HostedZoneId", - "VPC" - ], - "members": { - "HostedZoneId": { - "location": "uri", - "locationName": "Id" - }, - "VPC": { - "shape": "S3" - }, - "Comment": {} - } - }, - "output": { - "type": "structure", - "required": [ - "ChangeInfo" - ], - "members": { - "ChangeInfo": { - "shape": "S8" - } - } - } - }, - "GetChange": { - "http": { - "method": "GET", - "requestUri": "/2013-04-01/change/{Id}" - }, - "input": { - "type": "structure", - "required": [ - "Id" - ], - "members": { - "Id": { - "location": "uri", - "locationName": "Id" - } - } - }, - "output": { - "type": "structure", - "required": [ - "ChangeInfo" - ], - "members": { - "ChangeInfo": { - "shape": "S8" - } - } - } - }, - "GetCheckerIpRanges": { - "http": { - "method": "GET", - "requestUri": "/2013-04-01/checkeripranges" - }, - "input": { - "type": "structure", - "members": {} - }, - "output": { - "type": "structure", - "required": [ - "CheckerIpRanges" - ], - "members": { - "CheckerIpRanges": { - "type": "list", - "member": {} - } - } - } - }, - "GetGeoLocation": { - "http": { - "method": "GET", - "requestUri": "/2013-04-01/geolocation" - }, - "input": { - "type": "structure", - "members": { - "ContinentCode": { - "location": "querystring", - "locationName": "continentcode" - }, - "CountryCode": { - "location": "querystring", - "locationName": "countrycode" - }, - "SubdivisionCode": { - "location": "querystring", - "locationName": "subdivisioncode" - } - } - }, - "output": { - "type": "structure", - "required": [ - "GeoLocationDetails" - ], - "members": { - "GeoLocationDetails": { - "shape": "S3y" - } - } - } - }, - "GetHealthCheck": { - "http": { - "method": "GET", - "requestUri": "/2013-04-01/healthcheck/{HealthCheckId}" - }, - "input": { - "type": "structure", - "required": [ - "HealthCheckId" - ], - "members": { - "HealthCheckId": { - "location": "uri", - "locationName": "HealthCheckId" - } - } - }, - "output": { - "type": "structure", - "required": [ - "HealthCheck" - ], - "members": { - "HealthCheck": { - "shape": "S1y" - } - } - } - }, - "GetHealthCheckCount": { - "http": { - "method": "GET", - "requestUri": "/2013-04-01/healthcheckcount" - }, - "input": { - "type": "structure", - "members": {} - }, - "output": { - "type": "structure", - "required": [ - "HealthCheckCount" - ], - "members": { - "HealthCheckCount": { - "type": "long" - } - } - } - }, - "GetHealthCheckLastFailureReason": { - "http": { - "method": "GET", - "requestUri": "/2013-04-01/healthcheck/{HealthCheckId}/lastfailurereason" - }, - "input": { - "type": "structure", - "required": [ - "HealthCheckId" - ], - "members": { - "HealthCheckId": { - "location": "uri", - "locationName": "HealthCheckId" - } - } - }, - "output": { - "type": "structure", - "required": [ - "HealthCheckObservations" - ], - "members": { - "HealthCheckObservations": { - "shape": "S49" - } - } - } - }, - "GetHealthCheckStatus": { - "http": { - "method": "GET", - "requestUri": "/2013-04-01/healthcheck/{HealthCheckId}/status" - }, - "input": { - "type": "structure", - "required": [ - "HealthCheckId" - ], - "members": { - "HealthCheckId": { - "location": "uri", - "locationName": "HealthCheckId" - } - } - }, - "output": { - "type": "structure", - "required": [ - "HealthCheckObservations" - ], - "members": { - "HealthCheckObservations": { - "shape": "S49" - } - } - } - }, - "GetHostedZone": { - "http": { - "method": "GET", - "requestUri": "/2013-04-01/hostedzone/{Id}" - }, - "input": { - "type": "structure", - "required": [ - "Id" - ], - "members": { - "Id": { - "location": "uri", - "locationName": "Id" - } - } - }, - "output": { - "type": "structure", - "required": [ - "HostedZone" - ], - "members": { - "HostedZone": { - "shape": "S2h" - }, - "DelegationSet": { - "shape": "S2j" - }, - "VPCs": { - "shape": "S4h" - } - } - } - }, - "GetHostedZoneCount": { - "http": { - "method": "GET", - "requestUri": "/2013-04-01/hostedzonecount" - }, - "input": { - "type": "structure", - "members": {} - }, - "output": { - "type": "structure", - "required": [ - "HostedZoneCount" - ], - "members": { - "HostedZoneCount": { - "type": "long" - } - } - } - }, - "GetQueryLoggingConfig": { - "http": { - "method": "GET", - "requestUri": "/2013-04-01/queryloggingconfig/{Id}" - }, - "input": { - "type": "structure", - "required": [ - "Id" - ], - "members": { - "Id": { - "location": "uri", - "locationName": "Id" - } - } - }, - "output": { - "type": "structure", - "required": [ - "QueryLoggingConfig" - ], - "members": { - "QueryLoggingConfig": { - "shape": "S2o" - } - } - } - }, - "GetReusableDelegationSet": { - "http": { - "method": "GET", - "requestUri": "/2013-04-01/delegationset/{Id}" - }, - "input": { - "type": "structure", - "required": [ - "Id" - ], - "members": { - "Id": { - "location": "uri", - "locationName": "Id" - } - } - }, - "output": { - "type": "structure", - "required": [ - "DelegationSet" - ], - "members": { - "DelegationSet": { - "shape": "S2j" - } - } - } - }, - "GetTrafficPolicy": { - "http": { - "method": "GET", - "requestUri": "/2013-04-01/trafficpolicy/{Id}/{Version}" - }, - "input": { - "type": "structure", - "required": [ - "Id", - "Version" - ], - "members": { - "Id": { - "location": "uri", - "locationName": "Id" - }, - "Version": { - "location": "uri", - "locationName": "Version", - "type": "integer" - } - } - }, - "output": { - "type": "structure", - "required": [ - "TrafficPolicy" - ], - "members": { - "TrafficPolicy": { - "shape": "S2x" - } - } - } - }, - "GetTrafficPolicyInstance": { - "http": { - "method": "GET", - "requestUri": "/2013-04-01/trafficpolicyinstance/{Id}" - }, - "input": { - "type": "structure", - "required": [ - "Id" - ], - "members": { - "Id": { - "location": "uri", - "locationName": "Id" - } - } - }, - "output": { - "type": "structure", - "required": [ - "TrafficPolicyInstance" - ], - "members": { - "TrafficPolicyInstance": { - "shape": "S32" - } - } - } - }, - "GetTrafficPolicyInstanceCount": { - "http": { - "method": "GET", - "requestUri": "/2013-04-01/trafficpolicyinstancecount" - }, - "input": { - "type": "structure", - "members": {} - }, - "output": { - "type": "structure", - "required": [ - "TrafficPolicyInstanceCount" - ], - "members": { - "TrafficPolicyInstanceCount": { - "type": "integer" - } - } - } - }, - "ListGeoLocations": { - "http": { - "method": "GET", - "requestUri": "/2013-04-01/geolocations" - }, - "input": { - "type": "structure", - "members": { - "StartContinentCode": { - "location": "querystring", - "locationName": "startcontinentcode" - }, - "StartCountryCode": { - "location": "querystring", - "locationName": "startcountrycode" - }, - "StartSubdivisionCode": { - "location": "querystring", - "locationName": "startsubdivisioncode" - }, - "MaxItems": { - "location": "querystring", - "locationName": "maxitems" - } - } - }, - "output": { - "type": "structure", - "required": [ - "GeoLocationDetailsList", - "IsTruncated", - "MaxItems" - ], - "members": { - "GeoLocationDetailsList": { - "type": "list", - "member": { - "shape": "S3y", - "locationName": "GeoLocationDetails" - } - }, - "IsTruncated": { - "type": "boolean" - }, - "NextContinentCode": {}, - "NextCountryCode": {}, - "NextSubdivisionCode": {}, - "MaxItems": {} - } - } - }, - "ListHealthChecks": { - "http": { - "method": "GET", - "requestUri": "/2013-04-01/healthcheck" - }, - "input": { - "type": "structure", - "members": { - "Marker": { - "location": "querystring", - "locationName": "marker" - }, - "MaxItems": { - "location": "querystring", - "locationName": "maxitems" - } - } - }, - "output": { - "type": "structure", - "required": [ - "HealthChecks", - "Marker", - "IsTruncated", - "MaxItems" - ], - "members": { - "HealthChecks": { - "type": "list", - "member": { - "shape": "S1y", - "locationName": "HealthCheck" - } - }, - "Marker": {}, - "IsTruncated": { - "type": "boolean" - }, - "NextMarker": {}, - "MaxItems": {} - } - } - }, - "ListHostedZones": { - "http": { - "method": "GET", - "requestUri": "/2013-04-01/hostedzone" - }, - "input": { - "type": "structure", - "members": { - "Marker": { - "location": "querystring", - "locationName": "marker" - }, - "MaxItems": { - "location": "querystring", - "locationName": "maxitems" - }, - "DelegationSetId": { - "location": "querystring", - "locationName": "delegationsetid" - } - } - }, - "output": { - "type": "structure", - "required": [ - "HostedZones", - "Marker", - "IsTruncated", - "MaxItems" - ], - "members": { - "HostedZones": { - "shape": "S57" - }, - "Marker": {}, - "IsTruncated": { - "type": "boolean" - }, - "NextMarker": {}, - "MaxItems": {} - } - } - }, - "ListHostedZonesByName": { - "http": { - "method": "GET", - "requestUri": "/2013-04-01/hostedzonesbyname" - }, - "input": { - "type": "structure", - "members": { - "DNSName": { - "location": "querystring", - "locationName": "dnsname" - }, - "HostedZoneId": { - "location": "querystring", - "locationName": "hostedzoneid" - }, - "MaxItems": { - "location": "querystring", - "locationName": "maxitems" - } - } - }, - "output": { - "type": "structure", - "required": [ - "HostedZones", - "IsTruncated", - "MaxItems" - ], - "members": { - "HostedZones": { - "shape": "S57" - }, - "DNSName": {}, - "HostedZoneId": {}, - "IsTruncated": { - "type": "boolean" - }, - "NextDNSName": {}, - "NextHostedZoneId": {}, - "MaxItems": {} - } - } - }, - "ListQueryLoggingConfigs": { - "http": { - "method": "GET", - "requestUri": "/2013-04-01/queryloggingconfig" - }, - "input": { - "type": "structure", - "members": { - "HostedZoneId": { - "location": "querystring", - "locationName": "hostedzoneid" - }, - "NextToken": { - "location": "querystring", - "locationName": "nexttoken" - }, - "MaxResults": { - "location": "querystring", - "locationName": "maxresults" - } - } - }, - "output": { - "type": "structure", - "required": [ - "QueryLoggingConfigs" - ], - "members": { - "QueryLoggingConfigs": { - "type": "list", - "member": { - "shape": "S2o", - "locationName": "QueryLoggingConfig" - } - }, - "NextToken": {} - } - } - }, - "ListResourceRecordSets": { - "http": { - "method": "GET", - "requestUri": "/2013-04-01/hostedzone/{Id}/rrset" - }, - "input": { - "type": "structure", - "required": [ - "HostedZoneId" - ], - "members": { - "HostedZoneId": { - "location": "uri", - "locationName": "Id" - }, - "StartRecordName": { - "location": "querystring", - "locationName": "name" - }, - "StartRecordType": { - "location": "querystring", - "locationName": "type" - }, - "StartRecordIdentifier": { - "location": "querystring", - "locationName": "identifier" - }, - "MaxItems": { - "location": "querystring", - "locationName": "maxitems" - } - } - }, - "output": { - "type": "structure", - "required": [ - "ResourceRecordSets", - "IsTruncated", - "MaxItems" - ], - "members": { - "ResourceRecordSets": { - "type": "list", - "member": { - "shape": "Sh", - "locationName": "ResourceRecordSet" - } - }, - "IsTruncated": { - "type": "boolean" - }, - "NextRecordName": {}, - "NextRecordType": {}, - "NextRecordIdentifier": {}, - "MaxItems": {} - } - } - }, - "ListReusableDelegationSets": { - "http": { - "method": "GET", - "requestUri": "/2013-04-01/delegationset" - }, - "input": { - "type": "structure", - "members": { - "Marker": { - "location": "querystring", - "locationName": "marker" - }, - "MaxItems": { - "location": "querystring", - "locationName": "maxitems" - } - } - }, - "output": { - "type": "structure", - "required": [ - "DelegationSets", - "Marker", - "IsTruncated", - "MaxItems" - ], - "members": { - "DelegationSets": { - "type": "list", - "member": { - "shape": "S2j", - "locationName": "DelegationSet" - } - }, - "Marker": {}, - "IsTruncated": { - "type": "boolean" - }, - "NextMarker": {}, - "MaxItems": {} - } - } - }, - "ListTagsForResource": { - "http": { - "method": "GET", - "requestUri": "/2013-04-01/tags/{ResourceType}/{ResourceId}" - }, - "input": { - "type": "structure", - "required": [ - "ResourceType", - "ResourceId" - ], - "members": { - "ResourceType": { - "location": "uri", - "locationName": "ResourceType" - }, - "ResourceId": { - "location": "uri", - "locationName": "ResourceId" - } - } - }, - "output": { - "type": "structure", - "required": [ - "ResourceTagSet" - ], - "members": { - "ResourceTagSet": { - "shape": "S5n" - } - } - } - }, - "ListTagsForResources": { - "http": { - "requestUri": "/2013-04-01/tags/{ResourceType}" - }, - "input": { - "locationName": "ListTagsForResourcesRequest", - "xmlNamespace": { - "uri": "https://route53.amazonaws.com/doc/2013-04-01/" - }, - "type": "structure", - "required": [ - "ResourceType", - "ResourceIds" - ], - "members": { - "ResourceType": { - "location": "uri", - "locationName": "ResourceType" - }, - "ResourceIds": { - "type": "list", - "member": { - "locationName": "ResourceId" - } - } - } - }, - "output": { - "type": "structure", - "required": [ - "ResourceTagSets" - ], - "members": { - "ResourceTagSets": { - "type": "list", - "member": { - "shape": "S5n", - "locationName": "ResourceTagSet" - } - } - } - } - }, - "ListTrafficPolicies": { - "http": { - "method": "GET", - "requestUri": "/2013-04-01/trafficpolicies" - }, - "input": { - "type": "structure", - "members": { - "TrafficPolicyIdMarker": { - "location": "querystring", - "locationName": "trafficpolicyid" - }, - "MaxItems": { - "location": "querystring", - "locationName": "maxitems" - } - } - }, - "output": { - "type": "structure", - "required": [ - "TrafficPolicySummaries", - "IsTruncated", - "TrafficPolicyIdMarker", - "MaxItems" - ], - "members": { - "TrafficPolicySummaries": { - "type": "list", - "member": { - "locationName": "TrafficPolicySummary", - "type": "structure", - "required": [ - "Id", - "Name", - "Type", - "LatestVersion", - "TrafficPolicyCount" - ], - "members": { - "Id": {}, - "Name": {}, - "Type": {}, - "LatestVersion": { - "type": "integer" - }, - "TrafficPolicyCount": { - "type": "integer" - } - } - } - }, - "IsTruncated": { - "type": "boolean" - }, - "TrafficPolicyIdMarker": {}, - "MaxItems": {} - } - } - }, - "ListTrafficPolicyInstances": { - "http": { - "method": "GET", - "requestUri": "/2013-04-01/trafficpolicyinstances" - }, - "input": { - "type": "structure", - "members": { - "HostedZoneIdMarker": { - "location": "querystring", - "locationName": "hostedzoneid" - }, - "TrafficPolicyInstanceNameMarker": { - "location": "querystring", - "locationName": "trafficpolicyinstancename" - }, - "TrafficPolicyInstanceTypeMarker": { - "location": "querystring", - "locationName": "trafficpolicyinstancetype" - }, - "MaxItems": { - "location": "querystring", - "locationName": "maxitems" - } - } - }, - "output": { - "type": "structure", - "required": [ - "TrafficPolicyInstances", - "IsTruncated", - "MaxItems" - ], - "members": { - "TrafficPolicyInstances": { - "shape": "S5y" - }, - "HostedZoneIdMarker": {}, - "TrafficPolicyInstanceNameMarker": {}, - "TrafficPolicyInstanceTypeMarker": {}, - "IsTruncated": { - "type": "boolean" - }, - "MaxItems": {} - } - } - }, - "ListTrafficPolicyInstancesByHostedZone": { - "http": { - "method": "GET", - "requestUri": "/2013-04-01/trafficpolicyinstances/hostedzone" - }, - "input": { - "type": "structure", - "required": [ - "HostedZoneId" - ], - "members": { - "HostedZoneId": { - "location": "querystring", - "locationName": "id" - }, - "TrafficPolicyInstanceNameMarker": { - "location": "querystring", - "locationName": "trafficpolicyinstancename" - }, - "TrafficPolicyInstanceTypeMarker": { - "location": "querystring", - "locationName": "trafficpolicyinstancetype" - }, - "MaxItems": { - "location": "querystring", - "locationName": "maxitems" - } - } - }, - "output": { - "type": "structure", - "required": [ - "TrafficPolicyInstances", - "IsTruncated", - "MaxItems" - ], - "members": { - "TrafficPolicyInstances": { - "shape": "S5y" - }, - "TrafficPolicyInstanceNameMarker": {}, - "TrafficPolicyInstanceTypeMarker": {}, - "IsTruncated": { - "type": "boolean" - }, - "MaxItems": {} - } - } - }, - "ListTrafficPolicyInstancesByPolicy": { - "http": { - "method": "GET", - "requestUri": "/2013-04-01/trafficpolicyinstances/trafficpolicy" - }, - "input": { - "type": "structure", - "required": [ - "TrafficPolicyId", - "TrafficPolicyVersion" - ], - "members": { - "TrafficPolicyId": { - "location": "querystring", - "locationName": "id" - }, - "TrafficPolicyVersion": { - "location": "querystring", - "locationName": "version", - "type": "integer" - }, - "HostedZoneIdMarker": { - "location": "querystring", - "locationName": "hostedzoneid" - }, - "TrafficPolicyInstanceNameMarker": { - "location": "querystring", - "locationName": "trafficpolicyinstancename" - }, - "TrafficPolicyInstanceTypeMarker": { - "location": "querystring", - "locationName": "trafficpolicyinstancetype" - }, - "MaxItems": { - "location": "querystring", - "locationName": "maxitems" - } - } - }, - "output": { - "type": "structure", - "required": [ - "TrafficPolicyInstances", - "IsTruncated", - "MaxItems" - ], - "members": { - "TrafficPolicyInstances": { - "shape": "S5y" - }, - "HostedZoneIdMarker": {}, - "TrafficPolicyInstanceNameMarker": {}, - "TrafficPolicyInstanceTypeMarker": {}, - "IsTruncated": { - "type": "boolean" - }, - "MaxItems": {} - } - } - }, - "ListTrafficPolicyVersions": { - "http": { - "method": "GET", - "requestUri": "/2013-04-01/trafficpolicies/{Id}/versions" - }, - "input": { - "type": "structure", - "required": [ - "Id" - ], - "members": { - "Id": { - "location": "uri", - "locationName": "Id" - }, - "TrafficPolicyVersionMarker": { - "location": "querystring", - "locationName": "trafficpolicyversion" - }, - "MaxItems": { - "location": "querystring", - "locationName": "maxitems" - } - } - }, - "output": { - "type": "structure", - "required": [ - "TrafficPolicies", - "IsTruncated", - "TrafficPolicyVersionMarker", - "MaxItems" - ], - "members": { - "TrafficPolicies": { - "type": "list", - "member": { - "shape": "S2x", - "locationName": "TrafficPolicy" - } - }, - "IsTruncated": { - "type": "boolean" - }, - "TrafficPolicyVersionMarker": {}, - "MaxItems": {} - } - } - }, - "ListVPCAssociationAuthorizations": { - "http": { - "method": "GET", - "requestUri": "/2013-04-01/hostedzone/{Id}/authorizevpcassociation" - }, - "input": { - "type": "structure", - "required": [ - "HostedZoneId" - ], - "members": { - "HostedZoneId": { - "location": "uri", - "locationName": "Id" - }, - "NextToken": { - "location": "querystring", - "locationName": "nexttoken" - }, - "MaxResults": { - "location": "querystring", - "locationName": "maxresults" - } - } - }, - "output": { - "type": "structure", - "required": [ - "HostedZoneId", - "VPCs" - ], - "members": { - "HostedZoneId": {}, - "NextToken": {}, - "VPCs": { - "shape": "S4h" - } - } - } - }, - "TestDNSAnswer": { - "http": { - "method": "GET", - "requestUri": "/2013-04-01/testdnsanswer" - }, - "input": { - "type": "structure", - "required": [ - "HostedZoneId", - "RecordName", - "RecordType" - ], - "members": { - "HostedZoneId": { - "location": "querystring", - "locationName": "hostedzoneid" - }, - "RecordName": { - "location": "querystring", - "locationName": "recordname" - }, - "RecordType": { - "location": "querystring", - "locationName": "recordtype" - }, - "ResolverIP": { - "location": "querystring", - "locationName": "resolverip" - }, - "EDNS0ClientSubnetIP": { - "location": "querystring", - "locationName": "edns0clientsubnetip" - }, - "EDNS0ClientSubnetMask": { - "location": "querystring", - "locationName": "edns0clientsubnetmask" - } - } - }, - "output": { - "type": "structure", - "required": [ - "Nameserver", - "RecordName", - "RecordType", - "RecordData", - "ResponseCode", - "Protocol" - ], - "members": { - "Nameserver": {}, - "RecordName": {}, - "RecordType": {}, - "RecordData": { - "type": "list", - "member": { - "locationName": "RecordDataEntry" - } - }, - "ResponseCode": {}, - "Protocol": {} - } - } - }, - "UpdateHealthCheck": { - "http": { - "requestUri": "/2013-04-01/healthcheck/{HealthCheckId}" - }, - "input": { - "locationName": "UpdateHealthCheckRequest", - "xmlNamespace": { - "uri": "https://route53.amazonaws.com/doc/2013-04-01/" - }, - "type": "structure", - "required": [ - "HealthCheckId" - ], - "members": { - "HealthCheckId": { - "location": "uri", - "locationName": "HealthCheckId" - }, - "HealthCheckVersion": { - "type": "long" - }, - "IPAddress": {}, - "Port": { - "type": "integer" - }, - "ResourcePath": {}, - "FullyQualifiedDomainName": {}, - "SearchString": {}, - "FailureThreshold": { - "type": "integer" - }, - "Inverted": { - "type": "boolean" - }, - "HealthThreshold": { - "type": "integer" - }, - "ChildHealthChecks": { - "shape": "S1p" - }, - "EnableSNI": { - "type": "boolean" - }, - "Regions": { - "shape": "S1r" - }, - "AlarmIdentifier": { - "shape": "S1t" - }, - "InsufficientDataHealthStatus": {}, - "ResetElements": { - "type": "list", - "member": { - "locationName": "ResettableElementName" - } - } - } - }, - "output": { - "type": "structure", - "required": [ - "HealthCheck" - ], - "members": { - "HealthCheck": { - "shape": "S1y" - } - } - } - }, - "UpdateHostedZoneComment": { - "http": { - "requestUri": "/2013-04-01/hostedzone/{Id}" - }, - "input": { - "locationName": "UpdateHostedZoneCommentRequest", - "xmlNamespace": { - "uri": "https://route53.amazonaws.com/doc/2013-04-01/" - }, - "type": "structure", - "required": [ - "Id" - ], - "members": { - "Id": { - "location": "uri", - "locationName": "Id" - }, - "Comment": {} - } - }, - "output": { - "type": "structure", - "required": [ - "HostedZone" - ], - "members": { - "HostedZone": { - "shape": "S2h" - } - } - } - }, - "UpdateTrafficPolicyComment": { - "http": { - "requestUri": "/2013-04-01/trafficpolicy/{Id}/{Version}" - }, - "input": { - "locationName": "UpdateTrafficPolicyCommentRequest", - "xmlNamespace": { - "uri": "https://route53.amazonaws.com/doc/2013-04-01/" - }, - "type": "structure", - "required": [ - "Id", - "Version", - "Comment" - ], - "members": { - "Id": { - "location": "uri", - "locationName": "Id" - }, - "Version": { - "location": "uri", - "locationName": "Version", - "type": "integer" - }, - "Comment": {} - } - }, - "output": { - "type": "structure", - "required": [ - "TrafficPolicy" - ], - "members": { - "TrafficPolicy": { - "shape": "S2x" - } - } - } - }, - "UpdateTrafficPolicyInstance": { - "http": { - "requestUri": "/2013-04-01/trafficpolicyinstance/{Id}" - }, - "input": { - "locationName": "UpdateTrafficPolicyInstanceRequest", - "xmlNamespace": { - "uri": "https://route53.amazonaws.com/doc/2013-04-01/" - }, - "type": "structure", - "required": [ - "Id", - "TTL", - "TrafficPolicyId", - "TrafficPolicyVersion" - ], - "members": { - "Id": { - "location": "uri", - "locationName": "Id" - }, - "TTL": { - "type": "long" - }, - "TrafficPolicyId": {}, - "TrafficPolicyVersion": { - "type": "integer" - } - } - }, - "output": { - "type": "structure", - "required": [ - "TrafficPolicyInstance" - ], - "members": { - "TrafficPolicyInstance": { - "shape": "S32" - } - } - } - } - }, - "shapes": { - "S3": { - "type": "structure", - "members": { - "VPCRegion": {}, - "VPCId": {} - } - }, - "S8": { - "type": "structure", - "required": [ - "Id", - "Status", - "SubmittedAt" - ], - "members": { - "Id": {}, - "Status": {}, - "SubmittedAt": { - "type": "timestamp" - }, - "Comment": {} - } - }, - "Sh": { - "type": "structure", - "required": [ - "Name", - "Type" - ], - "members": { - "Name": {}, - "Type": {}, - "SetIdentifier": {}, - "Weight": { - "type": "long" - }, - "Region": {}, - "GeoLocation": { - "type": "structure", - "members": { - "ContinentCode": {}, - "CountryCode": {}, - "SubdivisionCode": {} - } - }, - "Failover": {}, - "MultiValueAnswer": { - "type": "boolean" - }, - "TTL": { - "type": "long" - }, - "ResourceRecords": { - "type": "list", - "member": { - "locationName": "ResourceRecord", - "type": "structure", - "required": [ - "Value" - ], - "members": { - "Value": {} - } - } - }, - "AliasTarget": { - "type": "structure", - "required": [ - "HostedZoneId", - "DNSName", - "EvaluateTargetHealth" - ], - "members": { - "HostedZoneId": {}, - "DNSName": {}, - "EvaluateTargetHealth": { - "type": "boolean" - } - } - }, - "HealthCheckId": {}, - "TrafficPolicyInstanceId": {} - } - }, - "S15": { - "type": "list", - "member": { - "locationName": "Tag", - "type": "structure", - "members": { - "Key": {}, - "Value": {} - } - } - }, - "S1d": { - "type": "structure", - "required": [ - "Type" - ], - "members": { - "IPAddress": {}, - "Port": { - "type": "integer" - }, - "Type": {}, - "ResourcePath": {}, - "FullyQualifiedDomainName": {}, - "SearchString": {}, - "RequestInterval": { - "type": "integer" - }, - "FailureThreshold": { - "type": "integer" - }, - "MeasureLatency": { - "type": "boolean" - }, - "Inverted": { - "type": "boolean" - }, - "HealthThreshold": { - "type": "integer" - }, - "ChildHealthChecks": { - "shape": "S1p" - }, - "EnableSNI": { - "type": "boolean" - }, - "Regions": { - "shape": "S1r" - }, - "AlarmIdentifier": { - "shape": "S1t" - }, - "InsufficientDataHealthStatus": {} - } - }, - "S1p": { - "type": "list", - "member": { - "locationName": "ChildHealthCheck" - } - }, - "S1r": { - "type": "list", - "member": { - "locationName": "Region" - } - }, - "S1t": { - "type": "structure", - "required": [ - "Region", - "Name" - ], - "members": { - "Region": {}, - "Name": {} - } - }, - "S1y": { - "type": "structure", - "required": [ - "Id", - "CallerReference", - "HealthCheckConfig", - "HealthCheckVersion" - ], - "members": { - "Id": {}, - "CallerReference": {}, - "HealthCheckConfig": { - "shape": "S1d" - }, - "HealthCheckVersion": { - "type": "long" - }, - "CloudWatchAlarmConfiguration": { - "type": "structure", - "required": [ - "EvaluationPeriods", - "Threshold", - "ComparisonOperator", - "Period", - "MetricName", - "Namespace", - "Statistic" - ], - "members": { - "EvaluationPeriods": { - "type": "integer" - }, - "Threshold": { - "type": "double" - }, - "ComparisonOperator": {}, - "Period": { - "type": "integer" - }, - "MetricName": {}, - "Namespace": {}, - "Statistic": {}, - "Dimensions": { - "type": "list", - "member": { - "locationName": "Dimension", - "type": "structure", - "required": [ - "Name", - "Value" - ], - "members": { - "Name": {}, - "Value": {} - } - } - } - } - } - } - }, - "S2e": { - "type": "structure", - "members": { - "Comment": {}, - "PrivateZone": { - "type": "boolean" - } - } - }, - "S2h": { - "type": "structure", - "required": [ - "Id", - "Name", - "CallerReference" - ], - "members": { - "Id": {}, - "Name": {}, - "CallerReference": {}, - "Config": { - "shape": "S2e" - }, - "ResourceRecordSetCount": { - "type": "long" - } - } - }, - "S2j": { - "type": "structure", - "required": [ - "NameServers" - ], - "members": { - "Id": {}, - "CallerReference": {}, - "NameServers": { - "type": "list", - "member": { - "locationName": "NameServer" - } - } - } - }, - "S2o": { - "type": "structure", - "required": [ - "Id", - "HostedZoneId", - "CloudWatchLogsLogGroupArn" - ], - "members": { - "Id": {}, - "HostedZoneId": {}, - "CloudWatchLogsLogGroupArn": {} - } - }, - "S2x": { - "type": "structure", - "required": [ - "Id", - "Version", - "Name", - "Type", - "Document" - ], - "members": { - "Id": {}, - "Version": { - "type": "integer" - }, - "Name": {}, - "Type": {}, - "Document": {}, - "Comment": {} - } - }, - "S32": { - "type": "structure", - "required": [ - "Id", - "HostedZoneId", - "Name", - "TTL", - "State", - "Message", - "TrafficPolicyId", - "TrafficPolicyVersion", - "TrafficPolicyType" - ], - "members": { - "Id": {}, - "HostedZoneId": {}, - "Name": {}, - "TTL": { - "type": "long" - }, - "State": {}, - "Message": {}, - "TrafficPolicyId": {}, - "TrafficPolicyVersion": { - "type": "integer" - }, - "TrafficPolicyType": {} - } - }, - "S3y": { - "type": "structure", - "members": { - "ContinentCode": {}, - "ContinentName": {}, - "CountryCode": {}, - "CountryName": {}, - "SubdivisionCode": {}, - "SubdivisionName": {} - } - }, - "S49": { - "type": "list", - "member": { - "locationName": "HealthCheckObservation", - "type": "structure", - "members": { - "Region": {}, - "IPAddress": {}, - "StatusReport": { - "type": "structure", - "members": { - "Status": {}, - "CheckedTime": { - "type": "timestamp" - } - } - } - } - } - }, - "S4h": { - "type": "list", - "member": { - "shape": "S3", - "locationName": "VPC" - } - }, - "S57": { - "type": "list", - "member": { - "shape": "S2h", - "locationName": "HostedZone" - } - }, - "S5n": { - "type": "structure", - "members": { - "ResourceType": {}, - "ResourceId": {}, - "Tags": { - "shape": "S15" - } - } - }, - "S5y": { - "type": "list", - "member": { - "shape": "S32", - "locationName": "TrafficPolicyInstance" - } - } - } -} \ No newline at end of file diff --git a/workshops/monte-carlo-on-ec2-spot-fleet/src/web/node_modules/aws-sdk/apis/route53-2013-04-01.paginators.json b/workshops/monte-carlo-on-ec2-spot-fleet/src/web/node_modules/aws-sdk/apis/route53-2013-04-01.paginators.json deleted file mode 100644 index 5a7cea39..00000000 --- a/workshops/monte-carlo-on-ec2-spot-fleet/src/web/node_modules/aws-sdk/apis/route53-2013-04-01.paginators.json +++ /dev/null @@ -1,33 +0,0 @@ -{ - "pagination": { - "ListHealthChecks": { - "input_token": "Marker", - "limit_key": "MaxItems", - "more_results": "IsTruncated", - "output_token": "NextMarker", - "result_key": "HealthChecks" - }, - "ListHostedZones": { - "input_token": "Marker", - "limit_key": "MaxItems", - "more_results": "IsTruncated", - "output_token": "NextMarker", - "result_key": "HostedZones" - }, - "ListResourceRecordSets": { - "input_token": [ - "StartRecordName", - "StartRecordType", - "StartRecordIdentifier" - ], - "limit_key": "MaxItems", - "more_results": "IsTruncated", - "output_token": [ - "NextRecordName", - "NextRecordType", - "NextRecordIdentifier" - ], - "result_key": "ResourceRecordSets" - } - } -} \ No newline at end of file diff --git a/workshops/monte-carlo-on-ec2-spot-fleet/src/web/node_modules/aws-sdk/apis/route53-2013-04-01.waiters2.json b/workshops/monte-carlo-on-ec2-spot-fleet/src/web/node_modules/aws-sdk/apis/route53-2013-04-01.waiters2.json deleted file mode 100644 index 94aad399..00000000 --- a/workshops/monte-carlo-on-ec2-spot-fleet/src/web/node_modules/aws-sdk/apis/route53-2013-04-01.waiters2.json +++ /dev/null @@ -1,18 +0,0 @@ -{ - "version": 2, - "waiters": { - "ResourceRecordSetsChanged": { - "delay": 30, - "maxAttempts": 60, - "operation": "GetChange", - "acceptors": [ - { - "matcher": "path", - "expected": "INSYNC", - "argument": "ChangeInfo.Status", - "state": "success" - } - ] - } - } -} diff --git a/workshops/monte-carlo-on-ec2-spot-fleet/src/web/node_modules/aws-sdk/apis/route53domains-2014-05-15.examples.json b/workshops/monte-carlo-on-ec2-spot-fleet/src/web/node_modules/aws-sdk/apis/route53domains-2014-05-15.examples.json deleted file mode 100644 index 0ea7e3b0..00000000 --- a/workshops/monte-carlo-on-ec2-spot-fleet/src/web/node_modules/aws-sdk/apis/route53domains-2014-05-15.examples.json +++ /dev/null @@ -1,5 +0,0 @@ -{ - "version": "1.0", - "examples": { - } -} diff --git a/workshops/monte-carlo-on-ec2-spot-fleet/src/web/node_modules/aws-sdk/apis/route53domains-2014-05-15.min.json b/workshops/monte-carlo-on-ec2-spot-fleet/src/web/node_modules/aws-sdk/apis/route53domains-2014-05-15.min.json deleted file mode 100644 index 680f4cb3..00000000 --- a/workshops/monte-carlo-on-ec2-spot-fleet/src/web/node_modules/aws-sdk/apis/route53domains-2014-05-15.min.json +++ /dev/null @@ -1,778 +0,0 @@ -{ - "version": "2.0", - "metadata": { - "apiVersion": "2014-05-15", - "endpointPrefix": "route53domains", - "jsonVersion": "1.1", - "protocol": "json", - "serviceFullName": "Amazon Route 53 Domains", - "signatureVersion": "v4", - "targetPrefix": "Route53Domains_v20140515", - "uid": "route53domains-2014-05-15" - }, - "operations": { - "CheckDomainAvailability": { - "input": { - "type": "structure", - "required": [ - "DomainName" - ], - "members": { - "DomainName": {}, - "IdnLangCode": {} - } - }, - "output": { - "type": "structure", - "required": [ - "Availability" - ], - "members": { - "Availability": {} - } - } - }, - "CheckDomainTransferability": { - "input": { - "type": "structure", - "required": [ - "DomainName" - ], - "members": { - "DomainName": {}, - "AuthCode": { - "shape": "S7" - } - } - }, - "output": { - "type": "structure", - "required": [ - "Transferability" - ], - "members": { - "Transferability": { - "type": "structure", - "members": { - "Transferable": {} - } - } - } - } - }, - "DeleteTagsForDomain": { - "input": { - "type": "structure", - "required": [ - "DomainName", - "TagsToDelete" - ], - "members": { - "DomainName": {}, - "TagsToDelete": { - "type": "list", - "member": {} - } - } - }, - "output": { - "type": "structure", - "members": {} - } - }, - "DisableDomainAutoRenew": { - "input": { - "type": "structure", - "required": [ - "DomainName" - ], - "members": { - "DomainName": {} - } - }, - "output": { - "type": "structure", - "members": {} - } - }, - "DisableDomainTransferLock": { - "input": { - "type": "structure", - "required": [ - "DomainName" - ], - "members": { - "DomainName": {} - } - }, - "output": { - "type": "structure", - "required": [ - "OperationId" - ], - "members": { - "OperationId": {} - } - } - }, - "EnableDomainAutoRenew": { - "input": { - "type": "structure", - "required": [ - "DomainName" - ], - "members": { - "DomainName": {} - } - }, - "output": { - "type": "structure", - "members": {} - } - }, - "EnableDomainTransferLock": { - "input": { - "type": "structure", - "required": [ - "DomainName" - ], - "members": { - "DomainName": {} - } - }, - "output": { - "type": "structure", - "required": [ - "OperationId" - ], - "members": { - "OperationId": {} - } - } - }, - "GetContactReachabilityStatus": { - "input": { - "type": "structure", - "members": { - "domainName": {} - } - }, - "output": { - "type": "structure", - "members": { - "domainName": {}, - "status": {} - } - } - }, - "GetDomainDetail": { - "input": { - "type": "structure", - "required": [ - "DomainName" - ], - "members": { - "DomainName": {} - } - }, - "output": { - "type": "structure", - "required": [ - "DomainName", - "Nameservers", - "AdminContact", - "RegistrantContact", - "TechContact" - ], - "members": { - "DomainName": {}, - "Nameservers": { - "shape": "St" - }, - "AutoRenew": { - "type": "boolean" - }, - "AdminContact": { - "shape": "Sz" - }, - "RegistrantContact": { - "shape": "Sz" - }, - "TechContact": { - "shape": "Sz" - }, - "AdminPrivacy": { - "type": "boolean" - }, - "RegistrantPrivacy": { - "type": "boolean" - }, - "TechPrivacy": { - "type": "boolean" - }, - "RegistrarName": {}, - "WhoIsServer": {}, - "RegistrarUrl": {}, - "AbuseContactEmail": {}, - "AbuseContactPhone": {}, - "RegistryDomainId": {}, - "CreationDate": { - "type": "timestamp" - }, - "UpdatedDate": { - "type": "timestamp" - }, - "ExpirationDate": { - "type": "timestamp" - }, - "Reseller": {}, - "DnsSec": {}, - "StatusList": { - "type": "list", - "member": {} - } - } - } - }, - "GetDomainSuggestions": { - "input": { - "type": "structure", - "required": [ - "DomainName", - "SuggestionCount", - "OnlyAvailable" - ], - "members": { - "DomainName": {}, - "SuggestionCount": { - "type": "integer" - }, - "OnlyAvailable": { - "type": "boolean" - } - } - }, - "output": { - "type": "structure", - "members": { - "SuggestionsList": { - "type": "list", - "member": { - "type": "structure", - "members": { - "DomainName": {}, - "Availability": {} - } - } - } - } - } - }, - "GetOperationDetail": { - "input": { - "type": "structure", - "required": [ - "OperationId" - ], - "members": { - "OperationId": {} - } - }, - "output": { - "type": "structure", - "members": { - "OperationId": {}, - "Status": {}, - "Message": {}, - "DomainName": {}, - "Type": {}, - "SubmittedDate": { - "type": "timestamp" - } - } - } - }, - "ListDomains": { - "input": { - "type": "structure", - "members": { - "Marker": {}, - "MaxItems": { - "type": "integer" - } - } - }, - "output": { - "type": "structure", - "required": [ - "Domains" - ], - "members": { - "Domains": { - "type": "list", - "member": { - "type": "structure", - "required": [ - "DomainName" - ], - "members": { - "DomainName": {}, - "AutoRenew": { - "type": "boolean" - }, - "TransferLock": { - "type": "boolean" - }, - "Expiry": { - "type": "timestamp" - } - } - } - }, - "NextPageMarker": {} - } - } - }, - "ListOperations": { - "input": { - "type": "structure", - "members": { - "Marker": {}, - "MaxItems": { - "type": "integer" - } - } - }, - "output": { - "type": "structure", - "required": [ - "Operations" - ], - "members": { - "Operations": { - "type": "list", - "member": { - "type": "structure", - "required": [ - "OperationId", - "Status", - "Type", - "SubmittedDate" - ], - "members": { - "OperationId": {}, - "Status": {}, - "Type": {}, - "SubmittedDate": { - "type": "timestamp" - } - } - } - }, - "NextPageMarker": {} - } - } - }, - "ListTagsForDomain": { - "input": { - "type": "structure", - "required": [ - "DomainName" - ], - "members": { - "DomainName": {} - } - }, - "output": { - "type": "structure", - "required": [ - "TagList" - ], - "members": { - "TagList": { - "shape": "S29" - } - } - } - }, - "RegisterDomain": { - "input": { - "type": "structure", - "required": [ - "DomainName", - "DurationInYears", - "AdminContact", - "RegistrantContact", - "TechContact" - ], - "members": { - "DomainName": {}, - "IdnLangCode": {}, - "DurationInYears": { - "type": "integer" - }, - "AutoRenew": { - "type": "boolean" - }, - "AdminContact": { - "shape": "Sz" - }, - "RegistrantContact": { - "shape": "Sz" - }, - "TechContact": { - "shape": "Sz" - }, - "PrivacyProtectAdminContact": { - "type": "boolean" - }, - "PrivacyProtectRegistrantContact": { - "type": "boolean" - }, - "PrivacyProtectTechContact": { - "type": "boolean" - } - } - }, - "output": { - "type": "structure", - "required": [ - "OperationId" - ], - "members": { - "OperationId": {} - } - } - }, - "RenewDomain": { - "input": { - "type": "structure", - "required": [ - "DomainName", - "CurrentExpiryYear" - ], - "members": { - "DomainName": {}, - "DurationInYears": { - "type": "integer" - }, - "CurrentExpiryYear": { - "type": "integer" - } - } - }, - "output": { - "type": "structure", - "required": [ - "OperationId" - ], - "members": { - "OperationId": {} - } - } - }, - "ResendContactReachabilityEmail": { - "input": { - "type": "structure", - "members": { - "domainName": {} - } - }, - "output": { - "type": "structure", - "members": { - "domainName": {}, - "emailAddress": {}, - "isAlreadyVerified": { - "type": "boolean" - } - } - } - }, - "RetrieveDomainAuthCode": { - "input": { - "type": "structure", - "required": [ - "DomainName" - ], - "members": { - "DomainName": {} - } - }, - "output": { - "type": "structure", - "required": [ - "AuthCode" - ], - "members": { - "AuthCode": { - "shape": "S7" - } - } - } - }, - "TransferDomain": { - "input": { - "type": "structure", - "required": [ - "DomainName", - "DurationInYears", - "AdminContact", - "RegistrantContact", - "TechContact" - ], - "members": { - "DomainName": {}, - "IdnLangCode": {}, - "DurationInYears": { - "type": "integer" - }, - "Nameservers": { - "shape": "St" - }, - "AuthCode": { - "shape": "S7" - }, - "AutoRenew": { - "type": "boolean" - }, - "AdminContact": { - "shape": "Sz" - }, - "RegistrantContact": { - "shape": "Sz" - }, - "TechContact": { - "shape": "Sz" - }, - "PrivacyProtectAdminContact": { - "type": "boolean" - }, - "PrivacyProtectRegistrantContact": { - "type": "boolean" - }, - "PrivacyProtectTechContact": { - "type": "boolean" - } - } - }, - "output": { - "type": "structure", - "required": [ - "OperationId" - ], - "members": { - "OperationId": {} - } - } - }, - "UpdateDomainContact": { - "input": { - "type": "structure", - "required": [ - "DomainName" - ], - "members": { - "DomainName": {}, - "AdminContact": { - "shape": "Sz" - }, - "RegistrantContact": { - "shape": "Sz" - }, - "TechContact": { - "shape": "Sz" - } - } - }, - "output": { - "type": "structure", - "required": [ - "OperationId" - ], - "members": { - "OperationId": {} - } - } - }, - "UpdateDomainContactPrivacy": { - "input": { - "type": "structure", - "required": [ - "DomainName" - ], - "members": { - "DomainName": {}, - "AdminPrivacy": { - "type": "boolean" - }, - "RegistrantPrivacy": { - "type": "boolean" - }, - "TechPrivacy": { - "type": "boolean" - } - } - }, - "output": { - "type": "structure", - "required": [ - "OperationId" - ], - "members": { - "OperationId": {} - } - } - }, - "UpdateDomainNameservers": { - "input": { - "type": "structure", - "required": [ - "DomainName", - "Nameservers" - ], - "members": { - "DomainName": {}, - "FIAuthKey": { - "deprecated": true - }, - "Nameservers": { - "shape": "St" - } - } - }, - "output": { - "type": "structure", - "required": [ - "OperationId" - ], - "members": { - "OperationId": {} - } - } - }, - "UpdateTagsForDomain": { - "input": { - "type": "structure", - "required": [ - "DomainName" - ], - "members": { - "DomainName": {}, - "TagsToUpdate": { - "shape": "S29" - } - } - }, - "output": { - "type": "structure", - "members": {} - } - }, - "ViewBilling": { - "input": { - "type": "structure", - "members": { - "Start": { - "type": "timestamp" - }, - "End": { - "type": "timestamp" - }, - "Marker": {}, - "MaxItems": { - "type": "integer" - } - } - }, - "output": { - "type": "structure", - "members": { - "NextPageMarker": {}, - "BillingRecords": { - "type": "list", - "member": { - "type": "structure", - "members": { - "DomainName": {}, - "Operation": {}, - "InvoiceId": {}, - "BillDate": { - "type": "timestamp" - }, - "Price": { - "type": "double" - } - } - } - } - } - } - } - }, - "shapes": { - "S7": { - "type": "string", - "sensitive": true - }, - "St": { - "type": "list", - "member": { - "type": "structure", - "required": [ - "Name" - ], - "members": { - "Name": {}, - "GlueIps": { - "type": "list", - "member": {} - } - } - } - }, - "Sz": { - "type": "structure", - "members": { - "FirstName": {}, - "LastName": {}, - "ContactType": {}, - "OrganizationName": {}, - "AddressLine1": {}, - "AddressLine2": {}, - "City": {}, - "State": {}, - "CountryCode": {}, - "ZipCode": {}, - "PhoneNumber": {}, - "Email": {}, - "Fax": {}, - "ExtraParams": { - "type": "list", - "member": { - "type": "structure", - "required": [ - "Name", - "Value" - ], - "members": { - "Name": {}, - "Value": {} - } - } - } - }, - "sensitive": true - }, - "S29": { - "type": "list", - "member": { - "type": "structure", - "members": { - "Key": {}, - "Value": {} - } - } - } - } -} \ No newline at end of file diff --git a/workshops/monte-carlo-on-ec2-spot-fleet/src/web/node_modules/aws-sdk/apis/route53domains-2014-05-15.paginators.json b/workshops/monte-carlo-on-ec2-spot-fleet/src/web/node_modules/aws-sdk/apis/route53domains-2014-05-15.paginators.json deleted file mode 100644 index eaeaed76..00000000 --- a/workshops/monte-carlo-on-ec2-spot-fleet/src/web/node_modules/aws-sdk/apis/route53domains-2014-05-15.paginators.json +++ /dev/null @@ -1,16 +0,0 @@ -{ - "pagination": { - "ListDomains": { - "input_token": "Marker", - "limit_key": "MaxItems", - "output_token": "NextPageMarker", - "result_key": "Domains" - }, - "ListOperations": { - "input_token": "Marker", - "limit_key": "MaxItems", - "output_token": "NextPageMarker", - "result_key": "Operations" - } - } -} \ No newline at end of file diff --git a/workshops/monte-carlo-on-ec2-spot-fleet/src/web/node_modules/aws-sdk/apis/runtime.lex-2016-11-28.examples.json b/workshops/monte-carlo-on-ec2-spot-fleet/src/web/node_modules/aws-sdk/apis/runtime.lex-2016-11-28.examples.json deleted file mode 100644 index 0ea7e3b0..00000000 --- a/workshops/monte-carlo-on-ec2-spot-fleet/src/web/node_modules/aws-sdk/apis/runtime.lex-2016-11-28.examples.json +++ /dev/null @@ -1,5 +0,0 @@ -{ - "version": "1.0", - "examples": { - } -} diff --git a/workshops/monte-carlo-on-ec2-spot-fleet/src/web/node_modules/aws-sdk/apis/runtime.lex-2016-11-28.min.json b/workshops/monte-carlo-on-ec2-spot-fleet/src/web/node_modules/aws-sdk/apis/runtime.lex-2016-11-28.min.json deleted file mode 100644 index e906a6bc..00000000 --- a/workshops/monte-carlo-on-ec2-spot-fleet/src/web/node_modules/aws-sdk/apis/runtime.lex-2016-11-28.min.json +++ /dev/null @@ -1,220 +0,0 @@ -{ - "version": "2.0", - "metadata": { - "apiVersion": "2016-11-28", - "endpointPrefix": "runtime.lex", - "jsonVersion": "1.1", - "protocol": "rest-json", - "serviceFullName": "Amazon Lex Runtime Service", - "signatureVersion": "v4", - "signingName": "lex", - "uid": "runtime.lex-2016-11-28" - }, - "operations": { - "PostContent": { - "http": { - "requestUri": "/bot/{botName}/alias/{botAlias}/user/{userId}/content" - }, - "input": { - "type": "structure", - "required": [ - "botName", - "botAlias", - "userId", - "contentType", - "inputStream" - ], - "members": { - "botName": { - "location": "uri", - "locationName": "botName" - }, - "botAlias": { - "location": "uri", - "locationName": "botAlias" - }, - "userId": { - "location": "uri", - "locationName": "userId" - }, - "sessionAttributes": { - "shape": "S5", - "jsonvalue": true, - "location": "header", - "locationName": "x-amz-lex-session-attributes" - }, - "requestAttributes": { - "shape": "S5", - "jsonvalue": true, - "location": "header", - "locationName": "x-amz-lex-request-attributes" - }, - "contentType": { - "location": "header", - "locationName": "Content-Type" - }, - "accept": { - "location": "header", - "locationName": "Accept" - }, - "inputStream": { - "shape": "S8" - } - }, - "payload": "inputStream" - }, - "output": { - "type": "structure", - "members": { - "contentType": { - "location": "header", - "locationName": "Content-Type" - }, - "intentName": { - "location": "header", - "locationName": "x-amz-lex-intent-name" - }, - "slots": { - "jsonvalue": true, - "location": "header", - "locationName": "x-amz-lex-slots" - }, - "sessionAttributes": { - "jsonvalue": true, - "location": "header", - "locationName": "x-amz-lex-session-attributes" - }, - "message": { - "shape": "Sc", - "location": "header", - "locationName": "x-amz-lex-message" - }, - "dialogState": { - "location": "header", - "locationName": "x-amz-lex-dialog-state" - }, - "slotToElicit": { - "location": "header", - "locationName": "x-amz-lex-slot-to-elicit" - }, - "inputTranscript": { - "location": "header", - "locationName": "x-amz-lex-input-transcript" - }, - "audioStream": { - "shape": "S8" - } - }, - "payload": "audioStream" - }, - "authtype": "v4-unsigned-body" - }, - "PostText": { - "http": { - "requestUri": "/bot/{botName}/alias/{botAlias}/user/{userId}/text" - }, - "input": { - "type": "structure", - "required": [ - "botName", - "botAlias", - "userId", - "inputText" - ], - "members": { - "botName": { - "location": "uri", - "locationName": "botName" - }, - "botAlias": { - "location": "uri", - "locationName": "botAlias" - }, - "userId": { - "location": "uri", - "locationName": "userId" - }, - "sessionAttributes": { - "shape": "Sf" - }, - "requestAttributes": { - "shape": "Sf" - }, - "inputText": { - "shape": "Sc" - } - } - }, - "output": { - "type": "structure", - "members": { - "intentName": {}, - "slots": { - "shape": "Sf" - }, - "sessionAttributes": { - "shape": "Sf" - }, - "message": { - "shape": "Sc" - }, - "dialogState": {}, - "slotToElicit": {}, - "responseCard": { - "type": "structure", - "members": { - "version": {}, - "contentType": {}, - "genericAttachments": { - "type": "list", - "member": { - "type": "structure", - "members": { - "title": {}, - "subTitle": {}, - "attachmentLinkUrl": {}, - "imageUrl": {}, - "buttons": { - "type": "list", - "member": { - "type": "structure", - "required": [ - "text", - "value" - ], - "members": { - "text": {}, - "value": {} - } - } - } - } - } - } - } - } - } - } - } - }, - "shapes": { - "S5": { - "type": "string", - "sensitive": true - }, - "S8": { - "type": "blob", - "streaming": true - }, - "Sc": { - "type": "string", - "sensitive": true - }, - "Sf": { - "type": "map", - "key": {}, - "value": {}, - "sensitive": true - } - } -} \ No newline at end of file diff --git a/workshops/monte-carlo-on-ec2-spot-fleet/src/web/node_modules/aws-sdk/apis/runtime.lex-2016-11-28.paginators.json b/workshops/monte-carlo-on-ec2-spot-fleet/src/web/node_modules/aws-sdk/apis/runtime.lex-2016-11-28.paginators.json deleted file mode 100644 index 5677bd8e..00000000 --- a/workshops/monte-carlo-on-ec2-spot-fleet/src/web/node_modules/aws-sdk/apis/runtime.lex-2016-11-28.paginators.json +++ /dev/null @@ -1,4 +0,0 @@ -{ - "pagination": { - } -} diff --git a/workshops/monte-carlo-on-ec2-spot-fleet/src/web/node_modules/aws-sdk/apis/s3-2006-03-01.examples.json b/workshops/monte-carlo-on-ec2-spot-fleet/src/web/node_modules/aws-sdk/apis/s3-2006-03-01.examples.json deleted file mode 100644 index ac9e0f4e..00000000 --- a/workshops/monte-carlo-on-ec2-spot-fleet/src/web/node_modules/aws-sdk/apis/s3-2006-03-01.examples.json +++ /dev/null @@ -1,1876 +0,0 @@ -{ - "version": "1.0", - "examples": { - "AbortMultipartUpload": [ - { - "input": { - "Bucket": "examplebucket", - "Key": "bigobject", - "UploadId": "xadcOB_7YPBOJuoFiQ9cz4P3Pe6FIZwO4f7wN93uHsNBEw97pl5eNwzExg0LAT2dUN91cOmrEQHDsP3WA60CEg--" - }, - "output": { - }, - "comments": { - "input": { - }, - "output": { - } - }, - "description": "The following example aborts a multipart upload.", - "id": "to-abort-a-multipart-upload-1481853354987", - "title": "To abort a multipart upload" - } - ], - "CompleteMultipartUpload": [ - { - "input": { - "Bucket": "examplebucket", - "Key": "bigobject", - "MultipartUpload": { - "Parts": [ - { - "ETag": "\"d8c2eafd90c266e19ab9dcacc479f8af\"", - "PartNumber": "1" - }, - { - "ETag": "\"d8c2eafd90c266e19ab9dcacc479f8af\"", - "PartNumber": "2" - } - ] - }, - "UploadId": "7YPBOJuoFiQ9cz4P3Pe6FIZwO4f7wN93uHsNBEw97pl5eNwzExg0LAT2dUN91cOmrEQHDsP3WA60CEg--" - }, - "output": { - "Bucket": "acexamplebucket", - "ETag": "\"4d9031c7644d8081c2829f4ea23c55f7-2\"", - "Key": "bigobject", - "Location": "https://examplebucket.s3.amazonaws.com/bigobject" - }, - "comments": { - "input": { - }, - "output": { - } - }, - "description": "The following example completes a multipart upload.", - "id": "to-complete-multipart-upload-1481851590483", - "title": "To complete multipart upload" - } - ], - "CopyObject": [ - { - "input": { - "Bucket": "destinationbucket", - "CopySource": "/sourcebucket/HappyFacejpg", - "Key": "HappyFaceCopyjpg" - }, - "output": { - "CopyObjectResult": { - "ETag": "\"6805f2cfc46c0f04559748bb039d69ae\"", - "LastModified": "2016-12-15T17:38:53.000Z" - } - }, - "comments": { - "input": { - }, - "output": { - } - }, - "description": "The following example copies an object from one bucket to another.", - "id": "to-copy-an-object-1481823186878", - "title": "To copy an object" - } - ], - "CreateBucket": [ - { - "input": { - "Bucket": "examplebucket", - "CreateBucketConfiguration": { - "LocationConstraint": "eu-west-1" - } - }, - "output": { - "Location": "http://examplebucket.s3.amazonaws.com/" - }, - "comments": { - "input": { - }, - "output": { - } - }, - "description": "The following example creates a bucket. The request specifies an AWS region where to create the bucket.", - "id": "to-create-a-bucket-in-a-specific-region-1483399072992", - "title": "To create a bucket in a specific region" - }, - { - "input": { - "Bucket": "examplebucket" - }, - "output": { - "Location": "/examplebucket" - }, - "comments": { - "input": { - }, - "output": { - } - }, - "description": "The following example creates a bucket.", - "id": "to-create-a-bucket--1472851826060", - "title": "To create a bucket " - } - ], - "CreateMultipartUpload": [ - { - "input": { - "Bucket": "examplebucket", - "Key": "largeobject" - }, - "output": { - "Bucket": "examplebucket", - "Key": "largeobject", - "UploadId": "ibZBv_75gd9r8lH_gqXatLdxMVpAlj6ZQjEs.OwyF3953YdwbcQnMA2BLGn8Lx12fQNICtMw5KyteFeHw.Sjng--" - }, - "comments": { - "input": { - }, - "output": { - } - }, - "description": "The following example initiates a multipart upload.", - "id": "to-initiate-a-multipart-upload-1481836794513", - "title": "To initiate a multipart upload" - } - ], - "DeleteBucket": [ - { - "input": { - "Bucket": "forrandall2" - }, - "comments": { - "input": { - }, - "output": { - } - }, - "description": "The following example deletes the specified bucket.", - "id": "to-delete-a-bucket-1473108514262", - "title": "To delete a bucket" - } - ], - "DeleteBucketCors": [ - { - "input": { - "Bucket": "examplebucket" - }, - "comments": { - "input": { - }, - "output": { - } - }, - "description": "The following example deletes CORS configuration on a bucket.", - "id": "to-delete-cors-configuration-on-a-bucket-1483042856112", - "title": "To delete cors configuration on a bucket." - } - ], - "DeleteBucketLifecycle": [ - { - "input": { - "Bucket": "examplebucket" - }, - "comments": { - "input": { - }, - "output": { - } - }, - "description": "The following example deletes lifecycle configuration on a bucket.", - "id": "to-delete-lifecycle-configuration-on-a-bucket-1483043310583", - "title": "To delete lifecycle configuration on a bucket." - } - ], - "DeleteBucketPolicy": [ - { - "input": { - "Bucket": "examplebucket" - }, - "comments": { - "input": { - }, - "output": { - } - }, - "description": "The following example deletes bucket policy on the specified bucket.", - "id": "to-delete-bucket-policy-1483043406577", - "title": "To delete bucket policy" - } - ], - "DeleteBucketReplication": [ - { - "input": { - "Bucket": "example" - }, - "comments": { - "input": { - }, - "output": { - } - }, - "description": "The following example deletes replication configuration set on bucket.", - "id": "to-delete-bucket-replication-configuration-1483043684668", - "title": "To delete bucket replication configuration" - } - ], - "DeleteBucketTagging": [ - { - "input": { - "Bucket": "examplebucket" - }, - "comments": { - "input": { - }, - "output": { - } - }, - "description": "The following example deletes bucket tags.", - "id": "to-delete-bucket-tags-1483043846509", - "title": "To delete bucket tags" - } - ], - "DeleteBucketWebsite": [ - { - "input": { - "Bucket": "examplebucket" - }, - "comments": { - "input": { - }, - "output": { - } - }, - "description": "The following example deletes bucket website configuration.", - "id": "to-delete-bucket-website-configuration-1483043937825", - "title": "To delete bucket website configuration" - } - ], - "DeleteObject": [ - { - "input": { - "Bucket": "ExampleBucket", - "Key": "HappyFace.jpg" - }, - "comments": { - "input": { - }, - "output": { - } - }, - "description": "The following example deletes an object from a non-versioned bucket.", - "id": "to-delete-an-object-from-a-non-versioned-bucket-1481588533089", - "title": "To delete an object (from a non-versioned bucket)" - }, - { - "input": { - "Bucket": "examplebucket", - "Key": "objectkey.jpg" - }, - "output": { - }, - "comments": { - "input": { - }, - "output": { - } - }, - "description": "The following example deletes an object from an S3 bucket.", - "id": "to-delete-an-object-1472850136595", - "title": "To delete an object" - } - ], - "DeleteObjectTagging": [ - { - "input": { - "Bucket": "examplebucket", - "Key": "HappyFace.jpg", - "VersionId": "ydlaNkwWm0SfKJR.T1b1fIdPRbldTYRI" - }, - "output": { - "VersionId": "ydlaNkwWm0SfKJR.T1b1fIdPRbldTYRI" - }, - "comments": { - "input": { - }, - "output": { - } - }, - "description": "The following example removes tag set associated with the specified object version. The request specifies both the object key and object version.", - "id": "to-remove-tag-set-from-an-object-version-1483145285913", - "title": "To remove tag set from an object version" - }, - { - "input": { - "Bucket": "examplebucket", - "Key": "HappyFace.jpg" - }, - "output": { - "VersionId": "null" - }, - "comments": { - "input": { - }, - "output": { - } - }, - "description": "The following example removes tag set associated with the specified object. If the bucket is versioning enabled, the operation removes tag set from the latest object version.", - "id": "to-remove-tag-set-from-an-object-1483145342862", - "title": "To remove tag set from an object" - } - ], - "DeleteObjects": [ - { - "input": { - "Bucket": "examplebucket", - "Delete": { - "Objects": [ - { - "Key": "HappyFace.jpg", - "VersionId": "2LWg7lQLnY41.maGB5Z6SWW.dcq0vx7b" - }, - { - "Key": "HappyFace.jpg", - "VersionId": "yoz3HB.ZhCS_tKVEmIOr7qYyyAaZSKVd" - } - ], - "Quiet": false - } - }, - "output": { - "Deleted": [ - { - "Key": "HappyFace.jpg", - "VersionId": "yoz3HB.ZhCS_tKVEmIOr7qYyyAaZSKVd" - }, - { - "Key": "HappyFace.jpg", - "VersionId": "2LWg7lQLnY41.maGB5Z6SWW.dcq0vx7b" - } - ] - }, - "comments": { - "input": { - }, - "output": { - } - }, - "description": "The following example deletes objects from a bucket. The request specifies object versions. S3 deletes specific object versions and returns the key and versions of deleted objects in the response.", - "id": "to-delete-multiple-object-versions-from-a-versioned-bucket-1483147087737", - "title": "To delete multiple object versions from a versioned bucket" - }, - { - "input": { - "Bucket": "examplebucket", - "Delete": { - "Objects": [ - { - "Key": "objectkey1" - }, - { - "Key": "objectkey2" - } - ], - "Quiet": false - } - }, - "output": { - "Deleted": [ - { - "DeleteMarker": "true", - "DeleteMarkerVersionId": "A._w1z6EFiCF5uhtQMDal9JDkID9tQ7F", - "Key": "objectkey1" - }, - { - "DeleteMarker": "true", - "DeleteMarkerVersionId": "iOd_ORxhkKe_e8G8_oSGxt2PjsCZKlkt", - "Key": "objectkey2" - } - ] - }, - "comments": { - "input": { - }, - "output": { - } - }, - "description": "The following example deletes objects from a bucket. The bucket is versioned, and the request does not specify the object version to delete. In this case, all versions remain in the bucket and S3 adds a delete marker.", - "id": "to-delete-multiple-objects-from-a-versioned-bucket-1483146248805", - "title": "To delete multiple objects from a versioned bucket" - } - ], - "GetBucketCors": [ - { - "input": { - "Bucket": "examplebucket" - }, - "output": { - "CORSRules": [ - { - "AllowedHeaders": [ - "Authorization" - ], - "AllowedMethods": [ - "GET" - ], - "AllowedOrigins": [ - "*" - ], - "MaxAgeSeconds": 3000 - } - ] - }, - "comments": { - "input": { - }, - "output": { - } - }, - "description": "The following example returns cross-origin resource sharing (CORS) configuration set on a bucket.", - "id": "to-get-cors-configuration-set-on-a-bucket-1481596855475", - "title": "To get cors configuration set on a bucket" - } - ], - "GetBucketLifecycle": [ - { - "input": { - "Bucket": "acl1" - }, - "output": { - "Rules": [ - { - "Expiration": { - "Days": 1 - }, - "ID": "delete logs", - "Prefix": "123/", - "Status": "Enabled" - } - ] - }, - "comments": { - "input": { - }, - "output": { - } - }, - "description": "The following example gets ACL on the specified bucket.", - "id": "to-get-a-bucket-acl-1474413606503", - "title": "To get a bucket acl" - } - ], - "GetBucketLifecycleConfiguration": [ - { - "input": { - "Bucket": "examplebucket" - }, - "output": { - "Rules": [ - { - "ID": "Rule for TaxDocs/", - "Prefix": "TaxDocs", - "Status": "Enabled", - "Transitions": [ - { - "Days": 365, - "StorageClass": "STANDARD_IA" - } - ] - } - ] - }, - "comments": { - "input": { - }, - "output": { - } - }, - "description": "The following example retrieves lifecycle configuration on set on a bucket. ", - "id": "to-get-lifecycle-configuration-on-a-bucket-1481666063200", - "title": "To get lifecycle configuration on a bucket" - } - ], - "GetBucketLocation": [ - { - "input": { - "Bucket": "examplebucket" - }, - "output": { - "LocationConstraint": "us-west-2" - }, - "comments": { - "input": { - }, - "output": { - } - }, - "description": "The following example returns bucket location.", - "id": "to-get-bucket-location-1481594573609", - "title": "To get bucket location" - } - ], - "GetBucketNotification": [ - { - "input": { - "Bucket": "examplebucket" - }, - "output": { - "QueueConfiguration": { - "Event": "s3:ObjectCreated:Put", - "Events": [ - "s3:ObjectCreated:Put" - ], - "Id": "MDQ2OGQ4NDEtOTBmNi00YTM4LTk0NzYtZDIwN2I3NWQ1NjIx", - "Queue": "arn:aws:sqs:us-east-1:acct-id:S3ObjectCreatedEventQueue" - }, - "TopicConfiguration": { - "Event": "s3:ObjectCreated:Copy", - "Events": [ - "s3:ObjectCreated:Copy" - ], - "Id": "YTVkMWEzZGUtNTY1NS00ZmE2LWJjYjktMmRlY2QwODFkNTJi", - "Topic": "arn:aws:sns:us-east-1:acct-id:S3ObjectCreatedEventTopic" - } - }, - "comments": { - "input": { - }, - "output": { - } - }, - "description": "The following example returns notification configuration set on a bucket.", - "id": "to-get-notification-configuration-set-on-a-bucket-1481594028667", - "title": "To get notification configuration set on a bucket" - }, - { - "input": { - "Bucket": "examplebucket" - }, - "output": { - "QueueConfiguration": { - "Event": "s3:ObjectCreated:Put", - "Events": [ - "s3:ObjectCreated:Put" - ], - "Id": "MDQ2OGQ4NDEtOTBmNi00YTM4LTk0NzYtZDIwN2I3NWQ1NjIx", - "Queue": "arn:aws:sqs:us-east-1:acct-id:S3ObjectCreatedEventQueue" - }, - "TopicConfiguration": { - "Event": "s3:ObjectCreated:Copy", - "Events": [ - "s3:ObjectCreated:Copy" - ], - "Id": "YTVkMWEzZGUtNTY1NS00ZmE2LWJjYjktMmRlY2QwODFkNTJi", - "Topic": "arn:aws:sns:us-east-1:acct-id:S3ObjectCreatedEventTopic" - } - }, - "comments": { - "input": { - }, - "output": { - } - }, - "description": "The following example returns notification configuration set on a bucket.", - "id": "to-get-notification-configuration-set-on-a-bucket-1481594028667", - "title": "To get notification configuration set on a bucket" - } - ], - "GetBucketPolicy": [ - { - "input": { - "Bucket": "examplebucket" - }, - "output": { - "Policy": "{\"Version\":\"2008-10-17\",\"Id\":\"LogPolicy\",\"Statement\":[{\"Sid\":\"Enables the log delivery group to publish logs to your bucket \",\"Effect\":\"Allow\",\"Principal\":{\"AWS\":\"111122223333\"},\"Action\":[\"s3:GetBucketAcl\",\"s3:GetObjectAcl\",\"s3:PutObject\"],\"Resource\":[\"arn:aws:s3:::policytest1/*\",\"arn:aws:s3:::policytest1\"]}]}" - }, - "comments": { - "input": { - }, - "output": { - } - }, - "description": "The following example returns bucket policy associated with a bucket.", - "id": "to-get-bucket-policy-1481595098424", - "title": "To get bucket policy" - } - ], - "GetBucketReplication": [ - { - "input": { - "Bucket": "examplebucket" - }, - "output": { - "ReplicationConfiguration": { - "Role": "arn:aws:iam::acct-id:role/example-role", - "Rules": [ - { - "Destination": { - "Bucket": "arn:aws:s3:::destination-bucket" - }, - "ID": "MWIwNTkwZmItMTE3MS00ZTc3LWJkZDEtNzRmODQwYzc1OTQy", - "Prefix": "Tax", - "Status": "Enabled" - } - ] - } - }, - "comments": { - "input": { - }, - "output": { - } - }, - "description": "The following example returns replication configuration set on a bucket.", - "id": "to-get-replication-configuration-set-on-a-bucket-1481593597175", - "title": "To get replication configuration set on a bucket" - } - ], - "GetBucketRequestPayment": [ - { - "input": { - "Bucket": "examplebucket" - }, - "output": { - "Payer": "BucketOwner" - }, - "comments": { - "input": { - }, - "output": { - } - }, - "description": "The following example retrieves bucket versioning configuration.", - "id": "to-get-bucket-versioning-configuration-1483037183929", - "title": "To get bucket versioning configuration" - } - ], - "GetBucketTagging": [ - { - "input": { - "Bucket": "examplebucket" - }, - "output": { - "TagSet": [ - { - "Key": "key1", - "Value": "value1" - }, - { - "Key": "key2", - "Value": "value2" - } - ] - }, - "comments": { - "input": { - }, - "output": { - } - }, - "description": "The following example returns tag set associated with a bucket", - "id": "to-get-tag-set-associated-with-a-bucket-1481593232107", - "title": "To get tag set associated with a bucket" - } - ], - "GetBucketVersioning": [ - { - "input": { - "Bucket": "examplebucket" - }, - "output": { - "MFADelete": "Disabled", - "Status": "Enabled" - }, - "comments": { - "input": { - }, - "output": { - } - }, - "description": "The following example retrieves bucket versioning configuration.", - "id": "to-get-bucket-versioning-configuration-1483037183929", - "title": "To get bucket versioning configuration" - } - ], - "GetBucketWebsite": [ - { - "input": { - "Bucket": "examplebucket" - }, - "output": { - "ErrorDocument": { - "Key": "error.html" - }, - "IndexDocument": { - "Suffix": "index.html" - } - }, - "comments": { - "input": { - }, - "output": { - } - }, - "description": "The following example retrieves website configuration of a bucket.", - "id": "to-get-bucket-website-configuration-1483037016926", - "title": "To get bucket website configuration" - } - ], - "GetObject": [ - { - "input": { - "Bucket": "examplebucket", - "Key": "HappyFace.jpg" - }, - "output": { - "AcceptRanges": "bytes", - "ContentLength": "3191", - "ContentType": "image/jpeg", - "ETag": "\"6805f2cfc46c0f04559748bb039d69ae\"", - "LastModified": "Thu, 15 Dec 2016 01:19:41 GMT", - "Metadata": { - }, - "TagCount": 2, - "VersionId": "null" - }, - "comments": { - "input": { - }, - "output": { - } - }, - "description": "The following example retrieves an object for an S3 bucket.", - "id": "to-retrieve-an-object-1481827837012", - "title": "To retrieve an object" - }, - { - "input": { - "Bucket": "examplebucket", - "Key": "SampleFile.txt", - "Range": "bytes=0-9" - }, - "output": { - "AcceptRanges": "bytes", - "ContentLength": "10", - "ContentRange": "bytes 0-9/43", - "ContentType": "text/plain", - "ETag": "\"0d94420ffd0bc68cd3d152506b97a9cc\"", - "LastModified": "Thu, 09 Oct 2014 22:57:28 GMT", - "Metadata": { - }, - "VersionId": "null" - }, - "comments": { - "input": { - }, - "output": { - } - }, - "description": "The following example retrieves an object for an S3 bucket. The request specifies the range header to retrieve a specific byte range.", - "id": "to-retrieve-a-byte-range-of-an-object--1481832674603", - "title": "To retrieve a byte range of an object " - } - ], - "GetObjectAcl": [ - { - "input": { - "Bucket": "examplebucket", - "Key": "HappyFace.jpg" - }, - "output": { - "Grants": [ - { - "Grantee": { - "DisplayName": "owner-display-name", - "ID": "examplee7a2f25102679df27bb0ae12b3f85be6f290b936c4393484be31bebcc", - "Type": "CanonicalUser" - }, - "Permission": "WRITE" - }, - { - "Grantee": { - "DisplayName": "owner-display-name", - "ID": "examplee7a2f25102679df27bb0ae12b3f85be6f290b936c4393484be31bebcc", - "Type": "CanonicalUser" - }, - "Permission": "WRITE_ACP" - }, - { - "Grantee": { - "DisplayName": "owner-display-name", - "ID": "examplee7a2f25102679df27bb0ae12b3f85be6f290b936c4393484be31bebcc", - "Type": "CanonicalUser" - }, - "Permission": "READ" - }, - { - "Grantee": { - "DisplayName": "owner-display-name", - "ID": "852b113eexamplee7a2f25102679df27bb0ae12b3f85be6f290b936c4393484be31bebcc7a2f25102679df27bb0ae12b3f85be6f290b936c4393484be31bebcc", - "Type": "CanonicalUser" - }, - "Permission": "READ_ACP" - } - ], - "Owner": { - "DisplayName": "owner-display-name", - "ID": "examplee7a2f25102679df27bb0ae12b3f85be6f290b936c4393484be31bebcc" - } - }, - "comments": { - "input": { - }, - "output": { - } - }, - "description": "The following example retrieves access control list (ACL) of an object.", - "id": "to-retrieve-object-acl-1481833557740", - "title": "To retrieve object ACL" - } - ], - "GetObjectTagging": [ - { - "input": { - "Bucket": "examplebucket", - "Key": "HappyFace.jpg" - }, - "output": { - "TagSet": [ - { - "Key": "Key4", - "Value": "Value4" - }, - { - "Key": "Key3", - "Value": "Value3" - } - ], - "VersionId": "null" - }, - "comments": { - "input": { - }, - "output": { - } - }, - "description": "The following example retrieves tag set of an object.", - "id": "to-retrieve-tag-set-of-an-object-1481833847896", - "title": "To retrieve tag set of an object" - }, - { - "input": { - "Bucket": "examplebucket", - "Key": "exampleobject", - "VersionId": "ydlaNkwWm0SfKJR.T1b1fIdPRbldTYRI" - }, - "output": { - "TagSet": [ - { - "Key": "Key1", - "Value": "Value1" - } - ], - "VersionId": "ydlaNkwWm0SfKJR.T1b1fIdPRbldTYRI" - }, - "comments": { - "input": { - }, - "output": { - } - }, - "description": "The following example retrieves tag set of an object. The request specifies object version.", - "id": "to-retrieve-tag-set-of-a-specific-object-version-1483400283663", - "title": "To retrieve tag set of a specific object version" - } - ], - "GetObjectTorrent": [ - { - "input": { - "Bucket": "examplebucket", - "Key": "HappyFace.jpg" - }, - "output": { - }, - "comments": { - "input": { - }, - "output": { - } - }, - "description": "The following example retrieves torrent files of an object.", - "id": "to-retrieve-torrent-files-for-an-object-1481834115959", - "title": "To retrieve torrent files for an object" - } - ], - "HeadBucket": [ - { - "input": { - "Bucket": "acl1" - }, - "comments": { - "input": { - }, - "output": { - } - }, - "description": "This operation checks to see if a bucket exists.", - "id": "to-determine-if-bucket-exists-1473110292262", - "title": "To determine if bucket exists" - } - ], - "HeadObject": [ - { - "input": { - "Bucket": "examplebucket", - "Key": "HappyFace.jpg" - }, - "output": { - "AcceptRanges": "bytes", - "ContentLength": "3191", - "ContentType": "image/jpeg", - "ETag": "\"6805f2cfc46c0f04559748bb039d69ae\"", - "LastModified": "Thu, 15 Dec 2016 01:19:41 GMT", - "Metadata": { - }, - "VersionId": "null" - }, - "comments": { - "input": { - }, - "output": { - } - }, - "description": "The following example retrieves an object metadata.", - "id": "to-retrieve-metadata-of-an-object-without-returning-the-object-itself-1481834820480", - "title": "To retrieve metadata of an object without returning the object itself" - } - ], - "ListBuckets": [ - { - "output": { - "Buckets": [ - { - "CreationDate": "2012-02-15T21: 03: 02.000Z", - "Name": "examplebucket" - }, - { - "CreationDate": "2011-07-24T19: 33: 50.000Z", - "Name": "examplebucket2" - }, - { - "CreationDate": "2010-12-17T00: 56: 49.000Z", - "Name": "examplebucket3" - } - ], - "Owner": { - "DisplayName": "own-display-name", - "ID": "examplee7a2f25102679df27bb0ae12b3f85be6f290b936c4393484be31" - } - }, - "comments": { - "input": { - }, - "output": { - } - }, - "description": "The following example return versions of an object with specific key name prefix. The request limits the number of items returned to two. If there are are more than two object version, S3 returns NextToken in the response. You can specify this token value in your next request to fetch next set of object versions.", - "id": "to-list-object-versions-1481910996058", - "title": "To list object versions" - } - ], - "ListMultipartUploads": [ - { - "input": { - "Bucket": "examplebucket" - }, - "output": { - "Uploads": [ - { - "Initiated": "2014-05-01T05:40:58.000Z", - "Initiator": { - "DisplayName": "display-name", - "ID": "examplee7a2f25102679df27bb0ae12b3f85be6f290b936c4393484be31bebcc" - }, - "Key": "JavaFile", - "Owner": { - "DisplayName": "display-name", - "ID": "examplee7a2f25102679df27bb0ae12b3f85be6f290b936c4393484be31bebcc" - }, - "StorageClass": "STANDARD", - "UploadId": "examplelUa.CInXklLQtSMJITdUnoZ1Y5GACB5UckOtspm5zbDMCkPF_qkfZzMiFZ6dksmcnqxJyIBvQMG9X9Q--" - }, - { - "Initiated": "2014-05-01T05:41:27.000Z", - "Initiator": { - "DisplayName": "display-name", - "ID": "examplee7a2f25102679df27bb0ae12b3f85be6f290b936c4393484be31bebcc" - }, - "Key": "JavaFile", - "Owner": { - "DisplayName": "display-name", - "ID": "examplee7a2f25102679df27bb0ae12b3f85be6f290b936c4393484be31bebcc" - }, - "StorageClass": "STANDARD", - "UploadId": "examplelo91lv1iwvWpvCiJWugw2xXLPAD7Z8cJyX9.WiIRgNrdG6Ldsn.9FtS63TCl1Uf5faTB.1U5Ckcbmdw--" - } - ] - }, - "comments": { - "input": { - }, - "output": { - } - }, - "description": "The following example lists in-progress multipart uploads on a specific bucket.", - "id": "to-list-in-progress-multipart-uploads-on-a-bucket-1481852775260", - "title": "To list in-progress multipart uploads on a bucket" - }, - { - "input": { - "Bucket": "examplebucket", - "KeyMarker": "nextkeyfrompreviousresponse", - "MaxUploads": "2", - "UploadIdMarker": "valuefrompreviousresponse" - }, - "output": { - "Bucket": "acl1", - "IsTruncated": true, - "KeyMarker": "", - "MaxUploads": "2", - "NextKeyMarker": "someobjectkey", - "NextUploadIdMarker": "examplelo91lv1iwvWpvCiJWugw2xXLPAD7Z8cJyX9.WiIRgNrdG6Ldsn.9FtS63TCl1Uf5faTB.1U5Ckcbmdw--", - "UploadIdMarker": "", - "Uploads": [ - { - "Initiated": "2014-05-01T05:40:58.000Z", - "Initiator": { - "DisplayName": "ownder-display-name", - "ID": "examplee7a2f25102679df27bb0ae12b3f85be6f290b936c4393484be31bebcc" - }, - "Key": "JavaFile", - "Owner": { - "DisplayName": "mohanataws", - "ID": "852b113e7a2f25102679df27bb0ae12b3f85be6f290b936c4393484be31bebcc" - }, - "StorageClass": "STANDARD", - "UploadId": "gZ30jIqlUa.CInXklLQtSMJITdUnoZ1Y5GACB5UckOtspm5zbDMCkPF_qkfZzMiFZ6dksmcnqxJyIBvQMG9X9Q--" - }, - { - "Initiated": "2014-05-01T05:41:27.000Z", - "Initiator": { - "DisplayName": "ownder-display-name", - "ID": "examplee7a2f25102679df27bb0ae12b3f85be6f290b936c4393484be31bebcc" - }, - "Key": "JavaFile", - "Owner": { - "DisplayName": "ownder-display-name", - "ID": "examplee7a2f25102679df27bb0ae12b3f85be6f290b936c4393484be31bebcc" - }, - "StorageClass": "STANDARD", - "UploadId": "b7tZSqIlo91lv1iwvWpvCiJWugw2xXLPAD7Z8cJyX9.WiIRgNrdG6Ldsn.9FtS63TCl1Uf5faTB.1U5Ckcbmdw--" - } - ] - }, - "comments": { - "input": { - }, - "output": { - } - }, - "description": "The following example specifies the upload-id-marker and key-marker from previous truncated response to retrieve next setup of multipart uploads.", - "id": "list-next-set-of-multipart-uploads-when-previous-result-is-truncated-1482428106748", - "title": "List next set of multipart uploads when previous result is truncated" - } - ], - "ListObjectVersions": [ - { - "input": { - "Bucket": "examplebucket", - "Prefix": "HappyFace.jpg" - }, - "output": { - "Versions": [ - { - "ETag": "\"6805f2cfc46c0f04559748bb039d69ae\"", - "IsLatest": true, - "Key": "HappyFace.jpg", - "LastModified": "2016-12-15T01:19:41.000Z", - "Owner": { - "DisplayName": "owner-display-name", - "ID": "examplee7a2f25102679df27bb0ae12b3f85be6f290b936c4393484be31bebcc" - }, - "Size": 3191, - "StorageClass": "STANDARD", - "VersionId": "null" - }, - { - "ETag": "\"6805f2cfc46c0f04559748bb039d69ae\"", - "IsLatest": false, - "Key": "HappyFace.jpg", - "LastModified": "2016-12-13T00:58:26.000Z", - "Owner": { - "DisplayName": "owner-display-name", - "ID": "examplee7a2f25102679df27bb0ae12b3f85be6f290b936c4393484be31bebcc" - }, - "Size": 3191, - "StorageClass": "STANDARD", - "VersionId": "PHtexPGjH2y.zBgT8LmB7wwLI2mpbz.k" - } - ] - }, - "comments": { - "input": { - }, - "output": { - } - }, - "description": "The following example return versions of an object with specific key name prefix. The request limits the number of items returned to two. If there are are more than two object version, S3 returns NextToken in the response. You can specify this token value in your next request to fetch next set of object versions.", - "id": "to-list-object-versions-1481910996058", - "title": "To list object versions" - } - ], - "ListObjects": [ - { - "input": { - "Bucket": "examplebucket", - "MaxKeys": "2" - }, - "output": { - "Contents": [ - { - "ETag": "\"70ee1738b6b21e2c8a43f3a5ab0eee71\"", - "Key": "example1.jpg", - "LastModified": "2014-11-21T19:40:05.000Z", - "Owner": { - "DisplayName": "myname", - "ID": "12345example25102679df27bb0ae12b3f85be6f290b936c4393484be31bebcc" - }, - "Size": 11, - "StorageClass": "STANDARD" - }, - { - "ETag": "\"9c8af9a76df052144598c115ef33e511\"", - "Key": "example2.jpg", - "LastModified": "2013-11-15T01:10:49.000Z", - "Owner": { - "DisplayName": "myname", - "ID": "12345example25102679df27bb0ae12b3f85be6f290b936c4393484be31bebcc" - }, - "Size": 713193, - "StorageClass": "STANDARD" - } - ], - "NextMarker": "eyJNYXJrZXIiOiBudWxsLCAiYm90b190cnVuY2F0ZV9hbW91bnQiOiAyfQ==" - }, - "comments": { - "input": { - }, - "output": { - } - }, - "description": "The following example list two objects in a bucket.", - "id": "to-list-objects-in-a-bucket-1473447646507", - "title": "To list objects in a bucket" - } - ], - "ListObjectsV2": [ - { - "input": { - "Bucket": "examplebucket", - "MaxKeys": "2" - }, - "output": { - "Contents": [ - { - "ETag": "\"70ee1738b6b21e2c8a43f3a5ab0eee71\"", - "Key": "happyface.jpg", - "LastModified": "2014-11-21T19:40:05.000Z", - "Size": 11, - "StorageClass": "STANDARD" - }, - { - "ETag": "\"becf17f89c30367a9a44495d62ed521a-1\"", - "Key": "test.jpg", - "LastModified": "2014-05-02T04:51:50.000Z", - "Size": 4192256, - "StorageClass": "STANDARD" - } - ], - "IsTruncated": true, - "KeyCount": "2", - "MaxKeys": "2", - "Name": "examplebucket", - "NextContinuationToken": "1w41l63U0xa8q7smH50vCxyTQqdxo69O3EmK28Bi5PcROI4wI/EyIJg==", - "Prefix": "" - }, - "comments": { - "input": { - }, - "output": { - } - }, - "description": "The following example retrieves object list. The request specifies max keys to limit response to include only 2 object keys. ", - "id": "to-get-object-list", - "title": "To get object list" - } - ], - "ListParts": [ - { - "input": { - "Bucket": "examplebucket", - "Key": "bigobject", - "UploadId": "example7YPBOJuoFiQ9cz4P3Pe6FIZwO4f7wN93uHsNBEw97pl5eNwzExg0LAT2dUN91cOmrEQHDsP3WA60CEg--" - }, - "output": { - "Initiator": { - "DisplayName": "owner-display-name", - "ID": "examplee7a2f25102679df27bb0ae12b3f85be6f290b936c4393484be31bebcc" - }, - "Owner": { - "DisplayName": "owner-display-name", - "ID": "examplee7a2f25102679df27bb0ae12b3f85be6f290b936c4393484be31bebcc" - }, - "Parts": [ - { - "ETag": "\"d8c2eafd90c266e19ab9dcacc479f8af\"", - "LastModified": "2016-12-16T00:11:42.000Z", - "PartNumber": "1", - "Size": 26246026 - }, - { - "ETag": "\"d8c2eafd90c266e19ab9dcacc479f8af\"", - "LastModified": "2016-12-16T00:15:01.000Z", - "PartNumber": "2", - "Size": 26246026 - } - ], - "StorageClass": "STANDARD" - }, - "comments": { - "input": { - }, - "output": { - } - }, - "description": "The following example lists parts uploaded for a specific multipart upload.", - "id": "to-list-parts-of-a-multipart-upload-1481852006923", - "title": "To list parts of a multipart upload." - } - ], - "PutBucketAcl": [ - { - "input": { - "Bucket": "examplebucket", - "GrantFullControl": "id=examplee7a2f25102679df27bb0ae12b3f85be6f290b936c4393484", - "GrantWrite": "uri=http://acs.amazonaws.com/groups/s3/LogDelivery" - }, - "comments": { - "input": { - }, - "output": { - } - }, - "description": "The following example replaces existing ACL on a bucket. The ACL grants the bucket owner (specified using the owner ID) and write permission to the LogDelivery group. Because this is a replace operation, you must specify all the grants in your request. To incrementally add or remove ACL grants, you might use the console.", - "id": "put-bucket-acl-1482260397033", - "title": "Put bucket acl" - } - ], - "PutBucketCors": [ - { - "input": { - "Bucket": "", - "CORSConfiguration": { - "CORSRules": [ - { - "AllowedHeaders": [ - "*" - ], - "AllowedMethods": [ - "PUT", - "POST", - "DELETE" - ], - "AllowedOrigins": [ - "http://www.example.com" - ], - "ExposeHeaders": [ - "x-amz-server-side-encryption" - ], - "MaxAgeSeconds": 3000 - }, - { - "AllowedHeaders": [ - "Authorization" - ], - "AllowedMethods": [ - "GET" - ], - "AllowedOrigins": [ - "*" - ], - "MaxAgeSeconds": 3000 - } - ] - }, - "ContentMD5": "" - }, - "comments": { - "input": { - }, - "output": { - } - }, - "description": "The following example enables PUT, POST, and DELETE requests from www.example.com, and enables GET requests from any domain.", - "id": "to-set-cors-configuration-on-a-bucket-1483037818805", - "title": "To set cors configuration on a bucket." - } - ], - "PutBucketLifecycleConfiguration": [ - { - "input": { - "Bucket": "examplebucket", - "LifecycleConfiguration": { - "Rules": [ - { - "Expiration": { - "Days": 3650 - }, - "Filter": { - "Prefix": "documents/" - }, - "ID": "TestOnly", - "Status": "Enabled", - "Transitions": [ - { - "Days": 365, - "StorageClass": "GLACIER" - } - ] - } - ] - } - }, - "comments": { - "input": { - }, - "output": { - } - }, - "description": "The following example replaces existing lifecycle configuration, if any, on the specified bucket. ", - "id": "put-bucket-lifecycle-1482264533092", - "title": "Put bucket lifecycle" - } - ], - "PutBucketLogging": [ - { - "input": { - "Bucket": "sourcebucket", - "BucketLoggingStatus": { - "LoggingEnabled": { - "TargetBucket": "targetbucket", - "TargetGrants": [ - { - "Grantee": { - "Type": "Group", - "URI": "http://acs.amazonaws.com/groups/global/AllUsers" - }, - "Permission": "READ" - } - ], - "TargetPrefix": "MyBucketLogs/" - } - } - }, - "comments": { - "input": { - }, - "output": { - } - }, - "description": "The following example sets logging policy on a bucket. For the Log Delivery group to deliver logs to the destination bucket, it needs permission for the READ_ACP action which the policy grants.", - "id": "set-logging-configuration-for-a-bucket-1482269119909", - "title": "Set logging configuration for a bucket" - } - ], - "PutBucketNotificationConfiguration": [ - { - "input": { - "Bucket": "examplebucket", - "NotificationConfiguration": { - "TopicConfigurations": [ - { - "Events": [ - "s3:ObjectCreated:*" - ], - "TopicArn": "arn:aws:sns:us-west-2:123456789012:s3-notification-topic" - } - ] - } - }, - "comments": { - "input": { - }, - "output": { - } - }, - "description": "The following example sets notification configuration on a bucket to publish the object created events to an SNS topic.", - "id": "set-notification-configuration-for-a-bucket-1482270296426", - "title": "Set notification configuration for a bucket" - } - ], - "PutBucketPolicy": [ - { - "input": { - "Bucket": "examplebucket", - "Policy": "{\"Version\": \"2012-10-17\", \"Statement\": [{ \"Sid\": \"id-1\",\"Effect\": \"Allow\",\"Principal\": {\"AWS\": \"arn:aws:iam::123456789012:root\"}, \"Action\": [ \"s3:PutObject\",\"s3:PutObjectAcl\"], \"Resource\": [\"arn:aws:s3:::acl3/*\" ] } ]}" - }, - "comments": { - "input": { - }, - "output": { - } - }, - "description": "The following example sets a permission policy on a bucket.", - "id": "set-bucket-policy-1482448903302", - "title": "Set bucket policy" - } - ], - "PutBucketReplication": [ - { - "input": { - "Bucket": "examplebucket", - "ReplicationConfiguration": { - "Role": "arn:aws:iam::123456789012:role/examplerole", - "Rules": [ - { - "Destination": { - "Bucket": "arn:aws:s3:::destinationbucket", - "StorageClass": "STANDARD" - }, - "Prefix": "", - "Status": "Enabled" - } - ] - } - }, - "comments": { - "input": { - }, - "output": { - } - }, - "description": "The following example sets replication configuration on a bucket.", - "id": "id-1", - "title": "Set replication configuration on a bucket" - } - ], - "PutBucketRequestPayment": [ - { - "input": { - "Bucket": "examplebucket", - "RequestPaymentConfiguration": { - "Payer": "Requester" - } - }, - "comments": { - "input": { - }, - "output": { - } - }, - "description": "The following example sets request payment configuration on a bucket so that person requesting the download is charged.", - "id": "set-request-payment-configuration-on-a-bucket-1482343596680", - "title": "Set request payment configuration on a bucket." - } - ], - "PutBucketTagging": [ - { - "input": { - "Bucket": "examplebucket", - "Tagging": { - "TagSet": [ - { - "Key": "Key1", - "Value": "Value1" - }, - { - "Key": "Key2", - "Value": "Value2" - } - ] - } - }, - "comments": { - "input": { - }, - "output": { - } - }, - "description": "The following example sets tags on a bucket. Any existing tags are replaced.", - "id": "set-tags-on-a-bucket-1482346269066", - "title": "Set tags on a bucket" - } - ], - "PutBucketVersioning": [ - { - "input": { - "Bucket": "examplebucket", - "VersioningConfiguration": { - "MFADelete": "Disabled", - "Status": "Enabled" - } - }, - "comments": { - "input": { - }, - "output": { - } - }, - "description": "The following example sets versioning configuration on bucket. The configuration enables versioning on the bucket.", - "id": "set-versioning-configuration-on-a-bucket-1482344186279", - "title": "Set versioning configuration on a bucket" - } - ], - "PutBucketWebsite": [ - { - "input": { - "Bucket": "examplebucket", - "ContentMD5": "", - "WebsiteConfiguration": { - "ErrorDocument": { - "Key": "error.html" - }, - "IndexDocument": { - "Suffix": "index.html" - } - } - }, - "comments": { - "input": { - }, - "output": { - } - }, - "description": "The following example adds website configuration to a bucket.", - "id": "set-website-configuration-on-a-bucket-1482346836261", - "title": "Set website configuration on a bucket" - } - ], - "PutObject": [ - { - "input": { - "Body": "filetoupload", - "Bucket": "examplebucket", - "Key": "exampleobject", - "ServerSideEncryption": "AES256", - "Tagging": "key1=value1&key2=value2" - }, - "output": { - "ETag": "\"6805f2cfc46c0f04559748bb039d69ae\"", - "ServerSideEncryption": "AES256", - "VersionId": "Ri.vC6qVlA4dEnjgRV4ZHsHoFIjqEMNt" - }, - "comments": { - "input": { - }, - "output": { - } - }, - "description": "The following example uploads and object. The request specifies the optional server-side encryption option. The request also specifies optional object tags. If the bucket is versioning enabled, S3 returns version ID in response.", - "id": "to-upload-an-object-and-specify-server-side-encryption-and-object-tags-1483398331831", - "title": "To upload an object and specify server-side encryption and object tags" - }, - { - "input": { - "ACL": "authenticated-read", - "Body": "filetoupload", - "Bucket": "examplebucket", - "Key": "exampleobject" - }, - "output": { - "ETag": "\"6805f2cfc46c0f04559748bb039d69ae\"", - "VersionId": "Kirh.unyZwjQ69YxcQLA8z4F5j3kJJKr" - }, - "comments": { - "input": { - }, - "output": { - } - }, - "description": "The following example uploads and object. The request specifies optional canned ACL (access control list) to all READ access to authenticated users. If the bucket is versioning enabled, S3 returns version ID in response.", - "id": "to-upload-an-object-and-specify-canned-acl-1483397779571", - "title": "To upload an object and specify canned ACL." - }, - { - "input": { - "Body": "HappyFace.jpg", - "Bucket": "examplebucket", - "Key": "HappyFace.jpg" - }, - "output": { - "ETag": "\"6805f2cfc46c0f04559748bb039d69ae\"", - "VersionId": "tpf3zF08nBplQK1XLOefGskR7mGDwcDk" - }, - "comments": { - "input": { - }, - "output": { - } - }, - "description": "The following example uploads an object to a versioning-enabled bucket. The source file is specified using Windows file syntax. S3 returns VersionId of the newly created object.", - "id": "to-upload-an-object-1481760101010", - "title": "To upload an object" - }, - { - "input": { - "Body": "filetoupload", - "Bucket": "examplebucket", - "Key": "objectkey" - }, - "output": { - "ETag": "\"6805f2cfc46c0f04559748bb039d69ae\"", - "VersionId": "Bvq0EDKxOcXLJXNo_Lkz37eM3R4pfzyQ" - }, - "comments": { - "input": { - }, - "output": { - } - }, - "description": "The following example creates an object. If the bucket is versioning enabled, S3 returns version ID in response.", - "id": "to-create-an-object-1483147613675", - "title": "To create an object." - }, - { - "input": { - "Body": "c:\\HappyFace.jpg", - "Bucket": "examplebucket", - "Key": "HappyFace.jpg", - "Tagging": "key1=value1&key2=value2" - }, - "output": { - "ETag": "\"6805f2cfc46c0f04559748bb039d69ae\"", - "VersionId": "psM2sYY4.o1501dSx8wMvnkOzSBB.V4a" - }, - "comments": { - "input": { - }, - "output": { - } - }, - "description": "The following example uploads an object. The request specifies optional object tags. The bucket is versioned, therefore S3 returns version ID of the newly created object.", - "id": "to-upload-an-object-and-specify-optional-tags-1481762310955", - "title": "To upload an object and specify optional tags" - }, - { - "input": { - "Body": "filetoupload", - "Bucket": "examplebucket", - "Key": "exampleobject", - "Metadata": { - "metadata1": "value1", - "metadata2": "value2" - } - }, - "output": { - "ETag": "\"6805f2cfc46c0f04559748bb039d69ae\"", - "VersionId": "pSKidl4pHBiNwukdbcPXAIs.sshFFOc0" - }, - "comments": { - "input": { - }, - "output": { - } - }, - "description": "The following example creates an object. The request also specifies optional metadata. If the bucket is versioning enabled, S3 returns version ID in response.", - "id": "to-upload-object-and-specify-user-defined-metadata-1483396974757", - "title": "To upload object and specify user-defined metadata" - }, - { - "input": { - "Body": "HappyFace.jpg", - "Bucket": "examplebucket", - "Key": "HappyFace.jpg", - "ServerSideEncryption": "AES256", - "StorageClass": "STANDARD_IA" - }, - "output": { - "ETag": "\"6805f2cfc46c0f04559748bb039d69ae\"", - "ServerSideEncryption": "AES256", - "VersionId": "CG612hodqujkf8FaaNfp8U..FIhLROcp" - }, - "comments": { - "input": { - }, - "output": { - } - }, - "description": "The following example uploads an object. The request specifies optional request headers to directs S3 to use specific storage class and use server-side encryption.", - "id": "to-upload-an-object-(specify-optional-headers)", - "title": "To upload an object (specify optional headers)" - } - ], - "PutObjectAcl": [ - { - "input": { - "AccessControlPolicy": { - }, - "Bucket": "examplebucket", - "GrantFullControl": "emailaddress=user1@example.com,emailaddress=user2@example.com", - "GrantRead": "uri=http://acs.amazonaws.com/groups/global/AllUsers", - "Key": "HappyFace.jpg" - }, - "output": { - }, - "comments": { - "input": { - }, - "output": { - } - }, - "description": "The following example adds grants to an object ACL. The first permission grants user1 and user2 FULL_CONTROL and the AllUsers group READ permission.", - "id": "to-grant-permissions-using-object-acl-1481835549285", - "title": "To grant permissions using object ACL" - } - ], - "PutObjectTagging": [ - { - "input": { - "Bucket": "examplebucket", - "Key": "HappyFace.jpg", - "Tagging": { - "TagSet": [ - { - "Key": "Key3", - "Value": "Value3" - }, - { - "Key": "Key4", - "Value": "Value4" - } - ] - } - }, - "output": { - "VersionId": "null" - }, - "comments": { - "input": { - }, - "output": { - } - }, - "description": "The following example adds tags to an existing object.", - "id": "to-add-tags-to-an-existing-object-1481764668793", - "title": "To add tags to an existing object" - } - ], - "RestoreObject": [ - { - "input": { - "Bucket": "examplebucket", - "Key": "archivedobjectkey", - "RestoreRequest": { - "Days": 1, - "GlacierJobParameters": { - "Tier": "Expedited" - } - } - }, - "output": { - }, - "comments": { - "input": { - }, - "output": { - } - }, - "description": "The following example restores for one day an archived copy of an object back into Amazon S3 bucket.", - "id": "to-restore-an-archived-object-1483049329953", - "title": "To restore an archived object" - } - ], - "UploadPart": [ - { - "input": { - "Body": "fileToUpload", - "Bucket": "examplebucket", - "Key": "examplelargeobject", - "PartNumber": "1", - "UploadId": "xadcOB_7YPBOJuoFiQ9cz4P3Pe6FIZwO4f7wN93uHsNBEw97pl5eNwzExg0LAT2dUN91cOmrEQHDsP3WA60CEg--" - }, - "output": { - "ETag": "\"d8c2eafd90c266e19ab9dcacc479f8af\"" - }, - "comments": { - "input": { - }, - "output": { - } - }, - "description": "The following example uploads part 1 of a multipart upload. The example specifies a file name for the part data. The Upload ID is same that is returned by the initiate multipart upload.", - "id": "to-upload-a-part-1481847914943", - "title": "To upload a part" - } - ], - "UploadPartCopy": [ - { - "input": { - "Bucket": "examplebucket", - "CopySource": "/bucketname/sourceobjectkey", - "CopySourceRange": "bytes=1-100000", - "Key": "examplelargeobject", - "PartNumber": "2", - "UploadId": "exampleuoh_10OhKhT7YukE9bjzTPRiuaCotmZM_pFngJFir9OZNrSr5cWa3cq3LZSUsfjI4FI7PkP91We7Nrw--" - }, - "output": { - "CopyPartResult": { - "ETag": "\"65d16d19e65a7508a51f043180edcc36\"", - "LastModified": "2016-12-29T21:44:28.000Z" - } - }, - "comments": { - "input": { - }, - "output": { - } - }, - "description": "The following example uploads a part of a multipart upload by copying a specified byte range from an existing object as data source.", - "id": "to-upload-a-part-by-copying-byte-range-from-an-existing-object-as-data-source-1483048068594", - "title": "To upload a part by copying byte range from an existing object as data source" - }, - { - "input": { - "Bucket": "examplebucket", - "CopySource": "bucketname/sourceobjectkey", - "Key": "examplelargeobject", - "PartNumber": "1", - "UploadId": "exampleuoh_10OhKhT7YukE9bjzTPRiuaCotmZM_pFngJFir9OZNrSr5cWa3cq3LZSUsfjI4FI7PkP91We7Nrw--" - }, - "output": { - "CopyPartResult": { - "ETag": "\"b0c6f0e7e054ab8fa2536a2677f8734d\"", - "LastModified": "2016-12-29T21:24:43.000Z" - } - }, - "comments": { - "input": { - }, - "output": { - } - }, - "description": "The following example uploads a part of a multipart upload by copying data from an existing object as data source.", - "id": "to-upload-a-part-by-copying-data-from-an-existing-object-as-data-source-1483046746348", - "title": "To upload a part by copying data from an existing object as data source" - } - ] - } -} diff --git a/workshops/monte-carlo-on-ec2-spot-fleet/src/web/node_modules/aws-sdk/apis/s3-2006-03-01.min.json b/workshops/monte-carlo-on-ec2-spot-fleet/src/web/node_modules/aws-sdk/apis/s3-2006-03-01.min.json deleted file mode 100644 index 19dc8700..00000000 --- a/workshops/monte-carlo-on-ec2-spot-fleet/src/web/node_modules/aws-sdk/apis/s3-2006-03-01.min.json +++ /dev/null @@ -1,4510 +0,0 @@ -{ - "version": "2.0", - "metadata": { - "apiVersion": "2006-03-01", - "checksumFormat": "md5", - "endpointPrefix": "s3", - "globalEndpoint": "s3.amazonaws.com", - "protocol": "rest-xml", - "serviceAbbreviation": "Amazon S3", - "serviceFullName": "Amazon Simple Storage Service", - "signatureVersion": "s3", - "timestampFormat": "rfc822", - "uid": "s3-2006-03-01" - }, - "operations": { - "AbortMultipartUpload": { - "http": { - "method": "DELETE", - "requestUri": "/{Bucket}/{Key+}" - }, - "input": { - "type": "structure", - "required": [ - "Bucket", - "Key", - "UploadId" - ], - "members": { - "Bucket": { - "location": "uri", - "locationName": "Bucket" - }, - "Key": { - "location": "uri", - "locationName": "Key" - }, - "UploadId": { - "location": "querystring", - "locationName": "uploadId" - }, - "RequestPayer": { - "location": "header", - "locationName": "x-amz-request-payer" - } - } - }, - "output": { - "type": "structure", - "members": { - "RequestCharged": { - "location": "header", - "locationName": "x-amz-request-charged" - } - } - } - }, - "CompleteMultipartUpload": { - "http": { - "requestUri": "/{Bucket}/{Key+}" - }, - "input": { - "type": "structure", - "required": [ - "Bucket", - "Key", - "UploadId" - ], - "members": { - "Bucket": { - "location": "uri", - "locationName": "Bucket" - }, - "Key": { - "location": "uri", - "locationName": "Key" - }, - "MultipartUpload": { - "locationName": "CompleteMultipartUpload", - "xmlNamespace": { - "uri": "http://s3.amazonaws.com/doc/2006-03-01/" - }, - "type": "structure", - "members": { - "Parts": { - "locationName": "Part", - "type": "list", - "member": { - "type": "structure", - "members": { - "ETag": {}, - "PartNumber": { - "type": "integer" - } - } - }, - "flattened": true - } - } - }, - "UploadId": { - "location": "querystring", - "locationName": "uploadId" - }, - "RequestPayer": { - "location": "header", - "locationName": "x-amz-request-payer" - } - }, - "payload": "MultipartUpload" - }, - "output": { - "type": "structure", - "members": { - "Location": {}, - "Bucket": {}, - "Key": {}, - "Expiration": { - "location": "header", - "locationName": "x-amz-expiration" - }, - "ETag": {}, - "ServerSideEncryption": { - "location": "header", - "locationName": "x-amz-server-side-encryption" - }, - "VersionId": { - "location": "header", - "locationName": "x-amz-version-id" - }, - "SSEKMSKeyId": { - "shape": "Sj", - "location": "header", - "locationName": "x-amz-server-side-encryption-aws-kms-key-id" - }, - "RequestCharged": { - "location": "header", - "locationName": "x-amz-request-charged" - } - } - } - }, - "CopyObject": { - "http": { - "method": "PUT", - "requestUri": "/{Bucket}/{Key+}" - }, - "input": { - "type": "structure", - "required": [ - "Bucket", - "CopySource", - "Key" - ], - "members": { - "ACL": { - "location": "header", - "locationName": "x-amz-acl" - }, - "Bucket": { - "location": "uri", - "locationName": "Bucket" - }, - "CacheControl": { - "location": "header", - "locationName": "Cache-Control" - }, - "ContentDisposition": { - "location": "header", - "locationName": "Content-Disposition" - }, - "ContentEncoding": { - "location": "header", - "locationName": "Content-Encoding" - }, - "ContentLanguage": { - "location": "header", - "locationName": "Content-Language" - }, - "ContentType": { - "location": "header", - "locationName": "Content-Type" - }, - "CopySource": { - "location": "header", - "locationName": "x-amz-copy-source" - }, - "CopySourceIfMatch": { - "location": "header", - "locationName": "x-amz-copy-source-if-match" - }, - "CopySourceIfModifiedSince": { - "location": "header", - "locationName": "x-amz-copy-source-if-modified-since", - "type": "timestamp" - }, - "CopySourceIfNoneMatch": { - "location": "header", - "locationName": "x-amz-copy-source-if-none-match" - }, - "CopySourceIfUnmodifiedSince": { - "location": "header", - "locationName": "x-amz-copy-source-if-unmodified-since", - "type": "timestamp" - }, - "Expires": { - "location": "header", - "locationName": "Expires", - "type": "timestamp" - }, - "GrantFullControl": { - "location": "header", - "locationName": "x-amz-grant-full-control" - }, - "GrantRead": { - "location": "header", - "locationName": "x-amz-grant-read" - }, - "GrantReadACP": { - "location": "header", - "locationName": "x-amz-grant-read-acp" - }, - "GrantWriteACP": { - "location": "header", - "locationName": "x-amz-grant-write-acp" - }, - "Key": { - "location": "uri", - "locationName": "Key" - }, - "Metadata": { - "shape": "S11", - "location": "headers", - "locationName": "x-amz-meta-" - }, - "MetadataDirective": { - "location": "header", - "locationName": "x-amz-metadata-directive" - }, - "TaggingDirective": { - "location": "header", - "locationName": "x-amz-tagging-directive" - }, - "ServerSideEncryption": { - "location": "header", - "locationName": "x-amz-server-side-encryption" - }, - "StorageClass": { - "location": "header", - "locationName": "x-amz-storage-class" - }, - "WebsiteRedirectLocation": { - "location": "header", - "locationName": "x-amz-website-redirect-location" - }, - "SSECustomerAlgorithm": { - "location": "header", - "locationName": "x-amz-server-side-encryption-customer-algorithm" - }, - "SSECustomerKey": { - "shape": "S19", - "location": "header", - "locationName": "x-amz-server-side-encryption-customer-key" - }, - "SSECustomerKeyMD5": { - "location": "header", - "locationName": "x-amz-server-side-encryption-customer-key-MD5" - }, - "SSEKMSKeyId": { - "shape": "Sj", - "location": "header", - "locationName": "x-amz-server-side-encryption-aws-kms-key-id" - }, - "CopySourceSSECustomerAlgorithm": { - "location": "header", - "locationName": "x-amz-copy-source-server-side-encryption-customer-algorithm" - }, - "CopySourceSSECustomerKey": { - "shape": "S1c", - "location": "header", - "locationName": "x-amz-copy-source-server-side-encryption-customer-key" - }, - "CopySourceSSECustomerKeyMD5": { - "location": "header", - "locationName": "x-amz-copy-source-server-side-encryption-customer-key-MD5" - }, - "RequestPayer": { - "location": "header", - "locationName": "x-amz-request-payer" - }, - "Tagging": { - "location": "header", - "locationName": "x-amz-tagging" - } - } - }, - "output": { - "type": "structure", - "members": { - "CopyObjectResult": { - "type": "structure", - "members": { - "ETag": {}, - "LastModified": { - "type": "timestamp" - } - } - }, - "Expiration": { - "location": "header", - "locationName": "x-amz-expiration" - }, - "CopySourceVersionId": { - "location": "header", - "locationName": "x-amz-copy-source-version-id" - }, - "VersionId": { - "location": "header", - "locationName": "x-amz-version-id" - }, - "ServerSideEncryption": { - "location": "header", - "locationName": "x-amz-server-side-encryption" - }, - "SSECustomerAlgorithm": { - "location": "header", - "locationName": "x-amz-server-side-encryption-customer-algorithm" - }, - "SSECustomerKeyMD5": { - "location": "header", - "locationName": "x-amz-server-side-encryption-customer-key-MD5" - }, - "SSEKMSKeyId": { - "shape": "Sj", - "location": "header", - "locationName": "x-amz-server-side-encryption-aws-kms-key-id" - }, - "RequestCharged": { - "location": "header", - "locationName": "x-amz-request-charged" - } - }, - "payload": "CopyObjectResult" - }, - "alias": "PutObjectCopy" - }, - "CreateBucket": { - "http": { - "method": "PUT", - "requestUri": "/{Bucket}" - }, - "input": { - "type": "structure", - "required": [ - "Bucket" - ], - "members": { - "ACL": { - "location": "header", - "locationName": "x-amz-acl" - }, - "Bucket": { - "location": "uri", - "locationName": "Bucket" - }, - "CreateBucketConfiguration": { - "locationName": "CreateBucketConfiguration", - "xmlNamespace": { - "uri": "http://s3.amazonaws.com/doc/2006-03-01/" - }, - "type": "structure", - "members": { - "LocationConstraint": {} - } - }, - "GrantFullControl": { - "location": "header", - "locationName": "x-amz-grant-full-control" - }, - "GrantRead": { - "location": "header", - "locationName": "x-amz-grant-read" - }, - "GrantReadACP": { - "location": "header", - "locationName": "x-amz-grant-read-acp" - }, - "GrantWrite": { - "location": "header", - "locationName": "x-amz-grant-write" - }, - "GrantWriteACP": { - "location": "header", - "locationName": "x-amz-grant-write-acp" - } - }, - "payload": "CreateBucketConfiguration" - }, - "output": { - "type": "structure", - "members": { - "Location": { - "location": "header", - "locationName": "Location" - } - } - }, - "alias": "PutBucket" - }, - "CreateMultipartUpload": { - "http": { - "requestUri": "/{Bucket}/{Key+}?uploads" - }, - "input": { - "type": "structure", - "required": [ - "Bucket", - "Key" - ], - "members": { - "ACL": { - "location": "header", - "locationName": "x-amz-acl" - }, - "Bucket": { - "location": "uri", - "locationName": "Bucket" - }, - "CacheControl": { - "location": "header", - "locationName": "Cache-Control" - }, - "ContentDisposition": { - "location": "header", - "locationName": "Content-Disposition" - }, - "ContentEncoding": { - "location": "header", - "locationName": "Content-Encoding" - }, - "ContentLanguage": { - "location": "header", - "locationName": "Content-Language" - }, - "ContentType": { - "location": "header", - "locationName": "Content-Type" - }, - "Expires": { - "location": "header", - "locationName": "Expires", - "type": "timestamp" - }, - "GrantFullControl": { - "location": "header", - "locationName": "x-amz-grant-full-control" - }, - "GrantRead": { - "location": "header", - "locationName": "x-amz-grant-read" - }, - "GrantReadACP": { - "location": "header", - "locationName": "x-amz-grant-read-acp" - }, - "GrantWriteACP": { - "location": "header", - "locationName": "x-amz-grant-write-acp" - }, - "Key": { - "location": "uri", - "locationName": "Key" - }, - "Metadata": { - "shape": "S11", - "location": "headers", - "locationName": "x-amz-meta-" - }, - "ServerSideEncryption": { - "location": "header", - "locationName": "x-amz-server-side-encryption" - }, - "StorageClass": { - "location": "header", - "locationName": "x-amz-storage-class" - }, - "WebsiteRedirectLocation": { - "location": "header", - "locationName": "x-amz-website-redirect-location" - }, - "SSECustomerAlgorithm": { - "location": "header", - "locationName": "x-amz-server-side-encryption-customer-algorithm" - }, - "SSECustomerKey": { - "shape": "S19", - "location": "header", - "locationName": "x-amz-server-side-encryption-customer-key" - }, - "SSECustomerKeyMD5": { - "location": "header", - "locationName": "x-amz-server-side-encryption-customer-key-MD5" - }, - "SSEKMSKeyId": { - "shape": "Sj", - "location": "header", - "locationName": "x-amz-server-side-encryption-aws-kms-key-id" - }, - "RequestPayer": { - "location": "header", - "locationName": "x-amz-request-payer" - }, - "Tagging": { - "location": "header", - "locationName": "x-amz-tagging" - } - } - }, - "output": { - "type": "structure", - "members": { - "AbortDate": { - "location": "header", - "locationName": "x-amz-abort-date", - "type": "timestamp" - }, - "AbortRuleId": { - "location": "header", - "locationName": "x-amz-abort-rule-id" - }, - "Bucket": { - "locationName": "Bucket" - }, - "Key": {}, - "UploadId": {}, - "ServerSideEncryption": { - "location": "header", - "locationName": "x-amz-server-side-encryption" - }, - "SSECustomerAlgorithm": { - "location": "header", - "locationName": "x-amz-server-side-encryption-customer-algorithm" - }, - "SSECustomerKeyMD5": { - "location": "header", - "locationName": "x-amz-server-side-encryption-customer-key-MD5" - }, - "SSEKMSKeyId": { - "shape": "Sj", - "location": "header", - "locationName": "x-amz-server-side-encryption-aws-kms-key-id" - }, - "RequestCharged": { - "location": "header", - "locationName": "x-amz-request-charged" - } - } - }, - "alias": "InitiateMultipartUpload" - }, - "DeleteBucket": { - "http": { - "method": "DELETE", - "requestUri": "/{Bucket}" - }, - "input": { - "type": "structure", - "required": [ - "Bucket" - ], - "members": { - "Bucket": { - "location": "uri", - "locationName": "Bucket" - } - } - } - }, - "DeleteBucketAnalyticsConfiguration": { - "http": { - "method": "DELETE", - "requestUri": "/{Bucket}?analytics" - }, - "input": { - "type": "structure", - "required": [ - "Bucket", - "Id" - ], - "members": { - "Bucket": { - "location": "uri", - "locationName": "Bucket" - }, - "Id": { - "location": "querystring", - "locationName": "id" - } - } - } - }, - "DeleteBucketCors": { - "http": { - "method": "DELETE", - "requestUri": "/{Bucket}?cors" - }, - "input": { - "type": "structure", - "required": [ - "Bucket" - ], - "members": { - "Bucket": { - "location": "uri", - "locationName": "Bucket" - } - } - } - }, - "DeleteBucketInventoryConfiguration": { - "http": { - "method": "DELETE", - "requestUri": "/{Bucket}?inventory" - }, - "input": { - "type": "structure", - "required": [ - "Bucket", - "Id" - ], - "members": { - "Bucket": { - "location": "uri", - "locationName": "Bucket" - }, - "Id": { - "location": "querystring", - "locationName": "id" - } - } - } - }, - "DeleteBucketLifecycle": { - "http": { - "method": "DELETE", - "requestUri": "/{Bucket}?lifecycle" - }, - "input": { - "type": "structure", - "required": [ - "Bucket" - ], - "members": { - "Bucket": { - "location": "uri", - "locationName": "Bucket" - } - } - } - }, - "DeleteBucketMetricsConfiguration": { - "http": { - "method": "DELETE", - "requestUri": "/{Bucket}?metrics" - }, - "input": { - "type": "structure", - "required": [ - "Bucket", - "Id" - ], - "members": { - "Bucket": { - "location": "uri", - "locationName": "Bucket" - }, - "Id": { - "location": "querystring", - "locationName": "id" - } - } - } - }, - "DeleteBucketPolicy": { - "http": { - "method": "DELETE", - "requestUri": "/{Bucket}?policy" - }, - "input": { - "type": "structure", - "required": [ - "Bucket" - ], - "members": { - "Bucket": { - "location": "uri", - "locationName": "Bucket" - } - } - } - }, - "DeleteBucketReplication": { - "http": { - "method": "DELETE", - "requestUri": "/{Bucket}?replication" - }, - "input": { - "type": "structure", - "required": [ - "Bucket" - ], - "members": { - "Bucket": { - "location": "uri", - "locationName": "Bucket" - } - } - } - }, - "DeleteBucketTagging": { - "http": { - "method": "DELETE", - "requestUri": "/{Bucket}?tagging" - }, - "input": { - "type": "structure", - "required": [ - "Bucket" - ], - "members": { - "Bucket": { - "location": "uri", - "locationName": "Bucket" - } - } - } - }, - "DeleteBucketWebsite": { - "http": { - "method": "DELETE", - "requestUri": "/{Bucket}?website" - }, - "input": { - "type": "structure", - "required": [ - "Bucket" - ], - "members": { - "Bucket": { - "location": "uri", - "locationName": "Bucket" - } - } - } - }, - "DeleteObject": { - "http": { - "method": "DELETE", - "requestUri": "/{Bucket}/{Key+}" - }, - "input": { - "type": "structure", - "required": [ - "Bucket", - "Key" - ], - "members": { - "Bucket": { - "location": "uri", - "locationName": "Bucket" - }, - "Key": { - "location": "uri", - "locationName": "Key" - }, - "MFA": { - "location": "header", - "locationName": "x-amz-mfa" - }, - "VersionId": { - "location": "querystring", - "locationName": "versionId" - }, - "RequestPayer": { - "location": "header", - "locationName": "x-amz-request-payer" - } - } - }, - "output": { - "type": "structure", - "members": { - "DeleteMarker": { - "location": "header", - "locationName": "x-amz-delete-marker", - "type": "boolean" - }, - "VersionId": { - "location": "header", - "locationName": "x-amz-version-id" - }, - "RequestCharged": { - "location": "header", - "locationName": "x-amz-request-charged" - } - } - } - }, - "DeleteObjectTagging": { - "http": { - "method": "DELETE", - "requestUri": "/{Bucket}/{Key+}?tagging" - }, - "input": { - "type": "structure", - "required": [ - "Bucket", - "Key" - ], - "members": { - "Bucket": { - "location": "uri", - "locationName": "Bucket" - }, - "Key": { - "location": "uri", - "locationName": "Key" - }, - "VersionId": { - "location": "querystring", - "locationName": "versionId" - } - } - }, - "output": { - "type": "structure", - "members": { - "VersionId": { - "location": "header", - "locationName": "x-amz-version-id" - } - } - } - }, - "DeleteObjects": { - "http": { - "requestUri": "/{Bucket}?delete" - }, - "input": { - "type": "structure", - "required": [ - "Bucket", - "Delete" - ], - "members": { - "Bucket": { - "location": "uri", - "locationName": "Bucket" - }, - "Delete": { - "locationName": "Delete", - "xmlNamespace": { - "uri": "http://s3.amazonaws.com/doc/2006-03-01/" - }, - "type": "structure", - "required": [ - "Objects" - ], - "members": { - "Objects": { - "locationName": "Object", - "type": "list", - "member": { - "type": "structure", - "required": [ - "Key" - ], - "members": { - "Key": {}, - "VersionId": {} - } - }, - "flattened": true - }, - "Quiet": { - "type": "boolean" - } - } - }, - "MFA": { - "location": "header", - "locationName": "x-amz-mfa" - }, - "RequestPayer": { - "location": "header", - "locationName": "x-amz-request-payer" - } - }, - "payload": "Delete" - }, - "output": { - "type": "structure", - "members": { - "Deleted": { - "type": "list", - "member": { - "type": "structure", - "members": { - "Key": {}, - "VersionId": {}, - "DeleteMarker": { - "type": "boolean" - }, - "DeleteMarkerVersionId": {} - } - }, - "flattened": true - }, - "RequestCharged": { - "location": "header", - "locationName": "x-amz-request-charged" - }, - "Errors": { - "locationName": "Error", - "type": "list", - "member": { - "type": "structure", - "members": { - "Key": {}, - "VersionId": {}, - "Code": {}, - "Message": {} - } - }, - "flattened": true - } - } - }, - "alias": "DeleteMultipleObjects" - }, - "GetBucketAccelerateConfiguration": { - "http": { - "method": "GET", - "requestUri": "/{Bucket}?accelerate" - }, - "input": { - "type": "structure", - "required": [ - "Bucket" - ], - "members": { - "Bucket": { - "location": "uri", - "locationName": "Bucket" - } - } - }, - "output": { - "type": "structure", - "members": { - "Status": {} - } - } - }, - "GetBucketAcl": { - "http": { - "method": "GET", - "requestUri": "/{Bucket}?acl" - }, - "input": { - "type": "structure", - "required": [ - "Bucket" - ], - "members": { - "Bucket": { - "location": "uri", - "locationName": "Bucket" - } - } - }, - "output": { - "type": "structure", - "members": { - "Owner": { - "shape": "S2u" - }, - "Grants": { - "shape": "S2x", - "locationName": "AccessControlList" - } - } - } - }, - "GetBucketAnalyticsConfiguration": { - "http": { - "method": "GET", - "requestUri": "/{Bucket}?analytics" - }, - "input": { - "type": "structure", - "required": [ - "Bucket", - "Id" - ], - "members": { - "Bucket": { - "location": "uri", - "locationName": "Bucket" - }, - "Id": { - "location": "querystring", - "locationName": "id" - } - } - }, - "output": { - "type": "structure", - "members": { - "AnalyticsConfiguration": { - "shape": "S36" - } - }, - "payload": "AnalyticsConfiguration" - } - }, - "GetBucketCors": { - "http": { - "method": "GET", - "requestUri": "/{Bucket}?cors" - }, - "input": { - "type": "structure", - "required": [ - "Bucket" - ], - "members": { - "Bucket": { - "location": "uri", - "locationName": "Bucket" - } - } - }, - "output": { - "type": "structure", - "members": { - "CORSRules": { - "shape": "S3m", - "locationName": "CORSRule" - } - } - } - }, - "GetBucketInventoryConfiguration": { - "http": { - "method": "GET", - "requestUri": "/{Bucket}?inventory" - }, - "input": { - "type": "structure", - "required": [ - "Bucket", - "Id" - ], - "members": { - "Bucket": { - "location": "uri", - "locationName": "Bucket" - }, - "Id": { - "location": "querystring", - "locationName": "id" - } - } - }, - "output": { - "type": "structure", - "members": { - "InventoryConfiguration": { - "shape": "S3z" - } - }, - "payload": "InventoryConfiguration" - } - }, - "GetBucketLifecycle": { - "http": { - "method": "GET", - "requestUri": "/{Bucket}?lifecycle" - }, - "input": { - "type": "structure", - "required": [ - "Bucket" - ], - "members": { - "Bucket": { - "location": "uri", - "locationName": "Bucket" - } - } - }, - "output": { - "type": "structure", - "members": { - "Rules": { - "shape": "S4c", - "locationName": "Rule" - } - } - }, - "deprecated": true - }, - "GetBucketLifecycleConfiguration": { - "http": { - "method": "GET", - "requestUri": "/{Bucket}?lifecycle" - }, - "input": { - "type": "structure", - "required": [ - "Bucket" - ], - "members": { - "Bucket": { - "location": "uri", - "locationName": "Bucket" - } - } - }, - "output": { - "type": "structure", - "members": { - "Rules": { - "shape": "S4r", - "locationName": "Rule" - } - } - } - }, - "GetBucketLocation": { - "http": { - "method": "GET", - "requestUri": "/{Bucket}?location" - }, - "input": { - "type": "structure", - "required": [ - "Bucket" - ], - "members": { - "Bucket": { - "location": "uri", - "locationName": "Bucket" - } - } - }, - "output": { - "type": "structure", - "members": { - "LocationConstraint": {} - } - } - }, - "GetBucketLogging": { - "http": { - "method": "GET", - "requestUri": "/{Bucket}?logging" - }, - "input": { - "type": "structure", - "required": [ - "Bucket" - ], - "members": { - "Bucket": { - "location": "uri", - "locationName": "Bucket" - } - } - }, - "output": { - "type": "structure", - "members": { - "LoggingEnabled": { - "shape": "S51" - } - } - } - }, - "GetBucketMetricsConfiguration": { - "http": { - "method": "GET", - "requestUri": "/{Bucket}?metrics" - }, - "input": { - "type": "structure", - "required": [ - "Bucket", - "Id" - ], - "members": { - "Bucket": { - "location": "uri", - "locationName": "Bucket" - }, - "Id": { - "location": "querystring", - "locationName": "id" - } - } - }, - "output": { - "type": "structure", - "members": { - "MetricsConfiguration": { - "shape": "S59" - } - }, - "payload": "MetricsConfiguration" - } - }, - "GetBucketNotification": { - "http": { - "method": "GET", - "requestUri": "/{Bucket}?notification" - }, - "input": { - "shape": "S5c" - }, - "output": { - "shape": "S5d" - }, - "deprecated": true - }, - "GetBucketNotificationConfiguration": { - "http": { - "method": "GET", - "requestUri": "/{Bucket}?notification" - }, - "input": { - "shape": "S5c" - }, - "output": { - "shape": "S5o" - } - }, - "GetBucketPolicy": { - "http": { - "method": "GET", - "requestUri": "/{Bucket}?policy" - }, - "input": { - "type": "structure", - "required": [ - "Bucket" - ], - "members": { - "Bucket": { - "location": "uri", - "locationName": "Bucket" - } - } - }, - "output": { - "type": "structure", - "members": { - "Policy": {} - }, - "payload": "Policy" - } - }, - "GetBucketReplication": { - "http": { - "method": "GET", - "requestUri": "/{Bucket}?replication" - }, - "input": { - "type": "structure", - "required": [ - "Bucket" - ], - "members": { - "Bucket": { - "location": "uri", - "locationName": "Bucket" - } - } - }, - "output": { - "type": "structure", - "members": { - "ReplicationConfiguration": { - "shape": "S67" - } - }, - "payload": "ReplicationConfiguration" - } - }, - "GetBucketRequestPayment": { - "http": { - "method": "GET", - "requestUri": "/{Bucket}?requestPayment" - }, - "input": { - "type": "structure", - "required": [ - "Bucket" - ], - "members": { - "Bucket": { - "location": "uri", - "locationName": "Bucket" - } - } - }, - "output": { - "type": "structure", - "members": { - "Payer": {} - } - } - }, - "GetBucketTagging": { - "http": { - "method": "GET", - "requestUri": "/{Bucket}?tagging" - }, - "input": { - "type": "structure", - "required": [ - "Bucket" - ], - "members": { - "Bucket": { - "location": "uri", - "locationName": "Bucket" - } - } - }, - "output": { - "type": "structure", - "required": [ - "TagSet" - ], - "members": { - "TagSet": { - "shape": "S3c" - } - } - } - }, - "GetBucketVersioning": { - "http": { - "method": "GET", - "requestUri": "/{Bucket}?versioning" - }, - "input": { - "type": "structure", - "required": [ - "Bucket" - ], - "members": { - "Bucket": { - "location": "uri", - "locationName": "Bucket" - } - } - }, - "output": { - "type": "structure", - "members": { - "Status": {}, - "MFADelete": { - "locationName": "MfaDelete" - } - } - } - }, - "GetBucketWebsite": { - "http": { - "method": "GET", - "requestUri": "/{Bucket}?website" - }, - "input": { - "type": "structure", - "required": [ - "Bucket" - ], - "members": { - "Bucket": { - "location": "uri", - "locationName": "Bucket" - } - } - }, - "output": { - "type": "structure", - "members": { - "RedirectAllRequestsTo": { - "shape": "S6o" - }, - "IndexDocument": { - "shape": "S6r" - }, - "ErrorDocument": { - "shape": "S6t" - }, - "RoutingRules": { - "shape": "S6u" - } - } - } - }, - "GetObject": { - "http": { - "method": "GET", - "requestUri": "/{Bucket}/{Key+}" - }, - "input": { - "type": "structure", - "required": [ - "Bucket", - "Key" - ], - "members": { - "Bucket": { - "location": "uri", - "locationName": "Bucket" - }, - "IfMatch": { - "location": "header", - "locationName": "If-Match" - }, - "IfModifiedSince": { - "location": "header", - "locationName": "If-Modified-Since", - "type": "timestamp" - }, - "IfNoneMatch": { - "location": "header", - "locationName": "If-None-Match" - }, - "IfUnmodifiedSince": { - "location": "header", - "locationName": "If-Unmodified-Since", - "type": "timestamp" - }, - "Key": { - "location": "uri", - "locationName": "Key" - }, - "Range": { - "location": "header", - "locationName": "Range" - }, - "ResponseCacheControl": { - "location": "querystring", - "locationName": "response-cache-control" - }, - "ResponseContentDisposition": { - "location": "querystring", - "locationName": "response-content-disposition" - }, - "ResponseContentEncoding": { - "location": "querystring", - "locationName": "response-content-encoding" - }, - "ResponseContentLanguage": { - "location": "querystring", - "locationName": "response-content-language" - }, - "ResponseContentType": { - "location": "querystring", - "locationName": "response-content-type" - }, - "ResponseExpires": { - "location": "querystring", - "locationName": "response-expires", - "type": "timestamp" - }, - "VersionId": { - "location": "querystring", - "locationName": "versionId" - }, - "SSECustomerAlgorithm": { - "location": "header", - "locationName": "x-amz-server-side-encryption-customer-algorithm" - }, - "SSECustomerKey": { - "shape": "S19", - "location": "header", - "locationName": "x-amz-server-side-encryption-customer-key" - }, - "SSECustomerKeyMD5": { - "location": "header", - "locationName": "x-amz-server-side-encryption-customer-key-MD5" - }, - "RequestPayer": { - "location": "header", - "locationName": "x-amz-request-payer" - }, - "PartNumber": { - "location": "querystring", - "locationName": "partNumber", - "type": "integer" - } - } - }, - "output": { - "type": "structure", - "members": { - "Body": { - "streaming": true, - "type": "blob" - }, - "DeleteMarker": { - "location": "header", - "locationName": "x-amz-delete-marker", - "type": "boolean" - }, - "AcceptRanges": { - "location": "header", - "locationName": "accept-ranges" - }, - "Expiration": { - "location": "header", - "locationName": "x-amz-expiration" - }, - "Restore": { - "location": "header", - "locationName": "x-amz-restore" - }, - "LastModified": { - "location": "header", - "locationName": "Last-Modified", - "type": "timestamp" - }, - "ContentLength": { - "location": "header", - "locationName": "Content-Length", - "type": "long" - }, - "ETag": { - "location": "header", - "locationName": "ETag" - }, - "MissingMeta": { - "location": "header", - "locationName": "x-amz-missing-meta", - "type": "integer" - }, - "VersionId": { - "location": "header", - "locationName": "x-amz-version-id" - }, - "CacheControl": { - "location": "header", - "locationName": "Cache-Control" - }, - "ContentDisposition": { - "location": "header", - "locationName": "Content-Disposition" - }, - "ContentEncoding": { - "location": "header", - "locationName": "Content-Encoding" - }, - "ContentLanguage": { - "location": "header", - "locationName": "Content-Language" - }, - "ContentRange": { - "location": "header", - "locationName": "Content-Range" - }, - "ContentType": { - "location": "header", - "locationName": "Content-Type" - }, - "Expires": { - "location": "header", - "locationName": "Expires", - "type": "timestamp" - }, - "WebsiteRedirectLocation": { - "location": "header", - "locationName": "x-amz-website-redirect-location" - }, - "ServerSideEncryption": { - "location": "header", - "locationName": "x-amz-server-side-encryption" - }, - "Metadata": { - "shape": "S11", - "location": "headers", - "locationName": "x-amz-meta-" - }, - "SSECustomerAlgorithm": { - "location": "header", - "locationName": "x-amz-server-side-encryption-customer-algorithm" - }, - "SSECustomerKeyMD5": { - "location": "header", - "locationName": "x-amz-server-side-encryption-customer-key-MD5" - }, - "SSEKMSKeyId": { - "shape": "Sj", - "location": "header", - "locationName": "x-amz-server-side-encryption-aws-kms-key-id" - }, - "StorageClass": { - "location": "header", - "locationName": "x-amz-storage-class" - }, - "RequestCharged": { - "location": "header", - "locationName": "x-amz-request-charged" - }, - "ReplicationStatus": { - "location": "header", - "locationName": "x-amz-replication-status" - }, - "PartsCount": { - "location": "header", - "locationName": "x-amz-mp-parts-count", - "type": "integer" - }, - "TagCount": { - "location": "header", - "locationName": "x-amz-tagging-count", - "type": "integer" - } - }, - "payload": "Body" - } - }, - "GetObjectAcl": { - "http": { - "method": "GET", - "requestUri": "/{Bucket}/{Key+}?acl" - }, - "input": { - "type": "structure", - "required": [ - "Bucket", - "Key" - ], - "members": { - "Bucket": { - "location": "uri", - "locationName": "Bucket" - }, - "Key": { - "location": "uri", - "locationName": "Key" - }, - "VersionId": { - "location": "querystring", - "locationName": "versionId" - }, - "RequestPayer": { - "location": "header", - "locationName": "x-amz-request-payer" - } - } - }, - "output": { - "type": "structure", - "members": { - "Owner": { - "shape": "S2u" - }, - "Grants": { - "shape": "S2x", - "locationName": "AccessControlList" - }, - "RequestCharged": { - "location": "header", - "locationName": "x-amz-request-charged" - } - } - } - }, - "GetObjectTagging": { - "http": { - "method": "GET", - "requestUri": "/{Bucket}/{Key+}?tagging" - }, - "input": { - "type": "structure", - "required": [ - "Bucket", - "Key" - ], - "members": { - "Bucket": { - "location": "uri", - "locationName": "Bucket" - }, - "Key": { - "location": "uri", - "locationName": "Key" - }, - "VersionId": { - "location": "querystring", - "locationName": "versionId" - } - } - }, - "output": { - "type": "structure", - "required": [ - "TagSet" - ], - "members": { - "VersionId": { - "location": "header", - "locationName": "x-amz-version-id" - }, - "TagSet": { - "shape": "S3c" - } - } - } - }, - "GetObjectTorrent": { - "http": { - "method": "GET", - "requestUri": "/{Bucket}/{Key+}?torrent" - }, - "input": { - "type": "structure", - "required": [ - "Bucket", - "Key" - ], - "members": { - "Bucket": { - "location": "uri", - "locationName": "Bucket" - }, - "Key": { - "location": "uri", - "locationName": "Key" - }, - "RequestPayer": { - "location": "header", - "locationName": "x-amz-request-payer" - } - } - }, - "output": { - "type": "structure", - "members": { - "Body": { - "streaming": true, - "type": "blob" - }, - "RequestCharged": { - "location": "header", - "locationName": "x-amz-request-charged" - } - }, - "payload": "Body" - } - }, - "HeadBucket": { - "http": { - "method": "HEAD", - "requestUri": "/{Bucket}" - }, - "input": { - "type": "structure", - "required": [ - "Bucket" - ], - "members": { - "Bucket": { - "location": "uri", - "locationName": "Bucket" - } - } - } - }, - "HeadObject": { - "http": { - "method": "HEAD", - "requestUri": "/{Bucket}/{Key+}" - }, - "input": { - "type": "structure", - "required": [ - "Bucket", - "Key" - ], - "members": { - "Bucket": { - "location": "uri", - "locationName": "Bucket" - }, - "IfMatch": { - "location": "header", - "locationName": "If-Match" - }, - "IfModifiedSince": { - "location": "header", - "locationName": "If-Modified-Since", - "type": "timestamp" - }, - "IfNoneMatch": { - "location": "header", - "locationName": "If-None-Match" - }, - "IfUnmodifiedSince": { - "location": "header", - "locationName": "If-Unmodified-Since", - "type": "timestamp" - }, - "Key": { - "location": "uri", - "locationName": "Key" - }, - "Range": { - "location": "header", - "locationName": "Range" - }, - "VersionId": { - "location": "querystring", - "locationName": "versionId" - }, - "SSECustomerAlgorithm": { - "location": "header", - "locationName": "x-amz-server-side-encryption-customer-algorithm" - }, - "SSECustomerKey": { - "shape": "S19", - "location": "header", - "locationName": "x-amz-server-side-encryption-customer-key" - }, - "SSECustomerKeyMD5": { - "location": "header", - "locationName": "x-amz-server-side-encryption-customer-key-MD5" - }, - "RequestPayer": { - "location": "header", - "locationName": "x-amz-request-payer" - }, - "PartNumber": { - "location": "querystring", - "locationName": "partNumber", - "type": "integer" - } - } - }, - "output": { - "type": "structure", - "members": { - "DeleteMarker": { - "location": "header", - "locationName": "x-amz-delete-marker", - "type": "boolean" - }, - "AcceptRanges": { - "location": "header", - "locationName": "accept-ranges" - }, - "Expiration": { - "location": "header", - "locationName": "x-amz-expiration" - }, - "Restore": { - "location": "header", - "locationName": "x-amz-restore" - }, - "LastModified": { - "location": "header", - "locationName": "Last-Modified", - "type": "timestamp" - }, - "ContentLength": { - "location": "header", - "locationName": "Content-Length", - "type": "long" - }, - "ETag": { - "location": "header", - "locationName": "ETag" - }, - "MissingMeta": { - "location": "header", - "locationName": "x-amz-missing-meta", - "type": "integer" - }, - "VersionId": { - "location": "header", - "locationName": "x-amz-version-id" - }, - "CacheControl": { - "location": "header", - "locationName": "Cache-Control" - }, - "ContentDisposition": { - "location": "header", - "locationName": "Content-Disposition" - }, - "ContentEncoding": { - "location": "header", - "locationName": "Content-Encoding" - }, - "ContentLanguage": { - "location": "header", - "locationName": "Content-Language" - }, - "ContentType": { - "location": "header", - "locationName": "Content-Type" - }, - "Expires": { - "location": "header", - "locationName": "Expires", - "type": "timestamp" - }, - "WebsiteRedirectLocation": { - "location": "header", - "locationName": "x-amz-website-redirect-location" - }, - "ServerSideEncryption": { - "location": "header", - "locationName": "x-amz-server-side-encryption" - }, - "Metadata": { - "shape": "S11", - "location": "headers", - "locationName": "x-amz-meta-" - }, - "SSECustomerAlgorithm": { - "location": "header", - "locationName": "x-amz-server-side-encryption-customer-algorithm" - }, - "SSECustomerKeyMD5": { - "location": "header", - "locationName": "x-amz-server-side-encryption-customer-key-MD5" - }, - "SSEKMSKeyId": { - "shape": "Sj", - "location": "header", - "locationName": "x-amz-server-side-encryption-aws-kms-key-id" - }, - "StorageClass": { - "location": "header", - "locationName": "x-amz-storage-class" - }, - "RequestCharged": { - "location": "header", - "locationName": "x-amz-request-charged" - }, - "ReplicationStatus": { - "location": "header", - "locationName": "x-amz-replication-status" - }, - "PartsCount": { - "location": "header", - "locationName": "x-amz-mp-parts-count", - "type": "integer" - } - } - } - }, - "ListBucketAnalyticsConfigurations": { - "http": { - "method": "GET", - "requestUri": "/{Bucket}?analytics" - }, - "input": { - "type": "structure", - "required": [ - "Bucket" - ], - "members": { - "Bucket": { - "location": "uri", - "locationName": "Bucket" - }, - "ContinuationToken": { - "location": "querystring", - "locationName": "continuation-token" - } - } - }, - "output": { - "type": "structure", - "members": { - "IsTruncated": { - "type": "boolean" - }, - "ContinuationToken": {}, - "NextContinuationToken": {}, - "AnalyticsConfigurationList": { - "locationName": "AnalyticsConfiguration", - "type": "list", - "member": { - "shape": "S36" - }, - "flattened": true - } - } - } - }, - "ListBucketInventoryConfigurations": { - "http": { - "method": "GET", - "requestUri": "/{Bucket}?inventory" - }, - "input": { - "type": "structure", - "required": [ - "Bucket" - ], - "members": { - "Bucket": { - "location": "uri", - "locationName": "Bucket" - }, - "ContinuationToken": { - "location": "querystring", - "locationName": "continuation-token" - } - } - }, - "output": { - "type": "structure", - "members": { - "ContinuationToken": {}, - "InventoryConfigurationList": { - "locationName": "InventoryConfiguration", - "type": "list", - "member": { - "shape": "S3z" - }, - "flattened": true - }, - "IsTruncated": { - "type": "boolean" - }, - "NextContinuationToken": {} - } - } - }, - "ListBucketMetricsConfigurations": { - "http": { - "method": "GET", - "requestUri": "/{Bucket}?metrics" - }, - "input": { - "type": "structure", - "required": [ - "Bucket" - ], - "members": { - "Bucket": { - "location": "uri", - "locationName": "Bucket" - }, - "ContinuationToken": { - "location": "querystring", - "locationName": "continuation-token" - } - } - }, - "output": { - "type": "structure", - "members": { - "IsTruncated": { - "type": "boolean" - }, - "ContinuationToken": {}, - "NextContinuationToken": {}, - "MetricsConfigurationList": { - "locationName": "MetricsConfiguration", - "type": "list", - "member": { - "shape": "S59" - }, - "flattened": true - } - } - } - }, - "ListBuckets": { - "http": { - "method": "GET" - }, - "output": { - "type": "structure", - "members": { - "Buckets": { - "type": "list", - "member": { - "locationName": "Bucket", - "type": "structure", - "members": { - "Name": {}, - "CreationDate": { - "type": "timestamp" - } - } - } - }, - "Owner": { - "shape": "S2u" - } - } - }, - "alias": "GetService" - }, - "ListMultipartUploads": { - "http": { - "method": "GET", - "requestUri": "/{Bucket}?uploads" - }, - "input": { - "type": "structure", - "required": [ - "Bucket" - ], - "members": { - "Bucket": { - "location": "uri", - "locationName": "Bucket" - }, - "Delimiter": { - "location": "querystring", - "locationName": "delimiter" - }, - "EncodingType": { - "location": "querystring", - "locationName": "encoding-type" - }, - "KeyMarker": { - "location": "querystring", - "locationName": "key-marker" - }, - "MaxUploads": { - "location": "querystring", - "locationName": "max-uploads", - "type": "integer" - }, - "Prefix": { - "location": "querystring", - "locationName": "prefix" - }, - "UploadIdMarker": { - "location": "querystring", - "locationName": "upload-id-marker" - } - } - }, - "output": { - "type": "structure", - "members": { - "Bucket": {}, - "KeyMarker": {}, - "UploadIdMarker": {}, - "NextKeyMarker": {}, - "Prefix": {}, - "Delimiter": {}, - "NextUploadIdMarker": {}, - "MaxUploads": { - "type": "integer" - }, - "IsTruncated": { - "type": "boolean" - }, - "Uploads": { - "locationName": "Upload", - "type": "list", - "member": { - "type": "structure", - "members": { - "UploadId": {}, - "Key": {}, - "Initiated": { - "type": "timestamp" - }, - "StorageClass": {}, - "Owner": { - "shape": "S2u" - }, - "Initiator": { - "shape": "S8q" - } - } - }, - "flattened": true - }, - "CommonPrefixes": { - "shape": "S8r" - }, - "EncodingType": {} - } - } - }, - "ListObjectVersions": { - "http": { - "method": "GET", - "requestUri": "/{Bucket}?versions" - }, - "input": { - "type": "structure", - "required": [ - "Bucket" - ], - "members": { - "Bucket": { - "location": "uri", - "locationName": "Bucket" - }, - "Delimiter": { - "location": "querystring", - "locationName": "delimiter" - }, - "EncodingType": { - "location": "querystring", - "locationName": "encoding-type" - }, - "KeyMarker": { - "location": "querystring", - "locationName": "key-marker" - }, - "MaxKeys": { - "location": "querystring", - "locationName": "max-keys", - "type": "integer" - }, - "Prefix": { - "location": "querystring", - "locationName": "prefix" - }, - "VersionIdMarker": { - "location": "querystring", - "locationName": "version-id-marker" - } - } - }, - "output": { - "type": "structure", - "members": { - "IsTruncated": { - "type": "boolean" - }, - "KeyMarker": {}, - "VersionIdMarker": {}, - "NextKeyMarker": {}, - "NextVersionIdMarker": {}, - "Versions": { - "locationName": "Version", - "type": "list", - "member": { - "type": "structure", - "members": { - "ETag": {}, - "Size": { - "type": "integer" - }, - "StorageClass": {}, - "Key": {}, - "VersionId": {}, - "IsLatest": { - "type": "boolean" - }, - "LastModified": { - "type": "timestamp" - }, - "Owner": { - "shape": "S2u" - } - } - }, - "flattened": true - }, - "DeleteMarkers": { - "locationName": "DeleteMarker", - "type": "list", - "member": { - "type": "structure", - "members": { - "Owner": { - "shape": "S2u" - }, - "Key": {}, - "VersionId": {}, - "IsLatest": { - "type": "boolean" - }, - "LastModified": { - "type": "timestamp" - } - } - }, - "flattened": true - }, - "Name": {}, - "Prefix": {}, - "Delimiter": {}, - "MaxKeys": { - "type": "integer" - }, - "CommonPrefixes": { - "shape": "S8r" - }, - "EncodingType": {} - } - }, - "alias": "GetBucketObjectVersions" - }, - "ListObjects": { - "http": { - "method": "GET", - "requestUri": "/{Bucket}" - }, - "input": { - "type": "structure", - "required": [ - "Bucket" - ], - "members": { - "Bucket": { - "location": "uri", - "locationName": "Bucket" - }, - "Delimiter": { - "location": "querystring", - "locationName": "delimiter" - }, - "EncodingType": { - "location": "querystring", - "locationName": "encoding-type" - }, - "Marker": { - "location": "querystring", - "locationName": "marker" - }, - "MaxKeys": { - "location": "querystring", - "locationName": "max-keys", - "type": "integer" - }, - "Prefix": { - "location": "querystring", - "locationName": "prefix" - }, - "RequestPayer": { - "location": "header", - "locationName": "x-amz-request-payer" - } - } - }, - "output": { - "type": "structure", - "members": { - "IsTruncated": { - "type": "boolean" - }, - "Marker": {}, - "NextMarker": {}, - "Contents": { - "shape": "S99" - }, - "Name": {}, - "Prefix": {}, - "Delimiter": {}, - "MaxKeys": { - "type": "integer" - }, - "CommonPrefixes": { - "shape": "S8r" - }, - "EncodingType": {} - } - }, - "alias": "GetBucket" - }, - "ListObjectsV2": { - "http": { - "method": "GET", - "requestUri": "/{Bucket}?list-type=2" - }, - "input": { - "type": "structure", - "required": [ - "Bucket" - ], - "members": { - "Bucket": { - "location": "uri", - "locationName": "Bucket" - }, - "Delimiter": { - "location": "querystring", - "locationName": "delimiter" - }, - "EncodingType": { - "location": "querystring", - "locationName": "encoding-type" - }, - "MaxKeys": { - "location": "querystring", - "locationName": "max-keys", - "type": "integer" - }, - "Prefix": { - "location": "querystring", - "locationName": "prefix" - }, - "ContinuationToken": { - "location": "querystring", - "locationName": "continuation-token" - }, - "FetchOwner": { - "location": "querystring", - "locationName": "fetch-owner", - "type": "boolean" - }, - "StartAfter": { - "location": "querystring", - "locationName": "start-after" - }, - "RequestPayer": { - "location": "header", - "locationName": "x-amz-request-payer" - } - } - }, - "output": { - "type": "structure", - "members": { - "IsTruncated": { - "type": "boolean" - }, - "Contents": { - "shape": "S99" - }, - "Name": {}, - "Prefix": {}, - "Delimiter": {}, - "MaxKeys": { - "type": "integer" - }, - "CommonPrefixes": { - "shape": "S8r" - }, - "EncodingType": {}, - "KeyCount": { - "type": "integer" - }, - "ContinuationToken": {}, - "NextContinuationToken": {}, - "StartAfter": {} - } - } - }, - "ListParts": { - "http": { - "method": "GET", - "requestUri": "/{Bucket}/{Key+}" - }, - "input": { - "type": "structure", - "required": [ - "Bucket", - "Key", - "UploadId" - ], - "members": { - "Bucket": { - "location": "uri", - "locationName": "Bucket" - }, - "Key": { - "location": "uri", - "locationName": "Key" - }, - "MaxParts": { - "location": "querystring", - "locationName": "max-parts", - "type": "integer" - }, - "PartNumberMarker": { - "location": "querystring", - "locationName": "part-number-marker", - "type": "integer" - }, - "UploadId": { - "location": "querystring", - "locationName": "uploadId" - }, - "RequestPayer": { - "location": "header", - "locationName": "x-amz-request-payer" - } - } - }, - "output": { - "type": "structure", - "members": { - "AbortDate": { - "location": "header", - "locationName": "x-amz-abort-date", - "type": "timestamp" - }, - "AbortRuleId": { - "location": "header", - "locationName": "x-amz-abort-rule-id" - }, - "Bucket": {}, - "Key": {}, - "UploadId": {}, - "PartNumberMarker": { - "type": "integer" - }, - "NextPartNumberMarker": { - "type": "integer" - }, - "MaxParts": { - "type": "integer" - }, - "IsTruncated": { - "type": "boolean" - }, - "Parts": { - "locationName": "Part", - "type": "list", - "member": { - "type": "structure", - "members": { - "PartNumber": { - "type": "integer" - }, - "LastModified": { - "type": "timestamp" - }, - "ETag": {}, - "Size": { - "type": "integer" - } - } - }, - "flattened": true - }, - "Initiator": { - "shape": "S8q" - }, - "Owner": { - "shape": "S2u" - }, - "StorageClass": {}, - "RequestCharged": { - "location": "header", - "locationName": "x-amz-request-charged" - } - } - } - }, - "PutBucketAccelerateConfiguration": { - "http": { - "method": "PUT", - "requestUri": "/{Bucket}?accelerate" - }, - "input": { - "type": "structure", - "required": [ - "Bucket", - "AccelerateConfiguration" - ], - "members": { - "Bucket": { - "location": "uri", - "locationName": "Bucket" - }, - "AccelerateConfiguration": { - "locationName": "AccelerateConfiguration", - "xmlNamespace": { - "uri": "http://s3.amazonaws.com/doc/2006-03-01/" - }, - "type": "structure", - "members": { - "Status": {} - } - } - }, - "payload": "AccelerateConfiguration" - } - }, - "PutBucketAcl": { - "http": { - "method": "PUT", - "requestUri": "/{Bucket}?acl" - }, - "input": { - "type": "structure", - "required": [ - "Bucket" - ], - "members": { - "ACL": { - "location": "header", - "locationName": "x-amz-acl" - }, - "AccessControlPolicy": { - "shape": "S9r", - "locationName": "AccessControlPolicy", - "xmlNamespace": { - "uri": "http://s3.amazonaws.com/doc/2006-03-01/" - } - }, - "Bucket": { - "location": "uri", - "locationName": "Bucket" - }, - "ContentMD5": { - "location": "header", - "locationName": "Content-MD5" - }, - "GrantFullControl": { - "location": "header", - "locationName": "x-amz-grant-full-control" - }, - "GrantRead": { - "location": "header", - "locationName": "x-amz-grant-read" - }, - "GrantReadACP": { - "location": "header", - "locationName": "x-amz-grant-read-acp" - }, - "GrantWrite": { - "location": "header", - "locationName": "x-amz-grant-write" - }, - "GrantWriteACP": { - "location": "header", - "locationName": "x-amz-grant-write-acp" - } - }, - "payload": "AccessControlPolicy" - } - }, - "PutBucketAnalyticsConfiguration": { - "http": { - "method": "PUT", - "requestUri": "/{Bucket}?analytics" - }, - "input": { - "type": "structure", - "required": [ - "Bucket", - "Id", - "AnalyticsConfiguration" - ], - "members": { - "Bucket": { - "location": "uri", - "locationName": "Bucket" - }, - "Id": { - "location": "querystring", - "locationName": "id" - }, - "AnalyticsConfiguration": { - "shape": "S36", - "locationName": "AnalyticsConfiguration", - "xmlNamespace": { - "uri": "http://s3.amazonaws.com/doc/2006-03-01/" - } - } - }, - "payload": "AnalyticsConfiguration" - } - }, - "PutBucketCors": { - "http": { - "method": "PUT", - "requestUri": "/{Bucket}?cors" - }, - "input": { - "type": "structure", - "required": [ - "Bucket", - "CORSConfiguration" - ], - "members": { - "Bucket": { - "location": "uri", - "locationName": "Bucket" - }, - "CORSConfiguration": { - "locationName": "CORSConfiguration", - "xmlNamespace": { - "uri": "http://s3.amazonaws.com/doc/2006-03-01/" - }, - "type": "structure", - "required": [ - "CORSRules" - ], - "members": { - "CORSRules": { - "shape": "S3m", - "locationName": "CORSRule" - } - } - }, - "ContentMD5": { - "location": "header", - "locationName": "Content-MD5" - } - }, - "payload": "CORSConfiguration" - } - }, - "PutBucketInventoryConfiguration": { - "http": { - "method": "PUT", - "requestUri": "/{Bucket}?inventory" - }, - "input": { - "type": "structure", - "required": [ - "Bucket", - "Id", - "InventoryConfiguration" - ], - "members": { - "Bucket": { - "location": "uri", - "locationName": "Bucket" - }, - "Id": { - "location": "querystring", - "locationName": "id" - }, - "InventoryConfiguration": { - "shape": "S3z", - "locationName": "InventoryConfiguration", - "xmlNamespace": { - "uri": "http://s3.amazonaws.com/doc/2006-03-01/" - } - } - }, - "payload": "InventoryConfiguration" - } - }, - "PutBucketLifecycle": { - "http": { - "method": "PUT", - "requestUri": "/{Bucket}?lifecycle" - }, - "input": { - "type": "structure", - "required": [ - "Bucket" - ], - "members": { - "Bucket": { - "location": "uri", - "locationName": "Bucket" - }, - "ContentMD5": { - "location": "header", - "locationName": "Content-MD5" - }, - "LifecycleConfiguration": { - "locationName": "LifecycleConfiguration", - "xmlNamespace": { - "uri": "http://s3.amazonaws.com/doc/2006-03-01/" - }, - "type": "structure", - "required": [ - "Rules" - ], - "members": { - "Rules": { - "shape": "S4c", - "locationName": "Rule" - } - } - } - }, - "payload": "LifecycleConfiguration" - }, - "deprecated": true - }, - "PutBucketLifecycleConfiguration": { - "http": { - "method": "PUT", - "requestUri": "/{Bucket}?lifecycle" - }, - "input": { - "type": "structure", - "required": [ - "Bucket" - ], - "members": { - "Bucket": { - "location": "uri", - "locationName": "Bucket" - }, - "LifecycleConfiguration": { - "locationName": "LifecycleConfiguration", - "xmlNamespace": { - "uri": "http://s3.amazonaws.com/doc/2006-03-01/" - }, - "type": "structure", - "required": [ - "Rules" - ], - "members": { - "Rules": { - "shape": "S4r", - "locationName": "Rule" - } - } - } - }, - "payload": "LifecycleConfiguration" - } - }, - "PutBucketLogging": { - "http": { - "method": "PUT", - "requestUri": "/{Bucket}?logging" - }, - "input": { - "type": "structure", - "required": [ - "Bucket", - "BucketLoggingStatus" - ], - "members": { - "Bucket": { - "location": "uri", - "locationName": "Bucket" - }, - "BucketLoggingStatus": { - "locationName": "BucketLoggingStatus", - "xmlNamespace": { - "uri": "http://s3.amazonaws.com/doc/2006-03-01/" - }, - "type": "structure", - "members": { - "LoggingEnabled": { - "shape": "S51" - } - } - }, - "ContentMD5": { - "location": "header", - "locationName": "Content-MD5" - } - }, - "payload": "BucketLoggingStatus" - } - }, - "PutBucketMetricsConfiguration": { - "http": { - "method": "PUT", - "requestUri": "/{Bucket}?metrics" - }, - "input": { - "type": "structure", - "required": [ - "Bucket", - "Id", - "MetricsConfiguration" - ], - "members": { - "Bucket": { - "location": "uri", - "locationName": "Bucket" - }, - "Id": { - "location": "querystring", - "locationName": "id" - }, - "MetricsConfiguration": { - "shape": "S59", - "locationName": "MetricsConfiguration", - "xmlNamespace": { - "uri": "http://s3.amazonaws.com/doc/2006-03-01/" - } - } - }, - "payload": "MetricsConfiguration" - } - }, - "PutBucketNotification": { - "http": { - "method": "PUT", - "requestUri": "/{Bucket}?notification" - }, - "input": { - "type": "structure", - "required": [ - "Bucket", - "NotificationConfiguration" - ], - "members": { - "Bucket": { - "location": "uri", - "locationName": "Bucket" - }, - "ContentMD5": { - "location": "header", - "locationName": "Content-MD5" - }, - "NotificationConfiguration": { - "shape": "S5d", - "locationName": "NotificationConfiguration", - "xmlNamespace": { - "uri": "http://s3.amazonaws.com/doc/2006-03-01/" - } - } - }, - "payload": "NotificationConfiguration" - }, - "deprecated": true - }, - "PutBucketNotificationConfiguration": { - "http": { - "method": "PUT", - "requestUri": "/{Bucket}?notification" - }, - "input": { - "type": "structure", - "required": [ - "Bucket", - "NotificationConfiguration" - ], - "members": { - "Bucket": { - "location": "uri", - "locationName": "Bucket" - }, - "NotificationConfiguration": { - "shape": "S5o", - "locationName": "NotificationConfiguration", - "xmlNamespace": { - "uri": "http://s3.amazonaws.com/doc/2006-03-01/" - } - } - }, - "payload": "NotificationConfiguration" - } - }, - "PutBucketPolicy": { - "http": { - "method": "PUT", - "requestUri": "/{Bucket}?policy" - }, - "input": { - "type": "structure", - "required": [ - "Bucket", - "Policy" - ], - "members": { - "Bucket": { - "location": "uri", - "locationName": "Bucket" - }, - "ContentMD5": { - "location": "header", - "locationName": "Content-MD5" - }, - "Policy": {} - }, - "payload": "Policy" - } - }, - "PutBucketReplication": { - "http": { - "method": "PUT", - "requestUri": "/{Bucket}?replication" - }, - "input": { - "type": "structure", - "required": [ - "Bucket", - "ReplicationConfiguration" - ], - "members": { - "Bucket": { - "location": "uri", - "locationName": "Bucket" - }, - "ContentMD5": { - "location": "header", - "locationName": "Content-MD5" - }, - "ReplicationConfiguration": { - "shape": "S67", - "locationName": "ReplicationConfiguration", - "xmlNamespace": { - "uri": "http://s3.amazonaws.com/doc/2006-03-01/" - } - } - }, - "payload": "ReplicationConfiguration" - } - }, - "PutBucketRequestPayment": { - "http": { - "method": "PUT", - "requestUri": "/{Bucket}?requestPayment" - }, - "input": { - "type": "structure", - "required": [ - "Bucket", - "RequestPaymentConfiguration" - ], - "members": { - "Bucket": { - "location": "uri", - "locationName": "Bucket" - }, - "ContentMD5": { - "location": "header", - "locationName": "Content-MD5" - }, - "RequestPaymentConfiguration": { - "locationName": "RequestPaymentConfiguration", - "xmlNamespace": { - "uri": "http://s3.amazonaws.com/doc/2006-03-01/" - }, - "type": "structure", - "required": [ - "Payer" - ], - "members": { - "Payer": {} - } - } - }, - "payload": "RequestPaymentConfiguration" - } - }, - "PutBucketTagging": { - "http": { - "method": "PUT", - "requestUri": "/{Bucket}?tagging" - }, - "input": { - "type": "structure", - "required": [ - "Bucket", - "Tagging" - ], - "members": { - "Bucket": { - "location": "uri", - "locationName": "Bucket" - }, - "ContentMD5": { - "location": "header", - "locationName": "Content-MD5" - }, - "Tagging": { - "shape": "Sab", - "locationName": "Tagging", - "xmlNamespace": { - "uri": "http://s3.amazonaws.com/doc/2006-03-01/" - } - } - }, - "payload": "Tagging" - } - }, - "PutBucketVersioning": { - "http": { - "method": "PUT", - "requestUri": "/{Bucket}?versioning" - }, - "input": { - "type": "structure", - "required": [ - "Bucket", - "VersioningConfiguration" - ], - "members": { - "Bucket": { - "location": "uri", - "locationName": "Bucket" - }, - "ContentMD5": { - "location": "header", - "locationName": "Content-MD5" - }, - "MFA": { - "location": "header", - "locationName": "x-amz-mfa" - }, - "VersioningConfiguration": { - "locationName": "VersioningConfiguration", - "xmlNamespace": { - "uri": "http://s3.amazonaws.com/doc/2006-03-01/" - }, - "type": "structure", - "members": { - "MFADelete": { - "locationName": "MfaDelete" - }, - "Status": {} - } - } - }, - "payload": "VersioningConfiguration" - } - }, - "PutBucketWebsite": { - "http": { - "method": "PUT", - "requestUri": "/{Bucket}?website" - }, - "input": { - "type": "structure", - "required": [ - "Bucket", - "WebsiteConfiguration" - ], - "members": { - "Bucket": { - "location": "uri", - "locationName": "Bucket" - }, - "ContentMD5": { - "location": "header", - "locationName": "Content-MD5" - }, - "WebsiteConfiguration": { - "locationName": "WebsiteConfiguration", - "xmlNamespace": { - "uri": "http://s3.amazonaws.com/doc/2006-03-01/" - }, - "type": "structure", - "members": { - "ErrorDocument": { - "shape": "S6t" - }, - "IndexDocument": { - "shape": "S6r" - }, - "RedirectAllRequestsTo": { - "shape": "S6o" - }, - "RoutingRules": { - "shape": "S6u" - } - } - } - }, - "payload": "WebsiteConfiguration" - } - }, - "PutObject": { - "http": { - "method": "PUT", - "requestUri": "/{Bucket}/{Key+}" - }, - "input": { - "type": "structure", - "required": [ - "Bucket", - "Key" - ], - "members": { - "ACL": { - "location": "header", - "locationName": "x-amz-acl" - }, - "Body": { - "streaming": true, - "type": "blob" - }, - "Bucket": { - "location": "uri", - "locationName": "Bucket" - }, - "CacheControl": { - "location": "header", - "locationName": "Cache-Control" - }, - "ContentDisposition": { - "location": "header", - "locationName": "Content-Disposition" - }, - "ContentEncoding": { - "location": "header", - "locationName": "Content-Encoding" - }, - "ContentLanguage": { - "location": "header", - "locationName": "Content-Language" - }, - "ContentLength": { - "location": "header", - "locationName": "Content-Length", - "type": "long" - }, - "ContentMD5": { - "location": "header", - "locationName": "Content-MD5" - }, - "ContentType": { - "location": "header", - "locationName": "Content-Type" - }, - "Expires": { - "location": "header", - "locationName": "Expires", - "type": "timestamp" - }, - "GrantFullControl": { - "location": "header", - "locationName": "x-amz-grant-full-control" - }, - "GrantRead": { - "location": "header", - "locationName": "x-amz-grant-read" - }, - "GrantReadACP": { - "location": "header", - "locationName": "x-amz-grant-read-acp" - }, - "GrantWriteACP": { - "location": "header", - "locationName": "x-amz-grant-write-acp" - }, - "Key": { - "location": "uri", - "locationName": "Key" - }, - "Metadata": { - "shape": "S11", - "location": "headers", - "locationName": "x-amz-meta-" - }, - "ServerSideEncryption": { - "location": "header", - "locationName": "x-amz-server-side-encryption" - }, - "StorageClass": { - "location": "header", - "locationName": "x-amz-storage-class" - }, - "WebsiteRedirectLocation": { - "location": "header", - "locationName": "x-amz-website-redirect-location" - }, - "SSECustomerAlgorithm": { - "location": "header", - "locationName": "x-amz-server-side-encryption-customer-algorithm" - }, - "SSECustomerKey": { - "shape": "S19", - "location": "header", - "locationName": "x-amz-server-side-encryption-customer-key" - }, - "SSECustomerKeyMD5": { - "location": "header", - "locationName": "x-amz-server-side-encryption-customer-key-MD5" - }, - "SSEKMSKeyId": { - "shape": "Sj", - "location": "header", - "locationName": "x-amz-server-side-encryption-aws-kms-key-id" - }, - "RequestPayer": { - "location": "header", - "locationName": "x-amz-request-payer" - }, - "Tagging": { - "location": "header", - "locationName": "x-amz-tagging" - } - }, - "payload": "Body" - }, - "output": { - "type": "structure", - "members": { - "Expiration": { - "location": "header", - "locationName": "x-amz-expiration" - }, - "ETag": { - "location": "header", - "locationName": "ETag" - }, - "ServerSideEncryption": { - "location": "header", - "locationName": "x-amz-server-side-encryption" - }, - "VersionId": { - "location": "header", - "locationName": "x-amz-version-id" - }, - "SSECustomerAlgorithm": { - "location": "header", - "locationName": "x-amz-server-side-encryption-customer-algorithm" - }, - "SSECustomerKeyMD5": { - "location": "header", - "locationName": "x-amz-server-side-encryption-customer-key-MD5" - }, - "SSEKMSKeyId": { - "shape": "Sj", - "location": "header", - "locationName": "x-amz-server-side-encryption-aws-kms-key-id" - }, - "RequestCharged": { - "location": "header", - "locationName": "x-amz-request-charged" - } - } - } - }, - "PutObjectAcl": { - "http": { - "method": "PUT", - "requestUri": "/{Bucket}/{Key+}?acl" - }, - "input": { - "type": "structure", - "required": [ - "Bucket", - "Key" - ], - "members": { - "ACL": { - "location": "header", - "locationName": "x-amz-acl" - }, - "AccessControlPolicy": { - "shape": "S9r", - "locationName": "AccessControlPolicy", - "xmlNamespace": { - "uri": "http://s3.amazonaws.com/doc/2006-03-01/" - } - }, - "Bucket": { - "location": "uri", - "locationName": "Bucket" - }, - "ContentMD5": { - "location": "header", - "locationName": "Content-MD5" - }, - "GrantFullControl": { - "location": "header", - "locationName": "x-amz-grant-full-control" - }, - "GrantRead": { - "location": "header", - "locationName": "x-amz-grant-read" - }, - "GrantReadACP": { - "location": "header", - "locationName": "x-amz-grant-read-acp" - }, - "GrantWrite": { - "location": "header", - "locationName": "x-amz-grant-write" - }, - "GrantWriteACP": { - "location": "header", - "locationName": "x-amz-grant-write-acp" - }, - "Key": { - "location": "uri", - "locationName": "Key" - }, - "RequestPayer": { - "location": "header", - "locationName": "x-amz-request-payer" - }, - "VersionId": { - "location": "querystring", - "locationName": "versionId" - } - }, - "payload": "AccessControlPolicy" - }, - "output": { - "type": "structure", - "members": { - "RequestCharged": { - "location": "header", - "locationName": "x-amz-request-charged" - } - } - } - }, - "PutObjectTagging": { - "http": { - "method": "PUT", - "requestUri": "/{Bucket}/{Key+}?tagging" - }, - "input": { - "type": "structure", - "required": [ - "Bucket", - "Key", - "Tagging" - ], - "members": { - "Bucket": { - "location": "uri", - "locationName": "Bucket" - }, - "Key": { - "location": "uri", - "locationName": "Key" - }, - "VersionId": { - "location": "querystring", - "locationName": "versionId" - }, - "ContentMD5": { - "location": "header", - "locationName": "Content-MD5" - }, - "Tagging": { - "shape": "Sab", - "locationName": "Tagging", - "xmlNamespace": { - "uri": "http://s3.amazonaws.com/doc/2006-03-01/" - } - } - }, - "payload": "Tagging" - }, - "output": { - "type": "structure", - "members": { - "VersionId": { - "location": "header", - "locationName": "x-amz-version-id" - } - } - } - }, - "RestoreObject": { - "http": { - "requestUri": "/{Bucket}/{Key+}?restore" - }, - "input": { - "type": "structure", - "required": [ - "Bucket", - "Key" - ], - "members": { - "Bucket": { - "location": "uri", - "locationName": "Bucket" - }, - "Key": { - "location": "uri", - "locationName": "Key" - }, - "VersionId": { - "location": "querystring", - "locationName": "versionId" - }, - "RestoreRequest": { - "locationName": "RestoreRequest", - "xmlNamespace": { - "uri": "http://s3.amazonaws.com/doc/2006-03-01/" - }, - "type": "structure", - "required": [ - "Days" - ], - "members": { - "Days": { - "type": "integer" - }, - "GlacierJobParameters": { - "type": "structure", - "required": [ - "Tier" - ], - "members": { - "Tier": {} - } - } - } - }, - "RequestPayer": { - "location": "header", - "locationName": "x-amz-request-payer" - } - }, - "payload": "RestoreRequest" - }, - "output": { - "type": "structure", - "members": { - "RequestCharged": { - "location": "header", - "locationName": "x-amz-request-charged" - } - } - }, - "alias": "PostObjectRestore" - }, - "UploadPart": { - "http": { - "method": "PUT", - "requestUri": "/{Bucket}/{Key+}" - }, - "input": { - "type": "structure", - "required": [ - "Bucket", - "Key", - "PartNumber", - "UploadId" - ], - "members": { - "Body": { - "streaming": true, - "type": "blob" - }, - "Bucket": { - "location": "uri", - "locationName": "Bucket" - }, - "ContentLength": { - "location": "header", - "locationName": "Content-Length", - "type": "long" - }, - "ContentMD5": { - "location": "header", - "locationName": "Content-MD5" - }, - "Key": { - "location": "uri", - "locationName": "Key" - }, - "PartNumber": { - "location": "querystring", - "locationName": "partNumber", - "type": "integer" - }, - "UploadId": { - "location": "querystring", - "locationName": "uploadId" - }, - "SSECustomerAlgorithm": { - "location": "header", - "locationName": "x-amz-server-side-encryption-customer-algorithm" - }, - "SSECustomerKey": { - "shape": "S19", - "location": "header", - "locationName": "x-amz-server-side-encryption-customer-key" - }, - "SSECustomerKeyMD5": { - "location": "header", - "locationName": "x-amz-server-side-encryption-customer-key-MD5" - }, - "RequestPayer": { - "location": "header", - "locationName": "x-amz-request-payer" - } - }, - "payload": "Body" - }, - "output": { - "type": "structure", - "members": { - "ServerSideEncryption": { - "location": "header", - "locationName": "x-amz-server-side-encryption" - }, - "ETag": { - "location": "header", - "locationName": "ETag" - }, - "SSECustomerAlgorithm": { - "location": "header", - "locationName": "x-amz-server-side-encryption-customer-algorithm" - }, - "SSECustomerKeyMD5": { - "location": "header", - "locationName": "x-amz-server-side-encryption-customer-key-MD5" - }, - "SSEKMSKeyId": { - "shape": "Sj", - "location": "header", - "locationName": "x-amz-server-side-encryption-aws-kms-key-id" - }, - "RequestCharged": { - "location": "header", - "locationName": "x-amz-request-charged" - } - } - } - }, - "UploadPartCopy": { - "http": { - "method": "PUT", - "requestUri": "/{Bucket}/{Key+}" - }, - "input": { - "type": "structure", - "required": [ - "Bucket", - "CopySource", - "Key", - "PartNumber", - "UploadId" - ], - "members": { - "Bucket": { - "location": "uri", - "locationName": "Bucket" - }, - "CopySource": { - "location": "header", - "locationName": "x-amz-copy-source" - }, - "CopySourceIfMatch": { - "location": "header", - "locationName": "x-amz-copy-source-if-match" - }, - "CopySourceIfModifiedSince": { - "location": "header", - "locationName": "x-amz-copy-source-if-modified-since", - "type": "timestamp" - }, - "CopySourceIfNoneMatch": { - "location": "header", - "locationName": "x-amz-copy-source-if-none-match" - }, - "CopySourceIfUnmodifiedSince": { - "location": "header", - "locationName": "x-amz-copy-source-if-unmodified-since", - "type": "timestamp" - }, - "CopySourceRange": { - "location": "header", - "locationName": "x-amz-copy-source-range" - }, - "Key": { - "location": "uri", - "locationName": "Key" - }, - "PartNumber": { - "location": "querystring", - "locationName": "partNumber", - "type": "integer" - }, - "UploadId": { - "location": "querystring", - "locationName": "uploadId" - }, - "SSECustomerAlgorithm": { - "location": "header", - "locationName": "x-amz-server-side-encryption-customer-algorithm" - }, - "SSECustomerKey": { - "shape": "S19", - "location": "header", - "locationName": "x-amz-server-side-encryption-customer-key" - }, - "SSECustomerKeyMD5": { - "location": "header", - "locationName": "x-amz-server-side-encryption-customer-key-MD5" - }, - "CopySourceSSECustomerAlgorithm": { - "location": "header", - "locationName": "x-amz-copy-source-server-side-encryption-customer-algorithm" - }, - "CopySourceSSECustomerKey": { - "shape": "S1c", - "location": "header", - "locationName": "x-amz-copy-source-server-side-encryption-customer-key" - }, - "CopySourceSSECustomerKeyMD5": { - "location": "header", - "locationName": "x-amz-copy-source-server-side-encryption-customer-key-MD5" - }, - "RequestPayer": { - "location": "header", - "locationName": "x-amz-request-payer" - } - } - }, - "output": { - "type": "structure", - "members": { - "CopySourceVersionId": { - "location": "header", - "locationName": "x-amz-copy-source-version-id" - }, - "CopyPartResult": { - "type": "structure", - "members": { - "ETag": {}, - "LastModified": { - "type": "timestamp" - } - } - }, - "ServerSideEncryption": { - "location": "header", - "locationName": "x-amz-server-side-encryption" - }, - "SSECustomerAlgorithm": { - "location": "header", - "locationName": "x-amz-server-side-encryption-customer-algorithm" - }, - "SSECustomerKeyMD5": { - "location": "header", - "locationName": "x-amz-server-side-encryption-customer-key-MD5" - }, - "SSEKMSKeyId": { - "shape": "Sj", - "location": "header", - "locationName": "x-amz-server-side-encryption-aws-kms-key-id" - }, - "RequestCharged": { - "location": "header", - "locationName": "x-amz-request-charged" - } - }, - "payload": "CopyPartResult" - } - } - }, - "shapes": { - "Sj": { - "type": "string", - "sensitive": true - }, - "S11": { - "type": "map", - "key": {}, - "value": {} - }, - "S19": { - "type": "blob", - "sensitive": true - }, - "S1c": { - "type": "blob", - "sensitive": true - }, - "S2u": { - "type": "structure", - "members": { - "DisplayName": {}, - "ID": {} - } - }, - "S2x": { - "type": "list", - "member": { - "locationName": "Grant", - "type": "structure", - "members": { - "Grantee": { - "shape": "S2z" - }, - "Permission": {} - } - } - }, - "S2z": { - "type": "structure", - "required": [ - "Type" - ], - "members": { - "DisplayName": {}, - "EmailAddress": {}, - "ID": {}, - "Type": { - "locationName": "xsi:type", - "xmlAttribute": true - }, - "URI": {} - }, - "xmlNamespace": { - "prefix": "xsi", - "uri": "http://www.w3.org/2001/XMLSchema-instance" - } - }, - "S36": { - "type": "structure", - "required": [ - "Id", - "StorageClassAnalysis" - ], - "members": { - "Id": {}, - "Filter": { - "type": "structure", - "members": { - "Prefix": {}, - "Tag": { - "shape": "S39" - }, - "And": { - "type": "structure", - "members": { - "Prefix": {}, - "Tags": { - "shape": "S3c", - "flattened": true, - "locationName": "Tag" - } - } - } - } - }, - "StorageClassAnalysis": { - "type": "structure", - "members": { - "DataExport": { - "type": "structure", - "required": [ - "OutputSchemaVersion", - "Destination" - ], - "members": { - "OutputSchemaVersion": {}, - "Destination": { - "type": "structure", - "required": [ - "S3BucketDestination" - ], - "members": { - "S3BucketDestination": { - "type": "structure", - "required": [ - "Format", - "Bucket" - ], - "members": { - "Format": {}, - "BucketAccountId": {}, - "Bucket": {}, - "Prefix": {} - } - } - } - } - } - } - } - } - } - }, - "S39": { - "type": "structure", - "required": [ - "Key", - "Value" - ], - "members": { - "Key": {}, - "Value": {} - } - }, - "S3c": { - "type": "list", - "member": { - "shape": "S39", - "locationName": "Tag" - } - }, - "S3m": { - "type": "list", - "member": { - "type": "structure", - "required": [ - "AllowedMethods", - "AllowedOrigins" - ], - "members": { - "AllowedHeaders": { - "locationName": "AllowedHeader", - "type": "list", - "member": {}, - "flattened": true - }, - "AllowedMethods": { - "locationName": "AllowedMethod", - "type": "list", - "member": {}, - "flattened": true - }, - "AllowedOrigins": { - "locationName": "AllowedOrigin", - "type": "list", - "member": {}, - "flattened": true - }, - "ExposeHeaders": { - "locationName": "ExposeHeader", - "type": "list", - "member": {}, - "flattened": true - }, - "MaxAgeSeconds": { - "type": "integer" - } - } - }, - "flattened": true - }, - "S3z": { - "type": "structure", - "required": [ - "Destination", - "IsEnabled", - "Id", - "IncludedObjectVersions", - "Schedule" - ], - "members": { - "Destination": { - "type": "structure", - "required": [ - "S3BucketDestination" - ], - "members": { - "S3BucketDestination": { - "type": "structure", - "required": [ - "Bucket", - "Format" - ], - "members": { - "AccountId": {}, - "Bucket": {}, - "Format": {}, - "Prefix": {} - } - } - } - }, - "IsEnabled": { - "type": "boolean" - }, - "Filter": { - "type": "structure", - "required": [ - "Prefix" - ], - "members": { - "Prefix": {} - } - }, - "Id": {}, - "IncludedObjectVersions": {}, - "OptionalFields": { - "type": "list", - "member": { - "locationName": "Field" - } - }, - "Schedule": { - "type": "structure", - "required": [ - "Frequency" - ], - "members": { - "Frequency": {} - } - } - } - }, - "S4c": { - "type": "list", - "member": { - "type": "structure", - "required": [ - "Prefix", - "Status" - ], - "members": { - "Expiration": { - "shape": "S4e" - }, - "ID": {}, - "Prefix": {}, - "Status": {}, - "Transition": { - "shape": "S4j" - }, - "NoncurrentVersionTransition": { - "shape": "S4l" - }, - "NoncurrentVersionExpiration": { - "shape": "S4m" - }, - "AbortIncompleteMultipartUpload": { - "shape": "S4n" - } - } - }, - "flattened": true - }, - "S4e": { - "type": "structure", - "members": { - "Date": { - "shape": "S4f" - }, - "Days": { - "type": "integer" - }, - "ExpiredObjectDeleteMarker": { - "type": "boolean" - } - } - }, - "S4f": { - "type": "timestamp", - "timestampFormat": "iso8601" - }, - "S4j": { - "type": "structure", - "members": { - "Date": { - "shape": "S4f" - }, - "Days": { - "type": "integer" - }, - "StorageClass": {} - } - }, - "S4l": { - "type": "structure", - "members": { - "NoncurrentDays": { - "type": "integer" - }, - "StorageClass": {} - } - }, - "S4m": { - "type": "structure", - "members": { - "NoncurrentDays": { - "type": "integer" - } - } - }, - "S4n": { - "type": "structure", - "members": { - "DaysAfterInitiation": { - "type": "integer" - } - } - }, - "S4r": { - "type": "list", - "member": { - "type": "structure", - "required": [ - "Status" - ], - "members": { - "Expiration": { - "shape": "S4e" - }, - "ID": {}, - "Prefix": { - "deprecated": true - }, - "Filter": { - "type": "structure", - "members": { - "Prefix": {}, - "Tag": { - "shape": "S39" - }, - "And": { - "type": "structure", - "members": { - "Prefix": {}, - "Tags": { - "shape": "S3c", - "flattened": true, - "locationName": "Tag" - } - } - } - } - }, - "Status": {}, - "Transitions": { - "locationName": "Transition", - "type": "list", - "member": { - "shape": "S4j" - }, - "flattened": true - }, - "NoncurrentVersionTransitions": { - "locationName": "NoncurrentVersionTransition", - "type": "list", - "member": { - "shape": "S4l" - }, - "flattened": true - }, - "NoncurrentVersionExpiration": { - "shape": "S4m" - }, - "AbortIncompleteMultipartUpload": { - "shape": "S4n" - } - } - }, - "flattened": true - }, - "S51": { - "type": "structure", - "members": { - "TargetBucket": {}, - "TargetGrants": { - "type": "list", - "member": { - "locationName": "Grant", - "type": "structure", - "members": { - "Grantee": { - "shape": "S2z" - }, - "Permission": {} - } - } - }, - "TargetPrefix": {} - } - }, - "S59": { - "type": "structure", - "required": [ - "Id" - ], - "members": { - "Id": {}, - "Filter": { - "type": "structure", - "members": { - "Prefix": {}, - "Tag": { - "shape": "S39" - }, - "And": { - "type": "structure", - "members": { - "Prefix": {}, - "Tags": { - "shape": "S3c", - "flattened": true, - "locationName": "Tag" - } - } - } - } - } - } - }, - "S5c": { - "type": "structure", - "required": [ - "Bucket" - ], - "members": { - "Bucket": { - "location": "uri", - "locationName": "Bucket" - } - } - }, - "S5d": { - "type": "structure", - "members": { - "TopicConfiguration": { - "type": "structure", - "members": { - "Id": {}, - "Events": { - "shape": "S5g", - "locationName": "Event" - }, - "Event": { - "deprecated": true - }, - "Topic": {} - } - }, - "QueueConfiguration": { - "type": "structure", - "members": { - "Id": {}, - "Event": { - "deprecated": true - }, - "Events": { - "shape": "S5g", - "locationName": "Event" - }, - "Queue": {} - } - }, - "CloudFunctionConfiguration": { - "type": "structure", - "members": { - "Id": {}, - "Event": { - "deprecated": true - }, - "Events": { - "shape": "S5g", - "locationName": "Event" - }, - "CloudFunction": {}, - "InvocationRole": {} - } - } - } - }, - "S5g": { - "type": "list", - "member": {}, - "flattened": true - }, - "S5o": { - "type": "structure", - "members": { - "TopicConfigurations": { - "locationName": "TopicConfiguration", - "type": "list", - "member": { - "type": "structure", - "required": [ - "TopicArn", - "Events" - ], - "members": { - "Id": {}, - "TopicArn": { - "locationName": "Topic" - }, - "Events": { - "shape": "S5g", - "locationName": "Event" - }, - "Filter": { - "shape": "S5r" - } - } - }, - "flattened": true - }, - "QueueConfigurations": { - "locationName": "QueueConfiguration", - "type": "list", - "member": { - "type": "structure", - "required": [ - "QueueArn", - "Events" - ], - "members": { - "Id": {}, - "QueueArn": { - "locationName": "Queue" - }, - "Events": { - "shape": "S5g", - "locationName": "Event" - }, - "Filter": { - "shape": "S5r" - } - } - }, - "flattened": true - }, - "LambdaFunctionConfigurations": { - "locationName": "CloudFunctionConfiguration", - "type": "list", - "member": { - "type": "structure", - "required": [ - "LambdaFunctionArn", - "Events" - ], - "members": { - "Id": {}, - "LambdaFunctionArn": { - "locationName": "CloudFunction" - }, - "Events": { - "shape": "S5g", - "locationName": "Event" - }, - "Filter": { - "shape": "S5r" - } - } - }, - "flattened": true - } - } - }, - "S5r": { - "type": "structure", - "members": { - "Key": { - "locationName": "S3Key", - "type": "structure", - "members": { - "FilterRules": { - "locationName": "FilterRule", - "type": "list", - "member": { - "type": "structure", - "members": { - "Name": {}, - "Value": {} - } - }, - "flattened": true - } - } - } - } - }, - "S67": { - "type": "structure", - "required": [ - "Role", - "Rules" - ], - "members": { - "Role": {}, - "Rules": { - "locationName": "Rule", - "type": "list", - "member": { - "type": "structure", - "required": [ - "Prefix", - "Status", - "Destination" - ], - "members": { - "ID": {}, - "Prefix": {}, - "Status": {}, - "Destination": { - "type": "structure", - "required": [ - "Bucket" - ], - "members": { - "Bucket": {}, - "StorageClass": {} - } - } - } - }, - "flattened": true - } - } - }, - "S6o": { - "type": "structure", - "required": [ - "HostName" - ], - "members": { - "HostName": {}, - "Protocol": {} - } - }, - "S6r": { - "type": "structure", - "required": [ - "Suffix" - ], - "members": { - "Suffix": {} - } - }, - "S6t": { - "type": "structure", - "required": [ - "Key" - ], - "members": { - "Key": {} - } - }, - "S6u": { - "type": "list", - "member": { - "locationName": "RoutingRule", - "type": "structure", - "required": [ - "Redirect" - ], - "members": { - "Condition": { - "type": "structure", - "members": { - "HttpErrorCodeReturnedEquals": {}, - "KeyPrefixEquals": {} - } - }, - "Redirect": { - "type": "structure", - "members": { - "HostName": {}, - "HttpRedirectCode": {}, - "Protocol": {}, - "ReplaceKeyPrefixWith": {}, - "ReplaceKeyWith": {} - } - } - } - } - }, - "S8q": { - "type": "structure", - "members": { - "ID": {}, - "DisplayName": {} - } - }, - "S8r": { - "type": "list", - "member": { - "type": "structure", - "members": { - "Prefix": {} - } - }, - "flattened": true - }, - "S99": { - "type": "list", - "member": { - "type": "structure", - "members": { - "Key": {}, - "LastModified": { - "type": "timestamp" - }, - "ETag": {}, - "Size": { - "type": "integer" - }, - "StorageClass": {}, - "Owner": { - "shape": "S2u" - } - } - }, - "flattened": true - }, - "S9r": { - "type": "structure", - "members": { - "Grants": { - "shape": "S2x", - "locationName": "AccessControlList" - }, - "Owner": { - "shape": "S2u" - } - } - }, - "Sab": { - "type": "structure", - "required": [ - "TagSet" - ], - "members": { - "TagSet": { - "shape": "S3c" - } - } - } - } -} \ No newline at end of file diff --git a/workshops/monte-carlo-on-ec2-spot-fleet/src/web/node_modules/aws-sdk/apis/s3-2006-03-01.paginators.json b/workshops/monte-carlo-on-ec2-spot-fleet/src/web/node_modules/aws-sdk/apis/s3-2006-03-01.paginators.json deleted file mode 100644 index 6d24346f..00000000 --- a/workshops/monte-carlo-on-ec2-spot-fleet/src/web/node_modules/aws-sdk/apis/s3-2006-03-01.paginators.json +++ /dev/null @@ -1,66 +0,0 @@ -{ - "pagination": { - "ListBuckets": { - "result_key": "Buckets" - }, - "ListMultipartUploads": { - "input_token": [ - "KeyMarker", - "UploadIdMarker" - ], - "limit_key": "MaxUploads", - "more_results": "IsTruncated", - "output_token": [ - "NextKeyMarker", - "NextUploadIdMarker" - ], - "result_key": [ - "Uploads", - "CommonPrefixes" - ] - }, - "ListObjectVersions": { - "input_token": [ - "KeyMarker", - "VersionIdMarker" - ], - "limit_key": "MaxKeys", - "more_results": "IsTruncated", - "output_token": [ - "NextKeyMarker", - "NextVersionIdMarker" - ], - "result_key": [ - "Versions", - "DeleteMarkers", - "CommonPrefixes" - ] - }, - "ListObjects": { - "input_token": "Marker", - "limit_key": "MaxKeys", - "more_results": "IsTruncated", - "output_token": "NextMarker || Contents[-1].Key", - "result_key": [ - "Contents", - "CommonPrefixes" - ] - }, - "ListObjectsV2": { - "input_token": "ContinuationToken", - "limit_key": "MaxKeys", - "output_token": "NextContinuationToken", - "result_key": [ - "Contents", - "CommonPrefixes" - ] - }, - "ListParts": { - "input_token": "PartNumberMarker", - "limit_key": "MaxParts", - "more_results": "IsTruncated", - "output_token": "NextPartNumberMarker", - "result_key": "Parts" - } - } -} \ No newline at end of file diff --git a/workshops/monte-carlo-on-ec2-spot-fleet/src/web/node_modules/aws-sdk/apis/s3-2006-03-01.waiters2.json b/workshops/monte-carlo-on-ec2-spot-fleet/src/web/node_modules/aws-sdk/apis/s3-2006-03-01.waiters2.json deleted file mode 100644 index b508a8f5..00000000 --- a/workshops/monte-carlo-on-ec2-spot-fleet/src/web/node_modules/aws-sdk/apis/s3-2006-03-01.waiters2.json +++ /dev/null @@ -1,73 +0,0 @@ -{ - "version": 2, - "waiters": { - "BucketExists": { - "delay": 5, - "operation": "HeadBucket", - "maxAttempts": 20, - "acceptors": [ - { - "expected": 200, - "matcher": "status", - "state": "success" - }, - { - "expected": 301, - "matcher": "status", - "state": "success" - }, - { - "expected": 403, - "matcher": "status", - "state": "success" - }, - { - "expected": 404, - "matcher": "status", - "state": "retry" - } - ] - }, - "BucketNotExists": { - "delay": 5, - "operation": "HeadBucket", - "maxAttempts": 20, - "acceptors": [ - { - "expected": 404, - "matcher": "status", - "state": "success" - } - ] - }, - "ObjectExists": { - "delay": 5, - "operation": "HeadObject", - "maxAttempts": 20, - "acceptors": [ - { - "expected": 200, - "matcher": "status", - "state": "success" - }, - { - "expected": 404, - "matcher": "status", - "state": "retry" - } - ] - }, - "ObjectNotExists": { - "delay": 5, - "operation": "HeadObject", - "maxAttempts": 20, - "acceptors": [ - { - "expected": 404, - "matcher": "status", - "state": "success" - } - ] - } - } -} diff --git a/workshops/monte-carlo-on-ec2-spot-fleet/src/web/node_modules/aws-sdk/apis/sdb-2009-04-15.min.json b/workshops/monte-carlo-on-ec2-spot-fleet/src/web/node_modules/aws-sdk/apis/sdb-2009-04-15.min.json deleted file mode 100644 index e931b3cf..00000000 --- a/workshops/monte-carlo-on-ec2-spot-fleet/src/web/node_modules/aws-sdk/apis/sdb-2009-04-15.min.json +++ /dev/null @@ -1,336 +0,0 @@ -{ - "metadata": { - "apiVersion": "2009-04-15", - "endpointPrefix": "sdb", - "serviceFullName": "Amazon SimpleDB", - "signatureVersion": "v2", - "xmlNamespace": "http://sdb.amazonaws.com/doc/2009-04-15/", - "protocol": "query" - }, - "operations": { - "BatchDeleteAttributes": { - "input": { - "type": "structure", - "required": [ - "DomainName", - "Items" - ], - "members": { - "DomainName": {}, - "Items": { - "type": "list", - "member": { - "locationName": "Item", - "type": "structure", - "required": [ - "Name" - ], - "members": { - "Name": { - "locationName": "ItemName" - }, - "Attributes": { - "shape": "S5" - } - } - }, - "flattened": true - } - } - } - }, - "BatchPutAttributes": { - "input": { - "type": "structure", - "required": [ - "DomainName", - "Items" - ], - "members": { - "DomainName": {}, - "Items": { - "type": "list", - "member": { - "locationName": "Item", - "type": "structure", - "required": [ - "Name", - "Attributes" - ], - "members": { - "Name": { - "locationName": "ItemName" - }, - "Attributes": { - "shape": "Sa" - } - } - }, - "flattened": true - } - } - } - }, - "CreateDomain": { - "input": { - "type": "structure", - "required": [ - "DomainName" - ], - "members": { - "DomainName": {} - } - } - }, - "DeleteAttributes": { - "input": { - "type": "structure", - "required": [ - "DomainName", - "ItemName" - ], - "members": { - "DomainName": {}, - "ItemName": {}, - "Attributes": { - "shape": "S5" - }, - "Expected": { - "shape": "Sf" - } - } - } - }, - "DeleteDomain": { - "input": { - "type": "structure", - "required": [ - "DomainName" - ], - "members": { - "DomainName": {} - } - } - }, - "DomainMetadata": { - "input": { - "type": "structure", - "required": [ - "DomainName" - ], - "members": { - "DomainName": {} - } - }, - "output": { - "resultWrapper": "DomainMetadataResult", - "type": "structure", - "members": { - "ItemCount": { - "type": "integer" - }, - "ItemNamesSizeBytes": { - "type": "long" - }, - "AttributeNameCount": { - "type": "integer" - }, - "AttributeNamesSizeBytes": { - "type": "long" - }, - "AttributeValueCount": { - "type": "integer" - }, - "AttributeValuesSizeBytes": { - "type": "long" - }, - "Timestamp": { - "type": "integer" - } - } - } - }, - "GetAttributes": { - "input": { - "type": "structure", - "required": [ - "DomainName", - "ItemName" - ], - "members": { - "DomainName": {}, - "ItemName": {}, - "AttributeNames": { - "type": "list", - "member": { - "locationName": "AttributeName" - }, - "flattened": true - }, - "ConsistentRead": { - "type": "boolean" - } - } - }, - "output": { - "resultWrapper": "GetAttributesResult", - "type": "structure", - "members": { - "Attributes": { - "shape": "So" - } - } - } - }, - "ListDomains": { - "input": { - "type": "structure", - "members": { - "MaxNumberOfDomains": { - "type": "integer" - }, - "NextToken": {} - } - }, - "output": { - "resultWrapper": "ListDomainsResult", - "type": "structure", - "members": { - "DomainNames": { - "type": "list", - "member": { - "locationName": "DomainName" - }, - "flattened": true - }, - "NextToken": {} - } - } - }, - "PutAttributes": { - "input": { - "type": "structure", - "required": [ - "DomainName", - "ItemName", - "Attributes" - ], - "members": { - "DomainName": {}, - "ItemName": {}, - "Attributes": { - "shape": "Sa" - }, - "Expected": { - "shape": "Sf" - } - } - } - }, - "Select": { - "input": { - "type": "structure", - "required": [ - "SelectExpression" - ], - "members": { - "SelectExpression": {}, - "NextToken": {}, - "ConsistentRead": { - "type": "boolean" - } - } - }, - "output": { - "resultWrapper": "SelectResult", - "type": "structure", - "members": { - "Items": { - "type": "list", - "member": { - "locationName": "Item", - "type": "structure", - "required": [ - "Name", - "Attributes" - ], - "members": { - "Name": {}, - "AlternateNameEncoding": {}, - "Attributes": { - "shape": "So" - } - } - }, - "flattened": true - }, - "NextToken": {} - } - } - } - }, - "shapes": { - "S5": { - "type": "list", - "member": { - "locationName": "Attribute", - "type": "structure", - "required": [ - "Name" - ], - "members": { - "Name": {}, - "Value": {} - } - }, - "flattened": true - }, - "Sa": { - "type": "list", - "member": { - "locationName": "Attribute", - "type": "structure", - "required": [ - "Name", - "Value" - ], - "members": { - "Name": {}, - "Value": {}, - "Replace": { - "type": "boolean" - } - } - }, - "flattened": true - }, - "Sf": { - "type": "structure", - "members": { - "Name": {}, - "Value": {}, - "Exists": { - "type": "boolean" - } - } - }, - "So": { - "type": "list", - "member": { - "locationName": "Attribute", - "type": "structure", - "required": [ - "Name", - "Value" - ], - "members": { - "Name": {}, - "AlternateNameEncoding": {}, - "Value": {}, - "AlternateValueEncoding": {} - } - }, - "flattened": true - } - } -} \ No newline at end of file diff --git a/workshops/monte-carlo-on-ec2-spot-fleet/src/web/node_modules/aws-sdk/apis/sdb-2009-04-15.paginators.json b/workshops/monte-carlo-on-ec2-spot-fleet/src/web/node_modules/aws-sdk/apis/sdb-2009-04-15.paginators.json deleted file mode 100644 index 23620988..00000000 --- a/workshops/monte-carlo-on-ec2-spot-fleet/src/web/node_modules/aws-sdk/apis/sdb-2009-04-15.paginators.json +++ /dev/null @@ -1,15 +0,0 @@ -{ - "pagination": { - "ListDomains": { - "input_token": "NextToken", - "output_token": "NextToken", - "limit_key": "MaxNumberOfDomains", - "result_key": "DomainNames" - }, - "Select": { - "input_token": "NextToken", - "output_token": "NextToken", - "result_key": "Items" - } - } -} diff --git a/workshops/monte-carlo-on-ec2-spot-fleet/src/web/node_modules/aws-sdk/apis/servicecatalog-2015-12-10.examples.json b/workshops/monte-carlo-on-ec2-spot-fleet/src/web/node_modules/aws-sdk/apis/servicecatalog-2015-12-10.examples.json deleted file mode 100644 index 0ea7e3b0..00000000 --- a/workshops/monte-carlo-on-ec2-spot-fleet/src/web/node_modules/aws-sdk/apis/servicecatalog-2015-12-10.examples.json +++ /dev/null @@ -1,5 +0,0 @@ -{ - "version": "1.0", - "examples": { - } -} diff --git a/workshops/monte-carlo-on-ec2-spot-fleet/src/web/node_modules/aws-sdk/apis/servicecatalog-2015-12-10.min.json b/workshops/monte-carlo-on-ec2-spot-fleet/src/web/node_modules/aws-sdk/apis/servicecatalog-2015-12-10.min.json deleted file mode 100644 index df2835f7..00000000 --- a/workshops/monte-carlo-on-ec2-spot-fleet/src/web/node_modules/aws-sdk/apis/servicecatalog-2015-12-10.min.json +++ /dev/null @@ -1,1692 +0,0 @@ -{ - "version": "2.0", - "metadata": { - "apiVersion": "2015-12-10", - "endpointPrefix": "servicecatalog", - "jsonVersion": "1.1", - "protocol": "json", - "serviceFullName": "AWS Service Catalog", - "signatureVersion": "v4", - "targetPrefix": "AWS242ServiceCatalogService", - "uid": "servicecatalog-2015-12-10" - }, - "operations": { - "AcceptPortfolioShare": { - "input": { - "type": "structure", - "required": [ - "PortfolioId" - ], - "members": { - "AcceptLanguage": {}, - "PortfolioId": {} - } - }, - "output": { - "type": "structure", - "members": {} - } - }, - "AssociatePrincipalWithPortfolio": { - "input": { - "type": "structure", - "required": [ - "PortfolioId", - "PrincipalARN", - "PrincipalType" - ], - "members": { - "AcceptLanguage": {}, - "PortfolioId": {}, - "PrincipalARN": {}, - "PrincipalType": {} - } - }, - "output": { - "type": "structure", - "members": {} - } - }, - "AssociateProductWithPortfolio": { - "input": { - "type": "structure", - "required": [ - "ProductId", - "PortfolioId" - ], - "members": { - "AcceptLanguage": {}, - "ProductId": {}, - "PortfolioId": {}, - "SourcePortfolioId": {} - } - }, - "output": { - "type": "structure", - "members": {} - } - }, - "AssociateTagOptionWithResource": { - "input": { - "type": "structure", - "required": [ - "ResourceId", - "TagOptionId" - ], - "members": { - "ResourceId": {}, - "TagOptionId": {} - } - }, - "output": { - "type": "structure", - "members": {} - } - }, - "CopyProduct": { - "input": { - "type": "structure", - "required": [ - "SourceProductArn", - "IdempotencyToken" - ], - "members": { - "AcceptLanguage": {}, - "SourceProductArn": {}, - "TargetProductId": {}, - "TargetProductName": {}, - "SourceProvisioningArtifactIdentifiers": { - "type": "list", - "member": { - "type": "map", - "key": {}, - "value": {} - } - }, - "CopyOptions": { - "type": "list", - "member": {} - }, - "IdempotencyToken": { - "idempotencyToken": true - } - } - }, - "output": { - "type": "structure", - "members": { - "CopyProductToken": {} - } - } - }, - "CreateConstraint": { - "input": { - "type": "structure", - "required": [ - "PortfolioId", - "ProductId", - "Parameters", - "Type", - "IdempotencyToken" - ], - "members": { - "AcceptLanguage": {}, - "PortfolioId": {}, - "ProductId": {}, - "Parameters": {}, - "Type": {}, - "Description": {}, - "IdempotencyToken": { - "idempotencyToken": true - } - } - }, - "output": { - "type": "structure", - "members": { - "ConstraintDetail": { - "shape": "Sv" - }, - "ConstraintParameters": {}, - "Status": {} - } - } - }, - "CreatePortfolio": { - "input": { - "type": "structure", - "required": [ - "DisplayName", - "ProviderName", - "IdempotencyToken" - ], - "members": { - "AcceptLanguage": {}, - "DisplayName": {}, - "Description": {}, - "ProviderName": {}, - "Tags": { - "shape": "S12" - }, - "IdempotencyToken": { - "idempotencyToken": true - } - } - }, - "output": { - "type": "structure", - "members": { - "PortfolioDetail": { - "shape": "S17" - }, - "Tags": { - "shape": "S1a" - } - } - } - }, - "CreatePortfolioShare": { - "input": { - "type": "structure", - "required": [ - "PortfolioId", - "AccountId" - ], - "members": { - "AcceptLanguage": {}, - "PortfolioId": {}, - "AccountId": {} - } - }, - "output": { - "type": "structure", - "members": {} - } - }, - "CreateProduct": { - "input": { - "type": "structure", - "required": [ - "Name", - "Owner", - "ProductType", - "ProvisioningArtifactParameters", - "IdempotencyToken" - ], - "members": { - "AcceptLanguage": {}, - "Name": {}, - "Owner": {}, - "Description": {}, - "Distributor": {}, - "SupportDescription": {}, - "SupportEmail": {}, - "SupportUrl": {}, - "ProductType": {}, - "Tags": { - "shape": "S12" - }, - "ProvisioningArtifactParameters": { - "shape": "S1k" - }, - "IdempotencyToken": { - "idempotencyToken": true - } - } - }, - "output": { - "type": "structure", - "members": { - "ProductViewDetail": { - "shape": "S1s" - }, - "ProvisioningArtifactDetail": { - "shape": "S1x" - }, - "Tags": { - "shape": "S1a" - } - } - } - }, - "CreateProvisioningArtifact": { - "input": { - "type": "structure", - "required": [ - "ProductId", - "Parameters", - "IdempotencyToken" - ], - "members": { - "AcceptLanguage": {}, - "ProductId": {}, - "Parameters": { - "shape": "S1k" - }, - "IdempotencyToken": { - "idempotencyToken": true - } - } - }, - "output": { - "type": "structure", - "members": { - "ProvisioningArtifactDetail": { - "shape": "S1x" - }, - "Info": { - "shape": "S1n" - }, - "Status": {} - } - } - }, - "CreateTagOption": { - "input": { - "type": "structure", - "required": [ - "Key", - "Value" - ], - "members": { - "Key": {}, - "Value": {} - } - }, - "output": { - "type": "structure", - "members": { - "TagOptionDetail": { - "shape": "S24" - } - } - } - }, - "DeleteConstraint": { - "input": { - "type": "structure", - "required": [ - "Id" - ], - "members": { - "AcceptLanguage": {}, - "Id": {} - } - }, - "output": { - "type": "structure", - "members": {} - } - }, - "DeletePortfolio": { - "input": { - "type": "structure", - "required": [ - "Id" - ], - "members": { - "AcceptLanguage": {}, - "Id": {} - } - }, - "output": { - "type": "structure", - "members": {} - } - }, - "DeletePortfolioShare": { - "input": { - "type": "structure", - "required": [ - "PortfolioId", - "AccountId" - ], - "members": { - "AcceptLanguage": {}, - "PortfolioId": {}, - "AccountId": {} - } - }, - "output": { - "type": "structure", - "members": {} - } - }, - "DeleteProduct": { - "input": { - "type": "structure", - "required": [ - "Id" - ], - "members": { - "AcceptLanguage": {}, - "Id": {} - } - }, - "output": { - "type": "structure", - "members": {} - } - }, - "DeleteProvisioningArtifact": { - "input": { - "type": "structure", - "required": [ - "ProductId", - "ProvisioningArtifactId" - ], - "members": { - "AcceptLanguage": {}, - "ProductId": {}, - "ProvisioningArtifactId": {} - } - }, - "output": { - "type": "structure", - "members": {} - } - }, - "DescribeConstraint": { - "input": { - "type": "structure", - "required": [ - "Id" - ], - "members": { - "AcceptLanguage": {}, - "Id": {} - } - }, - "output": { - "type": "structure", - "members": { - "ConstraintDetail": { - "shape": "Sv" - }, - "ConstraintParameters": {}, - "Status": {} - } - } - }, - "DescribeCopyProductStatus": { - "input": { - "type": "structure", - "required": [ - "CopyProductToken" - ], - "members": { - "AcceptLanguage": {}, - "CopyProductToken": {} - } - }, - "output": { - "type": "structure", - "members": { - "CopyProductStatus": {}, - "TargetProductId": {}, - "StatusDetail": {} - } - } - }, - "DescribePortfolio": { - "input": { - "type": "structure", - "required": [ - "Id" - ], - "members": { - "AcceptLanguage": {}, - "Id": {} - } - }, - "output": { - "type": "structure", - "members": { - "PortfolioDetail": { - "shape": "S17" - }, - "Tags": { - "shape": "S1a" - }, - "TagOptions": { - "shape": "S2o" - } - } - } - }, - "DescribeProduct": { - "input": { - "type": "structure", - "required": [ - "Id" - ], - "members": { - "AcceptLanguage": {}, - "Id": {} - } - }, - "output": { - "type": "structure", - "members": { - "ProductViewSummary": { - "shape": "S1t" - }, - "ProvisioningArtifacts": { - "shape": "S2r" - } - } - } - }, - "DescribeProductAsAdmin": { - "input": { - "type": "structure", - "required": [ - "Id" - ], - "members": { - "AcceptLanguage": {}, - "Id": {} - } - }, - "output": { - "type": "structure", - "members": { - "ProductViewDetail": { - "shape": "S1s" - }, - "ProvisioningArtifactSummaries": { - "type": "list", - "member": { - "type": "structure", - "members": { - "Id": {}, - "Name": {}, - "Description": {}, - "CreatedTime": { - "type": "timestamp" - }, - "ProvisioningArtifactMetadata": { - "shape": "S1n" - } - } - } - }, - "Tags": { - "shape": "S1a" - }, - "TagOptions": { - "shape": "S2o" - } - } - } - }, - "DescribeProductView": { - "input": { - "type": "structure", - "required": [ - "Id" - ], - "members": { - "AcceptLanguage": {}, - "Id": {} - } - }, - "output": { - "type": "structure", - "members": { - "ProductViewSummary": { - "shape": "S1t" - }, - "ProvisioningArtifacts": { - "shape": "S2r" - } - } - } - }, - "DescribeProvisionedProduct": { - "input": { - "type": "structure", - "required": [ - "Id" - ], - "members": { - "AcceptLanguage": {}, - "Id": {} - } - }, - "output": { - "type": "structure", - "members": { - "ProvisionedProductDetail": { - "shape": "S32" - } - } - } - }, - "DescribeProvisioningArtifact": { - "input": { - "type": "structure", - "required": [ - "ProvisioningArtifactId", - "ProductId" - ], - "members": { - "AcceptLanguage": {}, - "ProvisioningArtifactId": {}, - "ProductId": {}, - "Verbose": { - "type": "boolean" - } - } - }, - "output": { - "type": "structure", - "members": { - "ProvisioningArtifactDetail": { - "shape": "S1x" - }, - "Info": { - "shape": "S1n" - }, - "Status": {} - } - } - }, - "DescribeProvisioningParameters": { - "input": { - "type": "structure", - "required": [ - "ProductId", - "ProvisioningArtifactId" - ], - "members": { - "AcceptLanguage": {}, - "ProductId": {}, - "ProvisioningArtifactId": {}, - "PathId": {} - } - }, - "output": { - "type": "structure", - "members": { - "ProvisioningArtifactParameters": { - "type": "list", - "member": { - "type": "structure", - "members": { - "ParameterKey": {}, - "DefaultValue": {}, - "ParameterType": {}, - "IsNoEcho": { - "type": "boolean" - }, - "Description": {}, - "ParameterConstraints": { - "type": "structure", - "members": { - "AllowedValues": { - "type": "list", - "member": {} - } - } - } - } - } - }, - "ConstraintSummaries": { - "shape": "S3o" - }, - "UsageInstructions": { - "type": "list", - "member": { - "type": "structure", - "members": { - "Type": {}, - "Value": {} - } - } - }, - "TagOptions": { - "type": "list", - "member": { - "type": "structure", - "members": { - "Key": {}, - "Values": { - "type": "list", - "member": {} - } - } - } - } - } - } - }, - "DescribeRecord": { - "input": { - "type": "structure", - "required": [ - "Id" - ], - "members": { - "AcceptLanguage": {}, - "Id": {}, - "PageToken": {}, - "PageSize": { - "type": "integer" - } - } - }, - "output": { - "type": "structure", - "members": { - "RecordDetail": { - "shape": "S41" - }, - "RecordOutputs": { - "type": "list", - "member": { - "type": "structure", - "members": { - "OutputKey": {}, - "OutputValue": {}, - "Description": {} - } - } - }, - "NextPageToken": {} - } - } - }, - "DescribeTagOption": { - "input": { - "type": "structure", - "required": [ - "Id" - ], - "members": { - "Id": {} - } - }, - "output": { - "type": "structure", - "members": { - "TagOptionDetail": { - "shape": "S24" - } - } - } - }, - "DisassociatePrincipalFromPortfolio": { - "input": { - "type": "structure", - "required": [ - "PortfolioId", - "PrincipalARN" - ], - "members": { - "AcceptLanguage": {}, - "PortfolioId": {}, - "PrincipalARN": {} - } - }, - "output": { - "type": "structure", - "members": {} - } - }, - "DisassociateProductFromPortfolio": { - "input": { - "type": "structure", - "required": [ - "ProductId", - "PortfolioId" - ], - "members": { - "AcceptLanguage": {}, - "ProductId": {}, - "PortfolioId": {} - } - }, - "output": { - "type": "structure", - "members": {} - } - }, - "DisassociateTagOptionFromResource": { - "input": { - "type": "structure", - "required": [ - "ResourceId", - "TagOptionId" - ], - "members": { - "ResourceId": {}, - "TagOptionId": {} - } - }, - "output": { - "type": "structure", - "members": {} - } - }, - "ListAcceptedPortfolioShares": { - "input": { - "type": "structure", - "members": { - "AcceptLanguage": {}, - "PageToken": {}, - "PageSize": { - "type": "integer" - } - } - }, - "output": { - "type": "structure", - "members": { - "PortfolioDetails": { - "shape": "S4s" - }, - "NextPageToken": {} - } - } - }, - "ListConstraintsForPortfolio": { - "input": { - "type": "structure", - "required": [ - "PortfolioId" - ], - "members": { - "AcceptLanguage": {}, - "PortfolioId": {}, - "ProductId": {}, - "PageSize": { - "type": "integer" - }, - "PageToken": {} - } - }, - "output": { - "type": "structure", - "members": { - "ConstraintDetails": { - "type": "list", - "member": { - "shape": "Sv" - } - }, - "NextPageToken": {} - } - } - }, - "ListLaunchPaths": { - "input": { - "type": "structure", - "required": [ - "ProductId" - ], - "members": { - "AcceptLanguage": {}, - "ProductId": {}, - "PageSize": { - "type": "integer" - }, - "PageToken": {} - } - }, - "output": { - "type": "structure", - "members": { - "LaunchPathSummaries": { - "type": "list", - "member": { - "type": "structure", - "members": { - "Id": {}, - "ConstraintSummaries": { - "shape": "S3o" - }, - "Tags": { - "shape": "S1a" - }, - "Name": {} - } - } - }, - "NextPageToken": {} - } - } - }, - "ListPortfolioAccess": { - "input": { - "type": "structure", - "required": [ - "PortfolioId" - ], - "members": { - "AcceptLanguage": {}, - "PortfolioId": {} - } - }, - "output": { - "type": "structure", - "members": { - "AccountIds": { - "type": "list", - "member": {} - }, - "NextPageToken": {} - } - } - }, - "ListPortfolios": { - "input": { - "type": "structure", - "members": { - "AcceptLanguage": {}, - "PageToken": {}, - "PageSize": { - "type": "integer" - } - } - }, - "output": { - "type": "structure", - "members": { - "PortfolioDetails": { - "shape": "S4s" - }, - "NextPageToken": {} - } - } - }, - "ListPortfoliosForProduct": { - "input": { - "type": "structure", - "required": [ - "ProductId" - ], - "members": { - "AcceptLanguage": {}, - "ProductId": {}, - "PageToken": {}, - "PageSize": { - "type": "integer" - } - } - }, - "output": { - "type": "structure", - "members": { - "PortfolioDetails": { - "shape": "S4s" - }, - "NextPageToken": {} - } - } - }, - "ListPrincipalsForPortfolio": { - "input": { - "type": "structure", - "required": [ - "PortfolioId" - ], - "members": { - "AcceptLanguage": {}, - "PortfolioId": {}, - "PageSize": { - "type": "integer" - }, - "PageToken": {} - } - }, - "output": { - "type": "structure", - "members": { - "Principals": { - "type": "list", - "member": { - "type": "structure", - "members": { - "PrincipalARN": {}, - "PrincipalType": {} - } - } - }, - "NextPageToken": {} - } - } - }, - "ListProvisioningArtifacts": { - "input": { - "type": "structure", - "required": [ - "ProductId" - ], - "members": { - "AcceptLanguage": {}, - "ProductId": {} - } - }, - "output": { - "type": "structure", - "members": { - "ProvisioningArtifactDetails": { - "type": "list", - "member": { - "shape": "S1x" - } - }, - "NextPageToken": {} - } - } - }, - "ListRecordHistory": { - "input": { - "type": "structure", - "members": { - "AcceptLanguage": {}, - "AccessLevelFilter": { - "shape": "S5g" - }, - "SearchFilter": { - "type": "structure", - "members": { - "Key": {}, - "Value": {} - } - }, - "PageSize": { - "type": "integer" - }, - "PageToken": {} - } - }, - "output": { - "type": "structure", - "members": { - "RecordDetails": { - "type": "list", - "member": { - "shape": "S41" - } - }, - "NextPageToken": {} - } - } - }, - "ListResourcesForTagOption": { - "input": { - "type": "structure", - "required": [ - "TagOptionId" - ], - "members": { - "TagOptionId": {}, - "ResourceType": {}, - "PageSize": { - "type": "integer" - }, - "PageToken": {} - } - }, - "output": { - "type": "structure", - "members": { - "ResourceDetails": { - "type": "list", - "member": { - "type": "structure", - "members": { - "Id": {}, - "ARN": {}, - "Name": {}, - "Description": {}, - "CreatedTime": { - "type": "timestamp" - } - } - } - }, - "PageToken": {} - } - } - }, - "ListTagOptions": { - "input": { - "type": "structure", - "members": { - "Filters": { - "type": "structure", - "members": { - "Key": {}, - "Value": {}, - "Active": { - "type": "boolean" - } - } - }, - "PageSize": { - "type": "integer" - }, - "PageToken": {} - } - }, - "output": { - "type": "structure", - "members": { - "TagOptionDetails": { - "shape": "S2o" - }, - "PageToken": {} - } - } - }, - "ProvisionProduct": { - "input": { - "type": "structure", - "required": [ - "ProductId", - "ProvisioningArtifactId", - "ProvisionedProductName", - "ProvisionToken" - ], - "members": { - "AcceptLanguage": {}, - "ProductId": {}, - "ProvisioningArtifactId": {}, - "PathId": {}, - "ProvisionedProductName": {}, - "ProvisioningParameters": { - "type": "list", - "member": { - "type": "structure", - "members": { - "Key": {}, - "Value": {} - } - } - }, - "Tags": { - "shape": "S1a" - }, - "NotificationArns": { - "type": "list", - "member": {} - }, - "ProvisionToken": { - "idempotencyToken": true - } - } - }, - "output": { - "type": "structure", - "members": { - "RecordDetail": { - "shape": "S41" - } - } - } - }, - "RejectPortfolioShare": { - "input": { - "type": "structure", - "required": [ - "PortfolioId" - ], - "members": { - "AcceptLanguage": {}, - "PortfolioId": {} - } - }, - "output": { - "type": "structure", - "members": {} - } - }, - "ScanProvisionedProducts": { - "input": { - "type": "structure", - "members": { - "AcceptLanguage": {}, - "AccessLevelFilter": { - "shape": "S5g" - }, - "PageSize": { - "type": "integer" - }, - "PageToken": {} - } - }, - "output": { - "type": "structure", - "members": { - "ProvisionedProducts": { - "type": "list", - "member": { - "shape": "S32" - } - }, - "NextPageToken": {} - } - } - }, - "SearchProducts": { - "input": { - "type": "structure", - "members": { - "AcceptLanguage": {}, - "Filters": { - "shape": "S6e" - }, - "PageSize": { - "type": "integer" - }, - "SortBy": {}, - "SortOrder": {}, - "PageToken": {} - } - }, - "output": { - "type": "structure", - "members": { - "ProductViewSummaries": { - "type": "list", - "member": { - "shape": "S1t" - } - }, - "ProductViewAggregations": { - "type": "map", - "key": {}, - "value": { - "type": "list", - "member": { - "type": "structure", - "members": { - "Value": {}, - "ApproximateCount": { - "type": "integer" - } - } - } - } - }, - "NextPageToken": {} - } - } - }, - "SearchProductsAsAdmin": { - "input": { - "type": "structure", - "members": { - "AcceptLanguage": {}, - "PortfolioId": {}, - "Filters": { - "shape": "S6e" - }, - "SortBy": {}, - "SortOrder": {}, - "PageToken": {}, - "PageSize": { - "type": "integer" - }, - "ProductSource": {} - } - }, - "output": { - "type": "structure", - "members": { - "ProductViewDetails": { - "type": "list", - "member": { - "shape": "S1s" - } - }, - "NextPageToken": {} - } - } - }, - "TerminateProvisionedProduct": { - "input": { - "type": "structure", - "required": [ - "TerminateToken" - ], - "members": { - "ProvisionedProductName": {}, - "ProvisionedProductId": {}, - "TerminateToken": { - "idempotencyToken": true - }, - "IgnoreErrors": { - "type": "boolean" - }, - "AcceptLanguage": {} - } - }, - "output": { - "type": "structure", - "members": { - "RecordDetail": { - "shape": "S41" - } - } - } - }, - "UpdateConstraint": { - "input": { - "type": "structure", - "required": [ - "Id" - ], - "members": { - "AcceptLanguage": {}, - "Id": {}, - "Description": {} - } - }, - "output": { - "type": "structure", - "members": { - "ConstraintDetail": { - "shape": "Sv" - }, - "ConstraintParameters": {}, - "Status": {} - } - } - }, - "UpdatePortfolio": { - "input": { - "type": "structure", - "required": [ - "Id" - ], - "members": { - "AcceptLanguage": {}, - "Id": {}, - "DisplayName": {}, - "Description": {}, - "ProviderName": {}, - "AddTags": { - "shape": "S12" - }, - "RemoveTags": { - "shape": "S72" - } - } - }, - "output": { - "type": "structure", - "members": { - "PortfolioDetail": { - "shape": "S17" - }, - "Tags": { - "shape": "S1a" - } - } - } - }, - "UpdateProduct": { - "input": { - "type": "structure", - "required": [ - "Id" - ], - "members": { - "AcceptLanguage": {}, - "Id": {}, - "Name": {}, - "Owner": {}, - "Description": {}, - "Distributor": {}, - "SupportDescription": {}, - "SupportEmail": {}, - "SupportUrl": {}, - "AddTags": { - "shape": "S12" - }, - "RemoveTags": { - "shape": "S72" - } - } - }, - "output": { - "type": "structure", - "members": { - "ProductViewDetail": { - "shape": "S1s" - }, - "Tags": { - "shape": "S1a" - } - } - } - }, - "UpdateProvisionedProduct": { - "input": { - "type": "structure", - "required": [ - "UpdateToken" - ], - "members": { - "AcceptLanguage": {}, - "ProvisionedProductName": {}, - "ProvisionedProductId": {}, - "ProductId": {}, - "ProvisioningArtifactId": {}, - "PathId": {}, - "ProvisioningParameters": { - "type": "list", - "member": { - "type": "structure", - "members": { - "Key": {}, - "Value": {}, - "UsePreviousValue": { - "type": "boolean" - } - } - } - }, - "UpdateToken": { - "idempotencyToken": true - } - } - }, - "output": { - "type": "structure", - "members": { - "RecordDetail": { - "shape": "S41" - } - } - } - }, - "UpdateProvisioningArtifact": { - "input": { - "type": "structure", - "required": [ - "ProductId", - "ProvisioningArtifactId" - ], - "members": { - "AcceptLanguage": {}, - "ProductId": {}, - "ProvisioningArtifactId": {}, - "Name": {}, - "Description": {} - } - }, - "output": { - "type": "structure", - "members": { - "ProvisioningArtifactDetail": { - "shape": "S1x" - }, - "Info": { - "shape": "S1n" - }, - "Status": {} - } - } - }, - "UpdateTagOption": { - "input": { - "type": "structure", - "required": [ - "Id" - ], - "members": { - "Id": {}, - "Value": {}, - "Active": { - "type": "boolean" - } - } - }, - "output": { - "type": "structure", - "members": { - "TagOptionDetail": { - "shape": "S24" - } - } - } - } - }, - "shapes": { - "Sv": { - "type": "structure", - "members": { - "ConstraintId": {}, - "Type": {}, - "Description": {}, - "Owner": {} - } - }, - "S12": { - "type": "list", - "member": { - "shape": "S13" - } - }, - "S13": { - "type": "structure", - "required": [ - "Key", - "Value" - ], - "members": { - "Key": {}, - "Value": {} - } - }, - "S17": { - "type": "structure", - "members": { - "Id": {}, - "ARN": {}, - "DisplayName": {}, - "Description": {}, - "CreatedTime": { - "type": "timestamp" - }, - "ProviderName": {} - } - }, - "S1a": { - "type": "list", - "member": { - "shape": "S13" - } - }, - "S1k": { - "type": "structure", - "required": [ - "Info" - ], - "members": { - "Name": {}, - "Description": {}, - "Info": { - "shape": "S1n" - }, - "Type": {} - } - }, - "S1n": { - "type": "map", - "key": {}, - "value": {} - }, - "S1s": { - "type": "structure", - "members": { - "ProductViewSummary": { - "shape": "S1t" - }, - "Status": {}, - "ProductARN": {}, - "CreatedTime": { - "type": "timestamp" - } - } - }, - "S1t": { - "type": "structure", - "members": { - "Id": {}, - "ProductId": {}, - "Name": {}, - "Owner": {}, - "ShortDescription": {}, - "Type": {}, - "Distributor": {}, - "HasDefaultPath": { - "type": "boolean" - }, - "SupportEmail": {}, - "SupportDescription": {}, - "SupportUrl": {} - } - }, - "S1x": { - "type": "structure", - "members": { - "Id": {}, - "Name": {}, - "Description": {}, - "Type": {}, - "CreatedTime": { - "type": "timestamp" - } - } - }, - "S24": { - "type": "structure", - "members": { - "Key": {}, - "Value": {}, - "Active": { - "type": "boolean" - }, - "Id": {} - } - }, - "S2o": { - "type": "list", - "member": { - "shape": "S24" - } - }, - "S2r": { - "type": "list", - "member": { - "type": "structure", - "members": { - "Id": {}, - "Name": {}, - "Description": {}, - "CreatedTime": { - "type": "timestamp" - } - } - } - }, - "S32": { - "type": "structure", - "members": { - "Name": {}, - "Arn": {}, - "Type": {}, - "Id": {}, - "Status": {}, - "StatusMessage": {}, - "CreatedTime": { - "type": "timestamp" - }, - "IdempotencyToken": {}, - "LastRecordId": {} - } - }, - "S3o": { - "type": "list", - "member": { - "type": "structure", - "members": { - "Type": {}, - "Description": {} - } - } - }, - "S41": { - "type": "structure", - "members": { - "RecordId": {}, - "ProvisionedProductName": {}, - "Status": {}, - "CreatedTime": { - "type": "timestamp" - }, - "UpdatedTime": { - "type": "timestamp" - }, - "ProvisionedProductType": {}, - "RecordType": {}, - "ProvisionedProductId": {}, - "ProductId": {}, - "ProvisioningArtifactId": {}, - "PathId": {}, - "RecordErrors": { - "type": "list", - "member": { - "type": "structure", - "members": { - "Code": {}, - "Description": {} - } - } - }, - "RecordTags": { - "type": "list", - "member": { - "type": "structure", - "members": { - "Key": {}, - "Value": {} - } - } - } - } - }, - "S4s": { - "type": "list", - "member": { - "shape": "S17" - } - }, - "S5g": { - "type": "structure", - "members": { - "Key": {}, - "Value": {} - } - }, - "S6e": { - "type": "map", - "key": {}, - "value": { - "type": "list", - "member": {} - } - }, - "S72": { - "type": "list", - "member": {} - } - } -} \ No newline at end of file diff --git a/workshops/monte-carlo-on-ec2-spot-fleet/src/web/node_modules/aws-sdk/apis/servicecatalog-2015-12-10.paginators.json b/workshops/monte-carlo-on-ec2-spot-fleet/src/web/node_modules/aws-sdk/apis/servicecatalog-2015-12-10.paginators.json deleted file mode 100644 index e988d6f2..00000000 --- a/workshops/monte-carlo-on-ec2-spot-fleet/src/web/node_modules/aws-sdk/apis/servicecatalog-2015-12-10.paginators.json +++ /dev/null @@ -1,54 +0,0 @@ -{ - "pagination": { - "ListAcceptedPortfolioShares": { - "input_token": "PageToken", - "output_token": "NextPageToken", - "limit_key": "PageSize" - }, - "ListConstraintsForPortfolio": { - "input_token": "PageToken", - "output_token": "NextPageToken", - "limit_key": "PageSize" - }, - "ListLaunchPaths": { - "input_token": "PageToken", - "output_token": "NextPageToken", - "limit_key": "PageSize" - }, - "ListPortfolios": { - "input_token": "PageToken", - "output_token": "NextPageToken", - "limit_key": "PageSize" - }, - "ListPortfoliosForProduct": { - "input_token": "PageToken", - "output_token": "NextPageToken", - "limit_key": "PageSize" - }, - "ListPrincipalsForPortfolio": { - "input_token": "PageToken", - "output_token": "NextPageToken", - "limit_key": "PageSize" - }, - "ListResourcesForTagOption": { - "input_token": "PageToken", - "output_token": "PageToken", - "limit_key": "PageSize" - }, - "ListTagOptions": { - "input_token": "PageToken", - "output_token": "PageToken", - "limit_key": "PageSize" - }, - "SearchProducts": { - "input_token": "PageToken", - "output_token": "NextPageToken", - "limit_key": "PageSize" - }, - "SearchProductsAsAdmin": { - "input_token": "PageToken", - "output_token": "NextPageToken", - "limit_key": "PageSize" - } - } -} diff --git a/workshops/monte-carlo-on-ec2-spot-fleet/src/web/node_modules/aws-sdk/apis/shield-2016-06-02.min.json b/workshops/monte-carlo-on-ec2-spot-fleet/src/web/node_modules/aws-sdk/apis/shield-2016-06-02.min.json deleted file mode 100644 index 9a68fe71..00000000 --- a/workshops/monte-carlo-on-ec2-spot-fleet/src/web/node_modules/aws-sdk/apis/shield-2016-06-02.min.json +++ /dev/null @@ -1,301 +0,0 @@ -{ - "version": "2.0", - "metadata": { - "apiVersion": "2016-06-02", - "endpointPrefix": "shield", - "jsonVersion": "1.1", - "protocol": "json", - "serviceAbbreviation": "AWS Shield", - "serviceFullName": "AWS Shield", - "signatureVersion": "v4", - "targetPrefix": "AWSShield_20160616", - "uid": "shield-2016-06-02" - }, - "operations": { - "CreateProtection": { - "input": { - "type": "structure", - "required": [ - "Name", - "ResourceArn" - ], - "members": { - "Name": {}, - "ResourceArn": {} - } - }, - "output": { - "type": "structure", - "members": { - "ProtectionId": {} - } - } - }, - "CreateSubscription": { - "input": { - "type": "structure", - "members": {} - }, - "output": { - "type": "structure", - "members": {} - } - }, - "DeleteProtection": { - "input": { - "type": "structure", - "required": [ - "ProtectionId" - ], - "members": { - "ProtectionId": {} - } - }, - "output": { - "type": "structure", - "members": {} - } - }, - "DeleteSubscription": { - "input": { - "type": "structure", - "members": {} - }, - "output": { - "type": "structure", - "members": {} - } - }, - "DescribeAttack": { - "input": { - "type": "structure", - "required": [ - "AttackId" - ], - "members": { - "AttackId": {} - } - }, - "output": { - "type": "structure", - "members": { - "Attack": { - "type": "structure", - "members": { - "AttackId": {}, - "ResourceArn": {}, - "SubResources": { - "type": "list", - "member": { - "type": "structure", - "members": { - "Type": {}, - "Id": {}, - "AttackVectors": { - "type": "list", - "member": { - "type": "structure", - "required": [ - "VectorType" - ], - "members": { - "VectorType": {}, - "VectorCounters": { - "shape": "Sm" - } - } - } - }, - "Counters": { - "shape": "Sm" - } - } - } - }, - "StartTime": { - "type": "timestamp" - }, - "EndTime": { - "type": "timestamp" - }, - "AttackCounters": { - "shape": "Sm" - }, - "Mitigations": { - "type": "list", - "member": { - "type": "structure", - "members": { - "MitigationName": {} - } - } - } - } - } - } - } - }, - "DescribeProtection": { - "input": { - "type": "structure", - "required": [ - "ProtectionId" - ], - "members": { - "ProtectionId": {} - } - }, - "output": { - "type": "structure", - "members": { - "Protection": { - "shape": "Sv" - } - } - } - }, - "DescribeSubscription": { - "input": { - "type": "structure", - "members": {} - }, - "output": { - "type": "structure", - "members": { - "Subscription": { - "type": "structure", - "members": { - "StartTime": { - "type": "timestamp" - }, - "TimeCommitmentInSeconds": { - "type": "long" - } - } - } - } - } - }, - "ListAttacks": { - "input": { - "type": "structure", - "members": { - "ResourceArns": { - "type": "list", - "member": {} - }, - "StartTime": { - "shape": "S13" - }, - "EndTime": { - "shape": "S13" - }, - "NextToken": {}, - "MaxResults": { - "type": "integer" - } - } - }, - "output": { - "type": "structure", - "members": { - "AttackSummaries": { - "type": "list", - "member": { - "type": "structure", - "members": { - "AttackId": {}, - "ResourceArn": {}, - "StartTime": { - "type": "timestamp" - }, - "EndTime": { - "type": "timestamp" - }, - "AttackVectors": { - "type": "list", - "member": { - "type": "structure", - "required": [ - "VectorType" - ], - "members": { - "VectorType": {} - } - } - } - } - } - }, - "NextToken": {} - } - } - }, - "ListProtections": { - "input": { - "type": "structure", - "members": { - "NextToken": {}, - "MaxResults": { - "type": "integer" - } - } - }, - "output": { - "type": "structure", - "members": { - "Protections": { - "type": "list", - "member": { - "shape": "Sv" - } - }, - "NextToken": {} - } - } - } - }, - "shapes": { - "Sm": { - "type": "list", - "member": { - "type": "structure", - "members": { - "Name": {}, - "Max": { - "type": "double" - }, - "Average": { - "type": "double" - }, - "Sum": { - "type": "double" - }, - "N": { - "type": "integer" - }, - "Unit": {} - } - } - }, - "Sv": { - "type": "structure", - "members": { - "Id": {}, - "Name": {}, - "ResourceArn": {} - } - }, - "S13": { - "type": "structure", - "members": { - "FromInclusive": { - "type": "timestamp" - }, - "ToExclusive": { - "type": "timestamp" - } - } - } - } -} \ No newline at end of file diff --git a/workshops/monte-carlo-on-ec2-spot-fleet/src/web/node_modules/aws-sdk/apis/sms-2016-10-24.min.json b/workshops/monte-carlo-on-ec2-spot-fleet/src/web/node_modules/aws-sdk/apis/sms-2016-10-24.min.json deleted file mode 100644 index 787c8470..00000000 --- a/workshops/monte-carlo-on-ec2-spot-fleet/src/web/node_modules/aws-sdk/apis/sms-2016-10-24.min.json +++ /dev/null @@ -1,338 +0,0 @@ -{ - "version": "2.0", - "metadata": { - "uid": "sms-2016-10-24", - "apiVersion": "2016-10-24", - "endpointPrefix": "sms", - "jsonVersion": "1.1", - "protocol": "json", - "serviceAbbreviation": "SMS", - "serviceFullName": "AWS Server Migration Service", - "signatureVersion": "v4", - "targetPrefix": "AWSServerMigrationService_V2016_10_24" - }, - "operations": { - "CreateReplicationJob": { - "input": { - "type": "structure", - "required": [ - "serverId", - "seedReplicationTime", - "frequency" - ], - "members": { - "serverId": {}, - "seedReplicationTime": { - "type": "timestamp" - }, - "frequency": { - "type": "integer" - }, - "licenseType": {}, - "roleName": {}, - "description": {} - } - }, - "output": { - "type": "structure", - "members": { - "replicationJobId": {} - } - } - }, - "DeleteReplicationJob": { - "input": { - "type": "structure", - "required": [ - "replicationJobId" - ], - "members": { - "replicationJobId": {} - } - }, - "output": { - "type": "structure", - "members": {} - } - }, - "DeleteServerCatalog": { - "input": { - "type": "structure", - "members": {} - }, - "output": { - "type": "structure", - "members": {} - } - }, - "DisassociateConnector": { - "input": { - "type": "structure", - "required": [ - "connectorId" - ], - "members": { - "connectorId": {} - } - }, - "output": { - "type": "structure", - "members": {} - } - }, - "GetConnectors": { - "input": { - "type": "structure", - "members": { - "nextToken": {}, - "maxResults": { - "type": "integer" - } - } - }, - "output": { - "type": "structure", - "members": { - "connectorList": { - "type": "list", - "member": { - "locationName": "item", - "type": "structure", - "members": { - "connectorId": {}, - "version": {}, - "status": {}, - "capabilityList": { - "type": "list", - "member": { - "locationName": "item" - } - }, - "vmManagerName": {}, - "vmManagerType": {}, - "vmManagerId": {}, - "ipAddress": {}, - "macAddress": {}, - "associatedOn": { - "type": "timestamp" - } - } - } - }, - "nextToken": {} - } - } - }, - "GetReplicationJobs": { - "input": { - "type": "structure", - "members": { - "replicationJobId": {}, - "nextToken": {}, - "maxResults": { - "type": "integer" - } - } - }, - "output": { - "type": "structure", - "members": { - "replicationJobList": { - "type": "list", - "member": { - "shape": "Sz", - "locationName": "item" - } - }, - "nextToken": {} - } - } - }, - "GetReplicationRuns": { - "input": { - "type": "structure", - "required": [ - "replicationJobId" - ], - "members": { - "replicationJobId": {}, - "nextToken": {}, - "maxResults": { - "type": "integer" - } - } - }, - "output": { - "type": "structure", - "members": { - "replicationJob": { - "shape": "Sz" - }, - "replicationRunList": { - "shape": "S19" - }, - "nextToken": {} - } - } - }, - "GetServers": { - "input": { - "type": "structure", - "members": { - "nextToken": {}, - "maxResults": { - "type": "integer" - } - } - }, - "output": { - "type": "structure", - "members": { - "lastModifiedOn": { - "type": "timestamp" - }, - "serverCatalogStatus": {}, - "serverList": { - "type": "list", - "member": { - "locationName": "item", - "type": "structure", - "members": { - "serverId": {}, - "serverType": {}, - "vmServer": { - "shape": "S11" - }, - "replicationJobId": {}, - "replicationJobTerminated": { - "type": "boolean" - } - } - } - }, - "nextToken": {} - } - } - }, - "ImportServerCatalog": { - "input": { - "type": "structure", - "members": {} - }, - "output": { - "type": "structure", - "members": {} - } - }, - "StartOnDemandReplicationRun": { - "input": { - "type": "structure", - "required": [ - "replicationJobId" - ], - "members": { - "replicationJobId": {}, - "description": {} - } - }, - "output": { - "type": "structure", - "members": { - "replicationRunId": {} - } - } - }, - "UpdateReplicationJob": { - "input": { - "type": "structure", - "required": [ - "replicationJobId" - ], - "members": { - "replicationJobId": {}, - "frequency": { - "type": "integer" - }, - "nextReplicationRunStartTime": { - "type": "timestamp" - }, - "licenseType": {}, - "roleName": {}, - "description": {} - } - }, - "output": { - "type": "structure", - "members": {} - } - } - }, - "shapes": { - "Sz": { - "type": "structure", - "members": { - "replicationJobId": {}, - "serverId": {}, - "serverType": {}, - "vmServer": { - "shape": "S11" - }, - "seedReplicationTime": { - "type": "timestamp" - }, - "frequency": { - "type": "integer" - }, - "nextReplicationRunStartTime": { - "type": "timestamp" - }, - "licenseType": {}, - "roleName": {}, - "latestAmiId": {}, - "state": {}, - "statusMessage": {}, - "description": {}, - "replicationRunList": { - "shape": "S19" - } - } - }, - "S11": { - "type": "structure", - "members": { - "vmServerAddress": { - "type": "structure", - "members": { - "vmManagerId": {}, - "vmId": {} - } - }, - "vmName": {}, - "vmManagerName": {}, - "vmManagerType": {}, - "vmPath": {} - } - }, - "S19": { - "type": "list", - "member": { - "locationName": "item", - "type": "structure", - "members": { - "replicationRunId": {}, - "state": {}, - "type": {}, - "statusMessage": {}, - "amiId": {}, - "scheduledStartTime": { - "type": "timestamp" - }, - "completedTime": { - "type": "timestamp" - }, - "description": {} - } - } - } - } -} \ No newline at end of file diff --git a/workshops/monte-carlo-on-ec2-spot-fleet/src/web/node_modules/aws-sdk/apis/sms-2016-10-24.paginators.json b/workshops/monte-carlo-on-ec2-spot-fleet/src/web/node_modules/aws-sdk/apis/sms-2016-10-24.paginators.json deleted file mode 100644 index 6523699a..00000000 --- a/workshops/monte-carlo-on-ec2-spot-fleet/src/web/node_modules/aws-sdk/apis/sms-2016-10-24.paginators.json +++ /dev/null @@ -1,28 +0,0 @@ -{ - "pagination":{ - "GetReplicationJobs": { - "input_token": "nextToken", - "output_token": "nextToken", - "limit_key": "maxResults", - "result_key": "replicationJobList" - }, - "GetReplicationRuns": { - "input_token": "nextToken", - "output_token": "nextToken", - "limit_key": "maxResults", - "result_key": "replicationRunList" - }, - "GetConnectors": { - "input_token": "nextToken", - "output_token": "nextToken", - "limit_key": "maxResults", - "result_key": "connectorList" - }, - "GetServers": { - "input_token": "nextToken", - "output_token": "nextToken", - "limit_key": "maxResults", - "result_key": "serverList" - } - } -} diff --git a/workshops/monte-carlo-on-ec2-spot-fleet/src/web/node_modules/aws-sdk/apis/snowball-2016-06-30.examples.json b/workshops/monte-carlo-on-ec2-spot-fleet/src/web/node_modules/aws-sdk/apis/snowball-2016-06-30.examples.json deleted file mode 100644 index 9d699718..00000000 --- a/workshops/monte-carlo-on-ec2-spot-fleet/src/web/node_modules/aws-sdk/apis/snowball-2016-06-30.examples.json +++ /dev/null @@ -1,442 +0,0 @@ -{ - "version": "1.0", - "examples": { - "CancelCluster": [ - { - "input": { - "ClusterId": "CID123e4567-e89b-12d3-a456-426655440000" - }, - "comments": { - }, - "description": "This operation cancels a cluster job. You can only cancel a cluster job while it's in the AwaitingQuorum status.", - "id": "to-cancel-a-cluster-job-1482533760554", - "title": "To cancel a cluster job" - } - ], - "CancelJob": [ - { - "input": { - "JobId": "JID123e4567-e89b-12d3-a456-426655440000" - }, - "comments": { - }, - "description": "This operation cancels a job. You can only cancel a job before its JobState value changes to PreparingAppliance.", - "id": "to-cancel-a-job-for-a-snowball-device-1482534699477", - "title": "To cancel a job for a Snowball device" - } - ], - "CreateAddress": [ - { - "input": { - "Address": { - "City": "Seattle", - "Company": "My Company's Name", - "Country": "USA", - "Name": "My Name", - "PhoneNumber": "425-555-5555", - "PostalCode": "98101", - "StateOrProvince": "WA", - "Street1": "123 Main Street" - } - }, - "output": { - "AddressId": "ADID1234ab12-3eec-4eb3-9be6-9374c10eb51b" - }, - "comments": { - }, - "description": "This operation creates an address for a job. Addresses are validated at the time of creation. The address you provide must be located within the serviceable area of your region. If the address is invalid or unsupported, then an exception is thrown.", - "id": "to-create-an-address-for-a-job-1482535416294", - "title": "To create an address for a job" - } - ], - "CreateCluster": [ - { - "input": { - "AddressId": "ADID1234ab12-3eec-4eb3-9be6-9374c10eb51b", - "Description": "MyCluster", - "JobType": "LOCAL_USE", - "KmsKeyARN": "arn:aws:kms:us-east-1:123456789012:key/abcd1234-12ab-34cd-56ef-123456123456", - "Notification": { - "JobStatesToNotify": [ - - ], - "NotifyAll": false - }, - "Resources": { - "S3Resources": [ - { - "BucketArn": "arn:aws:s3:::MyBucket", - "KeyRange": { - } - } - ] - }, - "RoleARN": "arn:aws:iam::123456789012:role/snowball-import-S3-role", - "ShippingOption": "SECOND_DAY", - "SnowballType": "EDGE" - }, - "output": { - "ClusterId": "CID123e4567-e89b-12d3-a456-426655440000" - }, - "comments": { - }, - "description": "Creates an empty cluster. Each cluster supports five nodes. You use the CreateJob action separately to create the jobs for each of these nodes. The cluster does not ship until these five node jobs have been created.", - "id": "to-create-a-cluster-1482864724077", - "title": "To create a cluster" - } - ], - "CreateJob": [ - { - "input": { - "AddressId": "ADID1234ab12-3eec-4eb3-9be6-9374c10eb51b", - "Description": "My Job", - "JobType": "IMPORT", - "KmsKeyARN": "arn:aws:kms:us-east-1:123456789012:key/abcd1234-12ab-34cd-56ef-123456123456", - "Notification": { - "JobStatesToNotify": [ - - ], - "NotifyAll": false - }, - "Resources": { - "S3Resources": [ - { - "BucketArn": "arn:aws:s3:::MyBucket", - "KeyRange": { - } - } - ] - }, - "RoleARN": "arn:aws:iam::123456789012:role/snowball-import-S3-role", - "ShippingOption": "SECOND_DAY", - "SnowballCapacityPreference": "T80", - "SnowballType": "STANDARD" - }, - "output": { - "JobId": "JID123e4567-e89b-12d3-a456-426655440000" - }, - "comments": { - }, - "description": "Creates a job to import or export data between Amazon S3 and your on-premises data center. Your AWS account must have the right trust policies and permissions in place to create a job for Snowball. If you're creating a job for a node in a cluster, you only need to provide the clusterId value; the other job attributes are inherited from the cluster.", - "id": "to-create-a-job-1482864834886", - "title": "To create a job" - } - ], - "DescribeAddress": [ - { - "input": { - "AddressId": "ADID1234ab12-3eec-4eb3-9be6-9374c10eb51b" - }, - "output": { - "Address": { - "AddressId": "ADID5643ec50-3eec-4eb3-9be6-9374c10eb51b", - "City": "Seattle", - "Company": "My Company", - "Country": "US", - "Name": "My Name", - "PhoneNumber": "425-555-5555", - "PostalCode": "98101", - "StateOrProvince": "WA", - "Street1": "123 Main Street" - } - }, - "comments": { - }, - "description": "This operation describes an address for a job.", - "id": "to-describe-an-address-for-a-job-1482538608745", - "title": "To describe an address for a job" - } - ], - "DescribeAddresses": [ - { - "input": { - }, - "output": { - "Addresses": [ - { - "AddressId": "ADID1234ab12-3eec-4eb3-9be6-9374c10eb51b", - "City": "Seattle", - "Company": "My Company", - "Country": "US", - "Name": "My Name", - "PhoneNumber": "425-555-5555", - "PostalCode": "98101", - "StateOrProvince": "WA", - "Street1": "123 Main Street" - } - ] - }, - "comments": { - }, - "description": "This operation describes all the addresses that you've created for AWS Snowball. Calling this API in one of the US regions will return addresses from the list of all addresses associated with this account in all US regions.", - "id": "to-describe-all-the-addresses-youve-created-for-aws-snowball-1482538936603", - "title": "To describe all the addresses you've created for AWS Snowball" - } - ], - "DescribeCluster": [ - { - "input": { - "ClusterId": "CID123e4567-e89b-12d3-a456-426655440000" - }, - "output": { - "ClusterMetadata": { - "AddressId": "ADID1234ab12-3eec-4eb3-9be6-9374c10eb51b", - "ClusterId": "CID123e4567-e89b-12d3-a456-426655440000", - "ClusterState": "Pending", - "CreationDate": "1480475517.0", - "Description": "MyCluster", - "JobType": "LOCAL_USE", - "KmsKeyARN": "arn:aws:kms:us-east-1:123456789012:key/abcd1234-12ab-34cd-56ef-123456123456", - "Notification": { - "JobStatesToNotify": [ - - ], - "NotifyAll": false - }, - "Resources": { - "S3Resources": [ - { - "BucketArn": "arn:aws:s3:::MyBucket", - "KeyRange": { - } - } - ] - }, - "RoleARN": "arn:aws:iam::123456789012:role/snowball-import-S3-role", - "ShippingOption": "SECOND_DAY" - } - }, - "comments": { - }, - "description": "Returns information about a specific cluster including shipping information, cluster status, and other important metadata.", - "id": "to-describe-a-cluster-1482864218396", - "title": "To describe a cluster" - } - ], - "DescribeJob": [ - { - "input": { - "JobId": "JID123e4567-e89b-12d3-a456-426655440000" - }, - "output": { - "JobMetadata": { - "AddressId": "ADID1234ab12-3eec-4eb3-9be6-9374c10eb51b", - "CreationDate": "1475626164", - "Description": "My Job", - "JobId": "JID123e4567-e89b-12d3-a456-426655440000", - "JobState": "New", - "JobType": "IMPORT", - "KmsKeyARN": "arn:aws:kms:us-east-1:123456789012:key/abcd1234-12ab-34cd-56ef-123456123456", - "Notification": { - "JobStatesToNotify": [ - - ], - "NotifyAll": false - }, - "Resources": { - "S3Resources": [ - { - "BucketArn": "arn:aws:s3:::MyBucket", - "KeyRange": { - } - } - ] - }, - "RoleARN": "arn:aws:iam::123456789012:role/snowball-import-S3-role", - "ShippingDetails": { - "ShippingOption": "SECOND_DAY" - }, - "SnowballCapacityPreference": "T80", - "SnowballType": "STANDARD" - } - }, - "comments": { - }, - "description": "This operation describes a job you've created for AWS Snowball.", - "id": "to-describe-a-job-youve-created-for-aws-snowball-1482539500180", - "title": "To describe a job you've created for AWS Snowball" - } - ], - "GetJobManifest": [ - { - "input": { - "JobId": "JID123e4567-e89b-12d3-a456-426655440000" - }, - "output": { - "ManifestURI": "https://awsie-frosty-manifests-prod.s3.amazonaws.com/JID123e4567-e89b-12d3-a456-426655440000_manifest.bin?X-Amz-Algorithm=AWS4-HMAC-SHA256&X-Amz-Date=20161224T005115Z&X-Amz-SignedHeaders=..." - }, - "comments": { - }, - "description": "Returns a link to an Amazon S3 presigned URL for the manifest file associated with the specified JobId value. You can access the manifest file for up to 60 minutes after this request has been made. To access the manifest file after 60 minutes have passed, you'll have to make another call to the GetJobManifest action.\n\nThe manifest is an encrypted file that you can download after your job enters the WithCustomer status. The manifest is decrypted by using the UnlockCode code value, when you pass both values to the Snowball through the Snowball client when the client is started for the first time.\n\nAs a best practice, we recommend that you don't save a copy of an UnlockCode value in the same location as the manifest file for that job. Saving these separately helps prevent unauthorized parties from gaining access to the Snowball associated with that job.\n\nThe credentials of a given job, including its manifest file and unlock code, expire 90 days after the job is created.", - "id": "to-get-the-manifest-for-a-job-youve-created-for-aws-snowball-1482540389246", - "title": "To get the manifest for a job you've created for AWS Snowball" - } - ], - "GetJobUnlockCode": [ - { - "input": { - "JobId": "JID123e4567-e89b-12d3-a456-426655440000" - }, - "output": { - "UnlockCode": "12345-abcde-56789-fghij-01234" - }, - "comments": { - }, - "description": "Returns the UnlockCode code value for the specified job. A particular UnlockCode value can be accessed for up to 90 days after the associated job has been created.\n\nThe UnlockCode value is a 29-character code with 25 alphanumeric characters and 4 hyphens. This code is used to decrypt the manifest file when it is passed along with the manifest to the Snowball through the Snowball client when the client is started for the first time.\n\nAs a best practice, we recommend that you don't save a copy of the UnlockCode in the same location as the manifest file for that job. Saving these separately helps prevent unauthorized parties from gaining access to the Snowball associated with that job.", - "id": "to-get-the-unlock-code-for-a-job-youve-created-for-aws-snowball-1482541987286", - "title": "To get the unlock code for a job you've created for AWS Snowball" - } - ], - "GetSnowballUsage": [ - { - "input": { - }, - "output": { - "SnowballLimit": 1, - "SnowballsInUse": 0 - }, - "comments": { - }, - "description": "Returns information about the Snowball service limit for your account, and also the number of Snowballs your account has in use.\n\nThe default service limit for the number of Snowballs that you can have at one time is 1. If you want to increase your service limit, contact AWS Support.", - "id": "to-see-your-snowball-service-limit-and-the-number-of-snowballs-you-have-in-use-1482863394588", - "title": "To see your Snowball service limit and the number of Snowballs you have in use" - } - ], - "ListClusterJobs": [ - { - "input": { - "ClusterId": "CID123e4567-e89b-12d3-a456-426655440000" - }, - "output": { - "JobListEntries": [ - { - "CreationDate": "1480475524.0", - "Description": "MyClustrer-node-001", - "IsMaster": false, - "JobId": "JID123e4567-e89b-12d3-a456-426655440000", - "JobState": "New", - "JobType": "LOCAL_USE", - "SnowballType": "EDGE" - }, - { - "CreationDate": "1480475525.0", - "Description": "MyClustrer-node-002", - "IsMaster": false, - "JobId": "JID123e4567-e89b-12d3-a456-426655440001", - "JobState": "New", - "JobType": "LOCAL_USE", - "SnowballType": "EDGE" - }, - { - "CreationDate": "1480475525.0", - "Description": "MyClustrer-node-003", - "IsMaster": false, - "JobId": "JID123e4567-e89b-12d3-a456-426655440002", - "JobState": "New", - "JobType": "LOCAL_USE", - "SnowballType": "EDGE" - }, - { - "CreationDate": "1480475525.0", - "Description": "MyClustrer-node-004", - "IsMaster": false, - "JobId": "JID123e4567-e89b-12d3-a456-426655440003", - "JobState": "New", - "JobType": "LOCAL_USE", - "SnowballType": "EDGE" - }, - { - "CreationDate": "1480475525.0", - "Description": "MyClustrer-node-005", - "IsMaster": false, - "JobId": "JID123e4567-e89b-12d3-a456-426655440004", - "JobState": "New", - "JobType": "LOCAL_USE", - "SnowballType": "EDGE" - } - ] - }, - "comments": { - }, - "description": "Returns an array of JobListEntry objects of the specified length. Each JobListEntry object is for a job in the specified cluster and contains a job's state, a job's ID, and other information.", - "id": "to-get-a-list-of-jobs-in-a-cluster-that-youve-created-for-aws-snowball-1482863105773", - "title": "To get a list of jobs in a cluster that you've created for AWS Snowball" - } - ], - "ListClusters": [ - { - "input": { - }, - "output": { - "ClusterListEntries": [ - { - "ClusterId": "CID123e4567-e89b-12d3-a456-426655440000", - "ClusterState": "Pending", - "CreationDate": "1480475517.0", - "Description": "MyCluster" - } - ] - }, - "comments": { - }, - "description": "Returns an array of ClusterListEntry objects of the specified length. Each ClusterListEntry object contains a cluster's state, a cluster's ID, and other important status information.", - "id": "to-get-a-list-of-clusters-that-youve-created-for-aws-snowball-1482862223003", - "title": "To get a list of clusters that you've created for AWS Snowball" - } - ], - "ListJobs": [ - { - "input": { - }, - "output": { - "JobListEntries": [ - { - "CreationDate": "1460678186.0", - "Description": "MyJob", - "IsMaster": false, - "JobId": "JID123e4567-e89b-12d3-a456-426655440000", - "JobState": "New", - "JobType": "IMPORT", - "SnowballType": "STANDARD" - } - ] - }, - "comments": { - }, - "description": "Returns an array of JobListEntry objects of the specified length. Each JobListEntry object contains a job's state, a job's ID, and a value that indicates whether the job is a job part, in the case of export jobs. Calling this API action in one of the US regions will return jobs from the list of all jobs associated with this account in all US regions.", - "id": "to-get-a-list-of-jobs-that-youve-created-for-aws-snowball-1482542167627", - "title": "To get a list of jobs that you've created for AWS Snowball" - } - ], - "UpdateCluster": [ - { - "input": { - "AddressId": "ADID1234ab12-3eec-4eb3-9be6-9374c10eb51b", - "ClusterId": "CID123e4567-e89b-12d3-a456-426655440000", - "Description": "Updated the address to send this to image processing - RJ" - }, - "comments": { - }, - "description": "This action allows you to update certain parameters for a cluster. Once the cluster changes to a different state, usually within 60 minutes of it being created, this action is no longer available.", - "id": "to-update-a-cluster-1482863900595", - "title": "To update a cluster" - } - ], - "UpdateJob": [ - { - "input": { - "AddressId": "ADID1234ab12-3eec-4eb3-9be6-9374c10eb51b", - "Description": "Upgraded to Edge, shipped to Finance Dept, and requested faster shipping speed - TS.", - "JobId": "JID123e4567-e89b-12d3-a456-426655440000", - "ShippingOption": "NEXT_DAY", - "SnowballCapacityPreference": "T100" - }, - "comments": { - }, - "description": "This action allows you to update certain parameters for a job. Once the job changes to a different job state, usually within 60 minutes of the job being created, this action is no longer available.", - "id": "to-update-a-job-1482863556886", - "title": "To update a job" - } - ] - } -} diff --git a/workshops/monte-carlo-on-ec2-spot-fleet/src/web/node_modules/aws-sdk/apis/snowball-2016-06-30.min.json b/workshops/monte-carlo-on-ec2-spot-fleet/src/web/node_modules/aws-sdk/apis/snowball-2016-06-30.min.json deleted file mode 100644 index b68754bb..00000000 --- a/workshops/monte-carlo-on-ec2-spot-fleet/src/web/node_modules/aws-sdk/apis/snowball-2016-06-30.min.json +++ /dev/null @@ -1,577 +0,0 @@ -{ - "version": "2.0", - "metadata": { - "apiVersion": "2016-06-30", - "endpointPrefix": "snowball", - "jsonVersion": "1.1", - "protocol": "json", - "serviceAbbreviation": "Amazon Snowball", - "serviceFullName": "Amazon Import/Export Snowball", - "signatureVersion": "v4", - "targetPrefix": "AWSIESnowballJobManagementService", - "uid": "snowball-2016-06-30" - }, - "operations": { - "CancelCluster": { - "input": { - "type": "structure", - "required": [ - "ClusterId" - ], - "members": { - "ClusterId": {} - } - }, - "output": { - "type": "structure", - "members": {} - } - }, - "CancelJob": { - "input": { - "type": "structure", - "required": [ - "JobId" - ], - "members": { - "JobId": {} - } - }, - "output": { - "type": "structure", - "members": {} - } - }, - "CreateAddress": { - "input": { - "type": "structure", - "required": [ - "Address" - ], - "members": { - "Address": { - "shape": "S8" - } - } - }, - "output": { - "type": "structure", - "members": { - "AddressId": {} - } - } - }, - "CreateCluster": { - "input": { - "type": "structure", - "required": [ - "JobType", - "Resources", - "AddressId", - "RoleARN", - "ShippingOption" - ], - "members": { - "JobType": {}, - "Resources": { - "shape": "Sf" - }, - "Description": {}, - "AddressId": {}, - "KmsKeyARN": {}, - "RoleARN": {}, - "SnowballType": {}, - "ShippingOption": {}, - "Notification": { - "shape": "Ss" - }, - "ForwardingAddressId": {} - } - }, - "output": { - "type": "structure", - "members": { - "ClusterId": {} - } - } - }, - "CreateJob": { - "input": { - "type": "structure", - "members": { - "JobType": {}, - "Resources": { - "shape": "Sf" - }, - "Description": {}, - "AddressId": {}, - "KmsKeyARN": {}, - "RoleARN": {}, - "SnowballCapacityPreference": {}, - "ShippingOption": {}, - "Notification": { - "shape": "Ss" - }, - "ClusterId": {}, - "SnowballType": {}, - "ForwardingAddressId": {} - } - }, - "output": { - "type": "structure", - "members": { - "JobId": {} - } - } - }, - "DescribeAddress": { - "input": { - "type": "structure", - "required": [ - "AddressId" - ], - "members": { - "AddressId": {} - } - }, - "output": { - "type": "structure", - "members": { - "Address": { - "shape": "S8" - } - } - } - }, - "DescribeAddresses": { - "input": { - "type": "structure", - "members": { - "MaxResults": { - "type": "integer" - }, - "NextToken": {} - } - }, - "output": { - "type": "structure", - "members": { - "Addresses": { - "type": "list", - "member": { - "shape": "S8" - } - }, - "NextToken": {} - } - } - }, - "DescribeCluster": { - "input": { - "type": "structure", - "required": [ - "ClusterId" - ], - "members": { - "ClusterId": {} - } - }, - "output": { - "type": "structure", - "members": { - "ClusterMetadata": { - "type": "structure", - "members": { - "ClusterId": {}, - "Description": {}, - "KmsKeyARN": {}, - "RoleARN": {}, - "ClusterState": {}, - "JobType": {}, - "SnowballType": {}, - "CreationDate": { - "type": "timestamp" - }, - "Resources": { - "shape": "Sf" - }, - "AddressId": {}, - "ShippingOption": {}, - "Notification": { - "shape": "Ss" - }, - "ForwardingAddressId": {} - } - } - } - } - }, - "DescribeJob": { - "input": { - "type": "structure", - "required": [ - "JobId" - ], - "members": { - "JobId": {} - } - }, - "output": { - "type": "structure", - "members": { - "JobMetadata": { - "shape": "S1d" - }, - "SubJobMetadata": { - "type": "list", - "member": { - "shape": "S1d" - } - } - } - } - }, - "GetJobManifest": { - "input": { - "type": "structure", - "required": [ - "JobId" - ], - "members": { - "JobId": {} - } - }, - "output": { - "type": "structure", - "members": { - "ManifestURI": {} - } - } - }, - "GetJobUnlockCode": { - "input": { - "type": "structure", - "required": [ - "JobId" - ], - "members": { - "JobId": {} - } - }, - "output": { - "type": "structure", - "members": { - "UnlockCode": {} - } - } - }, - "GetSnowballUsage": { - "input": { - "type": "structure", - "members": {} - }, - "output": { - "type": "structure", - "members": { - "SnowballLimit": { - "type": "integer" - }, - "SnowballsInUse": { - "type": "integer" - } - } - } - }, - "ListClusterJobs": { - "input": { - "type": "structure", - "required": [ - "ClusterId" - ], - "members": { - "ClusterId": {}, - "MaxResults": { - "type": "integer" - }, - "NextToken": {} - } - }, - "output": { - "type": "structure", - "members": { - "JobListEntries": { - "shape": "S1t" - }, - "NextToken": {} - } - } - }, - "ListClusters": { - "input": { - "type": "structure", - "members": { - "MaxResults": { - "type": "integer" - }, - "NextToken": {} - } - }, - "output": { - "type": "structure", - "members": { - "ClusterListEntries": { - "type": "list", - "member": { - "type": "structure", - "members": { - "ClusterId": {}, - "ClusterState": {}, - "CreationDate": { - "type": "timestamp" - }, - "Description": {} - } - } - }, - "NextToken": {} - } - } - }, - "ListJobs": { - "input": { - "type": "structure", - "members": { - "MaxResults": { - "type": "integer" - }, - "NextToken": {} - } - }, - "output": { - "type": "structure", - "members": { - "JobListEntries": { - "shape": "S1t" - }, - "NextToken": {} - } - } - }, - "UpdateCluster": { - "input": { - "type": "structure", - "required": [ - "ClusterId" - ], - "members": { - "ClusterId": {}, - "RoleARN": {}, - "Description": {}, - "Resources": { - "shape": "Sf" - }, - "AddressId": {}, - "ShippingOption": {}, - "Notification": { - "shape": "Ss" - }, - "ForwardingAddressId": {} - } - }, - "output": { - "type": "structure", - "members": {} - } - }, - "UpdateJob": { - "input": { - "type": "structure", - "required": [ - "JobId" - ], - "members": { - "JobId": {}, - "RoleARN": {}, - "Notification": { - "shape": "Ss" - }, - "Resources": { - "shape": "Sf" - }, - "AddressId": {}, - "ShippingOption": {}, - "Description": {}, - "SnowballCapacityPreference": {}, - "ForwardingAddressId": {} - } - }, - "output": { - "type": "structure", - "members": {} - } - } - }, - "shapes": { - "S8": { - "type": "structure", - "members": { - "AddressId": {}, - "Name": {}, - "Company": {}, - "Street1": {}, - "Street2": {}, - "Street3": {}, - "City": {}, - "StateOrProvince": {}, - "PrefectureOrDistrict": {}, - "Landmark": {}, - "Country": {}, - "PostalCode": {}, - "PhoneNumber": {}, - "IsRestricted": { - "type": "boolean" - } - } - }, - "Sf": { - "type": "structure", - "members": { - "S3Resources": { - "type": "list", - "member": { - "type": "structure", - "members": { - "BucketArn": {}, - "KeyRange": { - "type": "structure", - "members": { - "BeginMarker": {}, - "EndMarker": {} - } - } - } - } - }, - "LambdaResources": { - "type": "list", - "member": { - "type": "structure", - "members": { - "LambdaArn": {}, - "EventTriggers": { - "type": "list", - "member": { - "type": "structure", - "members": { - "EventResourceARN": {} - } - } - } - } - } - } - } - }, - "Ss": { - "type": "structure", - "members": { - "SnsTopicARN": {}, - "JobStatesToNotify": { - "type": "list", - "member": {} - }, - "NotifyAll": { - "type": "boolean" - } - } - }, - "S1d": { - "type": "structure", - "members": { - "JobId": {}, - "JobState": {}, - "JobType": {}, - "SnowballType": {}, - "CreationDate": { - "type": "timestamp" - }, - "Resources": { - "shape": "Sf" - }, - "Description": {}, - "KmsKeyARN": {}, - "RoleARN": {}, - "AddressId": {}, - "ShippingDetails": { - "type": "structure", - "members": { - "ShippingOption": {}, - "InboundShipment": { - "shape": "S1f" - }, - "OutboundShipment": { - "shape": "S1f" - } - } - }, - "SnowballCapacityPreference": {}, - "Notification": { - "shape": "Ss" - }, - "DataTransferProgress": { - "type": "structure", - "members": { - "BytesTransferred": { - "type": "long" - }, - "ObjectsTransferred": { - "type": "long" - }, - "TotalBytes": { - "type": "long" - }, - "TotalObjects": { - "type": "long" - } - } - }, - "JobLogInfo": { - "type": "structure", - "members": { - "JobCompletionReportURI": {}, - "JobSuccessLogURI": {}, - "JobFailureLogURI": {} - } - }, - "ClusterId": {}, - "ForwardingAddressId": {} - } - }, - "S1f": { - "type": "structure", - "members": { - "Status": {}, - "TrackingNumber": {} - } - }, - "S1t": { - "type": "list", - "member": { - "type": "structure", - "members": { - "JobId": {}, - "JobState": {}, - "IsMaster": { - "type": "boolean" - }, - "JobType": {}, - "SnowballType": {}, - "CreationDate": { - "type": "timestamp" - }, - "Description": {} - } - } - } - } -} \ No newline at end of file diff --git a/workshops/monte-carlo-on-ec2-spot-fleet/src/web/node_modules/aws-sdk/apis/snowball-2016-06-30.paginators.json b/workshops/monte-carlo-on-ec2-spot-fleet/src/web/node_modules/aws-sdk/apis/snowball-2016-06-30.paginators.json deleted file mode 100644 index c5d937be..00000000 --- a/workshops/monte-carlo-on-ec2-spot-fleet/src/web/node_modules/aws-sdk/apis/snowball-2016-06-30.paginators.json +++ /dev/null @@ -1,16 +0,0 @@ -{ - "pagination": { - "DescribeAddresses": { - "input_token": "NextToken", - "limit_key": "MaxResults", - "output_token": "NextToken", - "result_key": "Addresses" - }, - "ListJobs": { - "input_token": "NextToken", - "limit_key": "MaxResults", - "output_token": "NextToken", - "result_key": "JobListEntries" - } - } -} \ No newline at end of file diff --git a/workshops/monte-carlo-on-ec2-spot-fleet/src/web/node_modules/aws-sdk/apis/sns-2010-03-31.min.json b/workshops/monte-carlo-on-ec2-spot-fleet/src/web/node_modules/aws-sdk/apis/sns-2010-03-31.min.json deleted file mode 100644 index 906fb85c..00000000 --- a/workshops/monte-carlo-on-ec2-spot-fleet/src/web/node_modules/aws-sdk/apis/sns-2010-03-31.min.json +++ /dev/null @@ -1,623 +0,0 @@ -{ - "version": "2.0", - "metadata": { - "uid": "sns-2010-03-31", - "apiVersion": "2010-03-31", - "endpointPrefix": "sns", - "protocol": "query", - "serviceAbbreviation": "Amazon SNS", - "serviceFullName": "Amazon Simple Notification Service", - "signatureVersion": "v4", - "xmlNamespace": "http://sns.amazonaws.com/doc/2010-03-31/" - }, - "operations": { - "AddPermission": { - "input": { - "type": "structure", - "required": [ - "TopicArn", - "Label", - "AWSAccountId", - "ActionName" - ], - "members": { - "TopicArn": {}, - "Label": {}, - "AWSAccountId": { - "type": "list", - "member": {} - }, - "ActionName": { - "type": "list", - "member": {} - } - } - } - }, - "CheckIfPhoneNumberIsOptedOut": { - "input": { - "type": "structure", - "required": [ - "phoneNumber" - ], - "members": { - "phoneNumber": {} - } - }, - "output": { - "resultWrapper": "CheckIfPhoneNumberIsOptedOutResult", - "type": "structure", - "members": { - "isOptedOut": { - "type": "boolean" - } - } - } - }, - "ConfirmSubscription": { - "input": { - "type": "structure", - "required": [ - "TopicArn", - "Token" - ], - "members": { - "TopicArn": {}, - "Token": {}, - "AuthenticateOnUnsubscribe": {} - } - }, - "output": { - "resultWrapper": "ConfirmSubscriptionResult", - "type": "structure", - "members": { - "SubscriptionArn": {} - } - } - }, - "CreatePlatformApplication": { - "input": { - "type": "structure", - "required": [ - "Name", - "Platform", - "Attributes" - ], - "members": { - "Name": {}, - "Platform": {}, - "Attributes": { - "shape": "Sj" - } - } - }, - "output": { - "resultWrapper": "CreatePlatformApplicationResult", - "type": "structure", - "members": { - "PlatformApplicationArn": {} - } - } - }, - "CreatePlatformEndpoint": { - "input": { - "type": "structure", - "required": [ - "PlatformApplicationArn", - "Token" - ], - "members": { - "PlatformApplicationArn": {}, - "Token": {}, - "CustomUserData": {}, - "Attributes": { - "shape": "Sj" - } - } - }, - "output": { - "resultWrapper": "CreatePlatformEndpointResult", - "type": "structure", - "members": { - "EndpointArn": {} - } - } - }, - "CreateTopic": { - "input": { - "type": "structure", - "required": [ - "Name" - ], - "members": { - "Name": {} - } - }, - "output": { - "resultWrapper": "CreateTopicResult", - "type": "structure", - "members": { - "TopicArn": {} - } - } - }, - "DeleteEndpoint": { - "input": { - "type": "structure", - "required": [ - "EndpointArn" - ], - "members": { - "EndpointArn": {} - } - } - }, - "DeletePlatformApplication": { - "input": { - "type": "structure", - "required": [ - "PlatformApplicationArn" - ], - "members": { - "PlatformApplicationArn": {} - } - } - }, - "DeleteTopic": { - "input": { - "type": "structure", - "required": [ - "TopicArn" - ], - "members": { - "TopicArn": {} - } - } - }, - "GetEndpointAttributes": { - "input": { - "type": "structure", - "required": [ - "EndpointArn" - ], - "members": { - "EndpointArn": {} - } - }, - "output": { - "resultWrapper": "GetEndpointAttributesResult", - "type": "structure", - "members": { - "Attributes": { - "shape": "Sj" - } - } - } - }, - "GetPlatformApplicationAttributes": { - "input": { - "type": "structure", - "required": [ - "PlatformApplicationArn" - ], - "members": { - "PlatformApplicationArn": {} - } - }, - "output": { - "resultWrapper": "GetPlatformApplicationAttributesResult", - "type": "structure", - "members": { - "Attributes": { - "shape": "Sj" - } - } - } - }, - "GetSMSAttributes": { - "input": { - "type": "structure", - "members": { - "attributes": { - "type": "list", - "member": {} - } - } - }, - "output": { - "resultWrapper": "GetSMSAttributesResult", - "type": "structure", - "members": { - "attributes": { - "shape": "Sj" - } - } - } - }, - "GetSubscriptionAttributes": { - "input": { - "type": "structure", - "required": [ - "SubscriptionArn" - ], - "members": { - "SubscriptionArn": {} - } - }, - "output": { - "resultWrapper": "GetSubscriptionAttributesResult", - "type": "structure", - "members": { - "Attributes": { - "type": "map", - "key": {}, - "value": {} - } - } - } - }, - "GetTopicAttributes": { - "input": { - "type": "structure", - "required": [ - "TopicArn" - ], - "members": { - "TopicArn": {} - } - }, - "output": { - "resultWrapper": "GetTopicAttributesResult", - "type": "structure", - "members": { - "Attributes": { - "type": "map", - "key": {}, - "value": {} - } - } - } - }, - "ListEndpointsByPlatformApplication": { - "input": { - "type": "structure", - "required": [ - "PlatformApplicationArn" - ], - "members": { - "PlatformApplicationArn": {}, - "NextToken": {} - } - }, - "output": { - "resultWrapper": "ListEndpointsByPlatformApplicationResult", - "type": "structure", - "members": { - "Endpoints": { - "type": "list", - "member": { - "type": "structure", - "members": { - "EndpointArn": {}, - "Attributes": { - "shape": "Sj" - } - } - } - }, - "NextToken": {} - } - } - }, - "ListPhoneNumbersOptedOut": { - "input": { - "type": "structure", - "members": { - "nextToken": {} - } - }, - "output": { - "resultWrapper": "ListPhoneNumbersOptedOutResult", - "type": "structure", - "members": { - "phoneNumbers": { - "type": "list", - "member": {} - }, - "nextToken": {} - } - } - }, - "ListPlatformApplications": { - "input": { - "type": "structure", - "members": { - "NextToken": {} - } - }, - "output": { - "resultWrapper": "ListPlatformApplicationsResult", - "type": "structure", - "members": { - "PlatformApplications": { - "type": "list", - "member": { - "type": "structure", - "members": { - "PlatformApplicationArn": {}, - "Attributes": { - "shape": "Sj" - } - } - } - }, - "NextToken": {} - } - } - }, - "ListSubscriptions": { - "input": { - "type": "structure", - "members": { - "NextToken": {} - } - }, - "output": { - "resultWrapper": "ListSubscriptionsResult", - "type": "structure", - "members": { - "Subscriptions": { - "shape": "S1n" - }, - "NextToken": {} - } - } - }, - "ListSubscriptionsByTopic": { - "input": { - "type": "structure", - "required": [ - "TopicArn" - ], - "members": { - "TopicArn": {}, - "NextToken": {} - } - }, - "output": { - "resultWrapper": "ListSubscriptionsByTopicResult", - "type": "structure", - "members": { - "Subscriptions": { - "shape": "S1n" - }, - "NextToken": {} - } - } - }, - "ListTopics": { - "input": { - "type": "structure", - "members": { - "NextToken": {} - } - }, - "output": { - "resultWrapper": "ListTopicsResult", - "type": "structure", - "members": { - "Topics": { - "type": "list", - "member": { - "type": "structure", - "members": { - "TopicArn": {} - } - } - }, - "NextToken": {} - } - } - }, - "OptInPhoneNumber": { - "input": { - "type": "structure", - "required": [ - "phoneNumber" - ], - "members": { - "phoneNumber": {} - } - }, - "output": { - "resultWrapper": "OptInPhoneNumberResult", - "type": "structure", - "members": {} - } - }, - "Publish": { - "input": { - "type": "structure", - "required": [ - "Message" - ], - "members": { - "TopicArn": {}, - "TargetArn": {}, - "PhoneNumber": {}, - "Message": {}, - "Subject": {}, - "MessageStructure": {}, - "MessageAttributes": { - "type": "map", - "key": { - "locationName": "Name" - }, - "value": { - "locationName": "Value", - "type": "structure", - "required": [ - "DataType" - ], - "members": { - "DataType": {}, - "StringValue": {}, - "BinaryValue": { - "type": "blob" - } - } - } - } - } - }, - "output": { - "resultWrapper": "PublishResult", - "type": "structure", - "members": { - "MessageId": {} - } - } - }, - "RemovePermission": { - "input": { - "type": "structure", - "required": [ - "TopicArn", - "Label" - ], - "members": { - "TopicArn": {}, - "Label": {} - } - } - }, - "SetEndpointAttributes": { - "input": { - "type": "structure", - "required": [ - "EndpointArn", - "Attributes" - ], - "members": { - "EndpointArn": {}, - "Attributes": { - "shape": "Sj" - } - } - } - }, - "SetPlatformApplicationAttributes": { - "input": { - "type": "structure", - "required": [ - "PlatformApplicationArn", - "Attributes" - ], - "members": { - "PlatformApplicationArn": {}, - "Attributes": { - "shape": "Sj" - } - } - } - }, - "SetSMSAttributes": { - "input": { - "type": "structure", - "required": [ - "attributes" - ], - "members": { - "attributes": { - "shape": "Sj" - } - } - }, - "output": { - "resultWrapper": "SetSMSAttributesResult", - "type": "structure", - "members": {} - } - }, - "SetSubscriptionAttributes": { - "input": { - "type": "structure", - "required": [ - "SubscriptionArn", - "AttributeName" - ], - "members": { - "SubscriptionArn": {}, - "AttributeName": {}, - "AttributeValue": {} - } - } - }, - "SetTopicAttributes": { - "input": { - "type": "structure", - "required": [ - "TopicArn", - "AttributeName" - ], - "members": { - "TopicArn": {}, - "AttributeName": {}, - "AttributeValue": {} - } - } - }, - "Subscribe": { - "input": { - "type": "structure", - "required": [ - "TopicArn", - "Protocol" - ], - "members": { - "TopicArn": {}, - "Protocol": {}, - "Endpoint": {} - } - }, - "output": { - "resultWrapper": "SubscribeResult", - "type": "structure", - "members": { - "SubscriptionArn": {} - } - } - }, - "Unsubscribe": { - "input": { - "type": "structure", - "required": [ - "SubscriptionArn" - ], - "members": { - "SubscriptionArn": {} - } - } - } - }, - "shapes": { - "Sj": { - "type": "map", - "key": {}, - "value": {} - }, - "S1n": { - "type": "list", - "member": { - "type": "structure", - "members": { - "SubscriptionArn": {}, - "Owner": {}, - "Protocol": {}, - "Endpoint": {}, - "TopicArn": {} - } - } - } - } -} \ No newline at end of file diff --git a/workshops/monte-carlo-on-ec2-spot-fleet/src/web/node_modules/aws-sdk/apis/sns-2010-03-31.paginators.json b/workshops/monte-carlo-on-ec2-spot-fleet/src/web/node_modules/aws-sdk/apis/sns-2010-03-31.paginators.json deleted file mode 100644 index 455e4708..00000000 --- a/workshops/monte-carlo-on-ec2-spot-fleet/src/web/node_modules/aws-sdk/apis/sns-2010-03-31.paginators.json +++ /dev/null @@ -1,29 +0,0 @@ -{ - "pagination": { - "ListEndpointsByPlatformApplication": { - "input_token": "NextToken", - "output_token": "NextToken", - "result_key": "Endpoints" - }, - "ListPlatformApplications": { - "input_token": "NextToken", - "output_token": "NextToken", - "result_key": "PlatformApplications" - }, - "ListSubscriptions": { - "input_token": "NextToken", - "output_token": "NextToken", - "result_key": "Subscriptions" - }, - "ListSubscriptionsByTopic": { - "input_token": "NextToken", - "output_token": "NextToken", - "result_key": "Subscriptions" - }, - "ListTopics": { - "input_token": "NextToken", - "output_token": "NextToken", - "result_key": "Topics" - } - } -} diff --git a/workshops/monte-carlo-on-ec2-spot-fleet/src/web/node_modules/aws-sdk/apis/sqs-2012-11-05.examples.json b/workshops/monte-carlo-on-ec2-spot-fleet/src/web/node_modules/aws-sdk/apis/sqs-2012-11-05.examples.json deleted file mode 100644 index 0ea7e3b0..00000000 --- a/workshops/monte-carlo-on-ec2-spot-fleet/src/web/node_modules/aws-sdk/apis/sqs-2012-11-05.examples.json +++ /dev/null @@ -1,5 +0,0 @@ -{ - "version": "1.0", - "examples": { - } -} diff --git a/workshops/monte-carlo-on-ec2-spot-fleet/src/web/node_modules/aws-sdk/apis/sqs-2012-11-05.min.json b/workshops/monte-carlo-on-ec2-spot-fleet/src/web/node_modules/aws-sdk/apis/sqs-2012-11-05.min.json deleted file mode 100644 index c152edac..00000000 --- a/workshops/monte-carlo-on-ec2-spot-fleet/src/web/node_modules/aws-sdk/apis/sqs-2012-11-05.min.json +++ /dev/null @@ -1,598 +0,0 @@ -{ - "version": "2.0", - "metadata": { - "apiVersion": "2012-11-05", - "endpointPrefix": "sqs", - "protocol": "query", - "serviceAbbreviation": "Amazon SQS", - "serviceFullName": "Amazon Simple Queue Service", - "signatureVersion": "v4", - "uid": "sqs-2012-11-05", - "xmlNamespace": "http://queue.amazonaws.com/doc/2012-11-05/" - }, - "operations": { - "AddPermission": { - "input": { - "type": "structure", - "required": [ - "QueueUrl", - "Label", - "AWSAccountIds", - "Actions" - ], - "members": { - "QueueUrl": {}, - "Label": {}, - "AWSAccountIds": { - "type": "list", - "member": { - "locationName": "AWSAccountId" - }, - "flattened": true - }, - "Actions": { - "type": "list", - "member": { - "locationName": "ActionName" - }, - "flattened": true - } - } - } - }, - "ChangeMessageVisibility": { - "input": { - "type": "structure", - "required": [ - "QueueUrl", - "ReceiptHandle", - "VisibilityTimeout" - ], - "members": { - "QueueUrl": {}, - "ReceiptHandle": {}, - "VisibilityTimeout": { - "type": "integer" - } - } - } - }, - "ChangeMessageVisibilityBatch": { - "input": { - "type": "structure", - "required": [ - "QueueUrl", - "Entries" - ], - "members": { - "QueueUrl": {}, - "Entries": { - "type": "list", - "member": { - "locationName": "ChangeMessageVisibilityBatchRequestEntry", - "type": "structure", - "required": [ - "Id", - "ReceiptHandle" - ], - "members": { - "Id": {}, - "ReceiptHandle": {}, - "VisibilityTimeout": { - "type": "integer" - } - } - }, - "flattened": true - } - } - }, - "output": { - "resultWrapper": "ChangeMessageVisibilityBatchResult", - "type": "structure", - "required": [ - "Successful", - "Failed" - ], - "members": { - "Successful": { - "type": "list", - "member": { - "locationName": "ChangeMessageVisibilityBatchResultEntry", - "type": "structure", - "required": [ - "Id" - ], - "members": { - "Id": {} - } - }, - "flattened": true - }, - "Failed": { - "shape": "Sd" - } - } - } - }, - "CreateQueue": { - "input": { - "type": "structure", - "required": [ - "QueueName" - ], - "members": { - "QueueName": {}, - "Attributes": { - "shape": "Sh", - "locationName": "Attribute" - } - } - }, - "output": { - "resultWrapper": "CreateQueueResult", - "type": "structure", - "members": { - "QueueUrl": {} - } - } - }, - "DeleteMessage": { - "input": { - "type": "structure", - "required": [ - "QueueUrl", - "ReceiptHandle" - ], - "members": { - "QueueUrl": {}, - "ReceiptHandle": {} - } - } - }, - "DeleteMessageBatch": { - "input": { - "type": "structure", - "required": [ - "QueueUrl", - "Entries" - ], - "members": { - "QueueUrl": {}, - "Entries": { - "type": "list", - "member": { - "locationName": "DeleteMessageBatchRequestEntry", - "type": "structure", - "required": [ - "Id", - "ReceiptHandle" - ], - "members": { - "Id": {}, - "ReceiptHandle": {} - } - }, - "flattened": true - } - } - }, - "output": { - "resultWrapper": "DeleteMessageBatchResult", - "type": "structure", - "required": [ - "Successful", - "Failed" - ], - "members": { - "Successful": { - "type": "list", - "member": { - "locationName": "DeleteMessageBatchResultEntry", - "type": "structure", - "required": [ - "Id" - ], - "members": { - "Id": {} - } - }, - "flattened": true - }, - "Failed": { - "shape": "Sd" - } - } - } - }, - "DeleteQueue": { - "input": { - "type": "structure", - "required": [ - "QueueUrl" - ], - "members": { - "QueueUrl": {} - } - } - }, - "GetQueueAttributes": { - "input": { - "type": "structure", - "required": [ - "QueueUrl" - ], - "members": { - "QueueUrl": {}, - "AttributeNames": { - "shape": "St" - } - } - }, - "output": { - "resultWrapper": "GetQueueAttributesResult", - "type": "structure", - "members": { - "Attributes": { - "shape": "Sh", - "locationName": "Attribute" - } - } - } - }, - "GetQueueUrl": { - "input": { - "type": "structure", - "required": [ - "QueueName" - ], - "members": { - "QueueName": {}, - "QueueOwnerAWSAccountId": {} - } - }, - "output": { - "resultWrapper": "GetQueueUrlResult", - "type": "structure", - "members": { - "QueueUrl": {} - } - } - }, - "ListDeadLetterSourceQueues": { - "input": { - "type": "structure", - "required": [ - "QueueUrl" - ], - "members": { - "QueueUrl": {} - } - }, - "output": { - "resultWrapper": "ListDeadLetterSourceQueuesResult", - "type": "structure", - "required": [ - "queueUrls" - ], - "members": { - "queueUrls": { - "shape": "Sz" - } - } - } - }, - "ListQueues": { - "input": { - "type": "structure", - "members": { - "QueueNamePrefix": {} - } - }, - "output": { - "resultWrapper": "ListQueuesResult", - "type": "structure", - "members": { - "QueueUrls": { - "shape": "Sz" - } - } - } - }, - "PurgeQueue": { - "input": { - "type": "structure", - "required": [ - "QueueUrl" - ], - "members": { - "QueueUrl": {} - } - } - }, - "ReceiveMessage": { - "input": { - "type": "structure", - "required": [ - "QueueUrl" - ], - "members": { - "QueueUrl": {}, - "AttributeNames": { - "shape": "St" - }, - "MessageAttributeNames": { - "type": "list", - "member": { - "locationName": "MessageAttributeName" - }, - "flattened": true - }, - "MaxNumberOfMessages": { - "type": "integer" - }, - "VisibilityTimeout": { - "type": "integer" - }, - "WaitTimeSeconds": { - "type": "integer" - }, - "ReceiveRequestAttemptId": {} - } - }, - "output": { - "resultWrapper": "ReceiveMessageResult", - "type": "structure", - "members": { - "Messages": { - "type": "list", - "member": { - "locationName": "Message", - "type": "structure", - "members": { - "MessageId": {}, - "ReceiptHandle": {}, - "MD5OfBody": {}, - "Body": {}, - "Attributes": { - "locationName": "Attribute", - "type": "map", - "key": { - "locationName": "Name" - }, - "value": { - "locationName": "Value" - }, - "flattened": true - }, - "MD5OfMessageAttributes": {}, - "MessageAttributes": { - "shape": "S1b", - "locationName": "MessageAttribute" - } - } - }, - "flattened": true - } - } - } - }, - "RemovePermission": { - "input": { - "type": "structure", - "required": [ - "QueueUrl", - "Label" - ], - "members": { - "QueueUrl": {}, - "Label": {} - } - } - }, - "SendMessage": { - "input": { - "type": "structure", - "required": [ - "QueueUrl", - "MessageBody" - ], - "members": { - "QueueUrl": {}, - "MessageBody": {}, - "DelaySeconds": { - "type": "integer" - }, - "MessageAttributes": { - "shape": "S1b", - "locationName": "MessageAttribute" - }, - "MessageDeduplicationId": {}, - "MessageGroupId": {} - } - }, - "output": { - "resultWrapper": "SendMessageResult", - "type": "structure", - "members": { - "MD5OfMessageBody": {}, - "MD5OfMessageAttributes": {}, - "MessageId": {}, - "SequenceNumber": {} - } - } - }, - "SendMessageBatch": { - "input": { - "type": "structure", - "required": [ - "QueueUrl", - "Entries" - ], - "members": { - "QueueUrl": {}, - "Entries": { - "type": "list", - "member": { - "locationName": "SendMessageBatchRequestEntry", - "type": "structure", - "required": [ - "Id", - "MessageBody" - ], - "members": { - "Id": {}, - "MessageBody": {}, - "DelaySeconds": { - "type": "integer" - }, - "MessageAttributes": { - "shape": "S1b", - "locationName": "MessageAttribute" - }, - "MessageDeduplicationId": {}, - "MessageGroupId": {} - } - }, - "flattened": true - } - } - }, - "output": { - "resultWrapper": "SendMessageBatchResult", - "type": "structure", - "required": [ - "Successful", - "Failed" - ], - "members": { - "Successful": { - "type": "list", - "member": { - "locationName": "SendMessageBatchResultEntry", - "type": "structure", - "required": [ - "Id", - "MessageId", - "MD5OfMessageBody" - ], - "members": { - "Id": {}, - "MessageId": {}, - "MD5OfMessageBody": {}, - "MD5OfMessageAttributes": {}, - "SequenceNumber": {} - } - }, - "flattened": true - }, - "Failed": { - "shape": "Sd" - } - } - } - }, - "SetQueueAttributes": { - "input": { - "type": "structure", - "required": [ - "QueueUrl", - "Attributes" - ], - "members": { - "QueueUrl": {}, - "Attributes": { - "shape": "Sh", - "locationName": "Attribute" - } - } - } - } - }, - "shapes": { - "Sd": { - "type": "list", - "member": { - "locationName": "BatchResultErrorEntry", - "type": "structure", - "required": [ - "Id", - "SenderFault", - "Code" - ], - "members": { - "Id": {}, - "SenderFault": { - "type": "boolean" - }, - "Code": {}, - "Message": {} - } - }, - "flattened": true - }, - "Sh": { - "type": "map", - "key": { - "locationName": "Name" - }, - "value": { - "locationName": "Value" - }, - "flattened": true, - "locationName": "Attribute" - }, - "St": { - "type": "list", - "member": { - "locationName": "AttributeName" - }, - "flattened": true - }, - "Sz": { - "type": "list", - "member": { - "locationName": "QueueUrl" - }, - "flattened": true - }, - "S1b": { - "type": "map", - "key": { - "locationName": "Name" - }, - "value": { - "locationName": "Value", - "type": "structure", - "required": [ - "DataType" - ], - "members": { - "StringValue": {}, - "BinaryValue": { - "type": "blob" - }, - "StringListValues": { - "flattened": true, - "locationName": "StringListValue", - "type": "list", - "member": { - "locationName": "StringListValue" - } - }, - "BinaryListValues": { - "flattened": true, - "locationName": "BinaryListValue", - "type": "list", - "member": { - "locationName": "BinaryListValue", - "type": "blob" - } - }, - "DataType": {} - } - }, - "flattened": true - } - } -} \ No newline at end of file diff --git a/workshops/monte-carlo-on-ec2-spot-fleet/src/web/node_modules/aws-sdk/apis/sqs-2012-11-05.paginators.json b/workshops/monte-carlo-on-ec2-spot-fleet/src/web/node_modules/aws-sdk/apis/sqs-2012-11-05.paginators.json deleted file mode 100644 index 4d5fe76b..00000000 --- a/workshops/monte-carlo-on-ec2-spot-fleet/src/web/node_modules/aws-sdk/apis/sqs-2012-11-05.paginators.json +++ /dev/null @@ -1,7 +0,0 @@ -{ - "pagination": { - "ListQueues": { - "result_key": "QueueUrls" - } - } -} \ No newline at end of file diff --git a/workshops/monte-carlo-on-ec2-spot-fleet/src/web/node_modules/aws-sdk/apis/ssm-2014-11-06.examples.json b/workshops/monte-carlo-on-ec2-spot-fleet/src/web/node_modules/aws-sdk/apis/ssm-2014-11-06.examples.json deleted file mode 100644 index 0ea7e3b0..00000000 --- a/workshops/monte-carlo-on-ec2-spot-fleet/src/web/node_modules/aws-sdk/apis/ssm-2014-11-06.examples.json +++ /dev/null @@ -1,5 +0,0 @@ -{ - "version": "1.0", - "examples": { - } -} diff --git a/workshops/monte-carlo-on-ec2-spot-fleet/src/web/node_modules/aws-sdk/apis/ssm-2014-11-06.min.json b/workshops/monte-carlo-on-ec2-spot-fleet/src/web/node_modules/aws-sdk/apis/ssm-2014-11-06.min.json deleted file mode 100644 index ae0a7bab..00000000 --- a/workshops/monte-carlo-on-ec2-spot-fleet/src/web/node_modules/aws-sdk/apis/ssm-2014-11-06.min.json +++ /dev/null @@ -1,4067 +0,0 @@ -{ - "version": "2.0", - "metadata": { - "apiVersion": "2014-11-06", - "endpointPrefix": "ssm", - "jsonVersion": "1.1", - "protocol": "json", - "serviceAbbreviation": "Amazon SSM", - "serviceFullName": "Amazon Simple Systems Manager (SSM)", - "signatureVersion": "v4", - "targetPrefix": "AmazonSSM", - "uid": "ssm-2014-11-06" - }, - "operations": { - "AddTagsToResource": { - "input": { - "type": "structure", - "required": [ - "ResourceType", - "ResourceId", - "Tags" - ], - "members": { - "ResourceType": {}, - "ResourceId": {}, - "Tags": { - "shape": "S4" - } - } - }, - "output": { - "type": "structure", - "members": {} - } - }, - "CancelCommand": { - "input": { - "type": "structure", - "required": [ - "CommandId" - ], - "members": { - "CommandId": {}, - "InstanceIds": { - "shape": "Sb" - } - } - }, - "output": { - "type": "structure", - "members": {} - } - }, - "CreateActivation": { - "input": { - "type": "structure", - "required": [ - "IamRole" - ], - "members": { - "Description": {}, - "DefaultInstanceName": {}, - "IamRole": {}, - "RegistrationLimit": { - "type": "integer" - }, - "ExpirationDate": { - "type": "timestamp" - } - } - }, - "output": { - "type": "structure", - "members": { - "ActivationId": {}, - "ActivationCode": {} - } - } - }, - "CreateAssociation": { - "input": { - "type": "structure", - "required": [ - "Name" - ], - "members": { - "Name": {}, - "DocumentVersion": {}, - "InstanceId": {}, - "Parameters": { - "shape": "Sq" - }, - "Targets": { - "shape": "Su" - }, - "ScheduleExpression": {}, - "OutputLocation": { - "shape": "S10" - }, - "AssociationName": {} - } - }, - "output": { - "type": "structure", - "members": { - "AssociationDescription": { - "shape": "S17" - } - } - } - }, - "CreateAssociationBatch": { - "input": { - "type": "structure", - "required": [ - "Entries" - ], - "members": { - "Entries": { - "type": "list", - "member": { - "shape": "S1l", - "locationName": "entries" - } - } - } - }, - "output": { - "type": "structure", - "members": { - "Successful": { - "type": "list", - "member": { - "shape": "S17", - "locationName": "AssociationDescription" - } - }, - "Failed": { - "type": "list", - "member": { - "locationName": "FailedCreateAssociationEntry", - "type": "structure", - "members": { - "Entry": { - "shape": "S1l" - }, - "Message": {}, - "Fault": {} - } - } - } - } - } - }, - "CreateDocument": { - "input": { - "type": "structure", - "required": [ - "Content", - "Name" - ], - "members": { - "Content": {}, - "Name": {}, - "DocumentType": {} - } - }, - "output": { - "type": "structure", - "members": { - "DocumentDescription": { - "shape": "S1w" - } - } - } - }, - "CreateMaintenanceWindow": { - "input": { - "type": "structure", - "required": [ - "Name", - "Schedule", - "Duration", - "Cutoff", - "AllowUnassociatedTargets" - ], - "members": { - "Name": {}, - "Description": { - "shape": "S2f" - }, - "Schedule": {}, - "Duration": { - "type": "integer" - }, - "Cutoff": { - "type": "integer" - }, - "AllowUnassociatedTargets": { - "type": "boolean" - }, - "ClientToken": { - "idempotencyToken": true - } - } - }, - "output": { - "type": "structure", - "members": { - "WindowId": {} - } - } - }, - "CreatePatchBaseline": { - "input": { - "type": "structure", - "required": [ - "Name" - ], - "members": { - "OperatingSystem": {}, - "Name": {}, - "GlobalFilters": { - "shape": "S2q" - }, - "ApprovalRules": { - "shape": "S2w" - }, - "ApprovedPatches": { - "shape": "S31" - }, - "ApprovedPatchesComplianceLevel": {}, - "RejectedPatches": { - "shape": "S31" - }, - "Description": {}, - "ClientToken": { - "idempotencyToken": true - } - } - }, - "output": { - "type": "structure", - "members": { - "BaselineId": {} - } - } - }, - "CreateResourceDataSync": { - "input": { - "type": "structure", - "required": [ - "SyncName", - "S3Destination" - ], - "members": { - "SyncName": {}, - "S3Destination": { - "shape": "S38" - } - } - }, - "output": { - "type": "structure", - "members": {} - } - }, - "DeleteActivation": { - "input": { - "type": "structure", - "required": [ - "ActivationId" - ], - "members": { - "ActivationId": {} - } - }, - "output": { - "type": "structure", - "members": {} - } - }, - "DeleteAssociation": { - "input": { - "type": "structure", - "members": { - "Name": {}, - "InstanceId": {}, - "AssociationId": {} - } - }, - "output": { - "type": "structure", - "members": {} - } - }, - "DeleteDocument": { - "input": { - "type": "structure", - "required": [ - "Name" - ], - "members": { - "Name": {} - } - }, - "output": { - "type": "structure", - "members": {} - } - }, - "DeleteMaintenanceWindow": { - "input": { - "type": "structure", - "required": [ - "WindowId" - ], - "members": { - "WindowId": {} - } - }, - "output": { - "type": "structure", - "members": { - "WindowId": {} - } - } - }, - "DeleteParameter": { - "input": { - "type": "structure", - "required": [ - "Name" - ], - "members": { - "Name": {} - } - }, - "output": { - "type": "structure", - "members": {} - } - }, - "DeleteParameters": { - "input": { - "type": "structure", - "required": [ - "Names" - ], - "members": { - "Names": { - "shape": "S3r" - } - } - }, - "output": { - "type": "structure", - "members": { - "DeletedParameters": { - "shape": "S3r" - }, - "InvalidParameters": { - "shape": "S3r" - } - } - } - }, - "DeletePatchBaseline": { - "input": { - "type": "structure", - "required": [ - "BaselineId" - ], - "members": { - "BaselineId": {} - } - }, - "output": { - "type": "structure", - "members": { - "BaselineId": {} - } - } - }, - "DeleteResourceDataSync": { - "input": { - "type": "structure", - "required": [ - "SyncName" - ], - "members": { - "SyncName": {} - } - }, - "output": { - "type": "structure", - "members": {} - } - }, - "DeregisterManagedInstance": { - "input": { - "type": "structure", - "required": [ - "InstanceId" - ], - "members": { - "InstanceId": {} - } - }, - "output": { - "type": "structure", - "members": {} - } - }, - "DeregisterPatchBaselineForPatchGroup": { - "input": { - "type": "structure", - "required": [ - "BaselineId", - "PatchGroup" - ], - "members": { - "BaselineId": {}, - "PatchGroup": {} - } - }, - "output": { - "type": "structure", - "members": { - "BaselineId": {}, - "PatchGroup": {} - } - } - }, - "DeregisterTargetFromMaintenanceWindow": { - "input": { - "type": "structure", - "required": [ - "WindowId", - "WindowTargetId" - ], - "members": { - "WindowId": {}, - "WindowTargetId": {}, - "Safe": { - "type": "boolean" - } - } - }, - "output": { - "type": "structure", - "members": { - "WindowId": {}, - "WindowTargetId": {} - } - } - }, - "DeregisterTaskFromMaintenanceWindow": { - "input": { - "type": "structure", - "required": [ - "WindowId", - "WindowTaskId" - ], - "members": { - "WindowId": {}, - "WindowTaskId": {} - } - }, - "output": { - "type": "structure", - "members": { - "WindowId": {}, - "WindowTaskId": {} - } - } - }, - "DescribeActivations": { - "input": { - "type": "structure", - "members": { - "Filters": { - "type": "list", - "member": { - "type": "structure", - "members": { - "FilterKey": {}, - "FilterValues": { - "type": "list", - "member": {} - } - } - } - }, - "MaxResults": { - "type": "integer" - }, - "NextToken": {} - } - }, - "output": { - "type": "structure", - "members": { - "ActivationList": { - "type": "list", - "member": { - "type": "structure", - "members": { - "ActivationId": {}, - "Description": {}, - "DefaultInstanceName": {}, - "IamRole": {}, - "RegistrationLimit": { - "type": "integer" - }, - "RegistrationsCount": { - "type": "integer" - }, - "ExpirationDate": { - "type": "timestamp" - }, - "Expired": { - "type": "boolean" - }, - "CreatedDate": { - "type": "timestamp" - } - } - } - }, - "NextToken": {} - } - } - }, - "DescribeAssociation": { - "input": { - "type": "structure", - "members": { - "Name": {}, - "InstanceId": {}, - "AssociationId": {}, - "AssociationVersion": {} - } - }, - "output": { - "type": "structure", - "members": { - "AssociationDescription": { - "shape": "S17" - } - } - } - }, - "DescribeAutomationExecutions": { - "input": { - "type": "structure", - "members": { - "Filters": { - "type": "list", - "member": { - "type": "structure", - "required": [ - "Key", - "Values" - ], - "members": { - "Key": {}, - "Values": { - "type": "list", - "member": {} - } - } - } - }, - "MaxResults": { - "type": "integer" - }, - "NextToken": {} - } - }, - "output": { - "type": "structure", - "members": { - "AutomationExecutionMetadataList": { - "type": "list", - "member": { - "type": "structure", - "members": { - "AutomationExecutionId": {}, - "DocumentName": {}, - "DocumentVersion": {}, - "AutomationExecutionStatus": {}, - "ExecutionStartTime": { - "type": "timestamp" - }, - "ExecutionEndTime": { - "type": "timestamp" - }, - "ExecutedBy": {}, - "LogFile": {}, - "Outputs": { - "shape": "S50" - } - } - } - }, - "NextToken": {} - } - } - }, - "DescribeAvailablePatches": { - "input": { - "type": "structure", - "members": { - "Filters": { - "shape": "S55" - }, - "MaxResults": { - "type": "integer" - }, - "NextToken": {} - } - }, - "output": { - "type": "structure", - "members": { - "Patches": { - "type": "list", - "member": { - "shape": "S5d" - } - }, - "NextToken": {} - } - } - }, - "DescribeDocument": { - "input": { - "type": "structure", - "required": [ - "Name" - ], - "members": { - "Name": {}, - "DocumentVersion": {} - } - }, - "output": { - "type": "structure", - "members": { - "Document": { - "shape": "S1w" - } - } - } - }, - "DescribeDocumentPermission": { - "input": { - "type": "structure", - "required": [ - "Name", - "PermissionType" - ], - "members": { - "Name": {}, - "PermissionType": {} - } - }, - "output": { - "type": "structure", - "members": { - "AccountIds": { - "shape": "S5u" - } - } - } - }, - "DescribeEffectiveInstanceAssociations": { - "input": { - "type": "structure", - "required": [ - "InstanceId" - ], - "members": { - "InstanceId": {}, - "MaxResults": { - "type": "integer" - }, - "NextToken": {} - } - }, - "output": { - "type": "structure", - "members": { - "Associations": { - "type": "list", - "member": { - "type": "structure", - "members": { - "AssociationId": {}, - "InstanceId": {}, - "Content": {}, - "AssociationVersion": {} - } - } - }, - "NextToken": {} - } - } - }, - "DescribeEffectivePatchesForPatchBaseline": { - "input": { - "type": "structure", - "required": [ - "BaselineId" - ], - "members": { - "BaselineId": {}, - "MaxResults": { - "type": "integer" - }, - "NextToken": {} - } - }, - "output": { - "type": "structure", - "members": { - "EffectivePatches": { - "type": "list", - "member": { - "type": "structure", - "members": { - "Patch": { - "shape": "S5d" - }, - "PatchStatus": { - "type": "structure", - "members": { - "DeploymentStatus": {}, - "ComplianceLevel": {}, - "ApprovalDate": { - "type": "timestamp" - } - } - } - } - } - }, - "NextToken": {} - } - } - }, - "DescribeInstanceAssociationsStatus": { - "input": { - "type": "structure", - "required": [ - "InstanceId" - ], - "members": { - "InstanceId": {}, - "MaxResults": { - "type": "integer" - }, - "NextToken": {} - } - }, - "output": { - "type": "structure", - "members": { - "InstanceAssociationStatusInfos": { - "type": "list", - "member": { - "type": "structure", - "members": { - "AssociationId": {}, - "Name": {}, - "DocumentVersion": {}, - "AssociationVersion": {}, - "InstanceId": {}, - "ExecutionDate": { - "type": "timestamp" - }, - "Status": {}, - "DetailedStatus": {}, - "ExecutionSummary": {}, - "ErrorCode": {}, - "OutputUrl": { - "type": "structure", - "members": { - "S3OutputUrl": { - "type": "structure", - "members": { - "OutputUrl": {} - } - } - } - }, - "AssociationName": {} - } - } - }, - "NextToken": {} - } - } - }, - "DescribeInstanceInformation": { - "input": { - "type": "structure", - "members": { - "InstanceInformationFilterList": { - "type": "list", - "member": { - "locationName": "InstanceInformationFilter", - "type": "structure", - "required": [ - "key", - "valueSet" - ], - "members": { - "key": {}, - "valueSet": { - "shape": "S6k" - } - } - } - }, - "Filters": { - "type": "list", - "member": { - "locationName": "InstanceInformationStringFilter", - "type": "structure", - "required": [ - "Key", - "Values" - ], - "members": { - "Key": {}, - "Values": { - "shape": "S6k" - } - } - } - }, - "MaxResults": { - "type": "integer" - }, - "NextToken": {} - } - }, - "output": { - "type": "structure", - "members": { - "InstanceInformationList": { - "type": "list", - "member": { - "locationName": "InstanceInformation", - "type": "structure", - "members": { - "InstanceId": {}, - "PingStatus": {}, - "LastPingDateTime": { - "type": "timestamp" - }, - "AgentVersion": {}, - "IsLatestVersion": { - "type": "boolean" - }, - "PlatformType": {}, - "PlatformName": {}, - "PlatformVersion": {}, - "ActivationId": {}, - "IamRole": {}, - "RegistrationDate": { - "type": "timestamp" - }, - "ResourceType": {}, - "Name": {}, - "IPAddress": {}, - "ComputerName": {}, - "AssociationStatus": {}, - "LastAssociationExecutionDate": { - "type": "timestamp" - }, - "LastSuccessfulAssociationExecutionDate": { - "type": "timestamp" - }, - "AssociationOverview": { - "type": "structure", - "members": { - "DetailedStatus": {}, - "InstanceAssociationStatusAggregatedCount": { - "type": "map", - "key": {}, - "value": { - "type": "integer" - } - } - } - } - } - } - }, - "NextToken": {} - } - } - }, - "DescribeInstancePatchStates": { - "input": { - "type": "structure", - "required": [ - "InstanceIds" - ], - "members": { - "InstanceIds": { - "shape": "Sb" - }, - "NextToken": {}, - "MaxResults": { - "type": "integer" - } - } - }, - "output": { - "type": "structure", - "members": { - "InstancePatchStates": { - "type": "list", - "member": { - "shape": "S74" - } - }, - "NextToken": {} - } - } - }, - "DescribeInstancePatchStatesForPatchGroup": { - "input": { - "type": "structure", - "required": [ - "PatchGroup" - ], - "members": { - "PatchGroup": {}, - "Filters": { - "type": "list", - "member": { - "type": "structure", - "required": [ - "Key", - "Values", - "Type" - ], - "members": { - "Key": {}, - "Values": { - "type": "list", - "member": {} - }, - "Type": {} - } - } - }, - "NextToken": {}, - "MaxResults": { - "type": "integer" - } - } - }, - "output": { - "type": "structure", - "members": { - "InstancePatchStates": { - "type": "list", - "member": { - "shape": "S74" - } - }, - "NextToken": {} - } - } - }, - "DescribeInstancePatches": { - "input": { - "type": "structure", - "required": [ - "InstanceId" - ], - "members": { - "InstanceId": {}, - "Filters": { - "shape": "S55" - }, - "NextToken": {}, - "MaxResults": { - "type": "integer" - } - } - }, - "output": { - "type": "structure", - "members": { - "Patches": { - "type": "list", - "member": { - "type": "structure", - "required": [ - "Title", - "KBId", - "Classification", - "Severity", - "State", - "InstalledTime" - ], - "members": { - "Title": {}, - "KBId": {}, - "Classification": {}, - "Severity": {}, - "State": {}, - "InstalledTime": { - "type": "timestamp" - } - } - } - }, - "NextToken": {} - } - } - }, - "DescribeMaintenanceWindowExecutionTaskInvocations": { - "input": { - "type": "structure", - "required": [ - "WindowExecutionId", - "TaskId" - ], - "members": { - "WindowExecutionId": {}, - "TaskId": {}, - "Filters": { - "shape": "S7v" - }, - "MaxResults": { - "type": "integer" - }, - "NextToken": {} - } - }, - "output": { - "type": "structure", - "members": { - "WindowExecutionTaskInvocationIdentities": { - "type": "list", - "member": { - "type": "structure", - "members": { - "WindowExecutionId": {}, - "TaskExecutionId": {}, - "InvocationId": {}, - "ExecutionId": {}, - "TaskType": {}, - "Parameters": { - "shape": "S87" - }, - "Status": {}, - "StatusDetails": {}, - "StartTime": { - "type": "timestamp" - }, - "EndTime": { - "type": "timestamp" - }, - "OwnerInformation": { - "shape": "S76" - }, - "WindowTargetId": {} - } - } - }, - "NextToken": {} - } - } - }, - "DescribeMaintenanceWindowExecutionTasks": { - "input": { - "type": "structure", - "required": [ - "WindowExecutionId" - ], - "members": { - "WindowExecutionId": {}, - "Filters": { - "shape": "S7v" - }, - "MaxResults": { - "type": "integer" - }, - "NextToken": {} - } - }, - "output": { - "type": "structure", - "members": { - "WindowExecutionTaskIdentities": { - "type": "list", - "member": { - "type": "structure", - "members": { - "WindowExecutionId": {}, - "TaskExecutionId": {}, - "Status": {}, - "StatusDetails": {}, - "StartTime": { - "type": "timestamp" - }, - "EndTime": { - "type": "timestamp" - }, - "TaskArn": {}, - "TaskType": {} - } - } - }, - "NextToken": {} - } - } - }, - "DescribeMaintenanceWindowExecutions": { - "input": { - "type": "structure", - "required": [ - "WindowId" - ], - "members": { - "WindowId": {}, - "Filters": { - "shape": "S7v" - }, - "MaxResults": { - "type": "integer" - }, - "NextToken": {} - } - }, - "output": { - "type": "structure", - "members": { - "WindowExecutions": { - "type": "list", - "member": { - "type": "structure", - "members": { - "WindowId": {}, - "WindowExecutionId": {}, - "Status": {}, - "StatusDetails": {}, - "StartTime": { - "type": "timestamp" - }, - "EndTime": { - "type": "timestamp" - } - } - } - }, - "NextToken": {} - } - } - }, - "DescribeMaintenanceWindowTargets": { - "input": { - "type": "structure", - "required": [ - "WindowId" - ], - "members": { - "WindowId": {}, - "Filters": { - "shape": "S7v" - }, - "MaxResults": { - "type": "integer" - }, - "NextToken": {} - } - }, - "output": { - "type": "structure", - "members": { - "Targets": { - "type": "list", - "member": { - "type": "structure", - "members": { - "WindowId": {}, - "WindowTargetId": {}, - "ResourceType": {}, - "Targets": { - "shape": "Su" - }, - "OwnerInformation": { - "shape": "S76" - }, - "Name": {}, - "Description": { - "shape": "S2f" - } - } - } - }, - "NextToken": {} - } - } - }, - "DescribeMaintenanceWindowTasks": { - "input": { - "type": "structure", - "required": [ - "WindowId" - ], - "members": { - "WindowId": {}, - "Filters": { - "shape": "S7v" - }, - "MaxResults": { - "type": "integer" - }, - "NextToken": {} - } - }, - "output": { - "type": "structure", - "members": { - "Tasks": { - "type": "list", - "member": { - "type": "structure", - "members": { - "WindowId": {}, - "WindowTaskId": {}, - "TaskArn": {}, - "Type": {}, - "Targets": { - "shape": "Su" - }, - "TaskParameters": { - "shape": "S8t" - }, - "Priority": { - "type": "integer" - }, - "LoggingInfo": { - "shape": "S8z" - }, - "ServiceRoleArn": {}, - "MaxConcurrency": {}, - "MaxErrors": {}, - "Name": {}, - "Description": { - "shape": "S2f" - } - } - } - }, - "NextToken": {} - } - } - }, - "DescribeMaintenanceWindows": { - "input": { - "type": "structure", - "members": { - "Filters": { - "shape": "S7v" - }, - "MaxResults": { - "type": "integer" - }, - "NextToken": {} - } - }, - "output": { - "type": "structure", - "members": { - "WindowIdentities": { - "type": "list", - "member": { - "type": "structure", - "members": { - "WindowId": {}, - "Name": {}, - "Description": { - "shape": "S2f" - }, - "Enabled": { - "type": "boolean" - }, - "Duration": { - "type": "integer" - }, - "Cutoff": { - "type": "integer" - } - } - } - }, - "NextToken": {} - } - } - }, - "DescribeParameters": { - "input": { - "type": "structure", - "members": { - "Filters": { - "type": "list", - "member": { - "type": "structure", - "required": [ - "Key", - "Values" - ], - "members": { - "Key": {}, - "Values": { - "type": "list", - "member": {} - } - } - } - }, - "ParameterFilters": { - "shape": "S9e" - }, - "MaxResults": { - "type": "integer" - }, - "NextToken": {} - } - }, - "output": { - "type": "structure", - "members": { - "Parameters": { - "type": "list", - "member": { - "type": "structure", - "members": { - "Name": {}, - "Type": {}, - "KeyId": {}, - "LastModifiedDate": { - "type": "timestamp" - }, - "LastModifiedUser": {}, - "Description": {}, - "AllowedPattern": {} - } - } - }, - "NextToken": {} - } - } - }, - "DescribePatchBaselines": { - "input": { - "type": "structure", - "members": { - "Filters": { - "shape": "S55" - }, - "MaxResults": { - "type": "integer" - }, - "NextToken": {} - } - }, - "output": { - "type": "structure", - "members": { - "BaselineIdentities": { - "type": "list", - "member": { - "shape": "S9u" - } - }, - "NextToken": {} - } - } - }, - "DescribePatchGroupState": { - "input": { - "type": "structure", - "required": [ - "PatchGroup" - ], - "members": { - "PatchGroup": {} - } - }, - "output": { - "type": "structure", - "members": { - "Instances": { - "type": "integer" - }, - "InstancesWithInstalledPatches": { - "type": "integer" - }, - "InstancesWithInstalledOtherPatches": { - "type": "integer" - }, - "InstancesWithMissingPatches": { - "type": "integer" - }, - "InstancesWithFailedPatches": { - "type": "integer" - }, - "InstancesWithNotApplicablePatches": { - "type": "integer" - } - } - } - }, - "DescribePatchGroups": { - "input": { - "type": "structure", - "members": { - "MaxResults": { - "type": "integer" - }, - "Filters": { - "shape": "S55" - }, - "NextToken": {} - } - }, - "output": { - "type": "structure", - "members": { - "Mappings": { - "type": "list", - "member": { - "type": "structure", - "members": { - "PatchGroup": {}, - "BaselineIdentity": { - "shape": "S9u" - } - } - } - }, - "NextToken": {} - } - } - }, - "GetAutomationExecution": { - "input": { - "type": "structure", - "required": [ - "AutomationExecutionId" - ], - "members": { - "AutomationExecutionId": {} - } - }, - "output": { - "type": "structure", - "members": { - "AutomationExecution": { - "type": "structure", - "members": { - "AutomationExecutionId": {}, - "DocumentName": {}, - "DocumentVersion": {}, - "ExecutionStartTime": { - "type": "timestamp" - }, - "ExecutionEndTime": { - "type": "timestamp" - }, - "AutomationExecutionStatus": {}, - "StepExecutions": { - "type": "list", - "member": { - "type": "structure", - "members": { - "StepName": {}, - "Action": {}, - "ExecutionStartTime": { - "type": "timestamp" - }, - "ExecutionEndTime": { - "type": "timestamp" - }, - "StepStatus": {}, - "ResponseCode": {}, - "Inputs": { - "type": "map", - "key": {}, - "value": {} - }, - "Outputs": { - "shape": "S50" - }, - "Response": {}, - "FailureMessage": {}, - "FailureDetails": { - "type": "structure", - "members": { - "FailureStage": {}, - "FailureType": {}, - "Details": { - "shape": "S50" - } - } - } - } - } - }, - "Parameters": { - "shape": "S50" - }, - "Outputs": { - "shape": "S50" - }, - "FailureMessage": {} - } - } - } - } - }, - "GetCommandInvocation": { - "input": { - "type": "structure", - "required": [ - "CommandId", - "InstanceId" - ], - "members": { - "CommandId": {}, - "InstanceId": {}, - "PluginName": {} - } - }, - "output": { - "type": "structure", - "members": { - "CommandId": {}, - "InstanceId": {}, - "Comment": {}, - "DocumentName": {}, - "PluginName": {}, - "ResponseCode": { - "type": "integer" - }, - "ExecutionStartDateTime": {}, - "ExecutionElapsedTime": {}, - "ExecutionEndDateTime": {}, - "Status": {}, - "StatusDetails": {}, - "StandardOutputContent": {}, - "StandardOutputUrl": {}, - "StandardErrorContent": {}, - "StandardErrorUrl": {} - } - } - }, - "GetDefaultPatchBaseline": { - "input": { - "type": "structure", - "members": { - "OperatingSystem": {} - } - }, - "output": { - "type": "structure", - "members": { - "BaselineId": {}, - "OperatingSystem": {} - } - } - }, - "GetDeployablePatchSnapshotForInstance": { - "input": { - "type": "structure", - "required": [ - "InstanceId", - "SnapshotId" - ], - "members": { - "InstanceId": {}, - "SnapshotId": {} - } - }, - "output": { - "type": "structure", - "members": { - "InstanceId": {}, - "SnapshotId": {}, - "SnapshotDownloadUrl": {}, - "Product": {} - } - } - }, - "GetDocument": { - "input": { - "type": "structure", - "required": [ - "Name" - ], - "members": { - "Name": {}, - "DocumentVersion": {} - } - }, - "output": { - "type": "structure", - "members": { - "Name": {}, - "DocumentVersion": {}, - "Content": {}, - "DocumentType": {} - } - } - }, - "GetInventory": { - "input": { - "type": "structure", - "members": { - "Filters": { - "shape": "Sau" - }, - "ResultAttributes": { - "type": "list", - "member": { - "locationName": "ResultAttribute", - "type": "structure", - "required": [ - "TypeName" - ], - "members": { - "TypeName": {} - } - } - }, - "NextToken": {}, - "MaxResults": { - "type": "integer" - } - } - }, - "output": { - "type": "structure", - "members": { - "Entities": { - "type": "list", - "member": { - "locationName": "Entity", - "type": "structure", - "members": { - "Id": {}, - "Data": { - "type": "map", - "key": {}, - "value": { - "type": "structure", - "required": [ - "TypeName", - "SchemaVersion", - "Content" - ], - "members": { - "TypeName": {}, - "SchemaVersion": {}, - "CaptureTime": {}, - "ContentHash": {}, - "Content": { - "shape": "Sbd" - } - } - } - } - } - } - }, - "NextToken": {} - } - } - }, - "GetInventorySchema": { - "input": { - "type": "structure", - "members": { - "TypeName": {}, - "NextToken": {}, - "MaxResults": { - "type": "integer" - }, - "SubType": { - "type": "boolean" - } - } - }, - "output": { - "type": "structure", - "members": { - "Schemas": { - "type": "list", - "member": { - "type": "structure", - "required": [ - "TypeName", - "Attributes" - ], - "members": { - "TypeName": {}, - "Version": {}, - "Attributes": { - "type": "list", - "member": { - "locationName": "Attribute", - "type": "structure", - "required": [ - "Name", - "DataType" - ], - "members": { - "Name": {}, - "DataType": {} - } - } - } - } - } - }, - "NextToken": {} - } - } - }, - "GetMaintenanceWindow": { - "input": { - "type": "structure", - "required": [ - "WindowId" - ], - "members": { - "WindowId": {} - } - }, - "output": { - "type": "structure", - "members": { - "WindowId": {}, - "Name": {}, - "Description": { - "shape": "S2f" - }, - "Schedule": {}, - "Duration": { - "type": "integer" - }, - "Cutoff": { - "type": "integer" - }, - "AllowUnassociatedTargets": { - "type": "boolean" - }, - "Enabled": { - "type": "boolean" - }, - "CreatedDate": { - "type": "timestamp" - }, - "ModifiedDate": { - "type": "timestamp" - } - } - } - }, - "GetMaintenanceWindowExecution": { - "input": { - "type": "structure", - "required": [ - "WindowExecutionId" - ], - "members": { - "WindowExecutionId": {} - } - }, - "output": { - "type": "structure", - "members": { - "WindowExecutionId": {}, - "TaskIds": { - "type": "list", - "member": {} - }, - "Status": {}, - "StatusDetails": {}, - "StartTime": { - "type": "timestamp" - }, - "EndTime": { - "type": "timestamp" - } - } - } - }, - "GetMaintenanceWindowExecutionTask": { - "input": { - "type": "structure", - "required": [ - "WindowExecutionId", - "TaskId" - ], - "members": { - "WindowExecutionId": {}, - "TaskId": {} - } - }, - "output": { - "type": "structure", - "members": { - "WindowExecutionId": {}, - "TaskExecutionId": {}, - "TaskArn": {}, - "ServiceRole": {}, - "Type": {}, - "TaskParameters": { - "type": "list", - "member": { - "shape": "S8t" - }, - "sensitive": true - }, - "Priority": { - "type": "integer" - }, - "MaxConcurrency": {}, - "MaxErrors": {}, - "Status": {}, - "StatusDetails": {}, - "StartTime": { - "type": "timestamp" - }, - "EndTime": { - "type": "timestamp" - } - } - } - }, - "GetMaintenanceWindowExecutionTaskInvocation": { - "input": { - "type": "structure", - "required": [ - "WindowExecutionId", - "TaskId", - "InvocationId" - ], - "members": { - "WindowExecutionId": {}, - "TaskId": {}, - "InvocationId": {} - } - }, - "output": { - "type": "structure", - "members": { - "WindowExecutionId": {}, - "TaskExecutionId": {}, - "InvocationId": {}, - "ExecutionId": {}, - "TaskType": {}, - "Parameters": { - "shape": "S87" - }, - "Status": {}, - "StatusDetails": {}, - "StartTime": { - "type": "timestamp" - }, - "EndTime": { - "type": "timestamp" - }, - "OwnerInformation": { - "shape": "S76" - }, - "WindowTargetId": {} - } - } - }, - "GetMaintenanceWindowTask": { - "input": { - "type": "structure", - "required": [ - "WindowId", - "WindowTaskId" - ], - "members": { - "WindowId": {}, - "WindowTaskId": {} - } - }, - "output": { - "type": "structure", - "members": { - "WindowId": {}, - "WindowTaskId": {}, - "Targets": { - "shape": "Su" - }, - "TaskArn": {}, - "ServiceRoleArn": {}, - "TaskType": {}, - "TaskParameters": { - "shape": "S8t" - }, - "TaskInvocationParameters": { - "shape": "Sc4" - }, - "Priority": { - "type": "integer" - }, - "MaxConcurrency": {}, - "MaxErrors": {}, - "LoggingInfo": { - "shape": "S8z" - }, - "Name": {}, - "Description": { - "shape": "S2f" - } - } - } - }, - "GetParameter": { - "input": { - "type": "structure", - "required": [ - "Name" - ], - "members": { - "Name": {}, - "WithDecryption": { - "type": "boolean" - } - } - }, - "output": { - "type": "structure", - "members": { - "Parameter": { - "shape": "Scm" - } - } - } - }, - "GetParameterHistory": { - "input": { - "type": "structure", - "required": [ - "Name" - ], - "members": { - "Name": {}, - "WithDecryption": { - "type": "boolean" - }, - "MaxResults": { - "type": "integer" - }, - "NextToken": {} - } - }, - "output": { - "type": "structure", - "members": { - "Parameters": { - "type": "list", - "member": { - "type": "structure", - "members": { - "Name": {}, - "Type": {}, - "KeyId": {}, - "LastModifiedDate": { - "type": "timestamp" - }, - "LastModifiedUser": {}, - "Description": {}, - "Value": {}, - "AllowedPattern": {} - } - } - }, - "NextToken": {} - } - } - }, - "GetParameters": { - "input": { - "type": "structure", - "required": [ - "Names" - ], - "members": { - "Names": { - "shape": "S3r" - }, - "WithDecryption": { - "type": "boolean" - } - } - }, - "output": { - "type": "structure", - "members": { - "Parameters": { - "shape": "Scu" - }, - "InvalidParameters": { - "shape": "S3r" - } - } - } - }, - "GetParametersByPath": { - "input": { - "type": "structure", - "required": [ - "Path" - ], - "members": { - "Path": {}, - "Recursive": { - "type": "boolean" - }, - "ParameterFilters": { - "shape": "S9e" - }, - "WithDecryption": { - "type": "boolean" - }, - "MaxResults": { - "type": "integer" - }, - "NextToken": {} - } - }, - "output": { - "type": "structure", - "members": { - "Parameters": { - "shape": "Scu" - }, - "NextToken": {} - } - } - }, - "GetPatchBaseline": { - "input": { - "type": "structure", - "required": [ - "BaselineId" - ], - "members": { - "BaselineId": {} - } - }, - "output": { - "type": "structure", - "members": { - "BaselineId": {}, - "Name": {}, - "OperatingSystem": {}, - "GlobalFilters": { - "shape": "S2q" - }, - "ApprovalRules": { - "shape": "S2w" - }, - "ApprovedPatches": { - "shape": "S31" - }, - "ApprovedPatchesComplianceLevel": {}, - "RejectedPatches": { - "shape": "S31" - }, - "PatchGroups": { - "type": "list", - "member": {} - }, - "CreatedDate": { - "type": "timestamp" - }, - "ModifiedDate": { - "type": "timestamp" - }, - "Description": {} - } - } - }, - "GetPatchBaselineForPatchGroup": { - "input": { - "type": "structure", - "required": [ - "PatchGroup" - ], - "members": { - "PatchGroup": {}, - "OperatingSystem": {} - } - }, - "output": { - "type": "structure", - "members": { - "BaselineId": {}, - "PatchGroup": {}, - "OperatingSystem": {} - } - } - }, - "ListAssociationVersions": { - "input": { - "type": "structure", - "required": [ - "AssociationId" - ], - "members": { - "AssociationId": {}, - "MaxResults": { - "type": "integer" - }, - "NextToken": {} - } - }, - "output": { - "type": "structure", - "members": { - "AssociationVersions": { - "type": "list", - "member": { - "type": "structure", - "members": { - "AssociationId": {}, - "AssociationVersion": {}, - "CreatedDate": { - "type": "timestamp" - }, - "Name": {}, - "DocumentVersion": {}, - "Parameters": { - "shape": "Sq" - }, - "Targets": { - "shape": "Su" - }, - "ScheduleExpression": {}, - "OutputLocation": { - "shape": "S10" - }, - "AssociationName": {} - } - } - }, - "NextToken": {} - } - } - }, - "ListAssociations": { - "input": { - "type": "structure", - "members": { - "AssociationFilterList": { - "type": "list", - "member": { - "locationName": "AssociationFilter", - "type": "structure", - "required": [ - "key", - "value" - ], - "members": { - "key": {}, - "value": {} - } - } - }, - "MaxResults": { - "type": "integer" - }, - "NextToken": {} - } - }, - "output": { - "type": "structure", - "members": { - "Associations": { - "type": "list", - "member": { - "locationName": "Association", - "type": "structure", - "members": { - "Name": {}, - "InstanceId": {}, - "AssociationId": {}, - "AssociationVersion": {}, - "DocumentVersion": {}, - "Targets": { - "shape": "Su" - }, - "LastExecutionDate": { - "type": "timestamp" - }, - "Overview": { - "shape": "S1e" - }, - "ScheduleExpression": {}, - "AssociationName": {} - } - } - }, - "NextToken": {} - } - } - }, - "ListCommandInvocations": { - "input": { - "type": "structure", - "members": { - "CommandId": {}, - "InstanceId": {}, - "MaxResults": { - "type": "integer" - }, - "NextToken": {}, - "Filters": { - "shape": "Sdh" - }, - "Details": { - "type": "boolean" - } - } - }, - "output": { - "type": "structure", - "members": { - "CommandInvocations": { - "type": "list", - "member": { - "type": "structure", - "members": { - "CommandId": {}, - "InstanceId": {}, - "InstanceName": {}, - "Comment": {}, - "DocumentName": {}, - "RequestedDateTime": { - "type": "timestamp" - }, - "Status": {}, - "StatusDetails": {}, - "TraceOutput": {}, - "StandardOutputUrl": {}, - "StandardErrorUrl": {}, - "CommandPlugins": { - "type": "list", - "member": { - "type": "structure", - "members": { - "Name": {}, - "Status": {}, - "StatusDetails": {}, - "ResponseCode": { - "type": "integer" - }, - "ResponseStartDateTime": { - "type": "timestamp" - }, - "ResponseFinishDateTime": { - "type": "timestamp" - }, - "Output": {}, - "StandardOutputUrl": {}, - "StandardErrorUrl": {}, - "OutputS3Region": {}, - "OutputS3BucketName": {}, - "OutputS3KeyPrefix": {} - } - } - }, - "ServiceRole": {}, - "NotificationConfig": { - "shape": "Sc6" - } - } - } - }, - "NextToken": {} - } - } - }, - "ListCommands": { - "input": { - "type": "structure", - "members": { - "CommandId": {}, - "InstanceId": {}, - "MaxResults": { - "type": "integer" - }, - "NextToken": {}, - "Filters": { - "shape": "Sdh" - } - } - }, - "output": { - "type": "structure", - "members": { - "Commands": { - "type": "list", - "member": { - "shape": "Sdx" - } - }, - "NextToken": {} - } - } - }, - "ListComplianceItems": { - "input": { - "type": "structure", - "members": { - "Filters": { - "shape": "Se3" - }, - "ResourceIds": { - "type": "list", - "member": {} - }, - "ResourceTypes": { - "type": "list", - "member": {} - }, - "NextToken": {}, - "MaxResults": { - "type": "integer" - } - } - }, - "output": { - "type": "structure", - "members": { - "ComplianceItems": { - "type": "list", - "member": { - "locationName": "Item", - "type": "structure", - "members": { - "ComplianceType": {}, - "ResourceType": {}, - "ResourceId": {}, - "Id": {}, - "Title": {}, - "Status": {}, - "Severity": {}, - "ExecutionSummary": { - "shape": "Sel" - }, - "Details": { - "shape": "Seo" - } - } - } - }, - "NextToken": {} - } - } - }, - "ListComplianceSummaries": { - "input": { - "type": "structure", - "members": { - "Filters": { - "shape": "Se3" - }, - "NextToken": {}, - "MaxResults": { - "type": "integer" - } - } - }, - "output": { - "type": "structure", - "members": { - "ComplianceSummaryItems": { - "type": "list", - "member": { - "locationName": "Item", - "type": "structure", - "members": { - "ComplianceType": {}, - "CompliantSummary": { - "shape": "Set" - }, - "NonCompliantSummary": { - "shape": "Sew" - } - } - } - }, - "NextToken": {} - } - } - }, - "ListDocumentVersions": { - "input": { - "type": "structure", - "required": [ - "Name" - ], - "members": { - "Name": {}, - "MaxResults": { - "type": "integer" - }, - "NextToken": {} - } - }, - "output": { - "type": "structure", - "members": { - "DocumentVersions": { - "type": "list", - "member": { - "type": "structure", - "members": { - "Name": {}, - "DocumentVersion": {}, - "CreatedDate": { - "type": "timestamp" - }, - "IsDefaultVersion": { - "type": "boolean" - } - } - } - }, - "NextToken": {} - } - } - }, - "ListDocuments": { - "input": { - "type": "structure", - "members": { - "DocumentFilterList": { - "type": "list", - "member": { - "locationName": "DocumentFilter", - "type": "structure", - "required": [ - "key", - "value" - ], - "members": { - "key": {}, - "value": {} - } - } - }, - "Filters": { - "type": "list", - "member": { - "type": "structure", - "members": { - "Key": {}, - "Values": { - "type": "list", - "member": {} - } - } - } - }, - "MaxResults": { - "type": "integer" - }, - "NextToken": {} - } - }, - "output": { - "type": "structure", - "members": { - "DocumentIdentifiers": { - "type": "list", - "member": { - "locationName": "DocumentIdentifier", - "type": "structure", - "members": { - "Name": {}, - "Owner": {}, - "PlatformTypes": { - "shape": "S2a" - }, - "DocumentVersion": {}, - "DocumentType": {}, - "SchemaVersion": {}, - "Tags": { - "shape": "S4" - } - } - } - }, - "NextToken": {} - } - } - }, - "ListInventoryEntries": { - "input": { - "type": "structure", - "required": [ - "InstanceId", - "TypeName" - ], - "members": { - "InstanceId": {}, - "TypeName": {}, - "Filters": { - "shape": "Sau" - }, - "NextToken": {}, - "MaxResults": { - "type": "integer" - } - } - }, - "output": { - "type": "structure", - "members": { - "TypeName": {}, - "InstanceId": {}, - "SchemaVersion": {}, - "CaptureTime": {}, - "Entries": { - "shape": "Sbd" - }, - "NextToken": {} - } - } - }, - "ListResourceComplianceSummaries": { - "input": { - "type": "structure", - "members": { - "Filters": { - "shape": "Se3" - }, - "NextToken": {}, - "MaxResults": { - "type": "integer" - } - } - }, - "output": { - "type": "structure", - "members": { - "ResourceComplianceSummaryItems": { - "type": "list", - "member": { - "locationName": "Item", - "type": "structure", - "members": { - "ComplianceType": {}, - "ResourceType": {}, - "ResourceId": {}, - "Status": {}, - "OverallSeverity": {}, - "ExecutionSummary": { - "shape": "Sel" - }, - "CompliantSummary": { - "shape": "Set" - }, - "NonCompliantSummary": { - "shape": "Sew" - } - } - } - }, - "NextToken": {} - } - } - }, - "ListResourceDataSync": { - "input": { - "type": "structure", - "members": { - "NextToken": {}, - "MaxResults": { - "type": "integer" - } - } - }, - "output": { - "type": "structure", - "members": { - "ResourceDataSyncItems": { - "type": "list", - "member": { - "type": "structure", - "members": { - "SyncName": {}, - "S3Destination": { - "shape": "S38" - }, - "LastSyncTime": { - "type": "timestamp" - }, - "LastSuccessfulSyncTime": { - "type": "timestamp" - }, - "LastStatus": {}, - "SyncCreatedTime": { - "type": "timestamp" - } - } - } - }, - "NextToken": {} - } - } - }, - "ListTagsForResource": { - "input": { - "type": "structure", - "required": [ - "ResourceType", - "ResourceId" - ], - "members": { - "ResourceType": {}, - "ResourceId": {} - } - }, - "output": { - "type": "structure", - "members": { - "TagList": { - "shape": "S4" - } - } - } - }, - "ModifyDocumentPermission": { - "input": { - "type": "structure", - "required": [ - "Name", - "PermissionType" - ], - "members": { - "Name": {}, - "PermissionType": {}, - "AccountIdsToAdd": { - "shape": "S5u" - }, - "AccountIdsToRemove": { - "shape": "S5u" - } - } - }, - "output": { - "type": "structure", - "members": {} - } - }, - "PutComplianceItems": { - "input": { - "type": "structure", - "required": [ - "ResourceId", - "ResourceType", - "ComplianceType", - "ExecutionSummary", - "Items" - ], - "members": { - "ResourceId": {}, - "ResourceType": {}, - "ComplianceType": {}, - "ExecutionSummary": { - "shape": "Sel" - }, - "Items": { - "type": "list", - "member": { - "type": "structure", - "required": [ - "Severity", - "Status" - ], - "members": { - "Id": {}, - "Title": {}, - "Severity": {}, - "Status": {}, - "Details": { - "shape": "Seo" - } - } - } - }, - "ItemContentHash": {} - } - }, - "output": { - "type": "structure", - "members": {} - } - }, - "PutInventory": { - "input": { - "type": "structure", - "required": [ - "InstanceId", - "Items" - ], - "members": { - "InstanceId": {}, - "Items": { - "type": "list", - "member": { - "locationName": "Item", - "type": "structure", - "required": [ - "TypeName", - "SchemaVersion", - "CaptureTime" - ], - "members": { - "TypeName": {}, - "SchemaVersion": {}, - "CaptureTime": {}, - "ContentHash": {}, - "Content": { - "shape": "Sbd" - }, - "Context": { - "type": "map", - "key": {}, - "value": {} - } - } - } - } - } - }, - "output": { - "type": "structure", - "members": {} - } - }, - "PutParameter": { - "input": { - "type": "structure", - "required": [ - "Name", - "Value", - "Type" - ], - "members": { - "Name": {}, - "Description": {}, - "Value": {}, - "Type": {}, - "KeyId": {}, - "Overwrite": { - "type": "boolean" - }, - "AllowedPattern": {} - } - }, - "output": { - "type": "structure", - "members": {} - } - }, - "RegisterDefaultPatchBaseline": { - "input": { - "type": "structure", - "required": [ - "BaselineId" - ], - "members": { - "BaselineId": {} - } - }, - "output": { - "type": "structure", - "members": { - "BaselineId": {} - } - } - }, - "RegisterPatchBaselineForPatchGroup": { - "input": { - "type": "structure", - "required": [ - "BaselineId", - "PatchGroup" - ], - "members": { - "BaselineId": {}, - "PatchGroup": {} - } - }, - "output": { - "type": "structure", - "members": { - "BaselineId": {}, - "PatchGroup": {} - } - } - }, - "RegisterTargetWithMaintenanceWindow": { - "input": { - "type": "structure", - "required": [ - "WindowId", - "ResourceType", - "Targets" - ], - "members": { - "WindowId": {}, - "ResourceType": {}, - "Targets": { - "shape": "Su" - }, - "OwnerInformation": { - "shape": "S76" - }, - "Name": {}, - "Description": { - "shape": "S2f" - }, - "ClientToken": { - "idempotencyToken": true - } - } - }, - "output": { - "type": "structure", - "members": { - "WindowTargetId": {} - } - } - }, - "RegisterTaskWithMaintenanceWindow": { - "input": { - "type": "structure", - "required": [ - "WindowId", - "Targets", - "TaskArn", - "ServiceRoleArn", - "TaskType", - "MaxConcurrency", - "MaxErrors" - ], - "members": { - "WindowId": {}, - "Targets": { - "shape": "Su" - }, - "TaskArn": {}, - "ServiceRoleArn": {}, - "TaskType": {}, - "TaskParameters": { - "shape": "S8t" - }, - "TaskInvocationParameters": { - "shape": "Sc4" - }, - "Priority": { - "type": "integer" - }, - "MaxConcurrency": {}, - "MaxErrors": {}, - "LoggingInfo": { - "shape": "S8z" - }, - "Name": {}, - "Description": { - "shape": "S2f" - }, - "ClientToken": { - "idempotencyToken": true - } - } - }, - "output": { - "type": "structure", - "members": { - "WindowTaskId": {} - } - } - }, - "RemoveTagsFromResource": { - "input": { - "type": "structure", - "required": [ - "ResourceType", - "ResourceId", - "TagKeys" - ], - "members": { - "ResourceType": {}, - "ResourceId": {}, - "TagKeys": { - "type": "list", - "member": {} - } - } - }, - "output": { - "type": "structure", - "members": {} - } - }, - "SendAutomationSignal": { - "input": { - "type": "structure", - "required": [ - "AutomationExecutionId", - "SignalType" - ], - "members": { - "AutomationExecutionId": {}, - "SignalType": {}, - "Payload": { - "shape": "S50" - } - } - }, - "output": { - "type": "structure", - "members": {} - } - }, - "SendCommand": { - "input": { - "type": "structure", - "required": [ - "DocumentName" - ], - "members": { - "InstanceIds": { - "shape": "Sb" - }, - "Targets": { - "shape": "Su" - }, - "DocumentName": {}, - "DocumentHash": {}, - "DocumentHashType": {}, - "TimeoutSeconds": { - "type": "integer" - }, - "Comment": {}, - "Parameters": { - "shape": "Sq" - }, - "OutputS3Region": {}, - "OutputS3BucketName": {}, - "OutputS3KeyPrefix": {}, - "MaxConcurrency": {}, - "MaxErrors": {}, - "ServiceRoleArn": {}, - "NotificationConfig": { - "shape": "Sc6" - } - } - }, - "output": { - "type": "structure", - "members": { - "Command": { - "shape": "Sdx" - } - } - } - }, - "StartAutomationExecution": { - "input": { - "type": "structure", - "required": [ - "DocumentName" - ], - "members": { - "DocumentName": {}, - "DocumentVersion": {}, - "Parameters": { - "shape": "S50" - }, - "ClientToken": {} - } - }, - "output": { - "type": "structure", - "members": { - "AutomationExecutionId": {} - } - } - }, - "StopAutomationExecution": { - "input": { - "type": "structure", - "required": [ - "AutomationExecutionId" - ], - "members": { - "AutomationExecutionId": {} - } - }, - "output": { - "type": "structure", - "members": {} - } - }, - "UpdateAssociation": { - "input": { - "type": "structure", - "required": [ - "AssociationId" - ], - "members": { - "AssociationId": {}, - "Parameters": { - "shape": "Sq" - }, - "DocumentVersion": {}, - "ScheduleExpression": {}, - "OutputLocation": { - "shape": "S10" - }, - "Name": {}, - "Targets": { - "shape": "Su" - }, - "AssociationName": {}, - "AssociationVersion": {} - } - }, - "output": { - "type": "structure", - "members": { - "AssociationDescription": { - "shape": "S17" - } - } - } - }, - "UpdateAssociationStatus": { - "input": { - "type": "structure", - "required": [ - "Name", - "InstanceId", - "AssociationStatus" - ], - "members": { - "Name": {}, - "InstanceId": {}, - "AssociationStatus": { - "shape": "S1a" - } - } - }, - "output": { - "type": "structure", - "members": { - "AssociationDescription": { - "shape": "S17" - } - } - } - }, - "UpdateDocument": { - "input": { - "type": "structure", - "required": [ - "Content", - "Name" - ], - "members": { - "Content": {}, - "Name": {}, - "DocumentVersion": {} - } - }, - "output": { - "type": "structure", - "members": { - "DocumentDescription": { - "shape": "S1w" - } - } - } - }, - "UpdateDocumentDefaultVersion": { - "input": { - "type": "structure", - "required": [ - "Name", - "DocumentVersion" - ], - "members": { - "Name": {}, - "DocumentVersion": {} - } - }, - "output": { - "type": "structure", - "members": { - "Description": { - "type": "structure", - "members": { - "Name": {}, - "DefaultVersion": {} - } - } - } - } - }, - "UpdateMaintenanceWindow": { - "input": { - "type": "structure", - "required": [ - "WindowId" - ], - "members": { - "WindowId": {}, - "Name": {}, - "Description": { - "shape": "S2f" - }, - "Schedule": {}, - "Duration": { - "type": "integer" - }, - "Cutoff": { - "type": "integer" - }, - "AllowUnassociatedTargets": { - "type": "boolean" - }, - "Enabled": { - "type": "boolean" - }, - "Replace": { - "type": "boolean" - } - } - }, - "output": { - "type": "structure", - "members": { - "WindowId": {}, - "Name": {}, - "Description": { - "shape": "S2f" - }, - "Schedule": {}, - "Duration": { - "type": "integer" - }, - "Cutoff": { - "type": "integer" - }, - "AllowUnassociatedTargets": { - "type": "boolean" - }, - "Enabled": { - "type": "boolean" - } - } - } - }, - "UpdateMaintenanceWindowTarget": { - "input": { - "type": "structure", - "required": [ - "WindowId", - "WindowTargetId" - ], - "members": { - "WindowId": {}, - "WindowTargetId": {}, - "Targets": { - "shape": "Su" - }, - "OwnerInformation": { - "shape": "S76" - }, - "Name": {}, - "Description": { - "shape": "S2f" - }, - "Replace": { - "type": "boolean" - } - } - }, - "output": { - "type": "structure", - "members": { - "WindowId": {}, - "WindowTargetId": {}, - "Targets": { - "shape": "Su" - }, - "OwnerInformation": { - "shape": "S76" - }, - "Name": {}, - "Description": { - "shape": "S2f" - } - } - } - }, - "UpdateMaintenanceWindowTask": { - "input": { - "type": "structure", - "required": [ - "WindowId", - "WindowTaskId" - ], - "members": { - "WindowId": {}, - "WindowTaskId": {}, - "Targets": { - "shape": "Su" - }, - "TaskArn": {}, - "ServiceRoleArn": {}, - "TaskParameters": { - "shape": "S8t" - }, - "TaskInvocationParameters": { - "shape": "Sc4" - }, - "Priority": { - "type": "integer" - }, - "MaxConcurrency": {}, - "MaxErrors": {}, - "LoggingInfo": { - "shape": "S8z" - }, - "Name": {}, - "Description": { - "shape": "S2f" - }, - "Replace": { - "type": "boolean" - } - } - }, - "output": { - "type": "structure", - "members": { - "WindowId": {}, - "WindowTaskId": {}, - "Targets": { - "shape": "Su" - }, - "TaskArn": {}, - "ServiceRoleArn": {}, - "TaskParameters": { - "shape": "S8t" - }, - "TaskInvocationParameters": { - "shape": "Sc4" - }, - "Priority": { - "type": "integer" - }, - "MaxConcurrency": {}, - "MaxErrors": {}, - "LoggingInfo": { - "shape": "S8z" - }, - "Name": {}, - "Description": { - "shape": "S2f" - } - } - } - }, - "UpdateManagedInstanceRole": { - "input": { - "type": "structure", - "required": [ - "InstanceId", - "IamRole" - ], - "members": { - "InstanceId": {}, - "IamRole": {} - } - }, - "output": { - "type": "structure", - "members": {} - } - }, - "UpdatePatchBaseline": { - "input": { - "type": "structure", - "required": [ - "BaselineId" - ], - "members": { - "BaselineId": {}, - "Name": {}, - "GlobalFilters": { - "shape": "S2q" - }, - "ApprovalRules": { - "shape": "S2w" - }, - "ApprovedPatches": { - "shape": "S31" - }, - "ApprovedPatchesComplianceLevel": {}, - "RejectedPatches": { - "shape": "S31" - }, - "Description": {} - } - }, - "output": { - "type": "structure", - "members": { - "BaselineId": {}, - "Name": {}, - "OperatingSystem": {}, - "GlobalFilters": { - "shape": "S2q" - }, - "ApprovalRules": { - "shape": "S2w" - }, - "ApprovedPatches": { - "shape": "S31" - }, - "ApprovedPatchesComplianceLevel": {}, - "RejectedPatches": { - "shape": "S31" - }, - "CreatedDate": { - "type": "timestamp" - }, - "ModifiedDate": { - "type": "timestamp" - }, - "Description": {} - } - } - } - }, - "shapes": { - "S4": { - "type": "list", - "member": { - "type": "structure", - "required": [ - "Key", - "Value" - ], - "members": { - "Key": {}, - "Value": {} - } - } - }, - "Sb": { - "type": "list", - "member": {} - }, - "Sq": { - "type": "map", - "key": {}, - "value": { - "type": "list", - "member": {} - } - }, - "Su": { - "type": "list", - "member": { - "type": "structure", - "members": { - "Key": {}, - "Values": { - "type": "list", - "member": {} - } - } - } - }, - "S10": { - "type": "structure", - "members": { - "S3Location": { - "type": "structure", - "members": { - "OutputS3Region": {}, - "OutputS3BucketName": {}, - "OutputS3KeyPrefix": {} - } - } - } - }, - "S17": { - "type": "structure", - "members": { - "Name": {}, - "InstanceId": {}, - "AssociationVersion": {}, - "Date": { - "type": "timestamp" - }, - "LastUpdateAssociationDate": { - "type": "timestamp" - }, - "Status": { - "shape": "S1a" - }, - "Overview": { - "shape": "S1e" - }, - "DocumentVersion": {}, - "Parameters": { - "shape": "Sq" - }, - "AssociationId": {}, - "Targets": { - "shape": "Su" - }, - "ScheduleExpression": {}, - "OutputLocation": { - "shape": "S10" - }, - "LastExecutionDate": { - "type": "timestamp" - }, - "LastSuccessfulExecutionDate": { - "type": "timestamp" - }, - "AssociationName": {} - } - }, - "S1a": { - "type": "structure", - "required": [ - "Date", - "Name", - "Message" - ], - "members": { - "Date": { - "type": "timestamp" - }, - "Name": {}, - "Message": {}, - "AdditionalInfo": {} - } - }, - "S1e": { - "type": "structure", - "members": { - "Status": {}, - "DetailedStatus": {}, - "AssociationStatusAggregatedCount": { - "type": "map", - "key": {}, - "value": { - "type": "integer" - } - } - } - }, - "S1l": { - "type": "structure", - "required": [ - "Name" - ], - "members": { - "Name": {}, - "InstanceId": {}, - "Parameters": { - "shape": "Sq" - }, - "DocumentVersion": {}, - "Targets": { - "shape": "Su" - }, - "ScheduleExpression": {}, - "OutputLocation": { - "shape": "S10" - }, - "AssociationName": {} - } - }, - "S1w": { - "type": "structure", - "members": { - "Sha1": {}, - "Hash": {}, - "HashType": {}, - "Name": {}, - "Owner": {}, - "CreatedDate": { - "type": "timestamp" - }, - "Status": {}, - "DocumentVersion": {}, - "Description": {}, - "Parameters": { - "type": "list", - "member": { - "locationName": "DocumentParameter", - "type": "structure", - "members": { - "Name": {}, - "Type": {}, - "Description": {}, - "DefaultValue": {} - } - } - }, - "PlatformTypes": { - "shape": "S2a" - }, - "DocumentType": {}, - "SchemaVersion": {}, - "LatestVersion": {}, - "DefaultVersion": {}, - "Tags": { - "shape": "S4" - } - } - }, - "S2a": { - "type": "list", - "member": { - "locationName": "PlatformType" - } - }, - "S2f": { - "type": "string", - "sensitive": true - }, - "S2q": { - "type": "structure", - "required": [ - "PatchFilters" - ], - "members": { - "PatchFilters": { - "type": "list", - "member": { - "type": "structure", - "required": [ - "Key", - "Values" - ], - "members": { - "Key": {}, - "Values": { - "type": "list", - "member": {} - } - } - } - } - } - }, - "S2w": { - "type": "structure", - "required": [ - "PatchRules" - ], - "members": { - "PatchRules": { - "type": "list", - "member": { - "type": "structure", - "required": [ - "PatchFilterGroup", - "ApproveAfterDays" - ], - "members": { - "PatchFilterGroup": { - "shape": "S2q" - }, - "ComplianceLevel": {}, - "ApproveAfterDays": { - "type": "integer" - } - } - } - } - } - }, - "S31": { - "type": "list", - "member": {} - }, - "S38": { - "type": "structure", - "required": [ - "BucketName", - "SyncFormat", - "Region" - ], - "members": { - "BucketName": {}, - "Prefix": {}, - "SyncFormat": {}, - "Region": {}, - "AWSKMSKeyARN": {} - } - }, - "S3r": { - "type": "list", - "member": {} - }, - "S50": { - "type": "map", - "key": {}, - "value": { - "type": "list", - "member": {} - } - }, - "S55": { - "type": "list", - "member": { - "type": "structure", - "members": { - "Key": {}, - "Values": { - "type": "list", - "member": {} - } - } - } - }, - "S5d": { - "type": "structure", - "members": { - "Id": {}, - "ReleaseDate": { - "type": "timestamp" - }, - "Title": {}, - "Description": {}, - "ContentUrl": {}, - "Vendor": {}, - "ProductFamily": {}, - "Product": {}, - "Classification": {}, - "MsrcSeverity": {}, - "KbNumber": {}, - "MsrcNumber": {}, - "Language": {} - } - }, - "S5u": { - "type": "list", - "member": { - "locationName": "AccountId" - } - }, - "S6k": { - "type": "list", - "member": { - "locationName": "InstanceInformationFilterValue" - } - }, - "S74": { - "type": "structure", - "required": [ - "InstanceId", - "PatchGroup", - "BaselineId", - "OperationStartTime", - "OperationEndTime", - "Operation" - ], - "members": { - "InstanceId": {}, - "PatchGroup": {}, - "BaselineId": {}, - "SnapshotId": {}, - "OwnerInformation": { - "shape": "S76" - }, - "InstalledCount": { - "type": "integer" - }, - "InstalledOtherCount": { - "type": "integer" - }, - "MissingCount": { - "type": "integer" - }, - "FailedCount": { - "type": "integer" - }, - "NotApplicableCount": { - "type": "integer" - }, - "OperationStartTime": { - "type": "timestamp" - }, - "OperationEndTime": { - "type": "timestamp" - }, - "Operation": {} - } - }, - "S76": { - "type": "string", - "sensitive": true - }, - "S7v": { - "type": "list", - "member": { - "type": "structure", - "members": { - "Key": {}, - "Values": { - "type": "list", - "member": {} - } - } - } - }, - "S87": { - "type": "string", - "sensitive": true - }, - "S8t": { - "type": "map", - "key": {}, - "value": { - "type": "structure", - "members": { - "Values": { - "type": "list", - "member": { - "type": "string", - "sensitive": true - }, - "sensitive": true - } - }, - "sensitive": true - }, - "sensitive": true - }, - "S8z": { - "type": "structure", - "required": [ - "S3BucketName", - "S3Region" - ], - "members": { - "S3BucketName": {}, - "S3KeyPrefix": {}, - "S3Region": {} - } - }, - "S9e": { - "type": "list", - "member": { - "type": "structure", - "required": [ - "Key" - ], - "members": { - "Key": {}, - "Option": {}, - "Values": { - "type": "list", - "member": {} - } - } - } - }, - "S9u": { - "type": "structure", - "members": { - "BaselineId": {}, - "BaselineName": {}, - "OperatingSystem": {}, - "BaselineDescription": {}, - "DefaultBaseline": { - "type": "boolean" - } - } - }, - "Sau": { - "type": "list", - "member": { - "locationName": "InventoryFilter", - "type": "structure", - "required": [ - "Key", - "Values" - ], - "members": { - "Key": {}, - "Values": { - "type": "list", - "member": { - "locationName": "FilterValue" - } - }, - "Type": {} - } - } - }, - "Sbd": { - "type": "list", - "member": { - "type": "map", - "key": {}, - "value": {} - } - }, - "Sc4": { - "type": "structure", - "members": { - "RunCommand": { - "type": "structure", - "members": { - "Comment": {}, - "DocumentHash": {}, - "DocumentHashType": {}, - "NotificationConfig": { - "shape": "Sc6" - }, - "OutputS3BucketName": {}, - "OutputS3KeyPrefix": {}, - "Parameters": { - "shape": "Sq" - }, - "ServiceRoleArn": {}, - "TimeoutSeconds": { - "type": "integer" - } - } - }, - "Automation": { - "type": "structure", - "members": { - "DocumentVersion": {}, - "Parameters": { - "shape": "S50" - } - } - }, - "StepFunctions": { - "type": "structure", - "members": { - "Input": { - "type": "string", - "sensitive": true - }, - "Name": {} - } - }, - "Lambda": { - "type": "structure", - "members": { - "ClientContext": {}, - "Qualifier": {}, - "Payload": { - "type": "blob", - "sensitive": true - } - } - } - } - }, - "Sc6": { - "type": "structure", - "members": { - "NotificationArn": {}, - "NotificationEvents": { - "type": "list", - "member": {} - }, - "NotificationType": {} - } - }, - "Scm": { - "type": "structure", - "members": { - "Name": {}, - "Type": {}, - "Value": {} - } - }, - "Scu": { - "type": "list", - "member": { - "shape": "Scm" - } - }, - "Sdh": { - "type": "list", - "member": { - "type": "structure", - "required": [ - "key", - "value" - ], - "members": { - "key": {}, - "value": {} - } - } - }, - "Sdx": { - "type": "structure", - "members": { - "CommandId": {}, - "DocumentName": {}, - "Comment": {}, - "ExpiresAfter": { - "type": "timestamp" - }, - "Parameters": { - "shape": "Sq" - }, - "InstanceIds": { - "shape": "Sb" - }, - "Targets": { - "shape": "Su" - }, - "RequestedDateTime": { - "type": "timestamp" - }, - "Status": {}, - "StatusDetails": {}, - "OutputS3Region": {}, - "OutputS3BucketName": {}, - "OutputS3KeyPrefix": {}, - "MaxConcurrency": {}, - "MaxErrors": {}, - "TargetCount": { - "type": "integer" - }, - "CompletedCount": { - "type": "integer" - }, - "ErrorCount": { - "type": "integer" - }, - "ServiceRole": {}, - "NotificationConfig": { - "shape": "Sc6" - } - } - }, - "Se3": { - "type": "list", - "member": { - "locationName": "ComplianceFilter", - "type": "structure", - "members": { - "Key": {}, - "Values": { - "type": "list", - "member": { - "locationName": "FilterValue" - } - }, - "Type": {} - } - } - }, - "Sel": { - "type": "structure", - "required": [ - "ExecutionTime" - ], - "members": { - "ExecutionTime": { - "type": "timestamp" - }, - "ExecutionId": {}, - "ExecutionType": {} - } - }, - "Seo": { - "type": "map", - "key": {}, - "value": {} - }, - "Set": { - "type": "structure", - "members": { - "CompliantCount": { - "type": "integer" - }, - "SeveritySummary": { - "shape": "Sev" - } - } - }, - "Sev": { - "type": "structure", - "members": { - "CriticalCount": { - "type": "integer" - }, - "HighCount": { - "type": "integer" - }, - "MediumCount": { - "type": "integer" - }, - "LowCount": { - "type": "integer" - }, - "InformationalCount": { - "type": "integer" - }, - "UnspecifiedCount": { - "type": "integer" - } - } - }, - "Sew": { - "type": "structure", - "members": { - "NonCompliantCount": { - "type": "integer" - }, - "SeveritySummary": { - "shape": "Sev" - } - } - } - } -} \ No newline at end of file diff --git a/workshops/monte-carlo-on-ec2-spot-fleet/src/web/node_modules/aws-sdk/apis/ssm-2014-11-06.paginators.json b/workshops/monte-carlo-on-ec2-spot-fleet/src/web/node_modules/aws-sdk/apis/ssm-2014-11-06.paginators.json deleted file mode 100644 index dedcc0b9..00000000 --- a/workshops/monte-carlo-on-ec2-spot-fleet/src/web/node_modules/aws-sdk/apis/ssm-2014-11-06.paginators.json +++ /dev/null @@ -1,55 +0,0 @@ -{ - "pagination": { - "DescribeActivations": { - "input_token": "NextToken", - "limit_key": "MaxResults", - "output_token": "NextToken", - "result_key": "ActivationList" - }, - "DescribeInstanceInformation": { - "input_token": "NextToken", - "limit_key": "MaxResults", - "output_token": "NextToken", - "result_key": "InstanceInformationList" - }, - "DescribeParameters": { - "input_token": "NextToken", - "limit_key": "MaxResults", - "output_token": "NextToken" - }, - "GetParameterHistory": { - "input_token": "NextToken", - "limit_key": "MaxResults", - "output_token": "NextToken" - }, - "GetParametersByPath": { - "input_token": "NextToken", - "limit_key": "MaxResults", - "output_token": "NextToken" - }, - "ListAssociations": { - "input_token": "NextToken", - "limit_key": "MaxResults", - "output_token": "NextToken", - "result_key": "Associations" - }, - "ListCommandInvocations": { - "input_token": "NextToken", - "limit_key": "MaxResults", - "output_token": "NextToken", - "result_key": "CommandInvocations" - }, - "ListCommands": { - "input_token": "NextToken", - "limit_key": "MaxResults", - "output_token": "NextToken", - "result_key": "Commands" - }, - "ListDocuments": { - "input_token": "NextToken", - "limit_key": "MaxResults", - "output_token": "NextToken", - "result_key": "DocumentIdentifiers" - } - } -} \ No newline at end of file diff --git a/workshops/monte-carlo-on-ec2-spot-fleet/src/web/node_modules/aws-sdk/apis/states-2016-11-23.min.json b/workshops/monte-carlo-on-ec2-spot-fleet/src/web/node_modules/aws-sdk/apis/states-2016-11-23.min.json deleted file mode 100644 index 33c0bf17..00000000 --- a/workshops/monte-carlo-on-ec2-spot-fleet/src/web/node_modules/aws-sdk/apis/states-2016-11-23.min.json +++ /dev/null @@ -1,638 +0,0 @@ -{ - "version": "2.0", - "metadata": { - "apiVersion": "2016-11-23", - "endpointPrefix": "states", - "jsonVersion": "1.0", - "protocol": "json", - "serviceAbbreviation": "AWS SFN", - "serviceFullName": "AWS Step Functions", - "signatureVersion": "v4", - "targetPrefix": "AWSStepFunctions", - "uid": "states-2016-11-23" - }, - "operations": { - "CreateActivity": { - "input": { - "type": "structure", - "required": [ - "name" - ], - "members": { - "name": {} - } - }, - "output": { - "type": "structure", - "required": [ - "activityArn", - "creationDate" - ], - "members": { - "activityArn": {}, - "creationDate": { - "type": "timestamp" - } - } - }, - "idempotent": true - }, - "CreateStateMachine": { - "input": { - "type": "structure", - "required": [ - "name", - "definition", - "roleArn" - ], - "members": { - "name": {}, - "definition": {}, - "roleArn": {} - } - }, - "output": { - "type": "structure", - "required": [ - "stateMachineArn", - "creationDate" - ], - "members": { - "stateMachineArn": {}, - "creationDate": { - "type": "timestamp" - } - } - }, - "idempotent": true - }, - "DeleteActivity": { - "input": { - "type": "structure", - "required": [ - "activityArn" - ], - "members": { - "activityArn": {} - } - }, - "output": { - "type": "structure", - "members": {} - } - }, - "DeleteStateMachine": { - "input": { - "type": "structure", - "required": [ - "stateMachineArn" - ], - "members": { - "stateMachineArn": {} - } - }, - "output": { - "type": "structure", - "members": {} - } - }, - "DescribeActivity": { - "input": { - "type": "structure", - "required": [ - "activityArn" - ], - "members": { - "activityArn": {} - } - }, - "output": { - "type": "structure", - "required": [ - "activityArn", - "name", - "creationDate" - ], - "members": { - "activityArn": {}, - "name": {}, - "creationDate": { - "type": "timestamp" - } - } - } - }, - "DescribeExecution": { - "input": { - "type": "structure", - "required": [ - "executionArn" - ], - "members": { - "executionArn": {} - } - }, - "output": { - "type": "structure", - "required": [ - "executionArn", - "stateMachineArn", - "status", - "startDate", - "input" - ], - "members": { - "executionArn": {}, - "stateMachineArn": {}, - "name": {}, - "status": {}, - "startDate": { - "type": "timestamp" - }, - "stopDate": { - "type": "timestamp" - }, - "input": {}, - "output": {} - } - } - }, - "DescribeStateMachine": { - "input": { - "type": "structure", - "required": [ - "stateMachineArn" - ], - "members": { - "stateMachineArn": {} - } - }, - "output": { - "type": "structure", - "required": [ - "stateMachineArn", - "name", - "definition", - "roleArn", - "creationDate" - ], - "members": { - "stateMachineArn": {}, - "name": {}, - "status": {}, - "definition": {}, - "roleArn": {}, - "creationDate": { - "type": "timestamp" - } - } - } - }, - "GetActivityTask": { - "input": { - "type": "structure", - "required": [ - "activityArn" - ], - "members": { - "activityArn": {}, - "workerName": {} - } - }, - "output": { - "type": "structure", - "members": { - "taskToken": {}, - "input": {} - } - } - }, - "GetExecutionHistory": { - "input": { - "type": "structure", - "required": [ - "executionArn" - ], - "members": { - "executionArn": {}, - "maxResults": { - "type": "integer" - }, - "reverseOrder": { - "type": "boolean" - }, - "nextToken": {} - } - }, - "output": { - "type": "structure", - "required": [ - "events" - ], - "members": { - "events": { - "type": "list", - "member": { - "type": "structure", - "required": [ - "timestamp", - "type", - "id" - ], - "members": { - "timestamp": { - "type": "timestamp" - }, - "type": {}, - "id": { - "type": "long" - }, - "previousEventId": { - "type": "long" - }, - "activityFailedEventDetails": { - "type": "structure", - "members": { - "error": {}, - "cause": {} - } - }, - "activityScheduleFailedEventDetails": { - "type": "structure", - "members": { - "error": {}, - "cause": {} - } - }, - "activityScheduledEventDetails": { - "type": "structure", - "required": [ - "resource" - ], - "members": { - "resource": {}, - "input": {}, - "timeoutInSeconds": { - "type": "long" - }, - "heartbeatInSeconds": { - "type": "long" - } - } - }, - "activityStartedEventDetails": { - "type": "structure", - "members": { - "workerName": {} - } - }, - "activitySucceededEventDetails": { - "type": "structure", - "members": { - "output": {} - } - }, - "activityTimedOutEventDetails": { - "type": "structure", - "members": { - "error": {}, - "cause": {} - } - }, - "executionFailedEventDetails": { - "type": "structure", - "members": { - "error": {}, - "cause": {} - } - }, - "executionStartedEventDetails": { - "type": "structure", - "members": { - "input": {}, - "roleArn": {} - } - }, - "executionSucceededEventDetails": { - "type": "structure", - "members": { - "output": {} - } - }, - "executionAbortedEventDetails": { - "type": "structure", - "members": { - "error": {}, - "cause": {} - } - }, - "executionTimedOutEventDetails": { - "type": "structure", - "members": { - "error": {}, - "cause": {} - } - }, - "lambdaFunctionFailedEventDetails": { - "type": "structure", - "members": { - "error": {}, - "cause": {} - } - }, - "lambdaFunctionScheduleFailedEventDetails": { - "type": "structure", - "members": { - "error": {}, - "cause": {} - } - }, - "lambdaFunctionScheduledEventDetails": { - "type": "structure", - "required": [ - "resource" - ], - "members": { - "resource": {}, - "input": {}, - "timeoutInSeconds": { - "type": "long" - } - } - }, - "lambdaFunctionStartFailedEventDetails": { - "type": "structure", - "members": { - "error": {}, - "cause": {} - } - }, - "lambdaFunctionSucceededEventDetails": { - "type": "structure", - "members": { - "output": {} - } - }, - "lambdaFunctionTimedOutEventDetails": { - "type": "structure", - "members": { - "error": {}, - "cause": {} - } - }, - "stateEnteredEventDetails": { - "type": "structure", - "required": [ - "name" - ], - "members": { - "name": {}, - "input": {} - } - }, - "stateExitedEventDetails": { - "type": "structure", - "required": [ - "name" - ], - "members": { - "name": {}, - "output": {} - } - } - } - } - }, - "nextToken": {} - } - } - }, - "ListActivities": { - "input": { - "type": "structure", - "members": { - "maxResults": { - "type": "integer" - }, - "nextToken": {} - } - }, - "output": { - "type": "structure", - "required": [ - "activities" - ], - "members": { - "activities": { - "type": "list", - "member": { - "type": "structure", - "required": [ - "activityArn", - "name", - "creationDate" - ], - "members": { - "activityArn": {}, - "name": {}, - "creationDate": { - "type": "timestamp" - } - } - } - }, - "nextToken": {} - } - } - }, - "ListExecutions": { - "input": { - "type": "structure", - "required": [ - "stateMachineArn" - ], - "members": { - "stateMachineArn": {}, - "statusFilter": {}, - "maxResults": { - "type": "integer" - }, - "nextToken": {} - } - }, - "output": { - "type": "structure", - "required": [ - "executions" - ], - "members": { - "executions": { - "type": "list", - "member": { - "type": "structure", - "required": [ - "executionArn", - "stateMachineArn", - "name", - "status", - "startDate" - ], - "members": { - "executionArn": {}, - "stateMachineArn": {}, - "name": {}, - "status": {}, - "startDate": { - "type": "timestamp" - }, - "stopDate": { - "type": "timestamp" - } - } - } - }, - "nextToken": {} - } - } - }, - "ListStateMachines": { - "input": { - "type": "structure", - "members": { - "maxResults": { - "type": "integer" - }, - "nextToken": {} - } - }, - "output": { - "type": "structure", - "required": [ - "stateMachines" - ], - "members": { - "stateMachines": { - "type": "list", - "member": { - "type": "structure", - "required": [ - "stateMachineArn", - "name", - "creationDate" - ], - "members": { - "stateMachineArn": {}, - "name": {}, - "creationDate": { - "type": "timestamp" - } - } - } - }, - "nextToken": {} - } - } - }, - "SendTaskFailure": { - "input": { - "type": "structure", - "required": [ - "taskToken" - ], - "members": { - "taskToken": {}, - "error": {}, - "cause": {} - } - }, - "output": { - "type": "structure", - "members": {} - } - }, - "SendTaskHeartbeat": { - "input": { - "type": "structure", - "required": [ - "taskToken" - ], - "members": { - "taskToken": {} - } - }, - "output": { - "type": "structure", - "members": {} - } - }, - "SendTaskSuccess": { - "input": { - "type": "structure", - "required": [ - "taskToken", - "output" - ], - "members": { - "taskToken": {}, - "output": {} - } - }, - "output": { - "type": "structure", - "members": {} - } - }, - "StartExecution": { - "input": { - "type": "structure", - "required": [ - "stateMachineArn" - ], - "members": { - "stateMachineArn": {}, - "name": {}, - "input": {} - } - }, - "output": { - "type": "structure", - "required": [ - "executionArn", - "startDate" - ], - "members": { - "executionArn": {}, - "startDate": { - "type": "timestamp" - } - } - }, - "idempotent": true - }, - "StopExecution": { - "input": { - "type": "structure", - "required": [ - "executionArn" - ], - "members": { - "executionArn": {}, - "error": {}, - "cause": {} - } - }, - "output": { - "type": "structure", - "required": [ - "stopDate" - ], - "members": { - "stopDate": { - "type": "timestamp" - } - } - } - } - }, - "shapes": {} -} \ No newline at end of file diff --git a/workshops/monte-carlo-on-ec2-spot-fleet/src/web/node_modules/aws-sdk/apis/states-2016-11-23.paginators.json b/workshops/monte-carlo-on-ec2-spot-fleet/src/web/node_modules/aws-sdk/apis/states-2016-11-23.paginators.json deleted file mode 100644 index 9feccba6..00000000 --- a/workshops/monte-carlo-on-ec2-spot-fleet/src/web/node_modules/aws-sdk/apis/states-2016-11-23.paginators.json +++ /dev/null @@ -1,28 +0,0 @@ -{ - "pagination": { - "GetExecutionHistory": { - "input_token": "nextToken", - "output_token": "nextToken", - "limit_key": "maxResults", - "result_key": "events" - }, - "ListActivities": { - "input_token": "nextToken", - "output_token": "nextToken", - "limit_key": "maxResults", - "result_key": "activities" - }, - "ListExecutions": { - "input_token": "nextToken", - "output_token": "nextToken", - "limit_key": "maxResults", - "result_key": "executions" - }, - "ListStateMachines": { - "input_token": "nextToken", - "output_token": "nextToken", - "limit_key": "maxResults", - "result_key": "stateMachines" - } - } -} diff --git a/workshops/monte-carlo-on-ec2-spot-fleet/src/web/node_modules/aws-sdk/apis/storagegateway-2013-06-30.examples.json b/workshops/monte-carlo-on-ec2-spot-fleet/src/web/node_modules/aws-sdk/apis/storagegateway-2013-06-30.examples.json deleted file mode 100644 index 7cc0d7d4..00000000 --- a/workshops/monte-carlo-on-ec2-spot-fleet/src/web/node_modules/aws-sdk/apis/storagegateway-2013-06-30.examples.json +++ /dev/null @@ -1,1381 +0,0 @@ -{ - "version": "1.0", - "examples": { - "ActivateGateway": [ - { - "input": { - "ActivationKey": "29AV1-3OFV9-VVIUB-NKT0I-LRO6V", - "GatewayName": "My_Gateway", - "GatewayRegion": "us-east-1", - "GatewayTimezone": "GMT-12:00", - "GatewayType": "STORED", - "MediumChangerType": "AWS-Gateway-VTL", - "TapeDriveType": "IBM-ULT3580-TD5" - }, - "output": { - "GatewayARN": "arn:aws:storagegateway:us-east-1:111122223333:gateway/sgw-11A2222B" - }, - "comments": { - "input": { - }, - "output": { - } - }, - "description": "Activates the gateway you previously deployed on your host.", - "id": "to-activate-the-gateway-1471281611207", - "title": "To activate the gateway" - } - ], - "AddCache": [ - { - "input": { - "DiskIds": [ - "pci-0000:03:00.0-scsi-0:0:0:0", - "pci-0000:03:00.0-scsi-0:0:1:0" - ], - "GatewayARN": "arn:aws:storagegateway:us-east-1:111122223333:gateway/sgw-12A3456B" - }, - "output": { - "GatewayARN": "arn:aws:storagegateway:us-east-1:111122223333:gateway/sgw-12A3456B" - }, - "comments": { - "input": { - }, - "output": { - } - }, - "description": "The following example shows a request that activates a gateway-stored volume.", - "id": "to-add-a-cache-1471043606854", - "title": "To add a cache" - } - ], - "AddTagsToResource": [ - { - "input": { - "ResourceARN": "arn:aws:storagegateway:us-east-1:111122223333:gateway/sgw-11A2222B", - "Tags": [ - { - "Key": "Dev Gatgeway Region", - "Value": "East Coast" - } - ] - }, - "output": { - "ResourceARN": "arn:aws:storagegateway:us-east-1:111122223333:gateway/sgw-11A2222B" - }, - "comments": { - "input": { - }, - "output": { - } - }, - "description": "Adds one or more tags to the specified resource.", - "id": "to-add-tags-to-resource-1471283689460", - "title": "To add tags to resource" - } - ], - "AddUploadBuffer": [ - { - "input": { - "DiskIds": [ - "pci-0000:03:00.0-scsi-0:0:0:0", - "pci-0000:03:00.0-scsi-0:0:1:0" - ], - "GatewayARN": "arn:aws:storagegateway:us-east-1:111122223333:gateway/sgw-12A3456B" - }, - "output": { - "GatewayARN": "arn:aws:storagegateway:us-east-1:111122223333:gateway/sgw-12A3456B" - }, - "comments": { - "input": { - }, - "output": { - } - }, - "description": "Configures one or more gateway local disks as upload buffer for a specified gateway.", - "id": "to-add-upload-buffer-on-local-disk-1471293902847", - "title": "To add upload buffer on local disk" - } - ], - "AddWorkingStorage": [ - { - "input": { - "DiskIds": [ - "pci-0000:03:00.0-scsi-0:0:0:0", - "pci-0000:03:00.0-scsi-0:0:1:0" - ], - "GatewayARN": "arn:aws:storagegateway:us-east-1:111122223333:gateway/sgw-12A3456B" - }, - "output": { - "GatewayARN": "arn:aws:storagegateway:us-east-1:111122223333:gateway/sgw-12A3456B" - }, - "comments": { - "input": { - }, - "output": { - } - }, - "description": "Configures one or more gateway local disks as working storage for a gateway. (Working storage is also referred to as upload buffer.)", - "id": "to-add-storage-on-local-disk-1471294305401", - "title": "To add storage on local disk" - } - ], - "CancelArchival": [ - { - "input": { - "GatewayARN": "arn:aws:storagegateway:us-east-1:111122223333:gateway/sgw-12A3456B", - "TapeARN": "arn:aws:storagegateway:us-east-1:999999999999:tape/AMZN01A2A4" - }, - "output": { - "TapeARN": "arn:aws:storagegateway:us-east-1:999999999999:tape/AMZN01A2A4" - }, - "comments": { - "input": { - }, - "output": { - } - }, - "description": "Cancels archiving of a virtual tape to the virtual tape shelf (VTS) after the archiving process is initiated.", - "id": "to-cancel-virtual-tape-archiving-1471294865203", - "title": "To cancel virtual tape archiving" - } - ], - "CancelRetrieval": [ - { - "input": { - "GatewayARN": "arn:aws:storagegateway:us-east-1:111122223333:gateway/sgw-12A3456B", - "TapeARN": "arn:aws:storagegateway:us-east-1:999999999999:tape/AMZN01A2A4" - }, - "output": { - "TapeARN": "arn:aws:storagegateway:us-east-1:999999999999:tape/AMZN01A2A4" - }, - "comments": { - "input": { - }, - "output": { - } - }, - "description": "Cancels retrieval of a virtual tape from the virtual tape shelf (VTS) to a gateway after the retrieval process is initiated.", - "id": "to-cancel-virtual-tape-retrieval-1471295704491", - "title": "To cancel virtual tape retrieval" - } - ], - "CreateCachediSCSIVolume": [ - { - "input": { - "ClientToken": "cachedvol112233", - "GatewayARN": "arn:aws:storagegateway:us-east-1:111122223333:gateway/sgw-12A3456B", - "NetworkInterfaceId": "10.1.1.1", - "SnapshotId": "snap-f47b7b94", - "TargetName": "my-volume", - "VolumeSizeInBytes": 536870912000 - }, - "output": { - "TargetARN": "arn:aws:storagegateway:us-east-1:111122223333:gateway/sgw-12A3456B/target/iqn.1997-05.com.amazon:myvolume", - "VolumeARN": "arn:aws:storagegateway:us-east-1:111122223333:gateway/sgw-12A3456B/volume/vol-1122AABB" - }, - "comments": { - "input": { - }, - "output": { - } - }, - "description": "Creates a cached volume on a specified cached gateway.", - "id": "to-create-a-cached-iscsi-volume-1471296661787", - "title": "To create a cached iSCSI volume" - } - ], - "CreateSnapshot": [ - { - "input": { - "SnapshotDescription": "My root volume snapshot as of 10/03/2017", - "VolumeARN": "arn:aws:storagegateway:us-east-1:111122223333:gateway/sgw-12A3456B/volume/vol-1122AABB" - }, - "output": { - "SnapshotId": "snap-78e22663", - "VolumeARN": "arn:aws:storagegateway:us-east-1:111122223333:gateway/sgw-12A3456B/volume/vol-1122AABB" - }, - "comments": { - "input": { - }, - "output": { - } - }, - "description": "Initiates an ad-hoc snapshot of a gateway volume.", - "id": "to-create-a-snapshot-of-a-gateway-volume-1471301469561", - "title": "To create a snapshot of a gateway volume" - } - ], - "CreateSnapshotFromVolumeRecoveryPoint": [ - { - "input": { - "SnapshotDescription": "My root volume snapshot as of 2017-06-30T10:10:10.000Z", - "VolumeARN": "arn:aws:storagegateway:us-east-1:111122223333:gateway/sgw-12A3456B/volume/vol-1122AABB" - }, - "output": { - "SnapshotId": "snap-78e22663", - "VolumeARN": "arn:aws:storagegateway:us-east-1:111122223333:gateway/sgw-12A3456B/volume/vol-1122AABB", - "VolumeRecoveryPointTime": "2017-06-30T10:10:10.000Z" - }, - "comments": { - "input": { - }, - "output": { - } - }, - "description": "Initiates a snapshot of a gateway from a volume recovery point.", - "id": "to-create-a-snapshot-of-a-gateway-volume-1471301469561", - "title": "To create a snapshot of a gateway volume" - } - ], - "CreateStorediSCSIVolume": [ - { - "input": { - "DiskId": "pci-0000:03:00.0-scsi-0:0:0:0", - "GatewayARN": "arn:aws:storagegateway:us-east-1:111122223333:gateway/sgw-12A3456B", - "NetworkInterfaceId": "10.1.1.1", - "PreserveExistingData": true, - "SnapshotId": "snap-f47b7b94", - "TargetName": "my-volume" - }, - "output": { - "TargetARN": "arn:aws:storagegateway:us-east-1:111122223333:gateway/sgw-12A3456B/target/iqn.1997-05.com.amazon:myvolume", - "VolumeARN": "arn:aws:storagegateway:us-east-1:111122223333:gateway/sgw-12A3456B/volume/vol-1122AABB", - "VolumeSizeInBytes": 1099511627776 - }, - "comments": { - "input": { - }, - "output": { - } - }, - "description": "Creates a stored volume on a specified stored gateway.", - "id": "to-create-a-stored-iscsi-volume-1471367662813", - "title": "To create a stored iSCSI volume" - } - ], - "CreateTapeWithBarcode": [ - { - "input": { - "GatewayARN": "arn:aws:storagegateway:us-east-1:999999999999:gateway/sgw-12A3456B", - "TapeBarcode": "TEST12345", - "TapeSizeInBytes": 107374182400 - }, - "output": { - "TapeARN": "arn:aws:storagegateway:us-east-1:999999999999:tape/TEST12345" - }, - "comments": { - "input": { - }, - "output": { - } - }, - "description": "Creates a virtual tape by using your own barcode.", - "id": "to-create-a-virtual-tape-using-a-barcode-1471371842452", - "title": "To create a virtual tape using a barcode" - } - ], - "CreateTapes": [ - { - "input": { - "ClientToken": "77777", - "GatewayARN": "arn:aws:storagegateway:us-east-1:999999999999:gateway/sgw-12A3456B", - "NumTapesToCreate": 3, - "TapeBarcodePrefix": "TEST", - "TapeSizeInBytes": 107374182400 - }, - "output": { - "TapeARNs": [ - "arn:aws:storagegateway:us-east-1:999999999999:tape/TEST38A29D", - "arn:aws:storagegateway:us-east-1:204469490176:tape/TEST3AA29F", - "arn:aws:storagegateway:us-east-1:204469490176:tape/TEST3BA29E" - ] - }, - "comments": { - "input": { - }, - "output": { - } - }, - "description": "Creates one or more virtual tapes.", - "id": "to-create-a-virtual-tape-1471372061659", - "title": "To create a virtual tape" - } - ], - "DeleteBandwidthRateLimit": [ - { - "input": { - "BandwidthType": "All", - "GatewayARN": "arn:aws:storagegateway:us-east-1:111122223333:gateway/sgw-12A3456B" - }, - "output": { - "GatewayARN": "arn:aws:storagegateway:us-east-1:111122223333:gateway/sgw-12A3456B" - }, - "comments": { - "input": { - }, - "output": { - } - }, - "description": "Deletes the bandwidth rate limits of a gateway; either the upload or download limit, or both.", - "id": "to-delete-bandwidth-rate-limits-of-gateway-1471373225520", - "title": "To delete bandwidth rate limits of gateway" - } - ], - "DeleteChapCredentials": [ - { - "input": { - "InitiatorName": "iqn.1991-05.com.microsoft:computername.domain.example.com", - "TargetARN": "arn:aws:storagegateway:us-east-1:111122223333:gateway/sgw-12A3456B/target/iqn.1997-05.com.amazon:myvolume" - }, - "output": { - "InitiatorName": "iqn.1991-05.com.microsoft:computername.domain.example.com", - "TargetARN": "arn:aws:storagegateway:us-east-1:111122223333:gateway/sgw-12A3456B/target/iqn.1997-05.com.amazon:myvolume" - }, - "comments": { - "input": { - }, - "output": { - } - }, - "description": "Deletes Challenge-Handshake Authentication Protocol (CHAP) credentials for a specified iSCSI target and initiator pair.", - "id": "to-delete-chap-credentials-1471375025612", - "title": "To delete CHAP credentials" - } - ], - "DeleteGateway": [ - { - "input": { - "GatewayARN": "arn:aws:storagegateway:us-east-1:111122223333:gateway/sgw-12A3456B" - }, - "output": { - "GatewayARN": "arn:aws:storagegateway:us-east-1:111122223333:gateway/sgw-12A3456B" - }, - "comments": { - "input": { - }, - "output": { - } - }, - "description": "This operation deletes the gateway, but not the gateway's VM from the host computer.", - "id": "to-delete-a-gatgeway-1471381697333", - "title": "To delete a gatgeway" - } - ], - "DeleteSnapshotSchedule": [ - { - "input": { - "VolumeARN": "arn:aws:storagegateway:us-east-1:111122223333:gateway/sgw-12A3456B/volume/vol-1122AABB" - }, - "output": { - "VolumeARN": "arn:aws:storagegateway:us-east-1:111122223333:gateway/sgw-12A3456B/volume/vol-1122AABB" - }, - "comments": { - "input": { - }, - "output": { - } - }, - "description": "This action enables you to delete a snapshot schedule for a volume.", - "id": "to-delete-a-snapshot-of-a-volume-1471382234377", - "title": "To delete a snapshot of a volume" - } - ], - "DeleteTape": [ - { - "input": { - "GatewayARN": "arn:aws:storagegateway:us-east-1:204469490176:gateway/sgw-12A3456B", - "TapeARN": "arn:aws:storagegateway:us-east-1:204469490176:tape/TEST05A2A0" - }, - "output": { - "TapeARN": "arn:aws:storagegateway:us-east-1:204469490176:tape/TEST05A2A0" - }, - "comments": { - "input": { - }, - "output": { - } - }, - "description": "This example deletes the specified virtual tape.", - "id": "to-delete-a-virtual-tape-1471382444157", - "title": "To delete a virtual tape" - } - ], - "DeleteTapeArchive": [ - { - "input": { - "TapeARN": "arn:aws:storagegateway:us-east-1:204469490176:tape/TEST05A2A0" - }, - "output": { - "TapeARN": "arn:aws:storagegateway:us-east-1:204469490176:tape/TEST05A2A0" - }, - "comments": { - "input": { - }, - "output": { - } - }, - "description": "Deletes the specified virtual tape from the virtual tape shelf (VTS).", - "id": "to-delete-a-virtual-tape-from-the-shelf-vts-1471383964329", - "title": "To delete a virtual tape from the shelf (VTS)" - } - ], - "DeleteVolume": [ - { - "input": { - "VolumeARN": "arn:aws:storagegateway:us-east-1:111122223333:gateway/sgw-12A3456B/volume/vol-1122AABB" - }, - "output": { - "VolumeARN": "arn:aws:storagegateway:us-east-1:111122223333:gateway/sgw-12A3456B/volume/vol-1122AABB" - }, - "comments": { - "input": { - }, - "output": { - } - }, - "description": "Deletes the specified gateway volume that you previously created using the CreateCachediSCSIVolume or CreateStorediSCSIVolume API.", - "id": "to-delete-a-gateway-volume-1471384418416", - "title": "To delete a gateway volume" - } - ], - "DescribeBandwidthRateLimit": [ - { - "input": { - "GatewayARN": "arn:aws:storagegateway:us-east-1:111122223333:gateway/sgw-12A3456B" - }, - "output": { - "AverageDownloadRateLimitInBitsPerSec": 204800, - "AverageUploadRateLimitInBitsPerSec": 102400, - "GatewayARN": "arn:aws:storagegateway:us-east-1:111122223333:gateway/sgw-12A3456B" - }, - "comments": { - "input": { - }, - "output": { - } - }, - "description": "Returns a value for a bandwidth rate limit if set. If not set, then only the gateway ARN is returned.", - "id": "to-describe-the-bandwidth-rate-limits-of-a-gateway-1471384826404", - "title": "To describe the bandwidth rate limits of a gateway" - } - ], - "DescribeCache": [ - { - "input": { - "GatewayARN": "arn:aws:storagegateway:us-east-1:111122223333:gateway/sgw-12A3456B" - }, - "output": { - "CacheAllocatedInBytes": 2199023255552, - "CacheDirtyPercentage": 0.07, - "CacheHitPercentage": 99.68, - "CacheMissPercentage": 0.32, - "CacheUsedPercentage": 0.07, - "DiskIds": [ - "pci-0000:03:00.0-scsi-0:0:0:0", - "pci-0000:04:00.0-scsi-0:1:0:0" - ], - "GatewayARN": "arn:aws:storagegateway:us-east-1:111122223333:gateway/sgw-12A3456B" - }, - "comments": { - "input": { - }, - "output": { - } - }, - "description": "Returns information about the cache of a gateway.", - "id": "to-describe-cache-information-1471385756036", - "title": "To describe cache information" - } - ], - "DescribeCachediSCSIVolumes": [ - { - "input": { - "VolumeARNs": [ - "arn:aws:storagegateway:us-east-1:111122223333:gateway/sgw-12A3456B/volume/vol-1122AABB" - ] - }, - "output": { - "CachediSCSIVolumes": [ - { - "VolumeARN": "arn:aws:storagegateway:us-east-1:111122223333:gateway/sgw-12A3456B/volume/vol-1122AABB", - "VolumeId": "vol-1122AABB", - "VolumeSizeInBytes": 1099511627776, - "VolumeStatus": "AVAILABLE", - "VolumeType": "CACHED iSCSI", - "VolumeiSCSIAttributes": { - "ChapEnabled": true, - "LunNumber": 1, - "NetworkInterfaceId": "10.243.43.207", - "NetworkInterfacePort": 3260, - "TargetARN": "arn:aws:storagegateway:us-east-1:111122223333:gateway/sgw-12A3456B/target/iqn.1997-05.com.amazon:myvolume" - } - } - ] - }, - "comments": { - "input": { - }, - "output": { - } - }, - "description": "Returns a description of the gateway cached iSCSI volumes specified in the request.", - "id": "to-describe-gateway-cached-iscsi-volumes-1471458094649", - "title": "To describe gateway cached iSCSI volumes" - } - ], - "DescribeChapCredentials": [ - { - "input": { - "TargetARN": "arn:aws:storagegateway:us-east-1:111122223333:gateway/sgw-12A3456B/target/iqn.1997-05.com.amazon:myvolume" - }, - "output": { - "ChapCredentials": [ - { - "InitiatorName": "iqn.1991-05.com.microsoft:computername.domain.example.com", - "SecretToAuthenticateInitiator": "111111111111", - "SecretToAuthenticateTarget": "222222222222", - "TargetARN": "arn:aws:storagegateway:us-east-1:111122223333:gateway/sgw-12A3456B/target/iqn.1997-05.com.amazon:myvolume" - } - ] - }, - "comments": { - "input": { - }, - "output": { - } - }, - "description": "Returns an array of Challenge-Handshake Authentication Protocol (CHAP) credentials information for a specified iSCSI target, one for each target-initiator pair.", - "id": "to-describe-chap-credetnitals-for-an-iscsi-1471467462967", - "title": "To describe CHAP credetnitals for an iSCSI" - } - ], - "DescribeGatewayInformation": [ - { - "input": { - "GatewayARN": "arn:aws:storagegateway:us-east-1:111122223333:gateway/sgw-12A3456B" - }, - "output": { - "GatewayARN": "arn:aws:storagegateway:us-east-1:111122223333:gateway/sgw-12A3456B", - "GatewayId": "sgw-AABB1122", - "GatewayName": "My_Gateway", - "GatewayNetworkInterfaces": [ - { - "Ipv4Address": "10.35.69.216" - } - ], - "GatewayState": "STATE_RUNNING", - "GatewayTimezone": "GMT-8:00", - "GatewayType": "STORED", - "LastSoftwareUpdate": "2016-01-02T16:00:00", - "NextUpdateAvailabilityDate": "2017-01-02T16:00:00" - }, - "comments": { - "input": { - }, - "output": { - } - }, - "description": "Returns metadata about a gateway such as its name, network interfaces, configured time zone, and the state (whether the gateway is running or not).", - "id": "to-describe-metadata-about-the-gateway-1471467849079", - "title": "To describe metadata about the gateway" - } - ], - "DescribeMaintenanceStartTime": [ - { - "input": { - "GatewayARN": "arn:aws:storagegateway:us-east-1:111122223333:gateway/sgw-12A3456B" - }, - "output": { - "DayOfWeek": 2, - "GatewayARN": "arn:aws:storagegateway:us-east-1:111122223333:gateway/sgw-12A3456B", - "HourOfDay": 15, - "MinuteOfHour": 35, - "Timezone": "GMT+7:00" - }, - "comments": { - "input": { - }, - "output": { - } - }, - "description": "Returns your gateway's weekly maintenance start time including the day and time of the week.", - "id": "to-describe-gateways-maintenance-start-time-1471470727387", - "title": "To describe gateway's maintenance start time" - } - ], - "DescribeSnapshotSchedule": [ - { - "input": { - "VolumeARN": "arn:aws:storagegateway:us-east-1:111122223333:gateway/sgw-12A3456B/volume/vol-1122AABB" - }, - "output": { - "Description": "sgw-AABB1122:vol-AABB1122:Schedule", - "RecurrenceInHours": 24, - "StartAt": 6, - "Timezone": "GMT+7:00", - "VolumeARN": "arn:aws:storagegateway:us-east-1:111122223333:gateway/sgw-12A3456B/volume/vol-1122AABB" - }, - "comments": { - "input": { - }, - "output": { - } - }, - "description": "Describes the snapshot schedule for the specified gateway volume including intervals at which snapshots are automatically initiated.", - "id": "to-describe-snapshot-schedule-for-gateway-volume-1471471139538", - "title": "To describe snapshot schedule for gateway volume" - } - ], - "DescribeStorediSCSIVolumes": [ - { - "input": { - "VolumeARNs": [ - "arn:aws:storagegateway:us-east-1:111122223333:gateway/sgw-12A3456B/volume/vol-1122AABB" - ] - }, - "output": { - "StorediSCSIVolumes": [ - { - "PreservedExistingData": false, - "VolumeARN": "arn:aws:storagegateway:us-east-1:111122223333:gateway/sgw-12A3456B/volume/vol-1122AABB", - "VolumeDiskId": "pci-0000:03:00.0-scsi-0:0:0:0", - "VolumeId": "vol-1122AABB", - "VolumeProgress": 23.7, - "VolumeSizeInBytes": 1099511627776, - "VolumeStatus": "BOOTSTRAPPING", - "VolumeiSCSIAttributes": { - "ChapEnabled": true, - "NetworkInterfaceId": "10.243.43.207", - "NetworkInterfacePort": 3260, - "TargetARN": "arn:aws:storagegateway:us-east-1:111122223333:gateway/sgw-12A3456B/target/iqn.1997-05.com.amazon:myvolume" - } - } - ] - }, - "comments": { - "input": { - }, - "output": { - } - }, - "description": "Returns the description of the gateway volumes specified in the request belonging to the same gateway.", - "id": "to-describe-the-volumes-of-a-gateway-1471472640660", - "title": "To describe the volumes of a gateway" - } - ], - "DescribeTapeArchives": [ - { - "input": { - "Limit": 123, - "Marker": "1", - "TapeARNs": [ - "arn:aws:storagegateway:us-east-1:999999999999:tape/AM08A1AD", - "arn:aws:storagegateway:us-east-1:999999999999:tape/AMZN01A2A4" - ] - }, - "output": { - "Marker": "1", - "TapeArchives": [ - { - "CompletionTime": "2016-12-16T13:50Z", - "TapeARN": "arn:aws:storagegateway:us-east-1:999999999:tape/AM08A1AD", - "TapeBarcode": "AM08A1AD", - "TapeSizeInBytes": 107374182400, - "TapeStatus": "ARCHIVED" - }, - { - "CompletionTime": "2016-12-16T13:59Z", - "TapeARN": "arn:aws:storagegateway:us-east-1:999999999:tape/AMZN01A2A4", - "TapeBarcode": "AMZN01A2A4", - "TapeSizeInBytes": 429496729600, - "TapeStatus": "ARCHIVED" - } - ] - }, - "comments": { - "input": { - }, - "output": { - } - }, - "description": "Returns a description of specified virtual tapes in the virtual tape shelf (VTS).", - "id": "to-describe-virtual-tapes-in-the-vts-1471473188198", - "title": "To describe virtual tapes in the VTS" - } - ], - "DescribeTapeRecoveryPoints": [ - { - "input": { - "GatewayARN": "arn:aws:storagegateway:us-east-1:111122223333:gateway/sgw-12A3456B", - "Limit": 1, - "Marker": "1" - }, - "output": { - "GatewayARN": "arn:aws:storagegateway:us-east-1:111122223333:gateway/sgw-12A3456B", - "Marker": "1", - "TapeRecoveryPointInfos": [ - { - "TapeARN": "arn:aws:storagegateway:us-east-1:999999999:tape/AMZN01A2A4", - "TapeRecoveryPointTime": "2016-12-16T13:50Z", - "TapeSizeInBytes": 1471550497, - "TapeStatus": "AVAILABLE" - } - ] - }, - "comments": { - "input": { - }, - "output": { - } - }, - "description": "Returns a list of virtual tape recovery points that are available for the specified gateway-VTL.", - "id": "to-describe-virtual-tape-recovery-points-1471542042026", - "title": "To describe virtual tape recovery points" - } - ], - "DescribeTapes": [ - { - "input": { - "GatewayARN": "arn:aws:storagegateway:us-east-1:999999999999:gateway/sgw-12A3456B", - "Limit": 2, - "Marker": "1", - "TapeARNs": [ - "arn:aws:storagegateway:us-east-1:999999999999:tape/TEST04A2A1", - "arn:aws:storagegateway:us-east-1:999999999999:tape/TEST05A2A0" - ] - }, - "output": { - "Marker": "1", - "Tapes": [ - { - "TapeARN": "arn:aws:storagegateway:us-east-1:999999999999:tape/TEST04A2A1", - "TapeBarcode": "TEST04A2A1", - "TapeSizeInBytes": 107374182400, - "TapeStatus": "AVAILABLE" - }, - { - "TapeARN": "arn:aws:storagegateway:us-east-1:999999999999:tape/TEST05A2A0", - "TapeBarcode": "TEST05A2A0", - "TapeSizeInBytes": 107374182400, - "TapeStatus": "AVAILABLE" - } - ] - }, - "comments": { - "input": { - }, - "output": { - } - }, - "description": "Returns a description of the specified Amazon Resource Name (ARN) of virtual tapes. If a TapeARN is not specified, returns a description of all virtual tapes.", - "id": "to-describe-virtual-tapes-associated-with-gateway-1471629287727", - "title": "To describe virtual tape(s) associated with gateway" - } - ], - "DescribeUploadBuffer": [ - { - "input": { - "GatewayARN": "arn:aws:storagegateway:us-east-1:111122223333:gateway/sgw-12A3456B" - }, - "output": { - "DiskIds": [ - "pci-0000:03:00.0-scsi-0:0:0:0", - "pci-0000:04:00.0-scsi-0:1:0:0" - ], - "GatewayARN": "arn:aws:storagegateway:us-east-1:111122223333:gateway/sgw-12A3456B", - "UploadBufferAllocatedInBytes": 0, - "UploadBufferUsedInBytes": 161061273600 - }, - "comments": { - "input": { - }, - "output": { - } - }, - "description": "Returns information about the upload buffer of a gateway including disk IDs and the amount of upload buffer space allocated/used.", - "id": "to-describe-upload-buffer-of-gateway-1471631099003", - "title": "To describe upload buffer of gateway" - }, - { - "input": { - "GatewayARN": "arn:aws:storagegateway:us-east-1:111122223333:gateway/sgw-12A3456B" - }, - "output": { - "DiskIds": [ - "pci-0000:03:00.0-scsi-0:0:0:0", - "pci-0000:04:00.0-scsi-0:1:0:0" - ], - "GatewayARN": "arn:aws:storagegateway:us-east-1:111122223333:gateway/sgw-12A3456B", - "UploadBufferAllocatedInBytes": 161061273600, - "UploadBufferUsedInBytes": 0 - }, - "comments": { - "input": { - }, - "output": { - } - }, - "description": "Returns information about the upload buffer of a gateway including disk IDs and the amount of upload buffer space allocated and used.", - "id": "to-describe-upload-buffer-of-a-gateway--1471904566370", - "title": "To describe upload buffer of a gateway" - } - ], - "DescribeVTLDevices": [ - { - "input": { - "GatewayARN": "arn:aws:storagegateway:us-east-1:999999999999:gateway/sgw-12A3456B", - "Limit": 123, - "Marker": "1", - "VTLDeviceARNs": [ - - ] - }, - "output": { - "GatewayARN": "arn:aws:storagegateway:us-east-1:999999999999:gateway/sgw-12A3456B", - "Marker": "1", - "VTLDevices": [ - { - "DeviceiSCSIAttributes": { - "ChapEnabled": false, - "NetworkInterfaceId": "10.243.43.207", - "NetworkInterfacePort": 3260, - "TargetARN": "arn:aws:storagegateway:us-east-1:999999999999:gateway/sgw-12A3456B/target/iqn.1997-05.com.amazon:sgw-1fad4876-mediachanger" - }, - "VTLDeviceARN": "arn:aws:storagegateway:us-east-1:999999999999:gateway/sgw-12A3456B/device/AMZN_SGW-1FAD4876_MEDIACHANGER_00001", - "VTLDeviceProductIdentifier": "L700", - "VTLDeviceType": "Medium Changer", - "VTLDeviceVendor": "STK" - }, - { - "DeviceiSCSIAttributes": { - "ChapEnabled": false, - "NetworkInterfaceId": "10.243.43.209", - "NetworkInterfacePort": 3260, - "TargetARN": "arn:aws:storagegateway:us-east-1:999999999999:gateway/sgw-12A3456B/target/iqn.1997-05.com.amazon:sgw-1fad4876-tapedrive-01" - }, - "VTLDeviceARN": "arn:aws:storagegateway:us-east-1:999999999999:gateway/sgw-12A3456B/device/AMZN_SGW-1FAD4876_TAPEDRIVE_00001", - "VTLDeviceProductIdentifier": "ULT3580-TD5", - "VTLDeviceType": "Tape Drive", - "VTLDeviceVendor": "IBM" - }, - { - "DeviceiSCSIAttributes": { - "ChapEnabled": false, - "NetworkInterfaceId": "10.243.43.209", - "NetworkInterfacePort": 3260, - "TargetARN": "arn:aws:storagegateway:us-east-1:999999999999:gateway/sgw-12A3456B/target/iqn.1997-05.com.amazon:sgw-1fad4876-tapedrive-02" - }, - "VTLDeviceARN": "arn:aws:storagegateway:us-east-1:999999999999:gateway/sgw-12A3456B/device/AMZN_SGW-1FAD4876_TAPEDRIVE_00002", - "VTLDeviceProductIdentifier": "ULT3580-TD5", - "VTLDeviceType": "Tape Drive", - "VTLDeviceVendor": "IBM" - } - ] - }, - "comments": { - "input": { - }, - "output": { - } - }, - "description": "Returns a description of virtual tape library (VTL) devices for the specified gateway.", - "id": "to-describe-virtual-tape-library-vtl-devices-of-a-single-gateway-1471906071410", - "title": "To describe virtual tape library (VTL) devices of a single gateway" - } - ], - "DescribeWorkingStorage": [ - { - "input": { - "GatewayARN": "arn:aws:storagegateway:us-east-1:111122223333:gateway/sgw-12A3456B" - }, - "output": { - "DiskIds": [ - "pci-0000:03:00.0-scsi-0:0:0:0", - "pci-0000:03:00.0-scsi-0:0:1:0" - ], - "GatewayARN": "arn:aws:storagegateway:us-east-1:111122223333:gateway/sgw-12A3456B", - "WorkingStorageAllocatedInBytes": 2199023255552, - "WorkingStorageUsedInBytes": 789207040 - }, - "comments": { - "input": { - }, - "output": { - } - }, - "description": "This operation is supported only for the gateway-stored volume architecture. This operation is deprecated in cached-volumes API version (20120630). Use DescribeUploadBuffer instead.", - "id": "to-describe-the-working-storage-of-a-gateway-depreciated-1472070842332", - "title": "To describe the working storage of a gateway [Depreciated]" - } - ], - "DisableGateway": [ - { - "input": { - "GatewayARN": "arn:aws:storagegateway:us-east-1:111122223333:gateway/sgw-12A3456B" - }, - "output": { - "GatewayARN": "arn:aws:storagegateway:us-east-1:111122223333:gateway/sgw-12A3456B" - }, - "comments": { - "input": { - }, - "output": { - } - }, - "description": "Disables a gateway when the gateway is no longer functioning. Use this operation for a gateway-VTL that is not reachable or not functioning.", - "id": "to-disable-a-gateway-when-it-is-no-longer-functioning-1472076046936", - "title": "To disable a gateway when it is no longer functioning" - } - ], - "ListGateways": [ - { - "input": { - "Limit": 2, - "Marker": "1" - }, - "output": { - "Gateways": [ - { - "GatewayARN": "arn:aws:storagegateway:us-east-1:111122223333:gateway/sgw-12A3456B" - }, - { - "GatewayARN": "arn:aws:storagegateway:us-east-1:111122223333:gateway/sgw-23A4567C" - } - ], - "Marker": "1" - }, - "comments": { - "input": { - }, - "output": { - } - }, - "description": "Lists gateways owned by an AWS account in a specified region as requested. Results are sorted by gateway ARN up to a maximum of 100 gateways.", - "id": "to-lists-region-specific-gateways-per-aws-account-1472077860657", - "title": "To lists region specific gateways per AWS account" - } - ], - "ListLocalDisks": [ - { - "input": { - "GatewayARN": "arn:aws:storagegateway:us-east-1:111122223333:gateway/sgw-12A3456B" - }, - "output": { - "Disks": [ - { - "DiskAllocationType": "CACHE_STORAGE", - "DiskId": "pci-0000:03:00.0-scsi-0:0:0:0", - "DiskNode": "SCSI(0:0)", - "DiskPath": "/dev/sda", - "DiskSizeInBytes": 1099511627776, - "DiskStatus": "missing" - }, - { - "DiskAllocationResource": "", - "DiskAllocationType": "UPLOAD_BUFFER", - "DiskId": "pci-0000:03:00.0-scsi-0:0:1:0", - "DiskNode": "SCSI(0:1)", - "DiskPath": "/dev/sdb", - "DiskSizeInBytes": 1099511627776, - "DiskStatus": "present" - } - ], - "GatewayARN": "arn:aws:storagegateway:us-east-1:111122223333:gateway/sgw-12A3456B" - }, - "comments": { - "input": { - }, - "output": { - } - }, - "description": "The request returns a list of all disks, specifying which are configured as working storage, cache storage, or stored volume or not configured at all.", - "id": "to-list-the-gateways-local-disks-1472079564618", - "title": "To list the gateway's local disks" - } - ], - "ListTagsForResource": [ - { - "input": { - "Limit": 1, - "Marker": "1", - "ResourceARN": "arn:aws:storagegateway:us-east-1:111122223333:gateway/sgw-11A2222B" - }, - "output": { - "Marker": "1", - "ResourceARN": "arn:aws:storagegateway:us-east-1:111122223333:gateway/sgw-11A2222B", - "Tags": [ - { - "Key": "Dev Gatgeway Region", - "Value": "East Coast" - } - ] - }, - "comments": { - "input": { - }, - "output": { - } - }, - "description": "Lists the tags that have been added to the specified resource.", - "id": "to-list-tags-that-have-been-added-to-a-resource-1472080268972", - "title": "To list tags that have been added to a resource" - } - ], - "ListVolumeRecoveryPoints": [ - { - "input": { - "GatewayARN": "arn:aws:storagegateway:us-east-1:111122223333:gateway/sgw-12A3456B" - }, - "output": { - "GatewayARN": "arn:aws:storagegateway:us-east-1:111122223333:gateway/sgw-12A3456B", - "VolumeRecoveryPointInfos": [ - { - "VolumeARN": "arn:aws:storagegateway:us-east-1:111122223333:gateway/sgw-12A3456B/volume/vol-1122AABB", - "VolumeRecoveryPointTime": "2012-09-04T21:08:44.627Z", - "VolumeSizeInBytes": 536870912000 - } - ] - }, - "comments": { - "input": { - }, - "output": { - } - }, - "description": "Lists the recovery points for a specified gateway in which all data of the volume is consistent and can be used to create a snapshot.", - "id": "to-list-recovery-points-for-a-gateway-1472143015088", - "title": "To list recovery points for a gateway" - } - ], - "ListVolumes": [ - { - "input": { - "GatewayARN": "arn:aws:storagegateway:us-east-1:111122223333:gateway/sgw-12A3456B", - "Limit": 2, - "Marker": "1" - }, - "output": { - "GatewayARN": "arn:aws:storagegateway:us-east-1:111122223333:gateway/sgw-12A3456B", - "Marker": "1", - "VolumeInfos": [ - { - "GatewayARN": "arn:aws:storagegateway:us-east-1:111122223333:gateway/sgw-12A3456B", - "GatewayId": "sgw-12A3456B", - "VolumeARN": "arn:aws:storagegateway:us-east-1:111122223333:gateway/sgw-12A3456B/volume/vol-1122AABB", - "VolumeId": "vol-1122AABB", - "VolumeSizeInBytes": 107374182400, - "VolumeType": "STORED" - }, - { - "GatewayARN": "arn:aws:storagegateway:us-east-1:111122223333:gateway/sgw-13B4567C", - "GatewayId": "sgw-gw-13B4567C", - "VolumeARN": "arn:aws:storagegateway:us-east-1:111122223333:gateway/sgw-13B4567C/volume/vol-3344CCDD", - "VolumeId": "vol-1122AABB", - "VolumeSizeInBytes": 107374182400, - "VolumeType": "STORED" - } - ] - }, - "comments": { - "input": { - }, - "output": { - } - }, - "description": "Lists the iSCSI stored volumes of a gateway. Results are sorted by volume ARN up to a maximum of 100 volumes.", - "id": "to-list-the-iscsi-stored-volumes-of-a-gateway-1472145723653", - "title": "To list the iSCSI stored volumes of a gateway" - } - ], - "RemoveTagsFromResource": [ - { - "input": { - "ResourceARN": "arn:aws:storagegateway:us-east-1:111122223333:gateway/sgw-11A2222B", - "TagKeys": [ - "Dev Gatgeway Region", - "East Coast" - ] - }, - "output": { - "ResourceARN": "arn:aws:storagegateway:us-east-1:111122223333:gateway/sgw-11A2222B" - }, - "comments": { - "input": { - }, - "output": { - } - }, - "description": "Lists the iSCSI stored volumes of a gateway. Removes one or more tags from the specified resource.", - "id": "to-remove-tags-from-a-resource-1472147210553", - "title": "To remove tags from a resource" - } - ], - "ResetCache": [ - { - "input": { - "GatewayARN": "arn:aws:storagegateway:us-east-1:111122223333:gateway/sgw-13B4567C" - }, - "output": { - "GatewayARN": "arn:aws:storagegateway:us-east-1:111122223333:gateway/sgw-13B4567C" - }, - "comments": { - "input": { - }, - "output": { - } - }, - "description": "Resets all cache disks that have encountered a error and makes the disks available for reconfiguration as cache storage.", - "id": "to-reset-cache-disks-in-error-status-1472148909807", - "title": "To reset cache disks in error status" - } - ], - "RetrieveTapeArchive": [ - { - "input": { - "GatewayARN": "arn:aws:storagegateway:us-east-1:999999999999:gateway/sgw-12A3456B", - "TapeARN": "arn:aws:storagegateway:us-east-1:999999999999:tape/TEST0AA2AF" - }, - "output": { - "TapeARN": "arn:aws:storagegateway:us-east-1:999999999999:tape/TEST0AA2AF" - }, - "comments": { - "input": { - }, - "output": { - } - }, - "description": "Retrieves an archived virtual tape from the virtual tape shelf (VTS) to a gateway-VTL. Virtual tapes archived in the VTS are not associated with any gateway.", - "id": "to-retrieve-an-archived-tape-from-the-vts-1472149812358", - "title": "To retrieve an archived tape from the VTS" - } - ], - "RetrieveTapeRecoveryPoint": [ - { - "input": { - "GatewayARN": "arn:aws:storagegateway:us-east-1:999999999999:gateway/sgw-12A3456B", - "TapeARN": "arn:aws:storagegateway:us-east-1:999999999999:tape/TEST0AA2AF" - }, - "output": { - "TapeARN": "arn:aws:storagegateway:us-east-1:999999999999:tape/TEST0AA2AF" - }, - "comments": { - "input": { - }, - "output": { - } - }, - "description": "Retrieves the recovery point for the specified virtual tape.", - "id": "to-retrieve-the-recovery-point-of-a-virtual-tape-1472150014805", - "title": "To retrieve the recovery point of a virtual tape" - } - ], - "SetLocalConsolePassword": [ - { - "input": { - "GatewayARN": "arn:aws:storagegateway:us-east-1:999999999999:gateway/sgw-12A3456B", - "LocalConsolePassword": "PassWordMustBeAtLeast6Chars." - }, - "output": { - "GatewayARN": "arn:aws:storagegateway:us-east-1:999999999999:gateway/sgw-12A3456B" - }, - "comments": { - "input": { - }, - "output": { - } - }, - "description": "Sets the password for your VM local console.", - "id": "to-set-a-password-for-your-vm-1472150202632", - "title": "To set a password for your VM" - } - ], - "ShutdownGateway": [ - { - "input": { - "GatewayARN": "arn:aws:storagegateway:us-east-1:999999999999:gateway/sgw-12A3456B" - }, - "output": { - "GatewayARN": "arn:aws:storagegateway:us-east-1:999999999999:gateway/sgw-12A3456B" - }, - "comments": { - "input": { - }, - "output": { - } - }, - "description": "This operation shuts down the gateway service component running in the storage gateway's virtual machine (VM) and not the VM.", - "id": "to-shut-down-a-gateway-service-1472150508835", - "title": "To shut down a gateway service" - } - ], - "StartGateway": [ - { - "input": { - "GatewayARN": "arn:aws:storagegateway:us-east-1:999999999999:gateway/sgw-12A3456B" - }, - "output": { - "GatewayARN": "arn:aws:storagegateway:us-east-1:999999999999:gateway/sgw-12A3456B" - }, - "comments": { - "input": { - }, - "output": { - } - }, - "description": "Starts a gateway service that was previously shut down.", - "id": "to-start-a-gateway-service-1472150722315", - "title": "To start a gateway service" - } - ], - "UpdateBandwidthRateLimit": [ - { - "input": { - "AverageDownloadRateLimitInBitsPerSec": 102400, - "AverageUploadRateLimitInBitsPerSec": 51200, - "GatewayARN": "arn:aws:storagegateway:us-east-1:111122223333:gateway/sgw-12A3456B" - }, - "output": { - "GatewayARN": "arn:aws:storagegateway:us-east-1:111122223333:gateway/sgw-12A3456B" - }, - "comments": { - "input": { - }, - "output": { - } - }, - "description": "Updates the bandwidth rate limits of a gateway. Both the upload and download bandwidth rate limit can be set, or either one of the two. If a new limit is not set, the existing rate limit remains.", - "id": "to-update-the-bandwidth-rate-limits-of-a-gateway-1472151016202", - "title": "To update the bandwidth rate limits of a gateway" - } - ], - "UpdateChapCredentials": [ - { - "input": { - "InitiatorName": "iqn.1991-05.com.microsoft:computername.domain.example.com", - "SecretToAuthenticateInitiator": "111111111111", - "SecretToAuthenticateTarget": "222222222222", - "TargetARN": "arn:aws:storagegateway:us-east-1:111122223333:gateway/sgw-12A3456B/target/iqn.1997-05.com.amazon:myvolume" - }, - "output": { - "InitiatorName": "iqn.1991-05.com.microsoft:computername.domain.example.com", - "TargetARN": "arn:aws:storagegateway:us-east-1:111122223333:gateway/sgw-12A3456B/target/iqn.1997-05.com.amazon:myvolume" - }, - "comments": { - "input": { - }, - "output": { - } - }, - "description": "Updates the Challenge-Handshake Authentication Protocol (CHAP) credentials for a specified iSCSI target.", - "id": "to-update-chap-credentials-for-an-iscsi-target-1472151325795", - "title": "To update CHAP credentials for an iSCSI target" - } - ], - "UpdateGatewayInformation": [ - { - "input": { - "GatewayARN": "arn:aws:storagegateway:us-east-1:111122223333:gateway/sgw-12A3456B", - "GatewayName": "MyGateway2", - "GatewayTimezone": "GMT-12:00" - }, - "output": { - "GatewayARN": "arn:aws:storagegateway:us-east-1:111122223333:gateway/sgw-12A3456B", - "GatewayName": "" - }, - "comments": { - "input": { - }, - "output": { - } - }, - "description": "Updates a gateway's metadata, which includes the gateway's name and time zone.", - "id": "to-update-a-gateways-metadata-1472151688693", - "title": "To update a gateway's metadata" - } - ], - "UpdateGatewaySoftwareNow": [ - { - "input": { - "GatewayARN": "arn:aws:storagegateway:us-east-1:111122223333:gateway/sgw-12A3456B" - }, - "output": { - "GatewayARN": "arn:aws:storagegateway:us-east-1:111122223333:gateway/sgw-12A3456B" - }, - "comments": { - "input": { - }, - "output": { - } - }, - "description": "Updates the gateway virtual machine (VM) software. The request immediately triggers the software update.", - "id": "to-update-a-gateways-vm-software-1472152020929", - "title": "To update a gateway's VM software" - } - ], - "UpdateMaintenanceStartTime": [ - { - "input": { - "DayOfWeek": 2, - "GatewayARN": "arn:aws:storagegateway:us-east-1:111122223333:gateway/sgw-12A3456B", - "HourOfDay": 0, - "MinuteOfHour": 30 - }, - "output": { - "GatewayARN": "arn:aws:storagegateway:us-east-1:111122223333:gateway/sgw-12A3456B" - }, - "comments": { - "input": { - }, - "output": { - } - }, - "description": "Updates a gateway's weekly maintenance start time information, including day and time of the week. The maintenance time is in your gateway's time zone.", - "id": "to-update-a-gateways-maintenance-start-time-1472152552031", - "title": "To update a gateway's maintenance start time" - } - ], - "UpdateSnapshotSchedule": [ - { - "input": { - "Description": "Hourly snapshot", - "RecurrenceInHours": 1, - "StartAt": 0, - "VolumeARN": "arn:aws:storagegateway:us-east-1:111122223333:gateway/sgw-12A3456B/volume/vol-1122AABB" - }, - "output": { - "VolumeARN": "arn:aws:storagegateway:us-east-1:111122223333:gateway/sgw-12A3456B/volume/vol-1122AABB" - }, - "comments": { - "input": { - }, - "output": { - } - }, - "description": "Updates a snapshot schedule configured for a gateway volume.", - "id": "to-update-a-volume-snapshot-schedule-1472152757068", - "title": "To update a volume snapshot schedule" - } - ], - "UpdateVTLDeviceType": [ - { - "input": { - "DeviceType": "Medium Changer", - "VTLDeviceARN": "arn:aws:storagegateway:us-east-1:999999999999:gateway/sgw-12A3456B/device/AMZN_SGW-1FAD4876_MEDIACHANGER_00001" - }, - "output": { - "VTLDeviceARN": "arn:aws:storagegateway:us-east-1:999999999999:gateway/sgw-12A3456B/device/AMZN_SGW-1FAD4876_MEDIACHANGER_00001" - }, - "comments": { - "input": { - }, - "output": { - } - }, - "description": "Updates the type of medium changer in a gateway-VTL after a gateway-VTL is activated.", - "id": "to-update-a-vtl-device-type-1472153012967", - "title": "To update a VTL device type" - } - ] - } -} diff --git a/workshops/monte-carlo-on-ec2-spot-fleet/src/web/node_modules/aws-sdk/apis/storagegateway-2013-06-30.min.json b/workshops/monte-carlo-on-ec2-spot-fleet/src/web/node_modules/aws-sdk/apis/storagegateway-2013-06-30.min.json deleted file mode 100644 index 03e9e12f..00000000 --- a/workshops/monte-carlo-on-ec2-spot-fleet/src/web/node_modules/aws-sdk/apis/storagegateway-2013-06-30.min.json +++ /dev/null @@ -1,1709 +0,0 @@ -{ - "version": "2.0", - "metadata": { - "apiVersion": "2013-06-30", - "endpointPrefix": "storagegateway", - "jsonVersion": "1.1", - "protocol": "json", - "serviceFullName": "AWS Storage Gateway", - "signatureVersion": "v4", - "targetPrefix": "StorageGateway_20130630", - "uid": "storagegateway-2013-06-30" - }, - "operations": { - "ActivateGateway": { - "input": { - "type": "structure", - "required": [ - "ActivationKey", - "GatewayName", - "GatewayTimezone", - "GatewayRegion" - ], - "members": { - "ActivationKey": {}, - "GatewayName": {}, - "GatewayTimezone": {}, - "GatewayRegion": {}, - "GatewayType": {}, - "TapeDriveType": {}, - "MediumChangerType": {} - } - }, - "output": { - "type": "structure", - "members": { - "GatewayARN": {} - } - } - }, - "AddCache": { - "input": { - "type": "structure", - "required": [ - "GatewayARN", - "DiskIds" - ], - "members": { - "GatewayARN": {}, - "DiskIds": { - "shape": "Sc" - } - } - }, - "output": { - "type": "structure", - "members": { - "GatewayARN": {} - } - } - }, - "AddTagsToResource": { - "input": { - "type": "structure", - "required": [ - "ResourceARN", - "Tags" - ], - "members": { - "ResourceARN": {}, - "Tags": { - "shape": "Sh" - } - } - }, - "output": { - "type": "structure", - "members": { - "ResourceARN": {} - } - } - }, - "AddUploadBuffer": { - "input": { - "type": "structure", - "required": [ - "GatewayARN", - "DiskIds" - ], - "members": { - "GatewayARN": {}, - "DiskIds": { - "shape": "Sc" - } - } - }, - "output": { - "type": "structure", - "members": { - "GatewayARN": {} - } - } - }, - "AddWorkingStorage": { - "input": { - "type": "structure", - "required": [ - "GatewayARN", - "DiskIds" - ], - "members": { - "GatewayARN": {}, - "DiskIds": { - "shape": "Sc" - } - } - }, - "output": { - "type": "structure", - "members": { - "GatewayARN": {} - } - } - }, - "CancelArchival": { - "input": { - "type": "structure", - "required": [ - "GatewayARN", - "TapeARN" - ], - "members": { - "GatewayARN": {}, - "TapeARN": {} - } - }, - "output": { - "type": "structure", - "members": { - "TapeARN": {} - } - } - }, - "CancelRetrieval": { - "input": { - "type": "structure", - "required": [ - "GatewayARN", - "TapeARN" - ], - "members": { - "GatewayARN": {}, - "TapeARN": {} - } - }, - "output": { - "type": "structure", - "members": { - "TapeARN": {} - } - } - }, - "CreateCachediSCSIVolume": { - "input": { - "type": "structure", - "required": [ - "GatewayARN", - "VolumeSizeInBytes", - "TargetName", - "NetworkInterfaceId", - "ClientToken" - ], - "members": { - "GatewayARN": {}, - "VolumeSizeInBytes": { - "type": "long" - }, - "SnapshotId": {}, - "TargetName": {}, - "SourceVolumeARN": {}, - "NetworkInterfaceId": {}, - "ClientToken": {} - } - }, - "output": { - "type": "structure", - "members": { - "VolumeARN": {}, - "TargetARN": {} - } - } - }, - "CreateNFSFileShare": { - "input": { - "type": "structure", - "required": [ - "ClientToken", - "GatewayARN", - "Role", - "LocationARN" - ], - "members": { - "ClientToken": {}, - "NFSFileShareDefaults": { - "shape": "S15" - }, - "GatewayARN": {}, - "KMSEncrypted": { - "type": "boolean" - }, - "KMSKey": {}, - "Role": {}, - "LocationARN": {}, - "DefaultStorageClass": {}, - "ClientList": { - "shape": "S1d" - }, - "Squash": {}, - "ReadOnly": { - "type": "boolean" - } - } - }, - "output": { - "type": "structure", - "members": { - "FileShareARN": {} - } - } - }, - "CreateSnapshot": { - "input": { - "type": "structure", - "required": [ - "VolumeARN", - "SnapshotDescription" - ], - "members": { - "VolumeARN": {}, - "SnapshotDescription": {} - } - }, - "output": { - "type": "structure", - "members": { - "VolumeARN": {}, - "SnapshotId": {} - } - } - }, - "CreateSnapshotFromVolumeRecoveryPoint": { - "input": { - "type": "structure", - "required": [ - "VolumeARN", - "SnapshotDescription" - ], - "members": { - "VolumeARN": {}, - "SnapshotDescription": {} - } - }, - "output": { - "type": "structure", - "members": { - "SnapshotId": {}, - "VolumeARN": {}, - "VolumeRecoveryPointTime": {} - } - } - }, - "CreateStorediSCSIVolume": { - "input": { - "type": "structure", - "required": [ - "GatewayARN", - "DiskId", - "PreserveExistingData", - "TargetName", - "NetworkInterfaceId" - ], - "members": { - "GatewayARN": {}, - "DiskId": {}, - "SnapshotId": {}, - "PreserveExistingData": { - "type": "boolean" - }, - "TargetName": {}, - "NetworkInterfaceId": {} - } - }, - "output": { - "type": "structure", - "members": { - "VolumeARN": {}, - "VolumeSizeInBytes": { - "type": "long" - }, - "TargetARN": {} - } - } - }, - "CreateTapeWithBarcode": { - "input": { - "type": "structure", - "required": [ - "GatewayARN", - "TapeSizeInBytes", - "TapeBarcode" - ], - "members": { - "GatewayARN": {}, - "TapeSizeInBytes": { - "type": "long" - }, - "TapeBarcode": {} - } - }, - "output": { - "type": "structure", - "members": { - "TapeARN": {} - } - } - }, - "CreateTapes": { - "input": { - "type": "structure", - "required": [ - "GatewayARN", - "TapeSizeInBytes", - "ClientToken", - "NumTapesToCreate", - "TapeBarcodePrefix" - ], - "members": { - "GatewayARN": {}, - "TapeSizeInBytes": { - "type": "long" - }, - "ClientToken": {}, - "NumTapesToCreate": { - "type": "integer" - }, - "TapeBarcodePrefix": {} - } - }, - "output": { - "type": "structure", - "members": { - "TapeARNs": { - "shape": "S1z" - } - } - } - }, - "DeleteBandwidthRateLimit": { - "input": { - "type": "structure", - "required": [ - "GatewayARN", - "BandwidthType" - ], - "members": { - "GatewayARN": {}, - "BandwidthType": {} - } - }, - "output": { - "type": "structure", - "members": { - "GatewayARN": {} - } - } - }, - "DeleteChapCredentials": { - "input": { - "type": "structure", - "required": [ - "TargetARN", - "InitiatorName" - ], - "members": { - "TargetARN": {}, - "InitiatorName": {} - } - }, - "output": { - "type": "structure", - "members": { - "TargetARN": {}, - "InitiatorName": {} - } - } - }, - "DeleteFileShare": { - "input": { - "type": "structure", - "required": [ - "FileShareARN" - ], - "members": { - "FileShareARN": {}, - "ForceDelete": { - "type": "boolean" - } - } - }, - "output": { - "type": "structure", - "members": { - "FileShareARN": {} - } - } - }, - "DeleteGateway": { - "input": { - "type": "structure", - "required": [ - "GatewayARN" - ], - "members": { - "GatewayARN": {} - } - }, - "output": { - "type": "structure", - "members": { - "GatewayARN": {} - } - } - }, - "DeleteSnapshotSchedule": { - "input": { - "type": "structure", - "required": [ - "VolumeARN" - ], - "members": { - "VolumeARN": {} - } - }, - "output": { - "type": "structure", - "members": { - "VolumeARN": {} - } - } - }, - "DeleteTape": { - "input": { - "type": "structure", - "required": [ - "GatewayARN", - "TapeARN" - ], - "members": { - "GatewayARN": {}, - "TapeARN": {} - } - }, - "output": { - "type": "structure", - "members": { - "TapeARN": {} - } - } - }, - "DeleteTapeArchive": { - "input": { - "type": "structure", - "required": [ - "TapeARN" - ], - "members": { - "TapeARN": {} - } - }, - "output": { - "type": "structure", - "members": { - "TapeARN": {} - } - } - }, - "DeleteVolume": { - "input": { - "type": "structure", - "required": [ - "VolumeARN" - ], - "members": { - "VolumeARN": {} - } - }, - "output": { - "type": "structure", - "members": { - "VolumeARN": {} - } - } - }, - "DescribeBandwidthRateLimit": { - "input": { - "type": "structure", - "required": [ - "GatewayARN" - ], - "members": { - "GatewayARN": {} - } - }, - "output": { - "type": "structure", - "members": { - "GatewayARN": {}, - "AverageUploadRateLimitInBitsPerSec": { - "type": "long" - }, - "AverageDownloadRateLimitInBitsPerSec": { - "type": "long" - } - } - } - }, - "DescribeCache": { - "input": { - "type": "structure", - "required": [ - "GatewayARN" - ], - "members": { - "GatewayARN": {} - } - }, - "output": { - "type": "structure", - "members": { - "GatewayARN": {}, - "DiskIds": { - "shape": "Sc" - }, - "CacheAllocatedInBytes": { - "type": "long" - }, - "CacheUsedPercentage": { - "type": "double" - }, - "CacheDirtyPercentage": { - "type": "double" - }, - "CacheHitPercentage": { - "type": "double" - }, - "CacheMissPercentage": { - "type": "double" - } - } - } - }, - "DescribeCachediSCSIVolumes": { - "input": { - "type": "structure", - "required": [ - "VolumeARNs" - ], - "members": { - "VolumeARNs": { - "shape": "S2q" - } - } - }, - "output": { - "type": "structure", - "members": { - "CachediSCSIVolumes": { - "type": "list", - "member": { - "type": "structure", - "members": { - "VolumeARN": {}, - "VolumeId": {}, - "VolumeType": {}, - "VolumeStatus": {}, - "VolumeSizeInBytes": { - "type": "long" - }, - "VolumeProgress": { - "type": "double" - }, - "SourceSnapshotId": {}, - "VolumeiSCSIAttributes": { - "shape": "S2y" - }, - "CreatedDate": { - "type": "timestamp" - } - } - } - } - } - } - }, - "DescribeChapCredentials": { - "input": { - "type": "structure", - "required": [ - "TargetARN" - ], - "members": { - "TargetARN": {} - } - }, - "output": { - "type": "structure", - "members": { - "ChapCredentials": { - "type": "list", - "member": { - "type": "structure", - "members": { - "TargetARN": {}, - "SecretToAuthenticateInitiator": {}, - "InitiatorName": {}, - "SecretToAuthenticateTarget": {} - } - } - } - } - } - }, - "DescribeGatewayInformation": { - "input": { - "type": "structure", - "required": [ - "GatewayARN" - ], - "members": { - "GatewayARN": {} - } - }, - "output": { - "type": "structure", - "members": { - "GatewayARN": {}, - "GatewayId": {}, - "GatewayName": {}, - "GatewayTimezone": {}, - "GatewayState": {}, - "GatewayNetworkInterfaces": { - "type": "list", - "member": { - "type": "structure", - "members": { - "Ipv4Address": {}, - "MacAddress": {}, - "Ipv6Address": {} - } - } - }, - "GatewayType": {}, - "NextUpdateAvailabilityDate": {}, - "LastSoftwareUpdate": {} - } - } - }, - "DescribeMaintenanceStartTime": { - "input": { - "type": "structure", - "required": [ - "GatewayARN" - ], - "members": { - "GatewayARN": {} - } - }, - "output": { - "type": "structure", - "members": { - "GatewayARN": {}, - "HourOfDay": { - "type": "integer" - }, - "MinuteOfHour": { - "type": "integer" - }, - "DayOfWeek": { - "type": "integer" - }, - "Timezone": {} - } - } - }, - "DescribeNFSFileShares": { - "input": { - "type": "structure", - "required": [ - "FileShareARNList" - ], - "members": { - "FileShareARNList": { - "type": "list", - "member": {} - } - } - }, - "output": { - "type": "structure", - "members": { - "NFSFileShareInfoList": { - "type": "list", - "member": { - "type": "structure", - "members": { - "NFSFileShareDefaults": { - "shape": "S15" - }, - "FileShareARN": {}, - "FileShareId": {}, - "FileShareStatus": {}, - "GatewayARN": {}, - "KMSEncrypted": { - "type": "boolean" - }, - "KMSKey": {}, - "Path": {}, - "Role": {}, - "LocationARN": {}, - "DefaultStorageClass": {}, - "ClientList": { - "shape": "S1d" - }, - "Squash": {}, - "ReadOnly": { - "type": "boolean" - } - } - } - } - } - } - }, - "DescribeSnapshotSchedule": { - "input": { - "type": "structure", - "required": [ - "VolumeARN" - ], - "members": { - "VolumeARN": {} - } - }, - "output": { - "type": "structure", - "members": { - "VolumeARN": {}, - "StartAt": { - "type": "integer" - }, - "RecurrenceInHours": { - "type": "integer" - }, - "Description": {}, - "Timezone": {} - } - } - }, - "DescribeStorediSCSIVolumes": { - "input": { - "type": "structure", - "required": [ - "VolumeARNs" - ], - "members": { - "VolumeARNs": { - "shape": "S2q" - } - } - }, - "output": { - "type": "structure", - "members": { - "StorediSCSIVolumes": { - "type": "list", - "member": { - "type": "structure", - "members": { - "VolumeARN": {}, - "VolumeId": {}, - "VolumeType": {}, - "VolumeStatus": {}, - "VolumeSizeInBytes": { - "type": "long" - }, - "VolumeProgress": { - "type": "double" - }, - "VolumeDiskId": {}, - "SourceSnapshotId": {}, - "PreservedExistingData": { - "type": "boolean" - }, - "VolumeiSCSIAttributes": { - "shape": "S2y" - }, - "CreatedDate": { - "type": "timestamp" - } - } - } - } - } - } - }, - "DescribeTapeArchives": { - "input": { - "type": "structure", - "members": { - "TapeARNs": { - "shape": "S1z" - }, - "Marker": {}, - "Limit": { - "type": "integer" - } - } - }, - "output": { - "type": "structure", - "members": { - "TapeArchives": { - "type": "list", - "member": { - "type": "structure", - "members": { - "TapeARN": {}, - "TapeBarcode": {}, - "TapeCreatedDate": { - "type": "timestamp" - }, - "TapeSizeInBytes": { - "type": "long" - }, - "CompletionTime": { - "type": "timestamp" - }, - "RetrievedTo": {}, - "TapeStatus": {}, - "TapeUsedInBytes": { - "type": "long" - } - } - } - }, - "Marker": {} - } - } - }, - "DescribeTapeRecoveryPoints": { - "input": { - "type": "structure", - "required": [ - "GatewayARN" - ], - "members": { - "GatewayARN": {}, - "Marker": {}, - "Limit": { - "type": "integer" - } - } - }, - "output": { - "type": "structure", - "members": { - "GatewayARN": {}, - "TapeRecoveryPointInfos": { - "type": "list", - "member": { - "type": "structure", - "members": { - "TapeARN": {}, - "TapeRecoveryPointTime": { - "type": "timestamp" - }, - "TapeSizeInBytes": { - "type": "long" - }, - "TapeStatus": {} - } - } - }, - "Marker": {} - } - } - }, - "DescribeTapes": { - "input": { - "type": "structure", - "required": [ - "GatewayARN" - ], - "members": { - "GatewayARN": {}, - "TapeARNs": { - "shape": "S1z" - }, - "Marker": {}, - "Limit": { - "type": "integer" - } - } - }, - "output": { - "type": "structure", - "members": { - "Tapes": { - "type": "list", - "member": { - "type": "structure", - "members": { - "TapeARN": {}, - "TapeBarcode": {}, - "TapeCreatedDate": { - "type": "timestamp" - }, - "TapeSizeInBytes": { - "type": "long" - }, - "TapeStatus": {}, - "VTLDevice": {}, - "Progress": { - "type": "double" - }, - "TapeUsedInBytes": { - "type": "long" - } - } - } - }, - "Marker": {} - } - } - }, - "DescribeUploadBuffer": { - "input": { - "type": "structure", - "required": [ - "GatewayARN" - ], - "members": { - "GatewayARN": {} - } - }, - "output": { - "type": "structure", - "members": { - "GatewayARN": {}, - "DiskIds": { - "shape": "Sc" - }, - "UploadBufferUsedInBytes": { - "type": "long" - }, - "UploadBufferAllocatedInBytes": { - "type": "long" - } - } - } - }, - "DescribeVTLDevices": { - "input": { - "type": "structure", - "required": [ - "GatewayARN" - ], - "members": { - "GatewayARN": {}, - "VTLDeviceARNs": { - "type": "list", - "member": {} - }, - "Marker": {}, - "Limit": { - "type": "integer" - } - } - }, - "output": { - "type": "structure", - "members": { - "GatewayARN": {}, - "VTLDevices": { - "type": "list", - "member": { - "type": "structure", - "members": { - "VTLDeviceARN": {}, - "VTLDeviceType": {}, - "VTLDeviceVendor": {}, - "VTLDeviceProductIdentifier": {}, - "DeviceiSCSIAttributes": { - "type": "structure", - "members": { - "TargetARN": {}, - "NetworkInterfaceId": {}, - "NetworkInterfacePort": { - "type": "integer" - }, - "ChapEnabled": { - "type": "boolean" - } - } - } - } - } - }, - "Marker": {} - } - } - }, - "DescribeWorkingStorage": { - "input": { - "type": "structure", - "required": [ - "GatewayARN" - ], - "members": { - "GatewayARN": {} - } - }, - "output": { - "type": "structure", - "members": { - "GatewayARN": {}, - "DiskIds": { - "shape": "Sc" - }, - "WorkingStorageUsedInBytes": { - "type": "long" - }, - "WorkingStorageAllocatedInBytes": { - "type": "long" - } - } - } - }, - "DisableGateway": { - "input": { - "type": "structure", - "required": [ - "GatewayARN" - ], - "members": { - "GatewayARN": {} - } - }, - "output": { - "type": "structure", - "members": { - "GatewayARN": {} - } - } - }, - "ListFileShares": { - "input": { - "type": "structure", - "members": { - "GatewayARN": {}, - "Limit": { - "type": "integer" - }, - "Marker": {} - } - }, - "output": { - "type": "structure", - "members": { - "Marker": {}, - "NextMarker": {}, - "FileShareInfoList": { - "type": "list", - "member": { - "type": "structure", - "members": { - "FileShareARN": {}, - "FileShareId": {}, - "FileShareStatus": {}, - "GatewayARN": {} - } - } - } - } - } - }, - "ListGateways": { - "input": { - "type": "structure", - "members": { - "Marker": {}, - "Limit": { - "type": "integer" - } - } - }, - "output": { - "type": "structure", - "members": { - "Gateways": { - "type": "list", - "member": { - "type": "structure", - "members": { - "GatewayId": {}, - "GatewayARN": {}, - "GatewayType": {}, - "GatewayOperationalState": {}, - "GatewayName": {} - } - } - }, - "Marker": {} - } - } - }, - "ListLocalDisks": { - "input": { - "type": "structure", - "required": [ - "GatewayARN" - ], - "members": { - "GatewayARN": {} - } - }, - "output": { - "type": "structure", - "members": { - "GatewayARN": {}, - "Disks": { - "type": "list", - "member": { - "type": "structure", - "members": { - "DiskId": {}, - "DiskPath": {}, - "DiskNode": {}, - "DiskStatus": {}, - "DiskSizeInBytes": { - "type": "long" - }, - "DiskAllocationType": {}, - "DiskAllocationResource": {} - } - } - } - } - } - }, - "ListTagsForResource": { - "input": { - "type": "structure", - "required": [ - "ResourceARN" - ], - "members": { - "ResourceARN": {}, - "Marker": {}, - "Limit": { - "type": "integer" - } - } - }, - "output": { - "type": "structure", - "members": { - "ResourceARN": {}, - "Marker": {}, - "Tags": { - "shape": "Sh" - } - } - } - }, - "ListTapes": { - "input": { - "type": "structure", - "members": { - "TapeARNs": { - "shape": "S1z" - }, - "Marker": {}, - "Limit": { - "type": "integer" - } - } - }, - "output": { - "type": "structure", - "members": { - "TapeInfos": { - "type": "list", - "member": { - "type": "structure", - "members": { - "TapeARN": {}, - "TapeBarcode": {}, - "TapeSizeInBytes": { - "type": "long" - }, - "TapeStatus": {}, - "GatewayARN": {} - } - } - }, - "Marker": {} - } - } - }, - "ListVolumeInitiators": { - "input": { - "type": "structure", - "required": [ - "VolumeARN" - ], - "members": { - "VolumeARN": {} - } - }, - "output": { - "type": "structure", - "members": { - "Initiators": { - "type": "list", - "member": {} - } - } - } - }, - "ListVolumeRecoveryPoints": { - "input": { - "type": "structure", - "required": [ - "GatewayARN" - ], - "members": { - "GatewayARN": {} - } - }, - "output": { - "type": "structure", - "members": { - "GatewayARN": {}, - "VolumeRecoveryPointInfos": { - "type": "list", - "member": { - "type": "structure", - "members": { - "VolumeARN": {}, - "VolumeSizeInBytes": { - "type": "long" - }, - "VolumeUsageInBytes": { - "type": "long" - }, - "VolumeRecoveryPointTime": {} - } - } - } - } - } - }, - "ListVolumes": { - "input": { - "type": "structure", - "members": { - "GatewayARN": {}, - "Marker": {}, - "Limit": { - "type": "integer" - } - } - }, - "output": { - "type": "structure", - "members": { - "GatewayARN": {}, - "Marker": {}, - "VolumeInfos": { - "type": "list", - "member": { - "type": "structure", - "members": { - "VolumeARN": {}, - "VolumeId": {}, - "GatewayARN": {}, - "GatewayId": {}, - "VolumeType": {}, - "VolumeSizeInBytes": { - "type": "long" - } - } - } - } - } - } - }, - "RefreshCache": { - "input": { - "type": "structure", - "required": [ - "FileShareARN" - ], - "members": { - "FileShareARN": {} - } - }, - "output": { - "type": "structure", - "members": { - "FileShareARN": {} - } - } - }, - "RemoveTagsFromResource": { - "input": { - "type": "structure", - "required": [ - "ResourceARN", - "TagKeys" - ], - "members": { - "ResourceARN": {}, - "TagKeys": { - "type": "list", - "member": {} - } - } - }, - "output": { - "type": "structure", - "members": { - "ResourceARN": {} - } - } - }, - "ResetCache": { - "input": { - "type": "structure", - "required": [ - "GatewayARN" - ], - "members": { - "GatewayARN": {} - } - }, - "output": { - "type": "structure", - "members": { - "GatewayARN": {} - } - } - }, - "RetrieveTapeArchive": { - "input": { - "type": "structure", - "required": [ - "TapeARN", - "GatewayARN" - ], - "members": { - "TapeARN": {}, - "GatewayARN": {} - } - }, - "output": { - "type": "structure", - "members": { - "TapeARN": {} - } - } - }, - "RetrieveTapeRecoveryPoint": { - "input": { - "type": "structure", - "required": [ - "TapeARN", - "GatewayARN" - ], - "members": { - "TapeARN": {}, - "GatewayARN": {} - } - }, - "output": { - "type": "structure", - "members": { - "TapeARN": {} - } - } - }, - "SetLocalConsolePassword": { - "input": { - "type": "structure", - "required": [ - "GatewayARN", - "LocalConsolePassword" - ], - "members": { - "GatewayARN": {}, - "LocalConsolePassword": { - "type": "string", - "sensitive": true - } - } - }, - "output": { - "type": "structure", - "members": { - "GatewayARN": {} - } - } - }, - "ShutdownGateway": { - "input": { - "type": "structure", - "required": [ - "GatewayARN" - ], - "members": { - "GatewayARN": {} - } - }, - "output": { - "type": "structure", - "members": { - "GatewayARN": {} - } - } - }, - "StartGateway": { - "input": { - "type": "structure", - "required": [ - "GatewayARN" - ], - "members": { - "GatewayARN": {} - } - }, - "output": { - "type": "structure", - "members": { - "GatewayARN": {} - } - } - }, - "UpdateBandwidthRateLimit": { - "input": { - "type": "structure", - "required": [ - "GatewayARN" - ], - "members": { - "GatewayARN": {}, - "AverageUploadRateLimitInBitsPerSec": { - "type": "long" - }, - "AverageDownloadRateLimitInBitsPerSec": { - "type": "long" - } - } - }, - "output": { - "type": "structure", - "members": { - "GatewayARN": {} - } - } - }, - "UpdateChapCredentials": { - "input": { - "type": "structure", - "required": [ - "TargetARN", - "SecretToAuthenticateInitiator", - "InitiatorName" - ], - "members": { - "TargetARN": {}, - "SecretToAuthenticateInitiator": {}, - "InitiatorName": {}, - "SecretToAuthenticateTarget": {} - } - }, - "output": { - "type": "structure", - "members": { - "TargetARN": {}, - "InitiatorName": {} - } - } - }, - "UpdateGatewayInformation": { - "input": { - "type": "structure", - "required": [ - "GatewayARN" - ], - "members": { - "GatewayARN": {}, - "GatewayName": {}, - "GatewayTimezone": {} - } - }, - "output": { - "type": "structure", - "members": { - "GatewayARN": {}, - "GatewayName": {} - } - } - }, - "UpdateGatewaySoftwareNow": { - "input": { - "type": "structure", - "required": [ - "GatewayARN" - ], - "members": { - "GatewayARN": {} - } - }, - "output": { - "type": "structure", - "members": { - "GatewayARN": {} - } - } - }, - "UpdateMaintenanceStartTime": { - "input": { - "type": "structure", - "required": [ - "GatewayARN", - "HourOfDay", - "MinuteOfHour", - "DayOfWeek" - ], - "members": { - "GatewayARN": {}, - "HourOfDay": { - "type": "integer" - }, - "MinuteOfHour": { - "type": "integer" - }, - "DayOfWeek": { - "type": "integer" - } - } - }, - "output": { - "type": "structure", - "members": { - "GatewayARN": {} - } - } - }, - "UpdateNFSFileShare": { - "input": { - "type": "structure", - "required": [ - "FileShareARN" - ], - "members": { - "FileShareARN": {}, - "KMSEncrypted": { - "type": "boolean" - }, - "KMSKey": {}, - "NFSFileShareDefaults": { - "shape": "S15" - }, - "DefaultStorageClass": {}, - "ClientList": { - "shape": "S1d" - }, - "Squash": {}, - "ReadOnly": { - "type": "boolean" - } - } - }, - "output": { - "type": "structure", - "members": { - "FileShareARN": {} - } - } - }, - "UpdateSnapshotSchedule": { - "input": { - "type": "structure", - "required": [ - "VolumeARN", - "StartAt", - "RecurrenceInHours" - ], - "members": { - "VolumeARN": {}, - "StartAt": { - "type": "integer" - }, - "RecurrenceInHours": { - "type": "integer" - }, - "Description": {} - } - }, - "output": { - "type": "structure", - "members": { - "VolumeARN": {} - } - } - }, - "UpdateVTLDeviceType": { - "input": { - "type": "structure", - "required": [ - "VTLDeviceARN", - "DeviceType" - ], - "members": { - "VTLDeviceARN": {}, - "DeviceType": {} - } - }, - "output": { - "type": "structure", - "members": { - "VTLDeviceARN": {} - } - } - } - }, - "shapes": { - "Sc": { - "type": "list", - "member": {} - }, - "Sh": { - "type": "list", - "member": { - "type": "structure", - "required": [ - "Key", - "Value" - ], - "members": { - "Key": {}, - "Value": {} - } - } - }, - "S15": { - "type": "structure", - "members": { - "FileMode": {}, - "DirectoryMode": {}, - "GroupId": { - "type": "long" - }, - "OwnerId": { - "type": "long" - } - } - }, - "S1d": { - "type": "list", - "member": {} - }, - "S1z": { - "type": "list", - "member": {} - }, - "S2q": { - "type": "list", - "member": {} - }, - "S2y": { - "type": "structure", - "members": { - "TargetARN": {}, - "NetworkInterfaceId": {}, - "NetworkInterfacePort": { - "type": "integer" - }, - "LunNumber": { - "type": "integer" - }, - "ChapEnabled": { - "type": "boolean" - } - } - } - } -} \ No newline at end of file diff --git a/workshops/monte-carlo-on-ec2-spot-fleet/src/web/node_modules/aws-sdk/apis/storagegateway-2013-06-30.paginators.json b/workshops/monte-carlo-on-ec2-spot-fleet/src/web/node_modules/aws-sdk/apis/storagegateway-2013-06-30.paginators.json deleted file mode 100644 index 24130821..00000000 --- a/workshops/monte-carlo-on-ec2-spot-fleet/src/web/node_modules/aws-sdk/apis/storagegateway-2013-06-30.paginators.json +++ /dev/null @@ -1,52 +0,0 @@ -{ - "pagination": { - "DescribeCachediSCSIVolumes": { - "result_key": "CachediSCSIVolumes" - }, - "DescribeStorediSCSIVolumes": { - "result_key": "StorediSCSIVolumes" - }, - "DescribeTapeArchives": { - "input_token": "Marker", - "limit_key": "Limit", - "output_token": "Marker", - "result_key": "TapeArchives" - }, - "DescribeTapeRecoveryPoints": { - "input_token": "Marker", - "limit_key": "Limit", - "output_token": "Marker", - "result_key": "TapeRecoveryPointInfos" - }, - "DescribeTapes": { - "input_token": "Marker", - "limit_key": "Limit", - "output_token": "Marker", - "result_key": "Tapes" - }, - "DescribeVTLDevices": { - "input_token": "Marker", - "limit_key": "Limit", - "output_token": "Marker", - "result_key": "VTLDevices" - }, - "ListGateways": { - "input_token": "Marker", - "limit_key": "Limit", - "output_token": "Marker", - "result_key": "Gateways" - }, - "ListLocalDisks": { - "result_key": "Disks" - }, - "ListVolumeRecoveryPoints": { - "result_key": "VolumeRecoveryPointInfos" - }, - "ListVolumes": { - "input_token": "Marker", - "limit_key": "Limit", - "output_token": "Marker", - "result_key": "VolumeInfos" - } - } -} \ No newline at end of file diff --git a/workshops/monte-carlo-on-ec2-spot-fleet/src/web/node_modules/aws-sdk/apis/streams.dynamodb-2012-08-10.examples.json b/workshops/monte-carlo-on-ec2-spot-fleet/src/web/node_modules/aws-sdk/apis/streams.dynamodb-2012-08-10.examples.json deleted file mode 100644 index 8287e2c4..00000000 --- a/workshops/monte-carlo-on-ec2-spot-fleet/src/web/node_modules/aws-sdk/apis/streams.dynamodb-2012-08-10.examples.json +++ /dev/null @@ -1,212 +0,0 @@ -{ - "version": "1.0", - "examples": { - "DescribeStream": [ - { - "input": { - "StreamArn": "arn:aws:dynamodb:us-west-2:111122223333:table/Forum/stream/2015-05-20T20:51:10.252" - }, - "output": { - "StreamDescription": { - "CreationRequestDateTime": "Wed May 20 13:51:10 PDT 2015", - "KeySchema": [ - { - "AttributeName": "ForumName", - "KeyType": "HASH" - }, - { - "AttributeName": "Subject", - "KeyType": "RANGE" - } - ], - "Shards": [ - { - "SequenceNumberRange": { - "EndingSequenceNumber": "20500000000000000910398", - "StartingSequenceNumber": "20500000000000000910398" - }, - "ShardId": "shardId-00000001414562045508-2bac9cd2" - }, - { - "ParentShardId": "shardId-00000001414562045508-2bac9cd2", - "SequenceNumberRange": { - "EndingSequenceNumber": "820400000000000001192334", - "StartingSequenceNumber": "820400000000000001192334" - }, - "ShardId": "shardId-00000001414576573621-f55eea83" - }, - { - "ParentShardId": "shardId-00000001414576573621-f55eea83", - "SequenceNumberRange": { - "EndingSequenceNumber": "1683700000000000001135967", - "StartingSequenceNumber": "1683700000000000001135967" - }, - "ShardId": "shardId-00000001414592258131-674fd923" - }, - { - "ParentShardId": "shardId-00000001414592258131-674fd923", - "SequenceNumberRange": { - "StartingSequenceNumber": "2574600000000000000935255" - }, - "ShardId": "shardId-00000001414608446368-3a1afbaf" - } - ], - "StreamArn": "arn:aws:dynamodb:us-west-2:111122223333:table/Forum/stream/2015-05-20T20:51:10.252", - "StreamLabel": "2015-05-20T20:51:10.252", - "StreamStatus": "ENABLED", - "StreamViewType": "NEW_AND_OLD_IMAGES", - "TableName": "Forum" - } - }, - "comments": { - "input": { - }, - "output": { - } - }, - "description": "The following example describes a stream with a given stream ARN.", - "id": "to-describe-a-stream-with-a-given-stream-arn-1473457835200", - "title": "To describe a stream with a given stream ARN" - } - ], - "GetRecords": [ - { - "input": { - "ShardIterator": "arn:aws:dynamodb:us-west-2:111122223333:table/Forum/stream/2015-05-20T20:51:10.252|1|AAAAAAAAAAEvJp6D+zaQ... ..." - }, - "output": { - "NextShardIterator": "arn:aws:dynamodb:us-west-2:111122223333:table/Forum/stream/2015-05-20T20:51:10.252|1|AAAAAAAAAAGQBYshYDEe ... ...", - "Records": [ - { - "awsRegion": "us-west-2", - "dynamodb": { - "ApproximateCreationDateTime": "1.46480646E9", - "Keys": { - "ForumName": { - "S": "DynamoDB" - }, - "Subject": { - "S": "DynamoDB Thread 3" - } - }, - "SequenceNumber": "300000000000000499659", - "SizeBytes": 41, - "StreamViewType": "KEYS_ONLY" - }, - "eventID": "e2fd9c34eff2d779b297b26f5fef4206", - "eventName": "INSERT", - "eventSource": "aws:dynamodb", - "eventVersion": "1.0" - }, - { - "awsRegion": "us-west-2", - "dynamodb": { - "ApproximateCreationDateTime": "1.46480527E9", - "Keys": { - "ForumName": { - "S": "DynamoDB" - }, - "Subject": { - "S": "DynamoDB Thread 1" - } - }, - "SequenceNumber": "400000000000000499660", - "SizeBytes": 41, - "StreamViewType": "KEYS_ONLY" - }, - "eventID": "4b25bd0da9a181a155114127e4837252", - "eventName": "MODIFY", - "eventSource": "aws:dynamodb", - "eventVersion": "1.0" - }, - { - "awsRegion": "us-west-2", - "dynamodb": { - "ApproximateCreationDateTime": "1.46480646E9", - "Keys": { - "ForumName": { - "S": "DynamoDB" - }, - "Subject": { - "S": "DynamoDB Thread 2" - } - }, - "SequenceNumber": "500000000000000499661", - "SizeBytes": 41, - "StreamViewType": "KEYS_ONLY" - }, - "eventID": "740280c73a3df7842edab3548a1b08ad", - "eventName": "REMOVE", - "eventSource": "aws:dynamodb", - "eventVersion": "1.0" - } - ] - }, - "comments": { - "input": { - }, - "output": { - } - }, - "description": "The following example retrieves all the stream records from a shard.", - "id": "to-retrieve-all-the-stream-records-from-a-shard-1473707781419", - "title": "To retrieve all the stream records from a shard" - } - ], - "GetShardIterator": [ - { - "input": { - "ShardId": "00000001414576573621-f55eea83", - "ShardIteratorType": "TRIM_HORIZON", - "StreamArn": "arn:aws:dynamodb:us-west-2:111122223333:table/Forum/stream/2015-05-20T20:51:10.252" - }, - "output": { - "ShardIterator": "arn:aws:dynamodb:us-west-2:111122223333:table/Forum/stream/2015-05-20T20:51:10.252|1|AAAAAAAAAAEvJp6D+zaQ... ..." - }, - "comments": { - "input": { - }, - "output": { - } - }, - "description": "The following example returns a shard iterator for the provided stream ARN and shard ID.", - "id": "to-obtain-a-shard-iterator-for-the-provided-stream-arn-and-shard-id-1473459941476", - "title": "To obtain a shard iterator for the provided stream ARN and shard ID" - } - ], - "ListStreams": [ - { - "input": { - }, - "output": { - "Streams": [ - { - "StreamArn": "arn:aws:dynamodb:us-wesst-2:111122223333:table/Forum/stream/2015-05-20T20:51:10.252", - "StreamLabel": "2015-05-20T20:51:10.252", - "TableName": "Forum" - }, - { - "StreamArn": "arn:aws:dynamodb:us-west-2:111122223333:table/Forum/stream/2015-05-20T20:50:02.714", - "StreamLabel": "2015-05-20T20:50:02.714", - "TableName": "Forum" - }, - { - "StreamArn": "arn:aws:dynamodb:us-west-2:111122223333:table/Forum/stream/2015-05-19T23:03:50.641", - "StreamLabel": "2015-05-19T23:03:50.641", - "TableName": "Forum" - } - ] - }, - "comments": { - "input": { - }, - "output": { - } - }, - "description": "The following example lists all of the stream ARNs.", - "id": "to-list-all-of-the-stream-arns--1473459534285", - "title": "To list all of the stream ARNs " - } - ] - } -} diff --git a/workshops/monte-carlo-on-ec2-spot-fleet/src/web/node_modules/aws-sdk/apis/streams.dynamodb-2012-08-10.min.json b/workshops/monte-carlo-on-ec2-spot-fleet/src/web/node_modules/aws-sdk/apis/streams.dynamodb-2012-08-10.min.json deleted file mode 100644 index 79e683cb..00000000 --- a/workshops/monte-carlo-on-ec2-spot-fleet/src/web/node_modules/aws-sdk/apis/streams.dynamodb-2012-08-10.min.json +++ /dev/null @@ -1,246 +0,0 @@ -{ - "version": "2.0", - "metadata": { - "apiVersion": "2012-08-10", - "endpointPrefix": "streams.dynamodb", - "jsonVersion": "1.0", - "protocol": "json", - "serviceFullName": "Amazon DynamoDB Streams", - "signatureVersion": "v4", - "signingName": "dynamodb", - "targetPrefix": "DynamoDBStreams_20120810", - "uid": "streams-dynamodb-2012-08-10" - }, - "operations": { - "DescribeStream": { - "input": { - "type": "structure", - "required": [ - "StreamArn" - ], - "members": { - "StreamArn": {}, - "Limit": { - "type": "integer" - }, - "ExclusiveStartShardId": {} - } - }, - "output": { - "type": "structure", - "members": { - "StreamDescription": { - "type": "structure", - "members": { - "StreamArn": {}, - "StreamLabel": {}, - "StreamStatus": {}, - "StreamViewType": {}, - "CreationRequestDateTime": { - "type": "timestamp" - }, - "TableName": {}, - "KeySchema": { - "type": "list", - "member": { - "type": "structure", - "required": [ - "AttributeName", - "KeyType" - ], - "members": { - "AttributeName": {}, - "KeyType": {} - } - } - }, - "Shards": { - "type": "list", - "member": { - "type": "structure", - "members": { - "ShardId": {}, - "SequenceNumberRange": { - "type": "structure", - "members": { - "StartingSequenceNumber": {}, - "EndingSequenceNumber": {} - } - }, - "ParentShardId": {} - } - } - }, - "LastEvaluatedShardId": {} - } - } - } - } - }, - "GetRecords": { - "input": { - "type": "structure", - "required": [ - "ShardIterator" - ], - "members": { - "ShardIterator": {}, - "Limit": { - "type": "integer" - } - } - }, - "output": { - "type": "structure", - "members": { - "Records": { - "type": "list", - "member": { - "type": "structure", - "members": { - "eventID": {}, - "eventName": {}, - "eventVersion": {}, - "eventSource": {}, - "awsRegion": {}, - "dynamodb": { - "type": "structure", - "members": { - "ApproximateCreationDateTime": { - "type": "timestamp" - }, - "Keys": { - "shape": "Sr" - }, - "NewImage": { - "shape": "Sr" - }, - "OldImage": { - "shape": "Sr" - }, - "SequenceNumber": {}, - "SizeBytes": { - "type": "long" - }, - "StreamViewType": {} - } - }, - "userIdentity": { - "type": "structure", - "members": { - "PrincipalId": {}, - "Type": {} - } - } - } - } - }, - "NextShardIterator": {} - } - } - }, - "GetShardIterator": { - "input": { - "type": "structure", - "required": [ - "StreamArn", - "ShardId", - "ShardIteratorType" - ], - "members": { - "StreamArn": {}, - "ShardId": {}, - "ShardIteratorType": {}, - "SequenceNumber": {} - } - }, - "output": { - "type": "structure", - "members": { - "ShardIterator": {} - } - } - }, - "ListStreams": { - "input": { - "type": "structure", - "members": { - "TableName": {}, - "Limit": { - "type": "integer" - }, - "ExclusiveStartStreamArn": {} - } - }, - "output": { - "type": "structure", - "members": { - "Streams": { - "type": "list", - "member": { - "type": "structure", - "members": { - "StreamArn": {}, - "TableName": {}, - "StreamLabel": {} - } - } - }, - "LastEvaluatedStreamArn": {} - } - } - } - }, - "shapes": { - "Sr": { - "type": "map", - "key": {}, - "value": { - "shape": "St" - } - }, - "St": { - "type": "structure", - "members": { - "S": {}, - "N": {}, - "B": { - "type": "blob" - }, - "SS": { - "type": "list", - "member": {} - }, - "NS": { - "type": "list", - "member": {} - }, - "BS": { - "type": "list", - "member": { - "type": "blob" - } - }, - "M": { - "type": "map", - "key": {}, - "value": { - "shape": "St" - } - }, - "L": { - "type": "list", - "member": { - "shape": "St" - } - }, - "NULL": { - "type": "boolean" - }, - "BOOL": { - "type": "boolean" - } - } - } - } -} \ No newline at end of file diff --git a/workshops/monte-carlo-on-ec2-spot-fleet/src/web/node_modules/aws-sdk/apis/streams.dynamodb-2012-08-10.paginators.json b/workshops/monte-carlo-on-ec2-spot-fleet/src/web/node_modules/aws-sdk/apis/streams.dynamodb-2012-08-10.paginators.json deleted file mode 100644 index 5677bd8e..00000000 --- a/workshops/monte-carlo-on-ec2-spot-fleet/src/web/node_modules/aws-sdk/apis/streams.dynamodb-2012-08-10.paginators.json +++ /dev/null @@ -1,4 +0,0 @@ -{ - "pagination": { - } -} diff --git a/workshops/monte-carlo-on-ec2-spot-fleet/src/web/node_modules/aws-sdk/apis/sts-2011-06-15.examples.json b/workshops/monte-carlo-on-ec2-spot-fleet/src/web/node_modules/aws-sdk/apis/sts-2011-06-15.examples.json deleted file mode 100644 index 84442a10..00000000 --- a/workshops/monte-carlo-on-ec2-spot-fleet/src/web/node_modules/aws-sdk/apis/sts-2011-06-15.examples.json +++ /dev/null @@ -1,206 +0,0 @@ -{ - "version": "1.0", - "examples": { - "AssumeRole": [ - { - "input": { - "DurationSeconds": 3600, - "ExternalId": "123ABC", - "Policy": "{\"Version\":\"2012-10-17\",\"Statement\":[{\"Sid\":\"Stmt1\",\"Effect\":\"Allow\",\"Action\":\"s3:*\",\"Resource\":\"*\"}]}", - "RoleArn": "arn:aws:iam::123456789012:role/demo", - "RoleSessionName": "Bob" - }, - "output": { - "AssumedRoleUser": { - "Arn": "arn:aws:sts::123456789012:assumed-role/demo/Bob", - "AssumedRoleId": "ARO123EXAMPLE123:Bob" - }, - "Credentials": { - "AccessKeyId": "AKIAIOSFODNN7EXAMPLE", - "Expiration": "2011-07-15T23:28:33.359Z", - "SecretAccessKey": "wJalrXUtnFEMI/K7MDENG/bPxRfiCYzEXAMPLEKEY", - "SessionToken": "AQoDYXdzEPT//////////wEXAMPLEtc764bNrC9SAPBSM22wDOk4x4HIZ8j4FZTwdQWLWsKWHGBuFqwAeMicRXmxfpSPfIeoIYRqTflfKD8YUuwthAx7mSEI/qkPpKPi/kMcGdQrmGdeehM4IC1NtBmUpp2wUE8phUZampKsburEDy0KPkyQDYwT7WZ0wq5VSXDvp75YU9HFvlRd8Tx6q6fE8YQcHNVXAkiY9q6d+xo0rKwT38xVqr7ZD0u0iPPkUL64lIZbqBAz+scqKmlzm8FDrypNC9Yjc8fPOLn9FX9KSYvKTr4rvx3iSIlTJabIQwj2ICCR/oLxBA==" - }, - "PackedPolicySize": 6 - }, - "comments": { - "input": { - }, - "output": { - } - }, - "description": "", - "id": "to-assume-a-role-1480532402212", - "title": "To assume a role" - } - ], - "AssumeRoleWithWebIdentity": [ - { - "input": { - "DurationSeconds": 3600, - "ProviderId": "www.amazon.com", - "RoleArn": "arn:aws:iam::123456789012:role/FederatedWebIdentityRole", - "RoleSessionName": "app1", - "WebIdentityToken": "Atza%7CIQEBLjAsAhRFiXuWpUXuRvQ9PZL3GMFcYevydwIUFAHZwXZXXXXXXXXJnrulxKDHwy87oGKPznh0D6bEQZTSCzyoCtL_8S07pLpr0zMbn6w1lfVZKNTBdDansFBmtGnIsIapjI6xKR02Yc_2bQ8LZbUXSGm6Ry6_BG7PrtLZtj_dfCTj92xNGed-CrKqjG7nPBjNIL016GGvuS5gSvPRUxWES3VYfm1wl7WTI7jn-Pcb6M-buCgHhFOzTQxod27L9CqnOLio7N3gZAGpsp6n1-AJBOCJckcyXe2c6uD0srOJeZlKUm2eTDVMf8IehDVI0r1QOnTV6KzzAI3OY87Vd_cVMQ" - }, - "output": { - "AssumedRoleUser": { - "Arn": "arn:aws:sts::123456789012:assumed-role/FederatedWebIdentityRole/app1", - "AssumedRoleId": "AROACLKWSDQRAOEXAMPLE:app1" - }, - "Audience": "client.5498841531868486423.1548@apps.example.com", - "Credentials": { - "AccessKeyId": "AKIAIOSFODNN7EXAMPLE", - "Expiration": "2014-10-24T23:00:23Z", - "SecretAccessKey": "wJalrXUtnFEMI/K7MDENG/bPxRfiCYzEXAMPLEKEY", - "SessionToken": "AQoDYXdzEE0a8ANXXXXXXXXNO1ewxE5TijQyp+IEXAMPLE" - }, - "PackedPolicySize": 123, - "Provider": "www.amazon.com", - "SubjectFromWebIdentityToken": "amzn1.account.AF6RHO7KZU5XRVQJGXK6HEXAMPLE" - }, - "comments": { - "input": { - }, - "output": { - } - }, - "description": "", - "id": "to-assume-a-role-as-an-openid-connect-federated-user-1480533445696", - "title": "To assume a role as an OpenID Connect-federated user" - } - ], - "DecodeAuthorizationMessage": [ - { - "input": { - "EncodedMessage": "" - }, - "output": { - "DecodedMessage": "{\"allowed\": \"false\",\"explicitDeny\": \"false\",\"matchedStatements\": \"\",\"failures\": \"\",\"context\": {\"principal\": {\"id\": \"AIDACKCEVSQ6C2EXAMPLE\",\"name\": \"Bob\",\"arn\": \"arn:aws:iam::123456789012:user/Bob\"},\"action\": \"ec2:StopInstances\",\"resource\": \"arn:aws:ec2:us-east-1:123456789012:instance/i-dd01c9bd\",\"conditions\": [{\"item\": {\"key\": \"ec2:Tenancy\",\"values\": [\"default\"]},{\"item\": {\"key\": \"ec2:ResourceTag/elasticbeanstalk:environment-name\",\"values\": [\"Default-Environment\"]}},(Additional items ...)]}}" - }, - "comments": { - "input": { - }, - "output": { - } - }, - "description": "", - "id": "to-decode-information-about-an-authorization-status-of-a-request-1480533854499", - "title": "To decode information about an authorization status of a request" - } - ], - "GetCallerIdentity": [ - { - "input": { - }, - "output": { - "Account": "123456789012", - "Arn": "arn:aws:iam::123456789012:user/Alice", - "UserId": "AKIAI44QH8DHBEXAMPLE" - }, - "comments": { - "input": { - }, - "output": { - } - }, - "description": "This example shows a request and response made with the credentials for a user named Alice in the AWS account 123456789012.", - "id": "to-get-details-about-a-calling-iam-user-1480540050376", - "title": "To get details about a calling IAM user" - }, - { - "input": { - }, - "output": { - "Account": "123456789012", - "Arn": "arn:aws:sts::123456789012:assumed-role/my-role-name/my-role-session-name", - "UserId": "AKIAI44QH8DHBEXAMPLE:my-role-session-name" - }, - "comments": { - "input": { - }, - "output": { - } - }, - "description": "This example shows a request and response made with temporary credentials created by AssumeRole. The name of the assumed role is my-role-name, and the RoleSessionName is set to my-role-session-name.", - "id": "to-get-details-about-a-calling-user-federated-with-assumerole-1480540158545", - "title": "To get details about a calling user federated with AssumeRole" - }, - { - "input": { - }, - "output": { - "Account": "123456789012", - "Arn": "arn:aws:sts::123456789012:federated-user/my-federated-user-name", - "UserId": "123456789012:my-federated-user-name" - }, - "comments": { - "input": { - }, - "output": { - } - }, - "description": "This example shows a request and response made with temporary credentials created by using GetFederationToken. The Name parameter is set to my-federated-user-name.", - "id": "to-get-details-about-a-calling-user-federated-with-getfederationtoken-1480540231316", - "title": "To get details about a calling user federated with GetFederationToken" - } - ], - "GetFederationToken": [ - { - "input": { - "DurationSeconds": 3600, - "Name": "Bob", - "Policy": "{\"Version\":\"2012-10-17\",\"Statement\":[{\"Sid\":\"Stmt1\",\"Effect\":\"Allow\",\"Action\":\"s3:*\",\"Resource\":\"*\"}]}" - }, - "output": { - "Credentials": { - "AccessKeyId": "AKIAIOSFODNN7EXAMPLE", - "Expiration": "2011-07-15T23:28:33.359Z", - "SecretAccessKey": "wJalrXUtnFEMI/K7MDENG/bPxRfiCYzEXAMPLEKEY", - "SessionToken": "AQoDYXdzEPT//////////wEXAMPLEtc764bNrC9SAPBSM22wDOk4x4HIZ8j4FZTwdQWLWsKWHGBuFqwAeMicRXmxfpSPfIeoIYRqTflfKD8YUuwthAx7mSEI/qkPpKPi/kMcGdQrmGdeehM4IC1NtBmUpp2wUE8phUZampKsburEDy0KPkyQDYwT7WZ0wq5VSXDvp75YU9HFvlRd8Tx6q6fE8YQcHNVXAkiY9q6d+xo0rKwT38xVqr7ZD0u0iPPkUL64lIZbqBAz+scqKmlzm8FDrypNC9Yjc8fPOLn9FX9KSYvKTr4rvx3iSIlTJabIQwj2ICCR/oLxBA==" - }, - "FederatedUser": { - "Arn": "arn:aws:sts::123456789012:federated-user/Bob", - "FederatedUserId": "123456789012:Bob" - }, - "PackedPolicySize": 6 - }, - "comments": { - "input": { - }, - "output": { - } - }, - "description": "", - "id": "to-get-temporary-credentials-for-a-role-by-using-getfederationtoken-1480540749900", - "title": "To get temporary credentials for a role by using GetFederationToken" - } - ], - "GetSessionToken": [ - { - "input": { - "DurationSeconds": 3600, - "SerialNumber": "YourMFASerialNumber", - "TokenCode": "123456" - }, - "output": { - "Credentials": { - "AccessKeyId": "AKIAIOSFODNN7EXAMPLE", - "Expiration": "2011-07-11T19:55:29.611Z", - "SecretAccessKey": "wJalrXUtnFEMI/K7MDENG/bPxRfiCYzEXAMPLEKEY", - "SessionToken": "AQoEXAMPLEH4aoAH0gNCAPyJxz4BlCFFxWNE1OPTgk5TthT+FvwqnKwRcOIfrRh3c/LTo6UDdyJwOOvEVPvLXCrrrUtdnniCEXAMPLE/IvU1dYUg2RVAJBanLiHb4IgRmpRV3zrkuWJOgQs8IZZaIv2BXIa2R4OlgkBN9bkUDNCJiBeb/AXlzBBko7b15fjrBs2+cTQtpZ3CYWFXG8C5zqx37wnOE49mRl/+OtkIKGO7fAE" - } - }, - "comments": { - "input": { - }, - "output": { - } - }, - "description": "", - "id": "to-get-temporary-credentials-for-an-iam-user-or-an-aws-account-1480540814038", - "title": "To get temporary credentials for an IAM user or an AWS account" - } - ] - } -} diff --git a/workshops/monte-carlo-on-ec2-spot-fleet/src/web/node_modules/aws-sdk/apis/sts-2011-06-15.min.json b/workshops/monte-carlo-on-ec2-spot-fleet/src/web/node_modules/aws-sdk/apis/sts-2011-06-15.min.json deleted file mode 100644 index 75dd67e2..00000000 --- a/workshops/monte-carlo-on-ec2-spot-fleet/src/web/node_modules/aws-sdk/apis/sts-2011-06-15.min.json +++ /dev/null @@ -1,250 +0,0 @@ -{ - "version": "2.0", - "metadata": { - "apiVersion": "2011-06-15", - "endpointPrefix": "sts", - "globalEndpoint": "sts.amazonaws.com", - "protocol": "query", - "serviceAbbreviation": "AWS STS", - "serviceFullName": "AWS Security Token Service", - "signatureVersion": "v4", - "uid": "sts-2011-06-15", - "xmlNamespace": "https://sts.amazonaws.com/doc/2011-06-15/" - }, - "operations": { - "AssumeRole": { - "input": { - "type": "structure", - "required": [ - "RoleArn", - "RoleSessionName" - ], - "members": { - "RoleArn": {}, - "RoleSessionName": {}, - "Policy": {}, - "DurationSeconds": { - "type": "integer" - }, - "ExternalId": {}, - "SerialNumber": {}, - "TokenCode": {} - } - }, - "output": { - "resultWrapper": "AssumeRoleResult", - "type": "structure", - "members": { - "Credentials": { - "shape": "Sa" - }, - "AssumedRoleUser": { - "shape": "Sf" - }, - "PackedPolicySize": { - "type": "integer" - } - } - } - }, - "AssumeRoleWithSAML": { - "input": { - "type": "structure", - "required": [ - "RoleArn", - "PrincipalArn", - "SAMLAssertion" - ], - "members": { - "RoleArn": {}, - "PrincipalArn": {}, - "SAMLAssertion": {}, - "Policy": {}, - "DurationSeconds": { - "type": "integer" - } - } - }, - "output": { - "resultWrapper": "AssumeRoleWithSAMLResult", - "type": "structure", - "members": { - "Credentials": { - "shape": "Sa" - }, - "AssumedRoleUser": { - "shape": "Sf" - }, - "PackedPolicySize": { - "type": "integer" - }, - "Subject": {}, - "SubjectType": {}, - "Issuer": {}, - "Audience": {}, - "NameQualifier": {} - } - } - }, - "AssumeRoleWithWebIdentity": { - "input": { - "type": "structure", - "required": [ - "RoleArn", - "RoleSessionName", - "WebIdentityToken" - ], - "members": { - "RoleArn": {}, - "RoleSessionName": {}, - "WebIdentityToken": {}, - "ProviderId": {}, - "Policy": {}, - "DurationSeconds": { - "type": "integer" - } - } - }, - "output": { - "resultWrapper": "AssumeRoleWithWebIdentityResult", - "type": "structure", - "members": { - "Credentials": { - "shape": "Sa" - }, - "SubjectFromWebIdentityToken": {}, - "AssumedRoleUser": { - "shape": "Sf" - }, - "PackedPolicySize": { - "type": "integer" - }, - "Provider": {}, - "Audience": {} - } - } - }, - "DecodeAuthorizationMessage": { - "input": { - "type": "structure", - "required": [ - "EncodedMessage" - ], - "members": { - "EncodedMessage": {} - } - }, - "output": { - "resultWrapper": "DecodeAuthorizationMessageResult", - "type": "structure", - "members": { - "DecodedMessage": {} - } - } - }, - "GetCallerIdentity": { - "input": { - "type": "structure", - "members": {} - }, - "output": { - "resultWrapper": "GetCallerIdentityResult", - "type": "structure", - "members": { - "UserId": {}, - "Account": {}, - "Arn": {} - } - } - }, - "GetFederationToken": { - "input": { - "type": "structure", - "required": [ - "Name" - ], - "members": { - "Name": {}, - "Policy": {}, - "DurationSeconds": { - "type": "integer" - } - } - }, - "output": { - "resultWrapper": "GetFederationTokenResult", - "type": "structure", - "members": { - "Credentials": { - "shape": "Sa" - }, - "FederatedUser": { - "type": "structure", - "required": [ - "FederatedUserId", - "Arn" - ], - "members": { - "FederatedUserId": {}, - "Arn": {} - } - }, - "PackedPolicySize": { - "type": "integer" - } - } - } - }, - "GetSessionToken": { - "input": { - "type": "structure", - "members": { - "DurationSeconds": { - "type": "integer" - }, - "SerialNumber": {}, - "TokenCode": {} - } - }, - "output": { - "resultWrapper": "GetSessionTokenResult", - "type": "structure", - "members": { - "Credentials": { - "shape": "Sa" - } - } - } - } - }, - "shapes": { - "Sa": { - "type": "structure", - "required": [ - "AccessKeyId", - "SecretAccessKey", - "SessionToken", - "Expiration" - ], - "members": { - "AccessKeyId": {}, - "SecretAccessKey": {}, - "SessionToken": {}, - "Expiration": { - "type": "timestamp" - } - } - }, - "Sf": { - "type": "structure", - "required": [ - "AssumedRoleId", - "Arn" - ], - "members": { - "AssumedRoleId": {}, - "Arn": {} - } - } - } -} \ No newline at end of file diff --git a/workshops/monte-carlo-on-ec2-spot-fleet/src/web/node_modules/aws-sdk/apis/sts-2011-06-15.paginators.json b/workshops/monte-carlo-on-ec2-spot-fleet/src/web/node_modules/aws-sdk/apis/sts-2011-06-15.paginators.json deleted file mode 100644 index 5677bd8e..00000000 --- a/workshops/monte-carlo-on-ec2-spot-fleet/src/web/node_modules/aws-sdk/apis/sts-2011-06-15.paginators.json +++ /dev/null @@ -1,4 +0,0 @@ -{ - "pagination": { - } -} diff --git a/workshops/monte-carlo-on-ec2-spot-fleet/src/web/node_modules/aws-sdk/apis/support-2013-04-15.min.json b/workshops/monte-carlo-on-ec2-spot-fleet/src/web/node_modules/aws-sdk/apis/support-2013-04-15.min.json deleted file mode 100644 index 5fcce68b..00000000 --- a/workshops/monte-carlo-on-ec2-spot-fleet/src/web/node_modules/aws-sdk/apis/support-2013-04-15.min.json +++ /dev/null @@ -1,570 +0,0 @@ -{ - "version": "2.0", - "metadata": { - "uid": "support-2013-04-15", - "apiVersion": "2013-04-15", - "endpointPrefix": "support", - "jsonVersion": "1.1", - "protocol": "json", - "serviceFullName": "AWS Support", - "signatureVersion": "v4", - "targetPrefix": "AWSSupport_20130415" - }, - "operations": { - "AddAttachmentsToSet": { - "input": { - "type": "structure", - "required": [ - "attachments" - ], - "members": { - "attachmentSetId": {}, - "attachments": { - "type": "list", - "member": { - "shape": "S4" - } - } - } - }, - "output": { - "type": "structure", - "members": { - "attachmentSetId": {}, - "expiryTime": {} - } - } - }, - "AddCommunicationToCase": { - "input": { - "type": "structure", - "required": [ - "communicationBody" - ], - "members": { - "caseId": {}, - "communicationBody": {}, - "ccEmailAddresses": { - "shape": "Sc" - }, - "attachmentSetId": {} - } - }, - "output": { - "type": "structure", - "members": { - "result": { - "type": "boolean" - } - } - } - }, - "CreateCase": { - "input": { - "type": "structure", - "required": [ - "subject", - "communicationBody" - ], - "members": { - "subject": {}, - "serviceCode": {}, - "severityCode": {}, - "categoryCode": {}, - "communicationBody": {}, - "ccEmailAddresses": { - "shape": "Sc" - }, - "language": {}, - "issueType": {}, - "attachmentSetId": {} - } - }, - "output": { - "type": "structure", - "members": { - "caseId": {} - } - } - }, - "DescribeAttachment": { - "input": { - "type": "structure", - "required": [ - "attachmentId" - ], - "members": { - "attachmentId": {} - } - }, - "output": { - "type": "structure", - "members": { - "attachment": { - "shape": "S4" - } - } - } - }, - "DescribeCases": { - "input": { - "type": "structure", - "members": { - "caseIdList": { - "type": "list", - "member": {} - }, - "displayId": {}, - "afterTime": {}, - "beforeTime": {}, - "includeResolvedCases": { - "type": "boolean" - }, - "nextToken": {}, - "maxResults": { - "type": "integer" - }, - "language": {}, - "includeCommunications": { - "type": "boolean" - } - } - }, - "output": { - "type": "structure", - "members": { - "cases": { - "type": "list", - "member": { - "type": "structure", - "members": { - "caseId": {}, - "displayId": {}, - "subject": {}, - "status": {}, - "serviceCode": {}, - "categoryCode": {}, - "severityCode": {}, - "submittedBy": {}, - "timeCreated": {}, - "recentCommunications": { - "type": "structure", - "members": { - "communications": { - "shape": "S17" - }, - "nextToken": {} - } - }, - "ccEmailAddresses": { - "shape": "Sc" - }, - "language": {} - } - } - }, - "nextToken": {} - } - } - }, - "DescribeCommunications": { - "input": { - "type": "structure", - "required": [ - "caseId" - ], - "members": { - "caseId": {}, - "beforeTime": {}, - "afterTime": {}, - "nextToken": {}, - "maxResults": { - "type": "integer" - } - } - }, - "output": { - "type": "structure", - "members": { - "communications": { - "shape": "S17" - }, - "nextToken": {} - } - } - }, - "DescribeServices": { - "input": { - "type": "structure", - "members": { - "serviceCodeList": { - "type": "list", - "member": {} - }, - "language": {} - } - }, - "output": { - "type": "structure", - "members": { - "services": { - "type": "list", - "member": { - "type": "structure", - "members": { - "code": {}, - "name": {}, - "categories": { - "type": "list", - "member": { - "type": "structure", - "members": { - "code": {}, - "name": {} - } - } - } - } - } - } - } - } - }, - "DescribeSeverityLevels": { - "input": { - "type": "structure", - "members": { - "language": {} - } - }, - "output": { - "type": "structure", - "members": { - "severityLevels": { - "type": "list", - "member": { - "type": "structure", - "members": { - "code": {}, - "name": {} - } - } - } - } - } - }, - "DescribeTrustedAdvisorCheckRefreshStatuses": { - "input": { - "type": "structure", - "required": [ - "checkIds" - ], - "members": { - "checkIds": { - "shape": "S1t" - } - } - }, - "output": { - "type": "structure", - "required": [ - "statuses" - ], - "members": { - "statuses": { - "type": "list", - "member": { - "shape": "S1x" - } - } - } - } - }, - "DescribeTrustedAdvisorCheckResult": { - "input": { - "type": "structure", - "required": [ - "checkId" - ], - "members": { - "checkId": {}, - "language": {} - } - }, - "output": { - "type": "structure", - "members": { - "result": { - "type": "structure", - "required": [ - "checkId", - "timestamp", - "status", - "resourcesSummary", - "categorySpecificSummary", - "flaggedResources" - ], - "members": { - "checkId": {}, - "timestamp": {}, - "status": {}, - "resourcesSummary": { - "shape": "S22" - }, - "categorySpecificSummary": { - "shape": "S23" - }, - "flaggedResources": { - "type": "list", - "member": { - "type": "structure", - "required": [ - "status", - "resourceId", - "metadata" - ], - "members": { - "status": {}, - "region": {}, - "resourceId": {}, - "isSuppressed": { - "type": "boolean" - }, - "metadata": { - "shape": "S1t" - } - } - } - } - } - } - } - } - }, - "DescribeTrustedAdvisorCheckSummaries": { - "input": { - "type": "structure", - "required": [ - "checkIds" - ], - "members": { - "checkIds": { - "shape": "S1t" - } - } - }, - "output": { - "type": "structure", - "required": [ - "summaries" - ], - "members": { - "summaries": { - "type": "list", - "member": { - "type": "structure", - "required": [ - "checkId", - "timestamp", - "status", - "resourcesSummary", - "categorySpecificSummary" - ], - "members": { - "checkId": {}, - "timestamp": {}, - "status": {}, - "hasFlaggedResources": { - "type": "boolean" - }, - "resourcesSummary": { - "shape": "S22" - }, - "categorySpecificSummary": { - "shape": "S23" - } - } - } - } - } - } - }, - "DescribeTrustedAdvisorChecks": { - "input": { - "type": "structure", - "required": [ - "language" - ], - "members": { - "language": {} - } - }, - "output": { - "type": "structure", - "required": [ - "checks" - ], - "members": { - "checks": { - "type": "list", - "member": { - "type": "structure", - "required": [ - "id", - "name", - "description", - "category", - "metadata" - ], - "members": { - "id": {}, - "name": {}, - "description": {}, - "category": {}, - "metadata": { - "shape": "S1t" - } - } - } - } - } - } - }, - "RefreshTrustedAdvisorCheck": { - "input": { - "type": "structure", - "required": [ - "checkId" - ], - "members": { - "checkId": {} - } - }, - "output": { - "type": "structure", - "required": [ - "status" - ], - "members": { - "status": { - "shape": "S1x" - } - } - } - }, - "ResolveCase": { - "input": { - "type": "structure", - "members": { - "caseId": {} - } - }, - "output": { - "type": "structure", - "members": { - "initialCaseStatus": {}, - "finalCaseStatus": {} - } - } - } - }, - "shapes": { - "S4": { - "type": "structure", - "members": { - "fileName": {}, - "data": { - "type": "blob" - } - } - }, - "Sc": { - "type": "list", - "member": {} - }, - "S17": { - "type": "list", - "member": { - "type": "structure", - "members": { - "caseId": {}, - "body": {}, - "submittedBy": {}, - "timeCreated": {}, - "attachmentSet": { - "type": "list", - "member": { - "type": "structure", - "members": { - "attachmentId": {}, - "fileName": {} - } - } - } - } - } - }, - "S1t": { - "type": "list", - "member": {} - }, - "S1x": { - "type": "structure", - "required": [ - "checkId", - "status", - "millisUntilNextRefreshable" - ], - "members": { - "checkId": {}, - "status": {}, - "millisUntilNextRefreshable": { - "type": "long" - } - } - }, - "S22": { - "type": "structure", - "required": [ - "resourcesProcessed", - "resourcesFlagged", - "resourcesIgnored", - "resourcesSuppressed" - ], - "members": { - "resourcesProcessed": { - "type": "long" - }, - "resourcesFlagged": { - "type": "long" - }, - "resourcesIgnored": { - "type": "long" - }, - "resourcesSuppressed": { - "type": "long" - } - } - }, - "S23": { - "type": "structure", - "members": { - "costOptimizing": { - "type": "structure", - "required": [ - "estimatedMonthlySavings", - "estimatedPercentMonthlySavings" - ], - "members": { - "estimatedMonthlySavings": { - "type": "double" - }, - "estimatedPercentMonthlySavings": { - "type": "double" - } - } - } - } - } - } -} \ No newline at end of file diff --git a/workshops/monte-carlo-on-ec2-spot-fleet/src/web/node_modules/aws-sdk/apis/support-2013-04-15.paginators.json b/workshops/monte-carlo-on-ec2-spot-fleet/src/web/node_modules/aws-sdk/apis/support-2013-04-15.paginators.json deleted file mode 100644 index 1368630c..00000000 --- a/workshops/monte-carlo-on-ec2-spot-fleet/src/web/node_modules/aws-sdk/apis/support-2013-04-15.paginators.json +++ /dev/null @@ -1,25 +0,0 @@ -{ - "pagination": { - "DescribeCases": { - "input_token": "nextToken", - "output_token": "nextToken", - "limit_key": "maxResults", - "result_key": "cases" - }, - "DescribeCommunications": { - "input_token": "nextToken", - "output_token": "nextToken", - "limit_key": "maxResults", - "result_key": "communications" - }, - "DescribeServices": { - "result_key": "services" - }, - "DescribeTrustedAdvisorCheckRefreshStatuses": { - "result_key": "statuses" - }, - "DescribeTrustedAdvisorCheckSummaries": { - "result_key": "summaries" - } - } -} diff --git a/workshops/monte-carlo-on-ec2-spot-fleet/src/web/node_modules/aws-sdk/apis/swf-2012-01-25.examples.json b/workshops/monte-carlo-on-ec2-spot-fleet/src/web/node_modules/aws-sdk/apis/swf-2012-01-25.examples.json deleted file mode 100644 index 0ea7e3b0..00000000 --- a/workshops/monte-carlo-on-ec2-spot-fleet/src/web/node_modules/aws-sdk/apis/swf-2012-01-25.examples.json +++ /dev/null @@ -1,5 +0,0 @@ -{ - "version": "1.0", - "examples": { - } -} diff --git a/workshops/monte-carlo-on-ec2-spot-fleet/src/web/node_modules/aws-sdk/apis/swf-2012-01-25.min.json b/workshops/monte-carlo-on-ec2-spot-fleet/src/web/node_modules/aws-sdk/apis/swf-2012-01-25.min.json deleted file mode 100644 index 4a41aa4e..00000000 --- a/workshops/monte-carlo-on-ec2-spot-fleet/src/web/node_modules/aws-sdk/apis/swf-2012-01-25.min.json +++ /dev/null @@ -1,2219 +0,0 @@ -{ - "version": "2.0", - "metadata": { - "apiVersion": "2012-01-25", - "endpointPrefix": "swf", - "jsonVersion": "1.0", - "protocol": "json", - "serviceAbbreviation": "Amazon SWF", - "serviceFullName": "Amazon Simple Workflow Service", - "signatureVersion": "v4", - "targetPrefix": "SimpleWorkflowService", - "timestampFormat": "unixTimestamp", - "uid": "swf-2012-01-25" - }, - "operations": { - "CountClosedWorkflowExecutions": { - "input": { - "type": "structure", - "required": [ - "domain" - ], - "members": { - "domain": {}, - "startTimeFilter": { - "shape": "S3" - }, - "closeTimeFilter": { - "shape": "S3" - }, - "executionFilter": { - "shape": "S5" - }, - "typeFilter": { - "shape": "S7" - }, - "tagFilter": { - "shape": "Sa" - }, - "closeStatusFilter": { - "shape": "Sc" - } - } - }, - "output": { - "shape": "Se" - } - }, - "CountOpenWorkflowExecutions": { - "input": { - "type": "structure", - "required": [ - "domain", - "startTimeFilter" - ], - "members": { - "domain": {}, - "startTimeFilter": { - "shape": "S3" - }, - "typeFilter": { - "shape": "S7" - }, - "tagFilter": { - "shape": "Sa" - }, - "executionFilter": { - "shape": "S5" - } - } - }, - "output": { - "shape": "Se" - } - }, - "CountPendingActivityTasks": { - "input": { - "type": "structure", - "required": [ - "domain", - "taskList" - ], - "members": { - "domain": {}, - "taskList": { - "shape": "Sj" - } - } - }, - "output": { - "shape": "Sk" - } - }, - "CountPendingDecisionTasks": { - "input": { - "type": "structure", - "required": [ - "domain", - "taskList" - ], - "members": { - "domain": {}, - "taskList": { - "shape": "Sj" - } - } - }, - "output": { - "shape": "Sk" - } - }, - "DeprecateActivityType": { - "input": { - "type": "structure", - "required": [ - "domain", - "activityType" - ], - "members": { - "domain": {}, - "activityType": { - "shape": "Sn" - } - } - } - }, - "DeprecateDomain": { - "input": { - "type": "structure", - "required": [ - "name" - ], - "members": { - "name": {} - } - } - }, - "DeprecateWorkflowType": { - "input": { - "type": "structure", - "required": [ - "domain", - "workflowType" - ], - "members": { - "domain": {}, - "workflowType": { - "shape": "Sr" - } - } - } - }, - "DescribeActivityType": { - "input": { - "type": "structure", - "required": [ - "domain", - "activityType" - ], - "members": { - "domain": {}, - "activityType": { - "shape": "Sn" - } - } - }, - "output": { - "type": "structure", - "required": [ - "typeInfo", - "configuration" - ], - "members": { - "typeInfo": { - "shape": "Su" - }, - "configuration": { - "type": "structure", - "members": { - "defaultTaskStartToCloseTimeout": {}, - "defaultTaskHeartbeatTimeout": {}, - "defaultTaskList": { - "shape": "Sj" - }, - "defaultTaskPriority": {}, - "defaultTaskScheduleToStartTimeout": {}, - "defaultTaskScheduleToCloseTimeout": {} - } - } - } - } - }, - "DescribeDomain": { - "input": { - "type": "structure", - "required": [ - "name" - ], - "members": { - "name": {} - } - }, - "output": { - "type": "structure", - "required": [ - "domainInfo", - "configuration" - ], - "members": { - "domainInfo": { - "shape": "S12" - }, - "configuration": { - "type": "structure", - "required": [ - "workflowExecutionRetentionPeriodInDays" - ], - "members": { - "workflowExecutionRetentionPeriodInDays": {} - } - } - } - } - }, - "DescribeWorkflowExecution": { - "input": { - "type": "structure", - "required": [ - "domain", - "execution" - ], - "members": { - "domain": {}, - "execution": { - "shape": "S16" - } - } - }, - "output": { - "type": "structure", - "required": [ - "executionInfo", - "executionConfiguration", - "openCounts" - ], - "members": { - "executionInfo": { - "shape": "S19" - }, - "executionConfiguration": { - "type": "structure", - "required": [ - "taskStartToCloseTimeout", - "executionStartToCloseTimeout", - "taskList", - "childPolicy" - ], - "members": { - "taskStartToCloseTimeout": {}, - "executionStartToCloseTimeout": {}, - "taskList": { - "shape": "Sj" - }, - "taskPriority": {}, - "childPolicy": {}, - "lambdaRole": {} - } - }, - "openCounts": { - "type": "structure", - "required": [ - "openActivityTasks", - "openDecisionTasks", - "openTimers", - "openChildWorkflowExecutions" - ], - "members": { - "openActivityTasks": { - "type": "integer" - }, - "openDecisionTasks": { - "type": "integer" - }, - "openTimers": { - "type": "integer" - }, - "openChildWorkflowExecutions": { - "type": "integer" - }, - "openLambdaFunctions": { - "type": "integer" - } - } - }, - "latestActivityTaskTimestamp": { - "type": "timestamp" - }, - "latestExecutionContext": {} - } - } - }, - "DescribeWorkflowType": { - "input": { - "type": "structure", - "required": [ - "domain", - "workflowType" - ], - "members": { - "domain": {}, - "workflowType": { - "shape": "Sr" - } - } - }, - "output": { - "type": "structure", - "required": [ - "typeInfo", - "configuration" - ], - "members": { - "typeInfo": { - "shape": "S1m" - }, - "configuration": { - "type": "structure", - "members": { - "defaultTaskStartToCloseTimeout": {}, - "defaultExecutionStartToCloseTimeout": {}, - "defaultTaskList": { - "shape": "Sj" - }, - "defaultTaskPriority": {}, - "defaultChildPolicy": {}, - "defaultLambdaRole": {} - } - } - } - } - }, - "GetWorkflowExecutionHistory": { - "input": { - "type": "structure", - "required": [ - "domain", - "execution" - ], - "members": { - "domain": {}, - "execution": { - "shape": "S16" - }, - "nextPageToken": {}, - "maximumPageSize": { - "type": "integer" - }, - "reverseOrder": { - "type": "boolean" - } - } - }, - "output": { - "type": "structure", - "required": [ - "events" - ], - "members": { - "events": { - "shape": "S1t" - }, - "nextPageToken": {} - } - } - }, - "ListActivityTypes": { - "input": { - "type": "structure", - "required": [ - "domain", - "registrationStatus" - ], - "members": { - "domain": {}, - "name": {}, - "registrationStatus": {}, - "nextPageToken": {}, - "maximumPageSize": { - "type": "integer" - }, - "reverseOrder": { - "type": "boolean" - } - } - }, - "output": { - "type": "structure", - "required": [ - "typeInfos" - ], - "members": { - "typeInfos": { - "type": "list", - "member": { - "shape": "Su" - } - }, - "nextPageToken": {} - } - } - }, - "ListClosedWorkflowExecutions": { - "input": { - "type": "structure", - "required": [ - "domain" - ], - "members": { - "domain": {}, - "startTimeFilter": { - "shape": "S3" - }, - "closeTimeFilter": { - "shape": "S3" - }, - "executionFilter": { - "shape": "S5" - }, - "closeStatusFilter": { - "shape": "Sc" - }, - "typeFilter": { - "shape": "S7" - }, - "tagFilter": { - "shape": "Sa" - }, - "nextPageToken": {}, - "maximumPageSize": { - "type": "integer" - }, - "reverseOrder": { - "type": "boolean" - } - } - }, - "output": { - "shape": "S4g" - } - }, - "ListDomains": { - "input": { - "type": "structure", - "required": [ - "registrationStatus" - ], - "members": { - "nextPageToken": {}, - "registrationStatus": {}, - "maximumPageSize": { - "type": "integer" - }, - "reverseOrder": { - "type": "boolean" - } - } - }, - "output": { - "type": "structure", - "required": [ - "domainInfos" - ], - "members": { - "domainInfos": { - "type": "list", - "member": { - "shape": "S12" - } - }, - "nextPageToken": {} - } - } - }, - "ListOpenWorkflowExecutions": { - "input": { - "type": "structure", - "required": [ - "domain", - "startTimeFilter" - ], - "members": { - "domain": {}, - "startTimeFilter": { - "shape": "S3" - }, - "typeFilter": { - "shape": "S7" - }, - "tagFilter": { - "shape": "Sa" - }, - "nextPageToken": {}, - "maximumPageSize": { - "type": "integer" - }, - "reverseOrder": { - "type": "boolean" - }, - "executionFilter": { - "shape": "S5" - } - } - }, - "output": { - "shape": "S4g" - } - }, - "ListWorkflowTypes": { - "input": { - "type": "structure", - "required": [ - "domain", - "registrationStatus" - ], - "members": { - "domain": {}, - "name": {}, - "registrationStatus": {}, - "nextPageToken": {}, - "maximumPageSize": { - "type": "integer" - }, - "reverseOrder": { - "type": "boolean" - } - } - }, - "output": { - "type": "structure", - "required": [ - "typeInfos" - ], - "members": { - "typeInfos": { - "type": "list", - "member": { - "shape": "S1m" - } - }, - "nextPageToken": {} - } - } - }, - "PollForActivityTask": { - "input": { - "type": "structure", - "required": [ - "domain", - "taskList" - ], - "members": { - "domain": {}, - "taskList": { - "shape": "Sj" - }, - "identity": {} - } - }, - "output": { - "type": "structure", - "required": [ - "taskToken", - "activityId", - "startedEventId", - "workflowExecution", - "activityType" - ], - "members": { - "taskToken": {}, - "activityId": {}, - "startedEventId": { - "type": "long" - }, - "workflowExecution": { - "shape": "S16" - }, - "activityType": { - "shape": "Sn" - }, - "input": {} - } - } - }, - "PollForDecisionTask": { - "input": { - "type": "structure", - "required": [ - "domain", - "taskList" - ], - "members": { - "domain": {}, - "taskList": { - "shape": "Sj" - }, - "identity": {}, - "nextPageToken": {}, - "maximumPageSize": { - "type": "integer" - }, - "reverseOrder": { - "type": "boolean" - } - } - }, - "output": { - "type": "structure", - "required": [ - "taskToken", - "startedEventId", - "workflowExecution", - "workflowType", - "events" - ], - "members": { - "taskToken": {}, - "startedEventId": { - "type": "long" - }, - "workflowExecution": { - "shape": "S16" - }, - "workflowType": { - "shape": "Sr" - }, - "events": { - "shape": "S1t" - }, - "nextPageToken": {}, - "previousStartedEventId": { - "type": "long" - } - } - } - }, - "RecordActivityTaskHeartbeat": { - "input": { - "type": "structure", - "required": [ - "taskToken" - ], - "members": { - "taskToken": {}, - "details": {} - } - }, - "output": { - "type": "structure", - "required": [ - "cancelRequested" - ], - "members": { - "cancelRequested": { - "type": "boolean" - } - } - } - }, - "RegisterActivityType": { - "input": { - "type": "structure", - "required": [ - "domain", - "name", - "version" - ], - "members": { - "domain": {}, - "name": {}, - "version": {}, - "description": {}, - "defaultTaskStartToCloseTimeout": {}, - "defaultTaskHeartbeatTimeout": {}, - "defaultTaskList": { - "shape": "Sj" - }, - "defaultTaskPriority": {}, - "defaultTaskScheduleToStartTimeout": {}, - "defaultTaskScheduleToCloseTimeout": {} - } - } - }, - "RegisterDomain": { - "input": { - "type": "structure", - "required": [ - "name", - "workflowExecutionRetentionPeriodInDays" - ], - "members": { - "name": {}, - "description": {}, - "workflowExecutionRetentionPeriodInDays": {} - } - } - }, - "RegisterWorkflowType": { - "input": { - "type": "structure", - "required": [ - "domain", - "name", - "version" - ], - "members": { - "domain": {}, - "name": {}, - "version": {}, - "description": {}, - "defaultTaskStartToCloseTimeout": {}, - "defaultExecutionStartToCloseTimeout": {}, - "defaultTaskList": { - "shape": "Sj" - }, - "defaultTaskPriority": {}, - "defaultChildPolicy": {}, - "defaultLambdaRole": {} - } - } - }, - "RequestCancelWorkflowExecution": { - "input": { - "type": "structure", - "required": [ - "domain", - "workflowId" - ], - "members": { - "domain": {}, - "workflowId": {}, - "runId": {} - } - } - }, - "RespondActivityTaskCanceled": { - "input": { - "type": "structure", - "required": [ - "taskToken" - ], - "members": { - "taskToken": {}, - "details": {} - } - } - }, - "RespondActivityTaskCompleted": { - "input": { - "type": "structure", - "required": [ - "taskToken" - ], - "members": { - "taskToken": {}, - "result": {} - } - } - }, - "RespondActivityTaskFailed": { - "input": { - "type": "structure", - "required": [ - "taskToken" - ], - "members": { - "taskToken": {}, - "reason": {}, - "details": {} - } - } - }, - "RespondDecisionTaskCompleted": { - "input": { - "type": "structure", - "required": [ - "taskToken" - ], - "members": { - "taskToken": {}, - "decisions": { - "type": "list", - "member": { - "type": "structure", - "required": [ - "decisionType" - ], - "members": { - "decisionType": {}, - "scheduleActivityTaskDecisionAttributes": { - "type": "structure", - "required": [ - "activityType", - "activityId" - ], - "members": { - "activityType": { - "shape": "Sn" - }, - "activityId": {}, - "control": {}, - "input": {}, - "scheduleToCloseTimeout": {}, - "taskList": { - "shape": "Sj" - }, - "taskPriority": {}, - "scheduleToStartTimeout": {}, - "startToCloseTimeout": {}, - "heartbeatTimeout": {} - } - }, - "requestCancelActivityTaskDecisionAttributes": { - "type": "structure", - "required": [ - "activityId" - ], - "members": { - "activityId": {} - } - }, - "completeWorkflowExecutionDecisionAttributes": { - "type": "structure", - "members": { - "result": {} - } - }, - "failWorkflowExecutionDecisionAttributes": { - "type": "structure", - "members": { - "reason": {}, - "details": {} - } - }, - "cancelWorkflowExecutionDecisionAttributes": { - "type": "structure", - "members": { - "details": {} - } - }, - "continueAsNewWorkflowExecutionDecisionAttributes": { - "type": "structure", - "members": { - "input": {}, - "executionStartToCloseTimeout": {}, - "taskList": { - "shape": "Sj" - }, - "taskPriority": {}, - "taskStartToCloseTimeout": {}, - "childPolicy": {}, - "tagList": { - "shape": "S1b" - }, - "workflowTypeVersion": {}, - "lambdaRole": {} - } - }, - "recordMarkerDecisionAttributes": { - "type": "structure", - "required": [ - "markerName" - ], - "members": { - "markerName": {}, - "details": {} - } - }, - "startTimerDecisionAttributes": { - "type": "structure", - "required": [ - "timerId", - "startToFireTimeout" - ], - "members": { - "timerId": {}, - "control": {}, - "startToFireTimeout": {} - } - }, - "cancelTimerDecisionAttributes": { - "type": "structure", - "required": [ - "timerId" - ], - "members": { - "timerId": {} - } - }, - "signalExternalWorkflowExecutionDecisionAttributes": { - "type": "structure", - "required": [ - "workflowId", - "signalName" - ], - "members": { - "workflowId": {}, - "runId": {}, - "signalName": {}, - "input": {}, - "control": {} - } - }, - "requestCancelExternalWorkflowExecutionDecisionAttributes": { - "type": "structure", - "required": [ - "workflowId" - ], - "members": { - "workflowId": {}, - "runId": {}, - "control": {} - } - }, - "startChildWorkflowExecutionDecisionAttributes": { - "type": "structure", - "required": [ - "workflowType", - "workflowId" - ], - "members": { - "workflowType": { - "shape": "Sr" - }, - "workflowId": {}, - "control": {}, - "input": {}, - "executionStartToCloseTimeout": {}, - "taskList": { - "shape": "Sj" - }, - "taskPriority": {}, - "taskStartToCloseTimeout": {}, - "childPolicy": {}, - "tagList": { - "shape": "S1b" - }, - "lambdaRole": {} - } - }, - "scheduleLambdaFunctionDecisionAttributes": { - "type": "structure", - "required": [ - "id", - "name" - ], - "members": { - "id": {}, - "name": {}, - "control": {}, - "input": {}, - "startToCloseTimeout": {} - } - } - } - } - }, - "executionContext": {} - } - } - }, - "SignalWorkflowExecution": { - "input": { - "type": "structure", - "required": [ - "domain", - "workflowId", - "signalName" - ], - "members": { - "domain": {}, - "workflowId": {}, - "runId": {}, - "signalName": {}, - "input": {} - } - } - }, - "StartWorkflowExecution": { - "input": { - "type": "structure", - "required": [ - "domain", - "workflowId", - "workflowType" - ], - "members": { - "domain": {}, - "workflowId": {}, - "workflowType": { - "shape": "Sr" - }, - "taskList": { - "shape": "Sj" - }, - "taskPriority": {}, - "input": {}, - "executionStartToCloseTimeout": {}, - "tagList": { - "shape": "S1b" - }, - "taskStartToCloseTimeout": {}, - "childPolicy": {}, - "lambdaRole": {} - } - }, - "output": { - "type": "structure", - "members": { - "runId": {} - } - } - }, - "TerminateWorkflowExecution": { - "input": { - "type": "structure", - "required": [ - "domain", - "workflowId" - ], - "members": { - "domain": {}, - "workflowId": {}, - "runId": {}, - "reason": {}, - "details": {}, - "childPolicy": {} - } - } - } - }, - "shapes": { - "S3": { - "type": "structure", - "required": [ - "oldestDate" - ], - "members": { - "oldestDate": { - "type": "timestamp" - }, - "latestDate": { - "type": "timestamp" - } - } - }, - "S5": { - "type": "structure", - "required": [ - "workflowId" - ], - "members": { - "workflowId": {} - } - }, - "S7": { - "type": "structure", - "required": [ - "name" - ], - "members": { - "name": {}, - "version": {} - } - }, - "Sa": { - "type": "structure", - "required": [ - "tag" - ], - "members": { - "tag": {} - } - }, - "Sc": { - "type": "structure", - "required": [ - "status" - ], - "members": { - "status": {} - } - }, - "Se": { - "type": "structure", - "required": [ - "count" - ], - "members": { - "count": { - "type": "integer" - }, - "truncated": { - "type": "boolean" - } - } - }, - "Sj": { - "type": "structure", - "required": [ - "name" - ], - "members": { - "name": {} - } - }, - "Sk": { - "type": "structure", - "required": [ - "count" - ], - "members": { - "count": { - "type": "integer" - }, - "truncated": { - "type": "boolean" - } - } - }, - "Sn": { - "type": "structure", - "required": [ - "name", - "version" - ], - "members": { - "name": {}, - "version": {} - } - }, - "Sr": { - "type": "structure", - "required": [ - "name", - "version" - ], - "members": { - "name": {}, - "version": {} - } - }, - "Su": { - "type": "structure", - "required": [ - "activityType", - "status", - "creationDate" - ], - "members": { - "activityType": { - "shape": "Sn" - }, - "status": {}, - "description": {}, - "creationDate": { - "type": "timestamp" - }, - "deprecationDate": { - "type": "timestamp" - } - } - }, - "S12": { - "type": "structure", - "required": [ - "name", - "status" - ], - "members": { - "name": {}, - "status": {}, - "description": {} - } - }, - "S16": { - "type": "structure", - "required": [ - "workflowId", - "runId" - ], - "members": { - "workflowId": {}, - "runId": {} - } - }, - "S19": { - "type": "structure", - "required": [ - "execution", - "workflowType", - "startTimestamp", - "executionStatus" - ], - "members": { - "execution": { - "shape": "S16" - }, - "workflowType": { - "shape": "Sr" - }, - "startTimestamp": { - "type": "timestamp" - }, - "closeTimestamp": { - "type": "timestamp" - }, - "executionStatus": {}, - "closeStatus": {}, - "parent": { - "shape": "S16" - }, - "tagList": { - "shape": "S1b" - }, - "cancelRequested": { - "type": "boolean" - } - } - }, - "S1b": { - "type": "list", - "member": {} - }, - "S1m": { - "type": "structure", - "required": [ - "workflowType", - "status", - "creationDate" - ], - "members": { - "workflowType": { - "shape": "Sr" - }, - "status": {}, - "description": {}, - "creationDate": { - "type": "timestamp" - }, - "deprecationDate": { - "type": "timestamp" - } - } - }, - "S1t": { - "type": "list", - "member": { - "type": "structure", - "required": [ - "eventTimestamp", - "eventType", - "eventId" - ], - "members": { - "eventTimestamp": { - "type": "timestamp" - }, - "eventType": {}, - "eventId": { - "type": "long" - }, - "workflowExecutionStartedEventAttributes": { - "type": "structure", - "required": [ - "childPolicy", - "taskList", - "workflowType" - ], - "members": { - "input": {}, - "executionStartToCloseTimeout": {}, - "taskStartToCloseTimeout": {}, - "childPolicy": {}, - "taskList": { - "shape": "Sj" - }, - "taskPriority": {}, - "workflowType": { - "shape": "Sr" - }, - "tagList": { - "shape": "S1b" - }, - "continuedExecutionRunId": {}, - "parentWorkflowExecution": { - "shape": "S16" - }, - "parentInitiatedEventId": { - "type": "long" - }, - "lambdaRole": {} - } - }, - "workflowExecutionCompletedEventAttributes": { - "type": "structure", - "required": [ - "decisionTaskCompletedEventId" - ], - "members": { - "result": {}, - "decisionTaskCompletedEventId": { - "type": "long" - } - } - }, - "completeWorkflowExecutionFailedEventAttributes": { - "type": "structure", - "required": [ - "cause", - "decisionTaskCompletedEventId" - ], - "members": { - "cause": {}, - "decisionTaskCompletedEventId": { - "type": "long" - } - } - }, - "workflowExecutionFailedEventAttributes": { - "type": "structure", - "required": [ - "decisionTaskCompletedEventId" - ], - "members": { - "reason": {}, - "details": {}, - "decisionTaskCompletedEventId": { - "type": "long" - } - } - }, - "failWorkflowExecutionFailedEventAttributes": { - "type": "structure", - "required": [ - "cause", - "decisionTaskCompletedEventId" - ], - "members": { - "cause": {}, - "decisionTaskCompletedEventId": { - "type": "long" - } - } - }, - "workflowExecutionTimedOutEventAttributes": { - "type": "structure", - "required": [ - "timeoutType", - "childPolicy" - ], - "members": { - "timeoutType": {}, - "childPolicy": {} - } - }, - "workflowExecutionCanceledEventAttributes": { - "type": "structure", - "required": [ - "decisionTaskCompletedEventId" - ], - "members": { - "details": {}, - "decisionTaskCompletedEventId": { - "type": "long" - } - } - }, - "cancelWorkflowExecutionFailedEventAttributes": { - "type": "structure", - "required": [ - "cause", - "decisionTaskCompletedEventId" - ], - "members": { - "cause": {}, - "decisionTaskCompletedEventId": { - "type": "long" - } - } - }, - "workflowExecutionContinuedAsNewEventAttributes": { - "type": "structure", - "required": [ - "decisionTaskCompletedEventId", - "newExecutionRunId", - "taskList", - "childPolicy", - "workflowType" - ], - "members": { - "input": {}, - "decisionTaskCompletedEventId": { - "type": "long" - }, - "newExecutionRunId": {}, - "executionStartToCloseTimeout": {}, - "taskList": { - "shape": "Sj" - }, - "taskPriority": {}, - "taskStartToCloseTimeout": {}, - "childPolicy": {}, - "tagList": { - "shape": "S1b" - }, - "workflowType": { - "shape": "Sr" - }, - "lambdaRole": {} - } - }, - "continueAsNewWorkflowExecutionFailedEventAttributes": { - "type": "structure", - "required": [ - "cause", - "decisionTaskCompletedEventId" - ], - "members": { - "cause": {}, - "decisionTaskCompletedEventId": { - "type": "long" - } - } - }, - "workflowExecutionTerminatedEventAttributes": { - "type": "structure", - "required": [ - "childPolicy" - ], - "members": { - "reason": {}, - "details": {}, - "childPolicy": {}, - "cause": {} - } - }, - "workflowExecutionCancelRequestedEventAttributes": { - "type": "structure", - "members": { - "externalWorkflowExecution": { - "shape": "S16" - }, - "externalInitiatedEventId": { - "type": "long" - }, - "cause": {} - } - }, - "decisionTaskScheduledEventAttributes": { - "type": "structure", - "required": [ - "taskList" - ], - "members": { - "taskList": { - "shape": "Sj" - }, - "taskPriority": {}, - "startToCloseTimeout": {} - } - }, - "decisionTaskStartedEventAttributes": { - "type": "structure", - "required": [ - "scheduledEventId" - ], - "members": { - "identity": {}, - "scheduledEventId": { - "type": "long" - } - } - }, - "decisionTaskCompletedEventAttributes": { - "type": "structure", - "required": [ - "scheduledEventId", - "startedEventId" - ], - "members": { - "executionContext": {}, - "scheduledEventId": { - "type": "long" - }, - "startedEventId": { - "type": "long" - } - } - }, - "decisionTaskTimedOutEventAttributes": { - "type": "structure", - "required": [ - "timeoutType", - "scheduledEventId", - "startedEventId" - ], - "members": { - "timeoutType": {}, - "scheduledEventId": { - "type": "long" - }, - "startedEventId": { - "type": "long" - } - } - }, - "activityTaskScheduledEventAttributes": { - "type": "structure", - "required": [ - "activityType", - "activityId", - "taskList", - "decisionTaskCompletedEventId" - ], - "members": { - "activityType": { - "shape": "Sn" - }, - "activityId": {}, - "input": {}, - "control": {}, - "scheduleToStartTimeout": {}, - "scheduleToCloseTimeout": {}, - "startToCloseTimeout": {}, - "taskList": { - "shape": "Sj" - }, - "taskPriority": {}, - "decisionTaskCompletedEventId": { - "type": "long" - }, - "heartbeatTimeout": {} - } - }, - "activityTaskStartedEventAttributes": { - "type": "structure", - "required": [ - "scheduledEventId" - ], - "members": { - "identity": {}, - "scheduledEventId": { - "type": "long" - } - } - }, - "activityTaskCompletedEventAttributes": { - "type": "structure", - "required": [ - "scheduledEventId", - "startedEventId" - ], - "members": { - "result": {}, - "scheduledEventId": { - "type": "long" - }, - "startedEventId": { - "type": "long" - } - } - }, - "activityTaskFailedEventAttributes": { - "type": "structure", - "required": [ - "scheduledEventId", - "startedEventId" - ], - "members": { - "reason": {}, - "details": {}, - "scheduledEventId": { - "type": "long" - }, - "startedEventId": { - "type": "long" - } - } - }, - "activityTaskTimedOutEventAttributes": { - "type": "structure", - "required": [ - "timeoutType", - "scheduledEventId", - "startedEventId" - ], - "members": { - "timeoutType": {}, - "scheduledEventId": { - "type": "long" - }, - "startedEventId": { - "type": "long" - }, - "details": {} - } - }, - "activityTaskCanceledEventAttributes": { - "type": "structure", - "required": [ - "scheduledEventId", - "startedEventId" - ], - "members": { - "details": {}, - "scheduledEventId": { - "type": "long" - }, - "startedEventId": { - "type": "long" - }, - "latestCancelRequestedEventId": { - "type": "long" - } - } - }, - "activityTaskCancelRequestedEventAttributes": { - "type": "structure", - "required": [ - "decisionTaskCompletedEventId", - "activityId" - ], - "members": { - "decisionTaskCompletedEventId": { - "type": "long" - }, - "activityId": {} - } - }, - "workflowExecutionSignaledEventAttributes": { - "type": "structure", - "required": [ - "signalName" - ], - "members": { - "signalName": {}, - "input": {}, - "externalWorkflowExecution": { - "shape": "S16" - }, - "externalInitiatedEventId": { - "type": "long" - } - } - }, - "markerRecordedEventAttributes": { - "type": "structure", - "required": [ - "markerName", - "decisionTaskCompletedEventId" - ], - "members": { - "markerName": {}, - "details": {}, - "decisionTaskCompletedEventId": { - "type": "long" - } - } - }, - "recordMarkerFailedEventAttributes": { - "type": "structure", - "required": [ - "markerName", - "cause", - "decisionTaskCompletedEventId" - ], - "members": { - "markerName": {}, - "cause": {}, - "decisionTaskCompletedEventId": { - "type": "long" - } - } - }, - "timerStartedEventAttributes": { - "type": "structure", - "required": [ - "timerId", - "startToFireTimeout", - "decisionTaskCompletedEventId" - ], - "members": { - "timerId": {}, - "control": {}, - "startToFireTimeout": {}, - "decisionTaskCompletedEventId": { - "type": "long" - } - } - }, - "timerFiredEventAttributes": { - "type": "structure", - "required": [ - "timerId", - "startedEventId" - ], - "members": { - "timerId": {}, - "startedEventId": { - "type": "long" - } - } - }, - "timerCanceledEventAttributes": { - "type": "structure", - "required": [ - "timerId", - "startedEventId", - "decisionTaskCompletedEventId" - ], - "members": { - "timerId": {}, - "startedEventId": { - "type": "long" - }, - "decisionTaskCompletedEventId": { - "type": "long" - } - } - }, - "startChildWorkflowExecutionInitiatedEventAttributes": { - "type": "structure", - "required": [ - "workflowId", - "workflowType", - "taskList", - "decisionTaskCompletedEventId", - "childPolicy" - ], - "members": { - "workflowId": {}, - "workflowType": { - "shape": "Sr" - }, - "control": {}, - "input": {}, - "executionStartToCloseTimeout": {}, - "taskList": { - "shape": "Sj" - }, - "taskPriority": {}, - "decisionTaskCompletedEventId": { - "type": "long" - }, - "childPolicy": {}, - "taskStartToCloseTimeout": {}, - "tagList": { - "shape": "S1b" - }, - "lambdaRole": {} - } - }, - "childWorkflowExecutionStartedEventAttributes": { - "type": "structure", - "required": [ - "workflowExecution", - "workflowType", - "initiatedEventId" - ], - "members": { - "workflowExecution": { - "shape": "S16" - }, - "workflowType": { - "shape": "Sr" - }, - "initiatedEventId": { - "type": "long" - } - } - }, - "childWorkflowExecutionCompletedEventAttributes": { - "type": "structure", - "required": [ - "workflowExecution", - "workflowType", - "initiatedEventId", - "startedEventId" - ], - "members": { - "workflowExecution": { - "shape": "S16" - }, - "workflowType": { - "shape": "Sr" - }, - "result": {}, - "initiatedEventId": { - "type": "long" - }, - "startedEventId": { - "type": "long" - } - } - }, - "childWorkflowExecutionFailedEventAttributes": { - "type": "structure", - "required": [ - "workflowExecution", - "workflowType", - "initiatedEventId", - "startedEventId" - ], - "members": { - "workflowExecution": { - "shape": "S16" - }, - "workflowType": { - "shape": "Sr" - }, - "reason": {}, - "details": {}, - "initiatedEventId": { - "type": "long" - }, - "startedEventId": { - "type": "long" - } - } - }, - "childWorkflowExecutionTimedOutEventAttributes": { - "type": "structure", - "required": [ - "workflowExecution", - "workflowType", - "timeoutType", - "initiatedEventId", - "startedEventId" - ], - "members": { - "workflowExecution": { - "shape": "S16" - }, - "workflowType": { - "shape": "Sr" - }, - "timeoutType": {}, - "initiatedEventId": { - "type": "long" - }, - "startedEventId": { - "type": "long" - } - } - }, - "childWorkflowExecutionCanceledEventAttributes": { - "type": "structure", - "required": [ - "workflowExecution", - "workflowType", - "initiatedEventId", - "startedEventId" - ], - "members": { - "workflowExecution": { - "shape": "S16" - }, - "workflowType": { - "shape": "Sr" - }, - "details": {}, - "initiatedEventId": { - "type": "long" - }, - "startedEventId": { - "type": "long" - } - } - }, - "childWorkflowExecutionTerminatedEventAttributes": { - "type": "structure", - "required": [ - "workflowExecution", - "workflowType", - "initiatedEventId", - "startedEventId" - ], - "members": { - "workflowExecution": { - "shape": "S16" - }, - "workflowType": { - "shape": "Sr" - }, - "initiatedEventId": { - "type": "long" - }, - "startedEventId": { - "type": "long" - } - } - }, - "signalExternalWorkflowExecutionInitiatedEventAttributes": { - "type": "structure", - "required": [ - "workflowId", - "signalName", - "decisionTaskCompletedEventId" - ], - "members": { - "workflowId": {}, - "runId": {}, - "signalName": {}, - "input": {}, - "decisionTaskCompletedEventId": { - "type": "long" - }, - "control": {} - } - }, - "externalWorkflowExecutionSignaledEventAttributes": { - "type": "structure", - "required": [ - "workflowExecution", - "initiatedEventId" - ], - "members": { - "workflowExecution": { - "shape": "S16" - }, - "initiatedEventId": { - "type": "long" - } - } - }, - "signalExternalWorkflowExecutionFailedEventAttributes": { - "type": "structure", - "required": [ - "workflowId", - "cause", - "initiatedEventId", - "decisionTaskCompletedEventId" - ], - "members": { - "workflowId": {}, - "runId": {}, - "cause": {}, - "initiatedEventId": { - "type": "long" - }, - "decisionTaskCompletedEventId": { - "type": "long" - }, - "control": {} - } - }, - "externalWorkflowExecutionCancelRequestedEventAttributes": { - "type": "structure", - "required": [ - "workflowExecution", - "initiatedEventId" - ], - "members": { - "workflowExecution": { - "shape": "S16" - }, - "initiatedEventId": { - "type": "long" - } - } - }, - "requestCancelExternalWorkflowExecutionInitiatedEventAttributes": { - "type": "structure", - "required": [ - "workflowId", - "decisionTaskCompletedEventId" - ], - "members": { - "workflowId": {}, - "runId": {}, - "decisionTaskCompletedEventId": { - "type": "long" - }, - "control": {} - } - }, - "requestCancelExternalWorkflowExecutionFailedEventAttributes": { - "type": "structure", - "required": [ - "workflowId", - "cause", - "initiatedEventId", - "decisionTaskCompletedEventId" - ], - "members": { - "workflowId": {}, - "runId": {}, - "cause": {}, - "initiatedEventId": { - "type": "long" - }, - "decisionTaskCompletedEventId": { - "type": "long" - }, - "control": {} - } - }, - "scheduleActivityTaskFailedEventAttributes": { - "type": "structure", - "required": [ - "activityType", - "activityId", - "cause", - "decisionTaskCompletedEventId" - ], - "members": { - "activityType": { - "shape": "Sn" - }, - "activityId": {}, - "cause": {}, - "decisionTaskCompletedEventId": { - "type": "long" - } - } - }, - "requestCancelActivityTaskFailedEventAttributes": { - "type": "structure", - "required": [ - "activityId", - "cause", - "decisionTaskCompletedEventId" - ], - "members": { - "activityId": {}, - "cause": {}, - "decisionTaskCompletedEventId": { - "type": "long" - } - } - }, - "startTimerFailedEventAttributes": { - "type": "structure", - "required": [ - "timerId", - "cause", - "decisionTaskCompletedEventId" - ], - "members": { - "timerId": {}, - "cause": {}, - "decisionTaskCompletedEventId": { - "type": "long" - } - } - }, - "cancelTimerFailedEventAttributes": { - "type": "structure", - "required": [ - "timerId", - "cause", - "decisionTaskCompletedEventId" - ], - "members": { - "timerId": {}, - "cause": {}, - "decisionTaskCompletedEventId": { - "type": "long" - } - } - }, - "startChildWorkflowExecutionFailedEventAttributes": { - "type": "structure", - "required": [ - "workflowType", - "cause", - "workflowId", - "initiatedEventId", - "decisionTaskCompletedEventId" - ], - "members": { - "workflowType": { - "shape": "Sr" - }, - "cause": {}, - "workflowId": {}, - "initiatedEventId": { - "type": "long" - }, - "decisionTaskCompletedEventId": { - "type": "long" - }, - "control": {} - } - }, - "lambdaFunctionScheduledEventAttributes": { - "type": "structure", - "required": [ - "id", - "name", - "decisionTaskCompletedEventId" - ], - "members": { - "id": {}, - "name": {}, - "control": {}, - "input": {}, - "startToCloseTimeout": {}, - "decisionTaskCompletedEventId": { - "type": "long" - } - } - }, - "lambdaFunctionStartedEventAttributes": { - "type": "structure", - "required": [ - "scheduledEventId" - ], - "members": { - "scheduledEventId": { - "type": "long" - } - } - }, - "lambdaFunctionCompletedEventAttributes": { - "type": "structure", - "required": [ - "scheduledEventId", - "startedEventId" - ], - "members": { - "scheduledEventId": { - "type": "long" - }, - "startedEventId": { - "type": "long" - }, - "result": {} - } - }, - "lambdaFunctionFailedEventAttributes": { - "type": "structure", - "required": [ - "scheduledEventId", - "startedEventId" - ], - "members": { - "scheduledEventId": { - "type": "long" - }, - "startedEventId": { - "type": "long" - }, - "reason": {}, - "details": {} - } - }, - "lambdaFunctionTimedOutEventAttributes": { - "type": "structure", - "required": [ - "scheduledEventId", - "startedEventId" - ], - "members": { - "scheduledEventId": { - "type": "long" - }, - "startedEventId": { - "type": "long" - }, - "timeoutType": {} - } - }, - "scheduleLambdaFunctionFailedEventAttributes": { - "type": "structure", - "required": [ - "id", - "name", - "cause", - "decisionTaskCompletedEventId" - ], - "members": { - "id": {}, - "name": {}, - "cause": {}, - "decisionTaskCompletedEventId": { - "type": "long" - } - } - }, - "startLambdaFunctionFailedEventAttributes": { - "type": "structure", - "members": { - "scheduledEventId": { - "type": "long" - }, - "cause": {}, - "message": {} - } - } - } - } - }, - "S4g": { - "type": "structure", - "required": [ - "executionInfos" - ], - "members": { - "executionInfos": { - "type": "list", - "member": { - "shape": "S19" - } - }, - "nextPageToken": {} - } - } - } -} \ No newline at end of file diff --git a/workshops/monte-carlo-on-ec2-spot-fleet/src/web/node_modules/aws-sdk/apis/swf-2012-01-25.paginators.json b/workshops/monte-carlo-on-ec2-spot-fleet/src/web/node_modules/aws-sdk/apis/swf-2012-01-25.paginators.json deleted file mode 100644 index 86cec203..00000000 --- a/workshops/monte-carlo-on-ec2-spot-fleet/src/web/node_modules/aws-sdk/apis/swf-2012-01-25.paginators.json +++ /dev/null @@ -1,46 +0,0 @@ -{ - "pagination": { - "GetWorkflowExecutionHistory": { - "input_token": "nextPageToken", - "limit_key": "maximumPageSize", - "output_token": "nextPageToken", - "result_key": "events" - }, - "ListActivityTypes": { - "input_token": "nextPageToken", - "limit_key": "maximumPageSize", - "output_token": "nextPageToken", - "result_key": "typeInfos" - }, - "ListClosedWorkflowExecutions": { - "input_token": "nextPageToken", - "limit_key": "maximumPageSize", - "output_token": "nextPageToken", - "result_key": "executionInfos" - }, - "ListDomains": { - "input_token": "nextPageToken", - "limit_key": "maximumPageSize", - "output_token": "nextPageToken", - "result_key": "domainInfos" - }, - "ListOpenWorkflowExecutions": { - "input_token": "nextPageToken", - "limit_key": "maximumPageSize", - "output_token": "nextPageToken", - "result_key": "executionInfos" - }, - "ListWorkflowTypes": { - "input_token": "nextPageToken", - "limit_key": "maximumPageSize", - "output_token": "nextPageToken", - "result_key": "typeInfos" - }, - "PollForDecisionTask": { - "input_token": "nextPageToken", - "limit_key": "maximumPageSize", - "output_token": "nextPageToken", - "result_key": "events" - } - } -} \ No newline at end of file diff --git a/workshops/monte-carlo-on-ec2-spot-fleet/src/web/node_modules/aws-sdk/apis/waf-2015-08-24.examples.json b/workshops/monte-carlo-on-ec2-spot-fleet/src/web/node_modules/aws-sdk/apis/waf-2015-08-24.examples.json deleted file mode 100644 index eee5b6f4..00000000 --- a/workshops/monte-carlo-on-ec2-spot-fleet/src/web/node_modules/aws-sdk/apis/waf-2015-08-24.examples.json +++ /dev/null @@ -1,1017 +0,0 @@ -{ - "version": "1.0", - "examples": { - "CreateIPSet": [ - { - "input": { - "ChangeToken": "abcd12f2-46da-4fdb-b8d5-fbd4c466928f", - "Name": "MyIPSetFriendlyName" - }, - "output": { - "ChangeToken": "abcd12f2-46da-4fdb-b8d5-fbd4c466928f", - "IPSet": { - "IPSetDescriptors": [ - { - "Type": "IPV4", - "Value": "192.0.2.44/32" - } - ], - "IPSetId": "example1ds3t-46da-4fdb-b8d5-abc321j569j5", - "Name": "MyIPSetFriendlyName" - } - }, - "comments": { - "input": { - }, - "output": { - } - }, - "description": "The following example creates an IP match set named MyIPSetFriendlyName.", - "id": "createipset-1472501003122", - "title": "To create an IP set" - } - ], - "CreateRule": [ - { - "input": { - "ChangeToken": "abcd12f2-46da-4fdb-b8d5-fbd4c466928f", - "MetricName": "WAFByteHeaderRule", - "Name": "WAFByteHeaderRule" - }, - "output": { - "ChangeToken": "abcd12f2-46da-4fdb-b8d5-fbd4c466928f", - "Rule": { - "MetricName": "WAFByteHeaderRule", - "Name": "WAFByteHeaderRule", - "Predicates": [ - { - "DataId": "MyByteMatchSetID", - "Negated": false, - "Type": "ByteMatch" - } - ], - "RuleId": "WAFRule-1-Example" - } - }, - "comments": { - "input": { - }, - "output": { - } - }, - "description": "The following example creates a rule named WAFByteHeaderRule.", - "id": "createrule-1474072675555", - "title": "To create a rule" - } - ], - "CreateSizeConstraintSet": [ - { - "input": { - "ChangeToken": "abcd12f2-46da-4fdb-b8d5-fbd4c466928f", - "Name": "MySampleSizeConstraintSet" - }, - "output": { - "ChangeToken": "abcd12f2-46da-4fdb-b8d5-fbd4c466928f", - "SizeConstraintSet": { - "Name": "MySampleSizeConstraintSet", - "SizeConstraintSetId": "example1ds3t-46da-4fdb-b8d5-abc321j569j5", - "SizeConstraints": [ - { - "ComparisonOperator": "GT", - "FieldToMatch": { - "Type": "QUERY_STRING" - }, - "Size": 0, - "TextTransformation": "NONE" - } - ] - } - }, - "comments": { - "input": { - }, - "output": { - } - }, - "description": "The following example creates size constraint set named MySampleSizeConstraintSet.", - "id": "createsizeconstraint-1474299140754", - "title": "To create a size constraint" - } - ], - "CreateSqlInjectionMatchSet": [ - { - "input": { - "ChangeToken": "abcd12f2-46da-4fdb-b8d5-fbd4c466928f", - "Name": "MySQLInjectionMatchSet" - }, - "output": { - "ChangeToken": "abcd12f2-46da-4fdb-b8d5-fbd4c466928f", - "SqlInjectionMatchSet": { - "Name": "MySQLInjectionMatchSet", - "SqlInjectionMatchSetId": "example1ds3t-46da-4fdb-b8d5-abc321j569j5", - "SqlInjectionMatchTuples": [ - { - "FieldToMatch": { - "Type": "QUERY_STRING" - }, - "TextTransformation": "URL_DECODE" - } - ] - } - }, - "comments": { - "input": { - }, - "output": { - } - }, - "description": "The following example creates a SQL injection match set named MySQLInjectionMatchSet.", - "id": "createsqlinjectionmatchset-1474492796105", - "title": "To create a SQL injection match set" - } - ], - "CreateWebACL": [ - { - "input": { - "ChangeToken": "abcd12f2-46da-4fdb-b8d5-fbd4c466928f", - "DefaultAction": { - "Type": "ALLOW" - }, - "MetricName": "CreateExample", - "Name": "CreateExample" - }, - "output": { - "ChangeToken": "abcd12f2-46da-4fdb-b8d5-fbd4c466928f", - "WebACL": { - "DefaultAction": { - "Type": "ALLOW" - }, - "MetricName": "CreateExample", - "Name": "CreateExample", - "Rules": [ - { - "Action": { - "Type": "ALLOW" - }, - "Priority": 1, - "RuleId": "WAFRule-1-Example" - } - ], - "WebACLId": "example-46da-4444-5555-example" - } - }, - "comments": { - "input": { - }, - "output": { - } - }, - "description": "The following example creates a web ACL named CreateExample.", - "id": "createwebacl-1472061481310", - "title": "To create a web ACL" - } - ], - "CreateXssMatchSet": [ - { - "input": { - "ChangeToken": "abcd12f2-46da-4fdb-b8d5-fbd4c466928f", - "Name": "MySampleXssMatchSet" - }, - "output": { - "ChangeToken": "abcd12f2-46da-4fdb-b8d5-fbd4c466928f", - "XssMatchSet": { - "Name": "MySampleXssMatchSet", - "XssMatchSetId": "example1ds3t-46da-4fdb-b8d5-abc321j569j5", - "XssMatchTuples": [ - { - "FieldToMatch": { - "Type": "QUERY_STRING" - }, - "TextTransformation": "URL_DECODE" - } - ] - } - }, - "comments": { - "input": { - }, - "output": { - } - }, - "description": "The following example creates an XSS match set named MySampleXssMatchSet.", - "id": "createxssmatchset-1474560868500", - "title": "To create an XSS match set" - } - ], - "DeleteByteMatchSet": [ - { - "input": { - "ByteMatchSetId": "exampleIDs3t-46da-4fdb-b8d5-abc321j569j5", - "ChangeToken": "abcd12f2-46da-4fdb-b8d5-fbd4c466928f" - }, - "output": { - "ChangeToken": "abcd12f2-46da-4fdb-b8d5-fbd4c466928f" - }, - "comments": { - "input": { - }, - "output": { - } - }, - "description": "The following example deletes a byte match set with the ID exampleIDs3t-46da-4fdb-b8d5-abc321j569j5.", - "id": "deletebytematchset-1473367566229", - "title": "To delete a byte match set" - } - ], - "DeleteIPSet": [ - { - "input": { - "ChangeToken": "abcd12f2-46da-4fdb-b8d5-fbd4c466928f", - "IPSetId": "example1ds3t-46da-4fdb-b8d5-abc321j569j5" - }, - "output": { - "ChangeToken": "abcd12f2-46da-4fdb-b8d5-fbd4c466928f" - }, - "comments": { - "input": { - }, - "output": { - } - }, - "description": "The following example deletes an IP match set with the ID example1ds3t-46da-4fdb-b8d5-abc321j569j5.", - "id": "deleteipset-1472767434306", - "title": "To delete an IP set" - } - ], - "DeleteRule": [ - { - "input": { - "ChangeToken": "abcd12f2-46da-4fdb-b8d5-fbd4c466928f", - "RuleId": "WAFRule-1-Example" - }, - "output": { - "ChangeToken": "abcd12f2-46da-4fdb-b8d5-fbd4c466928f" - }, - "comments": { - "input": { - }, - "output": { - } - }, - "description": "The following example deletes a rule with the ID WAFRule-1-Example.", - "id": "deleterule-1474073108749", - "title": "To delete a rule" - } - ], - "DeleteSizeConstraintSet": [ - { - "input": { - "ChangeToken": "abcd12f2-46da-4fdb-b8d5-fbd4c466928f", - "SizeConstraintSetId": "example1ds3t-46da-4fdb-b8d5-abc321j569j5" - }, - "output": { - "ChangeToken": "abcd12f2-46da-4fdb-b8d5-fbd4c466928f" - }, - "comments": { - "input": { - }, - "output": { - } - }, - "description": "The following example deletes a size constraint set with the ID example1ds3t-46da-4fdb-b8d5-abc321j569j5.", - "id": "deletesizeconstraintset-1474299857905", - "title": "To delete a size constraint set" - } - ], - "DeleteSqlInjectionMatchSet": [ - { - "input": { - "ChangeToken": "abcd12f2-46da-4fdb-b8d5-fbd4c466928f", - "SqlInjectionMatchSetId": "example1ds3t-46da-4fdb-b8d5-abc321j569j5" - }, - "output": { - "ChangeToken": "abcd12f2-46da-4fdb-b8d5-fbd4c466928f" - }, - "comments": { - "input": { - }, - "output": { - } - }, - "description": "The following example deletes a SQL injection match set with the ID example1ds3t-46da-4fdb-b8d5-abc321j569j5.", - "id": "deletesqlinjectionmatchset-1474493373197", - "title": "To delete a SQL injection match set" - } - ], - "DeleteWebACL": [ - { - "input": { - "ChangeToken": "abcd12f2-46da-4fdb-b8d5-fbd4c466928f", - "WebACLId": "example-46da-4444-5555-example" - }, - "output": { - "ChangeToken": "abcd12f2-46da-4fdb-b8d5-fbd4c466928f" - }, - "comments": { - "input": { - }, - "output": { - } - }, - "description": "The following example deletes a web ACL with the ID example-46da-4444-5555-example.", - "id": "deletewebacl-1472767755931", - "title": "To delete a web ACL" - } - ], - "DeleteXssMatchSet": [ - { - "input": { - "ChangeToken": "abcd12f2-46da-4fdb-b8d5-fbd4c466928f", - "XssMatchSetId": "example1ds3t-46da-4fdb-b8d5-abc321j569j5" - }, - "output": { - "ChangeToken": "abcd12f2-46da-4fdb-b8d5-fbd4c466928f" - }, - "comments": { - "input": { - }, - "output": { - } - }, - "description": "The following example deletes an XSS match set with the ID example1ds3t-46da-4fdb-b8d5-abc321j569j5.", - "id": "deletexssmatchset-1474561302618", - "title": "To delete an XSS match set" - } - ], - "GetByteMatchSet": [ - { - "input": { - "ByteMatchSetId": "exampleIDs3t-46da-4fdb-b8d5-abc321j569j5" - }, - "output": { - "ByteMatchSet": { - "ByteMatchSetId": "exampleIDs3t-46da-4fdb-b8d5-abc321j569j5", - "ByteMatchTuples": [ - { - "FieldToMatch": { - "Data": "referer", - "Type": "HEADER" - }, - "PositionalConstraint": "CONTAINS", - "TargetString": "badrefer1", - "TextTransformation": "NONE" - } - ], - "Name": "ByteMatchNameExample" - } - }, - "comments": { - "input": { - }, - "output": { - } - }, - "description": "The following example returns the details of a byte match set with the ID exampleIDs3t-46da-4fdb-b8d5-abc321j569j5.", - "id": "getbytematchset-1473273311532", - "title": "To get a byte match set" - } - ], - "GetChangeToken": [ - { - "input": { - }, - "output": { - "ChangeToken": "abcd12f2-46da-4fdb-b8d5-fbd4c466928f" - }, - "comments": { - "input": { - }, - "output": { - } - }, - "description": "The following example returns a change token to use for a create, update or delete operation.", - "id": "get-change-token-example-1471635120794", - "title": "To get a change token" - } - ], - "GetChangeTokenStatus": [ - { - "input": { - "ChangeToken": "abcd12f2-46da-4fdb-b8d5-fbd4c466928f" - }, - "output": { - "ChangeTokenStatus": "PENDING" - }, - "comments": { - "input": { - }, - "output": { - } - }, - "description": "The following example returns the status of a change token with the ID abcd12f2-46da-4fdb-b8d5-fbd4c466928f.", - "id": "getchangetokenstatus-1474658417107", - "title": "To get the change token status" - } - ], - "GetIPSet": [ - { - "input": { - "IPSetId": "example1ds3t-46da-4fdb-b8d5-abc321j569j5" - }, - "output": { - "IPSet": { - "IPSetDescriptors": [ - { - "Type": "IPV4", - "Value": "192.0.2.44/32" - } - ], - "IPSetId": "example1ds3t-46da-4fdb-b8d5-abc321j569j5", - "Name": "MyIPSetFriendlyName" - } - }, - "comments": { - "input": { - }, - "output": { - } - }, - "description": "The following example returns the details of an IP match set with the ID example1ds3t-46da-4fdb-b8d5-abc321j569j5.", - "id": "getipset-1474658688675", - "title": "To get an IP set" - } - ], - "GetRule": [ - { - "input": { - "RuleId": "example1ds3t-46da-4fdb-b8d5-abc321j569j5" - }, - "output": { - "Rule": { - "MetricName": "WAFByteHeaderRule", - "Name": "WAFByteHeaderRule", - "Predicates": [ - { - "DataId": "MyByteMatchSetID", - "Negated": false, - "Type": "ByteMatch" - } - ], - "RuleId": "example1ds3t-46da-4fdb-b8d5-abc321j569j5" - } - }, - "comments": { - "input": { - }, - "output": { - } - }, - "description": "The following example returns the details of a rule with the ID example1ds3t-46da-4fdb-b8d5-abc321j569j5.", - "id": "getrule-1474659238790", - "title": "To get a rule" - } - ], - "GetSampledRequests": [ - { - "input": { - "MaxItems": 100, - "RuleId": "WAFRule-1-Example", - "TimeWindow": { - "EndTime": "2016-09-27T15:50Z", - "StartTime": "2016-09-27T15:50Z" - }, - "WebAclId": "createwebacl-1472061481310" - }, - "output": { - "PopulationSize": 50, - "SampledRequests": [ - { - "Action": "BLOCK", - "Request": { - "ClientIP": "192.0.2.44", - "Country": "US", - "HTTPVersion": "HTTP/1.1", - "Headers": [ - { - "Name": "User-Agent", - "Value": "BadBot " - } - ], - "Method": "HEAD" - }, - "Timestamp": "2016-09-27T14:55Z", - "Weight": 1 - } - ], - "TimeWindow": { - "EndTime": "2016-09-27T15:50Z", - "StartTime": "2016-09-27T14:50Z" - } - }, - "comments": { - "input": { - }, - "output": { - } - }, - "description": "The following example returns detailed information about 100 requests --a sample-- that AWS WAF randomly selects from among the first 5,000 requests that your AWS resource received between the time period 2016-09-27T15:50Z to 2016-09-27T15:50Z.", - "id": "getsampledrequests-1474927997195", - "title": "To get a sampled requests" - } - ], - "GetSizeConstraintSet": [ - { - "input": { - "SizeConstraintSetId": "example1ds3t-46da-4fdb-b8d5-abc321j569j5" - }, - "output": { - "SizeConstraintSet": { - "Name": "MySampleSizeConstraintSet", - "SizeConstraintSetId": "example1ds3t-46da-4fdb-b8d5-abc321j569j5", - "SizeConstraints": [ - { - "ComparisonOperator": "GT", - "FieldToMatch": { - "Type": "QUERY_STRING" - }, - "Size": 0, - "TextTransformation": "NONE" - } - ] - } - }, - "comments": { - "input": { - }, - "output": { - } - }, - "description": "The following example returns the details of a size constraint match set with the ID example1ds3t-46da-4fdb-b8d5-abc321j569j5.", - "id": "getsizeconstraintset-1475005422493", - "title": "To get a size constraint set" - } - ], - "GetSqlInjectionMatchSet": [ - { - "input": { - "SqlInjectionMatchSetId": "example1ds3t-46da-4fdb-b8d5-abc321j569j5" - }, - "output": { - "SqlInjectionMatchSet": { - "Name": "MySQLInjectionMatchSet", - "SqlInjectionMatchSetId": "example1ds3t-46da-4fdb-b8d5-abc321j569j5", - "SqlInjectionMatchTuples": [ - { - "FieldToMatch": { - "Type": "QUERY_STRING" - }, - "TextTransformation": "URL_DECODE" - } - ] - } - }, - "comments": { - "input": { - }, - "output": { - } - }, - "description": "The following example returns the details of a SQL injection match set with the ID example1ds3t-46da-4fdb-b8d5-abc321j569j5.", - "id": "getsqlinjectionmatchset-1475005940137", - "title": "To get a SQL injection match set" - } - ], - "GetWebACL": [ - { - "input": { - "WebACLId": "createwebacl-1472061481310" - }, - "output": { - "WebACL": { - "DefaultAction": { - "Type": "ALLOW" - }, - "MetricName": "CreateExample", - "Name": "CreateExample", - "Rules": [ - { - "Action": { - "Type": "ALLOW" - }, - "Priority": 1, - "RuleId": "WAFRule-1-Example" - } - ], - "WebACLId": "createwebacl-1472061481310" - } - }, - "comments": { - "input": { - }, - "output": { - } - }, - "description": "The following example returns the details of a web ACL with the ID createwebacl-1472061481310.", - "id": "getwebacl-1475006348525", - "title": "To get a web ACL" - } - ], - "GetXssMatchSet": [ - { - "input": { - "XssMatchSetId": "example1ds3t-46da-4fdb-b8d5-abc321j569j5" - }, - "output": { - "XssMatchSet": { - "Name": "MySampleXssMatchSet", - "XssMatchSetId": "example1ds3t-46da-4fdb-b8d5-abc321j569j5", - "XssMatchTuples": [ - { - "FieldToMatch": { - "Type": "QUERY_STRING" - }, - "TextTransformation": "URL_DECODE" - } - ] - } - }, - "comments": { - "input": { - }, - "output": { - } - }, - "description": "The following example returns the details of an XSS match set with the ID example1ds3t-46da-4fdb-b8d5-abc321j569j5.", - "id": "getxssmatchset-1475187879017", - "title": "To get an XSS match set" - } - ], - "ListIPSets": [ - { - "input": { - "Limit": 100 - }, - "output": { - "IPSets": [ - { - "IPSetId": "abcd12f2-46da-4fdb-b8d5-fbd4c466928f", - "Name": "MyIPSetFriendlyName" - } - ] - }, - "comments": { - "input": { - }, - "output": { - } - }, - "description": "The following example returns an array of up to 100 IP match sets.", - "id": "listipsets-1472235676229", - "title": "To list IP sets" - } - ], - "ListRules": [ - { - "input": { - "Limit": 100 - }, - "output": { - "Rules": [ - { - "Name": "WAFByteHeaderRule", - "RuleId": "WAFRule-1-Example" - } - ] - }, - "comments": { - "input": { - }, - "output": { - } - }, - "description": "The following example returns an array of up to 100 rules.", - "id": "listrules-1475258406433", - "title": "To list rules" - } - ], - "ListSizeConstraintSets": [ - { - "input": { - "Limit": 100 - }, - "output": { - "SizeConstraintSets": [ - { - "Name": "MySampleSizeConstraintSet", - "SizeConstraintSetId": "example1ds3t-46da-4fdb-b8d5-abc321j569j5" - } - ] - }, - "comments": { - "input": { - }, - "output": { - } - }, - "description": "The following example returns an array of up to 100 size contraint match sets.", - "id": "listsizeconstraintsets-1474300067597", - "title": "To list a size constraint sets" - } - ], - "ListSqlInjectionMatchSets": [ - { - "input": { - "Limit": 100 - }, - "output": { - "SqlInjectionMatchSets": [ - { - "Name": "MySQLInjectionMatchSet", - "SqlInjectionMatchSetId": "example1ds3t-46da-4fdb-b8d5-abc321j569j5" - } - ] - }, - "comments": { - "input": { - }, - "output": { - } - }, - "description": "The following example returns an array of up to 100 SQL injection match sets.", - "id": "listsqlinjectionmatchset-1474493560103", - "title": "To list SQL injection match sets" - } - ], - "ListWebACLs": [ - { - "input": { - "Limit": 100 - }, - "output": { - "WebACLs": [ - { - "Name": "WebACLexample", - "WebACLId": "webacl-1472061481310" - } - ] - }, - "comments": { - "input": { - }, - "output": { - } - }, - "description": "The following example returns an array of up to 100 web ACLs.", - "id": "listwebacls-1475258732691", - "title": "To list Web ACLs" - } - ], - "ListXssMatchSets": [ - { - "input": { - "Limit": 100 - }, - "output": { - "XssMatchSets": [ - { - "Name": "MySampleXssMatchSet", - "XssMatchSetId": "example1ds3t-46da-4fdb-b8d5-abc321j569j5" - } - ] - }, - "comments": { - "input": { - }, - "output": { - } - }, - "description": "The following example returns an array of up to 100 XSS match sets.", - "id": "listxssmatchsets-1474561481168", - "title": "To list XSS match sets" - } - ], - "UpdateByteMatchSet": [ - { - "input": { - "ByteMatchSetId": "exampleIDs3t-46da-4fdb-b8d5-abc321j569j5", - "ChangeToken": "abcd12f2-46da-4fdb-b8d5-fbd4c466928f", - "Updates": [ - { - "Action": "DELETE", - "ByteMatchTuple": { - "FieldToMatch": { - "Data": "referer", - "Type": "HEADER" - }, - "PositionalConstraint": "CONTAINS", - "TargetString": "badrefer1", - "TextTransformation": "NONE" - } - } - ] - }, - "output": { - "ChangeToken": "abcd12f2-46da-4fdb-b8d5-fbd4c466928f" - }, - "comments": { - "input": { - }, - "output": { - } - }, - "description": "The following example deletes a ByteMatchTuple object (filters) in an byte match set with the ID exampleIDs3t-46da-4fdb-b8d5-abc321j569j5.", - "id": "updatebytematchset-1475259074558", - "title": "To update a byte match set" - } - ], - "UpdateIPSet": [ - { - "input": { - "ChangeToken": "abcd12f2-46da-4fdb-b8d5-fbd4c466928f", - "IPSetId": "example1ds3t-46da-4fdb-b8d5-abc321j569j5", - "Updates": [ - { - "Action": "DELETE", - "IPSetDescriptor": { - "Type": "IPV4", - "Value": "192.0.2.44/32" - } - } - ] - }, - "output": { - "ChangeToken": "abcd12f2-46da-4fdb-b8d5-fbd4c466928f" - }, - "comments": { - "input": { - }, - "output": { - } - }, - "description": "The following example deletes an IPSetDescriptor object in an IP match set with the ID example1ds3t-46da-4fdb-b8d5-abc321j569j5.", - "id": "updateipset-1475259733625", - "title": "To update an IP set" - } - ], - "UpdateRule": [ - { - "input": { - "ChangeToken": "abcd12f2-46da-4fdb-b8d5-fbd4c466928f", - "RuleId": "example1ds3t-46da-4fdb-b8d5-abc321j569j5", - "Updates": [ - { - "Action": "DELETE", - "Predicate": { - "DataId": "MyByteMatchSetID", - "Negated": false, - "Type": "ByteMatch" - } - } - ] - }, - "output": { - "ChangeToken": "abcd12f2-46da-4fdb-b8d5-fbd4c466928f" - }, - "comments": { - "input": { - }, - "output": { - } - }, - "description": "The following example deletes a Predicate object in a rule with the ID example1ds3t-46da-4fdb-b8d5-abc321j569j5.", - "id": "updaterule-1475260064720", - "title": "To update a rule" - } - ], - "UpdateSizeConstraintSet": [ - { - "input": { - "ChangeToken": "abcd12f2-46da-4fdb-b8d5-fbd4c466928f", - "SizeConstraintSetId": "example1ds3t-46da-4fdb-b8d5-abc321j569j5", - "Updates": [ - { - "Action": "DELETE", - "SizeConstraint": { - "ComparisonOperator": "GT", - "FieldToMatch": { - "Type": "QUERY_STRING" - }, - "Size": 0, - "TextTransformation": "NONE" - } - } - ] - }, - "output": { - "ChangeToken": "abcd12f2-46da-4fdb-b8d5-fbd4c466928f" - }, - "comments": { - "input": { - }, - "output": { - } - }, - "description": "The following example deletes a SizeConstraint object (filters) in a size constraint set with the ID example1ds3t-46da-4fdb-b8d5-abc321j569j5.", - "id": "updatesizeconstraintset-1475531697891", - "title": "To update a size constraint set" - } - ], - "UpdateSqlInjectionMatchSet": [ - { - "input": { - "ChangeToken": "abcd12f2-46da-4fdb-b8d5-fbd4c466928f", - "SqlInjectionMatchSetId": "example1ds3t-46da-4fdb-b8d5-abc321j569j5", - "Updates": [ - { - "Action": "DELETE", - "SqlInjectionMatchTuple": { - "FieldToMatch": { - "Type": "QUERY_STRING" - }, - "TextTransformation": "URL_DECODE" - } - } - ] - }, - "output": { - "ChangeToken": "abcd12f2-46da-4fdb-b8d5-fbd4c466928f" - }, - "comments": { - "input": { - }, - "output": { - } - }, - "description": "The following example deletes a SqlInjectionMatchTuple object (filters) in a SQL injection match set with the ID example1ds3t-46da-4fdb-b8d5-abc321j569j5.", - "id": "updatesqlinjectionmatchset-1475532094686", - "title": "To update a SQL injection match set" - } - ], - "UpdateWebACL": [ - { - "input": { - "ChangeToken": "abcd12f2-46da-4fdb-b8d5-fbd4c466928f", - "DefaultAction": { - "Type": "ALLOW" - }, - "Updates": [ - { - "Action": "DELETE", - "ActivatedRule": { - "Action": { - "Type": "ALLOW" - }, - "Priority": 1, - "RuleId": "WAFRule-1-Example" - } - } - ], - "WebACLId": "webacl-1472061481310" - }, - "output": { - "ChangeToken": "abcd12f2-46da-4fdb-b8d5-fbd4c466928f" - }, - "comments": { - "input": { - }, - "output": { - } - }, - "description": "The following example deletes an ActivatedRule object in a WebACL with the ID webacl-1472061481310.", - "id": "updatewebacl-1475533627385", - "title": "To update a Web ACL" - } - ], - "UpdateXssMatchSet": [ - { - "input": { - "ChangeToken": "abcd12f2-46da-4fdb-b8d5-fbd4c466928f", - "Updates": [ - { - "Action": "DELETE", - "XssMatchTuple": { - "FieldToMatch": { - "Type": "QUERY_STRING" - }, - "TextTransformation": "URL_DECODE" - } - } - ], - "XssMatchSetId": "example1ds3t-46da-4fdb-b8d5-abc321j569j5" - }, - "output": { - "ChangeToken": "abcd12f2-46da-4fdb-b8d5-fbd4c466928f" - }, - "comments": { - "input": { - }, - "output": { - } - }, - "description": "The following example deletes an XssMatchTuple object (filters) in an XssMatchSet with the ID example1ds3t-46da-4fdb-b8d5-abc321j569j5.", - "id": "updatexssmatchset-1475534098881", - "title": "To update an XSS match set" - } - ] - } -} diff --git a/workshops/monte-carlo-on-ec2-spot-fleet/src/web/node_modules/aws-sdk/apis/waf-2015-08-24.min.json b/workshops/monte-carlo-on-ec2-spot-fleet/src/web/node_modules/aws-sdk/apis/waf-2015-08-24.min.json deleted file mode 100644 index 21d15283..00000000 --- a/workshops/monte-carlo-on-ec2-spot-fleet/src/web/node_modules/aws-sdk/apis/waf-2015-08-24.min.json +++ /dev/null @@ -1,1451 +0,0 @@ -{ - "version": "2.0", - "metadata": { - "apiVersion": "2015-08-24", - "endpointPrefix": "waf", - "jsonVersion": "1.1", - "protocol": "json", - "serviceAbbreviation": "WAF", - "serviceFullName": "AWS WAF", - "signatureVersion": "v4", - "targetPrefix": "AWSWAF_20150824", - "uid": "waf-2015-08-24" - }, - "operations": { - "CreateByteMatchSet": { - "input": { - "type": "structure", - "required": [ - "Name", - "ChangeToken" - ], - "members": { - "Name": {}, - "ChangeToken": {} - } - }, - "output": { - "type": "structure", - "members": { - "ByteMatchSet": { - "shape": "S5" - }, - "ChangeToken": {} - } - } - }, - "CreateIPSet": { - "input": { - "type": "structure", - "required": [ - "Name", - "ChangeToken" - ], - "members": { - "Name": {}, - "ChangeToken": {} - } - }, - "output": { - "type": "structure", - "members": { - "IPSet": { - "shape": "Sh" - }, - "ChangeToken": {} - } - } - }, - "CreateRateBasedRule": { - "input": { - "type": "structure", - "required": [ - "Name", - "MetricName", - "RateKey", - "RateLimit", - "ChangeToken" - ], - "members": { - "Name": {}, - "MetricName": {}, - "RateKey": {}, - "RateLimit": { - "type": "long" - }, - "ChangeToken": {} - } - }, - "output": { - "type": "structure", - "members": { - "Rule": { - "shape": "Sr" - }, - "ChangeToken": {} - } - } - }, - "CreateRule": { - "input": { - "type": "structure", - "required": [ - "Name", - "MetricName", - "ChangeToken" - ], - "members": { - "Name": {}, - "MetricName": {}, - "ChangeToken": {} - } - }, - "output": { - "type": "structure", - "members": { - "Rule": { - "shape": "Sy" - }, - "ChangeToken": {} - } - } - }, - "CreateSizeConstraintSet": { - "input": { - "type": "structure", - "required": [ - "Name", - "ChangeToken" - ], - "members": { - "Name": {}, - "ChangeToken": {} - } - }, - "output": { - "type": "structure", - "members": { - "SizeConstraintSet": { - "shape": "S11" - }, - "ChangeToken": {} - } - } - }, - "CreateSqlInjectionMatchSet": { - "input": { - "type": "structure", - "required": [ - "Name", - "ChangeToken" - ], - "members": { - "Name": {}, - "ChangeToken": {} - } - }, - "output": { - "type": "structure", - "members": { - "SqlInjectionMatchSet": { - "shape": "S18" - }, - "ChangeToken": {} - } - } - }, - "CreateWebACL": { - "input": { - "type": "structure", - "required": [ - "Name", - "MetricName", - "DefaultAction", - "ChangeToken" - ], - "members": { - "Name": {}, - "MetricName": {}, - "DefaultAction": { - "shape": "S1c" - }, - "ChangeToken": {} - } - }, - "output": { - "type": "structure", - "members": { - "WebACL": { - "shape": "S1f" - }, - "ChangeToken": {} - } - } - }, - "CreateXssMatchSet": { - "input": { - "type": "structure", - "required": [ - "Name", - "ChangeToken" - ], - "members": { - "Name": {}, - "ChangeToken": {} - } - }, - "output": { - "type": "structure", - "members": { - "XssMatchSet": { - "shape": "S1m" - }, - "ChangeToken": {} - } - } - }, - "DeleteByteMatchSet": { - "input": { - "type": "structure", - "required": [ - "ByteMatchSetId", - "ChangeToken" - ], - "members": { - "ByteMatchSetId": {}, - "ChangeToken": {} - } - }, - "output": { - "type": "structure", - "members": { - "ChangeToken": {} - } - } - }, - "DeleteIPSet": { - "input": { - "type": "structure", - "required": [ - "IPSetId", - "ChangeToken" - ], - "members": { - "IPSetId": {}, - "ChangeToken": {} - } - }, - "output": { - "type": "structure", - "members": { - "ChangeToken": {} - } - } - }, - "DeleteRateBasedRule": { - "input": { - "type": "structure", - "required": [ - "RuleId", - "ChangeToken" - ], - "members": { - "RuleId": {}, - "ChangeToken": {} - } - }, - "output": { - "type": "structure", - "members": { - "ChangeToken": {} - } - } - }, - "DeleteRule": { - "input": { - "type": "structure", - "required": [ - "RuleId", - "ChangeToken" - ], - "members": { - "RuleId": {}, - "ChangeToken": {} - } - }, - "output": { - "type": "structure", - "members": { - "ChangeToken": {} - } - } - }, - "DeleteSizeConstraintSet": { - "input": { - "type": "structure", - "required": [ - "SizeConstraintSetId", - "ChangeToken" - ], - "members": { - "SizeConstraintSetId": {}, - "ChangeToken": {} - } - }, - "output": { - "type": "structure", - "members": { - "ChangeToken": {} - } - } - }, - "DeleteSqlInjectionMatchSet": { - "input": { - "type": "structure", - "required": [ - "SqlInjectionMatchSetId", - "ChangeToken" - ], - "members": { - "SqlInjectionMatchSetId": {}, - "ChangeToken": {} - } - }, - "output": { - "type": "structure", - "members": { - "ChangeToken": {} - } - } - }, - "DeleteWebACL": { - "input": { - "type": "structure", - "required": [ - "WebACLId", - "ChangeToken" - ], - "members": { - "WebACLId": {}, - "ChangeToken": {} - } - }, - "output": { - "type": "structure", - "members": { - "ChangeToken": {} - } - } - }, - "DeleteXssMatchSet": { - "input": { - "type": "structure", - "required": [ - "XssMatchSetId", - "ChangeToken" - ], - "members": { - "XssMatchSetId": {}, - "ChangeToken": {} - } - }, - "output": { - "type": "structure", - "members": { - "ChangeToken": {} - } - } - }, - "GetByteMatchSet": { - "input": { - "type": "structure", - "required": [ - "ByteMatchSetId" - ], - "members": { - "ByteMatchSetId": {} - } - }, - "output": { - "type": "structure", - "members": { - "ByteMatchSet": { - "shape": "S5" - } - } - } - }, - "GetChangeToken": { - "input": { - "type": "structure", - "members": {} - }, - "output": { - "type": "structure", - "members": { - "ChangeToken": {} - } - } - }, - "GetChangeTokenStatus": { - "input": { - "type": "structure", - "required": [ - "ChangeToken" - ], - "members": { - "ChangeToken": {} - } - }, - "output": { - "type": "structure", - "members": { - "ChangeTokenStatus": {} - } - } - }, - "GetIPSet": { - "input": { - "type": "structure", - "required": [ - "IPSetId" - ], - "members": { - "IPSetId": {} - } - }, - "output": { - "type": "structure", - "members": { - "IPSet": { - "shape": "Sh" - } - } - } - }, - "GetRateBasedRule": { - "input": { - "type": "structure", - "required": [ - "RuleId" - ], - "members": { - "RuleId": {} - } - }, - "output": { - "type": "structure", - "members": { - "Rule": { - "shape": "Sr" - } - } - } - }, - "GetRateBasedRuleManagedKeys": { - "input": { - "type": "structure", - "required": [ - "RuleId" - ], - "members": { - "RuleId": {}, - "NextMarker": {} - } - }, - "output": { - "type": "structure", - "members": { - "ManagedKeys": { - "type": "list", - "member": {} - }, - "NextMarker": {} - } - } - }, - "GetRule": { - "input": { - "type": "structure", - "required": [ - "RuleId" - ], - "members": { - "RuleId": {} - } - }, - "output": { - "type": "structure", - "members": { - "Rule": { - "shape": "Sy" - } - } - } - }, - "GetSampledRequests": { - "input": { - "type": "structure", - "required": [ - "WebAclId", - "RuleId", - "TimeWindow", - "MaxItems" - ], - "members": { - "WebAclId": {}, - "RuleId": {}, - "TimeWindow": { - "shape": "S2o" - }, - "MaxItems": { - "type": "long" - } - } - }, - "output": { - "type": "structure", - "members": { - "SampledRequests": { - "type": "list", - "member": { - "type": "structure", - "required": [ - "Request", - "Weight" - ], - "members": { - "Request": { - "type": "structure", - "members": { - "ClientIP": {}, - "Country": {}, - "URI": {}, - "Method": {}, - "HTTPVersion": {}, - "Headers": { - "type": "list", - "member": { - "type": "structure", - "members": { - "Name": {}, - "Value": {} - } - } - } - } - }, - "Weight": { - "type": "long" - }, - "Timestamp": { - "type": "timestamp" - }, - "Action": {} - } - } - }, - "PopulationSize": { - "type": "long" - }, - "TimeWindow": { - "shape": "S2o" - } - } - } - }, - "GetSizeConstraintSet": { - "input": { - "type": "structure", - "required": [ - "SizeConstraintSetId" - ], - "members": { - "SizeConstraintSetId": {} - } - }, - "output": { - "type": "structure", - "members": { - "SizeConstraintSet": { - "shape": "S11" - } - } - } - }, - "GetSqlInjectionMatchSet": { - "input": { - "type": "structure", - "required": [ - "SqlInjectionMatchSetId" - ], - "members": { - "SqlInjectionMatchSetId": {} - } - }, - "output": { - "type": "structure", - "members": { - "SqlInjectionMatchSet": { - "shape": "S18" - } - } - } - }, - "GetWebACL": { - "input": { - "type": "structure", - "required": [ - "WebACLId" - ], - "members": { - "WebACLId": {} - } - }, - "output": { - "type": "structure", - "members": { - "WebACL": { - "shape": "S1f" - } - } - } - }, - "GetXssMatchSet": { - "input": { - "type": "structure", - "required": [ - "XssMatchSetId" - ], - "members": { - "XssMatchSetId": {} - } - }, - "output": { - "type": "structure", - "members": { - "XssMatchSet": { - "shape": "S1m" - } - } - } - }, - "ListByteMatchSets": { - "input": { - "type": "structure", - "members": { - "NextMarker": {}, - "Limit": { - "type": "integer" - } - } - }, - "output": { - "type": "structure", - "members": { - "NextMarker": {}, - "ByteMatchSets": { - "type": "list", - "member": { - "type": "structure", - "required": [ - "ByteMatchSetId", - "Name" - ], - "members": { - "ByteMatchSetId": {}, - "Name": {} - } - } - } - } - } - }, - "ListIPSets": { - "input": { - "type": "structure", - "members": { - "NextMarker": {}, - "Limit": { - "type": "integer" - } - } - }, - "output": { - "type": "structure", - "members": { - "NextMarker": {}, - "IPSets": { - "type": "list", - "member": { - "type": "structure", - "required": [ - "IPSetId", - "Name" - ], - "members": { - "IPSetId": {}, - "Name": {} - } - } - } - } - } - }, - "ListRateBasedRules": { - "input": { - "type": "structure", - "members": { - "NextMarker": {}, - "Limit": { - "type": "integer" - } - } - }, - "output": { - "type": "structure", - "members": { - "NextMarker": {}, - "Rules": { - "shape": "S3q" - } - } - } - }, - "ListRules": { - "input": { - "type": "structure", - "members": { - "NextMarker": {}, - "Limit": { - "type": "integer" - } - } - }, - "output": { - "type": "structure", - "members": { - "NextMarker": {}, - "Rules": { - "shape": "S3q" - } - } - } - }, - "ListSizeConstraintSets": { - "input": { - "type": "structure", - "members": { - "NextMarker": {}, - "Limit": { - "type": "integer" - } - } - }, - "output": { - "type": "structure", - "members": { - "NextMarker": {}, - "SizeConstraintSets": { - "type": "list", - "member": { - "type": "structure", - "required": [ - "SizeConstraintSetId", - "Name" - ], - "members": { - "SizeConstraintSetId": {}, - "Name": {} - } - } - } - } - } - }, - "ListSqlInjectionMatchSets": { - "input": { - "type": "structure", - "members": { - "NextMarker": {}, - "Limit": { - "type": "integer" - } - } - }, - "output": { - "type": "structure", - "members": { - "NextMarker": {}, - "SqlInjectionMatchSets": { - "type": "list", - "member": { - "type": "structure", - "required": [ - "SqlInjectionMatchSetId", - "Name" - ], - "members": { - "SqlInjectionMatchSetId": {}, - "Name": {} - } - } - } - } - } - }, - "ListWebACLs": { - "input": { - "type": "structure", - "members": { - "NextMarker": {}, - "Limit": { - "type": "integer" - } - } - }, - "output": { - "type": "structure", - "members": { - "NextMarker": {}, - "WebACLs": { - "type": "list", - "member": { - "type": "structure", - "required": [ - "WebACLId", - "Name" - ], - "members": { - "WebACLId": {}, - "Name": {} - } - } - } - } - } - }, - "ListXssMatchSets": { - "input": { - "type": "structure", - "members": { - "NextMarker": {}, - "Limit": { - "type": "integer" - } - } - }, - "output": { - "type": "structure", - "members": { - "NextMarker": {}, - "XssMatchSets": { - "type": "list", - "member": { - "type": "structure", - "required": [ - "XssMatchSetId", - "Name" - ], - "members": { - "XssMatchSetId": {}, - "Name": {} - } - } - } - } - } - }, - "UpdateByteMatchSet": { - "input": { - "type": "structure", - "required": [ - "ByteMatchSetId", - "ChangeToken", - "Updates" - ], - "members": { - "ByteMatchSetId": {}, - "ChangeToken": {}, - "Updates": { - "type": "list", - "member": { - "type": "structure", - "required": [ - "Action", - "ByteMatchTuple" - ], - "members": { - "Action": {}, - "ByteMatchTuple": { - "shape": "S8" - } - } - } - } - } - }, - "output": { - "type": "structure", - "members": { - "ChangeToken": {} - } - } - }, - "UpdateIPSet": { - "input": { - "type": "structure", - "required": [ - "IPSetId", - "ChangeToken", - "Updates" - ], - "members": { - "IPSetId": {}, - "ChangeToken": {}, - "Updates": { - "type": "list", - "member": { - "type": "structure", - "required": [ - "Action", - "IPSetDescriptor" - ], - "members": { - "Action": {}, - "IPSetDescriptor": { - "shape": "Sj" - } - } - } - } - } - }, - "output": { - "type": "structure", - "members": { - "ChangeToken": {} - } - } - }, - "UpdateRateBasedRule": { - "input": { - "type": "structure", - "required": [ - "RuleId", - "ChangeToken", - "Updates", - "RateLimit" - ], - "members": { - "RuleId": {}, - "ChangeToken": {}, - "Updates": { - "shape": "S4k" - }, - "RateLimit": { - "type": "long" - } - } - }, - "output": { - "type": "structure", - "members": { - "ChangeToken": {} - } - } - }, - "UpdateRule": { - "input": { - "type": "structure", - "required": [ - "RuleId", - "ChangeToken", - "Updates" - ], - "members": { - "RuleId": {}, - "ChangeToken": {}, - "Updates": { - "shape": "S4k" - } - } - }, - "output": { - "type": "structure", - "members": { - "ChangeToken": {} - } - } - }, - "UpdateSizeConstraintSet": { - "input": { - "type": "structure", - "required": [ - "SizeConstraintSetId", - "ChangeToken", - "Updates" - ], - "members": { - "SizeConstraintSetId": {}, - "ChangeToken": {}, - "Updates": { - "type": "list", - "member": { - "type": "structure", - "required": [ - "Action", - "SizeConstraint" - ], - "members": { - "Action": {}, - "SizeConstraint": { - "shape": "S13" - } - } - } - } - } - }, - "output": { - "type": "structure", - "members": { - "ChangeToken": {} - } - } - }, - "UpdateSqlInjectionMatchSet": { - "input": { - "type": "structure", - "required": [ - "SqlInjectionMatchSetId", - "ChangeToken", - "Updates" - ], - "members": { - "SqlInjectionMatchSetId": {}, - "ChangeToken": {}, - "Updates": { - "type": "list", - "member": { - "type": "structure", - "required": [ - "Action", - "SqlInjectionMatchTuple" - ], - "members": { - "Action": {}, - "SqlInjectionMatchTuple": { - "shape": "S1a" - } - } - } - } - } - }, - "output": { - "type": "structure", - "members": { - "ChangeToken": {} - } - } - }, - "UpdateWebACL": { - "input": { - "type": "structure", - "required": [ - "WebACLId", - "ChangeToken" - ], - "members": { - "WebACLId": {}, - "ChangeToken": {}, - "Updates": { - "type": "list", - "member": { - "type": "structure", - "required": [ - "Action", - "ActivatedRule" - ], - "members": { - "Action": {}, - "ActivatedRule": { - "shape": "S1h" - } - } - } - }, - "DefaultAction": { - "shape": "S1c" - } - } - }, - "output": { - "type": "structure", - "members": { - "ChangeToken": {} - } - } - }, - "UpdateXssMatchSet": { - "input": { - "type": "structure", - "required": [ - "XssMatchSetId", - "ChangeToken", - "Updates" - ], - "members": { - "XssMatchSetId": {}, - "ChangeToken": {}, - "Updates": { - "type": "list", - "member": { - "type": "structure", - "required": [ - "Action", - "XssMatchTuple" - ], - "members": { - "Action": {}, - "XssMatchTuple": { - "shape": "S1o" - } - } - } - } - } - }, - "output": { - "type": "structure", - "members": { - "ChangeToken": {} - } - } - } - }, - "shapes": { - "S5": { - "type": "structure", - "required": [ - "ByteMatchSetId", - "ByteMatchTuples" - ], - "members": { - "ByteMatchSetId": {}, - "Name": {}, - "ByteMatchTuples": { - "type": "list", - "member": { - "shape": "S8" - } - } - } - }, - "S8": { - "type": "structure", - "required": [ - "FieldToMatch", - "TargetString", - "TextTransformation", - "PositionalConstraint" - ], - "members": { - "FieldToMatch": { - "shape": "S9" - }, - "TargetString": { - "type": "blob" - }, - "TextTransformation": {}, - "PositionalConstraint": {} - } - }, - "S9": { - "type": "structure", - "required": [ - "Type" - ], - "members": { - "Type": {}, - "Data": {} - } - }, - "Sh": { - "type": "structure", - "required": [ - "IPSetId", - "IPSetDescriptors" - ], - "members": { - "IPSetId": {}, - "Name": {}, - "IPSetDescriptors": { - "type": "list", - "member": { - "shape": "Sj" - } - } - } - }, - "Sj": { - "type": "structure", - "required": [ - "Type", - "Value" - ], - "members": { - "Type": {}, - "Value": {} - } - }, - "Sr": { - "type": "structure", - "required": [ - "RuleId", - "MatchPredicates", - "RateKey", - "RateLimit" - ], - "members": { - "RuleId": {}, - "Name": {}, - "MetricName": {}, - "MatchPredicates": { - "shape": "Ss" - }, - "RateKey": {}, - "RateLimit": { - "type": "long" - } - } - }, - "Ss": { - "type": "list", - "member": { - "shape": "St" - } - }, - "St": { - "type": "structure", - "required": [ - "Negated", - "Type", - "DataId" - ], - "members": { - "Negated": { - "type": "boolean" - }, - "Type": {}, - "DataId": {} - } - }, - "Sy": { - "type": "structure", - "required": [ - "RuleId", - "Predicates" - ], - "members": { - "RuleId": {}, - "Name": {}, - "MetricName": {}, - "Predicates": { - "shape": "Ss" - } - } - }, - "S11": { - "type": "structure", - "required": [ - "SizeConstraintSetId", - "SizeConstraints" - ], - "members": { - "SizeConstraintSetId": {}, - "Name": {}, - "SizeConstraints": { - "type": "list", - "member": { - "shape": "S13" - } - } - } - }, - "S13": { - "type": "structure", - "required": [ - "FieldToMatch", - "TextTransformation", - "ComparisonOperator", - "Size" - ], - "members": { - "FieldToMatch": { - "shape": "S9" - }, - "TextTransformation": {}, - "ComparisonOperator": {}, - "Size": { - "type": "long" - } - } - }, - "S18": { - "type": "structure", - "required": [ - "SqlInjectionMatchSetId", - "SqlInjectionMatchTuples" - ], - "members": { - "SqlInjectionMatchSetId": {}, - "Name": {}, - "SqlInjectionMatchTuples": { - "type": "list", - "member": { - "shape": "S1a" - } - } - } - }, - "S1a": { - "type": "structure", - "required": [ - "FieldToMatch", - "TextTransformation" - ], - "members": { - "FieldToMatch": { - "shape": "S9" - }, - "TextTransformation": {} - } - }, - "S1c": { - "type": "structure", - "required": [ - "Type" - ], - "members": { - "Type": {} - } - }, - "S1f": { - "type": "structure", - "required": [ - "WebACLId", - "DefaultAction", - "Rules" - ], - "members": { - "WebACLId": {}, - "Name": {}, - "MetricName": {}, - "DefaultAction": { - "shape": "S1c" - }, - "Rules": { - "type": "list", - "member": { - "shape": "S1h" - } - } - } - }, - "S1h": { - "type": "structure", - "required": [ - "Priority", - "RuleId", - "Action" - ], - "members": { - "Priority": { - "type": "integer" - }, - "RuleId": {}, - "Action": { - "shape": "S1c" - }, - "Type": {} - } - }, - "S1m": { - "type": "structure", - "required": [ - "XssMatchSetId", - "XssMatchTuples" - ], - "members": { - "XssMatchSetId": {}, - "Name": {}, - "XssMatchTuples": { - "type": "list", - "member": { - "shape": "S1o" - } - } - } - }, - "S1o": { - "type": "structure", - "required": [ - "FieldToMatch", - "TextTransformation" - ], - "members": { - "FieldToMatch": { - "shape": "S9" - }, - "TextTransformation": {} - } - }, - "S2o": { - "type": "structure", - "required": [ - "StartTime", - "EndTime" - ], - "members": { - "StartTime": { - "type": "timestamp" - }, - "EndTime": { - "type": "timestamp" - } - } - }, - "S3q": { - "type": "list", - "member": { - "type": "structure", - "required": [ - "RuleId", - "Name" - ], - "members": { - "RuleId": {}, - "Name": {} - } - } - }, - "S4k": { - "type": "list", - "member": { - "type": "structure", - "required": [ - "Action", - "Predicate" - ], - "members": { - "Action": {}, - "Predicate": { - "shape": "St" - } - } - } - } - } -} \ No newline at end of file diff --git a/workshops/monte-carlo-on-ec2-spot-fleet/src/web/node_modules/aws-sdk/apis/waf-2015-08-24.paginators.json b/workshops/monte-carlo-on-ec2-spot-fleet/src/web/node_modules/aws-sdk/apis/waf-2015-08-24.paginators.json deleted file mode 100644 index 5677bd8e..00000000 --- a/workshops/monte-carlo-on-ec2-spot-fleet/src/web/node_modules/aws-sdk/apis/waf-2015-08-24.paginators.json +++ /dev/null @@ -1,4 +0,0 @@ -{ - "pagination": { - } -} diff --git a/workshops/monte-carlo-on-ec2-spot-fleet/src/web/node_modules/aws-sdk/apis/waf-regional-2016-11-28.examples.json b/workshops/monte-carlo-on-ec2-spot-fleet/src/web/node_modules/aws-sdk/apis/waf-regional-2016-11-28.examples.json deleted file mode 100644 index eee5b6f4..00000000 --- a/workshops/monte-carlo-on-ec2-spot-fleet/src/web/node_modules/aws-sdk/apis/waf-regional-2016-11-28.examples.json +++ /dev/null @@ -1,1017 +0,0 @@ -{ - "version": "1.0", - "examples": { - "CreateIPSet": [ - { - "input": { - "ChangeToken": "abcd12f2-46da-4fdb-b8d5-fbd4c466928f", - "Name": "MyIPSetFriendlyName" - }, - "output": { - "ChangeToken": "abcd12f2-46da-4fdb-b8d5-fbd4c466928f", - "IPSet": { - "IPSetDescriptors": [ - { - "Type": "IPV4", - "Value": "192.0.2.44/32" - } - ], - "IPSetId": "example1ds3t-46da-4fdb-b8d5-abc321j569j5", - "Name": "MyIPSetFriendlyName" - } - }, - "comments": { - "input": { - }, - "output": { - } - }, - "description": "The following example creates an IP match set named MyIPSetFriendlyName.", - "id": "createipset-1472501003122", - "title": "To create an IP set" - } - ], - "CreateRule": [ - { - "input": { - "ChangeToken": "abcd12f2-46da-4fdb-b8d5-fbd4c466928f", - "MetricName": "WAFByteHeaderRule", - "Name": "WAFByteHeaderRule" - }, - "output": { - "ChangeToken": "abcd12f2-46da-4fdb-b8d5-fbd4c466928f", - "Rule": { - "MetricName": "WAFByteHeaderRule", - "Name": "WAFByteHeaderRule", - "Predicates": [ - { - "DataId": "MyByteMatchSetID", - "Negated": false, - "Type": "ByteMatch" - } - ], - "RuleId": "WAFRule-1-Example" - } - }, - "comments": { - "input": { - }, - "output": { - } - }, - "description": "The following example creates a rule named WAFByteHeaderRule.", - "id": "createrule-1474072675555", - "title": "To create a rule" - } - ], - "CreateSizeConstraintSet": [ - { - "input": { - "ChangeToken": "abcd12f2-46da-4fdb-b8d5-fbd4c466928f", - "Name": "MySampleSizeConstraintSet" - }, - "output": { - "ChangeToken": "abcd12f2-46da-4fdb-b8d5-fbd4c466928f", - "SizeConstraintSet": { - "Name": "MySampleSizeConstraintSet", - "SizeConstraintSetId": "example1ds3t-46da-4fdb-b8d5-abc321j569j5", - "SizeConstraints": [ - { - "ComparisonOperator": "GT", - "FieldToMatch": { - "Type": "QUERY_STRING" - }, - "Size": 0, - "TextTransformation": "NONE" - } - ] - } - }, - "comments": { - "input": { - }, - "output": { - } - }, - "description": "The following example creates size constraint set named MySampleSizeConstraintSet.", - "id": "createsizeconstraint-1474299140754", - "title": "To create a size constraint" - } - ], - "CreateSqlInjectionMatchSet": [ - { - "input": { - "ChangeToken": "abcd12f2-46da-4fdb-b8d5-fbd4c466928f", - "Name": "MySQLInjectionMatchSet" - }, - "output": { - "ChangeToken": "abcd12f2-46da-4fdb-b8d5-fbd4c466928f", - "SqlInjectionMatchSet": { - "Name": "MySQLInjectionMatchSet", - "SqlInjectionMatchSetId": "example1ds3t-46da-4fdb-b8d5-abc321j569j5", - "SqlInjectionMatchTuples": [ - { - "FieldToMatch": { - "Type": "QUERY_STRING" - }, - "TextTransformation": "URL_DECODE" - } - ] - } - }, - "comments": { - "input": { - }, - "output": { - } - }, - "description": "The following example creates a SQL injection match set named MySQLInjectionMatchSet.", - "id": "createsqlinjectionmatchset-1474492796105", - "title": "To create a SQL injection match set" - } - ], - "CreateWebACL": [ - { - "input": { - "ChangeToken": "abcd12f2-46da-4fdb-b8d5-fbd4c466928f", - "DefaultAction": { - "Type": "ALLOW" - }, - "MetricName": "CreateExample", - "Name": "CreateExample" - }, - "output": { - "ChangeToken": "abcd12f2-46da-4fdb-b8d5-fbd4c466928f", - "WebACL": { - "DefaultAction": { - "Type": "ALLOW" - }, - "MetricName": "CreateExample", - "Name": "CreateExample", - "Rules": [ - { - "Action": { - "Type": "ALLOW" - }, - "Priority": 1, - "RuleId": "WAFRule-1-Example" - } - ], - "WebACLId": "example-46da-4444-5555-example" - } - }, - "comments": { - "input": { - }, - "output": { - } - }, - "description": "The following example creates a web ACL named CreateExample.", - "id": "createwebacl-1472061481310", - "title": "To create a web ACL" - } - ], - "CreateXssMatchSet": [ - { - "input": { - "ChangeToken": "abcd12f2-46da-4fdb-b8d5-fbd4c466928f", - "Name": "MySampleXssMatchSet" - }, - "output": { - "ChangeToken": "abcd12f2-46da-4fdb-b8d5-fbd4c466928f", - "XssMatchSet": { - "Name": "MySampleXssMatchSet", - "XssMatchSetId": "example1ds3t-46da-4fdb-b8d5-abc321j569j5", - "XssMatchTuples": [ - { - "FieldToMatch": { - "Type": "QUERY_STRING" - }, - "TextTransformation": "URL_DECODE" - } - ] - } - }, - "comments": { - "input": { - }, - "output": { - } - }, - "description": "The following example creates an XSS match set named MySampleXssMatchSet.", - "id": "createxssmatchset-1474560868500", - "title": "To create an XSS match set" - } - ], - "DeleteByteMatchSet": [ - { - "input": { - "ByteMatchSetId": "exampleIDs3t-46da-4fdb-b8d5-abc321j569j5", - "ChangeToken": "abcd12f2-46da-4fdb-b8d5-fbd4c466928f" - }, - "output": { - "ChangeToken": "abcd12f2-46da-4fdb-b8d5-fbd4c466928f" - }, - "comments": { - "input": { - }, - "output": { - } - }, - "description": "The following example deletes a byte match set with the ID exampleIDs3t-46da-4fdb-b8d5-abc321j569j5.", - "id": "deletebytematchset-1473367566229", - "title": "To delete a byte match set" - } - ], - "DeleteIPSet": [ - { - "input": { - "ChangeToken": "abcd12f2-46da-4fdb-b8d5-fbd4c466928f", - "IPSetId": "example1ds3t-46da-4fdb-b8d5-abc321j569j5" - }, - "output": { - "ChangeToken": "abcd12f2-46da-4fdb-b8d5-fbd4c466928f" - }, - "comments": { - "input": { - }, - "output": { - } - }, - "description": "The following example deletes an IP match set with the ID example1ds3t-46da-4fdb-b8d5-abc321j569j5.", - "id": "deleteipset-1472767434306", - "title": "To delete an IP set" - } - ], - "DeleteRule": [ - { - "input": { - "ChangeToken": "abcd12f2-46da-4fdb-b8d5-fbd4c466928f", - "RuleId": "WAFRule-1-Example" - }, - "output": { - "ChangeToken": "abcd12f2-46da-4fdb-b8d5-fbd4c466928f" - }, - "comments": { - "input": { - }, - "output": { - } - }, - "description": "The following example deletes a rule with the ID WAFRule-1-Example.", - "id": "deleterule-1474073108749", - "title": "To delete a rule" - } - ], - "DeleteSizeConstraintSet": [ - { - "input": { - "ChangeToken": "abcd12f2-46da-4fdb-b8d5-fbd4c466928f", - "SizeConstraintSetId": "example1ds3t-46da-4fdb-b8d5-abc321j569j5" - }, - "output": { - "ChangeToken": "abcd12f2-46da-4fdb-b8d5-fbd4c466928f" - }, - "comments": { - "input": { - }, - "output": { - } - }, - "description": "The following example deletes a size constraint set with the ID example1ds3t-46da-4fdb-b8d5-abc321j569j5.", - "id": "deletesizeconstraintset-1474299857905", - "title": "To delete a size constraint set" - } - ], - "DeleteSqlInjectionMatchSet": [ - { - "input": { - "ChangeToken": "abcd12f2-46da-4fdb-b8d5-fbd4c466928f", - "SqlInjectionMatchSetId": "example1ds3t-46da-4fdb-b8d5-abc321j569j5" - }, - "output": { - "ChangeToken": "abcd12f2-46da-4fdb-b8d5-fbd4c466928f" - }, - "comments": { - "input": { - }, - "output": { - } - }, - "description": "The following example deletes a SQL injection match set with the ID example1ds3t-46da-4fdb-b8d5-abc321j569j5.", - "id": "deletesqlinjectionmatchset-1474493373197", - "title": "To delete a SQL injection match set" - } - ], - "DeleteWebACL": [ - { - "input": { - "ChangeToken": "abcd12f2-46da-4fdb-b8d5-fbd4c466928f", - "WebACLId": "example-46da-4444-5555-example" - }, - "output": { - "ChangeToken": "abcd12f2-46da-4fdb-b8d5-fbd4c466928f" - }, - "comments": { - "input": { - }, - "output": { - } - }, - "description": "The following example deletes a web ACL with the ID example-46da-4444-5555-example.", - "id": "deletewebacl-1472767755931", - "title": "To delete a web ACL" - } - ], - "DeleteXssMatchSet": [ - { - "input": { - "ChangeToken": "abcd12f2-46da-4fdb-b8d5-fbd4c466928f", - "XssMatchSetId": "example1ds3t-46da-4fdb-b8d5-abc321j569j5" - }, - "output": { - "ChangeToken": "abcd12f2-46da-4fdb-b8d5-fbd4c466928f" - }, - "comments": { - "input": { - }, - "output": { - } - }, - "description": "The following example deletes an XSS match set with the ID example1ds3t-46da-4fdb-b8d5-abc321j569j5.", - "id": "deletexssmatchset-1474561302618", - "title": "To delete an XSS match set" - } - ], - "GetByteMatchSet": [ - { - "input": { - "ByteMatchSetId": "exampleIDs3t-46da-4fdb-b8d5-abc321j569j5" - }, - "output": { - "ByteMatchSet": { - "ByteMatchSetId": "exampleIDs3t-46da-4fdb-b8d5-abc321j569j5", - "ByteMatchTuples": [ - { - "FieldToMatch": { - "Data": "referer", - "Type": "HEADER" - }, - "PositionalConstraint": "CONTAINS", - "TargetString": "badrefer1", - "TextTransformation": "NONE" - } - ], - "Name": "ByteMatchNameExample" - } - }, - "comments": { - "input": { - }, - "output": { - } - }, - "description": "The following example returns the details of a byte match set with the ID exampleIDs3t-46da-4fdb-b8d5-abc321j569j5.", - "id": "getbytematchset-1473273311532", - "title": "To get a byte match set" - } - ], - "GetChangeToken": [ - { - "input": { - }, - "output": { - "ChangeToken": "abcd12f2-46da-4fdb-b8d5-fbd4c466928f" - }, - "comments": { - "input": { - }, - "output": { - } - }, - "description": "The following example returns a change token to use for a create, update or delete operation.", - "id": "get-change-token-example-1471635120794", - "title": "To get a change token" - } - ], - "GetChangeTokenStatus": [ - { - "input": { - "ChangeToken": "abcd12f2-46da-4fdb-b8d5-fbd4c466928f" - }, - "output": { - "ChangeTokenStatus": "PENDING" - }, - "comments": { - "input": { - }, - "output": { - } - }, - "description": "The following example returns the status of a change token with the ID abcd12f2-46da-4fdb-b8d5-fbd4c466928f.", - "id": "getchangetokenstatus-1474658417107", - "title": "To get the change token status" - } - ], - "GetIPSet": [ - { - "input": { - "IPSetId": "example1ds3t-46da-4fdb-b8d5-abc321j569j5" - }, - "output": { - "IPSet": { - "IPSetDescriptors": [ - { - "Type": "IPV4", - "Value": "192.0.2.44/32" - } - ], - "IPSetId": "example1ds3t-46da-4fdb-b8d5-abc321j569j5", - "Name": "MyIPSetFriendlyName" - } - }, - "comments": { - "input": { - }, - "output": { - } - }, - "description": "The following example returns the details of an IP match set with the ID example1ds3t-46da-4fdb-b8d5-abc321j569j5.", - "id": "getipset-1474658688675", - "title": "To get an IP set" - } - ], - "GetRule": [ - { - "input": { - "RuleId": "example1ds3t-46da-4fdb-b8d5-abc321j569j5" - }, - "output": { - "Rule": { - "MetricName": "WAFByteHeaderRule", - "Name": "WAFByteHeaderRule", - "Predicates": [ - { - "DataId": "MyByteMatchSetID", - "Negated": false, - "Type": "ByteMatch" - } - ], - "RuleId": "example1ds3t-46da-4fdb-b8d5-abc321j569j5" - } - }, - "comments": { - "input": { - }, - "output": { - } - }, - "description": "The following example returns the details of a rule with the ID example1ds3t-46da-4fdb-b8d5-abc321j569j5.", - "id": "getrule-1474659238790", - "title": "To get a rule" - } - ], - "GetSampledRequests": [ - { - "input": { - "MaxItems": 100, - "RuleId": "WAFRule-1-Example", - "TimeWindow": { - "EndTime": "2016-09-27T15:50Z", - "StartTime": "2016-09-27T15:50Z" - }, - "WebAclId": "createwebacl-1472061481310" - }, - "output": { - "PopulationSize": 50, - "SampledRequests": [ - { - "Action": "BLOCK", - "Request": { - "ClientIP": "192.0.2.44", - "Country": "US", - "HTTPVersion": "HTTP/1.1", - "Headers": [ - { - "Name": "User-Agent", - "Value": "BadBot " - } - ], - "Method": "HEAD" - }, - "Timestamp": "2016-09-27T14:55Z", - "Weight": 1 - } - ], - "TimeWindow": { - "EndTime": "2016-09-27T15:50Z", - "StartTime": "2016-09-27T14:50Z" - } - }, - "comments": { - "input": { - }, - "output": { - } - }, - "description": "The following example returns detailed information about 100 requests --a sample-- that AWS WAF randomly selects from among the first 5,000 requests that your AWS resource received between the time period 2016-09-27T15:50Z to 2016-09-27T15:50Z.", - "id": "getsampledrequests-1474927997195", - "title": "To get a sampled requests" - } - ], - "GetSizeConstraintSet": [ - { - "input": { - "SizeConstraintSetId": "example1ds3t-46da-4fdb-b8d5-abc321j569j5" - }, - "output": { - "SizeConstraintSet": { - "Name": "MySampleSizeConstraintSet", - "SizeConstraintSetId": "example1ds3t-46da-4fdb-b8d5-abc321j569j5", - "SizeConstraints": [ - { - "ComparisonOperator": "GT", - "FieldToMatch": { - "Type": "QUERY_STRING" - }, - "Size": 0, - "TextTransformation": "NONE" - } - ] - } - }, - "comments": { - "input": { - }, - "output": { - } - }, - "description": "The following example returns the details of a size constraint match set with the ID example1ds3t-46da-4fdb-b8d5-abc321j569j5.", - "id": "getsizeconstraintset-1475005422493", - "title": "To get a size constraint set" - } - ], - "GetSqlInjectionMatchSet": [ - { - "input": { - "SqlInjectionMatchSetId": "example1ds3t-46da-4fdb-b8d5-abc321j569j5" - }, - "output": { - "SqlInjectionMatchSet": { - "Name": "MySQLInjectionMatchSet", - "SqlInjectionMatchSetId": "example1ds3t-46da-4fdb-b8d5-abc321j569j5", - "SqlInjectionMatchTuples": [ - { - "FieldToMatch": { - "Type": "QUERY_STRING" - }, - "TextTransformation": "URL_DECODE" - } - ] - } - }, - "comments": { - "input": { - }, - "output": { - } - }, - "description": "The following example returns the details of a SQL injection match set with the ID example1ds3t-46da-4fdb-b8d5-abc321j569j5.", - "id": "getsqlinjectionmatchset-1475005940137", - "title": "To get a SQL injection match set" - } - ], - "GetWebACL": [ - { - "input": { - "WebACLId": "createwebacl-1472061481310" - }, - "output": { - "WebACL": { - "DefaultAction": { - "Type": "ALLOW" - }, - "MetricName": "CreateExample", - "Name": "CreateExample", - "Rules": [ - { - "Action": { - "Type": "ALLOW" - }, - "Priority": 1, - "RuleId": "WAFRule-1-Example" - } - ], - "WebACLId": "createwebacl-1472061481310" - } - }, - "comments": { - "input": { - }, - "output": { - } - }, - "description": "The following example returns the details of a web ACL with the ID createwebacl-1472061481310.", - "id": "getwebacl-1475006348525", - "title": "To get a web ACL" - } - ], - "GetXssMatchSet": [ - { - "input": { - "XssMatchSetId": "example1ds3t-46da-4fdb-b8d5-abc321j569j5" - }, - "output": { - "XssMatchSet": { - "Name": "MySampleXssMatchSet", - "XssMatchSetId": "example1ds3t-46da-4fdb-b8d5-abc321j569j5", - "XssMatchTuples": [ - { - "FieldToMatch": { - "Type": "QUERY_STRING" - }, - "TextTransformation": "URL_DECODE" - } - ] - } - }, - "comments": { - "input": { - }, - "output": { - } - }, - "description": "The following example returns the details of an XSS match set with the ID example1ds3t-46da-4fdb-b8d5-abc321j569j5.", - "id": "getxssmatchset-1475187879017", - "title": "To get an XSS match set" - } - ], - "ListIPSets": [ - { - "input": { - "Limit": 100 - }, - "output": { - "IPSets": [ - { - "IPSetId": "abcd12f2-46da-4fdb-b8d5-fbd4c466928f", - "Name": "MyIPSetFriendlyName" - } - ] - }, - "comments": { - "input": { - }, - "output": { - } - }, - "description": "The following example returns an array of up to 100 IP match sets.", - "id": "listipsets-1472235676229", - "title": "To list IP sets" - } - ], - "ListRules": [ - { - "input": { - "Limit": 100 - }, - "output": { - "Rules": [ - { - "Name": "WAFByteHeaderRule", - "RuleId": "WAFRule-1-Example" - } - ] - }, - "comments": { - "input": { - }, - "output": { - } - }, - "description": "The following example returns an array of up to 100 rules.", - "id": "listrules-1475258406433", - "title": "To list rules" - } - ], - "ListSizeConstraintSets": [ - { - "input": { - "Limit": 100 - }, - "output": { - "SizeConstraintSets": [ - { - "Name": "MySampleSizeConstraintSet", - "SizeConstraintSetId": "example1ds3t-46da-4fdb-b8d5-abc321j569j5" - } - ] - }, - "comments": { - "input": { - }, - "output": { - } - }, - "description": "The following example returns an array of up to 100 size contraint match sets.", - "id": "listsizeconstraintsets-1474300067597", - "title": "To list a size constraint sets" - } - ], - "ListSqlInjectionMatchSets": [ - { - "input": { - "Limit": 100 - }, - "output": { - "SqlInjectionMatchSets": [ - { - "Name": "MySQLInjectionMatchSet", - "SqlInjectionMatchSetId": "example1ds3t-46da-4fdb-b8d5-abc321j569j5" - } - ] - }, - "comments": { - "input": { - }, - "output": { - } - }, - "description": "The following example returns an array of up to 100 SQL injection match sets.", - "id": "listsqlinjectionmatchset-1474493560103", - "title": "To list SQL injection match sets" - } - ], - "ListWebACLs": [ - { - "input": { - "Limit": 100 - }, - "output": { - "WebACLs": [ - { - "Name": "WebACLexample", - "WebACLId": "webacl-1472061481310" - } - ] - }, - "comments": { - "input": { - }, - "output": { - } - }, - "description": "The following example returns an array of up to 100 web ACLs.", - "id": "listwebacls-1475258732691", - "title": "To list Web ACLs" - } - ], - "ListXssMatchSets": [ - { - "input": { - "Limit": 100 - }, - "output": { - "XssMatchSets": [ - { - "Name": "MySampleXssMatchSet", - "XssMatchSetId": "example1ds3t-46da-4fdb-b8d5-abc321j569j5" - } - ] - }, - "comments": { - "input": { - }, - "output": { - } - }, - "description": "The following example returns an array of up to 100 XSS match sets.", - "id": "listxssmatchsets-1474561481168", - "title": "To list XSS match sets" - } - ], - "UpdateByteMatchSet": [ - { - "input": { - "ByteMatchSetId": "exampleIDs3t-46da-4fdb-b8d5-abc321j569j5", - "ChangeToken": "abcd12f2-46da-4fdb-b8d5-fbd4c466928f", - "Updates": [ - { - "Action": "DELETE", - "ByteMatchTuple": { - "FieldToMatch": { - "Data": "referer", - "Type": "HEADER" - }, - "PositionalConstraint": "CONTAINS", - "TargetString": "badrefer1", - "TextTransformation": "NONE" - } - } - ] - }, - "output": { - "ChangeToken": "abcd12f2-46da-4fdb-b8d5-fbd4c466928f" - }, - "comments": { - "input": { - }, - "output": { - } - }, - "description": "The following example deletes a ByteMatchTuple object (filters) in an byte match set with the ID exampleIDs3t-46da-4fdb-b8d5-abc321j569j5.", - "id": "updatebytematchset-1475259074558", - "title": "To update a byte match set" - } - ], - "UpdateIPSet": [ - { - "input": { - "ChangeToken": "abcd12f2-46da-4fdb-b8d5-fbd4c466928f", - "IPSetId": "example1ds3t-46da-4fdb-b8d5-abc321j569j5", - "Updates": [ - { - "Action": "DELETE", - "IPSetDescriptor": { - "Type": "IPV4", - "Value": "192.0.2.44/32" - } - } - ] - }, - "output": { - "ChangeToken": "abcd12f2-46da-4fdb-b8d5-fbd4c466928f" - }, - "comments": { - "input": { - }, - "output": { - } - }, - "description": "The following example deletes an IPSetDescriptor object in an IP match set with the ID example1ds3t-46da-4fdb-b8d5-abc321j569j5.", - "id": "updateipset-1475259733625", - "title": "To update an IP set" - } - ], - "UpdateRule": [ - { - "input": { - "ChangeToken": "abcd12f2-46da-4fdb-b8d5-fbd4c466928f", - "RuleId": "example1ds3t-46da-4fdb-b8d5-abc321j569j5", - "Updates": [ - { - "Action": "DELETE", - "Predicate": { - "DataId": "MyByteMatchSetID", - "Negated": false, - "Type": "ByteMatch" - } - } - ] - }, - "output": { - "ChangeToken": "abcd12f2-46da-4fdb-b8d5-fbd4c466928f" - }, - "comments": { - "input": { - }, - "output": { - } - }, - "description": "The following example deletes a Predicate object in a rule with the ID example1ds3t-46da-4fdb-b8d5-abc321j569j5.", - "id": "updaterule-1475260064720", - "title": "To update a rule" - } - ], - "UpdateSizeConstraintSet": [ - { - "input": { - "ChangeToken": "abcd12f2-46da-4fdb-b8d5-fbd4c466928f", - "SizeConstraintSetId": "example1ds3t-46da-4fdb-b8d5-abc321j569j5", - "Updates": [ - { - "Action": "DELETE", - "SizeConstraint": { - "ComparisonOperator": "GT", - "FieldToMatch": { - "Type": "QUERY_STRING" - }, - "Size": 0, - "TextTransformation": "NONE" - } - } - ] - }, - "output": { - "ChangeToken": "abcd12f2-46da-4fdb-b8d5-fbd4c466928f" - }, - "comments": { - "input": { - }, - "output": { - } - }, - "description": "The following example deletes a SizeConstraint object (filters) in a size constraint set with the ID example1ds3t-46da-4fdb-b8d5-abc321j569j5.", - "id": "updatesizeconstraintset-1475531697891", - "title": "To update a size constraint set" - } - ], - "UpdateSqlInjectionMatchSet": [ - { - "input": { - "ChangeToken": "abcd12f2-46da-4fdb-b8d5-fbd4c466928f", - "SqlInjectionMatchSetId": "example1ds3t-46da-4fdb-b8d5-abc321j569j5", - "Updates": [ - { - "Action": "DELETE", - "SqlInjectionMatchTuple": { - "FieldToMatch": { - "Type": "QUERY_STRING" - }, - "TextTransformation": "URL_DECODE" - } - } - ] - }, - "output": { - "ChangeToken": "abcd12f2-46da-4fdb-b8d5-fbd4c466928f" - }, - "comments": { - "input": { - }, - "output": { - } - }, - "description": "The following example deletes a SqlInjectionMatchTuple object (filters) in a SQL injection match set with the ID example1ds3t-46da-4fdb-b8d5-abc321j569j5.", - "id": "updatesqlinjectionmatchset-1475532094686", - "title": "To update a SQL injection match set" - } - ], - "UpdateWebACL": [ - { - "input": { - "ChangeToken": "abcd12f2-46da-4fdb-b8d5-fbd4c466928f", - "DefaultAction": { - "Type": "ALLOW" - }, - "Updates": [ - { - "Action": "DELETE", - "ActivatedRule": { - "Action": { - "Type": "ALLOW" - }, - "Priority": 1, - "RuleId": "WAFRule-1-Example" - } - } - ], - "WebACLId": "webacl-1472061481310" - }, - "output": { - "ChangeToken": "abcd12f2-46da-4fdb-b8d5-fbd4c466928f" - }, - "comments": { - "input": { - }, - "output": { - } - }, - "description": "The following example deletes an ActivatedRule object in a WebACL with the ID webacl-1472061481310.", - "id": "updatewebacl-1475533627385", - "title": "To update a Web ACL" - } - ], - "UpdateXssMatchSet": [ - { - "input": { - "ChangeToken": "abcd12f2-46da-4fdb-b8d5-fbd4c466928f", - "Updates": [ - { - "Action": "DELETE", - "XssMatchTuple": { - "FieldToMatch": { - "Type": "QUERY_STRING" - }, - "TextTransformation": "URL_DECODE" - } - } - ], - "XssMatchSetId": "example1ds3t-46da-4fdb-b8d5-abc321j569j5" - }, - "output": { - "ChangeToken": "abcd12f2-46da-4fdb-b8d5-fbd4c466928f" - }, - "comments": { - "input": { - }, - "output": { - } - }, - "description": "The following example deletes an XssMatchTuple object (filters) in an XssMatchSet with the ID example1ds3t-46da-4fdb-b8d5-abc321j569j5.", - "id": "updatexssmatchset-1475534098881", - "title": "To update an XSS match set" - } - ] - } -} diff --git a/workshops/monte-carlo-on-ec2-spot-fleet/src/web/node_modules/aws-sdk/apis/waf-regional-2016-11-28.min.json b/workshops/monte-carlo-on-ec2-spot-fleet/src/web/node_modules/aws-sdk/apis/waf-regional-2016-11-28.min.json deleted file mode 100644 index 8a2e3136..00000000 --- a/workshops/monte-carlo-on-ec2-spot-fleet/src/web/node_modules/aws-sdk/apis/waf-regional-2016-11-28.min.json +++ /dev/null @@ -1,1525 +0,0 @@ -{ - "version": "2.0", - "metadata": { - "apiVersion": "2016-11-28", - "endpointPrefix": "waf-regional", - "jsonVersion": "1.1", - "protocol": "json", - "serviceAbbreviation": "WAF Regional", - "serviceFullName": "AWS WAF Regional", - "signatureVersion": "v4", - "targetPrefix": "AWSWAF_Regional_20161128", - "uid": "waf-regional-2016-11-28" - }, - "operations": { - "AssociateWebACL": { - "input": { - "type": "structure", - "required": [ - "WebACLId", - "ResourceArn" - ], - "members": { - "WebACLId": {}, - "ResourceArn": {} - } - }, - "output": { - "type": "structure", - "members": {} - } - }, - "CreateByteMatchSet": { - "input": { - "type": "structure", - "required": [ - "Name", - "ChangeToken" - ], - "members": { - "Name": {}, - "ChangeToken": {} - } - }, - "output": { - "type": "structure", - "members": { - "ByteMatchSet": { - "shape": "S9" - }, - "ChangeToken": {} - } - } - }, - "CreateIPSet": { - "input": { - "type": "structure", - "required": [ - "Name", - "ChangeToken" - ], - "members": { - "Name": {}, - "ChangeToken": {} - } - }, - "output": { - "type": "structure", - "members": { - "IPSet": { - "shape": "Sk" - }, - "ChangeToken": {} - } - } - }, - "CreateRateBasedRule": { - "input": { - "type": "structure", - "required": [ - "Name", - "MetricName", - "RateKey", - "RateLimit", - "ChangeToken" - ], - "members": { - "Name": {}, - "MetricName": {}, - "RateKey": {}, - "RateLimit": { - "type": "long" - }, - "ChangeToken": {} - } - }, - "output": { - "type": "structure", - "members": { - "Rule": { - "shape": "Su" - }, - "ChangeToken": {} - } - } - }, - "CreateRule": { - "input": { - "type": "structure", - "required": [ - "Name", - "MetricName", - "ChangeToken" - ], - "members": { - "Name": {}, - "MetricName": {}, - "ChangeToken": {} - } - }, - "output": { - "type": "structure", - "members": { - "Rule": { - "shape": "S11" - }, - "ChangeToken": {} - } - } - }, - "CreateSizeConstraintSet": { - "input": { - "type": "structure", - "required": [ - "Name", - "ChangeToken" - ], - "members": { - "Name": {}, - "ChangeToken": {} - } - }, - "output": { - "type": "structure", - "members": { - "SizeConstraintSet": { - "shape": "S14" - }, - "ChangeToken": {} - } - } - }, - "CreateSqlInjectionMatchSet": { - "input": { - "type": "structure", - "required": [ - "Name", - "ChangeToken" - ], - "members": { - "Name": {}, - "ChangeToken": {} - } - }, - "output": { - "type": "structure", - "members": { - "SqlInjectionMatchSet": { - "shape": "S1b" - }, - "ChangeToken": {} - } - } - }, - "CreateWebACL": { - "input": { - "type": "structure", - "required": [ - "Name", - "MetricName", - "DefaultAction", - "ChangeToken" - ], - "members": { - "Name": {}, - "MetricName": {}, - "DefaultAction": { - "shape": "S1f" - }, - "ChangeToken": {} - } - }, - "output": { - "type": "structure", - "members": { - "WebACL": { - "shape": "S1i" - }, - "ChangeToken": {} - } - } - }, - "CreateXssMatchSet": { - "input": { - "type": "structure", - "required": [ - "Name", - "ChangeToken" - ], - "members": { - "Name": {}, - "ChangeToken": {} - } - }, - "output": { - "type": "structure", - "members": { - "XssMatchSet": { - "shape": "S1p" - }, - "ChangeToken": {} - } - } - }, - "DeleteByteMatchSet": { - "input": { - "type": "structure", - "required": [ - "ByteMatchSetId", - "ChangeToken" - ], - "members": { - "ByteMatchSetId": {}, - "ChangeToken": {} - } - }, - "output": { - "type": "structure", - "members": { - "ChangeToken": {} - } - } - }, - "DeleteIPSet": { - "input": { - "type": "structure", - "required": [ - "IPSetId", - "ChangeToken" - ], - "members": { - "IPSetId": {}, - "ChangeToken": {} - } - }, - "output": { - "type": "structure", - "members": { - "ChangeToken": {} - } - } - }, - "DeleteRateBasedRule": { - "input": { - "type": "structure", - "required": [ - "RuleId", - "ChangeToken" - ], - "members": { - "RuleId": {}, - "ChangeToken": {} - } - }, - "output": { - "type": "structure", - "members": { - "ChangeToken": {} - } - } - }, - "DeleteRule": { - "input": { - "type": "structure", - "required": [ - "RuleId", - "ChangeToken" - ], - "members": { - "RuleId": {}, - "ChangeToken": {} - } - }, - "output": { - "type": "structure", - "members": { - "ChangeToken": {} - } - } - }, - "DeleteSizeConstraintSet": { - "input": { - "type": "structure", - "required": [ - "SizeConstraintSetId", - "ChangeToken" - ], - "members": { - "SizeConstraintSetId": {}, - "ChangeToken": {} - } - }, - "output": { - "type": "structure", - "members": { - "ChangeToken": {} - } - } - }, - "DeleteSqlInjectionMatchSet": { - "input": { - "type": "structure", - "required": [ - "SqlInjectionMatchSetId", - "ChangeToken" - ], - "members": { - "SqlInjectionMatchSetId": {}, - "ChangeToken": {} - } - }, - "output": { - "type": "structure", - "members": { - "ChangeToken": {} - } - } - }, - "DeleteWebACL": { - "input": { - "type": "structure", - "required": [ - "WebACLId", - "ChangeToken" - ], - "members": { - "WebACLId": {}, - "ChangeToken": {} - } - }, - "output": { - "type": "structure", - "members": { - "ChangeToken": {} - } - } - }, - "DeleteXssMatchSet": { - "input": { - "type": "structure", - "required": [ - "XssMatchSetId", - "ChangeToken" - ], - "members": { - "XssMatchSetId": {}, - "ChangeToken": {} - } - }, - "output": { - "type": "structure", - "members": { - "ChangeToken": {} - } - } - }, - "DisassociateWebACL": { - "input": { - "type": "structure", - "required": [ - "ResourceArn" - ], - "members": { - "ResourceArn": {} - } - }, - "output": { - "type": "structure", - "members": {} - } - }, - "GetByteMatchSet": { - "input": { - "type": "structure", - "required": [ - "ByteMatchSetId" - ], - "members": { - "ByteMatchSetId": {} - } - }, - "output": { - "type": "structure", - "members": { - "ByteMatchSet": { - "shape": "S9" - } - } - } - }, - "GetChangeToken": { - "input": { - "type": "structure", - "members": {} - }, - "output": { - "type": "structure", - "members": { - "ChangeToken": {} - } - } - }, - "GetChangeTokenStatus": { - "input": { - "type": "structure", - "required": [ - "ChangeToken" - ], - "members": { - "ChangeToken": {} - } - }, - "output": { - "type": "structure", - "members": { - "ChangeTokenStatus": {} - } - } - }, - "GetIPSet": { - "input": { - "type": "structure", - "required": [ - "IPSetId" - ], - "members": { - "IPSetId": {} - } - }, - "output": { - "type": "structure", - "members": { - "IPSet": { - "shape": "Sk" - } - } - } - }, - "GetRateBasedRule": { - "input": { - "type": "structure", - "required": [ - "RuleId" - ], - "members": { - "RuleId": {} - } - }, - "output": { - "type": "structure", - "members": { - "Rule": { - "shape": "Su" - } - } - } - }, - "GetRateBasedRuleManagedKeys": { - "input": { - "type": "structure", - "required": [ - "RuleId" - ], - "members": { - "RuleId": {}, - "NextMarker": {} - } - }, - "output": { - "type": "structure", - "members": { - "ManagedKeys": { - "type": "list", - "member": {} - }, - "NextMarker": {} - } - } - }, - "GetRule": { - "input": { - "type": "structure", - "required": [ - "RuleId" - ], - "members": { - "RuleId": {} - } - }, - "output": { - "type": "structure", - "members": { - "Rule": { - "shape": "S11" - } - } - } - }, - "GetSampledRequests": { - "input": { - "type": "structure", - "required": [ - "WebAclId", - "RuleId", - "TimeWindow", - "MaxItems" - ], - "members": { - "WebAclId": {}, - "RuleId": {}, - "TimeWindow": { - "shape": "S2t" - }, - "MaxItems": { - "type": "long" - } - } - }, - "output": { - "type": "structure", - "members": { - "SampledRequests": { - "type": "list", - "member": { - "type": "structure", - "required": [ - "Request", - "Weight" - ], - "members": { - "Request": { - "type": "structure", - "members": { - "ClientIP": {}, - "Country": {}, - "URI": {}, - "Method": {}, - "HTTPVersion": {}, - "Headers": { - "type": "list", - "member": { - "type": "structure", - "members": { - "Name": {}, - "Value": {} - } - } - } - } - }, - "Weight": { - "type": "long" - }, - "Timestamp": { - "type": "timestamp" - }, - "Action": {} - } - } - }, - "PopulationSize": { - "type": "long" - }, - "TimeWindow": { - "shape": "S2t" - } - } - } - }, - "GetSizeConstraintSet": { - "input": { - "type": "structure", - "required": [ - "SizeConstraintSetId" - ], - "members": { - "SizeConstraintSetId": {} - } - }, - "output": { - "type": "structure", - "members": { - "SizeConstraintSet": { - "shape": "S14" - } - } - } - }, - "GetSqlInjectionMatchSet": { - "input": { - "type": "structure", - "required": [ - "SqlInjectionMatchSetId" - ], - "members": { - "SqlInjectionMatchSetId": {} - } - }, - "output": { - "type": "structure", - "members": { - "SqlInjectionMatchSet": { - "shape": "S1b" - } - } - } - }, - "GetWebACL": { - "input": { - "type": "structure", - "required": [ - "WebACLId" - ], - "members": { - "WebACLId": {} - } - }, - "output": { - "type": "structure", - "members": { - "WebACL": { - "shape": "S1i" - } - } - } - }, - "GetWebACLForResource": { - "input": { - "type": "structure", - "required": [ - "ResourceArn" - ], - "members": { - "ResourceArn": {} - } - }, - "output": { - "type": "structure", - "members": { - "WebACLSummary": { - "shape": "S3k" - } - } - } - }, - "GetXssMatchSet": { - "input": { - "type": "structure", - "required": [ - "XssMatchSetId" - ], - "members": { - "XssMatchSetId": {} - } - }, - "output": { - "type": "structure", - "members": { - "XssMatchSet": { - "shape": "S1p" - } - } - } - }, - "ListByteMatchSets": { - "input": { - "type": "structure", - "members": { - "NextMarker": {}, - "Limit": { - "type": "integer" - } - } - }, - "output": { - "type": "structure", - "members": { - "NextMarker": {}, - "ByteMatchSets": { - "type": "list", - "member": { - "type": "structure", - "required": [ - "ByteMatchSetId", - "Name" - ], - "members": { - "ByteMatchSetId": {}, - "Name": {} - } - } - } - } - } - }, - "ListIPSets": { - "input": { - "type": "structure", - "members": { - "NextMarker": {}, - "Limit": { - "type": "integer" - } - } - }, - "output": { - "type": "structure", - "members": { - "NextMarker": {}, - "IPSets": { - "type": "list", - "member": { - "type": "structure", - "required": [ - "IPSetId", - "Name" - ], - "members": { - "IPSetId": {}, - "Name": {} - } - } - } - } - } - }, - "ListRateBasedRules": { - "input": { - "type": "structure", - "members": { - "NextMarker": {}, - "Limit": { - "type": "integer" - } - } - }, - "output": { - "type": "structure", - "members": { - "NextMarker": {}, - "Rules": { - "shape": "S3y" - } - } - } - }, - "ListResourcesForWebACL": { - "input": { - "type": "structure", - "required": [ - "WebACLId" - ], - "members": { - "WebACLId": {} - } - }, - "output": { - "type": "structure", - "members": { - "ResourceArns": { - "type": "list", - "member": {} - } - } - } - }, - "ListRules": { - "input": { - "type": "structure", - "members": { - "NextMarker": {}, - "Limit": { - "type": "integer" - } - } - }, - "output": { - "type": "structure", - "members": { - "NextMarker": {}, - "Rules": { - "shape": "S3y" - } - } - } - }, - "ListSizeConstraintSets": { - "input": { - "type": "structure", - "members": { - "NextMarker": {}, - "Limit": { - "type": "integer" - } - } - }, - "output": { - "type": "structure", - "members": { - "NextMarker": {}, - "SizeConstraintSets": { - "type": "list", - "member": { - "type": "structure", - "required": [ - "SizeConstraintSetId", - "Name" - ], - "members": { - "SizeConstraintSetId": {}, - "Name": {} - } - } - } - } - } - }, - "ListSqlInjectionMatchSets": { - "input": { - "type": "structure", - "members": { - "NextMarker": {}, - "Limit": { - "type": "integer" - } - } - }, - "output": { - "type": "structure", - "members": { - "NextMarker": {}, - "SqlInjectionMatchSets": { - "type": "list", - "member": { - "type": "structure", - "required": [ - "SqlInjectionMatchSetId", - "Name" - ], - "members": { - "SqlInjectionMatchSetId": {}, - "Name": {} - } - } - } - } - } - }, - "ListWebACLs": { - "input": { - "type": "structure", - "members": { - "NextMarker": {}, - "Limit": { - "type": "integer" - } - } - }, - "output": { - "type": "structure", - "members": { - "NextMarker": {}, - "WebACLs": { - "type": "list", - "member": { - "shape": "S3k" - } - } - } - } - }, - "ListXssMatchSets": { - "input": { - "type": "structure", - "members": { - "NextMarker": {}, - "Limit": { - "type": "integer" - } - } - }, - "output": { - "type": "structure", - "members": { - "NextMarker": {}, - "XssMatchSets": { - "type": "list", - "member": { - "type": "structure", - "required": [ - "XssMatchSetId", - "Name" - ], - "members": { - "XssMatchSetId": {}, - "Name": {} - } - } - } - } - } - }, - "UpdateByteMatchSet": { - "input": { - "type": "structure", - "required": [ - "ByteMatchSetId", - "ChangeToken", - "Updates" - ], - "members": { - "ByteMatchSetId": {}, - "ChangeToken": {}, - "Updates": { - "type": "list", - "member": { - "type": "structure", - "required": [ - "Action", - "ByteMatchTuple" - ], - "members": { - "Action": {}, - "ByteMatchTuple": { - "shape": "Sb" - } - } - } - } - } - }, - "output": { - "type": "structure", - "members": { - "ChangeToken": {} - } - } - }, - "UpdateIPSet": { - "input": { - "type": "structure", - "required": [ - "IPSetId", - "ChangeToken", - "Updates" - ], - "members": { - "IPSetId": {}, - "ChangeToken": {}, - "Updates": { - "type": "list", - "member": { - "type": "structure", - "required": [ - "Action", - "IPSetDescriptor" - ], - "members": { - "Action": {}, - "IPSetDescriptor": { - "shape": "Sm" - } - } - } - } - } - }, - "output": { - "type": "structure", - "members": { - "ChangeToken": {} - } - } - }, - "UpdateRateBasedRule": { - "input": { - "type": "structure", - "required": [ - "RuleId", - "ChangeToken", - "Updates", - "RateLimit" - ], - "members": { - "RuleId": {}, - "ChangeToken": {}, - "Updates": { - "shape": "S4u" - }, - "RateLimit": { - "type": "long" - } - } - }, - "output": { - "type": "structure", - "members": { - "ChangeToken": {} - } - } - }, - "UpdateRule": { - "input": { - "type": "structure", - "required": [ - "RuleId", - "ChangeToken", - "Updates" - ], - "members": { - "RuleId": {}, - "ChangeToken": {}, - "Updates": { - "shape": "S4u" - } - } - }, - "output": { - "type": "structure", - "members": { - "ChangeToken": {} - } - } - }, - "UpdateSizeConstraintSet": { - "input": { - "type": "structure", - "required": [ - "SizeConstraintSetId", - "ChangeToken", - "Updates" - ], - "members": { - "SizeConstraintSetId": {}, - "ChangeToken": {}, - "Updates": { - "type": "list", - "member": { - "type": "structure", - "required": [ - "Action", - "SizeConstraint" - ], - "members": { - "Action": {}, - "SizeConstraint": { - "shape": "S16" - } - } - } - } - } - }, - "output": { - "type": "structure", - "members": { - "ChangeToken": {} - } - } - }, - "UpdateSqlInjectionMatchSet": { - "input": { - "type": "structure", - "required": [ - "SqlInjectionMatchSetId", - "ChangeToken", - "Updates" - ], - "members": { - "SqlInjectionMatchSetId": {}, - "ChangeToken": {}, - "Updates": { - "type": "list", - "member": { - "type": "structure", - "required": [ - "Action", - "SqlInjectionMatchTuple" - ], - "members": { - "Action": {}, - "SqlInjectionMatchTuple": { - "shape": "S1d" - } - } - } - } - } - }, - "output": { - "type": "structure", - "members": { - "ChangeToken": {} - } - } - }, - "UpdateWebACL": { - "input": { - "type": "structure", - "required": [ - "WebACLId", - "ChangeToken" - ], - "members": { - "WebACLId": {}, - "ChangeToken": {}, - "Updates": { - "type": "list", - "member": { - "type": "structure", - "required": [ - "Action", - "ActivatedRule" - ], - "members": { - "Action": {}, - "ActivatedRule": { - "shape": "S1k" - } - } - } - }, - "DefaultAction": { - "shape": "S1f" - } - } - }, - "output": { - "type": "structure", - "members": { - "ChangeToken": {} - } - } - }, - "UpdateXssMatchSet": { - "input": { - "type": "structure", - "required": [ - "XssMatchSetId", - "ChangeToken", - "Updates" - ], - "members": { - "XssMatchSetId": {}, - "ChangeToken": {}, - "Updates": { - "type": "list", - "member": { - "type": "structure", - "required": [ - "Action", - "XssMatchTuple" - ], - "members": { - "Action": {}, - "XssMatchTuple": { - "shape": "S1r" - } - } - } - } - } - }, - "output": { - "type": "structure", - "members": { - "ChangeToken": {} - } - } - } - }, - "shapes": { - "S9": { - "type": "structure", - "required": [ - "ByteMatchSetId", - "ByteMatchTuples" - ], - "members": { - "ByteMatchSetId": {}, - "Name": {}, - "ByteMatchTuples": { - "type": "list", - "member": { - "shape": "Sb" - } - } - } - }, - "Sb": { - "type": "structure", - "required": [ - "FieldToMatch", - "TargetString", - "TextTransformation", - "PositionalConstraint" - ], - "members": { - "FieldToMatch": { - "shape": "Sc" - }, - "TargetString": { - "type": "blob" - }, - "TextTransformation": {}, - "PositionalConstraint": {} - } - }, - "Sc": { - "type": "structure", - "required": [ - "Type" - ], - "members": { - "Type": {}, - "Data": {} - } - }, - "Sk": { - "type": "structure", - "required": [ - "IPSetId", - "IPSetDescriptors" - ], - "members": { - "IPSetId": {}, - "Name": {}, - "IPSetDescriptors": { - "type": "list", - "member": { - "shape": "Sm" - } - } - } - }, - "Sm": { - "type": "structure", - "required": [ - "Type", - "Value" - ], - "members": { - "Type": {}, - "Value": {} - } - }, - "Su": { - "type": "structure", - "required": [ - "RuleId", - "MatchPredicates", - "RateKey", - "RateLimit" - ], - "members": { - "RuleId": {}, - "Name": {}, - "MetricName": {}, - "MatchPredicates": { - "shape": "Sv" - }, - "RateKey": {}, - "RateLimit": { - "type": "long" - } - } - }, - "Sv": { - "type": "list", - "member": { - "shape": "Sw" - } - }, - "Sw": { - "type": "structure", - "required": [ - "Negated", - "Type", - "DataId" - ], - "members": { - "Negated": { - "type": "boolean" - }, - "Type": {}, - "DataId": {} - } - }, - "S11": { - "type": "structure", - "required": [ - "RuleId", - "Predicates" - ], - "members": { - "RuleId": {}, - "Name": {}, - "MetricName": {}, - "Predicates": { - "shape": "Sv" - } - } - }, - "S14": { - "type": "structure", - "required": [ - "SizeConstraintSetId", - "SizeConstraints" - ], - "members": { - "SizeConstraintSetId": {}, - "Name": {}, - "SizeConstraints": { - "type": "list", - "member": { - "shape": "S16" - } - } - } - }, - "S16": { - "type": "structure", - "required": [ - "FieldToMatch", - "TextTransformation", - "ComparisonOperator", - "Size" - ], - "members": { - "FieldToMatch": { - "shape": "Sc" - }, - "TextTransformation": {}, - "ComparisonOperator": {}, - "Size": { - "type": "long" - } - } - }, - "S1b": { - "type": "structure", - "required": [ - "SqlInjectionMatchSetId", - "SqlInjectionMatchTuples" - ], - "members": { - "SqlInjectionMatchSetId": {}, - "Name": {}, - "SqlInjectionMatchTuples": { - "type": "list", - "member": { - "shape": "S1d" - } - } - } - }, - "S1d": { - "type": "structure", - "required": [ - "FieldToMatch", - "TextTransformation" - ], - "members": { - "FieldToMatch": { - "shape": "Sc" - }, - "TextTransformation": {} - } - }, - "S1f": { - "type": "structure", - "required": [ - "Type" - ], - "members": { - "Type": {} - } - }, - "S1i": { - "type": "structure", - "required": [ - "WebACLId", - "DefaultAction", - "Rules" - ], - "members": { - "WebACLId": {}, - "Name": {}, - "MetricName": {}, - "DefaultAction": { - "shape": "S1f" - }, - "Rules": { - "type": "list", - "member": { - "shape": "S1k" - } - } - } - }, - "S1k": { - "type": "structure", - "required": [ - "Priority", - "RuleId", - "Action" - ], - "members": { - "Priority": { - "type": "integer" - }, - "RuleId": {}, - "Action": { - "shape": "S1f" - }, - "Type": {} - } - }, - "S1p": { - "type": "structure", - "required": [ - "XssMatchSetId", - "XssMatchTuples" - ], - "members": { - "XssMatchSetId": {}, - "Name": {}, - "XssMatchTuples": { - "type": "list", - "member": { - "shape": "S1r" - } - } - } - }, - "S1r": { - "type": "structure", - "required": [ - "FieldToMatch", - "TextTransformation" - ], - "members": { - "FieldToMatch": { - "shape": "Sc" - }, - "TextTransformation": {} - } - }, - "S2t": { - "type": "structure", - "required": [ - "StartTime", - "EndTime" - ], - "members": { - "StartTime": { - "type": "timestamp" - }, - "EndTime": { - "type": "timestamp" - } - } - }, - "S3k": { - "type": "structure", - "required": [ - "WebACLId", - "Name" - ], - "members": { - "WebACLId": {}, - "Name": {} - } - }, - "S3y": { - "type": "list", - "member": { - "type": "structure", - "required": [ - "RuleId", - "Name" - ], - "members": { - "RuleId": {}, - "Name": {} - } - } - }, - "S4u": { - "type": "list", - "member": { - "type": "structure", - "required": [ - "Action", - "Predicate" - ], - "members": { - "Action": {}, - "Predicate": { - "shape": "Sw" - } - } - } - } - } -} \ No newline at end of file diff --git a/workshops/monte-carlo-on-ec2-spot-fleet/src/web/node_modules/aws-sdk/apis/waf-regional-2016-11-28.paginators.json b/workshops/monte-carlo-on-ec2-spot-fleet/src/web/node_modules/aws-sdk/apis/waf-regional-2016-11-28.paginators.json deleted file mode 100644 index 5677bd8e..00000000 --- a/workshops/monte-carlo-on-ec2-spot-fleet/src/web/node_modules/aws-sdk/apis/waf-regional-2016-11-28.paginators.json +++ /dev/null @@ -1,4 +0,0 @@ -{ - "pagination": { - } -} diff --git a/workshops/monte-carlo-on-ec2-spot-fleet/src/web/node_modules/aws-sdk/apis/workdocs-2016-05-01.examples.json b/workshops/monte-carlo-on-ec2-spot-fleet/src/web/node_modules/aws-sdk/apis/workdocs-2016-05-01.examples.json deleted file mode 100644 index 0ea7e3b0..00000000 --- a/workshops/monte-carlo-on-ec2-spot-fleet/src/web/node_modules/aws-sdk/apis/workdocs-2016-05-01.examples.json +++ /dev/null @@ -1,5 +0,0 @@ -{ - "version": "1.0", - "examples": { - } -} diff --git a/workshops/monte-carlo-on-ec2-spot-fleet/src/web/node_modules/aws-sdk/apis/workdocs-2016-05-01.min.json b/workshops/monte-carlo-on-ec2-spot-fleet/src/web/node_modules/aws-sdk/apis/workdocs-2016-05-01.min.json deleted file mode 100644 index a67dc3eb..00000000 --- a/workshops/monte-carlo-on-ec2-spot-fleet/src/web/node_modules/aws-sdk/apis/workdocs-2016-05-01.min.json +++ /dev/null @@ -1,1804 +0,0 @@ -{ - "version": "2.0", - "metadata": { - "apiVersion": "2016-05-01", - "endpointPrefix": "workdocs", - "jsonVersion": "1.1", - "protocol": "rest-json", - "serviceFullName": "Amazon WorkDocs", - "signatureVersion": "v4", - "uid": "workdocs-2016-05-01" - }, - "operations": { - "AbortDocumentVersionUpload": { - "http": { - "method": "DELETE", - "requestUri": "/api/v1/documents/{DocumentId}/versions/{VersionId}", - "responseCode": 204 - }, - "input": { - "type": "structure", - "required": [ - "DocumentId", - "VersionId" - ], - "members": { - "AuthenticationToken": { - "shape": "S2", - "location": "header", - "locationName": "Authentication" - }, - "DocumentId": { - "location": "uri", - "locationName": "DocumentId" - }, - "VersionId": { - "location": "uri", - "locationName": "VersionId" - } - } - } - }, - "ActivateUser": { - "http": { - "requestUri": "/api/v1/users/{UserId}/activation", - "responseCode": 200 - }, - "input": { - "type": "structure", - "required": [ - "UserId" - ], - "members": { - "UserId": { - "location": "uri", - "locationName": "UserId" - }, - "AuthenticationToken": { - "shape": "S2", - "location": "header", - "locationName": "Authentication" - } - } - }, - "output": { - "type": "structure", - "members": { - "User": { - "shape": "S8" - } - } - } - }, - "AddResourcePermissions": { - "http": { - "requestUri": "/api/v1/resources/{ResourceId}/permissions", - "responseCode": 201 - }, - "input": { - "type": "structure", - "required": [ - "ResourceId", - "Principals" - ], - "members": { - "AuthenticationToken": { - "shape": "S2", - "location": "header", - "locationName": "Authentication" - }, - "ResourceId": { - "location": "uri", - "locationName": "ResourceId" - }, - "Principals": { - "type": "list", - "member": { - "type": "structure", - "required": [ - "Id", - "Type", - "Role" - ], - "members": { - "Id": {}, - "Type": {}, - "Role": {} - } - } - } - } - }, - "output": { - "type": "structure", - "members": { - "ShareResults": { - "type": "list", - "member": { - "type": "structure", - "members": { - "PrincipalId": {}, - "Role": {}, - "Status": {}, - "ShareId": {}, - "StatusMessage": { - "type": "string", - "sensitive": true - } - } - } - } - } - } - }, - "CreateComment": { - "http": { - "requestUri": "/api/v1/documents/{DocumentId}/versions/{VersionId}/comment", - "responseCode": 201 - }, - "input": { - "type": "structure", - "required": [ - "DocumentId", - "VersionId", - "Text" - ], - "members": { - "AuthenticationToken": { - "shape": "S2", - "location": "header", - "locationName": "Authentication" - }, - "DocumentId": { - "location": "uri", - "locationName": "DocumentId" - }, - "VersionId": { - "location": "uri", - "locationName": "VersionId" - }, - "ParentId": {}, - "ThreadId": {}, - "Text": { - "shape": "Sy" - }, - "Visibility": {}, - "NotifyCollaborators": { - "type": "boolean" - } - } - }, - "output": { - "type": "structure", - "members": { - "Comment": { - "shape": "S12" - } - } - } - }, - "CreateCustomMetadata": { - "http": { - "method": "PUT", - "requestUri": "/api/v1/resources/{ResourceId}/customMetadata", - "responseCode": 200 - }, - "input": { - "type": "structure", - "required": [ - "ResourceId", - "CustomMetadata" - ], - "members": { - "AuthenticationToken": { - "shape": "S2", - "location": "header", - "locationName": "Authentication" - }, - "ResourceId": { - "location": "uri", - "locationName": "ResourceId" - }, - "VersionId": { - "location": "querystring", - "locationName": "versionid" - }, - "CustomMetadata": { - "shape": "S15" - } - } - }, - "output": { - "type": "structure", - "members": {} - } - }, - "CreateFolder": { - "http": { - "requestUri": "/api/v1/folders", - "responseCode": 201 - }, - "input": { - "type": "structure", - "required": [ - "ParentFolderId" - ], - "members": { - "AuthenticationToken": { - "shape": "S2", - "location": "header", - "locationName": "Authentication" - }, - "Name": {}, - "ParentFolderId": {} - } - }, - "output": { - "type": "structure", - "members": { - "Metadata": { - "shape": "S1c" - } - } - } - }, - "CreateLabels": { - "http": { - "method": "PUT", - "requestUri": "/api/v1/resources/{ResourceId}/labels", - "responseCode": 200 - }, - "input": { - "type": "structure", - "required": [ - "ResourceId", - "Labels" - ], - "members": { - "ResourceId": { - "location": "uri", - "locationName": "ResourceId" - }, - "Labels": { - "shape": "S1f" - }, - "AuthenticationToken": { - "shape": "S2", - "location": "header", - "locationName": "Authentication" - } - } - }, - "output": { - "type": "structure", - "members": {} - } - }, - "CreateNotificationSubscription": { - "http": { - "requestUri": "/api/v1/organizations/{OrganizationId}/subscriptions", - "responseCode": 200 - }, - "input": { - "type": "structure", - "required": [ - "OrganizationId", - "Endpoint", - "Protocol", - "SubscriptionType" - ], - "members": { - "OrganizationId": { - "location": "uri", - "locationName": "OrganizationId" - }, - "Endpoint": {}, - "Protocol": {}, - "SubscriptionType": {} - } - }, - "output": { - "type": "structure", - "members": { - "Subscription": { - "shape": "S1o" - } - } - } - }, - "CreateUser": { - "http": { - "requestUri": "/api/v1/users", - "responseCode": 201 - }, - "input": { - "type": "structure", - "required": [ - "Username", - "GivenName", - "Surname", - "Password" - ], - "members": { - "OrganizationId": {}, - "Username": {}, - "EmailAddress": {}, - "GivenName": {}, - "Surname": {}, - "Password": { - "type": "string", - "sensitive": true - }, - "TimeZoneId": {}, - "StorageRule": { - "shape": "Sj" - }, - "AuthenticationToken": { - "shape": "S2", - "location": "header", - "locationName": "Authentication" - } - } - }, - "output": { - "type": "structure", - "members": { - "User": { - "shape": "S8" - } - } - } - }, - "DeactivateUser": { - "http": { - "method": "DELETE", - "requestUri": "/api/v1/users/{UserId}/activation", - "responseCode": 204 - }, - "input": { - "type": "structure", - "required": [ - "UserId" - ], - "members": { - "UserId": { - "location": "uri", - "locationName": "UserId" - }, - "AuthenticationToken": { - "shape": "S2", - "location": "header", - "locationName": "Authentication" - } - } - } - }, - "DeleteComment": { - "http": { - "method": "DELETE", - "requestUri": "/api/v1/documents/{DocumentId}/versions/{VersionId}/comment/{CommentId}", - "responseCode": 204 - }, - "input": { - "type": "structure", - "required": [ - "DocumentId", - "VersionId", - "CommentId" - ], - "members": { - "AuthenticationToken": { - "shape": "S2", - "location": "header", - "locationName": "Authentication" - }, - "DocumentId": { - "location": "uri", - "locationName": "DocumentId" - }, - "VersionId": { - "location": "uri", - "locationName": "VersionId" - }, - "CommentId": { - "location": "uri", - "locationName": "CommentId" - } - } - } - }, - "DeleteCustomMetadata": { - "http": { - "method": "DELETE", - "requestUri": "/api/v1/resources/{ResourceId}/customMetadata", - "responseCode": 200 - }, - "input": { - "type": "structure", - "required": [ - "ResourceId" - ], - "members": { - "AuthenticationToken": { - "shape": "S2", - "location": "header", - "locationName": "Authentication" - }, - "ResourceId": { - "location": "uri", - "locationName": "ResourceId" - }, - "VersionId": { - "location": "querystring", - "locationName": "versionId" - }, - "Keys": { - "location": "querystring", - "locationName": "keys", - "type": "list", - "member": {} - }, - "DeleteAll": { - "location": "querystring", - "locationName": "deleteAll", - "type": "boolean" - } - } - }, - "output": { - "type": "structure", - "members": {} - } - }, - "DeleteDocument": { - "http": { - "method": "DELETE", - "requestUri": "/api/v1/documents/{DocumentId}", - "responseCode": 204 - }, - "input": { - "type": "structure", - "required": [ - "DocumentId" - ], - "members": { - "AuthenticationToken": { - "shape": "S2", - "location": "header", - "locationName": "Authentication" - }, - "DocumentId": { - "location": "uri", - "locationName": "DocumentId" - } - } - } - }, - "DeleteFolder": { - "http": { - "method": "DELETE", - "requestUri": "/api/v1/folders/{FolderId}", - "responseCode": 204 - }, - "input": { - "type": "structure", - "required": [ - "FolderId" - ], - "members": { - "AuthenticationToken": { - "shape": "S2", - "location": "header", - "locationName": "Authentication" - }, - "FolderId": { - "location": "uri", - "locationName": "FolderId" - } - } - } - }, - "DeleteFolderContents": { - "http": { - "method": "DELETE", - "requestUri": "/api/v1/folders/{FolderId}/contents", - "responseCode": 204 - }, - "input": { - "type": "structure", - "required": [ - "FolderId" - ], - "members": { - "AuthenticationToken": { - "shape": "S2", - "location": "header", - "locationName": "Authentication" - }, - "FolderId": { - "location": "uri", - "locationName": "FolderId" - } - } - } - }, - "DeleteLabels": { - "http": { - "method": "DELETE", - "requestUri": "/api/v1/resources/{ResourceId}/labels", - "responseCode": 200 - }, - "input": { - "type": "structure", - "required": [ - "ResourceId" - ], - "members": { - "ResourceId": { - "location": "uri", - "locationName": "ResourceId" - }, - "AuthenticationToken": { - "shape": "S2", - "location": "header", - "locationName": "Authentication" - }, - "Labels": { - "shape": "S1f", - "location": "querystring", - "locationName": "labels" - }, - "DeleteAll": { - "location": "querystring", - "locationName": "deleteAll", - "type": "boolean" - } - } - }, - "output": { - "type": "structure", - "members": {} - } - }, - "DeleteNotificationSubscription": { - "http": { - "method": "DELETE", - "requestUri": "/api/v1/organizations/{OrganizationId}/subscriptions/{SubscriptionId}", - "responseCode": 200 - }, - "input": { - "type": "structure", - "required": [ - "SubscriptionId", - "OrganizationId" - ], - "members": { - "SubscriptionId": { - "location": "uri", - "locationName": "SubscriptionId" - }, - "OrganizationId": { - "location": "uri", - "locationName": "OrganizationId" - } - } - } - }, - "DeleteUser": { - "http": { - "method": "DELETE", - "requestUri": "/api/v1/users/{UserId}", - "responseCode": 204 - }, - "input": { - "type": "structure", - "required": [ - "UserId" - ], - "members": { - "AuthenticationToken": { - "shape": "S2", - "location": "header", - "locationName": "Authentication" - }, - "UserId": { - "location": "uri", - "locationName": "UserId" - } - } - } - }, - "DescribeActivities": { - "http": { - "method": "GET", - "requestUri": "/api/v1/activities", - "responseCode": 200 - }, - "input": { - "type": "structure", - "members": { - "AuthenticationToken": { - "shape": "S2", - "location": "header", - "locationName": "Authentication" - }, - "StartTime": { - "location": "querystring", - "locationName": "startTime", - "type": "timestamp" - }, - "EndTime": { - "location": "querystring", - "locationName": "endTime", - "type": "timestamp" - }, - "OrganizationId": { - "location": "querystring", - "locationName": "organizationId" - }, - "UserId": { - "location": "querystring", - "locationName": "userId" - }, - "Limit": { - "location": "querystring", - "locationName": "limit", - "type": "integer" - }, - "Marker": { - "location": "querystring", - "locationName": "marker" - } - } - }, - "output": { - "type": "structure", - "members": { - "UserActivities": { - "type": "list", - "member": { - "type": "structure", - "members": { - "Type": {}, - "TimeStamp": { - "type": "timestamp" - }, - "OrganizationId": {}, - "Initiator": { - "shape": "S2b" - }, - "Participants": { - "type": "structure", - "members": { - "Users": { - "type": "list", - "member": { - "shape": "S2b" - } - }, - "Groups": { - "type": "list", - "member": { - "type": "structure", - "members": { - "Id": {}, - "Name": {} - } - } - } - } - }, - "ResourceMetadata": { - "shape": "S2h" - }, - "OriginalParent": { - "shape": "S2h" - }, - "CommentMetadata": { - "type": "structure", - "members": { - "CommentId": {}, - "Contributor": { - "shape": "S8" - }, - "CreatedTimestamp": { - "type": "timestamp" - }, - "CommentStatus": {}, - "RecipientId": {} - } - } - } - } - }, - "Marker": {} - } - } - }, - "DescribeComments": { - "http": { - "method": "GET", - "requestUri": "/api/v1/documents/{DocumentId}/versions/{VersionId}/comments", - "responseCode": 200 - }, - "input": { - "type": "structure", - "required": [ - "DocumentId", - "VersionId" - ], - "members": { - "AuthenticationToken": { - "shape": "S2", - "location": "header", - "locationName": "Authentication" - }, - "DocumentId": { - "location": "uri", - "locationName": "DocumentId" - }, - "VersionId": { - "location": "uri", - "locationName": "VersionId" - }, - "Limit": { - "location": "querystring", - "locationName": "limit", - "type": "integer" - }, - "Marker": { - "location": "querystring", - "locationName": "marker" - } - } - }, - "output": { - "type": "structure", - "members": { - "Comments": { - "type": "list", - "member": { - "shape": "S12" - } - }, - "Marker": {} - } - } - }, - "DescribeDocumentVersions": { - "http": { - "method": "GET", - "requestUri": "/api/v1/documents/{DocumentId}/versions", - "responseCode": 200 - }, - "input": { - "type": "structure", - "required": [ - "DocumentId" - ], - "members": { - "AuthenticationToken": { - "shape": "S2", - "location": "header", - "locationName": "Authentication" - }, - "DocumentId": { - "location": "uri", - "locationName": "DocumentId" - }, - "Marker": { - "location": "querystring", - "locationName": "marker" - }, - "Limit": { - "location": "querystring", - "locationName": "limit", - "type": "integer" - }, - "Include": { - "location": "querystring", - "locationName": "include" - }, - "Fields": { - "location": "querystring", - "locationName": "fields" - } - } - }, - "output": { - "type": "structure", - "members": { - "DocumentVersions": { - "type": "list", - "member": { - "shape": "S2s" - } - }, - "Marker": {} - } - } - }, - "DescribeFolderContents": { - "http": { - "method": "GET", - "requestUri": "/api/v1/folders/{FolderId}/contents", - "responseCode": 200 - }, - "input": { - "type": "structure", - "required": [ - "FolderId" - ], - "members": { - "AuthenticationToken": { - "shape": "S2", - "location": "header", - "locationName": "Authentication" - }, - "FolderId": { - "location": "uri", - "locationName": "FolderId" - }, - "Sort": { - "location": "querystring", - "locationName": "sort" - }, - "Order": { - "location": "querystring", - "locationName": "order" - }, - "Limit": { - "location": "querystring", - "locationName": "limit", - "type": "integer" - }, - "Marker": { - "location": "querystring", - "locationName": "marker" - }, - "Type": { - "location": "querystring", - "locationName": "type" - }, - "Include": { - "location": "querystring", - "locationName": "include" - } - } - }, - "output": { - "type": "structure", - "members": { - "Folders": { - "shape": "S35" - }, - "Documents": { - "type": "list", - "member": { - "shape": "S37" - } - }, - "Marker": {} - } - } - }, - "DescribeNotificationSubscriptions": { - "http": { - "method": "GET", - "requestUri": "/api/v1/organizations/{OrganizationId}/subscriptions", - "responseCode": 200 - }, - "input": { - "type": "structure", - "required": [ - "OrganizationId" - ], - "members": { - "OrganizationId": { - "location": "uri", - "locationName": "OrganizationId" - }, - "Marker": { - "location": "querystring", - "locationName": "marker" - }, - "Limit": { - "location": "querystring", - "locationName": "limit", - "type": "integer" - } - } - }, - "output": { - "type": "structure", - "members": { - "Subscriptions": { - "type": "list", - "member": { - "shape": "S1o" - } - }, - "Marker": {} - } - } - }, - "DescribeResourcePermissions": { - "http": { - "method": "GET", - "requestUri": "/api/v1/resources/{ResourceId}/permissions", - "responseCode": 200 - }, - "input": { - "type": "structure", - "required": [ - "ResourceId" - ], - "members": { - "AuthenticationToken": { - "shape": "S2", - "location": "header", - "locationName": "Authentication" - }, - "ResourceId": { - "location": "uri", - "locationName": "ResourceId" - }, - "Limit": { - "location": "querystring", - "locationName": "limit", - "type": "integer" - }, - "Marker": { - "location": "querystring", - "locationName": "marker" - } - } - }, - "output": { - "type": "structure", - "members": { - "Principals": { - "type": "list", - "member": { - "type": "structure", - "members": { - "Id": {}, - "Type": {}, - "Roles": { - "type": "list", - "member": { - "type": "structure", - "members": { - "Role": {}, - "Type": {} - } - } - } - } - } - }, - "Marker": {} - } - } - }, - "DescribeRootFolders": { - "http": { - "method": "GET", - "requestUri": "/api/v1/me/root", - "responseCode": 200 - }, - "input": { - "type": "structure", - "required": [ - "AuthenticationToken" - ], - "members": { - "AuthenticationToken": { - "shape": "S2", - "location": "header", - "locationName": "Authentication" - }, - "Limit": { - "location": "querystring", - "locationName": "limit", - "type": "integer" - }, - "Marker": { - "location": "querystring", - "locationName": "marker" - } - } - }, - "output": { - "type": "structure", - "members": { - "Folders": { - "shape": "S35" - }, - "Marker": {} - } - } - }, - "DescribeUsers": { - "http": { - "method": "GET", - "requestUri": "/api/v1/users", - "responseCode": 200 - }, - "input": { - "type": "structure", - "members": { - "AuthenticationToken": { - "shape": "S2", - "location": "header", - "locationName": "Authentication" - }, - "OrganizationId": { - "location": "querystring", - "locationName": "organizationId" - }, - "UserIds": { - "location": "querystring", - "locationName": "userIds" - }, - "Query": { - "location": "querystring", - "locationName": "query", - "type": "string", - "sensitive": true - }, - "Include": { - "location": "querystring", - "locationName": "include" - }, - "Order": { - "location": "querystring", - "locationName": "order" - }, - "Sort": { - "location": "querystring", - "locationName": "sort" - }, - "Marker": { - "location": "querystring", - "locationName": "marker" - }, - "Limit": { - "location": "querystring", - "locationName": "limit", - "type": "integer" - }, - "Fields": { - "location": "querystring", - "locationName": "fields" - } - } - }, - "output": { - "type": "structure", - "members": { - "Users": { - "type": "list", - "member": { - "shape": "S8" - } - }, - "TotalNumberOfUsers": { - "type": "long" - }, - "Marker": {} - } - } - }, - "GetCurrentUser": { - "http": { - "method": "GET", - "requestUri": "/api/v1/me", - "responseCode": 200 - }, - "input": { - "type": "structure", - "required": [ - "AuthenticationToken" - ], - "members": { - "AuthenticationToken": { - "shape": "S2", - "location": "header", - "locationName": "Authentication" - } - } - }, - "output": { - "type": "structure", - "members": { - "User": { - "shape": "S8" - } - } - } - }, - "GetDocument": { - "http": { - "method": "GET", - "requestUri": "/api/v1/documents/{DocumentId}", - "responseCode": 200 - }, - "input": { - "type": "structure", - "required": [ - "DocumentId" - ], - "members": { - "AuthenticationToken": { - "shape": "S2", - "location": "header", - "locationName": "Authentication" - }, - "DocumentId": { - "location": "uri", - "locationName": "DocumentId" - }, - "IncludeCustomMetadata": { - "location": "querystring", - "locationName": "includeCustomMetadata", - "type": "boolean" - } - } - }, - "output": { - "type": "structure", - "members": { - "Metadata": { - "shape": "S37" - }, - "CustomMetadata": { - "shape": "S15" - } - } - } - }, - "GetDocumentPath": { - "http": { - "method": "GET", - "requestUri": "/api/v1/documents/{DocumentId}/path", - "responseCode": 200 - }, - "input": { - "type": "structure", - "required": [ - "DocumentId" - ], - "members": { - "AuthenticationToken": { - "shape": "S2", - "location": "header", - "locationName": "Authentication" - }, - "DocumentId": { - "location": "uri", - "locationName": "DocumentId" - }, - "Limit": { - "location": "querystring", - "locationName": "limit", - "type": "integer" - }, - "Fields": { - "location": "querystring", - "locationName": "fields" - }, - "Marker": { - "location": "querystring", - "locationName": "marker" - } - } - }, - "output": { - "type": "structure", - "members": { - "Path": { - "shape": "S3x" - } - } - } - }, - "GetDocumentVersion": { - "http": { - "method": "GET", - "requestUri": "/api/v1/documents/{DocumentId}/versions/{VersionId}", - "responseCode": 200 - }, - "input": { - "type": "structure", - "required": [ - "DocumentId", - "VersionId" - ], - "members": { - "AuthenticationToken": { - "shape": "S2", - "location": "header", - "locationName": "Authentication" - }, - "DocumentId": { - "location": "uri", - "locationName": "DocumentId" - }, - "VersionId": { - "location": "uri", - "locationName": "VersionId" - }, - "Fields": { - "location": "querystring", - "locationName": "fields" - }, - "IncludeCustomMetadata": { - "location": "querystring", - "locationName": "includeCustomMetadata", - "type": "boolean" - } - } - }, - "output": { - "type": "structure", - "members": { - "Metadata": { - "shape": "S2s" - }, - "CustomMetadata": { - "shape": "S15" - } - } - } - }, - "GetFolder": { - "http": { - "method": "GET", - "requestUri": "/api/v1/folders/{FolderId}", - "responseCode": 200 - }, - "input": { - "type": "structure", - "required": [ - "FolderId" - ], - "members": { - "AuthenticationToken": { - "shape": "S2", - "location": "header", - "locationName": "Authentication" - }, - "FolderId": { - "location": "uri", - "locationName": "FolderId" - }, - "IncludeCustomMetadata": { - "location": "querystring", - "locationName": "includeCustomMetadata", - "type": "boolean" - } - } - }, - "output": { - "type": "structure", - "members": { - "Metadata": { - "shape": "S1c" - }, - "CustomMetadata": { - "shape": "S15" - } - } - } - }, - "GetFolderPath": { - "http": { - "method": "GET", - "requestUri": "/api/v1/folders/{FolderId}/path", - "responseCode": 200 - }, - "input": { - "type": "structure", - "required": [ - "FolderId" - ], - "members": { - "AuthenticationToken": { - "shape": "S2", - "location": "header", - "locationName": "Authentication" - }, - "FolderId": { - "location": "uri", - "locationName": "FolderId" - }, - "Limit": { - "location": "querystring", - "locationName": "limit", - "type": "integer" - }, - "Fields": { - "location": "querystring", - "locationName": "fields" - }, - "Marker": { - "location": "querystring", - "locationName": "marker" - } - } - }, - "output": { - "type": "structure", - "members": { - "Path": { - "shape": "S3x" - } - } - } - }, - "InitiateDocumentVersionUpload": { - "http": { - "requestUri": "/api/v1/documents", - "responseCode": 201 - }, - "input": { - "type": "structure", - "required": [ - "ParentFolderId" - ], - "members": { - "AuthenticationToken": { - "shape": "S2", - "location": "header", - "locationName": "Authentication" - }, - "Id": {}, - "Name": {}, - "ContentCreatedTimestamp": { - "type": "timestamp" - }, - "ContentModifiedTimestamp": { - "type": "timestamp" - }, - "ContentType": {}, - "DocumentSizeInBytes": { - "type": "long" - }, - "ParentFolderId": {} - } - }, - "output": { - "type": "structure", - "members": { - "Metadata": { - "shape": "S37" - }, - "UploadMetadata": { - "type": "structure", - "members": { - "UploadUrl": { - "shape": "S2x" - }, - "SignedHeaders": { - "type": "map", - "key": {}, - "value": {} - } - } - } - } - } - }, - "RemoveAllResourcePermissions": { - "http": { - "method": "DELETE", - "requestUri": "/api/v1/resources/{ResourceId}/permissions", - "responseCode": 204 - }, - "input": { - "type": "structure", - "required": [ - "ResourceId" - ], - "members": { - "AuthenticationToken": { - "shape": "S2", - "location": "header", - "locationName": "Authentication" - }, - "ResourceId": { - "location": "uri", - "locationName": "ResourceId" - } - } - } - }, - "RemoveResourcePermission": { - "http": { - "method": "DELETE", - "requestUri": "/api/v1/resources/{ResourceId}/permissions/{PrincipalId}", - "responseCode": 204 - }, - "input": { - "type": "structure", - "required": [ - "ResourceId", - "PrincipalId" - ], - "members": { - "AuthenticationToken": { - "shape": "S2", - "location": "header", - "locationName": "Authentication" - }, - "ResourceId": { - "location": "uri", - "locationName": "ResourceId" - }, - "PrincipalId": { - "location": "uri", - "locationName": "PrincipalId" - }, - "PrincipalType": { - "location": "querystring", - "locationName": "type" - } - } - } - }, - "UpdateDocument": { - "http": { - "method": "PATCH", - "requestUri": "/api/v1/documents/{DocumentId}", - "responseCode": 200 - }, - "input": { - "type": "structure", - "required": [ - "DocumentId" - ], - "members": { - "AuthenticationToken": { - "shape": "S2", - "location": "header", - "locationName": "Authentication" - }, - "DocumentId": { - "location": "uri", - "locationName": "DocumentId" - }, - "Name": {}, - "ParentFolderId": {}, - "ResourceState": {} - } - } - }, - "UpdateDocumentVersion": { - "http": { - "method": "PATCH", - "requestUri": "/api/v1/documents/{DocumentId}/versions/{VersionId}", - "responseCode": 200 - }, - "input": { - "type": "structure", - "required": [ - "DocumentId", - "VersionId" - ], - "members": { - "AuthenticationToken": { - "shape": "S2", - "location": "header", - "locationName": "Authentication" - }, - "DocumentId": { - "location": "uri", - "locationName": "DocumentId" - }, - "VersionId": { - "location": "uri", - "locationName": "VersionId" - }, - "VersionStatus": {} - } - } - }, - "UpdateFolder": { - "http": { - "method": "PATCH", - "requestUri": "/api/v1/folders/{FolderId}", - "responseCode": 200 - }, - "input": { - "type": "structure", - "required": [ - "FolderId" - ], - "members": { - "AuthenticationToken": { - "shape": "S2", - "location": "header", - "locationName": "Authentication" - }, - "FolderId": { - "location": "uri", - "locationName": "FolderId" - }, - "Name": {}, - "ParentFolderId": {}, - "ResourceState": {} - } - } - }, - "UpdateUser": { - "http": { - "method": "PATCH", - "requestUri": "/api/v1/users/{UserId}", - "responseCode": 200 - }, - "input": { - "type": "structure", - "required": [ - "UserId" - ], - "members": { - "AuthenticationToken": { - "shape": "S2", - "location": "header", - "locationName": "Authentication" - }, - "UserId": { - "location": "uri", - "locationName": "UserId" - }, - "GivenName": {}, - "Surname": {}, - "Type": {}, - "StorageRule": { - "shape": "Sj" - }, - "TimeZoneId": {}, - "Locale": {} - } - }, - "output": { - "type": "structure", - "members": { - "User": { - "shape": "S8" - } - } - } - } - }, - "shapes": { - "S2": { - "type": "string", - "sensitive": true - }, - "S8": { - "type": "structure", - "members": { - "Id": {}, - "Username": {}, - "EmailAddress": {}, - "GivenName": {}, - "Surname": {}, - "OrganizationId": {}, - "RootFolderId": {}, - "RecycleBinFolderId": {}, - "Status": {}, - "Type": {}, - "CreatedTimestamp": { - "type": "timestamp" - }, - "ModifiedTimestamp": { - "type": "timestamp" - }, - "TimeZoneId": {}, - "Locale": {}, - "Storage": { - "type": "structure", - "members": { - "StorageUtilizedInBytes": { - "type": "long" - }, - "StorageRule": { - "shape": "Sj" - } - } - } - } - }, - "Sj": { - "type": "structure", - "members": { - "StorageAllocatedInBytes": { - "type": "long" - }, - "StorageType": {} - } - }, - "Sy": { - "type": "string", - "sensitive": true - }, - "S12": { - "type": "structure", - "required": [ - "CommentId" - ], - "members": { - "CommentId": {}, - "ParentId": {}, - "ThreadId": {}, - "Text": { - "shape": "Sy" - }, - "Contributor": { - "shape": "S8" - }, - "CreatedTimestamp": { - "type": "timestamp" - }, - "Status": {}, - "Visibility": {}, - "RecipientId": {} - } - }, - "S15": { - "type": "map", - "key": {}, - "value": {} - }, - "S1c": { - "type": "structure", - "members": { - "Id": {}, - "Name": {}, - "CreatorId": {}, - "ParentFolderId": {}, - "CreatedTimestamp": { - "type": "timestamp" - }, - "ModifiedTimestamp": { - "type": "timestamp" - }, - "ResourceState": {}, - "Signature": {}, - "Labels": { - "shape": "S1f" - }, - "Size": { - "type": "long" - }, - "LatestVersionSize": { - "type": "long" - } - } - }, - "S1f": { - "type": "list", - "member": {} - }, - "S1o": { - "type": "structure", - "members": { - "SubscriptionId": {}, - "EndPoint": {}, - "Protocol": {} - } - }, - "S2b": { - "type": "structure", - "members": { - "Id": {}, - "Username": {}, - "GivenName": {}, - "Surname": {}, - "EmailAddress": {} - } - }, - "S2h": { - "type": "structure", - "members": { - "Type": {}, - "Name": {}, - "OriginalName": {}, - "Id": {}, - "VersionId": {}, - "Owner": { - "shape": "S2b" - }, - "ParentId": {} - } - }, - "S2s": { - "type": "structure", - "members": { - "Id": {}, - "Name": {}, - "ContentType": {}, - "Size": { - "type": "long" - }, - "Signature": {}, - "Status": {}, - "CreatedTimestamp": { - "type": "timestamp" - }, - "ModifiedTimestamp": { - "type": "timestamp" - }, - "ContentCreatedTimestamp": { - "type": "timestamp" - }, - "ContentModifiedTimestamp": { - "type": "timestamp" - }, - "CreatorId": {}, - "Thumbnail": { - "type": "map", - "key": {}, - "value": { - "shape": "S2x" - } - }, - "Source": { - "type": "map", - "key": {}, - "value": { - "shape": "S2x" - } - } - } - }, - "S2x": { - "type": "string", - "sensitive": true - }, - "S35": { - "type": "list", - "member": { - "shape": "S1c" - } - }, - "S37": { - "type": "structure", - "members": { - "Id": {}, - "CreatorId": {}, - "ParentFolderId": {}, - "CreatedTimestamp": { - "type": "timestamp" - }, - "ModifiedTimestamp": { - "type": "timestamp" - }, - "LatestVersionMetadata": { - "shape": "S2s" - }, - "ResourceState": {}, - "Labels": { - "shape": "S1f" - } - } - }, - "S3x": { - "type": "structure", - "members": { - "Components": { - "type": "list", - "member": { - "type": "structure", - "members": { - "Id": {}, - "Name": {} - } - } - } - } - } - } -} \ No newline at end of file diff --git a/workshops/monte-carlo-on-ec2-spot-fleet/src/web/node_modules/aws-sdk/apis/workdocs-2016-05-01.paginators.json b/workshops/monte-carlo-on-ec2-spot-fleet/src/web/node_modules/aws-sdk/apis/workdocs-2016-05-01.paginators.json deleted file mode 100644 index 42c39b2f..00000000 --- a/workshops/monte-carlo-on-ec2-spot-fleet/src/web/node_modules/aws-sdk/apis/workdocs-2016-05-01.paginators.json +++ /dev/null @@ -1,25 +0,0 @@ -{ - "pagination": { - "DescribeDocumentVersions": { - "input_token": "Marker", - "limit_key": "Limit", - "output_token": "Marker", - "result_key": "DocumentVersions" - }, - "DescribeFolderContents": { - "input_token": "Marker", - "limit_key": "Limit", - "output_token": "Marker", - "result_key": [ - "Folders", - "Documents" - ] - }, - "DescribeUsers": { - "input_token": "Marker", - "limit_key": "Limit", - "output_token": "Marker", - "result_key": "Users" - } - } -} \ No newline at end of file diff --git a/workshops/monte-carlo-on-ec2-spot-fleet/src/web/node_modules/aws-sdk/apis/workspaces-2015-04-08.examples.json b/workshops/monte-carlo-on-ec2-spot-fleet/src/web/node_modules/aws-sdk/apis/workspaces-2015-04-08.examples.json deleted file mode 100644 index 0ea7e3b0..00000000 --- a/workshops/monte-carlo-on-ec2-spot-fleet/src/web/node_modules/aws-sdk/apis/workspaces-2015-04-08.examples.json +++ /dev/null @@ -1,5 +0,0 @@ -{ - "version": "1.0", - "examples": { - } -} diff --git a/workshops/monte-carlo-on-ec2-spot-fleet/src/web/node_modules/aws-sdk/apis/workspaces-2015-04-08.min.json b/workshops/monte-carlo-on-ec2-spot-fleet/src/web/node_modules/aws-sdk/apis/workspaces-2015-04-08.min.json deleted file mode 100644 index db1cd862..00000000 --- a/workshops/monte-carlo-on-ec2-spot-fleet/src/web/node_modules/aws-sdk/apis/workspaces-2015-04-08.min.json +++ /dev/null @@ -1,539 +0,0 @@ -{ - "version": "2.0", - "metadata": { - "apiVersion": "2015-04-08", - "endpointPrefix": "workspaces", - "jsonVersion": "1.1", - "protocol": "json", - "serviceFullName": "Amazon WorkSpaces", - "signatureVersion": "v4", - "targetPrefix": "WorkspacesService", - "uid": "workspaces-2015-04-08" - }, - "operations": { - "CreateTags": { - "input": { - "type": "structure", - "required": [ - "ResourceId", - "Tags" - ], - "members": { - "ResourceId": {}, - "Tags": { - "shape": "S3" - } - } - }, - "output": { - "type": "structure", - "members": {} - } - }, - "CreateWorkspaces": { - "input": { - "type": "structure", - "required": [ - "Workspaces" - ], - "members": { - "Workspaces": { - "type": "list", - "member": { - "shape": "Sa" - } - } - } - }, - "output": { - "type": "structure", - "members": { - "FailedRequests": { - "type": "list", - "member": { - "type": "structure", - "members": { - "WorkspaceRequest": { - "shape": "Sa" - }, - "ErrorCode": {}, - "ErrorMessage": {} - } - } - }, - "PendingRequests": { - "shape": "So" - } - } - } - }, - "DeleteTags": { - "input": { - "type": "structure", - "required": [ - "ResourceId", - "TagKeys" - ], - "members": { - "ResourceId": {}, - "TagKeys": { - "type": "list", - "member": {} - } - } - }, - "output": { - "type": "structure", - "members": {} - } - }, - "DescribeTags": { - "input": { - "type": "structure", - "required": [ - "ResourceId" - ], - "members": { - "ResourceId": {} - } - }, - "output": { - "type": "structure", - "members": { - "TagList": { - "shape": "S3" - } - } - } - }, - "DescribeWorkspaceBundles": { - "input": { - "type": "structure", - "members": { - "BundleIds": { - "type": "list", - "member": {} - }, - "Owner": {}, - "NextToken": {} - } - }, - "output": { - "type": "structure", - "members": { - "Bundles": { - "type": "list", - "member": { - "type": "structure", - "members": { - "BundleId": {}, - "Name": {}, - "Owner": {}, - "Description": {}, - "UserStorage": { - "type": "structure", - "members": { - "Capacity": {} - } - }, - "ComputeType": { - "type": "structure", - "members": { - "Name": {} - } - } - } - } - }, - "NextToken": {} - } - } - }, - "DescribeWorkspaceDirectories": { - "input": { - "type": "structure", - "members": { - "DirectoryIds": { - "type": "list", - "member": {} - }, - "NextToken": {} - } - }, - "output": { - "type": "structure", - "members": { - "Directories": { - "type": "list", - "member": { - "type": "structure", - "members": { - "DirectoryId": {}, - "Alias": {}, - "DirectoryName": {}, - "RegistrationCode": {}, - "SubnetIds": { - "type": "list", - "member": {} - }, - "DnsIpAddresses": { - "type": "list", - "member": {} - }, - "CustomerUserName": {}, - "IamRoleId": {}, - "DirectoryType": {}, - "WorkspaceSecurityGroupId": {}, - "State": {}, - "WorkspaceCreationProperties": { - "type": "structure", - "members": { - "EnableWorkDocs": { - "type": "boolean" - }, - "EnableInternetAccess": { - "type": "boolean" - }, - "DefaultOu": {}, - "CustomSecurityGroupId": {}, - "UserEnabledAsLocalAdministrator": { - "type": "boolean" - } - } - } - } - } - }, - "NextToken": {} - } - } - }, - "DescribeWorkspaces": { - "input": { - "type": "structure", - "members": { - "WorkspaceIds": { - "shape": "S1s" - }, - "DirectoryId": {}, - "UserName": {}, - "BundleId": {}, - "Limit": { - "type": "integer" - }, - "NextToken": {} - } - }, - "output": { - "type": "structure", - "members": { - "Workspaces": { - "shape": "So" - }, - "NextToken": {} - } - } - }, - "DescribeWorkspacesConnectionStatus": { - "input": { - "type": "structure", - "members": { - "WorkspaceIds": { - "shape": "S1s" - }, - "NextToken": {} - } - }, - "output": { - "type": "structure", - "members": { - "WorkspacesConnectionStatus": { - "type": "list", - "member": { - "type": "structure", - "members": { - "WorkspaceId": {}, - "ConnectionState": {}, - "ConnectionStateCheckTimestamp": { - "type": "timestamp" - }, - "LastKnownUserConnectionTimestamp": { - "type": "timestamp" - } - } - } - }, - "NextToken": {} - } - } - }, - "ModifyWorkspaceProperties": { - "input": { - "type": "structure", - "required": [ - "WorkspaceId", - "WorkspaceProperties" - ], - "members": { - "WorkspaceId": {}, - "WorkspaceProperties": { - "shape": "Sg" - } - } - }, - "output": { - "type": "structure", - "members": {} - } - }, - "RebootWorkspaces": { - "input": { - "type": "structure", - "required": [ - "RebootWorkspaceRequests" - ], - "members": { - "RebootWorkspaceRequests": { - "type": "list", - "member": { - "type": "structure", - "required": [ - "WorkspaceId" - ], - "members": { - "WorkspaceId": {} - } - } - } - } - }, - "output": { - "type": "structure", - "members": { - "FailedRequests": { - "type": "list", - "member": { - "shape": "S28" - } - } - } - } - }, - "RebuildWorkspaces": { - "input": { - "type": "structure", - "required": [ - "RebuildWorkspaceRequests" - ], - "members": { - "RebuildWorkspaceRequests": { - "type": "list", - "member": { - "type": "structure", - "required": [ - "WorkspaceId" - ], - "members": { - "WorkspaceId": {} - } - } - } - } - }, - "output": { - "type": "structure", - "members": { - "FailedRequests": { - "type": "list", - "member": { - "shape": "S28" - } - } - } - } - }, - "StartWorkspaces": { - "input": { - "type": "structure", - "required": [ - "StartWorkspaceRequests" - ], - "members": { - "StartWorkspaceRequests": { - "type": "list", - "member": { - "type": "structure", - "members": { - "WorkspaceId": {} - } - } - } - } - }, - "output": { - "type": "structure", - "members": { - "FailedRequests": { - "type": "list", - "member": { - "shape": "S28" - } - } - } - } - }, - "StopWorkspaces": { - "input": { - "type": "structure", - "required": [ - "StopWorkspaceRequests" - ], - "members": { - "StopWorkspaceRequests": { - "type": "list", - "member": { - "type": "structure", - "members": { - "WorkspaceId": {} - } - } - } - } - }, - "output": { - "type": "structure", - "members": { - "FailedRequests": { - "type": "list", - "member": { - "shape": "S28" - } - } - } - } - }, - "TerminateWorkspaces": { - "input": { - "type": "structure", - "required": [ - "TerminateWorkspaceRequests" - ], - "members": { - "TerminateWorkspaceRequests": { - "type": "list", - "member": { - "type": "structure", - "required": [ - "WorkspaceId" - ], - "members": { - "WorkspaceId": {} - } - } - } - } - }, - "output": { - "type": "structure", - "members": { - "FailedRequests": { - "type": "list", - "member": { - "shape": "S28" - } - } - } - } - } - }, - "shapes": { - "S3": { - "type": "list", - "member": { - "type": "structure", - "required": [ - "Key" - ], - "members": { - "Key": {}, - "Value": {} - } - } - }, - "Sa": { - "type": "structure", - "required": [ - "DirectoryId", - "UserName", - "BundleId" - ], - "members": { - "DirectoryId": {}, - "UserName": {}, - "BundleId": {}, - "VolumeEncryptionKey": {}, - "UserVolumeEncryptionEnabled": { - "type": "boolean" - }, - "RootVolumeEncryptionEnabled": { - "type": "boolean" - }, - "WorkspaceProperties": { - "shape": "Sg" - }, - "Tags": { - "shape": "S3" - } - } - }, - "Sg": { - "type": "structure", - "members": { - "RunningMode": {}, - "RunningModeAutoStopTimeoutInMinutes": { - "type": "integer" - } - } - }, - "So": { - "type": "list", - "member": { - "type": "structure", - "members": { - "WorkspaceId": {}, - "DirectoryId": {}, - "UserName": {}, - "IpAddress": {}, - "State": {}, - "BundleId": {}, - "SubnetId": {}, - "ErrorMessage": {}, - "ErrorCode": {}, - "ComputerName": {}, - "VolumeEncryptionKey": {}, - "UserVolumeEncryptionEnabled": { - "type": "boolean" - }, - "RootVolumeEncryptionEnabled": { - "type": "boolean" - }, - "WorkspaceProperties": { - "shape": "Sg" - } - } - } - }, - "S1s": { - "type": "list", - "member": {} - }, - "S28": { - "type": "structure", - "members": { - "WorkspaceId": {}, - "ErrorCode": {}, - "ErrorMessage": {} - } - } - } -} \ No newline at end of file diff --git a/workshops/monte-carlo-on-ec2-spot-fleet/src/web/node_modules/aws-sdk/apis/workspaces-2015-04-08.paginators.json b/workshops/monte-carlo-on-ec2-spot-fleet/src/web/node_modules/aws-sdk/apis/workspaces-2015-04-08.paginators.json deleted file mode 100644 index cc7a0c68..00000000 --- a/workshops/monte-carlo-on-ec2-spot-fleet/src/web/node_modules/aws-sdk/apis/workspaces-2015-04-08.paginators.json +++ /dev/null @@ -1,20 +0,0 @@ -{ - "pagination": { - "DescribeWorkspaceBundles": { - "input_token": "NextToken", - "output_token": "NextToken", - "result_key": "Bundles" - }, - "DescribeWorkspaceDirectories": { - "input_token": "NextToken", - "output_token": "NextToken", - "result_key": "Directories" - }, - "DescribeWorkspaces": { - "input_token": "NextToken", - "limit_key": "Limit", - "output_token": "NextToken", - "result_key": "Workspaces" - } - } -} \ No newline at end of file diff --git a/workshops/monte-carlo-on-ec2-spot-fleet/src/web/node_modules/aws-sdk/apis/xray-2016-04-12.examples.json b/workshops/monte-carlo-on-ec2-spot-fleet/src/web/node_modules/aws-sdk/apis/xray-2016-04-12.examples.json deleted file mode 100644 index 0ea7e3b0..00000000 --- a/workshops/monte-carlo-on-ec2-spot-fleet/src/web/node_modules/aws-sdk/apis/xray-2016-04-12.examples.json +++ /dev/null @@ -1,5 +0,0 @@ -{ - "version": "1.0", - "examples": { - } -} diff --git a/workshops/monte-carlo-on-ec2-spot-fleet/src/web/node_modules/aws-sdk/apis/xray-2016-04-12.min.json b/workshops/monte-carlo-on-ec2-spot-fleet/src/web/node_modules/aws-sdk/apis/xray-2016-04-12.min.json deleted file mode 100644 index a503682d..00000000 --- a/workshops/monte-carlo-on-ec2-spot-fleet/src/web/node_modules/aws-sdk/apis/xray-2016-04-12.min.json +++ /dev/null @@ -1,511 +0,0 @@ -{ - "version": "2.0", - "metadata": { - "apiVersion": "2016-04-12", - "endpointPrefix": "xray", - "protocol": "rest-json", - "serviceFullName": "AWS X-Ray", - "signatureVersion": "v4", - "uid": "xray-2016-04-12" - }, - "operations": { - "BatchGetTraces": { - "http": { - "requestUri": "/Traces" - }, - "input": { - "type": "structure", - "required": [ - "TraceIds" - ], - "members": { - "TraceIds": { - "shape": "S2" - }, - "NextToken": {} - } - }, - "output": { - "type": "structure", - "members": { - "Traces": { - "type": "list", - "member": { - "type": "structure", - "members": { - "Id": {}, - "Duration": { - "type": "double" - }, - "Segments": { - "type": "list", - "member": { - "type": "structure", - "members": { - "Id": {}, - "Document": {} - } - } - } - } - } - }, - "UnprocessedTraceIds": { - "type": "list", - "member": {} - }, - "NextToken": {} - } - } - }, - "GetServiceGraph": { - "http": { - "requestUri": "/ServiceGraph" - }, - "input": { - "type": "structure", - "required": [ - "StartTime", - "EndTime" - ], - "members": { - "StartTime": { - "type": "timestamp" - }, - "EndTime": { - "type": "timestamp" - }, - "NextToken": {} - } - }, - "output": { - "type": "structure", - "members": { - "StartTime": { - "type": "timestamp" - }, - "EndTime": { - "type": "timestamp" - }, - "Services": { - "shape": "Sh" - }, - "NextToken": {} - } - } - }, - "GetTraceGraph": { - "http": { - "requestUri": "/TraceGraph" - }, - "input": { - "type": "structure", - "required": [ - "TraceIds" - ], - "members": { - "TraceIds": { - "shape": "S2" - }, - "NextToken": {} - } - }, - "output": { - "type": "structure", - "members": { - "Services": { - "shape": "Sh" - }, - "NextToken": {} - } - } - }, - "GetTraceSummaries": { - "http": { - "requestUri": "/TraceSummaries" - }, - "input": { - "type": "structure", - "required": [ - "StartTime", - "EndTime" - ], - "members": { - "StartTime": { - "type": "timestamp" - }, - "EndTime": { - "type": "timestamp" - }, - "Sampling": { - "type": "boolean" - }, - "FilterExpression": {}, - "NextToken": {} - } - }, - "output": { - "type": "structure", - "members": { - "TraceSummaries": { - "type": "list", - "member": { - "type": "structure", - "members": { - "Id": {}, - "Duration": { - "type": "double" - }, - "ResponseTime": { - "type": "double" - }, - "HasFault": { - "type": "boolean" - }, - "HasError": { - "type": "boolean" - }, - "HasThrottle": { - "type": "boolean" - }, - "IsPartial": { - "type": "boolean" - }, - "Http": { - "type": "structure", - "members": { - "HttpURL": {}, - "HttpStatus": { - "type": "integer" - }, - "HttpMethod": {}, - "UserAgent": {}, - "ClientIp": {} - } - }, - "Annotations": { - "type": "map", - "key": {}, - "value": { - "type": "list", - "member": { - "type": "structure", - "members": { - "AnnotationValue": { - "type": "structure", - "members": { - "NumberValue": { - "type": "double" - }, - "BooleanValue": { - "type": "boolean" - }, - "StringValue": {} - } - }, - "ServiceIds": { - "shape": "S1d" - } - } - } - } - }, - "Users": { - "type": "list", - "member": { - "type": "structure", - "members": { - "UserName": {}, - "ServiceIds": { - "shape": "S1d" - } - } - } - }, - "ServiceIds": { - "shape": "S1d" - } - } - } - }, - "ApproximateTime": { - "type": "timestamp" - }, - "TracesProcessedCount": { - "type": "long" - }, - "NextToken": {} - } - } - }, - "PutTelemetryRecords": { - "http": { - "requestUri": "/TelemetryRecords" - }, - "input": { - "type": "structure", - "required": [ - "TelemetryRecords" - ], - "members": { - "TelemetryRecords": { - "type": "list", - "member": { - "type": "structure", - "members": { - "Timestamp": { - "type": "timestamp" - }, - "SegmentsReceivedCount": { - "type": "integer" - }, - "SegmentsSentCount": { - "type": "integer" - }, - "SegmentsSpilloverCount": { - "type": "integer" - }, - "SegmentsRejectedCount": { - "type": "integer" - }, - "BackendConnectionErrors": { - "type": "structure", - "members": { - "TimeoutCount": { - "type": "integer" - }, - "ConnectionRefusedCount": { - "type": "integer" - }, - "HTTPCode4XXCount": { - "type": "integer" - }, - "HTTPCode5XXCount": { - "type": "integer" - }, - "UnknownHostCount": { - "type": "integer" - }, - "OtherCount": { - "type": "integer" - } - } - } - } - } - }, - "EC2InstanceId": {}, - "Hostname": {}, - "ResourceARN": {} - } - }, - "output": { - "type": "structure", - "members": {} - } - }, - "PutTraceSegments": { - "http": { - "requestUri": "/TraceSegments" - }, - "input": { - "type": "structure", - "required": [ - "TraceSegmentDocuments" - ], - "members": { - "TraceSegmentDocuments": { - "type": "list", - "member": {} - } - } - }, - "output": { - "type": "structure", - "members": { - "UnprocessedTraceSegments": { - "type": "list", - "member": { - "type": "structure", - "members": { - "Id": {}, - "ErrorCode": {}, - "Message": {} - } - } - } - } - } - } - }, - "shapes": { - "S2": { - "type": "list", - "member": {} - }, - "Sh": { - "type": "list", - "member": { - "type": "structure", - "members": { - "ReferenceId": { - "type": "integer" - }, - "Name": {}, - "Names": { - "shape": "Sk" - }, - "Root": { - "type": "boolean" - }, - "AccountId": {}, - "Type": {}, - "State": {}, - "StartTime": { - "type": "timestamp" - }, - "EndTime": { - "type": "timestamp" - }, - "Edges": { - "type": "list", - "member": { - "type": "structure", - "members": { - "ReferenceId": { - "type": "integer" - }, - "StartTime": { - "type": "timestamp" - }, - "EndTime": { - "type": "timestamp" - }, - "SummaryStatistics": { - "type": "structure", - "members": { - "OkCount": { - "type": "long" - }, - "ErrorStatistics": { - "shape": "Sq" - }, - "FaultStatistics": { - "shape": "Sr" - }, - "TotalCount": { - "type": "long" - }, - "TotalResponseTime": { - "type": "double" - } - } - }, - "ResponseTimeHistogram": { - "shape": "Ss" - }, - "Aliases": { - "type": "list", - "member": { - "type": "structure", - "members": { - "Name": {}, - "Names": { - "type": "list", - "member": {} - }, - "Type": {} - } - } - } - } - } - }, - "SummaryStatistics": { - "type": "structure", - "members": { - "OkCount": { - "type": "long" - }, - "ErrorStatistics": { - "shape": "Sq" - }, - "FaultStatistics": { - "shape": "Sr" - }, - "TotalCount": { - "type": "long" - }, - "TotalResponseTime": { - "type": "double" - } - } - }, - "DurationHistogram": { - "shape": "Ss" - }, - "ResponseTimeHistogram": { - "shape": "Ss" - } - } - } - }, - "Sk": { - "type": "list", - "member": {} - }, - "Sq": { - "type": "structure", - "members": { - "ThrottleCount": { - "type": "long" - }, - "OtherCount": { - "type": "long" - }, - "TotalCount": { - "type": "long" - } - } - }, - "Sr": { - "type": "structure", - "members": { - "OtherCount": { - "type": "long" - }, - "TotalCount": { - "type": "long" - } - } - }, - "Ss": { - "type": "list", - "member": { - "type": "structure", - "members": { - "Value": { - "type": "double" - }, - "Count": { - "type": "integer" - } - } - } - }, - "S1d": { - "type": "list", - "member": { - "type": "structure", - "members": { - "Name": {}, - "Names": { - "shape": "Sk" - }, - "AccountId": {}, - "Type": {} - } - } - } - } -} \ No newline at end of file diff --git a/workshops/monte-carlo-on-ec2-spot-fleet/src/web/node_modules/aws-sdk/apis/xray-2016-04-12.paginators.json b/workshops/monte-carlo-on-ec2-spot-fleet/src/web/node_modules/aws-sdk/apis/xray-2016-04-12.paginators.json deleted file mode 100644 index 5677bd8e..00000000 --- a/workshops/monte-carlo-on-ec2-spot-fleet/src/web/node_modules/aws-sdk/apis/xray-2016-04-12.paginators.json +++ /dev/null @@ -1,4 +0,0 @@ -{ - "pagination": { - } -} diff --git a/workshops/monte-carlo-on-ec2-spot-fleet/src/web/node_modules/aws-sdk/browser.js b/workshops/monte-carlo-on-ec2-spot-fleet/src/web/node_modules/aws-sdk/browser.js deleted file mode 100644 index 7867151f..00000000 --- a/workshops/monte-carlo-on-ec2-spot-fleet/src/web/node_modules/aws-sdk/browser.js +++ /dev/null @@ -1,6 +0,0 @@ -require('./lib/browser_loader'); - -var AWS = require('./lib/core'); -if (typeof window !== 'undefined') window.AWS = AWS; -if (typeof module !== 'undefined') module.exports = AWS; -if (typeof self !== 'undefined') self.AWS = AWS; \ No newline at end of file diff --git a/workshops/monte-carlo-on-ec2-spot-fleet/src/web/node_modules/aws-sdk/clients/acm.d.ts b/workshops/monte-carlo-on-ec2-spot-fleet/src/web/node_modules/aws-sdk/clients/acm.d.ts deleted file mode 100644 index 8c7d2263..00000000 --- a/workshops/monte-carlo-on-ec2-spot-fleet/src/web/node_modules/aws-sdk/clients/acm.d.ts +++ /dev/null @@ -1,437 +0,0 @@ -import {Request} from '../lib/request'; -import {Response} from '../lib/response'; -import {AWSError} from '../lib/error'; -import {Service} from '../lib/service'; -import {ServiceConfigurationOptions} from '../lib/service'; -import {ConfigBase as Config} from '../lib/config'; -interface Blob {} -declare class ACM extends Service { - /** - * Constructs a service object. This object has one method for each API operation. - */ - constructor(options?: ACM.Types.ClientConfiguration) - config: Config & ACM.Types.ClientConfiguration; - /** - * Adds one or more tags to an ACM Certificate. Tags are labels that you can use to identify and organize your AWS resources. Each tag consists of a key and an optional value. You specify the certificate on input by its Amazon Resource Name (ARN). You specify the tag by using a key-value pair. You can apply a tag to just one certificate if you want to identify a specific characteristic of that certificate, or you can apply the same tag to multiple certificates if you want to filter for a common relationship among those certificates. Similarly, you can apply the same tag to multiple resources if you want to specify a relationship among those resources. For example, you can add the same tag to an ACM Certificate and an Elastic Load Balancing load balancer to indicate that they are both used by the same website. For more information, see Tagging ACM Certificates. To remove one or more tags, use the RemoveTagsFromCertificate action. To view all of the tags that have been applied to the certificate, use the ListTagsForCertificate action. - */ - addTagsToCertificate(params: ACM.Types.AddTagsToCertificateRequest, callback?: (err: AWSError, data: {}) => void): Request<{}, AWSError>; - /** - * Adds one or more tags to an ACM Certificate. Tags are labels that you can use to identify and organize your AWS resources. Each tag consists of a key and an optional value. You specify the certificate on input by its Amazon Resource Name (ARN). You specify the tag by using a key-value pair. You can apply a tag to just one certificate if you want to identify a specific characteristic of that certificate, or you can apply the same tag to multiple certificates if you want to filter for a common relationship among those certificates. Similarly, you can apply the same tag to multiple resources if you want to specify a relationship among those resources. For example, you can add the same tag to an ACM Certificate and an Elastic Load Balancing load balancer to indicate that they are both used by the same website. For more information, see Tagging ACM Certificates. To remove one or more tags, use the RemoveTagsFromCertificate action. To view all of the tags that have been applied to the certificate, use the ListTagsForCertificate action. - */ - addTagsToCertificate(callback?: (err: AWSError, data: {}) => void): Request<{}, AWSError>; - /** - * Deletes an ACM Certificate and its associated private key. If this action succeeds, the certificate no longer appears in the list of ACM Certificates that can be displayed by calling the ListCertificates action or be retrieved by calling the GetCertificate action. The certificate will not be available for use by other AWS services. You cannot delete an ACM Certificate that is being used by another AWS service. To delete a certificate that is in use, the certificate association must first be removed. - */ - deleteCertificate(params: ACM.Types.DeleteCertificateRequest, callback?: (err: AWSError, data: {}) => void): Request<{}, AWSError>; - /** - * Deletes an ACM Certificate and its associated private key. If this action succeeds, the certificate no longer appears in the list of ACM Certificates that can be displayed by calling the ListCertificates action or be retrieved by calling the GetCertificate action. The certificate will not be available for use by other AWS services. You cannot delete an ACM Certificate that is being used by another AWS service. To delete a certificate that is in use, the certificate association must first be removed. - */ - deleteCertificate(callback?: (err: AWSError, data: {}) => void): Request<{}, AWSError>; - /** - * Returns detailed metadata about the specified ACM Certificate. - */ - describeCertificate(params: ACM.Types.DescribeCertificateRequest, callback?: (err: AWSError, data: ACM.Types.DescribeCertificateResponse) => void): Request; - /** - * Returns detailed metadata about the specified ACM Certificate. - */ - describeCertificate(callback?: (err: AWSError, data: ACM.Types.DescribeCertificateResponse) => void): Request; - /** - * Retrieves an ACM Certificate and certificate chain for the certificate specified by an ARN. The chain is an ordered list of certificates that contains the root certificate, intermediate certificates of subordinate CAs, and the ACM Certificate. The certificate and certificate chain are base64 encoded. If you want to decode the certificate chain to see the individual certificate fields, you can use OpenSSL. Currently, ACM Certificates can be used only with Elastic Load Balancing and Amazon CloudFront. - */ - getCertificate(params: ACM.Types.GetCertificateRequest, callback?: (err: AWSError, data: ACM.Types.GetCertificateResponse) => void): Request; - /** - * Retrieves an ACM Certificate and certificate chain for the certificate specified by an ARN. The chain is an ordered list of certificates that contains the root certificate, intermediate certificates of subordinate CAs, and the ACM Certificate. The certificate and certificate chain are base64 encoded. If you want to decode the certificate chain to see the individual certificate fields, you can use OpenSSL. Currently, ACM Certificates can be used only with Elastic Load Balancing and Amazon CloudFront. - */ - getCertificate(callback?: (err: AWSError, data: ACM.Types.GetCertificateResponse) => void): Request; - /** - * Imports an SSL/TLS certificate into AWS Certificate Manager (ACM) to use with ACM's integrated AWS services. ACM does not provide managed renewal for certificates that you import. For more information about importing certificates into ACM, including the differences between certificates that you import and those that ACM provides, see Importing Certificates in the AWS Certificate Manager User Guide. To import a certificate, you must provide the certificate and the matching private key. When the certificate is not self-signed, you must also provide a certificate chain. You can omit the certificate chain when importing a self-signed certificate. The certificate, private key, and certificate chain must be PEM-encoded. For more information about converting these items to PEM format, see Importing Certificates Troubleshooting in the AWS Certificate Manager User Guide. To import a new certificate, omit the CertificateArn field. Include this field only when you want to replace a previously imported certificate. This operation returns the Amazon Resource Name (ARN) of the imported certificate. - */ - importCertificate(params: ACM.Types.ImportCertificateRequest, callback?: (err: AWSError, data: ACM.Types.ImportCertificateResponse) => void): Request; - /** - * Imports an SSL/TLS certificate into AWS Certificate Manager (ACM) to use with ACM's integrated AWS services. ACM does not provide managed renewal for certificates that you import. For more information about importing certificates into ACM, including the differences between certificates that you import and those that ACM provides, see Importing Certificates in the AWS Certificate Manager User Guide. To import a certificate, you must provide the certificate and the matching private key. When the certificate is not self-signed, you must also provide a certificate chain. You can omit the certificate chain when importing a self-signed certificate. The certificate, private key, and certificate chain must be PEM-encoded. For more information about converting these items to PEM format, see Importing Certificates Troubleshooting in the AWS Certificate Manager User Guide. To import a new certificate, omit the CertificateArn field. Include this field only when you want to replace a previously imported certificate. This operation returns the Amazon Resource Name (ARN) of the imported certificate. - */ - importCertificate(callback?: (err: AWSError, data: ACM.Types.ImportCertificateResponse) => void): Request; - /** - * Retrieves a list of ACM Certificates and the domain name for each. You can optionally filter the list to return only the certificates that match the specified status. - */ - listCertificates(params: ACM.Types.ListCertificatesRequest, callback?: (err: AWSError, data: ACM.Types.ListCertificatesResponse) => void): Request; - /** - * Retrieves a list of ACM Certificates and the domain name for each. You can optionally filter the list to return only the certificates that match the specified status. - */ - listCertificates(callback?: (err: AWSError, data: ACM.Types.ListCertificatesResponse) => void): Request; - /** - * Lists the tags that have been applied to the ACM Certificate. Use the certificate's Amazon Resource Name (ARN) to specify the certificate. To add a tag to an ACM Certificate, use the AddTagsToCertificate action. To delete a tag, use the RemoveTagsFromCertificate action. - */ - listTagsForCertificate(params: ACM.Types.ListTagsForCertificateRequest, callback?: (err: AWSError, data: ACM.Types.ListTagsForCertificateResponse) => void): Request; - /** - * Lists the tags that have been applied to the ACM Certificate. Use the certificate's Amazon Resource Name (ARN) to specify the certificate. To add a tag to an ACM Certificate, use the AddTagsToCertificate action. To delete a tag, use the RemoveTagsFromCertificate action. - */ - listTagsForCertificate(callback?: (err: AWSError, data: ACM.Types.ListTagsForCertificateResponse) => void): Request; - /** - * Remove one or more tags from an ACM Certificate. A tag consists of a key-value pair. If you do not specify the value portion of the tag when calling this function, the tag will be removed regardless of value. If you specify a value, the tag is removed only if it is associated with the specified value. To add tags to a certificate, use the AddTagsToCertificate action. To view all of the tags that have been applied to a specific ACM Certificate, use the ListTagsForCertificate action. - */ - removeTagsFromCertificate(params: ACM.Types.RemoveTagsFromCertificateRequest, callback?: (err: AWSError, data: {}) => void): Request<{}, AWSError>; - /** - * Remove one or more tags from an ACM Certificate. A tag consists of a key-value pair. If you do not specify the value portion of the tag when calling this function, the tag will be removed regardless of value. If you specify a value, the tag is removed only if it is associated with the specified value. To add tags to a certificate, use the AddTagsToCertificate action. To view all of the tags that have been applied to a specific ACM Certificate, use the ListTagsForCertificate action. - */ - removeTagsFromCertificate(callback?: (err: AWSError, data: {}) => void): Request<{}, AWSError>; - /** - * Requests an ACM Certificate for use with other AWS services. To request an ACM Certificate, you must specify the fully qualified domain name (FQDN) for your site. You can also specify additional FQDNs if users can reach your site by using other names. For each domain name you specify, email is sent to the domain owner to request approval to issue the certificate. After receiving approval from the domain owner, the ACM Certificate is issued. For more information, see the AWS Certificate Manager User Guide. - */ - requestCertificate(params: ACM.Types.RequestCertificateRequest, callback?: (err: AWSError, data: ACM.Types.RequestCertificateResponse) => void): Request; - /** - * Requests an ACM Certificate for use with other AWS services. To request an ACM Certificate, you must specify the fully qualified domain name (FQDN) for your site. You can also specify additional FQDNs if users can reach your site by using other names. For each domain name you specify, email is sent to the domain owner to request approval to issue the certificate. After receiving approval from the domain owner, the ACM Certificate is issued. For more information, see the AWS Certificate Manager User Guide. - */ - requestCertificate(callback?: (err: AWSError, data: ACM.Types.RequestCertificateResponse) => void): Request; - /** - * Resends the email that requests domain ownership validation. The domain owner or an authorized representative must approve the ACM Certificate before it can be issued. The certificate can be approved by clicking a link in the mail to navigate to the Amazon certificate approval website and then clicking I Approve. However, the validation email can be blocked by spam filters. Therefore, if you do not receive the original mail, you can request that the mail be resent within 72 hours of requesting the ACM Certificate. If more than 72 hours have elapsed since your original request or since your last attempt to resend validation mail, you must request a new certificate. For more information about setting up your contact email addresses, see Configure Email for your Domain. - */ - resendValidationEmail(params: ACM.Types.ResendValidationEmailRequest, callback?: (err: AWSError, data: {}) => void): Request<{}, AWSError>; - /** - * Resends the email that requests domain ownership validation. The domain owner or an authorized representative must approve the ACM Certificate before it can be issued. The certificate can be approved by clicking a link in the mail to navigate to the Amazon certificate approval website and then clicking I Approve. However, the validation email can be blocked by spam filters. Therefore, if you do not receive the original mail, you can request that the mail be resent within 72 hours of requesting the ACM Certificate. If more than 72 hours have elapsed since your original request or since your last attempt to resend validation mail, you must request a new certificate. For more information about setting up your contact email addresses, see Configure Email for your Domain. - */ - resendValidationEmail(callback?: (err: AWSError, data: {}) => void): Request<{}, AWSError>; -} -declare namespace ACM { - export interface AddTagsToCertificateRequest { - /** - * String that contains the ARN of the ACM Certificate to which the tag is to be applied. This must be of the form: arn:aws:acm:region:123456789012:certificate/12345678-1234-1234-1234-123456789012 For more information about ARNs, see Amazon Resource Names (ARNs) and AWS Service Namespaces. - */ - CertificateArn: Arn; - /** - * The key-value pair that defines the tag. The tag value is optional. - */ - Tags: TagList; - } - export type Arn = string; - export type CertificateBody = string; - export type CertificateBodyBlob = Buffer|Uint8Array|Blob|string; - export type CertificateChain = string; - export type CertificateChainBlob = Buffer|Uint8Array|Blob|string; - export interface CertificateDetail { - /** - * The Amazon Resource Name (ARN) of the certificate. For more information about ARNs, see Amazon Resource Names (ARNs) and AWS Service Namespaces in the AWS General Reference. - */ - CertificateArn?: Arn; - /** - * The fully qualified domain name for the certificate, such as www.example.com or example.com. - */ - DomainName?: DomainNameString; - /** - * One or more domain names (subject alternative names) included in the certificate. This list contains the domain names that are bound to the public key that is contained in the certificate. The subject alternative names include the canonical domain name (CN) of the certificate and additional domain names that can be used to connect to the website. - */ - SubjectAlternativeNames?: DomainList; - /** - * Contains information about the initial validation of each domain name that occurs as a result of the RequestCertificate request. This field exists only when the certificate type is AMAZON_ISSUED. - */ - DomainValidationOptions?: DomainValidationList; - /** - * The serial number of the certificate. - */ - Serial?: String; - /** - * The name of the entity that is associated with the public key contained in the certificate. - */ - Subject?: String; - /** - * The name of the certificate authority that issued and signed the certificate. - */ - Issuer?: String; - /** - * The time at which the certificate was requested. This value exists only when the certificate type is AMAZON_ISSUED. - */ - CreatedAt?: TStamp; - /** - * The time at which the certificate was issued. This value exists only when the certificate type is AMAZON_ISSUED. - */ - IssuedAt?: TStamp; - /** - * The date and time at which the certificate was imported. This value exists only when the certificate type is IMPORTED. - */ - ImportedAt?: TStamp; - /** - * The status of the certificate. - */ - Status?: CertificateStatus; - /** - * The time at which the certificate was revoked. This value exists only when the certificate status is REVOKED. - */ - RevokedAt?: TStamp; - /** - * The reason the certificate was revoked. This value exists only when the certificate status is REVOKED. - */ - RevocationReason?: RevocationReason; - /** - * The time before which the certificate is not valid. - */ - NotBefore?: TStamp; - /** - * The time after which the certificate is not valid. - */ - NotAfter?: TStamp; - /** - * The algorithm that was used to generate the key pair (the public and private key). - */ - KeyAlgorithm?: KeyAlgorithm; - /** - * The algorithm that was used to sign the certificate. - */ - SignatureAlgorithm?: String; - /** - * A list of ARNs for the AWS resources that are using the certificate. A certificate can be used by multiple AWS resources. - */ - InUseBy?: InUseList; - /** - * The reason the certificate request failed. This value exists only when the certificate status is FAILED. For more information, see Certificate Request Failed in the AWS Certificate Manager User Guide. - */ - FailureReason?: FailureReason; - /** - * The source of the certificate. For certificates provided by ACM, this value is AMAZON_ISSUED. For certificates that you imported with ImportCertificate, this value is IMPORTED. ACM does not provide managed renewal for imported certificates. For more information about the differences between certificates that you import and those that ACM provides, see Importing Certificates in the AWS Certificate Manager User Guide. - */ - Type?: CertificateType; - /** - * Contains information about the status of ACM's managed renewal for the certificate. This field exists only when the certificate type is AMAZON_ISSUED. - */ - RenewalSummary?: RenewalSummary; - } - export type CertificateStatus = "PENDING_VALIDATION"|"ISSUED"|"INACTIVE"|"EXPIRED"|"VALIDATION_TIMED_OUT"|"REVOKED"|"FAILED"|string; - export type CertificateStatuses = CertificateStatus[]; - export interface CertificateSummary { - /** - * Amazon Resource Name (ARN) of the certificate. This is of the form: arn:aws:acm:region:123456789012:certificate/12345678-1234-1234-1234-123456789012 For more information about ARNs, see Amazon Resource Names (ARNs) and AWS Service Namespaces. - */ - CertificateArn?: Arn; - /** - * Fully qualified domain name (FQDN), such as www.example.com or example.com, for the certificate. - */ - DomainName?: DomainNameString; - } - export type CertificateSummaryList = CertificateSummary[]; - export type CertificateType = "IMPORTED"|"AMAZON_ISSUED"|string; - export interface DeleteCertificateRequest { - /** - * String that contains the ARN of the ACM Certificate to be deleted. This must be of the form: arn:aws:acm:region:123456789012:certificate/12345678-1234-1234-1234-123456789012 For more information about ARNs, see Amazon Resource Names (ARNs) and AWS Service Namespaces. - */ - CertificateArn: Arn; - } - export interface DescribeCertificateRequest { - /** - * The Amazon Resource Name (ARN) of the ACM Certificate. The ARN must have the following form: arn:aws:acm:region:123456789012:certificate/12345678-1234-1234-1234-123456789012 For more information about ARNs, see Amazon Resource Names (ARNs) and AWS Service Namespaces. - */ - CertificateArn: Arn; - } - export interface DescribeCertificateResponse { - /** - * Metadata about an ACM certificate. - */ - Certificate?: CertificateDetail; - } - export type DomainList = DomainNameString[]; - export type DomainNameString = string; - export type DomainStatus = "PENDING_VALIDATION"|"SUCCESS"|"FAILED"|string; - export interface DomainValidation { - /** - * A fully qualified domain name (FQDN) in the certificate. For example, www.example.com or example.com. - */ - DomainName: DomainNameString; - /** - * A list of email addresses that ACM used to send domain validation emails. - */ - ValidationEmails?: ValidationEmailList; - /** - * The domain name that ACM used to send domain validation emails. - */ - ValidationDomain?: DomainNameString; - /** - * The validation status of the domain name. - */ - ValidationStatus?: DomainStatus; - } - export type DomainValidationList = DomainValidation[]; - export interface DomainValidationOption { - /** - * A fully qualified domain name (FQDN) in the certificate request. - */ - DomainName: DomainNameString; - /** - * The domain name that you want ACM to use to send you validation emails. This domain name is the suffix of the email addresses that you want ACM to use. This must be the same as the DomainName value or a superdomain of the DomainName value. For example, if you request a certificate for testing.example.com, you can specify example.com for this value. In that case, ACM sends domain validation emails to the following five addresses: admin@example.com administrator@example.com hostmaster@example.com postmaster@example.com webmaster@example.com - */ - ValidationDomain: DomainNameString; - } - export type DomainValidationOptionList = DomainValidationOption[]; - export type FailureReason = "NO_AVAILABLE_CONTACTS"|"ADDITIONAL_VERIFICATION_REQUIRED"|"DOMAIN_NOT_ALLOWED"|"INVALID_PUBLIC_DOMAIN"|"OTHER"|string; - export interface GetCertificateRequest { - /** - * String that contains a certificate ARN in the following format: arn:aws:acm:region:123456789012:certificate/12345678-1234-1234-1234-123456789012 For more information about ARNs, see Amazon Resource Names (ARNs) and AWS Service Namespaces. - */ - CertificateArn: Arn; - } - export interface GetCertificateResponse { - /** - * String that contains the ACM Certificate represented by the ARN specified at input. - */ - Certificate?: CertificateBody; - /** - * The certificate chain that contains the root certificate issued by the certificate authority (CA). - */ - CertificateChain?: CertificateChain; - } - export type IdempotencyToken = string; - export interface ImportCertificateRequest { - /** - * The Amazon Resource Name (ARN) of an imported certificate to replace. To import a new certificate, omit this field. - */ - CertificateArn?: Arn; - /** - * The certificate to import. It must meet the following requirements: Must be PEM-encoded. Must contain a 1024-bit or 2048-bit RSA public key. Must be valid at the time of import. You cannot import a certificate before its validity period begins (the certificate's NotBefore date) or after it expires (the certificate's NotAfter date). - */ - Certificate: CertificateBodyBlob; - /** - * The private key that matches the public key in the certificate. It must meet the following requirements: Must be PEM-encoded. Must be unencrypted. You cannot import a private key that is protected by a password or passphrase. - */ - PrivateKey: PrivateKeyBlob; - /** - * The certificate chain. It must be PEM-encoded. - */ - CertificateChain?: CertificateChainBlob; - } - export interface ImportCertificateResponse { - /** - * The Amazon Resource Name (ARN) of the imported certificate. - */ - CertificateArn?: Arn; - } - export type InUseList = String[]; - export type KeyAlgorithm = "RSA_2048"|"RSA_1024"|"EC_prime256v1"|string; - export interface ListCertificatesRequest { - /** - * The status or statuses on which to filter the list of ACM Certificates. - */ - CertificateStatuses?: CertificateStatuses; - /** - * Use this parameter only when paginating results and only in a subsequent request after you receive a response with truncated results. Set it to the value of NextToken from the response you just received. - */ - NextToken?: NextToken; - /** - * Use this parameter when paginating results to specify the maximum number of items to return in the response. If additional items exist beyond the number you specify, the NextToken element is sent in the response. Use this NextToken value in a subsequent request to retrieve additional items. - */ - MaxItems?: MaxItems; - } - export interface ListCertificatesResponse { - /** - * When the list is truncated, this value is present and contains the value to use for the NextToken parameter in a subsequent pagination request. - */ - NextToken?: NextToken; - /** - * A list of ACM Certificates. - */ - CertificateSummaryList?: CertificateSummaryList; - } - export interface ListTagsForCertificateRequest { - /** - * String that contains the ARN of the ACM Certificate for which you want to list the tags. This has the following form: arn:aws:acm:region:123456789012:certificate/12345678-1234-1234-1234-123456789012 For more information about ARNs, see Amazon Resource Names (ARNs) and AWS Service Namespaces. - */ - CertificateArn: Arn; - } - export interface ListTagsForCertificateResponse { - /** - * The key-value pairs that define the applied tags. - */ - Tags?: TagList; - } - export type MaxItems = number; - export type NextToken = string; - export type PrivateKeyBlob = Buffer|Uint8Array|Blob|string; - export interface RemoveTagsFromCertificateRequest { - /** - * String that contains the ARN of the ACM Certificate with one or more tags that you want to remove. This must be of the form: arn:aws:acm:region:123456789012:certificate/12345678-1234-1234-1234-123456789012 For more information about ARNs, see Amazon Resource Names (ARNs) and AWS Service Namespaces. - */ - CertificateArn: Arn; - /** - * The key-value pair that defines the tag to remove. - */ - Tags: TagList; - } - export type RenewalStatus = "PENDING_AUTO_RENEWAL"|"PENDING_VALIDATION"|"SUCCESS"|"FAILED"|string; - export interface RenewalSummary { - /** - * The status of ACM's managed renewal of the certificate. - */ - RenewalStatus: RenewalStatus; - /** - * Contains information about the validation of each domain name in the certificate, as it pertains to ACM's managed renewal. This is different from the initial validation that occurs as a result of the RequestCertificate request. This field exists only when the certificate type is AMAZON_ISSUED. - */ - DomainValidationOptions: DomainValidationList; - } - export interface RequestCertificateRequest { - /** - * Fully qualified domain name (FQDN), such as www.example.com, of the site that you want to secure with an ACM Certificate. Use an asterisk (*) to create a wildcard certificate that protects several sites in the same domain. For example, *.example.com protects www.example.com, site.example.com, and images.example.com. The maximum length of a DNS name is 253 octets. The name is made up of multiple labels separated by periods. No label can be longer than 63 octets. Consider the following examples: (63 octets).(63 octets).(63 octets).(61 octets) is legal because the total length is 253 octets (63+1+63+1+63+1+61) and no label exceeds 63 octets. (64 octets).(63 octets).(63 octets).(61 octets) is not legal because the total length exceeds 253 octets (64+1+63+1+63+1+61) and the first label exceeds 63 octets. (63 octets).(63 octets).(63 octets).(62 octets) is not legal because the total length of the DNS name (63+1+63+1+63+1+62) exceeds 253 octets. - */ - DomainName: DomainNameString; - /** - * Additional FQDNs to be included in the Subject Alternative Name extension of the ACM Certificate. For example, add the name www.example.net to a certificate for which the DomainName field is www.example.com if users can reach your site by using either name. The maximum number of domain names that you can add to an ACM Certificate is 100. However, the initial limit is 10 domain names. If you need more than 10 names, you must request a limit increase. For more information, see Limits. - */ - SubjectAlternativeNames?: DomainList; - /** - * Customer chosen string that can be used to distinguish between calls to RequestCertificate. Idempotency tokens time out after one hour. Therefore, if you call RequestCertificate multiple times with the same idempotency token within one hour, ACM recognizes that you are requesting only one certificate and will issue only one. If you change the idempotency token for each call, ACM recognizes that you are requesting multiple certificates. - */ - IdempotencyToken?: IdempotencyToken; - /** - * The domain name that you want ACM to use to send you emails to validate your ownership of the domain. - */ - DomainValidationOptions?: DomainValidationOptionList; - } - export interface RequestCertificateResponse { - /** - * String that contains the ARN of the issued certificate. This must be of the form: arn:aws:acm:us-east-1:123456789012:certificate/12345678-1234-1234-1234-123456789012 - */ - CertificateArn?: Arn; - } - export interface ResendValidationEmailRequest { - /** - * String that contains the ARN of the requested certificate. The certificate ARN is generated and returned by the RequestCertificate action as soon as the request is made. By default, using this parameter causes email to be sent to all top-level domains you specified in the certificate request. The ARN must be of the form: arn:aws:acm:us-east-1:123456789012:certificate/12345678-1234-1234-1234-123456789012 - */ - CertificateArn: Arn; - /** - * The fully qualified domain name (FQDN) of the certificate that needs to be validated. - */ - Domain: DomainNameString; - /** - * The base validation domain that will act as the suffix of the email addresses that are used to send the emails. This must be the same as the Domain value or a superdomain of the Domain value. For example, if you requested a certificate for site.subdomain.example.com and specify a ValidationDomain of subdomain.example.com, ACM sends email to the domain registrant, technical contact, and administrative contact in WHOIS and the following five addresses: admin@subdomain.example.com administrator@subdomain.example.com hostmaster@subdomain.example.com postmaster@subdomain.example.com webmaster@subdomain.example.com - */ - ValidationDomain: DomainNameString; - } - export type RevocationReason = "UNSPECIFIED"|"KEY_COMPROMISE"|"CA_COMPROMISE"|"AFFILIATION_CHANGED"|"SUPERCEDED"|"CESSATION_OF_OPERATION"|"CERTIFICATE_HOLD"|"REMOVE_FROM_CRL"|"PRIVILEGE_WITHDRAWN"|"A_A_COMPROMISE"|string; - export type String = string; - export type TStamp = Date; - export interface Tag { - /** - * The key of the tag. - */ - Key: TagKey; - /** - * The value of the tag. - */ - Value?: TagValue; - } - export type TagKey = string; - export type TagList = Tag[]; - export type TagValue = string; - export type ValidationEmailList = String[]; - /** - * A string in YYYY-MM-DD format that represents the latest possible API version that can be used in this service. Specify 'latest' to use the latest possible version. - */ - export type apiVersion = "2015-12-08"|"latest"|string; - export interface ClientApiVersions { - /** - * A string in YYYY-MM-DD format that represents the latest possible API version that can be used in this service. Specify 'latest' to use the latest possible version. - */ - apiVersion?: apiVersion; - } - export type ClientConfiguration = ServiceConfigurationOptions & ClientApiVersions; - /** - * Contains interfaces for use with the ACM client. - */ - export import Types = ACM; -} -export = ACM; diff --git a/workshops/monte-carlo-on-ec2-spot-fleet/src/web/node_modules/aws-sdk/clients/acm.js b/workshops/monte-carlo-on-ec2-spot-fleet/src/web/node_modules/aws-sdk/clients/acm.js deleted file mode 100644 index 652ac2cd..00000000 --- a/workshops/monte-carlo-on-ec2-spot-fleet/src/web/node_modules/aws-sdk/clients/acm.js +++ /dev/null @@ -1,18 +0,0 @@ -require('../lib/node_loader'); -var AWS = require('../lib/core'); -var Service = AWS.Service; -var apiLoader = AWS.apiLoader; - -apiLoader.services['acm'] = {}; -AWS.ACM = Service.defineService('acm', ['2015-12-08']); -Object.defineProperty(apiLoader.services['acm'], '2015-12-08', { - get: function get() { - var model = require('../apis/acm-2015-12-08.min.json'); - model.paginators = require('../apis/acm-2015-12-08.paginators.json').pagination; - return model; - }, - enumerable: true, - configurable: true -}); - -module.exports = AWS.ACM; diff --git a/workshops/monte-carlo-on-ec2-spot-fleet/src/web/node_modules/aws-sdk/clients/all.d.ts b/workshops/monte-carlo-on-ec2-spot-fleet/src/web/node_modules/aws-sdk/clients/all.d.ts deleted file mode 100644 index a4176afe..00000000 --- a/workshops/monte-carlo-on-ec2-spot-fleet/src/web/node_modules/aws-sdk/clients/all.d.ts +++ /dev/null @@ -1,106 +0,0 @@ -export import ACM = require('./acm'); -export import APIGateway = require('./apigateway'); -export import ApplicationAutoScaling = require('./applicationautoscaling'); -export import AppStream = require('./appstream'); -export import AutoScaling = require('./autoscaling'); -export import Batch = require('./batch'); -export import Budgets = require('./budgets'); -export import CloudDirectory = require('./clouddirectory'); -export import CloudFormation = require('./cloudformation'); -export import CloudFront = require('./cloudfront'); -export import CloudHSM = require('./cloudhsm'); -export import CloudSearch = require('./cloudsearch'); -export import CloudSearchDomain = require('./cloudsearchdomain'); -export import CloudTrail = require('./cloudtrail'); -export import CloudWatch = require('./cloudwatch'); -export import CloudWatchEvents = require('./cloudwatchevents'); -export import CloudWatchLogs = require('./cloudwatchlogs'); -export import CodeBuild = require('./codebuild'); -export import CodeCommit = require('./codecommit'); -export import CodeDeploy = require('./codedeploy'); -export import CodePipeline = require('./codepipeline'); -export import CognitoIdentity = require('./cognitoidentity'); -export import CognitoIdentityServiceProvider = require('./cognitoidentityserviceprovider'); -export import CognitoSync = require('./cognitosync'); -export import ConfigService = require('./configservice'); -export import CUR = require('./cur'); -export import DataPipeline = require('./datapipeline'); -export import DeviceFarm = require('./devicefarm'); -export import DirectConnect = require('./directconnect'); -export import DirectoryService = require('./directoryservice'); -export import Discovery = require('./discovery'); -export import DMS = require('./dms'); -export import DynamoDB = require('./dynamodb'); -export import DynamoDBStreams = require('./dynamodbstreams'); -export import EC2 = require('./ec2'); -export import ECR = require('./ecr'); -export import ECS = require('./ecs'); -export import EFS = require('./efs'); -export import ElastiCache = require('./elasticache'); -export import ElasticBeanstalk = require('./elasticbeanstalk'); -export import ELB = require('./elb'); -export import ELBv2 = require('./elbv2'); -export import EMR = require('./emr'); -export import ES = require('./es'); -export import ElasticTranscoder = require('./elastictranscoder'); -export import Firehose = require('./firehose'); -export import GameLift = require('./gamelift'); -export import Glacier = require('./glacier'); -export import Health = require('./health'); -export import IAM = require('./iam'); -export import ImportExport = require('./importexport'); -export import Inspector = require('./inspector'); -export import Iot = require('./iot'); -export import IotData = require('./iotdata'); -export import Kinesis = require('./kinesis'); -export import KinesisAnalytics = require('./kinesisanalytics'); -export import KMS = require('./kms'); -export import Lambda = require('./lambda'); -export import LexRuntime = require('./lexruntime'); -export import Lightsail = require('./lightsail'); -export import MachineLearning = require('./machinelearning'); -export import MarketplaceCommerceAnalytics = require('./marketplacecommerceanalytics'); -export import MarketplaceMetering = require('./marketplacemetering'); -export import MTurk = require('./mturk'); -export import MobileAnalytics = require('./mobileanalytics'); -export import OpsWorks = require('./opsworks'); -export import OpsWorksCM = require('./opsworkscm'); -export import Organizations = require('./organizations'); -export import Pinpoint = require('./pinpoint'); -export import Polly = require('./polly'); -export import RDS = require('./rds'); -export import Redshift = require('./redshift'); -export import Rekognition = require('./rekognition'); -export import ResourceGroupsTaggingAPI = require('./resourcegroupstaggingapi'); -export import Route53 = require('./route53'); -export import Route53Domains = require('./route53domains'); -export import S3 = require('./s3'); -export import ServiceCatalog = require('./servicecatalog'); -export import SES = require('./ses'); -export import Shield = require('./shield'); -export import SimpleDB = require('./simpledb'); -export import SMS = require('./sms'); -export import Snowball = require('./snowball'); -export import SNS = require('./sns'); -export import SQS = require('./sqs'); -export import SSM = require('./ssm'); -export import StorageGateway = require('./storagegateway'); -export import StepFunctions = require('./stepfunctions'); -export import STS = require('./sts'); -export import Support = require('./support'); -export import SWF = require('./swf'); -export import XRay = require('./xray'); -export import WAF = require('./waf'); -export import WAFRegional = require('./wafregional'); -export import WorkDocs = require('./workdocs'); -export import WorkSpaces = require('./workspaces'); -export import CodeStar = require('./codestar'); -export import LexModelBuildingService = require('./lexmodelbuildingservice'); -export import MarketplaceEntitlementService = require('./marketplaceentitlementservice'); -export import Athena = require('./athena'); -export import Greengrass = require('./greengrass'); -export import DAX = require('./dax'); -export import MigrationHub = require('./migrationhub'); -export import CloudHSMV2 = require('./cloudhsmv2'); -export import Glue = require('./glue'); -export import Mobile = require('./mobile'); diff --git a/workshops/monte-carlo-on-ec2-spot-fleet/src/web/node_modules/aws-sdk/clients/all.js b/workshops/monte-carlo-on-ec2-spot-fleet/src/web/node_modules/aws-sdk/clients/all.js deleted file mode 100644 index df101fb7..00000000 --- a/workshops/monte-carlo-on-ec2-spot-fleet/src/web/node_modules/aws-sdk/clients/all.js +++ /dev/null @@ -1,109 +0,0 @@ -require('../lib/node_loader'); -module.exports = { - ACM: require('./acm'), - APIGateway: require('./apigateway'), - ApplicationAutoScaling: require('./applicationautoscaling'), - AppStream: require('./appstream'), - AutoScaling: require('./autoscaling'), - Batch: require('./batch'), - Budgets: require('./budgets'), - CloudDirectory: require('./clouddirectory'), - CloudFormation: require('./cloudformation'), - CloudFront: require('./cloudfront'), - CloudHSM: require('./cloudhsm'), - CloudSearch: require('./cloudsearch'), - CloudSearchDomain: require('./cloudsearchdomain'), - CloudTrail: require('./cloudtrail'), - CloudWatch: require('./cloudwatch'), - CloudWatchEvents: require('./cloudwatchevents'), - CloudWatchLogs: require('./cloudwatchlogs'), - CodeBuild: require('./codebuild'), - CodeCommit: require('./codecommit'), - CodeDeploy: require('./codedeploy'), - CodePipeline: require('./codepipeline'), - CognitoIdentity: require('./cognitoidentity'), - CognitoIdentityServiceProvider: require('./cognitoidentityserviceprovider'), - CognitoSync: require('./cognitosync'), - ConfigService: require('./configservice'), - CUR: require('./cur'), - DataPipeline: require('./datapipeline'), - DeviceFarm: require('./devicefarm'), - DirectConnect: require('./directconnect'), - DirectoryService: require('./directoryservice'), - Discovery: require('./discovery'), - DMS: require('./dms'), - DynamoDB: require('./dynamodb'), - DynamoDBStreams: require('./dynamodbstreams'), - EC2: require('./ec2'), - ECR: require('./ecr'), - ECS: require('./ecs'), - EFS: require('./efs'), - ElastiCache: require('./elasticache'), - ElasticBeanstalk: require('./elasticbeanstalk'), - ELB: require('./elb'), - ELBv2: require('./elbv2'), - EMR: require('./emr'), - ES: require('./es'), - ElasticTranscoder: require('./elastictranscoder'), - Firehose: require('./firehose'), - GameLift: require('./gamelift'), - Glacier: require('./glacier'), - Health: require('./health'), - IAM: require('./iam'), - ImportExport: require('./importexport'), - Inspector: require('./inspector'), - Iot: require('./iot'), - IotData: require('./iotdata'), - Kinesis: require('./kinesis'), - KinesisAnalytics: require('./kinesisanalytics'), - KMS: require('./kms'), - Lambda: require('./lambda'), - LexRuntime: require('./lexruntime'), - Lightsail: require('./lightsail'), - MachineLearning: require('./machinelearning'), - MarketplaceCommerceAnalytics: require('./marketplacecommerceanalytics'), - MarketplaceMetering: require('./marketplacemetering'), - MTurk: require('./mturk'), - MobileAnalytics: require('./mobileanalytics'), - OpsWorks: require('./opsworks'), - OpsWorksCM: require('./opsworkscm'), - Organizations: require('./organizations'), - Pinpoint: require('./pinpoint'), - Polly: require('./polly'), - RDS: require('./rds'), - Redshift: require('./redshift'), - Rekognition: require('./rekognition'), - ResourceGroupsTaggingAPI: require('./resourcegroupstaggingapi'), - Route53: require('./route53'), - Route53Domains: require('./route53domains'), - S3: require('./s3'), - ServiceCatalog: require('./servicecatalog'), - SES: require('./ses'), - Shield: require('./shield'), - SimpleDB: require('./simpledb'), - SMS: require('./sms'), - Snowball: require('./snowball'), - SNS: require('./sns'), - SQS: require('./sqs'), - SSM: require('./ssm'), - StorageGateway: require('./storagegateway'), - StepFunctions: require('./stepfunctions'), - STS: require('./sts'), - Support: require('./support'), - SWF: require('./swf'), - XRay: require('./xray'), - WAF: require('./waf'), - WAFRegional: require('./wafregional'), - WorkDocs: require('./workdocs'), - WorkSpaces: require('./workspaces'), - CodeStar: require('./codestar'), - LexModelBuildingService: require('./lexmodelbuildingservice'), - MarketplaceEntitlementService: require('./marketplaceentitlementservice'), - Athena: require('./athena'), - Greengrass: require('./greengrass'), - DAX: require('./dax'), - MigrationHub: require('./migrationhub'), - CloudHSMV2: require('./cloudhsmv2'), - Glue: require('./glue'), - Mobile: require('./mobile') -}; \ No newline at end of file diff --git a/workshops/monte-carlo-on-ec2-spot-fleet/src/web/node_modules/aws-sdk/clients/apigateway.d.ts b/workshops/monte-carlo-on-ec2-spot-fleet/src/web/node_modules/aws-sdk/clients/apigateway.d.ts deleted file mode 100644 index 9642379c..00000000 --- a/workshops/monte-carlo-on-ec2-spot-fleet/src/web/node_modules/aws-sdk/clients/apigateway.d.ts +++ /dev/null @@ -1,3650 +0,0 @@ -import {Request} from '../lib/request'; -import {Response} from '../lib/response'; -import {AWSError} from '../lib/error'; -import {Service} from '../lib/service'; -import {ServiceConfigurationOptions} from '../lib/service'; -import {ConfigBase as Config} from '../lib/config'; -interface Blob {} -declare class APIGateway extends Service { - /** - * Constructs a service object. This object has one method for each API operation. - */ - constructor(options?: APIGateway.Types.ClientConfiguration) - config: Config & APIGateway.Types.ClientConfiguration; - /** - * Create an ApiKey resource. AWS CLI - */ - createApiKey(params: APIGateway.Types.CreateApiKeyRequest, callback?: (err: AWSError, data: APIGateway.Types.ApiKey) => void): Request; - /** - * Create an ApiKey resource. AWS CLI - */ - createApiKey(callback?: (err: AWSError, data: APIGateway.Types.ApiKey) => void): Request; - /** - * Adds a new Authorizer resource to an existing RestApi resource. AWS CLI - */ - createAuthorizer(params: APIGateway.Types.CreateAuthorizerRequest, callback?: (err: AWSError, data: APIGateway.Types.Authorizer) => void): Request; - /** - * Adds a new Authorizer resource to an existing RestApi resource. AWS CLI - */ - createAuthorizer(callback?: (err: AWSError, data: APIGateway.Types.Authorizer) => void): Request; - /** - * Creates a new BasePathMapping resource. - */ - createBasePathMapping(params: APIGateway.Types.CreateBasePathMappingRequest, callback?: (err: AWSError, data: APIGateway.Types.BasePathMapping) => void): Request; - /** - * Creates a new BasePathMapping resource. - */ - createBasePathMapping(callback?: (err: AWSError, data: APIGateway.Types.BasePathMapping) => void): Request; - /** - * Creates a Deployment resource, which makes a specified RestApi callable over the internet. - */ - createDeployment(params: APIGateway.Types.CreateDeploymentRequest, callback?: (err: AWSError, data: APIGateway.Types.Deployment) => void): Request; - /** - * Creates a Deployment resource, which makes a specified RestApi callable over the internet. - */ - createDeployment(callback?: (err: AWSError, data: APIGateway.Types.Deployment) => void): Request; - /** - * - */ - createDocumentationPart(params: APIGateway.Types.CreateDocumentationPartRequest, callback?: (err: AWSError, data: APIGateway.Types.DocumentationPart) => void): Request; - /** - * - */ - createDocumentationPart(callback?: (err: AWSError, data: APIGateway.Types.DocumentationPart) => void): Request; - /** - * - */ - createDocumentationVersion(params: APIGateway.Types.CreateDocumentationVersionRequest, callback?: (err: AWSError, data: APIGateway.Types.DocumentationVersion) => void): Request; - /** - * - */ - createDocumentationVersion(callback?: (err: AWSError, data: APIGateway.Types.DocumentationVersion) => void): Request; - /** - * Creates a new domain name. - */ - createDomainName(params: APIGateway.Types.CreateDomainNameRequest, callback?: (err: AWSError, data: APIGateway.Types.DomainName) => void): Request; - /** - * Creates a new domain name. - */ - createDomainName(callback?: (err: AWSError, data: APIGateway.Types.DomainName) => void): Request; - /** - * Adds a new Model resource to an existing RestApi resource. - */ - createModel(params: APIGateway.Types.CreateModelRequest, callback?: (err: AWSError, data: APIGateway.Types.Model) => void): Request; - /** - * Adds a new Model resource to an existing RestApi resource. - */ - createModel(callback?: (err: AWSError, data: APIGateway.Types.Model) => void): Request; - /** - * Creates a ReqeustValidator of a given RestApi. - */ - createRequestValidator(params: APIGateway.Types.CreateRequestValidatorRequest, callback?: (err: AWSError, data: APIGateway.Types.RequestValidator) => void): Request; - /** - * Creates a ReqeustValidator of a given RestApi. - */ - createRequestValidator(callback?: (err: AWSError, data: APIGateway.Types.RequestValidator) => void): Request; - /** - * Creates a Resource resource. - */ - createResource(params: APIGateway.Types.CreateResourceRequest, callback?: (err: AWSError, data: APIGateway.Types.Resource) => void): Request; - /** - * Creates a Resource resource. - */ - createResource(callback?: (err: AWSError, data: APIGateway.Types.Resource) => void): Request; - /** - * Creates a new RestApi resource. - */ - createRestApi(params: APIGateway.Types.CreateRestApiRequest, callback?: (err: AWSError, data: APIGateway.Types.RestApi) => void): Request; - /** - * Creates a new RestApi resource. - */ - createRestApi(callback?: (err: AWSError, data: APIGateway.Types.RestApi) => void): Request; - /** - * Creates a new Stage resource that references a pre-existing Deployment for the API. - */ - createStage(params: APIGateway.Types.CreateStageRequest, callback?: (err: AWSError, data: APIGateway.Types.Stage) => void): Request; - /** - * Creates a new Stage resource that references a pre-existing Deployment for the API. - */ - createStage(callback?: (err: AWSError, data: APIGateway.Types.Stage) => void): Request; - /** - * Creates a usage plan with the throttle and quota limits, as well as the associated API stages, specified in the payload. - */ - createUsagePlan(params: APIGateway.Types.CreateUsagePlanRequest, callback?: (err: AWSError, data: APIGateway.Types.UsagePlan) => void): Request; - /** - * Creates a usage plan with the throttle and quota limits, as well as the associated API stages, specified in the payload. - */ - createUsagePlan(callback?: (err: AWSError, data: APIGateway.Types.UsagePlan) => void): Request; - /** - * Creates a usage plan key for adding an existing API key to a usage plan. - */ - createUsagePlanKey(params: APIGateway.Types.CreateUsagePlanKeyRequest, callback?: (err: AWSError, data: APIGateway.Types.UsagePlanKey) => void): Request; - /** - * Creates a usage plan key for adding an existing API key to a usage plan. - */ - createUsagePlanKey(callback?: (err: AWSError, data: APIGateway.Types.UsagePlanKey) => void): Request; - /** - * Deletes the ApiKey resource. - */ - deleteApiKey(params: APIGateway.Types.DeleteApiKeyRequest, callback?: (err: AWSError, data: {}) => void): Request<{}, AWSError>; - /** - * Deletes the ApiKey resource. - */ - deleteApiKey(callback?: (err: AWSError, data: {}) => void): Request<{}, AWSError>; - /** - * Deletes an existing Authorizer resource. AWS CLI - */ - deleteAuthorizer(params: APIGateway.Types.DeleteAuthorizerRequest, callback?: (err: AWSError, data: {}) => void): Request<{}, AWSError>; - /** - * Deletes an existing Authorizer resource. AWS CLI - */ - deleteAuthorizer(callback?: (err: AWSError, data: {}) => void): Request<{}, AWSError>; - /** - * Deletes the BasePathMapping resource. - */ - deleteBasePathMapping(params: APIGateway.Types.DeleteBasePathMappingRequest, callback?: (err: AWSError, data: {}) => void): Request<{}, AWSError>; - /** - * Deletes the BasePathMapping resource. - */ - deleteBasePathMapping(callback?: (err: AWSError, data: {}) => void): Request<{}, AWSError>; - /** - * Deletes the ClientCertificate resource. - */ - deleteClientCertificate(params: APIGateway.Types.DeleteClientCertificateRequest, callback?: (err: AWSError, data: {}) => void): Request<{}, AWSError>; - /** - * Deletes the ClientCertificate resource. - */ - deleteClientCertificate(callback?: (err: AWSError, data: {}) => void): Request<{}, AWSError>; - /** - * Deletes a Deployment resource. Deleting a deployment will only succeed if there are no Stage resources associated with it. - */ - deleteDeployment(params: APIGateway.Types.DeleteDeploymentRequest, callback?: (err: AWSError, data: {}) => void): Request<{}, AWSError>; - /** - * Deletes a Deployment resource. Deleting a deployment will only succeed if there are no Stage resources associated with it. - */ - deleteDeployment(callback?: (err: AWSError, data: {}) => void): Request<{}, AWSError>; - /** - * - */ - deleteDocumentationPart(params: APIGateway.Types.DeleteDocumentationPartRequest, callback?: (err: AWSError, data: {}) => void): Request<{}, AWSError>; - /** - * - */ - deleteDocumentationPart(callback?: (err: AWSError, data: {}) => void): Request<{}, AWSError>; - /** - * - */ - deleteDocumentationVersion(params: APIGateway.Types.DeleteDocumentationVersionRequest, callback?: (err: AWSError, data: {}) => void): Request<{}, AWSError>; - /** - * - */ - deleteDocumentationVersion(callback?: (err: AWSError, data: {}) => void): Request<{}, AWSError>; - /** - * Deletes the DomainName resource. - */ - deleteDomainName(params: APIGateway.Types.DeleteDomainNameRequest, callback?: (err: AWSError, data: {}) => void): Request<{}, AWSError>; - /** - * Deletes the DomainName resource. - */ - deleteDomainName(callback?: (err: AWSError, data: {}) => void): Request<{}, AWSError>; - /** - * Clears any customization of a GatewayResponse of a specified response type on the given RestApi and resets it with the default settings. - */ - deleteGatewayResponse(params: APIGateway.Types.DeleteGatewayResponseRequest, callback?: (err: AWSError, data: {}) => void): Request<{}, AWSError>; - /** - * Clears any customization of a GatewayResponse of a specified response type on the given RestApi and resets it with the default settings. - */ - deleteGatewayResponse(callback?: (err: AWSError, data: {}) => void): Request<{}, AWSError>; - /** - * Represents a delete integration. - */ - deleteIntegration(params: APIGateway.Types.DeleteIntegrationRequest, callback?: (err: AWSError, data: {}) => void): Request<{}, AWSError>; - /** - * Represents a delete integration. - */ - deleteIntegration(callback?: (err: AWSError, data: {}) => void): Request<{}, AWSError>; - /** - * Represents a delete integration response. - */ - deleteIntegrationResponse(params: APIGateway.Types.DeleteIntegrationResponseRequest, callback?: (err: AWSError, data: {}) => void): Request<{}, AWSError>; - /** - * Represents a delete integration response. - */ - deleteIntegrationResponse(callback?: (err: AWSError, data: {}) => void): Request<{}, AWSError>; - /** - * Deletes an existing Method resource. - */ - deleteMethod(params: APIGateway.Types.DeleteMethodRequest, callback?: (err: AWSError, data: {}) => void): Request<{}, AWSError>; - /** - * Deletes an existing Method resource. - */ - deleteMethod(callback?: (err: AWSError, data: {}) => void): Request<{}, AWSError>; - /** - * Deletes an existing MethodResponse resource. - */ - deleteMethodResponse(params: APIGateway.Types.DeleteMethodResponseRequest, callback?: (err: AWSError, data: {}) => void): Request<{}, AWSError>; - /** - * Deletes an existing MethodResponse resource. - */ - deleteMethodResponse(callback?: (err: AWSError, data: {}) => void): Request<{}, AWSError>; - /** - * Deletes a model. - */ - deleteModel(params: APIGateway.Types.DeleteModelRequest, callback?: (err: AWSError, data: {}) => void): Request<{}, AWSError>; - /** - * Deletes a model. - */ - deleteModel(callback?: (err: AWSError, data: {}) => void): Request<{}, AWSError>; - /** - * Deletes a RequestValidator of a given RestApi. - */ - deleteRequestValidator(params: APIGateway.Types.DeleteRequestValidatorRequest, callback?: (err: AWSError, data: {}) => void): Request<{}, AWSError>; - /** - * Deletes a RequestValidator of a given RestApi. - */ - deleteRequestValidator(callback?: (err: AWSError, data: {}) => void): Request<{}, AWSError>; - /** - * Deletes a Resource resource. - */ - deleteResource(params: APIGateway.Types.DeleteResourceRequest, callback?: (err: AWSError, data: {}) => void): Request<{}, AWSError>; - /** - * Deletes a Resource resource. - */ - deleteResource(callback?: (err: AWSError, data: {}) => void): Request<{}, AWSError>; - /** - * Deletes the specified API. - */ - deleteRestApi(params: APIGateway.Types.DeleteRestApiRequest, callback?: (err: AWSError, data: {}) => void): Request<{}, AWSError>; - /** - * Deletes the specified API. - */ - deleteRestApi(callback?: (err: AWSError, data: {}) => void): Request<{}, AWSError>; - /** - * Deletes a Stage resource. - */ - deleteStage(params: APIGateway.Types.DeleteStageRequest, callback?: (err: AWSError, data: {}) => void): Request<{}, AWSError>; - /** - * Deletes a Stage resource. - */ - deleteStage(callback?: (err: AWSError, data: {}) => void): Request<{}, AWSError>; - /** - * Deletes a usage plan of a given plan Id. - */ - deleteUsagePlan(params: APIGateway.Types.DeleteUsagePlanRequest, callback?: (err: AWSError, data: {}) => void): Request<{}, AWSError>; - /** - * Deletes a usage plan of a given plan Id. - */ - deleteUsagePlan(callback?: (err: AWSError, data: {}) => void): Request<{}, AWSError>; - /** - * Deletes a usage plan key and remove the underlying API key from the associated usage plan. - */ - deleteUsagePlanKey(params: APIGateway.Types.DeleteUsagePlanKeyRequest, callback?: (err: AWSError, data: {}) => void): Request<{}, AWSError>; - /** - * Deletes a usage plan key and remove the underlying API key from the associated usage plan. - */ - deleteUsagePlanKey(callback?: (err: AWSError, data: {}) => void): Request<{}, AWSError>; - /** - * Flushes all authorizer cache entries on a stage. - */ - flushStageAuthorizersCache(params: APIGateway.Types.FlushStageAuthorizersCacheRequest, callback?: (err: AWSError, data: {}) => void): Request<{}, AWSError>; - /** - * Flushes all authorizer cache entries on a stage. - */ - flushStageAuthorizersCache(callback?: (err: AWSError, data: {}) => void): Request<{}, AWSError>; - /** - * Flushes a stage's cache. - */ - flushStageCache(params: APIGateway.Types.FlushStageCacheRequest, callback?: (err: AWSError, data: {}) => void): Request<{}, AWSError>; - /** - * Flushes a stage's cache. - */ - flushStageCache(callback?: (err: AWSError, data: {}) => void): Request<{}, AWSError>; - /** - * Generates a ClientCertificate resource. - */ - generateClientCertificate(params: APIGateway.Types.GenerateClientCertificateRequest, callback?: (err: AWSError, data: APIGateway.Types.ClientCertificate) => void): Request; - /** - * Generates a ClientCertificate resource. - */ - generateClientCertificate(callback?: (err: AWSError, data: APIGateway.Types.ClientCertificate) => void): Request; - /** - * Gets information about the current Account resource. - */ - getAccount(params: APIGateway.Types.GetAccountRequest, callback?: (err: AWSError, data: APIGateway.Types.Account) => void): Request; - /** - * Gets information about the current Account resource. - */ - getAccount(callback?: (err: AWSError, data: APIGateway.Types.Account) => void): Request; - /** - * Gets information about the current ApiKey resource. - */ - getApiKey(params: APIGateway.Types.GetApiKeyRequest, callback?: (err: AWSError, data: APIGateway.Types.ApiKey) => void): Request; - /** - * Gets information about the current ApiKey resource. - */ - getApiKey(callback?: (err: AWSError, data: APIGateway.Types.ApiKey) => void): Request; - /** - * Gets information about the current ApiKeys resource. - */ - getApiKeys(params: APIGateway.Types.GetApiKeysRequest, callback?: (err: AWSError, data: APIGateway.Types.ApiKeys) => void): Request; - /** - * Gets information about the current ApiKeys resource. - */ - getApiKeys(callback?: (err: AWSError, data: APIGateway.Types.ApiKeys) => void): Request; - /** - * Describe an existing Authorizer resource. AWS CLI - */ - getAuthorizer(params: APIGateway.Types.GetAuthorizerRequest, callback?: (err: AWSError, data: APIGateway.Types.Authorizer) => void): Request; - /** - * Describe an existing Authorizer resource. AWS CLI - */ - getAuthorizer(callback?: (err: AWSError, data: APIGateway.Types.Authorizer) => void): Request; - /** - * Describe an existing Authorizers resource. AWS CLI - */ - getAuthorizers(params: APIGateway.Types.GetAuthorizersRequest, callback?: (err: AWSError, data: APIGateway.Types.Authorizers) => void): Request; - /** - * Describe an existing Authorizers resource. AWS CLI - */ - getAuthorizers(callback?: (err: AWSError, data: APIGateway.Types.Authorizers) => void): Request; - /** - * Describe a BasePathMapping resource. - */ - getBasePathMapping(params: APIGateway.Types.GetBasePathMappingRequest, callback?: (err: AWSError, data: APIGateway.Types.BasePathMapping) => void): Request; - /** - * Describe a BasePathMapping resource. - */ - getBasePathMapping(callback?: (err: AWSError, data: APIGateway.Types.BasePathMapping) => void): Request; - /** - * Represents a collection of BasePathMapping resources. - */ - getBasePathMappings(params: APIGateway.Types.GetBasePathMappingsRequest, callback?: (err: AWSError, data: APIGateway.Types.BasePathMappings) => void): Request; - /** - * Represents a collection of BasePathMapping resources. - */ - getBasePathMappings(callback?: (err: AWSError, data: APIGateway.Types.BasePathMappings) => void): Request; - /** - * Gets information about the current ClientCertificate resource. - */ - getClientCertificate(params: APIGateway.Types.GetClientCertificateRequest, callback?: (err: AWSError, data: APIGateway.Types.ClientCertificate) => void): Request; - /** - * Gets information about the current ClientCertificate resource. - */ - getClientCertificate(callback?: (err: AWSError, data: APIGateway.Types.ClientCertificate) => void): Request; - /** - * Gets a collection of ClientCertificate resources. - */ - getClientCertificates(params: APIGateway.Types.GetClientCertificatesRequest, callback?: (err: AWSError, data: APIGateway.Types.ClientCertificates) => void): Request; - /** - * Gets a collection of ClientCertificate resources. - */ - getClientCertificates(callback?: (err: AWSError, data: APIGateway.Types.ClientCertificates) => void): Request; - /** - * Gets information about a Deployment resource. - */ - getDeployment(params: APIGateway.Types.GetDeploymentRequest, callback?: (err: AWSError, data: APIGateway.Types.Deployment) => void): Request; - /** - * Gets information about a Deployment resource. - */ - getDeployment(callback?: (err: AWSError, data: APIGateway.Types.Deployment) => void): Request; - /** - * Gets information about a Deployments collection. - */ - getDeployments(params: APIGateway.Types.GetDeploymentsRequest, callback?: (err: AWSError, data: APIGateway.Types.Deployments) => void): Request; - /** - * Gets information about a Deployments collection. - */ - getDeployments(callback?: (err: AWSError, data: APIGateway.Types.Deployments) => void): Request; - /** - * - */ - getDocumentationPart(params: APIGateway.Types.GetDocumentationPartRequest, callback?: (err: AWSError, data: APIGateway.Types.DocumentationPart) => void): Request; - /** - * - */ - getDocumentationPart(callback?: (err: AWSError, data: APIGateway.Types.DocumentationPart) => void): Request; - /** - * - */ - getDocumentationParts(params: APIGateway.Types.GetDocumentationPartsRequest, callback?: (err: AWSError, data: APIGateway.Types.DocumentationParts) => void): Request; - /** - * - */ - getDocumentationParts(callback?: (err: AWSError, data: APIGateway.Types.DocumentationParts) => void): Request; - /** - * - */ - getDocumentationVersion(params: APIGateway.Types.GetDocumentationVersionRequest, callback?: (err: AWSError, data: APIGateway.Types.DocumentationVersion) => void): Request; - /** - * - */ - getDocumentationVersion(callback?: (err: AWSError, data: APIGateway.Types.DocumentationVersion) => void): Request; - /** - * - */ - getDocumentationVersions(params: APIGateway.Types.GetDocumentationVersionsRequest, callback?: (err: AWSError, data: APIGateway.Types.DocumentationVersions) => void): Request; - /** - * - */ - getDocumentationVersions(callback?: (err: AWSError, data: APIGateway.Types.DocumentationVersions) => void): Request; - /** - * Represents a domain name that is contained in a simpler, more intuitive URL that can be called. - */ - getDomainName(params: APIGateway.Types.GetDomainNameRequest, callback?: (err: AWSError, data: APIGateway.Types.DomainName) => void): Request; - /** - * Represents a domain name that is contained in a simpler, more intuitive URL that can be called. - */ - getDomainName(callback?: (err: AWSError, data: APIGateway.Types.DomainName) => void): Request; - /** - * Represents a collection of DomainName resources. - */ - getDomainNames(params: APIGateway.Types.GetDomainNamesRequest, callback?: (err: AWSError, data: APIGateway.Types.DomainNames) => void): Request; - /** - * Represents a collection of DomainName resources. - */ - getDomainNames(callback?: (err: AWSError, data: APIGateway.Types.DomainNames) => void): Request; - /** - * Exports a deployed version of a RestApi in a specified format. - */ - getExport(params: APIGateway.Types.GetExportRequest, callback?: (err: AWSError, data: APIGateway.Types.ExportResponse) => void): Request; - /** - * Exports a deployed version of a RestApi in a specified format. - */ - getExport(callback?: (err: AWSError, data: APIGateway.Types.ExportResponse) => void): Request; - /** - * Gets a GatewayResponse of a specified response type on the given RestApi. - */ - getGatewayResponse(params: APIGateway.Types.GetGatewayResponseRequest, callback?: (err: AWSError, data: APIGateway.Types.GatewayResponse) => void): Request; - /** - * Gets a GatewayResponse of a specified response type on the given RestApi. - */ - getGatewayResponse(callback?: (err: AWSError, data: APIGateway.Types.GatewayResponse) => void): Request; - /** - * Gets the GatewayResponses collection on the given RestApi. If an API developer has not added any definitions for gateway responses, the result will be the Amazon API Gateway-generated default GatewayResponses collection for the supported response types. - */ - getGatewayResponses(params: APIGateway.Types.GetGatewayResponsesRequest, callback?: (err: AWSError, data: APIGateway.Types.GatewayResponses) => void): Request; - /** - * Gets the GatewayResponses collection on the given RestApi. If an API developer has not added any definitions for gateway responses, the result will be the Amazon API Gateway-generated default GatewayResponses collection for the supported response types. - */ - getGatewayResponses(callback?: (err: AWSError, data: APIGateway.Types.GatewayResponses) => void): Request; - /** - * Represents a get integration. - */ - getIntegration(params: APIGateway.Types.GetIntegrationRequest, callback?: (err: AWSError, data: APIGateway.Types.Integration) => void): Request; - /** - * Represents a get integration. - */ - getIntegration(callback?: (err: AWSError, data: APIGateway.Types.Integration) => void): Request; - /** - * Represents a get integration response. - */ - getIntegrationResponse(params: APIGateway.Types.GetIntegrationResponseRequest, callback?: (err: AWSError, data: APIGateway.Types.IntegrationResponse) => void): Request; - /** - * Represents a get integration response. - */ - getIntegrationResponse(callback?: (err: AWSError, data: APIGateway.Types.IntegrationResponse) => void): Request; - /** - * Describe an existing Method resource. - */ - getMethod(params: APIGateway.Types.GetMethodRequest, callback?: (err: AWSError, data: APIGateway.Types.Method) => void): Request; - /** - * Describe an existing Method resource. - */ - getMethod(callback?: (err: AWSError, data: APIGateway.Types.Method) => void): Request; - /** - * Describes a MethodResponse resource. - */ - getMethodResponse(params: APIGateway.Types.GetMethodResponseRequest, callback?: (err: AWSError, data: APIGateway.Types.MethodResponse) => void): Request; - /** - * Describes a MethodResponse resource. - */ - getMethodResponse(callback?: (err: AWSError, data: APIGateway.Types.MethodResponse) => void): Request; - /** - * Describes an existing model defined for a RestApi resource. - */ - getModel(params: APIGateway.Types.GetModelRequest, callback?: (err: AWSError, data: APIGateway.Types.Model) => void): Request; - /** - * Describes an existing model defined for a RestApi resource. - */ - getModel(callback?: (err: AWSError, data: APIGateway.Types.Model) => void): Request; - /** - * Generates a sample mapping template that can be used to transform a payload into the structure of a model. - */ - getModelTemplate(params: APIGateway.Types.GetModelTemplateRequest, callback?: (err: AWSError, data: APIGateway.Types.Template) => void): Request; - /** - * Generates a sample mapping template that can be used to transform a payload into the structure of a model. - */ - getModelTemplate(callback?: (err: AWSError, data: APIGateway.Types.Template) => void): Request; - /** - * Describes existing Models defined for a RestApi resource. - */ - getModels(params: APIGateway.Types.GetModelsRequest, callback?: (err: AWSError, data: APIGateway.Types.Models) => void): Request; - /** - * Describes existing Models defined for a RestApi resource. - */ - getModels(callback?: (err: AWSError, data: APIGateway.Types.Models) => void): Request; - /** - * Gets a RequestValidator of a given RestApi. - */ - getRequestValidator(params: APIGateway.Types.GetRequestValidatorRequest, callback?: (err: AWSError, data: APIGateway.Types.RequestValidator) => void): Request; - /** - * Gets a RequestValidator of a given RestApi. - */ - getRequestValidator(callback?: (err: AWSError, data: APIGateway.Types.RequestValidator) => void): Request; - /** - * Gets the RequestValidators collection of a given RestApi. - */ - getRequestValidators(params: APIGateway.Types.GetRequestValidatorsRequest, callback?: (err: AWSError, data: APIGateway.Types.RequestValidators) => void): Request; - /** - * Gets the RequestValidators collection of a given RestApi. - */ - getRequestValidators(callback?: (err: AWSError, data: APIGateway.Types.RequestValidators) => void): Request; - /** - * Lists information about a resource. - */ - getResource(params: APIGateway.Types.GetResourceRequest, callback?: (err: AWSError, data: APIGateway.Types.Resource) => void): Request; - /** - * Lists information about a resource. - */ - getResource(callback?: (err: AWSError, data: APIGateway.Types.Resource) => void): Request; - /** - * Lists information about a collection of Resource resources. - */ - getResources(params: APIGateway.Types.GetResourcesRequest, callback?: (err: AWSError, data: APIGateway.Types.Resources) => void): Request; - /** - * Lists information about a collection of Resource resources. - */ - getResources(callback?: (err: AWSError, data: APIGateway.Types.Resources) => void): Request; - /** - * Lists the RestApi resource in the collection. - */ - getRestApi(params: APIGateway.Types.GetRestApiRequest, callback?: (err: AWSError, data: APIGateway.Types.RestApi) => void): Request; - /** - * Lists the RestApi resource in the collection. - */ - getRestApi(callback?: (err: AWSError, data: APIGateway.Types.RestApi) => void): Request; - /** - * Lists the RestApis resources for your collection. - */ - getRestApis(params: APIGateway.Types.GetRestApisRequest, callback?: (err: AWSError, data: APIGateway.Types.RestApis) => void): Request; - /** - * Lists the RestApis resources for your collection. - */ - getRestApis(callback?: (err: AWSError, data: APIGateway.Types.RestApis) => void): Request; - /** - * Generates a client SDK for a RestApi and Stage. - */ - getSdk(params: APIGateway.Types.GetSdkRequest, callback?: (err: AWSError, data: APIGateway.Types.SdkResponse) => void): Request; - /** - * Generates a client SDK for a RestApi and Stage. - */ - getSdk(callback?: (err: AWSError, data: APIGateway.Types.SdkResponse) => void): Request; - /** - * - */ - getSdkType(params: APIGateway.Types.GetSdkTypeRequest, callback?: (err: AWSError, data: APIGateway.Types.SdkType) => void): Request; - /** - * - */ - getSdkType(callback?: (err: AWSError, data: APIGateway.Types.SdkType) => void): Request; - /** - * - */ - getSdkTypes(params: APIGateway.Types.GetSdkTypesRequest, callback?: (err: AWSError, data: APIGateway.Types.SdkTypes) => void): Request; - /** - * - */ - getSdkTypes(callback?: (err: AWSError, data: APIGateway.Types.SdkTypes) => void): Request; - /** - * Gets information about a Stage resource. - */ - getStage(params: APIGateway.Types.GetStageRequest, callback?: (err: AWSError, data: APIGateway.Types.Stage) => void): Request; - /** - * Gets information about a Stage resource. - */ - getStage(callback?: (err: AWSError, data: APIGateway.Types.Stage) => void): Request; - /** - * Gets information about one or more Stage resources. - */ - getStages(params: APIGateway.Types.GetStagesRequest, callback?: (err: AWSError, data: APIGateway.Types.Stages) => void): Request; - /** - * Gets information about one or more Stage resources. - */ - getStages(callback?: (err: AWSError, data: APIGateway.Types.Stages) => void): Request; - /** - * Gets the usage data of a usage plan in a specified time interval. - */ - getUsage(params: APIGateway.Types.GetUsageRequest, callback?: (err: AWSError, data: APIGateway.Types.Usage) => void): Request; - /** - * Gets the usage data of a usage plan in a specified time interval. - */ - getUsage(callback?: (err: AWSError, data: APIGateway.Types.Usage) => void): Request; - /** - * Gets a usage plan of a given plan identifier. - */ - getUsagePlan(params: APIGateway.Types.GetUsagePlanRequest, callback?: (err: AWSError, data: APIGateway.Types.UsagePlan) => void): Request; - /** - * Gets a usage plan of a given plan identifier. - */ - getUsagePlan(callback?: (err: AWSError, data: APIGateway.Types.UsagePlan) => void): Request; - /** - * Gets a usage plan key of a given key identifier. - */ - getUsagePlanKey(params: APIGateway.Types.GetUsagePlanKeyRequest, callback?: (err: AWSError, data: APIGateway.Types.UsagePlanKey) => void): Request; - /** - * Gets a usage plan key of a given key identifier. - */ - getUsagePlanKey(callback?: (err: AWSError, data: APIGateway.Types.UsagePlanKey) => void): Request; - /** - * Gets all the usage plan keys representing the API keys added to a specified usage plan. - */ - getUsagePlanKeys(params: APIGateway.Types.GetUsagePlanKeysRequest, callback?: (err: AWSError, data: APIGateway.Types.UsagePlanKeys) => void): Request; - /** - * Gets all the usage plan keys representing the API keys added to a specified usage plan. - */ - getUsagePlanKeys(callback?: (err: AWSError, data: APIGateway.Types.UsagePlanKeys) => void): Request; - /** - * Gets all the usage plans of the caller's account. - */ - getUsagePlans(params: APIGateway.Types.GetUsagePlansRequest, callback?: (err: AWSError, data: APIGateway.Types.UsagePlans) => void): Request; - /** - * Gets all the usage plans of the caller's account. - */ - getUsagePlans(callback?: (err: AWSError, data: APIGateway.Types.UsagePlans) => void): Request; - /** - * Import API keys from an external source, such as a CSV-formatted file. - */ - importApiKeys(params: APIGateway.Types.ImportApiKeysRequest, callback?: (err: AWSError, data: APIGateway.Types.ApiKeyIds) => void): Request; - /** - * Import API keys from an external source, such as a CSV-formatted file. - */ - importApiKeys(callback?: (err: AWSError, data: APIGateway.Types.ApiKeyIds) => void): Request; - /** - * - */ - importDocumentationParts(params: APIGateway.Types.ImportDocumentationPartsRequest, callback?: (err: AWSError, data: APIGateway.Types.DocumentationPartIds) => void): Request; - /** - * - */ - importDocumentationParts(callback?: (err: AWSError, data: APIGateway.Types.DocumentationPartIds) => void): Request; - /** - * A feature of the Amazon API Gateway control service for creating a new API from an external API definition file. - */ - importRestApi(params: APIGateway.Types.ImportRestApiRequest, callback?: (err: AWSError, data: APIGateway.Types.RestApi) => void): Request; - /** - * A feature of the Amazon API Gateway control service for creating a new API from an external API definition file. - */ - importRestApi(callback?: (err: AWSError, data: APIGateway.Types.RestApi) => void): Request; - /** - * Creates a customization of a GatewayResponse of a specified response type and status code on the given RestApi. - */ - putGatewayResponse(params: APIGateway.Types.PutGatewayResponseRequest, callback?: (err: AWSError, data: APIGateway.Types.GatewayResponse) => void): Request; - /** - * Creates a customization of a GatewayResponse of a specified response type and status code on the given RestApi. - */ - putGatewayResponse(callback?: (err: AWSError, data: APIGateway.Types.GatewayResponse) => void): Request; - /** - * Sets up a method's integration. - */ - putIntegration(params: APIGateway.Types.PutIntegrationRequest, callback?: (err: AWSError, data: APIGateway.Types.Integration) => void): Request; - /** - * Sets up a method's integration. - */ - putIntegration(callback?: (err: AWSError, data: APIGateway.Types.Integration) => void): Request; - /** - * Represents a put integration. - */ - putIntegrationResponse(params: APIGateway.Types.PutIntegrationResponseRequest, callback?: (err: AWSError, data: APIGateway.Types.IntegrationResponse) => void): Request; - /** - * Represents a put integration. - */ - putIntegrationResponse(callback?: (err: AWSError, data: APIGateway.Types.IntegrationResponse) => void): Request; - /** - * Add a method to an existing Resource resource. - */ - putMethod(params: APIGateway.Types.PutMethodRequest, callback?: (err: AWSError, data: APIGateway.Types.Method) => void): Request; - /** - * Add a method to an existing Resource resource. - */ - putMethod(callback?: (err: AWSError, data: APIGateway.Types.Method) => void): Request; - /** - * Adds a MethodResponse to an existing Method resource. - */ - putMethodResponse(params: APIGateway.Types.PutMethodResponseRequest, callback?: (err: AWSError, data: APIGateway.Types.MethodResponse) => void): Request; - /** - * Adds a MethodResponse to an existing Method resource. - */ - putMethodResponse(callback?: (err: AWSError, data: APIGateway.Types.MethodResponse) => void): Request; - /** - * A feature of the Amazon API Gateway control service for updating an existing API with an input of external API definitions. The update can take the form of merging the supplied definition into the existing API or overwriting the existing API. - */ - putRestApi(params: APIGateway.Types.PutRestApiRequest, callback?: (err: AWSError, data: APIGateway.Types.RestApi) => void): Request; - /** - * A feature of the Amazon API Gateway control service for updating an existing API with an input of external API definitions. The update can take the form of merging the supplied definition into the existing API or overwriting the existing API. - */ - putRestApi(callback?: (err: AWSError, data: APIGateway.Types.RestApi) => void): Request; - /** - * Simulate the execution of an Authorizer in your RestApi with headers, parameters, and an incoming request body. Enable custom authorizers - */ - testInvokeAuthorizer(params: APIGateway.Types.TestInvokeAuthorizerRequest, callback?: (err: AWSError, data: APIGateway.Types.TestInvokeAuthorizerResponse) => void): Request; - /** - * Simulate the execution of an Authorizer in your RestApi with headers, parameters, and an incoming request body. Enable custom authorizers - */ - testInvokeAuthorizer(callback?: (err: AWSError, data: APIGateway.Types.TestInvokeAuthorizerResponse) => void): Request; - /** - * Simulate the execution of a Method in your RestApi with headers, parameters, and an incoming request body. - */ - testInvokeMethod(params: APIGateway.Types.TestInvokeMethodRequest, callback?: (err: AWSError, data: APIGateway.Types.TestInvokeMethodResponse) => void): Request; - /** - * Simulate the execution of a Method in your RestApi with headers, parameters, and an incoming request body. - */ - testInvokeMethod(callback?: (err: AWSError, data: APIGateway.Types.TestInvokeMethodResponse) => void): Request; - /** - * Changes information about the current Account resource. - */ - updateAccount(params: APIGateway.Types.UpdateAccountRequest, callback?: (err: AWSError, data: APIGateway.Types.Account) => void): Request; - /** - * Changes information about the current Account resource. - */ - updateAccount(callback?: (err: AWSError, data: APIGateway.Types.Account) => void): Request; - /** - * Changes information about an ApiKey resource. - */ - updateApiKey(params: APIGateway.Types.UpdateApiKeyRequest, callback?: (err: AWSError, data: APIGateway.Types.ApiKey) => void): Request; - /** - * Changes information about an ApiKey resource. - */ - updateApiKey(callback?: (err: AWSError, data: APIGateway.Types.ApiKey) => void): Request; - /** - * Updates an existing Authorizer resource. AWS CLI - */ - updateAuthorizer(params: APIGateway.Types.UpdateAuthorizerRequest, callback?: (err: AWSError, data: APIGateway.Types.Authorizer) => void): Request; - /** - * Updates an existing Authorizer resource. AWS CLI - */ - updateAuthorizer(callback?: (err: AWSError, data: APIGateway.Types.Authorizer) => void): Request; - /** - * Changes information about the BasePathMapping resource. - */ - updateBasePathMapping(params: APIGateway.Types.UpdateBasePathMappingRequest, callback?: (err: AWSError, data: APIGateway.Types.BasePathMapping) => void): Request; - /** - * Changes information about the BasePathMapping resource. - */ - updateBasePathMapping(callback?: (err: AWSError, data: APIGateway.Types.BasePathMapping) => void): Request; - /** - * Changes information about an ClientCertificate resource. - */ - updateClientCertificate(params: APIGateway.Types.UpdateClientCertificateRequest, callback?: (err: AWSError, data: APIGateway.Types.ClientCertificate) => void): Request; - /** - * Changes information about an ClientCertificate resource. - */ - updateClientCertificate(callback?: (err: AWSError, data: APIGateway.Types.ClientCertificate) => void): Request; - /** - * Changes information about a Deployment resource. - */ - updateDeployment(params: APIGateway.Types.UpdateDeploymentRequest, callback?: (err: AWSError, data: APIGateway.Types.Deployment) => void): Request; - /** - * Changes information about a Deployment resource. - */ - updateDeployment(callback?: (err: AWSError, data: APIGateway.Types.Deployment) => void): Request; - /** - * - */ - updateDocumentationPart(params: APIGateway.Types.UpdateDocumentationPartRequest, callback?: (err: AWSError, data: APIGateway.Types.DocumentationPart) => void): Request; - /** - * - */ - updateDocumentationPart(callback?: (err: AWSError, data: APIGateway.Types.DocumentationPart) => void): Request; - /** - * - */ - updateDocumentationVersion(params: APIGateway.Types.UpdateDocumentationVersionRequest, callback?: (err: AWSError, data: APIGateway.Types.DocumentationVersion) => void): Request; - /** - * - */ - updateDocumentationVersion(callback?: (err: AWSError, data: APIGateway.Types.DocumentationVersion) => void): Request; - /** - * Changes information about the DomainName resource. - */ - updateDomainName(params: APIGateway.Types.UpdateDomainNameRequest, callback?: (err: AWSError, data: APIGateway.Types.DomainName) => void): Request; - /** - * Changes information about the DomainName resource. - */ - updateDomainName(callback?: (err: AWSError, data: APIGateway.Types.DomainName) => void): Request; - /** - * Updates a GatewayResponse of a specified response type on the given RestApi. - */ - updateGatewayResponse(params: APIGateway.Types.UpdateGatewayResponseRequest, callback?: (err: AWSError, data: APIGateway.Types.GatewayResponse) => void): Request; - /** - * Updates a GatewayResponse of a specified response type on the given RestApi. - */ - updateGatewayResponse(callback?: (err: AWSError, data: APIGateway.Types.GatewayResponse) => void): Request; - /** - * Represents an update integration. - */ - updateIntegration(params: APIGateway.Types.UpdateIntegrationRequest, callback?: (err: AWSError, data: APIGateway.Types.Integration) => void): Request; - /** - * Represents an update integration. - */ - updateIntegration(callback?: (err: AWSError, data: APIGateway.Types.Integration) => void): Request; - /** - * Represents an update integration response. - */ - updateIntegrationResponse(params: APIGateway.Types.UpdateIntegrationResponseRequest, callback?: (err: AWSError, data: APIGateway.Types.IntegrationResponse) => void): Request; - /** - * Represents an update integration response. - */ - updateIntegrationResponse(callback?: (err: AWSError, data: APIGateway.Types.IntegrationResponse) => void): Request; - /** - * Updates an existing Method resource. - */ - updateMethod(params: APIGateway.Types.UpdateMethodRequest, callback?: (err: AWSError, data: APIGateway.Types.Method) => void): Request; - /** - * Updates an existing Method resource. - */ - updateMethod(callback?: (err: AWSError, data: APIGateway.Types.Method) => void): Request; - /** - * Updates an existing MethodResponse resource. - */ - updateMethodResponse(params: APIGateway.Types.UpdateMethodResponseRequest, callback?: (err: AWSError, data: APIGateway.Types.MethodResponse) => void): Request; - /** - * Updates an existing MethodResponse resource. - */ - updateMethodResponse(callback?: (err: AWSError, data: APIGateway.Types.MethodResponse) => void): Request; - /** - * Changes information about a model. - */ - updateModel(params: APIGateway.Types.UpdateModelRequest, callback?: (err: AWSError, data: APIGateway.Types.Model) => void): Request; - /** - * Changes information about a model. - */ - updateModel(callback?: (err: AWSError, data: APIGateway.Types.Model) => void): Request; - /** - * Updates a RequestValidator of a given RestApi. - */ - updateRequestValidator(params: APIGateway.Types.UpdateRequestValidatorRequest, callback?: (err: AWSError, data: APIGateway.Types.RequestValidator) => void): Request; - /** - * Updates a RequestValidator of a given RestApi. - */ - updateRequestValidator(callback?: (err: AWSError, data: APIGateway.Types.RequestValidator) => void): Request; - /** - * Changes information about a Resource resource. - */ - updateResource(params: APIGateway.Types.UpdateResourceRequest, callback?: (err: AWSError, data: APIGateway.Types.Resource) => void): Request; - /** - * Changes information about a Resource resource. - */ - updateResource(callback?: (err: AWSError, data: APIGateway.Types.Resource) => void): Request; - /** - * Changes information about the specified API. - */ - updateRestApi(params: APIGateway.Types.UpdateRestApiRequest, callback?: (err: AWSError, data: APIGateway.Types.RestApi) => void): Request; - /** - * Changes information about the specified API. - */ - updateRestApi(callback?: (err: AWSError, data: APIGateway.Types.RestApi) => void): Request; - /** - * Changes information about a Stage resource. - */ - updateStage(params: APIGateway.Types.UpdateStageRequest, callback?: (err: AWSError, data: APIGateway.Types.Stage) => void): Request; - /** - * Changes information about a Stage resource. - */ - updateStage(callback?: (err: AWSError, data: APIGateway.Types.Stage) => void): Request; - /** - * Grants a temporary extension to the remaining quota of a usage plan associated with a specified API key. - */ - updateUsage(params: APIGateway.Types.UpdateUsageRequest, callback?: (err: AWSError, data: APIGateway.Types.Usage) => void): Request; - /** - * Grants a temporary extension to the remaining quota of a usage plan associated with a specified API key. - */ - updateUsage(callback?: (err: AWSError, data: APIGateway.Types.Usage) => void): Request; - /** - * Updates a usage plan of a given plan Id. - */ - updateUsagePlan(params: APIGateway.Types.UpdateUsagePlanRequest, callback?: (err: AWSError, data: APIGateway.Types.UsagePlan) => void): Request; - /** - * Updates a usage plan of a given plan Id. - */ - updateUsagePlan(callback?: (err: AWSError, data: APIGateway.Types.UsagePlan) => void): Request; -} -declare namespace APIGateway { - export interface Account { - /** - * The ARN of an Amazon CloudWatch role for the current Account. - */ - cloudwatchRoleArn?: String; - /** - * Specifies the API request limits configured for the current Account. - */ - throttleSettings?: ThrottleSettings; - /** - * A list of features supported for the account. When usage plans are enabled, the features list will include an entry of "UsagePlans". - */ - features?: ListOfString; - /** - * The version of the API keys used for the account. - */ - apiKeyVersion?: String; - } - export interface ApiKey { - /** - * The identifier of the API Key. - */ - id?: String; - /** - * The value of the API Key. - */ - value?: String; - /** - * The name of the API Key. - */ - name?: String; - /** - * An AWS Marketplace customer identifier , when integrating with the AWS SaaS Marketplace. - */ - customerId?: String; - /** - * The description of the API Key. - */ - description?: String; - /** - * Specifies whether the API Key can be used by callers. - */ - enabled?: Boolean; - /** - * The timestamp when the API Key was created. - */ - createdDate?: Timestamp; - /** - * The timestamp when the API Key was last updated. - */ - lastUpdatedDate?: Timestamp; - /** - * A list of Stage resources that are associated with the ApiKey resource. - */ - stageKeys?: ListOfString; - } - export interface ApiKeyIds { - /** - * A list of all the ApiKey identifiers. - */ - ids?: ListOfString; - /** - * A list of warning messages. - */ - warnings?: ListOfString; - } - export interface ApiKeys { - /** - * A list of warning messages logged during the import of API keys when the failOnWarnings option is set to true. - */ - warnings?: ListOfString; - position?: String; - /** - * The current page of elements from this collection. - */ - items?: ListOfApiKey; - } - export type ApiKeysFormat = "csv"|string; - export interface ApiStage { - /** - * API Id of the associated API stage in a usage plan. - */ - apiId?: String; - /** - * API stage name of the associated API stage in a usage plan. - */ - stage?: String; - } - export interface Authorizer { - /** - * The identifier for the authorizer resource. - */ - id?: String; - /** - * [Required] The name of the authorizer. - */ - name?: String; - /** - * [Required] The authorizer type. Valid values are TOKEN for a Lambda function using a single authorization token submitted in a custom header, REQUEST for a Lambda function using incoming request parameters, and COGNITO_USER_POOLS for using an Amazon Cognito user pool. - */ - type?: AuthorizerType; - /** - * A list of the Amazon Cognito user pool ARNs for the COGNITO_USER_POOLS authorizer. Each element is of this format: arn:aws:cognito-idp:{region}:{account_id}:userpool/{user_pool_id}. For a TOKEN or REQUEST authorizer, this is not defined. - */ - providerARNs?: ListOfARNs; - /** - * Optional customer-defined field, used in Swagger imports and exports without functional impact. - */ - authType?: String; - /** - * Specifies the authorizer's Uniform Resource Identifier (URI). For TOKEN or REQUEST authorizers, this must be a well-formed Lambda function URI, for example, arn:aws:apigateway:us-west-2:lambda:path/2015-03-31/functions/arn:aws:lambda:us-west-2:{account_id}:function:{lambda_function_name}/invocations. In general, the URI has this form arn:aws:apigateway:{region}:lambda:path/{service_api}, where {region} is the same as the region hosting the Lambda function, path indicates that the remaining substring in the URI should be treated as the path to the resource, including the initial /. For Lambda functions, this is usually of the form /2015-03-31/functions/[FunctionARN]/invocations. - */ - authorizerUri?: String; - /** - * Specifies the required credentials as an IAM role for Amazon API Gateway to invoke the authorizer. To specify an IAM role for Amazon API Gateway to assume, use the role's Amazon Resource Name (ARN). To use resource-based permissions on the Lambda function, specify null. - */ - authorizerCredentials?: String; - /** - * The identity source for which authorization is requested. For a TOKEN authorizer, this is required and specifies the request header mapping expression for the custom header holding the authorization token submitted by the client. For example, if the token header name is Auth, the header mapping expression is method.request.header.Auth.For the REQUEST authorizer, this is required when authorization caching is enabled. The value is a comma-separated string of one or more mapping expressions of the specified request parameters. For example, if an Auth header, a Name query string parameter are defined as identity sources, this value is method.request.header.Auth, method.request.querystring.Name. These parameters will be used to derive the authorization caching key and to perform runtime validation of the REQUEST authorizer by verifying all of the identity-related request parameters are present, not null and non-empty. Only when this is true does the authorizer invoke the authorizer Lambda function, otherwise, it returns a 401 Unauthorized response without calling the Lambda function. The valid value is a string of comma-separated mapping expressions of the specified request parameters. When the authorization caching is not enabled, this property is optional.For a COGNITO_USER_POOLS authorizer, this property is not used. - */ - identitySource?: String; - /** - * A validation expression for the incoming identity token. For TOKEN authorizers, this value is a regular expression. Amazon API Gateway will match the incoming token from the client against the specified regular expression. It will invoke the authorizer's Lambda function there is a match. Otherwise, it will return a 401 Unauthorized response without calling the Lambda function. The validation expression does not apply to the REQUEST authorizer. - */ - identityValidationExpression?: String; - /** - * The TTL in seconds of cached authorizer results. If it equals 0, authorization caching is disabled. If it is greater than 0, API Gateway will cache authorizer responses. If this field is not set, the default value is 300. The maximum value is 3600, or 1 hour. - */ - authorizerResultTtlInSeconds?: NullableInteger; - } - export type AuthorizerType = "TOKEN"|"REQUEST"|"COGNITO_USER_POOLS"|string; - export interface Authorizers { - position?: String; - /** - * The current page of elements from this collection. - */ - items?: ListOfAuthorizer; - } - export interface BasePathMapping { - /** - * The base path name that callers of the API must provide as part of the URL after the domain name. - */ - basePath?: String; - /** - * The string identifier of the associated RestApi. - */ - restApiId?: String; - /** - * The name of the associated stage. - */ - stage?: String; - } - export interface BasePathMappings { - position?: String; - /** - * The current page of elements from this collection. - */ - items?: ListOfBasePathMapping; - } - export type _Blob = Buffer|Uint8Array|Blob|string; - export type Boolean = boolean; - export type CacheClusterSize = "0.5"|"1.6"|"6.1"|"13.5"|"28.4"|"58.2"|"118"|"237"|string; - export type CacheClusterStatus = "CREATE_IN_PROGRESS"|"AVAILABLE"|"DELETE_IN_PROGRESS"|"NOT_AVAILABLE"|"FLUSH_IN_PROGRESS"|string; - export interface ClientCertificate { - /** - * The identifier of the client certificate. - */ - clientCertificateId?: String; - /** - * The description of the client certificate. - */ - description?: String; - /** - * The PEM-encoded public key of the client certificate, which can be used to configure certificate authentication in the integration endpoint . - */ - pemEncodedCertificate?: String; - /** - * The timestamp when the client certificate was created. - */ - createdDate?: Timestamp; - /** - * The timestamp when the client certificate will expire. - */ - expirationDate?: Timestamp; - } - export interface ClientCertificates { - position?: String; - /** - * The current page of elements from this collection. - */ - items?: ListOfClientCertificate; - } - export type ContentHandlingStrategy = "CONVERT_TO_BINARY"|"CONVERT_TO_TEXT"|string; - export interface CreateApiKeyRequest { - /** - * The name of the ApiKey. - */ - name?: String; - /** - * The description of the ApiKey. - */ - description?: String; - /** - * Specifies whether the ApiKey can be used by callers. - */ - enabled?: Boolean; - /** - * Specifies whether (true) or not (false) the key identifier is distinct from the created API key value. - */ - generateDistinctId?: Boolean; - /** - * Specifies a value of the API key. - */ - value?: String; - /** - * DEPRECATED FOR USAGE PLANS - Specifies stages associated with the API key. - */ - stageKeys?: ListOfStageKeys; - /** - * An AWS Marketplace customer identifier , when integrating with the AWS SaaS Marketplace. - */ - customerId?: String; - } - export interface CreateAuthorizerRequest { - /** - * The string identifier of the associated RestApi. - */ - restApiId: String; - /** - * [Required] The name of the authorizer. - */ - name: String; - /** - * [Required] The authorizer type. Valid values are TOKEN for a Lambda function using a single authorization token submitted in a custom header, REQUEST for a Lambda function using incoming request parameters, and COGNITO_USER_POOLS for using an Amazon Cognito user pool. - */ - type: AuthorizerType; - /** - * A list of the Amazon Cognito user pool ARNs for the COGNITO_USER_POOLS authorizer. Each element is of this format: arn:aws:cognito-idp:{region}:{account_id}:userpool/{user_pool_id}. For a TOKEN or REQUEST authorizer, this is not defined. - */ - providerARNs?: ListOfARNs; - /** - * Optional customer-defined field, used in Swagger imports and exports without functional impact. - */ - authType?: String; - /** - * Specifies the authorizer's Uniform Resource Identifier (URI). For TOKEN or REQUEST authorizers, this must be a well-formed Lambda function URI, for example, arn:aws:apigateway:us-west-2:lambda:path/2015-03-31/functions/arn:aws:lambda:us-west-2:{account_id}:function:{lambda_function_name}/invocations. In general, the URI has this form arn:aws:apigateway:{region}:lambda:path/{service_api}, where {region} is the same as the region hosting the Lambda function, path indicates that the remaining substring in the URI should be treated as the path to the resource, including the initial /. For Lambda functions, this is usually of the form /2015-03-31/functions/[FunctionARN]/invocations. - */ - authorizerUri?: String; - /** - * Specifies the required credentials as an IAM role for Amazon API Gateway to invoke the authorizer. To specify an IAM role for Amazon API Gateway to assume, use the role's Amazon Resource Name (ARN). To use resource-based permissions on the Lambda function, specify null. - */ - authorizerCredentials?: String; - /** - * The identity source for which authorization is requested. For a TOKEN authorizer, this is required and specifies the request header mapping expression for the custom header holding the authorization token submitted by the client. For example, if the token header name is Auth, the header mapping expression is method.request.header.Auth.For the REQUEST authorizer, this is required when authorization caching is enabled. The value is a comma-separated string of one or more mapping expressions of the specified request parameters. For example, if an Auth header, a Name query string parameter are defined as identity sources, this value is method.request.header.Auth, method.request.querystring.Name. These parameters will be used to derive the authorization caching key and to perform runtime validation of the REQUEST authorizer by verifying all of the identity-related request parameters are present, not null and non-empty. Only when this is true does the authorizer invoke the authorizer Lambda function, otherwise, it returns a 401 Unauthorized response without calling the Lambda function. The valid value is a string of comma-separated mapping expressions of the specified request parameters. When the authorization caching is not enabled, this property is optional.For a COGNITO_USER_POOLS authorizer, this property is not used. - */ - identitySource?: String; - /** - * A validation expression for the incoming identity token. For TOKEN authorizers, this value is a regular expression. Amazon API Gateway will match the incoming token from the client against the specified regular expression. It will invoke the authorizer's Lambda function there is a match. Otherwise, it will return a 401 Unauthorized response without calling the Lambda function. The validation expression does not apply to the REQUEST authorizer. - */ - identityValidationExpression?: String; - /** - * The TTL in seconds of cached authorizer results. If it equals 0, authorization caching is disabled. If it is greater than 0, API Gateway will cache authorizer responses. If this field is not set, the default value is 300. The maximum value is 3600, or 1 hour. - */ - authorizerResultTtlInSeconds?: NullableInteger; - } - export interface CreateBasePathMappingRequest { - /** - * The domain name of the BasePathMapping resource to create. - */ - domainName: String; - /** - * The base path name that callers of the API must provide as part of the URL after the domain name. This value must be unique for all of the mappings across a single API. Leave this blank if you do not want callers to specify a base path name after the domain name. - */ - basePath?: String; - /** - * The string identifier of the associated RestApi. - */ - restApiId: String; - /** - * The name of the API's stage that you want to use for this mapping. Leave this blank if you do not want callers to explicitly specify the stage name after any base path name. - */ - stage?: String; - } - export interface CreateDeploymentRequest { - /** - * The string identifier of the associated RestApi. - */ - restApiId: String; - /** - * The name of the Stage resource for the Deployment resource to create. - */ - stageName?: String; - /** - * The description of the Stage resource for the Deployment resource to create. - */ - stageDescription?: String; - /** - * The description for the Deployment resource to create. - */ - description?: String; - /** - * Enables a cache cluster for the Stage resource specified in the input. - */ - cacheClusterEnabled?: NullableBoolean; - /** - * Specifies the cache cluster size for the Stage resource specified in the input, if a cache cluster is enabled. - */ - cacheClusterSize?: CacheClusterSize; - /** - * A map that defines the stage variables for the Stage resource that is associated with the new deployment. Variable names can have alphanumeric and underscore characters, and the values must match [A-Za-z0-9-._~:/?#&=,]+. - */ - variables?: MapOfStringToString; - } - export interface CreateDocumentationPartRequest { - /** - * [Required] The string identifier of the associated RestApi. - */ - restApiId: String; - /** - * [Required] The location of the targeted API entity of the to-be-created documentation part. - */ - location: DocumentationPartLocation; - /** - * [Required] The new documentation content map of the targeted API entity. Enclosed key-value pairs are API-specific, but only Swagger-compliant key-value pairs can be exported and, hence, published. - */ - properties: String; - } - export interface CreateDocumentationVersionRequest { - /** - * [Required] The string identifier of the associated RestApi. - */ - restApiId: String; - /** - * [Required] The version identifier of the new snapshot. - */ - documentationVersion: String; - /** - * The stage name to be associated with the new documentation snapshot. - */ - stageName?: String; - /** - * A description about the new documentation snapshot. - */ - description?: String; - } - export interface CreateDomainNameRequest { - /** - * (Required) The name of the DomainName resource. - */ - domainName: String; - /** - * The user-friendly name of the certificate. - */ - certificateName?: String; - /** - * [Deprecated] The body of the server certificate provided by your certificate authority. - */ - certificateBody?: String; - /** - * [Deprecated] Your certificate's private key. - */ - certificatePrivateKey?: String; - /** - * [Deprecated] The intermediate certificates and optionally the root certificate, one after the other without any blank lines. If you include the root certificate, your certificate chain must start with intermediate certificates and end with the root certificate. Use the intermediate certificates that were provided by your certificate authority. Do not include any intermediaries that are not in the chain of trust path. - */ - certificateChain?: String; - /** - * The reference to an AWS-managed certificate. AWS Certificate Manager is the only supported source. - */ - certificateArn?: String; - } - export interface CreateModelRequest { - /** - * The RestApi identifier under which the Model will be created. - */ - restApiId: String; - /** - * The name of the model. Must be alphanumeric. - */ - name: String; - /** - * The description of the model. - */ - description?: String; - /** - * The schema for the model. For application/json models, this should be JSON-schema draft v4 model. - */ - schema?: String; - /** - * The content-type for the model. - */ - contentType: String; - } - export interface CreateRequestValidatorRequest { - /** - * The string identifier of the associated RestApi. - */ - restApiId: String; - /** - * The name of the to-be-created RequestValidator. - */ - name?: String; - /** - * A Boolean flag to indicate whether to validate request body according to the configured model schema for the method (true) or not (false). - */ - validateRequestBody?: Boolean; - /** - * A Boolean flag to indicate whether to validate request parameters, true, or not false. - */ - validateRequestParameters?: Boolean; - } - export interface CreateResourceRequest { - /** - * The string identifier of the associated RestApi. - */ - restApiId: String; - /** - * The parent resource's identifier. - */ - parentId: String; - /** - * The last path segment for this resource. - */ - pathPart: String; - } - export interface CreateRestApiRequest { - /** - * The name of the RestApi. - */ - name: String; - /** - * The description of the RestApi. - */ - description?: String; - /** - * A version identifier for the API. - */ - version?: String; - /** - * The ID of the RestApi that you want to clone from. - */ - cloneFrom?: String; - /** - * The list of binary media types supported by the RestApi. By default, the RestApi supports only UTF-8-encoded text payloads. - */ - binaryMediaTypes?: ListOfString; - } - export interface CreateStageRequest { - /** - * The string identifier of the associated RestApi. - */ - restApiId: String; - /** - * The name for the Stage resource. - */ - stageName: String; - /** - * The identifier of the Deployment resource for the Stage resource. - */ - deploymentId: String; - /** - * The description of the Stage resource. - */ - description?: String; - /** - * Whether cache clustering is enabled for the stage. - */ - cacheClusterEnabled?: Boolean; - /** - * The stage's cache cluster size. - */ - cacheClusterSize?: CacheClusterSize; - /** - * A map that defines the stage variables for the new Stage resource. Variable names can have alphanumeric and underscore characters, and the values must match [A-Za-z0-9-._~:/?#&=,]+. - */ - variables?: MapOfStringToString; - /** - * The version of the associated API documentation. - */ - documentationVersion?: String; - } - export interface CreateUsagePlanKeyRequest { - /** - * The Id of the UsagePlan resource representing the usage plan containing the to-be-created UsagePlanKey resource representing a plan customer. - */ - usagePlanId: String; - /** - * The identifier of a UsagePlanKey resource for a plan customer. - */ - keyId: String; - /** - * The type of a UsagePlanKey resource for a plan customer. - */ - keyType: String; - } - export interface CreateUsagePlanRequest { - /** - * The name of the usage plan. - */ - name: String; - /** - * The description of the usage plan. - */ - description?: String; - /** - * The associated API stages of the usage plan. - */ - apiStages?: ListOfApiStage; - /** - * The throttling limits of the usage plan. - */ - throttle?: ThrottleSettings; - /** - * The quota of the usage plan. - */ - quota?: QuotaSettings; - } - export interface DeleteApiKeyRequest { - /** - * The identifier of the ApiKey resource to be deleted. - */ - apiKey: String; - } - export interface DeleteAuthorizerRequest { - /** - * The string identifier of the associated RestApi. - */ - restApiId: String; - /** - * The identifier of the Authorizer resource. - */ - authorizerId: String; - } - export interface DeleteBasePathMappingRequest { - /** - * The domain name of the BasePathMapping resource to delete. - */ - domainName: String; - /** - * The base path name of the BasePathMapping resource to delete. - */ - basePath: String; - } - export interface DeleteClientCertificateRequest { - /** - * The identifier of the ClientCertificate resource to be deleted. - */ - clientCertificateId: String; - } - export interface DeleteDeploymentRequest { - /** - * The string identifier of the associated RestApi. - */ - restApiId: String; - /** - * The identifier of the Deployment resource to delete. - */ - deploymentId: String; - } - export interface DeleteDocumentationPartRequest { - /** - * [Required] The string identifier of the associated RestApi. - */ - restApiId: String; - /** - * [Required] The identifier of the to-be-deleted documentation part. - */ - documentationPartId: String; - } - export interface DeleteDocumentationVersionRequest { - /** - * [Required] The string identifier of the associated RestApi. - */ - restApiId: String; - /** - * [Required] The version identifier of a to-be-deleted documentation snapshot. - */ - documentationVersion: String; - } - export interface DeleteDomainNameRequest { - /** - * The name of the DomainName resource to be deleted. - */ - domainName: String; - } - export interface DeleteGatewayResponseRequest { - /** - * The string identifier of the associated RestApi. - */ - restApiId: String; - /** - * The response type of the associated GatewayResponse. Valid values are ACCESS_DENIEDAPI_CONFIGURATION_ERRORAUTHORIZER_FAILURE AUTHORIZER_CONFIGURATION_ERRORBAD_REQUEST_PARAMETERSBAD_REQUEST_BODYDEFAULT_4XXDEFAULT_5XXEXPIRED_TOKENINVALID_SIGNATUREINTEGRATION_FAILUREINTEGRATION_TIMEOUTINVALID_API_KEYMISSING_AUTHENTICATION_TOKEN QUOTA_EXCEEDEDREQUEST_TOO_LARGERESOURCE_NOT_FOUNDTHROTTLEDUNAUTHORIZEDUNSUPPORTED_MEDIA_TYPES - */ - responseType: GatewayResponseType; - } - export interface DeleteIntegrationRequest { - /** - * The string identifier of the associated RestApi. - */ - restApiId: String; - /** - * Specifies a delete integration request's resource identifier. - */ - resourceId: String; - /** - * Specifies a delete integration request's HTTP method. - */ - httpMethod: String; - } - export interface DeleteIntegrationResponseRequest { - /** - * The string identifier of the associated RestApi. - */ - restApiId: String; - /** - * Specifies a delete integration response request's resource identifier. - */ - resourceId: String; - /** - * Specifies a delete integration response request's HTTP method. - */ - httpMethod: String; - /** - * Specifies a delete integration response request's status code. - */ - statusCode: StatusCode; - } - export interface DeleteMethodRequest { - /** - * The string identifier of the associated RestApi. - */ - restApiId: String; - /** - * The Resource identifier for the Method resource. - */ - resourceId: String; - /** - * The HTTP verb of the Method resource. - */ - httpMethod: String; - } - export interface DeleteMethodResponseRequest { - /** - * The string identifier of the associated RestApi. - */ - restApiId: String; - /** - * The Resource identifier for the MethodResponse resource. - */ - resourceId: String; - /** - * The HTTP verb of the Method resource. - */ - httpMethod: String; - /** - * The status code identifier for the MethodResponse resource. - */ - statusCode: StatusCode; - } - export interface DeleteModelRequest { - /** - * The string identifier of the associated RestApi. - */ - restApiId: String; - /** - * The name of the model to delete. - */ - modelName: String; - } - export interface DeleteRequestValidatorRequest { - /** - * The string identifier of the associated RestApi. - */ - restApiId: String; - /** - * [Required] The identifier of the RequestValidator to be deleted. - */ - requestValidatorId: String; - } - export interface DeleteResourceRequest { - /** - * The string identifier of the associated RestApi. - */ - restApiId: String; - /** - * The identifier of the Resource resource. - */ - resourceId: String; - } - export interface DeleteRestApiRequest { - /** - * The string identifier of the associated RestApi. - */ - restApiId: String; - } - export interface DeleteStageRequest { - /** - * The string identifier of the associated RestApi. - */ - restApiId: String; - /** - * The name of the Stage resource to delete. - */ - stageName: String; - } - export interface DeleteUsagePlanKeyRequest { - /** - * The Id of the UsagePlan resource representing the usage plan containing the to-be-deleted UsagePlanKey resource representing a plan customer. - */ - usagePlanId: String; - /** - * The Id of the UsagePlanKey resource to be deleted. - */ - keyId: String; - } - export interface DeleteUsagePlanRequest { - /** - * The Id of the to-be-deleted usage plan. - */ - usagePlanId: String; - } - export interface Deployment { - /** - * The identifier for the deployment resource. - */ - id?: String; - /** - * The description for the deployment resource. - */ - description?: String; - /** - * The date and time that the deployment resource was created. - */ - createdDate?: Timestamp; - /** - * A summary of the RestApi at the date and time that the deployment resource was created. - */ - apiSummary?: PathToMapOfMethodSnapshot; - } - export interface Deployments { - position?: String; - /** - * The current page of elements from this collection. - */ - items?: ListOfDeployment; - } - export interface DocumentationPart { - /** - * The DocumentationPart identifier, generated by Amazon API Gateway when the DocumentationPart is created. - */ - id?: String; - /** - * The location of the API entity to which the documentation applies. Valid fields depend on the targeted API entity type. All the valid location fields are not required. If not explicitly specified, a valid location field is treated as a wildcard and associated documentation content may be inherited by matching entities, unless overridden. - */ - location?: DocumentationPartLocation; - /** - * A content map of API-specific key-value pairs describing the targeted API entity. The map must be encoded as a JSON string, e.g., "{ \"description\": \"The API does ...\" }". Only Swagger-compliant documentation-related fields from the properties map are exported and, hence, published as part of the API entity definitions, while the original documentation parts are exported in a Swagger extension of x-amazon-apigateway-documentation. - */ - properties?: String; - } - export interface DocumentationPartIds { - /** - * A list of the returned documentation part identifiers. - */ - ids?: ListOfString; - /** - * A list of warning messages reported during import of documentation parts. - */ - warnings?: ListOfString; - } - export interface DocumentationPartLocation { - /** - * The type of API entity to which the documentation content applies. It is a valid and required field for API entity types of API, AUTHORIZER, MODEL, RESOURCE, METHOD, PATH_PARAMETER, QUERY_PARAMETER, REQUEST_HEADER, REQUEST_BODY, RESPONSE, RESPONSE_HEADER, and RESPONSE_BODY. Content inheritance does not apply to any entity of the API, AUTHORIZER, METHOD, MODEL, REQUEST_BODY, or RESOURCE type. - */ - type: DocumentationPartType; - /** - * The URL path of the target. It is a valid field for the API entity types of RESOURCE, METHOD, PATH_PARAMETER, QUERY_PARAMETER, REQUEST_HEADER, REQUEST_BODY, RESPONSE, RESPONSE_HEADER, and RESPONSE_BODY. The default value is / for the root resource. When an applicable child entity inherits the content of another entity of the same type with more general specifications of the other location attributes, the child entity's path attribute must match that of the parent entity as a prefix. - */ - path?: String; - /** - * The HTTP verb of a method. It is a valid field for the API entity types of METHOD, PATH_PARAMETER, QUERY_PARAMETER, REQUEST_HEADER, REQUEST_BODY, RESPONSE, RESPONSE_HEADER, and RESPONSE_BODY. The default value is * for any method. When an applicable child entity inherits the content of an entity of the same type with more general specifications of the other location attributes, the child entity's method attribute must match that of the parent entity exactly. - */ - method?: String; - /** - * The HTTP status code of a response. It is a valid field for the API entity types of RESPONSE, RESPONSE_HEADER, and RESPONSE_BODY. The default value is * for any status code. When an applicable child entity inherits the content of an entity of the same type with more general specifications of the other location attributes, the child entity's statusCode attribute must match that of the parent entity exactly. - */ - statusCode?: DocumentationPartLocationStatusCode; - /** - * The name of the targeted API entity. It is a valid and required field for the API entity types of AUTHORIZER, MODEL, PATH_PARAMETER, QUERY_PARAMETER, REQUEST_HEADER, REQUEST_BODY and RESPONSE_HEADER. It is an invalid field for any other entity type. - */ - name?: String; - } - export type DocumentationPartLocationStatusCode = string; - export type DocumentationPartType = "API"|"AUTHORIZER"|"MODEL"|"RESOURCE"|"METHOD"|"PATH_PARAMETER"|"QUERY_PARAMETER"|"REQUEST_HEADER"|"REQUEST_BODY"|"RESPONSE"|"RESPONSE_HEADER"|"RESPONSE_BODY"|string; - export interface DocumentationParts { - position?: String; - /** - * The current page of elements from this collection. - */ - items?: ListOfDocumentationPart; - } - export interface DocumentationVersion { - /** - * The version identifier of the API documentation snapshot. - */ - version?: String; - /** - * The date when the API documentation snapshot is created. - */ - createdDate?: Timestamp; - /** - * The description of the API documentation snapshot. - */ - description?: String; - } - export interface DocumentationVersions { - position?: String; - /** - * The current page of elements from this collection. - */ - items?: ListOfDocumentationVersion; - } - export interface DomainName { - /** - * The name of the DomainName resource. - */ - domainName?: String; - /** - * The name of the certificate. - */ - certificateName?: String; - /** - * The reference to an AWS-managed certificate. AWS Certificate Manager is the only supported source. - */ - certificateArn?: String; - /** - * The timestamp when the certificate was uploaded. - */ - certificateUploadDate?: Timestamp; - /** - * The domain name of the Amazon CloudFront distribution. For more information, see the Amazon CloudFront documentation. - */ - distributionDomainName?: String; - } - export interface DomainNames { - position?: String; - /** - * The current page of elements from this collection. - */ - items?: ListOfDomainName; - } - export type Double = number; - export interface ExportResponse { - /** - * The content-type header value in the HTTP response. This will correspond to a valid 'accept' type in the request. - */ - contentType?: String; - /** - * The content-disposition header value in the HTTP response. - */ - contentDisposition?: String; - /** - * The binary blob response to GetExport, which contains the export. - */ - body?: _Blob; - } - export interface FlushStageAuthorizersCacheRequest { - /** - * The string identifier of the associated RestApi. - */ - restApiId: String; - /** - * The name of the stage to flush. - */ - stageName: String; - } - export interface FlushStageCacheRequest { - /** - * The string identifier of the associated RestApi. - */ - restApiId: String; - /** - * The name of the stage to flush its cache. - */ - stageName: String; - } - export interface GatewayResponse { - /** - * The response type of the associated GatewayResponse. Valid values are ACCESS_DENIEDAPI_CONFIGURATION_ERRORAUTHORIZER_FAILURE AUTHORIZER_CONFIGURATION_ERRORBAD_REQUEST_PARAMETERSBAD_REQUEST_BODYDEFAULT_4XXDEFAULT_5XXEXPIRED_TOKENINVALID_SIGNATUREINTEGRATION_FAILUREINTEGRATION_TIMEOUTINVALID_API_KEYMISSING_AUTHENTICATION_TOKEN QUOTA_EXCEEDEDREQUEST_TOO_LARGERESOURCE_NOT_FOUNDTHROTTLEDUNAUTHORIZEDUNSUPPORTED_MEDIA_TYPES - */ - responseType?: GatewayResponseType; - /** - * The HTTP status code for this GatewayResponse. - */ - statusCode?: StatusCode; - /** - * Response parameters (paths, query strings and headers) of the GatewayResponse as a string-to-string map of key-value pairs. - */ - responseParameters?: MapOfStringToString; - /** - * Response templates of the GatewayResponse as a string-to-string map of key-value pairs. - */ - responseTemplates?: MapOfStringToString; - /** - * A Boolean flag to indicate whether this GatewayResponse is the default gateway response (true) or not (false). A default gateway response is one generated by Amazon API Gateway without any customization by an API developer. - */ - defaultResponse?: Boolean; - } - export type GatewayResponseType = "DEFAULT_4XX"|"DEFAULT_5XX"|"RESOURCE_NOT_FOUND"|"UNAUTHORIZED"|"INVALID_API_KEY"|"ACCESS_DENIED"|"AUTHORIZER_FAILURE"|"AUTHORIZER_CONFIGURATION_ERROR"|"INVALID_SIGNATURE"|"EXPIRED_TOKEN"|"MISSING_AUTHENTICATION_TOKEN"|"INTEGRATION_FAILURE"|"INTEGRATION_TIMEOUT"|"API_CONFIGURATION_ERROR"|"UNSUPPORTED_MEDIA_TYPE"|"BAD_REQUEST_PARAMETERS"|"BAD_REQUEST_BODY"|"REQUEST_TOO_LARGE"|"THROTTLED"|"QUOTA_EXCEEDED"|string; - export interface GatewayResponses { - position?: String; - /** - * Returns the entire collection, because of no pagination support. - */ - items?: ListOfGatewayResponse; - } - export interface GenerateClientCertificateRequest { - /** - * The description of the ClientCertificate. - */ - description?: String; - } - export interface GetAccountRequest { - } - export interface GetApiKeyRequest { - /** - * The identifier of the ApiKey resource. - */ - apiKey: String; - /** - * A boolean flag to specify whether (true) or not (false) the result contains the key value. - */ - includeValue?: NullableBoolean; - } - export interface GetApiKeysRequest { - /** - * The current pagination position in the paged result set. - */ - position?: String; - /** - * The maximum number of returned results per page. - */ - limit?: NullableInteger; - /** - * The name of queried API keys. - */ - nameQuery?: String; - /** - * The identifier of a customer in AWS Marketplace or an external system, such as a developer portal. - */ - customerId?: String; - /** - * A boolean flag to specify whether (true) or not (false) the result contains key values. - */ - includeValues?: NullableBoolean; - } - export interface GetAuthorizerRequest { - /** - * The string identifier of the associated RestApi. - */ - restApiId: String; - /** - * The identifier of the Authorizer resource. - */ - authorizerId: String; - } - export interface GetAuthorizersRequest { - /** - * The string identifier of the associated RestApi. - */ - restApiId: String; - /** - * The current pagination position in the paged result set. - */ - position?: String; - /** - * The maximum number of returned results per page. - */ - limit?: NullableInteger; - } - export interface GetBasePathMappingRequest { - /** - * The domain name of the BasePathMapping resource to be described. - */ - domainName: String; - /** - * The base path name that callers of the API must provide as part of the URL after the domain name. This value must be unique for all of the mappings across a single API. Leave this blank if you do not want callers to specify any base path name after the domain name. - */ - basePath: String; - } - export interface GetBasePathMappingsRequest { - /** - * The domain name of a BasePathMapping resource. - */ - domainName: String; - /** - * The current pagination position in the paged result set. - */ - position?: String; - /** - * The maximum number of returned results per page. The value is 25 by default and could be between 1 - 500. - */ - limit?: NullableInteger; - } - export interface GetClientCertificateRequest { - /** - * The identifier of the ClientCertificate resource to be described. - */ - clientCertificateId: String; - } - export interface GetClientCertificatesRequest { - /** - * The current pagination position in the paged result set. - */ - position?: String; - /** - * The maximum number of returned results per page. The value is 25 by default and could be between 1 - 500. - */ - limit?: NullableInteger; - } - export interface GetDeploymentRequest { - /** - * The string identifier of the associated RestApi. - */ - restApiId: String; - /** - * The identifier of the Deployment resource to get information about. - */ - deploymentId: String; - /** - * A query parameter to retrieve the specified embedded resources of the returned Deployment resource in the response. In a REST API call, this embed parameter value is a list of comma-separated strings, as in GET /restapis/{restapi_id}/deployments/{deployment_id}?embed=var1,var2. The SDK and other platform-dependent libraries might use a different format for the list. Currently, this request supports only retrieval of the embedded API summary this way. Hence, the parameter value must be a single-valued list containing only the "apisummary" string. For example, GET /restapis/{restapi_id}/deployments/{deployment_id}?embed=apisummary. - */ - embed?: ListOfString; - } - export interface GetDeploymentsRequest { - /** - * The string identifier of the associated RestApi. - */ - restApiId: String; - /** - * The current pagination position in the paged result set. - */ - position?: String; - /** - * The maximum number of returned results per page. The value is 25 by default and could be between 1 - 500. - */ - limit?: NullableInteger; - } - export interface GetDocumentationPartRequest { - /** - * [Required] The string identifier of the associated RestApi. - */ - restApiId: String; - /** - * [Required] The string identifier of the associated RestApi. - */ - documentationPartId: String; - } - export interface GetDocumentationPartsRequest { - /** - * [Required] The string identifier of the associated RestApi. - */ - restApiId: String; - /** - * The type of API entities of the to-be-retrieved documentation parts. - */ - type?: DocumentationPartType; - /** - * The name of API entities of the to-be-retrieved documentation parts. - */ - nameQuery?: String; - /** - * The path of API entities of the to-be-retrieved documentation parts. - */ - path?: String; - /** - * The current pagination position in the paged result set. - */ - position?: String; - /** - * The maximum number of returned results per page. - */ - limit?: NullableInteger; - } - export interface GetDocumentationVersionRequest { - /** - * [Required] The string identifier of the associated RestApi. - */ - restApiId: String; - /** - * [Required] The version identifier of the to-be-retrieved documentation snapshot. - */ - documentationVersion: String; - } - export interface GetDocumentationVersionsRequest { - /** - * [Required] The string identifier of the associated RestApi. - */ - restApiId: String; - /** - * The current pagination position in the paged result set. - */ - position?: String; - /** - * The maximum number of returned results per page. - */ - limit?: NullableInteger; - } - export interface GetDomainNameRequest { - /** - * The name of the DomainName resource. - */ - domainName: String; - } - export interface GetDomainNamesRequest { - /** - * The current pagination position in the paged result set. - */ - position?: String; - /** - * The maximum number of returned results per page. The value is 25 by default and could be between 1 - 500. - */ - limit?: NullableInteger; - } - export interface GetExportRequest { - /** - * The string identifier of the associated RestApi. - */ - restApiId: String; - /** - * The name of the Stage that will be exported. - */ - stageName: String; - /** - * The type of export. Currently only 'swagger' is supported. - */ - exportType: String; - /** - * A key-value map of query string parameters that specify properties of the export, depending on the requested exportType. For exportType swagger, any combination of the following parameters are supported: integrations will export the API with x-amazon-apigateway-integration extensions. authorizers will export the API with x-amazon-apigateway-authorizer extensions. postman will export the API with Postman extensions, allowing for import to the Postman tool - */ - parameters?: MapOfStringToString; - /** - * The content-type of the export, for example application/json. Currently application/json and application/yaml are supported for exportType of swagger. This should be specified in the Accept header for direct API requests. - */ - accepts?: String; - } - export interface GetGatewayResponseRequest { - /** - * The string identifier of the associated RestApi. - */ - restApiId: String; - /** - * The response type of the associated GatewayResponse. Valid values are ACCESS_DENIEDAPI_CONFIGURATION_ERRORAUTHORIZER_FAILURE AUTHORIZER_CONFIGURATION_ERRORBAD_REQUEST_PARAMETERSBAD_REQUEST_BODYDEFAULT_4XXDEFAULT_5XXEXPIRED_TOKENINVALID_SIGNATUREINTEGRATION_FAILUREINTEGRATION_TIMEOUTINVALID_API_KEYMISSING_AUTHENTICATION_TOKEN QUOTA_EXCEEDEDREQUEST_TOO_LARGERESOURCE_NOT_FOUNDTHROTTLEDUNAUTHORIZEDUNSUPPORTED_MEDIA_TYPES - */ - responseType: GatewayResponseType; - } - export interface GetGatewayResponsesRequest { - /** - * The string identifier of the associated RestApi. - */ - restApiId: String; - /** - * The current pagination position in the paged result set. The GatewayResponse collection does not support pagination and the position does not apply here. - */ - position?: String; - /** - * The maximum number of returned results per page. The GatewayResponses collection does not support pagination and the limit does not apply here. - */ - limit?: NullableInteger; - } - export interface GetIntegrationRequest { - /** - * The string identifier of the associated RestApi. - */ - restApiId: String; - /** - * Specifies a get integration request's resource identifier - */ - resourceId: String; - /** - * Specifies a get integration request's HTTP method. - */ - httpMethod: String; - } - export interface GetIntegrationResponseRequest { - /** - * The string identifier of the associated RestApi. - */ - restApiId: String; - /** - * Specifies a get integration response request's resource identifier. - */ - resourceId: String; - /** - * Specifies a get integration response request's HTTP method. - */ - httpMethod: String; - /** - * Specifies a get integration response request's status code. - */ - statusCode: StatusCode; - } - export interface GetMethodRequest { - /** - * The string identifier of the associated RestApi. - */ - restApiId: String; - /** - * The Resource identifier for the Method resource. - */ - resourceId: String; - /** - * Specifies the method request's HTTP method type. - */ - httpMethod: String; - } - export interface GetMethodResponseRequest { - /** - * The string identifier of the associated RestApi. - */ - restApiId: String; - /** - * The Resource identifier for the MethodResponse resource. - */ - resourceId: String; - /** - * The HTTP verb of the Method resource. - */ - httpMethod: String; - /** - * The status code for the MethodResponse resource. - */ - statusCode: StatusCode; - } - export interface GetModelRequest { - /** - * The RestApi identifier under which the Model exists. - */ - restApiId: String; - /** - * The name of the model as an identifier. - */ - modelName: String; - /** - * A query parameter of a Boolean value to resolve (true) all external model references and returns a flattened model schema or not (false) The default is false. - */ - flatten?: Boolean; - } - export interface GetModelTemplateRequest { - /** - * The string identifier of the associated RestApi. - */ - restApiId: String; - /** - * The name of the model for which to generate a template. - */ - modelName: String; - } - export interface GetModelsRequest { - /** - * The string identifier of the associated RestApi. - */ - restApiId: String; - /** - * The current pagination position in the paged result set. - */ - position?: String; - /** - * The maximum number of returned results per page. The value is 25 by default and could be between 1 - 500. - */ - limit?: NullableInteger; - } - export interface GetRequestValidatorRequest { - /** - * The string identifier of the associated RestApi. - */ - restApiId: String; - /** - * [Required] The identifier of the RequestValidator to be retrieved. - */ - requestValidatorId: String; - } - export interface GetRequestValidatorsRequest { - /** - * The string identifier of the associated RestApi. - */ - restApiId: String; - /** - * The current pagination position in the paged result set. - */ - position?: String; - /** - * The maximum number of returned results per page. - */ - limit?: NullableInteger; - } - export interface GetResourceRequest { - /** - * The string identifier of the associated RestApi. - */ - restApiId: String; - /** - * The identifier for the Resource resource. - */ - resourceId: String; - /** - * A query parameter to retrieve the specified resources embedded in the returned Resource representation in the response. This embed parameter value is a list of comma-separated strings. Currently, the request supports only retrieval of the embedded Method resources this way. The query parameter value must be a single-valued list and contain the "methods" string. For example, GET /restapis/{restapi_id}/resources/{resource_id}?embed=methods. - */ - embed?: ListOfString; - } - export interface GetResourcesRequest { - /** - * The string identifier of the associated RestApi. - */ - restApiId: String; - /** - * The current pagination position in the paged result set. - */ - position?: String; - /** - * The maximum number of returned results per page. The value is 25 by default and could be between 1 - 500. - */ - limit?: NullableInteger; - /** - * A query parameter used to retrieve the specified resources embedded in the returned Resources resource in the response. This embed parameter value is a list of comma-separated strings. Currently, the request supports only retrieval of the embedded Method resources this way. The query parameter value must be a single-valued list and contain the "methods" string. For example, GET /restapis/{restapi_id}/resources?embed=methods. - */ - embed?: ListOfString; - } - export interface GetRestApiRequest { - /** - * The identifier of the RestApi resource. - */ - restApiId: String; - } - export interface GetRestApisRequest { - /** - * The current pagination position in the paged result set. - */ - position?: String; - /** - * The maximum number of returned results per page. The value is 25 by default and could be between 1 - 500. - */ - limit?: NullableInteger; - } - export interface GetSdkRequest { - /** - * The string identifier of the associated RestApi. - */ - restApiId: String; - /** - * The name of the Stage that the SDK will use. - */ - stageName: String; - /** - * The language for the generated SDK. Currently java, javascript, android, objectivec and swift (for iOS) are supported. - */ - sdkType: String; - /** - * A string-to-string key-value map of query parameters sdkType-dependent properties of the SDK. For sdkType of objectivec or swift, a parameter named classPrefix is required. For sdkType of android, parameters named groupId, artifactId, artifactVersion, and invokerPackage are required. For sdkType of java, parameters named serviceName and javaPackageName are required. - */ - parameters?: MapOfStringToString; - } - export interface GetSdkTypeRequest { - /** - * The identifier of the queried SdkType instance. - */ - id: String; - } - export interface GetSdkTypesRequest { - /** - * The current pagination position in the paged result set. - */ - position?: String; - /** - * The maximum number of returned results per page. - */ - limit?: NullableInteger; - } - export interface GetStageRequest { - /** - * The string identifier of the associated RestApi. - */ - restApiId: String; - /** - * The name of the Stage resource to get information about. - */ - stageName: String; - } - export interface GetStagesRequest { - /** - * The string identifier of the associated RestApi. - */ - restApiId: String; - /** - * The stages' deployment identifiers. - */ - deploymentId?: String; - } - export interface GetUsagePlanKeyRequest { - /** - * The Id of the UsagePlan resource representing the usage plan containing the to-be-retrieved UsagePlanKey resource representing a plan customer. - */ - usagePlanId: String; - /** - * The key Id of the to-be-retrieved UsagePlanKey resource representing a plan customer. - */ - keyId: String; - } - export interface GetUsagePlanKeysRequest { - /** - * The Id of the UsagePlan resource representing the usage plan containing the to-be-retrieved UsagePlanKey resource representing a plan customer. - */ - usagePlanId: String; - /** - * The current pagination position in the paged result set. - */ - position?: String; - /** - * The maximum number of returned results per page. - */ - limit?: NullableInteger; - /** - * A query parameter specifying the name of the to-be-returned usage plan keys. - */ - nameQuery?: String; - } - export interface GetUsagePlanRequest { - /** - * The identifier of the UsagePlan resource to be retrieved. - */ - usagePlanId: String; - } - export interface GetUsagePlansRequest { - /** - * The current pagination position in the paged result set. - */ - position?: String; - /** - * The identifier of the API key associated with the usage plans. - */ - keyId?: String; - /** - * The maximum number of returned results per page. - */ - limit?: NullableInteger; - } - export interface GetUsageRequest { - /** - * The Id of the usage plan associated with the usage data. - */ - usagePlanId: String; - /** - * The Id of the API key associated with the resultant usage data. - */ - keyId?: String; - /** - * The starting date (e.g., 2016-01-01) of the usage data. - */ - startDate: String; - /** - * The ending date (e.g., 2016-12-31) of the usage data. - */ - endDate: String; - /** - * The current pagination position in the paged result set. - */ - position?: String; - /** - * The maximum number of returned results per page. - */ - limit?: NullableInteger; - } - export interface ImportApiKeysRequest { - /** - * The payload of the POST request to import API keys. For the payload format, see API Key File Format. - */ - body: _Blob; - /** - * A query parameter to specify the input format to imported API keys. Currently, only the csv format is supported. - */ - format: ApiKeysFormat; - /** - * A query parameter to indicate whether to rollback ApiKey importation (true) or not (false) when error is encountered. - */ - failOnWarnings?: Boolean; - } - export interface ImportDocumentationPartsRequest { - /** - * [Required] The string identifier of the associated RestApi. - */ - restApiId: String; - /** - * A query parameter to indicate whether to overwrite (OVERWRITE) any existing DocumentationParts definition or to merge (MERGE) the new definition into the existing one. The default value is MERGE. - */ - mode?: PutMode; - /** - * A query parameter to specify whether to rollback the documentation importation (true) or not (false) when a warning is encountered. The default value is false. - */ - failOnWarnings?: Boolean; - /** - * [Required] Raw byte array representing the to-be-imported documentation parts. To import from a Swagger file, this is a JSON object. - */ - body: _Blob; - } - export interface ImportRestApiRequest { - /** - * A query parameter to indicate whether to rollback the API creation (true) or not (false) when a warning is encountered. The default value is false. - */ - failOnWarnings?: Boolean; - /** - * Custom header parameters as part of the request. For example, to exclude DocumentationParts from an imported API, set ignore=documentation as a parameters value, as in the AWS CLI command of aws apigateway import-rest-api --parameters ignore=documentation --body 'file:///path/to/imported-api-body.json. - */ - parameters?: MapOfStringToString; - /** - * The POST request body containing external API definitions. Currently, only Swagger definition JSON files are supported. The maximum size of the API definition file is 2MB. - */ - body: _Blob; - } - export type Integer = number; - export interface Integration { - /** - * Specifies the integration's type. The valid value is HTTP for integrating with an HTTP back end, AWS for any AWS service endpoints, MOCK for testing without actually invoking the back end, HTTP_PROXY for integrating with the HTTP proxy integration, or AWS_PROXY for integrating with the Lambda proxy integration type. - */ - type?: IntegrationType; - /** - * Specifies the integration's HTTP method type. - */ - httpMethod?: String; - /** - * Specifies the integration's Uniform Resource Identifier (URI). For HTTP integrations, the URI must be a fully formed, encoded HTTP(S) URL according to the RFC-3986 specification. For AWS integrations, the URI should be of the form arn:aws:apigateway:{region}:{subdomain.service|service}:{path|action}/{service_api}. Region, subdomain and service are used to determine the right endpoint. For AWS services that use the Action= query string parameter, service_api should be a valid action for the desired service. For RESTful AWS service APIs, path is used to indicate that the remaining substring in the URI should be treated as the path to the resource, including the initial /. - */ - uri?: String; - /** - * Specifies the credentials required for the integration, if any. For AWS integrations, three options are available. To specify an IAM Role for Amazon API Gateway to assume, use the role's Amazon Resource Name (ARN). To require that the caller's identity be passed through from the request, specify the string arn:aws:iam::\*:user/\*. To use resource-based permissions on supported AWS services, specify null. - */ - credentials?: String; - /** - * A key-value map specifying request parameters that are passed from the method request to the back end. The key is an integration request parameter name and the associated value is a method request parameter value or static value that must be enclosed within single quotes and pre-encoded as required by the back end. The method request parameter value must match the pattern of method.request.{location}.{name}, where location is querystring, path, or header and name must be a valid and unique method request parameter name. - */ - requestParameters?: MapOfStringToString; - /** - * Represents a map of Velocity templates that are applied on the request payload based on the value of the Content-Type header sent by the client. The content type value is the key in this map, and the template (as a String) is the value. - */ - requestTemplates?: MapOfStringToString; - /** - * Specifies how the method request body of an unmapped content type will be passed through the integration request to the back end without transformation. A content type is unmapped if no mapping template is defined in the integration or the content type does not match any of the mapped content types, as specified in requestTemplates. There are three valid values: WHEN_NO_MATCH, WHEN_NO_TEMPLATES, and NEVER. WHEN_NO_MATCH passes the method request body through the integration request to the back end without transformation when the method request content type does not match any content type associated with the mapping templates defined in the integration request. WHEN_NO_TEMPLATES passes the method request body through the integration request to the back end without transformation when no mapping template is defined in the integration request. If a template is defined when this option is selected, the method request of an unmapped content-type will be rejected with an HTTP 415 Unsupported Media Type response. NEVER rejects the method request with an HTTP 415 Unsupported Media Type response when either the method request content type does not match any content type associated with the mapping templates defined in the integration request or no mapping template is defined in the integration request. - */ - passthroughBehavior?: String; - /** - * Specifies how to handle request payload content type conversions. Supported values are CONVERT_TO_BINARY and CONVERT_TO_TEXT, with the following behaviors: CONVERT_TO_BINARY: Converts a request payload from a Base64-encoded string to the corresponding binary blob. CONVERT_TO_TEXT: Converts a request payload from a binary blob to a Base64-encoded string. If this property is not defined, the request payload will be passed through from the method request to integration request without modification, provided that the passthroughBehaviors is configured to support payload pass-through. - */ - contentHandling?: ContentHandlingStrategy; - /** - * Specifies the integration's cache namespace. - */ - cacheNamespace?: String; - /** - * Specifies the integration's cache key parameters. - */ - cacheKeyParameters?: ListOfString; - /** - * Specifies the integration's responses. Example: Get integration responses of a method Request GET /restapis/fugvjdxtri/resources/3kzxbg5sa2/methods/GET/integration/responses/200 HTTP/1.1 Content-Type: application/json Host: apigateway.us-east-1.amazonaws.com X-Amz-Date: 20160607T191449Z Authorization: AWS4-HMAC-SHA256 Credential={access_key_ID}/20160607/us-east-1/apigateway/aws4_request, SignedHeaders=content-type;host;x-amz-date, Signature={sig4_hash} Response The successful response returns 200 OK status and a payload as follows: { "_links": { "curies": { "href": "http://docs.aws.amazon.com/apigateway/latest/developerguide/restapi-integration-response-{rel}.html", "name": "integrationresponse", "templated": true }, "self": { "href": "/restapis/fugvjdxtri/resources/3kzxbg5sa2/methods/GET/integration/responses/200", "title": "200" }, "integrationresponse:delete": { "href": "/restapis/fugvjdxtri/resources/3kzxbg5sa2/methods/GET/integration/responses/200" }, "integrationresponse:update": { "href": "/restapis/fugvjdxtri/resources/3kzxbg5sa2/methods/GET/integration/responses/200" } }, "responseParameters": { "method.response.header.Content-Type": "'application/xml'" }, "responseTemplates": { "application/json": "$util.urlDecode(\"%3CkinesisStreams%3E#foreach($stream in $input.path('$.StreamNames'))%3Cstream%3E%3Cname%3E$stream%3C/name%3E%3C/stream%3E#end%3C/kinesisStreams%3E\")\n" }, "statusCode": "200" } Creating an API - */ - integrationResponses?: MapOfIntegrationResponse; - } - export interface IntegrationResponse { - /** - * Specifies the status code that is used to map the integration response to an existing MethodResponse. - */ - statusCode?: StatusCode; - /** - * Specifies the regular expression (regex) pattern used to choose an integration response based on the response from the back end. For example, if the success response returns nothing and the error response returns some string, you could use the .+ regex to match error response. However, make sure that the error response does not contain any newline (\n) character in such cases. If the back end is an AWS Lambda function, the AWS Lambda function error header is matched. For all other HTTP and AWS back ends, the HTTP status code is matched. - */ - selectionPattern?: String; - /** - * A key-value map specifying response parameters that are passed to the method response from the back end. The key is a method response header parameter name and the mapped value is an integration response header value, a static value enclosed within a pair of single quotes, or a JSON expression from the integration response body. The mapping key must match the pattern of method.response.header.{name}, where name is a valid and unique header name. The mapped non-static value must match the pattern of integration.response.header.{name} or integration.response.body.{JSON-expression}, where name is a valid and unique response header name and JSON-expression is a valid JSON expression without the $ prefix. - */ - responseParameters?: MapOfStringToString; - /** - * Specifies the templates used to transform the integration response body. Response templates are represented as a key/value map, with a content-type as the key and a template as the value. - */ - responseTemplates?: MapOfStringToString; - /** - * Specifies how to handle response payload content type conversions. Supported values are CONVERT_TO_BINARY and CONVERT_TO_TEXT, with the following behaviors: CONVERT_TO_BINARY: Converts a response payload from a Base64-encoded string to the corresponding binary blob. CONVERT_TO_TEXT: Converts a response payload from a binary blob to a Base64-encoded string. If this property is not defined, the response payload will be passed through from the integration response to the method response without modification. - */ - contentHandling?: ContentHandlingStrategy; - } - export type IntegrationType = "HTTP"|"AWS"|"MOCK"|"HTTP_PROXY"|"AWS_PROXY"|string; - export type ListOfARNs = ProviderARN[]; - export type ListOfApiKey = ApiKey[]; - export type ListOfApiStage = ApiStage[]; - export type ListOfAuthorizer = Authorizer[]; - export type ListOfBasePathMapping = BasePathMapping[]; - export type ListOfClientCertificate = ClientCertificate[]; - export type ListOfDeployment = Deployment[]; - export type ListOfDocumentationPart = DocumentationPart[]; - export type ListOfDocumentationVersion = DocumentationVersion[]; - export type ListOfDomainName = DomainName[]; - export type ListOfGatewayResponse = GatewayResponse[]; - export type ListOfLong = Long[]; - export type ListOfModel = Model[]; - export type ListOfPatchOperation = PatchOperation[]; - export type ListOfRequestValidator = RequestValidator[]; - export type ListOfResource = Resource[]; - export type ListOfRestApi = RestApi[]; - export type ListOfSdkConfigurationProperty = SdkConfigurationProperty[]; - export type ListOfSdkType = SdkType[]; - export type ListOfStage = Stage[]; - export type ListOfStageKeys = StageKey[]; - export type ListOfString = String[]; - export type ListOfUsage = ListOfLong[]; - export type ListOfUsagePlan = UsagePlan[]; - export type ListOfUsagePlanKey = UsagePlanKey[]; - export type Long = number; - export type MapOfHeaderValues = {[key: string]: String}; - export type MapOfIntegrationResponse = {[key: string]: IntegrationResponse}; - export type MapOfKeyUsages = {[key: string]: ListOfUsage}; - export type MapOfMethod = {[key: string]: Method}; - export type MapOfMethodResponse = {[key: string]: MethodResponse}; - export type MapOfMethodSettings = {[key: string]: MethodSetting}; - export type MapOfMethodSnapshot = {[key: string]: MethodSnapshot}; - export type MapOfStringToBoolean = {[key: string]: NullableBoolean}; - export type MapOfStringToList = {[key: string]: ListOfString}; - export type MapOfStringToString = {[key: string]: String}; - export interface Method { - /** - * The method's HTTP verb. - */ - httpMethod?: String; - /** - * The method's authorization type. Valid values are NONE for open access, AWS_IAM for using AWS IAM permissions, CUSTOM for using a custom authorizer, or COGNITO_USER_POOLS for using a Cognito user pool. - */ - authorizationType?: String; - /** - * The identifier of an Authorizer to use on this method. The authorizationType must be CUSTOM. - */ - authorizerId?: String; - /** - * A boolean flag specifying whether a valid ApiKey is required to invoke this method. - */ - apiKeyRequired?: NullableBoolean; - /** - * The identifier of a RequestValidator for request validation. - */ - requestValidatorId?: String; - /** - * A human-friendly operation identifier for the method. For example, you can assign the operationName of ListPets for the GET /pets method in PetStore example. - */ - operationName?: String; - /** - * A key-value map defining required or optional method request parameters that can be accepted by Amazon API Gateway. A key is a method request parameter name matching the pattern of method.request.{location}.{name}, where location is querystring, path, or header and name is a valid and unique parameter name. The value associated with the key is a Boolean flag indicating whether the parameter is required (true) or optional (false). The method request parameter names defined here are available in Integration to be mapped to integration request parameters or templates. - */ - requestParameters?: MapOfStringToBoolean; - /** - * A key-value map specifying data schemas, represented by Model resources, (as the mapped value) of the request payloads of given content types (as the mapping key). - */ - requestModels?: MapOfStringToString; - /** - * Gets a method response associated with a given HTTP status code. The collection of method responses are encapsulated in a key-value map, where the key is a response's HTTP status code and the value is a MethodResponse resource that specifies the response returned to the caller from the back end through the integration response. Example: Get a 200 OK response of a GET method Request GET /restapis/uojnr9hd57/resources/0cjtch/methods/GET/responses/200 HTTP/1.1 Content-Type: application/json Host: apigateway.us-east-1.amazonaws.com Content-Length: 117 X-Amz-Date: 20160613T215008Z Authorization: AWS4-HMAC-SHA256 Credential={access_key_ID}/20160613/us-east-1/apigateway/aws4_request, SignedHeaders=content-type;host;x-amz-date, Signature={sig4_hash} Response The successful response returns a 200 OK status code and a payload similar to the following: { "_links": { "curies": { "href": "http://docs.aws.amazon.com/apigateway/latest/developerguide/restapi-method-response-{rel}.html", "name": "methodresponse", "templated": true }, "self": { "href": "/restapis/uojnr9hd57/resources/0cjtch/methods/GET/responses/200", "title": "200" }, "methodresponse:delete": { "href": "/restapis/uojnr9hd57/resources/0cjtch/methods/GET/responses/200" }, "methodresponse:update": { "href": "/restapis/uojnr9hd57/resources/0cjtch/methods/GET/responses/200" } }, "responseModels": { "application/json": "Empty" }, "responseParameters": { "method.response.header.operator": false, "method.response.header.operand_2": false, "method.response.header.operand_1": false }, "statusCode": "200" } AWS CLI - */ - methodResponses?: MapOfMethodResponse; - /** - * Gets the method's integration responsible for passing the client-submitted request to the back end and performing necessary transformations to make the request compliant with the back end. Example: Request GET /restapis/uojnr9hd57/resources/0cjtch/methods/GET/integration HTTP/1.1 Content-Type: application/json Host: apigateway.us-east-1.amazonaws.com Content-Length: 117 X-Amz-Date: 20160613T213210Z Authorization: AWS4-HMAC-SHA256 Credential={access_key_ID}/20160613/us-east-1/apigateway/aws4_request, SignedHeaders=content-type;host;x-amz-date, Signature={sig4_hash} Response The successful response returns a 200 OK status code and a payload similar to the following: { "_links": { "curies": [ { "href": "http://docs.aws.amazon.com/apigateway/latest/developerguide/restapi-integration-{rel}.html", "name": "integration", "templated": true }, { "href": "http://docs.aws.amazon.com/apigateway/latest/developerguide/restapi-integration-response-{rel}.html", "name": "integrationresponse", "templated": true } ], "self": { "href": "/restapis/uojnr9hd57/resources/0cjtch/methods/GET/integration" }, "integration:delete": { "href": "/restapis/uojnr9hd57/resources/0cjtch/methods/GET/integration" }, "integration:responses": { "href": "/restapis/uojnr9hd57/resources/0cjtch/methods/GET/integration/responses/200", "name": "200", "title": "200" }, "integration:update": { "href": "/restapis/uojnr9hd57/resources/0cjtch/methods/GET/integration" }, "integrationresponse:put": { "href": "/restapis/uojnr9hd57/resources/0cjtch/methods/GET/integration/responses/{status_code}", "templated": true } }, "cacheKeyParameters": [], "cacheNamespace": "0cjtch", "credentials": "arn:aws:iam::123456789012:role/apigAwsProxyRole", "httpMethod": "POST", "passthroughBehavior": "WHEN_NO_MATCH", "requestTemplates": { "application/json": "{\n \"a\": \"$input.params('operand1')\",\n \"b\": \"$input.params('operand2')\", \n \"op\": \"$input.params('operator')\" \n}" }, "type": "AWS", "uri": "arn:aws:apigateway:us-west-2:lambda:path//2015-03-31/functions/arn:aws:lambda:us-west-2:123456789012:function:Calc/invocations", "_embedded": { "integration:responses": { "_links": { "self": { "href": "/restapis/uojnr9hd57/resources/0cjtch/methods/GET/integration/responses/200", "name": "200", "title": "200" }, "integrationresponse:delete": { "href": "/restapis/uojnr9hd57/resources/0cjtch/methods/GET/integration/responses/200" }, "integrationresponse:update": { "href": "/restapis/uojnr9hd57/resources/0cjtch/methods/GET/integration/responses/200" } }, "responseParameters": { "method.response.header.operator": "integration.response.body.op", "method.response.header.operand_2": "integration.response.body.b", "method.response.header.operand_1": "integration.response.body.a" }, "responseTemplates": { "application/json": "#set($res = $input.path('$'))\n{\n \"result\": \"$res.a, $res.b, $res.op => $res.c\",\n \"a\" : \"$res.a\",\n \"b\" : \"$res.b\",\n \"op\" : \"$res.op\",\n \"c\" : \"$res.c\"\n}" }, "selectionPattern": "", "statusCode": "200" } } } AWS CLI - */ - methodIntegration?: Integration; - } - export interface MethodResponse { - /** - * The method response's status code. - */ - statusCode?: StatusCode; - /** - * A key-value map specifying required or optional response parameters that Amazon API Gateway can send back to the caller. A key defines a method response header and the value specifies whether the associated method response header is required or not. The expression of the key must match the pattern method.response.header.{name}, where name is a valid and unique header name. Amazon API Gateway passes certain integration response data to the method response headers specified here according to the mapping you prescribe in the API's IntegrationResponse. The integration response data that can be mapped include an integration response header expressed in integration.response.header.{name}, a static value enclosed within a pair of single quotes (e.g., 'application/json'), or a JSON expression from the back-end response payload in the form of integration.response.body.{JSON-expression}, where JSON-expression is a valid JSON expression without the $ prefix.) - */ - responseParameters?: MapOfStringToBoolean; - /** - * Specifies the Model resources used for the response's content-type. Response models are represented as a key/value map, with a content-type as the key and a Model name as the value. - */ - responseModels?: MapOfStringToString; - } - export interface MethodSetting { - /** - * Specifies whether Amazon CloudWatch metrics are enabled for this method. The PATCH path for this setting is /{method_setting_key}/metrics/enabled, and the value is a Boolean. - */ - metricsEnabled?: Boolean; - /** - * Specifies the logging level for this method, which effects the log entries pushed to Amazon CloudWatch Logs. The PATCH path for this setting is /{method_setting_key}/logging/loglevel, and the available levels are OFF, ERROR, and INFO. - */ - loggingLevel?: String; - /** - * Specifies whether data trace logging is enabled for this method, which effects the log entries pushed to Amazon CloudWatch Logs. The PATCH path for this setting is /{method_setting_key}/logging/dataTrace, and the value is a Boolean. - */ - dataTraceEnabled?: Boolean; - /** - * Specifies the throttling burst limit. The PATCH path for this setting is /{method_setting_key}/throttling/burstLimit, and the value is an integer. - */ - throttlingBurstLimit?: Integer; - /** - * Specifies the throttling rate limit. The PATCH path for this setting is /{method_setting_key}/throttling/rateLimit, and the value is a double. - */ - throttlingRateLimit?: Double; - /** - * Specifies whether responses should be cached and returned for requests. A cache cluster must be enabled on the stage for responses to be cached. The PATCH path for this setting is /{method_setting_key}/caching/enabled, and the value is a Boolean. - */ - cachingEnabled?: Boolean; - /** - * Specifies the time to live (TTL), in seconds, for cached responses. The higher the TTL, the longer the response will be cached. The PATCH path for this setting is /{method_setting_key}/caching/ttlInSeconds, and the value is an integer. - */ - cacheTtlInSeconds?: Integer; - /** - * Specifies whether the cached responses are encrypted. The PATCH path for this setting is /{method_setting_key}/caching/dataEncrypted, and the value is a Boolean. - */ - cacheDataEncrypted?: Boolean; - /** - * Specifies whether authorization is required for a cache invalidation request. The PATCH path for this setting is /{method_setting_key}/caching/requireAuthorizationForCacheControl, and the value is a Boolean. - */ - requireAuthorizationForCacheControl?: Boolean; - /** - * Specifies how to handle unauthorized requests for cache invalidation. The PATCH path for this setting is /{method_setting_key}/caching/unauthorizedCacheControlHeaderStrategy, and the available values are FAIL_WITH_403, SUCCEED_WITH_RESPONSE_HEADER, SUCCEED_WITHOUT_RESPONSE_HEADER. - */ - unauthorizedCacheControlHeaderStrategy?: UnauthorizedCacheControlHeaderStrategy; - } - export interface MethodSnapshot { - /** - * The method's authorization type. Valid values are NONE for open access, AWS_IAM for using AWS IAM permissions, CUSTOM for using a custom authorizer, or COGNITO_USER_POOLS for using a Cognito user pool. - */ - authorizationType?: String; - /** - * Specifies whether the method requires a valid ApiKey. - */ - apiKeyRequired?: Boolean; - } - export interface Model { - /** - * The identifier for the model resource. - */ - id?: String; - /** - * The name of the model. Must be an alphanumeric string. - */ - name?: String; - /** - * The description of the model. - */ - description?: String; - /** - * The schema for the model. For application/json models, this should be JSON-schema draft v4 model. Do not include "\*" characters in the description of any properties because such "\*" characters may be interpreted as the closing marker for comments in some languages, such as Java or JavaScript, causing the installation of your API's SDK generated by API Gateway to fail. - */ - schema?: String; - /** - * The content-type for the model. - */ - contentType?: String; - } - export interface Models { - position?: String; - /** - * The current page of elements from this collection. - */ - items?: ListOfModel; - } - export type NullableBoolean = boolean; - export type NullableInteger = number; - export type Op = "add"|"remove"|"replace"|"move"|"copy"|"test"|string; - export interface PatchOperation { - /** - * An update operation to be performed with this PATCH request. The valid value can be "add", "remove", or "replace". Not all valid operations are supported for a given resource. Support of the operations depends on specific operational contexts. Attempts to apply an unsupported operation on a resource will return an error message. - */ - op?: Op; - /** - * The op operation's target, as identified by a JSON Pointer value that references a location within the targeted resource. For example, if the target resource has an updateable property of {"name":"value"}, the path for this property is /name. If the name property value is a JSON object (e.g., {"name": {"child/name": "child-value"}}), the path for the child/name property will be /name/child~1name. Any slash ("/") character appearing in path names must be escaped with "~1", as shown in the example above. Each op operation can have only one path associated with it. - */ - path?: String; - /** - * The new target value of the update operation. When using AWS CLI to update a property of a JSON value, enclose the JSON object with a pair of single quotes in a Linux shell, e.g., '{"a": ...}'. In a Windows shell, see Using JSON for Parameters. - */ - value?: String; - /** - * Not supported. - */ - from?: String; - } - export type PathToMapOfMethodSnapshot = {[key: string]: MapOfMethodSnapshot}; - export type ProviderARN = string; - export interface PutGatewayResponseRequest { - /** - * The string identifier of the associated RestApi. - */ - restApiId: String; - /** - * The response type of the associated GatewayResponse. Valid values are ACCESS_DENIEDAPI_CONFIGURATION_ERRORAUTHORIZER_FAILURE AUTHORIZER_CONFIGURATION_ERRORBAD_REQUEST_PARAMETERSBAD_REQUEST_BODYDEFAULT_4XXDEFAULT_5XXEXPIRED_TOKENINVALID_SIGNATUREINTEGRATION_FAILUREINTEGRATION_TIMEOUTINVALID_API_KEYMISSING_AUTHENTICATION_TOKEN QUOTA_EXCEEDEDREQUEST_TOO_LARGERESOURCE_NOT_FOUNDTHROTTLEDUNAUTHORIZEDUNSUPPORTED_MEDIA_TYPES - */ - responseType: GatewayResponseType; - /** - * The HTTP status code of the GatewayResponse. - */ - statusCode?: StatusCode; - /** - * Response parameters (paths, query strings and headers) of the GatewayResponse as a string-to-string map of key-value pairs. - */ - responseParameters?: MapOfStringToString; - /** - * Response templates of the GatewayResponse as a string-to-string map of key-value pairs. - */ - responseTemplates?: MapOfStringToString; - } - export interface PutIntegrationRequest { - /** - * The string identifier of the associated RestApi. - */ - restApiId: String; - /** - * Specifies a put integration request's resource ID. - */ - resourceId: String; - /** - * Specifies a put integration request's HTTP method. - */ - httpMethod: String; - /** - * Specifies a put integration input's type. - */ - type: IntegrationType; - /** - * Specifies a put integration HTTP method. When the integration type is HTTP or AWS, this field is required. - */ - integrationHttpMethod?: String; - /** - * Specifies the integration's Uniform Resource Identifier (URI). For HTTP integrations, the URI must be a fully formed, encoded HTTP(S) URL according to the RFC-3986 specification. For AWS integrations, the URI should be of the form arn:aws:apigateway:{region}:{subdomain.service|service}:{path|action}/{service_api}. Region, subdomain and service are used to determine the right endpoint. For AWS services that use the Action= query string parameter, service_api should be a valid action for the desired service. For RESTful AWS service APIs, path is used to indicate that the remaining substring in the URI should be treated as the path to the resource, including the initial /. - */ - uri?: String; - /** - * Specifies whether credentials are required for a put integration. - */ - credentials?: String; - /** - * A key-value map specifying request parameters that are passed from the method request to the back end. The key is an integration request parameter name and the associated value is a method request parameter value or static value that must be enclosed within single quotes and pre-encoded as required by the back end. The method request parameter value must match the pattern of method.request.{location}.{name}, where location is querystring, path, or header and name must be a valid and unique method request parameter name. - */ - requestParameters?: MapOfStringToString; - /** - * Represents a map of Velocity templates that are applied on the request payload based on the value of the Content-Type header sent by the client. The content type value is the key in this map, and the template (as a String) is the value. - */ - requestTemplates?: MapOfStringToString; - /** - * Specifies the pass-through behavior for incoming requests based on the Content-Type header in the request, and the available mapping templates specified as the requestTemplates property on the Integration resource. There are three valid values: WHEN_NO_MATCH, WHEN_NO_TEMPLATES, and NEVER. WHEN_NO_MATCH passes the request body for unmapped content types through to the integration back end without transformation. NEVER rejects unmapped content types with an HTTP 415 'Unsupported Media Type' response. WHEN_NO_TEMPLATES allows pass-through when the integration has NO content types mapped to templates. However if there is at least one content type defined, unmapped content types will be rejected with the same 415 response. - */ - passthroughBehavior?: String; - /** - * Specifies a put integration input's cache namespace. - */ - cacheNamespace?: String; - /** - * Specifies a put integration input's cache key parameters. - */ - cacheKeyParameters?: ListOfString; - /** - * Specifies how to handle request payload content type conversions. Supported values are CONVERT_TO_BINARY and CONVERT_TO_TEXT, with the following behaviors: CONVERT_TO_BINARY: Converts a request payload from a Base64-encoded string to the corresponding binary blob. CONVERT_TO_TEXT: Converts a request payload from a binary blob to a Base64-encoded string. If this property is not defined, the request payload will be passed through from the method request to integration request without modification, provided that the passthroughBehaviors is configured to support payload pass-through. - */ - contentHandling?: ContentHandlingStrategy; - } - export interface PutIntegrationResponseRequest { - /** - * The string identifier of the associated RestApi. - */ - restApiId: String; - /** - * Specifies a put integration response request's resource identifier. - */ - resourceId: String; - /** - * Specifies a put integration response request's HTTP method. - */ - httpMethod: String; - /** - * Specifies the status code that is used to map the integration response to an existing MethodResponse. - */ - statusCode: StatusCode; - /** - * Specifies the selection pattern of a put integration response. - */ - selectionPattern?: String; - /** - * A key-value map specifying response parameters that are passed to the method response from the back end. The key is a method response header parameter name and the mapped value is an integration response header value, a static value enclosed within a pair of single quotes, or a JSON expression from the integration response body. The mapping key must match the pattern of method.response.header.{name}, where name is a valid and unique header name. The mapped non-static value must match the pattern of integration.response.header.{name} or integration.response.body.{JSON-expression}, where name must be a valid and unique response header name and JSON-expression a valid JSON expression without the $ prefix. - */ - responseParameters?: MapOfStringToString; - /** - * Specifies a put integration response's templates. - */ - responseTemplates?: MapOfStringToString; - /** - * Specifies how to handle response payload content type conversions. Supported values are CONVERT_TO_BINARY and CONVERT_TO_TEXT, with the following behaviors: CONVERT_TO_BINARY: Converts a response payload from a Base64-encoded string to the corresponding binary blob. CONVERT_TO_TEXT: Converts a response payload from a binary blob to a Base64-encoded string. If this property is not defined, the response payload will be passed through from the integration response to the method response without modification. - */ - contentHandling?: ContentHandlingStrategy; - } - export interface PutMethodRequest { - /** - * The string identifier of the associated RestApi. - */ - restApiId: String; - /** - * The Resource identifier for the new Method resource. - */ - resourceId: String; - /** - * Specifies the method request's HTTP method type. - */ - httpMethod: String; - /** - * The method's authorization type. Valid values are NONE for open access, AWS_IAM for using AWS IAM permissions, CUSTOM for using a custom authorizer, or COGNITO_USER_POOLS for using a Cognito user pool. - */ - authorizationType: String; - /** - * Specifies the identifier of an Authorizer to use on this Method, if the type is CUSTOM. - */ - authorizerId?: String; - /** - * Specifies whether the method required a valid ApiKey. - */ - apiKeyRequired?: Boolean; - /** - * A human-friendly operation identifier for the method. For example, you can assign the operationName of ListPets for the GET /pets method in PetStore example. - */ - operationName?: String; - /** - * A key-value map defining required or optional method request parameters that can be accepted by Amazon API Gateway. A key defines a method request parameter name matching the pattern of method.request.{location}.{name}, where location is querystring, path, or header and name is a valid and unique parameter name. The value associated with the key is a Boolean flag indicating whether the parameter is required (true) or optional (false). The method request parameter names defined here are available in Integration to be mapped to integration request parameters or body-mapping templates. - */ - requestParameters?: MapOfStringToBoolean; - /** - * Specifies the Model resources used for the request's content type. Request models are represented as a key/value map, with a content type as the key and a Model name as the value. - */ - requestModels?: MapOfStringToString; - /** - * The identifier of a RequestValidator for validating the method request. - */ - requestValidatorId?: String; - } - export interface PutMethodResponseRequest { - /** - * The string identifier of the associated RestApi. - */ - restApiId: String; - /** - * The Resource identifier for the Method resource. - */ - resourceId: String; - /** - * The HTTP verb of the Method resource. - */ - httpMethod: String; - /** - * The method response's status code. - */ - statusCode: StatusCode; - /** - * A key-value map specifying required or optional response parameters that Amazon API Gateway can send back to the caller. A key defines a method response header name and the associated value is a Boolean flag indicating whether the method response parameter is required or not. The method response header names must match the pattern of method.response.header.{name}, where name is a valid and unique header name. The response parameter names defined here are available in the integration response to be mapped from an integration response header expressed in integration.response.header.{name}, a static value enclosed within a pair of single quotes (e.g., 'application/json'), or a JSON expression from the back-end response payload in the form of integration.response.body.{JSON-expression}, where JSON-expression is a valid JSON expression without the $ prefix.) - */ - responseParameters?: MapOfStringToBoolean; - /** - * Specifies the Model resources used for the response's content type. Response models are represented as a key/value map, with a content type as the key and a Model name as the value. - */ - responseModels?: MapOfStringToString; - } - export type PutMode = "merge"|"overwrite"|string; - export interface PutRestApiRequest { - /** - * The string identifier of the associated RestApi. - */ - restApiId: String; - /** - * The mode query parameter to specify the update mode. Valid values are "merge" and "overwrite". By default, the update mode is "merge". - */ - mode?: PutMode; - /** - * A query parameter to indicate whether to rollback the API update (true) or not (false) when a warning is encountered. The default value is false. - */ - failOnWarnings?: Boolean; - /** - * Custom header parameters as part of the request. For example, to exclude DocumentationParts from an imported API, set ignore=documentation as a parameters value, as in the AWS CLI command of aws apigateway import-rest-api --parameters ignore=documentation --body 'file:///path/to/imported-api-body.json. - */ - parameters?: MapOfStringToString; - /** - * The PUT request body containing external API definitions. Currently, only Swagger definition JSON files are supported. The maximum size of the API definition file is 2MB. - */ - body: _Blob; - } - export type QuotaPeriodType = "DAY"|"WEEK"|"MONTH"|string; - export interface QuotaSettings { - /** - * The maximum number of requests that can be made in a given time period. - */ - limit?: Integer; - /** - * The number of requests subtracted from the given limit in the initial time period. - */ - offset?: Integer; - /** - * The time period in which the limit applies. Valid values are "DAY", "WEEK" or "MONTH". - */ - period?: QuotaPeriodType; - } - export interface RequestValidator { - /** - * The identifier of this RequestValidator. - */ - id?: String; - /** - * The name of this RequestValidator - */ - name?: String; - /** - * A Boolean flag to indicate whether to validate a request body according to the configured Model schema. - */ - validateRequestBody?: Boolean; - /** - * A Boolean flag to indicate whether to validate request parameters (true) or not (false). - */ - validateRequestParameters?: Boolean; - } - export interface RequestValidators { - position?: String; - /** - * The current page of elements from this collection. - */ - items?: ListOfRequestValidator; - } - export interface Resource { - /** - * The resource's identifier. - */ - id?: String; - /** - * The parent resource's identifier. - */ - parentId?: String; - /** - * The last path segment for this resource. - */ - pathPart?: String; - /** - * The full path for this resource. - */ - path?: String; - /** - * Gets an API resource's method of a given HTTP verb. The resource methods are a map of methods indexed by methods' HTTP verbs enabled on the resource. This method map is included in the 200 OK response of the GET /restapis/{restapi_id}/resources/{resource_id} or GET /restapis/{restapi_id}/resources/{resource_id}?embed=methods request. Example: Get the GET method of an API resource Request GET /restapis/fugvjdxtri/resources/3kzxbg5sa2/methods/GET HTTP/1.1 Content-Type: application/json Host: apigateway.us-east-1.amazonaws.com X-Amz-Date: 20170223T031827Z Authorization: AWS4-HMAC-SHA256 Credential={access_key_ID}/20170223/us-east-1/apigateway/aws4_request, SignedHeaders=content-type;host;x-amz-date, Signature={sig4_hash} Response { "_links": { "curies": [ { "href": "http://docs.aws.amazon.com/apigateway/latest/developerguide/restapi-integration-{rel}.html", "name": "integration", "templated": true }, { "href": "http://docs.aws.amazon.com/apigateway/latest/developerguide/restapi-integration-response-{rel}.html", "name": "integrationresponse", "templated": true }, { "href": "http://docs.aws.amazon.com/apigateway/latest/developerguide/restapi-method-{rel}.html", "name": "method", "templated": true }, { "href": "http://docs.aws.amazon.com/apigateway/latest/developerguide/restapi-method-response-{rel}.html", "name": "methodresponse", "templated": true } ], "self": { "href": "/restapis/fugvjdxtri/resources/3kzxbg5sa2/methods/GET", "name": "GET", "title": "GET" }, "integration:put": { "href": "/restapis/fugvjdxtri/resources/3kzxbg5sa2/methods/GET/integration" }, "method:delete": { "href": "/restapis/fugvjdxtri/resources/3kzxbg5sa2/methods/GET" }, "method:integration": { "href": "/restapis/fugvjdxtri/resources/3kzxbg5sa2/methods/GET/integration" }, "method:responses": { "href": "/restapis/fugvjdxtri/resources/3kzxbg5sa2/methods/GET/responses/200", "name": "200", "title": "200" }, "method:update": { "href": "/restapis/fugvjdxtri/resources/3kzxbg5sa2/methods/GET" }, "methodresponse:put": { "href": "/restapis/fugvjdxtri/resources/3kzxbg5sa2/methods/GET/responses/{status_code}", "templated": true } }, "apiKeyRequired": false, "authorizationType": "NONE", "httpMethod": "GET", "_embedded": { "method:integration": { "_links": { "self": { "href": "/restapis/fugvjdxtri/resources/3kzxbg5sa2/methods/GET/integration" }, "integration:delete": { "href": "/restapis/fugvjdxtri/resources/3kzxbg5sa2/methods/GET/integration" }, "integration:responses": { "href": "/restapis/fugvjdxtri/resources/3kzxbg5sa2/methods/GET/integration/responses/200", "name": "200", "title": "200" }, "integration:update": { "href": "/restapis/fugvjdxtri/resources/3kzxbg5sa2/methods/GET/integration" }, "integrationresponse:put": { "href": "/restapis/fugvjdxtri/resources/3kzxbg5sa2/methods/GET/integration/responses/{status_code}", "templated": true } }, "cacheKeyParameters": [], "cacheNamespace": "3kzxbg5sa2", "credentials": "arn:aws:iam::123456789012:role/apigAwsProxyRole", "httpMethod": "POST", "passthroughBehavior": "WHEN_NO_MATCH", "requestParameters": { "integration.request.header.Content-Type": "'application/x-amz-json-1.1'" }, "requestTemplates": { "application/json": "{\n}" }, "type": "AWS", "uri": "arn:aws:apigateway:us-east-1:kinesis:action/ListStreams", "_embedded": { "integration:responses": { "_links": { "self": { "href": "/restapis/fugvjdxtri/resources/3kzxbg5sa2/methods/GET/integration/responses/200", "name": "200", "title": "200" }, "integrationresponse:delete": { "href": "/restapis/fugvjdxtri/resources/3kzxbg5sa2/methods/GET/integration/responses/200" }, "integrationresponse:update": { "href": "/restapis/fugvjdxtri/resources/3kzxbg5sa2/methods/GET/integration/responses/200" } }, "responseParameters": { "method.response.header.Content-Type": "'application/xml'" }, "responseTemplates": { "application/json": "$util.urlDecode(\"%3CkinesisStreams%3E#foreach($stream in $input.path('$.StreamNames'))%3Cstream%3E%3Cname%3E$stream%3C/name%3E%3C/stream%3E#end%3C/kinesisStreams%3E\")\n" }, "statusCode": "200" } } }, "method:responses": { "_links": { "self": { "href": "/restapis/fugvjdxtri/resources/3kzxbg5sa2/methods/GET/responses/200", "name": "200", "title": "200" }, "methodresponse:delete": { "href": "/restapis/fugvjdxtri/resources/3kzxbg5sa2/methods/GET/responses/200" }, "methodresponse:update": { "href": "/restapis/fugvjdxtri/resources/3kzxbg5sa2/methods/GET/responses/200" } }, "responseModels": { "application/json": "Empty" }, "responseParameters": { "method.response.header.Content-Type": false }, "statusCode": "200" } } } If the OPTIONS is enabled on the resource, you can follow the example here to get that method. Just replace the GET of the last path segment in the request URL with OPTIONS. - */ - resourceMethods?: MapOfMethod; - } - export interface Resources { - position?: String; - /** - * The current page of elements from this collection. - */ - items?: ListOfResource; - } - export interface RestApi { - /** - * The API's identifier. This identifier is unique across all of your APIs in Amazon API Gateway. - */ - id?: String; - /** - * The API's name. - */ - name?: String; - /** - * The API's description. - */ - description?: String; - /** - * The timestamp when the API was created. - */ - createdDate?: Timestamp; - /** - * A version identifier for the API. - */ - version?: String; - /** - * The warning messages reported when failonwarnings is turned on during API import. - */ - warnings?: ListOfString; - /** - * The list of binary media types supported by the RestApi. By default, the RestApi supports only UTF-8-encoded text payloads. - */ - binaryMediaTypes?: ListOfString; - } - export interface RestApis { - position?: String; - /** - * The current page of elements from this collection. - */ - items?: ListOfRestApi; - } - export interface SdkConfigurationProperty { - /** - * The name of a an SdkType configuration property. - */ - name?: String; - /** - * The user-friendly name of an SdkType configuration property. - */ - friendlyName?: String; - /** - * The description of an SdkType configuration property. - */ - description?: String; - /** - * A boolean flag of an SdkType configuration property to indicate if the associated SDK configuration property is required (true) or not (false). - */ - required?: Boolean; - /** - * The default value of an SdkType configuration property. - */ - defaultValue?: String; - } - export interface SdkResponse { - /** - * The content-type header value in the HTTP response. - */ - contentType?: String; - /** - * The content-disposition header value in the HTTP response. - */ - contentDisposition?: String; - /** - * The binary blob response to GetSdk, which contains the generated SDK. - */ - body?: _Blob; - } - export interface SdkType { - /** - * The identifier of an SdkType instance. - */ - id?: String; - /** - * The user-friendly name of an SdkType instance. - */ - friendlyName?: String; - /** - * The description of an SdkType. - */ - description?: String; - /** - * A list of configuration properties of an SdkType. - */ - configurationProperties?: ListOfSdkConfigurationProperty; - } - export interface SdkTypes { - position?: String; - /** - * The current page of elements from this collection. - */ - items?: ListOfSdkType; - } - export interface Stage { - /** - * The identifier of the Deployment that the stage points to. - */ - deploymentId?: String; - /** - * The identifier of a client certificate for an API stage. - */ - clientCertificateId?: String; - /** - * The name of the stage is the first path segment in the Uniform Resource Identifier (URI) of a call to Amazon API Gateway. - */ - stageName?: String; - /** - * The stage's description. - */ - description?: String; - /** - * Specifies whether a cache cluster is enabled for the stage. - */ - cacheClusterEnabled?: Boolean; - /** - * The size of the cache cluster for the stage, if enabled. - */ - cacheClusterSize?: CacheClusterSize; - /** - * The status of the cache cluster for the stage, if enabled. - */ - cacheClusterStatus?: CacheClusterStatus; - /** - * A map that defines the method settings for a Stage resource. Keys (designated as /{method_setting_key below) are method paths defined as {resource_path}/{http_method} for an individual method override, or /\*\* for overriding all methods in the stage. - */ - methodSettings?: MapOfMethodSettings; - /** - * A map that defines the stage variables for a Stage resource. Variable names can have alphanumeric and underscore characters, and the values must match [A-Za-z0-9-._~:/?#&=,]+. - */ - variables?: MapOfStringToString; - /** - * The version of the associated API documentation. - */ - documentationVersion?: String; - /** - * The timestamp when the stage was created. - */ - createdDate?: Timestamp; - /** - * The timestamp when the stage last updated. - */ - lastUpdatedDate?: Timestamp; - } - export interface StageKey { - /** - * The string identifier of the associated RestApi. - */ - restApiId?: String; - /** - * The stage name associated with the stage key. - */ - stageName?: String; - } - export interface Stages { - /** - * The current page of elements from this collection. - */ - item?: ListOfStage; - } - export type StatusCode = string; - export type String = string; - export interface Template { - /** - * The Apache Velocity Template Language (VTL) template content used for the template resource. - */ - value?: String; - } - export interface TestInvokeAuthorizerRequest { - /** - * The string identifier of the associated RestApi. - */ - restApiId: String; - /** - * Specifies a test invoke authorizer request's Authorizer ID. - */ - authorizerId: String; - /** - * [Required] A key-value map of headers to simulate an incoming invocation request. This is where the incoming authorization token, or identity source, should be specified. - */ - headers?: MapOfHeaderValues; - /** - * [Optional] The URI path, including query string, of the simulated invocation request. Use this to specify path parameters and query string parameters. - */ - pathWithQueryString?: String; - /** - * [Optional] The simulated request body of an incoming invocation request. - */ - body?: String; - /** - * A key-value map of stage variables to simulate an invocation on a deployed Stage. - */ - stageVariables?: MapOfStringToString; - /** - * [Optional] A key-value map of additional context variables. - */ - additionalContext?: MapOfStringToString; - } - export interface TestInvokeAuthorizerResponse { - /** - * The HTTP status code that the client would have received. Value is 0 if the authorizer succeeded. - */ - clientStatus?: Integer; - /** - * The Amazon API Gateway execution log for the test authorizer request. - */ - log?: String; - /** - * The execution latency of the test authorizer request. - */ - latency?: Long; - /** - * The principal identity returned by the Authorizer - */ - principalId?: String; - /** - * The JSON policy document returned by the Authorizer - */ - policy?: String; - authorization?: MapOfStringToList; - /** - * The open identity claims, with any supported custom attributes, returned from the Cognito Your User Pool configured for the API. - */ - claims?: MapOfStringToString; - } - export interface TestInvokeMethodRequest { - /** - * The string identifier of the associated RestApi. - */ - restApiId: String; - /** - * Specifies a test invoke method request's resource ID. - */ - resourceId: String; - /** - * Specifies a test invoke method request's HTTP method. - */ - httpMethod: String; - /** - * The URI path, including query string, of the simulated invocation request. Use this to specify path parameters and query string parameters. - */ - pathWithQueryString?: String; - /** - * The simulated request body of an incoming invocation request. - */ - body?: String; - /** - * A key-value map of headers to simulate an incoming invocation request. - */ - headers?: MapOfHeaderValues; - /** - * A ClientCertificate identifier to use in the test invocation. API Gateway will use the certificate when making the HTTPS request to the defined back-end endpoint. - */ - clientCertificateId?: String; - /** - * A key-value map of stage variables to simulate an invocation on a deployed Stage. - */ - stageVariables?: MapOfStringToString; - } - export interface TestInvokeMethodResponse { - /** - * The HTTP status code. - */ - status?: Integer; - /** - * The body of the HTTP response. - */ - body?: String; - /** - * The headers of the HTTP response. - */ - headers?: MapOfHeaderValues; - /** - * The Amazon API Gateway execution log for the test invoke request. - */ - log?: String; - /** - * The execution latency of the test invoke request. - */ - latency?: Long; - } - export interface ThrottleSettings { - /** - * The API request burst limit, the maximum rate limit over a time ranging from one to a few seconds, depending upon whether the underlying token bucket is at its full capacity. - */ - burstLimit?: Integer; - /** - * The API request steady-state rate limit. - */ - rateLimit?: Double; - } - export type Timestamp = Date; - export type UnauthorizedCacheControlHeaderStrategy = "FAIL_WITH_403"|"SUCCEED_WITH_RESPONSE_HEADER"|"SUCCEED_WITHOUT_RESPONSE_HEADER"|string; - export interface UpdateAccountRequest { - /** - * A list of update operations to be applied to the specified resource and in the order specified in this list. - */ - patchOperations?: ListOfPatchOperation; - } - export interface UpdateApiKeyRequest { - /** - * The identifier of the ApiKey resource to be updated. - */ - apiKey: String; - /** - * A list of update operations to be applied to the specified resource and in the order specified in this list. - */ - patchOperations?: ListOfPatchOperation; - } - export interface UpdateAuthorizerRequest { - /** - * The string identifier of the associated RestApi. - */ - restApiId: String; - /** - * The identifier of the Authorizer resource. - */ - authorizerId: String; - /** - * A list of update operations to be applied to the specified resource and in the order specified in this list. - */ - patchOperations?: ListOfPatchOperation; - } - export interface UpdateBasePathMappingRequest { - /** - * The domain name of the BasePathMapping resource to change. - */ - domainName: String; - /** - * The base path of the BasePathMapping resource to change. - */ - basePath: String; - /** - * A list of update operations to be applied to the specified resource and in the order specified in this list. - */ - patchOperations?: ListOfPatchOperation; - } - export interface UpdateClientCertificateRequest { - /** - * The identifier of the ClientCertificate resource to be updated. - */ - clientCertificateId: String; - /** - * A list of update operations to be applied to the specified resource and in the order specified in this list. - */ - patchOperations?: ListOfPatchOperation; - } - export interface UpdateDeploymentRequest { - /** - * The string identifier of the associated RestApi. - */ - restApiId: String; - /** - * The replacement identifier for the Deployment resource to change information about. - */ - deploymentId: String; - /** - * A list of update operations to be applied to the specified resource and in the order specified in this list. - */ - patchOperations?: ListOfPatchOperation; - } - export interface UpdateDocumentationPartRequest { - /** - * [Required] The string identifier of the associated RestApi. - */ - restApiId: String; - /** - * [Required] The identifier of the to-be-updated documentation part. - */ - documentationPartId: String; - /** - * A list of update operations to be applied to the specified resource and in the order specified in this list. - */ - patchOperations?: ListOfPatchOperation; - } - export interface UpdateDocumentationVersionRequest { - /** - * [Required] The string identifier of the associated RestApi.. - */ - restApiId: String; - /** - * [Required] The version identifier of the to-be-updated documentation version. - */ - documentationVersion: String; - /** - * A list of update operations to be applied to the specified resource and in the order specified in this list. - */ - patchOperations?: ListOfPatchOperation; - } - export interface UpdateDomainNameRequest { - /** - * The name of the DomainName resource to be changed. - */ - domainName: String; - /** - * A list of update operations to be applied to the specified resource and in the order specified in this list. - */ - patchOperations?: ListOfPatchOperation; - } - export interface UpdateGatewayResponseRequest { - /** - * The string identifier of the associated RestApi. - */ - restApiId: String; - /** - * The response type of the associated GatewayResponse. Valid values are ACCESS_DENIEDAPI_CONFIGURATION_ERRORAUTHORIZER_FAILURE AUTHORIZER_CONFIGURATION_ERRORBAD_REQUEST_PARAMETERSBAD_REQUEST_BODYDEFAULT_4XXDEFAULT_5XXEXPIRED_TOKENINVALID_SIGNATUREINTEGRATION_FAILUREINTEGRATION_TIMEOUTINVALID_API_KEYMISSING_AUTHENTICATION_TOKEN QUOTA_EXCEEDEDREQUEST_TOO_LARGERESOURCE_NOT_FOUNDTHROTTLEDUNAUTHORIZEDUNSUPPORTED_MEDIA_TYPES - */ - responseType: GatewayResponseType; - /** - * A list of update operations to be applied to the specified resource and in the order specified in this list. - */ - patchOperations?: ListOfPatchOperation; - } - export interface UpdateIntegrationRequest { - /** - * The string identifier of the associated RestApi. - */ - restApiId: String; - /** - * Represents an update integration request's resource identifier. - */ - resourceId: String; - /** - * Represents an update integration request's HTTP method. - */ - httpMethod: String; - /** - * A list of update operations to be applied to the specified resource and in the order specified in this list. - */ - patchOperations?: ListOfPatchOperation; - } - export interface UpdateIntegrationResponseRequest { - /** - * The string identifier of the associated RestApi. - */ - restApiId: String; - /** - * Specifies an update integration response request's resource identifier. - */ - resourceId: String; - /** - * Specifies an update integration response request's HTTP method. - */ - httpMethod: String; - /** - * Specifies an update integration response request's status code. - */ - statusCode: StatusCode; - /** - * A list of update operations to be applied to the specified resource and in the order specified in this list. - */ - patchOperations?: ListOfPatchOperation; - } - export interface UpdateMethodRequest { - /** - * The string identifier of the associated RestApi. - */ - restApiId: String; - /** - * The Resource identifier for the Method resource. - */ - resourceId: String; - /** - * The HTTP verb of the Method resource. - */ - httpMethod: String; - /** - * A list of update operations to be applied to the specified resource and in the order specified in this list. - */ - patchOperations?: ListOfPatchOperation; - } - export interface UpdateMethodResponseRequest { - /** - * The string identifier of the associated RestApi. - */ - restApiId: String; - /** - * The Resource identifier for the MethodResponse resource. - */ - resourceId: String; - /** - * The HTTP verb of the Method resource. - */ - httpMethod: String; - /** - * The status code for the MethodResponse resource. - */ - statusCode: StatusCode; - /** - * A list of update operations to be applied to the specified resource and in the order specified in this list. - */ - patchOperations?: ListOfPatchOperation; - } - export interface UpdateModelRequest { - /** - * The string identifier of the associated RestApi. - */ - restApiId: String; - /** - * The name of the model to update. - */ - modelName: String; - /** - * A list of update operations to be applied to the specified resource and in the order specified in this list. - */ - patchOperations?: ListOfPatchOperation; - } - export interface UpdateRequestValidatorRequest { - /** - * The string identifier of the associated RestApi. - */ - restApiId: String; - /** - * [Required] The identifier of RequestValidator to be updated. - */ - requestValidatorId: String; - /** - * A list of update operations to be applied to the specified resource and in the order specified in this list. - */ - patchOperations?: ListOfPatchOperation; - } - export interface UpdateResourceRequest { - /** - * The string identifier of the associated RestApi. - */ - restApiId: String; - /** - * The identifier of the Resource resource. - */ - resourceId: String; - /** - * A list of update operations to be applied to the specified resource and in the order specified in this list. - */ - patchOperations?: ListOfPatchOperation; - } - export interface UpdateRestApiRequest { - /** - * The string identifier of the associated RestApi. - */ - restApiId: String; - /** - * A list of update operations to be applied to the specified resource and in the order specified in this list. - */ - patchOperations?: ListOfPatchOperation; - } - export interface UpdateStageRequest { - /** - * The string identifier of the associated RestApi. - */ - restApiId: String; - /** - * The name of the Stage resource to change information about. - */ - stageName: String; - /** - * A list of update operations to be applied to the specified resource and in the order specified in this list. - */ - patchOperations?: ListOfPatchOperation; - } - export interface UpdateUsagePlanRequest { - /** - * The Id of the to-be-updated usage plan. - */ - usagePlanId: String; - /** - * A list of update operations to be applied to the specified resource and in the order specified in this list. - */ - patchOperations?: ListOfPatchOperation; - } - export interface UpdateUsageRequest { - /** - * The Id of the usage plan associated with the usage data. - */ - usagePlanId: String; - /** - * The identifier of the API key associated with the usage plan in which a temporary extension is granted to the remaining quota. - */ - keyId: String; - /** - * A list of update operations to be applied to the specified resource and in the order specified in this list. - */ - patchOperations?: ListOfPatchOperation; - } - export interface Usage { - /** - * The plan Id associated with this usage data. - */ - usagePlanId?: String; - /** - * The starting date of the usage data. - */ - startDate?: String; - /** - * The ending date of the usage data. - */ - endDate?: String; - position?: String; - /** - * The usage data, as daily logs of used and remaining quotas, over the specified time interval indexed over the API keys in a usage plan. For example, {..., "values" : { "{api_key}" : [ [0, 100], [10, 90], [100, 10]]}, where {api_key} stands for an API key value and the daily log entry is of the format [used quota, remaining quota]. - */ - items?: MapOfKeyUsages; - } - export interface UsagePlan { - /** - * The identifier of a UsagePlan resource. - */ - id?: String; - /** - * The name of a usage plan. - */ - name?: String; - /** - * The description of a usage plan. - */ - description?: String; - /** - * The associated API stages of a usage plan. - */ - apiStages?: ListOfApiStage; - /** - * The request throttle limits of a usage plan. - */ - throttle?: ThrottleSettings; - /** - * The maximum number of permitted requests per a given unit time interval. - */ - quota?: QuotaSettings; - /** - * The AWS Markeplace product identifier to associate with the usage plan as a SaaS product on AWS Marketplace. - */ - productCode?: String; - } - export interface UsagePlanKey { - /** - * The Id of a usage plan key. - */ - id?: String; - /** - * The type of a usage plan key. Currently, the valid key type is API_KEY. - */ - type?: String; - /** - * The value of a usage plan key. - */ - value?: String; - /** - * The name of a usage plan key. - */ - name?: String; - } - export interface UsagePlanKeys { - position?: String; - /** - * The current page of elements from this collection. - */ - items?: ListOfUsagePlanKey; - } - export interface UsagePlans { - position?: String; - /** - * The current page of elements from this collection. - */ - items?: ListOfUsagePlan; - } - /** - * A string in YYYY-MM-DD format that represents the latest possible API version that can be used in this service. Specify 'latest' to use the latest possible version. - */ - export type apiVersion = "2015-07-09"|"latest"|string; - export interface ClientApiVersions { - /** - * A string in YYYY-MM-DD format that represents the latest possible API version that can be used in this service. Specify 'latest' to use the latest possible version. - */ - apiVersion?: apiVersion; - } - export type ClientConfiguration = ServiceConfigurationOptions & ClientApiVersions; - /** - * Contains interfaces for use with the APIGateway client. - */ - export import Types = APIGateway; -} -export = APIGateway; diff --git a/workshops/monte-carlo-on-ec2-spot-fleet/src/web/node_modules/aws-sdk/clients/apigateway.js b/workshops/monte-carlo-on-ec2-spot-fleet/src/web/node_modules/aws-sdk/clients/apigateway.js deleted file mode 100644 index f73296e2..00000000 --- a/workshops/monte-carlo-on-ec2-spot-fleet/src/web/node_modules/aws-sdk/clients/apigateway.js +++ /dev/null @@ -1,19 +0,0 @@ -require('../lib/node_loader'); -var AWS = require('../lib/core'); -var Service = AWS.Service; -var apiLoader = AWS.apiLoader; - -apiLoader.services['apigateway'] = {}; -AWS.APIGateway = Service.defineService('apigateway', ['2015-07-09']); -require('../lib/services/apigateway'); -Object.defineProperty(apiLoader.services['apigateway'], '2015-07-09', { - get: function get() { - var model = require('../apis/apigateway-2015-07-09.min.json'); - model.paginators = require('../apis/apigateway-2015-07-09.paginators.json').pagination; - return model; - }, - enumerable: true, - configurable: true -}); - -module.exports = AWS.APIGateway; diff --git a/workshops/monte-carlo-on-ec2-spot-fleet/src/web/node_modules/aws-sdk/clients/applicationautoscaling.d.ts b/workshops/monte-carlo-on-ec2-spot-fleet/src/web/node_modules/aws-sdk/clients/applicationautoscaling.d.ts deleted file mode 100644 index 33b5ebb3..00000000 --- a/workshops/monte-carlo-on-ec2-spot-fleet/src/web/node_modules/aws-sdk/clients/applicationautoscaling.d.ts +++ /dev/null @@ -1,558 +0,0 @@ -import {Request} from '../lib/request'; -import {Response} from '../lib/response'; -import {AWSError} from '../lib/error'; -import {Service} from '../lib/service'; -import {ServiceConfigurationOptions} from '../lib/service'; -import {ConfigBase as Config} from '../lib/config'; -interface Blob {} -declare class ApplicationAutoScaling extends Service { - /** - * Constructs a service object. This object has one method for each API operation. - */ - constructor(options?: ApplicationAutoScaling.Types.ClientConfiguration) - config: Config & ApplicationAutoScaling.Types.ClientConfiguration; - /** - * Deletes the specified Application Auto Scaling scaling policy. Deleting a policy deletes the underlying alarm action, but does not delete the CloudWatch alarm associated with the scaling policy, even if it no longer has an associated action. To create a scaling policy or update an existing one, see PutScalingPolicy. - */ - deleteScalingPolicy(params: ApplicationAutoScaling.Types.DeleteScalingPolicyRequest, callback?: (err: AWSError, data: ApplicationAutoScaling.Types.DeleteScalingPolicyResponse) => void): Request; - /** - * Deletes the specified Application Auto Scaling scaling policy. Deleting a policy deletes the underlying alarm action, but does not delete the CloudWatch alarm associated with the scaling policy, even if it no longer has an associated action. To create a scaling policy or update an existing one, see PutScalingPolicy. - */ - deleteScalingPolicy(callback?: (err: AWSError, data: ApplicationAutoScaling.Types.DeleteScalingPolicyResponse) => void): Request; - /** - * Deregisters a scalable target. Deregistering a scalable target deletes the scaling policies that are associated with it. To create a scalable target or update an existing one, see RegisterScalableTarget. - */ - deregisterScalableTarget(params: ApplicationAutoScaling.Types.DeregisterScalableTargetRequest, callback?: (err: AWSError, data: ApplicationAutoScaling.Types.DeregisterScalableTargetResponse) => void): Request; - /** - * Deregisters a scalable target. Deregistering a scalable target deletes the scaling policies that are associated with it. To create a scalable target or update an existing one, see RegisterScalableTarget. - */ - deregisterScalableTarget(callback?: (err: AWSError, data: ApplicationAutoScaling.Types.DeregisterScalableTargetResponse) => void): Request; - /** - * Provides descriptive information about the scalable targets in the specified namespace. You can filter the results using the ResourceIds and ScalableDimension parameters. To create a scalable target or update an existing one, see RegisterScalableTarget. If you are no longer using a scalable target, you can deregister it using DeregisterScalableTarget. - */ - describeScalableTargets(params: ApplicationAutoScaling.Types.DescribeScalableTargetsRequest, callback?: (err: AWSError, data: ApplicationAutoScaling.Types.DescribeScalableTargetsResponse) => void): Request; - /** - * Provides descriptive information about the scalable targets in the specified namespace. You can filter the results using the ResourceIds and ScalableDimension parameters. To create a scalable target or update an existing one, see RegisterScalableTarget. If you are no longer using a scalable target, you can deregister it using DeregisterScalableTarget. - */ - describeScalableTargets(callback?: (err: AWSError, data: ApplicationAutoScaling.Types.DescribeScalableTargetsResponse) => void): Request; - /** - * Provides descriptive information about the scaling activities in the specified namespace from the previous six weeks. You can filter the results using the ResourceId and ScalableDimension parameters. Scaling activities are triggered by CloudWatch alarms that are associated with scaling policies. To view the scaling policies for a service namespace, see DescribeScalingPolicies. To create a scaling policy or update an existing one, see PutScalingPolicy. - */ - describeScalingActivities(params: ApplicationAutoScaling.Types.DescribeScalingActivitiesRequest, callback?: (err: AWSError, data: ApplicationAutoScaling.Types.DescribeScalingActivitiesResponse) => void): Request; - /** - * Provides descriptive information about the scaling activities in the specified namespace from the previous six weeks. You can filter the results using the ResourceId and ScalableDimension parameters. Scaling activities are triggered by CloudWatch alarms that are associated with scaling policies. To view the scaling policies for a service namespace, see DescribeScalingPolicies. To create a scaling policy or update an existing one, see PutScalingPolicy. - */ - describeScalingActivities(callback?: (err: AWSError, data: ApplicationAutoScaling.Types.DescribeScalingActivitiesResponse) => void): Request; - /** - * Provides descriptive information about the scaling policies in the specified namespace. You can filter the results using the ResourceId, ScalableDimension, and PolicyNames parameters. To create a scaling policy or update an existing one, see PutScalingPolicy. If you are no longer using a scaling policy, you can delete it using DeleteScalingPolicy. - */ - describeScalingPolicies(params: ApplicationAutoScaling.Types.DescribeScalingPoliciesRequest, callback?: (err: AWSError, data: ApplicationAutoScaling.Types.DescribeScalingPoliciesResponse) => void): Request; - /** - * Provides descriptive information about the scaling policies in the specified namespace. You can filter the results using the ResourceId, ScalableDimension, and PolicyNames parameters. To create a scaling policy or update an existing one, see PutScalingPolicy. If you are no longer using a scaling policy, you can delete it using DeleteScalingPolicy. - */ - describeScalingPolicies(callback?: (err: AWSError, data: ApplicationAutoScaling.Types.DescribeScalingPoliciesResponse) => void): Request; - /** - * Creates or updates a policy for an Application Auto Scaling scalable target. Each scalable target is identified by a service namespace, resource ID, and scalable dimension. A scaling policy applies to the scalable target identified by those three attributes. You cannot create a scaling policy without first registering a scalable target using RegisterScalableTarget. To update a policy, specify its policy name and the parameters that you want to change. Any parameters that you don't specify are not changed by this update request. You can view the scaling policies for a service namespace using DescribeScalingPolicies. If you are no longer using a scaling policy, you can delete it using DeleteScalingPolicy. - */ - putScalingPolicy(params: ApplicationAutoScaling.Types.PutScalingPolicyRequest, callback?: (err: AWSError, data: ApplicationAutoScaling.Types.PutScalingPolicyResponse) => void): Request; - /** - * Creates or updates a policy for an Application Auto Scaling scalable target. Each scalable target is identified by a service namespace, resource ID, and scalable dimension. A scaling policy applies to the scalable target identified by those three attributes. You cannot create a scaling policy without first registering a scalable target using RegisterScalableTarget. To update a policy, specify its policy name and the parameters that you want to change. Any parameters that you don't specify are not changed by this update request. You can view the scaling policies for a service namespace using DescribeScalingPolicies. If you are no longer using a scaling policy, you can delete it using DeleteScalingPolicy. - */ - putScalingPolicy(callback?: (err: AWSError, data: ApplicationAutoScaling.Types.PutScalingPolicyResponse) => void): Request; - /** - * Registers or updates a scalable target. A scalable target is a resource that Application Auto Scaling can scale out or scale in. After you have registered a scalable target, you can use this operation to update the minimum and maximum values for your scalable dimension. After you register a scalable target, you can create and apply scaling policies using PutScalingPolicy. You can view the scaling policies for a service namespace using DescribeScalableTargets. If you are no longer using a scalable target, you can deregister it using DeregisterScalableTarget. - */ - registerScalableTarget(params: ApplicationAutoScaling.Types.RegisterScalableTargetRequest, callback?: (err: AWSError, data: ApplicationAutoScaling.Types.RegisterScalableTargetResponse) => void): Request; - /** - * Registers or updates a scalable target. A scalable target is a resource that Application Auto Scaling can scale out or scale in. After you have registered a scalable target, you can use this operation to update the minimum and maximum values for your scalable dimension. After you register a scalable target, you can create and apply scaling policies using PutScalingPolicy. You can view the scaling policies for a service namespace using DescribeScalableTargets. If you are no longer using a scalable target, you can deregister it using DeregisterScalableTarget. - */ - registerScalableTarget(callback?: (err: AWSError, data: ApplicationAutoScaling.Types.RegisterScalableTargetResponse) => void): Request; -} -declare namespace ApplicationAutoScaling { - export type AdjustmentType = "ChangeInCapacity"|"PercentChangeInCapacity"|"ExactCapacity"|string; - export interface Alarm { - /** - * The name of the alarm. - */ - AlarmName: ResourceId; - /** - * The Amazon Resource Name (ARN) of the alarm. - */ - AlarmARN: ResourceId; - } - export type Alarms = Alarm[]; - export type Cooldown = number; - export interface CustomizedMetricSpecification { - /** - * The name of the metric. - */ - MetricName: MetricName; - /** - * The namespace of the metric. - */ - Namespace: MetricNamespace; - /** - * The dimensions of the metric. - */ - Dimensions?: MetricDimensions; - /** - * The statistic of the metric. - */ - Statistic: MetricStatistic; - /** - * The unit of the metric. - */ - Unit?: MetricUnit; - } - export interface DeleteScalingPolicyRequest { - /** - * The name of the scaling policy. - */ - PolicyName: ResourceIdMaxLen1600; - /** - * The namespace of the AWS service. For more information, see AWS Service Namespaces in the Amazon Web Services General Reference. - */ - ServiceNamespace: ServiceNamespace; - /** - * The identifier of the resource associated with the scalable target. This string consists of the resource type and unique identifier. ECS service - The resource type is service and the unique identifier is the cluster name and service name. Example: service/default/sample-webapp. Spot fleet request - The resource type is spot-fleet-request and the unique identifier is the Spot fleet request ID. Example: spot-fleet-request/sfr-73fbd2ce-aa30-494c-8788-1cee4EXAMPLE. EMR cluster - The resource type is instancegroup and the unique identifier is the cluster ID and instance group ID. Example: instancegroup/j-2EEZNYKUA1NTV/ig-1791Y4E1L8YI0. AppStream 2.0 fleet - The resource type is fleet and the unique identifier is the fleet name. Example: fleet/sample-fleet. DynamoDB table - The resource type is table and the unique identifier is the resource ID. Example: table/my-table. DynamoDB global secondary index - The resource type is index and the unique identifier is the resource ID. Example: table/my-table/index/my-table-index. - */ - ResourceId: ResourceIdMaxLen1600; - /** - * The scalable dimension. This string consists of the service namespace, resource type, and scaling property. ecs:service:DesiredCount - The desired task count of an ECS service. ec2:spot-fleet-request:TargetCapacity - The target capacity of a Spot fleet request. elasticmapreduce:instancegroup:InstanceCount - The instance count of an EMR Instance Group. appstream:fleet:DesiredCapacity - The desired capacity of an AppStream 2.0 fleet. dynamodb:table:ReadCapacityUnits - The provisioned read capacity for a DynamoDB table. dynamodb:table:WriteCapacityUnits - The provisioned write capacity for a DynamoDB table. dynamodb:index:ReadCapacityUnits - The provisioned read capacity for a DynamoDB global secondary index. dynamodb:index:WriteCapacityUnits - The provisioned write capacity for a DynamoDB global secondary index. - */ - ScalableDimension: ScalableDimension; - } - export interface DeleteScalingPolicyResponse { - } - export interface DeregisterScalableTargetRequest { - /** - * The namespace of the AWS service. For more information, see AWS Service Namespaces in the Amazon Web Services General Reference. - */ - ServiceNamespace: ServiceNamespace; - /** - * The identifier of the resource associated with the scalable target. This string consists of the resource type and unique identifier. ECS service - The resource type is service and the unique identifier is the cluster name and service name. Example: service/default/sample-webapp. Spot fleet request - The resource type is spot-fleet-request and the unique identifier is the Spot fleet request ID. Example: spot-fleet-request/sfr-73fbd2ce-aa30-494c-8788-1cee4EXAMPLE. EMR cluster - The resource type is instancegroup and the unique identifier is the cluster ID and instance group ID. Example: instancegroup/j-2EEZNYKUA1NTV/ig-1791Y4E1L8YI0. AppStream 2.0 fleet - The resource type is fleet and the unique identifier is the fleet name. Example: fleet/sample-fleet. DynamoDB table - The resource type is table and the unique identifier is the resource ID. Example: table/my-table. DynamoDB global secondary index - The resource type is index and the unique identifier is the resource ID. Example: table/my-table/index/my-table-index. - */ - ResourceId: ResourceIdMaxLen1600; - /** - * The scalable dimension associated with the scalable target. This string consists of the service namespace, resource type, and scaling property. ecs:service:DesiredCount - The desired task count of an ECS service. ec2:spot-fleet-request:TargetCapacity - The target capacity of a Spot fleet request. elasticmapreduce:instancegroup:InstanceCount - The instance count of an EMR Instance Group. appstream:fleet:DesiredCapacity - The desired capacity of an AppStream 2.0 fleet. dynamodb:table:ReadCapacityUnits - The provisioned read capacity for a DynamoDB table. dynamodb:table:WriteCapacityUnits - The provisioned write capacity for a DynamoDB table. dynamodb:index:ReadCapacityUnits - The provisioned read capacity for a DynamoDB global secondary index. dynamodb:index:WriteCapacityUnits - The provisioned write capacity for a DynamoDB global secondary index. - */ - ScalableDimension: ScalableDimension; - } - export interface DeregisterScalableTargetResponse { - } - export interface DescribeScalableTargetsRequest { - /** - * The namespace of the AWS service. For more information, see AWS Service Namespaces in the Amazon Web Services General Reference. - */ - ServiceNamespace: ServiceNamespace; - /** - * The identifier of the resource associated with the scalable target. This string consists of the resource type and unique identifier. If you specify a scalable dimension, you must also specify a resource ID. ECS service - The resource type is service and the unique identifier is the cluster name and service name. Example: service/default/sample-webapp. Spot fleet request - The resource type is spot-fleet-request and the unique identifier is the Spot fleet request ID. Example: spot-fleet-request/sfr-73fbd2ce-aa30-494c-8788-1cee4EXAMPLE. EMR cluster - The resource type is instancegroup and the unique identifier is the cluster ID and instance group ID. Example: instancegroup/j-2EEZNYKUA1NTV/ig-1791Y4E1L8YI0. AppStream 2.0 fleet - The resource type is fleet and the unique identifier is the fleet name. Example: fleet/sample-fleet. DynamoDB table - The resource type is table and the unique identifier is the resource ID. Example: table/my-table. DynamoDB global secondary index - The resource type is index and the unique identifier is the resource ID. Example: table/my-table/index/my-table-index. - */ - ResourceIds?: ResourceIdsMaxLen1600; - /** - * The scalable dimension associated with the scalable target. This string consists of the service namespace, resource type, and scaling property. If you specify a scalable dimension, you must also specify a resource ID. ecs:service:DesiredCount - The desired task count of an ECS service. ec2:spot-fleet-request:TargetCapacity - The target capacity of a Spot fleet request. elasticmapreduce:instancegroup:InstanceCount - The instance count of an EMR Instance Group. appstream:fleet:DesiredCapacity - The desired capacity of an AppStream 2.0 fleet. dynamodb:table:ReadCapacityUnits - The provisioned read capacity for a DynamoDB table. dynamodb:table:WriteCapacityUnits - The provisioned write capacity for a DynamoDB table. dynamodb:index:ReadCapacityUnits - The provisioned read capacity for a DynamoDB global secondary index. dynamodb:index:WriteCapacityUnits - The provisioned write capacity for a DynamoDB global secondary index. - */ - ScalableDimension?: ScalableDimension; - /** - * The maximum number of scalable target results. This value can be between 1 and 50. The default value is 50. If this parameter is used, the operation returns up to MaxResults results at a time, along with a NextToken value. To get the next set of results, include the NextToken value in a subsequent call. If this parameter is not used, the operation returns up to 50 results and a NextToken value, if applicable. - */ - MaxResults?: MaxResults; - /** - * The token for the next set of results. - */ - NextToken?: XmlString; - } - export interface DescribeScalableTargetsResponse { - /** - * The list of scalable targets that matches the request parameters. - */ - ScalableTargets?: ScalableTargets; - /** - * The token required to get the next set of results. This value is null if there are no more results to return. - */ - NextToken?: XmlString; - } - export interface DescribeScalingActivitiesRequest { - /** - * The namespace of the AWS service. For more information, see AWS Service Namespaces in the Amazon Web Services General Reference. - */ - ServiceNamespace: ServiceNamespace; - /** - * The identifier of the resource associated with the scaling activity. This string consists of the resource type and unique identifier. If you specify a scalable dimension, you must also specify a resource ID. ECS service - The resource type is service and the unique identifier is the cluster name and service name. Example: service/default/sample-webapp. Spot fleet request - The resource type is spot-fleet-request and the unique identifier is the Spot fleet request ID. Example: spot-fleet-request/sfr-73fbd2ce-aa30-494c-8788-1cee4EXAMPLE. EMR cluster - The resource type is instancegroup and the unique identifier is the cluster ID and instance group ID. Example: instancegroup/j-2EEZNYKUA1NTV/ig-1791Y4E1L8YI0. AppStream 2.0 fleet - The resource type is fleet and the unique identifier is the fleet name. Example: fleet/sample-fleet. DynamoDB table - The resource type is table and the unique identifier is the resource ID. Example: table/my-table. DynamoDB global secondary index - The resource type is index and the unique identifier is the resource ID. Example: table/my-table/index/my-table-index. - */ - ResourceId?: ResourceIdMaxLen1600; - /** - * The scalable dimension. This string consists of the service namespace, resource type, and scaling property. If you specify a scalable dimension, you must also specify a resource ID. ecs:service:DesiredCount - The desired task count of an ECS service. ec2:spot-fleet-request:TargetCapacity - The target capacity of a Spot fleet request. elasticmapreduce:instancegroup:InstanceCount - The instance count of an EMR Instance Group. appstream:fleet:DesiredCapacity - The desired capacity of an AppStream 2.0 fleet. dynamodb:table:ReadCapacityUnits - The provisioned read capacity for a DynamoDB table. dynamodb:table:WriteCapacityUnits - The provisioned write capacity for a DynamoDB table. dynamodb:index:ReadCapacityUnits - The provisioned read capacity for a DynamoDB global secondary index. dynamodb:index:WriteCapacityUnits - The provisioned write capacity for a DynamoDB global secondary index. - */ - ScalableDimension?: ScalableDimension; - /** - * The maximum number of scalable target results. This value can be between 1 and 50. The default value is 50. If this parameter is used, the operation returns up to MaxResults results at a time, along with a NextToken value. To get the next set of results, include the NextToken value in a subsequent call. If this parameter is not used, the operation returns up to 50 results and a NextToken value, if applicable. - */ - MaxResults?: MaxResults; - /** - * The token for the next set of results. - */ - NextToken?: XmlString; - } - export interface DescribeScalingActivitiesResponse { - /** - * A list of scaling activity objects. - */ - ScalingActivities?: ScalingActivities; - /** - * The token required to get the next set of results. This value is null if there are no more results to return. - */ - NextToken?: XmlString; - } - export interface DescribeScalingPoliciesRequest { - /** - * The names of the scaling policies to describe. - */ - PolicyNames?: ResourceIdsMaxLen1600; - /** - * The namespace of the AWS service. For more information, see AWS Service Namespaces in the Amazon Web Services General Reference. - */ - ServiceNamespace: ServiceNamespace; - /** - * The identifier of the resource associated with the scaling policy. This string consists of the resource type and unique identifier. If you specify a scalable dimension, you must also specify a resource ID. ECS service - The resource type is service and the unique identifier is the cluster name and service name. Example: service/default/sample-webapp. Spot fleet request - The resource type is spot-fleet-request and the unique identifier is the Spot fleet request ID. Example: spot-fleet-request/sfr-73fbd2ce-aa30-494c-8788-1cee4EXAMPLE. EMR cluster - The resource type is instancegroup and the unique identifier is the cluster ID and instance group ID. Example: instancegroup/j-2EEZNYKUA1NTV/ig-1791Y4E1L8YI0. AppStream 2.0 fleet - The resource type is fleet and the unique identifier is the fleet name. Example: fleet/sample-fleet. DynamoDB table - The resource type is table and the unique identifier is the resource ID. Example: table/my-table. DynamoDB global secondary index - The resource type is index and the unique identifier is the resource ID. Example: table/my-table/index/my-table-index. - */ - ResourceId?: ResourceIdMaxLen1600; - /** - * The scalable dimension. This string consists of the service namespace, resource type, and scaling property. If you specify a scalable dimension, you must also specify a resource ID. ecs:service:DesiredCount - The desired task count of an ECS service. ec2:spot-fleet-request:TargetCapacity - The target capacity of a Spot fleet request. elasticmapreduce:instancegroup:InstanceCount - The instance count of an EMR Instance Group. appstream:fleet:DesiredCapacity - The desired capacity of an AppStream 2.0 fleet. dynamodb:table:ReadCapacityUnits - The provisioned read capacity for a DynamoDB table. dynamodb:table:WriteCapacityUnits - The provisioned write capacity for a DynamoDB table. dynamodb:index:ReadCapacityUnits - The provisioned read capacity for a DynamoDB global secondary index. dynamodb:index:WriteCapacityUnits - The provisioned write capacity for a DynamoDB global secondary index. - */ - ScalableDimension?: ScalableDimension; - /** - * The maximum number of scalable target results. This value can be between 1 and 50. The default value is 50. If this parameter is used, the operation returns up to MaxResults results at a time, along with a NextToken value. To get the next set of results, include the NextToken value in a subsequent call. If this parameter is not used, the operation returns up to 50 results and a NextToken value, if applicable. - */ - MaxResults?: MaxResults; - /** - * The token for the next set of results. - */ - NextToken?: XmlString; - } - export interface DescribeScalingPoliciesResponse { - /** - * A list of scaling policy objects. - */ - ScalingPolicies?: ScalingPolicies; - /** - * The token required to get the next set of results. This value is null if there are no more results to return. - */ - NextToken?: XmlString; - } - export type DisableScaleIn = boolean; - export type ErrorMessage = string; - export type MaxResults = number; - export type MetricAggregationType = "Average"|"Minimum"|"Maximum"|string; - export interface MetricDimension { - /** - * The name of the dimension. - */ - Name: MetricDimensionName; - /** - * The value of the dimension. - */ - Value: MetricDimensionValue; - } - export type MetricDimensionName = string; - export type MetricDimensionValue = string; - export type MetricDimensions = MetricDimension[]; - export type MetricName = string; - export type MetricNamespace = string; - export type MetricScale = number; - export type MetricStatistic = "Average"|"Minimum"|"Maximum"|"SampleCount"|"Sum"|string; - export type MetricType = "DynamoDBReadCapacityUtilization"|"DynamoDBWriteCapacityUtilization"|string; - export type MetricUnit = string; - export type MinAdjustmentMagnitude = number; - export type PolicyName = string; - export type PolicyType = "StepScaling"|"TargetTrackingScaling"|string; - export interface PredefinedMetricSpecification { - /** - * The metric type. - */ - PredefinedMetricType: MetricType; - /** - * Reserved for future use. - */ - ResourceLabel?: ResourceLabel; - } - export interface PutScalingPolicyRequest { - /** - * The name of the scaling policy. - */ - PolicyName: PolicyName; - /** - * The namespace of the AWS service. For more information, see AWS Service Namespaces in the Amazon Web Services General Reference. - */ - ServiceNamespace: ServiceNamespace; - /** - * The identifier of the resource associated with the scaling policy. This string consists of the resource type and unique identifier. ECS service - The resource type is service and the unique identifier is the cluster name and service name. Example: service/default/sample-webapp. Spot fleet request - The resource type is spot-fleet-request and the unique identifier is the Spot fleet request ID. Example: spot-fleet-request/sfr-73fbd2ce-aa30-494c-8788-1cee4EXAMPLE. EMR cluster - The resource type is instancegroup and the unique identifier is the cluster ID and instance group ID. Example: instancegroup/j-2EEZNYKUA1NTV/ig-1791Y4E1L8YI0. AppStream 2.0 fleet - The resource type is fleet and the unique identifier is the fleet name. Example: fleet/sample-fleet. DynamoDB table - The resource type is table and the unique identifier is the resource ID. Example: table/my-table. DynamoDB global secondary index - The resource type is index and the unique identifier is the resource ID. Example: table/my-table/index/my-table-index. - */ - ResourceId: ResourceIdMaxLen1600; - /** - * The scalable dimension. This string consists of the service namespace, resource type, and scaling property. ecs:service:DesiredCount - The desired task count of an ECS service. ec2:spot-fleet-request:TargetCapacity - The target capacity of a Spot fleet request. elasticmapreduce:instancegroup:InstanceCount - The instance count of an EMR Instance Group. appstream:fleet:DesiredCapacity - The desired capacity of an AppStream 2.0 fleet. dynamodb:table:ReadCapacityUnits - The provisioned read capacity for a DynamoDB table. dynamodb:table:WriteCapacityUnits - The provisioned write capacity for a DynamoDB table. dynamodb:index:ReadCapacityUnits - The provisioned read capacity for a DynamoDB global secondary index. dynamodb:index:WriteCapacityUnits - The provisioned write capacity for a DynamoDB global secondary index. - */ - ScalableDimension: ScalableDimension; - /** - * The policy type. If you are creating a new policy, this parameter is required. If you are updating a policy, this parameter is not required. For DynamoDB, only TargetTrackingScaling is supported. For any other service, only StepScaling is supported. - */ - PolicyType?: PolicyType; - /** - * A step scaling policy. This parameter is required if you are creating a policy and the policy type is StepScaling. - */ - StepScalingPolicyConfiguration?: StepScalingPolicyConfiguration; - /** - * A target tracking policy. This parameter is required if you are creating a new policy and the policy type is TargetTrackingScaling. - */ - TargetTrackingScalingPolicyConfiguration?: TargetTrackingScalingPolicyConfiguration; - } - export interface PutScalingPolicyResponse { - /** - * The Amazon Resource Name (ARN) of the resulting scaling policy. - */ - PolicyARN: ResourceIdMaxLen1600; - /** - * The CloudWatch alarms created for the target tracking policy. - */ - Alarms?: Alarms; - } - export interface RegisterScalableTargetRequest { - /** - * The namespace of the AWS service. For more information, see AWS Service Namespaces in the Amazon Web Services General Reference. - */ - ServiceNamespace: ServiceNamespace; - /** - * The identifier of the resource associated with the scalable target. This string consists of the resource type and unique identifier. ECS service - The resource type is service and the unique identifier is the cluster name and service name. Example: service/default/sample-webapp. Spot fleet request - The resource type is spot-fleet-request and the unique identifier is the Spot fleet request ID. Example: spot-fleet-request/sfr-73fbd2ce-aa30-494c-8788-1cee4EXAMPLE. EMR cluster - The resource type is instancegroup and the unique identifier is the cluster ID and instance group ID. Example: instancegroup/j-2EEZNYKUA1NTV/ig-1791Y4E1L8YI0. AppStream 2.0 fleet - The resource type is fleet and the unique identifier is the fleet name. Example: fleet/sample-fleet. DynamoDB table - The resource type is table and the unique identifier is the resource ID. Example: table/my-table. DynamoDB global secondary index - The resource type is index and the unique identifier is the resource ID. Example: table/my-table/index/my-table-index. - */ - ResourceId: ResourceIdMaxLen1600; - /** - * The scalable dimension associated with the scalable target. This string consists of the service namespace, resource type, and scaling property. ecs:service:DesiredCount - The desired task count of an ECS service. ec2:spot-fleet-request:TargetCapacity - The target capacity of a Spot fleet request. elasticmapreduce:instancegroup:InstanceCount - The instance count of an EMR Instance Group. appstream:fleet:DesiredCapacity - The desired capacity of an AppStream 2.0 fleet. dynamodb:table:ReadCapacityUnits - The provisioned read capacity for a DynamoDB table. dynamodb:table:WriteCapacityUnits - The provisioned write capacity for a DynamoDB table. dynamodb:index:ReadCapacityUnits - The provisioned read capacity for a DynamoDB global secondary index. dynamodb:index:WriteCapacityUnits - The provisioned write capacity for a DynamoDB global secondary index. - */ - ScalableDimension: ScalableDimension; - /** - * The minimum value to scale to in response to a scale in event. This parameter is required if you are registering a scalable target and optional if you are updating one. - */ - MinCapacity?: ResourceCapacity; - /** - * The maximum value to scale to in response to a scale out event. This parameter is required if you are registering a scalable target and optional if you are updating one. - */ - MaxCapacity?: ResourceCapacity; - /** - * The ARN of an IAM role that allows Application Auto Scaling to modify the scalable target on your behalf. This parameter is required when you register a scalable target and optional when you update one. - */ - RoleARN?: ResourceIdMaxLen1600; - } - export interface RegisterScalableTargetResponse { - } - export type ResourceCapacity = number; - export type ResourceId = string; - export type ResourceIdMaxLen1600 = string; - export type ResourceIdsMaxLen1600 = ResourceIdMaxLen1600[]; - export type ResourceLabel = string; - export type ScalableDimension = "ecs:service:DesiredCount"|"ec2:spot-fleet-request:TargetCapacity"|"elasticmapreduce:instancegroup:InstanceCount"|"appstream:fleet:DesiredCapacity"|"dynamodb:table:ReadCapacityUnits"|"dynamodb:table:WriteCapacityUnits"|"dynamodb:index:ReadCapacityUnits"|"dynamodb:index:WriteCapacityUnits"|string; - export interface ScalableTarget { - /** - * The namespace of the AWS service. For more information, see AWS Service Namespaces in the Amazon Web Services General Reference. - */ - ServiceNamespace: ServiceNamespace; - /** - * The identifier of the resource associated with the scalable target. This string consists of the resource type and unique identifier. ECS service - The resource type is service and the unique identifier is the cluster name and service name. Example: service/default/sample-webapp. Spot fleet request - The resource type is spot-fleet-request and the unique identifier is the Spot fleet request ID. Example: spot-fleet-request/sfr-73fbd2ce-aa30-494c-8788-1cee4EXAMPLE. EMR cluster - The resource type is instancegroup and the unique identifier is the cluster ID and instance group ID. Example: instancegroup/j-2EEZNYKUA1NTV/ig-1791Y4E1L8YI0. AppStream 2.0 fleet - The resource type is fleet and the unique identifier is the fleet name. Example: fleet/sample-fleet. DynamoDB table - The resource type is table and the unique identifier is the resource ID. Example: table/my-table. DynamoDB global secondary index - The resource type is index and the unique identifier is the resource ID. Example: table/my-table/index/my-table-index. - */ - ResourceId: ResourceIdMaxLen1600; - /** - * The scalable dimension associated with the scalable target. This string consists of the service namespace, resource type, and scaling property. ecs:service:DesiredCount - The desired task count of an ECS service. ec2:spot-fleet-request:TargetCapacity - The target capacity of a Spot fleet request. elasticmapreduce:instancegroup:InstanceCount - The instance count of an EMR Instance Group. appstream:fleet:DesiredCapacity - The desired capacity of an AppStream 2.0 fleet. dynamodb:table:ReadCapacityUnits - The provisioned read capacity for a DynamoDB table. dynamodb:table:WriteCapacityUnits - The provisioned write capacity for a DynamoDB table. dynamodb:index:ReadCapacityUnits - The provisioned read capacity for a DynamoDB global secondary index. dynamodb:index:WriteCapacityUnits - The provisioned write capacity for a DynamoDB global secondary index. - */ - ScalableDimension: ScalableDimension; - /** - * The minimum value to scale to in response to a scale in event. - */ - MinCapacity: ResourceCapacity; - /** - * The maximum value to scale to in response to a scale out event. - */ - MaxCapacity: ResourceCapacity; - /** - * The ARN of an IAM role that allows Application Auto Scaling to modify the scalable target on your behalf. - */ - RoleARN: ResourceIdMaxLen1600; - /** - * The Unix timestamp for when the scalable target was created. - */ - CreationTime: TimestampType; - } - export type ScalableTargets = ScalableTarget[]; - export type ScalingActivities = ScalingActivity[]; - export interface ScalingActivity { - /** - * The unique identifier of the scaling activity. - */ - ActivityId: ResourceId; - /** - * The namespace of the AWS service. For more information, see AWS Service Namespaces in the Amazon Web Services General Reference. - */ - ServiceNamespace: ServiceNamespace; - /** - * The identifier of the resource associated with the scaling activity. This string consists of the resource type and unique identifier. ECS service - The resource type is service and the unique identifier is the cluster name and service name. Example: service/default/sample-webapp. Spot fleet request - The resource type is spot-fleet-request and the unique identifier is the Spot fleet request ID. Example: spot-fleet-request/sfr-73fbd2ce-aa30-494c-8788-1cee4EXAMPLE. EMR cluster - The resource type is instancegroup and the unique identifier is the cluster ID and instance group ID. Example: instancegroup/j-2EEZNYKUA1NTV/ig-1791Y4E1L8YI0. AppStream 2.0 fleet - The resource type is fleet and the unique identifier is the fleet name. Example: fleet/sample-fleet. DynamoDB table - The resource type is table and the unique identifier is the resource ID. Example: table/my-table. DynamoDB global secondary index - The resource type is index and the unique identifier is the resource ID. Example: table/my-table/index/my-table-index. - */ - ResourceId: ResourceIdMaxLen1600; - /** - * The scalable dimension. This string consists of the service namespace, resource type, and scaling property. ecs:service:DesiredCount - The desired task count of an ECS service. ec2:spot-fleet-request:TargetCapacity - The target capacity of a Spot fleet request. elasticmapreduce:instancegroup:InstanceCount - The instance count of an EMR Instance Group. appstream:fleet:DesiredCapacity - The desired capacity of an AppStream 2.0 fleet. dynamodb:table:ReadCapacityUnits - The provisioned read capacity for a DynamoDB table. dynamodb:table:WriteCapacityUnits - The provisioned write capacity for a DynamoDB table. dynamodb:index:ReadCapacityUnits - The provisioned read capacity for a DynamoDB global secondary index. dynamodb:index:WriteCapacityUnits - The provisioned write capacity for a DynamoDB global secondary index. - */ - ScalableDimension: ScalableDimension; - /** - * A simple description of what action the scaling activity intends to accomplish. - */ - Description: XmlString; - /** - * A simple description of what caused the scaling activity to happen. - */ - Cause: XmlString; - /** - * The Unix timestamp for when the scaling activity began. - */ - StartTime: TimestampType; - /** - * The Unix timestamp for when the scaling activity ended. - */ - EndTime?: TimestampType; - /** - * Indicates the status of the scaling activity. - */ - StatusCode: ScalingActivityStatusCode; - /** - * A simple message about the current status of the scaling activity. - */ - StatusMessage?: XmlString; - /** - * The details about the scaling activity. - */ - Details?: XmlString; - } - export type ScalingActivityStatusCode = "Pending"|"InProgress"|"Successful"|"Overridden"|"Unfulfilled"|"Failed"|string; - export type ScalingAdjustment = number; - export type ScalingPolicies = ScalingPolicy[]; - export interface ScalingPolicy { - /** - * The Amazon Resource Name (ARN) of the scaling policy. - */ - PolicyARN: ResourceIdMaxLen1600; - /** - * The name of the scaling policy. - */ - PolicyName: PolicyName; - /** - * The namespace of the AWS service. For more information, see AWS Service Namespaces in the Amazon Web Services General Reference. - */ - ServiceNamespace: ServiceNamespace; - /** - * The identifier of the resource associated with the scaling policy. This string consists of the resource type and unique identifier. ECS service - The resource type is service and the unique identifier is the cluster name and service name. Example: service/default/sample-webapp. Spot fleet request - The resource type is spot-fleet-request and the unique identifier is the Spot fleet request ID. Example: spot-fleet-request/sfr-73fbd2ce-aa30-494c-8788-1cee4EXAMPLE. EMR cluster - The resource type is instancegroup and the unique identifier is the cluster ID and instance group ID. Example: instancegroup/j-2EEZNYKUA1NTV/ig-1791Y4E1L8YI0. AppStream 2.0 fleet - The resource type is fleet and the unique identifier is the fleet name. Example: fleet/sample-fleet. DynamoDB table - The resource type is table and the unique identifier is the resource ID. Example: table/my-table. DynamoDB global secondary index - The resource type is index and the unique identifier is the resource ID. Example: table/my-table/index/my-table-index. - */ - ResourceId: ResourceIdMaxLen1600; - /** - * The scalable dimension. This string consists of the service namespace, resource type, and scaling property. ecs:service:DesiredCount - The desired task count of an ECS service. ec2:spot-fleet-request:TargetCapacity - The target capacity of a Spot fleet request. elasticmapreduce:instancegroup:InstanceCount - The instance count of an EMR Instance Group. appstream:fleet:DesiredCapacity - The desired capacity of an AppStream 2.0 fleet. dynamodb:table:ReadCapacityUnits - The provisioned read capacity for a DynamoDB table. dynamodb:table:WriteCapacityUnits - The provisioned write capacity for a DynamoDB table. dynamodb:index:ReadCapacityUnits - The provisioned read capacity for a DynamoDB global secondary index. dynamodb:index:WriteCapacityUnits - The provisioned write capacity for a DynamoDB global secondary index. - */ - ScalableDimension: ScalableDimension; - /** - * The scaling policy type. - */ - PolicyType: PolicyType; - /** - * A step scaling policy. - */ - StepScalingPolicyConfiguration?: StepScalingPolicyConfiguration; - /** - * A target tracking policy. - */ - TargetTrackingScalingPolicyConfiguration?: TargetTrackingScalingPolicyConfiguration; - /** - * The CloudWatch alarms associated with the scaling policy. - */ - Alarms?: Alarms; - /** - * The Unix timestamp for when the scaling policy was created. - */ - CreationTime: TimestampType; - } - export type ServiceNamespace = "ecs"|"elasticmapreduce"|"ec2"|"appstream"|"dynamodb"|string; - export interface StepAdjustment { - /** - * The lower bound for the difference between the alarm threshold and the CloudWatch metric. If the metric value is above the breach threshold, the lower bound is inclusive (the metric must be greater than or equal to the threshold plus the lower bound). Otherwise, it is exclusive (the metric must be greater than the threshold plus the lower bound). A null value indicates negative infinity. - */ - MetricIntervalLowerBound?: MetricScale; - /** - * The upper bound for the difference between the alarm threshold and the CloudWatch metric. If the metric value is above the breach threshold, the upper bound is exclusive (the metric must be less than the threshold plus the upper bound). Otherwise, it is inclusive (the metric must be less than or equal to the threshold plus the upper bound). A null value indicates positive infinity. The upper bound must be greater than the lower bound. - */ - MetricIntervalUpperBound?: MetricScale; - /** - * The amount by which to scale, based on the specified adjustment type. A positive value adds to the current scalable dimension while a negative number removes from the current scalable dimension. - */ - ScalingAdjustment: ScalingAdjustment; - } - export type StepAdjustments = StepAdjustment[]; - export interface StepScalingPolicyConfiguration { - /** - * The adjustment type, which specifies how the ScalingAdjustment parameter in a StepAdjustment is interpreted. - */ - AdjustmentType?: AdjustmentType; - /** - * A set of adjustments that enable you to scale based on the size of the alarm breach. - */ - StepAdjustments?: StepAdjustments; - /** - * The minimum number to adjust your scalable dimension as a result of a scaling activity. If the adjustment type is PercentChangeInCapacity, the scaling policy changes the scalable dimension of the scalable target by this amount. - */ - MinAdjustmentMagnitude?: MinAdjustmentMagnitude; - /** - * The amount of time, in seconds, after a scaling activity completes where previous trigger-related scaling activities can influence future scaling events. For scale out policies, while the cooldown period is in effect, the capacity that has been added by the previous scale out event that initiated the cooldown is calculated as part of the desired capacity for the next scale out. The intention is to continuously (but not excessively) scale out. For example, an alarm triggers a step scaling policy to scale out an Amazon ECS service by 2 tasks, the scaling activity completes successfully, and a cooldown period of 5 minutes starts. During the Cooldown period, if the alarm triggers the same policy again but at a more aggressive step adjustment to scale out the service by 3 tasks, the 2 tasks that were added in the previous scale out event are considered part of that capacity and only 1 additional task is added to the desired count. For scale in policies, the cooldown period is used to block subsequent scale in requests until it has expired. The intention is to scale in conservatively to protect your application's availability. However, if another alarm triggers a scale out policy during the cooldown period after a scale-in, Application Auto Scaling scales out your scalable target immediately. - */ - Cooldown?: Cooldown; - /** - * The aggregation type for the CloudWatch metrics. Valid values are Minimum, Maximum, and Average. - */ - MetricAggregationType?: MetricAggregationType; - } - export interface TargetTrackingScalingPolicyConfiguration { - /** - * The target value for the metric. The range is 8.515920e-109 to 1.174271e+108 (Base 10) or 2e-360 to 2e360 (Base 2). - */ - TargetValue: MetricScale; - /** - * A predefined metric. - */ - PredefinedMetricSpecification?: PredefinedMetricSpecification; - /** - * Reserved for future use. - */ - CustomizedMetricSpecification?: CustomizedMetricSpecification; - /** - * The amount of time, in seconds, after a scale out activity completes before another scale out activity can start. While the cooldown period is in effect, the capacity that has been added by the previous scale out event that initiated the cooldown is calculated as part of the desired capacity for the next scale out. The intention is to continuously (but not excessively) scale out. - */ - ScaleOutCooldown?: Cooldown; - /** - * The amount of time, in seconds, after a scale in activity completes before another scale in activity can start. The cooldown period is used to block subsequent scale in requests until it has expired. The intention is to scale in conservatively to protect your application's availability. However, if another alarm triggers a scale out policy during the cooldown period after a scale-in, Application Auto Scaling scales out your scalable target immediately. - */ - ScaleInCooldown?: Cooldown; - /** - * Indicates whether scale in by the target tracking policy is disabled. If the value is true, scale in is disabled and the target tracking policy won't remove capacity from the scalable resource. Otherwise, scale in is enabled and the target tracking policy can remove capacity from the scalable resource. The default value is false. - */ - DisableScaleIn?: DisableScaleIn; - } - export type TimestampType = Date; - export type XmlString = string; - /** - * A string in YYYY-MM-DD format that represents the latest possible API version that can be used in this service. Specify 'latest' to use the latest possible version. - */ - export type apiVersion = "2016-02-06"|"latest"|string; - export interface ClientApiVersions { - /** - * A string in YYYY-MM-DD format that represents the latest possible API version that can be used in this service. Specify 'latest' to use the latest possible version. - */ - apiVersion?: apiVersion; - } - export type ClientConfiguration = ServiceConfigurationOptions & ClientApiVersions; - /** - * Contains interfaces for use with the ApplicationAutoScaling client. - */ - export import Types = ApplicationAutoScaling; -} -export = ApplicationAutoScaling; diff --git a/workshops/monte-carlo-on-ec2-spot-fleet/src/web/node_modules/aws-sdk/clients/applicationautoscaling.js b/workshops/monte-carlo-on-ec2-spot-fleet/src/web/node_modules/aws-sdk/clients/applicationautoscaling.js deleted file mode 100644 index 4734e97a..00000000 --- a/workshops/monte-carlo-on-ec2-spot-fleet/src/web/node_modules/aws-sdk/clients/applicationautoscaling.js +++ /dev/null @@ -1,18 +0,0 @@ -require('../lib/node_loader'); -var AWS = require('../lib/core'); -var Service = AWS.Service; -var apiLoader = AWS.apiLoader; - -apiLoader.services['applicationautoscaling'] = {}; -AWS.ApplicationAutoScaling = Service.defineService('applicationautoscaling', ['2016-02-06']); -Object.defineProperty(apiLoader.services['applicationautoscaling'], '2016-02-06', { - get: function get() { - var model = require('../apis/application-autoscaling-2016-02-06.min.json'); - model.paginators = require('../apis/application-autoscaling-2016-02-06.paginators.json').pagination; - return model; - }, - enumerable: true, - configurable: true -}); - -module.exports = AWS.ApplicationAutoScaling; diff --git a/workshops/monte-carlo-on-ec2-spot-fleet/src/web/node_modules/aws-sdk/clients/appstream.d.ts b/workshops/monte-carlo-on-ec2-spot-fleet/src/web/node_modules/aws-sdk/clients/appstream.d.ts deleted file mode 100644 index f4baadb7..00000000 --- a/workshops/monte-carlo-on-ec2-spot-fleet/src/web/node_modules/aws-sdk/clients/appstream.d.ts +++ /dev/null @@ -1,1189 +0,0 @@ -import {Request} from '../lib/request'; -import {Response} from '../lib/response'; -import {AWSError} from '../lib/error'; -import {Service} from '../lib/service'; -import {ServiceConfigurationOptions} from '../lib/service'; -import {ConfigBase as Config} from '../lib/config'; -interface Blob {} -declare class AppStream extends Service { - /** - * Constructs a service object. This object has one method for each API operation. - */ - constructor(options?: AppStream.Types.ClientConfiguration) - config: Config & AppStream.Types.ClientConfiguration; - /** - * Associates the specified fleet with the specified stack. - */ - associateFleet(params: AppStream.Types.AssociateFleetRequest, callback?: (err: AWSError, data: AppStream.Types.AssociateFleetResult) => void): Request; - /** - * Associates the specified fleet with the specified stack. - */ - associateFleet(callback?: (err: AWSError, data: AppStream.Types.AssociateFleetResult) => void): Request; - /** - * Creates a directory configuration. - */ - createDirectoryConfig(params: AppStream.Types.CreateDirectoryConfigRequest, callback?: (err: AWSError, data: AppStream.Types.CreateDirectoryConfigResult) => void): Request; - /** - * Creates a directory configuration. - */ - createDirectoryConfig(callback?: (err: AWSError, data: AppStream.Types.CreateDirectoryConfigResult) => void): Request; - /** - * Creates a fleet. - */ - createFleet(params: AppStream.Types.CreateFleetRequest, callback?: (err: AWSError, data: AppStream.Types.CreateFleetResult) => void): Request; - /** - * Creates a fleet. - */ - createFleet(callback?: (err: AWSError, data: AppStream.Types.CreateFleetResult) => void): Request; - /** - * - */ - createImageBuilder(params: AppStream.Types.CreateImageBuilderRequest, callback?: (err: AWSError, data: AppStream.Types.CreateImageBuilderResult) => void): Request; - /** - * - */ - createImageBuilder(callback?: (err: AWSError, data: AppStream.Types.CreateImageBuilderResult) => void): Request; - /** - * - */ - createImageBuilderStreamingURL(params: AppStream.Types.CreateImageBuilderStreamingURLRequest, callback?: (err: AWSError, data: AppStream.Types.CreateImageBuilderStreamingURLResult) => void): Request; - /** - * - */ - createImageBuilderStreamingURL(callback?: (err: AWSError, data: AppStream.Types.CreateImageBuilderStreamingURLResult) => void): Request; - /** - * Creates a stack. - */ - createStack(params: AppStream.Types.CreateStackRequest, callback?: (err: AWSError, data: AppStream.Types.CreateStackResult) => void): Request; - /** - * Creates a stack. - */ - createStack(callback?: (err: AWSError, data: AppStream.Types.CreateStackResult) => void): Request; - /** - * Creates a URL to start a streaming session for the specified user. By default, the URL is valid only for one minute from the time that it is generated. - */ - createStreamingURL(params: AppStream.Types.CreateStreamingURLRequest, callback?: (err: AWSError, data: AppStream.Types.CreateStreamingURLResult) => void): Request; - /** - * Creates a URL to start a streaming session for the specified user. By default, the URL is valid only for one minute from the time that it is generated. - */ - createStreamingURL(callback?: (err: AWSError, data: AppStream.Types.CreateStreamingURLResult) => void): Request; - /** - * Deletes the specified directory configuration. - */ - deleteDirectoryConfig(params: AppStream.Types.DeleteDirectoryConfigRequest, callback?: (err: AWSError, data: AppStream.Types.DeleteDirectoryConfigResult) => void): Request; - /** - * Deletes the specified directory configuration. - */ - deleteDirectoryConfig(callback?: (err: AWSError, data: AppStream.Types.DeleteDirectoryConfigResult) => void): Request; - /** - * Deletes the specified fleet. - */ - deleteFleet(params: AppStream.Types.DeleteFleetRequest, callback?: (err: AWSError, data: AppStream.Types.DeleteFleetResult) => void): Request; - /** - * Deletes the specified fleet. - */ - deleteFleet(callback?: (err: AWSError, data: AppStream.Types.DeleteFleetResult) => void): Request; - /** - * - */ - deleteImage(params: AppStream.Types.DeleteImageRequest, callback?: (err: AWSError, data: AppStream.Types.DeleteImageResult) => void): Request; - /** - * - */ - deleteImage(callback?: (err: AWSError, data: AppStream.Types.DeleteImageResult) => void): Request; - /** - * - */ - deleteImageBuilder(params: AppStream.Types.DeleteImageBuilderRequest, callback?: (err: AWSError, data: AppStream.Types.DeleteImageBuilderResult) => void): Request; - /** - * - */ - deleteImageBuilder(callback?: (err: AWSError, data: AppStream.Types.DeleteImageBuilderResult) => void): Request; - /** - * Deletes the specified stack. After this operation completes, the environment can no longer be activated and any reservations made for the stack are released. - */ - deleteStack(params: AppStream.Types.DeleteStackRequest, callback?: (err: AWSError, data: AppStream.Types.DeleteStackResult) => void): Request; - /** - * Deletes the specified stack. After this operation completes, the environment can no longer be activated and any reservations made for the stack are released. - */ - deleteStack(callback?: (err: AWSError, data: AppStream.Types.DeleteStackResult) => void): Request; - /** - * Describes the specified directory configurations. - */ - describeDirectoryConfigs(params: AppStream.Types.DescribeDirectoryConfigsRequest, callback?: (err: AWSError, data: AppStream.Types.DescribeDirectoryConfigsResult) => void): Request; - /** - * Describes the specified directory configurations. - */ - describeDirectoryConfigs(callback?: (err: AWSError, data: AppStream.Types.DescribeDirectoryConfigsResult) => void): Request; - /** - * Describes the specified fleets or all fleets in the account. - */ - describeFleets(params: AppStream.Types.DescribeFleetsRequest, callback?: (err: AWSError, data: AppStream.Types.DescribeFleetsResult) => void): Request; - /** - * Describes the specified fleets or all fleets in the account. - */ - describeFleets(callback?: (err: AWSError, data: AppStream.Types.DescribeFleetsResult) => void): Request; - /** - * - */ - describeImageBuilders(params: AppStream.Types.DescribeImageBuildersRequest, callback?: (err: AWSError, data: AppStream.Types.DescribeImageBuildersResult) => void): Request; - /** - * - */ - describeImageBuilders(callback?: (err: AWSError, data: AppStream.Types.DescribeImageBuildersResult) => void): Request; - /** - * Describes the specified images or all images in the account. - */ - describeImages(params: AppStream.Types.DescribeImagesRequest, callback?: (err: AWSError, data: AppStream.Types.DescribeImagesResult) => void): Request; - /** - * Describes the specified images or all images in the account. - */ - describeImages(callback?: (err: AWSError, data: AppStream.Types.DescribeImagesResult) => void): Request; - /** - * Describes the streaming sessions for the specified stack and fleet. If a user ID is provided, only the streaming sessions for only that user are returned. If an authentication type is not provided, the default is to authenticate users using a streaming URL. - */ - describeSessions(params: AppStream.Types.DescribeSessionsRequest, callback?: (err: AWSError, data: AppStream.Types.DescribeSessionsResult) => void): Request; - /** - * Describes the streaming sessions for the specified stack and fleet. If a user ID is provided, only the streaming sessions for only that user are returned. If an authentication type is not provided, the default is to authenticate users using a streaming URL. - */ - describeSessions(callback?: (err: AWSError, data: AppStream.Types.DescribeSessionsResult) => void): Request; - /** - * Describes the specified stacks or all stacks in the account. - */ - describeStacks(params: AppStream.Types.DescribeStacksRequest, callback?: (err: AWSError, data: AppStream.Types.DescribeStacksResult) => void): Request; - /** - * Describes the specified stacks or all stacks in the account. - */ - describeStacks(callback?: (err: AWSError, data: AppStream.Types.DescribeStacksResult) => void): Request; - /** - * Disassociates the specified fleet from the specified stack. - */ - disassociateFleet(params: AppStream.Types.DisassociateFleetRequest, callback?: (err: AWSError, data: AppStream.Types.DisassociateFleetResult) => void): Request; - /** - * Disassociates the specified fleet from the specified stack. - */ - disassociateFleet(callback?: (err: AWSError, data: AppStream.Types.DisassociateFleetResult) => void): Request; - /** - * Stops the specified streaming session. - */ - expireSession(params: AppStream.Types.ExpireSessionRequest, callback?: (err: AWSError, data: AppStream.Types.ExpireSessionResult) => void): Request; - /** - * Stops the specified streaming session. - */ - expireSession(callback?: (err: AWSError, data: AppStream.Types.ExpireSessionResult) => void): Request; - /** - * Lists the fleets associated with the specified stack. - */ - listAssociatedFleets(params: AppStream.Types.ListAssociatedFleetsRequest, callback?: (err: AWSError, data: AppStream.Types.ListAssociatedFleetsResult) => void): Request; - /** - * Lists the fleets associated with the specified stack. - */ - listAssociatedFleets(callback?: (err: AWSError, data: AppStream.Types.ListAssociatedFleetsResult) => void): Request; - /** - * Lists the stacks associated with the specified fleet. - */ - listAssociatedStacks(params: AppStream.Types.ListAssociatedStacksRequest, callback?: (err: AWSError, data: AppStream.Types.ListAssociatedStacksResult) => void): Request; - /** - * Lists the stacks associated with the specified fleet. - */ - listAssociatedStacks(callback?: (err: AWSError, data: AppStream.Types.ListAssociatedStacksResult) => void): Request; - /** - * Starts the specified fleet. - */ - startFleet(params: AppStream.Types.StartFleetRequest, callback?: (err: AWSError, data: AppStream.Types.StartFleetResult) => void): Request; - /** - * Starts the specified fleet. - */ - startFleet(callback?: (err: AWSError, data: AppStream.Types.StartFleetResult) => void): Request; - /** - * - */ - startImageBuilder(params: AppStream.Types.StartImageBuilderRequest, callback?: (err: AWSError, data: AppStream.Types.StartImageBuilderResult) => void): Request; - /** - * - */ - startImageBuilder(callback?: (err: AWSError, data: AppStream.Types.StartImageBuilderResult) => void): Request; - /** - * Stops the specified fleet. - */ - stopFleet(params: AppStream.Types.StopFleetRequest, callback?: (err: AWSError, data: AppStream.Types.StopFleetResult) => void): Request; - /** - * Stops the specified fleet. - */ - stopFleet(callback?: (err: AWSError, data: AppStream.Types.StopFleetResult) => void): Request; - /** - * - */ - stopImageBuilder(params: AppStream.Types.StopImageBuilderRequest, callback?: (err: AWSError, data: AppStream.Types.StopImageBuilderResult) => void): Request; - /** - * - */ - stopImageBuilder(callback?: (err: AWSError, data: AppStream.Types.StopImageBuilderResult) => void): Request; - /** - * Updates the specified directory configuration. - */ - updateDirectoryConfig(params: AppStream.Types.UpdateDirectoryConfigRequest, callback?: (err: AWSError, data: AppStream.Types.UpdateDirectoryConfigResult) => void): Request; - /** - * Updates the specified directory configuration. - */ - updateDirectoryConfig(callback?: (err: AWSError, data: AppStream.Types.UpdateDirectoryConfigResult) => void): Request; - /** - * Updates the specified fleet. If the fleet is in the STOPPED state, you can update any attribute except the fleet name. If the fleet is in the RUNNING state, you can update the DisplayName and ComputeCapacity attributes. If the fleet is in the STARTING or STOPPING state, you can't update it. - */ - updateFleet(params: AppStream.Types.UpdateFleetRequest, callback?: (err: AWSError, data: AppStream.Types.UpdateFleetResult) => void): Request; - /** - * Updates the specified fleet. If the fleet is in the STOPPED state, you can update any attribute except the fleet name. If the fleet is in the RUNNING state, you can update the DisplayName and ComputeCapacity attributes. If the fleet is in the STARTING or STOPPING state, you can't update it. - */ - updateFleet(callback?: (err: AWSError, data: AppStream.Types.UpdateFleetResult) => void): Request; - /** - * Updates the specified stack. - */ - updateStack(params: AppStream.Types.UpdateStackRequest, callback?: (err: AWSError, data: AppStream.Types.UpdateStackResult) => void): Request; - /** - * Updates the specified stack. - */ - updateStack(callback?: (err: AWSError, data: AppStream.Types.UpdateStackResult) => void): Request; - /** - * Waits for the fleetStarted state by periodically calling the underlying AppStream.describeFleetsoperation every 30 seconds (at most 40 times). - */ - waitFor(state: "fleetStarted", params: AppStream.Types.DescribeFleetsRequest, callback?: (err: AWSError, data: AppStream.Types.DescribeFleetsResult) => void): Request; - /** - * Waits for the fleetStarted state by periodically calling the underlying AppStream.describeFleetsoperation every 30 seconds (at most 40 times). - */ - waitFor(state: "fleetStarted", callback?: (err: AWSError, data: AppStream.Types.DescribeFleetsResult) => void): Request; - /** - * Waits for the fleetStopped state by periodically calling the underlying AppStream.describeFleetsoperation every 30 seconds (at most 40 times). - */ - waitFor(state: "fleetStopped", params: AppStream.Types.DescribeFleetsRequest, callback?: (err: AWSError, data: AppStream.Types.DescribeFleetsResult) => void): Request; - /** - * Waits for the fleetStopped state by periodically calling the underlying AppStream.describeFleetsoperation every 30 seconds (at most 40 times). - */ - waitFor(state: "fleetStopped", callback?: (err: AWSError, data: AppStream.Types.DescribeFleetsResult) => void): Request; -} -declare namespace AppStream { - export type AccountName = string; - export type AccountPassword = string; - export interface Application { - /** - * The name of the application. - */ - Name?: String; - /** - * The application name displayed to end users. - */ - DisplayName?: String; - /** - * The URL for the application icon. This URL might be time-limited. - */ - IconURL?: String; - /** - * The path to the application executable in the instance. - */ - LaunchPath?: String; - /** - * The arguments that are passed to the application at launch. - */ - LaunchParameters?: String; - /** - * If there is a problem, the application can be disabled after image creation. - */ - Enabled?: Boolean; - /** - * Additional attributes that describe the application. - */ - Metadata?: Metadata; - } - export type Applications = Application[]; - export type Arn = string; - export interface AssociateFleetRequest { - /** - * The name of the fleet. - */ - FleetName: String; - /** - * The name of the stack. - */ - StackName: String; - } - export interface AssociateFleetResult { - } - export type AuthenticationType = "API"|"SAML"|"USERPOOL"|string; - export type Boolean = boolean; - export type BooleanObject = boolean; - export interface ComputeCapacity { - /** - * The desired number of streaming instances. - */ - DesiredInstances: Integer; - } - export interface ComputeCapacityStatus { - /** - * The desired number of streaming instances. - */ - Desired: Integer; - /** - * The total number of simultaneous streaming instances that are running. - */ - Running?: Integer; - /** - * The number of instances in use for streaming. - */ - InUse?: Integer; - /** - * The number of currently available instances that can be used to stream sessions. - */ - Available?: Integer; - } - export interface CreateDirectoryConfigRequest { - /** - * The fully qualified name of the directory (for example, corp.example.com). - */ - DirectoryName: DirectoryName; - /** - * The distinguished names of the organizational units for computer accounts. - */ - OrganizationalUnitDistinguishedNames: OrganizationalUnitDistinguishedNamesList; - /** - * The credentials for the service account used by the streaming instance to connect to the directory. - */ - ServiceAccountCredentials: ServiceAccountCredentials; - } - export interface CreateDirectoryConfigResult { - /** - * Information about the directory configuration. - */ - DirectoryConfig?: DirectoryConfig; - } - export interface CreateFleetRequest { - /** - * A unique name for the fleet. - */ - Name: Name; - /** - * The name of the image used by the fleet. - */ - ImageName: String; - /** - * The instance type to use when launching fleet instances. The following instance types are available: stream.standard.medium stream.standard.large stream.compute.large stream.compute.xlarge stream.compute.2xlarge stream.compute.4xlarge stream.compute.8xlarge stream.memory.large stream.memory.xlarge stream.memory.2xlarge stream.memory.4xlarge stream.memory.8xlarge stream.graphics-design.large stream.graphics-design.xlarge stream.graphics-design.2xlarge stream.graphics-design.4xlarge stream.graphics-desktop.2xlarge stream.graphics-pro.4xlarge stream.graphics-pro.8xlarge stream.graphics-pro.16xlarge - */ - InstanceType: String; - FleetType?: FleetType; - /** - * The desired capacity for the fleet. - */ - ComputeCapacity: ComputeCapacity; - /** - * The VPC configuration for the fleet. - */ - VpcConfig?: VpcConfig; - /** - * The maximum time that a streaming session can run, in seconds. Specify a value between 600 and 57600. - */ - MaxUserDurationInSeconds?: Integer; - /** - * The time after disconnection when a session is considered to have ended, in seconds. If a user who was disconnected reconnects within this time interval, the user is connected to their previous session. Specify a value between 60 and 57600. - */ - DisconnectTimeoutInSeconds?: Integer; - /** - * The description displayed to end users. - */ - Description?: Description; - /** - * The fleet name displayed to end users. - */ - DisplayName?: DisplayName; - /** - * Enables or disables default internet access for the fleet. - */ - EnableDefaultInternetAccess?: BooleanObject; - /** - * The information needed for streaming instances to join a domain. - */ - DomainJoinInfo?: DomainJoinInfo; - } - export interface CreateFleetResult { - /** - * Information about the fleet. - */ - Fleet?: Fleet; - } - export interface CreateImageBuilderRequest { - Name: Name; - ImageName: String; - InstanceType: String; - Description?: Description; - DisplayName?: DisplayName; - VpcConfig?: VpcConfig; - EnableDefaultInternetAccess?: BooleanObject; - DomainJoinInfo?: DomainJoinInfo; - } - export interface CreateImageBuilderResult { - ImageBuilder?: ImageBuilder; - } - export interface CreateImageBuilderStreamingURLRequest { - Name: String; - Validity?: Long; - } - export interface CreateImageBuilderStreamingURLResult { - StreamingURL?: String; - Expires?: Timestamp; - } - export interface CreateStackRequest { - /** - * The name of the stack. - */ - Name: String; - /** - * The description displayed to end users. - */ - Description?: Description; - /** - * The stack name displayed to end users. - */ - DisplayName?: DisplayName; - /** - * The storage connectors to enable. - */ - StorageConnectors?: StorageConnectorList; - } - export interface CreateStackResult { - /** - * Information about the stack. - */ - Stack?: Stack; - } - export interface CreateStreamingURLRequest { - /** - * The name of the stack. - */ - StackName: String; - /** - * The name of the fleet. - */ - FleetName: String; - /** - * The ID of the user. - */ - UserId: StreamingUrlUserId; - /** - * The ID of the application that must be launched after the session starts. - */ - ApplicationId?: String; - /** - * The time that the streaming URL will be valid, in seconds. Specify a value between 1 and 604800 seconds. - */ - Validity?: Long; - /** - * The session context of the streaming URL. - */ - SessionContext?: String; - } - export interface CreateStreamingURLResult { - /** - * The URL to start the AppStream 2.0 streaming session. - */ - StreamingURL?: String; - /** - * The elapsed time, in seconds after the Unix epoch, when this URL expires. - */ - Expires?: Timestamp; - } - export interface DeleteDirectoryConfigRequest { - /** - * The name of the directory configuration. - */ - DirectoryName: DirectoryName; - } - export interface DeleteDirectoryConfigResult { - } - export interface DeleteFleetRequest { - /** - * The name of the fleet. - */ - Name: String; - } - export interface DeleteFleetResult { - } - export interface DeleteImageBuilderRequest { - Name: Name; - } - export interface DeleteImageBuilderResult { - ImageBuilder?: ImageBuilder; - } - export interface DeleteImageRequest { - Name: Name; - } - export interface DeleteImageResult { - Image?: Image; - } - export interface DeleteStackRequest { - /** - * The name of the stack. - */ - Name: String; - } - export interface DeleteStackResult { - } - export interface DescribeDirectoryConfigsRequest { - /** - * The directory names. - */ - DirectoryNames?: DirectoryNameList; - /** - * The maximum size of each page of results. - */ - MaxResults?: Integer; - /** - * The pagination token to use to retrieve the next page of results for this operation. If this value is null, it retrieves the first page. - */ - NextToken?: String; - } - export interface DescribeDirectoryConfigsResult { - /** - * Information about the directory configurations. - */ - DirectoryConfigs?: DirectoryConfigList; - /** - * The pagination token to use to retrieve the next page of results for this operation. If there are no more pages, this value is null. - */ - NextToken?: String; - } - export interface DescribeFleetsRequest { - /** - * The names of the fleets to describe. - */ - Names?: StringList; - /** - * The pagination token to use to retrieve the next page of results for this operation. If this value is null, it retrieves the first page. - */ - NextToken?: String; - } - export interface DescribeFleetsResult { - /** - * Information about the fleets. - */ - Fleets?: FleetList; - /** - * The pagination token to use to retrieve the next page of results for this operation. If there are no more pages, this value is null. - */ - NextToken?: String; - } - export interface DescribeImageBuildersRequest { - Names?: StringList; - MaxResults?: Integer; - NextToken?: String; - } - export interface DescribeImageBuildersResult { - ImageBuilders?: ImageBuilderList; - NextToken?: String; - } - export interface DescribeImagesRequest { - /** - * The names of the images to describe. - */ - Names?: StringList; - } - export interface DescribeImagesResult { - /** - * Information about the images. - */ - Images?: ImageList; - } - export interface DescribeSessionsRequest { - /** - * The name of the stack. - */ - StackName: String; - /** - * The name of the fleet. - */ - FleetName: String; - /** - * The user ID. - */ - UserId?: UserId; - /** - * The pagination token to use to retrieve the next page of results for this operation. If this value is null, it retrieves the first page. - */ - NextToken?: String; - /** - * The size of each page of results. The default value is 20 and the maximum value is 50. - */ - Limit?: Integer; - /** - * The authentication method. Specify API for a user authenticated using a streaming URL or SAML for a SAML federated user. The default is to authenticate users using a streaming URL. - */ - AuthenticationType?: AuthenticationType; - } - export interface DescribeSessionsResult { - /** - * Information about the streaming sessions. - */ - Sessions?: SessionList; - /** - * The pagination token to use to retrieve the next page of results for this operation. If there are no more pages, this value is null. - */ - NextToken?: String; - } - export interface DescribeStacksRequest { - /** - * The names of the stacks to describe. - */ - Names?: StringList; - /** - * The pagination token to use to retrieve the next page of results for this operation. If this value is null, it retrieves the first page. - */ - NextToken?: String; - } - export interface DescribeStacksResult { - /** - * Information about the stacks. - */ - Stacks?: StackList; - /** - * The pagination token to use to retrieve the next page of results for this operation. If there are no more pages, this value is null. - */ - NextToken?: String; - } - export type Description = string; - export interface DirectoryConfig { - /** - * The fully qualified name of the directory (for example, corp.example.com). - */ - DirectoryName: DirectoryName; - /** - * The distinguished names of the organizational units for computer accounts. - */ - OrganizationalUnitDistinguishedNames?: OrganizationalUnitDistinguishedNamesList; - /** - * The credentials for the service account used by the streaming instance to connect to the directory. - */ - ServiceAccountCredentials?: ServiceAccountCredentials; - /** - * The time the directory configuration was created. - */ - CreatedTime?: Timestamp; - } - export type DirectoryConfigList = DirectoryConfig[]; - export type DirectoryName = string; - export type DirectoryNameList = DirectoryName[]; - export interface DisassociateFleetRequest { - /** - * The name of the fleet. - */ - FleetName: String; - /** - * The name of the stack. - */ - StackName: String; - } - export interface DisassociateFleetResult { - } - export type DisplayName = string; - export interface DomainJoinInfo { - /** - * The fully qualified name of the directory (for example, corp.example.com). - */ - DirectoryName?: DirectoryName; - /** - * The distinguished name of the organizational unit for computer accounts. - */ - OrganizationalUnitDistinguishedName?: OrganizationalUnitDistinguishedName; - } - export type ErrorMessage = string; - export interface ExpireSessionRequest { - /** - * The ID of the streaming session. - */ - SessionId: String; - } - export interface ExpireSessionResult { - } - export interface Fleet { - /** - * The ARN for the fleet. - */ - Arn: Arn; - /** - * The name of the fleet. - */ - Name: String; - /** - * The fleet name displayed to end users. - */ - DisplayName?: String; - /** - * The description displayed to end users. - */ - Description?: String; - /** - * The image used by the fleet. - */ - ImageName: String; - /** - * The instance type to use when launching fleet instances. - */ - InstanceType: String; - FleetType?: FleetType; - /** - * The capacity status for the fleet. - */ - ComputeCapacityStatus: ComputeCapacityStatus; - /** - * The maximum time that a streaming session can run, in seconds. Specify a value between 600 and 57600. - */ - MaxUserDurationInSeconds?: Integer; - /** - * The time after disconnection when a session is considered to have ended, in seconds. If a user who was disconnected reconnects within this time interval, the user is connected to their previous session. Specify a value between 60 and 57600. - */ - DisconnectTimeoutInSeconds?: Integer; - /** - * The current state for the fleet. - */ - State: FleetState; - /** - * The VPC configuration for the fleet. - */ - VpcConfig?: VpcConfig; - /** - * The time the fleet was created. - */ - CreatedTime?: Timestamp; - /** - * The fleet errors. - */ - FleetErrors?: FleetErrors; - /** - * Indicates whether default internet access is enabled for the fleet. - */ - EnableDefaultInternetAccess?: BooleanObject; - /** - * The information needed for streaming instances to join a domain. - */ - DomainJoinInfo?: DomainJoinInfo; - } - export type FleetAttribute = "VPC_CONFIGURATION"|"VPC_CONFIGURATION_SECURITY_GROUP_IDS"|"DOMAIN_JOIN_INFO"|string; - export type FleetAttributes = FleetAttribute[]; - export interface FleetError { - /** - * The error code. - */ - ErrorCode?: FleetErrorCode; - /** - * The error message. - */ - ErrorMessage?: String; - } - export type FleetErrorCode = "IAM_SERVICE_ROLE_MISSING_ENI_DESCRIBE_ACTION"|"IAM_SERVICE_ROLE_MISSING_ENI_CREATE_ACTION"|"IAM_SERVICE_ROLE_MISSING_ENI_DELETE_ACTION"|"NETWORK_INTERFACE_LIMIT_EXCEEDED"|"INTERNAL_SERVICE_ERROR"|"IAM_SERVICE_ROLE_IS_MISSING"|"SUBNET_HAS_INSUFFICIENT_IP_ADDRESSES"|"IAM_SERVICE_ROLE_MISSING_DESCRIBE_SUBNET_ACTION"|"SUBNET_NOT_FOUND"|"IMAGE_NOT_FOUND"|"INVALID_SUBNET_CONFIGURATION"|"SECURITY_GROUPS_NOT_FOUND"|"IGW_NOT_ATTACHED"|"IAM_SERVICE_ROLE_MISSING_DESCRIBE_SECURITY_GROUPS_ACTION"|"DOMAIN_JOIN_ERROR_FILE_NOT_FOUND"|"DOMAIN_JOIN_ERROR_ACCESS_DENIED"|"DOMAIN_JOIN_ERROR_LOGON_FAILURE"|"DOMAIN_JOIN_ERROR_INVALID_PARAMETER"|"DOMAIN_JOIN_ERROR_MORE_DATA"|"DOMAIN_JOIN_ERROR_NO_SUCH_DOMAIN"|"DOMAIN_JOIN_ERROR_NOT_SUPPORTED"|"DOMAIN_JOIN_NERR_INVALID_WORKGROUP_NAME"|"DOMAIN_JOIN_NERR_WORKSTATION_NOT_STARTED"|"DOMAIN_JOIN_ERROR_DS_MACHINE_ACCOUNT_QUOTA_EXCEEDED"|"DOMAIN_JOIN_NERR_PASSWORD_EXPIRED"|"DOMAIN_JOIN_INTERNAL_SERVICE_ERROR"|string; - export type FleetErrors = FleetError[]; - export type FleetList = Fleet[]; - export type FleetState = "STARTING"|"RUNNING"|"STOPPING"|"STOPPED"|string; - export type FleetType = "ALWAYS_ON"|"ON_DEMAND"|string; - export interface Image { - /** - * The name of the image. - */ - Name: String; - /** - * The ARN of the image. - */ - Arn?: Arn; - /** - * The ARN of the image from which this image was created. - */ - BaseImageArn?: Arn; - /** - * The image name displayed to end users. - */ - DisplayName?: String; - /** - * The image starts in the PENDING state. If image creation succeeds, the state is AVAILABLE. If image creation fails, the state is FAILED. - */ - State?: ImageState; - /** - * Indicates whether the image is public or private. - */ - Visibility?: VisibilityType; - /** - * Indicates whether an image builder can be launched from this image. - */ - ImageBuilderSupported?: Boolean; - /** - * The operating system platform of the image. - */ - Platform?: PlatformType; - /** - * The description displayed to end users. - */ - Description?: String; - /** - * The reason why the last state change occurred. - */ - StateChangeReason?: ImageStateChangeReason; - /** - * The applications associated with the image. - */ - Applications?: Applications; - /** - * The time the image was created. - */ - CreatedTime?: Timestamp; - /** - * The release date of the public base image. For private images, this date is the release date of the base image from which the image was created. - */ - PublicBaseImageReleasedDate?: Timestamp; - } - export interface ImageBuilder { - Name: String; - Arn?: Arn; - ImageArn?: Arn; - Description?: String; - DisplayName?: String; - VpcConfig?: VpcConfig; - InstanceType?: String; - Platform?: PlatformType; - State?: ImageBuilderState; - StateChangeReason?: ImageBuilderStateChangeReason; - CreatedTime?: Timestamp; - EnableDefaultInternetAccess?: BooleanObject; - DomainJoinInfo?: DomainJoinInfo; - ImageBuilderErrors?: ResourceErrors; - } - export type ImageBuilderList = ImageBuilder[]; - export type ImageBuilderState = "PENDING"|"RUNNING"|"STOPPING"|"STOPPED"|"REBOOTING"|"SNAPSHOTTING"|"DELETING"|"FAILED"|string; - export interface ImageBuilderStateChangeReason { - Code?: ImageBuilderStateChangeReasonCode; - Message?: String; - } - export type ImageBuilderStateChangeReasonCode = "INTERNAL_ERROR"|"IMAGE_UNAVAILABLE"|string; - export type ImageList = Image[]; - export type ImageState = "PENDING"|"AVAILABLE"|"FAILED"|"DELETING"|string; - export interface ImageStateChangeReason { - /** - * The state change reason code. - */ - Code?: ImageStateChangeReasonCode; - /** - * The state change reason message. - */ - Message?: String; - } - export type ImageStateChangeReasonCode = "INTERNAL_ERROR"|"IMAGE_BUILDER_NOT_AVAILABLE"|string; - export type Integer = number; - export interface ListAssociatedFleetsRequest { - /** - * The name of the stack. - */ - StackName: String; - /** - * The pagination token to use to retrieve the next page of results for this operation. If this value is null, it retrieves the first page. - */ - NextToken?: String; - } - export interface ListAssociatedFleetsResult { - /** - * The names of the fleets. - */ - Names?: StringList; - /** - * The pagination token to use to retrieve the next page of results for this operation. If there are no more pages, this value is null. - */ - NextToken?: String; - } - export interface ListAssociatedStacksRequest { - /** - * The name of the fleet. - */ - FleetName: String; - /** - * The pagination token to use to retrieve the next page of results for this operation. If this value is null, it retrieves the first page. - */ - NextToken?: String; - } - export interface ListAssociatedStacksResult { - /** - * The names of the stacks. - */ - Names?: StringList; - /** - * The pagination token to use to retrieve the next page of results for this operation. If there are no more pages, this value is null. - */ - NextToken?: String; - } - export type Long = number; - export type Metadata = {[key: string]: String}; - export type Name = string; - export type OrganizationalUnitDistinguishedName = string; - export type OrganizationalUnitDistinguishedNamesList = OrganizationalUnitDistinguishedName[]; - export type PlatformType = "WINDOWS"|string; - export interface ResourceError { - ErrorCode?: FleetErrorCode; - ErrorMessage?: String; - ErrorTimestamp?: Timestamp; - } - export type ResourceErrors = ResourceError[]; - export type ResourceIdentifier = string; - export type SecurityGroupIdList = String[]; - export interface ServiceAccountCredentials { - /** - * The user name of the account. This account must have the following privileges: create computer objects, join computers to the domain, and change/reset the password on descendant computer objects for the organizational units specified. - */ - AccountName: AccountName; - /** - * The password for the account. - */ - AccountPassword: AccountPassword; - } - export interface Session { - /** - * The ID of the streaming session. - */ - Id: String; - /** - * The identifier of the user for whom the session was created. - */ - UserId: UserId; - /** - * The name of the stack for the streaming session. - */ - StackName: String; - /** - * The name of the fleet for the streaming session. - */ - FleetName: String; - /** - * The current state of the streaming session. - */ - State: SessionState; - /** - * The authentication method. The user is authenticated using a streaming URL (API) or SAML federation (SAML). - */ - AuthenticationType?: AuthenticationType; - } - export type SessionList = Session[]; - export type SessionState = "ACTIVE"|"PENDING"|"EXPIRED"|string; - export interface Stack { - /** - * The ARN of the stack. - */ - Arn?: Arn; - /** - * The name of the stack. - */ - Name: String; - /** - * The description displayed to end users. - */ - Description?: String; - /** - * The stack name displayed to end users. - */ - DisplayName?: String; - /** - * The time the stack was created. - */ - CreatedTime?: Timestamp; - /** - * The storage connectors to enable. - */ - StorageConnectors?: StorageConnectorList; - /** - * The errors for the stack. - */ - StackErrors?: StackErrors; - } - export interface StackError { - /** - * The error code. - */ - ErrorCode?: StackErrorCode; - /** - * The error message. - */ - ErrorMessage?: String; - } - export type StackErrorCode = "STORAGE_CONNECTOR_ERROR"|"INTERNAL_SERVICE_ERROR"|string; - export type StackErrors = StackError[]; - export type StackList = Stack[]; - export interface StartFleetRequest { - /** - * The name of the fleet. - */ - Name: String; - } - export interface StartFleetResult { - } - export interface StartImageBuilderRequest { - Name: String; - } - export interface StartImageBuilderResult { - ImageBuilder?: ImageBuilder; - } - export interface StopFleetRequest { - /** - * The name of the fleet. - */ - Name: String; - } - export interface StopFleetResult { - } - export interface StopImageBuilderRequest { - Name: String; - } - export interface StopImageBuilderResult { - ImageBuilder?: ImageBuilder; - } - export interface StorageConnector { - /** - * The type of storage connector. - */ - ConnectorType: StorageConnectorType; - /** - * The ARN of the storage connector. - */ - ResourceIdentifier?: ResourceIdentifier; - } - export type StorageConnectorList = StorageConnector[]; - export type StorageConnectorType = "HOMEFOLDERS"|string; - export type StreamingUrlUserId = string; - export type String = string; - export type StringList = String[]; - export type SubnetIdList = String[]; - export type Timestamp = Date; - export interface UpdateDirectoryConfigRequest { - /** - * The name of the directory configuration. - */ - DirectoryName: DirectoryName; - /** - * The distinguished names of the organizational units for computer accounts. - */ - OrganizationalUnitDistinguishedNames?: OrganizationalUnitDistinguishedNamesList; - /** - * The credentials for the service account used by the streaming instance to connect to the directory. - */ - ServiceAccountCredentials?: ServiceAccountCredentials; - } - export interface UpdateDirectoryConfigResult { - /** - * Information about the directory configuration. - */ - DirectoryConfig?: DirectoryConfig; - } - export interface UpdateFleetRequest { - /** - * The name of the image used by the fleet. - */ - ImageName?: String; - /** - * A unique name for the fleet. - */ - Name: String; - /** - * The instance type to use when launching fleet instances. The following instance types are available: stream.standard.medium stream.standard.large stream.compute.large stream.compute.xlarge stream.compute.2xlarge stream.compute.4xlarge stream.compute.8xlarge stream.memory.large stream.memory.xlarge stream.memory.2xlarge stream.memory.4xlarge stream.memory.8xlarge stream.graphics-design.large stream.graphics-design.xlarge stream.graphics-design.2xlarge stream.graphics-design.4xlarge stream.graphics-desktop.2xlarge stream.graphics-pro.4xlarge stream.graphics-pro.8xlarge stream.graphics-pro.16xlarge - */ - InstanceType?: String; - /** - * The desired capacity for the fleet. - */ - ComputeCapacity?: ComputeCapacity; - /** - * The VPC configuration for the fleet. - */ - VpcConfig?: VpcConfig; - /** - * The maximum time that a streaming session can run, in seconds. Specify a value between 600 and 57600. - */ - MaxUserDurationInSeconds?: Integer; - /** - * The time after disconnection when a session is considered to have ended, in seconds. If a user who was disconnected reconnects within this time interval, the user is connected to their previous session. Specify a value between 60 and 57600. - */ - DisconnectTimeoutInSeconds?: Integer; - /** - * Deletes the VPC association for the specified fleet. - */ - DeleteVpcConfig?: Boolean; - /** - * The description displayed to end users. - */ - Description?: Description; - /** - * The fleet name displayed to end users. - */ - DisplayName?: DisplayName; - /** - * Enables or disables default internet access for the fleet. - */ - EnableDefaultInternetAccess?: BooleanObject; - /** - * The information needed for streaming instances to join a domain. - */ - DomainJoinInfo?: DomainJoinInfo; - /** - * The fleet attributes to delete. - */ - AttributesToDelete?: FleetAttributes; - } - export interface UpdateFleetResult { - /** - * Information about the fleet. - */ - Fleet?: Fleet; - } - export interface UpdateStackRequest { - /** - * The stack name displayed to end users. - */ - DisplayName?: DisplayName; - /** - * The description displayed to end users. - */ - Description?: Description; - /** - * The name of the stack. - */ - Name: String; - /** - * The storage connectors to enable. - */ - StorageConnectors?: StorageConnectorList; - /** - * Deletes the storage connectors currently enabled for the stack. - */ - DeleteStorageConnectors?: Boolean; - } - export interface UpdateStackResult { - /** - * Information about the stack. - */ - Stack?: Stack; - } - export type UserId = string; - export type VisibilityType = "PUBLIC"|"PRIVATE"|string; - export interface VpcConfig { - /** - * The subnets to which a network interface is established from the fleet instance. - */ - SubnetIds?: SubnetIdList; - /** - * The security groups for the fleet. - */ - SecurityGroupIds?: SecurityGroupIdList; - } - /** - * A string in YYYY-MM-DD format that represents the latest possible API version that can be used in this service. Specify 'latest' to use the latest possible version. - */ - export type apiVersion = "2016-12-01"|"latest"|string; - export interface ClientApiVersions { - /** - * A string in YYYY-MM-DD format that represents the latest possible API version that can be used in this service. Specify 'latest' to use the latest possible version. - */ - apiVersion?: apiVersion; - } - export type ClientConfiguration = ServiceConfigurationOptions & ClientApiVersions; - /** - * Contains interfaces for use with the AppStream client. - */ - export import Types = AppStream; -} -export = AppStream; diff --git a/workshops/monte-carlo-on-ec2-spot-fleet/src/web/node_modules/aws-sdk/clients/appstream.js b/workshops/monte-carlo-on-ec2-spot-fleet/src/web/node_modules/aws-sdk/clients/appstream.js deleted file mode 100644 index 6313e408..00000000 --- a/workshops/monte-carlo-on-ec2-spot-fleet/src/web/node_modules/aws-sdk/clients/appstream.js +++ /dev/null @@ -1,19 +0,0 @@ -require('../lib/node_loader'); -var AWS = require('../lib/core'); -var Service = AWS.Service; -var apiLoader = AWS.apiLoader; - -apiLoader.services['appstream'] = {}; -AWS.AppStream = Service.defineService('appstream', ['2016-12-01']); -Object.defineProperty(apiLoader.services['appstream'], '2016-12-01', { - get: function get() { - var model = require('../apis/appstream-2016-12-01.min.json'); - model.paginators = require('../apis/appstream-2016-12-01.paginators.json').pagination; - model.waiters = require('../apis/appstream-2016-12-01.waiters2.json').waiters; - return model; - }, - enumerable: true, - configurable: true -}); - -module.exports = AWS.AppStream; diff --git a/workshops/monte-carlo-on-ec2-spot-fleet/src/web/node_modules/aws-sdk/clients/athena.d.ts b/workshops/monte-carlo-on-ec2-spot-fleet/src/web/node_modules/aws-sdk/clients/athena.d.ts deleted file mode 100644 index 3c6c02b9..00000000 --- a/workshops/monte-carlo-on-ec2-spot-fleet/src/web/node_modules/aws-sdk/clients/athena.d.ts +++ /dev/null @@ -1,540 +0,0 @@ -import {Request} from '../lib/request'; -import {Response} from '../lib/response'; -import {AWSError} from '../lib/error'; -import {Service} from '../lib/service'; -import {ServiceConfigurationOptions} from '../lib/service'; -import {ConfigBase as Config} from '../lib/config'; -interface Blob {} -declare class Athena extends Service { - /** - * Constructs a service object. This object has one method for each API operation. - */ - constructor(options?: Athena.Types.ClientConfiguration) - config: Config & Athena.Types.ClientConfiguration; - /** - * Returns the details of a single named query or a list of up to 50 queries, which you provide as an array of query ID strings. Use ListNamedQueries to get the list of named query IDs. If information could not be retrieved for a submitted query ID, information about the query ID submitted is listed under UnprocessedNamedQueryId. Named queries are different from executed queries. Use BatchGetQueryExecution to get details about each unique query execution, and ListQueryExecutions to get a list of query execution IDs. - */ - batchGetNamedQuery(params: Athena.Types.BatchGetNamedQueryInput, callback?: (err: AWSError, data: Athena.Types.BatchGetNamedQueryOutput) => void): Request; - /** - * Returns the details of a single named query or a list of up to 50 queries, which you provide as an array of query ID strings. Use ListNamedQueries to get the list of named query IDs. If information could not be retrieved for a submitted query ID, information about the query ID submitted is listed under UnprocessedNamedQueryId. Named queries are different from executed queries. Use BatchGetQueryExecution to get details about each unique query execution, and ListQueryExecutions to get a list of query execution IDs. - */ - batchGetNamedQuery(callback?: (err: AWSError, data: Athena.Types.BatchGetNamedQueryOutput) => void): Request; - /** - * Returns the details of a single query execution or a list of up to 50 query executions, which you provide as an array of query execution ID strings. To get a list of query execution IDs, use ListQueryExecutions. Query executions are different from named (saved) queries. Use BatchGetNamedQuery to get details about named queries. - */ - batchGetQueryExecution(params: Athena.Types.BatchGetQueryExecutionInput, callback?: (err: AWSError, data: Athena.Types.BatchGetQueryExecutionOutput) => void): Request; - /** - * Returns the details of a single query execution or a list of up to 50 query executions, which you provide as an array of query execution ID strings. To get a list of query execution IDs, use ListQueryExecutions. Query executions are different from named (saved) queries. Use BatchGetNamedQuery to get details about named queries. - */ - batchGetQueryExecution(callback?: (err: AWSError, data: Athena.Types.BatchGetQueryExecutionOutput) => void): Request; - /** - * Creates a named query. For code samples using the AWS SDK for Java, see Examples and Code Samples in the Amazon Athena User Guide. - */ - createNamedQuery(params: Athena.Types.CreateNamedQueryInput, callback?: (err: AWSError, data: Athena.Types.CreateNamedQueryOutput) => void): Request; - /** - * Creates a named query. For code samples using the AWS SDK for Java, see Examples and Code Samples in the Amazon Athena User Guide. - */ - createNamedQuery(callback?: (err: AWSError, data: Athena.Types.CreateNamedQueryOutput) => void): Request; - /** - * Deletes a named query. For code samples using the AWS SDK for Java, see Examples and Code Samples in the Amazon Athena User Guide. - */ - deleteNamedQuery(params: Athena.Types.DeleteNamedQueryInput, callback?: (err: AWSError, data: Athena.Types.DeleteNamedQueryOutput) => void): Request; - /** - * Deletes a named query. For code samples using the AWS SDK for Java, see Examples and Code Samples in the Amazon Athena User Guide. - */ - deleteNamedQuery(callback?: (err: AWSError, data: Athena.Types.DeleteNamedQueryOutput) => void): Request; - /** - * Returns information about a single query. - */ - getNamedQuery(params: Athena.Types.GetNamedQueryInput, callback?: (err: AWSError, data: Athena.Types.GetNamedQueryOutput) => void): Request; - /** - * Returns information about a single query. - */ - getNamedQuery(callback?: (err: AWSError, data: Athena.Types.GetNamedQueryOutput) => void): Request; - /** - * Returns information about a single execution of a query. Each time a query executes, information about the query execution is saved with a unique ID. - */ - getQueryExecution(params: Athena.Types.GetQueryExecutionInput, callback?: (err: AWSError, data: Athena.Types.GetQueryExecutionOutput) => void): Request; - /** - * Returns information about a single execution of a query. Each time a query executes, information about the query execution is saved with a unique ID. - */ - getQueryExecution(callback?: (err: AWSError, data: Athena.Types.GetQueryExecutionOutput) => void): Request; - /** - * Returns the results of a single query execution specified by QueryExecutionId. This request does not execute the query but returns results. Use StartQueryExecution to run a query. - */ - getQueryResults(params: Athena.Types.GetQueryResultsInput, callback?: (err: AWSError, data: Athena.Types.GetQueryResultsOutput) => void): Request; - /** - * Returns the results of a single query execution specified by QueryExecutionId. This request does not execute the query but returns results. Use StartQueryExecution to run a query. - */ - getQueryResults(callback?: (err: AWSError, data: Athena.Types.GetQueryResultsOutput) => void): Request; - /** - * Provides a list of all available query IDs. For code samples using the AWS SDK for Java, see Examples and Code Samples in the Amazon Athena User Guide. - */ - listNamedQueries(params: Athena.Types.ListNamedQueriesInput, callback?: (err: AWSError, data: Athena.Types.ListNamedQueriesOutput) => void): Request; - /** - * Provides a list of all available query IDs. For code samples using the AWS SDK for Java, see Examples and Code Samples in the Amazon Athena User Guide. - */ - listNamedQueries(callback?: (err: AWSError, data: Athena.Types.ListNamedQueriesOutput) => void): Request; - /** - * Provides a list of all available query execution IDs. For code samples using the AWS SDK for Java, see Examples and Code Samples in the Amazon Athena User Guide. - */ - listQueryExecutions(params: Athena.Types.ListQueryExecutionsInput, callback?: (err: AWSError, data: Athena.Types.ListQueryExecutionsOutput) => void): Request; - /** - * Provides a list of all available query execution IDs. For code samples using the AWS SDK for Java, see Examples and Code Samples in the Amazon Athena User Guide. - */ - listQueryExecutions(callback?: (err: AWSError, data: Athena.Types.ListQueryExecutionsOutput) => void): Request; - /** - * Runs (executes) the SQL query statements contained in the Query string. For code samples using the AWS SDK for Java, see Examples and Code Samples in the Amazon Athena User Guide. - */ - startQueryExecution(params: Athena.Types.StartQueryExecutionInput, callback?: (err: AWSError, data: Athena.Types.StartQueryExecutionOutput) => void): Request; - /** - * Runs (executes) the SQL query statements contained in the Query string. For code samples using the AWS SDK for Java, see Examples and Code Samples in the Amazon Athena User Guide. - */ - startQueryExecution(callback?: (err: AWSError, data: Athena.Types.StartQueryExecutionOutput) => void): Request; - /** - * Stops a query execution. For code samples using the AWS SDK for Java, see Examples and Code Samples in the Amazon Athena User Guide. - */ - stopQueryExecution(params: Athena.Types.StopQueryExecutionInput, callback?: (err: AWSError, data: Athena.Types.StopQueryExecutionOutput) => void): Request; - /** - * Stops a query execution. For code samples using the AWS SDK for Java, see Examples and Code Samples in the Amazon Athena User Guide. - */ - stopQueryExecution(callback?: (err: AWSError, data: Athena.Types.StopQueryExecutionOutput) => void): Request; -} -declare namespace Athena { - export interface BatchGetNamedQueryInput { - /** - * An array of query IDs. - */ - NamedQueryIds: NamedQueryIdList; - } - export interface BatchGetNamedQueryOutput { - /** - * Information about the named query IDs submitted. - */ - NamedQueries?: NamedQueryList; - /** - * Information about provided query IDs. - */ - UnprocessedNamedQueryIds?: UnprocessedNamedQueryIdList; - } - export interface BatchGetQueryExecutionInput { - /** - * An array of query execution IDs. - */ - QueryExecutionIds: QueryExecutionIdList; - } - export interface BatchGetQueryExecutionOutput { - /** - * Information about a query execution. - */ - QueryExecutions?: QueryExecutionList; - /** - * Information about the query executions that failed to run. - */ - UnprocessedQueryExecutionIds?: UnprocessedQueryExecutionIdList; - } - export type Boolean = boolean; - export interface ColumnInfo { - /** - * The catalog to which the query results belong. - */ - CatalogName?: String; - /** - * The schema name (database name) to which the query results belong. - */ - SchemaName?: String; - /** - * The table name for the query results. - */ - TableName?: String; - /** - * The name of the column. - */ - Name: String; - /** - * A column label. - */ - Label?: String; - /** - * The data type of the column. - */ - Type: String; - /** - * For DECIMAL data types, specifies the total number of digits, up to 38. For performance reasons, we recommend up to 18 digits. - */ - Precision?: Integer; - /** - * For DECIMAL data types, specifies the total number of digits in the fractional part of the value. Defaults to 0. - */ - Scale?: Integer; - /** - * Indicates the column's nullable status. - */ - Nullable?: ColumnNullable; - /** - * Indicates whether values in the column are case-sensitive. - */ - CaseSensitive?: Boolean; - } - export type ColumnInfoList = ColumnInfo[]; - export type ColumnNullable = "NOT_NULL"|"NULLABLE"|"UNKNOWN"|string; - export interface CreateNamedQueryInput { - /** - * The plain language name for the query. - */ - Name: NameString; - /** - * A brief explanation of the query. - */ - Description?: DescriptionString; - /** - * The database to which the query belongs. - */ - Database: DatabaseString; - /** - * The text of the query itself. In other words, all query statements. - */ - QueryString: QueryString; - /** - * A unique case-sensitive string used to ensure the request to create the query is idempotent (executes only once). If another CreateNamedQuery request is received, the same response is returned and another query is not created. If a parameter has changed, for example, the QueryString, an error is returned. This token is listed as not required because AWS SDKs (for example the AWS SDK for Java) auto-generate the token for users. If you are not using the AWS SDK or the AWS CLI, you must provide this token or the action will fail. - */ - ClientRequestToken?: IdempotencyToken; - } - export interface CreateNamedQueryOutput { - /** - * The unique ID of the query. - */ - NamedQueryId?: NamedQueryId; - } - export type DatabaseString = string; - export type _Date = Date; - export interface Datum { - /** - * The value of the datum. - */ - VarCharValue?: datumString; - } - export interface DeleteNamedQueryInput { - /** - * The unique ID of the query to delete. - */ - NamedQueryId: NamedQueryId; - } - export interface DeleteNamedQueryOutput { - } - export type DescriptionString = string; - export interface EncryptionConfiguration { - /** - * Indicates whether Amazon S3 server-side encryption with Amazon S3-managed keys (SSE-S3), server-side encryption with KMS-managed keys (SSE-KMS), or client-side encryption with KMS-managed keys (CSE-KMS) is used. - */ - EncryptionOption: EncryptionOption; - /** - * For SSE-KMS and CSE-KMS, this is the KMS key ARN or ID. - */ - KmsKey?: String; - } - export type EncryptionOption = "SSE_S3"|"SSE_KMS"|"CSE_KMS"|string; - export type ErrorCode = string; - export type ErrorMessage = string; - export interface GetNamedQueryInput { - /** - * The unique ID of the query. Use ListNamedQueries to get query IDs. - */ - NamedQueryId: NamedQueryId; - } - export interface GetNamedQueryOutput { - /** - * Information about the query. - */ - NamedQuery?: NamedQuery; - } - export interface GetQueryExecutionInput { - /** - * The unique ID of the query execution. - */ - QueryExecutionId: QueryExecutionId; - } - export interface GetQueryExecutionOutput { - /** - * Information about the query execution. - */ - QueryExecution?: QueryExecution; - } - export interface GetQueryResultsInput { - /** - * The unique ID of the query execution. - */ - QueryExecutionId: QueryExecutionId; - /** - * The token that specifies where to start pagination if a previous request was truncated. - */ - NextToken?: Token; - /** - * The maximum number of results (rows) to return in this request. - */ - MaxResults?: MaxQueryResults; - } - export interface GetQueryResultsOutput { - /** - * The results of the query execution. - */ - ResultSet?: ResultSet; - /** - * A token to be used by the next request if this request is truncated. - */ - NextToken?: Token; - } - export type IdempotencyToken = string; - export type Integer = number; - export interface ListNamedQueriesInput { - /** - * The token that specifies where to start pagination if a previous request was truncated. - */ - NextToken?: Token; - /** - * The maximum number of queries to return in this request. - */ - MaxResults?: MaxNamedQueriesCount; - } - export interface ListNamedQueriesOutput { - /** - * The list of unique query IDs. - */ - NamedQueryIds?: NamedQueryIdList; - /** - * A token to be used by the next request if this request is truncated. - */ - NextToken?: Token; - } - export interface ListQueryExecutionsInput { - /** - * The token that specifies where to start pagination if a previous request was truncated. - */ - NextToken?: Token; - /** - * The maximum number of query executions to return in this request. - */ - MaxResults?: MaxQueryExecutionsCount; - } - export interface ListQueryExecutionsOutput { - /** - * The unique IDs of each query execution as an array of strings. - */ - QueryExecutionIds?: QueryExecutionIdList; - /** - * A token to be used by the next request if this request is truncated. - */ - NextToken?: Token; - } - export type Long = number; - export type MaxNamedQueriesCount = number; - export type MaxQueryExecutionsCount = number; - export type MaxQueryResults = number; - export type NameString = string; - export interface NamedQuery { - /** - * The plain-language name of the query. - */ - Name: NameString; - /** - * A brief description of the query. - */ - Description?: DescriptionString; - /** - * The database to which the query belongs. - */ - Database: DatabaseString; - /** - * The SQL query statements that comprise the query. - */ - QueryString: QueryString; - /** - * The unique identifier of the query. - */ - NamedQueryId?: NamedQueryId; - } - export type NamedQueryId = string; - export type NamedQueryIdList = NamedQueryId[]; - export type NamedQueryList = NamedQuery[]; - export interface QueryExecution { - /** - * The unique identifier for each query execution. - */ - QueryExecutionId?: QueryExecutionId; - /** - * The SQL query statements which the query execution ran. - */ - Query?: QueryString; - /** - * The location in Amazon S3 where query results were stored and the encryption option, if any, used for query results. - */ - ResultConfiguration?: ResultConfiguration; - /** - * The database in which the query execution occurred. - */ - QueryExecutionContext?: QueryExecutionContext; - /** - * The completion date, current state, submission time, and state change reason (if applicable) for the query execution. - */ - Status?: QueryExecutionStatus; - /** - * The amount of data scanned during the query execution and the amount of time that it took to execute. - */ - Statistics?: QueryExecutionStatistics; - } - export interface QueryExecutionContext { - /** - * The name of the database. - */ - Database?: DatabaseString; - } - export type QueryExecutionId = string; - export type QueryExecutionIdList = QueryExecutionId[]; - export type QueryExecutionList = QueryExecution[]; - export type QueryExecutionState = "QUEUED"|"RUNNING"|"SUCCEEDED"|"FAILED"|"CANCELLED"|string; - export interface QueryExecutionStatistics { - /** - * The number of milliseconds that the query took to execute. - */ - EngineExecutionTimeInMillis?: Long; - /** - * The number of bytes in the data that was queried. - */ - DataScannedInBytes?: Long; - } - export interface QueryExecutionStatus { - /** - * The state of query execution. SUBMITTED indicates that the query is queued for execution. RUNNING indicates that the query is scanning data and returning results. SUCCEEDED indicates that the query completed without error. FAILED indicates that the query experienced an error and did not complete processing. CANCELLED indicates that user input interrupted query execution. - */ - State?: QueryExecutionState; - /** - * Further detail about the status of the query. - */ - StateChangeReason?: String; - /** - * The date and time that the query was submitted. - */ - SubmissionDateTime?: _Date; - /** - * The date and time that the query completed. - */ - CompletionDateTime?: _Date; - } - export type QueryString = string; - export interface ResultConfiguration { - /** - * The location in S3 where query results are stored. - */ - OutputLocation: String; - /** - * If query results are encrypted in S3, indicates the S3 encryption option used (for example, SSE-KMS or CSE-KMS and key information. - */ - EncryptionConfiguration?: EncryptionConfiguration; - } - export interface ResultSet { - /** - * The rows in the table. - */ - Rows?: RowList; - /** - * The metadata that describes the column structure and data types of a table of query results. - */ - ResultSetMetadata?: ResultSetMetadata; - } - export interface ResultSetMetadata { - /** - * Information about the columns in a query execution result. - */ - ColumnInfo?: ColumnInfoList; - } - export interface Row { - /** - * The data that populates a row in a query result table. - */ - Data?: datumList; - } - export type RowList = Row[]; - export interface StartQueryExecutionInput { - /** - * The SQL query statements to be executed. - */ - QueryString: QueryString; - /** - * A unique case-sensitive string used to ensure the request to create the query is idempotent (executes only once). If another StartQueryExecution request is received, the same response is returned and another query is not created. If a parameter has changed, for example, the QueryString, an error is returned. This token is listed as not required because AWS SDKs (for example the AWS SDK for Java) auto-generate the token for users. If you are not using the AWS SDK or the AWS CLI, you must provide this token or the action will fail. - */ - ClientRequestToken?: IdempotencyToken; - /** - * The database within which the query executes. - */ - QueryExecutionContext?: QueryExecutionContext; - /** - * Specifies information about where and how to save the results of the query execution. - */ - ResultConfiguration: ResultConfiguration; - } - export interface StartQueryExecutionOutput { - /** - * The unique ID of the query that ran as a result of this request. - */ - QueryExecutionId?: QueryExecutionId; - } - export interface StopQueryExecutionInput { - /** - * The unique ID of the query execution to stop. - */ - QueryExecutionId: QueryExecutionId; - } - export interface StopQueryExecutionOutput { - } - export type String = string; - export type ThrottleReason = "CONCURRENT_QUERY_LIMIT_EXCEEDED"|string; - export type Token = string; - export interface UnprocessedNamedQueryId { - /** - * The unique identifier of the named query. - */ - NamedQueryId?: NamedQueryId; - /** - * The error code returned when the processing request for the named query failed, if applicable. - */ - ErrorCode?: ErrorCode; - /** - * The error message returned when the processing request for the named query failed, if applicable. - */ - ErrorMessage?: ErrorMessage; - } - export type UnprocessedNamedQueryIdList = UnprocessedNamedQueryId[]; - export interface UnprocessedQueryExecutionId { - /** - * The unique identifier of the query execution. - */ - QueryExecutionId?: QueryExecutionId; - /** - * The error code returned when the query execution failed to process, if applicable. - */ - ErrorCode?: ErrorCode; - /** - * The error message returned when the query execution failed to process, if applicable. - */ - ErrorMessage?: ErrorMessage; - } - export type UnprocessedQueryExecutionIdList = UnprocessedQueryExecutionId[]; - export type datumList = Datum[]; - export type datumString = string; - /** - * A string in YYYY-MM-DD format that represents the latest possible API version that can be used in this service. Specify 'latest' to use the latest possible version. - */ - export type apiVersion = "2017-05-18"|"latest"|string; - export interface ClientApiVersions { - /** - * A string in YYYY-MM-DD format that represents the latest possible API version that can be used in this service. Specify 'latest' to use the latest possible version. - */ - apiVersion?: apiVersion; - } - export type ClientConfiguration = ServiceConfigurationOptions & ClientApiVersions; - /** - * Contains interfaces for use with the Athena client. - */ - export import Types = Athena; -} -export = Athena; diff --git a/workshops/monte-carlo-on-ec2-spot-fleet/src/web/node_modules/aws-sdk/clients/athena.js b/workshops/monte-carlo-on-ec2-spot-fleet/src/web/node_modules/aws-sdk/clients/athena.js deleted file mode 100644 index 52910165..00000000 --- a/workshops/monte-carlo-on-ec2-spot-fleet/src/web/node_modules/aws-sdk/clients/athena.js +++ /dev/null @@ -1,18 +0,0 @@ -require('../lib/node_loader'); -var AWS = require('../lib/core'); -var Service = AWS.Service; -var apiLoader = AWS.apiLoader; - -apiLoader.services['athena'] = {}; -AWS.Athena = Service.defineService('athena', ['2017-05-18']); -Object.defineProperty(apiLoader.services['athena'], '2017-05-18', { - get: function get() { - var model = require('../apis/athena-2017-05-18.min.json'); - model.paginators = require('../apis/athena-2017-05-18.paginators.json').pagination; - return model; - }, - enumerable: true, - configurable: true -}); - -module.exports = AWS.Athena; diff --git a/workshops/monte-carlo-on-ec2-spot-fleet/src/web/node_modules/aws-sdk/clients/autoscaling.d.ts b/workshops/monte-carlo-on-ec2-spot-fleet/src/web/node_modules/aws-sdk/clients/autoscaling.d.ts deleted file mode 100644 index 4451b72f..00000000 --- a/workshops/monte-carlo-on-ec2-spot-fleet/src/web/node_modules/aws-sdk/clients/autoscaling.d.ts +++ /dev/null @@ -1,2259 +0,0 @@ -import {Request} from '../lib/request'; -import {Response} from '../lib/response'; -import {AWSError} from '../lib/error'; -import {Service} from '../lib/service'; -import {ServiceConfigurationOptions} from '../lib/service'; -import {ConfigBase as Config} from '../lib/config'; -interface Blob {} -declare class AutoScaling extends Service { - /** - * Constructs a service object. This object has one method for each API operation. - */ - constructor(options?: AutoScaling.Types.ClientConfiguration) - config: Config & AutoScaling.Types.ClientConfiguration; - /** - * Attaches one or more EC2 instances to the specified Auto Scaling group. When you attach instances, Auto Scaling increases the desired capacity of the group by the number of instances being attached. If the number of instances being attached plus the desired capacity of the group exceeds the maximum size of the group, the operation fails. If there is a Classic Load Balancer attached to your Auto Scaling group, the instances are also registered with the load balancer. If there are target groups attached to your Auto Scaling group, the instances are also registered with the target groups. For more information, see Attach EC2 Instances to Your Auto Scaling Group in the Auto Scaling User Guide. - */ - attachInstances(params: AutoScaling.Types.AttachInstancesQuery, callback?: (err: AWSError, data: {}) => void): Request<{}, AWSError>; - /** - * Attaches one or more EC2 instances to the specified Auto Scaling group. When you attach instances, Auto Scaling increases the desired capacity of the group by the number of instances being attached. If the number of instances being attached plus the desired capacity of the group exceeds the maximum size of the group, the operation fails. If there is a Classic Load Balancer attached to your Auto Scaling group, the instances are also registered with the load balancer. If there are target groups attached to your Auto Scaling group, the instances are also registered with the target groups. For more information, see Attach EC2 Instances to Your Auto Scaling Group in the Auto Scaling User Guide. - */ - attachInstances(callback?: (err: AWSError, data: {}) => void): Request<{}, AWSError>; - /** - * Attaches one or more target groups to the specified Auto Scaling group. To describe the target groups for an Auto Scaling group, use DescribeLoadBalancerTargetGroups. To detach the target group from the Auto Scaling group, use DetachLoadBalancerTargetGroups. For more information, see Attach a Load Balancer to Your Auto Scaling Group in the Auto Scaling User Guide. - */ - attachLoadBalancerTargetGroups(params: AutoScaling.Types.AttachLoadBalancerTargetGroupsType, callback?: (err: AWSError, data: AutoScaling.Types.AttachLoadBalancerTargetGroupsResultType) => void): Request; - /** - * Attaches one or more target groups to the specified Auto Scaling group. To describe the target groups for an Auto Scaling group, use DescribeLoadBalancerTargetGroups. To detach the target group from the Auto Scaling group, use DetachLoadBalancerTargetGroups. For more information, see Attach a Load Balancer to Your Auto Scaling Group in the Auto Scaling User Guide. - */ - attachLoadBalancerTargetGroups(callback?: (err: AWSError, data: AutoScaling.Types.AttachLoadBalancerTargetGroupsResultType) => void): Request; - /** - * Attaches one or more Classic Load Balancers to the specified Auto Scaling group. To attach an Application Load Balancer instead, see AttachLoadBalancerTargetGroups. To describe the load balancers for an Auto Scaling group, use DescribeLoadBalancers. To detach the load balancer from the Auto Scaling group, use DetachLoadBalancers. For more information, see Attach a Load Balancer to Your Auto Scaling Group in the Auto Scaling User Guide. - */ - attachLoadBalancers(params: AutoScaling.Types.AttachLoadBalancersType, callback?: (err: AWSError, data: AutoScaling.Types.AttachLoadBalancersResultType) => void): Request; - /** - * Attaches one or more Classic Load Balancers to the specified Auto Scaling group. To attach an Application Load Balancer instead, see AttachLoadBalancerTargetGroups. To describe the load balancers for an Auto Scaling group, use DescribeLoadBalancers. To detach the load balancer from the Auto Scaling group, use DetachLoadBalancers. For more information, see Attach a Load Balancer to Your Auto Scaling Group in the Auto Scaling User Guide. - */ - attachLoadBalancers(callback?: (err: AWSError, data: AutoScaling.Types.AttachLoadBalancersResultType) => void): Request; - /** - * Completes the lifecycle action for the specified token or instance with the specified result. This step is a part of the procedure for adding a lifecycle hook to an Auto Scaling group: (Optional) Create a Lambda function and a rule that allows CloudWatch Events to invoke your Lambda function when Auto Scaling launches or terminates instances. (Optional) Create a notification target and an IAM role. The target can be either an Amazon SQS queue or an Amazon SNS topic. The role allows Auto Scaling to publish lifecycle notifications to the target. Create the lifecycle hook. Specify whether the hook is used when the instances launch or terminate. If you need more time, record the lifecycle action heartbeat to keep the instance in a pending state. If you finish before the timeout period ends, complete the lifecycle action. For more information, see Auto Scaling Lifecycle in the Auto Scaling User Guide. - */ - completeLifecycleAction(params: AutoScaling.Types.CompleteLifecycleActionType, callback?: (err: AWSError, data: AutoScaling.Types.CompleteLifecycleActionAnswer) => void): Request; - /** - * Completes the lifecycle action for the specified token or instance with the specified result. This step is a part of the procedure for adding a lifecycle hook to an Auto Scaling group: (Optional) Create a Lambda function and a rule that allows CloudWatch Events to invoke your Lambda function when Auto Scaling launches or terminates instances. (Optional) Create a notification target and an IAM role. The target can be either an Amazon SQS queue or an Amazon SNS topic. The role allows Auto Scaling to publish lifecycle notifications to the target. Create the lifecycle hook. Specify whether the hook is used when the instances launch or terminate. If you need more time, record the lifecycle action heartbeat to keep the instance in a pending state. If you finish before the timeout period ends, complete the lifecycle action. For more information, see Auto Scaling Lifecycle in the Auto Scaling User Guide. - */ - completeLifecycleAction(callback?: (err: AWSError, data: AutoScaling.Types.CompleteLifecycleActionAnswer) => void): Request; - /** - * Creates an Auto Scaling group with the specified name and attributes. If you exceed your maximum limit of Auto Scaling groups, which by default is 20 per region, the call fails. For information about viewing and updating this limit, see DescribeAccountLimits. For more information, see Auto Scaling Groups in the Auto Scaling User Guide. - */ - createAutoScalingGroup(params: AutoScaling.Types.CreateAutoScalingGroupType, callback?: (err: AWSError, data: {}) => void): Request<{}, AWSError>; - /** - * Creates an Auto Scaling group with the specified name and attributes. If you exceed your maximum limit of Auto Scaling groups, which by default is 20 per region, the call fails. For information about viewing and updating this limit, see DescribeAccountLimits. For more information, see Auto Scaling Groups in the Auto Scaling User Guide. - */ - createAutoScalingGroup(callback?: (err: AWSError, data: {}) => void): Request<{}, AWSError>; - /** - * Creates a launch configuration. If you exceed your maximum limit of launch configurations, which by default is 100 per region, the call fails. For information about viewing and updating this limit, see DescribeAccountLimits. For more information, see Launch Configurations in the Auto Scaling User Guide. - */ - createLaunchConfiguration(params: AutoScaling.Types.CreateLaunchConfigurationType, callback?: (err: AWSError, data: {}) => void): Request<{}, AWSError>; - /** - * Creates a launch configuration. If you exceed your maximum limit of launch configurations, which by default is 100 per region, the call fails. For information about viewing and updating this limit, see DescribeAccountLimits. For more information, see Launch Configurations in the Auto Scaling User Guide. - */ - createLaunchConfiguration(callback?: (err: AWSError, data: {}) => void): Request<{}, AWSError>; - /** - * Creates or updates tags for the specified Auto Scaling group. When you specify a tag with a key that already exists, the operation overwrites the previous tag definition, and you do not get an error message. For more information, see Tagging Auto Scaling Groups and Instances in the Auto Scaling User Guide. - */ - createOrUpdateTags(params: AutoScaling.Types.CreateOrUpdateTagsType, callback?: (err: AWSError, data: {}) => void): Request<{}, AWSError>; - /** - * Creates or updates tags for the specified Auto Scaling group. When you specify a tag with a key that already exists, the operation overwrites the previous tag definition, and you do not get an error message. For more information, see Tagging Auto Scaling Groups and Instances in the Auto Scaling User Guide. - */ - createOrUpdateTags(callback?: (err: AWSError, data: {}) => void): Request<{}, AWSError>; - /** - * Deletes the specified Auto Scaling group. If the group has instances or scaling activities in progress, you must specify the option to force the deletion in order for it to succeed. If the group has policies, deleting the group deletes the policies, the underlying alarm actions, and any alarm that no longer has an associated action. To remove instances from the Auto Scaling group before deleting it, call DetachInstances with the list of instances and the option to decrement the desired capacity so that Auto Scaling does not launch replacement instances. To terminate all instances before deleting the Auto Scaling group, call UpdateAutoScalingGroup and set the minimum size and desired capacity of the Auto Scaling group to zero. - */ - deleteAutoScalingGroup(params: AutoScaling.Types.DeleteAutoScalingGroupType, callback?: (err: AWSError, data: {}) => void): Request<{}, AWSError>; - /** - * Deletes the specified Auto Scaling group. If the group has instances or scaling activities in progress, you must specify the option to force the deletion in order for it to succeed. If the group has policies, deleting the group deletes the policies, the underlying alarm actions, and any alarm that no longer has an associated action. To remove instances from the Auto Scaling group before deleting it, call DetachInstances with the list of instances and the option to decrement the desired capacity so that Auto Scaling does not launch replacement instances. To terminate all instances before deleting the Auto Scaling group, call UpdateAutoScalingGroup and set the minimum size and desired capacity of the Auto Scaling group to zero. - */ - deleteAutoScalingGroup(callback?: (err: AWSError, data: {}) => void): Request<{}, AWSError>; - /** - * Deletes the specified launch configuration. The launch configuration must not be attached to an Auto Scaling group. When this call completes, the launch configuration is no longer available for use. - */ - deleteLaunchConfiguration(params: AutoScaling.Types.LaunchConfigurationNameType, callback?: (err: AWSError, data: {}) => void): Request<{}, AWSError>; - /** - * Deletes the specified launch configuration. The launch configuration must not be attached to an Auto Scaling group. When this call completes, the launch configuration is no longer available for use. - */ - deleteLaunchConfiguration(callback?: (err: AWSError, data: {}) => void): Request<{}, AWSError>; - /** - * Deletes the specified lifecycle hook. If there are any outstanding lifecycle actions, they are completed first (ABANDON for launching instances, CONTINUE for terminating instances). - */ - deleteLifecycleHook(params: AutoScaling.Types.DeleteLifecycleHookType, callback?: (err: AWSError, data: AutoScaling.Types.DeleteLifecycleHookAnswer) => void): Request; - /** - * Deletes the specified lifecycle hook. If there are any outstanding lifecycle actions, they are completed first (ABANDON for launching instances, CONTINUE for terminating instances). - */ - deleteLifecycleHook(callback?: (err: AWSError, data: AutoScaling.Types.DeleteLifecycleHookAnswer) => void): Request; - /** - * Deletes the specified notification. - */ - deleteNotificationConfiguration(params: AutoScaling.Types.DeleteNotificationConfigurationType, callback?: (err: AWSError, data: {}) => void): Request<{}, AWSError>; - /** - * Deletes the specified notification. - */ - deleteNotificationConfiguration(callback?: (err: AWSError, data: {}) => void): Request<{}, AWSError>; - /** - * Deletes the specified Auto Scaling policy. Deleting a policy deletes the underlying alarm action, but does not delete the alarm, even if it no longer has an associated action. - */ - deletePolicy(params: AutoScaling.Types.DeletePolicyType, callback?: (err: AWSError, data: {}) => void): Request<{}, AWSError>; - /** - * Deletes the specified Auto Scaling policy. Deleting a policy deletes the underlying alarm action, but does not delete the alarm, even if it no longer has an associated action. - */ - deletePolicy(callback?: (err: AWSError, data: {}) => void): Request<{}, AWSError>; - /** - * Deletes the specified scheduled action. - */ - deleteScheduledAction(params: AutoScaling.Types.DeleteScheduledActionType, callback?: (err: AWSError, data: {}) => void): Request<{}, AWSError>; - /** - * Deletes the specified scheduled action. - */ - deleteScheduledAction(callback?: (err: AWSError, data: {}) => void): Request<{}, AWSError>; - /** - * Deletes the specified tags. - */ - deleteTags(params: AutoScaling.Types.DeleteTagsType, callback?: (err: AWSError, data: {}) => void): Request<{}, AWSError>; - /** - * Deletes the specified tags. - */ - deleteTags(callback?: (err: AWSError, data: {}) => void): Request<{}, AWSError>; - /** - * Describes the current Auto Scaling resource limits for your AWS account. For information about requesting an increase in these limits, see AWS Service Limits in the Amazon Web Services General Reference. - */ - describeAccountLimits(callback?: (err: AWSError, data: AutoScaling.Types.DescribeAccountLimitsAnswer) => void): Request; - /** - * Describes the policy adjustment types for use with PutScalingPolicy. - */ - describeAdjustmentTypes(callback?: (err: AWSError, data: AutoScaling.Types.DescribeAdjustmentTypesAnswer) => void): Request; - /** - * Describes one or more Auto Scaling groups. - */ - describeAutoScalingGroups(params: AutoScaling.Types.AutoScalingGroupNamesType, callback?: (err: AWSError, data: AutoScaling.Types.AutoScalingGroupsType) => void): Request; - /** - * Describes one or more Auto Scaling groups. - */ - describeAutoScalingGroups(callback?: (err: AWSError, data: AutoScaling.Types.AutoScalingGroupsType) => void): Request; - /** - * Describes one or more Auto Scaling instances. - */ - describeAutoScalingInstances(params: AutoScaling.Types.DescribeAutoScalingInstancesType, callback?: (err: AWSError, data: AutoScaling.Types.AutoScalingInstancesType) => void): Request; - /** - * Describes one or more Auto Scaling instances. - */ - describeAutoScalingInstances(callback?: (err: AWSError, data: AutoScaling.Types.AutoScalingInstancesType) => void): Request; - /** - * Describes the notification types that are supported by Auto Scaling. - */ - describeAutoScalingNotificationTypes(callback?: (err: AWSError, data: AutoScaling.Types.DescribeAutoScalingNotificationTypesAnswer) => void): Request; - /** - * Describes one or more launch configurations. - */ - describeLaunchConfigurations(params: AutoScaling.Types.LaunchConfigurationNamesType, callback?: (err: AWSError, data: AutoScaling.Types.LaunchConfigurationsType) => void): Request; - /** - * Describes one or more launch configurations. - */ - describeLaunchConfigurations(callback?: (err: AWSError, data: AutoScaling.Types.LaunchConfigurationsType) => void): Request; - /** - * Describes the available types of lifecycle hooks. - */ - describeLifecycleHookTypes(callback?: (err: AWSError, data: AutoScaling.Types.DescribeLifecycleHookTypesAnswer) => void): Request; - /** - * Describes the lifecycle hooks for the specified Auto Scaling group. - */ - describeLifecycleHooks(params: AutoScaling.Types.DescribeLifecycleHooksType, callback?: (err: AWSError, data: AutoScaling.Types.DescribeLifecycleHooksAnswer) => void): Request; - /** - * Describes the lifecycle hooks for the specified Auto Scaling group. - */ - describeLifecycleHooks(callback?: (err: AWSError, data: AutoScaling.Types.DescribeLifecycleHooksAnswer) => void): Request; - /** - * Describes the target groups for the specified Auto Scaling group. - */ - describeLoadBalancerTargetGroups(params: AutoScaling.Types.DescribeLoadBalancerTargetGroupsRequest, callback?: (err: AWSError, data: AutoScaling.Types.DescribeLoadBalancerTargetGroupsResponse) => void): Request; - /** - * Describes the target groups for the specified Auto Scaling group. - */ - describeLoadBalancerTargetGroups(callback?: (err: AWSError, data: AutoScaling.Types.DescribeLoadBalancerTargetGroupsResponse) => void): Request; - /** - * Describes the load balancers for the specified Auto Scaling group. Note that this operation describes only Classic Load Balancers. If you have Application Load Balancers, use DescribeLoadBalancerTargetGroups instead. - */ - describeLoadBalancers(params: AutoScaling.Types.DescribeLoadBalancersRequest, callback?: (err: AWSError, data: AutoScaling.Types.DescribeLoadBalancersResponse) => void): Request; - /** - * Describes the load balancers for the specified Auto Scaling group. Note that this operation describes only Classic Load Balancers. If you have Application Load Balancers, use DescribeLoadBalancerTargetGroups instead. - */ - describeLoadBalancers(callback?: (err: AWSError, data: AutoScaling.Types.DescribeLoadBalancersResponse) => void): Request; - /** - * Describes the available CloudWatch metrics for Auto Scaling. Note that the GroupStandbyInstances metric is not returned by default. You must explicitly request this metric when calling EnableMetricsCollection. - */ - describeMetricCollectionTypes(callback?: (err: AWSError, data: AutoScaling.Types.DescribeMetricCollectionTypesAnswer) => void): Request; - /** - * Describes the notification actions associated with the specified Auto Scaling group. - */ - describeNotificationConfigurations(params: AutoScaling.Types.DescribeNotificationConfigurationsType, callback?: (err: AWSError, data: AutoScaling.Types.DescribeNotificationConfigurationsAnswer) => void): Request; - /** - * Describes the notification actions associated with the specified Auto Scaling group. - */ - describeNotificationConfigurations(callback?: (err: AWSError, data: AutoScaling.Types.DescribeNotificationConfigurationsAnswer) => void): Request; - /** - * Describes the policies for the specified Auto Scaling group. - */ - describePolicies(params: AutoScaling.Types.DescribePoliciesType, callback?: (err: AWSError, data: AutoScaling.Types.PoliciesType) => void): Request; - /** - * Describes the policies for the specified Auto Scaling group. - */ - describePolicies(callback?: (err: AWSError, data: AutoScaling.Types.PoliciesType) => void): Request; - /** - * Describes one or more scaling activities for the specified Auto Scaling group. - */ - describeScalingActivities(params: AutoScaling.Types.DescribeScalingActivitiesType, callback?: (err: AWSError, data: AutoScaling.Types.ActivitiesType) => void): Request; - /** - * Describes one or more scaling activities for the specified Auto Scaling group. - */ - describeScalingActivities(callback?: (err: AWSError, data: AutoScaling.Types.ActivitiesType) => void): Request; - /** - * Describes the scaling process types for use with ResumeProcesses and SuspendProcesses. - */ - describeScalingProcessTypes(callback?: (err: AWSError, data: AutoScaling.Types.ProcessesType) => void): Request; - /** - * Describes the actions scheduled for your Auto Scaling group that haven't run. To describe the actions that have already run, use DescribeScalingActivities. - */ - describeScheduledActions(params: AutoScaling.Types.DescribeScheduledActionsType, callback?: (err: AWSError, data: AutoScaling.Types.ScheduledActionsType) => void): Request; - /** - * Describes the actions scheduled for your Auto Scaling group that haven't run. To describe the actions that have already run, use DescribeScalingActivities. - */ - describeScheduledActions(callback?: (err: AWSError, data: AutoScaling.Types.ScheduledActionsType) => void): Request; - /** - * Describes the specified tags. You can use filters to limit the results. For example, you can query for the tags for a specific Auto Scaling group. You can specify multiple values for a filter. A tag must match at least one of the specified values for it to be included in the results. You can also specify multiple filters. The result includes information for a particular tag only if it matches all the filters. If there's no match, no special message is returned. - */ - describeTags(params: AutoScaling.Types.DescribeTagsType, callback?: (err: AWSError, data: AutoScaling.Types.TagsType) => void): Request; - /** - * Describes the specified tags. You can use filters to limit the results. For example, you can query for the tags for a specific Auto Scaling group. You can specify multiple values for a filter. A tag must match at least one of the specified values for it to be included in the results. You can also specify multiple filters. The result includes information for a particular tag only if it matches all the filters. If there's no match, no special message is returned. - */ - describeTags(callback?: (err: AWSError, data: AutoScaling.Types.TagsType) => void): Request; - /** - * Describes the termination policies supported by Auto Scaling. - */ - describeTerminationPolicyTypes(callback?: (err: AWSError, data: AutoScaling.Types.DescribeTerminationPolicyTypesAnswer) => void): Request; - /** - * Removes one or more instances from the specified Auto Scaling group. After the instances are detached, you can manage them independent of the Auto Scaling group. If you do not specify the option to decrement the desired capacity, Auto Scaling launches instances to replace the ones that are detached. If there is a Classic Load Balancer attached to the Auto Scaling group, the instances are deregistered from the load balancer. If there are target groups attached to the Auto Scaling group, the instances are deregistered from the target groups. For more information, see Detach EC2 Instances from Your Auto Scaling Group in the Auto Scaling User Guide. - */ - detachInstances(params: AutoScaling.Types.DetachInstancesQuery, callback?: (err: AWSError, data: AutoScaling.Types.DetachInstancesAnswer) => void): Request; - /** - * Removes one or more instances from the specified Auto Scaling group. After the instances are detached, you can manage them independent of the Auto Scaling group. If you do not specify the option to decrement the desired capacity, Auto Scaling launches instances to replace the ones that are detached. If there is a Classic Load Balancer attached to the Auto Scaling group, the instances are deregistered from the load balancer. If there are target groups attached to the Auto Scaling group, the instances are deregistered from the target groups. For more information, see Detach EC2 Instances from Your Auto Scaling Group in the Auto Scaling User Guide. - */ - detachInstances(callback?: (err: AWSError, data: AutoScaling.Types.DetachInstancesAnswer) => void): Request; - /** - * Detaches one or more target groups from the specified Auto Scaling group. - */ - detachLoadBalancerTargetGroups(params: AutoScaling.Types.DetachLoadBalancerTargetGroupsType, callback?: (err: AWSError, data: AutoScaling.Types.DetachLoadBalancerTargetGroupsResultType) => void): Request; - /** - * Detaches one or more target groups from the specified Auto Scaling group. - */ - detachLoadBalancerTargetGroups(callback?: (err: AWSError, data: AutoScaling.Types.DetachLoadBalancerTargetGroupsResultType) => void): Request; - /** - * Detaches one or more Classic Load Balancers from the specified Auto Scaling group. Note that this operation detaches only Classic Load Balancers. If you have Application Load Balancers, use DetachLoadBalancerTargetGroups instead. When you detach a load balancer, it enters the Removing state while deregistering the instances in the group. When all instances are deregistered, then you can no longer describe the load balancer using DescribeLoadBalancers. Note that the instances remain running. - */ - detachLoadBalancers(params: AutoScaling.Types.DetachLoadBalancersType, callback?: (err: AWSError, data: AutoScaling.Types.DetachLoadBalancersResultType) => void): Request; - /** - * Detaches one or more Classic Load Balancers from the specified Auto Scaling group. Note that this operation detaches only Classic Load Balancers. If you have Application Load Balancers, use DetachLoadBalancerTargetGroups instead. When you detach a load balancer, it enters the Removing state while deregistering the instances in the group. When all instances are deregistered, then you can no longer describe the load balancer using DescribeLoadBalancers. Note that the instances remain running. - */ - detachLoadBalancers(callback?: (err: AWSError, data: AutoScaling.Types.DetachLoadBalancersResultType) => void): Request; - /** - * Disables group metrics for the specified Auto Scaling group. - */ - disableMetricsCollection(params: AutoScaling.Types.DisableMetricsCollectionQuery, callback?: (err: AWSError, data: {}) => void): Request<{}, AWSError>; - /** - * Disables group metrics for the specified Auto Scaling group. - */ - disableMetricsCollection(callback?: (err: AWSError, data: {}) => void): Request<{}, AWSError>; - /** - * Enables group metrics for the specified Auto Scaling group. For more information, see Monitoring Your Auto Scaling Groups and Instances in the Auto Scaling User Guide. - */ - enableMetricsCollection(params: AutoScaling.Types.EnableMetricsCollectionQuery, callback?: (err: AWSError, data: {}) => void): Request<{}, AWSError>; - /** - * Enables group metrics for the specified Auto Scaling group. For more information, see Monitoring Your Auto Scaling Groups and Instances in the Auto Scaling User Guide. - */ - enableMetricsCollection(callback?: (err: AWSError, data: {}) => void): Request<{}, AWSError>; - /** - * Moves the specified instances into the standby state. For more information, see Temporarily Removing Instances from Your Auto Scaling Group in the Auto Scaling User Guide. - */ - enterStandby(params: AutoScaling.Types.EnterStandbyQuery, callback?: (err: AWSError, data: AutoScaling.Types.EnterStandbyAnswer) => void): Request; - /** - * Moves the specified instances into the standby state. For more information, see Temporarily Removing Instances from Your Auto Scaling Group in the Auto Scaling User Guide. - */ - enterStandby(callback?: (err: AWSError, data: AutoScaling.Types.EnterStandbyAnswer) => void): Request; - /** - * Executes the specified policy. - */ - executePolicy(params: AutoScaling.Types.ExecutePolicyType, callback?: (err: AWSError, data: {}) => void): Request<{}, AWSError>; - /** - * Executes the specified policy. - */ - executePolicy(callback?: (err: AWSError, data: {}) => void): Request<{}, AWSError>; - /** - * Moves the specified instances out of the standby state. For more information, see Temporarily Removing Instances from Your Auto Scaling Group in the Auto Scaling User Guide. - */ - exitStandby(params: AutoScaling.Types.ExitStandbyQuery, callback?: (err: AWSError, data: AutoScaling.Types.ExitStandbyAnswer) => void): Request; - /** - * Moves the specified instances out of the standby state. For more information, see Temporarily Removing Instances from Your Auto Scaling Group in the Auto Scaling User Guide. - */ - exitStandby(callback?: (err: AWSError, data: AutoScaling.Types.ExitStandbyAnswer) => void): Request; - /** - * Creates or updates a lifecycle hook for the specified Auto Scaling Group. A lifecycle hook tells Auto Scaling that you want to perform an action on an instance that is not actively in service; for example, either when the instance launches or before the instance terminates. This step is a part of the procedure for adding a lifecycle hook to an Auto Scaling group: (Optional) Create a Lambda function and a rule that allows CloudWatch Events to invoke your Lambda function when Auto Scaling launches or terminates instances. (Optional) Create a notification target and an IAM role. The target can be either an Amazon SQS queue or an Amazon SNS topic. The role allows Auto Scaling to publish lifecycle notifications to the target. Create the lifecycle hook. Specify whether the hook is used when the instances launch or terminate. If you need more time, record the lifecycle action heartbeat to keep the instance in a pending state. If you finish before the timeout period ends, complete the lifecycle action. For more information, see Auto Scaling Lifecycle Hooks in the Auto Scaling User Guide. If you exceed your maximum limit of lifecycle hooks, which by default is 50 per Auto Scaling group, the call fails. For information about updating this limit, see AWS Service Limits in the Amazon Web Services General Reference. - */ - putLifecycleHook(params: AutoScaling.Types.PutLifecycleHookType, callback?: (err: AWSError, data: AutoScaling.Types.PutLifecycleHookAnswer) => void): Request; - /** - * Creates or updates a lifecycle hook for the specified Auto Scaling Group. A lifecycle hook tells Auto Scaling that you want to perform an action on an instance that is not actively in service; for example, either when the instance launches or before the instance terminates. This step is a part of the procedure for adding a lifecycle hook to an Auto Scaling group: (Optional) Create a Lambda function and a rule that allows CloudWatch Events to invoke your Lambda function when Auto Scaling launches or terminates instances. (Optional) Create a notification target and an IAM role. The target can be either an Amazon SQS queue or an Amazon SNS topic. The role allows Auto Scaling to publish lifecycle notifications to the target. Create the lifecycle hook. Specify whether the hook is used when the instances launch or terminate. If you need more time, record the lifecycle action heartbeat to keep the instance in a pending state. If you finish before the timeout period ends, complete the lifecycle action. For more information, see Auto Scaling Lifecycle Hooks in the Auto Scaling User Guide. If you exceed your maximum limit of lifecycle hooks, which by default is 50 per Auto Scaling group, the call fails. For information about updating this limit, see AWS Service Limits in the Amazon Web Services General Reference. - */ - putLifecycleHook(callback?: (err: AWSError, data: AutoScaling.Types.PutLifecycleHookAnswer) => void): Request; - /** - * Configures an Auto Scaling group to send notifications when specified events take place. Subscribers to the specified topic can have messages delivered to an endpoint such as a web server or an email address. This configuration overwrites any existing configuration. For more information see Getting SNS Notifications When Your Auto Scaling Group Scales in the Auto Scaling User Guide. - */ - putNotificationConfiguration(params: AutoScaling.Types.PutNotificationConfigurationType, callback?: (err: AWSError, data: {}) => void): Request<{}, AWSError>; - /** - * Configures an Auto Scaling group to send notifications when specified events take place. Subscribers to the specified topic can have messages delivered to an endpoint such as a web server or an email address. This configuration overwrites any existing configuration. For more information see Getting SNS Notifications When Your Auto Scaling Group Scales in the Auto Scaling User Guide. - */ - putNotificationConfiguration(callback?: (err: AWSError, data: {}) => void): Request<{}, AWSError>; - /** - * Creates or updates a policy for an Auto Scaling group. To update an existing policy, use the existing policy name and set the parameters you want to change. Any existing parameter not changed in an update to an existing policy is not changed in this update request. If you exceed your maximum limit of step adjustments, which by default is 20 per region, the call fails. For information about updating this limit, see AWS Service Limits in the Amazon Web Services General Reference. - */ - putScalingPolicy(params: AutoScaling.Types.PutScalingPolicyType, callback?: (err: AWSError, data: AutoScaling.Types.PolicyARNType) => void): Request; - /** - * Creates or updates a policy for an Auto Scaling group. To update an existing policy, use the existing policy name and set the parameters you want to change. Any existing parameter not changed in an update to an existing policy is not changed in this update request. If you exceed your maximum limit of step adjustments, which by default is 20 per region, the call fails. For information about updating this limit, see AWS Service Limits in the Amazon Web Services General Reference. - */ - putScalingPolicy(callback?: (err: AWSError, data: AutoScaling.Types.PolicyARNType) => void): Request; - /** - * Creates or updates a scheduled scaling action for an Auto Scaling group. When updating a scheduled scaling action, if you leave a parameter unspecified, the corresponding value remains unchanged. For more information, see Scheduled Scaling in the Auto Scaling User Guide. - */ - putScheduledUpdateGroupAction(params: AutoScaling.Types.PutScheduledUpdateGroupActionType, callback?: (err: AWSError, data: {}) => void): Request<{}, AWSError>; - /** - * Creates or updates a scheduled scaling action for an Auto Scaling group. When updating a scheduled scaling action, if you leave a parameter unspecified, the corresponding value remains unchanged. For more information, see Scheduled Scaling in the Auto Scaling User Guide. - */ - putScheduledUpdateGroupAction(callback?: (err: AWSError, data: {}) => void): Request<{}, AWSError>; - /** - * Records a heartbeat for the lifecycle action associated with the specified token or instance. This extends the timeout by the length of time defined using PutLifecycleHook. This step is a part of the procedure for adding a lifecycle hook to an Auto Scaling group: (Optional) Create a Lambda function and a rule that allows CloudWatch Events to invoke your Lambda function when Auto Scaling launches or terminates instances. (Optional) Create a notification target and an IAM role. The target can be either an Amazon SQS queue or an Amazon SNS topic. The role allows Auto Scaling to publish lifecycle notifications to the target. Create the lifecycle hook. Specify whether the hook is used when the instances launch or terminate. If you need more time, record the lifecycle action heartbeat to keep the instance in a pending state. If you finish before the timeout period ends, complete the lifecycle action. For more information, see Auto Scaling Lifecycle in the Auto Scaling User Guide. - */ - recordLifecycleActionHeartbeat(params: AutoScaling.Types.RecordLifecycleActionHeartbeatType, callback?: (err: AWSError, data: AutoScaling.Types.RecordLifecycleActionHeartbeatAnswer) => void): Request; - /** - * Records a heartbeat for the lifecycle action associated with the specified token or instance. This extends the timeout by the length of time defined using PutLifecycleHook. This step is a part of the procedure for adding a lifecycle hook to an Auto Scaling group: (Optional) Create a Lambda function and a rule that allows CloudWatch Events to invoke your Lambda function when Auto Scaling launches or terminates instances. (Optional) Create a notification target and an IAM role. The target can be either an Amazon SQS queue or an Amazon SNS topic. The role allows Auto Scaling to publish lifecycle notifications to the target. Create the lifecycle hook. Specify whether the hook is used when the instances launch or terminate. If you need more time, record the lifecycle action heartbeat to keep the instance in a pending state. If you finish before the timeout period ends, complete the lifecycle action. For more information, see Auto Scaling Lifecycle in the Auto Scaling User Guide. - */ - recordLifecycleActionHeartbeat(callback?: (err: AWSError, data: AutoScaling.Types.RecordLifecycleActionHeartbeatAnswer) => void): Request; - /** - * Resumes the specified suspended Auto Scaling processes, or all suspended process, for the specified Auto Scaling group. For more information, see Suspending and Resuming Auto Scaling Processes in the Auto Scaling User Guide. - */ - resumeProcesses(params: AutoScaling.Types.ScalingProcessQuery, callback?: (err: AWSError, data: {}) => void): Request<{}, AWSError>; - /** - * Resumes the specified suspended Auto Scaling processes, or all suspended process, for the specified Auto Scaling group. For more information, see Suspending and Resuming Auto Scaling Processes in the Auto Scaling User Guide. - */ - resumeProcesses(callback?: (err: AWSError, data: {}) => void): Request<{}, AWSError>; - /** - * Sets the size of the specified Auto Scaling group. For more information about desired capacity, see What Is Auto Scaling? in the Auto Scaling User Guide. - */ - setDesiredCapacity(params: AutoScaling.Types.SetDesiredCapacityType, callback?: (err: AWSError, data: {}) => void): Request<{}, AWSError>; - /** - * Sets the size of the specified Auto Scaling group. For more information about desired capacity, see What Is Auto Scaling? in the Auto Scaling User Guide. - */ - setDesiredCapacity(callback?: (err: AWSError, data: {}) => void): Request<{}, AWSError>; - /** - * Sets the health status of the specified instance. For more information, see Health Checks in the Auto Scaling User Guide. - */ - setInstanceHealth(params: AutoScaling.Types.SetInstanceHealthQuery, callback?: (err: AWSError, data: {}) => void): Request<{}, AWSError>; - /** - * Sets the health status of the specified instance. For more information, see Health Checks in the Auto Scaling User Guide. - */ - setInstanceHealth(callback?: (err: AWSError, data: {}) => void): Request<{}, AWSError>; - /** - * Updates the instance protection settings of the specified instances. For more information, see Instance Protection in the Auto Scaling User Guide. - */ - setInstanceProtection(params: AutoScaling.Types.SetInstanceProtectionQuery, callback?: (err: AWSError, data: AutoScaling.Types.SetInstanceProtectionAnswer) => void): Request; - /** - * Updates the instance protection settings of the specified instances. For more information, see Instance Protection in the Auto Scaling User Guide. - */ - setInstanceProtection(callback?: (err: AWSError, data: AutoScaling.Types.SetInstanceProtectionAnswer) => void): Request; - /** - * Suspends the specified Auto Scaling processes, or all processes, for the specified Auto Scaling group. Note that if you suspend either the Launch or Terminate process types, it can prevent other process types from functioning properly. To resume processes that have been suspended, use ResumeProcesses. For more information, see Suspending and Resuming Auto Scaling Processes in the Auto Scaling User Guide. - */ - suspendProcesses(params: AutoScaling.Types.ScalingProcessQuery, callback?: (err: AWSError, data: {}) => void): Request<{}, AWSError>; - /** - * Suspends the specified Auto Scaling processes, or all processes, for the specified Auto Scaling group. Note that if you suspend either the Launch or Terminate process types, it can prevent other process types from functioning properly. To resume processes that have been suspended, use ResumeProcesses. For more information, see Suspending and Resuming Auto Scaling Processes in the Auto Scaling User Guide. - */ - suspendProcesses(callback?: (err: AWSError, data: {}) => void): Request<{}, AWSError>; - /** - * Terminates the specified instance and optionally adjusts the desired group size. This call simply makes a termination request. The instance is not terminated immediately. - */ - terminateInstanceInAutoScalingGroup(params: AutoScaling.Types.TerminateInstanceInAutoScalingGroupType, callback?: (err: AWSError, data: AutoScaling.Types.ActivityType) => void): Request; - /** - * Terminates the specified instance and optionally adjusts the desired group size. This call simply makes a termination request. The instance is not terminated immediately. - */ - terminateInstanceInAutoScalingGroup(callback?: (err: AWSError, data: AutoScaling.Types.ActivityType) => void): Request; - /** - * Updates the configuration for the specified Auto Scaling group. The new settings take effect on any scaling activities after this call returns. Scaling activities that are currently in progress aren't affected. To update an Auto Scaling group with a launch configuration with InstanceMonitoring set to false, you must first disable the collection of group metrics. Otherwise, you will get an error. If you have previously enabled the collection of group metrics, you can disable it using DisableMetricsCollection. Note the following: If you specify a new value for MinSize without specifying a value for DesiredCapacity, and the new MinSize is larger than the current size of the group, we implicitly call SetDesiredCapacity to set the size of the group to the new value of MinSize. If you specify a new value for MaxSize without specifying a value for DesiredCapacity, and the new MaxSize is smaller than the current size of the group, we implicitly call SetDesiredCapacity to set the size of the group to the new value of MaxSize. All other optional parameters are left unchanged if not specified. - */ - updateAutoScalingGroup(params: AutoScaling.Types.UpdateAutoScalingGroupType, callback?: (err: AWSError, data: {}) => void): Request<{}, AWSError>; - /** - * Updates the configuration for the specified Auto Scaling group. The new settings take effect on any scaling activities after this call returns. Scaling activities that are currently in progress aren't affected. To update an Auto Scaling group with a launch configuration with InstanceMonitoring set to false, you must first disable the collection of group metrics. Otherwise, you will get an error. If you have previously enabled the collection of group metrics, you can disable it using DisableMetricsCollection. Note the following: If you specify a new value for MinSize without specifying a value for DesiredCapacity, and the new MinSize is larger than the current size of the group, we implicitly call SetDesiredCapacity to set the size of the group to the new value of MinSize. If you specify a new value for MaxSize without specifying a value for DesiredCapacity, and the new MaxSize is smaller than the current size of the group, we implicitly call SetDesiredCapacity to set the size of the group to the new value of MaxSize. All other optional parameters are left unchanged if not specified. - */ - updateAutoScalingGroup(callback?: (err: AWSError, data: {}) => void): Request<{}, AWSError>; -} -declare namespace AutoScaling { - export type Activities = Activity[]; - export interface ActivitiesType { - /** - * The scaling activities. Activities are sorted by start time. Activities still in progress are described first. - */ - Activities: Activities; - /** - * The token to use when requesting the next set of items. If there are no additional items to return, the string is empty. - */ - NextToken?: XmlString; - } - export interface Activity { - /** - * The ID of the activity. - */ - ActivityId: XmlString; - /** - * The name of the Auto Scaling group. - */ - AutoScalingGroupName: XmlStringMaxLen255; - /** - * A friendly, more verbose description of the activity. - */ - Description?: XmlString; - /** - * The reason the activity began. - */ - Cause: XmlStringMaxLen1023; - /** - * The start time of the activity. - */ - StartTime: TimestampType; - /** - * The end time of the activity. - */ - EndTime?: TimestampType; - /** - * The current status of the activity. - */ - StatusCode: ScalingActivityStatusCode; - /** - * A friendly, more verbose description of the activity status. - */ - StatusMessage?: XmlStringMaxLen255; - /** - * A value between 0 and 100 that indicates the progress of the activity. - */ - Progress?: Progress; - /** - * The details about the activity. - */ - Details?: XmlString; - } - export type ActivityIds = XmlString[]; - export interface ActivityType { - /** - * A scaling activity. - */ - Activity?: Activity; - } - export interface AdjustmentType { - /** - * The policy adjustment type. The valid values are ChangeInCapacity, ExactCapacity, and PercentChangeInCapacity. - */ - AdjustmentType?: XmlStringMaxLen255; - } - export type AdjustmentTypes = AdjustmentType[]; - export interface Alarm { - /** - * The name of the alarm. - */ - AlarmName?: XmlStringMaxLen255; - /** - * The Amazon Resource Name (ARN) of the alarm. - */ - AlarmARN?: ResourceName; - } - export type Alarms = Alarm[]; - export type AsciiStringMaxLen255 = string; - export type AssociatePublicIpAddress = boolean; - export interface AttachInstancesQuery { - /** - * One or more instance IDs. - */ - InstanceIds?: InstanceIds; - /** - * The name of the group. - */ - AutoScalingGroupName: ResourceName; - } - export interface AttachLoadBalancerTargetGroupsResultType { - } - export interface AttachLoadBalancerTargetGroupsType { - /** - * The name of the Auto Scaling group. - */ - AutoScalingGroupName: ResourceName; - /** - * The Amazon Resource Names (ARN) of the target groups. - */ - TargetGroupARNs: TargetGroupARNs; - } - export interface AttachLoadBalancersResultType { - } - export interface AttachLoadBalancersType { - /** - * The name of the group. - */ - AutoScalingGroupName: ResourceName; - /** - * One or more load balancer names. - */ - LoadBalancerNames: LoadBalancerNames; - } - export interface AutoScalingGroup { - /** - * The name of the group. - */ - AutoScalingGroupName: XmlStringMaxLen255; - /** - * The Amazon Resource Name (ARN) of the group. - */ - AutoScalingGroupARN?: ResourceName; - /** - * The name of the associated launch configuration. - */ - LaunchConfigurationName?: XmlStringMaxLen255; - /** - * The minimum size of the group. - */ - MinSize: AutoScalingGroupMinSize; - /** - * The maximum size of the group. - */ - MaxSize: AutoScalingGroupMaxSize; - /** - * The desired size of the group. - */ - DesiredCapacity: AutoScalingGroupDesiredCapacity; - /** - * The amount of time, in seconds, after a scaling activity completes before another scaling activity can start. - */ - DefaultCooldown: Cooldown; - /** - * One or more Availability Zones for the group. - */ - AvailabilityZones: AvailabilityZones; - /** - * One or more load balancers associated with the group. - */ - LoadBalancerNames?: LoadBalancerNames; - /** - * The Amazon Resource Names (ARN) of the target groups for your load balancer. - */ - TargetGroupARNs?: TargetGroupARNs; - /** - * The service to use for the health checks. The valid values are EC2 and ELB. - */ - HealthCheckType: XmlStringMaxLen32; - /** - * The amount of time, in seconds, that Auto Scaling waits before checking the health status of an EC2 instance that has come into service. - */ - HealthCheckGracePeriod?: HealthCheckGracePeriod; - /** - * The EC2 instances associated with the group. - */ - Instances?: Instances; - /** - * The date and time the group was created. - */ - CreatedTime: TimestampType; - /** - * The suspended processes associated with the group. - */ - SuspendedProcesses?: SuspendedProcesses; - /** - * The name of the placement group into which you'll launch your instances, if any. For more information, see Placement Groups in the Amazon Elastic Compute Cloud User Guide. - */ - PlacementGroup?: XmlStringMaxLen255; - /** - * One or more subnet IDs, if applicable, separated by commas. If you specify VPCZoneIdentifier and AvailabilityZones, ensure that the Availability Zones of the subnets match the values for AvailabilityZones. - */ - VPCZoneIdentifier?: XmlStringMaxLen2047; - /** - * The metrics enabled for the group. - */ - EnabledMetrics?: EnabledMetrics; - /** - * The current state of the group when DeleteAutoScalingGroup is in progress. - */ - Status?: XmlStringMaxLen255; - /** - * The tags for the group. - */ - Tags?: TagDescriptionList; - /** - * The termination policies for the group. - */ - TerminationPolicies?: TerminationPolicies; - /** - * Indicates whether newly launched instances are protected from termination by Auto Scaling when scaling in. - */ - NewInstancesProtectedFromScaleIn?: InstanceProtected; - } - export type AutoScalingGroupDesiredCapacity = number; - export type AutoScalingGroupMaxSize = number; - export type AutoScalingGroupMinSize = number; - export type AutoScalingGroupNames = ResourceName[]; - export interface AutoScalingGroupNamesType { - /** - * The group names. If you omit this parameter, all Auto Scaling groups are described. - */ - AutoScalingGroupNames?: AutoScalingGroupNames; - /** - * The token for the next set of items to return. (You received this token from a previous call.) - */ - NextToken?: XmlString; - /** - * The maximum number of items to return with this call. The default value is 50 and the maximum value is 100. - */ - MaxRecords?: MaxRecords; - } - export type AutoScalingGroups = AutoScalingGroup[]; - export interface AutoScalingGroupsType { - /** - * The groups. - */ - AutoScalingGroups: AutoScalingGroups; - /** - * The token to use when requesting the next set of items. If there are no additional items to return, the string is empty. - */ - NextToken?: XmlString; - } - export interface AutoScalingInstanceDetails { - /** - * The ID of the instance. - */ - InstanceId: XmlStringMaxLen19; - /** - * The name of the Auto Scaling group associated with the instance. - */ - AutoScalingGroupName: XmlStringMaxLen255; - /** - * The Availability Zone for the instance. - */ - AvailabilityZone: XmlStringMaxLen255; - /** - * The lifecycle state for the instance. For more information, see Auto Scaling Lifecycle in the Auto Scaling User Guide. - */ - LifecycleState: XmlStringMaxLen32; - /** - * The last reported health status of this instance. "Healthy" means that the instance is healthy and should remain in service. "Unhealthy" means that the instance is unhealthy and Auto Scaling should terminate and replace it. - */ - HealthStatus: XmlStringMaxLen32; - /** - * The launch configuration used to launch the instance. This value is not available if you attached the instance to the Auto Scaling group. - */ - LaunchConfigurationName: XmlStringMaxLen255; - /** - * Indicates whether the instance is protected from termination by Auto Scaling when scaling in. - */ - ProtectedFromScaleIn: InstanceProtected; - } - export type AutoScalingInstances = AutoScalingInstanceDetails[]; - export interface AutoScalingInstancesType { - /** - * The instances. - */ - AutoScalingInstances?: AutoScalingInstances; - /** - * The token to use when requesting the next set of items. If there are no additional items to return, the string is empty. - */ - NextToken?: XmlString; - } - export type AutoScalingNotificationTypes = XmlStringMaxLen255[]; - export type AvailabilityZones = XmlStringMaxLen255[]; - export type BlockDeviceEbsDeleteOnTermination = boolean; - export type BlockDeviceEbsEncrypted = boolean; - export type BlockDeviceEbsIops = number; - export type BlockDeviceEbsVolumeSize = number; - export type BlockDeviceEbsVolumeType = string; - export interface BlockDeviceMapping { - /** - * The name of the virtual device (for example, ephemeral0). - */ - VirtualName?: XmlStringMaxLen255; - /** - * The device name exposed to the EC2 instance (for example, /dev/sdh or xvdh). - */ - DeviceName: XmlStringMaxLen255; - /** - * The information about the Amazon EBS volume. - */ - Ebs?: Ebs; - /** - * Suppresses a device mapping. If this parameter is true for the root device, the instance might fail the EC2 health check. Auto Scaling launches a replacement instance if the instance fails the health check. - */ - NoDevice?: NoDevice; - } - export type BlockDeviceMappings = BlockDeviceMapping[]; - export type ClassicLinkVPCSecurityGroups = XmlStringMaxLen255[]; - export interface CompleteLifecycleActionAnswer { - } - export interface CompleteLifecycleActionType { - /** - * The name of the lifecycle hook. - */ - LifecycleHookName: AsciiStringMaxLen255; - /** - * The name of the group for the lifecycle hook. - */ - AutoScalingGroupName: ResourceName; - /** - * A universally unique identifier (UUID) that identifies a specific lifecycle action associated with an instance. Auto Scaling sends this token to the notification target you specified when you created the lifecycle hook. - */ - LifecycleActionToken?: LifecycleActionToken; - /** - * The action for the group to take. This parameter can be either CONTINUE or ABANDON. - */ - LifecycleActionResult: LifecycleActionResult; - /** - * The ID of the instance. - */ - InstanceId?: XmlStringMaxLen19; - } - export type Cooldown = number; - export interface CreateAutoScalingGroupType { - /** - * The name of the group. This name must be unique within the scope of your AWS account. - */ - AutoScalingGroupName: XmlStringMaxLen255; - /** - * The name of the launch configuration. Alternatively, specify an EC2 instance instead of a launch configuration. - */ - LaunchConfigurationName?: ResourceName; - /** - * The ID of the instance used to create a launch configuration for the group. Alternatively, specify a launch configuration instead of an EC2 instance. When you specify an ID of an instance, Auto Scaling creates a new launch configuration and associates it with the group. This launch configuration derives its attributes from the specified instance, with the exception of the block device mapping. For more information, see Create an Auto Scaling Group Using an EC2 Instance in the Auto Scaling User Guide. - */ - InstanceId?: XmlStringMaxLen19; - /** - * The minimum size of the group. - */ - MinSize: AutoScalingGroupMinSize; - /** - * The maximum size of the group. - */ - MaxSize: AutoScalingGroupMaxSize; - /** - * The number of EC2 instances that should be running in the group. This number must be greater than or equal to the minimum size of the group and less than or equal to the maximum size of the group. If you do not specify a desired capacity, the default is the minimum size of the group. - */ - DesiredCapacity?: AutoScalingGroupDesiredCapacity; - /** - * The amount of time, in seconds, after a scaling activity completes before another scaling activity can start. The default is 300. For more information, see Auto Scaling Cooldowns in the Auto Scaling User Guide. - */ - DefaultCooldown?: Cooldown; - /** - * One or more Availability Zones for the group. This parameter is optional if you specify one or more subnets. - */ - AvailabilityZones?: AvailabilityZones; - /** - * One or more Classic Load Balancers. To specify an Application Load Balancer, use TargetGroupARNs instead. For more information, see Using a Load Balancer With an Auto Scaling Group in the Auto Scaling User Guide. - */ - LoadBalancerNames?: LoadBalancerNames; - /** - * The Amazon Resource Names (ARN) of the target groups. - */ - TargetGroupARNs?: TargetGroupARNs; - /** - * The service to use for the health checks. The valid values are EC2 and ELB. By default, health checks use Amazon EC2 instance status checks to determine the health of an instance. For more information, see Health Checks in the Auto Scaling User Guide. - */ - HealthCheckType?: XmlStringMaxLen32; - /** - * The amount of time, in seconds, that Auto Scaling waits before checking the health status of an EC2 instance that has come into service. During this time, any health check failures for the instance are ignored. The default is 0. This parameter is required if you are adding an ELB health check. For more information, see Health Checks in the Auto Scaling User Guide. - */ - HealthCheckGracePeriod?: HealthCheckGracePeriod; - /** - * The name of the placement group into which you'll launch your instances, if any. For more information, see Placement Groups in the Amazon Elastic Compute Cloud User Guide. - */ - PlacementGroup?: XmlStringMaxLen255; - /** - * A comma-separated list of subnet identifiers for your virtual private cloud (VPC). If you specify subnets and Availability Zones with this call, ensure that the subnets' Availability Zones match the Availability Zones specified. For more information, see Launching Auto Scaling Instances in a VPC in the Auto Scaling User Guide. - */ - VPCZoneIdentifier?: XmlStringMaxLen2047; - /** - * One or more termination policies used to select the instance to terminate. These policies are executed in the order that they are listed. For more information, see Controlling Which Instances Auto Scaling Terminates During Scale In in the Auto Scaling User Guide. - */ - TerminationPolicies?: TerminationPolicies; - /** - * Indicates whether newly launched instances are protected from termination by Auto Scaling when scaling in. - */ - NewInstancesProtectedFromScaleIn?: InstanceProtected; - /** - * One or more lifecycle hooks. - */ - LifecycleHookSpecificationList?: LifecycleHookSpecifications; - /** - * One or more tags. For more information, see Tagging Auto Scaling Groups and Instances in the Auto Scaling User Guide. - */ - Tags?: Tags; - } - export interface CreateLaunchConfigurationType { - /** - * The name of the launch configuration. This name must be unique within the scope of your AWS account. - */ - LaunchConfigurationName: XmlStringMaxLen255; - /** - * The ID of the Amazon Machine Image (AMI) to use to launch your EC2 instances. If you do not specify InstanceId, you must specify ImageId. For more information, see Finding an AMI in the Amazon Elastic Compute Cloud User Guide. - */ - ImageId?: XmlStringMaxLen255; - /** - * The name of the key pair. For more information, see Amazon EC2 Key Pairs in the Amazon Elastic Compute Cloud User Guide. - */ - KeyName?: XmlStringMaxLen255; - /** - * One or more security groups with which to associate the instances. If your instances are launched in EC2-Classic, you can either specify security group names or the security group IDs. For more information about security groups for EC2-Classic, see Amazon EC2 Security Groups in the Amazon Elastic Compute Cloud User Guide. If your instances are launched into a VPC, specify security group IDs. For more information, see Security Groups for Your VPC in the Amazon Virtual Private Cloud User Guide. - */ - SecurityGroups?: SecurityGroups; - /** - * The ID of a ClassicLink-enabled VPC to link your EC2-Classic instances to. This parameter is supported only if you are launching EC2-Classic instances. For more information, see ClassicLink in the Amazon Elastic Compute Cloud User Guide. - */ - ClassicLinkVPCId?: XmlStringMaxLen255; - /** - * The IDs of one or more security groups for the specified ClassicLink-enabled VPC. This parameter is required if you specify a ClassicLink-enabled VPC, and is not supported otherwise. For more information, see ClassicLink in the Amazon Elastic Compute Cloud User Guide. - */ - ClassicLinkVPCSecurityGroups?: ClassicLinkVPCSecurityGroups; - /** - * The user data to make available to the launched EC2 instances. For more information, see Instance Metadata and User Data in the Amazon Elastic Compute Cloud User Guide. - */ - UserData?: XmlStringUserData; - /** - * The ID of the instance to use to create the launch configuration. The new launch configuration derives attributes from the instance, with the exception of the block device mapping. If you do not specify InstanceId, you must specify both ImageId and InstanceType. To create a launch configuration with a block device mapping or override any other instance attributes, specify them as part of the same request. For more information, see Create a Launch Configuration Using an EC2 Instance in the Auto Scaling User Guide. - */ - InstanceId?: XmlStringMaxLen19; - /** - * The instance type of the EC2 instance. If you do not specify InstanceId, you must specify InstanceType. For information about available instance types, see Available Instance Types in the Amazon Elastic Compute Cloud User Guide. - */ - InstanceType?: XmlStringMaxLen255; - /** - * The ID of the kernel associated with the AMI. - */ - KernelId?: XmlStringMaxLen255; - /** - * The ID of the RAM disk associated with the AMI. - */ - RamdiskId?: XmlStringMaxLen255; - /** - * One or more mappings that specify how block devices are exposed to the instance. For more information, see Block Device Mapping in the Amazon Elastic Compute Cloud User Guide. - */ - BlockDeviceMappings?: BlockDeviceMappings; - /** - * Enables detailed monitoring (true) or basic monitoring (false) for the Auto Scaling instances. The default is true. - */ - InstanceMonitoring?: InstanceMonitoring; - /** - * The maximum hourly price to be paid for any Spot Instance launched to fulfill the request. Spot Instances are launched when the price you specify exceeds the current Spot market price. For more information, see Launching Spot Instances in Your Auto Scaling Group in the Auto Scaling User Guide. - */ - SpotPrice?: SpotPrice; - /** - * The name or the Amazon Resource Name (ARN) of the instance profile associated with the IAM role for the instance. EC2 instances launched with an IAM role will automatically have AWS security credentials available. You can use IAM roles with Auto Scaling to automatically enable applications running on your EC2 instances to securely access other AWS resources. For more information, see Launch Auto Scaling Instances with an IAM Role in the Auto Scaling User Guide. - */ - IamInstanceProfile?: XmlStringMaxLen1600; - /** - * Indicates whether the instance is optimized for Amazon EBS I/O. By default, the instance is not optimized for EBS I/O. The optimization provides dedicated throughput to Amazon EBS and an optimized configuration stack to provide optimal I/O performance. This optimization is not available with all instance types. Additional usage charges apply. For more information, see Amazon EBS-Optimized Instances in the Amazon Elastic Compute Cloud User Guide. - */ - EbsOptimized?: EbsOptimized; - /** - * Used for groups that launch instances into a virtual private cloud (VPC). Specifies whether to assign a public IP address to each instance. For more information, see Launching Auto Scaling Instances in a VPC in the Auto Scaling User Guide. If you specify this parameter, be sure to specify at least one subnet when you create your group. Default: If the instance is launched into a default subnet, the default is true. If the instance is launched into a nondefault subnet, the default is false. For more information, see Supported Platforms in the Amazon Elastic Compute Cloud User Guide. - */ - AssociatePublicIpAddress?: AssociatePublicIpAddress; - /** - * The tenancy of the instance. An instance with a tenancy of dedicated runs on single-tenant hardware and can only be launched into a VPC. You must set the value of this parameter to dedicated if want to launch Dedicated Instances into a shared tenancy VPC (VPC with instance placement tenancy attribute set to default). If you specify this parameter, be sure to specify at least one subnet when you create your group. For more information, see Launching Auto Scaling Instances in a VPC in the Auto Scaling User Guide. Valid values: default | dedicated - */ - PlacementTenancy?: XmlStringMaxLen64; - } - export interface CreateOrUpdateTagsType { - /** - * One or more tags. - */ - Tags: Tags; - } - export interface CustomizedMetricSpecification { - /** - * The name of the metric. - */ - MetricName: MetricName; - /** - * The namespace of the metric. - */ - Namespace: MetricNamespace; - /** - * The dimensions of the metric. - */ - Dimensions?: MetricDimensions; - /** - * The statistic of the metric. - */ - Statistic: MetricStatistic; - /** - * The unit of the metric. - */ - Unit?: MetricUnit; - } - export interface DeleteAutoScalingGroupType { - /** - * The name of the group to delete. - */ - AutoScalingGroupName: ResourceName; - /** - * Specifies that the group will be deleted along with all instances associated with the group, without waiting for all instances to be terminated. This parameter also deletes any lifecycle actions associated with the group. - */ - ForceDelete?: ForceDelete; - } - export interface DeleteLifecycleHookAnswer { - } - export interface DeleteLifecycleHookType { - /** - * The name of the lifecycle hook. - */ - LifecycleHookName: AsciiStringMaxLen255; - /** - * The name of the Auto Scaling group for the lifecycle hook. - */ - AutoScalingGroupName: ResourceName; - } - export interface DeleteNotificationConfigurationType { - /** - * The name of the Auto Scaling group. - */ - AutoScalingGroupName: ResourceName; - /** - * The Amazon Resource Name (ARN) of the Amazon Simple Notification Service (SNS) topic. - */ - TopicARN: ResourceName; - } - export interface DeletePolicyType { - /** - * The name of the Auto Scaling group. - */ - AutoScalingGroupName?: ResourceName; - /** - * The name or Amazon Resource Name (ARN) of the policy. - */ - PolicyName: ResourceName; - } - export interface DeleteScheduledActionType { - /** - * The name of the Auto Scaling group. - */ - AutoScalingGroupName: ResourceName; - /** - * The name of the action to delete. - */ - ScheduledActionName: ResourceName; - } - export interface DeleteTagsType { - /** - * One or more tags. - */ - Tags: Tags; - } - export interface DescribeAccountLimitsAnswer { - /** - * The maximum number of groups allowed for your AWS account. The default limit is 20 per region. - */ - MaxNumberOfAutoScalingGroups?: MaxNumberOfAutoScalingGroups; - /** - * The maximum number of launch configurations allowed for your AWS account. The default limit is 100 per region. - */ - MaxNumberOfLaunchConfigurations?: MaxNumberOfLaunchConfigurations; - /** - * The current number of groups for your AWS account. - */ - NumberOfAutoScalingGroups?: NumberOfAutoScalingGroups; - /** - * The current number of launch configurations for your AWS account. - */ - NumberOfLaunchConfigurations?: NumberOfLaunchConfigurations; - } - export interface DescribeAdjustmentTypesAnswer { - /** - * The policy adjustment types. - */ - AdjustmentTypes?: AdjustmentTypes; - } - export interface DescribeAutoScalingInstancesType { - /** - * The instances to describe; up to 50 instance IDs. If you omit this parameter, all Auto Scaling instances are described. If you specify an ID that does not exist, it is ignored with no error. - */ - InstanceIds?: InstanceIds; - /** - * The maximum number of items to return with this call. The default value is 50 and the maximum value is 100. - */ - MaxRecords?: MaxRecords; - /** - * The token for the next set of items to return. (You received this token from a previous call.) - */ - NextToken?: XmlString; - } - export interface DescribeAutoScalingNotificationTypesAnswer { - /** - * The notification types. - */ - AutoScalingNotificationTypes?: AutoScalingNotificationTypes; - } - export interface DescribeLifecycleHookTypesAnswer { - /** - * The lifecycle hook types. - */ - LifecycleHookTypes?: AutoScalingNotificationTypes; - } - export interface DescribeLifecycleHooksAnswer { - /** - * The lifecycle hooks for the specified group. - */ - LifecycleHooks?: LifecycleHooks; - } - export interface DescribeLifecycleHooksType { - /** - * The name of the group. - */ - AutoScalingGroupName: ResourceName; - /** - * The names of one or more lifecycle hooks. If you omit this parameter, all lifecycle hooks are described. - */ - LifecycleHookNames?: LifecycleHookNames; - } - export interface DescribeLoadBalancerTargetGroupsRequest { - /** - * The name of the Auto Scaling group. - */ - AutoScalingGroupName: ResourceName; - /** - * The token for the next set of items to return. (You received this token from a previous call.) - */ - NextToken?: XmlString; - /** - * The maximum number of items to return with this call. The default value is 50 and the maximum value is 100. - */ - MaxRecords?: MaxRecords; - } - export interface DescribeLoadBalancerTargetGroupsResponse { - /** - * Information about the target groups. - */ - LoadBalancerTargetGroups?: LoadBalancerTargetGroupStates; - /** - * The token to use when requesting the next set of items. If there are no additional items to return, the string is empty. - */ - NextToken?: XmlString; - } - export interface DescribeLoadBalancersRequest { - /** - * The name of the group. - */ - AutoScalingGroupName: ResourceName; - /** - * The token for the next set of items to return. (You received this token from a previous call.) - */ - NextToken?: XmlString; - /** - * The maximum number of items to return with this call. The default value is 50 and the maximum value is 100. - */ - MaxRecords?: MaxRecords; - } - export interface DescribeLoadBalancersResponse { - /** - * The load balancers. - */ - LoadBalancers?: LoadBalancerStates; - /** - * The token to use when requesting the next set of items. If there are no additional items to return, the string is empty. - */ - NextToken?: XmlString; - } - export interface DescribeMetricCollectionTypesAnswer { - /** - * One or more metrics. - */ - Metrics?: MetricCollectionTypes; - /** - * The granularities for the metrics. - */ - Granularities?: MetricGranularityTypes; - } - export interface DescribeNotificationConfigurationsAnswer { - /** - * The notification configurations. - */ - NotificationConfigurations: NotificationConfigurations; - /** - * The token to use when requesting the next set of items. If there are no additional items to return, the string is empty. - */ - NextToken?: XmlString; - } - export interface DescribeNotificationConfigurationsType { - /** - * The name of the group. - */ - AutoScalingGroupNames?: AutoScalingGroupNames; - /** - * The token for the next set of items to return. (You received this token from a previous call.) - */ - NextToken?: XmlString; - /** - * The maximum number of items to return with this call. The default value is 50 and the maximum value is 100. - */ - MaxRecords?: MaxRecords; - } - export interface DescribePoliciesType { - /** - * The name of the group. - */ - AutoScalingGroupName?: ResourceName; - /** - * One or more policy names or policy ARNs to be described. If you omit this parameter, all policy names are described. If an group name is provided, the results are limited to that group. This list is limited to 50 items. If you specify an unknown policy name, it is ignored with no error. - */ - PolicyNames?: PolicyNames; - /** - * One or more policy types. Valid values are SimpleScaling and StepScaling. - */ - PolicyTypes?: PolicyTypes; - /** - * The token for the next set of items to return. (You received this token from a previous call.) - */ - NextToken?: XmlString; - /** - * The maximum number of items to be returned with each call. The default value is 50 and the maximum value is 100. - */ - MaxRecords?: MaxRecords; - } - export interface DescribeScalingActivitiesType { - /** - * The activity IDs of the desired scaling activities. If you omit this parameter, all activities for the past six weeks are described. If you specify an Auto Scaling group, the results are limited to that group. The list of requested activities cannot contain more than 50 items. If unknown activities are requested, they are ignored with no error. - */ - ActivityIds?: ActivityIds; - /** - * The name of the group. - */ - AutoScalingGroupName?: ResourceName; - /** - * The maximum number of items to return with this call. The default value is 100. - */ - MaxRecords?: MaxRecords; - /** - * The token for the next set of items to return. (You received this token from a previous call.) - */ - NextToken?: XmlString; - } - export interface DescribeScheduledActionsType { - /** - * The name of the group. - */ - AutoScalingGroupName?: ResourceName; - /** - * Describes one or more scheduled actions. If you omit this parameter, all scheduled actions are described. If you specify an unknown scheduled action, it is ignored with no error. You can describe up to a maximum of 50 instances with a single call. If there are more items to return, the call returns a token. To get the next set of items, repeat the call with the returned token. - */ - ScheduledActionNames?: ScheduledActionNames; - /** - * The earliest scheduled start time to return. If scheduled action names are provided, this parameter is ignored. - */ - StartTime?: TimestampType; - /** - * The latest scheduled start time to return. If scheduled action names are provided, this parameter is ignored. - */ - EndTime?: TimestampType; - /** - * The token for the next set of items to return. (You received this token from a previous call.) - */ - NextToken?: XmlString; - /** - * The maximum number of items to return with this call. The default value is 50 and the maximum value is 100. - */ - MaxRecords?: MaxRecords; - } - export interface DescribeTagsType { - /** - * A filter used to scope the tags to return. - */ - Filters?: Filters; - /** - * The token for the next set of items to return. (You received this token from a previous call.) - */ - NextToken?: XmlString; - /** - * The maximum number of items to return with this call. The default value is 50 and the maximum value is 100. - */ - MaxRecords?: MaxRecords; - } - export interface DescribeTerminationPolicyTypesAnswer { - /** - * The termination policies supported by Auto Scaling (OldestInstance, OldestLaunchConfiguration, NewestInstance, ClosestToNextInstanceHour, and Default). - */ - TerminationPolicyTypes?: TerminationPolicies; - } - export interface DetachInstancesAnswer { - /** - * The activities related to detaching the instances from the Auto Scaling group. - */ - Activities?: Activities; - } - export interface DetachInstancesQuery { - /** - * One or more instance IDs. - */ - InstanceIds?: InstanceIds; - /** - * The name of the group. - */ - AutoScalingGroupName: ResourceName; - /** - * If True, the Auto Scaling group decrements the desired capacity value by the number of instances detached. - */ - ShouldDecrementDesiredCapacity: ShouldDecrementDesiredCapacity; - } - export interface DetachLoadBalancerTargetGroupsResultType { - } - export interface DetachLoadBalancerTargetGroupsType { - /** - * The name of the Auto Scaling group. - */ - AutoScalingGroupName: ResourceName; - /** - * The Amazon Resource Names (ARN) of the target groups. - */ - TargetGroupARNs: TargetGroupARNs; - } - export interface DetachLoadBalancersResultType { - } - export interface DetachLoadBalancersType { - /** - * The name of the Auto Scaling group. - */ - AutoScalingGroupName: ResourceName; - /** - * One or more load balancer names. - */ - LoadBalancerNames: LoadBalancerNames; - } - export interface DisableMetricsCollectionQuery { - /** - * The name or Amazon Resource Name (ARN) of the group. - */ - AutoScalingGroupName: ResourceName; - /** - * One or more of the following metrics. If you omit this parameter, all metrics are disabled. GroupMinSize GroupMaxSize GroupDesiredCapacity GroupInServiceInstances GroupPendingInstances GroupStandbyInstances GroupTerminatingInstances GroupTotalInstances - */ - Metrics?: Metrics; - } - export type DisableScaleIn = boolean; - export interface Ebs { - /** - * The ID of the snapshot. - */ - SnapshotId?: XmlStringMaxLen255; - /** - * The volume size, in GiB. For standard volumes, specify a value from 1 to 1,024. For io1 volumes, specify a value from 4 to 16,384. For gp2 volumes, specify a value from 1 to 16,384. If you specify a snapshot, the volume size must be equal to or larger than the snapshot size. Default: If you create a volume from a snapshot and you don't specify a volume size, the default is the snapshot size. - */ - VolumeSize?: BlockDeviceEbsVolumeSize; - /** - * The volume type. For more information, see Amazon EBS Volume Types in the Amazon Elastic Compute Cloud User Guide. Valid values: standard | io1 | gp2 Default: standard - */ - VolumeType?: BlockDeviceEbsVolumeType; - /** - * Indicates whether the volume is deleted on instance termination. Default: true - */ - DeleteOnTermination?: BlockDeviceEbsDeleteOnTermination; - /** - * The number of I/O operations per second (IOPS) to provision for the volume. Constraint: Required when the volume type is io1. - */ - Iops?: BlockDeviceEbsIops; - /** - * Indicates whether the volume should be encrypted. Encrypted EBS volumes must be attached to instances that support Amazon EBS encryption. Volumes that are created from encrypted snapshots are automatically encrypted. There is no way to create an encrypted volume from an unencrypted snapshot or an unencrypted volume from an encrypted snapshot. For more information, see Amazon EBS Encryption in the Amazon Elastic Compute Cloud User Guide. - */ - Encrypted?: BlockDeviceEbsEncrypted; - } - export type EbsOptimized = boolean; - export interface EnableMetricsCollectionQuery { - /** - * The name or ARN of the Auto Scaling group. - */ - AutoScalingGroupName: ResourceName; - /** - * One or more of the following metrics. If you omit this parameter, all metrics are enabled. GroupMinSize GroupMaxSize GroupDesiredCapacity GroupInServiceInstances GroupPendingInstances GroupStandbyInstances GroupTerminatingInstances GroupTotalInstances - */ - Metrics?: Metrics; - /** - * The granularity to associate with the metrics to collect. The only valid value is 1Minute. - */ - Granularity: XmlStringMaxLen255; - } - export interface EnabledMetric { - /** - * One of the following metrics: GroupMinSize GroupMaxSize GroupDesiredCapacity GroupInServiceInstances GroupPendingInstances GroupStandbyInstances GroupTerminatingInstances GroupTotalInstances - */ - Metric?: XmlStringMaxLen255; - /** - * The granularity of the metric. The only valid value is 1Minute. - */ - Granularity?: XmlStringMaxLen255; - } - export type EnabledMetrics = EnabledMetric[]; - export interface EnterStandbyAnswer { - /** - * The activities related to moving instances into Standby mode. - */ - Activities?: Activities; - } - export interface EnterStandbyQuery { - /** - * One or more instances to move into Standby mode. You must specify at least one instance ID. - */ - InstanceIds?: InstanceIds; - /** - * The name of the Auto Scaling group. - */ - AutoScalingGroupName: ResourceName; - /** - * Specifies whether the instances moved to Standby mode count as part of the Auto Scaling group's desired capacity. If set, the desired capacity for the Auto Scaling group decrements by the number of instances moved to Standby mode. - */ - ShouldDecrementDesiredCapacity: ShouldDecrementDesiredCapacity; - } - export type EstimatedInstanceWarmup = number; - export interface ExecutePolicyType { - /** - * The name or Amazon Resource Name (ARN) of the Auto Scaling group. - */ - AutoScalingGroupName?: ResourceName; - /** - * The name or ARN of the policy. - */ - PolicyName: ResourceName; - /** - * If this parameter is true, Auto Scaling waits for the cooldown period to complete before executing the policy. Otherwise, Auto Scaling executes the policy without waiting for the cooldown period to complete. This parameter is not supported if the policy type is StepScaling. For more information, see Auto Scaling Cooldowns in the Auto Scaling User Guide. - */ - HonorCooldown?: HonorCooldown; - /** - * The metric value to compare to BreachThreshold. This enables you to execute a policy of type StepScaling and determine which step adjustment to use. For example, if the breach threshold is 50 and you want to use a step adjustment with a lower bound of 0 and an upper bound of 10, you can set the metric value to 59. If you specify a metric value that doesn't correspond to a step adjustment for the policy, the call returns an error. This parameter is required if the policy type is StepScaling and not supported otherwise. - */ - MetricValue?: MetricScale; - /** - * The breach threshold for the alarm. This parameter is required if the policy type is StepScaling and not supported otherwise. - */ - BreachThreshold?: MetricScale; - } - export interface ExitStandbyAnswer { - /** - * The activities related to moving instances out of Standby mode. - */ - Activities?: Activities; - } - export interface ExitStandbyQuery { - /** - * One or more instance IDs. You must specify at least one instance ID. - */ - InstanceIds?: InstanceIds; - /** - * The name of the Auto Scaling group. - */ - AutoScalingGroupName: ResourceName; - } - export interface Filter { - /** - * The name of the filter. The valid values are: "auto-scaling-group", "key", "value", and "propagate-at-launch". - */ - Name?: XmlString; - /** - * The value of the filter. - */ - Values?: Values; - } - export type Filters = Filter[]; - export type ForceDelete = boolean; - export type GlobalTimeout = number; - export type HealthCheckGracePeriod = number; - export type HeartbeatTimeout = number; - export type HonorCooldown = boolean; - export interface Instance { - /** - * The ID of the instance. - */ - InstanceId: XmlStringMaxLen19; - /** - * The Availability Zone in which the instance is running. - */ - AvailabilityZone: XmlStringMaxLen255; - /** - * A description of the current lifecycle state. Note that the Quarantined state is not used. - */ - LifecycleState: LifecycleState; - /** - * The last reported health status of the instance. "Healthy" means that the instance is healthy and should remain in service. "Unhealthy" means that the instance is unhealthy and Auto Scaling should terminate and replace it. - */ - HealthStatus: XmlStringMaxLen32; - /** - * The launch configuration associated with the instance. - */ - LaunchConfigurationName: XmlStringMaxLen255; - /** - * Indicates whether the instance is protected from termination by Auto Scaling when scaling in. - */ - ProtectedFromScaleIn: InstanceProtected; - } - export type InstanceIds = XmlStringMaxLen19[]; - export interface InstanceMonitoring { - /** - * If true, detailed monitoring is enabled. Otherwise, basic monitoring is enabled. - */ - Enabled?: MonitoringEnabled; - } - export type InstanceProtected = boolean; - export type Instances = Instance[]; - export interface LaunchConfiguration { - /** - * The name of the launch configuration. - */ - LaunchConfigurationName: XmlStringMaxLen255; - /** - * The Amazon Resource Name (ARN) of the launch configuration. - */ - LaunchConfigurationARN?: ResourceName; - /** - * The ID of the Amazon Machine Image (AMI). - */ - ImageId: XmlStringMaxLen255; - /** - * The name of the key pair. - */ - KeyName?: XmlStringMaxLen255; - /** - * The security groups to associate with the instances. - */ - SecurityGroups?: SecurityGroups; - /** - * The ID of a ClassicLink-enabled VPC to link your EC2-Classic instances to. This parameter can only be used if you are launching EC2-Classic instances. For more information, see ClassicLink in the Amazon Elastic Compute Cloud User Guide. - */ - ClassicLinkVPCId?: XmlStringMaxLen255; - /** - * The IDs of one or more security groups for the VPC specified in ClassicLinkVPCId. This parameter is required if you specify a ClassicLink-enabled VPC, and cannot be used otherwise. For more information, see ClassicLink in the Amazon Elastic Compute Cloud User Guide. - */ - ClassicLinkVPCSecurityGroups?: ClassicLinkVPCSecurityGroups; - /** - * The user data available to the instances. - */ - UserData?: XmlStringUserData; - /** - * The instance type for the instances. - */ - InstanceType: XmlStringMaxLen255; - /** - * The ID of the kernel associated with the AMI. - */ - KernelId?: XmlStringMaxLen255; - /** - * The ID of the RAM disk associated with the AMI. - */ - RamdiskId?: XmlStringMaxLen255; - /** - * A block device mapping, which specifies the block devices for the instance. - */ - BlockDeviceMappings?: BlockDeviceMappings; - /** - * Controls whether instances in this group are launched with detailed (true) or basic (false) monitoring. - */ - InstanceMonitoring?: InstanceMonitoring; - /** - * The price to bid when launching Spot Instances. - */ - SpotPrice?: SpotPrice; - /** - * The name or Amazon Resource Name (ARN) of the instance profile associated with the IAM role for the instance. - */ - IamInstanceProfile?: XmlStringMaxLen1600; - /** - * The creation date and time for the launch configuration. - */ - CreatedTime: TimestampType; - /** - * Controls whether the instance is optimized for EBS I/O (true) or not (false). - */ - EbsOptimized?: EbsOptimized; - /** - * [EC2-VPC] Indicates whether to assign a public IP address to each instance. - */ - AssociatePublicIpAddress?: AssociatePublicIpAddress; - /** - * The tenancy of the instance, either default or dedicated. An instance with dedicated tenancy runs in an isolated, single-tenant hardware and can only be launched into a VPC. - */ - PlacementTenancy?: XmlStringMaxLen64; - } - export interface LaunchConfigurationNameType { - /** - * The name of the launch configuration. - */ - LaunchConfigurationName: ResourceName; - } - export type LaunchConfigurationNames = ResourceName[]; - export interface LaunchConfigurationNamesType { - /** - * The launch configuration names. If you omit this parameter, all launch configurations are described. - */ - LaunchConfigurationNames?: LaunchConfigurationNames; - /** - * The token for the next set of items to return. (You received this token from a previous call.) - */ - NextToken?: XmlString; - /** - * The maximum number of items to return with this call. The default value is 50 and the maximum value is 100. - */ - MaxRecords?: MaxRecords; - } - export type LaunchConfigurations = LaunchConfiguration[]; - export interface LaunchConfigurationsType { - /** - * The launch configurations. - */ - LaunchConfigurations: LaunchConfigurations; - /** - * The token to use when requesting the next set of items. If there are no additional items to return, the string is empty. - */ - NextToken?: XmlString; - } - export type LifecycleActionResult = string; - export type LifecycleActionToken = string; - export interface LifecycleHook { - /** - * The name of the lifecycle hook. - */ - LifecycleHookName?: AsciiStringMaxLen255; - /** - * The name of the Auto Scaling group for the lifecycle hook. - */ - AutoScalingGroupName?: ResourceName; - /** - * The state of the EC2 instance to which you want to attach the lifecycle hook. For a list of lifecycle hook types, see DescribeLifecycleHookTypes. - */ - LifecycleTransition?: LifecycleTransition; - /** - * The ARN of the target that Auto Scaling sends notifications to when an instance is in the transition state for the lifecycle hook. The notification target can be either an SQS queue or an SNS topic. - */ - NotificationTargetARN?: ResourceName; - /** - * The ARN of the IAM role that allows the Auto Scaling group to publish to the specified notification target. - */ - RoleARN?: ResourceName; - /** - * Additional information that you want to include any time Auto Scaling sends a message to the notification target. - */ - NotificationMetadata?: XmlStringMaxLen1023; - /** - * The maximum time, in seconds, that can elapse before the lifecycle hook times out. If the lifecycle hook times out, Auto Scaling performs the default action. You can prevent the lifecycle hook from timing out by calling RecordLifecycleActionHeartbeat. - */ - HeartbeatTimeout?: HeartbeatTimeout; - /** - * The maximum time, in seconds, that an instance can remain in a Pending:Wait or Terminating:Wait state. The maximum is 172800 seconds (48 hours) or 100 times HeartbeatTimeout, whichever is smaller. - */ - GlobalTimeout?: GlobalTimeout; - /** - * Defines the action the Auto Scaling group should take when the lifecycle hook timeout elapses or if an unexpected failure occurs. The valid values are CONTINUE and ABANDON. The default value is CONTINUE. - */ - DefaultResult?: LifecycleActionResult; - } - export type LifecycleHookNames = AsciiStringMaxLen255[]; - export interface LifecycleHookSpecification { - /** - * The name of the lifecycle hook. - */ - LifecycleHookName: AsciiStringMaxLen255; - /** - * The state of the EC2 instance to which you want to attach the lifecycle hook. For a list of lifecycle hook types, see DescribeLifecycleHookTypes. - */ - LifecycleTransition?: LifecycleTransition; - /** - * Additional information that you want to include any time Auto Scaling sends a message to the notification target. - */ - NotificationMetadata?: XmlStringMaxLen1023; - /** - * The maximum time, in seconds, that can elapse before the lifecycle hook times out. If the lifecycle hook times out, Auto Scaling performs the default action. You can prevent the lifecycle hook from timing out by calling RecordLifecycleActionHeartbeat. - */ - HeartbeatTimeout?: HeartbeatTimeout; - /** - * Defines the action the Auto Scaling group should take when the lifecycle hook timeout elapses or if an unexpected failure occurs. The valid values are CONTINUE and ABANDON. The default value is CONTINUE. - */ - DefaultResult?: LifecycleActionResult; - /** - * The ARN of the target that Auto Scaling sends notifications to when an instance is in the transition state for the lifecycle hook. The notification target can be either an SQS queue or an SNS topic. - */ - NotificationTargetARN?: NotificationTargetResourceName; - /** - * The ARN of the IAM role that allows the Auto Scaling group to publish to the specified notification target. - */ - RoleARN?: ResourceName; - } - export type LifecycleHookSpecifications = LifecycleHookSpecification[]; - export type LifecycleHooks = LifecycleHook[]; - export type LifecycleState = "Pending"|"Pending:Wait"|"Pending:Proceed"|"Quarantined"|"InService"|"Terminating"|"Terminating:Wait"|"Terminating:Proceed"|"Terminated"|"Detaching"|"Detached"|"EnteringStandby"|"Standby"|string; - export type LifecycleTransition = string; - export type LoadBalancerNames = XmlStringMaxLen255[]; - export interface LoadBalancerState { - /** - * The name of the load balancer. - */ - LoadBalancerName?: XmlStringMaxLen255; - /** - * One of the following load balancer states: Adding - The instances in the group are being registered with the load balancer. Added - All instances in the group are registered with the load balancer. InService - At least one instance in the group passed an ELB health check. Removing - The instances in the group are being deregistered from the load balancer. If connection draining is enabled, Elastic Load Balancing waits for in-flight requests to complete before deregistering the instances. Removed - All instances in the group are deregistered from the load balancer. - */ - State?: XmlStringMaxLen255; - } - export type LoadBalancerStates = LoadBalancerState[]; - export interface LoadBalancerTargetGroupState { - /** - * The Amazon Resource Name (ARN) of the target group. - */ - LoadBalancerTargetGroupARN?: XmlStringMaxLen511; - /** - * The state of the target group. Adding - The Auto Scaling instances are being registered with the target group. Added - All Auto Scaling instances are registered with the target group. InService - At least one Auto Scaling instance passed an ELB health check. Removing - The Auto Scaling instances are being deregistered from the target group. If connection draining is enabled, Elastic Load Balancing waits for in-flight requests to complete before deregistering the instances. Removed - All Auto Scaling instances are deregistered from the target group. - */ - State?: XmlStringMaxLen255; - } - export type LoadBalancerTargetGroupStates = LoadBalancerTargetGroupState[]; - export type MaxNumberOfAutoScalingGroups = number; - export type MaxNumberOfLaunchConfigurations = number; - export type MaxRecords = number; - export interface MetricCollectionType { - /** - * One of the following metrics: GroupMinSize GroupMaxSize GroupDesiredCapacity GroupInServiceInstances GroupPendingInstances GroupStandbyInstances GroupTerminatingInstances GroupTotalInstances - */ - Metric?: XmlStringMaxLen255; - } - export type MetricCollectionTypes = MetricCollectionType[]; - export interface MetricDimension { - /** - * The name of the dimension. - */ - Name: MetricDimensionName; - /** - * The value of the dimension. - */ - Value: MetricDimensionValue; - } - export type MetricDimensionName = string; - export type MetricDimensionValue = string; - export type MetricDimensions = MetricDimension[]; - export interface MetricGranularityType { - /** - * The granularity. The only valid value is 1Minute. - */ - Granularity?: XmlStringMaxLen255; - } - export type MetricGranularityTypes = MetricGranularityType[]; - export type MetricName = string; - export type MetricNamespace = string; - export type MetricScale = number; - export type MetricStatistic = "Average"|"Minimum"|"Maximum"|"SampleCount"|"Sum"|string; - export type MetricType = "ASGAverageCPUUtilization"|"ASGAverageNetworkIn"|"ASGAverageNetworkOut"|"ALBRequestCountPerTarget"|string; - export type MetricUnit = string; - export type Metrics = XmlStringMaxLen255[]; - export type MinAdjustmentMagnitude = number; - export type MinAdjustmentStep = number; - export type MonitoringEnabled = boolean; - export type NoDevice = boolean; - export interface NotificationConfiguration { - /** - * The name of the group. - */ - AutoScalingGroupName?: ResourceName; - /** - * The Amazon Resource Name (ARN) of the Amazon Simple Notification Service (SNS) topic. - */ - TopicARN?: ResourceName; - /** - * One of the following event notification types: autoscaling:EC2_INSTANCE_LAUNCH autoscaling:EC2_INSTANCE_LAUNCH_ERROR autoscaling:EC2_INSTANCE_TERMINATE autoscaling:EC2_INSTANCE_TERMINATE_ERROR autoscaling:TEST_NOTIFICATION - */ - NotificationType?: XmlStringMaxLen255; - } - export type NotificationConfigurations = NotificationConfiguration[]; - export type NotificationTargetResourceName = string; - export type NumberOfAutoScalingGroups = number; - export type NumberOfLaunchConfigurations = number; - export interface PoliciesType { - /** - * The scaling policies. - */ - ScalingPolicies?: ScalingPolicies; - /** - * The token to use when requesting the next set of items. If there are no additional items to return, the string is empty. - */ - NextToken?: XmlString; - } - export interface PolicyARNType { - /** - * The Amazon Resource Name (ARN) of the policy. - */ - PolicyARN?: ResourceName; - /** - * The CloudWatch alarms created for the target tracking policy. - */ - Alarms?: Alarms; - } - export type PolicyIncrement = number; - export type PolicyNames = ResourceName[]; - export type PolicyTypes = XmlStringMaxLen64[]; - export interface PredefinedMetricSpecification { - /** - * The metric type. - */ - PredefinedMetricType: MetricType; - /** - * Identifies the resource associated with the metric type. The following predefined metrics are available: ASGAverageCPUUtilization - average CPU utilization of the Auto Scaling group ASGAverageNetworkIn - average number of bytes received on all network interfaces by the Auto Scaling group ASGAverageNetworkOut - average number of bytes sent out on all network interfaces by the Auto Scaling group ALBRequestCountPerTarget - number of requests completed per target in an Application Load Balancer target group For predefined metric types ASGAverageCPUUtilization, ASGAverageNetworkIn and ASGAverageNetworkOut, the parameter must not be specified as the resource associated with the metric type is the Auto Scaling group. For predefined metric type ALBRequestCountPerTarget, the parameter must be specified in the format: app/load-balancer-name/load-balancer-id/targetgroup/target-group-name/target-group-id , where app/load-balancer-name/load-balancer-id is the final portion of the load balancer ARN, and targetgroup/target-group-name/target-group-id is the final portion of the target group ARN. The target group must be attached to the Auto Scaling group. - */ - ResourceLabel?: XmlStringMaxLen1023; - } - export type ProcessNames = XmlStringMaxLen255[]; - export interface ProcessType { - /** - * One of the following processes: Launch Terminate AddToLoadBalancer AlarmNotification AZRebalance HealthCheck ReplaceUnhealthy ScheduledActions - */ - ProcessName: XmlStringMaxLen255; - } - export type Processes = ProcessType[]; - export interface ProcessesType { - /** - * The names of the process types. - */ - Processes?: Processes; - } - export type Progress = number; - export type PropagateAtLaunch = boolean; - export type ProtectedFromScaleIn = boolean; - export interface PutLifecycleHookAnswer { - } - export interface PutLifecycleHookType { - /** - * The name of the lifecycle hook. - */ - LifecycleHookName: AsciiStringMaxLen255; - /** - * The name of the Auto Scaling group to which you want to assign the lifecycle hook. - */ - AutoScalingGroupName: ResourceName; - /** - * The instance state to which you want to attach the lifecycle hook. For a list of lifecycle hook types, see DescribeLifecycleHookTypes. This parameter is required for new lifecycle hooks, but optional when updating existing hooks. - */ - LifecycleTransition?: LifecycleTransition; - /** - * The ARN of the IAM role that allows the Auto Scaling group to publish to the specified notification target. This parameter is required for new lifecycle hooks, but optional when updating existing hooks. - */ - RoleARN?: ResourceName; - /** - * The ARN of the notification target that Auto Scaling will use to notify you when an instance is in the transition state for the lifecycle hook. This target can be either an SQS queue or an SNS topic. If you specify an empty string, this overrides the current ARN. This operation uses the JSON format when sending notifications to an Amazon SQS queue, and an email key/value pair format when sending notifications to an Amazon SNS topic. When you specify a notification target, Auto Scaling sends it a test message. Test messages contains the following additional key/value pair: "Event": "autoscaling:TEST_NOTIFICATION". - */ - NotificationTargetARN?: NotificationTargetResourceName; - /** - * Contains additional information that you want to include any time Auto Scaling sends a message to the notification target. - */ - NotificationMetadata?: XmlStringMaxLen1023; - /** - * The maximum time, in seconds, that can elapse before the lifecycle hook times out. The range is from 30 to 7200 seconds. The default is 3600 seconds (1 hour). If the lifecycle hook times out, Auto Scaling performs the default action. You can prevent the lifecycle hook from timing out by calling RecordLifecycleActionHeartbeat. - */ - HeartbeatTimeout?: HeartbeatTimeout; - /** - * Defines the action the Auto Scaling group should take when the lifecycle hook timeout elapses or if an unexpected failure occurs. This parameter can be either CONTINUE or ABANDON. The default value is ABANDON. - */ - DefaultResult?: LifecycleActionResult; - } - export interface PutNotificationConfigurationType { - /** - * The name of the Auto Scaling group. - */ - AutoScalingGroupName: ResourceName; - /** - * The Amazon Resource Name (ARN) of the Amazon Simple Notification Service (SNS) topic. - */ - TopicARN: ResourceName; - /** - * The type of event that will cause the notification to be sent. For details about notification types supported by Auto Scaling, see DescribeAutoScalingNotificationTypes. - */ - NotificationTypes: AutoScalingNotificationTypes; - } - export interface PutScalingPolicyType { - /** - * The name or ARN of the group. - */ - AutoScalingGroupName: ResourceName; - /** - * The name of the policy. - */ - PolicyName: XmlStringMaxLen255; - /** - * The policy type. The valid values are SimpleScaling, StepScaling, and TargetTrackingScaling. If the policy type is null, the value is treated as SimpleScaling. - */ - PolicyType?: XmlStringMaxLen64; - /** - * The adjustment type. The valid values are ChangeInCapacity, ExactCapacity, and PercentChangeInCapacity. This parameter is supported if the policy type is SimpleScaling or StepScaling. For more information, see Dynamic Scaling in the Auto Scaling User Guide. - */ - AdjustmentType?: XmlStringMaxLen255; - /** - * Available for backward compatibility. Use MinAdjustmentMagnitude instead. - */ - MinAdjustmentStep?: MinAdjustmentStep; - /** - * The minimum number of instances to scale. If the value of AdjustmentType is PercentChangeInCapacity, the scaling policy changes the DesiredCapacity of the Auto Scaling group by at least this many instances. Otherwise, the error is ValidationError. This parameter is supported if the policy type is SimpleScaling or StepScaling. - */ - MinAdjustmentMagnitude?: MinAdjustmentMagnitude; - /** - * The amount by which to scale, based on the specified adjustment type. A positive value adds to the current capacity while a negative number removes from the current capacity. This parameter is required if the policy type is SimpleScaling and not supported otherwise. - */ - ScalingAdjustment?: PolicyIncrement; - /** - * The amount of time, in seconds, after a scaling activity completes and before the next scaling activity can start. If this parameter is not specified, the default cooldown period for the group applies. This parameter is supported if the policy type is SimpleScaling. For more information, see Auto Scaling Cooldowns in the Auto Scaling User Guide. - */ - Cooldown?: Cooldown; - /** - * The aggregation type for the CloudWatch metrics. The valid values are Minimum, Maximum, and Average. If the aggregation type is null, the value is treated as Average. This parameter is supported if the policy type is StepScaling. - */ - MetricAggregationType?: XmlStringMaxLen32; - /** - * A set of adjustments that enable you to scale based on the size of the alarm breach. This parameter is required if the policy type is StepScaling and not supported otherwise. - */ - StepAdjustments?: StepAdjustments; - /** - * The estimated time, in seconds, until a newly launched instance can contribute to the CloudWatch metrics. The default is to use the value specified for the default cooldown period for the group. This parameter is supported if the policy type is StepScaling or TargetTrackingScaling. - */ - EstimatedInstanceWarmup?: EstimatedInstanceWarmup; - /** - * A target tracking policy. This parameter is required if the policy type is TargetTrackingScaling and not supported otherwise. - */ - TargetTrackingConfiguration?: TargetTrackingConfiguration; - } - export interface PutScheduledUpdateGroupActionType { - /** - * The name or Amazon Resource Name (ARN) of the Auto Scaling group. - */ - AutoScalingGroupName: ResourceName; - /** - * The name of this scaling action. - */ - ScheduledActionName: XmlStringMaxLen255; - /** - * This parameter is deprecated. - */ - Time?: TimestampType; - /** - * The time for this action to start, in "YYYY-MM-DDThh:mm:ssZ" format in UTC/GMT only (for example, 2014-06-01T00:00:00Z). If you specify Recurrence and StartTime, Auto Scaling performs the action at this time, and then performs the action based on the specified recurrence. If you try to schedule your action in the past, Auto Scaling returns an error message. - */ - StartTime?: TimestampType; - /** - * The time for the recurring schedule to end. Auto Scaling does not perform the action after this time. - */ - EndTime?: TimestampType; - /** - * The recurring schedule for this action, in Unix cron syntax format. For more information, see Cron in Wikipedia. - */ - Recurrence?: XmlStringMaxLen255; - /** - * The minimum size for the Auto Scaling group. - */ - MinSize?: AutoScalingGroupMinSize; - /** - * The maximum size for the Auto Scaling group. - */ - MaxSize?: AutoScalingGroupMaxSize; - /** - * The number of EC2 instances that should be running in the group. - */ - DesiredCapacity?: AutoScalingGroupDesiredCapacity; - } - export interface RecordLifecycleActionHeartbeatAnswer { - } - export interface RecordLifecycleActionHeartbeatType { - /** - * The name of the lifecycle hook. - */ - LifecycleHookName: AsciiStringMaxLen255; - /** - * The name of the Auto Scaling group for the hook. - */ - AutoScalingGroupName: ResourceName; - /** - * A token that uniquely identifies a specific lifecycle action associated with an instance. Auto Scaling sends this token to the notification target you specified when you created the lifecycle hook. - */ - LifecycleActionToken?: LifecycleActionToken; - /** - * The ID of the instance. - */ - InstanceId?: XmlStringMaxLen19; - } - export type ResourceName = string; - export type ScalingActivityStatusCode = "PendingSpotBidPlacement"|"WaitingForSpotInstanceRequestId"|"WaitingForSpotInstanceId"|"WaitingForInstanceId"|"PreInService"|"InProgress"|"WaitingForELBConnectionDraining"|"MidLifecycleAction"|"WaitingForInstanceWarmup"|"Successful"|"Failed"|"Cancelled"|string; - export type ScalingPolicies = ScalingPolicy[]; - export interface ScalingPolicy { - /** - * The name of the Auto Scaling group associated with this scaling policy. - */ - AutoScalingGroupName?: XmlStringMaxLen255; - /** - * The name of the scaling policy. - */ - PolicyName?: XmlStringMaxLen255; - /** - * The Amazon Resource Name (ARN) of the policy. - */ - PolicyARN?: ResourceName; - /** - * The policy type. Valid values are SimpleScaling and StepScaling. - */ - PolicyType?: XmlStringMaxLen64; - /** - * The adjustment type, which specifies how ScalingAdjustment is interpreted. Valid values are ChangeInCapacity, ExactCapacity, and PercentChangeInCapacity. - */ - AdjustmentType?: XmlStringMaxLen255; - /** - * Available for backward compatibility. Use MinAdjustmentMagnitude instead. - */ - MinAdjustmentStep?: MinAdjustmentStep; - /** - * The minimum number of instances to scale. If the value of AdjustmentType is PercentChangeInCapacity, the scaling policy changes the DesiredCapacity of the Auto Scaling group by at least this many instances. Otherwise, the error is ValidationError. - */ - MinAdjustmentMagnitude?: MinAdjustmentMagnitude; - /** - * The amount by which to scale, based on the specified adjustment type. A positive value adds to the current capacity while a negative number removes from the current capacity. - */ - ScalingAdjustment?: PolicyIncrement; - /** - * The amount of time, in seconds, after a scaling activity completes before any further dynamic scaling activities can start. - */ - Cooldown?: Cooldown; - /** - * A set of adjustments that enable you to scale based on the size of the alarm breach. - */ - StepAdjustments?: StepAdjustments; - /** - * The aggregation type for the CloudWatch metrics. Valid values are Minimum, Maximum, and Average. - */ - MetricAggregationType?: XmlStringMaxLen32; - /** - * The estimated time, in seconds, until a newly launched instance can contribute to the CloudWatch metrics. - */ - EstimatedInstanceWarmup?: EstimatedInstanceWarmup; - /** - * The CloudWatch alarms related to the policy. - */ - Alarms?: Alarms; - /** - * A target tracking policy. - */ - TargetTrackingConfiguration?: TargetTrackingConfiguration; - } - export interface ScalingProcessQuery { - /** - * The name or Amazon Resource Name (ARN) of the Auto Scaling group. - */ - AutoScalingGroupName: ResourceName; - /** - * One or more of the following processes. If you omit this parameter, all processes are specified. Launch Terminate HealthCheck ReplaceUnhealthy AZRebalance AlarmNotification ScheduledActions AddToLoadBalancer - */ - ScalingProcesses?: ProcessNames; - } - export type ScheduledActionNames = ResourceName[]; - export interface ScheduledActionsType { - /** - * The scheduled actions. - */ - ScheduledUpdateGroupActions?: ScheduledUpdateGroupActions; - /** - * The token to use when requesting the next set of items. If there are no additional items to return, the string is empty. - */ - NextToken?: XmlString; - } - export interface ScheduledUpdateGroupAction { - /** - * The name of the group. - */ - AutoScalingGroupName?: XmlStringMaxLen255; - /** - * The name of the scheduled action. - */ - ScheduledActionName?: XmlStringMaxLen255; - /** - * The Amazon Resource Name (ARN) of the scheduled action. - */ - ScheduledActionARN?: ResourceName; - /** - * This parameter is deprecated. - */ - Time?: TimestampType; - /** - * The date and time that the action is scheduled to begin. This date and time can be up to one month in the future. When StartTime and EndTime are specified with Recurrence, they form the boundaries of when the recurring action will start and stop. - */ - StartTime?: TimestampType; - /** - * The date and time that the action is scheduled to end. This date and time can be up to one month in the future. - */ - EndTime?: TimestampType; - /** - * The recurring schedule for the action. - */ - Recurrence?: XmlStringMaxLen255; - /** - * The minimum size of the group. - */ - MinSize?: AutoScalingGroupMinSize; - /** - * The maximum size of the group. - */ - MaxSize?: AutoScalingGroupMaxSize; - /** - * The number of instances you prefer to maintain in the group. - */ - DesiredCapacity?: AutoScalingGroupDesiredCapacity; - } - export type ScheduledUpdateGroupActions = ScheduledUpdateGroupAction[]; - export type SecurityGroups = XmlString[]; - export interface SetDesiredCapacityType { - /** - * The name of the Auto Scaling group. - */ - AutoScalingGroupName: ResourceName; - /** - * The number of EC2 instances that should be running in the Auto Scaling group. - */ - DesiredCapacity: AutoScalingGroupDesiredCapacity; - /** - * By default, SetDesiredCapacity overrides any cooldown period associated with the Auto Scaling group. Specify True to make Auto Scaling to wait for the cool-down period associated with the Auto Scaling group to complete before initiating a scaling activity to set your Auto Scaling group to its new capacity. - */ - HonorCooldown?: HonorCooldown; - } - export interface SetInstanceHealthQuery { - /** - * The ID of the instance. - */ - InstanceId: XmlStringMaxLen19; - /** - * The health status of the instance. Set to Healthy if you want the instance to remain in service. Set to Unhealthy if you want the instance to be out of service. Auto Scaling will terminate and replace the unhealthy instance. - */ - HealthStatus: XmlStringMaxLen32; - /** - * If the Auto Scaling group of the specified instance has a HealthCheckGracePeriod specified for the group, by default, this call will respect the grace period. Set this to False, if you do not want the call to respect the grace period associated with the group. For more information, see the description of the health check grace period for CreateAutoScalingGroup. - */ - ShouldRespectGracePeriod?: ShouldRespectGracePeriod; - } - export interface SetInstanceProtectionAnswer { - } - export interface SetInstanceProtectionQuery { - /** - * One or more instance IDs. - */ - InstanceIds: InstanceIds; - /** - * The name of the group. - */ - AutoScalingGroupName: ResourceName; - /** - * Indicates whether the instance is protected from termination by Auto Scaling when scaling in. - */ - ProtectedFromScaleIn: ProtectedFromScaleIn; - } - export type ShouldDecrementDesiredCapacity = boolean; - export type ShouldRespectGracePeriod = boolean; - export type SpotPrice = string; - export interface StepAdjustment { - /** - * The lower bound for the difference between the alarm threshold and the CloudWatch metric. If the metric value is above the breach threshold, the lower bound is inclusive (the metric must be greater than or equal to the threshold plus the lower bound). Otherwise, it is exclusive (the metric must be greater than the threshold plus the lower bound). A null value indicates negative infinity. - */ - MetricIntervalLowerBound?: MetricScale; - /** - * The upper bound for the difference between the alarm threshold and the CloudWatch metric. If the metric value is above the breach threshold, the upper bound is exclusive (the metric must be less than the threshold plus the upper bound). Otherwise, it is inclusive (the metric must be less than or equal to the threshold plus the upper bound). A null value indicates positive infinity. The upper bound must be greater than the lower bound. - */ - MetricIntervalUpperBound?: MetricScale; - /** - * The amount by which to scale, based on the specified adjustment type. A positive value adds to the current capacity while a negative number removes from the current capacity. - */ - ScalingAdjustment: PolicyIncrement; - } - export type StepAdjustments = StepAdjustment[]; - export interface SuspendedProcess { - /** - * The name of the suspended process. - */ - ProcessName?: XmlStringMaxLen255; - /** - * The reason that the process was suspended. - */ - SuspensionReason?: XmlStringMaxLen255; - } - export type SuspendedProcesses = SuspendedProcess[]; - export interface Tag { - /** - * The name of the group. - */ - ResourceId?: XmlString; - /** - * The type of resource. The only supported value is auto-scaling-group. - */ - ResourceType?: XmlString; - /** - * The tag key. - */ - Key: TagKey; - /** - * The tag value. - */ - Value?: TagValue; - /** - * Determines whether the tag is added to new instances as they are launched in the group. - */ - PropagateAtLaunch?: PropagateAtLaunch; - } - export interface TagDescription { - /** - * The name of the group. - */ - ResourceId?: XmlString; - /** - * The type of resource. The only supported value is auto-scaling-group. - */ - ResourceType?: XmlString; - /** - * The tag key. - */ - Key?: TagKey; - /** - * The tag value. - */ - Value?: TagValue; - /** - * Determines whether the tag is added to new instances as they are launched in the group. - */ - PropagateAtLaunch?: PropagateAtLaunch; - } - export type TagDescriptionList = TagDescription[]; - export type TagKey = string; - export type TagValue = string; - export type Tags = Tag[]; - export interface TagsType { - /** - * One or more tags. - */ - Tags?: TagDescriptionList; - /** - * The token to use when requesting the next set of items. If there are no additional items to return, the string is empty. - */ - NextToken?: XmlString; - } - export type TargetGroupARNs = XmlStringMaxLen511[]; - export interface TargetTrackingConfiguration { - /** - * A predefined metric. You can specify either a predefined metric or a customized metric. - */ - PredefinedMetricSpecification?: PredefinedMetricSpecification; - /** - * A customized metric. - */ - CustomizedMetricSpecification?: CustomizedMetricSpecification; - /** - * The target value for the metric. - */ - TargetValue: MetricScale; - /** - * Indicates whether scale in by the target tracking policy is disabled. If the value is true, scale in is disabled and the target tracking policy won't remove instances from the Auto Scaling group. Otherwise, scale in is enabled and the target tracking policy can remove instances from the Auto Scaling group. The default value is false. - */ - DisableScaleIn?: DisableScaleIn; - } - export interface TerminateInstanceInAutoScalingGroupType { - /** - * The ID of the instance. - */ - InstanceId: XmlStringMaxLen19; - /** - * If true, terminating the instance also decrements the size of the Auto Scaling group. - */ - ShouldDecrementDesiredCapacity: ShouldDecrementDesiredCapacity; - } - export type TerminationPolicies = XmlStringMaxLen1600[]; - export type TimestampType = Date; - export interface UpdateAutoScalingGroupType { - /** - * The name of the Auto Scaling group. - */ - AutoScalingGroupName: ResourceName; - /** - * The name of the launch configuration. - */ - LaunchConfigurationName?: ResourceName; - /** - * The minimum size of the Auto Scaling group. - */ - MinSize?: AutoScalingGroupMinSize; - /** - * The maximum size of the Auto Scaling group. - */ - MaxSize?: AutoScalingGroupMaxSize; - /** - * The number of EC2 instances that should be running in the Auto Scaling group. This number must be greater than or equal to the minimum size of the group and less than or equal to the maximum size of the group. - */ - DesiredCapacity?: AutoScalingGroupDesiredCapacity; - /** - * The amount of time, in seconds, after a scaling activity completes before another scaling activity can start. The default is 300. For more information, see Auto Scaling Cooldowns in the Auto Scaling User Guide. - */ - DefaultCooldown?: Cooldown; - /** - * One or more Availability Zones for the group. - */ - AvailabilityZones?: AvailabilityZones; - /** - * The service to use for the health checks. The valid values are EC2 and ELB. - */ - HealthCheckType?: XmlStringMaxLen32; - /** - * The amount of time, in seconds, that Auto Scaling waits before checking the health status of an EC2 instance that has come into service. The default is 0. For more information, see Health Checks in the Auto Scaling User Guide. - */ - HealthCheckGracePeriod?: HealthCheckGracePeriod; - /** - * The name of the placement group into which you'll launch your instances, if any. For more information, see Placement Groups in the Amazon Elastic Compute Cloud User Guide. - */ - PlacementGroup?: XmlStringMaxLen255; - /** - * The ID of the subnet, if you are launching into a VPC. You can specify several subnets in a comma-separated list. When you specify VPCZoneIdentifier with AvailabilityZones, ensure that the subnets' Availability Zones match the values you specify for AvailabilityZones. For more information, see Launching Auto Scaling Instances in a VPC in the Auto Scaling User Guide. - */ - VPCZoneIdentifier?: XmlStringMaxLen2047; - /** - * A standalone termination policy or a list of termination policies used to select the instance to terminate. The policies are executed in the order that they are listed. For more information, see Controlling Which Instances Auto Scaling Terminates During Scale In in the Auto Scaling User Guide. - */ - TerminationPolicies?: TerminationPolicies; - /** - * Indicates whether newly launched instances are protected from termination by Auto Scaling when scaling in. - */ - NewInstancesProtectedFromScaleIn?: InstanceProtected; - } - export type Values = XmlString[]; - export type XmlString = string; - export type XmlStringMaxLen1023 = string; - export type XmlStringMaxLen1600 = string; - export type XmlStringMaxLen19 = string; - export type XmlStringMaxLen2047 = string; - export type XmlStringMaxLen255 = string; - export type XmlStringMaxLen32 = string; - export type XmlStringMaxLen511 = string; - export type XmlStringMaxLen64 = string; - export type XmlStringUserData = string; - /** - * A string in YYYY-MM-DD format that represents the latest possible API version that can be used in this service. Specify 'latest' to use the latest possible version. - */ - export type apiVersion = "2011-01-01"|"latest"|string; - export interface ClientApiVersions { - /** - * A string in YYYY-MM-DD format that represents the latest possible API version that can be used in this service. Specify 'latest' to use the latest possible version. - */ - apiVersion?: apiVersion; - } - export type ClientConfiguration = ServiceConfigurationOptions & ClientApiVersions; - /** - * Contains interfaces for use with the AutoScaling client. - */ - export import Types = AutoScaling; -} -export = AutoScaling; diff --git a/workshops/monte-carlo-on-ec2-spot-fleet/src/web/node_modules/aws-sdk/clients/autoscaling.js b/workshops/monte-carlo-on-ec2-spot-fleet/src/web/node_modules/aws-sdk/clients/autoscaling.js deleted file mode 100644 index fd092165..00000000 --- a/workshops/monte-carlo-on-ec2-spot-fleet/src/web/node_modules/aws-sdk/clients/autoscaling.js +++ /dev/null @@ -1,18 +0,0 @@ -require('../lib/node_loader'); -var AWS = require('../lib/core'); -var Service = AWS.Service; -var apiLoader = AWS.apiLoader; - -apiLoader.services['autoscaling'] = {}; -AWS.AutoScaling = Service.defineService('autoscaling', ['2011-01-01']); -Object.defineProperty(apiLoader.services['autoscaling'], '2011-01-01', { - get: function get() { - var model = require('../apis/autoscaling-2011-01-01.min.json'); - model.paginators = require('../apis/autoscaling-2011-01-01.paginators.json').pagination; - return model; - }, - enumerable: true, - configurable: true -}); - -module.exports = AWS.AutoScaling; diff --git a/workshops/monte-carlo-on-ec2-spot-fleet/src/web/node_modules/aws-sdk/clients/batch.d.ts b/workshops/monte-carlo-on-ec2-spot-fleet/src/web/node_modules/aws-sdk/clients/batch.d.ts deleted file mode 100644 index 78a06f22..00000000 --- a/workshops/monte-carlo-on-ec2-spot-fleet/src/web/node_modules/aws-sdk/clients/batch.d.ts +++ /dev/null @@ -1,1039 +0,0 @@ -import {Request} from '../lib/request'; -import {Response} from '../lib/response'; -import {AWSError} from '../lib/error'; -import {Service} from '../lib/service'; -import {ServiceConfigurationOptions} from '../lib/service'; -import {ConfigBase as Config} from '../lib/config'; -interface Blob {} -declare class Batch extends Service { - /** - * Constructs a service object. This object has one method for each API operation. - */ - constructor(options?: Batch.Types.ClientConfiguration) - config: Config & Batch.Types.ClientConfiguration; - /** - * Cancels jobs in an AWS Batch job queue. Jobs that are in the SUBMITTED, PENDING, or RUNNABLE state are cancelled. Jobs that have progressed to STARTING or RUNNING are not cancelled (but the API operation still succeeds, even if no jobs are cancelled); these jobs must be terminated with the TerminateJob operation. - */ - cancelJob(params: Batch.Types.CancelJobRequest, callback?: (err: AWSError, data: Batch.Types.CancelJobResponse) => void): Request; - /** - * Cancels jobs in an AWS Batch job queue. Jobs that are in the SUBMITTED, PENDING, or RUNNABLE state are cancelled. Jobs that have progressed to STARTING or RUNNING are not cancelled (but the API operation still succeeds, even if no jobs are cancelled); these jobs must be terminated with the TerminateJob operation. - */ - cancelJob(callback?: (err: AWSError, data: Batch.Types.CancelJobResponse) => void): Request; - /** - * Creates an AWS Batch compute environment. You can create MANAGED or UNMANAGED compute environments. In a managed compute environment, AWS Batch manages the compute resources within the environment, based on the compute resources that you specify. Instances launched into a managed compute environment use a recent, approved version of the Amazon ECS-optimized AMI. You can choose to use Amazon EC2 On-Demand instances in your managed compute environment, or you can use Amazon EC2 Spot instances that only launch when the Spot bid price is below a specified percentage of the On-Demand price. In an unmanaged compute environment, you can manage your own compute resources. This provides more compute resource configuration options, such as using a custom AMI, but you must ensure that your AMI meets the Amazon ECS container instance AMI specification. For more information, see Container Instance AMIs in the Amazon EC2 Container Service Developer Guide. After you have created your unmanaged compute environment, you can use the DescribeComputeEnvironments operation to find the Amazon ECS cluster that is associated with it and then manually launch your container instances into that Amazon ECS cluster. For more information, see Launching an Amazon ECS Container Instance in the Amazon EC2 Container Service Developer Guide. - */ - createComputeEnvironment(params: Batch.Types.CreateComputeEnvironmentRequest, callback?: (err: AWSError, data: Batch.Types.CreateComputeEnvironmentResponse) => void): Request; - /** - * Creates an AWS Batch compute environment. You can create MANAGED or UNMANAGED compute environments. In a managed compute environment, AWS Batch manages the compute resources within the environment, based on the compute resources that you specify. Instances launched into a managed compute environment use a recent, approved version of the Amazon ECS-optimized AMI. You can choose to use Amazon EC2 On-Demand instances in your managed compute environment, or you can use Amazon EC2 Spot instances that only launch when the Spot bid price is below a specified percentage of the On-Demand price. In an unmanaged compute environment, you can manage your own compute resources. This provides more compute resource configuration options, such as using a custom AMI, but you must ensure that your AMI meets the Amazon ECS container instance AMI specification. For more information, see Container Instance AMIs in the Amazon EC2 Container Service Developer Guide. After you have created your unmanaged compute environment, you can use the DescribeComputeEnvironments operation to find the Amazon ECS cluster that is associated with it and then manually launch your container instances into that Amazon ECS cluster. For more information, see Launching an Amazon ECS Container Instance in the Amazon EC2 Container Service Developer Guide. - */ - createComputeEnvironment(callback?: (err: AWSError, data: Batch.Types.CreateComputeEnvironmentResponse) => void): Request; - /** - * Creates an AWS Batch job queue. When you create a job queue, you associate one or more compute environments to the queue and assign an order of preference for the compute environments. You also set a priority to the job queue that determines the order in which the AWS Batch scheduler places jobs onto its associated compute environments. For example, if a compute environment is associated with more than one job queue, the job queue with a higher priority is given preference for scheduling jobs to that compute environment. - */ - createJobQueue(params: Batch.Types.CreateJobQueueRequest, callback?: (err: AWSError, data: Batch.Types.CreateJobQueueResponse) => void): Request; - /** - * Creates an AWS Batch job queue. When you create a job queue, you associate one or more compute environments to the queue and assign an order of preference for the compute environments. You also set a priority to the job queue that determines the order in which the AWS Batch scheduler places jobs onto its associated compute environments. For example, if a compute environment is associated with more than one job queue, the job queue with a higher priority is given preference for scheduling jobs to that compute environment. - */ - createJobQueue(callback?: (err: AWSError, data: Batch.Types.CreateJobQueueResponse) => void): Request; - /** - * Deletes an AWS Batch compute environment. Before you can delete a compute environment, you must set its state to DISABLED with the UpdateComputeEnvironment API operation and disassociate it from any job queues with the UpdateJobQueue API operation. - */ - deleteComputeEnvironment(params: Batch.Types.DeleteComputeEnvironmentRequest, callback?: (err: AWSError, data: Batch.Types.DeleteComputeEnvironmentResponse) => void): Request; - /** - * Deletes an AWS Batch compute environment. Before you can delete a compute environment, you must set its state to DISABLED with the UpdateComputeEnvironment API operation and disassociate it from any job queues with the UpdateJobQueue API operation. - */ - deleteComputeEnvironment(callback?: (err: AWSError, data: Batch.Types.DeleteComputeEnvironmentResponse) => void): Request; - /** - * Deletes the specified job queue. You must first disable submissions for a queue with the UpdateJobQueue operation. All jobs in the queue are terminated when you delete a job queue. It is not necessary to disassociate compute environments from a queue before submitting a DeleteJobQueue request. - */ - deleteJobQueue(params: Batch.Types.DeleteJobQueueRequest, callback?: (err: AWSError, data: Batch.Types.DeleteJobQueueResponse) => void): Request; - /** - * Deletes the specified job queue. You must first disable submissions for a queue with the UpdateJobQueue operation. All jobs in the queue are terminated when you delete a job queue. It is not necessary to disassociate compute environments from a queue before submitting a DeleteJobQueue request. - */ - deleteJobQueue(callback?: (err: AWSError, data: Batch.Types.DeleteJobQueueResponse) => void): Request; - /** - * Deregisters an AWS Batch job definition. - */ - deregisterJobDefinition(params: Batch.Types.DeregisterJobDefinitionRequest, callback?: (err: AWSError, data: Batch.Types.DeregisterJobDefinitionResponse) => void): Request; - /** - * Deregisters an AWS Batch job definition. - */ - deregisterJobDefinition(callback?: (err: AWSError, data: Batch.Types.DeregisterJobDefinitionResponse) => void): Request; - /** - * Describes one or more of your compute environments. If you are using an unmanaged compute environment, you can use the DescribeComputeEnvironment operation to determine the ecsClusterArn that you should launch your Amazon ECS container instances into. - */ - describeComputeEnvironments(params: Batch.Types.DescribeComputeEnvironmentsRequest, callback?: (err: AWSError, data: Batch.Types.DescribeComputeEnvironmentsResponse) => void): Request; - /** - * Describes one or more of your compute environments. If you are using an unmanaged compute environment, you can use the DescribeComputeEnvironment operation to determine the ecsClusterArn that you should launch your Amazon ECS container instances into. - */ - describeComputeEnvironments(callback?: (err: AWSError, data: Batch.Types.DescribeComputeEnvironmentsResponse) => void): Request; - /** - * Describes a list of job definitions. You can specify a status (such as ACTIVE) to only return job definitions that match that status. - */ - describeJobDefinitions(params: Batch.Types.DescribeJobDefinitionsRequest, callback?: (err: AWSError, data: Batch.Types.DescribeJobDefinitionsResponse) => void): Request; - /** - * Describes a list of job definitions. You can specify a status (such as ACTIVE) to only return job definitions that match that status. - */ - describeJobDefinitions(callback?: (err: AWSError, data: Batch.Types.DescribeJobDefinitionsResponse) => void): Request; - /** - * Describes one or more of your job queues. - */ - describeJobQueues(params: Batch.Types.DescribeJobQueuesRequest, callback?: (err: AWSError, data: Batch.Types.DescribeJobQueuesResponse) => void): Request; - /** - * Describes one or more of your job queues. - */ - describeJobQueues(callback?: (err: AWSError, data: Batch.Types.DescribeJobQueuesResponse) => void): Request; - /** - * Describes a list of AWS Batch jobs. - */ - describeJobs(params: Batch.Types.DescribeJobsRequest, callback?: (err: AWSError, data: Batch.Types.DescribeJobsResponse) => void): Request; - /** - * Describes a list of AWS Batch jobs. - */ - describeJobs(callback?: (err: AWSError, data: Batch.Types.DescribeJobsResponse) => void): Request; - /** - * Returns a list of task jobs for a specified job queue. You can filter the results by job status with the jobStatus parameter. If you do not specify a status, only RUNNING jobs are returned. - */ - listJobs(params: Batch.Types.ListJobsRequest, callback?: (err: AWSError, data: Batch.Types.ListJobsResponse) => void): Request; - /** - * Returns a list of task jobs for a specified job queue. You can filter the results by job status with the jobStatus parameter. If you do not specify a status, only RUNNING jobs are returned. - */ - listJobs(callback?: (err: AWSError, data: Batch.Types.ListJobsResponse) => void): Request; - /** - * Registers an AWS Batch job definition. - */ - registerJobDefinition(params: Batch.Types.RegisterJobDefinitionRequest, callback?: (err: AWSError, data: Batch.Types.RegisterJobDefinitionResponse) => void): Request; - /** - * Registers an AWS Batch job definition. - */ - registerJobDefinition(callback?: (err: AWSError, data: Batch.Types.RegisterJobDefinitionResponse) => void): Request; - /** - * Submits an AWS Batch job from a job definition. Parameters specified during SubmitJob override parameters defined in the job definition. - */ - submitJob(params: Batch.Types.SubmitJobRequest, callback?: (err: AWSError, data: Batch.Types.SubmitJobResponse) => void): Request; - /** - * Submits an AWS Batch job from a job definition. Parameters specified during SubmitJob override parameters defined in the job definition. - */ - submitJob(callback?: (err: AWSError, data: Batch.Types.SubmitJobResponse) => void): Request; - /** - * Terminates jobs in a job queue. Jobs that are in the STARTING or RUNNING state are terminated, which causes them to transition to FAILED. Jobs that have not progressed to the STARTING state are cancelled. - */ - terminateJob(params: Batch.Types.TerminateJobRequest, callback?: (err: AWSError, data: Batch.Types.TerminateJobResponse) => void): Request; - /** - * Terminates jobs in a job queue. Jobs that are in the STARTING or RUNNING state are terminated, which causes them to transition to FAILED. Jobs that have not progressed to the STARTING state are cancelled. - */ - terminateJob(callback?: (err: AWSError, data: Batch.Types.TerminateJobResponse) => void): Request; - /** - * Updates an AWS Batch compute environment. - */ - updateComputeEnvironment(params: Batch.Types.UpdateComputeEnvironmentRequest, callback?: (err: AWSError, data: Batch.Types.UpdateComputeEnvironmentResponse) => void): Request; - /** - * Updates an AWS Batch compute environment. - */ - updateComputeEnvironment(callback?: (err: AWSError, data: Batch.Types.UpdateComputeEnvironmentResponse) => void): Request; - /** - * Updates a job queue. - */ - updateJobQueue(params: Batch.Types.UpdateJobQueueRequest, callback?: (err: AWSError, data: Batch.Types.UpdateJobQueueResponse) => void): Request; - /** - * Updates a job queue. - */ - updateJobQueue(callback?: (err: AWSError, data: Batch.Types.UpdateJobQueueResponse) => void): Request; -} -declare namespace Batch { - export interface AttemptContainerDetail { - /** - * The Amazon Resource Name (ARN) of the Amazon ECS container instance that hosts the job attempt. - */ - containerInstanceArn?: String; - /** - * The Amazon Resource Name (ARN) of the Amazon ECS task that is associated with the job attempt. - */ - taskArn?: String; - /** - * The exit code for the job attempt. A non-zero exit code is considered a failure. - */ - exitCode?: Integer; - /** - * A short (255 max characters) human-readable string to provide additional details about a running or stopped container. - */ - reason?: String; - /** - * The name of the CloudWatch Logs log stream associated with the container. The log group for AWS Batch jobs is /aws/batch/job. Each container attempt receives a log stream name when they reach the RUNNING status. - */ - logStreamName?: String; - } - export interface AttemptDetail { - /** - * Details about the container in this job attempt. - */ - container?: AttemptContainerDetail; - /** - * The Unix timestamp for when the attempt was started (when the task transitioned from the PENDING state to the RUNNING state). - */ - startedAt?: Long; - /** - * The Unix timestamp for when the attempt was stopped (when the task transitioned from the RUNNING state to the STOPPED state). - */ - stoppedAt?: Long; - /** - * A short, human-readable string to provide additional details about the current status of the job attempt. - */ - statusReason?: String; - } - export type AttemptDetails = AttemptDetail[]; - export type Boolean = boolean; - export type CEState = "ENABLED"|"DISABLED"|string; - export type CEStatus = "CREATING"|"UPDATING"|"DELETING"|"DELETED"|"VALID"|"INVALID"|string; - export type CEType = "MANAGED"|"UNMANAGED"|string; - export type CRType = "EC2"|"SPOT"|string; - export interface CancelJobRequest { - /** - * A list of up to 100 job IDs to cancel. - */ - jobId: String; - /** - * A message to attach to the job that explains the reason for cancelling it. This message is returned by future DescribeJobs operations on the job. This message is also recorded in the AWS Batch activity logs. - */ - reason: String; - } - export interface CancelJobResponse { - } - export interface ComputeEnvironmentDetail { - /** - * The name of the compute environment. - */ - computeEnvironmentName: String; - /** - * The Amazon Resource Name (ARN) of the compute environment. - */ - computeEnvironmentArn: String; - /** - * The Amazon Resource Name (ARN) of the underlying Amazon ECS cluster used by the compute environment. - */ - ecsClusterArn: String; - /** - * The type of the compute environment. - */ - type?: CEType; - /** - * The state of the compute environment. The valid values are ENABLED or DISABLED. An ENABLED state indicates that you can register instances with the compute environment and that the associated instances can accept jobs. - */ - state?: CEState; - /** - * The current status of the compute environment (for example, CREATING or VALID). - */ - status?: CEStatus; - /** - * A short, human-readable string to provide additional details about the current status of the compute environment. - */ - statusReason?: String; - /** - * The compute resources defined for the compute environment. - */ - computeResources?: ComputeResource; - /** - * The service role associated with the compute environment that allows AWS Batch to make calls to AWS API operations on your behalf. - */ - serviceRole?: String; - } - export type ComputeEnvironmentDetailList = ComputeEnvironmentDetail[]; - export interface ComputeEnvironmentOrder { - /** - * The order of the compute environment. - */ - order: Integer; - /** - * The Amazon Resource Name (ARN) of the compute environment. - */ - computeEnvironment: String; - } - export type ComputeEnvironmentOrders = ComputeEnvironmentOrder[]; - export interface ComputeResource { - /** - * The type of compute environment. - */ - type: CRType; - /** - * The minimum number of EC2 vCPUs that an environment should maintain. - */ - minvCpus: Integer; - /** - * The maximum number of EC2 vCPUs that an environment can reach. - */ - maxvCpus: Integer; - /** - * The desired number of EC2 vCPUS in the compute environment. - */ - desiredvCpus?: Integer; - /** - * The instances types that may launched. - */ - instanceTypes: StringList; - /** - * The Amazon Machine Image (AMI) ID used for instances launched in the compute environment. - */ - imageId?: String; - /** - * The VPC subnets into which the compute resources are launched. - */ - subnets: StringList; - /** - * The EC2 security group that is associated with instances launched in the compute environment. - */ - securityGroupIds: StringList; - /** - * The EC2 key pair that is used for instances launched in the compute environment. - */ - ec2KeyPair?: String; - /** - * The Amazon ECS instance profile applied to Amazon EC2 instances in a compute environment. You can specify the short name or full Amazon Resource Name (ARN) of an instance profile. For example, ecsInstanceRole or arn:aws:iam::<aws_account_id>:instance-profile/ecsInstanceRole. For more information, see Amazon ECS Instance Role in the AWS Batch User Guide. - */ - instanceRole: String; - /** - * Key-value pair tags to be applied to resources that are launched in the compute environment. - */ - tags?: TagsMap; - /** - * The minimum percentage that a Spot Instance price must be when compared with the On-Demand price for that instance type before instances are launched. For example, if your bid percentage is 20%, then the Spot price must be below 20% of the current On-Demand price for that EC2 instance. - */ - bidPercentage?: Integer; - /** - * The Amazon Resource Name (ARN) of the Amazon EC2 Spot Fleet IAM role applied to a SPOT compute environment. - */ - spotIamFleetRole?: String; - } - export interface ComputeResourceUpdate { - /** - * The minimum number of EC2 vCPUs that an environment should maintain. - */ - minvCpus?: Integer; - /** - * The maximum number of EC2 vCPUs that an environment can reach. - */ - maxvCpus?: Integer; - /** - * The desired number of EC2 vCPUS in the compute environment. - */ - desiredvCpus?: Integer; - } - export interface ContainerDetail { - /** - * The image used to start the container. - */ - image?: String; - /** - * The number of VCPUs allocated for the job. - */ - vcpus?: Integer; - /** - * The number of MiB of memory reserved for the job. - */ - memory?: Integer; - /** - * The command that is passed to the container. - */ - command?: StringList; - /** - * The Amazon Resource Name (ARN) associated with the job upon execution. - */ - jobRoleArn?: String; - /** - * A list of volumes associated with the job. - */ - volumes?: Volumes; - /** - * The environment variables to pass to a container. - */ - environment?: EnvironmentVariables; - /** - * The mount points for data volumes in your container. - */ - mountPoints?: MountPoints; - /** - * When this parameter is true, the container is given read-only access to its root file system. - */ - readonlyRootFilesystem?: Boolean; - /** - * A list of ulimit values to set in the container. - */ - ulimits?: Ulimits; - /** - * When this parameter is true, the container is given elevated privileges on the host container instance (similar to the root user). - */ - privileged?: Boolean; - /** - * The user name to use inside the container. - */ - user?: String; - /** - * The exit code to return upon completion. - */ - exitCode?: Integer; - /** - * A short (255 max characters) human-readable string to provide additional details about a running or stopped container. - */ - reason?: String; - /** - * The Amazon Resource Name (ARN) of the container instance on which the container is running. - */ - containerInstanceArn?: String; - /** - * The Amazon Resource Name (ARN) of the Amazon ECS task that is associated with the container job. - */ - taskArn?: String; - /** - * The name of the CloudWatch Logs log stream associated with the container. The log group for AWS Batch jobs is /aws/batch/job. Each container attempt receives a log stream name when they reach the RUNNING status. - */ - logStreamName?: String; - } - export interface ContainerOverrides { - /** - * The number of vCPUs to reserve for the container. This value overrides the value set in the job definition. - */ - vcpus?: Integer; - /** - * The number of MiB of memory reserved for the job. This value overrides the value set in the job definition. - */ - memory?: Integer; - /** - * The command to send to the container that overrides the default command from the Docker image or the job definition. - */ - command?: StringList; - /** - * The environment variables to send to the container. You can add new environment variables, which are added to the container at launch, or you can override the existing environment variables from the Docker image or the job definition. - */ - environment?: EnvironmentVariables; - } - export interface ContainerProperties { - /** - * The image used to start a container. This string is passed directly to the Docker daemon. Images in the Docker Hub registry are available by default. Other repositories are specified with repository-url/image:tag . Up to 255 letters (uppercase and lowercase), numbers, hyphens, underscores, colons, periods, forward slashes, and number signs are allowed. This parameter maps to Image in the Create a container section of the Docker Remote API and the IMAGE parameter of docker run. Images in Amazon ECR repositories use the full registry and repository URI (for example, 012345678910.dkr.ecr.<region-name>.amazonaws.com/<repository-name>). Images in official repositories on Docker Hub use a single name (for example, ubuntu or mongo). Images in other repositories on Docker Hub are qualified with an organization name (for example, amazon/amazon-ecs-agent). Images in other online repositories are qualified further by a domain name (for example, quay.io/assemblyline/ubuntu). - */ - image: String; - /** - * The number of vCPUs reserved for the container. This parameter maps to CpuShares in the Create a container section of the Docker Remote API and the --cpu-shares option to docker run. Each vCPU is equivalent to 1,024 CPU shares. You must specify at least 1 vCPU. - */ - vcpus: Integer; - /** - * The hard limit (in MiB) of memory to present to the container. If your container attempts to exceed the memory specified here, the container is killed. This parameter maps to Memory in the Create a container section of the Docker Remote API and the --memory option to docker run. You must specify at least 4 MiB of memory for a job. - */ - memory: Integer; - /** - * The command that is passed to the container. This parameter maps to Cmd in the Create a container section of the Docker Remote API and the COMMAND parameter to docker run. For more information, see https://docs.docker.com/engine/reference/builder/#cmd. - */ - command?: StringList; - /** - * The Amazon Resource Name (ARN) of the IAM role that the container can assume for AWS permissions. - */ - jobRoleArn?: String; - /** - * A list of data volumes used in a job. - */ - volumes?: Volumes; - /** - * The environment variables to pass to a container. This parameter maps to Env in the Create a container section of the Docker Remote API and the --env option to docker run. We do not recommend using plain text environment variables for sensitive information, such as credential data. - */ - environment?: EnvironmentVariables; - /** - * The mount points for data volumes in your container. This parameter maps to Volumes in the Create a container section of the Docker Remote API and the --volume option to docker run. - */ - mountPoints?: MountPoints; - /** - * When this parameter is true, the container is given read-only access to its root file system. This parameter maps to ReadonlyRootfs in the Create a container section of the Docker Remote API and the --read-only option to docker run. - */ - readonlyRootFilesystem?: Boolean; - /** - * When this parameter is true, the container is given elevated privileges on the host container instance (similar to the root user). This parameter maps to Privileged in the Create a container section of the Docker Remote API and the --privileged option to docker run. - */ - privileged?: Boolean; - /** - * A list of ulimits to set in the container. This parameter maps to Ulimits in the Create a container section of the Docker Remote API and the --ulimit option to docker run. - */ - ulimits?: Ulimits; - /** - * The user name to use inside the container. This parameter maps to User in the Create a container section of the Docker Remote API and the --user option to docker run. - */ - user?: String; - } - export interface CreateComputeEnvironmentRequest { - /** - * The name for your compute environment. Up to 128 letters (uppercase and lowercase), numbers, and underscores are allowed. - */ - computeEnvironmentName: String; - /** - * The type of the compute environment. - */ - type: CEType; - /** - * The state of the compute environment. If the state is ENABLED, then the compute environment accepts jobs from a queue and can scale out automatically based on queues. - */ - state?: CEState; - /** - * Details of the compute resources managed by the compute environment. This parameter is required for managed compute environments. - */ - computeResources?: ComputeResource; - /** - * The full Amazon Resource Name (ARN) of the IAM role that allows AWS Batch to make calls to other AWS services on your behalf. If your specified role has a path other than /, then you must either specify the full role ARN (this is recommended) or prefix the role name with the path. Depending on how you created your AWS Batch service role, its ARN may contain the service-role path prefix. When you only specify the name of the service role, AWS Batch assumes that your ARN does not use the service-role path prefix. Because of this, we recommend that you specify the full ARN of your service role when you create compute environments. - */ - serviceRole: String; - } - export interface CreateComputeEnvironmentResponse { - /** - * The name of the compute environment. - */ - computeEnvironmentName?: String; - /** - * The Amazon Resource Name (ARN) of the compute environment. - */ - computeEnvironmentArn?: String; - } - export interface CreateJobQueueRequest { - /** - * The name of the job queue. - */ - jobQueueName: String; - /** - * The state of the job queue. If the job queue state is ENABLED, it is able to accept jobs. - */ - state?: JQState; - /** - * The priority of the job queue. Job queues with a higher priority (or a higher integer value for the priority parameter) are evaluated first when associated with same compute environment. Priority is determined in descending order, for example, a job queue with a priority value of 10 is given scheduling preference over a job queue with a priority value of 1. - */ - priority: Integer; - /** - * The set of compute environments mapped to a job queue and their order relative to each other. The job scheduler uses this parameter to determine which compute environment should execute a given job. Compute environments must be in the VALID state before you can associate them with a job queue. You can associate up to 3 compute environments with a job queue. - */ - computeEnvironmentOrder: ComputeEnvironmentOrders; - } - export interface CreateJobQueueResponse { - /** - * The name of the job queue. - */ - jobQueueName: String; - /** - * The Amazon Resource Name (ARN) of the job queue. - */ - jobQueueArn: String; - } - export interface DeleteComputeEnvironmentRequest { - /** - * The name or Amazon Resource Name (ARN) of the compute environment to delete. - */ - computeEnvironment: String; - } - export interface DeleteComputeEnvironmentResponse { - } - export interface DeleteJobQueueRequest { - /** - * The short name or full Amazon Resource Name (ARN) of the queue to delete. - */ - jobQueue: String; - } - export interface DeleteJobQueueResponse { - } - export interface DeregisterJobDefinitionRequest { - /** - * The name and revision (name:revision) or full Amazon Resource Name (ARN) of the job definition to deregister. - */ - jobDefinition: String; - } - export interface DeregisterJobDefinitionResponse { - } - export interface DescribeComputeEnvironmentsRequest { - /** - * A list of up to 100 compute environment names or full Amazon Resource Name (ARN) entries. - */ - computeEnvironments?: StringList; - /** - * The maximum number of cluster results returned by DescribeComputeEnvironments in paginated output. When this parameter is used, DescribeComputeEnvironments only returns maxResults results in a single page along with a nextToken response element. The remaining results of the initial request can be seen by sending another DescribeComputeEnvironments request with the returned nextToken value. This value can be between 1 and 100. If this parameter is not used, then DescribeComputeEnvironments returns up to 100 results and a nextToken value if applicable. - */ - maxResults?: Integer; - /** - * The nextToken value returned from a previous paginated DescribeComputeEnvironments request where maxResults was used and the results exceeded the value of that parameter. Pagination continues from the end of the previous results that returned the nextToken value. This value is null when there are no more results to return. This token should be treated as an opaque identifier that is only used to retrieve the next items in a list and not for other programmatic purposes. - */ - nextToken?: String; - } - export interface DescribeComputeEnvironmentsResponse { - /** - * The list of compute environments. - */ - computeEnvironments?: ComputeEnvironmentDetailList; - /** - * The nextToken value to include in a future DescribeComputeEnvironments request. When the results of a DescribeJobDefinitions request exceed maxResults, this value can be used to retrieve the next page of results. This value is null when there are no more results to return. - */ - nextToken?: String; - } - export interface DescribeJobDefinitionsRequest { - /** - * A space-separated list of up to 100 job definition names or full Amazon Resource Name (ARN) entries. - */ - jobDefinitions?: StringList; - /** - * The maximum number of results returned by DescribeJobDefinitions in paginated output. When this parameter is used, DescribeJobDefinitions only returns maxResults results in a single page along with a nextToken response element. The remaining results of the initial request can be seen by sending another DescribeJobDefinitions request with the returned nextToken value. This value can be between 1 and 100. If this parameter is not used, then DescribeJobDefinitions returns up to 100 results and a nextToken value if applicable. - */ - maxResults?: Integer; - /** - * The name of the job definition to describe. - */ - jobDefinitionName?: String; - /** - * The status with which to filter job definitions. - */ - status?: String; - /** - * The nextToken value returned from a previous paginated DescribeJobDefinitions request where maxResults was used and the results exceeded the value of that parameter. Pagination continues from the end of the previous results that returned the nextToken value. This value is null when there are no more results to return. This token should be treated as an opaque identifier that is only used to retrieve the next items in a list and not for other programmatic purposes. - */ - nextToken?: String; - } - export interface DescribeJobDefinitionsResponse { - /** - * The list of job definitions. - */ - jobDefinitions?: JobDefinitionList; - /** - * The nextToken value to include in a future DescribeJobDefinitions request. When the results of a DescribeJobDefinitions request exceed maxResults, this value can be used to retrieve the next page of results. This value is null when there are no more results to return. - */ - nextToken?: String; - } - export interface DescribeJobQueuesRequest { - /** - * A list of up to 100 queue names or full queue Amazon Resource Name (ARN) entries. - */ - jobQueues?: StringList; - /** - * The maximum number of results returned by DescribeJobQueues in paginated output. When this parameter is used, DescribeJobQueues only returns maxResults results in a single page along with a nextToken response element. The remaining results of the initial request can be seen by sending another DescribeJobQueues request with the returned nextToken value. This value can be between 1 and 100. If this parameter is not used, then DescribeJobQueues returns up to 100 results and a nextToken value if applicable. - */ - maxResults?: Integer; - /** - * The nextToken value returned from a previous paginated DescribeJobQueues request where maxResults was used and the results exceeded the value of that parameter. Pagination continues from the end of the previous results that returned the nextToken value. This value is null when there are no more results to return. This token should be treated as an opaque identifier that is only used to retrieve the next items in a list and not for other programmatic purposes. - */ - nextToken?: String; - } - export interface DescribeJobQueuesResponse { - /** - * The list of job queues. - */ - jobQueues?: JobQueueDetailList; - /** - * The nextToken value to include in a future DescribeJobQueues request. When the results of a DescribeJobQueues request exceed maxResults, this value can be used to retrieve the next page of results. This value is null when there are no more results to return. - */ - nextToken?: String; - } - export interface DescribeJobsRequest { - /** - * A space-separated list of up to 100 job IDs. - */ - jobs: StringList; - } - export interface DescribeJobsResponse { - /** - * The list of jobs. - */ - jobs?: JobDetailList; - } - export type EnvironmentVariables = KeyValuePair[]; - export interface Host { - /** - * The path on the host container instance that is presented to the container. If this parameter is empty, then the Docker daemon has assigned a host path for you. If the host parameter contains a sourcePath file location, then the data volume persists at the specified location on the host container instance until you delete it manually. If the sourcePath value does not exist on the host container instance, the Docker daemon creates it. If the location does exist, the contents of the source path folder are exported. - */ - sourcePath?: String; - } - export type Integer = number; - export type JQState = "ENABLED"|"DISABLED"|string; - export type JQStatus = "CREATING"|"UPDATING"|"DELETING"|"DELETED"|"VALID"|"INVALID"|string; - export interface JobDefinition { - /** - * The name of the job definition. - */ - jobDefinitionName: String; - /** - * The Amazon Resource Name (ARN) for the job definition. - */ - jobDefinitionArn: String; - /** - * The revision of the job definition. - */ - revision: Integer; - /** - * The status of the job definition. - */ - status?: String; - /** - * The type of job definition. - */ - type: String; - /** - * Default parameters or parameter substitution placeholders that are set in the job definition. Parameters are specified as a key-value pair mapping. Parameters in a SubmitJob request override any corresponding parameter defaults from the job definition. - */ - parameters?: ParametersMap; - /** - * The retry strategy to use for failed jobs that are submitted with this job definition. - */ - retryStrategy?: RetryStrategy; - /** - * An object with various properties specific to container-based jobs. - */ - containerProperties?: ContainerProperties; - } - export type JobDefinitionList = JobDefinition[]; - export type JobDefinitionType = "container"|string; - export interface JobDependency { - /** - * The job ID of the AWS Batch job associated with this dependency. - */ - jobId?: String; - } - export type JobDependencyList = JobDependency[]; - export interface JobDetail { - /** - * The name of the job. - */ - jobName: String; - /** - * The ID for the job. - */ - jobId: String; - /** - * The Amazon Resource Name (ARN) of the job queue with which the job is associated. - */ - jobQueue: String; - /** - * The current status for the job. - */ - status: JobStatus; - /** - * A list of job attempts associated with this job. - */ - attempts?: AttemptDetails; - /** - * A short, human-readable string to provide additional details about the current status of the job. - */ - statusReason?: String; - /** - * The Unix timestamp for when the job was created (when the task entered the PENDING state). - */ - createdAt?: Long; - /** - * The retry strategy to use for this job if an attempt fails. - */ - retryStrategy?: RetryStrategy; - /** - * The Unix timestamp for when the job was started (when the task transitioned from the PENDING state to the RUNNING state). - */ - startedAt: Long; - /** - * The Unix timestamp for when the job was stopped (when the task transitioned from the RUNNING state to the STOPPED state). - */ - stoppedAt?: Long; - /** - * A list of job names or IDs on which this job depends. - */ - dependsOn?: JobDependencyList; - /** - * The job definition that is used by this job. - */ - jobDefinition: String; - /** - * Additional parameters passed to the job that replace parameter substitution placeholders or override any corresponding parameter defaults from the job definition. - */ - parameters?: ParametersMap; - /** - * An object representing the details of the container that is associated with the job. - */ - container?: ContainerDetail; - } - export type JobDetailList = JobDetail[]; - export interface JobQueueDetail { - /** - * The name of the job queue. - */ - jobQueueName: String; - /** - * The Amazon Resource Name (ARN) of the job queue. - */ - jobQueueArn: String; - /** - * Describes the ability of the queue to accept new jobs. - */ - state: JQState; - /** - * The status of the job queue (for example, CREATING or VALID). - */ - status?: JQStatus; - /** - * A short, human-readable string to provide additional details about the current status of the job queue. - */ - statusReason?: String; - /** - * The priority of the job queue. - */ - priority: Integer; - /** - * The compute environments that are attached to the job queue and the order in which job placement is preferred. Compute environments are selected for job placement in ascending order. - */ - computeEnvironmentOrder: ComputeEnvironmentOrders; - } - export type JobQueueDetailList = JobQueueDetail[]; - export type JobStatus = "SUBMITTED"|"PENDING"|"RUNNABLE"|"STARTING"|"RUNNING"|"SUCCEEDED"|"FAILED"|string; - export interface JobSummary { - /** - * The ID of the job. - */ - jobId: String; - /** - * The name of the job. - */ - jobName: String; - } - export type JobSummaryList = JobSummary[]; - export interface KeyValuePair { - /** - * The name of the key value pair. For environment variables, this is the name of the environment variable. - */ - name?: String; - /** - * The value of the key value pair. For environment variables, this is the value of the environment variable. - */ - value?: String; - } - export interface ListJobsRequest { - /** - * The name or full Amazon Resource Name (ARN) of the job queue with which to list jobs. - */ - jobQueue: String; - /** - * The job status with which to filter jobs in the specified queue. If you do not specify a status, only RUNNING jobs are returned. - */ - jobStatus?: JobStatus; - /** - * The maximum number of results returned by ListJobs in paginated output. When this parameter is used, ListJobs only returns maxResults results in a single page along with a nextToken response element. The remaining results of the initial request can be seen by sending another ListJobs request with the returned nextToken value. This value can be between 1 and 100. If this parameter is not used, then ListJobs returns up to 100 results and a nextToken value if applicable. - */ - maxResults?: Integer; - /** - * The nextToken value returned from a previous paginated ListJobs request where maxResults was used and the results exceeded the value of that parameter. Pagination continues from the end of the previous results that returned the nextToken value. This value is null when there are no more results to return. This token should be treated as an opaque identifier that is only used to retrieve the next items in a list and not for other programmatic purposes. - */ - nextToken?: String; - } - export interface ListJobsResponse { - /** - * A list of job summaries that match the request. - */ - jobSummaryList: JobSummaryList; - /** - * The nextToken value to include in a future ListJobs request. When the results of a ListJobs request exceed maxResults, this value can be used to retrieve the next page of results. This value is null when there are no more results to return. - */ - nextToken?: String; - } - export type Long = number; - export interface MountPoint { - /** - * The path on the container at which to mount the host volume. - */ - containerPath?: String; - /** - * If this value is true, the container has read-only access to the volume; otherwise, the container can write to the volume. The default value is false. - */ - readOnly?: Boolean; - /** - * The name of the volume to mount. - */ - sourceVolume?: String; - } - export type MountPoints = MountPoint[]; - export type ParametersMap = {[key: string]: String}; - export interface RegisterJobDefinitionRequest { - /** - * The name of the job definition to register. Up to 128 letters (uppercase and lowercase), numbers, hyphens, and underscores are allowed. - */ - jobDefinitionName: String; - /** - * The type of job definition. - */ - type: JobDefinitionType; - /** - * Default parameter substitution placeholders to set in the job definition. Parameters are specified as a key-value pair mapping. Parameters in a SubmitJob request override any corresponding parameter defaults from the job definition. - */ - parameters?: ParametersMap; - /** - * An object with various properties specific for container-based jobs. This parameter is required if the type parameter is container. - */ - containerProperties?: ContainerProperties; - /** - * The retry strategy to use for failed jobs that are submitted with this job definition. Any retry strategy that is specified during a SubmitJob operation overrides the retry strategy defined here. - */ - retryStrategy?: RetryStrategy; - } - export interface RegisterJobDefinitionResponse { - /** - * The name of the job definition. - */ - jobDefinitionName: String; - /** - * The Amazon Resource Name (ARN) of the job definition. - */ - jobDefinitionArn: String; - /** - * The revision of the job definition. - */ - revision: Integer; - } - export interface RetryStrategy { - /** - * The number of times to move a job to the RUNNABLE status. You may specify between 1 and 10 attempts. If attempts is greater than one, the job is retried if it fails until it has moved to RUNNABLE that many times. - */ - attempts?: Integer; - } - export type String = string; - export type StringList = String[]; - export interface SubmitJobRequest { - /** - * The name of the job. The first character must be alphanumeric, and up to 128 letters (uppercase and lowercase), numbers, hyphens, and underscores are allowed. - */ - jobName: String; - /** - * The job queue into which the job will be submitted. You can specify either the name or the Amazon Resource Name (ARN) of the queue. - */ - jobQueue: String; - /** - * A list of job IDs on which this job depends. A job can depend upon a maximum of 20 jobs. - */ - dependsOn?: JobDependencyList; - /** - * The job definition used by this job. This value can be either a name:revision or the Amazon Resource Name (ARN) for the job definition. - */ - jobDefinition: String; - /** - * Additional parameters passed to the job that replace parameter substitution placeholders that are set in the job definition. Parameters are specified as a key and value pair mapping. Parameters in a SubmitJob request override any corresponding parameter defaults from the job definition. - */ - parameters?: ParametersMap; - /** - * A list of container overrides in JSON format that specify the name of a container in the specified job definition and the overrides it should receive. You can override the default command for a container (that is specified in the job definition or the Docker image) with a command override. You can also override existing environment variables (that are specified in the job definition or Docker image) on a container or add new environment variables to it with an environment override. - */ - containerOverrides?: ContainerOverrides; - /** - * The retry strategy to use for failed jobs from this SubmitJob operation. When a retry strategy is specified here, it overrides the retry strategy defined in the job definition. - */ - retryStrategy?: RetryStrategy; - } - export interface SubmitJobResponse { - /** - * The name of the job. - */ - jobName: String; - /** - * The unique identifier for the job. - */ - jobId: String; - } - export type TagsMap = {[key: string]: String}; - export interface TerminateJobRequest { - /** - * Job IDs to be terminated. Up to 100 jobs can be specified. - */ - jobId: String; - /** - * A message to attach to the job that explains the reason for cancelling it. This message is returned by future DescribeJobs operations on the job. This message is also recorded in the AWS Batch activity logs. - */ - reason: String; - } - export interface TerminateJobResponse { - } - export interface Ulimit { - /** - * The hard limit for the ulimit type. - */ - hardLimit: Integer; - /** - * The type of the ulimit. - */ - name: String; - /** - * The soft limit for the ulimit type. - */ - softLimit: Integer; - } - export type Ulimits = Ulimit[]; - export interface UpdateComputeEnvironmentRequest { - /** - * The name or full Amazon Resource Name (ARN) of the compute environment to update. - */ - computeEnvironment: String; - /** - * The state of the compute environment. Compute environments in the ENABLED state can accept jobs from a queue and scale in or out automatically based on the workload demand of its associated queues. - */ - state?: CEState; - /** - * Details of the compute resources managed by the compute environment. Required for a managed compute environment. - */ - computeResources?: ComputeResourceUpdate; - /** - * The full Amazon Resource Name (ARN) of the IAM role that allows AWS Batch to make calls to other AWS services on your behalf. If your specified role has a path other than /, then you must either specify the full role ARN (this is recommended) or prefix the role name with the path. Depending on how you created your AWS Batch service role, its ARN may contain the service-role path prefix. When you only specify the name of the service role, AWS Batch assumes that your ARN does not use the service-role path prefix. Because of this, we recommend that you specify the full ARN of your service role when you create compute environments. - */ - serviceRole?: String; - } - export interface UpdateComputeEnvironmentResponse { - /** - * The name of compute environment. - */ - computeEnvironmentName?: String; - /** - * The Amazon Resource Name (ARN) of the compute environment. - */ - computeEnvironmentArn?: String; - } - export interface UpdateJobQueueRequest { - /** - * The name or the Amazon Resource Name (ARN) of the job queue. - */ - jobQueue: String; - /** - * Describes the queue's ability to accept new jobs. - */ - state?: JQState; - /** - * The priority of the job queue. Job queues with a higher priority (or a higher integer value for the priority parameter) are evaluated first when associated with same compute environment. Priority is determined in descending order, for example, a job queue with a priority value of 10 is given scheduling preference over a job queue with a priority value of 1. - */ - priority?: Integer; - /** - * Details the set of compute environments mapped to a job queue and their order relative to each other. This is one of the parameters used by the job scheduler to determine which compute environment should execute a given job. - */ - computeEnvironmentOrder?: ComputeEnvironmentOrders; - } - export interface UpdateJobQueueResponse { - /** - * The name of the job queue. - */ - jobQueueName?: String; - /** - * The Amazon Resource Name (ARN) of the job queue. - */ - jobQueueArn?: String; - } - export interface Volume { - /** - * The contents of the host parameter determine whether your data volume persists on the host container instance and where it is stored. If the host parameter is empty, then the Docker daemon assigns a host path for your data volume, but the data is not guaranteed to persist after the containers associated with it stop running. - */ - host?: Host; - /** - * The name of the volume. Up to 255 letters (uppercase and lowercase), numbers, hyphens, and underscores are allowed. This name is referenced in the sourceVolume parameter of container definition mountPoints. - */ - name?: String; - } - export type Volumes = Volume[]; - /** - * A string in YYYY-MM-DD format that represents the latest possible API version that can be used in this service. Specify 'latest' to use the latest possible version. - */ - export type apiVersion = "2016-08-10"|"latest"|string; - export interface ClientApiVersions { - /** - * A string in YYYY-MM-DD format that represents the latest possible API version that can be used in this service. Specify 'latest' to use the latest possible version. - */ - apiVersion?: apiVersion; - } - export type ClientConfiguration = ServiceConfigurationOptions & ClientApiVersions; - /** - * Contains interfaces for use with the Batch client. - */ - export import Types = Batch; -} -export = Batch; diff --git a/workshops/monte-carlo-on-ec2-spot-fleet/src/web/node_modules/aws-sdk/clients/batch.js b/workshops/monte-carlo-on-ec2-spot-fleet/src/web/node_modules/aws-sdk/clients/batch.js deleted file mode 100644 index 76dda264..00000000 --- a/workshops/monte-carlo-on-ec2-spot-fleet/src/web/node_modules/aws-sdk/clients/batch.js +++ /dev/null @@ -1,18 +0,0 @@ -require('../lib/node_loader'); -var AWS = require('../lib/core'); -var Service = AWS.Service; -var apiLoader = AWS.apiLoader; - -apiLoader.services['batch'] = {}; -AWS.Batch = Service.defineService('batch', ['2016-08-10']); -Object.defineProperty(apiLoader.services['batch'], '2016-08-10', { - get: function get() { - var model = require('../apis/batch-2016-08-10.min.json'); - model.paginators = require('../apis/batch-2016-08-10.paginators.json').pagination; - return model; - }, - enumerable: true, - configurable: true -}); - -module.exports = AWS.Batch; diff --git a/workshops/monte-carlo-on-ec2-spot-fleet/src/web/node_modules/aws-sdk/clients/browser_default.d.ts b/workshops/monte-carlo-on-ec2-spot-fleet/src/web/node_modules/aws-sdk/clients/browser_default.d.ts deleted file mode 100644 index 441ffba6..00000000 --- a/workshops/monte-carlo-on-ec2-spot-fleet/src/web/node_modules/aws-sdk/clients/browser_default.d.ts +++ /dev/null @@ -1,63 +0,0 @@ -export import ACM = require('./acm'); -export import APIGateway = require('./apigateway'); -export import ApplicationAutoScaling = require('./applicationautoscaling'); -export import AutoScaling = require('./autoscaling'); -export import CloudFormation = require('./cloudformation'); -export import CloudFront = require('./cloudfront'); -export import CloudHSM = require('./cloudhsm'); -export import CloudTrail = require('./cloudtrail'); -export import CloudWatch = require('./cloudwatch'); -export import CloudWatchEvents = require('./cloudwatchevents'); -export import CloudWatchLogs = require('./cloudwatchlogs'); -export import CodeCommit = require('./codecommit'); -export import CodeDeploy = require('./codedeploy'); -export import CodePipeline = require('./codepipeline'); -export import CognitoIdentity = require('./cognitoidentity'); -export import CognitoIdentityServiceProvider = require('./cognitoidentityserviceprovider'); -export import CognitoSync = require('./cognitosync'); -export import ConfigService = require('./configservice'); -export import CUR = require('./cur'); -export import DeviceFarm = require('./devicefarm'); -export import DirectConnect = require('./directconnect'); -export import DynamoDB = require('./dynamodb'); -export import DynamoDBStreams = require('./dynamodbstreams'); -export import EC2 = require('./ec2'); -export import ECR = require('./ecr'); -export import ECS = require('./ecs'); -export import EFS = require('./efs'); -export import ElastiCache = require('./elasticache'); -export import ElasticBeanstalk = require('./elasticbeanstalk'); -export import ELB = require('./elb'); -export import ELBv2 = require('./elbv2'); -export import EMR = require('./emr'); -export import ElasticTranscoder = require('./elastictranscoder'); -export import Firehose = require('./firehose'); -export import GameLift = require('./gamelift'); -export import Inspector = require('./inspector'); -export import Iot = require('./iot'); -export import IotData = require('./iotdata'); -export import Kinesis = require('./kinesis'); -export import KMS = require('./kms'); -export import Lambda = require('./lambda'); -export import LexRuntime = require('./lexruntime'); -export import MachineLearning = require('./machinelearning'); -export import MarketplaceCommerceAnalytics = require('./marketplacecommerceanalytics'); -export import MTurk = require('./mturk'); -export import MobileAnalytics = require('./mobileanalytics'); -export import OpsWorks = require('./opsworks'); -export import Polly = require('./polly'); -export import RDS = require('./rds'); -export import Redshift = require('./redshift'); -export import Rekognition = require('./rekognition'); -export import Route53 = require('./route53'); -export import Route53Domains = require('./route53domains'); -export import S3 = require('./s3'); -export import ServiceCatalog = require('./servicecatalog'); -export import SES = require('./ses'); -export import SNS = require('./sns'); -export import SQS = require('./sqs'); -export import SSM = require('./ssm'); -export import StorageGateway = require('./storagegateway'); -export import STS = require('./sts'); -export import WAF = require('./waf'); -export import WorkDocs = require('./workdocs'); diff --git a/workshops/monte-carlo-on-ec2-spot-fleet/src/web/node_modules/aws-sdk/clients/browser_default.js b/workshops/monte-carlo-on-ec2-spot-fleet/src/web/node_modules/aws-sdk/clients/browser_default.js deleted file mode 100644 index dd0216c6..00000000 --- a/workshops/monte-carlo-on-ec2-spot-fleet/src/web/node_modules/aws-sdk/clients/browser_default.js +++ /dev/null @@ -1,66 +0,0 @@ -require('../lib/node_loader'); -module.exports = { - ACM: require('./acm'), - APIGateway: require('./apigateway'), - ApplicationAutoScaling: require('./applicationautoscaling'), - AutoScaling: require('./autoscaling'), - CloudFormation: require('./cloudformation'), - CloudFront: require('./cloudfront'), - CloudHSM: require('./cloudhsm'), - CloudTrail: require('./cloudtrail'), - CloudWatch: require('./cloudwatch'), - CloudWatchEvents: require('./cloudwatchevents'), - CloudWatchLogs: require('./cloudwatchlogs'), - CodeCommit: require('./codecommit'), - CodeDeploy: require('./codedeploy'), - CodePipeline: require('./codepipeline'), - CognitoIdentity: require('./cognitoidentity'), - CognitoIdentityServiceProvider: require('./cognitoidentityserviceprovider'), - CognitoSync: require('./cognitosync'), - ConfigService: require('./configservice'), - CUR: require('./cur'), - DeviceFarm: require('./devicefarm'), - DirectConnect: require('./directconnect'), - DynamoDB: require('./dynamodb'), - DynamoDBStreams: require('./dynamodbstreams'), - EC2: require('./ec2'), - ECR: require('./ecr'), - ECS: require('./ecs'), - EFS: require('./efs'), - ElastiCache: require('./elasticache'), - ElasticBeanstalk: require('./elasticbeanstalk'), - ELB: require('./elb'), - ELBv2: require('./elbv2'), - EMR: require('./emr'), - ElasticTranscoder: require('./elastictranscoder'), - Firehose: require('./firehose'), - GameLift: require('./gamelift'), - Inspector: require('./inspector'), - Iot: require('./iot'), - IotData: require('./iotdata'), - Kinesis: require('./kinesis'), - KMS: require('./kms'), - Lambda: require('./lambda'), - LexRuntime: require('./lexruntime'), - MachineLearning: require('./machinelearning'), - MarketplaceCommerceAnalytics: require('./marketplacecommerceanalytics'), - MTurk: require('./mturk'), - MobileAnalytics: require('./mobileanalytics'), - OpsWorks: require('./opsworks'), - Polly: require('./polly'), - RDS: require('./rds'), - Redshift: require('./redshift'), - Rekognition: require('./rekognition'), - Route53: require('./route53'), - Route53Domains: require('./route53domains'), - S3: require('./s3'), - ServiceCatalog: require('./servicecatalog'), - SES: require('./ses'), - SNS: require('./sns'), - SQS: require('./sqs'), - SSM: require('./ssm'), - StorageGateway: require('./storagegateway'), - STS: require('./sts'), - WAF: require('./waf'), - WorkDocs: require('./workdocs') -}; \ No newline at end of file diff --git a/workshops/monte-carlo-on-ec2-spot-fleet/src/web/node_modules/aws-sdk/clients/budgets.d.ts b/workshops/monte-carlo-on-ec2-spot-fleet/src/web/node_modules/aws-sdk/clients/budgets.d.ts deleted file mode 100644 index 1d8c6c9b..00000000 --- a/workshops/monte-carlo-on-ec2-spot-fleet/src/web/node_modules/aws-sdk/clients/budgets.d.ts +++ /dev/null @@ -1,303 +0,0 @@ -import {Request} from '../lib/request'; -import {Response} from '../lib/response'; -import {AWSError} from '../lib/error'; -import {Service} from '../lib/service'; -import {ServiceConfigurationOptions} from '../lib/service'; -import {ConfigBase as Config} from '../lib/config'; -interface Blob {} -declare class Budgets extends Service { - /** - * Constructs a service object. This object has one method for each API operation. - */ - constructor(options?: Budgets.Types.ClientConfiguration) - config: Config & Budgets.Types.ClientConfiguration; - /** - * Create a new budget - */ - createBudget(params: Budgets.Types.CreateBudgetRequest, callback?: (err: AWSError, data: Budgets.Types.CreateBudgetResponse) => void): Request; - /** - * Create a new budget - */ - createBudget(callback?: (err: AWSError, data: Budgets.Types.CreateBudgetResponse) => void): Request; - /** - * Create a new Notification with subscribers for a budget - */ - createNotification(params: Budgets.Types.CreateNotificationRequest, callback?: (err: AWSError, data: Budgets.Types.CreateNotificationResponse) => void): Request; - /** - * Create a new Notification with subscribers for a budget - */ - createNotification(callback?: (err: AWSError, data: Budgets.Types.CreateNotificationResponse) => void): Request; - /** - * Create a new Subscriber for a notification - */ - createSubscriber(params: Budgets.Types.CreateSubscriberRequest, callback?: (err: AWSError, data: Budgets.Types.CreateSubscriberResponse) => void): Request; - /** - * Create a new Subscriber for a notification - */ - createSubscriber(callback?: (err: AWSError, data: Budgets.Types.CreateSubscriberResponse) => void): Request; - /** - * Delete a budget and related notifications - */ - deleteBudget(params: Budgets.Types.DeleteBudgetRequest, callback?: (err: AWSError, data: Budgets.Types.DeleteBudgetResponse) => void): Request; - /** - * Delete a budget and related notifications - */ - deleteBudget(callback?: (err: AWSError, data: Budgets.Types.DeleteBudgetResponse) => void): Request; - /** - * Delete a notification and related subscribers - */ - deleteNotification(params: Budgets.Types.DeleteNotificationRequest, callback?: (err: AWSError, data: Budgets.Types.DeleteNotificationResponse) => void): Request; - /** - * Delete a notification and related subscribers - */ - deleteNotification(callback?: (err: AWSError, data: Budgets.Types.DeleteNotificationResponse) => void): Request; - /** - * Delete a Subscriber for a notification - */ - deleteSubscriber(params: Budgets.Types.DeleteSubscriberRequest, callback?: (err: AWSError, data: Budgets.Types.DeleteSubscriberResponse) => void): Request; - /** - * Delete a Subscriber for a notification - */ - deleteSubscriber(callback?: (err: AWSError, data: Budgets.Types.DeleteSubscriberResponse) => void): Request; - /** - * Get a single budget - */ - describeBudget(params: Budgets.Types.DescribeBudgetRequest, callback?: (err: AWSError, data: Budgets.Types.DescribeBudgetResponse) => void): Request; - /** - * Get a single budget - */ - describeBudget(callback?: (err: AWSError, data: Budgets.Types.DescribeBudgetResponse) => void): Request; - /** - * Get all budgets for an account - */ - describeBudgets(params: Budgets.Types.DescribeBudgetsRequest, callback?: (err: AWSError, data: Budgets.Types.DescribeBudgetsResponse) => void): Request; - /** - * Get all budgets for an account - */ - describeBudgets(callback?: (err: AWSError, data: Budgets.Types.DescribeBudgetsResponse) => void): Request; - /** - * Get notifications of a budget - */ - describeNotificationsForBudget(params: Budgets.Types.DescribeNotificationsForBudgetRequest, callback?: (err: AWSError, data: Budgets.Types.DescribeNotificationsForBudgetResponse) => void): Request; - /** - * Get notifications of a budget - */ - describeNotificationsForBudget(callback?: (err: AWSError, data: Budgets.Types.DescribeNotificationsForBudgetResponse) => void): Request; - /** - * Get subscribers of a notification - */ - describeSubscribersForNotification(params: Budgets.Types.DescribeSubscribersForNotificationRequest, callback?: (err: AWSError, data: Budgets.Types.DescribeSubscribersForNotificationResponse) => void): Request; - /** - * Get subscribers of a notification - */ - describeSubscribersForNotification(callback?: (err: AWSError, data: Budgets.Types.DescribeSubscribersForNotificationResponse) => void): Request; - /** - * Update the information of a budget already created - */ - updateBudget(params: Budgets.Types.UpdateBudgetRequest, callback?: (err: AWSError, data: Budgets.Types.UpdateBudgetResponse) => void): Request; - /** - * Update the information of a budget already created - */ - updateBudget(callback?: (err: AWSError, data: Budgets.Types.UpdateBudgetResponse) => void): Request; - /** - * Update the information about a notification already created - */ - updateNotification(params: Budgets.Types.UpdateNotificationRequest, callback?: (err: AWSError, data: Budgets.Types.UpdateNotificationResponse) => void): Request; - /** - * Update the information about a notification already created - */ - updateNotification(callback?: (err: AWSError, data: Budgets.Types.UpdateNotificationResponse) => void): Request; - /** - * Update a subscriber - */ - updateSubscriber(params: Budgets.Types.UpdateSubscriberRequest, callback?: (err: AWSError, data: Budgets.Types.UpdateSubscriberResponse) => void): Request; - /** - * Update a subscriber - */ - updateSubscriber(callback?: (err: AWSError, data: Budgets.Types.UpdateSubscriberResponse) => void): Request; -} -declare namespace Budgets { - export type AccountId = string; - export interface Budget { - BudgetName: BudgetName; - BudgetLimit: Spend; - CostFilters?: CostFilters; - CostTypes: CostTypes; - TimeUnit: TimeUnit; - TimePeriod: TimePeriod; - CalculatedSpend?: CalculatedSpend; - BudgetType: BudgetType; - } - export type BudgetName = string; - export type BudgetType = "USAGE"|"COST"|"RI_UTILIZATION"|string; - export type Budgets = Budget[]; - export interface CalculatedSpend { - ActualSpend: Spend; - ForecastedSpend?: Spend; - } - export type ComparisonOperator = "GREATER_THAN"|"LESS_THAN"|"EQUAL_TO"|string; - export type CostFilters = {[key: string]: DimensionValues}; - export interface CostTypes { - IncludeTax: GenericBoolean; - IncludeSubscription: GenericBoolean; - UseBlended: GenericBoolean; - } - export interface CreateBudgetRequest { - AccountId: AccountId; - Budget: Budget; - NotificationsWithSubscribers?: NotificationWithSubscribersList; - } - export interface CreateBudgetResponse { - } - export interface CreateNotificationRequest { - AccountId: AccountId; - BudgetName: BudgetName; - Notification: Notification; - Subscribers: Subscribers; - } - export interface CreateNotificationResponse { - } - export interface CreateSubscriberRequest { - AccountId: AccountId; - BudgetName: BudgetName; - Notification: Notification; - Subscriber: Subscriber; - } - export interface CreateSubscriberResponse { - } - export interface DeleteBudgetRequest { - AccountId: AccountId; - BudgetName: BudgetName; - } - export interface DeleteBudgetResponse { - } - export interface DeleteNotificationRequest { - AccountId: AccountId; - BudgetName: BudgetName; - Notification: Notification; - } - export interface DeleteNotificationResponse { - } - export interface DeleteSubscriberRequest { - AccountId: AccountId; - BudgetName: BudgetName; - Notification: Notification; - Subscriber: Subscriber; - } - export interface DeleteSubscriberResponse { - } - export interface DescribeBudgetRequest { - AccountId: AccountId; - BudgetName: BudgetName; - } - export interface DescribeBudgetResponse { - Budget?: Budget; - } - export interface DescribeBudgetsRequest { - AccountId: AccountId; - MaxResults?: MaxResults; - NextToken?: GenericString; - } - export interface DescribeBudgetsResponse { - Budgets?: Budgets; - NextToken?: GenericString; - } - export interface DescribeNotificationsForBudgetRequest { - AccountId: AccountId; - BudgetName: BudgetName; - MaxResults?: MaxResults; - NextToken?: GenericString; - } - export interface DescribeNotificationsForBudgetResponse { - Notifications?: Notifications; - NextToken?: GenericString; - } - export interface DescribeSubscribersForNotificationRequest { - AccountId: AccountId; - BudgetName: BudgetName; - Notification: Notification; - MaxResults?: MaxResults; - NextToken?: GenericString; - } - export interface DescribeSubscribersForNotificationResponse { - Subscribers?: Subscribers; - NextToken?: GenericString; - } - export type DimensionValues = GenericString[]; - export type GenericBoolean = boolean; - export type GenericString = string; - export type GenericTimestamp = Date; - export type MaxResults = number; - export interface Notification { - NotificationType: NotificationType; - ComparisonOperator: ComparisonOperator; - Threshold: NotificationThreshold; - ThresholdType?: ThresholdType; - } - export type NotificationThreshold = number; - export type NotificationType = "ACTUAL"|"FORECASTED"|string; - export interface NotificationWithSubscribers { - Notification: Notification; - Subscribers: Subscribers; - } - export type NotificationWithSubscribersList = NotificationWithSubscribers[]; - export type Notifications = Notification[]; - export type NumericValue = string; - export interface Spend { - Amount: NumericValue; - Unit: UnitValue; - } - export interface Subscriber { - SubscriptionType: SubscriptionType; - Address: GenericString; - } - export type Subscribers = Subscriber[]; - export type SubscriptionType = "SNS"|"EMAIL"|string; - export type ThresholdType = "PERCENTAGE"|"ABSOLUTE_VALUE"|string; - export interface TimePeriod { - Start: GenericTimestamp; - End: GenericTimestamp; - } - export type TimeUnit = "DAILY"|"MONTHLY"|"QUARTERLY"|"ANNUALLY"|string; - export type UnitValue = string; - export interface UpdateBudgetRequest { - AccountId: AccountId; - NewBudget: Budget; - } - export interface UpdateBudgetResponse { - } - export interface UpdateNotificationRequest { - AccountId: AccountId; - BudgetName: BudgetName; - OldNotification: Notification; - NewNotification: Notification; - } - export interface UpdateNotificationResponse { - } - export interface UpdateSubscriberRequest { - AccountId: AccountId; - BudgetName: BudgetName; - Notification: Notification; - OldSubscriber: Subscriber; - NewSubscriber: Subscriber; - } - export interface UpdateSubscriberResponse { - } - export type errorMessage = string; - /** - * A string in YYYY-MM-DD format that represents the latest possible API version that can be used in this service. Specify 'latest' to use the latest possible version. - */ - export type apiVersion = "2016-10-20"|"latest"|string; - export interface ClientApiVersions { - /** - * A string in YYYY-MM-DD format that represents the latest possible API version that can be used in this service. Specify 'latest' to use the latest possible version. - */ - apiVersion?: apiVersion; - } - export type ClientConfiguration = ServiceConfigurationOptions & ClientApiVersions; - /** - * Contains interfaces for use with the Budgets client. - */ - export import Types = Budgets; -} -export = Budgets; diff --git a/workshops/monte-carlo-on-ec2-spot-fleet/src/web/node_modules/aws-sdk/clients/budgets.js b/workshops/monte-carlo-on-ec2-spot-fleet/src/web/node_modules/aws-sdk/clients/budgets.js deleted file mode 100644 index 2cd56808..00000000 --- a/workshops/monte-carlo-on-ec2-spot-fleet/src/web/node_modules/aws-sdk/clients/budgets.js +++ /dev/null @@ -1,18 +0,0 @@ -require('../lib/node_loader'); -var AWS = require('../lib/core'); -var Service = AWS.Service; -var apiLoader = AWS.apiLoader; - -apiLoader.services['budgets'] = {}; -AWS.Budgets = Service.defineService('budgets', ['2016-10-20']); -Object.defineProperty(apiLoader.services['budgets'], '2016-10-20', { - get: function get() { - var model = require('../apis/budgets-2016-10-20.min.json'); - model.paginators = require('../apis/budgets-2016-10-20.paginators.json').pagination; - return model; - }, - enumerable: true, - configurable: true -}); - -module.exports = AWS.Budgets; diff --git a/workshops/monte-carlo-on-ec2-spot-fleet/src/web/node_modules/aws-sdk/clients/clouddirectory.d.ts b/workshops/monte-carlo-on-ec2-spot-fleet/src/web/node_modules/aws-sdk/clients/clouddirectory.d.ts deleted file mode 100644 index aecf6fe4..00000000 --- a/workshops/monte-carlo-on-ec2-spot-fleet/src/web/node_modules/aws-sdk/clients/clouddirectory.d.ts +++ /dev/null @@ -1,2940 +0,0 @@ -import {Request} from '../lib/request'; -import {Response} from '../lib/response'; -import {AWSError} from '../lib/error'; -import {Service} from '../lib/service'; -import {ServiceConfigurationOptions} from '../lib/service'; -import {ConfigBase as Config} from '../lib/config'; -interface Blob {} -declare class CloudDirectory extends Service { - /** - * Constructs a service object. This object has one method for each API operation. - */ - constructor(options?: CloudDirectory.Types.ClientConfiguration) - config: Config & CloudDirectory.Types.ClientConfiguration; - /** - * Adds a new Facet to an object. - */ - addFacetToObject(params: CloudDirectory.Types.AddFacetToObjectRequest, callback?: (err: AWSError, data: CloudDirectory.Types.AddFacetToObjectResponse) => void): Request; - /** - * Adds a new Facet to an object. - */ - addFacetToObject(callback?: (err: AWSError, data: CloudDirectory.Types.AddFacetToObjectResponse) => void): Request; - /** - * Copies the input published schema into the Directory with the same name and version as that of the published schema . - */ - applySchema(params: CloudDirectory.Types.ApplySchemaRequest, callback?: (err: AWSError, data: CloudDirectory.Types.ApplySchemaResponse) => void): Request; - /** - * Copies the input published schema into the Directory with the same name and version as that of the published schema . - */ - applySchema(callback?: (err: AWSError, data: CloudDirectory.Types.ApplySchemaResponse) => void): Request; - /** - * Attaches an existing object to another object. An object can be accessed in two ways: Using the path Using ObjectIdentifier - */ - attachObject(params: CloudDirectory.Types.AttachObjectRequest, callback?: (err: AWSError, data: CloudDirectory.Types.AttachObjectResponse) => void): Request; - /** - * Attaches an existing object to another object. An object can be accessed in two ways: Using the path Using ObjectIdentifier - */ - attachObject(callback?: (err: AWSError, data: CloudDirectory.Types.AttachObjectResponse) => void): Request; - /** - * Attaches a policy object to a regular object. An object can have a limited number of attached policies. - */ - attachPolicy(params: CloudDirectory.Types.AttachPolicyRequest, callback?: (err: AWSError, data: CloudDirectory.Types.AttachPolicyResponse) => void): Request; - /** - * Attaches a policy object to a regular object. An object can have a limited number of attached policies. - */ - attachPolicy(callback?: (err: AWSError, data: CloudDirectory.Types.AttachPolicyResponse) => void): Request; - /** - * Attaches the specified object to the specified index. - */ - attachToIndex(params: CloudDirectory.Types.AttachToIndexRequest, callback?: (err: AWSError, data: CloudDirectory.Types.AttachToIndexResponse) => void): Request; - /** - * Attaches the specified object to the specified index. - */ - attachToIndex(callback?: (err: AWSError, data: CloudDirectory.Types.AttachToIndexResponse) => void): Request; - /** - * Attaches a typed link to a specified source and target object. For more information, see Typed link. - */ - attachTypedLink(params: CloudDirectory.Types.AttachTypedLinkRequest, callback?: (err: AWSError, data: CloudDirectory.Types.AttachTypedLinkResponse) => void): Request; - /** - * Attaches a typed link to a specified source and target object. For more information, see Typed link. - */ - attachTypedLink(callback?: (err: AWSError, data: CloudDirectory.Types.AttachTypedLinkResponse) => void): Request; - /** - * Performs all the read operations in a batch. - */ - batchRead(params: CloudDirectory.Types.BatchReadRequest, callback?: (err: AWSError, data: CloudDirectory.Types.BatchReadResponse) => void): Request; - /** - * Performs all the read operations in a batch. - */ - batchRead(callback?: (err: AWSError, data: CloudDirectory.Types.BatchReadResponse) => void): Request; - /** - * Performs all the write operations in a batch. Either all the operations succeed or none. Batch writes supports only object-related operations. - */ - batchWrite(params: CloudDirectory.Types.BatchWriteRequest, callback?: (err: AWSError, data: CloudDirectory.Types.BatchWriteResponse) => void): Request; - /** - * Performs all the write operations in a batch. Either all the operations succeed or none. Batch writes supports only object-related operations. - */ - batchWrite(callback?: (err: AWSError, data: CloudDirectory.Types.BatchWriteResponse) => void): Request; - /** - * Creates a Directory by copying the published schema into the directory. A directory cannot be created without a schema. - */ - createDirectory(params: CloudDirectory.Types.CreateDirectoryRequest, callback?: (err: AWSError, data: CloudDirectory.Types.CreateDirectoryResponse) => void): Request; - /** - * Creates a Directory by copying the published schema into the directory. A directory cannot be created without a schema. - */ - createDirectory(callback?: (err: AWSError, data: CloudDirectory.Types.CreateDirectoryResponse) => void): Request; - /** - * Creates a new Facet in a schema. Facet creation is allowed only in development or applied schemas. - */ - createFacet(params: CloudDirectory.Types.CreateFacetRequest, callback?: (err: AWSError, data: CloudDirectory.Types.CreateFacetResponse) => void): Request; - /** - * Creates a new Facet in a schema. Facet creation is allowed only in development or applied schemas. - */ - createFacet(callback?: (err: AWSError, data: CloudDirectory.Types.CreateFacetResponse) => void): Request; - /** - * Creates an index object. See Indexing for more information. - */ - createIndex(params: CloudDirectory.Types.CreateIndexRequest, callback?: (err: AWSError, data: CloudDirectory.Types.CreateIndexResponse) => void): Request; - /** - * Creates an index object. See Indexing for more information. - */ - createIndex(callback?: (err: AWSError, data: CloudDirectory.Types.CreateIndexResponse) => void): Request; - /** - * Creates an object in a Directory. Additionally attaches the object to a parent, if a parent reference and LinkName is specified. An object is simply a collection of Facet attributes. You can also use this API call to create a policy object, if the facet from which you create the object is a policy facet. - */ - createObject(params: CloudDirectory.Types.CreateObjectRequest, callback?: (err: AWSError, data: CloudDirectory.Types.CreateObjectResponse) => void): Request; - /** - * Creates an object in a Directory. Additionally attaches the object to a parent, if a parent reference and LinkName is specified. An object is simply a collection of Facet attributes. You can also use this API call to create a policy object, if the facet from which you create the object is a policy facet. - */ - createObject(callback?: (err: AWSError, data: CloudDirectory.Types.CreateObjectResponse) => void): Request; - /** - * Creates a new schema in a development state. A schema can exist in three phases: Development: This is a mutable phase of the schema. All new schemas are in the development phase. Once the schema is finalized, it can be published. Published: Published schemas are immutable and have a version associated with them. Applied: Applied schemas are mutable in a way that allows you to add new schema facets. You can also add new, nonrequired attributes to existing schema facets. You can apply only published schemas to directories. - */ - createSchema(params: CloudDirectory.Types.CreateSchemaRequest, callback?: (err: AWSError, data: CloudDirectory.Types.CreateSchemaResponse) => void): Request; - /** - * Creates a new schema in a development state. A schema can exist in three phases: Development: This is a mutable phase of the schema. All new schemas are in the development phase. Once the schema is finalized, it can be published. Published: Published schemas are immutable and have a version associated with them. Applied: Applied schemas are mutable in a way that allows you to add new schema facets. You can also add new, nonrequired attributes to existing schema facets. You can apply only published schemas to directories. - */ - createSchema(callback?: (err: AWSError, data: CloudDirectory.Types.CreateSchemaResponse) => void): Request; - /** - * Creates a TypedLinkFacet. For more information, see Typed link. - */ - createTypedLinkFacet(params: CloudDirectory.Types.CreateTypedLinkFacetRequest, callback?: (err: AWSError, data: CloudDirectory.Types.CreateTypedLinkFacetResponse) => void): Request; - /** - * Creates a TypedLinkFacet. For more information, see Typed link. - */ - createTypedLinkFacet(callback?: (err: AWSError, data: CloudDirectory.Types.CreateTypedLinkFacetResponse) => void): Request; - /** - * Deletes a directory. Only disabled directories can be deleted. A deleted directory cannot be undone. Exercise extreme caution when deleting directories. - */ - deleteDirectory(params: CloudDirectory.Types.DeleteDirectoryRequest, callback?: (err: AWSError, data: CloudDirectory.Types.DeleteDirectoryResponse) => void): Request; - /** - * Deletes a directory. Only disabled directories can be deleted. A deleted directory cannot be undone. Exercise extreme caution when deleting directories. - */ - deleteDirectory(callback?: (err: AWSError, data: CloudDirectory.Types.DeleteDirectoryResponse) => void): Request; - /** - * Deletes a given Facet. All attributes and Rules that are associated with the facet will be deleted. Only development schema facets are allowed deletion. - */ - deleteFacet(params: CloudDirectory.Types.DeleteFacetRequest, callback?: (err: AWSError, data: CloudDirectory.Types.DeleteFacetResponse) => void): Request; - /** - * Deletes a given Facet. All attributes and Rules that are associated with the facet will be deleted. Only development schema facets are allowed deletion. - */ - deleteFacet(callback?: (err: AWSError, data: CloudDirectory.Types.DeleteFacetResponse) => void): Request; - /** - * Deletes an object and its associated attributes. Only objects with no children and no parents can be deleted. - */ - deleteObject(params: CloudDirectory.Types.DeleteObjectRequest, callback?: (err: AWSError, data: CloudDirectory.Types.DeleteObjectResponse) => void): Request; - /** - * Deletes an object and its associated attributes. Only objects with no children and no parents can be deleted. - */ - deleteObject(callback?: (err: AWSError, data: CloudDirectory.Types.DeleteObjectResponse) => void): Request; - /** - * Deletes a given schema. Schemas in a development and published state can only be deleted. - */ - deleteSchema(params: CloudDirectory.Types.DeleteSchemaRequest, callback?: (err: AWSError, data: CloudDirectory.Types.DeleteSchemaResponse) => void): Request; - /** - * Deletes a given schema. Schemas in a development and published state can only be deleted. - */ - deleteSchema(callback?: (err: AWSError, data: CloudDirectory.Types.DeleteSchemaResponse) => void): Request; - /** - * Deletes a TypedLinkFacet. For more information, see Typed link. - */ - deleteTypedLinkFacet(params: CloudDirectory.Types.DeleteTypedLinkFacetRequest, callback?: (err: AWSError, data: CloudDirectory.Types.DeleteTypedLinkFacetResponse) => void): Request; - /** - * Deletes a TypedLinkFacet. For more information, see Typed link. - */ - deleteTypedLinkFacet(callback?: (err: AWSError, data: CloudDirectory.Types.DeleteTypedLinkFacetResponse) => void): Request; - /** - * Detaches the specified object from the specified index. - */ - detachFromIndex(params: CloudDirectory.Types.DetachFromIndexRequest, callback?: (err: AWSError, data: CloudDirectory.Types.DetachFromIndexResponse) => void): Request; - /** - * Detaches the specified object from the specified index. - */ - detachFromIndex(callback?: (err: AWSError, data: CloudDirectory.Types.DetachFromIndexResponse) => void): Request; - /** - * Detaches a given object from the parent object. The object that is to be detached from the parent is specified by the link name. - */ - detachObject(params: CloudDirectory.Types.DetachObjectRequest, callback?: (err: AWSError, data: CloudDirectory.Types.DetachObjectResponse) => void): Request; - /** - * Detaches a given object from the parent object. The object that is to be detached from the parent is specified by the link name. - */ - detachObject(callback?: (err: AWSError, data: CloudDirectory.Types.DetachObjectResponse) => void): Request; - /** - * Detaches a policy from an object. - */ - detachPolicy(params: CloudDirectory.Types.DetachPolicyRequest, callback?: (err: AWSError, data: CloudDirectory.Types.DetachPolicyResponse) => void): Request; - /** - * Detaches a policy from an object. - */ - detachPolicy(callback?: (err: AWSError, data: CloudDirectory.Types.DetachPolicyResponse) => void): Request; - /** - * Detaches a typed link from a specified source and target object. For more information, see Typed link. - */ - detachTypedLink(params: CloudDirectory.Types.DetachTypedLinkRequest, callback?: (err: AWSError, data: {}) => void): Request<{}, AWSError>; - /** - * Detaches a typed link from a specified source and target object. For more information, see Typed link. - */ - detachTypedLink(callback?: (err: AWSError, data: {}) => void): Request<{}, AWSError>; - /** - * Disables the specified directory. Disabled directories cannot be read or written to. Only enabled directories can be disabled. Disabled directories may be reenabled. - */ - disableDirectory(params: CloudDirectory.Types.DisableDirectoryRequest, callback?: (err: AWSError, data: CloudDirectory.Types.DisableDirectoryResponse) => void): Request; - /** - * Disables the specified directory. Disabled directories cannot be read or written to. Only enabled directories can be disabled. Disabled directories may be reenabled. - */ - disableDirectory(callback?: (err: AWSError, data: CloudDirectory.Types.DisableDirectoryResponse) => void): Request; - /** - * Enables the specified directory. Only disabled directories can be enabled. Once enabled, the directory can then be read and written to. - */ - enableDirectory(params: CloudDirectory.Types.EnableDirectoryRequest, callback?: (err: AWSError, data: CloudDirectory.Types.EnableDirectoryResponse) => void): Request; - /** - * Enables the specified directory. Only disabled directories can be enabled. Once enabled, the directory can then be read and written to. - */ - enableDirectory(callback?: (err: AWSError, data: CloudDirectory.Types.EnableDirectoryResponse) => void): Request; - /** - * Retrieves metadata about a directory. - */ - getDirectory(params: CloudDirectory.Types.GetDirectoryRequest, callback?: (err: AWSError, data: CloudDirectory.Types.GetDirectoryResponse) => void): Request; - /** - * Retrieves metadata about a directory. - */ - getDirectory(callback?: (err: AWSError, data: CloudDirectory.Types.GetDirectoryResponse) => void): Request; - /** - * Gets details of the Facet, such as facet name, attributes, Rules, or ObjectType. You can call this on all kinds of schema facets -- published, development, or applied. - */ - getFacet(params: CloudDirectory.Types.GetFacetRequest, callback?: (err: AWSError, data: CloudDirectory.Types.GetFacetResponse) => void): Request; - /** - * Gets details of the Facet, such as facet name, attributes, Rules, or ObjectType. You can call this on all kinds of schema facets -- published, development, or applied. - */ - getFacet(callback?: (err: AWSError, data: CloudDirectory.Types.GetFacetResponse) => void): Request; - /** - * Retrieves metadata about an object. - */ - getObjectInformation(params: CloudDirectory.Types.GetObjectInformationRequest, callback?: (err: AWSError, data: CloudDirectory.Types.GetObjectInformationResponse) => void): Request; - /** - * Retrieves metadata about an object. - */ - getObjectInformation(callback?: (err: AWSError, data: CloudDirectory.Types.GetObjectInformationResponse) => void): Request; - /** - * Retrieves a JSON representation of the schema. See JSON Schema Format for more information. - */ - getSchemaAsJson(params: CloudDirectory.Types.GetSchemaAsJsonRequest, callback?: (err: AWSError, data: CloudDirectory.Types.GetSchemaAsJsonResponse) => void): Request; - /** - * Retrieves a JSON representation of the schema. See JSON Schema Format for more information. - */ - getSchemaAsJson(callback?: (err: AWSError, data: CloudDirectory.Types.GetSchemaAsJsonResponse) => void): Request; - /** - * Returns the identity attribute order for a specific TypedLinkFacet. For more information, see Typed link. - */ - getTypedLinkFacetInformation(params: CloudDirectory.Types.GetTypedLinkFacetInformationRequest, callback?: (err: AWSError, data: CloudDirectory.Types.GetTypedLinkFacetInformationResponse) => void): Request; - /** - * Returns the identity attribute order for a specific TypedLinkFacet. For more information, see Typed link. - */ - getTypedLinkFacetInformation(callback?: (err: AWSError, data: CloudDirectory.Types.GetTypedLinkFacetInformationResponse) => void): Request; - /** - * Lists schemas applied to a directory. - */ - listAppliedSchemaArns(params: CloudDirectory.Types.ListAppliedSchemaArnsRequest, callback?: (err: AWSError, data: CloudDirectory.Types.ListAppliedSchemaArnsResponse) => void): Request; - /** - * Lists schemas applied to a directory. - */ - listAppliedSchemaArns(callback?: (err: AWSError, data: CloudDirectory.Types.ListAppliedSchemaArnsResponse) => void): Request; - /** - * Lists indices attached to an object. - */ - listAttachedIndices(params: CloudDirectory.Types.ListAttachedIndicesRequest, callback?: (err: AWSError, data: CloudDirectory.Types.ListAttachedIndicesResponse) => void): Request; - /** - * Lists indices attached to an object. - */ - listAttachedIndices(callback?: (err: AWSError, data: CloudDirectory.Types.ListAttachedIndicesResponse) => void): Request; - /** - * Retrieves each Amazon Resource Name (ARN) of schemas in the development state. - */ - listDevelopmentSchemaArns(params: CloudDirectory.Types.ListDevelopmentSchemaArnsRequest, callback?: (err: AWSError, data: CloudDirectory.Types.ListDevelopmentSchemaArnsResponse) => void): Request; - /** - * Retrieves each Amazon Resource Name (ARN) of schemas in the development state. - */ - listDevelopmentSchemaArns(callback?: (err: AWSError, data: CloudDirectory.Types.ListDevelopmentSchemaArnsResponse) => void): Request; - /** - * Lists directories created within an account. - */ - listDirectories(params: CloudDirectory.Types.ListDirectoriesRequest, callback?: (err: AWSError, data: CloudDirectory.Types.ListDirectoriesResponse) => void): Request; - /** - * Lists directories created within an account. - */ - listDirectories(callback?: (err: AWSError, data: CloudDirectory.Types.ListDirectoriesResponse) => void): Request; - /** - * Retrieves attributes attached to the facet. - */ - listFacetAttributes(params: CloudDirectory.Types.ListFacetAttributesRequest, callback?: (err: AWSError, data: CloudDirectory.Types.ListFacetAttributesResponse) => void): Request; - /** - * Retrieves attributes attached to the facet. - */ - listFacetAttributes(callback?: (err: AWSError, data: CloudDirectory.Types.ListFacetAttributesResponse) => void): Request; - /** - * Retrieves the names of facets that exist in a schema. - */ - listFacetNames(params: CloudDirectory.Types.ListFacetNamesRequest, callback?: (err: AWSError, data: CloudDirectory.Types.ListFacetNamesResponse) => void): Request; - /** - * Retrieves the names of facets that exist in a schema. - */ - listFacetNames(callback?: (err: AWSError, data: CloudDirectory.Types.ListFacetNamesResponse) => void): Request; - /** - * Returns a paginated list of all the incoming TypedLinkSpecifier information for an object. It also supports filtering by typed link facet and identity attributes. For more information, see Typed link. - */ - listIncomingTypedLinks(params: CloudDirectory.Types.ListIncomingTypedLinksRequest, callback?: (err: AWSError, data: CloudDirectory.Types.ListIncomingTypedLinksResponse) => void): Request; - /** - * Returns a paginated list of all the incoming TypedLinkSpecifier information for an object. It also supports filtering by typed link facet and identity attributes. For more information, see Typed link. - */ - listIncomingTypedLinks(callback?: (err: AWSError, data: CloudDirectory.Types.ListIncomingTypedLinksResponse) => void): Request; - /** - * Lists objects attached to the specified index. - */ - listIndex(params: CloudDirectory.Types.ListIndexRequest, callback?: (err: AWSError, data: CloudDirectory.Types.ListIndexResponse) => void): Request; - /** - * Lists objects attached to the specified index. - */ - listIndex(callback?: (err: AWSError, data: CloudDirectory.Types.ListIndexResponse) => void): Request; - /** - * Lists all attributes that are associated with an object. - */ - listObjectAttributes(params: CloudDirectory.Types.ListObjectAttributesRequest, callback?: (err: AWSError, data: CloudDirectory.Types.ListObjectAttributesResponse) => void): Request; - /** - * Lists all attributes that are associated with an object. - */ - listObjectAttributes(callback?: (err: AWSError, data: CloudDirectory.Types.ListObjectAttributesResponse) => void): Request; - /** - * Returns a paginated list of child objects that are associated with a given object. - */ - listObjectChildren(params: CloudDirectory.Types.ListObjectChildrenRequest, callback?: (err: AWSError, data: CloudDirectory.Types.ListObjectChildrenResponse) => void): Request; - /** - * Returns a paginated list of child objects that are associated with a given object. - */ - listObjectChildren(callback?: (err: AWSError, data: CloudDirectory.Types.ListObjectChildrenResponse) => void): Request; - /** - * Retrieves all available parent paths for any object type such as node, leaf node, policy node, and index node objects. For more information about objects, see Directory Structure. Use this API to evaluate all parents for an object. The call returns all objects from the root of the directory up to the requested object. The API returns the number of paths based on user-defined MaxResults, in case there are multiple paths to the parent. The order of the paths and nodes returned is consistent among multiple API calls unless the objects are deleted or moved. Paths not leading to the directory root are ignored from the target object. - */ - listObjectParentPaths(params: CloudDirectory.Types.ListObjectParentPathsRequest, callback?: (err: AWSError, data: CloudDirectory.Types.ListObjectParentPathsResponse) => void): Request; - /** - * Retrieves all available parent paths for any object type such as node, leaf node, policy node, and index node objects. For more information about objects, see Directory Structure. Use this API to evaluate all parents for an object. The call returns all objects from the root of the directory up to the requested object. The API returns the number of paths based on user-defined MaxResults, in case there are multiple paths to the parent. The order of the paths and nodes returned is consistent among multiple API calls unless the objects are deleted or moved. Paths not leading to the directory root are ignored from the target object. - */ - listObjectParentPaths(callback?: (err: AWSError, data: CloudDirectory.Types.ListObjectParentPathsResponse) => void): Request; - /** - * Lists parent objects that are associated with a given object in pagination fashion. - */ - listObjectParents(params: CloudDirectory.Types.ListObjectParentsRequest, callback?: (err: AWSError, data: CloudDirectory.Types.ListObjectParentsResponse) => void): Request; - /** - * Lists parent objects that are associated with a given object in pagination fashion. - */ - listObjectParents(callback?: (err: AWSError, data: CloudDirectory.Types.ListObjectParentsResponse) => void): Request; - /** - * Returns policies attached to an object in pagination fashion. - */ - listObjectPolicies(params: CloudDirectory.Types.ListObjectPoliciesRequest, callback?: (err: AWSError, data: CloudDirectory.Types.ListObjectPoliciesResponse) => void): Request; - /** - * Returns policies attached to an object in pagination fashion. - */ - listObjectPolicies(callback?: (err: AWSError, data: CloudDirectory.Types.ListObjectPoliciesResponse) => void): Request; - /** - * Returns a paginated list of all the outgoing TypedLinkSpecifier information for an object. It also supports filtering by typed link facet and identity attributes. For more information, see Typed link. - */ - listOutgoingTypedLinks(params: CloudDirectory.Types.ListOutgoingTypedLinksRequest, callback?: (err: AWSError, data: CloudDirectory.Types.ListOutgoingTypedLinksResponse) => void): Request; - /** - * Returns a paginated list of all the outgoing TypedLinkSpecifier information for an object. It also supports filtering by typed link facet and identity attributes. For more information, see Typed link. - */ - listOutgoingTypedLinks(callback?: (err: AWSError, data: CloudDirectory.Types.ListOutgoingTypedLinksResponse) => void): Request; - /** - * Returns all of the ObjectIdentifiers to which a given policy is attached. - */ - listPolicyAttachments(params: CloudDirectory.Types.ListPolicyAttachmentsRequest, callback?: (err: AWSError, data: CloudDirectory.Types.ListPolicyAttachmentsResponse) => void): Request; - /** - * Returns all of the ObjectIdentifiers to which a given policy is attached. - */ - listPolicyAttachments(callback?: (err: AWSError, data: CloudDirectory.Types.ListPolicyAttachmentsResponse) => void): Request; - /** - * Retrieves each published schema Amazon Resource Name (ARN). - */ - listPublishedSchemaArns(params: CloudDirectory.Types.ListPublishedSchemaArnsRequest, callback?: (err: AWSError, data: CloudDirectory.Types.ListPublishedSchemaArnsResponse) => void): Request; - /** - * Retrieves each published schema Amazon Resource Name (ARN). - */ - listPublishedSchemaArns(callback?: (err: AWSError, data: CloudDirectory.Types.ListPublishedSchemaArnsResponse) => void): Request; - /** - * Returns tags for a resource. Tagging is currently supported only for directories with a limit of 50 tags per directory. All 50 tags are returned for a given directory with this API call. - */ - listTagsForResource(params: CloudDirectory.Types.ListTagsForResourceRequest, callback?: (err: AWSError, data: CloudDirectory.Types.ListTagsForResourceResponse) => void): Request; - /** - * Returns tags for a resource. Tagging is currently supported only for directories with a limit of 50 tags per directory. All 50 tags are returned for a given directory with this API call. - */ - listTagsForResource(callback?: (err: AWSError, data: CloudDirectory.Types.ListTagsForResourceResponse) => void): Request; - /** - * Returns a paginated list of all attribute definitions for a particular TypedLinkFacet. For more information, see Typed link. - */ - listTypedLinkFacetAttributes(params: CloudDirectory.Types.ListTypedLinkFacetAttributesRequest, callback?: (err: AWSError, data: CloudDirectory.Types.ListTypedLinkFacetAttributesResponse) => void): Request; - /** - * Returns a paginated list of all attribute definitions for a particular TypedLinkFacet. For more information, see Typed link. - */ - listTypedLinkFacetAttributes(callback?: (err: AWSError, data: CloudDirectory.Types.ListTypedLinkFacetAttributesResponse) => void): Request; - /** - * Returns a paginated list of TypedLink facet names for a particular schema. For more information, see Typed link. - */ - listTypedLinkFacetNames(params: CloudDirectory.Types.ListTypedLinkFacetNamesRequest, callback?: (err: AWSError, data: CloudDirectory.Types.ListTypedLinkFacetNamesResponse) => void): Request; - /** - * Returns a paginated list of TypedLink facet names for a particular schema. For more information, see Typed link. - */ - listTypedLinkFacetNames(callback?: (err: AWSError, data: CloudDirectory.Types.ListTypedLinkFacetNamesResponse) => void): Request; - /** - * Lists all policies from the root of the Directory to the object specified. If there are no policies present, an empty list is returned. If policies are present, and if some objects don't have the policies attached, it returns the ObjectIdentifier for such objects. If policies are present, it returns ObjectIdentifier, policyId, and policyType. Paths that don't lead to the root from the target object are ignored. For more information, see Policies. - */ - lookupPolicy(params: CloudDirectory.Types.LookupPolicyRequest, callback?: (err: AWSError, data: CloudDirectory.Types.LookupPolicyResponse) => void): Request; - /** - * Lists all policies from the root of the Directory to the object specified. If there are no policies present, an empty list is returned. If policies are present, and if some objects don't have the policies attached, it returns the ObjectIdentifier for such objects. If policies are present, it returns ObjectIdentifier, policyId, and policyType. Paths that don't lead to the root from the target object are ignored. For more information, see Policies. - */ - lookupPolicy(callback?: (err: AWSError, data: CloudDirectory.Types.LookupPolicyResponse) => void): Request; - /** - * Publishes a development schema with a version. If description and attributes are specified, PublishSchema overrides the development schema description and attributes. If not, the development schema description and attributes are used. - */ - publishSchema(params: CloudDirectory.Types.PublishSchemaRequest, callback?: (err: AWSError, data: CloudDirectory.Types.PublishSchemaResponse) => void): Request; - /** - * Publishes a development schema with a version. If description and attributes are specified, PublishSchema overrides the development schema description and attributes. If not, the development schema description and attributes are used. - */ - publishSchema(callback?: (err: AWSError, data: CloudDirectory.Types.PublishSchemaResponse) => void): Request; - /** - * Allows a schema to be updated using JSON upload. Only available for development schemas. See JSON Schema Format for more information. - */ - putSchemaFromJson(params: CloudDirectory.Types.PutSchemaFromJsonRequest, callback?: (err: AWSError, data: CloudDirectory.Types.PutSchemaFromJsonResponse) => void): Request; - /** - * Allows a schema to be updated using JSON upload. Only available for development schemas. See JSON Schema Format for more information. - */ - putSchemaFromJson(callback?: (err: AWSError, data: CloudDirectory.Types.PutSchemaFromJsonResponse) => void): Request; - /** - * Removes the specified facet from the specified object. - */ - removeFacetFromObject(params: CloudDirectory.Types.RemoveFacetFromObjectRequest, callback?: (err: AWSError, data: CloudDirectory.Types.RemoveFacetFromObjectResponse) => void): Request; - /** - * Removes the specified facet from the specified object. - */ - removeFacetFromObject(callback?: (err: AWSError, data: CloudDirectory.Types.RemoveFacetFromObjectResponse) => void): Request; - /** - * An API operation for adding tags to a resource. - */ - tagResource(params: CloudDirectory.Types.TagResourceRequest, callback?: (err: AWSError, data: CloudDirectory.Types.TagResourceResponse) => void): Request; - /** - * An API operation for adding tags to a resource. - */ - tagResource(callback?: (err: AWSError, data: CloudDirectory.Types.TagResourceResponse) => void): Request; - /** - * An API operation for removing tags from a resource. - */ - untagResource(params: CloudDirectory.Types.UntagResourceRequest, callback?: (err: AWSError, data: CloudDirectory.Types.UntagResourceResponse) => void): Request; - /** - * An API operation for removing tags from a resource. - */ - untagResource(callback?: (err: AWSError, data: CloudDirectory.Types.UntagResourceResponse) => void): Request; - /** - * Does the following: Adds new Attributes, Rules, or ObjectTypes. Updates existing Attributes, Rules, or ObjectTypes. Deletes existing Attributes, Rules, or ObjectTypes. - */ - updateFacet(params: CloudDirectory.Types.UpdateFacetRequest, callback?: (err: AWSError, data: CloudDirectory.Types.UpdateFacetResponse) => void): Request; - /** - * Does the following: Adds new Attributes, Rules, or ObjectTypes. Updates existing Attributes, Rules, or ObjectTypes. Deletes existing Attributes, Rules, or ObjectTypes. - */ - updateFacet(callback?: (err: AWSError, data: CloudDirectory.Types.UpdateFacetResponse) => void): Request; - /** - * Updates a given object's attributes. - */ - updateObjectAttributes(params: CloudDirectory.Types.UpdateObjectAttributesRequest, callback?: (err: AWSError, data: CloudDirectory.Types.UpdateObjectAttributesResponse) => void): Request; - /** - * Updates a given object's attributes. - */ - updateObjectAttributes(callback?: (err: AWSError, data: CloudDirectory.Types.UpdateObjectAttributesResponse) => void): Request; - /** - * Updates the schema name with a new name. Only development schema names can be updated. - */ - updateSchema(params: CloudDirectory.Types.UpdateSchemaRequest, callback?: (err: AWSError, data: CloudDirectory.Types.UpdateSchemaResponse) => void): Request; - /** - * Updates the schema name with a new name. Only development schema names can be updated. - */ - updateSchema(callback?: (err: AWSError, data: CloudDirectory.Types.UpdateSchemaResponse) => void): Request; - /** - * Updates a TypedLinkFacet. For more information, see Typed link. - */ - updateTypedLinkFacet(params: CloudDirectory.Types.UpdateTypedLinkFacetRequest, callback?: (err: AWSError, data: CloudDirectory.Types.UpdateTypedLinkFacetResponse) => void): Request; - /** - * Updates a TypedLinkFacet. For more information, see Typed link. - */ - updateTypedLinkFacet(callback?: (err: AWSError, data: CloudDirectory.Types.UpdateTypedLinkFacetResponse) => void): Request; -} -declare namespace CloudDirectory { - export interface AddFacetToObjectRequest { - /** - * The Amazon Resource Name (ARN) that is associated with the Directory where the object resides. For more information, see arns. - */ - DirectoryArn: Arn; - /** - * Identifiers for the facet that you are adding to the object. - */ - SchemaFacet: SchemaFacet; - /** - * Attributes on the facet that you are adding to the object. - */ - ObjectAttributeList?: AttributeKeyAndValueList; - /** - * A reference to the object you are adding the specified facet to. - */ - ObjectReference: ObjectReference; - } - export interface AddFacetToObjectResponse { - } - export interface ApplySchemaRequest { - /** - * Published schema Amazon Resource Name (ARN) that needs to be copied. For more information, see arns. - */ - PublishedSchemaArn: Arn; - /** - * The Amazon Resource Name (ARN) that is associated with the Directory into which the schema is copied. For more information, see arns. - */ - DirectoryArn: Arn; - } - export interface ApplySchemaResponse { - /** - * The applied schema ARN that is associated with the copied schema in the Directory. You can use this ARN to describe the schema information applied on this directory. For more information, see arns. - */ - AppliedSchemaArn?: Arn; - /** - * The ARN that is associated with the Directory. For more information, see arns. - */ - DirectoryArn?: Arn; - } - export type Arn = string; - export type Arns = Arn[]; - export interface AttachObjectRequest { - /** - * Amazon Resource Name (ARN) that is associated with the Directory where both objects reside. For more information, see arns. - */ - DirectoryArn: Arn; - /** - * The parent object reference. - */ - ParentReference: ObjectReference; - /** - * The child object reference to be attached to the object. - */ - ChildReference: ObjectReference; - /** - * The link name with which the child object is attached to the parent. - */ - LinkName: LinkName; - } - export interface AttachObjectResponse { - /** - * The attached ObjectIdentifier, which is the child ObjectIdentifier. - */ - AttachedObjectIdentifier?: ObjectIdentifier; - } - export interface AttachPolicyRequest { - /** - * The Amazon Resource Name (ARN) that is associated with the Directory where both objects reside. For more information, see arns. - */ - DirectoryArn?: Arn; - /** - * The reference that is associated with the policy object. - */ - PolicyReference: ObjectReference; - /** - * The reference that identifies the object to which the policy will be attached. - */ - ObjectReference: ObjectReference; - } - export interface AttachPolicyResponse { - } - export interface AttachToIndexRequest { - /** - * The Amazon Resource Name (ARN) of the directory where the object and index exist. - */ - DirectoryArn: Arn; - /** - * A reference to the index that you are attaching the object to. - */ - IndexReference: ObjectReference; - /** - * A reference to the object that you are attaching to the index. - */ - TargetReference: ObjectReference; - } - export interface AttachToIndexResponse { - /** - * The ObjectIdentifier of the object that was attached to the index. - */ - AttachedObjectIdentifier?: ObjectIdentifier; - } - export interface AttachTypedLinkRequest { - /** - * The Amazon Resource Name (ARN) of the directory where you want to attach the typed link. - */ - DirectoryArn: Arn; - /** - * Identifies the source object that the typed link will attach to. - */ - SourceObjectReference: ObjectReference; - /** - * Identifies the target object that the typed link will attach to. - */ - TargetObjectReference: ObjectReference; - /** - * Identifies the typed link facet that is associated with the typed link. - */ - TypedLinkFacet: TypedLinkSchemaAndFacetName; - /** - * A set of attributes that are associated with the typed link. - */ - Attributes: AttributeNameAndValueList; - } - export interface AttachTypedLinkResponse { - /** - * Returns a typed link specifier as output. - */ - TypedLinkSpecifier?: TypedLinkSpecifier; - } - export interface AttributeKey { - /** - * The Amazon Resource Name (ARN) of the schema that contains the facet and attribute. - */ - SchemaArn: Arn; - /** - * The name of the facet that the attribute exists within. - */ - FacetName: FacetName; - /** - * The name of the attribute. - */ - Name: AttributeName; - } - export interface AttributeKeyAndValue { - /** - * The key of the attribute. - */ - Key: AttributeKey; - /** - * The value of the attribute. - */ - Value: TypedAttributeValue; - } - export type AttributeKeyAndValueList = AttributeKeyAndValue[]; - export type AttributeKeyList = AttributeKey[]; - export type AttributeName = string; - export interface AttributeNameAndValue { - /** - * The attribute name of the typed link. - */ - AttributeName: AttributeName; - /** - * The value for the typed link. - */ - Value: TypedAttributeValue; - } - export type AttributeNameAndValueList = AttributeNameAndValue[]; - export type AttributeNameList = AttributeName[]; - export interface BatchAddFacetToObject { - /** - * Represents the facet being added to the object. - */ - SchemaFacet: SchemaFacet; - /** - * The attributes to set on the object. - */ - ObjectAttributeList: AttributeKeyAndValueList; - /** - * A reference to the object being mutated. - */ - ObjectReference: ObjectReference; - } - export interface BatchAddFacetToObjectResponse { - } - export interface BatchAttachObject { - /** - * The parent object reference. - */ - ParentReference: ObjectReference; - /** - * The child object reference that is to be attached to the object. - */ - ChildReference: ObjectReference; - /** - * The name of the link. - */ - LinkName: LinkName; - } - export interface BatchAttachObjectResponse { - /** - * The ObjectIdentifier of the object that has been attached. - */ - attachedObjectIdentifier?: ObjectIdentifier; - } - export interface BatchAttachPolicy { - /** - * The reference that is associated with the policy object. - */ - PolicyReference: ObjectReference; - /** - * The reference that identifies the object to which the policy will be attached. - */ - ObjectReference: ObjectReference; - } - export interface BatchAttachPolicyResponse { - } - export interface BatchAttachToIndex { - /** - * A reference to the index that you are attaching the object to. - */ - IndexReference: ObjectReference; - /** - * A reference to the object that you are attaching to the index. - */ - TargetReference: ObjectReference; - } - export interface BatchAttachToIndexResponse { - /** - * The ObjectIdentifier of the object that was attached to the index. - */ - AttachedObjectIdentifier?: ObjectIdentifier; - } - export interface BatchAttachTypedLink { - /** - * Identifies the source object that the typed link will attach to. - */ - SourceObjectReference: ObjectReference; - /** - * Identifies the target object that the typed link will attach to. - */ - TargetObjectReference: ObjectReference; - /** - * Identifies the typed link facet that is associated with the typed link. - */ - TypedLinkFacet: TypedLinkSchemaAndFacetName; - /** - * A set of attributes that are associated with the typed link. - */ - Attributes: AttributeNameAndValueList; - } - export interface BatchAttachTypedLinkResponse { - /** - * Returns a typed link specifier as output. - */ - TypedLinkSpecifier?: TypedLinkSpecifier; - } - export interface BatchCreateIndex { - /** - * Specifies the attributes that should be indexed on. Currently only a single attribute is supported. - */ - OrderedIndexedAttributeList: AttributeKeyList; - /** - * Indicates whether the attribute that is being indexed has unique values or not. - */ - IsUnique: Bool; - /** - * A reference to the parent object that contains the index object. - */ - ParentReference?: ObjectReference; - /** - * The name of the link between the parent object and the index object. - */ - LinkName?: LinkName; - /** - * The batch reference name. See Batches for more information. - */ - BatchReferenceName?: BatchReferenceName; - } - export interface BatchCreateIndexResponse { - /** - * The ObjectIdentifier of the index created by this operation. - */ - ObjectIdentifier?: ObjectIdentifier; - } - export interface BatchCreateObject { - /** - * A list of FacetArns that will be associated with the object. For more information, see arns. - */ - SchemaFacet: SchemaFacetList; - /** - * An attribute map, which contains an attribute ARN as the key and attribute value as the map value. - */ - ObjectAttributeList: AttributeKeyAndValueList; - /** - * If specified, the parent reference to which this object will be attached. - */ - ParentReference: ObjectReference; - /** - * The name of the link. - */ - LinkName: LinkName; - /** - * The batch reference name. See Batches for more information. - */ - BatchReferenceName: BatchReferenceName; - } - export interface BatchCreateObjectResponse { - /** - * The ID that is associated with the object. - */ - ObjectIdentifier?: ObjectIdentifier; - } - export interface BatchDeleteObject { - /** - * The reference that identifies the object. - */ - ObjectReference: ObjectReference; - } - export interface BatchDeleteObjectResponse { - } - export interface BatchDetachFromIndex { - /** - * A reference to the index object. - */ - IndexReference: ObjectReference; - /** - * A reference to the object being detached from the index. - */ - TargetReference: ObjectReference; - } - export interface BatchDetachFromIndexResponse { - /** - * The ObjectIdentifier of the object that was detached from the index. - */ - DetachedObjectIdentifier?: ObjectIdentifier; - } - export interface BatchDetachObject { - /** - * Parent reference from which the object with the specified link name is detached. - */ - ParentReference: ObjectReference; - /** - * The name of the link. - */ - LinkName: LinkName; - /** - * The batch reference name. See Batches for more information. - */ - BatchReferenceName: BatchReferenceName; - } - export interface BatchDetachObjectResponse { - /** - * The ObjectIdentifier of the detached object. - */ - detachedObjectIdentifier?: ObjectIdentifier; - } - export interface BatchDetachPolicy { - /** - * Reference that identifies the policy object. - */ - PolicyReference: ObjectReference; - /** - * Reference that identifies the object whose policy object will be detached. - */ - ObjectReference: ObjectReference; - } - export interface BatchDetachPolicyResponse { - } - export interface BatchDetachTypedLink { - /** - * Used to accept a typed link specifier as input. - */ - TypedLinkSpecifier: TypedLinkSpecifier; - } - export interface BatchDetachTypedLinkResponse { - } - export interface BatchGetObjectInformation { - /** - * A reference to the object. - */ - ObjectReference: ObjectReference; - } - export interface BatchGetObjectInformationResponse { - /** - * The facets attached to the specified object. - */ - SchemaFacets?: SchemaFacetList; - /** - * The ObjectIdentifier of the specified object. - */ - ObjectIdentifier?: ObjectIdentifier; - } - export interface BatchListAttachedIndices { - /** - * A reference to the object that has indices attached. - */ - TargetReference: ObjectReference; - /** - * The pagination token. - */ - NextToken?: NextToken; - /** - * The maximum number of results to retrieve. - */ - MaxResults?: NumberResults; - } - export interface BatchListAttachedIndicesResponse { - /** - * The indices attached to the specified object. - */ - IndexAttachments?: IndexAttachmentList; - /** - * The pagination token. - */ - NextToken?: NextToken; - } - export interface BatchListIncomingTypedLinks { - /** - * The reference that identifies the object whose attributes will be listed. - */ - ObjectReference: ObjectReference; - /** - * Provides range filters for multiple attributes. When providing ranges to typed link selection, any inexact ranges must be specified at the end. Any attributes that do not have a range specified are presumed to match the entire range. - */ - FilterAttributeRanges?: TypedLinkAttributeRangeList; - /** - * Filters are interpreted in the order of the attributes on the typed link facet, not the order in which they are supplied to any API calls. - */ - FilterTypedLink?: TypedLinkSchemaAndFacetName; - /** - * The pagination token. - */ - NextToken?: NextToken; - /** - * The maximum number of results to retrieve. - */ - MaxResults?: NumberResults; - } - export interface BatchListIncomingTypedLinksResponse { - /** - * Returns one or more typed link specifiers as output. - */ - LinkSpecifiers?: TypedLinkSpecifierList; - /** - * The pagination token. - */ - NextToken?: NextToken; - } - export interface BatchListIndex { - /** - * Specifies the ranges of indexed values that you want to query. - */ - RangesOnIndexedValues?: ObjectAttributeRangeList; - /** - * The reference to the index to list. - */ - IndexReference: ObjectReference; - /** - * The maximum number of results to retrieve. - */ - MaxResults?: NumberResults; - /** - * The pagination token. - */ - NextToken?: NextToken; - } - export interface BatchListIndexResponse { - /** - * The objects and indexed values attached to the index. - */ - IndexAttachments?: IndexAttachmentList; - /** - * The pagination token. - */ - NextToken?: NextToken; - } - export interface BatchListObjectAttributes { - /** - * Reference of the object whose attributes need to be listed. - */ - ObjectReference: ObjectReference; - /** - * The pagination token. - */ - NextToken?: NextToken; - /** - * The maximum number of items to be retrieved in a single call. This is an approximate number. - */ - MaxResults?: NumberResults; - /** - * Used to filter the list of object attributes that are associated with a certain facet. - */ - FacetFilter?: SchemaFacet; - } - export interface BatchListObjectAttributesResponse { - /** - * The attributes map that is associated with the object. AttributeArn is the key; attribute value is the value. - */ - Attributes?: AttributeKeyAndValueList; - /** - * The pagination token. - */ - NextToken?: NextToken; - } - export interface BatchListObjectChildren { - /** - * Reference of the object for which child objects are being listed. - */ - ObjectReference: ObjectReference; - /** - * The pagination token. - */ - NextToken?: NextToken; - /** - * Maximum number of items to be retrieved in a single call. This is an approximate number. - */ - MaxResults?: NumberResults; - } - export interface BatchListObjectChildrenResponse { - /** - * The children structure, which is a map with the key as the LinkName and ObjectIdentifier as the value. - */ - Children?: LinkNameToObjectIdentifierMap; - /** - * The pagination token. - */ - NextToken?: NextToken; - } - export interface BatchListObjectParentPaths { - /** - * The reference that identifies the object whose attributes will be listed. - */ - ObjectReference: ObjectReference; - /** - * The pagination token. - */ - NextToken?: NextToken; - /** - * The maximum number of results to retrieve. - */ - MaxResults?: NumberResults; - } - export interface BatchListObjectParentPathsResponse { - /** - * Returns the path to the ObjectIdentifiers that are associated with the directory. - */ - PathToObjectIdentifiersList?: PathToObjectIdentifiersList; - /** - * The pagination token. - */ - NextToken?: NextToken; - } - export interface BatchListObjectPolicies { - /** - * The reference that identifies the object whose attributes will be listed. - */ - ObjectReference: ObjectReference; - /** - * The pagination token. - */ - NextToken?: NextToken; - /** - * The maximum number of results to retrieve. - */ - MaxResults?: NumberResults; - } - export interface BatchListObjectPoliciesResponse { - /** - * A list of policy ObjectIdentifiers, that are attached to the object. - */ - AttachedPolicyIds?: ObjectIdentifierList; - /** - * The pagination token. - */ - NextToken?: NextToken; - } - export interface BatchListOutgoingTypedLinks { - /** - * The reference that identifies the object whose attributes will be listed. - */ - ObjectReference: ObjectReference; - /** - * Provides range filters for multiple attributes. When providing ranges to typed link selection, any inexact ranges must be specified at the end. Any attributes that do not have a range specified are presumed to match the entire range. - */ - FilterAttributeRanges?: TypedLinkAttributeRangeList; - /** - * Filters are interpreted in the order of the attributes defined on the typed link facet, not the order they are supplied to any API calls. - */ - FilterTypedLink?: TypedLinkSchemaAndFacetName; - /** - * The pagination token. - */ - NextToken?: NextToken; - /** - * The maximum number of results to retrieve. - */ - MaxResults?: NumberResults; - } - export interface BatchListOutgoingTypedLinksResponse { - /** - * Returns a typed link specifier as output. - */ - TypedLinkSpecifiers?: TypedLinkSpecifierList; - /** - * The pagination token. - */ - NextToken?: NextToken; - } - export interface BatchListPolicyAttachments { - /** - * The reference that identifies the policy object. - */ - PolicyReference: ObjectReference; - /** - * The pagination token. - */ - NextToken?: NextToken; - /** - * The maximum number of results to retrieve. - */ - MaxResults?: NumberResults; - } - export interface BatchListPolicyAttachmentsResponse { - /** - * A list of ObjectIdentifiers to which the policy is attached. - */ - ObjectIdentifiers?: ObjectIdentifierList; - /** - * The pagination token. - */ - NextToken?: NextToken; - } - export interface BatchLookupPolicy { - /** - * Reference that identifies the object whose policies will be looked up. - */ - ObjectReference: ObjectReference; - /** - * The pagination token. - */ - NextToken?: NextToken; - /** - * The maximum number of results to retrieve. - */ - MaxResults?: NumberResults; - } - export interface BatchLookupPolicyResponse { - /** - * Provides list of path to policies. Policies contain PolicyId, ObjectIdentifier, and PolicyType. For more information, see Policies. - */ - PolicyToPathList?: PolicyToPathList; - /** - * The pagination token. - */ - NextToken?: NextToken; - } - export type BatchOperationIndex = number; - export interface BatchReadException { - /** - * A type of exception, such as InvalidArnException. - */ - Type?: BatchReadExceptionType; - /** - * An exception message that is associated with the failure. - */ - Message?: ExceptionMessage; - } - export type BatchReadExceptionType = "ValidationException"|"InvalidArnException"|"ResourceNotFoundException"|"InvalidNextTokenException"|"AccessDeniedException"|"NotNodeException"|"FacetValidationException"|"CannotListParentOfRootException"|"NotIndexException"|"NotPolicyException"|"DirectoryNotEnabledException"|"LimitExceededException"|"InternalServiceException"|string; - export interface BatchReadOperation { - /** - * Lists all attributes that are associated with an object. - */ - ListObjectAttributes?: BatchListObjectAttributes; - /** - * Returns a paginated list of child objects that are associated with a given object. - */ - ListObjectChildren?: BatchListObjectChildren; - /** - * Lists indices attached to an object. - */ - ListAttachedIndices?: BatchListAttachedIndices; - /** - * Retrieves all available parent paths for any object type such as node, leaf node, policy node, and index node objects. For more information about objects, see Directory Structure. - */ - ListObjectParentPaths?: BatchListObjectParentPaths; - /** - * Retrieves metadata about an object. - */ - GetObjectInformation?: BatchGetObjectInformation; - /** - * Returns policies attached to an object in pagination fashion. - */ - ListObjectPolicies?: BatchListObjectPolicies; - /** - * Returns all of the ObjectIdentifiers to which a given policy is attached. - */ - ListPolicyAttachments?: BatchListPolicyAttachments; - /** - * Lists all policies from the root of the Directory to the object specified. If there are no policies present, an empty list is returned. If policies are present, and if some objects don't have the policies attached, it returns the ObjectIdentifier for such objects. If policies are present, it returns ObjectIdentifier, policyId, and policyType. Paths that don't lead to the root from the target object are ignored. For more information, see Policies. - */ - LookupPolicy?: BatchLookupPolicy; - /** - * Lists objects attached to the specified index. - */ - ListIndex?: BatchListIndex; - /** - * Returns a paginated list of all the outgoing TypedLinkSpecifier information for an object. It also supports filtering by typed link facet and identity attributes. For more information, see Typed link. - */ - ListOutgoingTypedLinks?: BatchListOutgoingTypedLinks; - /** - * Returns a paginated list of all the incoming TypedLinkSpecifier information for an object. It also supports filtering by typed link facet and identity attributes. For more information, see Typed link. - */ - ListIncomingTypedLinks?: BatchListIncomingTypedLinks; - } - export type BatchReadOperationList = BatchReadOperation[]; - export interface BatchReadOperationResponse { - /** - * Identifies which operation in a batch has succeeded. - */ - SuccessfulResponse?: BatchReadSuccessfulResponse; - /** - * Identifies which operation in a batch has failed. - */ - ExceptionResponse?: BatchReadException; - } - export type BatchReadOperationResponseList = BatchReadOperationResponse[]; - export interface BatchReadRequest { - /** - * The Amazon Resource Name (ARN) that is associated with the Directory. For more information, see arns. - */ - DirectoryArn: Arn; - /** - * A list of operations that are part of the batch. - */ - Operations: BatchReadOperationList; - /** - * Represents the manner and timing in which the successful write or update of an object is reflected in a subsequent read operation of that same object. - */ - ConsistencyLevel?: ConsistencyLevel; - } - export interface BatchReadResponse { - /** - * A list of all the responses for each batch read. - */ - Responses?: BatchReadOperationResponseList; - } - export interface BatchReadSuccessfulResponse { - /** - * Lists all attributes that are associated with an object. - */ - ListObjectAttributes?: BatchListObjectAttributesResponse; - /** - * Returns a paginated list of child objects that are associated with a given object. - */ - ListObjectChildren?: BatchListObjectChildrenResponse; - /** - * Retrieves metadata about an object. - */ - GetObjectInformation?: BatchGetObjectInformationResponse; - /** - * Lists indices attached to an object. - */ - ListAttachedIndices?: BatchListAttachedIndicesResponse; - /** - * Retrieves all available parent paths for any object type such as node, leaf node, policy node, and index node objects. For more information about objects, see Directory Structure. - */ - ListObjectParentPaths?: BatchListObjectParentPathsResponse; - /** - * Returns policies attached to an object in pagination fashion. - */ - ListObjectPolicies?: BatchListObjectPoliciesResponse; - /** - * Returns all of the ObjectIdentifiers to which a given policy is attached. - */ - ListPolicyAttachments?: BatchListPolicyAttachmentsResponse; - /** - * Lists all policies from the root of the Directory to the object specified. If there are no policies present, an empty list is returned. If policies are present, and if some objects don't have the policies attached, it returns the ObjectIdentifier for such objects. If policies are present, it returns ObjectIdentifier, policyId, and policyType. Paths that don't lead to the root from the target object are ignored. For more information, see Policies. - */ - LookupPolicy?: BatchLookupPolicyResponse; - /** - * Lists objects attached to the specified index. - */ - ListIndex?: BatchListIndexResponse; - /** - * Returns a paginated list of all the outgoing TypedLinkSpecifier information for an object. It also supports filtering by typed link facet and identity attributes. For more information, see Typed link. - */ - ListOutgoingTypedLinks?: BatchListOutgoingTypedLinksResponse; - /** - * Returns a paginated list of all the incoming TypedLinkSpecifier information for an object. It also supports filtering by typed link facet and identity attributes. For more information, see Typed link. - */ - ListIncomingTypedLinks?: BatchListIncomingTypedLinksResponse; - } - export type BatchReferenceName = string; - export interface BatchRemoveFacetFromObject { - /** - * The facet to remove from the object. - */ - SchemaFacet: SchemaFacet; - /** - * A reference to the object whose facet will be removed. - */ - ObjectReference: ObjectReference; - } - export interface BatchRemoveFacetFromObjectResponse { - } - export interface BatchUpdateObjectAttributes { - /** - * Reference that identifies the object. - */ - ObjectReference: ObjectReference; - /** - * Attributes update structure. - */ - AttributeUpdates: ObjectAttributeUpdateList; - } - export interface BatchUpdateObjectAttributesResponse { - /** - * ID that is associated with the object. - */ - ObjectIdentifier?: ObjectIdentifier; - } - export type BatchWriteExceptionType = "InternalServiceException"|"ValidationException"|"InvalidArnException"|"LinkNameAlreadyInUseException"|"StillContainsLinksException"|"FacetValidationException"|"ObjectNotDetachedException"|"ResourceNotFoundException"|"AccessDeniedException"|"InvalidAttachmentException"|"NotIndexException"|"IndexedAttributeMissingException"|"ObjectAlreadyDetachedException"|"NotPolicyException"|"DirectoryNotEnabledException"|"LimitExceededException"|"UnsupportedIndexTypeException"|string; - export interface BatchWriteOperation { - /** - * Creates an object. - */ - CreateObject?: BatchCreateObject; - /** - * Attaches an object to a Directory. - */ - AttachObject?: BatchAttachObject; - /** - * Detaches an object from a Directory. - */ - DetachObject?: BatchDetachObject; - /** - * Updates a given object's attributes. - */ - UpdateObjectAttributes?: BatchUpdateObjectAttributes; - /** - * Deletes an object in a Directory. - */ - DeleteObject?: BatchDeleteObject; - /** - * A batch operation that adds a facet to an object. - */ - AddFacetToObject?: BatchAddFacetToObject; - /** - * A batch operation that removes a facet from an object. - */ - RemoveFacetFromObject?: BatchRemoveFacetFromObject; - /** - * Attaches a policy object to a regular object. An object can have a limited number of attached policies. - */ - AttachPolicy?: BatchAttachPolicy; - /** - * Detaches a policy from a Directory. - */ - DetachPolicy?: BatchDetachPolicy; - /** - * Creates an index object. See Indexing for more information. - */ - CreateIndex?: BatchCreateIndex; - /** - * Attaches the specified object to the specified index. - */ - AttachToIndex?: BatchAttachToIndex; - /** - * Detaches the specified object from the specified index. - */ - DetachFromIndex?: BatchDetachFromIndex; - /** - * Attaches a typed link to a specified source and target object. For more information, see Typed link. - */ - AttachTypedLink?: BatchAttachTypedLink; - /** - * Detaches a typed link from a specified source and target object. For more information, see Typed link. - */ - DetachTypedLink?: BatchDetachTypedLink; - } - export type BatchWriteOperationList = BatchWriteOperation[]; - export interface BatchWriteOperationResponse { - /** - * Creates an object in a Directory. - */ - CreateObject?: BatchCreateObjectResponse; - /** - * Attaches an object to a Directory. - */ - AttachObject?: BatchAttachObjectResponse; - /** - * Detaches an object from a Directory. - */ - DetachObject?: BatchDetachObjectResponse; - /** - * Updates a given object’s attributes. - */ - UpdateObjectAttributes?: BatchUpdateObjectAttributesResponse; - /** - * Deletes an object in a Directory. - */ - DeleteObject?: BatchDeleteObjectResponse; - /** - * The result of an add facet to object batch operation. - */ - AddFacetToObject?: BatchAddFacetToObjectResponse; - /** - * The result of a batch remove facet from object operation. - */ - RemoveFacetFromObject?: BatchRemoveFacetFromObjectResponse; - /** - * Attaches a policy object to a regular object. An object can have a limited number of attached policies. - */ - AttachPolicy?: BatchAttachPolicyResponse; - /** - * Detaches a policy from a Directory. - */ - DetachPolicy?: BatchDetachPolicyResponse; - /** - * Creates an index object. See Indexing for more information. - */ - CreateIndex?: BatchCreateIndexResponse; - /** - * Attaches the specified object to the specified index. - */ - AttachToIndex?: BatchAttachToIndexResponse; - /** - * Detaches the specified object from the specified index. - */ - DetachFromIndex?: BatchDetachFromIndexResponse; - /** - * Attaches a typed link to a specified source and target object. For more information, see Typed link. - */ - AttachTypedLink?: BatchAttachTypedLinkResponse; - /** - * Detaches a typed link from a specified source and target object. For more information, see Typed link. - */ - DetachTypedLink?: BatchDetachTypedLinkResponse; - } - export type BatchWriteOperationResponseList = BatchWriteOperationResponse[]; - export interface BatchWriteRequest { - /** - * The Amazon Resource Name (ARN) that is associated with the Directory. For more information, see arns. - */ - DirectoryArn: Arn; - /** - * A list of operations that are part of the batch. - */ - Operations: BatchWriteOperationList; - } - export interface BatchWriteResponse { - /** - * A list of all the responses for each batch write. - */ - Responses?: BatchWriteOperationResponseList; - } - export type BinaryAttributeValue = Buffer|Uint8Array|Blob|string; - export type Bool = boolean; - export type BooleanAttributeValue = boolean; - export type ConsistencyLevel = "SERIALIZABLE"|"EVENTUAL"|string; - export interface CreateDirectoryRequest { - /** - * The name of the Directory. Should be unique per account, per region. - */ - Name: DirectoryName; - /** - * The Amazon Resource Name (ARN) of the published schema that will be copied into the data Directory. For more information, see arns. - */ - SchemaArn: Arn; - } - export interface CreateDirectoryResponse { - /** - * The ARN that is associated with the Directory. For more information, see arns. - */ - DirectoryArn: DirectoryArn; - /** - * The name of the Directory. - */ - Name: DirectoryName; - /** - * The root object node of the created directory. - */ - ObjectIdentifier: ObjectIdentifier; - /** - * The ARN of the published schema in the Directory. Once a published schema is copied into the directory, it has its own ARN, which is referred to applied schema ARN. For more information, see arns. - */ - AppliedSchemaArn: Arn; - } - export interface CreateFacetRequest { - /** - * The schema ARN in which the new Facet will be created. For more information, see arns. - */ - SchemaArn: Arn; - /** - * The name of the Facet, which is unique for a given schema. - */ - Name: FacetName; - /** - * The attributes that are associated with the Facet. - */ - Attributes?: FacetAttributeList; - /** - * Specifies whether a given object created from this facet is of type node, leaf node, policy or index. Node: Can have multiple children but one parent. Leaf node: Cannot have children but can have multiple parents. Policy: Allows you to store a policy document and policy type. For more information, see Policies. Index: Can be created with the Index API. - */ - ObjectType: ObjectType; - } - export interface CreateFacetResponse { - } - export interface CreateIndexRequest { - /** - * The ARN of the directory where the index should be created. - */ - DirectoryArn: Arn; - /** - * Specifies the attributes that should be indexed on. Currently only a single attribute is supported. - */ - OrderedIndexedAttributeList: AttributeKeyList; - /** - * Indicates whether the attribute that is being indexed has unique values or not. - */ - IsUnique: Bool; - /** - * A reference to the parent object that contains the index object. - */ - ParentReference?: ObjectReference; - /** - * The name of the link between the parent object and the index object. - */ - LinkName?: LinkName; - } - export interface CreateIndexResponse { - /** - * The ObjectIdentifier of the index created by this operation. - */ - ObjectIdentifier?: ObjectIdentifier; - } - export interface CreateObjectRequest { - /** - * The Amazon Resource Name (ARN) that is associated with the Directory in which the object will be created. For more information, see arns. - */ - DirectoryArn: Arn; - /** - * A list of schema facets to be associated with the object that contains SchemaArn and facet name. For more information, see arns. - */ - SchemaFacets: SchemaFacetList; - /** - * The attribute map whose attribute ARN contains the key and attribute value as the map value. - */ - ObjectAttributeList?: AttributeKeyAndValueList; - /** - * If specified, the parent reference to which this object will be attached. - */ - ParentReference?: ObjectReference; - /** - * The name of link that is used to attach this object to a parent. - */ - LinkName?: LinkName; - } - export interface CreateObjectResponse { - /** - * The identifier that is associated with the object. - */ - ObjectIdentifier?: ObjectIdentifier; - } - export interface CreateSchemaRequest { - /** - * The name that is associated with the schema. This is unique to each account and in each region. - */ - Name: SchemaName; - } - export interface CreateSchemaResponse { - /** - * The Amazon Resource Name (ARN) that is associated with the schema. For more information, see arns. - */ - SchemaArn?: Arn; - } - export interface CreateTypedLinkFacetRequest { - /** - * The Amazon Resource Name (ARN) that is associated with the schema. For more information, see arns. - */ - SchemaArn: Arn; - /** - * Facet structure that is associated with the typed link facet. - */ - Facet: TypedLinkFacet; - } - export interface CreateTypedLinkFacetResponse { - } - export type _Date = Date; - export type DatetimeAttributeValue = Date; - export interface DeleteDirectoryRequest { - /** - * The ARN of the directory to delete. - */ - DirectoryArn: Arn; - } - export interface DeleteDirectoryResponse { - /** - * The ARN of the deleted directory. - */ - DirectoryArn: Arn; - } - export interface DeleteFacetRequest { - /** - * The Amazon Resource Name (ARN) that is associated with the Facet. For more information, see arns. - */ - SchemaArn: Arn; - /** - * The name of the facet to delete. - */ - Name: FacetName; - } - export interface DeleteFacetResponse { - } - export interface DeleteObjectRequest { - /** - * The Amazon Resource Name (ARN) that is associated with the Directory where the object resides. For more information, see arns. - */ - DirectoryArn: Arn; - /** - * A reference that identifies the object. - */ - ObjectReference: ObjectReference; - } - export interface DeleteObjectResponse { - } - export interface DeleteSchemaRequest { - /** - * The Amazon Resource Name (ARN) of the development schema. For more information, see arns. - */ - SchemaArn: Arn; - } - export interface DeleteSchemaResponse { - /** - * The input ARN that is returned as part of the response. For more information, see arns. - */ - SchemaArn?: Arn; - } - export interface DeleteTypedLinkFacetRequest { - /** - * The Amazon Resource Name (ARN) that is associated with the schema. For more information, see arns. - */ - SchemaArn: Arn; - /** - * The unique name of the typed link facet. - */ - Name: TypedLinkName; - } - export interface DeleteTypedLinkFacetResponse { - } - export interface DetachFromIndexRequest { - /** - * The Amazon Resource Name (ARN) of the directory the index and object exist in. - */ - DirectoryArn: Arn; - /** - * A reference to the index object. - */ - IndexReference: ObjectReference; - /** - * A reference to the object being detached from the index. - */ - TargetReference: ObjectReference; - } - export interface DetachFromIndexResponse { - /** - * The ObjectIdentifier of the object that was detached from the index. - */ - DetachedObjectIdentifier?: ObjectIdentifier; - } - export interface DetachObjectRequest { - /** - * The Amazon Resource Name (ARN) that is associated with the Directory where objects reside. For more information, see arns. - */ - DirectoryArn: Arn; - /** - * The parent reference from which the object with the specified link name is detached. - */ - ParentReference: ObjectReference; - /** - * The link name associated with the object that needs to be detached. - */ - LinkName: LinkName; - } - export interface DetachObjectResponse { - /** - * The ObjectIdentifier that was detached from the object. - */ - DetachedObjectIdentifier?: ObjectIdentifier; - } - export interface DetachPolicyRequest { - /** - * The Amazon Resource Name (ARN) that is associated with the Directory where both objects reside. For more information, see arns. - */ - DirectoryArn: Arn; - /** - * Reference that identifies the policy object. - */ - PolicyReference: ObjectReference; - /** - * Reference that identifies the object whose policy object will be detached. - */ - ObjectReference: ObjectReference; - } - export interface DetachPolicyResponse { - } - export interface DetachTypedLinkRequest { - /** - * The Amazon Resource Name (ARN) of the directory where you want to detach the typed link. - */ - DirectoryArn: Arn; - /** - * Used to accept a typed link specifier as input. - */ - TypedLinkSpecifier: TypedLinkSpecifier; - } - export interface Directory { - /** - * The name of the directory. - */ - Name?: DirectoryName; - /** - * The Amazon Resource Name (ARN) that is associated with the directory. For more information, see arns. - */ - DirectoryArn?: DirectoryArn; - /** - * The state of the directory. Can be either Enabled, Disabled, or Deleted. - */ - State?: DirectoryState; - /** - * The date and time when the directory was created. - */ - CreationDateTime?: _Date; - } - export type DirectoryArn = string; - export type DirectoryList = Directory[]; - export type DirectoryName = string; - export type DirectoryState = "ENABLED"|"DISABLED"|"DELETED"|string; - export interface DisableDirectoryRequest { - /** - * The ARN of the directory to disable. - */ - DirectoryArn: Arn; - } - export interface DisableDirectoryResponse { - /** - * The ARN of the directory that has been disabled. - */ - DirectoryArn: Arn; - } - export interface EnableDirectoryRequest { - /** - * The ARN of the directory to enable. - */ - DirectoryArn: Arn; - } - export interface EnableDirectoryResponse { - /** - * The ARN of the enabled directory. - */ - DirectoryArn: Arn; - } - export type ExceptionMessage = string; - export interface Facet { - /** - * The name of the Facet. - */ - Name?: FacetName; - /** - * The object type that is associated with the facet. See CreateFacetRequest$ObjectType for more details. - */ - ObjectType?: ObjectType; - } - export interface FacetAttribute { - /** - * The name of the facet attribute. - */ - Name: AttributeName; - /** - * A facet attribute consists of either a definition or a reference. This structure contains the attribute definition. See Attribute References for more information. - */ - AttributeDefinition?: FacetAttributeDefinition; - /** - * An attribute reference that is associated with the attribute. See Attribute References for more information. - */ - AttributeReference?: FacetAttributeReference; - /** - * The required behavior of the FacetAttribute. - */ - RequiredBehavior?: RequiredAttributeBehavior; - } - export interface FacetAttributeDefinition { - /** - * The type of the attribute. - */ - Type: FacetAttributeType; - /** - * The default value of the attribute (if configured). - */ - DefaultValue?: TypedAttributeValue; - /** - * Whether the attribute is mutable or not. - */ - IsImmutable?: Bool; - /** - * Validation rules attached to the attribute definition. - */ - Rules?: RuleMap; - } - export type FacetAttributeList = FacetAttribute[]; - export interface FacetAttributeReference { - /** - * The target facet name that is associated with the facet reference. See Attribute References for more information. - */ - TargetFacetName: FacetName; - /** - * The target attribute name that is associated with the facet reference. See Attribute References for more information. - */ - TargetAttributeName: AttributeName; - } - export type FacetAttributeType = "STRING"|"BINARY"|"BOOLEAN"|"NUMBER"|"DATETIME"|string; - export interface FacetAttributeUpdate { - /** - * The attribute to update. - */ - Attribute?: FacetAttribute; - /** - * The action to perform when updating the attribute. - */ - Action?: UpdateActionType; - } - export type FacetAttributeUpdateList = FacetAttributeUpdate[]; - export type FacetName = string; - export type FacetNameList = FacetName[]; - export interface GetDirectoryRequest { - /** - * The ARN of the directory. - */ - DirectoryArn: DirectoryArn; - } - export interface GetDirectoryResponse { - /** - * Metadata about the directory. - */ - Directory: Directory; - } - export interface GetFacetRequest { - /** - * The Amazon Resource Name (ARN) that is associated with the Facet. For more information, see arns. - */ - SchemaArn: Arn; - /** - * The name of the facet to retrieve. - */ - Name: FacetName; - } - export interface GetFacetResponse { - /** - * The Facet structure that is associated with the facet. - */ - Facet?: Facet; - } - export interface GetObjectInformationRequest { - /** - * The ARN of the directory being retrieved. - */ - DirectoryArn: Arn; - /** - * A reference to the object. - */ - ObjectReference: ObjectReference; - /** - * The consistency level at which to retrieve the object information. - */ - ConsistencyLevel?: ConsistencyLevel; - } - export interface GetObjectInformationResponse { - /** - * The facets attached to the specified object. - */ - SchemaFacets?: SchemaFacetList; - /** - * The ObjectIdentifier of the specified object. - */ - ObjectIdentifier?: ObjectIdentifier; - } - export interface GetSchemaAsJsonRequest { - /** - * The ARN of the schema to retrieve. - */ - SchemaArn: Arn; - } - export interface GetSchemaAsJsonResponse { - /** - * The name of the retrieved schema. - */ - Name?: SchemaName; - /** - * The JSON representation of the schema document. - */ - Document?: SchemaJsonDocument; - } - export interface GetTypedLinkFacetInformationRequest { - /** - * The Amazon Resource Name (ARN) that is associated with the schema. For more information, see arns. - */ - SchemaArn: Arn; - /** - * The unique name of the typed link facet. - */ - Name: TypedLinkName; - } - export interface GetTypedLinkFacetInformationResponse { - /** - * The order of identity attributes for the facet, from most significant to least significant. The ability to filter typed links considers the order that the attributes are defined on the typed link facet. When providing ranges to typed link selection, any inexact ranges must be specified at the end. Any attributes that do not have a range specified are presumed to match the entire range. Filters are interpreted in the order of the attributes on the typed link facet, not the order in which they are supplied to any API calls. For more information about identity attributes, see Typed link. - */ - IdentityAttributeOrder?: AttributeNameList; - } - export interface IndexAttachment { - /** - * The indexed attribute values. - */ - IndexedAttributes?: AttributeKeyAndValueList; - /** - * The ObjectIdentifier of the object attached to the index. - */ - ObjectIdentifier?: ObjectIdentifier; - } - export type IndexAttachmentList = IndexAttachment[]; - export type LinkName = string; - export type LinkNameToObjectIdentifierMap = {[key: string]: ObjectIdentifier}; - export interface ListAppliedSchemaArnsRequest { - /** - * The ARN of the directory you are listing. - */ - DirectoryArn: Arn; - /** - * The pagination token. - */ - NextToken?: NextToken; - /** - * The maximum number of results to retrieve. - */ - MaxResults?: NumberResults; - } - export interface ListAppliedSchemaArnsResponse { - /** - * The ARNs of schemas that are applied to the directory. - */ - SchemaArns?: Arns; - /** - * The pagination token. - */ - NextToken?: NextToken; - } - export interface ListAttachedIndicesRequest { - /** - * The ARN of the directory. - */ - DirectoryArn: Arn; - /** - * A reference to the object that has indices attached. - */ - TargetReference: ObjectReference; - /** - * The pagination token. - */ - NextToken?: NextToken; - /** - * The maximum number of results to retrieve. - */ - MaxResults?: NumberResults; - /** - * The consistency level to use for this operation. - */ - ConsistencyLevel?: ConsistencyLevel; - } - export interface ListAttachedIndicesResponse { - /** - * The indices attached to the specified object. - */ - IndexAttachments?: IndexAttachmentList; - /** - * The pagination token. - */ - NextToken?: NextToken; - } - export interface ListDevelopmentSchemaArnsRequest { - /** - * The pagination token. - */ - NextToken?: NextToken; - /** - * The maximum number of results to retrieve. - */ - MaxResults?: NumberResults; - } - export interface ListDevelopmentSchemaArnsResponse { - /** - * The ARNs of retrieved development schemas. - */ - SchemaArns?: Arns; - /** - * The pagination token. - */ - NextToken?: NextToken; - } - export interface ListDirectoriesRequest { - /** - * The pagination token. - */ - NextToken?: NextToken; - /** - * The maximum number of results to retrieve. - */ - MaxResults?: NumberResults; - /** - * The state of the directories in the list. Can be either Enabled, Disabled, or Deleted. - */ - state?: DirectoryState; - } - export interface ListDirectoriesResponse { - /** - * Lists all directories that are associated with your account in pagination fashion. - */ - Directories: DirectoryList; - /** - * The pagination token. - */ - NextToken?: NextToken; - } - export interface ListFacetAttributesRequest { - /** - * The ARN of the schema where the facet resides. - */ - SchemaArn: Arn; - /** - * The name of the facet whose attributes will be retrieved. - */ - Name: FacetName; - /** - * The pagination token. - */ - NextToken?: NextToken; - /** - * The maximum number of results to retrieve. - */ - MaxResults?: NumberResults; - } - export interface ListFacetAttributesResponse { - /** - * The attributes attached to the facet. - */ - Attributes?: FacetAttributeList; - /** - * The pagination token. - */ - NextToken?: NextToken; - } - export interface ListFacetNamesRequest { - /** - * The Amazon Resource Name (ARN) to retrieve facet names from. - */ - SchemaArn: Arn; - /** - * The pagination token. - */ - NextToken?: NextToken; - /** - * The maximum number of results to retrieve. - */ - MaxResults?: NumberResults; - } - export interface ListFacetNamesResponse { - /** - * The names of facets that exist within the schema. - */ - FacetNames?: FacetNameList; - /** - * The pagination token. - */ - NextToken?: NextToken; - } - export interface ListIncomingTypedLinksRequest { - /** - * The Amazon Resource Name (ARN) of the directory where you want to list the typed links. - */ - DirectoryArn: Arn; - /** - * Reference that identifies the object whose attributes will be listed. - */ - ObjectReference: ObjectReference; - /** - * Provides range filters for multiple attributes. When providing ranges to typed link selection, any inexact ranges must be specified at the end. Any attributes that do not have a range specified are presumed to match the entire range. - */ - FilterAttributeRanges?: TypedLinkAttributeRangeList; - /** - * Filters are interpreted in the order of the attributes on the typed link facet, not the order in which they are supplied to any API calls. - */ - FilterTypedLink?: TypedLinkSchemaAndFacetName; - /** - * The pagination token. - */ - NextToken?: NextToken; - /** - * The maximum number of results to retrieve. - */ - MaxResults?: NumberResults; - /** - * The consistency level to execute the request at. - */ - ConsistencyLevel?: ConsistencyLevel; - } - export interface ListIncomingTypedLinksResponse { - /** - * Returns one or more typed link specifiers as output. - */ - LinkSpecifiers?: TypedLinkSpecifierList; - /** - * The pagination token. - */ - NextToken?: NextToken; - } - export interface ListIndexRequest { - /** - * The ARN of the directory that the index exists in. - */ - DirectoryArn: Arn; - /** - * Specifies the ranges of indexed values that you want to query. - */ - RangesOnIndexedValues?: ObjectAttributeRangeList; - /** - * The reference to the index to list. - */ - IndexReference: ObjectReference; - /** - * The maximum number of results to retrieve from the index. - */ - MaxResults?: NumberResults; - /** - * The pagination token. - */ - NextToken?: NextToken; - /** - * The consistency level to execute the request at. - */ - ConsistencyLevel?: ConsistencyLevel; - } - export interface ListIndexResponse { - /** - * The objects and indexed values attached to the index. - */ - IndexAttachments?: IndexAttachmentList; - /** - * The pagination token. - */ - NextToken?: NextToken; - } - export interface ListObjectAttributesRequest { - /** - * The Amazon Resource Name (ARN) that is associated with the Directory where the object resides. For more information, see arns. - */ - DirectoryArn: Arn; - /** - * The reference that identifies the object whose attributes will be listed. - */ - ObjectReference: ObjectReference; - /** - * The pagination token. - */ - NextToken?: NextToken; - /** - * The maximum number of items to be retrieved in a single call. This is an approximate number. - */ - MaxResults?: NumberResults; - /** - * Represents the manner and timing in which the successful write or update of an object is reflected in a subsequent read operation of that same object. - */ - ConsistencyLevel?: ConsistencyLevel; - /** - * Used to filter the list of object attributes that are associated with a certain facet. - */ - FacetFilter?: SchemaFacet; - } - export interface ListObjectAttributesResponse { - /** - * Attributes map that is associated with the object. AttributeArn is the key, and attribute value is the value. - */ - Attributes?: AttributeKeyAndValueList; - /** - * The pagination token. - */ - NextToken?: NextToken; - } - export interface ListObjectChildrenRequest { - /** - * The Amazon Resource Name (ARN) that is associated with the Directory where the object resides. For more information, see arns. - */ - DirectoryArn: Arn; - /** - * The reference that identifies the object for which child objects are being listed. - */ - ObjectReference: ObjectReference; - /** - * The pagination token. - */ - NextToken?: NextToken; - /** - * The maximum number of items to be retrieved in a single call. This is an approximate number. - */ - MaxResults?: NumberResults; - /** - * Represents the manner and timing in which the successful write or update of an object is reflected in a subsequent read operation of that same object. - */ - ConsistencyLevel?: ConsistencyLevel; - } - export interface ListObjectChildrenResponse { - /** - * Children structure, which is a map with key as the LinkName and ObjectIdentifier as the value. - */ - Children?: LinkNameToObjectIdentifierMap; - /** - * The pagination token. - */ - NextToken?: NextToken; - } - export interface ListObjectParentPathsRequest { - /** - * The ARN of the directory to which the parent path applies. - */ - DirectoryArn: Arn; - /** - * The reference that identifies the object whose parent paths are listed. - */ - ObjectReference: ObjectReference; - /** - * The pagination token. - */ - NextToken?: NextToken; - /** - * The maximum number of items to be retrieved in a single call. This is an approximate number. - */ - MaxResults?: NumberResults; - } - export interface ListObjectParentPathsResponse { - /** - * Returns the path to the ObjectIdentifiers that are associated with the directory. - */ - PathToObjectIdentifiersList?: PathToObjectIdentifiersList; - /** - * The pagination token. - */ - NextToken?: NextToken; - } - export interface ListObjectParentsRequest { - /** - * The Amazon Resource Name (ARN) that is associated with the Directory where the object resides. For more information, see arns. - */ - DirectoryArn: Arn; - /** - * The reference that identifies the object for which parent objects are being listed. - */ - ObjectReference: ObjectReference; - /** - * The pagination token. - */ - NextToken?: NextToken; - /** - * The maximum number of items to be retrieved in a single call. This is an approximate number. - */ - MaxResults?: NumberResults; - /** - * Represents the manner and timing in which the successful write or update of an object is reflected in a subsequent read operation of that same object. - */ - ConsistencyLevel?: ConsistencyLevel; - } - export interface ListObjectParentsResponse { - /** - * The parent structure, which is a map with key as the ObjectIdentifier and LinkName as the value. - */ - Parents?: ObjectIdentifierToLinkNameMap; - /** - * The pagination token. - */ - NextToken?: NextToken; - } - export interface ListObjectPoliciesRequest { - /** - * The Amazon Resource Name (ARN) that is associated with the Directory where objects reside. For more information, see arns. - */ - DirectoryArn: Arn; - /** - * Reference that identifies the object for which policies will be listed. - */ - ObjectReference: ObjectReference; - /** - * The pagination token. - */ - NextToken?: NextToken; - /** - * The maximum number of items to be retrieved in a single call. This is an approximate number. - */ - MaxResults?: NumberResults; - /** - * Represents the manner and timing in which the successful write or update of an object is reflected in a subsequent read operation of that same object. - */ - ConsistencyLevel?: ConsistencyLevel; - } - export interface ListObjectPoliciesResponse { - /** - * A list of policy ObjectIdentifiers, that are attached to the object. - */ - AttachedPolicyIds?: ObjectIdentifierList; - /** - * The pagination token. - */ - NextToken?: NextToken; - } - export interface ListOutgoingTypedLinksRequest { - /** - * The Amazon Resource Name (ARN) of the directory where you want to list the typed links. - */ - DirectoryArn: Arn; - /** - * A reference that identifies the object whose attributes will be listed. - */ - ObjectReference: ObjectReference; - /** - * Provides range filters for multiple attributes. When providing ranges to typed link selection, any inexact ranges must be specified at the end. Any attributes that do not have a range specified are presumed to match the entire range. - */ - FilterAttributeRanges?: TypedLinkAttributeRangeList; - /** - * Filters are interpreted in the order of the attributes defined on the typed link facet, not the order they are supplied to any API calls. - */ - FilterTypedLink?: TypedLinkSchemaAndFacetName; - /** - * The pagination token. - */ - NextToken?: NextToken; - /** - * The maximum number of results to retrieve. - */ - MaxResults?: NumberResults; - /** - * The consistency level to execute the request at. - */ - ConsistencyLevel?: ConsistencyLevel; - } - export interface ListOutgoingTypedLinksResponse { - /** - * Returns a typed link specifier as output. - */ - TypedLinkSpecifiers?: TypedLinkSpecifierList; - /** - * The pagination token. - */ - NextToken?: NextToken; - } - export interface ListPolicyAttachmentsRequest { - /** - * The Amazon Resource Name (ARN) that is associated with the Directory where objects reside. For more information, see arns. - */ - DirectoryArn: Arn; - /** - * The reference that identifies the policy object. - */ - PolicyReference: ObjectReference; - /** - * The pagination token. - */ - NextToken?: NextToken; - /** - * The maximum number of items to be retrieved in a single call. This is an approximate number. - */ - MaxResults?: NumberResults; - /** - * Represents the manner and timing in which the successful write or update of an object is reflected in a subsequent read operation of that same object. - */ - ConsistencyLevel?: ConsistencyLevel; - } - export interface ListPolicyAttachmentsResponse { - /** - * A list of ObjectIdentifiers to which the policy is attached. - */ - ObjectIdentifiers?: ObjectIdentifierList; - /** - * The pagination token. - */ - NextToken?: NextToken; - } - export interface ListPublishedSchemaArnsRequest { - /** - * The pagination token. - */ - NextToken?: NextToken; - /** - * The maximum number of results to retrieve. - */ - MaxResults?: NumberResults; - } - export interface ListPublishedSchemaArnsResponse { - /** - * The ARNs of published schemas. - */ - SchemaArns?: Arns; - /** - * The pagination token. - */ - NextToken?: NextToken; - } - export interface ListTagsForResourceRequest { - /** - * The Amazon Resource Name (ARN) of the resource. Tagging is only supported for directories. - */ - ResourceArn: Arn; - /** - * The pagination token. This is for future use. Currently pagination is not supported for tagging. - */ - NextToken?: NextToken; - /** - * The MaxResults parameter sets the maximum number of results returned in a single page. This is for future use and is not supported currently. - */ - MaxResults?: TagsNumberResults; - } - export interface ListTagsForResourceResponse { - /** - * A list of tag key value pairs that are associated with the response. - */ - Tags?: TagList; - /** - * The token to use to retrieve the next page of results. This value is null when there are no more results to return. - */ - NextToken?: NextToken; - } - export interface ListTypedLinkFacetAttributesRequest { - /** - * The Amazon Resource Name (ARN) that is associated with the schema. For more information, see arns. - */ - SchemaArn: Arn; - /** - * The unique name of the typed link facet. - */ - Name: TypedLinkName; - /** - * The pagination token. - */ - NextToken?: NextToken; - /** - * The maximum number of results to retrieve. - */ - MaxResults?: NumberResults; - } - export interface ListTypedLinkFacetAttributesResponse { - /** - * An ordered set of attributes associate with the typed link. - */ - Attributes?: TypedLinkAttributeDefinitionList; - /** - * The pagination token. - */ - NextToken?: NextToken; - } - export interface ListTypedLinkFacetNamesRequest { - /** - * The Amazon Resource Name (ARN) that is associated with the schema. For more information, see arns. - */ - SchemaArn: Arn; - /** - * The pagination token. - */ - NextToken?: NextToken; - /** - * The maximum number of results to retrieve. - */ - MaxResults?: NumberResults; - } - export interface ListTypedLinkFacetNamesResponse { - /** - * The names of typed link facets that exist within the schema. - */ - FacetNames?: TypedLinkNameList; - /** - * The pagination token. - */ - NextToken?: NextToken; - } - export interface LookupPolicyRequest { - /** - * The Amazon Resource Name (ARN) that is associated with the Directory. For more information, see arns. - */ - DirectoryArn: Arn; - /** - * Reference that identifies the object whose policies will be looked up. - */ - ObjectReference: ObjectReference; - /** - * The token to request the next page of results. - */ - NextToken?: NextToken; - /** - * The maximum number of items to be retrieved in a single call. This is an approximate number. - */ - MaxResults?: NumberResults; - } - export interface LookupPolicyResponse { - /** - * Provides list of path to policies. Policies contain PolicyId, ObjectIdentifier, and PolicyType. For more information, see Policies. - */ - PolicyToPathList?: PolicyToPathList; - /** - * The pagination token. - */ - NextToken?: NextToken; - } - export type NextToken = string; - export type NumberAttributeValue = string; - export type NumberResults = number; - export interface ObjectAttributeAction { - /** - * A type that can be either Update or Delete. - */ - ObjectAttributeActionType?: UpdateActionType; - /** - * The value that you want to update to. - */ - ObjectAttributeUpdateValue?: TypedAttributeValue; - } - export interface ObjectAttributeRange { - /** - * The key of the attribute that the attribute range covers. - */ - AttributeKey?: AttributeKey; - /** - * The range of attribute values being selected. - */ - Range?: TypedAttributeValueRange; - } - export type ObjectAttributeRangeList = ObjectAttributeRange[]; - export interface ObjectAttributeUpdate { - /** - * The key of the attribute being updated. - */ - ObjectAttributeKey?: AttributeKey; - /** - * The action to perform as part of the attribute update. - */ - ObjectAttributeAction?: ObjectAttributeAction; - } - export type ObjectAttributeUpdateList = ObjectAttributeUpdate[]; - export type ObjectIdentifier = string; - export type ObjectIdentifierList = ObjectIdentifier[]; - export type ObjectIdentifierToLinkNameMap = {[key: string]: LinkName}; - export interface ObjectReference { - /** - * A path selector supports easy selection of an object by the parent/child links leading to it from the directory root. Use the link names from each parent/child link to construct the path. Path selectors start with a slash (/) and link names are separated by slashes. For more information about paths, see Accessing Objects. You can identify an object in one of the following ways: $ObjectIdentifier - An object identifier is an opaque string provided by Amazon Cloud Directory. When creating objects, the system will provide you with the identifier of the created object. An object’s identifier is immutable and no two objects will ever share the same object identifier /some/path - Identifies the object based on path #SomeBatchReference - Identifies the object in a batch call - */ - Selector?: SelectorObjectReference; - } - export type ObjectType = "NODE"|"LEAF_NODE"|"POLICY"|"INDEX"|string; - export type PathString = string; - export interface PathToObjectIdentifiers { - /** - * The path that is used to identify the object starting from directory root. - */ - Path?: PathString; - /** - * Lists ObjectIdentifiers starting from directory root to the object in the request. - */ - ObjectIdentifiers?: ObjectIdentifierList; - } - export type PathToObjectIdentifiersList = PathToObjectIdentifiers[]; - export interface PolicyAttachment { - /** - * The ID of PolicyAttachment. - */ - PolicyId?: ObjectIdentifier; - /** - * The ObjectIdentifier that is associated with PolicyAttachment. - */ - ObjectIdentifier?: ObjectIdentifier; - /** - * The type of policy that can be associated with PolicyAttachment. - */ - PolicyType?: PolicyType; - } - export type PolicyAttachmentList = PolicyAttachment[]; - export interface PolicyToPath { - /** - * The path that is referenced from the root. - */ - Path?: PathString; - /** - * List of policy objects. - */ - Policies?: PolicyAttachmentList; - } - export type PolicyToPathList = PolicyToPath[]; - export type PolicyType = string; - export interface PublishSchemaRequest { - /** - * The Amazon Resource Name (ARN) that is associated with the development schema. For more information, see arns. - */ - DevelopmentSchemaArn: Arn; - /** - * The version under which the schema will be published. - */ - Version: Version; - /** - * The new name under which the schema will be published. If this is not provided, the development schema is considered. - */ - Name?: SchemaName; - } - export interface PublishSchemaResponse { - /** - * The ARN that is associated with the published schema. For more information, see arns. - */ - PublishedSchemaArn?: Arn; - } - export interface PutSchemaFromJsonRequest { - /** - * The ARN of the schema to update. - */ - SchemaArn: Arn; - /** - * The replacement JSON schema. - */ - Document: SchemaJsonDocument; - } - export interface PutSchemaFromJsonResponse { - /** - * The ARN of the schema to update. - */ - Arn?: Arn; - } - export type RangeMode = "FIRST"|"LAST"|"LAST_BEFORE_MISSING_VALUES"|"INCLUSIVE"|"EXCLUSIVE"|string; - export interface RemoveFacetFromObjectRequest { - /** - * The ARN of the directory in which the object resides. - */ - DirectoryArn: Arn; - /** - * The facet to remove. - */ - SchemaFacet: SchemaFacet; - /** - * A reference to the object to remove the facet from. - */ - ObjectReference: ObjectReference; - } - export interface RemoveFacetFromObjectResponse { - } - export type RequiredAttributeBehavior = "REQUIRED_ALWAYS"|"NOT_REQUIRED"|string; - export interface Rule { - /** - * The type of attribute validation rule. - */ - Type?: RuleType; - /** - * The minimum and maximum parameters that are associated with the rule. - */ - Parameters?: RuleParameterMap; - } - export type RuleKey = string; - export type RuleMap = {[key: string]: Rule}; - export type RuleParameterKey = string; - export type RuleParameterMap = {[key: string]: RuleParameterValue}; - export type RuleParameterValue = string; - export type RuleType = "BINARY_LENGTH"|"NUMBER_COMPARISON"|"STRING_FROM_SET"|"STRING_LENGTH"|string; - export interface SchemaFacet { - /** - * The ARN of the schema that contains the facet. - */ - SchemaArn?: Arn; - /** - * The name of the facet. - */ - FacetName?: FacetName; - } - export type SchemaFacetList = SchemaFacet[]; - export type SchemaJsonDocument = string; - export type SchemaName = string; - export type SelectorObjectReference = string; - export type StringAttributeValue = string; - export interface Tag { - /** - * The key that is associated with the tag. - */ - Key?: TagKey; - /** - * The value that is associated with the tag. - */ - Value?: TagValue; - } - export type TagKey = string; - export type TagKeyList = TagKey[]; - export type TagList = Tag[]; - export interface TagResourceRequest { - /** - * The Amazon Resource Name (ARN) of the resource. Tagging is only supported for directories. - */ - ResourceArn: Arn; - /** - * A list of tag key-value pairs. - */ - Tags: TagList; - } - export interface TagResourceResponse { - } - export type TagValue = string; - export type TagsNumberResults = number; - export interface TypedAttributeValue { - /** - * A string data value. - */ - StringValue?: StringAttributeValue; - /** - * A binary data value. - */ - BinaryValue?: BinaryAttributeValue; - /** - * A Boolean data value. - */ - BooleanValue?: BooleanAttributeValue; - /** - * A number data value. - */ - NumberValue?: NumberAttributeValue; - /** - * A date and time value. - */ - DatetimeValue?: DatetimeAttributeValue; - } - export interface TypedAttributeValueRange { - /** - * The inclusive or exclusive range start. - */ - StartMode: RangeMode; - /** - * The value to start the range at. - */ - StartValue?: TypedAttributeValue; - /** - * The inclusive or exclusive range end. - */ - EndMode: RangeMode; - /** - * The attribute value to terminate the range at. - */ - EndValue?: TypedAttributeValue; - } - export interface TypedLinkAttributeDefinition { - /** - * The unique name of the typed link attribute. - */ - Name: AttributeName; - /** - * The type of the attribute. - */ - Type: FacetAttributeType; - /** - * The default value of the attribute (if configured). - */ - DefaultValue?: TypedAttributeValue; - /** - * Whether the attribute is mutable or not. - */ - IsImmutable?: Bool; - /** - * Validation rules that are attached to the attribute definition. - */ - Rules?: RuleMap; - /** - * The required behavior of the TypedLinkAttributeDefinition. - */ - RequiredBehavior: RequiredAttributeBehavior; - } - export type TypedLinkAttributeDefinitionList = TypedLinkAttributeDefinition[]; - export interface TypedLinkAttributeRange { - /** - * The unique name of the typed link attribute. - */ - AttributeName?: AttributeName; - /** - * The range of attribute values that are being selected. - */ - Range: TypedAttributeValueRange; - } - export type TypedLinkAttributeRangeList = TypedLinkAttributeRange[]; - export interface TypedLinkFacet { - /** - * The unique name of the typed link facet. - */ - Name: TypedLinkName; - /** - * A set of key-value pairs associated with the typed link. Typed link attributes are used when you have data values that are related to the link itself, and not to one of the two objects being linked. Identity attributes also serve to distinguish the link from others of the same type between the same objects. - */ - Attributes: TypedLinkAttributeDefinitionList; - /** - * The set of attributes that distinguish links made from this facet from each other, in the order of significance. Listing typed links can filter on the values of these attributes. See ListOutgoingTypedLinks and ListIncomingTypedLinks for details. - */ - IdentityAttributeOrder: AttributeNameList; - } - export interface TypedLinkFacetAttributeUpdate { - /** - * The attribute to update. - */ - Attribute: TypedLinkAttributeDefinition; - /** - * The action to perform when updating the attribute. - */ - Action: UpdateActionType; - } - export type TypedLinkFacetAttributeUpdateList = TypedLinkFacetAttributeUpdate[]; - export type TypedLinkName = string; - export type TypedLinkNameList = TypedLinkName[]; - export interface TypedLinkSchemaAndFacetName { - /** - * The Amazon Resource Name (ARN) that is associated with the schema. For more information, see arns. - */ - SchemaArn: Arn; - /** - * The unique name of the typed link facet. - */ - TypedLinkName: TypedLinkName; - } - export interface TypedLinkSpecifier { - /** - * Identifies the typed link facet that is associated with the typed link. - */ - TypedLinkFacet: TypedLinkSchemaAndFacetName; - /** - * Identifies the source object that the typed link will attach to. - */ - SourceObjectReference: ObjectReference; - /** - * Identifies the target object that the typed link will attach to. - */ - TargetObjectReference: ObjectReference; - /** - * Identifies the attribute value to update. - */ - IdentityAttributeValues: AttributeNameAndValueList; - } - export type TypedLinkSpecifierList = TypedLinkSpecifier[]; - export interface UntagResourceRequest { - /** - * The Amazon Resource Name (ARN) of the resource. Tagging is only supported for directories. - */ - ResourceArn: Arn; - /** - * Keys of the tag that need to be removed from the resource. - */ - TagKeys: TagKeyList; - } - export interface UntagResourceResponse { - } - export type UpdateActionType = "CREATE_OR_UPDATE"|"DELETE"|string; - export interface UpdateFacetRequest { - /** - * The Amazon Resource Name (ARN) that is associated with the Facet. For more information, see arns. - */ - SchemaArn: Arn; - /** - * The name of the facet. - */ - Name: FacetName; - /** - * List of attributes that need to be updated in a given schema Facet. Each attribute is followed by AttributeAction, which specifies the type of update operation to perform. - */ - AttributeUpdates?: FacetAttributeUpdateList; - /** - * The object type that is associated with the facet. See CreateFacetRequest$ObjectType for more details. - */ - ObjectType?: ObjectType; - } - export interface UpdateFacetResponse { - } - export interface UpdateObjectAttributesRequest { - /** - * The Amazon Resource Name (ARN) that is associated with the Directory where the object resides. For more information, see arns. - */ - DirectoryArn: Arn; - /** - * The reference that identifies the object. - */ - ObjectReference: ObjectReference; - /** - * The attributes update structure. - */ - AttributeUpdates: ObjectAttributeUpdateList; - } - export interface UpdateObjectAttributesResponse { - /** - * The ObjectIdentifier of the updated object. - */ - ObjectIdentifier?: ObjectIdentifier; - } - export interface UpdateSchemaRequest { - /** - * The Amazon Resource Name (ARN) of the development schema. For more information, see arns. - */ - SchemaArn: Arn; - /** - * The name of the schema. - */ - Name: SchemaName; - } - export interface UpdateSchemaResponse { - /** - * The ARN that is associated with the updated schema. For more information, see arns. - */ - SchemaArn?: Arn; - } - export interface UpdateTypedLinkFacetRequest { - /** - * The Amazon Resource Name (ARN) that is associated with the schema. For more information, see arns. - */ - SchemaArn: Arn; - /** - * The unique name of the typed link facet. - */ - Name: TypedLinkName; - /** - * Attributes update structure. - */ - AttributeUpdates: TypedLinkFacetAttributeUpdateList; - /** - * The order of identity attributes for the facet, from most significant to least significant. The ability to filter typed links considers the order that the attributes are defined on the typed link facet. When providing ranges to a typed link selection, any inexact ranges must be specified at the end. Any attributes that do not have a range specified are presumed to match the entire range. Filters are interpreted in the order of the attributes on the typed link facet, not the order in which they are supplied to any API calls. For more information about identity attributes, see Typed link. - */ - IdentityAttributeOrder: AttributeNameList; - } - export interface UpdateTypedLinkFacetResponse { - } - export type Version = string; - /** - * A string in YYYY-MM-DD format that represents the latest possible API version that can be used in this service. Specify 'latest' to use the latest possible version. - */ - export type apiVersion = "2016-05-10"|"latest"|string; - export interface ClientApiVersions { - /** - * A string in YYYY-MM-DD format that represents the latest possible API version that can be used in this service. Specify 'latest' to use the latest possible version. - */ - apiVersion?: apiVersion; - } - export type ClientConfiguration = ServiceConfigurationOptions & ClientApiVersions; - /** - * Contains interfaces for use with the CloudDirectory client. - */ - export import Types = CloudDirectory; -} -export = CloudDirectory; diff --git a/workshops/monte-carlo-on-ec2-spot-fleet/src/web/node_modules/aws-sdk/clients/clouddirectory.js b/workshops/monte-carlo-on-ec2-spot-fleet/src/web/node_modules/aws-sdk/clients/clouddirectory.js deleted file mode 100644 index 414c3e88..00000000 --- a/workshops/monte-carlo-on-ec2-spot-fleet/src/web/node_modules/aws-sdk/clients/clouddirectory.js +++ /dev/null @@ -1,18 +0,0 @@ -require('../lib/node_loader'); -var AWS = require('../lib/core'); -var Service = AWS.Service; -var apiLoader = AWS.apiLoader; - -apiLoader.services['clouddirectory'] = {}; -AWS.CloudDirectory = Service.defineService('clouddirectory', ['2016-05-10']); -Object.defineProperty(apiLoader.services['clouddirectory'], '2016-05-10', { - get: function get() { - var model = require('../apis/clouddirectory-2016-05-10.min.json'); - model.paginators = require('../apis/clouddirectory-2016-05-10.paginators.json').pagination; - return model; - }, - enumerable: true, - configurable: true -}); - -module.exports = AWS.CloudDirectory; diff --git a/workshops/monte-carlo-on-ec2-spot-fleet/src/web/node_modules/aws-sdk/clients/cloudformation.d.ts b/workshops/monte-carlo-on-ec2-spot-fleet/src/web/node_modules/aws-sdk/clients/cloudformation.d.ts deleted file mode 100644 index 4cc3edd9..00000000 --- a/workshops/monte-carlo-on-ec2-spot-fleet/src/web/node_modules/aws-sdk/clients/cloudformation.d.ts +++ /dev/null @@ -1,2338 +0,0 @@ -import {Request} from '../lib/request'; -import {Response} from '../lib/response'; -import {AWSError} from '../lib/error'; -import {Service} from '../lib/service'; -import {ServiceConfigurationOptions} from '../lib/service'; -import {ConfigBase as Config} from '../lib/config'; -interface Blob {} -declare class CloudFormation extends Service { - /** - * Constructs a service object. This object has one method for each API operation. - */ - constructor(options?: CloudFormation.Types.ClientConfiguration) - config: Config & CloudFormation.Types.ClientConfiguration; - /** - * Cancels an update on the specified stack. If the call completes successfully, the stack rolls back the update and reverts to the previous stack configuration. You can cancel only stacks that are in the UPDATE_IN_PROGRESS state. - */ - cancelUpdateStack(params: CloudFormation.Types.CancelUpdateStackInput, callback?: (err: AWSError, data: {}) => void): Request<{}, AWSError>; - /** - * Cancels an update on the specified stack. If the call completes successfully, the stack rolls back the update and reverts to the previous stack configuration. You can cancel only stacks that are in the UPDATE_IN_PROGRESS state. - */ - cancelUpdateStack(callback?: (err: AWSError, data: {}) => void): Request<{}, AWSError>; - /** - * For a specified stack that is in the UPDATE_ROLLBACK_FAILED state, continues rolling it back to the UPDATE_ROLLBACK_COMPLETE state. Depending on the cause of the failure, you can manually fix the error and continue the rollback. By continuing the rollback, you can return your stack to a working state (the UPDATE_ROLLBACK_COMPLETE state), and then try to update the stack again. A stack goes into the UPDATE_ROLLBACK_FAILED state when AWS CloudFormation cannot roll back all changes after a failed stack update. For example, you might have a stack that is rolling back to an old database instance that was deleted outside of AWS CloudFormation. Because AWS CloudFormation doesn't know the database was deleted, it assumes that the database instance still exists and attempts to roll back to it, causing the update rollback to fail. - */ - continueUpdateRollback(params: CloudFormation.Types.ContinueUpdateRollbackInput, callback?: (err: AWSError, data: CloudFormation.Types.ContinueUpdateRollbackOutput) => void): Request; - /** - * For a specified stack that is in the UPDATE_ROLLBACK_FAILED state, continues rolling it back to the UPDATE_ROLLBACK_COMPLETE state. Depending on the cause of the failure, you can manually fix the error and continue the rollback. By continuing the rollback, you can return your stack to a working state (the UPDATE_ROLLBACK_COMPLETE state), and then try to update the stack again. A stack goes into the UPDATE_ROLLBACK_FAILED state when AWS CloudFormation cannot roll back all changes after a failed stack update. For example, you might have a stack that is rolling back to an old database instance that was deleted outside of AWS CloudFormation. Because AWS CloudFormation doesn't know the database was deleted, it assumes that the database instance still exists and attempts to roll back to it, causing the update rollback to fail. - */ - continueUpdateRollback(callback?: (err: AWSError, data: CloudFormation.Types.ContinueUpdateRollbackOutput) => void): Request; - /** - * Creates a list of changes that will be applied to a stack so that you can review the changes before executing them. You can create a change set for a stack that doesn't exist or an existing stack. If you create a change set for a stack that doesn't exist, the change set shows all of the resources that AWS CloudFormation will create. If you create a change set for an existing stack, AWS CloudFormation compares the stack's information with the information that you submit in the change set and lists the differences. Use change sets to understand which resources AWS CloudFormation will create or change, and how it will change resources in an existing stack, before you create or update a stack. To create a change set for a stack that doesn't exist, for the ChangeSetType parameter, specify CREATE. To create a change set for an existing stack, specify UPDATE for the ChangeSetType parameter. After the CreateChangeSet call successfully completes, AWS CloudFormation starts creating the change set. To check the status of the change set or to review it, use the DescribeChangeSet action. When you are satisfied with the changes the change set will make, execute the change set by using the ExecuteChangeSet action. AWS CloudFormation doesn't make changes until you execute the change set. - */ - createChangeSet(params: CloudFormation.Types.CreateChangeSetInput, callback?: (err: AWSError, data: CloudFormation.Types.CreateChangeSetOutput) => void): Request; - /** - * Creates a list of changes that will be applied to a stack so that you can review the changes before executing them. You can create a change set for a stack that doesn't exist or an existing stack. If you create a change set for a stack that doesn't exist, the change set shows all of the resources that AWS CloudFormation will create. If you create a change set for an existing stack, AWS CloudFormation compares the stack's information with the information that you submit in the change set and lists the differences. Use change sets to understand which resources AWS CloudFormation will create or change, and how it will change resources in an existing stack, before you create or update a stack. To create a change set for a stack that doesn't exist, for the ChangeSetType parameter, specify CREATE. To create a change set for an existing stack, specify UPDATE for the ChangeSetType parameter. After the CreateChangeSet call successfully completes, AWS CloudFormation starts creating the change set. To check the status of the change set or to review it, use the DescribeChangeSet action. When you are satisfied with the changes the change set will make, execute the change set by using the ExecuteChangeSet action. AWS CloudFormation doesn't make changes until you execute the change set. - */ - createChangeSet(callback?: (err: AWSError, data: CloudFormation.Types.CreateChangeSetOutput) => void): Request; - /** - * Creates a stack as specified in the template. After the call completes successfully, the stack creation starts. You can check the status of the stack via the DescribeStacks API. - */ - createStack(params: CloudFormation.Types.CreateStackInput, callback?: (err: AWSError, data: CloudFormation.Types.CreateStackOutput) => void): Request; - /** - * Creates a stack as specified in the template. After the call completes successfully, the stack creation starts. You can check the status of the stack via the DescribeStacks API. - */ - createStack(callback?: (err: AWSError, data: CloudFormation.Types.CreateStackOutput) => void): Request; - /** - * Creates stack instances for the specified accounts, within the specified regions. A stack instance refers to a stack in a specific account and region. Accounts and Regions are required parameters—you must specify at least one account and one region. - */ - createStackInstances(params: CloudFormation.Types.CreateStackInstancesInput, callback?: (err: AWSError, data: CloudFormation.Types.CreateStackInstancesOutput) => void): Request; - /** - * Creates stack instances for the specified accounts, within the specified regions. A stack instance refers to a stack in a specific account and region. Accounts and Regions are required parameters—you must specify at least one account and one region. - */ - createStackInstances(callback?: (err: AWSError, data: CloudFormation.Types.CreateStackInstancesOutput) => void): Request; - /** - * Creates a stack set. - */ - createStackSet(params: CloudFormation.Types.CreateStackSetInput, callback?: (err: AWSError, data: CloudFormation.Types.CreateStackSetOutput) => void): Request; - /** - * Creates a stack set. - */ - createStackSet(callback?: (err: AWSError, data: CloudFormation.Types.CreateStackSetOutput) => void): Request; - /** - * Deletes the specified change set. Deleting change sets ensures that no one executes the wrong change set. If the call successfully completes, AWS CloudFormation successfully deleted the change set. - */ - deleteChangeSet(params: CloudFormation.Types.DeleteChangeSetInput, callback?: (err: AWSError, data: CloudFormation.Types.DeleteChangeSetOutput) => void): Request; - /** - * Deletes the specified change set. Deleting change sets ensures that no one executes the wrong change set. If the call successfully completes, AWS CloudFormation successfully deleted the change set. - */ - deleteChangeSet(callback?: (err: AWSError, data: CloudFormation.Types.DeleteChangeSetOutput) => void): Request; - /** - * Deletes a specified stack. Once the call completes successfully, stack deletion starts. Deleted stacks do not show up in the DescribeStacks API if the deletion has been completed successfully. - */ - deleteStack(params: CloudFormation.Types.DeleteStackInput, callback?: (err: AWSError, data: {}) => void): Request<{}, AWSError>; - /** - * Deletes a specified stack. Once the call completes successfully, stack deletion starts. Deleted stacks do not show up in the DescribeStacks API if the deletion has been completed successfully. - */ - deleteStack(callback?: (err: AWSError, data: {}) => void): Request<{}, AWSError>; - /** - * Deletes stack instances for the specified accounts, in the specified regions. - */ - deleteStackInstances(params: CloudFormation.Types.DeleteStackInstancesInput, callback?: (err: AWSError, data: CloudFormation.Types.DeleteStackInstancesOutput) => void): Request; - /** - * Deletes stack instances for the specified accounts, in the specified regions. - */ - deleteStackInstances(callback?: (err: AWSError, data: CloudFormation.Types.DeleteStackInstancesOutput) => void): Request; - /** - * Deletes a stack set. Before you can delete a stack set, all of its member stack instances must be deleted. For more information about how to do this, see DeleteStackInstances. - */ - deleteStackSet(params: CloudFormation.Types.DeleteStackSetInput, callback?: (err: AWSError, data: CloudFormation.Types.DeleteStackSetOutput) => void): Request; - /** - * Deletes a stack set. Before you can delete a stack set, all of its member stack instances must be deleted. For more information about how to do this, see DeleteStackInstances. - */ - deleteStackSet(callback?: (err: AWSError, data: CloudFormation.Types.DeleteStackSetOutput) => void): Request; - /** - * Retrieves your account's AWS CloudFormation limits, such as the maximum number of stacks that you can create in your account. - */ - describeAccountLimits(params: CloudFormation.Types.DescribeAccountLimitsInput, callback?: (err: AWSError, data: CloudFormation.Types.DescribeAccountLimitsOutput) => void): Request; - /** - * Retrieves your account's AWS CloudFormation limits, such as the maximum number of stacks that you can create in your account. - */ - describeAccountLimits(callback?: (err: AWSError, data: CloudFormation.Types.DescribeAccountLimitsOutput) => void): Request; - /** - * Returns the inputs for the change set and a list of changes that AWS CloudFormation will make if you execute the change set. For more information, see Updating Stacks Using Change Sets in the AWS CloudFormation User Guide. - */ - describeChangeSet(params: CloudFormation.Types.DescribeChangeSetInput, callback?: (err: AWSError, data: CloudFormation.Types.DescribeChangeSetOutput) => void): Request; - /** - * Returns the inputs for the change set and a list of changes that AWS CloudFormation will make if you execute the change set. For more information, see Updating Stacks Using Change Sets in the AWS CloudFormation User Guide. - */ - describeChangeSet(callback?: (err: AWSError, data: CloudFormation.Types.DescribeChangeSetOutput) => void): Request; - /** - * Returns all stack related events for a specified stack in reverse chronological order. For more information about a stack's event history, go to Stacks in the AWS CloudFormation User Guide. You can list events for stacks that have failed to create or have been deleted by specifying the unique stack identifier (stack ID). - */ - describeStackEvents(params: CloudFormation.Types.DescribeStackEventsInput, callback?: (err: AWSError, data: CloudFormation.Types.DescribeStackEventsOutput) => void): Request; - /** - * Returns all stack related events for a specified stack in reverse chronological order. For more information about a stack's event history, go to Stacks in the AWS CloudFormation User Guide. You can list events for stacks that have failed to create or have been deleted by specifying the unique stack identifier (stack ID). - */ - describeStackEvents(callback?: (err: AWSError, data: CloudFormation.Types.DescribeStackEventsOutput) => void): Request; - /** - * Returns the stack instance that's associated with the specified stack set, AWS account, and region. For a list of stack instances that are associated with a specific stack set, use ListStackInstances. - */ - describeStackInstance(params: CloudFormation.Types.DescribeStackInstanceInput, callback?: (err: AWSError, data: CloudFormation.Types.DescribeStackInstanceOutput) => void): Request; - /** - * Returns the stack instance that's associated with the specified stack set, AWS account, and region. For a list of stack instances that are associated with a specific stack set, use ListStackInstances. - */ - describeStackInstance(callback?: (err: AWSError, data: CloudFormation.Types.DescribeStackInstanceOutput) => void): Request; - /** - * Returns a description of the specified resource in the specified stack. For deleted stacks, DescribeStackResource returns resource information for up to 90 days after the stack has been deleted. - */ - describeStackResource(params: CloudFormation.Types.DescribeStackResourceInput, callback?: (err: AWSError, data: CloudFormation.Types.DescribeStackResourceOutput) => void): Request; - /** - * Returns a description of the specified resource in the specified stack. For deleted stacks, DescribeStackResource returns resource information for up to 90 days after the stack has been deleted. - */ - describeStackResource(callback?: (err: AWSError, data: CloudFormation.Types.DescribeStackResourceOutput) => void): Request; - /** - * Returns AWS resource descriptions for running and deleted stacks. If StackName is specified, all the associated resources that are part of the stack are returned. If PhysicalResourceId is specified, the associated resources of the stack that the resource belongs to are returned. Only the first 100 resources will be returned. If your stack has more resources than this, you should use ListStackResources instead. For deleted stacks, DescribeStackResources returns resource information for up to 90 days after the stack has been deleted. You must specify either StackName or PhysicalResourceId, but not both. In addition, you can specify LogicalResourceId to filter the returned result. For more information about resources, the LogicalResourceId and PhysicalResourceId, go to the AWS CloudFormation User Guide. A ValidationError is returned if you specify both StackName and PhysicalResourceId in the same request. - */ - describeStackResources(params: CloudFormation.Types.DescribeStackResourcesInput, callback?: (err: AWSError, data: CloudFormation.Types.DescribeStackResourcesOutput) => void): Request; - /** - * Returns AWS resource descriptions for running and deleted stacks. If StackName is specified, all the associated resources that are part of the stack are returned. If PhysicalResourceId is specified, the associated resources of the stack that the resource belongs to are returned. Only the first 100 resources will be returned. If your stack has more resources than this, you should use ListStackResources instead. For deleted stacks, DescribeStackResources returns resource information for up to 90 days after the stack has been deleted. You must specify either StackName or PhysicalResourceId, but not both. In addition, you can specify LogicalResourceId to filter the returned result. For more information about resources, the LogicalResourceId and PhysicalResourceId, go to the AWS CloudFormation User Guide. A ValidationError is returned if you specify both StackName and PhysicalResourceId in the same request. - */ - describeStackResources(callback?: (err: AWSError, data: CloudFormation.Types.DescribeStackResourcesOutput) => void): Request; - /** - * Returns the description of the specified stack set. - */ - describeStackSet(params: CloudFormation.Types.DescribeStackSetInput, callback?: (err: AWSError, data: CloudFormation.Types.DescribeStackSetOutput) => void): Request; - /** - * Returns the description of the specified stack set. - */ - describeStackSet(callback?: (err: AWSError, data: CloudFormation.Types.DescribeStackSetOutput) => void): Request; - /** - * Returns the description of the specified stack set operation. - */ - describeStackSetOperation(params: CloudFormation.Types.DescribeStackSetOperationInput, callback?: (err: AWSError, data: CloudFormation.Types.DescribeStackSetOperationOutput) => void): Request; - /** - * Returns the description of the specified stack set operation. - */ - describeStackSetOperation(callback?: (err: AWSError, data: CloudFormation.Types.DescribeStackSetOperationOutput) => void): Request; - /** - * Returns the description for the specified stack; if no stack name was specified, then it returns the description for all the stacks created. If the stack does not exist, an AmazonCloudFormationException is returned. - */ - describeStacks(params: CloudFormation.Types.DescribeStacksInput, callback?: (err: AWSError, data: CloudFormation.Types.DescribeStacksOutput) => void): Request; - /** - * Returns the description for the specified stack; if no stack name was specified, then it returns the description for all the stacks created. If the stack does not exist, an AmazonCloudFormationException is returned. - */ - describeStacks(callback?: (err: AWSError, data: CloudFormation.Types.DescribeStacksOutput) => void): Request; - /** - * Returns the estimated monthly cost of a template. The return value is an AWS Simple Monthly Calculator URL with a query string that describes the resources required to run the template. - */ - estimateTemplateCost(params: CloudFormation.Types.EstimateTemplateCostInput, callback?: (err: AWSError, data: CloudFormation.Types.EstimateTemplateCostOutput) => void): Request; - /** - * Returns the estimated monthly cost of a template. The return value is an AWS Simple Monthly Calculator URL with a query string that describes the resources required to run the template. - */ - estimateTemplateCost(callback?: (err: AWSError, data: CloudFormation.Types.EstimateTemplateCostOutput) => void): Request; - /** - * Updates a stack using the input information that was provided when the specified change set was created. After the call successfully completes, AWS CloudFormation starts updating the stack. Use the DescribeStacks action to view the status of the update. When you execute a change set, AWS CloudFormation deletes all other change sets associated with the stack because they aren't valid for the updated stack. If a stack policy is associated with the stack, AWS CloudFormation enforces the policy during the update. You can't specify a temporary stack policy that overrides the current policy. - */ - executeChangeSet(params: CloudFormation.Types.ExecuteChangeSetInput, callback?: (err: AWSError, data: CloudFormation.Types.ExecuteChangeSetOutput) => void): Request; - /** - * Updates a stack using the input information that was provided when the specified change set was created. After the call successfully completes, AWS CloudFormation starts updating the stack. Use the DescribeStacks action to view the status of the update. When you execute a change set, AWS CloudFormation deletes all other change sets associated with the stack because they aren't valid for the updated stack. If a stack policy is associated with the stack, AWS CloudFormation enforces the policy during the update. You can't specify a temporary stack policy that overrides the current policy. - */ - executeChangeSet(callback?: (err: AWSError, data: CloudFormation.Types.ExecuteChangeSetOutput) => void): Request; - /** - * Returns the stack policy for a specified stack. If a stack doesn't have a policy, a null value is returned. - */ - getStackPolicy(params: CloudFormation.Types.GetStackPolicyInput, callback?: (err: AWSError, data: CloudFormation.Types.GetStackPolicyOutput) => void): Request; - /** - * Returns the stack policy for a specified stack. If a stack doesn't have a policy, a null value is returned. - */ - getStackPolicy(callback?: (err: AWSError, data: CloudFormation.Types.GetStackPolicyOutput) => void): Request; - /** - * Returns the template body for a specified stack. You can get the template for running or deleted stacks. For deleted stacks, GetTemplate returns the template for up to 90 days after the stack has been deleted. If the template does not exist, a ValidationError is returned. - */ - getTemplate(params: CloudFormation.Types.GetTemplateInput, callback?: (err: AWSError, data: CloudFormation.Types.GetTemplateOutput) => void): Request; - /** - * Returns the template body for a specified stack. You can get the template for running or deleted stacks. For deleted stacks, GetTemplate returns the template for up to 90 days after the stack has been deleted. If the template does not exist, a ValidationError is returned. - */ - getTemplate(callback?: (err: AWSError, data: CloudFormation.Types.GetTemplateOutput) => void): Request; - /** - * Returns information about a new or existing template. The GetTemplateSummary action is useful for viewing parameter information, such as default parameter values and parameter types, before you create or update a stack or stack set. You can use the GetTemplateSummary action when you submit a template, or you can get template information for a stack set, or a running or deleted stack. For deleted stacks, GetTemplateSummary returns the template information for up to 90 days after the stack has been deleted. If the template does not exist, a ValidationError is returned. - */ - getTemplateSummary(params: CloudFormation.Types.GetTemplateSummaryInput, callback?: (err: AWSError, data: CloudFormation.Types.GetTemplateSummaryOutput) => void): Request; - /** - * Returns information about a new or existing template. The GetTemplateSummary action is useful for viewing parameter information, such as default parameter values and parameter types, before you create or update a stack or stack set. You can use the GetTemplateSummary action when you submit a template, or you can get template information for a stack set, or a running or deleted stack. For deleted stacks, GetTemplateSummary returns the template information for up to 90 days after the stack has been deleted. If the template does not exist, a ValidationError is returned. - */ - getTemplateSummary(callback?: (err: AWSError, data: CloudFormation.Types.GetTemplateSummaryOutput) => void): Request; - /** - * Returns the ID and status of each active change set for a stack. For example, AWS CloudFormation lists change sets that are in the CREATE_IN_PROGRESS or CREATE_PENDING state. - */ - listChangeSets(params: CloudFormation.Types.ListChangeSetsInput, callback?: (err: AWSError, data: CloudFormation.Types.ListChangeSetsOutput) => void): Request; - /** - * Returns the ID and status of each active change set for a stack. For example, AWS CloudFormation lists change sets that are in the CREATE_IN_PROGRESS or CREATE_PENDING state. - */ - listChangeSets(callback?: (err: AWSError, data: CloudFormation.Types.ListChangeSetsOutput) => void): Request; - /** - * Lists all exported output values in the account and region in which you call this action. Use this action to see the exported output values that you can import into other stacks. To import values, use the Fn::ImportValue function. For more information, see AWS CloudFormation Export Stack Output Values. - */ - listExports(params: CloudFormation.Types.ListExportsInput, callback?: (err: AWSError, data: CloudFormation.Types.ListExportsOutput) => void): Request; - /** - * Lists all exported output values in the account and region in which you call this action. Use this action to see the exported output values that you can import into other stacks. To import values, use the Fn::ImportValue function. For more information, see AWS CloudFormation Export Stack Output Values. - */ - listExports(callback?: (err: AWSError, data: CloudFormation.Types.ListExportsOutput) => void): Request; - /** - * Lists all stacks that are importing an exported output value. To modify or remove an exported output value, first use this action to see which stacks are using it. To see the exported output values in your account, see ListExports. For more information about importing an exported output value, see the Fn::ImportValue function. - */ - listImports(params: CloudFormation.Types.ListImportsInput, callback?: (err: AWSError, data: CloudFormation.Types.ListImportsOutput) => void): Request; - /** - * Lists all stacks that are importing an exported output value. To modify or remove an exported output value, first use this action to see which stacks are using it. To see the exported output values in your account, see ListExports. For more information about importing an exported output value, see the Fn::ImportValue function. - */ - listImports(callback?: (err: AWSError, data: CloudFormation.Types.ListImportsOutput) => void): Request; - /** - * Returns summary information about stack instances that are associated with the specified stack set. You can filter for stack instances that are associated with a specific AWS account name or region. - */ - listStackInstances(params: CloudFormation.Types.ListStackInstancesInput, callback?: (err: AWSError, data: CloudFormation.Types.ListStackInstancesOutput) => void): Request; - /** - * Returns summary information about stack instances that are associated with the specified stack set. You can filter for stack instances that are associated with a specific AWS account name or region. - */ - listStackInstances(callback?: (err: AWSError, data: CloudFormation.Types.ListStackInstancesOutput) => void): Request; - /** - * Returns descriptions of all resources of the specified stack. For deleted stacks, ListStackResources returns resource information for up to 90 days after the stack has been deleted. - */ - listStackResources(params: CloudFormation.Types.ListStackResourcesInput, callback?: (err: AWSError, data: CloudFormation.Types.ListStackResourcesOutput) => void): Request; - /** - * Returns descriptions of all resources of the specified stack. For deleted stacks, ListStackResources returns resource information for up to 90 days after the stack has been deleted. - */ - listStackResources(callback?: (err: AWSError, data: CloudFormation.Types.ListStackResourcesOutput) => void): Request; - /** - * Returns summary information about the results of a stack set operation. - */ - listStackSetOperationResults(params: CloudFormation.Types.ListStackSetOperationResultsInput, callback?: (err: AWSError, data: CloudFormation.Types.ListStackSetOperationResultsOutput) => void): Request; - /** - * Returns summary information about the results of a stack set operation. - */ - listStackSetOperationResults(callback?: (err: AWSError, data: CloudFormation.Types.ListStackSetOperationResultsOutput) => void): Request; - /** - * Returns summary information about operations performed on a stack set. - */ - listStackSetOperations(params: CloudFormation.Types.ListStackSetOperationsInput, callback?: (err: AWSError, data: CloudFormation.Types.ListStackSetOperationsOutput) => void): Request; - /** - * Returns summary information about operations performed on a stack set. - */ - listStackSetOperations(callback?: (err: AWSError, data: CloudFormation.Types.ListStackSetOperationsOutput) => void): Request; - /** - * Returns summary information about stack sets that are associated with the user. - */ - listStackSets(params: CloudFormation.Types.ListStackSetsInput, callback?: (err: AWSError, data: CloudFormation.Types.ListStackSetsOutput) => void): Request; - /** - * Returns summary information about stack sets that are associated with the user. - */ - listStackSets(callback?: (err: AWSError, data: CloudFormation.Types.ListStackSetsOutput) => void): Request; - /** - * Returns the summary information for stacks whose status matches the specified StackStatusFilter. Summary information for stacks that have been deleted is kept for 90 days after the stack is deleted. If no StackStatusFilter is specified, summary information for all stacks is returned (including existing stacks and stacks that have been deleted). - */ - listStacks(params: CloudFormation.Types.ListStacksInput, callback?: (err: AWSError, data: CloudFormation.Types.ListStacksOutput) => void): Request; - /** - * Returns the summary information for stacks whose status matches the specified StackStatusFilter. Summary information for stacks that have been deleted is kept for 90 days after the stack is deleted. If no StackStatusFilter is specified, summary information for all stacks is returned (including existing stacks and stacks that have been deleted). - */ - listStacks(callback?: (err: AWSError, data: CloudFormation.Types.ListStacksOutput) => void): Request; - /** - * Sets a stack policy for a specified stack. - */ - setStackPolicy(params: CloudFormation.Types.SetStackPolicyInput, callback?: (err: AWSError, data: {}) => void): Request<{}, AWSError>; - /** - * Sets a stack policy for a specified stack. - */ - setStackPolicy(callback?: (err: AWSError, data: {}) => void): Request<{}, AWSError>; - /** - * Sends a signal to the specified resource with a success or failure status. You can use the SignalResource API in conjunction with a creation policy or update policy. AWS CloudFormation doesn't proceed with a stack creation or update until resources receive the required number of signals or the timeout period is exceeded. The SignalResource API is useful in cases where you want to send signals from anywhere other than an Amazon EC2 instance. - */ - signalResource(params: CloudFormation.Types.SignalResourceInput, callback?: (err: AWSError, data: {}) => void): Request<{}, AWSError>; - /** - * Sends a signal to the specified resource with a success or failure status. You can use the SignalResource API in conjunction with a creation policy or update policy. AWS CloudFormation doesn't proceed with a stack creation or update until resources receive the required number of signals or the timeout period is exceeded. The SignalResource API is useful in cases where you want to send signals from anywhere other than an Amazon EC2 instance. - */ - signalResource(callback?: (err: AWSError, data: {}) => void): Request<{}, AWSError>; - /** - * Stops an in-progress operation on a stack set and its associated stack instances. - */ - stopStackSetOperation(params: CloudFormation.Types.StopStackSetOperationInput, callback?: (err: AWSError, data: CloudFormation.Types.StopStackSetOperationOutput) => void): Request; - /** - * Stops an in-progress operation on a stack set and its associated stack instances. - */ - stopStackSetOperation(callback?: (err: AWSError, data: CloudFormation.Types.StopStackSetOperationOutput) => void): Request; - /** - * Updates a stack as specified in the template. After the call completes successfully, the stack update starts. You can check the status of the stack via the DescribeStacks action. To get a copy of the template for an existing stack, you can use the GetTemplate action. For more information about creating an update template, updating a stack, and monitoring the progress of the update, see Updating a Stack. - */ - updateStack(params: CloudFormation.Types.UpdateStackInput, callback?: (err: AWSError, data: CloudFormation.Types.UpdateStackOutput) => void): Request; - /** - * Updates a stack as specified in the template. After the call completes successfully, the stack update starts. You can check the status of the stack via the DescribeStacks action. To get a copy of the template for an existing stack, you can use the GetTemplate action. For more information about creating an update template, updating a stack, and monitoring the progress of the update, see Updating a Stack. - */ - updateStack(callback?: (err: AWSError, data: CloudFormation.Types.UpdateStackOutput) => void): Request; - /** - * Updates the stack set and all associated stack instances. Even if the stack set operation created by updating the stack set fails (completely or partially, below or above a specified failure tolerance), the stack set is updated with your changes. Subsequent CreateStackInstances calls on the specified stack set use the updated stack set. - */ - updateStackSet(params: CloudFormation.Types.UpdateStackSetInput, callback?: (err: AWSError, data: CloudFormation.Types.UpdateStackSetOutput) => void): Request; - /** - * Updates the stack set and all associated stack instances. Even if the stack set operation created by updating the stack set fails (completely or partially, below or above a specified failure tolerance), the stack set is updated with your changes. Subsequent CreateStackInstances calls on the specified stack set use the updated stack set. - */ - updateStackSet(callback?: (err: AWSError, data: CloudFormation.Types.UpdateStackSetOutput) => void): Request; - /** - * Updates termination protection for the specified stack. If a user attempts to delete a stack with termination protection enabled, the operation fails and the stack remains unchanged. For more information, see Protecting a Stack From Being Deleted in the AWS CloudFormation User Guide. For nested stacks, termination protection is set on the root stack and cannot be changed directly on the nested stack. - */ - updateTerminationProtection(params: CloudFormation.Types.UpdateTerminationProtectionInput, callback?: (err: AWSError, data: CloudFormation.Types.UpdateTerminationProtectionOutput) => void): Request; - /** - * Updates termination protection for the specified stack. If a user attempts to delete a stack with termination protection enabled, the operation fails and the stack remains unchanged. For more information, see Protecting a Stack From Being Deleted in the AWS CloudFormation User Guide. For nested stacks, termination protection is set on the root stack and cannot be changed directly on the nested stack. - */ - updateTerminationProtection(callback?: (err: AWSError, data: CloudFormation.Types.UpdateTerminationProtectionOutput) => void): Request; - /** - * Validates a specified template. AWS CloudFormation first checks if the template is valid JSON. If it isn't, AWS CloudFormation checks if the template is valid YAML. If both these checks fail, AWS CloudFormation returns a template validation error. - */ - validateTemplate(params: CloudFormation.Types.ValidateTemplateInput, callback?: (err: AWSError, data: CloudFormation.Types.ValidateTemplateOutput) => void): Request; - /** - * Validates a specified template. AWS CloudFormation first checks if the template is valid JSON. If it isn't, AWS CloudFormation checks if the template is valid YAML. If both these checks fail, AWS CloudFormation returns a template validation error. - */ - validateTemplate(callback?: (err: AWSError, data: CloudFormation.Types.ValidateTemplateOutput) => void): Request; - /** - * Waits for the stackExists state by periodically calling the underlying CloudFormation.describeStacksoperation every 5 seconds (at most 20 times). - */ - waitFor(state: "stackExists", params: CloudFormation.Types.DescribeStacksInput, callback?: (err: AWSError, data: CloudFormation.Types.DescribeStacksOutput) => void): Request; - /** - * Waits for the stackExists state by periodically calling the underlying CloudFormation.describeStacksoperation every 5 seconds (at most 20 times). - */ - waitFor(state: "stackExists", callback?: (err: AWSError, data: CloudFormation.Types.DescribeStacksOutput) => void): Request; - /** - * Waits for the stackCreateComplete state by periodically calling the underlying CloudFormation.describeStacksoperation every 30 seconds (at most 120 times). Wait until stack status is CREATE_COMPLETE. - */ - waitFor(state: "stackCreateComplete", params: CloudFormation.Types.DescribeStacksInput, callback?: (err: AWSError, data: CloudFormation.Types.DescribeStacksOutput) => void): Request; - /** - * Waits for the stackCreateComplete state by periodically calling the underlying CloudFormation.describeStacksoperation every 30 seconds (at most 120 times). Wait until stack status is CREATE_COMPLETE. - */ - waitFor(state: "stackCreateComplete", callback?: (err: AWSError, data: CloudFormation.Types.DescribeStacksOutput) => void): Request; - /** - * Waits for the stackDeleteComplete state by periodically calling the underlying CloudFormation.describeStacksoperation every 30 seconds (at most 120 times). Wait until stack status is DELETE_COMPLETE. - */ - waitFor(state: "stackDeleteComplete", params: CloudFormation.Types.DescribeStacksInput, callback?: (err: AWSError, data: CloudFormation.Types.DescribeStacksOutput) => void): Request; - /** - * Waits for the stackDeleteComplete state by periodically calling the underlying CloudFormation.describeStacksoperation every 30 seconds (at most 120 times). Wait until stack status is DELETE_COMPLETE. - */ - waitFor(state: "stackDeleteComplete", callback?: (err: AWSError, data: CloudFormation.Types.DescribeStacksOutput) => void): Request; - /** - * Waits for the stackUpdateComplete state by periodically calling the underlying CloudFormation.describeStacksoperation every 30 seconds (at most 120 times). Wait until stack status is UPDATE_COMPLETE. - */ - waitFor(state: "stackUpdateComplete", params: CloudFormation.Types.DescribeStacksInput, callback?: (err: AWSError, data: CloudFormation.Types.DescribeStacksOutput) => void): Request; - /** - * Waits for the stackUpdateComplete state by periodically calling the underlying CloudFormation.describeStacksoperation every 30 seconds (at most 120 times). Wait until stack status is UPDATE_COMPLETE. - */ - waitFor(state: "stackUpdateComplete", callback?: (err: AWSError, data: CloudFormation.Types.DescribeStacksOutput) => void): Request; - /** - * Waits for the changeSetCreateComplete state by periodically calling the underlying CloudFormation.describeChangeSetoperation every 30 seconds (at most 120 times). Wait until change set status is CREATE_COMPLETE. - */ - waitFor(state: "changeSetCreateComplete", params: CloudFormation.Types.DescribeChangeSetInput, callback?: (err: AWSError, data: CloudFormation.Types.DescribeChangeSetOutput) => void): Request; - /** - * Waits for the changeSetCreateComplete state by periodically calling the underlying CloudFormation.describeChangeSetoperation every 30 seconds (at most 120 times). Wait until change set status is CREATE_COMPLETE. - */ - waitFor(state: "changeSetCreateComplete", callback?: (err: AWSError, data: CloudFormation.Types.DescribeChangeSetOutput) => void): Request; -} -declare namespace CloudFormation { - export type Account = string; - export interface AccountGateResult { - /** - * The status of the account gate function. SUCCEEDED: The account gate function has determined that the account and region passes any requirements for a stack set operation to occur. AWS CloudFormation proceeds with the stack operation in that account and region. FAILED: The account gate function has determined that the account and region does not meet the requirements for a stack set operation to occur. AWS CloudFormation cancels the stack set operation in that account and region, and sets the stack set operation result status for that account and region to FAILED. SKIPPED: AWS CloudFormation has skipped calling the account gate function for this account and region, for one of the following reasons: An account gate function has not been specified for the account and region. AWS CloudFormation proceeds with the stack set operation in this account and region. The AWSCloudFormationStackSetExecutionRole of the stack set adminstration account lacks permissions to invoke the function. AWS CloudFormation proceeds with the stack set operation in this account and region. Either no action is necessary, or no action is possible, on the stack. AWS CloudFormation skips the stack set operation in this account and region. - */ - Status?: AccountGateStatus; - /** - * The reason for the account gate status assigned to this account and region for the stack set operation. - */ - StatusReason?: AccountGateStatusReason; - } - export type AccountGateStatus = "SUCCEEDED"|"FAILED"|"SKIPPED"|string; - export type AccountGateStatusReason = string; - export interface AccountLimit { - /** - * The name of the account limit. Currently, the only account limit is StackLimit. - */ - Name?: LimitName; - /** - * The value that is associated with the account limit name. - */ - Value?: LimitValue; - } - export type AccountLimitList = AccountLimit[]; - export type AccountList = Account[]; - export type AllowedValue = string; - export type AllowedValues = AllowedValue[]; - export type Arn = string; - export interface CancelUpdateStackInput { - /** - * The name or the unique stack ID that is associated with the stack. - */ - StackName: StackName; - /** - * A unique identifier for this CancelUpdateStack request. Specify this token if you plan to retry requests so that AWS CloudFormation knows that you're not attempting to cancel an update on a stack with the same name. You might retry CancelUpdateStack requests to ensure that AWS CloudFormation successfully received them. - */ - ClientRequestToken?: ClientRequestToken; - } - export type Capabilities = Capability[]; - export type CapabilitiesReason = string; - export type Capability = "CAPABILITY_IAM"|"CAPABILITY_NAMED_IAM"|string; - export type CausingEntity = string; - export interface Change { - /** - * The type of entity that AWS CloudFormation changes. Currently, the only entity type is Resource. - */ - Type?: ChangeType; - /** - * A ResourceChange structure that describes the resource and action that AWS CloudFormation will perform. - */ - ResourceChange?: ResourceChange; - } - export type ChangeAction = "Add"|"Modify"|"Remove"|string; - export type ChangeSetId = string; - export type ChangeSetName = string; - export type ChangeSetNameOrId = string; - export type ChangeSetStatus = "CREATE_PENDING"|"CREATE_IN_PROGRESS"|"CREATE_COMPLETE"|"DELETE_COMPLETE"|"FAILED"|string; - export type ChangeSetStatusReason = string; - export type ChangeSetSummaries = ChangeSetSummary[]; - export interface ChangeSetSummary { - /** - * The ID of the stack with which the change set is associated. - */ - StackId?: StackId; - /** - * The name of the stack with which the change set is associated. - */ - StackName?: StackName; - /** - * The ID of the change set. - */ - ChangeSetId?: ChangeSetId; - /** - * The name of the change set. - */ - ChangeSetName?: ChangeSetName; - /** - * If the change set execution status is AVAILABLE, you can execute the change set. If you can’t execute the change set, the status indicates why. For example, a change set might be in an UNAVAILABLE state because AWS CloudFormation is still creating it or in an OBSOLETE state because the stack was already updated. - */ - ExecutionStatus?: ExecutionStatus; - /** - * The state of the change set, such as CREATE_IN_PROGRESS, CREATE_COMPLETE, or FAILED. - */ - Status?: ChangeSetStatus; - /** - * A description of the change set's status. For example, if your change set is in the FAILED state, AWS CloudFormation shows the error message. - */ - StatusReason?: ChangeSetStatusReason; - /** - * The start time when the change set was created, in UTC. - */ - CreationTime?: CreationTime; - /** - * Descriptive information about the change set. - */ - Description?: Description; - } - export type ChangeSetType = "CREATE"|"UPDATE"|string; - export type ChangeSource = "ResourceReference"|"ParameterReference"|"ResourceAttribute"|"DirectModification"|"Automatic"|string; - export type ChangeType = "Resource"|string; - export type Changes = Change[]; - export type ClientRequestToken = string; - export type ClientToken = string; - export interface ContinueUpdateRollbackInput { - /** - * The name or the unique ID of the stack that you want to continue rolling back. Don't specify the name of a nested stack (a stack that was created by using the AWS::CloudFormation::Stack resource). Instead, use this operation on the parent stack (the stack that contains the AWS::CloudFormation::Stack resource). - */ - StackName: StackNameOrId; - /** - * The Amazon Resource Name (ARN) of an AWS Identity and Access Management (IAM) role that AWS CloudFormation assumes to roll back the stack. AWS CloudFormation uses the role's credentials to make calls on your behalf. AWS CloudFormation always uses this role for all future operations on the stack. As long as users have permission to operate on the stack, AWS CloudFormation uses this role even if the users don't have permission to pass it. Ensure that the role grants least privilege. If you don't specify a value, AWS CloudFormation uses the role that was previously associated with the stack. If no role is available, AWS CloudFormation uses a temporary session that is generated from your user credentials. - */ - RoleARN?: RoleARN; - /** - * A list of the logical IDs of the resources that AWS CloudFormation skips during the continue update rollback operation. You can specify only resources that are in the UPDATE_FAILED state because a rollback failed. You can't specify resources that are in the UPDATE_FAILED state for other reasons, for example, because an update was cancelled. To check why a resource update failed, use the DescribeStackResources action, and view the resource status reason. Specify this property to skip rolling back resources that AWS CloudFormation can't successfully roll back. We recommend that you troubleshoot resources before skipping them. AWS CloudFormation sets the status of the specified resources to UPDATE_COMPLETE and continues to roll back the stack. After the rollback is complete, the state of the skipped resources will be inconsistent with the state of the resources in the stack template. Before performing another stack update, you must update the stack or resources to be consistent with each other. If you don't, subsequent stack updates might fail, and the stack will become unrecoverable. Specify the minimum number of resources required to successfully roll back your stack. For example, a failed resource update might cause dependent resources to fail. In this case, it might not be necessary to skip the dependent resources. To skip resources that are part of nested stacks, use the following format: NestedStackName.ResourceLogicalID. If you want to specify the logical ID of a stack resource (Type: AWS::CloudFormation::Stack) in the ResourcesToSkip list, then its corresponding embedded stack must be in one of the following states: DELETE_IN_PROGRESS, DELETE_COMPLETE, or DELETE_FAILED. Don't confuse a child stack's name with its corresponding logical ID defined in the parent stack. For an example of a continue update rollback operation with nested stacks, see Using ResourcesToSkip to recover a nested stacks hierarchy. - */ - ResourcesToSkip?: ResourcesToSkip; - /** - * A unique identifier for this ContinueUpdateRollback request. Specify this token if you plan to retry requests so that AWS CloudFormation knows that you're not attempting to continue the rollback to a stack with the same name. You might retry ContinueUpdateRollback requests to ensure that AWS CloudFormation successfully received them. - */ - ClientRequestToken?: ClientRequestToken; - } - export interface ContinueUpdateRollbackOutput { - } - export interface CreateChangeSetInput { - /** - * The name or the unique ID of the stack for which you are creating a change set. AWS CloudFormation generates the change set by comparing this stack's information with the information that you submit, such as a modified template or different parameter input values. - */ - StackName: StackNameOrId; - /** - * A structure that contains the body of the revised template, with a minimum length of 1 byte and a maximum length of 51,200 bytes. AWS CloudFormation generates the change set by comparing this template with the template of the stack that you specified. Conditional: You must specify only TemplateBody or TemplateURL. - */ - TemplateBody?: TemplateBody; - /** - * The location of the file that contains the revised template. The URL must point to a template (max size: 460,800 bytes) that is located in an S3 bucket. AWS CloudFormation generates the change set by comparing this template with the stack that you specified. Conditional: You must specify only TemplateBody or TemplateURL. - */ - TemplateURL?: TemplateURL; - /** - * Whether to reuse the template that is associated with the stack to create the change set. - */ - UsePreviousTemplate?: UsePreviousTemplate; - /** - * A list of Parameter structures that specify input parameters for the change set. For more information, see the Parameter data type. - */ - Parameters?: Parameters; - /** - * A list of values that you must specify before AWS CloudFormation can update certain stacks. Some stack templates might include resources that can affect permissions in your AWS account, for example, by creating new AWS Identity and Access Management (IAM) users. For those stacks, you must explicitly acknowledge their capabilities by specifying this parameter. The only valid values are CAPABILITY_IAM and CAPABILITY_NAMED_IAM. The following resources require you to specify this parameter: AWS::IAM::AccessKey, AWS::IAM::Group, AWS::IAM::InstanceProfile, AWS::IAM::Policy, AWS::IAM::Role, AWS::IAM::User, and AWS::IAM::UserToGroupAddition. If your stack template contains these resources, we recommend that you review all permissions associated with them and edit their permissions if necessary. If you have IAM resources, you can specify either capability. If you have IAM resources with custom names, you must specify CAPABILITY_NAMED_IAM. If you don't specify this parameter, this action returns an InsufficientCapabilities error. For more information, see Acknowledging IAM Resources in AWS CloudFormation Templates. - */ - Capabilities?: Capabilities; - /** - * The template resource types that you have permissions to work with if you execute this change set, such as AWS::EC2::Instance, AWS::EC2::*, or Custom::MyCustomInstance. If the list of resource types doesn't include a resource type that you're updating, the stack update fails. By default, AWS CloudFormation grants permissions to all resource types. AWS Identity and Access Management (IAM) uses this parameter for condition keys in IAM policies for AWS CloudFormation. For more information, see Controlling Access with AWS Identity and Access Management in the AWS CloudFormation User Guide. - */ - ResourceTypes?: ResourceTypes; - /** - * The Amazon Resource Name (ARN) of an AWS Identity and Access Management (IAM) role that AWS CloudFormation assumes when executing the change set. AWS CloudFormation uses the role's credentials to make calls on your behalf. AWS CloudFormation uses this role for all future operations on the stack. As long as users have permission to operate on the stack, AWS CloudFormation uses this role even if the users don't have permission to pass it. Ensure that the role grants least privilege. If you don't specify a value, AWS CloudFormation uses the role that was previously associated with the stack. If no role is available, AWS CloudFormation uses a temporary session that is generated from your user credentials. - */ - RoleARN?: RoleARN; - /** - * The rollback triggers for AWS CloudFormation to monitor during stack creation and updating operations, and for the specified monitoring period afterwards. - */ - RollbackConfiguration?: RollbackConfiguration; - /** - * The Amazon Resource Names (ARNs) of Amazon Simple Notification Service (Amazon SNS) topics that AWS CloudFormation associates with the stack. To remove all associated notification topics, specify an empty list. - */ - NotificationARNs?: NotificationARNs; - /** - * Key-value pairs to associate with this stack. AWS CloudFormation also propagates these tags to resources in the stack. You can specify a maximum of 50 tags. - */ - Tags?: Tags; - /** - * The name of the change set. The name must be unique among all change sets that are associated with the specified stack. A change set name can contain only alphanumeric, case sensitive characters and hyphens. It must start with an alphabetic character and cannot exceed 128 characters. - */ - ChangeSetName: ChangeSetName; - /** - * A unique identifier for this CreateChangeSet request. Specify this token if you plan to retry requests so that AWS CloudFormation knows that you're not attempting to create another change set with the same name. You might retry CreateChangeSet requests to ensure that AWS CloudFormation successfully received them. - */ - ClientToken?: ClientToken; - /** - * A description to help you identify this change set. - */ - Description?: Description; - /** - * The type of change set operation. To create a change set for a new stack, specify CREATE. To create a change set for an existing stack, specify UPDATE. If you create a change set for a new stack, AWS Cloudformation creates a stack with a unique stack ID, but no template or resources. The stack will be in the REVIEW_IN_PROGRESS state until you execute the change set. By default, AWS CloudFormation specifies UPDATE. You can't use the UPDATE type to create a change set for a new stack or the CREATE type to create a change set for an existing stack. - */ - ChangeSetType?: ChangeSetType; - } - export interface CreateChangeSetOutput { - /** - * The Amazon Resource Name (ARN) of the change set. - */ - Id?: ChangeSetId; - /** - * The unique ID of the stack. - */ - StackId?: StackId; - } - export interface CreateStackInput { - /** - * The name that is associated with the stack. The name must be unique in the region in which you are creating the stack. A stack name can contain only alphanumeric characters (case sensitive) and hyphens. It must start with an alphabetic character and cannot be longer than 128 characters. - */ - StackName: StackName; - /** - * Structure containing the template body with a minimum length of 1 byte and a maximum length of 51,200 bytes. For more information, go to Template Anatomy in the AWS CloudFormation User Guide. Conditional: You must specify either the TemplateBody or the TemplateURL parameter, but not both. - */ - TemplateBody?: TemplateBody; - /** - * Location of file containing the template body. The URL must point to a template (max size: 460,800 bytes) that is located in an Amazon S3 bucket. For more information, go to the Template Anatomy in the AWS CloudFormation User Guide. Conditional: You must specify either the TemplateBody or the TemplateURL parameter, but not both. - */ - TemplateURL?: TemplateURL; - /** - * A list of Parameter structures that specify input parameters for the stack. For more information, see the Parameter data type. - */ - Parameters?: Parameters; - /** - * Set to true to disable rollback of the stack if stack creation failed. You can specify either DisableRollback or OnFailure, but not both. Default: false - */ - DisableRollback?: DisableRollback; - /** - * The rollback triggers for AWS CloudFormation to monitor during stack creation and updating operations, and for the specified monitoring period afterwards. - */ - RollbackConfiguration?: RollbackConfiguration; - /** - * The amount of time that can pass before the stack status becomes CREATE_FAILED; if DisableRollback is not set or is set to false, the stack will be rolled back. - */ - TimeoutInMinutes?: TimeoutMinutes; - /** - * The Simple Notification Service (SNS) topic ARNs to publish stack related events. You can find your SNS topic ARNs using the SNS console or your Command Line Interface (CLI). - */ - NotificationARNs?: NotificationARNs; - /** - * A list of values that you must specify before AWS CloudFormation can create certain stacks. Some stack templates might include resources that can affect permissions in your AWS account, for example, by creating new AWS Identity and Access Management (IAM) users. For those stacks, you must explicitly acknowledge their capabilities by specifying this parameter. The only valid values are CAPABILITY_IAM and CAPABILITY_NAMED_IAM. The following resources require you to specify this parameter: AWS::IAM::AccessKey, AWS::IAM::Group, AWS::IAM::InstanceProfile, AWS::IAM::Policy, AWS::IAM::Role, AWS::IAM::User, and AWS::IAM::UserToGroupAddition. If your stack template contains these resources, we recommend that you review all permissions associated with them and edit their permissions if necessary. If you have IAM resources, you can specify either capability. If you have IAM resources with custom names, you must specify CAPABILITY_NAMED_IAM. If you don't specify this parameter, this action returns an InsufficientCapabilities error. For more information, see Acknowledging IAM Resources in AWS CloudFormation Templates. - */ - Capabilities?: Capabilities; - /** - * The template resource types that you have permissions to work with for this create stack action, such as AWS::EC2::Instance, AWS::EC2::*, or Custom::MyCustomInstance. Use the following syntax to describe template resource types: AWS::* (for all AWS resource), Custom::* (for all custom resources), Custom::logical_ID (for a specific custom resource), AWS::service_name::* (for all resources of a particular AWS service), and AWS::service_name::resource_logical_ID (for a specific AWS resource). If the list of resource types doesn't include a resource that you're creating, the stack creation fails. By default, AWS CloudFormation grants permissions to all resource types. AWS Identity and Access Management (IAM) uses this parameter for AWS CloudFormation-specific condition keys in IAM policies. For more information, see Controlling Access with AWS Identity and Access Management. - */ - ResourceTypes?: ResourceTypes; - /** - * The Amazon Resource Name (ARN) of an AWS Identity and Access Management (IAM) role that AWS CloudFormation assumes to create the stack. AWS CloudFormation uses the role's credentials to make calls on your behalf. AWS CloudFormation always uses this role for all future operations on the stack. As long as users have permission to operate on the stack, AWS CloudFormation uses this role even if the users don't have permission to pass it. Ensure that the role grants least privilege. If you don't specify a value, AWS CloudFormation uses the role that was previously associated with the stack. If no role is available, AWS CloudFormation uses a temporary session that is generated from your user credentials. - */ - RoleARN?: RoleARN; - /** - * Determines what action will be taken if stack creation fails. This must be one of: DO_NOTHING, ROLLBACK, or DELETE. You can specify either OnFailure or DisableRollback, but not both. Default: ROLLBACK - */ - OnFailure?: OnFailure; - /** - * Structure containing the stack policy body. For more information, go to Prevent Updates to Stack Resources in the AWS CloudFormation User Guide. You can specify either the StackPolicyBody or the StackPolicyURL parameter, but not both. - */ - StackPolicyBody?: StackPolicyBody; - /** - * Location of a file containing the stack policy. The URL must point to a policy (maximum size: 16 KB) located in an S3 bucket in the same region as the stack. You can specify either the StackPolicyBody or the StackPolicyURL parameter, but not both. - */ - StackPolicyURL?: StackPolicyURL; - /** - * Key-value pairs to associate with this stack. AWS CloudFormation also propagates these tags to the resources created in the stack. A maximum number of 50 tags can be specified. - */ - Tags?: Tags; - /** - * A unique identifier for this CreateStack request. Specify this token if you plan to retry requests so that AWS CloudFormation knows that you're not attempting to create a stack with the same name. You might retry CreateStack requests to ensure that AWS CloudFormation successfully received them. All events triggered by a given stack operation are assigned the same client request token, which you can use to track operations. For example, if you execute a CreateStack operation with the token token1, then all the StackEvents generated by that operation will have ClientRequestToken set as token1. In the console, stack operations display the client request token on the Events tab. Stack operations that are initiated from the console use the token format Console-StackOperation-ID, which helps you easily identify the stack operation . For example, if you create a stack using the console, each stack event would be assigned the same token in the following format: Console-CreateStack-7f59c3cf-00d2-40c7-b2ff-e75db0987002. - */ - ClientRequestToken?: ClientRequestToken; - /** - * Whether to enable termination protection on the specified stack. If a user attempts to delete a stack with termination protection enabled, the operation fails and the stack remains unchanged. For more information, see Protecting a Stack From Being Deleted in the AWS CloudFormation User Guide. Termination protection is disabled on stacks by default. For nested stacks, termination protection is set on the root stack and cannot be changed directly on the nested stack. - */ - EnableTerminationProtection?: EnableTerminationProtection; - } - export interface CreateStackInstancesInput { - /** - * The name or unique ID of the stack set that you want to create stack instances from. - */ - StackSetName: StackSetName; - /** - * The names of one or more AWS accounts that you want to create stack instances in the specified region(s) for. - */ - Accounts: AccountList; - /** - * The names of one or more regions where you want to create stack instances using the specified AWS account(s). - */ - Regions: RegionList; - /** - * Preferences for how AWS CloudFormation performs this stack set operation. - */ - OperationPreferences?: StackSetOperationPreferences; - /** - * The unique identifier for this stack set operation. The operation ID also functions as an idempotency token, to ensure that AWS CloudFormation performs the stack set operation only once, even if you retry the request multiple times. You might retry stack set operation requests to ensure that AWS CloudFormation successfully received them. If you don't specify an operation ID, the SDK generates one automatically. Repeating this stack set operation with a new operation ID retries all stack instances whose status is OUTDATED. - */ - OperationId?: ClientRequestToken; - } - export interface CreateStackInstancesOutput { - /** - * The unique identifier for this stack set operation. - */ - OperationId?: ClientRequestToken; - } - export interface CreateStackOutput { - /** - * Unique identifier of the stack. - */ - StackId?: StackId; - } - export interface CreateStackSetInput { - /** - * The name to associate with the stack set. The name must be unique in the region where you create your stack set. A stack name can contain only alphanumeric characters (case-sensitive) and hyphens. It must start with an alphabetic character and can't be longer than 128 characters. - */ - StackSetName: StackSetName; - /** - * A description of the stack set. You can use the description to identify the stack set's purpose or other important information. - */ - Description?: Description; - /** - * The structure that contains the template body, with a minimum length of 1 byte and a maximum length of 51,200 bytes. For more information, see Template Anatomy in the AWS CloudFormation User Guide. Conditional: You must specify either the TemplateBody or the TemplateURL parameter, but not both. - */ - TemplateBody?: TemplateBody; - /** - * The location of the file that contains the template body. The URL must point to a template (maximum size: 460,800 bytes) that's located in an Amazon S3 bucket. For more information, see Template Anatomy in the AWS CloudFormation User Guide. Conditional: You must specify either the TemplateBody or the TemplateURL parameter, but not both. - */ - TemplateURL?: TemplateURL; - /** - * The input parameters for the stack set template. - */ - Parameters?: Parameters; - /** - * A list of values that you must specify before AWS CloudFormation can create certain stack sets. Some stack set templates might include resources that can affect permissions in your AWS account—for example, by creating new AWS Identity and Access Management (IAM) users. For those stack sets, you must explicitly acknowledge their capabilities by specifying this parameter. The only valid values are CAPABILITY_IAM and CAPABILITY_NAMED_IAM. The following resources require you to specify this parameter: AWS::IAM::AccessKey AWS::IAM::Group AWS::IAM::InstanceProfile AWS::IAM::Policy AWS::IAM::Role AWS::IAM::User AWS::IAM::UserToGroupAddition If your stack template contains these resources, we recommend that you review all permissions that are associated with them and edit their permissions if necessary. If you have IAM resources, you can specify either capability. If you have IAM resources with custom names, you must specify CAPABILITY_NAMED_IAM. If you don't specify this parameter, this action returns an InsufficientCapabilities error. For more information, see Acknowledging IAM Resources in AWS CloudFormation Templates. - */ - Capabilities?: Capabilities; - /** - * The key-value pairs to associate with this stack set and the stacks created from it. AWS CloudFormation also propagates these tags to supported resources that are created in the stacks. A maximum number of 50 tags can be specified. If you specify tags as part of a CreateStackSet action, AWS CloudFormation checks to see if you have the required IAM permission to tag resources. If you don't, the entire CreateStackSet action fails with an access denied error, and the stack set is not created. - */ - Tags?: Tags; - /** - * A unique identifier for this CreateStackSet request. Specify this token if you plan to retry requests so that AWS CloudFormation knows that you're not attempting to create another stack set with the same name. You might retry CreateStackSet requests to ensure that AWS CloudFormation successfully received them. If you don't specify an operation ID, the SDK generates one automatically. - */ - ClientRequestToken?: ClientRequestToken; - } - export interface CreateStackSetOutput { - /** - * The ID of the stack set that you're creating. - */ - StackSetId?: StackSetId; - } - export type CreationTime = Date; - export interface DeleteChangeSetInput { - /** - * The name or Amazon Resource Name (ARN) of the change set that you want to delete. - */ - ChangeSetName: ChangeSetNameOrId; - /** - * If you specified the name of a change set to delete, specify the stack name or ID (ARN) that is associated with it. - */ - StackName?: StackNameOrId; - } - export interface DeleteChangeSetOutput { - } - export interface DeleteStackInput { - /** - * The name or the unique stack ID that is associated with the stack. - */ - StackName: StackName; - /** - * For stacks in the DELETE_FAILED state, a list of resource logical IDs that are associated with the resources you want to retain. During deletion, AWS CloudFormation deletes the stack but does not delete the retained resources. Retaining resources is useful when you cannot delete a resource, such as a non-empty S3 bucket, but you want to delete the stack. - */ - RetainResources?: RetainResources; - /** - * The Amazon Resource Name (ARN) of an AWS Identity and Access Management (IAM) role that AWS CloudFormation assumes to delete the stack. AWS CloudFormation uses the role's credentials to make calls on your behalf. If you don't specify a value, AWS CloudFormation uses the role that was previously associated with the stack. If no role is available, AWS CloudFormation uses a temporary session that is generated from your user credentials. - */ - RoleARN?: RoleARN; - /** - * A unique identifier for this DeleteStack request. Specify this token if you plan to retry requests so that AWS CloudFormation knows that you're not attempting to delete a stack with the same name. You might retry DeleteStack requests to ensure that AWS CloudFormation successfully received them. All events triggered by a given stack operation are assigned the same client request token, which you can use to track operations. For example, if you execute a CreateStack operation with the token token1, then all the StackEvents generated by that operation will have ClientRequestToken set as token1. In the console, stack operations display the client request token on the Events tab. Stack operations that are initiated from the console use the token format Console-StackOperation-ID, which helps you easily identify the stack operation . For example, if you create a stack using the console, each stack event would be assigned the same token in the following format: Console-CreateStack-7f59c3cf-00d2-40c7-b2ff-e75db0987002. - */ - ClientRequestToken?: ClientRequestToken; - } - export interface DeleteStackInstancesInput { - /** - * The name or unique ID of the stack set that you want to delete stack instances for. - */ - StackSetName: StackSetName; - /** - * The names of the AWS accounts that you want to delete stack instances for. - */ - Accounts: AccountList; - /** - * The regions where you want to delete stack set instances. - */ - Regions: RegionList; - /** - * Preferences for how AWS CloudFormation performs this stack set operation. - */ - OperationPreferences?: StackSetOperationPreferences; - /** - * Removes the stack instances from the specified stack set, but doesn't delete the stacks. You can't reassociate a retained stack or add an existing, saved stack to a new stack set. For more information, see Stack set operation options. - */ - RetainStacks: RetainStacks; - /** - * The unique identifier for this stack set operation. If you don't specify an operation ID, the SDK generates one automatically. The operation ID also functions as an idempotency token, to ensure that AWS CloudFormation performs the stack set operation only once, even if you retry the request multiple times. You can retry stack set operation requests to ensure that AWS CloudFormation successfully received them. Repeating this stack set operation with a new operation ID retries all stack instances whose status is OUTDATED. - */ - OperationId?: ClientRequestToken; - } - export interface DeleteStackInstancesOutput { - /** - * The unique identifier for this stack set operation. - */ - OperationId?: ClientRequestToken; - } - export interface DeleteStackSetInput { - /** - * The name or unique ID of the stack set that you're deleting. You can obtain this value by running ListStackSets. - */ - StackSetName: StackSetName; - } - export interface DeleteStackSetOutput { - } - export type DeletionTime = Date; - export interface DescribeAccountLimitsInput { - /** - * A string that identifies the next page of limits that you want to retrieve. - */ - NextToken?: NextToken; - } - export interface DescribeAccountLimitsOutput { - /** - * An account limit structure that contain a list of AWS CloudFormation account limits and their values. - */ - AccountLimits?: AccountLimitList; - /** - * If the output exceeds 1 MB in size, a string that identifies the next page of limits. If no additional page exists, this value is null. - */ - NextToken?: NextToken; - } - export interface DescribeChangeSetInput { - /** - * The name or Amazon Resource Name (ARN) of the change set that you want to describe. - */ - ChangeSetName: ChangeSetNameOrId; - /** - * If you specified the name of a change set, specify the stack name or ID (ARN) of the change set you want to describe. - */ - StackName?: StackNameOrId; - /** - * A string (provided by the DescribeChangeSet response output) that identifies the next page of information that you want to retrieve. - */ - NextToken?: NextToken; - } - export interface DescribeChangeSetOutput { - /** - * The name of the change set. - */ - ChangeSetName?: ChangeSetName; - /** - * The ARN of the change set. - */ - ChangeSetId?: ChangeSetId; - /** - * The ARN of the stack that is associated with the change set. - */ - StackId?: StackId; - /** - * The name of the stack that is associated with the change set. - */ - StackName?: StackName; - /** - * Information about the change set. - */ - Description?: Description; - /** - * A list of Parameter structures that describes the input parameters and their values used to create the change set. For more information, see the Parameter data type. - */ - Parameters?: Parameters; - /** - * The start time when the change set was created, in UTC. - */ - CreationTime?: CreationTime; - /** - * If the change set execution status is AVAILABLE, you can execute the change set. If you can’t execute the change set, the status indicates why. For example, a change set might be in an UNAVAILABLE state because AWS CloudFormation is still creating it or in an OBSOLETE state because the stack was already updated. - */ - ExecutionStatus?: ExecutionStatus; - /** - * The current status of the change set, such as CREATE_IN_PROGRESS, CREATE_COMPLETE, or FAILED. - */ - Status?: ChangeSetStatus; - /** - * A description of the change set's status. For example, if your attempt to create a change set failed, AWS CloudFormation shows the error message. - */ - StatusReason?: ChangeSetStatusReason; - /** - * The ARNs of the Amazon Simple Notification Service (Amazon SNS) topics that will be associated with the stack if you execute the change set. - */ - NotificationARNs?: NotificationARNs; - /** - * The rollback triggers for AWS CloudFormation to monitor during stack creation and updating operations, and for the specified monitoring period afterwards. - */ - RollbackConfiguration?: RollbackConfiguration; - /** - * If you execute the change set, the list of capabilities that were explicitly acknowledged when the change set was created. - */ - Capabilities?: Capabilities; - /** - * If you execute the change set, the tags that will be associated with the stack. - */ - Tags?: Tags; - /** - * A list of Change structures that describes the resources AWS CloudFormation changes if you execute the change set. - */ - Changes?: Changes; - /** - * If the output exceeds 1 MB, a string that identifies the next page of changes. If there is no additional page, this value is null. - */ - NextToken?: NextToken; - } - export interface DescribeStackEventsInput { - /** - * The name or the unique stack ID that is associated with the stack, which are not always interchangeable: Running stacks: You can specify either the stack's name or its unique stack ID. Deleted stacks: You must specify the unique stack ID. Default: There is no default value. - */ - StackName?: StackName; - /** - * A string that identifies the next page of events that you want to retrieve. - */ - NextToken?: NextToken; - } - export interface DescribeStackEventsOutput { - /** - * A list of StackEvents structures. - */ - StackEvents?: StackEvents; - /** - * If the output exceeds 1 MB in size, a string that identifies the next page of events. If no additional page exists, this value is null. - */ - NextToken?: NextToken; - } - export interface DescribeStackInstanceInput { - /** - * The name or the unique stack ID of the stack set that you want to get stack instance information for. - */ - StackSetName: StackSetName; - /** - * The ID of an AWS account that's associated with this stack instance. - */ - StackInstanceAccount: Account; - /** - * The name of a region that's associated with this stack instance. - */ - StackInstanceRegion: Region; - } - export interface DescribeStackInstanceOutput { - /** - * The stack instance that matches the specified request parameters. - */ - StackInstance?: StackInstance; - } - export interface DescribeStackResourceInput { - /** - * The name or the unique stack ID that is associated with the stack, which are not always interchangeable: Running stacks: You can specify either the stack's name or its unique stack ID. Deleted stacks: You must specify the unique stack ID. Default: There is no default value. - */ - StackName: StackName; - /** - * The logical name of the resource as specified in the template. Default: There is no default value. - */ - LogicalResourceId: LogicalResourceId; - } - export interface DescribeStackResourceOutput { - /** - * A StackResourceDetail structure containing the description of the specified resource in the specified stack. - */ - StackResourceDetail?: StackResourceDetail; - } - export interface DescribeStackResourcesInput { - /** - * The name or the unique stack ID that is associated with the stack, which are not always interchangeable: Running stacks: You can specify either the stack's name or its unique stack ID. Deleted stacks: You must specify the unique stack ID. Default: There is no default value. Required: Conditional. If you do not specify StackName, you must specify PhysicalResourceId. - */ - StackName?: StackName; - /** - * The logical name of the resource as specified in the template. Default: There is no default value. - */ - LogicalResourceId?: LogicalResourceId; - /** - * The name or unique identifier that corresponds to a physical instance ID of a resource supported by AWS CloudFormation. For example, for an Amazon Elastic Compute Cloud (EC2) instance, PhysicalResourceId corresponds to the InstanceId. You can pass the EC2 InstanceId to DescribeStackResources to find which stack the instance belongs to and what other resources are part of the stack. Required: Conditional. If you do not specify PhysicalResourceId, you must specify StackName. Default: There is no default value. - */ - PhysicalResourceId?: PhysicalResourceId; - } - export interface DescribeStackResourcesOutput { - /** - * A list of StackResource structures. - */ - StackResources?: StackResources; - } - export interface DescribeStackSetInput { - /** - * The name or unique ID of the stack set whose description you want. - */ - StackSetName: StackSetName; - } - export interface DescribeStackSetOperationInput { - /** - * The name or the unique stack ID of the stack set for the stack operation. - */ - StackSetName: StackSetName; - /** - * The unique ID of the stack set operation. - */ - OperationId: ClientRequestToken; - } - export interface DescribeStackSetOperationOutput { - /** - * The specified stack set operation. - */ - StackSetOperation?: StackSetOperation; - } - export interface DescribeStackSetOutput { - /** - * The specified stack set. - */ - StackSet?: StackSet; - } - export interface DescribeStacksInput { - /** - * The name or the unique stack ID that is associated with the stack, which are not always interchangeable: Running stacks: You can specify either the stack's name or its unique stack ID. Deleted stacks: You must specify the unique stack ID. Default: There is no default value. - */ - StackName?: StackName; - /** - * A string that identifies the next page of stacks that you want to retrieve. - */ - NextToken?: NextToken; - } - export interface DescribeStacksOutput { - /** - * A list of stack structures. - */ - Stacks?: Stacks; - /** - * If the output exceeds 1 MB in size, a string that identifies the next page of stacks. If no additional page exists, this value is null. - */ - NextToken?: NextToken; - } - export type Description = string; - export type DisableRollback = boolean; - export type EnableTerminationProtection = boolean; - export interface EstimateTemplateCostInput { - /** - * Structure containing the template body with a minimum length of 1 byte and a maximum length of 51,200 bytes. (For more information, go to Template Anatomy in the AWS CloudFormation User Guide.) Conditional: You must pass TemplateBody or TemplateURL. If both are passed, only TemplateBody is used. - */ - TemplateBody?: TemplateBody; - /** - * Location of file containing the template body. The URL must point to a template that is located in an Amazon S3 bucket. For more information, go to Template Anatomy in the AWS CloudFormation User Guide. Conditional: You must pass TemplateURL or TemplateBody. If both are passed, only TemplateBody is used. - */ - TemplateURL?: TemplateURL; - /** - * A list of Parameter structures that specify input parameters. - */ - Parameters?: Parameters; - } - export interface EstimateTemplateCostOutput { - /** - * An AWS Simple Monthly Calculator URL with a query string that describes the resources required to run the template. - */ - Url?: Url; - } - export type EvaluationType = "Static"|"Dynamic"|string; - export type EventId = string; - export interface ExecuteChangeSetInput { - /** - * The name or ARN of the change set that you want use to update the specified stack. - */ - ChangeSetName: ChangeSetNameOrId; - /** - * If you specified the name of a change set, specify the stack name or ID (ARN) that is associated with the change set you want to execute. - */ - StackName?: StackNameOrId; - /** - * A unique identifier for this ExecuteChangeSet request. Specify this token if you plan to retry requests so that AWS CloudFormation knows that you're not attempting to execute a change set to update a stack with the same name. You might retry ExecuteChangeSet requests to ensure that AWS CloudFormation successfully received them. - */ - ClientRequestToken?: ClientRequestToken; - } - export interface ExecuteChangeSetOutput { - } - export type ExecutionStatus = "UNAVAILABLE"|"AVAILABLE"|"EXECUTE_IN_PROGRESS"|"EXECUTE_COMPLETE"|"EXECUTE_FAILED"|"OBSOLETE"|string; - export interface Export { - /** - * The stack that contains the exported output name and value. - */ - ExportingStackId?: StackId; - /** - * The name of exported output value. Use this name and the Fn::ImportValue function to import the associated value into other stacks. The name is defined in the Export field in the associated stack's Outputs section. - */ - Name?: ExportName; - /** - * The value of the exported output, such as a resource physical ID. This value is defined in the Export field in the associated stack's Outputs section. - */ - Value?: ExportValue; - } - export type ExportName = string; - export type ExportValue = string; - export type Exports = Export[]; - export type FailureToleranceCount = number; - export type FailureTolerancePercentage = number; - export interface GetStackPolicyInput { - /** - * The name or unique stack ID that is associated with the stack whose policy you want to get. - */ - StackName: StackName; - } - export interface GetStackPolicyOutput { - /** - * Structure containing the stack policy body. (For more information, go to Prevent Updates to Stack Resources in the AWS CloudFormation User Guide.) - */ - StackPolicyBody?: StackPolicyBody; - } - export interface GetTemplateInput { - /** - * The name or the unique stack ID that is associated with the stack, which are not always interchangeable: Running stacks: You can specify either the stack's name or its unique stack ID. Deleted stacks: You must specify the unique stack ID. Default: There is no default value. - */ - StackName?: StackName; - /** - * The name or Amazon Resource Name (ARN) of a change set for which AWS CloudFormation returns the associated template. If you specify a name, you must also specify the StackName. - */ - ChangeSetName?: ChangeSetNameOrId; - /** - * For templates that include transforms, the stage of the template that AWS CloudFormation returns. To get the user-submitted template, specify Original. To get the template after AWS CloudFormation has processed all transforms, specify Processed. If the template doesn't include transforms, Original and Processed return the same template. By default, AWS CloudFormation specifies Original. - */ - TemplateStage?: TemplateStage; - } - export interface GetTemplateOutput { - /** - * Structure containing the template body. (For more information, go to Template Anatomy in the AWS CloudFormation User Guide.) AWS CloudFormation returns the same template that was used when the stack was created. - */ - TemplateBody?: TemplateBody; - /** - * The stage of the template that you can retrieve. For stacks, the Original and Processed templates are always available. For change sets, the Original template is always available. After AWS CloudFormation finishes creating the change set, the Processed template becomes available. - */ - StagesAvailable?: StageList; - } - export interface GetTemplateSummaryInput { - /** - * Structure containing the template body with a minimum length of 1 byte and a maximum length of 51,200 bytes. For more information about templates, see Template Anatomy in the AWS CloudFormation User Guide. Conditional: You must specify only one of the following parameters: StackName, StackSetName, TemplateBody, or TemplateURL. - */ - TemplateBody?: TemplateBody; - /** - * Location of file containing the template body. The URL must point to a template (max size: 460,800 bytes) that is located in an Amazon S3 bucket. For more information about templates, see Template Anatomy in the AWS CloudFormation User Guide. Conditional: You must specify only one of the following parameters: StackName, StackSetName, TemplateBody, or TemplateURL. - */ - TemplateURL?: TemplateURL; - /** - * The name or the stack ID that is associated with the stack, which are not always interchangeable. For running stacks, you can specify either the stack's name or its unique stack ID. For deleted stack, you must specify the unique stack ID. Conditional: You must specify only one of the following parameters: StackName, StackSetName, TemplateBody, or TemplateURL. - */ - StackName?: StackNameOrId; - /** - * The name or unique ID of the stack set from which the stack was created. Conditional: You must specify only one of the following parameters: StackName, StackSetName, TemplateBody, or TemplateURL. - */ - StackSetName?: StackSetNameOrId; - } - export interface GetTemplateSummaryOutput { - /** - * A list of parameter declarations that describe various properties for each parameter. - */ - Parameters?: ParameterDeclarations; - /** - * The value that is defined in the Description property of the template. - */ - Description?: Description; - /** - * The capabilities found within the template. If your template contains IAM resources, you must specify the CAPABILITY_IAM or CAPABILITY_NAMED_IAM value for this parameter when you use the CreateStack or UpdateStack actions with your template; otherwise, those actions return an InsufficientCapabilities error. For more information, see Acknowledging IAM Resources in AWS CloudFormation Templates. - */ - Capabilities?: Capabilities; - /** - * The list of resources that generated the values in the Capabilities response element. - */ - CapabilitiesReason?: CapabilitiesReason; - /** - * A list of all the template resource types that are defined in the template, such as AWS::EC2::Instance, AWS::Dynamo::Table, and Custom::MyCustomInstance. - */ - ResourceTypes?: ResourceTypes; - /** - * The AWS template format version, which identifies the capabilities of the template. - */ - Version?: Version; - /** - * The value that is defined for the Metadata property of the template. - */ - Metadata?: Metadata; - /** - * A list of the transforms that are declared in the template. - */ - DeclaredTransforms?: TransformsList; - } - export type Imports = StackName[]; - export type LastUpdatedTime = Date; - export type LimitName = string; - export type LimitValue = number; - export interface ListChangeSetsInput { - /** - * The name or the Amazon Resource Name (ARN) of the stack for which you want to list change sets. - */ - StackName: StackNameOrId; - /** - * A string (provided by the ListChangeSets response output) that identifies the next page of change sets that you want to retrieve. - */ - NextToken?: NextToken; - } - export interface ListChangeSetsOutput { - /** - * A list of ChangeSetSummary structures that provides the ID and status of each change set for the specified stack. - */ - Summaries?: ChangeSetSummaries; - /** - * If the output exceeds 1 MB, a string that identifies the next page of change sets. If there is no additional page, this value is null. - */ - NextToken?: NextToken; - } - export interface ListExportsInput { - /** - * A string (provided by the ListExports response output) that identifies the next page of exported output values that you asked to retrieve. - */ - NextToken?: NextToken; - } - export interface ListExportsOutput { - /** - * The output for the ListExports action. - */ - Exports?: Exports; - /** - * If the output exceeds 100 exported output values, a string that identifies the next page of exports. If there is no additional page, this value is null. - */ - NextToken?: NextToken; - } - export interface ListImportsInput { - /** - * The name of the exported output value. AWS CloudFormation returns the stack names that are importing this value. - */ - ExportName: ExportName; - /** - * A string (provided by the ListImports response output) that identifies the next page of stacks that are importing the specified exported output value. - */ - NextToken?: NextToken; - } - export interface ListImportsOutput { - /** - * A list of stack names that are importing the specified exported output value. - */ - Imports?: Imports; - /** - * A string that identifies the next page of exports. If there is no additional page, this value is null. - */ - NextToken?: NextToken; - } - export interface ListStackInstancesInput { - /** - * The name or unique ID of the stack set that you want to list stack instances for. - */ - StackSetName: StackSetName; - /** - * If the previous request didn't return all of the remaining results, the response's NextToken parameter value is set to a token. To retrieve the next set of results, call ListStackInstances again and assign that token to the request object's NextToken parameter. If there are no remaining results, the previous response object's NextToken parameter is set to null. - */ - NextToken?: NextToken; - /** - * The maximum number of results to be returned with a single call. If the number of available results exceeds this maximum, the response includes a NextToken value that you can assign to the NextToken request parameter to get the next set of results. - */ - MaxResults?: MaxResults; - /** - * The name of the AWS account that you want to list stack instances for. - */ - StackInstanceAccount?: Account; - /** - * The name of the region where you want to list stack instances. - */ - StackInstanceRegion?: Region; - } - export interface ListStackInstancesOutput { - /** - * A list of StackInstanceSummary structures that contain information about the specified stack instances. - */ - Summaries?: StackInstanceSummaries; - /** - * If the request doesn't return all of the remaining results, NextToken is set to a token. To retrieve the next set of results, call ListStackInstances again and assign that token to the request object's NextToken parameter. If the request returns all results, NextToken is set to null. - */ - NextToken?: NextToken; - } - export interface ListStackResourcesInput { - /** - * The name or the unique stack ID that is associated with the stack, which are not always interchangeable: Running stacks: You can specify either the stack's name or its unique stack ID. Deleted stacks: You must specify the unique stack ID. Default: There is no default value. - */ - StackName: StackName; - /** - * A string that identifies the next page of stack resources that you want to retrieve. - */ - NextToken?: NextToken; - } - export interface ListStackResourcesOutput { - /** - * A list of StackResourceSummary structures. - */ - StackResourceSummaries?: StackResourceSummaries; - /** - * If the output exceeds 1 MB, a string that identifies the next page of stack resources. If no additional page exists, this value is null. - */ - NextToken?: NextToken; - } - export interface ListStackSetOperationResultsInput { - /** - * The name or unique ID of the stack set that you want to get operation results for. - */ - StackSetName: StackSetName; - /** - * The ID of the stack set operation. - */ - OperationId: ClientRequestToken; - /** - * If the previous request didn't return all of the remaining results, the response object's NextToken parameter value is set to a token. To retrieve the next set of results, call ListStackSetOperationResults again and assign that token to the request object's NextToken parameter. If there are no remaining results, the previous response object's NextToken parameter is set to null. - */ - NextToken?: NextToken; - /** - * The maximum number of results to be returned with a single call. If the number of available results exceeds this maximum, the response includes a NextToken value that you can assign to the NextToken request parameter to get the next set of results. - */ - MaxResults?: MaxResults; - } - export interface ListStackSetOperationResultsOutput { - /** - * A list of StackSetOperationResultSummary structures that contain information about the specified operation results, for accounts and regions that are included in the operation. - */ - Summaries?: StackSetOperationResultSummaries; - /** - * If the request doesn't return all results, NextToken is set to a token. To retrieve the next set of results, call ListOperationResults again and assign that token to the request object's NextToken parameter. If there are no remaining results, NextToken is set to null. - */ - NextToken?: NextToken; - } - export interface ListStackSetOperationsInput { - /** - * The name or unique ID of the stack set that you want to get operation summaries for. - */ - StackSetName: StackSetName; - /** - * If the previous paginated request didn't return all of the remaining results, the response object's NextToken parameter value is set to a token. To retrieve the next set of results, call ListStackSetOperations again and assign that token to the request object's NextToken parameter. If there are no remaining results, the previous response object's NextToken parameter is set to null. - */ - NextToken?: NextToken; - /** - * The maximum number of results to be returned with a single call. If the number of available results exceeds this maximum, the response includes a NextToken value that you can assign to the NextToken request parameter to get the next set of results. - */ - MaxResults?: MaxResults; - } - export interface ListStackSetOperationsOutput { - /** - * A list of StackSetOperationSummary structures that contain summary information about operations for the specified stack set. - */ - Summaries?: StackSetOperationSummaries; - /** - * If the request doesn't return all results, NextToken is set to a token. To retrieve the next set of results, call ListOperationResults again and assign that token to the request object's NextToken parameter. If there are no remaining results, NextToken is set to null. - */ - NextToken?: NextToken; - } - export interface ListStackSetsInput { - /** - * If the previous paginated request didn't return all of the remaining results, the response object's NextToken parameter value is set to a token. To retrieve the next set of results, call ListStackSets again and assign that token to the request object's NextToken parameter. If there are no remaining results, the previous response object's NextToken parameter is set to null. - */ - NextToken?: NextToken; - /** - * The maximum number of results to be returned with a single call. If the number of available results exceeds this maximum, the response includes a NextToken value that you can assign to the NextToken request parameter to get the next set of results. - */ - MaxResults?: MaxResults; - /** - * The status of the stack sets that you want to get summary information about. - */ - Status?: StackSetStatus; - } - export interface ListStackSetsOutput { - /** - * A list of StackSetSummary structures that contain information about the user's stack sets. - */ - Summaries?: StackSetSummaries; - /** - * If the request doesn't return all of the remaining results, NextToken is set to a token. To retrieve the next set of results, call ListStackInstances again and assign that token to the request object's NextToken parameter. If the request returns all results, NextToken is set to null. - */ - NextToken?: NextToken; - } - export interface ListStacksInput { - /** - * A string that identifies the next page of stacks that you want to retrieve. - */ - NextToken?: NextToken; - /** - * Stack status to use as a filter. Specify one or more stack status codes to list only stacks with the specified status codes. For a complete list of stack status codes, see the StackStatus parameter of the Stack data type. - */ - StackStatusFilter?: StackStatusFilter; - } - export interface ListStacksOutput { - /** - * A list of StackSummary structures containing information about the specified stacks. - */ - StackSummaries?: StackSummaries; - /** - * If the output exceeds 1 MB in size, a string that identifies the next page of stacks. If no additional page exists, this value is null. - */ - NextToken?: NextToken; - } - export type LogicalResourceId = string; - export type MaxConcurrentCount = number; - export type MaxConcurrentPercentage = number; - export type MaxResults = number; - export type Metadata = string; - export type MonitoringTimeInMinutes = number; - export type NextToken = string; - export type NoEcho = boolean; - export type NotificationARN = string; - export type NotificationARNs = NotificationARN[]; - export type OnFailure = "DO_NOTHING"|"ROLLBACK"|"DELETE"|string; - export interface Output { - /** - * The key associated with the output. - */ - OutputKey?: OutputKey; - /** - * The value associated with the output. - */ - OutputValue?: OutputValue; - /** - * User defined description associated with the output. - */ - Description?: Description; - /** - * The name of the export associated with the output. - */ - ExportName?: ExportName; - } - export type OutputKey = string; - export type OutputValue = string; - export type Outputs = Output[]; - export interface Parameter { - /** - * The key associated with the parameter. If you don't specify a key and value for a particular parameter, AWS CloudFormation uses the default value that is specified in your template. - */ - ParameterKey?: ParameterKey; - /** - * The value associated with the parameter. - */ - ParameterValue?: ParameterValue; - /** - * During a stack update, use the existing parameter value that the stack is using for a given parameter key. If you specify true, do not specify a parameter value. - */ - UsePreviousValue?: UsePreviousValue; - } - export interface ParameterConstraints { - /** - * A list of values that are permitted for a parameter. - */ - AllowedValues?: AllowedValues; - } - export interface ParameterDeclaration { - /** - * The name that is associated with the parameter. - */ - ParameterKey?: ParameterKey; - /** - * The default value of the parameter. - */ - DefaultValue?: ParameterValue; - /** - * The type of parameter. - */ - ParameterType?: ParameterType; - /** - * Flag that indicates whether the parameter value is shown as plain text in logs and in the AWS Management Console. - */ - NoEcho?: NoEcho; - /** - * The description that is associate with the parameter. - */ - Description?: Description; - /** - * The criteria that AWS CloudFormation uses to validate parameter values. - */ - ParameterConstraints?: ParameterConstraints; - } - export type ParameterDeclarations = ParameterDeclaration[]; - export type ParameterKey = string; - export type ParameterType = string; - export type ParameterValue = string; - export type Parameters = Parameter[]; - export type PhysicalResourceId = string; - export type PropertyName = string; - export type Reason = string; - export type Region = string; - export type RegionList = Region[]; - export type Replacement = "True"|"False"|"Conditional"|string; - export type RequiresRecreation = "Never"|"Conditionally"|"Always"|string; - export type ResourceAttribute = "Properties"|"Metadata"|"CreationPolicy"|"UpdatePolicy"|"DeletionPolicy"|"Tags"|string; - export interface ResourceChange { - /** - * The action that AWS CloudFormation takes on the resource, such as Add (adds a new resource), Modify (changes a resource), or Remove (deletes a resource). - */ - Action?: ChangeAction; - /** - * The resource's logical ID, which is defined in the stack's template. - */ - LogicalResourceId?: LogicalResourceId; - /** - * The resource's physical ID (resource name). Resources that you are adding don't have physical IDs because they haven't been created. - */ - PhysicalResourceId?: PhysicalResourceId; - /** - * The type of AWS CloudFormation resource, such as AWS::S3::Bucket. - */ - ResourceType?: ResourceType; - /** - * For the Modify action, indicates whether AWS CloudFormation will replace the resource by creating a new one and deleting the old one. This value depends on the value of the RequiresRecreation property in the ResourceTargetDefinition structure. For example, if the RequiresRecreation field is Always and the Evaluation field is Static, Replacement is True. If the RequiresRecreation field is Always and the Evaluation field is Dynamic, Replacement is Conditionally. If you have multiple changes with different RequiresRecreation values, the Replacement value depends on the change with the most impact. A RequiresRecreation value of Always has the most impact, followed by Conditionally, and then Never. - */ - Replacement?: Replacement; - /** - * For the Modify action, indicates which resource attribute is triggering this update, such as a change in the resource attribute's Metadata, Properties, or Tags. - */ - Scope?: Scope; - /** - * For the Modify action, a list of ResourceChangeDetail structures that describes the changes that AWS CloudFormation will make to the resource. - */ - Details?: ResourceChangeDetails; - } - export interface ResourceChangeDetail { - /** - * A ResourceTargetDefinition structure that describes the field that AWS CloudFormation will change and whether the resource will be recreated. - */ - Target?: ResourceTargetDefinition; - /** - * Indicates whether AWS CloudFormation can determine the target value, and whether the target value will change before you execute a change set. For Static evaluations, AWS CloudFormation can determine that the target value will change, and its value. For example, if you directly modify the InstanceType property of an EC2 instance, AWS CloudFormation knows that this property value will change, and its value, so this is a Static evaluation. For Dynamic evaluations, cannot determine the target value because it depends on the result of an intrinsic function, such as a Ref or Fn::GetAtt intrinsic function, when the stack is updated. For example, if your template includes a reference to a resource that is conditionally recreated, the value of the reference (the physical ID of the resource) might change, depending on if the resource is recreated. If the resource is recreated, it will have a new physical ID, so all references to that resource will also be updated. - */ - Evaluation?: EvaluationType; - /** - * The group to which the CausingEntity value belongs. There are five entity groups: ResourceReference entities are Ref intrinsic functions that refer to resources in the template, such as { "Ref" : "MyEC2InstanceResource" }. ParameterReference entities are Ref intrinsic functions that get template parameter values, such as { "Ref" : "MyPasswordParameter" }. ResourceAttribute entities are Fn::GetAtt intrinsic functions that get resource attribute values, such as { "Fn::GetAtt" : [ "MyEC2InstanceResource", "PublicDnsName" ] }. DirectModification entities are changes that are made directly to the template. Automatic entities are AWS::CloudFormation::Stack resource types, which are also known as nested stacks. If you made no changes to the AWS::CloudFormation::Stack resource, AWS CloudFormation sets the ChangeSource to Automatic because the nested stack's template might have changed. Changes to a nested stack's template aren't visible to AWS CloudFormation until you run an update on the parent stack. - */ - ChangeSource?: ChangeSource; - /** - * The identity of the entity that triggered this change. This entity is a member of the group that is specified by the ChangeSource field. For example, if you modified the value of the KeyPairName parameter, the CausingEntity is the name of the parameter (KeyPairName). If the ChangeSource value is DirectModification, no value is given for CausingEntity. - */ - CausingEntity?: CausingEntity; - } - export type ResourceChangeDetails = ResourceChangeDetail[]; - export type ResourceProperties = string; - export type ResourceSignalStatus = "SUCCESS"|"FAILURE"|string; - export type ResourceSignalUniqueId = string; - export type ResourceStatus = "CREATE_IN_PROGRESS"|"CREATE_FAILED"|"CREATE_COMPLETE"|"DELETE_IN_PROGRESS"|"DELETE_FAILED"|"DELETE_COMPLETE"|"DELETE_SKIPPED"|"UPDATE_IN_PROGRESS"|"UPDATE_FAILED"|"UPDATE_COMPLETE"|string; - export type ResourceStatusReason = string; - export interface ResourceTargetDefinition { - /** - * Indicates which resource attribute is triggering this update, such as a change in the resource attribute's Metadata, Properties, or Tags. - */ - Attribute?: ResourceAttribute; - /** - * If the Attribute value is Properties, the name of the property. For all other attributes, the value is null. - */ - Name?: PropertyName; - /** - * If the Attribute value is Properties, indicates whether a change to this property causes the resource to be recreated. The value can be Never, Always, or Conditionally. To determine the conditions for a Conditionally recreation, see the update behavior for that property in the AWS CloudFormation User Guide. - */ - RequiresRecreation?: RequiresRecreation; - } - export type ResourceToSkip = string; - export type ResourceType = string; - export type ResourceTypes = ResourceType[]; - export type ResourcesToSkip = ResourceToSkip[]; - export type RetainResources = LogicalResourceId[]; - export type RetainStacks = boolean; - export type RetainStacksNullable = boolean; - export type RoleARN = string; - export interface RollbackConfiguration { - /** - * The triggers to monitor during stack creation or update actions. By default, AWS CloudFormation saves the rollback triggers specified for a stack and applies them to any subsequent update operations for the stack, unless you specify otherwise. If you do specify rollback triggers for this parameter, those triggers replace any list of triggers previously specified for the stack. This means: If you don't specify this parameter, AWS CloudFormation uses the rollback triggers previously specified for this stack, if any. If you specify any rollback triggers using this parameter, you must specify all the triggers that you want used for this stack, even triggers you've specifed before (for example, when creating the stack or during a previous stack update). Any triggers that you don't include in the updated list of triggers are no longer applied to the stack. If you specify an empty list, AWS CloudFormation removes all currently specified triggers. If a specified Cloudwatch alarm is missing, the entire stack operation fails and is rolled back. - */ - RollbackTriggers?: RollbackTriggers; - /** - * The amount of time, in minutes, during which CloudFormation should monitor all the rollback triggers after the stack creation or update operation deploys all necessary resources. If any of the alarms goes to ALERT state during the stack operation or this monitoring period, CloudFormation rolls back the entire stack operation. Then, for update operations, if the monitoring period expires without any alarms going to ALERT state CloudFormation proceeds to dispose of old resources as usual. If you specify a monitoring period but do not specify any rollback triggers, CloudFormation still waits the specified period of time before cleaning up old resources for update operations. You can use this monitoring period to perform any manual stack validation desired, and manually cancel the stack creation or update (using CancelUpdateStack, for example) as necessary. If you specify 0 for this parameter, CloudFormation still monitors the specified rollback triggers during stack creation and update operations. Then, for update operations, it begins disposing of old resources immediately once the operation completes. - */ - MonitoringTimeInMinutes?: MonitoringTimeInMinutes; - } - export interface RollbackTrigger { - /** - * The Amazon Resource Name (ARN) of the rollback trigger. - */ - Arn: Arn; - /** - * The resource type of the rollback trigger. Currently, AWS::CloudWatch::Alarm is the only supported resource type. - */ - Type: Type; - } - export type RollbackTriggers = RollbackTrigger[]; - export type Scope = ResourceAttribute[]; - export interface SetStackPolicyInput { - /** - * The name or unique stack ID that you want to associate a policy with. - */ - StackName: StackName; - /** - * Structure containing the stack policy body. For more information, go to Prevent Updates to Stack Resources in the AWS CloudFormation User Guide. You can specify either the StackPolicyBody or the StackPolicyURL parameter, but not both. - */ - StackPolicyBody?: StackPolicyBody; - /** - * Location of a file containing the stack policy. The URL must point to a policy (maximum size: 16 KB) located in an S3 bucket in the same region as the stack. You can specify either the StackPolicyBody or the StackPolicyURL parameter, but not both. - */ - StackPolicyURL?: StackPolicyURL; - } - export interface SignalResourceInput { - /** - * The stack name or unique stack ID that includes the resource that you want to signal. - */ - StackName: StackNameOrId; - /** - * The logical ID of the resource that you want to signal. The logical ID is the name of the resource that given in the template. - */ - LogicalResourceId: LogicalResourceId; - /** - * A unique ID of the signal. When you signal Amazon EC2 instances or Auto Scaling groups, specify the instance ID that you are signaling as the unique ID. If you send multiple signals to a single resource (such as signaling a wait condition), each signal requires a different unique ID. - */ - UniqueId: ResourceSignalUniqueId; - /** - * The status of the signal, which is either success or failure. A failure signal causes AWS CloudFormation to immediately fail the stack creation or update. - */ - Status: ResourceSignalStatus; - } - export interface Stack { - /** - * Unique identifier of the stack. - */ - StackId?: StackId; - /** - * The name associated with the stack. - */ - StackName: StackName; - /** - * The unique ID of the change set. - */ - ChangeSetId?: ChangeSetId; - /** - * A user-defined description associated with the stack. - */ - Description?: Description; - /** - * A list of Parameter structures. - */ - Parameters?: Parameters; - /** - * The time at which the stack was created. - */ - CreationTime: CreationTime; - /** - * The time the stack was deleted. - */ - DeletionTime?: DeletionTime; - /** - * The time the stack was last updated. This field will only be returned if the stack has been updated at least once. - */ - LastUpdatedTime?: LastUpdatedTime; - /** - * The rollback triggers for AWS CloudFormation to monitor during stack creation and updating operations, and for the specified monitoring period afterwards. - */ - RollbackConfiguration?: RollbackConfiguration; - /** - * Current status of the stack. - */ - StackStatus: StackStatus; - /** - * Success/failure message associated with the stack status. - */ - StackStatusReason?: StackStatusReason; - /** - * Boolean to enable or disable rollback on stack creation failures: true: disable rollback false: enable rollback - */ - DisableRollback?: DisableRollback; - /** - * SNS topic ARNs to which stack related events are published. - */ - NotificationARNs?: NotificationARNs; - /** - * The amount of time within which stack creation should complete. - */ - TimeoutInMinutes?: TimeoutMinutes; - /** - * The capabilities allowed in the stack. - */ - Capabilities?: Capabilities; - /** - * A list of output structures. - */ - Outputs?: Outputs; - /** - * The Amazon Resource Name (ARN) of an AWS Identity and Access Management (IAM) role that is associated with the stack. During a stack operation, AWS CloudFormation uses this role's credentials to make calls on your behalf. - */ - RoleARN?: RoleARN; - /** - * A list of Tags that specify information about the stack. - */ - Tags?: Tags; - /** - * Whether termination protection is enabled for the stack. For nested stacks, termination protection is set on the root stack and cannot be changed directly on the nested stack. For more information, see Protecting a Stack From Being Deleted in the AWS CloudFormation User Guide. - */ - EnableTerminationProtection?: EnableTerminationProtection; - /** - * For nested stacks--stacks created as resources for another stack--the stack ID of the direct parent of this stack. For the first level of nested stacks, the root stack is also the parent stack. For more information, see Working with Nested Stacks in the AWS CloudFormation User Guide. - */ - ParentId?: StackId; - /** - * For nested stacks--stacks created as resources for another stack--the stack ID of the the top-level stack to which the nested stack ultimately belongs. For more information, see Working with Nested Stacks in the AWS CloudFormation User Guide. - */ - RootId?: StackId; - } - export interface StackEvent { - /** - * The unique ID name of the instance of the stack. - */ - StackId: StackId; - /** - * The unique ID of this event. - */ - EventId: EventId; - /** - * The name associated with a stack. - */ - StackName: StackName; - /** - * The logical name of the resource specified in the template. - */ - LogicalResourceId?: LogicalResourceId; - /** - * The name or unique identifier associated with the physical instance of the resource. - */ - PhysicalResourceId?: PhysicalResourceId; - /** - * Type of resource. (For more information, go to AWS Resource Types Reference in the AWS CloudFormation User Guide.) - */ - ResourceType?: ResourceType; - /** - * Time the status was updated. - */ - Timestamp: Timestamp; - /** - * Current status of the resource. - */ - ResourceStatus?: ResourceStatus; - /** - * Success/failure message associated with the resource. - */ - ResourceStatusReason?: ResourceStatusReason; - /** - * BLOB of the properties used to create the resource. - */ - ResourceProperties?: ResourceProperties; - /** - * The token passed to the operation that generated this event. All events triggered by a given stack operation are assigned the same client request token, which you can use to track operations. For example, if you execute a CreateStack operation with the token token1, then all the StackEvents generated by that operation will have ClientRequestToken set as token1. In the console, stack operations display the client request token on the Events tab. Stack operations that are initiated from the console use the token format Console-StackOperation-ID, which helps you easily identify the stack operation . For example, if you create a stack using the console, each stack event would be assigned the same token in the following format: Console-CreateStack-7f59c3cf-00d2-40c7-b2ff-e75db0987002. - */ - ClientRequestToken?: ClientRequestToken; - } - export type StackEvents = StackEvent[]; - export type StackId = string; - export interface StackInstance { - /** - * The name or unique ID of the stack set that the stack instance is associated with. - */ - StackSetId?: StackSetId; - /** - * The name of the AWS region that the stack instance is associated with. - */ - Region?: Region; - /** - * The name of the AWS account that the stack instance is associated with. - */ - Account?: Account; - /** - * The ID of the stack instance. - */ - StackId?: StackId; - /** - * The status of the stack instance, in terms of its synchronization with its associated stack set. INOPERABLE: A DeleteStackInstances operation has failed and left the stack in an unstable state. Stacks in this state are excluded from further UpdateStackSet operations. You might need to perform a DeleteStackInstances operation, with RetainStacks set to true, to delete the stack instance, and then delete the stack manually. OUTDATED: The stack isn't currently up to date with the stack set because: The associated stack failed during a CreateStackSet or UpdateStackSet operation. The stack was part of a CreateStackSet or UpdateStackSet operation that failed or was stopped before the stack was created or updated. CURRENT: The stack is currently up to date with the stack set. - */ - Status?: StackInstanceStatus; - /** - * The explanation for the specific status code that is assigned to this stack instance. - */ - StatusReason?: Reason; - } - export type StackInstanceStatus = "CURRENT"|"OUTDATED"|"INOPERABLE"|string; - export type StackInstanceSummaries = StackInstanceSummary[]; - export interface StackInstanceSummary { - /** - * The name or unique ID of the stack set that the stack instance is associated with. - */ - StackSetId?: StackSetId; - /** - * The name of the AWS region that the stack instance is associated with. - */ - Region?: Region; - /** - * The name of the AWS account that the stack instance is associated with. - */ - Account?: Account; - /** - * The ID of the stack instance. - */ - StackId?: StackId; - /** - * The status of the stack instance, in terms of its synchronization with its associated stack set. INOPERABLE: A DeleteStackInstances operation has failed and left the stack in an unstable state. Stacks in this state are excluded from further UpdateStackSet operations. You might need to perform a DeleteStackInstances operation, with RetainStacks set to true, to delete the stack instance, and then delete the stack manually. OUTDATED: The stack isn't currently up to date with the stack set because: The associated stack failed during a CreateStackSet or UpdateStackSet operation. The stack was part of a CreateStackSet or UpdateStackSet operation that failed or was stopped before the stack was created or updated. CURRENT: The stack is currently up to date with the stack set. - */ - Status?: StackInstanceStatus; - /** - * The explanation for the specific status code assigned to this stack instance. - */ - StatusReason?: Reason; - } - export type StackName = string; - export type StackNameOrId = string; - export type StackPolicyBody = string; - export type StackPolicyDuringUpdateBody = string; - export type StackPolicyDuringUpdateURL = string; - export type StackPolicyURL = string; - export interface StackResource { - /** - * The name associated with the stack. - */ - StackName?: StackName; - /** - * Unique identifier of the stack. - */ - StackId?: StackId; - /** - * The logical name of the resource specified in the template. - */ - LogicalResourceId: LogicalResourceId; - /** - * The name or unique identifier that corresponds to a physical instance ID of a resource supported by AWS CloudFormation. - */ - PhysicalResourceId?: PhysicalResourceId; - /** - * Type of resource. (For more information, go to AWS Resource Types Reference in the AWS CloudFormation User Guide.) - */ - ResourceType: ResourceType; - /** - * Time the status was updated. - */ - Timestamp: Timestamp; - /** - * Current status of the resource. - */ - ResourceStatus: ResourceStatus; - /** - * Success/failure message associated with the resource. - */ - ResourceStatusReason?: ResourceStatusReason; - /** - * User defined description associated with the resource. - */ - Description?: Description; - } - export interface StackResourceDetail { - /** - * The name associated with the stack. - */ - StackName?: StackName; - /** - * Unique identifier of the stack. - */ - StackId?: StackId; - /** - * The logical name of the resource specified in the template. - */ - LogicalResourceId: LogicalResourceId; - /** - * The name or unique identifier that corresponds to a physical instance ID of a resource supported by AWS CloudFormation. - */ - PhysicalResourceId?: PhysicalResourceId; - /** - * Type of resource. ((For more information, go to AWS Resource Types Reference in the AWS CloudFormation User Guide.) - */ - ResourceType: ResourceType; - /** - * Time the status was updated. - */ - LastUpdatedTimestamp: Timestamp; - /** - * Current status of the resource. - */ - ResourceStatus: ResourceStatus; - /** - * Success/failure message associated with the resource. - */ - ResourceStatusReason?: ResourceStatusReason; - /** - * User defined description associated with the resource. - */ - Description?: Description; - /** - * The content of the Metadata attribute declared for the resource. For more information, see Metadata Attribute in the AWS CloudFormation User Guide. - */ - Metadata?: Metadata; - } - export type StackResourceSummaries = StackResourceSummary[]; - export interface StackResourceSummary { - /** - * The logical name of the resource specified in the template. - */ - LogicalResourceId: LogicalResourceId; - /** - * The name or unique identifier that corresponds to a physical instance ID of the resource. - */ - PhysicalResourceId?: PhysicalResourceId; - /** - * Type of resource. (For more information, go to AWS Resource Types Reference in the AWS CloudFormation User Guide.) - */ - ResourceType: ResourceType; - /** - * Time the status was updated. - */ - LastUpdatedTimestamp: Timestamp; - /** - * Current status of the resource. - */ - ResourceStatus: ResourceStatus; - /** - * Success/failure message associated with the resource. - */ - ResourceStatusReason?: ResourceStatusReason; - } - export type StackResources = StackResource[]; - export interface StackSet { - /** - * The name that's associated with the stack set. - */ - StackSetName?: StackSetName; - /** - * The ID of the stack set. - */ - StackSetId?: StackSetId; - /** - * A description of the stack set that you specify when the stack set is created or updated. - */ - Description?: Description; - /** - * The status of the stack set. - */ - Status?: StackSetStatus; - /** - * The structure that contains the body of the template that was used to create or update the stack set. - */ - TemplateBody?: TemplateBody; - /** - * A list of input parameters for a stack set. - */ - Parameters?: Parameters; - /** - * The capabilities that are allowed in the stack set. Some stack set templates might include resources that can affect permissions in your AWS account—for example, by creating new AWS Identity and Access Management (IAM) users. For more information, see Acknowledging IAM Resources in AWS CloudFormation Templates. - */ - Capabilities?: Capabilities; - /** - * A list of tags that specify information about the stack set. A maximum number of 50 tags can be specified. - */ - Tags?: Tags; - } - export type StackSetId = string; - export type StackSetName = string; - export type StackSetNameOrId = string; - export interface StackSetOperation { - /** - * The unique ID of a stack set operation. - */ - OperationId?: ClientRequestToken; - /** - * The ID of the stack set. - */ - StackSetId?: StackSetId; - /** - * The type of stack set operation: CREATE, UPDATE, or DELETE. Create and delete operations affect only the specified stack set instances that are associated with the specified stack set. Update operations affect both the stack set itself, as well as all associated stack set instances. - */ - Action?: StackSetOperationAction; - /** - * The status of the operation. FAILED: The operation exceeded the specified failure tolerance. The failure tolerance value that you've set for an operation is applied for each region during stack create and update operations. If the number of failed stacks within a region exceeds the failure tolerance, the status of the operation in the region is set to FAILED. This in turn sets the status of the operation as a whole to FAILED, and AWS CloudFormation cancels the operation in any remaining regions. RUNNING: The operation is currently being performed. STOPPED: The user has cancelled the operation. STOPPING: The operation is in the process of stopping, at user request. SUCCEEDED: The operation completed creating or updating all the specified stacks without exceeding the failure tolerance for the operation. - */ - Status?: StackSetOperationStatus; - /** - * The preferences for how AWS CloudFormation performs this stack set operation. - */ - OperationPreferences?: StackSetOperationPreferences; - /** - * For stack set operations of action type DELETE, specifies whether to remove the stack instances from the specified stack set, but doesn't delete the stacks. You can't reassociate a retained stack, or add an existing, saved stack to a new stack set. - */ - RetainStacks?: RetainStacksNullable; - /** - * The time at which the operation was initiated. Note that the creation times for the stack set operation might differ from the creation time of the individual stacks themselves. This is because AWS CloudFormation needs to perform preparatory work for the operation, such as dispatching the work to the requested regions, before actually creating the first stacks. - */ - CreationTimestamp?: Timestamp; - /** - * The time at which the stack set operation ended, across all accounts and regions specified. Note that this doesn't necessarily mean that the stack set operation was successful, or even attempted, in each account or region. - */ - EndTimestamp?: Timestamp; - } - export type StackSetOperationAction = "CREATE"|"UPDATE"|"DELETE"|string; - export interface StackSetOperationPreferences { - /** - * The order of the regions in where you want to perform the stack operation. - */ - RegionOrder?: RegionList; - /** - * The number of accounts, per region, for which this operation can fail before AWS CloudFormation stops the operation in that region. If the operation is stopped in a region, AWS CloudFormation doesn't attempt the operation in any subsequent regions. Conditional: You must specify either FailureToleranceCount or FailureTolerancePercentage (but not both). - */ - FailureToleranceCount?: FailureToleranceCount; - /** - * The percentage of accounts, per region, for which this stack operation can fail before AWS CloudFormation stops the operation in that region. If the operation is stopped in a region, AWS CloudFormation doesn't attempt the operation in any subsequent regions. When calculating the number of accounts based on the specified percentage, AWS CloudFormation rounds down to the next whole number. Conditional: You must specify either FailureToleranceCount or FailureTolerancePercentage, but not both. - */ - FailureTolerancePercentage?: FailureTolerancePercentage; - /** - * The maximum number of accounts in which to perform this operation at one time. This is dependent on the value of FailureToleranceCount—MaxConcurrentCount is at most one more than the FailureToleranceCount . Note that this setting lets you specify the maximum for operations. For large deployments, under certain circumstances the actual number of accounts acted upon concurrently may be lower due to service throttling. Conditional: You must specify either MaxConcurrentCount or MaxConcurrentPercentage, but not both. - */ - MaxConcurrentCount?: MaxConcurrentCount; - /** - * The maximum percentage of accounts in which to perform this operation at one time. When calculating the number of accounts based on the specified percentage, AWS CloudFormation rounds down to the next whole number. This is true except in cases where rounding down would result is zero. In this case, CloudFormation sets the number as one instead. Note that this setting lets you specify the maximum for operations. For large deployments, under certain circumstances the actual number of accounts acted upon concurrently may be lower due to service throttling. Conditional: You must specify either MaxConcurrentCount or MaxConcurrentPercentage, but not both. - */ - MaxConcurrentPercentage?: MaxConcurrentPercentage; - } - export type StackSetOperationResultStatus = "PENDING"|"RUNNING"|"SUCCEEDED"|"FAILED"|"CANCELLED"|string; - export type StackSetOperationResultSummaries = StackSetOperationResultSummary[]; - export interface StackSetOperationResultSummary { - /** - * The name of the AWS account for this operation result. - */ - Account?: Account; - /** - * The name of the AWS region for this operation result. - */ - Region?: Region; - /** - * The result status of the stack set operation for the given account in the given region. CANCELLED: The operation in the specified account and region has been cancelled. This is either because a user has stopped the stack set operation, or because the failure tolerance of the stack set operation has been exceeded. FAILED: The operation in the specified account and region failed. If the stack set operation fails in enough accounts within a region, the failure tolerance for the stack set operation as a whole might be exceeded. RUNNING: The operation in the specified account and region is currently in progress. PENDING: The operation in the specified account and region has yet to start. SUCCEEDED: The operation in the specified account and region completed successfully. - */ - Status?: StackSetOperationResultStatus; - /** - * The reason for the assigned result status. - */ - StatusReason?: Reason; - /** - * The results of the account gate function AWS CloudFormation invokes, if present, before proceeding with stack set operations in an account - */ - AccountGateResult?: AccountGateResult; - } - export type StackSetOperationStatus = "RUNNING"|"SUCCEEDED"|"FAILED"|"STOPPING"|"STOPPED"|string; - export type StackSetOperationSummaries = StackSetOperationSummary[]; - export interface StackSetOperationSummary { - /** - * The unique ID of the stack set operation. - */ - OperationId?: ClientRequestToken; - /** - * The type of operation: CREATE, UPDATE, or DELETE. Create and delete operations affect only the specified stack instances that are associated with the specified stack set. Update operations affect both the stack set itself as well as all associated stack set instances. - */ - Action?: StackSetOperationAction; - /** - * The overall status of the operation. FAILED: The operation exceeded the specified failure tolerance. The failure tolerance value that you've set for an operation is applied for each region during stack create and update operations. If the number of failed stacks within a region exceeds the failure tolerance, the status of the operation in the region is set to FAILED. This in turn sets the status of the operation as a whole to FAILED, and AWS CloudFormation cancels the operation in any remaining regions. RUNNING: The operation is currently being performed. STOPPED: The user has cancelled the operation. STOPPING: The operation is in the process of stopping, at user request. SUCCEEDED: The operation completed creating or updating all the specified stacks without exceeding the failure tolerance for the operation. - */ - Status?: StackSetOperationStatus; - /** - * The time at which the operation was initiated. Note that the creation times for the stack set operation might differ from the creation time of the individual stacks themselves. This is because AWS CloudFormation needs to perform preparatory work for the operation, such as dispatching the work to the requested regions, before actually creating the first stacks. - */ - CreationTimestamp?: Timestamp; - /** - * The time at which the stack set operation ended, across all accounts and regions specified. Note that this doesn't necessarily mean that the stack set operation was successful, or even attempted, in each account or region. - */ - EndTimestamp?: Timestamp; - } - export type StackSetStatus = "ACTIVE"|"DELETED"|string; - export type StackSetSummaries = StackSetSummary[]; - export interface StackSetSummary { - /** - * The name of the stack set. - */ - StackSetName?: StackSetName; - /** - * The ID of the stack set. - */ - StackSetId?: StackSetId; - /** - * A description of the stack set that you specify when the stack set is created or updated. - */ - Description?: Description; - /** - * The status of the stack set. - */ - Status?: StackSetStatus; - } - export type StackStatus = "CREATE_IN_PROGRESS"|"CREATE_FAILED"|"CREATE_COMPLETE"|"ROLLBACK_IN_PROGRESS"|"ROLLBACK_FAILED"|"ROLLBACK_COMPLETE"|"DELETE_IN_PROGRESS"|"DELETE_FAILED"|"DELETE_COMPLETE"|"UPDATE_IN_PROGRESS"|"UPDATE_COMPLETE_CLEANUP_IN_PROGRESS"|"UPDATE_COMPLETE"|"UPDATE_ROLLBACK_IN_PROGRESS"|"UPDATE_ROLLBACK_FAILED"|"UPDATE_ROLLBACK_COMPLETE_CLEANUP_IN_PROGRESS"|"UPDATE_ROLLBACK_COMPLETE"|"REVIEW_IN_PROGRESS"|string; - export type StackStatusFilter = StackStatus[]; - export type StackStatusReason = string; - export type StackSummaries = StackSummary[]; - export interface StackSummary { - /** - * Unique stack identifier. - */ - StackId?: StackId; - /** - * The name associated with the stack. - */ - StackName: StackName; - /** - * The template description of the template used to create the stack. - */ - TemplateDescription?: TemplateDescription; - /** - * The time the stack was created. - */ - CreationTime: CreationTime; - /** - * The time the stack was last updated. This field will only be returned if the stack has been updated at least once. - */ - LastUpdatedTime?: LastUpdatedTime; - /** - * The time the stack was deleted. - */ - DeletionTime?: DeletionTime; - /** - * The current status of the stack. - */ - StackStatus: StackStatus; - /** - * Success/Failure message associated with the stack status. - */ - StackStatusReason?: StackStatusReason; - /** - * For nested stacks--stacks created as resources for another stack--the stack ID of the direct parent of this stack. For the first level of nested stacks, the root stack is also the parent stack. For more information, see Working with Nested Stacks in the AWS CloudFormation User Guide. - */ - ParentId?: StackId; - /** - * For nested stacks--stacks created as resources for another stack--the stack ID of the the top-level stack to which the nested stack ultimately belongs. For more information, see Working with Nested Stacks in the AWS CloudFormation User Guide. - */ - RootId?: StackId; - } - export type Stacks = Stack[]; - export type StageList = TemplateStage[]; - export interface StopStackSetOperationInput { - /** - * The name or unique ID of the stack set that you want to stop the operation for. - */ - StackSetName: StackSetName; - /** - * The ID of the stack operation. - */ - OperationId: ClientRequestToken; - } - export interface StopStackSetOperationOutput { - } - export interface Tag { - /** - * Required. A string used to identify this tag. You can specify a maximum of 128 characters for a tag key. Tags owned by Amazon Web Services (AWS) have the reserved prefix: aws:. - */ - Key: TagKey; - /** - * Required. A string containing the value for this tag. You can specify a maximum of 256 characters for a tag value. - */ - Value: TagValue; - } - export type TagKey = string; - export type TagValue = string; - export type Tags = Tag[]; - export type TemplateBody = string; - export type TemplateDescription = string; - export interface TemplateParameter { - /** - * The name associated with the parameter. - */ - ParameterKey?: ParameterKey; - /** - * The default value associated with the parameter. - */ - DefaultValue?: ParameterValue; - /** - * Flag indicating whether the parameter should be displayed as plain text in logs and UIs. - */ - NoEcho?: NoEcho; - /** - * User defined description associated with the parameter. - */ - Description?: Description; - } - export type TemplateParameters = TemplateParameter[]; - export type TemplateStage = "Original"|"Processed"|string; - export type TemplateURL = string; - export type TimeoutMinutes = number; - export type Timestamp = Date; - export type TransformName = string; - export type TransformsList = TransformName[]; - export type Type = string; - export interface UpdateStackInput { - /** - * The name or unique stack ID of the stack to update. - */ - StackName: StackName; - /** - * Structure containing the template body with a minimum length of 1 byte and a maximum length of 51,200 bytes. (For more information, go to Template Anatomy in the AWS CloudFormation User Guide.) Conditional: You must specify only one of the following parameters: TemplateBody, TemplateURL, or set the UsePreviousTemplate to true. - */ - TemplateBody?: TemplateBody; - /** - * Location of file containing the template body. The URL must point to a template that is located in an Amazon S3 bucket. For more information, go to Template Anatomy in the AWS CloudFormation User Guide. Conditional: You must specify only one of the following parameters: TemplateBody, TemplateURL, or set the UsePreviousTemplate to true. - */ - TemplateURL?: TemplateURL; - /** - * Reuse the existing template that is associated with the stack that you are updating. Conditional: You must specify only one of the following parameters: TemplateBody, TemplateURL, or set the UsePreviousTemplate to true. - */ - UsePreviousTemplate?: UsePreviousTemplate; - /** - * Structure containing the temporary overriding stack policy body. You can specify either the StackPolicyDuringUpdateBody or the StackPolicyDuringUpdateURL parameter, but not both. If you want to update protected resources, specify a temporary overriding stack policy during this update. If you do not specify a stack policy, the current policy that is associated with the stack will be used. - */ - StackPolicyDuringUpdateBody?: StackPolicyDuringUpdateBody; - /** - * Location of a file containing the temporary overriding stack policy. The URL must point to a policy (max size: 16KB) located in an S3 bucket in the same region as the stack. You can specify either the StackPolicyDuringUpdateBody or the StackPolicyDuringUpdateURL parameter, but not both. If you want to update protected resources, specify a temporary overriding stack policy during this update. If you do not specify a stack policy, the current policy that is associated with the stack will be used. - */ - StackPolicyDuringUpdateURL?: StackPolicyDuringUpdateURL; - /** - * A list of Parameter structures that specify input parameters for the stack. For more information, see the Parameter data type. - */ - Parameters?: Parameters; - /** - * A list of values that you must specify before AWS CloudFormation can update certain stacks. Some stack templates might include resources that can affect permissions in your AWS account, for example, by creating new AWS Identity and Access Management (IAM) users. For those stacks, you must explicitly acknowledge their capabilities by specifying this parameter. The only valid values are CAPABILITY_IAM and CAPABILITY_NAMED_IAM. The following resources require you to specify this parameter: AWS::IAM::AccessKey, AWS::IAM::Group, AWS::IAM::InstanceProfile, AWS::IAM::Policy, AWS::IAM::Role, AWS::IAM::User, and AWS::IAM::UserToGroupAddition. If your stack template contains these resources, we recommend that you review all permissions associated with them and edit their permissions if necessary. If you have IAM resources, you can specify either capability. If you have IAM resources with custom names, you must specify CAPABILITY_NAMED_IAM. If you don't specify this parameter, this action returns an InsufficientCapabilities error. For more information, see Acknowledging IAM Resources in AWS CloudFormation Templates. - */ - Capabilities?: Capabilities; - /** - * The template resource types that you have permissions to work with for this update stack action, such as AWS::EC2::Instance, AWS::EC2::*, or Custom::MyCustomInstance. If the list of resource types doesn't include a resource that you're updating, the stack update fails. By default, AWS CloudFormation grants permissions to all resource types. AWS Identity and Access Management (IAM) uses this parameter for AWS CloudFormation-specific condition keys in IAM policies. For more information, see Controlling Access with AWS Identity and Access Management. - */ - ResourceTypes?: ResourceTypes; - /** - * The Amazon Resource Name (ARN) of an AWS Identity and Access Management (IAM) role that AWS CloudFormation assumes to update the stack. AWS CloudFormation uses the role's credentials to make calls on your behalf. AWS CloudFormation always uses this role for all future operations on the stack. As long as users have permission to operate on the stack, AWS CloudFormation uses this role even if the users don't have permission to pass it. Ensure that the role grants least privilege. If you don't specify a value, AWS CloudFormation uses the role that was previously associated with the stack. If no role is available, AWS CloudFormation uses a temporary session that is generated from your user credentials. - */ - RoleARN?: RoleARN; - /** - * The rollback triggers for AWS CloudFormation to monitor during stack creation and updating operations, and for the specified monitoring period afterwards. - */ - RollbackConfiguration?: RollbackConfiguration; - /** - * Structure containing a new stack policy body. You can specify either the StackPolicyBody or the StackPolicyURL parameter, but not both. You might update the stack policy, for example, in order to protect a new resource that you created during a stack update. If you do not specify a stack policy, the current policy that is associated with the stack is unchanged. - */ - StackPolicyBody?: StackPolicyBody; - /** - * Location of a file containing the updated stack policy. The URL must point to a policy (max size: 16KB) located in an S3 bucket in the same region as the stack. You can specify either the StackPolicyBody or the StackPolicyURL parameter, but not both. You might update the stack policy, for example, in order to protect a new resource that you created during a stack update. If you do not specify a stack policy, the current policy that is associated with the stack is unchanged. - */ - StackPolicyURL?: StackPolicyURL; - /** - * Amazon Simple Notification Service topic Amazon Resource Names (ARNs) that AWS CloudFormation associates with the stack. Specify an empty list to remove all notification topics. - */ - NotificationARNs?: NotificationARNs; - /** - * Key-value pairs to associate with this stack. AWS CloudFormation also propagates these tags to supported resources in the stack. You can specify a maximum number of 50 tags. If you don't specify this parameter, AWS CloudFormation doesn't modify the stack's tags. If you specify an empty value, AWS CloudFormation removes all associated tags. - */ - Tags?: Tags; - /** - * A unique identifier for this UpdateStack request. Specify this token if you plan to retry requests so that AWS CloudFormation knows that you're not attempting to update a stack with the same name. You might retry UpdateStack requests to ensure that AWS CloudFormation successfully received them. All events triggered by a given stack operation are assigned the same client request token, which you can use to track operations. For example, if you execute a CreateStack operation with the token token1, then all the StackEvents generated by that operation will have ClientRequestToken set as token1. In the console, stack operations display the client request token on the Events tab. Stack operations that are initiated from the console use the token format Console-StackOperation-ID, which helps you easily identify the stack operation . For example, if you create a stack using the console, each stack event would be assigned the same token in the following format: Console-CreateStack-7f59c3cf-00d2-40c7-b2ff-e75db0987002. - */ - ClientRequestToken?: ClientRequestToken; - } - export interface UpdateStackOutput { - /** - * Unique identifier of the stack. - */ - StackId?: StackId; - } - export interface UpdateStackSetInput { - /** - * The name or unique ID of the stack set that you want to update. - */ - StackSetName: StackSetName; - /** - * A brief description of updates that you are making. - */ - Description?: Description; - /** - * The structure that contains the template body, with a minimum length of 1 byte and a maximum length of 51,200 bytes. For more information, see Template Anatomy in the AWS CloudFormation User Guide. Conditional: You must specify only one of the following parameters: TemplateBody or TemplateURL—or set UsePreviousTemplate to true. - */ - TemplateBody?: TemplateBody; - /** - * The location of the file that contains the template body. The URL must point to a template (maximum size: 460,800 bytes) that is located in an Amazon S3 bucket. For more information, see Template Anatomy in the AWS CloudFormation User Guide. Conditional: You must specify only one of the following parameters: TemplateBody or TemplateURL—or set UsePreviousTemplate to true. - */ - TemplateURL?: TemplateURL; - /** - * Use the existing template that's associated with the stack set that you're updating. Conditional: You must specify only one of the following parameters: TemplateBody or TemplateURL—or set UsePreviousTemplate to true. - */ - UsePreviousTemplate?: UsePreviousTemplate; - /** - * A list of input parameters for the stack set template. - */ - Parameters?: Parameters; - /** - * A list of values that you must specify before AWS CloudFormation can create certain stack sets. Some stack set templates might include resources that can affect permissions in your AWS account—for example, by creating new AWS Identity and Access Management (IAM) users. For those stack sets, you must explicitly acknowledge their capabilities by specifying this parameter. The only valid values are CAPABILITY_IAM and CAPABILITY_NAMED_IAM. The following resources require you to specify this parameter: AWS::IAM::AccessKey AWS::IAM::Group AWS::IAM::InstanceProfile AWS::IAM::Policy AWS::IAM::Role AWS::IAM::User AWS::IAM::UserToGroupAddition If your stack template contains these resources, we recommend that you review all permissions that are associated with them and edit their permissions if necessary. If you have IAM resources, you can specify either capability. If you have IAM resources with custom names, you must specify CAPABILITY_NAMED_IAM. If you don't specify this parameter, this action returns an InsufficientCapabilities error. For more information, see Acknowledging IAM Resources in AWS CloudFormation Templates. - */ - Capabilities?: Capabilities; - /** - * The key-value pairs to associate with this stack set and the stacks created from it. AWS CloudFormation also propagates these tags to supported resources that are created in the stacks. You can specify a maximum number of 50 tags. If you specify tags for this parameter, those tags replace any list of tags that are currently associated with this stack set. This means: If you don't specify this parameter, AWS CloudFormation doesn't modify the stack's tags. If you specify any tags using this parameter, you must specify all the tags that you want associated with this stack set, even tags you've specifed before (for example, when creating the stack set or during a previous update of the stack set.). Any tags that you don't include in the updated list of tags are removed from the stack set, and therefore from the stacks and resources as well. If you specify an empty value, AWS CloudFormation removes all currently associated tags. If you specify new tags as part of an UpdateStackSet action, AWS CloudFormation checks to see if you have the required IAM permission to tag resources. If you omit tags that are currently associated with the stack set from the list of tags you specify, AWS CloudFormation assumes that you want to remove those tags from the stack set, and checks to see if you have permission to untag resources. If you don't have the necessary permission(s), the entire UpdateStackSet action fails with an access denied error, and the stack set is not updated. - */ - Tags?: Tags; - /** - * Preferences for how AWS CloudFormation performs this stack set operation. - */ - OperationPreferences?: StackSetOperationPreferences; - /** - * The unique ID for this stack set operation. The operation ID also functions as an idempotency token, to ensure that AWS CloudFormation performs the stack set operation only once, even if you retry the request multiple times. You might retry stack set operation requests to ensure that AWS CloudFormation successfully received them. If you don't specify an operation ID, AWS CloudFormation generates one automatically. Repeating this stack set operation with a new operation ID retries all stack instances whose status is OUTDATED. - */ - OperationId?: ClientRequestToken; - } - export interface UpdateStackSetOutput { - /** - * The unique ID for this stack set operation. - */ - OperationId?: ClientRequestToken; - } - export interface UpdateTerminationProtectionInput { - /** - * Whether to enable termination protection on the specified stack. - */ - EnableTerminationProtection: EnableTerminationProtection; - /** - * The name or unique ID of the stack for which you want to set termination protection. - */ - StackName: StackNameOrId; - } - export interface UpdateTerminationProtectionOutput { - /** - * The unique ID of the stack. - */ - StackId?: StackId; - } - export type Url = string; - export type UsePreviousTemplate = boolean; - export type UsePreviousValue = boolean; - export interface ValidateTemplateInput { - /** - * Structure containing the template body with a minimum length of 1 byte and a maximum length of 51,200 bytes. For more information, go to Template Anatomy in the AWS CloudFormation User Guide. Conditional: You must pass TemplateURL or TemplateBody. If both are passed, only TemplateBody is used. - */ - TemplateBody?: TemplateBody; - /** - * Location of file containing the template body. The URL must point to a template (max size: 460,800 bytes) that is located in an Amazon S3 bucket. For more information, go to Template Anatomy in the AWS CloudFormation User Guide. Conditional: You must pass TemplateURL or TemplateBody. If both are passed, only TemplateBody is used. - */ - TemplateURL?: TemplateURL; - } - export interface ValidateTemplateOutput { - /** - * A list of TemplateParameter structures. - */ - Parameters?: TemplateParameters; - /** - * The description found within the template. - */ - Description?: Description; - /** - * The capabilities found within the template. If your template contains IAM resources, you must specify the CAPABILITY_IAM or CAPABILITY_NAMED_IAM value for this parameter when you use the CreateStack or UpdateStack actions with your template; otherwise, those actions return an InsufficientCapabilities error. For more information, see Acknowledging IAM Resources in AWS CloudFormation Templates. - */ - Capabilities?: Capabilities; - /** - * The list of resources that generated the values in the Capabilities response element. - */ - CapabilitiesReason?: CapabilitiesReason; - /** - * A list of the transforms that are declared in the template. - */ - DeclaredTransforms?: TransformsList; - } - export type Version = string; - /** - * A string in YYYY-MM-DD format that represents the latest possible API version that can be used in this service. Specify 'latest' to use the latest possible version. - */ - export type apiVersion = "2010-05-15"|"latest"|string; - export interface ClientApiVersions { - /** - * A string in YYYY-MM-DD format that represents the latest possible API version that can be used in this service. Specify 'latest' to use the latest possible version. - */ - apiVersion?: apiVersion; - } - export type ClientConfiguration = ServiceConfigurationOptions & ClientApiVersions; - /** - * Contains interfaces for use with the CloudFormation client. - */ - export import Types = CloudFormation; -} -export = CloudFormation; diff --git a/workshops/monte-carlo-on-ec2-spot-fleet/src/web/node_modules/aws-sdk/clients/cloudformation.js b/workshops/monte-carlo-on-ec2-spot-fleet/src/web/node_modules/aws-sdk/clients/cloudformation.js deleted file mode 100644 index 2ab79f28..00000000 --- a/workshops/monte-carlo-on-ec2-spot-fleet/src/web/node_modules/aws-sdk/clients/cloudformation.js +++ /dev/null @@ -1,19 +0,0 @@ -require('../lib/node_loader'); -var AWS = require('../lib/core'); -var Service = AWS.Service; -var apiLoader = AWS.apiLoader; - -apiLoader.services['cloudformation'] = {}; -AWS.CloudFormation = Service.defineService('cloudformation', ['2010-05-15']); -Object.defineProperty(apiLoader.services['cloudformation'], '2010-05-15', { - get: function get() { - var model = require('../apis/cloudformation-2010-05-15.min.json'); - model.paginators = require('../apis/cloudformation-2010-05-15.paginators.json').pagination; - model.waiters = require('../apis/cloudformation-2010-05-15.waiters2.json').waiters; - return model; - }, - enumerable: true, - configurable: true -}); - -module.exports = AWS.CloudFormation; diff --git a/workshops/monte-carlo-on-ec2-spot-fleet/src/web/node_modules/aws-sdk/clients/cloudfront.d.ts b/workshops/monte-carlo-on-ec2-spot-fleet/src/web/node_modules/aws-sdk/clients/cloudfront.d.ts deleted file mode 100644 index 651fc0e6..00000000 --- a/workshops/monte-carlo-on-ec2-spot-fleet/src/web/node_modules/aws-sdk/clients/cloudfront.d.ts +++ /dev/null @@ -1,1723 +0,0 @@ -import {Request} from '../lib/request'; -import {Response} from '../lib/response'; -import {AWSError} from '../lib/error'; -import {CloudFrontCustomizations} from '../lib/services/cloudfront'; -import {ServiceConfigurationOptions} from '../lib/service'; -import {ConfigBase as Config} from '../lib/config'; -import {Signer as signer} from '../lib/cloudfront/signer'; -interface Blob {} -declare class CloudFront extends CloudFrontCustomizations { - /** - * Constructs a service object. This object has one method for each API operation. - */ - constructor(options?: CloudFront.Types.ClientConfiguration) - config: Config & CloudFront.Types.ClientConfiguration; - /** - * Creates a new origin access identity. If you're using Amazon S3 for your origin, you can use an origin access identity to require users to access your content using a CloudFront URL instead of the Amazon S3 URL. For more information about how to use origin access identities, see Serving Private Content through CloudFront in the Amazon CloudFront Developer Guide. - */ - createCloudFrontOriginAccessIdentity(params: CloudFront.Types.CreateCloudFrontOriginAccessIdentityRequest, callback?: (err: AWSError, data: CloudFront.Types.CreateCloudFrontOriginAccessIdentityResult) => void): Request; - /** - * Creates a new origin access identity. If you're using Amazon S3 for your origin, you can use an origin access identity to require users to access your content using a CloudFront URL instead of the Amazon S3 URL. For more information about how to use origin access identities, see Serving Private Content through CloudFront in the Amazon CloudFront Developer Guide. - */ - createCloudFrontOriginAccessIdentity(callback?: (err: AWSError, data: CloudFront.Types.CreateCloudFrontOriginAccessIdentityResult) => void): Request; - /** - * Creates a new web distribution. Send a POST request to the /CloudFront API version/distribution/distribution ID resource. - */ - createDistribution(params: CloudFront.Types.CreateDistributionRequest, callback?: (err: AWSError, data: CloudFront.Types.CreateDistributionResult) => void): Request; - /** - * Creates a new web distribution. Send a POST request to the /CloudFront API version/distribution/distribution ID resource. - */ - createDistribution(callback?: (err: AWSError, data: CloudFront.Types.CreateDistributionResult) => void): Request; - /** - * Create a new distribution with tags. - */ - createDistributionWithTags(params: CloudFront.Types.CreateDistributionWithTagsRequest, callback?: (err: AWSError, data: CloudFront.Types.CreateDistributionWithTagsResult) => void): Request; - /** - * Create a new distribution with tags. - */ - createDistributionWithTags(callback?: (err: AWSError, data: CloudFront.Types.CreateDistributionWithTagsResult) => void): Request; - /** - * Create a new invalidation. - */ - createInvalidation(params: CloudFront.Types.CreateInvalidationRequest, callback?: (err: AWSError, data: CloudFront.Types.CreateInvalidationResult) => void): Request; - /** - * Create a new invalidation. - */ - createInvalidation(callback?: (err: AWSError, data: CloudFront.Types.CreateInvalidationResult) => void): Request; - /** - * Creates a new RMTP distribution. An RTMP distribution is similar to a web distribution, but an RTMP distribution streams media files using the Adobe Real-Time Messaging Protocol (RTMP) instead of serving files using HTTP. To create a new web distribution, submit a POST request to the CloudFront API version/distribution resource. The request body must include a document with a StreamingDistributionConfig element. The response echoes the StreamingDistributionConfig element and returns other information about the RTMP distribution. To get the status of your request, use the GET StreamingDistribution API action. When the value of Enabled is true and the value of Status is Deployed, your distribution is ready. A distribution usually deploys in less than 15 minutes. For more information about web distributions, see Working with RTMP Distributions in the Amazon CloudFront Developer Guide. Beginning with the 2012-05-05 version of the CloudFront API, we made substantial changes to the format of the XML document that you include in the request body when you create or update a web distribution or an RTMP distribution, and when you invalidate objects. With previous versions of the API, we discovered that it was too easy to accidentally delete one or more values for an element that accepts multiple values, for example, CNAMEs and trusted signers. Our changes for the 2012-05-05 release are intended to prevent these accidental deletions and to notify you when there's a mismatch between the number of values you say you're specifying in the Quantity element and the number of values specified. - */ - createStreamingDistribution(params: CloudFront.Types.CreateStreamingDistributionRequest, callback?: (err: AWSError, data: CloudFront.Types.CreateStreamingDistributionResult) => void): Request; - /** - * Creates a new RMTP distribution. An RTMP distribution is similar to a web distribution, but an RTMP distribution streams media files using the Adobe Real-Time Messaging Protocol (RTMP) instead of serving files using HTTP. To create a new web distribution, submit a POST request to the CloudFront API version/distribution resource. The request body must include a document with a StreamingDistributionConfig element. The response echoes the StreamingDistributionConfig element and returns other information about the RTMP distribution. To get the status of your request, use the GET StreamingDistribution API action. When the value of Enabled is true and the value of Status is Deployed, your distribution is ready. A distribution usually deploys in less than 15 minutes. For more information about web distributions, see Working with RTMP Distributions in the Amazon CloudFront Developer Guide. Beginning with the 2012-05-05 version of the CloudFront API, we made substantial changes to the format of the XML document that you include in the request body when you create or update a web distribution or an RTMP distribution, and when you invalidate objects. With previous versions of the API, we discovered that it was too easy to accidentally delete one or more values for an element that accepts multiple values, for example, CNAMEs and trusted signers. Our changes for the 2012-05-05 release are intended to prevent these accidental deletions and to notify you when there's a mismatch between the number of values you say you're specifying in the Quantity element and the number of values specified. - */ - createStreamingDistribution(callback?: (err: AWSError, data: CloudFront.Types.CreateStreamingDistributionResult) => void): Request; - /** - * Create a new streaming distribution with tags. - */ - createStreamingDistributionWithTags(params: CloudFront.Types.CreateStreamingDistributionWithTagsRequest, callback?: (err: AWSError, data: CloudFront.Types.CreateStreamingDistributionWithTagsResult) => void): Request; - /** - * Create a new streaming distribution with tags. - */ - createStreamingDistributionWithTags(callback?: (err: AWSError, data: CloudFront.Types.CreateStreamingDistributionWithTagsResult) => void): Request; - /** - * Delete an origin access identity. - */ - deleteCloudFrontOriginAccessIdentity(params: CloudFront.Types.DeleteCloudFrontOriginAccessIdentityRequest, callback?: (err: AWSError, data: {}) => void): Request<{}, AWSError>; - /** - * Delete an origin access identity. - */ - deleteCloudFrontOriginAccessIdentity(callback?: (err: AWSError, data: {}) => void): Request<{}, AWSError>; - /** - * Delete a distribution. - */ - deleteDistribution(params: CloudFront.Types.DeleteDistributionRequest, callback?: (err: AWSError, data: {}) => void): Request<{}, AWSError>; - /** - * Delete a distribution. - */ - deleteDistribution(callback?: (err: AWSError, data: {}) => void): Request<{}, AWSError>; - /** - * Delete a streaming distribution. To delete an RTMP distribution using the CloudFront API, perform the following steps. To delete an RTMP distribution using the CloudFront API: Disable the RTMP distribution. Submit a GET Streaming Distribution Config request to get the current configuration and the Etag header for the distribution. Update the XML document that was returned in the response to your GET Streaming Distribution Config request to change the value of Enabled to false. Submit a PUT Streaming Distribution Config request to update the configuration for your distribution. In the request body, include the XML document that you updated in Step 3. Then set the value of the HTTP If-Match header to the value of the ETag header that CloudFront returned when you submitted the GET Streaming Distribution Config request in Step 2. Review the response to the PUT Streaming Distribution Config request to confirm that the distribution was successfully disabled. Submit a GET Streaming Distribution Config request to confirm that your changes have propagated. When propagation is complete, the value of Status is Deployed. Submit a DELETE Streaming Distribution request. Set the value of the HTTP If-Match header to the value of the ETag header that CloudFront returned when you submitted the GET Streaming Distribution Config request in Step 2. Review the response to your DELETE Streaming Distribution request to confirm that the distribution was successfully deleted. For information about deleting a distribution using the CloudFront console, see Deleting a Distribution in the Amazon CloudFront Developer Guide. - */ - deleteStreamingDistribution(params: CloudFront.Types.DeleteStreamingDistributionRequest, callback?: (err: AWSError, data: {}) => void): Request<{}, AWSError>; - /** - * Delete a streaming distribution. To delete an RTMP distribution using the CloudFront API, perform the following steps. To delete an RTMP distribution using the CloudFront API: Disable the RTMP distribution. Submit a GET Streaming Distribution Config request to get the current configuration and the Etag header for the distribution. Update the XML document that was returned in the response to your GET Streaming Distribution Config request to change the value of Enabled to false. Submit a PUT Streaming Distribution Config request to update the configuration for your distribution. In the request body, include the XML document that you updated in Step 3. Then set the value of the HTTP If-Match header to the value of the ETag header that CloudFront returned when you submitted the GET Streaming Distribution Config request in Step 2. Review the response to the PUT Streaming Distribution Config request to confirm that the distribution was successfully disabled. Submit a GET Streaming Distribution Config request to confirm that your changes have propagated. When propagation is complete, the value of Status is Deployed. Submit a DELETE Streaming Distribution request. Set the value of the HTTP If-Match header to the value of the ETag header that CloudFront returned when you submitted the GET Streaming Distribution Config request in Step 2. Review the response to your DELETE Streaming Distribution request to confirm that the distribution was successfully deleted. For information about deleting a distribution using the CloudFront console, see Deleting a Distribution in the Amazon CloudFront Developer Guide. - */ - deleteStreamingDistribution(callback?: (err: AWSError, data: {}) => void): Request<{}, AWSError>; - /** - * Get the information about an origin access identity. - */ - getCloudFrontOriginAccessIdentity(params: CloudFront.Types.GetCloudFrontOriginAccessIdentityRequest, callback?: (err: AWSError, data: CloudFront.Types.GetCloudFrontOriginAccessIdentityResult) => void): Request; - /** - * Get the information about an origin access identity. - */ - getCloudFrontOriginAccessIdentity(callback?: (err: AWSError, data: CloudFront.Types.GetCloudFrontOriginAccessIdentityResult) => void): Request; - /** - * Get the configuration information about an origin access identity. - */ - getCloudFrontOriginAccessIdentityConfig(params: CloudFront.Types.GetCloudFrontOriginAccessIdentityConfigRequest, callback?: (err: AWSError, data: CloudFront.Types.GetCloudFrontOriginAccessIdentityConfigResult) => void): Request; - /** - * Get the configuration information about an origin access identity. - */ - getCloudFrontOriginAccessIdentityConfig(callback?: (err: AWSError, data: CloudFront.Types.GetCloudFrontOriginAccessIdentityConfigResult) => void): Request; - /** - * Get the information about a distribution. - */ - getDistribution(params: CloudFront.Types.GetDistributionRequest, callback?: (err: AWSError, data: CloudFront.Types.GetDistributionResult) => void): Request; - /** - * Get the information about a distribution. - */ - getDistribution(callback?: (err: AWSError, data: CloudFront.Types.GetDistributionResult) => void): Request; - /** - * Get the configuration information about a distribution. - */ - getDistributionConfig(params: CloudFront.Types.GetDistributionConfigRequest, callback?: (err: AWSError, data: CloudFront.Types.GetDistributionConfigResult) => void): Request; - /** - * Get the configuration information about a distribution. - */ - getDistributionConfig(callback?: (err: AWSError, data: CloudFront.Types.GetDistributionConfigResult) => void): Request; - /** - * Get the information about an invalidation. - */ - getInvalidation(params: CloudFront.Types.GetInvalidationRequest, callback?: (err: AWSError, data: CloudFront.Types.GetInvalidationResult) => void): Request; - /** - * Get the information about an invalidation. - */ - getInvalidation(callback?: (err: AWSError, data: CloudFront.Types.GetInvalidationResult) => void): Request; - /** - * Gets information about a specified RTMP distribution, including the distribution configuration. - */ - getStreamingDistribution(params: CloudFront.Types.GetStreamingDistributionRequest, callback?: (err: AWSError, data: CloudFront.Types.GetStreamingDistributionResult) => void): Request; - /** - * Gets information about a specified RTMP distribution, including the distribution configuration. - */ - getStreamingDistribution(callback?: (err: AWSError, data: CloudFront.Types.GetStreamingDistributionResult) => void): Request; - /** - * Get the configuration information about a streaming distribution. - */ - getStreamingDistributionConfig(params: CloudFront.Types.GetStreamingDistributionConfigRequest, callback?: (err: AWSError, data: CloudFront.Types.GetStreamingDistributionConfigResult) => void): Request; - /** - * Get the configuration information about a streaming distribution. - */ - getStreamingDistributionConfig(callback?: (err: AWSError, data: CloudFront.Types.GetStreamingDistributionConfigResult) => void): Request; - /** - * Lists origin access identities. - */ - listCloudFrontOriginAccessIdentities(params: CloudFront.Types.ListCloudFrontOriginAccessIdentitiesRequest, callback?: (err: AWSError, data: CloudFront.Types.ListCloudFrontOriginAccessIdentitiesResult) => void): Request; - /** - * Lists origin access identities. - */ - listCloudFrontOriginAccessIdentities(callback?: (err: AWSError, data: CloudFront.Types.ListCloudFrontOriginAccessIdentitiesResult) => void): Request; - /** - * List distributions. - */ - listDistributions(params: CloudFront.Types.ListDistributionsRequest, callback?: (err: AWSError, data: CloudFront.Types.ListDistributionsResult) => void): Request; - /** - * List distributions. - */ - listDistributions(callback?: (err: AWSError, data: CloudFront.Types.ListDistributionsResult) => void): Request; - /** - * List the distributions that are associated with a specified AWS WAF web ACL. - */ - listDistributionsByWebACLId(params: CloudFront.Types.ListDistributionsByWebACLIdRequest, callback?: (err: AWSError, data: CloudFront.Types.ListDistributionsByWebACLIdResult) => void): Request; - /** - * List the distributions that are associated with a specified AWS WAF web ACL. - */ - listDistributionsByWebACLId(callback?: (err: AWSError, data: CloudFront.Types.ListDistributionsByWebACLIdResult) => void): Request; - /** - * Lists invalidation batches. - */ - listInvalidations(params: CloudFront.Types.ListInvalidationsRequest, callback?: (err: AWSError, data: CloudFront.Types.ListInvalidationsResult) => void): Request; - /** - * Lists invalidation batches. - */ - listInvalidations(callback?: (err: AWSError, data: CloudFront.Types.ListInvalidationsResult) => void): Request; - /** - * List streaming distributions. - */ - listStreamingDistributions(params: CloudFront.Types.ListStreamingDistributionsRequest, callback?: (err: AWSError, data: CloudFront.Types.ListStreamingDistributionsResult) => void): Request; - /** - * List streaming distributions. - */ - listStreamingDistributions(callback?: (err: AWSError, data: CloudFront.Types.ListStreamingDistributionsResult) => void): Request; - /** - * List tags for a CloudFront resource. - */ - listTagsForResource(params: CloudFront.Types.ListTagsForResourceRequest, callback?: (err: AWSError, data: CloudFront.Types.ListTagsForResourceResult) => void): Request; - /** - * List tags for a CloudFront resource. - */ - listTagsForResource(callback?: (err: AWSError, data: CloudFront.Types.ListTagsForResourceResult) => void): Request; - /** - * Add tags to a CloudFront resource. - */ - tagResource(params: CloudFront.Types.TagResourceRequest, callback?: (err: AWSError, data: {}) => void): Request<{}, AWSError>; - /** - * Add tags to a CloudFront resource. - */ - tagResource(callback?: (err: AWSError, data: {}) => void): Request<{}, AWSError>; - /** - * Remove tags from a CloudFront resource. - */ - untagResource(params: CloudFront.Types.UntagResourceRequest, callback?: (err: AWSError, data: {}) => void): Request<{}, AWSError>; - /** - * Remove tags from a CloudFront resource. - */ - untagResource(callback?: (err: AWSError, data: {}) => void): Request<{}, AWSError>; - /** - * Update an origin access identity. - */ - updateCloudFrontOriginAccessIdentity(params: CloudFront.Types.UpdateCloudFrontOriginAccessIdentityRequest, callback?: (err: AWSError, data: CloudFront.Types.UpdateCloudFrontOriginAccessIdentityResult) => void): Request; - /** - * Update an origin access identity. - */ - updateCloudFrontOriginAccessIdentity(callback?: (err: AWSError, data: CloudFront.Types.UpdateCloudFrontOriginAccessIdentityResult) => void): Request; - /** - * Updates the configuration for a web distribution. Perform the following steps. For information about updating a distribution using the CloudFront console, see Creating or Updating a Web Distribution Using the CloudFront Console in the Amazon CloudFront Developer Guide. To update a web distribution using the CloudFront API Submit a GetDistributionConfig request to get the current configuration and an Etag header for the distribution. If you update the distribution again, you need to get a new Etag header. Update the XML document that was returned in the response to your GetDistributionConfig request to include the desired changes. You can't change the value of CallerReference. If you try to change this value, CloudFront returns an IllegalUpdate error. The new configuration replaces the existing configuration; the values that you specify in an UpdateDistribution request are not merged into the existing configuration. When you add, delete, or replace values in an element that allows multiple values (for example, CNAME), you must specify all of the values that you want to appear in the updated distribution. In addition, you must update the corresponding Quantity element. Submit an UpdateDistribution request to update the configuration for your distribution: In the request body, include the XML document that you updated in Step 2. The request body must include an XML document with a DistributionConfig element. Set the value of the HTTP If-Match header to the value of the ETag header that CloudFront returned when you submitted the GetDistributionConfig request in Step 1. Review the response to the UpdateDistribution request to confirm that the configuration was successfully updated. Optional: Submit a GetDistribution request to confirm that your changes have propagated. When propagation is complete, the value of Status is Deployed. Beginning with the 2012-05-05 version of the CloudFront API, we made substantial changes to the format of the XML document that you include in the request body when you create or update a distribution. With previous versions of the API, we discovered that it was too easy to accidentally delete one or more values for an element that accepts multiple values, for example, CNAMEs and trusted signers. Our changes for the 2012-05-05 release are intended to prevent these accidental deletions and to notify you when there's a mismatch between the number of values you say you're specifying in the Quantity element and the number of values you're actually specifying. - */ - updateDistribution(params: CloudFront.Types.UpdateDistributionRequest, callback?: (err: AWSError, data: CloudFront.Types.UpdateDistributionResult) => void): Request; - /** - * Updates the configuration for a web distribution. Perform the following steps. For information about updating a distribution using the CloudFront console, see Creating or Updating a Web Distribution Using the CloudFront Console in the Amazon CloudFront Developer Guide. To update a web distribution using the CloudFront API Submit a GetDistributionConfig request to get the current configuration and an Etag header for the distribution. If you update the distribution again, you need to get a new Etag header. Update the XML document that was returned in the response to your GetDistributionConfig request to include the desired changes. You can't change the value of CallerReference. If you try to change this value, CloudFront returns an IllegalUpdate error. The new configuration replaces the existing configuration; the values that you specify in an UpdateDistribution request are not merged into the existing configuration. When you add, delete, or replace values in an element that allows multiple values (for example, CNAME), you must specify all of the values that you want to appear in the updated distribution. In addition, you must update the corresponding Quantity element. Submit an UpdateDistribution request to update the configuration for your distribution: In the request body, include the XML document that you updated in Step 2. The request body must include an XML document with a DistributionConfig element. Set the value of the HTTP If-Match header to the value of the ETag header that CloudFront returned when you submitted the GetDistributionConfig request in Step 1. Review the response to the UpdateDistribution request to confirm that the configuration was successfully updated. Optional: Submit a GetDistribution request to confirm that your changes have propagated. When propagation is complete, the value of Status is Deployed. Beginning with the 2012-05-05 version of the CloudFront API, we made substantial changes to the format of the XML document that you include in the request body when you create or update a distribution. With previous versions of the API, we discovered that it was too easy to accidentally delete one or more values for an element that accepts multiple values, for example, CNAMEs and trusted signers. Our changes for the 2012-05-05 release are intended to prevent these accidental deletions and to notify you when there's a mismatch between the number of values you say you're specifying in the Quantity element and the number of values you're actually specifying. - */ - updateDistribution(callback?: (err: AWSError, data: CloudFront.Types.UpdateDistributionResult) => void): Request; - /** - * Update a streaming distribution. - */ - updateStreamingDistribution(params: CloudFront.Types.UpdateStreamingDistributionRequest, callback?: (err: AWSError, data: CloudFront.Types.UpdateStreamingDistributionResult) => void): Request; - /** - * Update a streaming distribution. - */ - updateStreamingDistribution(callback?: (err: AWSError, data: CloudFront.Types.UpdateStreamingDistributionResult) => void): Request; - /** - * Waits for the distributionDeployed state by periodically calling the underlying CloudFront.getDistributionoperation every 60 seconds (at most 25 times). Wait until a distribution is deployed. - */ - waitFor(state: "distributionDeployed", params: CloudFront.Types.GetDistributionRequest, callback?: (err: AWSError, data: CloudFront.Types.GetDistributionResult) => void): Request; - /** - * Waits for the distributionDeployed state by periodically calling the underlying CloudFront.getDistributionoperation every 60 seconds (at most 25 times). Wait until a distribution is deployed. - */ - waitFor(state: "distributionDeployed", callback?: (err: AWSError, data: CloudFront.Types.GetDistributionResult) => void): Request; - /** - * Waits for the invalidationCompleted state by periodically calling the underlying CloudFront.getInvalidationoperation every 20 seconds (at most 30 times). Wait until an invalidation has completed. - */ - waitFor(state: "invalidationCompleted", params: CloudFront.Types.GetInvalidationRequest, callback?: (err: AWSError, data: CloudFront.Types.GetInvalidationResult) => void): Request; - /** - * Waits for the invalidationCompleted state by periodically calling the underlying CloudFront.getInvalidationoperation every 20 seconds (at most 30 times). Wait until an invalidation has completed. - */ - waitFor(state: "invalidationCompleted", callback?: (err: AWSError, data: CloudFront.Types.GetInvalidationResult) => void): Request; - /** - * Waits for the streamingDistributionDeployed state by periodically calling the underlying CloudFront.getStreamingDistributionoperation every 60 seconds (at most 25 times). Wait until a streaming distribution is deployed. - */ - waitFor(state: "streamingDistributionDeployed", params: CloudFront.Types.GetStreamingDistributionRequest, callback?: (err: AWSError, data: CloudFront.Types.GetStreamingDistributionResult) => void): Request; - /** - * Waits for the streamingDistributionDeployed state by periodically calling the underlying CloudFront.getStreamingDistributionoperation every 60 seconds (at most 25 times). Wait until a streaming distribution is deployed. - */ - waitFor(state: "streamingDistributionDeployed", callback?: (err: AWSError, data: CloudFront.Types.GetStreamingDistributionResult) => void): Request; -} -declare namespace CloudFront { - export import Signer = signer; -} -declare namespace CloudFront { - export interface ActiveTrustedSigners { - /** - * Enabled is true if any of the AWS accounts listed in the TrustedSigners complex type for this RTMP distribution have active CloudFront key pairs. If not, Enabled is false. For more information, see ActiveTrustedSigners. - */ - Enabled: boolean; - /** - * A complex type that contains one Signer complex type for each trusted signer specified in the TrustedSigners complex type. For more information, see ActiveTrustedSigners. - */ - Quantity: integer; - /** - * A complex type that contains one Signer complex type for each trusted signer that is specified in the TrustedSigners complex type. For more information, see ActiveTrustedSigners. - */ - Items?: SignerList; - } - export type AliasList = string[]; - export interface Aliases { - /** - * The number of CNAME aliases, if any, that you want to associate with this distribution. - */ - Quantity: integer; - /** - * A complex type that contains the CNAME aliases, if any, that you want to associate with this distribution. - */ - Items?: AliasList; - } - export interface AllowedMethods { - /** - * The number of HTTP methods that you want CloudFront to forward to your origin. Valid values are 2 (for GET and HEAD requests), 3 (for GET, HEAD, and OPTIONS requests) and 7 (for GET, HEAD, OPTIONS, PUT, PATCH, POST, and DELETE requests). - */ - Quantity: integer; - /** - * A complex type that contains the HTTP methods that you want CloudFront to process and forward to your origin. - */ - Items: MethodsList; - CachedMethods?: CachedMethods; - } - export type AwsAccountNumberList = string[]; - export interface CacheBehavior { - /** - * The pattern (for example, images/*.jpg) that specifies which requests to apply the behavior to. When CloudFront receives a viewer request, the requested path is compared with path patterns in the order in which cache behaviors are listed in the distribution. You can optionally include a slash (/) at the beginning of the path pattern. For example, /images/*.jpg. CloudFront behavior is the same with or without the leading /. The path pattern for the default cache behavior is * and cannot be changed. If the request for an object does not match the path pattern for any cache behaviors, CloudFront applies the behavior in the default cache behavior. For more information, see Path Pattern in the Amazon CloudFront Developer Guide. - */ - PathPattern: string; - /** - * The value of ID for the origin that you want CloudFront to route requests to when a request matches the path pattern either for a cache behavior or for the default cache behavior. - */ - TargetOriginId: string; - /** - * A complex type that specifies how CloudFront handles query strings and cookies. - */ - ForwardedValues: ForwardedValues; - /** - * A complex type that specifies the AWS accounts, if any, that you want to allow to create signed URLs for private content. If you want to require signed URLs in requests for objects in the target origin that match the PathPattern for this cache behavior, specify true for Enabled, and specify the applicable values for Quantity and Items. For more information, see Serving Private Content through CloudFront in the Amazon Amazon CloudFront Developer Guide. If you don't want to require signed URLs in requests for objects that match PathPattern, specify false for Enabled and 0 for Quantity. Omit Items. To add, change, or remove one or more trusted signers, change Enabled to true (if it's currently false), change Quantity as applicable, and specify all of the trusted signers that you want to include in the updated distribution. - */ - TrustedSigners: TrustedSigners; - /** - * The protocol that viewers can use to access the files in the origin specified by TargetOriginId when a request matches the path pattern in PathPattern. You can specify the following options: allow-all: Viewers can use HTTP or HTTPS. redirect-to-https: If a viewer submits an HTTP request, CloudFront returns an HTTP status code of 301 (Moved Permanently) to the viewer along with the HTTPS URL. The viewer then resubmits the request using the new URL. https-only: If a viewer sends an HTTP request, CloudFront returns an HTTP status code of 403 (Forbidden). For more information about requiring the HTTPS protocol, see Using an HTTPS Connection to Access Your Objects in the Amazon CloudFront Developer Guide. The only way to guarantee that viewers retrieve an object that was fetched from the origin using HTTPS is never to use any other protocol to fetch the object. If you have recently changed from HTTP to HTTPS, we recommend that you clear your objects' cache because cached objects are protocol agnostic. That means that an edge location will return an object from the cache regardless of whether the current request protocol matches the protocol used previously. For more information, see Specifying How Long Objects and Errors Stay in a CloudFront Edge Cache (Expiration) in the Amazon CloudFront Developer Guide. - */ - ViewerProtocolPolicy: ViewerProtocolPolicy; - /** - * The minimum amount of time that you want objects to stay in CloudFront caches before CloudFront forwards another request to your origin to determine whether the object has been updated. For more information, see Specifying How Long Objects and Errors Stay in a CloudFront Edge Cache (Expiration) in the Amazon Amazon CloudFront Developer Guide. You must specify 0 for MinTTL if you configure CloudFront to forward all headers to your origin (under Headers, if you specify 1 for Quantity and * for Name). - */ - MinTTL: long; - AllowedMethods?: AllowedMethods; - /** - * Indicates whether you want to distribute media files in the Microsoft Smooth Streaming format using the origin that is associated with this cache behavior. If so, specify true; if not, specify false. If you specify true for SmoothStreaming, you can still distribute other content using this cache behavior if the content matches the value of PathPattern. - */ - SmoothStreaming?: boolean; - /** - * The default amount of time that you want objects to stay in CloudFront caches before CloudFront forwards another request to your origin to determine whether the object has been updated. The value that you specify applies only when your origin does not add HTTP headers such as Cache-Control max-age, Cache-Control s-maxage, and Expires to objects. For more information, see Specifying How Long Objects and Errors Stay in a CloudFront Edge Cache (Expiration) in the Amazon CloudFront Developer Guide. - */ - DefaultTTL?: long; - /** - * The maximum amount of time that you want objects to stay in CloudFront caches before CloudFront forwards another request to your origin to determine whether the object has been updated. The value that you specify applies only when your origin adds HTTP headers such as Cache-Control max-age, Cache-Control s-maxage, and Expires to objects. For more information, see Specifying How Long Objects and Errors Stay in a CloudFront Edge Cache (Expiration) in the Amazon CloudFront Developer Guide. - */ - MaxTTL?: long; - /** - * Whether you want CloudFront to automatically compress certain files for this cache behavior. If so, specify true; if not, specify false. For more information, see Serving Compressed Files in the Amazon CloudFront Developer Guide. - */ - Compress?: boolean; - /** - * A complex type that contains zero or more Lambda function associations for a cache behavior. - */ - LambdaFunctionAssociations?: LambdaFunctionAssociations; - } - export type CacheBehaviorList = CacheBehavior[]; - export interface CacheBehaviors { - /** - * The number of cache behaviors for this distribution. - */ - Quantity: integer; - /** - * Optional: A complex type that contains cache behaviors for this distribution. If Quantity is 0, you can omit Items. - */ - Items?: CacheBehaviorList; - } - export interface CachedMethods { - /** - * The number of HTTP methods for which you want CloudFront to cache responses. Valid values are 2 (for caching responses to GET and HEAD requests) and 3 (for caching responses to GET, HEAD, and OPTIONS requests). - */ - Quantity: integer; - /** - * A complex type that contains the HTTP methods that you want CloudFront to cache responses to. - */ - Items: MethodsList; - } - export type CertificateSource = "cloudfront"|"iam"|"acm"|string; - export interface CloudFrontOriginAccessIdentity { - /** - * The ID for the origin access identity. For example: E74FTE3AJFJ256A. - */ - Id: string; - /** - * The Amazon S3 canonical user ID for the origin access identity, used when giving the origin access identity read permission to an object in Amazon S3. - */ - S3CanonicalUserId: string; - /** - * The current configuration information for the identity. - */ - CloudFrontOriginAccessIdentityConfig?: CloudFrontOriginAccessIdentityConfig; - } - export interface CloudFrontOriginAccessIdentityConfig { - /** - * A unique number that ensures the request can't be replayed. If the CallerReference is new (no matter the content of the CloudFrontOriginAccessIdentityConfig object), a new origin access identity is created. If the CallerReference is a value already sent in a previous identity request, and the content of the CloudFrontOriginAccessIdentityConfig is identical to the original request (ignoring white space), the response includes the same information returned to the original request. If the CallerReference is a value you already sent in a previous request to create an identity, but the content of the CloudFrontOriginAccessIdentityConfig is different from the original request, CloudFront returns a CloudFrontOriginAccessIdentityAlreadyExists error. - */ - CallerReference: string; - /** - * Any comments you want to include about the origin access identity. - */ - Comment: string; - } - export interface CloudFrontOriginAccessIdentityList { - /** - * Use this when paginating results to indicate where to begin in your list of origin access identities. The results include identities in the list that occur after the marker. To get the next page of results, set the Marker to the value of the NextMarker from the current page's response (which is also the ID of the last identity on that page). - */ - Marker: string; - /** - * If IsTruncated is true, this element is present and contains the value you can use for the Marker request parameter to continue listing your origin access identities where they left off. - */ - NextMarker?: string; - /** - * The maximum number of origin access identities you want in the response body. - */ - MaxItems: integer; - /** - * A flag that indicates whether more origin access identities remain to be listed. If your results were truncated, you can make a follow-up pagination request using the Marker request parameter to retrieve more items in the list. - */ - IsTruncated: boolean; - /** - * The number of CloudFront origin access identities that were created by the current AWS account. - */ - Quantity: integer; - /** - * A complex type that contains one CloudFrontOriginAccessIdentitySummary element for each origin access identity that was created by the current AWS account. - */ - Items?: CloudFrontOriginAccessIdentitySummaryList; - } - export interface CloudFrontOriginAccessIdentitySummary { - /** - * The ID for the origin access identity. For example: E74FTE3AJFJ256A. - */ - Id: string; - /** - * The Amazon S3 canonical user ID for the origin access identity, which you use when giving the origin access identity read permission to an object in Amazon S3. - */ - S3CanonicalUserId: string; - /** - * The comment for this origin access identity, as originally specified when created. - */ - Comment: string; - } - export type CloudFrontOriginAccessIdentitySummaryList = CloudFrontOriginAccessIdentitySummary[]; - export type CookieNameList = string[]; - export interface CookieNames { - /** - * The number of different cookies that you want CloudFront to forward to the origin for this cache behavior. - */ - Quantity: integer; - /** - * A complex type that contains one Name element for each cookie that you want CloudFront to forward to the origin for this cache behavior. - */ - Items?: CookieNameList; - } - export interface CookiePreference { - /** - * Specifies which cookies to forward to the origin for this cache behavior: all, none, or the list of cookies specified in the WhitelistedNames complex type. Amazon S3 doesn't process cookies. When the cache behavior is forwarding requests to an Amazon S3 origin, specify none for the Forward element. - */ - Forward: ItemSelection; - /** - * Required if you specify whitelist for the value of Forward:. A complex type that specifies how many different cookies you want CloudFront to forward to the origin for this cache behavior and, if you want to forward selected cookies, the names of those cookies. If you specify all or none for the value of Forward, omit WhitelistedNames. If you change the value of Forward from whitelist to all or none and you don't delete the WhitelistedNames element and its child elements, CloudFront deletes them automatically. For the current limit on the number of cookie names that you can whitelist for each cache behavior, see Amazon CloudFront Limits in the AWS General Reference. - */ - WhitelistedNames?: CookieNames; - } - export interface CreateCloudFrontOriginAccessIdentityRequest { - /** - * The current configuration information for the identity. - */ - CloudFrontOriginAccessIdentityConfig: CloudFrontOriginAccessIdentityConfig; - } - export interface CreateCloudFrontOriginAccessIdentityResult { - /** - * The origin access identity's information. - */ - CloudFrontOriginAccessIdentity?: CloudFrontOriginAccessIdentity; - /** - * The fully qualified URI of the new origin access identity just created. For example: https://cloudfront.amazonaws.com/2010-11-01/origin-access-identity/cloudfront/E74FTE3AJFJ256A. - */ - Location?: string; - /** - * The current version of the origin access identity created. - */ - ETag?: string; - } - export interface CreateDistributionRequest { - /** - * The distribution's configuration information. - */ - DistributionConfig: DistributionConfig; - } - export interface CreateDistributionResult { - /** - * The distribution's information. - */ - Distribution?: Distribution; - /** - * The fully qualified URI of the new distribution resource just created. For example: https://cloudfront.amazonaws.com/2010-11-01/distribution/EDFDVBD632BHDS5. - */ - Location?: string; - /** - * The current version of the distribution created. - */ - ETag?: string; - } - export interface CreateDistributionWithTagsRequest { - /** - * The distribution's configuration information. - */ - DistributionConfigWithTags: DistributionConfigWithTags; - } - export interface CreateDistributionWithTagsResult { - /** - * The distribution's information. - */ - Distribution?: Distribution; - /** - * The fully qualified URI of the new distribution resource just created. For example: https://cloudfront.amazonaws.com/2010-11-01/distribution/EDFDVBD632BHDS5. - */ - Location?: string; - /** - * The current version of the distribution created. - */ - ETag?: string; - } - export interface CreateInvalidationRequest { - /** - * The distribution's id. - */ - DistributionId: string; - /** - * The batch information for the invalidation. - */ - InvalidationBatch: InvalidationBatch; - } - export interface CreateInvalidationResult { - /** - * The fully qualified URI of the distribution and invalidation batch request, including the Invalidation ID. - */ - Location?: string; - /** - * The invalidation's information. - */ - Invalidation?: Invalidation; - } - export interface CreateStreamingDistributionRequest { - /** - * The streaming distribution's configuration information. - */ - StreamingDistributionConfig: StreamingDistributionConfig; - } - export interface CreateStreamingDistributionResult { - /** - * The streaming distribution's information. - */ - StreamingDistribution?: StreamingDistribution; - /** - * The fully qualified URI of the new streaming distribution resource just created. For example: https://cloudfront.amazonaws.com/2010-11-01/streaming-distribution/EGTXBD79H29TRA8. - */ - Location?: string; - /** - * The current version of the streaming distribution created. - */ - ETag?: string; - } - export interface CreateStreamingDistributionWithTagsRequest { - /** - * The streaming distribution's configuration information. - */ - StreamingDistributionConfigWithTags: StreamingDistributionConfigWithTags; - } - export interface CreateStreamingDistributionWithTagsResult { - /** - * The streaming distribution's information. - */ - StreamingDistribution?: StreamingDistribution; - /** - * The fully qualified URI of the new streaming distribution resource just created. For example: https://cloudfront.amazonaws.com/2010-11-01/streaming-distribution/EGTXBD79H29TRA8. - */ - Location?: string; - ETag?: string; - } - export interface CustomErrorResponse { - /** - * The HTTP status code for which you want to specify a custom error page and/or a caching duration. - */ - ErrorCode: integer; - /** - * The path to the custom error page that you want CloudFront to return to a viewer when your origin returns the HTTP status code specified by ErrorCode, for example, /4xx-errors/403-forbidden.html. If you want to store your objects and your custom error pages in different locations, your distribution must include a cache behavior for which the following is true: The value of PathPattern matches the path to your custom error messages. For example, suppose you saved custom error pages for 4xx errors in an Amazon S3 bucket in a directory named /4xx-errors. Your distribution must include a cache behavior for which the path pattern routes requests for your custom error pages to that location, for example, /4xx-errors/*. The value of TargetOriginId specifies the value of the ID element for the origin that contains your custom error pages. If you specify a value for ResponsePagePath, you must also specify a value for ResponseCode. If you don't want to specify a value, include an empty element, <ResponsePagePath>, in the XML document. We recommend that you store custom error pages in an Amazon S3 bucket. If you store custom error pages on an HTTP server and the server starts to return 5xx errors, CloudFront can't get the files that you want to return to viewers because the origin server is unavailable. - */ - ResponsePagePath?: string; - /** - * The HTTP status code that you want CloudFront to return to the viewer along with the custom error page. There are a variety of reasons that you might want CloudFront to return a status code different from the status code that your origin returned to CloudFront, for example: Some Internet devices (some firewalls and corporate proxies, for example) intercept HTTP 4xx and 5xx and prevent the response from being returned to the viewer. If you substitute 200, the response typically won't be intercepted. If you don't care about distinguishing among different client errors or server errors, you can specify 400 or 500 as the ResponseCode for all 4xx or 5xx errors. You might want to return a 200 status code (OK) and static website so your customers don't know that your website is down. If you specify a value for ResponseCode, you must also specify a value for ResponsePagePath. If you don't want to specify a value, include an empty element, <ResponseCode>, in the XML document. - */ - ResponseCode?: string; - /** - * The minimum amount of time, in seconds, that you want CloudFront to cache the HTTP status code specified in ErrorCode. When this time period has elapsed, CloudFront queries your origin to see whether the problem that caused the error has been resolved and the requested object is now available. If you don't want to specify a value, include an empty element, <ErrorCachingMinTTL>, in the XML document. For more information, see Customizing Error Responses in the Amazon CloudFront Developer Guide. - */ - ErrorCachingMinTTL?: long; - } - export type CustomErrorResponseList = CustomErrorResponse[]; - export interface CustomErrorResponses { - /** - * The number of HTTP status codes for which you want to specify a custom error page and/or a caching duration. If Quantity is 0, you can omit Items. - */ - Quantity: integer; - /** - * A complex type that contains a CustomErrorResponse element for each HTTP status code for which you want to specify a custom error page and/or a caching duration. - */ - Items?: CustomErrorResponseList; - } - export interface CustomHeaders { - /** - * The number of custom headers, if any, for this distribution. - */ - Quantity: integer; - /** - * Optional: A list that contains one OriginCustomHeader element for each custom header that you want CloudFront to forward to the origin. If Quantity is 0, omit Items. - */ - Items?: OriginCustomHeadersList; - } - export interface CustomOriginConfig { - /** - * The HTTP port the custom origin listens on. - */ - HTTPPort: integer; - /** - * The HTTPS port the custom origin listens on. - */ - HTTPSPort: integer; - /** - * The origin protocol policy to apply to your origin. - */ - OriginProtocolPolicy: OriginProtocolPolicy; - /** - * The SSL/TLS protocols that you want CloudFront to use when communicating with your origin over HTTPS. - */ - OriginSslProtocols?: OriginSslProtocols; - /** - * You can create a custom origin read timeout. All timeout units are in seconds. The default origin read timeout is 30 seconds, but you can configure custom timeout lengths using the CloudFront API. The minimum timeout length is 4 seconds; the maximum is 60 seconds. If you need to increase the maximum time limit, contact the AWS Support Center. - */ - OriginReadTimeout?: integer; - /** - * You can create a custom keep-alive timeout. All timeout units are in seconds. The default keep-alive timeout is 5 seconds, but you can configure custom timeout lengths using the CloudFront API. The minimum timeout length is 1 second; the maximum is 60 seconds. If you need to increase the maximum time limit, contact the AWS Support Center. - */ - OriginKeepaliveTimeout?: integer; - } - export interface DefaultCacheBehavior { - /** - * The value of ID for the origin that you want CloudFront to route requests to when a request matches the path pattern either for a cache behavior or for the default cache behavior. - */ - TargetOriginId: string; - /** - * A complex type that specifies how CloudFront handles query strings and cookies. - */ - ForwardedValues: ForwardedValues; - /** - * A complex type that specifies the AWS accounts, if any, that you want to allow to create signed URLs for private content. If you want to require signed URLs in requests for objects in the target origin that match the PathPattern for this cache behavior, specify true for Enabled, and specify the applicable values for Quantity and Items. For more information, see Serving Private Content through CloudFront in the Amazon Amazon CloudFront Developer Guide. If you don't want to require signed URLs in requests for objects that match PathPattern, specify false for Enabled and 0 for Quantity. Omit Items. To add, change, or remove one or more trusted signers, change Enabled to true (if it's currently false), change Quantity as applicable, and specify all of the trusted signers that you want to include in the updated distribution. - */ - TrustedSigners: TrustedSigners; - /** - * The protocol that viewers can use to access the files in the origin specified by TargetOriginId when a request matches the path pattern in PathPattern. You can specify the following options: allow-all: Viewers can use HTTP or HTTPS. redirect-to-https: If a viewer submits an HTTP request, CloudFront returns an HTTP status code of 301 (Moved Permanently) to the viewer along with the HTTPS URL. The viewer then resubmits the request using the new URL. https-only: If a viewer sends an HTTP request, CloudFront returns an HTTP status code of 403 (Forbidden). For more information about requiring the HTTPS protocol, see Using an HTTPS Connection to Access Your Objects in the Amazon CloudFront Developer Guide. The only way to guarantee that viewers retrieve an object that was fetched from the origin using HTTPS is never to use any other protocol to fetch the object. If you have recently changed from HTTP to HTTPS, we recommend that you clear your objects' cache because cached objects are protocol agnostic. That means that an edge location will return an object from the cache regardless of whether the current request protocol matches the protocol used previously. For more information, see Specifying How Long Objects and Errors Stay in a CloudFront Edge Cache (Expiration) in the Amazon CloudFront Developer Guide. - */ - ViewerProtocolPolicy: ViewerProtocolPolicy; - /** - * The minimum amount of time that you want objects to stay in CloudFront caches before CloudFront forwards another request to your origin to determine whether the object has been updated. For more information, see Specifying How Long Objects and Errors Stay in a CloudFront Edge Cache (Expiration) in the Amazon Amazon CloudFront Developer Guide. You must specify 0 for MinTTL if you configure CloudFront to forward all headers to your origin (under Headers, if you specify 1 for Quantity and * for Name). - */ - MinTTL: long; - AllowedMethods?: AllowedMethods; - /** - * Indicates whether you want to distribute media files in the Microsoft Smooth Streaming format using the origin that is associated with this cache behavior. If so, specify true; if not, specify false. If you specify true for SmoothStreaming, you can still distribute other content using this cache behavior if the content matches the value of PathPattern. - */ - SmoothStreaming?: boolean; - /** - * The default amount of time that you want objects to stay in CloudFront caches before CloudFront forwards another request to your origin to determine whether the object has been updated. The value that you specify applies only when your origin does not add HTTP headers such as Cache-Control max-age, Cache-Control s-maxage, and Expires to objects. For more information, see Specifying How Long Objects and Errors Stay in a CloudFront Edge Cache (Expiration) in the Amazon CloudFront Developer Guide. - */ - DefaultTTL?: long; - MaxTTL?: long; - /** - * Whether you want CloudFront to automatically compress certain files for this cache behavior. If so, specify true; if not, specify false. For more information, see Serving Compressed Files in the Amazon CloudFront Developer Guide. - */ - Compress?: boolean; - /** - * A complex type that contains zero or more Lambda function associations for a cache behavior. - */ - LambdaFunctionAssociations?: LambdaFunctionAssociations; - } - export interface DeleteCloudFrontOriginAccessIdentityRequest { - /** - * The origin access identity's ID. - */ - Id: string; - /** - * The value of the ETag header you received from a previous GET or PUT request. For example: E2QWRUHAPOMQZL. - */ - IfMatch?: string; - } - export interface DeleteDistributionRequest { - /** - * The distribution ID. - */ - Id: string; - /** - * The value of the ETag header that you received when you disabled the distribution. For example: E2QWRUHAPOMQZL. - */ - IfMatch?: string; - } - export interface DeleteStreamingDistributionRequest { - /** - * The distribution ID. - */ - Id: string; - /** - * The value of the ETag header that you received when you disabled the streaming distribution. For example: E2QWRUHAPOMQZL. - */ - IfMatch?: string; - } - export interface Distribution { - /** - * The identifier for the distribution. For example: EDFDVBD632BHDS5. - */ - Id: string; - /** - * The ARN (Amazon Resource Name) for the distribution. For example: arn:aws:cloudfront::123456789012:distribution/EDFDVBD632BHDS5, where 123456789012 is your AWS account ID. - */ - ARN: string; - /** - * This response element indicates the current status of the distribution. When the status is Deployed, the distribution's information is fully propagated to all CloudFront edge locations. - */ - Status: string; - /** - * The date and time the distribution was last modified. - */ - LastModifiedTime: timestamp; - /** - * The number of invalidation batches currently in progress. - */ - InProgressInvalidationBatches: integer; - /** - * The domain name corresponding to the distribution. For example: d604721fxaaqy9.cloudfront.net. - */ - DomainName: string; - /** - * CloudFront automatically adds this element to the response only if you've set up the distribution to serve private content with signed URLs. The element lists the key pair IDs that CloudFront is aware of for each trusted signer. The Signer child element lists the AWS account number of the trusted signer (or an empty Self element if the signer is you). The Signer element also includes the IDs of any active key pairs associated with the trusted signer's AWS account. If no KeyPairId element appears for a Signer, that signer can't create working signed URLs. - */ - ActiveTrustedSigners: ActiveTrustedSigners; - /** - * The current configuration information for the distribution. Send a GET request to the /CloudFront API version/distribution ID/config resource. - */ - DistributionConfig: DistributionConfig; - } - export interface DistributionConfig { - /** - * A unique value (for example, a date-time stamp) that ensures that the request can't be replayed. If the value of CallerReference is new (regardless of the content of the DistributionConfig object), CloudFront creates a new distribution. If CallerReference is a value you already sent in a previous request to create a distribution, and if the content of the DistributionConfig is identical to the original request (ignoring white space), CloudFront returns the same the response that it returned to the original request. If CallerReference is a value you already sent in a previous request to create a distribution but the content of the DistributionConfig is different from the original request, CloudFront returns a DistributionAlreadyExists error. - */ - CallerReference: string; - /** - * A complex type that contains information about CNAMEs (alternate domain names), if any, for this distribution. - */ - Aliases?: Aliases; - /** - * The object that you want CloudFront to request from your origin (for example, index.html) when a viewer requests the root URL for your distribution (http://www.example.com) instead of an object in your distribution (http://www.example.com/product-description.html). Specifying a default root object avoids exposing the contents of your distribution. Specify only the object name, for example, index.html. Do not add a / before the object name. If you don't want to specify a default root object when you create a distribution, include an empty DefaultRootObject element. To delete the default root object from an existing distribution, update the distribution configuration and include an empty DefaultRootObject element. To replace the default root object, update the distribution configuration and specify the new object. For more information about the default root object, see Creating a Default Root Object in the Amazon CloudFront Developer Guide. - */ - DefaultRootObject?: string; - /** - * A complex type that contains information about origins for this distribution. - */ - Origins: Origins; - /** - * A complex type that describes the default cache behavior if you do not specify a CacheBehavior element or if files don't match any of the values of PathPattern in CacheBehavior elements. You must create exactly one default cache behavior. - */ - DefaultCacheBehavior: DefaultCacheBehavior; - /** - * A complex type that contains zero or more CacheBehavior elements. - */ - CacheBehaviors?: CacheBehaviors; - /** - * A complex type that controls the following: Whether CloudFront replaces HTTP status codes in the 4xx and 5xx range with custom error messages before returning the response to the viewer. How long CloudFront caches HTTP status codes in the 4xx and 5xx range. For more information about custom error pages, see Customizing Error Responses in the Amazon CloudFront Developer Guide. - */ - CustomErrorResponses?: CustomErrorResponses; - /** - * Any comments you want to include about the distribution. If you don't want to specify a comment, include an empty Comment element. To delete an existing comment, update the distribution configuration and include an empty Comment element. To add or change a comment, update the distribution configuration and specify the new comment. - */ - Comment: string; - /** - * A complex type that controls whether access logs are written for the distribution. For more information about logging, see Access Logs in the Amazon CloudFront Developer Guide. - */ - Logging?: LoggingConfig; - /** - * The price class that corresponds with the maximum price that you want to pay for CloudFront service. If you specify PriceClass_All, CloudFront responds to requests for your objects from all CloudFront edge locations. If you specify a price class other than PriceClass_All, CloudFront serves your objects from the CloudFront edge location that has the lowest latency among the edge locations in your price class. Viewers who are in or near regions that are excluded from your specified price class may encounter slower performance. For more information about price classes, see Choosing the Price Class for a CloudFront Distribution in the Amazon CloudFront Developer Guide. For information about CloudFront pricing, including how price classes map to CloudFront regions, see Amazon CloudFront Pricing. - */ - PriceClass?: PriceClass; - /** - * From this field, you can enable or disable the selected distribution. If you specify false for Enabled but you specify values for Bucket and Prefix, the values are automatically deleted. - */ - Enabled: boolean; - ViewerCertificate?: ViewerCertificate; - Restrictions?: Restrictions; - /** - * A unique identifier that specifies the AWS WAF web ACL, if any, to associate with this distribution. AWS WAF is a web application firewall that lets you monitor the HTTP and HTTPS requests that are forwarded to CloudFront, and lets you control access to your content. Based on conditions that you specify, such as the IP addresses that requests originate from or the values of query strings, CloudFront responds to requests either with the requested content or with an HTTP 403 status code (Forbidden). You can also configure CloudFront to return a custom error page when a request is blocked. For more information about AWS WAF, see the AWS WAF Developer Guide. - */ - WebACLId?: string; - /** - * (Optional) Specify the maximum HTTP version that you want viewers to use to communicate with CloudFront. The default value for new web distributions is http2. Viewers that don't support HTTP/2 automatically use an earlier HTTP version. For viewers and CloudFront to use HTTP/2, viewers must support TLS 1.2 or later, and must support Server Name Identification (SNI). In general, configuring CloudFront to communicate with viewers using HTTP/2 reduces latency. You can improve performance by optimizing for HTTP/2. For more information, do an Internet search for "http/2 optimization." - */ - HttpVersion?: HttpVersion; - /** - * If you want CloudFront to respond to IPv6 DNS requests with an IPv6 address for your distribution, specify true. If you specify false, CloudFront responds to IPv6 DNS requests with the DNS response code NOERROR and with no IP addresses. This allows viewers to submit a second request, for an IPv4 address for your distribution. In general, you should enable IPv6 if you have users on IPv6 networks who want to access your content. However, if you're using signed URLs or signed cookies to restrict access to your content, and if you're using a custom policy that includes the IpAddress parameter to restrict the IP addresses that can access your content, do not enable IPv6. If you want to restrict access to some content by IP address and not restrict access to other content (or restrict access but not by IP address), you can create two distributions. For more information, see Creating a Signed URL Using a Custom Policy in the Amazon CloudFront Developer Guide. If you're using an Amazon Route 53 alias resource record set to route traffic to your CloudFront distribution, you need to create a second alias resource record set when both of the following are true: You enable IPv6 for the distribution You're using alternate domain names in the URLs for your objects For more information, see Routing Traffic to an Amazon CloudFront Web Distribution by Using Your Domain Name in the Amazon Route 53 Developer Guide. If you created a CNAME resource record set, either with Amazon Route 53 or with another DNS service, you don't need to make any changes. A CNAME record will route traffic to your distribution regardless of the IP address format of the viewer request. - */ - IsIPV6Enabled?: boolean; - } - export interface DistributionConfigWithTags { - /** - * A distribution configuration. - */ - DistributionConfig: DistributionConfig; - /** - * A complex type that contains zero or more Tag elements. - */ - Tags: Tags; - } - export interface DistributionList { - /** - * The value you provided for the Marker request parameter. - */ - Marker: string; - /** - * If IsTruncated is true, this element is present and contains the value you can use for the Marker request parameter to continue listing your distributions where they left off. - */ - NextMarker?: string; - /** - * The value you provided for the MaxItems request parameter. - */ - MaxItems: integer; - /** - * A flag that indicates whether more distributions remain to be listed. If your results were truncated, you can make a follow-up pagination request using the Marker request parameter to retrieve more distributions in the list. - */ - IsTruncated: boolean; - /** - * The number of distributions that were created by the current AWS account. - */ - Quantity: integer; - /** - * A complex type that contains one DistributionSummary element for each distribution that was created by the current AWS account. - */ - Items?: DistributionSummaryList; - } - export interface DistributionSummary { - /** - * The identifier for the distribution. For example: EDFDVBD632BHDS5. - */ - Id: string; - /** - * The ARN (Amazon Resource Name) for the distribution. For example: arn:aws:cloudfront::123456789012:distribution/EDFDVBD632BHDS5, where 123456789012 is your AWS account ID. - */ - ARN: string; - /** - * The current status of the distribution. When the status is Deployed, the distribution's information is propagated to all CloudFront edge locations. - */ - Status: string; - /** - * The date and time the distribution was last modified. - */ - LastModifiedTime: timestamp; - /** - * The domain name that corresponds to the distribution. For example: d604721fxaaqy9.cloudfront.net. - */ - DomainName: string; - /** - * A complex type that contains information about CNAMEs (alternate domain names), if any, for this distribution. - */ - Aliases: Aliases; - /** - * A complex type that contains information about origins for this distribution. - */ - Origins: Origins; - /** - * A complex type that describes the default cache behavior if you do not specify a CacheBehavior element or if files don't match any of the values of PathPattern in CacheBehavior elements. You must create exactly one default cache behavior. - */ - DefaultCacheBehavior: DefaultCacheBehavior; - /** - * A complex type that contains zero or more CacheBehavior elements. - */ - CacheBehaviors: CacheBehaviors; - /** - * A complex type that contains zero or more CustomErrorResponses elements. - */ - CustomErrorResponses: CustomErrorResponses; - /** - * The comment originally specified when this distribution was created. - */ - Comment: string; - PriceClass: PriceClass; - /** - * Whether the distribution is enabled to accept user requests for content. - */ - Enabled: boolean; - ViewerCertificate: ViewerCertificate; - Restrictions: Restrictions; - /** - * The Web ACL Id (if any) associated with the distribution. - */ - WebACLId: string; - /** - * Specify the maximum HTTP version that you want viewers to use to communicate with CloudFront. The default value for new web distributions is http2. Viewers that don't support HTTP/2 will automatically use an earlier version. - */ - HttpVersion: HttpVersion; - /** - * Whether CloudFront responds to IPv6 DNS requests with an IPv6 address for your distribution. - */ - IsIPV6Enabled: boolean; - } - export type DistributionSummaryList = DistributionSummary[]; - export type EventType = "viewer-request"|"viewer-response"|"origin-request"|"origin-response"|string; - export interface ForwardedValues { - /** - * Indicates whether you want CloudFront to forward query strings to the origin that is associated with this cache behavior and cache based on the query string parameters. CloudFront behavior depends on the value of QueryString and on the values that you specify for QueryStringCacheKeys, if any: If you specify true for QueryString and you don't specify any values for QueryStringCacheKeys, CloudFront forwards all query string parameters to the origin and caches based on all query string parameters. Depending on how many query string parameters and values you have, this can adversely affect performance because CloudFront must forward more requests to the origin. If you specify true for QueryString and you specify one or more values for QueryStringCacheKeys, CloudFront forwards all query string parameters to the origin, but it only caches based on the query string parameters that you specify. If you specify false for QueryString, CloudFront doesn't forward any query string parameters to the origin, and doesn't cache based on query string parameters. For more information, see Configuring CloudFront to Cache Based on Query String Parameters in the Amazon CloudFront Developer Guide. - */ - QueryString: boolean; - /** - * A complex type that specifies whether you want CloudFront to forward cookies to the origin and, if so, which ones. For more information about forwarding cookies to the origin, see How CloudFront Forwards, Caches, and Logs Cookies in the Amazon CloudFront Developer Guide. - */ - Cookies: CookiePreference; - /** - * A complex type that specifies the Headers, if any, that you want CloudFront to vary upon for this cache behavior. - */ - Headers?: Headers; - /** - * A complex type that contains information about the query string parameters that you want CloudFront to use for caching for this cache behavior. - */ - QueryStringCacheKeys?: QueryStringCacheKeys; - } - export interface GeoRestriction { - /** - * The method that you want to use to restrict distribution of your content by country: none: No geo restriction is enabled, meaning access to content is not restricted by client geo location. blacklist: The Location elements specify the countries in which you do not want CloudFront to distribute your content. whitelist: The Location elements specify the countries in which you want CloudFront to distribute your content. - */ - RestrictionType: GeoRestrictionType; - /** - * When geo restriction is enabled, this is the number of countries in your whitelist or blacklist. Otherwise, when it is not enabled, Quantity is 0, and you can omit Items. - */ - Quantity: integer; - /** - * A complex type that contains a Location element for each country in which you want CloudFront either to distribute your content (whitelist) or not distribute your content (blacklist). The Location element is a two-letter, uppercase country code for a country that you want to include in your blacklist or whitelist. Include one Location element for each country. CloudFront and MaxMind both use ISO 3166 country codes. For the current list of countries and the corresponding codes, see ISO 3166-1-alpha-2 code on the International Organization for Standardization website. You can also refer to the country list in the CloudFront console, which includes both country names and codes. - */ - Items?: LocationList; - } - export type GeoRestrictionType = "blacklist"|"whitelist"|"none"|string; - export interface GetCloudFrontOriginAccessIdentityConfigRequest { - /** - * The identity's ID. - */ - Id: string; - } - export interface GetCloudFrontOriginAccessIdentityConfigResult { - /** - * The origin access identity's configuration information. - */ - CloudFrontOriginAccessIdentityConfig?: CloudFrontOriginAccessIdentityConfig; - /** - * The current version of the configuration. For example: E2QWRUHAPOMQZL. - */ - ETag?: string; - } - export interface GetCloudFrontOriginAccessIdentityRequest { - /** - * The identity's ID. - */ - Id: string; - } - export interface GetCloudFrontOriginAccessIdentityResult { - /** - * The origin access identity's information. - */ - CloudFrontOriginAccessIdentity?: CloudFrontOriginAccessIdentity; - /** - * The current version of the origin access identity's information. For example: E2QWRUHAPOMQZL. - */ - ETag?: string; - } - export interface GetDistributionConfigRequest { - /** - * The distribution's ID. - */ - Id: string; - } - export interface GetDistributionConfigResult { - /** - * The distribution's configuration information. - */ - DistributionConfig?: DistributionConfig; - /** - * The current version of the configuration. For example: E2QWRUHAPOMQZL. - */ - ETag?: string; - } - export interface GetDistributionRequest { - /** - * The distribution's ID. - */ - Id: string; - } - export interface GetDistributionResult { - /** - * The distribution's information. - */ - Distribution?: Distribution; - /** - * The current version of the distribution's information. For example: E2QWRUHAPOMQZL. - */ - ETag?: string; - } - export interface GetInvalidationRequest { - /** - * The distribution's ID. - */ - DistributionId: string; - /** - * The identifier for the invalidation request, for example, IDFDVBD632BHDS5. - */ - Id: string; - } - export interface GetInvalidationResult { - /** - * The invalidation's information. For more information, see Invalidation Complex Type. - */ - Invalidation?: Invalidation; - } - export interface GetStreamingDistributionConfigRequest { - /** - * The streaming distribution's ID. - */ - Id: string; - } - export interface GetStreamingDistributionConfigResult { - /** - * The streaming distribution's configuration information. - */ - StreamingDistributionConfig?: StreamingDistributionConfig; - /** - * The current version of the configuration. For example: E2QWRUHAPOMQZL. - */ - ETag?: string; - } - export interface GetStreamingDistributionRequest { - /** - * The streaming distribution's ID. - */ - Id: string; - } - export interface GetStreamingDistributionResult { - /** - * The streaming distribution's information. - */ - StreamingDistribution?: StreamingDistribution; - /** - * The current version of the streaming distribution's information. For example: E2QWRUHAPOMQZL. - */ - ETag?: string; - } - export type HeaderList = string[]; - export interface Headers { - /** - * The number of different headers that you want CloudFront to forward to the origin for this cache behavior. You can configure each cache behavior in a web distribution to do one of the following: Forward all headers to your origin: Specify 1 for Quantity and * for Name. If you configure CloudFront to forward all headers to your origin, CloudFront doesn't cache the objects associated with this cache behavior. Instead, it sends every request to the origin. Forward a whitelist of headers you specify: Specify the number of headers that you want to forward, and specify the header names in Name elements. CloudFront caches your objects based on the values in all of the specified headers. CloudFront also forwards the headers that it forwards by default, but it caches your objects based only on the headers that you specify. Forward only the default headers: Specify 0 for Quantity and omit Items. In this configuration, CloudFront doesn't cache based on the values in the request headers. - */ - Quantity: integer; - /** - * A complex type that contains one Name element for each header that you want CloudFront to forward to the origin and to vary on for this cache behavior. If Quantity is 0, omit Items. - */ - Items?: HeaderList; - } - export type HttpVersion = "http1.1"|"http2"|string; - export interface Invalidation { - /** - * The identifier for the invalidation request. For example: IDFDVBD632BHDS5. - */ - Id: string; - /** - * The status of the invalidation request. When the invalidation batch is finished, the status is Completed. - */ - Status: string; - /** - * The date and time the invalidation request was first made. - */ - CreateTime: timestamp; - /** - * The current invalidation information for the batch request. - */ - InvalidationBatch: InvalidationBatch; - } - export interface InvalidationBatch { - /** - * A complex type that contains information about the objects that you want to invalidate. For more information, see Specifying the Objects to Invalidate in the Amazon CloudFront Developer Guide. - */ - Paths: Paths; - /** - * A value that you specify to uniquely identify an invalidation request. CloudFront uses the value to prevent you from accidentally resubmitting an identical request. Whenever you create a new invalidation request, you must specify a new value for CallerReference and change other values in the request as applicable. One way to ensure that the value of CallerReference is unique is to use a timestamp, for example, 20120301090000. If you make a second invalidation request with the same value for CallerReference, and if the rest of the request is the same, CloudFront doesn't create a new invalidation request. Instead, CloudFront returns information about the invalidation request that you previously created with the same CallerReference. If CallerReference is a value you already sent in a previous invalidation batch request but the content of any Path is different from the original request, CloudFront returns an InvalidationBatchAlreadyExists error. - */ - CallerReference: string; - } - export interface InvalidationList { - /** - * The value that you provided for the Marker request parameter. - */ - Marker: string; - /** - * If IsTruncated is true, this element is present and contains the value that you can use for the Marker request parameter to continue listing your invalidation batches where they left off. - */ - NextMarker?: string; - /** - * The value that you provided for the MaxItems request parameter. - */ - MaxItems: integer; - /** - * A flag that indicates whether more invalidation batch requests remain to be listed. If your results were truncated, you can make a follow-up pagination request using the Marker request parameter to retrieve more invalidation batches in the list. - */ - IsTruncated: boolean; - /** - * The number of invalidation batches that were created by the current AWS account. - */ - Quantity: integer; - /** - * A complex type that contains one InvalidationSummary element for each invalidation batch created by the current AWS account. - */ - Items?: InvalidationSummaryList; - } - export interface InvalidationSummary { - /** - * The unique ID for an invalidation request. - */ - Id: string; - CreateTime: timestamp; - /** - * The status of an invalidation request. - */ - Status: string; - } - export type InvalidationSummaryList = InvalidationSummary[]; - export type ItemSelection = "none"|"whitelist"|"all"|string; - export type KeyPairIdList = string[]; - export interface KeyPairIds { - /** - * The number of active CloudFront key pairs for AwsAccountNumber. For more information, see ActiveTrustedSigners. - */ - Quantity: integer; - /** - * A complex type that lists the active CloudFront key pairs, if any, that are associated with AwsAccountNumber. For more information, see ActiveTrustedSigners. - */ - Items?: KeyPairIdList; - } - export interface LambdaFunctionAssociation { - /** - * The ARN of the Lambda function. - */ - LambdaFunctionARN?: string; - /** - * Specifies the event type that triggers a Lambda function invocation. Valid values are: viewer-request origin-request viewer-response origin-response - */ - EventType?: EventType; - } - export type LambdaFunctionAssociationList = LambdaFunctionAssociation[]; - export interface LambdaFunctionAssociations { - /** - * The number of Lambda function associations for this cache behavior. - */ - Quantity: integer; - /** - * Optional: A complex type that contains LambdaFunctionAssociation items for this cache behavior. If Quantity is 0, you can omit Items. - */ - Items?: LambdaFunctionAssociationList; - } - export interface ListCloudFrontOriginAccessIdentitiesRequest { - /** - * Use this when paginating results to indicate where to begin in your list of origin access identities. The results include identities in the list that occur after the marker. To get the next page of results, set the Marker to the value of the NextMarker from the current page's response (which is also the ID of the last identity on that page). - */ - Marker?: string; - /** - * The maximum number of origin access identities you want in the response body. - */ - MaxItems?: string; - } - export interface ListCloudFrontOriginAccessIdentitiesResult { - /** - * The CloudFrontOriginAccessIdentityList type. - */ - CloudFrontOriginAccessIdentityList?: CloudFrontOriginAccessIdentityList; - } - export interface ListDistributionsByWebACLIdRequest { - /** - * Use Marker and MaxItems to control pagination of results. If you have more than MaxItems distributions that satisfy the request, the response includes a NextMarker element. To get the next page of results, submit another request. For the value of Marker, specify the value of NextMarker from the last response. (For the first request, omit Marker.) - */ - Marker?: string; - /** - * The maximum number of distributions that you want CloudFront to return in the response body. The maximum and default values are both 100. - */ - MaxItems?: string; - /** - * The ID of the AWS WAF web ACL that you want to list the associated distributions. If you specify "null" for the ID, the request returns a list of the distributions that aren't associated with a web ACL. - */ - WebACLId: string; - } - export interface ListDistributionsByWebACLIdResult { - /** - * The DistributionList type. - */ - DistributionList?: DistributionList; - } - export interface ListDistributionsRequest { - /** - * Use this when paginating results to indicate where to begin in your list of distributions. The results include distributions in the list that occur after the marker. To get the next page of results, set the Marker to the value of the NextMarker from the current page's response (which is also the ID of the last distribution on that page). - */ - Marker?: string; - /** - * The maximum number of distributions you want in the response body. - */ - MaxItems?: string; - } - export interface ListDistributionsResult { - /** - * The DistributionList type. - */ - DistributionList?: DistributionList; - } - export interface ListInvalidationsRequest { - /** - * The distribution's ID. - */ - DistributionId: string; - /** - * Use this parameter when paginating results to indicate where to begin in your list of invalidation batches. Because the results are returned in decreasing order from most recent to oldest, the most recent results are on the first page, the second page will contain earlier results, and so on. To get the next page of results, set Marker to the value of the NextMarker from the current page's response. This value is the same as the ID of the last invalidation batch on that page. - */ - Marker?: string; - /** - * The maximum number of invalidation batches that you want in the response body. - */ - MaxItems?: string; - } - export interface ListInvalidationsResult { - /** - * Information about invalidation batches. - */ - InvalidationList?: InvalidationList; - } - export interface ListStreamingDistributionsRequest { - /** - * The value that you provided for the Marker request parameter. - */ - Marker?: string; - /** - * The value that you provided for the MaxItems request parameter. - */ - MaxItems?: string; - } - export interface ListStreamingDistributionsResult { - /** - * The StreamingDistributionList type. - */ - StreamingDistributionList?: StreamingDistributionList; - } - export interface ListTagsForResourceRequest { - /** - * An ARN of a CloudFront resource. - */ - Resource: ResourceARN; - } - export interface ListTagsForResourceResult { - /** - * A complex type that contains zero or more Tag elements. - */ - Tags: Tags; - } - export type LocationList = string[]; - export interface LoggingConfig { - /** - * Specifies whether you want CloudFront to save access logs to an Amazon S3 bucket. If you do not want to enable logging when you create a distribution or if you want to disable logging for an existing distribution, specify false for Enabled, and specify empty Bucket and Prefix elements. If you specify false for Enabled but you specify values for Bucket, prefix, and IncludeCookies, the values are automatically deleted. - */ - Enabled: boolean; - /** - * Specifies whether you want CloudFront to include cookies in access logs, specify true for IncludeCookies. If you choose to include cookies in logs, CloudFront logs all cookies regardless of how you configure the cache behaviors for this distribution. If you do not want to include cookies when you create a distribution or if you want to disable include cookies for an existing distribution, specify false for IncludeCookies. - */ - IncludeCookies: boolean; - /** - * The Amazon S3 bucket to store the access logs in, for example, myawslogbucket.s3.amazonaws.com. - */ - Bucket: string; - /** - * An optional string that you want CloudFront to prefix to the access log filenames for this distribution, for example, myprefix/. If you want to enable logging, but you do not want to specify a prefix, you still must include an empty Prefix element in the Logging element. - */ - Prefix: string; - } - export type Method = "GET"|"HEAD"|"POST"|"PUT"|"PATCH"|"OPTIONS"|"DELETE"|string; - export type MethodsList = Method[]; - export type MinimumProtocolVersion = "SSLv3"|"TLSv1"|string; - export interface Origin { - /** - * A unique identifier for the origin. The value of Id must be unique within the distribution. When you specify the value of TargetOriginId for the default cache behavior or for another cache behavior, you indicate the origin to which you want the cache behavior to route requests by specifying the value of the Id element for that origin. When a request matches the path pattern for that cache behavior, CloudFront routes the request to the specified origin. For more information, see Cache Behavior Settings in the Amazon CloudFront Developer Guide. - */ - Id: string; - /** - * Amazon S3 origins: The DNS name of the Amazon S3 bucket from which you want CloudFront to get objects for this origin, for example, myawsbucket.s3.amazonaws.com. Constraints for Amazon S3 origins: If you configured Amazon S3 Transfer Acceleration for your bucket, do not specify the s3-accelerate endpoint for DomainName. The bucket name must be between 3 and 63 characters long (inclusive). The bucket name must contain only lowercase characters, numbers, periods, underscores, and dashes. The bucket name must not contain adjacent periods. Custom Origins: The DNS domain name for the HTTP server from which you want CloudFront to get objects for this origin, for example, www.example.com. Constraints for custom origins: DomainName must be a valid DNS name that contains only a-z, A-Z, 0-9, dot (.), hyphen (-), or underscore (_) characters. The name cannot exceed 128 characters. - */ - DomainName: string; - /** - * An optional element that causes CloudFront to request your content from a directory in your Amazon S3 bucket or your custom origin. When you include the OriginPath element, specify the directory name, beginning with a /. CloudFront appends the directory name to the value of DomainName, for example, example.com/production. Do not include a / at the end of the directory name. For example, suppose you've specified the following values for your distribution: DomainName: An Amazon S3 bucket named myawsbucket. OriginPath: /production CNAME: example.com When a user enters example.com/index.html in a browser, CloudFront sends a request to Amazon S3 for myawsbucket/production/index.html. When a user enters example.com/acme/index.html in a browser, CloudFront sends a request to Amazon S3 for myawsbucket/production/acme/index.html. - */ - OriginPath?: string; - /** - * A complex type that contains names and values for the custom headers that you want. - */ - CustomHeaders?: CustomHeaders; - /** - * A complex type that contains information about the Amazon S3 origin. If the origin is a custom origin, use the CustomOriginConfig element instead. - */ - S3OriginConfig?: S3OriginConfig; - /** - * A complex type that contains information about a custom origin. If the origin is an Amazon S3 bucket, use the S3OriginConfig element instead. - */ - CustomOriginConfig?: CustomOriginConfig; - } - export interface OriginCustomHeader { - /** - * The name of a header that you want CloudFront to forward to your origin. For more information, see Forwarding Custom Headers to Your Origin (Web Distributions Only) in the Amazon Amazon CloudFront Developer Guide. - */ - HeaderName: string; - /** - * The value for the header that you specified in the HeaderName field. - */ - HeaderValue: string; - } - export type OriginCustomHeadersList = OriginCustomHeader[]; - export type OriginList = Origin[]; - export type OriginProtocolPolicy = "http-only"|"match-viewer"|"https-only"|string; - export interface OriginSslProtocols { - /** - * The number of SSL/TLS protocols that you want to allow CloudFront to use when establishing an HTTPS connection with this origin. - */ - Quantity: integer; - /** - * A list that contains allowed SSL/TLS protocols for this distribution. - */ - Items: SslProtocolsList; - } - export interface Origins { - /** - * The number of origins for this distribution. - */ - Quantity: integer; - /** - * A complex type that contains origins for this distribution. - */ - Items?: OriginList; - } - export type PathList = string[]; - export interface Paths { - /** - * The number of objects that you want to invalidate. - */ - Quantity: integer; - /** - * A complex type that contains a list of the paths that you want to invalidate. - */ - Items?: PathList; - } - export type PriceClass = "PriceClass_100"|"PriceClass_200"|"PriceClass_All"|string; - export interface QueryStringCacheKeys { - /** - * The number of whitelisted query string parameters for this cache behavior. - */ - Quantity: integer; - /** - * (Optional) A list that contains the query string parameters that you want CloudFront to use as a basis for caching for this cache behavior. If Quantity is 0, you can omit Items. - */ - Items?: QueryStringCacheKeysList; - } - export type QueryStringCacheKeysList = string[]; - export type ResourceARN = string; - export interface Restrictions { - GeoRestriction: GeoRestriction; - } - export interface S3Origin { - /** - * The DNS name of the Amazon S3 origin. - */ - DomainName: string; - /** - * The CloudFront origin access identity to associate with the RTMP distribution. Use an origin access identity to configure the distribution so that end users can only access objects in an Amazon S3 bucket through CloudFront. If you want end users to be able to access objects using either the CloudFront URL or the Amazon S3 URL, specify an empty OriginAccessIdentity element. To delete the origin access identity from an existing distribution, update the distribution configuration and include an empty OriginAccessIdentity element. To replace the origin access identity, update the distribution configuration and specify the new origin access identity. For more information, see Using an Origin Access Identity to Restrict Access to Your Amazon S3 Content in the Amazon Amazon CloudFront Developer Guide. - */ - OriginAccessIdentity: string; - } - export interface S3OriginConfig { - /** - * The CloudFront origin access identity to associate with the origin. Use an origin access identity to configure the origin so that viewers can only access objects in an Amazon S3 bucket through CloudFront. The format of the value is: origin-access-identity/cloudfront/ID-of-origin-access-identity where ID-of-origin-access-identity is the value that CloudFront returned in the ID element when you created the origin access identity. If you want viewers to be able to access objects using either the CloudFront URL or the Amazon S3 URL, specify an empty OriginAccessIdentity element. To delete the origin access identity from an existing distribution, update the distribution configuration and include an empty OriginAccessIdentity element. To replace the origin access identity, update the distribution configuration and specify the new origin access identity. For more information about the origin access identity, see Serving Private Content through CloudFront in the Amazon CloudFront Developer Guide. - */ - OriginAccessIdentity: string; - } - export type SSLSupportMethod = "sni-only"|"vip"|string; - export interface _Signer { - /** - * An AWS account that is included in the TrustedSigners complex type for this RTMP distribution. Valid values include: self, which is the AWS account used to create the distribution. An AWS account number. - */ - AwsAccountNumber?: string; - /** - * A complex type that lists the active CloudFront key pairs, if any, that are associated with AwsAccountNumber. - */ - KeyPairIds?: KeyPairIds; - } - export type SignerList = _Signer[]; - export type SslProtocol = "SSLv3"|"TLSv1"|"TLSv1.1"|"TLSv1.2"|string; - export type SslProtocolsList = SslProtocol[]; - export interface StreamingDistribution { - /** - * The identifier for the RTMP distribution. For example: EGTXBD79EXAMPLE. - */ - Id: string; - ARN: string; - /** - * The current status of the RTMP distribution. When the status is Deployed, the distribution's information is propagated to all CloudFront edge locations. - */ - Status: string; - /** - * The date and time that the distribution was last modified. - */ - LastModifiedTime?: timestamp; - /** - * The domain name that corresponds to the streaming distribution. For example: s5c39gqb8ow64r.cloudfront.net. - */ - DomainName: string; - /** - * A complex type that lists the AWS accounts, if any, that you included in the TrustedSigners complex type for this distribution. These are the accounts that you want to allow to create signed URLs for private content. The Signer complex type lists the AWS account number of the trusted signer or self if the signer is the AWS account that created the distribution. The Signer element also includes the IDs of any active CloudFront key pairs that are associated with the trusted signer's AWS account. If no KeyPairId element appears for a Signer, that signer can't create signed URLs. For more information, see Serving Private Content through CloudFront in the Amazon CloudFront Developer Guide. - */ - ActiveTrustedSigners: ActiveTrustedSigners; - /** - * The current configuration information for the RTMP distribution. - */ - StreamingDistributionConfig: StreamingDistributionConfig; - } - export interface StreamingDistributionConfig { - /** - * A unique number that ensures that the request can't be replayed. If the CallerReference is new (no matter the content of the StreamingDistributionConfig object), a new streaming distribution is created. If the CallerReference is a value that you already sent in a previous request to create a streaming distribution, and the content of the StreamingDistributionConfig is identical to the original request (ignoring white space), the response includes the same information returned to the original request. If the CallerReference is a value that you already sent in a previous request to create a streaming distribution but the content of the StreamingDistributionConfig is different from the original request, CloudFront returns a DistributionAlreadyExists error. - */ - CallerReference: string; - /** - * A complex type that contains information about the Amazon S3 bucket from which you want CloudFront to get your media files for distribution. - */ - S3Origin: S3Origin; - /** - * A complex type that contains information about CNAMEs (alternate domain names), if any, for this streaming distribution. - */ - Aliases?: Aliases; - /** - * Any comments you want to include about the streaming distribution. - */ - Comment: string; - /** - * A complex type that controls whether access logs are written for the streaming distribution. - */ - Logging?: StreamingLoggingConfig; - /** - * A complex type that specifies any AWS accounts that you want to permit to create signed URLs for private content. If you want the distribution to use signed URLs, include this element; if you want the distribution to use public URLs, remove this element. For more information, see Serving Private Content through CloudFront in the Amazon CloudFront Developer Guide. - */ - TrustedSigners: TrustedSigners; - /** - * A complex type that contains information about price class for this streaming distribution. - */ - PriceClass?: PriceClass; - /** - * Whether the streaming distribution is enabled to accept user requests for content. - */ - Enabled: boolean; - } - export interface StreamingDistributionConfigWithTags { - /** - * A streaming distribution Configuration. - */ - StreamingDistributionConfig: StreamingDistributionConfig; - /** - * A complex type that contains zero or more Tag elements. - */ - Tags: Tags; - } - export interface StreamingDistributionList { - /** - * The value you provided for the Marker request parameter. - */ - Marker: string; - /** - * If IsTruncated is true, this element is present and contains the value you can use for the Marker request parameter to continue listing your RTMP distributions where they left off. - */ - NextMarker?: string; - /** - * The value you provided for the MaxItems request parameter. - */ - MaxItems: integer; - /** - * A flag that indicates whether more streaming distributions remain to be listed. If your results were truncated, you can make a follow-up pagination request using the Marker request parameter to retrieve more distributions in the list. - */ - IsTruncated: boolean; - /** - * The number of streaming distributions that were created by the current AWS account. - */ - Quantity: integer; - /** - * A complex type that contains one StreamingDistributionSummary element for each distribution that was created by the current AWS account. - */ - Items?: StreamingDistributionSummaryList; - } - export interface StreamingDistributionSummary { - /** - * The identifier for the distribution. For example: EDFDVBD632BHDS5. - */ - Id: string; - /** - * The ARN (Amazon Resource Name) for the streaming distribution. For example: arn:aws:cloudfront::123456789012:streaming-distribution/EDFDVBD632BHDS5, where 123456789012 is your AWS account ID. - */ - ARN: string; - /** - * Indicates the current status of the distribution. When the status is Deployed, the distribution's information is fully propagated throughout the Amazon CloudFront system. - */ - Status: string; - /** - * The date and time the distribution was last modified. - */ - LastModifiedTime: timestamp; - /** - * The domain name corresponding to the distribution. For example: d604721fxaaqy9.cloudfront.net. - */ - DomainName: string; - /** - * A complex type that contains information about the Amazon S3 bucket from which you want CloudFront to get your media files for distribution. - */ - S3Origin: S3Origin; - /** - * A complex type that contains information about CNAMEs (alternate domain names), if any, for this streaming distribution. - */ - Aliases: Aliases; - /** - * A complex type that specifies the AWS accounts, if any, that you want to allow to create signed URLs for private content. If you want to require signed URLs in requests for objects in the target origin that match the PathPattern for this cache behavior, specify true for Enabled, and specify the applicable values for Quantity and Items.If you don't want to require signed URLs in requests for objects that match PathPattern, specify false for Enabled and 0 for Quantity. Omit Items. To add, change, or remove one or more trusted signers, change Enabled to true (if it's currently false), change Quantity as applicable, and specify all of the trusted signers that you want to include in the updated distribution. - */ - TrustedSigners: TrustedSigners; - /** - * The comment originally specified when this distribution was created. - */ - Comment: string; - PriceClass: PriceClass; - /** - * Whether the distribution is enabled to accept end user requests for content. - */ - Enabled: boolean; - } - export type StreamingDistributionSummaryList = StreamingDistributionSummary[]; - export interface StreamingLoggingConfig { - /** - * Specifies whether you want CloudFront to save access logs to an Amazon S3 bucket. If you do not want to enable logging when you create a streaming distribution or if you want to disable logging for an existing streaming distribution, specify false for Enabled, and specify empty Bucket and Prefix elements. If you specify false for Enabled but you specify values for Bucket and Prefix, the values are automatically deleted. - */ - Enabled: boolean; - /** - * The Amazon S3 bucket to store the access logs in, for example, myawslogbucket.s3.amazonaws.com. - */ - Bucket: string; - /** - * An optional string that you want CloudFront to prefix to the access log filenames for this streaming distribution, for example, myprefix/. If you want to enable logging, but you do not want to specify a prefix, you still must include an empty Prefix element in the Logging element. - */ - Prefix: string; - } - export interface Tag { - /** - * A string that contains Tag key. The string length should be between 1 and 128 characters. Valid characters include a-z, A-Z, 0-9, space, and the special characters _ - . : / = + @. - */ - Key: TagKey; - /** - * A string that contains an optional Tag value. The string length should be between 0 and 256 characters. Valid characters include a-z, A-Z, 0-9, space, and the special characters _ - . : / = + @. - */ - Value?: TagValue; - } - export type TagKey = string; - export type TagKeyList = TagKey[]; - export interface TagKeys { - /** - * A complex type that contains Tag key elements. - */ - Items?: TagKeyList; - } - export type TagList = Tag[]; - export interface TagResourceRequest { - /** - * An ARN of a CloudFront resource. - */ - Resource: ResourceARN; - /** - * A complex type that contains zero or more Tag elements. - */ - Tags: Tags; - } - export type TagValue = string; - export interface Tags { - /** - * A complex type that contains Tag elements. - */ - Items?: TagList; - } - export interface TrustedSigners { - /** - * Specifies whether you want to require viewers to use signed URLs to access the files specified by PathPattern and TargetOriginId. - */ - Enabled: boolean; - /** - * The number of trusted signers for this cache behavior. - */ - Quantity: integer; - /** - * Optional: A complex type that contains trusted signers for this cache behavior. If Quantity is 0, you can omit Items. - */ - Items?: AwsAccountNumberList; - } - export interface UntagResourceRequest { - /** - * An ARN of a CloudFront resource. - */ - Resource: ResourceARN; - /** - * A complex type that contains zero or more Tag key elements. - */ - TagKeys: TagKeys; - } - export interface UpdateCloudFrontOriginAccessIdentityRequest { - /** - * The identity's configuration information. - */ - CloudFrontOriginAccessIdentityConfig: CloudFrontOriginAccessIdentityConfig; - /** - * The identity's id. - */ - Id: string; - /** - * The value of the ETag header that you received when retrieving the identity's configuration. For example: E2QWRUHAPOMQZL. - */ - IfMatch?: string; - } - export interface UpdateCloudFrontOriginAccessIdentityResult { - /** - * The origin access identity's information. - */ - CloudFrontOriginAccessIdentity?: CloudFrontOriginAccessIdentity; - /** - * The current version of the configuration. For example: E2QWRUHAPOMQZL. - */ - ETag?: string; - } - export interface UpdateDistributionRequest { - /** - * The distribution's configuration information. - */ - DistributionConfig: DistributionConfig; - /** - * The distribution's id. - */ - Id: string; - /** - * The value of the ETag header that you received when retrieving the distribution's configuration. For example: E2QWRUHAPOMQZL. - */ - IfMatch?: string; - } - export interface UpdateDistributionResult { - /** - * The distribution's information. - */ - Distribution?: Distribution; - /** - * The current version of the configuration. For example: E2QWRUHAPOMQZL. - */ - ETag?: string; - } - export interface UpdateStreamingDistributionRequest { - /** - * The streaming distribution's configuration information. - */ - StreamingDistributionConfig: StreamingDistributionConfig; - /** - * The streaming distribution's id. - */ - Id: string; - /** - * The value of the ETag header that you received when retrieving the streaming distribution's configuration. For example: E2QWRUHAPOMQZL. - */ - IfMatch?: string; - } - export interface UpdateStreamingDistributionResult { - /** - * The streaming distribution's information. - */ - StreamingDistribution?: StreamingDistribution; - /** - * The current version of the configuration. For example: E2QWRUHAPOMQZL. - */ - ETag?: string; - } - export interface ViewerCertificate { - CloudFrontDefaultCertificate?: boolean; - IAMCertificateId?: string; - ACMCertificateArn?: string; - /** - * If you specify a value for ACMCertificateArn or for IAMCertificateId, you must also specify how you want CloudFront to serve HTTPS requests: using a method that works for all clients or one that works for most clients: vip: CloudFront uses dedicated IP addresses for your content and can respond to HTTPS requests from any viewer. However, you will incur additional monthly charges. sni-only: CloudFront can respond to HTTPS requests from viewers that support Server Name Indication (SNI). All modern browsers support SNI, but some browsers still in use don't support SNI. If some of your users' browsers don't support SNI, we recommend that you do one of the following: Use the vip option (dedicated IP addresses) instead of sni-only. Use the CloudFront SSL/TLS certificate instead of a custom certificate. This requires that you use the CloudFront domain name of your distribution in the URLs for your objects, for example, https://d111111abcdef8.cloudfront.net/logo.png. If you can control which browser your users use, upgrade the browser to one that supports SNI. Use HTTP instead of HTTPS. Do not specify a value for SSLSupportMethod if you specified <CloudFrontDefaultCertificate>true<CloudFrontDefaultCertificate>. For more information, see Using Alternate Domain Names and HTTPS in the Amazon CloudFront Developer Guide. - */ - SSLSupportMethod?: SSLSupportMethod; - /** - * Specify the minimum version of the SSL/TLS protocol that you want CloudFront to use for HTTPS connections between viewers and CloudFront: SSLv3 or TLSv1. CloudFront serves your objects only to viewers that support SSL/TLS version that you specify and later versions. The TLSv1 protocol is more secure, so we recommend that you specify SSLv3 only if your users are using browsers or devices that don't support TLSv1. Note the following: If you specify <CloudFrontDefaultCertificate>true<CloudFrontDefaultCertificate>, the minimum SSL protocol version is TLSv1 and can't be changed. If you're using a custom certificate (if you specify a value for ACMCertificateArn or for IAMCertificateId) and if you're using SNI (if you specify sni-only for SSLSupportMethod), you must specify TLSv1 for MinimumProtocolVersion. - */ - MinimumProtocolVersion?: MinimumProtocolVersion; - /** - * Include one of these values to specify the following: Whether you want viewers to use HTTP or HTTPS to request your objects. If you want viewers to use HTTPS, whether you're using an alternate domain name such as example.com or the CloudFront domain name for your distribution, such as d111111abcdef8.cloudfront.net. If you're using an alternate domain name, whether AWS Certificate Manager (ACM) provided the certificate, or you purchased a certificate from a third-party certificate authority and imported it into ACM or uploaded it to the IAM certificate store. You must specify one (and only one) of the three values. Do not specify false for CloudFrontDefaultCertificate. If you want viewers to use HTTP to request your objects: Specify the following value: <CloudFrontDefaultCertificate>true<CloudFrontDefaultCertificate> In addition, specify allow-all for ViewerProtocolPolicy for all of your cache behaviors. If you want viewers to use HTTPS to request your objects: Choose the type of certificate that you want to use based on whether you're using an alternate domain name for your objects or the CloudFront domain name: If you're using an alternate domain name, such as example.com: Specify one of the following values, depending on whether ACM provided your certificate or you purchased your certificate from third-party certificate authority: <ACMCertificateArn>ARN for ACM SSL/TLS certificate<ACMCertificateArn> where ARN for ACM SSL/TLS certificate is the ARN for the ACM SSL/TLS certificate that you want to use for this distribution. <IAMCertificateId>IAM certificate ID<IAMCertificateId> where IAM certificate ID is the ID that IAM returned when you added the certificate to the IAM certificate store. If you specify ACMCertificateArn or IAMCertificateId, you must also specify a value for SSLSupportMethod. If you choose to use an ACM certificate or a certificate in the IAM certificate store, we recommend that you use only an alternate domain name in your object URLs (https://example.com/logo.jpg). If you use the domain name that is associated with your CloudFront distribution (https://d111111abcdef8.cloudfront.net/logo.jpg) and the viewer supports SNI, then CloudFront behaves normally. However, if the browser does not support SNI, the user's experience depends on the value that you choose for SSLSupportMethod: vip: The viewer displays a warning because there is a mismatch between the CloudFront domain name and the domain name in your SSL/TLS certificate. sni-only: CloudFront drops the connection with the browser without returning the object. If you're using the CloudFront domain name for your distribution, such as d111111abcdef8.cloudfront.net : Specify the following value: <CloudFrontDefaultCertificate>true<CloudFrontDefaultCertificate> If you want viewers to use HTTPS, you must also specify one of the following values in your cache behaviors: <ViewerProtocolPolicy>https-only<ViewerProtocolPolicy> <ViewerProtocolPolicy>redirect-to-https<ViewerProtocolPolicy> You can also optionally require that CloudFront use HTTPS to communicate with your origin by specifying one of the following values for the applicable origins: <OriginProtocolPolicy>https-only<OriginProtocolPolicy> <OriginProtocolPolicy>match-viewer<OriginProtocolPolicy> For more information, see Using Alternate Domain Names and HTTPS in the Amazon CloudFront Developer Guide. - */ - Certificate?: string; - /** - * This field is deprecated. You can use one of the following: [ACMCertificateArn, IAMCertificateId, or CloudFrontDefaultCertificate]. - */ - CertificateSource?: CertificateSource; - } - export type ViewerProtocolPolicy = "allow-all"|"https-only"|"redirect-to-https"|string; - export type integer = number; - export type long = number; - export type timestamp = Date; - /** - * A string in YYYY-MM-DD format that represents the latest possible API version that can be used in this service. Specify 'latest' to use the latest possible version. - */ - export type apiVersion = "2013-05-12"|"2013-11-11"|"2014-05-31"|"2014-10-21"|"2014-11-06"|"2015-04-17"|"2015-07-27"|"2015-09-17"|"2016-01-13"|"2016-01-28"|"2016-08-01"|"2016-08-20"|"2016-09-07"|"2016-09-29"|"2016-11-25"|"2016-11-25"|"2017-03-25"|"latest"|string; - export interface ClientApiVersions { - /** - * A string in YYYY-MM-DD format that represents the latest possible API version that can be used in this service. Specify 'latest' to use the latest possible version. - */ - apiVersion?: apiVersion; - } - export type ClientConfiguration = ServiceConfigurationOptions & ClientApiVersions; - /** - * Contains interfaces for use with the CloudFront client. - */ - export import Types = CloudFront; -} -export = CloudFront; diff --git a/workshops/monte-carlo-on-ec2-spot-fleet/src/web/node_modules/aws-sdk/clients/cloudfront.js b/workshops/monte-carlo-on-ec2-spot-fleet/src/web/node_modules/aws-sdk/clients/cloudfront.js deleted file mode 100644 index fc43ad47..00000000 --- a/workshops/monte-carlo-on-ec2-spot-fleet/src/web/node_modules/aws-sdk/clients/cloudfront.js +++ /dev/null @@ -1,30 +0,0 @@ -require('../lib/node_loader'); -var AWS = require('../lib/core'); -var Service = AWS.Service; -var apiLoader = AWS.apiLoader; - -apiLoader.services['cloudfront'] = {}; -AWS.CloudFront = Service.defineService('cloudfront', ['2013-05-12*', '2013-11-11*', '2014-05-31*', '2014-10-21*', '2014-11-06*', '2015-04-17*', '2015-07-27*', '2015-09-17*', '2016-01-13*', '2016-01-28*', '2016-08-01*', '2016-08-20*', '2016-09-07*', '2016-09-29*', '2016-11-25', '2016-11-25*', '2017-03-25']); -require('../lib/services/cloudfront'); -Object.defineProperty(apiLoader.services['cloudfront'], '2016-11-25', { - get: function get() { - var model = require('../apis/cloudfront-2016-11-25.min.json'); - model.paginators = require('../apis/cloudfront-2016-11-25.paginators.json').pagination; - model.waiters = require('../apis/cloudfront-2016-11-25.waiters2.json').waiters; - return model; - }, - enumerable: true, - configurable: true -}); -Object.defineProperty(apiLoader.services['cloudfront'], '2017-03-25', { - get: function get() { - var model = require('../apis/cloudfront-2017-03-25.min.json'); - model.paginators = require('../apis/cloudfront-2017-03-25.paginators.json').pagination; - model.waiters = require('../apis/cloudfront-2017-03-25.waiters2.json').waiters; - return model; - }, - enumerable: true, - configurable: true -}); - -module.exports = AWS.CloudFront; diff --git a/workshops/monte-carlo-on-ec2-spot-fleet/src/web/node_modules/aws-sdk/clients/cloudhsm.d.ts b/workshops/monte-carlo-on-ec2-spot-fleet/src/web/node_modules/aws-sdk/clients/cloudhsm.d.ts deleted file mode 100644 index aae52583..00000000 --- a/workshops/monte-carlo-on-ec2-spot-fleet/src/web/node_modules/aws-sdk/clients/cloudhsm.d.ts +++ /dev/null @@ -1,705 +0,0 @@ -import {Request} from '../lib/request'; -import {Response} from '../lib/response'; -import {AWSError} from '../lib/error'; -import {Service} from '../lib/service'; -import {ServiceConfigurationOptions} from '../lib/service'; -import {ConfigBase as Config} from '../lib/config'; -interface Blob {} -declare class CloudHSM extends Service { - /** - * Constructs a service object. This object has one method for each API operation. - */ - constructor(options?: CloudHSM.Types.ClientConfiguration) - config: Config & CloudHSM.Types.ClientConfiguration; - /** - * Adds or overwrites one or more tags for the specified AWS CloudHSM resource. Each tag consists of a key and a value. Tag keys must be unique to each resource. - */ - addTagsToResource(params: CloudHSM.Types.AddTagsToResourceRequest, callback?: (err: AWSError, data: CloudHSM.Types.AddTagsToResourceResponse) => void): Request; - /** - * Adds or overwrites one or more tags for the specified AWS CloudHSM resource. Each tag consists of a key and a value. Tag keys must be unique to each resource. - */ - addTagsToResource(callback?: (err: AWSError, data: CloudHSM.Types.AddTagsToResourceResponse) => void): Request; - /** - * Creates a high-availability partition group. A high-availability partition group is a group of partitions that spans multiple physical HSMs. - */ - createHapg(params: CloudHSM.Types.CreateHapgRequest, callback?: (err: AWSError, data: CloudHSM.Types.CreateHapgResponse) => void): Request; - /** - * Creates a high-availability partition group. A high-availability partition group is a group of partitions that spans multiple physical HSMs. - */ - createHapg(callback?: (err: AWSError, data: CloudHSM.Types.CreateHapgResponse) => void): Request; - /** - * Creates an uninitialized HSM instance. There is an upfront fee charged for each HSM instance that you create with the CreateHsm operation. If you accidentally provision an HSM and want to request a refund, delete the instance using the DeleteHsm operation, go to the AWS Support Center, create a new case, and select Account and Billing Support. It can take up to 20 minutes to create and provision an HSM. You can monitor the status of the HSM with the DescribeHsm operation. The HSM is ready to be initialized when the status changes to RUNNING. - */ - createHsm(params: CloudHSM.Types.CreateHsmRequest, callback?: (err: AWSError, data: CloudHSM.Types.CreateHsmResponse) => void): Request; - /** - * Creates an uninitialized HSM instance. There is an upfront fee charged for each HSM instance that you create with the CreateHsm operation. If you accidentally provision an HSM and want to request a refund, delete the instance using the DeleteHsm operation, go to the AWS Support Center, create a new case, and select Account and Billing Support. It can take up to 20 minutes to create and provision an HSM. You can monitor the status of the HSM with the DescribeHsm operation. The HSM is ready to be initialized when the status changes to RUNNING. - */ - createHsm(callback?: (err: AWSError, data: CloudHSM.Types.CreateHsmResponse) => void): Request; - /** - * Creates an HSM client. - */ - createLunaClient(params: CloudHSM.Types.CreateLunaClientRequest, callback?: (err: AWSError, data: CloudHSM.Types.CreateLunaClientResponse) => void): Request; - /** - * Creates an HSM client. - */ - createLunaClient(callback?: (err: AWSError, data: CloudHSM.Types.CreateLunaClientResponse) => void): Request; - /** - * Deletes a high-availability partition group. - */ - deleteHapg(params: CloudHSM.Types.DeleteHapgRequest, callback?: (err: AWSError, data: CloudHSM.Types.DeleteHapgResponse) => void): Request; - /** - * Deletes a high-availability partition group. - */ - deleteHapg(callback?: (err: AWSError, data: CloudHSM.Types.DeleteHapgResponse) => void): Request; - /** - * Deletes an HSM. After completion, this operation cannot be undone and your key material cannot be recovered. - */ - deleteHsm(params: CloudHSM.Types.DeleteHsmRequest, callback?: (err: AWSError, data: CloudHSM.Types.DeleteHsmResponse) => void): Request; - /** - * Deletes an HSM. After completion, this operation cannot be undone and your key material cannot be recovered. - */ - deleteHsm(callback?: (err: AWSError, data: CloudHSM.Types.DeleteHsmResponse) => void): Request; - /** - * Deletes a client. - */ - deleteLunaClient(params: CloudHSM.Types.DeleteLunaClientRequest, callback?: (err: AWSError, data: CloudHSM.Types.DeleteLunaClientResponse) => void): Request; - /** - * Deletes a client. - */ - deleteLunaClient(callback?: (err: AWSError, data: CloudHSM.Types.DeleteLunaClientResponse) => void): Request; - /** - * Retrieves information about a high-availability partition group. - */ - describeHapg(params: CloudHSM.Types.DescribeHapgRequest, callback?: (err: AWSError, data: CloudHSM.Types.DescribeHapgResponse) => void): Request; - /** - * Retrieves information about a high-availability partition group. - */ - describeHapg(callback?: (err: AWSError, data: CloudHSM.Types.DescribeHapgResponse) => void): Request; - /** - * Retrieves information about an HSM. You can identify the HSM by its ARN or its serial number. - */ - describeHsm(params: CloudHSM.Types.DescribeHsmRequest, callback?: (err: AWSError, data: CloudHSM.Types.DescribeHsmResponse) => void): Request; - /** - * Retrieves information about an HSM. You can identify the HSM by its ARN or its serial number. - */ - describeHsm(callback?: (err: AWSError, data: CloudHSM.Types.DescribeHsmResponse) => void): Request; - /** - * Retrieves information about an HSM client. - */ - describeLunaClient(params: CloudHSM.Types.DescribeLunaClientRequest, callback?: (err: AWSError, data: CloudHSM.Types.DescribeLunaClientResponse) => void): Request; - /** - * Retrieves information about an HSM client. - */ - describeLunaClient(callback?: (err: AWSError, data: CloudHSM.Types.DescribeLunaClientResponse) => void): Request; - /** - * Gets the configuration files necessary to connect to all high availability partition groups the client is associated with. - */ - getConfig(params: CloudHSM.Types.GetConfigRequest, callback?: (err: AWSError, data: CloudHSM.Types.GetConfigResponse) => void): Request; - /** - * Gets the configuration files necessary to connect to all high availability partition groups the client is associated with. - */ - getConfig(callback?: (err: AWSError, data: CloudHSM.Types.GetConfigResponse) => void): Request; - /** - * Lists the Availability Zones that have available AWS CloudHSM capacity. - */ - listAvailableZones(params: CloudHSM.Types.ListAvailableZonesRequest, callback?: (err: AWSError, data: CloudHSM.Types.ListAvailableZonesResponse) => void): Request; - /** - * Lists the Availability Zones that have available AWS CloudHSM capacity. - */ - listAvailableZones(callback?: (err: AWSError, data: CloudHSM.Types.ListAvailableZonesResponse) => void): Request; - /** - * Lists the high-availability partition groups for the account. This operation supports pagination with the use of the NextToken member. If more results are available, the NextToken member of the response contains a token that you pass in the next call to ListHapgs to retrieve the next set of items. - */ - listHapgs(params: CloudHSM.Types.ListHapgsRequest, callback?: (err: AWSError, data: CloudHSM.Types.ListHapgsResponse) => void): Request; - /** - * Lists the high-availability partition groups for the account. This operation supports pagination with the use of the NextToken member. If more results are available, the NextToken member of the response contains a token that you pass in the next call to ListHapgs to retrieve the next set of items. - */ - listHapgs(callback?: (err: AWSError, data: CloudHSM.Types.ListHapgsResponse) => void): Request; - /** - * Retrieves the identifiers of all of the HSMs provisioned for the current customer. This operation supports pagination with the use of the NextToken member. If more results are available, the NextToken member of the response contains a token that you pass in the next call to ListHsms to retrieve the next set of items. - */ - listHsms(params: CloudHSM.Types.ListHsmsRequest, callback?: (err: AWSError, data: CloudHSM.Types.ListHsmsResponse) => void): Request; - /** - * Retrieves the identifiers of all of the HSMs provisioned for the current customer. This operation supports pagination with the use of the NextToken member. If more results are available, the NextToken member of the response contains a token that you pass in the next call to ListHsms to retrieve the next set of items. - */ - listHsms(callback?: (err: AWSError, data: CloudHSM.Types.ListHsmsResponse) => void): Request; - /** - * Lists all of the clients. This operation supports pagination with the use of the NextToken member. If more results are available, the NextToken member of the response contains a token that you pass in the next call to ListLunaClients to retrieve the next set of items. - */ - listLunaClients(params: CloudHSM.Types.ListLunaClientsRequest, callback?: (err: AWSError, data: CloudHSM.Types.ListLunaClientsResponse) => void): Request; - /** - * Lists all of the clients. This operation supports pagination with the use of the NextToken member. If more results are available, the NextToken member of the response contains a token that you pass in the next call to ListLunaClients to retrieve the next set of items. - */ - listLunaClients(callback?: (err: AWSError, data: CloudHSM.Types.ListLunaClientsResponse) => void): Request; - /** - * Returns a list of all tags for the specified AWS CloudHSM resource. - */ - listTagsForResource(params: CloudHSM.Types.ListTagsForResourceRequest, callback?: (err: AWSError, data: CloudHSM.Types.ListTagsForResourceResponse) => void): Request; - /** - * Returns a list of all tags for the specified AWS CloudHSM resource. - */ - listTagsForResource(callback?: (err: AWSError, data: CloudHSM.Types.ListTagsForResourceResponse) => void): Request; - /** - * Modifies an existing high-availability partition group. - */ - modifyHapg(params: CloudHSM.Types.ModifyHapgRequest, callback?: (err: AWSError, data: CloudHSM.Types.ModifyHapgResponse) => void): Request; - /** - * Modifies an existing high-availability partition group. - */ - modifyHapg(callback?: (err: AWSError, data: CloudHSM.Types.ModifyHapgResponse) => void): Request; - /** - * Modifies an HSM. This operation can result in the HSM being offline for up to 15 minutes while the AWS CloudHSM service is reconfigured. If you are modifying a production HSM, you should ensure that your AWS CloudHSM service is configured for high availability, and consider executing this operation during a maintenance window. - */ - modifyHsm(params: CloudHSM.Types.ModifyHsmRequest, callback?: (err: AWSError, data: CloudHSM.Types.ModifyHsmResponse) => void): Request; - /** - * Modifies an HSM. This operation can result in the HSM being offline for up to 15 minutes while the AWS CloudHSM service is reconfigured. If you are modifying a production HSM, you should ensure that your AWS CloudHSM service is configured for high availability, and consider executing this operation during a maintenance window. - */ - modifyHsm(callback?: (err: AWSError, data: CloudHSM.Types.ModifyHsmResponse) => void): Request; - /** - * Modifies the certificate used by the client. This action can potentially start a workflow to install the new certificate on the client's HSMs. - */ - modifyLunaClient(params: CloudHSM.Types.ModifyLunaClientRequest, callback?: (err: AWSError, data: CloudHSM.Types.ModifyLunaClientResponse) => void): Request; - /** - * Modifies the certificate used by the client. This action can potentially start a workflow to install the new certificate on the client's HSMs. - */ - modifyLunaClient(callback?: (err: AWSError, data: CloudHSM.Types.ModifyLunaClientResponse) => void): Request; - /** - * Removes one or more tags from the specified AWS CloudHSM resource. To remove a tag, specify only the tag key to remove (not the value). To overwrite the value for an existing tag, use AddTagsToResource. - */ - removeTagsFromResource(params: CloudHSM.Types.RemoveTagsFromResourceRequest, callback?: (err: AWSError, data: CloudHSM.Types.RemoveTagsFromResourceResponse) => void): Request; - /** - * Removes one or more tags from the specified AWS CloudHSM resource. To remove a tag, specify only the tag key to remove (not the value). To overwrite the value for an existing tag, use AddTagsToResource. - */ - removeTagsFromResource(callback?: (err: AWSError, data: CloudHSM.Types.RemoveTagsFromResourceResponse) => void): Request; -} -declare namespace CloudHSM { - export type AZ = string; - export type AZList = AZ[]; - export interface AddTagsToResourceRequest { - /** - * The Amazon Resource Name (ARN) of the AWS CloudHSM resource to tag. - */ - ResourceArn: String; - /** - * One or more tags. - */ - TagList: TagList; - } - export interface AddTagsToResourceResponse { - /** - * The status of the operation. - */ - Status: String; - } - export type Boolean = boolean; - export type Certificate = string; - export type CertificateFingerprint = string; - export type ClientArn = string; - export type ClientLabel = string; - export type ClientList = ClientArn[]; - export type ClientToken = string; - export type ClientVersion = "5.1"|"5.3"|string; - export type CloudHsmObjectState = "READY"|"UPDATING"|"DEGRADED"|string; - export interface CreateHapgRequest { - /** - * The label of the new high-availability partition group. - */ - Label: Label; - } - export interface CreateHapgResponse { - /** - * The ARN of the high-availability partition group. - */ - HapgArn?: HapgArn; - } - export interface CreateHsmRequest { - /** - * The identifier of the subnet in your VPC in which to place the HSM. - */ - SubnetId: SubnetId; - /** - * The SSH public key to install on the HSM. - */ - SshKey: SshKey; - /** - * The IP address to assign to the HSM's ENI. If an IP address is not specified, an IP address will be randomly chosen from the CIDR range of the subnet. - */ - EniIp?: IpAddress; - /** - * The ARN of an IAM role to enable the AWS CloudHSM service to allocate an ENI on your behalf. - */ - IamRoleArn: IamRoleArn; - /** - * The external ID from IamRoleArn, if present. - */ - ExternalId?: ExternalId; - SubscriptionType: SubscriptionType; - /** - * A user-defined token to ensure idempotence. Subsequent calls to this operation with the same token will be ignored. - */ - ClientToken?: ClientToken; - /** - * The IP address for the syslog monitoring server. The AWS CloudHSM service only supports one syslog monitoring server. - */ - SyslogIp?: IpAddress; - } - export interface CreateHsmResponse { - /** - * The ARN of the HSM. - */ - HsmArn?: HsmArn; - } - export interface CreateLunaClientRequest { - /** - * The label for the client. - */ - Label?: ClientLabel; - /** - * The contents of a Base64-Encoded X.509 v3 certificate to be installed on the HSMs used by this client. - */ - Certificate: Certificate; - } - export interface CreateLunaClientResponse { - /** - * The ARN of the client. - */ - ClientArn?: ClientArn; - } - export interface DeleteHapgRequest { - /** - * The ARN of the high-availability partition group to delete. - */ - HapgArn: HapgArn; - } - export interface DeleteHapgResponse { - /** - * The status of the action. - */ - Status: String; - } - export interface DeleteHsmRequest { - /** - * The ARN of the HSM to delete. - */ - HsmArn: HsmArn; - } - export interface DeleteHsmResponse { - /** - * The status of the operation. - */ - Status: String; - } - export interface DeleteLunaClientRequest { - /** - * The ARN of the client to delete. - */ - ClientArn: ClientArn; - } - export interface DeleteLunaClientResponse { - /** - * The status of the action. - */ - Status: String; - } - export interface DescribeHapgRequest { - /** - * The ARN of the high-availability partition group to describe. - */ - HapgArn: HapgArn; - } - export interface DescribeHapgResponse { - /** - * The ARN of the high-availability partition group. - */ - HapgArn?: HapgArn; - /** - * The serial number of the high-availability partition group. - */ - HapgSerial?: String; - /** - * - */ - HsmsLastActionFailed?: HsmList; - /** - * - */ - HsmsPendingDeletion?: HsmList; - /** - * - */ - HsmsPendingRegistration?: HsmList; - /** - * The label for the high-availability partition group. - */ - Label?: Label; - /** - * The date and time the high-availability partition group was last modified. - */ - LastModifiedTimestamp?: Timestamp; - /** - * The list of partition serial numbers that belong to the high-availability partition group. - */ - PartitionSerialList?: PartitionSerialList; - /** - * The state of the high-availability partition group. - */ - State?: CloudHsmObjectState; - } - export interface DescribeHsmRequest { - /** - * The ARN of the HSM. Either the HsmArn or the SerialNumber parameter must be specified. - */ - HsmArn?: HsmArn; - /** - * The serial number of the HSM. Either the HsmArn or the HsmSerialNumber parameter must be specified. - */ - HsmSerialNumber?: HsmSerialNumber; - } - export interface DescribeHsmResponse { - /** - * The ARN of the HSM. - */ - HsmArn?: HsmArn; - /** - * The status of the HSM. - */ - Status?: HsmStatus; - /** - * Contains additional information about the status of the HSM. - */ - StatusDetails?: String; - /** - * The Availability Zone that the HSM is in. - */ - AvailabilityZone?: AZ; - /** - * The identifier of the elastic network interface (ENI) attached to the HSM. - */ - EniId?: EniId; - /** - * The IP address assigned to the HSM's ENI. - */ - EniIp?: IpAddress; - SubscriptionType?: SubscriptionType; - /** - * The subscription start date. - */ - SubscriptionStartDate?: Timestamp; - /** - * The subscription end date. - */ - SubscriptionEndDate?: Timestamp; - /** - * The identifier of the VPC that the HSM is in. - */ - VpcId?: VpcId; - /** - * The identifier of the subnet that the HSM is in. - */ - SubnetId?: SubnetId; - /** - * The ARN of the IAM role assigned to the HSM. - */ - IamRoleArn?: IamRoleArn; - /** - * The serial number of the HSM. - */ - SerialNumber?: HsmSerialNumber; - /** - * The name of the HSM vendor. - */ - VendorName?: String; - /** - * The HSM model type. - */ - HsmType?: String; - /** - * The HSM software version. - */ - SoftwareVersion?: String; - /** - * The public SSH key. - */ - SshPublicKey?: SshKey; - /** - * The date and time that the SSH key was last updated. - */ - SshKeyLastUpdated?: Timestamp; - /** - * The URI of the certificate server. - */ - ServerCertUri?: String; - /** - * The date and time that the server certificate was last updated. - */ - ServerCertLastUpdated?: Timestamp; - /** - * The list of partitions on the HSM. - */ - Partitions?: PartitionList; - } - export interface DescribeLunaClientRequest { - /** - * The ARN of the client. - */ - ClientArn?: ClientArn; - /** - * The certificate fingerprint. - */ - CertificateFingerprint?: CertificateFingerprint; - } - export interface DescribeLunaClientResponse { - /** - * The ARN of the client. - */ - ClientArn?: ClientArn; - /** - * The certificate installed on the HSMs used by this client. - */ - Certificate?: Certificate; - /** - * The certificate fingerprint. - */ - CertificateFingerprint?: CertificateFingerprint; - /** - * The date and time the client was last modified. - */ - LastModifiedTimestamp?: Timestamp; - /** - * The label of the client. - */ - Label?: Label; - } - export type EniId = string; - export type ExternalId = string; - export interface GetConfigRequest { - /** - * The ARN of the client. - */ - ClientArn: ClientArn; - /** - * The client version. - */ - ClientVersion: ClientVersion; - /** - * A list of ARNs that identify the high-availability partition groups that are associated with the client. - */ - HapgList: HapgList; - } - export interface GetConfigResponse { - /** - * The type of credentials. - */ - ConfigType?: String; - /** - * The chrystoki.conf configuration file. - */ - ConfigFile?: String; - /** - * The certificate file containing the server.pem files of the HSMs. - */ - ConfigCred?: String; - } - export type HapgArn = string; - export type HapgList = HapgArn[]; - export type HsmArn = string; - export type HsmList = HsmArn[]; - export type HsmSerialNumber = string; - export type HsmStatus = "PENDING"|"RUNNING"|"UPDATING"|"SUSPENDED"|"TERMINATING"|"TERMINATED"|"DEGRADED"|string; - export type IamRoleArn = string; - export type IpAddress = string; - export type Label = string; - export interface ListAvailableZonesRequest { - } - export interface ListAvailableZonesResponse { - /** - * The list of Availability Zones that have available AWS CloudHSM capacity. - */ - AZList?: AZList; - } - export interface ListHapgsRequest { - /** - * The NextToken value from a previous call to ListHapgs. Pass null if this is the first call. - */ - NextToken?: PaginationToken; - } - export interface ListHapgsResponse { - /** - * The list of high-availability partition groups. - */ - HapgList: HapgList; - /** - * If not null, more results are available. Pass this value to ListHapgs to retrieve the next set of items. - */ - NextToken?: PaginationToken; - } - export interface ListHsmsRequest { - /** - * The NextToken value from a previous call to ListHsms. Pass null if this is the first call. - */ - NextToken?: PaginationToken; - } - export interface ListHsmsResponse { - /** - * The list of ARNs that identify the HSMs. - */ - HsmList?: HsmList; - /** - * If not null, more results are available. Pass this value to ListHsms to retrieve the next set of items. - */ - NextToken?: PaginationToken; - } - export interface ListLunaClientsRequest { - /** - * The NextToken value from a previous call to ListLunaClients. Pass null if this is the first call. - */ - NextToken?: PaginationToken; - } - export interface ListLunaClientsResponse { - /** - * The list of clients. - */ - ClientList: ClientList; - /** - * If not null, more results are available. Pass this to ListLunaClients to retrieve the next set of items. - */ - NextToken?: PaginationToken; - } - export interface ListTagsForResourceRequest { - /** - * The Amazon Resource Name (ARN) of the AWS CloudHSM resource. - */ - ResourceArn: String; - } - export interface ListTagsForResourceResponse { - /** - * One or more tags. - */ - TagList: TagList; - } - export interface ModifyHapgRequest { - /** - * The ARN of the high-availability partition group to modify. - */ - HapgArn: HapgArn; - /** - * The new label for the high-availability partition group. - */ - Label?: Label; - /** - * The list of partition serial numbers to make members of the high-availability partition group. - */ - PartitionSerialList?: PartitionSerialList; - } - export interface ModifyHapgResponse { - /** - * The ARN of the high-availability partition group. - */ - HapgArn?: HapgArn; - } - export interface ModifyHsmRequest { - /** - * The ARN of the HSM to modify. - */ - HsmArn: HsmArn; - /** - * The new identifier of the subnet that the HSM is in. The new subnet must be in the same Availability Zone as the current subnet. - */ - SubnetId?: SubnetId; - /** - * The new IP address for the elastic network interface (ENI) attached to the HSM. If the HSM is moved to a different subnet, and an IP address is not specified, an IP address will be randomly chosen from the CIDR range of the new subnet. - */ - EniIp?: IpAddress; - /** - * The new IAM role ARN. - */ - IamRoleArn?: IamRoleArn; - /** - * The new external ID. - */ - ExternalId?: ExternalId; - /** - * The new IP address for the syslog monitoring server. The AWS CloudHSM service only supports one syslog monitoring server. - */ - SyslogIp?: IpAddress; - } - export interface ModifyHsmResponse { - /** - * The ARN of the HSM. - */ - HsmArn?: HsmArn; - } - export interface ModifyLunaClientRequest { - /** - * The ARN of the client. - */ - ClientArn: ClientArn; - /** - * The new certificate for the client. - */ - Certificate: Certificate; - } - export interface ModifyLunaClientResponse { - /** - * The ARN of the client. - */ - ClientArn?: ClientArn; - } - export type PaginationToken = string; - export type PartitionArn = string; - export type PartitionList = PartitionArn[]; - export type PartitionSerial = string; - export type PartitionSerialList = PartitionSerial[]; - export interface RemoveTagsFromResourceRequest { - /** - * The Amazon Resource Name (ARN) of the AWS CloudHSM resource. - */ - ResourceArn: String; - /** - * The tag key or keys to remove. Specify only the tag key to remove (not the value). To overwrite the value for an existing tag, use AddTagsToResource. - */ - TagKeyList: TagKeyList; - } - export interface RemoveTagsFromResourceResponse { - /** - * The status of the operation. - */ - Status: String; - } - export type SshKey = string; - export type String = string; - export type SubnetId = string; - export type SubscriptionType = "PRODUCTION"|string; - export interface Tag { - /** - * The key of the tag. - */ - Key: TagKey; - /** - * The value of the tag. - */ - Value: TagValue; - } - export type TagKey = string; - export type TagKeyList = TagKey[]; - export type TagList = Tag[]; - export type TagValue = string; - export type Timestamp = string; - export type VpcId = string; - /** - * A string in YYYY-MM-DD format that represents the latest possible API version that can be used in this service. Specify 'latest' to use the latest possible version. - */ - export type apiVersion = "2014-05-30"|"latest"|string; - export interface ClientApiVersions { - /** - * A string in YYYY-MM-DD format that represents the latest possible API version that can be used in this service. Specify 'latest' to use the latest possible version. - */ - apiVersion?: apiVersion; - } - export type ClientConfiguration = ServiceConfigurationOptions & ClientApiVersions; - /** - * Contains interfaces for use with the CloudHSM client. - */ - export import Types = CloudHSM; -} -export = CloudHSM; diff --git a/workshops/monte-carlo-on-ec2-spot-fleet/src/web/node_modules/aws-sdk/clients/cloudhsm.js b/workshops/monte-carlo-on-ec2-spot-fleet/src/web/node_modules/aws-sdk/clients/cloudhsm.js deleted file mode 100644 index 9ab842b0..00000000 --- a/workshops/monte-carlo-on-ec2-spot-fleet/src/web/node_modules/aws-sdk/clients/cloudhsm.js +++ /dev/null @@ -1,18 +0,0 @@ -require('../lib/node_loader'); -var AWS = require('../lib/core'); -var Service = AWS.Service; -var apiLoader = AWS.apiLoader; - -apiLoader.services['cloudhsm'] = {}; -AWS.CloudHSM = Service.defineService('cloudhsm', ['2014-05-30']); -Object.defineProperty(apiLoader.services['cloudhsm'], '2014-05-30', { - get: function get() { - var model = require('../apis/cloudhsm-2014-05-30.min.json'); - model.paginators = require('../apis/cloudhsm-2014-05-30.paginators.json').pagination; - return model; - }, - enumerable: true, - configurable: true -}); - -module.exports = AWS.CloudHSM; diff --git a/workshops/monte-carlo-on-ec2-spot-fleet/src/web/node_modules/aws-sdk/clients/cloudhsmv2.d.ts b/workshops/monte-carlo-on-ec2-spot-fleet/src/web/node_modules/aws-sdk/clients/cloudhsmv2.d.ts deleted file mode 100644 index 7913a081..00000000 --- a/workshops/monte-carlo-on-ec2-spot-fleet/src/web/node_modules/aws-sdk/clients/cloudhsmv2.d.ts +++ /dev/null @@ -1,480 +0,0 @@ -import {Request} from '../lib/request'; -import {Response} from '../lib/response'; -import {AWSError} from '../lib/error'; -import {Service} from '../lib/service'; -import {ServiceConfigurationOptions} from '../lib/service'; -import {ConfigBase as Config} from '../lib/config'; -interface Blob {} -declare class CloudHSMV2 extends Service { - /** - * Constructs a service object. This object has one method for each API operation. - */ - constructor(options?: CloudHSMV2.Types.ClientConfiguration) - config: Config & CloudHSMV2.Types.ClientConfiguration; - /** - * Creates a new AWS CloudHSM cluster. - */ - createCluster(params: CloudHSMV2.Types.CreateClusterRequest, callback?: (err: AWSError, data: CloudHSMV2.Types.CreateClusterResponse) => void): Request; - /** - * Creates a new AWS CloudHSM cluster. - */ - createCluster(callback?: (err: AWSError, data: CloudHSMV2.Types.CreateClusterResponse) => void): Request; - /** - * Creates a new hardware security module (HSM) in the specified AWS CloudHSM cluster. - */ - createHsm(params: CloudHSMV2.Types.CreateHsmRequest, callback?: (err: AWSError, data: CloudHSMV2.Types.CreateHsmResponse) => void): Request; - /** - * Creates a new hardware security module (HSM) in the specified AWS CloudHSM cluster. - */ - createHsm(callback?: (err: AWSError, data: CloudHSMV2.Types.CreateHsmResponse) => void): Request; - /** - * Deletes the specified AWS CloudHSM cluster. Before you can delete a cluster, you must delete all HSMs in the cluster. To see if the cluster contains any HSMs, use DescribeClusters. To delete an HSM, use DeleteHsm. - */ - deleteCluster(params: CloudHSMV2.Types.DeleteClusterRequest, callback?: (err: AWSError, data: CloudHSMV2.Types.DeleteClusterResponse) => void): Request; - /** - * Deletes the specified AWS CloudHSM cluster. Before you can delete a cluster, you must delete all HSMs in the cluster. To see if the cluster contains any HSMs, use DescribeClusters. To delete an HSM, use DeleteHsm. - */ - deleteCluster(callback?: (err: AWSError, data: CloudHSMV2.Types.DeleteClusterResponse) => void): Request; - /** - * Deletes the specified HSM. To specify an HSM, you can use its identifier (ID), the IP address of the HSM's elastic network interface (ENI), or the ID of the HSM's ENI. You need to specify only one of these values. To find these values, use DescribeClusters. - */ - deleteHsm(params: CloudHSMV2.Types.DeleteHsmRequest, callback?: (err: AWSError, data: CloudHSMV2.Types.DeleteHsmResponse) => void): Request; - /** - * Deletes the specified HSM. To specify an HSM, you can use its identifier (ID), the IP address of the HSM's elastic network interface (ENI), or the ID of the HSM's ENI. You need to specify only one of these values. To find these values, use DescribeClusters. - */ - deleteHsm(callback?: (err: AWSError, data: CloudHSMV2.Types.DeleteHsmResponse) => void): Request; - /** - * Gets information about backups of AWS CloudHSM clusters. This is a paginated operation, which means that each response might contain only a subset of all the backups. When the response contains only a subset of backups, it includes a NextToken value. Use this value in a subsequent DescribeBackups request to get more backups. When you receive a response with no NextToken (or an empty or null value), that means there are no more backups to get. - */ - describeBackups(params: CloudHSMV2.Types.DescribeBackupsRequest, callback?: (err: AWSError, data: CloudHSMV2.Types.DescribeBackupsResponse) => void): Request; - /** - * Gets information about backups of AWS CloudHSM clusters. This is a paginated operation, which means that each response might contain only a subset of all the backups. When the response contains only a subset of backups, it includes a NextToken value. Use this value in a subsequent DescribeBackups request to get more backups. When you receive a response with no NextToken (or an empty or null value), that means there are no more backups to get. - */ - describeBackups(callback?: (err: AWSError, data: CloudHSMV2.Types.DescribeBackupsResponse) => void): Request; - /** - * Gets information about AWS CloudHSM clusters. This is a paginated operation, which means that each response might contain only a subset of all the clusters. When the response contains only a subset of clusters, it includes a NextToken value. Use this value in a subsequent DescribeClusters request to get more clusters. When you receive a response with no NextToken (or an empty or null value), that means there are no more clusters to get. - */ - describeClusters(params: CloudHSMV2.Types.DescribeClustersRequest, callback?: (err: AWSError, data: CloudHSMV2.Types.DescribeClustersResponse) => void): Request; - /** - * Gets information about AWS CloudHSM clusters. This is a paginated operation, which means that each response might contain only a subset of all the clusters. When the response contains only a subset of clusters, it includes a NextToken value. Use this value in a subsequent DescribeClusters request to get more clusters. When you receive a response with no NextToken (or an empty or null value), that means there are no more clusters to get. - */ - describeClusters(callback?: (err: AWSError, data: CloudHSMV2.Types.DescribeClustersResponse) => void): Request; - /** - * Claims an AWS CloudHSM cluster by submitting the cluster certificate issued by your issuing certificate authority (CA) and the CA's root certificate. Before you can claim a cluster, you must sign the cluster's certificate signing request (CSR) with your issuing CA. To get the cluster's CSR, use DescribeClusters. - */ - initializeCluster(params: CloudHSMV2.Types.InitializeClusterRequest, callback?: (err: AWSError, data: CloudHSMV2.Types.InitializeClusterResponse) => void): Request; - /** - * Claims an AWS CloudHSM cluster by submitting the cluster certificate issued by your issuing certificate authority (CA) and the CA's root certificate. Before you can claim a cluster, you must sign the cluster's certificate signing request (CSR) with your issuing CA. To get the cluster's CSR, use DescribeClusters. - */ - initializeCluster(callback?: (err: AWSError, data: CloudHSMV2.Types.InitializeClusterResponse) => void): Request; - /** - * Gets a list of tags for the specified AWS CloudHSM cluster. This is a paginated operation, which means that each response might contain only a subset of all the tags. When the response contains only a subset of tags, it includes a NextToken value. Use this value in a subsequent ListTags request to get more tags. When you receive a response with no NextToken (or an empty or null value), that means there are no more tags to get. - */ - listTags(params: CloudHSMV2.Types.ListTagsRequest, callback?: (err: AWSError, data: CloudHSMV2.Types.ListTagsResponse) => void): Request; - /** - * Gets a list of tags for the specified AWS CloudHSM cluster. This is a paginated operation, which means that each response might contain only a subset of all the tags. When the response contains only a subset of tags, it includes a NextToken value. Use this value in a subsequent ListTags request to get more tags. When you receive a response with no NextToken (or an empty or null value), that means there are no more tags to get. - */ - listTags(callback?: (err: AWSError, data: CloudHSMV2.Types.ListTagsResponse) => void): Request; - /** - * Adds or overwrites one or more tags for the specified AWS CloudHSM cluster. - */ - tagResource(params: CloudHSMV2.Types.TagResourceRequest, callback?: (err: AWSError, data: CloudHSMV2.Types.TagResourceResponse) => void): Request; - /** - * Adds or overwrites one or more tags for the specified AWS CloudHSM cluster. - */ - tagResource(callback?: (err: AWSError, data: CloudHSMV2.Types.TagResourceResponse) => void): Request; - /** - * Removes the specified tag or tags from the specified AWS CloudHSM cluster. - */ - untagResource(params: CloudHSMV2.Types.UntagResourceRequest, callback?: (err: AWSError, data: CloudHSMV2.Types.UntagResourceResponse) => void): Request; - /** - * Removes the specified tag or tags from the specified AWS CloudHSM cluster. - */ - untagResource(callback?: (err: AWSError, data: CloudHSMV2.Types.UntagResourceResponse) => void): Request; -} -declare namespace CloudHSMV2 { - export interface Backup { - /** - * The identifier (ID) of the backup. - */ - BackupId: BackupId; - /** - * The state of the backup. - */ - BackupState?: BackupState; - /** - * The identifier (ID) of the cluster that was backed up. - */ - ClusterId?: ClusterId; - /** - * The date and time when the backup was created. - */ - CreateTimestamp?: Timestamp; - } - export type BackupId = string; - export type BackupPolicy = "DEFAULT"|string; - export type BackupState = "CREATE_IN_PROGRESS"|"READY"|"DELETED"|string; - export type Backups = Backup[]; - export type Cert = string; - export interface Certificates { - /** - * The cluster's certificate signing request (CSR). The CSR exists only when the cluster's state is UNINITIALIZED. - */ - ClusterCsr?: Cert; - /** - * The HSM certificate issued (signed) by the HSM hardware. - */ - HsmCertificate?: Cert; - /** - * The HSM hardware certificate issued (signed) by AWS CloudHSM. - */ - AwsHardwareCertificate?: Cert; - /** - * The HSM hardware certificate issued (signed) by the hardware manufacturer. - */ - ManufacturerHardwareCertificate?: Cert; - /** - * The cluster certificate issued (signed) by the issuing certificate authority (CA) of the cluster's owner. - */ - ClusterCertificate?: Cert; - } - export interface Cluster { - /** - * The cluster's backup policy. - */ - BackupPolicy?: BackupPolicy; - /** - * The cluster's identifier (ID). - */ - ClusterId?: ClusterId; - /** - * The date and time when the cluster was created. - */ - CreateTimestamp?: Timestamp; - /** - * Contains information about the HSMs in the cluster. - */ - Hsms?: Hsms; - /** - * The type of HSM that the cluster contains. - */ - HsmType?: HsmType; - /** - * The default password for the cluster's Pre-Crypto Officer (PRECO) user. - */ - PreCoPassword?: PreCoPassword; - /** - * The identifier (ID) of the cluster's security group. - */ - SecurityGroup?: SecurityGroup; - /** - * The identifier (ID) of the backup used to create the cluster. This value exists only when the cluster was created from a backup. - */ - SourceBackupId?: BackupId; - /** - * The cluster's state. - */ - State?: ClusterState; - /** - * A description of the cluster's state. - */ - StateMessage?: StateMessage; - /** - * A map of the cluster's subnets and their corresponding Availability Zones. - */ - SubnetMapping?: ExternalSubnetMapping; - /** - * The identifier (ID) of the virtual private cloud (VPC) that contains the cluster. - */ - VpcId?: VpcId; - /** - * Contains one or more certificates or a certificate signing request (CSR). - */ - Certificates?: Certificates; - } - export type ClusterId = string; - export type ClusterState = "CREATE_IN_PROGRESS"|"UNINITIALIZED"|"INITIALIZE_IN_PROGRESS"|"INITIALIZED"|"ACTIVE"|"UPDATE_IN_PROGRESS"|"DELETE_IN_PROGRESS"|"DELETED"|"DEGRADED"|string; - export type Clusters = Cluster[]; - export interface CreateClusterRequest { - /** - * The identifiers (IDs) of the subnets where you are creating the cluster. You must specify at least one subnet. If you specify multiple subnets, they must meet the following criteria: All subnets must be in the same virtual private cloud (VPC). You can specify only one subnet per Availability Zone. - */ - SubnetIds: SubnetIds; - /** - * The type of HSM to use in the cluster. Currently the only allowed value is hsm1.medium. - */ - HsmType: HsmType; - /** - * The identifier (ID) of the cluster backup to restore. Use this value to restore the cluster from a backup instead of creating a new cluster. To find the backup ID, use DescribeBackups. - */ - SourceBackupId?: BackupId; - } - export interface CreateClusterResponse { - /** - * Information about the cluster that was created. - */ - Cluster?: Cluster; - } - export interface CreateHsmRequest { - /** - * The identifier (ID) of the HSM's cluster. To find the cluster ID, use DescribeClusters. - */ - ClusterId: ClusterId; - /** - * The Availability Zone where you are creating the HSM. To find the cluster's Availability Zones, use DescribeClusters. - */ - AvailabilityZone: ExternalAz; - /** - * The HSM's IP address. If you specify an IP address, use an available address from the subnet that maps to the Availability Zone where you are creating the HSM. If you don't specify an IP address, one is chosen for you from that subnet. - */ - IpAddress?: IpAddress; - } - export interface CreateHsmResponse { - /** - * Information about the HSM that was created. - */ - Hsm?: Hsm; - } - export interface DeleteClusterRequest { - /** - * The identifier (ID) of the cluster that you are deleting. To find the cluster ID, use DescribeClusters. - */ - ClusterId: ClusterId; - } - export interface DeleteClusterResponse { - /** - * Information about the cluster that was deleted. - */ - Cluster?: Cluster; - } - export interface DeleteHsmRequest { - /** - * The identifier (ID) of the cluster that contains the HSM that you are deleting. - */ - ClusterId: ClusterId; - /** - * The identifier (ID) of the HSM that you are deleting. - */ - HsmId?: HsmId; - /** - * The identifier (ID) of the elastic network interface (ENI) of the HSM that you are deleting. - */ - EniId?: EniId; - /** - * The IP address of the elastic network interface (ENI) of the HSM that you are deleting. - */ - EniIp?: IpAddress; - } - export interface DeleteHsmResponse { - /** - * The identifier (ID) of the HSM that was deleted. - */ - HsmId?: HsmId; - } - export interface DescribeBackupsRequest { - /** - * The NextToken value that you received in the previous response. Use this value to get more backups. - */ - NextToken?: NextToken; - /** - * The maximum number of backups to return in the response. When there are more backups than the number you specify, the response contains a NextToken value. - */ - MaxResults?: MaxSize; - /** - * One or more filters to limit the items returned in the response. Use the backupIds filter to return only the specified backups. Specify backups by their backup identifier (ID). Use the clusterIds filter to return only the backups for the specified clusters. Specify clusters by their cluster identifier (ID). Use the states filter to return only backups that match the specified state. - */ - Filters?: Filters; - } - export interface DescribeBackupsResponse { - /** - * A list of backups. - */ - Backups?: Backups; - /** - * An opaque string that indicates that the response contains only a subset of backups. Use this value in a subsequent DescribeBackups request to get more backups. - */ - NextToken?: NextToken; - } - export interface DescribeClustersRequest { - /** - * One or more filters to limit the items returned in the response. Use the clusterIds filter to return only the specified clusters. Specify clusters by their cluster identifier (ID). Use the vpcIds filter to return only the clusters in the specified virtual private clouds (VPCs). Specify VPCs by their VPC identifier (ID). Use the states filter to return only clusters that match the specified state. - */ - Filters?: Filters; - /** - * The NextToken value that you received in the previous response. Use this value to get more clusters. - */ - NextToken?: NextToken; - /** - * The maximum number of clusters to return in the response. When there are more clusters than the number you specify, the response contains a NextToken value. - */ - MaxResults?: MaxSize; - } - export interface DescribeClustersResponse { - /** - * A list of clusters. - */ - Clusters?: Clusters; - /** - * An opaque string that indicates that the response contains only a subset of clusters. Use this value in a subsequent DescribeClusters request to get more clusters. - */ - NextToken?: NextToken; - } - export type EniId = string; - export type ExternalAz = string; - export type ExternalSubnetMapping = {[key: string]: SubnetId}; - export type Field = string; - export type Filters = {[key: string]: Strings}; - export interface Hsm { - /** - * The Availability Zone that contains the HSM. - */ - AvailabilityZone?: ExternalAz; - /** - * The identifier (ID) of the cluster that contains the HSM. - */ - ClusterId?: ClusterId; - /** - * The subnet that contains the HSM's elastic network interface (ENI). - */ - SubnetId?: SubnetId; - /** - * The identifier (ID) of the HSM's elastic network interface (ENI). - */ - EniId?: EniId; - /** - * The IP address of the HSM's elastic network interface (ENI). - */ - EniIp?: IpAddress; - /** - * The HSM's identifier (ID). - */ - HsmId: HsmId; - /** - * The HSM's state. - */ - State?: HsmState; - /** - * A description of the HSM's state. - */ - StateMessage?: String; - } - export type HsmId = string; - export type HsmState = "CREATE_IN_PROGRESS"|"ACTIVE"|"DEGRADED"|"DELETE_IN_PROGRESS"|"DELETED"|string; - export type HsmType = string; - export type Hsms = Hsm[]; - export interface InitializeClusterRequest { - /** - * The identifier (ID) of the cluster that you are claiming. To find the cluster ID, use DescribeClusters. - */ - ClusterId: ClusterId; - /** - * The cluster certificate issued (signed) by your issuing certificate authority (CA). The certificate must be in PEM format. - */ - SignedCert: Cert; - /** - * The issuing certificate of the issuing certificate authority (CA) that issued (signed) the cluster certificate. This can be a root (self-signed) certificate or a certificate chain that begins with the certificate that issued the cluster certificate and ends with a root certificate. The certificate or certificate chain must be in PEM format. - */ - TrustAnchor: Cert; - } - export interface InitializeClusterResponse { - /** - * The cluster's state. - */ - State?: ClusterState; - /** - * A description of the cluster's state. - */ - StateMessage?: StateMessage; - } - export type IpAddress = string; - export interface ListTagsRequest { - /** - * The cluster identifier (ID) for the cluster whose tags you are getting. To find the cluster ID, use DescribeClusters. - */ - ResourceId: ClusterId; - /** - * The NextToken value that you received in the previous response. Use this value to get more tags. - */ - NextToken?: NextToken; - /** - * The maximum number of tags to return in the response. When there are more tags than the number you specify, the response contains a NextToken value. - */ - MaxResults?: MaxSize; - } - export interface ListTagsResponse { - /** - * A list of tags. - */ - TagList: TagList; - /** - * An opaque string that indicates that the response contains only a subset of tags. Use this value in a subsequent ListTags request to get more tags. - */ - NextToken?: NextToken; - } - export type MaxSize = number; - export type NextToken = string; - export type PreCoPassword = string; - export type SecurityGroup = string; - export type StateMessage = string; - export type String = string; - export type Strings = String[]; - export type SubnetId = string; - export type SubnetIds = SubnetId[]; - export interface Tag { - /** - * The key of the tag. - */ - Key: TagKey; - /** - * The value of the tag. - */ - Value: TagValue; - } - export type TagKey = string; - export type TagKeyList = TagKey[]; - export type TagList = Tag[]; - export interface TagResourceRequest { - /** - * The cluster identifier (ID) for the cluster that you are tagging. To find the cluster ID, use DescribeClusters. - */ - ResourceId: ClusterId; - /** - * A list of one or more tags. - */ - TagList: TagList; - } - export interface TagResourceResponse { - } - export type TagValue = string; - export type Timestamp = Date; - export interface UntagResourceRequest { - /** - * The cluster identifier (ID) for the cluster whose tags you are removing. To find the cluster ID, use DescribeClusters. - */ - ResourceId: ClusterId; - /** - * A list of one or more tag keys for the tags that you are removing. Specify only the tag keys, not the tag values. - */ - TagKeyList: TagKeyList; - } - export interface UntagResourceResponse { - } - export type VpcId = string; - export type errorMessage = string; - /** - * A string in YYYY-MM-DD format that represents the latest possible API version that can be used in this service. Specify 'latest' to use the latest possible version. - */ - export type apiVersion = "2017-04-28"|"latest"|string; - export interface ClientApiVersions { - /** - * A string in YYYY-MM-DD format that represents the latest possible API version that can be used in this service. Specify 'latest' to use the latest possible version. - */ - apiVersion?: apiVersion; - } - export type ClientConfiguration = ServiceConfigurationOptions & ClientApiVersions; - /** - * Contains interfaces for use with the CloudHSMV2 client. - */ - export import Types = CloudHSMV2; -} -export = CloudHSMV2; diff --git a/workshops/monte-carlo-on-ec2-spot-fleet/src/web/node_modules/aws-sdk/clients/cloudhsmv2.js b/workshops/monte-carlo-on-ec2-spot-fleet/src/web/node_modules/aws-sdk/clients/cloudhsmv2.js deleted file mode 100644 index bc607ed6..00000000 --- a/workshops/monte-carlo-on-ec2-spot-fleet/src/web/node_modules/aws-sdk/clients/cloudhsmv2.js +++ /dev/null @@ -1,18 +0,0 @@ -require('../lib/node_loader'); -var AWS = require('../lib/core'); -var Service = AWS.Service; -var apiLoader = AWS.apiLoader; - -apiLoader.services['cloudhsmv2'] = {}; -AWS.CloudHSMV2 = Service.defineService('cloudhsmv2', ['2017-04-28']); -Object.defineProperty(apiLoader.services['cloudhsmv2'], '2017-04-28', { - get: function get() { - var model = require('../apis/cloudhsmv2-2017-04-28.min.json'); - model.paginators = require('../apis/cloudhsmv2-2017-04-28.paginators.json').pagination; - return model; - }, - enumerable: true, - configurable: true -}); - -module.exports = AWS.CloudHSMV2; diff --git a/workshops/monte-carlo-on-ec2-spot-fleet/src/web/node_modules/aws-sdk/clients/cloudsearch.d.ts b/workshops/monte-carlo-on-ec2-spot-fleet/src/web/node_modules/aws-sdk/clients/cloudsearch.d.ts deleted file mode 100644 index 9f841e54..00000000 --- a/workshops/monte-carlo-on-ec2-spot-fleet/src/web/node_modules/aws-sdk/clients/cloudsearch.d.ts +++ /dev/null @@ -1,985 +0,0 @@ -import {Request} from '../lib/request'; -import {Response} from '../lib/response'; -import {AWSError} from '../lib/error'; -import {Service} from '../lib/service'; -import {ServiceConfigurationOptions} from '../lib/service'; -import {ConfigBase as Config} from '../lib/config'; -interface Blob {} -declare class CloudSearch extends Service { - /** - * Constructs a service object. This object has one method for each API operation. - */ - constructor(options?: CloudSearch.Types.ClientConfiguration) - config: Config & CloudSearch.Types.ClientConfiguration; - /** - * Indexes the search suggestions. For more information, see Configuring Suggesters in the Amazon CloudSearch Developer Guide. - */ - buildSuggesters(params: CloudSearch.Types.BuildSuggestersRequest, callback?: (err: AWSError, data: CloudSearch.Types.BuildSuggestersResponse) => void): Request; - /** - * Indexes the search suggestions. For more information, see Configuring Suggesters in the Amazon CloudSearch Developer Guide. - */ - buildSuggesters(callback?: (err: AWSError, data: CloudSearch.Types.BuildSuggestersResponse) => void): Request; - /** - * Creates a new search domain. For more information, see Creating a Search Domain in the Amazon CloudSearch Developer Guide. - */ - createDomain(params: CloudSearch.Types.CreateDomainRequest, callback?: (err: AWSError, data: CloudSearch.Types.CreateDomainResponse) => void): Request; - /** - * Creates a new search domain. For more information, see Creating a Search Domain in the Amazon CloudSearch Developer Guide. - */ - createDomain(callback?: (err: AWSError, data: CloudSearch.Types.CreateDomainResponse) => void): Request; - /** - * Configures an analysis scheme that can be applied to a text or text-array field to define language-specific text processing options. For more information, see Configuring Analysis Schemes in the Amazon CloudSearch Developer Guide. - */ - defineAnalysisScheme(params: CloudSearch.Types.DefineAnalysisSchemeRequest, callback?: (err: AWSError, data: CloudSearch.Types.DefineAnalysisSchemeResponse) => void): Request; - /** - * Configures an analysis scheme that can be applied to a text or text-array field to define language-specific text processing options. For more information, see Configuring Analysis Schemes in the Amazon CloudSearch Developer Guide. - */ - defineAnalysisScheme(callback?: (err: AWSError, data: CloudSearch.Types.DefineAnalysisSchemeResponse) => void): Request; - /** - * Configures an Expression for the search domain. Used to create new expressions and modify existing ones. If the expression exists, the new configuration replaces the old one. For more information, see Configuring Expressions in the Amazon CloudSearch Developer Guide. - */ - defineExpression(params: CloudSearch.Types.DefineExpressionRequest, callback?: (err: AWSError, data: CloudSearch.Types.DefineExpressionResponse) => void): Request; - /** - * Configures an Expression for the search domain. Used to create new expressions and modify existing ones. If the expression exists, the new configuration replaces the old one. For more information, see Configuring Expressions in the Amazon CloudSearch Developer Guide. - */ - defineExpression(callback?: (err: AWSError, data: CloudSearch.Types.DefineExpressionResponse) => void): Request; - /** - * Configures an IndexField for the search domain. Used to create new fields and modify existing ones. You must specify the name of the domain you are configuring and an index field configuration. The index field configuration specifies a unique name, the index field type, and the options you want to configure for the field. The options you can specify depend on the IndexFieldType. If the field exists, the new configuration replaces the old one. For more information, see Configuring Index Fields in the Amazon CloudSearch Developer Guide. - */ - defineIndexField(params: CloudSearch.Types.DefineIndexFieldRequest, callback?: (err: AWSError, data: CloudSearch.Types.DefineIndexFieldResponse) => void): Request; - /** - * Configures an IndexField for the search domain. Used to create new fields and modify existing ones. You must specify the name of the domain you are configuring and an index field configuration. The index field configuration specifies a unique name, the index field type, and the options you want to configure for the field. The options you can specify depend on the IndexFieldType. If the field exists, the new configuration replaces the old one. For more information, see Configuring Index Fields in the Amazon CloudSearch Developer Guide. - */ - defineIndexField(callback?: (err: AWSError, data: CloudSearch.Types.DefineIndexFieldResponse) => void): Request; - /** - * Configures a suggester for a domain. A suggester enables you to display possible matches before users finish typing their queries. When you configure a suggester, you must specify the name of the text field you want to search for possible matches and a unique name for the suggester. For more information, see Getting Search Suggestions in the Amazon CloudSearch Developer Guide. - */ - defineSuggester(params: CloudSearch.Types.DefineSuggesterRequest, callback?: (err: AWSError, data: CloudSearch.Types.DefineSuggesterResponse) => void): Request; - /** - * Configures a suggester for a domain. A suggester enables you to display possible matches before users finish typing their queries. When you configure a suggester, you must specify the name of the text field you want to search for possible matches and a unique name for the suggester. For more information, see Getting Search Suggestions in the Amazon CloudSearch Developer Guide. - */ - defineSuggester(callback?: (err: AWSError, data: CloudSearch.Types.DefineSuggesterResponse) => void): Request; - /** - * Deletes an analysis scheme. For more information, see Configuring Analysis Schemes in the Amazon CloudSearch Developer Guide. - */ - deleteAnalysisScheme(params: CloudSearch.Types.DeleteAnalysisSchemeRequest, callback?: (err: AWSError, data: CloudSearch.Types.DeleteAnalysisSchemeResponse) => void): Request; - /** - * Deletes an analysis scheme. For more information, see Configuring Analysis Schemes in the Amazon CloudSearch Developer Guide. - */ - deleteAnalysisScheme(callback?: (err: AWSError, data: CloudSearch.Types.DeleteAnalysisSchemeResponse) => void): Request; - /** - * Permanently deletes a search domain and all of its data. Once a domain has been deleted, it cannot be recovered. For more information, see Deleting a Search Domain in the Amazon CloudSearch Developer Guide. - */ - deleteDomain(params: CloudSearch.Types.DeleteDomainRequest, callback?: (err: AWSError, data: CloudSearch.Types.DeleteDomainResponse) => void): Request; - /** - * Permanently deletes a search domain and all of its data. Once a domain has been deleted, it cannot be recovered. For more information, see Deleting a Search Domain in the Amazon CloudSearch Developer Guide. - */ - deleteDomain(callback?: (err: AWSError, data: CloudSearch.Types.DeleteDomainResponse) => void): Request; - /** - * Removes an Expression from the search domain. For more information, see Configuring Expressions in the Amazon CloudSearch Developer Guide. - */ - deleteExpression(params: CloudSearch.Types.DeleteExpressionRequest, callback?: (err: AWSError, data: CloudSearch.Types.DeleteExpressionResponse) => void): Request; - /** - * Removes an Expression from the search domain. For more information, see Configuring Expressions in the Amazon CloudSearch Developer Guide. - */ - deleteExpression(callback?: (err: AWSError, data: CloudSearch.Types.DeleteExpressionResponse) => void): Request; - /** - * Removes an IndexField from the search domain. For more information, see Configuring Index Fields in the Amazon CloudSearch Developer Guide. - */ - deleteIndexField(params: CloudSearch.Types.DeleteIndexFieldRequest, callback?: (err: AWSError, data: CloudSearch.Types.DeleteIndexFieldResponse) => void): Request; - /** - * Removes an IndexField from the search domain. For more information, see Configuring Index Fields in the Amazon CloudSearch Developer Guide. - */ - deleteIndexField(callback?: (err: AWSError, data: CloudSearch.Types.DeleteIndexFieldResponse) => void): Request; - /** - * Deletes a suggester. For more information, see Getting Search Suggestions in the Amazon CloudSearch Developer Guide. - */ - deleteSuggester(params: CloudSearch.Types.DeleteSuggesterRequest, callback?: (err: AWSError, data: CloudSearch.Types.DeleteSuggesterResponse) => void): Request; - /** - * Deletes a suggester. For more information, see Getting Search Suggestions in the Amazon CloudSearch Developer Guide. - */ - deleteSuggester(callback?: (err: AWSError, data: CloudSearch.Types.DeleteSuggesterResponse) => void): Request; - /** - * Gets the analysis schemes configured for a domain. An analysis scheme defines language-specific text processing options for a text field. Can be limited to specific analysis schemes by name. By default, shows all analysis schemes and includes any pending changes to the configuration. Set the Deployed option to true to show the active configuration and exclude pending changes. For more information, see Configuring Analysis Schemes in the Amazon CloudSearch Developer Guide. - */ - describeAnalysisSchemes(params: CloudSearch.Types.DescribeAnalysisSchemesRequest, callback?: (err: AWSError, data: CloudSearch.Types.DescribeAnalysisSchemesResponse) => void): Request; - /** - * Gets the analysis schemes configured for a domain. An analysis scheme defines language-specific text processing options for a text field. Can be limited to specific analysis schemes by name. By default, shows all analysis schemes and includes any pending changes to the configuration. Set the Deployed option to true to show the active configuration and exclude pending changes. For more information, see Configuring Analysis Schemes in the Amazon CloudSearch Developer Guide. - */ - describeAnalysisSchemes(callback?: (err: AWSError, data: CloudSearch.Types.DescribeAnalysisSchemesResponse) => void): Request; - /** - * Gets the availability options configured for a domain. By default, shows the configuration with any pending changes. Set the Deployed option to true to show the active configuration and exclude pending changes. For more information, see Configuring Availability Options in the Amazon CloudSearch Developer Guide. - */ - describeAvailabilityOptions(params: CloudSearch.Types.DescribeAvailabilityOptionsRequest, callback?: (err: AWSError, data: CloudSearch.Types.DescribeAvailabilityOptionsResponse) => void): Request; - /** - * Gets the availability options configured for a domain. By default, shows the configuration with any pending changes. Set the Deployed option to true to show the active configuration and exclude pending changes. For more information, see Configuring Availability Options in the Amazon CloudSearch Developer Guide. - */ - describeAvailabilityOptions(callback?: (err: AWSError, data: CloudSearch.Types.DescribeAvailabilityOptionsResponse) => void): Request; - /** - * Gets information about the search domains owned by this account. Can be limited to specific domains. Shows all domains by default. To get the number of searchable documents in a domain, use the console or submit a matchall request to your domain's search endpoint: q=matchall&amp;q.parser=structured&amp;size=0. For more information, see Getting Information about a Search Domain in the Amazon CloudSearch Developer Guide. - */ - describeDomains(params: CloudSearch.Types.DescribeDomainsRequest, callback?: (err: AWSError, data: CloudSearch.Types.DescribeDomainsResponse) => void): Request; - /** - * Gets information about the search domains owned by this account. Can be limited to specific domains. Shows all domains by default. To get the number of searchable documents in a domain, use the console or submit a matchall request to your domain's search endpoint: q=matchall&amp;q.parser=structured&amp;size=0. For more information, see Getting Information about a Search Domain in the Amazon CloudSearch Developer Guide. - */ - describeDomains(callback?: (err: AWSError, data: CloudSearch.Types.DescribeDomainsResponse) => void): Request; - /** - * Gets the expressions configured for the search domain. Can be limited to specific expressions by name. By default, shows all expressions and includes any pending changes to the configuration. Set the Deployed option to true to show the active configuration and exclude pending changes. For more information, see Configuring Expressions in the Amazon CloudSearch Developer Guide. - */ - describeExpressions(params: CloudSearch.Types.DescribeExpressionsRequest, callback?: (err: AWSError, data: CloudSearch.Types.DescribeExpressionsResponse) => void): Request; - /** - * Gets the expressions configured for the search domain. Can be limited to specific expressions by name. By default, shows all expressions and includes any pending changes to the configuration. Set the Deployed option to true to show the active configuration and exclude pending changes. For more information, see Configuring Expressions in the Amazon CloudSearch Developer Guide. - */ - describeExpressions(callback?: (err: AWSError, data: CloudSearch.Types.DescribeExpressionsResponse) => void): Request; - /** - * Gets information about the index fields configured for the search domain. Can be limited to specific fields by name. By default, shows all fields and includes any pending changes to the configuration. Set the Deployed option to true to show the active configuration and exclude pending changes. For more information, see Getting Domain Information in the Amazon CloudSearch Developer Guide. - */ - describeIndexFields(params: CloudSearch.Types.DescribeIndexFieldsRequest, callback?: (err: AWSError, data: CloudSearch.Types.DescribeIndexFieldsResponse) => void): Request; - /** - * Gets information about the index fields configured for the search domain. Can be limited to specific fields by name. By default, shows all fields and includes any pending changes to the configuration. Set the Deployed option to true to show the active configuration and exclude pending changes. For more information, see Getting Domain Information in the Amazon CloudSearch Developer Guide. - */ - describeIndexFields(callback?: (err: AWSError, data: CloudSearch.Types.DescribeIndexFieldsResponse) => void): Request; - /** - * Gets the scaling parameters configured for a domain. A domain's scaling parameters specify the desired search instance type and replication count. For more information, see Configuring Scaling Options in the Amazon CloudSearch Developer Guide. - */ - describeScalingParameters(params: CloudSearch.Types.DescribeScalingParametersRequest, callback?: (err: AWSError, data: CloudSearch.Types.DescribeScalingParametersResponse) => void): Request; - /** - * Gets the scaling parameters configured for a domain. A domain's scaling parameters specify the desired search instance type and replication count. For more information, see Configuring Scaling Options in the Amazon CloudSearch Developer Guide. - */ - describeScalingParameters(callback?: (err: AWSError, data: CloudSearch.Types.DescribeScalingParametersResponse) => void): Request; - /** - * Gets information about the access policies that control access to the domain's document and search endpoints. By default, shows the configuration with any pending changes. Set the Deployed option to true to show the active configuration and exclude pending changes. For more information, see Configuring Access for a Search Domain in the Amazon CloudSearch Developer Guide. - */ - describeServiceAccessPolicies(params: CloudSearch.Types.DescribeServiceAccessPoliciesRequest, callback?: (err: AWSError, data: CloudSearch.Types.DescribeServiceAccessPoliciesResponse) => void): Request; - /** - * Gets information about the access policies that control access to the domain's document and search endpoints. By default, shows the configuration with any pending changes. Set the Deployed option to true to show the active configuration and exclude pending changes. For more information, see Configuring Access for a Search Domain in the Amazon CloudSearch Developer Guide. - */ - describeServiceAccessPolicies(callback?: (err: AWSError, data: CloudSearch.Types.DescribeServiceAccessPoliciesResponse) => void): Request; - /** - * Gets the suggesters configured for a domain. A suggester enables you to display possible matches before users finish typing their queries. Can be limited to specific suggesters by name. By default, shows all suggesters and includes any pending changes to the configuration. Set the Deployed option to true to show the active configuration and exclude pending changes. For more information, see Getting Search Suggestions in the Amazon CloudSearch Developer Guide. - */ - describeSuggesters(params: CloudSearch.Types.DescribeSuggestersRequest, callback?: (err: AWSError, data: CloudSearch.Types.DescribeSuggestersResponse) => void): Request; - /** - * Gets the suggesters configured for a domain. A suggester enables you to display possible matches before users finish typing their queries. Can be limited to specific suggesters by name. By default, shows all suggesters and includes any pending changes to the configuration. Set the Deployed option to true to show the active configuration and exclude pending changes. For more information, see Getting Search Suggestions in the Amazon CloudSearch Developer Guide. - */ - describeSuggesters(callback?: (err: AWSError, data: CloudSearch.Types.DescribeSuggestersResponse) => void): Request; - /** - * Tells the search domain to start indexing its documents using the latest indexing options. This operation must be invoked to activate options whose OptionStatus is RequiresIndexDocuments. - */ - indexDocuments(params: CloudSearch.Types.IndexDocumentsRequest, callback?: (err: AWSError, data: CloudSearch.Types.IndexDocumentsResponse) => void): Request; - /** - * Tells the search domain to start indexing its documents using the latest indexing options. This operation must be invoked to activate options whose OptionStatus is RequiresIndexDocuments. - */ - indexDocuments(callback?: (err: AWSError, data: CloudSearch.Types.IndexDocumentsResponse) => void): Request; - /** - * Lists all search domains owned by an account. - */ - listDomainNames(callback?: (err: AWSError, data: CloudSearch.Types.ListDomainNamesResponse) => void): Request; - /** - * Configures the availability options for a domain. Enabling the Multi-AZ option expands an Amazon CloudSearch domain to an additional Availability Zone in the same Region to increase fault tolerance in the event of a service disruption. Changes to the Multi-AZ option can take about half an hour to become active. For more information, see Configuring Availability Options in the Amazon CloudSearch Developer Guide. - */ - updateAvailabilityOptions(params: CloudSearch.Types.UpdateAvailabilityOptionsRequest, callback?: (err: AWSError, data: CloudSearch.Types.UpdateAvailabilityOptionsResponse) => void): Request; - /** - * Configures the availability options for a domain. Enabling the Multi-AZ option expands an Amazon CloudSearch domain to an additional Availability Zone in the same Region to increase fault tolerance in the event of a service disruption. Changes to the Multi-AZ option can take about half an hour to become active. For more information, see Configuring Availability Options in the Amazon CloudSearch Developer Guide. - */ - updateAvailabilityOptions(callback?: (err: AWSError, data: CloudSearch.Types.UpdateAvailabilityOptionsResponse) => void): Request; - /** - * Configures scaling parameters for a domain. A domain's scaling parameters specify the desired search instance type and replication count. Amazon CloudSearch will still automatically scale your domain based on the volume of data and traffic, but not below the desired instance type and replication count. If the Multi-AZ option is enabled, these values control the resources used per Availability Zone. For more information, see Configuring Scaling Options in the Amazon CloudSearch Developer Guide. - */ - updateScalingParameters(params: CloudSearch.Types.UpdateScalingParametersRequest, callback?: (err: AWSError, data: CloudSearch.Types.UpdateScalingParametersResponse) => void): Request; - /** - * Configures scaling parameters for a domain. A domain's scaling parameters specify the desired search instance type and replication count. Amazon CloudSearch will still automatically scale your domain based on the volume of data and traffic, but not below the desired instance type and replication count. If the Multi-AZ option is enabled, these values control the resources used per Availability Zone. For more information, see Configuring Scaling Options in the Amazon CloudSearch Developer Guide. - */ - updateScalingParameters(callback?: (err: AWSError, data: CloudSearch.Types.UpdateScalingParametersResponse) => void): Request; - /** - * Configures the access rules that control access to the domain's document and search endpoints. For more information, see Configuring Access for an Amazon CloudSearch Domain. - */ - updateServiceAccessPolicies(params: CloudSearch.Types.UpdateServiceAccessPoliciesRequest, callback?: (err: AWSError, data: CloudSearch.Types.UpdateServiceAccessPoliciesResponse) => void): Request; - /** - * Configures the access rules that control access to the domain's document and search endpoints. For more information, see Configuring Access for an Amazon CloudSearch Domain. - */ - updateServiceAccessPolicies(callback?: (err: AWSError, data: CloudSearch.Types.UpdateServiceAccessPoliciesResponse) => void): Request; -} -declare namespace CloudSearch { - export type APIVersion = string; - export type ARN = string; - export interface AccessPoliciesStatus { - Options: PolicyDocument; - Status: OptionStatus; - } - export type AlgorithmicStemming = "none"|"minimal"|"light"|"full"|string; - export interface AnalysisOptions { - /** - * A JSON object that defines synonym groups and aliases. A synonym group is an array of arrays, where each sub-array is a group of terms where each term in the group is considered a synonym of every other term in the group. The aliases value is an object that contains a collection of string:value pairs where the string specifies a term and the array of values specifies each of the aliases for that term. An alias is considered a synonym of the specified term, but the term is not considered a synonym of the alias. For more information about specifying synonyms, see Synonyms in the Amazon CloudSearch Developer Guide. - */ - Synonyms?: String; - /** - * A JSON array of terms to ignore during indexing and searching. For example, ["a", "an", "the", "of"]. The stopwords dictionary must explicitly list each word you want to ignore. Wildcards and regular expressions are not supported. - */ - Stopwords?: String; - /** - * A JSON object that contains a collection of string:value pairs that each map a term to its stem. For example, {"term1": "stem1", "term2": "stem2", "term3": "stem3"}. The stemming dictionary is applied in addition to any algorithmic stemming. This enables you to override the results of the algorithmic stemming to correct specific cases of overstemming or understemming. The maximum size of a stemming dictionary is 500 KB. - */ - StemmingDictionary?: String; - /** - * A JSON array that contains a collection of terms, tokens, readings and part of speech for Japanese Tokenizaiton. The Japanese tokenization dictionary enables you to override the default tokenization for selected terms. This is only valid for Japanese language fields. - */ - JapaneseTokenizationDictionary?: String; - /** - * The level of algorithmic stemming to perform: none, minimal, light, or full. The available levels vary depending on the language. For more information, see Language Specific Text Processing Settings in the Amazon CloudSearch Developer Guide - */ - AlgorithmicStemming?: AlgorithmicStemming; - } - export interface AnalysisScheme { - AnalysisSchemeName: StandardName; - AnalysisSchemeLanguage: AnalysisSchemeLanguage; - AnalysisOptions?: AnalysisOptions; - } - export type AnalysisSchemeLanguage = "ar"|"bg"|"ca"|"cs"|"da"|"de"|"el"|"en"|"es"|"eu"|"fa"|"fi"|"fr"|"ga"|"gl"|"he"|"hi"|"hu"|"hy"|"id"|"it"|"ja"|"ko"|"lv"|"mul"|"nl"|"no"|"pt"|"ro"|"ru"|"sv"|"th"|"tr"|"zh-Hans"|"zh-Hant"|string; - export interface AnalysisSchemeStatus { - Options: AnalysisScheme; - Status: OptionStatus; - } - export type AnalysisSchemeStatusList = AnalysisSchemeStatus[]; - export interface AvailabilityOptionsStatus { - /** - * The availability options configured for the domain. - */ - Options: MultiAZ; - Status: OptionStatus; - } - export type Boolean = boolean; - export interface BuildSuggestersRequest { - DomainName: DomainName; - } - export interface BuildSuggestersResponse { - FieldNames?: FieldNameList; - } - export interface CreateDomainRequest { - /** - * A name for the domain you are creating. Allowed characters are a-z (lower-case letters), 0-9, and hyphen (-). Domain names must start with a letter or number and be at least 3 and no more than 28 characters long. - */ - DomainName: DomainName; - } - export interface CreateDomainResponse { - DomainStatus?: DomainStatus; - } - export interface DateArrayOptions { - /** - * A value to use for the field if the field isn't specified for a document. - */ - DefaultValue?: FieldValue; - /** - * A list of source fields to map to the field. - */ - SourceFields?: FieldNameCommaList; - /** - * Whether facet information can be returned for the field. - */ - FacetEnabled?: Boolean; - /** - * Whether the contents of the field are searchable. - */ - SearchEnabled?: Boolean; - /** - * Whether the contents of the field can be returned in the search results. - */ - ReturnEnabled?: Boolean; - } - export interface DateOptions { - /** - * A value to use for the field if the field isn't specified for a document. - */ - DefaultValue?: FieldValue; - SourceField?: FieldName; - /** - * Whether facet information can be returned for the field. - */ - FacetEnabled?: Boolean; - /** - * Whether the contents of the field are searchable. - */ - SearchEnabled?: Boolean; - /** - * Whether the contents of the field can be returned in the search results. - */ - ReturnEnabled?: Boolean; - /** - * Whether the field can be used to sort the search results. - */ - SortEnabled?: Boolean; - } - export interface DefineAnalysisSchemeRequest { - DomainName: DomainName; - AnalysisScheme: AnalysisScheme; - } - export interface DefineAnalysisSchemeResponse { - AnalysisScheme: AnalysisSchemeStatus; - } - export interface DefineExpressionRequest { - DomainName: DomainName; - Expression: Expression; - } - export interface DefineExpressionResponse { - Expression: ExpressionStatus; - } - export interface DefineIndexFieldRequest { - DomainName: DomainName; - /** - * The index field and field options you want to configure. - */ - IndexField: IndexField; - } - export interface DefineIndexFieldResponse { - IndexField: IndexFieldStatus; - } - export interface DefineSuggesterRequest { - DomainName: DomainName; - Suggester: Suggester; - } - export interface DefineSuggesterResponse { - Suggester: SuggesterStatus; - } - export interface DeleteAnalysisSchemeRequest { - DomainName: DomainName; - /** - * The name of the analysis scheme you want to delete. - */ - AnalysisSchemeName: StandardName; - } - export interface DeleteAnalysisSchemeResponse { - /** - * The status of the analysis scheme being deleted. - */ - AnalysisScheme: AnalysisSchemeStatus; - } - export interface DeleteDomainRequest { - /** - * The name of the domain you want to permanently delete. - */ - DomainName: DomainName; - } - export interface DeleteDomainResponse { - DomainStatus?: DomainStatus; - } - export interface DeleteExpressionRequest { - DomainName: DomainName; - /** - * The name of the Expression to delete. - */ - ExpressionName: StandardName; - } - export interface DeleteExpressionResponse { - /** - * The status of the expression being deleted. - */ - Expression: ExpressionStatus; - } - export interface DeleteIndexFieldRequest { - DomainName: DomainName; - /** - * The name of the index field your want to remove from the domain's indexing options. - */ - IndexFieldName: DynamicFieldName; - } - export interface DeleteIndexFieldResponse { - /** - * The status of the index field being deleted. - */ - IndexField: IndexFieldStatus; - } - export interface DeleteSuggesterRequest { - DomainName: DomainName; - /** - * Specifies the name of the suggester you want to delete. - */ - SuggesterName: StandardName; - } - export interface DeleteSuggesterResponse { - /** - * The status of the suggester being deleted. - */ - Suggester: SuggesterStatus; - } - export interface DescribeAnalysisSchemesRequest { - /** - * The name of the domain you want to describe. - */ - DomainName: DomainName; - /** - * The analysis schemes you want to describe. - */ - AnalysisSchemeNames?: StandardNameList; - /** - * Whether to display the deployed configuration (true) or include any pending changes (false). Defaults to false. - */ - Deployed?: Boolean; - } - export interface DescribeAnalysisSchemesResponse { - /** - * The analysis scheme descriptions. - */ - AnalysisSchemes: AnalysisSchemeStatusList; - } - export interface DescribeAvailabilityOptionsRequest { - /** - * The name of the domain you want to describe. - */ - DomainName: DomainName; - /** - * Whether to display the deployed configuration (true) or include any pending changes (false). Defaults to false. - */ - Deployed?: Boolean; - } - export interface DescribeAvailabilityOptionsResponse { - /** - * The availability options configured for the domain. Indicates whether Multi-AZ is enabled for the domain. - */ - AvailabilityOptions?: AvailabilityOptionsStatus; - } - export interface DescribeDomainsRequest { - /** - * The names of the domains you want to include in the response. - */ - DomainNames?: DomainNameList; - } - export interface DescribeDomainsResponse { - DomainStatusList: DomainStatusList; - } - export interface DescribeExpressionsRequest { - /** - * The name of the domain you want to describe. - */ - DomainName: DomainName; - /** - * Limits the DescribeExpressions response to the specified expressions. If not specified, all expressions are shown. - */ - ExpressionNames?: StandardNameList; - /** - * Whether to display the deployed configuration (true) or include any pending changes (false). Defaults to false. - */ - Deployed?: Boolean; - } - export interface DescribeExpressionsResponse { - /** - * The expressions configured for the domain. - */ - Expressions: ExpressionStatusList; - } - export interface DescribeIndexFieldsRequest { - /** - * The name of the domain you want to describe. - */ - DomainName: DomainName; - /** - * A list of the index fields you want to describe. If not specified, information is returned for all configured index fields. - */ - FieldNames?: DynamicFieldNameList; - /** - * Whether to display the deployed configuration (true) or include any pending changes (false). Defaults to false. - */ - Deployed?: Boolean; - } - export interface DescribeIndexFieldsResponse { - /** - * The index fields configured for the domain. - */ - IndexFields: IndexFieldStatusList; - } - export interface DescribeScalingParametersRequest { - DomainName: DomainName; - } - export interface DescribeScalingParametersResponse { - ScalingParameters: ScalingParametersStatus; - } - export interface DescribeServiceAccessPoliciesRequest { - /** - * The name of the domain you want to describe. - */ - DomainName: DomainName; - /** - * Whether to display the deployed configuration (true) or include any pending changes (false). Defaults to false. - */ - Deployed?: Boolean; - } - export interface DescribeServiceAccessPoliciesResponse { - /** - * The access rules configured for the domain specified in the request. - */ - AccessPolicies: AccessPoliciesStatus; - } - export interface DescribeSuggestersRequest { - /** - * The name of the domain you want to describe. - */ - DomainName: DomainName; - /** - * The suggesters you want to describe. - */ - SuggesterNames?: StandardNameList; - /** - * Whether to display the deployed configuration (true) or include any pending changes (false). Defaults to false. - */ - Deployed?: Boolean; - } - export interface DescribeSuggestersResponse { - /** - * The suggesters configured for the domain specified in the request. - */ - Suggesters: SuggesterStatusList; - } - export interface DocumentSuggesterOptions { - /** - * The name of the index field you want to use for suggestions. - */ - SourceField: FieldName; - /** - * The level of fuzziness allowed when suggesting matches for a string: none, low, or high. With none, the specified string is treated as an exact prefix. With low, suggestions must differ from the specified string by no more than one character. With high, suggestions can differ by up to two characters. The default is none. - */ - FuzzyMatching?: SuggesterFuzzyMatching; - /** - * An expression that computes a score for each suggestion to control how they are sorted. The scores are rounded to the nearest integer, with a floor of 0 and a ceiling of 2^31-1. A document's relevance score is not computed for suggestions, so sort expressions cannot reference the _score value. To sort suggestions using a numeric field or existing expression, simply specify the name of the field or expression. If no expression is configured for the suggester, the suggestions are sorted with the closest matches listed first. - */ - SortExpression?: String; - } - export type DomainId = string; - export type DomainName = string; - export type DomainNameList = DomainName[]; - export type DomainNameMap = {[key: string]: APIVersion}; - export interface DomainStatus { - DomainId: DomainId; - DomainName: DomainName; - ARN?: ARN; - /** - * True if the search domain is created. It can take several minutes to initialize a domain when CreateDomain is called. Newly created search domains are returned from DescribeDomains with a false value for Created until domain creation is complete. - */ - Created?: Boolean; - /** - * True if the search domain has been deleted. The system must clean up resources dedicated to the search domain when DeleteDomain is called. Newly deleted search domains are returned from DescribeDomains with a true value for IsDeleted for several minutes until resource cleanup is complete. - */ - Deleted?: Boolean; - /** - * The service endpoint for updating documents in a search domain. - */ - DocService?: ServiceEndpoint; - /** - * The service endpoint for requesting search results from a search domain. - */ - SearchService?: ServiceEndpoint; - /** - * True if IndexDocuments needs to be called to activate the current domain configuration. - */ - RequiresIndexDocuments: Boolean; - /** - * True if processing is being done to activate the current domain configuration. - */ - Processing?: Boolean; - /** - * The instance type that is being used to process search requests. - */ - SearchInstanceType?: SearchInstanceType; - /** - * The number of partitions across which the search index is spread. - */ - SearchPartitionCount?: PartitionCount; - /** - * The number of search instances that are available to process search requests. - */ - SearchInstanceCount?: InstanceCount; - Limits?: Limits; - } - export type DomainStatusList = DomainStatus[]; - export type Double = number; - export interface DoubleArrayOptions { - /** - * A value to use for the field if the field isn't specified for a document. - */ - DefaultValue?: Double; - /** - * A list of source fields to map to the field. - */ - SourceFields?: FieldNameCommaList; - /** - * Whether facet information can be returned for the field. - */ - FacetEnabled?: Boolean; - /** - * Whether the contents of the field are searchable. - */ - SearchEnabled?: Boolean; - /** - * Whether the contents of the field can be returned in the search results. - */ - ReturnEnabled?: Boolean; - } - export interface DoubleOptions { - /** - * A value to use for the field if the field isn't specified for a document. This can be important if you are using the field in an expression and that field is not present in every document. - */ - DefaultValue?: Double; - /** - * The name of the source field to map to the field. - */ - SourceField?: FieldName; - /** - * Whether facet information can be returned for the field. - */ - FacetEnabled?: Boolean; - /** - * Whether the contents of the field are searchable. - */ - SearchEnabled?: Boolean; - /** - * Whether the contents of the field can be returned in the search results. - */ - ReturnEnabled?: Boolean; - /** - * Whether the field can be used to sort the search results. - */ - SortEnabled?: Boolean; - } - export type DynamicFieldName = string; - export type DynamicFieldNameList = DynamicFieldName[]; - export type ErrorCode = string; - export type ErrorMessage = string; - export interface Expression { - ExpressionName: StandardName; - ExpressionValue: ExpressionValue; - } - export interface ExpressionStatus { - /** - * The expression that is evaluated for sorting while processing a search request. - */ - Options: Expression; - Status: OptionStatus; - } - export type ExpressionStatusList = ExpressionStatus[]; - export type ExpressionValue = string; - export type FieldName = string; - export type FieldNameCommaList = string; - export type FieldNameList = FieldName[]; - export type FieldValue = string; - export interface IndexDocumentsRequest { - DomainName: DomainName; - } - export interface IndexDocumentsResponse { - /** - * The names of the fields that are currently being indexed. - */ - FieldNames?: FieldNameList; - } - export interface IndexField { - /** - * A string that represents the name of an index field. CloudSearch supports regular index fields as well as dynamic fields. A dynamic field's name defines a pattern that begins or ends with a wildcard. Any document fields that don't map to a regular index field but do match a dynamic field's pattern are configured with the dynamic field's indexing options. Regular field names begin with a letter and can contain the following characters: a-z (lowercase), 0-9, and _ (underscore). Dynamic field names must begin or end with a wildcard (*). The wildcard can also be the only character in a dynamic field name. Multiple wildcards, and wildcards embedded within a string are not supported. The name score is reserved and cannot be used as a field name. To reference a document's ID, you can use the name _id. - */ - IndexFieldName: DynamicFieldName; - IndexFieldType: IndexFieldType; - IntOptions?: IntOptions; - DoubleOptions?: DoubleOptions; - LiteralOptions?: LiteralOptions; - TextOptions?: TextOptions; - DateOptions?: DateOptions; - LatLonOptions?: LatLonOptions; - IntArrayOptions?: IntArrayOptions; - DoubleArrayOptions?: DoubleArrayOptions; - LiteralArrayOptions?: LiteralArrayOptions; - TextArrayOptions?: TextArrayOptions; - DateArrayOptions?: DateArrayOptions; - } - export interface IndexFieldStatus { - Options: IndexField; - Status: OptionStatus; - } - export type IndexFieldStatusList = IndexFieldStatus[]; - export type IndexFieldType = "int"|"double"|"literal"|"text"|"date"|"latlon"|"int-array"|"double-array"|"literal-array"|"text-array"|"date-array"|string; - export type InstanceCount = number; - export interface IntArrayOptions { - /** - * A value to use for the field if the field isn't specified for a document. - */ - DefaultValue?: Long; - /** - * A list of source fields to map to the field. - */ - SourceFields?: FieldNameCommaList; - /** - * Whether facet information can be returned for the field. - */ - FacetEnabled?: Boolean; - /** - * Whether the contents of the field are searchable. - */ - SearchEnabled?: Boolean; - /** - * Whether the contents of the field can be returned in the search results. - */ - ReturnEnabled?: Boolean; - } - export interface IntOptions { - /** - * A value to use for the field if the field isn't specified for a document. This can be important if you are using the field in an expression and that field is not present in every document. - */ - DefaultValue?: Long; - /** - * The name of the source field to map to the field. - */ - SourceField?: FieldName; - /** - * Whether facet information can be returned for the field. - */ - FacetEnabled?: Boolean; - /** - * Whether the contents of the field are searchable. - */ - SearchEnabled?: Boolean; - /** - * Whether the contents of the field can be returned in the search results. - */ - ReturnEnabled?: Boolean; - /** - * Whether the field can be used to sort the search results. - */ - SortEnabled?: Boolean; - } - export interface LatLonOptions { - /** - * A value to use for the field if the field isn't specified for a document. - */ - DefaultValue?: FieldValue; - SourceField?: FieldName; - /** - * Whether facet information can be returned for the field. - */ - FacetEnabled?: Boolean; - /** - * Whether the contents of the field are searchable. - */ - SearchEnabled?: Boolean; - /** - * Whether the contents of the field can be returned in the search results. - */ - ReturnEnabled?: Boolean; - /** - * Whether the field can be used to sort the search results. - */ - SortEnabled?: Boolean; - } - export interface Limits { - MaximumReplicationCount: MaximumReplicationCount; - MaximumPartitionCount: MaximumPartitionCount; - } - export interface ListDomainNamesResponse { - /** - * The names of the search domains owned by an account. - */ - DomainNames?: DomainNameMap; - } - export interface LiteralArrayOptions { - /** - * A value to use for the field if the field isn't specified for a document. - */ - DefaultValue?: FieldValue; - /** - * A list of source fields to map to the field. - */ - SourceFields?: FieldNameCommaList; - /** - * Whether facet information can be returned for the field. - */ - FacetEnabled?: Boolean; - /** - * Whether the contents of the field are searchable. - */ - SearchEnabled?: Boolean; - /** - * Whether the contents of the field can be returned in the search results. - */ - ReturnEnabled?: Boolean; - } - export interface LiteralOptions { - /** - * A value to use for the field if the field isn't specified for a document. - */ - DefaultValue?: FieldValue; - SourceField?: FieldName; - /** - * Whether facet information can be returned for the field. - */ - FacetEnabled?: Boolean; - /** - * Whether the contents of the field are searchable. - */ - SearchEnabled?: Boolean; - /** - * Whether the contents of the field can be returned in the search results. - */ - ReturnEnabled?: Boolean; - /** - * Whether the field can be used to sort the search results. - */ - SortEnabled?: Boolean; - } - export type Long = number; - export type MaximumPartitionCount = number; - export type MaximumReplicationCount = number; - export type MultiAZ = boolean; - export type OptionState = "RequiresIndexDocuments"|"Processing"|"Active"|"FailedToValidate"|string; - export interface OptionStatus { - /** - * A timestamp for when this option was created. - */ - CreationDate: UpdateTimestamp; - /** - * A timestamp for when this option was last updated. - */ - UpdateDate: UpdateTimestamp; - /** - * A unique integer that indicates when this option was last updated. - */ - UpdateVersion?: UIntValue; - /** - * The state of processing a change to an option. Possible values: RequiresIndexDocuments: the option's latest value will not be deployed until IndexDocuments has been called and indexing is complete. Processing: the option's latest value is in the process of being activated. Active: the option's latest value is completely deployed. FailedToValidate: the option value is not compatible with the domain's data and cannot be used to index the data. You must either modify the option value or update or remove the incompatible documents. - */ - State: OptionState; - /** - * Indicates that the option will be deleted once processing is complete. - */ - PendingDeletion?: Boolean; - } - export type PartitionCount = number; - export type PartitionInstanceType = "search.m1.small"|"search.m1.large"|"search.m2.xlarge"|"search.m2.2xlarge"|"search.m3.medium"|"search.m3.large"|"search.m3.xlarge"|"search.m3.2xlarge"|string; - export type PolicyDocument = string; - export interface ScalingParameters { - /** - * The instance type that you want to preconfigure for your domain. For example, search.m1.small. - */ - DesiredInstanceType?: PartitionInstanceType; - /** - * The number of replicas you want to preconfigure for each index partition. - */ - DesiredReplicationCount?: UIntValue; - /** - * The number of partitions you want to preconfigure for your domain. Only valid when you select m2.2xlarge as the desired instance type. - */ - DesiredPartitionCount?: UIntValue; - } - export interface ScalingParametersStatus { - Options: ScalingParameters; - Status: OptionStatus; - } - export type SearchInstanceType = string; - export interface ServiceEndpoint { - Endpoint?: ServiceUrl; - } - export type ServiceUrl = string; - export type StandardName = string; - export type StandardNameList = StandardName[]; - export type String = string; - export interface Suggester { - SuggesterName: StandardName; - DocumentSuggesterOptions: DocumentSuggesterOptions; - } - export type SuggesterFuzzyMatching = "none"|"low"|"high"|string; - export interface SuggesterStatus { - Options: Suggester; - Status: OptionStatus; - } - export type SuggesterStatusList = SuggesterStatus[]; - export interface TextArrayOptions { - /** - * A value to use for the field if the field isn't specified for a document. - */ - DefaultValue?: FieldValue; - /** - * A list of source fields to map to the field. - */ - SourceFields?: FieldNameCommaList; - /** - * Whether the contents of the field can be returned in the search results. - */ - ReturnEnabled?: Boolean; - /** - * Whether highlights can be returned for the field. - */ - HighlightEnabled?: Boolean; - /** - * The name of an analysis scheme for a text-array field. - */ - AnalysisScheme?: Word; - } - export interface TextOptions { - /** - * A value to use for the field if the field isn't specified for a document. - */ - DefaultValue?: FieldValue; - SourceField?: FieldName; - /** - * Whether the contents of the field can be returned in the search results. - */ - ReturnEnabled?: Boolean; - /** - * Whether the field can be used to sort the search results. - */ - SortEnabled?: Boolean; - /** - * Whether highlights can be returned for the field. - */ - HighlightEnabled?: Boolean; - /** - * The name of an analysis scheme for a text field. - */ - AnalysisScheme?: Word; - } - export type UIntValue = number; - export interface UpdateAvailabilityOptionsRequest { - DomainName: DomainName; - /** - * You expand an existing search domain to a second Availability Zone by setting the Multi-AZ option to true. Similarly, you can turn off the Multi-AZ option to downgrade the domain to a single Availability Zone by setting the Multi-AZ option to false. - */ - MultiAZ: Boolean; - } - export interface UpdateAvailabilityOptionsResponse { - /** - * The newly-configured availability options. Indicates whether Multi-AZ is enabled for the domain. - */ - AvailabilityOptions?: AvailabilityOptionsStatus; - } - export interface UpdateScalingParametersRequest { - DomainName: DomainName; - ScalingParameters: ScalingParameters; - } - export interface UpdateScalingParametersResponse { - ScalingParameters: ScalingParametersStatus; - } - export interface UpdateServiceAccessPoliciesRequest { - DomainName: DomainName; - /** - * The access rules you want to configure. These rules replace any existing rules. - */ - AccessPolicies: PolicyDocument; - } - export interface UpdateServiceAccessPoliciesResponse { - /** - * The access rules configured for the domain. - */ - AccessPolicies: AccessPoliciesStatus; - } - export type UpdateTimestamp = Date; - export type Word = string; - /** - * A string in YYYY-MM-DD format that represents the latest possible API version that can be used in this service. Specify 'latest' to use the latest possible version. - */ - export type apiVersion = "2011-02-01"|"2013-01-01"|"latest"|string; - export interface ClientApiVersions { - /** - * A string in YYYY-MM-DD format that represents the latest possible API version that can be used in this service. Specify 'latest' to use the latest possible version. - */ - apiVersion?: apiVersion; - } - export type ClientConfiguration = ServiceConfigurationOptions & ClientApiVersions; - /** - * Contains interfaces for use with the CloudSearch client. - */ - export import Types = CloudSearch; -} -export = CloudSearch; diff --git a/workshops/monte-carlo-on-ec2-spot-fleet/src/web/node_modules/aws-sdk/clients/cloudsearch.js b/workshops/monte-carlo-on-ec2-spot-fleet/src/web/node_modules/aws-sdk/clients/cloudsearch.js deleted file mode 100644 index 3bd2fde9..00000000 --- a/workshops/monte-carlo-on-ec2-spot-fleet/src/web/node_modules/aws-sdk/clients/cloudsearch.js +++ /dev/null @@ -1,27 +0,0 @@ -require('../lib/node_loader'); -var AWS = require('../lib/core'); -var Service = AWS.Service; -var apiLoader = AWS.apiLoader; - -apiLoader.services['cloudsearch'] = {}; -AWS.CloudSearch = Service.defineService('cloudsearch', ['2011-02-01', '2013-01-01']); -Object.defineProperty(apiLoader.services['cloudsearch'], '2011-02-01', { - get: function get() { - var model = require('../apis/cloudsearch-2011-02-01.min.json'); - model.paginators = require('../apis/cloudsearch-2011-02-01.paginators.json').pagination; - return model; - }, - enumerable: true, - configurable: true -}); -Object.defineProperty(apiLoader.services['cloudsearch'], '2013-01-01', { - get: function get() { - var model = require('../apis/cloudsearch-2013-01-01.min.json'); - model.paginators = require('../apis/cloudsearch-2013-01-01.paginators.json').pagination; - return model; - }, - enumerable: true, - configurable: true -}); - -module.exports = AWS.CloudSearch; diff --git a/workshops/monte-carlo-on-ec2-spot-fleet/src/web/node_modules/aws-sdk/clients/cloudsearchdomain.d.ts b/workshops/monte-carlo-on-ec2-spot-fleet/src/web/node_modules/aws-sdk/clients/cloudsearchdomain.d.ts deleted file mode 100644 index d673549b..00000000 --- a/workshops/monte-carlo-on-ec2-spot-fleet/src/web/node_modules/aws-sdk/clients/cloudsearchdomain.d.ts +++ /dev/null @@ -1,358 +0,0 @@ -import {Request} from '../lib/request'; -import {Response} from '../lib/response'; -import {AWSError} from '../lib/error'; -import {Service} from '../lib/service'; -import {ServiceConfigurationOptions} from '../lib/service'; -import {ConfigBase as Config} from '../lib/config'; -import {Readable} from 'stream'; -interface Blob {} -declare class CloudSearchDomain extends Service { - /** - * Constructs a service object. This object has one method for each API operation. - */ - constructor(options?: CloudSearchDomain.Types.ClientConfiguration) - config: Config & CloudSearchDomain.Types.ClientConfiguration; - /** - * Retrieves a list of documents that match the specified search criteria. How you specify the search criteria depends on which query parser you use. Amazon CloudSearch supports four query parsers: simple: search all text and text-array fields for the specified string. Search for phrases, individual terms, and prefixes. structured: search specific fields, construct compound queries using Boolean operators, and use advanced features such as term boosting and proximity searching. lucene: specify search criteria using the Apache Lucene query parser syntax. dismax: specify search criteria using the simplified subset of the Apache Lucene query parser syntax defined by the DisMax query parser. For more information, see Searching Your Data in the Amazon CloudSearch Developer Guide. The endpoint for submitting Search requests is domain-specific. You submit search requests to a domain's search endpoint. To get the search endpoint for your domain, use the Amazon CloudSearch configuration service DescribeDomains action. A domain's endpoints are also displayed on the domain dashboard in the Amazon CloudSearch console. - */ - search(params: CloudSearchDomain.Types.SearchRequest, callback?: (err: AWSError, data: CloudSearchDomain.Types.SearchResponse) => void): Request; - /** - * Retrieves a list of documents that match the specified search criteria. How you specify the search criteria depends on which query parser you use. Amazon CloudSearch supports four query parsers: simple: search all text and text-array fields for the specified string. Search for phrases, individual terms, and prefixes. structured: search specific fields, construct compound queries using Boolean operators, and use advanced features such as term boosting and proximity searching. lucene: specify search criteria using the Apache Lucene query parser syntax. dismax: specify search criteria using the simplified subset of the Apache Lucene query parser syntax defined by the DisMax query parser. For more information, see Searching Your Data in the Amazon CloudSearch Developer Guide. The endpoint for submitting Search requests is domain-specific. You submit search requests to a domain's search endpoint. To get the search endpoint for your domain, use the Amazon CloudSearch configuration service DescribeDomains action. A domain's endpoints are also displayed on the domain dashboard in the Amazon CloudSearch console. - */ - search(callback?: (err: AWSError, data: CloudSearchDomain.Types.SearchResponse) => void): Request; - /** - * Retrieves autocomplete suggestions for a partial query string. You can use suggestions enable you to display likely matches before users finish typing. In Amazon CloudSearch, suggestions are based on the contents of a particular text field. When you request suggestions, Amazon CloudSearch finds all of the documents whose values in the suggester field start with the specified query string. The beginning of the field must match the query string to be considered a match. For more information about configuring suggesters and retrieving suggestions, see Getting Suggestions in the Amazon CloudSearch Developer Guide. The endpoint for submitting Suggest requests is domain-specific. You submit suggest requests to a domain's search endpoint. To get the search endpoint for your domain, use the Amazon CloudSearch configuration service DescribeDomains action. A domain's endpoints are also displayed on the domain dashboard in the Amazon CloudSearch console. - */ - suggest(params: CloudSearchDomain.Types.SuggestRequest, callback?: (err: AWSError, data: CloudSearchDomain.Types.SuggestResponse) => void): Request; - /** - * Retrieves autocomplete suggestions for a partial query string. You can use suggestions enable you to display likely matches before users finish typing. In Amazon CloudSearch, suggestions are based on the contents of a particular text field. When you request suggestions, Amazon CloudSearch finds all of the documents whose values in the suggester field start with the specified query string. The beginning of the field must match the query string to be considered a match. For more information about configuring suggesters and retrieving suggestions, see Getting Suggestions in the Amazon CloudSearch Developer Guide. The endpoint for submitting Suggest requests is domain-specific. You submit suggest requests to a domain's search endpoint. To get the search endpoint for your domain, use the Amazon CloudSearch configuration service DescribeDomains action. A domain's endpoints are also displayed on the domain dashboard in the Amazon CloudSearch console. - */ - suggest(callback?: (err: AWSError, data: CloudSearchDomain.Types.SuggestResponse) => void): Request; - /** - * Posts a batch of documents to a search domain for indexing. A document batch is a collection of add and delete operations that represent the documents you want to add, update, or delete from your domain. Batches can be described in either JSON or XML. Each item that you want Amazon CloudSearch to return as a search result (such as a product) is represented as a document. Every document has a unique ID and one or more fields that contain the data that you want to search and return in results. Individual documents cannot contain more than 1 MB of data. The entire batch cannot exceed 5 MB. To get the best possible upload performance, group add and delete operations in batches that are close the 5 MB limit. Submitting a large volume of single-document batches can overload a domain's document service. The endpoint for submitting UploadDocuments requests is domain-specific. To get the document endpoint for your domain, use the Amazon CloudSearch configuration service DescribeDomains action. A domain's endpoints are also displayed on the domain dashboard in the Amazon CloudSearch console. For more information about formatting your data for Amazon CloudSearch, see Preparing Your Data in the Amazon CloudSearch Developer Guide. For more information about uploading data for indexing, see Uploading Data in the Amazon CloudSearch Developer Guide. - */ - uploadDocuments(params: CloudSearchDomain.Types.UploadDocumentsRequest, callback?: (err: AWSError, data: CloudSearchDomain.Types.UploadDocumentsResponse) => void): Request; - /** - * Posts a batch of documents to a search domain for indexing. A document batch is a collection of add and delete operations that represent the documents you want to add, update, or delete from your domain. Batches can be described in either JSON or XML. Each item that you want Amazon CloudSearch to return as a search result (such as a product) is represented as a document. Every document has a unique ID and one or more fields that contain the data that you want to search and return in results. Individual documents cannot contain more than 1 MB of data. The entire batch cannot exceed 5 MB. To get the best possible upload performance, group add and delete operations in batches that are close the 5 MB limit. Submitting a large volume of single-document batches can overload a domain's document service. The endpoint for submitting UploadDocuments requests is domain-specific. To get the document endpoint for your domain, use the Amazon CloudSearch configuration service DescribeDomains action. A domain's endpoints are also displayed on the domain dashboard in the Amazon CloudSearch console. For more information about formatting your data for Amazon CloudSearch, see Preparing Your Data in the Amazon CloudSearch Developer Guide. For more information about uploading data for indexing, see Uploading Data in the Amazon CloudSearch Developer Guide. - */ - uploadDocuments(callback?: (err: AWSError, data: CloudSearchDomain.Types.UploadDocumentsResponse) => void): Request; -} -declare namespace CloudSearchDomain { - export type Adds = number; - export type _Blob = Buffer|Uint8Array|Blob|string|Readable; - export interface Bucket { - /** - * The facet value being counted. - */ - value?: String; - /** - * The number of hits that contain the facet value in the specified facet field. - */ - count?: Long; - } - export interface BucketInfo { - /** - * A list of the calculated facet values and counts. - */ - buckets?: BucketList; - } - export type BucketList = Bucket[]; - export type ContentType = "application/json"|"application/xml"|string; - export type Cursor = string; - export type Deletes = number; - export interface DocumentServiceWarning { - /** - * The description for a warning returned by the document service. - */ - message?: String; - } - export type DocumentServiceWarnings = DocumentServiceWarning[]; - export type Double = number; - export type Expr = string; - export type Exprs = {[key: string]: String}; - export type Facet = string; - export type Facets = {[key: string]: BucketInfo}; - export interface FieldStats { - /** - * The minimum value found in the specified field in the result set. If the field is numeric (int, int-array, double, or double-array), min is the string representation of a double-precision 64-bit floating point value. If the field is date or date-array, min is the string representation of a date with the format specified in IETF RFC3339: yyyy-mm-ddTHH:mm:ss.SSSZ. - */ - min?: String; - /** - * The maximum value found in the specified field in the result set. If the field is numeric (int, int-array, double, or double-array), max is the string representation of a double-precision 64-bit floating point value. If the field is date or date-array, max is the string representation of a date with the format specified in IETF RFC3339: yyyy-mm-ddTHH:mm:ss.SSSZ. - */ - max?: String; - /** - * The number of documents that contain a value in the specified field in the result set. - */ - count?: Long; - /** - * The number of documents that do not contain a value in the specified field in the result set. - */ - missing?: Long; - /** - * The sum of the field values across the documents in the result set. null for date fields. - */ - sum?: Double; - /** - * The sum of all field values in the result set squared. - */ - sumOfSquares?: Double; - /** - * The average of the values found in the specified field in the result set. If the field is numeric (int, int-array, double, or double-array), mean is the string representation of a double-precision 64-bit floating point value. If the field is date or date-array, mean is the string representation of a date with the format specified in IETF RFC3339: yyyy-mm-ddTHH:mm:ss.SSSZ. - */ - mean?: String; - /** - * The standard deviation of the values in the specified field in the result set. - */ - stddev?: Double; - } - export type FieldValue = String[]; - export type Fields = {[key: string]: FieldValue}; - export type FilterQuery = string; - export type Highlight = string; - export type Highlights = {[key: string]: String}; - export interface Hit { - /** - * The document ID of a document that matches the search request. - */ - id?: String; - /** - * The fields returned from a document that matches the search request. - */ - fields?: Fields; - /** - * The expressions returned from a document that matches the search request. - */ - exprs?: Exprs; - /** - * The highlights returned from a document that matches the search request. - */ - highlights?: Highlights; - } - export type HitList = Hit[]; - export interface Hits { - /** - * The total number of documents that match the search request. - */ - found?: Long; - /** - * The index of the first matching document. - */ - start?: Long; - /** - * A cursor that can be used to retrieve the next set of matching documents when you want to page through a large result set. - */ - cursor?: String; - /** - * A document that matches the search request. - */ - hit?: HitList; - } - export type Long = number; - export type Partial = boolean; - export type Query = string; - export type QueryOptions = string; - export type QueryParser = "simple"|"structured"|"lucene"|"dismax"|string; - export type Return = string; - export interface SearchRequest { - /** - * Retrieves a cursor value you can use to page through large result sets. Use the size parameter to control the number of hits to include in each response. You can specify either the cursor or start parameter in a request; they are mutually exclusive. To get the first cursor, set the cursor value to initial. In subsequent requests, specify the cursor value returned in the hits section of the response. For more information, see Paginating Results in the Amazon CloudSearch Developer Guide. - */ - cursor?: Cursor; - /** - * Defines one or more numeric expressions that can be used to sort results or specify search or filter criteria. You can also specify expressions as return fields. You specify the expressions in JSON using the form {"EXPRESSIONNAME":"EXPRESSION"}. You can define and use multiple expressions in a search request. For example: {"expression1":"_score*rating", "expression2":"(1/rank)*year"} For information about the variables, operators, and functions you can use in expressions, see Writing Expressions in the Amazon CloudSearch Developer Guide. - */ - expr?: Expr; - /** - * Specifies one or more fields for which to get facet information, and options that control how the facet information is returned. Each specified field must be facet-enabled in the domain configuration. The fields and options are specified in JSON using the form {"FIELD":{"OPTION":VALUE,"OPTION:"STRING"},"FIELD":{"OPTION":VALUE,"OPTION":"STRING"}}. You can specify the following faceting options: buckets specifies an array of the facet values or ranges to count. Ranges are specified using the same syntax that you use to search for a range of values. For more information, see Searching for a Range of Values in the Amazon CloudSearch Developer Guide. Buckets are returned in the order they are specified in the request. The sort and size options are not valid if you specify buckets. size specifies the maximum number of facets to include in the results. By default, Amazon CloudSearch returns counts for the top 10. The size parameter is only valid when you specify the sort option; it cannot be used in conjunction with buckets. sort specifies how you want to sort the facets in the results: bucket or count. Specify bucket to sort alphabetically or numerically by facet value (in ascending order). Specify count to sort by the facet counts computed for each facet value (in descending order). To retrieve facet counts for particular values or ranges of values, use the buckets option instead of sort. If no facet options are specified, facet counts are computed for all field values, the facets are sorted by facet count, and the top 10 facets are returned in the results. To count particular buckets of values, use the buckets option. For example, the following request uses the buckets option to calculate and return facet counts by decade. {"year":{"buckets":["[1970,1979]","[1980,1989]","[1990,1999]","[2000,2009]","[2010,}"]}} To sort facets by facet count, use the count option. For example, the following request sets the sort option to count to sort the facet values by facet count, with the facet values that have the most matching documents listed first. Setting the size option to 3 returns only the top three facet values. {"year":{"sort":"count","size":3}} To sort the facets by value, use the bucket option. For example, the following request sets the sort option to bucket to sort the facet values numerically by year, with earliest year listed first. {"year":{"sort":"bucket"}} For more information, see Getting and Using Facet Information in the Amazon CloudSearch Developer Guide. - */ - facet?: Facet; - /** - * Specifies a structured query that filters the results of a search without affecting how the results are scored and sorted. You use filterQuery in conjunction with the query parameter to filter the documents that match the constraints specified in the query parameter. Specifying a filter controls only which matching documents are included in the results, it has no effect on how they are scored and sorted. The filterQuery parameter supports the full structured query syntax. For more information about using filters, see Filtering Matching Documents in the Amazon CloudSearch Developer Guide. - */ - filterQuery?: FilterQuery; - /** - * Retrieves highlights for matches in the specified text or text-array fields. Each specified field must be highlight enabled in the domain configuration. The fields and options are specified in JSON using the form {"FIELD":{"OPTION":VALUE,"OPTION:"STRING"},"FIELD":{"OPTION":VALUE,"OPTION":"STRING"}}. You can specify the following highlight options: format: specifies the format of the data in the text field: text or html. When data is returned as HTML, all non-alphanumeric characters are encoded. The default is html. max_phrases: specifies the maximum number of occurrences of the search term(s) you want to highlight. By default, the first occurrence is highlighted. pre_tag: specifies the string to prepend to an occurrence of a search term. The default for HTML highlights is &lt;em&gt;. The default for text highlights is *. post_tag: specifies the string to append to an occurrence of a search term. The default for HTML highlights is &lt;/em&gt;. The default for text highlights is *. If no highlight options are specified for a field, the returned field text is treated as HTML and the first match is highlighted with emphasis tags: &lt;em>search-term&lt;/em&gt;. For example, the following request retrieves highlights for the actors and title fields. { "actors": {}, "title": {"format": "text","max_phrases": 2,"pre_tag": "","post_tag": ""} } - */ - highlight?: Highlight; - /** - * Enables partial results to be returned if one or more index partitions are unavailable. When your search index is partitioned across multiple search instances, by default Amazon CloudSearch only returns results if every partition can be queried. This means that the failure of a single search instance can result in 5xx (internal server) errors. When you enable partial results, Amazon CloudSearch returns whatever results are available and includes the percentage of documents searched in the search results (percent-searched). This enables you to more gracefully degrade your users' search experience. For example, rather than displaying no results, you could display the partial results and a message indicating that the results might be incomplete due to a temporary system outage. - */ - partial?: Partial; - /** - * Specifies the search criteria for the request. How you specify the search criteria depends on the query parser used for the request and the parser options specified in the queryOptions parameter. By default, the simple query parser is used to process requests. To use the structured, lucene, or dismax query parser, you must also specify the queryParser parameter. For more information about specifying search criteria, see Searching Your Data in the Amazon CloudSearch Developer Guide. - */ - query: Query; - /** - * Configures options for the query parser specified in the queryParser parameter. You specify the options in JSON using the following form {"OPTION1":"VALUE1","OPTION2":VALUE2"..."OPTIONN":"VALUEN"}. The options you can configure vary according to which parser you use: defaultOperator: The default operator used to combine individual terms in the search string. For example: defaultOperator: 'or'. For the dismax parser, you specify a percentage that represents the percentage of terms in the search string (rounded down) that must match, rather than a default operator. A value of 0% is the equivalent to OR, and a value of 100% is equivalent to AND. The percentage must be specified as a value in the range 0-100 followed by the percent (%) symbol. For example, defaultOperator: 50%. Valid values: and, or, a percentage in the range 0%-100% (dismax). Default: and (simple, structured, lucene) or 100 (dismax). Valid for: simple, structured, lucene, and dismax. fields: An array of the fields to search when no fields are specified in a search. If no fields are specified in a search and this option is not specified, all text and text-array fields are searched. You can specify a weight for each field to control the relative importance of each field when Amazon CloudSearch calculates relevance scores. To specify a field weight, append a caret (^) symbol and the weight to the field name. For example, to boost the importance of the title field over the description field you could specify: "fields":["title^5","description"]. Valid values: The name of any configured field and an optional numeric value greater than zero. Default: All text and text-array fields. Valid for: simple, structured, lucene, and dismax. operators: An array of the operators or special characters you want to disable for the simple query parser. If you disable the and, or, or not operators, the corresponding operators (+, |, -) have no special meaning and are dropped from the search string. Similarly, disabling prefix disables the wildcard operator (*) and disabling phrase disables the ability to search for phrases by enclosing phrases in double quotes. Disabling precedence disables the ability to control order of precedence using parentheses. Disabling near disables the ability to use the ~ operator to perform a sloppy phrase search. Disabling the fuzzy operator disables the ability to use the ~ operator to perform a fuzzy search. escape disables the ability to use a backslash (\) to escape special characters within the search string. Disabling whitespace is an advanced option that prevents the parser from tokenizing on whitespace, which can be useful for Vietnamese. (It prevents Vietnamese words from being split incorrectly.) For example, you could disable all operators other than the phrase operator to support just simple term and phrase queries: "operators":["and","not","or", "prefix"]. Valid values: and, escape, fuzzy, near, not, or, phrase, precedence, prefix, whitespace. Default: All operators and special characters are enabled. Valid for: simple. phraseFields: An array of the text or text-array fields you want to use for phrase searches. When the terms in the search string appear in close proximity within a field, the field scores higher. You can specify a weight for each field to boost that score. The phraseSlop option controls how much the matches can deviate from the search string and still be boosted. To specify a field weight, append a caret (^) symbol and the weight to the field name. For example, to boost phrase matches in the title field over the abstract field, you could specify: "phraseFields":["title^3", "plot"] Valid values: The name of any text or text-array field and an optional numeric value greater than zero. Default: No fields. If you don't specify any fields with phraseFields, proximity scoring is disabled even if phraseSlop is specified. Valid for: dismax. phraseSlop: An integer value that specifies how much matches can deviate from the search phrase and still be boosted according to the weights specified in the phraseFields option; for example, phraseSlop: 2. You must also specify phraseFields to enable proximity scoring. Valid values: positive integers. Default: 0. Valid for: dismax. explicitPhraseSlop: An integer value that specifies how much a match can deviate from the search phrase when the phrase is enclosed in double quotes in the search string. (Phrases that exceed this proximity distance are not considered a match.) For example, to specify a slop of three for dismax phrase queries, you would specify "explicitPhraseSlop":3. Valid values: positive integers. Default: 0. Valid for: dismax. tieBreaker: When a term in the search string is found in a document's field, a score is calculated for that field based on how common the word is in that field compared to other documents. If the term occurs in multiple fields within a document, by default only the highest scoring field contributes to the document's overall score. You can specify a tieBreaker value to enable the matches in lower-scoring fields to contribute to the document's score. That way, if two documents have the same max field score for a particular term, the score for the document that has matches in more fields will be higher. The formula for calculating the score with a tieBreaker is (max field score) + (tieBreaker) * (sum of the scores for the rest of the matching fields). Set tieBreaker to 0 to disregard all but the highest scoring field (pure max): "tieBreaker":0. Set to 1 to sum the scores from all fields (pure sum): "tieBreaker":1. Valid values: 0.0 to 1.0. Default: 0.0. Valid for: dismax. - */ - queryOptions?: QueryOptions; - /** - * Specifies which query parser to use to process the request. If queryParser is not specified, Amazon CloudSearch uses the simple query parser. Amazon CloudSearch supports four query parsers: simple: perform simple searches of text and text-array fields. By default, the simple query parser searches all text and text-array fields. You can specify which fields to search by with the queryOptions parameter. If you prefix a search term with a plus sign (+) documents must contain the term to be considered a match. (This is the default, unless you configure the default operator with the queryOptions parameter.) You can use the - (NOT), | (OR), and * (wildcard) operators to exclude particular terms, find results that match any of the specified terms, or search for a prefix. To search for a phrase rather than individual terms, enclose the phrase in double quotes. For more information, see Searching for Text in the Amazon CloudSearch Developer Guide. structured: perform advanced searches by combining multiple expressions to define the search criteria. You can also search within particular fields, search for values and ranges of values, and use advanced options such as term boosting, matchall, and near. For more information, see Constructing Compound Queries in the Amazon CloudSearch Developer Guide. lucene: search using the Apache Lucene query parser syntax. For more information, see Apache Lucene Query Parser Syntax. dismax: search using the simplified subset of the Apache Lucene query parser syntax defined by the DisMax query parser. For more information, see DisMax Query Parser Syntax. - */ - queryParser?: QueryParser; - /** - * Specifies the field and expression values to include in the response. Multiple fields or expressions are specified as a comma-separated list. By default, a search response includes all return enabled fields (_all_fields). To return only the document IDs for the matching documents, specify _no_fields. To retrieve the relevance score calculated for each document, specify _score. - */ - return?: Return; - /** - * Specifies the maximum number of search hits to include in the response. - */ - size?: Size; - /** - * Specifies the fields or custom expressions to use to sort the search results. Multiple fields or expressions are specified as a comma-separated list. You must specify the sort direction (asc or desc) for each field; for example, year desc,title asc. To use a field to sort results, the field must be sort-enabled in the domain configuration. Array type fields cannot be used for sorting. If no sort parameter is specified, results are sorted by their default relevance scores in descending order: _score desc. You can also sort by document ID (_id asc) and version (_version desc). For more information, see Sorting Results in the Amazon CloudSearch Developer Guide. - */ - sort?: Sort; - /** - * Specifies the offset of the first search hit you want to return. Note that the result set is zero-based; the first result is at index 0. You can specify either the start or cursor parameter in a request, they are mutually exclusive. For more information, see Paginating Results in the Amazon CloudSearch Developer Guide. - */ - start?: Start; - /** - * Specifies one or more fields for which to get statistics information. Each specified field must be facet-enabled in the domain configuration. The fields are specified in JSON using the form: {"FIELD-A":{},"FIELD-B":{}} There are currently no options supported for statistics. - */ - stats?: Stat; - } - export interface SearchResponse { - /** - * The status information returned for the search request. - */ - status?: SearchStatus; - /** - * The documents that match the search criteria. - */ - hits?: Hits; - /** - * The requested facet information. - */ - facets?: Facets; - /** - * The requested field statistics information. - */ - stats?: Stats; - } - export interface SearchStatus { - /** - * How long it took to process the request, in milliseconds. - */ - timems?: Long; - /** - * The encrypted resource ID for the request. - */ - rid?: String; - } - export type Size = number; - export type Sort = string; - export type Start = number; - export type Stat = string; - export type Stats = {[key: string]: FieldStats}; - export type String = string; - export interface SuggestModel { - /** - * The query string specified in the suggest request. - */ - query?: String; - /** - * The number of documents that were found to match the query string. - */ - found?: Long; - /** - * The documents that match the query string. - */ - suggestions?: Suggestions; - } - export interface SuggestRequest { - /** - * Specifies the string for which you want to get suggestions. - */ - query: Query; - /** - * Specifies the name of the suggester to use to find suggested matches. - */ - suggester: Suggester; - /** - * Specifies the maximum number of suggestions to return. - */ - size?: SuggestionsSize; - } - export interface SuggestResponse { - /** - * The status of a SuggestRequest. Contains the resource ID (rid) and how long it took to process the request (timems). - */ - status?: SuggestStatus; - /** - * Container for the matching search suggestion information. - */ - suggest?: SuggestModel; - } - export interface SuggestStatus { - /** - * How long it took to process the request, in milliseconds. - */ - timems?: Long; - /** - * The encrypted resource ID for the request. - */ - rid?: String; - } - export type Suggester = string; - export interface SuggestionMatch { - /** - * The string that matches the query string specified in the SuggestRequest. - */ - suggestion?: String; - /** - * The relevance score of a suggested match. - */ - score?: Long; - /** - * The document ID of the suggested document. - */ - id?: String; - } - export type Suggestions = SuggestionMatch[]; - export type SuggestionsSize = number; - export interface UploadDocumentsRequest { - /** - * A batch of documents formatted in JSON or HTML. - */ - documents: _Blob; - /** - * The format of the batch you are uploading. Amazon CloudSearch supports two document batch formats: application/json application/xml - */ - contentType: ContentType; - } - export interface UploadDocumentsResponse { - /** - * The status of an UploadDocumentsRequest. - */ - status?: String; - /** - * The number of documents that were added to the search domain. - */ - adds?: Adds; - /** - * The number of documents that were deleted from the search domain. - */ - deletes?: Deletes; - /** - * Any warnings returned by the document service about the documents being uploaded. - */ - warnings?: DocumentServiceWarnings; - } - /** - * A string in YYYY-MM-DD format that represents the latest possible API version that can be used in this service. Specify 'latest' to use the latest possible version. - */ - export type apiVersion = "2013-01-01"|"latest"|string; - export interface ClientApiVersions { - /** - * A string in YYYY-MM-DD format that represents the latest possible API version that can be used in this service. Specify 'latest' to use the latest possible version. - */ - apiVersion?: apiVersion; - } - export type ClientConfiguration = ServiceConfigurationOptions & ClientApiVersions; - /** - * Contains interfaces for use with the CloudSearchDomain client. - */ - export import Types = CloudSearchDomain; -} -export = CloudSearchDomain; diff --git a/workshops/monte-carlo-on-ec2-spot-fleet/src/web/node_modules/aws-sdk/clients/cloudsearchdomain.js b/workshops/monte-carlo-on-ec2-spot-fleet/src/web/node_modules/aws-sdk/clients/cloudsearchdomain.js deleted file mode 100644 index 78c1e3a4..00000000 --- a/workshops/monte-carlo-on-ec2-spot-fleet/src/web/node_modules/aws-sdk/clients/cloudsearchdomain.js +++ /dev/null @@ -1,18 +0,0 @@ -require('../lib/node_loader'); -var AWS = require('../lib/core'); -var Service = AWS.Service; -var apiLoader = AWS.apiLoader; - -apiLoader.services['cloudsearchdomain'] = {}; -AWS.CloudSearchDomain = Service.defineService('cloudsearchdomain', ['2013-01-01']); -require('../lib/services/cloudsearchdomain'); -Object.defineProperty(apiLoader.services['cloudsearchdomain'], '2013-01-01', { - get: function get() { - var model = require('../apis/cloudsearchdomain-2013-01-01.min.json'); - return model; - }, - enumerable: true, - configurable: true -}); - -module.exports = AWS.CloudSearchDomain; diff --git a/workshops/monte-carlo-on-ec2-spot-fleet/src/web/node_modules/aws-sdk/clients/cloudtrail.d.ts b/workshops/monte-carlo-on-ec2-spot-fleet/src/web/node_modules/aws-sdk/clients/cloudtrail.d.ts deleted file mode 100644 index 509657cc..00000000 --- a/workshops/monte-carlo-on-ec2-spot-fleet/src/web/node_modules/aws-sdk/clients/cloudtrail.d.ts +++ /dev/null @@ -1,770 +0,0 @@ -import {Request} from '../lib/request'; -import {Response} from '../lib/response'; -import {AWSError} from '../lib/error'; -import {Service} from '../lib/service'; -import {ServiceConfigurationOptions} from '../lib/service'; -import {ConfigBase as Config} from '../lib/config'; -interface Blob {} -declare class CloudTrail extends Service { - /** - * Constructs a service object. This object has one method for each API operation. - */ - constructor(options?: CloudTrail.Types.ClientConfiguration) - config: Config & CloudTrail.Types.ClientConfiguration; - /** - * Adds one or more tags to a trail, up to a limit of 50. Tags must be unique per trail. Overwrites an existing tag's value when a new value is specified for an existing tag key. If you specify a key without a value, the tag will be created with the specified key and a value of null. You can tag a trail that applies to all regions only from the region in which the trail was created (that is, from its home region). - */ - addTags(params: CloudTrail.Types.AddTagsRequest, callback?: (err: AWSError, data: CloudTrail.Types.AddTagsResponse) => void): Request; - /** - * Adds one or more tags to a trail, up to a limit of 50. Tags must be unique per trail. Overwrites an existing tag's value when a new value is specified for an existing tag key. If you specify a key without a value, the tag will be created with the specified key and a value of null. You can tag a trail that applies to all regions only from the region in which the trail was created (that is, from its home region). - */ - addTags(callback?: (err: AWSError, data: CloudTrail.Types.AddTagsResponse) => void): Request; - /** - * Creates a trail that specifies the settings for delivery of log data to an Amazon S3 bucket. A maximum of five trails can exist in a region, irrespective of the region in which they were created. - */ - createTrail(params: CloudTrail.Types.CreateTrailRequest, callback?: (err: AWSError, data: CloudTrail.Types.CreateTrailResponse) => void): Request; - /** - * Creates a trail that specifies the settings for delivery of log data to an Amazon S3 bucket. A maximum of five trails can exist in a region, irrespective of the region in which they were created. - */ - createTrail(callback?: (err: AWSError, data: CloudTrail.Types.CreateTrailResponse) => void): Request; - /** - * Deletes a trail. This operation must be called from the region in which the trail was created. DeleteTrail cannot be called on the shadow trails (replicated trails in other regions) of a trail that is enabled in all regions. - */ - deleteTrail(params: CloudTrail.Types.DeleteTrailRequest, callback?: (err: AWSError, data: CloudTrail.Types.DeleteTrailResponse) => void): Request; - /** - * Deletes a trail. This operation must be called from the region in which the trail was created. DeleteTrail cannot be called on the shadow trails (replicated trails in other regions) of a trail that is enabled in all regions. - */ - deleteTrail(callback?: (err: AWSError, data: CloudTrail.Types.DeleteTrailResponse) => void): Request; - /** - * Retrieves settings for the trail associated with the current region for your account. - */ - describeTrails(params: CloudTrail.Types.DescribeTrailsRequest, callback?: (err: AWSError, data: CloudTrail.Types.DescribeTrailsResponse) => void): Request; - /** - * Retrieves settings for the trail associated with the current region for your account. - */ - describeTrails(callback?: (err: AWSError, data: CloudTrail.Types.DescribeTrailsResponse) => void): Request; - /** - * Describes the settings for the event selectors that you configured for your trail. The information returned for your event selectors includes the following: The S3 objects that you are logging for data events. If your event selector includes management events. If your event selector includes read-only events, write-only events, or all. For more information, see Logging Data and Management Events for Trails in the AWS CloudTrail User Guide. - */ - getEventSelectors(params: CloudTrail.Types.GetEventSelectorsRequest, callback?: (err: AWSError, data: CloudTrail.Types.GetEventSelectorsResponse) => void): Request; - /** - * Describes the settings for the event selectors that you configured for your trail. The information returned for your event selectors includes the following: The S3 objects that you are logging for data events. If your event selector includes management events. If your event selector includes read-only events, write-only events, or all. For more information, see Logging Data and Management Events for Trails in the AWS CloudTrail User Guide. - */ - getEventSelectors(callback?: (err: AWSError, data: CloudTrail.Types.GetEventSelectorsResponse) => void): Request; - /** - * Returns a JSON-formatted list of information about the specified trail. Fields include information on delivery errors, Amazon SNS and Amazon S3 errors, and start and stop logging times for each trail. This operation returns trail status from a single region. To return trail status from all regions, you must call the operation on each region. - */ - getTrailStatus(params: CloudTrail.Types.GetTrailStatusRequest, callback?: (err: AWSError, data: CloudTrail.Types.GetTrailStatusResponse) => void): Request; - /** - * Returns a JSON-formatted list of information about the specified trail. Fields include information on delivery errors, Amazon SNS and Amazon S3 errors, and start and stop logging times for each trail. This operation returns trail status from a single region. To return trail status from all regions, you must call the operation on each region. - */ - getTrailStatus(callback?: (err: AWSError, data: CloudTrail.Types.GetTrailStatusResponse) => void): Request; - /** - * Returns all public keys whose private keys were used to sign the digest files within the specified time range. The public key is needed to validate digest files that were signed with its corresponding private key. CloudTrail uses different private/public key pairs per region. Each digest file is signed with a private key unique to its region. Therefore, when you validate a digest file from a particular region, you must look in the same region for its corresponding public key. - */ - listPublicKeys(params: CloudTrail.Types.ListPublicKeysRequest, callback?: (err: AWSError, data: CloudTrail.Types.ListPublicKeysResponse) => void): Request; - /** - * Returns all public keys whose private keys were used to sign the digest files within the specified time range. The public key is needed to validate digest files that were signed with its corresponding private key. CloudTrail uses different private/public key pairs per region. Each digest file is signed with a private key unique to its region. Therefore, when you validate a digest file from a particular region, you must look in the same region for its corresponding public key. - */ - listPublicKeys(callback?: (err: AWSError, data: CloudTrail.Types.ListPublicKeysResponse) => void): Request; - /** - * Lists the tags for the trail in the current region. - */ - listTags(params: CloudTrail.Types.ListTagsRequest, callback?: (err: AWSError, data: CloudTrail.Types.ListTagsResponse) => void): Request; - /** - * Lists the tags for the trail in the current region. - */ - listTags(callback?: (err: AWSError, data: CloudTrail.Types.ListTagsResponse) => void): Request; - /** - * Looks up API activity events captured by CloudTrail that create, update, or delete resources in your account. Events for a region can be looked up for the times in which you had CloudTrail turned on in that region during the last seven days. Lookup supports the following attributes: Event ID Event name Event source Resource name Resource type User name All attributes are optional. The default number of results returned is 10, with a maximum of 50 possible. The response includes a token that you can use to get the next page of results. The rate of lookup requests is limited to one per second per account. If this limit is exceeded, a throttling error occurs. Events that occurred during the selected time range will not be available for lookup if CloudTrail logging was not enabled when the events occurred. - */ - lookupEvents(params: CloudTrail.Types.LookupEventsRequest, callback?: (err: AWSError, data: CloudTrail.Types.LookupEventsResponse) => void): Request; - /** - * Looks up API activity events captured by CloudTrail that create, update, or delete resources in your account. Events for a region can be looked up for the times in which you had CloudTrail turned on in that region during the last seven days. Lookup supports the following attributes: Event ID Event name Event source Resource name Resource type User name All attributes are optional. The default number of results returned is 10, with a maximum of 50 possible. The response includes a token that you can use to get the next page of results. The rate of lookup requests is limited to one per second per account. If this limit is exceeded, a throttling error occurs. Events that occurred during the selected time range will not be available for lookup if CloudTrail logging was not enabled when the events occurred. - */ - lookupEvents(callback?: (err: AWSError, data: CloudTrail.Types.LookupEventsResponse) => void): Request; - /** - * Configures an event selector for your trail. Use event selectors to specify whether you want your trail to log management and/or data events. When an event occurs in your account, CloudTrail evaluates the event selectors in all trails. For each trail, if the event matches any event selector, the trail processes and logs the event. If the event doesn't match any event selector, the trail doesn't log the event. Example You create an event selector for a trail and specify that you want write-only events. The EC2 GetConsoleOutput and RunInstances API operations occur in your account. CloudTrail evaluates whether the events match your event selectors. The RunInstances is a write-only event and it matches your event selector. The trail logs the event. The GetConsoleOutput is a read-only event but it doesn't match your event selector. The trail doesn't log the event. The PutEventSelectors operation must be called from the region in which the trail was created; otherwise, an InvalidHomeRegionException is thrown. You can configure up to five event selectors for each trail. For more information, see Logging Data and Management Events for Trails in the AWS CloudTrail User Guide. - */ - putEventSelectors(params: CloudTrail.Types.PutEventSelectorsRequest, callback?: (err: AWSError, data: CloudTrail.Types.PutEventSelectorsResponse) => void): Request; - /** - * Configures an event selector for your trail. Use event selectors to specify whether you want your trail to log management and/or data events. When an event occurs in your account, CloudTrail evaluates the event selectors in all trails. For each trail, if the event matches any event selector, the trail processes and logs the event. If the event doesn't match any event selector, the trail doesn't log the event. Example You create an event selector for a trail and specify that you want write-only events. The EC2 GetConsoleOutput and RunInstances API operations occur in your account. CloudTrail evaluates whether the events match your event selectors. The RunInstances is a write-only event and it matches your event selector. The trail logs the event. The GetConsoleOutput is a read-only event but it doesn't match your event selector. The trail doesn't log the event. The PutEventSelectors operation must be called from the region in which the trail was created; otherwise, an InvalidHomeRegionException is thrown. You can configure up to five event selectors for each trail. For more information, see Logging Data and Management Events for Trails in the AWS CloudTrail User Guide. - */ - putEventSelectors(callback?: (err: AWSError, data: CloudTrail.Types.PutEventSelectorsResponse) => void): Request; - /** - * Removes the specified tags from a trail. - */ - removeTags(params: CloudTrail.Types.RemoveTagsRequest, callback?: (err: AWSError, data: CloudTrail.Types.RemoveTagsResponse) => void): Request; - /** - * Removes the specified tags from a trail. - */ - removeTags(callback?: (err: AWSError, data: CloudTrail.Types.RemoveTagsResponse) => void): Request; - /** - * Starts the recording of AWS API calls and log file delivery for a trail. For a trail that is enabled in all regions, this operation must be called from the region in which the trail was created. This operation cannot be called on the shadow trails (replicated trails in other regions) of a trail that is enabled in all regions. - */ - startLogging(params: CloudTrail.Types.StartLoggingRequest, callback?: (err: AWSError, data: CloudTrail.Types.StartLoggingResponse) => void): Request; - /** - * Starts the recording of AWS API calls and log file delivery for a trail. For a trail that is enabled in all regions, this operation must be called from the region in which the trail was created. This operation cannot be called on the shadow trails (replicated trails in other regions) of a trail that is enabled in all regions. - */ - startLogging(callback?: (err: AWSError, data: CloudTrail.Types.StartLoggingResponse) => void): Request; - /** - * Suspends the recording of AWS API calls and log file delivery for the specified trail. Under most circumstances, there is no need to use this action. You can update a trail without stopping it first. This action is the only way to stop recording. For a trail enabled in all regions, this operation must be called from the region in which the trail was created, or an InvalidHomeRegionException will occur. This operation cannot be called on the shadow trails (replicated trails in other regions) of a trail enabled in all regions. - */ - stopLogging(params: CloudTrail.Types.StopLoggingRequest, callback?: (err: AWSError, data: CloudTrail.Types.StopLoggingResponse) => void): Request; - /** - * Suspends the recording of AWS API calls and log file delivery for the specified trail. Under most circumstances, there is no need to use this action. You can update a trail without stopping it first. This action is the only way to stop recording. For a trail enabled in all regions, this operation must be called from the region in which the trail was created, or an InvalidHomeRegionException will occur. This operation cannot be called on the shadow trails (replicated trails in other regions) of a trail enabled in all regions. - */ - stopLogging(callback?: (err: AWSError, data: CloudTrail.Types.StopLoggingResponse) => void): Request; - /** - * Updates the settings that specify delivery of log files. Changes to a trail do not require stopping the CloudTrail service. Use this action to designate an existing bucket for log delivery. If the existing bucket has previously been a target for CloudTrail log files, an IAM policy exists for the bucket. UpdateTrail must be called from the region in which the trail was created; otherwise, an InvalidHomeRegionException is thrown. - */ - updateTrail(params: CloudTrail.Types.UpdateTrailRequest, callback?: (err: AWSError, data: CloudTrail.Types.UpdateTrailResponse) => void): Request; - /** - * Updates the settings that specify delivery of log files. Changes to a trail do not require stopping the CloudTrail service. Use this action to designate an existing bucket for log delivery. If the existing bucket has previously been a target for CloudTrail log files, an IAM policy exists for the bucket. UpdateTrail must be called from the region in which the trail was created; otherwise, an InvalidHomeRegionException is thrown. - */ - updateTrail(callback?: (err: AWSError, data: CloudTrail.Types.UpdateTrailResponse) => void): Request; -} -declare namespace CloudTrail { - export interface AddTagsRequest { - /** - * Specifies the ARN of the trail to which one or more tags will be added. The format of a trail ARN is: arn:aws:cloudtrail:us-east-1:123456789012:trail/MyTrail - */ - ResourceId: String; - /** - * Contains a list of CloudTrail tags, up to a limit of 50 - */ - TagsList?: TagsList; - } - export interface AddTagsResponse { - } - export type Boolean = boolean; - export type ByteBuffer = Buffer|Uint8Array|Blob|string; - export interface CreateTrailRequest { - /** - * Specifies the name of the trail. The name must meet the following requirements: Contain only ASCII letters (a-z, A-Z), numbers (0-9), periods (.), underscores (_), or dashes (-) Start with a letter or number, and end with a letter or number Be between 3 and 128 characters Have no adjacent periods, underscores or dashes. Names like my-_namespace and my--namespace are invalid. Not be in IP address format (for example, 192.168.5.4) - */ - Name: String; - /** - * Specifies the name of the Amazon S3 bucket designated for publishing log files. See Amazon S3 Bucket Naming Requirements. - */ - S3BucketName: String; - /** - * Specifies the Amazon S3 key prefix that comes after the name of the bucket you have designated for log file delivery. For more information, see Finding Your CloudTrail Log Files. The maximum length is 200 characters. - */ - S3KeyPrefix?: String; - /** - * Specifies the name of the Amazon SNS topic defined for notification of log file delivery. The maximum length is 256 characters. - */ - SnsTopicName?: String; - /** - * Specifies whether the trail is publishing events from global services such as IAM to the log files. - */ - IncludeGlobalServiceEvents?: Boolean; - /** - * Specifies whether the trail is created in the current region or in all regions. The default is false. - */ - IsMultiRegionTrail?: Boolean; - /** - * Specifies whether log file integrity validation is enabled. The default is false. When you disable log file integrity validation, the chain of digest files is broken after one hour. CloudTrail will not create digest files for log files that were delivered during a period in which log file integrity validation was disabled. For example, if you enable log file integrity validation at noon on January 1, disable it at noon on January 2, and re-enable it at noon on January 10, digest files will not be created for the log files delivered from noon on January 2 to noon on January 10. The same applies whenever you stop CloudTrail logging or delete a trail. - */ - EnableLogFileValidation?: Boolean; - /** - * Specifies a log group name using an Amazon Resource Name (ARN), a unique identifier that represents the log group to which CloudTrail logs will be delivered. Not required unless you specify CloudWatchLogsRoleArn. - */ - CloudWatchLogsLogGroupArn?: String; - /** - * Specifies the role for the CloudWatch Logs endpoint to assume to write to a user's log group. - */ - CloudWatchLogsRoleArn?: String; - /** - * Specifies the KMS key ID to use to encrypt the logs delivered by CloudTrail. The value can be an alias name prefixed by "alias/", a fully specified ARN to an alias, a fully specified ARN to a key, or a globally unique identifier. Examples: alias/MyAliasName arn:aws:kms:us-east-1:123456789012:alias/MyAliasName arn:aws:kms:us-east-1:123456789012:key/12345678-1234-1234-1234-123456789012 12345678-1234-1234-1234-123456789012 - */ - KmsKeyId?: String; - } - export interface CreateTrailResponse { - /** - * Specifies the name of the trail. - */ - Name?: String; - /** - * Specifies the name of the Amazon S3 bucket designated for publishing log files. - */ - S3BucketName?: String; - /** - * Specifies the Amazon S3 key prefix that comes after the name of the bucket you have designated for log file delivery. For more information, see Finding Your CloudTrail Log Files. - */ - S3KeyPrefix?: String; - /** - * This field is deprecated. Use SnsTopicARN. - */ - SnsTopicName?: String; - /** - * Specifies the ARN of the Amazon SNS topic that CloudTrail uses to send notifications when log files are delivered. The format of a topic ARN is: arn:aws:sns:us-east-1:123456789012:MyTopic - */ - SnsTopicARN?: String; - /** - * Specifies whether the trail is publishing events from global services such as IAM to the log files. - */ - IncludeGlobalServiceEvents?: Boolean; - /** - * Specifies whether the trail exists in one region or in all regions. - */ - IsMultiRegionTrail?: Boolean; - /** - * Specifies the ARN of the trail that was created. The format of a trail ARN is: arn:aws:cloudtrail:us-east-1:123456789012:trail/MyTrail - */ - TrailARN?: String; - /** - * Specifies whether log file integrity validation is enabled. - */ - LogFileValidationEnabled?: Boolean; - /** - * Specifies the Amazon Resource Name (ARN) of the log group to which CloudTrail logs will be delivered. - */ - CloudWatchLogsLogGroupArn?: String; - /** - * Specifies the role for the CloudWatch Logs endpoint to assume to write to a user's log group. - */ - CloudWatchLogsRoleArn?: String; - /** - * Specifies the KMS key ID that encrypts the logs delivered by CloudTrail. The value is a fully specified ARN to a KMS key in the format: arn:aws:kms:us-east-1:123456789012:key/12345678-1234-1234-1234-123456789012 - */ - KmsKeyId?: String; - } - export interface DataResource { - /** - * The resource type in which you want to log data events. You can specify only the following value: AWS::S3::Object. - */ - Type?: String; - /** - * A list of ARN-like strings for the specified S3 objects. To log data events for all objects in an S3 bucket, specify the bucket and an empty object prefix such as arn:aws:s3:::bucket-1/. The trail logs data events for all objects in this S3 bucket. To log data events for specific objects, specify the S3 bucket and object prefix such as arn:aws:s3:::bucket-1/example-images. The trail logs data events for objects in this S3 bucket that match the prefix. - */ - Values?: DataResourceValues; - } - export type DataResourceValues = String[]; - export type DataResources = DataResource[]; - export type _Date = Date; - export interface DeleteTrailRequest { - /** - * Specifies the name or the CloudTrail ARN of the trail to be deleted. The format of a trail ARN is: arn:aws:cloudtrail:us-east-1:123456789012:trail/MyTrail - */ - Name: String; - } - export interface DeleteTrailResponse { - } - export interface DescribeTrailsRequest { - /** - * Specifies a list of trail names, trail ARNs, or both, of the trails to describe. The format of a trail ARN is: arn:aws:cloudtrail:us-east-1:123456789012:trail/MyTrail If an empty list is specified, information for the trail in the current region is returned. If an empty list is specified and IncludeShadowTrails is false, then information for all trails in the current region is returned. If an empty list is specified and IncludeShadowTrails is null or true, then information for all trails in the current region and any associated shadow trails in other regions is returned. If one or more trail names are specified, information is returned only if the names match the names of trails belonging only to the current region. To return information about a trail in another region, you must specify its trail ARN. - */ - trailNameList?: TrailNameList; - /** - * Specifies whether to include shadow trails in the response. A shadow trail is the replication in a region of a trail that was created in a different region. The default is true. - */ - includeShadowTrails?: Boolean; - } - export interface DescribeTrailsResponse { - /** - * The list of trail objects. - */ - trailList?: TrailList; - } - export interface Event { - /** - * The CloudTrail ID of the event returned. - */ - EventId?: String; - /** - * The name of the event returned. - */ - EventName?: String; - /** - * The date and time of the event returned. - */ - EventTime?: _Date; - /** - * The AWS service that the request was made to. - */ - EventSource?: String; - /** - * A user name or role name of the requester that called the API in the event returned. - */ - Username?: String; - /** - * A list of resources referenced by the event returned. - */ - Resources?: ResourceList; - /** - * A JSON string that contains a representation of the event returned. - */ - CloudTrailEvent?: String; - } - export interface EventSelector { - /** - * Specify if you want your trail to log read-only events, write-only events, or all. For example, the EC2 GetConsoleOutput is a read-only API operation and RunInstances is a write-only API operation. By default, the value is All. - */ - ReadWriteType?: ReadWriteType; - /** - * Specify if you want your event selector to include management events for your trail. For more information, see Management Events in the AWS CloudTrail User Guide. By default, the value is true. - */ - IncludeManagementEvents?: Boolean; - /** - * CloudTrail supports logging only data events for S3 objects. You can specify up to 250 S3 buckets and object prefixes for a trail. For more information, see Data Events in the AWS CloudTrail User Guide. - */ - DataResources?: DataResources; - } - export type EventSelectors = EventSelector[]; - export type EventsList = Event[]; - export interface GetEventSelectorsRequest { - /** - * Specifies the name of the trail or trail ARN. If you specify a trail name, the string must meet the following requirements: Contain only ASCII letters (a-z, A-Z), numbers (0-9), periods (.), underscores (_), or dashes (-) Start with a letter or number, and end with a letter or number Be between 3 and 128 characters Have no adjacent periods, underscores or dashes. Names like my-_namespace and my--namespace are invalid. Not be in IP address format (for example, 192.168.5.4) If you specify a trail ARN, it must be in the format: arn:aws:cloudtrail:us-east-1:123456789012:trail/MyTrail - */ - TrailName: String; - } - export interface GetEventSelectorsResponse { - /** - * The specified trail ARN that has the event selectors. - */ - TrailARN?: String; - /** - * The event selectors that are configured for the trail. - */ - EventSelectors?: EventSelectors; - } - export interface GetTrailStatusRequest { - /** - * Specifies the name or the CloudTrail ARN of the trail for which you are requesting status. To get the status of a shadow trail (a replication of the trail in another region), you must specify its ARN. The format of a trail ARN is: arn:aws:cloudtrail:us-east-1:123456789012:trail/MyTrail - */ - Name: String; - } - export interface GetTrailStatusResponse { - /** - * Whether the CloudTrail is currently logging AWS API calls. - */ - IsLogging?: Boolean; - /** - * Displays any Amazon S3 error that CloudTrail encountered when attempting to deliver log files to the designated bucket. For more information see the topic Error Responses in the Amazon S3 API Reference. This error occurs only when there is a problem with the destination S3 bucket and will not occur for timeouts. To resolve the issue, create a new bucket and call UpdateTrail to specify the new bucket, or fix the existing objects so that CloudTrail can again write to the bucket. - */ - LatestDeliveryError?: String; - /** - * Displays any Amazon SNS error that CloudTrail encountered when attempting to send a notification. For more information about Amazon SNS errors, see the Amazon SNS Developer Guide. - */ - LatestNotificationError?: String; - /** - * Specifies the date and time that CloudTrail last delivered log files to an account's Amazon S3 bucket. - */ - LatestDeliveryTime?: _Date; - /** - * Specifies the date and time of the most recent Amazon SNS notification that CloudTrail has written a new log file to an account's Amazon S3 bucket. - */ - LatestNotificationTime?: _Date; - /** - * Specifies the most recent date and time when CloudTrail started recording API calls for an AWS account. - */ - StartLoggingTime?: _Date; - /** - * Specifies the most recent date and time when CloudTrail stopped recording API calls for an AWS account. - */ - StopLoggingTime?: _Date; - /** - * Displays any CloudWatch Logs error that CloudTrail encountered when attempting to deliver logs to CloudWatch Logs. - */ - LatestCloudWatchLogsDeliveryError?: String; - /** - * Displays the most recent date and time when CloudTrail delivered logs to CloudWatch Logs. - */ - LatestCloudWatchLogsDeliveryTime?: _Date; - /** - * Specifies the date and time that CloudTrail last delivered a digest file to an account's Amazon S3 bucket. - */ - LatestDigestDeliveryTime?: _Date; - /** - * Displays any Amazon S3 error that CloudTrail encountered when attempting to deliver a digest file to the designated bucket. For more information see the topic Error Responses in the Amazon S3 API Reference. This error occurs only when there is a problem with the destination S3 bucket and will not occur for timeouts. To resolve the issue, create a new bucket and call UpdateTrail to specify the new bucket, or fix the existing objects so that CloudTrail can again write to the bucket. - */ - LatestDigestDeliveryError?: String; - /** - * This field is deprecated. - */ - LatestDeliveryAttemptTime?: String; - /** - * This field is deprecated. - */ - LatestNotificationAttemptTime?: String; - /** - * This field is deprecated. - */ - LatestNotificationAttemptSucceeded?: String; - /** - * This field is deprecated. - */ - LatestDeliveryAttemptSucceeded?: String; - /** - * This field is deprecated. - */ - TimeLoggingStarted?: String; - /** - * This field is deprecated. - */ - TimeLoggingStopped?: String; - } - export interface ListPublicKeysRequest { - /** - * Optionally specifies, in UTC, the start of the time range to look up public keys for CloudTrail digest files. If not specified, the current time is used, and the current public key is returned. - */ - StartTime?: _Date; - /** - * Optionally specifies, in UTC, the end of the time range to look up public keys for CloudTrail digest files. If not specified, the current time is used. - */ - EndTime?: _Date; - /** - * Reserved for future use. - */ - NextToken?: String; - } - export interface ListPublicKeysResponse { - /** - * Contains an array of PublicKey objects. The returned public keys may have validity time ranges that overlap. - */ - PublicKeyList?: PublicKeyList; - /** - * Reserved for future use. - */ - NextToken?: String; - } - export interface ListTagsRequest { - /** - * Specifies a list of trail ARNs whose tags will be listed. The list has a limit of 20 ARNs. The format of a trail ARN is: arn:aws:cloudtrail:us-east-1:123456789012:trail/MyTrail - */ - ResourceIdList: ResourceIdList; - /** - * Reserved for future use. - */ - NextToken?: String; - } - export interface ListTagsResponse { - /** - * A list of resource tags. - */ - ResourceTagList?: ResourceTagList; - /** - * Reserved for future use. - */ - NextToken?: String; - } - export interface LookupAttribute { - /** - * Specifies an attribute on which to filter the events returned. - */ - AttributeKey: LookupAttributeKey; - /** - * Specifies a value for the specified AttributeKey. - */ - AttributeValue: String; - } - export type LookupAttributeKey = "EventId"|"EventName"|"Username"|"ResourceType"|"ResourceName"|"EventSource"|string; - export type LookupAttributesList = LookupAttribute[]; - export interface LookupEventsRequest { - /** - * Contains a list of lookup attributes. Currently the list can contain only one item. - */ - LookupAttributes?: LookupAttributesList; - /** - * Specifies that only events that occur after or at the specified time are returned. If the specified start time is after the specified end time, an error is returned. - */ - StartTime?: _Date; - /** - * Specifies that only events that occur before or at the specified time are returned. If the specified end time is before the specified start time, an error is returned. - */ - EndTime?: _Date; - /** - * The number of events to return. Possible values are 1 through 50. The default is 10. - */ - MaxResults?: MaxResults; - /** - * The token to use to get the next page of results after a previous API call. This token must be passed in with the same parameters that were specified in the the original call. For example, if the original call specified an AttributeKey of 'Username' with a value of 'root', the call with NextToken should include those same parameters. - */ - NextToken?: NextToken; - } - export interface LookupEventsResponse { - /** - * A list of events returned based on the lookup attributes specified and the CloudTrail event. The events list is sorted by time. The most recent event is listed first. - */ - Events?: EventsList; - /** - * The token to use to get the next page of results after a previous API call. If the token does not appear, there are no more results to return. The token must be passed in with the same parameters as the previous call. For example, if the original call specified an AttributeKey of 'Username' with a value of 'root', the call with NextToken should include those same parameters. - */ - NextToken?: NextToken; - } - export type MaxResults = number; - export type NextToken = string; - export interface PublicKey { - /** - * The DER encoded public key value in PKCS#1 format. - */ - Value?: ByteBuffer; - /** - * The starting time of validity of the public key. - */ - ValidityStartTime?: _Date; - /** - * The ending time of validity of the public key. - */ - ValidityEndTime?: _Date; - /** - * The fingerprint of the public key. - */ - Fingerprint?: String; - } - export type PublicKeyList = PublicKey[]; - export interface PutEventSelectorsRequest { - /** - * Specifies the name of the trail or trail ARN. If you specify a trail name, the string must meet the following requirements: Contain only ASCII letters (a-z, A-Z), numbers (0-9), periods (.), underscores (_), or dashes (-) Start with a letter or number, and end with a letter or number Be between 3 and 128 characters Have no adjacent periods, underscores or dashes. Names like my-_namespace and my--namespace are invalid. Not be in IP address format (for example, 192.168.5.4) If you specify a trail ARN, it must be in the format: arn:aws:cloudtrail:us-east-1:123456789012:trail/MyTrail - */ - TrailName: String; - /** - * Specifies the settings for your event selectors. You can configure up to five event selectors for a trail. - */ - EventSelectors: EventSelectors; - } - export interface PutEventSelectorsResponse { - /** - * Specifies the ARN of the trail that was updated with event selectors. The format of a trail ARN is: arn:aws:cloudtrail:us-east-1:123456789012:trail/MyTrail - */ - TrailARN?: String; - /** - * Specifies the event selectors configured for your trail. - */ - EventSelectors?: EventSelectors; - } - export type ReadWriteType = "ReadOnly"|"WriteOnly"|"All"|string; - export interface RemoveTagsRequest { - /** - * Specifies the ARN of the trail from which tags should be removed. The format of a trail ARN is: arn:aws:cloudtrail:us-east-1:123456789012:trail/MyTrail - */ - ResourceId: String; - /** - * Specifies a list of tags to be removed. - */ - TagsList?: TagsList; - } - export interface RemoveTagsResponse { - } - export interface Resource { - /** - * The type of a resource referenced by the event returned. When the resource type cannot be determined, null is returned. Some examples of resource types are: Instance for EC2, Trail for CloudTrail, DBInstance for RDS, and AccessKey for IAM. For a list of resource types supported for event lookup, see Resource Types Supported for Event Lookup. - */ - ResourceType?: String; - /** - * The name of the resource referenced by the event returned. These are user-created names whose values will depend on the environment. For example, the resource name might be "auto-scaling-test-group" for an Auto Scaling Group or "i-1234567" for an EC2 Instance. - */ - ResourceName?: String; - } - export type ResourceIdList = String[]; - export type ResourceList = Resource[]; - export interface ResourceTag { - /** - * Specifies the ARN of the resource. - */ - ResourceId?: String; - /** - * A list of tags. - */ - TagsList?: TagsList; - } - export type ResourceTagList = ResourceTag[]; - export interface StartLoggingRequest { - /** - * Specifies the name or the CloudTrail ARN of the trail for which CloudTrail logs AWS API calls. The format of a trail ARN is: arn:aws:cloudtrail:us-east-1:123456789012:trail/MyTrail - */ - Name: String; - } - export interface StartLoggingResponse { - } - export interface StopLoggingRequest { - /** - * Specifies the name or the CloudTrail ARN of the trail for which CloudTrail will stop logging AWS API calls. The format of a trail ARN is: arn:aws:cloudtrail:us-east-1:123456789012:trail/MyTrail - */ - Name: String; - } - export interface StopLoggingResponse { - } - export type String = string; - export interface Tag { - /** - * The key in a key-value pair. The key must be must be no longer than 128 Unicode characters. The key must be unique for the resource to which it applies. - */ - Key: String; - /** - * The value in a key-value pair of a tag. The value must be no longer than 256 Unicode characters. - */ - Value?: String; - } - export type TagsList = Tag[]; - export interface Trail { - /** - * Name of the trail set by calling CreateTrail. The maximum length is 128 characters. - */ - Name?: String; - /** - * Name of the Amazon S3 bucket into which CloudTrail delivers your trail files. See Amazon S3 Bucket Naming Requirements. - */ - S3BucketName?: String; - /** - * Specifies the Amazon S3 key prefix that comes after the name of the bucket you have designated for log file delivery. For more information, see Finding Your CloudTrail Log Files.The maximum length is 200 characters. - */ - S3KeyPrefix?: String; - /** - * This field is deprecated. Use SnsTopicARN. - */ - SnsTopicName?: String; - /** - * Specifies the ARN of the Amazon SNS topic that CloudTrail uses to send notifications when log files are delivered. The format of a topic ARN is: arn:aws:sns:us-east-1:123456789012:MyTopic - */ - SnsTopicARN?: String; - /** - * Set to True to include AWS API calls from AWS global services such as IAM. Otherwise, False. - */ - IncludeGlobalServiceEvents?: Boolean; - /** - * Specifies whether the trail belongs only to one region or exists in all regions. - */ - IsMultiRegionTrail?: Boolean; - /** - * The region in which the trail was created. - */ - HomeRegion?: String; - /** - * Specifies the ARN of the trail. The format of a trail ARN is: arn:aws:cloudtrail:us-east-1:123456789012:trail/MyTrail - */ - TrailARN?: String; - /** - * Specifies whether log file validation is enabled. - */ - LogFileValidationEnabled?: Boolean; - /** - * Specifies an Amazon Resource Name (ARN), a unique identifier that represents the log group to which CloudTrail logs will be delivered. - */ - CloudWatchLogsLogGroupArn?: String; - /** - * Specifies the role for the CloudWatch Logs endpoint to assume to write to a user's log group. - */ - CloudWatchLogsRoleArn?: String; - /** - * Specifies the KMS key ID that encrypts the logs delivered by CloudTrail. The value is a fully specified ARN to a KMS key in the format: arn:aws:kms:us-east-1:123456789012:key/12345678-1234-1234-1234-123456789012 - */ - KmsKeyId?: String; - /** - * Specifies if the trail has custom event selectors. - */ - HasCustomEventSelectors?: Boolean; - } - export type TrailList = Trail[]; - export type TrailNameList = String[]; - export interface UpdateTrailRequest { - /** - * Specifies the name of the trail or trail ARN. If Name is a trail name, the string must meet the following requirements: Contain only ASCII letters (a-z, A-Z), numbers (0-9), periods (.), underscores (_), or dashes (-) Start with a letter or number, and end with a letter or number Be between 3 and 128 characters Have no adjacent periods, underscores or dashes. Names like my-_namespace and my--namespace are invalid. Not be in IP address format (for example, 192.168.5.4) If Name is a trail ARN, it must be in the format: arn:aws:cloudtrail:us-east-1:123456789012:trail/MyTrail - */ - Name: String; - /** - * Specifies the name of the Amazon S3 bucket designated for publishing log files. See Amazon S3 Bucket Naming Requirements. - */ - S3BucketName?: String; - /** - * Specifies the Amazon S3 key prefix that comes after the name of the bucket you have designated for log file delivery. For more information, see Finding Your CloudTrail Log Files. The maximum length is 200 characters. - */ - S3KeyPrefix?: String; - /** - * Specifies the name of the Amazon SNS topic defined for notification of log file delivery. The maximum length is 256 characters. - */ - SnsTopicName?: String; - /** - * Specifies whether the trail is publishing events from global services such as IAM to the log files. - */ - IncludeGlobalServiceEvents?: Boolean; - /** - * Specifies whether the trail applies only to the current region or to all regions. The default is false. If the trail exists only in the current region and this value is set to true, shadow trails (replications of the trail) will be created in the other regions. If the trail exists in all regions and this value is set to false, the trail will remain in the region where it was created, and its shadow trails in other regions will be deleted. - */ - IsMultiRegionTrail?: Boolean; - /** - * Specifies whether log file validation is enabled. The default is false. When you disable log file integrity validation, the chain of digest files is broken after one hour. CloudTrail will not create digest files for log files that were delivered during a period in which log file integrity validation was disabled. For example, if you enable log file integrity validation at noon on January 1, disable it at noon on January 2, and re-enable it at noon on January 10, digest files will not be created for the log files delivered from noon on January 2 to noon on January 10. The same applies whenever you stop CloudTrail logging or delete a trail. - */ - EnableLogFileValidation?: Boolean; - /** - * Specifies a log group name using an Amazon Resource Name (ARN), a unique identifier that represents the log group to which CloudTrail logs will be delivered. Not required unless you specify CloudWatchLogsRoleArn. - */ - CloudWatchLogsLogGroupArn?: String; - /** - * Specifies the role for the CloudWatch Logs endpoint to assume to write to a user's log group. - */ - CloudWatchLogsRoleArn?: String; - /** - * Specifies the KMS key ID to use to encrypt the logs delivered by CloudTrail. The value can be an alias name prefixed by "alias/", a fully specified ARN to an alias, a fully specified ARN to a key, or a globally unique identifier. Examples: alias/MyAliasName arn:aws:kms:us-east-1:123456789012:alias/MyAliasName arn:aws:kms:us-east-1:123456789012:key/12345678-1234-1234-1234-123456789012 12345678-1234-1234-1234-123456789012 - */ - KmsKeyId?: String; - } - export interface UpdateTrailResponse { - /** - * Specifies the name of the trail. - */ - Name?: String; - /** - * Specifies the name of the Amazon S3 bucket designated for publishing log files. - */ - S3BucketName?: String; - /** - * Specifies the Amazon S3 key prefix that comes after the name of the bucket you have designated for log file delivery. For more information, see Finding Your CloudTrail Log Files. - */ - S3KeyPrefix?: String; - /** - * This field is deprecated. Use SnsTopicARN. - */ - SnsTopicName?: String; - /** - * Specifies the ARN of the Amazon SNS topic that CloudTrail uses to send notifications when log files are delivered. The format of a topic ARN is: arn:aws:sns:us-east-1:123456789012:MyTopic - */ - SnsTopicARN?: String; - /** - * Specifies whether the trail is publishing events from global services such as IAM to the log files. - */ - IncludeGlobalServiceEvents?: Boolean; - /** - * Specifies whether the trail exists in one region or in all regions. - */ - IsMultiRegionTrail?: Boolean; - /** - * Specifies the ARN of the trail that was updated. The format of a trail ARN is: arn:aws:cloudtrail:us-east-1:123456789012:trail/MyTrail - */ - TrailARN?: String; - /** - * Specifies whether log file integrity validation is enabled. - */ - LogFileValidationEnabled?: Boolean; - /** - * Specifies the Amazon Resource Name (ARN) of the log group to which CloudTrail logs will be delivered. - */ - CloudWatchLogsLogGroupArn?: String; - /** - * Specifies the role for the CloudWatch Logs endpoint to assume to write to a user's log group. - */ - CloudWatchLogsRoleArn?: String; - /** - * Specifies the KMS key ID that encrypts the logs delivered by CloudTrail. The value is a fully specified ARN to a KMS key in the format: arn:aws:kms:us-east-1:123456789012:key/12345678-1234-1234-1234-123456789012 - */ - KmsKeyId?: String; - } - /** - * A string in YYYY-MM-DD format that represents the latest possible API version that can be used in this service. Specify 'latest' to use the latest possible version. - */ - export type apiVersion = "2013-11-01"|"latest"|string; - export interface ClientApiVersions { - /** - * A string in YYYY-MM-DD format that represents the latest possible API version that can be used in this service. Specify 'latest' to use the latest possible version. - */ - apiVersion?: apiVersion; - } - export type ClientConfiguration = ServiceConfigurationOptions & ClientApiVersions; - /** - * Contains interfaces for use with the CloudTrail client. - */ - export import Types = CloudTrail; -} -export = CloudTrail; diff --git a/workshops/monte-carlo-on-ec2-spot-fleet/src/web/node_modules/aws-sdk/clients/cloudtrail.js b/workshops/monte-carlo-on-ec2-spot-fleet/src/web/node_modules/aws-sdk/clients/cloudtrail.js deleted file mode 100644 index 3135c701..00000000 --- a/workshops/monte-carlo-on-ec2-spot-fleet/src/web/node_modules/aws-sdk/clients/cloudtrail.js +++ /dev/null @@ -1,18 +0,0 @@ -require('../lib/node_loader'); -var AWS = require('../lib/core'); -var Service = AWS.Service; -var apiLoader = AWS.apiLoader; - -apiLoader.services['cloudtrail'] = {}; -AWS.CloudTrail = Service.defineService('cloudtrail', ['2013-11-01']); -Object.defineProperty(apiLoader.services['cloudtrail'], '2013-11-01', { - get: function get() { - var model = require('../apis/cloudtrail-2013-11-01.min.json'); - model.paginators = require('../apis/cloudtrail-2013-11-01.paginators.json').pagination; - return model; - }, - enumerable: true, - configurable: true -}); - -module.exports = AWS.CloudTrail; diff --git a/workshops/monte-carlo-on-ec2-spot-fleet/src/web/node_modules/aws-sdk/clients/cloudwatch.d.ts b/workshops/monte-carlo-on-ec2-spot-fleet/src/web/node_modules/aws-sdk/clients/cloudwatch.d.ts deleted file mode 100644 index 91562471..00000000 --- a/workshops/monte-carlo-on-ec2-spot-fleet/src/web/node_modules/aws-sdk/clients/cloudwatch.d.ts +++ /dev/null @@ -1,851 +0,0 @@ -import {Request} from '../lib/request'; -import {Response} from '../lib/response'; -import {AWSError} from '../lib/error'; -import {Service} from '../lib/service'; -import {ServiceConfigurationOptions} from '../lib/service'; -import {ConfigBase as Config} from '../lib/config'; -interface Blob {} -declare class CloudWatch extends Service { - /** - * Constructs a service object. This object has one method for each API operation. - */ - constructor(options?: CloudWatch.Types.ClientConfiguration) - config: Config & CloudWatch.Types.ClientConfiguration; - /** - * Deletes the specified alarms. In the event of an error, no alarms are deleted. - */ - deleteAlarms(params: CloudWatch.Types.DeleteAlarmsInput, callback?: (err: AWSError, data: {}) => void): Request<{}, AWSError>; - /** - * Deletes the specified alarms. In the event of an error, no alarms are deleted. - */ - deleteAlarms(callback?: (err: AWSError, data: {}) => void): Request<{}, AWSError>; - /** - * Deletes all dashboards that you specify. You may specify up to 100 dashboards to delete. If there is an error during this call, no dashboards are deleted. - */ - deleteDashboards(params: CloudWatch.Types.DeleteDashboardsInput, callback?: (err: AWSError, data: CloudWatch.Types.DeleteDashboardsOutput) => void): Request; - /** - * Deletes all dashboards that you specify. You may specify up to 100 dashboards to delete. If there is an error during this call, no dashboards are deleted. - */ - deleteDashboards(callback?: (err: AWSError, data: CloudWatch.Types.DeleteDashboardsOutput) => void): Request; - /** - * Retrieves the history for the specified alarm. You can filter the results by date range or item type. If an alarm name is not specified, the histories for all alarms are returned. CloudWatch retains the history of an alarm even if you delete the alarm. - */ - describeAlarmHistory(params: CloudWatch.Types.DescribeAlarmHistoryInput, callback?: (err: AWSError, data: CloudWatch.Types.DescribeAlarmHistoryOutput) => void): Request; - /** - * Retrieves the history for the specified alarm. You can filter the results by date range or item type. If an alarm name is not specified, the histories for all alarms are returned. CloudWatch retains the history of an alarm even if you delete the alarm. - */ - describeAlarmHistory(callback?: (err: AWSError, data: CloudWatch.Types.DescribeAlarmHistoryOutput) => void): Request; - /** - * Retrieves the specified alarms. If no alarms are specified, all alarms are returned. Alarms can be retrieved by using only a prefix for the alarm name, the alarm state, or a prefix for any action. - */ - describeAlarms(params: CloudWatch.Types.DescribeAlarmsInput, callback?: (err: AWSError, data: CloudWatch.Types.DescribeAlarmsOutput) => void): Request; - /** - * Retrieves the specified alarms. If no alarms are specified, all alarms are returned. Alarms can be retrieved by using only a prefix for the alarm name, the alarm state, or a prefix for any action. - */ - describeAlarms(callback?: (err: AWSError, data: CloudWatch.Types.DescribeAlarmsOutput) => void): Request; - /** - * Retrieves the alarms for the specified metric. To filter the results, specify a statistic, period, or unit. - */ - describeAlarmsForMetric(params: CloudWatch.Types.DescribeAlarmsForMetricInput, callback?: (err: AWSError, data: CloudWatch.Types.DescribeAlarmsForMetricOutput) => void): Request; - /** - * Retrieves the alarms for the specified metric. To filter the results, specify a statistic, period, or unit. - */ - describeAlarmsForMetric(callback?: (err: AWSError, data: CloudWatch.Types.DescribeAlarmsForMetricOutput) => void): Request; - /** - * Disables the actions for the specified alarms. When an alarm's actions are disabled, the alarm actions do not execute when the alarm state changes. - */ - disableAlarmActions(params: CloudWatch.Types.DisableAlarmActionsInput, callback?: (err: AWSError, data: {}) => void): Request<{}, AWSError>; - /** - * Disables the actions for the specified alarms. When an alarm's actions are disabled, the alarm actions do not execute when the alarm state changes. - */ - disableAlarmActions(callback?: (err: AWSError, data: {}) => void): Request<{}, AWSError>; - /** - * Enables the actions for the specified alarms. - */ - enableAlarmActions(params: CloudWatch.Types.EnableAlarmActionsInput, callback?: (err: AWSError, data: {}) => void): Request<{}, AWSError>; - /** - * Enables the actions for the specified alarms. - */ - enableAlarmActions(callback?: (err: AWSError, data: {}) => void): Request<{}, AWSError>; - /** - * Displays the details of the dashboard that you specify. To copy an existing dashboard, use GetDashboard, and then use the data returned within DashboardBody as the template for the new dashboard when you call PutDashboard to create the copy. - */ - getDashboard(params: CloudWatch.Types.GetDashboardInput, callback?: (err: AWSError, data: CloudWatch.Types.GetDashboardOutput) => void): Request; - /** - * Displays the details of the dashboard that you specify. To copy an existing dashboard, use GetDashboard, and then use the data returned within DashboardBody as the template for the new dashboard when you call PutDashboard to create the copy. - */ - getDashboard(callback?: (err: AWSError, data: CloudWatch.Types.GetDashboardOutput) => void): Request; - /** - * Gets statistics for the specified metric. The maximum number of data points returned from a single call is 1,440. If you request more than 1,440 data points, CloudWatch returns an error. To reduce the number of data points, you can narrow the specified time range and make multiple requests across adjacent time ranges, or you can increase the specified period. Data points are not returned in chronological order. CloudWatch aggregates data points based on the length of the period that you specify. For example, if you request statistics with a one-hour period, CloudWatch aggregates all data points with time stamps that fall within each one-hour period. Therefore, the number of values aggregated by CloudWatch is larger than the number of data points returned. CloudWatch needs raw data points to calculate percentile statistics. If you publish data using a statistic set instead, you can only retrieve percentile statistics for this data if one of the following conditions is true: The SampleCount value of the statistic set is 1. The Min and the Max values of the statistic set are equal. Amazon CloudWatch retains metric data as follows: Data points with a period of less than 60 seconds are available for 3 hours. These data points are high-resolution metrics and are available only for custom metrics that have been defined with a StorageResolution of 1. Data points with a period of 60 seconds (1-minute) are available for 15 days. Data points with a period of 300 seconds (5-minute) are available for 63 days. Data points with a period of 3600 seconds (1 hour) are available for 455 days (15 months). Data points that are initially published with a shorter period are aggregated together for long-term storage. For example, if you collect data using a period of 1 minute, the data remains available for 15 days with 1-minute resolution. After 15 days, this data is still available, but is aggregated and retrievable only with a resolution of 5 minutes. After 63 days, the data is further aggregated and is available with a resolution of 1 hour. CloudWatch started retaining 5-minute and 1-hour metric data as of July 9, 2016. For information about metrics and dimensions supported by AWS services, see the Amazon CloudWatch Metrics and Dimensions Reference in the Amazon CloudWatch User Guide. - */ - getMetricStatistics(params: CloudWatch.Types.GetMetricStatisticsInput, callback?: (err: AWSError, data: CloudWatch.Types.GetMetricStatisticsOutput) => void): Request; - /** - * Gets statistics for the specified metric. The maximum number of data points returned from a single call is 1,440. If you request more than 1,440 data points, CloudWatch returns an error. To reduce the number of data points, you can narrow the specified time range and make multiple requests across adjacent time ranges, or you can increase the specified period. Data points are not returned in chronological order. CloudWatch aggregates data points based on the length of the period that you specify. For example, if you request statistics with a one-hour period, CloudWatch aggregates all data points with time stamps that fall within each one-hour period. Therefore, the number of values aggregated by CloudWatch is larger than the number of data points returned. CloudWatch needs raw data points to calculate percentile statistics. If you publish data using a statistic set instead, you can only retrieve percentile statistics for this data if one of the following conditions is true: The SampleCount value of the statistic set is 1. The Min and the Max values of the statistic set are equal. Amazon CloudWatch retains metric data as follows: Data points with a period of less than 60 seconds are available for 3 hours. These data points are high-resolution metrics and are available only for custom metrics that have been defined with a StorageResolution of 1. Data points with a period of 60 seconds (1-minute) are available for 15 days. Data points with a period of 300 seconds (5-minute) are available for 63 days. Data points with a period of 3600 seconds (1 hour) are available for 455 days (15 months). Data points that are initially published with a shorter period are aggregated together for long-term storage. For example, if you collect data using a period of 1 minute, the data remains available for 15 days with 1-minute resolution. After 15 days, this data is still available, but is aggregated and retrievable only with a resolution of 5 minutes. After 63 days, the data is further aggregated and is available with a resolution of 1 hour. CloudWatch started retaining 5-minute and 1-hour metric data as of July 9, 2016. For information about metrics and dimensions supported by AWS services, see the Amazon CloudWatch Metrics and Dimensions Reference in the Amazon CloudWatch User Guide. - */ - getMetricStatistics(callback?: (err: AWSError, data: CloudWatch.Types.GetMetricStatisticsOutput) => void): Request; - /** - * Returns a list of the dashboards for your account. If you include DashboardNamePrefix, only those dashboards with names starting with the prefix are listed. Otherwise, all dashboards in your account are listed. - */ - listDashboards(params: CloudWatch.Types.ListDashboardsInput, callback?: (err: AWSError, data: CloudWatch.Types.ListDashboardsOutput) => void): Request; - /** - * Returns a list of the dashboards for your account. If you include DashboardNamePrefix, only those dashboards with names starting with the prefix are listed. Otherwise, all dashboards in your account are listed. - */ - listDashboards(callback?: (err: AWSError, data: CloudWatch.Types.ListDashboardsOutput) => void): Request; - /** - * List the specified metrics. You can use the returned metrics with GetMetricStatistics to obtain statistical data. Up to 500 results are returned for any one call. To retrieve additional results, use the returned token with subsequent calls. After you create a metric, allow up to fifteen minutes before the metric appears. Statistics about the metric, however, are available sooner using GetMetricStatistics. - */ - listMetrics(params: CloudWatch.Types.ListMetricsInput, callback?: (err: AWSError, data: CloudWatch.Types.ListMetricsOutput) => void): Request; - /** - * List the specified metrics. You can use the returned metrics with GetMetricStatistics to obtain statistical data. Up to 500 results are returned for any one call. To retrieve additional results, use the returned token with subsequent calls. After you create a metric, allow up to fifteen minutes before the metric appears. Statistics about the metric, however, are available sooner using GetMetricStatistics. - */ - listMetrics(callback?: (err: AWSError, data: CloudWatch.Types.ListMetricsOutput) => void): Request; - /** - * Creates a dashboard if it does not already exist, or updates an existing dashboard. If you update a dashboard, the entire contents are replaced with what you specify here. You can have up to 500 dashboards per account. All dashboards in your account are global, not region-specific. A simple way to create a dashboard using PutDashboard is to copy an existing dashboard. To copy an existing dashboard using the console, you can load the dashboard and then use the View/edit source command in the Actions menu to display the JSON block for that dashboard. Another way to copy a dashboard is to use GetDashboard, and then use the data returned within DashboardBody as the template for the new dashboard when you call PutDashboard. When you create a dashboard with PutDashboard, a good practice is to add a text widget at the top of the dashboard with a message that the dashboard was created by script and should not be changed in the console. This message could also point console users to the location of the DashboardBody script or the CloudFormation template used to create the dashboard. - */ - putDashboard(params: CloudWatch.Types.PutDashboardInput, callback?: (err: AWSError, data: CloudWatch.Types.PutDashboardOutput) => void): Request; - /** - * Creates a dashboard if it does not already exist, or updates an existing dashboard. If you update a dashboard, the entire contents are replaced with what you specify here. You can have up to 500 dashboards per account. All dashboards in your account are global, not region-specific. A simple way to create a dashboard using PutDashboard is to copy an existing dashboard. To copy an existing dashboard using the console, you can load the dashboard and then use the View/edit source command in the Actions menu to display the JSON block for that dashboard. Another way to copy a dashboard is to use GetDashboard, and then use the data returned within DashboardBody as the template for the new dashboard when you call PutDashboard. When you create a dashboard with PutDashboard, a good practice is to add a text widget at the top of the dashboard with a message that the dashboard was created by script and should not be changed in the console. This message could also point console users to the location of the DashboardBody script or the CloudFormation template used to create the dashboard. - */ - putDashboard(callback?: (err: AWSError, data: CloudWatch.Types.PutDashboardOutput) => void): Request; - /** - * Creates or updates an alarm and associates it with the specified metric. Optionally, this operation can associate one or more Amazon SNS resources with the alarm. When this operation creates an alarm, the alarm state is immediately set to INSUFFICIENT_DATA. The alarm is evaluated and its state is set appropriately. Any actions associated with the state are then executed. When you update an existing alarm, its state is left unchanged, but the update completely overwrites the previous configuration of the alarm. If you are an IAM user, you must have Amazon EC2 permissions for some operations: ec2:DescribeInstanceStatus and ec2:DescribeInstances for all alarms on EC2 instance status metrics ec2:StopInstances for alarms with stop actions ec2:TerminateInstances for alarms with terminate actions ec2:DescribeInstanceRecoveryAttribute and ec2:RecoverInstances for alarms with recover actions If you have read/write permissions for Amazon CloudWatch but not for Amazon EC2, you can still create an alarm, but the stop or terminate actions are not performed. However, if you are later granted the required permissions, the alarm actions that you created earlier are performed. If you are using an IAM role (for example, an EC2 instance profile), you cannot stop or terminate the instance using alarm actions. However, you can still see the alarm state and perform any other actions such as Amazon SNS notifications or Auto Scaling policies. If you are using temporary security credentials granted using AWS STS, you cannot stop or terminate an EC2 instance using alarm actions. You must create at least one stop, terminate, or reboot alarm using either the Amazon EC2 or CloudWatch consoles to create the EC2ActionsAccess IAM role. After this IAM role is created, you can create stop, terminate, or reboot alarms using a command-line interface or API. - */ - putMetricAlarm(params: CloudWatch.Types.PutMetricAlarmInput, callback?: (err: AWSError, data: {}) => void): Request<{}, AWSError>; - /** - * Creates or updates an alarm and associates it with the specified metric. Optionally, this operation can associate one or more Amazon SNS resources with the alarm. When this operation creates an alarm, the alarm state is immediately set to INSUFFICIENT_DATA. The alarm is evaluated and its state is set appropriately. Any actions associated with the state are then executed. When you update an existing alarm, its state is left unchanged, but the update completely overwrites the previous configuration of the alarm. If you are an IAM user, you must have Amazon EC2 permissions for some operations: ec2:DescribeInstanceStatus and ec2:DescribeInstances for all alarms on EC2 instance status metrics ec2:StopInstances for alarms with stop actions ec2:TerminateInstances for alarms with terminate actions ec2:DescribeInstanceRecoveryAttribute and ec2:RecoverInstances for alarms with recover actions If you have read/write permissions for Amazon CloudWatch but not for Amazon EC2, you can still create an alarm, but the stop or terminate actions are not performed. However, if you are later granted the required permissions, the alarm actions that you created earlier are performed. If you are using an IAM role (for example, an EC2 instance profile), you cannot stop or terminate the instance using alarm actions. However, you can still see the alarm state and perform any other actions such as Amazon SNS notifications or Auto Scaling policies. If you are using temporary security credentials granted using AWS STS, you cannot stop or terminate an EC2 instance using alarm actions. You must create at least one stop, terminate, or reboot alarm using either the Amazon EC2 or CloudWatch consoles to create the EC2ActionsAccess IAM role. After this IAM role is created, you can create stop, terminate, or reboot alarms using a command-line interface or API. - */ - putMetricAlarm(callback?: (err: AWSError, data: {}) => void): Request<{}, AWSError>; - /** - * Publishes metric data points to Amazon CloudWatch. CloudWatch associates the data points with the specified metric. If the specified metric does not exist, CloudWatch creates the metric. When CloudWatch creates a metric, it can take up to fifteen minutes for the metric to appear in calls to ListMetrics. Each PutMetricData request is limited to 40 KB in size for HTTP POST requests. Although the Value parameter accepts numbers of type Double, CloudWatch rejects values that are either too small or too large. Values must be in the range of 8.515920e-109 to 1.174271e+108 (Base 10) or 2e-360 to 2e360 (Base 2). In addition, special values (for example, NaN, +Infinity, -Infinity) are not supported. You can use up to 10 dimensions per metric to further clarify what data the metric collects. For more information about specifying dimensions, see Publishing Metrics in the Amazon CloudWatch User Guide. Data points with time stamps from 24 hours ago or longer can take at least 48 hours to become available for GetMetricStatistics from the time they are submitted. CloudWatch needs raw data points to calculate percentile statistics. If you publish data using a statistic set instead, you can only retrieve percentile statistics for this data if one of the following conditions is true: The SampleCount value of the statistic set is 1 The Min and the Max values of the statistic set are equal - */ - putMetricData(params: CloudWatch.Types.PutMetricDataInput, callback?: (err: AWSError, data: {}) => void): Request<{}, AWSError>; - /** - * Publishes metric data points to Amazon CloudWatch. CloudWatch associates the data points with the specified metric. If the specified metric does not exist, CloudWatch creates the metric. When CloudWatch creates a metric, it can take up to fifteen minutes for the metric to appear in calls to ListMetrics. Each PutMetricData request is limited to 40 KB in size for HTTP POST requests. Although the Value parameter accepts numbers of type Double, CloudWatch rejects values that are either too small or too large. Values must be in the range of 8.515920e-109 to 1.174271e+108 (Base 10) or 2e-360 to 2e360 (Base 2). In addition, special values (for example, NaN, +Infinity, -Infinity) are not supported. You can use up to 10 dimensions per metric to further clarify what data the metric collects. For more information about specifying dimensions, see Publishing Metrics in the Amazon CloudWatch User Guide. Data points with time stamps from 24 hours ago or longer can take at least 48 hours to become available for GetMetricStatistics from the time they are submitted. CloudWatch needs raw data points to calculate percentile statistics. If you publish data using a statistic set instead, you can only retrieve percentile statistics for this data if one of the following conditions is true: The SampleCount value of the statistic set is 1 The Min and the Max values of the statistic set are equal - */ - putMetricData(callback?: (err: AWSError, data: {}) => void): Request<{}, AWSError>; - /** - * Temporarily sets the state of an alarm for testing purposes. When the updated state differs from the previous value, the action configured for the appropriate state is invoked. For example, if your alarm is configured to send an Amazon SNS message when an alarm is triggered, temporarily changing the alarm state to ALARM sends an SNS message. The alarm returns to its actual state (often within seconds). Because the alarm state change happens quickly, it is typically only visible in the alarm's History tab in the Amazon CloudWatch console or through DescribeAlarmHistory. - */ - setAlarmState(params: CloudWatch.Types.SetAlarmStateInput, callback?: (err: AWSError, data: {}) => void): Request<{}, AWSError>; - /** - * Temporarily sets the state of an alarm for testing purposes. When the updated state differs from the previous value, the action configured for the appropriate state is invoked. For example, if your alarm is configured to send an Amazon SNS message when an alarm is triggered, temporarily changing the alarm state to ALARM sends an SNS message. The alarm returns to its actual state (often within seconds). Because the alarm state change happens quickly, it is typically only visible in the alarm's History tab in the Amazon CloudWatch console or through DescribeAlarmHistory. - */ - setAlarmState(callback?: (err: AWSError, data: {}) => void): Request<{}, AWSError>; - /** - * Waits for the alarmExists state by periodically calling the underlying CloudWatch.describeAlarmsoperation every 5 seconds (at most 40 times). - */ - waitFor(state: "alarmExists", params: CloudWatch.Types.DescribeAlarmsInput, callback?: (err: AWSError, data: CloudWatch.Types.DescribeAlarmsOutput) => void): Request; - /** - * Waits for the alarmExists state by periodically calling the underlying CloudWatch.describeAlarmsoperation every 5 seconds (at most 40 times). - */ - waitFor(state: "alarmExists", callback?: (err: AWSError, data: CloudWatch.Types.DescribeAlarmsOutput) => void): Request; -} -declare namespace CloudWatch { - export type ActionPrefix = string; - export type ActionsEnabled = boolean; - export type AlarmArn = string; - export type AlarmDescription = string; - export interface AlarmHistoryItem { - /** - * The descriptive name for the alarm. - */ - AlarmName?: AlarmName; - /** - * The time stamp for the alarm history item. - */ - Timestamp?: Timestamp; - /** - * The type of alarm history item. - */ - HistoryItemType?: HistoryItemType; - /** - * A summary of the alarm history, in text format. - */ - HistorySummary?: HistorySummary; - /** - * Data about the alarm, in JSON format. - */ - HistoryData?: HistoryData; - } - export type AlarmHistoryItems = AlarmHistoryItem[]; - export type AlarmName = string; - export type AlarmNamePrefix = string; - export type AlarmNames = AlarmName[]; - export type AwsQueryErrorMessage = string; - export type ComparisonOperator = "GreaterThanOrEqualToThreshold"|"GreaterThanThreshold"|"LessThanThreshold"|"LessThanOrEqualToThreshold"|string; - export type DashboardArn = string; - export type DashboardBody = string; - export type DashboardEntries = DashboardEntry[]; - export interface DashboardEntry { - /** - * The name of the dashboard. - */ - DashboardName?: DashboardName; - /** - * The Amazon Resource Name (ARN) of the dashboard. - */ - DashboardArn?: DashboardArn; - /** - * The time stamp of when the dashboard was last modified, either by an API call or through the console. This number is expressed as the number of milliseconds since Jan 1, 1970 00:00:00 UTC. - */ - LastModified?: LastModified; - /** - * The size of the dashboard, in bytes. - */ - Size?: Size; - } - export type DashboardErrorMessage = string; - export type DashboardName = string; - export type DashboardNamePrefix = string; - export type DashboardNames = DashboardName[]; - export interface DashboardValidationMessage { - /** - * The data path related to the message. - */ - DataPath?: DataPath; - /** - * A message describing the error or warning. - */ - Message?: Message; - } - export type DashboardValidationMessages = DashboardValidationMessage[]; - export type DataPath = string; - export interface Datapoint { - /** - * The time stamp used for the data point. - */ - Timestamp?: Timestamp; - /** - * The number of metric values that contributed to the aggregate value of this data point. - */ - SampleCount?: DatapointValue; - /** - * The average of the metric values that correspond to the data point. - */ - Average?: DatapointValue; - /** - * The sum of the metric values for the data point. - */ - Sum?: DatapointValue; - /** - * The minimum metric value for the data point. - */ - Minimum?: DatapointValue; - /** - * The maximum metric value for the data point. - */ - Maximum?: DatapointValue; - /** - * The standard unit for the data point. - */ - Unit?: StandardUnit; - /** - * The percentile statistic for the data point. - */ - ExtendedStatistics?: DatapointValueMap; - } - export type DatapointValue = number; - export type DatapointValueMap = {[key: string]: DatapointValue}; - export type Datapoints = Datapoint[]; - export interface DeleteAlarmsInput { - /** - * The alarms to be deleted. - */ - AlarmNames: AlarmNames; - } - export interface DeleteDashboardsInput { - /** - * The dashboards to be deleted. - */ - DashboardNames?: DashboardNames; - } - export interface DeleteDashboardsOutput { - } - export interface DescribeAlarmHistoryInput { - /** - * The name of the alarm. - */ - AlarmName?: AlarmName; - /** - * The type of alarm histories to retrieve. - */ - HistoryItemType?: HistoryItemType; - /** - * The starting date to retrieve alarm history. - */ - StartDate?: Timestamp; - /** - * The ending date to retrieve alarm history. - */ - EndDate?: Timestamp; - /** - * The maximum number of alarm history records to retrieve. - */ - MaxRecords?: MaxRecords; - /** - * The token returned by a previous call to indicate that there is more data available. - */ - NextToken?: NextToken; - } - export interface DescribeAlarmHistoryOutput { - /** - * The alarm histories, in JSON format. - */ - AlarmHistoryItems?: AlarmHistoryItems; - /** - * The token that marks the start of the next batch of returned results. - */ - NextToken?: NextToken; - } - export interface DescribeAlarmsForMetricInput { - /** - * The name of the metric. - */ - MetricName: MetricName; - /** - * The namespace of the metric. - */ - Namespace: Namespace; - /** - * The statistic for the metric, other than percentiles. For percentile statistics, use ExtendedStatistics. - */ - Statistic?: Statistic; - /** - * The percentile statistic for the metric. Specify a value between p0.0 and p100. - */ - ExtendedStatistic?: ExtendedStatistic; - /** - * The dimensions associated with the metric. If the metric has any associated dimensions, you must specify them in order for the call to succeed. - */ - Dimensions?: Dimensions; - /** - * The period, in seconds, over which the statistic is applied. - */ - Period?: Period; - /** - * The unit for the metric. - */ - Unit?: StandardUnit; - } - export interface DescribeAlarmsForMetricOutput { - /** - * The information for each alarm with the specified metric. - */ - MetricAlarms?: MetricAlarms; - } - export interface DescribeAlarmsInput { - /** - * The names of the alarms. - */ - AlarmNames?: AlarmNames; - /** - * The alarm name prefix. If this parameter is specified, you cannot specify AlarmNames. - */ - AlarmNamePrefix?: AlarmNamePrefix; - /** - * The state value to be used in matching alarms. - */ - StateValue?: StateValue; - /** - * The action name prefix. - */ - ActionPrefix?: ActionPrefix; - /** - * The maximum number of alarm descriptions to retrieve. - */ - MaxRecords?: MaxRecords; - /** - * The token returned by a previous call to indicate that there is more data available. - */ - NextToken?: NextToken; - } - export interface DescribeAlarmsOutput { - /** - * The information for the specified alarms. - */ - MetricAlarms?: MetricAlarms; - /** - * The token that marks the start of the next batch of returned results. - */ - NextToken?: NextToken; - } - export interface Dimension { - /** - * The name of the dimension. - */ - Name: DimensionName; - /** - * The value representing the dimension measurement. - */ - Value: DimensionValue; - } - export interface DimensionFilter { - /** - * The dimension name to be matched. - */ - Name: DimensionName; - /** - * The value of the dimension to be matched. - */ - Value?: DimensionValue; - } - export type DimensionFilters = DimensionFilter[]; - export type DimensionName = string; - export type DimensionValue = string; - export type Dimensions = Dimension[]; - export interface DisableAlarmActionsInput { - /** - * The names of the alarms. - */ - AlarmNames: AlarmNames; - } - export interface EnableAlarmActionsInput { - /** - * The names of the alarms. - */ - AlarmNames: AlarmNames; - } - export type ErrorMessage = string; - export type EvaluateLowSampleCountPercentile = string; - export type EvaluationPeriods = number; - export type ExtendedStatistic = string; - export type ExtendedStatistics = ExtendedStatistic[]; - export type FaultDescription = string; - export interface GetDashboardInput { - /** - * The name of the dashboard to be described. - */ - DashboardName?: DashboardName; - } - export interface GetDashboardOutput { - /** - * The Amazon Resource Name (ARN) of the dashboard. - */ - DashboardArn?: DashboardArn; - /** - * The detailed information about the dashboard, including what widgets are included and their location on the dashboard. For more information about the DashboardBody syntax, see CloudWatch-Dashboard-Body-Structure. - */ - DashboardBody?: DashboardBody; - /** - * The name of the dashboard. - */ - DashboardName?: DashboardName; - } - export interface GetMetricStatisticsInput { - /** - * The namespace of the metric, with or without spaces. - */ - Namespace: Namespace; - /** - * The name of the metric, with or without spaces. - */ - MetricName: MetricName; - /** - * The dimensions. If the metric contains multiple dimensions, you must include a value for each dimension. CloudWatch treats each unique combination of dimensions as a separate metric. If a specific combination of dimensions was not published, you can't retrieve statistics for it. You must specify the same dimensions that were used when the metrics were created. For an example, see Dimension Combinations in the Amazon CloudWatch User Guide. For more information about specifying dimensions, see Publishing Metrics in the Amazon CloudWatch User Guide. - */ - Dimensions?: Dimensions; - /** - * The time stamp that determines the first data point to return. Start times are evaluated relative to the time that CloudWatch receives the request. The value specified is inclusive; results include data points with the specified time stamp. The time stamp must be in ISO 8601 UTC format (for example, 2016-10-03T23:00:00Z). CloudWatch rounds the specified time stamp as follows: Start time less than 15 days ago - Round down to the nearest whole minute. For example, 12:32:34 is rounded down to 12:32:00. Start time between 15 and 63 days ago - Round down to the nearest 5-minute clock interval. For example, 12:32:34 is rounded down to 12:30:00. Start time greater than 63 days ago - Round down to the nearest 1-hour clock interval. For example, 12:32:34 is rounded down to 12:00:00. If you set Period to 5, 10, or 30, the start time of your request is rounded down to the nearest time that corresponds to even 5-, 10-, or 30-second divisions of a minute. For example, if you make a query at (HH:mm:ss) 01:05:23 for the previous 10-second period, the start time of your request is rounded down and you receive data from 01:05:10 to 01:05:20. If you make a query at 15:07:17 for the previous 5 minutes of data, using a period of 5 seconds, you receive data timestamped between 15:02:15 and 15:07:15. - */ - StartTime: Timestamp; - /** - * The time stamp that determines the last data point to return. The value specified is exclusive; results include data points up to the specified time stamp. The time stamp must be in ISO 8601 UTC format (for example, 2016-10-10T23:00:00Z). - */ - EndTime: Timestamp; - /** - * The granularity, in seconds, of the returned data points. For metrics with regular resolution, a period can be as short as one minute (60 seconds) and must be a multiple of 60. For high-resolution metrics that are collected at intervals of less than one minute, the period can be 1, 5, 10, 30, 60, or any multiple of 60. High-resolution metrics are those metrics stored by a PutMetricData call that includes a StorageResolution of 1 second. If the StartTime parameter specifies a time stamp that is greater than 3 hours ago, you must specify the period as follows or no data points in that time range is returned: Start time between 3 hours and 15 days ago - Use a multiple of 60 seconds (1 minute). Start time between 15 and 63 days ago - Use a multiple of 300 seconds (5 minutes). Start time greater than 63 days ago - Use a multiple of 3600 seconds (1 hour). - */ - Period: Period; - /** - * The metric statistics, other than percentile. For percentile statistics, use ExtendedStatistics. When calling GetMetricStatistics, you must specify either Statistics or ExtendedStatistics, but not both. - */ - Statistics?: Statistics; - /** - * The percentile statistics. Specify values between p0.0 and p100. When calling GetMetricStatistics, you must specify either Statistics or ExtendedStatistics, but not both. - */ - ExtendedStatistics?: ExtendedStatistics; - /** - * The unit for a given metric. Metrics may be reported in multiple units. Not supplying a unit results in all units being returned. If the metric only ever reports one unit, specifying a unit has no effect. - */ - Unit?: StandardUnit; - } - export interface GetMetricStatisticsOutput { - /** - * A label for the specified metric. - */ - Label?: MetricLabel; - /** - * The data points for the specified metric. - */ - Datapoints?: Datapoints; - } - export type HistoryData = string; - export type HistoryItemType = "ConfigurationUpdate"|"StateUpdate"|"Action"|string; - export type HistorySummary = string; - export type LastModified = Date; - export interface ListDashboardsInput { - /** - * If you specify this parameter, only the dashboards with names starting with the specified string are listed. The maximum length is 255, and valid characters are A-Z, a-z, 0-9, ".", "-", and "_". - */ - DashboardNamePrefix?: DashboardNamePrefix; - /** - * The token returned by a previous call to indicate that there is more data available. - */ - NextToken?: NextToken; - } - export interface ListDashboardsOutput { - /** - * The list of matching dashboards. - */ - DashboardEntries?: DashboardEntries; - /** - * The token that marks the start of the next batch of returned results. - */ - NextToken?: NextToken; - } - export interface ListMetricsInput { - /** - * The namespace to filter against. - */ - Namespace?: Namespace; - /** - * The name of the metric to filter against. - */ - MetricName?: MetricName; - /** - * The dimensions to filter against. - */ - Dimensions?: DimensionFilters; - /** - * The token returned by a previous call to indicate that there is more data available. - */ - NextToken?: NextToken; - } - export interface ListMetricsOutput { - /** - * The metrics. - */ - Metrics?: Metrics; - /** - * The token that marks the start of the next batch of returned results. - */ - NextToken?: NextToken; - } - export type MaxRecords = number; - export type Message = string; - export interface Metric { - /** - * The namespace of the metric. - */ - Namespace?: Namespace; - /** - * The name of the metric. - */ - MetricName?: MetricName; - /** - * The dimensions for the metric. - */ - Dimensions?: Dimensions; - } - export interface MetricAlarm { - /** - * The name of the alarm. - */ - AlarmName?: AlarmName; - /** - * The Amazon Resource Name (ARN) of the alarm. - */ - AlarmArn?: AlarmArn; - /** - * The description of the alarm. - */ - AlarmDescription?: AlarmDescription; - /** - * The time stamp of the last update to the alarm configuration. - */ - AlarmConfigurationUpdatedTimestamp?: Timestamp; - /** - * Indicates whether actions should be executed during any changes to the alarm state. - */ - ActionsEnabled?: ActionsEnabled; - /** - * The actions to execute when this alarm transitions to the OK state from any other state. Each action is specified as an Amazon Resource Name (ARN). - */ - OKActions?: ResourceList; - /** - * The actions to execute when this alarm transitions to the ALARM state from any other state. Each action is specified as an Amazon Resource Name (ARN). - */ - AlarmActions?: ResourceList; - /** - * The actions to execute when this alarm transitions to the INSUFFICIENT_DATA state from any other state. Each action is specified as an Amazon Resource Name (ARN). - */ - InsufficientDataActions?: ResourceList; - /** - * The state value for the alarm. - */ - StateValue?: StateValue; - /** - * An explanation for the alarm state, in text format. - */ - StateReason?: StateReason; - /** - * An explanation for the alarm state, in JSON format. - */ - StateReasonData?: StateReasonData; - /** - * The time stamp of the last update to the alarm state. - */ - StateUpdatedTimestamp?: Timestamp; - /** - * The name of the metric associated with the alarm. - */ - MetricName?: MetricName; - /** - * The namespace of the metric associated with the alarm. - */ - Namespace?: Namespace; - /** - * The statistic for the metric associated with the alarm, other than percentile. For percentile statistics, use ExtendedStatistic. - */ - Statistic?: Statistic; - /** - * The percentile statistic for the metric associated with the alarm. Specify a value between p0.0 and p100. - */ - ExtendedStatistic?: ExtendedStatistic; - /** - * The dimensions for the metric associated with the alarm. - */ - Dimensions?: Dimensions; - /** - * The period, in seconds, over which the statistic is applied. - */ - Period?: Period; - /** - * The unit of the metric associated with the alarm. - */ - Unit?: StandardUnit; - /** - * The number of periods over which data is compared to the specified threshold. - */ - EvaluationPeriods?: EvaluationPeriods; - /** - * The value to compare with the specified statistic. - */ - Threshold?: Threshold; - /** - * The arithmetic operation to use when comparing the specified statistic and threshold. The specified statistic value is used as the first operand. - */ - ComparisonOperator?: ComparisonOperator; - /** - * Sets how this alarm is to handle missing data points. If this parameter is omitted, the default behavior of missing is used. - */ - TreatMissingData?: TreatMissingData; - /** - * Used only for alarms based on percentiles. If ignore, the alarm state does not change during periods with too few data points to be statistically significant. If evaluate or this parameter is not used, the alarm is always evaluated and possibly changes state no matter how many data points are available. - */ - EvaluateLowSampleCountPercentile?: EvaluateLowSampleCountPercentile; - } - export type MetricAlarms = MetricAlarm[]; - export type MetricData = MetricDatum[]; - export interface MetricDatum { - /** - * The name of the metric. - */ - MetricName: MetricName; - /** - * The dimensions associated with the metric. - */ - Dimensions?: Dimensions; - /** - * The time the metric data was received, expressed as the number of milliseconds since Jan 1, 1970 00:00:00 UTC. - */ - Timestamp?: Timestamp; - /** - * The value for the metric. Although the parameter accepts numbers of type Double, CloudWatch rejects values that are either too small or too large. Values must be in the range of 8.515920e-109 to 1.174271e+108 (Base 10) or 2e-360 to 2e360 (Base 2). In addition, special values (for example, NaN, +Infinity, -Infinity) are not supported. - */ - Value?: DatapointValue; - /** - * The statistical values for the metric. - */ - StatisticValues?: StatisticSet; - /** - * The unit of the metric. - */ - Unit?: StandardUnit; - /** - * Valid values are 1 and 60. Setting this to 1 specifies this metric as a high-resolution metric, so that CloudWatch stores the metric with sub-minute resolution down to one second. Setting this to 60 specifies this metric as a regular-resolution metric, which CloudWatch stores at 1-minute resolution. Currently, high resolution is available only for custom metrics. For more information about high-resolution metrics, see High-Resolution Metrics in the Amazon CloudWatch User Guide. This field is optional, if you do not specify it the default of 60 is used. - */ - StorageResolution?: StorageResolution; - } - export type MetricLabel = string; - export type MetricName = string; - export type Metrics = Metric[]; - export type Namespace = string; - export type NextToken = string; - export type Period = number; - export interface PutDashboardInput { - /** - * The name of the dashboard. If a dashboard with this name already exists, this call modifies that dashboard, replacing its current contents. Otherwise, a new dashboard is created. The maximum length is 255, and valid characters are A-Z, a-z, 0-9, "-", and "_". - */ - DashboardName?: DashboardName; - /** - * The detailed information about the dashboard in JSON format, including the widgets to include and their location on the dashboard. For more information about the syntax, see CloudWatch-Dashboard-Body-Structure. - */ - DashboardBody?: DashboardBody; - } - export interface PutDashboardOutput { - /** - * If the input for PutDashboard was correct and the dashboard was successfully created or modified, this result is empty. If this result includes only warning messages, then the input was valid enough for the dashboard to be created or modified, but some elements of the dashboard may not render. If this result includes error messages, the input was not valid and the operation failed. - */ - DashboardValidationMessages?: DashboardValidationMessages; - } - export interface PutMetricAlarmInput { - /** - * The name for the alarm. This name must be unique within the AWS account. - */ - AlarmName: AlarmName; - /** - * The description for the alarm. - */ - AlarmDescription?: AlarmDescription; - /** - * Indicates whether actions should be executed during any changes to the alarm state. - */ - ActionsEnabled?: ActionsEnabled; - /** - * The actions to execute when this alarm transitions to an OK state from any other state. Each action is specified as an Amazon Resource Name (ARN). Valid Values: arn:aws:automate:region:ec2:stop | arn:aws:automate:region:ec2:terminate | arn:aws:automate:region:ec2:recover Valid Values (for use with IAM roles): arn:aws:swf:us-east-1:{customer-account}:action/actions/AWS_EC2.InstanceId.Stop/1.0 | arn:aws:swf:us-east-1:{customer-account}:action/actions/AWS_EC2.InstanceId.Terminate/1.0 | arn:aws:swf:us-east-1:{customer-account}:action/actions/AWS_EC2.InstanceId.Reboot/1.0 - */ - OKActions?: ResourceList; - /** - * The actions to execute when this alarm transitions to the ALARM state from any other state. Each action is specified as an Amazon Resource Name (ARN). Valid Values: arn:aws:automate:region:ec2:stop | arn:aws:automate:region:ec2:terminate | arn:aws:automate:region:ec2:recover Valid Values (for use with IAM roles): arn:aws:swf:us-east-1:{customer-account}:action/actions/AWS_EC2.InstanceId.Stop/1.0 | arn:aws:swf:us-east-1:{customer-account}:action/actions/AWS_EC2.InstanceId.Terminate/1.0 | arn:aws:swf:us-east-1:{customer-account}:action/actions/AWS_EC2.InstanceId.Reboot/1.0 - */ - AlarmActions?: ResourceList; - /** - * The actions to execute when this alarm transitions to the INSUFFICIENT_DATA state from any other state. Each action is specified as an Amazon Resource Name (ARN). Valid Values: arn:aws:automate:region:ec2:stop | arn:aws:automate:region:ec2:terminate | arn:aws:automate:region:ec2:recover Valid Values (for use with IAM roles): arn:aws:swf:us-east-1:{customer-account}:action/actions/AWS_EC2.InstanceId.Stop/1.0 | arn:aws:swf:us-east-1:{customer-account}:action/actions/AWS_EC2.InstanceId.Terminate/1.0 | arn:aws:swf:us-east-1:{customer-account}:action/actions/AWS_EC2.InstanceId.Reboot/1.0 - */ - InsufficientDataActions?: ResourceList; - /** - * The name for the metric associated with the alarm. - */ - MetricName: MetricName; - /** - * The namespace for the metric associated with the alarm. - */ - Namespace: Namespace; - /** - * The statistic for the metric associated with the alarm, other than percentile. For percentile statistics, use ExtendedStatistic. - */ - Statistic?: Statistic; - /** - * The percentile statistic for the metric associated with the alarm. Specify a value between p0.0 and p100. - */ - ExtendedStatistic?: ExtendedStatistic; - /** - * The dimensions for the metric associated with the alarm. - */ - Dimensions?: Dimensions; - /** - * The period, in seconds, over which the specified statistic is applied. Valid values are 10, 30, and any multiple of 60. Be sure to specify 10 or 30 only for metrics that are stored by a PutMetricData call with a StorageResolution of 1. If you specify a Period of 10 or 30 for a metric that does not have sub-minute resolution, the alarm still attempts to gather data at the period rate that you specify. In this case, it does not receive data for the attempts that do not correspond to a one-minute data resolution, and the alarm may often lapse into INSUFFICENT_DATA status. Specifying 10 or 30 also sets this alarm as a high-resolution alarm, which has a higher charge than other alarms. For more information about pricing, see Amazon CloudWatch Pricing. An alarm's total current evaluation period can be no longer than one day, so Period multiplied by EvaluationPeriods cannot be more than 86,400 seconds. - */ - Period: Period; - /** - * The unit of measure for the statistic. For example, the units for the Amazon EC2 NetworkIn metric are Bytes because NetworkIn tracks the number of bytes that an instance receives on all network interfaces. You can also specify a unit when you create a custom metric. Units help provide conceptual meaning to your data. Metric data points that specify a unit of measure, such as Percent, are aggregated separately. If you specify a unit, you must use a unit that is appropriate for the metric. Otherwise, the CloudWatch alarm can get stuck in the INSUFFICIENT DATA state. - */ - Unit?: StandardUnit; - /** - * The number of periods over which data is compared to the specified threshold. An alarm's total current evaluation period can be no longer than one day, so this number multiplied by Period cannot be more than 86,400 seconds. - */ - EvaluationPeriods: EvaluationPeriods; - /** - * The value against which the specified statistic is compared. - */ - Threshold: Threshold; - /** - * The arithmetic operation to use when comparing the specified statistic and threshold. The specified statistic value is used as the first operand. - */ - ComparisonOperator: ComparisonOperator; - /** - * Sets how this alarm is to handle missing data points. If TreatMissingData is omitted, the default behavior of missing is used. For more information, see Configuring How CloudWatch Alarms Treats Missing Data. Valid Values: breaching | notBreaching | ignore | missing - */ - TreatMissingData?: TreatMissingData; - /** - * Used only for alarms based on percentiles. If you specify ignore, the alarm state does not change during periods with too few data points to be statistically significant. If you specify evaluate or omit this parameter, the alarm is always evaluated and possibly changes state no matter how many data points are available. For more information, see Percentile-Based CloudWatch Alarms and Low Data Samples. Valid Values: evaluate | ignore - */ - EvaluateLowSampleCountPercentile?: EvaluateLowSampleCountPercentile; - } - export interface PutMetricDataInput { - /** - * The namespace for the metric data. You cannot specify a namespace that begins with "AWS/". Namespaces that begin with "AWS/" are reserved for use by Amazon Web Services products. - */ - Namespace: Namespace; - /** - * The data for the metric. - */ - MetricData: MetricData; - } - export type ResourceList = ResourceName[]; - export type ResourceName = string; - export interface SetAlarmStateInput { - /** - * The name for the alarm. This name must be unique within the AWS account. The maximum length is 255 characters. - */ - AlarmName: AlarmName; - /** - * The value of the state. - */ - StateValue: StateValue; - /** - * The reason that this alarm is set to this specific state, in text format. - */ - StateReason: StateReason; - /** - * The reason that this alarm is set to this specific state, in JSON format. - */ - StateReasonData?: StateReasonData; - } - export type Size = number; - export type StandardUnit = "Seconds"|"Microseconds"|"Milliseconds"|"Bytes"|"Kilobytes"|"Megabytes"|"Gigabytes"|"Terabytes"|"Bits"|"Kilobits"|"Megabits"|"Gigabits"|"Terabits"|"Percent"|"Count"|"Bytes/Second"|"Kilobytes/Second"|"Megabytes/Second"|"Gigabytes/Second"|"Terabytes/Second"|"Bits/Second"|"Kilobits/Second"|"Megabits/Second"|"Gigabits/Second"|"Terabits/Second"|"Count/Second"|"None"|string; - export type StateReason = string; - export type StateReasonData = string; - export type StateValue = "OK"|"ALARM"|"INSUFFICIENT_DATA"|string; - export type Statistic = "SampleCount"|"Average"|"Sum"|"Minimum"|"Maximum"|string; - export interface StatisticSet { - /** - * The number of samples used for the statistic set. - */ - SampleCount: DatapointValue; - /** - * The sum of values for the sample set. - */ - Sum: DatapointValue; - /** - * The minimum value of the sample set. - */ - Minimum: DatapointValue; - /** - * The maximum value of the sample set. - */ - Maximum: DatapointValue; - } - export type Statistics = Statistic[]; - export type StorageResolution = number; - export type Threshold = number; - export type Timestamp = Date; - export type TreatMissingData = string; - /** - * A string in YYYY-MM-DD format that represents the latest possible API version that can be used in this service. Specify 'latest' to use the latest possible version. - */ - export type apiVersion = "2010-08-01"|"latest"|string; - export interface ClientApiVersions { - /** - * A string in YYYY-MM-DD format that represents the latest possible API version that can be used in this service. Specify 'latest' to use the latest possible version. - */ - apiVersion?: apiVersion; - } - export type ClientConfiguration = ServiceConfigurationOptions & ClientApiVersions; - /** - * Contains interfaces for use with the CloudWatch client. - */ - export import Types = CloudWatch; -} -export = CloudWatch; diff --git a/workshops/monte-carlo-on-ec2-spot-fleet/src/web/node_modules/aws-sdk/clients/cloudwatch.js b/workshops/monte-carlo-on-ec2-spot-fleet/src/web/node_modules/aws-sdk/clients/cloudwatch.js deleted file mode 100644 index f831637e..00000000 --- a/workshops/monte-carlo-on-ec2-spot-fleet/src/web/node_modules/aws-sdk/clients/cloudwatch.js +++ /dev/null @@ -1,19 +0,0 @@ -require('../lib/node_loader'); -var AWS = require('../lib/core'); -var Service = AWS.Service; -var apiLoader = AWS.apiLoader; - -apiLoader.services['cloudwatch'] = {}; -AWS.CloudWatch = Service.defineService('cloudwatch', ['2010-08-01']); -Object.defineProperty(apiLoader.services['cloudwatch'], '2010-08-01', { - get: function get() { - var model = require('../apis/monitoring-2010-08-01.min.json'); - model.paginators = require('../apis/monitoring-2010-08-01.paginators.json').pagination; - model.waiters = require('../apis/monitoring-2010-08-01.waiters2.json').waiters; - return model; - }, - enumerable: true, - configurable: true -}); - -module.exports = AWS.CloudWatch; diff --git a/workshops/monte-carlo-on-ec2-spot-fleet/src/web/node_modules/aws-sdk/clients/cloudwatchevents.d.ts b/workshops/monte-carlo-on-ec2-spot-fleet/src/web/node_modules/aws-sdk/clients/cloudwatchevents.d.ts deleted file mode 100644 index 1b2d4696..00000000 --- a/workshops/monte-carlo-on-ec2-spot-fleet/src/web/node_modules/aws-sdk/clients/cloudwatchevents.d.ts +++ /dev/null @@ -1,635 +0,0 @@ -import {Request} from '../lib/request'; -import {Response} from '../lib/response'; -import {AWSError} from '../lib/error'; -import {Service} from '../lib/service'; -import {ServiceConfigurationOptions} from '../lib/service'; -import {ConfigBase as Config} from '../lib/config'; -interface Blob {} -declare class CloudWatchEvents extends Service { - /** - * Constructs a service object. This object has one method for each API operation. - */ - constructor(options?: CloudWatchEvents.Types.ClientConfiguration) - config: Config & CloudWatchEvents.Types.ClientConfiguration; - /** - * Deletes the specified rule. You must remove all targets from a rule using RemoveTargets before you can delete the rule. When you delete a rule, incoming events might continue to match to the deleted rule. Please allow a short period of time for changes to take effect. - */ - deleteRule(params: CloudWatchEvents.Types.DeleteRuleRequest, callback?: (err: AWSError, data: {}) => void): Request<{}, AWSError>; - /** - * Deletes the specified rule. You must remove all targets from a rule using RemoveTargets before you can delete the rule. When you delete a rule, incoming events might continue to match to the deleted rule. Please allow a short period of time for changes to take effect. - */ - deleteRule(callback?: (err: AWSError, data: {}) => void): Request<{}, AWSError>; - /** - * Displays the external AWS accounts that are permitted to write events to your account using your account's event bus, and the associated policy. To enable your account to receive events from other accounts, use PutPermission. - */ - describeEventBus(params: CloudWatchEvents.Types.DescribeEventBusRequest, callback?: (err: AWSError, data: CloudWatchEvents.Types.DescribeEventBusResponse) => void): Request; - /** - * Displays the external AWS accounts that are permitted to write events to your account using your account's event bus, and the associated policy. To enable your account to receive events from other accounts, use PutPermission. - */ - describeEventBus(callback?: (err: AWSError, data: CloudWatchEvents.Types.DescribeEventBusResponse) => void): Request; - /** - * Describes the specified rule. - */ - describeRule(params: CloudWatchEvents.Types.DescribeRuleRequest, callback?: (err: AWSError, data: CloudWatchEvents.Types.DescribeRuleResponse) => void): Request; - /** - * Describes the specified rule. - */ - describeRule(callback?: (err: AWSError, data: CloudWatchEvents.Types.DescribeRuleResponse) => void): Request; - /** - * Disables the specified rule. A disabled rule won't match any events, and won't self-trigger if it has a schedule expression. When you disable a rule, incoming events might continue to match to the disabled rule. Please allow a short period of time for changes to take effect. - */ - disableRule(params: CloudWatchEvents.Types.DisableRuleRequest, callback?: (err: AWSError, data: {}) => void): Request<{}, AWSError>; - /** - * Disables the specified rule. A disabled rule won't match any events, and won't self-trigger if it has a schedule expression. When you disable a rule, incoming events might continue to match to the disabled rule. Please allow a short period of time for changes to take effect. - */ - disableRule(callback?: (err: AWSError, data: {}) => void): Request<{}, AWSError>; - /** - * Enables the specified rule. If the rule does not exist, the operation fails. When you enable a rule, incoming events might not immediately start matching to a newly enabled rule. Please allow a short period of time for changes to take effect. - */ - enableRule(params: CloudWatchEvents.Types.EnableRuleRequest, callback?: (err: AWSError, data: {}) => void): Request<{}, AWSError>; - /** - * Enables the specified rule. If the rule does not exist, the operation fails. When you enable a rule, incoming events might not immediately start matching to a newly enabled rule. Please allow a short period of time for changes to take effect. - */ - enableRule(callback?: (err: AWSError, data: {}) => void): Request<{}, AWSError>; - /** - * Lists the rules for the specified target. You can see which of the rules in Amazon CloudWatch Events can invoke a specific target in your account. - */ - listRuleNamesByTarget(params: CloudWatchEvents.Types.ListRuleNamesByTargetRequest, callback?: (err: AWSError, data: CloudWatchEvents.Types.ListRuleNamesByTargetResponse) => void): Request; - /** - * Lists the rules for the specified target. You can see which of the rules in Amazon CloudWatch Events can invoke a specific target in your account. - */ - listRuleNamesByTarget(callback?: (err: AWSError, data: CloudWatchEvents.Types.ListRuleNamesByTargetResponse) => void): Request; - /** - * Lists your Amazon CloudWatch Events rules. You can either list all the rules or you can provide a prefix to match to the rule names. - */ - listRules(params: CloudWatchEvents.Types.ListRulesRequest, callback?: (err: AWSError, data: CloudWatchEvents.Types.ListRulesResponse) => void): Request; - /** - * Lists your Amazon CloudWatch Events rules. You can either list all the rules or you can provide a prefix to match to the rule names. - */ - listRules(callback?: (err: AWSError, data: CloudWatchEvents.Types.ListRulesResponse) => void): Request; - /** - * Lists the targets assigned to the specified rule. - */ - listTargetsByRule(params: CloudWatchEvents.Types.ListTargetsByRuleRequest, callback?: (err: AWSError, data: CloudWatchEvents.Types.ListTargetsByRuleResponse) => void): Request; - /** - * Lists the targets assigned to the specified rule. - */ - listTargetsByRule(callback?: (err: AWSError, data: CloudWatchEvents.Types.ListTargetsByRuleResponse) => void): Request; - /** - * Sends custom events to Amazon CloudWatch Events so that they can be matched to rules. - */ - putEvents(params: CloudWatchEvents.Types.PutEventsRequest, callback?: (err: AWSError, data: CloudWatchEvents.Types.PutEventsResponse) => void): Request; - /** - * Sends custom events to Amazon CloudWatch Events so that they can be matched to rules. - */ - putEvents(callback?: (err: AWSError, data: CloudWatchEvents.Types.PutEventsResponse) => void): Request; - /** - * Running PutPermission permits the specified AWS account to put events to your account's default event bus. CloudWatch Events rules in your account are triggered by these events arriving to your default event bus. For another account to send events to your account, that external account must have a CloudWatch Events rule with your account's default event bus as a target. To enable multiple AWS accounts to put events to your default event bus, run PutPermission once for each of these accounts. The permission policy on the default event bus cannot exceed 10KB in size. - */ - putPermission(params: CloudWatchEvents.Types.PutPermissionRequest, callback?: (err: AWSError, data: {}) => void): Request<{}, AWSError>; - /** - * Running PutPermission permits the specified AWS account to put events to your account's default event bus. CloudWatch Events rules in your account are triggered by these events arriving to your default event bus. For another account to send events to your account, that external account must have a CloudWatch Events rule with your account's default event bus as a target. To enable multiple AWS accounts to put events to your default event bus, run PutPermission once for each of these accounts. The permission policy on the default event bus cannot exceed 10KB in size. - */ - putPermission(callback?: (err: AWSError, data: {}) => void): Request<{}, AWSError>; - /** - * Creates or updates the specified rule. Rules are enabled by default, or based on value of the state. You can disable a rule using DisableRule. When you create or update a rule, incoming events might not immediately start matching to new or updated rules. Please allow a short period of time for changes to take effect. A rule must contain at least an EventPattern or ScheduleExpression. Rules with EventPatterns are triggered when a matching event is observed. Rules with ScheduleExpressions self-trigger based on the given schedule. A rule can have both an EventPattern and a ScheduleExpression, in which case the rule triggers on matching events as well as on a schedule. Most services in AWS treat : or / as the same character in Amazon Resource Names (ARNs). However, CloudWatch Events uses an exact match in event patterns and rules. Be sure to use the correct ARN characters when creating event patterns so that they match the ARN syntax in the event you want to match. - */ - putRule(params: CloudWatchEvents.Types.PutRuleRequest, callback?: (err: AWSError, data: CloudWatchEvents.Types.PutRuleResponse) => void): Request; - /** - * Creates or updates the specified rule. Rules are enabled by default, or based on value of the state. You can disable a rule using DisableRule. When you create or update a rule, incoming events might not immediately start matching to new or updated rules. Please allow a short period of time for changes to take effect. A rule must contain at least an EventPattern or ScheduleExpression. Rules with EventPatterns are triggered when a matching event is observed. Rules with ScheduleExpressions self-trigger based on the given schedule. A rule can have both an EventPattern and a ScheduleExpression, in which case the rule triggers on matching events as well as on a schedule. Most services in AWS treat : or / as the same character in Amazon Resource Names (ARNs). However, CloudWatch Events uses an exact match in event patterns and rules. Be sure to use the correct ARN characters when creating event patterns so that they match the ARN syntax in the event you want to match. - */ - putRule(callback?: (err: AWSError, data: CloudWatchEvents.Types.PutRuleResponse) => void): Request; - /** - * Adds the specified targets to the specified rule, or updates the targets if they are already associated with the rule. Targets are the resources that are invoked when a rule is triggered. You can configure the following as targets for CloudWatch Events: EC2 instances AWS Lambda functions Streams in Amazon Kinesis Streams Delivery streams in Amazon Kinesis Firehose Amazon ECS tasks AWS Step Functions state machines Pipelines in Amazon Code Pipeline Amazon Inspector assessment templates Amazon SNS topics Amazon SQS queues The default event bus of another AWS account Note that creating rules with built-in targets is supported only in the AWS Management Console. For some target types, PutTargets provides target-specific parameters. If the target is an Amazon Kinesis stream, you can optionally specify which shard the event goes to by using the KinesisParameters argument. To invoke a command on multiple EC2 instances with one rule, you can use the RunCommandParameters field. To be able to make API calls against the resources that you own, Amazon CloudWatch Events needs the appropriate permissions. For AWS Lambda and Amazon SNS resources, CloudWatch Events relies on resource-based policies. For EC2 instances, Amazon Kinesis streams, and AWS Step Functions state machines, CloudWatch Events relies on IAM roles that you specify in the RoleARN argument in PutTargets. For more information, see Authentication and Access Control in the Amazon CloudWatch Events User Guide. If another AWS account is in the same region and has granted you permission (using PutPermission), you can send events to that account by setting that account's event bus as a target of the rules in your account. To send the matched events to the other account, specify that account's event bus as the Arn when you run PutTargets. If your account sends events to another account, your account is charged for each sent event. Each event sent to antoher account is charged as a custom event. The account receiving the event is not charged. For more information on pricing, see Amazon CloudWatch Pricing. For more information about enabling cross-account events, see PutPermission. Input, InputPath and InputTransformer are mutually exclusive and optional parameters of a target. When a rule is triggered due to a matched event: If none of the following arguments are specified for a target, then the entire event is passed to the target in JSON form (unless the target is Amazon EC2 Run Command or Amazon ECS task, in which case nothing from the event is passed to the target). If Input is specified in the form of valid JSON, then the matched event is overridden with this constant. If InputPath is specified in the form of JSONPath (for example, $.detail), then only the part of the event specified in the path is passed to the target (for example, only the detail part of the event is passed). If InputTransformer is specified, then one or more specified JSONPaths are extracted from the event and used as values in a template that you specify as the input to the target. When you specify Input, InputPath, or InputTransformer, you must use JSON dot notation, not bracket notation. When you add targets to a rule and the associated rule triggers soon after, new or updated targets might not be immediately invoked. Please allow a short period of time for changes to take effect. This action can partially fail if too many requests are made at the same time. If that happens, FailedEntryCount is non-zero in the response and each entry in FailedEntries provides the ID of the failed target and the error code. - */ - putTargets(params: CloudWatchEvents.Types.PutTargetsRequest, callback?: (err: AWSError, data: CloudWatchEvents.Types.PutTargetsResponse) => void): Request; - /** - * Adds the specified targets to the specified rule, or updates the targets if they are already associated with the rule. Targets are the resources that are invoked when a rule is triggered. You can configure the following as targets for CloudWatch Events: EC2 instances AWS Lambda functions Streams in Amazon Kinesis Streams Delivery streams in Amazon Kinesis Firehose Amazon ECS tasks AWS Step Functions state machines Pipelines in Amazon Code Pipeline Amazon Inspector assessment templates Amazon SNS topics Amazon SQS queues The default event bus of another AWS account Note that creating rules with built-in targets is supported only in the AWS Management Console. For some target types, PutTargets provides target-specific parameters. If the target is an Amazon Kinesis stream, you can optionally specify which shard the event goes to by using the KinesisParameters argument. To invoke a command on multiple EC2 instances with one rule, you can use the RunCommandParameters field. To be able to make API calls against the resources that you own, Amazon CloudWatch Events needs the appropriate permissions. For AWS Lambda and Amazon SNS resources, CloudWatch Events relies on resource-based policies. For EC2 instances, Amazon Kinesis streams, and AWS Step Functions state machines, CloudWatch Events relies on IAM roles that you specify in the RoleARN argument in PutTargets. For more information, see Authentication and Access Control in the Amazon CloudWatch Events User Guide. If another AWS account is in the same region and has granted you permission (using PutPermission), you can send events to that account by setting that account's event bus as a target of the rules in your account. To send the matched events to the other account, specify that account's event bus as the Arn when you run PutTargets. If your account sends events to another account, your account is charged for each sent event. Each event sent to antoher account is charged as a custom event. The account receiving the event is not charged. For more information on pricing, see Amazon CloudWatch Pricing. For more information about enabling cross-account events, see PutPermission. Input, InputPath and InputTransformer are mutually exclusive and optional parameters of a target. When a rule is triggered due to a matched event: If none of the following arguments are specified for a target, then the entire event is passed to the target in JSON form (unless the target is Amazon EC2 Run Command or Amazon ECS task, in which case nothing from the event is passed to the target). If Input is specified in the form of valid JSON, then the matched event is overridden with this constant. If InputPath is specified in the form of JSONPath (for example, $.detail), then only the part of the event specified in the path is passed to the target (for example, only the detail part of the event is passed). If InputTransformer is specified, then one or more specified JSONPaths are extracted from the event and used as values in a template that you specify as the input to the target. When you specify Input, InputPath, or InputTransformer, you must use JSON dot notation, not bracket notation. When you add targets to a rule and the associated rule triggers soon after, new or updated targets might not be immediately invoked. Please allow a short period of time for changes to take effect. This action can partially fail if too many requests are made at the same time. If that happens, FailedEntryCount is non-zero in the response and each entry in FailedEntries provides the ID of the failed target and the error code. - */ - putTargets(callback?: (err: AWSError, data: CloudWatchEvents.Types.PutTargetsResponse) => void): Request; - /** - * Revokes the permission of another AWS account to be able to put events to your default event bus. Specify the account to revoke by the StatementId value that you associated with the account when you granted it permission with PutPermission. You can find the StatementId by using DescribeEventBus. - */ - removePermission(params: CloudWatchEvents.Types.RemovePermissionRequest, callback?: (err: AWSError, data: {}) => void): Request<{}, AWSError>; - /** - * Revokes the permission of another AWS account to be able to put events to your default event bus. Specify the account to revoke by the StatementId value that you associated with the account when you granted it permission with PutPermission. You can find the StatementId by using DescribeEventBus. - */ - removePermission(callback?: (err: AWSError, data: {}) => void): Request<{}, AWSError>; - /** - * Removes the specified targets from the specified rule. When the rule is triggered, those targets are no longer be invoked. When you remove a target, when the associated rule triggers, removed targets might continue to be invoked. Please allow a short period of time for changes to take effect. This action can partially fail if too many requests are made at the same time. If that happens, FailedEntryCount is non-zero in the response and each entry in FailedEntries provides the ID of the failed target and the error code. - */ - removeTargets(params: CloudWatchEvents.Types.RemoveTargetsRequest, callback?: (err: AWSError, data: CloudWatchEvents.Types.RemoveTargetsResponse) => void): Request; - /** - * Removes the specified targets from the specified rule. When the rule is triggered, those targets are no longer be invoked. When you remove a target, when the associated rule triggers, removed targets might continue to be invoked. Please allow a short period of time for changes to take effect. This action can partially fail if too many requests are made at the same time. If that happens, FailedEntryCount is non-zero in the response and each entry in FailedEntries provides the ID of the failed target and the error code. - */ - removeTargets(callback?: (err: AWSError, data: CloudWatchEvents.Types.RemoveTargetsResponse) => void): Request; - /** - * Tests whether the specified event pattern matches the provided event. Most services in AWS treat : or / as the same character in Amazon Resource Names (ARNs). However, CloudWatch Events uses an exact match in event patterns and rules. Be sure to use the correct ARN characters when creating event patterns so that they match the ARN syntax in the event you want to match. - */ - testEventPattern(params: CloudWatchEvents.Types.TestEventPatternRequest, callback?: (err: AWSError, data: CloudWatchEvents.Types.TestEventPatternResponse) => void): Request; - /** - * Tests whether the specified event pattern matches the provided event. Most services in AWS treat : or / as the same character in Amazon Resource Names (ARNs). However, CloudWatch Events uses an exact match in event patterns and rules. Be sure to use the correct ARN characters when creating event patterns so that they match the ARN syntax in the event you want to match. - */ - testEventPattern(callback?: (err: AWSError, data: CloudWatchEvents.Types.TestEventPatternResponse) => void): Request; -} -declare namespace CloudWatchEvents { - export type Action = string; - export type Arn = string; - export type Boolean = boolean; - export interface DeleteRuleRequest { - /** - * The name of the rule. - */ - Name: RuleName; - } - export interface DescribeEventBusRequest { - } - export interface DescribeEventBusResponse { - /** - * The name of the event bus. Currently, this is always default. - */ - Name?: String; - /** - * The Amazon Resource Name (ARN) of the account permitted to write events to the current account. - */ - Arn?: String; - /** - * The policy that enables the external account to send events to your account. - */ - Policy?: String; - } - export interface DescribeRuleRequest { - /** - * The name of the rule. - */ - Name: RuleName; - } - export interface DescribeRuleResponse { - /** - * The name of the rule. - */ - Name?: RuleName; - /** - * The Amazon Resource Name (ARN) of the rule. - */ - Arn?: RuleArn; - /** - * The event pattern. For more information, see Events and Event Patterns in the Amazon CloudWatch Events User Guide. - */ - EventPattern?: EventPattern; - /** - * The scheduling expression. For example, "cron(0 20 * * ? *)", "rate(5 minutes)". - */ - ScheduleExpression?: ScheduleExpression; - /** - * Specifies whether the rule is enabled or disabled. - */ - State?: RuleState; - /** - * The description of the rule. - */ - Description?: RuleDescription; - /** - * The Amazon Resource Name (ARN) of the IAM role associated with the rule. - */ - RoleArn?: RoleArn; - } - export interface DisableRuleRequest { - /** - * The name of the rule. - */ - Name: RuleName; - } - export interface EcsParameters { - /** - * The ARN of the task definition to use if the event target is an Amazon ECS cluster. - */ - TaskDefinitionArn: Arn; - /** - * The number of tasks to create based on the TaskDefinition. The default is one. - */ - TaskCount?: LimitMin1; - } - export interface EnableRuleRequest { - /** - * The name of the rule. - */ - Name: RuleName; - } - export type ErrorCode = string; - export type ErrorMessage = string; - export type EventId = string; - export type EventPattern = string; - export type EventResource = string; - export type EventResourceList = EventResource[]; - export type EventTime = Date; - export interface InputTransformer { - /** - * Map of JSON paths to be extracted from the event. These are key-value pairs, where each value is a JSON path. You must use JSON dot notation, not bracket notation. - */ - InputPathsMap?: TransformerPaths; - /** - * Input template where you can use the values of the keys from InputPathsMap to customize the data sent to the target. - */ - InputTemplate: TransformerInput; - } - export type InputTransformerPathKey = string; - export type Integer = number; - export interface KinesisParameters { - /** - * The JSON path to be extracted from the event and used as the partition key. For more information, see Amazon Kinesis Streams Key Concepts in the Amazon Kinesis Streams Developer Guide. - */ - PartitionKeyPath: TargetPartitionKeyPath; - } - export type LimitMax100 = number; - export type LimitMin1 = number; - export interface ListRuleNamesByTargetRequest { - /** - * The Amazon Resource Name (ARN) of the target resource. - */ - TargetArn: TargetArn; - /** - * The token returned by a previous call to retrieve the next set of results. - */ - NextToken?: NextToken; - /** - * The maximum number of results to return. - */ - Limit?: LimitMax100; - } - export interface ListRuleNamesByTargetResponse { - /** - * The names of the rules that can invoke the given target. - */ - RuleNames?: RuleNameList; - /** - * Indicates whether there are additional results to retrieve. If there are no more results, the value is null. - */ - NextToken?: NextToken; - } - export interface ListRulesRequest { - /** - * The prefix matching the rule name. - */ - NamePrefix?: RuleName; - /** - * The token returned by a previous call to retrieve the next set of results. - */ - NextToken?: NextToken; - /** - * The maximum number of results to return. - */ - Limit?: LimitMax100; - } - export interface ListRulesResponse { - /** - * The rules that match the specified criteria. - */ - Rules?: RuleResponseList; - /** - * Indicates whether there are additional results to retrieve. If there are no more results, the value is null. - */ - NextToken?: NextToken; - } - export interface ListTargetsByRuleRequest { - /** - * The name of the rule. - */ - Rule: RuleName; - /** - * The token returned by a previous call to retrieve the next set of results. - */ - NextToken?: NextToken; - /** - * The maximum number of results to return. - */ - Limit?: LimitMax100; - } - export interface ListTargetsByRuleResponse { - /** - * The targets assigned to the rule. - */ - Targets?: TargetList; - /** - * Indicates whether there are additional results to retrieve. If there are no more results, the value is null. - */ - NextToken?: NextToken; - } - export type NextToken = string; - export type Principal = string; - export interface PutEventsRequest { - /** - * The entry that defines an event in your system. 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. - */ - Entries: PutEventsRequestEntryList; - } - export interface PutEventsRequestEntry { - /** - * The timestamp of the event, per RFC3339. If no timestamp is provided, the timestamp of the PutEvents call is used. - */ - Time?: EventTime; - /** - * The source of the event. - */ - Source?: String; - /** - * AWS resources, identified by Amazon Resource Name (ARN), which the event primarily concerns. Any number, including zero, may be present. - */ - Resources?: EventResourceList; - /** - * Free-form string used to decide what fields to expect in the event detail. - */ - DetailType?: String; - /** - * In the JSON sense, an object containing fields, which may also contain nested subobjects. No constraints are imposed on its contents. - */ - Detail?: String; - } - export type PutEventsRequestEntryList = PutEventsRequestEntry[]; - export interface PutEventsResponse { - /** - * The number of failed entries. - */ - FailedEntryCount?: Integer; - /** - * The successfully and unsuccessfully ingested events results. If the ingestion was successful, the entry has the event ID in it. Otherwise, you can use the error code and error message to identify the problem with the entry. - */ - Entries?: PutEventsResultEntryList; - } - export interface PutEventsResultEntry { - /** - * The ID of the event. - */ - EventId?: EventId; - /** - * The error code that indicates why the event submission failed. - */ - ErrorCode?: ErrorCode; - /** - * The error message that explains why the event submission failed. - */ - ErrorMessage?: ErrorMessage; - } - export type PutEventsResultEntryList = PutEventsResultEntry[]; - export interface PutPermissionRequest { - /** - * The action that you are enabling the other account to perform. Currently, this must be events:PutEvents. - */ - Action: Action; - /** - * The 12-digit AWS account ID that you are permitting to put events to your default event bus. Specify "*" to permit any account to put events to your default event bus. If you specify "*", avoid creating rules that may match undesirable events. To create more secure rules, make sure that the event pattern for each rule contains an account field with a specific account ID from which to receive events. Rules with an account field do not match any events sent from other accounts. - */ - Principal: Principal; - /** - * An identifier string for the external account that you are granting permissions to. If you later want to revoke the permission for this external account, specify this StatementId when you run RemovePermission. - */ - StatementId: StatementId; - } - export interface PutRuleRequest { - /** - * The name of the rule that you are creating or updating. - */ - Name: RuleName; - /** - * The scheduling expression. For example, "cron(0 20 * * ? *)" or "rate(5 minutes)". - */ - ScheduleExpression?: ScheduleExpression; - /** - * The event pattern. For more information, see Events and Event Patterns in the Amazon CloudWatch Events User Guide. - */ - EventPattern?: EventPattern; - /** - * Indicates whether the rule is enabled or disabled. - */ - State?: RuleState; - /** - * A description of the rule. - */ - Description?: RuleDescription; - /** - * The Amazon Resource Name (ARN) of the IAM role associated with the rule. - */ - RoleArn?: RoleArn; - } - export interface PutRuleResponse { - /** - * The Amazon Resource Name (ARN) of the rule. - */ - RuleArn?: RuleArn; - } - export interface PutTargetsRequest { - /** - * The name of the rule. - */ - Rule: RuleName; - /** - * The targets to update or add to the rule. - */ - Targets: TargetList; - } - export interface PutTargetsResponse { - /** - * The number of failed entries. - */ - FailedEntryCount?: Integer; - /** - * The failed target entries. - */ - FailedEntries?: PutTargetsResultEntryList; - } - export interface PutTargetsResultEntry { - /** - * The ID of the target. - */ - TargetId?: TargetId; - /** - * The error code that indicates why the target addition failed. If the value is ConcurrentModificationException, too many requests were made at the same time. - */ - ErrorCode?: ErrorCode; - /** - * The error message that explains why the target addition failed. - */ - ErrorMessage?: ErrorMessage; - } - export type PutTargetsResultEntryList = PutTargetsResultEntry[]; - export interface RemovePermissionRequest { - /** - * The statement ID corresponding to the account that is no longer allowed to put events to the default event bus. - */ - StatementId: StatementId; - } - export interface RemoveTargetsRequest { - /** - * The name of the rule. - */ - Rule: RuleName; - /** - * The IDs of the targets to remove from the rule. - */ - Ids: TargetIdList; - } - export interface RemoveTargetsResponse { - /** - * The number of failed entries. - */ - FailedEntryCount?: Integer; - /** - * The failed target entries. - */ - FailedEntries?: RemoveTargetsResultEntryList; - } - export interface RemoveTargetsResultEntry { - /** - * The ID of the target. - */ - TargetId?: TargetId; - /** - * The error code that indicates why the target removal failed. If the value is ConcurrentModificationException, too many requests were made at the same time. - */ - ErrorCode?: ErrorCode; - /** - * The error message that explains why the target removal failed. - */ - ErrorMessage?: ErrorMessage; - } - export type RemoveTargetsResultEntryList = RemoveTargetsResultEntry[]; - export type RoleArn = string; - export interface Rule { - /** - * The name of the rule. - */ - Name?: RuleName; - /** - * The Amazon Resource Name (ARN) of the rule. - */ - Arn?: RuleArn; - /** - * The event pattern of the rule. For more information, see Events and Event Patterns in the Amazon CloudWatch Events User Guide. - */ - EventPattern?: EventPattern; - /** - * The state of the rule. - */ - State?: RuleState; - /** - * The description of the rule. - */ - Description?: RuleDescription; - /** - * The scheduling expression. For example, "cron(0 20 * * ? *)", "rate(5 minutes)". - */ - ScheduleExpression?: ScheduleExpression; - /** - * The Amazon Resource Name (ARN) of the role that is used for target invocation. - */ - RoleArn?: RoleArn; - } - export type RuleArn = string; - export type RuleDescription = string; - export type RuleName = string; - export type RuleNameList = RuleName[]; - export type RuleResponseList = Rule[]; - export type RuleState = "ENABLED"|"DISABLED"|string; - export interface RunCommandParameters { - /** - * Currently, we support including only one RunCommandTarget block, which specifies either an array of InstanceIds or a tag. - */ - RunCommandTargets: RunCommandTargets; - } - export interface RunCommandTarget { - /** - * Can be either tag: tag-key or InstanceIds. - */ - Key: RunCommandTargetKey; - /** - * If Key is tag: tag-key, Values is a list of tag values. If Key is InstanceIds, Values is a list of Amazon EC2 instance IDs. - */ - Values: RunCommandTargetValues; - } - export type RunCommandTargetKey = string; - export type RunCommandTargetValue = string; - export type RunCommandTargetValues = RunCommandTargetValue[]; - export type RunCommandTargets = RunCommandTarget[]; - export type ScheduleExpression = string; - export type StatementId = string; - export type String = string; - export interface Target { - /** - * The ID of the target. - */ - Id: TargetId; - /** - * The Amazon Resource Name (ARN) of the target. - */ - Arn: TargetArn; - /** - * The Amazon Resource Name (ARN) of the IAM role to be used for this target when the rule is triggered. If one rule triggers multiple targets, you can use a different IAM role for each target. - */ - RoleArn?: RoleArn; - /** - * Valid JSON text passed to the target. In this case, nothing from the event itself is passed to the target. You must use JSON dot notation, not bracket notation. For more information, see The JavaScript Object Notation (JSON) Data Interchange Format. - */ - Input?: TargetInput; - /** - * The value of the JSONPath that is used for extracting part of the matched event when passing it to the target. You must use JSON dot notation, not bracket notation. For more information about JSON paths, see JSONPath. - */ - InputPath?: TargetInputPath; - /** - * Settings to enable you to provide custom input to a target based on certain event data. You can extract one or more key-value pairs from the event and then use that data to send customized input to the target. - */ - InputTransformer?: InputTransformer; - /** - * The custom parameter you can use to control shard assignment, when the target is an Amazon Kinesis stream. If you do not include this parameter, the default is to use the eventId as the partition key. - */ - KinesisParameters?: KinesisParameters; - /** - * Parameters used when you are using the rule to invoke Amazon EC2 Run Command. - */ - RunCommandParameters?: RunCommandParameters; - /** - * Contains the Amazon ECS task definition and task count to be used, if the event target is an Amazon ECS task. For more information about Amazon ECS tasks, see Task Definitions in the Amazon EC2 Container Service Developer Guide. - */ - EcsParameters?: EcsParameters; - } - export type TargetArn = string; - export type TargetId = string; - export type TargetIdList = TargetId[]; - export type TargetInput = string; - export type TargetInputPath = string; - export type TargetList = Target[]; - export type TargetPartitionKeyPath = string; - export interface TestEventPatternRequest { - /** - * The event pattern. For more information, see Events and Event Patterns in the Amazon CloudWatch Events User Guide. - */ - EventPattern: EventPattern; - /** - * The event, in JSON format, to test against the event pattern. - */ - Event: String; - } - export interface TestEventPatternResponse { - /** - * Indicates whether the event matches the event pattern. - */ - Result?: Boolean; - } - export type TransformerInput = string; - export type TransformerPaths = {[key: string]: TargetInputPath}; - /** - * A string in YYYY-MM-DD format that represents the latest possible API version that can be used in this service. Specify 'latest' to use the latest possible version. - */ - export type apiVersion = "2014-02-03"|"2015-10-07"|"latest"|string; - export interface ClientApiVersions { - /** - * A string in YYYY-MM-DD format that represents the latest possible API version that can be used in this service. Specify 'latest' to use the latest possible version. - */ - apiVersion?: apiVersion; - } - export type ClientConfiguration = ServiceConfigurationOptions & ClientApiVersions; - /** - * Contains interfaces for use with the CloudWatchEvents client. - */ - export import Types = CloudWatchEvents; -} -export = CloudWatchEvents; diff --git a/workshops/monte-carlo-on-ec2-spot-fleet/src/web/node_modules/aws-sdk/clients/cloudwatchevents.js b/workshops/monte-carlo-on-ec2-spot-fleet/src/web/node_modules/aws-sdk/clients/cloudwatchevents.js deleted file mode 100644 index 72ea0c72..00000000 --- a/workshops/monte-carlo-on-ec2-spot-fleet/src/web/node_modules/aws-sdk/clients/cloudwatchevents.js +++ /dev/null @@ -1,18 +0,0 @@ -require('../lib/node_loader'); -var AWS = require('../lib/core'); -var Service = AWS.Service; -var apiLoader = AWS.apiLoader; - -apiLoader.services['cloudwatchevents'] = {}; -AWS.CloudWatchEvents = Service.defineService('cloudwatchevents', ['2014-02-03*', '2015-10-07']); -Object.defineProperty(apiLoader.services['cloudwatchevents'], '2015-10-07', { - get: function get() { - var model = require('../apis/events-2015-10-07.min.json'); - model.paginators = require('../apis/events-2015-10-07.paginators.json').pagination; - return model; - }, - enumerable: true, - configurable: true -}); - -module.exports = AWS.CloudWatchEvents; diff --git a/workshops/monte-carlo-on-ec2-spot-fleet/src/web/node_modules/aws-sdk/clients/cloudwatchlogs.d.ts b/workshops/monte-carlo-on-ec2-spot-fleet/src/web/node_modules/aws-sdk/clients/cloudwatchlogs.d.ts deleted file mode 100644 index b60aec7b..00000000 --- a/workshops/monte-carlo-on-ec2-spot-fleet/src/web/node_modules/aws-sdk/clients/cloudwatchlogs.d.ts +++ /dev/null @@ -1,1230 +0,0 @@ -import {Request} from '../lib/request'; -import {Response} from '../lib/response'; -import {AWSError} from '../lib/error'; -import {Service} from '../lib/service'; -import {ServiceConfigurationOptions} from '../lib/service'; -import {ConfigBase as Config} from '../lib/config'; -interface Blob {} -declare class CloudWatchLogs extends Service { - /** - * Constructs a service object. This object has one method for each API operation. - */ - constructor(options?: CloudWatchLogs.Types.ClientConfiguration) - config: Config & CloudWatchLogs.Types.ClientConfiguration; - /** - * Associates the specified AWS Key Management Service (AWS KMS) customer master key (CMK) with the specified log group. Associating an AWS KMS CMK with a log group overrides any existing associations between the log group and a CMK. After a CMK is associated with a log group, all newly ingested data for the log group is encrypted using the CMK. This association is stored as long as the data encrypted with the CMK is still within Amazon CloudWatch Logs. This enables Amazon CloudWatch Logs to decrypt this data whenever it is requested. Note that it can take up to 5 minutes for this operation to take effect. If you attempt to associate a CMK with a log group but the CMK does not exist or the CMK is disabled, you will receive an InvalidParameterException error. - */ - associateKmsKey(params: CloudWatchLogs.Types.AssociateKmsKeyRequest, callback?: (err: AWSError, data: {}) => void): Request<{}, AWSError>; - /** - * Associates the specified AWS Key Management Service (AWS KMS) customer master key (CMK) with the specified log group. Associating an AWS KMS CMK with a log group overrides any existing associations between the log group and a CMK. After a CMK is associated with a log group, all newly ingested data for the log group is encrypted using the CMK. This association is stored as long as the data encrypted with the CMK is still within Amazon CloudWatch Logs. This enables Amazon CloudWatch Logs to decrypt this data whenever it is requested. Note that it can take up to 5 minutes for this operation to take effect. If you attempt to associate a CMK with a log group but the CMK does not exist or the CMK is disabled, you will receive an InvalidParameterException error. - */ - associateKmsKey(callback?: (err: AWSError, data: {}) => void): Request<{}, AWSError>; - /** - * Cancels the specified export task. The task must be in the PENDING or RUNNING state. - */ - cancelExportTask(params: CloudWatchLogs.Types.CancelExportTaskRequest, callback?: (err: AWSError, data: {}) => void): Request<{}, AWSError>; - /** - * Cancels the specified export task. The task must be in the PENDING or RUNNING state. - */ - cancelExportTask(callback?: (err: AWSError, data: {}) => void): Request<{}, AWSError>; - /** - * Creates an export task, which allows you to efficiently export data from a log group to an Amazon S3 bucket. This is an asynchronous call. If all the required information is provided, this operation initiates an export task and responds with the ID of the task. After the task has started, you can use DescribeExportTasks to get the status of the export task. Each account can only have one active (RUNNING or PENDING) export task at a time. To cancel an export task, use CancelExportTask. You can export logs from multiple log groups or multiple time ranges to the same S3 bucket. To separate out log data for each export task, you can specify a prefix to be used as the Amazon S3 key prefix for all exported objects. - */ - createExportTask(params: CloudWatchLogs.Types.CreateExportTaskRequest, callback?: (err: AWSError, data: CloudWatchLogs.Types.CreateExportTaskResponse) => void): Request; - /** - * Creates an export task, which allows you to efficiently export data from a log group to an Amazon S3 bucket. This is an asynchronous call. If all the required information is provided, this operation initiates an export task and responds with the ID of the task. After the task has started, you can use DescribeExportTasks to get the status of the export task. Each account can only have one active (RUNNING or PENDING) export task at a time. To cancel an export task, use CancelExportTask. You can export logs from multiple log groups or multiple time ranges to the same S3 bucket. To separate out log data for each export task, you can specify a prefix to be used as the Amazon S3 key prefix for all exported objects. - */ - createExportTask(callback?: (err: AWSError, data: CloudWatchLogs.Types.CreateExportTaskResponse) => void): Request; - /** - * Creates a log group with the specified name. You can create up to 5000 log groups per account. You must use the following guidelines when naming a log group: Log group names must be unique within a region for an AWS account. Log group names can be between 1 and 512 characters long. Log group names consist of the following characters: a-z, A-Z, 0-9, '_' (underscore), '-' (hyphen), '/' (forward slash), and '.' (period). If you associate a AWS Key Management Service (AWS KMS) customer master key (CMK) with the log group, ingested data is encrypted using the CMK. This association is stored as long as the data encrypted with the CMK is still within Amazon CloudWatch Logs. This enables Amazon CloudWatch Logs to decrypt this data whenever it is requested. If you attempt to associate a CMK with the log group but the CMK does not exist or the CMK is disabled, you will receive an InvalidParameterException error. - */ - createLogGroup(params: CloudWatchLogs.Types.CreateLogGroupRequest, callback?: (err: AWSError, data: {}) => void): Request<{}, AWSError>; - /** - * Creates a log group with the specified name. You can create up to 5000 log groups per account. You must use the following guidelines when naming a log group: Log group names must be unique within a region for an AWS account. Log group names can be between 1 and 512 characters long. Log group names consist of the following characters: a-z, A-Z, 0-9, '_' (underscore), '-' (hyphen), '/' (forward slash), and '.' (period). If you associate a AWS Key Management Service (AWS KMS) customer master key (CMK) with the log group, ingested data is encrypted using the CMK. This association is stored as long as the data encrypted with the CMK is still within Amazon CloudWatch Logs. This enables Amazon CloudWatch Logs to decrypt this data whenever it is requested. If you attempt to associate a CMK with the log group but the CMK does not exist or the CMK is disabled, you will receive an InvalidParameterException error. - */ - createLogGroup(callback?: (err: AWSError, data: {}) => void): Request<{}, AWSError>; - /** - * Creates a log stream for the specified log group. There is no limit on the number of log streams that you can create for a log group. You must use the following guidelines when naming a log stream: Log stream names must be unique within the log group. Log stream names can be between 1 and 512 characters long. The ':' (colon) and '*' (asterisk) characters are not allowed. - */ - createLogStream(params: CloudWatchLogs.Types.CreateLogStreamRequest, callback?: (err: AWSError, data: {}) => void): Request<{}, AWSError>; - /** - * Creates a log stream for the specified log group. There is no limit on the number of log streams that you can create for a log group. You must use the following guidelines when naming a log stream: Log stream names must be unique within the log group. Log stream names can be between 1 and 512 characters long. The ':' (colon) and '*' (asterisk) characters are not allowed. - */ - createLogStream(callback?: (err: AWSError, data: {}) => void): Request<{}, AWSError>; - /** - * Deletes the specified destination, and eventually disables all the subscription filters that publish to it. This operation does not delete the physical resource encapsulated by the destination. - */ - deleteDestination(params: CloudWatchLogs.Types.DeleteDestinationRequest, callback?: (err: AWSError, data: {}) => void): Request<{}, AWSError>; - /** - * Deletes the specified destination, and eventually disables all the subscription filters that publish to it. This operation does not delete the physical resource encapsulated by the destination. - */ - deleteDestination(callback?: (err: AWSError, data: {}) => void): Request<{}, AWSError>; - /** - * Deletes the specified log group and permanently deletes all the archived log events associated with the log group. - */ - deleteLogGroup(params: CloudWatchLogs.Types.DeleteLogGroupRequest, callback?: (err: AWSError, data: {}) => void): Request<{}, AWSError>; - /** - * Deletes the specified log group and permanently deletes all the archived log events associated with the log group. - */ - deleteLogGroup(callback?: (err: AWSError, data: {}) => void): Request<{}, AWSError>; - /** - * Deletes the specified log stream and permanently deletes all the archived log events associated with the log stream. - */ - deleteLogStream(params: CloudWatchLogs.Types.DeleteLogStreamRequest, callback?: (err: AWSError, data: {}) => void): Request<{}, AWSError>; - /** - * Deletes the specified log stream and permanently deletes all the archived log events associated with the log stream. - */ - deleteLogStream(callback?: (err: AWSError, data: {}) => void): Request<{}, AWSError>; - /** - * Deletes the specified metric filter. - */ - deleteMetricFilter(params: CloudWatchLogs.Types.DeleteMetricFilterRequest, callback?: (err: AWSError, data: {}) => void): Request<{}, AWSError>; - /** - * Deletes the specified metric filter. - */ - deleteMetricFilter(callback?: (err: AWSError, data: {}) => void): Request<{}, AWSError>; - /** - * Deletes a resource policy from this account. This revokes the access of the identities in that policy to put log events to this account. - */ - deleteResourcePolicy(params: CloudWatchLogs.Types.DeleteResourcePolicyRequest, callback?: (err: AWSError, data: {}) => void): Request<{}, AWSError>; - /** - * Deletes a resource policy from this account. This revokes the access of the identities in that policy to put log events to this account. - */ - deleteResourcePolicy(callback?: (err: AWSError, data: {}) => void): Request<{}, AWSError>; - /** - * Deletes the specified retention policy. Log events do not expire if they belong to log groups without a retention policy. - */ - deleteRetentionPolicy(params: CloudWatchLogs.Types.DeleteRetentionPolicyRequest, callback?: (err: AWSError, data: {}) => void): Request<{}, AWSError>; - /** - * Deletes the specified retention policy. Log events do not expire if they belong to log groups without a retention policy. - */ - deleteRetentionPolicy(callback?: (err: AWSError, data: {}) => void): Request<{}, AWSError>; - /** - * Deletes the specified subscription filter. - */ - deleteSubscriptionFilter(params: CloudWatchLogs.Types.DeleteSubscriptionFilterRequest, callback?: (err: AWSError, data: {}) => void): Request<{}, AWSError>; - /** - * Deletes the specified subscription filter. - */ - deleteSubscriptionFilter(callback?: (err: AWSError, data: {}) => void): Request<{}, AWSError>; - /** - * Lists all your destinations. The results are ASCII-sorted by destination name. - */ - describeDestinations(params: CloudWatchLogs.Types.DescribeDestinationsRequest, callback?: (err: AWSError, data: CloudWatchLogs.Types.DescribeDestinationsResponse) => void): Request; - /** - * Lists all your destinations. The results are ASCII-sorted by destination name. - */ - describeDestinations(callback?: (err: AWSError, data: CloudWatchLogs.Types.DescribeDestinationsResponse) => void): Request; - /** - * Lists the specified export tasks. You can list all your export tasks or filter the results based on task ID or task status. - */ - describeExportTasks(params: CloudWatchLogs.Types.DescribeExportTasksRequest, callback?: (err: AWSError, data: CloudWatchLogs.Types.DescribeExportTasksResponse) => void): Request; - /** - * Lists the specified export tasks. You can list all your export tasks or filter the results based on task ID or task status. - */ - describeExportTasks(callback?: (err: AWSError, data: CloudWatchLogs.Types.DescribeExportTasksResponse) => void): Request; - /** - * Lists the specified log groups. You can list all your log groups or filter the results by prefix. The results are ASCII-sorted by log group name. - */ - describeLogGroups(params: CloudWatchLogs.Types.DescribeLogGroupsRequest, callback?: (err: AWSError, data: CloudWatchLogs.Types.DescribeLogGroupsResponse) => void): Request; - /** - * Lists the specified log groups. You can list all your log groups or filter the results by prefix. The results are ASCII-sorted by log group name. - */ - describeLogGroups(callback?: (err: AWSError, data: CloudWatchLogs.Types.DescribeLogGroupsResponse) => void): Request; - /** - * Lists the log streams for the specified log group. You can list all the log streams or filter the results by prefix. You can also control how the results are ordered. This operation has a limit of five transactions per second, after which transactions are throttled. - */ - describeLogStreams(params: CloudWatchLogs.Types.DescribeLogStreamsRequest, callback?: (err: AWSError, data: CloudWatchLogs.Types.DescribeLogStreamsResponse) => void): Request; - /** - * Lists the log streams for the specified log group. You can list all the log streams or filter the results by prefix. You can also control how the results are ordered. This operation has a limit of five transactions per second, after which transactions are throttled. - */ - describeLogStreams(callback?: (err: AWSError, data: CloudWatchLogs.Types.DescribeLogStreamsResponse) => void): Request; - /** - * Lists the specified metric filters. You can list all the metric filters or filter the results by log name, prefix, metric name, or metric namespace. The results are ASCII-sorted by filter name. - */ - describeMetricFilters(params: CloudWatchLogs.Types.DescribeMetricFiltersRequest, callback?: (err: AWSError, data: CloudWatchLogs.Types.DescribeMetricFiltersResponse) => void): Request; - /** - * Lists the specified metric filters. You can list all the metric filters or filter the results by log name, prefix, metric name, or metric namespace. The results are ASCII-sorted by filter name. - */ - describeMetricFilters(callback?: (err: AWSError, data: CloudWatchLogs.Types.DescribeMetricFiltersResponse) => void): Request; - /** - * Lists the resource policies in this account. - */ - describeResourcePolicies(params: CloudWatchLogs.Types.DescribeResourcePoliciesRequest, callback?: (err: AWSError, data: CloudWatchLogs.Types.DescribeResourcePoliciesResponse) => void): Request; - /** - * Lists the resource policies in this account. - */ - describeResourcePolicies(callback?: (err: AWSError, data: CloudWatchLogs.Types.DescribeResourcePoliciesResponse) => void): Request; - /** - * Lists the subscription filters for the specified log group. You can list all the subscription filters or filter the results by prefix. The results are ASCII-sorted by filter name. - */ - describeSubscriptionFilters(params: CloudWatchLogs.Types.DescribeSubscriptionFiltersRequest, callback?: (err: AWSError, data: CloudWatchLogs.Types.DescribeSubscriptionFiltersResponse) => void): Request; - /** - * Lists the subscription filters for the specified log group. You can list all the subscription filters or filter the results by prefix. The results are ASCII-sorted by filter name. - */ - describeSubscriptionFilters(callback?: (err: AWSError, data: CloudWatchLogs.Types.DescribeSubscriptionFiltersResponse) => void): Request; - /** - * Disassociates the associated AWS Key Management Service (AWS KMS) customer master key (CMK) from the specified log group. After the AWS KMS CMK is disassociated from the log group, AWS CloudWatch Logs stops encrypting newly ingested data for the log group. All previously ingested data remains encrypted, and AWS CloudWatch Logs requires permissions for the CMK whenever the encrypted data is requested. Note that it can take up to 5 minutes for this operation to take effect. - */ - disassociateKmsKey(params: CloudWatchLogs.Types.DisassociateKmsKeyRequest, callback?: (err: AWSError, data: {}) => void): Request<{}, AWSError>; - /** - * Disassociates the associated AWS Key Management Service (AWS KMS) customer master key (CMK) from the specified log group. After the AWS KMS CMK is disassociated from the log group, AWS CloudWatch Logs stops encrypting newly ingested data for the log group. All previously ingested data remains encrypted, and AWS CloudWatch Logs requires permissions for the CMK whenever the encrypted data is requested. Note that it can take up to 5 minutes for this operation to take effect. - */ - disassociateKmsKey(callback?: (err: AWSError, data: {}) => void): Request<{}, AWSError>; - /** - * Lists log events from the specified log group. You can list all the log events or filter the results using a filter pattern, a time range, and the name of the log stream. By default, this operation returns as many log events as can fit in 1 MB (up to 10,000 log events), or all the events found within the time range that you specify. If the results include a token, then there are more log events available, and you can get additional results by specifying the token in a subsequent call. - */ - filterLogEvents(params: CloudWatchLogs.Types.FilterLogEventsRequest, callback?: (err: AWSError, data: CloudWatchLogs.Types.FilterLogEventsResponse) => void): Request; - /** - * Lists log events from the specified log group. You can list all the log events or filter the results using a filter pattern, a time range, and the name of the log stream. By default, this operation returns as many log events as can fit in 1 MB (up to 10,000 log events), or all the events found within the time range that you specify. If the results include a token, then there are more log events available, and you can get additional results by specifying the token in a subsequent call. - */ - filterLogEvents(callback?: (err: AWSError, data: CloudWatchLogs.Types.FilterLogEventsResponse) => void): Request; - /** - * Lists log events from the specified log stream. You can list all the log events or filter using a time range. By default, this operation returns as many log events as can fit in a response size of 1MB (up to 10,000 log events). You can get additional log events by specifying one of the tokens in a subsequent call. - */ - getLogEvents(params: CloudWatchLogs.Types.GetLogEventsRequest, callback?: (err: AWSError, data: CloudWatchLogs.Types.GetLogEventsResponse) => void): Request; - /** - * Lists log events from the specified log stream. You can list all the log events or filter using a time range. By default, this operation returns as many log events as can fit in a response size of 1MB (up to 10,000 log events). You can get additional log events by specifying one of the tokens in a subsequent call. - */ - getLogEvents(callback?: (err: AWSError, data: CloudWatchLogs.Types.GetLogEventsResponse) => void): Request; - /** - * Lists the tags for the specified log group. - */ - listTagsLogGroup(params: CloudWatchLogs.Types.ListTagsLogGroupRequest, callback?: (err: AWSError, data: CloudWatchLogs.Types.ListTagsLogGroupResponse) => void): Request; - /** - * Lists the tags for the specified log group. - */ - listTagsLogGroup(callback?: (err: AWSError, data: CloudWatchLogs.Types.ListTagsLogGroupResponse) => void): Request; - /** - * Creates or updates a destination. A destination encapsulates a physical resource (such as an Amazon Kinesis stream) and enables you to subscribe to a real-time stream of log events for a different account, ingested using PutLogEvents. Currently, the only supported physical resource is a Kinesis stream belonging to the same account as the destination. Through an access policy, a destination controls what is written to its Kinesis stream. By default, PutDestination does not set any access policy with the destination, which means a cross-account user cannot call PutSubscriptionFilter against this destination. To enable this, the destination owner must call PutDestinationPolicy after PutDestination. - */ - putDestination(params: CloudWatchLogs.Types.PutDestinationRequest, callback?: (err: AWSError, data: CloudWatchLogs.Types.PutDestinationResponse) => void): Request; - /** - * Creates or updates a destination. A destination encapsulates a physical resource (such as an Amazon Kinesis stream) and enables you to subscribe to a real-time stream of log events for a different account, ingested using PutLogEvents. Currently, the only supported physical resource is a Kinesis stream belonging to the same account as the destination. Through an access policy, a destination controls what is written to its Kinesis stream. By default, PutDestination does not set any access policy with the destination, which means a cross-account user cannot call PutSubscriptionFilter against this destination. To enable this, the destination owner must call PutDestinationPolicy after PutDestination. - */ - putDestination(callback?: (err: AWSError, data: CloudWatchLogs.Types.PutDestinationResponse) => void): Request; - /** - * Creates or updates an access policy associated with an existing destination. An access policy is an IAM policy document that is used to authorize claims to register a subscription filter against a given destination. - */ - putDestinationPolicy(params: CloudWatchLogs.Types.PutDestinationPolicyRequest, callback?: (err: AWSError, data: {}) => void): Request<{}, AWSError>; - /** - * Creates or updates an access policy associated with an existing destination. An access policy is an IAM policy document that is used to authorize claims to register a subscription filter against a given destination. - */ - putDestinationPolicy(callback?: (err: AWSError, data: {}) => void): Request<{}, AWSError>; - /** - * Uploads a batch of log events to the specified log stream. You must include the sequence token obtained from the response of the previous call. An upload in a newly created log stream does not require a sequence token. You can also get the sequence token using DescribeLogStreams. If you call PutLogEvents twice within a narrow time period using the same value for sequenceToken, both calls may be successful, or one may be rejected. The batch of events must satisfy the following constraints: The maximum batch size is 1,048,576 bytes, and this size is calculated as the sum of all event messages in UTF-8, plus 26 bytes for each log event. None of the log events in the batch can be more than 2 hours in the future. None of the log events in the batch can be older than 14 days or the retention period of the log group. The log events in the batch must be in chronological ordered by their time stamp (the time the event occurred, expressed as the number of milliseconds after Jan 1, 1970 00:00:00 UTC). The maximum number of log events in a batch is 10,000. A batch of log events in a single request cannot span more than 24 hours. Otherwise, the operation fails. - */ - putLogEvents(params: CloudWatchLogs.Types.PutLogEventsRequest, callback?: (err: AWSError, data: CloudWatchLogs.Types.PutLogEventsResponse) => void): Request; - /** - * Uploads a batch of log events to the specified log stream. You must include the sequence token obtained from the response of the previous call. An upload in a newly created log stream does not require a sequence token. You can also get the sequence token using DescribeLogStreams. If you call PutLogEvents twice within a narrow time period using the same value for sequenceToken, both calls may be successful, or one may be rejected. The batch of events must satisfy the following constraints: The maximum batch size is 1,048,576 bytes, and this size is calculated as the sum of all event messages in UTF-8, plus 26 bytes for each log event. None of the log events in the batch can be more than 2 hours in the future. None of the log events in the batch can be older than 14 days or the retention period of the log group. The log events in the batch must be in chronological ordered by their time stamp (the time the event occurred, expressed as the number of milliseconds after Jan 1, 1970 00:00:00 UTC). The maximum number of log events in a batch is 10,000. A batch of log events in a single request cannot span more than 24 hours. Otherwise, the operation fails. - */ - putLogEvents(callback?: (err: AWSError, data: CloudWatchLogs.Types.PutLogEventsResponse) => void): Request; - /** - * Creates or updates a metric filter and associates it with the specified log group. Metric filters allow you to configure rules to extract metric data from log events ingested through PutLogEvents. The maximum number of metric filters that can be associated with a log group is 100. - */ - putMetricFilter(params: CloudWatchLogs.Types.PutMetricFilterRequest, callback?: (err: AWSError, data: {}) => void): Request<{}, AWSError>; - /** - * Creates or updates a metric filter and associates it with the specified log group. Metric filters allow you to configure rules to extract metric data from log events ingested through PutLogEvents. The maximum number of metric filters that can be associated with a log group is 100. - */ - putMetricFilter(callback?: (err: AWSError, data: {}) => void): Request<{}, AWSError>; - /** - * Creates or updates a resource policy allowing other AWS services to put log events to this account, such as Amazon Route 53. An account can have up to 50 resource policies per region. - */ - putResourcePolicy(params: CloudWatchLogs.Types.PutResourcePolicyRequest, callback?: (err: AWSError, data: CloudWatchLogs.Types.PutResourcePolicyResponse) => void): Request; - /** - * Creates or updates a resource policy allowing other AWS services to put log events to this account, such as Amazon Route 53. An account can have up to 50 resource policies per region. - */ - putResourcePolicy(callback?: (err: AWSError, data: CloudWatchLogs.Types.PutResourcePolicyResponse) => void): Request; - /** - * Sets the retention of the specified log group. A retention policy allows you to configure the number of days for which to retain log events in the specified log group. - */ - putRetentionPolicy(params: CloudWatchLogs.Types.PutRetentionPolicyRequest, callback?: (err: AWSError, data: {}) => void): Request<{}, AWSError>; - /** - * Sets the retention of the specified log group. A retention policy allows you to configure the number of days for which to retain log events in the specified log group. - */ - putRetentionPolicy(callback?: (err: AWSError, data: {}) => void): Request<{}, AWSError>; - /** - * Creates or updates a subscription filter and associates it with the specified log group. Subscription filters allow you to subscribe to a real-time stream of log events ingested through PutLogEvents and have them delivered to a specific destination. Currently, the supported destinations are: An Amazon Kinesis stream belonging to the same account as the subscription filter, for same-account delivery. A logical destination that belongs to a different account, for cross-account delivery. An Amazon Kinesis Firehose delivery stream that belongs to the same account as the subscription filter, for same-account delivery. An AWS Lambda function that belongs to the same account as the subscription filter, for same-account delivery. There can only be one subscription filter associated with a log group. If you are updating an existing filter, you must specify the correct name in filterName. Otherwise, the call fails because you cannot associate a second filter with a log group. - */ - putSubscriptionFilter(params: CloudWatchLogs.Types.PutSubscriptionFilterRequest, callback?: (err: AWSError, data: {}) => void): Request<{}, AWSError>; - /** - * Creates or updates a subscription filter and associates it with the specified log group. Subscription filters allow you to subscribe to a real-time stream of log events ingested through PutLogEvents and have them delivered to a specific destination. Currently, the supported destinations are: An Amazon Kinesis stream belonging to the same account as the subscription filter, for same-account delivery. A logical destination that belongs to a different account, for cross-account delivery. An Amazon Kinesis Firehose delivery stream that belongs to the same account as the subscription filter, for same-account delivery. An AWS Lambda function that belongs to the same account as the subscription filter, for same-account delivery. There can only be one subscription filter associated with a log group. If you are updating an existing filter, you must specify the correct name in filterName. Otherwise, the call fails because you cannot associate a second filter with a log group. - */ - putSubscriptionFilter(callback?: (err: AWSError, data: {}) => void): Request<{}, AWSError>; - /** - * Adds or updates the specified tags for the specified log group. To list the tags for a log group, use ListTagsLogGroup. To remove tags, use UntagLogGroup. For more information about tags, see Tag Log Groups in Amazon CloudWatch Logs in the Amazon CloudWatch Logs User Guide. - */ - tagLogGroup(params: CloudWatchLogs.Types.TagLogGroupRequest, callback?: (err: AWSError, data: {}) => void): Request<{}, AWSError>; - /** - * Adds or updates the specified tags for the specified log group. To list the tags for a log group, use ListTagsLogGroup. To remove tags, use UntagLogGroup. For more information about tags, see Tag Log Groups in Amazon CloudWatch Logs in the Amazon CloudWatch Logs User Guide. - */ - tagLogGroup(callback?: (err: AWSError, data: {}) => void): Request<{}, AWSError>; - /** - * Tests the filter pattern of a metric filter against a sample of log event messages. You can use this operation to validate the correctness of a metric filter pattern. - */ - testMetricFilter(params: CloudWatchLogs.Types.TestMetricFilterRequest, callback?: (err: AWSError, data: CloudWatchLogs.Types.TestMetricFilterResponse) => void): Request; - /** - * Tests the filter pattern of a metric filter against a sample of log event messages. You can use this operation to validate the correctness of a metric filter pattern. - */ - testMetricFilter(callback?: (err: AWSError, data: CloudWatchLogs.Types.TestMetricFilterResponse) => void): Request; - /** - * Removes the specified tags from the specified log group. To list the tags for a log group, use ListTagsLogGroup. To add tags, use UntagLogGroup. - */ - untagLogGroup(params: CloudWatchLogs.Types.UntagLogGroupRequest, callback?: (err: AWSError, data: {}) => void): Request<{}, AWSError>; - /** - * Removes the specified tags from the specified log group. To list the tags for a log group, use ListTagsLogGroup. To add tags, use UntagLogGroup. - */ - untagLogGroup(callback?: (err: AWSError, data: {}) => void): Request<{}, AWSError>; -} -declare namespace CloudWatchLogs { - export type AccessPolicy = string; - export type Arn = string; - export interface AssociateKmsKeyRequest { - /** - * The name of the log group. - */ - logGroupName: LogGroupName; - /** - * The Amazon Resource Name (ARN) of the CMK to use when encrypting log data. For more information, see Amazon Resource Names - AWS Key Management Service (AWS KMS). - */ - kmsKeyId: KmsKeyId; - } - export interface CancelExportTaskRequest { - /** - * The ID of the export task. - */ - taskId: ExportTaskId; - } - export interface CreateExportTaskRequest { - /** - * The name of the export task. - */ - taskName?: ExportTaskName; - /** - * The name of the log group. - */ - logGroupName: LogGroupName; - /** - * Export only log streams that match the provided prefix. If you don't specify a value, no prefix filter is applied. - */ - logStreamNamePrefix?: LogStreamName; - /** - * The start time of the range for the request, expressed as the number of milliseconds after Jan 1, 1970 00:00:00 UTC. Events with a time stamp earlier than this time are not exported. - */ - from: Timestamp; - /** - * The end time of the range for the request, expressed as the number of milliseconds after Jan 1, 1970 00:00:00 UTC. Events with a time stamp later than this time are not exported. - */ - to: Timestamp; - /** - * The name of S3 bucket for the exported log data. The bucket must be in the same AWS region. - */ - destination: ExportDestinationBucket; - /** - * The prefix used as the start of the key for every object exported. If you don't specify a value, the default is exportedlogs. - */ - destinationPrefix?: ExportDestinationPrefix; - } - export interface CreateExportTaskResponse { - /** - * The ID of the export task. - */ - taskId?: ExportTaskId; - } - export interface CreateLogGroupRequest { - /** - * The name of the log group. - */ - logGroupName: LogGroupName; - /** - * The Amazon Resource Name (ARN) of the CMK to use when encrypting log data. For more information, see Amazon Resource Names - AWS Key Management Service (AWS KMS). - */ - kmsKeyId?: KmsKeyId; - /** - * The key-value pairs to use for the tags. - */ - tags?: Tags; - } - export interface CreateLogStreamRequest { - /** - * The name of the log group. - */ - logGroupName: LogGroupName; - /** - * The name of the log stream. - */ - logStreamName: LogStreamName; - } - export type Days = number; - export type DefaultValue = number; - export interface DeleteDestinationRequest { - /** - * The name of the destination. - */ - destinationName: DestinationName; - } - export interface DeleteLogGroupRequest { - /** - * The name of the log group. - */ - logGroupName: LogGroupName; - } - export interface DeleteLogStreamRequest { - /** - * The name of the log group. - */ - logGroupName: LogGroupName; - /** - * The name of the log stream. - */ - logStreamName: LogStreamName; - } - export interface DeleteMetricFilterRequest { - /** - * The name of the log group. - */ - logGroupName: LogGroupName; - /** - * The name of the metric filter. - */ - filterName: FilterName; - } - export interface DeleteResourcePolicyRequest { - /** - * The name of the policy to be revoked. This parameter is required. - */ - policyName?: PolicyName; - } - export interface DeleteRetentionPolicyRequest { - /** - * The name of the log group. - */ - logGroupName: LogGroupName; - } - export interface DeleteSubscriptionFilterRequest { - /** - * The name of the log group. - */ - logGroupName: LogGroupName; - /** - * The name of the subscription filter. - */ - filterName: FilterName; - } - export type Descending = boolean; - export interface DescribeDestinationsRequest { - /** - * The prefix to match. If you don't specify a value, no prefix filter is applied. - */ - DestinationNamePrefix?: DestinationName; - /** - * The token for the next set of items to return. (You received this token from a previous call.) - */ - nextToken?: NextToken; - /** - * The maximum number of items returned. If you don't specify a value, the default is up to 50 items. - */ - limit?: DescribeLimit; - } - export interface DescribeDestinationsResponse { - /** - * The destinations. - */ - destinations?: Destinations; - nextToken?: NextToken; - } - export interface DescribeExportTasksRequest { - /** - * The ID of the export task. Specifying a task ID filters the results to zero or one export tasks. - */ - taskId?: ExportTaskId; - /** - * The status code of the export task. Specifying a status code filters the results to zero or more export tasks. - */ - statusCode?: ExportTaskStatusCode; - /** - * The token for the next set of items to return. (You received this token from a previous call.) - */ - nextToken?: NextToken; - /** - * The maximum number of items returned. If you don't specify a value, the default is up to 50 items. - */ - limit?: DescribeLimit; - } - export interface DescribeExportTasksResponse { - /** - * The export tasks. - */ - exportTasks?: ExportTasks; - nextToken?: NextToken; - } - export type DescribeLimit = number; - export interface DescribeLogGroupsRequest { - /** - * The prefix to match. - */ - logGroupNamePrefix?: LogGroupName; - /** - * The token for the next set of items to return. (You received this token from a previous call.) - */ - nextToken?: NextToken; - /** - * The maximum number of items returned. If you don't specify a value, the default is up to 50 items. - */ - limit?: DescribeLimit; - } - export interface DescribeLogGroupsResponse { - /** - * The log groups. - */ - logGroups?: LogGroups; - nextToken?: NextToken; - } - export interface DescribeLogStreamsRequest { - /** - * The name of the log group. - */ - logGroupName: LogGroupName; - /** - * The prefix to match. iIf orderBy is LastEventTime,you cannot specify this parameter. - */ - logStreamNamePrefix?: LogStreamName; - /** - * If the value is LogStreamName, the results are ordered by log stream name. If the value is LastEventTime, the results are ordered by the event time. The default value is LogStreamName. If you order the results by event time, you cannot specify the logStreamNamePrefix parameter. lastEventTimestamp represents the time of the most recent log event in the log stream in CloudWatch Logs. This number is expressed as the number of milliseconds after Jan 1, 1970 00:00:00 UTC. lastEventTimeStamp updates on an eventual consistency basis. It typically updates in less than an hour from ingestion, but may take longer in some rare situations. - */ - orderBy?: OrderBy; - /** - * If the value is true, results are returned in descending order. If the value is to false, results are returned in ascending order. The default value is false. - */ - descending?: Descending; - /** - * The token for the next set of items to return. (You received this token from a previous call.) - */ - nextToken?: NextToken; - /** - * The maximum number of items returned. If you don't specify a value, the default is up to 50 items. - */ - limit?: DescribeLimit; - } - export interface DescribeLogStreamsResponse { - /** - * The log streams. - */ - logStreams?: LogStreams; - nextToken?: NextToken; - } - export interface DescribeMetricFiltersRequest { - /** - * The name of the log group. - */ - logGroupName?: LogGroupName; - /** - * The prefix to match. - */ - filterNamePrefix?: FilterName; - /** - * The token for the next set of items to return. (You received this token from a previous call.) - */ - nextToken?: NextToken; - /** - * The maximum number of items returned. If you don't specify a value, the default is up to 50 items. - */ - limit?: DescribeLimit; - metricName?: MetricName; - /** - * The namespace of the CloudWatch metric. - */ - metricNamespace?: MetricNamespace; - } - export interface DescribeMetricFiltersResponse { - /** - * The metric filters. - */ - metricFilters?: MetricFilters; - nextToken?: NextToken; - } - export interface DescribeResourcePoliciesRequest { - nextToken?: NextToken; - /** - * The maximum number of resource policies to be displayed with one call of this API. - */ - limit?: DescribeLimit; - } - export interface DescribeResourcePoliciesResponse { - /** - * The resource policies that exist in this account. - */ - resourcePolicies?: ResourcePolicies; - nextToken?: NextToken; - } - export interface DescribeSubscriptionFiltersRequest { - /** - * The name of the log group. - */ - logGroupName: LogGroupName; - /** - * The prefix to match. If you don't specify a value, no prefix filter is applied. - */ - filterNamePrefix?: FilterName; - /** - * The token for the next set of items to return. (You received this token from a previous call.) - */ - nextToken?: NextToken; - /** - * The maximum number of items returned. If you don't specify a value, the default is up to 50 items. - */ - limit?: DescribeLimit; - } - export interface DescribeSubscriptionFiltersResponse { - /** - * The subscription filters. - */ - subscriptionFilters?: SubscriptionFilters; - nextToken?: NextToken; - } - export interface Destination { - /** - * The name of the destination. - */ - destinationName?: DestinationName; - /** - * The Amazon Resource Name (ARN) of the physical target to where the log events are delivered (for example, a Kinesis stream). - */ - targetArn?: TargetArn; - /** - * A role for impersonation, used when delivering log events to the target. - */ - roleArn?: RoleArn; - /** - * An IAM policy document that governs which AWS accounts can create subscription filters against this destination. - */ - accessPolicy?: AccessPolicy; - /** - * The ARN of this destination. - */ - arn?: Arn; - /** - * The creation time of the destination, expressed as the number of milliseconds after Jan 1, 1970 00:00:00 UTC. - */ - creationTime?: Timestamp; - } - export type DestinationArn = string; - export type DestinationName = string; - export type Destinations = Destination[]; - export interface DisassociateKmsKeyRequest { - /** - * The name of the log group. - */ - logGroupName: LogGroupName; - } - export type Distribution = "Random"|"ByLogStream"|string; - export type EventId = string; - export type EventMessage = string; - export type EventNumber = number; - export type EventsLimit = number; - export type ExportDestinationBucket = string; - export type ExportDestinationPrefix = string; - export interface ExportTask { - /** - * The ID of the export task. - */ - taskId?: ExportTaskId; - /** - * The name of the export task. - */ - taskName?: ExportTaskName; - /** - * The name of the log group from which logs data was exported. - */ - logGroupName?: LogGroupName; - /** - * The start time, expressed as the number of milliseconds after Jan 1, 1970 00:00:00 UTC. Events with a time stamp before this time are not exported. - */ - from?: Timestamp; - /** - * The end time, expressed as the number of milliseconds after Jan 1, 1970 00:00:00 UTC. Events with a time stamp later than this time are not exported. - */ - to?: Timestamp; - /** - * The name of Amazon S3 bucket to which the log data was exported. - */ - destination?: ExportDestinationBucket; - /** - * The prefix that was used as the start of Amazon S3 key for every object exported. - */ - destinationPrefix?: ExportDestinationPrefix; - /** - * The status of the export task. - */ - status?: ExportTaskStatus; - /** - * Execution info about the export task. - */ - executionInfo?: ExportTaskExecutionInfo; - } - export interface ExportTaskExecutionInfo { - /** - * The creation time of the export task, expressed as the number of milliseconds after Jan 1, 1970 00:00:00 UTC. - */ - creationTime?: Timestamp; - /** - * The completion time of the export task, expressed as the number of milliseconds after Jan 1, 1970 00:00:00 UTC. - */ - completionTime?: Timestamp; - } - export type ExportTaskId = string; - export type ExportTaskName = string; - export interface ExportTaskStatus { - /** - * The status code of the export task. - */ - code?: ExportTaskStatusCode; - /** - * The status message related to the status code. - */ - message?: ExportTaskStatusMessage; - } - export type ExportTaskStatusCode = "CANCELLED"|"COMPLETED"|"FAILED"|"PENDING"|"PENDING_CANCEL"|"RUNNING"|string; - export type ExportTaskStatusMessage = string; - export type ExportTasks = ExportTask[]; - export type ExtractedValues = {[key: string]: Value}; - export type FilterCount = number; - export interface FilterLogEventsRequest { - /** - * The name of the log group. - */ - logGroupName: LogGroupName; - /** - * Optional list of log stream names. - */ - logStreamNames?: InputLogStreamNames; - /** - * The start of the time range, expressed as the number of milliseconds after Jan 1, 1970 00:00:00 UTC. Events with a time stamp before this time are not returned. - */ - startTime?: Timestamp; - /** - * The end of the time range, expressed as the number of milliseconds after Jan 1, 1970 00:00:00 UTC. Events with a time stamp later than this time are not returned. - */ - endTime?: Timestamp; - /** - * The filter pattern to use. If not provided, all the events are matched. - */ - filterPattern?: FilterPattern; - /** - * The token for the next set of events to return. (You received this token from a previous call.) - */ - nextToken?: NextToken; - /** - * The maximum number of events to return. The default is 10,000 events. - */ - limit?: EventsLimit; - /** - * If the value is true, the operation makes a best effort to provide responses that contain events from multiple log streams within the log group, interleaved in a single response. If the value is false, all the matched log events in the first log stream are searched first, then those in the next log stream, and so on. The default is false. - */ - interleaved?: Interleaved; - } - export interface FilterLogEventsResponse { - /** - * The matched events. - */ - events?: FilteredLogEvents; - /** - * Indicates which log streams have been searched and whether each has been searched completely. - */ - searchedLogStreams?: SearchedLogStreams; - /** - * The token to use when requesting the next set of items. The token expires after 24 hours. - */ - nextToken?: NextToken; - } - export type FilterName = string; - export type FilterPattern = string; - export interface FilteredLogEvent { - /** - * The name of the log stream this event belongs to. - */ - logStreamName?: LogStreamName; - /** - * The time the event occurred, expressed as the number of milliseconds after Jan 1, 1970 00:00:00 UTC. - */ - timestamp?: Timestamp; - /** - * The data contained in the log event. - */ - message?: EventMessage; - /** - * The time the event was ingested, expressed as the number of milliseconds after Jan 1, 1970 00:00:00 UTC. - */ - ingestionTime?: Timestamp; - /** - * The ID of the event. - */ - eventId?: EventId; - } - export type FilteredLogEvents = FilteredLogEvent[]; - export interface GetLogEventsRequest { - /** - * The name of the log group. - */ - logGroupName: LogGroupName; - /** - * The name of the log stream. - */ - logStreamName: LogStreamName; - /** - * The start of the time range, expressed as the number of milliseconds after Jan 1, 1970 00:00:00 UTC. Events with a time stamp earlier than this time are not included. - */ - startTime?: Timestamp; - /** - * The end of the time range, expressed as the number of milliseconds after Jan 1, 1970 00:00:00 UTC. Events with a time stamp later than this time are not included. - */ - endTime?: Timestamp; - /** - * The token for the next set of items to return. (You received this token from a previous call.) - */ - nextToken?: NextToken; - /** - * The maximum number of log events returned. If you don't specify a value, the maximum is as many log events as can fit in a response size of 1 MB, up to 10,000 log events. - */ - limit?: EventsLimit; - /** - * If the value is true, the earliest log events are returned first. If the value is false, the latest log events are returned first. The default value is false. - */ - startFromHead?: StartFromHead; - } - export interface GetLogEventsResponse { - /** - * The events. - */ - events?: OutputLogEvents; - /** - * The token for the next set of items in the forward direction. The token expires after 24 hours. - */ - nextForwardToken?: NextToken; - /** - * The token for the next set of items in the backward direction. The token expires after 24 hours. - */ - nextBackwardToken?: NextToken; - } - export interface InputLogEvent { - /** - * The time the event occurred, expressed as the number of milliseconds fter Jan 1, 1970 00:00:00 UTC. - */ - timestamp: Timestamp; - /** - * The raw event message. - */ - message: EventMessage; - } - export type InputLogEvents = InputLogEvent[]; - export type InputLogStreamNames = LogStreamName[]; - export type Interleaved = boolean; - export type KmsKeyId = string; - export interface ListTagsLogGroupRequest { - /** - * The name of the log group. - */ - logGroupName: LogGroupName; - } - export interface ListTagsLogGroupResponse { - /** - * The tags for the log group. - */ - tags?: Tags; - } - export type LogEventIndex = number; - export interface LogGroup { - /** - * The name of the log group. - */ - logGroupName?: LogGroupName; - /** - * The creation time of the log group, expressed as the number of milliseconds after Jan 1, 1970 00:00:00 UTC. - */ - creationTime?: Timestamp; - retentionInDays?: Days; - /** - * The number of metric filters. - */ - metricFilterCount?: FilterCount; - /** - * The Amazon Resource Name (ARN) of the log group. - */ - arn?: Arn; - /** - * The number of bytes stored. - */ - storedBytes?: StoredBytes; - /** - * The Amazon Resource Name (ARN) of the CMK to use when encrypting log data. - */ - kmsKeyId?: KmsKeyId; - } - export type LogGroupName = string; - export type LogGroups = LogGroup[]; - export interface LogStream { - /** - * The name of the log stream. - */ - logStreamName?: LogStreamName; - /** - * The creation time of the stream, expressed as the number of milliseconds after Jan 1, 1970 00:00:00 UTC. - */ - creationTime?: Timestamp; - /** - * The time of the first event, expressed as the number of milliseconds after Jan 1, 1970 00:00:00 UTC. - */ - firstEventTimestamp?: Timestamp; - /** - * the time of the most recent log event in the log stream in CloudWatch Logs. This number is expressed as the number of milliseconds after Jan 1, 1970 00:00:00 UTC. lastEventTime updates on an eventual consistency basis. It typically updates in less than an hour from ingestion, but may take longer in some rare situations. - */ - lastEventTimestamp?: Timestamp; - /** - * The ingestion time, expressed as the number of milliseconds after Jan 1, 1970 00:00:00 UTC. - */ - lastIngestionTime?: Timestamp; - /** - * The sequence token. - */ - uploadSequenceToken?: SequenceToken; - /** - * The Amazon Resource Name (ARN) of the log stream. - */ - arn?: Arn; - /** - * The number of bytes stored. - */ - storedBytes?: StoredBytes; - } - export type LogStreamName = string; - export type LogStreamSearchedCompletely = boolean; - export type LogStreams = LogStream[]; - export interface MetricFilter { - /** - * The name of the metric filter. - */ - filterName?: FilterName; - filterPattern?: FilterPattern; - /** - * The metric transformations. - */ - metricTransformations?: MetricTransformations; - /** - * The creation time of the metric filter, expressed as the number of milliseconds after Jan 1, 1970 00:00:00 UTC. - */ - creationTime?: Timestamp; - /** - * The name of the log group. - */ - logGroupName?: LogGroupName; - } - export interface MetricFilterMatchRecord { - /** - * The event number. - */ - eventNumber?: EventNumber; - /** - * The raw event data. - */ - eventMessage?: EventMessage; - /** - * The values extracted from the event data by the filter. - */ - extractedValues?: ExtractedValues; - } - export type MetricFilterMatches = MetricFilterMatchRecord[]; - export type MetricFilters = MetricFilter[]; - export type MetricName = string; - export type MetricNamespace = string; - export interface MetricTransformation { - /** - * The name of the CloudWatch metric. - */ - metricName: MetricName; - /** - * The namespace of the CloudWatch metric. - */ - metricNamespace: MetricNamespace; - /** - * The value to publish to the CloudWatch metric when a filter pattern matches a log event. - */ - metricValue: MetricValue; - /** - * (Optional) The value to emit when a filter pattern does not match a log event. This value can be null. - */ - defaultValue?: DefaultValue; - } - export type MetricTransformations = MetricTransformation[]; - export type MetricValue = string; - export type NextToken = string; - export type OrderBy = "LogStreamName"|"LastEventTime"|string; - export interface OutputLogEvent { - /** - * The time the event occurred, expressed as the number of milliseconds after Jan 1, 1970 00:00:00 UTC. - */ - timestamp?: Timestamp; - /** - * The data contained in the log event. - */ - message?: EventMessage; - /** - * The time the event was ingested, expressed as the number of milliseconds after Jan 1, 1970 00:00:00 UTC. - */ - ingestionTime?: Timestamp; - } - export type OutputLogEvents = OutputLogEvent[]; - export type PolicyDocument = string; - export type PolicyName = string; - export interface PutDestinationPolicyRequest { - /** - * A name for an existing destination. - */ - destinationName: DestinationName; - /** - * An IAM policy document that authorizes cross-account users to deliver their log events to the associated destination. - */ - accessPolicy: AccessPolicy; - } - export interface PutDestinationRequest { - /** - * A name for the destination. - */ - destinationName: DestinationName; - /** - * The ARN of an Amazon Kinesis stream to which to deliver matching log events. - */ - targetArn: TargetArn; - /** - * The ARN of an IAM role that grants CloudWatch Logs permissions to call the Amazon Kinesis PutRecord operation on the destination stream. - */ - roleArn: RoleArn; - } - export interface PutDestinationResponse { - /** - * The destination. - */ - destination?: Destination; - } - export interface PutLogEventsRequest { - /** - * The name of the log group. - */ - logGroupName: LogGroupName; - /** - * The name of the log stream. - */ - logStreamName: LogStreamName; - /** - * The log events. - */ - logEvents: InputLogEvents; - /** - * The sequence token obtained from the response of the previous PutLogEvents call. An upload in a newly created log stream does not require a sequence token. You can also get the sequence token using DescribeLogStreams. If you call PutLogEvents twice within a narrow time period using the same value for sequenceToken, both calls may be successful, or one may be rejected. - */ - sequenceToken?: SequenceToken; - } - export interface PutLogEventsResponse { - /** - * The next sequence token. - */ - nextSequenceToken?: SequenceToken; - /** - * The rejected events. - */ - rejectedLogEventsInfo?: RejectedLogEventsInfo; - } - export interface PutMetricFilterRequest { - /** - * The name of the log group. - */ - logGroupName: LogGroupName; - /** - * A name for the metric filter. - */ - filterName: FilterName; - /** - * A filter pattern for extracting metric data out of ingested log events. - */ - filterPattern: FilterPattern; - /** - * A collection of information that defines how metric data gets emitted. - */ - metricTransformations: MetricTransformations; - } - export interface PutResourcePolicyRequest { - /** - * Name of the new policy. This parameter is required. - */ - policyName?: PolicyName; - /** - * Details of the new policy, including the identity of the principal that is enabled to put logs to this account. This is formatted as a JSON string. The following example creates a resource policy enabling the Route 53 service to put DNS query logs in to the specified log group. Replace "logArn" with the ARN of your CloudWatch Logs resource, such as a log group or log stream. { "Version": "2012-10-17" "Statement": [ { "Sid": "Route53LogsToCloudWatchLogs", "Effect": "Allow", "Principal": { "Service": [ "route53.amazonaws.com" ] }, "Action":"logs:PutLogEvents", "Resource": logArn } ] } - */ - policyDocument?: PolicyDocument; - } - export interface PutResourcePolicyResponse { - /** - * The new policy. - */ - resourcePolicy?: ResourcePolicy; - } - export interface PutRetentionPolicyRequest { - /** - * The name of the log group. - */ - logGroupName: LogGroupName; - retentionInDays: Days; - } - export interface PutSubscriptionFilterRequest { - /** - * The name of the log group. - */ - logGroupName: LogGroupName; - /** - * A name for the subscription filter. If you are updating an existing filter, you must specify the correct name in filterName. Otherwise, the call fails because you cannot associate a second filter with a log group. To find the name of the filter currently associated with a log group, use DescribeSubscriptionFilters. - */ - filterName: FilterName; - /** - * A filter pattern for subscribing to a filtered stream of log events. - */ - filterPattern: FilterPattern; - /** - * The ARN of the destination to deliver matching log events to. Currently, the supported destinations are: An Amazon Kinesis stream belonging to the same account as the subscription filter, for same-account delivery. A logical destination (specified using an ARN) belonging to a different account, for cross-account delivery. An Amazon Kinesis Firehose delivery stream belonging to the same account as the subscription filter, for same-account delivery. An AWS Lambda function belonging to the same account as the subscription filter, for same-account delivery. - */ - destinationArn: DestinationArn; - /** - * The ARN of an IAM role that grants CloudWatch Logs permissions to deliver ingested log events to the destination stream. You don't need to provide the ARN when you are working with a logical destination for cross-account delivery. - */ - roleArn?: RoleArn; - /** - * The method used to distribute log data to the destination. By default log data is grouped by log stream, but the grouping can be set to random for a more even distribution. This property is only applicable when the destination is an Amazon Kinesis stream. - */ - distribution?: Distribution; - } - export interface RejectedLogEventsInfo { - /** - * The log events that are too new. - */ - tooNewLogEventStartIndex?: LogEventIndex; - /** - * The log events that are too old. - */ - tooOldLogEventEndIndex?: LogEventIndex; - /** - * The expired log events. - */ - expiredLogEventEndIndex?: LogEventIndex; - } - export type ResourcePolicies = ResourcePolicy[]; - export interface ResourcePolicy { - /** - * The name of the resource policy. - */ - policyName?: PolicyName; - /** - * The details of the policy. - */ - policyDocument?: PolicyDocument; - /** - * Time stamp showing when this policy was last updated, expressed as the number of milliseconds after Jan 1, 1970 00:00:00 UTC. - */ - lastUpdatedTime?: Timestamp; - } - export type RoleArn = string; - export interface SearchedLogStream { - /** - * The name of the log stream. - */ - logStreamName?: LogStreamName; - /** - * Indicates whether all the events in this log stream were searched. - */ - searchedCompletely?: LogStreamSearchedCompletely; - } - export type SearchedLogStreams = SearchedLogStream[]; - export type SequenceToken = string; - export type StartFromHead = boolean; - export type StoredBytes = number; - export interface SubscriptionFilter { - /** - * The name of the subscription filter. - */ - filterName?: FilterName; - /** - * The name of the log group. - */ - logGroupName?: LogGroupName; - filterPattern?: FilterPattern; - /** - * The Amazon Resource Name (ARN) of the destination. - */ - destinationArn?: DestinationArn; - /** - * - */ - roleArn?: RoleArn; - distribution?: Distribution; - /** - * The creation time of the subscription filter, expressed as the number of milliseconds after Jan 1, 1970 00:00:00 UTC. - */ - creationTime?: Timestamp; - } - export type SubscriptionFilters = SubscriptionFilter[]; - export type TagKey = string; - export type TagList = TagKey[]; - export interface TagLogGroupRequest { - /** - * The name of the log group. - */ - logGroupName: LogGroupName; - /** - * The key-value pairs to use for the tags. - */ - tags: Tags; - } - export type TagValue = string; - export type Tags = {[key: string]: TagValue}; - export type TargetArn = string; - export type TestEventMessages = EventMessage[]; - export interface TestMetricFilterRequest { - filterPattern: FilterPattern; - /** - * The log event messages to test. - */ - logEventMessages: TestEventMessages; - } - export interface TestMetricFilterResponse { - /** - * The matched events. - */ - matches?: MetricFilterMatches; - } - export type Timestamp = number; - export type Token = string; - export interface UntagLogGroupRequest { - /** - * The name of the log group. - */ - logGroupName: LogGroupName; - /** - * The tag keys. The corresponding tags are removed from the log group. - */ - tags: TagList; - } - export type Value = string; - /** - * A string in YYYY-MM-DD format that represents the latest possible API version that can be used in this service. Specify 'latest' to use the latest possible version. - */ - export type apiVersion = "2014-03-28"|"latest"|string; - export interface ClientApiVersions { - /** - * A string in YYYY-MM-DD format that represents the latest possible API version that can be used in this service. Specify 'latest' to use the latest possible version. - */ - apiVersion?: apiVersion; - } - export type ClientConfiguration = ServiceConfigurationOptions & ClientApiVersions; - /** - * Contains interfaces for use with the CloudWatchLogs client. - */ - export import Types = CloudWatchLogs; -} -export = CloudWatchLogs; diff --git a/workshops/monte-carlo-on-ec2-spot-fleet/src/web/node_modules/aws-sdk/clients/cloudwatchlogs.js b/workshops/monte-carlo-on-ec2-spot-fleet/src/web/node_modules/aws-sdk/clients/cloudwatchlogs.js deleted file mode 100644 index d79a8dda..00000000 --- a/workshops/monte-carlo-on-ec2-spot-fleet/src/web/node_modules/aws-sdk/clients/cloudwatchlogs.js +++ /dev/null @@ -1,18 +0,0 @@ -require('../lib/node_loader'); -var AWS = require('../lib/core'); -var Service = AWS.Service; -var apiLoader = AWS.apiLoader; - -apiLoader.services['cloudwatchlogs'] = {}; -AWS.CloudWatchLogs = Service.defineService('cloudwatchlogs', ['2014-03-28']); -Object.defineProperty(apiLoader.services['cloudwatchlogs'], '2014-03-28', { - get: function get() { - var model = require('../apis/logs-2014-03-28.min.json'); - model.paginators = require('../apis/logs-2014-03-28.paginators.json').pagination; - return model; - }, - enumerable: true, - configurable: true -}); - -module.exports = AWS.CloudWatchLogs; diff --git a/workshops/monte-carlo-on-ec2-spot-fleet/src/web/node_modules/aws-sdk/clients/codebuild.d.ts b/workshops/monte-carlo-on-ec2-spot-fleet/src/web/node_modules/aws-sdk/clients/codebuild.d.ts deleted file mode 100644 index b4dda559..00000000 --- a/workshops/monte-carlo-on-ec2-spot-fleet/src/web/node_modules/aws-sdk/clients/codebuild.d.ts +++ /dev/null @@ -1,796 +0,0 @@ -import {Request} from '../lib/request'; -import {Response} from '../lib/response'; -import {AWSError} from '../lib/error'; -import {Service} from '../lib/service'; -import {ServiceConfigurationOptions} from '../lib/service'; -import {ConfigBase as Config} from '../lib/config'; -interface Blob {} -declare class CodeBuild extends Service { - /** - * Constructs a service object. This object has one method for each API operation. - */ - constructor(options?: CodeBuild.Types.ClientConfiguration) - config: Config & CodeBuild.Types.ClientConfiguration; - /** - * Deletes one or more builds. - */ - batchDeleteBuilds(params: CodeBuild.Types.BatchDeleteBuildsInput, callback?: (err: AWSError, data: CodeBuild.Types.BatchDeleteBuildsOutput) => void): Request; - /** - * Deletes one or more builds. - */ - batchDeleteBuilds(callback?: (err: AWSError, data: CodeBuild.Types.BatchDeleteBuildsOutput) => void): Request; - /** - * Gets information about builds. - */ - batchGetBuilds(params: CodeBuild.Types.BatchGetBuildsInput, callback?: (err: AWSError, data: CodeBuild.Types.BatchGetBuildsOutput) => void): Request; - /** - * Gets information about builds. - */ - batchGetBuilds(callback?: (err: AWSError, data: CodeBuild.Types.BatchGetBuildsOutput) => void): Request; - /** - * Gets information about build projects. - */ - batchGetProjects(params: CodeBuild.Types.BatchGetProjectsInput, callback?: (err: AWSError, data: CodeBuild.Types.BatchGetProjectsOutput) => void): Request; - /** - * Gets information about build projects. - */ - batchGetProjects(callback?: (err: AWSError, data: CodeBuild.Types.BatchGetProjectsOutput) => void): Request; - /** - * Creates a build project. - */ - createProject(params: CodeBuild.Types.CreateProjectInput, callback?: (err: AWSError, data: CodeBuild.Types.CreateProjectOutput) => void): Request; - /** - * Creates a build project. - */ - createProject(callback?: (err: AWSError, data: CodeBuild.Types.CreateProjectOutput) => void): Request; - /** - * For an existing AWS CodeBuild build project that has its source code stored in a GitHub repository, enables AWS CodeBuild to begin automatically rebuilding the source code every time a code change is pushed to the repository. If you enable webhooks for an AWS CodeBuild project, and the project is used as a build step in AWS CodePipeline, then two identical builds will be created for each commit. One build is triggered through webhooks, and one through AWS CodePipeline. Because billing is on a per-build basis, you will be billed for both builds. Therefore, if you are using AWS CodePipeline, we recommend that you disable webhooks in CodeBuild. In the AWS CodeBuild console, clear the Webhook box. For more information, see step 9 in Change a Build Project’s Settings. - */ - createWebhook(params: CodeBuild.Types.CreateWebhookInput, callback?: (err: AWSError, data: CodeBuild.Types.CreateWebhookOutput) => void): Request; - /** - * For an existing AWS CodeBuild build project that has its source code stored in a GitHub repository, enables AWS CodeBuild to begin automatically rebuilding the source code every time a code change is pushed to the repository. If you enable webhooks for an AWS CodeBuild project, and the project is used as a build step in AWS CodePipeline, then two identical builds will be created for each commit. One build is triggered through webhooks, and one through AWS CodePipeline. Because billing is on a per-build basis, you will be billed for both builds. Therefore, if you are using AWS CodePipeline, we recommend that you disable webhooks in CodeBuild. In the AWS CodeBuild console, clear the Webhook box. For more information, see step 9 in Change a Build Project’s Settings. - */ - createWebhook(callback?: (err: AWSError, data: CodeBuild.Types.CreateWebhookOutput) => void): Request; - /** - * Deletes a build project. - */ - deleteProject(params: CodeBuild.Types.DeleteProjectInput, callback?: (err: AWSError, data: CodeBuild.Types.DeleteProjectOutput) => void): Request; - /** - * Deletes a build project. - */ - deleteProject(callback?: (err: AWSError, data: CodeBuild.Types.DeleteProjectOutput) => void): Request; - /** - * For an existing AWS CodeBuild build project that has its source code stored in a GitHub repository, stops AWS CodeBuild from automatically rebuilding the source code every time a code change is pushed to the repository. - */ - deleteWebhook(params: CodeBuild.Types.DeleteWebhookInput, callback?: (err: AWSError, data: CodeBuild.Types.DeleteWebhookOutput) => void): Request; - /** - * For an existing AWS CodeBuild build project that has its source code stored in a GitHub repository, stops AWS CodeBuild from automatically rebuilding the source code every time a code change is pushed to the repository. - */ - deleteWebhook(callback?: (err: AWSError, data: CodeBuild.Types.DeleteWebhookOutput) => void): Request; - /** - * Gets a list of build IDs, with each build ID representing a single build. - */ - listBuilds(params: CodeBuild.Types.ListBuildsInput, callback?: (err: AWSError, data: CodeBuild.Types.ListBuildsOutput) => void): Request; - /** - * Gets a list of build IDs, with each build ID representing a single build. - */ - listBuilds(callback?: (err: AWSError, data: CodeBuild.Types.ListBuildsOutput) => void): Request; - /** - * Gets a list of build IDs for the specified build project, with each build ID representing a single build. - */ - listBuildsForProject(params: CodeBuild.Types.ListBuildsForProjectInput, callback?: (err: AWSError, data: CodeBuild.Types.ListBuildsForProjectOutput) => void): Request; - /** - * Gets a list of build IDs for the specified build project, with each build ID representing a single build. - */ - listBuildsForProject(callback?: (err: AWSError, data: CodeBuild.Types.ListBuildsForProjectOutput) => void): Request; - /** - * Gets information about Docker images that are managed by AWS CodeBuild. - */ - listCuratedEnvironmentImages(params: CodeBuild.Types.ListCuratedEnvironmentImagesInput, callback?: (err: AWSError, data: CodeBuild.Types.ListCuratedEnvironmentImagesOutput) => void): Request; - /** - * Gets information about Docker images that are managed by AWS CodeBuild. - */ - listCuratedEnvironmentImages(callback?: (err: AWSError, data: CodeBuild.Types.ListCuratedEnvironmentImagesOutput) => void): Request; - /** - * Gets a list of build project names, with each build project name representing a single build project. - */ - listProjects(params: CodeBuild.Types.ListProjectsInput, callback?: (err: AWSError, data: CodeBuild.Types.ListProjectsOutput) => void): Request; - /** - * Gets a list of build project names, with each build project name representing a single build project. - */ - listProjects(callback?: (err: AWSError, data: CodeBuild.Types.ListProjectsOutput) => void): Request; - /** - * Starts running a build. - */ - startBuild(params: CodeBuild.Types.StartBuildInput, callback?: (err: AWSError, data: CodeBuild.Types.StartBuildOutput) => void): Request; - /** - * Starts running a build. - */ - startBuild(callback?: (err: AWSError, data: CodeBuild.Types.StartBuildOutput) => void): Request; - /** - * Attempts to stop running a build. - */ - stopBuild(params: CodeBuild.Types.StopBuildInput, callback?: (err: AWSError, data: CodeBuild.Types.StopBuildOutput) => void): Request; - /** - * Attempts to stop running a build. - */ - stopBuild(callback?: (err: AWSError, data: CodeBuild.Types.StopBuildOutput) => void): Request; - /** - * Changes the settings of a build project. - */ - updateProject(params: CodeBuild.Types.UpdateProjectInput, callback?: (err: AWSError, data: CodeBuild.Types.UpdateProjectOutput) => void): Request; - /** - * Changes the settings of a build project. - */ - updateProject(callback?: (err: AWSError, data: CodeBuild.Types.UpdateProjectOutput) => void): Request; -} -declare namespace CodeBuild { - export type ArtifactNamespace = "NONE"|"BUILD_ID"|string; - export type ArtifactPackaging = "NONE"|"ZIP"|string; - export type ArtifactsType = "CODEPIPELINE"|"S3"|"NO_ARTIFACTS"|string; - export interface BatchDeleteBuildsInput { - /** - * The IDs of the builds to delete. - */ - ids: BuildIds; - } - export interface BatchDeleteBuildsOutput { - /** - * The IDs of the builds that were successfully deleted. - */ - buildsDeleted?: BuildIds; - /** - * Information about any builds that could not be successfully deleted. - */ - buildsNotDeleted?: BuildsNotDeleted; - } - export interface BatchGetBuildsInput { - /** - * The IDs of the builds. - */ - ids: BuildIds; - } - export interface BatchGetBuildsOutput { - /** - * Information about the requested builds. - */ - builds?: Builds; - /** - * The IDs of builds for which information could not be found. - */ - buildsNotFound?: BuildIds; - } - export interface BatchGetProjectsInput { - /** - * The names of the build projects. - */ - names: ProjectNames; - } - export interface BatchGetProjectsOutput { - /** - * Information about the requested build projects. - */ - projects?: Projects; - /** - * The names of build projects for which information could not be found. - */ - projectsNotFound?: ProjectNames; - } - export type Boolean = boolean; - export interface Build { - /** - * The unique ID for the build. - */ - id?: NonEmptyString; - /** - * The Amazon Resource Name (ARN) of the build. - */ - arn?: NonEmptyString; - /** - * When the build process started, expressed in Unix time format. - */ - startTime?: Timestamp; - /** - * When the build process ended, expressed in Unix time format. - */ - endTime?: Timestamp; - /** - * The current build phase. - */ - currentPhase?: String; - /** - * The current status of the build. Valid values include: FAILED: The build failed. FAULT: The build faulted. IN_PROGRESS: The build is still in progress. STOPPED: The build stopped. SUCCEEDED: The build succeeded. TIMED_OUT: The build timed out. - */ - buildStatus?: StatusType; - /** - * Any version identifier for the version of the source code to be built. - */ - sourceVersion?: NonEmptyString; - /** - * The name of the build project. - */ - projectName?: NonEmptyString; - /** - * Information about all previous build phases that are completed and information about any current build phase that is not yet complete. - */ - phases?: BuildPhases; - /** - * Information about the source code to be built. - */ - source?: ProjectSource; - /** - * Information about the output artifacts for the build. - */ - artifacts?: BuildArtifacts; - /** - * Information about the build environment for this build. - */ - environment?: ProjectEnvironment; - /** - * Information about the build's logs in Amazon CloudWatch Logs. - */ - logs?: LogsLocation; - /** - * How long, in minutes, for AWS CodeBuild to wait before timing out this build if it does not get marked as completed. - */ - timeoutInMinutes?: WrapperInt; - /** - * Whether the build has finished. True if completed; otherwise, false. - */ - buildComplete?: Boolean; - /** - * The entity that started the build. Valid values include: If AWS CodePipeline started the build, the pipeline's name (for example, codepipeline/my-demo-pipeline). If an AWS Identity and Access Management (IAM) user started the build, the user's name (for example MyUserName). If the Jenkins plugin for AWS CodeBuild started the build, the string CodeBuild-Jenkins-Plugin. - */ - initiator?: String; - } - export interface BuildArtifacts { - /** - * Information about the location of the build artifacts. - */ - location?: String; - /** - * The SHA-256 hash of the build artifact. You can use this hash along with a checksum tool to confirm both file integrity and authenticity. This value is available only if the build project's packaging value is set to ZIP. - */ - sha256sum?: String; - /** - * The MD5 hash of the build artifact. You can use this hash along with a checksum tool to confirm both file integrity and authenticity. This value is available only if the build project's packaging value is set to ZIP. - */ - md5sum?: String; - } - export type BuildIds = NonEmptyString[]; - export interface BuildNotDeleted { - /** - * The ID of the build that could not be successfully deleted. - */ - id?: NonEmptyString; - /** - * Additional information about the build that could not be successfully deleted. - */ - statusCode?: String; - } - export interface BuildPhase { - /** - * The name of the build phase. Valid values include: BUILD: Core build activities typically occur in this build phase. COMPLETED: The build has been completed. DOWNLOAD_SOURCE: Source code is being downloaded in this build phase. FINALIZING: The build process is completing in this build phase. INSTALL: Installation activities typically occur in this build phase. POST_BUILD: Post-build activities typically occur in this build phase. PRE_BUILD: Pre-build activities typically occur in this build phase. PROVISIONING: The build environment is being set up. SUBMITTED: The build has been submitted. UPLOAD_ARTIFACTS: Build output artifacts are being uploaded to the output location. - */ - phaseType?: BuildPhaseType; - /** - * The current status of the build phase. Valid values include: FAILED: The build phase failed. FAULT: The build phase faulted. IN_PROGRESS: The build phase is still in progress. STOPPED: The build phase stopped. SUCCEEDED: The build phase succeeded. TIMED_OUT: The build phase timed out. - */ - phaseStatus?: StatusType; - /** - * When the build phase started, expressed in Unix time format. - */ - startTime?: Timestamp; - /** - * When the build phase ended, expressed in Unix time format. - */ - endTime?: Timestamp; - /** - * How long, in seconds, between the starting and ending times of the build's phase. - */ - durationInSeconds?: WrapperLong; - /** - * Additional information about a build phase, especially to help troubleshoot a failed build. - */ - contexts?: PhaseContexts; - } - export type BuildPhaseType = "SUBMITTED"|"PROVISIONING"|"DOWNLOAD_SOURCE"|"INSTALL"|"PRE_BUILD"|"BUILD"|"POST_BUILD"|"UPLOAD_ARTIFACTS"|"FINALIZING"|"COMPLETED"|string; - export type BuildPhases = BuildPhase[]; - export type Builds = Build[]; - export type BuildsNotDeleted = BuildNotDeleted[]; - export type ComputeType = "BUILD_GENERAL1_SMALL"|"BUILD_GENERAL1_MEDIUM"|"BUILD_GENERAL1_LARGE"|string; - export interface CreateProjectInput { - /** - * The name of the build project. - */ - name: ProjectName; - /** - * A description that makes the build project easy to identify. - */ - description?: ProjectDescription; - /** - * Information about the build input source code for the build project. - */ - source: ProjectSource; - /** - * Information about the build output artifacts for the build project. - */ - artifacts: ProjectArtifacts; - /** - * Information about the build environment for the build project. - */ - environment: ProjectEnvironment; - /** - * The ARN of the AWS Identity and Access Management (IAM) role that enables AWS CodeBuild to interact with dependent AWS services on behalf of the AWS account. - */ - serviceRole?: NonEmptyString; - /** - * How long, in minutes, from 5 to 480 (8 hours), for AWS CodeBuild to wait until timing out any build that has not been marked as completed. The default is 60 minutes. - */ - timeoutInMinutes?: TimeOut; - /** - * The AWS Key Management Service (AWS KMS) customer master key (CMK) to be used for encrypting the build output artifacts. You can specify either the CMK's Amazon Resource Name (ARN) or, if available, the CMK's alias (using the format alias/alias-name ). - */ - encryptionKey?: NonEmptyString; - /** - * A set of tags for this build project. These tags are available for use by AWS services that support AWS CodeBuild build project tags. - */ - tags?: TagList; - } - export interface CreateProjectOutput { - /** - * Information about the build project that was created. - */ - project?: Project; - } - export interface CreateWebhookInput { - /** - * The name of the build project. - */ - projectName: ProjectName; - } - export interface CreateWebhookOutput { - /** - * Information about a webhook in GitHub that connects repository events to a build project in AWS CodeBuild. - */ - webhook?: Webhook; - } - export interface DeleteProjectInput { - /** - * The name of the build project. - */ - name: NonEmptyString; - } - export interface DeleteProjectOutput { - } - export interface DeleteWebhookInput { - /** - * The name of the build project. - */ - projectName: ProjectName; - } - export interface DeleteWebhookOutput { - } - export interface EnvironmentImage { - /** - * The name of the Docker image. - */ - name?: String; - /** - * The description of the Docker image. - */ - description?: String; - } - export type EnvironmentImages = EnvironmentImage[]; - export interface EnvironmentLanguage { - /** - * The programming language for the Docker images. - */ - language?: LanguageType; - /** - * The list of Docker images that are related by the specified programming language. - */ - images?: EnvironmentImages; - } - export type EnvironmentLanguages = EnvironmentLanguage[]; - export interface EnvironmentPlatform { - /** - * The platform's name. - */ - platform?: PlatformType; - /** - * The list of programming languages that are available for the specified platform. - */ - languages?: EnvironmentLanguages; - } - export type EnvironmentPlatforms = EnvironmentPlatform[]; - export type EnvironmentType = "LINUX_CONTAINER"|string; - export interface EnvironmentVariable { - /** - * The name or key of the environment variable. - */ - name: NonEmptyString; - /** - * The value of the environment variable. We strongly discourage using environment variables to store sensitive values, especially AWS secret key IDs and secret access keys. Environment variables can be displayed in plain text using tools such as the AWS CodeBuild console and the AWS Command Line Interface (AWS CLI). - */ - value: String; - /** - * The type of environment variable. Valid values include: PARAMETER_STORE: An environment variable stored in Amazon EC2 Systems Manager Parameter Store. PLAINTEXT: An environment variable in plaintext format. - */ - type?: EnvironmentVariableType; - } - export type EnvironmentVariableType = "PLAINTEXT"|"PARAMETER_STORE"|string; - export type EnvironmentVariables = EnvironmentVariable[]; - export type KeyInput = string; - export type LanguageType = "JAVA"|"PYTHON"|"NODE_JS"|"RUBY"|"GOLANG"|"DOCKER"|"ANDROID"|"DOTNET"|"BASE"|string; - export interface ListBuildsForProjectInput { - /** - * The name of the build project. - */ - projectName: NonEmptyString; - /** - * The order to list build IDs. Valid values include: ASCENDING: List the build IDs in ascending order by build ID. DESCENDING: List the build IDs in descending order by build ID. - */ - sortOrder?: SortOrderType; - /** - * During a previous call, if there are more than 100 items in the list, only the first 100 items are returned, along with a unique string called a next token. To get the next batch of items in the list, call this operation again, adding the next token to the call. To get all of the items in the list, keep calling this operation with each subsequent next token that is returned, until no more next tokens are returned. - */ - nextToken?: String; - } - export interface ListBuildsForProjectOutput { - /** - * A list of build IDs for the specified build project, with each build ID representing a single build. - */ - ids?: BuildIds; - /** - * If there are more than 100 items in the list, only the first 100 items are returned, along with a unique string called a next token. To get the next batch of items in the list, call this operation again, adding the next token to the call. - */ - nextToken?: String; - } - export interface ListBuildsInput { - /** - * The order to list build IDs. Valid values include: ASCENDING: List the build IDs in ascending order by build ID. DESCENDING: List the build IDs in descending order by build ID. - */ - sortOrder?: SortOrderType; - /** - * During a previous call, if there are more than 100 items in the list, only the first 100 items are returned, along with a unique string called a next token. To get the next batch of items in the list, call this operation again, adding the next token to the call. To get all of the items in the list, keep calling this operation with each subsequent next token that is returned, until no more next tokens are returned. - */ - nextToken?: String; - } - export interface ListBuildsOutput { - /** - * A list of build IDs, with each build ID representing a single build. - */ - ids?: BuildIds; - /** - * If there are more than 100 items in the list, only the first 100 items are returned, along with a unique string called a next token. To get the next batch of items in the list, call this operation again, adding the next token to the call. - */ - nextToken?: String; - } - export interface ListCuratedEnvironmentImagesInput { - } - export interface ListCuratedEnvironmentImagesOutput { - /** - * Information about supported platforms for Docker images that are managed by AWS CodeBuild. - */ - platforms?: EnvironmentPlatforms; - } - export interface ListProjectsInput { - /** - * The criterion to be used to list build project names. Valid values include: CREATED_TIME: List the build project names based on when each build project was created. LAST_MODIFIED_TIME: List the build project names based on when information about each build project was last changed. NAME: List the build project names based on each build project's name. Use sortOrder to specify in what order to list the build project names based on the preceding criteria. - */ - sortBy?: ProjectSortByType; - /** - * The order in which to list build projects. Valid values include: ASCENDING: List the build project names in ascending order. DESCENDING: List the build project names in descending order. Use sortBy to specify the criterion to be used to list build project names. - */ - sortOrder?: SortOrderType; - /** - * During a previous call, if there are more than 100 items in the list, only the first 100 items are returned, along with a unique string called a next token. To get the next batch of items in the list, call this operation again, adding the next token to the call. To get all of the items in the list, keep calling this operation with each subsequent next token that is returned, until no more next tokens are returned. - */ - nextToken?: NonEmptyString; - } - export interface ListProjectsOutput { - /** - * If there are more than 100 items in the list, only the first 100 items are returned, along with a unique string called a next token. To get the next batch of items in the list, call this operation again, adding the next token to the call. - */ - nextToken?: String; - /** - * The list of build project names, with each build project name representing a single build project. - */ - projects?: ProjectNames; - } - export interface LogsLocation { - /** - * The name of the Amazon CloudWatch Logs group for the build logs. - */ - groupName?: String; - /** - * The name of the Amazon CloudWatch Logs stream for the build logs. - */ - streamName?: String; - /** - * The URL to an individual build log in Amazon CloudWatch Logs. - */ - deepLink?: String; - } - export type NonEmptyString = string; - export interface PhaseContext { - /** - * The status code for the context of the build phase. - */ - statusCode?: String; - /** - * An explanation of the build phase's context. This explanation might include a command ID and an exit code. - */ - message?: String; - } - export type PhaseContexts = PhaseContext[]; - export type PlatformType = "DEBIAN"|"AMAZON_LINUX"|"UBUNTU"|string; - export interface Project { - /** - * The name of the build project. - */ - name?: ProjectName; - /** - * The Amazon Resource Name (ARN) of the build project. - */ - arn?: String; - /** - * A description that makes the build project easy to identify. - */ - description?: ProjectDescription; - /** - * Information about the build input source code for this build project. - */ - source?: ProjectSource; - /** - * Information about the build output artifacts for the build project. - */ - artifacts?: ProjectArtifacts; - /** - * Information about the build environment for this build project. - */ - environment?: ProjectEnvironment; - /** - * The ARN of the AWS Identity and Access Management (IAM) role that enables AWS CodeBuild to interact with dependent AWS services on behalf of the AWS account. - */ - serviceRole?: NonEmptyString; - /** - * How long, in minutes, from 5 to 480 (8 hours), for AWS CodeBuild to wait before timing out any related build that did not get marked as completed. The default is 60 minutes. - */ - timeoutInMinutes?: TimeOut; - /** - * The AWS Key Management Service (AWS KMS) customer master key (CMK) to be used for encrypting the build output artifacts. This is expressed either as the CMK's Amazon Resource Name (ARN) or, if specified, the CMK's alias (using the format alias/alias-name ). - */ - encryptionKey?: NonEmptyString; - /** - * The tags for this build project. These tags are available for use by AWS services that support AWS CodeBuild build project tags. - */ - tags?: TagList; - /** - * When the build project was created, expressed in Unix time format. - */ - created?: Timestamp; - /** - * When the build project's settings were last modified, expressed in Unix time format. - */ - lastModified?: Timestamp; - /** - * Information about a webhook in GitHub that connects repository events to a build project in AWS CodeBuild. - */ - webhook?: Webhook; - } - export interface ProjectArtifacts { - /** - * The type of build output artifact. Valid values include: CODEPIPELINE: The build project will have build output generated through AWS CodePipeline. NO_ARTIFACTS: The build project will not produce any build output. S3: The build project will store build output in Amazon Simple Storage Service (Amazon S3). - */ - type: ArtifactsType; - /** - * Information about the build output artifact location, as follows: If type is set to CODEPIPELINE, then AWS CodePipeline will ignore this value if specified. This is because AWS CodePipeline manages its build output locations instead of AWS CodeBuild. If type is set to NO_ARTIFACTS, then this value will be ignored if specified, because no build output will be produced. If type is set to S3, this is the name of the output bucket. - */ - location?: String; - /** - * Along with namespaceType and name, the pattern that AWS CodeBuild will use to name and store the output artifact, as follows: If type is set to CODEPIPELINE, then AWS CodePipeline will ignore this value if specified. This is because AWS CodePipeline manages its build output names instead of AWS CodeBuild. If type is set to NO_ARTIFACTS, then this value will be ignored if specified, because no build output will be produced. If type is set to S3, this is the path to the output artifact. If path is not specified, then path will not be used. For example, if path is set to MyArtifacts, namespaceType is set to NONE, and name is set to MyArtifact.zip, then the output artifact would be stored in the output bucket at MyArtifacts/MyArtifact.zip. - */ - path?: String; - /** - * Along with path and name, the pattern that AWS CodeBuild will use to determine the name and location to store the output artifact, as follows: If type is set to CODEPIPELINE, then AWS CodePipeline will ignore this value if specified. This is because AWS CodePipeline manages its build output names instead of AWS CodeBuild. If type is set to NO_ARTIFACTS, then this value will be ignored if specified, because no build output will be produced. If type is set to S3, then valid values include: BUILD_ID: Include the build ID in the location of the build output artifact. NONE: Do not include the build ID. This is the default if namespaceType is not specified. For example, if path is set to MyArtifacts, namespaceType is set to BUILD_ID, and name is set to MyArtifact.zip, then the output artifact would be stored in MyArtifacts/build-ID/MyArtifact.zip. - */ - namespaceType?: ArtifactNamespace; - /** - * Along with path and namespaceType, the pattern that AWS CodeBuild will use to name and store the output artifact, as follows: If type is set to CODEPIPELINE, then AWS CodePipeline will ignore this value if specified. This is because AWS CodePipeline manages its build output names instead of AWS CodeBuild. If type is set to NO_ARTIFACTS, then this value will be ignored if specified, because no build output will be produced. If type is set to S3, this is the name of the output artifact object. For example, if path is set to MyArtifacts, namespaceType is set to BUILD_ID, and name is set to MyArtifact.zip, then the output artifact would be stored in MyArtifacts/build-ID/MyArtifact.zip. - */ - name?: String; - /** - * The type of build output artifact to create, as follows: If type is set to CODEPIPELINE, then AWS CodePipeline will ignore this value if specified. This is because AWS CodePipeline manages its build output artifacts instead of AWS CodeBuild. If type is set to NO_ARTIFACTS, then this value will be ignored if specified, because no build output will be produced. If type is set to S3, valid values include: NONE: AWS CodeBuild will create in the output bucket a folder containing the build output. This is the default if packaging is not specified. ZIP: AWS CodeBuild will create in the output bucket a ZIP file containing the build output. - */ - packaging?: ArtifactPackaging; - } - export type ProjectDescription = string; - export interface ProjectEnvironment { - /** - * The type of build environment to use for related builds. - */ - type: EnvironmentType; - /** - * The ID of the Docker image to use for this build project. - */ - image: NonEmptyString; - /** - * Information about the compute resources the build project will use. Available values include: BUILD_GENERAL1_SMALL: Use up to 3 GB memory and 2 vCPUs for builds. BUILD_GENERAL1_MEDIUM: Use up to 7 GB memory and 4 vCPUs for builds. BUILD_GENERAL1_LARGE: Use up to 15 GB memory and 8 vCPUs for builds. - */ - computeType: ComputeType; - /** - * A set of environment variables to make available to builds for this build project. - */ - environmentVariables?: EnvironmentVariables; - /** - * If set to true, enables running the Docker daemon inside a Docker container; otherwise, false or not specified (the default). This value must be set to true only if this build project will be used to build Docker images, and the specified build environment image is not one provided by AWS CodeBuild with Docker support. Otherwise, all associated builds that attempt to interact with the Docker daemon will fail. Note that you must also start the Docker daemon so that your builds can interact with it as needed. One way to do this is to initialize the Docker daemon in the install phase of your build spec by running the following build commands. (Do not run the following build commands if the specified build environment image is provided by AWS CodeBuild with Docker support.) - nohup /usr/local/bin/dockerd --host=unix:///var/run/docker.sock --host=tcp://0.0.0.0:2375 --storage-driver=overlay& - timeout -t 15 sh -c "until docker info; do echo .; sleep 1; done" - */ - privilegedMode?: WrapperBoolean; - } - export type ProjectName = string; - export type ProjectNames = NonEmptyString[]; - export type ProjectSortByType = "NAME"|"CREATED_TIME"|"LAST_MODIFIED_TIME"|string; - export interface ProjectSource { - /** - * The type of repository that contains the source code to be built. Valid values include: BITBUCKET: The source code is in a Bitbucket repository. CODECOMMIT: The source code is in an AWS CodeCommit repository. CODEPIPELINE: The source code settings are specified in the source action of a pipeline in AWS CodePipeline. GITHUB: The source code is in a GitHub repository. S3: The source code is in an Amazon Simple Storage Service (Amazon S3) input bucket. - */ - type: SourceType; - /** - * Information about the location of the source code to be built. Valid values include: For source code settings that are specified in the source action of a pipeline in AWS CodePipeline, location should not be specified. If it is specified, AWS CodePipeline will ignore it. This is because AWS CodePipeline uses the settings in a pipeline's source action instead of this value. For source code in an AWS CodeCommit repository, the HTTPS clone URL to the repository that contains the source code and the build spec (for example, https://git-codecommit.region-ID.amazonaws.com/v1/repos/repo-name ). For source code in an Amazon Simple Storage Service (Amazon S3) input bucket, the path to the ZIP file that contains the source code (for example, bucket-name/path/to/object-name.zip) For source code in a GitHub repository, the HTTPS clone URL to the repository that contains the source and the build spec. Also, you must connect your AWS account to your GitHub account. To do this, use the AWS CodeBuild console to begin creating a build project. When you use the console to connect (or reconnect) with GitHub, on the GitHub Authorize application page that displays, for Organization access, choose Request access next to each repository you want to allow AWS CodeBuild to have access to. Then choose Authorize application. (After you have connected to your GitHub account, you do not need to finish creating the build project, and you may then leave the AWS CodeBuild console.) To instruct AWS CodeBuild to then use this connection, in the source object, set the auth object's type value to OAUTH. For source code in a Bitbucket repository, the HTTPS clone URL to the repository that contains the source and the build spec. Also, you must connect your AWS account to your Bitbucket account. To do this, use the AWS CodeBuild console to begin creating a build project. When you use the console to connect (or reconnect) with Bitbucket, on the Bitbucket Confirm access to your account page that displays, choose Grant access. (After you have connected to your Bitbucket account, you do not need to finish creating the build project, and you may then leave the AWS CodeBuild console.) To instruct AWS CodeBuild to then use this connection, in the source object, set the auth object's type value to OAUTH. - */ - location?: String; - /** - * The build spec declaration to use for the builds in this build project. If this value is not specified, a build spec must be included along with the source code to be built. - */ - buildspec?: String; - /** - * Information about the authorization settings for AWS CodeBuild to access the source code to be built. This information is for the AWS CodeBuild console's use only. Your code should not get or set this information directly (unless the build project's source type value is BITBUCKET or GITHUB). - */ - auth?: SourceAuth; - } - export type Projects = Project[]; - export type SortOrderType = "ASCENDING"|"DESCENDING"|string; - export interface SourceAuth { - /** - * The authorization type to use. The only valid value is OAUTH, which represents the OAuth authorization type. - */ - type: SourceAuthType; - /** - * The resource value that applies to the specified authorization type. - */ - resource?: String; - } - export type SourceAuthType = "OAUTH"|string; - export type SourceType = "CODECOMMIT"|"CODEPIPELINE"|"GITHUB"|"S3"|"BITBUCKET"|string; - export interface StartBuildInput { - /** - * The name of the build project to start running a build. - */ - projectName: NonEmptyString; - /** - * A version of the build input to be built, for this build only. If not specified, the latest version will be used. If specified, must be one of: For AWS CodeCommit: the commit ID to use. For GitHub: the commit ID, pull request ID, branch name, or tag name that corresponds to the version of the source code you want to build. If a pull request ID is specified, it must use the format pr/pull-request-ID (for example pr/25). If a branch name is specified, the branch's HEAD commit ID will be used. If not specified, the default branch's HEAD commit ID will be used. For Bitbucket: the commit ID, branch name, or tag name that corresponds to the version of the source code you want to build. If a branch name is specified, the branch's HEAD commit ID will be used. If not specified, the default branch's HEAD commit ID will be used. For Amazon Simple Storage Service (Amazon S3): the version ID of the object representing the build input ZIP file to use. - */ - sourceVersion?: String; - /** - * Build output artifact settings that override, for this build only, the latest ones already defined in the build project. - */ - artifactsOverride?: ProjectArtifacts; - /** - * A set of environment variables that overrides, for this build only, the latest ones already defined in the build project. - */ - environmentVariablesOverride?: EnvironmentVariables; - /** - * A build spec declaration that overrides, for this build only, the latest one already defined in the build project. - */ - buildspecOverride?: String; - /** - * The number of build timeout minutes, from 5 to 480 (8 hours), that overrides, for this build only, the latest setting already defined in the build project. - */ - timeoutInMinutesOverride?: TimeOut; - } - export interface StartBuildOutput { - /** - * Information about the build to be run. - */ - build?: Build; - } - export type StatusType = "SUCCEEDED"|"FAILED"|"FAULT"|"TIMED_OUT"|"IN_PROGRESS"|"STOPPED"|string; - export interface StopBuildInput { - /** - * The ID of the build. - */ - id: NonEmptyString; - } - export interface StopBuildOutput { - /** - * Information about the build. - */ - build?: Build; - } - export type String = string; - export interface Tag { - /** - * The tag's key. - */ - key?: KeyInput; - /** - * The tag's value. - */ - value?: ValueInput; - } - export type TagList = Tag[]; - export type TimeOut = number; - export type Timestamp = Date; - export interface UpdateProjectInput { - /** - * The name of the build project. You cannot change a build project's name. - */ - name: NonEmptyString; - /** - * A new or replacement description of the build project. - */ - description?: ProjectDescription; - /** - * Information to be changed about the build input source code for the build project. - */ - source?: ProjectSource; - /** - * Information to be changed about the build output artifacts for the build project. - */ - artifacts?: ProjectArtifacts; - /** - * Information to be changed about the build environment for the build project. - */ - environment?: ProjectEnvironment; - /** - * The replacement ARN of the AWS Identity and Access Management (IAM) role that enables AWS CodeBuild to interact with dependent AWS services on behalf of the AWS account. - */ - serviceRole?: NonEmptyString; - /** - * The replacement value in minutes, from 5 to 480 (8 hours), for AWS CodeBuild to wait before timing out any related build that did not get marked as completed. - */ - timeoutInMinutes?: TimeOut; - /** - * The replacement AWS Key Management Service (AWS KMS) customer master key (CMK) to be used for encrypting the build output artifacts. You can specify either the CMK's Amazon Resource Name (ARN) or, if available, the CMK's alias (using the format alias/alias-name ). - */ - encryptionKey?: NonEmptyString; - /** - * The replacement set of tags for this build project. These tags are available for use by AWS services that support AWS CodeBuild build project tags. - */ - tags?: TagList; - } - export interface UpdateProjectOutput { - /** - * Information about the build project that was changed. - */ - project?: Project; - } - export type ValueInput = string; - export interface Webhook { - /** - * The URL to the webhook. - */ - url?: NonEmptyString; - } - export type WrapperBoolean = boolean; - export type WrapperInt = number; - export type WrapperLong = number; - /** - * A string in YYYY-MM-DD format that represents the latest possible API version that can be used in this service. Specify 'latest' to use the latest possible version. - */ - export type apiVersion = "2016-10-06"|"latest"|string; - export interface ClientApiVersions { - /** - * A string in YYYY-MM-DD format that represents the latest possible API version that can be used in this service. Specify 'latest' to use the latest possible version. - */ - apiVersion?: apiVersion; - } - export type ClientConfiguration = ServiceConfigurationOptions & ClientApiVersions; - /** - * Contains interfaces for use with the CodeBuild client. - */ - export import Types = CodeBuild; -} -export = CodeBuild; diff --git a/workshops/monte-carlo-on-ec2-spot-fleet/src/web/node_modules/aws-sdk/clients/codebuild.js b/workshops/monte-carlo-on-ec2-spot-fleet/src/web/node_modules/aws-sdk/clients/codebuild.js deleted file mode 100644 index e5f190df..00000000 --- a/workshops/monte-carlo-on-ec2-spot-fleet/src/web/node_modules/aws-sdk/clients/codebuild.js +++ /dev/null @@ -1,18 +0,0 @@ -require('../lib/node_loader'); -var AWS = require('../lib/core'); -var Service = AWS.Service; -var apiLoader = AWS.apiLoader; - -apiLoader.services['codebuild'] = {}; -AWS.CodeBuild = Service.defineService('codebuild', ['2016-10-06']); -Object.defineProperty(apiLoader.services['codebuild'], '2016-10-06', { - get: function get() { - var model = require('../apis/codebuild-2016-10-06.min.json'); - model.paginators = require('../apis/codebuild-2016-10-06.paginators.json').pagination; - return model; - }, - enumerable: true, - configurable: true -}); - -module.exports = AWS.CodeBuild; diff --git a/workshops/monte-carlo-on-ec2-spot-fleet/src/web/node_modules/aws-sdk/clients/codecommit.d.ts b/workshops/monte-carlo-on-ec2-spot-fleet/src/web/node_modules/aws-sdk/clients/codecommit.d.ts deleted file mode 100644 index b41b0ec4..00000000 --- a/workshops/monte-carlo-on-ec2-spot-fleet/src/web/node_modules/aws-sdk/clients/codecommit.d.ts +++ /dev/null @@ -1,684 +0,0 @@ -import {Request} from '../lib/request'; -import {Response} from '../lib/response'; -import {AWSError} from '../lib/error'; -import {Service} from '../lib/service'; -import {ServiceConfigurationOptions} from '../lib/service'; -import {ConfigBase as Config} from '../lib/config'; -interface Blob {} -declare class CodeCommit extends Service { - /** - * Constructs a service object. This object has one method for each API operation. - */ - constructor(options?: CodeCommit.Types.ClientConfiguration) - config: Config & CodeCommit.Types.ClientConfiguration; - /** - * Returns information about one or more repositories. The description field for a repository accepts all HTML characters and all valid Unicode characters. Applications that do not HTML-encode the description and display it in a web page could expose users to potentially malicious code. Make sure that you HTML-encode the description field in any application that uses this API to display the repository description on a web page. - */ - batchGetRepositories(params: CodeCommit.Types.BatchGetRepositoriesInput, callback?: (err: AWSError, data: CodeCommit.Types.BatchGetRepositoriesOutput) => void): Request; - /** - * Returns information about one or more repositories. The description field for a repository accepts all HTML characters and all valid Unicode characters. Applications that do not HTML-encode the description and display it in a web page could expose users to potentially malicious code. Make sure that you HTML-encode the description field in any application that uses this API to display the repository description on a web page. - */ - batchGetRepositories(callback?: (err: AWSError, data: CodeCommit.Types.BatchGetRepositoriesOutput) => void): Request; - /** - * Creates a new branch in a repository and points the branch to a commit. Calling the create branch operation does not set a repository's default branch. To do this, call the update default branch operation. - */ - createBranch(params: CodeCommit.Types.CreateBranchInput, callback?: (err: AWSError, data: {}) => void): Request<{}, AWSError>; - /** - * Creates a new branch in a repository and points the branch to a commit. Calling the create branch operation does not set a repository's default branch. To do this, call the update default branch operation. - */ - createBranch(callback?: (err: AWSError, data: {}) => void): Request<{}, AWSError>; - /** - * Creates a new, empty repository. - */ - createRepository(params: CodeCommit.Types.CreateRepositoryInput, callback?: (err: AWSError, data: CodeCommit.Types.CreateRepositoryOutput) => void): Request; - /** - * Creates a new, empty repository. - */ - createRepository(callback?: (err: AWSError, data: CodeCommit.Types.CreateRepositoryOutput) => void): Request; - /** - * Deletes a branch from a repository, unless that branch is the default branch for the repository. - */ - deleteBranch(params: CodeCommit.Types.DeleteBranchInput, callback?: (err: AWSError, data: CodeCommit.Types.DeleteBranchOutput) => void): Request; - /** - * Deletes a branch from a repository, unless that branch is the default branch for the repository. - */ - deleteBranch(callback?: (err: AWSError, data: CodeCommit.Types.DeleteBranchOutput) => void): Request; - /** - * Deletes a repository. If a specified repository was already deleted, a null repository ID will be returned. Deleting a repository also deletes all associated objects and metadata. After a repository is deleted, all future push calls to the deleted repository will fail. - */ - deleteRepository(params: CodeCommit.Types.DeleteRepositoryInput, callback?: (err: AWSError, data: CodeCommit.Types.DeleteRepositoryOutput) => void): Request; - /** - * Deletes a repository. If a specified repository was already deleted, a null repository ID will be returned. Deleting a repository also deletes all associated objects and metadata. After a repository is deleted, all future push calls to the deleted repository will fail. - */ - deleteRepository(callback?: (err: AWSError, data: CodeCommit.Types.DeleteRepositoryOutput) => void): Request; - /** - * Returns the base-64 encoded content of an individual blob within a repository. - */ - getBlob(params: CodeCommit.Types.GetBlobInput, callback?: (err: AWSError, data: CodeCommit.Types.GetBlobOutput) => void): Request; - /** - * Returns the base-64 encoded content of an individual blob within a repository. - */ - getBlob(callback?: (err: AWSError, data: CodeCommit.Types.GetBlobOutput) => void): Request; - /** - * Returns information about a repository branch, including its name and the last commit ID. - */ - getBranch(params: CodeCommit.Types.GetBranchInput, callback?: (err: AWSError, data: CodeCommit.Types.GetBranchOutput) => void): Request; - /** - * Returns information about a repository branch, including its name and the last commit ID. - */ - getBranch(callback?: (err: AWSError, data: CodeCommit.Types.GetBranchOutput) => void): Request; - /** - * Returns information about a commit, including commit message and committer information. - */ - getCommit(params: CodeCommit.Types.GetCommitInput, callback?: (err: AWSError, data: CodeCommit.Types.GetCommitOutput) => void): Request; - /** - * Returns information about a commit, including commit message and committer information. - */ - getCommit(callback?: (err: AWSError, data: CodeCommit.Types.GetCommitOutput) => void): Request; - /** - * Returns information about the differences in a valid commit specifier (such as a branch, tag, HEAD, commit ID or other fully qualified reference). Results can be limited to a specified path. - */ - getDifferences(params: CodeCommit.Types.GetDifferencesInput, callback?: (err: AWSError, data: CodeCommit.Types.GetDifferencesOutput) => void): Request; - /** - * Returns information about the differences in a valid commit specifier (such as a branch, tag, HEAD, commit ID or other fully qualified reference). Results can be limited to a specified path. - */ - getDifferences(callback?: (err: AWSError, data: CodeCommit.Types.GetDifferencesOutput) => void): Request; - /** - * Returns information about a repository. The description field for a repository accepts all HTML characters and all valid Unicode characters. Applications that do not HTML-encode the description and display it in a web page could expose users to potentially malicious code. Make sure that you HTML-encode the description field in any application that uses this API to display the repository description on a web page. - */ - getRepository(params: CodeCommit.Types.GetRepositoryInput, callback?: (err: AWSError, data: CodeCommit.Types.GetRepositoryOutput) => void): Request; - /** - * Returns information about a repository. The description field for a repository accepts all HTML characters and all valid Unicode characters. Applications that do not HTML-encode the description and display it in a web page could expose users to potentially malicious code. Make sure that you HTML-encode the description field in any application that uses this API to display the repository description on a web page. - */ - getRepository(callback?: (err: AWSError, data: CodeCommit.Types.GetRepositoryOutput) => void): Request; - /** - * Gets information about triggers configured for a repository. - */ - getRepositoryTriggers(params: CodeCommit.Types.GetRepositoryTriggersInput, callback?: (err: AWSError, data: CodeCommit.Types.GetRepositoryTriggersOutput) => void): Request; - /** - * Gets information about triggers configured for a repository. - */ - getRepositoryTriggers(callback?: (err: AWSError, data: CodeCommit.Types.GetRepositoryTriggersOutput) => void): Request; - /** - * Gets information about one or more branches in a repository. - */ - listBranches(params: CodeCommit.Types.ListBranchesInput, callback?: (err: AWSError, data: CodeCommit.Types.ListBranchesOutput) => void): Request; - /** - * Gets information about one or more branches in a repository. - */ - listBranches(callback?: (err: AWSError, data: CodeCommit.Types.ListBranchesOutput) => void): Request; - /** - * Gets information about one or more repositories. - */ - listRepositories(params: CodeCommit.Types.ListRepositoriesInput, callback?: (err: AWSError, data: CodeCommit.Types.ListRepositoriesOutput) => void): Request; - /** - * Gets information about one or more repositories. - */ - listRepositories(callback?: (err: AWSError, data: CodeCommit.Types.ListRepositoriesOutput) => void): Request; - /** - * Replaces all triggers for a repository. This can be used to create or delete triggers. - */ - putRepositoryTriggers(params: CodeCommit.Types.PutRepositoryTriggersInput, callback?: (err: AWSError, data: CodeCommit.Types.PutRepositoryTriggersOutput) => void): Request; - /** - * Replaces all triggers for a repository. This can be used to create or delete triggers. - */ - putRepositoryTriggers(callback?: (err: AWSError, data: CodeCommit.Types.PutRepositoryTriggersOutput) => void): Request; - /** - * Tests the functionality of repository triggers by sending information to the trigger target. If real data is available in the repository, the test will send data from the last commit. If no data is available, sample data will be generated. - */ - testRepositoryTriggers(params: CodeCommit.Types.TestRepositoryTriggersInput, callback?: (err: AWSError, data: CodeCommit.Types.TestRepositoryTriggersOutput) => void): Request; - /** - * Tests the functionality of repository triggers by sending information to the trigger target. If real data is available in the repository, the test will send data from the last commit. If no data is available, sample data will be generated. - */ - testRepositoryTriggers(callback?: (err: AWSError, data: CodeCommit.Types.TestRepositoryTriggersOutput) => void): Request; - /** - * Sets or changes the default branch name for the specified repository. If you use this operation to change the default branch name to the current default branch name, a success message is returned even though the default branch did not change. - */ - updateDefaultBranch(params: CodeCommit.Types.UpdateDefaultBranchInput, callback?: (err: AWSError, data: {}) => void): Request<{}, AWSError>; - /** - * Sets or changes the default branch name for the specified repository. If you use this operation to change the default branch name to the current default branch name, a success message is returned even though the default branch did not change. - */ - updateDefaultBranch(callback?: (err: AWSError, data: {}) => void): Request<{}, AWSError>; - /** - * Sets or changes the comment or description for a repository. The description field for a repository accepts all HTML characters and all valid Unicode characters. Applications that do not HTML-encode the description and display it in a web page could expose users to potentially malicious code. Make sure that you HTML-encode the description field in any application that uses this API to display the repository description on a web page. - */ - updateRepositoryDescription(params: CodeCommit.Types.UpdateRepositoryDescriptionInput, callback?: (err: AWSError, data: {}) => void): Request<{}, AWSError>; - /** - * Sets or changes the comment or description for a repository. The description field for a repository accepts all HTML characters and all valid Unicode characters. Applications that do not HTML-encode the description and display it in a web page could expose users to potentially malicious code. Make sure that you HTML-encode the description field in any application that uses this API to display the repository description on a web page. - */ - updateRepositoryDescription(callback?: (err: AWSError, data: {}) => void): Request<{}, AWSError>; - /** - * Renames a repository. The repository name must be unique across the calling AWS account. In addition, repository names are limited to 100 alphanumeric, dash, and underscore characters, and cannot include certain characters. The suffix ".git" is prohibited. For a full description of the limits on repository names, see Limits in the AWS CodeCommit User Guide. - */ - updateRepositoryName(params: CodeCommit.Types.UpdateRepositoryNameInput, callback?: (err: AWSError, data: {}) => void): Request<{}, AWSError>; - /** - * Renames a repository. The repository name must be unique across the calling AWS account. In addition, repository names are limited to 100 alphanumeric, dash, and underscore characters, and cannot include certain characters. The suffix ".git" is prohibited. For a full description of the limits on repository names, see Limits in the AWS CodeCommit User Guide. - */ - updateRepositoryName(callback?: (err: AWSError, data: {}) => void): Request<{}, AWSError>; -} -declare namespace CodeCommit { - export type AccountId = string; - export type AdditionalData = string; - export type Arn = string; - export interface BatchGetRepositoriesInput { - /** - * The names of the repositories to get information about. - */ - repositoryNames: RepositoryNameList; - } - export interface BatchGetRepositoriesOutput { - /** - * A list of repositories returned by the batch get repositories operation. - */ - repositories?: RepositoryMetadataList; - /** - * Returns a list of repository names for which information could not be found. - */ - repositoriesNotFound?: RepositoryNotFoundList; - } - export interface BlobMetadata { - /** - * The full ID of the blob. - */ - blobId?: ObjectId; - /** - * The path to the blob and any associated file name, if any. - */ - path?: Path; - /** - * The file mode permissions of the blob. File mode permission codes include: 100644 indicates read/write 100755 indicates read/write/execute 160000 indicates a submodule 120000 indicates a symlink - */ - mode?: Mode; - } - export interface BranchInfo { - /** - * The name of the branch. - */ - branchName?: BranchName; - /** - * The ID of the last commit made to the branch. - */ - commitId?: CommitId; - } - export type BranchName = string; - export type BranchNameList = BranchName[]; - export type ChangeTypeEnum = "A"|"M"|"D"|string; - export type CloneUrlHttp = string; - export type CloneUrlSsh = string; - export interface Commit { - /** - * The full SHA of the specified commit. - */ - commitId?: ObjectId; - /** - * Tree information for the specified commit. - */ - treeId?: ObjectId; - /** - * The parent list for the specified commit. - */ - parents?: ParentList; - /** - * The commit message associated with the specified commit. - */ - message?: Message; - /** - * Information about the author of the specified commit. Information includes the date in timestamp format with GMT offset, the name of the author, and the email address for the author, as configured in Git. - */ - author?: UserInfo; - /** - * Information about the person who committed the specified commit, also known as the committer. Information includes the date in timestamp format with GMT offset, the name of the committer, and the email address for the committer, as configured in Git. For more information about the difference between an author and a committer in Git, see Viewing the Commit History in Pro Git by Scott Chacon and Ben Straub. - */ - committer?: UserInfo; - /** - * Any additional data associated with the specified commit. - */ - additionalData?: AdditionalData; - } - export type CommitId = string; - export type CommitName = string; - export interface CreateBranchInput { - /** - * The name of the repository in which you want to create the new branch. - */ - repositoryName: RepositoryName; - /** - * The name of the new branch to create. - */ - branchName: BranchName; - /** - * The ID of the commit to point the new branch to. - */ - commitId: CommitId; - } - export interface CreateRepositoryInput { - /** - * The name of the new repository to be created. The repository name must be unique across the calling AWS account. In addition, repository names are limited to 100 alphanumeric, dash, and underscore characters, and cannot include certain characters. For a full description of the limits on repository names, see Limits in the AWS CodeCommit User Guide. The suffix ".git" is prohibited. - */ - repositoryName: RepositoryName; - /** - * A comment or description about the new repository. The description field for a repository accepts all HTML characters and all valid Unicode characters. Applications that do not HTML-encode the description and display it in a web page could expose users to potentially malicious code. Make sure that you HTML-encode the description field in any application that uses this API to display the repository description on a web page. - */ - repositoryDescription?: RepositoryDescription; - } - export interface CreateRepositoryOutput { - /** - * Information about the newly created repository. - */ - repositoryMetadata?: RepositoryMetadata; - } - export type CreationDate = Date; - export type _Date = string; - export interface DeleteBranchInput { - /** - * The name of the repository that contains the branch to be deleted. - */ - repositoryName: RepositoryName; - /** - * The name of the branch to delete. - */ - branchName: BranchName; - } - export interface DeleteBranchOutput { - /** - * Information about the branch deleted by the operation, including the branch name and the commit ID that was the tip of the branch. - */ - deletedBranch?: BranchInfo; - } - export interface DeleteRepositoryInput { - /** - * The name of the repository to delete. - */ - repositoryName: RepositoryName; - } - export interface DeleteRepositoryOutput { - /** - * The ID of the repository that was deleted. - */ - repositoryId?: RepositoryId; - } - export interface Difference { - /** - * Information about a beforeBlob data type object, including the ID, the file mode permission code, and the path. - */ - beforeBlob?: BlobMetadata; - /** - * Information about an afterBlob data type object, including the ID, the file mode permission code, and the path. - */ - afterBlob?: BlobMetadata; - /** - * Whether the change type of the difference is an addition (A), deletion (D), or modification (M). - */ - changeType?: ChangeTypeEnum; - } - export type DifferenceList = Difference[]; - export type Email = string; - export interface GetBlobInput { - /** - * The name of the repository that contains the blob. - */ - repositoryName: RepositoryName; - /** - * The ID of the blob, which is its SHA-1 pointer. - */ - blobId: ObjectId; - } - export interface GetBlobOutput { - /** - * The content of the blob, usually a file. - */ - content: blob; - } - export interface GetBranchInput { - /** - * The name of the repository that contains the branch for which you want to retrieve information. - */ - repositoryName?: RepositoryName; - /** - * The name of the branch for which you want to retrieve information. - */ - branchName?: BranchName; - } - export interface GetBranchOutput { - /** - * The name of the branch. - */ - branch?: BranchInfo; - } - export interface GetCommitInput { - /** - * The name of the repository to which the commit was made. - */ - repositoryName: RepositoryName; - /** - * The commit ID. Commit IDs are the full SHA of the commit. - */ - commitId: ObjectId; - } - export interface GetCommitOutput { - /** - * A commit data type object that contains information about the specified commit. - */ - commit: Commit; - } - export interface GetDifferencesInput { - /** - * The name of the repository where you want to get differences. - */ - repositoryName: RepositoryName; - /** - * The branch, tag, HEAD, or other fully qualified reference used to identify a commit. For example, the full commit ID. Optional. If not specified, all changes prior to the afterCommitSpecifier value will be shown. If you do not use beforeCommitSpecifier in your request, consider limiting the results with maxResults. - */ - beforeCommitSpecifier?: CommitName; - /** - * The branch, tag, HEAD, or other fully qualified reference used to identify a commit. - */ - afterCommitSpecifier: CommitName; - /** - * The file path in which to check for differences. Limits the results to this path. Can also be used to specify the previous name of a directory or folder. If beforePath and afterPath are not specified, differences will be shown for all paths. - */ - beforePath?: Path; - /** - * The file path in which to check differences. Limits the results to this path. Can also be used to specify the changed name of a directory or folder, if it has changed. If not specified, differences will be shown for all paths. - */ - afterPath?: Path; - /** - * A non-negative integer used to limit the number of returned results. - */ - MaxResults?: Limit; - /** - * An enumeration token that when provided in a request, returns the next batch of the results. - */ - NextToken?: NextToken; - } - export interface GetDifferencesOutput { - /** - * A differences data type object that contains information about the differences, including whether the difference is added, modified, or deleted (A, D, M). - */ - differences?: DifferenceList; - /** - * An enumeration token that can be used in a request to return the next batch of the results. - */ - NextToken?: NextToken; - } - export interface GetRepositoryInput { - /** - * The name of the repository to get information about. - */ - repositoryName: RepositoryName; - } - export interface GetRepositoryOutput { - /** - * Information about the repository. - */ - repositoryMetadata?: RepositoryMetadata; - } - export interface GetRepositoryTriggersInput { - /** - * The name of the repository for which the trigger is configured. - */ - repositoryName: RepositoryName; - } - export interface GetRepositoryTriggersOutput { - /** - * The system-generated unique ID for the trigger. - */ - configurationId?: RepositoryTriggersConfigurationId; - /** - * The JSON block of configuration information for each trigger. - */ - triggers?: RepositoryTriggersList; - } - export type LastModifiedDate = Date; - export type Limit = number; - export interface ListBranchesInput { - /** - * The name of the repository that contains the branches. - */ - repositoryName: RepositoryName; - /** - * An enumeration token that allows the operation to batch the results. - */ - nextToken?: NextToken; - } - export interface ListBranchesOutput { - /** - * The list of branch names. - */ - branches?: BranchNameList; - /** - * An enumeration token that returns the batch of the results. - */ - nextToken?: NextToken; - } - export interface ListRepositoriesInput { - /** - * An enumeration token that allows the operation to batch the results of the operation. Batch sizes are 1,000 for list repository operations. When the client sends the token back to AWS CodeCommit, another page of 1,000 records is retrieved. - */ - nextToken?: NextToken; - /** - * The criteria used to sort the results of a list repositories operation. - */ - sortBy?: SortByEnum; - /** - * The order in which to sort the results of a list repositories operation. - */ - order?: OrderEnum; - } - export interface ListRepositoriesOutput { - /** - * Lists the repositories called by the list repositories operation. - */ - repositories?: RepositoryNameIdPairList; - /** - * An enumeration token that allows the operation to batch the results of the operation. Batch sizes are 1,000 for list repository operations. When the client sends the token back to AWS CodeCommit, another page of 1,000 records is retrieved. - */ - nextToken?: NextToken; - } - export type Message = string; - export type Mode = string; - export type Name = string; - export type NextToken = string; - export type ObjectId = string; - export type OrderEnum = "ascending"|"descending"|string; - export type ParentList = ObjectId[]; - export type Path = string; - export interface PutRepositoryTriggersInput { - /** - * The name of the repository where you want to create or update the trigger. - */ - repositoryName: RepositoryName; - /** - * The JSON block of configuration information for each trigger. - */ - triggers: RepositoryTriggersList; - } - export interface PutRepositoryTriggersOutput { - /** - * The system-generated unique ID for the create or update operation. - */ - configurationId?: RepositoryTriggersConfigurationId; - } - export type RepositoryDescription = string; - export type RepositoryId = string; - export interface RepositoryMetadata { - /** - * The ID of the AWS account associated with the repository. - */ - accountId?: AccountId; - /** - * The ID of the repository. - */ - repositoryId?: RepositoryId; - /** - * The repository's name. - */ - repositoryName?: RepositoryName; - /** - * A comment or description about the repository. - */ - repositoryDescription?: RepositoryDescription; - /** - * The repository's default branch name. - */ - defaultBranch?: BranchName; - /** - * The date and time the repository was last modified, in timestamp format. - */ - lastModifiedDate?: LastModifiedDate; - /** - * The date and time the repository was created, in timestamp format. - */ - creationDate?: CreationDate; - /** - * The URL to use for cloning the repository over HTTPS. - */ - cloneUrlHttp?: CloneUrlHttp; - /** - * The URL to use for cloning the repository over SSH. - */ - cloneUrlSsh?: CloneUrlSsh; - /** - * The Amazon Resource Name (ARN) of the repository. - */ - Arn?: Arn; - } - export type RepositoryMetadataList = RepositoryMetadata[]; - export type RepositoryName = string; - export interface RepositoryNameIdPair { - /** - * The name associated with the repository. - */ - repositoryName?: RepositoryName; - /** - * The ID associated with the repository. - */ - repositoryId?: RepositoryId; - } - export type RepositoryNameIdPairList = RepositoryNameIdPair[]; - export type RepositoryNameList = RepositoryName[]; - export type RepositoryNotFoundList = RepositoryName[]; - export interface RepositoryTrigger { - /** - * The name of the trigger. - */ - name: RepositoryTriggerName; - /** - * The ARN of the resource that is the target for a trigger. For example, the ARN of a topic in Amazon Simple Notification Service (SNS). - */ - destinationArn: Arn; - /** - * Any custom data associated with the trigger that will be included in the information sent to the target of the trigger. - */ - customData?: RepositoryTriggerCustomData; - /** - * The branches that will be included in the trigger configuration. If you specify an empty array, the trigger will apply to all branches. While no content is required in the array, you must include the array itself. - */ - branches?: BranchNameList; - /** - * The repository events that will cause the trigger to run actions in another service, such as sending a notification through Amazon Simple Notification Service (SNS). The valid value "all" cannot be used with any other values. - */ - events: RepositoryTriggerEventList; - } - export type RepositoryTriggerCustomData = string; - export type RepositoryTriggerEventEnum = "all"|"updateReference"|"createReference"|"deleteReference"|string; - export type RepositoryTriggerEventList = RepositoryTriggerEventEnum[]; - export interface RepositoryTriggerExecutionFailure { - /** - * The name of the trigger that did not run. - */ - trigger?: RepositoryTriggerName; - /** - * Additional message information about the trigger that did not run. - */ - failureMessage?: RepositoryTriggerExecutionFailureMessage; - } - export type RepositoryTriggerExecutionFailureList = RepositoryTriggerExecutionFailure[]; - export type RepositoryTriggerExecutionFailureMessage = string; - export type RepositoryTriggerName = string; - export type RepositoryTriggerNameList = RepositoryTriggerName[]; - export type RepositoryTriggersConfigurationId = string; - export type RepositoryTriggersList = RepositoryTrigger[]; - export type SortByEnum = "repositoryName"|"lastModifiedDate"|string; - export interface TestRepositoryTriggersInput { - /** - * The name of the repository in which to test the triggers. - */ - repositoryName: RepositoryName; - /** - * The list of triggers to test. - */ - triggers: RepositoryTriggersList; - } - export interface TestRepositoryTriggersOutput { - /** - * The list of triggers that were successfully tested. This list provides the names of the triggers that were successfully tested, separated by commas. - */ - successfulExecutions?: RepositoryTriggerNameList; - /** - * The list of triggers that were not able to be tested. This list provides the names of the triggers that could not be tested, separated by commas. - */ - failedExecutions?: RepositoryTriggerExecutionFailureList; - } - export interface UpdateDefaultBranchInput { - /** - * The name of the repository to set or change the default branch for. - */ - repositoryName: RepositoryName; - /** - * The name of the branch to set as the default. - */ - defaultBranchName: BranchName; - } - export interface UpdateRepositoryDescriptionInput { - /** - * The name of the repository to set or change the comment or description for. - */ - repositoryName: RepositoryName; - /** - * The new comment or description for the specified repository. Repository descriptions are limited to 1,000 characters. - */ - repositoryDescription?: RepositoryDescription; - } - export interface UpdateRepositoryNameInput { - /** - * The existing name of the repository. - */ - oldName: RepositoryName; - /** - * The new name for the repository. - */ - newName: RepositoryName; - } - export interface UserInfo { - /** - * The name of the user who made the specified commit. - */ - name?: Name; - /** - * The email address associated with the user who made the commit, if any. - */ - email?: Email; - /** - * The date when the specified commit was pushed to the repository. - */ - date?: _Date; - } - export type blob = Buffer|Uint8Array|Blob|string; - /** - * A string in YYYY-MM-DD format that represents the latest possible API version that can be used in this service. Specify 'latest' to use the latest possible version. - */ - export type apiVersion = "2015-04-13"|"latest"|string; - export interface ClientApiVersions { - /** - * A string in YYYY-MM-DD format that represents the latest possible API version that can be used in this service. Specify 'latest' to use the latest possible version. - */ - apiVersion?: apiVersion; - } - export type ClientConfiguration = ServiceConfigurationOptions & ClientApiVersions; - /** - * Contains interfaces for use with the CodeCommit client. - */ - export import Types = CodeCommit; -} -export = CodeCommit; diff --git a/workshops/monte-carlo-on-ec2-spot-fleet/src/web/node_modules/aws-sdk/clients/codecommit.js b/workshops/monte-carlo-on-ec2-spot-fleet/src/web/node_modules/aws-sdk/clients/codecommit.js deleted file mode 100644 index 04081c4a..00000000 --- a/workshops/monte-carlo-on-ec2-spot-fleet/src/web/node_modules/aws-sdk/clients/codecommit.js +++ /dev/null @@ -1,18 +0,0 @@ -require('../lib/node_loader'); -var AWS = require('../lib/core'); -var Service = AWS.Service; -var apiLoader = AWS.apiLoader; - -apiLoader.services['codecommit'] = {}; -AWS.CodeCommit = Service.defineService('codecommit', ['2015-04-13']); -Object.defineProperty(apiLoader.services['codecommit'], '2015-04-13', { - get: function get() { - var model = require('../apis/codecommit-2015-04-13.min.json'); - model.paginators = require('../apis/codecommit-2015-04-13.paginators.json').pagination; - return model; - }, - enumerable: true, - configurable: true -}); - -module.exports = AWS.CodeCommit; diff --git a/workshops/monte-carlo-on-ec2-spot-fleet/src/web/node_modules/aws-sdk/clients/codedeploy.d.ts b/workshops/monte-carlo-on-ec2-spot-fleet/src/web/node_modules/aws-sdk/clients/codedeploy.d.ts deleted file mode 100644 index 59330a05..00000000 --- a/workshops/monte-carlo-on-ec2-spot-fleet/src/web/node_modules/aws-sdk/clients/codedeploy.d.ts +++ /dev/null @@ -1,1856 +0,0 @@ -import {Request} from '../lib/request'; -import {Response} from '../lib/response'; -import {AWSError} from '../lib/error'; -import {Service} from '../lib/service'; -import {ServiceConfigurationOptions} from '../lib/service'; -import {ConfigBase as Config} from '../lib/config'; -interface Blob {} -declare class CodeDeploy extends Service { - /** - * Constructs a service object. This object has one method for each API operation. - */ - constructor(options?: CodeDeploy.Types.ClientConfiguration) - config: Config & CodeDeploy.Types.ClientConfiguration; - /** - * Adds tags to on-premises instances. - */ - addTagsToOnPremisesInstances(params: CodeDeploy.Types.AddTagsToOnPremisesInstancesInput, callback?: (err: AWSError, data: {}) => void): Request<{}, AWSError>; - /** - * Adds tags to on-premises instances. - */ - addTagsToOnPremisesInstances(callback?: (err: AWSError, data: {}) => void): Request<{}, AWSError>; - /** - * Gets information about one or more application revisions. - */ - batchGetApplicationRevisions(params: CodeDeploy.Types.BatchGetApplicationRevisionsInput, callback?: (err: AWSError, data: CodeDeploy.Types.BatchGetApplicationRevisionsOutput) => void): Request; - /** - * Gets information about one or more application revisions. - */ - batchGetApplicationRevisions(callback?: (err: AWSError, data: CodeDeploy.Types.BatchGetApplicationRevisionsOutput) => void): Request; - /** - * Gets information about one or more applications. - */ - batchGetApplications(params: CodeDeploy.Types.BatchGetApplicationsInput, callback?: (err: AWSError, data: CodeDeploy.Types.BatchGetApplicationsOutput) => void): Request; - /** - * Gets information about one or more applications. - */ - batchGetApplications(callback?: (err: AWSError, data: CodeDeploy.Types.BatchGetApplicationsOutput) => void): Request; - /** - * Gets information about one or more deployment groups. - */ - batchGetDeploymentGroups(params: CodeDeploy.Types.BatchGetDeploymentGroupsInput, callback?: (err: AWSError, data: CodeDeploy.Types.BatchGetDeploymentGroupsOutput) => void): Request; - /** - * Gets information about one or more deployment groups. - */ - batchGetDeploymentGroups(callback?: (err: AWSError, data: CodeDeploy.Types.BatchGetDeploymentGroupsOutput) => void): Request; - /** - * Gets information about one or more instance that are part of a deployment group. - */ - batchGetDeploymentInstances(params: CodeDeploy.Types.BatchGetDeploymentInstancesInput, callback?: (err: AWSError, data: CodeDeploy.Types.BatchGetDeploymentInstancesOutput) => void): Request; - /** - * Gets information about one or more instance that are part of a deployment group. - */ - batchGetDeploymentInstances(callback?: (err: AWSError, data: CodeDeploy.Types.BatchGetDeploymentInstancesOutput) => void): Request; - /** - * Gets information about one or more deployments. - */ - batchGetDeployments(params: CodeDeploy.Types.BatchGetDeploymentsInput, callback?: (err: AWSError, data: CodeDeploy.Types.BatchGetDeploymentsOutput) => void): Request; - /** - * Gets information about one or more deployments. - */ - batchGetDeployments(callback?: (err: AWSError, data: CodeDeploy.Types.BatchGetDeploymentsOutput) => void): Request; - /** - * Gets information about one or more on-premises instances. - */ - batchGetOnPremisesInstances(params: CodeDeploy.Types.BatchGetOnPremisesInstancesInput, callback?: (err: AWSError, data: CodeDeploy.Types.BatchGetOnPremisesInstancesOutput) => void): Request; - /** - * Gets information about one or more on-premises instances. - */ - batchGetOnPremisesInstances(callback?: (err: AWSError, data: CodeDeploy.Types.BatchGetOnPremisesInstancesOutput) => void): Request; - /** - * For a blue/green deployment, starts the process of rerouting traffic from instances in the original environment to instances in the replacement environment without waiting for a specified wait time to elapse. (Traffic rerouting, which is achieved by registering instances in the replacement environment with the load balancer, can start as soon as all instances have a status of Ready.) - */ - continueDeployment(params: CodeDeploy.Types.ContinueDeploymentInput, callback?: (err: AWSError, data: {}) => void): Request<{}, AWSError>; - /** - * For a blue/green deployment, starts the process of rerouting traffic from instances in the original environment to instances in the replacement environment without waiting for a specified wait time to elapse. (Traffic rerouting, which is achieved by registering instances in the replacement environment with the load balancer, can start as soon as all instances have a status of Ready.) - */ - continueDeployment(callback?: (err: AWSError, data: {}) => void): Request<{}, AWSError>; - /** - * Creates an application. - */ - createApplication(params: CodeDeploy.Types.CreateApplicationInput, callback?: (err: AWSError, data: CodeDeploy.Types.CreateApplicationOutput) => void): Request; - /** - * Creates an application. - */ - createApplication(callback?: (err: AWSError, data: CodeDeploy.Types.CreateApplicationOutput) => void): Request; - /** - * Deploys an application revision through the specified deployment group. - */ - createDeployment(params: CodeDeploy.Types.CreateDeploymentInput, callback?: (err: AWSError, data: CodeDeploy.Types.CreateDeploymentOutput) => void): Request; - /** - * Deploys an application revision through the specified deployment group. - */ - createDeployment(callback?: (err: AWSError, data: CodeDeploy.Types.CreateDeploymentOutput) => void): Request; - /** - * Creates a deployment configuration. - */ - createDeploymentConfig(params: CodeDeploy.Types.CreateDeploymentConfigInput, callback?: (err: AWSError, data: CodeDeploy.Types.CreateDeploymentConfigOutput) => void): Request; - /** - * Creates a deployment configuration. - */ - createDeploymentConfig(callback?: (err: AWSError, data: CodeDeploy.Types.CreateDeploymentConfigOutput) => void): Request; - /** - * Creates a deployment group to which application revisions will be deployed. - */ - createDeploymentGroup(params: CodeDeploy.Types.CreateDeploymentGroupInput, callback?: (err: AWSError, data: CodeDeploy.Types.CreateDeploymentGroupOutput) => void): Request; - /** - * Creates a deployment group to which application revisions will be deployed. - */ - createDeploymentGroup(callback?: (err: AWSError, data: CodeDeploy.Types.CreateDeploymentGroupOutput) => void): Request; - /** - * Deletes an application. - */ - deleteApplication(params: CodeDeploy.Types.DeleteApplicationInput, callback?: (err: AWSError, data: {}) => void): Request<{}, AWSError>; - /** - * Deletes an application. - */ - deleteApplication(callback?: (err: AWSError, data: {}) => void): Request<{}, AWSError>; - /** - * Deletes a deployment configuration. A deployment configuration cannot be deleted if it is currently in use. Predefined configurations cannot be deleted. - */ - deleteDeploymentConfig(params: CodeDeploy.Types.DeleteDeploymentConfigInput, callback?: (err: AWSError, data: {}) => void): Request<{}, AWSError>; - /** - * Deletes a deployment configuration. A deployment configuration cannot be deleted if it is currently in use. Predefined configurations cannot be deleted. - */ - deleteDeploymentConfig(callback?: (err: AWSError, data: {}) => void): Request<{}, AWSError>; - /** - * Deletes a deployment group. - */ - deleteDeploymentGroup(params: CodeDeploy.Types.DeleteDeploymentGroupInput, callback?: (err: AWSError, data: CodeDeploy.Types.DeleteDeploymentGroupOutput) => void): Request; - /** - * Deletes a deployment group. - */ - deleteDeploymentGroup(callback?: (err: AWSError, data: CodeDeploy.Types.DeleteDeploymentGroupOutput) => void): Request; - /** - * Deregisters an on-premises instance. - */ - deregisterOnPremisesInstance(params: CodeDeploy.Types.DeregisterOnPremisesInstanceInput, callback?: (err: AWSError, data: {}) => void): Request<{}, AWSError>; - /** - * Deregisters an on-premises instance. - */ - deregisterOnPremisesInstance(callback?: (err: AWSError, data: {}) => void): Request<{}, AWSError>; - /** - * Gets information about an application. - */ - getApplication(params: CodeDeploy.Types.GetApplicationInput, callback?: (err: AWSError, data: CodeDeploy.Types.GetApplicationOutput) => void): Request; - /** - * Gets information about an application. - */ - getApplication(callback?: (err: AWSError, data: CodeDeploy.Types.GetApplicationOutput) => void): Request; - /** - * Gets information about an application revision. - */ - getApplicationRevision(params: CodeDeploy.Types.GetApplicationRevisionInput, callback?: (err: AWSError, data: CodeDeploy.Types.GetApplicationRevisionOutput) => void): Request; - /** - * Gets information about an application revision. - */ - getApplicationRevision(callback?: (err: AWSError, data: CodeDeploy.Types.GetApplicationRevisionOutput) => void): Request; - /** - * Gets information about a deployment. - */ - getDeployment(params: CodeDeploy.Types.GetDeploymentInput, callback?: (err: AWSError, data: CodeDeploy.Types.GetDeploymentOutput) => void): Request; - /** - * Gets information about a deployment. - */ - getDeployment(callback?: (err: AWSError, data: CodeDeploy.Types.GetDeploymentOutput) => void): Request; - /** - * Gets information about a deployment configuration. - */ - getDeploymentConfig(params: CodeDeploy.Types.GetDeploymentConfigInput, callback?: (err: AWSError, data: CodeDeploy.Types.GetDeploymentConfigOutput) => void): Request; - /** - * Gets information about a deployment configuration. - */ - getDeploymentConfig(callback?: (err: AWSError, data: CodeDeploy.Types.GetDeploymentConfigOutput) => void): Request; - /** - * Gets information about a deployment group. - */ - getDeploymentGroup(params: CodeDeploy.Types.GetDeploymentGroupInput, callback?: (err: AWSError, data: CodeDeploy.Types.GetDeploymentGroupOutput) => void): Request; - /** - * Gets information about a deployment group. - */ - getDeploymentGroup(callback?: (err: AWSError, data: CodeDeploy.Types.GetDeploymentGroupOutput) => void): Request; - /** - * Gets information about an instance as part of a deployment. - */ - getDeploymentInstance(params: CodeDeploy.Types.GetDeploymentInstanceInput, callback?: (err: AWSError, data: CodeDeploy.Types.GetDeploymentInstanceOutput) => void): Request; - /** - * Gets information about an instance as part of a deployment. - */ - getDeploymentInstance(callback?: (err: AWSError, data: CodeDeploy.Types.GetDeploymentInstanceOutput) => void): Request; - /** - * Gets information about an on-premises instance. - */ - getOnPremisesInstance(params: CodeDeploy.Types.GetOnPremisesInstanceInput, callback?: (err: AWSError, data: CodeDeploy.Types.GetOnPremisesInstanceOutput) => void): Request; - /** - * Gets information about an on-premises instance. - */ - getOnPremisesInstance(callback?: (err: AWSError, data: CodeDeploy.Types.GetOnPremisesInstanceOutput) => void): Request; - /** - * Lists information about revisions for an application. - */ - listApplicationRevisions(params: CodeDeploy.Types.ListApplicationRevisionsInput, callback?: (err: AWSError, data: CodeDeploy.Types.ListApplicationRevisionsOutput) => void): Request; - /** - * Lists information about revisions for an application. - */ - listApplicationRevisions(callback?: (err: AWSError, data: CodeDeploy.Types.ListApplicationRevisionsOutput) => void): Request; - /** - * Lists the applications registered with the applicable IAM user or AWS account. - */ - listApplications(params: CodeDeploy.Types.ListApplicationsInput, callback?: (err: AWSError, data: CodeDeploy.Types.ListApplicationsOutput) => void): Request; - /** - * Lists the applications registered with the applicable IAM user or AWS account. - */ - listApplications(callback?: (err: AWSError, data: CodeDeploy.Types.ListApplicationsOutput) => void): Request; - /** - * Lists the deployment configurations with the applicable IAM user or AWS account. - */ - listDeploymentConfigs(params: CodeDeploy.Types.ListDeploymentConfigsInput, callback?: (err: AWSError, data: CodeDeploy.Types.ListDeploymentConfigsOutput) => void): Request; - /** - * Lists the deployment configurations with the applicable IAM user or AWS account. - */ - listDeploymentConfigs(callback?: (err: AWSError, data: CodeDeploy.Types.ListDeploymentConfigsOutput) => void): Request; - /** - * Lists the deployment groups for an application registered with the applicable IAM user or AWS account. - */ - listDeploymentGroups(params: CodeDeploy.Types.ListDeploymentGroupsInput, callback?: (err: AWSError, data: CodeDeploy.Types.ListDeploymentGroupsOutput) => void): Request; - /** - * Lists the deployment groups for an application registered with the applicable IAM user or AWS account. - */ - listDeploymentGroups(callback?: (err: AWSError, data: CodeDeploy.Types.ListDeploymentGroupsOutput) => void): Request; - /** - * Lists the instance for a deployment associated with the applicable IAM user or AWS account. - */ - listDeploymentInstances(params: CodeDeploy.Types.ListDeploymentInstancesInput, callback?: (err: AWSError, data: CodeDeploy.Types.ListDeploymentInstancesOutput) => void): Request; - /** - * Lists the instance for a deployment associated with the applicable IAM user or AWS account. - */ - listDeploymentInstances(callback?: (err: AWSError, data: CodeDeploy.Types.ListDeploymentInstancesOutput) => void): Request; - /** - * Lists the deployments in a deployment group for an application registered with the applicable IAM user or AWS account. - */ - listDeployments(params: CodeDeploy.Types.ListDeploymentsInput, callback?: (err: AWSError, data: CodeDeploy.Types.ListDeploymentsOutput) => void): Request; - /** - * Lists the deployments in a deployment group for an application registered with the applicable IAM user or AWS account. - */ - listDeployments(callback?: (err: AWSError, data: CodeDeploy.Types.ListDeploymentsOutput) => void): Request; - /** - * Lists the names of stored connections to GitHub accounts. - */ - listGitHubAccountTokenNames(params: CodeDeploy.Types.ListGitHubAccountTokenNamesInput, callback?: (err: AWSError, data: CodeDeploy.Types.ListGitHubAccountTokenNamesOutput) => void): Request; - /** - * Lists the names of stored connections to GitHub accounts. - */ - listGitHubAccountTokenNames(callback?: (err: AWSError, data: CodeDeploy.Types.ListGitHubAccountTokenNamesOutput) => void): Request; - /** - * Gets a list of names for one or more on-premises instances. Unless otherwise specified, both registered and deregistered on-premises instance names will be listed. To list only registered or deregistered on-premises instance names, use the registration status parameter. - */ - listOnPremisesInstances(params: CodeDeploy.Types.ListOnPremisesInstancesInput, callback?: (err: AWSError, data: CodeDeploy.Types.ListOnPremisesInstancesOutput) => void): Request; - /** - * Gets a list of names for one or more on-premises instances. Unless otherwise specified, both registered and deregistered on-premises instance names will be listed. To list only registered or deregistered on-premises instance names, use the registration status parameter. - */ - listOnPremisesInstances(callback?: (err: AWSError, data: CodeDeploy.Types.ListOnPremisesInstancesOutput) => void): Request; - /** - * Registers with AWS CodeDeploy a revision for the specified application. - */ - registerApplicationRevision(params: CodeDeploy.Types.RegisterApplicationRevisionInput, callback?: (err: AWSError, data: {}) => void): Request<{}, AWSError>; - /** - * Registers with AWS CodeDeploy a revision for the specified application. - */ - registerApplicationRevision(callback?: (err: AWSError, data: {}) => void): Request<{}, AWSError>; - /** - * Registers an on-premises instance. Only one IAM ARN (an IAM session ARN or IAM user ARN) is supported in the request. You cannot use both. - */ - registerOnPremisesInstance(params: CodeDeploy.Types.RegisterOnPremisesInstanceInput, callback?: (err: AWSError, data: {}) => void): Request<{}, AWSError>; - /** - * Registers an on-premises instance. Only one IAM ARN (an IAM session ARN or IAM user ARN) is supported in the request. You cannot use both. - */ - registerOnPremisesInstance(callback?: (err: AWSError, data: {}) => void): Request<{}, AWSError>; - /** - * Removes one or more tags from one or more on-premises instances. - */ - removeTagsFromOnPremisesInstances(params: CodeDeploy.Types.RemoveTagsFromOnPremisesInstancesInput, callback?: (err: AWSError, data: {}) => void): Request<{}, AWSError>; - /** - * Removes one or more tags from one or more on-premises instances. - */ - removeTagsFromOnPremisesInstances(callback?: (err: AWSError, data: {}) => void): Request<{}, AWSError>; - /** - * In a blue/green deployment, overrides any specified wait time and starts terminating instances immediately after the traffic routing is completed. - */ - skipWaitTimeForInstanceTermination(params: CodeDeploy.Types.SkipWaitTimeForInstanceTerminationInput, callback?: (err: AWSError, data: {}) => void): Request<{}, AWSError>; - /** - * In a blue/green deployment, overrides any specified wait time and starts terminating instances immediately after the traffic routing is completed. - */ - skipWaitTimeForInstanceTermination(callback?: (err: AWSError, data: {}) => void): Request<{}, AWSError>; - /** - * Attempts to stop an ongoing deployment. - */ - stopDeployment(params: CodeDeploy.Types.StopDeploymentInput, callback?: (err: AWSError, data: CodeDeploy.Types.StopDeploymentOutput) => void): Request; - /** - * Attempts to stop an ongoing deployment. - */ - stopDeployment(callback?: (err: AWSError, data: CodeDeploy.Types.StopDeploymentOutput) => void): Request; - /** - * Changes the name of an application. - */ - updateApplication(params: CodeDeploy.Types.UpdateApplicationInput, callback?: (err: AWSError, data: {}) => void): Request<{}, AWSError>; - /** - * Changes the name of an application. - */ - updateApplication(callback?: (err: AWSError, data: {}) => void): Request<{}, AWSError>; - /** - * Changes information about a deployment group. - */ - updateDeploymentGroup(params: CodeDeploy.Types.UpdateDeploymentGroupInput, callback?: (err: AWSError, data: CodeDeploy.Types.UpdateDeploymentGroupOutput) => void): Request; - /** - * Changes information about a deployment group. - */ - updateDeploymentGroup(callback?: (err: AWSError, data: CodeDeploy.Types.UpdateDeploymentGroupOutput) => void): Request; - /** - * Waits for the deploymentSuccessful state by periodically calling the underlying CodeDeploy.getDeploymentoperation every 15 seconds (at most 120 times). - */ - waitFor(state: "deploymentSuccessful", params: CodeDeploy.Types.GetDeploymentInput, callback?: (err: AWSError, data: CodeDeploy.Types.GetDeploymentOutput) => void): Request; - /** - * Waits for the deploymentSuccessful state by periodically calling the underlying CodeDeploy.getDeploymentoperation every 15 seconds (at most 120 times). - */ - waitFor(state: "deploymentSuccessful", callback?: (err: AWSError, data: CodeDeploy.Types.GetDeploymentOutput) => void): Request; -} -declare namespace CodeDeploy { - export interface AddTagsToOnPremisesInstancesInput { - /** - * The tag key-value pairs to add to the on-premises instances. Keys and values are both required. Keys cannot be null or empty strings. Value-only tags are not allowed. - */ - tags: TagList; - /** - * The names of the on-premises instances to which to add tags. - */ - instanceNames: InstanceNameList; - } - export type AdditionalDeploymentStatusInfo = string; - export interface Alarm { - /** - * The name of the alarm. Maximum length is 255 characters. Each alarm name can be used only once in a list of alarms. - */ - name?: AlarmName; - } - export interface AlarmConfiguration { - /** - * Indicates whether the alarm configuration is enabled. - */ - enabled?: Boolean; - /** - * Indicates whether a deployment should continue if information about the current state of alarms cannot be retrieved from Amazon CloudWatch. The default value is false. true: The deployment will proceed even if alarm status information can't be retrieved from Amazon CloudWatch. false: The deployment will stop if alarm status information can't be retrieved from Amazon CloudWatch. - */ - ignorePollAlarmFailure?: Boolean; - /** - * A list of alarms configured for the deployment group. A maximum of 10 alarms can be added to a deployment group. - */ - alarms?: AlarmList; - } - export type AlarmList = Alarm[]; - export type AlarmName = string; - export type ApplicationId = string; - export interface ApplicationInfo { - /** - * The application ID. - */ - applicationId?: ApplicationId; - /** - * The application name. - */ - applicationName?: ApplicationName; - /** - * The time at which the application was created. - */ - createTime?: Timestamp; - /** - * True if the user has authenticated with GitHub for the specified application; otherwise, false. - */ - linkedToGitHub?: Boolean; - /** - * The name for a connection to a GitHub account. - */ - gitHubAccountName?: GitHubAccountTokenName; - } - export type ApplicationName = string; - export type ApplicationRevisionSortBy = "registerTime"|"firstUsedTime"|"lastUsedTime"|string; - export type ApplicationsInfoList = ApplicationInfo[]; - export type ApplicationsList = ApplicationName[]; - export interface AutoRollbackConfiguration { - /** - * Indicates whether a defined automatic rollback configuration is currently enabled. - */ - enabled?: Boolean; - /** - * The event type or types that trigger a rollback. - */ - events?: AutoRollbackEventsList; - } - export type AutoRollbackEvent = "DEPLOYMENT_FAILURE"|"DEPLOYMENT_STOP_ON_ALARM"|"DEPLOYMENT_STOP_ON_REQUEST"|string; - export type AutoRollbackEventsList = AutoRollbackEvent[]; - export interface AutoScalingGroup { - /** - * The Auto Scaling group name. - */ - name?: AutoScalingGroupName; - /** - * An Auto Scaling lifecycle event hook name. - */ - hook?: AutoScalingGroupHook; - } - export type AutoScalingGroupHook = string; - export type AutoScalingGroupList = AutoScalingGroup[]; - export type AutoScalingGroupName = string; - export type AutoScalingGroupNameList = AutoScalingGroupName[]; - export interface BatchGetApplicationRevisionsInput { - /** - * The name of an AWS CodeDeploy application about which to get revision information. - */ - applicationName: ApplicationName; - /** - * Information to get about the application revisions, including type and location. - */ - revisions: RevisionLocationList; - } - export interface BatchGetApplicationRevisionsOutput { - /** - * The name of the application that corresponds to the revisions. - */ - applicationName?: ApplicationName; - /** - * Information about errors that may have occurred during the API call. - */ - errorMessage?: ErrorMessage; - /** - * Additional information about the revisions, including the type and location. - */ - revisions?: RevisionInfoList; - } - export interface BatchGetApplicationsInput { - /** - * A list of application names separated by spaces. - */ - applicationNames?: ApplicationsList; - } - export interface BatchGetApplicationsOutput { - /** - * Information about the applications. - */ - applicationsInfo?: ApplicationsInfoList; - } - export interface BatchGetDeploymentGroupsInput { - /** - * The name of an AWS CodeDeploy application associated with the applicable IAM user or AWS account. - */ - applicationName: ApplicationName; - /** - * The deployment groups' names. - */ - deploymentGroupNames: DeploymentGroupsList; - } - export interface BatchGetDeploymentGroupsOutput { - /** - * Information about the deployment groups. - */ - deploymentGroupsInfo?: DeploymentGroupInfoList; - /** - * Information about errors that may have occurred during the API call. - */ - errorMessage?: ErrorMessage; - } - export interface BatchGetDeploymentInstancesInput { - /** - * The unique ID of a deployment. - */ - deploymentId: DeploymentId; - /** - * The unique IDs of instances in the deployment group. - */ - instanceIds: InstancesList; - } - export interface BatchGetDeploymentInstancesOutput { - /** - * Information about the instance. - */ - instancesSummary?: InstanceSummaryList; - /** - * Information about errors that may have occurred during the API call. - */ - errorMessage?: ErrorMessage; - } - export interface BatchGetDeploymentsInput { - /** - * A list of deployment IDs, separated by spaces. - */ - deploymentIds?: DeploymentsList; - } - export interface BatchGetDeploymentsOutput { - /** - * Information about the deployments. - */ - deploymentsInfo?: DeploymentsInfoList; - } - export interface BatchGetOnPremisesInstancesInput { - /** - * The names of the on-premises instances about which to get information. - */ - instanceNames?: InstanceNameList; - } - export interface BatchGetOnPremisesInstancesOutput { - /** - * Information about the on-premises instances. - */ - instanceInfos?: InstanceInfoList; - } - export interface BlueGreenDeploymentConfiguration { - /** - * Information about whether to terminate instances in the original fleet during a blue/green deployment. - */ - terminateBlueInstancesOnDeploymentSuccess?: BlueInstanceTerminationOption; - /** - * Information about the action to take when newly provisioned instances are ready to receive traffic in a blue/green deployment. - */ - deploymentReadyOption?: DeploymentReadyOption; - /** - * Information about how instances are provisioned for a replacement environment in a blue/green deployment. - */ - greenFleetProvisioningOption?: GreenFleetProvisioningOption; - } - export interface BlueInstanceTerminationOption { - /** - * The action to take on instances in the original environment after a successful blue/green deployment. TERMINATE: Instances are terminated after a specified wait time. KEEP_ALIVE: Instances are left running after they are deregistered from the load balancer and removed from the deployment group. - */ - action?: InstanceAction; - /** - * The number of minutes to wait after a successful blue/green deployment before terminating instances from the original environment. - */ - terminationWaitTimeInMinutes?: Duration; - } - export type Boolean = boolean; - export type BundleType = "tar"|"tgz"|"zip"|string; - export type CommitId = string; - export interface ContinueDeploymentInput { - /** - * The deployment ID of the blue/green deployment for which you want to start rerouting traffic to the replacement environment. - */ - deploymentId?: DeploymentId; - } - export interface CreateApplicationInput { - /** - * The name of the application. This name must be unique with the applicable IAM user or AWS account. - */ - applicationName: ApplicationName; - } - export interface CreateApplicationOutput { - /** - * A unique application ID. - */ - applicationId?: ApplicationId; - } - export interface CreateDeploymentConfigInput { - /** - * The name of the deployment configuration to create. - */ - deploymentConfigName: DeploymentConfigName; - /** - * The minimum number of healthy instances that should be available at any time during the deployment. There are two parameters expected in the input: type and value. The type parameter takes either of the following values: HOST_COUNT: The value parameter represents the minimum number of healthy instances as an absolute value. FLEET_PERCENT: The value parameter represents the minimum number of healthy instances as a percentage of the total number of instances in the deployment. If you specify FLEET_PERCENT, at the start of the deployment, AWS CodeDeploy converts the percentage to the equivalent number of instance and rounds up fractional instances. The value parameter takes an integer. For example, to set a minimum of 95% healthy instance, specify a type of FLEET_PERCENT and a value of 95. - */ - minimumHealthyHosts: MinimumHealthyHosts; - } - export interface CreateDeploymentConfigOutput { - /** - * A unique deployment configuration ID. - */ - deploymentConfigId?: DeploymentConfigId; - } - export interface CreateDeploymentGroupInput { - /** - * The name of an AWS CodeDeploy application associated with the applicable IAM user or AWS account. - */ - applicationName: ApplicationName; - /** - * The name of a new deployment group for the specified application. - */ - deploymentGroupName: DeploymentGroupName; - /** - * If specified, the deployment configuration name can be either one of the predefined configurations provided with AWS CodeDeploy or a custom deployment configuration that you create by calling the create deployment configuration operation. CodeDeployDefault.OneAtATime is the default deployment configuration. It is used if a configuration isn't specified for the deployment or the deployment group. For more information about the predefined deployment configurations in AWS CodeDeploy, see Working with Deployment Groups in AWS CodeDeploy in the AWS CodeDeploy User Guide. - */ - deploymentConfigName?: DeploymentConfigName; - /** - * The Amazon EC2 tags on which to filter. The deployment group will include EC2 instances with any of the specified tags. Cannot be used in the same call as ec2TagSet. - */ - ec2TagFilters?: EC2TagFilterList; - /** - * The on-premises instance tags on which to filter. The deployment group will include on-premises instances with any of the specified tags. Cannot be used in the same call as OnPremisesTagSet. - */ - onPremisesInstanceTagFilters?: TagFilterList; - /** - * A list of associated Auto Scaling groups. - */ - autoScalingGroups?: AutoScalingGroupNameList; - /** - * A service role ARN that allows AWS CodeDeploy to act on the user's behalf when interacting with AWS services. - */ - serviceRoleArn: Role; - /** - * Information about triggers to create when the deployment group is created. For examples, see Create a Trigger for an AWS CodeDeploy Event in the AWS CodeDeploy User Guide. - */ - triggerConfigurations?: TriggerConfigList; - /** - * Information to add about Amazon CloudWatch alarms when the deployment group is created. - */ - alarmConfiguration?: AlarmConfiguration; - /** - * Configuration information for an automatic rollback that is added when a deployment group is created. - */ - autoRollbackConfiguration?: AutoRollbackConfiguration; - /** - * Information about the type of deployment, in-place or blue/green, that you want to run and whether to route deployment traffic behind a load balancer. - */ - deploymentStyle?: DeploymentStyle; - /** - * Information about blue/green deployment options for a deployment group. - */ - blueGreenDeploymentConfiguration?: BlueGreenDeploymentConfiguration; - /** - * Information about the load balancer used in a deployment. - */ - loadBalancerInfo?: LoadBalancerInfo; - /** - * Information about groups of tags applied to EC2 instances. The deployment group will include only EC2 instances identified by all the tag groups. Cannot be used in the same call as ec2TagFilters. - */ - ec2TagSet?: EC2TagSet; - /** - * Information about groups of tags applied to on-premises instances. The deployment group will include only on-premises instances identified by all the tag groups. Cannot be used in the same call as onPremisesInstanceTagFilters. - */ - onPremisesTagSet?: OnPremisesTagSet; - } - export interface CreateDeploymentGroupOutput { - /** - * A unique deployment group ID. - */ - deploymentGroupId?: DeploymentGroupId; - } - export interface CreateDeploymentInput { - /** - * The name of an AWS CodeDeploy application associated with the applicable IAM user or AWS account. - */ - applicationName: ApplicationName; - /** - * The name of the deployment group. - */ - deploymentGroupName?: DeploymentGroupName; - /** - * The type and location of the revision to deploy. - */ - revision?: RevisionLocation; - /** - * The name of a deployment configuration associated with the applicable IAM user or AWS account. If not specified, the value configured in the deployment group will be used as the default. If the deployment group does not have a deployment configuration associated with it, then CodeDeployDefault.OneAtATime will be used by default. - */ - deploymentConfigName?: DeploymentConfigName; - /** - * A comment about the deployment. - */ - description?: Description; - /** - * If set to true, then if the deployment causes the ApplicationStop deployment lifecycle event to an instance to fail, the deployment to that instance will not be considered to have failed at that point and will continue on to the BeforeInstall deployment lifecycle event. If set to false or not specified, then if the deployment causes the ApplicationStop deployment lifecycle event to fail to an instance, the deployment to that instance will stop, and the deployment to that instance will be considered to have failed. - */ - ignoreApplicationStopFailures?: Boolean; - /** - * Information about the instances that will belong to the replacement environment in a blue/green deployment. - */ - targetInstances?: TargetInstances; - /** - * Configuration information for an automatic rollback that is added when a deployment is created. - */ - autoRollbackConfiguration?: AutoRollbackConfiguration; - /** - * Indicates whether to deploy to all instances or only to instances that are not running the latest application revision. - */ - updateOutdatedInstancesOnly?: Boolean; - /** - * Information about how AWS CodeDeploy handles files that already exist in a deployment target location but weren't part of the previous successful deployment. The fileExistsBehavior parameter takes any of the following values: DISALLOW: The deployment fails. This is also the default behavior if no option is specified. OVERWRITE: The version of the file from the application revision currently being deployed replaces the version already on the instance. RETAIN: The version of the file already on the instance is kept and used as part of the new deployment. - */ - fileExistsBehavior?: FileExistsBehavior; - } - export interface CreateDeploymentOutput { - /** - * A unique deployment ID. - */ - deploymentId?: DeploymentId; - } - export interface DeleteApplicationInput { - /** - * The name of an AWS CodeDeploy application associated with the applicable IAM user or AWS account. - */ - applicationName: ApplicationName; - } - export interface DeleteDeploymentConfigInput { - /** - * The name of a deployment configuration associated with the applicable IAM user or AWS account. - */ - deploymentConfigName: DeploymentConfigName; - } - export interface DeleteDeploymentGroupInput { - /** - * The name of an AWS CodeDeploy application associated with the applicable IAM user or AWS account. - */ - applicationName: ApplicationName; - /** - * The name of an existing deployment group for the specified application. - */ - deploymentGroupName: DeploymentGroupName; - } - export interface DeleteDeploymentGroupOutput { - /** - * If the output contains no data, and the corresponding deployment group contained at least one Auto Scaling group, AWS CodeDeploy successfully removed all corresponding Auto Scaling lifecycle event hooks from the Amazon EC2 instances in the Auto Scaling group. If the output contains data, AWS CodeDeploy could not remove some Auto Scaling lifecycle event hooks from the Amazon EC2 instances in the Auto Scaling group. - */ - hooksNotCleanedUp?: AutoScalingGroupList; - } - export type DeploymentConfigId = string; - export interface DeploymentConfigInfo { - /** - * The deployment configuration ID. - */ - deploymentConfigId?: DeploymentConfigId; - /** - * The deployment configuration name. - */ - deploymentConfigName?: DeploymentConfigName; - /** - * Information about the number or percentage of minimum healthy instance. - */ - minimumHealthyHosts?: MinimumHealthyHosts; - /** - * The time at which the deployment configuration was created. - */ - createTime?: Timestamp; - } - export type DeploymentConfigName = string; - export type DeploymentConfigsList = DeploymentConfigName[]; - export type DeploymentCreator = "user"|"autoscaling"|"codeDeployRollback"|string; - export type DeploymentGroupId = string; - export interface DeploymentGroupInfo { - /** - * The application name. - */ - applicationName?: ApplicationName; - /** - * The deployment group ID. - */ - deploymentGroupId?: DeploymentGroupId; - /** - * The deployment group name. - */ - deploymentGroupName?: DeploymentGroupName; - /** - * The deployment configuration name. - */ - deploymentConfigName?: DeploymentConfigName; - /** - * The Amazon EC2 tags on which to filter. The deployment group includes EC2 instances with any of the specified tags. - */ - ec2TagFilters?: EC2TagFilterList; - /** - * The on-premises instance tags on which to filter. The deployment group includes on-premises instances with any of the specified tags. - */ - onPremisesInstanceTagFilters?: TagFilterList; - /** - * A list of associated Auto Scaling groups. - */ - autoScalingGroups?: AutoScalingGroupList; - /** - * A service role ARN. - */ - serviceRoleArn?: Role; - /** - * Information about the deployment group's target revision, including type and location. - */ - targetRevision?: RevisionLocation; - /** - * Information about triggers associated with the deployment group. - */ - triggerConfigurations?: TriggerConfigList; - /** - * A list of alarms associated with the deployment group. - */ - alarmConfiguration?: AlarmConfiguration; - /** - * Information about the automatic rollback configuration associated with the deployment group. - */ - autoRollbackConfiguration?: AutoRollbackConfiguration; - /** - * Information about the type of deployment, either in-place or blue/green, you want to run and whether to route deployment traffic behind a load balancer. - */ - deploymentStyle?: DeploymentStyle; - /** - * Information about blue/green deployment options for a deployment group. - */ - blueGreenDeploymentConfiguration?: BlueGreenDeploymentConfiguration; - /** - * Information about the load balancer to use in a deployment. - */ - loadBalancerInfo?: LoadBalancerInfo; - /** - * Information about the most recent successful deployment to the deployment group. - */ - lastSuccessfulDeployment?: LastDeploymentInfo; - /** - * Information about the most recent attempted deployment to the deployment group. - */ - lastAttemptedDeployment?: LastDeploymentInfo; - /** - * Information about groups of tags applied to an EC2 instance. The deployment group includes only EC2 instances identified by all the tag groups. Cannot be used in the same call as ec2TagFilters. - */ - ec2TagSet?: EC2TagSet; - /** - * Information about groups of tags applied to an on-premises instance. The deployment group includes only on-premises instances identified by all the tag groups. Cannot be used in the same call as onPremisesInstanceTagFilters. - */ - onPremisesTagSet?: OnPremisesTagSet; - } - export type DeploymentGroupInfoList = DeploymentGroupInfo[]; - export type DeploymentGroupName = string; - export type DeploymentGroupsList = DeploymentGroupName[]; - export type DeploymentId = string; - export interface DeploymentInfo { - /** - * The application name. - */ - applicationName?: ApplicationName; - /** - * The deployment group name. - */ - deploymentGroupName?: DeploymentGroupName; - /** - * The deployment configuration name. - */ - deploymentConfigName?: DeploymentConfigName; - /** - * The deployment ID. - */ - deploymentId?: DeploymentId; - /** - * Information about the application revision that was deployed to the deployment group before the most recent successful deployment. - */ - previousRevision?: RevisionLocation; - /** - * Information about the location of stored application artifacts and the service from which to retrieve them. - */ - revision?: RevisionLocation; - /** - * The current state of the deployment as a whole. - */ - status?: DeploymentStatus; - /** - * Information about any error associated with this deployment. - */ - errorInformation?: ErrorInformation; - /** - * A timestamp indicating when the deployment was created. - */ - createTime?: Timestamp; - /** - * A timestamp indicating when the deployment was deployed to the deployment group. In some cases, the reported value of the start time may be later than the complete time. This is due to differences in the clock settings of back-end servers that participate in the deployment process. - */ - startTime?: Timestamp; - /** - * A timestamp indicating when the deployment was complete. - */ - completeTime?: Timestamp; - /** - * A summary of the deployment status of the instances in the deployment. - */ - deploymentOverview?: DeploymentOverview; - /** - * A comment about the deployment. - */ - description?: Description; - /** - * The means by which the deployment was created: user: A user created the deployment. autoscaling: Auto Scaling created the deployment. codeDeployRollback: A rollback process created the deployment. - */ - creator?: DeploymentCreator; - /** - * If true, then if the deployment causes the ApplicationStop deployment lifecycle event to an instance to fail, the deployment to that instance will not be considered to have failed at that point and will continue on to the BeforeInstall deployment lifecycle event. If false or not specified, then if the deployment causes the ApplicationStop deployment lifecycle event to an instance to fail, the deployment to that instance will stop, and the deployment to that instance will be considered to have failed. - */ - ignoreApplicationStopFailures?: Boolean; - /** - * Information about the automatic rollback configuration associated with the deployment. - */ - autoRollbackConfiguration?: AutoRollbackConfiguration; - /** - * Indicates whether only instances that are not running the latest application revision are to be deployed to. - */ - updateOutdatedInstancesOnly?: Boolean; - /** - * Information about a deployment rollback. - */ - rollbackInfo?: RollbackInfo; - /** - * Information about the type of deployment, either in-place or blue/green, you want to run and whether to route deployment traffic behind a load balancer. - */ - deploymentStyle?: DeploymentStyle; - /** - * Information about the instances that belong to the replacement environment in a blue/green deployment. - */ - targetInstances?: TargetInstances; - /** - * Indicates whether the wait period set for the termination of instances in the original environment has started. Status is 'false' if the KEEP_ALIVE option is specified; otherwise, 'true' as soon as the termination wait period starts. - */ - instanceTerminationWaitTimeStarted?: Boolean; - /** - * Information about blue/green deployment options for this deployment. - */ - blueGreenDeploymentConfiguration?: BlueGreenDeploymentConfiguration; - /** - * Information about the load balancer used in the deployment. - */ - loadBalancerInfo?: LoadBalancerInfo; - /** - * Provides information about the results of a deployment, such as whether instances in the original environment in a blue/green deployment were not terminated. - */ - additionalDeploymentStatusInfo?: AdditionalDeploymentStatusInfo; - /** - * Information about how AWS CodeDeploy handles files that already exist in a deployment target location but weren't part of the previous successful deployment. DISALLOW: The deployment fails. This is also the default behavior if no option is specified. OVERWRITE: The version of the file from the application revision currently being deployed replaces the version already on the instance. RETAIN: The version of the file already on the instance is kept and used as part of the new deployment. - */ - fileExistsBehavior?: FileExistsBehavior; - } - export type DeploymentOption = "WITH_TRAFFIC_CONTROL"|"WITHOUT_TRAFFIC_CONTROL"|string; - export interface DeploymentOverview { - /** - * The number of instances in the deployment in a pending state. - */ - Pending?: InstanceCount; - /** - * The number of instances in which the deployment is in progress. - */ - InProgress?: InstanceCount; - /** - * The number of instances in the deployment to which revisions have been successfully deployed. - */ - Succeeded?: InstanceCount; - /** - * The number of instances in the deployment in a failed state. - */ - Failed?: InstanceCount; - /** - * The number of instances in the deployment in a skipped state. - */ - Skipped?: InstanceCount; - /** - * The number of instances in a replacement environment ready to receive traffic in a blue/green deployment. - */ - Ready?: InstanceCount; - } - export type DeploymentReadyAction = "CONTINUE_DEPLOYMENT"|"STOP_DEPLOYMENT"|string; - export interface DeploymentReadyOption { - /** - * Information about when to reroute traffic from an original environment to a replacement environment in a blue/green deployment. CONTINUE_DEPLOYMENT: Register new instances with the load balancer immediately after the new application revision is installed on the instances in the replacement environment. STOP_DEPLOYMENT: Do not register new instances with load balancer unless traffic is rerouted manually. If traffic is not rerouted manually before the end of the specified wait period, the deployment status is changed to Stopped. - */ - actionOnTimeout?: DeploymentReadyAction; - /** - * The number of minutes to wait before the status of a blue/green deployment changed to Stopped if rerouting is not started manually. Applies only to the STOP_DEPLOYMENT option for actionOnTimeout - */ - waitTimeInMinutes?: Duration; - } - export type DeploymentStatus = "Created"|"Queued"|"InProgress"|"Succeeded"|"Failed"|"Stopped"|"Ready"|string; - export type DeploymentStatusList = DeploymentStatus[]; - export interface DeploymentStyle { - /** - * Indicates whether to run an in-place deployment or a blue/green deployment. - */ - deploymentType?: DeploymentType; - /** - * Indicates whether to route deployment traffic behind a load balancer. - */ - deploymentOption?: DeploymentOption; - } - export type DeploymentType = "IN_PLACE"|"BLUE_GREEN"|string; - export type DeploymentsInfoList = DeploymentInfo[]; - export type DeploymentsList = DeploymentId[]; - export interface DeregisterOnPremisesInstanceInput { - /** - * The name of the on-premises instance to deregister. - */ - instanceName: InstanceName; - } - export type Description = string; - export interface Diagnostics { - /** - * The associated error code: Success: The specified script ran. ScriptMissing: The specified script was not found in the specified location. ScriptNotExecutable: The specified script is not a recognized executable file type. ScriptTimedOut: The specified script did not finish running in the specified time period. ScriptFailed: The specified script failed to run as expected. UnknownError: The specified script did not run for an unknown reason. - */ - errorCode?: LifecycleErrorCode; - /** - * The name of the script. - */ - scriptName?: ScriptName; - /** - * The message associated with the error. - */ - message?: LifecycleMessage; - /** - * The last portion of the diagnostic log. If available, AWS CodeDeploy returns up to the last 4 KB of the diagnostic log. - */ - logTail?: LogTail; - } - export type Duration = number; - export interface EC2TagFilter { - /** - * The tag filter key. - */ - Key?: Key; - /** - * The tag filter value. - */ - Value?: Value; - /** - * The tag filter type: KEY_ONLY: Key only. VALUE_ONLY: Value only. KEY_AND_VALUE: Key and value. - */ - Type?: EC2TagFilterType; - } - export type EC2TagFilterList = EC2TagFilter[]; - export type EC2TagFilterType = "KEY_ONLY"|"VALUE_ONLY"|"KEY_AND_VALUE"|string; - export interface EC2TagSet { - /** - * A list containing other lists of EC2 instance tag groups. In order for an instance to be included in the deployment group, it must be identified by all the tag groups in the list. - */ - ec2TagSetList?: EC2TagSetList; - } - export type EC2TagSetList = EC2TagFilterList[]; - export interface ELBInfo { - /** - * For blue/green deployments, the name of the load balancer that will be used to route traffic from original instances to replacement instances in a blue/green deployment. For in-place deployments, the name of the load balancer that instances are deregistered from, so they are not serving traffic during a deployment, and then re-registered with after the deployment completes. - */ - name?: ELBName; - } - export type ELBInfoList = ELBInfo[]; - export type ELBName = string; - export type ETag = string; - export type ErrorCode = "DEPLOYMENT_GROUP_MISSING"|"APPLICATION_MISSING"|"REVISION_MISSING"|"IAM_ROLE_MISSING"|"IAM_ROLE_PERMISSIONS"|"NO_EC2_SUBSCRIPTION"|"OVER_MAX_INSTANCES"|"NO_INSTANCES"|"TIMEOUT"|"HEALTH_CONSTRAINTS_INVALID"|"HEALTH_CONSTRAINTS"|"INTERNAL_ERROR"|"THROTTLED"|"ALARM_ACTIVE"|"AGENT_ISSUE"|"AUTO_SCALING_IAM_ROLE_PERMISSIONS"|"AUTO_SCALING_CONFIGURATION"|"MANUAL_STOP"|string; - export interface ErrorInformation { - /** - * For information about additional error codes, see Error Codes for AWS CodeDeploy in the AWS CodeDeploy User Guide. The error code: APPLICATION_MISSING: The application was missing. This error code will most likely be raised if the application is deleted after the deployment is created but before it is started. DEPLOYMENT_GROUP_MISSING: The deployment group was missing. This error code will most likely be raised if the deployment group is deleted after the deployment is created but before it is started. HEALTH_CONSTRAINTS: The deployment failed on too many instances to be successfully deployed within the instance health constraints specified. HEALTH_CONSTRAINTS_INVALID: The revision cannot be successfully deployed within the instance health constraints specified. IAM_ROLE_MISSING: The service role cannot be accessed. IAM_ROLE_PERMISSIONS: The service role does not have the correct permissions. INTERNAL_ERROR: There was an internal error. NO_EC2_SUBSCRIPTION: The calling account is not subscribed to the Amazon EC2 service. NO_INSTANCES: No instance were specified, or no instance can be found. OVER_MAX_INSTANCES: The maximum number of instance was exceeded. THROTTLED: The operation was throttled because the calling account exceeded the throttling limits of one or more AWS services. TIMEOUT: The deployment has timed out. REVISION_MISSING: The revision ID was missing. This error code will most likely be raised if the revision is deleted after the deployment is created but before it is started. - */ - code?: ErrorCode; - /** - * An accompanying error message. - */ - message?: ErrorMessage; - } - export type ErrorMessage = string; - export type FileExistsBehavior = "DISALLOW"|"OVERWRITE"|"RETAIN"|string; - export interface GenericRevisionInfo { - /** - * A comment about the revision. - */ - description?: Description; - /** - * The deployment groups for which this is the current target revision. - */ - deploymentGroups?: DeploymentGroupsList; - /** - * When the revision was first used by AWS CodeDeploy. - */ - firstUsedTime?: Timestamp; - /** - * When the revision was last used by AWS CodeDeploy. - */ - lastUsedTime?: Timestamp; - /** - * When the revision was registered with AWS CodeDeploy. - */ - registerTime?: Timestamp; - } - export interface GetApplicationInput { - /** - * The name of an AWS CodeDeploy application associated with the applicable IAM user or AWS account. - */ - applicationName: ApplicationName; - } - export interface GetApplicationOutput { - /** - * Information about the application. - */ - application?: ApplicationInfo; - } - export interface GetApplicationRevisionInput { - /** - * The name of the application that corresponds to the revision. - */ - applicationName: ApplicationName; - /** - * Information about the application revision to get, including type and location. - */ - revision: RevisionLocation; - } - export interface GetApplicationRevisionOutput { - /** - * The name of the application that corresponds to the revision. - */ - applicationName?: ApplicationName; - /** - * Additional information about the revision, including type and location. - */ - revision?: RevisionLocation; - /** - * General information about the revision. - */ - revisionInfo?: GenericRevisionInfo; - } - export interface GetDeploymentConfigInput { - /** - * The name of a deployment configuration associated with the applicable IAM user or AWS account. - */ - deploymentConfigName: DeploymentConfigName; - } - export interface GetDeploymentConfigOutput { - /** - * Information about the deployment configuration. - */ - deploymentConfigInfo?: DeploymentConfigInfo; - } - export interface GetDeploymentGroupInput { - /** - * The name of an AWS CodeDeploy application associated with the applicable IAM user or AWS account. - */ - applicationName: ApplicationName; - /** - * The name of an existing deployment group for the specified application. - */ - deploymentGroupName: DeploymentGroupName; - } - export interface GetDeploymentGroupOutput { - /** - * Information about the deployment group. - */ - deploymentGroupInfo?: DeploymentGroupInfo; - } - export interface GetDeploymentInput { - /** - * A deployment ID associated with the applicable IAM user or AWS account. - */ - deploymentId: DeploymentId; - } - export interface GetDeploymentInstanceInput { - /** - * The unique ID of a deployment. - */ - deploymentId: DeploymentId; - /** - * The unique ID of an instance in the deployment group. - */ - instanceId: InstanceId; - } - export interface GetDeploymentInstanceOutput { - /** - * Information about the instance. - */ - instanceSummary?: InstanceSummary; - } - export interface GetDeploymentOutput { - /** - * Information about the deployment. - */ - deploymentInfo?: DeploymentInfo; - } - export interface GetOnPremisesInstanceInput { - /** - * The name of the on-premises instance about which to get information. - */ - instanceName: InstanceName; - } - export interface GetOnPremisesInstanceOutput { - /** - * Information about the on-premises instance. - */ - instanceInfo?: InstanceInfo; - } - export type GitHubAccountTokenName = string; - export type GitHubAccountTokenNameList = GitHubAccountTokenName[]; - export interface GitHubLocation { - /** - * The GitHub account and repository pair that stores a reference to the commit that represents the bundled artifacts for the application revision. Specified as account/repository. - */ - repository?: Repository; - /** - * The SHA1 commit ID of the GitHub commit that represents the bundled artifacts for the application revision. - */ - commitId?: CommitId; - } - export type GreenFleetProvisioningAction = "DISCOVER_EXISTING"|"COPY_AUTO_SCALING_GROUP"|string; - export interface GreenFleetProvisioningOption { - /** - * The method used to add instances to a replacement environment. DISCOVER_EXISTING: Use instances that already exist or will be created manually. COPY_AUTO_SCALING_GROUP: Use settings from a specified Auto Scaling group to define and create instances in a new Auto Scaling group. - */ - action?: GreenFleetProvisioningAction; - } - export type IamSessionArn = string; - export type IamUserArn = string; - export type InstanceAction = "TERMINATE"|"KEEP_ALIVE"|string; - export type InstanceArn = string; - export type InstanceCount = number; - export type InstanceId = string; - export interface InstanceInfo { - /** - * The name of the on-premises instance. - */ - instanceName?: InstanceName; - /** - * The ARN of the IAM session associated with the on-premises instance. - */ - iamSessionArn?: IamSessionArn; - /** - * The IAM user ARN associated with the on-premises instance. - */ - iamUserArn?: IamUserArn; - /** - * The ARN of the on-premises instance. - */ - instanceArn?: InstanceArn; - /** - * The time at which the on-premises instance was registered. - */ - registerTime?: Timestamp; - /** - * If the on-premises instance was deregistered, the time at which the on-premises instance was deregistered. - */ - deregisterTime?: Timestamp; - /** - * The tags currently associated with the on-premises instance. - */ - tags?: TagList; - } - export type InstanceInfoList = InstanceInfo[]; - export type InstanceName = string; - export type InstanceNameList = InstanceName[]; - export type InstanceStatus = "Pending"|"InProgress"|"Succeeded"|"Failed"|"Skipped"|"Unknown"|"Ready"|string; - export type InstanceStatusList = InstanceStatus[]; - export interface InstanceSummary { - /** - * The deployment ID. - */ - deploymentId?: DeploymentId; - /** - * The instance ID. - */ - instanceId?: InstanceId; - /** - * The deployment status for this instance: Pending: The deployment is pending for this instance. In Progress: The deployment is in progress for this instance. Succeeded: The deployment has succeeded for this instance. Failed: The deployment has failed for this instance. Skipped: The deployment has been skipped for this instance. Unknown: The deployment status is unknown for this instance. - */ - status?: InstanceStatus; - /** - * A timestamp indicating when the instance information was last updated. - */ - lastUpdatedAt?: Timestamp; - /** - * A list of lifecycle events for this instance. - */ - lifecycleEvents?: LifecycleEventList; - /** - * Information about which environment an instance belongs to in a blue/green deployment. BLUE: The instance is part of the original environment. GREEN: The instance is part of the replacement environment. - */ - instanceType?: InstanceType; - } - export type InstanceSummaryList = InstanceSummary[]; - export type InstanceType = "Blue"|"Green"|string; - export type InstanceTypeList = InstanceType[]; - export type InstancesList = InstanceId[]; - export type Key = string; - export interface LastDeploymentInfo { - /** - * The deployment ID. - */ - deploymentId?: DeploymentId; - /** - * The status of the most recent deployment. - */ - status?: DeploymentStatus; - /** - * A timestamp indicating when the most recent deployment to the deployment group completed. - */ - endTime?: Timestamp; - /** - * A timestamp indicating when the most recent deployment to the deployment group started. - */ - createTime?: Timestamp; - } - export type LifecycleErrorCode = "Success"|"ScriptMissing"|"ScriptNotExecutable"|"ScriptTimedOut"|"ScriptFailed"|"UnknownError"|string; - export interface LifecycleEvent { - /** - * The deployment lifecycle event name, such as ApplicationStop, BeforeInstall, AfterInstall, ApplicationStart, or ValidateService. - */ - lifecycleEventName?: LifecycleEventName; - /** - * Diagnostic information about the deployment lifecycle event. - */ - diagnostics?: Diagnostics; - /** - * A timestamp indicating when the deployment lifecycle event started. - */ - startTime?: Timestamp; - /** - * A timestamp indicating when the deployment lifecycle event ended. - */ - endTime?: Timestamp; - /** - * The deployment lifecycle event status: Pending: The deployment lifecycle event is pending. InProgress: The deployment lifecycle event is in progress. Succeeded: The deployment lifecycle event ran successfully. Failed: The deployment lifecycle event has failed. Skipped: The deployment lifecycle event has been skipped. Unknown: The deployment lifecycle event is unknown. - */ - status?: LifecycleEventStatus; - } - export type LifecycleEventList = LifecycleEvent[]; - export type LifecycleEventName = string; - export type LifecycleEventStatus = "Pending"|"InProgress"|"Succeeded"|"Failed"|"Skipped"|"Unknown"|string; - export type LifecycleMessage = string; - export interface ListApplicationRevisionsInput { - /** - * The name of an AWS CodeDeploy application associated with the applicable IAM user or AWS account. - */ - applicationName: ApplicationName; - /** - * The column name to use to sort the list results: registerTime: Sort by the time the revisions were registered with AWS CodeDeploy. firstUsedTime: Sort by the time the revisions were first used in a deployment. lastUsedTime: Sort by the time the revisions were last used in a deployment. If not specified or set to null, the results will be returned in an arbitrary order. - */ - sortBy?: ApplicationRevisionSortBy; - /** - * The order in which to sort the list results: ascending: ascending order. descending: descending order. If not specified, the results will be sorted in ascending order. If set to null, the results will be sorted in an arbitrary order. - */ - sortOrder?: SortOrder; - /** - * An Amazon S3 bucket name to limit the search for revisions. If set to null, all of the user's buckets will be searched. - */ - s3Bucket?: S3Bucket; - /** - * A key prefix for the set of Amazon S3 objects to limit the search for revisions. - */ - s3KeyPrefix?: S3Key; - /** - * Whether to list revisions based on whether the revision is the target revision of an deployment group: include: List revisions that are target revisions of a deployment group. exclude: Do not list revisions that are target revisions of a deployment group. ignore: List all revisions. - */ - deployed?: ListStateFilterAction; - /** - * An identifier returned from the previous list application revisions call. It can be used to return the next set of applications in the list. - */ - nextToken?: NextToken; - } - export interface ListApplicationRevisionsOutput { - /** - * A list of locations that contain the matching revisions. - */ - revisions?: RevisionLocationList; - /** - * If a large amount of information is returned, an identifier will also be returned. It can be used in a subsequent list application revisions call to return the next set of application revisions in the list. - */ - nextToken?: NextToken; - } - export interface ListApplicationsInput { - /** - * An identifier returned from the previous list applications call. It can be used to return the next set of applications in the list. - */ - nextToken?: NextToken; - } - export interface ListApplicationsOutput { - /** - * A list of application names. - */ - applications?: ApplicationsList; - /** - * If a large amount of information is returned, an identifier is also returned. It can be used in a subsequent list applications call to return the next set of applications, will also be returned. in the list. - */ - nextToken?: NextToken; - } - export interface ListDeploymentConfigsInput { - /** - * An identifier returned from the previous list deployment configurations call. It can be used to return the next set of deployment configurations in the list. - */ - nextToken?: NextToken; - } - export interface ListDeploymentConfigsOutput { - /** - * A list of deployment configurations, including built-in configurations such as CodeDeployDefault.OneAtATime. - */ - deploymentConfigsList?: DeploymentConfigsList; - /** - * If a large amount of information is returned, an identifier is also returned. It can be used in a subsequent list deployment configurations call to return the next set of deployment configurations in the list. - */ - nextToken?: NextToken; - } - export interface ListDeploymentGroupsInput { - /** - * The name of an AWS CodeDeploy application associated with the applicable IAM user or AWS account. - */ - applicationName: ApplicationName; - /** - * An identifier returned from the previous list deployment groups call. It can be used to return the next set of deployment groups in the list. - */ - nextToken?: NextToken; - } - export interface ListDeploymentGroupsOutput { - /** - * The application name. - */ - applicationName?: ApplicationName; - /** - * A list of corresponding deployment group names. - */ - deploymentGroups?: DeploymentGroupsList; - /** - * If a large amount of information is returned, an identifier is also returned. It can be used in a subsequent list deployment groups call to return the next set of deployment groups in the list. - */ - nextToken?: NextToken; - } - export interface ListDeploymentInstancesInput { - /** - * The unique ID of a deployment. - */ - deploymentId: DeploymentId; - /** - * An identifier returned from the previous list deployment instances call. It can be used to return the next set of deployment instances in the list. - */ - nextToken?: NextToken; - /** - * A subset of instances to list by status: Pending: Include those instance with pending deployments. InProgress: Include those instance where deployments are still in progress. Succeeded: Include those instances with successful deployments. Failed: Include those instance with failed deployments. Skipped: Include those instance with skipped deployments. Unknown: Include those instance with deployments in an unknown state. - */ - instanceStatusFilter?: InstanceStatusList; - /** - * The set of instances in a blue/green deployment, either those in the original environment ("BLUE") or those in the replacement environment ("GREEN"), for which you want to view instance information. - */ - instanceTypeFilter?: InstanceTypeList; - } - export interface ListDeploymentInstancesOutput { - /** - * A list of instance IDs. - */ - instancesList?: InstancesList; - /** - * If a large amount of information is returned, an identifier is also returned. It can be used in a subsequent list deployment instances call to return the next set of deployment instances in the list. - */ - nextToken?: NextToken; - } - export interface ListDeploymentsInput { - /** - * The name of an AWS CodeDeploy application associated with the applicable IAM user or AWS account. - */ - applicationName?: ApplicationName; - /** - * The name of an existing deployment group for the specified application. - */ - deploymentGroupName?: DeploymentGroupName; - /** - * A subset of deployments to list by status: Created: Include created deployments in the resulting list. Queued: Include queued deployments in the resulting list. In Progress: Include in-progress deployments in the resulting list. Succeeded: Include successful deployments in the resulting list. Failed: Include failed deployments in the resulting list. Stopped: Include stopped deployments in the resulting list. - */ - includeOnlyStatuses?: DeploymentStatusList; - /** - * A time range (start and end) for returning a subset of the list of deployments. - */ - createTimeRange?: TimeRange; - /** - * An identifier returned from the previous list deployments call. It can be used to return the next set of deployments in the list. - */ - nextToken?: NextToken; - } - export interface ListDeploymentsOutput { - /** - * A list of deployment IDs. - */ - deployments?: DeploymentsList; - /** - * If a large amount of information is returned, an identifier is also returned. It can be used in a subsequent list deployments call to return the next set of deployments in the list. - */ - nextToken?: NextToken; - } - export interface ListGitHubAccountTokenNamesInput { - /** - * An identifier returned from the previous ListGitHubAccountTokenNames call. It can be used to return the next set of names in the list. - */ - nextToken?: NextToken; - } - export interface ListGitHubAccountTokenNamesOutput { - /** - * A list of names of connections to GitHub accounts. - */ - tokenNameList?: GitHubAccountTokenNameList; - /** - * If a large amount of information is returned, an identifier is also returned. It can be used in a subsequent ListGitHubAccountTokenNames call to return the next set of names in the list. - */ - nextToken?: NextToken; - } - export interface ListOnPremisesInstancesInput { - /** - * The registration status of the on-premises instances: Deregistered: Include deregistered on-premises instances in the resulting list. Registered: Include registered on-premises instances in the resulting list. - */ - registrationStatus?: RegistrationStatus; - /** - * The on-premises instance tags that will be used to restrict the corresponding on-premises instance names returned. - */ - tagFilters?: TagFilterList; - /** - * An identifier returned from the previous list on-premises instances call. It can be used to return the next set of on-premises instances in the list. - */ - nextToken?: NextToken; - } - export interface ListOnPremisesInstancesOutput { - /** - * The list of matching on-premises instance names. - */ - instanceNames?: InstanceNameList; - /** - * If a large amount of information is returned, an identifier is also returned. It can be used in a subsequent list on-premises instances call to return the next set of on-premises instances in the list. - */ - nextToken?: NextToken; - } - export type ListStateFilterAction = "include"|"exclude"|"ignore"|string; - export interface LoadBalancerInfo { - /** - * An array containing information about the load balancer to use for load balancing in a deployment. In Elastic Load Balancing, load balancers are used with Classic Load Balancers. - */ - elbInfoList?: ELBInfoList; - /** - * An array containing information about the target group to use for load balancing in a deployment. In Elastic Load Balancing, target groups are used with Application Load Balancers. - */ - targetGroupInfoList?: TargetGroupInfoList; - } - export type LogTail = string; - export type Message = string; - export interface MinimumHealthyHosts { - /** - * The minimum healthy instance value. - */ - value?: MinimumHealthyHostsValue; - /** - * The minimum healthy instance type: HOST_COUNT: The minimum number of healthy instance as an absolute value. FLEET_PERCENT: The minimum number of healthy instance as a percentage of the total number of instance in the deployment. In an example of nine instance, if a HOST_COUNT of six is specified, deploy to up to three instances at a time. The deployment will be successful if six or more instances are deployed to successfully; otherwise, the deployment fails. If a FLEET_PERCENT of 40 is specified, deploy to up to five instance at a time. The deployment will be successful if four or more instance are deployed to successfully; otherwise, the deployment fails. In a call to the get deployment configuration operation, CodeDeployDefault.OneAtATime will return a minimum healthy instance type of MOST_CONCURRENCY and a value of 1. This means a deployment to only one instance at a time. (You cannot set the type to MOST_CONCURRENCY, only to HOST_COUNT or FLEET_PERCENT.) In addition, with CodeDeployDefault.OneAtATime, AWS CodeDeploy will try to ensure that all instances but one are kept in a healthy state during the deployment. Although this allows one instance at a time to be taken offline for a new deployment, it also means that if the deployment to the last instance fails, the overall deployment still succeeds. For more information, see AWS CodeDeploy Instance Health in the AWS CodeDeploy User Guide. - */ - type?: MinimumHealthyHostsType; - } - export type MinimumHealthyHostsType = "HOST_COUNT"|"FLEET_PERCENT"|string; - export type MinimumHealthyHostsValue = number; - export type NextToken = string; - export type NullableBoolean = boolean; - export interface OnPremisesTagSet { - /** - * A list containing other lists of on-premises instance tag groups. In order for an instance to be included in the deployment group, it must be identified by all the tag groups in the list. - */ - onPremisesTagSetList?: OnPremisesTagSetList; - } - export type OnPremisesTagSetList = TagFilterList[]; - export interface RegisterApplicationRevisionInput { - /** - * The name of an AWS CodeDeploy application associated with the applicable IAM user or AWS account. - */ - applicationName: ApplicationName; - /** - * A comment about the revision. - */ - description?: Description; - /** - * Information about the application revision to register, including type and location. - */ - revision: RevisionLocation; - } - export interface RegisterOnPremisesInstanceInput { - /** - * The name of the on-premises instance to register. - */ - instanceName: InstanceName; - /** - * The ARN of the IAM session to associate with the on-premises instance. - */ - iamSessionArn?: IamSessionArn; - /** - * The ARN of the IAM user to associate with the on-premises instance. - */ - iamUserArn?: IamUserArn; - } - export type RegistrationStatus = "Registered"|"Deregistered"|string; - export interface RemoveTagsFromOnPremisesInstancesInput { - /** - * The tag key-value pairs to remove from the on-premises instances. - */ - tags: TagList; - /** - * The names of the on-premises instances from which to remove tags. - */ - instanceNames: InstanceNameList; - } - export type Repository = string; - export interface RevisionInfo { - /** - * Information about the location and type of an application revision. - */ - revisionLocation?: RevisionLocation; - /** - * Information about an application revision, including usage details and associated deployment groups. - */ - genericRevisionInfo?: GenericRevisionInfo; - } - export type RevisionInfoList = RevisionInfo[]; - export interface RevisionLocation { - /** - * The type of application revision: S3: An application revision stored in Amazon S3. GitHub: An application revision stored in GitHub. - */ - revisionType?: RevisionLocationType; - /** - * Information about the location of application artifacts stored in Amazon S3. - */ - s3Location?: S3Location; - /** - * Information about the location of application artifacts stored in GitHub. - */ - gitHubLocation?: GitHubLocation; - } - export type RevisionLocationList = RevisionLocation[]; - export type RevisionLocationType = "S3"|"GitHub"|string; - export type Role = string; - export interface RollbackInfo { - /** - * The ID of the deployment rollback. - */ - rollbackDeploymentId?: DeploymentId; - /** - * The deployment ID of the deployment that was underway and triggered a rollback deployment because it failed or was stopped. - */ - rollbackTriggeringDeploymentId?: DeploymentId; - /** - * Information describing the status of a deployment rollback; for example, whether the deployment can't be rolled back, is in progress, failed, or succeeded. - */ - rollbackMessage?: Description; - } - export type S3Bucket = string; - export type S3Key = string; - export interface S3Location { - /** - * The name of the Amazon S3 bucket where the application revision is stored. - */ - bucket?: S3Bucket; - /** - * The name of the Amazon S3 object that represents the bundled artifacts for the application revision. - */ - key?: S3Key; - /** - * The file type of the application revision. Must be one of the following: tar: A tar archive file. tgz: A compressed tar archive file. zip: A zip archive file. - */ - bundleType?: BundleType; - /** - * A specific version of the Amazon S3 object that represents the bundled artifacts for the application revision. If the version is not specified, the system will use the most recent version by default. - */ - version?: VersionId; - /** - * The ETag of the Amazon S3 object that represents the bundled artifacts for the application revision. If the ETag is not specified as an input parameter, ETag validation of the object will be skipped. - */ - eTag?: ETag; - } - export type ScriptName = string; - export interface SkipWaitTimeForInstanceTerminationInput { - /** - * The ID of the blue/green deployment for which you want to skip the instance termination wait time. - */ - deploymentId?: DeploymentId; - } - export type SortOrder = "ascending"|"descending"|string; - export interface StopDeploymentInput { - /** - * The unique ID of a deployment. - */ - deploymentId: DeploymentId; - /** - * Indicates, when a deployment is stopped, whether instances that have been updated should be rolled back to the previous version of the application revision. - */ - autoRollbackEnabled?: NullableBoolean; - } - export interface StopDeploymentOutput { - /** - * The status of the stop deployment operation: Pending: The stop operation is pending. Succeeded: The stop operation was successful. - */ - status?: StopStatus; - /** - * An accompanying status message. - */ - statusMessage?: Message; - } - export type StopStatus = "Pending"|"Succeeded"|string; - export interface Tag { - /** - * The tag's key. - */ - Key?: Key; - /** - * The tag's value. - */ - Value?: Value; - } - export interface TagFilter { - /** - * The on-premises instance tag filter key. - */ - Key?: Key; - /** - * The on-premises instance tag filter value. - */ - Value?: Value; - /** - * The on-premises instance tag filter type: KEY_ONLY: Key only. VALUE_ONLY: Value only. KEY_AND_VALUE: Key and value. - */ - Type?: TagFilterType; - } - export type TagFilterList = TagFilter[]; - export type TagFilterType = "KEY_ONLY"|"VALUE_ONLY"|"KEY_AND_VALUE"|string; - export type TagList = Tag[]; - export interface TargetGroupInfo { - /** - * For blue/green deployments, the name of the target group that instances in the original environment are deregistered from, and instances in the replacement environment registered with. For in-place deployments, the name of the target group that instances are deregistered from, so they are not serving traffic during a deployment, and then re-registered with after the deployment completes. - */ - name?: TargetGroupName; - } - export type TargetGroupInfoList = TargetGroupInfo[]; - export type TargetGroupName = string; - export interface TargetInstances { - /** - * The tag filter key, type, and value used to identify Amazon EC2 instances in a replacement environment for a blue/green deployment. Cannot be used in the same call as ec2TagSet. - */ - tagFilters?: EC2TagFilterList; - /** - * The names of one or more Auto Scaling groups to identify a replacement environment for a blue/green deployment. - */ - autoScalingGroups?: AutoScalingGroupNameList; - /** - * Information about the groups of EC2 instance tags that an instance must be identified by in order for it to be included in the replacement environment for a blue/green deployment. Cannot be used in the same call as tagFilters. - */ - ec2TagSet?: EC2TagSet; - } - export interface TimeRange { - /** - * The start time of the time range. Specify null to leave the start time open-ended. - */ - start?: Timestamp; - /** - * The end time of the time range. Specify null to leave the end time open-ended. - */ - end?: Timestamp; - } - export type Timestamp = Date; - export interface TriggerConfig { - /** - * The name of the notification trigger. - */ - triggerName?: TriggerName; - /** - * The ARN of the Amazon Simple Notification Service topic through which notifications about deployment or instance events are sent. - */ - triggerTargetArn?: TriggerTargetArn; - /** - * The event type or types for which notifications are triggered. - */ - triggerEvents?: TriggerEventTypeList; - } - export type TriggerConfigList = TriggerConfig[]; - export type TriggerEventType = "DeploymentStart"|"DeploymentSuccess"|"DeploymentFailure"|"DeploymentStop"|"DeploymentRollback"|"DeploymentReady"|"InstanceStart"|"InstanceSuccess"|"InstanceFailure"|"InstanceReady"|string; - export type TriggerEventTypeList = TriggerEventType[]; - export type TriggerName = string; - export type TriggerTargetArn = string; - export interface UpdateApplicationInput { - /** - * The current name of the application you want to change. - */ - applicationName?: ApplicationName; - /** - * The new name to give the application. - */ - newApplicationName?: ApplicationName; - } - export interface UpdateDeploymentGroupInput { - /** - * The application name corresponding to the deployment group to update. - */ - applicationName: ApplicationName; - /** - * The current name of the deployment group. - */ - currentDeploymentGroupName: DeploymentGroupName; - /** - * The new name of the deployment group, if you want to change it. - */ - newDeploymentGroupName?: DeploymentGroupName; - /** - * The replacement deployment configuration name to use, if you want to change it. - */ - deploymentConfigName?: DeploymentConfigName; - /** - * The replacement set of Amazon EC2 tags on which to filter, if you want to change them. To keep the existing tags, enter their names. To remove tags, do not enter any tag names. - */ - ec2TagFilters?: EC2TagFilterList; - /** - * The replacement set of on-premises instance tags on which to filter, if you want to change them. To keep the existing tags, enter their names. To remove tags, do not enter any tag names. - */ - onPremisesInstanceTagFilters?: TagFilterList; - /** - * The replacement list of Auto Scaling groups to be included in the deployment group, if you want to change them. To keep the Auto Scaling groups, enter their names. To remove Auto Scaling groups, do not enter any Auto Scaling group names. - */ - autoScalingGroups?: AutoScalingGroupNameList; - /** - * A replacement ARN for the service role, if you want to change it. - */ - serviceRoleArn?: Role; - /** - * Information about triggers to change when the deployment group is updated. For examples, see Modify Triggers in an AWS CodeDeploy Deployment Group in the AWS CodeDeploy User Guide. - */ - triggerConfigurations?: TriggerConfigList; - /** - * Information to add or change about Amazon CloudWatch alarms when the deployment group is updated. - */ - alarmConfiguration?: AlarmConfiguration; - /** - * Information for an automatic rollback configuration that is added or changed when a deployment group is updated. - */ - autoRollbackConfiguration?: AutoRollbackConfiguration; - /** - * Information about the type of deployment, either in-place or blue/green, you want to run and whether to route deployment traffic behind a load balancer. - */ - deploymentStyle?: DeploymentStyle; - /** - * Information about blue/green deployment options for a deployment group. - */ - blueGreenDeploymentConfiguration?: BlueGreenDeploymentConfiguration; - /** - * Information about the load balancer used in a deployment. - */ - loadBalancerInfo?: LoadBalancerInfo; - /** - * Information about groups of tags applied to on-premises instances. The deployment group will include only EC2 instances identified by all the tag groups. - */ - ec2TagSet?: EC2TagSet; - /** - * Information about an on-premises instance tag set. The deployment group will include only on-premises instances identified by all the tag groups. - */ - onPremisesTagSet?: OnPremisesTagSet; - } - export interface UpdateDeploymentGroupOutput { - /** - * If the output contains no data, and the corresponding deployment group contained at least one Auto Scaling group, AWS CodeDeploy successfully removed all corresponding Auto Scaling lifecycle event hooks from the AWS account. If the output contains data, AWS CodeDeploy could not remove some Auto Scaling lifecycle event hooks from the AWS account. - */ - hooksNotCleanedUp?: AutoScalingGroupList; - } - export type Value = string; - export type VersionId = string; - /** - * A string in YYYY-MM-DD format that represents the latest possible API version that can be used in this service. Specify 'latest' to use the latest possible version. - */ - export type apiVersion = "2014-10-06"|"latest"|string; - export interface ClientApiVersions { - /** - * A string in YYYY-MM-DD format that represents the latest possible API version that can be used in this service. Specify 'latest' to use the latest possible version. - */ - apiVersion?: apiVersion; - } - export type ClientConfiguration = ServiceConfigurationOptions & ClientApiVersions; - /** - * Contains interfaces for use with the CodeDeploy client. - */ - export import Types = CodeDeploy; -} -export = CodeDeploy; diff --git a/workshops/monte-carlo-on-ec2-spot-fleet/src/web/node_modules/aws-sdk/clients/codedeploy.js b/workshops/monte-carlo-on-ec2-spot-fleet/src/web/node_modules/aws-sdk/clients/codedeploy.js deleted file mode 100644 index 4aed9dc6..00000000 --- a/workshops/monte-carlo-on-ec2-spot-fleet/src/web/node_modules/aws-sdk/clients/codedeploy.js +++ /dev/null @@ -1,19 +0,0 @@ -require('../lib/node_loader'); -var AWS = require('../lib/core'); -var Service = AWS.Service; -var apiLoader = AWS.apiLoader; - -apiLoader.services['codedeploy'] = {}; -AWS.CodeDeploy = Service.defineService('codedeploy', ['2014-10-06']); -Object.defineProperty(apiLoader.services['codedeploy'], '2014-10-06', { - get: function get() { - var model = require('../apis/codedeploy-2014-10-06.min.json'); - model.paginators = require('../apis/codedeploy-2014-10-06.paginators.json').pagination; - model.waiters = require('../apis/codedeploy-2014-10-06.waiters2.json').waiters; - return model; - }, - enumerable: true, - configurable: true -}); - -module.exports = AWS.CodeDeploy; diff --git a/workshops/monte-carlo-on-ec2-spot-fleet/src/web/node_modules/aws-sdk/clients/codepipeline.d.ts b/workshops/monte-carlo-on-ec2-spot-fleet/src/web/node_modules/aws-sdk/clients/codepipeline.d.ts deleted file mode 100644 index a977e37a..00000000 --- a/workshops/monte-carlo-on-ec2-spot-fleet/src/web/node_modules/aws-sdk/clients/codepipeline.d.ts +++ /dev/null @@ -1,1526 +0,0 @@ -import {Request} from '../lib/request'; -import {Response} from '../lib/response'; -import {AWSError} from '../lib/error'; -import {Service} from '../lib/service'; -import {ServiceConfigurationOptions} from '../lib/service'; -import {ConfigBase as Config} from '../lib/config'; -interface Blob {} -declare class CodePipeline extends Service { - /** - * Constructs a service object. This object has one method for each API operation. - */ - constructor(options?: CodePipeline.Types.ClientConfiguration) - config: Config & CodePipeline.Types.ClientConfiguration; - /** - * Returns information about a specified job and whether that job has been received by the job worker. Only used for custom actions. - */ - acknowledgeJob(params: CodePipeline.Types.AcknowledgeJobInput, callback?: (err: AWSError, data: CodePipeline.Types.AcknowledgeJobOutput) => void): Request; - /** - * Returns information about a specified job and whether that job has been received by the job worker. Only used for custom actions. - */ - acknowledgeJob(callback?: (err: AWSError, data: CodePipeline.Types.AcknowledgeJobOutput) => void): Request; - /** - * Confirms a job worker has received the specified job. Only used for partner actions. - */ - acknowledgeThirdPartyJob(params: CodePipeline.Types.AcknowledgeThirdPartyJobInput, callback?: (err: AWSError, data: CodePipeline.Types.AcknowledgeThirdPartyJobOutput) => void): Request; - /** - * Confirms a job worker has received the specified job. Only used for partner actions. - */ - acknowledgeThirdPartyJob(callback?: (err: AWSError, data: CodePipeline.Types.AcknowledgeThirdPartyJobOutput) => void): Request; - /** - * Creates a new custom action that can be used in all pipelines associated with the AWS account. Only used for custom actions. - */ - createCustomActionType(params: CodePipeline.Types.CreateCustomActionTypeInput, callback?: (err: AWSError, data: CodePipeline.Types.CreateCustomActionTypeOutput) => void): Request; - /** - * Creates a new custom action that can be used in all pipelines associated with the AWS account. Only used for custom actions. - */ - createCustomActionType(callback?: (err: AWSError, data: CodePipeline.Types.CreateCustomActionTypeOutput) => void): Request; - /** - * Creates a pipeline. - */ - createPipeline(params: CodePipeline.Types.CreatePipelineInput, callback?: (err: AWSError, data: CodePipeline.Types.CreatePipelineOutput) => void): Request; - /** - * Creates a pipeline. - */ - createPipeline(callback?: (err: AWSError, data: CodePipeline.Types.CreatePipelineOutput) => void): Request; - /** - * Marks a custom action as deleted. PollForJobs for the custom action will fail after the action is marked for deletion. Only used for custom actions. You cannot recreate a custom action after it has been deleted unless you increase the version number of the action. - */ - deleteCustomActionType(params: CodePipeline.Types.DeleteCustomActionTypeInput, callback?: (err: AWSError, data: {}) => void): Request<{}, AWSError>; - /** - * Marks a custom action as deleted. PollForJobs for the custom action will fail after the action is marked for deletion. Only used for custom actions. You cannot recreate a custom action after it has been deleted unless you increase the version number of the action. - */ - deleteCustomActionType(callback?: (err: AWSError, data: {}) => void): Request<{}, AWSError>; - /** - * Deletes the specified pipeline. - */ - deletePipeline(params: CodePipeline.Types.DeletePipelineInput, callback?: (err: AWSError, data: {}) => void): Request<{}, AWSError>; - /** - * Deletes the specified pipeline. - */ - deletePipeline(callback?: (err: AWSError, data: {}) => void): Request<{}, AWSError>; - /** - * Prevents artifacts in a pipeline from transitioning to the next stage in the pipeline. - */ - disableStageTransition(params: CodePipeline.Types.DisableStageTransitionInput, callback?: (err: AWSError, data: {}) => void): Request<{}, AWSError>; - /** - * Prevents artifacts in a pipeline from transitioning to the next stage in the pipeline. - */ - disableStageTransition(callback?: (err: AWSError, data: {}) => void): Request<{}, AWSError>; - /** - * Enables artifacts in a pipeline to transition to a stage in a pipeline. - */ - enableStageTransition(params: CodePipeline.Types.EnableStageTransitionInput, callback?: (err: AWSError, data: {}) => void): Request<{}, AWSError>; - /** - * Enables artifacts in a pipeline to transition to a stage in a pipeline. - */ - enableStageTransition(callback?: (err: AWSError, data: {}) => void): Request<{}, AWSError>; - /** - * Returns information about a job. Only used for custom actions. When this API is called, AWS CodePipeline returns temporary credentials for the Amazon S3 bucket used to store artifacts for the pipeline, if the action requires access to that Amazon S3 bucket for input or output artifacts. Additionally, this API returns any secret values defined for the action. - */ - getJobDetails(params: CodePipeline.Types.GetJobDetailsInput, callback?: (err: AWSError, data: CodePipeline.Types.GetJobDetailsOutput) => void): Request; - /** - * Returns information about a job. Only used for custom actions. When this API is called, AWS CodePipeline returns temporary credentials for the Amazon S3 bucket used to store artifacts for the pipeline, if the action requires access to that Amazon S3 bucket for input or output artifacts. Additionally, this API returns any secret values defined for the action. - */ - getJobDetails(callback?: (err: AWSError, data: CodePipeline.Types.GetJobDetailsOutput) => void): Request; - /** - * Returns the metadata, structure, stages, and actions of a pipeline. Can be used to return the entire structure of a pipeline in JSON format, which can then be modified and used to update the pipeline structure with UpdatePipeline. - */ - getPipeline(params: CodePipeline.Types.GetPipelineInput, callback?: (err: AWSError, data: CodePipeline.Types.GetPipelineOutput) => void): Request; - /** - * Returns the metadata, structure, stages, and actions of a pipeline. Can be used to return the entire structure of a pipeline in JSON format, which can then be modified and used to update the pipeline structure with UpdatePipeline. - */ - getPipeline(callback?: (err: AWSError, data: CodePipeline.Types.GetPipelineOutput) => void): Request; - /** - * Returns information about an execution of a pipeline, including details about artifacts, the pipeline execution ID, and the name, version, and status of the pipeline. - */ - getPipelineExecution(params: CodePipeline.Types.GetPipelineExecutionInput, callback?: (err: AWSError, data: CodePipeline.Types.GetPipelineExecutionOutput) => void): Request; - /** - * Returns information about an execution of a pipeline, including details about artifacts, the pipeline execution ID, and the name, version, and status of the pipeline. - */ - getPipelineExecution(callback?: (err: AWSError, data: CodePipeline.Types.GetPipelineExecutionOutput) => void): Request; - /** - * Returns information about the state of a pipeline, including the stages and actions. - */ - getPipelineState(params: CodePipeline.Types.GetPipelineStateInput, callback?: (err: AWSError, data: CodePipeline.Types.GetPipelineStateOutput) => void): Request; - /** - * Returns information about the state of a pipeline, including the stages and actions. - */ - getPipelineState(callback?: (err: AWSError, data: CodePipeline.Types.GetPipelineStateOutput) => void): Request; - /** - * Requests the details of a job for a third party action. Only used for partner actions. When this API is called, AWS CodePipeline returns temporary credentials for the Amazon S3 bucket used to store artifacts for the pipeline, if the action requires access to that Amazon S3 bucket for input or output artifacts. Additionally, this API returns any secret values defined for the action. - */ - getThirdPartyJobDetails(params: CodePipeline.Types.GetThirdPartyJobDetailsInput, callback?: (err: AWSError, data: CodePipeline.Types.GetThirdPartyJobDetailsOutput) => void): Request; - /** - * Requests the details of a job for a third party action. Only used for partner actions. When this API is called, AWS CodePipeline returns temporary credentials for the Amazon S3 bucket used to store artifacts for the pipeline, if the action requires access to that Amazon S3 bucket for input or output artifacts. Additionally, this API returns any secret values defined for the action. - */ - getThirdPartyJobDetails(callback?: (err: AWSError, data: CodePipeline.Types.GetThirdPartyJobDetailsOutput) => void): Request; - /** - * Gets a summary of all AWS CodePipeline action types associated with your account. - */ - listActionTypes(params: CodePipeline.Types.ListActionTypesInput, callback?: (err: AWSError, data: CodePipeline.Types.ListActionTypesOutput) => void): Request; - /** - * Gets a summary of all AWS CodePipeline action types associated with your account. - */ - listActionTypes(callback?: (err: AWSError, data: CodePipeline.Types.ListActionTypesOutput) => void): Request; - /** - * Gets a summary of the most recent executions for a pipeline. - */ - listPipelineExecutions(params: CodePipeline.Types.ListPipelineExecutionsInput, callback?: (err: AWSError, data: CodePipeline.Types.ListPipelineExecutionsOutput) => void): Request; - /** - * Gets a summary of the most recent executions for a pipeline. - */ - listPipelineExecutions(callback?: (err: AWSError, data: CodePipeline.Types.ListPipelineExecutionsOutput) => void): Request; - /** - * Gets a summary of all of the pipelines associated with your account. - */ - listPipelines(params: CodePipeline.Types.ListPipelinesInput, callback?: (err: AWSError, data: CodePipeline.Types.ListPipelinesOutput) => void): Request; - /** - * Gets a summary of all of the pipelines associated with your account. - */ - listPipelines(callback?: (err: AWSError, data: CodePipeline.Types.ListPipelinesOutput) => void): Request; - /** - * Returns information about any jobs for AWS CodePipeline to act upon. When this API is called, AWS CodePipeline returns temporary credentials for the Amazon S3 bucket used to store artifacts for the pipeline, if the action requires access to that Amazon S3 bucket for input or output artifacts. Additionally, this API returns any secret values defined for the action. - */ - pollForJobs(params: CodePipeline.Types.PollForJobsInput, callback?: (err: AWSError, data: CodePipeline.Types.PollForJobsOutput) => void): Request; - /** - * Returns information about any jobs for AWS CodePipeline to act upon. When this API is called, AWS CodePipeline returns temporary credentials for the Amazon S3 bucket used to store artifacts for the pipeline, if the action requires access to that Amazon S3 bucket for input or output artifacts. Additionally, this API returns any secret values defined for the action. - */ - pollForJobs(callback?: (err: AWSError, data: CodePipeline.Types.PollForJobsOutput) => void): Request; - /** - * Determines whether there are any third party jobs for a job worker to act on. Only used for partner actions. When this API is called, AWS CodePipeline returns temporary credentials for the Amazon S3 bucket used to store artifacts for the pipeline, if the action requires access to that Amazon S3 bucket for input or output artifacts. - */ - pollForThirdPartyJobs(params: CodePipeline.Types.PollForThirdPartyJobsInput, callback?: (err: AWSError, data: CodePipeline.Types.PollForThirdPartyJobsOutput) => void): Request; - /** - * Determines whether there are any third party jobs for a job worker to act on. Only used for partner actions. When this API is called, AWS CodePipeline returns temporary credentials for the Amazon S3 bucket used to store artifacts for the pipeline, if the action requires access to that Amazon S3 bucket for input or output artifacts. - */ - pollForThirdPartyJobs(callback?: (err: AWSError, data: CodePipeline.Types.PollForThirdPartyJobsOutput) => void): Request; - /** - * Provides information to AWS CodePipeline about new revisions to a source. - */ - putActionRevision(params: CodePipeline.Types.PutActionRevisionInput, callback?: (err: AWSError, data: CodePipeline.Types.PutActionRevisionOutput) => void): Request; - /** - * Provides information to AWS CodePipeline about new revisions to a source. - */ - putActionRevision(callback?: (err: AWSError, data: CodePipeline.Types.PutActionRevisionOutput) => void): Request; - /** - * Provides the response to a manual approval request to AWS CodePipeline. Valid responses include Approved and Rejected. - */ - putApprovalResult(params: CodePipeline.Types.PutApprovalResultInput, callback?: (err: AWSError, data: CodePipeline.Types.PutApprovalResultOutput) => void): Request; - /** - * Provides the response to a manual approval request to AWS CodePipeline. Valid responses include Approved and Rejected. - */ - putApprovalResult(callback?: (err: AWSError, data: CodePipeline.Types.PutApprovalResultOutput) => void): Request; - /** - * Represents the failure of a job as returned to the pipeline by a job worker. Only used for custom actions. - */ - putJobFailureResult(params: CodePipeline.Types.PutJobFailureResultInput, callback?: (err: AWSError, data: {}) => void): Request<{}, AWSError>; - /** - * Represents the failure of a job as returned to the pipeline by a job worker. Only used for custom actions. - */ - putJobFailureResult(callback?: (err: AWSError, data: {}) => void): Request<{}, AWSError>; - /** - * Represents the success of a job as returned to the pipeline by a job worker. Only used for custom actions. - */ - putJobSuccessResult(params: CodePipeline.Types.PutJobSuccessResultInput, callback?: (err: AWSError, data: {}) => void): Request<{}, AWSError>; - /** - * Represents the success of a job as returned to the pipeline by a job worker. Only used for custom actions. - */ - putJobSuccessResult(callback?: (err: AWSError, data: {}) => void): Request<{}, AWSError>; - /** - * Represents the failure of a third party job as returned to the pipeline by a job worker. Only used for partner actions. - */ - putThirdPartyJobFailureResult(params: CodePipeline.Types.PutThirdPartyJobFailureResultInput, callback?: (err: AWSError, data: {}) => void): Request<{}, AWSError>; - /** - * Represents the failure of a third party job as returned to the pipeline by a job worker. Only used for partner actions. - */ - putThirdPartyJobFailureResult(callback?: (err: AWSError, data: {}) => void): Request<{}, AWSError>; - /** - * Represents the success of a third party job as returned to the pipeline by a job worker. Only used for partner actions. - */ - putThirdPartyJobSuccessResult(params: CodePipeline.Types.PutThirdPartyJobSuccessResultInput, callback?: (err: AWSError, data: {}) => void): Request<{}, AWSError>; - /** - * Represents the success of a third party job as returned to the pipeline by a job worker. Only used for partner actions. - */ - putThirdPartyJobSuccessResult(callback?: (err: AWSError, data: {}) => void): Request<{}, AWSError>; - /** - * Resumes the pipeline execution by retrying the last failed actions in a stage. - */ - retryStageExecution(params: CodePipeline.Types.RetryStageExecutionInput, callback?: (err: AWSError, data: CodePipeline.Types.RetryStageExecutionOutput) => void): Request; - /** - * Resumes the pipeline execution by retrying the last failed actions in a stage. - */ - retryStageExecution(callback?: (err: AWSError, data: CodePipeline.Types.RetryStageExecutionOutput) => void): Request; - /** - * Starts the specified pipeline. Specifically, it begins processing the latest commit to the source location specified as part of the pipeline. - */ - startPipelineExecution(params: CodePipeline.Types.StartPipelineExecutionInput, callback?: (err: AWSError, data: CodePipeline.Types.StartPipelineExecutionOutput) => void): Request; - /** - * Starts the specified pipeline. Specifically, it begins processing the latest commit to the source location specified as part of the pipeline. - */ - startPipelineExecution(callback?: (err: AWSError, data: CodePipeline.Types.StartPipelineExecutionOutput) => void): Request; - /** - * Updates a specified pipeline with edits or changes to its structure. Use a JSON file with the pipeline structure in conjunction with UpdatePipeline to provide the full structure of the pipeline. Updating the pipeline increases the version number of the pipeline by 1. - */ - updatePipeline(params: CodePipeline.Types.UpdatePipelineInput, callback?: (err: AWSError, data: CodePipeline.Types.UpdatePipelineOutput) => void): Request; - /** - * Updates a specified pipeline with edits or changes to its structure. Use a JSON file with the pipeline structure in conjunction with UpdatePipeline to provide the full structure of the pipeline. Updating the pipeline increases the version number of the pipeline by 1. - */ - updatePipeline(callback?: (err: AWSError, data: CodePipeline.Types.UpdatePipelineOutput) => void): Request; -} -declare namespace CodePipeline { - export interface AWSSessionCredentials { - /** - * The access key for the session. - */ - accessKeyId: AccessKeyId; - /** - * The secret access key for the session. - */ - secretAccessKey: SecretAccessKey; - /** - * The token for the session. - */ - sessionToken: SessionToken; - } - export type AccessKeyId = string; - export type AccountId = string; - export interface AcknowledgeJobInput { - /** - * The unique system-generated ID of the job for which you want to confirm receipt. - */ - jobId: JobId; - /** - * A system-generated random number that AWS CodePipeline uses to ensure that the job is being worked on by only one job worker. Get this number from the response of the PollForJobs request that returned this job. - */ - nonce: Nonce; - } - export interface AcknowledgeJobOutput { - /** - * Whether the job worker has received the specified job. - */ - status?: JobStatus; - } - export interface AcknowledgeThirdPartyJobInput { - /** - * The unique system-generated ID of the job. - */ - jobId: ThirdPartyJobId; - /** - * A system-generated random number that AWS CodePipeline uses to ensure that the job is being worked on by only one job worker. Get this number from the response to a GetThirdPartyJobDetails request. - */ - nonce: Nonce; - /** - * The clientToken portion of the clientId and clientToken pair used to verify that the calling entity is allowed access to the job and its details. - */ - clientToken: ClientToken; - } - export interface AcknowledgeThirdPartyJobOutput { - /** - * The status information for the third party job, if any. - */ - status?: JobStatus; - } - export type ActionCategory = "Source"|"Build"|"Deploy"|"Test"|"Invoke"|"Approval"|string; - export interface ActionConfiguration { - /** - * The configuration data for the action. - */ - configuration?: ActionConfigurationMap; - } - export type ActionConfigurationKey = string; - export type ActionConfigurationMap = {[key: string]: ActionConfigurationValue}; - export interface ActionConfigurationProperty { - /** - * The name of the action configuration property. - */ - name: ActionConfigurationKey; - /** - * Whether the configuration property is a required value. - */ - required: Boolean; - /** - * Whether the configuration property is a key. - */ - key: Boolean; - /** - * Whether the configuration property is secret. Secrets are hidden from all calls except for GetJobDetails, GetThirdPartyJobDetails, PollForJobs, and PollForThirdPartyJobs. When updating a pipeline, passing * * * * * without changing any other values of the action will preserve the prior value of the secret. - */ - secret: Boolean; - /** - * Indicates that the property will be used in conjunction with PollForJobs. When creating a custom action, an action can have up to one queryable property. If it has one, that property must be both required and not secret. If you create a pipeline with a custom action type, and that custom action contains a queryable property, the value for that configuration property is subject to additional restrictions. The value must be less than or equal to twenty (20) characters. The value can contain only alphanumeric characters, underscores, and hyphens. - */ - queryable?: Boolean; - /** - * The description of the action configuration property that will be displayed to users. - */ - description?: Description; - /** - * The type of the configuration property. - */ - type?: ActionConfigurationPropertyType; - } - export type ActionConfigurationPropertyList = ActionConfigurationProperty[]; - export type ActionConfigurationPropertyType = "String"|"Number"|"Boolean"|string; - export type ActionConfigurationQueryableValue = string; - export type ActionConfigurationValue = string; - export interface ActionContext { - /** - * The name of the action within the context of a job. - */ - name?: ActionName; - } - export interface ActionDeclaration { - /** - * The action declaration's name. - */ - name: ActionName; - /** - * The configuration information for the action type. - */ - actionTypeId: ActionTypeId; - /** - * The order in which actions are run. - */ - runOrder?: ActionRunOrder; - /** - * The action declaration's configuration. - */ - configuration?: ActionConfigurationMap; - /** - * The name or ID of the result of the action declaration, such as a test or build artifact. - */ - outputArtifacts?: OutputArtifactList; - /** - * The name or ID of the artifact consumed by the action, such as a test or build artifact. - */ - inputArtifacts?: InputArtifactList; - /** - * The ARN of the IAM service role that will perform the declared action. This is assumed through the roleArn for the pipeline. - */ - roleArn?: RoleArn; - } - export interface ActionExecution { - /** - * The status of the action, or for a completed action, the last status of the action. - */ - status?: ActionExecutionStatus; - /** - * A summary of the run of the action. - */ - summary?: ExecutionSummary; - /** - * The last status change of the action. - */ - lastStatusChange?: Timestamp; - /** - * The system-generated token used to identify a unique approval request. The token for each open approval request can be obtained using the GetPipelineState command and is used to validate that the approval request corresponding to this token is still valid. - */ - token?: ActionExecutionToken; - /** - * The ARN of the user who last changed the pipeline. - */ - lastUpdatedBy?: LastUpdatedBy; - /** - * The external ID of the run of the action. - */ - externalExecutionId?: ExecutionId; - /** - * The URL of a resource external to AWS that will be used when running the action, for example an external repository URL. - */ - externalExecutionUrl?: Url; - /** - * A percentage of completeness of the action as it runs. - */ - percentComplete?: Percentage; - /** - * The details of an error returned by a URL external to AWS. - */ - errorDetails?: ErrorDetails; - } - export type ActionExecutionStatus = "InProgress"|"Succeeded"|"Failed"|string; - export type ActionExecutionToken = string; - export type ActionName = string; - export type ActionOwner = "AWS"|"ThirdParty"|"Custom"|string; - export type ActionProvider = string; - export interface ActionRevision { - /** - * The system-generated unique ID that identifies the revision number of the action. - */ - revisionId: Revision; - /** - * The unique identifier of the change that set the state to this revision, for example a deployment ID or timestamp. - */ - revisionChangeId: RevisionChangeIdentifier; - /** - * The date and time when the most recent version of the action was created, in timestamp format. - */ - created: Timestamp; - } - export type ActionRunOrder = number; - export interface ActionState { - /** - * The name of the action. - */ - actionName?: ActionName; - /** - * Represents information about the version (or revision) of an action. - */ - currentRevision?: ActionRevision; - /** - * Represents information about the run of an action. - */ - latestExecution?: ActionExecution; - /** - * A URL link for more information about the state of the action, such as a deployment group details page. - */ - entityUrl?: Url; - /** - * A URL link for more information about the revision, such as a commit details page. - */ - revisionUrl?: Url; - } - export type ActionStateList = ActionState[]; - export interface ActionType { - /** - * Represents information about an action type. - */ - id: ActionTypeId; - /** - * The settings for the action type. - */ - settings?: ActionTypeSettings; - /** - * The configuration properties for the action type. - */ - actionConfigurationProperties?: ActionConfigurationPropertyList; - /** - * The details of the input artifact for the action, such as its commit ID. - */ - inputArtifactDetails: ArtifactDetails; - /** - * The details of the output artifact of the action, such as its commit ID. - */ - outputArtifactDetails: ArtifactDetails; - } - export interface ActionTypeId { - /** - * A category defines what kind of action can be taken in the stage, and constrains the provider type for the action. Valid categories are limited to one of the values below. - */ - category: ActionCategory; - /** - * The creator of the action being called. - */ - owner: ActionOwner; - /** - * The provider of the service being called by the action. Valid providers are determined by the action category. For example, an action in the Deploy category type might have a provider of AWS CodeDeploy, which would be specified as CodeDeploy. - */ - provider: ActionProvider; - /** - * A string that identifies the action type. - */ - version: Version; - } - export type ActionTypeList = ActionType[]; - export interface ActionTypeSettings { - /** - * The URL of a sign-up page where users can sign up for an external service and perform initial configuration of the action provided by that service. - */ - thirdPartyConfigurationUrl?: Url; - /** - * The URL returned to the AWS CodePipeline console that provides a deep link to the resources of the external system, such as the configuration page for an AWS CodeDeploy deployment group. This link is provided as part of the action display within the pipeline. - */ - entityUrlTemplate?: UrlTemplate; - /** - * The URL returned to the AWS CodePipeline console that contains a link to the top-level landing page for the external system, such as console page for AWS CodeDeploy. This link is shown on the pipeline view page in the AWS CodePipeline console and provides a link to the execution entity of the external action. - */ - executionUrlTemplate?: UrlTemplate; - /** - * The URL returned to the AWS CodePipeline console that contains a link to the page where customers can update or change the configuration of the external action. - */ - revisionUrlTemplate?: UrlTemplate; - } - export interface ApprovalResult { - /** - * The summary of the current status of the approval request. - */ - summary: ApprovalSummary; - /** - * The response submitted by a reviewer assigned to an approval action request. - */ - status: ApprovalStatus; - } - export type ApprovalStatus = "Approved"|"Rejected"|string; - export type ApprovalSummary = string; - export type ApprovalToken = string; - export interface Artifact { - /** - * The artifact's name. - */ - name?: ArtifactName; - /** - * The artifact's revision ID. Depending on the type of object, this could be a commit ID (GitHub) or a revision ID (Amazon S3). - */ - revision?: Revision; - /** - * The location of an artifact. - */ - location?: ArtifactLocation; - } - export interface ArtifactDetails { - /** - * The minimum number of artifacts allowed for the action type. - */ - minimumCount: MinimumArtifactCount; - /** - * The maximum number of artifacts allowed for the action type. - */ - maximumCount: MaximumArtifactCount; - } - export type ArtifactList = Artifact[]; - export interface ArtifactLocation { - /** - * The type of artifact in the location. - */ - type?: ArtifactLocationType; - /** - * The Amazon S3 bucket that contains the artifact. - */ - s3Location?: S3ArtifactLocation; - } - export type ArtifactLocationType = "S3"|string; - export type ArtifactName = string; - export interface ArtifactRevision { - /** - * The name of an artifact. This name might be system-generated, such as "MyApp", or might be defined by the user when an action is created. - */ - name?: ArtifactName; - /** - * The revision ID of the artifact. - */ - revisionId?: Revision; - /** - * An additional identifier for a revision, such as a commit date or, for artifacts stored in Amazon S3 buckets, the ETag value. - */ - revisionChangeIdentifier?: RevisionChangeIdentifier; - /** - * Summary information about the most recent revision of the artifact. For GitHub and AWS CodeCommit repositories, the commit message. For Amazon S3 buckets or actions, the user-provided content of a codepipeline-artifact-revision-summary key specified in the object metadata. - */ - revisionSummary?: RevisionSummary; - /** - * The date and time when the most recent revision of the artifact was created, in timestamp format. - */ - created?: Timestamp; - /** - * The commit ID for the artifact revision. For artifacts stored in GitHub or AWS CodeCommit repositories, the commit ID is linked to a commit details page. - */ - revisionUrl?: Url; - } - export type ArtifactRevisionList = ArtifactRevision[]; - export interface ArtifactStore { - /** - * The type of the artifact store, such as S3. - */ - type: ArtifactStoreType; - /** - * The Amazon S3 bucket used for storing the artifacts for a pipeline. You can specify the name of an S3 bucket but not a folder within the bucket. A folder to contain the pipeline artifacts is created for you based on the name of the pipeline. You can use any Amazon S3 bucket in the same AWS Region as the pipeline to store your pipeline artifacts. - */ - location: ArtifactStoreLocation; - /** - * The encryption key used to encrypt the data in the artifact store, such as an AWS Key Management Service (AWS KMS) key. If this is undefined, the default key for Amazon S3 is used. - */ - encryptionKey?: EncryptionKey; - } - export type ArtifactStoreLocation = string; - export type ArtifactStoreType = "S3"|string; - export interface BlockerDeclaration { - /** - * Reserved for future use. - */ - name: BlockerName; - /** - * Reserved for future use. - */ - type: BlockerType; - } - export type BlockerName = string; - export type BlockerType = "Schedule"|string; - export type Boolean = boolean; - export type ClientId = string; - export type ClientToken = string; - export type Code = string; - export type ContinuationToken = string; - export interface CreateCustomActionTypeInput { - /** - * The category of the custom action, such as a build action or a test action. Although Source and Approval are listed as valid values, they are not currently functional. These values are reserved for future use. - */ - category: ActionCategory; - /** - * The provider of the service used in the custom action, such as AWS CodeDeploy. - */ - provider: ActionProvider; - /** - * The version identifier of the custom action. - */ - version: Version; - /** - * Returns information about the settings for an action type. - */ - settings?: ActionTypeSettings; - /** - * The configuration properties for the custom action. You can refer to a name in the configuration properties of the custom action within the URL templates by following the format of {Config:name}, as long as the configuration property is both required and not secret. For more information, see Create a Custom Action for a Pipeline. - */ - configurationProperties?: ActionConfigurationPropertyList; - /** - * The details of the input artifact for the action, such as its commit ID. - */ - inputArtifactDetails: ArtifactDetails; - /** - * The details of the output artifact of the action, such as its commit ID. - */ - outputArtifactDetails: ArtifactDetails; - } - export interface CreateCustomActionTypeOutput { - /** - * Returns information about the details of an action type. - */ - actionType: ActionType; - } - export interface CreatePipelineInput { - /** - * Represents the structure of actions and stages to be performed in the pipeline. - */ - pipeline: PipelineDeclaration; - } - export interface CreatePipelineOutput { - /** - * Represents the structure of actions and stages to be performed in the pipeline. - */ - pipeline?: PipelineDeclaration; - } - export interface CurrentRevision { - /** - * The revision ID of the current version of an artifact. - */ - revision: Revision; - /** - * The change identifier for the current revision. - */ - changeIdentifier: RevisionChangeIdentifier; - /** - * The date and time when the most recent revision of the artifact was created, in timestamp format. - */ - created?: Time; - /** - * The summary of the most recent revision of the artifact. - */ - revisionSummary?: RevisionSummary; - } - export interface DeleteCustomActionTypeInput { - /** - * The category of the custom action that you want to delete, such as source or deploy. - */ - category: ActionCategory; - /** - * The provider of the service used in the custom action, such as AWS CodeDeploy. - */ - provider: ActionProvider; - /** - * The version of the custom action to delete. - */ - version: Version; - } - export interface DeletePipelineInput { - /** - * The name of the pipeline to be deleted. - */ - name: PipelineName; - } - export type Description = string; - export interface DisableStageTransitionInput { - /** - * The name of the pipeline in which you want to disable the flow of artifacts from one stage to another. - */ - pipelineName: PipelineName; - /** - * The name of the stage where you want to disable the inbound or outbound transition of artifacts. - */ - stageName: StageName; - /** - * Specifies whether artifacts will be prevented from transitioning into the stage and being processed by the actions in that stage (inbound), or prevented from transitioning from the stage after they have been processed by the actions in that stage (outbound). - */ - transitionType: StageTransitionType; - /** - * The reason given to the user why a stage is disabled, such as waiting for manual approval or manual tests. This message is displayed in the pipeline console UI. - */ - reason: DisabledReason; - } - export type DisabledReason = string; - export interface EnableStageTransitionInput { - /** - * The name of the pipeline in which you want to enable the flow of artifacts from one stage to another. - */ - pipelineName: PipelineName; - /** - * The name of the stage where you want to enable the transition of artifacts, either into the stage (inbound) or from that stage to the next stage (outbound). - */ - stageName: StageName; - /** - * Specifies whether artifacts will be allowed to enter the stage and be processed by the actions in that stage (inbound) or whether already-processed artifacts will be allowed to transition to the next stage (outbound). - */ - transitionType: StageTransitionType; - } - export type Enabled = boolean; - export interface EncryptionKey { - /** - * The ID used to identify the key. For an AWS KMS key, this is the key ID or key ARN. - */ - id: EncryptionKeyId; - /** - * The type of encryption key, such as an AWS Key Management Service (AWS KMS) key. When creating or updating a pipeline, the value must be set to 'KMS'. - */ - type: EncryptionKeyType; - } - export type EncryptionKeyId = string; - export type EncryptionKeyType = "KMS"|string; - export interface ErrorDetails { - /** - * The system ID or error number code of the error. - */ - code?: Code; - /** - * The text of the error message. - */ - message?: Message; - } - export interface ExecutionDetails { - /** - * The summary of the current status of the actions. - */ - summary?: ExecutionSummary; - /** - * The system-generated unique ID of this action used to identify this job worker in any external systems, such as AWS CodeDeploy. - */ - externalExecutionId?: ExecutionId; - /** - * The percentage of work completed on the action, represented on a scale of zero to one hundred percent. - */ - percentComplete?: Percentage; - } - export type ExecutionId = string; - export type ExecutionSummary = string; - export interface FailureDetails { - /** - * The type of the failure. - */ - type: FailureType; - /** - * The message about the failure. - */ - message: Message; - /** - * The external ID of the run of the action that failed. - */ - externalExecutionId?: ExecutionId; - } - export type FailureType = "JobFailed"|"ConfigurationError"|"PermissionError"|"RevisionOutOfSync"|"RevisionUnavailable"|"SystemUnavailable"|string; - export interface GetJobDetailsInput { - /** - * The unique system-generated ID for the job. - */ - jobId: JobId; - } - export interface GetJobDetailsOutput { - /** - * The details of the job. If AWSSessionCredentials is used, a long-running job can call GetJobDetails again to obtain new credentials. - */ - jobDetails?: JobDetails; - } - export interface GetPipelineExecutionInput { - /** - * The name of the pipeline about which you want to get execution details. - */ - pipelineName: PipelineName; - /** - * The ID of the pipeline execution about which you want to get execution details. - */ - pipelineExecutionId: PipelineExecutionId; - } - export interface GetPipelineExecutionOutput { - /** - * Represents information about the execution of a pipeline. - */ - pipelineExecution?: PipelineExecution; - } - export interface GetPipelineInput { - /** - * The name of the pipeline for which you want to get information. Pipeline names must be unique under an Amazon Web Services (AWS) user account. - */ - name: PipelineName; - /** - * The version number of the pipeline. If you do not specify a version, defaults to the most current version. - */ - version?: PipelineVersion; - } - export interface GetPipelineOutput { - /** - * Represents the structure of actions and stages to be performed in the pipeline. - */ - pipeline?: PipelineDeclaration; - /** - * Represents the pipeline metadata information returned as part of the output of a GetPipeline action. - */ - metadata?: PipelineMetadata; - } - export interface GetPipelineStateInput { - /** - * The name of the pipeline about which you want to get information. - */ - name: PipelineName; - } - export interface GetPipelineStateOutput { - /** - * The name of the pipeline for which you want to get the state. - */ - pipelineName?: PipelineName; - /** - * The version number of the pipeline. A newly-created pipeline is always assigned a version number of 1. - */ - pipelineVersion?: PipelineVersion; - /** - * A list of the pipeline stage output information, including stage name, state, most recent run details, whether the stage is disabled, and other data. - */ - stageStates?: StageStateList; - /** - * The date and time the pipeline was created, in timestamp format. - */ - created?: Timestamp; - /** - * The date and time the pipeline was last updated, in timestamp format. - */ - updated?: Timestamp; - } - export interface GetThirdPartyJobDetailsInput { - /** - * The unique system-generated ID used for identifying the job. - */ - jobId: ThirdPartyJobId; - /** - * The clientToken portion of the clientId and clientToken pair used to verify that the calling entity is allowed access to the job and its details. - */ - clientToken: ClientToken; - } - export interface GetThirdPartyJobDetailsOutput { - /** - * The details of the job, including any protected values defined for the job. - */ - jobDetails?: ThirdPartyJobDetails; - } - export interface InputArtifact { - /** - * The name of the artifact to be worked on, for example, "My App". The input artifact of an action must exactly match the output artifact declared in a preceding action, but the input artifact does not have to be the next action in strict sequence from the action that provided the output artifact. Actions in parallel can declare different output artifacts, which are in turn consumed by different following actions. - */ - name: ArtifactName; - } - export type InputArtifactList = InputArtifact[]; - export interface Job { - /** - * The unique system-generated ID of the job. - */ - id?: JobId; - /** - * Additional data about a job. - */ - data?: JobData; - /** - * A system-generated random number that AWS CodePipeline uses to ensure that the job is being worked on by only one job worker. Use this number in an AcknowledgeJob request. - */ - nonce?: Nonce; - /** - * The ID of the AWS account to use when performing the job. - */ - accountId?: AccountId; - } - export interface JobData { - /** - * Represents information about an action type. - */ - actionTypeId?: ActionTypeId; - /** - * Represents information about an action configuration. - */ - actionConfiguration?: ActionConfiguration; - /** - * Represents information about a pipeline to a job worker. - */ - pipelineContext?: PipelineContext; - /** - * The artifact supplied to the job. - */ - inputArtifacts?: ArtifactList; - /** - * The output of the job. - */ - outputArtifacts?: ArtifactList; - /** - * Represents an AWS session credentials object. These credentials are temporary credentials that are issued by AWS Secure Token Service (STS). They can be used to access input and output artifacts in the Amazon S3 bucket used to store artifact for the pipeline in AWS CodePipeline. - */ - artifactCredentials?: AWSSessionCredentials; - /** - * A system-generated token, such as a AWS CodeDeploy deployment ID, that a job requires in order to continue the job asynchronously. - */ - continuationToken?: ContinuationToken; - /** - * Represents information about the key used to encrypt data in the artifact store, such as an AWS Key Management Service (AWS KMS) key. - */ - encryptionKey?: EncryptionKey; - } - export interface JobDetails { - /** - * The unique system-generated ID of the job. - */ - id?: JobId; - /** - * Represents additional information about a job required for a job worker to complete the job. - */ - data?: JobData; - /** - * The AWS account ID associated with the job. - */ - accountId?: AccountId; - } - export type JobId = string; - export type JobList = Job[]; - export type JobStatus = "Created"|"Queued"|"Dispatched"|"InProgress"|"TimedOut"|"Succeeded"|"Failed"|string; - export type LastChangedAt = Date; - export type LastChangedBy = string; - export type LastUpdatedBy = string; - export interface ListActionTypesInput { - /** - * Filters the list of action types to those created by a specified entity. - */ - actionOwnerFilter?: ActionOwner; - /** - * An identifier that was returned from the previous list action types call, which can be used to return the next set of action types in the list. - */ - nextToken?: NextToken; - } - export interface ListActionTypesOutput { - /** - * Provides details of the action types. - */ - actionTypes: ActionTypeList; - /** - * If the amount of returned information is significantly large, an identifier is also returned which can be used in a subsequent list action types call to return the next set of action types in the list. - */ - nextToken?: NextToken; - } - export interface ListPipelineExecutionsInput { - /** - * The name of the pipeline for which you want to get execution summary information. - */ - pipelineName: PipelineName; - /** - * The maximum number of results to return in a single call. To retrieve the remaining results, make another call with the returned nextToken value. The available pipeline execution history is limited to the most recent 12 months, based on pipeline execution start times. Default value is 100. - */ - maxResults?: MaxResults; - /** - * The token that was returned from the previous ListPipelineExecutions call, which can be used to return the next set of pipeline executions in the list. - */ - nextToken?: NextToken; - } - export interface ListPipelineExecutionsOutput { - /** - * A list of executions in the history of a pipeline. - */ - pipelineExecutionSummaries?: PipelineExecutionSummaryList; - /** - * A token that can be used in the next ListPipelineExecutions call. To view all items in the list, continue to call this operation with each subsequent token until no more nextToken values are returned. - */ - nextToken?: NextToken; - } - export interface ListPipelinesInput { - /** - * An identifier that was returned from the previous list pipelines call, which can be used to return the next set of pipelines in the list. - */ - nextToken?: NextToken; - } - export interface ListPipelinesOutput { - /** - * The list of pipelines. - */ - pipelines?: PipelineList; - /** - * If the amount of returned information is significantly large, an identifier is also returned which can be used in a subsequent list pipelines call to return the next set of pipelines in the list. - */ - nextToken?: NextToken; - } - export type MaxBatchSize = number; - export type MaxResults = number; - export type MaximumArtifactCount = number; - export type Message = string; - export type MinimumArtifactCount = number; - export type NextToken = string; - export type Nonce = string; - export interface OutputArtifact { - /** - * The name of the output of an artifact, such as "My App". The input artifact of an action must exactly match the output artifact declared in a preceding action, but the input artifact does not have to be the next action in strict sequence from the action that provided the output artifact. Actions in parallel can declare different output artifacts, which are in turn consumed by different following actions. Output artifact names must be unique within a pipeline. - */ - name: ArtifactName; - } - export type OutputArtifactList = OutputArtifact[]; - export type Percentage = number; - export type PipelineArn = string; - export interface PipelineContext { - /** - * The name of the pipeline. This is a user-specified value. Pipeline names must be unique across all pipeline names under an Amazon Web Services account. - */ - pipelineName?: PipelineName; - /** - * The stage of the pipeline. - */ - stage?: StageContext; - /** - * The context of an action to a job worker within the stage of a pipeline. - */ - action?: ActionContext; - } - export interface PipelineDeclaration { - /** - * The name of the action to be performed. - */ - name: PipelineName; - /** - * The Amazon Resource Name (ARN) for AWS CodePipeline to use to either perform actions with no actionRoleArn, or to use to assume roles for actions with an actionRoleArn. - */ - roleArn: RoleArn; - /** - * Represents information about the Amazon S3 bucket where artifacts are stored for the pipeline. - */ - artifactStore: ArtifactStore; - /** - * The stage in which to perform the action. - */ - stages: PipelineStageDeclarationList; - /** - * The version number of the pipeline. A new pipeline always has a version number of 1. This number is automatically incremented when a pipeline is updated. - */ - version?: PipelineVersion; - } - export interface PipelineExecution { - /** - * The name of the pipeline that was executed. - */ - pipelineName?: PipelineName; - /** - * The version number of the pipeline that was executed. - */ - pipelineVersion?: PipelineVersion; - /** - * The ID of the pipeline execution. - */ - pipelineExecutionId?: PipelineExecutionId; - /** - * The status of the pipeline execution. InProgress: The pipeline execution is currently running. Succeeded: The pipeline execution was completed successfully. Superseded: While this pipeline execution was waiting for the next stage to be completed, a newer pipeline execution advanced and continued through the pipeline instead. Failed: The pipeline execution was not completed successfully. - */ - status?: PipelineExecutionStatus; - /** - * A list of ArtifactRevision objects included in a pipeline execution. - */ - artifactRevisions?: ArtifactRevisionList; - } - export type PipelineExecutionId = string; - export type PipelineExecutionStatus = "InProgress"|"Succeeded"|"Superseded"|"Failed"|string; - export interface PipelineExecutionSummary { - /** - * The ID of the pipeline execution. - */ - pipelineExecutionId?: PipelineExecutionId; - /** - * The status of the pipeline execution. InProgress: The pipeline execution is currently running. Succeeded: The pipeline execution was completed successfully. Superseded: While this pipeline execution was waiting for the next stage to be completed, a newer pipeline execution advanced and continued through the pipeline instead. Failed: The pipeline execution was not completed successfully. - */ - status?: PipelineExecutionStatus; - /** - * The date and time when the pipeline execution began, in timestamp format. - */ - startTime?: Timestamp; - /** - * The date and time of the last change to the pipeline execution, in timestamp format. - */ - lastUpdateTime?: Timestamp; - } - export type PipelineExecutionSummaryList = PipelineExecutionSummary[]; - export type PipelineList = PipelineSummary[]; - export interface PipelineMetadata { - /** - * The Amazon Resource Name (ARN) of the pipeline. - */ - pipelineArn?: PipelineArn; - /** - * The date and time the pipeline was created, in timestamp format. - */ - created?: Timestamp; - /** - * The date and time the pipeline was last updated, in timestamp format. - */ - updated?: Timestamp; - } - export type PipelineName = string; - export type PipelineStageDeclarationList = StageDeclaration[]; - export interface PipelineSummary { - /** - * The name of the pipeline. - */ - name?: PipelineName; - /** - * The version number of the pipeline. - */ - version?: PipelineVersion; - /** - * The date and time the pipeline was created, in timestamp format. - */ - created?: Timestamp; - /** - * The date and time of the last update to the pipeline, in timestamp format. - */ - updated?: Timestamp; - } - export type PipelineVersion = number; - export interface PollForJobsInput { - /** - * Represents information about an action type. - */ - actionTypeId: ActionTypeId; - /** - * The maximum number of jobs to return in a poll for jobs call. - */ - maxBatchSize?: MaxBatchSize; - /** - * A map of property names and values. For an action type with no queryable properties, this value must be null or an empty map. For an action type with a queryable property, you must supply that property as a key in the map. Only jobs whose action configuration matches the mapped value will be returned. - */ - queryParam?: QueryParamMap; - } - export interface PollForJobsOutput { - /** - * Information about the jobs to take action on. - */ - jobs?: JobList; - } - export interface PollForThirdPartyJobsInput { - /** - * Represents information about an action type. - */ - actionTypeId: ActionTypeId; - /** - * The maximum number of jobs to return in a poll for jobs call. - */ - maxBatchSize?: MaxBatchSize; - } - export interface PollForThirdPartyJobsOutput { - /** - * Information about the jobs to take action on. - */ - jobs?: ThirdPartyJobList; - } - export interface PutActionRevisionInput { - /** - * The name of the pipeline that will start processing the revision to the source. - */ - pipelineName: PipelineName; - /** - * The name of the stage that contains the action that will act upon the revision. - */ - stageName: StageName; - /** - * The name of the action that will process the revision. - */ - actionName: ActionName; - /** - * Represents information about the version (or revision) of an action. - */ - actionRevision: ActionRevision; - } - export interface PutActionRevisionOutput { - /** - * Indicates whether the artifact revision was previously used in an execution of the specified pipeline. - */ - newRevision?: Boolean; - /** - * The ID of the current workflow state of the pipeline. - */ - pipelineExecutionId?: PipelineExecutionId; - } - export interface PutApprovalResultInput { - /** - * The name of the pipeline that contains the action. - */ - pipelineName: PipelineName; - /** - * The name of the stage that contains the action. - */ - stageName: StageName; - /** - * The name of the action for which approval is requested. - */ - actionName: ActionName; - /** - * Represents information about the result of the approval request. - */ - result: ApprovalResult; - /** - * The system-generated token used to identify a unique approval request. The token for each open approval request can be obtained using the GetPipelineState action and is used to validate that the approval request corresponding to this token is still valid. - */ - token: ApprovalToken; - } - export interface PutApprovalResultOutput { - /** - * The timestamp showing when the approval or rejection was submitted. - */ - approvedAt?: Timestamp; - } - export interface PutJobFailureResultInput { - /** - * The unique system-generated ID of the job that failed. This is the same ID returned from PollForJobs. - */ - jobId: JobId; - /** - * The details about the failure of a job. - */ - failureDetails: FailureDetails; - } - export interface PutJobSuccessResultInput { - /** - * The unique system-generated ID of the job that succeeded. This is the same ID returned from PollForJobs. - */ - jobId: JobId; - /** - * The ID of the current revision of the artifact successfully worked upon by the job. - */ - currentRevision?: CurrentRevision; - /** - * A token generated by a job worker, such as an AWS CodeDeploy deployment ID, that a successful job provides to identify a custom action in progress. Future jobs will use this token in order to identify the running instance of the action. It can be reused to return additional information about the progress of the custom action. When the action is complete, no continuation token should be supplied. - */ - continuationToken?: ContinuationToken; - /** - * The execution details of the successful job, such as the actions taken by the job worker. - */ - executionDetails?: ExecutionDetails; - } - export interface PutThirdPartyJobFailureResultInput { - /** - * The ID of the job that failed. This is the same ID returned from PollForThirdPartyJobs. - */ - jobId: ThirdPartyJobId; - /** - * The clientToken portion of the clientId and clientToken pair used to verify that the calling entity is allowed access to the job and its details. - */ - clientToken: ClientToken; - /** - * Represents information about failure details. - */ - failureDetails: FailureDetails; - } - export interface PutThirdPartyJobSuccessResultInput { - /** - * The ID of the job that successfully completed. This is the same ID returned from PollForThirdPartyJobs. - */ - jobId: ThirdPartyJobId; - /** - * The clientToken portion of the clientId and clientToken pair used to verify that the calling entity is allowed access to the job and its details. - */ - clientToken: ClientToken; - /** - * Represents information about a current revision. - */ - currentRevision?: CurrentRevision; - /** - * A token generated by a job worker, such as an AWS CodeDeploy deployment ID, that a successful job provides to identify a partner action in progress. Future jobs will use this token in order to identify the running instance of the action. It can be reused to return additional information about the progress of the partner action. When the action is complete, no continuation token should be supplied. - */ - continuationToken?: ContinuationToken; - /** - * The details of the actions taken and results produced on an artifact as it passes through stages in the pipeline. - */ - executionDetails?: ExecutionDetails; - } - export type QueryParamMap = {[key: string]: ActionConfigurationQueryableValue}; - export interface RetryStageExecutionInput { - /** - * The name of the pipeline that contains the failed stage. - */ - pipelineName: PipelineName; - /** - * The name of the failed stage to be retried. - */ - stageName: StageName; - /** - * The ID of the pipeline execution in the failed stage to be retried. Use the GetPipelineState action to retrieve the current pipelineExecutionId of the failed stage - */ - pipelineExecutionId: PipelineExecutionId; - /** - * The scope of the retry attempt. Currently, the only supported value is FAILED_ACTIONS. - */ - retryMode: StageRetryMode; - } - export interface RetryStageExecutionOutput { - /** - * The ID of the current workflow execution in the failed stage. - */ - pipelineExecutionId?: PipelineExecutionId; - } - export type Revision = string; - export type RevisionChangeIdentifier = string; - export type RevisionSummary = string; - export type RoleArn = string; - export interface S3ArtifactLocation { - /** - * The name of the Amazon S3 bucket. - */ - bucketName: S3BucketName; - /** - * The key of the object in the Amazon S3 bucket, which uniquely identifies the object in the bucket. - */ - objectKey: S3ObjectKey; - } - export type S3BucketName = string; - export type S3ObjectKey = string; - export type SecretAccessKey = string; - export type SessionToken = string; - export type StageActionDeclarationList = ActionDeclaration[]; - export type StageBlockerDeclarationList = BlockerDeclaration[]; - export interface StageContext { - /** - * The name of the stage. - */ - name?: StageName; - } - export interface StageDeclaration { - /** - * The name of the stage. - */ - name: StageName; - /** - * Reserved for future use. - */ - blockers?: StageBlockerDeclarationList; - /** - * The actions included in a stage. - */ - actions: StageActionDeclarationList; - } - export interface StageExecution { - /** - * The ID of the pipeline execution associated with the stage. - */ - pipelineExecutionId: PipelineExecutionId; - /** - * The status of the stage, or for a completed stage, the last status of the stage. - */ - status: StageExecutionStatus; - } - export type StageExecutionStatus = "InProgress"|"Failed"|"Succeeded"|string; - export type StageName = string; - export type StageRetryMode = "FAILED_ACTIONS"|string; - export interface StageState { - /** - * The name of the stage. - */ - stageName?: StageName; - /** - * The state of the inbound transition, which is either enabled or disabled. - */ - inboundTransitionState?: TransitionState; - /** - * The state of the stage. - */ - actionStates?: ActionStateList; - /** - * Information about the latest execution in the stage, including its ID and status. - */ - latestExecution?: StageExecution; - } - export type StageStateList = StageState[]; - export type StageTransitionType = "Inbound"|"Outbound"|string; - export interface StartPipelineExecutionInput { - /** - * The name of the pipeline to start. - */ - name: PipelineName; - } - export interface StartPipelineExecutionOutput { - /** - * The unique system-generated ID of the pipeline execution that was started. - */ - pipelineExecutionId?: PipelineExecutionId; - } - export interface ThirdPartyJob { - /** - * The clientToken portion of the clientId and clientToken pair used to verify that the calling entity is allowed access to the job and its details. - */ - clientId?: ClientId; - /** - * The identifier used to identify the job in AWS CodePipeline. - */ - jobId?: JobId; - } - export interface ThirdPartyJobData { - /** - * Represents information about an action type. - */ - actionTypeId?: ActionTypeId; - /** - * Represents information about an action configuration. - */ - actionConfiguration?: ActionConfiguration; - /** - * Represents information about a pipeline to a job worker. - */ - pipelineContext?: PipelineContext; - /** - * The name of the artifact that will be worked upon by the action, if any. This name might be system-generated, such as "MyApp", or might be defined by the user when the action is created. The input artifact name must match the name of an output artifact generated by an action in an earlier action or stage of the pipeline. - */ - inputArtifacts?: ArtifactList; - /** - * The name of the artifact that will be the result of the action, if any. This name might be system-generated, such as "MyBuiltApp", or might be defined by the user when the action is created. - */ - outputArtifacts?: ArtifactList; - /** - * Represents an AWS session credentials object. These credentials are temporary credentials that are issued by AWS Secure Token Service (STS). They can be used to access input and output artifacts in the Amazon S3 bucket used to store artifact for the pipeline in AWS CodePipeline. - */ - artifactCredentials?: AWSSessionCredentials; - /** - * A system-generated token, such as a AWS CodeDeploy deployment ID, that a job requires in order to continue the job asynchronously. - */ - continuationToken?: ContinuationToken; - /** - * The encryption key used to encrypt and decrypt data in the artifact store for the pipeline, such as an AWS Key Management Service (AWS KMS) key. This is optional and might not be present. - */ - encryptionKey?: EncryptionKey; - } - export interface ThirdPartyJobDetails { - /** - * The identifier used to identify the job details in AWS CodePipeline. - */ - id?: ThirdPartyJobId; - /** - * The data to be returned by the third party job worker. - */ - data?: ThirdPartyJobData; - /** - * A system-generated random number that AWS CodePipeline uses to ensure that the job is being worked on by only one job worker. Use this number in an AcknowledgeThirdPartyJob request. - */ - nonce?: Nonce; - } - export type ThirdPartyJobId = string; - export type ThirdPartyJobList = ThirdPartyJob[]; - export type Time = Date; - export type Timestamp = Date; - export interface TransitionState { - /** - * Whether the transition between stages is enabled (true) or disabled (false). - */ - enabled?: Enabled; - /** - * The ID of the user who last changed the transition state. - */ - lastChangedBy?: LastChangedBy; - /** - * The timestamp when the transition state was last changed. - */ - lastChangedAt?: LastChangedAt; - /** - * The user-specified reason why the transition between two stages of a pipeline was disabled. - */ - disabledReason?: DisabledReason; - } - export interface UpdatePipelineInput { - /** - * The name of the pipeline to be updated. - */ - pipeline: PipelineDeclaration; - } - export interface UpdatePipelineOutput { - /** - * The structure of the updated pipeline. - */ - pipeline?: PipelineDeclaration; - } - export type Url = string; - export type UrlTemplate = string; - export type Version = string; - /** - * A string in YYYY-MM-DD format that represents the latest possible API version that can be used in this service. Specify 'latest' to use the latest possible version. - */ - export type apiVersion = "2015-07-09"|"latest"|string; - export interface ClientApiVersions { - /** - * A string in YYYY-MM-DD format that represents the latest possible API version that can be used in this service. Specify 'latest' to use the latest possible version. - */ - apiVersion?: apiVersion; - } - export type ClientConfiguration = ServiceConfigurationOptions & ClientApiVersions; - /** - * Contains interfaces for use with the CodePipeline client. - */ - export import Types = CodePipeline; -} -export = CodePipeline; diff --git a/workshops/monte-carlo-on-ec2-spot-fleet/src/web/node_modules/aws-sdk/clients/codepipeline.js b/workshops/monte-carlo-on-ec2-spot-fleet/src/web/node_modules/aws-sdk/clients/codepipeline.js deleted file mode 100644 index 5cd27e8e..00000000 --- a/workshops/monte-carlo-on-ec2-spot-fleet/src/web/node_modules/aws-sdk/clients/codepipeline.js +++ /dev/null @@ -1,18 +0,0 @@ -require('../lib/node_loader'); -var AWS = require('../lib/core'); -var Service = AWS.Service; -var apiLoader = AWS.apiLoader; - -apiLoader.services['codepipeline'] = {}; -AWS.CodePipeline = Service.defineService('codepipeline', ['2015-07-09']); -Object.defineProperty(apiLoader.services['codepipeline'], '2015-07-09', { - get: function get() { - var model = require('../apis/codepipeline-2015-07-09.min.json'); - model.paginators = require('../apis/codepipeline-2015-07-09.paginators.json').pagination; - return model; - }, - enumerable: true, - configurable: true -}); - -module.exports = AWS.CodePipeline; diff --git a/workshops/monte-carlo-on-ec2-spot-fleet/src/web/node_modules/aws-sdk/clients/codestar.d.ts b/workshops/monte-carlo-on-ec2-spot-fleet/src/web/node_modules/aws-sdk/clients/codestar.d.ts deleted file mode 100644 index 905f01be..00000000 --- a/workshops/monte-carlo-on-ec2-spot-fleet/src/web/node_modules/aws-sdk/clients/codestar.d.ts +++ /dev/null @@ -1,711 +0,0 @@ -import {Request} from '../lib/request'; -import {Response} from '../lib/response'; -import {AWSError} from '../lib/error'; -import {Service} from '../lib/service'; -import {ServiceConfigurationOptions} from '../lib/service'; -import {ConfigBase as Config} from '../lib/config'; -interface Blob {} -declare class CodeStar extends Service { - /** - * Constructs a service object. This object has one method for each API operation. - */ - constructor(options?: CodeStar.Types.ClientConfiguration) - config: Config & CodeStar.Types.ClientConfiguration; - /** - * Adds an IAM user to the team for an AWS CodeStar project. - */ - associateTeamMember(params: CodeStar.Types.AssociateTeamMemberRequest, callback?: (err: AWSError, data: CodeStar.Types.AssociateTeamMemberResult) => void): Request; - /** - * Adds an IAM user to the team for an AWS CodeStar project. - */ - associateTeamMember(callback?: (err: AWSError, data: CodeStar.Types.AssociateTeamMemberResult) => void): Request; - /** - * Reserved for future use. To create a project, use the AWS CodeStar console. - */ - createProject(params: CodeStar.Types.CreateProjectRequest, callback?: (err: AWSError, data: CodeStar.Types.CreateProjectResult) => void): Request; - /** - * Reserved for future use. To create a project, use the AWS CodeStar console. - */ - createProject(callback?: (err: AWSError, data: CodeStar.Types.CreateProjectResult) => void): Request; - /** - * Creates a profile for a user that includes user preferences, such as the display name and email address assocciated with the user, in AWS CodeStar. The user profile is not project-specific. Information in the user profile is displayed wherever the user's information appears to other users in AWS CodeStar. - */ - createUserProfile(params: CodeStar.Types.CreateUserProfileRequest, callback?: (err: AWSError, data: CodeStar.Types.CreateUserProfileResult) => void): Request; - /** - * Creates a profile for a user that includes user preferences, such as the display name and email address assocciated with the user, in AWS CodeStar. The user profile is not project-specific. Information in the user profile is displayed wherever the user's information appears to other users in AWS CodeStar. - */ - createUserProfile(callback?: (err: AWSError, data: CodeStar.Types.CreateUserProfileResult) => void): Request; - /** - * Deletes a project, including project resources. Does not delete users associated with the project, but does delete the IAM roles that allowed access to the project. - */ - deleteProject(params: CodeStar.Types.DeleteProjectRequest, callback?: (err: AWSError, data: CodeStar.Types.DeleteProjectResult) => void): Request; - /** - * Deletes a project, including project resources. Does not delete users associated with the project, but does delete the IAM roles that allowed access to the project. - */ - deleteProject(callback?: (err: AWSError, data: CodeStar.Types.DeleteProjectResult) => void): Request; - /** - * Deletes a user profile in AWS CodeStar, including all personal preference data associated with that profile, such as display name and email address. It does not delete the history of that user, for example the history of commits made by that user. - */ - deleteUserProfile(params: CodeStar.Types.DeleteUserProfileRequest, callback?: (err: AWSError, data: CodeStar.Types.DeleteUserProfileResult) => void): Request; - /** - * Deletes a user profile in AWS CodeStar, including all personal preference data associated with that profile, such as display name and email address. It does not delete the history of that user, for example the history of commits made by that user. - */ - deleteUserProfile(callback?: (err: AWSError, data: CodeStar.Types.DeleteUserProfileResult) => void): Request; - /** - * Describes a project and its resources. - */ - describeProject(params: CodeStar.Types.DescribeProjectRequest, callback?: (err: AWSError, data: CodeStar.Types.DescribeProjectResult) => void): Request; - /** - * Describes a project and its resources. - */ - describeProject(callback?: (err: AWSError, data: CodeStar.Types.DescribeProjectResult) => void): Request; - /** - * Describes a user in AWS CodeStar and the user attributes across all projects. - */ - describeUserProfile(params: CodeStar.Types.DescribeUserProfileRequest, callback?: (err: AWSError, data: CodeStar.Types.DescribeUserProfileResult) => void): Request; - /** - * Describes a user in AWS CodeStar and the user attributes across all projects. - */ - describeUserProfile(callback?: (err: AWSError, data: CodeStar.Types.DescribeUserProfileResult) => void): Request; - /** - * Removes a user from a project. Removing a user from a project also removes the IAM policies from that user that allowed access to the project and its resources. Disassociating a team member does not remove that user's profile from AWS CodeStar. It does not remove the user from IAM. - */ - disassociateTeamMember(params: CodeStar.Types.DisassociateTeamMemberRequest, callback?: (err: AWSError, data: CodeStar.Types.DisassociateTeamMemberResult) => void): Request; - /** - * Removes a user from a project. Removing a user from a project also removes the IAM policies from that user that allowed access to the project and its resources. Disassociating a team member does not remove that user's profile from AWS CodeStar. It does not remove the user from IAM. - */ - disassociateTeamMember(callback?: (err: AWSError, data: CodeStar.Types.DisassociateTeamMemberResult) => void): Request; - /** - * Lists all projects in AWS CodeStar associated with your AWS account. - */ - listProjects(params: CodeStar.Types.ListProjectsRequest, callback?: (err: AWSError, data: CodeStar.Types.ListProjectsResult) => void): Request; - /** - * Lists all projects in AWS CodeStar associated with your AWS account. - */ - listProjects(callback?: (err: AWSError, data: CodeStar.Types.ListProjectsResult) => void): Request; - /** - * Lists resources associated with a project in AWS CodeStar. - */ - listResources(params: CodeStar.Types.ListResourcesRequest, callback?: (err: AWSError, data: CodeStar.Types.ListResourcesResult) => void): Request; - /** - * Lists resources associated with a project in AWS CodeStar. - */ - listResources(callback?: (err: AWSError, data: CodeStar.Types.ListResourcesResult) => void): Request; - /** - * Gets the tags for a project. - */ - listTagsForProject(params: CodeStar.Types.ListTagsForProjectRequest, callback?: (err: AWSError, data: CodeStar.Types.ListTagsForProjectResult) => void): Request; - /** - * Gets the tags for a project. - */ - listTagsForProject(callback?: (err: AWSError, data: CodeStar.Types.ListTagsForProjectResult) => void): Request; - /** - * Lists all team members associated with a project. - */ - listTeamMembers(params: CodeStar.Types.ListTeamMembersRequest, callback?: (err: AWSError, data: CodeStar.Types.ListTeamMembersResult) => void): Request; - /** - * Lists all team members associated with a project. - */ - listTeamMembers(callback?: (err: AWSError, data: CodeStar.Types.ListTeamMembersResult) => void): Request; - /** - * Lists all the user profiles configured for your AWS account in AWS CodeStar. - */ - listUserProfiles(params: CodeStar.Types.ListUserProfilesRequest, callback?: (err: AWSError, data: CodeStar.Types.ListUserProfilesResult) => void): Request; - /** - * Lists all the user profiles configured for your AWS account in AWS CodeStar. - */ - listUserProfiles(callback?: (err: AWSError, data: CodeStar.Types.ListUserProfilesResult) => void): Request; - /** - * Adds tags to a project. - */ - tagProject(params: CodeStar.Types.TagProjectRequest, callback?: (err: AWSError, data: CodeStar.Types.TagProjectResult) => void): Request; - /** - * Adds tags to a project. - */ - tagProject(callback?: (err: AWSError, data: CodeStar.Types.TagProjectResult) => void): Request; - /** - * Removes tags from a project. - */ - untagProject(params: CodeStar.Types.UntagProjectRequest, callback?: (err: AWSError, data: CodeStar.Types.UntagProjectResult) => void): Request; - /** - * Removes tags from a project. - */ - untagProject(callback?: (err: AWSError, data: CodeStar.Types.UntagProjectResult) => void): Request; - /** - * Updates a project in AWS CodeStar. - */ - updateProject(params: CodeStar.Types.UpdateProjectRequest, callback?: (err: AWSError, data: CodeStar.Types.UpdateProjectResult) => void): Request; - /** - * Updates a project in AWS CodeStar. - */ - updateProject(callback?: (err: AWSError, data: CodeStar.Types.UpdateProjectResult) => void): Request; - /** - * Updates a team member's attributes in an AWS CodeStar project. For example, you can change a team member's role in the project, or change whether they have remote access to project resources. - */ - updateTeamMember(params: CodeStar.Types.UpdateTeamMemberRequest, callback?: (err: AWSError, data: CodeStar.Types.UpdateTeamMemberResult) => void): Request; - /** - * Updates a team member's attributes in an AWS CodeStar project. For example, you can change a team member's role in the project, or change whether they have remote access to project resources. - */ - updateTeamMember(callback?: (err: AWSError, data: CodeStar.Types.UpdateTeamMemberResult) => void): Request; - /** - * Updates a user's profile in AWS CodeStar. The user profile is not project-specific. Information in the user profile is displayed wherever the user's information appears to other users in AWS CodeStar. - */ - updateUserProfile(params: CodeStar.Types.UpdateUserProfileRequest, callback?: (err: AWSError, data: CodeStar.Types.UpdateUserProfileResult) => void): Request; - /** - * Updates a user's profile in AWS CodeStar. The user profile is not project-specific. Information in the user profile is displayed wherever the user's information appears to other users in AWS CodeStar. - */ - updateUserProfile(callback?: (err: AWSError, data: CodeStar.Types.UpdateUserProfileResult) => void): Request; -} -declare namespace CodeStar { - export interface AssociateTeamMemberRequest { - /** - * The ID of the project to which you will add the IAM user. - */ - projectId: ProjectId; - /** - * A user- or system-generated token that identifies the entity that requested the team member association to the project. This token can be used to repeat the request. - */ - clientRequestToken?: ClientRequestToken; - /** - * The Amazon Resource Name (ARN) for the IAM user you want to add to the AWS CodeStar project. - */ - userArn: UserArn; - /** - * The AWS CodeStar project role that will apply to this user. This role determines what actions a user can take in an AWS CodeStar project. - */ - projectRole: Role; - /** - * Whether the team member is allowed to use an SSH public/private key pair to remotely access project resources, for example Amazon EC2 instances. - */ - remoteAccessAllowed?: RemoteAccessAllowed; - } - export interface AssociateTeamMemberResult { - /** - * The user- or system-generated token from the initial request that can be used to repeat the request. - */ - clientRequestToken?: ClientRequestToken; - } - export type ClientRequestToken = string; - export interface CreateProjectRequest { - /** - * Reserved for future use. - */ - name: ProjectName; - /** - * Reserved for future use. - */ - id: ProjectId; - /** - * Reserved for future use. - */ - description?: ProjectDescription; - /** - * Reserved for future use. - */ - clientRequestToken?: ClientRequestToken; - } - export interface CreateProjectResult { - /** - * Reserved for future use. - */ - id: ProjectId; - /** - * Reserved for future use. - */ - arn: ProjectArn; - /** - * Reserved for future use. - */ - clientRequestToken?: ClientRequestToken; - /** - * Reserved for future use. - */ - projectTemplateId?: ProjectTemplateId; - } - export interface CreateUserProfileRequest { - /** - * The Amazon Resource Name (ARN) of the user in IAM. - */ - userArn: UserArn; - /** - * The name that will be displayed as the friendly name for the user in AWS CodeStar. - */ - displayName: UserProfileDisplayName; - /** - * The email address that will be displayed as part of the user's profile in AWS CodeStar. - */ - emailAddress: Email; - /** - * The SSH public key associated with the user in AWS CodeStar. If a project owner allows the user remote access to project resources, this public key will be used along with the user's private key for SSH access. - */ - sshPublicKey?: SshPublicKey; - } - export interface CreateUserProfileResult { - /** - * The Amazon Resource Name (ARN) of the user in IAM. - */ - userArn: UserArn; - /** - * The name that is displayed as the friendly name for the user in AWS CodeStar. - */ - displayName?: UserProfileDisplayName; - /** - * The email address that is displayed as part of the user's profile in AWS CodeStar. - */ - emailAddress?: Email; - /** - * The SSH public key associated with the user in AWS CodeStar. This is the public portion of the public/private keypair the user can use to access project resources if a project owner allows the user remote access to those resources. - */ - sshPublicKey?: SshPublicKey; - /** - * The date the user profile was created, in timestamp format. - */ - createdTimestamp?: CreatedTimestamp; - /** - * The date the user profile was last modified, in timestamp format. - */ - lastModifiedTimestamp?: LastModifiedTimestamp; - } - export type CreatedTimestamp = Date; - export interface DeleteProjectRequest { - /** - * The ID of the project to be deleted in AWS CodeStar. - */ - id: ProjectId; - /** - * A user- or system-generated token that identifies the entity that requested project deletion. This token can be used to repeat the request. - */ - clientRequestToken?: ClientRequestToken; - /** - * Whether to send a delete request for the primary stack in AWS CloudFormation originally used to generate the project and its resources. This option will delete all AWS resources for the project (except for any buckets in Amazon S3) as well as deleting the project itself. Recommended for most use cases. - */ - deleteStack?: DeleteStack; - } - export interface DeleteProjectResult { - /** - * The ID of the primary stack in AWS CloudFormation that will be deleted as part of deleting the project and its resources. - */ - stackId?: StackId; - /** - * The Amazon Resource Name (ARN) of the deleted project. - */ - projectArn?: ProjectArn; - } - export type DeleteStack = boolean; - export interface DeleteUserProfileRequest { - /** - * The Amazon Resource Name (ARN) of the user to delete from AWS CodeStar. - */ - userArn: UserArn; - } - export interface DeleteUserProfileResult { - /** - * The Amazon Resource Name (ARN) of the user deleted from AWS CodeStar. - */ - userArn: UserArn; - } - export interface DescribeProjectRequest { - /** - * The ID of the project. - */ - id: ProjectId; - } - export interface DescribeProjectResult { - /** - * The display name for the project. - */ - name?: ProjectName; - /** - * The ID of the project. - */ - id?: ProjectId; - /** - * The Amazon Resource Name (ARN) for the project. - */ - arn?: ProjectArn; - /** - * The description of the project, if any. - */ - description?: ProjectDescription; - /** - * A user- or system-generated token that identifies the entity that requested project creation. - */ - clientRequestToken?: ClientRequestToken; - /** - * The date and time the project was created, in timestamp format. - */ - createdTimeStamp?: CreatedTimestamp; - /** - * The ID of the primary stack in AWS CloudFormation used to generate resources for the project. - */ - stackId?: StackId; - /** - * The ID for the AWS CodeStar project template used to create the project. - */ - projectTemplateId?: ProjectTemplateId; - } - export interface DescribeUserProfileRequest { - /** - * The Amazon Resource Name (ARN) of the user. - */ - userArn: UserArn; - } - export interface DescribeUserProfileResult { - /** - * The Amazon Resource Name (ARN) of the user. - */ - userArn: UserArn; - /** - * The display name shown for the user in AWS CodeStar projects. For example, this could be set to both first and last name ("Mary Major") or a single name ("Mary"). The display name is also used to generate the initial icon associated with the user in AWS CodeStar projects. If spaces are included in the display name, the first character that appears after the space will be used as the second character in the user initial icon. The initial icon displays a maximum of two characters, so a display name with more than one space (for example "Mary Jane Major") would generate an initial icon using the first character and the first character after the space ("MJ", not "MM"). - */ - displayName?: UserProfileDisplayName; - /** - * The email address for the user. Optional. - */ - emailAddress?: Email; - /** - * The SSH public key associated with the user. This SSH public key is associated with the user profile, and can be used in conjunction with the associated private key for access to project resources, such as Amazon EC2 instances, if a project owner grants remote access to those resources. - */ - sshPublicKey?: SshPublicKey; - /** - * The date and time when the user profile was created in AWS CodeStar, in timestamp format. - */ - createdTimestamp: CreatedTimestamp; - /** - * The date and time when the user profile was last modified, in timestamp format. - */ - lastModifiedTimestamp: LastModifiedTimestamp; - } - export interface DisassociateTeamMemberRequest { - /** - * The ID of the AWS CodeStar project from which you want to remove a team member. - */ - projectId: ProjectId; - /** - * The Amazon Resource Name (ARN) of the IAM user or group whom you want to remove from the project. - */ - userArn: UserArn; - } - export interface DisassociateTeamMemberResult { - } - export type Email = string; - export type LastModifiedTimestamp = Date; - export interface ListProjectsRequest { - /** - * The continuation token to be used to return the next set of results, if the results cannot be returned in one response. - */ - nextToken?: PaginationToken; - /** - * The maximum amount of data that can be contained in a single set of results. - */ - maxResults?: MaxResults; - } - export interface ListProjectsResult { - /** - * A list of projects. - */ - projects: ProjectsList; - /** - * The continuation token to use when requesting the next set of results, if there are more results to be returned. - */ - nextToken?: PaginationToken; - } - export interface ListResourcesRequest { - /** - * The ID of the project. - */ - projectId: ProjectId; - /** - * The continuation token for the next set of results, if the results cannot be returned in one response. - */ - nextToken?: PaginationToken; - /** - * The maximum amount of data that can be contained in a single set of results. - */ - maxResults?: MaxResults; - } - export interface ListResourcesResult { - /** - * An array of resources associated with the project. - */ - resources?: ResourcesResult; - /** - * The continuation token to use when requesting the next set of results, if there are more results to be returned. - */ - nextToken?: PaginationToken; - } - export interface ListTagsForProjectRequest { - /** - * The ID of the project to get tags for. - */ - id: ProjectId; - /** - * Reserved for future use. - */ - nextToken?: PaginationToken; - /** - * Reserved for future use. - */ - maxResults?: MaxResults; - } - export interface ListTagsForProjectResult { - /** - * The tags for the project. - */ - tags?: Tags; - /** - * Reserved for future use. - */ - nextToken?: PaginationToken; - } - export interface ListTeamMembersRequest { - /** - * The ID of the project for which you want to list team members. - */ - projectId: ProjectId; - /** - * The continuation token for the next set of results, if the results cannot be returned in one response. - */ - nextToken?: PaginationToken; - /** - * The maximum number of team members you want returned in a response. - */ - maxResults?: MaxResults; - } - export interface ListTeamMembersResult { - /** - * A list of team member objects for the project. - */ - teamMembers: TeamMemberResult; - /** - * The continuation token to use when requesting the next set of results, if there are more results to be returned. - */ - nextToken?: PaginationToken; - } - export interface ListUserProfilesRequest { - /** - * The continuation token for the next set of results, if the results cannot be returned in one response. - */ - nextToken?: PaginationToken; - /** - * The maximum number of results to return in a response. - */ - maxResults?: MaxResults; - } - export interface ListUserProfilesResult { - /** - * All the user profiles configured in AWS CodeStar for an AWS account. - */ - userProfiles: UserProfilesList; - /** - * The continuation token to use when requesting the next set of results, if there are more results to be returned. - */ - nextToken?: PaginationToken; - } - export type MaxResults = number; - export type PaginationToken = string; - export type ProjectArn = string; - export type ProjectDescription = string; - export type ProjectId = string; - export type ProjectName = string; - export interface ProjectSummary { - /** - * The ID of the project. - */ - projectId?: ProjectId; - /** - * The Amazon Resource Name (ARN) of the project. - */ - projectArn?: ProjectArn; - } - export type ProjectTemplateId = string; - export type ProjectsList = ProjectSummary[]; - export type RemoteAccessAllowed = boolean; - export interface Resource { - /** - * The Amazon Resource Name (ARN) of the resource. - */ - id: ResourceId; - } - export type ResourceId = string; - export type ResourcesResult = Resource[]; - export type Role = string; - export type SshPublicKey = string; - export type StackId = string; - export type TagKey = string; - export type TagKeys = TagKey[]; - export interface TagProjectRequest { - /** - * The ID of the project you want to add a tag to. - */ - id: ProjectId; - /** - * The tags you want to add to the project. - */ - tags: Tags; - } - export interface TagProjectResult { - /** - * The tags for the project. - */ - tags?: Tags; - } - export type TagValue = string; - export type Tags = {[key: string]: TagValue}; - export interface TeamMember { - /** - * The Amazon Resource Name (ARN) of the user in IAM. - */ - userArn: UserArn; - /** - * The role assigned to the user in the project. Project roles have different levels of access. For more information, see Working with Teams in the AWS CodeStar User Guide. - */ - projectRole: Role; - /** - * Whether the user is allowed to remotely access project resources using an SSH public/private key pair. - */ - remoteAccessAllowed?: RemoteAccessAllowed; - } - export type TeamMemberResult = TeamMember[]; - export interface UntagProjectRequest { - /** - * The ID of the project to remove tags from. - */ - id: ProjectId; - /** - * The tags to remove from the project. - */ - tags: TagKeys; - } - export interface UntagProjectResult { - } - export interface UpdateProjectRequest { - /** - * The ID of the project you want to update. - */ - id: ProjectId; - /** - * The name of the project you want to update. - */ - name?: ProjectName; - /** - * The description of the project, if any. - */ - description?: ProjectDescription; - } - export interface UpdateProjectResult { - } - export interface UpdateTeamMemberRequest { - /** - * The ID of the project. - */ - projectId: ProjectId; - /** - * The Amazon Resource Name (ARN) of the user for whom you want to change team membership attributes. - */ - userArn: UserArn; - /** - * The role assigned to the user in the project. Project roles have different levels of access. For more information, see Working with Teams in the AWS CodeStar User Guide. - */ - projectRole?: Role; - /** - * Whether a team member is allowed to remotely access project resources using the SSH public key associated with the user's profile. Even if this is set to True, the user must associate a public key with their profile before the user can access resources. - */ - remoteAccessAllowed?: RemoteAccessAllowed; - } - export interface UpdateTeamMemberResult { - /** - * The Amazon Resource Name (ARN) of the user whose team membership attributes were updated. - */ - userArn?: UserArn; - /** - * The project role granted to the user. - */ - projectRole?: Role; - /** - * Whether a team member is allowed to remotely access project resources using the SSH public key associated with the user's profile. - */ - remoteAccessAllowed?: RemoteAccessAllowed; - } - export interface UpdateUserProfileRequest { - /** - * The name that will be displayed as the friendly name for the user in AWS CodeStar. - */ - userArn: UserArn; - /** - * The name that is displayed as the friendly name for the user in AWS CodeStar. - */ - displayName?: UserProfileDisplayName; - /** - * The email address that is displayed as part of the user's profile in AWS CodeStar. - */ - emailAddress?: Email; - /** - * The SSH public key associated with the user in AWS CodeStar. If a project owner allows the user remote access to project resources, this public key will be used along with the user's private key for SSH access. - */ - sshPublicKey?: SshPublicKey; - } - export interface UpdateUserProfileResult { - /** - * The Amazon Resource Name (ARN) of the user in IAM. - */ - userArn: UserArn; - /** - * The name that is displayed as the friendly name for the user in AWS CodeStar. - */ - displayName?: UserProfileDisplayName; - /** - * The email address that is displayed as part of the user's profile in AWS CodeStar. - */ - emailAddress?: Email; - /** - * The SSH public key associated with the user in AWS CodeStar. This is the public portion of the public/private keypair the user can use to access project resources if a project owner allows the user remote access to those resources. - */ - sshPublicKey?: SshPublicKey; - /** - * The date the user profile was created, in timestamp format. - */ - createdTimestamp?: CreatedTimestamp; - /** - * The date the user profile was last modified, in timestamp format. - */ - lastModifiedTimestamp?: LastModifiedTimestamp; - } - export type UserArn = string; - export type UserProfileDisplayName = string; - export interface UserProfileSummary { - /** - * The Amazon Resource Name (ARN) of the user in IAM. - */ - userArn?: UserArn; - /** - * The display name of a user in AWS CodeStar. For example, this could be set to both first and last name ("Mary Major") or a single name ("Mary"). The display name is also used to generate the initial icon associated with the user in AWS CodeStar projects. If spaces are included in the display name, the first character that appears after the space will be used as the second character in the user initial icon. The initial icon displays a maximum of two characters, so a display name with more than one space (for example "Mary Jane Major") would generate an initial icon using the first character and the first character after the space ("MJ", not "MM"). - */ - displayName?: UserProfileDisplayName; - /** - * The email address associated with the user. - */ - emailAddress?: Email; - /** - * The SSH public key associated with the user in AWS CodeStar. If a project owner allows the user remote access to project resources, this public key will be used along with the user's private key for SSH access. - */ - sshPublicKey?: SshPublicKey; - } - export type UserProfilesList = UserProfileSummary[]; - /** - * A string in YYYY-MM-DD format that represents the latest possible API version that can be used in this service. Specify 'latest' to use the latest possible version. - */ - export type apiVersion = "2017-04-19"|"latest"|string; - export interface ClientApiVersions { - /** - * A string in YYYY-MM-DD format that represents the latest possible API version that can be used in this service. Specify 'latest' to use the latest possible version. - */ - apiVersion?: apiVersion; - } - export type ClientConfiguration = ServiceConfigurationOptions & ClientApiVersions; - /** - * Contains interfaces for use with the CodeStar client. - */ - export import Types = CodeStar; -} -export = CodeStar; diff --git a/workshops/monte-carlo-on-ec2-spot-fleet/src/web/node_modules/aws-sdk/clients/codestar.js b/workshops/monte-carlo-on-ec2-spot-fleet/src/web/node_modules/aws-sdk/clients/codestar.js deleted file mode 100644 index 066d8e59..00000000 --- a/workshops/monte-carlo-on-ec2-spot-fleet/src/web/node_modules/aws-sdk/clients/codestar.js +++ /dev/null @@ -1,18 +0,0 @@ -require('../lib/node_loader'); -var AWS = require('../lib/core'); -var Service = AWS.Service; -var apiLoader = AWS.apiLoader; - -apiLoader.services['codestar'] = {}; -AWS.CodeStar = Service.defineService('codestar', ['2017-04-19']); -Object.defineProperty(apiLoader.services['codestar'], '2017-04-19', { - get: function get() { - var model = require('../apis/codestar-2017-04-19.min.json'); - model.paginators = require('../apis/codestar-2017-04-19.paginators.json').pagination; - return model; - }, - enumerable: true, - configurable: true -}); - -module.exports = AWS.CodeStar; diff --git a/workshops/monte-carlo-on-ec2-spot-fleet/src/web/node_modules/aws-sdk/clients/cognitoidentity.d.ts b/workshops/monte-carlo-on-ec2-spot-fleet/src/web/node_modules/aws-sdk/clients/cognitoidentity.d.ts deleted file mode 100644 index f7716c45..00000000 --- a/workshops/monte-carlo-on-ec2-spot-fleet/src/web/node_modules/aws-sdk/clients/cognitoidentity.d.ts +++ /dev/null @@ -1,693 +0,0 @@ -import {Request} from '../lib/request'; -import {Response} from '../lib/response'; -import {AWSError} from '../lib/error'; -import {Service} from '../lib/service'; -import {ServiceConfigurationOptions} from '../lib/service'; -import {ConfigBase as Config} from '../lib/config'; -interface Blob {} -declare class CognitoIdentity extends Service { - /** - * Constructs a service object. This object has one method for each API operation. - */ - constructor(options?: CognitoIdentity.Types.ClientConfiguration) - config: Config & CognitoIdentity.Types.ClientConfiguration; - /** - * Creates a new identity pool. The identity pool is a store of user identity information that is specific to your AWS account. The limit on identity pools is 60 per account. The keys for SupportedLoginProviders are as follows: Facebook: graph.facebook.com Google: accounts.google.com Amazon: www.amazon.com Twitter: api.twitter.com Digits: www.digits.com You must use AWS Developer credentials to call this API. - */ - createIdentityPool(params: CognitoIdentity.Types.CreateIdentityPoolInput, callback?: (err: AWSError, data: CognitoIdentity.Types.IdentityPool) => void): Request; - /** - * Creates a new identity pool. The identity pool is a store of user identity information that is specific to your AWS account. The limit on identity pools is 60 per account. The keys for SupportedLoginProviders are as follows: Facebook: graph.facebook.com Google: accounts.google.com Amazon: www.amazon.com Twitter: api.twitter.com Digits: www.digits.com You must use AWS Developer credentials to call this API. - */ - createIdentityPool(callback?: (err: AWSError, data: CognitoIdentity.Types.IdentityPool) => void): Request; - /** - * Deletes identities from an identity pool. You can specify a list of 1-60 identities that you want to delete. You must use AWS Developer credentials to call this API. - */ - deleteIdentities(params: CognitoIdentity.Types.DeleteIdentitiesInput, callback?: (err: AWSError, data: CognitoIdentity.Types.DeleteIdentitiesResponse) => void): Request; - /** - * Deletes identities from an identity pool. You can specify a list of 1-60 identities that you want to delete. You must use AWS Developer credentials to call this API. - */ - deleteIdentities(callback?: (err: AWSError, data: CognitoIdentity.Types.DeleteIdentitiesResponse) => void): Request; - /** - * Deletes a user pool. Once a pool is deleted, users will not be able to authenticate with the pool. You must use AWS Developer credentials to call this API. - */ - deleteIdentityPool(params: CognitoIdentity.Types.DeleteIdentityPoolInput, callback?: (err: AWSError, data: {}) => void): Request<{}, AWSError>; - /** - * Deletes a user pool. Once a pool is deleted, users will not be able to authenticate with the pool. You must use AWS Developer credentials to call this API. - */ - deleteIdentityPool(callback?: (err: AWSError, data: {}) => void): Request<{}, AWSError>; - /** - * Returns metadata related to the given identity, including when the identity was created and any associated linked logins. You must use AWS Developer credentials to call this API. - */ - describeIdentity(params: CognitoIdentity.Types.DescribeIdentityInput, callback?: (err: AWSError, data: CognitoIdentity.Types.IdentityDescription) => void): Request; - /** - * Returns metadata related to the given identity, including when the identity was created and any associated linked logins. You must use AWS Developer credentials to call this API. - */ - describeIdentity(callback?: (err: AWSError, data: CognitoIdentity.Types.IdentityDescription) => void): Request; - /** - * Gets details about a particular identity pool, including the pool name, ID description, creation date, and current number of users. You must use AWS Developer credentials to call this API. - */ - describeIdentityPool(params: CognitoIdentity.Types.DescribeIdentityPoolInput, callback?: (err: AWSError, data: CognitoIdentity.Types.IdentityPool) => void): Request; - /** - * Gets details about a particular identity pool, including the pool name, ID description, creation date, and current number of users. You must use AWS Developer credentials to call this API. - */ - describeIdentityPool(callback?: (err: AWSError, data: CognitoIdentity.Types.IdentityPool) => void): Request; - /** - * Returns credentials for the provided identity ID. Any provided logins will be validated against supported login providers. If the token is for cognito-identity.amazonaws.com, it will be passed through to AWS Security Token Service with the appropriate role for the token. This is a public API. You do not need any credentials to call this API. - */ - getCredentialsForIdentity(params: CognitoIdentity.Types.GetCredentialsForIdentityInput, callback?: (err: AWSError, data: CognitoIdentity.Types.GetCredentialsForIdentityResponse) => void): Request; - /** - * Returns credentials for the provided identity ID. Any provided logins will be validated against supported login providers. If the token is for cognito-identity.amazonaws.com, it will be passed through to AWS Security Token Service with the appropriate role for the token. This is a public API. You do not need any credentials to call this API. - */ - getCredentialsForIdentity(callback?: (err: AWSError, data: CognitoIdentity.Types.GetCredentialsForIdentityResponse) => void): Request; - /** - * Generates (or retrieves) a Cognito ID. Supplying multiple logins will create an implicit linked account. This is a public API. You do not need any credentials to call this API. - */ - getId(params: CognitoIdentity.Types.GetIdInput, callback?: (err: AWSError, data: CognitoIdentity.Types.GetIdResponse) => void): Request; - /** - * Generates (or retrieves) a Cognito ID. Supplying multiple logins will create an implicit linked account. This is a public API. You do not need any credentials to call this API. - */ - getId(callback?: (err: AWSError, data: CognitoIdentity.Types.GetIdResponse) => void): Request; - /** - * Gets the roles for an identity pool. You must use AWS Developer credentials to call this API. - */ - getIdentityPoolRoles(params: CognitoIdentity.Types.GetIdentityPoolRolesInput, callback?: (err: AWSError, data: CognitoIdentity.Types.GetIdentityPoolRolesResponse) => void): Request; - /** - * Gets the roles for an identity pool. You must use AWS Developer credentials to call this API. - */ - getIdentityPoolRoles(callback?: (err: AWSError, data: CognitoIdentity.Types.GetIdentityPoolRolesResponse) => void): Request; - /** - * Gets an OpenID token, using a known Cognito ID. This known Cognito ID is returned by GetId. You can optionally add additional logins for the identity. Supplying multiple logins creates an implicit link. The OpenId token is valid for 15 minutes. This is a public API. You do not need any credentials to call this API. - */ - getOpenIdToken(params: CognitoIdentity.Types.GetOpenIdTokenInput, callback?: (err: AWSError, data: CognitoIdentity.Types.GetOpenIdTokenResponse) => void): Request; - /** - * Gets an OpenID token, using a known Cognito ID. This known Cognito ID is returned by GetId. You can optionally add additional logins for the identity. Supplying multiple logins creates an implicit link. The OpenId token is valid for 15 minutes. This is a public API. You do not need any credentials to call this API. - */ - getOpenIdToken(callback?: (err: AWSError, data: CognitoIdentity.Types.GetOpenIdTokenResponse) => void): Request; - /** - * Registers (or retrieves) a Cognito IdentityId and an OpenID Connect token for a user authenticated by your backend authentication process. Supplying multiple logins will create an implicit linked account. You can only specify one developer provider as part of the Logins map, which is linked to the identity pool. The developer provider is the "domain" by which Cognito will refer to your users. You can use GetOpenIdTokenForDeveloperIdentity to create a new identity and to link new logins (that is, user credentials issued by a public provider or developer provider) to an existing identity. When you want to create a new identity, the IdentityId should be null. When you want to associate a new login with an existing authenticated/unauthenticated identity, you can do so by providing the existing IdentityId. This API will create the identity in the specified IdentityPoolId. You must use AWS Developer credentials to call this API. - */ - getOpenIdTokenForDeveloperIdentity(params: CognitoIdentity.Types.GetOpenIdTokenForDeveloperIdentityInput, callback?: (err: AWSError, data: CognitoIdentity.Types.GetOpenIdTokenForDeveloperIdentityResponse) => void): Request; - /** - * Registers (or retrieves) a Cognito IdentityId and an OpenID Connect token for a user authenticated by your backend authentication process. Supplying multiple logins will create an implicit linked account. You can only specify one developer provider as part of the Logins map, which is linked to the identity pool. The developer provider is the "domain" by which Cognito will refer to your users. You can use GetOpenIdTokenForDeveloperIdentity to create a new identity and to link new logins (that is, user credentials issued by a public provider or developer provider) to an existing identity. When you want to create a new identity, the IdentityId should be null. When you want to associate a new login with an existing authenticated/unauthenticated identity, you can do so by providing the existing IdentityId. This API will create the identity in the specified IdentityPoolId. You must use AWS Developer credentials to call this API. - */ - getOpenIdTokenForDeveloperIdentity(callback?: (err: AWSError, data: CognitoIdentity.Types.GetOpenIdTokenForDeveloperIdentityResponse) => void): Request; - /** - * Lists the identities in a pool. You must use AWS Developer credentials to call this API. - */ - listIdentities(params: CognitoIdentity.Types.ListIdentitiesInput, callback?: (err: AWSError, data: CognitoIdentity.Types.ListIdentitiesResponse) => void): Request; - /** - * Lists the identities in a pool. You must use AWS Developer credentials to call this API. - */ - listIdentities(callback?: (err: AWSError, data: CognitoIdentity.Types.ListIdentitiesResponse) => void): Request; - /** - * Lists all of the Cognito identity pools registered for your account. You must use AWS Developer credentials to call this API. - */ - listIdentityPools(params: CognitoIdentity.Types.ListIdentityPoolsInput, callback?: (err: AWSError, data: CognitoIdentity.Types.ListIdentityPoolsResponse) => void): Request; - /** - * Lists all of the Cognito identity pools registered for your account. You must use AWS Developer credentials to call this API. - */ - listIdentityPools(callback?: (err: AWSError, data: CognitoIdentity.Types.ListIdentityPoolsResponse) => void): Request; - /** - * Retrieves the IdentityID associated with a DeveloperUserIdentifier or the list of DeveloperUserIdentifiers associated with an IdentityId for an existing identity. Either IdentityID or DeveloperUserIdentifier must not be null. If you supply only one of these values, the other value will be searched in the database and returned as a part of the response. If you supply both, DeveloperUserIdentifier will be matched against IdentityID. If the values are verified against the database, the response returns both values and is the same as the request. Otherwise a ResourceConflictException is thrown. You must use AWS Developer credentials to call this API. - */ - lookupDeveloperIdentity(params: CognitoIdentity.Types.LookupDeveloperIdentityInput, callback?: (err: AWSError, data: CognitoIdentity.Types.LookupDeveloperIdentityResponse) => void): Request; - /** - * Retrieves the IdentityID associated with a DeveloperUserIdentifier or the list of DeveloperUserIdentifiers associated with an IdentityId for an existing identity. Either IdentityID or DeveloperUserIdentifier must not be null. If you supply only one of these values, the other value will be searched in the database and returned as a part of the response. If you supply both, DeveloperUserIdentifier will be matched against IdentityID. If the values are verified against the database, the response returns both values and is the same as the request. Otherwise a ResourceConflictException is thrown. You must use AWS Developer credentials to call this API. - */ - lookupDeveloperIdentity(callback?: (err: AWSError, data: CognitoIdentity.Types.LookupDeveloperIdentityResponse) => void): Request; - /** - * Merges two users having different IdentityIds, existing in the same identity pool, and identified by the same developer provider. You can use this action to request that discrete users be merged and identified as a single user in the Cognito environment. Cognito associates the given source user (SourceUserIdentifier) with the IdentityId of the DestinationUserIdentifier. Only developer-authenticated users can be merged. If the users to be merged are associated with the same public provider, but as two different users, an exception will be thrown. You must use AWS Developer credentials to call this API. - */ - mergeDeveloperIdentities(params: CognitoIdentity.Types.MergeDeveloperIdentitiesInput, callback?: (err: AWSError, data: CognitoIdentity.Types.MergeDeveloperIdentitiesResponse) => void): Request; - /** - * Merges two users having different IdentityIds, existing in the same identity pool, and identified by the same developer provider. You can use this action to request that discrete users be merged and identified as a single user in the Cognito environment. Cognito associates the given source user (SourceUserIdentifier) with the IdentityId of the DestinationUserIdentifier. Only developer-authenticated users can be merged. If the users to be merged are associated with the same public provider, but as two different users, an exception will be thrown. You must use AWS Developer credentials to call this API. - */ - mergeDeveloperIdentities(callback?: (err: AWSError, data: CognitoIdentity.Types.MergeDeveloperIdentitiesResponse) => void): Request; - /** - * Sets the roles for an identity pool. These roles are used when making calls to GetCredentialsForIdentity action. You must use AWS Developer credentials to call this API. - */ - setIdentityPoolRoles(params: CognitoIdentity.Types.SetIdentityPoolRolesInput, callback?: (err: AWSError, data: {}) => void): Request<{}, AWSError>; - /** - * Sets the roles for an identity pool. These roles are used when making calls to GetCredentialsForIdentity action. You must use AWS Developer credentials to call this API. - */ - setIdentityPoolRoles(callback?: (err: AWSError, data: {}) => void): Request<{}, AWSError>; - /** - * Unlinks a DeveloperUserIdentifier from an existing identity. Unlinked developer users will be considered new identities next time they are seen. If, for a given Cognito identity, you remove all federated identities as well as the developer user identifier, the Cognito identity becomes inaccessible. You must use AWS Developer credentials to call this API. - */ - unlinkDeveloperIdentity(params: CognitoIdentity.Types.UnlinkDeveloperIdentityInput, callback?: (err: AWSError, data: {}) => void): Request<{}, AWSError>; - /** - * Unlinks a DeveloperUserIdentifier from an existing identity. Unlinked developer users will be considered new identities next time they are seen. If, for a given Cognito identity, you remove all federated identities as well as the developer user identifier, the Cognito identity becomes inaccessible. You must use AWS Developer credentials to call this API. - */ - unlinkDeveloperIdentity(callback?: (err: AWSError, data: {}) => void): Request<{}, AWSError>; - /** - * Unlinks a federated identity from an existing account. Unlinked logins will be considered new identities next time they are seen. Removing the last linked login will make this identity inaccessible. This is a public API. You do not need any credentials to call this API. - */ - unlinkIdentity(params: CognitoIdentity.Types.UnlinkIdentityInput, callback?: (err: AWSError, data: {}) => void): Request<{}, AWSError>; - /** - * Unlinks a federated identity from an existing account. Unlinked logins will be considered new identities next time they are seen. Removing the last linked login will make this identity inaccessible. This is a public API. You do not need any credentials to call this API. - */ - unlinkIdentity(callback?: (err: AWSError, data: {}) => void): Request<{}, AWSError>; - /** - * Updates a user pool. You must use AWS Developer credentials to call this API. - */ - updateIdentityPool(params: CognitoIdentity.Types.IdentityPool, callback?: (err: AWSError, data: CognitoIdentity.Types.IdentityPool) => void): Request; - /** - * Updates a user pool. You must use AWS Developer credentials to call this API. - */ - updateIdentityPool(callback?: (err: AWSError, data: CognitoIdentity.Types.IdentityPool) => void): Request; -} -declare namespace CognitoIdentity { - export type ARNString = string; - export type AccessKeyString = string; - export type AccountId = string; - export type AmbiguousRoleResolutionType = "AuthenticatedRole"|"Deny"|string; - export type ClaimName = string; - export type ClaimValue = string; - export interface CognitoIdentityProvider { - /** - * The provider name for an Amazon Cognito Identity User Pool. For example, cognito-idp.us-east-1.amazonaws.com/us-east-1_123456789. - */ - ProviderName?: CognitoIdentityProviderName; - /** - * The client ID for the Amazon Cognito Identity User Pool. - */ - ClientId?: CognitoIdentityProviderClientId; - /** - * TRUE if server-side token validation is enabled for the identity provider’s token. - */ - ServerSideTokenCheck?: CognitoIdentityProviderTokenCheck; - } - export type CognitoIdentityProviderClientId = string; - export type CognitoIdentityProviderList = CognitoIdentityProvider[]; - export type CognitoIdentityProviderName = string; - export type CognitoIdentityProviderTokenCheck = boolean; - export interface CreateIdentityPoolInput { - /** - * A string that you provide. - */ - IdentityPoolName: IdentityPoolName; - /** - * TRUE if the identity pool supports unauthenticated logins. - */ - AllowUnauthenticatedIdentities: IdentityPoolUnauthenticated; - /** - * Optional key:value pairs mapping provider names to provider app IDs. - */ - SupportedLoginProviders?: IdentityProviders; - /** - * The "domain" by which Cognito will refer to your users. This name acts as a placeholder that allows your backend and the Cognito service to communicate about the developer provider. For the DeveloperProviderName, you can use letters as well as period (.), underscore (_), and dash (-). Once you have set a developer provider name, you cannot change it. Please take care in setting this parameter. - */ - DeveloperProviderName?: DeveloperProviderName; - /** - * A list of OpendID Connect provider ARNs. - */ - OpenIdConnectProviderARNs?: OIDCProviderList; - /** - * An array of Amazon Cognito Identity user pools and their client IDs. - */ - CognitoIdentityProviders?: CognitoIdentityProviderList; - /** - * An array of Amazon Resource Names (ARNs) of the SAML provider for your identity pool. - */ - SamlProviderARNs?: SAMLProviderList; - } - export interface Credentials { - /** - * The Access Key portion of the credentials. - */ - AccessKeyId?: AccessKeyString; - /** - * The Secret Access Key portion of the credentials - */ - SecretKey?: SecretKeyString; - /** - * The Session Token portion of the credentials - */ - SessionToken?: SessionTokenString; - /** - * The date at which these credentials will expire. - */ - Expiration?: DateType; - } - export type DateType = Date; - export interface DeleteIdentitiesInput { - /** - * A list of 1-60 identities that you want to delete. - */ - IdentityIdsToDelete: IdentityIdList; - } - export interface DeleteIdentitiesResponse { - /** - * An array of UnprocessedIdentityId objects, each of which contains an ErrorCode and IdentityId. - */ - UnprocessedIdentityIds?: UnprocessedIdentityIdList; - } - export interface DeleteIdentityPoolInput { - /** - * An identity pool ID in the format REGION:GUID. - */ - IdentityPoolId: IdentityPoolId; - } - export interface DescribeIdentityInput { - /** - * A unique identifier in the format REGION:GUID. - */ - IdentityId: IdentityId; - } - export interface DescribeIdentityPoolInput { - /** - * An identity pool ID in the format REGION:GUID. - */ - IdentityPoolId: IdentityPoolId; - } - export type DeveloperProviderName = string; - export type DeveloperUserIdentifier = string; - export type DeveloperUserIdentifierList = DeveloperUserIdentifier[]; - export type ErrorCode = "AccessDenied"|"InternalServerError"|string; - export interface GetCredentialsForIdentityInput { - /** - * A unique identifier in the format REGION:GUID. - */ - IdentityId: IdentityId; - /** - * A set of optional name-value pairs that map provider names to provider tokens. - */ - Logins?: LoginsMap; - /** - * The Amazon Resource Name (ARN) of the role to be assumed when multiple roles were received in the token from the identity provider. For example, a SAML-based identity provider. This parameter is optional for identity providers that do not support role customization. - */ - CustomRoleArn?: ARNString; - } - export interface GetCredentialsForIdentityResponse { - /** - * A unique identifier in the format REGION:GUID. - */ - IdentityId?: IdentityId; - /** - * Credentials for the provided identity ID. - */ - Credentials?: Credentials; - } - export interface GetIdInput { - /** - * A standard AWS account ID (9+ digits). - */ - AccountId?: AccountId; - /** - * An identity pool ID in the format REGION:GUID. - */ - IdentityPoolId: IdentityPoolId; - /** - * A set of optional name-value pairs that map provider names to provider tokens. The available provider names for Logins are as follows: Facebook: graph.facebook.com Amazon Cognito Identity Provider: cognito-idp.us-east-1.amazonaws.com/us-east-1_123456789 Google: accounts.google.com Amazon: www.amazon.com Twitter: api.twitter.com Digits: www.digits.com - */ - Logins?: LoginsMap; - } - export interface GetIdResponse { - /** - * A unique identifier in the format REGION:GUID. - */ - IdentityId?: IdentityId; - } - export interface GetIdentityPoolRolesInput { - /** - * An identity pool ID in the format REGION:GUID. - */ - IdentityPoolId: IdentityPoolId; - } - export interface GetIdentityPoolRolesResponse { - /** - * An identity pool ID in the format REGION:GUID. - */ - IdentityPoolId?: IdentityPoolId; - /** - * The map of roles associated with this pool. Currently only authenticated and unauthenticated roles are supported. - */ - Roles?: RolesMap; - /** - * How users for a specific identity provider are to mapped to roles. This is a String-to-RoleMapping object map. The string identifies the identity provider, for example, "graph.facebook.com" or "cognito-idp-east-1.amazonaws.com/us-east-1_abcdefghi:app_client_id". - */ - RoleMappings?: RoleMappingMap; - } - export interface GetOpenIdTokenForDeveloperIdentityInput { - /** - * An identity pool ID in the format REGION:GUID. - */ - IdentityPoolId: IdentityPoolId; - /** - * A unique identifier in the format REGION:GUID. - */ - IdentityId?: IdentityId; - /** - * A set of optional name-value pairs that map provider names to provider tokens. Each name-value pair represents a user from a public provider or developer provider. If the user is from a developer provider, the name-value pair will follow the syntax "developer_provider_name": "developer_user_identifier". The developer provider is the "domain" by which Cognito will refer to your users; you provided this domain while creating/updating the identity pool. The developer user identifier is an identifier from your backend that uniquely identifies a user. When you create an identity pool, you can specify the supported logins. - */ - Logins: LoginsMap; - /** - * The expiration time of the token, in seconds. You can specify a custom expiration time for the token so that you can cache it. If you don't provide an expiration time, the token is valid for 15 minutes. You can exchange the token with Amazon STS for temporary AWS credentials, which are valid for a maximum of one hour. The maximum token duration you can set is 24 hours. You should take care in setting the expiration time for a token, as there are significant security implications: an attacker could use a leaked token to access your AWS resources for the token's duration. - */ - TokenDuration?: TokenDuration; - } - export interface GetOpenIdTokenForDeveloperIdentityResponse { - /** - * A unique identifier in the format REGION:GUID. - */ - IdentityId?: IdentityId; - /** - * An OpenID token. - */ - Token?: OIDCToken; - } - export interface GetOpenIdTokenInput { - /** - * A unique identifier in the format REGION:GUID. - */ - IdentityId: IdentityId; - /** - * A set of optional name-value pairs that map provider names to provider tokens. When using graph.facebook.com and www.amazon.com, supply the access_token returned from the provider's authflow. For accounts.google.com, an Amazon Cognito Identity Provider, or any other OpenId Connect provider, always include the id_token. - */ - Logins?: LoginsMap; - } - export interface GetOpenIdTokenResponse { - /** - * A unique identifier in the format REGION:GUID. Note that the IdentityId returned may not match the one passed on input. - */ - IdentityId?: IdentityId; - /** - * An OpenID token, valid for 15 minutes. - */ - Token?: OIDCToken; - } - export type HideDisabled = boolean; - export type IdentitiesList = IdentityDescription[]; - export interface IdentityDescription { - /** - * A unique identifier in the format REGION:GUID. - */ - IdentityId?: IdentityId; - /** - * A set of optional name-value pairs that map provider names to provider tokens. - */ - Logins?: LoginsList; - /** - * Date on which the identity was created. - */ - CreationDate?: DateType; - /** - * Date on which the identity was last modified. - */ - LastModifiedDate?: DateType; - } - export type IdentityId = string; - export type IdentityIdList = IdentityId[]; - export interface IdentityPool { - /** - * An identity pool ID in the format REGION:GUID. - */ - IdentityPoolId: IdentityPoolId; - /** - * A string that you provide. - */ - IdentityPoolName: IdentityPoolName; - /** - * TRUE if the identity pool supports unauthenticated logins. - */ - AllowUnauthenticatedIdentities: IdentityPoolUnauthenticated; - /** - * Optional key:value pairs mapping provider names to provider app IDs. - */ - SupportedLoginProviders?: IdentityProviders; - /** - * The "domain" by which Cognito will refer to your users. - */ - DeveloperProviderName?: DeveloperProviderName; - /** - * A list of OpendID Connect provider ARNs. - */ - OpenIdConnectProviderARNs?: OIDCProviderList; - /** - * A list representing an Amazon Cognito Identity User Pool and its client ID. - */ - CognitoIdentityProviders?: CognitoIdentityProviderList; - /** - * An array of Amazon Resource Names (ARNs) of the SAML provider for your identity pool. - */ - SamlProviderARNs?: SAMLProviderList; - } - export type IdentityPoolId = string; - export type IdentityPoolName = string; - export interface IdentityPoolShortDescription { - /** - * An identity pool ID in the format REGION:GUID. - */ - IdentityPoolId?: IdentityPoolId; - /** - * A string that you provide. - */ - IdentityPoolName?: IdentityPoolName; - } - export type IdentityPoolUnauthenticated = boolean; - export type IdentityPoolsList = IdentityPoolShortDescription[]; - export type IdentityProviderId = string; - export type IdentityProviderName = string; - export type IdentityProviderToken = string; - export type IdentityProviders = {[key: string]: IdentityProviderId}; - export interface ListIdentitiesInput { - /** - * An identity pool ID in the format REGION:GUID. - */ - IdentityPoolId: IdentityPoolId; - /** - * The maximum number of identities to return. - */ - MaxResults: QueryLimit; - /** - * A pagination token. - */ - NextToken?: PaginationKey; - /** - * An optional boolean parameter that allows you to hide disabled identities. If omitted, the ListIdentities API will include disabled identities in the response. - */ - HideDisabled?: HideDisabled; - } - export interface ListIdentitiesResponse { - /** - * An identity pool ID in the format REGION:GUID. - */ - IdentityPoolId?: IdentityPoolId; - /** - * An object containing a set of identities and associated mappings. - */ - Identities?: IdentitiesList; - /** - * A pagination token. - */ - NextToken?: PaginationKey; - } - export interface ListIdentityPoolsInput { - /** - * The maximum number of identities to return. - */ - MaxResults: QueryLimit; - /** - * A pagination token. - */ - NextToken?: PaginationKey; - } - export interface ListIdentityPoolsResponse { - /** - * The identity pools returned by the ListIdentityPools action. - */ - IdentityPools?: IdentityPoolsList; - /** - * A pagination token. - */ - NextToken?: PaginationKey; - } - export type LoginsList = IdentityProviderName[]; - export type LoginsMap = {[key: string]: IdentityProviderToken}; - export interface LookupDeveloperIdentityInput { - /** - * An identity pool ID in the format REGION:GUID. - */ - IdentityPoolId: IdentityPoolId; - /** - * A unique identifier in the format REGION:GUID. - */ - IdentityId?: IdentityId; - /** - * A unique ID used by your backend authentication process to identify a user. Typically, a developer identity provider would issue many developer user identifiers, in keeping with the number of users. - */ - DeveloperUserIdentifier?: DeveloperUserIdentifier; - /** - * The maximum number of identities to return. - */ - MaxResults?: QueryLimit; - /** - * A pagination token. The first call you make will have NextToken set to null. After that the service will return NextToken values as needed. For example, let's say you make a request with MaxResults set to 10, and there are 20 matches in the database. The service will return a pagination token as a part of the response. This token can be used to call the API again and get results starting from the 11th match. - */ - NextToken?: PaginationKey; - } - export interface LookupDeveloperIdentityResponse { - /** - * A unique identifier in the format REGION:GUID. - */ - IdentityId?: IdentityId; - /** - * This is the list of developer user identifiers associated with an identity ID. Cognito supports the association of multiple developer user identifiers with an identity ID. - */ - DeveloperUserIdentifierList?: DeveloperUserIdentifierList; - /** - * A pagination token. The first call you make will have NextToken set to null. After that the service will return NextToken values as needed. For example, let's say you make a request with MaxResults set to 10, and there are 20 matches in the database. The service will return a pagination token as a part of the response. This token can be used to call the API again and get results starting from the 11th match. - */ - NextToken?: PaginationKey; - } - export interface MappingRule { - /** - * The claim name that must be present in the token, for example, "isAdmin" or "paid". - */ - Claim: ClaimName; - /** - * The match condition that specifies how closely the claim value in the IdP token must match Value. - */ - MatchType: MappingRuleMatchType; - /** - * A brief string that the claim must match, for example, "paid" or "yes". - */ - Value: ClaimValue; - /** - * The role ARN. - */ - RoleARN: ARNString; - } - export type MappingRuleMatchType = "Equals"|"Contains"|"StartsWith"|"NotEqual"|string; - export type MappingRulesList = MappingRule[]; - export interface MergeDeveloperIdentitiesInput { - /** - * User identifier for the source user. The value should be a DeveloperUserIdentifier. - */ - SourceUserIdentifier: DeveloperUserIdentifier; - /** - * User identifier for the destination user. The value should be a DeveloperUserIdentifier. - */ - DestinationUserIdentifier: DeveloperUserIdentifier; - /** - * The "domain" by which Cognito will refer to your users. This is a (pseudo) domain name that you provide while creating an identity pool. This name acts as a placeholder that allows your backend and the Cognito service to communicate about the developer provider. For the DeveloperProviderName, you can use letters as well as period (.), underscore (_), and dash (-). - */ - DeveloperProviderName: DeveloperProviderName; - /** - * An identity pool ID in the format REGION:GUID. - */ - IdentityPoolId: IdentityPoolId; - } - export interface MergeDeveloperIdentitiesResponse { - /** - * A unique identifier in the format REGION:GUID. - */ - IdentityId?: IdentityId; - } - export type OIDCProviderList = ARNString[]; - export type OIDCToken = string; - export type PaginationKey = string; - export type QueryLimit = number; - export interface RoleMapping { - /** - * The role mapping type. Token will use cognito:roles and cognito:preferred_role claims from the Cognito identity provider token to map groups to roles. Rules will attempt to match claims from the token to map to a role. - */ - Type: RoleMappingType; - /** - * If you specify Token or Rules as the Type, AmbiguousRoleResolution is required. Specifies the action to be taken if either no rules match the claim value for the Rules type, or there is no cognito:preferred_role claim and there are multiple cognito:roles matches for the Token type. - */ - AmbiguousRoleResolution?: AmbiguousRoleResolutionType; - /** - * The rules to be used for mapping users to roles. If you specify Rules as the role mapping type, RulesConfiguration is required. - */ - RulesConfiguration?: RulesConfigurationType; - } - export type RoleMappingMap = {[key: string]: RoleMapping}; - export type RoleMappingType = "Token"|"Rules"|string; - export type RoleType = string; - export type RolesMap = {[key: string]: ARNString}; - export interface RulesConfigurationType { - /** - * An array of rules. You can specify up to 25 rules per identity provider. Rules are evaluated in order. The first one to match specifies the role. - */ - Rules: MappingRulesList; - } - export type SAMLProviderList = ARNString[]; - export type SecretKeyString = string; - export type SessionTokenString = string; - export interface SetIdentityPoolRolesInput { - /** - * An identity pool ID in the format REGION:GUID. - */ - IdentityPoolId: IdentityPoolId; - /** - * The map of roles associated with this pool. For a given role, the key will be either "authenticated" or "unauthenticated" and the value will be the Role ARN. - */ - Roles: RolesMap; - /** - * How users for a specific identity provider are to mapped to roles. This is a string to RoleMapping object map. The string identifies the identity provider, for example, "graph.facebook.com" or "cognito-idp-east-1.amazonaws.com/us-east-1_abcdefghi:app_client_id". Up to 25 rules can be specified per identity provider. - */ - RoleMappings?: RoleMappingMap; - } - export type String = string; - export type TokenDuration = number; - export interface UnlinkDeveloperIdentityInput { - /** - * A unique identifier in the format REGION:GUID. - */ - IdentityId: IdentityId; - /** - * An identity pool ID in the format REGION:GUID. - */ - IdentityPoolId: IdentityPoolId; - /** - * The "domain" by which Cognito will refer to your users. - */ - DeveloperProviderName: DeveloperProviderName; - /** - * A unique ID used by your backend authentication process to identify a user. - */ - DeveloperUserIdentifier: DeveloperUserIdentifier; - } - export interface UnlinkIdentityInput { - /** - * A unique identifier in the format REGION:GUID. - */ - IdentityId: IdentityId; - /** - * A set of optional name-value pairs that map provider names to provider tokens. - */ - Logins: LoginsMap; - /** - * Provider names to unlink from this identity. - */ - LoginsToRemove: LoginsList; - } - export interface UnprocessedIdentityId { - /** - * A unique identifier in the format REGION:GUID. - */ - IdentityId?: IdentityId; - /** - * The error code indicating the type of error that occurred. - */ - ErrorCode?: ErrorCode; - } - export type UnprocessedIdentityIdList = UnprocessedIdentityId[]; - /** - * A string in YYYY-MM-DD format that represents the latest possible API version that can be used in this service. Specify 'latest' to use the latest possible version. - */ - export type apiVersion = "2014-06-30"|"latest"|string; - export interface ClientApiVersions { - /** - * A string in YYYY-MM-DD format that represents the latest possible API version that can be used in this service. Specify 'latest' to use the latest possible version. - */ - apiVersion?: apiVersion; - } - export type ClientConfiguration = ServiceConfigurationOptions & ClientApiVersions; - /** - * Contains interfaces for use with the CognitoIdentity client. - */ - export import Types = CognitoIdentity; -} -export = CognitoIdentity; diff --git a/workshops/monte-carlo-on-ec2-spot-fleet/src/web/node_modules/aws-sdk/clients/cognitoidentity.js b/workshops/monte-carlo-on-ec2-spot-fleet/src/web/node_modules/aws-sdk/clients/cognitoidentity.js deleted file mode 100644 index 62add4c3..00000000 --- a/workshops/monte-carlo-on-ec2-spot-fleet/src/web/node_modules/aws-sdk/clients/cognitoidentity.js +++ /dev/null @@ -1,19 +0,0 @@ -require('../lib/node_loader'); -var AWS = require('../lib/core'); -var Service = AWS.Service; -var apiLoader = AWS.apiLoader; - -apiLoader.services['cognitoidentity'] = {}; -AWS.CognitoIdentity = Service.defineService('cognitoidentity', ['2014-06-30']); -require('../lib/services/cognitoidentity'); -Object.defineProperty(apiLoader.services['cognitoidentity'], '2014-06-30', { - get: function get() { - var model = require('../apis/cognito-identity-2014-06-30.min.json'); - model.paginators = require('../apis/cognito-identity-2014-06-30.paginators.json').pagination; - return model; - }, - enumerable: true, - configurable: true -}); - -module.exports = AWS.CognitoIdentity; diff --git a/workshops/monte-carlo-on-ec2-spot-fleet/src/web/node_modules/aws-sdk/clients/cognitoidentityserviceprovider.d.ts b/workshops/monte-carlo-on-ec2-spot-fleet/src/web/node_modules/aws-sdk/clients/cognitoidentityserviceprovider.d.ts deleted file mode 100644 index 4c014b6c..00000000 --- a/workshops/monte-carlo-on-ec2-spot-fleet/src/web/node_modules/aws-sdk/clients/cognitoidentityserviceprovider.d.ts +++ /dev/null @@ -1,3399 +0,0 @@ -import {Request} from '../lib/request'; -import {Response} from '../lib/response'; -import {AWSError} from '../lib/error'; -import {Service} from '../lib/service'; -import {ServiceConfigurationOptions} from '../lib/service'; -import {ConfigBase as Config} from '../lib/config'; -interface Blob {} -declare class CognitoIdentityServiceProvider extends Service { - /** - * Constructs a service object. This object has one method for each API operation. - */ - constructor(options?: CognitoIdentityServiceProvider.Types.ClientConfiguration) - config: Config & CognitoIdentityServiceProvider.Types.ClientConfiguration; - /** - * Adds additional user attributes to the user pool schema. - */ - addCustomAttributes(params: CognitoIdentityServiceProvider.Types.AddCustomAttributesRequest, callback?: (err: AWSError, data: CognitoIdentityServiceProvider.Types.AddCustomAttributesResponse) => void): Request; - /** - * Adds additional user attributes to the user pool schema. - */ - addCustomAttributes(callback?: (err: AWSError, data: CognitoIdentityServiceProvider.Types.AddCustomAttributesResponse) => void): Request; - /** - * Adds the specified user to the specified group. Requires developer credentials. - */ - adminAddUserToGroup(params: CognitoIdentityServiceProvider.Types.AdminAddUserToGroupRequest, callback?: (err: AWSError, data: {}) => void): Request<{}, AWSError>; - /** - * Adds the specified user to the specified group. Requires developer credentials. - */ - adminAddUserToGroup(callback?: (err: AWSError, data: {}) => void): Request<{}, AWSError>; - /** - * Confirms user registration as an admin without using a confirmation code. Works on any user. Requires developer credentials. - */ - adminConfirmSignUp(params: CognitoIdentityServiceProvider.Types.AdminConfirmSignUpRequest, callback?: (err: AWSError, data: CognitoIdentityServiceProvider.Types.AdminConfirmSignUpResponse) => void): Request; - /** - * Confirms user registration as an admin without using a confirmation code. Works on any user. Requires developer credentials. - */ - adminConfirmSignUp(callback?: (err: AWSError, data: CognitoIdentityServiceProvider.Types.AdminConfirmSignUpResponse) => void): Request; - /** - * Creates a new user in the specified user pool and sends a welcome message via email or phone (SMS). This message is based on a template that you configured in your call to CreateUserPool or UpdateUserPool. This template includes your custom sign-up instructions and placeholders for user name and temporary password. Requires developer credentials. - */ - adminCreateUser(params: CognitoIdentityServiceProvider.Types.AdminCreateUserRequest, callback?: (err: AWSError, data: CognitoIdentityServiceProvider.Types.AdminCreateUserResponse) => void): Request; - /** - * Creates a new user in the specified user pool and sends a welcome message via email or phone (SMS). This message is based on a template that you configured in your call to CreateUserPool or UpdateUserPool. This template includes your custom sign-up instructions and placeholders for user name and temporary password. Requires developer credentials. - */ - adminCreateUser(callback?: (err: AWSError, data: CognitoIdentityServiceProvider.Types.AdminCreateUserResponse) => void): Request; - /** - * Deletes a user as an administrator. Works on any user. Requires developer credentials. - */ - adminDeleteUser(params: CognitoIdentityServiceProvider.Types.AdminDeleteUserRequest, callback?: (err: AWSError, data: {}) => void): Request<{}, AWSError>; - /** - * Deletes a user as an administrator. Works on any user. Requires developer credentials. - */ - adminDeleteUser(callback?: (err: AWSError, data: {}) => void): Request<{}, AWSError>; - /** - * Deletes the user attributes in a user pool as an administrator. Works on any user. Requires developer credentials. - */ - adminDeleteUserAttributes(params: CognitoIdentityServiceProvider.Types.AdminDeleteUserAttributesRequest, callback?: (err: AWSError, data: CognitoIdentityServiceProvider.Types.AdminDeleteUserAttributesResponse) => void): Request; - /** - * Deletes the user attributes in a user pool as an administrator. Works on any user. Requires developer credentials. - */ - adminDeleteUserAttributes(callback?: (err: AWSError, data: CognitoIdentityServiceProvider.Types.AdminDeleteUserAttributesResponse) => void): Request; - /** - * Disables the user from signing in with the specified external (SAML or social) identity provider. If the user to disable is a Cognito User Pools native username + password user, they are not permitted to use their password to sign-in. If the user to disable is a linked external IdP user, any link between that user and an existing user is removed. The next time the external user (no longer attached to the previously linked DestinationUser) signs in, they must create a new user account. See AdminLinkProviderForUser. This action is enabled only for admin access and requires developer credentials. The ProviderName must match the value specified when creating an IdP for the pool. To disable a native username + password user, the ProviderName value must be Cognito and the ProviderAttributeName must be Cognito_Subject, with the ProviderAttributeValue being the name that is used in the user pool for the user. The ProviderAttributeName must always be Cognito_Subject for social identity providers. The ProviderAttributeValue must always be the exact subject that was used when the user was originally linked as a source user. For de-linking a SAML identity, there are two scenarios. If the linked identity has not yet been used to sign-in, the ProviderAttributeName and ProviderAttributeValue must be the same values that were used for the SourceUser when the identities were originally linked in the AdminLinkProviderForUser call. (If the linking was done with ProviderAttributeName set to Cognito_Subject, the same applies here). However, if the user has already signed in, the ProviderAttributeName must be Cognito_Subject and ProviderAttributeValue must be the subject of the SAML assertion. - */ - adminDisableProviderForUser(params: CognitoIdentityServiceProvider.Types.AdminDisableProviderForUserRequest, callback?: (err: AWSError, data: CognitoIdentityServiceProvider.Types.AdminDisableProviderForUserResponse) => void): Request; - /** - * Disables the user from signing in with the specified external (SAML or social) identity provider. If the user to disable is a Cognito User Pools native username + password user, they are not permitted to use their password to sign-in. If the user to disable is a linked external IdP user, any link between that user and an existing user is removed. The next time the external user (no longer attached to the previously linked DestinationUser) signs in, they must create a new user account. See AdminLinkProviderForUser. This action is enabled only for admin access and requires developer credentials. The ProviderName must match the value specified when creating an IdP for the pool. To disable a native username + password user, the ProviderName value must be Cognito and the ProviderAttributeName must be Cognito_Subject, with the ProviderAttributeValue being the name that is used in the user pool for the user. The ProviderAttributeName must always be Cognito_Subject for social identity providers. The ProviderAttributeValue must always be the exact subject that was used when the user was originally linked as a source user. For de-linking a SAML identity, there are two scenarios. If the linked identity has not yet been used to sign-in, the ProviderAttributeName and ProviderAttributeValue must be the same values that were used for the SourceUser when the identities were originally linked in the AdminLinkProviderForUser call. (If the linking was done with ProviderAttributeName set to Cognito_Subject, the same applies here). However, if the user has already signed in, the ProviderAttributeName must be Cognito_Subject and ProviderAttributeValue must be the subject of the SAML assertion. - */ - adminDisableProviderForUser(callback?: (err: AWSError, data: CognitoIdentityServiceProvider.Types.AdminDisableProviderForUserResponse) => void): Request; - /** - * Disables the specified user as an administrator. Works on any user. Requires developer credentials. - */ - adminDisableUser(params: CognitoIdentityServiceProvider.Types.AdminDisableUserRequest, callback?: (err: AWSError, data: CognitoIdentityServiceProvider.Types.AdminDisableUserResponse) => void): Request; - /** - * Disables the specified user as an administrator. Works on any user. Requires developer credentials. - */ - adminDisableUser(callback?: (err: AWSError, data: CognitoIdentityServiceProvider.Types.AdminDisableUserResponse) => void): Request; - /** - * Enables the specified user as an administrator. Works on any user. Requires developer credentials. - */ - adminEnableUser(params: CognitoIdentityServiceProvider.Types.AdminEnableUserRequest, callback?: (err: AWSError, data: CognitoIdentityServiceProvider.Types.AdminEnableUserResponse) => void): Request; - /** - * Enables the specified user as an administrator. Works on any user. Requires developer credentials. - */ - adminEnableUser(callback?: (err: AWSError, data: CognitoIdentityServiceProvider.Types.AdminEnableUserResponse) => void): Request; - /** - * Forgets the device, as an administrator. Requires developer credentials. - */ - adminForgetDevice(params: CognitoIdentityServiceProvider.Types.AdminForgetDeviceRequest, callback?: (err: AWSError, data: {}) => void): Request<{}, AWSError>; - /** - * Forgets the device, as an administrator. Requires developer credentials. - */ - adminForgetDevice(callback?: (err: AWSError, data: {}) => void): Request<{}, AWSError>; - /** - * Gets the device, as an administrator. Requires developer credentials. - */ - adminGetDevice(params: CognitoIdentityServiceProvider.Types.AdminGetDeviceRequest, callback?: (err: AWSError, data: CognitoIdentityServiceProvider.Types.AdminGetDeviceResponse) => void): Request; - /** - * Gets the device, as an administrator. Requires developer credentials. - */ - adminGetDevice(callback?: (err: AWSError, data: CognitoIdentityServiceProvider.Types.AdminGetDeviceResponse) => void): Request; - /** - * Gets the specified user by user name in a user pool as an administrator. Works on any user. Requires developer credentials. - */ - adminGetUser(params: CognitoIdentityServiceProvider.Types.AdminGetUserRequest, callback?: (err: AWSError, data: CognitoIdentityServiceProvider.Types.AdminGetUserResponse) => void): Request; - /** - * Gets the specified user by user name in a user pool as an administrator. Works on any user. Requires developer credentials. - */ - adminGetUser(callback?: (err: AWSError, data: CognitoIdentityServiceProvider.Types.AdminGetUserResponse) => void): Request; - /** - * Initiates the authentication flow, as an administrator. Requires developer credentials. - */ - adminInitiateAuth(params: CognitoIdentityServiceProvider.Types.AdminInitiateAuthRequest, callback?: (err: AWSError, data: CognitoIdentityServiceProvider.Types.AdminInitiateAuthResponse) => void): Request; - /** - * Initiates the authentication flow, as an administrator. Requires developer credentials. - */ - adminInitiateAuth(callback?: (err: AWSError, data: CognitoIdentityServiceProvider.Types.AdminInitiateAuthResponse) => void): Request; - /** - * Links an existing user account in a user pool (DestinationUser) to an identity from an external identity provider (SourceUser) based on a specified attribute name and value from the external identity provider. This allows you to create a link from the existing user account to an external federated user identity that has not yet been used to sign in, so that the federated user identity can be used to sign in as the existing user account. For example, if there is an existing user with a username and password, this API links that user to a federated user identity, so that when the federated user identity is used, the user signs in as the existing user account. Because this API allows a user with an external federated identity to sign in as an existing user in the user pool, it is critical that it only be used with external identity providers and provider attributes that have been trusted by the application owner. See also AdminDisableProviderForUser. This action is enabled only for admin access and requires developer credentials. - */ - adminLinkProviderForUser(params: CognitoIdentityServiceProvider.Types.AdminLinkProviderForUserRequest, callback?: (err: AWSError, data: CognitoIdentityServiceProvider.Types.AdminLinkProviderForUserResponse) => void): Request; - /** - * Links an existing user account in a user pool (DestinationUser) to an identity from an external identity provider (SourceUser) based on a specified attribute name and value from the external identity provider. This allows you to create a link from the existing user account to an external federated user identity that has not yet been used to sign in, so that the federated user identity can be used to sign in as the existing user account. For example, if there is an existing user with a username and password, this API links that user to a federated user identity, so that when the federated user identity is used, the user signs in as the existing user account. Because this API allows a user with an external federated identity to sign in as an existing user in the user pool, it is critical that it only be used with external identity providers and provider attributes that have been trusted by the application owner. See also AdminDisableProviderForUser. This action is enabled only for admin access and requires developer credentials. - */ - adminLinkProviderForUser(callback?: (err: AWSError, data: CognitoIdentityServiceProvider.Types.AdminLinkProviderForUserResponse) => void): Request; - /** - * Lists devices, as an administrator. Requires developer credentials. - */ - adminListDevices(params: CognitoIdentityServiceProvider.Types.AdminListDevicesRequest, callback?: (err: AWSError, data: CognitoIdentityServiceProvider.Types.AdminListDevicesResponse) => void): Request; - /** - * Lists devices, as an administrator. Requires developer credentials. - */ - adminListDevices(callback?: (err: AWSError, data: CognitoIdentityServiceProvider.Types.AdminListDevicesResponse) => void): Request; - /** - * Lists the groups that the user belongs to. Requires developer credentials. - */ - adminListGroupsForUser(params: CognitoIdentityServiceProvider.Types.AdminListGroupsForUserRequest, callback?: (err: AWSError, data: CognitoIdentityServiceProvider.Types.AdminListGroupsForUserResponse) => void): Request; - /** - * Lists the groups that the user belongs to. Requires developer credentials. - */ - adminListGroupsForUser(callback?: (err: AWSError, data: CognitoIdentityServiceProvider.Types.AdminListGroupsForUserResponse) => void): Request; - /** - * Removes the specified user from the specified group. Requires developer credentials. - */ - adminRemoveUserFromGroup(params: CognitoIdentityServiceProvider.Types.AdminRemoveUserFromGroupRequest, callback?: (err: AWSError, data: {}) => void): Request<{}, AWSError>; - /** - * Removes the specified user from the specified group. Requires developer credentials. - */ - adminRemoveUserFromGroup(callback?: (err: AWSError, data: {}) => void): Request<{}, AWSError>; - /** - * Resets the specified user's password in a user pool as an administrator. Works on any user. When a developer calls this API, the current password is invalidated, so it must be changed. If a user tries to sign in after the API is called, the app will get a PasswordResetRequiredException exception back and should direct the user down the flow to reset the password, which is the same as the forgot password flow. In addition, if the user pool has phone verification selected and a verified phone number exists for the user, or if email verification is selected and a verified email exists for the user, calling this API will also result in sending a message to the end user with the code to change their password. Requires developer credentials. - */ - adminResetUserPassword(params: CognitoIdentityServiceProvider.Types.AdminResetUserPasswordRequest, callback?: (err: AWSError, data: CognitoIdentityServiceProvider.Types.AdminResetUserPasswordResponse) => void): Request; - /** - * Resets the specified user's password in a user pool as an administrator. Works on any user. When a developer calls this API, the current password is invalidated, so it must be changed. If a user tries to sign in after the API is called, the app will get a PasswordResetRequiredException exception back and should direct the user down the flow to reset the password, which is the same as the forgot password flow. In addition, if the user pool has phone verification selected and a verified phone number exists for the user, or if email verification is selected and a verified email exists for the user, calling this API will also result in sending a message to the end user with the code to change their password. Requires developer credentials. - */ - adminResetUserPassword(callback?: (err: AWSError, data: CognitoIdentityServiceProvider.Types.AdminResetUserPasswordResponse) => void): Request; - /** - * Responds to an authentication challenge, as an administrator. Requires developer credentials. - */ - adminRespondToAuthChallenge(params: CognitoIdentityServiceProvider.Types.AdminRespondToAuthChallengeRequest, callback?: (err: AWSError, data: CognitoIdentityServiceProvider.Types.AdminRespondToAuthChallengeResponse) => void): Request; - /** - * Responds to an authentication challenge, as an administrator. Requires developer credentials. - */ - adminRespondToAuthChallenge(callback?: (err: AWSError, data: CognitoIdentityServiceProvider.Types.AdminRespondToAuthChallengeResponse) => void): Request; - /** - * Sets all the user settings for a specified user name. Works on any user. Requires developer credentials. - */ - adminSetUserSettings(params: CognitoIdentityServiceProvider.Types.AdminSetUserSettingsRequest, callback?: (err: AWSError, data: CognitoIdentityServiceProvider.Types.AdminSetUserSettingsResponse) => void): Request; - /** - * Sets all the user settings for a specified user name. Works on any user. Requires developer credentials. - */ - adminSetUserSettings(callback?: (err: AWSError, data: CognitoIdentityServiceProvider.Types.AdminSetUserSettingsResponse) => void): Request; - /** - * Updates the device status as an administrator. Requires developer credentials. - */ - adminUpdateDeviceStatus(params: CognitoIdentityServiceProvider.Types.AdminUpdateDeviceStatusRequest, callback?: (err: AWSError, data: CognitoIdentityServiceProvider.Types.AdminUpdateDeviceStatusResponse) => void): Request; - /** - * Updates the device status as an administrator. Requires developer credentials. - */ - adminUpdateDeviceStatus(callback?: (err: AWSError, data: CognitoIdentityServiceProvider.Types.AdminUpdateDeviceStatusResponse) => void): Request; - /** - * Updates the specified user's attributes, including developer attributes, as an administrator. Works on any user. For custom attributes, you must prepend the custom: prefix to the attribute name. In addition to updating user attributes, this API can also be used to mark phone and email as verified. Requires developer credentials. - */ - adminUpdateUserAttributes(params: CognitoIdentityServiceProvider.Types.AdminUpdateUserAttributesRequest, callback?: (err: AWSError, data: CognitoIdentityServiceProvider.Types.AdminUpdateUserAttributesResponse) => void): Request; - /** - * Updates the specified user's attributes, including developer attributes, as an administrator. Works on any user. For custom attributes, you must prepend the custom: prefix to the attribute name. In addition to updating user attributes, this API can also be used to mark phone and email as verified. Requires developer credentials. - */ - adminUpdateUserAttributes(callback?: (err: AWSError, data: CognitoIdentityServiceProvider.Types.AdminUpdateUserAttributesResponse) => void): Request; - /** - * Signs out users from all devices, as an administrator. Requires developer credentials. - */ - adminUserGlobalSignOut(params: CognitoIdentityServiceProvider.Types.AdminUserGlobalSignOutRequest, callback?: (err: AWSError, data: CognitoIdentityServiceProvider.Types.AdminUserGlobalSignOutResponse) => void): Request; - /** - * Signs out users from all devices, as an administrator. Requires developer credentials. - */ - adminUserGlobalSignOut(callback?: (err: AWSError, data: CognitoIdentityServiceProvider.Types.AdminUserGlobalSignOutResponse) => void): Request; - /** - * Changes the password for a specified user in a user pool. - */ - changePassword(params: CognitoIdentityServiceProvider.Types.ChangePasswordRequest, callback?: (err: AWSError, data: CognitoIdentityServiceProvider.Types.ChangePasswordResponse) => void): Request; - /** - * Changes the password for a specified user in a user pool. - */ - changePassword(callback?: (err: AWSError, data: CognitoIdentityServiceProvider.Types.ChangePasswordResponse) => void): Request; - /** - * Confirms tracking of the device. This API call is the call that begins device tracking. - */ - confirmDevice(params: CognitoIdentityServiceProvider.Types.ConfirmDeviceRequest, callback?: (err: AWSError, data: CognitoIdentityServiceProvider.Types.ConfirmDeviceResponse) => void): Request; - /** - * Confirms tracking of the device. This API call is the call that begins device tracking. - */ - confirmDevice(callback?: (err: AWSError, data: CognitoIdentityServiceProvider.Types.ConfirmDeviceResponse) => void): Request; - /** - * Allows a user to enter a confirmation code to reset a forgotten password. - */ - confirmForgotPassword(params: CognitoIdentityServiceProvider.Types.ConfirmForgotPasswordRequest, callback?: (err: AWSError, data: CognitoIdentityServiceProvider.Types.ConfirmForgotPasswordResponse) => void): Request; - /** - * Allows a user to enter a confirmation code to reset a forgotten password. - */ - confirmForgotPassword(callback?: (err: AWSError, data: CognitoIdentityServiceProvider.Types.ConfirmForgotPasswordResponse) => void): Request; - /** - * Confirms registration of a user and handles the existing alias from a previous user. - */ - confirmSignUp(params: CognitoIdentityServiceProvider.Types.ConfirmSignUpRequest, callback?: (err: AWSError, data: CognitoIdentityServiceProvider.Types.ConfirmSignUpResponse) => void): Request; - /** - * Confirms registration of a user and handles the existing alias from a previous user. - */ - confirmSignUp(callback?: (err: AWSError, data: CognitoIdentityServiceProvider.Types.ConfirmSignUpResponse) => void): Request; - /** - * Creates a new group in the specified user pool. Requires developer credentials. - */ - createGroup(params: CognitoIdentityServiceProvider.Types.CreateGroupRequest, callback?: (err: AWSError, data: CognitoIdentityServiceProvider.Types.CreateGroupResponse) => void): Request; - /** - * Creates a new group in the specified user pool. Requires developer credentials. - */ - createGroup(callback?: (err: AWSError, data: CognitoIdentityServiceProvider.Types.CreateGroupResponse) => void): Request; - /** - * Creates an identity provider for a user pool. - */ - createIdentityProvider(params: CognitoIdentityServiceProvider.Types.CreateIdentityProviderRequest, callback?: (err: AWSError, data: CognitoIdentityServiceProvider.Types.CreateIdentityProviderResponse) => void): Request; - /** - * Creates an identity provider for a user pool. - */ - createIdentityProvider(callback?: (err: AWSError, data: CognitoIdentityServiceProvider.Types.CreateIdentityProviderResponse) => void): Request; - /** - * Creates a new OAuth2.0 resource server and defines custom scopes in it. - */ - createResourceServer(params: CognitoIdentityServiceProvider.Types.CreateResourceServerRequest, callback?: (err: AWSError, data: CognitoIdentityServiceProvider.Types.CreateResourceServerResponse) => void): Request; - /** - * Creates a new OAuth2.0 resource server and defines custom scopes in it. - */ - createResourceServer(callback?: (err: AWSError, data: CognitoIdentityServiceProvider.Types.CreateResourceServerResponse) => void): Request; - /** - * Creates the user import job. - */ - createUserImportJob(params: CognitoIdentityServiceProvider.Types.CreateUserImportJobRequest, callback?: (err: AWSError, data: CognitoIdentityServiceProvider.Types.CreateUserImportJobResponse) => void): Request; - /** - * Creates the user import job. - */ - createUserImportJob(callback?: (err: AWSError, data: CognitoIdentityServiceProvider.Types.CreateUserImportJobResponse) => void): Request; - /** - * Creates a new Amazon Cognito user pool and sets the password policy for the pool. - */ - createUserPool(params: CognitoIdentityServiceProvider.Types.CreateUserPoolRequest, callback?: (err: AWSError, data: CognitoIdentityServiceProvider.Types.CreateUserPoolResponse) => void): Request; - /** - * Creates a new Amazon Cognito user pool and sets the password policy for the pool. - */ - createUserPool(callback?: (err: AWSError, data: CognitoIdentityServiceProvider.Types.CreateUserPoolResponse) => void): Request; - /** - * Creates the user pool client. - */ - createUserPoolClient(params: CognitoIdentityServiceProvider.Types.CreateUserPoolClientRequest, callback?: (err: AWSError, data: CognitoIdentityServiceProvider.Types.CreateUserPoolClientResponse) => void): Request; - /** - * Creates the user pool client. - */ - createUserPoolClient(callback?: (err: AWSError, data: CognitoIdentityServiceProvider.Types.CreateUserPoolClientResponse) => void): Request; - /** - * Creates a new domain for a user pool. - */ - createUserPoolDomain(params: CognitoIdentityServiceProvider.Types.CreateUserPoolDomainRequest, callback?: (err: AWSError, data: CognitoIdentityServiceProvider.Types.CreateUserPoolDomainResponse) => void): Request; - /** - * Creates a new domain for a user pool. - */ - createUserPoolDomain(callback?: (err: AWSError, data: CognitoIdentityServiceProvider.Types.CreateUserPoolDomainResponse) => void): Request; - /** - * Deletes a group. Currently only groups with no members can be deleted. Requires developer credentials. - */ - deleteGroup(params: CognitoIdentityServiceProvider.Types.DeleteGroupRequest, callback?: (err: AWSError, data: {}) => void): Request<{}, AWSError>; - /** - * Deletes a group. Currently only groups with no members can be deleted. Requires developer credentials. - */ - deleteGroup(callback?: (err: AWSError, data: {}) => void): Request<{}, AWSError>; - /** - * Deletes an identity provider for a user pool. - */ - deleteIdentityProvider(params: CognitoIdentityServiceProvider.Types.DeleteIdentityProviderRequest, callback?: (err: AWSError, data: {}) => void): Request<{}, AWSError>; - /** - * Deletes an identity provider for a user pool. - */ - deleteIdentityProvider(callback?: (err: AWSError, data: {}) => void): Request<{}, AWSError>; - /** - * Deletes a resource server. - */ - deleteResourceServer(params: CognitoIdentityServiceProvider.Types.DeleteResourceServerRequest, callback?: (err: AWSError, data: {}) => void): Request<{}, AWSError>; - /** - * Deletes a resource server. - */ - deleteResourceServer(callback?: (err: AWSError, data: {}) => void): Request<{}, AWSError>; - /** - * Allows a user to delete himself or herself. - */ - deleteUser(params: CognitoIdentityServiceProvider.Types.DeleteUserRequest, callback?: (err: AWSError, data: {}) => void): Request<{}, AWSError>; - /** - * Allows a user to delete himself or herself. - */ - deleteUser(callback?: (err: AWSError, data: {}) => void): Request<{}, AWSError>; - /** - * Deletes the attributes for a user. - */ - deleteUserAttributes(params: CognitoIdentityServiceProvider.Types.DeleteUserAttributesRequest, callback?: (err: AWSError, data: CognitoIdentityServiceProvider.Types.DeleteUserAttributesResponse) => void): Request; - /** - * Deletes the attributes for a user. - */ - deleteUserAttributes(callback?: (err: AWSError, data: CognitoIdentityServiceProvider.Types.DeleteUserAttributesResponse) => void): Request; - /** - * Deletes the specified Amazon Cognito user pool. - */ - deleteUserPool(params: CognitoIdentityServiceProvider.Types.DeleteUserPoolRequest, callback?: (err: AWSError, data: {}) => void): Request<{}, AWSError>; - /** - * Deletes the specified Amazon Cognito user pool. - */ - deleteUserPool(callback?: (err: AWSError, data: {}) => void): Request<{}, AWSError>; - /** - * Allows the developer to delete the user pool client. - */ - deleteUserPoolClient(params: CognitoIdentityServiceProvider.Types.DeleteUserPoolClientRequest, callback?: (err: AWSError, data: {}) => void): Request<{}, AWSError>; - /** - * Allows the developer to delete the user pool client. - */ - deleteUserPoolClient(callback?: (err: AWSError, data: {}) => void): Request<{}, AWSError>; - /** - * Deletes a domain for a user pool. - */ - deleteUserPoolDomain(params: CognitoIdentityServiceProvider.Types.DeleteUserPoolDomainRequest, callback?: (err: AWSError, data: CognitoIdentityServiceProvider.Types.DeleteUserPoolDomainResponse) => void): Request; - /** - * Deletes a domain for a user pool. - */ - deleteUserPoolDomain(callback?: (err: AWSError, data: CognitoIdentityServiceProvider.Types.DeleteUserPoolDomainResponse) => void): Request; - /** - * Gets information about a specific identity provider. - */ - describeIdentityProvider(params: CognitoIdentityServiceProvider.Types.DescribeIdentityProviderRequest, callback?: (err: AWSError, data: CognitoIdentityServiceProvider.Types.DescribeIdentityProviderResponse) => void): Request; - /** - * Gets information about a specific identity provider. - */ - describeIdentityProvider(callback?: (err: AWSError, data: CognitoIdentityServiceProvider.Types.DescribeIdentityProviderResponse) => void): Request; - /** - * Describes a resource server. - */ - describeResourceServer(params: CognitoIdentityServiceProvider.Types.DescribeResourceServerRequest, callback?: (err: AWSError, data: CognitoIdentityServiceProvider.Types.DescribeResourceServerResponse) => void): Request; - /** - * Describes a resource server. - */ - describeResourceServer(callback?: (err: AWSError, data: CognitoIdentityServiceProvider.Types.DescribeResourceServerResponse) => void): Request; - /** - * Describes the user import job. - */ - describeUserImportJob(params: CognitoIdentityServiceProvider.Types.DescribeUserImportJobRequest, callback?: (err: AWSError, data: CognitoIdentityServiceProvider.Types.DescribeUserImportJobResponse) => void): Request; - /** - * Describes the user import job. - */ - describeUserImportJob(callback?: (err: AWSError, data: CognitoIdentityServiceProvider.Types.DescribeUserImportJobResponse) => void): Request; - /** - * Returns the configuration information and metadata of the specified user pool. - */ - describeUserPool(params: CognitoIdentityServiceProvider.Types.DescribeUserPoolRequest, callback?: (err: AWSError, data: CognitoIdentityServiceProvider.Types.DescribeUserPoolResponse) => void): Request; - /** - * Returns the configuration information and metadata of the specified user pool. - */ - describeUserPool(callback?: (err: AWSError, data: CognitoIdentityServiceProvider.Types.DescribeUserPoolResponse) => void): Request; - /** - * Client method for returning the configuration information and metadata of the specified user pool client. - */ - describeUserPoolClient(params: CognitoIdentityServiceProvider.Types.DescribeUserPoolClientRequest, callback?: (err: AWSError, data: CognitoIdentityServiceProvider.Types.DescribeUserPoolClientResponse) => void): Request; - /** - * Client method for returning the configuration information and metadata of the specified user pool client. - */ - describeUserPoolClient(callback?: (err: AWSError, data: CognitoIdentityServiceProvider.Types.DescribeUserPoolClientResponse) => void): Request; - /** - * Gets information about a domain. - */ - describeUserPoolDomain(params: CognitoIdentityServiceProvider.Types.DescribeUserPoolDomainRequest, callback?: (err: AWSError, data: CognitoIdentityServiceProvider.Types.DescribeUserPoolDomainResponse) => void): Request; - /** - * Gets information about a domain. - */ - describeUserPoolDomain(callback?: (err: AWSError, data: CognitoIdentityServiceProvider.Types.DescribeUserPoolDomainResponse) => void): Request; - /** - * Forgets the specified device. - */ - forgetDevice(params: CognitoIdentityServiceProvider.Types.ForgetDeviceRequest, callback?: (err: AWSError, data: {}) => void): Request<{}, AWSError>; - /** - * Forgets the specified device. - */ - forgetDevice(callback?: (err: AWSError, data: {}) => void): Request<{}, AWSError>; - /** - * Calling this API causes a message to be sent to the end user with a confirmation code that is required to change the user's password. For the Username parameter, you can use the username or user alias. If a verified phone number exists for the user, the confirmation code is sent to the phone number. Otherwise, if a verified email exists, the confirmation code is sent to the email. If neither a verified phone number nor a verified email exists, InvalidParameterException is thrown. To use the confirmation code for resetting the password, call ConfirmForgotPassword. - */ - forgotPassword(params: CognitoIdentityServiceProvider.Types.ForgotPasswordRequest, callback?: (err: AWSError, data: CognitoIdentityServiceProvider.Types.ForgotPasswordResponse) => void): Request; - /** - * Calling this API causes a message to be sent to the end user with a confirmation code that is required to change the user's password. For the Username parameter, you can use the username or user alias. If a verified phone number exists for the user, the confirmation code is sent to the phone number. Otherwise, if a verified email exists, the confirmation code is sent to the email. If neither a verified phone number nor a verified email exists, InvalidParameterException is thrown. To use the confirmation code for resetting the password, call ConfirmForgotPassword. - */ - forgotPassword(callback?: (err: AWSError, data: CognitoIdentityServiceProvider.Types.ForgotPasswordResponse) => void): Request; - /** - * Gets the header information for the .csv file to be used as input for the user import job. - */ - getCSVHeader(params: CognitoIdentityServiceProvider.Types.GetCSVHeaderRequest, callback?: (err: AWSError, data: CognitoIdentityServiceProvider.Types.GetCSVHeaderResponse) => void): Request; - /** - * Gets the header information for the .csv file to be used as input for the user import job. - */ - getCSVHeader(callback?: (err: AWSError, data: CognitoIdentityServiceProvider.Types.GetCSVHeaderResponse) => void): Request; - /** - * Gets the device. - */ - getDevice(params: CognitoIdentityServiceProvider.Types.GetDeviceRequest, callback?: (err: AWSError, data: CognitoIdentityServiceProvider.Types.GetDeviceResponse) => void): Request; - /** - * Gets the device. - */ - getDevice(callback?: (err: AWSError, data: CognitoIdentityServiceProvider.Types.GetDeviceResponse) => void): Request; - /** - * Gets a group. Requires developer credentials. - */ - getGroup(params: CognitoIdentityServiceProvider.Types.GetGroupRequest, callback?: (err: AWSError, data: CognitoIdentityServiceProvider.Types.GetGroupResponse) => void): Request; - /** - * Gets a group. Requires developer credentials. - */ - getGroup(callback?: (err: AWSError, data: CognitoIdentityServiceProvider.Types.GetGroupResponse) => void): Request; - /** - * Gets the specified identity provider. - */ - getIdentityProviderByIdentifier(params: CognitoIdentityServiceProvider.Types.GetIdentityProviderByIdentifierRequest, callback?: (err: AWSError, data: CognitoIdentityServiceProvider.Types.GetIdentityProviderByIdentifierResponse) => void): Request; - /** - * Gets the specified identity provider. - */ - getIdentityProviderByIdentifier(callback?: (err: AWSError, data: CognitoIdentityServiceProvider.Types.GetIdentityProviderByIdentifierResponse) => void): Request; - /** - * Gets the UI Customization information for a particular app client's app UI, if there is something set. If nothing is set for the particular client, but there is an existing pool level customization (app clientId will be ALL), then that is returned. If nothing is present, then an empty shape is returned. - */ - getUICustomization(params: CognitoIdentityServiceProvider.Types.GetUICustomizationRequest, callback?: (err: AWSError, data: CognitoIdentityServiceProvider.Types.GetUICustomizationResponse) => void): Request; - /** - * Gets the UI Customization information for a particular app client's app UI, if there is something set. If nothing is set for the particular client, but there is an existing pool level customization (app clientId will be ALL), then that is returned. If nothing is present, then an empty shape is returned. - */ - getUICustomization(callback?: (err: AWSError, data: CognitoIdentityServiceProvider.Types.GetUICustomizationResponse) => void): Request; - /** - * Gets the user attributes and metadata for a user. - */ - getUser(params: CognitoIdentityServiceProvider.Types.GetUserRequest, callback?: (err: AWSError, data: CognitoIdentityServiceProvider.Types.GetUserResponse) => void): Request; - /** - * Gets the user attributes and metadata for a user. - */ - getUser(callback?: (err: AWSError, data: CognitoIdentityServiceProvider.Types.GetUserResponse) => void): Request; - /** - * Gets the user attribute verification code for the specified attribute name. - */ - getUserAttributeVerificationCode(params: CognitoIdentityServiceProvider.Types.GetUserAttributeVerificationCodeRequest, callback?: (err: AWSError, data: CognitoIdentityServiceProvider.Types.GetUserAttributeVerificationCodeResponse) => void): Request; - /** - * Gets the user attribute verification code for the specified attribute name. - */ - getUserAttributeVerificationCode(callback?: (err: AWSError, data: CognitoIdentityServiceProvider.Types.GetUserAttributeVerificationCodeResponse) => void): Request; - /** - * Signs out users from all devices. - */ - globalSignOut(params: CognitoIdentityServiceProvider.Types.GlobalSignOutRequest, callback?: (err: AWSError, data: CognitoIdentityServiceProvider.Types.GlobalSignOutResponse) => void): Request; - /** - * Signs out users from all devices. - */ - globalSignOut(callback?: (err: AWSError, data: CognitoIdentityServiceProvider.Types.GlobalSignOutResponse) => void): Request; - /** - * Initiates the authentication flow. - */ - initiateAuth(params: CognitoIdentityServiceProvider.Types.InitiateAuthRequest, callback?: (err: AWSError, data: CognitoIdentityServiceProvider.Types.InitiateAuthResponse) => void): Request; - /** - * Initiates the authentication flow. - */ - initiateAuth(callback?: (err: AWSError, data: CognitoIdentityServiceProvider.Types.InitiateAuthResponse) => void): Request; - /** - * Lists the devices. - */ - listDevices(params: CognitoIdentityServiceProvider.Types.ListDevicesRequest, callback?: (err: AWSError, data: CognitoIdentityServiceProvider.Types.ListDevicesResponse) => void): Request; - /** - * Lists the devices. - */ - listDevices(callback?: (err: AWSError, data: CognitoIdentityServiceProvider.Types.ListDevicesResponse) => void): Request; - /** - * Lists the groups associated with a user pool. Requires developer credentials. - */ - listGroups(params: CognitoIdentityServiceProvider.Types.ListGroupsRequest, callback?: (err: AWSError, data: CognitoIdentityServiceProvider.Types.ListGroupsResponse) => void): Request; - /** - * Lists the groups associated with a user pool. Requires developer credentials. - */ - listGroups(callback?: (err: AWSError, data: CognitoIdentityServiceProvider.Types.ListGroupsResponse) => void): Request; - /** - * Lists information about all identity providers for a user pool. - */ - listIdentityProviders(params: CognitoIdentityServiceProvider.Types.ListIdentityProvidersRequest, callback?: (err: AWSError, data: CognitoIdentityServiceProvider.Types.ListIdentityProvidersResponse) => void): Request; - /** - * Lists information about all identity providers for a user pool. - */ - listIdentityProviders(callback?: (err: AWSError, data: CognitoIdentityServiceProvider.Types.ListIdentityProvidersResponse) => void): Request; - /** - * Lists the resource servers for a user pool. - */ - listResourceServers(params: CognitoIdentityServiceProvider.Types.ListResourceServersRequest, callback?: (err: AWSError, data: CognitoIdentityServiceProvider.Types.ListResourceServersResponse) => void): Request; - /** - * Lists the resource servers for a user pool. - */ - listResourceServers(callback?: (err: AWSError, data: CognitoIdentityServiceProvider.Types.ListResourceServersResponse) => void): Request; - /** - * Lists the user import jobs. - */ - listUserImportJobs(params: CognitoIdentityServiceProvider.Types.ListUserImportJobsRequest, callback?: (err: AWSError, data: CognitoIdentityServiceProvider.Types.ListUserImportJobsResponse) => void): Request; - /** - * Lists the user import jobs. - */ - listUserImportJobs(callback?: (err: AWSError, data: CognitoIdentityServiceProvider.Types.ListUserImportJobsResponse) => void): Request; - /** - * Lists the clients that have been created for the specified user pool. - */ - listUserPoolClients(params: CognitoIdentityServiceProvider.Types.ListUserPoolClientsRequest, callback?: (err: AWSError, data: CognitoIdentityServiceProvider.Types.ListUserPoolClientsResponse) => void): Request; - /** - * Lists the clients that have been created for the specified user pool. - */ - listUserPoolClients(callback?: (err: AWSError, data: CognitoIdentityServiceProvider.Types.ListUserPoolClientsResponse) => void): Request; - /** - * Lists the user pools associated with an AWS account. - */ - listUserPools(params: CognitoIdentityServiceProvider.Types.ListUserPoolsRequest, callback?: (err: AWSError, data: CognitoIdentityServiceProvider.Types.ListUserPoolsResponse) => void): Request; - /** - * Lists the user pools associated with an AWS account. - */ - listUserPools(callback?: (err: AWSError, data: CognitoIdentityServiceProvider.Types.ListUserPoolsResponse) => void): Request; - /** - * Lists the users in the Amazon Cognito user pool. - */ - listUsers(params: CognitoIdentityServiceProvider.Types.ListUsersRequest, callback?: (err: AWSError, data: CognitoIdentityServiceProvider.Types.ListUsersResponse) => void): Request; - /** - * Lists the users in the Amazon Cognito user pool. - */ - listUsers(callback?: (err: AWSError, data: CognitoIdentityServiceProvider.Types.ListUsersResponse) => void): Request; - /** - * Lists the users in the specified group. Requires developer credentials. - */ - listUsersInGroup(params: CognitoIdentityServiceProvider.Types.ListUsersInGroupRequest, callback?: (err: AWSError, data: CognitoIdentityServiceProvider.Types.ListUsersInGroupResponse) => void): Request; - /** - * Lists the users in the specified group. Requires developer credentials. - */ - listUsersInGroup(callback?: (err: AWSError, data: CognitoIdentityServiceProvider.Types.ListUsersInGroupResponse) => void): Request; - /** - * Resends the confirmation (for confirmation of registration) to a specific user in the user pool. - */ - resendConfirmationCode(params: CognitoIdentityServiceProvider.Types.ResendConfirmationCodeRequest, callback?: (err: AWSError, data: CognitoIdentityServiceProvider.Types.ResendConfirmationCodeResponse) => void): Request; - /** - * Resends the confirmation (for confirmation of registration) to a specific user in the user pool. - */ - resendConfirmationCode(callback?: (err: AWSError, data: CognitoIdentityServiceProvider.Types.ResendConfirmationCodeResponse) => void): Request; - /** - * Responds to the authentication challenge. - */ - respondToAuthChallenge(params: CognitoIdentityServiceProvider.Types.RespondToAuthChallengeRequest, callback?: (err: AWSError, data: CognitoIdentityServiceProvider.Types.RespondToAuthChallengeResponse) => void): Request; - /** - * Responds to the authentication challenge. - */ - respondToAuthChallenge(callback?: (err: AWSError, data: CognitoIdentityServiceProvider.Types.RespondToAuthChallengeResponse) => void): Request; - /** - * Sets the UI customization information for a user pool's built-in app UI. You can specify app UI customization settings for a single client (with a specific clientId) or for all clients (by setting the clientId to ALL). If you specify ALL, the default configuration will be used for every client that has no UI customization set previously. If you specify UI customization settings for a particular client, it will no longer fall back to the ALL configuration. To use this API, your user pool must have a domain associated with it. Otherwise, there is no place to host the app's pages, and the service will throw an error. - */ - setUICustomization(params: CognitoIdentityServiceProvider.Types.SetUICustomizationRequest, callback?: (err: AWSError, data: CognitoIdentityServiceProvider.Types.SetUICustomizationResponse) => void): Request; - /** - * Sets the UI customization information for a user pool's built-in app UI. You can specify app UI customization settings for a single client (with a specific clientId) or for all clients (by setting the clientId to ALL). If you specify ALL, the default configuration will be used for every client that has no UI customization set previously. If you specify UI customization settings for a particular client, it will no longer fall back to the ALL configuration. To use this API, your user pool must have a domain associated with it. Otherwise, there is no place to host the app's pages, and the service will throw an error. - */ - setUICustomization(callback?: (err: AWSError, data: CognitoIdentityServiceProvider.Types.SetUICustomizationResponse) => void): Request; - /** - * Sets the user settings like multi-factor authentication (MFA). If MFA is to be removed for a particular attribute pass the attribute with code delivery as null. If null list is passed, all MFA options are removed. - */ - setUserSettings(params: CognitoIdentityServiceProvider.Types.SetUserSettingsRequest, callback?: (err: AWSError, data: CognitoIdentityServiceProvider.Types.SetUserSettingsResponse) => void): Request; - /** - * Sets the user settings like multi-factor authentication (MFA). If MFA is to be removed for a particular attribute pass the attribute with code delivery as null. If null list is passed, all MFA options are removed. - */ - setUserSettings(callback?: (err: AWSError, data: CognitoIdentityServiceProvider.Types.SetUserSettingsResponse) => void): Request; - /** - * Registers the user in the specified user pool and creates a user name, password, and user attributes. - */ - signUp(params: CognitoIdentityServiceProvider.Types.SignUpRequest, callback?: (err: AWSError, data: CognitoIdentityServiceProvider.Types.SignUpResponse) => void): Request; - /** - * Registers the user in the specified user pool and creates a user name, password, and user attributes. - */ - signUp(callback?: (err: AWSError, data: CognitoIdentityServiceProvider.Types.SignUpResponse) => void): Request; - /** - * Starts the user import. - */ - startUserImportJob(params: CognitoIdentityServiceProvider.Types.StartUserImportJobRequest, callback?: (err: AWSError, data: CognitoIdentityServiceProvider.Types.StartUserImportJobResponse) => void): Request; - /** - * Starts the user import. - */ - startUserImportJob(callback?: (err: AWSError, data: CognitoIdentityServiceProvider.Types.StartUserImportJobResponse) => void): Request; - /** - * Stops the user import job. - */ - stopUserImportJob(params: CognitoIdentityServiceProvider.Types.StopUserImportJobRequest, callback?: (err: AWSError, data: CognitoIdentityServiceProvider.Types.StopUserImportJobResponse) => void): Request; - /** - * Stops the user import job. - */ - stopUserImportJob(callback?: (err: AWSError, data: CognitoIdentityServiceProvider.Types.StopUserImportJobResponse) => void): Request; - /** - * Updates the device status. - */ - updateDeviceStatus(params: CognitoIdentityServiceProvider.Types.UpdateDeviceStatusRequest, callback?: (err: AWSError, data: CognitoIdentityServiceProvider.Types.UpdateDeviceStatusResponse) => void): Request; - /** - * Updates the device status. - */ - updateDeviceStatus(callback?: (err: AWSError, data: CognitoIdentityServiceProvider.Types.UpdateDeviceStatusResponse) => void): Request; - /** - * Updates the specified group with the specified attributes. Requires developer credentials. - */ - updateGroup(params: CognitoIdentityServiceProvider.Types.UpdateGroupRequest, callback?: (err: AWSError, data: CognitoIdentityServiceProvider.Types.UpdateGroupResponse) => void): Request; - /** - * Updates the specified group with the specified attributes. Requires developer credentials. - */ - updateGroup(callback?: (err: AWSError, data: CognitoIdentityServiceProvider.Types.UpdateGroupResponse) => void): Request; - /** - * Updates identity provider information for a user pool. - */ - updateIdentityProvider(params: CognitoIdentityServiceProvider.Types.UpdateIdentityProviderRequest, callback?: (err: AWSError, data: CognitoIdentityServiceProvider.Types.UpdateIdentityProviderResponse) => void): Request; - /** - * Updates identity provider information for a user pool. - */ - updateIdentityProvider(callback?: (err: AWSError, data: CognitoIdentityServiceProvider.Types.UpdateIdentityProviderResponse) => void): Request; - /** - * Updates the name and scopes of resource server. All other fields are read-only. - */ - updateResourceServer(params: CognitoIdentityServiceProvider.Types.UpdateResourceServerRequest, callback?: (err: AWSError, data: CognitoIdentityServiceProvider.Types.UpdateResourceServerResponse) => void): Request; - /** - * Updates the name and scopes of resource server. All other fields are read-only. - */ - updateResourceServer(callback?: (err: AWSError, data: CognitoIdentityServiceProvider.Types.UpdateResourceServerResponse) => void): Request; - /** - * Allows a user to update a specific attribute (one at a time). - */ - updateUserAttributes(params: CognitoIdentityServiceProvider.Types.UpdateUserAttributesRequest, callback?: (err: AWSError, data: CognitoIdentityServiceProvider.Types.UpdateUserAttributesResponse) => void): Request; - /** - * Allows a user to update a specific attribute (one at a time). - */ - updateUserAttributes(callback?: (err: AWSError, data: CognitoIdentityServiceProvider.Types.UpdateUserAttributesResponse) => void): Request; - /** - * Updates the specified user pool with the specified attributes. - */ - updateUserPool(params: CognitoIdentityServiceProvider.Types.UpdateUserPoolRequest, callback?: (err: AWSError, data: CognitoIdentityServiceProvider.Types.UpdateUserPoolResponse) => void): Request; - /** - * Updates the specified user pool with the specified attributes. - */ - updateUserPool(callback?: (err: AWSError, data: CognitoIdentityServiceProvider.Types.UpdateUserPoolResponse) => void): Request; - /** - * Allows the developer to update the specified user pool client and password policy. - */ - updateUserPoolClient(params: CognitoIdentityServiceProvider.Types.UpdateUserPoolClientRequest, callback?: (err: AWSError, data: CognitoIdentityServiceProvider.Types.UpdateUserPoolClientResponse) => void): Request; - /** - * Allows the developer to update the specified user pool client and password policy. - */ - updateUserPoolClient(callback?: (err: AWSError, data: CognitoIdentityServiceProvider.Types.UpdateUserPoolClientResponse) => void): Request; - /** - * Verifies the specified user attributes in the user pool. - */ - verifyUserAttribute(params: CognitoIdentityServiceProvider.Types.VerifyUserAttributeRequest, callback?: (err: AWSError, data: CognitoIdentityServiceProvider.Types.VerifyUserAttributeResponse) => void): Request; - /** - * Verifies the specified user attributes in the user pool. - */ - verifyUserAttribute(callback?: (err: AWSError, data: CognitoIdentityServiceProvider.Types.VerifyUserAttributeResponse) => void): Request; -} -declare namespace CognitoIdentityServiceProvider { - export type AWSAccountIdType = string; - export interface AddCustomAttributesRequest { - /** - * The user pool ID for the user pool where you want to add custom attributes. - */ - UserPoolId: UserPoolIdType; - /** - * An array of custom attributes, such as Mutable and Name. - */ - CustomAttributes: CustomAttributesListType; - } - export interface AddCustomAttributesResponse { - } - export interface AdminAddUserToGroupRequest { - /** - * The user pool ID for the user pool. - */ - UserPoolId: UserPoolIdType; - /** - * The username for the user. - */ - Username: UsernameType; - /** - * The group name. - */ - GroupName: GroupNameType; - } - export interface AdminConfirmSignUpRequest { - /** - * The user pool ID for which you want to confirm user registration. - */ - UserPoolId: UserPoolIdType; - /** - * The user name for which you want to confirm user registration. - */ - Username: UsernameType; - } - export interface AdminConfirmSignUpResponse { - } - export interface AdminCreateUserConfigType { - /** - * Set to True if only the administrator is allowed to create user profiles. Set to False if users can sign themselves up via an app. - */ - AllowAdminCreateUserOnly?: BooleanType; - /** - * The user account expiration limit, in days, after which the account is no longer usable. To reset the account after that time limit, you must call AdminCreateUser again, specifying "RESEND" for the MessageAction parameter. The default value for this parameter is 7. - */ - UnusedAccountValidityDays?: AdminCreateUserUnusedAccountValidityDaysType; - /** - * The message template to be used for the welcome message to new users. - */ - InviteMessageTemplate?: MessageTemplateType; - } - export interface AdminCreateUserRequest { - /** - * The user pool ID for the user pool where the user will be created. - */ - UserPoolId: UserPoolIdType; - /** - * The username for the user. Must be unique within the user pool. Must be a UTF-8 string between 1 and 128 characters. After the user is created, the username cannot be changed. - */ - Username: UsernameType; - /** - * An array of name-value pairs that contain user attributes and attribute values to be set for the user to be created. You can create a user without specifying any attributes other than Username. However, any attributes that you specify as required (in CreateUserPool or in the Attributes tab of the console) must be supplied either by you (in your call to AdminCreateUser) or by the user (when he or she signs up in response to your welcome message). For custom attributes, you must prepend the custom: prefix to the attribute name. To send a message inviting the user to sign up, you must specify the user's email address or phone number. This can be done in your call to AdminCreateUser or in the Users tab of the Amazon Cognito console for managing your user pools. In your call to AdminCreateUser, you can set the email_verified attribute to True, and you can set the phone_number_verified attribute to True. (You can also do this by calling AdminUpdateUserAttributes.) email: The email address of the user to whom the message that contains the code and username will be sent. Required if the email_verified attribute is set to True, or if "EMAIL" is specified in the DesiredDeliveryMediums parameter. phone_number: The phone number of the user to whom the message that contains the code and username will be sent. Required if the phone_number_verified attribute is set to True, or if "SMS" is specified in the DesiredDeliveryMediums parameter. - */ - UserAttributes?: AttributeListType; - /** - * The user's validation data. This is an array of name-value pairs that contain user attributes and attribute values that you can use for custom validation, such as restricting the types of user accounts that can be registered. For example, you might choose to allow or disallow user sign-up based on the user's domain. To configure custom validation, you must create a Pre Sign-up Lambda trigger for the user pool as described in the Amazon Cognito Developer Guide. The Lambda trigger receives the validation data and uses it in the validation process. The user's validation data is not persisted. - */ - ValidationData?: AttributeListType; - /** - * The user's temporary password. This password must conform to the password policy that you specified when you created the user pool. The temporary password is valid only once. To complete the Admin Create User flow, the user must enter the temporary password in the sign-in page along with a new password to be used in all future sign-ins. This parameter is not required. If you do not specify a value, Amazon Cognito generates one for you. The temporary password can only be used until the user account expiration limit that you specified when you created the user pool. To reset the account after that time limit, you must call AdminCreateUser again, specifying "RESEND" for the MessageAction parameter. - */ - TemporaryPassword?: PasswordType; - /** - * This parameter is only used if the phone_number_verified or email_verified attribute is set to True. Otherwise, it is ignored. If this parameter is set to True and the phone number or email address specified in the UserAttributes parameter already exists as an alias with a different user, the API call will migrate the alias from the previous user to the newly created user. The previous user will no longer be able to log in using that alias. If this parameter is set to False, the API throws an AliasExistsException error if the alias already exists. The default value is False. - */ - ForceAliasCreation?: ForceAliasCreation; - /** - * Set to "RESEND" to resend the invitation message to a user that already exists and reset the expiration limit on the user's account. Set to "SUPPRESS" to suppress sending the message. Only one value can be specified. - */ - MessageAction?: MessageActionType; - /** - * Specify "EMAIL" if email will be used to send the welcome message. Specify "SMS" if the phone number will be used. The default value is "SMS". More than one value can be specified. - */ - DesiredDeliveryMediums?: DeliveryMediumListType; - } - export interface AdminCreateUserResponse { - /** - * The newly created user. - */ - User?: UserType; - } - export type AdminCreateUserUnusedAccountValidityDaysType = number; - export interface AdminDeleteUserAttributesRequest { - /** - * The user pool ID for the user pool where you want to delete user attributes. - */ - UserPoolId: UserPoolIdType; - /** - * The user name of the user from which you would like to delete attributes. - */ - Username: UsernameType; - /** - * An array of strings representing the user attribute names you wish to delete. For custom attributes, you must prepend the custom: prefix to the attribute name. - */ - UserAttributeNames: AttributeNameListType; - } - export interface AdminDeleteUserAttributesResponse { - } - export interface AdminDeleteUserRequest { - /** - * The user pool ID for the user pool where you want to delete the user. - */ - UserPoolId: UserPoolIdType; - /** - * The user name of the user you wish to delete. - */ - Username: UsernameType; - } - export interface AdminDisableProviderForUserRequest { - /** - * The user pool ID for the user pool. - */ - UserPoolId: StringType; - /** - * The user to be disabled. - */ - User: ProviderUserIdentifierType; - } - export interface AdminDisableProviderForUserResponse { - } - export interface AdminDisableUserRequest { - /** - * The user pool ID for the user pool where you want to disable the user. - */ - UserPoolId: UserPoolIdType; - /** - * The user name of the user you wish to disable. - */ - Username: UsernameType; - } - export interface AdminDisableUserResponse { - } - export interface AdminEnableUserRequest { - /** - * The user pool ID for the user pool where you want to enable the user. - */ - UserPoolId: UserPoolIdType; - /** - * The user name of the user you wish to enable. - */ - Username: UsernameType; - } - export interface AdminEnableUserResponse { - } - export interface AdminForgetDeviceRequest { - /** - * The user pool ID. - */ - UserPoolId: UserPoolIdType; - /** - * The user name. - */ - Username: UsernameType; - /** - * The device key. - */ - DeviceKey: DeviceKeyType; - } - export interface AdminGetDeviceRequest { - /** - * The device key. - */ - DeviceKey: DeviceKeyType; - /** - * The user pool ID. - */ - UserPoolId: UserPoolIdType; - /** - * The user name. - */ - Username: UsernameType; - } - export interface AdminGetDeviceResponse { - /** - * The device. - */ - Device: DeviceType; - } - export interface AdminGetUserRequest { - /** - * The user pool ID for the user pool where you want to get information about the user. - */ - UserPoolId: UserPoolIdType; - /** - * The user name of the user you wish to retrieve. - */ - Username: UsernameType; - } - export interface AdminGetUserResponse { - /** - * The user name of the user about whom you are receiving information. - */ - Username: UsernameType; - /** - * An array of name-value pairs representing user attributes. - */ - UserAttributes?: AttributeListType; - /** - * The date the user was created. - */ - UserCreateDate?: DateType; - /** - * The date the user was last modified. - */ - UserLastModifiedDate?: DateType; - /** - * Indicates that the status is enabled. - */ - Enabled?: BooleanType; - /** - * The user status. Can be one of the following: UNCONFIRMED - User has been created but not confirmed. CONFIRMED - User has been confirmed. ARCHIVED - User is no longer active. COMPROMISED - User is disabled due to a potential security threat. UNKNOWN - User status is not known. - */ - UserStatus?: UserStatusType; - /** - * Specifies the options for MFA (e.g., email or phone number). - */ - MFAOptions?: MFAOptionListType; - } - export interface AdminInitiateAuthRequest { - /** - * The ID of the Amazon Cognito user pool. - */ - UserPoolId: UserPoolIdType; - /** - * The app client ID. - */ - ClientId: ClientIdType; - /** - * The authentication flow for this call to execute. The API action will depend on this value. For example: REFRESH_TOKEN_AUTH will take in a valid refresh token and return new tokens. USER_SRP_AUTH will take in USERNAME and SRP_A and return the SRP variables to be used for next challenge execution. Valid values include: USER_SRP_AUTH: Authentication flow for the Secure Remote Password (SRP) protocol. REFRESH_TOKEN_AUTH/REFRESH_TOKEN: Authentication flow for refreshing the access token and ID token by supplying a valid refresh token. CUSTOM_AUTH: Custom authentication flow. ADMIN_NO_SRP_AUTH: Non-SRP authentication flow; you can pass in the USERNAME and PASSWORD directly if the flow is enabled for calling the app client. - */ - AuthFlow: AuthFlowType; - /** - * The authentication parameters. These are inputs corresponding to the AuthFlow that you are invoking. The required values depend on the value of AuthFlow: For USER_SRP_AUTH: USERNAME (required), SRP_A (required), SECRET_HASH (required if the app client is configured with a client secret), DEVICE_KEY For REFRESH_TOKEN_AUTH/REFRESH_TOKEN: USERNAME (required), SECRET_HASH (required if the app client is configured with a client secret), REFRESH_TOKEN (required), DEVICE_KEY For ADMIN_NO_SRP_AUTH: USERNAME (required), SECRET_HASH (if app client is configured with client secret), PASSWORD (required), DEVICE_KEY For CUSTOM_AUTH: USERNAME (required), SECRET_HASH (if app client is configured with client secret), DEVICE_KEY - */ - AuthParameters?: AuthParametersType; - /** - * This is a random key-value pair map which can contain any key and will be passed to your PreAuthentication Lambda trigger as-is. It can be used to implement additional validations around authentication. - */ - ClientMetadata?: ClientMetadataType; - } - export interface AdminInitiateAuthResponse { - /** - * The name of the challenge which you are responding to with this call. This is returned to you in the AdminInitiateAuth response if you need to pass another challenge. SMS_MFA: Next challenge is to supply an SMS_MFA_CODE, delivered via SMS. PASSWORD_VERIFIER: Next challenge is to supply PASSWORD_CLAIM_SIGNATURE, PASSWORD_CLAIM_SECRET_BLOCK, and TIMESTAMP after the client-side SRP calculations. CUSTOM_CHALLENGE: This is returned if your custom authentication flow determines that the user should pass another challenge before tokens are issued. DEVICE_SRP_AUTH: If device tracking was enabled on your user pool and the previous challenges were passed, this challenge is returned so that Amazon Cognito can start tracking this device. DEVICE_PASSWORD_VERIFIER: Similar to PASSWORD_VERIFIER, but for devices only. ADMIN_NO_SRP_AUTH: This is returned if you need to authenticate with USERNAME and PASSWORD directly. An app client must be enabled to use this flow. NEW_PASSWORD_REQUIRED: For users which are required to change their passwords after successful first login. This challenge should be passed with NEW_PASSWORD and any other required attributes. - */ - ChallengeName?: ChallengeNameType; - /** - * The session which should be passed both ways in challenge-response calls to the service. If AdminInitiateAuth or AdminRespondToAuthChallenge API call determines that the caller needs to go through another challenge, they return a session with other challenge parameters. This session should be passed as it is to the next AdminRespondToAuthChallenge API call. - */ - Session?: SessionType; - /** - * The challenge parameters. These are returned to you in the AdminInitiateAuth response if you need to pass another challenge. The responses in this parameter should be used to compute inputs to the next call (AdminRespondToAuthChallenge). All challenges require USERNAME and SECRET_HASH (if applicable). The value of the USER_IF_FOR_SRP attribute will be the user's actual username, not an alias (such as email address or phone number), even if you specified an alias in your call to AdminInitiateAuth. This is because, in the AdminRespondToAuthChallenge API ChallengeResponses, the USERNAME attribute cannot be an alias. - */ - ChallengeParameters?: ChallengeParametersType; - /** - * The result of the authentication response. This is only returned if the caller does not need to pass another challenge. If the caller does need to pass another challenge before it gets tokens, ChallengeName, ChallengeParameters, and Session are returned. - */ - AuthenticationResult?: AuthenticationResultType; - } - export interface AdminLinkProviderForUserRequest { - /** - * The user pool ID for the user pool. - */ - UserPoolId: StringType; - /** - * The existing user in the user pool to be linked to the external identity provider user account. Can be a native (Username + Password) Cognito User Pools user or a federated user (for example, a SAML or Facebook user). If the user doesn't exist, an exception is thrown. This is the user that is returned when the new user (with the linked identity provider attribute) signs in. The ProviderAttributeValue for the DestinationUser must match the username for the user in the user pool. The ProviderAttributeName will always be ignored. - */ - DestinationUser: ProviderUserIdentifierType; - /** - * An external identity provider account for a user who does not currently exist yet in the user pool. This user must be a federated user (for example, a SAML or Facebook user), not another native user. If the SourceUser is a federated social identity provider user (Facebook, Google, or Login with Amazon), you must set the ProviderAttributeName to Cognito_Subject. For social identity providers, the ProviderName will be Facebook, Google, or LoginWithAmazon, and Cognito will automatically parse the Facebook, Google, and Login with Amazon tokens for id, sub, and user_id, respectively. The ProviderAttributeValue for the user must be the same value as the id, sub, or user_id value found in the social identity provider token. For SAML, the ProviderAttributeName can be any value that matches a claim in the SAML assertion. If you wish to link SAML users based on the subject of the SAML assertion, you should map the subject to a claim through the SAML identity provider and submit that claim name as the ProviderAttributeName. If you set ProviderAttributeName to Cognito_Subject, Cognito will automatically parse the default unique identifier found in the subject from the SAML token. - */ - SourceUser: ProviderUserIdentifierType; - } - export interface AdminLinkProviderForUserResponse { - } - export interface AdminListDevicesRequest { - /** - * The user pool ID. - */ - UserPoolId: UserPoolIdType; - /** - * The user name. - */ - Username: UsernameType; - /** - * The limit of the devices request. - */ - Limit?: QueryLimitType; - /** - * The pagination token. - */ - PaginationToken?: SearchPaginationTokenType; - } - export interface AdminListDevicesResponse { - /** - * The devices in the list of devices response. - */ - Devices?: DeviceListType; - /** - * The pagination token. - */ - PaginationToken?: SearchPaginationTokenType; - } - export interface AdminListGroupsForUserRequest { - /** - * The username for the user. - */ - Username: UsernameType; - /** - * The user pool ID for the user pool. - */ - UserPoolId: UserPoolIdType; - /** - * The limit of the request to list groups. - */ - Limit?: QueryLimitType; - /** - * An identifier that was returned from the previous call to this operation, which can be used to return the next set of items in the list. - */ - NextToken?: PaginationKey; - } - export interface AdminListGroupsForUserResponse { - /** - * The groups that the user belongs to. - */ - Groups?: GroupListType; - /** - * An identifier that was returned from the previous call to this operation, which can be used to return the next set of items in the list. - */ - NextToken?: PaginationKey; - } - export interface AdminRemoveUserFromGroupRequest { - /** - * The user pool ID for the user pool. - */ - UserPoolId: UserPoolIdType; - /** - * The username for the user. - */ - Username: UsernameType; - /** - * The group name. - */ - GroupName: GroupNameType; - } - export interface AdminResetUserPasswordRequest { - /** - * The user pool ID for the user pool where you want to reset the user's password. - */ - UserPoolId: UserPoolIdType; - /** - * The user name of the user whose password you wish to reset. - */ - Username: UsernameType; - } - export interface AdminResetUserPasswordResponse { - } - export interface AdminRespondToAuthChallengeRequest { - /** - * The ID of the Amazon Cognito user pool. - */ - UserPoolId: UserPoolIdType; - /** - * The app client ID. - */ - ClientId: ClientIdType; - /** - * The challenge name. For more information, see AdminInitiateAuth. - */ - ChallengeName: ChallengeNameType; - /** - * The challenge responses. These are inputs corresponding to the value of ChallengeName, for example: SMS_MFA: SMS_MFA_CODE, USERNAME, SECRET_HASH (if app client is configured with client secret). PASSWORD_VERIFIER: PASSWORD_CLAIM_SIGNATURE, PASSWORD_CLAIM_SECRET_BLOCK, TIMESTAMP, USERNAME, SECRET_HASH (if app client is configured with client secret). ADMIN_NO_SRP_AUTH: PASSWORD, USERNAME, SECRET_HASH (if app client is configured with client secret). NEW_PASSWORD_REQUIRED: NEW_PASSWORD, any other required attributes, USERNAME, SECRET_HASH (if app client is configured with client secret). The value of the USERNAME attribute must be the user's actual username, not an alias (such as email address or phone number). To make this easier, the AdminInitiateAuth response includes the actual username value in the USERNAMEUSER_ID_FOR_SRP attribute, even if you specified an alias in your call to AdminInitiateAuth. - */ - ChallengeResponses?: ChallengeResponsesType; - /** - * The session which should be passed both ways in challenge-response calls to the service. If InitiateAuth or RespondToAuthChallenge API call determines that the caller needs to go through another challenge, they return a session with other challenge parameters. This session should be passed as it is to the next RespondToAuthChallenge API call. - */ - Session?: SessionType; - } - export interface AdminRespondToAuthChallengeResponse { - /** - * The name of the challenge. For more information, see AdminInitiateAuth. - */ - ChallengeName?: ChallengeNameType; - /** - * The session which should be passed both ways in challenge-response calls to the service. If the InitiateAuth or RespondToAuthChallenge API call determines that the caller needs to go through another challenge, they return a session with other challenge parameters. This session should be passed as it is to the next RespondToAuthChallenge API call. - */ - Session?: SessionType; - /** - * The challenge parameters. For more information, see AdminInitiateAuth. - */ - ChallengeParameters?: ChallengeParametersType; - /** - * The result returned by the server in response to the authentication request. - */ - AuthenticationResult?: AuthenticationResultType; - } - export interface AdminSetUserSettingsRequest { - /** - * The user pool ID for the user pool where you want to set the user's settings, such as MFA options. - */ - UserPoolId: UserPoolIdType; - /** - * The user name of the user for whom you wish to set user settings. - */ - Username: UsernameType; - /** - * Specifies the options for MFA (e.g., email or phone number). - */ - MFAOptions: MFAOptionListType; - } - export interface AdminSetUserSettingsResponse { - } - export interface AdminUpdateDeviceStatusRequest { - /** - * The user pool ID. - */ - UserPoolId: UserPoolIdType; - /** - * The user name. - */ - Username: UsernameType; - /** - * The device key. - */ - DeviceKey: DeviceKeyType; - /** - * The status indicating whether a device has been remembered or not. - */ - DeviceRememberedStatus?: DeviceRememberedStatusType; - } - export interface AdminUpdateDeviceStatusResponse { - } - export interface AdminUpdateUserAttributesRequest { - /** - * The user pool ID for the user pool where you want to update user attributes. - */ - UserPoolId: UserPoolIdType; - /** - * The user name of the user for whom you want to update user attributes. - */ - Username: UsernameType; - /** - * An array of name-value pairs representing user attributes. For custom attributes, you must prepend the custom: prefix to the attribute name. - */ - UserAttributes: AttributeListType; - } - export interface AdminUpdateUserAttributesResponse { - } - export interface AdminUserGlobalSignOutRequest { - /** - * The user pool ID. - */ - UserPoolId: UserPoolIdType; - /** - * The user name. - */ - Username: UsernameType; - } - export interface AdminUserGlobalSignOutResponse { - } - export type AliasAttributeType = "phone_number"|"email"|"preferred_username"|string; - export type AliasAttributesListType = AliasAttributeType[]; - export type ArnType = string; - export type AttributeDataType = "String"|"Number"|"DateTime"|"Boolean"|string; - export type AttributeListType = AttributeType[]; - export type AttributeMappingKeyType = string; - export type AttributeMappingType = {[key: string]: StringType}; - export type AttributeNameListType = AttributeNameType[]; - export type AttributeNameType = string; - export interface AttributeType { - /** - * The name of the attribute. - */ - Name: AttributeNameType; - /** - * The value of the attribute. - */ - Value?: AttributeValueType; - } - export type AttributeValueType = string; - export type AuthFlowType = "USER_SRP_AUTH"|"REFRESH_TOKEN_AUTH"|"REFRESH_TOKEN"|"CUSTOM_AUTH"|"ADMIN_NO_SRP_AUTH"|string; - export type AuthParametersType = {[key: string]: StringType}; - export interface AuthenticationResultType { - /** - * The access token of the authentication result. - */ - AccessToken?: TokenModelType; - /** - * The expiration period of the authentication result. - */ - ExpiresIn?: IntegerType; - /** - * The token type of the authentication result. - */ - TokenType?: StringType; - /** - * The refresh token of the authentication result. - */ - RefreshToken?: TokenModelType; - /** - * The ID token of the authentication result. - */ - IdToken?: TokenModelType; - /** - * The new device metadata from an authentication result. - */ - NewDeviceMetadata?: NewDeviceMetadataType; - } - export type BooleanType = boolean; - export type CSSType = string; - export type CSSVersionType = string; - export type CallbackURLsListType = RedirectUrlType[]; - export type ChallengeNameType = "SMS_MFA"|"PASSWORD_VERIFIER"|"CUSTOM_CHALLENGE"|"DEVICE_SRP_AUTH"|"DEVICE_PASSWORD_VERIFIER"|"ADMIN_NO_SRP_AUTH"|"NEW_PASSWORD_REQUIRED"|string; - export type ChallengeParametersType = {[key: string]: StringType}; - export type ChallengeResponsesType = {[key: string]: StringType}; - export interface ChangePasswordRequest { - /** - * The old password in the change password request. - */ - PreviousPassword: PasswordType; - /** - * The new password in the change password request. - */ - ProposedPassword: PasswordType; - /** - * The access token in the change password request. - */ - AccessToken: TokenModelType; - } - export interface ChangePasswordResponse { - } - export type ClientIdType = string; - export type ClientMetadataType = {[key: string]: StringType}; - export type ClientNameType = string; - export type ClientPermissionListType = ClientPermissionType[]; - export type ClientPermissionType = string; - export type ClientSecretType = string; - export type CodeDeliveryDetailsListType = CodeDeliveryDetailsType[]; - export interface CodeDeliveryDetailsType { - /** - * The destination for the code delivery details. - */ - Destination?: StringType; - /** - * The delivery medium (email message or phone number). - */ - DeliveryMedium?: DeliveryMediumType; - /** - * The name of the attribute in the code delivery details type. - */ - AttributeName?: AttributeNameType; - } - export type CompletionMessageType = string; - export interface ConfirmDeviceRequest { - /** - * The access token. - */ - AccessToken: TokenModelType; - /** - * The device key. - */ - DeviceKey: DeviceKeyType; - /** - * The configuration of the device secret verifier. - */ - DeviceSecretVerifierConfig?: DeviceSecretVerifierConfigType; - /** - * The device name. - */ - DeviceName?: DeviceNameType; - } - export interface ConfirmDeviceResponse { - /** - * Indicates whether the user confirmation is necessary to confirm the device response. - */ - UserConfirmationNecessary?: BooleanType; - } - export interface ConfirmForgotPasswordRequest { - /** - * The app client ID of the app associated with the user pool. - */ - ClientId: ClientIdType; - /** - * A keyed-hash message authentication code (HMAC) calculated using the secret key of a user pool client and username plus the client ID in the message. - */ - SecretHash?: SecretHashType; - /** - * The user name of the user for whom you want to enter a code to retrieve a forgotten password. - */ - Username: UsernameType; - /** - * The confirmation code sent by a user's request to retrieve a forgotten password. For more information, see ForgotPassword - */ - ConfirmationCode: ConfirmationCodeType; - /** - * The password sent by a user's request to retrieve a forgotten password. - */ - Password: PasswordType; - } - export interface ConfirmForgotPasswordResponse { - } - export interface ConfirmSignUpRequest { - /** - * The ID of the app client associated with the user pool. - */ - ClientId: ClientIdType; - /** - * A keyed-hash message authentication code (HMAC) calculated using the secret key of a user pool client and username plus the client ID in the message. - */ - SecretHash?: SecretHashType; - /** - * The user name of the user whose registration you wish to confirm. - */ - Username: UsernameType; - /** - * The confirmation code sent by a user's request to confirm registration. - */ - ConfirmationCode: ConfirmationCodeType; - /** - * Boolean to be specified to force user confirmation irrespective of existing alias. By default set to False. If this parameter is set to True and the phone number/email used for sign up confirmation already exists as an alias with a different user, the API call will migrate the alias from the previous user to the newly created user being confirmed. If set to False, the API will throw an AliasExistsException error. - */ - ForceAliasCreation?: ForceAliasCreation; - } - export interface ConfirmSignUpResponse { - } - export type ConfirmationCodeType = string; - export interface CreateGroupRequest { - /** - * The name of the group. Must be unique. - */ - GroupName: GroupNameType; - /** - * The user pool ID for the user pool. - */ - UserPoolId: UserPoolIdType; - /** - * A string containing the description of the group. - */ - Description?: DescriptionType; - /** - * The role ARN for the group. - */ - RoleArn?: ArnType; - /** - * A nonnegative integer value that specifies the precedence of this group relative to the other groups that a user can belong to in the user pool. Zero is the highest precedence value. Groups with lower Precedence values take precedence over groups with higher or null Precedence values. If a user belongs to two or more groups, it is the group with the lowest precedence value whose role ARN will be used in the cognito:roles and cognito:preferred_role claims in the user's tokens. Two groups can have the same Precedence value. If this happens, neither group takes precedence over the other. If two groups with the same Precedence have the same role ARN, that role is used in the cognito:preferred_role claim in tokens for users in each group. If the two groups have different role ARNs, the cognito:preferred_role claim is not set in users' tokens. The default Precedence value is null. - */ - Precedence?: PrecedenceType; - } - export interface CreateGroupResponse { - /** - * The group object for the group. - */ - Group?: GroupType; - } - export interface CreateIdentityProviderRequest { - /** - * The user pool ID. - */ - UserPoolId: UserPoolIdType; - /** - * The identity provider name. - */ - ProviderName: ProviderNameTypeV1; - /** - * The identity provider type. - */ - ProviderType: IdentityProviderTypeType; - /** - * The identity provider details, such as MetadataURL and MetadataFile. - */ - ProviderDetails: ProviderDetailsType; - /** - * A mapping of identity provider attributes to standard and custom user pool attributes. - */ - AttributeMapping?: AttributeMappingType; - /** - * A list of identity provider identifiers. - */ - IdpIdentifiers?: IdpIdentifiersListType; - } - export interface CreateIdentityProviderResponse { - /** - * The newly created identity provider object. - */ - IdentityProvider: IdentityProviderType; - } - export interface CreateResourceServerRequest { - /** - * The user pool ID for the user pool. - */ - UserPoolId: UserPoolIdType; - /** - * A unique resource server identifier for the resource server. This could be an HTTPS endpoint where the resource server is located. For example, https://my-weather-api.example.com. - */ - Identifier: ResourceServerIdentifierType; - /** - * A friendly name for the resource server. - */ - Name: ResourceServerNameType; - /** - * A list of scopes. Each scope is map, where the keys are name and description. - */ - Scopes?: ResourceServerScopeListType; - } - export interface CreateResourceServerResponse { - /** - * The newly created resource server. - */ - ResourceServer: ResourceServerType; - } - export interface CreateUserImportJobRequest { - /** - * The job name for the user import job. - */ - JobName: UserImportJobNameType; - /** - * The user pool ID for the user pool that the users are being imported into. - */ - UserPoolId: UserPoolIdType; - /** - * The role ARN for the Amazon CloudWatch Logging role for the user import job. - */ - CloudWatchLogsRoleArn: ArnType; - } - export interface CreateUserImportJobResponse { - /** - * The job object that represents the user import job. - */ - UserImportJob?: UserImportJobType; - } - export interface CreateUserPoolClientRequest { - /** - * The user pool ID for the user pool where you want to create a user pool client. - */ - UserPoolId: UserPoolIdType; - /** - * The client name for the user pool client you would like to create. - */ - ClientName: ClientNameType; - /** - * Boolean to specify whether you want to generate a secret for the user pool client being created. - */ - GenerateSecret?: GenerateSecret; - /** - * The time limit, in days, after which the refresh token is no longer valid and cannot be used. - */ - RefreshTokenValidity?: RefreshTokenValidityType; - /** - * The read attributes. - */ - ReadAttributes?: ClientPermissionListType; - /** - * The write attributes. - */ - WriteAttributes?: ClientPermissionListType; - /** - * The explicit authentication flows. - */ - ExplicitAuthFlows?: ExplicitAuthFlowsListType; - /** - * A list of provider names for the identity providers that are supported on this client. - */ - SupportedIdentityProviders?: SupportedIdentityProvidersListType; - /** - * A list of allowed callback URLs for the identity providers. - */ - CallbackURLs?: CallbackURLsListType; - /** - * A list of allowed logout URLs for the identity providers. - */ - LogoutURLs?: LogoutURLsListType; - /** - * The default redirect URI. Must be in the CallbackURLs list. - */ - DefaultRedirectURI?: RedirectUrlType; - /** - * Set to code to initiate a code grant flow, which provides an authorization code as the response. This code can be exchanged for access tokens with the token endpoint. Set to token to specify that the client should get the access token (and, optionally, ID token, based on scopes) directly. - */ - AllowedOAuthFlows?: OAuthFlowsType; - /** - * A list of allowed OAuth scopes. Currently supported values are "phone", "email", "openid", and "Cognito". - */ - AllowedOAuthScopes?: ScopeListType; - /** - * Set to True if the client is allowed to follow the OAuth protocol when interacting with Cognito user pools. - */ - AllowedOAuthFlowsUserPoolClient?: BooleanType; - } - export interface CreateUserPoolClientResponse { - /** - * The user pool client that was just created. - */ - UserPoolClient?: UserPoolClientType; - } - export interface CreateUserPoolDomainRequest { - /** - * The domain string. - */ - Domain: DomainType; - /** - * The user pool ID. - */ - UserPoolId: UserPoolIdType; - } - export interface CreateUserPoolDomainResponse { - } - export interface CreateUserPoolRequest { - /** - * A string used to name the user pool. - */ - PoolName: UserPoolNameType; - /** - * The policies associated with the new user pool. - */ - Policies?: UserPoolPolicyType; - /** - * The Lambda trigger configuration information for the new user pool. - */ - LambdaConfig?: LambdaConfigType; - /** - * The attributes to be auto-verified. Possible values: email, phone_number. - */ - AutoVerifiedAttributes?: VerifiedAttributesListType; - /** - * Attributes supported as an alias for this user pool. Possible values: phone_number, email, or preferred_username. - */ - AliasAttributes?: AliasAttributesListType; - /** - * Specifies whether email addresses or phone numbers can be specified as usernames when a user signs up. - */ - UsernameAttributes?: UsernameAttributesListType; - /** - * A string representing the SMS verification message. - */ - SmsVerificationMessage?: SmsVerificationMessageType; - /** - * A string representing the email verification message. - */ - EmailVerificationMessage?: EmailVerificationMessageType; - /** - * A string representing the email verification subject. - */ - EmailVerificationSubject?: EmailVerificationSubjectType; - /** - * The template for the verification message that the user sees when the app requests permission to access the user's information. - */ - VerificationMessageTemplate?: VerificationMessageTemplateType; - /** - * A string representing the SMS authentication message. - */ - SmsAuthenticationMessage?: SmsVerificationMessageType; - /** - * Specifies MFA configuration details. - */ - MfaConfiguration?: UserPoolMfaType; - /** - * The device configuration. - */ - DeviceConfiguration?: DeviceConfigurationType; - /** - * The email configuration. - */ - EmailConfiguration?: EmailConfigurationType; - /** - * The SMS configuration. - */ - SmsConfiguration?: SmsConfigurationType; - /** - * The cost allocation tags for the user pool. For more information, see Adding Cost Allocation Tags to Your User Pool - */ - UserPoolTags?: UserPoolTagsType; - /** - * The configuration for AdminCreateUser requests. - */ - AdminCreateUserConfig?: AdminCreateUserConfigType; - /** - * An array of schema attributes for the new user pool. These attributes can be standard or custom attributes. - */ - Schema?: SchemaAttributesListType; - } - export interface CreateUserPoolResponse { - /** - * A container for the user pool details. - */ - UserPool?: UserPoolType; - } - export type CustomAttributeNameType = string; - export type CustomAttributesListType = SchemaAttributeType[]; - export type DateType = Date; - export type DefaultEmailOptionType = "CONFIRM_WITH_LINK"|"CONFIRM_WITH_CODE"|string; - export interface DeleteGroupRequest { - /** - * The name of the group. - */ - GroupName: GroupNameType; - /** - * The user pool ID for the user pool. - */ - UserPoolId: UserPoolIdType; - } - export interface DeleteIdentityProviderRequest { - /** - * The user pool ID. - */ - UserPoolId: UserPoolIdType; - /** - * The identity provider name. - */ - ProviderName: ProviderNameType; - } - export interface DeleteResourceServerRequest { - /** - * The user pool ID for the user pool that hosts the resource server. - */ - UserPoolId: UserPoolIdType; - /** - * The identifier for the resource server. - */ - Identifier: ResourceServerIdentifierType; - } - export interface DeleteUserAttributesRequest { - /** - * An array of strings representing the user attribute names you wish to delete. For custom attributes, you must prepend the custom: prefix to the attribute name. - */ - UserAttributeNames: AttributeNameListType; - /** - * The access token used in the request to delete user attributes. - */ - AccessToken: TokenModelType; - } - export interface DeleteUserAttributesResponse { - } - export interface DeleteUserPoolClientRequest { - /** - * The user pool ID for the user pool where you want to delete the client. - */ - UserPoolId: UserPoolIdType; - /** - * The app client ID of the app associated with the user pool. - */ - ClientId: ClientIdType; - } - export interface DeleteUserPoolDomainRequest { - /** - * The domain string. - */ - Domain: DomainType; - /** - * The user pool ID. - */ - UserPoolId: UserPoolIdType; - } - export interface DeleteUserPoolDomainResponse { - } - export interface DeleteUserPoolRequest { - /** - * The user pool ID for the user pool you want to delete. - */ - UserPoolId: UserPoolIdType; - } - export interface DeleteUserRequest { - /** - * The access token from a request to delete a user. - */ - AccessToken: TokenModelType; - } - export type DeliveryMediumListType = DeliveryMediumType[]; - export type DeliveryMediumType = "SMS"|"EMAIL"|string; - export interface DescribeIdentityProviderRequest { - /** - * The user pool ID. - */ - UserPoolId: UserPoolIdType; - /** - * The identity provider name. - */ - ProviderName: ProviderNameType; - } - export interface DescribeIdentityProviderResponse { - /** - * The identity provider that was deleted. - */ - IdentityProvider: IdentityProviderType; - } - export interface DescribeResourceServerRequest { - /** - * The user pool ID for the user pool that hosts the resource server. - */ - UserPoolId: UserPoolIdType; - /** - * The identifier for the resource server - */ - Identifier: ResourceServerIdentifierType; - } - export interface DescribeResourceServerResponse { - /** - * The resource server. - */ - ResourceServer: ResourceServerType; - } - export interface DescribeUserImportJobRequest { - /** - * The user pool ID for the user pool that the users are being imported into. - */ - UserPoolId: UserPoolIdType; - /** - * The job ID for the user import job. - */ - JobId: UserImportJobIdType; - } - export interface DescribeUserImportJobResponse { - /** - * The job object that represents the user import job. - */ - UserImportJob?: UserImportJobType; - } - export interface DescribeUserPoolClientRequest { - /** - * The user pool ID for the user pool you want to describe. - */ - UserPoolId: UserPoolIdType; - /** - * The app client ID of the app associated with the user pool. - */ - ClientId: ClientIdType; - } - export interface DescribeUserPoolClientResponse { - /** - * The user pool client from a server response to describe the user pool client. - */ - UserPoolClient?: UserPoolClientType; - } - export interface DescribeUserPoolDomainRequest { - /** - * The domain string. - */ - Domain: DomainType; - } - export interface DescribeUserPoolDomainResponse { - /** - * A domain description object containing information about the domain. - */ - DomainDescription?: DomainDescriptionType; - } - export interface DescribeUserPoolRequest { - /** - * The user pool ID for the user pool you want to describe. - */ - UserPoolId: UserPoolIdType; - } - export interface DescribeUserPoolResponse { - /** - * The container of metadata returned by the server to describe the pool. - */ - UserPool?: UserPoolType; - } - export type DescriptionType = string; - export interface DeviceConfigurationType { - /** - * Indicates whether a challenge is required on a new device. Only applicable to a new device. - */ - ChallengeRequiredOnNewDevice?: BooleanType; - /** - * If true, a device is only remembered on user prompt. - */ - DeviceOnlyRememberedOnUserPrompt?: BooleanType; - } - export type DeviceKeyType = string; - export type DeviceListType = DeviceType[]; - export type DeviceNameType = string; - export type DeviceRememberedStatusType = "remembered"|"not_remembered"|string; - export interface DeviceSecretVerifierConfigType { - /** - * The password verifier. - */ - PasswordVerifier?: StringType; - /** - * The salt. - */ - Salt?: StringType; - } - export interface DeviceType { - /** - * The device key. - */ - DeviceKey?: DeviceKeyType; - /** - * The device attributes. - */ - DeviceAttributes?: AttributeListType; - /** - * The creation date of the device. - */ - DeviceCreateDate?: DateType; - /** - * The last modified date of the device. - */ - DeviceLastModifiedDate?: DateType; - /** - * The date in which the device was last authenticated. - */ - DeviceLastAuthenticatedDate?: DateType; - } - export interface DomainDescriptionType { - /** - * The user pool ID. - */ - UserPoolId?: UserPoolIdType; - /** - * The AWS account ID for the user pool owner. - */ - AWSAccountId?: AWSAccountIdType; - /** - * The domain string. - */ - Domain?: DomainType; - /** - * The S3 bucket where the static files for this domain are stored. - */ - S3Bucket?: S3BucketType; - /** - * The ARN of the CloudFront distribution. - */ - CloudFrontDistribution?: ArnType; - /** - * The app version. - */ - Version?: DomainVersionType; - /** - * The domain status. - */ - Status?: DomainStatusType; - } - export type DomainStatusType = "CREATING"|"DELETING"|"UPDATING"|"ACTIVE"|"FAILED"|string; - export type DomainType = string; - export type DomainVersionType = string; - export type EmailAddressType = string; - export interface EmailConfigurationType { - /** - * The Amazon Resource Name (ARN) of the email source. - */ - SourceArn?: ArnType; - /** - * The REPLY-TO email address. - */ - ReplyToEmailAddress?: EmailAddressType; - } - export type EmailVerificationMessageByLinkType = string; - export type EmailVerificationMessageType = string; - export type EmailVerificationSubjectByLinkType = string; - export type EmailVerificationSubjectType = string; - export type ExplicitAuthFlowsListType = ExplicitAuthFlowsType[]; - export type ExplicitAuthFlowsType = "ADMIN_NO_SRP_AUTH"|"CUSTOM_AUTH_FLOW_ONLY"|string; - export type ForceAliasCreation = boolean; - export interface ForgetDeviceRequest { - /** - * The access token for the forgotten device request. - */ - AccessToken?: TokenModelType; - /** - * The device key. - */ - DeviceKey: DeviceKeyType; - } - export interface ForgotPasswordRequest { - /** - * The ID of the client associated with the user pool. - */ - ClientId: ClientIdType; - /** - * A keyed-hash message authentication code (HMAC) calculated using the secret key of a user pool client and username plus the client ID in the message. - */ - SecretHash?: SecretHashType; - /** - * The user name of the user for whom you want to enter a code to reset a forgotten password. - */ - Username: UsernameType; - } - export interface ForgotPasswordResponse { - /** - * The code delivery details returned by the server in response to the request to reset a password. - */ - CodeDeliveryDetails?: CodeDeliveryDetailsType; - } - export type GenerateSecret = boolean; - export interface GetCSVHeaderRequest { - /** - * The user pool ID for the user pool that the users are to be imported into. - */ - UserPoolId: UserPoolIdType; - } - export interface GetCSVHeaderResponse { - /** - * The user pool ID for the user pool that the users are to be imported into. - */ - UserPoolId?: UserPoolIdType; - /** - * The header information for the .csv file for the user import job. - */ - CSVHeader?: ListOfStringTypes; - } - export interface GetDeviceRequest { - /** - * The device key. - */ - DeviceKey: DeviceKeyType; - /** - * The access token. - */ - AccessToken?: TokenModelType; - } - export interface GetDeviceResponse { - /** - * The device. - */ - Device: DeviceType; - } - export interface GetGroupRequest { - /** - * The name of the group. - */ - GroupName: GroupNameType; - /** - * The user pool ID for the user pool. - */ - UserPoolId: UserPoolIdType; - } - export interface GetGroupResponse { - /** - * The group object for the group. - */ - Group?: GroupType; - } - export interface GetIdentityProviderByIdentifierRequest { - /** - * The user pool ID. - */ - UserPoolId: UserPoolIdType; - /** - * The identity provider ID. - */ - IdpIdentifier: IdpIdentifierType; - } - export interface GetIdentityProviderByIdentifierResponse { - /** - * The identity provider object. - */ - IdentityProvider: IdentityProviderType; - } - export interface GetUICustomizationRequest { - /** - * The user pool ID for the user pool. - */ - UserPoolId: UserPoolIdType; - /** - * The client ID for the client app. - */ - ClientId?: ClientIdType; - } - export interface GetUICustomizationResponse { - /** - * The UI customization information. - */ - UICustomization: UICustomizationType; - } - export interface GetUserAttributeVerificationCodeRequest { - /** - * The access token returned by the server response to get the user attribute verification code. - */ - AccessToken: TokenModelType; - /** - * The attribute name returned by the server response to get the user attribute verification code. - */ - AttributeName: AttributeNameType; - } - export interface GetUserAttributeVerificationCodeResponse { - /** - * The code delivery details returned by the server in response to the request to get the user attribute verification code. - */ - CodeDeliveryDetails?: CodeDeliveryDetailsType; - } - export interface GetUserRequest { - /** - * The access token returned by the server response to get information about the user. - */ - AccessToken: TokenModelType; - } - export interface GetUserResponse { - /** - * The user name of the user you wish to retrieve from the get user request. - */ - Username: UsernameType; - /** - * An array of name-value pairs representing user attributes. For custom attributes, you must prepend the custom: prefix to the attribute name. - */ - UserAttributes: AttributeListType; - /** - * Specifies the options for MFA (e.g., email or phone number). - */ - MFAOptions?: MFAOptionListType; - } - export interface GlobalSignOutRequest { - /** - * The access token. - */ - AccessToken: TokenModelType; - } - export interface GlobalSignOutResponse { - } - export type GroupListType = GroupType[]; - export type GroupNameType = string; - export interface GroupType { - /** - * The name of the group. - */ - GroupName?: GroupNameType; - /** - * The user pool ID for the user pool. - */ - UserPoolId?: UserPoolIdType; - /** - * A string containing the description of the group. - */ - Description?: DescriptionType; - /** - * The role ARN for the group. - */ - RoleArn?: ArnType; - /** - * A nonnegative integer value that specifies the precedence of this group relative to the other groups that a user can belong to in the user pool. If a user belongs to two or more groups, it is the group with the highest precedence whose role ARN will be used in the cognito:roles and cognito:preferred_role claims in the user's tokens. Groups with higher Precedence values take precedence over groups with lower Precedence values or with null Precedence values. Two groups can have the same Precedence value. If this happens, neither group takes precedence over the other. If two groups with the same Precedence have the same role ARN, that role is used in the cognito:preferred_role claim in tokens for users in each group. If the two groups have different role ARNs, the cognito:preferred_role claim is not set in users' tokens. The default Precedence value is null. - */ - Precedence?: PrecedenceType; - /** - * The date the group was last modified. - */ - LastModifiedDate?: DateType; - /** - * The date the group was created. - */ - CreationDate?: DateType; - } - export interface IdentityProviderType { - /** - * The user pool ID. - */ - UserPoolId?: UserPoolIdType; - /** - * The identity provider name. - */ - ProviderName?: ProviderNameType; - /** - * The identity provider type. - */ - ProviderType?: IdentityProviderTypeType; - /** - * The identity provider details, such as MetadataURL and MetadataFile. - */ - ProviderDetails?: ProviderDetailsType; - /** - * A mapping of identity provider attributes to standard and custom user pool attributes. - */ - AttributeMapping?: AttributeMappingType; - /** - * A list of identity provider identifiers. - */ - IdpIdentifiers?: IdpIdentifiersListType; - /** - * The date the identity provider was last modified. - */ - LastModifiedDate?: DateType; - /** - * The date the identity provider was created. - */ - CreationDate?: DateType; - } - export type IdentityProviderTypeType = "SAML"|"Facebook"|"Google"|"LoginWithAmazon"|string; - export type IdpIdentifierType = string; - export type IdpIdentifiersListType = IdpIdentifierType[]; - export type ImageFileType = Buffer|Uint8Array|Blob|string; - export type ImageUrlType = string; - export interface InitiateAuthRequest { - /** - * The authentication flow for this call to execute. The API action will depend on this value. For example: REFRESH_TOKEN_AUTH will take in a valid refresh token and return new tokens. USER_SRP_AUTH will take in USERNAME and SRP_A and return the SRP variables to be used for next challenge execution. Valid values include: USER_SRP_AUTH: Authentication flow for the Secure Remote Password (SRP) protocol. REFRESH_TOKEN_AUTH/REFRESH_TOKEN: Authentication flow for refreshing the access token and ID token by supplying a valid refresh token. CUSTOM_AUTH: Custom authentication flow. ADMIN_NO_SRP_AUTH is not a valid value. - */ - AuthFlow: AuthFlowType; - /** - * The authentication parameters. These are inputs corresponding to the AuthFlow that you are invoking. The required values depend on the value of AuthFlow: For USER_SRP_AUTH: USERNAME (required), SRP_A (required), SECRET_HASH (required if the app client is configured with a client secret), DEVICE_KEY For REFRESH_TOKEN_AUTH/REFRESH_TOKEN: USERNAME (required), SECRET_HASH (required if the app client is configured with a client secret), REFRESH_TOKEN (required), DEVICE_KEY For CUSTOM_AUTH: USERNAME (required), SECRET_HASH (if app client is configured with client secret), DEVICE_KEY - */ - AuthParameters?: AuthParametersType; - /** - * This is a random key-value pair map which can contain any key and will be passed to your PreAuthentication Lambda trigger as-is. It can be used to implement additional validations around authentication. - */ - ClientMetadata?: ClientMetadataType; - /** - * The app client ID. - */ - ClientId: ClientIdType; - } - export interface InitiateAuthResponse { - /** - * The name of the challenge which you are responding to with this call. This is returned to you in the AdminInitiateAuth response if you need to pass another challenge. Valid values include the following. Note that all of these challenges require USERNAME and SECRET_HASH (if applicable) in the parameters. SMS_MFA: Next challenge is to supply an SMS_MFA_CODE, delivered via SMS. PASSWORD_VERIFIER: Next challenge is to supply PASSWORD_CLAIM_SIGNATURE, PASSWORD_CLAIM_SECRET_BLOCK, and TIMESTAMP after the client-side SRP calculations. CUSTOM_CHALLENGE: This is returned if your custom authentication flow determines that the user should pass another challenge before tokens are issued. DEVICE_SRP_AUTH: If device tracking was enabled on your user pool and the previous challenges were passed, this challenge is returned so that Amazon Cognito can start tracking this device. DEVICE_PASSWORD_VERIFIER: Similar to PASSWORD_VERIFIER, but for devices only. NEW_PASSWORD_REQUIRED: For users which are required to change their passwords after successful first login. This challenge should be passed with NEW_PASSWORD and any other required attributes. - */ - ChallengeName?: ChallengeNameType; - /** - * The session which should be passed both ways in challenge-response calls to the service. If the InitiateAuth or RespondToAuthChallenge API call determines that the caller needs to go through another challenge, they return a session with other challenge parameters. This session should be passed as it is to the next RespondToAuthChallenge API call. - */ - Session?: SessionType; - /** - * The challenge parameters. These are returned to you in the InitiateAuth response if you need to pass another challenge. The responses in this parameter should be used to compute inputs to the next call (RespondToAuthChallenge). All challenges require USERNAME and SECRET_HASH (if applicable). - */ - ChallengeParameters?: ChallengeParametersType; - /** - * The result of the authentication response. This is only returned if the caller does not need to pass another challenge. If the caller does need to pass another challenge before it gets tokens, ChallengeName, ChallengeParameters, and Session are returned. - */ - AuthenticationResult?: AuthenticationResultType; - } - export type IntegerType = number; - export interface LambdaConfigType { - /** - * A pre-registration AWS Lambda trigger. - */ - PreSignUp?: ArnType; - /** - * A custom Message AWS Lambda trigger. - */ - CustomMessage?: ArnType; - /** - * A post-confirmation AWS Lambda trigger. - */ - PostConfirmation?: ArnType; - /** - * A pre-authentication AWS Lambda trigger. - */ - PreAuthentication?: ArnType; - /** - * A post-authentication AWS Lambda trigger. - */ - PostAuthentication?: ArnType; - /** - * Defines the authentication challenge. - */ - DefineAuthChallenge?: ArnType; - /** - * Creates an authentication challenge. - */ - CreateAuthChallenge?: ArnType; - /** - * Verifies the authentication challenge response. - */ - VerifyAuthChallengeResponse?: ArnType; - } - export interface ListDevicesRequest { - /** - * The access tokens for the request to list devices. - */ - AccessToken: TokenModelType; - /** - * The limit of the device request. - */ - Limit?: QueryLimitType; - /** - * The pagination token for the list request. - */ - PaginationToken?: SearchPaginationTokenType; - } - export interface ListDevicesResponse { - /** - * The devices returned in the list devices response. - */ - Devices?: DeviceListType; - /** - * The pagination token for the list device response. - */ - PaginationToken?: SearchPaginationTokenType; - } - export interface ListGroupsRequest { - /** - * The user pool ID for the user pool. - */ - UserPoolId: UserPoolIdType; - /** - * The limit of the request to list groups. - */ - Limit?: QueryLimitType; - /** - * An identifier that was returned from the previous call to this operation, which can be used to return the next set of items in the list. - */ - NextToken?: PaginationKey; - } - export interface ListGroupsResponse { - /** - * The group objects for the groups. - */ - Groups?: GroupListType; - /** - * An identifier that was returned from the previous call to this operation, which can be used to return the next set of items in the list. - */ - NextToken?: PaginationKey; - } - export interface ListIdentityProvidersRequest { - /** - * The user pool ID. - */ - UserPoolId: UserPoolIdType; - /** - * The maximum number of identity providers to return. - */ - MaxResults?: ListProvidersLimitType; - /** - * A pagination token. - */ - NextToken?: PaginationKeyType; - } - export interface ListIdentityProvidersResponse { - /** - * A list of identity provider objects. - */ - Providers: ProvidersListType; - /** - * A pagination token. - */ - NextToken?: PaginationKeyType; - } - export type ListOfStringTypes = StringType[]; - export type ListProvidersLimitType = number; - export type ListResourceServersLimitType = number; - export interface ListResourceServersRequest { - /** - * The user pool ID for the user pool. - */ - UserPoolId: UserPoolIdType; - /** - * The maximum number of resource servers to return. - */ - MaxResults?: ListResourceServersLimitType; - /** - * A pagination token. - */ - NextToken?: PaginationKeyType; - } - export interface ListResourceServersResponse { - /** - * The resource servers. - */ - ResourceServers: ResourceServersListType; - /** - * A pagination token. - */ - NextToken?: PaginationKeyType; - } - export interface ListUserImportJobsRequest { - /** - * The user pool ID for the user pool that the users are being imported into. - */ - UserPoolId: UserPoolIdType; - /** - * The maximum number of import jobs you want the request to return. - */ - MaxResults: PoolQueryLimitType; - /** - * An identifier that was returned from the previous call to ListUserImportJobs, which can be used to return the next set of import jobs in the list. - */ - PaginationToken?: PaginationKeyType; - } - export interface ListUserImportJobsResponse { - /** - * The user import jobs. - */ - UserImportJobs?: UserImportJobsListType; - /** - * An identifier that can be used to return the next set of user import jobs in the list. - */ - PaginationToken?: PaginationKeyType; - } - export interface ListUserPoolClientsRequest { - /** - * The user pool ID for the user pool where you want to list user pool clients. - */ - UserPoolId: UserPoolIdType; - /** - * The maximum number of results you want the request to return when listing the user pool clients. - */ - MaxResults?: QueryLimit; - /** - * An identifier that was returned from the previous call to this operation, which can be used to return the next set of items in the list. - */ - NextToken?: PaginationKey; - } - export interface ListUserPoolClientsResponse { - /** - * The user pool clients in the response that lists user pool clients. - */ - UserPoolClients?: UserPoolClientListType; - /** - * An identifier that was returned from the previous call to this operation, which can be used to return the next set of items in the list. - */ - NextToken?: PaginationKey; - } - export interface ListUserPoolsRequest { - /** - * An identifier that was returned from the previous call to this operation, which can be used to return the next set of items in the list. - */ - NextToken?: PaginationKeyType; - /** - * The maximum number of results you want the request to return when listing the user pools. - */ - MaxResults: PoolQueryLimitType; - } - export interface ListUserPoolsResponse { - /** - * The user pools from the response to list users. - */ - UserPools?: UserPoolListType; - /** - * An identifier that was returned from the previous call to this operation, which can be used to return the next set of items in the list. - */ - NextToken?: PaginationKeyType; - } - export interface ListUsersInGroupRequest { - /** - * The user pool ID for the user pool. - */ - UserPoolId: UserPoolIdType; - /** - * The name of the group. - */ - GroupName: GroupNameType; - /** - * The limit of the request to list users. - */ - Limit?: QueryLimitType; - /** - * An identifier that was returned from the previous call to this operation, which can be used to return the next set of items in the list. - */ - NextToken?: PaginationKey; - } - export interface ListUsersInGroupResponse { - /** - * The users returned in the request to list users. - */ - Users?: UsersListType; - /** - * An identifier that was returned from the previous call to this operation, which can be used to return the next set of items in the list. - */ - NextToken?: PaginationKey; - } - export interface ListUsersRequest { - /** - * The user pool ID for the user pool on which the search should be performed. - */ - UserPoolId: UserPoolIdType; - /** - * An array of strings, where each string is the name of a user attribute to be returned for each user in the search results. If the array is empty, all attributes are returned. - */ - AttributesToGet?: SearchedAttributeNamesListType; - /** - * Maximum number of users to be returned. - */ - Limit?: QueryLimitType; - /** - * An identifier that was returned from the previous call to this operation, which can be used to return the next set of items in the list. - */ - PaginationToken?: SearchPaginationTokenType; - /** - * A filter string of the form "AttributeName Filter-Type "AttributeValue"". Quotation marks within the filter string must be escaped using the backslash (\) character. For example, "family_name = \"Reddy\"". AttributeName: The name of the attribute to search for. You can only search for one attribute at a time. Filter-Type: For an exact match, use =, for example, "given_name = \"Jon\"". For a prefix ("starts with") match, use ^=, for example, "given_name ^= \"Jon\"". AttributeValue: The attribute value that must be matched for each user. If the filter string is empty, ListUsers returns all users in the user pool. You can only search for the following standard attributes: username (case-sensitive) email phone_number name given_name family_name preferred_username cognito:user_status (called Enabled in the Console) (case-sensitive) status (case-insensitive) Custom attributes are not searchable. For more information, see Searching for Users Using the ListUsers API and Examples of Using the ListUsers API in the Amazon Cognito Developer Guide. - */ - Filter?: UserFilterType; - } - export interface ListUsersResponse { - /** - * The users returned in the request to list users. - */ - Users?: UsersListType; - /** - * An identifier that was returned from the previous call to this operation, which can be used to return the next set of items in the list. - */ - PaginationToken?: SearchPaginationTokenType; - } - export type LogoutURLsListType = RedirectUrlType[]; - export type LongType = number; - export type MFAOptionListType = MFAOptionType[]; - export interface MFAOptionType { - /** - * The delivery medium (email message or SMS message) to send the MFA code. - */ - DeliveryMedium?: DeliveryMediumType; - /** - * The attribute name of the MFA option type. - */ - AttributeName?: AttributeNameType; - } - export type MessageActionType = "RESEND"|"SUPPRESS"|string; - export interface MessageTemplateType { - /** - * The message template for SMS messages. - */ - SMSMessage?: SmsVerificationMessageType; - /** - * The message template for email messages. - */ - EmailMessage?: EmailVerificationMessageType; - /** - * The subject line for email messages. - */ - EmailSubject?: EmailVerificationSubjectType; - } - export type MessageType = string; - export interface NewDeviceMetadataType { - /** - * The device key. - */ - DeviceKey?: DeviceKeyType; - /** - * The device group key. - */ - DeviceGroupKey?: StringType; - } - export interface NumberAttributeConstraintsType { - /** - * The minimum value of an attribute that is of the number data type. - */ - MinValue?: StringType; - /** - * The maximum value of an attribute that is of the number data type. - */ - MaxValue?: StringType; - } - export type OAuthFlowType = "code"|"implicit"|"client_credentials"|string; - export type OAuthFlowsType = OAuthFlowType[]; - export type PaginationKey = string; - export type PaginationKeyType = string; - export type PasswordPolicyMinLengthType = number; - export interface PasswordPolicyType { - /** - * The minimum length of the password policy that you have set. Cannot be less than 6. - */ - MinimumLength?: PasswordPolicyMinLengthType; - /** - * In the password policy that you have set, refers to whether you have required users to use at least one uppercase letter in their password. - */ - RequireUppercase?: BooleanType; - /** - * In the password policy that you have set, refers to whether you have required users to use at least one lowercase letter in their password. - */ - RequireLowercase?: BooleanType; - /** - * In the password policy that you have set, refers to whether you have required users to use at least one number in their password. - */ - RequireNumbers?: BooleanType; - /** - * In the password policy that you have set, refers to whether you have required users to use at least one symbol in their password. - */ - RequireSymbols?: BooleanType; - } - export type PasswordType = string; - export type PoolQueryLimitType = number; - export type PreSignedUrlType = string; - export type PrecedenceType = number; - export interface ProviderDescription { - /** - * The identity provider name. - */ - ProviderName?: ProviderNameType; - /** - * The identity provider type. - */ - ProviderType?: IdentityProviderTypeType; - /** - * The date the provider was last modified. - */ - LastModifiedDate?: DateType; - /** - * The date the provider was added to the user pool. - */ - CreationDate?: DateType; - } - export type ProviderDetailsType = {[key: string]: StringType}; - export type ProviderNameType = string; - export type ProviderNameTypeV1 = string; - export interface ProviderUserIdentifierType { - /** - * The name of the provider, for example, Facebook, Google, or Login with Amazon. - */ - ProviderName?: ProviderNameType; - /** - * The name of the provider attribute to link to, for example, NameID. - */ - ProviderAttributeName?: StringType; - /** - * The value of the provider attribute to link to, for example, xxxxx_account. - */ - ProviderAttributeValue?: StringType; - } - export type ProvidersListType = ProviderDescription[]; - export type QueryLimit = number; - export type QueryLimitType = number; - export type RedirectUrlType = string; - export type RefreshTokenValidityType = number; - export interface ResendConfirmationCodeRequest { - /** - * The ID of the client associated with the user pool. - */ - ClientId: ClientIdType; - /** - * A keyed-hash message authentication code (HMAC) calculated using the secret key of a user pool client and username plus the client ID in the message. - */ - SecretHash?: SecretHashType; - /** - * The user name of the user to whom you wish to resend a confirmation code. - */ - Username: UsernameType; - } - export interface ResendConfirmationCodeResponse { - /** - * The code delivery details returned by the server in response to the request to resend the confirmation code. - */ - CodeDeliveryDetails?: CodeDeliveryDetailsType; - } - export type ResourceServerIdentifierType = string; - export type ResourceServerNameType = string; - export type ResourceServerScopeDescriptionType = string; - export type ResourceServerScopeListType = ResourceServerScopeType[]; - export type ResourceServerScopeNameType = string; - export interface ResourceServerScopeType { - /** - * The name of the scope. - */ - ScopeName: ResourceServerScopeNameType; - /** - * A description of the scope. - */ - ScopeDescription: ResourceServerScopeDescriptionType; - } - export interface ResourceServerType { - /** - * The user pool ID for the user pool that hosts the resource server. - */ - UserPoolId?: UserPoolIdType; - /** - * The identifier for the resource server. - */ - Identifier?: ResourceServerIdentifierType; - /** - * The name of the resource server. - */ - Name?: ResourceServerNameType; - /** - * A list of scopes that are defined for the resource server. - */ - Scopes?: ResourceServerScopeListType; - } - export type ResourceServersListType = ResourceServerType[]; - export interface RespondToAuthChallengeRequest { - /** - * The app client ID. - */ - ClientId: ClientIdType; - /** - * The challenge name. For more information, see InitiateAuth. ADMIN_NO_SRP_AUTH is not a valid value. - */ - ChallengeName: ChallengeNameType; - /** - * The session which should be passed both ways in challenge-response calls to the service. If InitiateAuth or RespondToAuthChallenge API call determines that the caller needs to go through another challenge, they return a session with other challenge parameters. This session should be passed as it is to the next RespondToAuthChallenge API call. - */ - Session?: SessionType; - /** - * The challenge responses. These are inputs corresponding to the value of ChallengeName, for example: SMS_MFA: SMS_MFA_CODE, USERNAME, SECRET_HASH (if app client is configured with client secret). PASSWORD_VERIFIER: PASSWORD_CLAIM_SIGNATURE, PASSWORD_CLAIM_SECRET_BLOCK, TIMESTAMP, USERNAME, SECRET_HASH (if app client is configured with client secret). NEW_PASSWORD_REQUIRED: NEW_PASSWORD, any other required attributes, USERNAME, SECRET_HASH (if app client is configured with client secret). - */ - ChallengeResponses?: ChallengeResponsesType; - } - export interface RespondToAuthChallengeResponse { - /** - * The challenge name. For more information, see InitiateAuth. - */ - ChallengeName?: ChallengeNameType; - /** - * The session which should be passed both ways in challenge-response calls to the service. If the InitiateAuth or RespondToAuthChallenge API call determines that the caller needs to go through another challenge, they return a session with other challenge parameters. This session should be passed as it is to the next RespondToAuthChallenge API call. - */ - Session?: SessionType; - /** - * The challenge parameters. For more information, see InitiateAuth. - */ - ChallengeParameters?: ChallengeParametersType; - /** - * The result returned by the server in response to the request to respond to the authentication challenge. - */ - AuthenticationResult?: AuthenticationResultType; - } - export type S3BucketType = string; - export interface SchemaAttributeType { - /** - * A schema attribute of the name type. - */ - Name?: CustomAttributeNameType; - /** - * The attribute data type. - */ - AttributeDataType?: AttributeDataType; - /** - * Specifies whether the attribute type is developer only. - */ - DeveloperOnlyAttribute?: BooleanType; - /** - * Specifies whether the attribute can be changed once it has been created. - */ - Mutable?: BooleanType; - /** - * Specifies whether a user pool attribute is required. If the attribute is required and the user does not provide a value, registration or sign-in will fail. - */ - Required?: BooleanType; - /** - * Specifies the constraints for an attribute of the number type. - */ - NumberAttributeConstraints?: NumberAttributeConstraintsType; - /** - * Specifies the constraints for an attribute of the string type. - */ - StringAttributeConstraints?: StringAttributeConstraintsType; - } - export type SchemaAttributesListType = SchemaAttributeType[]; - export type ScopeListType = ScopeType[]; - export type ScopeType = string; - export type SearchPaginationTokenType = string; - export type SearchedAttributeNamesListType = AttributeNameType[]; - export type SecretHashType = string; - export type SessionType = string; - export interface SetUICustomizationRequest { - /** - * The user pool ID for the user pool. - */ - UserPoolId: UserPoolIdType; - /** - * The client ID for the client app. - */ - ClientId?: ClientIdType; - /** - * The CSS values in the UI customization. - */ - CSS?: CSSType; - /** - * The uploaded logo image for the UI customization. - */ - ImageFile?: ImageFileType; - } - export interface SetUICustomizationResponse { - /** - * The UI customization information. - */ - UICustomization: UICustomizationType; - } - export interface SetUserSettingsRequest { - /** - * The access token for the set user settings request. - */ - AccessToken: TokenModelType; - /** - * Specifies the options for MFA (e.g., email or phone number). - */ - MFAOptions: MFAOptionListType; - } - export interface SetUserSettingsResponse { - } - export interface SignUpRequest { - /** - * The ID of the client associated with the user pool. - */ - ClientId: ClientIdType; - /** - * A keyed-hash message authentication code (HMAC) calculated using the secret key of a user pool client and username plus the client ID in the message. - */ - SecretHash?: SecretHashType; - /** - * The user name of the user you wish to register. - */ - Username: UsernameType; - /** - * The password of the user you wish to register. - */ - Password: PasswordType; - /** - * An array of name-value pairs representing user attributes. For custom attributes, you must prepend the custom: prefix to the attribute name. - */ - UserAttributes?: AttributeListType; - /** - * The validation data in the request to register a user. - */ - ValidationData?: AttributeListType; - } - export interface SignUpResponse { - /** - * A response from the server indicating that a user registration has been confirmed. - */ - UserConfirmed: BooleanType; - /** - * The code delivery details returned by the server response to the user registration request. - */ - CodeDeliveryDetails?: CodeDeliveryDetailsType; - /** - * The UUID of the authenticated user. This is not the same as username. - */ - UserSub: StringType; - } - export interface SmsConfigurationType { - /** - * The Amazon Resource Name (ARN) of the Amazon Simple Notification Service (SNS) caller. - */ - SnsCallerArn: ArnType; - /** - * The external ID. - */ - ExternalId?: StringType; - } - export type SmsVerificationMessageType = string; - export interface StartUserImportJobRequest { - /** - * The user pool ID for the user pool that the users are being imported into. - */ - UserPoolId: UserPoolIdType; - /** - * The job ID for the user import job. - */ - JobId: UserImportJobIdType; - } - export interface StartUserImportJobResponse { - /** - * The job object that represents the user import job. - */ - UserImportJob?: UserImportJobType; - } - export type StatusType = "Enabled"|"Disabled"|string; - export interface StopUserImportJobRequest { - /** - * The user pool ID for the user pool that the users are being imported into. - */ - UserPoolId: UserPoolIdType; - /** - * The job ID for the user import job. - */ - JobId: UserImportJobIdType; - } - export interface StopUserImportJobResponse { - /** - * The job object that represents the user import job. - */ - UserImportJob?: UserImportJobType; - } - export interface StringAttributeConstraintsType { - /** - * The minimum length of an attribute value of the string type. - */ - MinLength?: StringType; - /** - * The maximum length of an attribute value of the string type. - */ - MaxLength?: StringType; - } - export type StringType = string; - export type SupportedIdentityProvidersListType = ProviderNameType[]; - export type TokenModelType = string; - export interface UICustomizationType { - /** - * The user pool ID for the user pool. - */ - UserPoolId?: UserPoolIdType; - /** - * The client ID for the client app. - */ - ClientId?: ClientIdType; - /** - * The logo image for the UI customization. - */ - ImageUrl?: ImageUrlType; - /** - * The CSS values in the UI customization. - */ - CSS?: CSSType; - /** - * The CSS version number. - */ - CSSVersion?: CSSVersionType; - /** - * The last-modified date for the UI customization. - */ - LastModifiedDate?: DateType; - /** - * The creation date for the UI customization. - */ - CreationDate?: DateType; - } - export interface UpdateDeviceStatusRequest { - /** - * The access token. - */ - AccessToken: TokenModelType; - /** - * The device key. - */ - DeviceKey: DeviceKeyType; - /** - * The status of whether a device is remembered. - */ - DeviceRememberedStatus?: DeviceRememberedStatusType; - } - export interface UpdateDeviceStatusResponse { - } - export interface UpdateGroupRequest { - /** - * The name of the group. - */ - GroupName: GroupNameType; - /** - * The user pool ID for the user pool. - */ - UserPoolId: UserPoolIdType; - /** - * A string containing the new description of the group. - */ - Description?: DescriptionType; - /** - * The new role ARN for the group. This is used for setting the cognito:roles and cognito:preferred_role claims in the token. - */ - RoleArn?: ArnType; - /** - * The new precedence value for the group. For more information about this parameter, see CreateGroup. - */ - Precedence?: PrecedenceType; - } - export interface UpdateGroupResponse { - /** - * The group object for the group. - */ - Group?: GroupType; - } - export interface UpdateIdentityProviderRequest { - /** - * The user pool ID. - */ - UserPoolId: UserPoolIdType; - /** - * The identity provider name. - */ - ProviderName: ProviderNameType; - /** - * The identity provider details to be updated, such as MetadataURL and MetadataFile. - */ - ProviderDetails?: ProviderDetailsType; - /** - * The identity provider attribute mapping to be changed. - */ - AttributeMapping?: AttributeMappingType; - /** - * A list of identity provider identifiers. - */ - IdpIdentifiers?: IdpIdentifiersListType; - } - export interface UpdateIdentityProviderResponse { - /** - * The identity provider object. - */ - IdentityProvider: IdentityProviderType; - } - export interface UpdateResourceServerRequest { - /** - * The user pool ID for the user pool. - */ - UserPoolId: UserPoolIdType; - /** - * The identifier for the resource server. - */ - Identifier: ResourceServerIdentifierType; - /** - * The name of the resource server. - */ - Name: ResourceServerNameType; - /** - * The scope values to be set for the resource server. - */ - Scopes?: ResourceServerScopeListType; - } - export interface UpdateResourceServerResponse { - /** - * The resource server. - */ - ResourceServer: ResourceServerType; - } - export interface UpdateUserAttributesRequest { - /** - * An array of name-value pairs representing user attributes. For custom attributes, you must prepend the custom: prefix to the attribute name. - */ - UserAttributes: AttributeListType; - /** - * The access token for the request to update user attributes. - */ - AccessToken: TokenModelType; - } - export interface UpdateUserAttributesResponse { - /** - * The code delivery details list from the server for the request to update user attributes. - */ - CodeDeliveryDetailsList?: CodeDeliveryDetailsListType; - } - export interface UpdateUserPoolClientRequest { - /** - * The user pool ID for the user pool where you want to update the user pool client. - */ - UserPoolId: UserPoolIdType; - /** - * The ID of the client associated with the user pool. - */ - ClientId: ClientIdType; - /** - * The client name from the update user pool client request. - */ - ClientName?: ClientNameType; - /** - * The time limit, in days, after which the refresh token is no longer valid and cannot be used. - */ - RefreshTokenValidity?: RefreshTokenValidityType; - /** - * The read-only attributes of the user pool. - */ - ReadAttributes?: ClientPermissionListType; - /** - * The writeable attributes of the user pool. - */ - WriteAttributes?: ClientPermissionListType; - /** - * Explicit authentication flows. - */ - ExplicitAuthFlows?: ExplicitAuthFlowsListType; - /** - * A list of provider names for the identity providers that are supported on this client. - */ - SupportedIdentityProviders?: SupportedIdentityProvidersListType; - /** - * A list of allowed callback URLs for the identity providers. - */ - CallbackURLs?: CallbackURLsListType; - /** - * A list of allowed logout URLs for the identity providers. - */ - LogoutURLs?: LogoutURLsListType; - /** - * The default redirect URI. Must be in the CallbackURLs list. - */ - DefaultRedirectURI?: RedirectUrlType; - /** - * Set to code to initiate a code grant flow, which provides an authorization code as the response. This code can be exchanged for access tokens with the token endpoint. Set to token to specify that the client should get the access token (and, optionally, ID token, based on scopes) directly. - */ - AllowedOAuthFlows?: OAuthFlowsType; - /** - * A list of allowed OAuth scopes. Currently supported values are "phone", "email", "openid", and "Cognito". - */ - AllowedOAuthScopes?: ScopeListType; - /** - * Set to TRUE if the client is allowed to follow the OAuth protocol when interacting with Cognito user pools. - */ - AllowedOAuthFlowsUserPoolClient?: BooleanType; - } - export interface UpdateUserPoolClientResponse { - /** - * The user pool client value from the response from the server when an update user pool client request is made. - */ - UserPoolClient?: UserPoolClientType; - } - export interface UpdateUserPoolRequest { - /** - * The user pool ID for the user pool you want to update. - */ - UserPoolId: UserPoolIdType; - /** - * A container with the policies you wish to update in a user pool. - */ - Policies?: UserPoolPolicyType; - /** - * The AWS Lambda configuration information from the request to update the user pool. - */ - LambdaConfig?: LambdaConfigType; - /** - * The attributes that are automatically verified when the Amazon Cognito service makes a request to update user pools. - */ - AutoVerifiedAttributes?: VerifiedAttributesListType; - /** - * A container with information about the SMS verification message. - */ - SmsVerificationMessage?: SmsVerificationMessageType; - /** - * The contents of the email verification message. - */ - EmailVerificationMessage?: EmailVerificationMessageType; - /** - * The subject of the email verification message. - */ - EmailVerificationSubject?: EmailVerificationSubjectType; - /** - * The template for verification messages. - */ - VerificationMessageTemplate?: VerificationMessageTemplateType; - /** - * The contents of the SMS authentication message. - */ - SmsAuthenticationMessage?: SmsVerificationMessageType; - /** - * Can be one of the following values: OFF - MFA tokens are not required and cannot be specified during user registration. ON - MFA tokens are required for all user registrations. You can only specify required when you are initially creating a user pool. OPTIONAL - Users have the option when registering to create an MFA token. - */ - MfaConfiguration?: UserPoolMfaType; - /** - * Device configuration. - */ - DeviceConfiguration?: DeviceConfigurationType; - /** - * Email configuration. - */ - EmailConfiguration?: EmailConfigurationType; - /** - * SMS configuration. - */ - SmsConfiguration?: SmsConfigurationType; - /** - * The cost allocation tags for the user pool. For more information, see Adding Cost Allocation Tags to Your User Pool - */ - UserPoolTags?: UserPoolTagsType; - /** - * The configuration for AdminCreateUser requests. - */ - AdminCreateUserConfig?: AdminCreateUserConfigType; - } - export interface UpdateUserPoolResponse { - } - export type UserFilterType = string; - export type UserImportJobIdType = string; - export type UserImportJobNameType = string; - export type UserImportJobStatusType = "Created"|"Pending"|"InProgress"|"Stopping"|"Expired"|"Stopped"|"Failed"|"Succeeded"|string; - export interface UserImportJobType { - /** - * The job name for the user import job. - */ - JobName?: UserImportJobNameType; - /** - * The job ID for the user import job. - */ - JobId?: UserImportJobIdType; - /** - * The user pool ID for the user pool that the users are being imported into. - */ - UserPoolId?: UserPoolIdType; - /** - * The pre-signed URL to be used to upload the .csv file. - */ - PreSignedUrl?: PreSignedUrlType; - /** - * The date the user import job was created. - */ - CreationDate?: DateType; - /** - * The date when the user import job was started. - */ - StartDate?: DateType; - /** - * The date when the user import job was completed. - */ - CompletionDate?: DateType; - /** - * The status of the user import job. One of the following: Created - The job was created but not started. Pending - A transition state. You have started the job, but it has not begun importing users yet. InProgress - The job has started, and users are being imported. Stopping - You have stopped the job, but the job has not stopped importing users yet. Stopped - You have stopped the job, and the job has stopped importing users. Succeeded - The job has completed successfully. Failed - The job has stopped due to an error. Expired - You created a job, but did not start the job within 24-48 hours. All data associated with the job was deleted, and the job cannot be started. - */ - Status?: UserImportJobStatusType; - /** - * The role ARN for the Amazon CloudWatch Logging role for the user import job. For more information, see "Creating the CloudWatch Logs IAM Role" in the Amazon Cognito Developer Guide. - */ - CloudWatchLogsRoleArn?: ArnType; - /** - * The number of users that were successfully imported. - */ - ImportedUsers?: LongType; - /** - * The number of users that were skipped. - */ - SkippedUsers?: LongType; - /** - * The number of users that could not be imported. - */ - FailedUsers?: LongType; - /** - * The message returned when the user import job is completed. - */ - CompletionMessage?: CompletionMessageType; - } - export type UserImportJobsListType = UserImportJobType[]; - export interface UserPoolClientDescription { - /** - * The ID of the client associated with the user pool. - */ - ClientId?: ClientIdType; - /** - * The user pool ID for the user pool where you want to describe the user pool client. - */ - UserPoolId?: UserPoolIdType; - /** - * The client name from the user pool client description. - */ - ClientName?: ClientNameType; - } - export type UserPoolClientListType = UserPoolClientDescription[]; - export interface UserPoolClientType { - /** - * The user pool ID for the user pool client. - */ - UserPoolId?: UserPoolIdType; - /** - * The client name from the user pool request of the client type. - */ - ClientName?: ClientNameType; - /** - * The ID of the client associated with the user pool. - */ - ClientId?: ClientIdType; - /** - * The client secret from the user pool request of the client type. - */ - ClientSecret?: ClientSecretType; - /** - * The date the user pool client was last modified. - */ - LastModifiedDate?: DateType; - /** - * The date the user pool client was created. - */ - CreationDate?: DateType; - /** - * The time limit, in days, after which the refresh token is no longer valid and cannot be used. - */ - RefreshTokenValidity?: RefreshTokenValidityType; - /** - * The Read-only attributes. - */ - ReadAttributes?: ClientPermissionListType; - /** - * The writeable attributes. - */ - WriteAttributes?: ClientPermissionListType; - /** - * The explicit authentication flows. - */ - ExplicitAuthFlows?: ExplicitAuthFlowsListType; - /** - * A list of provider names for the identity providers that are supported on this client. - */ - SupportedIdentityProviders?: SupportedIdentityProvidersListType; - /** - * A list of allowed callback URLs for the identity providers. - */ - CallbackURLs?: CallbackURLsListType; - /** - * A list of allowed logout URLs for the identity providers. - */ - LogoutURLs?: LogoutURLsListType; - /** - * The default redirect URI. Must be in the CallbackURLs list. - */ - DefaultRedirectURI?: RedirectUrlType; - /** - * Set to code to initiate a code grant flow, which provides an authorization code as the response. This code can be exchanged for access tokens with the token endpoint. Set to token to specify that the client should get the access token (and, optionally, ID token, based on scopes) directly. - */ - AllowedOAuthFlows?: OAuthFlowsType; - /** - * A list of allowed OAuth scopes. Currently supported values are "phone", "email", "openid", and "Cognito". - */ - AllowedOAuthScopes?: ScopeListType; - /** - * Set to TRUE if the client is allowed to follow the OAuth protocol when interacting with Cognito user pools. - */ - AllowedOAuthFlowsUserPoolClient?: BooleanType; - } - export interface UserPoolDescriptionType { - /** - * The ID in a user pool description. - */ - Id?: UserPoolIdType; - /** - * The name in a user pool description. - */ - Name?: UserPoolNameType; - /** - * The AWS Lambda configuration information in a user pool description. - */ - LambdaConfig?: LambdaConfigType; - /** - * The user pool status in a user pool description. - */ - Status?: StatusType; - /** - * The date the user pool description was last modified. - */ - LastModifiedDate?: DateType; - /** - * The date the user pool description was created. - */ - CreationDate?: DateType; - } - export type UserPoolIdType = string; - export type UserPoolListType = UserPoolDescriptionType[]; - export type UserPoolMfaType = "OFF"|"ON"|"OPTIONAL"|string; - export type UserPoolNameType = string; - export interface UserPoolPolicyType { - /** - * A container for information about the user pool password policy. - */ - PasswordPolicy?: PasswordPolicyType; - } - export type UserPoolTagsType = {[key: string]: StringType}; - export interface UserPoolType { - /** - * The ID of the user pool. - */ - Id?: UserPoolIdType; - /** - * The name of the user pool. - */ - Name?: UserPoolNameType; - /** - * A container for the policies associated with a user pool. - */ - Policies?: UserPoolPolicyType; - /** - * A container for the AWS Lambda triggers associated with a user pool. - */ - LambdaConfig?: LambdaConfigType; - /** - * The status of a user pool. - */ - Status?: StatusType; - /** - * The date the user pool was last modified. - */ - LastModifiedDate?: DateType; - /** - * The date the user pool was created. - */ - CreationDate?: DateType; - /** - * A container with the schema attributes of a user pool. - */ - SchemaAttributes?: SchemaAttributesListType; - /** - * Specifies the attributes that are auto-verified in a user pool. - */ - AutoVerifiedAttributes?: VerifiedAttributesListType; - /** - * Specifies the attributes that are aliased in a user pool. - */ - AliasAttributes?: AliasAttributesListType; - /** - * Specifies whether email addresses or phone numbers can be specified as usernames when a user signs up. - */ - UsernameAttributes?: UsernameAttributesListType; - /** - * The contents of the SMS verification message. - */ - SmsVerificationMessage?: SmsVerificationMessageType; - /** - * The contents of the email verification message. - */ - EmailVerificationMessage?: EmailVerificationMessageType; - /** - * The subject of the email verification message. - */ - EmailVerificationSubject?: EmailVerificationSubjectType; - /** - * The template for verification messages. - */ - VerificationMessageTemplate?: VerificationMessageTemplateType; - /** - * The contents of the SMS authentication message. - */ - SmsAuthenticationMessage?: SmsVerificationMessageType; - /** - * Can be one of the following values: OFF - MFA tokens are not required and cannot be specified during user registration. ON - MFA tokens are required for all user registrations. You can only specify required when you are initially creating a user pool. OPTIONAL - Users have the option when registering to create an MFA token. - */ - MfaConfiguration?: UserPoolMfaType; - /** - * The device configuration. - */ - DeviceConfiguration?: DeviceConfigurationType; - /** - * A number estimating the size of the user pool. - */ - EstimatedNumberOfUsers?: IntegerType; - /** - * The email configuration. - */ - EmailConfiguration?: EmailConfigurationType; - /** - * The SMS configuration. - */ - SmsConfiguration?: SmsConfigurationType; - /** - * The cost allocation tags for the user pool. For more information, see Adding Cost Allocation Tags to Your User Pool - */ - UserPoolTags?: UserPoolTagsType; - /** - * The reason why the SMS configuration cannot send the messages to your users. - */ - SmsConfigurationFailure?: StringType; - /** - * The reason why the email configuration cannot send the messages to your users. - */ - EmailConfigurationFailure?: StringType; - /** - * The configuration for AdminCreateUser requests. - */ - AdminCreateUserConfig?: AdminCreateUserConfigType; - } - export type UserStatusType = "UNCONFIRMED"|"CONFIRMED"|"ARCHIVED"|"COMPROMISED"|"UNKNOWN"|"RESET_REQUIRED"|"FORCE_CHANGE_PASSWORD"|string; - export interface UserType { - /** - * The user name of the user you wish to describe. - */ - Username?: UsernameType; - /** - * A container with information about the user type attributes. - */ - Attributes?: AttributeListType; - /** - * The creation date of the user. - */ - UserCreateDate?: DateType; - /** - * The last modified date of the user. - */ - UserLastModifiedDate?: DateType; - /** - * Specifies whether the user is enabled. - */ - Enabled?: BooleanType; - /** - * The user status. Can be one of the following: UNCONFIRMED - User has been created but not confirmed. CONFIRMED - User has been confirmed. ARCHIVED - User is no longer active. COMPROMISED - User is disabled due to a potential security threat. UNKNOWN - User status is not known. - */ - UserStatus?: UserStatusType; - /** - * The MFA options for the user. - */ - MFAOptions?: MFAOptionListType; - } - export type UsernameAttributeType = "phone_number"|"email"|string; - export type UsernameAttributesListType = UsernameAttributeType[]; - export type UsernameType = string; - export type UsersListType = UserType[]; - export interface VerificationMessageTemplateType { - /** - * The SMS message template. - */ - SmsMessage?: SmsVerificationMessageType; - /** - * The email message template. - */ - EmailMessage?: EmailVerificationMessageType; - /** - * The subject line for the email message template. - */ - EmailSubject?: EmailVerificationSubjectType; - /** - * The email message template for sending a confirmation link to the user. - */ - EmailMessageByLink?: EmailVerificationMessageByLinkType; - /** - * The subject line for the email message template for sending a confirmation link to the user. - */ - EmailSubjectByLink?: EmailVerificationSubjectByLinkType; - /** - * The default email option. - */ - DefaultEmailOption?: DefaultEmailOptionType; - } - export type VerifiedAttributeType = "phone_number"|"email"|string; - export type VerifiedAttributesListType = VerifiedAttributeType[]; - export interface VerifyUserAttributeRequest { - /** - * Represents the access token of the request to verify user attributes. - */ - AccessToken: TokenModelType; - /** - * The attribute name in the request to verify user attributes. - */ - AttributeName: AttributeNameType; - /** - * The verification code in the request to verify user attributes. - */ - Code: ConfirmationCodeType; - } - export interface VerifyUserAttributeResponse { - } - /** - * A string in YYYY-MM-DD format that represents the latest possible API version that can be used in this service. Specify 'latest' to use the latest possible version. - */ - export type apiVersion = "2016-04-18"|"latest"|string; - export interface ClientApiVersions { - /** - * A string in YYYY-MM-DD format that represents the latest possible API version that can be used in this service. Specify 'latest' to use the latest possible version. - */ - apiVersion?: apiVersion; - } - export type ClientConfiguration = ServiceConfigurationOptions & ClientApiVersions; - /** - * Contains interfaces for use with the CognitoIdentityServiceProvider client. - */ - export import Types = CognitoIdentityServiceProvider; -} -export = CognitoIdentityServiceProvider; diff --git a/workshops/monte-carlo-on-ec2-spot-fleet/src/web/node_modules/aws-sdk/clients/cognitoidentityserviceprovider.js b/workshops/monte-carlo-on-ec2-spot-fleet/src/web/node_modules/aws-sdk/clients/cognitoidentityserviceprovider.js deleted file mode 100644 index 900fe1fe..00000000 --- a/workshops/monte-carlo-on-ec2-spot-fleet/src/web/node_modules/aws-sdk/clients/cognitoidentityserviceprovider.js +++ /dev/null @@ -1,18 +0,0 @@ -require('../lib/node_loader'); -var AWS = require('../lib/core'); -var Service = AWS.Service; -var apiLoader = AWS.apiLoader; - -apiLoader.services['cognitoidentityserviceprovider'] = {}; -AWS.CognitoIdentityServiceProvider = Service.defineService('cognitoidentityserviceprovider', ['2016-04-18']); -Object.defineProperty(apiLoader.services['cognitoidentityserviceprovider'], '2016-04-18', { - get: function get() { - var model = require('../apis/cognito-idp-2016-04-18.min.json'); - model.paginators = require('../apis/cognito-idp-2016-04-18.paginators.json').pagination; - return model; - }, - enumerable: true, - configurable: true -}); - -module.exports = AWS.CognitoIdentityServiceProvider; diff --git a/workshops/monte-carlo-on-ec2-spot-fleet/src/web/node_modules/aws-sdk/clients/cognitosync.d.ts b/workshops/monte-carlo-on-ec2-spot-fleet/src/web/node_modules/aws-sdk/clients/cognitosync.d.ts deleted file mode 100644 index 9e1218d4..00000000 --- a/workshops/monte-carlo-on-ec2-spot-fleet/src/web/node_modules/aws-sdk/clients/cognitosync.d.ts +++ /dev/null @@ -1,748 +0,0 @@ -import {Request} from '../lib/request'; -import {Response} from '../lib/response'; -import {AWSError} from '../lib/error'; -import {Service} from '../lib/service'; -import {ServiceConfigurationOptions} from '../lib/service'; -import {ConfigBase as Config} from '../lib/config'; -interface Blob {} -declare class CognitoSync extends Service { - /** - * Constructs a service object. This object has one method for each API operation. - */ - constructor(options?: CognitoSync.Types.ClientConfiguration) - config: Config & CognitoSync.Types.ClientConfiguration; - /** - * Initiates a bulk publish of all existing datasets for an Identity Pool to the configured stream. Customers are limited to one successful bulk publish per 24 hours. Bulk publish is an asynchronous request, customers can see the status of the request via the GetBulkPublishDetails operation. This API can only be called with developer credentials. You cannot call this API with the temporary user credentials provided by Cognito Identity. - */ - bulkPublish(params: CognitoSync.Types.BulkPublishRequest, callback?: (err: AWSError, data: CognitoSync.Types.BulkPublishResponse) => void): Request; - /** - * Initiates a bulk publish of all existing datasets for an Identity Pool to the configured stream. Customers are limited to one successful bulk publish per 24 hours. Bulk publish is an asynchronous request, customers can see the status of the request via the GetBulkPublishDetails operation. This API can only be called with developer credentials. You cannot call this API with the temporary user credentials provided by Cognito Identity. - */ - bulkPublish(callback?: (err: AWSError, data: CognitoSync.Types.BulkPublishResponse) => void): Request; - /** - * Deletes the specific dataset. The dataset will be deleted permanently, and the action can't be undone. Datasets that this dataset was merged with will no longer report the merge. Any subsequent operation on this dataset will result in a ResourceNotFoundException. This API can be called with temporary user credentials provided by Cognito Identity or with developer credentials. - */ - deleteDataset(params: CognitoSync.Types.DeleteDatasetRequest, callback?: (err: AWSError, data: CognitoSync.Types.DeleteDatasetResponse) => void): Request; - /** - * Deletes the specific dataset. The dataset will be deleted permanently, and the action can't be undone. Datasets that this dataset was merged with will no longer report the merge. Any subsequent operation on this dataset will result in a ResourceNotFoundException. This API can be called with temporary user credentials provided by Cognito Identity or with developer credentials. - */ - deleteDataset(callback?: (err: AWSError, data: CognitoSync.Types.DeleteDatasetResponse) => void): Request; - /** - * Gets meta data about a dataset by identity and dataset name. With Amazon Cognito Sync, each identity has access only to its own data. Thus, the credentials used to make this API call need to have access to the identity data. This API can be called with temporary user credentials provided by Cognito Identity or with developer credentials. You should use Cognito Identity credentials to make this API call. - */ - describeDataset(params: CognitoSync.Types.DescribeDatasetRequest, callback?: (err: AWSError, data: CognitoSync.Types.DescribeDatasetResponse) => void): Request; - /** - * Gets meta data about a dataset by identity and dataset name. With Amazon Cognito Sync, each identity has access only to its own data. Thus, the credentials used to make this API call need to have access to the identity data. This API can be called with temporary user credentials provided by Cognito Identity or with developer credentials. You should use Cognito Identity credentials to make this API call. - */ - describeDataset(callback?: (err: AWSError, data: CognitoSync.Types.DescribeDatasetResponse) => void): Request; - /** - * Gets usage details (for example, data storage) about a particular identity pool. This API can only be called with developer credentials. You cannot call this API with the temporary user credentials provided by Cognito Identity. - */ - describeIdentityPoolUsage(params: CognitoSync.Types.DescribeIdentityPoolUsageRequest, callback?: (err: AWSError, data: CognitoSync.Types.DescribeIdentityPoolUsageResponse) => void): Request; - /** - * Gets usage details (for example, data storage) about a particular identity pool. This API can only be called with developer credentials. You cannot call this API with the temporary user credentials provided by Cognito Identity. - */ - describeIdentityPoolUsage(callback?: (err: AWSError, data: CognitoSync.Types.DescribeIdentityPoolUsageResponse) => void): Request; - /** - * Gets usage information for an identity, including number of datasets and data usage. This API can be called with temporary user credentials provided by Cognito Identity or with developer credentials. - */ - describeIdentityUsage(params: CognitoSync.Types.DescribeIdentityUsageRequest, callback?: (err: AWSError, data: CognitoSync.Types.DescribeIdentityUsageResponse) => void): Request; - /** - * Gets usage information for an identity, including number of datasets and data usage. This API can be called with temporary user credentials provided by Cognito Identity or with developer credentials. - */ - describeIdentityUsage(callback?: (err: AWSError, data: CognitoSync.Types.DescribeIdentityUsageResponse) => void): Request; - /** - * Get the status of the last BulkPublish operation for an identity pool. This API can only be called with developer credentials. You cannot call this API with the temporary user credentials provided by Cognito Identity. - */ - getBulkPublishDetails(params: CognitoSync.Types.GetBulkPublishDetailsRequest, callback?: (err: AWSError, data: CognitoSync.Types.GetBulkPublishDetailsResponse) => void): Request; - /** - * Get the status of the last BulkPublish operation for an identity pool. This API can only be called with developer credentials. You cannot call this API with the temporary user credentials provided by Cognito Identity. - */ - getBulkPublishDetails(callback?: (err: AWSError, data: CognitoSync.Types.GetBulkPublishDetailsResponse) => void): Request; - /** - * Gets the events and the corresponding Lambda functions associated with an identity pool. This API can only be called with developer credentials. You cannot call this API with the temporary user credentials provided by Cognito Identity. - */ - getCognitoEvents(params: CognitoSync.Types.GetCognitoEventsRequest, callback?: (err: AWSError, data: CognitoSync.Types.GetCognitoEventsResponse) => void): Request; - /** - * Gets the events and the corresponding Lambda functions associated with an identity pool. This API can only be called with developer credentials. You cannot call this API with the temporary user credentials provided by Cognito Identity. - */ - getCognitoEvents(callback?: (err: AWSError, data: CognitoSync.Types.GetCognitoEventsResponse) => void): Request; - /** - * Gets the configuration settings of an identity pool. This API can only be called with developer credentials. You cannot call this API with the temporary user credentials provided by Cognito Identity. - */ - getIdentityPoolConfiguration(params: CognitoSync.Types.GetIdentityPoolConfigurationRequest, callback?: (err: AWSError, data: CognitoSync.Types.GetIdentityPoolConfigurationResponse) => void): Request; - /** - * Gets the configuration settings of an identity pool. This API can only be called with developer credentials. You cannot call this API with the temporary user credentials provided by Cognito Identity. - */ - getIdentityPoolConfiguration(callback?: (err: AWSError, data: CognitoSync.Types.GetIdentityPoolConfigurationResponse) => void): Request; - /** - * Lists datasets for an identity. With Amazon Cognito Sync, each identity has access only to its own data. Thus, the credentials used to make this API call need to have access to the identity data. ListDatasets can be called with temporary user credentials provided by Cognito Identity or with developer credentials. You should use the Cognito Identity credentials to make this API call. - */ - listDatasets(params: CognitoSync.Types.ListDatasetsRequest, callback?: (err: AWSError, data: CognitoSync.Types.ListDatasetsResponse) => void): Request; - /** - * Lists datasets for an identity. With Amazon Cognito Sync, each identity has access only to its own data. Thus, the credentials used to make this API call need to have access to the identity data. ListDatasets can be called with temporary user credentials provided by Cognito Identity or with developer credentials. You should use the Cognito Identity credentials to make this API call. - */ - listDatasets(callback?: (err: AWSError, data: CognitoSync.Types.ListDatasetsResponse) => void): Request; - /** - * Gets a list of identity pools registered with Cognito. ListIdentityPoolUsage can only be called with developer credentials. You cannot make this API call with the temporary user credentials provided by Cognito Identity. - */ - listIdentityPoolUsage(params: CognitoSync.Types.ListIdentityPoolUsageRequest, callback?: (err: AWSError, data: CognitoSync.Types.ListIdentityPoolUsageResponse) => void): Request; - /** - * Gets a list of identity pools registered with Cognito. ListIdentityPoolUsage can only be called with developer credentials. You cannot make this API call with the temporary user credentials provided by Cognito Identity. - */ - listIdentityPoolUsage(callback?: (err: AWSError, data: CognitoSync.Types.ListIdentityPoolUsageResponse) => void): Request; - /** - * Gets paginated records, optionally changed after a particular sync count for a dataset and identity. With Amazon Cognito Sync, each identity has access only to its own data. Thus, the credentials used to make this API call need to have access to the identity data. ListRecords can be called with temporary user credentials provided by Cognito Identity or with developer credentials. You should use Cognito Identity credentials to make this API call. - */ - listRecords(params: CognitoSync.Types.ListRecordsRequest, callback?: (err: AWSError, data: CognitoSync.Types.ListRecordsResponse) => void): Request; - /** - * Gets paginated records, optionally changed after a particular sync count for a dataset and identity. With Amazon Cognito Sync, each identity has access only to its own data. Thus, the credentials used to make this API call need to have access to the identity data. ListRecords can be called with temporary user credentials provided by Cognito Identity or with developer credentials. You should use Cognito Identity credentials to make this API call. - */ - listRecords(callback?: (err: AWSError, data: CognitoSync.Types.ListRecordsResponse) => void): Request; - /** - * Registers a device to receive push sync notifications. This API can only be called with temporary credentials provided by Cognito Identity. You cannot call this API with developer credentials. - */ - registerDevice(params: CognitoSync.Types.RegisterDeviceRequest, callback?: (err: AWSError, data: CognitoSync.Types.RegisterDeviceResponse) => void): Request; - /** - * Registers a device to receive push sync notifications. This API can only be called with temporary credentials provided by Cognito Identity. You cannot call this API with developer credentials. - */ - registerDevice(callback?: (err: AWSError, data: CognitoSync.Types.RegisterDeviceResponse) => void): Request; - /** - * Sets the AWS Lambda function for a given event type for an identity pool. This request only updates the key/value pair specified. Other key/values pairs are not updated. To remove a key value pair, pass a empty value for the particular key. This API can only be called with developer credentials. You cannot call this API with the temporary user credentials provided by Cognito Identity. - */ - setCognitoEvents(params: CognitoSync.Types.SetCognitoEventsRequest, callback?: (err: AWSError, data: {}) => void): Request<{}, AWSError>; - /** - * Sets the AWS Lambda function for a given event type for an identity pool. This request only updates the key/value pair specified. Other key/values pairs are not updated. To remove a key value pair, pass a empty value for the particular key. This API can only be called with developer credentials. You cannot call this API with the temporary user credentials provided by Cognito Identity. - */ - setCognitoEvents(callback?: (err: AWSError, data: {}) => void): Request<{}, AWSError>; - /** - * Sets the necessary configuration for push sync. This API can only be called with developer credentials. You cannot call this API with the temporary user credentials provided by Cognito Identity. - */ - setIdentityPoolConfiguration(params: CognitoSync.Types.SetIdentityPoolConfigurationRequest, callback?: (err: AWSError, data: CognitoSync.Types.SetIdentityPoolConfigurationResponse) => void): Request; - /** - * Sets the necessary configuration for push sync. This API can only be called with developer credentials. You cannot call this API with the temporary user credentials provided by Cognito Identity. - */ - setIdentityPoolConfiguration(callback?: (err: AWSError, data: CognitoSync.Types.SetIdentityPoolConfigurationResponse) => void): Request; - /** - * Subscribes to receive notifications when a dataset is modified by another device. This API can only be called with temporary credentials provided by Cognito Identity. You cannot call this API with developer credentials. - */ - subscribeToDataset(params: CognitoSync.Types.SubscribeToDatasetRequest, callback?: (err: AWSError, data: CognitoSync.Types.SubscribeToDatasetResponse) => void): Request; - /** - * Subscribes to receive notifications when a dataset is modified by another device. This API can only be called with temporary credentials provided by Cognito Identity. You cannot call this API with developer credentials. - */ - subscribeToDataset(callback?: (err: AWSError, data: CognitoSync.Types.SubscribeToDatasetResponse) => void): Request; - /** - * Unsubscribes from receiving notifications when a dataset is modified by another device. This API can only be called with temporary credentials provided by Cognito Identity. You cannot call this API with developer credentials. - */ - unsubscribeFromDataset(params: CognitoSync.Types.UnsubscribeFromDatasetRequest, callback?: (err: AWSError, data: CognitoSync.Types.UnsubscribeFromDatasetResponse) => void): Request; - /** - * Unsubscribes from receiving notifications when a dataset is modified by another device. This API can only be called with temporary credentials provided by Cognito Identity. You cannot call this API with developer credentials. - */ - unsubscribeFromDataset(callback?: (err: AWSError, data: CognitoSync.Types.UnsubscribeFromDatasetResponse) => void): Request; - /** - * Posts updates to records and adds and deletes records for a dataset and user. The sync count in the record patch is your last known sync count for that record. The server will reject an UpdateRecords request with a ResourceConflictException if you try to patch a record with a new value but a stale sync count. For example, if the sync count on the server is 5 for a key called highScore and you try and submit a new highScore with sync count of 4, the request will be rejected. To obtain the current sync count for a record, call ListRecords. On a successful update of the record, the response returns the new sync count for that record. You should present that sync count the next time you try to update that same record. When the record does not exist, specify the sync count as 0. This API can be called with temporary user credentials provided by Cognito Identity or with developer credentials. - */ - updateRecords(params: CognitoSync.Types.UpdateRecordsRequest, callback?: (err: AWSError, data: CognitoSync.Types.UpdateRecordsResponse) => void): Request; - /** - * Posts updates to records and adds and deletes records for a dataset and user. The sync count in the record patch is your last known sync count for that record. The server will reject an UpdateRecords request with a ResourceConflictException if you try to patch a record with a new value but a stale sync count. For example, if the sync count on the server is 5 for a key called highScore and you try and submit a new highScore with sync count of 4, the request will be rejected. To obtain the current sync count for a record, call ListRecords. On a successful update of the record, the response returns the new sync count for that record. You should present that sync count the next time you try to update that same record. When the record does not exist, specify the sync count as 0. This API can be called with temporary user credentials provided by Cognito Identity or with developer credentials. - */ - updateRecords(callback?: (err: AWSError, data: CognitoSync.Types.UpdateRecordsResponse) => void): Request; -} -declare namespace CognitoSync { - export type ApplicationArn = string; - export type ApplicationArnList = ApplicationArn[]; - export type AssumeRoleArn = string; - export type Boolean = boolean; - export interface BulkPublishRequest { - /** - * A name-spaced GUID (for example, us-east-1:23EC4050-6AEA-7089-A2DD-08002EXAMPLE) created by Amazon Cognito. GUID generation is unique within a region. - */ - IdentityPoolId: IdentityPoolId; - } - export interface BulkPublishResponse { - /** - * A name-spaced GUID (for example, us-east-1:23EC4050-6AEA-7089-A2DD-08002EXAMPLE) created by Amazon Cognito. GUID generation is unique within a region. - */ - IdentityPoolId?: IdentityPoolId; - } - export type BulkPublishStatus = "NOT_STARTED"|"IN_PROGRESS"|"FAILED"|"SUCCEEDED"|string; - export type ClientContext = string; - export type CognitoEventType = string; - export interface CognitoStreams { - /** - * The name of the Cognito stream to receive updates. This stream must be in the developers account and in the same region as the identity pool. - */ - StreamName?: StreamName; - /** - * The ARN of the role Amazon Cognito can assume in order to publish to the stream. This role must grant access to Amazon Cognito (cognito-sync) to invoke PutRecord on your Cognito stream. - */ - RoleArn?: AssumeRoleArn; - /** - * Status of the Cognito streams. Valid values are: ENABLED - Streaming of updates to identity pool is enabled. DISABLED - Streaming of updates to identity pool is disabled. Bulk publish will also fail if StreamingStatus is DISABLED. - */ - StreamingStatus?: StreamingStatus; - } - export interface Dataset { - /** - * A name-spaced GUID (for example, us-east-1:23EC4050-6AEA-7089-A2DD-08002EXAMPLE) created by Amazon Cognito. GUID generation is unique within a region. - */ - IdentityId?: IdentityId; - /** - * A string of up to 128 characters. Allowed characters are a-z, A-Z, 0-9, '_' (underscore), '-' (dash), and '.' (dot). - */ - DatasetName?: DatasetName; - /** - * Date on which the dataset was created. - */ - CreationDate?: _Date; - /** - * Date when the dataset was last modified. - */ - LastModifiedDate?: _Date; - /** - * The device that made the last change to this dataset. - */ - LastModifiedBy?: String; - /** - * Total size in bytes of the records in this dataset. - */ - DataStorage?: Long; - /** - * Number of records in this dataset. - */ - NumRecords?: Long; - } - export type DatasetList = Dataset[]; - export type DatasetName = string; - export type _Date = Date; - export interface DeleteDatasetRequest { - /** - * A name-spaced GUID (for example, us-east-1:23EC4050-6AEA-7089-A2DD-08002EXAMPLE) created by Amazon Cognito. GUID generation is unique within a region. - */ - IdentityPoolId: IdentityPoolId; - /** - * A name-spaced GUID (for example, us-east-1:23EC4050-6AEA-7089-A2DD-08002EXAMPLE) created by Amazon Cognito. GUID generation is unique within a region. - */ - IdentityId: IdentityId; - /** - * A string of up to 128 characters. Allowed characters are a-z, A-Z, 0-9, '_' (underscore), '-' (dash), and '.' (dot). - */ - DatasetName: DatasetName; - } - export interface DeleteDatasetResponse { - /** - * A collection of data for an identity pool. An identity pool can have multiple datasets. A dataset is per identity and can be general or associated with a particular entity in an application (like a saved game). Datasets are automatically created if they don't exist. Data is synced by dataset, and a dataset can hold up to 1MB of key-value pairs. - */ - Dataset?: Dataset; - } - export interface DescribeDatasetRequest { - /** - * A name-spaced GUID (for example, us-east-1:23EC4050-6AEA-7089-A2DD-08002EXAMPLE) created by Amazon Cognito. GUID generation is unique within a region. - */ - IdentityPoolId: IdentityPoolId; - /** - * A name-spaced GUID (for example, us-east-1:23EC4050-6AEA-7089-A2DD-08002EXAMPLE) created by Amazon Cognito. GUID generation is unique within a region. - */ - IdentityId: IdentityId; - /** - * A string of up to 128 characters. Allowed characters are a-z, A-Z, 0-9, '_' (underscore), '-' (dash), and '.' (dot). - */ - DatasetName: DatasetName; - } - export interface DescribeDatasetResponse { - /** - * Meta data for a collection of data for an identity. An identity can have multiple datasets. A dataset can be general or associated with a particular entity in an application (like a saved game). Datasets are automatically created if they don't exist. Data is synced by dataset, and a dataset can hold up to 1MB of key-value pairs. - */ - Dataset?: Dataset; - } - export interface DescribeIdentityPoolUsageRequest { - /** - * A name-spaced GUID (for example, us-east-1:23EC4050-6AEA-7089-A2DD-08002EXAMPLE) created by Amazon Cognito. GUID generation is unique within a region. - */ - IdentityPoolId: IdentityPoolId; - } - export interface DescribeIdentityPoolUsageResponse { - /** - * Information about the usage of the identity pool. - */ - IdentityPoolUsage?: IdentityPoolUsage; - } - export interface DescribeIdentityUsageRequest { - /** - * A name-spaced GUID (for example, us-east-1:23EC4050-6AEA-7089-A2DD-08002EXAMPLE) created by Amazon Cognito. GUID generation is unique within a region. - */ - IdentityPoolId: IdentityPoolId; - /** - * A name-spaced GUID (for example, us-east-1:23EC4050-6AEA-7089-A2DD-08002EXAMPLE) created by Amazon Cognito. GUID generation is unique within a region. - */ - IdentityId: IdentityId; - } - export interface DescribeIdentityUsageResponse { - /** - * Usage information for the identity. - */ - IdentityUsage?: IdentityUsage; - } - export type DeviceId = string; - export type Events = {[key: string]: LambdaFunctionArn}; - export type ExceptionMessage = string; - export interface GetBulkPublishDetailsRequest { - /** - * A name-spaced GUID (for example, us-east-1:23EC4050-6AEA-7089-A2DD-08002EXAMPLE) created by Amazon Cognito. GUID generation is unique within a region. - */ - IdentityPoolId: IdentityPoolId; - } - export interface GetBulkPublishDetailsResponse { - /** - * A name-spaced GUID (for example, us-east-1:23EC4050-6AEA-7089-A2DD-08002EXAMPLE) created by Amazon Cognito. GUID generation is unique within a region. - */ - IdentityPoolId?: IdentityPoolId; - /** - * The date/time at which the last bulk publish was initiated. - */ - BulkPublishStartTime?: _Date; - /** - * If BulkPublishStatus is SUCCEEDED, the time the last bulk publish operation completed. - */ - BulkPublishCompleteTime?: _Date; - /** - * Status of the last bulk publish operation, valid values are: NOT_STARTED - No bulk publish has been requested for this identity pool IN_PROGRESS - Data is being published to the configured stream SUCCEEDED - All data for the identity pool has been published to the configured stream FAILED - Some portion of the data has failed to publish, check FailureMessage for the cause. - */ - BulkPublishStatus?: BulkPublishStatus; - /** - * If BulkPublishStatus is FAILED this field will contain the error message that caused the bulk publish to fail. - */ - FailureMessage?: String; - } - export interface GetCognitoEventsRequest { - /** - * The Cognito Identity Pool ID for the request - */ - IdentityPoolId: IdentityPoolId; - } - export interface GetCognitoEventsResponse { - /** - * The Cognito Events returned from the GetCognitoEvents request - */ - Events?: Events; - } - export interface GetIdentityPoolConfigurationRequest { - /** - * A name-spaced GUID (for example, us-east-1:23EC4050-6AEA-7089-A2DD-08002EXAMPLE) created by Amazon Cognito. This is the ID of the pool for which to return a configuration. - */ - IdentityPoolId: IdentityPoolId; - } - export interface GetIdentityPoolConfigurationResponse { - /** - * A name-spaced GUID (for example, us-east-1:23EC4050-6AEA-7089-A2DD-08002EXAMPLE) created by Amazon Cognito. - */ - IdentityPoolId?: IdentityPoolId; - /** - * Options to apply to this identity pool for push synchronization. - */ - PushSync?: PushSync; - /** - * Options to apply to this identity pool for Amazon Cognito streams. - */ - CognitoStreams?: CognitoStreams; - } - export type IdentityId = string; - export type IdentityPoolId = string; - export interface IdentityPoolUsage { - /** - * A name-spaced GUID (for example, us-east-1:23EC4050-6AEA-7089-A2DD-08002EXAMPLE) created by Amazon Cognito. GUID generation is unique within a region. - */ - IdentityPoolId?: IdentityPoolId; - /** - * Number of sync sessions for the identity pool. - */ - SyncSessionsCount?: Long; - /** - * Data storage information for the identity pool. - */ - DataStorage?: Long; - /** - * Date on which the identity pool was last modified. - */ - LastModifiedDate?: _Date; - } - export type IdentityPoolUsageList = IdentityPoolUsage[]; - export interface IdentityUsage { - /** - * A name-spaced GUID (for example, us-east-1:23EC4050-6AEA-7089-A2DD-08002EXAMPLE) created by Amazon Cognito. GUID generation is unique within a region. - */ - IdentityId?: IdentityId; - /** - * A name-spaced GUID (for example, us-east-1:23EC4050-6AEA-7089-A2DD-08002EXAMPLE) created by Amazon Cognito. GUID generation is unique within a region. - */ - IdentityPoolId?: IdentityPoolId; - /** - * Date on which the identity was last modified. - */ - LastModifiedDate?: _Date; - /** - * Number of datasets for the identity. - */ - DatasetCount?: Integer; - /** - * Total data storage for this identity. - */ - DataStorage?: Long; - } - export type Integer = number; - export type IntegerString = number; - export type LambdaFunctionArn = string; - export interface ListDatasetsRequest { - /** - * A name-spaced GUID (for example, us-east-1:23EC4050-6AEA-7089-A2DD-08002EXAMPLE) created by Amazon Cognito. GUID generation is unique within a region. - */ - IdentityPoolId: IdentityPoolId; - /** - * A name-spaced GUID (for example, us-east-1:23EC4050-6AEA-7089-A2DD-08002EXAMPLE) created by Amazon Cognito. GUID generation is unique within a region. - */ - IdentityId: IdentityId; - /** - * A pagination token for obtaining the next page of results. - */ - NextToken?: String; - /** - * The maximum number of results to be returned. - */ - MaxResults?: IntegerString; - } - export interface ListDatasetsResponse { - /** - * A set of datasets. - */ - Datasets?: DatasetList; - /** - * Number of datasets returned. - */ - Count?: Integer; - /** - * A pagination token for obtaining the next page of results. - */ - NextToken?: String; - } - export interface ListIdentityPoolUsageRequest { - /** - * A pagination token for obtaining the next page of results. - */ - NextToken?: String; - /** - * The maximum number of results to be returned. - */ - MaxResults?: IntegerString; - } - export interface ListIdentityPoolUsageResponse { - /** - * Usage information for the identity pools. - */ - IdentityPoolUsages?: IdentityPoolUsageList; - /** - * The maximum number of results to be returned. - */ - MaxResults?: Integer; - /** - * Total number of identities for the identity pool. - */ - Count?: Integer; - /** - * A pagination token for obtaining the next page of results. - */ - NextToken?: String; - } - export interface ListRecordsRequest { - /** - * A name-spaced GUID (for example, us-east-1:23EC4050-6AEA-7089-A2DD-08002EXAMPLE) created by Amazon Cognito. GUID generation is unique within a region. - */ - IdentityPoolId: IdentityPoolId; - /** - * A name-spaced GUID (for example, us-east-1:23EC4050-6AEA-7089-A2DD-08002EXAMPLE) created by Amazon Cognito. GUID generation is unique within a region. - */ - IdentityId: IdentityId; - /** - * A string of up to 128 characters. Allowed characters are a-z, A-Z, 0-9, '_' (underscore), '-' (dash), and '.' (dot). - */ - DatasetName: DatasetName; - /** - * The last server sync count for this record. - */ - LastSyncCount?: Long; - /** - * A pagination token for obtaining the next page of results. - */ - NextToken?: String; - /** - * The maximum number of results to be returned. - */ - MaxResults?: IntegerString; - /** - * A token containing a session ID, identity ID, and expiration. - */ - SyncSessionToken?: SyncSessionToken; - } - export interface ListRecordsResponse { - /** - * A list of all records. - */ - Records?: RecordList; - /** - * A pagination token for obtaining the next page of results. - */ - NextToken?: String; - /** - * Total number of records. - */ - Count?: Integer; - /** - * Server sync count for this dataset. - */ - DatasetSyncCount?: Long; - /** - * The user/device that made the last change to this record. - */ - LastModifiedBy?: String; - /** - * Names of merged datasets. - */ - MergedDatasetNames?: MergedDatasetNameList; - /** - * Indicates whether the dataset exists. - */ - DatasetExists?: Boolean; - /** - * A boolean value specifying whether to delete the dataset locally. - */ - DatasetDeletedAfterRequestedSyncCount?: Boolean; - /** - * A token containing a session ID, identity ID, and expiration. - */ - SyncSessionToken?: String; - } - export type Long = number; - export type MergedDatasetNameList = String[]; - export type Operation = "replace"|"remove"|string; - export type Platform = "APNS"|"APNS_SANDBOX"|"GCM"|"ADM"|string; - export interface PushSync { - /** - * List of SNS platform application ARNs that could be used by clients. - */ - ApplicationArns?: ApplicationArnList; - /** - * A role configured to allow Cognito to call SNS on behalf of the developer. - */ - RoleArn?: AssumeRoleArn; - } - export type PushToken = string; - export interface Record { - /** - * The key for the record. - */ - Key?: RecordKey; - /** - * The value for the record. - */ - Value?: RecordValue; - /** - * The server sync count for this record. - */ - SyncCount?: Long; - /** - * The date on which the record was last modified. - */ - LastModifiedDate?: _Date; - /** - * The user/device that made the last change to this record. - */ - LastModifiedBy?: String; - /** - * The last modified date of the client device. - */ - DeviceLastModifiedDate?: _Date; - } - export type RecordKey = string; - export type RecordList = Record[]; - export interface RecordPatch { - /** - * An operation, either replace or remove. - */ - Op: Operation; - /** - * The key associated with the record patch. - */ - Key: RecordKey; - /** - * The value associated with the record patch. - */ - Value?: RecordValue; - /** - * Last known server sync count for this record. Set to 0 if unknown. - */ - SyncCount: Long; - /** - * The last modified date of the client device. - */ - DeviceLastModifiedDate?: _Date; - } - export type RecordPatchList = RecordPatch[]; - export type RecordValue = string; - export interface RegisterDeviceRequest { - /** - * A name-spaced GUID (for example, us-east-1:23EC4050-6AEA-7089-A2DD-08002EXAMPLE) created by Amazon Cognito. Here, the ID of the pool that the identity belongs to. - */ - IdentityPoolId: IdentityPoolId; - /** - * The unique ID for this identity. - */ - IdentityId: IdentityId; - /** - * The SNS platform type (e.g. GCM, SDM, APNS, APNS_SANDBOX). - */ - Platform: Platform; - /** - * The push token. - */ - Token: PushToken; - } - export interface RegisterDeviceResponse { - /** - * The unique ID generated for this device by Cognito. - */ - DeviceId?: DeviceId; - } - export interface SetCognitoEventsRequest { - /** - * The Cognito Identity Pool to use when configuring Cognito Events - */ - IdentityPoolId: IdentityPoolId; - /** - * The events to configure - */ - Events: Events; - } - export interface SetIdentityPoolConfigurationRequest { - /** - * A name-spaced GUID (for example, us-east-1:23EC4050-6AEA-7089-A2DD-08002EXAMPLE) created by Amazon Cognito. This is the ID of the pool to modify. - */ - IdentityPoolId: IdentityPoolId; - /** - * Options to apply to this identity pool for push synchronization. - */ - PushSync?: PushSync; - /** - * Options to apply to this identity pool for Amazon Cognito streams. - */ - CognitoStreams?: CognitoStreams; - } - export interface SetIdentityPoolConfigurationResponse { - /** - * A name-spaced GUID (for example, us-east-1:23EC4050-6AEA-7089-A2DD-08002EXAMPLE) created by Amazon Cognito. - */ - IdentityPoolId?: IdentityPoolId; - /** - * Options to apply to this identity pool for push synchronization. - */ - PushSync?: PushSync; - /** - * Options to apply to this identity pool for Amazon Cognito streams. - */ - CognitoStreams?: CognitoStreams; - } - export type StreamName = string; - export type StreamingStatus = "ENABLED"|"DISABLED"|string; - export type String = string; - export interface SubscribeToDatasetRequest { - /** - * A name-spaced GUID (for example, us-east-1:23EC4050-6AEA-7089-A2DD-08002EXAMPLE) created by Amazon Cognito. The ID of the pool to which the identity belongs. - */ - IdentityPoolId: IdentityPoolId; - /** - * Unique ID for this identity. - */ - IdentityId: IdentityId; - /** - * The name of the dataset to subcribe to. - */ - DatasetName: DatasetName; - /** - * The unique ID generated for this device by Cognito. - */ - DeviceId: DeviceId; - } - export interface SubscribeToDatasetResponse { - } - export type SyncSessionToken = string; - export interface UnsubscribeFromDatasetRequest { - /** - * A name-spaced GUID (for example, us-east-1:23EC4050-6AEA-7089-A2DD-08002EXAMPLE) created by Amazon Cognito. The ID of the pool to which this identity belongs. - */ - IdentityPoolId: IdentityPoolId; - /** - * Unique ID for this identity. - */ - IdentityId: IdentityId; - /** - * The name of the dataset from which to unsubcribe. - */ - DatasetName: DatasetName; - /** - * The unique ID generated for this device by Cognito. - */ - DeviceId: DeviceId; - } - export interface UnsubscribeFromDatasetResponse { - } - export interface UpdateRecordsRequest { - /** - * A name-spaced GUID (for example, us-east-1:23EC4050-6AEA-7089-A2DD-08002EXAMPLE) created by Amazon Cognito. GUID generation is unique within a region. - */ - IdentityPoolId: IdentityPoolId; - /** - * A name-spaced GUID (for example, us-east-1:23EC4050-6AEA-7089-A2DD-08002EXAMPLE) created by Amazon Cognito. GUID generation is unique within a region. - */ - IdentityId: IdentityId; - /** - * A string of up to 128 characters. Allowed characters are a-z, A-Z, 0-9, '_' (underscore), '-' (dash), and '.' (dot). - */ - DatasetName: DatasetName; - /** - * The unique ID generated for this device by Cognito. - */ - DeviceId?: DeviceId; - /** - * A list of patch operations. - */ - RecordPatches?: RecordPatchList; - /** - * The SyncSessionToken returned by a previous call to ListRecords for this dataset and identity. - */ - SyncSessionToken: SyncSessionToken; - /** - * Intended to supply a device ID that will populate the lastModifiedBy field referenced in other methods. The ClientContext field is not yet implemented. - */ - ClientContext?: ClientContext; - } - export interface UpdateRecordsResponse { - /** - * A list of records that have been updated. - */ - Records?: RecordList; - } - /** - * A string in YYYY-MM-DD format that represents the latest possible API version that can be used in this service. Specify 'latest' to use the latest possible version. - */ - export type apiVersion = "2014-06-30"|"latest"|string; - export interface ClientApiVersions { - /** - * A string in YYYY-MM-DD format that represents the latest possible API version that can be used in this service. Specify 'latest' to use the latest possible version. - */ - apiVersion?: apiVersion; - } - export type ClientConfiguration = ServiceConfigurationOptions & ClientApiVersions; - /** - * Contains interfaces for use with the CognitoSync client. - */ - export import Types = CognitoSync; -} -export = CognitoSync; diff --git a/workshops/monte-carlo-on-ec2-spot-fleet/src/web/node_modules/aws-sdk/clients/cognitosync.js b/workshops/monte-carlo-on-ec2-spot-fleet/src/web/node_modules/aws-sdk/clients/cognitosync.js deleted file mode 100644 index d1e4e6f3..00000000 --- a/workshops/monte-carlo-on-ec2-spot-fleet/src/web/node_modules/aws-sdk/clients/cognitosync.js +++ /dev/null @@ -1,17 +0,0 @@ -require('../lib/node_loader'); -var AWS = require('../lib/core'); -var Service = AWS.Service; -var apiLoader = AWS.apiLoader; - -apiLoader.services['cognitosync'] = {}; -AWS.CognitoSync = Service.defineService('cognitosync', ['2014-06-30']); -Object.defineProperty(apiLoader.services['cognitosync'], '2014-06-30', { - get: function get() { - var model = require('../apis/cognito-sync-2014-06-30.min.json'); - return model; - }, - enumerable: true, - configurable: true -}); - -module.exports = AWS.CognitoSync; diff --git a/workshops/monte-carlo-on-ec2-spot-fleet/src/web/node_modules/aws-sdk/clients/configservice.d.ts b/workshops/monte-carlo-on-ec2-spot-fleet/src/web/node_modules/aws-sdk/clients/configservice.d.ts deleted file mode 100644 index 6fe67718..00000000 --- a/workshops/monte-carlo-on-ec2-spot-fleet/src/web/node_modules/aws-sdk/clients/configservice.d.ts +++ /dev/null @@ -1,1287 +0,0 @@ -import {Request} from '../lib/request'; -import {Response} from '../lib/response'; -import {AWSError} from '../lib/error'; -import {Service} from '../lib/service'; -import {ServiceConfigurationOptions} from '../lib/service'; -import {ConfigBase as Config} from '../lib/config'; -interface Blob {} -declare class ConfigService extends Service { - /** - * Constructs a service object. This object has one method for each API operation. - */ - constructor(options?: ConfigService.Types.ClientConfiguration) - config: Config & ConfigService.Types.ClientConfiguration; - /** - * Deletes the specified AWS Config rule and all of its evaluation results. AWS Config sets the state of a rule to DELETING until the deletion is complete. You cannot update a rule while it is in this state. If you make a PutConfigRule or DeleteConfigRule request for the rule, you will receive a ResourceInUseException. You can check the state of a rule by using the DescribeConfigRules request. - */ - deleteConfigRule(params: ConfigService.Types.DeleteConfigRuleRequest, callback?: (err: AWSError, data: {}) => void): Request<{}, AWSError>; - /** - * Deletes the specified AWS Config rule and all of its evaluation results. AWS Config sets the state of a rule to DELETING until the deletion is complete. You cannot update a rule while it is in this state. If you make a PutConfigRule or DeleteConfigRule request for the rule, you will receive a ResourceInUseException. You can check the state of a rule by using the DescribeConfigRules request. - */ - deleteConfigRule(callback?: (err: AWSError, data: {}) => void): Request<{}, AWSError>; - /** - * Deletes the configuration recorder. After the configuration recorder is deleted, AWS Config will not record resource configuration changes until you create a new configuration recorder. This action does not delete the configuration information that was previously recorded. You will be able to access the previously recorded information by using the GetResourceConfigHistory action, but you will not be able to access this information in the AWS Config console until you create a new configuration recorder. - */ - deleteConfigurationRecorder(params: ConfigService.Types.DeleteConfigurationRecorderRequest, callback?: (err: AWSError, data: {}) => void): Request<{}, AWSError>; - /** - * Deletes the configuration recorder. After the configuration recorder is deleted, AWS Config will not record resource configuration changes until you create a new configuration recorder. This action does not delete the configuration information that was previously recorded. You will be able to access the previously recorded information by using the GetResourceConfigHistory action, but you will not be able to access this information in the AWS Config console until you create a new configuration recorder. - */ - deleteConfigurationRecorder(callback?: (err: AWSError, data: {}) => void): Request<{}, AWSError>; - /** - * Deletes the delivery channel. Before you can delete the delivery channel, you must stop the configuration recorder by using the StopConfigurationRecorder action. - */ - deleteDeliveryChannel(params: ConfigService.Types.DeleteDeliveryChannelRequest, callback?: (err: AWSError, data: {}) => void): Request<{}, AWSError>; - /** - * Deletes the delivery channel. Before you can delete the delivery channel, you must stop the configuration recorder by using the StopConfigurationRecorder action. - */ - deleteDeliveryChannel(callback?: (err: AWSError, data: {}) => void): Request<{}, AWSError>; - /** - * Deletes the evaluation results for the specified Config rule. You can specify one Config rule per request. After you delete the evaluation results, you can call the StartConfigRulesEvaluation API to start evaluating your AWS resources against the rule. - */ - deleteEvaluationResults(params: ConfigService.Types.DeleteEvaluationResultsRequest, callback?: (err: AWSError, data: ConfigService.Types.DeleteEvaluationResultsResponse) => void): Request; - /** - * Deletes the evaluation results for the specified Config rule. You can specify one Config rule per request. After you delete the evaluation results, you can call the StartConfigRulesEvaluation API to start evaluating your AWS resources against the rule. - */ - deleteEvaluationResults(callback?: (err: AWSError, data: ConfigService.Types.DeleteEvaluationResultsResponse) => void): Request; - /** - * Schedules delivery of a configuration snapshot to the Amazon S3 bucket in the specified delivery channel. After the delivery has started, AWS Config sends following notifications using an Amazon SNS topic that you have specified. Notification of starting the delivery. Notification of delivery completed, if the delivery was successfully completed. Notification of delivery failure, if the delivery failed to complete. - */ - deliverConfigSnapshot(params: ConfigService.Types.DeliverConfigSnapshotRequest, callback?: (err: AWSError, data: ConfigService.Types.DeliverConfigSnapshotResponse) => void): Request; - /** - * Schedules delivery of a configuration snapshot to the Amazon S3 bucket in the specified delivery channel. After the delivery has started, AWS Config sends following notifications using an Amazon SNS topic that you have specified. Notification of starting the delivery. Notification of delivery completed, if the delivery was successfully completed. Notification of delivery failure, if the delivery failed to complete. - */ - deliverConfigSnapshot(callback?: (err: AWSError, data: ConfigService.Types.DeliverConfigSnapshotResponse) => void): Request; - /** - * Indicates whether the specified AWS Config rules are compliant. If a rule is noncompliant, this action returns the number of AWS resources that do not comply with the rule. A rule is compliant if all of the evaluated resources comply with it, and it is noncompliant if any of these resources do not comply. If AWS Config has no current evaluation results for the rule, it returns INSUFFICIENT_DATA. This result might indicate one of the following conditions: AWS Config has never invoked an evaluation for the rule. To check whether it has, use the DescribeConfigRuleEvaluationStatus action to get the LastSuccessfulInvocationTime and LastFailedInvocationTime. The rule's AWS Lambda function is failing to send evaluation results to AWS Config. Verify that the role that you assigned to your configuration recorder includes the config:PutEvaluations permission. If the rule is a custom rule, verify that the AWS Lambda execution role includes the config:PutEvaluations permission. The rule's AWS Lambda function has returned NOT_APPLICABLE for all evaluation results. This can occur if the resources were deleted or removed from the rule's scope. - */ - describeComplianceByConfigRule(params: ConfigService.Types.DescribeComplianceByConfigRuleRequest, callback?: (err: AWSError, data: ConfigService.Types.DescribeComplianceByConfigRuleResponse) => void): Request; - /** - * Indicates whether the specified AWS Config rules are compliant. If a rule is noncompliant, this action returns the number of AWS resources that do not comply with the rule. A rule is compliant if all of the evaluated resources comply with it, and it is noncompliant if any of these resources do not comply. If AWS Config has no current evaluation results for the rule, it returns INSUFFICIENT_DATA. This result might indicate one of the following conditions: AWS Config has never invoked an evaluation for the rule. To check whether it has, use the DescribeConfigRuleEvaluationStatus action to get the LastSuccessfulInvocationTime and LastFailedInvocationTime. The rule's AWS Lambda function is failing to send evaluation results to AWS Config. Verify that the role that you assigned to your configuration recorder includes the config:PutEvaluations permission. If the rule is a custom rule, verify that the AWS Lambda execution role includes the config:PutEvaluations permission. The rule's AWS Lambda function has returned NOT_APPLICABLE for all evaluation results. This can occur if the resources were deleted or removed from the rule's scope. - */ - describeComplianceByConfigRule(callback?: (err: AWSError, data: ConfigService.Types.DescribeComplianceByConfigRuleResponse) => void): Request; - /** - * Indicates whether the specified AWS resources are compliant. If a resource is noncompliant, this action returns the number of AWS Config rules that the resource does not comply with. A resource is compliant if it complies with all the AWS Config rules that evaluate it. It is noncompliant if it does not comply with one or more of these rules. If AWS Config has no current evaluation results for the resource, it returns INSUFFICIENT_DATA. This result might indicate one of the following conditions about the rules that evaluate the resource: AWS Config has never invoked an evaluation for the rule. To check whether it has, use the DescribeConfigRuleEvaluationStatus action to get the LastSuccessfulInvocationTime and LastFailedInvocationTime. The rule's AWS Lambda function is failing to send evaluation results to AWS Config. Verify that the role that you assigned to your configuration recorder includes the config:PutEvaluations permission. If the rule is a custom rule, verify that the AWS Lambda execution role includes the config:PutEvaluations permission. The rule's AWS Lambda function has returned NOT_APPLICABLE for all evaluation results. This can occur if the resources were deleted or removed from the rule's scope. - */ - describeComplianceByResource(params: ConfigService.Types.DescribeComplianceByResourceRequest, callback?: (err: AWSError, data: ConfigService.Types.DescribeComplianceByResourceResponse) => void): Request; - /** - * Indicates whether the specified AWS resources are compliant. If a resource is noncompliant, this action returns the number of AWS Config rules that the resource does not comply with. A resource is compliant if it complies with all the AWS Config rules that evaluate it. It is noncompliant if it does not comply with one or more of these rules. If AWS Config has no current evaluation results for the resource, it returns INSUFFICIENT_DATA. This result might indicate one of the following conditions about the rules that evaluate the resource: AWS Config has never invoked an evaluation for the rule. To check whether it has, use the DescribeConfigRuleEvaluationStatus action to get the LastSuccessfulInvocationTime and LastFailedInvocationTime. The rule's AWS Lambda function is failing to send evaluation results to AWS Config. Verify that the role that you assigned to your configuration recorder includes the config:PutEvaluations permission. If the rule is a custom rule, verify that the AWS Lambda execution role includes the config:PutEvaluations permission. The rule's AWS Lambda function has returned NOT_APPLICABLE for all evaluation results. This can occur if the resources were deleted or removed from the rule's scope. - */ - describeComplianceByResource(callback?: (err: AWSError, data: ConfigService.Types.DescribeComplianceByResourceResponse) => void): Request; - /** - * Returns status information for each of your AWS managed Config rules. The status includes information such as the last time AWS Config invoked the rule, the last time AWS Config failed to invoke the rule, and the related error for the last failure. - */ - describeConfigRuleEvaluationStatus(params: ConfigService.Types.DescribeConfigRuleEvaluationStatusRequest, callback?: (err: AWSError, data: ConfigService.Types.DescribeConfigRuleEvaluationStatusResponse) => void): Request; - /** - * Returns status information for each of your AWS managed Config rules. The status includes information such as the last time AWS Config invoked the rule, the last time AWS Config failed to invoke the rule, and the related error for the last failure. - */ - describeConfigRuleEvaluationStatus(callback?: (err: AWSError, data: ConfigService.Types.DescribeConfigRuleEvaluationStatusResponse) => void): Request; - /** - * Returns details about your AWS Config rules. - */ - describeConfigRules(params: ConfigService.Types.DescribeConfigRulesRequest, callback?: (err: AWSError, data: ConfigService.Types.DescribeConfigRulesResponse) => void): Request; - /** - * Returns details about your AWS Config rules. - */ - describeConfigRules(callback?: (err: AWSError, data: ConfigService.Types.DescribeConfigRulesResponse) => void): Request; - /** - * Returns the current status of the specified configuration recorder. If a configuration recorder is not specified, this action returns the status of all configuration recorder associated with the account. Currently, you can specify only one configuration recorder per region in your account. - */ - describeConfigurationRecorderStatus(params: ConfigService.Types.DescribeConfigurationRecorderStatusRequest, callback?: (err: AWSError, data: ConfigService.Types.DescribeConfigurationRecorderStatusResponse) => void): Request; - /** - * Returns the current status of the specified configuration recorder. If a configuration recorder is not specified, this action returns the status of all configuration recorder associated with the account. Currently, you can specify only one configuration recorder per region in your account. - */ - describeConfigurationRecorderStatus(callback?: (err: AWSError, data: ConfigService.Types.DescribeConfigurationRecorderStatusResponse) => void): Request; - /** - * Returns the details for the specified configuration recorders. If the configuration recorder is not specified, this action returns the details for all configuration recorders associated with the account. Currently, you can specify only one configuration recorder per region in your account. - */ - describeConfigurationRecorders(params: ConfigService.Types.DescribeConfigurationRecordersRequest, callback?: (err: AWSError, data: ConfigService.Types.DescribeConfigurationRecordersResponse) => void): Request; - /** - * Returns the details for the specified configuration recorders. If the configuration recorder is not specified, this action returns the details for all configuration recorders associated with the account. Currently, you can specify only one configuration recorder per region in your account. - */ - describeConfigurationRecorders(callback?: (err: AWSError, data: ConfigService.Types.DescribeConfigurationRecordersResponse) => void): Request; - /** - * Returns the current status of the specified delivery channel. If a delivery channel is not specified, this action returns the current status of all delivery channels associated with the account. Currently, you can specify only one delivery channel per region in your account. - */ - describeDeliveryChannelStatus(params: ConfigService.Types.DescribeDeliveryChannelStatusRequest, callback?: (err: AWSError, data: ConfigService.Types.DescribeDeliveryChannelStatusResponse) => void): Request; - /** - * Returns the current status of the specified delivery channel. If a delivery channel is not specified, this action returns the current status of all delivery channels associated with the account. Currently, you can specify only one delivery channel per region in your account. - */ - describeDeliveryChannelStatus(callback?: (err: AWSError, data: ConfigService.Types.DescribeDeliveryChannelStatusResponse) => void): Request; - /** - * Returns details about the specified delivery channel. If a delivery channel is not specified, this action returns the details of all delivery channels associated with the account. Currently, you can specify only one delivery channel per region in your account. - */ - describeDeliveryChannels(params: ConfigService.Types.DescribeDeliveryChannelsRequest, callback?: (err: AWSError, data: ConfigService.Types.DescribeDeliveryChannelsResponse) => void): Request; - /** - * Returns details about the specified delivery channel. If a delivery channel is not specified, this action returns the details of all delivery channels associated with the account. Currently, you can specify only one delivery channel per region in your account. - */ - describeDeliveryChannels(callback?: (err: AWSError, data: ConfigService.Types.DescribeDeliveryChannelsResponse) => void): Request; - /** - * Returns the evaluation results for the specified AWS Config rule. The results indicate which AWS resources were evaluated by the rule, when each resource was last evaluated, and whether each resource complies with the rule. - */ - getComplianceDetailsByConfigRule(params: ConfigService.Types.GetComplianceDetailsByConfigRuleRequest, callback?: (err: AWSError, data: ConfigService.Types.GetComplianceDetailsByConfigRuleResponse) => void): Request; - /** - * Returns the evaluation results for the specified AWS Config rule. The results indicate which AWS resources were evaluated by the rule, when each resource was last evaluated, and whether each resource complies with the rule. - */ - getComplianceDetailsByConfigRule(callback?: (err: AWSError, data: ConfigService.Types.GetComplianceDetailsByConfigRuleResponse) => void): Request; - /** - * Returns the evaluation results for the specified AWS resource. The results indicate which AWS Config rules were used to evaluate the resource, when each rule was last used, and whether the resource complies with each rule. - */ - getComplianceDetailsByResource(params: ConfigService.Types.GetComplianceDetailsByResourceRequest, callback?: (err: AWSError, data: ConfigService.Types.GetComplianceDetailsByResourceResponse) => void): Request; - /** - * Returns the evaluation results for the specified AWS resource. The results indicate which AWS Config rules were used to evaluate the resource, when each rule was last used, and whether the resource complies with each rule. - */ - getComplianceDetailsByResource(callback?: (err: AWSError, data: ConfigService.Types.GetComplianceDetailsByResourceResponse) => void): Request; - /** - * Returns the number of AWS Config rules that are compliant and noncompliant, up to a maximum of 25 for each. - */ - getComplianceSummaryByConfigRule(callback?: (err: AWSError, data: ConfigService.Types.GetComplianceSummaryByConfigRuleResponse) => void): Request; - /** - * Returns the number of resources that are compliant and the number that are noncompliant. You can specify one or more resource types to get these numbers for each resource type. The maximum number returned is 100. - */ - getComplianceSummaryByResourceType(params: ConfigService.Types.GetComplianceSummaryByResourceTypeRequest, callback?: (err: AWSError, data: ConfigService.Types.GetComplianceSummaryByResourceTypeResponse) => void): Request; - /** - * Returns the number of resources that are compliant and the number that are noncompliant. You can specify one or more resource types to get these numbers for each resource type. The maximum number returned is 100. - */ - getComplianceSummaryByResourceType(callback?: (err: AWSError, data: ConfigService.Types.GetComplianceSummaryByResourceTypeResponse) => void): Request; - /** - * Returns the resource types, the number of each resource type, and the total number of resources that AWS Config is recording in this region for your AWS account. Example AWS Config is recording three resource types in the US East (Ohio) Region for your account: 25 EC2 instances, 20 IAM users, and 15 S3 buckets. You make a call to the GetDiscoveredResourceCounts action and specify that you want all resource types. AWS Config returns the following: The resource types (EC2 instances, IAM users, and S3 buckets) The number of each resource type (25, 20, and 15) The total number of all resources (60) The response is paginated. By default, AWS Config lists 100 ResourceCount objects on each page. You can customize this number with the limit parameter. The response includes a nextToken string. To get the next page of results, run the request again and specify the string for the nextToken parameter. If you make a call to the GetDiscoveredResourceCounts action, you may not immediately receive resource counts in the following situations: You are a new AWS Config customer You just enabled resource recording It may take a few minutes for AWS Config to record and count your resources. Wait a few minutes and then retry the GetDiscoveredResourceCounts action. - */ - getDiscoveredResourceCounts(params: ConfigService.Types.GetDiscoveredResourceCountsRequest, callback?: (err: AWSError, data: ConfigService.Types.GetDiscoveredResourceCountsResponse) => void): Request; - /** - * Returns the resource types, the number of each resource type, and the total number of resources that AWS Config is recording in this region for your AWS account. Example AWS Config is recording three resource types in the US East (Ohio) Region for your account: 25 EC2 instances, 20 IAM users, and 15 S3 buckets. You make a call to the GetDiscoveredResourceCounts action and specify that you want all resource types. AWS Config returns the following: The resource types (EC2 instances, IAM users, and S3 buckets) The number of each resource type (25, 20, and 15) The total number of all resources (60) The response is paginated. By default, AWS Config lists 100 ResourceCount objects on each page. You can customize this number with the limit parameter. The response includes a nextToken string. To get the next page of results, run the request again and specify the string for the nextToken parameter. If you make a call to the GetDiscoveredResourceCounts action, you may not immediately receive resource counts in the following situations: You are a new AWS Config customer You just enabled resource recording It may take a few minutes for AWS Config to record and count your resources. Wait a few minutes and then retry the GetDiscoveredResourceCounts action. - */ - getDiscoveredResourceCounts(callback?: (err: AWSError, data: ConfigService.Types.GetDiscoveredResourceCountsResponse) => void): Request; - /** - * Returns a list of configuration items for the specified resource. The list contains details about each state of the resource during the specified time interval. The response is paginated. By default, AWS Config returns a limit of 10 configuration items per page. You can customize this number with the limit parameter. The response includes a nextToken string. To get the next page of results, run the request again and specify the string for the nextToken parameter. Each call to the API is limited to span a duration of seven days. It is likely that the number of records returned is smaller than the specified limit. In such cases, you can make another call, using the nextToken. - */ - getResourceConfigHistory(params: ConfigService.Types.GetResourceConfigHistoryRequest, callback?: (err: AWSError, data: ConfigService.Types.GetResourceConfigHistoryResponse) => void): Request; - /** - * Returns a list of configuration items for the specified resource. The list contains details about each state of the resource during the specified time interval. The response is paginated. By default, AWS Config returns a limit of 10 configuration items per page. You can customize this number with the limit parameter. The response includes a nextToken string. To get the next page of results, run the request again and specify the string for the nextToken parameter. Each call to the API is limited to span a duration of seven days. It is likely that the number of records returned is smaller than the specified limit. In such cases, you can make another call, using the nextToken. - */ - getResourceConfigHistory(callback?: (err: AWSError, data: ConfigService.Types.GetResourceConfigHistoryResponse) => void): Request; - /** - * Accepts a resource type and returns a list of resource identifiers for the resources of that type. A resource identifier includes the resource type, ID, and (if available) the custom resource name. The results consist of resources that AWS Config has discovered, including those that AWS Config is not currently recording. You can narrow the results to include only resources that have specific resource IDs or a resource name. You can specify either resource IDs or a resource name but not both in the same request. The response is paginated. By default, AWS Config lists 100 resource identifiers on each page. You can customize this number with the limit parameter. The response includes a nextToken string. To get the next page of results, run the request again and specify the string for the nextToken parameter. - */ - listDiscoveredResources(params: ConfigService.Types.ListDiscoveredResourcesRequest, callback?: (err: AWSError, data: ConfigService.Types.ListDiscoveredResourcesResponse) => void): Request; - /** - * Accepts a resource type and returns a list of resource identifiers for the resources of that type. A resource identifier includes the resource type, ID, and (if available) the custom resource name. The results consist of resources that AWS Config has discovered, including those that AWS Config is not currently recording. You can narrow the results to include only resources that have specific resource IDs or a resource name. You can specify either resource IDs or a resource name but not both in the same request. The response is paginated. By default, AWS Config lists 100 resource identifiers on each page. You can customize this number with the limit parameter. The response includes a nextToken string. To get the next page of results, run the request again and specify the string for the nextToken parameter. - */ - listDiscoveredResources(callback?: (err: AWSError, data: ConfigService.Types.ListDiscoveredResourcesResponse) => void): Request; - /** - * Adds or updates an AWS Config rule for evaluating whether your AWS resources comply with your desired configurations. You can use this action for custom Config rules and AWS managed Config rules. A custom Config rule is a rule that you develop and maintain. An AWS managed Config rule is a customizable, predefined rule that AWS Config provides. If you are adding a new custom Config rule, you must first create the AWS Lambda function that the rule invokes to evaluate your resources. When you use the PutConfigRule action to add the rule to AWS Config, you must specify the Amazon Resource Name (ARN) that AWS Lambda assigns to the function. Specify the ARN for the SourceIdentifier key. This key is part of the Source object, which is part of the ConfigRule object. If you are adding an AWS managed Config rule, specify the rule's identifier for the SourceIdentifier key. To reference AWS managed Config rule identifiers, see About AWS Managed Config Rules. For any new rule that you add, specify the ConfigRuleName in the ConfigRule object. Do not specify the ConfigRuleArn or the ConfigRuleId. These values are generated by AWS Config for new rules. If you are updating a rule that you added previously, you can specify the rule by ConfigRuleName, ConfigRuleId, or ConfigRuleArn in the ConfigRule data type that you use in this request. The maximum number of rules that AWS Config supports is 50. For more information about requesting a rule limit increase, see AWS Config Limits in the AWS General Reference Guide. For more information about developing and using AWS Config rules, see Evaluating AWS Resource Configurations with AWS Config in the AWS Config Developer Guide. - */ - putConfigRule(params: ConfigService.Types.PutConfigRuleRequest, callback?: (err: AWSError, data: {}) => void): Request<{}, AWSError>; - /** - * Adds or updates an AWS Config rule for evaluating whether your AWS resources comply with your desired configurations. You can use this action for custom Config rules and AWS managed Config rules. A custom Config rule is a rule that you develop and maintain. An AWS managed Config rule is a customizable, predefined rule that AWS Config provides. If you are adding a new custom Config rule, you must first create the AWS Lambda function that the rule invokes to evaluate your resources. When you use the PutConfigRule action to add the rule to AWS Config, you must specify the Amazon Resource Name (ARN) that AWS Lambda assigns to the function. Specify the ARN for the SourceIdentifier key. This key is part of the Source object, which is part of the ConfigRule object. If you are adding an AWS managed Config rule, specify the rule's identifier for the SourceIdentifier key. To reference AWS managed Config rule identifiers, see About AWS Managed Config Rules. For any new rule that you add, specify the ConfigRuleName in the ConfigRule object. Do not specify the ConfigRuleArn or the ConfigRuleId. These values are generated by AWS Config for new rules. If you are updating a rule that you added previously, you can specify the rule by ConfigRuleName, ConfigRuleId, or ConfigRuleArn in the ConfigRule data type that you use in this request. The maximum number of rules that AWS Config supports is 50. For more information about requesting a rule limit increase, see AWS Config Limits in the AWS General Reference Guide. For more information about developing and using AWS Config rules, see Evaluating AWS Resource Configurations with AWS Config in the AWS Config Developer Guide. - */ - putConfigRule(callback?: (err: AWSError, data: {}) => void): Request<{}, AWSError>; - /** - * Creates a new configuration recorder to record the selected resource configurations. You can use this action to change the role roleARN and/or the recordingGroup of an existing recorder. To change the role, call the action on the existing configuration recorder and specify a role. Currently, you can specify only one configuration recorder per region in your account. If ConfigurationRecorder does not have the recordingGroup parameter specified, the default is to record all supported resource types. - */ - putConfigurationRecorder(params: ConfigService.Types.PutConfigurationRecorderRequest, callback?: (err: AWSError, data: {}) => void): Request<{}, AWSError>; - /** - * Creates a new configuration recorder to record the selected resource configurations. You can use this action to change the role roleARN and/or the recordingGroup of an existing recorder. To change the role, call the action on the existing configuration recorder and specify a role. Currently, you can specify only one configuration recorder per region in your account. If ConfigurationRecorder does not have the recordingGroup parameter specified, the default is to record all supported resource types. - */ - putConfigurationRecorder(callback?: (err: AWSError, data: {}) => void): Request<{}, AWSError>; - /** - * Creates a delivery channel object to deliver configuration information to an Amazon S3 bucket and Amazon SNS topic. Before you can create a delivery channel, you must create a configuration recorder. You can use this action to change the Amazon S3 bucket or an Amazon SNS topic of the existing delivery channel. To change the Amazon S3 bucket or an Amazon SNS topic, call this action and specify the changed values for the S3 bucket and the SNS topic. If you specify a different value for either the S3 bucket or the SNS topic, this action will keep the existing value for the parameter that is not changed. You can have only one delivery channel per region in your account. - */ - putDeliveryChannel(params: ConfigService.Types.PutDeliveryChannelRequest, callback?: (err: AWSError, data: {}) => void): Request<{}, AWSError>; - /** - * Creates a delivery channel object to deliver configuration information to an Amazon S3 bucket and Amazon SNS topic. Before you can create a delivery channel, you must create a configuration recorder. You can use this action to change the Amazon S3 bucket or an Amazon SNS topic of the existing delivery channel. To change the Amazon S3 bucket or an Amazon SNS topic, call this action and specify the changed values for the S3 bucket and the SNS topic. If you specify a different value for either the S3 bucket or the SNS topic, this action will keep the existing value for the parameter that is not changed. You can have only one delivery channel per region in your account. - */ - putDeliveryChannel(callback?: (err: AWSError, data: {}) => void): Request<{}, AWSError>; - /** - * Used by an AWS Lambda function to deliver evaluation results to AWS Config. This action is required in every AWS Lambda function that is invoked by an AWS Config rule. - */ - putEvaluations(params: ConfigService.Types.PutEvaluationsRequest, callback?: (err: AWSError, data: ConfigService.Types.PutEvaluationsResponse) => void): Request; - /** - * Used by an AWS Lambda function to deliver evaluation results to AWS Config. This action is required in every AWS Lambda function that is invoked by an AWS Config rule. - */ - putEvaluations(callback?: (err: AWSError, data: ConfigService.Types.PutEvaluationsResponse) => void): Request; - /** - * Runs an on-demand evaluation for the specified Config rules against the last known configuration state of the resources. Use StartConfigRulesEvaluation when you want to test a rule that you updated is working as expected. StartConfigRulesEvaluation does not re-record the latest configuration state for your resources; it re-runs an evaluation against the last known state of your resources. You can specify up to 25 Config rules per request. An existing StartConfigRulesEvaluation call must complete for the specified rules before you can call the API again. If you chose to have AWS Config stream to an Amazon SNS topic, you will receive a ConfigRuleEvaluationStarted notification when the evaluation starts. You don't need to call the StartConfigRulesEvaluation API to run an evaluation for a new rule. When you create a new rule, AWS Config automatically evaluates your resources against the rule. The StartConfigRulesEvaluation API is useful if you want to run on-demand evaluations, such as the following example: You have a custom rule that evaluates your IAM resources every 24 hours. You update your Lambda function to add additional conditions to your rule. Instead of waiting for the next periodic evaluation, you call the StartConfigRulesEvaluation API. AWS Config invokes your Lambda function and evaluates your IAM resources. Your custom rule will still run periodic evaluations every 24 hours. - */ - startConfigRulesEvaluation(params: ConfigService.Types.StartConfigRulesEvaluationRequest, callback?: (err: AWSError, data: ConfigService.Types.StartConfigRulesEvaluationResponse) => void): Request; - /** - * Runs an on-demand evaluation for the specified Config rules against the last known configuration state of the resources. Use StartConfigRulesEvaluation when you want to test a rule that you updated is working as expected. StartConfigRulesEvaluation does not re-record the latest configuration state for your resources; it re-runs an evaluation against the last known state of your resources. You can specify up to 25 Config rules per request. An existing StartConfigRulesEvaluation call must complete for the specified rules before you can call the API again. If you chose to have AWS Config stream to an Amazon SNS topic, you will receive a ConfigRuleEvaluationStarted notification when the evaluation starts. You don't need to call the StartConfigRulesEvaluation API to run an evaluation for a new rule. When you create a new rule, AWS Config automatically evaluates your resources against the rule. The StartConfigRulesEvaluation API is useful if you want to run on-demand evaluations, such as the following example: You have a custom rule that evaluates your IAM resources every 24 hours. You update your Lambda function to add additional conditions to your rule. Instead of waiting for the next periodic evaluation, you call the StartConfigRulesEvaluation API. AWS Config invokes your Lambda function and evaluates your IAM resources. Your custom rule will still run periodic evaluations every 24 hours. - */ - startConfigRulesEvaluation(callback?: (err: AWSError, data: ConfigService.Types.StartConfigRulesEvaluationResponse) => void): Request; - /** - * Starts recording configurations of the AWS resources you have selected to record in your AWS account. You must have created at least one delivery channel to successfully start the configuration recorder. - */ - startConfigurationRecorder(params: ConfigService.Types.StartConfigurationRecorderRequest, callback?: (err: AWSError, data: {}) => void): Request<{}, AWSError>; - /** - * Starts recording configurations of the AWS resources you have selected to record in your AWS account. You must have created at least one delivery channel to successfully start the configuration recorder. - */ - startConfigurationRecorder(callback?: (err: AWSError, data: {}) => void): Request<{}, AWSError>; - /** - * Stops recording configurations of the AWS resources you have selected to record in your AWS account. - */ - stopConfigurationRecorder(params: ConfigService.Types.StopConfigurationRecorderRequest, callback?: (err: AWSError, data: {}) => void): Request<{}, AWSError>; - /** - * Stops recording configurations of the AWS resources you have selected to record in your AWS account. - */ - stopConfigurationRecorder(callback?: (err: AWSError, data: {}) => void): Request<{}, AWSError>; -} -declare namespace ConfigService { - export type ARN = string; - export type AccountId = string; - export type AllSupported = boolean; - export type AvailabilityZone = string; - export type AwsRegion = string; - export type BaseResourceId = string; - export type Boolean = boolean; - export type ChannelName = string; - export type ChronologicalOrder = "Reverse"|"Forward"|string; - export interface Compliance { - /** - * Indicates whether an AWS resource or AWS Config rule is compliant. A resource is compliant if it complies with all of the AWS Config rules that evaluate it, and it is noncompliant if it does not comply with one or more of these rules. A rule is compliant if all of the resources that the rule evaluates comply with it, and it is noncompliant if any of these resources do not comply. AWS Config returns the INSUFFICIENT_DATA value when no evaluation results are available for the AWS resource or Config rule. For the Compliance data type, AWS Config supports only COMPLIANT, NON_COMPLIANT, and INSUFFICIENT_DATA values. AWS Config does not support the NOT_APPLICABLE value for the Compliance data type. - */ - ComplianceType?: ComplianceType; - /** - * The number of AWS resources or AWS Config rules that cause a result of NON_COMPLIANT, up to a maximum number. - */ - ComplianceContributorCount?: ComplianceContributorCount; - } - export interface ComplianceByConfigRule { - /** - * The name of the AWS Config rule. - */ - ConfigRuleName?: StringWithCharLimit64; - /** - * Indicates whether the AWS Config rule is compliant. - */ - Compliance?: Compliance; - } - export type ComplianceByConfigRules = ComplianceByConfigRule[]; - export interface ComplianceByResource { - /** - * The type of the AWS resource that was evaluated. - */ - ResourceType?: StringWithCharLimit256; - /** - * The ID of the AWS resource that was evaluated. - */ - ResourceId?: BaseResourceId; - /** - * Indicates whether the AWS resource complies with all of the AWS Config rules that evaluated it. - */ - Compliance?: Compliance; - } - export type ComplianceByResources = ComplianceByResource[]; - export interface ComplianceContributorCount { - /** - * The number of AWS resources or AWS Config rules responsible for the current compliance of the item. - */ - CappedCount?: Integer; - /** - * Indicates whether the maximum count is reached. - */ - CapExceeded?: Boolean; - } - export type ComplianceResourceTypes = StringWithCharLimit256[]; - export type ComplianceSummariesByResourceType = ComplianceSummaryByResourceType[]; - export interface ComplianceSummary { - /** - * The number of AWS Config rules or AWS resources that are compliant, up to a maximum of 25 for rules and 100 for resources. - */ - CompliantResourceCount?: ComplianceContributorCount; - /** - * The number of AWS Config rules or AWS resources that are noncompliant, up to a maximum of 25 for rules and 100 for resources. - */ - NonCompliantResourceCount?: ComplianceContributorCount; - /** - * The time that AWS Config created the compliance summary. - */ - ComplianceSummaryTimestamp?: _Date; - } - export interface ComplianceSummaryByResourceType { - /** - * The type of AWS resource. - */ - ResourceType?: StringWithCharLimit256; - /** - * The number of AWS resources that are compliant or noncompliant, up to a maximum of 100 for each compliance. - */ - ComplianceSummary?: ComplianceSummary; - } - export type ComplianceType = "COMPLIANT"|"NON_COMPLIANT"|"NOT_APPLICABLE"|"INSUFFICIENT_DATA"|string; - export type ComplianceTypes = ComplianceType[]; - export interface ConfigExportDeliveryInfo { - /** - * Status of the last attempted delivery. - */ - lastStatus?: DeliveryStatus; - /** - * The error code from the last attempted delivery. - */ - lastErrorCode?: String; - /** - * The error message from the last attempted delivery. - */ - lastErrorMessage?: String; - /** - * The time of the last attempted delivery. - */ - lastAttemptTime?: _Date; - /** - * The time of the last successful delivery. - */ - lastSuccessfulTime?: _Date; - /** - * The time that the next delivery occurs. - */ - nextDeliveryTime?: _Date; - } - export interface ConfigRule { - /** - * The name that you assign to the AWS Config rule. The name is required if you are adding a new rule. - */ - ConfigRuleName?: StringWithCharLimit64; - /** - * The Amazon Resource Name (ARN) of the AWS Config rule. - */ - ConfigRuleArn?: String; - /** - * The ID of the AWS Config rule. - */ - ConfigRuleId?: String; - /** - * The description that you provide for the AWS Config rule. - */ - Description?: EmptiableStringWithCharLimit256; - /** - * Defines which resources can trigger an evaluation for the rule. The scope can include one or more resource types, a combination of one resource type and one resource ID, or a combination of a tag key and value. Specify a scope to constrain the resources that can trigger an evaluation for the rule. If you do not specify a scope, evaluations are triggered when any resource in the recording group changes. - */ - Scope?: Scope; - /** - * Provides the rule owner (AWS or customer), the rule identifier, and the notifications that cause the function to evaluate your AWS resources. - */ - Source: Source; - /** - * A string in JSON format that is passed to the AWS Config rule Lambda function. - */ - InputParameters?: StringWithCharLimit1024; - /** - * The maximum frequency with which AWS Config runs evaluations for a rule. You can specify a value for MaximumExecutionFrequency when: You are using an AWS managed rule that is triggered at a periodic frequency. Your custom rule is triggered when AWS Config delivers the configuration snapshot. For more information, see ConfigSnapshotDeliveryProperties. By default, rules with a periodic trigger are evaluated every 24 hours. To change the frequency, specify a valid value for the MaximumExecutionFrequency parameter. - */ - MaximumExecutionFrequency?: MaximumExecutionFrequency; - /** - * Indicates whether the AWS Config rule is active or is currently being deleted by AWS Config. It can also indicate the evaluation status for the Config rule. AWS Config sets the state of the rule to EVALUATING temporarily after you use the StartConfigRulesEvaluation request to evaluate your resources against the Config rule. AWS Config sets the state of the rule to DELETING_RESULTS temporarily after you use the DeleteEvaluationResults request to delete the current evaluation results for the Config rule. AWS Config sets the state of a rule to DELETING temporarily after you use the DeleteConfigRule request to delete the rule. After AWS Config deletes the rule, the rule and all of its evaluations are erased and are no longer available. - */ - ConfigRuleState?: ConfigRuleState; - } - export interface ConfigRuleEvaluationStatus { - /** - * The name of the AWS Config rule. - */ - ConfigRuleName?: StringWithCharLimit64; - /** - * The Amazon Resource Name (ARN) of the AWS Config rule. - */ - ConfigRuleArn?: String; - /** - * The ID of the AWS Config rule. - */ - ConfigRuleId?: String; - /** - * The time that AWS Config last successfully invoked the AWS Config rule to evaluate your AWS resources. - */ - LastSuccessfulInvocationTime?: _Date; - /** - * The time that AWS Config last failed to invoke the AWS Config rule to evaluate your AWS resources. - */ - LastFailedInvocationTime?: _Date; - /** - * The time that AWS Config last successfully evaluated your AWS resources against the rule. - */ - LastSuccessfulEvaluationTime?: _Date; - /** - * The time that AWS Config last failed to evaluate your AWS resources against the rule. - */ - LastFailedEvaluationTime?: _Date; - /** - * The time that you first activated the AWS Config rule. - */ - FirstActivatedTime?: _Date; - /** - * The error code that AWS Config returned when the rule last failed. - */ - LastErrorCode?: String; - /** - * The error message that AWS Config returned when the rule last failed. - */ - LastErrorMessage?: String; - /** - * Indicates whether AWS Config has evaluated your resources against the rule at least once. true - AWS Config has evaluated your AWS resources against the rule at least once. false - AWS Config has not once finished evaluating your AWS resources against the rule. - */ - FirstEvaluationStarted?: Boolean; - } - export type ConfigRuleEvaluationStatusList = ConfigRuleEvaluationStatus[]; - export type ConfigRuleNames = StringWithCharLimit64[]; - export type ConfigRuleState = "ACTIVE"|"DELETING"|"DELETING_RESULTS"|"EVALUATING"|string; - export type ConfigRules = ConfigRule[]; - export interface ConfigSnapshotDeliveryProperties { - /** - * The frequency with which AWS Config delivers configuration snapshots. - */ - deliveryFrequency?: MaximumExecutionFrequency; - } - export interface ConfigStreamDeliveryInfo { - /** - * Status of the last attempted delivery. Note Providing an SNS topic on a DeliveryChannel for AWS Config is optional. If the SNS delivery is turned off, the last status will be Not_Applicable. - */ - lastStatus?: DeliveryStatus; - /** - * The error code from the last attempted delivery. - */ - lastErrorCode?: String; - /** - * The error message from the last attempted delivery. - */ - lastErrorMessage?: String; - /** - * The time from the last status change. - */ - lastStatusChangeTime?: _Date; - } - export type Configuration = string; - export interface ConfigurationItem { - /** - * The version number of the resource configuration. - */ - version?: Version; - /** - * The 12 digit AWS account ID associated with the resource. - */ - accountId?: AccountId; - /** - * The time when the configuration recording was initiated. - */ - configurationItemCaptureTime?: ConfigurationItemCaptureTime; - /** - * The configuration item status. - */ - configurationItemStatus?: ConfigurationItemStatus; - /** - * An identifier that indicates the ordering of the configuration items of a resource. - */ - configurationStateId?: ConfigurationStateId; - /** - * Unique MD5 hash that represents the configuration item's state. You can use MD5 hash to compare the states of two or more configuration items that are associated with the same resource. - */ - configurationItemMD5Hash?: ConfigurationItemMD5Hash; - /** - * The Amazon Resource Name (ARN) of the resource. - */ - arn?: ARN; - /** - * The type of AWS resource. - */ - resourceType?: ResourceType; - /** - * The ID of the resource (for example., sg-xxxxxx). - */ - resourceId?: ResourceId; - /** - * The custom name of the resource, if available. - */ - resourceName?: ResourceName; - /** - * The region where the resource resides. - */ - awsRegion?: AwsRegion; - /** - * The Availability Zone associated with the resource. - */ - availabilityZone?: AvailabilityZone; - /** - * The time stamp when the resource was created. - */ - resourceCreationTime?: ResourceCreationTime; - /** - * A mapping of key value tags associated with the resource. - */ - tags?: Tags; - /** - * A list of CloudTrail event IDs. A populated field indicates that the current configuration was initiated by the events recorded in the CloudTrail log. For more information about CloudTrail, see What is AWS CloudTrail?. An empty field indicates that the current configuration was not initiated by any event. - */ - relatedEvents?: RelatedEventList; - /** - * A list of related AWS resources. - */ - relationships?: RelationshipList; - /** - * The description of the resource configuration. - */ - configuration?: Configuration; - /** - * Configuration attributes that AWS Config returns for certain resource types to supplement the information returned for the configuration parameter. - */ - supplementaryConfiguration?: SupplementaryConfiguration; - } - export type ConfigurationItemCaptureTime = Date; - export type ConfigurationItemList = ConfigurationItem[]; - export type ConfigurationItemMD5Hash = string; - export type ConfigurationItemStatus = "Ok"|"Failed"|"Discovered"|"Deleted"|string; - export interface ConfigurationRecorder { - /** - * The name of the recorder. By default, AWS Config automatically assigns the name "default" when creating the configuration recorder. You cannot change the assigned name. - */ - name?: RecorderName; - /** - * Amazon Resource Name (ARN) of the IAM role used to describe the AWS resources associated with the account. - */ - roleARN?: String; - /** - * Specifies the types of AWS resource for which AWS Config records configuration changes. - */ - recordingGroup?: RecordingGroup; - } - export type ConfigurationRecorderList = ConfigurationRecorder[]; - export type ConfigurationRecorderNameList = RecorderName[]; - export interface ConfigurationRecorderStatus { - /** - * The name of the configuration recorder. - */ - name?: String; - /** - * The time the recorder was last started. - */ - lastStartTime?: _Date; - /** - * The time the recorder was last stopped. - */ - lastStopTime?: _Date; - /** - * Specifies whether the recorder is currently recording or not. - */ - recording?: Boolean; - /** - * The last (previous) status of the recorder. - */ - lastStatus?: RecorderStatus; - /** - * The error code indicating that the recording failed. - */ - lastErrorCode?: String; - /** - * The message indicating that the recording failed due to an error. - */ - lastErrorMessage?: String; - /** - * The time when the status was last changed. - */ - lastStatusChangeTime?: _Date; - } - export type ConfigurationRecorderStatusList = ConfigurationRecorderStatus[]; - export type ConfigurationStateId = string; - export type _Date = Date; - export interface DeleteConfigRuleRequest { - /** - * The name of the AWS Config rule that you want to delete. - */ - ConfigRuleName: StringWithCharLimit64; - } - export interface DeleteConfigurationRecorderRequest { - /** - * The name of the configuration recorder to be deleted. You can retrieve the name of your configuration recorder by using the DescribeConfigurationRecorders action. - */ - ConfigurationRecorderName: RecorderName; - } - export interface DeleteDeliveryChannelRequest { - /** - * The name of the delivery channel to delete. - */ - DeliveryChannelName: ChannelName; - } - export interface DeleteEvaluationResultsRequest { - /** - * The name of the Config rule for which you want to delete the evaluation results. - */ - ConfigRuleName: StringWithCharLimit64; - } - export interface DeleteEvaluationResultsResponse { - } - export interface DeliverConfigSnapshotRequest { - /** - * The name of the delivery channel through which the snapshot is delivered. - */ - deliveryChannelName: ChannelName; - } - export interface DeliverConfigSnapshotResponse { - /** - * The ID of the snapshot that is being created. - */ - configSnapshotId?: String; - } - export interface DeliveryChannel { - /** - * The name of the delivery channel. By default, AWS Config assigns the name "default" when creating the delivery channel. To change the delivery channel name, you must use the DeleteDeliveryChannel action to delete your current delivery channel, and then you must use the PutDeliveryChannel command to create a delivery channel that has the desired name. - */ - name?: ChannelName; - /** - * The name of the Amazon S3 bucket to which AWS Config delivers configuration snapshots and configuration history files. If you specify a bucket that belongs to another AWS account, that bucket must have policies that grant access permissions to AWS Config. For more information, see Permissions for the Amazon S3 Bucket in the AWS Config Developer Guide. - */ - s3BucketName?: String; - /** - * The prefix for the specified Amazon S3 bucket. - */ - s3KeyPrefix?: String; - /** - * The Amazon Resource Name (ARN) of the Amazon SNS topic to which AWS Config sends notifications about configuration changes. If you choose a topic from another account, the topic must have policies that grant access permissions to AWS Config. For more information, see Permissions for the Amazon SNS Topic in the AWS Config Developer Guide. - */ - snsTopicARN?: String; - /** - * The options for how often AWS Config delivers configuration snapshots to the Amazon S3 bucket. - */ - configSnapshotDeliveryProperties?: ConfigSnapshotDeliveryProperties; - } - export type DeliveryChannelList = DeliveryChannel[]; - export type DeliveryChannelNameList = ChannelName[]; - export interface DeliveryChannelStatus { - /** - * The name of the delivery channel. - */ - name?: String; - /** - * A list containing the status of the delivery of the snapshot to the specified Amazon S3 bucket. - */ - configSnapshotDeliveryInfo?: ConfigExportDeliveryInfo; - /** - * A list that contains the status of the delivery of the configuration history to the specified Amazon S3 bucket. - */ - configHistoryDeliveryInfo?: ConfigExportDeliveryInfo; - /** - * A list containing the status of the delivery of the configuration stream notification to the specified Amazon SNS topic. - */ - configStreamDeliveryInfo?: ConfigStreamDeliveryInfo; - } - export type DeliveryChannelStatusList = DeliveryChannelStatus[]; - export type DeliveryStatus = "Success"|"Failure"|"Not_Applicable"|string; - export interface DescribeComplianceByConfigRuleRequest { - /** - * Specify one or more AWS Config rule names to filter the results by rule. - */ - ConfigRuleNames?: ConfigRuleNames; - /** - * Filters the results by compliance. The allowed values are COMPLIANT, NON_COMPLIANT, and INSUFFICIENT_DATA. - */ - ComplianceTypes?: ComplianceTypes; - /** - * The NextToken string returned on a previous page that you use to get the next page of results in a paginated response. - */ - NextToken?: String; - } - export interface DescribeComplianceByConfigRuleResponse { - /** - * Indicates whether each of the specified AWS Config rules is compliant. - */ - ComplianceByConfigRules?: ComplianceByConfigRules; - /** - * The string that you use in a subsequent request to get the next page of results in a paginated response. - */ - NextToken?: String; - } - export interface DescribeComplianceByResourceRequest { - /** - * The types of AWS resources for which you want compliance information; for example, AWS::EC2::Instance. For this action, you can specify that the resource type is an AWS account by specifying AWS::::Account. - */ - ResourceType?: StringWithCharLimit256; - /** - * The ID of the AWS resource for which you want compliance information. You can specify only one resource ID. If you specify a resource ID, you must also specify a type for ResourceType. - */ - ResourceId?: BaseResourceId; - /** - * Filters the results by compliance. The allowed values are COMPLIANT, NON_COMPLIANT, and INSUFFICIENT_DATA. - */ - ComplianceTypes?: ComplianceTypes; - /** - * The maximum number of evaluation results returned on each page. The default is 10. You cannot specify a limit greater than 100. If you specify 0, AWS Config uses the default. - */ - Limit?: Limit; - /** - * The NextToken string returned on a previous page that you use to get the next page of results in a paginated response. - */ - NextToken?: NextToken; - } - export interface DescribeComplianceByResourceResponse { - /** - * Indicates whether the specified AWS resource complies with all of the AWS Config rules that evaluate it. - */ - ComplianceByResources?: ComplianceByResources; - /** - * The string that you use in a subsequent request to get the next page of results in a paginated response. - */ - NextToken?: NextToken; - } - export interface DescribeConfigRuleEvaluationStatusRequest { - /** - * The name of the AWS managed Config rules for which you want status information. If you do not specify any names, AWS Config returns status information for all AWS managed Config rules that you use. - */ - ConfigRuleNames?: ConfigRuleNames; - /** - * The NextToken string returned on a previous page that you use to get the next page of results in a paginated response. - */ - NextToken?: String; - /** - * The number of rule evaluation results that you want returned. This parameter is required if the rule limit for your account is more than the default of 50 rules. For more information about requesting a rule limit increase, see AWS Config Limits in the AWS General Reference Guide. - */ - Limit?: RuleLimit; - } - export interface DescribeConfigRuleEvaluationStatusResponse { - /** - * Status information about your AWS managed Config rules. - */ - ConfigRulesEvaluationStatus?: ConfigRuleEvaluationStatusList; - /** - * The string that you use in a subsequent request to get the next page of results in a paginated response. - */ - NextToken?: String; - } - export interface DescribeConfigRulesRequest { - /** - * The names of the AWS Config rules for which you want details. If you do not specify any names, AWS Config returns details for all your rules. - */ - ConfigRuleNames?: ConfigRuleNames; - /** - * The NextToken string returned on a previous page that you use to get the next page of results in a paginated response. - */ - NextToken?: String; - } - export interface DescribeConfigRulesResponse { - /** - * The details about your AWS Config rules. - */ - ConfigRules?: ConfigRules; - /** - * The string that you use in a subsequent request to get the next page of results in a paginated response. - */ - NextToken?: String; - } - export interface DescribeConfigurationRecorderStatusRequest { - /** - * The name(s) of the configuration recorder. If the name is not specified, the action returns the current status of all the configuration recorders associated with the account. - */ - ConfigurationRecorderNames?: ConfigurationRecorderNameList; - } - export interface DescribeConfigurationRecorderStatusResponse { - /** - * A list that contains status of the specified recorders. - */ - ConfigurationRecordersStatus?: ConfigurationRecorderStatusList; - } - export interface DescribeConfigurationRecordersRequest { - /** - * A list of configuration recorder names. - */ - ConfigurationRecorderNames?: ConfigurationRecorderNameList; - } - export interface DescribeConfigurationRecordersResponse { - /** - * A list that contains the descriptions of the specified configuration recorders. - */ - ConfigurationRecorders?: ConfigurationRecorderList; - } - export interface DescribeDeliveryChannelStatusRequest { - /** - * A list of delivery channel names. - */ - DeliveryChannelNames?: DeliveryChannelNameList; - } - export interface DescribeDeliveryChannelStatusResponse { - /** - * A list that contains the status of a specified delivery channel. - */ - DeliveryChannelsStatus?: DeliveryChannelStatusList; - } - export interface DescribeDeliveryChannelsRequest { - /** - * A list of delivery channel names. - */ - DeliveryChannelNames?: DeliveryChannelNameList; - } - export interface DescribeDeliveryChannelsResponse { - /** - * A list that contains the descriptions of the specified delivery channel. - */ - DeliveryChannels?: DeliveryChannelList; - } - export type EarlierTime = Date; - export type EmptiableStringWithCharLimit256 = string; - export interface Evaluation { - /** - * The type of AWS resource that was evaluated. - */ - ComplianceResourceType: StringWithCharLimit256; - /** - * The ID of the AWS resource that was evaluated. - */ - ComplianceResourceId: BaseResourceId; - /** - * Indicates whether the AWS resource complies with the AWS Config rule that it was evaluated against. For the Evaluation data type, AWS Config supports only the COMPLIANT, NON_COMPLIANT, and NOT_APPLICABLE values. AWS Config does not support the INSUFFICIENT_DATA value for this data type. Similarly, AWS Config does not accept INSUFFICIENT_DATA as the value for ComplianceType from a PutEvaluations request. For example, an AWS Lambda function for a custom Config rule cannot pass an INSUFFICIENT_DATA value to AWS Config. - */ - ComplianceType: ComplianceType; - /** - * Supplementary information about how the evaluation determined the compliance. - */ - Annotation?: StringWithCharLimit256; - /** - * The time of the event in AWS Config that triggered the evaluation. For event-based evaluations, the time indicates when AWS Config created the configuration item that triggered the evaluation. For periodic evaluations, the time indicates when AWS Config triggered the evaluation at the frequency that you specified (for example, every 24 hours). - */ - OrderingTimestamp: OrderingTimestamp; - } - export interface EvaluationResult { - /** - * Uniquely identifies the evaluation result. - */ - EvaluationResultIdentifier?: EvaluationResultIdentifier; - /** - * Indicates whether the AWS resource complies with the AWS Config rule that evaluated it. For the EvaluationResult data type, AWS Config supports only the COMPLIANT, NON_COMPLIANT, and NOT_APPLICABLE values. AWS Config does not support the INSUFFICIENT_DATA value for the EvaluationResult data type. - */ - ComplianceType?: ComplianceType; - /** - * The time when AWS Config recorded the evaluation result. - */ - ResultRecordedTime?: _Date; - /** - * The time when the AWS Config rule evaluated the AWS resource. - */ - ConfigRuleInvokedTime?: _Date; - /** - * Supplementary information about how the evaluation determined the compliance. - */ - Annotation?: StringWithCharLimit256; - /** - * An encrypted token that associates an evaluation with an AWS Config rule. The token identifies the rule, the AWS resource being evaluated, and the event that triggered the evaluation. - */ - ResultToken?: String; - } - export interface EvaluationResultIdentifier { - /** - * Identifies an AWS Config rule used to evaluate an AWS resource, and provides the type and ID of the evaluated resource. - */ - EvaluationResultQualifier?: EvaluationResultQualifier; - /** - * The time of the event that triggered the evaluation of your AWS resources. The time can indicate when AWS Config delivered a configuration item change notification, or it can indicate when AWS Config delivered the configuration snapshot, depending on which event triggered the evaluation. - */ - OrderingTimestamp?: _Date; - } - export interface EvaluationResultQualifier { - /** - * The name of the AWS Config rule that was used in the evaluation. - */ - ConfigRuleName?: StringWithCharLimit64; - /** - * The type of AWS resource that was evaluated. - */ - ResourceType?: StringWithCharLimit256; - /** - * The ID of the evaluated AWS resource. - */ - ResourceId?: BaseResourceId; - } - export type EvaluationResults = EvaluationResult[]; - export type Evaluations = Evaluation[]; - export type EventSource = "aws.config"|string; - export interface GetComplianceDetailsByConfigRuleRequest { - /** - * The name of the AWS Config rule for which you want compliance information. - */ - ConfigRuleName: StringWithCharLimit64; - /** - * Filters the results by compliance. The allowed values are COMPLIANT, NON_COMPLIANT, and NOT_APPLICABLE. - */ - ComplianceTypes?: ComplianceTypes; - /** - * The maximum number of evaluation results returned on each page. The default is 10. You cannot specify a limit greater than 100. If you specify 0, AWS Config uses the default. - */ - Limit?: Limit; - /** - * The NextToken string returned on a previous page that you use to get the next page of results in a paginated response. - */ - NextToken?: NextToken; - } - export interface GetComplianceDetailsByConfigRuleResponse { - /** - * Indicates whether the AWS resource complies with the specified AWS Config rule. - */ - EvaluationResults?: EvaluationResults; - /** - * The string that you use in a subsequent request to get the next page of results in a paginated response. - */ - NextToken?: NextToken; - } - export interface GetComplianceDetailsByResourceRequest { - /** - * The type of the AWS resource for which you want compliance information. - */ - ResourceType: StringWithCharLimit256; - /** - * The ID of the AWS resource for which you want compliance information. - */ - ResourceId: BaseResourceId; - /** - * Filters the results by compliance. The allowed values are COMPLIANT, NON_COMPLIANT, and NOT_APPLICABLE. - */ - ComplianceTypes?: ComplianceTypes; - /** - * The NextToken string returned on a previous page that you use to get the next page of results in a paginated response. - */ - NextToken?: String; - } - export interface GetComplianceDetailsByResourceResponse { - /** - * Indicates whether the specified AWS resource complies each AWS Config rule. - */ - EvaluationResults?: EvaluationResults; - /** - * The string that you use in a subsequent request to get the next page of results in a paginated response. - */ - NextToken?: String; - } - export interface GetComplianceSummaryByConfigRuleResponse { - /** - * The number of AWS Config rules that are compliant and the number that are noncompliant, up to a maximum of 25 for each. - */ - ComplianceSummary?: ComplianceSummary; - } - export interface GetComplianceSummaryByResourceTypeRequest { - /** - * Specify one or more resource types to get the number of resources that are compliant and the number that are noncompliant for each resource type. For this request, you can specify an AWS resource type such as AWS::EC2::Instance, and you can specify that the resource type is an AWS account by specifying AWS::::Account. - */ - ResourceTypes?: ResourceTypes; - } - export interface GetComplianceSummaryByResourceTypeResponse { - /** - * The number of resources that are compliant and the number that are noncompliant. If one or more resource types were provided with the request, the numbers are returned for each resource type. The maximum number returned is 100. - */ - ComplianceSummariesByResourceType?: ComplianceSummariesByResourceType; - } - export interface GetDiscoveredResourceCountsRequest { - /** - * The comma-separated list that specifies the resource types that you want the AWS Config to return. For example, ("AWS::EC2::Instance", "AWS::IAM::User"). If a value for resourceTypes is not specified, AWS Config returns all resource types that AWS Config is recording in the region for your account. If the configuration recorder is turned off, AWS Config returns an empty list of ResourceCount objects. If the configuration recorder is not recording a specific resource type (for example, S3 buckets), that resource type is not returned in the list of ResourceCount objects. - */ - resourceTypes?: ResourceTypes; - /** - * The maximum number of ResourceCount objects returned on each page. The default is 100. You cannot specify a limit greater than 100. If you specify 0, AWS Config uses the default. - */ - limit?: Limit; - /** - * The nextToken string returned on a previous page that you use to get the next page of results in a paginated response. - */ - nextToken?: NextToken; - } - export interface GetDiscoveredResourceCountsResponse { - /** - * The total number of resources that AWS Config is recording in the region for your account. If you specify resource types in the request, AWS Config returns only the total number of resources for those resource types. Example AWS Config is recording three resource types in the US East (Ohio) Region for your account: 25 EC2 instances, 20 IAM users, and 15 S3 buckets, for a total of 60 resources. You make a call to the GetDiscoveredResourceCounts action and specify the resource type, "AWS::EC2::Instances" in the request. AWS Config returns 25 for totalDiscoveredResources. - */ - totalDiscoveredResources?: Long; - /** - * The list of ResourceCount objects. Each object is listed in descending order by the number of resources. - */ - resourceCounts?: ResourceCounts; - /** - * The string that you use in a subsequent request to get the next page of results in a paginated response. - */ - nextToken?: NextToken; - } - export interface GetResourceConfigHistoryRequest { - /** - * The resource type. - */ - resourceType: ResourceType; - /** - * The ID of the resource (for example., sg-xxxxxx). - */ - resourceId: ResourceId; - /** - * The time stamp that indicates a later time. If not specified, current time is taken. - */ - laterTime?: LaterTime; - /** - * The time stamp that indicates an earlier time. If not specified, the action returns paginated results that contain configuration items that start from when the first configuration item was recorded. - */ - earlierTime?: EarlierTime; - /** - * The chronological order for configuration items listed. By default the results are listed in reverse chronological order. - */ - chronologicalOrder?: ChronologicalOrder; - /** - * The maximum number of configuration items returned on each page. The default is 10. You cannot specify a limit greater than 100. If you specify 0, AWS Config uses the default. - */ - limit?: Limit; - /** - * The nextToken string returned on a previous page that you use to get the next page of results in a paginated response. - */ - nextToken?: NextToken; - } - export interface GetResourceConfigHistoryResponse { - /** - * A list that contains the configuration history of one or more resources. - */ - configurationItems?: ConfigurationItemList; - /** - * The string that you use in a subsequent request to get the next page of results in a paginated response. - */ - nextToken?: NextToken; - } - export type IncludeGlobalResourceTypes = boolean; - export type Integer = number; - export type LaterTime = Date; - export type Limit = number; - export interface ListDiscoveredResourcesRequest { - /** - * The type of resources that you want AWS Config to list in the response. - */ - resourceType: ResourceType; - /** - * The IDs of only those resources that you want AWS Config to list in the response. If you do not specify this parameter, AWS Config lists all resources of the specified type that it has discovered. - */ - resourceIds?: ResourceIdList; - /** - * The custom name of only those resources that you want AWS Config to list in the response. If you do not specify this parameter, AWS Config lists all resources of the specified type that it has discovered. - */ - resourceName?: ResourceName; - /** - * The maximum number of resource identifiers returned on each page. The default is 100. You cannot specify a limit greater than 100. If you specify 0, AWS Config uses the default. - */ - limit?: Limit; - /** - * Specifies whether AWS Config includes deleted resources in the results. By default, deleted resources are not included. - */ - includeDeletedResources?: Boolean; - /** - * The nextToken string returned on a previous page that you use to get the next page of results in a paginated response. - */ - nextToken?: NextToken; - } - export interface ListDiscoveredResourcesResponse { - /** - * The details that identify a resource that is discovered by AWS Config, including the resource type, ID, and (if available) the custom resource name. - */ - resourceIdentifiers?: ResourceIdentifierList; - /** - * The string that you use in a subsequent request to get the next page of results in a paginated response. - */ - nextToken?: NextToken; - } - export type Long = number; - export type MaximumExecutionFrequency = "One_Hour"|"Three_Hours"|"Six_Hours"|"Twelve_Hours"|"TwentyFour_Hours"|string; - export type MessageType = "ConfigurationItemChangeNotification"|"ConfigurationSnapshotDeliveryCompleted"|"ScheduledNotification"|"OversizedConfigurationItemChangeNotification"|string; - export type Name = string; - export type NextToken = string; - export type OrderingTimestamp = Date; - export type Owner = "CUSTOM_LAMBDA"|"AWS"|string; - export interface PutConfigRuleRequest { - /** - * The rule that you want to add to your account. - */ - ConfigRule: ConfigRule; - } - export interface PutConfigurationRecorderRequest { - /** - * The configuration recorder object that records each configuration change made to the resources. - */ - ConfigurationRecorder: ConfigurationRecorder; - } - export interface PutDeliveryChannelRequest { - /** - * The configuration delivery channel object that delivers the configuration information to an Amazon S3 bucket, and to an Amazon SNS topic. - */ - DeliveryChannel: DeliveryChannel; - } - export interface PutEvaluationsRequest { - /** - * The assessments that the AWS Lambda function performs. Each evaluation identifies an AWS resource and indicates whether it complies with the AWS Config rule that invokes the AWS Lambda function. - */ - Evaluations?: Evaluations; - /** - * An encrypted token that associates an evaluation with an AWS Config rule. Identifies the rule and the event that triggered the evaluation - */ - ResultToken: String; - /** - * Use this parameter to specify a test run for PutEvaluations. You can verify whether your AWS Lambda function will deliver evaluation results to AWS Config. No updates occur to your existing evaluations, and evaluation results are not sent to AWS Config. When TestMode is true, PutEvaluations doesn't require a valid value for the ResultToken parameter, but the value cannot be null. - */ - TestMode?: Boolean; - } - export interface PutEvaluationsResponse { - /** - * Requests that failed because of a client or server error. - */ - FailedEvaluations?: Evaluations; - } - export type RecorderName = string; - export type RecorderStatus = "Pending"|"Success"|"Failure"|string; - export interface RecordingGroup { - /** - * Specifies whether AWS Config records configuration changes for every supported type of regional resource. If you set this option to true, when AWS Config adds support for a new type of regional resource, it automatically starts recording resources of that type. If you set this option to true, you cannot enumerate a list of resourceTypes. - */ - allSupported?: AllSupported; - /** - * Specifies whether AWS Config includes all supported types of global resources (for example, IAM resources) with the resources that it records. Before you can set this option to true, you must set the allSupported option to true. If you set this option to true, when AWS Config adds support for a new type of global resource, it automatically starts recording resources of that type. The configuration details for any global resource are the same in all regions. To prevent duplicate configuration items, you should consider customizing AWS Config in only one region to record global resources. - */ - includeGlobalResourceTypes?: IncludeGlobalResourceTypes; - /** - * A comma-separated list that specifies the types of AWS resources for which AWS Config records configuration changes (for example, AWS::EC2::Instance or AWS::CloudTrail::Trail). Before you can set this option to true, you must set the allSupported option to false. If you set this option to true, when AWS Config adds support for a new type of resource, it will not record resources of that type unless you manually add that type to your recording group. For a list of valid resourceTypes values, see the resourceType Value column in Supported AWS Resource Types. - */ - resourceTypes?: ResourceTypeList; - } - export type ReevaluateConfigRuleNames = StringWithCharLimit64[]; - export type RelatedEvent = string; - export type RelatedEventList = RelatedEvent[]; - export interface Relationship { - /** - * The resource type of the related resource. - */ - resourceType?: ResourceType; - /** - * The ID of the related resource (for example, sg-xxxxxx). - */ - resourceId?: ResourceId; - /** - * The custom name of the related resource, if available. - */ - resourceName?: ResourceName; - /** - * The type of relationship with the related resource. - */ - relationshipName?: RelationshipName; - } - export type RelationshipList = Relationship[]; - export type RelationshipName = string; - export interface ResourceCount { - /** - * The resource type, for example "AWS::EC2::Instance". - */ - resourceType?: ResourceType; - /** - * The number of resources. - */ - count?: Long; - } - export type ResourceCounts = ResourceCount[]; - export type ResourceCreationTime = Date; - export type ResourceDeletionTime = Date; - export type ResourceId = string; - export type ResourceIdList = ResourceId[]; - export interface ResourceIdentifier { - /** - * The type of resource. - */ - resourceType?: ResourceType; - /** - * The ID of the resource (for example., sg-xxxxxx). - */ - resourceId?: ResourceId; - /** - * The custom name of the resource (if available). - */ - resourceName?: ResourceName; - /** - * The time that the resource was deleted. - */ - resourceDeletionTime?: ResourceDeletionTime; - } - export type ResourceIdentifierList = ResourceIdentifier[]; - export type ResourceName = string; - export type ResourceType = "AWS::EC2::CustomerGateway"|"AWS::EC2::EIP"|"AWS::EC2::Host"|"AWS::EC2::Instance"|"AWS::EC2::InternetGateway"|"AWS::EC2::NetworkAcl"|"AWS::EC2::NetworkInterface"|"AWS::EC2::RouteTable"|"AWS::EC2::SecurityGroup"|"AWS::EC2::Subnet"|"AWS::CloudTrail::Trail"|"AWS::EC2::Volume"|"AWS::EC2::VPC"|"AWS::EC2::VPNConnection"|"AWS::EC2::VPNGateway"|"AWS::IAM::Group"|"AWS::IAM::Policy"|"AWS::IAM::Role"|"AWS::IAM::User"|"AWS::ACM::Certificate"|"AWS::RDS::DBInstance"|"AWS::RDS::DBSubnetGroup"|"AWS::RDS::DBSecurityGroup"|"AWS::RDS::DBSnapshot"|"AWS::RDS::EventSubscription"|"AWS::ElasticLoadBalancingV2::LoadBalancer"|"AWS::S3::Bucket"|"AWS::SSM::ManagedInstanceInventory"|"AWS::Redshift::Cluster"|"AWS::Redshift::ClusterSnapshot"|"AWS::Redshift::ClusterParameterGroup"|"AWS::Redshift::ClusterSecurityGroup"|"AWS::Redshift::ClusterSubnetGroup"|"AWS::Redshift::EventSubscription"|"AWS::CloudWatch::Alarm"|"AWS::CloudFormation::Stack"|"AWS::DynamoDB::Table"|"AWS::AutoScaling::AutoScalingGroup"|"AWS::AutoScaling::LaunchConfiguration"|"AWS::AutoScaling::ScalingPolicy"|"AWS::AutoScaling::ScheduledAction"|string; - export type ResourceTypeList = ResourceType[]; - export type ResourceTypes = StringWithCharLimit256[]; - export type RuleLimit = number; - export interface Scope { - /** - * The resource types of only those AWS resources that you want to trigger an evaluation for the rule. You can only specify one type if you also specify a resource ID for ComplianceResourceId. - */ - ComplianceResourceTypes?: ComplianceResourceTypes; - /** - * The tag key that is applied to only those AWS resources that you want to trigger an evaluation for the rule. - */ - TagKey?: StringWithCharLimit128; - /** - * The tag value applied to only those AWS resources that you want to trigger an evaluation for the rule. If you specify a value for TagValue, you must also specify a value for TagKey. - */ - TagValue?: StringWithCharLimit256; - /** - * The IDs of the only AWS resource that you want to trigger an evaluation for the rule. If you specify a resource ID, you must specify one resource type for ComplianceResourceTypes. - */ - ComplianceResourceId?: BaseResourceId; - } - export interface Source { - /** - * Indicates whether AWS or the customer owns and manages the AWS Config rule. - */ - Owner: Owner; - /** - * For AWS Config managed rules, a predefined identifier from a list. For example, IAM_PASSWORD_POLICY is a managed rule. To reference a managed rule, see Using AWS Managed Config Rules. For custom rules, the identifier is the Amazon Resource Name (ARN) of the rule's AWS Lambda function, such as arn:aws:lambda:us-east-2:123456789012:function:custom_rule_name. - */ - SourceIdentifier: StringWithCharLimit256; - /** - * Provides the source and type of the event that causes AWS Config to evaluate your AWS resources. - */ - SourceDetails?: SourceDetails; - } - export interface SourceDetail { - /** - * The source of the event, such as an AWS service, that triggers AWS Config to evaluate your AWS resources. - */ - EventSource?: EventSource; - /** - * The type of notification that triggers AWS Config to run an evaluation for a rule. You can specify the following notification types: ConfigurationItemChangeNotification - Triggers an evaluation when AWS Config delivers a configuration item as a result of a resource change. OversizedConfigurationItemChangeNotification - Triggers an evaluation when AWS Config delivers an oversized configuration item. AWS Config may generate this notification type when a resource changes and the notification exceeds the maximum size allowed by Amazon SNS. ScheduledNotification - Triggers a periodic evaluation at the frequency specified for MaximumExecutionFrequency. ConfigurationSnapshotDeliveryCompleted - Triggers a periodic evaluation when AWS Config delivers a configuration snapshot. If you want your custom rule to be triggered by configuration changes, specify both ConfigurationItemChangeNotification and OversizedConfigurationItemChangeNotification. - */ - MessageType?: MessageType; - /** - * The frequency that you want AWS Config to run evaluations for a custom rule with a periodic trigger. If you specify a value for MaximumExecutionFrequency, then MessageType must use the ScheduledNotification value. By default, rules with a periodic trigger are evaluated every 24 hours. To change the frequency, specify a valid value for the MaximumExecutionFrequency parameter. - */ - MaximumExecutionFrequency?: MaximumExecutionFrequency; - } - export type SourceDetails = SourceDetail[]; - export interface StartConfigRulesEvaluationRequest { - /** - * The list of names of Config rules that you want to run evaluations for. - */ - ConfigRuleNames?: ReevaluateConfigRuleNames; - } - export interface StartConfigRulesEvaluationResponse { - } - export interface StartConfigurationRecorderRequest { - /** - * The name of the recorder object that records each configuration change made to the resources. - */ - ConfigurationRecorderName: RecorderName; - } - export interface StopConfigurationRecorderRequest { - /** - * The name of the recorder object that records each configuration change made to the resources. - */ - ConfigurationRecorderName: RecorderName; - } - export type String = string; - export type StringWithCharLimit1024 = string; - export type StringWithCharLimit128 = string; - export type StringWithCharLimit256 = string; - export type StringWithCharLimit64 = string; - export type SupplementaryConfiguration = {[key: string]: SupplementaryConfigurationValue}; - export type SupplementaryConfigurationName = string; - export type SupplementaryConfigurationValue = string; - export type Tags = {[key: string]: Value}; - export type Value = string; - export type Version = string; - /** - * A string in YYYY-MM-DD format that represents the latest possible API version that can be used in this service. Specify 'latest' to use the latest possible version. - */ - export type apiVersion = "2014-11-12"|"latest"|string; - export interface ClientApiVersions { - /** - * A string in YYYY-MM-DD format that represents the latest possible API version that can be used in this service. Specify 'latest' to use the latest possible version. - */ - apiVersion?: apiVersion; - } - export type ClientConfiguration = ServiceConfigurationOptions & ClientApiVersions; - /** - * Contains interfaces for use with the ConfigService client. - */ - export import Types = ConfigService; -} -export = ConfigService; diff --git a/workshops/monte-carlo-on-ec2-spot-fleet/src/web/node_modules/aws-sdk/clients/configservice.js b/workshops/monte-carlo-on-ec2-spot-fleet/src/web/node_modules/aws-sdk/clients/configservice.js deleted file mode 100644 index 108b2382..00000000 --- a/workshops/monte-carlo-on-ec2-spot-fleet/src/web/node_modules/aws-sdk/clients/configservice.js +++ /dev/null @@ -1,18 +0,0 @@ -require('../lib/node_loader'); -var AWS = require('../lib/core'); -var Service = AWS.Service; -var apiLoader = AWS.apiLoader; - -apiLoader.services['configservice'] = {}; -AWS.ConfigService = Service.defineService('configservice', ['2014-11-12']); -Object.defineProperty(apiLoader.services['configservice'], '2014-11-12', { - get: function get() { - var model = require('../apis/config-2014-11-12.min.json'); - model.paginators = require('../apis/config-2014-11-12.paginators.json').pagination; - return model; - }, - enumerable: true, - configurable: true -}); - -module.exports = AWS.ConfigService; diff --git a/workshops/monte-carlo-on-ec2-spot-fleet/src/web/node_modules/aws-sdk/clients/cur.d.ts b/workshops/monte-carlo-on-ec2-spot-fleet/src/web/node_modules/aws-sdk/clients/cur.d.ts deleted file mode 100644 index 58e9cd28..00000000 --- a/workshops/monte-carlo-on-ec2-spot-fleet/src/web/node_modules/aws-sdk/clients/cur.d.ts +++ /dev/null @@ -1,102 +0,0 @@ -import {Request} from '../lib/request'; -import {Response} from '../lib/response'; -import {AWSError} from '../lib/error'; -import {Service} from '../lib/service'; -import {ServiceConfigurationOptions} from '../lib/service'; -import {ConfigBase as Config} from '../lib/config'; -interface Blob {} -declare class CUR extends Service { - /** - * Constructs a service object. This object has one method for each API operation. - */ - constructor(options?: CUR.Types.ClientConfiguration) - config: Config & CUR.Types.ClientConfiguration; - /** - * Delete a specified report definition - */ - deleteReportDefinition(params: CUR.Types.DeleteReportDefinitionRequest, callback?: (err: AWSError, data: CUR.Types.DeleteReportDefinitionResponse) => void): Request; - /** - * Delete a specified report definition - */ - deleteReportDefinition(callback?: (err: AWSError, data: CUR.Types.DeleteReportDefinitionResponse) => void): Request; - /** - * Describe a list of report definitions owned by the account - */ - describeReportDefinitions(params: CUR.Types.DescribeReportDefinitionsRequest, callback?: (err: AWSError, data: CUR.Types.DescribeReportDefinitionsResponse) => void): Request; - /** - * Describe a list of report definitions owned by the account - */ - describeReportDefinitions(callback?: (err: AWSError, data: CUR.Types.DescribeReportDefinitionsResponse) => void): Request; - /** - * Create a new report definition - */ - putReportDefinition(params: CUR.Types.PutReportDefinitionRequest, callback?: (err: AWSError, data: CUR.Types.PutReportDefinitionResponse) => void): Request; - /** - * Create a new report definition - */ - putReportDefinition(callback?: (err: AWSError, data: CUR.Types.PutReportDefinitionResponse) => void): Request; -} -declare namespace CUR { - export type AWSRegion = "us-east-1"|"us-west-1"|"us-west-2"|"eu-central-1"|"eu-west-1"|"ap-southeast-1"|"ap-southeast-2"|"ap-northeast-1"|string; - export type AdditionalArtifact = "REDSHIFT"|"QUICKSIGHT"|string; - export type AdditionalArtifactList = AdditionalArtifact[]; - export type CompressionFormat = "ZIP"|"GZIP"|string; - export interface DeleteReportDefinitionRequest { - ReportName?: ReportName; - } - export interface DeleteReportDefinitionResponse { - ResponseMessage?: DeleteResponseMessage; - } - export type DeleteResponseMessage = string; - export interface DescribeReportDefinitionsRequest { - MaxResults?: MaxResults; - NextToken?: GenericString; - } - export interface DescribeReportDefinitionsResponse { - ReportDefinitions?: ReportDefinitionList; - NextToken?: GenericString; - } - export type ErrorMessage = string; - export type GenericString = string; - export type MaxResults = number; - export interface PutReportDefinitionRequest { - ReportDefinition: ReportDefinition; - } - export interface PutReportDefinitionResponse { - } - export interface ReportDefinition { - ReportName: ReportName; - TimeUnit: TimeUnit; - Format: ReportFormat; - Compression: CompressionFormat; - AdditionalSchemaElements: SchemaElementList; - S3Bucket: S3Bucket; - S3Prefix: S3Prefix; - S3Region: AWSRegion; - AdditionalArtifacts?: AdditionalArtifactList; - } - export type ReportDefinitionList = ReportDefinition[]; - export type ReportFormat = "textORcsv"|string; - export type ReportName = string; - export type S3Bucket = string; - export type S3Prefix = string; - export type SchemaElement = "RESOURCES"|string; - export type SchemaElementList = SchemaElement[]; - export type TimeUnit = "HOURLY"|"DAILY"|string; - /** - * A string in YYYY-MM-DD format that represents the latest possible API version that can be used in this service. Specify 'latest' to use the latest possible version. - */ - export type apiVersion = "2017-01-06"|"latest"|string; - export interface ClientApiVersions { - /** - * A string in YYYY-MM-DD format that represents the latest possible API version that can be used in this service. Specify 'latest' to use the latest possible version. - */ - apiVersion?: apiVersion; - } - export type ClientConfiguration = ServiceConfigurationOptions & ClientApiVersions; - /** - * Contains interfaces for use with the CUR client. - */ - export import Types = CUR; -} -export = CUR; diff --git a/workshops/monte-carlo-on-ec2-spot-fleet/src/web/node_modules/aws-sdk/clients/cur.js b/workshops/monte-carlo-on-ec2-spot-fleet/src/web/node_modules/aws-sdk/clients/cur.js deleted file mode 100644 index 76101bb4..00000000 --- a/workshops/monte-carlo-on-ec2-spot-fleet/src/web/node_modules/aws-sdk/clients/cur.js +++ /dev/null @@ -1,18 +0,0 @@ -require('../lib/node_loader'); -var AWS = require('../lib/core'); -var Service = AWS.Service; -var apiLoader = AWS.apiLoader; - -apiLoader.services['cur'] = {}; -AWS.CUR = Service.defineService('cur', ['2017-01-06']); -Object.defineProperty(apiLoader.services['cur'], '2017-01-06', { - get: function get() { - var model = require('../apis/cur-2017-01-06.min.json'); - model.paginators = require('../apis/cur-2017-01-06.paginators.json').pagination; - return model; - }, - enumerable: true, - configurable: true -}); - -module.exports = AWS.CUR; diff --git a/workshops/monte-carlo-on-ec2-spot-fleet/src/web/node_modules/aws-sdk/clients/datapipeline.d.ts b/workshops/monte-carlo-on-ec2-spot-fleet/src/web/node_modules/aws-sdk/clients/datapipeline.d.ts deleted file mode 100644 index 6ebdfcc4..00000000 --- a/workshops/monte-carlo-on-ec2-spot-fleet/src/web/node_modules/aws-sdk/clients/datapipeline.d.ts +++ /dev/null @@ -1,770 +0,0 @@ -import {Request} from '../lib/request'; -import {Response} from '../lib/response'; -import {AWSError} from '../lib/error'; -import {Service} from '../lib/service'; -import {ServiceConfigurationOptions} from '../lib/service'; -import {ConfigBase as Config} from '../lib/config'; -interface Blob {} -declare class DataPipeline extends Service { - /** - * Constructs a service object. This object has one method for each API operation. - */ - constructor(options?: DataPipeline.Types.ClientConfiguration) - config: Config & DataPipeline.Types.ClientConfiguration; - /** - * Validates the specified pipeline and starts processing pipeline tasks. If the pipeline does not pass validation, activation fails. If you need to pause the pipeline to investigate an issue with a component, such as a data source or script, call DeactivatePipeline. To activate a finished pipeline, modify the end date for the pipeline and then activate it. - */ - activatePipeline(params: DataPipeline.Types.ActivatePipelineInput, callback?: (err: AWSError, data: DataPipeline.Types.ActivatePipelineOutput) => void): Request; - /** - * Validates the specified pipeline and starts processing pipeline tasks. If the pipeline does not pass validation, activation fails. If you need to pause the pipeline to investigate an issue with a component, such as a data source or script, call DeactivatePipeline. To activate a finished pipeline, modify the end date for the pipeline and then activate it. - */ - activatePipeline(callback?: (err: AWSError, data: DataPipeline.Types.ActivatePipelineOutput) => void): Request; - /** - * Adds or modifies tags for the specified pipeline. - */ - addTags(params: DataPipeline.Types.AddTagsInput, callback?: (err: AWSError, data: DataPipeline.Types.AddTagsOutput) => void): Request; - /** - * Adds or modifies tags for the specified pipeline. - */ - addTags(callback?: (err: AWSError, data: DataPipeline.Types.AddTagsOutput) => void): Request; - /** - * Creates a new, empty pipeline. Use PutPipelineDefinition to populate the pipeline. - */ - createPipeline(params: DataPipeline.Types.CreatePipelineInput, callback?: (err: AWSError, data: DataPipeline.Types.CreatePipelineOutput) => void): Request; - /** - * Creates a new, empty pipeline. Use PutPipelineDefinition to populate the pipeline. - */ - createPipeline(callback?: (err: AWSError, data: DataPipeline.Types.CreatePipelineOutput) => void): Request; - /** - * Deactivates the specified running pipeline. The pipeline is set to the DEACTIVATING state until the deactivation process completes. To resume a deactivated pipeline, use ActivatePipeline. By default, the pipeline resumes from the last completed execution. Optionally, you can specify the date and time to resume the pipeline. - */ - deactivatePipeline(params: DataPipeline.Types.DeactivatePipelineInput, callback?: (err: AWSError, data: DataPipeline.Types.DeactivatePipelineOutput) => void): Request; - /** - * Deactivates the specified running pipeline. The pipeline is set to the DEACTIVATING state until the deactivation process completes. To resume a deactivated pipeline, use ActivatePipeline. By default, the pipeline resumes from the last completed execution. Optionally, you can specify the date and time to resume the pipeline. - */ - deactivatePipeline(callback?: (err: AWSError, data: DataPipeline.Types.DeactivatePipelineOutput) => void): Request; - /** - * Deletes a pipeline, its pipeline definition, and its run history. AWS Data Pipeline attempts to cancel instances associated with the pipeline that are currently being processed by task runners. Deleting a pipeline cannot be undone. You cannot query or restore a deleted pipeline. To temporarily pause a pipeline instead of deleting it, call SetStatus with the status set to PAUSE on individual components. Components that are paused by SetStatus can be resumed. - */ - deletePipeline(params: DataPipeline.Types.DeletePipelineInput, callback?: (err: AWSError, data: {}) => void): Request<{}, AWSError>; - /** - * Deletes a pipeline, its pipeline definition, and its run history. AWS Data Pipeline attempts to cancel instances associated with the pipeline that are currently being processed by task runners. Deleting a pipeline cannot be undone. You cannot query or restore a deleted pipeline. To temporarily pause a pipeline instead of deleting it, call SetStatus with the status set to PAUSE on individual components. Components that are paused by SetStatus can be resumed. - */ - deletePipeline(callback?: (err: AWSError, data: {}) => void): Request<{}, AWSError>; - /** - * Gets the object definitions for a set of objects associated with the pipeline. Object definitions are composed of a set of fields that define the properties of the object. - */ - describeObjects(params: DataPipeline.Types.DescribeObjectsInput, callback?: (err: AWSError, data: DataPipeline.Types.DescribeObjectsOutput) => void): Request; - /** - * Gets the object definitions for a set of objects associated with the pipeline. Object definitions are composed of a set of fields that define the properties of the object. - */ - describeObjects(callback?: (err: AWSError, data: DataPipeline.Types.DescribeObjectsOutput) => void): Request; - /** - * Retrieves metadata about one or more pipelines. The information retrieved includes the name of the pipeline, the pipeline identifier, its current state, and the user account that owns the pipeline. Using account credentials, you can retrieve metadata about pipelines that you or your IAM users have created. If you are using an IAM user account, you can retrieve metadata about only those pipelines for which you have read permissions. To retrieve the full pipeline definition instead of metadata about the pipeline, call GetPipelineDefinition. - */ - describePipelines(params: DataPipeline.Types.DescribePipelinesInput, callback?: (err: AWSError, data: DataPipeline.Types.DescribePipelinesOutput) => void): Request; - /** - * Retrieves metadata about one or more pipelines. The information retrieved includes the name of the pipeline, the pipeline identifier, its current state, and the user account that owns the pipeline. Using account credentials, you can retrieve metadata about pipelines that you or your IAM users have created. If you are using an IAM user account, you can retrieve metadata about only those pipelines for which you have read permissions. To retrieve the full pipeline definition instead of metadata about the pipeline, call GetPipelineDefinition. - */ - describePipelines(callback?: (err: AWSError, data: DataPipeline.Types.DescribePipelinesOutput) => void): Request; - /** - * Task runners call EvaluateExpression to evaluate a string in the context of the specified object. For example, a task runner can evaluate SQL queries stored in Amazon S3. - */ - evaluateExpression(params: DataPipeline.Types.EvaluateExpressionInput, callback?: (err: AWSError, data: DataPipeline.Types.EvaluateExpressionOutput) => void): Request; - /** - * Task runners call EvaluateExpression to evaluate a string in the context of the specified object. For example, a task runner can evaluate SQL queries stored in Amazon S3. - */ - evaluateExpression(callback?: (err: AWSError, data: DataPipeline.Types.EvaluateExpressionOutput) => void): Request; - /** - * Gets the definition of the specified pipeline. You can call GetPipelineDefinition to retrieve the pipeline definition that you provided using PutPipelineDefinition. - */ - getPipelineDefinition(params: DataPipeline.Types.GetPipelineDefinitionInput, callback?: (err: AWSError, data: DataPipeline.Types.GetPipelineDefinitionOutput) => void): Request; - /** - * Gets the definition of the specified pipeline. You can call GetPipelineDefinition to retrieve the pipeline definition that you provided using PutPipelineDefinition. - */ - getPipelineDefinition(callback?: (err: AWSError, data: DataPipeline.Types.GetPipelineDefinitionOutput) => void): Request; - /** - * Lists the pipeline identifiers for all active pipelines that you have permission to access. - */ - listPipelines(params: DataPipeline.Types.ListPipelinesInput, callback?: (err: AWSError, data: DataPipeline.Types.ListPipelinesOutput) => void): Request; - /** - * Lists the pipeline identifiers for all active pipelines that you have permission to access. - */ - listPipelines(callback?: (err: AWSError, data: DataPipeline.Types.ListPipelinesOutput) => void): Request; - /** - * Task runners call PollForTask to receive a task to perform from AWS Data Pipeline. The task runner specifies which tasks it can perform by setting a value for the workerGroup parameter. The task returned can come from any of the pipelines that match the workerGroup value passed in by the task runner and that was launched using the IAM user credentials specified by the task runner. If tasks are ready in the work queue, PollForTask returns a response immediately. If no tasks are available in the queue, PollForTask uses long-polling and holds on to a poll connection for up to a 90 seconds, during which time the first newly scheduled task is handed to the task runner. To accomodate this, set the socket timeout in your task runner to 90 seconds. The task runner should not call PollForTask again on the same workerGroup until it receives a response, and this can take up to 90 seconds. - */ - pollForTask(params: DataPipeline.Types.PollForTaskInput, callback?: (err: AWSError, data: DataPipeline.Types.PollForTaskOutput) => void): Request; - /** - * Task runners call PollForTask to receive a task to perform from AWS Data Pipeline. The task runner specifies which tasks it can perform by setting a value for the workerGroup parameter. The task returned can come from any of the pipelines that match the workerGroup value passed in by the task runner and that was launched using the IAM user credentials specified by the task runner. If tasks are ready in the work queue, PollForTask returns a response immediately. If no tasks are available in the queue, PollForTask uses long-polling and holds on to a poll connection for up to a 90 seconds, during which time the first newly scheduled task is handed to the task runner. To accomodate this, set the socket timeout in your task runner to 90 seconds. The task runner should not call PollForTask again on the same workerGroup until it receives a response, and this can take up to 90 seconds. - */ - pollForTask(callback?: (err: AWSError, data: DataPipeline.Types.PollForTaskOutput) => void): Request; - /** - * Adds tasks, schedules, and preconditions to the specified pipeline. You can use PutPipelineDefinition to populate a new pipeline. PutPipelineDefinition also validates the configuration as it adds it to the pipeline. Changes to the pipeline are saved unless one of the following three validation errors exists in the pipeline. An object is missing a name or identifier field. A string or reference field is empty. The number of objects in the pipeline exceeds the maximum allowed objects. The pipeline is in a FINISHED state. Pipeline object definitions are passed to the PutPipelineDefinition action and returned by the GetPipelineDefinition action. - */ - putPipelineDefinition(params: DataPipeline.Types.PutPipelineDefinitionInput, callback?: (err: AWSError, data: DataPipeline.Types.PutPipelineDefinitionOutput) => void): Request; - /** - * Adds tasks, schedules, and preconditions to the specified pipeline. You can use PutPipelineDefinition to populate a new pipeline. PutPipelineDefinition also validates the configuration as it adds it to the pipeline. Changes to the pipeline are saved unless one of the following three validation errors exists in the pipeline. An object is missing a name or identifier field. A string or reference field is empty. The number of objects in the pipeline exceeds the maximum allowed objects. The pipeline is in a FINISHED state. Pipeline object definitions are passed to the PutPipelineDefinition action and returned by the GetPipelineDefinition action. - */ - putPipelineDefinition(callback?: (err: AWSError, data: DataPipeline.Types.PutPipelineDefinitionOutput) => void): Request; - /** - * Queries the specified pipeline for the names of objects that match the specified set of conditions. - */ - queryObjects(params: DataPipeline.Types.QueryObjectsInput, callback?: (err: AWSError, data: DataPipeline.Types.QueryObjectsOutput) => void): Request; - /** - * Queries the specified pipeline for the names of objects that match the specified set of conditions. - */ - queryObjects(callback?: (err: AWSError, data: DataPipeline.Types.QueryObjectsOutput) => void): Request; - /** - * Removes existing tags from the specified pipeline. - */ - removeTags(params: DataPipeline.Types.RemoveTagsInput, callback?: (err: AWSError, data: DataPipeline.Types.RemoveTagsOutput) => void): Request; - /** - * Removes existing tags from the specified pipeline. - */ - removeTags(callback?: (err: AWSError, data: DataPipeline.Types.RemoveTagsOutput) => void): Request; - /** - * Task runners call ReportTaskProgress when assigned a task to acknowledge that it has the task. If the web service does not receive this acknowledgement within 2 minutes, it assigns the task in a subsequent PollForTask call. After this initial acknowledgement, the task runner only needs to report progress every 15 minutes to maintain its ownership of the task. You can change this reporting time from 15 minutes by specifying a reportProgressTimeout field in your pipeline. If a task runner does not report its status after 5 minutes, AWS Data Pipeline assumes that the task runner is unable to process the task and reassigns the task in a subsequent response to PollForTask. Task runners should call ReportTaskProgress every 60 seconds. - */ - reportTaskProgress(params: DataPipeline.Types.ReportTaskProgressInput, callback?: (err: AWSError, data: DataPipeline.Types.ReportTaskProgressOutput) => void): Request; - /** - * Task runners call ReportTaskProgress when assigned a task to acknowledge that it has the task. If the web service does not receive this acknowledgement within 2 minutes, it assigns the task in a subsequent PollForTask call. After this initial acknowledgement, the task runner only needs to report progress every 15 minutes to maintain its ownership of the task. You can change this reporting time from 15 minutes by specifying a reportProgressTimeout field in your pipeline. If a task runner does not report its status after 5 minutes, AWS Data Pipeline assumes that the task runner is unable to process the task and reassigns the task in a subsequent response to PollForTask. Task runners should call ReportTaskProgress every 60 seconds. - */ - reportTaskProgress(callback?: (err: AWSError, data: DataPipeline.Types.ReportTaskProgressOutput) => void): Request; - /** - * Task runners call ReportTaskRunnerHeartbeat every 15 minutes to indicate that they are operational. If the AWS Data Pipeline Task Runner is launched on a resource managed by AWS Data Pipeline, the web service can use this call to detect when the task runner application has failed and restart a new instance. - */ - reportTaskRunnerHeartbeat(params: DataPipeline.Types.ReportTaskRunnerHeartbeatInput, callback?: (err: AWSError, data: DataPipeline.Types.ReportTaskRunnerHeartbeatOutput) => void): Request; - /** - * Task runners call ReportTaskRunnerHeartbeat every 15 minutes to indicate that they are operational. If the AWS Data Pipeline Task Runner is launched on a resource managed by AWS Data Pipeline, the web service can use this call to detect when the task runner application has failed and restart a new instance. - */ - reportTaskRunnerHeartbeat(callback?: (err: AWSError, data: DataPipeline.Types.ReportTaskRunnerHeartbeatOutput) => void): Request; - /** - * Requests that the status of the specified physical or logical pipeline objects be updated in the specified pipeline. This update might not occur immediately, but is eventually consistent. The status that can be set depends on the type of object (for example, DataNode or Activity). You cannot perform this operation on FINISHED pipelines and attempting to do so returns InvalidRequestException. - */ - setStatus(params: DataPipeline.Types.SetStatusInput, callback?: (err: AWSError, data: {}) => void): Request<{}, AWSError>; - /** - * Requests that the status of the specified physical or logical pipeline objects be updated in the specified pipeline. This update might not occur immediately, but is eventually consistent. The status that can be set depends on the type of object (for example, DataNode or Activity). You cannot perform this operation on FINISHED pipelines and attempting to do so returns InvalidRequestException. - */ - setStatus(callback?: (err: AWSError, data: {}) => void): Request<{}, AWSError>; - /** - * Task runners call SetTaskStatus to notify AWS Data Pipeline that a task is completed and provide information about the final status. A task runner makes this call regardless of whether the task was sucessful. A task runner does not need to call SetTaskStatus for tasks that are canceled by the web service during a call to ReportTaskProgress. - */ - setTaskStatus(params: DataPipeline.Types.SetTaskStatusInput, callback?: (err: AWSError, data: DataPipeline.Types.SetTaskStatusOutput) => void): Request; - /** - * Task runners call SetTaskStatus to notify AWS Data Pipeline that a task is completed and provide information about the final status. A task runner makes this call regardless of whether the task was sucessful. A task runner does not need to call SetTaskStatus for tasks that are canceled by the web service during a call to ReportTaskProgress. - */ - setTaskStatus(callback?: (err: AWSError, data: DataPipeline.Types.SetTaskStatusOutput) => void): Request; - /** - * Validates the specified pipeline definition to ensure that it is well formed and can be run without error. - */ - validatePipelineDefinition(params: DataPipeline.Types.ValidatePipelineDefinitionInput, callback?: (err: AWSError, data: DataPipeline.Types.ValidatePipelineDefinitionOutput) => void): Request; - /** - * Validates the specified pipeline definition to ensure that it is well formed and can be run without error. - */ - validatePipelineDefinition(callback?: (err: AWSError, data: DataPipeline.Types.ValidatePipelineDefinitionOutput) => void): Request; -} -declare namespace DataPipeline { - export interface ActivatePipelineInput { - /** - * The ID of the pipeline. - */ - pipelineId: id; - /** - * A list of parameter values to pass to the pipeline at activation. - */ - parameterValues?: ParameterValueList; - /** - * The date and time to resume the pipeline. By default, the pipeline resumes from the last completed execution. - */ - startTimestamp?: timestamp; - } - export interface ActivatePipelineOutput { - } - export interface AddTagsInput { - /** - * The ID of the pipeline. - */ - pipelineId: id; - /** - * The tags to add, as key/value pairs. - */ - tags: tagList; - } - export interface AddTagsOutput { - } - export interface CreatePipelineInput { - /** - * The name for the pipeline. You can use the same name for multiple pipelines associated with your AWS account, because AWS Data Pipeline assigns each pipeline a unique pipeline identifier. - */ - name: id; - /** - * A unique identifier. This identifier is not the same as the pipeline identifier assigned by AWS Data Pipeline. You are responsible for defining the format and ensuring the uniqueness of this identifier. You use this parameter to ensure idempotency during repeated calls to CreatePipeline. For example, if the first call to CreatePipeline does not succeed, you can pass in the same unique identifier and pipeline name combination on a subsequent call to CreatePipeline. CreatePipeline ensures that if a pipeline already exists with the same name and unique identifier, a new pipeline is not created. Instead, you'll receive the pipeline identifier from the previous attempt. The uniqueness of the name and unique identifier combination is scoped to the AWS account or IAM user credentials. - */ - uniqueId: id; - /** - * The description for the pipeline. - */ - description?: string; - /** - * A list of tags to associate with the pipeline at creation. Tags let you control access to pipelines. For more information, see Controlling User Access to Pipelines in the AWS Data Pipeline Developer Guide. - */ - tags?: tagList; - } - export interface CreatePipelineOutput { - /** - * The ID that AWS Data Pipeline assigns the newly created pipeline. For example, df-06372391ZG65EXAMPLE. - */ - pipelineId: id; - } - export interface DeactivatePipelineInput { - /** - * The ID of the pipeline. - */ - pipelineId: id; - /** - * Indicates whether to cancel any running objects. The default is true, which sets the state of any running objects to CANCELED. If this value is false, the pipeline is deactivated after all running objects finish. - */ - cancelActive?: cancelActive; - } - export interface DeactivatePipelineOutput { - } - export interface DeletePipelineInput { - /** - * The ID of the pipeline. - */ - pipelineId: id; - } - export interface DescribeObjectsInput { - /** - * The ID of the pipeline that contains the object definitions. - */ - pipelineId: id; - /** - * The IDs of the pipeline objects that contain the definitions to be described. You can pass as many as 25 identifiers in a single call to DescribeObjects. - */ - objectIds: idList; - /** - * Indicates whether any expressions in the object should be evaluated when the object descriptions are returned. - */ - evaluateExpressions?: boolean; - /** - * The starting point for the results to be returned. For the first call, this value should be empty. As long as there are more results, continue to call DescribeObjects with the marker value from the previous call to retrieve the next set of results. - */ - marker?: string; - } - export interface DescribeObjectsOutput { - /** - * An array of object definitions. - */ - pipelineObjects: PipelineObjectList; - /** - * The starting point for the next page of results. To view the next page of results, call DescribeObjects again with this marker value. If the value is null, there are no more results. - */ - marker?: string; - /** - * Indicates whether there are more results to return. - */ - hasMoreResults?: boolean; - } - export interface DescribePipelinesInput { - /** - * The IDs of the pipelines to describe. You can pass as many as 25 identifiers in a single call. To obtain pipeline IDs, call ListPipelines. - */ - pipelineIds: idList; - } - export interface DescribePipelinesOutput { - /** - * An array of descriptions for the specified pipelines. - */ - pipelineDescriptionList: PipelineDescriptionList; - } - export interface EvaluateExpressionInput { - /** - * The ID of the pipeline. - */ - pipelineId: id; - /** - * The ID of the object. - */ - objectId: id; - /** - * The expression to evaluate. - */ - expression: longString; - } - export interface EvaluateExpressionOutput { - /** - * The evaluated expression. - */ - evaluatedExpression: longString; - } - export interface Field { - /** - * The field identifier. - */ - key: fieldNameString; - /** - * The field value, expressed as a String. - */ - stringValue?: fieldStringValue; - /** - * The field value, expressed as the identifier of another object. - */ - refValue?: fieldNameString; - } - export interface GetPipelineDefinitionInput { - /** - * The ID of the pipeline. - */ - pipelineId: id; - /** - * The version of the pipeline definition to retrieve. Set this parameter to latest (default) to use the last definition saved to the pipeline or active to use the last definition that was activated. - */ - version?: string; - } - export interface GetPipelineDefinitionOutput { - /** - * The objects defined in the pipeline. - */ - pipelineObjects?: PipelineObjectList; - /** - * The parameter objects used in the pipeline definition. - */ - parameterObjects?: ParameterObjectList; - /** - * The parameter values used in the pipeline definition. - */ - parameterValues?: ParameterValueList; - } - export interface InstanceIdentity { - /** - * A description of an EC2 instance that is generated when the instance is launched and exposed to the instance via the instance metadata service in the form of a JSON representation of an object. - */ - document?: string; - /** - * A signature which can be used to verify the accuracy and authenticity of the information provided in the instance identity document. - */ - signature?: string; - } - export interface ListPipelinesInput { - /** - * The starting point for the results to be returned. For the first call, this value should be empty. As long as there are more results, continue to call ListPipelines with the marker value from the previous call to retrieve the next set of results. - */ - marker?: string; - } - export interface ListPipelinesOutput { - /** - * The pipeline identifiers. If you require additional information about the pipelines, you can use these identifiers to call DescribePipelines and GetPipelineDefinition. - */ - pipelineIdList: pipelineList; - /** - * The starting point for the next page of results. To view the next page of results, call ListPipelinesOutput again with this marker value. If the value is null, there are no more results. - */ - marker?: string; - /** - * Indicates whether there are more results that can be obtained by a subsequent call. - */ - hasMoreResults?: boolean; - } - export interface Operator { - /** - * The logical operation to be performed: equal (EQ), equal reference (REF_EQ), less than or equal (LE), greater than or equal (GE), or between (BETWEEN). Equal reference (REF_EQ) can be used only with reference fields. The other comparison types can be used only with String fields. The comparison types you can use apply only to certain object fields, as detailed below. The comparison operators EQ and REF_EQ act on the following fields: name @sphere parent @componentParent @instanceParent @status @scheduledStartTime @scheduledEndTime @actualStartTime @actualEndTime The comparison operators GE, LE, and BETWEEN act on the following fields: @scheduledStartTime @scheduledEndTime @actualStartTime @actualEndTime Note that fields beginning with the at sign (@) are read-only and set by the web service. When you name fields, you should choose names containing only alpha-numeric values, as symbols may be reserved by AWS Data Pipeline. User-defined fields that you add to a pipeline should prefix their name with the string "my". - */ - type?: OperatorType; - /** - * The value that the actual field value will be compared with. - */ - values?: stringList; - } - export type OperatorType = "EQ"|"REF_EQ"|"LE"|"GE"|"BETWEEN"|string; - export interface ParameterAttribute { - /** - * The field identifier. - */ - key: attributeNameString; - /** - * The field value, expressed as a String. - */ - stringValue: attributeValueString; - } - export type ParameterAttributeList = ParameterAttribute[]; - export interface ParameterObject { - /** - * The ID of the parameter object. - */ - id: fieldNameString; - /** - * The attributes of the parameter object. - */ - attributes: ParameterAttributeList; - } - export type ParameterObjectList = ParameterObject[]; - export interface ParameterValue { - /** - * The ID of the parameter value. - */ - id: fieldNameString; - /** - * The field value, expressed as a String. - */ - stringValue: fieldStringValue; - } - export type ParameterValueList = ParameterValue[]; - export interface PipelineDescription { - /** - * The pipeline identifier that was assigned by AWS Data Pipeline. This is a string of the form df-297EG78HU43EEXAMPLE. - */ - pipelineId: id; - /** - * The name of the pipeline. - */ - name: id; - /** - * A list of read-only fields that contain metadata about the pipeline: @userId, @accountId, and @pipelineState. - */ - fields: fieldList; - /** - * Description of the pipeline. - */ - description?: string; - /** - * A list of tags to associated with a pipeline. Tags let you control access to pipelines. For more information, see Controlling User Access to Pipelines in the AWS Data Pipeline Developer Guide. - */ - tags?: tagList; - } - export type PipelineDescriptionList = PipelineDescription[]; - export interface PipelineIdName { - /** - * The ID of the pipeline that was assigned by AWS Data Pipeline. This is a string of the form df-297EG78HU43EEXAMPLE. - */ - id?: id; - /** - * The name of the pipeline. - */ - name?: id; - } - export interface PipelineObject { - /** - * The ID of the object. - */ - id: id; - /** - * The name of the object. - */ - name: id; - /** - * Key-value pairs that define the properties of the object. - */ - fields: fieldList; - } - export type PipelineObjectList = PipelineObject[]; - export type PipelineObjectMap = {[key: string]: PipelineObject}; - export interface PollForTaskInput { - /** - * The type of task the task runner is configured to accept and process. The worker group is set as a field on objects in the pipeline when they are created. You can only specify a single value for workerGroup in the call to PollForTask. There are no wildcard values permitted in workerGroup; the string must be an exact, case-sensitive, match. - */ - workerGroup: string; - /** - * The public DNS name of the calling task runner. - */ - hostname?: id; - /** - * Identity information for the EC2 instance that is hosting the task runner. You can get this value from the instance using http://169.254.169.254/latest/meta-data/instance-id. For more information, see Instance Metadata in the Amazon Elastic Compute Cloud User Guide. Passing in this value proves that your task runner is running on an EC2 instance, and ensures the proper AWS Data Pipeline service charges are applied to your pipeline. - */ - instanceIdentity?: InstanceIdentity; - } - export interface PollForTaskOutput { - /** - * The information needed to complete the task that is being assigned to the task runner. One of the fields returned in this object is taskId, which contains an identifier for the task being assigned. The calling task runner uses taskId in subsequent calls to ReportTaskProgress and SetTaskStatus. - */ - taskObject?: TaskObject; - } - export interface PutPipelineDefinitionInput { - /** - * The ID of the pipeline. - */ - pipelineId: id; - /** - * The objects that define the pipeline. These objects overwrite the existing pipeline definition. - */ - pipelineObjects: PipelineObjectList; - /** - * The parameter objects used with the pipeline. - */ - parameterObjects?: ParameterObjectList; - /** - * The parameter values used with the pipeline. - */ - parameterValues?: ParameterValueList; - } - export interface PutPipelineDefinitionOutput { - /** - * The validation errors that are associated with the objects defined in pipelineObjects. - */ - validationErrors?: ValidationErrors; - /** - * The validation warnings that are associated with the objects defined in pipelineObjects. - */ - validationWarnings?: ValidationWarnings; - /** - * Indicates whether there were validation errors, and the pipeline definition is stored but cannot be activated until you correct the pipeline and call PutPipelineDefinition to commit the corrected pipeline. - */ - errored: boolean; - } - export interface Query { - /** - * List of selectors that define the query. An object must satisfy all of the selectors to match the query. - */ - selectors?: SelectorList; - } - export interface QueryObjectsInput { - /** - * The ID of the pipeline. - */ - pipelineId: id; - /** - * The query that defines the objects to be returned. The Query object can contain a maximum of ten selectors. The conditions in the query are limited to top-level String fields in the object. These filters can be applied to components, instances, and attempts. - */ - query?: Query; - /** - * Indicates whether the query applies to components or instances. The possible values are: COMPONENT, INSTANCE, and ATTEMPT. - */ - sphere: string; - /** - * The starting point for the results to be returned. For the first call, this value should be empty. As long as there are more results, continue to call QueryObjects with the marker value from the previous call to retrieve the next set of results. - */ - marker?: string; - /** - * The maximum number of object names that QueryObjects will return in a single call. The default value is 100. - */ - limit?: int; - } - export interface QueryObjectsOutput { - /** - * The identifiers that match the query selectors. - */ - ids?: idList; - /** - * The starting point for the next page of results. To view the next page of results, call QueryObjects again with this marker value. If the value is null, there are no more results. - */ - marker?: string; - /** - * Indicates whether there are more results that can be obtained by a subsequent call. - */ - hasMoreResults?: boolean; - } - export interface RemoveTagsInput { - /** - * The ID of the pipeline. - */ - pipelineId: id; - /** - * The keys of the tags to remove. - */ - tagKeys: stringList; - } - export interface RemoveTagsOutput { - } - export interface ReportTaskProgressInput { - /** - * The ID of the task assigned to the task runner. This value is provided in the response for PollForTask. - */ - taskId: taskId; - /** - * Key-value pairs that define the properties of the ReportTaskProgressInput object. - */ - fields?: fieldList; - } - export interface ReportTaskProgressOutput { - /** - * If true, the calling task runner should cancel processing of the task. The task runner does not need to call SetTaskStatus for canceled tasks. - */ - canceled: boolean; - } - export interface ReportTaskRunnerHeartbeatInput { - /** - * The ID of the task runner. This value should be unique across your AWS account. In the case of AWS Data Pipeline Task Runner launched on a resource managed by AWS Data Pipeline, the web service provides a unique identifier when it launches the application. If you have written a custom task runner, you should assign a unique identifier for the task runner. - */ - taskrunnerId: id; - /** - * The type of task the task runner is configured to accept and process. The worker group is set as a field on objects in the pipeline when they are created. You can only specify a single value for workerGroup. There are no wildcard values permitted in workerGroup; the string must be an exact, case-sensitive, match. - */ - workerGroup?: string; - /** - * The public DNS name of the task runner. - */ - hostname?: id; - } - export interface ReportTaskRunnerHeartbeatOutput { - /** - * Indicates whether the calling task runner should terminate. - */ - terminate: boolean; - } - export interface Selector { - /** - * The name of the field that the operator will be applied to. The field name is the "key" portion of the field definition in the pipeline definition syntax that is used by the AWS Data Pipeline API. If the field is not set on the object, the condition fails. - */ - fieldName?: string; - operator?: Operator; - } - export type SelectorList = Selector[]; - export interface SetStatusInput { - /** - * The ID of the pipeline that contains the objects. - */ - pipelineId: id; - /** - * The IDs of the objects. The corresponding objects can be either physical or components, but not a mix of both types. - */ - objectIds: idList; - /** - * The status to be set on all the objects specified in objectIds. For components, use PAUSE or RESUME. For instances, use TRY_CANCEL, RERUN, or MARK_FINISHED. - */ - status: string; - } - export interface SetTaskStatusInput { - /** - * The ID of the task assigned to the task runner. This value is provided in the response for PollForTask. - */ - taskId: taskId; - /** - * If FINISHED, the task successfully completed. If FAILED, the task ended unsuccessfully. Preconditions use false. - */ - taskStatus: TaskStatus; - /** - * If an error occurred during the task, this value specifies the error code. This value is set on the physical attempt object. It is used to display error information to the user. It should not start with string "Service_" which is reserved by the system. - */ - errorId?: string; - /** - * If an error occurred during the task, this value specifies a text description of the error. This value is set on the physical attempt object. It is used to display error information to the user. The web service does not parse this value. - */ - errorMessage?: errorMessage; - /** - * If an error occurred during the task, this value specifies the stack trace associated with the error. This value is set on the physical attempt object. It is used to display error information to the user. The web service does not parse this value. - */ - errorStackTrace?: string; - } - export interface SetTaskStatusOutput { - } - export interface Tag { - /** - * The key name of a tag defined by a user. For more information, see Controlling User Access to Pipelines in the AWS Data Pipeline Developer Guide. - */ - key: tagKey; - /** - * The optional value portion of a tag defined by a user. For more information, see Controlling User Access to Pipelines in the AWS Data Pipeline Developer Guide. - */ - value: tagValue; - } - export interface TaskObject { - /** - * An internal identifier for the task. This ID is passed to the SetTaskStatus and ReportTaskProgress actions. - */ - taskId?: taskId; - /** - * The ID of the pipeline that provided the task. - */ - pipelineId?: id; - /** - * The ID of the pipeline task attempt object. AWS Data Pipeline uses this value to track how many times a task is attempted. - */ - attemptId?: id; - /** - * Connection information for the location where the task runner will publish the output of the task. - */ - objects?: PipelineObjectMap; - } - export type TaskStatus = "FINISHED"|"FAILED"|"FALSE"|string; - export interface ValidatePipelineDefinitionInput { - /** - * The ID of the pipeline. - */ - pipelineId: id; - /** - * The objects that define the pipeline changes to validate against the pipeline. - */ - pipelineObjects: PipelineObjectList; - /** - * The parameter objects used with the pipeline. - */ - parameterObjects?: ParameterObjectList; - /** - * The parameter values used with the pipeline. - */ - parameterValues?: ParameterValueList; - } - export interface ValidatePipelineDefinitionOutput { - /** - * Any validation errors that were found. - */ - validationErrors?: ValidationErrors; - /** - * Any validation warnings that were found. - */ - validationWarnings?: ValidationWarnings; - /** - * Indicates whether there were validation errors. - */ - errored: boolean; - } - export interface ValidationError { - /** - * The identifier of the object that contains the validation error. - */ - id?: id; - /** - * A description of the validation error. - */ - errors?: validationMessages; - } - export type ValidationErrors = ValidationError[]; - export interface ValidationWarning { - /** - * The identifier of the object that contains the validation warning. - */ - id?: id; - /** - * A description of the validation warning. - */ - warnings?: validationMessages; - } - export type ValidationWarnings = ValidationWarning[]; - export type attributeNameString = string; - export type attributeValueString = string; - export type cancelActive = boolean; - export type errorMessage = string; - export type fieldList = Field[]; - export type fieldNameString = string; - export type fieldStringValue = string; - export type id = string; - export type idList = id[]; - export type int = number; - export type longString = string; - export type pipelineList = PipelineIdName[]; - export type stringList = string[]; - export type tagKey = string; - export type tagList = Tag[]; - export type tagValue = string; - export type taskId = string; - export type timestamp = Date; - export type validationMessage = string; - export type validationMessages = validationMessage[]; - /** - * A string in YYYY-MM-DD format that represents the latest possible API version that can be used in this service. Specify 'latest' to use the latest possible version. - */ - export type apiVersion = "2012-10-29"|"latest"|string; - export interface ClientApiVersions { - /** - * A string in YYYY-MM-DD format that represents the latest possible API version that can be used in this service. Specify 'latest' to use the latest possible version. - */ - apiVersion?: apiVersion; - } - export type ClientConfiguration = ServiceConfigurationOptions & ClientApiVersions; - /** - * Contains interfaces for use with the DataPipeline client. - */ - export import Types = DataPipeline; -} -export = DataPipeline; diff --git a/workshops/monte-carlo-on-ec2-spot-fleet/src/web/node_modules/aws-sdk/clients/datapipeline.js b/workshops/monte-carlo-on-ec2-spot-fleet/src/web/node_modules/aws-sdk/clients/datapipeline.js deleted file mode 100644 index a55e1fa3..00000000 --- a/workshops/monte-carlo-on-ec2-spot-fleet/src/web/node_modules/aws-sdk/clients/datapipeline.js +++ /dev/null @@ -1,18 +0,0 @@ -require('../lib/node_loader'); -var AWS = require('../lib/core'); -var Service = AWS.Service; -var apiLoader = AWS.apiLoader; - -apiLoader.services['datapipeline'] = {}; -AWS.DataPipeline = Service.defineService('datapipeline', ['2012-10-29']); -Object.defineProperty(apiLoader.services['datapipeline'], '2012-10-29', { - get: function get() { - var model = require('../apis/datapipeline-2012-10-29.min.json'); - model.paginators = require('../apis/datapipeline-2012-10-29.paginators.json').pagination; - return model; - }, - enumerable: true, - configurable: true -}); - -module.exports = AWS.DataPipeline; diff --git a/workshops/monte-carlo-on-ec2-spot-fleet/src/web/node_modules/aws-sdk/clients/dax.d.ts b/workshops/monte-carlo-on-ec2-spot-fleet/src/web/node_modules/aws-sdk/clients/dax.d.ts deleted file mode 100644 index 284f6db7..00000000 --- a/workshops/monte-carlo-on-ec2-spot-fleet/src/web/node_modules/aws-sdk/clients/dax.d.ts +++ /dev/null @@ -1,964 +0,0 @@ -import {Request} from '../lib/request'; -import {Response} from '../lib/response'; -import {AWSError} from '../lib/error'; -import {Service} from '../lib/service'; -import {ServiceConfigurationOptions} from '../lib/service'; -import {ConfigBase as Config} from '../lib/config'; -interface Blob {} -declare class DAX extends Service { - /** - * Constructs a service object. This object has one method for each API operation. - */ - constructor(options?: DAX.Types.ClientConfiguration) - config: Config & DAX.Types.ClientConfiguration; - /** - * Creates a DAX cluster. All nodes in the cluster run the same DAX caching software. - */ - createCluster(params: DAX.Types.CreateClusterRequest, callback?: (err: AWSError, data: DAX.Types.CreateClusterResponse) => void): Request; - /** - * Creates a DAX cluster. All nodes in the cluster run the same DAX caching software. - */ - createCluster(callback?: (err: AWSError, data: DAX.Types.CreateClusterResponse) => void): Request; - /** - * Creates a new parameter group. A parameter group is a collection of parameters that you apply to all of the nodes in a DAX cluster. - */ - createParameterGroup(params: DAX.Types.CreateParameterGroupRequest, callback?: (err: AWSError, data: DAX.Types.CreateParameterGroupResponse) => void): Request; - /** - * Creates a new parameter group. A parameter group is a collection of parameters that you apply to all of the nodes in a DAX cluster. - */ - createParameterGroup(callback?: (err: AWSError, data: DAX.Types.CreateParameterGroupResponse) => void): Request; - /** - * Creates a new subnet group. - */ - createSubnetGroup(params: DAX.Types.CreateSubnetGroupRequest, callback?: (err: AWSError, data: DAX.Types.CreateSubnetGroupResponse) => void): Request; - /** - * Creates a new subnet group. - */ - createSubnetGroup(callback?: (err: AWSError, data: DAX.Types.CreateSubnetGroupResponse) => void): Request; - /** - * Removes one or more nodes from a DAX cluster. You cannot use DecreaseReplicationFactor to remove the last node in a DAX cluster. If you need to do this, use DeleteCluster instead. - */ - decreaseReplicationFactor(params: DAX.Types.DecreaseReplicationFactorRequest, callback?: (err: AWSError, data: DAX.Types.DecreaseReplicationFactorResponse) => void): Request; - /** - * Removes one or more nodes from a DAX cluster. You cannot use DecreaseReplicationFactor to remove the last node in a DAX cluster. If you need to do this, use DeleteCluster instead. - */ - decreaseReplicationFactor(callback?: (err: AWSError, data: DAX.Types.DecreaseReplicationFactorResponse) => void): Request; - /** - * Deletes a previously provisioned DAX cluster. DeleteCluster deletes all associated nodes, node endpoints and the DAX cluster itself. When you receive a successful response from this action, DAX immediately begins deleting the cluster; you cannot cancel or revert this action. - */ - deleteCluster(params: DAX.Types.DeleteClusterRequest, callback?: (err: AWSError, data: DAX.Types.DeleteClusterResponse) => void): Request; - /** - * Deletes a previously provisioned DAX cluster. DeleteCluster deletes all associated nodes, node endpoints and the DAX cluster itself. When you receive a successful response from this action, DAX immediately begins deleting the cluster; you cannot cancel or revert this action. - */ - deleteCluster(callback?: (err: AWSError, data: DAX.Types.DeleteClusterResponse) => void): Request; - /** - * Deletes the specified parameter group. You cannot delete a parameter group if it is associated with any DAX clusters. - */ - deleteParameterGroup(params: DAX.Types.DeleteParameterGroupRequest, callback?: (err: AWSError, data: DAX.Types.DeleteParameterGroupResponse) => void): Request; - /** - * Deletes the specified parameter group. You cannot delete a parameter group if it is associated with any DAX clusters. - */ - deleteParameterGroup(callback?: (err: AWSError, data: DAX.Types.DeleteParameterGroupResponse) => void): Request; - /** - * Deletes a subnet group. You cannot delete a subnet group if it is associated with any DAX clusters. - */ - deleteSubnetGroup(params: DAX.Types.DeleteSubnetGroupRequest, callback?: (err: AWSError, data: DAX.Types.DeleteSubnetGroupResponse) => void): Request; - /** - * Deletes a subnet group. You cannot delete a subnet group if it is associated with any DAX clusters. - */ - deleteSubnetGroup(callback?: (err: AWSError, data: DAX.Types.DeleteSubnetGroupResponse) => void): Request; - /** - * Returns information about all provisioned DAX clusters if no cluster identifier is specified, or about a specific DAX cluster if a cluster identifier is supplied. If the cluster is in the CREATING state, only cluster level information will be displayed until all of the nodes are successfully provisioned. If the cluster is in the DELETING state, only cluster level information will be displayed. If nodes are currently being added to the DAX cluster, node endpoint information and creation time for the additional nodes will not be displayed until they are completely provisioned. When the DAX cluster state is available, the cluster is ready for use. If nodes are currently being removed from the DAX cluster, no endpoint information for the removed nodes is displayed. - */ - describeClusters(params: DAX.Types.DescribeClustersRequest, callback?: (err: AWSError, data: DAX.Types.DescribeClustersResponse) => void): Request; - /** - * Returns information about all provisioned DAX clusters if no cluster identifier is specified, or about a specific DAX cluster if a cluster identifier is supplied. If the cluster is in the CREATING state, only cluster level information will be displayed until all of the nodes are successfully provisioned. If the cluster is in the DELETING state, only cluster level information will be displayed. If nodes are currently being added to the DAX cluster, node endpoint information and creation time for the additional nodes will not be displayed until they are completely provisioned. When the DAX cluster state is available, the cluster is ready for use. If nodes are currently being removed from the DAX cluster, no endpoint information for the removed nodes is displayed. - */ - describeClusters(callback?: (err: AWSError, data: DAX.Types.DescribeClustersResponse) => void): Request; - /** - * Returns the default system parameter information for the DAX caching software. - */ - describeDefaultParameters(params: DAX.Types.DescribeDefaultParametersRequest, callback?: (err: AWSError, data: DAX.Types.DescribeDefaultParametersResponse) => void): Request; - /** - * Returns the default system parameter information for the DAX caching software. - */ - describeDefaultParameters(callback?: (err: AWSError, data: DAX.Types.DescribeDefaultParametersResponse) => void): Request; - /** - * Returns events related to DAX clusters and parameter groups. You can obtain events specific to a particular DAX cluster or parameter group by providing the name as a parameter. By default, only the events occurring within the last hour are returned; however, you can retrieve up to 14 days' worth of events if necessary. - */ - describeEvents(params: DAX.Types.DescribeEventsRequest, callback?: (err: AWSError, data: DAX.Types.DescribeEventsResponse) => void): Request; - /** - * Returns events related to DAX clusters and parameter groups. You can obtain events specific to a particular DAX cluster or parameter group by providing the name as a parameter. By default, only the events occurring within the last hour are returned; however, you can retrieve up to 14 days' worth of events if necessary. - */ - describeEvents(callback?: (err: AWSError, data: DAX.Types.DescribeEventsResponse) => void): Request; - /** - * Returns a list of parameter group descriptions. If a parameter group name is specified, the list will contain only the descriptions for that group. - */ - describeParameterGroups(params: DAX.Types.DescribeParameterGroupsRequest, callback?: (err: AWSError, data: DAX.Types.DescribeParameterGroupsResponse) => void): Request; - /** - * Returns a list of parameter group descriptions. If a parameter group name is specified, the list will contain only the descriptions for that group. - */ - describeParameterGroups(callback?: (err: AWSError, data: DAX.Types.DescribeParameterGroupsResponse) => void): Request; - /** - * Returns the detailed parameter list for a particular parameter group. - */ - describeParameters(params: DAX.Types.DescribeParametersRequest, callback?: (err: AWSError, data: DAX.Types.DescribeParametersResponse) => void): Request; - /** - * Returns the detailed parameter list for a particular parameter group. - */ - describeParameters(callback?: (err: AWSError, data: DAX.Types.DescribeParametersResponse) => void): Request; - /** - * Returns a list of subnet group descriptions. If a subnet group name is specified, the list will contain only the description of that group. - */ - describeSubnetGroups(params: DAX.Types.DescribeSubnetGroupsRequest, callback?: (err: AWSError, data: DAX.Types.DescribeSubnetGroupsResponse) => void): Request; - /** - * Returns a list of subnet group descriptions. If a subnet group name is specified, the list will contain only the description of that group. - */ - describeSubnetGroups(callback?: (err: AWSError, data: DAX.Types.DescribeSubnetGroupsResponse) => void): Request; - /** - * Adds one or more nodes to a DAX cluster. - */ - increaseReplicationFactor(params: DAX.Types.IncreaseReplicationFactorRequest, callback?: (err: AWSError, data: DAX.Types.IncreaseReplicationFactorResponse) => void): Request; - /** - * Adds one or more nodes to a DAX cluster. - */ - increaseReplicationFactor(callback?: (err: AWSError, data: DAX.Types.IncreaseReplicationFactorResponse) => void): Request; - /** - * List all of the tags for a DAX cluster. You can call ListTags up to 10 times per second, per account. - */ - listTags(params: DAX.Types.ListTagsRequest, callback?: (err: AWSError, data: DAX.Types.ListTagsResponse) => void): Request; - /** - * List all of the tags for a DAX cluster. You can call ListTags up to 10 times per second, per account. - */ - listTags(callback?: (err: AWSError, data: DAX.Types.ListTagsResponse) => void): Request; - /** - * Reboots a single node of a DAX cluster. The reboot action takes place as soon as possible. During the reboot, the node status is set to REBOOTING. - */ - rebootNode(params: DAX.Types.RebootNodeRequest, callback?: (err: AWSError, data: DAX.Types.RebootNodeResponse) => void): Request; - /** - * Reboots a single node of a DAX cluster. The reboot action takes place as soon as possible. During the reboot, the node status is set to REBOOTING. - */ - rebootNode(callback?: (err: AWSError, data: DAX.Types.RebootNodeResponse) => void): Request; - /** - * Associates a set of tags with a DAX resource. You can call TagResource up to 5 times per second, per account. - */ - tagResource(params: DAX.Types.TagResourceRequest, callback?: (err: AWSError, data: DAX.Types.TagResourceResponse) => void): Request; - /** - * Associates a set of tags with a DAX resource. You can call TagResource up to 5 times per second, per account. - */ - tagResource(callback?: (err: AWSError, data: DAX.Types.TagResourceResponse) => void): Request; - /** - * Removes the association of tags from a DAX resource. You can call UntagResource up to 5 times per second, per account. - */ - untagResource(params: DAX.Types.UntagResourceRequest, callback?: (err: AWSError, data: DAX.Types.UntagResourceResponse) => void): Request; - /** - * Removes the association of tags from a DAX resource. You can call UntagResource up to 5 times per second, per account. - */ - untagResource(callback?: (err: AWSError, data: DAX.Types.UntagResourceResponse) => void): Request; - /** - * Modifies the settings for a DAX cluster. You can use this action to change one or more cluster configuration parameters by specifying the parameters and the new values. - */ - updateCluster(params: DAX.Types.UpdateClusterRequest, callback?: (err: AWSError, data: DAX.Types.UpdateClusterResponse) => void): Request; - /** - * Modifies the settings for a DAX cluster. You can use this action to change one or more cluster configuration parameters by specifying the parameters and the new values. - */ - updateCluster(callback?: (err: AWSError, data: DAX.Types.UpdateClusterResponse) => void): Request; - /** - * Modifies the parameters of a parameter group. You can modify up to 20 parameters in a single request by submitting a list parameter name and value pairs. - */ - updateParameterGroup(params: DAX.Types.UpdateParameterGroupRequest, callback?: (err: AWSError, data: DAX.Types.UpdateParameterGroupResponse) => void): Request; - /** - * Modifies the parameters of a parameter group. You can modify up to 20 parameters in a single request by submitting a list parameter name and value pairs. - */ - updateParameterGroup(callback?: (err: AWSError, data: DAX.Types.UpdateParameterGroupResponse) => void): Request; - /** - * Modifies an existing subnet group. - */ - updateSubnetGroup(params: DAX.Types.UpdateSubnetGroupRequest, callback?: (err: AWSError, data: DAX.Types.UpdateSubnetGroupResponse) => void): Request; - /** - * Modifies an existing subnet group. - */ - updateSubnetGroup(callback?: (err: AWSError, data: DAX.Types.UpdateSubnetGroupResponse) => void): Request; -} -declare namespace DAX { - export type AvailabilityZoneList = String[]; - export type AwsQueryErrorMessage = string; - export type ChangeType = "IMMEDIATE"|"REQUIRES_REBOOT"|string; - export interface Cluster { - /** - * The name of the DAX cluster. - */ - ClusterName?: String; - /** - * The description of the cluster. - */ - Description?: String; - /** - * The Amazon Resource Name (ARN) that uniquely identifies the cluster. - */ - ClusterArn?: String; - /** - * The total number of nodes in the cluster. - */ - TotalNodes?: IntegerOptional; - /** - * The number of nodes in the cluster that are active (i.e., capable of serving requests). - */ - ActiveNodes?: IntegerOptional; - /** - * The node type for the nodes in the cluster. (All nodes in a DAX cluster are of the same type.) - */ - NodeType?: String; - /** - * The current status of the cluster. - */ - Status?: String; - /** - * The configuration endpoint for this DAX cluster, consisting of a DNS name and a port number. Client applications can specify this endpoint, rather than an individual node endpoint, and allow the DAX client software to intelligently route requests and responses to nodes in the DAX cluster. - */ - ClusterDiscoveryEndpoint?: Endpoint; - /** - * A list of nodes to be removed from the cluster. - */ - NodeIdsToRemove?: NodeIdentifierList; - /** - * A list of nodes that are currently in the cluster. - */ - Nodes?: NodeList; - /** - * A range of time when maintenance of DAX cluster software will be performed. For example: sun:01:00-sun:09:00. Cluster maintenance normally takes less than 30 minutes, and is performed automatically within the maintenance window. - */ - PreferredMaintenanceWindow?: String; - /** - * Describes a notification topic and its status. Notification topics are used for publishing DAX events to subscribers using Amazon Simple Notification Service (SNS). - */ - NotificationConfiguration?: NotificationConfiguration; - /** - * The subnet group where the DAX cluster is running. - */ - SubnetGroup?: String; - /** - * A list of security groups, and the status of each, for the nodes in the cluster. - */ - SecurityGroups?: SecurityGroupMembershipList; - /** - * A valid Amazon Resource Name (ARN) that identifies an IAM role. At runtime, DAX will assume this role and use the role's permissions to access DynamoDB on your behalf. - */ - IamRoleArn?: String; - /** - * The parameter group being used by nodes in the cluster. - */ - ParameterGroup?: ParameterGroupStatus; - } - export type ClusterList = Cluster[]; - export type ClusterNameList = String[]; - export interface CreateClusterRequest { - /** - * The cluster identifier. This parameter is stored as a lowercase string. Constraints: A name must contain from 1 to 20 alphanumeric characters or hyphens. The first character must be a letter. A name cannot end with a hyphen or contain two consecutive hyphens. - */ - ClusterName: String; - /** - * The compute and memory capacity of the nodes in the cluster. - */ - NodeType: String; - /** - * A description of the cluster. - */ - Description?: String; - /** - * The number of nodes in the DAX cluster. A replication factor of 1 will create a single-node cluster, without any read replicas. For additional fault tolerance, you can create a multiple node cluster with one or more read replicas. To do this, set ReplicationFactor to 2 or more. AWS recommends that you have at least two read replicas per cluster. - */ - ReplicationFactor: Integer; - /** - * The Availability Zones (AZs) in which the cluster nodes will be created. All nodes belonging to the cluster are placed in these Availability Zones. Use this parameter if you want to distribute the nodes across multiple AZs. - */ - AvailabilityZones?: AvailabilityZoneList; - /** - * The name of the subnet group to be used for the replication group. DAX clusters can only run in an Amazon VPC environment. All of the subnets that you specify in a subnet group must exist in the same VPC. - */ - SubnetGroupName?: String; - /** - * A list of security group IDs to be assigned to each node in the DAX cluster. (Each of the security group ID is system-generated.) If this parameter is not specified, DAX assigns the default VPC security group to each node. - */ - SecurityGroupIds?: SecurityGroupIdentifierList; - /** - * Specifies the weekly time range during which maintenance on the DAX cluster is performed. It is specified as a range in the format ddd:hh24:mi-ddd:hh24:mi (24H Clock UTC). The minimum maintenance window is a 60 minute period. Valid values for ddd are: sun mon tue wed thu fri sat Example: sun:05:00-sun:09:00 If you don't specify a preferred maintenance window when you create or modify a cache cluster, DAX assigns a 60-minute maintenance window on a randomly selected day of the week. - */ - PreferredMaintenanceWindow?: String; - /** - * The Amazon Resource Name (ARN) of the Amazon SNS topic to which notifications will be sent. The Amazon SNS topic owner must be same as the DAX cluster owner. - */ - NotificationTopicArn?: String; - /** - * A valid Amazon Resource Name (ARN) that identifies an IAM role. At runtime, DAX will assume this role and use the role's permissions to access DynamoDB on your behalf. - */ - IamRoleArn: String; - /** - * The parameter group to be associated with the DAX cluster. - */ - ParameterGroupName?: String; - /** - * A set of tags to associate with the DAX cluster. - */ - Tags?: TagList; - } - export interface CreateClusterResponse { - /** - * A description of the DAX cluster that you have created. - */ - Cluster?: Cluster; - } - export interface CreateParameterGroupRequest { - /** - * The name of the parameter group to apply to all of the clusters in this replication group. - */ - ParameterGroupName: String; - /** - * A description of the parameter group. - */ - Description?: String; - } - export interface CreateParameterGroupResponse { - /** - * Represents the output of a CreateParameterGroup action. - */ - ParameterGroup?: ParameterGroup; - } - export interface CreateSubnetGroupRequest { - /** - * A name for the subnet group. This value is stored as a lowercase string. - */ - SubnetGroupName: String; - /** - * A description for the subnet group - */ - Description?: String; - /** - * A list of VPC subnet IDs for the subnet group. - */ - SubnetIds: SubnetIdentifierList; - } - export interface CreateSubnetGroupResponse { - /** - * Represents the output of a CreateSubnetGroup operation. - */ - SubnetGroup?: SubnetGroup; - } - export interface DecreaseReplicationFactorRequest { - /** - * The name of the DAX cluster from which you want to remove nodes. - */ - ClusterName: String; - /** - * The new number of nodes for the DAX cluster. - */ - NewReplicationFactor: Integer; - /** - * The Availability Zone(s) from which to remove nodes. - */ - AvailabilityZones?: AvailabilityZoneList; - /** - * The unique identifiers of the nodes to be removed from the cluster. - */ - NodeIdsToRemove?: NodeIdentifierList; - } - export interface DecreaseReplicationFactorResponse { - /** - * A description of the DAX cluster, after you have decreased its replication factor. - */ - Cluster?: Cluster; - } - export interface DeleteClusterRequest { - /** - * The name of the cluster to be deleted. - */ - ClusterName: String; - } - export interface DeleteClusterResponse { - /** - * A description of the DAX cluster that is being deleted. - */ - Cluster?: Cluster; - } - export interface DeleteParameterGroupRequest { - /** - * The name of the parameter group to delete. - */ - ParameterGroupName: String; - } - export interface DeleteParameterGroupResponse { - /** - * A user-specified message for this action (i.e., a reason for deleting the parameter group). - */ - DeletionMessage?: String; - } - export interface DeleteSubnetGroupRequest { - /** - * The name of the subnet group to delete. - */ - SubnetGroupName: String; - } - export interface DeleteSubnetGroupResponse { - /** - * A user-specified message for this action (i.e., a reason for deleting the subnet group). - */ - DeletionMessage?: String; - } - export interface DescribeClustersRequest { - /** - * The names of the DAX clusters being described. - */ - ClusterNames?: ClusterNameList; - /** - * The maximum number of results to include in the response. If more results exist than the specified MaxResults value, a token is included in the response so that the remaining results can be retrieved. The value for MaxResults must be between 20 and 100. - */ - MaxResults?: IntegerOptional; - /** - * An optional token returned from a prior request. Use this token for pagination of results from this action. If this parameter is specified, the response includes only results beyond the token, up to the value specified by MaxResults. - */ - NextToken?: String; - } - export interface DescribeClustersResponse { - /** - * Provides an identifier to allow retrieval of paginated results. - */ - NextToken?: String; - /** - * The descriptions of your DAX clusters, in response to a DescribeClusters request. - */ - Clusters?: ClusterList; - } - export interface DescribeDefaultParametersRequest { - /** - * The maximum number of results to include in the response. If more results exist than the specified MaxResults value, a token is included in the response so that the remaining results can be retrieved. The value for MaxResults must be between 20 and 100. - */ - MaxResults?: IntegerOptional; - /** - * An optional token returned from a prior request. Use this token for pagination of results from this action. If this parameter is specified, the response includes only results beyond the token, up to the value specified by MaxResults. - */ - NextToken?: String; - } - export interface DescribeDefaultParametersResponse { - /** - * Provides an identifier to allow retrieval of paginated results. - */ - NextToken?: String; - /** - * A list of parameters. Each element in the list represents one parameter. - */ - Parameters?: ParameterList; - } - export interface DescribeEventsRequest { - /** - * The identifier of the event source for which events will be returned. If not specified, then all sources are included in the response. - */ - SourceName?: String; - /** - * The event source to retrieve events for. If no value is specified, all events are returned. - */ - SourceType?: SourceType; - /** - * The beginning of the time interval to retrieve events for, specified in ISO 8601 format. - */ - StartTime?: TStamp; - /** - * The end of the time interval for which to retrieve events, specified in ISO 8601 format. - */ - EndTime?: TStamp; - /** - * The number of minutes' worth of events to retrieve. - */ - Duration?: IntegerOptional; - /** - * The maximum number of results to include in the response. If more results exist than the specified MaxResults value, a token is included in the response so that the remaining results can be retrieved. The value for MaxResults must be between 20 and 100. - */ - MaxResults?: IntegerOptional; - /** - * An optional token returned from a prior request. Use this token for pagination of results from this action. If this parameter is specified, the response includes only results beyond the token, up to the value specified by MaxResults. - */ - NextToken?: String; - } - export interface DescribeEventsResponse { - /** - * Provides an identifier to allow retrieval of paginated results. - */ - NextToken?: String; - /** - * An array of events. Each element in the array represents one event. - */ - Events?: EventList; - } - export interface DescribeParameterGroupsRequest { - /** - * The names of the parameter groups. - */ - ParameterGroupNames?: ParameterGroupNameList; - /** - * The maximum number of results to include in the response. If more results exist than the specified MaxResults value, a token is included in the response so that the remaining results can be retrieved. The value for MaxResults must be between 20 and 100. - */ - MaxResults?: IntegerOptional; - /** - * An optional token returned from a prior request. Use this token for pagination of results from this action. If this parameter is specified, the response includes only results beyond the token, up to the value specified by MaxResults. - */ - NextToken?: String; - } - export interface DescribeParameterGroupsResponse { - /** - * Provides an identifier to allow retrieval of paginated results. - */ - NextToken?: String; - /** - * An array of parameter groups. Each element in the array represents one parameter group. - */ - ParameterGroups?: ParameterGroupList; - } - export interface DescribeParametersRequest { - /** - * The name of the parameter group. - */ - ParameterGroupName: String; - /** - * How the parameter is defined. For example, system denotes a system-defined parameter. - */ - Source?: String; - /** - * The maximum number of results to include in the response. If more results exist than the specified MaxResults value, a token is included in the response so that the remaining results can be retrieved. The value for MaxResults must be between 20 and 100. - */ - MaxResults?: IntegerOptional; - /** - * An optional token returned from a prior request. Use this token for pagination of results from this action. If this parameter is specified, the response includes only results beyond the token, up to the value specified by MaxResults. - */ - NextToken?: String; - } - export interface DescribeParametersResponse { - /** - * Provides an identifier to allow retrieval of paginated results. - */ - NextToken?: String; - /** - * A list of parameters within a parameter group. Each element in the list represents one parameter. - */ - Parameters?: ParameterList; - } - export interface DescribeSubnetGroupsRequest { - /** - * The name of the subnet group. - */ - SubnetGroupNames?: SubnetGroupNameList; - /** - * The maximum number of results to include in the response. If more results exist than the specified MaxResults value, a token is included in the response so that the remaining results can be retrieved. The value for MaxResults must be between 20 and 100. - */ - MaxResults?: IntegerOptional; - /** - * An optional token returned from a prior request. Use this token for pagination of results from this action. If this parameter is specified, the response includes only results beyond the token, up to the value specified by MaxResults. - */ - NextToken?: String; - } - export interface DescribeSubnetGroupsResponse { - /** - * Provides an identifier to allow retrieval of paginated results. - */ - NextToken?: String; - /** - * An array of subnet groups. Each element in the array represents a single subnet group. - */ - SubnetGroups?: SubnetGroupList; - } - export interface Endpoint { - /** - * The DNS hostname of the endpoint. - */ - Address?: String; - /** - * The port number that applications should use to connect to the endpoint. - */ - Port?: Integer; - } - export interface Event { - /** - * The source of the event. For example, if the event occurred at the node level, the source would be the node ID. - */ - SourceName?: String; - /** - * Specifies the origin of this event - a cluster, a parameter group, a node ID, etc. - */ - SourceType?: SourceType; - /** - * A user-defined message associated with the event. - */ - Message?: String; - /** - * The date and time when the event occurred. - */ - Date?: TStamp; - } - export type EventList = Event[]; - export interface IncreaseReplicationFactorRequest { - /** - * The name of the DAX cluster that will receive additional nodes. - */ - ClusterName: String; - /** - * The new number of nodes for the DAX cluster. - */ - NewReplicationFactor: Integer; - /** - * The Availability Zones (AZs) in which the cluster nodes will be created. All nodes belonging to the cluster are placed in these Availability Zones. Use this parameter if you want to distribute the nodes across multiple AZs. - */ - AvailabilityZones?: AvailabilityZoneList; - } - export interface IncreaseReplicationFactorResponse { - /** - * A description of the DAX cluster. with its new replication factor. - */ - Cluster?: Cluster; - } - export type Integer = number; - export type IntegerOptional = number; - export type IsModifiable = "TRUE"|"FALSE"|"CONDITIONAL"|string; - export type KeyList = String[]; - export interface ListTagsRequest { - /** - * The name of the DAX resource to which the tags belong. - */ - ResourceName: String; - /** - * An optional token returned from a prior request. Use this token for pagination of results from this action. If this parameter is specified, the response includes only results beyond the token. - */ - NextToken?: String; - } - export interface ListTagsResponse { - /** - * A list of tags currently associated with the DAX cluster. - */ - Tags?: TagList; - /** - * If this value is present, there are additional results to be displayed. To retrieve them, call ListTags again, with NextToken set to this value. - */ - NextToken?: String; - } - export interface Node { - /** - * A system-generated identifier for the node. - */ - NodeId?: String; - /** - * The endpoint for the node, consisting of a DNS name and a port number. Client applications can connect directly to a node endpoint, if desired (as an alternative to allowing DAX client software to intelligently route requests and responses to nodes in the DAX cluster. - */ - Endpoint?: Endpoint; - /** - * The date and time (in UNIX epoch format) when the node was launched. - */ - NodeCreateTime?: TStamp; - /** - * The Availability Zone (AZ) in which the node has been deployed. - */ - AvailabilityZone?: String; - /** - * The current status of the node. For example: available. - */ - NodeStatus?: String; - /** - * The status of the parameter group associated with this node. For example, in-sync. - */ - ParameterGroupStatus?: String; - } - export type NodeIdentifierList = String[]; - export type NodeList = Node[]; - export interface NodeTypeSpecificValue { - /** - * A node type to which the parameter value applies. - */ - NodeType?: String; - /** - * The parameter value for this node type. - */ - Value?: String; - } - export type NodeTypeSpecificValueList = NodeTypeSpecificValue[]; - export interface NotificationConfiguration { - /** - * The Amazon Resource Name (ARN) that identifies the topic. - */ - TopicArn?: String; - /** - * The current state of the topic. - */ - TopicStatus?: String; - } - export interface Parameter { - /** - * The name of the parameter. - */ - ParameterName?: String; - /** - * Determines whether the parameter can be applied to any nodes, or only nodes of a particular type. - */ - ParameterType?: ParameterType; - /** - * The value for the parameter. - */ - ParameterValue?: String; - /** - * A list of node types, and specific parameter values for each node. - */ - NodeTypeSpecificValues?: NodeTypeSpecificValueList; - /** - * A description of the parameter - */ - Description?: String; - /** - * How the parameter is defined. For example, system denotes a system-defined parameter. - */ - Source?: String; - /** - * The data type of the parameter. For example, integer: - */ - DataType?: String; - /** - * A range of values within which the parameter can be set. - */ - AllowedValues?: String; - /** - * Whether the customer is allowed to modify the parameter. - */ - IsModifiable?: IsModifiable; - /** - * The conditions under which changes to this parameter can be applied. For example, requires-reboot indicates that a new value for this parameter will only take effect if a node is rebooted. - */ - ChangeType?: ChangeType; - } - export interface ParameterGroup { - /** - * The name of the parameter group. - */ - ParameterGroupName?: String; - /** - * A description of the parameter group. - */ - Description?: String; - } - export type ParameterGroupList = ParameterGroup[]; - export type ParameterGroupNameList = String[]; - export interface ParameterGroupStatus { - /** - * The name of the parameter group. - */ - ParameterGroupName?: String; - /** - * The status of parameter updates. - */ - ParameterApplyStatus?: String; - /** - * The node IDs of one or more nodes to be rebooted. - */ - NodeIdsToReboot?: NodeIdentifierList; - } - export type ParameterList = Parameter[]; - export interface ParameterNameValue { - /** - * The name of the parameter. - */ - ParameterName?: String; - /** - * The value of the parameter. - */ - ParameterValue?: String; - } - export type ParameterNameValueList = ParameterNameValue[]; - export type ParameterType = "DEFAULT"|"NODE_TYPE_SPECIFIC"|string; - export interface RebootNodeRequest { - /** - * The name of the DAX cluster containing the node to be rebooted. - */ - ClusterName: String; - /** - * The system-assigned ID of the node to be rebooted. - */ - NodeId: String; - } - export interface RebootNodeResponse { - /** - * A description of the DAX cluster after a node has been rebooted. - */ - Cluster?: Cluster; - } - export type SecurityGroupIdentifierList = String[]; - export interface SecurityGroupMembership { - /** - * The unique ID for this security group. - */ - SecurityGroupIdentifier?: String; - /** - * The status of this security group. - */ - Status?: String; - } - export type SecurityGroupMembershipList = SecurityGroupMembership[]; - export type SourceType = "CLUSTER"|"PARAMETER_GROUP"|"SUBNET_GROUP"|string; - export type String = string; - export interface Subnet { - /** - * The system-assigned identifier for the subnet. - */ - SubnetIdentifier?: String; - /** - * The Availability Zone (AZ) for subnet subnet. - */ - SubnetAvailabilityZone?: String; - } - export interface SubnetGroup { - /** - * The name of the subnet group. - */ - SubnetGroupName?: String; - /** - * The description of the subnet group. - */ - Description?: String; - /** - * The Amazon Virtual Private Cloud identifier (VPC ID) of the subnet group. - */ - VpcId?: String; - /** - * A list of subnets associated with the subnet group. - */ - Subnets?: SubnetList; - } - export type SubnetGroupList = SubnetGroup[]; - export type SubnetGroupNameList = String[]; - export type SubnetIdentifierList = String[]; - export type SubnetList = Subnet[]; - export type TStamp = Date; - export interface Tag { - /** - * The key for the tag. Tag keys are case sensitive. Every DAX cluster can only have one tag with the same key. If you try to add an existing tag (same key), the existing tag value will be updated to the new value. - */ - Key?: String; - /** - * The value of the tag. Tag values are case-sensitive and can be null. - */ - Value?: String; - } - export type TagList = Tag[]; - export interface TagResourceRequest { - /** - * The name of the DAX resource to which tags should be added. - */ - ResourceName: String; - /** - * The tags to be assigned to the DAX resource. - */ - Tags: TagList; - } - export interface TagResourceResponse { - /** - * The list of tags that are associated with the DAX resource. - */ - Tags?: TagList; - } - export interface UntagResourceRequest { - /** - * The name of the DAX resource from which the tags should be removed. - */ - ResourceName: String; - /** - * A list of tag keys. If the DAX cluster has any tags with these keys, then the tags are removed from the cluster. - */ - TagKeys: KeyList; - } - export interface UntagResourceResponse { - /** - * The tag keys that have been removed from the cluster. - */ - Tags?: TagList; - } - export interface UpdateClusterRequest { - /** - * The name of the DAX cluster to be modified. - */ - ClusterName: String; - /** - * A description of the changes being made to the cluster. - */ - Description?: String; - /** - * A range of time when maintenance of DAX cluster software will be performed. For example: sun:01:00-sun:09:00. Cluster maintenance normally takes less than 30 minutes, and is performed automatically within the maintenance window. - */ - PreferredMaintenanceWindow?: String; - /** - * The Amazon Resource Name (ARN) that identifies the topic. - */ - NotificationTopicArn?: String; - /** - * The current state of the topic. - */ - NotificationTopicStatus?: String; - /** - * The name of a parameter group for this cluster. - */ - ParameterGroupName?: String; - /** - * A list of user-specified security group IDs to be assigned to each node in the DAX cluster. If this parameter is not specified, DAX assigns the default VPC security group to each node. - */ - SecurityGroupIds?: SecurityGroupIdentifierList; - } - export interface UpdateClusterResponse { - /** - * A description of the DAX cluster, after it has been modified. - */ - Cluster?: Cluster; - } - export interface UpdateParameterGroupRequest { - /** - * The name of the parameter group. - */ - ParameterGroupName: String; - /** - * An array of name-value pairs for the parameters in the group. Each element in the array represents a single parameter. - */ - ParameterNameValues: ParameterNameValueList; - } - export interface UpdateParameterGroupResponse { - /** - * The parameter group that has been modified. - */ - ParameterGroup?: ParameterGroup; - } - export interface UpdateSubnetGroupRequest { - /** - * The name of the subnet group. - */ - SubnetGroupName: String; - /** - * A description of the subnet group. - */ - Description?: String; - /** - * A list of subnet IDs in the subnet group. - */ - SubnetIds?: SubnetIdentifierList; - } - export interface UpdateSubnetGroupResponse { - /** - * The subnet group that has been modified. - */ - SubnetGroup?: SubnetGroup; - } - /** - * A string in YYYY-MM-DD format that represents the latest possible API version that can be used in this service. Specify 'latest' to use the latest possible version. - */ - export type apiVersion = "2017-04-19"|"latest"|string; - export interface ClientApiVersions { - /** - * A string in YYYY-MM-DD format that represents the latest possible API version that can be used in this service. Specify 'latest' to use the latest possible version. - */ - apiVersion?: apiVersion; - } - export type ClientConfiguration = ServiceConfigurationOptions & ClientApiVersions; - /** - * Contains interfaces for use with the DAX client. - */ - export import Types = DAX; -} -export = DAX; diff --git a/workshops/monte-carlo-on-ec2-spot-fleet/src/web/node_modules/aws-sdk/clients/dax.js b/workshops/monte-carlo-on-ec2-spot-fleet/src/web/node_modules/aws-sdk/clients/dax.js deleted file mode 100644 index 4984caa5..00000000 --- a/workshops/monte-carlo-on-ec2-spot-fleet/src/web/node_modules/aws-sdk/clients/dax.js +++ /dev/null @@ -1,18 +0,0 @@ -require('../lib/node_loader'); -var AWS = require('../lib/core'); -var Service = AWS.Service; -var apiLoader = AWS.apiLoader; - -apiLoader.services['dax'] = {}; -AWS.DAX = Service.defineService('dax', ['2017-04-19']); -Object.defineProperty(apiLoader.services['dax'], '2017-04-19', { - get: function get() { - var model = require('../apis/dax-2017-04-19.min.json'); - model.paginators = require('../apis/dax-2017-04-19.paginators.json').pagination; - return model; - }, - enumerable: true, - configurable: true -}); - -module.exports = AWS.DAX; diff --git a/workshops/monte-carlo-on-ec2-spot-fleet/src/web/node_modules/aws-sdk/clients/devicefarm.d.ts b/workshops/monte-carlo-on-ec2-spot-fleet/src/web/node_modules/aws-sdk/clients/devicefarm.d.ts deleted file mode 100644 index edfbf044..00000000 --- a/workshops/monte-carlo-on-ec2-spot-fleet/src/web/node_modules/aws-sdk/clients/devicefarm.d.ts +++ /dev/null @@ -1,2337 +0,0 @@ -import {Request} from '../lib/request'; -import {Response} from '../lib/response'; -import {AWSError} from '../lib/error'; -import {Service} from '../lib/service'; -import {ServiceConfigurationOptions} from '../lib/service'; -import {ConfigBase as Config} from '../lib/config'; -interface Blob {} -declare class DeviceFarm extends Service { - /** - * Constructs a service object. This object has one method for each API operation. - */ - constructor(options?: DeviceFarm.Types.ClientConfiguration) - config: Config & DeviceFarm.Types.ClientConfiguration; - /** - * Creates a device pool. - */ - createDevicePool(params: DeviceFarm.Types.CreateDevicePoolRequest, callback?: (err: AWSError, data: DeviceFarm.Types.CreateDevicePoolResult) => void): Request; - /** - * Creates a device pool. - */ - createDevicePool(callback?: (err: AWSError, data: DeviceFarm.Types.CreateDevicePoolResult) => void): Request; - /** - * Creates a network profile. - */ - createNetworkProfile(params: DeviceFarm.Types.CreateNetworkProfileRequest, callback?: (err: AWSError, data: DeviceFarm.Types.CreateNetworkProfileResult) => void): Request; - /** - * Creates a network profile. - */ - createNetworkProfile(callback?: (err: AWSError, data: DeviceFarm.Types.CreateNetworkProfileResult) => void): Request; - /** - * Creates a new project. - */ - createProject(params: DeviceFarm.Types.CreateProjectRequest, callback?: (err: AWSError, data: DeviceFarm.Types.CreateProjectResult) => void): Request; - /** - * Creates a new project. - */ - createProject(callback?: (err: AWSError, data: DeviceFarm.Types.CreateProjectResult) => void): Request; - /** - * Specifies and starts a remote access session. - */ - createRemoteAccessSession(params: DeviceFarm.Types.CreateRemoteAccessSessionRequest, callback?: (err: AWSError, data: DeviceFarm.Types.CreateRemoteAccessSessionResult) => void): Request; - /** - * Specifies and starts a remote access session. - */ - createRemoteAccessSession(callback?: (err: AWSError, data: DeviceFarm.Types.CreateRemoteAccessSessionResult) => void): Request; - /** - * Uploads an app or test scripts. - */ - createUpload(params: DeviceFarm.Types.CreateUploadRequest, callback?: (err: AWSError, data: DeviceFarm.Types.CreateUploadResult) => void): Request; - /** - * Uploads an app or test scripts. - */ - createUpload(callback?: (err: AWSError, data: DeviceFarm.Types.CreateUploadResult) => void): Request; - /** - * Deletes a device pool given the pool ARN. Does not allow deletion of curated pools owned by the system. - */ - deleteDevicePool(params: DeviceFarm.Types.DeleteDevicePoolRequest, callback?: (err: AWSError, data: DeviceFarm.Types.DeleteDevicePoolResult) => void): Request; - /** - * Deletes a device pool given the pool ARN. Does not allow deletion of curated pools owned by the system. - */ - deleteDevicePool(callback?: (err: AWSError, data: DeviceFarm.Types.DeleteDevicePoolResult) => void): Request; - /** - * Deletes a network profile. - */ - deleteNetworkProfile(params: DeviceFarm.Types.DeleteNetworkProfileRequest, callback?: (err: AWSError, data: DeviceFarm.Types.DeleteNetworkProfileResult) => void): Request; - /** - * Deletes a network profile. - */ - deleteNetworkProfile(callback?: (err: AWSError, data: DeviceFarm.Types.DeleteNetworkProfileResult) => void): Request; - /** - * Deletes an AWS Device Farm project, given the project ARN. Note Deleting this resource does not stop an in-progress run. - */ - deleteProject(params: DeviceFarm.Types.DeleteProjectRequest, callback?: (err: AWSError, data: DeviceFarm.Types.DeleteProjectResult) => void): Request; - /** - * Deletes an AWS Device Farm project, given the project ARN. Note Deleting this resource does not stop an in-progress run. - */ - deleteProject(callback?: (err: AWSError, data: DeviceFarm.Types.DeleteProjectResult) => void): Request; - /** - * Deletes a completed remote access session and its results. - */ - deleteRemoteAccessSession(params: DeviceFarm.Types.DeleteRemoteAccessSessionRequest, callback?: (err: AWSError, data: DeviceFarm.Types.DeleteRemoteAccessSessionResult) => void): Request; - /** - * Deletes a completed remote access session and its results. - */ - deleteRemoteAccessSession(callback?: (err: AWSError, data: DeviceFarm.Types.DeleteRemoteAccessSessionResult) => void): Request; - /** - * Deletes the run, given the run ARN. Note Deleting this resource does not stop an in-progress run. - */ - deleteRun(params: DeviceFarm.Types.DeleteRunRequest, callback?: (err: AWSError, data: DeviceFarm.Types.DeleteRunResult) => void): Request; - /** - * Deletes the run, given the run ARN. Note Deleting this resource does not stop an in-progress run. - */ - deleteRun(callback?: (err: AWSError, data: DeviceFarm.Types.DeleteRunResult) => void): Request; - /** - * Deletes an upload given the upload ARN. - */ - deleteUpload(params: DeviceFarm.Types.DeleteUploadRequest, callback?: (err: AWSError, data: DeviceFarm.Types.DeleteUploadResult) => void): Request; - /** - * Deletes an upload given the upload ARN. - */ - deleteUpload(callback?: (err: AWSError, data: DeviceFarm.Types.DeleteUploadResult) => void): Request; - /** - * Returns the number of unmetered iOS and/or unmetered Android devices that have been purchased by the account. - */ - getAccountSettings(params: DeviceFarm.Types.GetAccountSettingsRequest, callback?: (err: AWSError, data: DeviceFarm.Types.GetAccountSettingsResult) => void): Request; - /** - * Returns the number of unmetered iOS and/or unmetered Android devices that have been purchased by the account. - */ - getAccountSettings(callback?: (err: AWSError, data: DeviceFarm.Types.GetAccountSettingsResult) => void): Request; - /** - * Gets information about a unique device type. - */ - getDevice(params: DeviceFarm.Types.GetDeviceRequest, callback?: (err: AWSError, data: DeviceFarm.Types.GetDeviceResult) => void): Request; - /** - * Gets information about a unique device type. - */ - getDevice(callback?: (err: AWSError, data: DeviceFarm.Types.GetDeviceResult) => void): Request; - /** - * Gets information about a device pool. - */ - getDevicePool(params: DeviceFarm.Types.GetDevicePoolRequest, callback?: (err: AWSError, data: DeviceFarm.Types.GetDevicePoolResult) => void): Request; - /** - * Gets information about a device pool. - */ - getDevicePool(callback?: (err: AWSError, data: DeviceFarm.Types.GetDevicePoolResult) => void): Request; - /** - * Gets information about compatibility with a device pool. - */ - getDevicePoolCompatibility(params: DeviceFarm.Types.GetDevicePoolCompatibilityRequest, callback?: (err: AWSError, data: DeviceFarm.Types.GetDevicePoolCompatibilityResult) => void): Request; - /** - * Gets information about compatibility with a device pool. - */ - getDevicePoolCompatibility(callback?: (err: AWSError, data: DeviceFarm.Types.GetDevicePoolCompatibilityResult) => void): Request; - /** - * Gets information about a job. - */ - getJob(params: DeviceFarm.Types.GetJobRequest, callback?: (err: AWSError, data: DeviceFarm.Types.GetJobResult) => void): Request; - /** - * Gets information about a job. - */ - getJob(callback?: (err: AWSError, data: DeviceFarm.Types.GetJobResult) => void): Request; - /** - * Returns information about a network profile. - */ - getNetworkProfile(params: DeviceFarm.Types.GetNetworkProfileRequest, callback?: (err: AWSError, data: DeviceFarm.Types.GetNetworkProfileResult) => void): Request; - /** - * Returns information about a network profile. - */ - getNetworkProfile(callback?: (err: AWSError, data: DeviceFarm.Types.GetNetworkProfileResult) => void): Request; - /** - * Gets the current status and future status of all offerings purchased by an AWS account. The response indicates how many offerings are currently available and the offerings that will be available in the next period. The API returns a NotEligible error if the user is not permitted to invoke the operation. Please contact aws-devicefarm-support@amazon.com if you believe that you should be able to invoke this operation. - */ - getOfferingStatus(params: DeviceFarm.Types.GetOfferingStatusRequest, callback?: (err: AWSError, data: DeviceFarm.Types.GetOfferingStatusResult) => void): Request; - /** - * Gets the current status and future status of all offerings purchased by an AWS account. The response indicates how many offerings are currently available and the offerings that will be available in the next period. The API returns a NotEligible error if the user is not permitted to invoke the operation. Please contact aws-devicefarm-support@amazon.com if you believe that you should be able to invoke this operation. - */ - getOfferingStatus(callback?: (err: AWSError, data: DeviceFarm.Types.GetOfferingStatusResult) => void): Request; - /** - * Gets information about a project. - */ - getProject(params: DeviceFarm.Types.GetProjectRequest, callback?: (err: AWSError, data: DeviceFarm.Types.GetProjectResult) => void): Request; - /** - * Gets information about a project. - */ - getProject(callback?: (err: AWSError, data: DeviceFarm.Types.GetProjectResult) => void): Request; - /** - * Returns a link to a currently running remote access session. - */ - getRemoteAccessSession(params: DeviceFarm.Types.GetRemoteAccessSessionRequest, callback?: (err: AWSError, data: DeviceFarm.Types.GetRemoteAccessSessionResult) => void): Request; - /** - * Returns a link to a currently running remote access session. - */ - getRemoteAccessSession(callback?: (err: AWSError, data: DeviceFarm.Types.GetRemoteAccessSessionResult) => void): Request; - /** - * Gets information about a run. - */ - getRun(params: DeviceFarm.Types.GetRunRequest, callback?: (err: AWSError, data: DeviceFarm.Types.GetRunResult) => void): Request; - /** - * Gets information about a run. - */ - getRun(callback?: (err: AWSError, data: DeviceFarm.Types.GetRunResult) => void): Request; - /** - * Gets information about a suite. - */ - getSuite(params: DeviceFarm.Types.GetSuiteRequest, callback?: (err: AWSError, data: DeviceFarm.Types.GetSuiteResult) => void): Request; - /** - * Gets information about a suite. - */ - getSuite(callback?: (err: AWSError, data: DeviceFarm.Types.GetSuiteResult) => void): Request; - /** - * Gets information about a test. - */ - getTest(params: DeviceFarm.Types.GetTestRequest, callback?: (err: AWSError, data: DeviceFarm.Types.GetTestResult) => void): Request; - /** - * Gets information about a test. - */ - getTest(callback?: (err: AWSError, data: DeviceFarm.Types.GetTestResult) => void): Request; - /** - * Gets information about an upload. - */ - getUpload(params: DeviceFarm.Types.GetUploadRequest, callback?: (err: AWSError, data: DeviceFarm.Types.GetUploadResult) => void): Request; - /** - * Gets information about an upload. - */ - getUpload(callback?: (err: AWSError, data: DeviceFarm.Types.GetUploadResult) => void): Request; - /** - * Installs an application to the device in a remote access session. For Android applications, the file must be in .apk format. For iOS applications, the file must be in .ipa format. - */ - installToRemoteAccessSession(params: DeviceFarm.Types.InstallToRemoteAccessSessionRequest, callback?: (err: AWSError, data: DeviceFarm.Types.InstallToRemoteAccessSessionResult) => void): Request; - /** - * Installs an application to the device in a remote access session. For Android applications, the file must be in .apk format. For iOS applications, the file must be in .ipa format. - */ - installToRemoteAccessSession(callback?: (err: AWSError, data: DeviceFarm.Types.InstallToRemoteAccessSessionResult) => void): Request; - /** - * Gets information about artifacts. - */ - listArtifacts(params: DeviceFarm.Types.ListArtifactsRequest, callback?: (err: AWSError, data: DeviceFarm.Types.ListArtifactsResult) => void): Request; - /** - * Gets information about artifacts. - */ - listArtifacts(callback?: (err: AWSError, data: DeviceFarm.Types.ListArtifactsResult) => void): Request; - /** - * Gets information about device pools. - */ - listDevicePools(params: DeviceFarm.Types.ListDevicePoolsRequest, callback?: (err: AWSError, data: DeviceFarm.Types.ListDevicePoolsResult) => void): Request; - /** - * Gets information about device pools. - */ - listDevicePools(callback?: (err: AWSError, data: DeviceFarm.Types.ListDevicePoolsResult) => void): Request; - /** - * Gets information about unique device types. - */ - listDevices(params: DeviceFarm.Types.ListDevicesRequest, callback?: (err: AWSError, data: DeviceFarm.Types.ListDevicesResult) => void): Request; - /** - * Gets information about unique device types. - */ - listDevices(callback?: (err: AWSError, data: DeviceFarm.Types.ListDevicesResult) => void): Request; - /** - * Gets information about jobs. - */ - listJobs(params: DeviceFarm.Types.ListJobsRequest, callback?: (err: AWSError, data: DeviceFarm.Types.ListJobsResult) => void): Request; - /** - * Gets information about jobs. - */ - listJobs(callback?: (err: AWSError, data: DeviceFarm.Types.ListJobsResult) => void): Request; - /** - * Returns the list of available network profiles. - */ - listNetworkProfiles(params: DeviceFarm.Types.ListNetworkProfilesRequest, callback?: (err: AWSError, data: DeviceFarm.Types.ListNetworkProfilesResult) => void): Request; - /** - * Returns the list of available network profiles. - */ - listNetworkProfiles(callback?: (err: AWSError, data: DeviceFarm.Types.ListNetworkProfilesResult) => void): Request; - /** - * Returns a list of offering promotions. Each offering promotion record contains the ID and description of the promotion. The API returns a NotEligible error if the caller is not permitted to invoke the operation. Contact aws-devicefarm-support@amazon.com if you believe that you should be able to invoke this operation. - */ - listOfferingPromotions(params: DeviceFarm.Types.ListOfferingPromotionsRequest, callback?: (err: AWSError, data: DeviceFarm.Types.ListOfferingPromotionsResult) => void): Request; - /** - * Returns a list of offering promotions. Each offering promotion record contains the ID and description of the promotion. The API returns a NotEligible error if the caller is not permitted to invoke the operation. Contact aws-devicefarm-support@amazon.com if you believe that you should be able to invoke this operation. - */ - listOfferingPromotions(callback?: (err: AWSError, data: DeviceFarm.Types.ListOfferingPromotionsResult) => void): Request; - /** - * Returns a list of all historical purchases, renewals, and system renewal transactions for an AWS account. The list is paginated and ordered by a descending timestamp (most recent transactions are first). The API returns a NotEligible error if the user is not permitted to invoke the operation. Please contact aws-devicefarm-support@amazon.com if you believe that you should be able to invoke this operation. - */ - listOfferingTransactions(params: DeviceFarm.Types.ListOfferingTransactionsRequest, callback?: (err: AWSError, data: DeviceFarm.Types.ListOfferingTransactionsResult) => void): Request; - /** - * Returns a list of all historical purchases, renewals, and system renewal transactions for an AWS account. The list is paginated and ordered by a descending timestamp (most recent transactions are first). The API returns a NotEligible error if the user is not permitted to invoke the operation. Please contact aws-devicefarm-support@amazon.com if you believe that you should be able to invoke this operation. - */ - listOfferingTransactions(callback?: (err: AWSError, data: DeviceFarm.Types.ListOfferingTransactionsResult) => void): Request; - /** - * Returns a list of products or offerings that the user can manage through the API. Each offering record indicates the recurring price per unit and the frequency for that offering. The API returns a NotEligible error if the user is not permitted to invoke the operation. Please contact aws-devicefarm-support@amazon.com if you believe that you should be able to invoke this operation. - */ - listOfferings(params: DeviceFarm.Types.ListOfferingsRequest, callback?: (err: AWSError, data: DeviceFarm.Types.ListOfferingsResult) => void): Request; - /** - * Returns a list of products or offerings that the user can manage through the API. Each offering record indicates the recurring price per unit and the frequency for that offering. The API returns a NotEligible error if the user is not permitted to invoke the operation. Please contact aws-devicefarm-support@amazon.com if you believe that you should be able to invoke this operation. - */ - listOfferings(callback?: (err: AWSError, data: DeviceFarm.Types.ListOfferingsResult) => void): Request; - /** - * Gets information about projects. - */ - listProjects(params: DeviceFarm.Types.ListProjectsRequest, callback?: (err: AWSError, data: DeviceFarm.Types.ListProjectsResult) => void): Request; - /** - * Gets information about projects. - */ - listProjects(callback?: (err: AWSError, data: DeviceFarm.Types.ListProjectsResult) => void): Request; - /** - * Returns a list of all currently running remote access sessions. - */ - listRemoteAccessSessions(params: DeviceFarm.Types.ListRemoteAccessSessionsRequest, callback?: (err: AWSError, data: DeviceFarm.Types.ListRemoteAccessSessionsResult) => void): Request; - /** - * Returns a list of all currently running remote access sessions. - */ - listRemoteAccessSessions(callback?: (err: AWSError, data: DeviceFarm.Types.ListRemoteAccessSessionsResult) => void): Request; - /** - * Gets information about runs, given an AWS Device Farm project ARN. - */ - listRuns(params: DeviceFarm.Types.ListRunsRequest, callback?: (err: AWSError, data: DeviceFarm.Types.ListRunsResult) => void): Request; - /** - * Gets information about runs, given an AWS Device Farm project ARN. - */ - listRuns(callback?: (err: AWSError, data: DeviceFarm.Types.ListRunsResult) => void): Request; - /** - * Gets information about samples, given an AWS Device Farm project ARN - */ - listSamples(params: DeviceFarm.Types.ListSamplesRequest, callback?: (err: AWSError, data: DeviceFarm.Types.ListSamplesResult) => void): Request; - /** - * Gets information about samples, given an AWS Device Farm project ARN - */ - listSamples(callback?: (err: AWSError, data: DeviceFarm.Types.ListSamplesResult) => void): Request; - /** - * Gets information about suites. - */ - listSuites(params: DeviceFarm.Types.ListSuitesRequest, callback?: (err: AWSError, data: DeviceFarm.Types.ListSuitesResult) => void): Request; - /** - * Gets information about suites. - */ - listSuites(callback?: (err: AWSError, data: DeviceFarm.Types.ListSuitesResult) => void): Request; - /** - * Gets information about tests. - */ - listTests(params: DeviceFarm.Types.ListTestsRequest, callback?: (err: AWSError, data: DeviceFarm.Types.ListTestsResult) => void): Request; - /** - * Gets information about tests. - */ - listTests(callback?: (err: AWSError, data: DeviceFarm.Types.ListTestsResult) => void): Request; - /** - * Gets information about unique problems. - */ - listUniqueProblems(params: DeviceFarm.Types.ListUniqueProblemsRequest, callback?: (err: AWSError, data: DeviceFarm.Types.ListUniqueProblemsResult) => void): Request; - /** - * Gets information about unique problems. - */ - listUniqueProblems(callback?: (err: AWSError, data: DeviceFarm.Types.ListUniqueProblemsResult) => void): Request; - /** - * Gets information about uploads, given an AWS Device Farm project ARN. - */ - listUploads(params: DeviceFarm.Types.ListUploadsRequest, callback?: (err: AWSError, data: DeviceFarm.Types.ListUploadsResult) => void): Request; - /** - * Gets information about uploads, given an AWS Device Farm project ARN. - */ - listUploads(callback?: (err: AWSError, data: DeviceFarm.Types.ListUploadsResult) => void): Request; - /** - * Immediately purchases offerings for an AWS account. Offerings renew with the latest total purchased quantity for an offering, unless the renewal was overridden. The API returns a NotEligible error if the user is not permitted to invoke the operation. Please contact aws-devicefarm-support@amazon.com if you believe that you should be able to invoke this operation. - */ - purchaseOffering(params: DeviceFarm.Types.PurchaseOfferingRequest, callback?: (err: AWSError, data: DeviceFarm.Types.PurchaseOfferingResult) => void): Request; - /** - * Immediately purchases offerings for an AWS account. Offerings renew with the latest total purchased quantity for an offering, unless the renewal was overridden. The API returns a NotEligible error if the user is not permitted to invoke the operation. Please contact aws-devicefarm-support@amazon.com if you believe that you should be able to invoke this operation. - */ - purchaseOffering(callback?: (err: AWSError, data: DeviceFarm.Types.PurchaseOfferingResult) => void): Request; - /** - * Explicitly sets the quantity of devices to renew for an offering, starting from the effectiveDate of the next period. The API returns a NotEligible error if the user is not permitted to invoke the operation. Please contact aws-devicefarm-support@amazon.com if you believe that you should be able to invoke this operation. - */ - renewOffering(params: DeviceFarm.Types.RenewOfferingRequest, callback?: (err: AWSError, data: DeviceFarm.Types.RenewOfferingResult) => void): Request; - /** - * Explicitly sets the quantity of devices to renew for an offering, starting from the effectiveDate of the next period. The API returns a NotEligible error if the user is not permitted to invoke the operation. Please contact aws-devicefarm-support@amazon.com if you believe that you should be able to invoke this operation. - */ - renewOffering(callback?: (err: AWSError, data: DeviceFarm.Types.RenewOfferingResult) => void): Request; - /** - * Schedules a run. - */ - scheduleRun(params: DeviceFarm.Types.ScheduleRunRequest, callback?: (err: AWSError, data: DeviceFarm.Types.ScheduleRunResult) => void): Request; - /** - * Schedules a run. - */ - scheduleRun(callback?: (err: AWSError, data: DeviceFarm.Types.ScheduleRunResult) => void): Request; - /** - * Ends a specified remote access session. - */ - stopRemoteAccessSession(params: DeviceFarm.Types.StopRemoteAccessSessionRequest, callback?: (err: AWSError, data: DeviceFarm.Types.StopRemoteAccessSessionResult) => void): Request; - /** - * Ends a specified remote access session. - */ - stopRemoteAccessSession(callback?: (err: AWSError, data: DeviceFarm.Types.StopRemoteAccessSessionResult) => void): Request; - /** - * Initiates a stop request for the current test run. AWS Device Farm will immediately stop the run on devices where tests have not started executing, and you will not be billed for these devices. On devices where tests have started executing, Setup Suite and Teardown Suite tests will run to completion before stopping execution on those devices. You will be billed for Setup, Teardown, and any tests that were in progress or already completed. - */ - stopRun(params: DeviceFarm.Types.StopRunRequest, callback?: (err: AWSError, data: DeviceFarm.Types.StopRunResult) => void): Request; - /** - * Initiates a stop request for the current test run. AWS Device Farm will immediately stop the run on devices where tests have not started executing, and you will not be billed for these devices. On devices where tests have started executing, Setup Suite and Teardown Suite tests will run to completion before stopping execution on those devices. You will be billed for Setup, Teardown, and any tests that were in progress or already completed. - */ - stopRun(callback?: (err: AWSError, data: DeviceFarm.Types.StopRunResult) => void): Request; - /** - * Modifies the name, description, and rules in a device pool given the attributes and the pool ARN. Rule updates are all-or-nothing, meaning they can only be updated as a whole (or not at all). - */ - updateDevicePool(params: DeviceFarm.Types.UpdateDevicePoolRequest, callback?: (err: AWSError, data: DeviceFarm.Types.UpdateDevicePoolResult) => void): Request; - /** - * Modifies the name, description, and rules in a device pool given the attributes and the pool ARN. Rule updates are all-or-nothing, meaning they can only be updated as a whole (or not at all). - */ - updateDevicePool(callback?: (err: AWSError, data: DeviceFarm.Types.UpdateDevicePoolResult) => void): Request; - /** - * Updates the network profile with specific settings. - */ - updateNetworkProfile(params: DeviceFarm.Types.UpdateNetworkProfileRequest, callback?: (err: AWSError, data: DeviceFarm.Types.UpdateNetworkProfileResult) => void): Request; - /** - * Updates the network profile with specific settings. - */ - updateNetworkProfile(callback?: (err: AWSError, data: DeviceFarm.Types.UpdateNetworkProfileResult) => void): Request; - /** - * Modifies the specified project name, given the project ARN and a new name. - */ - updateProject(params: DeviceFarm.Types.UpdateProjectRequest, callback?: (err: AWSError, data: DeviceFarm.Types.UpdateProjectResult) => void): Request; - /** - * Modifies the specified project name, given the project ARN and a new name. - */ - updateProject(callback?: (err: AWSError, data: DeviceFarm.Types.UpdateProjectResult) => void): Request; -} -declare namespace DeviceFarm { - export type AWSAccountNumber = string; - export interface AccountSettings { - /** - * The AWS account number specified in the AccountSettings container. - */ - awsAccountNumber?: AWSAccountNumber; - /** - * Returns the unmetered devices you have purchased or want to purchase. - */ - unmeteredDevices?: PurchasedDevicesMap; - /** - * Returns the unmetered remote access devices you have purchased or want to purchase. - */ - unmeteredRemoteAccessDevices?: PurchasedDevicesMap; - /** - * The maximum number of minutes a test run will execute before it times out. - */ - maxJobTimeoutMinutes?: JobTimeoutMinutes; - /** - * Information about an AWS account's usage of free trial device minutes. - */ - trialMinutes?: TrialMinutes; - /** - * The maximum number of device slots that the AWS account can purchase. Each maximum is expressed as an offering-id:number pair, where the offering-id represents one of the IDs returned by the ListOfferings command. - */ - maxSlots?: MaxSlotMap; - /** - * The default number of minutes (at the account level) a test run will execute before it times out. Default value is 60 minutes. - */ - defaultJobTimeoutMinutes?: JobTimeoutMinutes; - } - export type AccountsCleanup = boolean; - export type AmazonResourceName = string; - export type AmazonResourceNames = AmazonResourceName[]; - export type AndroidPaths = String[]; - export type AppPackagesCleanup = boolean; - export interface Artifact { - /** - * The artifact's ARN. - */ - arn?: AmazonResourceName; - /** - * The artifact's name. - */ - name?: Name; - /** - * The artifact's type. Allowed values include the following: UNKNOWN: An unknown type. SCREENSHOT: The screenshot type. DEVICE_LOG: The device log type. MESSAGE_LOG: The message log type. RESULT_LOG: The result log type. SERVICE_LOG: The service log type. WEBKIT_LOG: The web kit log type. INSTRUMENTATION_OUTPUT: The instrumentation type. EXERCISER_MONKEY_OUTPUT: For Android, the artifact (log) generated by an Android fuzz test. CALABASH_JSON_OUTPUT: The Calabash JSON output type. CALABASH_PRETTY_OUTPUT: The Calabash pretty output type. CALABASH_STANDARD_OUTPUT: The Calabash standard output type. CALABASH_JAVA_XML_OUTPUT: The Calabash Java XML output type. AUTOMATION_OUTPUT: The automation output type. APPIUM_SERVER_OUTPUT: The Appium server output type. APPIUM_JAVA_OUTPUT: The Appium Java output type. APPIUM_JAVA_XML_OUTPUT: The Appium Java XML output type. APPIUM_PYTHON_OUTPUT: The Appium Python output type. APPIUM_PYTHON_XML_OUTPUT: The Appium Python XML output type. EXPLORER_EVENT_LOG: The Explorer event log output type. EXPLORER_SUMMARY_LOG: The Explorer summary log output type. APPLICATION_CRASH_REPORT: The application crash report output type. XCTEST_LOG: The XCode test output type. - */ - type?: ArtifactType; - /** - * The artifact's file extension. - */ - extension?: String; - /** - * The pre-signed Amazon S3 URL that can be used with a corresponding GET request to download the artifact's file. - */ - url?: URL; - } - export type ArtifactCategory = "SCREENSHOT"|"FILE"|"LOG"|string; - export type ArtifactType = "UNKNOWN"|"SCREENSHOT"|"DEVICE_LOG"|"MESSAGE_LOG"|"VIDEO_LOG"|"RESULT_LOG"|"SERVICE_LOG"|"WEBKIT_LOG"|"INSTRUMENTATION_OUTPUT"|"EXERCISER_MONKEY_OUTPUT"|"CALABASH_JSON_OUTPUT"|"CALABASH_PRETTY_OUTPUT"|"CALABASH_STANDARD_OUTPUT"|"CALABASH_JAVA_XML_OUTPUT"|"AUTOMATION_OUTPUT"|"APPIUM_SERVER_OUTPUT"|"APPIUM_JAVA_OUTPUT"|"APPIUM_JAVA_XML_OUTPUT"|"APPIUM_PYTHON_OUTPUT"|"APPIUM_PYTHON_XML_OUTPUT"|"EXPLORER_EVENT_LOG"|"EXPLORER_SUMMARY_LOG"|"APPLICATION_CRASH_REPORT"|"XCTEST_LOG"|"VIDEO"|"CUSTOMER_ARTIFACT"|"CUSTOMER_ARTIFACT_LOG"|string; - export type Artifacts = Artifact[]; - export type BillingMethod = "METERED"|"UNMETERED"|string; - export type Boolean = boolean; - export interface CPU { - /** - * The CPU's frequency. - */ - frequency?: String; - /** - * The CPU's architecture, for example x86 or ARM. - */ - architecture?: String; - /** - * The clock speed of the device's CPU, expressed in hertz (Hz). For example, a 1.2 GHz CPU is expressed as 1200000000. - */ - clock?: Double; - } - export type ClientId = string; - export type ContentType = string; - export interface Counters { - /** - * The total number of entities. - */ - total?: Integer; - /** - * The number of passed entities. - */ - passed?: Integer; - /** - * The number of failed entities. - */ - failed?: Integer; - /** - * The number of warned entities. - */ - warned?: Integer; - /** - * The number of errored entities. - */ - errored?: Integer; - /** - * The number of stopped entities. - */ - stopped?: Integer; - /** - * The number of skipped entities. - */ - skipped?: Integer; - } - export interface CreateDevicePoolRequest { - /** - * The ARN of the project for the device pool. - */ - projectArn: AmazonResourceName; - /** - * The device pool's name. - */ - name: Name; - /** - * The device pool's description. - */ - description?: Message; - /** - * The device pool's rules. - */ - rules: Rules; - } - export interface CreateDevicePoolResult { - /** - * The newly created device pool. - */ - devicePool?: DevicePool; - } - export interface CreateNetworkProfileRequest { - /** - * The Amazon Resource Name (ARN) of the project for which you want to create a network profile. - */ - projectArn: AmazonResourceName; - /** - * The name you wish to specify for the new network profile. - */ - name: Name; - /** - * The description of the network profile. - */ - description?: Message; - /** - * The type of network profile you wish to create. Valid values are listed below. - */ - type?: NetworkProfileType; - /** - * The data throughput rate in bits per second, as an integer from 0 to 104857600. - */ - uplinkBandwidthBits?: Long; - /** - * The data throughput rate in bits per second, as an integer from 0 to 104857600. - */ - downlinkBandwidthBits?: Long; - /** - * Delay time for all packets to destination in milliseconds as an integer from 0 to 2000. - */ - uplinkDelayMs?: Long; - /** - * Delay time for all packets to destination in milliseconds as an integer from 0 to 2000. - */ - downlinkDelayMs?: Long; - /** - * Time variation in the delay of received packets in milliseconds as an integer from 0 to 2000. - */ - uplinkJitterMs?: Long; - /** - * Time variation in the delay of received packets in milliseconds as an integer from 0 to 2000. - */ - downlinkJitterMs?: Long; - /** - * Proportion of transmitted packets that fail to arrive from 0 to 100 percent. - */ - uplinkLossPercent?: PercentInteger; - /** - * Proportion of received packets that fail to arrive from 0 to 100 percent. - */ - downlinkLossPercent?: PercentInteger; - } - export interface CreateNetworkProfileResult { - /** - * The network profile that is returned by the create network profile request. - */ - networkProfile?: NetworkProfile; - } - export interface CreateProjectRequest { - /** - * The project's name. - */ - name: Name; - /** - * Sets the execution timeout value (in minutes) for a project. All test runs in this project will use the specified execution timeout value unless overridden when scheduling a run. - */ - defaultJobTimeoutMinutes?: JobTimeoutMinutes; - } - export interface CreateProjectResult { - /** - * The newly created project. - */ - project?: Project; - } - export interface CreateRemoteAccessSessionConfiguration { - /** - * Returns the billing method for purposes of configuring a remote access session. - */ - billingMethod?: BillingMethod; - } - export interface CreateRemoteAccessSessionRequest { - /** - * The Amazon Resource Name (ARN) of the project for which you want to create a remote access session. - */ - projectArn: AmazonResourceName; - /** - * The Amazon Resource Name (ARN) of the device for which you want to create a remote access session. - */ - deviceArn: AmazonResourceName; - /** - * The public key of the ssh key pair you want to use for connecting to remote devices in your remote debugging session. This is only required if remoteDebugEnabled is set to true. - */ - sshPublicKey?: SshPublicKey; - /** - * Set to true if you want to access devices remotely for debugging in your remote access session. - */ - remoteDebugEnabled?: Boolean; - /** - * The name of the remote access session that you wish to create. - */ - name?: Name; - /** - * Unique identifier for the client. If you want access to multiple devices on the same client, you should pass the same clientId value in each call to CreateRemoteAccessSession. This is required only if remoteDebugEnabled is set to true true. - */ - clientId?: ClientId; - /** - * The configuration information for the remote access session request. - */ - configuration?: CreateRemoteAccessSessionConfiguration; - } - export interface CreateRemoteAccessSessionResult { - /** - * A container that describes the remote access session when the request to create a remote access session is sent. - */ - remoteAccessSession?: RemoteAccessSession; - } - export interface CreateUploadRequest { - /** - * The ARN of the project for the upload. - */ - projectArn: AmazonResourceName; - /** - * The upload's file name. The name should not contain the '/' character. If uploading an iOS app, the file name needs to end with the .ipa extension. If uploading an Android app, the file name needs to end with the .apk extension. For all others, the file name must end with the .zip file extension. - */ - name: Name; - /** - * The upload's upload type. Must be one of the following values: ANDROID_APP: An Android upload. IOS_APP: An iOS upload. WEB_APP: A web appliction upload. EXTERNAL_DATA: An external data upload. APPIUM_JAVA_JUNIT_TEST_PACKAGE: An Appium Java JUnit test package upload. APPIUM_JAVA_TESTNG_TEST_PACKAGE: An Appium Java TestNG test package upload. APPIUM_PYTHON_TEST_PACKAGE: An Appium Python test package upload. APPIUM_WEB_JAVA_JUNIT_TEST_PACKAGE: An Appium Java JUnit test package upload. APPIUM_WEB_JAVA_TESTNG_TEST_PACKAGE: An Appium Java TestNG test package upload. APPIUM_WEB_PYTHON_TEST_PACKAGE: An Appium Python test package upload. CALABASH_TEST_PACKAGE: A Calabash test package upload. INSTRUMENTATION_TEST_PACKAGE: An instrumentation upload. UIAUTOMATION_TEST_PACKAGE: A uiautomation test package upload. UIAUTOMATOR_TEST_PACKAGE: A uiautomator test package upload. XCTEST_TEST_PACKAGE: An XCode test package upload. XCTEST_UI_TEST_PACKAGE: An XCode UI test package upload. Note If you call CreateUpload with WEB_APP specified, AWS Device Farm throws an ArgumentException error. - */ - type: UploadType; - /** - * The upload's content type (for example, "application/octet-stream"). - */ - contentType?: ContentType; - } - export interface CreateUploadResult { - /** - * The newly created upload. - */ - upload?: Upload; - } - export type CurrencyCode = "USD"|string; - export interface CustomerArtifactPaths { - /** - * Comma-separated list of paths on the iOS device where the artifacts generated by the customer's tests will be pulled from. - */ - iosPaths?: IosPaths; - /** - * Comma-separated list of paths on the Android device where the artifacts generated by the customer's tests will be pulled from. - */ - androidPaths?: AndroidPaths; - /** - * Comma-separated list of paths in the test execution environment where the artifacts generated by the customer's tests will be pulled from. - */ - deviceHostPaths?: DeviceHostPaths; - } - export type DateTime = Date; - export interface DeleteDevicePoolRequest { - /** - * Represents the Amazon Resource Name (ARN) of the Device Farm device pool you wish to delete. - */ - arn: AmazonResourceName; - } - export interface DeleteDevicePoolResult { - } - export interface DeleteNetworkProfileRequest { - /** - * The Amazon Resource Name (ARN) of the network profile you want to delete. - */ - arn: AmazonResourceName; - } - export interface DeleteNetworkProfileResult { - } - export interface DeleteProjectRequest { - /** - * Represents the Amazon Resource Name (ARN) of the Device Farm project you wish to delete. - */ - arn: AmazonResourceName; - } - export interface DeleteProjectResult { - } - export interface DeleteRemoteAccessSessionRequest { - /** - * The Amazon Resource Name (ARN) of the sesssion for which you want to delete remote access. - */ - arn: AmazonResourceName; - } - export interface DeleteRemoteAccessSessionResult { - } - export interface DeleteRunRequest { - /** - * The Amazon Resource Name (ARN) for the run you wish to delete. - */ - arn: AmazonResourceName; - } - export interface DeleteRunResult { - } - export interface DeleteUploadRequest { - /** - * Represents the Amazon Resource Name (ARN) of the Device Farm upload you wish to delete. - */ - arn: AmazonResourceName; - } - export interface DeleteUploadResult { - } - export interface Device { - /** - * The device's ARN. - */ - arn?: AmazonResourceName; - /** - * The device's display name. - */ - name?: Name; - /** - * The device's manufacturer name. - */ - manufacturer?: String; - /** - * The device's model name. - */ - model?: String; - /** - * The device's form factor. Allowed values include: PHONE: The phone form factor. TABLET: The tablet form factor. - */ - formFactor?: DeviceFormFactor; - /** - * The device's platform. Allowed values include: ANDROID: The Android platform. IOS: The iOS platform. - */ - platform?: DevicePlatform; - /** - * The device's operating system type. - */ - os?: String; - /** - * Information about the device's CPU. - */ - cpu?: CPU; - /** - * The resolution of the device. - */ - resolution?: Resolution; - /** - * The device's heap size, expressed in bytes. - */ - heapSize?: Long; - /** - * The device's total memory size, expressed in bytes. - */ - memory?: Long; - /** - * The device's image name. - */ - image?: String; - /** - * The device's carrier. - */ - carrier?: String; - /** - * The device's radio. - */ - radio?: String; - /** - * Specifies whether remote access has been enabled for the specified device. - */ - remoteAccessEnabled?: Boolean; - /** - * This flag is set to true if remote debugging is enabled for the device. - */ - remoteDebugEnabled?: Boolean; - /** - * The type of fleet to which this device belongs. Possible values for fleet type are PRIVATE and PUBLIC. - */ - fleetType?: String; - /** - * The name of the fleet to which this device belongs. - */ - fleetName?: String; - } - export type DeviceAttribute = "ARN"|"PLATFORM"|"FORM_FACTOR"|"MANUFACTURER"|"REMOTE_ACCESS_ENABLED"|"REMOTE_DEBUG_ENABLED"|"APPIUM_VERSION"|string; - export type DeviceFormFactor = "PHONE"|"TABLET"|string; - export type DeviceHostPaths = String[]; - export interface DeviceMinutes { - /** - * When specified, represents the total minutes used by the resource to run tests. - */ - total?: Double; - /** - * When specified, represents only the sum of metered minutes used by the resource to run tests. - */ - metered?: Double; - /** - * When specified, represents only the sum of unmetered minutes used by the resource to run tests. - */ - unmetered?: Double; - } - export type DevicePlatform = "ANDROID"|"IOS"|string; - export interface DevicePool { - /** - * The device pool's ARN. - */ - arn?: AmazonResourceName; - /** - * The device pool's name. - */ - name?: Name; - /** - * The device pool's description. - */ - description?: Message; - /** - * The device pool's type. Allowed values include: CURATED: A device pool that is created and managed by AWS Device Farm. PRIVATE: A device pool that is created and managed by the device pool developer. - */ - type?: DevicePoolType; - /** - * Information about the device pool's rules. - */ - rules?: Rules; - } - export interface DevicePoolCompatibilityResult { - /** - * The device (phone or tablet) that you wish to return information about. - */ - device?: Device; - /** - * Whether the result was compatible with the device pool. - */ - compatible?: Boolean; - /** - * Information about the compatibility. - */ - incompatibilityMessages?: IncompatibilityMessages; - } - export type DevicePoolCompatibilityResults = DevicePoolCompatibilityResult[]; - export type DevicePoolType = "CURATED"|"PRIVATE"|string; - export type DevicePools = DevicePool[]; - export type Devices = Device[]; - export type Double = number; - export interface ExecutionConfiguration { - /** - * The number of minutes a test run will execute before it times out. - */ - jobTimeoutMinutes?: JobTimeoutMinutes; - /** - * True if account cleanup is enabled at the beginning of the test; otherwise, false. - */ - accountsCleanup?: AccountsCleanup; - /** - * True if app package cleanup is enabled at the beginning of the test; otherwise, false. - */ - appPackagesCleanup?: AppPackagesCleanup; - } - export type ExecutionResult = "PENDING"|"PASSED"|"WARNED"|"FAILED"|"SKIPPED"|"ERRORED"|"STOPPED"|string; - export type ExecutionResultCode = "PARSING_FAILED"|string; - export type ExecutionStatus = "PENDING"|"PENDING_CONCURRENCY"|"PENDING_DEVICE"|"PROCESSING"|"SCHEDULING"|"PREPARING"|"RUNNING"|"COMPLETED"|"STOPPING"|string; - export type Filter = string; - export interface GetAccountSettingsRequest { - } - export interface GetAccountSettingsResult { - /** - * The account settings. - */ - accountSettings?: AccountSettings; - } - export interface GetDevicePoolCompatibilityRequest { - /** - * The device pool's ARN. - */ - devicePoolArn: AmazonResourceName; - /** - * The ARN of the app that is associated with the specified device pool. - */ - appArn?: AmazonResourceName; - /** - * The test type for the specified device pool. Allowed values include the following: BUILTIN_FUZZ: The built-in fuzz type. BUILTIN_EXPLORER: For Android, an app explorer that will traverse an Android app, interacting with it and capturing screenshots at the same time. APPIUM_JAVA_JUNIT: The Appium Java JUnit type. APPIUM_JAVA_TESTNG: The Appium Java TestNG type. APPIUM_PYTHON: The Appium Python type. APPIUM_WEB_JAVA_JUNIT: The Appium Java JUnit type for Web apps. APPIUM_WEB_JAVA_TESTNG: The Appium Java TestNG type for Web apps. APPIUM_WEB_PYTHON: The Appium Python type for Web apps. CALABASH: The Calabash type. INSTRUMENTATION: The Instrumentation type. UIAUTOMATION: The uiautomation type. UIAUTOMATOR: The uiautomator type. XCTEST: The XCode test type. XCTEST_UI: The XCode UI test type. - */ - testType?: TestType; - /** - * Information about the uploaded test to be run against the device pool. - */ - test?: ScheduleRunTest; - } - export interface GetDevicePoolCompatibilityResult { - /** - * Information about compatible devices. - */ - compatibleDevices?: DevicePoolCompatibilityResults; - /** - * Information about incompatible devices. - */ - incompatibleDevices?: DevicePoolCompatibilityResults; - } - export interface GetDevicePoolRequest { - /** - * The device pool's ARN. - */ - arn: AmazonResourceName; - } - export interface GetDevicePoolResult { - /** - * An object containing information about the requested device pool. - */ - devicePool?: DevicePool; - } - export interface GetDeviceRequest { - /** - * The device type's ARN. - */ - arn: AmazonResourceName; - } - export interface GetDeviceResult { - /** - * An object containing information about the requested device. - */ - device?: Device; - } - export interface GetJobRequest { - /** - * The job's ARN. - */ - arn: AmazonResourceName; - } - export interface GetJobResult { - /** - * An object containing information about the requested job. - */ - job?: Job; - } - export interface GetNetworkProfileRequest { - /** - * The Amazon Resource Name (ARN) of the network profile you want to return information about. - */ - arn: AmazonResourceName; - } - export interface GetNetworkProfileResult { - /** - * The network profile. - */ - networkProfile?: NetworkProfile; - } - export interface GetOfferingStatusRequest { - /** - * An identifier that was returned from the previous call to this operation, which can be used to return the next set of items in the list. - */ - nextToken?: PaginationToken; - } - export interface GetOfferingStatusResult { - /** - * When specified, gets the offering status for the current period. - */ - current?: OfferingStatusMap; - /** - * When specified, gets the offering status for the next period. - */ - nextPeriod?: OfferingStatusMap; - /** - * An identifier that was returned from the previous call to this operation, which can be used to return the next set of items in the list. - */ - nextToken?: PaginationToken; - } - export interface GetProjectRequest { - /** - * The project's ARN. - */ - arn: AmazonResourceName; - } - export interface GetProjectResult { - /** - * The project you wish to get information about. - */ - project?: Project; - } - export interface GetRemoteAccessSessionRequest { - /** - * The Amazon Resource Name (ARN) of the remote access session about which you want to get session information. - */ - arn: AmazonResourceName; - } - export interface GetRemoteAccessSessionResult { - /** - * A container that lists detailed information about the remote access session. - */ - remoteAccessSession?: RemoteAccessSession; - } - export interface GetRunRequest { - /** - * The run's ARN. - */ - arn: AmazonResourceName; - } - export interface GetRunResult { - /** - * The run you wish to get results from. - */ - run?: Run; - } - export interface GetSuiteRequest { - /** - * The suite's ARN. - */ - arn: AmazonResourceName; - } - export interface GetSuiteResult { - /** - * A collection of one or more tests. - */ - suite?: Suite; - } - export interface GetTestRequest { - /** - * The test's ARN. - */ - arn: AmazonResourceName; - } - export interface GetTestResult { - /** - * A test condition that is evaluated. - */ - test?: Test; - } - export interface GetUploadRequest { - /** - * The upload's ARN. - */ - arn: AmazonResourceName; - } - export interface GetUploadResult { - /** - * An app or a set of one or more tests to upload or that have been uploaded. - */ - upload?: Upload; - } - export type HostAddress = string; - export interface IncompatibilityMessage { - /** - * A message about the incompatibility. - */ - message?: Message; - /** - * The type of incompatibility. Allowed values include: ARN: The ARN. FORM_FACTOR: The form factor (for example, phone or tablet). MANUFACTURER: The manufacturer. PLATFORM: The platform (for example, Android or iOS). REMOTE_ACCESS_ENABLED: Whether the device is enabled for remote access. APPIUM_VERSION: The Appium version for the test. - */ - type?: DeviceAttribute; - } - export type IncompatibilityMessages = IncompatibilityMessage[]; - export interface InstallToRemoteAccessSessionRequest { - /** - * The Amazon Resource Name (ARN) of the remote access session about which you are requesting information. - */ - remoteAccessSessionArn: AmazonResourceName; - /** - * The Amazon Resource Name (ARN) of the app about which you are requesting information. - */ - appArn: AmazonResourceName; - } - export interface InstallToRemoteAccessSessionResult { - /** - * An app to upload or that has been uploaded. - */ - appUpload?: Upload; - } - export type Integer = number; - export type IosPaths = String[]; - export interface Job { - /** - * The job's ARN. - */ - arn?: AmazonResourceName; - /** - * The job's name. - */ - name?: Name; - /** - * The job's type. Allowed values include the following: BUILTIN_FUZZ: The built-in fuzz type. BUILTIN_EXPLORER: For Android, an app explorer that will traverse an Android app, interacting with it and capturing screenshots at the same time. APPIUM_JAVA_JUNIT: The Appium Java JUnit type. APPIUM_JAVA_TESTNG: The Appium Java TestNG type. APPIUM_PYTHON: The Appium Python type. APPIUM_WEB_JAVA_JUNIT: The Appium Java JUnit type for Web apps. APPIUM_WEB_JAVA_TESTNG: The Appium Java TestNG type for Web apps. APPIUM_WEB_PYTHON: The Appium Python type for Web apps. CALABASH: The Calabash type. INSTRUMENTATION: The Instrumentation type. UIAUTOMATION: The uiautomation type. UIAUTOMATOR: The uiautomator type. XCTEST: The XCode test type. XCTEST_UI: The XCode UI test type. - */ - type?: TestType; - /** - * When the job was created. - */ - created?: DateTime; - /** - * The job's status. Allowed values include: PENDING: A pending status. PENDING_CONCURRENCY: A pending concurrency status. PENDING_DEVICE: A pending device status. PROCESSING: A processing status. SCHEDULING: A scheduling status. PREPARING: A preparing status. RUNNING: A running status. COMPLETED: A completed status. STOPPING: A stopping status. - */ - status?: ExecutionStatus; - /** - * The job's result. Allowed values include: PENDING: A pending condition. PASSED: A passing condition. WARNED: A warning condition. FAILED: A failed condition. SKIPPED: A skipped condition. ERRORED: An error condition. STOPPED: A stopped condition. - */ - result?: ExecutionResult; - /** - * The job's start time. - */ - started?: DateTime; - /** - * The job's stop time. - */ - stopped?: DateTime; - /** - * The job's result counters. - */ - counters?: Counters; - /** - * A message about the job's result. - */ - message?: Message; - /** - * The device (phone or tablet). - */ - device?: Device; - /** - * Represents the total (metered or unmetered) minutes used by the job. - */ - deviceMinutes?: DeviceMinutes; - } - export type JobTimeoutMinutes = number; - export type Jobs = Job[]; - export interface ListArtifactsRequest { - /** - * The Run, Job, Suite, or Test ARN. - */ - arn: AmazonResourceName; - /** - * The artifacts' type. Allowed values include: FILE: The artifacts are files. LOG: The artifacts are logs. SCREENSHOT: The artifacts are screenshots. - */ - type: ArtifactCategory; - /** - * An identifier that was returned from the previous call to this operation, which can be used to return the next set of items in the list. - */ - nextToken?: PaginationToken; - } - export interface ListArtifactsResult { - /** - * Information about the artifacts. - */ - artifacts?: Artifacts; - /** - * If the number of items that are returned is significantly large, this is an identifier that is also returned, which can be used in a subsequent call to this operation to return the next set of items in the list. - */ - nextToken?: PaginationToken; - } - export interface ListDevicePoolsRequest { - /** - * The project ARN. - */ - arn: AmazonResourceName; - /** - * The device pools' type. Allowed values include: CURATED: A device pool that is created and managed by AWS Device Farm. PRIVATE: A device pool that is created and managed by the device pool developer. - */ - type?: DevicePoolType; - /** - * An identifier that was returned from the previous call to this operation, which can be used to return the next set of items in the list. - */ - nextToken?: PaginationToken; - } - export interface ListDevicePoolsResult { - /** - * Information about the device pools. - */ - devicePools?: DevicePools; - /** - * If the number of items that are returned is significantly large, this is an identifier that is also returned, which can be used in a subsequent call to this operation to return the next set of items in the list. - */ - nextToken?: PaginationToken; - } - export interface ListDevicesRequest { - /** - * The Amazon Resource Name (ARN) of the project. - */ - arn?: AmazonResourceName; - /** - * An identifier that was returned from the previous call to this operation, which can be used to return the next set of items in the list. - */ - nextToken?: PaginationToken; - } - export interface ListDevicesResult { - /** - * Information about the devices. - */ - devices?: Devices; - /** - * If the number of items that are returned is significantly large, this is an identifier that is also returned, which can be used in a subsequent call to this operation to return the next set of items in the list. - */ - nextToken?: PaginationToken; - } - export interface ListJobsRequest { - /** - * The jobs' ARNs. - */ - arn: AmazonResourceName; - /** - * An identifier that was returned from the previous call to this operation, which can be used to return the next set of items in the list. - */ - nextToken?: PaginationToken; - } - export interface ListJobsResult { - /** - * Information about the jobs. - */ - jobs?: Jobs; - /** - * If the number of items that are returned is significantly large, this is an identifier that is also returned, which can be used in a subsequent call to this operation to return the next set of items in the list. - */ - nextToken?: PaginationToken; - } - export interface ListNetworkProfilesRequest { - /** - * The Amazon Resource Name (ARN) of the project for which you want to list network profiles. - */ - arn: AmazonResourceName; - /** - * The type of network profile you wish to return information about. Valid values are listed below. - */ - type?: NetworkProfileType; - /** - * An identifier that was returned from the previous call to this operation, which can be used to return the next set of items in the list. - */ - nextToken?: PaginationToken; - } - export interface ListNetworkProfilesResult { - /** - * A list of the available network profiles. - */ - networkProfiles?: NetworkProfiles; - /** - * An identifier that was returned from the previous call to this operation, which can be used to return the next set of items in the list. - */ - nextToken?: PaginationToken; - } - export interface ListOfferingPromotionsRequest { - /** - * An identifier that was returned from the previous call to this operation, which can be used to return the next set of items in the list. - */ - nextToken?: PaginationToken; - } - export interface ListOfferingPromotionsResult { - /** - * Information about the offering promotions. - */ - offeringPromotions?: OfferingPromotions; - /** - * An identifier to be used in the next call to this operation, to return the next set of items in the list. - */ - nextToken?: PaginationToken; - } - export interface ListOfferingTransactionsRequest { - /** - * An identifier that was returned from the previous call to this operation, which can be used to return the next set of items in the list. - */ - nextToken?: PaginationToken; - } - export interface ListOfferingTransactionsResult { - /** - * The audit log of subscriptions you have purchased and modified through AWS Device Farm. - */ - offeringTransactions?: OfferingTransactions; - /** - * An identifier that was returned from the previous call to this operation, which can be used to return the next set of items in the list. - */ - nextToken?: PaginationToken; - } - export interface ListOfferingsRequest { - /** - * An identifier that was returned from the previous call to this operation, which can be used to return the next set of items in the list. - */ - nextToken?: PaginationToken; - } - export interface ListOfferingsResult { - /** - * A value representing the list offering results. - */ - offerings?: Offerings; - /** - * An identifier that was returned from the previous call to this operation, which can be used to return the next set of items in the list. - */ - nextToken?: PaginationToken; - } - export interface ListProjectsRequest { - /** - * Optional. If no Amazon Resource Name (ARN) is specified, then AWS Device Farm returns a list of all projects for the AWS account. You can also specify a project ARN. - */ - arn?: AmazonResourceName; - /** - * An identifier that was returned from the previous call to this operation, which can be used to return the next set of items in the list. - */ - nextToken?: PaginationToken; - } - export interface ListProjectsResult { - /** - * Information about the projects. - */ - projects?: Projects; - /** - * If the number of items that are returned is significantly large, this is an identifier that is also returned, which can be used in a subsequent call to this operation to return the next set of items in the list. - */ - nextToken?: PaginationToken; - } - export interface ListRemoteAccessSessionsRequest { - /** - * The Amazon Resource Name (ARN) of the remote access session about which you are requesting information. - */ - arn: AmazonResourceName; - /** - * An identifier that was returned from the previous call to this operation, which can be used to return the next set of items in the list. - */ - nextToken?: PaginationToken; - } - export interface ListRemoteAccessSessionsResult { - /** - * A container representing the metadata from the service about each remote access session you are requesting. - */ - remoteAccessSessions?: RemoteAccessSessions; - /** - * An identifier that was returned from the previous call to this operation, which can be used to return the next set of items in the list. - */ - nextToken?: PaginationToken; - } - export interface ListRunsRequest { - /** - * The Amazon Resource Name (ARN) of the project for which you want to list runs. - */ - arn: AmazonResourceName; - /** - * An identifier that was returned from the previous call to this operation, which can be used to return the next set of items in the list. - */ - nextToken?: PaginationToken; - } - export interface ListRunsResult { - /** - * Information about the runs. - */ - runs?: Runs; - /** - * If the number of items that are returned is significantly large, this is an identifier that is also returned, which can be used in a subsequent call to this operation to return the next set of items in the list. - */ - nextToken?: PaginationToken; - } - export interface ListSamplesRequest { - /** - * The Amazon Resource Name (ARN) of the project for which you want to list samples. - */ - arn: AmazonResourceName; - /** - * An identifier that was returned from the previous call to this operation, which can be used to return the next set of items in the list. - */ - nextToken?: PaginationToken; - } - export interface ListSamplesResult { - /** - * Information about the samples. - */ - samples?: Samples; - /** - * If the number of items that are returned is significantly large, this is an identifier that is also returned, which can be used in a subsequent call to this operation to return the next set of items in the list. - */ - nextToken?: PaginationToken; - } - export interface ListSuitesRequest { - /** - * The suites' ARNs. - */ - arn: AmazonResourceName; - /** - * An identifier that was returned from the previous call to this operation, which can be used to return the next set of items in the list. - */ - nextToken?: PaginationToken; - } - export interface ListSuitesResult { - /** - * Information about the suites. - */ - suites?: Suites; - /** - * If the number of items that are returned is significantly large, this is an identifier that is also returned, which can be used in a subsequent call to this operation to return the next set of items in the list. - */ - nextToken?: PaginationToken; - } - export interface ListTestsRequest { - /** - * The tests' ARNs. - */ - arn: AmazonResourceName; - /** - * An identifier that was returned from the previous call to this operation, which can be used to return the next set of items in the list. - */ - nextToken?: PaginationToken; - } - export interface ListTestsResult { - /** - * Information about the tests. - */ - tests?: Tests; - /** - * If the number of items that are returned is significantly large, this is an identifier that is also returned, which can be used in a subsequent call to this operation to return the next set of items in the list. - */ - nextToken?: PaginationToken; - } - export interface ListUniqueProblemsRequest { - /** - * The unique problems' ARNs. - */ - arn: AmazonResourceName; - /** - * An identifier that was returned from the previous call to this operation, which can be used to return the next set of items in the list. - */ - nextToken?: PaginationToken; - } - export interface ListUniqueProblemsResult { - /** - * Information about the unique problems. Allowed values include: PENDING: A pending condition. PASSED: A passing condition. WARNED: A warning condition. FAILED: A failed condition. SKIPPED: A skipped condition. ERRORED: An error condition. STOPPED: A stopped condition. - */ - uniqueProblems?: UniqueProblemsByExecutionResultMap; - /** - * If the number of items that are returned is significantly large, this is an identifier that is also returned, which can be used in a subsequent call to this operation to return the next set of items in the list. - */ - nextToken?: PaginationToken; - } - export interface ListUploadsRequest { - /** - * The Amazon Resource Name (ARN) of the project for which you want to list uploads. - */ - arn: AmazonResourceName; - /** - * An identifier that was returned from the previous call to this operation, which can be used to return the next set of items in the list. - */ - nextToken?: PaginationToken; - } - export interface ListUploadsResult { - /** - * Information about the uploads. - */ - uploads?: Uploads; - /** - * If the number of items that are returned is significantly large, this is an identifier that is also returned, which can be used in a subsequent call to this operation to return the next set of items in the list. - */ - nextToken?: PaginationToken; - } - export interface Location { - /** - * The latitude. - */ - latitude: Double; - /** - * The longitude. - */ - longitude: Double; - } - export type Long = number; - export type MaxSlotMap = {[key: string]: Integer}; - export type Message = string; - export type Metadata = string; - export interface MonetaryAmount { - /** - * The numerical amount of an offering or transaction. - */ - amount?: Double; - /** - * The currency code of a monetary amount. For example, USD means "U.S. dollars." - */ - currencyCode?: CurrencyCode; - } - export type Name = string; - export interface NetworkProfile { - /** - * The Amazon Resource Name (ARN) of the network profile. - */ - arn?: AmazonResourceName; - /** - * The name of the network profile. - */ - name?: Name; - /** - * The description of the network profile. - */ - description?: Message; - /** - * The type of network profile. Valid values are listed below. - */ - type?: NetworkProfileType; - /** - * The data throughput rate in bits per second, as an integer from 0 to 104857600. - */ - uplinkBandwidthBits?: Long; - /** - * The data throughput rate in bits per second, as an integer from 0 to 104857600. - */ - downlinkBandwidthBits?: Long; - /** - * Delay time for all packets to destination in milliseconds as an integer from 0 to 2000. - */ - uplinkDelayMs?: Long; - /** - * Delay time for all packets to destination in milliseconds as an integer from 0 to 2000. - */ - downlinkDelayMs?: Long; - /** - * Time variation in the delay of received packets in milliseconds as an integer from 0 to 2000. - */ - uplinkJitterMs?: Long; - /** - * Time variation in the delay of received packets in milliseconds as an integer from 0 to 2000. - */ - downlinkJitterMs?: Long; - /** - * Proportion of transmitted packets that fail to arrive from 0 to 100 percent. - */ - uplinkLossPercent?: PercentInteger; - /** - * Proportion of received packets that fail to arrive from 0 to 100 percent. - */ - downlinkLossPercent?: PercentInteger; - } - export type NetworkProfileType = "CURATED"|"PRIVATE"|string; - export type NetworkProfiles = NetworkProfile[]; - export interface Offering { - /** - * The ID that corresponds to a device offering. - */ - id?: OfferingIdentifier; - /** - * A string describing the offering. - */ - description?: Message; - /** - * The type of offering (e.g., "RECURRING") for a device. - */ - type?: OfferingType; - /** - * The platform of the device (e.g., ANDROID or IOS). - */ - platform?: DevicePlatform; - /** - * Specifies whether there are recurring charges for the offering. - */ - recurringCharges?: RecurringCharges; - } - export type OfferingIdentifier = string; - export interface OfferingPromotion { - /** - * The ID of the offering promotion. - */ - id?: OfferingPromotionIdentifier; - /** - * A string describing the offering promotion. - */ - description?: Message; - } - export type OfferingPromotionIdentifier = string; - export type OfferingPromotions = OfferingPromotion[]; - export interface OfferingStatus { - /** - * The type specified for the offering status. - */ - type?: OfferingTransactionType; - /** - * Represents the metadata of an offering status. - */ - offering?: Offering; - /** - * The number of available devices in the offering. - */ - quantity?: Integer; - /** - * The date on which the offering is effective. - */ - effectiveOn?: DateTime; - } - export type OfferingStatusMap = {[key: string]: OfferingStatus}; - export interface OfferingTransaction { - /** - * The status of an offering transaction. - */ - offeringStatus?: OfferingStatus; - /** - * The transaction ID of the offering transaction. - */ - transactionId?: TransactionIdentifier; - /** - * The ID that corresponds to a device offering promotion. - */ - offeringPromotionId?: OfferingPromotionIdentifier; - /** - * The date on which an offering transaction was created. - */ - createdOn?: DateTime; - /** - * The cost of an offering transaction. - */ - cost?: MonetaryAmount; - } - export type OfferingTransactionType = "PURCHASE"|"RENEW"|"SYSTEM"|string; - export type OfferingTransactions = OfferingTransaction[]; - export type OfferingType = "RECURRING"|string; - export type Offerings = Offering[]; - export type PaginationToken = string; - export type PercentInteger = number; - export interface Problem { - /** - * Information about the associated run. - */ - run?: ProblemDetail; - /** - * Information about the associated job. - */ - job?: ProblemDetail; - /** - * Information about the associated suite. - */ - suite?: ProblemDetail; - /** - * Information about the associated test. - */ - test?: ProblemDetail; - /** - * Information about the associated device. - */ - device?: Device; - /** - * The problem's result. Allowed values include: PENDING: A pending condition. PASSED: A passing condition. WARNED: A warning condition. FAILED: A failed condition. SKIPPED: A skipped condition. ERRORED: An error condition. STOPPED: A stopped condition. - */ - result?: ExecutionResult; - /** - * A message about the problem's result. - */ - message?: Message; - } - export interface ProblemDetail { - /** - * The problem detail's ARN. - */ - arn?: AmazonResourceName; - /** - * The problem detail's name. - */ - name?: Name; - } - export type Problems = Problem[]; - export interface Project { - /** - * The project's ARN. - */ - arn?: AmazonResourceName; - /** - * The project's name. - */ - name?: Name; - /** - * The default number of minutes (at the project level) a test run will execute before it times out. Default value is 60 minutes. - */ - defaultJobTimeoutMinutes?: JobTimeoutMinutes; - /** - * When the project was created. - */ - created?: DateTime; - } - export type Projects = Project[]; - export interface PurchaseOfferingRequest { - /** - * The ID of the offering. - */ - offeringId?: OfferingIdentifier; - /** - * The number of device slots you wish to purchase in an offering request. - */ - quantity?: Integer; - /** - * The ID of the offering promotion to be applied to the purchase. - */ - offeringPromotionId?: OfferingPromotionIdentifier; - } - export interface PurchaseOfferingResult { - /** - * Represents the offering transaction for the purchase result. - */ - offeringTransaction?: OfferingTransaction; - } - export type PurchasedDevicesMap = {[key: string]: Integer}; - export interface Radios { - /** - * True if Wi-Fi is enabled at the beginning of the test; otherwise, false. - */ - wifi?: Boolean; - /** - * True if Bluetooth is enabled at the beginning of the test; otherwise, false. - */ - bluetooth?: Boolean; - /** - * True if NFC is enabled at the beginning of the test; otherwise, false. - */ - nfc?: Boolean; - /** - * True if GPS is enabled at the beginning of the test; otherwise, false. - */ - gps?: Boolean; - } - export interface RecurringCharge { - /** - * The cost of the recurring charge. - */ - cost?: MonetaryAmount; - /** - * The frequency in which charges will recur. - */ - frequency?: RecurringChargeFrequency; - } - export type RecurringChargeFrequency = "MONTHLY"|string; - export type RecurringCharges = RecurringCharge[]; - export interface RemoteAccessSession { - /** - * The Amazon Resource Name (ARN) of the remote access session. - */ - arn?: AmazonResourceName; - /** - * The name of the remote access session. - */ - name?: Name; - /** - * The date and time the remote access session was created. - */ - created?: DateTime; - /** - * The status of the remote access session. Can be any of the following: PENDING: A pending status. PENDING_CONCURRENCY: A pending concurrency status. PENDING_DEVICE: A pending device status. PROCESSING: A processing status. SCHEDULING: A scheduling status. PREPARING: A preparing status. RUNNING: A running status. COMPLETED: A completed status. STOPPING: A stopping status. - */ - status?: ExecutionStatus; - /** - * The result of the remote access session. Can be any of the following: PENDING: A pending condition. PASSED: A passing condition. WARNED: A warning condition. FAILED: A failed condition. SKIPPED: A skipped condition. ERRORED: An error condition. STOPPED: A stopped condition. - */ - result?: ExecutionResult; - /** - * A message about the remote access session. - */ - message?: Message; - /** - * The date and time the remote access session was started. - */ - started?: DateTime; - /** - * The date and time the remote access session was stopped. - */ - stopped?: DateTime; - /** - * The device (phone or tablet) used in the remote access session. - */ - device?: Device; - /** - * This flag is set to true if remote debugging is enabled for the remote access session. - */ - remoteDebugEnabled?: Boolean; - /** - * IP address of the EC2 host where you need to connect to remotely debug devices. Only returned if remote debugging is enabled for the remote access session. - */ - hostAddress?: HostAddress; - /** - * Unique identifier of your client for the remote access session. Only returned if remote debugging is enabled for the remote access session. - */ - clientId?: ClientId; - /** - * The billing method of the remote access session. Possible values include METERED or UNMETERED. For more information about metered devices, see AWS Device Farm terminology." - */ - billingMethod?: BillingMethod; - /** - * The number of minutes a device is used in a remote access sesssion (including setup and teardown minutes). - */ - deviceMinutes?: DeviceMinutes; - /** - * The endpoint for the remote access sesssion. - */ - endpoint?: String; - /** - * Unique device identifier for the remote device. Only returned if remote debugging is enabled for the remote access session. - */ - deviceUdid?: String; - } - export type RemoteAccessSessions = RemoteAccessSession[]; - export interface RenewOfferingRequest { - /** - * The ID of a request to renew an offering. - */ - offeringId?: OfferingIdentifier; - /** - * The quantity requested in an offering renewal. - */ - quantity?: Integer; - } - export interface RenewOfferingResult { - /** - * Represents the status of the offering transaction for the renewal. - */ - offeringTransaction?: OfferingTransaction; - } - export interface Resolution { - /** - * The screen resolution's width, expressed in pixels. - */ - width?: Integer; - /** - * The screen resolution's height, expressed in pixels. - */ - height?: Integer; - } - export interface Rule { - /** - * The rule's stringified attribute. For example, specify the value as "\"abc\"". Allowed values include: ARN: The ARN. FORM_FACTOR: The form factor (for example, phone or tablet). MANUFACTURER: The manufacturer. PLATFORM: The platform (for example, Android or iOS). REMOTE_ACCESS_ENABLED: Whether the device is enabled for remote access. APPIUM_VERSION: The Appium version for the test. - */ - attribute?: DeviceAttribute; - /** - * The rule's operator. EQUALS: The equals operator. GREATER_THAN: The greater-than operator. IN: The in operator. LESS_THAN: The less-than operator. NOT_IN: The not-in operator. CONTAINS: The contains operator. - */ - operator?: RuleOperator; - /** - * The rule's value. - */ - value?: String; - } - export type RuleOperator = "EQUALS"|"LESS_THAN"|"GREATER_THAN"|"IN"|"NOT_IN"|"CONTAINS"|string; - export type Rules = Rule[]; - export interface Run { - /** - * The run's ARN. - */ - arn?: AmazonResourceName; - /** - * The run's name. - */ - name?: Name; - /** - * The run's type. Must be one of the following values: BUILTIN_FUZZ: The built-in fuzz type. BUILTIN_EXPLORER: For Android, an app explorer that will traverse an Android app, interacting with it and capturing screenshots at the same time. APPIUM_JAVA_JUNIT: The Appium Java JUnit type. APPIUM_JAVA_TESTNG: The Appium Java TestNG type. APPIUM_PYTHON: The Appium Python type. APPIUM_WEB_JAVA_JUNIT: The Appium Java JUnit type for Web apps. APPIUM_WEB_JAVA_TESTNG: The Appium Java TestNG type for Web apps. APPIUM_WEB_PYTHON: The Appium Python type for Web apps. CALABASH: The Calabash type. INSTRUMENTATION: The Instrumentation type. UIAUTOMATION: The uiautomation type. UIAUTOMATOR: The uiautomator type. XCTEST: The XCode test type. XCTEST_UI: The XCode UI test type. - */ - type?: TestType; - /** - * The run's platform. Allowed values include: ANDROID: The Android platform. IOS: The iOS platform. - */ - platform?: DevicePlatform; - /** - * When the run was created. - */ - created?: DateTime; - /** - * The run's status. Allowed values include: PENDING: A pending status. PENDING_CONCURRENCY: A pending concurrency status. PENDING_DEVICE: A pending device status. PROCESSING: A processing status. SCHEDULING: A scheduling status. PREPARING: A preparing status. RUNNING: A running status. COMPLETED: A completed status. STOPPING: A stopping status. - */ - status?: ExecutionStatus; - /** - * The run's result. Allowed values include: PENDING: A pending condition. PASSED: A passing condition. WARNED: A warning condition. FAILED: A failed condition. SKIPPED: A skipped condition. ERRORED: An error condition. STOPPED: A stopped condition. - */ - result?: ExecutionResult; - /** - * The run's start time. - */ - started?: DateTime; - /** - * The run's stop time. - */ - stopped?: DateTime; - /** - * The run's result counters. - */ - counters?: Counters; - /** - * A message about the run's result. - */ - message?: Message; - /** - * The total number of jobs for the run. - */ - totalJobs?: Integer; - /** - * The total number of completed jobs. - */ - completedJobs?: Integer; - /** - * Specifies the billing method for a test run: metered or unmetered. If the parameter is not specified, the default value is metered. - */ - billingMethod?: BillingMethod; - /** - * Represents the total (metered or unmetered) minutes used by the test run. - */ - deviceMinutes?: DeviceMinutes; - /** - * The network profile being used for a test run. - */ - networkProfile?: NetworkProfile; - /** - * Read-only URL for an object in S3 bucket where you can get the parsing results of the test package. If the test package doesn't parse, the reason why it doesn't parse appears in the file that this URL points to. - */ - parsingResultUrl?: String; - /** - * Supporting field for the result field. Set only if result is SKIPPED. PARSING_FAILED if the result is skipped because of test package parsing failure. - */ - resultCode?: ExecutionResultCode; - /** - * Output CustomerArtifactPaths object for the test run. - */ - customerArtifactPaths?: CustomerArtifactPaths; - } - export type Runs = Run[]; - export interface Sample { - /** - * The sample's ARN. - */ - arn?: AmazonResourceName; - /** - * The sample's type. Must be one of the following values: CPU: A CPU sample type. This is expressed as the app processing CPU time (including child processes) as reported by process, as a percentage. MEMORY: A memory usage sample type. This is expressed as the total proportional set size of an app process, in kilobytes. NATIVE_AVG_DRAWTIME NATIVE_FPS NATIVE_FRAMES NATIVE_MAX_DRAWTIME NATIVE_MIN_DRAWTIME OPENGL_AVG_DRAWTIME OPENGL_FPS OPENGL_FRAMES OPENGL_MAX_DRAWTIME OPENGL_MIN_DRAWTIME RX RX_RATE: The total number of bytes per second (TCP and UDP) that are sent, by app process. THREADS: A threads sample type. This is expressed as the total number of threads per app process. TX TX_RATE: The total number of bytes per second (TCP and UDP) that are received, by app process. - */ - type?: SampleType; - /** - * The pre-signed Amazon S3 URL that can be used with a corresponding GET request to download the sample's file. - */ - url?: URL; - } - export type SampleType = "CPU"|"MEMORY"|"THREADS"|"RX_RATE"|"TX_RATE"|"RX"|"TX"|"NATIVE_FRAMES"|"NATIVE_FPS"|"NATIVE_MIN_DRAWTIME"|"NATIVE_AVG_DRAWTIME"|"NATIVE_MAX_DRAWTIME"|"OPENGL_FRAMES"|"OPENGL_FPS"|"OPENGL_MIN_DRAWTIME"|"OPENGL_AVG_DRAWTIME"|"OPENGL_MAX_DRAWTIME"|string; - export type Samples = Sample[]; - export interface ScheduleRunConfiguration { - /** - * The ARN of the extra data for the run. The extra data is a .zip file that AWS Device Farm will extract to external data for Android or the app's sandbox for iOS. - */ - extraDataPackageArn?: AmazonResourceName; - /** - * Reserved for internal use. - */ - networkProfileArn?: AmazonResourceName; - /** - * Information about the locale that is used for the run. - */ - locale?: String; - /** - * Information about the location that is used for the run. - */ - location?: Location; - /** - * Input CustomerArtifactPaths object for the scheduled run configuration. - */ - customerArtifactPaths?: CustomerArtifactPaths; - /** - * Information about the radio states for the run. - */ - radios?: Radios; - /** - * A list of auxiliary apps for the run. - */ - auxiliaryApps?: AmazonResourceNames; - /** - * Specifies the billing method for a test run: metered or unmetered. If the parameter is not specified, the default value is metered. - */ - billingMethod?: BillingMethod; - } - export interface ScheduleRunRequest { - /** - * The ARN of the project for the run to be scheduled. - */ - projectArn: AmazonResourceName; - /** - * The ARN of the app to schedule a run. - */ - appArn?: AmazonResourceName; - /** - * The ARN of the device pool for the run to be scheduled. - */ - devicePoolArn: AmazonResourceName; - /** - * The name for the run to be scheduled. - */ - name?: Name; - /** - * Information about the test for the run to be scheduled. - */ - test: ScheduleRunTest; - /** - * Information about the settings for the run to be scheduled. - */ - configuration?: ScheduleRunConfiguration; - /** - * Specifies configuration information about a test run, such as the execution timeout (in minutes). - */ - executionConfiguration?: ExecutionConfiguration; - } - export interface ScheduleRunResult { - /** - * Information about the scheduled run. - */ - run?: Run; - } - export interface ScheduleRunTest { - /** - * The test's type. Must be one of the following values: BUILTIN_FUZZ: The built-in fuzz type. BUILTIN_EXPLORER: For Android, an app explorer that will traverse an Android app, interacting with it and capturing screenshots at the same time. APPIUM_JAVA_JUNIT: The Appium Java JUnit type. APPIUM_JAVA_TESTNG: The Appium Java TestNG type. APPIUM_PYTHON: The Appium Python type. APPIUM_WEB_JAVA_JUNIT: The Appium Java JUnit type for Web apps. APPIUM_WEB_JAVA_TESTNG: The Appium Java TestNG type for Web apps. APPIUM_WEB_PYTHON: The Appium Python type for Web apps. CALABASH: The Calabash type. INSTRUMENTATION: The Instrumentation type. UIAUTOMATION: The uiautomation type. UIAUTOMATOR: The uiautomator type. XCTEST: The XCode test type. XCTEST_UI: The XCode UI test type. - */ - type: TestType; - /** - * The ARN of the uploaded test that will be run. - */ - testPackageArn?: AmazonResourceName; - /** - * The test's filter. - */ - filter?: Filter; - /** - * The test's parameters, such as the following test framework parameters and fixture settings: For Calabash tests: profile: A cucumber profile, for example, "my_profile_name". tags: You can limit execution to features or scenarios that have (or don't have) certain tags, for example, "@smoke" or "@smoke,~@wip". For Appium tests (all types): appium_version: The Appium version. Currently supported values are "1.4.16", "1.6.3", "latest", and "default". “latest” will run the latest Appium version supported by Device Farm (1.6.3). For “default”, Device Farm will choose a compatible version of Appium for the device. The current behavior is to run 1.4.16 on Android devices and iOS 9 and earlier, 1.6.3 for iOS 10 and later. This behavior is subject to change. For Fuzz tests (Android only): event_count: The number of events, between 1 and 10000, that the UI fuzz test should perform. throttle: The time, in ms, between 0 and 1000, that the UI fuzz test should wait between events. seed: A seed to use for randomizing the UI fuzz test. Using the same seed value between tests ensures identical event sequences. For Explorer tests: username: A username to use if the Explorer encounters a login form. If not supplied, no username will be inserted. password: A password to use if the Explorer encounters a login form. If not supplied, no password will be inserted. For Instrumentation: filter: A test filter string. Examples: Running a single test case: "com.android.abc.Test1" Running a single test: "com.android.abc.Test1#smoke" Running multiple tests: "com.android.abc.Test1,com.android.abc.Test2" For XCTest and XCTestUI: filter: A test filter string. Examples: Running a single test class: "LoginTests" Running a multiple test classes: "LoginTests,SmokeTests" Running a single test: "LoginTests/testValid" Running multiple tests: "LoginTests/testValid,LoginTests/testInvalid" For UIAutomator: filter: A test filter string. Examples: Running a single test case: "com.android.abc.Test1" Running a single test: "com.android.abc.Test1#smoke" Running multiple tests: "com.android.abc.Test1,com.android.abc.Test2" - */ - parameters?: TestParameters; - } - export type SshPublicKey = string; - export interface StopRemoteAccessSessionRequest { - /** - * The Amazon Resource Name (ARN) of the remote access session you wish to stop. - */ - arn: AmazonResourceName; - } - export interface StopRemoteAccessSessionResult { - /** - * A container representing the metadata from the service about the remote access session you are stopping. - */ - remoteAccessSession?: RemoteAccessSession; - } - export interface StopRunRequest { - /** - * Represents the Amazon Resource Name (ARN) of the Device Farm run you wish to stop. - */ - arn: AmazonResourceName; - } - export interface StopRunResult { - /** - * The run that was stopped. - */ - run?: Run; - } - export type String = string; - export interface Suite { - /** - * The suite's ARN. - */ - arn?: AmazonResourceName; - /** - * The suite's name. - */ - name?: Name; - /** - * The suite's type. Must be one of the following values: BUILTIN_FUZZ: The built-in fuzz type. BUILTIN_EXPLORER: For Android, an app explorer that will traverse an Android app, interacting with it and capturing screenshots at the same time. APPIUM_JAVA_JUNIT: The Appium Java JUnit type. APPIUM_JAVA_TESTNG: The Appium Java TestNG type. APPIUM_PYTHON: The Appium Python type. APPIUM_WEB_JAVA_JUNIT: The Appium Java JUnit type for Web apps. APPIUM_WEB_JAVA_TESTNG: The Appium Java TestNG type for Web apps. APPIUM_WEB_PYTHON: The Appium Python type for Web apps. CALABASH: The Calabash type. INSTRUMENTATION: The Instrumentation type. UIAUTOMATION: The uiautomation type. UIAUTOMATOR: The uiautomator type. XCTEST: The XCode test type. XCTEST_UI: The XCode UI test type. - */ - type?: TestType; - /** - * When the suite was created. - */ - created?: DateTime; - /** - * The suite's status. Allowed values include: PENDING: A pending status. PENDING_CONCURRENCY: A pending concurrency status. PENDING_DEVICE: A pending device status. PROCESSING: A processing status. SCHEDULING: A scheduling status. PREPARING: A preparing status. RUNNING: A running status. COMPLETED: A completed status. STOPPING: A stopping status. - */ - status?: ExecutionStatus; - /** - * The suite's result. Allowed values include: PENDING: A pending condition. PASSED: A passing condition. WARNED: A warning condition. FAILED: A failed condition. SKIPPED: A skipped condition. ERRORED: An error condition. STOPPED: A stopped condition. - */ - result?: ExecutionResult; - /** - * The suite's start time. - */ - started?: DateTime; - /** - * The suite's stop time. - */ - stopped?: DateTime; - /** - * The suite's result counters. - */ - counters?: Counters; - /** - * A message about the suite's result. - */ - message?: Message; - /** - * Represents the total (metered or unmetered) minutes used by the test suite. - */ - deviceMinutes?: DeviceMinutes; - } - export type Suites = Suite[]; - export interface Test { - /** - * The test's ARN. - */ - arn?: AmazonResourceName; - /** - * The test's name. - */ - name?: Name; - /** - * The test's type. Must be one of the following values: BUILTIN_FUZZ: The built-in fuzz type. BUILTIN_EXPLORER: For Android, an app explorer that will traverse an Android app, interacting with it and capturing screenshots at the same time. APPIUM_JAVA_JUNIT: The Appium Java JUnit type. APPIUM_JAVA_TESTNG: The Appium Java TestNG type. APPIUM_PYTHON: The Appium Python type. APPIUM_WEB_JAVA_JUNIT: The Appium Java JUnit type for Web apps. APPIUM_WEB_JAVA_TESTNG: The Appium Java TestNG type for Web apps. APPIUM_WEB_PYTHON: The Appium Python type for Web apps. CALABASH: The Calabash type. INSTRUMENTATION: The Instrumentation type. UIAUTOMATION: The uiautomation type. UIAUTOMATOR: The uiautomator type. XCTEST: The XCode test type. XCTEST_UI: The XCode UI test type. - */ - type?: TestType; - /** - * When the test was created. - */ - created?: DateTime; - /** - * The test's status. Allowed values include: PENDING: A pending status. PENDING_CONCURRENCY: A pending concurrency status. PENDING_DEVICE: A pending device status. PROCESSING: A processing status. SCHEDULING: A scheduling status. PREPARING: A preparing status. RUNNING: A running status. COMPLETED: A completed status. STOPPING: A stopping status. - */ - status?: ExecutionStatus; - /** - * The test's result. Allowed values include: PENDING: A pending condition. PASSED: A passing condition. WARNED: A warning condition. FAILED: A failed condition. SKIPPED: A skipped condition. ERRORED: An error condition. STOPPED: A stopped condition. - */ - result?: ExecutionResult; - /** - * The test's start time. - */ - started?: DateTime; - /** - * The test's stop time. - */ - stopped?: DateTime; - /** - * The test's result counters. - */ - counters?: Counters; - /** - * A message about the test's result. - */ - message?: Message; - /** - * Represents the total (metered or unmetered) minutes used by the test. - */ - deviceMinutes?: DeviceMinutes; - } - export type TestParameters = {[key: string]: String}; - export type TestType = "BUILTIN_FUZZ"|"BUILTIN_EXPLORER"|"APPIUM_JAVA_JUNIT"|"APPIUM_JAVA_TESTNG"|"APPIUM_PYTHON"|"APPIUM_WEB_JAVA_JUNIT"|"APPIUM_WEB_JAVA_TESTNG"|"APPIUM_WEB_PYTHON"|"CALABASH"|"INSTRUMENTATION"|"UIAUTOMATION"|"UIAUTOMATOR"|"XCTEST"|"XCTEST_UI"|string; - export type Tests = Test[]; - export type TransactionIdentifier = string; - export interface TrialMinutes { - /** - * The total number of free trial minutes that the account started with. - */ - total?: Double; - /** - * The number of free trial minutes remaining in the account. - */ - remaining?: Double; - } - export type URL = string; - export interface UniqueProblem { - /** - * A message about the unique problems' result. - */ - message?: Message; - /** - * Information about the problems. - */ - problems?: Problems; - } - export type UniqueProblems = UniqueProblem[]; - export type UniqueProblemsByExecutionResultMap = {[key: string]: UniqueProblems}; - export interface UpdateDevicePoolRequest { - /** - * The Amazon Resourc Name (ARN) of the Device Farm device pool you wish to update. - */ - arn: AmazonResourceName; - /** - * A string representing the name of the device pool you wish to update. - */ - name?: Name; - /** - * A description of the device pool you wish to update. - */ - description?: Message; - /** - * Represents the rules you wish to modify for the device pool. Updating rules is optional; however, if you choose to update rules for your request, the update will replace the existing rules. - */ - rules?: Rules; - } - export interface UpdateDevicePoolResult { - /** - * The device pool you just updated. - */ - devicePool?: DevicePool; - } - export interface UpdateNetworkProfileRequest { - /** - * The Amazon Resource Name (ARN) of the project that you wish to update network profile settings. - */ - arn: AmazonResourceName; - /** - * The name of the network profile about which you are returning information. - */ - name?: Name; - /** - * The descriptoin of the network profile about which you are returning information. - */ - description?: Message; - /** - * The type of network profile you wish to return information about. Valid values are listed below. - */ - type?: NetworkProfileType; - /** - * The data throughput rate in bits per second, as an integer from 0 to 104857600. - */ - uplinkBandwidthBits?: Long; - /** - * The data throughput rate in bits per second, as an integer from 0 to 104857600. - */ - downlinkBandwidthBits?: Long; - /** - * Delay time for all packets to destination in milliseconds as an integer from 0 to 2000. - */ - uplinkDelayMs?: Long; - /** - * Delay time for all packets to destination in milliseconds as an integer from 0 to 2000. - */ - downlinkDelayMs?: Long; - /** - * Time variation in the delay of received packets in milliseconds as an integer from 0 to 2000. - */ - uplinkJitterMs?: Long; - /** - * Time variation in the delay of received packets in milliseconds as an integer from 0 to 2000. - */ - downlinkJitterMs?: Long; - /** - * Proportion of transmitted packets that fail to arrive from 0 to 100 percent. - */ - uplinkLossPercent?: PercentInteger; - /** - * Proportion of received packets that fail to arrive from 0 to 100 percent. - */ - downlinkLossPercent?: PercentInteger; - } - export interface UpdateNetworkProfileResult { - /** - * A list of the available network profiles. - */ - networkProfile?: NetworkProfile; - } - export interface UpdateProjectRequest { - /** - * The Amazon Resource Name (ARN) of the project whose name you wish to update. - */ - arn: AmazonResourceName; - /** - * A string representing the new name of the project that you are updating. - */ - name?: Name; - /** - * The number of minutes a test run in the project will execute before it times out. - */ - defaultJobTimeoutMinutes?: JobTimeoutMinutes; - } - export interface UpdateProjectResult { - /** - * The project you wish to update. - */ - project?: Project; - } - export interface Upload { - /** - * The upload's ARN. - */ - arn?: AmazonResourceName; - /** - * The upload's file name. - */ - name?: Name; - /** - * When the upload was created. - */ - created?: DateTime; - /** - * The upload's type. Must be one of the following values: ANDROID_APP: An Android upload. IOS_APP: An iOS upload. WEB_APP: A web appliction upload. EXTERNAL_DATA: An external data upload. APPIUM_JAVA_JUNIT_TEST_PACKAGE: An Appium Java JUnit test package upload. APPIUM_JAVA_TESTNG_TEST_PACKAGE: An Appium Java TestNG test package upload. APPIUM_PYTHON_TEST_PACKAGE: An Appium Python test package upload. APPIUM_WEB_JAVA_JUNIT_TEST_PACKAGE: An Appium Java JUnit test package upload. APPIUM_WEB_JAVA_TESTNG_TEST_PACKAGE: An Appium Java TestNG test package upload. APPIUM_WEB_PYTHON_TEST_PACKAGE: An Appium Python test package upload. CALABASH_TEST_PACKAGE: A Calabash test package upload. INSTRUMENTATION_TEST_PACKAGE: An instrumentation upload. UIAUTOMATION_TEST_PACKAGE: A uiautomation test package upload. UIAUTOMATOR_TEST_PACKAGE: A uiautomator test package upload. XCTEST_TEST_PACKAGE: An XCode test package upload. XCTEST_UI_TEST_PACKAGE: An XCode UI test package upload. - */ - type?: UploadType; - /** - * The upload's status. Must be one of the following values: FAILED: A failed status. INITIALIZED: An initialized status. PROCESSING: A processing status. SUCCEEDED: A succeeded status. - */ - status?: UploadStatus; - /** - * The pre-signed Amazon S3 URL that was used to store a file through a corresponding PUT request. - */ - url?: URL; - /** - * The upload's metadata. For example, for Android, this contains information that is parsed from the manifest and is displayed in the AWS Device Farm console after the associated app is uploaded. - */ - metadata?: Metadata; - /** - * The upload's content type (for example, "application/octet-stream"). - */ - contentType?: ContentType; - /** - * A message about the upload's result. - */ - message?: Message; - } - export type UploadStatus = "INITIALIZED"|"PROCESSING"|"SUCCEEDED"|"FAILED"|string; - export type UploadType = "ANDROID_APP"|"IOS_APP"|"WEB_APP"|"EXTERNAL_DATA"|"APPIUM_JAVA_JUNIT_TEST_PACKAGE"|"APPIUM_JAVA_TESTNG_TEST_PACKAGE"|"APPIUM_PYTHON_TEST_PACKAGE"|"APPIUM_WEB_JAVA_JUNIT_TEST_PACKAGE"|"APPIUM_WEB_JAVA_TESTNG_TEST_PACKAGE"|"APPIUM_WEB_PYTHON_TEST_PACKAGE"|"CALABASH_TEST_PACKAGE"|"INSTRUMENTATION_TEST_PACKAGE"|"UIAUTOMATION_TEST_PACKAGE"|"UIAUTOMATOR_TEST_PACKAGE"|"XCTEST_TEST_PACKAGE"|"XCTEST_UI_TEST_PACKAGE"|string; - export type Uploads = Upload[]; - /** - * A string in YYYY-MM-DD format that represents the latest possible API version that can be used in this service. Specify 'latest' to use the latest possible version. - */ - export type apiVersion = "2015-06-23"|"latest"|string; - export interface ClientApiVersions { - /** - * A string in YYYY-MM-DD format that represents the latest possible API version that can be used in this service. Specify 'latest' to use the latest possible version. - */ - apiVersion?: apiVersion; - } - export type ClientConfiguration = ServiceConfigurationOptions & ClientApiVersions; - /** - * Contains interfaces for use with the DeviceFarm client. - */ - export import Types = DeviceFarm; -} -export = DeviceFarm; diff --git a/workshops/monte-carlo-on-ec2-spot-fleet/src/web/node_modules/aws-sdk/clients/devicefarm.js b/workshops/monte-carlo-on-ec2-spot-fleet/src/web/node_modules/aws-sdk/clients/devicefarm.js deleted file mode 100644 index 8b828a13..00000000 --- a/workshops/monte-carlo-on-ec2-spot-fleet/src/web/node_modules/aws-sdk/clients/devicefarm.js +++ /dev/null @@ -1,18 +0,0 @@ -require('../lib/node_loader'); -var AWS = require('../lib/core'); -var Service = AWS.Service; -var apiLoader = AWS.apiLoader; - -apiLoader.services['devicefarm'] = {}; -AWS.DeviceFarm = Service.defineService('devicefarm', ['2015-06-23']); -Object.defineProperty(apiLoader.services['devicefarm'], '2015-06-23', { - get: function get() { - var model = require('../apis/devicefarm-2015-06-23.min.json'); - model.paginators = require('../apis/devicefarm-2015-06-23.paginators.json').pagination; - return model; - }, - enumerable: true, - configurable: true -}); - -module.exports = AWS.DeviceFarm; diff --git a/workshops/monte-carlo-on-ec2-spot-fleet/src/web/node_modules/aws-sdk/clients/directconnect.d.ts b/workshops/monte-carlo-on-ec2-spot-fleet/src/web/node_modules/aws-sdk/clients/directconnect.d.ts deleted file mode 100644 index cc43a935..00000000 --- a/workshops/monte-carlo-on-ec2-spot-fleet/src/web/node_modules/aws-sdk/clients/directconnect.d.ts +++ /dev/null @@ -1,968 +0,0 @@ -import {Request} from '../lib/request'; -import {Response} from '../lib/response'; -import {AWSError} from '../lib/error'; -import {Service} from '../lib/service'; -import {ServiceConfigurationOptions} from '../lib/service'; -import {ConfigBase as Config} from '../lib/config'; -interface Blob {} -declare class DirectConnect extends Service { - /** - * Constructs a service object. This object has one method for each API operation. - */ - constructor(options?: DirectConnect.Types.ClientConfiguration) - config: Config & DirectConnect.Types.ClientConfiguration; - /** - * Deprecated in favor of AllocateHostedConnection. Creates a hosted connection on an interconnect. Allocates a VLAN number and a specified amount of bandwidth for use by a hosted connection on the given interconnect. This is intended for use by AWS Direct Connect partners only. - */ - allocateConnectionOnInterconnect(params: DirectConnect.Types.AllocateConnectionOnInterconnectRequest, callback?: (err: AWSError, data: DirectConnect.Types.Connection) => void): Request; - /** - * Deprecated in favor of AllocateHostedConnection. Creates a hosted connection on an interconnect. Allocates a VLAN number and a specified amount of bandwidth for use by a hosted connection on the given interconnect. This is intended for use by AWS Direct Connect partners only. - */ - allocateConnectionOnInterconnect(callback?: (err: AWSError, data: DirectConnect.Types.Connection) => void): Request; - /** - * Creates a hosted connection on an interconnect or a link aggregation group (LAG). Allocates a VLAN number and a specified amount of bandwidth for use by a hosted connection on the given interconnect or LAG. This is intended for use by AWS Direct Connect partners only. - */ - allocateHostedConnection(params: DirectConnect.Types.AllocateHostedConnectionRequest, callback?: (err: AWSError, data: DirectConnect.Types.Connection) => void): Request; - /** - * Creates a hosted connection on an interconnect or a link aggregation group (LAG). Allocates a VLAN number and a specified amount of bandwidth for use by a hosted connection on the given interconnect or LAG. This is intended for use by AWS Direct Connect partners only. - */ - allocateHostedConnection(callback?: (err: AWSError, data: DirectConnect.Types.Connection) => void): Request; - /** - * Provisions a private virtual interface to be owned by another AWS customer. Virtual interfaces created using this action must be confirmed by the virtual interface owner by using the ConfirmPrivateVirtualInterface action. Until then, the virtual interface will be in 'Confirming' state, and will not be available for handling traffic. - */ - allocatePrivateVirtualInterface(params: DirectConnect.Types.AllocatePrivateVirtualInterfaceRequest, callback?: (err: AWSError, data: DirectConnect.Types.VirtualInterface) => void): Request; - /** - * Provisions a private virtual interface to be owned by another AWS customer. Virtual interfaces created using this action must be confirmed by the virtual interface owner by using the ConfirmPrivateVirtualInterface action. Until then, the virtual interface will be in 'Confirming' state, and will not be available for handling traffic. - */ - allocatePrivateVirtualInterface(callback?: (err: AWSError, data: DirectConnect.Types.VirtualInterface) => void): Request; - /** - * Provisions a public virtual interface to be owned by a different customer. The owner of a connection calls this function to provision a public virtual interface which will be owned by another AWS customer. Virtual interfaces created using this function must be confirmed by the virtual interface owner by calling ConfirmPublicVirtualInterface. Until this step has been completed, the virtual interface will be in 'Confirming' state, and will not be available for handling traffic. When creating an IPv6 public virtual interface (addressFamily is 'ipv6'), the customer and amazon address fields should be left blank to use auto-assigned IPv6 space. Custom IPv6 Addresses are currently not supported. - */ - allocatePublicVirtualInterface(params: DirectConnect.Types.AllocatePublicVirtualInterfaceRequest, callback?: (err: AWSError, data: DirectConnect.Types.VirtualInterface) => void): Request; - /** - * Provisions a public virtual interface to be owned by a different customer. The owner of a connection calls this function to provision a public virtual interface which will be owned by another AWS customer. Virtual interfaces created using this function must be confirmed by the virtual interface owner by calling ConfirmPublicVirtualInterface. Until this step has been completed, the virtual interface will be in 'Confirming' state, and will not be available for handling traffic. When creating an IPv6 public virtual interface (addressFamily is 'ipv6'), the customer and amazon address fields should be left blank to use auto-assigned IPv6 space. Custom IPv6 Addresses are currently not supported. - */ - allocatePublicVirtualInterface(callback?: (err: AWSError, data: DirectConnect.Types.VirtualInterface) => void): Request; - /** - * Associates an existing connection with a link aggregation group (LAG). The connection is interrupted and re-established as a member of the LAG (connectivity to AWS will be interrupted). The connection must be hosted on the same AWS Direct Connect endpoint as the LAG, and its bandwidth must match the bandwidth for the LAG. You can reassociate a connection that's currently associated with a different LAG; however, if removing the connection will cause the original LAG to fall below its setting for minimum number of operational connections, the request fails. Any virtual interfaces that are directly associated with the connection are automatically re-associated with the LAG. If the connection was originally associated with a different LAG, the virtual interfaces remain associated with the original LAG. For interconnects, any hosted connections are automatically re-associated with the LAG. If the interconnect was originally associated with a different LAG, the hosted connections remain associated with the original LAG. - */ - associateConnectionWithLag(params: DirectConnect.Types.AssociateConnectionWithLagRequest, callback?: (err: AWSError, data: DirectConnect.Types.Connection) => void): Request; - /** - * Associates an existing connection with a link aggregation group (LAG). The connection is interrupted and re-established as a member of the LAG (connectivity to AWS will be interrupted). The connection must be hosted on the same AWS Direct Connect endpoint as the LAG, and its bandwidth must match the bandwidth for the LAG. You can reassociate a connection that's currently associated with a different LAG; however, if removing the connection will cause the original LAG to fall below its setting for minimum number of operational connections, the request fails. Any virtual interfaces that are directly associated with the connection are automatically re-associated with the LAG. If the connection was originally associated with a different LAG, the virtual interfaces remain associated with the original LAG. For interconnects, any hosted connections are automatically re-associated with the LAG. If the interconnect was originally associated with a different LAG, the hosted connections remain associated with the original LAG. - */ - associateConnectionWithLag(callback?: (err: AWSError, data: DirectConnect.Types.Connection) => void): Request; - /** - * Associates a hosted connection and its virtual interfaces with a link aggregation group (LAG) or interconnect. If the target interconnect or LAG has an existing hosted connection with a conflicting VLAN number or IP address, the operation fails. This action temporarily interrupts the hosted connection's connectivity to AWS as it is being migrated. This is intended for use by AWS Direct Connect partners only. - */ - associateHostedConnection(params: DirectConnect.Types.AssociateHostedConnectionRequest, callback?: (err: AWSError, data: DirectConnect.Types.Connection) => void): Request; - /** - * Associates a hosted connection and its virtual interfaces with a link aggregation group (LAG) or interconnect. If the target interconnect or LAG has an existing hosted connection with a conflicting VLAN number or IP address, the operation fails. This action temporarily interrupts the hosted connection's connectivity to AWS as it is being migrated. This is intended for use by AWS Direct Connect partners only. - */ - associateHostedConnection(callback?: (err: AWSError, data: DirectConnect.Types.Connection) => void): Request; - /** - * Associates a virtual interface with a specified link aggregation group (LAG) or connection. Connectivity to AWS is temporarily interrupted as the virtual interface is being migrated. If the target connection or LAG has an associated virtual interface with a conflicting VLAN number or a conflicting IP address, the operation fails. Virtual interfaces associated with a hosted connection cannot be associated with a LAG; hosted connections must be migrated along with their virtual interfaces using AssociateHostedConnection. Hosted virtual interfaces (an interface for which the owner of the connection is not the owner of physical connection) can only be reassociated by the owner of the physical connection. - */ - associateVirtualInterface(params: DirectConnect.Types.AssociateVirtualInterfaceRequest, callback?: (err: AWSError, data: DirectConnect.Types.VirtualInterface) => void): Request; - /** - * Associates a virtual interface with a specified link aggregation group (LAG) or connection. Connectivity to AWS is temporarily interrupted as the virtual interface is being migrated. If the target connection or LAG has an associated virtual interface with a conflicting VLAN number or a conflicting IP address, the operation fails. Virtual interfaces associated with a hosted connection cannot be associated with a LAG; hosted connections must be migrated along with their virtual interfaces using AssociateHostedConnection. Hosted virtual interfaces (an interface for which the owner of the connection is not the owner of physical connection) can only be reassociated by the owner of the physical connection. - */ - associateVirtualInterface(callback?: (err: AWSError, data: DirectConnect.Types.VirtualInterface) => void): Request; - /** - * Confirm the creation of a hosted connection on an interconnect. Upon creation, the hosted connection is initially in the 'Ordering' state, and will remain in this state until the owner calls ConfirmConnection to confirm creation of the hosted connection. - */ - confirmConnection(params: DirectConnect.Types.ConfirmConnectionRequest, callback?: (err: AWSError, data: DirectConnect.Types.ConfirmConnectionResponse) => void): Request; - /** - * Confirm the creation of a hosted connection on an interconnect. Upon creation, the hosted connection is initially in the 'Ordering' state, and will remain in this state until the owner calls ConfirmConnection to confirm creation of the hosted connection. - */ - confirmConnection(callback?: (err: AWSError, data: DirectConnect.Types.ConfirmConnectionResponse) => void): Request; - /** - * Accept ownership of a private virtual interface created by another customer. After the virtual interface owner calls this function, the virtual interface will be created and attached to the given virtual private gateway, and will be available for handling traffic. - */ - confirmPrivateVirtualInterface(params: DirectConnect.Types.ConfirmPrivateVirtualInterfaceRequest, callback?: (err: AWSError, data: DirectConnect.Types.ConfirmPrivateVirtualInterfaceResponse) => void): Request; - /** - * Accept ownership of a private virtual interface created by another customer. After the virtual interface owner calls this function, the virtual interface will be created and attached to the given virtual private gateway, and will be available for handling traffic. - */ - confirmPrivateVirtualInterface(callback?: (err: AWSError, data: DirectConnect.Types.ConfirmPrivateVirtualInterfaceResponse) => void): Request; - /** - * Accept ownership of a public virtual interface created by another customer. After the virtual interface owner calls this function, the specified virtual interface will be created and made available for handling traffic. - */ - confirmPublicVirtualInterface(params: DirectConnect.Types.ConfirmPublicVirtualInterfaceRequest, callback?: (err: AWSError, data: DirectConnect.Types.ConfirmPublicVirtualInterfaceResponse) => void): Request; - /** - * Accept ownership of a public virtual interface created by another customer. After the virtual interface owner calls this function, the specified virtual interface will be created and made available for handling traffic. - */ - confirmPublicVirtualInterface(callback?: (err: AWSError, data: DirectConnect.Types.ConfirmPublicVirtualInterfaceResponse) => void): Request; - /** - * Creates a new BGP peer on a specified virtual interface. The BGP peer cannot be in the same address family (IPv4/IPv6) of an existing BGP peer on the virtual interface. You must create a BGP peer for the corresponding address family in order to access AWS resources that also use that address family. When creating a IPv6 BGP peer, the Amazon address and customer address fields must be left blank. IPv6 addresses are automatically assigned from Amazon's pool of IPv6 addresses; you cannot specify custom IPv6 addresses. For a public virtual interface, the Autonomous System Number (ASN) must be private or already whitelisted for the virtual interface. - */ - createBGPPeer(params: DirectConnect.Types.CreateBGPPeerRequest, callback?: (err: AWSError, data: DirectConnect.Types.CreateBGPPeerResponse) => void): Request; - /** - * Creates a new BGP peer on a specified virtual interface. The BGP peer cannot be in the same address family (IPv4/IPv6) of an existing BGP peer on the virtual interface. You must create a BGP peer for the corresponding address family in order to access AWS resources that also use that address family. When creating a IPv6 BGP peer, the Amazon address and customer address fields must be left blank. IPv6 addresses are automatically assigned from Amazon's pool of IPv6 addresses; you cannot specify custom IPv6 addresses. For a public virtual interface, the Autonomous System Number (ASN) must be private or already whitelisted for the virtual interface. - */ - createBGPPeer(callback?: (err: AWSError, data: DirectConnect.Types.CreateBGPPeerResponse) => void): Request; - /** - * Creates a new connection between the customer network and a specific AWS Direct Connect location. A connection links your internal network to an AWS Direct Connect location over a standard 1 gigabit or 10 gigabit Ethernet fiber-optic cable. One end of the cable is connected to your router, the other to an AWS Direct Connect router. An AWS Direct Connect location provides access to Amazon Web Services in the region it is associated with. You can establish connections with AWS Direct Connect locations in multiple regions, but a connection in one region does not provide connectivity to other regions. You can automatically add the new connection to a link aggregation group (LAG) by specifying a LAG ID in the request. This ensures that the new connection is allocated on the same AWS Direct Connect endpoint that hosts the specified LAG. If there are no available ports on the endpoint, the request fails and no connection will be created. - */ - createConnection(params: DirectConnect.Types.CreateConnectionRequest, callback?: (err: AWSError, data: DirectConnect.Types.Connection) => void): Request; - /** - * Creates a new connection between the customer network and a specific AWS Direct Connect location. A connection links your internal network to an AWS Direct Connect location over a standard 1 gigabit or 10 gigabit Ethernet fiber-optic cable. One end of the cable is connected to your router, the other to an AWS Direct Connect router. An AWS Direct Connect location provides access to Amazon Web Services in the region it is associated with. You can establish connections with AWS Direct Connect locations in multiple regions, but a connection in one region does not provide connectivity to other regions. You can automatically add the new connection to a link aggregation group (LAG) by specifying a LAG ID in the request. This ensures that the new connection is allocated on the same AWS Direct Connect endpoint that hosts the specified LAG. If there are no available ports on the endpoint, the request fails and no connection will be created. - */ - createConnection(callback?: (err: AWSError, data: DirectConnect.Types.Connection) => void): Request; - /** - * Creates a new interconnect between a AWS Direct Connect partner's network and a specific AWS Direct Connect location. An interconnect is a connection which is capable of hosting other connections. The AWS Direct Connect partner can use an interconnect to provide sub-1Gbps AWS Direct Connect service to tier 2 customers who do not have their own connections. Like a standard connection, an interconnect links the AWS Direct Connect partner's network to an AWS Direct Connect location over a standard 1 Gbps or 10 Gbps Ethernet fiber-optic cable. One end is connected to the partner's router, the other to an AWS Direct Connect router. You can automatically add the new interconnect to a link aggregation group (LAG) by specifying a LAG ID in the request. This ensures that the new interconnect is allocated on the same AWS Direct Connect endpoint that hosts the specified LAG. If there are no available ports on the endpoint, the request fails and no interconnect will be created. For each end customer, the AWS Direct Connect partner provisions a connection on their interconnect by calling AllocateConnectionOnInterconnect. The end customer can then connect to AWS resources by creating a virtual interface on their connection, using the VLAN assigned to them by the AWS Direct Connect partner. This is intended for use by AWS Direct Connect partners only. - */ - createInterconnect(params: DirectConnect.Types.CreateInterconnectRequest, callback?: (err: AWSError, data: DirectConnect.Types.Interconnect) => void): Request; - /** - * Creates a new interconnect between a AWS Direct Connect partner's network and a specific AWS Direct Connect location. An interconnect is a connection which is capable of hosting other connections. The AWS Direct Connect partner can use an interconnect to provide sub-1Gbps AWS Direct Connect service to tier 2 customers who do not have their own connections. Like a standard connection, an interconnect links the AWS Direct Connect partner's network to an AWS Direct Connect location over a standard 1 Gbps or 10 Gbps Ethernet fiber-optic cable. One end is connected to the partner's router, the other to an AWS Direct Connect router. You can automatically add the new interconnect to a link aggregation group (LAG) by specifying a LAG ID in the request. This ensures that the new interconnect is allocated on the same AWS Direct Connect endpoint that hosts the specified LAG. If there are no available ports on the endpoint, the request fails and no interconnect will be created. For each end customer, the AWS Direct Connect partner provisions a connection on their interconnect by calling AllocateConnectionOnInterconnect. The end customer can then connect to AWS resources by creating a virtual interface on their connection, using the VLAN assigned to them by the AWS Direct Connect partner. This is intended for use by AWS Direct Connect partners only. - */ - createInterconnect(callback?: (err: AWSError, data: DirectConnect.Types.Interconnect) => void): Request; - /** - * Creates a new link aggregation group (LAG) with the specified number of bundled physical connections between the customer network and a specific AWS Direct Connect location. A LAG is a logical interface that uses the Link Aggregation Control Protocol (LACP) to aggregate multiple 1 gigabit or 10 gigabit interfaces, allowing you to treat them as a single interface. All connections in a LAG must use the same bandwidth (for example, 10 Gbps), and must terminate at the same AWS Direct Connect endpoint. You can have up to 10 connections per LAG. Regardless of this limit, if you request more connections for the LAG than AWS Direct Connect can allocate on a single endpoint, no LAG is created. You can specify an existing physical connection or interconnect to include in the LAG (which counts towards the total number of connections). Doing so interrupts the current physical connection or hosted connections, and re-establishes them as a member of the LAG. The LAG will be created on the same AWS Direct Connect endpoint to which the connection terminates. Any virtual interfaces associated with the connection are automatically disassociated and re-associated with the LAG. The connection ID does not change. If the AWS account used to create a LAG is a registered AWS Direct Connect partner, the LAG is automatically enabled to host sub-connections. For a LAG owned by a partner, any associated virtual interfaces cannot be directly configured. - */ - createLag(params: DirectConnect.Types.CreateLagRequest, callback?: (err: AWSError, data: DirectConnect.Types.Lag) => void): Request; - /** - * Creates a new link aggregation group (LAG) with the specified number of bundled physical connections between the customer network and a specific AWS Direct Connect location. A LAG is a logical interface that uses the Link Aggregation Control Protocol (LACP) to aggregate multiple 1 gigabit or 10 gigabit interfaces, allowing you to treat them as a single interface. All connections in a LAG must use the same bandwidth (for example, 10 Gbps), and must terminate at the same AWS Direct Connect endpoint. You can have up to 10 connections per LAG. Regardless of this limit, if you request more connections for the LAG than AWS Direct Connect can allocate on a single endpoint, no LAG is created. You can specify an existing physical connection or interconnect to include in the LAG (which counts towards the total number of connections). Doing so interrupts the current physical connection or hosted connections, and re-establishes them as a member of the LAG. The LAG will be created on the same AWS Direct Connect endpoint to which the connection terminates. Any virtual interfaces associated with the connection are automatically disassociated and re-associated with the LAG. The connection ID does not change. If the AWS account used to create a LAG is a registered AWS Direct Connect partner, the LAG is automatically enabled to host sub-connections. For a LAG owned by a partner, any associated virtual interfaces cannot be directly configured. - */ - createLag(callback?: (err: AWSError, data: DirectConnect.Types.Lag) => void): Request; - /** - * Creates a new private virtual interface. A virtual interface is the VLAN that transports AWS Direct Connect traffic. A private virtual interface supports sending traffic to a single virtual private cloud (VPC). - */ - createPrivateVirtualInterface(params: DirectConnect.Types.CreatePrivateVirtualInterfaceRequest, callback?: (err: AWSError, data: DirectConnect.Types.VirtualInterface) => void): Request; - /** - * Creates a new private virtual interface. A virtual interface is the VLAN that transports AWS Direct Connect traffic. A private virtual interface supports sending traffic to a single virtual private cloud (VPC). - */ - createPrivateVirtualInterface(callback?: (err: AWSError, data: DirectConnect.Types.VirtualInterface) => void): Request; - /** - * Creates a new public virtual interface. A virtual interface is the VLAN that transports AWS Direct Connect traffic. A public virtual interface supports sending traffic to public services of AWS such as Amazon Simple Storage Service (Amazon S3). When creating an IPv6 public virtual interface (addressFamily is 'ipv6'), the customer and amazon address fields should be left blank to use auto-assigned IPv6 space. Custom IPv6 Addresses are currently not supported. - */ - createPublicVirtualInterface(params: DirectConnect.Types.CreatePublicVirtualInterfaceRequest, callback?: (err: AWSError, data: DirectConnect.Types.VirtualInterface) => void): Request; - /** - * Creates a new public virtual interface. A virtual interface is the VLAN that transports AWS Direct Connect traffic. A public virtual interface supports sending traffic to public services of AWS such as Amazon Simple Storage Service (Amazon S3). When creating an IPv6 public virtual interface (addressFamily is 'ipv6'), the customer and amazon address fields should be left blank to use auto-assigned IPv6 space. Custom IPv6 Addresses are currently not supported. - */ - createPublicVirtualInterface(callback?: (err: AWSError, data: DirectConnect.Types.VirtualInterface) => void): Request; - /** - * Deletes a BGP peer on the specified virtual interface that matches the specified customer address and ASN. You cannot delete the last BGP peer from a virtual interface. - */ - deleteBGPPeer(params: DirectConnect.Types.DeleteBGPPeerRequest, callback?: (err: AWSError, data: DirectConnect.Types.DeleteBGPPeerResponse) => void): Request; - /** - * Deletes a BGP peer on the specified virtual interface that matches the specified customer address and ASN. You cannot delete the last BGP peer from a virtual interface. - */ - deleteBGPPeer(callback?: (err: AWSError, data: DirectConnect.Types.DeleteBGPPeerResponse) => void): Request; - /** - * Deletes the connection. Deleting a connection only stops the AWS Direct Connect port hour and data transfer charges. You need to cancel separately with the providers any services or charges for cross-connects or network circuits that connect you to the AWS Direct Connect location. - */ - deleteConnection(params: DirectConnect.Types.DeleteConnectionRequest, callback?: (err: AWSError, data: DirectConnect.Types.Connection) => void): Request; - /** - * Deletes the connection. Deleting a connection only stops the AWS Direct Connect port hour and data transfer charges. You need to cancel separately with the providers any services or charges for cross-connects or network circuits that connect you to the AWS Direct Connect location. - */ - deleteConnection(callback?: (err: AWSError, data: DirectConnect.Types.Connection) => void): Request; - /** - * Deletes the specified interconnect. This is intended for use by AWS Direct Connect partners only. - */ - deleteInterconnect(params: DirectConnect.Types.DeleteInterconnectRequest, callback?: (err: AWSError, data: DirectConnect.Types.DeleteInterconnectResponse) => void): Request; - /** - * Deletes the specified interconnect. This is intended for use by AWS Direct Connect partners only. - */ - deleteInterconnect(callback?: (err: AWSError, data: DirectConnect.Types.DeleteInterconnectResponse) => void): Request; - /** - * Deletes a link aggregation group (LAG). You cannot delete a LAG if it has active virtual interfaces or hosted connections. - */ - deleteLag(params: DirectConnect.Types.DeleteLagRequest, callback?: (err: AWSError, data: DirectConnect.Types.Lag) => void): Request; - /** - * Deletes a link aggregation group (LAG). You cannot delete a LAG if it has active virtual interfaces or hosted connections. - */ - deleteLag(callback?: (err: AWSError, data: DirectConnect.Types.Lag) => void): Request; - /** - * Deletes a virtual interface. - */ - deleteVirtualInterface(params: DirectConnect.Types.DeleteVirtualInterfaceRequest, callback?: (err: AWSError, data: DirectConnect.Types.DeleteVirtualInterfaceResponse) => void): Request; - /** - * Deletes a virtual interface. - */ - deleteVirtualInterface(callback?: (err: AWSError, data: DirectConnect.Types.DeleteVirtualInterfaceResponse) => void): Request; - /** - * Deprecated in favor of DescribeLoa. Returns the LOA-CFA for a Connection. The Letter of Authorization - Connecting Facility Assignment (LOA-CFA) is a document that your APN partner or service provider uses when establishing your cross connect to AWS at the colocation facility. For more information, see Requesting Cross Connects at AWS Direct Connect Locations in the AWS Direct Connect user guide. - */ - describeConnectionLoa(params: DirectConnect.Types.DescribeConnectionLoaRequest, callback?: (err: AWSError, data: DirectConnect.Types.DescribeConnectionLoaResponse) => void): Request; - /** - * Deprecated in favor of DescribeLoa. Returns the LOA-CFA for a Connection. The Letter of Authorization - Connecting Facility Assignment (LOA-CFA) is a document that your APN partner or service provider uses when establishing your cross connect to AWS at the colocation facility. For more information, see Requesting Cross Connects at AWS Direct Connect Locations in the AWS Direct Connect user guide. - */ - describeConnectionLoa(callback?: (err: AWSError, data: DirectConnect.Types.DescribeConnectionLoaResponse) => void): Request; - /** - * Displays all connections in this region. If a connection ID is provided, the call returns only that particular connection. - */ - describeConnections(params: DirectConnect.Types.DescribeConnectionsRequest, callback?: (err: AWSError, data: DirectConnect.Types.Connections) => void): Request; - /** - * Displays all connections in this region. If a connection ID is provided, the call returns only that particular connection. - */ - describeConnections(callback?: (err: AWSError, data: DirectConnect.Types.Connections) => void): Request; - /** - * Deprecated in favor of DescribeHostedConnections. Returns a list of connections that have been provisioned on the given interconnect. This is intended for use by AWS Direct Connect partners only. - */ - describeConnectionsOnInterconnect(params: DirectConnect.Types.DescribeConnectionsOnInterconnectRequest, callback?: (err: AWSError, data: DirectConnect.Types.Connections) => void): Request; - /** - * Deprecated in favor of DescribeHostedConnections. Returns a list of connections that have been provisioned on the given interconnect. This is intended for use by AWS Direct Connect partners only. - */ - describeConnectionsOnInterconnect(callback?: (err: AWSError, data: DirectConnect.Types.Connections) => void): Request; - /** - * Returns a list of hosted connections that have been provisioned on the given interconnect or link aggregation group (LAG). This is intended for use by AWS Direct Connect partners only. - */ - describeHostedConnections(params: DirectConnect.Types.DescribeHostedConnectionsRequest, callback?: (err: AWSError, data: DirectConnect.Types.Connections) => void): Request; - /** - * Returns a list of hosted connections that have been provisioned on the given interconnect or link aggregation group (LAG). This is intended for use by AWS Direct Connect partners only. - */ - describeHostedConnections(callback?: (err: AWSError, data: DirectConnect.Types.Connections) => void): Request; - /** - * Deprecated in favor of DescribeLoa. Returns the LOA-CFA for an Interconnect. The Letter of Authorization - Connecting Facility Assignment (LOA-CFA) is a document that is used when establishing your cross connect to AWS at the colocation facility. For more information, see Requesting Cross Connects at AWS Direct Connect Locations in the AWS Direct Connect user guide. - */ - describeInterconnectLoa(params: DirectConnect.Types.DescribeInterconnectLoaRequest, callback?: (err: AWSError, data: DirectConnect.Types.DescribeInterconnectLoaResponse) => void): Request; - /** - * Deprecated in favor of DescribeLoa. Returns the LOA-CFA for an Interconnect. The Letter of Authorization - Connecting Facility Assignment (LOA-CFA) is a document that is used when establishing your cross connect to AWS at the colocation facility. For more information, see Requesting Cross Connects at AWS Direct Connect Locations in the AWS Direct Connect user guide. - */ - describeInterconnectLoa(callback?: (err: AWSError, data: DirectConnect.Types.DescribeInterconnectLoaResponse) => void): Request; - /** - * Returns a list of interconnects owned by the AWS account. If an interconnect ID is provided, it will only return this particular interconnect. - */ - describeInterconnects(params: DirectConnect.Types.DescribeInterconnectsRequest, callback?: (err: AWSError, data: DirectConnect.Types.Interconnects) => void): Request; - /** - * Returns a list of interconnects owned by the AWS account. If an interconnect ID is provided, it will only return this particular interconnect. - */ - describeInterconnects(callback?: (err: AWSError, data: DirectConnect.Types.Interconnects) => void): Request; - /** - * Describes the link aggregation groups (LAGs) in your account. If a LAG ID is provided, only information about the specified LAG is returned. - */ - describeLags(params: DirectConnect.Types.DescribeLagsRequest, callback?: (err: AWSError, data: DirectConnect.Types.Lags) => void): Request; - /** - * Describes the link aggregation groups (LAGs) in your account. If a LAG ID is provided, only information about the specified LAG is returned. - */ - describeLags(callback?: (err: AWSError, data: DirectConnect.Types.Lags) => void): Request; - /** - * Returns the LOA-CFA for a connection, interconnect, or link aggregation group (LAG). The Letter of Authorization - Connecting Facility Assignment (LOA-CFA) is a document that is used when establishing your cross connect to AWS at the colocation facility. For more information, see Requesting Cross Connects at AWS Direct Connect Locations in the AWS Direct Connect user guide. - */ - describeLoa(params: DirectConnect.Types.DescribeLoaRequest, callback?: (err: AWSError, data: DirectConnect.Types.Loa) => void): Request; - /** - * Returns the LOA-CFA for a connection, interconnect, or link aggregation group (LAG). The Letter of Authorization - Connecting Facility Assignment (LOA-CFA) is a document that is used when establishing your cross connect to AWS at the colocation facility. For more information, see Requesting Cross Connects at AWS Direct Connect Locations in the AWS Direct Connect user guide. - */ - describeLoa(callback?: (err: AWSError, data: DirectConnect.Types.Loa) => void): Request; - /** - * Returns the list of AWS Direct Connect locations in the current AWS region. These are the locations that may be selected when calling CreateConnection or CreateInterconnect. - */ - describeLocations(callback?: (err: AWSError, data: DirectConnect.Types.Locations) => void): Request; - /** - * Describes the tags associated with the specified Direct Connect resources. - */ - describeTags(params: DirectConnect.Types.DescribeTagsRequest, callback?: (err: AWSError, data: DirectConnect.Types.DescribeTagsResponse) => void): Request; - /** - * Describes the tags associated with the specified Direct Connect resources. - */ - describeTags(callback?: (err: AWSError, data: DirectConnect.Types.DescribeTagsResponse) => void): Request; - /** - * Returns a list of virtual private gateways owned by the AWS account. You can create one or more AWS Direct Connect private virtual interfaces linking to a virtual private gateway. A virtual private gateway can be managed via Amazon Virtual Private Cloud (VPC) console or the EC2 CreateVpnGateway action. - */ - describeVirtualGateways(callback?: (err: AWSError, data: DirectConnect.Types.VirtualGateways) => void): Request; - /** - * Displays all virtual interfaces for an AWS account. Virtual interfaces deleted fewer than 15 minutes before you make the request are also returned. If you specify a connection ID, only the virtual interfaces associated with the connection are returned. If you specify a virtual interface ID, then only a single virtual interface is returned. A virtual interface (VLAN) transmits the traffic between the AWS Direct Connect location and the customer. - */ - describeVirtualInterfaces(params: DirectConnect.Types.DescribeVirtualInterfacesRequest, callback?: (err: AWSError, data: DirectConnect.Types.VirtualInterfaces) => void): Request; - /** - * Displays all virtual interfaces for an AWS account. Virtual interfaces deleted fewer than 15 minutes before you make the request are also returned. If you specify a connection ID, only the virtual interfaces associated with the connection are returned. If you specify a virtual interface ID, then only a single virtual interface is returned. A virtual interface (VLAN) transmits the traffic between the AWS Direct Connect location and the customer. - */ - describeVirtualInterfaces(callback?: (err: AWSError, data: DirectConnect.Types.VirtualInterfaces) => void): Request; - /** - * Disassociates a connection from a link aggregation group (LAG). The connection is interrupted and re-established as a standalone connection (the connection is not deleted; to delete the connection, use the DeleteConnection request). If the LAG has associated virtual interfaces or hosted connections, they remain associated with the LAG. A disassociated connection owned by an AWS Direct Connect partner is automatically converted to an interconnect. If disassociating the connection will cause the LAG to fall below its setting for minimum number of operational connections, the request fails, except when it's the last member of the LAG. If all connections are disassociated, the LAG continues to exist as an empty LAG with no physical connections. - */ - disassociateConnectionFromLag(params: DirectConnect.Types.DisassociateConnectionFromLagRequest, callback?: (err: AWSError, data: DirectConnect.Types.Connection) => void): Request; - /** - * Disassociates a connection from a link aggregation group (LAG). The connection is interrupted and re-established as a standalone connection (the connection is not deleted; to delete the connection, use the DeleteConnection request). If the LAG has associated virtual interfaces or hosted connections, they remain associated with the LAG. A disassociated connection owned by an AWS Direct Connect partner is automatically converted to an interconnect. If disassociating the connection will cause the LAG to fall below its setting for minimum number of operational connections, the request fails, except when it's the last member of the LAG. If all connections are disassociated, the LAG continues to exist as an empty LAG with no physical connections. - */ - disassociateConnectionFromLag(callback?: (err: AWSError, data: DirectConnect.Types.Connection) => void): Request; - /** - * Adds the specified tags to the specified Direct Connect resource. Each Direct Connect resource can have a maximum of 50 tags. Each tag consists of a key and an optional value. If a tag with the same key is already associated with the Direct Connect resource, this action updates its value. - */ - tagResource(params: DirectConnect.Types.TagResourceRequest, callback?: (err: AWSError, data: DirectConnect.Types.TagResourceResponse) => void): Request; - /** - * Adds the specified tags to the specified Direct Connect resource. Each Direct Connect resource can have a maximum of 50 tags. Each tag consists of a key and an optional value. If a tag with the same key is already associated with the Direct Connect resource, this action updates its value. - */ - tagResource(callback?: (err: AWSError, data: DirectConnect.Types.TagResourceResponse) => void): Request; - /** - * Removes one or more tags from the specified Direct Connect resource. - */ - untagResource(params: DirectConnect.Types.UntagResourceRequest, callback?: (err: AWSError, data: DirectConnect.Types.UntagResourceResponse) => void): Request; - /** - * Removes one or more tags from the specified Direct Connect resource. - */ - untagResource(callback?: (err: AWSError, data: DirectConnect.Types.UntagResourceResponse) => void): Request; - /** - * Updates the attributes of a link aggregation group (LAG). You can update the following attributes: The name of the LAG. The value for the minimum number of connections that must be operational for the LAG itself to be operational. When you create a LAG, the default value for the minimum number of operational connections is zero (0). If you update this value, and the number of operational connections falls below the specified value, the LAG will automatically go down to avoid overutilization of the remaining connections. Adjusting this value should be done with care as it could force the LAG down if the value is set higher than the current number of operational connections. - */ - updateLag(params: DirectConnect.Types.UpdateLagRequest, callback?: (err: AWSError, data: DirectConnect.Types.Lag) => void): Request; - /** - * Updates the attributes of a link aggregation group (LAG). You can update the following attributes: The name of the LAG. The value for the minimum number of connections that must be operational for the LAG itself to be operational. When you create a LAG, the default value for the minimum number of operational connections is zero (0). If you update this value, and the number of operational connections falls below the specified value, the LAG will automatically go down to avoid overutilization of the remaining connections. Adjusting this value should be done with care as it could force the LAG down if the value is set higher than the current number of operational connections. - */ - updateLag(callback?: (err: AWSError, data: DirectConnect.Types.Lag) => void): Request; -} -declare namespace DirectConnect { - export type ASN = number; - export type AddressFamily = "ipv4"|"ipv6"|string; - export interface AllocateConnectionOnInterconnectRequest { - /** - * Bandwidth of the connection. Example: "500Mbps" Default: None Values: 50Mbps, 100Mbps, 200Mbps, 300Mbps, 400Mbps, or 500Mbps - */ - bandwidth: Bandwidth; - /** - * Name of the provisioned connection. Example: "500M Connection to AWS" Default: None - */ - connectionName: ConnectionName; - /** - * Numeric account Id of the customer for whom the connection will be provisioned. Example: 123443215678 Default: None - */ - ownerAccount: OwnerAccount; - /** - * ID of the interconnect on which the connection will be provisioned. Example: dxcon-456abc78 Default: None - */ - interconnectId: InterconnectId; - /** - * The dedicated VLAN provisioned to the connection. Example: 101 Default: None - */ - vlan: VLAN; - } - export interface AllocateHostedConnectionRequest { - /** - * The ID of the interconnect or LAG on which the connection will be provisioned. Example: dxcon-456abc78 or dxlag-abc123 Default: None - */ - connectionId: ConnectionId; - /** - * The numeric account ID of the customer for whom the connection will be provisioned. Example: 123443215678 Default: None - */ - ownerAccount: OwnerAccount; - /** - * The bandwidth of the connection. Example: 500Mbps Default: None Values: 50Mbps, 100Mbps, 200Mbps, 300Mbps, 400Mbps, or 500Mbps - */ - bandwidth: Bandwidth; - /** - * The name of the provisioned connection. Example: "500M Connection to AWS" Default: None - */ - connectionName: ConnectionName; - /** - * The dedicated VLAN provisioned to the hosted connection. Example: 101 Default: None - */ - vlan: VLAN; - } - export interface AllocatePrivateVirtualInterfaceRequest { - /** - * The connection ID on which the private virtual interface is provisioned. Default: None - */ - connectionId: ConnectionId; - /** - * The AWS account that will own the new private virtual interface. Default: None - */ - ownerAccount: OwnerAccount; - /** - * Detailed information for the private virtual interface to be provisioned. Default: None - */ - newPrivateVirtualInterfaceAllocation: NewPrivateVirtualInterfaceAllocation; - } - export interface AllocatePublicVirtualInterfaceRequest { - /** - * The connection ID on which the public virtual interface is provisioned. Default: None - */ - connectionId: ConnectionId; - /** - * The AWS account that will own the new public virtual interface. Default: None - */ - ownerAccount: OwnerAccount; - /** - * Detailed information for the public virtual interface to be provisioned. Default: None - */ - newPublicVirtualInterfaceAllocation: NewPublicVirtualInterfaceAllocation; - } - export type AmazonAddress = string; - export interface AssociateConnectionWithLagRequest { - /** - * The ID of the connection. Example: dxcon-abc123 Default: None - */ - connectionId: ConnectionId; - /** - * The ID of the LAG with which to associate the connection. Example: dxlag-abc123 Default: None - */ - lagId: LagId; - } - export interface AssociateHostedConnectionRequest { - /** - * The ID of the hosted connection. Example: dxcon-abc123 Default: None - */ - connectionId: ConnectionId; - /** - * The ID of the interconnect or the LAG. Example: dxcon-abc123 or dxlag-abc123 Default: None - */ - parentConnectionId: ConnectionId; - } - export interface AssociateVirtualInterfaceRequest { - /** - * The ID of the virtual interface. Example: dxvif-123dfg56 Default: None - */ - virtualInterfaceId: VirtualInterfaceId; - /** - * The ID of the LAG or connection with which to associate the virtual interface. Example: dxlag-abc123 or dxcon-abc123 Default: None - */ - connectionId: ConnectionId; - } - export type AwsDevice = string; - export type BGPAuthKey = string; - export interface BGPPeer { - asn?: ASN; - authKey?: BGPAuthKey; - addressFamily?: AddressFamily; - amazonAddress?: AmazonAddress; - customerAddress?: CustomerAddress; - bgpPeerState?: BGPPeerState; - bgpStatus?: BGPStatus; - } - export type BGPPeerList = BGPPeer[]; - export type BGPPeerState = "verifying"|"pending"|"available"|"deleting"|"deleted"|string; - export type BGPStatus = "up"|"down"|string; - export type Bandwidth = string; - export type BooleanFlag = boolean; - export type CIDR = string; - export interface ConfirmConnectionRequest { - connectionId: ConnectionId; - } - export interface ConfirmConnectionResponse { - connectionState?: ConnectionState; - } - export interface ConfirmPrivateVirtualInterfaceRequest { - virtualInterfaceId: VirtualInterfaceId; - /** - * ID of the virtual private gateway that will be attached to the virtual interface. A virtual private gateway can be managed via the Amazon Virtual Private Cloud (VPC) console or the EC2 CreateVpnGateway action. Default: None - */ - virtualGatewayId: VirtualGatewayId; - } - export interface ConfirmPrivateVirtualInterfaceResponse { - virtualInterfaceState?: VirtualInterfaceState; - } - export interface ConfirmPublicVirtualInterfaceRequest { - virtualInterfaceId: VirtualInterfaceId; - } - export interface ConfirmPublicVirtualInterfaceResponse { - virtualInterfaceState?: VirtualInterfaceState; - } - export interface Connection { - /** - * The AWS account that will own the new connection. - */ - ownerAccount?: OwnerAccount; - connectionId?: ConnectionId; - connectionName?: ConnectionName; - connectionState?: ConnectionState; - region?: Region; - location?: LocationCode; - /** - * Bandwidth of the connection. Example: 1Gbps (for regular connections), or 500Mbps (for hosted connections) Default: None - */ - bandwidth?: Bandwidth; - vlan?: VLAN; - /** - * The name of the AWS Direct Connect service provider associated with the connection. - */ - partnerName?: PartnerName; - /** - * The time of the most recent call to DescribeLoa for this connection. - */ - loaIssueTime?: LoaIssueTime; - lagId?: LagId; - /** - * The Direct Connection endpoint which the physical connection terminates on. - */ - awsDevice?: AwsDevice; - } - export type ConnectionId = string; - export type ConnectionList = Connection[]; - export type ConnectionName = string; - export type ConnectionState = "ordering"|"requested"|"pending"|"available"|"down"|"deleting"|"deleted"|"rejected"|string; - export interface Connections { - /** - * A list of connections. - */ - connections?: ConnectionList; - } - export type Count = number; - export interface CreateBGPPeerRequest { - /** - * The ID of the virtual interface on which the BGP peer will be provisioned. Example: dxvif-456abc78 Default: None - */ - virtualInterfaceId?: VirtualInterfaceId; - /** - * Detailed information for the BGP peer to be created. Default: None - */ - newBGPPeer?: NewBGPPeer; - } - export interface CreateBGPPeerResponse { - virtualInterface?: VirtualInterface; - } - export interface CreateConnectionRequest { - location: LocationCode; - bandwidth: Bandwidth; - connectionName: ConnectionName; - lagId?: LagId; - } - export interface CreateInterconnectRequest { - /** - * The name of the interconnect. Example: "1G Interconnect to AWS" Default: None - */ - interconnectName: InterconnectName; - /** - * The port bandwidth Example: 1Gbps Default: None Available values: 1Gbps,10Gbps - */ - bandwidth: Bandwidth; - /** - * Where the interconnect is located Example: EqSV5 Default: None - */ - location: LocationCode; - lagId?: LagId; - } - export interface CreateLagRequest { - /** - * The number of physical connections initially provisioned and bundled by the LAG. Default: None - */ - numberOfConnections: Count; - /** - * The AWS Direct Connect location in which the LAG should be allocated. Example: EqSV5 Default: None - */ - location: LocationCode; - /** - * The bandwidth of the individual physical connections bundled by the LAG. Default: None Available values: 1Gbps, 10Gbps - */ - connectionsBandwidth: Bandwidth; - /** - * The name of the LAG. Example: "3x10G LAG to AWS" Default: None - */ - lagName: LagName; - /** - * The ID of an existing connection to migrate to the LAG. Default: None - */ - connectionId?: ConnectionId; - } - export interface CreatePrivateVirtualInterfaceRequest { - connectionId: ConnectionId; - /** - * Detailed information for the private virtual interface to be created. Default: None - */ - newPrivateVirtualInterface: NewPrivateVirtualInterface; - } - export interface CreatePublicVirtualInterfaceRequest { - connectionId: ConnectionId; - /** - * Detailed information for the public virtual interface to be created. Default: None - */ - newPublicVirtualInterface: NewPublicVirtualInterface; - } - export type CustomerAddress = string; - export interface DeleteBGPPeerRequest { - /** - * The ID of the virtual interface from which the BGP peer will be deleted. Example: dxvif-456abc78 Default: None - */ - virtualInterfaceId?: VirtualInterfaceId; - asn?: ASN; - customerAddress?: CustomerAddress; - } - export interface DeleteBGPPeerResponse { - virtualInterface?: VirtualInterface; - } - export interface DeleteConnectionRequest { - connectionId: ConnectionId; - } - export interface DeleteInterconnectRequest { - interconnectId: InterconnectId; - } - export interface DeleteInterconnectResponse { - interconnectState?: InterconnectState; - } - export interface DeleteLagRequest { - /** - * The ID of the LAG to delete. Example: dxlag-abc123 Default: None - */ - lagId: LagId; - } - export interface DeleteVirtualInterfaceRequest { - virtualInterfaceId: VirtualInterfaceId; - } - export interface DeleteVirtualInterfaceResponse { - virtualInterfaceState?: VirtualInterfaceState; - } - export interface DescribeConnectionLoaRequest { - connectionId: ConnectionId; - /** - * The name of the APN partner or service provider who establishes connectivity on your behalf. If you supply this parameter, the LOA-CFA lists the provider name alongside your company name as the requester of the cross connect. Default: None - */ - providerName?: ProviderName; - loaContentType?: LoaContentType; - } - export interface DescribeConnectionLoaResponse { - loa?: Loa; - } - export interface DescribeConnectionsOnInterconnectRequest { - /** - * ID of the interconnect on which a list of connection is provisioned. Example: dxcon-abc123 Default: None - */ - interconnectId: InterconnectId; - } - export interface DescribeConnectionsRequest { - connectionId?: ConnectionId; - } - export interface DescribeHostedConnectionsRequest { - /** - * The ID of the interconnect or LAG on which the hosted connections are provisioned. Example: dxcon-abc123 or dxlag-abc123 Default: None - */ - connectionId: ConnectionId; - } - export interface DescribeInterconnectLoaRequest { - interconnectId: InterconnectId; - /** - * The name of the service provider who establishes connectivity on your behalf. If you supply this parameter, the LOA-CFA lists the provider name alongside your company name as the requester of the cross connect. Default: None - */ - providerName?: ProviderName; - loaContentType?: LoaContentType; - } - export interface DescribeInterconnectLoaResponse { - loa?: Loa; - } - export interface DescribeInterconnectsRequest { - interconnectId?: InterconnectId; - } - export interface DescribeLagsRequest { - /** - * The ID of the LAG. Example: dxlag-abc123 Default: None - */ - lagId?: LagId; - } - export interface DescribeLoaRequest { - /** - * The ID of a connection, LAG, or interconnect for which to get the LOA-CFA information. Example: dxcon-abc123 or dxlag-abc123 Default: None - */ - connectionId: ConnectionId; - /** - * The name of the service provider who establishes connectivity on your behalf. If you supply this parameter, the LOA-CFA lists the provider name alongside your company name as the requester of the cross connect. Default: None - */ - providerName?: ProviderName; - /** - * A standard media type indicating the content type of the LOA-CFA document. Currently, the only supported value is "application/pdf". Default: application/pdf - */ - loaContentType?: LoaContentType; - } - export interface DescribeTagsRequest { - /** - * The Amazon Resource Names (ARNs) of the Direct Connect resources. - */ - resourceArns: ResourceArnList; - } - export interface DescribeTagsResponse { - /** - * Information about the tags. - */ - resourceTags?: ResourceTagList; - } - export interface DescribeVirtualInterfacesRequest { - connectionId?: ConnectionId; - virtualInterfaceId?: VirtualInterfaceId; - } - export interface DisassociateConnectionFromLagRequest { - /** - * The ID of the connection to disassociate from the LAG. Example: dxcon-abc123 Default: None - */ - connectionId: ConnectionId; - /** - * The ID of the LAG. Example: dxlag-abc123 Default: None - */ - lagId: LagId; - } - export type ErrorMessage = string; - export interface Interconnect { - interconnectId?: InterconnectId; - interconnectName?: InterconnectName; - interconnectState?: InterconnectState; - region?: Region; - location?: LocationCode; - bandwidth?: Bandwidth; - /** - * The time of the most recent call to DescribeInterconnectLoa for this Interconnect. - */ - loaIssueTime?: LoaIssueTime; - lagId?: LagId; - /** - * The Direct Connection endpoint which the physical connection terminates on. - */ - awsDevice?: AwsDevice; - } - export type InterconnectId = string; - export type InterconnectList = Interconnect[]; - export type InterconnectName = string; - export type InterconnectState = "requested"|"pending"|"available"|"down"|"deleting"|"deleted"|string; - export interface Interconnects { - /** - * A list of interconnects. - */ - interconnects?: InterconnectList; - } - export interface Lag { - /** - * The individual bandwidth of the physical connections bundled by the LAG. Available values: 1Gbps, 10Gbps - */ - connectionsBandwidth?: Bandwidth; - /** - * The number of physical connections bundled by the LAG, up to a maximum of 10. - */ - numberOfConnections?: Count; - lagId?: LagId; - /** - * The owner of the LAG. - */ - ownerAccount?: OwnerAccount; - /** - * The name of the LAG. - */ - lagName?: LagName; - lagState?: LagState; - location?: LocationCode; - region?: Region; - /** - * The minimum number of physical connections that must be operational for the LAG itself to be operational. If the number of operational connections drops below this setting, the LAG state changes to down. This value can help to ensure that a LAG is not overutilized if a significant number of its bundled connections go down. - */ - minimumLinks?: Count; - /** - * The AWS Direct Connection endpoint that hosts the LAG. - */ - awsDevice?: AwsDevice; - /** - * A list of connections bundled by this LAG. - */ - connections?: ConnectionList; - /** - * Indicates whether the LAG can host other connections. This is intended for use by AWS Direct Connect partners only. - */ - allowsHostedConnections?: BooleanFlag; - } - export type LagId = string; - export type LagList = Lag[]; - export type LagName = string; - export type LagState = "requested"|"pending"|"available"|"down"|"deleting"|"deleted"|string; - export interface Lags { - /** - * A list of LAGs. - */ - lags?: LagList; - } - export interface Loa { - loaContent?: LoaContent; - loaContentType?: LoaContentType; - } - export type LoaContent = Buffer|Uint8Array|Blob|string; - export type LoaContentType = "application/pdf"|string; - export type LoaIssueTime = Date; - export interface Location { - /** - * The code used to indicate the AWS Direct Connect location. - */ - locationCode?: LocationCode; - /** - * The name of the AWS Direct Connect location. The name includes the colocation partner name and the physical site of the lit building. - */ - locationName?: LocationName; - } - export type LocationCode = string; - export type LocationList = Location[]; - export type LocationName = string; - export interface Locations { - /** - * A list of colocation hubs where network providers have equipment. Most regions have multiple locations available. - */ - locations?: LocationList; - } - export interface NewBGPPeer { - asn?: ASN; - authKey?: BGPAuthKey; - addressFamily?: AddressFamily; - amazonAddress?: AmazonAddress; - customerAddress?: CustomerAddress; - } - export interface NewPrivateVirtualInterface { - virtualInterfaceName: VirtualInterfaceName; - vlan: VLAN; - asn: ASN; - authKey?: BGPAuthKey; - amazonAddress?: AmazonAddress; - customerAddress?: CustomerAddress; - addressFamily?: AddressFamily; - virtualGatewayId: VirtualGatewayId; - } - export interface NewPrivateVirtualInterfaceAllocation { - virtualInterfaceName: VirtualInterfaceName; - vlan: VLAN; - asn: ASN; - authKey?: BGPAuthKey; - amazonAddress?: AmazonAddress; - addressFamily?: AddressFamily; - customerAddress?: CustomerAddress; - } - export interface NewPublicVirtualInterface { - virtualInterfaceName: VirtualInterfaceName; - vlan: VLAN; - asn: ASN; - authKey?: BGPAuthKey; - amazonAddress?: AmazonAddress; - customerAddress?: CustomerAddress; - addressFamily?: AddressFamily; - routeFilterPrefixes?: RouteFilterPrefixList; - } - export interface NewPublicVirtualInterfaceAllocation { - virtualInterfaceName: VirtualInterfaceName; - vlan: VLAN; - asn: ASN; - authKey?: BGPAuthKey; - amazonAddress?: AmazonAddress; - customerAddress?: CustomerAddress; - addressFamily?: AddressFamily; - routeFilterPrefixes?: RouteFilterPrefixList; - } - export type OwnerAccount = string; - export type PartnerName = string; - export type ProviderName = string; - export type Region = string; - export type ResourceArn = string; - export type ResourceArnList = ResourceArn[]; - export interface ResourceTag { - /** - * The Amazon Resource Name (ARN) of the Direct Connect resource. - */ - resourceArn?: ResourceArn; - /** - * The tags. - */ - tags?: TagList; - } - export type ResourceTagList = ResourceTag[]; - export interface RouteFilterPrefix { - /** - * CIDR notation for the advertised route. Multiple routes are separated by commas. IPv6 CIDRs must be at least a /64 or shorter Example: 10.10.10.0/24,10.10.11.0/24,2001:db8::/64 - */ - cidr?: CIDR; - } - export type RouteFilterPrefixList = RouteFilterPrefix[]; - export type RouterConfig = string; - export interface Tag { - /** - * The key of the tag. - */ - key: TagKey; - /** - * The value of the tag. - */ - value?: TagValue; - } - export type TagKey = string; - export type TagKeyList = TagKey[]; - export type TagList = Tag[]; - export interface TagResourceRequest { - /** - * The Amazon Resource Name (ARN) of the Direct Connect resource. Example: arn:aws:directconnect:us-east-1:123456789012:dxcon/dxcon-fg5678gh - */ - resourceArn: ResourceArn; - /** - * The list of tags to add. - */ - tags: TagList; - } - export interface TagResourceResponse { - } - export type TagValue = string; - export interface UntagResourceRequest { - /** - * The Amazon Resource Name (ARN) of the Direct Connect resource. - */ - resourceArn: ResourceArn; - /** - * The list of tag keys to remove. - */ - tagKeys: TagKeyList; - } - export interface UntagResourceResponse { - } - export interface UpdateLagRequest { - /** - * The ID of the LAG to update. Example: dxlag-abc123 Default: None - */ - lagId: LagId; - /** - * The name for the LAG. Example: "3x10G LAG to AWS" Default: None - */ - lagName?: LagName; - /** - * The minimum number of physical connections that must be operational for the LAG itself to be operational. Default: None - */ - minimumLinks?: Count; - } - export type VLAN = number; - export interface VirtualGateway { - virtualGatewayId?: VirtualGatewayId; - virtualGatewayState?: VirtualGatewayState; - } - export type VirtualGatewayId = string; - export type VirtualGatewayList = VirtualGateway[]; - export type VirtualGatewayState = string; - export interface VirtualGateways { - /** - * A list of virtual private gateways. - */ - virtualGateways?: VirtualGatewayList; - } - export interface VirtualInterface { - /** - * The AWS account that will own the new virtual interface. - */ - ownerAccount?: OwnerAccount; - virtualInterfaceId?: VirtualInterfaceId; - location?: LocationCode; - connectionId?: ConnectionId; - virtualInterfaceType?: VirtualInterfaceType; - virtualInterfaceName?: VirtualInterfaceName; - vlan?: VLAN; - asn?: ASN; - authKey?: BGPAuthKey; - amazonAddress?: AmazonAddress; - customerAddress?: CustomerAddress; - addressFamily?: AddressFamily; - virtualInterfaceState?: VirtualInterfaceState; - /** - * Information for generating the customer router configuration. - */ - customerRouterConfig?: RouterConfig; - virtualGatewayId?: VirtualGatewayId; - routeFilterPrefixes?: RouteFilterPrefixList; - bgpPeers?: BGPPeerList; - } - export type VirtualInterfaceId = string; - export type VirtualInterfaceList = VirtualInterface[]; - export type VirtualInterfaceName = string; - export type VirtualInterfaceState = "confirming"|"verifying"|"pending"|"available"|"down"|"deleting"|"deleted"|"rejected"|string; - export type VirtualInterfaceType = string; - export interface VirtualInterfaces { - /** - * A list of virtual interfaces. - */ - virtualInterfaces?: VirtualInterfaceList; - } - /** - * A string in YYYY-MM-DD format that represents the latest possible API version that can be used in this service. Specify 'latest' to use the latest possible version. - */ - export type apiVersion = "2012-10-25"|"latest"|string; - export interface ClientApiVersions { - /** - * A string in YYYY-MM-DD format that represents the latest possible API version that can be used in this service. Specify 'latest' to use the latest possible version. - */ - apiVersion?: apiVersion; - } - export type ClientConfiguration = ServiceConfigurationOptions & ClientApiVersions; - /** - * Contains interfaces for use with the DirectConnect client. - */ - export import Types = DirectConnect; -} -export = DirectConnect; diff --git a/workshops/monte-carlo-on-ec2-spot-fleet/src/web/node_modules/aws-sdk/clients/directconnect.js b/workshops/monte-carlo-on-ec2-spot-fleet/src/web/node_modules/aws-sdk/clients/directconnect.js deleted file mode 100644 index 426b00d0..00000000 --- a/workshops/monte-carlo-on-ec2-spot-fleet/src/web/node_modules/aws-sdk/clients/directconnect.js +++ /dev/null @@ -1,18 +0,0 @@ -require('../lib/node_loader'); -var AWS = require('../lib/core'); -var Service = AWS.Service; -var apiLoader = AWS.apiLoader; - -apiLoader.services['directconnect'] = {}; -AWS.DirectConnect = Service.defineService('directconnect', ['2012-10-25']); -Object.defineProperty(apiLoader.services['directconnect'], '2012-10-25', { - get: function get() { - var model = require('../apis/directconnect-2012-10-25.min.json'); - model.paginators = require('../apis/directconnect-2012-10-25.paginators.json').pagination; - return model; - }, - enumerable: true, - configurable: true -}); - -module.exports = AWS.DirectConnect; diff --git a/workshops/monte-carlo-on-ec2-spot-fleet/src/web/node_modules/aws-sdk/clients/directoryservice.d.ts b/workshops/monte-carlo-on-ec2-spot-fleet/src/web/node_modules/aws-sdk/clients/directoryservice.d.ts deleted file mode 100644 index bfdf186e..00000000 --- a/workshops/monte-carlo-on-ec2-spot-fleet/src/web/node_modules/aws-sdk/clients/directoryservice.d.ts +++ /dev/null @@ -1,1651 +0,0 @@ -import {Request} from '../lib/request'; -import {Response} from '../lib/response'; -import {AWSError} from '../lib/error'; -import {Service} from '../lib/service'; -import {ServiceConfigurationOptions} from '../lib/service'; -import {ConfigBase as Config} from '../lib/config'; -interface Blob {} -declare class DirectoryService extends Service { - /** - * Constructs a service object. This object has one method for each API operation. - */ - constructor(options?: DirectoryService.Types.ClientConfiguration) - config: Config & DirectoryService.Types.ClientConfiguration; - /** - * If the DNS server for your on-premises domain uses a publicly addressable IP address, you must add a CIDR address block to correctly route traffic to and from your Microsoft AD on Amazon Web Services. AddIpRoutes adds this address block. You can also use AddIpRoutes to facilitate routing traffic that uses public IP ranges from your Microsoft AD on AWS to a peer VPC. Before you call AddIpRoutes, ensure that all of the required permissions have been explicitly granted through a policy. For details about what permissions are required to run the AddIpRoutes operation, see AWS Directory Service API Permissions: Actions, Resources, and Conditions Reference. - */ - addIpRoutes(params: DirectoryService.Types.AddIpRoutesRequest, callback?: (err: AWSError, data: DirectoryService.Types.AddIpRoutesResult) => void): Request; - /** - * If the DNS server for your on-premises domain uses a publicly addressable IP address, you must add a CIDR address block to correctly route traffic to and from your Microsoft AD on Amazon Web Services. AddIpRoutes adds this address block. You can also use AddIpRoutes to facilitate routing traffic that uses public IP ranges from your Microsoft AD on AWS to a peer VPC. Before you call AddIpRoutes, ensure that all of the required permissions have been explicitly granted through a policy. For details about what permissions are required to run the AddIpRoutes operation, see AWS Directory Service API Permissions: Actions, Resources, and Conditions Reference. - */ - addIpRoutes(callback?: (err: AWSError, data: DirectoryService.Types.AddIpRoutesResult) => void): Request; - /** - * Adds or overwrites one or more tags for the specified directory. Each directory can have a maximum of 50 tags. Each tag consists of a key and optional value. Tag keys must be unique to each resource. - */ - addTagsToResource(params: DirectoryService.Types.AddTagsToResourceRequest, callback?: (err: AWSError, data: DirectoryService.Types.AddTagsToResourceResult) => void): Request; - /** - * Adds or overwrites one or more tags for the specified directory. Each directory can have a maximum of 50 tags. Each tag consists of a key and optional value. Tag keys must be unique to each resource. - */ - addTagsToResource(callback?: (err: AWSError, data: DirectoryService.Types.AddTagsToResourceResult) => void): Request; - /** - * Cancels an in-progress schema extension to a Microsoft AD directory. Once a schema extension has started replicating to all domain controllers, the task can no longer be canceled. A schema extension can be canceled during any of the following states; Initializing, CreatingSnapshot, and UpdatingSchema. - */ - cancelSchemaExtension(params: DirectoryService.Types.CancelSchemaExtensionRequest, callback?: (err: AWSError, data: DirectoryService.Types.CancelSchemaExtensionResult) => void): Request; - /** - * Cancels an in-progress schema extension to a Microsoft AD directory. Once a schema extension has started replicating to all domain controllers, the task can no longer be canceled. A schema extension can be canceled during any of the following states; Initializing, CreatingSnapshot, and UpdatingSchema. - */ - cancelSchemaExtension(callback?: (err: AWSError, data: DirectoryService.Types.CancelSchemaExtensionResult) => void): Request; - /** - * Creates an AD Connector to connect to an on-premises directory. Before you call ConnectDirectory, ensure that all of the required permissions have been explicitly granted through a policy. For details about what permissions are required to run the ConnectDirectory operation, see AWS Directory Service API Permissions: Actions, Resources, and Conditions Reference. - */ - connectDirectory(params: DirectoryService.Types.ConnectDirectoryRequest, callback?: (err: AWSError, data: DirectoryService.Types.ConnectDirectoryResult) => void): Request; - /** - * Creates an AD Connector to connect to an on-premises directory. Before you call ConnectDirectory, ensure that all of the required permissions have been explicitly granted through a policy. For details about what permissions are required to run the ConnectDirectory operation, see AWS Directory Service API Permissions: Actions, Resources, and Conditions Reference. - */ - connectDirectory(callback?: (err: AWSError, data: DirectoryService.Types.ConnectDirectoryResult) => void): Request; - /** - * Creates an alias for a directory and assigns the alias to the directory. The alias is used to construct the access URL for the directory, such as http://<alias>.awsapps.com. After an alias has been created, it cannot be deleted or reused, so this operation should only be used when absolutely necessary. - */ - createAlias(params: DirectoryService.Types.CreateAliasRequest, callback?: (err: AWSError, data: DirectoryService.Types.CreateAliasResult) => void): Request; - /** - * Creates an alias for a directory and assigns the alias to the directory. The alias is used to construct the access URL for the directory, such as http://<alias>.awsapps.com. After an alias has been created, it cannot be deleted or reused, so this operation should only be used when absolutely necessary. - */ - createAlias(callback?: (err: AWSError, data: DirectoryService.Types.CreateAliasResult) => void): Request; - /** - * Creates a computer account in the specified directory, and joins the computer to the directory. - */ - createComputer(params: DirectoryService.Types.CreateComputerRequest, callback?: (err: AWSError, data: DirectoryService.Types.CreateComputerResult) => void): Request; - /** - * Creates a computer account in the specified directory, and joins the computer to the directory. - */ - createComputer(callback?: (err: AWSError, data: DirectoryService.Types.CreateComputerResult) => void): Request; - /** - * Creates a conditional forwarder associated with your AWS directory. Conditional forwarders are required in order to set up a trust relationship with another domain. The conditional forwarder points to the trusted domain. - */ - createConditionalForwarder(params: DirectoryService.Types.CreateConditionalForwarderRequest, callback?: (err: AWSError, data: DirectoryService.Types.CreateConditionalForwarderResult) => void): Request; - /** - * Creates a conditional forwarder associated with your AWS directory. Conditional forwarders are required in order to set up a trust relationship with another domain. The conditional forwarder points to the trusted domain. - */ - createConditionalForwarder(callback?: (err: AWSError, data: DirectoryService.Types.CreateConditionalForwarderResult) => void): Request; - /** - * Creates a Simple AD directory. Before you call CreateDirectory, ensure that all of the required permissions have been explicitly granted through a policy. For details about what permissions are required to run the CreateDirectory operation, see AWS Directory Service API Permissions: Actions, Resources, and Conditions Reference. - */ - createDirectory(params: DirectoryService.Types.CreateDirectoryRequest, callback?: (err: AWSError, data: DirectoryService.Types.CreateDirectoryResult) => void): Request; - /** - * Creates a Simple AD directory. Before you call CreateDirectory, ensure that all of the required permissions have been explicitly granted through a policy. For details about what permissions are required to run the CreateDirectory operation, see AWS Directory Service API Permissions: Actions, Resources, and Conditions Reference. - */ - createDirectory(callback?: (err: AWSError, data: DirectoryService.Types.CreateDirectoryResult) => void): Request; - /** - * Creates a Microsoft AD in the AWS cloud. Before you call CreateMicrosoftAD, ensure that all of the required permissions have been explicitly granted through a policy. For details about what permissions are required to run the CreateMicrosoftAD operation, see AWS Directory Service API Permissions: Actions, Resources, and Conditions Reference. - */ - createMicrosoftAD(params: DirectoryService.Types.CreateMicrosoftADRequest, callback?: (err: AWSError, data: DirectoryService.Types.CreateMicrosoftADResult) => void): Request; - /** - * Creates a Microsoft AD in the AWS cloud. Before you call CreateMicrosoftAD, ensure that all of the required permissions have been explicitly granted through a policy. For details about what permissions are required to run the CreateMicrosoftAD operation, see AWS Directory Service API Permissions: Actions, Resources, and Conditions Reference. - */ - createMicrosoftAD(callback?: (err: AWSError, data: DirectoryService.Types.CreateMicrosoftADResult) => void): Request; - /** - * Creates a snapshot of a Simple AD or Microsoft AD directory in the AWS cloud. You cannot take snapshots of AD Connector directories. - */ - createSnapshot(params: DirectoryService.Types.CreateSnapshotRequest, callback?: (err: AWSError, data: DirectoryService.Types.CreateSnapshotResult) => void): Request; - /** - * Creates a snapshot of a Simple AD or Microsoft AD directory in the AWS cloud. You cannot take snapshots of AD Connector directories. - */ - createSnapshot(callback?: (err: AWSError, data: DirectoryService.Types.CreateSnapshotResult) => void): Request; - /** - * AWS Directory Service for Microsoft Active Directory allows you to configure trust relationships. For example, you can establish a trust between your Microsoft AD in the AWS cloud, and your existing on-premises Microsoft Active Directory. This would allow you to provide users and groups access to resources in either domain, with a single set of credentials. This action initiates the creation of the AWS side of a trust relationship between a Microsoft AD in the AWS cloud and an external domain. - */ - createTrust(params: DirectoryService.Types.CreateTrustRequest, callback?: (err: AWSError, data: DirectoryService.Types.CreateTrustResult) => void): Request; - /** - * AWS Directory Service for Microsoft Active Directory allows you to configure trust relationships. For example, you can establish a trust between your Microsoft AD in the AWS cloud, and your existing on-premises Microsoft Active Directory. This would allow you to provide users and groups access to resources in either domain, with a single set of credentials. This action initiates the creation of the AWS side of a trust relationship between a Microsoft AD in the AWS cloud and an external domain. - */ - createTrust(callback?: (err: AWSError, data: DirectoryService.Types.CreateTrustResult) => void): Request; - /** - * Deletes a conditional forwarder that has been set up for your AWS directory. - */ - deleteConditionalForwarder(params: DirectoryService.Types.DeleteConditionalForwarderRequest, callback?: (err: AWSError, data: DirectoryService.Types.DeleteConditionalForwarderResult) => void): Request; - /** - * Deletes a conditional forwarder that has been set up for your AWS directory. - */ - deleteConditionalForwarder(callback?: (err: AWSError, data: DirectoryService.Types.DeleteConditionalForwarderResult) => void): Request; - /** - * Deletes an AWS Directory Service directory. Before you call DeleteDirectory, ensure that all of the required permissions have been explicitly granted through a policy. For details about what permissions are required to run the DeleteDirectory operation, see AWS Directory Service API Permissions: Actions, Resources, and Conditions Reference. - */ - deleteDirectory(params: DirectoryService.Types.DeleteDirectoryRequest, callback?: (err: AWSError, data: DirectoryService.Types.DeleteDirectoryResult) => void): Request; - /** - * Deletes an AWS Directory Service directory. Before you call DeleteDirectory, ensure that all of the required permissions have been explicitly granted through a policy. For details about what permissions are required to run the DeleteDirectory operation, see AWS Directory Service API Permissions: Actions, Resources, and Conditions Reference. - */ - deleteDirectory(callback?: (err: AWSError, data: DirectoryService.Types.DeleteDirectoryResult) => void): Request; - /** - * Deletes a directory snapshot. - */ - deleteSnapshot(params: DirectoryService.Types.DeleteSnapshotRequest, callback?: (err: AWSError, data: DirectoryService.Types.DeleteSnapshotResult) => void): Request; - /** - * Deletes a directory snapshot. - */ - deleteSnapshot(callback?: (err: AWSError, data: DirectoryService.Types.DeleteSnapshotResult) => void): Request; - /** - * Deletes an existing trust relationship between your Microsoft AD in the AWS cloud and an external domain. - */ - deleteTrust(params: DirectoryService.Types.DeleteTrustRequest, callback?: (err: AWSError, data: DirectoryService.Types.DeleteTrustResult) => void): Request; - /** - * Deletes an existing trust relationship between your Microsoft AD in the AWS cloud and an external domain. - */ - deleteTrust(callback?: (err: AWSError, data: DirectoryService.Types.DeleteTrustResult) => void): Request; - /** - * Removes the specified directory as a publisher to the specified SNS topic. - */ - deregisterEventTopic(params: DirectoryService.Types.DeregisterEventTopicRequest, callback?: (err: AWSError, data: DirectoryService.Types.DeregisterEventTopicResult) => void): Request; - /** - * Removes the specified directory as a publisher to the specified SNS topic. - */ - deregisterEventTopic(callback?: (err: AWSError, data: DirectoryService.Types.DeregisterEventTopicResult) => void): Request; - /** - * Obtains information about the conditional forwarders for this account. If no input parameters are provided for RemoteDomainNames, this request describes all conditional forwarders for the specified directory ID. - */ - describeConditionalForwarders(params: DirectoryService.Types.DescribeConditionalForwardersRequest, callback?: (err: AWSError, data: DirectoryService.Types.DescribeConditionalForwardersResult) => void): Request; - /** - * Obtains information about the conditional forwarders for this account. If no input parameters are provided for RemoteDomainNames, this request describes all conditional forwarders for the specified directory ID. - */ - describeConditionalForwarders(callback?: (err: AWSError, data: DirectoryService.Types.DescribeConditionalForwardersResult) => void): Request; - /** - * Obtains information about the directories that belong to this account. You can retrieve information about specific directories by passing the directory identifiers in the DirectoryIds parameter. Otherwise, all directories that belong to the current account are returned. This operation supports pagination with the use of the NextToken request and response parameters. If more results are available, the DescribeDirectoriesResult.NextToken member contains a token that you pass in the next call to DescribeDirectories to retrieve the next set of items. You can also specify a maximum number of return results with the Limit parameter. - */ - describeDirectories(params: DirectoryService.Types.DescribeDirectoriesRequest, callback?: (err: AWSError, data: DirectoryService.Types.DescribeDirectoriesResult) => void): Request; - /** - * Obtains information about the directories that belong to this account. You can retrieve information about specific directories by passing the directory identifiers in the DirectoryIds parameter. Otherwise, all directories that belong to the current account are returned. This operation supports pagination with the use of the NextToken request and response parameters. If more results are available, the DescribeDirectoriesResult.NextToken member contains a token that you pass in the next call to DescribeDirectories to retrieve the next set of items. You can also specify a maximum number of return results with the Limit parameter. - */ - describeDirectories(callback?: (err: AWSError, data: DirectoryService.Types.DescribeDirectoriesResult) => void): Request; - /** - * Provides information about any domain controllers in your directory. - */ - describeDomainControllers(params: DirectoryService.Types.DescribeDomainControllersRequest, callback?: (err: AWSError, data: DirectoryService.Types.DescribeDomainControllersResult) => void): Request; - /** - * Provides information about any domain controllers in your directory. - */ - describeDomainControllers(callback?: (err: AWSError, data: DirectoryService.Types.DescribeDomainControllersResult) => void): Request; - /** - * Obtains information about which SNS topics receive status messages from the specified directory. If no input parameters are provided, such as DirectoryId or TopicName, this request describes all of the associations in the account. - */ - describeEventTopics(params: DirectoryService.Types.DescribeEventTopicsRequest, callback?: (err: AWSError, data: DirectoryService.Types.DescribeEventTopicsResult) => void): Request; - /** - * Obtains information about which SNS topics receive status messages from the specified directory. If no input parameters are provided, such as DirectoryId or TopicName, this request describes all of the associations in the account. - */ - describeEventTopics(callback?: (err: AWSError, data: DirectoryService.Types.DescribeEventTopicsResult) => void): Request; - /** - * Obtains information about the directory snapshots that belong to this account. This operation supports pagination with the use of the NextToken request and response parameters. If more results are available, the DescribeSnapshots.NextToken member contains a token that you pass in the next call to DescribeSnapshots to retrieve the next set of items. You can also specify a maximum number of return results with the Limit parameter. - */ - describeSnapshots(params: DirectoryService.Types.DescribeSnapshotsRequest, callback?: (err: AWSError, data: DirectoryService.Types.DescribeSnapshotsResult) => void): Request; - /** - * Obtains information about the directory snapshots that belong to this account. This operation supports pagination with the use of the NextToken request and response parameters. If more results are available, the DescribeSnapshots.NextToken member contains a token that you pass in the next call to DescribeSnapshots to retrieve the next set of items. You can also specify a maximum number of return results with the Limit parameter. - */ - describeSnapshots(callback?: (err: AWSError, data: DirectoryService.Types.DescribeSnapshotsResult) => void): Request; - /** - * Obtains information about the trust relationships for this account. If no input parameters are provided, such as DirectoryId or TrustIds, this request describes all the trust relationships belonging to the account. - */ - describeTrusts(params: DirectoryService.Types.DescribeTrustsRequest, callback?: (err: AWSError, data: DirectoryService.Types.DescribeTrustsResult) => void): Request; - /** - * Obtains information about the trust relationships for this account. If no input parameters are provided, such as DirectoryId or TrustIds, this request describes all the trust relationships belonging to the account. - */ - describeTrusts(callback?: (err: AWSError, data: DirectoryService.Types.DescribeTrustsResult) => void): Request; - /** - * Disables multi-factor authentication (MFA) with the Remote Authentication Dial In User Service (RADIUS) server for an AD Connector directory. - */ - disableRadius(params: DirectoryService.Types.DisableRadiusRequest, callback?: (err: AWSError, data: DirectoryService.Types.DisableRadiusResult) => void): Request; - /** - * Disables multi-factor authentication (MFA) with the Remote Authentication Dial In User Service (RADIUS) server for an AD Connector directory. - */ - disableRadius(callback?: (err: AWSError, data: DirectoryService.Types.DisableRadiusResult) => void): Request; - /** - * Disables single-sign on for a directory. - */ - disableSso(params: DirectoryService.Types.DisableSsoRequest, callback?: (err: AWSError, data: DirectoryService.Types.DisableSsoResult) => void): Request; - /** - * Disables single-sign on for a directory. - */ - disableSso(callback?: (err: AWSError, data: DirectoryService.Types.DisableSsoResult) => void): Request; - /** - * Enables multi-factor authentication (MFA) with the Remote Authentication Dial In User Service (RADIUS) server for an AD Connector directory. - */ - enableRadius(params: DirectoryService.Types.EnableRadiusRequest, callback?: (err: AWSError, data: DirectoryService.Types.EnableRadiusResult) => void): Request; - /** - * Enables multi-factor authentication (MFA) with the Remote Authentication Dial In User Service (RADIUS) server for an AD Connector directory. - */ - enableRadius(callback?: (err: AWSError, data: DirectoryService.Types.EnableRadiusResult) => void): Request; - /** - * Enables single sign-on for a directory. - */ - enableSso(params: DirectoryService.Types.EnableSsoRequest, callback?: (err: AWSError, data: DirectoryService.Types.EnableSsoResult) => void): Request; - /** - * Enables single sign-on for a directory. - */ - enableSso(callback?: (err: AWSError, data: DirectoryService.Types.EnableSsoResult) => void): Request; - /** - * Obtains directory limit information for the current region. - */ - getDirectoryLimits(params: DirectoryService.Types.GetDirectoryLimitsRequest, callback?: (err: AWSError, data: DirectoryService.Types.GetDirectoryLimitsResult) => void): Request; - /** - * Obtains directory limit information for the current region. - */ - getDirectoryLimits(callback?: (err: AWSError, data: DirectoryService.Types.GetDirectoryLimitsResult) => void): Request; - /** - * Obtains the manual snapshot limits for a directory. - */ - getSnapshotLimits(params: DirectoryService.Types.GetSnapshotLimitsRequest, callback?: (err: AWSError, data: DirectoryService.Types.GetSnapshotLimitsResult) => void): Request; - /** - * Obtains the manual snapshot limits for a directory. - */ - getSnapshotLimits(callback?: (err: AWSError, data: DirectoryService.Types.GetSnapshotLimitsResult) => void): Request; - /** - * Lists the address blocks that you have added to a directory. - */ - listIpRoutes(params: DirectoryService.Types.ListIpRoutesRequest, callback?: (err: AWSError, data: DirectoryService.Types.ListIpRoutesResult) => void): Request; - /** - * Lists the address blocks that you have added to a directory. - */ - listIpRoutes(callback?: (err: AWSError, data: DirectoryService.Types.ListIpRoutesResult) => void): Request; - /** - * Lists all schema extensions applied to a Microsoft AD Directory. - */ - listSchemaExtensions(params: DirectoryService.Types.ListSchemaExtensionsRequest, callback?: (err: AWSError, data: DirectoryService.Types.ListSchemaExtensionsResult) => void): Request; - /** - * Lists all schema extensions applied to a Microsoft AD Directory. - */ - listSchemaExtensions(callback?: (err: AWSError, data: DirectoryService.Types.ListSchemaExtensionsResult) => void): Request; - /** - * Lists all tags on a directory. - */ - listTagsForResource(params: DirectoryService.Types.ListTagsForResourceRequest, callback?: (err: AWSError, data: DirectoryService.Types.ListTagsForResourceResult) => void): Request; - /** - * Lists all tags on a directory. - */ - listTagsForResource(callback?: (err: AWSError, data: DirectoryService.Types.ListTagsForResourceResult) => void): Request; - /** - * Associates a directory with an SNS topic. This establishes the directory as a publisher to the specified SNS topic. You can then receive email or text (SMS) messages when the status of your directory changes. You get notified if your directory goes from an Active status to an Impaired or Inoperable status. You also receive a notification when the directory returns to an Active status. - */ - registerEventTopic(params: DirectoryService.Types.RegisterEventTopicRequest, callback?: (err: AWSError, data: DirectoryService.Types.RegisterEventTopicResult) => void): Request; - /** - * Associates a directory with an SNS topic. This establishes the directory as a publisher to the specified SNS topic. You can then receive email or text (SMS) messages when the status of your directory changes. You get notified if your directory goes from an Active status to an Impaired or Inoperable status. You also receive a notification when the directory returns to an Active status. - */ - registerEventTopic(callback?: (err: AWSError, data: DirectoryService.Types.RegisterEventTopicResult) => void): Request; - /** - * Removes IP address blocks from a directory. - */ - removeIpRoutes(params: DirectoryService.Types.RemoveIpRoutesRequest, callback?: (err: AWSError, data: DirectoryService.Types.RemoveIpRoutesResult) => void): Request; - /** - * Removes IP address blocks from a directory. - */ - removeIpRoutes(callback?: (err: AWSError, data: DirectoryService.Types.RemoveIpRoutesResult) => void): Request; - /** - * Removes tags from a directory. - */ - removeTagsFromResource(params: DirectoryService.Types.RemoveTagsFromResourceRequest, callback?: (err: AWSError, data: DirectoryService.Types.RemoveTagsFromResourceResult) => void): Request; - /** - * Removes tags from a directory. - */ - removeTagsFromResource(callback?: (err: AWSError, data: DirectoryService.Types.RemoveTagsFromResourceResult) => void): Request; - /** - * Restores a directory using an existing directory snapshot. When you restore a directory from a snapshot, any changes made to the directory after the snapshot date are overwritten. This action returns as soon as the restore operation is initiated. You can monitor the progress of the restore operation by calling the DescribeDirectories operation with the directory identifier. When the DirectoryDescription.Stage value changes to Active, the restore operation is complete. - */ - restoreFromSnapshot(params: DirectoryService.Types.RestoreFromSnapshotRequest, callback?: (err: AWSError, data: DirectoryService.Types.RestoreFromSnapshotResult) => void): Request; - /** - * Restores a directory using an existing directory snapshot. When you restore a directory from a snapshot, any changes made to the directory after the snapshot date are overwritten. This action returns as soon as the restore operation is initiated. You can monitor the progress of the restore operation by calling the DescribeDirectories operation with the directory identifier. When the DirectoryDescription.Stage value changes to Active, the restore operation is complete. - */ - restoreFromSnapshot(callback?: (err: AWSError, data: DirectoryService.Types.RestoreFromSnapshotResult) => void): Request; - /** - * Applies a schema extension to a Microsoft AD directory. - */ - startSchemaExtension(params: DirectoryService.Types.StartSchemaExtensionRequest, callback?: (err: AWSError, data: DirectoryService.Types.StartSchemaExtensionResult) => void): Request; - /** - * Applies a schema extension to a Microsoft AD directory. - */ - startSchemaExtension(callback?: (err: AWSError, data: DirectoryService.Types.StartSchemaExtensionResult) => void): Request; - /** - * Updates a conditional forwarder that has been set up for your AWS directory. - */ - updateConditionalForwarder(params: DirectoryService.Types.UpdateConditionalForwarderRequest, callback?: (err: AWSError, data: DirectoryService.Types.UpdateConditionalForwarderResult) => void): Request; - /** - * Updates a conditional forwarder that has been set up for your AWS directory. - */ - updateConditionalForwarder(callback?: (err: AWSError, data: DirectoryService.Types.UpdateConditionalForwarderResult) => void): Request; - /** - * Adds or removes domain controllers to or from the directory. Based on the difference between current value and new value (provided through this API call), domain controllers will be added or removed. It may take up to 45 minutes for any new domain controllers to become fully active once the requested number of domain controllers is updated. During this time, you cannot make another update request. - */ - updateNumberOfDomainControllers(params: DirectoryService.Types.UpdateNumberOfDomainControllersRequest, callback?: (err: AWSError, data: DirectoryService.Types.UpdateNumberOfDomainControllersResult) => void): Request; - /** - * Adds or removes domain controllers to or from the directory. Based on the difference between current value and new value (provided through this API call), domain controllers will be added or removed. It may take up to 45 minutes for any new domain controllers to become fully active once the requested number of domain controllers is updated. During this time, you cannot make another update request. - */ - updateNumberOfDomainControllers(callback?: (err: AWSError, data: DirectoryService.Types.UpdateNumberOfDomainControllersResult) => void): Request; - /** - * Updates the Remote Authentication Dial In User Service (RADIUS) server information for an AD Connector directory. - */ - updateRadius(params: DirectoryService.Types.UpdateRadiusRequest, callback?: (err: AWSError, data: DirectoryService.Types.UpdateRadiusResult) => void): Request; - /** - * Updates the Remote Authentication Dial In User Service (RADIUS) server information for an AD Connector directory. - */ - updateRadius(callback?: (err: AWSError, data: DirectoryService.Types.UpdateRadiusResult) => void): Request; - /** - * AWS Directory Service for Microsoft Active Directory allows you to configure and verify trust relationships. This action verifies a trust relationship between your Microsoft AD in the AWS cloud and an external domain. - */ - verifyTrust(params: DirectoryService.Types.VerifyTrustRequest, callback?: (err: AWSError, data: DirectoryService.Types.VerifyTrustResult) => void): Request; - /** - * AWS Directory Service for Microsoft Active Directory allows you to configure and verify trust relationships. This action verifies a trust relationship between your Microsoft AD in the AWS cloud and an external domain. - */ - verifyTrust(callback?: (err: AWSError, data: DirectoryService.Types.VerifyTrustResult) => void): Request; -} -declare namespace DirectoryService { - export type AccessUrl = string; - export interface AddIpRoutesRequest { - /** - * Identifier (ID) of the directory to which to add the address block. - */ - DirectoryId: DirectoryId; - /** - * IP address blocks, using CIDR format, of the traffic to route. This is often the IP address block of the DNS server used for your on-premises domain. - */ - IpRoutes: IpRoutes; - /** - * If set to true, updates the inbound and outbound rules of the security group that has the description: "AWS created security group for directory ID directory controllers." Following are the new rules: Inbound: Type: Custom UDP Rule, Protocol: UDP, Range: 88, Source: 0.0.0.0/0 Type: Custom UDP Rule, Protocol: UDP, Range: 123, Source: 0.0.0.0/0 Type: Custom UDP Rule, Protocol: UDP, Range: 138, Source: 0.0.0.0/0 Type: Custom UDP Rule, Protocol: UDP, Range: 389, Source: 0.0.0.0/0 Type: Custom UDP Rule, Protocol: UDP, Range: 464, Source: 0.0.0.0/0 Type: Custom UDP Rule, Protocol: UDP, Range: 445, Source: 0.0.0.0/0 Type: Custom TCP Rule, Protocol: TCP, Range: 88, Source: 0.0.0.0/0 Type: Custom TCP Rule, Protocol: TCP, Range: 135, Source: 0.0.0.0/0 Type: Custom TCP Rule, Protocol: TCP, Range: 445, Source: 0.0.0.0/0 Type: Custom TCP Rule, Protocol: TCP, Range: 464, Source: 0.0.0.0/0 Type: Custom TCP Rule, Protocol: TCP, Range: 636, Source: 0.0.0.0/0 Type: Custom TCP Rule, Protocol: TCP, Range: 1024-65535, Source: 0.0.0.0/0 Type: Custom TCP Rule, Protocol: TCP, Range: 3268-33269, Source: 0.0.0.0/0 Type: DNS (UDP), Protocol: UDP, Range: 53, Source: 0.0.0.0/0 Type: DNS (TCP), Protocol: TCP, Range: 53, Source: 0.0.0.0/0 Type: LDAP, Protocol: TCP, Range: 389, Source: 0.0.0.0/0 Type: All ICMP, Protocol: All, Range: N/A, Source: 0.0.0.0/0 Outbound: Type: All traffic, Protocol: All, Range: All, Destination: 0.0.0.0/0 These security rules impact an internal network interface that is not exposed publicly. - */ - UpdateSecurityGroupForDirectoryControllers?: UpdateSecurityGroupForDirectoryControllers; - } - export interface AddIpRoutesResult { - } - export interface AddTagsToResourceRequest { - /** - * Identifier (ID) for the directory to which to add the tag. - */ - ResourceId: ResourceId; - /** - * The tags to be assigned to the directory. - */ - Tags: Tags; - } - export interface AddTagsToResourceResult { - } - export type AddedDateTime = Date; - export type AliasName = string; - export interface Attribute { - /** - * The name of the attribute. - */ - Name?: AttributeName; - /** - * The value of the attribute. - */ - Value?: AttributeValue; - } - export type AttributeName = string; - export type AttributeValue = string; - export type Attributes = Attribute[]; - export type AvailabilityZone = string; - export type AvailabilityZones = AvailabilityZone[]; - export interface CancelSchemaExtensionRequest { - /** - * The identifier of the directory whose schema extension will be canceled. - */ - DirectoryId: DirectoryId; - /** - * The identifier of the schema extension that will be canceled. - */ - SchemaExtensionId: SchemaExtensionId; - } - export interface CancelSchemaExtensionResult { - } - export type CidrIp = string; - export type CidrIps = CidrIp[]; - export type CloudOnlyDirectoriesLimitReached = boolean; - export interface Computer { - /** - * The identifier of the computer. - */ - ComputerId?: SID; - /** - * The computer name. - */ - ComputerName?: ComputerName; - /** - * An array of Attribute objects containing the LDAP attributes that belong to the computer account. - */ - ComputerAttributes?: Attributes; - } - export type ComputerName = string; - export type ComputerPassword = string; - export interface ConditionalForwarder { - /** - * The fully qualified domain name (FQDN) of the remote domains pointed to by the conditional forwarder. - */ - RemoteDomainName?: RemoteDomainName; - /** - * The IP addresses of the remote DNS server associated with RemoteDomainName. This is the IP address of the DNS server that your conditional forwarder points to. - */ - DnsIpAddrs?: DnsIpAddrs; - /** - * The replication scope of the conditional forwarder. The only allowed value is Domain, which will replicate the conditional forwarder to all of the domain controllers for your AWS directory. - */ - ReplicationScope?: ReplicationScope; - } - export type ConditionalForwarders = ConditionalForwarder[]; - export interface ConnectDirectoryRequest { - /** - * The fully-qualified name of the on-premises directory, such as corp.example.com. - */ - Name: DirectoryName; - /** - * The NetBIOS name of the on-premises directory, such as CORP. - */ - ShortName?: DirectoryShortName; - /** - * The password for the on-premises user account. - */ - Password: ConnectPassword; - /** - * A textual description for the directory. - */ - Description?: Description; - /** - * The size of the directory. - */ - Size: DirectorySize; - /** - * A DirectoryConnectSettings object that contains additional information for the operation. - */ - ConnectSettings: DirectoryConnectSettings; - } - export interface ConnectDirectoryResult { - /** - * The identifier of the new directory. - */ - DirectoryId?: DirectoryId; - } - export type ConnectPassword = string; - export type ConnectedDirectoriesLimitReached = boolean; - export interface CreateAliasRequest { - /** - * The identifier of the directory for which to create the alias. - */ - DirectoryId: DirectoryId; - /** - * The requested alias. The alias must be unique amongst all aliases in AWS. This operation throws an EntityAlreadyExistsException error if the alias already exists. - */ - Alias: AliasName; - } - export interface CreateAliasResult { - /** - * The identifier of the directory. - */ - DirectoryId?: DirectoryId; - /** - * The alias for the directory. - */ - Alias?: AliasName; - } - export interface CreateComputerRequest { - /** - * The identifier of the directory in which to create the computer account. - */ - DirectoryId: DirectoryId; - /** - * The name of the computer account. - */ - ComputerName: ComputerName; - /** - * A one-time password that is used to join the computer to the directory. You should generate a random, strong password to use for this parameter. - */ - Password: ComputerPassword; - /** - * The fully-qualified distinguished name of the organizational unit to place the computer account in. - */ - OrganizationalUnitDistinguishedName?: OrganizationalUnitDN; - /** - * An array of Attribute objects that contain any LDAP attributes to apply to the computer account. - */ - ComputerAttributes?: Attributes; - } - export interface CreateComputerResult { - /** - * A Computer object that represents the computer account. - */ - Computer?: Computer; - } - export interface CreateConditionalForwarderRequest { - /** - * The directory ID of the AWS directory for which you are creating the conditional forwarder. - */ - DirectoryId: DirectoryId; - /** - * The fully qualified domain name (FQDN) of the remote domain with which you will set up a trust relationship. - */ - RemoteDomainName: RemoteDomainName; - /** - * The IP addresses of the remote DNS server associated with RemoteDomainName. - */ - DnsIpAddrs: DnsIpAddrs; - } - export interface CreateConditionalForwarderResult { - } - export interface CreateDirectoryRequest { - /** - * The fully qualified name for the directory, such as corp.example.com. - */ - Name: DirectoryName; - /** - * The short name of the directory, such as CORP. - */ - ShortName?: DirectoryShortName; - /** - * The password for the directory administrator. The directory creation process creates a directory administrator account with the username Administrator and this password. - */ - Password: Password; - /** - * A textual description for the directory. - */ - Description?: Description; - /** - * The size of the directory. - */ - Size: DirectorySize; - /** - * A DirectoryVpcSettings object that contains additional information for the operation. - */ - VpcSettings?: DirectoryVpcSettings; - } - export interface CreateDirectoryResult { - /** - * The identifier of the directory that was created. - */ - DirectoryId?: DirectoryId; - } - export interface CreateMicrosoftADRequest { - /** - * The fully qualified domain name for the directory, such as corp.example.com. This name will resolve inside your VPC only. It does not need to be publicly resolvable. - */ - Name: DirectoryName; - /** - * The NetBIOS name for your domain. A short identifier for your domain, such as CORP. If you don't specify a NetBIOS name, it will default to the first part of your directory DNS. For example, CORP for the directory DNS corp.example.com. - */ - ShortName?: DirectoryShortName; - /** - * The password for the default administrative user named Admin. - */ - Password: Password; - /** - * A textual description for the directory. This label will appear on the AWS console Directory Details page after the directory is created. - */ - Description?: Description; - /** - * Contains VPC information for the CreateDirectory or CreateMicrosoftAD operation. - */ - VpcSettings: DirectoryVpcSettings; - } - export interface CreateMicrosoftADResult { - /** - * The identifier of the directory that was created. - */ - DirectoryId?: DirectoryId; - } - export type CreateSnapshotBeforeSchemaExtension = boolean; - export interface CreateSnapshotRequest { - /** - * The identifier of the directory of which to take a snapshot. - */ - DirectoryId: DirectoryId; - /** - * The descriptive name to apply to the snapshot. - */ - Name?: SnapshotName; - } - export interface CreateSnapshotResult { - /** - * The identifier of the snapshot that was created. - */ - SnapshotId?: SnapshotId; - } - export interface CreateTrustRequest { - /** - * The Directory ID of the Microsoft AD in the AWS cloud for which to establish the trust relationship. - */ - DirectoryId: DirectoryId; - /** - * The Fully Qualified Domain Name (FQDN) of the external domain for which to create the trust relationship. - */ - RemoteDomainName: RemoteDomainName; - /** - * The trust password. The must be the same password that was used when creating the trust relationship on the external domain. - */ - TrustPassword: TrustPassword; - /** - * The direction of the trust relationship. - */ - TrustDirection: TrustDirection; - /** - * The trust relationship type. - */ - TrustType?: TrustType; - /** - * The IP addresses of the remote DNS server associated with RemoteDomainName. - */ - ConditionalForwarderIpAddrs?: DnsIpAddrs; - } - export interface CreateTrustResult { - /** - * A unique identifier for the trust relationship that was created. - */ - TrustId?: TrustId; - } - export type CreatedDateTime = Date; - export type DeleteAssociatedConditionalForwarder = boolean; - export interface DeleteConditionalForwarderRequest { - /** - * The directory ID for which you are deleting the conditional forwarder. - */ - DirectoryId: DirectoryId; - /** - * The fully qualified domain name (FQDN) of the remote domain with which you are deleting the conditional forwarder. - */ - RemoteDomainName: RemoteDomainName; - } - export interface DeleteConditionalForwarderResult { - } - export interface DeleteDirectoryRequest { - /** - * The identifier of the directory to delete. - */ - DirectoryId: DirectoryId; - } - export interface DeleteDirectoryResult { - /** - * The directory identifier. - */ - DirectoryId?: DirectoryId; - } - export interface DeleteSnapshotRequest { - /** - * The identifier of the directory snapshot to be deleted. - */ - SnapshotId: SnapshotId; - } - export interface DeleteSnapshotResult { - /** - * The identifier of the directory snapshot that was deleted. - */ - SnapshotId?: SnapshotId; - } - export interface DeleteTrustRequest { - /** - * The Trust ID of the trust relationship to be deleted. - */ - TrustId: TrustId; - /** - * Delete a conditional forwarder as part of a DeleteTrustRequest. - */ - DeleteAssociatedConditionalForwarder?: DeleteAssociatedConditionalForwarder; - } - export interface DeleteTrustResult { - /** - * The Trust ID of the trust relationship that was deleted. - */ - TrustId?: TrustId; - } - export interface DeregisterEventTopicRequest { - /** - * The Directory ID to remove as a publisher. This directory will no longer send messages to the specified SNS topic. - */ - DirectoryId: DirectoryId; - /** - * The name of the SNS topic from which to remove the directory as a publisher. - */ - TopicName: TopicName; - } - export interface DeregisterEventTopicResult { - } - export interface DescribeConditionalForwardersRequest { - /** - * The directory ID for which to get the list of associated conditional forwarders. - */ - DirectoryId: DirectoryId; - /** - * The fully qualified domain names (FQDN) of the remote domains for which to get the list of associated conditional forwarders. If this member is null, all conditional forwarders are returned. - */ - RemoteDomainNames?: RemoteDomainNames; - } - export interface DescribeConditionalForwardersResult { - /** - * The list of conditional forwarders that have been created. - */ - ConditionalForwarders?: ConditionalForwarders; - } - export interface DescribeDirectoriesRequest { - /** - * A list of identifiers of the directories for which to obtain the information. If this member is null, all directories that belong to the current account are returned. An empty list results in an InvalidParameterException being thrown. - */ - DirectoryIds?: DirectoryIds; - /** - * The DescribeDirectoriesResult.NextToken value from a previous call to DescribeDirectories. Pass null if this is the first call. - */ - NextToken?: NextToken; - /** - * The maximum number of items to return. If this value is zero, the maximum number of items is specified by the limitations of the operation. - */ - Limit?: Limit; - } - export interface DescribeDirectoriesResult { - /** - * The list of DirectoryDescription objects that were retrieved. It is possible that this list contains less than the number of items specified in the Limit member of the request. This occurs if there are less than the requested number of items left to retrieve, or if the limitations of the operation have been exceeded. - */ - DirectoryDescriptions?: DirectoryDescriptions; - /** - * If not null, more results are available. Pass this value for the NextToken parameter in a subsequent call to DescribeDirectories to retrieve the next set of items. - */ - NextToken?: NextToken; - } - export interface DescribeDomainControllersRequest { - /** - * Identifier of the directory for which to retrieve the domain controller information. - */ - DirectoryId: DirectoryId; - /** - * A list of identifiers for the domain controllers whose information will be provided. - */ - DomainControllerIds?: DomainControllerIds; - /** - * The DescribeDomainControllers.NextToken value from a previous call to DescribeDomainControllers. Pass null if this is the first call. - */ - NextToken?: NextToken; - /** - * The maximum number of items to return. - */ - Limit?: Limit; - } - export interface DescribeDomainControllersResult { - /** - * List of the DomainController objects that were retrieved. - */ - DomainControllers?: DomainControllers; - /** - * If not null, more results are available. Pass this value for the NextToken parameter in a subsequent call to DescribeDomainControllers retrieve the next set of items. - */ - NextToken?: NextToken; - } - export interface DescribeEventTopicsRequest { - /** - * The Directory ID for which to get the list of associated SNS topics. If this member is null, associations for all Directory IDs are returned. - */ - DirectoryId?: DirectoryId; - /** - * A list of SNS topic names for which to obtain the information. If this member is null, all associations for the specified Directory ID are returned. An empty list results in an InvalidParameterException being thrown. - */ - TopicNames?: TopicNames; - } - export interface DescribeEventTopicsResult { - /** - * A list of SNS topic names that receive status messages from the specified Directory ID. - */ - EventTopics?: EventTopics; - } - export interface DescribeSnapshotsRequest { - /** - * The identifier of the directory for which to retrieve snapshot information. - */ - DirectoryId?: DirectoryId; - /** - * A list of identifiers of the snapshots to obtain the information for. If this member is null or empty, all snapshots are returned using the Limit and NextToken members. - */ - SnapshotIds?: SnapshotIds; - /** - * The DescribeSnapshotsResult.NextToken value from a previous call to DescribeSnapshots. Pass null if this is the first call. - */ - NextToken?: NextToken; - /** - * The maximum number of objects to return. - */ - Limit?: Limit; - } - export interface DescribeSnapshotsResult { - /** - * The list of Snapshot objects that were retrieved. It is possible that this list contains less than the number of items specified in the Limit member of the request. This occurs if there are less than the requested number of items left to retrieve, or if the limitations of the operation have been exceeded. - */ - Snapshots?: Snapshots; - /** - * If not null, more results are available. Pass this value in the NextToken member of a subsequent call to DescribeSnapshots. - */ - NextToken?: NextToken; - } - export interface DescribeTrustsRequest { - /** - * The Directory ID of the AWS directory that is a part of the requested trust relationship. - */ - DirectoryId?: DirectoryId; - /** - * A list of identifiers of the trust relationships for which to obtain the information. If this member is null, all trust relationships that belong to the current account are returned. An empty list results in an InvalidParameterException being thrown. - */ - TrustIds?: TrustIds; - /** - * The DescribeTrustsResult.NextToken value from a previous call to DescribeTrusts. Pass null if this is the first call. - */ - NextToken?: NextToken; - /** - * The maximum number of objects to return. - */ - Limit?: Limit; - } - export interface DescribeTrustsResult { - /** - * The list of Trust objects that were retrieved. It is possible that this list contains less than the number of items specified in the Limit member of the request. This occurs if there are less than the requested number of items left to retrieve, or if the limitations of the operation have been exceeded. - */ - Trusts?: Trusts; - /** - * If not null, more results are available. Pass this value for the NextToken parameter in a subsequent call to DescribeTrusts to retrieve the next set of items. - */ - NextToken?: NextToken; - } - export type Description = string; - export type DesiredNumberOfDomainControllers = number; - export interface DirectoryConnectSettings { - /** - * The identifier of the VPC in which the AD Connector is created. - */ - VpcId: VpcId; - /** - * A list of subnet identifiers in the VPC in which the AD Connector is created. - */ - SubnetIds: SubnetIds; - /** - * A list of one or more IP addresses of DNS servers or domain controllers in the on-premises directory. - */ - CustomerDnsIps: DnsIpAddrs; - /** - * The username of an account in the on-premises directory that is used to connect to the directory. This account must have the following privileges: Read users and groups Create computer objects Join computers to the domain - */ - CustomerUserName: UserName; - } - export interface DirectoryConnectSettingsDescription { - /** - * The identifier of the VPC that the AD Connector is in. - */ - VpcId?: VpcId; - /** - * A list of subnet identifiers in the VPC that the AD connector is in. - */ - SubnetIds?: SubnetIds; - /** - * The username of the service account in the on-premises directory. - */ - CustomerUserName?: UserName; - /** - * The security group identifier for the AD Connector directory. - */ - SecurityGroupId?: SecurityGroupId; - /** - * A list of the Availability Zones that the directory is in. - */ - AvailabilityZones?: AvailabilityZones; - /** - * The IP addresses of the AD Connector servers. - */ - ConnectIps?: IpAddrs; - } - export interface DirectoryDescription { - /** - * The directory identifier. - */ - DirectoryId?: DirectoryId; - /** - * The fully-qualified name of the directory. - */ - Name?: DirectoryName; - /** - * The short name of the directory. - */ - ShortName?: DirectoryShortName; - /** - * The directory size. - */ - Size?: DirectorySize; - /** - * The alias for the directory. If no alias has been created for the directory, the alias is the directory identifier, such as d-XXXXXXXXXX. - */ - Alias?: AliasName; - /** - * The access URL for the directory, such as http://<alias>.awsapps.com. If no alias has been created for the directory, <alias> is the directory identifier, such as d-XXXXXXXXXX. - */ - AccessUrl?: AccessUrl; - /** - * The textual description for the directory. - */ - Description?: Description; - /** - * The IP addresses of the DNS servers for the directory. For a Simple AD or Microsoft AD directory, these are the IP addresses of the Simple AD or Microsoft AD directory servers. For an AD Connector directory, these are the IP addresses of the DNS servers or domain controllers in the on-premises directory to which the AD Connector is connected. - */ - DnsIpAddrs?: DnsIpAddrs; - /** - * The current stage of the directory. - */ - Stage?: DirectoryStage; - /** - * Specifies when the directory was created. - */ - LaunchTime?: LaunchTime; - /** - * The date and time that the stage was last updated. - */ - StageLastUpdatedDateTime?: LastUpdatedDateTime; - /** - * The directory size. - */ - Type?: DirectoryType; - /** - * A DirectoryVpcSettingsDescription object that contains additional information about a directory. This member is only present if the directory is a Simple AD or Managed AD directory. - */ - VpcSettings?: DirectoryVpcSettingsDescription; - /** - * A DirectoryConnectSettingsDescription object that contains additional information about an AD Connector directory. This member is only present if the directory is an AD Connector directory. - */ - ConnectSettings?: DirectoryConnectSettingsDescription; - /** - * A RadiusSettings object that contains information about the RADIUS server configured for this directory. - */ - RadiusSettings?: RadiusSettings; - /** - * The status of the RADIUS MFA server connection. - */ - RadiusStatus?: RadiusStatus; - /** - * Additional information about the directory stage. - */ - StageReason?: StageReason; - /** - * Indicates if single-sign on is enabled for the directory. For more information, see EnableSso and DisableSso. - */ - SsoEnabled?: SsoEnabled; - /** - * The desired number of domain controllers in the directory if the directory is Microsoft AD. - */ - DesiredNumberOfDomainControllers?: DesiredNumberOfDomainControllers; - } - export type DirectoryDescriptions = DirectoryDescription[]; - export type DirectoryId = string; - export type DirectoryIds = DirectoryId[]; - export interface DirectoryLimits { - /** - * The maximum number of cloud directories allowed in the region. - */ - CloudOnlyDirectoriesLimit?: Limit; - /** - * The current number of cloud directories in the region. - */ - CloudOnlyDirectoriesCurrentCount?: Limit; - /** - * Indicates if the cloud directory limit has been reached. - */ - CloudOnlyDirectoriesLimitReached?: CloudOnlyDirectoriesLimitReached; - /** - * The maximum number of Microsoft AD directories allowed in the region. - */ - CloudOnlyMicrosoftADLimit?: Limit; - /** - * The current number of Microsoft AD directories in the region. - */ - CloudOnlyMicrosoftADCurrentCount?: Limit; - /** - * Indicates if the Microsoft AD directory limit has been reached. - */ - CloudOnlyMicrosoftADLimitReached?: CloudOnlyDirectoriesLimitReached; - /** - * The maximum number of connected directories allowed in the region. - */ - ConnectedDirectoriesLimit?: Limit; - /** - * The current number of connected directories in the region. - */ - ConnectedDirectoriesCurrentCount?: Limit; - /** - * Indicates if the connected directory limit has been reached. - */ - ConnectedDirectoriesLimitReached?: ConnectedDirectoriesLimitReached; - } - export type DirectoryName = string; - export type DirectoryShortName = string; - export type DirectorySize = "Small"|"Large"|string; - export type DirectoryStage = "Requested"|"Creating"|"Created"|"Active"|"Inoperable"|"Impaired"|"Restoring"|"RestoreFailed"|"Deleting"|"Deleted"|"Failed"|string; - export type DirectoryType = "SimpleAD"|"ADConnector"|"MicrosoftAD"|string; - export interface DirectoryVpcSettings { - /** - * The identifier of the VPC in which to create the directory. - */ - VpcId: VpcId; - /** - * The identifiers of the subnets for the directory servers. The two subnets must be in different Availability Zones. AWS Directory Service creates a directory server and a DNS server in each of these subnets. - */ - SubnetIds: SubnetIds; - } - export interface DirectoryVpcSettingsDescription { - /** - * The identifier of the VPC that the directory is in. - */ - VpcId?: VpcId; - /** - * The identifiers of the subnets for the directory servers. - */ - SubnetIds?: SubnetIds; - /** - * The security group identifier for the directory. If the directory was created before 8/1/2014, this is the identifier of the directory members security group that was created when the directory was created. If the directory was created after this date, this value is null. - */ - SecurityGroupId?: SecurityGroupId; - /** - * The list of Availability Zones that the directory is in. - */ - AvailabilityZones?: AvailabilityZones; - } - export interface DisableRadiusRequest { - /** - * The identifier of the directory for which to disable MFA. - */ - DirectoryId: DirectoryId; - } - export interface DisableRadiusResult { - } - export interface DisableSsoRequest { - /** - * The identifier of the directory for which to disable single-sign on. - */ - DirectoryId: DirectoryId; - /** - * The username of an alternate account to use to disable single-sign on. This is only used for AD Connector directories. This account must have privileges to remove a service principal name. If the AD Connector service account does not have privileges to remove a service principal name, you can specify an alternate account with the UserName and Password parameters. These credentials are only used to disable single sign-on and are not stored by the service. The AD Connector service account is not changed. - */ - UserName?: UserName; - /** - * The password of an alternate account to use to disable single-sign on. This is only used for AD Connector directories. For more information, see the UserName parameter. - */ - Password?: ConnectPassword; - } - export interface DisableSsoResult { - } - export type DnsIpAddrs = IpAddr[]; - export interface DomainController { - /** - * Identifier of the directory where the domain controller resides. - */ - DirectoryId?: DirectoryId; - /** - * Identifies a specific domain controller in the directory. - */ - DomainControllerId?: DomainControllerId; - /** - * The IP address of the domain controller. - */ - DnsIpAddr?: IpAddr; - /** - * The identifier of the VPC that contains the domain controller. - */ - VpcId?: VpcId; - /** - * Identifier of the subnet in the VPC that contains the domain controller. - */ - SubnetId?: SubnetId; - /** - * The Availability Zone where the domain controller is located. - */ - AvailabilityZone?: AvailabilityZone; - /** - * The status of the domain controller. - */ - Status?: DomainControllerStatus; - /** - * A description of the domain controller state. - */ - StatusReason?: DomainControllerStatusReason; - /** - * Specifies when the domain controller was created. - */ - LaunchTime?: LaunchTime; - /** - * The date and time that the status was last updated. - */ - StatusLastUpdatedDateTime?: LastUpdatedDateTime; - } - export type DomainControllerId = string; - export type DomainControllerIds = DomainControllerId[]; - export type DomainControllerStatus = "Creating"|"Active"|"Impaired"|"Restoring"|"Deleting"|"Deleted"|"Failed"|string; - export type DomainControllerStatusReason = string; - export type DomainControllers = DomainController[]; - export interface EnableRadiusRequest { - /** - * The identifier of the directory for which to enable MFA. - */ - DirectoryId: DirectoryId; - /** - * A RadiusSettings object that contains information about the RADIUS server. - */ - RadiusSettings: RadiusSettings; - } - export interface EnableRadiusResult { - } - export interface EnableSsoRequest { - /** - * The identifier of the directory for which to enable single-sign on. - */ - DirectoryId: DirectoryId; - /** - * The username of an alternate account to use to enable single-sign on. This is only used for AD Connector directories. This account must have privileges to add a service principal name. If the AD Connector service account does not have privileges to add a service principal name, you can specify an alternate account with the UserName and Password parameters. These credentials are only used to enable single sign-on and are not stored by the service. The AD Connector service account is not changed. - */ - UserName?: UserName; - /** - * The password of an alternate account to use to enable single-sign on. This is only used for AD Connector directories. For more information, see the UserName parameter. - */ - Password?: ConnectPassword; - } - export interface EnableSsoResult { - } - export type EndDateTime = Date; - export interface EventTopic { - /** - * The Directory ID of an AWS Directory Service directory that will publish status messages to an SNS topic. - */ - DirectoryId?: DirectoryId; - /** - * The name of an AWS SNS topic the receives status messages from the directory. - */ - TopicName?: TopicName; - /** - * The SNS topic ARN (Amazon Resource Name). - */ - TopicArn?: TopicArn; - /** - * The date and time of when you associated your directory with the SNS topic. - */ - CreatedDateTime?: CreatedDateTime; - /** - * The topic registration status. - */ - Status?: TopicStatus; - } - export type EventTopics = EventTopic[]; - export type ExceptionMessage = string; - export interface GetDirectoryLimitsRequest { - } - export interface GetDirectoryLimitsResult { - /** - * A DirectoryLimits object that contains the directory limits for the current region. - */ - DirectoryLimits?: DirectoryLimits; - } - export interface GetSnapshotLimitsRequest { - /** - * Contains the identifier of the directory to obtain the limits for. - */ - DirectoryId: DirectoryId; - } - export interface GetSnapshotLimitsResult { - /** - * A SnapshotLimits object that contains the manual snapshot limits for the specified directory. - */ - SnapshotLimits?: SnapshotLimits; - } - export type IpAddr = string; - export type IpAddrs = IpAddr[]; - export interface IpRoute { - /** - * IP address block using CIDR format, for example 10.0.0.0/24. This is often the address block of the DNS server used for your on-premises domain. For a single IP address use a CIDR address block with /32. For example 10.0.0.0/32. - */ - CidrIp?: CidrIp; - /** - * Description of the address block. - */ - Description?: Description; - } - export interface IpRouteInfo { - /** - * Identifier (ID) of the directory associated with the IP addresses. - */ - DirectoryId?: DirectoryId; - /** - * IP address block in the IpRoute. - */ - CidrIp?: CidrIp; - /** - * The status of the IP address block. - */ - IpRouteStatusMsg?: IpRouteStatusMsg; - /** - * The date and time the address block was added to the directory. - */ - AddedDateTime?: AddedDateTime; - /** - * The reason for the IpRouteStatusMsg. - */ - IpRouteStatusReason?: IpRouteStatusReason; - /** - * Description of the IpRouteInfo. - */ - Description?: Description; - } - export type IpRouteStatusMsg = "Adding"|"Added"|"Removing"|"Removed"|"AddFailed"|"RemoveFailed"|string; - export type IpRouteStatusReason = string; - export type IpRoutes = IpRoute[]; - export type IpRoutesInfo = IpRouteInfo[]; - export type LastUpdatedDateTime = Date; - export type LaunchTime = Date; - export type LdifContent = string; - export type Limit = number; - export interface ListIpRoutesRequest { - /** - * Identifier (ID) of the directory for which you want to retrieve the IP addresses. - */ - DirectoryId: DirectoryId; - /** - * The ListIpRoutes.NextToken value from a previous call to ListIpRoutes. Pass null if this is the first call. - */ - NextToken?: NextToken; - /** - * Maximum number of items to return. If this value is zero, the maximum number of items is specified by the limitations of the operation. - */ - Limit?: Limit; - } - export interface ListIpRoutesResult { - /** - * A list of IpRoutes. - */ - IpRoutesInfo?: IpRoutesInfo; - /** - * If not null, more results are available. Pass this value for the NextToken parameter in a subsequent call to ListIpRoutes to retrieve the next set of items. - */ - NextToken?: NextToken; - } - export interface ListSchemaExtensionsRequest { - /** - * The identifier of the directory from which to retrieve the schema extension information. - */ - DirectoryId: DirectoryId; - /** - * The ListSchemaExtensions.NextToken value from a previous call to ListSchemaExtensions. Pass null if this is the first call. - */ - NextToken?: NextToken; - /** - * The maximum number of items to return. - */ - Limit?: Limit; - } - export interface ListSchemaExtensionsResult { - /** - * Information about the schema extensions applied to the directory. - */ - SchemaExtensionsInfo?: SchemaExtensionsInfo; - /** - * If not null, more results are available. Pass this value for the NextToken parameter in a subsequent call to ListSchemaExtensions to retrieve the next set of items. - */ - NextToken?: NextToken; - } - export interface ListTagsForResourceRequest { - /** - * Identifier (ID) of the directory for which you want to retrieve tags. - */ - ResourceId: ResourceId; - /** - * Reserved for future use. - */ - NextToken?: NextToken; - /** - * Reserved for future use. - */ - Limit?: Limit; - } - export interface ListTagsForResourceResult { - /** - * List of tags returned by the ListTagsForResource operation. - */ - Tags?: Tags; - /** - * Reserved for future use. - */ - NextToken?: NextToken; - } - export type ManualSnapshotsLimitReached = boolean; - export type NextToken = string; - export type OrganizationalUnitDN = string; - export type Password = string; - export type PortNumber = number; - export type RadiusAuthenticationProtocol = "PAP"|"CHAP"|"MS-CHAPv1"|"MS-CHAPv2"|string; - export type RadiusDisplayLabel = string; - export type RadiusRetries = number; - export interface RadiusSettings { - /** - * An array of strings that contains the IP addresses of the RADIUS server endpoints, or the IP addresses of your RADIUS server load balancer. - */ - RadiusServers?: Servers; - /** - * The port that your RADIUS server is using for communications. Your on-premises network must allow inbound traffic over this port from the AWS Directory Service servers. - */ - RadiusPort?: PortNumber; - /** - * The amount of time, in seconds, to wait for the RADIUS server to respond. - */ - RadiusTimeout?: RadiusTimeout; - /** - * The maximum number of times that communication with the RADIUS server is attempted. - */ - RadiusRetries?: RadiusRetries; - /** - * Not currently used. - */ - SharedSecret?: RadiusSharedSecret; - /** - * The protocol specified for your RADIUS endpoints. - */ - AuthenticationProtocol?: RadiusAuthenticationProtocol; - /** - * Not currently used. - */ - DisplayLabel?: RadiusDisplayLabel; - /** - * Not currently used. - */ - UseSameUsername?: UseSameUsername; - } - export type RadiusSharedSecret = string; - export type RadiusStatus = "Creating"|"Completed"|"Failed"|string; - export type RadiusTimeout = number; - export interface RegisterEventTopicRequest { - /** - * The Directory ID that will publish status messages to the SNS topic. - */ - DirectoryId: DirectoryId; - /** - * The SNS topic name to which the directory will publish status messages. This SNS topic must be in the same region as the specified Directory ID. - */ - TopicName: TopicName; - } - export interface RegisterEventTopicResult { - } - export type RemoteDomainName = string; - export type RemoteDomainNames = RemoteDomainName[]; - export interface RemoveIpRoutesRequest { - /** - * Identifier (ID) of the directory from which you want to remove the IP addresses. - */ - DirectoryId: DirectoryId; - /** - * IP address blocks that you want to remove. - */ - CidrIps: CidrIps; - } - export interface RemoveIpRoutesResult { - } - export interface RemoveTagsFromResourceRequest { - /** - * Identifier (ID) of the directory from which to remove the tag. - */ - ResourceId: ResourceId; - /** - * The tag key (name) of the tag to be removed. - */ - TagKeys: TagKeys; - } - export interface RemoveTagsFromResourceResult { - } - export type ReplicationScope = "Domain"|string; - export type RequestId = string; - export type ResourceId = string; - export interface RestoreFromSnapshotRequest { - /** - * The identifier of the snapshot to restore from. - */ - SnapshotId: SnapshotId; - } - export interface RestoreFromSnapshotResult { - } - export type SID = string; - export type SchemaExtensionId = string; - export interface SchemaExtensionInfo { - /** - * The identifier of the directory to which the schema extension is applied. - */ - DirectoryId?: DirectoryId; - /** - * The identifier of the schema extension. - */ - SchemaExtensionId?: SchemaExtensionId; - /** - * A description of the schema extension. - */ - Description?: Description; - /** - * The current status of the schema extension. - */ - SchemaExtensionStatus?: SchemaExtensionStatus; - /** - * The reason for the SchemaExtensionStatus. - */ - SchemaExtensionStatusReason?: SchemaExtensionStatusReason; - /** - * The date and time that the schema extension started being applied to the directory. - */ - StartDateTime?: StartDateTime; - /** - * The date and time that the schema extension was completed. - */ - EndDateTime?: EndDateTime; - } - export type SchemaExtensionStatus = "Initializing"|"CreatingSnapshot"|"UpdatingSchema"|"Replicating"|"CancelInProgress"|"RollbackInProgress"|"Cancelled"|"Failed"|"Completed"|string; - export type SchemaExtensionStatusReason = string; - export type SchemaExtensionsInfo = SchemaExtensionInfo[]; - export type SecurityGroupId = string; - export type Server = string; - export type Servers = Server[]; - export interface Snapshot { - /** - * The directory identifier. - */ - DirectoryId?: DirectoryId; - /** - * The snapshot identifier. - */ - SnapshotId?: SnapshotId; - /** - * The snapshot type. - */ - Type?: SnapshotType; - /** - * The descriptive name of the snapshot. - */ - Name?: SnapshotName; - /** - * The snapshot status. - */ - Status?: SnapshotStatus; - /** - * The date and time that the snapshot was taken. - */ - StartTime?: StartTime; - } - export type SnapshotId = string; - export type SnapshotIds = SnapshotId[]; - export interface SnapshotLimits { - /** - * The maximum number of manual snapshots allowed. - */ - ManualSnapshotsLimit?: Limit; - /** - * The current number of manual snapshots of the directory. - */ - ManualSnapshotsCurrentCount?: Limit; - /** - * Indicates if the manual snapshot limit has been reached. - */ - ManualSnapshotsLimitReached?: ManualSnapshotsLimitReached; - } - export type SnapshotName = string; - export type SnapshotStatus = "Creating"|"Completed"|"Failed"|string; - export type SnapshotType = "Auto"|"Manual"|string; - export type Snapshots = Snapshot[]; - export type SsoEnabled = boolean; - export type StageReason = string; - export type StartDateTime = Date; - export interface StartSchemaExtensionRequest { - /** - * The identifier of the directory for which the schema extension will be applied to. - */ - DirectoryId: DirectoryId; - /** - * If true, creates a snapshot of the directory before applying the schema extension. - */ - CreateSnapshotBeforeSchemaExtension: CreateSnapshotBeforeSchemaExtension; - /** - * The LDIF file represented as a string. To construct the LdifContent string, precede each line as it would be formatted in an ldif file with \n. See the example request below for more details. The file size can be no larger than 1MB. - */ - LdifContent: LdifContent; - /** - * A description of the schema extension. - */ - Description: Description; - } - export interface StartSchemaExtensionResult { - /** - * The identifier of the schema extension that will be applied. - */ - SchemaExtensionId?: SchemaExtensionId; - } - export type StartTime = Date; - export type StateLastUpdatedDateTime = Date; - export type SubnetId = string; - export type SubnetIds = SubnetId[]; - export interface Tag { - /** - * Required name of the tag. The string value can be Unicode characters and cannot be prefixed with "aws:". The string can contain only the set of Unicode letters, digits, white-space, '_', '.', '/', '=', '+', '-' (Java regex: "^([\\p{L}\\p{Z}\\p{N}_.:/=+\\-]*)$"). - */ - Key: TagKey; - /** - * The optional value of the tag. The string value can be Unicode characters. The string can contain only the set of Unicode letters, digits, white-space, '_', '.', '/', '=', '+', '-' (Java regex: "^([\\p{L}\\p{Z}\\p{N}_.:/=+\\-]*)$"). - */ - Value: TagValue; - } - export type TagKey = string; - export type TagKeys = TagKey[]; - export type TagValue = string; - export type Tags = Tag[]; - export type TopicArn = string; - export type TopicName = string; - export type TopicNames = TopicName[]; - export type TopicStatus = "Registered"|"Topic not found"|"Failed"|"Deleted"|string; - export interface Trust { - /** - * The Directory ID of the AWS directory involved in the trust relationship. - */ - DirectoryId?: DirectoryId; - /** - * The unique ID of the trust relationship. - */ - TrustId?: TrustId; - /** - * The Fully Qualified Domain Name (FQDN) of the external domain involved in the trust relationship. - */ - RemoteDomainName?: RemoteDomainName; - /** - * The trust relationship type. - */ - TrustType?: TrustType; - /** - * The trust relationship direction. - */ - TrustDirection?: TrustDirection; - /** - * The trust relationship state. - */ - TrustState?: TrustState; - /** - * The date and time that the trust relationship was created. - */ - CreatedDateTime?: CreatedDateTime; - /** - * The date and time that the trust relationship was last updated. - */ - LastUpdatedDateTime?: LastUpdatedDateTime; - /** - * The date and time that the TrustState was last updated. - */ - StateLastUpdatedDateTime?: StateLastUpdatedDateTime; - /** - * The reason for the TrustState. - */ - TrustStateReason?: TrustStateReason; - } - export type TrustDirection = "One-Way: Outgoing"|"One-Way: Incoming"|"Two-Way"|string; - export type TrustId = string; - export type TrustIds = TrustId[]; - export type TrustPassword = string; - export type TrustState = "Creating"|"Created"|"Verifying"|"VerifyFailed"|"Verified"|"Deleting"|"Deleted"|"Failed"|string; - export type TrustStateReason = string; - export type TrustType = "Forest"|string; - export type Trusts = Trust[]; - export interface UpdateConditionalForwarderRequest { - /** - * The directory ID of the AWS directory for which to update the conditional forwarder. - */ - DirectoryId: DirectoryId; - /** - * The fully qualified domain name (FQDN) of the remote domain with which you will set up a trust relationship. - */ - RemoteDomainName: RemoteDomainName; - /** - * The updated IP addresses of the remote DNS server associated with the conditional forwarder. - */ - DnsIpAddrs: DnsIpAddrs; - } - export interface UpdateConditionalForwarderResult { - } - export interface UpdateNumberOfDomainControllersRequest { - /** - * Identifier of the directory to which the domain controllers will be added or removed. - */ - DirectoryId: DirectoryId; - /** - * The number of domain controllers desired in the directory. - */ - DesiredNumber: DesiredNumberOfDomainControllers; - } - export interface UpdateNumberOfDomainControllersResult { - } - export interface UpdateRadiusRequest { - /** - * The identifier of the directory for which to update the RADIUS server information. - */ - DirectoryId: DirectoryId; - /** - * A RadiusSettings object that contains information about the RADIUS server. - */ - RadiusSettings: RadiusSettings; - } - export interface UpdateRadiusResult { - } - export type UpdateSecurityGroupForDirectoryControllers = boolean; - export type UseSameUsername = boolean; - export type UserName = string; - export interface VerifyTrustRequest { - /** - * The unique Trust ID of the trust relationship to verify. - */ - TrustId: TrustId; - } - export interface VerifyTrustResult { - /** - * The unique Trust ID of the trust relationship that was verified. - */ - TrustId?: TrustId; - } - export type VpcId = string; - /** - * A string in YYYY-MM-DD format that represents the latest possible API version that can be used in this service. Specify 'latest' to use the latest possible version. - */ - export type apiVersion = "2015-04-16"|"latest"|string; - export interface ClientApiVersions { - /** - * A string in YYYY-MM-DD format that represents the latest possible API version that can be used in this service. Specify 'latest' to use the latest possible version. - */ - apiVersion?: apiVersion; - } - export type ClientConfiguration = ServiceConfigurationOptions & ClientApiVersions; - /** - * Contains interfaces for use with the DirectoryService client. - */ - export import Types = DirectoryService; -} -export = DirectoryService; diff --git a/workshops/monte-carlo-on-ec2-spot-fleet/src/web/node_modules/aws-sdk/clients/directoryservice.js b/workshops/monte-carlo-on-ec2-spot-fleet/src/web/node_modules/aws-sdk/clients/directoryservice.js deleted file mode 100644 index cab8f52e..00000000 --- a/workshops/monte-carlo-on-ec2-spot-fleet/src/web/node_modules/aws-sdk/clients/directoryservice.js +++ /dev/null @@ -1,18 +0,0 @@ -require('../lib/node_loader'); -var AWS = require('../lib/core'); -var Service = AWS.Service; -var apiLoader = AWS.apiLoader; - -apiLoader.services['directoryservice'] = {}; -AWS.DirectoryService = Service.defineService('directoryservice', ['2015-04-16']); -Object.defineProperty(apiLoader.services['directoryservice'], '2015-04-16', { - get: function get() { - var model = require('../apis/ds-2015-04-16.min.json'); - model.paginators = require('../apis/ds-2015-04-16.paginators.json').pagination; - return model; - }, - enumerable: true, - configurable: true -}); - -module.exports = AWS.DirectoryService; diff --git a/workshops/monte-carlo-on-ec2-spot-fleet/src/web/node_modules/aws-sdk/clients/discovery.d.ts b/workshops/monte-carlo-on-ec2-spot-fleet/src/web/node_modules/aws-sdk/clients/discovery.d.ts deleted file mode 100644 index a0837e1a..00000000 --- a/workshops/monte-carlo-on-ec2-spot-fleet/src/web/node_modules/aws-sdk/clients/discovery.d.ts +++ /dev/null @@ -1,842 +0,0 @@ -import {Request} from '../lib/request'; -import {Response} from '../lib/response'; -import {AWSError} from '../lib/error'; -import {Service} from '../lib/service'; -import {ServiceConfigurationOptions} from '../lib/service'; -import {ConfigBase as Config} from '../lib/config'; -interface Blob {} -declare class Discovery extends Service { - /** - * Constructs a service object. This object has one method for each API operation. - */ - constructor(options?: Discovery.Types.ClientConfiguration) - config: Config & Discovery.Types.ClientConfiguration; - /** - * Associates one or more configuration items with an application. - */ - associateConfigurationItemsToApplication(params: Discovery.Types.AssociateConfigurationItemsToApplicationRequest, callback?: (err: AWSError, data: Discovery.Types.AssociateConfigurationItemsToApplicationResponse) => void): Request; - /** - * Associates one or more configuration items with an application. - */ - associateConfigurationItemsToApplication(callback?: (err: AWSError, data: Discovery.Types.AssociateConfigurationItemsToApplicationResponse) => void): Request; - /** - * Creates an application with the given name and description. - */ - createApplication(params: Discovery.Types.CreateApplicationRequest, callback?: (err: AWSError, data: Discovery.Types.CreateApplicationResponse) => void): Request; - /** - * Creates an application with the given name and description. - */ - createApplication(callback?: (err: AWSError, data: Discovery.Types.CreateApplicationResponse) => void): Request; - /** - * Creates one or more tags for configuration items. Tags are metadata that help you categorize IT assets. This API accepts a list of multiple configuration items. - */ - createTags(params: Discovery.Types.CreateTagsRequest, callback?: (err: AWSError, data: Discovery.Types.CreateTagsResponse) => void): Request; - /** - * Creates one or more tags for configuration items. Tags are metadata that help you categorize IT assets. This API accepts a list of multiple configuration items. - */ - createTags(callback?: (err: AWSError, data: Discovery.Types.CreateTagsResponse) => void): Request; - /** - * Deletes a list of applications and their associations with configuration items. - */ - deleteApplications(params: Discovery.Types.DeleteApplicationsRequest, callback?: (err: AWSError, data: Discovery.Types.DeleteApplicationsResponse) => void): Request; - /** - * Deletes a list of applications and their associations with configuration items. - */ - deleteApplications(callback?: (err: AWSError, data: Discovery.Types.DeleteApplicationsResponse) => void): Request; - /** - * Deletes the association between configuration items and one or more tags. This API accepts a list of multiple configuration items. - */ - deleteTags(params: Discovery.Types.DeleteTagsRequest, callback?: (err: AWSError, data: Discovery.Types.DeleteTagsResponse) => void): Request; - /** - * Deletes the association between configuration items and one or more tags. This API accepts a list of multiple configuration items. - */ - deleteTags(callback?: (err: AWSError, data: Discovery.Types.DeleteTagsResponse) => void): Request; - /** - * Lists agents or the Connector by ID or lists all agents/Connectors associated with your user account if you did not specify an ID. - */ - describeAgents(params: Discovery.Types.DescribeAgentsRequest, callback?: (err: AWSError, data: Discovery.Types.DescribeAgentsResponse) => void): Request; - /** - * Lists agents or the Connector by ID or lists all agents/Connectors associated with your user account if you did not specify an ID. - */ - describeAgents(callback?: (err: AWSError, data: Discovery.Types.DescribeAgentsResponse) => void): Request; - /** - * Retrieves attributes for a list of configuration item IDs. All of the supplied IDs must be for the same asset type (server, application, process, or connection). Output fields are specific to the asset type selected. For example, the output for a server configuration item includes a list of attributes about the server, such as host name, operating system, and number of network cards. For a complete list of outputs for each asset type, see Using the DescribeConfigurations Action. - */ - describeConfigurations(params: Discovery.Types.DescribeConfigurationsRequest, callback?: (err: AWSError, data: Discovery.Types.DescribeConfigurationsResponse) => void): Request; - /** - * Retrieves attributes for a list of configuration item IDs. All of the supplied IDs must be for the same asset type (server, application, process, or connection). Output fields are specific to the asset type selected. For example, the output for a server configuration item includes a list of attributes about the server, such as host name, operating system, and number of network cards. For a complete list of outputs for each asset type, see Using the DescribeConfigurations Action. - */ - describeConfigurations(callback?: (err: AWSError, data: Discovery.Types.DescribeConfigurationsResponse) => void): Request; - /** - * Deprecated. Use DescribeExportTasks instead. Retrieves the status of a given export process. You can retrieve status from a maximum of 100 processes. - */ - describeExportConfigurations(params: Discovery.Types.DescribeExportConfigurationsRequest, callback?: (err: AWSError, data: Discovery.Types.DescribeExportConfigurationsResponse) => void): Request; - /** - * Deprecated. Use DescribeExportTasks instead. Retrieves the status of a given export process. You can retrieve status from a maximum of 100 processes. - */ - describeExportConfigurations(callback?: (err: AWSError, data: Discovery.Types.DescribeExportConfigurationsResponse) => void): Request; - /** - * Retrieve status of one or more export tasks. You can retrieve the status of up to 100 export tasks. - */ - describeExportTasks(params: Discovery.Types.DescribeExportTasksRequest, callback?: (err: AWSError, data: Discovery.Types.DescribeExportTasksResponse) => void): Request; - /** - * Retrieve status of one or more export tasks. You can retrieve the status of up to 100 export tasks. - */ - describeExportTasks(callback?: (err: AWSError, data: Discovery.Types.DescribeExportTasksResponse) => void): Request; - /** - * Retrieves a list of configuration items that are tagged with a specific tag. Or retrieves a list of all tags assigned to a specific configuration item. - */ - describeTags(params: Discovery.Types.DescribeTagsRequest, callback?: (err: AWSError, data: Discovery.Types.DescribeTagsResponse) => void): Request; - /** - * Retrieves a list of configuration items that are tagged with a specific tag. Or retrieves a list of all tags assigned to a specific configuration item. - */ - describeTags(callback?: (err: AWSError, data: Discovery.Types.DescribeTagsResponse) => void): Request; - /** - * Disassociates one or more configuration items from an application. - */ - disassociateConfigurationItemsFromApplication(params: Discovery.Types.DisassociateConfigurationItemsFromApplicationRequest, callback?: (err: AWSError, data: Discovery.Types.DisassociateConfigurationItemsFromApplicationResponse) => void): Request; - /** - * Disassociates one or more configuration items from an application. - */ - disassociateConfigurationItemsFromApplication(callback?: (err: AWSError, data: Discovery.Types.DisassociateConfigurationItemsFromApplicationResponse) => void): Request; - /** - * Deprecated. Use StartExportTask instead. Exports all discovered configuration data to an Amazon S3 bucket or an application that enables you to view and evaluate the data. Data includes tags and tag associations, processes, connections, servers, and system performance. This API returns an export ID that you can query using the DescribeExportConfigurations API. The system imposes a limit of two configuration exports in six hours. - */ - exportConfigurations(callback?: (err: AWSError, data: Discovery.Types.ExportConfigurationsResponse) => void): Request; - /** - * Retrieves a short summary of discovered assets. - */ - getDiscoverySummary(params: Discovery.Types.GetDiscoverySummaryRequest, callback?: (err: AWSError, data: Discovery.Types.GetDiscoverySummaryResponse) => void): Request; - /** - * Retrieves a short summary of discovered assets. - */ - getDiscoverySummary(callback?: (err: AWSError, data: Discovery.Types.GetDiscoverySummaryResponse) => void): Request; - /** - * Retrieves a list of configuration items according to criteria that you specify in a filter. The filter criteria identifies the relationship requirements. - */ - listConfigurations(params: Discovery.Types.ListConfigurationsRequest, callback?: (err: AWSError, data: Discovery.Types.ListConfigurationsResponse) => void): Request; - /** - * Retrieves a list of configuration items according to criteria that you specify in a filter. The filter criteria identifies the relationship requirements. - */ - listConfigurations(callback?: (err: AWSError, data: Discovery.Types.ListConfigurationsResponse) => void): Request; - /** - * Retrieves a list of servers that are one network hop away from a specified server. - */ - listServerNeighbors(params: Discovery.Types.ListServerNeighborsRequest, callback?: (err: AWSError, data: Discovery.Types.ListServerNeighborsResponse) => void): Request; - /** - * Retrieves a list of servers that are one network hop away from a specified server. - */ - listServerNeighbors(callback?: (err: AWSError, data: Discovery.Types.ListServerNeighborsResponse) => void): Request; - /** - * Instructs the specified agents or connectors to start collecting data. - */ - startDataCollectionByAgentIds(params: Discovery.Types.StartDataCollectionByAgentIdsRequest, callback?: (err: AWSError, data: Discovery.Types.StartDataCollectionByAgentIdsResponse) => void): Request; - /** - * Instructs the specified agents or connectors to start collecting data. - */ - startDataCollectionByAgentIds(callback?: (err: AWSError, data: Discovery.Types.StartDataCollectionByAgentIdsResponse) => void): Request; - /** - * Begins the export of discovered data to an S3 bucket. If you specify agentId in a filter, the task exports up to 72 hours of detailed data collected by the identified Application Discovery Agent, including network, process, and performance details. A time range for exported agent data may be set by using startTime and endTime. Export of detailed agent data is limited to five concurrently running exports. If you do not include an agentId filter, summary data is exported that includes both AWS Agentless Discovery Connector data and summary data from AWS Discovery Agents. Export of summary data is limited to two exports per day. - */ - startExportTask(params: Discovery.Types.StartExportTaskRequest, callback?: (err: AWSError, data: Discovery.Types.StartExportTaskResponse) => void): Request; - /** - * Begins the export of discovered data to an S3 bucket. If you specify agentId in a filter, the task exports up to 72 hours of detailed data collected by the identified Application Discovery Agent, including network, process, and performance details. A time range for exported agent data may be set by using startTime and endTime. Export of detailed agent data is limited to five concurrently running exports. If you do not include an agentId filter, summary data is exported that includes both AWS Agentless Discovery Connector data and summary data from AWS Discovery Agents. Export of summary data is limited to two exports per day. - */ - startExportTask(callback?: (err: AWSError, data: Discovery.Types.StartExportTaskResponse) => void): Request; - /** - * Instructs the specified agents or connectors to stop collecting data. - */ - stopDataCollectionByAgentIds(params: Discovery.Types.StopDataCollectionByAgentIdsRequest, callback?: (err: AWSError, data: Discovery.Types.StopDataCollectionByAgentIdsResponse) => void): Request; - /** - * Instructs the specified agents or connectors to stop collecting data. - */ - stopDataCollectionByAgentIds(callback?: (err: AWSError, data: Discovery.Types.StopDataCollectionByAgentIdsResponse) => void): Request; - /** - * Updates metadata about an application. - */ - updateApplication(params: Discovery.Types.UpdateApplicationRequest, callback?: (err: AWSError, data: Discovery.Types.UpdateApplicationResponse) => void): Request; - /** - * Updates metadata about an application. - */ - updateApplication(callback?: (err: AWSError, data: Discovery.Types.UpdateApplicationResponse) => void): Request; -} -declare namespace Discovery { - export interface AgentConfigurationStatus { - /** - * The agent/connector ID. - */ - agentId?: String; - /** - * Information about the status of the StartDataCollection and StopDataCollection operations. The system has recorded the data collection operation. The agent/connector receives this command the next time it polls for a new command. - */ - operationSucceeded?: Boolean; - /** - * A description of the operation performed. - */ - description?: String; - } - export type AgentConfigurationStatusList = AgentConfigurationStatus[]; - export type AgentId = string; - export type AgentIds = AgentId[]; - export interface AgentInfo { - /** - * The agent or connector ID. - */ - agentId?: AgentId; - /** - * The name of the host where the agent or connector resides. The host can be a server or virtual machine. - */ - hostName?: String; - /** - * Network details about the host where the agent or connector resides. - */ - agentNetworkInfoList?: AgentNetworkInfoList; - /** - * The ID of the connector. - */ - connectorId?: String; - /** - * The agent or connector version. - */ - version?: String; - /** - * The health of the agent or connector. - */ - health?: AgentStatus; - /** - * Time since agent or connector health was reported. - */ - lastHealthPingTime?: String; - /** - * Status of the collection process for an agent or connector. - */ - collectionStatus?: String; - /** - * Type of agent. - */ - agentType?: String; - /** - * Agent's first registration timestamp in UTC. - */ - registeredTime?: String; - } - export interface AgentNetworkInfo { - /** - * The IP address for the host where the agent/connector resides. - */ - ipAddress?: String; - /** - * The MAC address for the host where the agent/connector resides. - */ - macAddress?: String; - } - export type AgentNetworkInfoList = AgentNetworkInfo[]; - export type AgentStatus = "HEALTHY"|"UNHEALTHY"|"RUNNING"|"UNKNOWN"|"BLACKLISTED"|"SHUTDOWN"|string; - export type AgentsInfo = AgentInfo[]; - export type ApplicationId = string; - export type ApplicationIdsList = ApplicationId[]; - export interface AssociateConfigurationItemsToApplicationRequest { - /** - * The configuration ID of an application with which items are to be associated. - */ - applicationConfigurationId: ApplicationId; - /** - * The ID of each configuration item to be associated with an application. - */ - configurationIds: ConfigurationIdList; - } - export interface AssociateConfigurationItemsToApplicationResponse { - } - export type Boolean = boolean; - export type BoxedInteger = number; - export type Condition = string; - export type Configuration = {[key: string]: String}; - export type ConfigurationId = string; - export type ConfigurationIdList = ConfigurationId[]; - export type ConfigurationItemType = "SERVER"|"PROCESS"|"CONNECTION"|"APPLICATION"|string; - export interface ConfigurationTag { - /** - * A type of IT asset to tag. - */ - configurationType?: ConfigurationItemType; - /** - * The configuration ID for the item to tag. You can specify a list of keys and values. - */ - configurationId?: ConfigurationId; - /** - * A type of tag on which to filter. For example, serverType. - */ - key?: TagKey; - /** - * A value on which to filter. For example key = serverType and value = web server. - */ - value?: TagValue; - /** - * The time the configuration tag was created in Coordinated Universal Time (UTC). - */ - timeOfCreation?: TimeStamp; - } - export type ConfigurationTagSet = ConfigurationTag[]; - export type Configurations = Configuration[]; - export type ConfigurationsDownloadUrl = string; - export type ConfigurationsExportId = string; - export interface CreateApplicationRequest { - /** - * Name of the application to be created. - */ - name: String; - /** - * Description of the application to be created. - */ - description?: String; - } - export interface CreateApplicationResponse { - /** - * Configuration ID of an application to be created. - */ - configurationId?: String; - } - export interface CreateTagsRequest { - /** - * A list of configuration items that you want to tag. - */ - configurationIds: ConfigurationIdList; - /** - * Tags that you want to associate with one or more configuration items. Specify the tags that you want to create in a key-value format. For example: {"key": "serverType", "value": "webServer"} - */ - tags: TagSet; - } - export interface CreateTagsResponse { - } - export interface CustomerAgentInfo { - /** - * Number of active discovery agents. - */ - activeAgents: Integer; - /** - * Number of healthy discovery agents - */ - healthyAgents: Integer; - /** - * Number of blacklisted discovery agents. - */ - blackListedAgents: Integer; - /** - * Number of discovery agents with status SHUTDOWN. - */ - shutdownAgents: Integer; - /** - * Number of unhealthy discovery agents. - */ - unhealthyAgents: Integer; - /** - * Total number of discovery agents. - */ - totalAgents: Integer; - /** - * Number of unknown discovery agents. - */ - unknownAgents: Integer; - } - export interface CustomerConnectorInfo { - /** - * Number of active discovery connectors. - */ - activeConnectors: Integer; - /** - * Number of healthy discovery connectors. - */ - healthyConnectors: Integer; - /** - * Number of blacklisted discovery connectors. - */ - blackListedConnectors: Integer; - /** - * Number of discovery connectors with status SHUTDOWN, - */ - shutdownConnectors: Integer; - /** - * Number of unhealthy discovery connectors. - */ - unhealthyConnectors: Integer; - /** - * Total number of discovery connectors. - */ - totalConnectors: Integer; - /** - * Number of unknown discovery connectors. - */ - unknownConnectors: Integer; - } - export interface DeleteApplicationsRequest { - /** - * Configuration ID of an application to be deleted. - */ - configurationIds: ApplicationIdsList; - } - export interface DeleteApplicationsResponse { - } - export interface DeleteTagsRequest { - /** - * A list of configuration items with tags that you want to delete. - */ - configurationIds: ConfigurationIdList; - /** - * Tags that you want to delete from one or more configuration items. Specify the tags that you want to delete in a key-value format. For example: {"key": "serverType", "value": "webServer"} - */ - tags?: TagSet; - } - export interface DeleteTagsResponse { - } - export interface DescribeAgentsRequest { - /** - * The agent or the Connector IDs for which you want information. If you specify no IDs, the system returns information about all agents/Connectors associated with your AWS user account. - */ - agentIds?: AgentIds; - /** - * You can filter the request using various logical operators and a key-value format. For example: {"key": "collectionStatus", "value": "STARTED"} - */ - filters?: Filters; - /** - * The total number of agents/Connectors to return in a single page of output. The maximum value is 100. - */ - maxResults?: Integer; - /** - * Token to retrieve the next set of results. For example, if you previously specified 100 IDs for DescribeAgentsRequest$agentIds but set DescribeAgentsRequest$maxResults to 10, you received a set of 10 results along with a token. Use that token in this query to get the next set of 10. - */ - nextToken?: NextToken; - } - export interface DescribeAgentsResponse { - /** - * Lists agents or the Connector by ID or lists all agents/Connectors associated with your user account if you did not specify an agent/Connector ID. The output includes agent/Connector IDs, IP addresses, media access control (MAC) addresses, agent/Connector health, host name where the agent/Connector resides, and the version number of each agent/Connector. - */ - agentsInfo?: AgentsInfo; - /** - * Token to retrieve the next set of results. For example, if you specified 100 IDs for DescribeAgentsRequest$agentIds but set DescribeAgentsRequest$maxResults to 10, you received a set of 10 results along with this token. Use this token in the next query to retrieve the next set of 10. - */ - nextToken?: NextToken; - } - export type DescribeConfigurationsAttribute = {[key: string]: String}; - export type DescribeConfigurationsAttributes = DescribeConfigurationsAttribute[]; - export interface DescribeConfigurationsRequest { - /** - * One or more configuration IDs. - */ - configurationIds: ConfigurationIdList; - } - export interface DescribeConfigurationsResponse { - /** - * A key in the response map. The value is an array of data. - */ - configurations?: DescribeConfigurationsAttributes; - } - export interface DescribeExportConfigurationsRequest { - /** - * A unique identifier that you can use to query the export status. - */ - exportIds?: ExportIds; - /** - * The maximum number of results that you want to display as a part of the query. - */ - maxResults?: Integer; - /** - * A token to get the next set of results. For example, if you specify 100 IDs for DescribeExportConfigurationsRequest$exportIds but set DescribeExportConfigurationsRequest$maxResults to 10, you get results in a set of 10. Use the token in the query to get the next set of 10. - */ - nextToken?: NextToken; - } - export interface DescribeExportConfigurationsResponse { - /** - * Returns export details. When the status is complete, the response includes a URL for an Amazon S3 bucket where you can view the data in a CSV file. - */ - exportsInfo?: ExportsInfo; - /** - * A token to get the next set of results. For example, if you specify 100 IDs for DescribeExportConfigurationsRequest$exportIds but set DescribeExportConfigurationsRequest$maxResults to 10, you get results in a set of 10. Use the token in the query to get the next set of 10. - */ - nextToken?: NextToken; - } - export interface DescribeExportTasksRequest { - /** - * One or more unique identifiers used to query the status of an export request. - */ - exportIds?: ExportIds; - /** - * One or more filters. AgentId - ID of the agent whose collected data will be exported - */ - filters?: ExportFilters; - /** - * The maximum number of volume results returned by DescribeExportTasks in paginated output. When this parameter is used, DescribeExportTasks only returns maxResults results in a single page along with a nextToken response element. - */ - maxResults?: Integer; - /** - * The nextToken value returned from a previous paginated DescribeExportTasks request where maxResults was used and the results exceeded the value of that parameter. Pagination continues from the end of the previous results that returned the nextToken value. This value is null when there are no more results to return. - */ - nextToken?: NextToken; - } - export interface DescribeExportTasksResponse { - /** - * Contains one or more sets of export request details. When the status of a request is SUCCEEDED, the response includes a URL for an Amazon S3 bucket where you can view the data in a CSV file. - */ - exportsInfo?: ExportsInfo; - /** - * The nextToken value to include in a future DescribeExportTasks request. When the results of a DescribeExportTasks request exceed maxResults, this value can be used to retrieve the next page of results. This value is null when there are no more results to return. - */ - nextToken?: NextToken; - } - export interface DescribeTagsRequest { - /** - * You can filter the list using a key-value format. You can separate these items by using logical operators. Allowed filters include tagKey, tagValue, and configurationId. - */ - filters?: TagFilters; - /** - * The total number of items to return in a single page of output. The maximum value is 100. - */ - maxResults?: Integer; - /** - * A token to start the list. Use this token to get the next set of results. - */ - nextToken?: NextToken; - } - export interface DescribeTagsResponse { - /** - * Depending on the input, this is a list of configuration items tagged with a specific tag, or a list of tags for a specific configuration item. - */ - tags?: ConfigurationTagSet; - /** - * The call returns a token. Use this token to get the next set of results. - */ - nextToken?: NextToken; - } - export interface DisassociateConfigurationItemsFromApplicationRequest { - /** - * Configuration ID of an application from which each item is disassociated. - */ - applicationConfigurationId: ApplicationId; - /** - * Configuration ID of each item to be disassociated from an application. - */ - configurationIds: ConfigurationIdList; - } - export interface DisassociateConfigurationItemsFromApplicationResponse { - } - export interface ExportConfigurationsResponse { - /** - * A unique identifier that you can use to query the export status. - */ - exportId?: ConfigurationsExportId; - } - export type ExportDataFormat = "CSV"|"GRAPHML"|string; - export type ExportDataFormats = ExportDataFormat[]; - export interface ExportFilter { - /** - * A single ExportFilter name. Supported filters: agentId. - */ - name: FilterName; - /** - * A single agentId for a Discovery Agent. An agentId can be found using the DescribeAgents action. Typically an ADS agentId is in the form o-0123456789abcdef0. - */ - values: FilterValues; - /** - * Supported condition: EQUALS - */ - condition: Condition; - } - export type ExportFilters = ExportFilter[]; - export type ExportIds = ConfigurationsExportId[]; - export interface ExportInfo { - /** - * A unique identifier used to query an export. - */ - exportId: ConfigurationsExportId; - /** - * The status of the data export job. - */ - exportStatus: ExportStatus; - /** - * A status message provided for API callers. - */ - statusMessage: ExportStatusMessage; - /** - * A URL for an Amazon S3 bucket where you can review the exported data. The URL is displayed only if the export succeeded. - */ - configurationsDownloadUrl?: ConfigurationsDownloadUrl; - /** - * The time that the data export was initiated. - */ - exportRequestTime: ExportRequestTime; - /** - * If true, the export of agent information exceeded the size limit for a single export and the exported data is incomplete for the requested time range. To address this, select a smaller time range for the export by using startDate and endDate. - */ - isTruncated?: Boolean; - /** - * The value of startTime parameter in the StartExportTask request. If no startTime was requested, this result does not appear in ExportInfo. - */ - requestedStartTime?: TimeStamp; - /** - * The endTime used in the StartExportTask request. If no endTime was requested, this result does not appear in ExportInfo. - */ - requestedEndTime?: TimeStamp; - } - export type ExportRequestTime = Date; - export type ExportStatus = "FAILED"|"SUCCEEDED"|"IN_PROGRESS"|string; - export type ExportStatusMessage = string; - export type ExportsInfo = ExportInfo[]; - export interface Filter { - /** - * The name of the filter. - */ - name: String; - /** - * A string value on which to filter. For example, if you choose the destinationServer.osVersion filter name, you could specify Ubuntu for the value. - */ - values: FilterValues; - /** - * A conditional operator. The following operators are valid: EQUALS, NOT_EQUALS, CONTAINS, NOT_CONTAINS. If you specify multiple filters, the system utilizes all filters as though concatenated by AND. If you specify multiple values for a particular filter, the system differentiates the values using OR. Calling either DescribeConfigurations or ListConfigurations returns attributes of matching configuration items. - */ - condition: Condition; - } - export type FilterName = string; - export type FilterValue = string; - export type FilterValues = FilterValue[]; - export type Filters = Filter[]; - export interface GetDiscoverySummaryRequest { - } - export interface GetDiscoverySummaryResponse { - /** - * The number of servers discovered. - */ - servers?: Long; - /** - * The number of applications discovered. - */ - applications?: Long; - /** - * The number of servers mapped to applications. - */ - serversMappedToApplications?: Long; - /** - * The number of servers mapped to tags. - */ - serversMappedtoTags?: Long; - /** - * Details about discovered agents, including agent status and health. - */ - agentSummary?: CustomerAgentInfo; - /** - * Details about discovered connectors, including connector status and health. - */ - connectorSummary?: CustomerConnectorInfo; - } - export type Integer = number; - export interface ListConfigurationsRequest { - /** - * A valid configuration identified by Application Discovery Service. - */ - configurationType: ConfigurationItemType; - /** - * You can filter the request using various logical operators and a key-value format. For example: {"key": "serverType", "value": "webServer"} For a complete list of filter options and guidance about using them with this action, see Querying Discovered Configuration Items. - */ - filters?: Filters; - /** - * The total number of items to return. The maximum value is 100. - */ - maxResults?: Integer; - /** - * Token to retrieve the next set of results. For example, if a previous call to ListConfigurations returned 100 items, but you set ListConfigurationsRequest$maxResults to 10, you received a set of 10 results along with a token. Use that token in this query to get the next set of 10. - */ - nextToken?: NextToken; - /** - * Certain filter criteria return output that can be sorted in ascending or descending order. For a list of output characteristics for each filter, see Using the ListConfigurations Action. - */ - orderBy?: OrderByList; - } - export interface ListConfigurationsResponse { - /** - * Returns configuration details, including the configuration ID, attribute names, and attribute values. - */ - configurations?: Configurations; - /** - * Token to retrieve the next set of results. For example, if your call to ListConfigurations returned 100 items, but you set ListConfigurationsRequest$maxResults to 10, you received a set of 10 results along with this token. Use this token in the next query to retrieve the next set of 10. - */ - nextToken?: NextToken; - } - export interface ListServerNeighborsRequest { - /** - * Configuration ID of the server for which neighbors are being listed. - */ - configurationId: ConfigurationId; - /** - * Flag to indicate if port and protocol information is needed as part of the response. - */ - portInformationNeeded?: Boolean; - /** - * List of configuration IDs to test for one-hop-away. - */ - neighborConfigurationIds?: ConfigurationIdList; - /** - * Maximum number of results to return in a single page of output. - */ - maxResults?: Integer; - /** - * Token to retrieve the next set of results. For example, if you previously specified 100 IDs for ListServerNeighborsRequest$neighborConfigurationIds but set ListServerNeighborsRequest$maxResults to 10, you received a set of 10 results along with a token. Use that token in this query to get the next set of 10. - */ - nextToken?: String; - } - export interface ListServerNeighborsResponse { - /** - * List of distinct servers that are one hop away from the given server. - */ - neighbors: NeighborDetailsList; - /** - * Token to retrieve the next set of results. For example, if you specified 100 IDs for ListServerNeighborsRequest$neighborConfigurationIds but set ListServerNeighborsRequest$maxResults to 10, you received a set of 10 results along with this token. Use this token in the next query to retrieve the next set of 10. - */ - nextToken?: String; - /** - * Count of distinct servers that are one hop away from the given server. - */ - knownDependencyCount?: Long; - } - export type Long = number; - export type Message = string; - export interface NeighborConnectionDetail { - /** - * The ID of the server that opened the network connection. - */ - sourceServerId: ConfigurationId; - /** - * The ID of the server that accepted the network connection. - */ - destinationServerId: ConfigurationId; - /** - * The destination network port for the connection. - */ - destinationPort?: BoxedInteger; - /** - * The network protocol used for the connection. - */ - transportProtocol?: String; - /** - * The number of open network connections with the neighboring server. - */ - connectionsCount: Long; - } - export type NeighborDetailsList = NeighborConnectionDetail[]; - export type NextToken = string; - export interface OrderByElement { - /** - * The field on which to order. - */ - fieldName: String; - /** - * Ordering direction. - */ - sortOrder?: orderString; - } - export type OrderByList = OrderByElement[]; - export interface StartDataCollectionByAgentIdsRequest { - /** - * The IDs of the agents or connectors from which to start collecting data. If you send a request to an agent/connector ID that you do not have permission to contact, according to your AWS account, the service does not throw an exception. Instead, it returns the error in the Description field. If you send a request to multiple agents/connectors and you do not have permission to contact some of those agents/connectors, the system does not throw an exception. Instead, the system shows Failed in the Description field. - */ - agentIds: AgentIds; - } - export interface StartDataCollectionByAgentIdsResponse { - /** - * Information about agents or the connector that were instructed to start collecting data. Information includes the agent/connector ID, a description of the operation performed, and whether the agent/connector configuration was updated. - */ - agentsConfigurationStatus?: AgentConfigurationStatusList; - } - export interface StartExportTaskRequest { - /** - * The file format for the returned export data. Default value is CSV. - */ - exportDataFormat?: ExportDataFormats; - /** - * If a filter is present, it selects the single agentId of the Application Discovery Agent for which data is exported. The agentId can be found in the results of the DescribeAgents API or CLI. If no filter is present, startTime and endTime are ignored and exported data includes both Agentless Discovery Connector data and summary data from Application Discovery agents. - */ - filters?: ExportFilters; - /** - * The start timestamp for exported data from the single Application Discovery Agent selected in the filters. If no value is specified, data is exported starting from the first data collected by the agent. - */ - startTime?: TimeStamp; - /** - * The end timestamp for exported data from the single Application Discovery Agent selected in the filters. If no value is specified, exported data includes the most recent data collected by the agent. - */ - endTime?: TimeStamp; - } - export interface StartExportTaskResponse { - /** - * A unique identifier used to query the status of an export request. - */ - exportId?: ConfigurationsExportId; - } - export interface StopDataCollectionByAgentIdsRequest { - /** - * The IDs of the agents or connectors from which to stop collecting data. - */ - agentIds: AgentIds; - } - export interface StopDataCollectionByAgentIdsResponse { - /** - * Information about the agents or connector that were instructed to stop collecting data. Information includes the agent/connector ID, a description of the operation performed, and whether the agent/connector configuration was updated. - */ - agentsConfigurationStatus?: AgentConfigurationStatusList; - } - export type String = string; - export interface Tag { - /** - * The type of tag on which to filter. - */ - key: TagKey; - /** - * A value for a tag key on which to filter. - */ - value: TagValue; - } - export interface TagFilter { - /** - * A name of the tag filter. - */ - name: FilterName; - /** - * Values for the tag filter. - */ - values: FilterValues; - } - export type TagFilters = TagFilter[]; - export type TagKey = string; - export type TagSet = Tag[]; - export type TagValue = string; - export type TimeStamp = Date; - export interface UpdateApplicationRequest { - /** - * Configuration ID of the application to be updated. - */ - configurationId: ApplicationId; - /** - * New name of the application to be updated. - */ - name?: String; - /** - * New description of the application to be updated. - */ - description?: String; - } - export interface UpdateApplicationResponse { - } - export type orderString = "ASC"|"DESC"|string; - /** - * A string in YYYY-MM-DD format that represents the latest possible API version that can be used in this service. Specify 'latest' to use the latest possible version. - */ - export type apiVersion = "2015-11-01"|"latest"|string; - export interface ClientApiVersions { - /** - * A string in YYYY-MM-DD format that represents the latest possible API version that can be used in this service. Specify 'latest' to use the latest possible version. - */ - apiVersion?: apiVersion; - } - export type ClientConfiguration = ServiceConfigurationOptions & ClientApiVersions; - /** - * Contains interfaces for use with the Discovery client. - */ - export import Types = Discovery; -} -export = Discovery; diff --git a/workshops/monte-carlo-on-ec2-spot-fleet/src/web/node_modules/aws-sdk/clients/discovery.js b/workshops/monte-carlo-on-ec2-spot-fleet/src/web/node_modules/aws-sdk/clients/discovery.js deleted file mode 100644 index 92fa4ea9..00000000 --- a/workshops/monte-carlo-on-ec2-spot-fleet/src/web/node_modules/aws-sdk/clients/discovery.js +++ /dev/null @@ -1,18 +0,0 @@ -require('../lib/node_loader'); -var AWS = require('../lib/core'); -var Service = AWS.Service; -var apiLoader = AWS.apiLoader; - -apiLoader.services['discovery'] = {}; -AWS.Discovery = Service.defineService('discovery', ['2015-11-01']); -Object.defineProperty(apiLoader.services['discovery'], '2015-11-01', { - get: function get() { - var model = require('../apis/discovery-2015-11-01.min.json'); - model.paginators = require('../apis/discovery-2015-11-01.paginators.json').pagination; - return model; - }, - enumerable: true, - configurable: true -}); - -module.exports = AWS.Discovery; diff --git a/workshops/monte-carlo-on-ec2-spot-fleet/src/web/node_modules/aws-sdk/clients/dms.d.ts b/workshops/monte-carlo-on-ec2-spot-fleet/src/web/node_modules/aws-sdk/clients/dms.d.ts deleted file mode 100644 index 2f1f519d..00000000 --- a/workshops/monte-carlo-on-ec2-spot-fleet/src/web/node_modules/aws-sdk/clients/dms.d.ts +++ /dev/null @@ -1,2085 +0,0 @@ -import {Request} from '../lib/request'; -import {Response} from '../lib/response'; -import {AWSError} from '../lib/error'; -import {Service} from '../lib/service'; -import {ServiceConfigurationOptions} from '../lib/service'; -import {ConfigBase as Config} from '../lib/config'; -interface Blob {} -declare class DMS extends Service { - /** - * Constructs a service object. This object has one method for each API operation. - */ - constructor(options?: DMS.Types.ClientConfiguration) - config: Config & DMS.Types.ClientConfiguration; - /** - * Adds metadata tags to a DMS resource, including replication instance, endpoint, security group, and migration task. These tags can also be used with cost allocation reporting to track cost associated with DMS resources, or used in a Condition statement in an IAM policy for DMS. - */ - addTagsToResource(params: DMS.Types.AddTagsToResourceMessage, callback?: (err: AWSError, data: DMS.Types.AddTagsToResourceResponse) => void): Request; - /** - * Adds metadata tags to a DMS resource, including replication instance, endpoint, security group, and migration task. These tags can also be used with cost allocation reporting to track cost associated with DMS resources, or used in a Condition statement in an IAM policy for DMS. - */ - addTagsToResource(callback?: (err: AWSError, data: DMS.Types.AddTagsToResourceResponse) => void): Request; - /** - * Creates an endpoint using the provided settings. - */ - createEndpoint(params: DMS.Types.CreateEndpointMessage, callback?: (err: AWSError, data: DMS.Types.CreateEndpointResponse) => void): Request; - /** - * Creates an endpoint using the provided settings. - */ - createEndpoint(callback?: (err: AWSError, data: DMS.Types.CreateEndpointResponse) => void): Request; - /** - * Creates an AWS DMS event notification subscription. You can specify the type of source (SourceType) you want to be notified of, provide a list of AWS DMS source IDs (SourceIds) that triggers the events, and provide a list of event categories (EventCategories) for events you want to be notified of. If you specify both the SourceType and SourceIds, such as SourceType = replication-instance and SourceIdentifier = my-replinstance, you will be notified of all the replication instance events for the specified source. If you specify a SourceType but don't specify a SourceIdentifier, you receive notice of the events for that source type for all your AWS DMS sources. If you don't specify either SourceType nor SourceIdentifier, you will be notified of events generated from all AWS DMS sources belonging to your customer account. For more information about AWS DMS events, see Working with Events and Notifications in the AWS Database MIgration Service User Guide. - */ - createEventSubscription(params: DMS.Types.CreateEventSubscriptionMessage, callback?: (err: AWSError, data: DMS.Types.CreateEventSubscriptionResponse) => void): Request; - /** - * Creates an AWS DMS event notification subscription. You can specify the type of source (SourceType) you want to be notified of, provide a list of AWS DMS source IDs (SourceIds) that triggers the events, and provide a list of event categories (EventCategories) for events you want to be notified of. If you specify both the SourceType and SourceIds, such as SourceType = replication-instance and SourceIdentifier = my-replinstance, you will be notified of all the replication instance events for the specified source. If you specify a SourceType but don't specify a SourceIdentifier, you receive notice of the events for that source type for all your AWS DMS sources. If you don't specify either SourceType nor SourceIdentifier, you will be notified of events generated from all AWS DMS sources belonging to your customer account. For more information about AWS DMS events, see Working with Events and Notifications in the AWS Database MIgration Service User Guide. - */ - createEventSubscription(callback?: (err: AWSError, data: DMS.Types.CreateEventSubscriptionResponse) => void): Request; - /** - * Creates the replication instance using the specified parameters. - */ - createReplicationInstance(params: DMS.Types.CreateReplicationInstanceMessage, callback?: (err: AWSError, data: DMS.Types.CreateReplicationInstanceResponse) => void): Request; - /** - * Creates the replication instance using the specified parameters. - */ - createReplicationInstance(callback?: (err: AWSError, data: DMS.Types.CreateReplicationInstanceResponse) => void): Request; - /** - * Creates a replication subnet group given a list of the subnet IDs in a VPC. - */ - createReplicationSubnetGroup(params: DMS.Types.CreateReplicationSubnetGroupMessage, callback?: (err: AWSError, data: DMS.Types.CreateReplicationSubnetGroupResponse) => void): Request; - /** - * Creates a replication subnet group given a list of the subnet IDs in a VPC. - */ - createReplicationSubnetGroup(callback?: (err: AWSError, data: DMS.Types.CreateReplicationSubnetGroupResponse) => void): Request; - /** - * Creates a replication task using the specified parameters. - */ - createReplicationTask(params: DMS.Types.CreateReplicationTaskMessage, callback?: (err: AWSError, data: DMS.Types.CreateReplicationTaskResponse) => void): Request; - /** - * Creates a replication task using the specified parameters. - */ - createReplicationTask(callback?: (err: AWSError, data: DMS.Types.CreateReplicationTaskResponse) => void): Request; - /** - * Deletes the specified certificate. - */ - deleteCertificate(params: DMS.Types.DeleteCertificateMessage, callback?: (err: AWSError, data: DMS.Types.DeleteCertificateResponse) => void): Request; - /** - * Deletes the specified certificate. - */ - deleteCertificate(callback?: (err: AWSError, data: DMS.Types.DeleteCertificateResponse) => void): Request; - /** - * Deletes the specified endpoint. All tasks associated with the endpoint must be deleted before you can delete the endpoint. - */ - deleteEndpoint(params: DMS.Types.DeleteEndpointMessage, callback?: (err: AWSError, data: DMS.Types.DeleteEndpointResponse) => void): Request; - /** - * Deletes the specified endpoint. All tasks associated with the endpoint must be deleted before you can delete the endpoint. - */ - deleteEndpoint(callback?: (err: AWSError, data: DMS.Types.DeleteEndpointResponse) => void): Request; - /** - * Deletes an AWS DMS event subscription. - */ - deleteEventSubscription(params: DMS.Types.DeleteEventSubscriptionMessage, callback?: (err: AWSError, data: DMS.Types.DeleteEventSubscriptionResponse) => void): Request; - /** - * Deletes an AWS DMS event subscription. - */ - deleteEventSubscription(callback?: (err: AWSError, data: DMS.Types.DeleteEventSubscriptionResponse) => void): Request; - /** - * Deletes the specified replication instance. You must delete any migration tasks that are associated with the replication instance before you can delete it. - */ - deleteReplicationInstance(params: DMS.Types.DeleteReplicationInstanceMessage, callback?: (err: AWSError, data: DMS.Types.DeleteReplicationInstanceResponse) => void): Request; - /** - * Deletes the specified replication instance. You must delete any migration tasks that are associated with the replication instance before you can delete it. - */ - deleteReplicationInstance(callback?: (err: AWSError, data: DMS.Types.DeleteReplicationInstanceResponse) => void): Request; - /** - * Deletes a subnet group. - */ - deleteReplicationSubnetGroup(params: DMS.Types.DeleteReplicationSubnetGroupMessage, callback?: (err: AWSError, data: DMS.Types.DeleteReplicationSubnetGroupResponse) => void): Request; - /** - * Deletes a subnet group. - */ - deleteReplicationSubnetGroup(callback?: (err: AWSError, data: DMS.Types.DeleteReplicationSubnetGroupResponse) => void): Request; - /** - * Deletes the specified replication task. - */ - deleteReplicationTask(params: DMS.Types.DeleteReplicationTaskMessage, callback?: (err: AWSError, data: DMS.Types.DeleteReplicationTaskResponse) => void): Request; - /** - * Deletes the specified replication task. - */ - deleteReplicationTask(callback?: (err: AWSError, data: DMS.Types.DeleteReplicationTaskResponse) => void): Request; - /** - * Lists all of the AWS DMS attributes for a customer account. The attributes include AWS DMS quotas for the account, such as the number of replication instances allowed. The description for a quota includes the quota name, current usage toward that quota, and the quota's maximum value. This command does not take any parameters. - */ - describeAccountAttributes(params: DMS.Types.DescribeAccountAttributesMessage, callback?: (err: AWSError, data: DMS.Types.DescribeAccountAttributesResponse) => void): Request; - /** - * Lists all of the AWS DMS attributes for a customer account. The attributes include AWS DMS quotas for the account, such as the number of replication instances allowed. The description for a quota includes the quota name, current usage toward that quota, and the quota's maximum value. This command does not take any parameters. - */ - describeAccountAttributes(callback?: (err: AWSError, data: DMS.Types.DescribeAccountAttributesResponse) => void): Request; - /** - * Provides a description of the certificate. - */ - describeCertificates(params: DMS.Types.DescribeCertificatesMessage, callback?: (err: AWSError, data: DMS.Types.DescribeCertificatesResponse) => void): Request; - /** - * Provides a description of the certificate. - */ - describeCertificates(callback?: (err: AWSError, data: DMS.Types.DescribeCertificatesResponse) => void): Request; - /** - * Describes the status of the connections that have been made between the replication instance and an endpoint. Connections are created when you test an endpoint. - */ - describeConnections(params: DMS.Types.DescribeConnectionsMessage, callback?: (err: AWSError, data: DMS.Types.DescribeConnectionsResponse) => void): Request; - /** - * Describes the status of the connections that have been made between the replication instance and an endpoint. Connections are created when you test an endpoint. - */ - describeConnections(callback?: (err: AWSError, data: DMS.Types.DescribeConnectionsResponse) => void): Request; - /** - * Returns information about the type of endpoints available. - */ - describeEndpointTypes(params: DMS.Types.DescribeEndpointTypesMessage, callback?: (err: AWSError, data: DMS.Types.DescribeEndpointTypesResponse) => void): Request; - /** - * Returns information about the type of endpoints available. - */ - describeEndpointTypes(callback?: (err: AWSError, data: DMS.Types.DescribeEndpointTypesResponse) => void): Request; - /** - * Returns information about the endpoints for your account in the current region. - */ - describeEndpoints(params: DMS.Types.DescribeEndpointsMessage, callback?: (err: AWSError, data: DMS.Types.DescribeEndpointsResponse) => void): Request; - /** - * Returns information about the endpoints for your account in the current region. - */ - describeEndpoints(callback?: (err: AWSError, data: DMS.Types.DescribeEndpointsResponse) => void): Request; - /** - * Lists categories for all event source types, or, if specified, for a specified source type. You can see a list of the event categories and source types in Working with Events and Notifications in the AWS Database Migration Service User Guide. - */ - describeEventCategories(params: DMS.Types.DescribeEventCategoriesMessage, callback?: (err: AWSError, data: DMS.Types.DescribeEventCategoriesResponse) => void): Request; - /** - * Lists categories for all event source types, or, if specified, for a specified source type. You can see a list of the event categories and source types in Working with Events and Notifications in the AWS Database Migration Service User Guide. - */ - describeEventCategories(callback?: (err: AWSError, data: DMS.Types.DescribeEventCategoriesResponse) => void): Request; - /** - * Lists all the event subscriptions for a customer account. The description of a subscription includes SubscriptionName, SNSTopicARN, CustomerID, SourceType, SourceID, CreationTime, and Status. If you specify SubscriptionName, this action lists the description for that subscription. - */ - describeEventSubscriptions(params: DMS.Types.DescribeEventSubscriptionsMessage, callback?: (err: AWSError, data: DMS.Types.DescribeEventSubscriptionsResponse) => void): Request; - /** - * Lists all the event subscriptions for a customer account. The description of a subscription includes SubscriptionName, SNSTopicARN, CustomerID, SourceType, SourceID, CreationTime, and Status. If you specify SubscriptionName, this action lists the description for that subscription. - */ - describeEventSubscriptions(callback?: (err: AWSError, data: DMS.Types.DescribeEventSubscriptionsResponse) => void): Request; - /** - * Lists events for a given source identifier and source type. You can also specify a start and end time. For more information on AWS DMS events, see Working with Events and Notifications . - */ - describeEvents(params: DMS.Types.DescribeEventsMessage, callback?: (err: AWSError, data: DMS.Types.DescribeEventsResponse) => void): Request; - /** - * Lists events for a given source identifier and source type. You can also specify a start and end time. For more information on AWS DMS events, see Working with Events and Notifications . - */ - describeEvents(callback?: (err: AWSError, data: DMS.Types.DescribeEventsResponse) => void): Request; - /** - * Returns information about the replication instance types that can be created in the specified region. - */ - describeOrderableReplicationInstances(params: DMS.Types.DescribeOrderableReplicationInstancesMessage, callback?: (err: AWSError, data: DMS.Types.DescribeOrderableReplicationInstancesResponse) => void): Request; - /** - * Returns information about the replication instance types that can be created in the specified region. - */ - describeOrderableReplicationInstances(callback?: (err: AWSError, data: DMS.Types.DescribeOrderableReplicationInstancesResponse) => void): Request; - /** - * Returns the status of the RefreshSchemas operation. - */ - describeRefreshSchemasStatus(params: DMS.Types.DescribeRefreshSchemasStatusMessage, callback?: (err: AWSError, data: DMS.Types.DescribeRefreshSchemasStatusResponse) => void): Request; - /** - * Returns the status of the RefreshSchemas operation. - */ - describeRefreshSchemasStatus(callback?: (err: AWSError, data: DMS.Types.DescribeRefreshSchemasStatusResponse) => void): Request; - /** - * Returns information about replication instances for your account in the current region. - */ - describeReplicationInstances(params: DMS.Types.DescribeReplicationInstancesMessage, callback?: (err: AWSError, data: DMS.Types.DescribeReplicationInstancesResponse) => void): Request; - /** - * Returns information about replication instances for your account in the current region. - */ - describeReplicationInstances(callback?: (err: AWSError, data: DMS.Types.DescribeReplicationInstancesResponse) => void): Request; - /** - * Returns information about the replication subnet groups. - */ - describeReplicationSubnetGroups(params: DMS.Types.DescribeReplicationSubnetGroupsMessage, callback?: (err: AWSError, data: DMS.Types.DescribeReplicationSubnetGroupsResponse) => void): Request; - /** - * Returns information about the replication subnet groups. - */ - describeReplicationSubnetGroups(callback?: (err: AWSError, data: DMS.Types.DescribeReplicationSubnetGroupsResponse) => void): Request; - /** - * Returns information about replication tasks for your account in the current region. - */ - describeReplicationTasks(params: DMS.Types.DescribeReplicationTasksMessage, callback?: (err: AWSError, data: DMS.Types.DescribeReplicationTasksResponse) => void): Request; - /** - * Returns information about replication tasks for your account in the current region. - */ - describeReplicationTasks(callback?: (err: AWSError, data: DMS.Types.DescribeReplicationTasksResponse) => void): Request; - /** - * Returns information about the schema for the specified endpoint. - */ - describeSchemas(params: DMS.Types.DescribeSchemasMessage, callback?: (err: AWSError, data: DMS.Types.DescribeSchemasResponse) => void): Request; - /** - * Returns information about the schema for the specified endpoint. - */ - describeSchemas(callback?: (err: AWSError, data: DMS.Types.DescribeSchemasResponse) => void): Request; - /** - * Returns table statistics on the database migration task, including table name, rows inserted, rows updated, and rows deleted. Note that the "last updated" column the DMS console only indicates the time that AWS DMS last updated the table statistics record for a table. It does not indicate the time of the last update to the table. - */ - describeTableStatistics(params: DMS.Types.DescribeTableStatisticsMessage, callback?: (err: AWSError, data: DMS.Types.DescribeTableStatisticsResponse) => void): Request; - /** - * Returns table statistics on the database migration task, including table name, rows inserted, rows updated, and rows deleted. Note that the "last updated" column the DMS console only indicates the time that AWS DMS last updated the table statistics record for a table. It does not indicate the time of the last update to the table. - */ - describeTableStatistics(callback?: (err: AWSError, data: DMS.Types.DescribeTableStatisticsResponse) => void): Request; - /** - * Uploads the specified certificate. - */ - importCertificate(params: DMS.Types.ImportCertificateMessage, callback?: (err: AWSError, data: DMS.Types.ImportCertificateResponse) => void): Request; - /** - * Uploads the specified certificate. - */ - importCertificate(callback?: (err: AWSError, data: DMS.Types.ImportCertificateResponse) => void): Request; - /** - * Lists all tags for an AWS DMS resource. - */ - listTagsForResource(params: DMS.Types.ListTagsForResourceMessage, callback?: (err: AWSError, data: DMS.Types.ListTagsForResourceResponse) => void): Request; - /** - * Lists all tags for an AWS DMS resource. - */ - listTagsForResource(callback?: (err: AWSError, data: DMS.Types.ListTagsForResourceResponse) => void): Request; - /** - * Modifies the specified endpoint. - */ - modifyEndpoint(params: DMS.Types.ModifyEndpointMessage, callback?: (err: AWSError, data: DMS.Types.ModifyEndpointResponse) => void): Request; - /** - * Modifies the specified endpoint. - */ - modifyEndpoint(callback?: (err: AWSError, data: DMS.Types.ModifyEndpointResponse) => void): Request; - /** - * Modifies an existing AWS DMS event notification subscription. - */ - modifyEventSubscription(params: DMS.Types.ModifyEventSubscriptionMessage, callback?: (err: AWSError, data: DMS.Types.ModifyEventSubscriptionResponse) => void): Request; - /** - * Modifies an existing AWS DMS event notification subscription. - */ - modifyEventSubscription(callback?: (err: AWSError, data: DMS.Types.ModifyEventSubscriptionResponse) => void): Request; - /** - * Modifies the replication instance to apply new settings. You can change one or more parameters by specifying these parameters and the new values in the request. Some settings are applied during the maintenance window. - */ - modifyReplicationInstance(params: DMS.Types.ModifyReplicationInstanceMessage, callback?: (err: AWSError, data: DMS.Types.ModifyReplicationInstanceResponse) => void): Request; - /** - * Modifies the replication instance to apply new settings. You can change one or more parameters by specifying these parameters and the new values in the request. Some settings are applied during the maintenance window. - */ - modifyReplicationInstance(callback?: (err: AWSError, data: DMS.Types.ModifyReplicationInstanceResponse) => void): Request; - /** - * Modifies the settings for the specified replication subnet group. - */ - modifyReplicationSubnetGroup(params: DMS.Types.ModifyReplicationSubnetGroupMessage, callback?: (err: AWSError, data: DMS.Types.ModifyReplicationSubnetGroupResponse) => void): Request; - /** - * Modifies the settings for the specified replication subnet group. - */ - modifyReplicationSubnetGroup(callback?: (err: AWSError, data: DMS.Types.ModifyReplicationSubnetGroupResponse) => void): Request; - /** - * Modifies the specified replication task. You can't modify the task endpoints. The task must be stopped before you can modify it. For more information about AWS DMS tasks, see the AWS DMS user guide at Working with Migration Tasks - */ - modifyReplicationTask(params: DMS.Types.ModifyReplicationTaskMessage, callback?: (err: AWSError, data: DMS.Types.ModifyReplicationTaskResponse) => void): Request; - /** - * Modifies the specified replication task. You can't modify the task endpoints. The task must be stopped before you can modify it. For more information about AWS DMS tasks, see the AWS DMS user guide at Working with Migration Tasks - */ - modifyReplicationTask(callback?: (err: AWSError, data: DMS.Types.ModifyReplicationTaskResponse) => void): Request; - /** - * Populates the schema for the specified endpoint. This is an asynchronous operation and can take several minutes. You can check the status of this operation by calling the DescribeRefreshSchemasStatus operation. - */ - refreshSchemas(params: DMS.Types.RefreshSchemasMessage, callback?: (err: AWSError, data: DMS.Types.RefreshSchemasResponse) => void): Request; - /** - * Populates the schema for the specified endpoint. This is an asynchronous operation and can take several minutes. You can check the status of this operation by calling the DescribeRefreshSchemasStatus operation. - */ - refreshSchemas(callback?: (err: AWSError, data: DMS.Types.RefreshSchemasResponse) => void): Request; - /** - * Reloads the target database table with the source data. - */ - reloadTables(params: DMS.Types.ReloadTablesMessage, callback?: (err: AWSError, data: DMS.Types.ReloadTablesResponse) => void): Request; - /** - * Reloads the target database table with the source data. - */ - reloadTables(callback?: (err: AWSError, data: DMS.Types.ReloadTablesResponse) => void): Request; - /** - * Removes metadata tags from a DMS resource. - */ - removeTagsFromResource(params: DMS.Types.RemoveTagsFromResourceMessage, callback?: (err: AWSError, data: DMS.Types.RemoveTagsFromResourceResponse) => void): Request; - /** - * Removes metadata tags from a DMS resource. - */ - removeTagsFromResource(callback?: (err: AWSError, data: DMS.Types.RemoveTagsFromResourceResponse) => void): Request; - /** - * Starts the replication task. For more information about AWS DMS tasks, see the AWS DMS user guide at Working with Migration Tasks - */ - startReplicationTask(params: DMS.Types.StartReplicationTaskMessage, callback?: (err: AWSError, data: DMS.Types.StartReplicationTaskResponse) => void): Request; - /** - * Starts the replication task. For more information about AWS DMS tasks, see the AWS DMS user guide at Working with Migration Tasks - */ - startReplicationTask(callback?: (err: AWSError, data: DMS.Types.StartReplicationTaskResponse) => void): Request; - /** - * Stops the replication task. - */ - stopReplicationTask(params: DMS.Types.StopReplicationTaskMessage, callback?: (err: AWSError, data: DMS.Types.StopReplicationTaskResponse) => void): Request; - /** - * Stops the replication task. - */ - stopReplicationTask(callback?: (err: AWSError, data: DMS.Types.StopReplicationTaskResponse) => void): Request; - /** - * Tests the connection between the replication instance and the endpoint. - */ - testConnection(params: DMS.Types.TestConnectionMessage, callback?: (err: AWSError, data: DMS.Types.TestConnectionResponse) => void): Request; - /** - * Tests the connection between the replication instance and the endpoint. - */ - testConnection(callback?: (err: AWSError, data: DMS.Types.TestConnectionResponse) => void): Request; -} -declare namespace DMS { - export interface AccountQuota { - /** - * The name of the AWS DMS quota for this AWS account. - */ - AccountQuotaName?: String; - /** - * The amount currently used toward the quota maximum. - */ - Used?: Long; - /** - * The maximum allowed value for the quota. - */ - Max?: Long; - } - export type AccountQuotaList = AccountQuota[]; - export interface AddTagsToResourceMessage { - /** - * The Amazon Resource Name (ARN) of the AWS DMS resource the tag is to be added to. AWS DMS resources include a replication instance, endpoint, and a replication task. - */ - ResourceArn: String; - /** - * The tag to be assigned to the DMS resource. - */ - Tags: TagList; - } - export interface AddTagsToResourceResponse { - } - export type AuthMechanismValue = "default"|"mongodb_cr"|"scram_sha_1"|string; - export type AuthTypeValue = "no"|"password"|string; - export interface AvailabilityZone { - /** - * The name of the availability zone. - */ - Name?: String; - } - export type Boolean = boolean; - export type BooleanOptional = boolean; - export interface Certificate { - /** - * The customer-assigned name of the certificate. Valid characters are A-z and 0-9. - */ - CertificateIdentifier?: String; - /** - * The date that the certificate was created. - */ - CertificateCreationDate?: TStamp; - /** - * The contents of the .pem X.509 certificate file for the certificate. - */ - CertificatePem?: String; - /** - * The location of the imported Oracle Wallet certificate for use with SSL. - */ - CertificateWallet?: CertificateWallet; - /** - * The Amazon Resource Name (ARN) for the certificate. - */ - CertificateArn?: String; - /** - * The owner of the certificate. - */ - CertificateOwner?: String; - /** - * The beginning date that the certificate is valid. - */ - ValidFromDate?: TStamp; - /** - * The final date that the certificate is valid. - */ - ValidToDate?: TStamp; - /** - * The signing algorithm for the certificate. - */ - SigningAlgorithm?: String; - /** - * The key length of the cryptographic algorithm being used. - */ - KeyLength?: IntegerOptional; - } - export type CertificateList = Certificate[]; - export type CertificateWallet = Buffer|Uint8Array|Blob|string; - export type CompressionTypeValue = "none"|"gzip"|string; - export interface Connection { - /** - * The Amazon Resource Name (ARN) of the replication instance. - */ - ReplicationInstanceArn?: String; - /** - * The Amazon Resource Name (ARN) string that uniquely identifies the endpoint. - */ - EndpointArn?: String; - /** - * The connection status. - */ - Status?: String; - /** - * The error message when the connection last failed. - */ - LastFailureMessage?: String; - /** - * The identifier of the endpoint. Identifiers must begin with a letter; must contain only ASCII letters, digits, and hyphens; and must not end with a hyphen or contain two consecutive hyphens. - */ - EndpointIdentifier?: String; - /** - * The replication instance identifier. This parameter is stored as a lowercase string. - */ - ReplicationInstanceIdentifier?: String; - } - export type ConnectionList = Connection[]; - export interface CreateEndpointMessage { - /** - * The database endpoint identifier. Identifiers must begin with a letter; must contain only ASCII letters, digits, and hyphens; and must not end with a hyphen or contain two consecutive hyphens. - */ - EndpointIdentifier: String; - /** - * The type of endpoint. - */ - EndpointType: ReplicationEndpointTypeValue; - /** - * The type of engine for the endpoint. Valid values, depending on the EndPointType, include MYSQL, ORACLE, POSTGRES, MARIADB, AURORA, REDSHIFT, S3, SYBASE, DYNAMODB, MONGODB, and SQLSERVER. - */ - EngineName: String; - /** - * The user name to be used to login to the endpoint database. - */ - Username?: String; - /** - * The password to be used to login to the endpoint database. - */ - Password?: SecretString; - /** - * The name of the server where the endpoint database resides. - */ - ServerName?: String; - /** - * The port used by the endpoint database. - */ - Port?: IntegerOptional; - /** - * The name of the endpoint database. - */ - DatabaseName?: String; - /** - * Additional attributes associated with the connection. - */ - ExtraConnectionAttributes?: String; - /** - * The KMS key identifier that will be used to encrypt the connection parameters. If you do not specify a value for the KmsKeyId parameter, then AWS DMS will use your default encryption key. AWS KMS creates the default encryption key for your AWS account. Your AWS account has a different default encryption key for each AWS region. - */ - KmsKeyId?: String; - /** - * Tags to be added to the endpoint. - */ - Tags?: TagList; - /** - * The Amazon Resource Number (ARN) for the certificate. - */ - CertificateArn?: String; - /** - * The SSL mode to use for the SSL connection. SSL mode can be one of four values: none, require, verify-ca, verify-full. The default value is none. - */ - SslMode?: DmsSslModeValue; - /** - * Settings in JSON format for the target Amazon DynamoDB endpoint. For more information about the available settings, see the Using Object Mapping to Migrate Data to DynamoDB section at Using an Amazon DynamoDB Database as a Target for AWS Database Migration Service. - */ - DynamoDbSettings?: DynamoDbSettings; - /** - * Settings in JSON format for the target S3 endpoint. For more information about the available settings, see the Extra Connection Attributes section at Using Amazon S3 as a Target for AWS Database Migration Service. - */ - S3Settings?: S3Settings; - /** - * Settings in JSON format for the source MongoDB endpoint. For more information about the available settings, see the Configuration Properties When Using MongoDB as a Source for AWS Database Migration Service section at Using Amazon S3 as a Target for AWS Database Migration Service. - */ - MongoDbSettings?: MongoDbSettings; - } - export interface CreateEndpointResponse { - /** - * The endpoint that was created. - */ - Endpoint?: Endpoint; - } - export interface CreateEventSubscriptionMessage { - /** - * The name of the DMS event notification subscription. Constraints: The name must be less than 255 characters. - */ - SubscriptionName: String; - /** - * The Amazon Resource Name (ARN) of the Amazon SNS topic created for event notification. The ARN is created by Amazon SNS when you create a topic and subscribe to it. - */ - SnsTopicArn: String; - /** - * The type of AWS DMS resource that generates the events. For example, if you want to be notified of events generated by a replication instance, you set this parameter to replication-instance. If this value is not specified, all events are returned. Valid values: replication-instance | migration-task - */ - SourceType?: String; - /** - * A list of event categories for a source type that you want to subscribe to. You can see a list of the categories for a given source type by calling the DescribeEventCategories action or in the topic Working with Events and Notifications in the AWS Database Migration Service User Guide. - */ - EventCategories?: EventCategoriesList; - /** - * The list of identifiers of the event sources for which events will be returned. If not specified, then all sources are included in the response. An identifier must begin with a letter and must contain only ASCII letters, digits, and hyphens; it cannot end with a hyphen or contain two consecutive hyphens. - */ - SourceIds?: SourceIdsList; - /** - * A Boolean value; set to true to activate the subscription, or set to false to create the subscription but not activate it. - */ - Enabled?: BooleanOptional; - /** - * A tag to be attached to the event subscription. - */ - Tags?: TagList; - } - export interface CreateEventSubscriptionResponse { - /** - * The event subscription that was created. - */ - EventSubscription?: EventSubscription; - } - export interface CreateReplicationInstanceMessage { - /** - * The replication instance identifier. This parameter is stored as a lowercase string. Constraints: Must contain from 1 to 63 alphanumeric characters or hyphens. First character must be a letter. Cannot end with a hyphen or contain two consecutive hyphens. Example: myrepinstance - */ - ReplicationInstanceIdentifier: String; - /** - * The amount of storage (in gigabytes) to be initially allocated for the replication instance. - */ - AllocatedStorage?: IntegerOptional; - /** - * The compute and memory capacity of the replication instance as specified by the replication instance class. Valid Values: dms.t2.micro | dms.t2.small | dms.t2.medium | dms.t2.large | dms.c4.large | dms.c4.xlarge | dms.c4.2xlarge | dms.c4.4xlarge - */ - ReplicationInstanceClass: String; - /** - * Specifies the VPC security group to be used with the replication instance. The VPC security group must work with the VPC containing the replication instance. - */ - VpcSecurityGroupIds?: VpcSecurityGroupIdList; - /** - * The EC2 Availability Zone that the replication instance will be created in. Default: A random, system-chosen Availability Zone in the endpoint's region. Example: us-east-1d - */ - AvailabilityZone?: String; - /** - * A subnet group to associate with the replication instance. - */ - ReplicationSubnetGroupIdentifier?: String; - /** - * The weekly time range during which system maintenance can occur, in Universal Coordinated Time (UTC). Format: ddd:hh24:mi-ddd:hh24:mi Default: A 30-minute window selected at random from an 8-hour block of time per region, occurring on a random day of the week. Valid Days: Mon, Tue, Wed, Thu, Fri, Sat, Sun Constraints: Minimum 30-minute window. - */ - PreferredMaintenanceWindow?: String; - /** - * Specifies if the replication instance is a Multi-AZ deployment. You cannot set the AvailabilityZone parameter if the Multi-AZ parameter is set to true. - */ - MultiAZ?: BooleanOptional; - /** - * The engine version number of the replication instance. - */ - EngineVersion?: String; - /** - * Indicates that minor engine upgrades will be applied automatically to the replication instance during the maintenance window. Default: true - */ - AutoMinorVersionUpgrade?: BooleanOptional; - /** - * Tags to be associated with the replication instance. - */ - Tags?: TagList; - /** - * The KMS key identifier that will be used to encrypt the content on the replication instance. If you do not specify a value for the KmsKeyId parameter, then AWS DMS will use your default encryption key. AWS KMS creates the default encryption key for your AWS account. Your AWS account has a different default encryption key for each AWS region. - */ - KmsKeyId?: String; - /** - * Specifies the accessibility options for the replication instance. A value of true represents an instance with a public IP address. A value of false represents an instance with a private IP address. The default value is true. - */ - PubliclyAccessible?: BooleanOptional; - } - export interface CreateReplicationInstanceResponse { - /** - * The replication instance that was created. - */ - ReplicationInstance?: ReplicationInstance; - } - export interface CreateReplicationSubnetGroupMessage { - /** - * The name for the replication subnet group. This value is stored as a lowercase string. Constraints: Must contain no more than 255 alphanumeric characters, periods, spaces, underscores, or hyphens. Must not be "default". Example: mySubnetgroup - */ - ReplicationSubnetGroupIdentifier: String; - /** - * The description for the subnet group. - */ - ReplicationSubnetGroupDescription: String; - /** - * The EC2 subnet IDs for the subnet group. - */ - SubnetIds: SubnetIdentifierList; - /** - * The tag to be assigned to the subnet group. - */ - Tags?: TagList; - } - export interface CreateReplicationSubnetGroupResponse { - /** - * The replication subnet group that was created. - */ - ReplicationSubnetGroup?: ReplicationSubnetGroup; - } - export interface CreateReplicationTaskMessage { - /** - * The replication task identifier. Constraints: Must contain from 1 to 255 alphanumeric characters or hyphens. First character must be a letter. Cannot end with a hyphen or contain two consecutive hyphens. - */ - ReplicationTaskIdentifier: String; - /** - * The Amazon Resource Name (ARN) string that uniquely identifies the endpoint. - */ - SourceEndpointArn: String; - /** - * The Amazon Resource Name (ARN) string that uniquely identifies the endpoint. - */ - TargetEndpointArn: String; - /** - * The Amazon Resource Name (ARN) of the replication instance. - */ - ReplicationInstanceArn: String; - /** - * The migration type. - */ - MigrationType: MigrationTypeValue; - /** - * When using the AWS CLI or boto3, provide the path of the JSON file that contains the table mappings. Precede the path with "file://". When working with the DMS API, provide the JSON as the parameter value. For example, --table-mappings file://mappingfile.json - */ - TableMappings: String; - /** - * Settings for the task, such as target metadata settings. For a complete list of task settings, see Task Settings for AWS Database Migration Service Tasks. - */ - ReplicationTaskSettings?: String; - /** - * The start time for the Change Data Capture (CDC) operation. - */ - CdcStartTime?: TStamp; - /** - * Tags to be added to the replication instance. - */ - Tags?: TagList; - } - export interface CreateReplicationTaskResponse { - /** - * The replication task that was created. - */ - ReplicationTask?: ReplicationTask; - } - export interface DeleteCertificateMessage { - /** - * The Amazon Resource Name (ARN) of the deleted certificate. - */ - CertificateArn: String; - } - export interface DeleteCertificateResponse { - /** - * The Secure Sockets Layer (SSL) certificate. - */ - Certificate?: Certificate; - } - export interface DeleteEndpointMessage { - /** - * The Amazon Resource Name (ARN) string that uniquely identifies the endpoint. - */ - EndpointArn: String; - } - export interface DeleteEndpointResponse { - /** - * The endpoint that was deleted. - */ - Endpoint?: Endpoint; - } - export interface DeleteEventSubscriptionMessage { - /** - * The name of the DMS event notification subscription to be deleted. - */ - SubscriptionName: String; - } - export interface DeleteEventSubscriptionResponse { - /** - * The event subscription that was deleted. - */ - EventSubscription?: EventSubscription; - } - export interface DeleteReplicationInstanceMessage { - /** - * The Amazon Resource Name (ARN) of the replication instance to be deleted. - */ - ReplicationInstanceArn: String; - } - export interface DeleteReplicationInstanceResponse { - /** - * The replication instance that was deleted. - */ - ReplicationInstance?: ReplicationInstance; - } - export interface DeleteReplicationSubnetGroupMessage { - /** - * The subnet group name of the replication instance. - */ - ReplicationSubnetGroupIdentifier: String; - } - export interface DeleteReplicationSubnetGroupResponse { - } - export interface DeleteReplicationTaskMessage { - /** - * The Amazon Resource Name (ARN) of the replication task to be deleted. - */ - ReplicationTaskArn: String; - } - export interface DeleteReplicationTaskResponse { - /** - * The deleted replication task. - */ - ReplicationTask?: ReplicationTask; - } - export interface DescribeAccountAttributesMessage { - } - export interface DescribeAccountAttributesResponse { - /** - * Account quota information. - */ - AccountQuotas?: AccountQuotaList; - } - export interface DescribeCertificatesMessage { - /** - * Filters applied to the certificate described in the form of key-value pairs. - */ - Filters?: FilterList; - /** - * The maximum number of records to include in the response. If more records exist than the specified MaxRecords value, a pagination token called a marker is included in the response so that the remaining results can be retrieved. Default: 10 - */ - MaxRecords?: IntegerOptional; - /** - * An optional pagination token provided by a previous request. If this parameter is specified, the response includes only records beyond the marker, up to the value specified by MaxRecords. - */ - Marker?: String; - } - export interface DescribeCertificatesResponse { - /** - * The pagination token. - */ - Marker?: String; - /** - * The Secure Sockets Layer (SSL) certificates associated with the replication instance. - */ - Certificates?: CertificateList; - } - export interface DescribeConnectionsMessage { - /** - * The filters applied to the connection. Valid filter names: endpoint-arn | replication-instance-arn - */ - Filters?: FilterList; - /** - * The maximum number of records to include in the response. If more records exist than the specified MaxRecords value, a pagination token called a marker is included in the response so that the remaining results can be retrieved. Default: 100 Constraints: Minimum 20, maximum 100. - */ - MaxRecords?: IntegerOptional; - /** - * An optional pagination token provided by a previous request. If this parameter is specified, the response includes only records beyond the marker, up to the value specified by MaxRecords. - */ - Marker?: String; - } - export interface DescribeConnectionsResponse { - /** - * An optional pagination token provided by a previous request. If this parameter is specified, the response includes only records beyond the marker, up to the value specified by MaxRecords. - */ - Marker?: String; - /** - * A description of the connections. - */ - Connections?: ConnectionList; - } - export interface DescribeEndpointTypesMessage { - /** - * Filters applied to the describe action. Valid filter names: engine-name | endpoint-type - */ - Filters?: FilterList; - /** - * The maximum number of records to include in the response. If more records exist than the specified MaxRecords value, a pagination token called a marker is included in the response so that the remaining results can be retrieved. Default: 100 Constraints: Minimum 20, maximum 100. - */ - MaxRecords?: IntegerOptional; - /** - * An optional pagination token provided by a previous request. If this parameter is specified, the response includes only records beyond the marker, up to the value specified by MaxRecords. - */ - Marker?: String; - } - export interface DescribeEndpointTypesResponse { - /** - * An optional pagination token provided by a previous request. If this parameter is specified, the response includes only records beyond the marker, up to the value specified by MaxRecords. - */ - Marker?: String; - /** - * The type of endpoints that are supported. - */ - SupportedEndpointTypes?: SupportedEndpointTypeList; - } - export interface DescribeEndpointsMessage { - /** - * Filters applied to the describe action. Valid filter names: endpoint-arn | endpoint-type | endpoint-id | engine-name - */ - Filters?: FilterList; - /** - * The maximum number of records to include in the response. If more records exist than the specified MaxRecords value, a pagination token called a marker is included in the response so that the remaining results can be retrieved. Default: 100 Constraints: Minimum 20, maximum 100. - */ - MaxRecords?: IntegerOptional; - /** - * An optional pagination token provided by a previous request. If this parameter is specified, the response includes only records beyond the marker, up to the value specified by MaxRecords. - */ - Marker?: String; - } - export interface DescribeEndpointsResponse { - /** - * An optional pagination token provided by a previous request. If this parameter is specified, the response includes only records beyond the marker, up to the value specified by MaxRecords. - */ - Marker?: String; - /** - * Endpoint description. - */ - Endpoints?: EndpointList; - } - export interface DescribeEventCategoriesMessage { - /** - * The type of AWS DMS resource that generates events. Valid values: replication-instance | migration-task - */ - SourceType?: String; - /** - * Filters applied to the action. - */ - Filters?: FilterList; - } - export interface DescribeEventCategoriesResponse { - /** - * A list of event categories. - */ - EventCategoryGroupList?: EventCategoryGroupList; - } - export interface DescribeEventSubscriptionsMessage { - /** - * The name of the AWS DMS event subscription to be described. - */ - SubscriptionName?: String; - /** - * Filters applied to the action. - */ - Filters?: FilterList; - /** - * The maximum number of records to include in the response. If more records exist than the specified MaxRecords value, a pagination token called a marker is included in the response so that the remaining results can be retrieved. Default: 100 Constraints: Minimum 20, maximum 100. - */ - MaxRecords?: IntegerOptional; - /** - * An optional pagination token provided by a previous request. If this parameter is specified, the response includes only records beyond the marker, up to the value specified by MaxRecords. - */ - Marker?: String; - } - export interface DescribeEventSubscriptionsResponse { - /** - * An optional pagination token provided by a previous request. If this parameter is specified, the response includes only records beyond the marker, up to the value specified by MaxRecords. - */ - Marker?: String; - /** - * A list of event subscriptions. - */ - EventSubscriptionsList?: EventSubscriptionsList; - } - export interface DescribeEventsMessage { - /** - * The identifier of the event source. An identifier must begin with a letter and must contain only ASCII letters, digits, and hyphens. It cannot end with a hyphen or contain two consecutive hyphens. - */ - SourceIdentifier?: String; - /** - * The type of AWS DMS resource that generates events. Valid values: replication-instance | migration-task - */ - SourceType?: SourceType; - /** - * The start time for the events to be listed. - */ - StartTime?: TStamp; - /** - * The end time for the events to be listed. - */ - EndTime?: TStamp; - /** - * The duration of the events to be listed. - */ - Duration?: IntegerOptional; - /** - * A list of event categories for a source type that you want to subscribe to. - */ - EventCategories?: EventCategoriesList; - /** - * Filters applied to the action. - */ - Filters?: FilterList; - /** - * The maximum number of records to include in the response. If more records exist than the specified MaxRecords value, a pagination token called a marker is included in the response so that the remaining results can be retrieved. Default: 100 Constraints: Minimum 20, maximum 100. - */ - MaxRecords?: IntegerOptional; - /** - * An optional pagination token provided by a previous request. If this parameter is specified, the response includes only records beyond the marker, up to the value specified by MaxRecords. - */ - Marker?: String; - } - export interface DescribeEventsResponse { - /** - * An optional pagination token provided by a previous request. If this parameter is specified, the response includes only records beyond the marker, up to the value specified by MaxRecords. - */ - Marker?: String; - /** - * The events described. - */ - Events?: EventList; - } - export interface DescribeOrderableReplicationInstancesMessage { - /** - * The maximum number of records to include in the response. If more records exist than the specified MaxRecords value, a pagination token called a marker is included in the response so that the remaining results can be retrieved. Default: 100 Constraints: Minimum 20, maximum 100. - */ - MaxRecords?: IntegerOptional; - /** - * An optional pagination token provided by a previous request. If this parameter is specified, the response includes only records beyond the marker, up to the value specified by MaxRecords. - */ - Marker?: String; - } - export interface DescribeOrderableReplicationInstancesResponse { - /** - * The order-able replication instances available. - */ - OrderableReplicationInstances?: OrderableReplicationInstanceList; - /** - * An optional pagination token provided by a previous request. If this parameter is specified, the response includes only records beyond the marker, up to the value specified by MaxRecords. - */ - Marker?: String; - } - export interface DescribeRefreshSchemasStatusMessage { - /** - * The Amazon Resource Name (ARN) string that uniquely identifies the endpoint. - */ - EndpointArn: String; - } - export interface DescribeRefreshSchemasStatusResponse { - /** - * The status of the schema. - */ - RefreshSchemasStatus?: RefreshSchemasStatus; - } - export interface DescribeReplicationInstancesMessage { - /** - * Filters applied to the describe action. Valid filter names: replication-instance-arn | replication-instance-id | replication-instance-class | engine-version - */ - Filters?: FilterList; - /** - * The maximum number of records to include in the response. If more records exist than the specified MaxRecords value, a pagination token called a marker is included in the response so that the remaining results can be retrieved. Default: 100 Constraints: Minimum 20, maximum 100. - */ - MaxRecords?: IntegerOptional; - /** - * An optional pagination token provided by a previous request. If this parameter is specified, the response includes only records beyond the marker, up to the value specified by MaxRecords. - */ - Marker?: String; - } - export interface DescribeReplicationInstancesResponse { - /** - * An optional pagination token provided by a previous request. If this parameter is specified, the response includes only records beyond the marker, up to the value specified by MaxRecords. - */ - Marker?: String; - /** - * The replication instances described. - */ - ReplicationInstances?: ReplicationInstanceList; - } - export interface DescribeReplicationSubnetGroupsMessage { - /** - * Filters applied to the describe action. - */ - Filters?: FilterList; - /** - * The maximum number of records to include in the response. If more records exist than the specified MaxRecords value, a pagination token called a marker is included in the response so that the remaining results can be retrieved. Default: 100 Constraints: Minimum 20, maximum 100. - */ - MaxRecords?: IntegerOptional; - /** - * An optional pagination token provided by a previous request. If this parameter is specified, the response includes only records beyond the marker, up to the value specified by MaxRecords. - */ - Marker?: String; - } - export interface DescribeReplicationSubnetGroupsResponse { - /** - * An optional pagination token provided by a previous request. If this parameter is specified, the response includes only records beyond the marker, up to the value specified by MaxRecords. - */ - Marker?: String; - /** - * A description of the replication subnet groups. - */ - ReplicationSubnetGroups?: ReplicationSubnetGroups; - } - export interface DescribeReplicationTasksMessage { - /** - * Filters applied to the describe action. Valid filter names: replication-task-arn | replication-task-id | migration-type | endpoint-arn | replication-instance-arn - */ - Filters?: FilterList; - /** - * The maximum number of records to include in the response. If more records exist than the specified MaxRecords value, a pagination token called a marker is included in the response so that the remaining results can be retrieved. Default: 100 Constraints: Minimum 20, maximum 100. - */ - MaxRecords?: IntegerOptional; - /** - * An optional pagination token provided by a previous request. If this parameter is specified, the response includes only records beyond the marker, up to the value specified by MaxRecords. - */ - Marker?: String; - } - export interface DescribeReplicationTasksResponse { - /** - * An optional pagination token provided by a previous request. If this parameter is specified, the response includes only records beyond the marker, up to the value specified by MaxRecords. - */ - Marker?: String; - /** - * A description of the replication tasks. - */ - ReplicationTasks?: ReplicationTaskList; - } - export interface DescribeSchemasMessage { - /** - * The Amazon Resource Name (ARN) string that uniquely identifies the endpoint. - */ - EndpointArn: String; - /** - * The maximum number of records to include in the response. If more records exist than the specified MaxRecords value, a pagination token called a marker is included in the response so that the remaining results can be retrieved. Default: 100 Constraints: Minimum 20, maximum 100. - */ - MaxRecords?: IntegerOptional; - /** - * An optional pagination token provided by a previous request. If this parameter is specified, the response includes only records beyond the marker, up to the value specified by MaxRecords. - */ - Marker?: String; - } - export interface DescribeSchemasResponse { - /** - * An optional pagination token provided by a previous request. If this parameter is specified, the response includes only records beyond the marker, up to the value specified by MaxRecords. - */ - Marker?: String; - /** - * The described schema. - */ - Schemas?: SchemaList; - } - export interface DescribeTableStatisticsMessage { - /** - * The Amazon Resource Name (ARN) of the replication task. - */ - ReplicationTaskArn: String; - /** - * The maximum number of records to include in the response. If more records exist than the specified MaxRecords value, a pagination token called a marker is included in the response so that the remaining results can be retrieved. Default: 100 Constraints: Minimum 20, maximum 500. - */ - MaxRecords?: IntegerOptional; - /** - * An optional pagination token provided by a previous request. If this parameter is specified, the response includes only records beyond the marker, up to the value specified by MaxRecords. - */ - Marker?: String; - /** - * Filters applied to the describe table statistics action. Valid filter names: schema-name | table-name | table-state A combination of filters creates an AND condition where each record matches all specified filters. - */ - Filters?: FilterList; - } - export interface DescribeTableStatisticsResponse { - /** - * The Amazon Resource Name (ARN) of the replication task. - */ - ReplicationTaskArn?: String; - /** - * The table statistics. - */ - TableStatistics?: TableStatisticsList; - /** - * An optional pagination token provided by a previous request. If this parameter is specified, the response includes only records beyond the marker, up to the value specified by MaxRecords. - */ - Marker?: String; - } - export type DmsSslModeValue = "none"|"require"|"verify-ca"|"verify-full"|string; - export interface DynamoDbSettings { - /** - * The Amazon Resource Name (ARN) used by the service access IAM role. - */ - ServiceAccessRoleArn: String; - } - export interface Endpoint { - /** - * The database endpoint identifier. Identifiers must begin with a letter; must contain only ASCII letters, digits, and hyphens; and must not end with a hyphen or contain two consecutive hyphens. - */ - EndpointIdentifier?: String; - /** - * The type of endpoint. - */ - EndpointType?: ReplicationEndpointTypeValue; - /** - * The database engine name. Valid values, depending on the EndPointType, include MYSQL, ORACLE, POSTGRES, MARIADB, AURORA, REDSHIFT, S3, SYBASE, DYNAMODB, MONGODB, and SQLSERVER. - */ - EngineName?: String; - /** - * The user name used to connect to the endpoint. - */ - Username?: String; - /** - * The name of the server at the endpoint. - */ - ServerName?: String; - /** - * The port value used to access the endpoint. - */ - Port?: IntegerOptional; - /** - * The name of the database at the endpoint. - */ - DatabaseName?: String; - /** - * Additional connection attributes used to connect to the endpoint. - */ - ExtraConnectionAttributes?: String; - /** - * The status of the endpoint. - */ - Status?: String; - /** - * The KMS key identifier that will be used to encrypt the connection parameters. If you do not specify a value for the KmsKeyId parameter, then AWS DMS will use your default encryption key. AWS KMS creates the default encryption key for your AWS account. Your AWS account has a different default encryption key for each AWS region. - */ - KmsKeyId?: String; - /** - * The Amazon Resource Name (ARN) string that uniquely identifies the endpoint. - */ - EndpointArn?: String; - /** - * The Amazon Resource Name (ARN) used for SSL connection to the endpoint. - */ - CertificateArn?: String; - /** - * The SSL mode used to connect to the endpoint. SSL mode can be one of four values: none, require, verify-ca, verify-full. The default value is none. - */ - SslMode?: DmsSslModeValue; - /** - * Value returned by a call to CreateEndpoint that can be used for cross-account validation. Use it on a subsequent call to CreateEndpoint to create the endpoint with a cross-account. - */ - ExternalId?: String; - /** - * The settings for the target DynamoDB database. For more information, see the DynamoDBSettings structure. - */ - DynamoDbSettings?: DynamoDbSettings; - /** - * The settings for the S3 target endpoint. For more information, see the S3Settings structure. - */ - S3Settings?: S3Settings; - /** - * The settings for the MongoDB source endpoint. For more information, see the MongoDbSettings structure. - */ - MongoDbSettings?: MongoDbSettings; - } - export type EndpointList = Endpoint[]; - export interface Event { - /** - * The identifier of the event source. An identifier must begin with a letter and must contain only ASCII letters, digits, and hyphens; it cannot end with a hyphen or contain two consecutive hyphens. Constraints:replication instance, endpoint, migration task - */ - SourceIdentifier?: String; - /** - * The type of AWS DMS resource that generates events. Valid values: replication-instance | endpoint | migration-task - */ - SourceType?: SourceType; - /** - * The event message. - */ - Message?: String; - /** - * The event categories available for the specified source type. - */ - EventCategories?: EventCategoriesList; - /** - * The date of the event. - */ - Date?: TStamp; - } - export type EventCategoriesList = String[]; - export interface EventCategoryGroup { - /** - * The type of AWS DMS resource that generates events. Valid values: replication-instance | replication-server | security-group | migration-task - */ - SourceType?: String; - /** - * A list of event categories for a SourceType that you want to subscribe to. - */ - EventCategories?: EventCategoriesList; - } - export type EventCategoryGroupList = EventCategoryGroup[]; - export type EventList = Event[]; - export interface EventSubscription { - /** - * The AWS customer account associated with the AWS DMS event notification subscription. - */ - CustomerAwsId?: String; - /** - * The AWS DMS event notification subscription Id. - */ - CustSubscriptionId?: String; - /** - * The topic ARN of the AWS DMS event notification subscription. - */ - SnsTopicArn?: String; - /** - * The status of the AWS DMS event notification subscription. Constraints: Can be one of the following: creating | modifying | deleting | active | no-permission | topic-not-exist The status "no-permission" indicates that AWS DMS no longer has permission to post to the SNS topic. The status "topic-not-exist" indicates that the topic was deleted after the subscription was created. - */ - Status?: String; - /** - * The time the RDS event notification subscription was created. - */ - SubscriptionCreationTime?: String; - /** - * The type of AWS DMS resource that generates events. Valid values: replication-instance | replication-server | security-group | migration-task - */ - SourceType?: String; - /** - * A list of source Ids for the event subscription. - */ - SourceIdsList?: SourceIdsList; - /** - * A lists of event categories. - */ - EventCategoriesList?: EventCategoriesList; - /** - * Boolean value that indicates if the event subscription is enabled. - */ - Enabled?: Boolean; - } - export type EventSubscriptionsList = EventSubscription[]; - export type ExceptionMessage = string; - export interface Filter { - /** - * The name of the filter. - */ - Name: String; - /** - * The filter value. - */ - Values: FilterValueList; - } - export type FilterList = Filter[]; - export type FilterValueList = String[]; - export interface ImportCertificateMessage { - /** - * The customer-assigned name of the certificate. Valid characters are A-z and 0-9. - */ - CertificateIdentifier: String; - /** - * The contents of the .pem X.509 certificate file for the certificate. - */ - CertificatePem?: String; - /** - * The location of the imported Oracle Wallet certificate for use with SSL. - */ - CertificateWallet?: CertificateWallet; - /** - * The tags associated with the certificate. - */ - Tags?: TagList; - } - export interface ImportCertificateResponse { - /** - * The certificate to be uploaded. - */ - Certificate?: Certificate; - } - export type Integer = number; - export type IntegerOptional = number; - export type KeyList = String[]; - export interface ListTagsForResourceMessage { - /** - * The Amazon Resource Name (ARN) string that uniquely identifies the AWS DMS resource. - */ - ResourceArn: String; - } - export interface ListTagsForResourceResponse { - /** - * A list of tags for the resource. - */ - TagList?: TagList; - } - export type Long = number; - export type MigrationTypeValue = "full-load"|"cdc"|"full-load-and-cdc"|string; - export interface ModifyEndpointMessage { - /** - * The Amazon Resource Name (ARN) string that uniquely identifies the endpoint. - */ - EndpointArn: String; - /** - * The database endpoint identifier. Identifiers must begin with a letter; must contain only ASCII letters, digits, and hyphens; and must not end with a hyphen or contain two consecutive hyphens. - */ - EndpointIdentifier?: String; - /** - * The type of endpoint. - */ - EndpointType?: ReplicationEndpointTypeValue; - /** - * The type of engine for the endpoint. Valid values, depending on the EndPointType, include MYSQL, ORACLE, POSTGRES, MARIADB, AURORA, REDSHIFT, S3, DYNAMODB, MONGODB, SYBASE, and SQLSERVER. - */ - EngineName?: String; - /** - * The user name to be used to login to the endpoint database. - */ - Username?: String; - /** - * The password to be used to login to the endpoint database. - */ - Password?: SecretString; - /** - * The name of the server where the endpoint database resides. - */ - ServerName?: String; - /** - * The port used by the endpoint database. - */ - Port?: IntegerOptional; - /** - * The name of the endpoint database. - */ - DatabaseName?: String; - /** - * Additional attributes associated with the connection. To reset this parameter, pass the empty string ("") as an argument. - */ - ExtraConnectionAttributes?: String; - /** - * The Amazon Resource Name (ARN) of the certificate used for SSL connection. - */ - CertificateArn?: String; - /** - * The SSL mode to be used. SSL mode can be one of four values: none, require, verify-ca, verify-full. The default value is none. - */ - SslMode?: DmsSslModeValue; - /** - * Settings in JSON format for the target Amazon DynamoDB endpoint. For more information about the available settings, see the Using Object Mapping to Migrate Data to DynamoDB section at Using an Amazon DynamoDB Database as a Target for AWS Database Migration Service. - */ - DynamoDbSettings?: DynamoDbSettings; - /** - * Settings in JSON format for the target S3 endpoint. For more information about the available settings, see the Extra Connection Attributes section at Using Amazon S3 as a Target for AWS Database Migration Service. - */ - S3Settings?: S3Settings; - /** - * Settings in JSON format for the source MongoDB endpoint. For more information about the available settings, see the Configuration Properties When Using MongoDB as a Source for AWS Database Migration Service section at Using Amazon S3 as a Target for AWS Database Migration Service. - */ - MongoDbSettings?: MongoDbSettings; - } - export interface ModifyEndpointResponse { - /** - * The modified endpoint. - */ - Endpoint?: Endpoint; - } - export interface ModifyEventSubscriptionMessage { - /** - * The name of the AWS DMS event notification subscription to be modified. - */ - SubscriptionName: String; - /** - * The Amazon Resource Name (ARN) of the Amazon SNS topic created for event notification. The ARN is created by Amazon SNS when you create a topic and subscribe to it. - */ - SnsTopicArn?: String; - /** - * The type of AWS DMS resource that generates the events you want to subscribe to. Valid values: replication-instance | migration-task - */ - SourceType?: String; - /** - * A list of event categories for a source type that you want to subscribe to. Use the DescribeEventCategories action to see a list of event categories. - */ - EventCategories?: EventCategoriesList; - /** - * A Boolean value; set to true to activate the subscription. - */ - Enabled?: BooleanOptional; - } - export interface ModifyEventSubscriptionResponse { - /** - * The modified event subscription. - */ - EventSubscription?: EventSubscription; - } - export interface ModifyReplicationInstanceMessage { - /** - * The Amazon Resource Name (ARN) of the replication instance. - */ - ReplicationInstanceArn: String; - /** - * The amount of storage (in gigabytes) to be allocated for the replication instance. - */ - AllocatedStorage?: IntegerOptional; - /** - * Indicates whether the changes should be applied immediately or during the next maintenance window. - */ - ApplyImmediately?: Boolean; - /** - * The compute and memory capacity of the replication instance. Valid Values: dms.t2.micro | dms.t2.small | dms.t2.medium | dms.t2.large | dms.c4.large | dms.c4.xlarge | dms.c4.2xlarge | dms.c4.4xlarge - */ - ReplicationInstanceClass?: String; - /** - * Specifies the VPC security group to be used with the replication instance. The VPC security group must work with the VPC containing the replication instance. - */ - VpcSecurityGroupIds?: VpcSecurityGroupIdList; - /** - * The weekly time range (in UTC) during which system maintenance can occur, which might result in an outage. Changing this parameter does not result in an outage, except in the following situation, and the change is asynchronously applied as soon as possible. If moving this window to the current time, there must be at least 30 minutes between the current time and end of the window to ensure pending changes are applied. Default: Uses existing setting Format: ddd:hh24:mi-ddd:hh24:mi Valid Days: Mon | Tue | Wed | Thu | Fri | Sat | Sun Constraints: Must be at least 30 minutes - */ - PreferredMaintenanceWindow?: String; - /** - * Specifies if the replication instance is a Multi-AZ deployment. You cannot set the AvailabilityZone parameter if the Multi-AZ parameter is set to true. - */ - MultiAZ?: BooleanOptional; - /** - * The engine version number of the replication instance. - */ - EngineVersion?: String; - /** - * Indicates that major version upgrades are allowed. Changing this parameter does not result in an outage and the change is asynchronously applied as soon as possible. Constraints: This parameter must be set to true when specifying a value for the EngineVersion parameter that is a different major version than the replication instance's current version. - */ - AllowMajorVersionUpgrade?: Boolean; - /** - * Indicates that minor version upgrades will be applied automatically to the replication instance during the maintenance window. Changing this parameter does not result in an outage except in the following case and the change is asynchronously applied as soon as possible. An outage will result if this parameter is set to true during the maintenance window, and a newer minor version is available, and AWS DMS has enabled auto patching for that engine version. - */ - AutoMinorVersionUpgrade?: BooleanOptional; - /** - * The replication instance identifier. This parameter is stored as a lowercase string. - */ - ReplicationInstanceIdentifier?: String; - } - export interface ModifyReplicationInstanceResponse { - /** - * The modified replication instance. - */ - ReplicationInstance?: ReplicationInstance; - } - export interface ModifyReplicationSubnetGroupMessage { - /** - * The name of the replication instance subnet group. - */ - ReplicationSubnetGroupIdentifier: String; - /** - * The description of the replication instance subnet group. - */ - ReplicationSubnetGroupDescription?: String; - /** - * A list of subnet IDs. - */ - SubnetIds: SubnetIdentifierList; - } - export interface ModifyReplicationSubnetGroupResponse { - /** - * The modified replication subnet group. - */ - ReplicationSubnetGroup?: ReplicationSubnetGroup; - } - export interface ModifyReplicationTaskMessage { - /** - * The Amazon Resource Name (ARN) of the replication task. - */ - ReplicationTaskArn: String; - /** - * The replication task identifier. Constraints: Must contain from 1 to 255 alphanumeric characters or hyphens. First character must be a letter. Cannot end with a hyphen or contain two consecutive hyphens. - */ - ReplicationTaskIdentifier?: String; - /** - * The migration type. Valid values: full-load | cdc | full-load-and-cdc - */ - MigrationType?: MigrationTypeValue; - /** - * When using the AWS CLI or boto3, provide the path of the JSON file that contains the table mappings. Precede the path with "file://". When working with the DMS API, provide the JSON as the parameter value. For example, --table-mappings file://mappingfile.json - */ - TableMappings?: String; - /** - * JSON file that contains settings for the task, such as target metadata settings. - */ - ReplicationTaskSettings?: String; - /** - * The start time for the Change Data Capture (CDC) operation. - */ - CdcStartTime?: TStamp; - } - export interface ModifyReplicationTaskResponse { - /** - * The replication task that was modified. - */ - ReplicationTask?: ReplicationTask; - } - export interface MongoDbSettings { - /** - * The user name you use to access the MongoDB source endpoint. - */ - Username?: String; - /** - * The password for the user account you use to access the MongoDB source endpoint. - */ - Password?: SecretString; - /** - * The name of the server on the MongoDB source endpoint. - */ - ServerName?: String; - /** - * The port value for the MongoDB source endpoint. - */ - Port?: IntegerOptional; - /** - * The database name on the MongoDB source endpoint. - */ - DatabaseName?: String; - /** - * The authentication type you use to access the MongoDB source endpoint. Valid values: NO, PASSWORD When NO is selected, user name and password parameters are not used and can be empty. - */ - AuthType?: AuthTypeValue; - /** - * The authentication mechanism you use to access the MongoDB source endpoint. Valid values: DEFAULT, MONGODB_CR, SCRAM_SHA_1 DEFAULT – For MongoDB version 2.x, use MONGODB_CR. For MongoDB version 3.x, use SCRAM_SHA_1. This attribute is not used when authType=No. - */ - AuthMechanism?: AuthMechanismValue; - /** - * Specifies either document or table mode. Valid values: NONE, ONE Default value is NONE. Specify NONE to use document mode. Specify ONE to use table mode. - */ - NestingLevel?: NestingLevelValue; - /** - * Specifies the document ID. Use this attribute when NestingLevel is set to NONE. Default value is false. - */ - ExtractDocId?: String; - /** - * Indicates the number of documents to preview to determine the document organization. Use this attribute when NestingLevel is set to ONE. Must be a positive value greater than 0. Default value is 1000. - */ - DocsToInvestigate?: String; - /** - * The MongoDB database name. This attribute is not used when authType=NO. The default is admin. - */ - AuthSource?: String; - } - export type NestingLevelValue = "none"|"one"|string; - export interface OrderableReplicationInstance { - /** - * The version of the replication engine. - */ - EngineVersion?: String; - /** - * The compute and memory capacity of the replication instance. Valid Values: dms.t2.micro | dms.t2.small | dms.t2.medium | dms.t2.large | dms.c4.large | dms.c4.xlarge | dms.c4.2xlarge | dms.c4.4xlarge - */ - ReplicationInstanceClass?: String; - /** - * The type of storage used by the replication instance. - */ - StorageType?: String; - /** - * The minimum amount of storage (in gigabytes) that can be allocated for the replication instance. - */ - MinAllocatedStorage?: Integer; - /** - * The minimum amount of storage (in gigabytes) that can be allocated for the replication instance. - */ - MaxAllocatedStorage?: Integer; - /** - * The default amount of storage (in gigabytes) that is allocated for the replication instance. - */ - DefaultAllocatedStorage?: Integer; - /** - * The amount of storage (in gigabytes) that is allocated for the replication instance. - */ - IncludedAllocatedStorage?: Integer; - } - export type OrderableReplicationInstanceList = OrderableReplicationInstance[]; - export interface RefreshSchemasMessage { - /** - * The Amazon Resource Name (ARN) string that uniquely identifies the endpoint. - */ - EndpointArn: String; - /** - * The Amazon Resource Name (ARN) of the replication instance. - */ - ReplicationInstanceArn: String; - } - export interface RefreshSchemasResponse { - /** - * The status of the refreshed schema. - */ - RefreshSchemasStatus?: RefreshSchemasStatus; - } - export interface RefreshSchemasStatus { - /** - * The Amazon Resource Name (ARN) string that uniquely identifies the endpoint. - */ - EndpointArn?: String; - /** - * The Amazon Resource Name (ARN) of the replication instance. - */ - ReplicationInstanceArn?: String; - /** - * The status of the schema. - */ - Status?: RefreshSchemasStatusTypeValue; - /** - * The date the schema was last refreshed. - */ - LastRefreshDate?: TStamp; - /** - * The last failure message for the schema. - */ - LastFailureMessage?: String; - } - export type RefreshSchemasStatusTypeValue = "successful"|"failed"|"refreshing"|string; - export interface ReloadTablesMessage { - /** - * The Amazon Resource Name (ARN) of the replication instance. - */ - ReplicationTaskArn: String; - /** - * The name and schema of the table to be reloaded. - */ - TablesToReload: TableListToReload; - } - export interface ReloadTablesResponse { - /** - * The Amazon Resource Name (ARN) of the replication task. - */ - ReplicationTaskArn?: String; - } - export interface RemoveTagsFromResourceMessage { - /** - * >The Amazon Resource Name (ARN) of the AWS DMS resource the tag is to be removed from. - */ - ResourceArn: String; - /** - * The tag key (name) of the tag to be removed. - */ - TagKeys: KeyList; - } - export interface RemoveTagsFromResourceResponse { - } - export type ReplicationEndpointTypeValue = "source"|"target"|string; - export interface ReplicationInstance { - /** - * The replication instance identifier. This parameter is stored as a lowercase string. Constraints: Must contain from 1 to 63 alphanumeric characters or hyphens. First character must be a letter. Cannot end with a hyphen or contain two consecutive hyphens. Example: myrepinstance - */ - ReplicationInstanceIdentifier?: String; - /** - * The compute and memory capacity of the replication instance. Valid Values: dms.t2.micro | dms.t2.small | dms.t2.medium | dms.t2.large | dms.c4.large | dms.c4.xlarge | dms.c4.2xlarge | dms.c4.4xlarge - */ - ReplicationInstanceClass?: String; - /** - * The status of the replication instance. - */ - ReplicationInstanceStatus?: String; - /** - * The amount of storage (in gigabytes) that is allocated for the replication instance. - */ - AllocatedStorage?: Integer; - /** - * The time the replication instance was created. - */ - InstanceCreateTime?: TStamp; - /** - * The VPC security group for the instance. - */ - VpcSecurityGroups?: VpcSecurityGroupMembershipList; - /** - * The Availability Zone for the instance. - */ - AvailabilityZone?: String; - /** - * The subnet group for the replication instance. - */ - ReplicationSubnetGroup?: ReplicationSubnetGroup; - /** - * The maintenance window times for the replication instance. - */ - PreferredMaintenanceWindow?: String; - /** - * The pending modification values. - */ - PendingModifiedValues?: ReplicationPendingModifiedValues; - /** - * Specifies if the replication instance is a Multi-AZ deployment. You cannot set the AvailabilityZone parameter if the Multi-AZ parameter is set to true. - */ - MultiAZ?: Boolean; - /** - * The engine version number of the replication instance. - */ - EngineVersion?: String; - /** - * Boolean value indicating if minor version upgrades will be automatically applied to the instance. - */ - AutoMinorVersionUpgrade?: Boolean; - /** - * The KMS key identifier that is used to encrypt the content on the replication instance. If you do not specify a value for the KmsKeyId parameter, then AWS DMS will use your default encryption key. AWS KMS creates the default encryption key for your AWS account. Your AWS account has a different default encryption key for each AWS region. - */ - KmsKeyId?: String; - /** - * The Amazon Resource Name (ARN) of the replication instance. - */ - ReplicationInstanceArn?: String; - /** - * The public IP address of the replication instance. - */ - ReplicationInstancePublicIpAddress?: String; - /** - * The private IP address of the replication instance. - */ - ReplicationInstancePrivateIpAddress?: String; - /** - * The public IP address of the replication instance. - */ - ReplicationInstancePublicIpAddresses?: ReplicationInstancePublicIpAddressList; - /** - * The private IP address of the replication instance. - */ - ReplicationInstancePrivateIpAddresses?: ReplicationInstancePrivateIpAddressList; - /** - * Specifies the accessibility options for the replication instance. A value of true represents an instance with a public IP address. A value of false represents an instance with a private IP address. The default value is true. - */ - PubliclyAccessible?: Boolean; - /** - * The availability zone of the standby replication instance in a Multi-AZ deployment. - */ - SecondaryAvailabilityZone?: String; - } - export type ReplicationInstanceList = ReplicationInstance[]; - export type ReplicationInstancePrivateIpAddressList = String[]; - export type ReplicationInstancePublicIpAddressList = String[]; - export interface ReplicationPendingModifiedValues { - /** - * The compute and memory capacity of the replication instance. Valid Values: dms.t2.micro | dms.t2.small | dms.t2.medium | dms.t2.large | dms.c4.large | dms.c4.xlarge | dms.c4.2xlarge | dms.c4.4xlarge - */ - ReplicationInstanceClass?: String; - /** - * The amount of storage (in gigabytes) that is allocated for the replication instance. - */ - AllocatedStorage?: IntegerOptional; - /** - * Specifies if the replication instance is a Multi-AZ deployment. You cannot set the AvailabilityZone parameter if the Multi-AZ parameter is set to true. - */ - MultiAZ?: BooleanOptional; - /** - * The engine version number of the replication instance. - */ - EngineVersion?: String; - } - export interface ReplicationSubnetGroup { - /** - * The identifier of the replication instance subnet group. - */ - ReplicationSubnetGroupIdentifier?: String; - /** - * The description of the replication subnet group. - */ - ReplicationSubnetGroupDescription?: String; - /** - * The ID of the VPC. - */ - VpcId?: String; - /** - * The status of the subnet group. - */ - SubnetGroupStatus?: String; - /** - * The subnets that are in the subnet group. - */ - Subnets?: SubnetList; - } - export type ReplicationSubnetGroups = ReplicationSubnetGroup[]; - export interface ReplicationTask { - /** - * The replication task identifier. Constraints: Must contain from 1 to 255 alphanumeric characters or hyphens. First character must be a letter. Cannot end with a hyphen or contain two consecutive hyphens. - */ - ReplicationTaskIdentifier?: String; - /** - * The Amazon Resource Name (ARN) string that uniquely identifies the endpoint. - */ - SourceEndpointArn?: String; - /** - * The Amazon Resource Name (ARN) string that uniquely identifies the endpoint. - */ - TargetEndpointArn?: String; - /** - * The Amazon Resource Name (ARN) of the replication instance. - */ - ReplicationInstanceArn?: String; - /** - * The type of migration. - */ - MigrationType?: MigrationTypeValue; - /** - * Table mappings specified in the task. - */ - TableMappings?: String; - /** - * The settings for the replication task. - */ - ReplicationTaskSettings?: String; - /** - * The status of the replication task. - */ - Status?: String; - /** - * The last error (failure) message generated for the replication instance. - */ - LastFailureMessage?: String; - /** - * The reason the replication task was stopped. - */ - StopReason?: String; - /** - * The date the replication task was created. - */ - ReplicationTaskCreationDate?: TStamp; - /** - * The date the replication task is scheduled to start. - */ - ReplicationTaskStartDate?: TStamp; - /** - * The Amazon Resource Name (ARN) of the replication task. - */ - ReplicationTaskArn?: String; - /** - * The statistics for the task, including elapsed time, tables loaded, and table errors. - */ - ReplicationTaskStats?: ReplicationTaskStats; - } - export type ReplicationTaskList = ReplicationTask[]; - export interface ReplicationTaskStats { - /** - * The percent complete for the full load migration task. - */ - FullLoadProgressPercent?: Integer; - /** - * The elapsed time of the task, in milliseconds. - */ - ElapsedTimeMillis?: Long; - /** - * The number of tables loaded for this task. - */ - TablesLoaded?: Integer; - /** - * The number of tables currently loading for this task. - */ - TablesLoading?: Integer; - /** - * The number of tables queued for this task. - */ - TablesQueued?: Integer; - /** - * The number of errors that have occurred during this task. - */ - TablesErrored?: Integer; - } - export interface S3Settings { - /** - * The Amazon Resource Name (ARN) used by the service access IAM role. - */ - ServiceAccessRoleArn?: String; - /** - * - */ - ExternalTableDefinition?: String; - /** - * The delimiter used to separate rows in the source files. The default is a carriage return (\n). - */ - CsvRowDelimiter?: String; - /** - * The delimiter used to separate columns in the source files. The default is a comma. - */ - CsvDelimiter?: String; - /** - * An optional parameter to set a folder name in the S3 bucket. If provided, tables are created in the path <bucketFolder>/<schema_name>/<table_name>/. If this parameter is not specified, then the path used is <schema_name>/<table_name>/. - */ - BucketFolder?: String; - /** - * The name of the S3 bucket. - */ - BucketName?: String; - /** - * An optional parameter to use GZIP to compress the target files. Set to GZIP to compress the target files. Set to NONE (the default) or do not use to leave the files uncompressed. - */ - CompressionType?: CompressionTypeValue; - } - export type SchemaList = String[]; - export type SecretString = string; - export type SourceIdsList = String[]; - export type SourceType = "replication-instance"|string; - export interface StartReplicationTaskMessage { - /** - * The Amazon Resource Number (ARN) of the replication task to be started. - */ - ReplicationTaskArn: String; - /** - * The type of replication task. - */ - StartReplicationTaskType: StartReplicationTaskTypeValue; - /** - * The start time for the Change Data Capture (CDC) operation. - */ - CdcStartTime?: TStamp; - } - export interface StartReplicationTaskResponse { - /** - * The replication task started. - */ - ReplicationTask?: ReplicationTask; - } - export type StartReplicationTaskTypeValue = "start-replication"|"resume-processing"|"reload-target"|string; - export interface StopReplicationTaskMessage { - /** - * The Amazon Resource Number(ARN) of the replication task to be stopped. - */ - ReplicationTaskArn: String; - } - export interface StopReplicationTaskResponse { - /** - * The replication task stopped. - */ - ReplicationTask?: ReplicationTask; - } - export type String = string; - export interface Subnet { - /** - * The subnet identifier. - */ - SubnetIdentifier?: String; - /** - * The Availability Zone of the subnet. - */ - SubnetAvailabilityZone?: AvailabilityZone; - /** - * The status of the subnet. - */ - SubnetStatus?: String; - } - export type SubnetIdentifierList = String[]; - export type SubnetList = Subnet[]; - export interface SupportedEndpointType { - /** - * The database engine name. Valid values, depending on the EndPointType, include MYSQL, ORACLE, POSTGRES, MARIADB, AURORA, REDSHIFT, S3, SYBASE, DYNAMODB, MONGODB, and SQLSERVER. - */ - EngineName?: String; - /** - * Indicates if Change Data Capture (CDC) is supported. - */ - SupportsCDC?: Boolean; - /** - * The type of endpoint. - */ - EndpointType?: ReplicationEndpointTypeValue; - } - export type SupportedEndpointTypeList = SupportedEndpointType[]; - export type TStamp = Date; - export type TableListToReload = TableToReload[]; - export interface TableStatistics { - /** - * The schema name. - */ - SchemaName?: String; - /** - * The name of the table. - */ - TableName?: String; - /** - * The number of insert actions performed on a table. - */ - Inserts?: Long; - /** - * The number of delete actions performed on a table. - */ - Deletes?: Long; - /** - * The number of update actions performed on a table. - */ - Updates?: Long; - /** - * The Data Definition Language (DDL) used to build and modify the structure of your tables. - */ - Ddls?: Long; - /** - * The number of rows added during the Full Load operation. - */ - FullLoadRows?: Long; - /** - * The number of rows that failed conditional checks during the Full Load operation (valid only for DynamoDB as a target migrations). - */ - FullLoadCondtnlChkFailedRows?: Long; - /** - * The number of rows that failed to load during the Full Load operation (valid only for DynamoDB as a target migrations). - */ - FullLoadErrorRows?: Long; - /** - * The last time the table was updated. - */ - LastUpdateTime?: TStamp; - /** - * The state of the tables described. Valid states: Table does not exist | Before load | Full load | Table completed | Table cancelled | Table error | Table all | Table updates | Table is being reloaded - */ - TableState?: String; - } - export type TableStatisticsList = TableStatistics[]; - export interface TableToReload { - /** - * The schema name of the table to be reloaded. - */ - SchemaName?: String; - /** - * The table name of the table to be reloaded. - */ - TableName?: String; - } - export interface Tag { - /** - * A key is the required name of the tag. The string value can be from 1 to 128 Unicode characters in length and cannot be prefixed with "aws:" or "dms:". The string can only contain only the set of Unicode letters, digits, white-space, '_', '.', '/', '=', '+', '-' (Java regex: "^([\\p{L}\\p{Z}\\p{N}_.:/=+\\-]*)$"). - */ - Key?: String; - /** - * A value is the optional value of the tag. The string value can be from 1 to 256 Unicode characters in length and cannot be prefixed with "aws:" or "dms:". The string can only contain only the set of Unicode letters, digits, white-space, '_', '.', '/', '=', '+', '-' (Java regex: "^([\\p{L}\\p{Z}\\p{N}_.:/=+\\-]*)$"). - */ - Value?: String; - } - export type TagList = Tag[]; - export interface TestConnectionMessage { - /** - * The Amazon Resource Name (ARN) of the replication instance. - */ - ReplicationInstanceArn: String; - /** - * The Amazon Resource Name (ARN) string that uniquely identifies the endpoint. - */ - EndpointArn: String; - } - export interface TestConnectionResponse { - /** - * The connection tested. - */ - Connection?: Connection; - } - export type VpcSecurityGroupIdList = String[]; - export interface VpcSecurityGroupMembership { - /** - * The VPC security group Id. - */ - VpcSecurityGroupId?: String; - /** - * The status of the VPC security group. - */ - Status?: String; - } - export type VpcSecurityGroupMembershipList = VpcSecurityGroupMembership[]; - /** - * A string in YYYY-MM-DD format that represents the latest possible API version that can be used in this service. Specify 'latest' to use the latest possible version. - */ - export type apiVersion = "2016-01-01"|"latest"|string; - export interface ClientApiVersions { - /** - * A string in YYYY-MM-DD format that represents the latest possible API version that can be used in this service. Specify 'latest' to use the latest possible version. - */ - apiVersion?: apiVersion; - } - export type ClientConfiguration = ServiceConfigurationOptions & ClientApiVersions; - /** - * Contains interfaces for use with the DMS client. - */ - export import Types = DMS; -} -export = DMS; diff --git a/workshops/monte-carlo-on-ec2-spot-fleet/src/web/node_modules/aws-sdk/clients/dms.js b/workshops/monte-carlo-on-ec2-spot-fleet/src/web/node_modules/aws-sdk/clients/dms.js deleted file mode 100644 index ff7314b1..00000000 --- a/workshops/monte-carlo-on-ec2-spot-fleet/src/web/node_modules/aws-sdk/clients/dms.js +++ /dev/null @@ -1,18 +0,0 @@ -require('../lib/node_loader'); -var AWS = require('../lib/core'); -var Service = AWS.Service; -var apiLoader = AWS.apiLoader; - -apiLoader.services['dms'] = {}; -AWS.DMS = Service.defineService('dms', ['2016-01-01']); -Object.defineProperty(apiLoader.services['dms'], '2016-01-01', { - get: function get() { - var model = require('../apis/dms-2016-01-01.min.json'); - model.paginators = require('../apis/dms-2016-01-01.paginators.json').pagination; - return model; - }, - enumerable: true, - configurable: true -}); - -module.exports = AWS.DMS; diff --git a/workshops/monte-carlo-on-ec2-spot-fleet/src/web/node_modules/aws-sdk/clients/dynamodb.d.ts b/workshops/monte-carlo-on-ec2-spot-fleet/src/web/node_modules/aws-sdk/clients/dynamodb.d.ts deleted file mode 100644 index a91add27..00000000 --- a/workshops/monte-carlo-on-ec2-spot-fleet/src/web/node_modules/aws-sdk/clients/dynamodb.d.ts +++ /dev/null @@ -1,1384 +0,0 @@ -import {Request} from '../lib/request'; -import {Response} from '../lib/response'; -import {AWSError} from '../lib/error'; -import {DynamoDBCustomizations} from '../lib/services/dynamodb'; -import {ServiceConfigurationOptions} from '../lib/service'; -import {ConfigBase as Config} from '../lib/config'; -import {DocumentClient as document_client} from '../lib/dynamodb/document_client'; -import {Converter as converter} from '../lib/dynamodb/converter'; -interface Blob {} -declare class DynamoDB extends DynamoDBCustomizations { - /** - * Constructs a service object. This object has one method for each API operation. - */ - constructor(options?: DynamoDB.Types.ClientConfiguration) - config: Config & DynamoDB.Types.ClientConfiguration; - /** - * The BatchGetItem operation returns the attributes of one or more items from one or more tables. You identify requested items by primary key. A single operation can retrieve up to 16 MB of data, which can contain as many as 100 items. BatchGetItem will return a partial result if the response size limit is exceeded, the table's provisioned throughput is exceeded, or an internal processing failure occurs. If a partial result is returned, the operation returns a value for UnprocessedKeys. You can use this value to retry the operation starting with the next item to get. If you request more than 100 items BatchGetItem will return a ValidationException with the message "Too many items requested for the BatchGetItem call". For example, if you ask to retrieve 100 items, but each individual item is 300 KB in size, the system returns 52 items (so as not to exceed the 16 MB limit). It also returns an appropriate UnprocessedKeys value so you can get the next page of results. If desired, your application can include its own logic to assemble the pages of results into one data set. If none of the items can be processed due to insufficient provisioned throughput on all of the tables in the request, then BatchGetItem will return a ProvisionedThroughputExceededException. If at least one of the items is successfully processed, then BatchGetItem completes successfully, while returning the keys of the unread items in UnprocessedKeys. If DynamoDB returns any unprocessed items, you should retry the batch operation on those items. However, we strongly recommend that you use an exponential backoff algorithm. If you retry the batch operation immediately, the underlying read or write requests can still fail due to throttling on the individual tables. If you delay the batch operation using exponential backoff, the individual requests in the batch are much more likely to succeed. For more information, see Batch Operations and Error Handling in the Amazon DynamoDB Developer Guide. By default, BatchGetItem performs eventually consistent reads on every table in the request. If you want strongly consistent reads instead, you can set ConsistentRead to true for any or all tables. In order to minimize response latency, BatchGetItem retrieves items in parallel. When designing your application, keep in mind that DynamoDB does not return items in any particular order. To help parse the response by item, include the primary key values for the items in your request in the ProjectionExpression parameter. If a requested item does not exist, it is not returned in the result. Requests for nonexistent items consume the minimum read capacity units according to the type of read. For more information, see Capacity Units Calculations in the Amazon DynamoDB Developer Guide. - */ - batchGetItem(params: DynamoDB.Types.BatchGetItemInput, callback?: (err: AWSError, data: DynamoDB.Types.BatchGetItemOutput) => void): Request; - /** - * The BatchGetItem operation returns the attributes of one or more items from one or more tables. You identify requested items by primary key. A single operation can retrieve up to 16 MB of data, which can contain as many as 100 items. BatchGetItem will return a partial result if the response size limit is exceeded, the table's provisioned throughput is exceeded, or an internal processing failure occurs. If a partial result is returned, the operation returns a value for UnprocessedKeys. You can use this value to retry the operation starting with the next item to get. If you request more than 100 items BatchGetItem will return a ValidationException with the message "Too many items requested for the BatchGetItem call". For example, if you ask to retrieve 100 items, but each individual item is 300 KB in size, the system returns 52 items (so as not to exceed the 16 MB limit). It also returns an appropriate UnprocessedKeys value so you can get the next page of results. If desired, your application can include its own logic to assemble the pages of results into one data set. If none of the items can be processed due to insufficient provisioned throughput on all of the tables in the request, then BatchGetItem will return a ProvisionedThroughputExceededException. If at least one of the items is successfully processed, then BatchGetItem completes successfully, while returning the keys of the unread items in UnprocessedKeys. If DynamoDB returns any unprocessed items, you should retry the batch operation on those items. However, we strongly recommend that you use an exponential backoff algorithm. If you retry the batch operation immediately, the underlying read or write requests can still fail due to throttling on the individual tables. If you delay the batch operation using exponential backoff, the individual requests in the batch are much more likely to succeed. For more information, see Batch Operations and Error Handling in the Amazon DynamoDB Developer Guide. By default, BatchGetItem performs eventually consistent reads on every table in the request. If you want strongly consistent reads instead, you can set ConsistentRead to true for any or all tables. In order to minimize response latency, BatchGetItem retrieves items in parallel. When designing your application, keep in mind that DynamoDB does not return items in any particular order. To help parse the response by item, include the primary key values for the items in your request in the ProjectionExpression parameter. If a requested item does not exist, it is not returned in the result. Requests for nonexistent items consume the minimum read capacity units according to the type of read. For more information, see Capacity Units Calculations in the Amazon DynamoDB Developer Guide. - */ - batchGetItem(callback?: (err: AWSError, data: DynamoDB.Types.BatchGetItemOutput) => void): Request; - /** - * The BatchWriteItem operation puts or deletes multiple items in one or more tables. A single call to BatchWriteItem can write up to 16 MB of data, which can comprise as many as 25 put or delete requests. Individual items to be written can be as large as 400 KB. BatchWriteItem cannot update items. To update items, use the UpdateItem action. The individual PutItem and DeleteItem operations specified in BatchWriteItem are atomic; however BatchWriteItem as a whole is not. If any requested operations fail because the table's provisioned throughput is exceeded or an internal processing failure occurs, the failed operations are returned in the UnprocessedItems response parameter. You can investigate and optionally resend the requests. Typically, you would call BatchWriteItem in a loop. Each iteration would check for unprocessed items and submit a new BatchWriteItem request with those unprocessed items until all items have been processed. Note that if none of the items can be processed due to insufficient provisioned throughput on all of the tables in the request, then BatchWriteItem will return a ProvisionedThroughputExceededException. If DynamoDB returns any unprocessed items, you should retry the batch operation on those items. However, we strongly recommend that you use an exponential backoff algorithm. If you retry the batch operation immediately, the underlying read or write requests can still fail due to throttling on the individual tables. If you delay the batch operation using exponential backoff, the individual requests in the batch are much more likely to succeed. For more information, see Batch Operations and Error Handling in the Amazon DynamoDB Developer Guide. With BatchWriteItem, you can efficiently write or delete large amounts of data, such as from Amazon Elastic MapReduce (EMR), or copy data from another database into DynamoDB. In order to improve performance with these large-scale operations, BatchWriteItem does not behave in the same way as individual PutItem and DeleteItem calls would. For example, you cannot specify conditions on individual put and delete requests, and BatchWriteItem does not return deleted items in the response. If you use a programming language that supports concurrency, you can use threads to write items in parallel. Your application must include the necessary logic to manage the threads. With languages that don't support threading, you must update or delete the specified items one at a time. In both situations, BatchWriteItem performs the specified put and delete operations in parallel, giving you the power of the thread pool approach without having to introduce complexity into your application. Parallel processing reduces latency, but each specified put and delete request consumes the same number of write capacity units whether it is processed in parallel or not. Delete operations on nonexistent items consume one write capacity unit. If one or more of the following is true, DynamoDB rejects the entire batch write operation: One or more tables specified in the BatchWriteItem request does not exist. Primary key attributes specified on an item in the request do not match those in the corresponding table's primary key schema. You try to perform multiple operations on the same item in the same BatchWriteItem request. For example, you cannot put and delete the same item in the same BatchWriteItem request. There are more than 25 requests in the batch. Any individual item in a batch exceeds 400 KB. The total request size exceeds 16 MB. - */ - batchWriteItem(params: DynamoDB.Types.BatchWriteItemInput, callback?: (err: AWSError, data: DynamoDB.Types.BatchWriteItemOutput) => void): Request; - /** - * The BatchWriteItem operation puts or deletes multiple items in one or more tables. A single call to BatchWriteItem can write up to 16 MB of data, which can comprise as many as 25 put or delete requests. Individual items to be written can be as large as 400 KB. BatchWriteItem cannot update items. To update items, use the UpdateItem action. The individual PutItem and DeleteItem operations specified in BatchWriteItem are atomic; however BatchWriteItem as a whole is not. If any requested operations fail because the table's provisioned throughput is exceeded or an internal processing failure occurs, the failed operations are returned in the UnprocessedItems response parameter. You can investigate and optionally resend the requests. Typically, you would call BatchWriteItem in a loop. Each iteration would check for unprocessed items and submit a new BatchWriteItem request with those unprocessed items until all items have been processed. Note that if none of the items can be processed due to insufficient provisioned throughput on all of the tables in the request, then BatchWriteItem will return a ProvisionedThroughputExceededException. If DynamoDB returns any unprocessed items, you should retry the batch operation on those items. However, we strongly recommend that you use an exponential backoff algorithm. If you retry the batch operation immediately, the underlying read or write requests can still fail due to throttling on the individual tables. If you delay the batch operation using exponential backoff, the individual requests in the batch are much more likely to succeed. For more information, see Batch Operations and Error Handling in the Amazon DynamoDB Developer Guide. With BatchWriteItem, you can efficiently write or delete large amounts of data, such as from Amazon Elastic MapReduce (EMR), or copy data from another database into DynamoDB. In order to improve performance with these large-scale operations, BatchWriteItem does not behave in the same way as individual PutItem and DeleteItem calls would. For example, you cannot specify conditions on individual put and delete requests, and BatchWriteItem does not return deleted items in the response. If you use a programming language that supports concurrency, you can use threads to write items in parallel. Your application must include the necessary logic to manage the threads. With languages that don't support threading, you must update or delete the specified items one at a time. In both situations, BatchWriteItem performs the specified put and delete operations in parallel, giving you the power of the thread pool approach without having to introduce complexity into your application. Parallel processing reduces latency, but each specified put and delete request consumes the same number of write capacity units whether it is processed in parallel or not. Delete operations on nonexistent items consume one write capacity unit. If one or more of the following is true, DynamoDB rejects the entire batch write operation: One or more tables specified in the BatchWriteItem request does not exist. Primary key attributes specified on an item in the request do not match those in the corresponding table's primary key schema. You try to perform multiple operations on the same item in the same BatchWriteItem request. For example, you cannot put and delete the same item in the same BatchWriteItem request. There are more than 25 requests in the batch. Any individual item in a batch exceeds 400 KB. The total request size exceeds 16 MB. - */ - batchWriteItem(callback?: (err: AWSError, data: DynamoDB.Types.BatchWriteItemOutput) => void): Request; - /** - * The CreateTable operation adds a new table to your account. In an AWS account, table names must be unique within each region. That is, you can have two tables with same name if you create the tables in different regions. CreateTable is an asynchronous operation. Upon receiving a CreateTable request, DynamoDB immediately returns a response with a TableStatus of CREATING. After the table is created, DynamoDB sets the TableStatus to ACTIVE. You can perform read and write operations only on an ACTIVE table. You can optionally define secondary indexes on the new table, as part of the CreateTable operation. If you want to create multiple tables with secondary indexes on them, you must create the tables sequentially. Only one table with secondary indexes can be in the CREATING state at any given time. You can use the DescribeTable action to check the table status. - */ - createTable(params: DynamoDB.Types.CreateTableInput, callback?: (err: AWSError, data: DynamoDB.Types.CreateTableOutput) => void): Request; - /** - * The CreateTable operation adds a new table to your account. In an AWS account, table names must be unique within each region. That is, you can have two tables with same name if you create the tables in different regions. CreateTable is an asynchronous operation. Upon receiving a CreateTable request, DynamoDB immediately returns a response with a TableStatus of CREATING. After the table is created, DynamoDB sets the TableStatus to ACTIVE. You can perform read and write operations only on an ACTIVE table. You can optionally define secondary indexes on the new table, as part of the CreateTable operation. If you want to create multiple tables with secondary indexes on them, you must create the tables sequentially. Only one table with secondary indexes can be in the CREATING state at any given time. You can use the DescribeTable action to check the table status. - */ - createTable(callback?: (err: AWSError, data: DynamoDB.Types.CreateTableOutput) => void): Request; - /** - * Deletes a single item in a table by primary key. You can perform a conditional delete operation that deletes the item if it exists, or if it has an expected attribute value. In addition to deleting an item, you can also return the item's attribute values in the same operation, using the ReturnValues parameter. Unless you specify conditions, the DeleteItem is an idempotent operation; running it multiple times on the same item or attribute does not result in an error response. Conditional deletes are useful for deleting items only if specific conditions are met. If those conditions are met, DynamoDB performs the delete. Otherwise, the item is not deleted. - */ - deleteItem(params: DynamoDB.Types.DeleteItemInput, callback?: (err: AWSError, data: DynamoDB.Types.DeleteItemOutput) => void): Request; - /** - * Deletes a single item in a table by primary key. You can perform a conditional delete operation that deletes the item if it exists, or if it has an expected attribute value. In addition to deleting an item, you can also return the item's attribute values in the same operation, using the ReturnValues parameter. Unless you specify conditions, the DeleteItem is an idempotent operation; running it multiple times on the same item or attribute does not result in an error response. Conditional deletes are useful for deleting items only if specific conditions are met. If those conditions are met, DynamoDB performs the delete. Otherwise, the item is not deleted. - */ - deleteItem(callback?: (err: AWSError, data: DynamoDB.Types.DeleteItemOutput) => void): Request; - /** - * The DeleteTable operation deletes a table and all of its items. After a DeleteTable request, the specified table is in the DELETING state until DynamoDB completes the deletion. If the table is in the ACTIVE state, you can delete it. If a table is in CREATING or UPDATING states, then DynamoDB returns a ResourceInUseException. If the specified table does not exist, DynamoDB returns a ResourceNotFoundException. If table is already in the DELETING state, no error is returned. DynamoDB might continue to accept data read and write operations, such as GetItem and PutItem, on a table in the DELETING state until the table deletion is complete. When you delete a table, any indexes on that table are also deleted. If you have DynamoDB Streams enabled on the table, then the corresponding stream on that table goes into the DISABLED state, and the stream is automatically deleted after 24 hours. Use the DescribeTable action to check the status of the table. - */ - deleteTable(params: DynamoDB.Types.DeleteTableInput, callback?: (err: AWSError, data: DynamoDB.Types.DeleteTableOutput) => void): Request; - /** - * The DeleteTable operation deletes a table and all of its items. After a DeleteTable request, the specified table is in the DELETING state until DynamoDB completes the deletion. If the table is in the ACTIVE state, you can delete it. If a table is in CREATING or UPDATING states, then DynamoDB returns a ResourceInUseException. If the specified table does not exist, DynamoDB returns a ResourceNotFoundException. If table is already in the DELETING state, no error is returned. DynamoDB might continue to accept data read and write operations, such as GetItem and PutItem, on a table in the DELETING state until the table deletion is complete. When you delete a table, any indexes on that table are also deleted. If you have DynamoDB Streams enabled on the table, then the corresponding stream on that table goes into the DISABLED state, and the stream is automatically deleted after 24 hours. Use the DescribeTable action to check the status of the table. - */ - deleteTable(callback?: (err: AWSError, data: DynamoDB.Types.DeleteTableOutput) => void): Request; - /** - * Returns the current provisioned-capacity limits for your AWS account in a region, both for the region as a whole and for any one DynamoDB table that you create there. When you establish an AWS account, the account has initial limits on the maximum read capacity units and write capacity units that you can provision across all of your DynamoDB tables in a given region. Also, there are per-table limits that apply when you create a table there. For more information, see Limits page in the Amazon DynamoDB Developer Guide. Although you can increase these limits by filing a case at AWS Support Center, obtaining the increase is not instantaneous. The DescribeLimits action lets you write code to compare the capacity you are currently using to those limits imposed by your account so that you have enough time to apply for an increase before you hit a limit. For example, you could use one of the AWS SDKs to do the following: Call DescribeLimits for a particular region to obtain your current account limits on provisioned capacity there. Create a variable to hold the aggregate read capacity units provisioned for all your tables in that region, and one to hold the aggregate write capacity units. Zero them both. Call ListTables to obtain a list of all your DynamoDB tables. For each table name listed by ListTables, do the following: Call DescribeTable with the table name. Use the data returned by DescribeTable to add the read capacity units and write capacity units provisioned for the table itself to your variables. If the table has one or more global secondary indexes (GSIs), loop over these GSIs and add their provisioned capacity values to your variables as well. Report the account limits for that region returned by DescribeLimits, along with the total current provisioned capacity levels you have calculated. This will let you see whether you are getting close to your account-level limits. The per-table limits apply only when you are creating a new table. They restrict the sum of the provisioned capacity of the new table itself and all its global secondary indexes. For existing tables and their GSIs, DynamoDB will not let you increase provisioned capacity extremely rapidly, but the only upper limit that applies is that the aggregate provisioned capacity over all your tables and GSIs cannot exceed either of the per-account limits. DescribeLimits should only be called periodically. You can expect throttling errors if you call it more than once in a minute. The DescribeLimits Request element has no content. - */ - describeLimits(params: DynamoDB.Types.DescribeLimitsInput, callback?: (err: AWSError, data: DynamoDB.Types.DescribeLimitsOutput) => void): Request; - /** - * Returns the current provisioned-capacity limits for your AWS account in a region, both for the region as a whole and for any one DynamoDB table that you create there. When you establish an AWS account, the account has initial limits on the maximum read capacity units and write capacity units that you can provision across all of your DynamoDB tables in a given region. Also, there are per-table limits that apply when you create a table there. For more information, see Limits page in the Amazon DynamoDB Developer Guide. Although you can increase these limits by filing a case at AWS Support Center, obtaining the increase is not instantaneous. The DescribeLimits action lets you write code to compare the capacity you are currently using to those limits imposed by your account so that you have enough time to apply for an increase before you hit a limit. For example, you could use one of the AWS SDKs to do the following: Call DescribeLimits for a particular region to obtain your current account limits on provisioned capacity there. Create a variable to hold the aggregate read capacity units provisioned for all your tables in that region, and one to hold the aggregate write capacity units. Zero them both. Call ListTables to obtain a list of all your DynamoDB tables. For each table name listed by ListTables, do the following: Call DescribeTable with the table name. Use the data returned by DescribeTable to add the read capacity units and write capacity units provisioned for the table itself to your variables. If the table has one or more global secondary indexes (GSIs), loop over these GSIs and add their provisioned capacity values to your variables as well. Report the account limits for that region returned by DescribeLimits, along with the total current provisioned capacity levels you have calculated. This will let you see whether you are getting close to your account-level limits. The per-table limits apply only when you are creating a new table. They restrict the sum of the provisioned capacity of the new table itself and all its global secondary indexes. For existing tables and their GSIs, DynamoDB will not let you increase provisioned capacity extremely rapidly, but the only upper limit that applies is that the aggregate provisioned capacity over all your tables and GSIs cannot exceed either of the per-account limits. DescribeLimits should only be called periodically. You can expect throttling errors if you call it more than once in a minute. The DescribeLimits Request element has no content. - */ - describeLimits(callback?: (err: AWSError, data: DynamoDB.Types.DescribeLimitsOutput) => void): Request; - /** - * Returns information about the table, including the current status of the table, when it was created, the primary key schema, and any indexes on the table. If you issue a DescribeTable request immediately after a CreateTable request, DynamoDB might return a ResourceNotFoundException. This is because DescribeTable uses an eventually consistent query, and the metadata for your table might not be available at that moment. Wait for a few seconds, and then try the DescribeTable request again. - */ - describeTable(params: DynamoDB.Types.DescribeTableInput, callback?: (err: AWSError, data: DynamoDB.Types.DescribeTableOutput) => void): Request; - /** - * Returns information about the table, including the current status of the table, when it was created, the primary key schema, and any indexes on the table. If you issue a DescribeTable request immediately after a CreateTable request, DynamoDB might return a ResourceNotFoundException. This is because DescribeTable uses an eventually consistent query, and the metadata for your table might not be available at that moment. Wait for a few seconds, and then try the DescribeTable request again. - */ - describeTable(callback?: (err: AWSError, data: DynamoDB.Types.DescribeTableOutput) => void): Request; - /** - * Gives a description of the Time to Live (TTL) status on the specified table. - */ - describeTimeToLive(params: DynamoDB.Types.DescribeTimeToLiveInput, callback?: (err: AWSError, data: DynamoDB.Types.DescribeTimeToLiveOutput) => void): Request; - /** - * Gives a description of the Time to Live (TTL) status on the specified table. - */ - describeTimeToLive(callback?: (err: AWSError, data: DynamoDB.Types.DescribeTimeToLiveOutput) => void): Request; - /** - * The GetItem operation returns a set of attributes for the item with the given primary key. If there is no matching item, GetItem does not return any data and there will be no Item element in the response. GetItem provides an eventually consistent read by default. If your application requires a strongly consistent read, set ConsistentRead to true. Although a strongly consistent read might take more time than an eventually consistent read, it always returns the last updated value. - */ - getItem(params: DynamoDB.Types.GetItemInput, callback?: (err: AWSError, data: DynamoDB.Types.GetItemOutput) => void): Request; - /** - * The GetItem operation returns a set of attributes for the item with the given primary key. If there is no matching item, GetItem does not return any data and there will be no Item element in the response. GetItem provides an eventually consistent read by default. If your application requires a strongly consistent read, set ConsistentRead to true. Although a strongly consistent read might take more time than an eventually consistent read, it always returns the last updated value. - */ - getItem(callback?: (err: AWSError, data: DynamoDB.Types.GetItemOutput) => void): Request; - /** - * Returns an array of table names associated with the current account and endpoint. The output from ListTables is paginated, with each page returning a maximum of 100 table names. - */ - listTables(params: DynamoDB.Types.ListTablesInput, callback?: (err: AWSError, data: DynamoDB.Types.ListTablesOutput) => void): Request; - /** - * Returns an array of table names associated with the current account and endpoint. The output from ListTables is paginated, with each page returning a maximum of 100 table names. - */ - listTables(callback?: (err: AWSError, data: DynamoDB.Types.ListTablesOutput) => void): Request; - /** - * List all tags on an Amazon DynamoDB resource. You can call ListTagsOfResource up to 10 times per second, per account. For an overview on tagging DynamoDB resources, see Tagging for DynamoDB in the Amazon DynamoDB Developer Guide. - */ - listTagsOfResource(params: DynamoDB.Types.ListTagsOfResourceInput, callback?: (err: AWSError, data: DynamoDB.Types.ListTagsOfResourceOutput) => void): Request; - /** - * List all tags on an Amazon DynamoDB resource. You can call ListTagsOfResource up to 10 times per second, per account. For an overview on tagging DynamoDB resources, see Tagging for DynamoDB in the Amazon DynamoDB Developer Guide. - */ - listTagsOfResource(callback?: (err: AWSError, data: DynamoDB.Types.ListTagsOfResourceOutput) => void): Request; - /** - * Creates a new item, or replaces an old item with a new item. If an item that has the same primary key as the new item already exists in the specified table, the new item completely replaces the existing item. You can perform a conditional put operation (add a new item if one with the specified primary key doesn't exist), or replace an existing item if it has certain attribute values. You can return the item's attribute values in the same operation, using the ReturnValues parameter. This topic provides general information about the PutItem API. For information on how to call the PutItem API using the AWS SDK in specific languages, see the following: PutItem in the AWS Command Line Interface PutItem in the AWS SDK for .NET PutItem in the AWS SDK for C++ PutItem in the AWS SDK for Go PutItem in the AWS SDK for Java PutItem in the AWS SDK for JavaScript PutItem in the AWS SDK for PHP V3 PutItem in the AWS SDK for Python PutItem in the AWS SDK for Ruby V2 When you add an item, the primary key attribute(s) are the only required attributes. Attribute values cannot be null. String and Binary type attributes must have lengths greater than zero. Set type attributes cannot be empty. Requests with empty values will be rejected with a ValidationException exception. To prevent a new item from replacing an existing item, use a conditional expression that contains the attribute_not_exists function with the name of the attribute being used as the partition key for the table. Since every record must contain that attribute, the attribute_not_exists function will only succeed if no matching item exists. For more information about PutItem, see Working with Items in the Amazon DynamoDB Developer Guide. - */ - putItem(params: DynamoDB.Types.PutItemInput, callback?: (err: AWSError, data: DynamoDB.Types.PutItemOutput) => void): Request; - /** - * Creates a new item, or replaces an old item with a new item. If an item that has the same primary key as the new item already exists in the specified table, the new item completely replaces the existing item. You can perform a conditional put operation (add a new item if one with the specified primary key doesn't exist), or replace an existing item if it has certain attribute values. You can return the item's attribute values in the same operation, using the ReturnValues parameter. This topic provides general information about the PutItem API. For information on how to call the PutItem API using the AWS SDK in specific languages, see the following: PutItem in the AWS Command Line Interface PutItem in the AWS SDK for .NET PutItem in the AWS SDK for C++ PutItem in the AWS SDK for Go PutItem in the AWS SDK for Java PutItem in the AWS SDK for JavaScript PutItem in the AWS SDK for PHP V3 PutItem in the AWS SDK for Python PutItem in the AWS SDK for Ruby V2 When you add an item, the primary key attribute(s) are the only required attributes. Attribute values cannot be null. String and Binary type attributes must have lengths greater than zero. Set type attributes cannot be empty. Requests with empty values will be rejected with a ValidationException exception. To prevent a new item from replacing an existing item, use a conditional expression that contains the attribute_not_exists function with the name of the attribute being used as the partition key for the table. Since every record must contain that attribute, the attribute_not_exists function will only succeed if no matching item exists. For more information about PutItem, see Working with Items in the Amazon DynamoDB Developer Guide. - */ - putItem(callback?: (err: AWSError, data: DynamoDB.Types.PutItemOutput) => void): Request; - /** - * The Query operation finds items based on primary key values. You can query any table or secondary index that has a composite primary key (a partition key and a sort key). Use the KeyConditionExpression parameter to provide a specific value for the partition key. The Query operation will return all of the items from the table or index with that partition key value. You can optionally narrow the scope of the Query operation by specifying a sort key value and a comparison operator in KeyConditionExpression. To further refine the Query results, you can optionally provide a FilterExpression. A FilterExpression determines which items within the results should be returned to you. All of the other results are discarded. A Query operation always returns a result set. If no matching items are found, the result set will be empty. Queries that do not return results consume the minimum number of read capacity units for that type of read operation. DynamoDB calculates the number of read capacity units consumed based on item size, not on the amount of data that is returned to an application. The number of capacity units consumed will be the same whether you request all of the attributes (the default behavior) or just some of them (using a projection expression). The number will also be the same whether or not you use a FilterExpression. Query results are always sorted by the sort key value. If the data type of the sort key is Number, the results are returned in numeric order; otherwise, the results are returned in order of UTF-8 bytes. By default, the sort order is ascending. To reverse the order, set the ScanIndexForward parameter to false. A single Query operation will read up to the maximum number of items set (if using the Limit parameter) or a maximum of 1 MB of data and then apply any filtering to the results using FilterExpression. If LastEvaluatedKey is present in the response, you will need to paginate the result set. For more information, see Paginating the Results in the Amazon DynamoDB Developer Guide. FilterExpression is applied after a Query finishes, but before the results are returned. A FilterExpression cannot contain partition key or sort key attributes. You need to specify those attributes in the KeyConditionExpression. A Query operation can return an empty result set and a LastEvaluatedKey if all the items read for the page of results are filtered out. You can query a table, a local secondary index, or a global secondary index. For a query on a table or on a local secondary index, you can set the ConsistentRead parameter to true and obtain a strongly consistent result. Global secondary indexes support eventually consistent reads only, so do not specify ConsistentRead when querying a global secondary index. - */ - query(params: DynamoDB.Types.QueryInput, callback?: (err: AWSError, data: DynamoDB.Types.QueryOutput) => void): Request; - /** - * The Query operation finds items based on primary key values. You can query any table or secondary index that has a composite primary key (a partition key and a sort key). Use the KeyConditionExpression parameter to provide a specific value for the partition key. The Query operation will return all of the items from the table or index with that partition key value. You can optionally narrow the scope of the Query operation by specifying a sort key value and a comparison operator in KeyConditionExpression. To further refine the Query results, you can optionally provide a FilterExpression. A FilterExpression determines which items within the results should be returned to you. All of the other results are discarded. A Query operation always returns a result set. If no matching items are found, the result set will be empty. Queries that do not return results consume the minimum number of read capacity units for that type of read operation. DynamoDB calculates the number of read capacity units consumed based on item size, not on the amount of data that is returned to an application. The number of capacity units consumed will be the same whether you request all of the attributes (the default behavior) or just some of them (using a projection expression). The number will also be the same whether or not you use a FilterExpression. Query results are always sorted by the sort key value. If the data type of the sort key is Number, the results are returned in numeric order; otherwise, the results are returned in order of UTF-8 bytes. By default, the sort order is ascending. To reverse the order, set the ScanIndexForward parameter to false. A single Query operation will read up to the maximum number of items set (if using the Limit parameter) or a maximum of 1 MB of data and then apply any filtering to the results using FilterExpression. If LastEvaluatedKey is present in the response, you will need to paginate the result set. For more information, see Paginating the Results in the Amazon DynamoDB Developer Guide. FilterExpression is applied after a Query finishes, but before the results are returned. A FilterExpression cannot contain partition key or sort key attributes. You need to specify those attributes in the KeyConditionExpression. A Query operation can return an empty result set and a LastEvaluatedKey if all the items read for the page of results are filtered out. You can query a table, a local secondary index, or a global secondary index. For a query on a table or on a local secondary index, you can set the ConsistentRead parameter to true and obtain a strongly consistent result. Global secondary indexes support eventually consistent reads only, so do not specify ConsistentRead when querying a global secondary index. - */ - query(callback?: (err: AWSError, data: DynamoDB.Types.QueryOutput) => void): Request; - /** - * The Scan operation returns one or more items and item attributes by accessing every item in a table or a secondary index. To have DynamoDB return fewer items, you can provide a FilterExpression operation. If the total number of scanned items exceeds the maximum data set size limit of 1 MB, the scan stops and results are returned to the user as a LastEvaluatedKey value to continue the scan in a subsequent operation. The results also include the number of items exceeding the limit. A scan can result in no table data meeting the filter criteria. A single Scan operation will read up to the maximum number of items set (if using the Limit parameter) or a maximum of 1 MB of data and then apply any filtering to the results using FilterExpression. If LastEvaluatedKey is present in the response, you will need to paginate the result set. For more information, see Paginating the Results in the Amazon DynamoDB Developer Guide. Scan operations proceed sequentially; however, for faster performance on a large table or secondary index, applications can request a parallel Scan operation by providing the Segment and TotalSegments parameters. For more information, see Parallel Scan in the Amazon DynamoDB Developer Guide. Scan uses eventually consistent reads when accessing the data in a table; therefore, the result set might not include the changes to data in the table immediately before the operation began. If you need a consistent copy of the data, as of the time that the Scan begins, you can set the ConsistentRead parameter to true. - */ - scan(params: DynamoDB.Types.ScanInput, callback?: (err: AWSError, data: DynamoDB.Types.ScanOutput) => void): Request; - /** - * The Scan operation returns one or more items and item attributes by accessing every item in a table or a secondary index. To have DynamoDB return fewer items, you can provide a FilterExpression operation. If the total number of scanned items exceeds the maximum data set size limit of 1 MB, the scan stops and results are returned to the user as a LastEvaluatedKey value to continue the scan in a subsequent operation. The results also include the number of items exceeding the limit. A scan can result in no table data meeting the filter criteria. A single Scan operation will read up to the maximum number of items set (if using the Limit parameter) or a maximum of 1 MB of data and then apply any filtering to the results using FilterExpression. If LastEvaluatedKey is present in the response, you will need to paginate the result set. For more information, see Paginating the Results in the Amazon DynamoDB Developer Guide. Scan operations proceed sequentially; however, for faster performance on a large table or secondary index, applications can request a parallel Scan operation by providing the Segment and TotalSegments parameters. For more information, see Parallel Scan in the Amazon DynamoDB Developer Guide. Scan uses eventually consistent reads when accessing the data in a table; therefore, the result set might not include the changes to data in the table immediately before the operation began. If you need a consistent copy of the data, as of the time that the Scan begins, you can set the ConsistentRead parameter to true. - */ - scan(callback?: (err: AWSError, data: DynamoDB.Types.ScanOutput) => void): Request; - /** - * Associate a set of tags with an Amazon DynamoDB resource. You can then activate these user-defined tags so that they appear on the Billing and Cost Management console for cost allocation tracking. You can call TagResource up to 5 times per second, per account. For an overview on tagging DynamoDB resources, see Tagging for DynamoDB in the Amazon DynamoDB Developer Guide. - */ - tagResource(params: DynamoDB.Types.TagResourceInput, callback?: (err: AWSError, data: {}) => void): Request<{}, AWSError>; - /** - * Associate a set of tags with an Amazon DynamoDB resource. You can then activate these user-defined tags so that they appear on the Billing and Cost Management console for cost allocation tracking. You can call TagResource up to 5 times per second, per account. For an overview on tagging DynamoDB resources, see Tagging for DynamoDB in the Amazon DynamoDB Developer Guide. - */ - tagResource(callback?: (err: AWSError, data: {}) => void): Request<{}, AWSError>; - /** - * Removes the association of tags from an Amazon DynamoDB resource. You can call UntagResource up to 5 times per second, per account. For an overview on tagging DynamoDB resources, see Tagging for DynamoDB in the Amazon DynamoDB Developer Guide. - */ - untagResource(params: DynamoDB.Types.UntagResourceInput, callback?: (err: AWSError, data: {}) => void): Request<{}, AWSError>; - /** - * Removes the association of tags from an Amazon DynamoDB resource. You can call UntagResource up to 5 times per second, per account. For an overview on tagging DynamoDB resources, see Tagging for DynamoDB in the Amazon DynamoDB Developer Guide. - */ - untagResource(callback?: (err: AWSError, data: {}) => void): Request<{}, AWSError>; - /** - * Edits an existing item's attributes, or adds a new item to the table if it does not already exist. You can put, delete, or add attribute values. You can also perform a conditional update on an existing item (insert a new attribute name-value pair if it doesn't exist, or replace an existing name-value pair if it has certain expected attribute values). You can also return the item's attribute values in the same UpdateItem operation using the ReturnValues parameter. - */ - updateItem(params: DynamoDB.Types.UpdateItemInput, callback?: (err: AWSError, data: DynamoDB.Types.UpdateItemOutput) => void): Request; - /** - * Edits an existing item's attributes, or adds a new item to the table if it does not already exist. You can put, delete, or add attribute values. You can also perform a conditional update on an existing item (insert a new attribute name-value pair if it doesn't exist, or replace an existing name-value pair if it has certain expected attribute values). You can also return the item's attribute values in the same UpdateItem operation using the ReturnValues parameter. - */ - updateItem(callback?: (err: AWSError, data: DynamoDB.Types.UpdateItemOutput) => void): Request; - /** - * Modifies the provisioned throughput settings, global secondary indexes, or DynamoDB Streams settings for a given table. You can only perform one of the following operations at once: Modify the provisioned throughput settings of the table. Enable or disable Streams on the table. Remove a global secondary index from the table. Create a new global secondary index on the table. Once the index begins backfilling, you can use UpdateTable to perform other operations. UpdateTable is an asynchronous operation; while it is executing, the table status changes from ACTIVE to UPDATING. While it is UPDATING, you cannot issue another UpdateTable request. When the table returns to the ACTIVE state, the UpdateTable operation is complete. - */ - updateTable(params: DynamoDB.Types.UpdateTableInput, callback?: (err: AWSError, data: DynamoDB.Types.UpdateTableOutput) => void): Request; - /** - * Modifies the provisioned throughput settings, global secondary indexes, or DynamoDB Streams settings for a given table. You can only perform one of the following operations at once: Modify the provisioned throughput settings of the table. Enable or disable Streams on the table. Remove a global secondary index from the table. Create a new global secondary index on the table. Once the index begins backfilling, you can use UpdateTable to perform other operations. UpdateTable is an asynchronous operation; while it is executing, the table status changes from ACTIVE to UPDATING. While it is UPDATING, you cannot issue another UpdateTable request. When the table returns to the ACTIVE state, the UpdateTable operation is complete. - */ - updateTable(callback?: (err: AWSError, data: DynamoDB.Types.UpdateTableOutput) => void): Request; - /** - * The UpdateTimeToLive method will enable or disable TTL for the specified table. A successful UpdateTimeToLive call returns the current TimeToLiveSpecification; it may take up to one hour for the change to fully process. Any additional UpdateTimeToLive calls for the same table during this one hour duration result in a ValidationException. TTL compares the current time in epoch time format to the time stored in the TTL attribute of an item. If the epoch time value stored in the attribute is less than the current time, the item is marked as expired and subsequently deleted. The epoch time format is the number of seconds elapsed since 12:00:00 AM January 1st, 1970 UTC. DynamoDB deletes expired items on a best-effort basis to ensure availability of throughput for other data operations. DynamoDB typically deletes expired items within two days of expiration. The exact duration within which an item gets deleted after expiration is specific to the nature of the workload. Items that have expired and not been deleted will still show up in reads, queries, and scans. As items are deleted, they are removed from any Local Secondary Index and Global Secondary Index immediately in the same eventually consistent way as a standard delete operation. For more information, see Time To Live in the Amazon DynamoDB Developer Guide. - */ - updateTimeToLive(params: DynamoDB.Types.UpdateTimeToLiveInput, callback?: (err: AWSError, data: DynamoDB.Types.UpdateTimeToLiveOutput) => void): Request; - /** - * The UpdateTimeToLive method will enable or disable TTL for the specified table. A successful UpdateTimeToLive call returns the current TimeToLiveSpecification; it may take up to one hour for the change to fully process. Any additional UpdateTimeToLive calls for the same table during this one hour duration result in a ValidationException. TTL compares the current time in epoch time format to the time stored in the TTL attribute of an item. If the epoch time value stored in the attribute is less than the current time, the item is marked as expired and subsequently deleted. The epoch time format is the number of seconds elapsed since 12:00:00 AM January 1st, 1970 UTC. DynamoDB deletes expired items on a best-effort basis to ensure availability of throughput for other data operations. DynamoDB typically deletes expired items within two days of expiration. The exact duration within which an item gets deleted after expiration is specific to the nature of the workload. Items that have expired and not been deleted will still show up in reads, queries, and scans. As items are deleted, they are removed from any Local Secondary Index and Global Secondary Index immediately in the same eventually consistent way as a standard delete operation. For more information, see Time To Live in the Amazon DynamoDB Developer Guide. - */ - updateTimeToLive(callback?: (err: AWSError, data: DynamoDB.Types.UpdateTimeToLiveOutput) => void): Request; - /** - * Waits for the tableExists state by periodically calling the underlying DynamoDB.describeTableoperation every 20 seconds (at most 25 times). - */ - waitFor(state: "tableExists", params: DynamoDB.Types.DescribeTableInput, callback?: (err: AWSError, data: DynamoDB.Types.DescribeTableOutput) => void): Request; - /** - * Waits for the tableExists state by periodically calling the underlying DynamoDB.describeTableoperation every 20 seconds (at most 25 times). - */ - waitFor(state: "tableExists", callback?: (err: AWSError, data: DynamoDB.Types.DescribeTableOutput) => void): Request; - /** - * Waits for the tableNotExists state by periodically calling the underlying DynamoDB.describeTableoperation every 20 seconds (at most 25 times). - */ - waitFor(state: "tableNotExists", params: DynamoDB.Types.DescribeTableInput, callback?: (err: AWSError, data: DynamoDB.Types.DescribeTableOutput) => void): Request; - /** - * Waits for the tableNotExists state by periodically calling the underlying DynamoDB.describeTableoperation every 20 seconds (at most 25 times). - */ - waitFor(state: "tableNotExists", callback?: (err: AWSError, data: DynamoDB.Types.DescribeTableOutput) => void): Request; -} -declare namespace DynamoDB { - export import DocumentClient = document_client; - export import Converter = converter; -} -declare namespace DynamoDB { - export type AttributeAction = "ADD"|"PUT"|"DELETE"|string; - export interface AttributeDefinition { - /** - * A name for the attribute. - */ - AttributeName: KeySchemaAttributeName; - /** - * The data type for the attribute, where: S - the attribute is of type String N - the attribute is of type Number B - the attribute is of type Binary - */ - AttributeType: ScalarAttributeType; - } - export type AttributeDefinitions = AttributeDefinition[]; - export type AttributeMap = {[key: string]: AttributeValue}; - export type AttributeName = string; - export type AttributeNameList = AttributeName[]; - export type AttributeUpdates = {[key: string]: AttributeValueUpdate}; - export interface AttributeValue { - /** - * An attribute of type String. For example: "S": "Hello" - */ - S?: StringAttributeValue; - /** - * An attribute of type Number. For example: "N": "123.45" Numbers are sent across the network to DynamoDB as strings, to maximize compatibility across languages and libraries. However, DynamoDB treats them as number type attributes for mathematical operations. - */ - N?: NumberAttributeValue; - /** - * An attribute of type Binary. For example: "B": "dGhpcyB0ZXh0IGlzIGJhc2U2NC1lbmNvZGVk" - */ - B?: BinaryAttributeValue; - /** - * An attribute of type String Set. For example: "SS": ["Giraffe", "Hippo" ,"Zebra"] - */ - SS?: StringSetAttributeValue; - /** - * An attribute of type Number Set. For example: "NS": ["42.2", "-19", "7.5", "3.14"] Numbers are sent across the network to DynamoDB as strings, to maximize compatibility across languages and libraries. However, DynamoDB treats them as number type attributes for mathematical operations. - */ - NS?: NumberSetAttributeValue; - /** - * An attribute of type Binary Set. For example: "BS": ["U3Vubnk=", "UmFpbnk=", "U25vd3k="] - */ - BS?: BinarySetAttributeValue; - /** - * An attribute of type Map. For example: "M": {"Name": {"S": "Joe"}, "Age": {"N": "35"}} - */ - M?: MapAttributeValue; - /** - * An attribute of type List. For example: "L": ["Cookies", "Coffee", 3.14159] - */ - L?: ListAttributeValue; - /** - * An attribute of type Null. For example: "NULL": true - */ - NULL?: NullAttributeValue; - /** - * An attribute of type Boolean. For example: "BOOL": true - */ - BOOL?: BooleanAttributeValue; - } - export type AttributeValueList = AttributeValue[]; - export interface AttributeValueUpdate { - /** - * Represents the data for an attribute. Each attribute value is described as a name-value pair. The name is the data type, and the value is the data itself. For more information, see Data TYpes in the Amazon DynamoDB Developer Guide. - */ - Value?: AttributeValue; - /** - * Specifies how to perform the update. Valid values are PUT (default), DELETE, and ADD. The behavior depends on whether the specified primary key already exists in the table. If an item with the specified Key is found in the table: PUT - Adds the specified attribute to the item. If the attribute already exists, it is replaced by the new value. DELETE - If no value is specified, the attribute and its value are removed from the item. The data type of the specified value must match the existing value's data type. If a set of values is specified, then those values are subtracted from the old set. For example, if the attribute value was the set [a,b,c] and the DELETE action specified [a,c], then the final attribute value would be [b]. Specifying an empty set is an error. ADD - If the attribute does not already exist, then the attribute and its values are added to the item. If the attribute does exist, then the behavior of ADD depends on the data type of the attribute: If the existing attribute is a number, and if Value is also a number, then the Value is mathematically added to the existing attribute. If Value is a negative number, then it is subtracted from the existing attribute. If you use ADD to increment or decrement a number value for an item that doesn't exist before the update, DynamoDB uses 0 as the initial value. In addition, if you use ADD to update an existing item, and intend to increment or decrement an attribute value which does not yet exist, DynamoDB uses 0 as the initial value. For example, suppose that the item you want to update does not yet have an attribute named itemcount, but you decide to ADD the number 3 to this attribute anyway, even though it currently does not exist. DynamoDB will create the itemcount attribute, set its initial value to 0, and finally add 3 to it. The result will be a new itemcount attribute in the item, with a value of 3. If the existing data type is a set, and if the Value is also a set, then the Value is added to the existing set. (This is a set operation, not mathematical addition.) For example, if the attribute value was the set [1,2], and the ADD action specified [3], then the final attribute value would be [1,2,3]. An error occurs if an Add action is specified for a set attribute and the attribute type specified does not match the existing set type. Both sets must have the same primitive data type. For example, if the existing data type is a set of strings, the Value must also be a set of strings. The same holds true for number sets and binary sets. This action is only valid for an existing attribute whose data type is number or is a set. Do not use ADD for any other data types. If no item with the specified Key is found: PUT - DynamoDB creates a new item with the specified primary key, and then adds the attribute. DELETE - Nothing happens; there is no attribute to delete. ADD - DynamoDB creates an item with the supplied primary key and number (or set of numbers) for the attribute value. The only data types allowed are number and number set; no other data types can be specified. - */ - Action?: AttributeAction; - } - export type Backfilling = boolean; - export interface BatchGetItemInput { - /** - * A map of one or more table names and, for each table, a map that describes one or more items to retrieve from that table. Each table name can be used only once per BatchGetItem request. Each element in the map of items to retrieve consists of the following: ConsistentRead - If true, a strongly consistent read is used; if false (the default), an eventually consistent read is used. ExpressionAttributeNames - One or more substitution tokens for attribute names in the ProjectionExpression parameter. The following are some use cases for using ExpressionAttributeNames: To access an attribute whose name conflicts with a DynamoDB reserved word. To create a placeholder for repeating occurrences of an attribute name in an expression. To prevent special characters in an attribute name from being misinterpreted in an expression. Use the # character in an expression to dereference an attribute name. For example, consider the following attribute name: Percentile The name of this attribute conflicts with a reserved word, so it cannot be used directly in an expression. (For the complete list of reserved words, see Reserved Words in the Amazon DynamoDB Developer Guide). To work around this, you could specify the following for ExpressionAttributeNames: {"#P":"Percentile"} You could then use this substitution in an expression, as in this example: #P = :val Tokens that begin with the : character are expression attribute values, which are placeholders for the actual value at runtime. For more information on expression attribute names, see Accessing Item Attributes in the Amazon DynamoDB Developer Guide. Keys - An array of primary key attribute values that define specific items in the table. For each primary key, you must provide all of the key attributes. For example, with a simple primary key, you only need to provide the partition key value. For a composite key, you must provide both the partition key value and the sort key value. ProjectionExpression - A string that identifies one or more attributes to retrieve from the table. These attributes can include scalars, sets, or elements of a JSON document. The attributes in the expression must be separated by commas. If no attribute names are specified, then all attributes will be returned. If any of the requested attributes are not found, they will not appear in the result. For more information, see Accessing Item Attributes in the Amazon DynamoDB Developer Guide. AttributesToGet - This is a legacy parameter. Use ProjectionExpression instead. For more information, see AttributesToGet in the Amazon DynamoDB Developer Guide. - */ - RequestItems: BatchGetRequestMap; - ReturnConsumedCapacity?: ReturnConsumedCapacity; - } - export interface BatchGetItemOutput { - /** - * A map of table name to a list of items. Each object in Responses consists of a table name, along with a map of attribute data consisting of the data type and attribute value. - */ - Responses?: BatchGetResponseMap; - /** - * A map of tables and their respective keys that were not processed with the current response. The UnprocessedKeys value is in the same form as RequestItems, so the value can be provided directly to a subsequent BatchGetItem operation. For more information, see RequestItems in the Request Parameters section. Each element consists of: Keys - An array of primary key attribute values that define specific items in the table. ProjectionExpression - One or more attributes to be retrieved from the table or index. By default, all attributes are returned. If a requested attribute is not found, it does not appear in the result. ConsistentRead - The consistency of a read operation. If set to true, then a strongly consistent read is used; otherwise, an eventually consistent read is used. If there are no unprocessed keys remaining, the response contains an empty UnprocessedKeys map. - */ - UnprocessedKeys?: BatchGetRequestMap; - /** - * The read capacity units consumed by the entire BatchGetItem operation. Each element consists of: TableName - The table that consumed the provisioned throughput. CapacityUnits - The total number of capacity units consumed. - */ - ConsumedCapacity?: ConsumedCapacityMultiple; - } - export type BatchGetRequestMap = {[key: string]: KeysAndAttributes}; - export type BatchGetResponseMap = {[key: string]: ItemList}; - export interface BatchWriteItemInput { - /** - * A map of one or more table names and, for each table, a list of operations to be performed (DeleteRequest or PutRequest). Each element in the map consists of the following: DeleteRequest - Perform a DeleteItem operation on the specified item. The item to be deleted is identified by a Key subelement: Key - A map of primary key attribute values that uniquely identify the item. Each entry in this map consists of an attribute name and an attribute value. For each primary key, you must provide all of the key attributes. For example, with a simple primary key, you only need to provide a value for the partition key. For a composite primary key, you must provide values for both the partition key and the sort key. PutRequest - Perform a PutItem operation on the specified item. The item to be put is identified by an Item subelement: Item - A map of attributes and their values. Each entry in this map consists of an attribute name and an attribute value. Attribute values must not be null; string and binary type attributes must have lengths greater than zero; and set type attributes must not be empty. Requests that contain empty values will be rejected with a ValidationException exception. If you specify any attributes that are part of an index key, then the data types for those attributes must match those of the schema in the table's attribute definition. - */ - RequestItems: BatchWriteItemRequestMap; - ReturnConsumedCapacity?: ReturnConsumedCapacity; - /** - * Determines whether item collection metrics are returned. If set to SIZE, the response includes statistics about item collections, if any, that were modified during the operation are returned in the response. If set to NONE (the default), no statistics are returned. - */ - ReturnItemCollectionMetrics?: ReturnItemCollectionMetrics; - } - export interface BatchWriteItemOutput { - /** - * A map of tables and requests against those tables that were not processed. The UnprocessedItems value is in the same form as RequestItems, so you can provide this value directly to a subsequent BatchGetItem operation. For more information, see RequestItems in the Request Parameters section. Each UnprocessedItems entry consists of a table name and, for that table, a list of operations to perform (DeleteRequest or PutRequest). DeleteRequest - Perform a DeleteItem operation on the specified item. The item to be deleted is identified by a Key subelement: Key - A map of primary key attribute values that uniquely identify the item. Each entry in this map consists of an attribute name and an attribute value. PutRequest - Perform a PutItem operation on the specified item. The item to be put is identified by an Item subelement: Item - A map of attributes and their values. Each entry in this map consists of an attribute name and an attribute value. Attribute values must not be null; string and binary type attributes must have lengths greater than zero; and set type attributes must not be empty. Requests that contain empty values will be rejected with a ValidationException exception. If you specify any attributes that are part of an index key, then the data types for those attributes must match those of the schema in the table's attribute definition. If there are no unprocessed items remaining, the response contains an empty UnprocessedItems map. - */ - UnprocessedItems?: BatchWriteItemRequestMap; - /** - * A list of tables that were processed by BatchWriteItem and, for each table, information about any item collections that were affected by individual DeleteItem or PutItem operations. Each entry consists of the following subelements: ItemCollectionKey - The partition key value of the item collection. This is the same as the partition key value of the item. SizeEstimateRange - An estimate of item collection size, expressed in GB. This is a two-element array containing a lower bound and an upper bound for the estimate. The estimate includes the size of all the items in the table, plus the size of all attributes projected into all of the local secondary indexes on the table. Use this estimate to measure whether a local secondary index is approaching its size limit. The estimate is subject to change over time; therefore, do not rely on the precision or accuracy of the estimate. - */ - ItemCollectionMetrics?: ItemCollectionMetricsPerTable; - /** - * The capacity units consumed by the entire BatchWriteItem operation. Each element consists of: TableName - The table that consumed the provisioned throughput. CapacityUnits - The total number of capacity units consumed. - */ - ConsumedCapacity?: ConsumedCapacityMultiple; - } - export type BatchWriteItemRequestMap = {[key: string]: WriteRequests}; - export type BinaryAttributeValue = Buffer|Uint8Array|Blob|string; - export type BinarySetAttributeValue = BinaryAttributeValue[]; - export type BooleanAttributeValue = boolean; - export type BooleanObject = boolean; - export interface Capacity { - /** - * The total number of capacity units consumed on a table or an index. - */ - CapacityUnits?: ConsumedCapacityUnits; - } - export type ComparisonOperator = "EQ"|"NE"|"IN"|"LE"|"LT"|"GE"|"GT"|"BETWEEN"|"NOT_NULL"|"NULL"|"CONTAINS"|"NOT_CONTAINS"|"BEGINS_WITH"|string; - export interface Condition { - /** - * One or more values to evaluate against the supplied attribute. The number of values in the list depends on the ComparisonOperator being used. For type Number, value comparisons are numeric. String value comparisons for greater than, equals, or less than are based on ASCII character code values. For example, a is greater than A, and a is greater than B. For a list of code values, see http://en.wikipedia.org/wiki/ASCII#ASCII_printable_characters. For Binary, DynamoDB treats each byte of the binary data as unsigned when it compares binary values. - */ - AttributeValueList?: AttributeValueList; - /** - * A comparator for evaluating attributes. For example, equals, greater than, less than, etc. The following comparison operators are available: EQ | NE | LE | LT | GE | GT | NOT_NULL | NULL | CONTAINS | NOT_CONTAINS | BEGINS_WITH | IN | BETWEEN The following are descriptions of each comparison operator. EQ : Equal. EQ is supported for all data types, including lists and maps. AttributeValueList can contain only one AttributeValue element of type String, Number, Binary, String Set, Number Set, or Binary Set. If an item contains an AttributeValue element of a different type than the one provided in the request, the value does not match. For example, {"S":"6"} does not equal {"N":"6"}. Also, {"N":"6"} does not equal {"NS":["6", "2", "1"]}. NE : Not equal. NE is supported for all data types, including lists and maps. AttributeValueList can contain only one AttributeValue of type String, Number, Binary, String Set, Number Set, or Binary Set. If an item contains an AttributeValue of a different type than the one provided in the request, the value does not match. For example, {"S":"6"} does not equal {"N":"6"}. Also, {"N":"6"} does not equal {"NS":["6", "2", "1"]}. LE : Less than or equal. AttributeValueList can contain only one AttributeValue element of type String, Number, or Binary (not a set type). If an item contains an AttributeValue element of a different type than the one provided in the request, the value does not match. For example, {"S":"6"} does not equal {"N":"6"}. Also, {"N":"6"} does not compare to {"NS":["6", "2", "1"]}. LT : Less than. AttributeValueList can contain only one AttributeValue of type String, Number, or Binary (not a set type). If an item contains an AttributeValue element of a different type than the one provided in the request, the value does not match. For example, {"S":"6"} does not equal {"N":"6"}. Also, {"N":"6"} does not compare to {"NS":["6", "2", "1"]}. GE : Greater than or equal. AttributeValueList can contain only one AttributeValue element of type String, Number, or Binary (not a set type). If an item contains an AttributeValue element of a different type than the one provided in the request, the value does not match. For example, {"S":"6"} does not equal {"N":"6"}. Also, {"N":"6"} does not compare to {"NS":["6", "2", "1"]}. GT : Greater than. AttributeValueList can contain only one AttributeValue element of type String, Number, or Binary (not a set type). If an item contains an AttributeValue element of a different type than the one provided in the request, the value does not match. For example, {"S":"6"} does not equal {"N":"6"}. Also, {"N":"6"} does not compare to {"NS":["6", "2", "1"]}. NOT_NULL : The attribute exists. NOT_NULL is supported for all data types, including lists and maps. This operator tests for the existence of an attribute, not its data type. If the data type of attribute "a" is null, and you evaluate it using NOT_NULL, the result is a Boolean true. This result is because the attribute "a" exists; its data type is not relevant to the NOT_NULL comparison operator. NULL : The attribute does not exist. NULL is supported for all data types, including lists and maps. This operator tests for the nonexistence of an attribute, not its data type. If the data type of attribute "a" is null, and you evaluate it using NULL, the result is a Boolean false. This is because the attribute "a" exists; its data type is not relevant to the NULL comparison operator. CONTAINS : Checks for a subsequence, or value in a set. AttributeValueList can contain only one AttributeValue element of type String, Number, or Binary (not a set type). If the target attribute of the comparison is of type String, then the operator checks for a substring match. If the target attribute of the comparison is of type Binary, then the operator looks for a subsequence of the target that matches the input. If the target attribute of the comparison is a set ("SS", "NS", or "BS"), then the operator evaluates to true if it finds an exact match with any member of the set. CONTAINS is supported for lists: When evaluating "a CONTAINS b", "a" can be a list; however, "b" cannot be a set, a map, or a list. NOT_CONTAINS : Checks for absence of a subsequence, or absence of a value in a set. AttributeValueList can contain only one AttributeValue element of type String, Number, or Binary (not a set type). If the target attribute of the comparison is a String, then the operator checks for the absence of a substring match. If the target attribute of the comparison is Binary, then the operator checks for the absence of a subsequence of the target that matches the input. If the target attribute of the comparison is a set ("SS", "NS", or "BS"), then the operator evaluates to true if it does not find an exact match with any member of the set. NOT_CONTAINS is supported for lists: When evaluating "a NOT CONTAINS b", "a" can be a list; however, "b" cannot be a set, a map, or a list. BEGINS_WITH : Checks for a prefix. AttributeValueList can contain only one AttributeValue of type String or Binary (not a Number or a set type). The target attribute of the comparison must be of type String or Binary (not a Number or a set type). IN : Checks for matching elements in a list. AttributeValueList can contain one or more AttributeValue elements of type String, Number, or Binary. These attributes are compared against an existing attribute of an item. If any elements of the input are equal to the item attribute, the expression evaluates to true. BETWEEN : Greater than or equal to the first value, and less than or equal to the second value. AttributeValueList must contain two AttributeValue elements of the same type, either String, Number, or Binary (not a set type). A target attribute matches if the target value is greater than, or equal to, the first element and less than, or equal to, the second element. If an item contains an AttributeValue element of a different type than the one provided in the request, the value does not match. For example, {"S":"6"} does not compare to {"N":"6"}. Also, {"N":"6"} does not compare to {"NS":["6", "2", "1"]} For usage examples of AttributeValueList and ComparisonOperator, see Legacy Conditional Parameters in the Amazon DynamoDB Developer Guide. - */ - ComparisonOperator: ComparisonOperator; - } - export type ConditionExpression = string; - export type ConditionalOperator = "AND"|"OR"|string; - export type ConsistentRead = boolean; - export interface ConsumedCapacity { - /** - * The name of the table that was affected by the operation. - */ - TableName?: TableName; - /** - * The total number of capacity units consumed by the operation. - */ - CapacityUnits?: ConsumedCapacityUnits; - /** - * The amount of throughput consumed on the table affected by the operation. - */ - Table?: Capacity; - /** - * The amount of throughput consumed on each local index affected by the operation. - */ - LocalSecondaryIndexes?: SecondaryIndexesCapacityMap; - /** - * The amount of throughput consumed on each global index affected by the operation. - */ - GlobalSecondaryIndexes?: SecondaryIndexesCapacityMap; - } - export type ConsumedCapacityMultiple = ConsumedCapacity[]; - export type ConsumedCapacityUnits = number; - export interface CreateGlobalSecondaryIndexAction { - /** - * The name of the global secondary index to be created. - */ - IndexName: IndexName; - /** - * The key schema for the global secondary index. - */ - KeySchema: KeySchema; - /** - * Represents attributes that are copied (projected) from the table into an index. These are in addition to the primary key attributes and index key attributes, which are automatically projected. - */ - Projection: Projection; - /** - * Represents the provisioned throughput settings for the specified global secondary index. For current minimum and maximum provisioned throughput values, see Limits in the Amazon DynamoDB Developer Guide. - */ - ProvisionedThroughput: ProvisionedThroughput; - } - export interface CreateTableInput { - /** - * An array of attributes that describe the key schema for the table and indexes. - */ - AttributeDefinitions: AttributeDefinitions; - /** - * The name of the table to create. - */ - TableName: TableName; - /** - * Specifies the attributes that make up the primary key for a table or an index. The attributes in KeySchema must also be defined in the AttributeDefinitions array. For more information, see Data Model in the Amazon DynamoDB Developer Guide. Each KeySchemaElement in the array is composed of: AttributeName - The name of this key attribute. KeyType - The role that the key attribute will assume: HASH - partition key RANGE - sort key The partition key of an item is also known as its hash attribute. The term "hash attribute" derives from DynamoDB' usage of an internal hash function to evenly distribute data items across partitions, based on their partition key values. The sort key of an item is also known as its range attribute. The term "range attribute" derives from the way DynamoDB stores items with the same partition key physically close together, in sorted order by the sort key value. For a simple primary key (partition key), you must provide exactly one element with a KeyType of HASH. For a composite primary key (partition key and sort key), you must provide exactly two elements, in this order: The first element must have a KeyType of HASH, and the second element must have a KeyType of RANGE. For more information, see Specifying the Primary Key in the Amazon DynamoDB Developer Guide. - */ - KeySchema: KeySchema; - /** - * One or more local secondary indexes (the maximum is five) to be created on the table. Each index is scoped to a given partition key value. There is a 10 GB size limit per partition key value; otherwise, the size of a local secondary index is unconstrained. Each local secondary index in the array includes the following: IndexName - The name of the local secondary index. Must be unique only for this table. KeySchema - Specifies the key schema for the local secondary index. The key schema must begin with the same partition key as the table. Projection - Specifies attributes that are copied (projected) from the table into the index. These are in addition to the primary key attributes and index key attributes, which are automatically projected. Each attribute specification is composed of: ProjectionType - One of the following: KEYS_ONLY - Only the index and primary keys are projected into the index. INCLUDE - Only the specified table attributes are projected into the index. The list of projected attributes are in NonKeyAttributes. ALL - All of the table attributes are projected into the index. NonKeyAttributes - A list of one or more non-key attribute names that are projected into the secondary index. The total count of attributes provided in NonKeyAttributes, summed across all of the secondary indexes, must not exceed 20. If you project the same attribute into two different indexes, this counts as two distinct attributes when determining the total. - */ - LocalSecondaryIndexes?: LocalSecondaryIndexList; - /** - * One or more global secondary indexes (the maximum is five) to be created on the table. Each global secondary index in the array includes the following: IndexName - The name of the global secondary index. Must be unique only for this table. KeySchema - Specifies the key schema for the global secondary index. Projection - Specifies attributes that are copied (projected) from the table into the index. These are in addition to the primary key attributes and index key attributes, which are automatically projected. Each attribute specification is composed of: ProjectionType - One of the following: KEYS_ONLY - Only the index and primary keys are projected into the index. INCLUDE - Only the specified table attributes are projected into the index. The list of projected attributes are in NonKeyAttributes. ALL - All of the table attributes are projected into the index. NonKeyAttributes - A list of one or more non-key attribute names that are projected into the secondary index. The total count of attributes provided in NonKeyAttributes, summed across all of the secondary indexes, must not exceed 20. If you project the same attribute into two different indexes, this counts as two distinct attributes when determining the total. ProvisionedThroughput - The provisioned throughput settings for the global secondary index, consisting of read and write capacity units. - */ - GlobalSecondaryIndexes?: GlobalSecondaryIndexList; - /** - * Represents the provisioned throughput settings for a specified table or index. The settings can be modified using the UpdateTable operation. For current minimum and maximum provisioned throughput values, see Limits in the Amazon DynamoDB Developer Guide. - */ - ProvisionedThroughput: ProvisionedThroughput; - /** - * The settings for DynamoDB Streams on the table. These settings consist of: StreamEnabled - Indicates whether Streams is to be enabled (true) or disabled (false). StreamViewType - When an item in the table is modified, StreamViewType determines what information is written to the table's stream. Valid values for StreamViewType are: KEYS_ONLY - Only the key attributes of the modified item are written to the stream. NEW_IMAGE - The entire item, as it appears after it was modified, is written to the stream. OLD_IMAGE - The entire item, as it appeared before it was modified, is written to the stream. NEW_AND_OLD_IMAGES - Both the new and the old item images of the item are written to the stream. - */ - StreamSpecification?: StreamSpecification; - } - export interface CreateTableOutput { - /** - * Represents the properties of the table. - */ - TableDescription?: TableDescription; - } - export type _Date = Date; - export interface DeleteGlobalSecondaryIndexAction { - /** - * The name of the global secondary index to be deleted. - */ - IndexName: IndexName; - } - export interface DeleteItemInput { - /** - * The name of the table from which to delete the item. - */ - TableName: TableName; - /** - * A map of attribute names to AttributeValue objects, representing the primary key of the item to delete. For the primary key, you must provide all of the attributes. For example, with a simple primary key, you only need to provide a value for the partition key. For a composite primary key, you must provide values for both the partition key and the sort key. - */ - Key: Key; - /** - * This is a legacy parameter. Use ConditionExpression instead. For more information, see Expected in the Amazon DynamoDB Developer Guide. - */ - Expected?: ExpectedAttributeMap; - /** - * This is a legacy parameter. Use ConditionExpression instead. For more information, see ConditionalOperator in the Amazon DynamoDB Developer Guide. - */ - ConditionalOperator?: ConditionalOperator; - /** - * Use ReturnValues if you want to get the item attributes as they appeared before they were deleted. For DeleteItem, the valid values are: NONE - If ReturnValues is not specified, or if its value is NONE, then nothing is returned. (This setting is the default for ReturnValues.) ALL_OLD - The content of the old item is returned. The ReturnValues parameter is used by several DynamoDB operations; however, DeleteItem does not recognize any values other than NONE or ALL_OLD. - */ - ReturnValues?: ReturnValue; - ReturnConsumedCapacity?: ReturnConsumedCapacity; - /** - * Determines whether item collection metrics are returned. If set to SIZE, the response includes statistics about item collections, if any, that were modified during the operation are returned in the response. If set to NONE (the default), no statistics are returned. - */ - ReturnItemCollectionMetrics?: ReturnItemCollectionMetrics; - /** - * A condition that must be satisfied in order for a conditional DeleteItem to succeed. An expression can contain any of the following: Functions: attribute_exists | attribute_not_exists | attribute_type | contains | begins_with | size These function names are case-sensitive. Comparison operators: = | <> | < | > | <= | >= | BETWEEN | IN Logical operators: AND | OR | NOT For more information on condition expressions, see Specifying Conditions in the Amazon DynamoDB Developer Guide. - */ - ConditionExpression?: ConditionExpression; - /** - * One or more substitution tokens for attribute names in an expression. The following are some use cases for using ExpressionAttributeNames: To access an attribute whose name conflicts with a DynamoDB reserved word. To create a placeholder for repeating occurrences of an attribute name in an expression. To prevent special characters in an attribute name from being misinterpreted in an expression. Use the # character in an expression to dereference an attribute name. For example, consider the following attribute name: Percentile The name of this attribute conflicts with a reserved word, so it cannot be used directly in an expression. (For the complete list of reserved words, see Reserved Words in the Amazon DynamoDB Developer Guide). To work around this, you could specify the following for ExpressionAttributeNames: {"#P":"Percentile"} You could then use this substitution in an expression, as in this example: #P = :val Tokens that begin with the : character are expression attribute values, which are placeholders for the actual value at runtime. For more information on expression attribute names, see Accessing Item Attributes in the Amazon DynamoDB Developer Guide. - */ - ExpressionAttributeNames?: ExpressionAttributeNameMap; - /** - * One or more values that can be substituted in an expression. Use the : (colon) character in an expression to dereference an attribute value. For example, suppose that you wanted to check whether the value of the ProductStatus attribute was one of the following: Available | Backordered | Discontinued You would first need to specify ExpressionAttributeValues as follows: { ":avail":{"S":"Available"}, ":back":{"S":"Backordered"}, ":disc":{"S":"Discontinued"} } You could then use these values in an expression, such as this: ProductStatus IN (:avail, :back, :disc) For more information on expression attribute values, see Specifying Conditions in the Amazon DynamoDB Developer Guide. - */ - ExpressionAttributeValues?: ExpressionAttributeValueMap; - } - export interface DeleteItemOutput { - /** - * A map of attribute names to AttributeValue objects, representing the item as it appeared before the DeleteItem operation. This map appears in the response only if ReturnValues was specified as ALL_OLD in the request. - */ - Attributes?: AttributeMap; - /** - * The capacity units consumed by the DeleteItem operation. The data returned includes the total provisioned throughput consumed, along with statistics for the table and any indexes involved in the operation. ConsumedCapacity is only returned if the ReturnConsumedCapacity parameter was specified. For more information, see Provisioned Throughput in the Amazon DynamoDB Developer Guide. - */ - ConsumedCapacity?: ConsumedCapacity; - /** - * Information about item collections, if any, that were affected by the DeleteItem operation. ItemCollectionMetrics is only returned if the ReturnItemCollectionMetrics parameter was specified. If the table does not have any local secondary indexes, this information is not returned in the response. Each ItemCollectionMetrics element consists of: ItemCollectionKey - The partition key value of the item collection. This is the same as the partition key value of the item itself. SizeEstimateRange - An estimate of item collection size, in gigabytes. This value is a two-element array containing a lower bound and an upper bound for the estimate. The estimate includes the size of all the items in the table, plus the size of all attributes projected into all of the local secondary indexes on that table. Use this estimate to measure whether a local secondary index is approaching its size limit. The estimate is subject to change over time; therefore, do not rely on the precision or accuracy of the estimate. - */ - ItemCollectionMetrics?: ItemCollectionMetrics; - } - export interface DeleteRequest { - /** - * A map of attribute name to attribute values, representing the primary key of the item to delete. All of the table's primary key attributes must be specified, and their data types must match those of the table's key schema. - */ - Key: Key; - } - export interface DeleteTableInput { - /** - * The name of the table to delete. - */ - TableName: TableName; - } - export interface DeleteTableOutput { - /** - * Represents the properties of a table. - */ - TableDescription?: TableDescription; - } - export interface DescribeLimitsInput { - } - export interface DescribeLimitsOutput { - /** - * The maximum total read capacity units that your account allows you to provision across all of your tables in this region. - */ - AccountMaxReadCapacityUnits?: PositiveLongObject; - /** - * The maximum total write capacity units that your account allows you to provision across all of your tables in this region. - */ - AccountMaxWriteCapacityUnits?: PositiveLongObject; - /** - * The maximum read capacity units that your account allows you to provision for a new table that you are creating in this region, including the read capacity units provisioned for its global secondary indexes (GSIs). - */ - TableMaxReadCapacityUnits?: PositiveLongObject; - /** - * The maximum write capacity units that your account allows you to provision for a new table that you are creating in this region, including the write capacity units provisioned for its global secondary indexes (GSIs). - */ - TableMaxWriteCapacityUnits?: PositiveLongObject; - } - export interface DescribeTableInput { - /** - * The name of the table to describe. - */ - TableName: TableName; - } - export interface DescribeTableOutput { - /** - * The properties of the table. - */ - Table?: TableDescription; - } - export interface DescribeTimeToLiveInput { - /** - * The name of the table to be described. - */ - TableName: TableName; - } - export interface DescribeTimeToLiveOutput { - /** - * - */ - TimeToLiveDescription?: TimeToLiveDescription; - } - export type ErrorMessage = string; - export type ExpectedAttributeMap = {[key: string]: ExpectedAttributeValue}; - export interface ExpectedAttributeValue { - /** - * Represents the data for the expected attribute. Each attribute value is described as a name-value pair. The name is the data type, and the value is the data itself. For more information, see Data Types in the Amazon DynamoDB Developer Guide. - */ - Value?: AttributeValue; - /** - * Causes DynamoDB to evaluate the value before attempting a conditional operation: If Exists is true, DynamoDB will check to see if that attribute value already exists in the table. If it is found, then the operation succeeds. If it is not found, the operation fails with a ConditionalCheckFailedException. If Exists is false, DynamoDB assumes that the attribute value does not exist in the table. If in fact the value does not exist, then the assumption is valid and the operation succeeds. If the value is found, despite the assumption that it does not exist, the operation fails with a ConditionalCheckFailedException. The default setting for Exists is true. If you supply a Value all by itself, DynamoDB assumes the attribute exists: You don't have to set Exists to true, because it is implied. DynamoDB returns a ValidationException if: Exists is true but there is no Value to check. (You expect a value to exist, but don't specify what that value is.) Exists is false but you also provide a Value. (You cannot expect an attribute to have a value, while also expecting it not to exist.) - */ - Exists?: BooleanObject; - /** - * A comparator for evaluating attributes in the AttributeValueList. For example, equals, greater than, less than, etc. The following comparison operators are available: EQ | NE | LE | LT | GE | GT | NOT_NULL | NULL | CONTAINS | NOT_CONTAINS | BEGINS_WITH | IN | BETWEEN The following are descriptions of each comparison operator. EQ : Equal. EQ is supported for all data types, including lists and maps. AttributeValueList can contain only one AttributeValue element of type String, Number, Binary, String Set, Number Set, or Binary Set. If an item contains an AttributeValue element of a different type than the one provided in the request, the value does not match. For example, {"S":"6"} does not equal {"N":"6"}. Also, {"N":"6"} does not equal {"NS":["6", "2", "1"]}. NE : Not equal. NE is supported for all data types, including lists and maps. AttributeValueList can contain only one AttributeValue of type String, Number, Binary, String Set, Number Set, or Binary Set. If an item contains an AttributeValue of a different type than the one provided in the request, the value does not match. For example, {"S":"6"} does not equal {"N":"6"}. Also, {"N":"6"} does not equal {"NS":["6", "2", "1"]}. LE : Less than or equal. AttributeValueList can contain only one AttributeValue element of type String, Number, or Binary (not a set type). If an item contains an AttributeValue element of a different type than the one provided in the request, the value does not match. For example, {"S":"6"} does not equal {"N":"6"}. Also, {"N":"6"} does not compare to {"NS":["6", "2", "1"]}. LT : Less than. AttributeValueList can contain only one AttributeValue of type String, Number, or Binary (not a set type). If an item contains an AttributeValue element of a different type than the one provided in the request, the value does not match. For example, {"S":"6"} does not equal {"N":"6"}. Also, {"N":"6"} does not compare to {"NS":["6", "2", "1"]}. GE : Greater than or equal. AttributeValueList can contain only one AttributeValue element of type String, Number, or Binary (not a set type). If an item contains an AttributeValue element of a different type than the one provided in the request, the value does not match. For example, {"S":"6"} does not equal {"N":"6"}. Also, {"N":"6"} does not compare to {"NS":["6", "2", "1"]}. GT : Greater than. AttributeValueList can contain only one AttributeValue element of type String, Number, or Binary (not a set type). If an item contains an AttributeValue element of a different type than the one provided in the request, the value does not match. For example, {"S":"6"} does not equal {"N":"6"}. Also, {"N":"6"} does not compare to {"NS":["6", "2", "1"]}. NOT_NULL : The attribute exists. NOT_NULL is supported for all data types, including lists and maps. This operator tests for the existence of an attribute, not its data type. If the data type of attribute "a" is null, and you evaluate it using NOT_NULL, the result is a Boolean true. This result is because the attribute "a" exists; its data type is not relevant to the NOT_NULL comparison operator. NULL : The attribute does not exist. NULL is supported for all data types, including lists and maps. This operator tests for the nonexistence of an attribute, not its data type. If the data type of attribute "a" is null, and you evaluate it using NULL, the result is a Boolean false. This is because the attribute "a" exists; its data type is not relevant to the NULL comparison operator. CONTAINS : Checks for a subsequence, or value in a set. AttributeValueList can contain only one AttributeValue element of type String, Number, or Binary (not a set type). If the target attribute of the comparison is of type String, then the operator checks for a substring match. If the target attribute of the comparison is of type Binary, then the operator looks for a subsequence of the target that matches the input. If the target attribute of the comparison is a set ("SS", "NS", or "BS"), then the operator evaluates to true if it finds an exact match with any member of the set. CONTAINS is supported for lists: When evaluating "a CONTAINS b", "a" can be a list; however, "b" cannot be a set, a map, or a list. NOT_CONTAINS : Checks for absence of a subsequence, or absence of a value in a set. AttributeValueList can contain only one AttributeValue element of type String, Number, or Binary (not a set type). If the target attribute of the comparison is a String, then the operator checks for the absence of a substring match. If the target attribute of the comparison is Binary, then the operator checks for the absence of a subsequence of the target that matches the input. If the target attribute of the comparison is a set ("SS", "NS", or "BS"), then the operator evaluates to true if it does not find an exact match with any member of the set. NOT_CONTAINS is supported for lists: When evaluating "a NOT CONTAINS b", "a" can be a list; however, "b" cannot be a set, a map, or a list. BEGINS_WITH : Checks for a prefix. AttributeValueList can contain only one AttributeValue of type String or Binary (not a Number or a set type). The target attribute of the comparison must be of type String or Binary (not a Number or a set type). IN : Checks for matching elements in a list. AttributeValueList can contain one or more AttributeValue elements of type String, Number, or Binary. These attributes are compared against an existing attribute of an item. If any elements of the input are equal to the item attribute, the expression evaluates to true. BETWEEN : Greater than or equal to the first value, and less than or equal to the second value. AttributeValueList must contain two AttributeValue elements of the same type, either String, Number, or Binary (not a set type). A target attribute matches if the target value is greater than, or equal to, the first element and less than, or equal to, the second element. If an item contains an AttributeValue element of a different type than the one provided in the request, the value does not match. For example, {"S":"6"} does not compare to {"N":"6"}. Also, {"N":"6"} does not compare to {"NS":["6", "2", "1"]} - */ - ComparisonOperator?: ComparisonOperator; - /** - * One or more values to evaluate against the supplied attribute. The number of values in the list depends on the ComparisonOperator being used. For type Number, value comparisons are numeric. String value comparisons for greater than, equals, or less than are based on ASCII character code values. For example, a is greater than A, and a is greater than B. For a list of code values, see http://en.wikipedia.org/wiki/ASCII#ASCII_printable_characters. For Binary, DynamoDB treats each byte of the binary data as unsigned when it compares binary values. For information on specifying data types in JSON, see JSON Data Format in the Amazon DynamoDB Developer Guide. - */ - AttributeValueList?: AttributeValueList; - } - export type ExpressionAttributeNameMap = {[key: string]: AttributeName}; - export type ExpressionAttributeNameVariable = string; - export type ExpressionAttributeValueMap = {[key: string]: AttributeValue}; - export type ExpressionAttributeValueVariable = string; - export type FilterConditionMap = {[key: string]: Condition}; - export interface GetItemInput { - /** - * The name of the table containing the requested item. - */ - TableName: TableName; - /** - * A map of attribute names to AttributeValue objects, representing the primary key of the item to retrieve. For the primary key, you must provide all of the attributes. For example, with a simple primary key, you only need to provide a value for the partition key. For a composite primary key, you must provide values for both the partition key and the sort key. - */ - Key: Key; - /** - * This is a legacy parameter. Use ProjectionExpression instead. For more information, see AttributesToGet in the Amazon DynamoDB Developer Guide. - */ - AttributesToGet?: AttributeNameList; - /** - * Determines the read consistency model: If set to true, then the operation uses strongly consistent reads; otherwise, the operation uses eventually consistent reads. - */ - ConsistentRead?: ConsistentRead; - ReturnConsumedCapacity?: ReturnConsumedCapacity; - /** - * A string that identifies one or more attributes to retrieve from the table. These attributes can include scalars, sets, or elements of a JSON document. The attributes in the expression must be separated by commas. If no attribute names are specified, then all attributes will be returned. If any of the requested attributes are not found, they will not appear in the result. For more information, see Accessing Item Attributes in the Amazon DynamoDB Developer Guide. - */ - ProjectionExpression?: ProjectionExpression; - /** - * One or more substitution tokens for attribute names in an expression. The following are some use cases for using ExpressionAttributeNames: To access an attribute whose name conflicts with a DynamoDB reserved word. To create a placeholder for repeating occurrences of an attribute name in an expression. To prevent special characters in an attribute name from being misinterpreted in an expression. Use the # character in an expression to dereference an attribute name. For example, consider the following attribute name: Percentile The name of this attribute conflicts with a reserved word, so it cannot be used directly in an expression. (For the complete list of reserved words, see Reserved Words in the Amazon DynamoDB Developer Guide). To work around this, you could specify the following for ExpressionAttributeNames: {"#P":"Percentile"} You could then use this substitution in an expression, as in this example: #P = :val Tokens that begin with the : character are expression attribute values, which are placeholders for the actual value at runtime. For more information on expression attribute names, see Accessing Item Attributes in the Amazon DynamoDB Developer Guide. - */ - ExpressionAttributeNames?: ExpressionAttributeNameMap; - } - export interface GetItemOutput { - /** - * A map of attribute names to AttributeValue objects, as specified by ProjectionExpression. - */ - Item?: AttributeMap; - /** - * The capacity units consumed by the GetItem operation. The data returned includes the total provisioned throughput consumed, along with statistics for the table and any indexes involved in the operation. ConsumedCapacity is only returned if the ReturnConsumedCapacity parameter was specified. For more information, see Provisioned Throughput in the Amazon DynamoDB Developer Guide. - */ - ConsumedCapacity?: ConsumedCapacity; - } - export interface GlobalSecondaryIndex { - /** - * The name of the global secondary index. The name must be unique among all other indexes on this table. - */ - IndexName: IndexName; - /** - * The complete key schema for a global secondary index, which consists of one or more pairs of attribute names and key types: HASH - partition key RANGE - sort key The partition key of an item is also known as its hash attribute. The term "hash attribute" derives from DynamoDB' usage of an internal hash function to evenly distribute data items across partitions, based on their partition key values. The sort key of an item is also known as its range attribute. The term "range attribute" derives from the way DynamoDB stores items with the same partition key physically close together, in sorted order by the sort key value. - */ - KeySchema: KeySchema; - /** - * Represents attributes that are copied (projected) from the table into the global secondary index. These are in addition to the primary key attributes and index key attributes, which are automatically projected. - */ - Projection: Projection; - /** - * Represents the provisioned throughput settings for the specified global secondary index. For current minimum and maximum provisioned throughput values, see Limits in the Amazon DynamoDB Developer Guide. - */ - ProvisionedThroughput: ProvisionedThroughput; - } - export interface GlobalSecondaryIndexDescription { - /** - * The name of the global secondary index. - */ - IndexName?: IndexName; - /** - * The complete key schema for a global secondary index, which consists of one or more pairs of attribute names and key types: HASH - partition key RANGE - sort key The partition key of an item is also known as its hash attribute. The term "hash attribute" derives from DynamoDB' usage of an internal hash function to evenly distribute data items across partitions, based on their partition key values. The sort key of an item is also known as its range attribute. The term "range attribute" derives from the way DynamoDB stores items with the same partition key physically close together, in sorted order by the sort key value. - */ - KeySchema?: KeySchema; - /** - * Represents attributes that are copied (projected) from the table into the global secondary index. These are in addition to the primary key attributes and index key attributes, which are automatically projected. - */ - Projection?: Projection; - /** - * The current state of the global secondary index: CREATING - The index is being created. UPDATING - The index is being updated. DELETING - The index is being deleted. ACTIVE - The index is ready for use. - */ - IndexStatus?: IndexStatus; - /** - * Indicates whether the index is currently backfilling. Backfilling is the process of reading items from the table and determining whether they can be added to the index. (Not all items will qualify: For example, a partition key cannot have any duplicate values.) If an item can be added to the index, DynamoDB will do so. After all items have been processed, the backfilling operation is complete and Backfilling is false. For indexes that were created during a CreateTable operation, the Backfilling attribute does not appear in the DescribeTable output. - */ - Backfilling?: Backfilling; - /** - * Represents the provisioned throughput settings for the specified global secondary index. For current minimum and maximum provisioned throughput values, see Limits in the Amazon DynamoDB Developer Guide. - */ - ProvisionedThroughput?: ProvisionedThroughputDescription; - /** - * The total size of the specified index, in bytes. DynamoDB updates this value approximately every six hours. Recent changes might not be reflected in this value. - */ - IndexSizeBytes?: Long; - /** - * The number of items in the specified index. DynamoDB updates this value approximately every six hours. Recent changes might not be reflected in this value. - */ - ItemCount?: Long; - /** - * The Amazon Resource Name (ARN) that uniquely identifies the index. - */ - IndexArn?: String; - } - export type GlobalSecondaryIndexDescriptionList = GlobalSecondaryIndexDescription[]; - export type GlobalSecondaryIndexList = GlobalSecondaryIndex[]; - export interface GlobalSecondaryIndexUpdate { - /** - * The name of an existing global secondary index, along with new provisioned throughput settings to be applied to that index. - */ - Update?: UpdateGlobalSecondaryIndexAction; - /** - * The parameters required for creating a global secondary index on an existing table: IndexName KeySchema AttributeDefinitions Projection ProvisionedThroughput - */ - Create?: CreateGlobalSecondaryIndexAction; - /** - * The name of an existing global secondary index to be removed. - */ - Delete?: DeleteGlobalSecondaryIndexAction; - } - export type GlobalSecondaryIndexUpdateList = GlobalSecondaryIndexUpdate[]; - export type IndexName = string; - export type IndexStatus = "CREATING"|"UPDATING"|"DELETING"|"ACTIVE"|string; - export type Integer = number; - export type ItemCollectionKeyAttributeMap = {[key: string]: AttributeValue}; - export interface ItemCollectionMetrics { - /** - * The partition key value of the item collection. This value is the same as the partition key value of the item. - */ - ItemCollectionKey?: ItemCollectionKeyAttributeMap; - /** - * An estimate of item collection size, in gigabytes. This value is a two-element array containing a lower bound and an upper bound for the estimate. The estimate includes the size of all the items in the table, plus the size of all attributes projected into all of the local secondary indexes on that table. Use this estimate to measure whether a local secondary index is approaching its size limit. The estimate is subject to change over time; therefore, do not rely on the precision or accuracy of the estimate. - */ - SizeEstimateRangeGB?: ItemCollectionSizeEstimateRange; - } - export type ItemCollectionMetricsMultiple = ItemCollectionMetrics[]; - export type ItemCollectionMetricsPerTable = {[key: string]: ItemCollectionMetricsMultiple}; - export type ItemCollectionSizeEstimateBound = number; - export type ItemCollectionSizeEstimateRange = ItemCollectionSizeEstimateBound[]; - export type ItemList = AttributeMap[]; - export type Key = {[key: string]: AttributeValue}; - export type KeyConditions = {[key: string]: Condition}; - export type KeyExpression = string; - export type KeyList = Key[]; - export type KeySchema = KeySchemaElement[]; - export type KeySchemaAttributeName = string; - export interface KeySchemaElement { - /** - * The name of a key attribute. - */ - AttributeName: KeySchemaAttributeName; - /** - * The role that this key attribute will assume: HASH - partition key RANGE - sort key The partition key of an item is also known as its hash attribute. The term "hash attribute" derives from DynamoDB' usage of an internal hash function to evenly distribute data items across partitions, based on their partition key values. The sort key of an item is also known as its range attribute. The term "range attribute" derives from the way DynamoDB stores items with the same partition key physically close together, in sorted order by the sort key value. - */ - KeyType: KeyType; - } - export type KeyType = "HASH"|"RANGE"|string; - export interface KeysAndAttributes { - /** - * The primary key attribute values that define the items and the attributes associated with the items. - */ - Keys: KeyList; - /** - * This is a legacy parameter. Use ProjectionExpression instead. For more information, see Legacy Conditional Parameters in the Amazon DynamoDB Developer Guide. - */ - AttributesToGet?: AttributeNameList; - /** - * The consistency of a read operation. If set to true, then a strongly consistent read is used; otherwise, an eventually consistent read is used. - */ - ConsistentRead?: ConsistentRead; - /** - * A string that identifies one or more attributes to retrieve from the table. These attributes can include scalars, sets, or elements of a JSON document. The attributes in the ProjectionExpression must be separated by commas. If no attribute names are specified, then all attributes will be returned. If any of the requested attributes are not found, they will not appear in the result. For more information, see Accessing Item Attributes in the Amazon DynamoDB Developer Guide. - */ - ProjectionExpression?: ProjectionExpression; - /** - * One or more substitution tokens for attribute names in an expression. The following are some use cases for using ExpressionAttributeNames: To access an attribute whose name conflicts with a DynamoDB reserved word. To create a placeholder for repeating occurrences of an attribute name in an expression. To prevent special characters in an attribute name from being misinterpreted in an expression. Use the # character in an expression to dereference an attribute name. For example, consider the following attribute name: Percentile The name of this attribute conflicts with a reserved word, so it cannot be used directly in an expression. (For the complete list of reserved words, see Reserved Words in the Amazon DynamoDB Developer Guide). To work around this, you could specify the following for ExpressionAttributeNames: {"#P":"Percentile"} You could then use this substitution in an expression, as in this example: #P = :val Tokens that begin with the : character are expression attribute values, which are placeholders for the actual value at runtime. For more information on expression attribute names, see Accessing Item Attributes in the Amazon DynamoDB Developer Guide. - */ - ExpressionAttributeNames?: ExpressionAttributeNameMap; - } - export type ListAttributeValue = AttributeValue[]; - export interface ListTablesInput { - /** - * The first table name that this operation will evaluate. Use the value that was returned for LastEvaluatedTableName in a previous operation, so that you can obtain the next page of results. - */ - ExclusiveStartTableName?: TableName; - /** - * A maximum number of table names to return. If this parameter is not specified, the limit is 100. - */ - Limit?: ListTablesInputLimit; - } - export type ListTablesInputLimit = number; - export interface ListTablesOutput { - /** - * The names of the tables associated with the current account at the current endpoint. The maximum size of this array is 100. If LastEvaluatedTableName also appears in the output, you can use this value as the ExclusiveStartTableName parameter in a subsequent ListTables request and obtain the next page of results. - */ - TableNames?: TableNameList; - /** - * The name of the last table in the current page of results. Use this value as the ExclusiveStartTableName in a new request to obtain the next page of results, until all the table names are returned. If you do not receive a LastEvaluatedTableName value in the response, this means that there are no more table names to be retrieved. - */ - LastEvaluatedTableName?: TableName; - } - export interface ListTagsOfResourceInput { - /** - * The Amazon DynamoDB resource with tags to be listed. This value is an Amazon Resource Name (ARN). - */ - ResourceArn: ResourceArnString; - /** - * An optional string that, if supplied, must be copied from the output of a previous call to ListTagOfResource. When provided in this manner, this API fetches the next page of results. - */ - NextToken?: NextTokenString; - } - export interface ListTagsOfResourceOutput { - /** - * The tags currently associated with the Amazon DynamoDB resource. - */ - Tags?: TagList; - /** - * If this value is returned, there are additional results to be displayed. To retrieve them, call ListTagsOfResource again, with NextToken set to this value. - */ - NextToken?: NextTokenString; - } - export interface LocalSecondaryIndex { - /** - * The name of the local secondary index. The name must be unique among all other indexes on this table. - */ - IndexName: IndexName; - /** - * The complete key schema for the local secondary index, consisting of one or more pairs of attribute names and key types: HASH - partition key RANGE - sort key The partition key of an item is also known as its hash attribute. The term "hash attribute" derives from DynamoDB' usage of an internal hash function to evenly distribute data items across partitions, based on their partition key values. The sort key of an item is also known as its range attribute. The term "range attribute" derives from the way DynamoDB stores items with the same partition key physically close together, in sorted order by the sort key value. - */ - KeySchema: KeySchema; - /** - * Represents attributes that are copied (projected) from the table into the local secondary index. These are in addition to the primary key attributes and index key attributes, which are automatically projected. - */ - Projection: Projection; - } - export interface LocalSecondaryIndexDescription { - /** - * Represents the name of the local secondary index. - */ - IndexName?: IndexName; - /** - * The complete key schema for the local secondary index, consisting of one or more pairs of attribute names and key types: HASH - partition key RANGE - sort key The partition key of an item is also known as its hash attribute. The term "hash attribute" derives from DynamoDB' usage of an internal hash function to evenly distribute data items across partitions, based on their partition key values. The sort key of an item is also known as its range attribute. The term "range attribute" derives from the way DynamoDB stores items with the same partition key physically close together, in sorted order by the sort key value. - */ - KeySchema?: KeySchema; - /** - * Represents attributes that are copied (projected) from the table into the global secondary index. These are in addition to the primary key attributes and index key attributes, which are automatically projected. - */ - Projection?: Projection; - /** - * The total size of the specified index, in bytes. DynamoDB updates this value approximately every six hours. Recent changes might not be reflected in this value. - */ - IndexSizeBytes?: Long; - /** - * The number of items in the specified index. DynamoDB updates this value approximately every six hours. Recent changes might not be reflected in this value. - */ - ItemCount?: Long; - /** - * The Amazon Resource Name (ARN) that uniquely identifies the index. - */ - IndexArn?: String; - } - export type LocalSecondaryIndexDescriptionList = LocalSecondaryIndexDescription[]; - export type LocalSecondaryIndexList = LocalSecondaryIndex[]; - export type Long = number; - export type MapAttributeValue = {[key: string]: AttributeValue}; - export type NextTokenString = string; - export type NonKeyAttributeName = string; - export type NonKeyAttributeNameList = NonKeyAttributeName[]; - export type NullAttributeValue = boolean; - export type NumberAttributeValue = string; - export type NumberSetAttributeValue = NumberAttributeValue[]; - export type PositiveIntegerObject = number; - export type PositiveLongObject = number; - export interface Projection { - /** - * The set of attributes that are projected into the index: KEYS_ONLY - Only the index and primary keys are projected into the index. INCLUDE - Only the specified table attributes are projected into the index. The list of projected attributes are in NonKeyAttributes. ALL - All of the table attributes are projected into the index. - */ - ProjectionType?: ProjectionType; - /** - * Represents the non-key attribute names which will be projected into the index. For local secondary indexes, the total count of NonKeyAttributes summed across all of the local secondary indexes, must not exceed 20. If you project the same attribute into two different indexes, this counts as two distinct attributes when determining the total. - */ - NonKeyAttributes?: NonKeyAttributeNameList; - } - export type ProjectionExpression = string; - export type ProjectionType = "ALL"|"KEYS_ONLY"|"INCLUDE"|string; - export interface ProvisionedThroughput { - /** - * The maximum number of strongly consistent reads consumed per second before DynamoDB returns a ThrottlingException. For more information, see Specifying Read and Write Requirements in the Amazon DynamoDB Developer Guide. - */ - ReadCapacityUnits: PositiveLongObject; - /** - * The maximum number of writes consumed per second before DynamoDB returns a ThrottlingException. For more information, see Specifying Read and Write Requirements in the Amazon DynamoDB Developer Guide. - */ - WriteCapacityUnits: PositiveLongObject; - } - export interface ProvisionedThroughputDescription { - /** - * The date and time of the last provisioned throughput increase for this table. - */ - LastIncreaseDateTime?: _Date; - /** - * The date and time of the last provisioned throughput decrease for this table. - */ - LastDecreaseDateTime?: _Date; - /** - * The number of provisioned throughput decreases for this table during this UTC calendar day. For current maximums on provisioned throughput decreases, see Limits in the Amazon DynamoDB Developer Guide. - */ - NumberOfDecreasesToday?: PositiveLongObject; - /** - * The maximum number of strongly consistent reads consumed per second before DynamoDB returns a ThrottlingException. Eventually consistent reads require less effort than strongly consistent reads, so a setting of 50 ReadCapacityUnits per second provides 100 eventually consistent ReadCapacityUnits per second. - */ - ReadCapacityUnits?: PositiveLongObject; - /** - * The maximum number of writes consumed per second before DynamoDB returns a ThrottlingException. - */ - WriteCapacityUnits?: PositiveLongObject; - } - export interface PutItemInput { - /** - * The name of the table to contain the item. - */ - TableName: TableName; - /** - * A map of attribute name/value pairs, one for each attribute. Only the primary key attributes are required; you can optionally provide other attribute name-value pairs for the item. You must provide all of the attributes for the primary key. For example, with a simple primary key, you only need to provide a value for the partition key. For a composite primary key, you must provide both values for both the partition key and the sort key. If you specify any attributes that are part of an index key, then the data types for those attributes must match those of the schema in the table's attribute definition. For more information about primary keys, see Primary Key in the Amazon DynamoDB Developer Guide. Each element in the Item map is an AttributeValue object. - */ - Item: PutItemInputAttributeMap; - /** - * This is a legacy parameter. Use ConditionExpression instead. For more information, see Expected in the Amazon DynamoDB Developer Guide. - */ - Expected?: ExpectedAttributeMap; - /** - * Use ReturnValues if you want to get the item attributes as they appeared before they were updated with the PutItem request. For PutItem, the valid values are: NONE - If ReturnValues is not specified, or if its value is NONE, then nothing is returned. (This setting is the default for ReturnValues.) ALL_OLD - If PutItem overwrote an attribute name-value pair, then the content of the old item is returned. The ReturnValues parameter is used by several DynamoDB operations; however, PutItem does not recognize any values other than NONE or ALL_OLD. - */ - ReturnValues?: ReturnValue; - ReturnConsumedCapacity?: ReturnConsumedCapacity; - /** - * Determines whether item collection metrics are returned. If set to SIZE, the response includes statistics about item collections, if any, that were modified during the operation are returned in the response. If set to NONE (the default), no statistics are returned. - */ - ReturnItemCollectionMetrics?: ReturnItemCollectionMetrics; - /** - * This is a legacy parameter. Use ConditionExpression instead. For more information, see ConditionalOperator in the Amazon DynamoDB Developer Guide. - */ - ConditionalOperator?: ConditionalOperator; - /** - * A condition that must be satisfied in order for a conditional PutItem operation to succeed. An expression can contain any of the following: Functions: attribute_exists | attribute_not_exists | attribute_type | contains | begins_with | size These function names are case-sensitive. Comparison operators: = | <> | < | > | <= | >= | BETWEEN | IN Logical operators: AND | OR | NOT For more information on condition expressions, see Specifying Conditions in the Amazon DynamoDB Developer Guide. - */ - ConditionExpression?: ConditionExpression; - /** - * One or more substitution tokens for attribute names in an expression. The following are some use cases for using ExpressionAttributeNames: To access an attribute whose name conflicts with a DynamoDB reserved word. To create a placeholder for repeating occurrences of an attribute name in an expression. To prevent special characters in an attribute name from being misinterpreted in an expression. Use the # character in an expression to dereference an attribute name. For example, consider the following attribute name: Percentile The name of this attribute conflicts with a reserved word, so it cannot be used directly in an expression. (For the complete list of reserved words, see Reserved Words in the Amazon DynamoDB Developer Guide). To work around this, you could specify the following for ExpressionAttributeNames: {"#P":"Percentile"} You could then use this substitution in an expression, as in this example: #P = :val Tokens that begin with the : character are expression attribute values, which are placeholders for the actual value at runtime. For more information on expression attribute names, see Accessing Item Attributes in the Amazon DynamoDB Developer Guide. - */ - ExpressionAttributeNames?: ExpressionAttributeNameMap; - /** - * One or more values that can be substituted in an expression. Use the : (colon) character in an expression to dereference an attribute value. For example, suppose that you wanted to check whether the value of the ProductStatus attribute was one of the following: Available | Backordered | Discontinued You would first need to specify ExpressionAttributeValues as follows: { ":avail":{"S":"Available"}, ":back":{"S":"Backordered"}, ":disc":{"S":"Discontinued"} } You could then use these values in an expression, such as this: ProductStatus IN (:avail, :back, :disc) For more information on expression attribute values, see Specifying Conditions in the Amazon DynamoDB Developer Guide. - */ - ExpressionAttributeValues?: ExpressionAttributeValueMap; - } - export type PutItemInputAttributeMap = {[key: string]: AttributeValue}; - export interface PutItemOutput { - /** - * The attribute values as they appeared before the PutItem operation, but only if ReturnValues is specified as ALL_OLD in the request. Each element consists of an attribute name and an attribute value. - */ - Attributes?: AttributeMap; - /** - * The capacity units consumed by the PutItem operation. The data returned includes the total provisioned throughput consumed, along with statistics for the table and any indexes involved in the operation. ConsumedCapacity is only returned if the ReturnConsumedCapacity parameter was specified. For more information, see Provisioned Throughput in the Amazon DynamoDB Developer Guide. - */ - ConsumedCapacity?: ConsumedCapacity; - /** - * Information about item collections, if any, that were affected by the PutItem operation. ItemCollectionMetrics is only returned if the ReturnItemCollectionMetrics parameter was specified. If the table does not have any local secondary indexes, this information is not returned in the response. Each ItemCollectionMetrics element consists of: ItemCollectionKey - The partition key value of the item collection. This is the same as the partition key value of the item itself. SizeEstimateRange - An estimate of item collection size, in gigabytes. This value is a two-element array containing a lower bound and an upper bound for the estimate. The estimate includes the size of all the items in the table, plus the size of all attributes projected into all of the local secondary indexes on that table. Use this estimate to measure whether a local secondary index is approaching its size limit. The estimate is subject to change over time; therefore, do not rely on the precision or accuracy of the estimate. - */ - ItemCollectionMetrics?: ItemCollectionMetrics; - } - export interface PutRequest { - /** - * A map of attribute name to attribute values, representing the primary key of an item to be processed by PutItem. All of the table's primary key attributes must be specified, and their data types must match those of the table's key schema. If any attributes are present in the item which are part of an index key schema for the table, their types must match the index key schema. - */ - Item: PutItemInputAttributeMap; - } - export interface QueryInput { - /** - * The name of the table containing the requested items. - */ - TableName: TableName; - /** - * The name of an index to query. This index can be any local secondary index or global secondary index on the table. Note that if you use the IndexName parameter, you must also provide TableName. - */ - IndexName?: IndexName; - /** - * The attributes to be returned in the result. You can retrieve all item attributes, specific item attributes, the count of matching items, or in the case of an index, some or all of the attributes projected into the index. ALL_ATTRIBUTES - Returns all of the item attributes from the specified table or index. If you query a local secondary index, then for each matching item in the index DynamoDB will fetch the entire item from the parent table. If the index is configured to project all item attributes, then all of the data can be obtained from the local secondary index, and no fetching is required. ALL_PROJECTED_ATTRIBUTES - Allowed only when querying an index. Retrieves all attributes that have been projected into the index. If the index is configured to project all attributes, this return value is equivalent to specifying ALL_ATTRIBUTES. COUNT - Returns the number of matching items, rather than the matching items themselves. SPECIFIC_ATTRIBUTES - Returns only the attributes listed in AttributesToGet. This return value is equivalent to specifying AttributesToGet without specifying any value for Select. If you query or scan a local secondary index and request only attributes that are projected into that index, the operation will read only the index and not the table. If any of the requested attributes are not projected into the local secondary index, DynamoDB will fetch each of these attributes from the parent table. This extra fetching incurs additional throughput cost and latency. If you query or scan a global secondary index, you can only request attributes that are projected into the index. Global secondary index queries cannot fetch attributes from the parent table. If neither Select nor AttributesToGet are specified, DynamoDB defaults to ALL_ATTRIBUTES when accessing a table, and ALL_PROJECTED_ATTRIBUTES when accessing an index. You cannot use both Select and AttributesToGet together in a single request, unless the value for Select is SPECIFIC_ATTRIBUTES. (This usage is equivalent to specifying AttributesToGet without any value for Select.) If you use the ProjectionExpression parameter, then the value for Select can only be SPECIFIC_ATTRIBUTES. Any other value for Select will return an error. - */ - Select?: Select; - /** - * This is a legacy parameter. Use ProjectionExpression instead. For more information, see AttributesToGet in the Amazon DynamoDB Developer Guide. - */ - AttributesToGet?: AttributeNameList; - /** - * The maximum number of items to evaluate (not necessarily the number of matching items). If DynamoDB processes the number of items up to the limit while processing the results, it stops the operation and returns the matching values up to that point, and a key in LastEvaluatedKey to apply in a subsequent operation, so that you can pick up where you left off. Also, if the processed data set size exceeds 1 MB before DynamoDB reaches this limit, it stops the operation and returns the matching values up to the limit, and a key in LastEvaluatedKey to apply in a subsequent operation to continue the operation. For more information, see Query and Scan in the Amazon DynamoDB Developer Guide. - */ - Limit?: PositiveIntegerObject; - /** - * Determines the read consistency model: If set to true, then the operation uses strongly consistent reads; otherwise, the operation uses eventually consistent reads. Strongly consistent reads are not supported on global secondary indexes. If you query a global secondary index with ConsistentRead set to true, you will receive a ValidationException. - */ - ConsistentRead?: ConsistentRead; - /** - * This is a legacy parameter. Use KeyConditionExpression instead. For more information, see KeyConditions in the Amazon DynamoDB Developer Guide. - */ - KeyConditions?: KeyConditions; - /** - * This is a legacy parameter. Use FilterExpression instead. For more information, see QueryFilter in the Amazon DynamoDB Developer Guide. - */ - QueryFilter?: FilterConditionMap; - /** - * This is a legacy parameter. Use FilterExpression instead. For more information, see ConditionalOperator in the Amazon DynamoDB Developer Guide. - */ - ConditionalOperator?: ConditionalOperator; - /** - * Specifies the order for index traversal: If true (default), the traversal is performed in ascending order; if false, the traversal is performed in descending order. Items with the same partition key value are stored in sorted order by sort key. If the sort key data type is Number, the results are stored in numeric order. For type String, the results are stored in order of ASCII character code values. For type Binary, DynamoDB treats each byte of the binary data as unsigned. If ScanIndexForward is true, DynamoDB returns the results in the order in which they are stored (by sort key value). This is the default behavior. If ScanIndexForward is false, DynamoDB reads the results in reverse order by sort key value, and then returns the results to the client. - */ - ScanIndexForward?: BooleanObject; - /** - * The primary key of the first item that this operation will evaluate. Use the value that was returned for LastEvaluatedKey in the previous operation. The data type for ExclusiveStartKey must be String, Number or Binary. No set data types are allowed. - */ - ExclusiveStartKey?: Key; - ReturnConsumedCapacity?: ReturnConsumedCapacity; - /** - * A string that identifies one or more attributes to retrieve from the table. These attributes can include scalars, sets, or elements of a JSON document. The attributes in the expression must be separated by commas. If no attribute names are specified, then all attributes will be returned. If any of the requested attributes are not found, they will not appear in the result. For more information, see Accessing Item Attributes in the Amazon DynamoDB Developer Guide. - */ - ProjectionExpression?: ProjectionExpression; - /** - * A string that contains conditions that DynamoDB applies after the Query operation, but before the data is returned to you. Items that do not satisfy the FilterExpression criteria are not returned. A FilterExpression does not allow key attributes. You cannot define a filter expression based on a partition key or a sort key. A FilterExpression is applied after the items have already been read; the process of filtering does not consume any additional read capacity units. For more information, see Filter Expressions in the Amazon DynamoDB Developer Guide. - */ - FilterExpression?: ConditionExpression; - /** - * The condition that specifies the key value(s) for items to be retrieved by the Query action. The condition must perform an equality test on a single partition key value. The condition can also perform one of several comparison tests on a single sort key value. Query can use KeyConditionExpression to retrieve one item with a given partition key value and sort key value, or several items that have the same partition key value but different sort key values. The partition key equality test is required, and must be specified in the following format: partitionKeyName = :partitionkeyval If you also want to provide a condition for the sort key, it must be combined using AND with the condition for the sort key. Following is an example, using the = comparison operator for the sort key: partitionKeyName = :partitionkeyval AND sortKeyName = :sortkeyval Valid comparisons for the sort key condition are as follows: sortKeyName = :sortkeyval - true if the sort key value is equal to :sortkeyval. sortKeyName < :sortkeyval - true if the sort key value is less than :sortkeyval. sortKeyName <= :sortkeyval - true if the sort key value is less than or equal to :sortkeyval. sortKeyName > :sortkeyval - true if the sort key value is greater than :sortkeyval. sortKeyName >= :sortkeyval - true if the sort key value is greater than or equal to :sortkeyval. sortKeyName BETWEEN :sortkeyval1 AND :sortkeyval2 - true if the sort key value is greater than or equal to :sortkeyval1, and less than or equal to :sortkeyval2. begins_with ( sortKeyName, :sortkeyval ) - true if the sort key value begins with a particular operand. (You cannot use this function with a sort key that is of type Number.) Note that the function name begins_with is case-sensitive. Use the ExpressionAttributeValues parameter to replace tokens such as :partitionval and :sortval with actual values at runtime. You can optionally use the ExpressionAttributeNames parameter to replace the names of the partition key and sort key with placeholder tokens. This option might be necessary if an attribute name conflicts with a DynamoDB reserved word. For example, the following KeyConditionExpression parameter causes an error because Size is a reserved word: Size = :myval To work around this, define a placeholder (such a #S) to represent the attribute name Size. KeyConditionExpression then is as follows: #S = :myval For a list of reserved words, see Reserved Words in the Amazon DynamoDB Developer Guide. For more information on ExpressionAttributeNames and ExpressionAttributeValues, see Using Placeholders for Attribute Names and Values in the Amazon DynamoDB Developer Guide. - */ - KeyConditionExpression?: KeyExpression; - /** - * One or more substitution tokens for attribute names in an expression. The following are some use cases for using ExpressionAttributeNames: To access an attribute whose name conflicts with a DynamoDB reserved word. To create a placeholder for repeating occurrences of an attribute name in an expression. To prevent special characters in an attribute name from being misinterpreted in an expression. Use the # character in an expression to dereference an attribute name. For example, consider the following attribute name: Percentile The name of this attribute conflicts with a reserved word, so it cannot be used directly in an expression. (For the complete list of reserved words, see Reserved Words in the Amazon DynamoDB Developer Guide). To work around this, you could specify the following for ExpressionAttributeNames: {"#P":"Percentile"} You could then use this substitution in an expression, as in this example: #P = :val Tokens that begin with the : character are expression attribute values, which are placeholders for the actual value at runtime. For more information on expression attribute names, see Accessing Item Attributes in the Amazon DynamoDB Developer Guide. - */ - ExpressionAttributeNames?: ExpressionAttributeNameMap; - /** - * One or more values that can be substituted in an expression. Use the : (colon) character in an expression to dereference an attribute value. For example, suppose that you wanted to check whether the value of the ProductStatus attribute was one of the following: Available | Backordered | Discontinued You would first need to specify ExpressionAttributeValues as follows: { ":avail":{"S":"Available"}, ":back":{"S":"Backordered"}, ":disc":{"S":"Discontinued"} } You could then use these values in an expression, such as this: ProductStatus IN (:avail, :back, :disc) For more information on expression attribute values, see Specifying Conditions in the Amazon DynamoDB Developer Guide. - */ - ExpressionAttributeValues?: ExpressionAttributeValueMap; - } - export interface QueryOutput { - /** - * An array of item attributes that match the query criteria. Each element in this array consists of an attribute name and the value for that attribute. - */ - Items?: ItemList; - /** - * The number of items in the response. If you used a QueryFilter in the request, then Count is the number of items returned after the filter was applied, and ScannedCount is the number of matching items before the filter was applied. If you did not use a filter in the request, then Count and ScannedCount are the same. - */ - Count?: Integer; - /** - * The number of items evaluated, before any QueryFilter is applied. A high ScannedCount value with few, or no, Count results indicates an inefficient Query operation. For more information, see Count and ScannedCount in the Amazon DynamoDB Developer Guide. If you did not use a filter in the request, then ScannedCount is the same as Count. - */ - ScannedCount?: Integer; - /** - * The primary key of the item where the operation stopped, inclusive of the previous result set. Use this value to start a new operation, excluding this value in the new request. If LastEvaluatedKey is empty, then the "last page" of results has been processed and there is no more data to be retrieved. If LastEvaluatedKey is not empty, it does not necessarily mean that there is more data in the result set. The only way to know when you have reached the end of the result set is when LastEvaluatedKey is empty. - */ - LastEvaluatedKey?: Key; - /** - * The capacity units consumed by the Query operation. The data returned includes the total provisioned throughput consumed, along with statistics for the table and any indexes involved in the operation. ConsumedCapacity is only returned if the ReturnConsumedCapacity parameter was specified For more information, see Provisioned Throughput in the Amazon DynamoDB Developer Guide. - */ - ConsumedCapacity?: ConsumedCapacity; - } - export type ResourceArnString = string; - export type ReturnConsumedCapacity = "INDEXES"|"TOTAL"|"NONE"|string; - export type ReturnItemCollectionMetrics = "SIZE"|"NONE"|string; - export type ReturnValue = "NONE"|"ALL_OLD"|"UPDATED_OLD"|"ALL_NEW"|"UPDATED_NEW"|string; - export type ScalarAttributeType = "S"|"N"|"B"|string; - export interface ScanInput { - /** - * The name of the table containing the requested items; or, if you provide IndexName, the name of the table to which that index belongs. - */ - TableName: TableName; - /** - * The name of a secondary index to scan. This index can be any local secondary index or global secondary index. Note that if you use the IndexName parameter, you must also provide TableName. - */ - IndexName?: IndexName; - /** - * This is a legacy parameter. Use ProjectionExpression instead. For more information, see AttributesToGet in the Amazon DynamoDB Developer Guide. - */ - AttributesToGet?: AttributeNameList; - /** - * The maximum number of items to evaluate (not necessarily the number of matching items). If DynamoDB processes the number of items up to the limit while processing the results, it stops the operation and returns the matching values up to that point, and a key in LastEvaluatedKey to apply in a subsequent operation, so that you can pick up where you left off. Also, if the processed data set size exceeds 1 MB before DynamoDB reaches this limit, it stops the operation and returns the matching values up to the limit, and a key in LastEvaluatedKey to apply in a subsequent operation to continue the operation. For more information, see Query and Scan in the Amazon DynamoDB Developer Guide. - */ - Limit?: PositiveIntegerObject; - /** - * The attributes to be returned in the result. You can retrieve all item attributes, specific item attributes, the count of matching items, or in the case of an index, some or all of the attributes projected into the index. ALL_ATTRIBUTES - Returns all of the item attributes from the specified table or index. If you query a local secondary index, then for each matching item in the index DynamoDB will fetch the entire item from the parent table. If the index is configured to project all item attributes, then all of the data can be obtained from the local secondary index, and no fetching is required. ALL_PROJECTED_ATTRIBUTES - Allowed only when querying an index. Retrieves all attributes that have been projected into the index. If the index is configured to project all attributes, this return value is equivalent to specifying ALL_ATTRIBUTES. COUNT - Returns the number of matching items, rather than the matching items themselves. SPECIFIC_ATTRIBUTES - Returns only the attributes listed in AttributesToGet. This return value is equivalent to specifying AttributesToGet without specifying any value for Select. If you query or scan a local secondary index and request only attributes that are projected into that index, the operation will read only the index and not the table. If any of the requested attributes are not projected into the local secondary index, DynamoDB will fetch each of these attributes from the parent table. This extra fetching incurs additional throughput cost and latency. If you query or scan a global secondary index, you can only request attributes that are projected into the index. Global secondary index queries cannot fetch attributes from the parent table. If neither Select nor AttributesToGet are specified, DynamoDB defaults to ALL_ATTRIBUTES when accessing a table, and ALL_PROJECTED_ATTRIBUTES when accessing an index. You cannot use both Select and AttributesToGet together in a single request, unless the value for Select is SPECIFIC_ATTRIBUTES. (This usage is equivalent to specifying AttributesToGet without any value for Select.) If you use the ProjectionExpression parameter, then the value for Select can only be SPECIFIC_ATTRIBUTES. Any other value for Select will return an error. - */ - Select?: Select; - /** - * This is a legacy parameter. Use FilterExpression instead. For more information, see ScanFilter in the Amazon DynamoDB Developer Guide. - */ - ScanFilter?: FilterConditionMap; - /** - * This is a legacy parameter. Use FilterExpression instead. For more information, see ConditionalOperator in the Amazon DynamoDB Developer Guide. - */ - ConditionalOperator?: ConditionalOperator; - /** - * The primary key of the first item that this operation will evaluate. Use the value that was returned for LastEvaluatedKey in the previous operation. The data type for ExclusiveStartKey must be String, Number or Binary. No set data types are allowed. In a parallel scan, a Scan request that includes ExclusiveStartKey must specify the same segment whose previous Scan returned the corresponding value of LastEvaluatedKey. - */ - ExclusiveStartKey?: Key; - ReturnConsumedCapacity?: ReturnConsumedCapacity; - /** - * For a parallel Scan request, TotalSegments represents the total number of segments into which the Scan operation will be divided. The value of TotalSegments corresponds to the number of application workers that will perform the parallel scan. For example, if you want to use four application threads to scan a table or an index, specify a TotalSegments value of 4. The value for TotalSegments must be greater than or equal to 1, and less than or equal to 1000000. If you specify a TotalSegments value of 1, the Scan operation will be sequential rather than parallel. If you specify TotalSegments, you must also specify Segment. - */ - TotalSegments?: ScanTotalSegments; - /** - * For a parallel Scan request, Segment identifies an individual segment to be scanned by an application worker. Segment IDs are zero-based, so the first segment is always 0. For example, if you want to use four application threads to scan a table or an index, then the first thread specifies a Segment value of 0, the second thread specifies 1, and so on. The value of LastEvaluatedKey returned from a parallel Scan request must be used as ExclusiveStartKey with the same segment ID in a subsequent Scan operation. The value for Segment must be greater than or equal to 0, and less than the value provided for TotalSegments. If you provide Segment, you must also provide TotalSegments. - */ - Segment?: ScanSegment; - /** - * A string that identifies one or more attributes to retrieve from the specified table or index. These attributes can include scalars, sets, or elements of a JSON document. The attributes in the expression must be separated by commas. If no attribute names are specified, then all attributes will be returned. If any of the requested attributes are not found, they will not appear in the result. For more information, see Accessing Item Attributes in the Amazon DynamoDB Developer Guide. - */ - ProjectionExpression?: ProjectionExpression; - /** - * A string that contains conditions that DynamoDB applies after the Scan operation, but before the data is returned to you. Items that do not satisfy the FilterExpression criteria are not returned. A FilterExpression is applied after the items have already been read; the process of filtering does not consume any additional read capacity units. For more information, see Filter Expressions in the Amazon DynamoDB Developer Guide. - */ - FilterExpression?: ConditionExpression; - /** - * One or more substitution tokens for attribute names in an expression. The following are some use cases for using ExpressionAttributeNames: To access an attribute whose name conflicts with a DynamoDB reserved word. To create a placeholder for repeating occurrences of an attribute name in an expression. To prevent special characters in an attribute name from being misinterpreted in an expression. Use the # character in an expression to dereference an attribute name. For example, consider the following attribute name: Percentile The name of this attribute conflicts with a reserved word, so it cannot be used directly in an expression. (For the complete list of reserved words, see Reserved Words in the Amazon DynamoDB Developer Guide). To work around this, you could specify the following for ExpressionAttributeNames: {"#P":"Percentile"} You could then use this substitution in an expression, as in this example: #P = :val Tokens that begin with the : character are expression attribute values, which are placeholders for the actual value at runtime. For more information on expression attribute names, see Accessing Item Attributes in the Amazon DynamoDB Developer Guide. - */ - ExpressionAttributeNames?: ExpressionAttributeNameMap; - /** - * One or more values that can be substituted in an expression. Use the : (colon) character in an expression to dereference an attribute value. For example, suppose that you wanted to check whether the value of the ProductStatus attribute was one of the following: Available | Backordered | Discontinued You would first need to specify ExpressionAttributeValues as follows: { ":avail":{"S":"Available"}, ":back":{"S":"Backordered"}, ":disc":{"S":"Discontinued"} } You could then use these values in an expression, such as this: ProductStatus IN (:avail, :back, :disc) For more information on expression attribute values, see Specifying Conditions in the Amazon DynamoDB Developer Guide. - */ - ExpressionAttributeValues?: ExpressionAttributeValueMap; - /** - * A Boolean value that determines the read consistency model during the scan: If ConsistentRead is false, then the data returned from Scan might not contain the results from other recently completed write operations (PutItem, UpdateItem or DeleteItem). If ConsistentRead is true, then all of the write operations that completed before the Scan began are guaranteed to be contained in the Scan response. The default setting for ConsistentRead is false. The ConsistentRead parameter is not supported on global secondary indexes. If you scan a global secondary index with ConsistentRead set to true, you will receive a ValidationException. - */ - ConsistentRead?: ConsistentRead; - } - export interface ScanOutput { - /** - * An array of item attributes that match the scan criteria. Each element in this array consists of an attribute name and the value for that attribute. - */ - Items?: ItemList; - /** - * The number of items in the response. If you set ScanFilter in the request, then Count is the number of items returned after the filter was applied, and ScannedCount is the number of matching items before the filter was applied. If you did not use a filter in the request, then Count is the same as ScannedCount. - */ - Count?: Integer; - /** - * The number of items evaluated, before any ScanFilter is applied. A high ScannedCount value with few, or no, Count results indicates an inefficient Scan operation. For more information, see Count and ScannedCount in the Amazon DynamoDB Developer Guide. If you did not use a filter in the request, then ScannedCount is the same as Count. - */ - ScannedCount?: Integer; - /** - * The primary key of the item where the operation stopped, inclusive of the previous result set. Use this value to start a new operation, excluding this value in the new request. If LastEvaluatedKey is empty, then the "last page" of results has been processed and there is no more data to be retrieved. If LastEvaluatedKey is not empty, it does not necessarily mean that there is more data in the result set. The only way to know when you have reached the end of the result set is when LastEvaluatedKey is empty. - */ - LastEvaluatedKey?: Key; - /** - * The capacity units consumed by the Scan operation. The data returned includes the total provisioned throughput consumed, along with statistics for the table and any indexes involved in the operation. ConsumedCapacity is only returned if the ReturnConsumedCapacity parameter was specified. For more information, see Provisioned Throughput in the Amazon DynamoDB Developer Guide. - */ - ConsumedCapacity?: ConsumedCapacity; - } - export type ScanSegment = number; - export type ScanTotalSegments = number; - export type SecondaryIndexesCapacityMap = {[key: string]: Capacity}; - export type Select = "ALL_ATTRIBUTES"|"ALL_PROJECTED_ATTRIBUTES"|"SPECIFIC_ATTRIBUTES"|"COUNT"|string; - export type StreamArn = string; - export type StreamEnabled = boolean; - export interface StreamSpecification { - /** - * Indicates whether DynamoDB Streams is enabled (true) or disabled (false) on the table. - */ - StreamEnabled?: StreamEnabled; - /** - * When an item in the table is modified, StreamViewType determines what information is written to the stream for this table. Valid values for StreamViewType are: KEYS_ONLY - Only the key attributes of the modified item are written to the stream. NEW_IMAGE - The entire item, as it appears after it was modified, is written to the stream. OLD_IMAGE - The entire item, as it appeared before it was modified, is written to the stream. NEW_AND_OLD_IMAGES - Both the new and the old item images of the item are written to the stream. - */ - StreamViewType?: StreamViewType; - } - export type StreamViewType = "NEW_IMAGE"|"OLD_IMAGE"|"NEW_AND_OLD_IMAGES"|"KEYS_ONLY"|string; - export type String = string; - export type StringAttributeValue = string; - export type StringSetAttributeValue = StringAttributeValue[]; - export interface TableDescription { - /** - * An array of AttributeDefinition objects. Each of these objects describes one attribute in the table and index key schema. Each AttributeDefinition object in this array is composed of: AttributeName - The name of the attribute. AttributeType - The data type for the attribute. - */ - AttributeDefinitions?: AttributeDefinitions; - /** - * The name of the table. - */ - TableName?: TableName; - /** - * The primary key structure for the table. Each KeySchemaElement consists of: AttributeName - The name of the attribute. KeyType - The role of the attribute: HASH - partition key RANGE - sort key The partition key of an item is also known as its hash attribute. The term "hash attribute" derives from DynamoDB' usage of an internal hash function to evenly distribute data items across partitions, based on their partition key values. The sort key of an item is also known as its range attribute. The term "range attribute" derives from the way DynamoDB stores items with the same partition key physically close together, in sorted order by the sort key value. For more information about primary keys, see Primary Key in the Amazon DynamoDB Developer Guide. - */ - KeySchema?: KeySchema; - /** - * The current state of the table: CREATING - The table is being created. UPDATING - The table is being updated. DELETING - The table is being deleted. ACTIVE - The table is ready for use. - */ - TableStatus?: TableStatus; - /** - * The date and time when the table was created, in UNIX epoch time format. - */ - CreationDateTime?: _Date; - /** - * The provisioned throughput settings for the table, consisting of read and write capacity units, along with data about increases and decreases. - */ - ProvisionedThroughput?: ProvisionedThroughputDescription; - /** - * The total size of the specified table, in bytes. DynamoDB updates this value approximately every six hours. Recent changes might not be reflected in this value. - */ - TableSizeBytes?: Long; - /** - * The number of items in the specified table. DynamoDB updates this value approximately every six hours. Recent changes might not be reflected in this value. - */ - ItemCount?: Long; - /** - * The Amazon Resource Name (ARN) that uniquely identifies the table. - */ - TableArn?: String; - /** - * Represents one or more local secondary indexes on the table. Each index is scoped to a given partition key value. Tables with one or more local secondary indexes are subject to an item collection size limit, where the amount of data within a given item collection cannot exceed 10 GB. Each element is composed of: IndexName - The name of the local secondary index. KeySchema - Specifies the complete index key schema. The attribute names in the key schema must be between 1 and 255 characters (inclusive). The key schema must begin with the same partition key as the table. Projection - Specifies attributes that are copied (projected) from the table into the index. These are in addition to the primary key attributes and index key attributes, which are automatically projected. Each attribute specification is composed of: ProjectionType - One of the following: KEYS_ONLY - Only the index and primary keys are projected into the index. INCLUDE - Only the specified table attributes are projected into the index. The list of projected attributes are in NonKeyAttributes. ALL - All of the table attributes are projected into the index. NonKeyAttributes - A list of one or more non-key attribute names that are projected into the secondary index. The total count of attributes provided in NonKeyAttributes, summed across all of the secondary indexes, must not exceed 20. If you project the same attribute into two different indexes, this counts as two distinct attributes when determining the total. IndexSizeBytes - Represents the total size of the index, in bytes. DynamoDB updates this value approximately every six hours. Recent changes might not be reflected in this value. ItemCount - Represents the number of items in the index. DynamoDB updates this value approximately every six hours. Recent changes might not be reflected in this value. If the table is in the DELETING state, no information about indexes will be returned. - */ - LocalSecondaryIndexes?: LocalSecondaryIndexDescriptionList; - /** - * The global secondary indexes, if any, on the table. Each index is scoped to a given partition key value. Each element is composed of: Backfilling - If true, then the index is currently in the backfilling phase. Backfilling occurs only when a new global secondary index is added to the table; it is the process by which DynamoDB populates the new index with data from the table. (This attribute does not appear for indexes that were created during a CreateTable operation.) IndexName - The name of the global secondary index. IndexSizeBytes - The total size of the global secondary index, in bytes. DynamoDB updates this value approximately every six hours. Recent changes might not be reflected in this value. IndexStatus - The current status of the global secondary index: CREATING - The index is being created. UPDATING - The index is being updated. DELETING - The index is being deleted. ACTIVE - The index is ready for use. ItemCount - The number of items in the global secondary index. DynamoDB updates this value approximately every six hours. Recent changes might not be reflected in this value. KeySchema - Specifies the complete index key schema. The attribute names in the key schema must be between 1 and 255 characters (inclusive). The key schema must begin with the same partition key as the table. Projection - Specifies attributes that are copied (projected) from the table into the index. These are in addition to the primary key attributes and index key attributes, which are automatically projected. Each attribute specification is composed of: ProjectionType - One of the following: KEYS_ONLY - Only the index and primary keys are projected into the index. INCLUDE - Only the specified table attributes are projected into the index. The list of projected attributes are in NonKeyAttributes. ALL - All of the table attributes are projected into the index. NonKeyAttributes - A list of one or more non-key attribute names that are projected into the secondary index. The total count of attributes provided in NonKeyAttributes, summed across all of the secondary indexes, must not exceed 20. If you project the same attribute into two different indexes, this counts as two distinct attributes when determining the total. ProvisionedThroughput - The provisioned throughput settings for the global secondary index, consisting of read and write capacity units, along with data about increases and decreases. If the table is in the DELETING state, no information about indexes will be returned. - */ - GlobalSecondaryIndexes?: GlobalSecondaryIndexDescriptionList; - /** - * The current DynamoDB Streams configuration for the table. - */ - StreamSpecification?: StreamSpecification; - /** - * A timestamp, in ISO 8601 format, for this stream. Note that LatestStreamLabel is not a unique identifier for the stream, because it is possible that a stream from another table might have the same timestamp. However, the combination of the following three elements is guaranteed to be unique: the AWS customer ID. the table name. the StreamLabel. - */ - LatestStreamLabel?: String; - /** - * The Amazon Resource Name (ARN) that uniquely identifies the latest stream for this table. - */ - LatestStreamArn?: StreamArn; - } - export type TableName = string; - export type TableNameList = TableName[]; - export type TableStatus = "CREATING"|"UPDATING"|"DELETING"|"ACTIVE"|string; - export interface Tag { - /** - * The key of the tag.Tag keys are case sensitive. Each DynamoDB table can only have up to one tag with the same key. If you try to add an existing tag (same key), the existing tag value will be updated to the new value. - */ - Key: TagKeyString; - /** - * The value of the tag. Tag values are case-sensitive and can be null. - */ - Value: TagValueString; - } - export type TagKeyList = TagKeyString[]; - export type TagKeyString = string; - export type TagList = Tag[]; - export interface TagResourceInput { - /** - * Identifies the Amazon DynamoDB resource to which tags should be added. This value is an Amazon Resource Name (ARN). - */ - ResourceArn: ResourceArnString; - /** - * The tags to be assigned to the Amazon DynamoDB resource. - */ - Tags: TagList; - } - export type TagValueString = string; - export type TimeToLiveAttributeName = string; - export interface TimeToLiveDescription { - /** - * The Time to Live status for the table. - */ - TimeToLiveStatus?: TimeToLiveStatus; - /** - * The name of the Time to Live attribute for items in the table. - */ - AttributeName?: TimeToLiveAttributeName; - } - export type TimeToLiveEnabled = boolean; - export interface TimeToLiveSpecification { - /** - * Indicates whether Time To Live is to be enabled (true) or disabled (false) on the table. - */ - Enabled: TimeToLiveEnabled; - /** - * The name of the Time to Live attribute used to store the expiration time for items in the table. - */ - AttributeName: TimeToLiveAttributeName; - } - export type TimeToLiveStatus = "ENABLING"|"DISABLING"|"ENABLED"|"DISABLED"|string; - export interface UntagResourceInput { - /** - * The Amazon DyanamoDB resource the tags will be removed from. This value is an Amazon Resource Name (ARN). - */ - ResourceArn: ResourceArnString; - /** - * A list of tag keys. Existing tags of the resource whose keys are members of this list will be removed from the Amazon DynamoDB resource. - */ - TagKeys: TagKeyList; - } - export type UpdateExpression = string; - export interface UpdateGlobalSecondaryIndexAction { - /** - * The name of the global secondary index to be updated. - */ - IndexName: IndexName; - /** - * Represents the provisioned throughput settings for the specified global secondary index. For current minimum and maximum provisioned throughput values, see Limits in the Amazon DynamoDB Developer Guide. - */ - ProvisionedThroughput: ProvisionedThroughput; - } - export interface UpdateItemInput { - /** - * The name of the table containing the item to update. - */ - TableName: TableName; - /** - * The primary key of the item to be updated. Each element consists of an attribute name and a value for that attribute. For the primary key, you must provide all of the attributes. For example, with a simple primary key, you only need to provide a value for the partition key. For a composite primary key, you must provide values for both the partition key and the sort key. - */ - Key: Key; - /** - * This is a legacy parameter. Use UpdateExpression instead. For more information, see AttributeUpdates in the Amazon DynamoDB Developer Guide. - */ - AttributeUpdates?: AttributeUpdates; - /** - * This is a legacy parameter. Use ConditionExpression instead. For more information, see Expected in the Amazon DynamoDB Developer Guide. - */ - Expected?: ExpectedAttributeMap; - /** - * This is a legacy parameter. Use ConditionExpression instead. For more information, see ConditionalOperator in the Amazon DynamoDB Developer Guide. - */ - ConditionalOperator?: ConditionalOperator; - /** - * Use ReturnValues if you want to get the item attributes as they appear before or after they are updated. For UpdateItem, the valid values are: NONE - If ReturnValues is not specified, or if its value is NONE, then nothing is returned. (This setting is the default for ReturnValues.) ALL_OLD - Returns all of the attributes of the item, as they appeared before the UpdateItem operation. UPDATED_OLD - Returns only the updated attributes, as they appeared before the UpdateItem operation. ALL_NEW - Returns all of the attributes of the item, as they appear after the UpdateItem operation. UPDATED_NEW - Returns only the updated attributes, as they appear after the UpdateItem operation. There is no additional cost associated with requesting a return value aside from the small network and processing overhead of receiving a larger response. No read capacity units are consumed. The values returned are strongly consistent. - */ - ReturnValues?: ReturnValue; - ReturnConsumedCapacity?: ReturnConsumedCapacity; - /** - * Determines whether item collection metrics are returned. If set to SIZE, the response includes statistics about item collections, if any, that were modified during the operation are returned in the response. If set to NONE (the default), no statistics are returned. - */ - ReturnItemCollectionMetrics?: ReturnItemCollectionMetrics; - /** - * An expression that defines one or more attributes to be updated, the action to be performed on them, and new value(s) for them. The following action values are available for UpdateExpression. SET - Adds one or more attributes and values to an item. If any of these attribute already exist, they are replaced by the new values. You can also use SET to add or subtract from an attribute that is of type Number. For example: SET myNum = myNum + :val SET supports the following functions: if_not_exists (path, operand) - if the item does not contain an attribute at the specified path, then if_not_exists evaluates to operand; otherwise, it evaluates to path. You can use this function to avoid overwriting an attribute that may already be present in the item. list_append (operand, operand) - evaluates to a list with a new element added to it. You can append the new element to the start or the end of the list by reversing the order of the operands. These function names are case-sensitive. REMOVE - Removes one or more attributes from an item. ADD - Adds the specified value to the item, if the attribute does not already exist. If the attribute does exist, then the behavior of ADD depends on the data type of the attribute: If the existing attribute is a number, and if Value is also a number, then Value is mathematically added to the existing attribute. If Value is a negative number, then it is subtracted from the existing attribute. If you use ADD to increment or decrement a number value for an item that doesn't exist before the update, DynamoDB uses 0 as the initial value. Similarly, if you use ADD for an existing item to increment or decrement an attribute value that doesn't exist before the update, DynamoDB uses 0 as the initial value. For example, suppose that the item you want to update doesn't have an attribute named itemcount, but you decide to ADD the number 3 to this attribute anyway. DynamoDB will create the itemcount attribute, set its initial value to 0, and finally add 3 to it. The result will be a new itemcount attribute in the item, with a value of 3. If the existing data type is a set and if Value is also a set, then Value is added to the existing set. For example, if the attribute value is the set [1,2], and the ADD action specified [3], then the final attribute value is [1,2,3]. An error occurs if an ADD action is specified for a set attribute and the attribute type specified does not match the existing set type. Both sets must have the same primitive data type. For example, if the existing data type is a set of strings, the Value must also be a set of strings. The ADD action only supports Number and set data types. In addition, ADD can only be used on top-level attributes, not nested attributes. DELETE - Deletes an element from a set. If a set of values is specified, then those values are subtracted from the old set. For example, if the attribute value was the set [a,b,c] and the DELETE action specifies [a,c], then the final attribute value is [b]. Specifying an empty set is an error. The DELETE action only supports set data types. In addition, DELETE can only be used on top-level attributes, not nested attributes. You can have many actions in a single expression, such as the following: SET a=:value1, b=:value2 DELETE :value3, :value4, :value5 For more information on update expressions, see Modifying Items and Attributes in the Amazon DynamoDB Developer Guide. - */ - UpdateExpression?: UpdateExpression; - /** - * A condition that must be satisfied in order for a conditional update to succeed. An expression can contain any of the following: Functions: attribute_exists | attribute_not_exists | attribute_type | contains | begins_with | size These function names are case-sensitive. Comparison operators: = | <> | < | > | <= | >= | BETWEEN | IN Logical operators: AND | OR | NOT For more information on condition expressions, see Specifying Conditions in the Amazon DynamoDB Developer Guide. - */ - ConditionExpression?: ConditionExpression; - /** - * One or more substitution tokens for attribute names in an expression. The following are some use cases for using ExpressionAttributeNames: To access an attribute whose name conflicts with a DynamoDB reserved word. To create a placeholder for repeating occurrences of an attribute name in an expression. To prevent special characters in an attribute name from being misinterpreted in an expression. Use the # character in an expression to dereference an attribute name. For example, consider the following attribute name: Percentile The name of this attribute conflicts with a reserved word, so it cannot be used directly in an expression. (For the complete list of reserved words, see Reserved Words in the Amazon DynamoDB Developer Guide). To work around this, you could specify the following for ExpressionAttributeNames: {"#P":"Percentile"} You could then use this substitution in an expression, as in this example: #P = :val Tokens that begin with the : character are expression attribute values, which are placeholders for the actual value at runtime. For more information on expression attribute names, see Accessing Item Attributes in the Amazon DynamoDB Developer Guide. - */ - ExpressionAttributeNames?: ExpressionAttributeNameMap; - /** - * One or more values that can be substituted in an expression. Use the : (colon) character in an expression to dereference an attribute value. For example, suppose that you wanted to check whether the value of the ProductStatus attribute was one of the following: Available | Backordered | Discontinued You would first need to specify ExpressionAttributeValues as follows: { ":avail":{"S":"Available"}, ":back":{"S":"Backordered"}, ":disc":{"S":"Discontinued"} } You could then use these values in an expression, such as this: ProductStatus IN (:avail, :back, :disc) For more information on expression attribute values, see Specifying Conditions in the Amazon DynamoDB Developer Guide. - */ - ExpressionAttributeValues?: ExpressionAttributeValueMap; - } - export interface UpdateItemOutput { - /** - * A map of attribute values as they appear before or after the UpdateItem operation, as determined by the ReturnValues parameter. The Attributes map is only present if ReturnValues was specified as something other than NONE in the request. Each element represents one attribute. - */ - Attributes?: AttributeMap; - /** - * The capacity units consumed by the UpdateItem operation. The data returned includes the total provisioned throughput consumed, along with statistics for the table and any indexes involved in the operation. ConsumedCapacity is only returned if the ReturnConsumedCapacity parameter was specified. For more information, see Provisioned Throughput in the Amazon DynamoDB Developer Guide. - */ - ConsumedCapacity?: ConsumedCapacity; - /** - * Information about item collections, if any, that were affected by the UpdateItem operation. ItemCollectionMetrics is only returned if the ReturnItemCollectionMetrics parameter was specified. If the table does not have any local secondary indexes, this information is not returned in the response. Each ItemCollectionMetrics element consists of: ItemCollectionKey - The partition key value of the item collection. This is the same as the partition key value of the item itself. SizeEstimateRange - An estimate of item collection size, in gigabytes. This value is a two-element array containing a lower bound and an upper bound for the estimate. The estimate includes the size of all the items in the table, plus the size of all attributes projected into all of the local secondary indexes on that table. Use this estimate to measure whether a local secondary index is approaching its size limit. The estimate is subject to change over time; therefore, do not rely on the precision or accuracy of the estimate. - */ - ItemCollectionMetrics?: ItemCollectionMetrics; - } - export interface UpdateTableInput { - /** - * An array of attributes that describe the key schema for the table and indexes. If you are adding a new global secondary index to the table, AttributeDefinitions must include the key element(s) of the new index. - */ - AttributeDefinitions?: AttributeDefinitions; - /** - * The name of the table to be updated. - */ - TableName: TableName; - /** - * The new provisioned throughput settings for the specified table or index. - */ - ProvisionedThroughput?: ProvisionedThroughput; - /** - * An array of one or more global secondary indexes for the table. For each index in the array, you can request one action: Create - add a new global secondary index to the table. Update - modify the provisioned throughput settings of an existing global secondary index. Delete - remove a global secondary index from the table. For more information, see Managing Global Secondary Indexes in the Amazon DynamoDB Developer Guide. - */ - GlobalSecondaryIndexUpdates?: GlobalSecondaryIndexUpdateList; - /** - * Represents the DynamoDB Streams configuration for the table. You will receive a ResourceInUseException if you attempt to enable a stream on a table that already has a stream, or if you attempt to disable a stream on a table which does not have a stream. - */ - StreamSpecification?: StreamSpecification; - } - export interface UpdateTableOutput { - /** - * Represents the properties of the table. - */ - TableDescription?: TableDescription; - } - export interface UpdateTimeToLiveInput { - /** - * The name of the table to be configured. - */ - TableName: TableName; - /** - * Represents the settings used to enable or disable Time to Live for the specified table. - */ - TimeToLiveSpecification: TimeToLiveSpecification; - } - export interface UpdateTimeToLiveOutput { - /** - * Represents the output of an UpdateTimeToLive operation. - */ - TimeToLiveSpecification?: TimeToLiveSpecification; - } - export interface WriteRequest { - /** - * A request to perform a PutItem operation. - */ - PutRequest?: PutRequest; - /** - * A request to perform a DeleteItem operation. - */ - DeleteRequest?: DeleteRequest; - } - export type WriteRequests = WriteRequest[]; - /** - * A string in YYYY-MM-DD format that represents the latest possible API version that can be used in this service. Specify 'latest' to use the latest possible version. - */ - export type apiVersion = "2011-12-05"|"2012-08-10"|"latest"|string; - export interface ClientApiVersions { - /** - * A string in YYYY-MM-DD format that represents the latest possible API version that can be used in this service. Specify 'latest' to use the latest possible version. - */ - apiVersion?: apiVersion; - } - export type ClientConfiguration = ServiceConfigurationOptions & ClientApiVersions; - /** - * Contains interfaces for use with the DynamoDB client. - */ - export import Types = DynamoDB; -} -export = DynamoDB; diff --git a/workshops/monte-carlo-on-ec2-spot-fleet/src/web/node_modules/aws-sdk/clients/dynamodb.js b/workshops/monte-carlo-on-ec2-spot-fleet/src/web/node_modules/aws-sdk/clients/dynamodb.js deleted file mode 100644 index e18ce52f..00000000 --- a/workshops/monte-carlo-on-ec2-spot-fleet/src/web/node_modules/aws-sdk/clients/dynamodb.js +++ /dev/null @@ -1,30 +0,0 @@ -require('../lib/node_loader'); -var AWS = require('../lib/core'); -var Service = AWS.Service; -var apiLoader = AWS.apiLoader; - -apiLoader.services['dynamodb'] = {}; -AWS.DynamoDB = Service.defineService('dynamodb', ['2011-12-05', '2012-08-10']); -require('../lib/services/dynamodb'); -Object.defineProperty(apiLoader.services['dynamodb'], '2011-12-05', { - get: function get() { - var model = require('../apis/dynamodb-2011-12-05.min.json'); - model.paginators = require('../apis/dynamodb-2011-12-05.paginators.json').pagination; - model.waiters = require('../apis/dynamodb-2011-12-05.waiters2.json').waiters; - return model; - }, - enumerable: true, - configurable: true -}); -Object.defineProperty(apiLoader.services['dynamodb'], '2012-08-10', { - get: function get() { - var model = require('../apis/dynamodb-2012-08-10.min.json'); - model.paginators = require('../apis/dynamodb-2012-08-10.paginators.json').pagination; - model.waiters = require('../apis/dynamodb-2012-08-10.waiters2.json').waiters; - return model; - }, - enumerable: true, - configurable: true -}); - -module.exports = AWS.DynamoDB; diff --git a/workshops/monte-carlo-on-ec2-spot-fleet/src/web/node_modules/aws-sdk/clients/dynamodbstreams.d.ts b/workshops/monte-carlo-on-ec2-spot-fleet/src/web/node_modules/aws-sdk/clients/dynamodbstreams.d.ts deleted file mode 100644 index 6fc987e5..00000000 --- a/workshops/monte-carlo-on-ec2-spot-fleet/src/web/node_modules/aws-sdk/clients/dynamodbstreams.d.ts +++ /dev/null @@ -1,382 +0,0 @@ -import {Request} from '../lib/request'; -import {Response} from '../lib/response'; -import {AWSError} from '../lib/error'; -import {Service} from '../lib/service'; -import {ServiceConfigurationOptions} from '../lib/service'; -import {ConfigBase as Config} from '../lib/config'; -interface Blob {} -declare class DynamoDBStreams extends Service { - /** - * Constructs a service object. This object has one method for each API operation. - */ - constructor(options?: DynamoDBStreams.Types.ClientConfiguration) - config: Config & DynamoDBStreams.Types.ClientConfiguration; - /** - * Returns information about a stream, including the current status of the stream, its Amazon Resource Name (ARN), the composition of its shards, and its corresponding DynamoDB table. You can call DescribeStream at a maximum rate of 10 times per second. Each shard in the stream has a SequenceNumberRange associated with it. If the SequenceNumberRange has a StartingSequenceNumber but no EndingSequenceNumber, then the shard is still open (able to receive more stream records). If both StartingSequenceNumber and EndingSequenceNumber are present, then that shard is closed and can no longer receive more data. - */ - describeStream(params: DynamoDBStreams.Types.DescribeStreamInput, callback?: (err: AWSError, data: DynamoDBStreams.Types.DescribeStreamOutput) => void): Request; - /** - * Returns information about a stream, including the current status of the stream, its Amazon Resource Name (ARN), the composition of its shards, and its corresponding DynamoDB table. You can call DescribeStream at a maximum rate of 10 times per second. Each shard in the stream has a SequenceNumberRange associated with it. If the SequenceNumberRange has a StartingSequenceNumber but no EndingSequenceNumber, then the shard is still open (able to receive more stream records). If both StartingSequenceNumber and EndingSequenceNumber are present, then that shard is closed and can no longer receive more data. - */ - describeStream(callback?: (err: AWSError, data: DynamoDBStreams.Types.DescribeStreamOutput) => void): Request; - /** - * Retrieves the stream records from a given shard. Specify a shard iterator using the ShardIterator parameter. The shard iterator specifies the position in the shard from which you want to start reading stream records sequentially. If there are no stream records available in the portion of the shard that the iterator points to, GetRecords returns an empty list. Note that it might take multiple calls to get to a portion of the shard that contains stream records. GetRecords can retrieve a maximum of 1 MB of data or 1000 stream records, whichever comes first. - */ - getRecords(params: DynamoDBStreams.Types.GetRecordsInput, callback?: (err: AWSError, data: DynamoDBStreams.Types.GetRecordsOutput) => void): Request; - /** - * Retrieves the stream records from a given shard. Specify a shard iterator using the ShardIterator parameter. The shard iterator specifies the position in the shard from which you want to start reading stream records sequentially. If there are no stream records available in the portion of the shard that the iterator points to, GetRecords returns an empty list. Note that it might take multiple calls to get to a portion of the shard that contains stream records. GetRecords can retrieve a maximum of 1 MB of data or 1000 stream records, whichever comes first. - */ - getRecords(callback?: (err: AWSError, data: DynamoDBStreams.Types.GetRecordsOutput) => void): Request; - /** - * Returns a shard iterator. A shard iterator provides information about how to retrieve the stream records from within a shard. Use the shard iterator in a subsequent GetRecords request to read the stream records from the shard. A shard iterator expires 15 minutes after it is returned to the requester. - */ - getShardIterator(params: DynamoDBStreams.Types.GetShardIteratorInput, callback?: (err: AWSError, data: DynamoDBStreams.Types.GetShardIteratorOutput) => void): Request; - /** - * Returns a shard iterator. A shard iterator provides information about how to retrieve the stream records from within a shard. Use the shard iterator in a subsequent GetRecords request to read the stream records from the shard. A shard iterator expires 15 minutes after it is returned to the requester. - */ - getShardIterator(callback?: (err: AWSError, data: DynamoDBStreams.Types.GetShardIteratorOutput) => void): Request; - /** - * Returns an array of stream ARNs associated with the current account and endpoint. If the TableName parameter is present, then ListStreams will return only the streams ARNs for that table. You can call ListStreams at a maximum rate of 5 times per second. - */ - listStreams(params: DynamoDBStreams.Types.ListStreamsInput, callback?: (err: AWSError, data: DynamoDBStreams.Types.ListStreamsOutput) => void): Request; - /** - * Returns an array of stream ARNs associated with the current account and endpoint. If the TableName parameter is present, then ListStreams will return only the streams ARNs for that table. You can call ListStreams at a maximum rate of 5 times per second. - */ - listStreams(callback?: (err: AWSError, data: DynamoDBStreams.Types.ListStreamsOutput) => void): Request; -} -declare namespace DynamoDBStreams { - export type AttributeMap = {[key: string]: AttributeValue}; - export type AttributeName = string; - export interface AttributeValue { - /** - * A String data type. - */ - S?: StringAttributeValue; - /** - * A Number data type. - */ - N?: NumberAttributeValue; - /** - * A Binary data type. - */ - B?: BinaryAttributeValue; - /** - * A String Set data type. - */ - SS?: StringSetAttributeValue; - /** - * A Number Set data type. - */ - NS?: NumberSetAttributeValue; - /** - * A Binary Set data type. - */ - BS?: BinarySetAttributeValue; - /** - * A Map data type. - */ - M?: MapAttributeValue; - /** - * A List data type. - */ - L?: ListAttributeValue; - /** - * A Null data type. - */ - NULL?: NullAttributeValue; - /** - * A Boolean data type. - */ - BOOL?: BooleanAttributeValue; - } - export type BinaryAttributeValue = Buffer|Uint8Array|Blob|string; - export type BinarySetAttributeValue = BinaryAttributeValue[]; - export type BooleanAttributeValue = boolean; - export type _Date = Date; - export interface DescribeStreamInput { - /** - * The Amazon Resource Name (ARN) for the stream. - */ - StreamArn: StreamArn; - /** - * The maximum number of shard objects to return. The upper limit is 100. - */ - Limit?: PositiveIntegerObject; - /** - * The shard ID of the first item that this operation will evaluate. Use the value that was returned for LastEvaluatedShardId in the previous operation. - */ - ExclusiveStartShardId?: ShardId; - } - export interface DescribeStreamOutput { - /** - * A complete description of the stream, including its creation date and time, the DynamoDB table associated with the stream, the shard IDs within the stream, and the beginning and ending sequence numbers of stream records within the shards. - */ - StreamDescription?: StreamDescription; - } - export type ErrorMessage = string; - export interface GetRecordsInput { - /** - * A shard iterator that was retrieved from a previous GetShardIterator operation. This iterator can be used to access the stream records in this shard. - */ - ShardIterator: ShardIterator; - /** - * The maximum number of records to return from the shard. The upper limit is 1000. - */ - Limit?: PositiveIntegerObject; - } - export interface GetRecordsOutput { - /** - * The stream records from the shard, which were retrieved using the shard iterator. - */ - Records?: RecordList; - /** - * The next position in the shard from which to start sequentially reading stream records. If set to null, the shard has been closed and the requested iterator will not return any more data. - */ - NextShardIterator?: ShardIterator; - } - export interface GetShardIteratorInput { - /** - * The Amazon Resource Name (ARN) for the stream. - */ - StreamArn: StreamArn; - /** - * The identifier of the shard. The iterator will be returned for this shard ID. - */ - ShardId: ShardId; - /** - * Determines how the shard iterator is used to start reading stream records from the shard: AT_SEQUENCE_NUMBER - Start reading exactly from the position denoted by a specific sequence number. AFTER_SEQUENCE_NUMBER - Start reading right after the position denoted by a specific sequence number. TRIM_HORIZON - Start reading at the last (untrimmed) stream record, which is the oldest record in the shard. In DynamoDB Streams, there is a 24 hour limit on data retention. Stream records whose age exceeds this limit are subject to removal (trimming) from the stream. LATEST - Start reading just after the most recent stream record in the shard, so that you always read the most recent data in the shard. - */ - ShardIteratorType: ShardIteratorType; - /** - * The sequence number of a stream record in the shard from which to start reading. - */ - SequenceNumber?: SequenceNumber; - } - export interface GetShardIteratorOutput { - /** - * The position in the shard from which to start reading stream records sequentially. A shard iterator specifies this position using the sequence number of a stream record in a shard. - */ - ShardIterator?: ShardIterator; - } - export interface Identity { - /** - * A unique identifier for the entity that made the call. For Time To Live, the principalId is "dynamodb.amazonaws.com". - */ - PrincipalId?: String; - /** - * The type of the identity. For Time To Live, the type is "Service". - */ - Type?: String; - } - export type KeySchema = KeySchemaElement[]; - export type KeySchemaAttributeName = string; - export interface KeySchemaElement { - /** - * The name of a key attribute. - */ - AttributeName: KeySchemaAttributeName; - /** - * The attribute data, consisting of the data type and the attribute value itself. - */ - KeyType: KeyType; - } - export type KeyType = "HASH"|"RANGE"|string; - export type ListAttributeValue = AttributeValue[]; - export interface ListStreamsInput { - /** - * If this parameter is provided, then only the streams associated with this table name are returned. - */ - TableName?: TableName; - /** - * The maximum number of streams to return. The upper limit is 100. - */ - Limit?: PositiveIntegerObject; - /** - * The ARN (Amazon Resource Name) of the first item that this operation will evaluate. Use the value that was returned for LastEvaluatedStreamArn in the previous operation. - */ - ExclusiveStartStreamArn?: StreamArn; - } - export interface ListStreamsOutput { - /** - * A list of stream descriptors associated with the current account and endpoint. - */ - Streams?: StreamList; - /** - * The stream ARN of the item where the operation stopped, inclusive of the previous result set. Use this value to start a new operation, excluding this value in the new request. If LastEvaluatedStreamArn is empty, then the "last page" of results has been processed and there is no more data to be retrieved. If LastEvaluatedStreamArn is not empty, it does not necessarily mean that there is more data in the result set. The only way to know when you have reached the end of the result set is when LastEvaluatedStreamArn is empty. - */ - LastEvaluatedStreamArn?: StreamArn; - } - export type MapAttributeValue = {[key: string]: AttributeValue}; - export type NullAttributeValue = boolean; - export type NumberAttributeValue = string; - export type NumberSetAttributeValue = NumberAttributeValue[]; - export type OperationType = "INSERT"|"MODIFY"|"REMOVE"|string; - export type PositiveIntegerObject = number; - export type PositiveLongObject = number; - export interface Record { - /** - * A globally unique identifier for the event that was recorded in this stream record. - */ - eventID?: String; - /** - * The type of data modification that was performed on the DynamoDB table: INSERT - a new item was added to the table. MODIFY - one or more of an existing item's attributes were modified. REMOVE - the item was deleted from the table - */ - eventName?: OperationType; - /** - * The version number of the stream record format. This number is updated whenever the structure of Record is modified. Client applications must not assume that eventVersion will remain at a particular value, as this number is subject to change at any time. In general, eventVersion will only increase as the low-level DynamoDB Streams API evolves. - */ - eventVersion?: String; - /** - * The AWS service from which the stream record originated. For DynamoDB Streams, this is aws:dynamodb. - */ - eventSource?: String; - /** - * The region in which the GetRecords request was received. - */ - awsRegion?: String; - /** - * The main body of the stream record, containing all of the DynamoDB-specific fields. - */ - dynamodb?: StreamRecord; - /** - * Items that are deleted by the Time to Live process after expiration have the following fields: Records[].userIdentity.type "Service" Records[].userIdentity.principalId "dynamodb.amazonaws.com" - */ - userIdentity?: Identity; - } - export type RecordList = Record[]; - export type SequenceNumber = string; - export interface SequenceNumberRange { - /** - * The first sequence number. - */ - StartingSequenceNumber?: SequenceNumber; - /** - * The last sequence number. - */ - EndingSequenceNumber?: SequenceNumber; - } - export interface Shard { - /** - * The system-generated identifier for this shard. - */ - ShardId?: ShardId; - /** - * The range of possible sequence numbers for the shard. - */ - SequenceNumberRange?: SequenceNumberRange; - /** - * The shard ID of the current shard's parent. - */ - ParentShardId?: ShardId; - } - export type ShardDescriptionList = Shard[]; - export type ShardId = string; - export type ShardIterator = string; - export type ShardIteratorType = "TRIM_HORIZON"|"LATEST"|"AT_SEQUENCE_NUMBER"|"AFTER_SEQUENCE_NUMBER"|string; - export interface Stream { - /** - * The Amazon Resource Name (ARN) for the stream. - */ - StreamArn?: StreamArn; - /** - * The DynamoDB table with which the stream is associated. - */ - TableName?: TableName; - /** - * A timestamp, in ISO 8601 format, for this stream. Note that LatestStreamLabel is not a unique identifier for the stream, because it is possible that a stream from another table might have the same timestamp. However, the combination of the following three elements is guaranteed to be unique: the AWS customer ID. the table name the StreamLabel - */ - StreamLabel?: String; - } - export type StreamArn = string; - export interface StreamDescription { - /** - * The Amazon Resource Name (ARN) for the stream. - */ - StreamArn?: StreamArn; - /** - * A timestamp, in ISO 8601 format, for this stream. Note that LatestStreamLabel is not a unique identifier for the stream, because it is possible that a stream from another table might have the same timestamp. However, the combination of the following three elements is guaranteed to be unique: the AWS customer ID. the table name the StreamLabel - */ - StreamLabel?: String; - /** - * Indicates the current status of the stream: ENABLING - Streams is currently being enabled on the DynamoDB table. ENABLED - the stream is enabled. DISABLING - Streams is currently being disabled on the DynamoDB table. DISABLED - the stream is disabled. - */ - StreamStatus?: StreamStatus; - /** - * Indicates the format of the records within this stream: KEYS_ONLY - only the key attributes of items that were modified in the DynamoDB table. NEW_IMAGE - entire items from the table, as they appeared after they were modified. OLD_IMAGE - entire items from the table, as they appeared before they were modified. NEW_AND_OLD_IMAGES - both the new and the old images of the items from the table. - */ - StreamViewType?: StreamViewType; - /** - * The date and time when the request to create this stream was issued. - */ - CreationRequestDateTime?: _Date; - /** - * The DynamoDB table with which the stream is associated. - */ - TableName?: TableName; - /** - * The key attribute(s) of the stream's DynamoDB table. - */ - KeySchema?: KeySchema; - /** - * The shards that comprise the stream. - */ - Shards?: ShardDescriptionList; - /** - * The shard ID of the item where the operation stopped, inclusive of the previous result set. Use this value to start a new operation, excluding this value in the new request. If LastEvaluatedShardId is empty, then the "last page" of results has been processed and there is currently no more data to be retrieved. If LastEvaluatedShardId is not empty, it does not necessarily mean that there is more data in the result set. The only way to know when you have reached the end of the result set is when LastEvaluatedShardId is empty. - */ - LastEvaluatedShardId?: ShardId; - } - export type StreamList = Stream[]; - export interface StreamRecord { - /** - * The approximate date and time when the stream record was created, in UNIX epoch time format. - */ - ApproximateCreationDateTime?: _Date; - /** - * The primary key attribute(s) for the DynamoDB item that was modified. - */ - Keys?: AttributeMap; - /** - * The item in the DynamoDB table as it appeared after it was modified. - */ - NewImage?: AttributeMap; - /** - * The item in the DynamoDB table as it appeared before it was modified. - */ - OldImage?: AttributeMap; - /** - * The sequence number of the stream record. - */ - SequenceNumber?: SequenceNumber; - /** - * The size of the stream record, in bytes. - */ - SizeBytes?: PositiveLongObject; - /** - * The type of data from the modified DynamoDB item that was captured in this stream record: KEYS_ONLY - only the key attributes of the modified item. NEW_IMAGE - the entire item, as it appeared after it was modified. OLD_IMAGE - the entire item, as it appeared before it was modified. NEW_AND_OLD_IMAGES - both the new and the old item images of the item. - */ - StreamViewType?: StreamViewType; - } - export type StreamStatus = "ENABLING"|"ENABLED"|"DISABLING"|"DISABLED"|string; - export type StreamViewType = "NEW_IMAGE"|"OLD_IMAGE"|"NEW_AND_OLD_IMAGES"|"KEYS_ONLY"|string; - export type String = string; - export type StringAttributeValue = string; - export type StringSetAttributeValue = StringAttributeValue[]; - export type TableName = string; - /** - * A string in YYYY-MM-DD format that represents the latest possible API version that can be used in this service. Specify 'latest' to use the latest possible version. - */ - export type apiVersion = "2012-08-10"|"latest"|string; - export interface ClientApiVersions { - /** - * A string in YYYY-MM-DD format that represents the latest possible API version that can be used in this service. Specify 'latest' to use the latest possible version. - */ - apiVersion?: apiVersion; - } - export type ClientConfiguration = ServiceConfigurationOptions & ClientApiVersions; - /** - * Contains interfaces for use with the DynamoDBStreams client. - */ - export import Types = DynamoDBStreams; -} -export = DynamoDBStreams; diff --git a/workshops/monte-carlo-on-ec2-spot-fleet/src/web/node_modules/aws-sdk/clients/dynamodbstreams.js b/workshops/monte-carlo-on-ec2-spot-fleet/src/web/node_modules/aws-sdk/clients/dynamodbstreams.js deleted file mode 100644 index 5bf52c78..00000000 --- a/workshops/monte-carlo-on-ec2-spot-fleet/src/web/node_modules/aws-sdk/clients/dynamodbstreams.js +++ /dev/null @@ -1,18 +0,0 @@ -require('../lib/node_loader'); -var AWS = require('../lib/core'); -var Service = AWS.Service; -var apiLoader = AWS.apiLoader; - -apiLoader.services['dynamodbstreams'] = {}; -AWS.DynamoDBStreams = Service.defineService('dynamodbstreams', ['2012-08-10']); -Object.defineProperty(apiLoader.services['dynamodbstreams'], '2012-08-10', { - get: function get() { - var model = require('../apis/streams.dynamodb-2012-08-10.min.json'); - model.paginators = require('../apis/streams.dynamodb-2012-08-10.paginators.json').pagination; - return model; - }, - enumerable: true, - configurable: true -}); - -module.exports = AWS.DynamoDBStreams; diff --git a/workshops/monte-carlo-on-ec2-spot-fleet/src/web/node_modules/aws-sdk/clients/ec2.d.ts b/workshops/monte-carlo-on-ec2-spot-fleet/src/web/node_modules/aws-sdk/clients/ec2.d.ts deleted file mode 100644 index d2610220..00000000 --- a/workshops/monte-carlo-on-ec2-spot-fleet/src/web/node_modules/aws-sdk/clients/ec2.d.ts +++ /dev/null @@ -1,13251 +0,0 @@ -import {Request} from '../lib/request'; -import {Response} from '../lib/response'; -import {AWSError} from '../lib/error'; -import {Service} from '../lib/service'; -import {ServiceConfigurationOptions} from '../lib/service'; -import {ConfigBase as Config} from '../lib/config'; -interface Blob {} -declare class EC2 extends Service { - /** - * Constructs a service object. This object has one method for each API operation. - */ - constructor(options?: EC2.Types.ClientConfiguration) - config: Config & EC2.Types.ClientConfiguration; - /** - * Accepts the Convertible Reserved Instance exchange quote described in the GetReservedInstancesExchangeQuote call. - */ - acceptReservedInstancesExchangeQuote(params: EC2.Types.AcceptReservedInstancesExchangeQuoteRequest, callback?: (err: AWSError, data: EC2.Types.AcceptReservedInstancesExchangeQuoteResult) => void): Request; - /** - * Accepts the Convertible Reserved Instance exchange quote described in the GetReservedInstancesExchangeQuote call. - */ - acceptReservedInstancesExchangeQuote(callback?: (err: AWSError, data: EC2.Types.AcceptReservedInstancesExchangeQuoteResult) => void): Request; - /** - * Accept a VPC peering connection request. To accept a request, the VPC peering connection must be in the pending-acceptance state, and you must be the owner of the peer VPC. Use DescribeVpcPeeringConnections to view your outstanding VPC peering connection requests. - */ - acceptVpcPeeringConnection(params: EC2.Types.AcceptVpcPeeringConnectionRequest, callback?: (err: AWSError, data: EC2.Types.AcceptVpcPeeringConnectionResult) => void): Request; - /** - * Accept a VPC peering connection request. To accept a request, the VPC peering connection must be in the pending-acceptance state, and you must be the owner of the peer VPC. Use DescribeVpcPeeringConnections to view your outstanding VPC peering connection requests. - */ - acceptVpcPeeringConnection(callback?: (err: AWSError, data: EC2.Types.AcceptVpcPeeringConnectionResult) => void): Request; - /** - * Allocates an Elastic IP address. An Elastic IP address is for use either in the EC2-Classic platform or in a VPC. By default, you can allocate 5 Elastic IP addresses for EC2-Classic per region and 5 Elastic IP addresses for EC2-VPC per region. If you release an Elastic IP address for use in a VPC, you might be able to recover it. To recover an Elastic IP address that you released, specify it in the Address parameter. Note that you cannot recover an Elastic IP address that you released after it is allocated to another AWS account. For more information, see Elastic IP Addresses in the Amazon Elastic Compute Cloud User Guide. - */ - allocateAddress(params: EC2.Types.AllocateAddressRequest, callback?: (err: AWSError, data: EC2.Types.AllocateAddressResult) => void): Request; - /** - * Allocates an Elastic IP address. An Elastic IP address is for use either in the EC2-Classic platform or in a VPC. By default, you can allocate 5 Elastic IP addresses for EC2-Classic per region and 5 Elastic IP addresses for EC2-VPC per region. If you release an Elastic IP address for use in a VPC, you might be able to recover it. To recover an Elastic IP address that you released, specify it in the Address parameter. Note that you cannot recover an Elastic IP address that you released after it is allocated to another AWS account. For more information, see Elastic IP Addresses in the Amazon Elastic Compute Cloud User Guide. - */ - allocateAddress(callback?: (err: AWSError, data: EC2.Types.AllocateAddressResult) => void): Request; - /** - * Allocates a Dedicated Host to your account. At minimum you need to specify the instance size type, Availability Zone, and quantity of hosts you want to allocate. - */ - allocateHosts(params: EC2.Types.AllocateHostsRequest, callback?: (err: AWSError, data: EC2.Types.AllocateHostsResult) => void): Request; - /** - * Allocates a Dedicated Host to your account. At minimum you need to specify the instance size type, Availability Zone, and quantity of hosts you want to allocate. - */ - allocateHosts(callback?: (err: AWSError, data: EC2.Types.AllocateHostsResult) => void): Request; - /** - * Assigns one or more IPv6 addresses to the specified network interface. You can specify one or more specific IPv6 addresses, or you can specify the number of IPv6 addresses to be automatically assigned from within the subnet's IPv6 CIDR block range. You can assign as many IPv6 addresses to a network interface as you can assign private IPv4 addresses, and the limit varies per instance type. For information, see IP Addresses Per Network Interface Per Instance Type in the Amazon Elastic Compute Cloud User Guide. - */ - assignIpv6Addresses(params: EC2.Types.AssignIpv6AddressesRequest, callback?: (err: AWSError, data: EC2.Types.AssignIpv6AddressesResult) => void): Request; - /** - * Assigns one or more IPv6 addresses to the specified network interface. You can specify one or more specific IPv6 addresses, or you can specify the number of IPv6 addresses to be automatically assigned from within the subnet's IPv6 CIDR block range. You can assign as many IPv6 addresses to a network interface as you can assign private IPv4 addresses, and the limit varies per instance type. For information, see IP Addresses Per Network Interface Per Instance Type in the Amazon Elastic Compute Cloud User Guide. - */ - assignIpv6Addresses(callback?: (err: AWSError, data: EC2.Types.AssignIpv6AddressesResult) => void): Request; - /** - * Assigns one or more secondary private IP addresses to the specified network interface. You can specify one or more specific secondary IP addresses, or you can specify the number of secondary IP addresses to be automatically assigned within the subnet's CIDR block range. The number of secondary IP addresses that you can assign to an instance varies by instance type. For information about instance types, see Instance Types in the Amazon Elastic Compute Cloud User Guide. For more information about Elastic IP addresses, see Elastic IP Addresses in the Amazon Elastic Compute Cloud User Guide. AssignPrivateIpAddresses is available only in EC2-VPC. - */ - assignPrivateIpAddresses(params: EC2.Types.AssignPrivateIpAddressesRequest, callback?: (err: AWSError, data: {}) => void): Request<{}, AWSError>; - /** - * Assigns one or more secondary private IP addresses to the specified network interface. You can specify one or more specific secondary IP addresses, or you can specify the number of secondary IP addresses to be automatically assigned within the subnet's CIDR block range. The number of secondary IP addresses that you can assign to an instance varies by instance type. For information about instance types, see Instance Types in the Amazon Elastic Compute Cloud User Guide. For more information about Elastic IP addresses, see Elastic IP Addresses in the Amazon Elastic Compute Cloud User Guide. AssignPrivateIpAddresses is available only in EC2-VPC. - */ - assignPrivateIpAddresses(callback?: (err: AWSError, data: {}) => void): Request<{}, AWSError>; - /** - * Associates an Elastic IP address with an instance or a network interface. An Elastic IP address is for use in either the EC2-Classic platform or in a VPC. For more information, see Elastic IP Addresses in the Amazon Elastic Compute Cloud User Guide. [EC2-Classic, VPC in an EC2-VPC-only account] If the Elastic IP address is already associated with a different instance, it is disassociated from that instance and associated with the specified instance. If you associate an Elastic IP address with an instance that has an existing Elastic IP address, the existing address is disassociated from the instance, but remains allocated to your account. [VPC in an EC2-Classic account] If you don't specify a private IP address, the Elastic IP address is associated with the primary IP address. If the Elastic IP address is already associated with a different instance or a network interface, you get an error unless you allow reassociation. You cannot associate an Elastic IP address with an instance or network interface that has an existing Elastic IP address. This is an idempotent operation. If you perform the operation more than once, Amazon EC2 doesn't return an error, and you may be charged for each time the Elastic IP address is remapped to the same instance. For more information, see the Elastic IP Addresses section of Amazon EC2 Pricing. - */ - associateAddress(params: EC2.Types.AssociateAddressRequest, callback?: (err: AWSError, data: EC2.Types.AssociateAddressResult) => void): Request; - /** - * Associates an Elastic IP address with an instance or a network interface. An Elastic IP address is for use in either the EC2-Classic platform or in a VPC. For more information, see Elastic IP Addresses in the Amazon Elastic Compute Cloud User Guide. [EC2-Classic, VPC in an EC2-VPC-only account] If the Elastic IP address is already associated with a different instance, it is disassociated from that instance and associated with the specified instance. If you associate an Elastic IP address with an instance that has an existing Elastic IP address, the existing address is disassociated from the instance, but remains allocated to your account. [VPC in an EC2-Classic account] If you don't specify a private IP address, the Elastic IP address is associated with the primary IP address. If the Elastic IP address is already associated with a different instance or a network interface, you get an error unless you allow reassociation. You cannot associate an Elastic IP address with an instance or network interface that has an existing Elastic IP address. This is an idempotent operation. If you perform the operation more than once, Amazon EC2 doesn't return an error, and you may be charged for each time the Elastic IP address is remapped to the same instance. For more information, see the Elastic IP Addresses section of Amazon EC2 Pricing. - */ - associateAddress(callback?: (err: AWSError, data: EC2.Types.AssociateAddressResult) => void): Request; - /** - * Associates a set of DHCP options (that you've previously created) with the specified VPC, or associates no DHCP options with the VPC. After you associate the options with the VPC, any existing instances and all new instances that you launch in that VPC use the options. You don't need to restart or relaunch the instances. They automatically pick up the changes within a few hours, depending on how frequently the instance renews its DHCP lease. You can explicitly renew the lease using the operating system on the instance. For more information, see DHCP Options Sets in the Amazon Virtual Private Cloud User Guide. - */ - associateDhcpOptions(params: EC2.Types.AssociateDhcpOptionsRequest, callback?: (err: AWSError, data: {}) => void): Request<{}, AWSError>; - /** - * Associates a set of DHCP options (that you've previously created) with the specified VPC, or associates no DHCP options with the VPC. After you associate the options with the VPC, any existing instances and all new instances that you launch in that VPC use the options. You don't need to restart or relaunch the instances. They automatically pick up the changes within a few hours, depending on how frequently the instance renews its DHCP lease. You can explicitly renew the lease using the operating system on the instance. For more information, see DHCP Options Sets in the Amazon Virtual Private Cloud User Guide. - */ - associateDhcpOptions(callback?: (err: AWSError, data: {}) => void): Request<{}, AWSError>; - /** - * Associates an IAM instance profile with a running or stopped instance. You cannot associate more than one IAM instance profile with an instance. - */ - associateIamInstanceProfile(params: EC2.Types.AssociateIamInstanceProfileRequest, callback?: (err: AWSError, data: EC2.Types.AssociateIamInstanceProfileResult) => void): Request; - /** - * Associates an IAM instance profile with a running or stopped instance. You cannot associate more than one IAM instance profile with an instance. - */ - associateIamInstanceProfile(callback?: (err: AWSError, data: EC2.Types.AssociateIamInstanceProfileResult) => void): Request; - /** - * Associates a subnet with a route table. The subnet and route table must be in the same VPC. This association causes traffic originating from the subnet to be routed according to the routes in the route table. The action returns an association ID, which you need in order to disassociate the route table from the subnet later. A route table can be associated with multiple subnets. For more information about route tables, see Route Tables in the Amazon Virtual Private Cloud User Guide. - */ - associateRouteTable(params: EC2.Types.AssociateRouteTableRequest, callback?: (err: AWSError, data: EC2.Types.AssociateRouteTableResult) => void): Request; - /** - * Associates a subnet with a route table. The subnet and route table must be in the same VPC. This association causes traffic originating from the subnet to be routed according to the routes in the route table. The action returns an association ID, which you need in order to disassociate the route table from the subnet later. A route table can be associated with multiple subnets. For more information about route tables, see Route Tables in the Amazon Virtual Private Cloud User Guide. - */ - associateRouteTable(callback?: (err: AWSError, data: EC2.Types.AssociateRouteTableResult) => void): Request; - /** - * Associates a CIDR block with your subnet. You can only associate a single IPv6 CIDR block with your subnet. An IPv6 CIDR block must have a prefix length of /64. - */ - associateSubnetCidrBlock(params: EC2.Types.AssociateSubnetCidrBlockRequest, callback?: (err: AWSError, data: EC2.Types.AssociateSubnetCidrBlockResult) => void): Request; - /** - * Associates a CIDR block with your subnet. You can only associate a single IPv6 CIDR block with your subnet. An IPv6 CIDR block must have a prefix length of /64. - */ - associateSubnetCidrBlock(callback?: (err: AWSError, data: EC2.Types.AssociateSubnetCidrBlockResult) => void): Request; - /** - * Associates a CIDR block with your VPC. You can associate a secondary IPv4 CIDR block, or you can associate an Amazon-provided IPv6 CIDR block. The IPv6 CIDR block size is fixed at /56. For more information about associating CIDR blocks with your VPC and applicable restrictions, see VPC and Subnet Sizing in the Amazon Virtual Private Cloud User Guide. - */ - associateVpcCidrBlock(params: EC2.Types.AssociateVpcCidrBlockRequest, callback?: (err: AWSError, data: EC2.Types.AssociateVpcCidrBlockResult) => void): Request; - /** - * Associates a CIDR block with your VPC. You can associate a secondary IPv4 CIDR block, or you can associate an Amazon-provided IPv6 CIDR block. The IPv6 CIDR block size is fixed at /56. For more information about associating CIDR blocks with your VPC and applicable restrictions, see VPC and Subnet Sizing in the Amazon Virtual Private Cloud User Guide. - */ - associateVpcCidrBlock(callback?: (err: AWSError, data: EC2.Types.AssociateVpcCidrBlockResult) => void): Request; - /** - * Links an EC2-Classic instance to a ClassicLink-enabled VPC through one or more of the VPC's security groups. You cannot link an EC2-Classic instance to more than one VPC at a time. You can only link an instance that's in the running state. An instance is automatically unlinked from a VPC when it's stopped - you can link it to the VPC again when you restart it. After you've linked an instance, you cannot change the VPC security groups that are associated with it. To change the security groups, you must first unlink the instance, and then link it again. Linking your instance to a VPC is sometimes referred to as attaching your instance. - */ - attachClassicLinkVpc(params: EC2.Types.AttachClassicLinkVpcRequest, callback?: (err: AWSError, data: EC2.Types.AttachClassicLinkVpcResult) => void): Request; - /** - * Links an EC2-Classic instance to a ClassicLink-enabled VPC through one or more of the VPC's security groups. You cannot link an EC2-Classic instance to more than one VPC at a time. You can only link an instance that's in the running state. An instance is automatically unlinked from a VPC when it's stopped - you can link it to the VPC again when you restart it. After you've linked an instance, you cannot change the VPC security groups that are associated with it. To change the security groups, you must first unlink the instance, and then link it again. Linking your instance to a VPC is sometimes referred to as attaching your instance. - */ - attachClassicLinkVpc(callback?: (err: AWSError, data: EC2.Types.AttachClassicLinkVpcResult) => void): Request; - /** - * Attaches an Internet gateway to a VPC, enabling connectivity between the Internet and the VPC. For more information about your VPC and Internet gateway, see the Amazon Virtual Private Cloud User Guide. - */ - attachInternetGateway(params: EC2.Types.AttachInternetGatewayRequest, callback?: (err: AWSError, data: {}) => void): Request<{}, AWSError>; - /** - * Attaches an Internet gateway to a VPC, enabling connectivity between the Internet and the VPC. For more information about your VPC and Internet gateway, see the Amazon Virtual Private Cloud User Guide. - */ - attachInternetGateway(callback?: (err: AWSError, data: {}) => void): Request<{}, AWSError>; - /** - * Attaches a network interface to an instance. - */ - attachNetworkInterface(params: EC2.Types.AttachNetworkInterfaceRequest, callback?: (err: AWSError, data: EC2.Types.AttachNetworkInterfaceResult) => void): Request; - /** - * Attaches a network interface to an instance. - */ - attachNetworkInterface(callback?: (err: AWSError, data: EC2.Types.AttachNetworkInterfaceResult) => void): Request; - /** - * Attaches an EBS volume to a running or stopped instance and exposes it to the instance with the specified device name. Encrypted EBS volumes may only be attached to instances that support Amazon EBS encryption. For more information, see Amazon EBS Encryption in the Amazon Elastic Compute Cloud User Guide. For a list of supported device names, see Attaching an EBS Volume to an Instance. Any device names that aren't reserved for instance store volumes can be used for EBS volumes. For more information, see Amazon EC2 Instance Store in the Amazon Elastic Compute Cloud User Guide. If a volume has an AWS Marketplace product code: The volume can be attached only to a stopped instance. AWS Marketplace product codes are copied from the volume to the instance. You must be subscribed to the product. The instance type and operating system of the instance must support the product. For example, you can't detach a volume from a Windows instance and attach it to a Linux instance. For an overview of the AWS Marketplace, see Introducing AWS Marketplace. For more information about EBS volumes, see Attaching Amazon EBS Volumes in the Amazon Elastic Compute Cloud User Guide. - */ - attachVolume(params: EC2.Types.AttachVolumeRequest, callback?: (err: AWSError, data: EC2.Types.VolumeAttachment) => void): Request; - /** - * Attaches an EBS volume to a running or stopped instance and exposes it to the instance with the specified device name. Encrypted EBS volumes may only be attached to instances that support Amazon EBS encryption. For more information, see Amazon EBS Encryption in the Amazon Elastic Compute Cloud User Guide. For a list of supported device names, see Attaching an EBS Volume to an Instance. Any device names that aren't reserved for instance store volumes can be used for EBS volumes. For more information, see Amazon EC2 Instance Store in the Amazon Elastic Compute Cloud User Guide. If a volume has an AWS Marketplace product code: The volume can be attached only to a stopped instance. AWS Marketplace product codes are copied from the volume to the instance. You must be subscribed to the product. The instance type and operating system of the instance must support the product. For example, you can't detach a volume from a Windows instance and attach it to a Linux instance. For an overview of the AWS Marketplace, see Introducing AWS Marketplace. For more information about EBS volumes, see Attaching Amazon EBS Volumes in the Amazon Elastic Compute Cloud User Guide. - */ - attachVolume(callback?: (err: AWSError, data: EC2.Types.VolumeAttachment) => void): Request; - /** - * Attaches a virtual private gateway to a VPC. You can attach one virtual private gateway to one VPC at a time. For more information, see AWS Managed VPN Connections in the Amazon Virtual Private Cloud User Guide. - */ - attachVpnGateway(params: EC2.Types.AttachVpnGatewayRequest, callback?: (err: AWSError, data: EC2.Types.AttachVpnGatewayResult) => void): Request; - /** - * Attaches a virtual private gateway to a VPC. You can attach one virtual private gateway to one VPC at a time. For more information, see AWS Managed VPN Connections in the Amazon Virtual Private Cloud User Guide. - */ - attachVpnGateway(callback?: (err: AWSError, data: EC2.Types.AttachVpnGatewayResult) => void): Request; - /** - * [EC2-VPC only] Adds one or more egress rules to a security group for use with a VPC. Specifically, this action permits instances to send traffic to one or more destination IPv4 or IPv6 CIDR address ranges, or to one or more destination security groups for the same VPC. This action doesn't apply to security groups for use in EC2-Classic. For more information, see Security Groups for Your VPC in the Amazon Virtual Private Cloud User Guide. For more information about security group limits, see Amazon VPC Limits. Each rule consists of the protocol (for example, TCP), plus either a CIDR range or a source group. For the TCP and UDP protocols, you must also specify the destination port or port range. For the ICMP protocol, you must also specify the ICMP type and code. You can use -1 for the type or code to mean all types or all codes. You can optionally specify a description for the rule. Rule changes are propagated to affected instances as quickly as possible. However, a small delay might occur. - */ - authorizeSecurityGroupEgress(params: EC2.Types.AuthorizeSecurityGroupEgressRequest, callback?: (err: AWSError, data: {}) => void): Request<{}, AWSError>; - /** - * [EC2-VPC only] Adds one or more egress rules to a security group for use with a VPC. Specifically, this action permits instances to send traffic to one or more destination IPv4 or IPv6 CIDR address ranges, or to one or more destination security groups for the same VPC. This action doesn't apply to security groups for use in EC2-Classic. For more information, see Security Groups for Your VPC in the Amazon Virtual Private Cloud User Guide. For more information about security group limits, see Amazon VPC Limits. Each rule consists of the protocol (for example, TCP), plus either a CIDR range or a source group. For the TCP and UDP protocols, you must also specify the destination port or port range. For the ICMP protocol, you must also specify the ICMP type and code. You can use -1 for the type or code to mean all types or all codes. You can optionally specify a description for the rule. Rule changes are propagated to affected instances as quickly as possible. However, a small delay might occur. - */ - authorizeSecurityGroupEgress(callback?: (err: AWSError, data: {}) => void): Request<{}, AWSError>; - /** - * Adds one or more ingress rules to a security group. Rule changes are propagated to instances within the security group as quickly as possible. However, a small delay might occur. [EC2-Classic] This action gives one or more IPv4 CIDR address ranges permission to access a security group in your account, or gives one or more security groups (called the source groups) permission to access a security group for your account. A source group can be for your own AWS account, or another. You can have up to 100 rules per group. [EC2-VPC] This action gives one or more IPv4 or IPv6 CIDR address ranges permission to access a security group in your VPC, or gives one or more other security groups (called the source groups) permission to access a security group for your VPC. The security groups must all be for the same VPC or a peer VPC in a VPC peering connection. For more information about VPC security group limits, see Amazon VPC Limits. You can optionally specify a description for the security group rule. - */ - authorizeSecurityGroupIngress(params: EC2.Types.AuthorizeSecurityGroupIngressRequest, callback?: (err: AWSError, data: {}) => void): Request<{}, AWSError>; - /** - * Adds one or more ingress rules to a security group. Rule changes are propagated to instances within the security group as quickly as possible. However, a small delay might occur. [EC2-Classic] This action gives one or more IPv4 CIDR address ranges permission to access a security group in your account, or gives one or more security groups (called the source groups) permission to access a security group for your account. A source group can be for your own AWS account, or another. You can have up to 100 rules per group. [EC2-VPC] This action gives one or more IPv4 or IPv6 CIDR address ranges permission to access a security group in your VPC, or gives one or more other security groups (called the source groups) permission to access a security group for your VPC. The security groups must all be for the same VPC or a peer VPC in a VPC peering connection. For more information about VPC security group limits, see Amazon VPC Limits. You can optionally specify a description for the security group rule. - */ - authorizeSecurityGroupIngress(callback?: (err: AWSError, data: {}) => void): Request<{}, AWSError>; - /** - * Bundles an Amazon instance store-backed Windows instance. During bundling, only the root device volume (C:\) is bundled. Data on other instance store volumes is not preserved. This action is not applicable for Linux/Unix instances or Windows instances that are backed by Amazon EBS. For more information, see Creating an Instance Store-Backed Windows AMI. - */ - bundleInstance(params: EC2.Types.BundleInstanceRequest, callback?: (err: AWSError, data: EC2.Types.BundleInstanceResult) => void): Request; - /** - * Bundles an Amazon instance store-backed Windows instance. During bundling, only the root device volume (C:\) is bundled. Data on other instance store volumes is not preserved. This action is not applicable for Linux/Unix instances or Windows instances that are backed by Amazon EBS. For more information, see Creating an Instance Store-Backed Windows AMI. - */ - bundleInstance(callback?: (err: AWSError, data: EC2.Types.BundleInstanceResult) => void): Request; - /** - * Cancels a bundling operation for an instance store-backed Windows instance. - */ - cancelBundleTask(params: EC2.Types.CancelBundleTaskRequest, callback?: (err: AWSError, data: EC2.Types.CancelBundleTaskResult) => void): Request; - /** - * Cancels a bundling operation for an instance store-backed Windows instance. - */ - cancelBundleTask(callback?: (err: AWSError, data: EC2.Types.CancelBundleTaskResult) => void): Request; - /** - * Cancels an active conversion task. The task can be the import of an instance or volume. The action removes all artifacts of the conversion, including a partially uploaded volume or instance. If the conversion is complete or is in the process of transferring the final disk image, the command fails and returns an exception. For more information, see Importing a Virtual Machine Using the Amazon EC2 CLI. - */ - cancelConversionTask(params: EC2.Types.CancelConversionRequest, callback?: (err: AWSError, data: {}) => void): Request<{}, AWSError>; - /** - * Cancels an active conversion task. The task can be the import of an instance or volume. The action removes all artifacts of the conversion, including a partially uploaded volume or instance. If the conversion is complete or is in the process of transferring the final disk image, the command fails and returns an exception. For more information, see Importing a Virtual Machine Using the Amazon EC2 CLI. - */ - cancelConversionTask(callback?: (err: AWSError, data: {}) => void): Request<{}, AWSError>; - /** - * Cancels an active export task. The request removes all artifacts of the export, including any partially-created Amazon S3 objects. If the export task is complete or is in the process of transferring the final disk image, the command fails and returns an error. - */ - cancelExportTask(params: EC2.Types.CancelExportTaskRequest, callback?: (err: AWSError, data: {}) => void): Request<{}, AWSError>; - /** - * Cancels an active export task. The request removes all artifacts of the export, including any partially-created Amazon S3 objects. If the export task is complete or is in the process of transferring the final disk image, the command fails and returns an error. - */ - cancelExportTask(callback?: (err: AWSError, data: {}) => void): Request<{}, AWSError>; - /** - * Cancels an in-process import virtual machine or import snapshot task. - */ - cancelImportTask(params: EC2.Types.CancelImportTaskRequest, callback?: (err: AWSError, data: EC2.Types.CancelImportTaskResult) => void): Request; - /** - * Cancels an in-process import virtual machine or import snapshot task. - */ - cancelImportTask(callback?: (err: AWSError, data: EC2.Types.CancelImportTaskResult) => void): Request; - /** - * Cancels the specified Reserved Instance listing in the Reserved Instance Marketplace. For more information, see Reserved Instance Marketplace in the Amazon Elastic Compute Cloud User Guide. - */ - cancelReservedInstancesListing(params: EC2.Types.CancelReservedInstancesListingRequest, callback?: (err: AWSError, data: EC2.Types.CancelReservedInstancesListingResult) => void): Request; - /** - * Cancels the specified Reserved Instance listing in the Reserved Instance Marketplace. For more information, see Reserved Instance Marketplace in the Amazon Elastic Compute Cloud User Guide. - */ - cancelReservedInstancesListing(callback?: (err: AWSError, data: EC2.Types.CancelReservedInstancesListingResult) => void): Request; - /** - * Cancels the specified Spot fleet requests. After you cancel a Spot fleet request, the Spot fleet launches no new Spot instances. You must specify whether the Spot fleet should also terminate its Spot instances. If you terminate the instances, the Spot fleet request enters the cancelled_terminating state. Otherwise, the Spot fleet request enters the cancelled_running state and the instances continue to run until they are interrupted or you terminate them manually. - */ - cancelSpotFleetRequests(params: EC2.Types.CancelSpotFleetRequestsRequest, callback?: (err: AWSError, data: EC2.Types.CancelSpotFleetRequestsResponse) => void): Request; - /** - * Cancels the specified Spot fleet requests. After you cancel a Spot fleet request, the Spot fleet launches no new Spot instances. You must specify whether the Spot fleet should also terminate its Spot instances. If you terminate the instances, the Spot fleet request enters the cancelled_terminating state. Otherwise, the Spot fleet request enters the cancelled_running state and the instances continue to run until they are interrupted or you terminate them manually. - */ - cancelSpotFleetRequests(callback?: (err: AWSError, data: EC2.Types.CancelSpotFleetRequestsResponse) => void): Request; - /** - * Cancels one or more Spot instance requests. Spot instances are instances that Amazon EC2 starts on your behalf when the bid price that you specify exceeds the current Spot price. Amazon EC2 periodically sets the Spot price based on available Spot instance capacity and current Spot instance requests. For more information, see Spot Instance Requests in the Amazon Elastic Compute Cloud User Guide. Canceling a Spot instance request does not terminate running Spot instances associated with the request. - */ - cancelSpotInstanceRequests(params: EC2.Types.CancelSpotInstanceRequestsRequest, callback?: (err: AWSError, data: EC2.Types.CancelSpotInstanceRequestsResult) => void): Request; - /** - * Cancels one or more Spot instance requests. Spot instances are instances that Amazon EC2 starts on your behalf when the bid price that you specify exceeds the current Spot price. Amazon EC2 periodically sets the Spot price based on available Spot instance capacity and current Spot instance requests. For more information, see Spot Instance Requests in the Amazon Elastic Compute Cloud User Guide. Canceling a Spot instance request does not terminate running Spot instances associated with the request. - */ - cancelSpotInstanceRequests(callback?: (err: AWSError, data: EC2.Types.CancelSpotInstanceRequestsResult) => void): Request; - /** - * Determines whether a product code is associated with an instance. This action can only be used by the owner of the product code. It is useful when a product code owner must verify whether another user's instance is eligible for support. - */ - confirmProductInstance(params: EC2.Types.ConfirmProductInstanceRequest, callback?: (err: AWSError, data: EC2.Types.ConfirmProductInstanceResult) => void): Request; - /** - * Determines whether a product code is associated with an instance. This action can only be used by the owner of the product code. It is useful when a product code owner must verify whether another user's instance is eligible for support. - */ - confirmProductInstance(callback?: (err: AWSError, data: EC2.Types.ConfirmProductInstanceResult) => void): Request; - /** - * Copies the specified Amazon FPGA Image (AFI) to the current region. - */ - copyFpgaImage(params: EC2.Types.CopyFpgaImageRequest, callback?: (err: AWSError, data: EC2.Types.CopyFpgaImageResult) => void): Request; - /** - * Copies the specified Amazon FPGA Image (AFI) to the current region. - */ - copyFpgaImage(callback?: (err: AWSError, data: EC2.Types.CopyFpgaImageResult) => void): Request; - /** - * Initiates the copy of an AMI from the specified source region to the current region. You specify the destination region by using its endpoint when making the request. For more information about the prerequisites and limits when copying an AMI, see Copying an AMI in the Amazon Elastic Compute Cloud User Guide. - */ - copyImage(params: EC2.Types.CopyImageRequest, callback?: (err: AWSError, data: EC2.Types.CopyImageResult) => void): Request; - /** - * Initiates the copy of an AMI from the specified source region to the current region. You specify the destination region by using its endpoint when making the request. For more information about the prerequisites and limits when copying an AMI, see Copying an AMI in the Amazon Elastic Compute Cloud User Guide. - */ - copyImage(callback?: (err: AWSError, data: EC2.Types.CopyImageResult) => void): Request; - /** - * Copies a point-in-time snapshot of an EBS volume and stores it in Amazon S3. You can copy the snapshot within the same region or from one region to another. You can use the snapshot to create EBS volumes or Amazon Machine Images (AMIs). The snapshot is copied to the regional endpoint that you send the HTTP request to. Copies of encrypted EBS snapshots remain encrypted. Copies of unencrypted snapshots remain unencrypted, unless the Encrypted flag is specified during the snapshot copy operation. By default, encrypted snapshot copies use the default AWS Key Management Service (AWS KMS) customer master key (CMK); however, you can specify a non-default CMK with the KmsKeyId parameter. To copy an encrypted snapshot that has been shared from another account, you must have permissions for the CMK used to encrypt the snapshot. Snapshots created by the CopySnapshot action have an arbitrary volume ID that should not be used for any purpose. For more information, see Copying an Amazon EBS Snapshot in the Amazon Elastic Compute Cloud User Guide. - */ - copySnapshot(params: EC2.Types.CopySnapshotRequest, callback?: (err: AWSError, data: EC2.Types.CopySnapshotResult) => void): Request; - /** - * Copies a point-in-time snapshot of an EBS volume and stores it in Amazon S3. You can copy the snapshot within the same region or from one region to another. You can use the snapshot to create EBS volumes or Amazon Machine Images (AMIs). The snapshot is copied to the regional endpoint that you send the HTTP request to. Copies of encrypted EBS snapshots remain encrypted. Copies of unencrypted snapshots remain unencrypted, unless the Encrypted flag is specified during the snapshot copy operation. By default, encrypted snapshot copies use the default AWS Key Management Service (AWS KMS) customer master key (CMK); however, you can specify a non-default CMK with the KmsKeyId parameter. To copy an encrypted snapshot that has been shared from another account, you must have permissions for the CMK used to encrypt the snapshot. Snapshots created by the CopySnapshot action have an arbitrary volume ID that should not be used for any purpose. For more information, see Copying an Amazon EBS Snapshot in the Amazon Elastic Compute Cloud User Guide. - */ - copySnapshot(callback?: (err: AWSError, data: EC2.Types.CopySnapshotResult) => void): Request; - /** - * Provides information to AWS about your VPN customer gateway device. The customer gateway is the appliance at your end of the VPN connection. (The device on the AWS side of the VPN connection is the virtual private gateway.) You must provide the Internet-routable IP address of the customer gateway's external interface. The IP address must be static and may be behind a device performing network address translation (NAT). For devices that use Border Gateway Protocol (BGP), you can also provide the device's BGP Autonomous System Number (ASN). You can use an existing ASN assigned to your network. If you don't have an ASN already, you can use a private ASN (in the 64512 - 65534 range). Amazon EC2 supports all 2-byte ASN numbers in the range of 1 - 65534, with the exception of 7224, which is reserved in the us-east-1 region, and 9059, which is reserved in the eu-west-1 region. For more information about VPN customer gateways, see AWS Managed VPN Connections in the Amazon Virtual Private Cloud User Guide. You cannot create more than one customer gateway with the same VPN type, IP address, and BGP ASN parameter values. If you run an identical request more than one time, the first request creates the customer gateway, and subsequent requests return information about the existing customer gateway. The subsequent requests do not create new customer gateway resources. - */ - createCustomerGateway(params: EC2.Types.CreateCustomerGatewayRequest, callback?: (err: AWSError, data: EC2.Types.CreateCustomerGatewayResult) => void): Request; - /** - * Provides information to AWS about your VPN customer gateway device. The customer gateway is the appliance at your end of the VPN connection. (The device on the AWS side of the VPN connection is the virtual private gateway.) You must provide the Internet-routable IP address of the customer gateway's external interface. The IP address must be static and may be behind a device performing network address translation (NAT). For devices that use Border Gateway Protocol (BGP), you can also provide the device's BGP Autonomous System Number (ASN). You can use an existing ASN assigned to your network. If you don't have an ASN already, you can use a private ASN (in the 64512 - 65534 range). Amazon EC2 supports all 2-byte ASN numbers in the range of 1 - 65534, with the exception of 7224, which is reserved in the us-east-1 region, and 9059, which is reserved in the eu-west-1 region. For more information about VPN customer gateways, see AWS Managed VPN Connections in the Amazon Virtual Private Cloud User Guide. You cannot create more than one customer gateway with the same VPN type, IP address, and BGP ASN parameter values. If you run an identical request more than one time, the first request creates the customer gateway, and subsequent requests return information about the existing customer gateway. The subsequent requests do not create new customer gateway resources. - */ - createCustomerGateway(callback?: (err: AWSError, data: EC2.Types.CreateCustomerGatewayResult) => void): Request; - /** - * Creates a default VPC with a size /16 IPv4 CIDR block and a default subnet in each Availability Zone. For more information about the components of a default VPC, see Default VPC and Default Subnets in the Amazon Virtual Private Cloud User Guide. You cannot specify the components of the default VPC yourself. You can create a default VPC if you deleted your previous default VPC. You cannot have more than one default VPC per region. If your account supports EC2-Classic, you cannot use this action to create a default VPC in a region that supports EC2-Classic. If you want a default VPC in a region that supports EC2-Classic, see "I really want a default VPC for my existing EC2 account. Is that possible?" in the Default VPCs FAQ. - */ - createDefaultVpc(params: EC2.Types.CreateDefaultVpcRequest, callback?: (err: AWSError, data: EC2.Types.CreateDefaultVpcResult) => void): Request; - /** - * Creates a default VPC with a size /16 IPv4 CIDR block and a default subnet in each Availability Zone. For more information about the components of a default VPC, see Default VPC and Default Subnets in the Amazon Virtual Private Cloud User Guide. You cannot specify the components of the default VPC yourself. You can create a default VPC if you deleted your previous default VPC. You cannot have more than one default VPC per region. If your account supports EC2-Classic, you cannot use this action to create a default VPC in a region that supports EC2-Classic. If you want a default VPC in a region that supports EC2-Classic, see "I really want a default VPC for my existing EC2 account. Is that possible?" in the Default VPCs FAQ. - */ - createDefaultVpc(callback?: (err: AWSError, data: EC2.Types.CreateDefaultVpcResult) => void): Request; - /** - * Creates a set of DHCP options for your VPC. After creating the set, you must associate it with the VPC, causing all existing and new instances that you launch in the VPC to use this set of DHCP options. The following are the individual DHCP options you can specify. For more information about the options, see RFC 2132. domain-name-servers - The IP addresses of up to four domain name servers, or AmazonProvidedDNS. The default DHCP option set specifies AmazonProvidedDNS. If specifying more than one domain name server, specify the IP addresses in a single parameter, separated by commas. If you want your instance to receive a custom DNS hostname as specified in domain-name, you must set domain-name-servers to a custom DNS server. domain-name - If you're using AmazonProvidedDNS in us-east-1, specify ec2.internal. If you're using AmazonProvidedDNS in another region, specify region.compute.internal (for example, ap-northeast-1.compute.internal). Otherwise, specify a domain name (for example, MyCompany.com). This value is used to complete unqualified DNS hostnames. Important: Some Linux operating systems accept multiple domain names separated by spaces. However, Windows and other Linux operating systems treat the value as a single domain, which results in unexpected behavior. If your DHCP options set is associated with a VPC that has instances with multiple operating systems, specify only one domain name. ntp-servers - The IP addresses of up to four Network Time Protocol (NTP) servers. netbios-name-servers - The IP addresses of up to four NetBIOS name servers. netbios-node-type - The NetBIOS node type (1, 2, 4, or 8). We recommend that you specify 2 (broadcast and multicast are not currently supported). For more information about these node types, see RFC 2132. Your VPC automatically starts out with a set of DHCP options that includes only a DNS server that we provide (AmazonProvidedDNS). If you create a set of options, and if your VPC has an Internet gateway, make sure to set the domain-name-servers option either to AmazonProvidedDNS or to a domain name server of your choice. For more information about DHCP options, see DHCP Options Sets in the Amazon Virtual Private Cloud User Guide. - */ - createDhcpOptions(params: EC2.Types.CreateDhcpOptionsRequest, callback?: (err: AWSError, data: EC2.Types.CreateDhcpOptionsResult) => void): Request; - /** - * Creates a set of DHCP options for your VPC. After creating the set, you must associate it with the VPC, causing all existing and new instances that you launch in the VPC to use this set of DHCP options. The following are the individual DHCP options you can specify. For more information about the options, see RFC 2132. domain-name-servers - The IP addresses of up to four domain name servers, or AmazonProvidedDNS. The default DHCP option set specifies AmazonProvidedDNS. If specifying more than one domain name server, specify the IP addresses in a single parameter, separated by commas. If you want your instance to receive a custom DNS hostname as specified in domain-name, you must set domain-name-servers to a custom DNS server. domain-name - If you're using AmazonProvidedDNS in us-east-1, specify ec2.internal. If you're using AmazonProvidedDNS in another region, specify region.compute.internal (for example, ap-northeast-1.compute.internal). Otherwise, specify a domain name (for example, MyCompany.com). This value is used to complete unqualified DNS hostnames. Important: Some Linux operating systems accept multiple domain names separated by spaces. However, Windows and other Linux operating systems treat the value as a single domain, which results in unexpected behavior. If your DHCP options set is associated with a VPC that has instances with multiple operating systems, specify only one domain name. ntp-servers - The IP addresses of up to four Network Time Protocol (NTP) servers. netbios-name-servers - The IP addresses of up to four NetBIOS name servers. netbios-node-type - The NetBIOS node type (1, 2, 4, or 8). We recommend that you specify 2 (broadcast and multicast are not currently supported). For more information about these node types, see RFC 2132. Your VPC automatically starts out with a set of DHCP options that includes only a DNS server that we provide (AmazonProvidedDNS). If you create a set of options, and if your VPC has an Internet gateway, make sure to set the domain-name-servers option either to AmazonProvidedDNS or to a domain name server of your choice. For more information about DHCP options, see DHCP Options Sets in the Amazon Virtual Private Cloud User Guide. - */ - createDhcpOptions(callback?: (err: AWSError, data: EC2.Types.CreateDhcpOptionsResult) => void): Request; - /** - * [IPv6 only] Creates an egress-only Internet gateway for your VPC. An egress-only Internet gateway is used to enable outbound communication over IPv6 from instances in your VPC to the Internet, and prevents hosts outside of your VPC from initiating an IPv6 connection with your instance. - */ - createEgressOnlyInternetGateway(params: EC2.Types.CreateEgressOnlyInternetGatewayRequest, callback?: (err: AWSError, data: EC2.Types.CreateEgressOnlyInternetGatewayResult) => void): Request; - /** - * [IPv6 only] Creates an egress-only Internet gateway for your VPC. An egress-only Internet gateway is used to enable outbound communication over IPv6 from instances in your VPC to the Internet, and prevents hosts outside of your VPC from initiating an IPv6 connection with your instance. - */ - createEgressOnlyInternetGateway(callback?: (err: AWSError, data: EC2.Types.CreateEgressOnlyInternetGatewayResult) => void): Request; - /** - * Creates one or more flow logs to capture IP traffic for a specific network interface, subnet, or VPC. Flow logs are delivered to a specified log group in Amazon CloudWatch Logs. If you specify a VPC or subnet in the request, a log stream is created in CloudWatch Logs for each network interface in the subnet or VPC. Log streams can include information about accepted and rejected traffic to a network interface. You can view the data in your log streams using Amazon CloudWatch Logs. In your request, you must also specify an IAM role that has permission to publish logs to CloudWatch Logs. - */ - createFlowLogs(params: EC2.Types.CreateFlowLogsRequest, callback?: (err: AWSError, data: EC2.Types.CreateFlowLogsResult) => void): Request; - /** - * Creates one or more flow logs to capture IP traffic for a specific network interface, subnet, or VPC. Flow logs are delivered to a specified log group in Amazon CloudWatch Logs. If you specify a VPC or subnet in the request, a log stream is created in CloudWatch Logs for each network interface in the subnet or VPC. Log streams can include information about accepted and rejected traffic to a network interface. You can view the data in your log streams using Amazon CloudWatch Logs. In your request, you must also specify an IAM role that has permission to publish logs to CloudWatch Logs. - */ - createFlowLogs(callback?: (err: AWSError, data: EC2.Types.CreateFlowLogsResult) => void): Request; - /** - * Creates an Amazon FPGA Image (AFI) from the specified design checkpoint (DCP). The create operation is asynchronous. To verify that the AFI is ready for use, check the output logs. An AFI contains the FPGA bitstream that is ready to download to an FPGA. You can securely deploy an AFI on one or more FPGA-accelerated instances. For more information, see the AWS FPGA Hardware Development Kit. - */ - createFpgaImage(params: EC2.Types.CreateFpgaImageRequest, callback?: (err: AWSError, data: EC2.Types.CreateFpgaImageResult) => void): Request; - /** - * Creates an Amazon FPGA Image (AFI) from the specified design checkpoint (DCP). The create operation is asynchronous. To verify that the AFI is ready for use, check the output logs. An AFI contains the FPGA bitstream that is ready to download to an FPGA. You can securely deploy an AFI on one or more FPGA-accelerated instances. For more information, see the AWS FPGA Hardware Development Kit. - */ - createFpgaImage(callback?: (err: AWSError, data: EC2.Types.CreateFpgaImageResult) => void): Request; - /** - * Creates an Amazon EBS-backed AMI from an Amazon EBS-backed instance that is either running or stopped. If you customized your instance with instance store volumes or EBS volumes in addition to the root device volume, the new AMI contains block device mapping information for those volumes. When you launch an instance from this new AMI, the instance automatically launches with those additional volumes. For more information, see Creating Amazon EBS-Backed Linux AMIs in the Amazon Elastic Compute Cloud User Guide. - */ - createImage(params: EC2.Types.CreateImageRequest, callback?: (err: AWSError, data: EC2.Types.CreateImageResult) => void): Request; - /** - * Creates an Amazon EBS-backed AMI from an Amazon EBS-backed instance that is either running or stopped. If you customized your instance with instance store volumes or EBS volumes in addition to the root device volume, the new AMI contains block device mapping information for those volumes. When you launch an instance from this new AMI, the instance automatically launches with those additional volumes. For more information, see Creating Amazon EBS-Backed Linux AMIs in the Amazon Elastic Compute Cloud User Guide. - */ - createImage(callback?: (err: AWSError, data: EC2.Types.CreateImageResult) => void): Request; - /** - * Exports a running or stopped instance to an S3 bucket. For information about the supported operating systems, image formats, and known limitations for the types of instances you can export, see Exporting an Instance as a VM Using VM Import/Export in the VM Import/Export User Guide. - */ - createInstanceExportTask(params: EC2.Types.CreateInstanceExportTaskRequest, callback?: (err: AWSError, data: EC2.Types.CreateInstanceExportTaskResult) => void): Request; - /** - * Exports a running or stopped instance to an S3 bucket. For information about the supported operating systems, image formats, and known limitations for the types of instances you can export, see Exporting an Instance as a VM Using VM Import/Export in the VM Import/Export User Guide. - */ - createInstanceExportTask(callback?: (err: AWSError, data: EC2.Types.CreateInstanceExportTaskResult) => void): Request; - /** - * Creates an Internet gateway for use with a VPC. After creating the Internet gateway, you attach it to a VPC using AttachInternetGateway. For more information about your VPC and Internet gateway, see the Amazon Virtual Private Cloud User Guide. - */ - createInternetGateway(params: EC2.Types.CreateInternetGatewayRequest, callback?: (err: AWSError, data: EC2.Types.CreateInternetGatewayResult) => void): Request; - /** - * Creates an Internet gateway for use with a VPC. After creating the Internet gateway, you attach it to a VPC using AttachInternetGateway. For more information about your VPC and Internet gateway, see the Amazon Virtual Private Cloud User Guide. - */ - createInternetGateway(callback?: (err: AWSError, data: EC2.Types.CreateInternetGatewayResult) => void): Request; - /** - * Creates a 2048-bit RSA key pair with the specified name. Amazon EC2 stores the public key and displays the private key for you to save to a file. The private key is returned as an unencrypted PEM encoded PKCS#8 private key. If a key with the specified name already exists, Amazon EC2 returns an error. You can have up to five thousand key pairs per region. The key pair returned to you is available only in the region in which you create it. To create a key pair that is available in all regions, use ImportKeyPair. For more information about key pairs, see Key Pairs in the Amazon Elastic Compute Cloud User Guide. - */ - createKeyPair(params: EC2.Types.CreateKeyPairRequest, callback?: (err: AWSError, data: EC2.Types.KeyPair) => void): Request; - /** - * Creates a 2048-bit RSA key pair with the specified name. Amazon EC2 stores the public key and displays the private key for you to save to a file. The private key is returned as an unencrypted PEM encoded PKCS#8 private key. If a key with the specified name already exists, Amazon EC2 returns an error. You can have up to five thousand key pairs per region. The key pair returned to you is available only in the region in which you create it. To create a key pair that is available in all regions, use ImportKeyPair. For more information about key pairs, see Key Pairs in the Amazon Elastic Compute Cloud User Guide. - */ - createKeyPair(callback?: (err: AWSError, data: EC2.Types.KeyPair) => void): Request; - /** - * Creates a NAT gateway in the specified subnet. A NAT gateway can be used to enable instances in a private subnet to connect to the Internet. This action creates a network interface in the specified subnet with a private IP address from the IP address range of the subnet. For more information, see NAT Gateways in the Amazon Virtual Private Cloud User Guide. - */ - createNatGateway(params: EC2.Types.CreateNatGatewayRequest, callback?: (err: AWSError, data: EC2.Types.CreateNatGatewayResult) => void): Request; - /** - * Creates a NAT gateway in the specified subnet. A NAT gateway can be used to enable instances in a private subnet to connect to the Internet. This action creates a network interface in the specified subnet with a private IP address from the IP address range of the subnet. For more information, see NAT Gateways in the Amazon Virtual Private Cloud User Guide. - */ - createNatGateway(callback?: (err: AWSError, data: EC2.Types.CreateNatGatewayResult) => void): Request; - /** - * Creates a network ACL in a VPC. Network ACLs provide an optional layer of security (in addition to security groups) for the instances in your VPC. For more information about network ACLs, see Network ACLs in the Amazon Virtual Private Cloud User Guide. - */ - createNetworkAcl(params: EC2.Types.CreateNetworkAclRequest, callback?: (err: AWSError, data: EC2.Types.CreateNetworkAclResult) => void): Request; - /** - * Creates a network ACL in a VPC. Network ACLs provide an optional layer of security (in addition to security groups) for the instances in your VPC. For more information about network ACLs, see Network ACLs in the Amazon Virtual Private Cloud User Guide. - */ - createNetworkAcl(callback?: (err: AWSError, data: EC2.Types.CreateNetworkAclResult) => void): Request; - /** - * Creates an entry (a rule) in a network ACL with the specified rule number. Each network ACL has a set of numbered ingress rules and a separate set of numbered egress rules. When determining whether a packet should be allowed in or out of a subnet associated with the ACL, we process the entries in the ACL according to the rule numbers, in ascending order. Each network ACL has a set of ingress rules and a separate set of egress rules. We recommend that you leave room between the rule numbers (for example, 100, 110, 120, ...), and not number them one right after the other (for example, 101, 102, 103, ...). This makes it easier to add a rule between existing ones without having to renumber the rules. After you add an entry, you can't modify it; you must either replace it, or create an entry and delete the old one. For more information about network ACLs, see Network ACLs in the Amazon Virtual Private Cloud User Guide. - */ - createNetworkAclEntry(params: EC2.Types.CreateNetworkAclEntryRequest, callback?: (err: AWSError, data: {}) => void): Request<{}, AWSError>; - /** - * Creates an entry (a rule) in a network ACL with the specified rule number. Each network ACL has a set of numbered ingress rules and a separate set of numbered egress rules. When determining whether a packet should be allowed in or out of a subnet associated with the ACL, we process the entries in the ACL according to the rule numbers, in ascending order. Each network ACL has a set of ingress rules and a separate set of egress rules. We recommend that you leave room between the rule numbers (for example, 100, 110, 120, ...), and not number them one right after the other (for example, 101, 102, 103, ...). This makes it easier to add a rule between existing ones without having to renumber the rules. After you add an entry, you can't modify it; you must either replace it, or create an entry and delete the old one. For more information about network ACLs, see Network ACLs in the Amazon Virtual Private Cloud User Guide. - */ - createNetworkAclEntry(callback?: (err: AWSError, data: {}) => void): Request<{}, AWSError>; - /** - * Creates a network interface in the specified subnet. For more information about network interfaces, see Elastic Network Interfaces in the Amazon Virtual Private Cloud User Guide. - */ - createNetworkInterface(params: EC2.Types.CreateNetworkInterfaceRequest, callback?: (err: AWSError, data: EC2.Types.CreateNetworkInterfaceResult) => void): Request; - /** - * Creates a network interface in the specified subnet. For more information about network interfaces, see Elastic Network Interfaces in the Amazon Virtual Private Cloud User Guide. - */ - createNetworkInterface(callback?: (err: AWSError, data: EC2.Types.CreateNetworkInterfaceResult) => void): Request; - /** - * Grants an AWS authorized partner account permission to attach the specified network interface to an instance in their account. You can grant permission to a single AWS account only, and only one account at a time. - */ - createNetworkInterfacePermission(params: EC2.Types.CreateNetworkInterfacePermissionRequest, callback?: (err: AWSError, data: EC2.Types.CreateNetworkInterfacePermissionResult) => void): Request; - /** - * Grants an AWS authorized partner account permission to attach the specified network interface to an instance in their account. You can grant permission to a single AWS account only, and only one account at a time. - */ - createNetworkInterfacePermission(callback?: (err: AWSError, data: EC2.Types.CreateNetworkInterfacePermissionResult) => void): Request; - /** - * Creates a placement group that you launch cluster instances into. Give the group a name that's unique within the scope of your account. For more information about placement groups and cluster instances, see Cluster Instances in the Amazon Elastic Compute Cloud User Guide. - */ - createPlacementGroup(params: EC2.Types.CreatePlacementGroupRequest, callback?: (err: AWSError, data: {}) => void): Request<{}, AWSError>; - /** - * Creates a placement group that you launch cluster instances into. Give the group a name that's unique within the scope of your account. For more information about placement groups and cluster instances, see Cluster Instances in the Amazon Elastic Compute Cloud User Guide. - */ - createPlacementGroup(callback?: (err: AWSError, data: {}) => void): Request<{}, AWSError>; - /** - * Creates a listing for Amazon EC2 Standard Reserved Instances to be sold in the Reserved Instance Marketplace. You can submit one Standard Reserved Instance listing at a time. To get a list of your Standard Reserved Instances, you can use the DescribeReservedInstances operation. Only Standard Reserved Instances with a capacity reservation can be sold in the Reserved Instance Marketplace. Convertible Reserved Instances and Standard Reserved Instances with a regional benefit cannot be sold. The Reserved Instance Marketplace matches sellers who want to resell Standard Reserved Instance capacity that they no longer need with buyers who want to purchase additional capacity. Reserved Instances bought and sold through the Reserved Instance Marketplace work like any other Reserved Instances. To sell your Standard Reserved Instances, you must first register as a seller in the Reserved Instance Marketplace. After completing the registration process, you can create a Reserved Instance Marketplace listing of some or all of your Standard Reserved Instances, and specify the upfront price to receive for them. Your Standard Reserved Instance listings then become available for purchase. To view the details of your Standard Reserved Instance listing, you can use the DescribeReservedInstancesListings operation. For more information, see Reserved Instance Marketplace in the Amazon Elastic Compute Cloud User Guide. - */ - createReservedInstancesListing(params: EC2.Types.CreateReservedInstancesListingRequest, callback?: (err: AWSError, data: EC2.Types.CreateReservedInstancesListingResult) => void): Request; - /** - * Creates a listing for Amazon EC2 Standard Reserved Instances to be sold in the Reserved Instance Marketplace. You can submit one Standard Reserved Instance listing at a time. To get a list of your Standard Reserved Instances, you can use the DescribeReservedInstances operation. Only Standard Reserved Instances with a capacity reservation can be sold in the Reserved Instance Marketplace. Convertible Reserved Instances and Standard Reserved Instances with a regional benefit cannot be sold. The Reserved Instance Marketplace matches sellers who want to resell Standard Reserved Instance capacity that they no longer need with buyers who want to purchase additional capacity. Reserved Instances bought and sold through the Reserved Instance Marketplace work like any other Reserved Instances. To sell your Standard Reserved Instances, you must first register as a seller in the Reserved Instance Marketplace. After completing the registration process, you can create a Reserved Instance Marketplace listing of some or all of your Standard Reserved Instances, and specify the upfront price to receive for them. Your Standard Reserved Instance listings then become available for purchase. To view the details of your Standard Reserved Instance listing, you can use the DescribeReservedInstancesListings operation. For more information, see Reserved Instance Marketplace in the Amazon Elastic Compute Cloud User Guide. - */ - createReservedInstancesListing(callback?: (err: AWSError, data: EC2.Types.CreateReservedInstancesListingResult) => void): Request; - /** - * Creates a route in a route table within a VPC. You must specify one of the following targets: Internet gateway or virtual private gateway, NAT instance, NAT gateway, VPC peering connection, network interface, or egress-only Internet gateway. When determining how to route traffic, we use the route with the most specific match. For example, traffic is destined for the IPv4 address 192.0.2.3, and the route table includes the following two IPv4 routes: 192.0.2.0/24 (goes to some target A) 192.0.2.0/28 (goes to some target B) Both routes apply to the traffic destined for 192.0.2.3. However, the second route in the list covers a smaller number of IP addresses and is therefore more specific, so we use that route to determine where to target the traffic. For more information about route tables, see Route Tables in the Amazon Virtual Private Cloud User Guide. - */ - createRoute(params: EC2.Types.CreateRouteRequest, callback?: (err: AWSError, data: EC2.Types.CreateRouteResult) => void): Request; - /** - * Creates a route in a route table within a VPC. You must specify one of the following targets: Internet gateway or virtual private gateway, NAT instance, NAT gateway, VPC peering connection, network interface, or egress-only Internet gateway. When determining how to route traffic, we use the route with the most specific match. For example, traffic is destined for the IPv4 address 192.0.2.3, and the route table includes the following two IPv4 routes: 192.0.2.0/24 (goes to some target A) 192.0.2.0/28 (goes to some target B) Both routes apply to the traffic destined for 192.0.2.3. However, the second route in the list covers a smaller number of IP addresses and is therefore more specific, so we use that route to determine where to target the traffic. For more information about route tables, see Route Tables in the Amazon Virtual Private Cloud User Guide. - */ - createRoute(callback?: (err: AWSError, data: EC2.Types.CreateRouteResult) => void): Request; - /** - * Creates a route table for the specified VPC. After you create a route table, you can add routes and associate the table with a subnet. For more information about route tables, see Route Tables in the Amazon Virtual Private Cloud User Guide. - */ - createRouteTable(params: EC2.Types.CreateRouteTableRequest, callback?: (err: AWSError, data: EC2.Types.CreateRouteTableResult) => void): Request; - /** - * Creates a route table for the specified VPC. After you create a route table, you can add routes and associate the table with a subnet. For more information about route tables, see Route Tables in the Amazon Virtual Private Cloud User Guide. - */ - createRouteTable(callback?: (err: AWSError, data: EC2.Types.CreateRouteTableResult) => void): Request; - /** - * Creates a security group. A security group is for use with instances either in the EC2-Classic platform or in a specific VPC. For more information, see Amazon EC2 Security Groups in the Amazon Elastic Compute Cloud User Guide and Security Groups for Your VPC in the Amazon Virtual Private Cloud User Guide. EC2-Classic: You can have up to 500 security groups. EC2-VPC: You can create up to 500 security groups per VPC. When you create a security group, you specify a friendly name of your choice. You can have a security group for use in EC2-Classic with the same name as a security group for use in a VPC. However, you can't have two security groups for use in EC2-Classic with the same name or two security groups for use in a VPC with the same name. You have a default security group for use in EC2-Classic and a default security group for use in your VPC. If you don't specify a security group when you launch an instance, the instance is launched into the appropriate default security group. A default security group includes a default rule that grants instances unrestricted network access to each other. You can add or remove rules from your security groups using AuthorizeSecurityGroupIngress, AuthorizeSecurityGroupEgress, RevokeSecurityGroupIngress, and RevokeSecurityGroupEgress. - */ - createSecurityGroup(params: EC2.Types.CreateSecurityGroupRequest, callback?: (err: AWSError, data: EC2.Types.CreateSecurityGroupResult) => void): Request; - /** - * Creates a security group. A security group is for use with instances either in the EC2-Classic platform or in a specific VPC. For more information, see Amazon EC2 Security Groups in the Amazon Elastic Compute Cloud User Guide and Security Groups for Your VPC in the Amazon Virtual Private Cloud User Guide. EC2-Classic: You can have up to 500 security groups. EC2-VPC: You can create up to 500 security groups per VPC. When you create a security group, you specify a friendly name of your choice. You can have a security group for use in EC2-Classic with the same name as a security group for use in a VPC. However, you can't have two security groups for use in EC2-Classic with the same name or two security groups for use in a VPC with the same name. You have a default security group for use in EC2-Classic and a default security group for use in your VPC. If you don't specify a security group when you launch an instance, the instance is launched into the appropriate default security group. A default security group includes a default rule that grants instances unrestricted network access to each other. You can add or remove rules from your security groups using AuthorizeSecurityGroupIngress, AuthorizeSecurityGroupEgress, RevokeSecurityGroupIngress, and RevokeSecurityGroupEgress. - */ - createSecurityGroup(callback?: (err: AWSError, data: EC2.Types.CreateSecurityGroupResult) => void): Request; - /** - * Creates a snapshot of an EBS volume and stores it in Amazon S3. You can use snapshots for backups, to make copies of EBS volumes, and to save data before shutting down an instance. When a snapshot is created, any AWS Marketplace product codes that are associated with the source volume are propagated to the snapshot. You can take a snapshot of an attached volume that is in use. However, snapshots only capture data that has been written to your EBS volume at the time the snapshot command is issued; this may exclude any data that has been cached by any applications or the operating system. If you can pause any file systems on the volume long enough to take a snapshot, your snapshot should be complete. However, if you cannot pause all file writes to the volume, you should unmount the volume from within the instance, issue the snapshot command, and then remount the volume to ensure a consistent and complete snapshot. You may remount and use your volume while the snapshot status is pending. To create a snapshot for EBS volumes that serve as root devices, you should stop the instance before taking the snapshot. Snapshots that are taken from encrypted volumes are automatically encrypted. Volumes that are created from encrypted snapshots are also automatically encrypted. Your encrypted volumes and any associated snapshots always remain protected. For more information, see Amazon Elastic Block Store and Amazon EBS Encryption in the Amazon Elastic Compute Cloud User Guide. - */ - createSnapshot(params: EC2.Types.CreateSnapshotRequest, callback?: (err: AWSError, data: EC2.Types.Snapshot) => void): Request; - /** - * Creates a snapshot of an EBS volume and stores it in Amazon S3. You can use snapshots for backups, to make copies of EBS volumes, and to save data before shutting down an instance. When a snapshot is created, any AWS Marketplace product codes that are associated with the source volume are propagated to the snapshot. You can take a snapshot of an attached volume that is in use. However, snapshots only capture data that has been written to your EBS volume at the time the snapshot command is issued; this may exclude any data that has been cached by any applications or the operating system. If you can pause any file systems on the volume long enough to take a snapshot, your snapshot should be complete. However, if you cannot pause all file writes to the volume, you should unmount the volume from within the instance, issue the snapshot command, and then remount the volume to ensure a consistent and complete snapshot. You may remount and use your volume while the snapshot status is pending. To create a snapshot for EBS volumes that serve as root devices, you should stop the instance before taking the snapshot. Snapshots that are taken from encrypted volumes are automatically encrypted. Volumes that are created from encrypted snapshots are also automatically encrypted. Your encrypted volumes and any associated snapshots always remain protected. For more information, see Amazon Elastic Block Store and Amazon EBS Encryption in the Amazon Elastic Compute Cloud User Guide. - */ - createSnapshot(callback?: (err: AWSError, data: EC2.Types.Snapshot) => void): Request; - /** - * Creates a data feed for Spot instances, enabling you to view Spot instance usage logs. You can create one data feed per AWS account. For more information, see Spot Instance Data Feed in the Amazon Elastic Compute Cloud User Guide. - */ - createSpotDatafeedSubscription(params: EC2.Types.CreateSpotDatafeedSubscriptionRequest, callback?: (err: AWSError, data: EC2.Types.CreateSpotDatafeedSubscriptionResult) => void): Request; - /** - * Creates a data feed for Spot instances, enabling you to view Spot instance usage logs. You can create one data feed per AWS account. For more information, see Spot Instance Data Feed in the Amazon Elastic Compute Cloud User Guide. - */ - createSpotDatafeedSubscription(callback?: (err: AWSError, data: EC2.Types.CreateSpotDatafeedSubscriptionResult) => void): Request; - /** - * Creates a subnet in an existing VPC. When you create each subnet, you provide the VPC ID and the IPv4 CIDR block you want for the subnet. After you create a subnet, you can't change its CIDR block. The size of the subnet's IPv4 CIDR block can be the same as a VPC's IPv4 CIDR block, or a subset of a VPC's IPv4 CIDR block. If you create more than one subnet in a VPC, the subnets' CIDR blocks must not overlap. The smallest IPv4 subnet (and VPC) you can create uses a /28 netmask (16 IPv4 addresses), and the largest uses a /16 netmask (65,536 IPv4 addresses). If you've associated an IPv6 CIDR block with your VPC, you can create a subnet with an IPv6 CIDR block that uses a /64 prefix length. AWS reserves both the first four and the last IPv4 address in each subnet's CIDR block. They're not available for use. If you add more than one subnet to a VPC, they're set up in a star topology with a logical router in the middle. If you launch an instance in a VPC using an Amazon EBS-backed AMI, the IP address doesn't change if you stop and restart the instance (unlike a similar instance launched outside a VPC, which gets a new IP address when restarted). It's therefore possible to have a subnet with no running instances (they're all stopped), but no remaining IP addresses available. For more information about subnets, see Your VPC and Subnets in the Amazon Virtual Private Cloud User Guide. - */ - createSubnet(params: EC2.Types.CreateSubnetRequest, callback?: (err: AWSError, data: EC2.Types.CreateSubnetResult) => void): Request; - /** - * Creates a subnet in an existing VPC. When you create each subnet, you provide the VPC ID and the IPv4 CIDR block you want for the subnet. After you create a subnet, you can't change its CIDR block. The size of the subnet's IPv4 CIDR block can be the same as a VPC's IPv4 CIDR block, or a subset of a VPC's IPv4 CIDR block. If you create more than one subnet in a VPC, the subnets' CIDR blocks must not overlap. The smallest IPv4 subnet (and VPC) you can create uses a /28 netmask (16 IPv4 addresses), and the largest uses a /16 netmask (65,536 IPv4 addresses). If you've associated an IPv6 CIDR block with your VPC, you can create a subnet with an IPv6 CIDR block that uses a /64 prefix length. AWS reserves both the first four and the last IPv4 address in each subnet's CIDR block. They're not available for use. If you add more than one subnet to a VPC, they're set up in a star topology with a logical router in the middle. If you launch an instance in a VPC using an Amazon EBS-backed AMI, the IP address doesn't change if you stop and restart the instance (unlike a similar instance launched outside a VPC, which gets a new IP address when restarted). It's therefore possible to have a subnet with no running instances (they're all stopped), but no remaining IP addresses available. For more information about subnets, see Your VPC and Subnets in the Amazon Virtual Private Cloud User Guide. - */ - createSubnet(callback?: (err: AWSError, data: EC2.Types.CreateSubnetResult) => void): Request; - /** - * Adds or overwrites one or more tags for the specified Amazon EC2 resource or resources. Each resource can have a maximum of 50 tags. Each tag consists of a key and optional value. Tag keys must be unique per resource. For more information about tags, see Tagging Your Resources in the Amazon Elastic Compute Cloud User Guide. For more information about creating IAM policies that control users' access to resources based on tags, see Supported Resource-Level Permissions for Amazon EC2 API Actions in the Amazon Elastic Compute Cloud User Guide. - */ - createTags(params: EC2.Types.CreateTagsRequest, callback?: (err: AWSError, data: {}) => void): Request<{}, AWSError>; - /** - * Adds or overwrites one or more tags for the specified Amazon EC2 resource or resources. Each resource can have a maximum of 50 tags. Each tag consists of a key and optional value. Tag keys must be unique per resource. For more information about tags, see Tagging Your Resources in the Amazon Elastic Compute Cloud User Guide. For more information about creating IAM policies that control users' access to resources based on tags, see Supported Resource-Level Permissions for Amazon EC2 API Actions in the Amazon Elastic Compute Cloud User Guide. - */ - createTags(callback?: (err: AWSError, data: {}) => void): Request<{}, AWSError>; - /** - * Creates an EBS volume that can be attached to an instance in the same Availability Zone. The volume is created in the regional endpoint that you send the HTTP request to. For more information see Regions and Endpoints. You can create a new empty volume or restore a volume from an EBS snapshot. Any AWS Marketplace product codes from the snapshot are propagated to the volume. You can create encrypted volumes with the Encrypted parameter. Encrypted volumes may only be attached to instances that support Amazon EBS encryption. Volumes that are created from encrypted snapshots are also automatically encrypted. For more information, see Amazon EBS Encryption in the Amazon Elastic Compute Cloud User Guide. You can tag your volumes during creation. For more information, see Tagging Your Amazon EC2 Resources. For more information, see Creating an Amazon EBS Volume in the Amazon Elastic Compute Cloud User Guide. - */ - createVolume(params: EC2.Types.CreateVolumeRequest, callback?: (err: AWSError, data: EC2.Types.Volume) => void): Request; - /** - * Creates an EBS volume that can be attached to an instance in the same Availability Zone. The volume is created in the regional endpoint that you send the HTTP request to. For more information see Regions and Endpoints. You can create a new empty volume or restore a volume from an EBS snapshot. Any AWS Marketplace product codes from the snapshot are propagated to the volume. You can create encrypted volumes with the Encrypted parameter. Encrypted volumes may only be attached to instances that support Amazon EBS encryption. Volumes that are created from encrypted snapshots are also automatically encrypted. For more information, see Amazon EBS Encryption in the Amazon Elastic Compute Cloud User Guide. You can tag your volumes during creation. For more information, see Tagging Your Amazon EC2 Resources. For more information, see Creating an Amazon EBS Volume in the Amazon Elastic Compute Cloud User Guide. - */ - createVolume(callback?: (err: AWSError, data: EC2.Types.Volume) => void): Request; - /** - * Creates a VPC with the specified IPv4 CIDR block. The smallest VPC you can create uses a /28 netmask (16 IPv4 addresses), and the largest uses a /16 netmask (65,536 IPv4 addresses). To help you decide how big to make your VPC, see Your VPC and Subnets in the Amazon Virtual Private Cloud User Guide. You can optionally request an Amazon-provided IPv6 CIDR block for the VPC. The IPv6 CIDR block uses a /56 prefix length, and is allocated from Amazon's pool of IPv6 addresses. You cannot choose the IPv6 range for your VPC. By default, each instance you launch in the VPC has the default DHCP options, which includes only a default DNS server that we provide (AmazonProvidedDNS). For more information about DHCP options, see DHCP Options Sets in the Amazon Virtual Private Cloud User Guide. You can specify the instance tenancy value for the VPC when you create it. You can't change this value for the VPC after you create it. For more information, see Dedicated Instances in the Amazon Elastic Compute Cloud User Guide. - */ - createVpc(params: EC2.Types.CreateVpcRequest, callback?: (err: AWSError, data: EC2.Types.CreateVpcResult) => void): Request; - /** - * Creates a VPC with the specified IPv4 CIDR block. The smallest VPC you can create uses a /28 netmask (16 IPv4 addresses), and the largest uses a /16 netmask (65,536 IPv4 addresses). To help you decide how big to make your VPC, see Your VPC and Subnets in the Amazon Virtual Private Cloud User Guide. You can optionally request an Amazon-provided IPv6 CIDR block for the VPC. The IPv6 CIDR block uses a /56 prefix length, and is allocated from Amazon's pool of IPv6 addresses. You cannot choose the IPv6 range for your VPC. By default, each instance you launch in the VPC has the default DHCP options, which includes only a default DNS server that we provide (AmazonProvidedDNS). For more information about DHCP options, see DHCP Options Sets in the Amazon Virtual Private Cloud User Guide. You can specify the instance tenancy value for the VPC when you create it. You can't change this value for the VPC after you create it. For more information, see Dedicated Instances in the Amazon Elastic Compute Cloud User Guide. - */ - createVpc(callback?: (err: AWSError, data: EC2.Types.CreateVpcResult) => void): Request; - /** - * Creates a VPC endpoint for a specified AWS service. An endpoint enables you to create a private connection between your VPC and another AWS service in your account. You can specify an endpoint policy to attach to the endpoint that will control access to the service from your VPC. You can also specify the VPC route tables that use the endpoint. Use DescribeVpcEndpointServices to get a list of supported AWS services. - */ - createVpcEndpoint(params: EC2.Types.CreateVpcEndpointRequest, callback?: (err: AWSError, data: EC2.Types.CreateVpcEndpointResult) => void): Request; - /** - * Creates a VPC endpoint for a specified AWS service. An endpoint enables you to create a private connection between your VPC and another AWS service in your account. You can specify an endpoint policy to attach to the endpoint that will control access to the service from your VPC. You can also specify the VPC route tables that use the endpoint. Use DescribeVpcEndpointServices to get a list of supported AWS services. - */ - createVpcEndpoint(callback?: (err: AWSError, data: EC2.Types.CreateVpcEndpointResult) => void): Request; - /** - * Requests a VPC peering connection between two VPCs: a requester VPC that you own and a peer VPC with which to create the connection. The peer VPC can belong to another AWS account. The requester VPC and peer VPC cannot have overlapping CIDR blocks. The owner of the peer VPC must accept the peering request to activate the peering connection. The VPC peering connection request expires after 7 days, after which it cannot be accepted or rejected. If you try to create a VPC peering connection between VPCs that have overlapping CIDR blocks, the VPC peering connection status goes to failed. - */ - createVpcPeeringConnection(params: EC2.Types.CreateVpcPeeringConnectionRequest, callback?: (err: AWSError, data: EC2.Types.CreateVpcPeeringConnectionResult) => void): Request; - /** - * Requests a VPC peering connection between two VPCs: a requester VPC that you own and a peer VPC with which to create the connection. The peer VPC can belong to another AWS account. The requester VPC and peer VPC cannot have overlapping CIDR blocks. The owner of the peer VPC must accept the peering request to activate the peering connection. The VPC peering connection request expires after 7 days, after which it cannot be accepted or rejected. If you try to create a VPC peering connection between VPCs that have overlapping CIDR blocks, the VPC peering connection status goes to failed. - */ - createVpcPeeringConnection(callback?: (err: AWSError, data: EC2.Types.CreateVpcPeeringConnectionResult) => void): Request; - /** - * Creates a VPN connection between an existing virtual private gateway and a VPN customer gateway. The only supported connection type is ipsec.1. The response includes information that you need to give to your network administrator to configure your customer gateway. We strongly recommend that you use HTTPS when calling this operation because the response contains sensitive cryptographic information for configuring your customer gateway. If you decide to shut down your VPN connection for any reason and later create a new VPN connection, you must reconfigure your customer gateway with the new information returned from this call. This is an idempotent operation. If you perform the operation more than once, Amazon EC2 doesn't return an error. For more information, see AWS Managed VPN Connections in the Amazon Virtual Private Cloud User Guide. - */ - createVpnConnection(params: EC2.Types.CreateVpnConnectionRequest, callback?: (err: AWSError, data: EC2.Types.CreateVpnConnectionResult) => void): Request; - /** - * Creates a VPN connection between an existing virtual private gateway and a VPN customer gateway. The only supported connection type is ipsec.1. The response includes information that you need to give to your network administrator to configure your customer gateway. We strongly recommend that you use HTTPS when calling this operation because the response contains sensitive cryptographic information for configuring your customer gateway. If you decide to shut down your VPN connection for any reason and later create a new VPN connection, you must reconfigure your customer gateway with the new information returned from this call. This is an idempotent operation. If you perform the operation more than once, Amazon EC2 doesn't return an error. For more information, see AWS Managed VPN Connections in the Amazon Virtual Private Cloud User Guide. - */ - createVpnConnection(callback?: (err: AWSError, data: EC2.Types.CreateVpnConnectionResult) => void): Request; - /** - * Creates a static route associated with a VPN connection between an existing virtual private gateway and a VPN customer gateway. The static route allows traffic to be routed from the virtual private gateway to the VPN customer gateway. For more information about VPN connections, see AWS Managed VPN Connections in the Amazon Virtual Private Cloud User Guide. - */ - createVpnConnectionRoute(params: EC2.Types.CreateVpnConnectionRouteRequest, callback?: (err: AWSError, data: {}) => void): Request<{}, AWSError>; - /** - * Creates a static route associated with a VPN connection between an existing virtual private gateway and a VPN customer gateway. The static route allows traffic to be routed from the virtual private gateway to the VPN customer gateway. For more information about VPN connections, see AWS Managed VPN Connections in the Amazon Virtual Private Cloud User Guide. - */ - createVpnConnectionRoute(callback?: (err: AWSError, data: {}) => void): Request<{}, AWSError>; - /** - * Creates a virtual private gateway. A virtual private gateway is the endpoint on the VPC side of your VPN connection. You can create a virtual private gateway before creating the VPC itself. For more information about virtual private gateways, see AWS Managed VPN Connections in the Amazon Virtual Private Cloud User Guide. - */ - createVpnGateway(params: EC2.Types.CreateVpnGatewayRequest, callback?: (err: AWSError, data: EC2.Types.CreateVpnGatewayResult) => void): Request; - /** - * Creates a virtual private gateway. A virtual private gateway is the endpoint on the VPC side of your VPN connection. You can create a virtual private gateway before creating the VPC itself. For more information about virtual private gateways, see AWS Managed VPN Connections in the Amazon Virtual Private Cloud User Guide. - */ - createVpnGateway(callback?: (err: AWSError, data: EC2.Types.CreateVpnGatewayResult) => void): Request; - /** - * Deletes the specified customer gateway. You must delete the VPN connection before you can delete the customer gateway. - */ - deleteCustomerGateway(params: EC2.Types.DeleteCustomerGatewayRequest, callback?: (err: AWSError, data: {}) => void): Request<{}, AWSError>; - /** - * Deletes the specified customer gateway. You must delete the VPN connection before you can delete the customer gateway. - */ - deleteCustomerGateway(callback?: (err: AWSError, data: {}) => void): Request<{}, AWSError>; - /** - * Deletes the specified set of DHCP options. You must disassociate the set of DHCP options before you can delete it. You can disassociate the set of DHCP options by associating either a new set of options or the default set of options with the VPC. - */ - deleteDhcpOptions(params: EC2.Types.DeleteDhcpOptionsRequest, callback?: (err: AWSError, data: {}) => void): Request<{}, AWSError>; - /** - * Deletes the specified set of DHCP options. You must disassociate the set of DHCP options before you can delete it. You can disassociate the set of DHCP options by associating either a new set of options or the default set of options with the VPC. - */ - deleteDhcpOptions(callback?: (err: AWSError, data: {}) => void): Request<{}, AWSError>; - /** - * Deletes an egress-only Internet gateway. - */ - deleteEgressOnlyInternetGateway(params: EC2.Types.DeleteEgressOnlyInternetGatewayRequest, callback?: (err: AWSError, data: EC2.Types.DeleteEgressOnlyInternetGatewayResult) => void): Request; - /** - * Deletes an egress-only Internet gateway. - */ - deleteEgressOnlyInternetGateway(callback?: (err: AWSError, data: EC2.Types.DeleteEgressOnlyInternetGatewayResult) => void): Request; - /** - * Deletes one or more flow logs. - */ - deleteFlowLogs(params: EC2.Types.DeleteFlowLogsRequest, callback?: (err: AWSError, data: EC2.Types.DeleteFlowLogsResult) => void): Request; - /** - * Deletes one or more flow logs. - */ - deleteFlowLogs(callback?: (err: AWSError, data: EC2.Types.DeleteFlowLogsResult) => void): Request; - /** - * Deletes the specified Amazon FPGA Image (AFI). - */ - deleteFpgaImage(params: EC2.Types.DeleteFpgaImageRequest, callback?: (err: AWSError, data: EC2.Types.DeleteFpgaImageResult) => void): Request; - /** - * Deletes the specified Amazon FPGA Image (AFI). - */ - deleteFpgaImage(callback?: (err: AWSError, data: EC2.Types.DeleteFpgaImageResult) => void): Request; - /** - * Deletes the specified Internet gateway. You must detach the Internet gateway from the VPC before you can delete it. - */ - deleteInternetGateway(params: EC2.Types.DeleteInternetGatewayRequest, callback?: (err: AWSError, data: {}) => void): Request<{}, AWSError>; - /** - * Deletes the specified Internet gateway. You must detach the Internet gateway from the VPC before you can delete it. - */ - deleteInternetGateway(callback?: (err: AWSError, data: {}) => void): Request<{}, AWSError>; - /** - * Deletes the specified key pair, by removing the public key from Amazon EC2. - */ - deleteKeyPair(params: EC2.Types.DeleteKeyPairRequest, callback?: (err: AWSError, data: {}) => void): Request<{}, AWSError>; - /** - * Deletes the specified key pair, by removing the public key from Amazon EC2. - */ - deleteKeyPair(callback?: (err: AWSError, data: {}) => void): Request<{}, AWSError>; - /** - * Deletes the specified NAT gateway. Deleting a NAT gateway disassociates its Elastic IP address, but does not release the address from your account. Deleting a NAT gateway does not delete any NAT gateway routes in your route tables. - */ - deleteNatGateway(params: EC2.Types.DeleteNatGatewayRequest, callback?: (err: AWSError, data: EC2.Types.DeleteNatGatewayResult) => void): Request; - /** - * Deletes the specified NAT gateway. Deleting a NAT gateway disassociates its Elastic IP address, but does not release the address from your account. Deleting a NAT gateway does not delete any NAT gateway routes in your route tables. - */ - deleteNatGateway(callback?: (err: AWSError, data: EC2.Types.DeleteNatGatewayResult) => void): Request; - /** - * Deletes the specified network ACL. You can't delete the ACL if it's associated with any subnets. You can't delete the default network ACL. - */ - deleteNetworkAcl(params: EC2.Types.DeleteNetworkAclRequest, callback?: (err: AWSError, data: {}) => void): Request<{}, AWSError>; - /** - * Deletes the specified network ACL. You can't delete the ACL if it's associated with any subnets. You can't delete the default network ACL. - */ - deleteNetworkAcl(callback?: (err: AWSError, data: {}) => void): Request<{}, AWSError>; - /** - * Deletes the specified ingress or egress entry (rule) from the specified network ACL. - */ - deleteNetworkAclEntry(params: EC2.Types.DeleteNetworkAclEntryRequest, callback?: (err: AWSError, data: {}) => void): Request<{}, AWSError>; - /** - * Deletes the specified ingress or egress entry (rule) from the specified network ACL. - */ - deleteNetworkAclEntry(callback?: (err: AWSError, data: {}) => void): Request<{}, AWSError>; - /** - * Deletes the specified network interface. You must detach the network interface before you can delete it. - */ - deleteNetworkInterface(params: EC2.Types.DeleteNetworkInterfaceRequest, callback?: (err: AWSError, data: {}) => void): Request<{}, AWSError>; - /** - * Deletes the specified network interface. You must detach the network interface before you can delete it. - */ - deleteNetworkInterface(callback?: (err: AWSError, data: {}) => void): Request<{}, AWSError>; - /** - * Deletes a permission for a network interface. By default, you cannot delete the permission if the account for which you're removing the permission has attached the network interface to an instance. However, you can force delete the permission, regardless of any attachment. - */ - deleteNetworkInterfacePermission(params: EC2.Types.DeleteNetworkInterfacePermissionRequest, callback?: (err: AWSError, data: EC2.Types.DeleteNetworkInterfacePermissionResult) => void): Request; - /** - * Deletes a permission for a network interface. By default, you cannot delete the permission if the account for which you're removing the permission has attached the network interface to an instance. However, you can force delete the permission, regardless of any attachment. - */ - deleteNetworkInterfacePermission(callback?: (err: AWSError, data: EC2.Types.DeleteNetworkInterfacePermissionResult) => void): Request; - /** - * Deletes the specified placement group. You must terminate all instances in the placement group before you can delete the placement group. For more information about placement groups and cluster instances, see Cluster Instances in the Amazon Elastic Compute Cloud User Guide. - */ - deletePlacementGroup(params: EC2.Types.DeletePlacementGroupRequest, callback?: (err: AWSError, data: {}) => void): Request<{}, AWSError>; - /** - * Deletes the specified placement group. You must terminate all instances in the placement group before you can delete the placement group. For more information about placement groups and cluster instances, see Cluster Instances in the Amazon Elastic Compute Cloud User Guide. - */ - deletePlacementGroup(callback?: (err: AWSError, data: {}) => void): Request<{}, AWSError>; - /** - * Deletes the specified route from the specified route table. - */ - deleteRoute(params: EC2.Types.DeleteRouteRequest, callback?: (err: AWSError, data: {}) => void): Request<{}, AWSError>; - /** - * Deletes the specified route from the specified route table. - */ - deleteRoute(callback?: (err: AWSError, data: {}) => void): Request<{}, AWSError>; - /** - * Deletes the specified route table. You must disassociate the route table from any subnets before you can delete it. You can't delete the main route table. - */ - deleteRouteTable(params: EC2.Types.DeleteRouteTableRequest, callback?: (err: AWSError, data: {}) => void): Request<{}, AWSError>; - /** - * Deletes the specified route table. You must disassociate the route table from any subnets before you can delete it. You can't delete the main route table. - */ - deleteRouteTable(callback?: (err: AWSError, data: {}) => void): Request<{}, AWSError>; - /** - * Deletes a security group. If you attempt to delete a security group that is associated with an instance, or is referenced by another security group, the operation fails with InvalidGroup.InUse in EC2-Classic or DependencyViolation in EC2-VPC. - */ - deleteSecurityGroup(params: EC2.Types.DeleteSecurityGroupRequest, callback?: (err: AWSError, data: {}) => void): Request<{}, AWSError>; - /** - * Deletes a security group. If you attempt to delete a security group that is associated with an instance, or is referenced by another security group, the operation fails with InvalidGroup.InUse in EC2-Classic or DependencyViolation in EC2-VPC. - */ - deleteSecurityGroup(callback?: (err: AWSError, data: {}) => void): Request<{}, AWSError>; - /** - * Deletes the specified snapshot. When you make periodic snapshots of a volume, the snapshots are incremental, and only the blocks on the device that have changed since your last snapshot are saved in the new snapshot. When you delete a snapshot, only the data not needed for any other snapshot is removed. So regardless of which prior snapshots have been deleted, all active snapshots will have access to all the information needed to restore the volume. You cannot delete a snapshot of the root device of an EBS volume used by a registered AMI. You must first de-register the AMI before you can delete the snapshot. For more information, see Deleting an Amazon EBS Snapshot in the Amazon Elastic Compute Cloud User Guide. - */ - deleteSnapshot(params: EC2.Types.DeleteSnapshotRequest, callback?: (err: AWSError, data: {}) => void): Request<{}, AWSError>; - /** - * Deletes the specified snapshot. When you make periodic snapshots of a volume, the snapshots are incremental, and only the blocks on the device that have changed since your last snapshot are saved in the new snapshot. When you delete a snapshot, only the data not needed for any other snapshot is removed. So regardless of which prior snapshots have been deleted, all active snapshots will have access to all the information needed to restore the volume. You cannot delete a snapshot of the root device of an EBS volume used by a registered AMI. You must first de-register the AMI before you can delete the snapshot. For more information, see Deleting an Amazon EBS Snapshot in the Amazon Elastic Compute Cloud User Guide. - */ - deleteSnapshot(callback?: (err: AWSError, data: {}) => void): Request<{}, AWSError>; - /** - * Deletes the data feed for Spot instances. - */ - deleteSpotDatafeedSubscription(params: EC2.Types.DeleteSpotDatafeedSubscriptionRequest, callback?: (err: AWSError, data: {}) => void): Request<{}, AWSError>; - /** - * Deletes the data feed for Spot instances. - */ - deleteSpotDatafeedSubscription(callback?: (err: AWSError, data: {}) => void): Request<{}, AWSError>; - /** - * Deletes the specified subnet. You must terminate all running instances in the subnet before you can delete the subnet. - */ - deleteSubnet(params: EC2.Types.DeleteSubnetRequest, callback?: (err: AWSError, data: {}) => void): Request<{}, AWSError>; - /** - * Deletes the specified subnet. You must terminate all running instances in the subnet before you can delete the subnet. - */ - deleteSubnet(callback?: (err: AWSError, data: {}) => void): Request<{}, AWSError>; - /** - * Deletes the specified set of tags from the specified set of resources. To list the current tags, use DescribeTags. For more information about tags, see Tagging Your Resources in the Amazon Elastic Compute Cloud User Guide. - */ - deleteTags(params: EC2.Types.DeleteTagsRequest, callback?: (err: AWSError, data: {}) => void): Request<{}, AWSError>; - /** - * Deletes the specified set of tags from the specified set of resources. To list the current tags, use DescribeTags. For more information about tags, see Tagging Your Resources in the Amazon Elastic Compute Cloud User Guide. - */ - deleteTags(callback?: (err: AWSError, data: {}) => void): Request<{}, AWSError>; - /** - * Deletes the specified EBS volume. The volume must be in the available state (not attached to an instance). The volume may remain in the deleting state for several minutes. For more information, see Deleting an Amazon EBS Volume in the Amazon Elastic Compute Cloud User Guide. - */ - deleteVolume(params: EC2.Types.DeleteVolumeRequest, callback?: (err: AWSError, data: {}) => void): Request<{}, AWSError>; - /** - * Deletes the specified EBS volume. The volume must be in the available state (not attached to an instance). The volume may remain in the deleting state for several minutes. For more information, see Deleting an Amazon EBS Volume in the Amazon Elastic Compute Cloud User Guide. - */ - deleteVolume(callback?: (err: AWSError, data: {}) => void): Request<{}, AWSError>; - /** - * Deletes the specified VPC. You must detach or delete all gateways and resources that are associated with the VPC before you can delete it. For example, you must terminate all instances running in the VPC, delete all security groups associated with the VPC (except the default one), delete all route tables associated with the VPC (except the default one), and so on. - */ - deleteVpc(params: EC2.Types.DeleteVpcRequest, callback?: (err: AWSError, data: {}) => void): Request<{}, AWSError>; - /** - * Deletes the specified VPC. You must detach or delete all gateways and resources that are associated with the VPC before you can delete it. For example, you must terminate all instances running in the VPC, delete all security groups associated with the VPC (except the default one), delete all route tables associated with the VPC (except the default one), and so on. - */ - deleteVpc(callback?: (err: AWSError, data: {}) => void): Request<{}, AWSError>; - /** - * Deletes one or more specified VPC endpoints. Deleting the endpoint also deletes the endpoint routes in the route tables that were associated with the endpoint. - */ - deleteVpcEndpoints(params: EC2.Types.DeleteVpcEndpointsRequest, callback?: (err: AWSError, data: EC2.Types.DeleteVpcEndpointsResult) => void): Request; - /** - * Deletes one or more specified VPC endpoints. Deleting the endpoint also deletes the endpoint routes in the route tables that were associated with the endpoint. - */ - deleteVpcEndpoints(callback?: (err: AWSError, data: EC2.Types.DeleteVpcEndpointsResult) => void): Request; - /** - * Deletes a VPC peering connection. Either the owner of the requester VPC or the owner of the peer VPC can delete the VPC peering connection if it's in the active state. The owner of the requester VPC can delete a VPC peering connection in the pending-acceptance state. - */ - deleteVpcPeeringConnection(params: EC2.Types.DeleteVpcPeeringConnectionRequest, callback?: (err: AWSError, data: EC2.Types.DeleteVpcPeeringConnectionResult) => void): Request; - /** - * Deletes a VPC peering connection. Either the owner of the requester VPC or the owner of the peer VPC can delete the VPC peering connection if it's in the active state. The owner of the requester VPC can delete a VPC peering connection in the pending-acceptance state. - */ - deleteVpcPeeringConnection(callback?: (err: AWSError, data: EC2.Types.DeleteVpcPeeringConnectionResult) => void): Request; - /** - * Deletes the specified VPN connection. If you're deleting the VPC and its associated components, we recommend that you detach the virtual private gateway from the VPC and delete the VPC before deleting the VPN connection. If you believe that the tunnel credentials for your VPN connection have been compromised, you can delete the VPN connection and create a new one that has new keys, without needing to delete the VPC or virtual private gateway. If you create a new VPN connection, you must reconfigure the customer gateway using the new configuration information returned with the new VPN connection ID. - */ - deleteVpnConnection(params: EC2.Types.DeleteVpnConnectionRequest, callback?: (err: AWSError, data: {}) => void): Request<{}, AWSError>; - /** - * Deletes the specified VPN connection. If you're deleting the VPC and its associated components, we recommend that you detach the virtual private gateway from the VPC and delete the VPC before deleting the VPN connection. If you believe that the tunnel credentials for your VPN connection have been compromised, you can delete the VPN connection and create a new one that has new keys, without needing to delete the VPC or virtual private gateway. If you create a new VPN connection, you must reconfigure the customer gateway using the new configuration information returned with the new VPN connection ID. - */ - deleteVpnConnection(callback?: (err: AWSError, data: {}) => void): Request<{}, AWSError>; - /** - * Deletes the specified static route associated with a VPN connection between an existing virtual private gateway and a VPN customer gateway. The static route allows traffic to be routed from the virtual private gateway to the VPN customer gateway. - */ - deleteVpnConnectionRoute(params: EC2.Types.DeleteVpnConnectionRouteRequest, callback?: (err: AWSError, data: {}) => void): Request<{}, AWSError>; - /** - * Deletes the specified static route associated with a VPN connection between an existing virtual private gateway and a VPN customer gateway. The static route allows traffic to be routed from the virtual private gateway to the VPN customer gateway. - */ - deleteVpnConnectionRoute(callback?: (err: AWSError, data: {}) => void): Request<{}, AWSError>; - /** - * Deletes the specified virtual private gateway. We recommend that before you delete a virtual private gateway, you detach it from the VPC and delete the VPN connection. Note that you don't need to delete the virtual private gateway if you plan to delete and recreate the VPN connection between your VPC and your network. - */ - deleteVpnGateway(params: EC2.Types.DeleteVpnGatewayRequest, callback?: (err: AWSError, data: {}) => void): Request<{}, AWSError>; - /** - * Deletes the specified virtual private gateway. We recommend that before you delete a virtual private gateway, you detach it from the VPC and delete the VPN connection. Note that you don't need to delete the virtual private gateway if you plan to delete and recreate the VPN connection between your VPC and your network. - */ - deleteVpnGateway(callback?: (err: AWSError, data: {}) => void): Request<{}, AWSError>; - /** - * Deregisters the specified AMI. After you deregister an AMI, it can't be used to launch new instances; however, it doesn't affect any instances that you've already launched from the AMI. You'll continue to incur usage costs for those instances until you terminate them. When you deregister an Amazon EBS-backed AMI, it doesn't affect the snapshot that was created for the root volume of the instance during the AMI creation process. When you deregister an instance store-backed AMI, it doesn't affect the files that you uploaded to Amazon S3 when you created the AMI. - */ - deregisterImage(params: EC2.Types.DeregisterImageRequest, callback?: (err: AWSError, data: {}) => void): Request<{}, AWSError>; - /** - * Deregisters the specified AMI. After you deregister an AMI, it can't be used to launch new instances; however, it doesn't affect any instances that you've already launched from the AMI. You'll continue to incur usage costs for those instances until you terminate them. When you deregister an Amazon EBS-backed AMI, it doesn't affect the snapshot that was created for the root volume of the instance during the AMI creation process. When you deregister an instance store-backed AMI, it doesn't affect the files that you uploaded to Amazon S3 when you created the AMI. - */ - deregisterImage(callback?: (err: AWSError, data: {}) => void): Request<{}, AWSError>; - /** - * Describes attributes of your AWS account. The following are the supported account attributes: supported-platforms: Indicates whether your account can launch instances into EC2-Classic and EC2-VPC, or only into EC2-VPC. default-vpc: The ID of the default VPC for your account, or none. max-instances: The maximum number of On-Demand instances that you can run. vpc-max-security-groups-per-interface: The maximum number of security groups that you can assign to a network interface. max-elastic-ips: The maximum number of Elastic IP addresses that you can allocate for use with EC2-Classic. vpc-max-elastic-ips: The maximum number of Elastic IP addresses that you can allocate for use with EC2-VPC. - */ - describeAccountAttributes(params: EC2.Types.DescribeAccountAttributesRequest, callback?: (err: AWSError, data: EC2.Types.DescribeAccountAttributesResult) => void): Request; - /** - * Describes attributes of your AWS account. The following are the supported account attributes: supported-platforms: Indicates whether your account can launch instances into EC2-Classic and EC2-VPC, or only into EC2-VPC. default-vpc: The ID of the default VPC for your account, or none. max-instances: The maximum number of On-Demand instances that you can run. vpc-max-security-groups-per-interface: The maximum number of security groups that you can assign to a network interface. max-elastic-ips: The maximum number of Elastic IP addresses that you can allocate for use with EC2-Classic. vpc-max-elastic-ips: The maximum number of Elastic IP addresses that you can allocate for use with EC2-VPC. - */ - describeAccountAttributes(callback?: (err: AWSError, data: EC2.Types.DescribeAccountAttributesResult) => void): Request; - /** - * Describes one or more of your Elastic IP addresses. An Elastic IP address is for use in either the EC2-Classic platform or in a VPC. For more information, see Elastic IP Addresses in the Amazon Elastic Compute Cloud User Guide. - */ - describeAddresses(params: EC2.Types.DescribeAddressesRequest, callback?: (err: AWSError, data: EC2.Types.DescribeAddressesResult) => void): Request; - /** - * Describes one or more of your Elastic IP addresses. An Elastic IP address is for use in either the EC2-Classic platform or in a VPC. For more information, see Elastic IP Addresses in the Amazon Elastic Compute Cloud User Guide. - */ - describeAddresses(callback?: (err: AWSError, data: EC2.Types.DescribeAddressesResult) => void): Request; - /** - * Describes one or more of the Availability Zones that are available to you. The results include zones only for the region you're currently using. If there is an event impacting an Availability Zone, you can use this request to view the state and any provided message for that Availability Zone. For more information, see Regions and Availability Zones in the Amazon Elastic Compute Cloud User Guide. - */ - describeAvailabilityZones(params: EC2.Types.DescribeAvailabilityZonesRequest, callback?: (err: AWSError, data: EC2.Types.DescribeAvailabilityZonesResult) => void): Request; - /** - * Describes one or more of the Availability Zones that are available to you. The results include zones only for the region you're currently using. If there is an event impacting an Availability Zone, you can use this request to view the state and any provided message for that Availability Zone. For more information, see Regions and Availability Zones in the Amazon Elastic Compute Cloud User Guide. - */ - describeAvailabilityZones(callback?: (err: AWSError, data: EC2.Types.DescribeAvailabilityZonesResult) => void): Request; - /** - * Describes one or more of your bundling tasks. Completed bundle tasks are listed for only a limited time. If your bundle task is no longer in the list, you can still register an AMI from it. Just use RegisterImage with the Amazon S3 bucket name and image manifest name you provided to the bundle task. - */ - describeBundleTasks(params: EC2.Types.DescribeBundleTasksRequest, callback?: (err: AWSError, data: EC2.Types.DescribeBundleTasksResult) => void): Request; - /** - * Describes one or more of your bundling tasks. Completed bundle tasks are listed for only a limited time. If your bundle task is no longer in the list, you can still register an AMI from it. Just use RegisterImage with the Amazon S3 bucket name and image manifest name you provided to the bundle task. - */ - describeBundleTasks(callback?: (err: AWSError, data: EC2.Types.DescribeBundleTasksResult) => void): Request; - /** - * Describes one or more of your linked EC2-Classic instances. This request only returns information about EC2-Classic instances linked to a VPC through ClassicLink; you cannot use this request to return information about other instances. - */ - describeClassicLinkInstances(params: EC2.Types.DescribeClassicLinkInstancesRequest, callback?: (err: AWSError, data: EC2.Types.DescribeClassicLinkInstancesResult) => void): Request; - /** - * Describes one or more of your linked EC2-Classic instances. This request only returns information about EC2-Classic instances linked to a VPC through ClassicLink; you cannot use this request to return information about other instances. - */ - describeClassicLinkInstances(callback?: (err: AWSError, data: EC2.Types.DescribeClassicLinkInstancesResult) => void): Request; - /** - * Describes one or more of your conversion tasks. For more information, see the VM Import/Export User Guide. For information about the import manifest referenced by this API action, see VM Import Manifest. - */ - describeConversionTasks(params: EC2.Types.DescribeConversionTasksRequest, callback?: (err: AWSError, data: EC2.Types.DescribeConversionTasksResult) => void): Request; - /** - * Describes one or more of your conversion tasks. For more information, see the VM Import/Export User Guide. For information about the import manifest referenced by this API action, see VM Import Manifest. - */ - describeConversionTasks(callback?: (err: AWSError, data: EC2.Types.DescribeConversionTasksResult) => void): Request; - /** - * Describes one or more of your VPN customer gateways. For more information about VPN customer gateways, see AWS Managed VPN Connections in the Amazon Virtual Private Cloud User Guide. - */ - describeCustomerGateways(params: EC2.Types.DescribeCustomerGatewaysRequest, callback?: (err: AWSError, data: EC2.Types.DescribeCustomerGatewaysResult) => void): Request; - /** - * Describes one or more of your VPN customer gateways. For more information about VPN customer gateways, see AWS Managed VPN Connections in the Amazon Virtual Private Cloud User Guide. - */ - describeCustomerGateways(callback?: (err: AWSError, data: EC2.Types.DescribeCustomerGatewaysResult) => void): Request; - /** - * Describes one or more of your DHCP options sets. For more information about DHCP options sets, see DHCP Options Sets in the Amazon Virtual Private Cloud User Guide. - */ - describeDhcpOptions(params: EC2.Types.DescribeDhcpOptionsRequest, callback?: (err: AWSError, data: EC2.Types.DescribeDhcpOptionsResult) => void): Request; - /** - * Describes one or more of your DHCP options sets. For more information about DHCP options sets, see DHCP Options Sets in the Amazon Virtual Private Cloud User Guide. - */ - describeDhcpOptions(callback?: (err: AWSError, data: EC2.Types.DescribeDhcpOptionsResult) => void): Request; - /** - * Describes one or more of your egress-only Internet gateways. - */ - describeEgressOnlyInternetGateways(params: EC2.Types.DescribeEgressOnlyInternetGatewaysRequest, callback?: (err: AWSError, data: EC2.Types.DescribeEgressOnlyInternetGatewaysResult) => void): Request; - /** - * Describes one or more of your egress-only Internet gateways. - */ - describeEgressOnlyInternetGateways(callback?: (err: AWSError, data: EC2.Types.DescribeEgressOnlyInternetGatewaysResult) => void): Request; - /** - * Describes the Elastic GPUs associated with your instances. For more information about Elastic GPUs, see Amazon EC2 Elastic GPUs. - */ - describeElasticGpus(params: EC2.Types.DescribeElasticGpusRequest, callback?: (err: AWSError, data: EC2.Types.DescribeElasticGpusResult) => void): Request; - /** - * Describes the Elastic GPUs associated with your instances. For more information about Elastic GPUs, see Amazon EC2 Elastic GPUs. - */ - describeElasticGpus(callback?: (err: AWSError, data: EC2.Types.DescribeElasticGpusResult) => void): Request; - /** - * Describes one or more of your export tasks. - */ - describeExportTasks(params: EC2.Types.DescribeExportTasksRequest, callback?: (err: AWSError, data: EC2.Types.DescribeExportTasksResult) => void): Request; - /** - * Describes one or more of your export tasks. - */ - describeExportTasks(callback?: (err: AWSError, data: EC2.Types.DescribeExportTasksResult) => void): Request; - /** - * Describes one or more flow logs. To view the information in your flow logs (the log streams for the network interfaces), you must use the CloudWatch Logs console or the CloudWatch Logs API. - */ - describeFlowLogs(params: EC2.Types.DescribeFlowLogsRequest, callback?: (err: AWSError, data: EC2.Types.DescribeFlowLogsResult) => void): Request; - /** - * Describes one or more flow logs. To view the information in your flow logs (the log streams for the network interfaces), you must use the CloudWatch Logs console or the CloudWatch Logs API. - */ - describeFlowLogs(callback?: (err: AWSError, data: EC2.Types.DescribeFlowLogsResult) => void): Request; - /** - * Describes the specified attribute of the specified Amazon FPGA Image (AFI). - */ - describeFpgaImageAttribute(params: EC2.Types.DescribeFpgaImageAttributeRequest, callback?: (err: AWSError, data: EC2.Types.DescribeFpgaImageAttributeResult) => void): Request; - /** - * Describes the specified attribute of the specified Amazon FPGA Image (AFI). - */ - describeFpgaImageAttribute(callback?: (err: AWSError, data: EC2.Types.DescribeFpgaImageAttributeResult) => void): Request; - /** - * Describes one or more available Amazon FPGA Images (AFIs). These include public AFIs, private AFIs that you own, and AFIs owned by other AWS accounts for which you have load permissions. - */ - describeFpgaImages(params: EC2.Types.DescribeFpgaImagesRequest, callback?: (err: AWSError, data: EC2.Types.DescribeFpgaImagesResult) => void): Request; - /** - * Describes one or more available Amazon FPGA Images (AFIs). These include public AFIs, private AFIs that you own, and AFIs owned by other AWS accounts for which you have load permissions. - */ - describeFpgaImages(callback?: (err: AWSError, data: EC2.Types.DescribeFpgaImagesResult) => void): Request; - /** - * Describes the Dedicated Host Reservations that are available to purchase. The results describe all the Dedicated Host Reservation offerings, including offerings that may not match the instance family and region of your Dedicated Hosts. When purchasing an offering, ensure that the the instance family and region of the offering matches that of the Dedicated Host/s it will be associated with. For an overview of supported instance types, see Dedicated Hosts Overview in the Amazon Elastic Compute Cloud User Guide. - */ - describeHostReservationOfferings(params: EC2.Types.DescribeHostReservationOfferingsRequest, callback?: (err: AWSError, data: EC2.Types.DescribeHostReservationOfferingsResult) => void): Request; - /** - * Describes the Dedicated Host Reservations that are available to purchase. The results describe all the Dedicated Host Reservation offerings, including offerings that may not match the instance family and region of your Dedicated Hosts. When purchasing an offering, ensure that the the instance family and region of the offering matches that of the Dedicated Host/s it will be associated with. For an overview of supported instance types, see Dedicated Hosts Overview in the Amazon Elastic Compute Cloud User Guide. - */ - describeHostReservationOfferings(callback?: (err: AWSError, data: EC2.Types.DescribeHostReservationOfferingsResult) => void): Request; - /** - * Describes Dedicated Host Reservations which are associated with Dedicated Hosts in your account. - */ - describeHostReservations(params: EC2.Types.DescribeHostReservationsRequest, callback?: (err: AWSError, data: EC2.Types.DescribeHostReservationsResult) => void): Request; - /** - * Describes Dedicated Host Reservations which are associated with Dedicated Hosts in your account. - */ - describeHostReservations(callback?: (err: AWSError, data: EC2.Types.DescribeHostReservationsResult) => void): Request; - /** - * Describes one or more of your Dedicated Hosts. The results describe only the Dedicated Hosts in the region you're currently using. All listed instances consume capacity on your Dedicated Host. Dedicated Hosts that have recently been released will be listed with the state released. - */ - describeHosts(params: EC2.Types.DescribeHostsRequest, callback?: (err: AWSError, data: EC2.Types.DescribeHostsResult) => void): Request; - /** - * Describes one or more of your Dedicated Hosts. The results describe only the Dedicated Hosts in the region you're currently using. All listed instances consume capacity on your Dedicated Host. Dedicated Hosts that have recently been released will be listed with the state released. - */ - describeHosts(callback?: (err: AWSError, data: EC2.Types.DescribeHostsResult) => void): Request; - /** - * Describes your IAM instance profile associations. - */ - describeIamInstanceProfileAssociations(params: EC2.Types.DescribeIamInstanceProfileAssociationsRequest, callback?: (err: AWSError, data: EC2.Types.DescribeIamInstanceProfileAssociationsResult) => void): Request; - /** - * Describes your IAM instance profile associations. - */ - describeIamInstanceProfileAssociations(callback?: (err: AWSError, data: EC2.Types.DescribeIamInstanceProfileAssociationsResult) => void): Request; - /** - * Describes the ID format settings for your resources on a per-region basis, for example, to view which resource types are enabled for longer IDs. This request only returns information about resource types whose ID formats can be modified; it does not return information about other resource types. The following resource types support longer IDs: instance | reservation | snapshot | volume. These settings apply to the IAM user who makes the request; they do not apply to the entire AWS account. By default, an IAM user defaults to the same settings as the root user, unless they explicitly override the settings by running the ModifyIdFormat command. Resources created with longer IDs are visible to all IAM users, regardless of these settings and provided that they have permission to use the relevant Describe command for the resource type. - */ - describeIdFormat(params: EC2.Types.DescribeIdFormatRequest, callback?: (err: AWSError, data: EC2.Types.DescribeIdFormatResult) => void): Request; - /** - * Describes the ID format settings for your resources on a per-region basis, for example, to view which resource types are enabled for longer IDs. This request only returns information about resource types whose ID formats can be modified; it does not return information about other resource types. The following resource types support longer IDs: instance | reservation | snapshot | volume. These settings apply to the IAM user who makes the request; they do not apply to the entire AWS account. By default, an IAM user defaults to the same settings as the root user, unless they explicitly override the settings by running the ModifyIdFormat command. Resources created with longer IDs are visible to all IAM users, regardless of these settings and provided that they have permission to use the relevant Describe command for the resource type. - */ - describeIdFormat(callback?: (err: AWSError, data: EC2.Types.DescribeIdFormatResult) => void): Request; - /** - * Describes the ID format settings for resources for the specified IAM user, IAM role, or root user. For example, you can view the resource types that are enabled for longer IDs. This request only returns information about resource types whose ID formats can be modified; it does not return information about other resource types. For more information, see Resource IDs in the Amazon Elastic Compute Cloud User Guide. The following resource types support longer IDs: instance | reservation | snapshot | volume. These settings apply to the principal specified in the request. They do not apply to the principal that makes the request. - */ - describeIdentityIdFormat(params: EC2.Types.DescribeIdentityIdFormatRequest, callback?: (err: AWSError, data: EC2.Types.DescribeIdentityIdFormatResult) => void): Request; - /** - * Describes the ID format settings for resources for the specified IAM user, IAM role, or root user. For example, you can view the resource types that are enabled for longer IDs. This request only returns information about resource types whose ID formats can be modified; it does not return information about other resource types. For more information, see Resource IDs in the Amazon Elastic Compute Cloud User Guide. The following resource types support longer IDs: instance | reservation | snapshot | volume. These settings apply to the principal specified in the request. They do not apply to the principal that makes the request. - */ - describeIdentityIdFormat(callback?: (err: AWSError, data: EC2.Types.DescribeIdentityIdFormatResult) => void): Request; - /** - * Describes the specified attribute of the specified AMI. You can specify only one attribute at a time. - */ - describeImageAttribute(params: EC2.Types.DescribeImageAttributeRequest, callback?: (err: AWSError, data: EC2.Types.ImageAttribute) => void): Request; - /** - * Describes the specified attribute of the specified AMI. You can specify only one attribute at a time. - */ - describeImageAttribute(callback?: (err: AWSError, data: EC2.Types.ImageAttribute) => void): Request; - /** - * Describes one or more of the images (AMIs, AKIs, and ARIs) available to you. Images available to you include public images, private images that you own, and private images owned by other AWS accounts but for which you have explicit launch permissions. Deregistered images are included in the returned results for an unspecified interval after deregistration. - */ - describeImages(params: EC2.Types.DescribeImagesRequest, callback?: (err: AWSError, data: EC2.Types.DescribeImagesResult) => void): Request; - /** - * Describes one or more of the images (AMIs, AKIs, and ARIs) available to you. Images available to you include public images, private images that you own, and private images owned by other AWS accounts but for which you have explicit launch permissions. Deregistered images are included in the returned results for an unspecified interval after deregistration. - */ - describeImages(callback?: (err: AWSError, data: EC2.Types.DescribeImagesResult) => void): Request; - /** - * Displays details about an import virtual machine or import snapshot tasks that are already created. - */ - describeImportImageTasks(params: EC2.Types.DescribeImportImageTasksRequest, callback?: (err: AWSError, data: EC2.Types.DescribeImportImageTasksResult) => void): Request; - /** - * Displays details about an import virtual machine or import snapshot tasks that are already created. - */ - describeImportImageTasks(callback?: (err: AWSError, data: EC2.Types.DescribeImportImageTasksResult) => void): Request; - /** - * Describes your import snapshot tasks. - */ - describeImportSnapshotTasks(params: EC2.Types.DescribeImportSnapshotTasksRequest, callback?: (err: AWSError, data: EC2.Types.DescribeImportSnapshotTasksResult) => void): Request; - /** - * Describes your import snapshot tasks. - */ - describeImportSnapshotTasks(callback?: (err: AWSError, data: EC2.Types.DescribeImportSnapshotTasksResult) => void): Request; - /** - * Describes the specified attribute of the specified instance. You can specify only one attribute at a time. Valid attribute values are: instanceType | kernel | ramdisk | userData | disableApiTermination | instanceInitiatedShutdownBehavior | rootDeviceName | blockDeviceMapping | productCodes | sourceDestCheck | groupSet | ebsOptimized | sriovNetSupport - */ - describeInstanceAttribute(params: EC2.Types.DescribeInstanceAttributeRequest, callback?: (err: AWSError, data: EC2.Types.InstanceAttribute) => void): Request; - /** - * Describes the specified attribute of the specified instance. You can specify only one attribute at a time. Valid attribute values are: instanceType | kernel | ramdisk | userData | disableApiTermination | instanceInitiatedShutdownBehavior | rootDeviceName | blockDeviceMapping | productCodes | sourceDestCheck | groupSet | ebsOptimized | sriovNetSupport - */ - describeInstanceAttribute(callback?: (err: AWSError, data: EC2.Types.InstanceAttribute) => void): Request; - /** - * Describes the status of one or more instances. By default, only running instances are described, unless you specifically indicate to return the status of all instances. Instance status includes the following components: Status checks - Amazon EC2 performs status checks on running EC2 instances to identify hardware and software issues. For more information, see Status Checks for Your Instances and Troubleshooting Instances with Failed Status Checks in the Amazon Elastic Compute Cloud User Guide. Scheduled events - Amazon EC2 can schedule events (such as reboot, stop, or terminate) for your instances related to hardware issues, software updates, or system maintenance. For more information, see Scheduled Events for Your Instances in the Amazon Elastic Compute Cloud User Guide. Instance state - You can manage your instances from the moment you launch them through their termination. For more information, see Instance Lifecycle in the Amazon Elastic Compute Cloud User Guide. - */ - describeInstanceStatus(params: EC2.Types.DescribeInstanceStatusRequest, callback?: (err: AWSError, data: EC2.Types.DescribeInstanceStatusResult) => void): Request; - /** - * Describes the status of one or more instances. By default, only running instances are described, unless you specifically indicate to return the status of all instances. Instance status includes the following components: Status checks - Amazon EC2 performs status checks on running EC2 instances to identify hardware and software issues. For more information, see Status Checks for Your Instances and Troubleshooting Instances with Failed Status Checks in the Amazon Elastic Compute Cloud User Guide. Scheduled events - Amazon EC2 can schedule events (such as reboot, stop, or terminate) for your instances related to hardware issues, software updates, or system maintenance. For more information, see Scheduled Events for Your Instances in the Amazon Elastic Compute Cloud User Guide. Instance state - You can manage your instances from the moment you launch them through their termination. For more information, see Instance Lifecycle in the Amazon Elastic Compute Cloud User Guide. - */ - describeInstanceStatus(callback?: (err: AWSError, data: EC2.Types.DescribeInstanceStatusResult) => void): Request; - /** - * Describes one or more of your instances. If you specify one or more instance IDs, Amazon EC2 returns information for those instances. If you do not specify instance IDs, Amazon EC2 returns information for all relevant instances. If you specify an instance ID that is not valid, an error is returned. If you specify an instance that you do not own, it is not included in the returned results. Recently terminated instances might appear in the returned results. This interval is usually less than one hour. If you describe instances in the rare case where an Availability Zone is experiencing a service disruption and you specify instance IDs that are in the affected zone, or do not specify any instance IDs at all, the call fails. If you describe instances and specify only instance IDs that are in an unaffected zone, the call works normally. - */ - describeInstances(params: EC2.Types.DescribeInstancesRequest, callback?: (err: AWSError, data: EC2.Types.DescribeInstancesResult) => void): Request; - /** - * Describes one or more of your instances. If you specify one or more instance IDs, Amazon EC2 returns information for those instances. If you do not specify instance IDs, Amazon EC2 returns information for all relevant instances. If you specify an instance ID that is not valid, an error is returned. If you specify an instance that you do not own, it is not included in the returned results. Recently terminated instances might appear in the returned results. This interval is usually less than one hour. If you describe instances in the rare case where an Availability Zone is experiencing a service disruption and you specify instance IDs that are in the affected zone, or do not specify any instance IDs at all, the call fails. If you describe instances and specify only instance IDs that are in an unaffected zone, the call works normally. - */ - describeInstances(callback?: (err: AWSError, data: EC2.Types.DescribeInstancesResult) => void): Request; - /** - * Describes one or more of your Internet gateways. - */ - describeInternetGateways(params: EC2.Types.DescribeInternetGatewaysRequest, callback?: (err: AWSError, data: EC2.Types.DescribeInternetGatewaysResult) => void): Request; - /** - * Describes one or more of your Internet gateways. - */ - describeInternetGateways(callback?: (err: AWSError, data: EC2.Types.DescribeInternetGatewaysResult) => void): Request; - /** - * Describes one or more of your key pairs. For more information about key pairs, see Key Pairs in the Amazon Elastic Compute Cloud User Guide. - */ - describeKeyPairs(params: EC2.Types.DescribeKeyPairsRequest, callback?: (err: AWSError, data: EC2.Types.DescribeKeyPairsResult) => void): Request; - /** - * Describes one or more of your key pairs. For more information about key pairs, see Key Pairs in the Amazon Elastic Compute Cloud User Guide. - */ - describeKeyPairs(callback?: (err: AWSError, data: EC2.Types.DescribeKeyPairsResult) => void): Request; - /** - * Describes your Elastic IP addresses that are being moved to the EC2-VPC platform, or that are being restored to the EC2-Classic platform. This request does not return information about any other Elastic IP addresses in your account. - */ - describeMovingAddresses(params: EC2.Types.DescribeMovingAddressesRequest, callback?: (err: AWSError, data: EC2.Types.DescribeMovingAddressesResult) => void): Request; - /** - * Describes your Elastic IP addresses that are being moved to the EC2-VPC platform, or that are being restored to the EC2-Classic platform. This request does not return information about any other Elastic IP addresses in your account. - */ - describeMovingAddresses(callback?: (err: AWSError, data: EC2.Types.DescribeMovingAddressesResult) => void): Request; - /** - * Describes one or more of the your NAT gateways. - */ - describeNatGateways(params: EC2.Types.DescribeNatGatewaysRequest, callback?: (err: AWSError, data: EC2.Types.DescribeNatGatewaysResult) => void): Request; - /** - * Describes one or more of the your NAT gateways. - */ - describeNatGateways(callback?: (err: AWSError, data: EC2.Types.DescribeNatGatewaysResult) => void): Request; - /** - * Describes one or more of your network ACLs. For more information about network ACLs, see Network ACLs in the Amazon Virtual Private Cloud User Guide. - */ - describeNetworkAcls(params: EC2.Types.DescribeNetworkAclsRequest, callback?: (err: AWSError, data: EC2.Types.DescribeNetworkAclsResult) => void): Request; - /** - * Describes one or more of your network ACLs. For more information about network ACLs, see Network ACLs in the Amazon Virtual Private Cloud User Guide. - */ - describeNetworkAcls(callback?: (err: AWSError, data: EC2.Types.DescribeNetworkAclsResult) => void): Request; - /** - * Describes a network interface attribute. You can specify only one attribute at a time. - */ - describeNetworkInterfaceAttribute(params: EC2.Types.DescribeNetworkInterfaceAttributeRequest, callback?: (err: AWSError, data: EC2.Types.DescribeNetworkInterfaceAttributeResult) => void): Request; - /** - * Describes a network interface attribute. You can specify only one attribute at a time. - */ - describeNetworkInterfaceAttribute(callback?: (err: AWSError, data: EC2.Types.DescribeNetworkInterfaceAttributeResult) => void): Request; - /** - * Describes the permissions for your network interfaces. - */ - describeNetworkInterfacePermissions(params: EC2.Types.DescribeNetworkInterfacePermissionsRequest, callback?: (err: AWSError, data: EC2.Types.DescribeNetworkInterfacePermissionsResult) => void): Request; - /** - * Describes the permissions for your network interfaces. - */ - describeNetworkInterfacePermissions(callback?: (err: AWSError, data: EC2.Types.DescribeNetworkInterfacePermissionsResult) => void): Request; - /** - * Describes one or more of your network interfaces. - */ - describeNetworkInterfaces(params: EC2.Types.DescribeNetworkInterfacesRequest, callback?: (err: AWSError, data: EC2.Types.DescribeNetworkInterfacesResult) => void): Request; - /** - * Describes one or more of your network interfaces. - */ - describeNetworkInterfaces(callback?: (err: AWSError, data: EC2.Types.DescribeNetworkInterfacesResult) => void): Request; - /** - * Describes one or more of your placement groups. For more information about placement groups and cluster instances, see Cluster Instances in the Amazon Elastic Compute Cloud User Guide. - */ - describePlacementGroups(params: EC2.Types.DescribePlacementGroupsRequest, callback?: (err: AWSError, data: EC2.Types.DescribePlacementGroupsResult) => void): Request; - /** - * Describes one or more of your placement groups. For more information about placement groups and cluster instances, see Cluster Instances in the Amazon Elastic Compute Cloud User Guide. - */ - describePlacementGroups(callback?: (err: AWSError, data: EC2.Types.DescribePlacementGroupsResult) => void): Request; - /** - * Describes available AWS services in a prefix list format, which includes the prefix list name and prefix list ID of the service and the IP address range for the service. A prefix list ID is required for creating an outbound security group rule that allows traffic from a VPC to access an AWS service through a VPC endpoint. - */ - describePrefixLists(params: EC2.Types.DescribePrefixListsRequest, callback?: (err: AWSError, data: EC2.Types.DescribePrefixListsResult) => void): Request; - /** - * Describes available AWS services in a prefix list format, which includes the prefix list name and prefix list ID of the service and the IP address range for the service. A prefix list ID is required for creating an outbound security group rule that allows traffic from a VPC to access an AWS service through a VPC endpoint. - */ - describePrefixLists(callback?: (err: AWSError, data: EC2.Types.DescribePrefixListsResult) => void): Request; - /** - * Describes one or more regions that are currently available to you. For a list of the regions supported by Amazon EC2, see Regions and Endpoints. - */ - describeRegions(params: EC2.Types.DescribeRegionsRequest, callback?: (err: AWSError, data: EC2.Types.DescribeRegionsResult) => void): Request; - /** - * Describes one or more regions that are currently available to you. For a list of the regions supported by Amazon EC2, see Regions and Endpoints. - */ - describeRegions(callback?: (err: AWSError, data: EC2.Types.DescribeRegionsResult) => void): Request; - /** - * Describes one or more of the Reserved Instances that you purchased. For more information about Reserved Instances, see Reserved Instances in the Amazon Elastic Compute Cloud User Guide. - */ - describeReservedInstances(params: EC2.Types.DescribeReservedInstancesRequest, callback?: (err: AWSError, data: EC2.Types.DescribeReservedInstancesResult) => void): Request; - /** - * Describes one or more of the Reserved Instances that you purchased. For more information about Reserved Instances, see Reserved Instances in the Amazon Elastic Compute Cloud User Guide. - */ - describeReservedInstances(callback?: (err: AWSError, data: EC2.Types.DescribeReservedInstancesResult) => void): Request; - /** - * Describes your account's Reserved Instance listings in the Reserved Instance Marketplace. The Reserved Instance Marketplace matches sellers who want to resell Reserved Instance capacity that they no longer need with buyers who want to purchase additional capacity. Reserved Instances bought and sold through the Reserved Instance Marketplace work like any other Reserved Instances. As a seller, you choose to list some or all of your Reserved Instances, and you specify the upfront price to receive for them. Your Reserved Instances are then listed in the Reserved Instance Marketplace and are available for purchase. As a buyer, you specify the configuration of the Reserved Instance to purchase, and the Marketplace matches what you're searching for with what's available. The Marketplace first sells the lowest priced Reserved Instances to you, and continues to sell available Reserved Instance listings to you until your demand is met. You are charged based on the total price of all of the listings that you purchase. For more information, see Reserved Instance Marketplace in the Amazon Elastic Compute Cloud User Guide. - */ - describeReservedInstancesListings(params: EC2.Types.DescribeReservedInstancesListingsRequest, callback?: (err: AWSError, data: EC2.Types.DescribeReservedInstancesListingsResult) => void): Request; - /** - * Describes your account's Reserved Instance listings in the Reserved Instance Marketplace. The Reserved Instance Marketplace matches sellers who want to resell Reserved Instance capacity that they no longer need with buyers who want to purchase additional capacity. Reserved Instances bought and sold through the Reserved Instance Marketplace work like any other Reserved Instances. As a seller, you choose to list some or all of your Reserved Instances, and you specify the upfront price to receive for them. Your Reserved Instances are then listed in the Reserved Instance Marketplace and are available for purchase. As a buyer, you specify the configuration of the Reserved Instance to purchase, and the Marketplace matches what you're searching for with what's available. The Marketplace first sells the lowest priced Reserved Instances to you, and continues to sell available Reserved Instance listings to you until your demand is met. You are charged based on the total price of all of the listings that you purchase. For more information, see Reserved Instance Marketplace in the Amazon Elastic Compute Cloud User Guide. - */ - describeReservedInstancesListings(callback?: (err: AWSError, data: EC2.Types.DescribeReservedInstancesListingsResult) => void): Request; - /** - * Describes the modifications made to your Reserved Instances. If no parameter is specified, information about all your Reserved Instances modification requests is returned. If a modification ID is specified, only information about the specific modification is returned. For more information, see Modifying Reserved Instances in the Amazon Elastic Compute Cloud User Guide. - */ - describeReservedInstancesModifications(params: EC2.Types.DescribeReservedInstancesModificationsRequest, callback?: (err: AWSError, data: EC2.Types.DescribeReservedInstancesModificationsResult) => void): Request; - /** - * Describes the modifications made to your Reserved Instances. If no parameter is specified, information about all your Reserved Instances modification requests is returned. If a modification ID is specified, only information about the specific modification is returned. For more information, see Modifying Reserved Instances in the Amazon Elastic Compute Cloud User Guide. - */ - describeReservedInstancesModifications(callback?: (err: AWSError, data: EC2.Types.DescribeReservedInstancesModificationsResult) => void): Request; - /** - * Describes Reserved Instance offerings that are available for purchase. With Reserved Instances, you purchase the right to launch instances for a period of time. During that time period, you do not receive insufficient capacity errors, and you pay a lower usage rate than the rate charged for On-Demand instances for the actual time used. If you have listed your own Reserved Instances for sale in the Reserved Instance Marketplace, they will be excluded from these results. This is to ensure that you do not purchase your own Reserved Instances. For more information, see Reserved Instance Marketplace in the Amazon Elastic Compute Cloud User Guide. - */ - describeReservedInstancesOfferings(params: EC2.Types.DescribeReservedInstancesOfferingsRequest, callback?: (err: AWSError, data: EC2.Types.DescribeReservedInstancesOfferingsResult) => void): Request; - /** - * Describes Reserved Instance offerings that are available for purchase. With Reserved Instances, you purchase the right to launch instances for a period of time. During that time period, you do not receive insufficient capacity errors, and you pay a lower usage rate than the rate charged for On-Demand instances for the actual time used. If you have listed your own Reserved Instances for sale in the Reserved Instance Marketplace, they will be excluded from these results. This is to ensure that you do not purchase your own Reserved Instances. For more information, see Reserved Instance Marketplace in the Amazon Elastic Compute Cloud User Guide. - */ - describeReservedInstancesOfferings(callback?: (err: AWSError, data: EC2.Types.DescribeReservedInstancesOfferingsResult) => void): Request; - /** - * Describes one or more of your route tables. Each subnet in your VPC must be associated with a route table. If a subnet is not explicitly associated with any route table, it is implicitly associated with the main route table. This command does not return the subnet ID for implicit associations. For more information about route tables, see Route Tables in the Amazon Virtual Private Cloud User Guide. - */ - describeRouteTables(params: EC2.Types.DescribeRouteTablesRequest, callback?: (err: AWSError, data: EC2.Types.DescribeRouteTablesResult) => void): Request; - /** - * Describes one or more of your route tables. Each subnet in your VPC must be associated with a route table. If a subnet is not explicitly associated with any route table, it is implicitly associated with the main route table. This command does not return the subnet ID for implicit associations. For more information about route tables, see Route Tables in the Amazon Virtual Private Cloud User Guide. - */ - describeRouteTables(callback?: (err: AWSError, data: EC2.Types.DescribeRouteTablesResult) => void): Request; - /** - * Finds available schedules that meet the specified criteria. You can search for an available schedule no more than 3 months in advance. You must meet the minimum required duration of 1,200 hours per year. For example, the minimum daily schedule is 4 hours, the minimum weekly schedule is 24 hours, and the minimum monthly schedule is 100 hours. After you find a schedule that meets your needs, call PurchaseScheduledInstances to purchase Scheduled Instances with that schedule. - */ - describeScheduledInstanceAvailability(params: EC2.Types.DescribeScheduledInstanceAvailabilityRequest, callback?: (err: AWSError, data: EC2.Types.DescribeScheduledInstanceAvailabilityResult) => void): Request; - /** - * Finds available schedules that meet the specified criteria. You can search for an available schedule no more than 3 months in advance. You must meet the minimum required duration of 1,200 hours per year. For example, the minimum daily schedule is 4 hours, the minimum weekly schedule is 24 hours, and the minimum monthly schedule is 100 hours. After you find a schedule that meets your needs, call PurchaseScheduledInstances to purchase Scheduled Instances with that schedule. - */ - describeScheduledInstanceAvailability(callback?: (err: AWSError, data: EC2.Types.DescribeScheduledInstanceAvailabilityResult) => void): Request; - /** - * Describes one or more of your Scheduled Instances. - */ - describeScheduledInstances(params: EC2.Types.DescribeScheduledInstancesRequest, callback?: (err: AWSError, data: EC2.Types.DescribeScheduledInstancesResult) => void): Request; - /** - * Describes one or more of your Scheduled Instances. - */ - describeScheduledInstances(callback?: (err: AWSError, data: EC2.Types.DescribeScheduledInstancesResult) => void): Request; - /** - * [EC2-VPC only] Describes the VPCs on the other side of a VPC peering connection that are referencing the security groups you've specified in this request. - */ - describeSecurityGroupReferences(params: EC2.Types.DescribeSecurityGroupReferencesRequest, callback?: (err: AWSError, data: EC2.Types.DescribeSecurityGroupReferencesResult) => void): Request; - /** - * [EC2-VPC only] Describes the VPCs on the other side of a VPC peering connection that are referencing the security groups you've specified in this request. - */ - describeSecurityGroupReferences(callback?: (err: AWSError, data: EC2.Types.DescribeSecurityGroupReferencesResult) => void): Request; - /** - * Describes one or more of your security groups. A security group is for use with instances either in the EC2-Classic platform or in a specific VPC. For more information, see Amazon EC2 Security Groups in the Amazon Elastic Compute Cloud User Guide and Security Groups for Your VPC in the Amazon Virtual Private Cloud User Guide. - */ - describeSecurityGroups(params: EC2.Types.DescribeSecurityGroupsRequest, callback?: (err: AWSError, data: EC2.Types.DescribeSecurityGroupsResult) => void): Request; - /** - * Describes one or more of your security groups. A security group is for use with instances either in the EC2-Classic platform or in a specific VPC. For more information, see Amazon EC2 Security Groups in the Amazon Elastic Compute Cloud User Guide and Security Groups for Your VPC in the Amazon Virtual Private Cloud User Guide. - */ - describeSecurityGroups(callback?: (err: AWSError, data: EC2.Types.DescribeSecurityGroupsResult) => void): Request; - /** - * Describes the specified attribute of the specified snapshot. You can specify only one attribute at a time. For more information about EBS snapshots, see Amazon EBS Snapshots in the Amazon Elastic Compute Cloud User Guide. - */ - describeSnapshotAttribute(params: EC2.Types.DescribeSnapshotAttributeRequest, callback?: (err: AWSError, data: EC2.Types.DescribeSnapshotAttributeResult) => void): Request; - /** - * Describes the specified attribute of the specified snapshot. You can specify only one attribute at a time. For more information about EBS snapshots, see Amazon EBS Snapshots in the Amazon Elastic Compute Cloud User Guide. - */ - describeSnapshotAttribute(callback?: (err: AWSError, data: EC2.Types.DescribeSnapshotAttributeResult) => void): Request; - /** - * Describes one or more of the EBS snapshots available to you. Available snapshots include public snapshots available for any AWS account to launch, private snapshots that you own, and private snapshots owned by another AWS account but for which you've been given explicit create volume permissions. The create volume permissions fall into the following categories: public: The owner of the snapshot granted create volume permissions for the snapshot to the all group. All AWS accounts have create volume permissions for these snapshots. explicit: The owner of the snapshot granted create volume permissions to a specific AWS account. implicit: An AWS account has implicit create volume permissions for all snapshots it owns. The list of snapshots returned can be modified by specifying snapshot IDs, snapshot owners, or AWS accounts with create volume permissions. If no options are specified, Amazon EC2 returns all snapshots for which you have create volume permissions. If you specify one or more snapshot IDs, only snapshots that have the specified IDs are returned. If you specify an invalid snapshot ID, an error is returned. If you specify a snapshot ID for which you do not have access, it is not included in the returned results. If you specify one or more snapshot owners using the OwnerIds option, only snapshots from the specified owners and for which you have access are returned. The results can include the AWS account IDs of the specified owners, amazon for snapshots owned by Amazon, or self for snapshots that you own. If you specify a list of restorable users, only snapshots with create snapshot permissions for those users are returned. You can specify AWS account IDs (if you own the snapshots), self for snapshots for which you own or have explicit permissions, or all for public snapshots. If you are describing a long list of snapshots, you can paginate the output to make the list more manageable. The MaxResults parameter sets the maximum number of results returned in a single page. If the list of results exceeds your MaxResults value, then that number of results is returned along with a NextToken value that can be passed to a subsequent DescribeSnapshots request to retrieve the remaining results. For more information about EBS snapshots, see Amazon EBS Snapshots in the Amazon Elastic Compute Cloud User Guide. - */ - describeSnapshots(params: EC2.Types.DescribeSnapshotsRequest, callback?: (err: AWSError, data: EC2.Types.DescribeSnapshotsResult) => void): Request; - /** - * Describes one or more of the EBS snapshots available to you. Available snapshots include public snapshots available for any AWS account to launch, private snapshots that you own, and private snapshots owned by another AWS account but for which you've been given explicit create volume permissions. The create volume permissions fall into the following categories: public: The owner of the snapshot granted create volume permissions for the snapshot to the all group. All AWS accounts have create volume permissions for these snapshots. explicit: The owner of the snapshot granted create volume permissions to a specific AWS account. implicit: An AWS account has implicit create volume permissions for all snapshots it owns. The list of snapshots returned can be modified by specifying snapshot IDs, snapshot owners, or AWS accounts with create volume permissions. If no options are specified, Amazon EC2 returns all snapshots for which you have create volume permissions. If you specify one or more snapshot IDs, only snapshots that have the specified IDs are returned. If you specify an invalid snapshot ID, an error is returned. If you specify a snapshot ID for which you do not have access, it is not included in the returned results. If you specify one or more snapshot owners using the OwnerIds option, only snapshots from the specified owners and for which you have access are returned. The results can include the AWS account IDs of the specified owners, amazon for snapshots owned by Amazon, or self for snapshots that you own. If you specify a list of restorable users, only snapshots with create snapshot permissions for those users are returned. You can specify AWS account IDs (if you own the snapshots), self for snapshots for which you own or have explicit permissions, or all for public snapshots. If you are describing a long list of snapshots, you can paginate the output to make the list more manageable. The MaxResults parameter sets the maximum number of results returned in a single page. If the list of results exceeds your MaxResults value, then that number of results is returned along with a NextToken value that can be passed to a subsequent DescribeSnapshots request to retrieve the remaining results. For more information about EBS snapshots, see Amazon EBS Snapshots in the Amazon Elastic Compute Cloud User Guide. - */ - describeSnapshots(callback?: (err: AWSError, data: EC2.Types.DescribeSnapshotsResult) => void): Request; - /** - * Describes the data feed for Spot instances. For more information, see Spot Instance Data Feed in the Amazon Elastic Compute Cloud User Guide. - */ - describeSpotDatafeedSubscription(params: EC2.Types.DescribeSpotDatafeedSubscriptionRequest, callback?: (err: AWSError, data: EC2.Types.DescribeSpotDatafeedSubscriptionResult) => void): Request; - /** - * Describes the data feed for Spot instances. For more information, see Spot Instance Data Feed in the Amazon Elastic Compute Cloud User Guide. - */ - describeSpotDatafeedSubscription(callback?: (err: AWSError, data: EC2.Types.DescribeSpotDatafeedSubscriptionResult) => void): Request; - /** - * Describes the running instances for the specified Spot fleet. - */ - describeSpotFleetInstances(params: EC2.Types.DescribeSpotFleetInstancesRequest, callback?: (err: AWSError, data: EC2.Types.DescribeSpotFleetInstancesResponse) => void): Request; - /** - * Describes the running instances for the specified Spot fleet. - */ - describeSpotFleetInstances(callback?: (err: AWSError, data: EC2.Types.DescribeSpotFleetInstancesResponse) => void): Request; - /** - * Describes the events for the specified Spot fleet request during the specified time. Spot fleet events are delayed by up to 30 seconds before they can be described. This ensures that you can query by the last evaluated time and not miss a recorded event. - */ - describeSpotFleetRequestHistory(params: EC2.Types.DescribeSpotFleetRequestHistoryRequest, callback?: (err: AWSError, data: EC2.Types.DescribeSpotFleetRequestHistoryResponse) => void): Request; - /** - * Describes the events for the specified Spot fleet request during the specified time. Spot fleet events are delayed by up to 30 seconds before they can be described. This ensures that you can query by the last evaluated time and not miss a recorded event. - */ - describeSpotFleetRequestHistory(callback?: (err: AWSError, data: EC2.Types.DescribeSpotFleetRequestHistoryResponse) => void): Request; - /** - * Describes your Spot fleet requests. Spot fleet requests are deleted 48 hours after they are canceled and their instances are terminated. - */ - describeSpotFleetRequests(params: EC2.Types.DescribeSpotFleetRequestsRequest, callback?: (err: AWSError, data: EC2.Types.DescribeSpotFleetRequestsResponse) => void): Request; - /** - * Describes your Spot fleet requests. Spot fleet requests are deleted 48 hours after they are canceled and their instances are terminated. - */ - describeSpotFleetRequests(callback?: (err: AWSError, data: EC2.Types.DescribeSpotFleetRequestsResponse) => void): Request; - /** - * Describes the Spot instance requests that belong to your account. Spot instances are instances that Amazon EC2 launches when the bid price that you specify exceeds the current Spot price. Amazon EC2 periodically sets the Spot price based on available Spot instance capacity and current Spot instance requests. For more information, see Spot Instance Requests in the Amazon Elastic Compute Cloud User Guide. You can use DescribeSpotInstanceRequests to find a running Spot instance by examining the response. If the status of the Spot instance is fulfilled, the instance ID appears in the response and contains the identifier of the instance. Alternatively, you can use DescribeInstances with a filter to look for instances where the instance lifecycle is spot. Spot instance requests are deleted 4 hours after they are canceled and their instances are terminated. - */ - describeSpotInstanceRequests(params: EC2.Types.DescribeSpotInstanceRequestsRequest, callback?: (err: AWSError, data: EC2.Types.DescribeSpotInstanceRequestsResult) => void): Request; - /** - * Describes the Spot instance requests that belong to your account. Spot instances are instances that Amazon EC2 launches when the bid price that you specify exceeds the current Spot price. Amazon EC2 periodically sets the Spot price based on available Spot instance capacity and current Spot instance requests. For more information, see Spot Instance Requests in the Amazon Elastic Compute Cloud User Guide. You can use DescribeSpotInstanceRequests to find a running Spot instance by examining the response. If the status of the Spot instance is fulfilled, the instance ID appears in the response and contains the identifier of the instance. Alternatively, you can use DescribeInstances with a filter to look for instances where the instance lifecycle is spot. Spot instance requests are deleted 4 hours after they are canceled and their instances are terminated. - */ - describeSpotInstanceRequests(callback?: (err: AWSError, data: EC2.Types.DescribeSpotInstanceRequestsResult) => void): Request; - /** - * Describes the Spot price history. For more information, see Spot Instance Pricing History in the Amazon Elastic Compute Cloud User Guide. When you specify a start and end time, this operation returns the prices of the instance types within the time range that you specified and the time when the price changed. The price is valid within the time period that you specified; the response merely indicates the last time that the price changed. - */ - describeSpotPriceHistory(params: EC2.Types.DescribeSpotPriceHistoryRequest, callback?: (err: AWSError, data: EC2.Types.DescribeSpotPriceHistoryResult) => void): Request; - /** - * Describes the Spot price history. For more information, see Spot Instance Pricing History in the Amazon Elastic Compute Cloud User Guide. When you specify a start and end time, this operation returns the prices of the instance types within the time range that you specified and the time when the price changed. The price is valid within the time period that you specified; the response merely indicates the last time that the price changed. - */ - describeSpotPriceHistory(callback?: (err: AWSError, data: EC2.Types.DescribeSpotPriceHistoryResult) => void): Request; - /** - * [EC2-VPC only] Describes the stale security group rules for security groups in a specified VPC. Rules are stale when they reference a deleted security group in a peer VPC, or a security group in a peer VPC for which the VPC peering connection has been deleted. - */ - describeStaleSecurityGroups(params: EC2.Types.DescribeStaleSecurityGroupsRequest, callback?: (err: AWSError, data: EC2.Types.DescribeStaleSecurityGroupsResult) => void): Request; - /** - * [EC2-VPC only] Describes the stale security group rules for security groups in a specified VPC. Rules are stale when they reference a deleted security group in a peer VPC, or a security group in a peer VPC for which the VPC peering connection has been deleted. - */ - describeStaleSecurityGroups(callback?: (err: AWSError, data: EC2.Types.DescribeStaleSecurityGroupsResult) => void): Request; - /** - * Describes one or more of your subnets. For more information about subnets, see Your VPC and Subnets in the Amazon Virtual Private Cloud User Guide. - */ - describeSubnets(params: EC2.Types.DescribeSubnetsRequest, callback?: (err: AWSError, data: EC2.Types.DescribeSubnetsResult) => void): Request; - /** - * Describes one or more of your subnets. For more information about subnets, see Your VPC and Subnets in the Amazon Virtual Private Cloud User Guide. - */ - describeSubnets(callback?: (err: AWSError, data: EC2.Types.DescribeSubnetsResult) => void): Request; - /** - * Describes one or more of the tags for your EC2 resources. For more information about tags, see Tagging Your Resources in the Amazon Elastic Compute Cloud User Guide. - */ - describeTags(params: EC2.Types.DescribeTagsRequest, callback?: (err: AWSError, data: EC2.Types.DescribeTagsResult) => void): Request; - /** - * Describes one or more of the tags for your EC2 resources. For more information about tags, see Tagging Your Resources in the Amazon Elastic Compute Cloud User Guide. - */ - describeTags(callback?: (err: AWSError, data: EC2.Types.DescribeTagsResult) => void): Request; - /** - * Describes the specified attribute of the specified volume. You can specify only one attribute at a time. For more information about EBS volumes, see Amazon EBS Volumes in the Amazon Elastic Compute Cloud User Guide. - */ - describeVolumeAttribute(params: EC2.Types.DescribeVolumeAttributeRequest, callback?: (err: AWSError, data: EC2.Types.DescribeVolumeAttributeResult) => void): Request; - /** - * Describes the specified attribute of the specified volume. You can specify only one attribute at a time. For more information about EBS volumes, see Amazon EBS Volumes in the Amazon Elastic Compute Cloud User Guide. - */ - describeVolumeAttribute(callback?: (err: AWSError, data: EC2.Types.DescribeVolumeAttributeResult) => void): Request; - /** - * Describes the status of the specified volumes. Volume status provides the result of the checks performed on your volumes to determine events that can impair the performance of your volumes. The performance of a volume can be affected if an issue occurs on the volume's underlying host. If the volume's underlying host experiences a power outage or system issue, after the system is restored, there could be data inconsistencies on the volume. Volume events notify you if this occurs. Volume actions notify you if any action needs to be taken in response to the event. The DescribeVolumeStatus operation provides the following information about the specified volumes: Status: Reflects the current status of the volume. The possible values are ok, impaired , warning, or insufficient-data. If all checks pass, the overall status of the volume is ok. If the check fails, the overall status is impaired. If the status is insufficient-data, then the checks may still be taking place on your volume at the time. We recommend that you retry the request. For more information on volume status, see Monitoring the Status of Your Volumes. Events: Reflect the cause of a volume status and may require you to take action. For example, if your volume returns an impaired status, then the volume event might be potential-data-inconsistency. This means that your volume has been affected by an issue with the underlying host, has all I/O operations disabled, and may have inconsistent data. Actions: Reflect the actions you may have to take in response to an event. For example, if the status of the volume is impaired and the volume event shows potential-data-inconsistency, then the action shows enable-volume-io. This means that you may want to enable the I/O operations for the volume by calling the EnableVolumeIO action and then check the volume for data consistency. Volume status is based on the volume status checks, and does not reflect the volume state. Therefore, volume status does not indicate volumes in the error state (for example, when a volume is incapable of accepting I/O.) - */ - describeVolumeStatus(params: EC2.Types.DescribeVolumeStatusRequest, callback?: (err: AWSError, data: EC2.Types.DescribeVolumeStatusResult) => void): Request; - /** - * Describes the status of the specified volumes. Volume status provides the result of the checks performed on your volumes to determine events that can impair the performance of your volumes. The performance of a volume can be affected if an issue occurs on the volume's underlying host. If the volume's underlying host experiences a power outage or system issue, after the system is restored, there could be data inconsistencies on the volume. Volume events notify you if this occurs. Volume actions notify you if any action needs to be taken in response to the event. The DescribeVolumeStatus operation provides the following information about the specified volumes: Status: Reflects the current status of the volume. The possible values are ok, impaired , warning, or insufficient-data. If all checks pass, the overall status of the volume is ok. If the check fails, the overall status is impaired. If the status is insufficient-data, then the checks may still be taking place on your volume at the time. We recommend that you retry the request. For more information on volume status, see Monitoring the Status of Your Volumes. Events: Reflect the cause of a volume status and may require you to take action. For example, if your volume returns an impaired status, then the volume event might be potential-data-inconsistency. This means that your volume has been affected by an issue with the underlying host, has all I/O operations disabled, and may have inconsistent data. Actions: Reflect the actions you may have to take in response to an event. For example, if the status of the volume is impaired and the volume event shows potential-data-inconsistency, then the action shows enable-volume-io. This means that you may want to enable the I/O operations for the volume by calling the EnableVolumeIO action and then check the volume for data consistency. Volume status is based on the volume status checks, and does not reflect the volume state. Therefore, volume status does not indicate volumes in the error state (for example, when a volume is incapable of accepting I/O.) - */ - describeVolumeStatus(callback?: (err: AWSError, data: EC2.Types.DescribeVolumeStatusResult) => void): Request; - /** - * Describes the specified EBS volumes. If you are describing a long list of volumes, you can paginate the output to make the list more manageable. The MaxResults parameter sets the maximum number of results returned in a single page. If the list of results exceeds your MaxResults value, then that number of results is returned along with a NextToken value that can be passed to a subsequent DescribeVolumes request to retrieve the remaining results. For more information about EBS volumes, see Amazon EBS Volumes in the Amazon Elastic Compute Cloud User Guide. - */ - describeVolumes(params: EC2.Types.DescribeVolumesRequest, callback?: (err: AWSError, data: EC2.Types.DescribeVolumesResult) => void): Request; - /** - * Describes the specified EBS volumes. If you are describing a long list of volumes, you can paginate the output to make the list more manageable. The MaxResults parameter sets the maximum number of results returned in a single page. If the list of results exceeds your MaxResults value, then that number of results is returned along with a NextToken value that can be passed to a subsequent DescribeVolumes request to retrieve the remaining results. For more information about EBS volumes, see Amazon EBS Volumes in the Amazon Elastic Compute Cloud User Guide. - */ - describeVolumes(callback?: (err: AWSError, data: EC2.Types.DescribeVolumesResult) => void): Request; - /** - * Reports the current modification status of EBS volumes. Current-generation EBS volumes support modification of attributes including type, size, and (for io1 volumes) IOPS provisioning while either attached to or detached from an instance. Following an action from the API or the console to modify a volume, the status of the modification may be modifying, optimizing, completed, or failed. If a volume has never been modified, then certain elements of the returned VolumeModification objects are null. You can also use CloudWatch Events to check the status of a modification to an EBS volume. For information about CloudWatch Events, see the Amazon CloudWatch Events User Guide. For more information, see Monitoring Volume Modifications". - */ - describeVolumesModifications(params: EC2.Types.DescribeVolumesModificationsRequest, callback?: (err: AWSError, data: EC2.Types.DescribeVolumesModificationsResult) => void): Request; - /** - * Reports the current modification status of EBS volumes. Current-generation EBS volumes support modification of attributes including type, size, and (for io1 volumes) IOPS provisioning while either attached to or detached from an instance. Following an action from the API or the console to modify a volume, the status of the modification may be modifying, optimizing, completed, or failed. If a volume has never been modified, then certain elements of the returned VolumeModification objects are null. You can also use CloudWatch Events to check the status of a modification to an EBS volume. For information about CloudWatch Events, see the Amazon CloudWatch Events User Guide. For more information, see Monitoring Volume Modifications". - */ - describeVolumesModifications(callback?: (err: AWSError, data: EC2.Types.DescribeVolumesModificationsResult) => void): Request; - /** - * Describes the specified attribute of the specified VPC. You can specify only one attribute at a time. - */ - describeVpcAttribute(params: EC2.Types.DescribeVpcAttributeRequest, callback?: (err: AWSError, data: EC2.Types.DescribeVpcAttributeResult) => void): Request; - /** - * Describes the specified attribute of the specified VPC. You can specify only one attribute at a time. - */ - describeVpcAttribute(callback?: (err: AWSError, data: EC2.Types.DescribeVpcAttributeResult) => void): Request; - /** - * Describes the ClassicLink status of one or more VPCs. - */ - describeVpcClassicLink(params: EC2.Types.DescribeVpcClassicLinkRequest, callback?: (err: AWSError, data: EC2.Types.DescribeVpcClassicLinkResult) => void): Request; - /** - * Describes the ClassicLink status of one or more VPCs. - */ - describeVpcClassicLink(callback?: (err: AWSError, data: EC2.Types.DescribeVpcClassicLinkResult) => void): Request; - /** - * Describes the ClassicLink DNS support status of one or more VPCs. If enabled, the DNS hostname of a linked EC2-Classic instance resolves to its private IP address when addressed from an instance in the VPC to which it's linked. Similarly, the DNS hostname of an instance in a VPC resolves to its private IP address when addressed from a linked EC2-Classic instance. For more information, see ClassicLink in the Amazon Elastic Compute Cloud User Guide. - */ - describeVpcClassicLinkDnsSupport(params: EC2.Types.DescribeVpcClassicLinkDnsSupportRequest, callback?: (err: AWSError, data: EC2.Types.DescribeVpcClassicLinkDnsSupportResult) => void): Request; - /** - * Describes the ClassicLink DNS support status of one or more VPCs. If enabled, the DNS hostname of a linked EC2-Classic instance resolves to its private IP address when addressed from an instance in the VPC to which it's linked. Similarly, the DNS hostname of an instance in a VPC resolves to its private IP address when addressed from a linked EC2-Classic instance. For more information, see ClassicLink in the Amazon Elastic Compute Cloud User Guide. - */ - describeVpcClassicLinkDnsSupport(callback?: (err: AWSError, data: EC2.Types.DescribeVpcClassicLinkDnsSupportResult) => void): Request; - /** - * Describes all supported AWS services that can be specified when creating a VPC endpoint. - */ - describeVpcEndpointServices(params: EC2.Types.DescribeVpcEndpointServicesRequest, callback?: (err: AWSError, data: EC2.Types.DescribeVpcEndpointServicesResult) => void): Request; - /** - * Describes all supported AWS services that can be specified when creating a VPC endpoint. - */ - describeVpcEndpointServices(callback?: (err: AWSError, data: EC2.Types.DescribeVpcEndpointServicesResult) => void): Request; - /** - * Describes one or more of your VPC endpoints. - */ - describeVpcEndpoints(params: EC2.Types.DescribeVpcEndpointsRequest, callback?: (err: AWSError, data: EC2.Types.DescribeVpcEndpointsResult) => void): Request; - /** - * Describes one or more of your VPC endpoints. - */ - describeVpcEndpoints(callback?: (err: AWSError, data: EC2.Types.DescribeVpcEndpointsResult) => void): Request; - /** - * Describes one or more of your VPC peering connections. - */ - describeVpcPeeringConnections(params: EC2.Types.DescribeVpcPeeringConnectionsRequest, callback?: (err: AWSError, data: EC2.Types.DescribeVpcPeeringConnectionsResult) => void): Request; - /** - * Describes one or more of your VPC peering connections. - */ - describeVpcPeeringConnections(callback?: (err: AWSError, data: EC2.Types.DescribeVpcPeeringConnectionsResult) => void): Request; - /** - * Describes one or more of your VPCs. - */ - describeVpcs(params: EC2.Types.DescribeVpcsRequest, callback?: (err: AWSError, data: EC2.Types.DescribeVpcsResult) => void): Request; - /** - * Describes one or more of your VPCs. - */ - describeVpcs(callback?: (err: AWSError, data: EC2.Types.DescribeVpcsResult) => void): Request; - /** - * Describes one or more of your VPN connections. For more information about VPN connections, see AWS Managed VPN Connections in the Amazon Virtual Private Cloud User Guide. - */ - describeVpnConnections(params: EC2.Types.DescribeVpnConnectionsRequest, callback?: (err: AWSError, data: EC2.Types.DescribeVpnConnectionsResult) => void): Request; - /** - * Describes one or more of your VPN connections. For more information about VPN connections, see AWS Managed VPN Connections in the Amazon Virtual Private Cloud User Guide. - */ - describeVpnConnections(callback?: (err: AWSError, data: EC2.Types.DescribeVpnConnectionsResult) => void): Request; - /** - * Describes one or more of your virtual private gateways. For more information about virtual private gateways, see AWS Managed VPN Connections in the Amazon Virtual Private Cloud User Guide. - */ - describeVpnGateways(params: EC2.Types.DescribeVpnGatewaysRequest, callback?: (err: AWSError, data: EC2.Types.DescribeVpnGatewaysResult) => void): Request; - /** - * Describes one or more of your virtual private gateways. For more information about virtual private gateways, see AWS Managed VPN Connections in the Amazon Virtual Private Cloud User Guide. - */ - describeVpnGateways(callback?: (err: AWSError, data: EC2.Types.DescribeVpnGatewaysResult) => void): Request; - /** - * Unlinks (detaches) a linked EC2-Classic instance from a VPC. After the instance has been unlinked, the VPC security groups are no longer associated with it. An instance is automatically unlinked from a VPC when it's stopped. - */ - detachClassicLinkVpc(params: EC2.Types.DetachClassicLinkVpcRequest, callback?: (err: AWSError, data: EC2.Types.DetachClassicLinkVpcResult) => void): Request; - /** - * Unlinks (detaches) a linked EC2-Classic instance from a VPC. After the instance has been unlinked, the VPC security groups are no longer associated with it. An instance is automatically unlinked from a VPC when it's stopped. - */ - detachClassicLinkVpc(callback?: (err: AWSError, data: EC2.Types.DetachClassicLinkVpcResult) => void): Request; - /** - * Detaches an Internet gateway from a VPC, disabling connectivity between the Internet and the VPC. The VPC must not contain any running instances with Elastic IP addresses or public IPv4 addresses. - */ - detachInternetGateway(params: EC2.Types.DetachInternetGatewayRequest, callback?: (err: AWSError, data: {}) => void): Request<{}, AWSError>; - /** - * Detaches an Internet gateway from a VPC, disabling connectivity between the Internet and the VPC. The VPC must not contain any running instances with Elastic IP addresses or public IPv4 addresses. - */ - detachInternetGateway(callback?: (err: AWSError, data: {}) => void): Request<{}, AWSError>; - /** - * Detaches a network interface from an instance. - */ - detachNetworkInterface(params: EC2.Types.DetachNetworkInterfaceRequest, callback?: (err: AWSError, data: {}) => void): Request<{}, AWSError>; - /** - * Detaches a network interface from an instance. - */ - detachNetworkInterface(callback?: (err: AWSError, data: {}) => void): Request<{}, AWSError>; - /** - * Detaches an EBS volume from an instance. Make sure to unmount any file systems on the device within your operating system before detaching the volume. Failure to do so can result in the volume becoming stuck in the busy state while detaching. If this happens, detachment can be delayed indefinitely until you unmount the volume, force detachment, reboot the instance, or all three. If an EBS volume is the root device of an instance, it can't be detached while the instance is running. To detach the root volume, stop the instance first. When a volume with an AWS Marketplace product code is detached from an instance, the product code is no longer associated with the instance. For more information, see Detaching an Amazon EBS Volume in the Amazon Elastic Compute Cloud User Guide. - */ - detachVolume(params: EC2.Types.DetachVolumeRequest, callback?: (err: AWSError, data: EC2.Types.VolumeAttachment) => void): Request; - /** - * Detaches an EBS volume from an instance. Make sure to unmount any file systems on the device within your operating system before detaching the volume. Failure to do so can result in the volume becoming stuck in the busy state while detaching. If this happens, detachment can be delayed indefinitely until you unmount the volume, force detachment, reboot the instance, or all three. If an EBS volume is the root device of an instance, it can't be detached while the instance is running. To detach the root volume, stop the instance first. When a volume with an AWS Marketplace product code is detached from an instance, the product code is no longer associated with the instance. For more information, see Detaching an Amazon EBS Volume in the Amazon Elastic Compute Cloud User Guide. - */ - detachVolume(callback?: (err: AWSError, data: EC2.Types.VolumeAttachment) => void): Request; - /** - * Detaches a virtual private gateway from a VPC. You do this if you're planning to turn off the VPC and not use it anymore. You can confirm a virtual private gateway has been completely detached from a VPC by describing the virtual private gateway (any attachments to the virtual private gateway are also described). You must wait for the attachment's state to switch to detached before you can delete the VPC or attach a different VPC to the virtual private gateway. - */ - detachVpnGateway(params: EC2.Types.DetachVpnGatewayRequest, callback?: (err: AWSError, data: {}) => void): Request<{}, AWSError>; - /** - * Detaches a virtual private gateway from a VPC. You do this if you're planning to turn off the VPC and not use it anymore. You can confirm a virtual private gateway has been completely detached from a VPC by describing the virtual private gateway (any attachments to the virtual private gateway are also described). You must wait for the attachment's state to switch to detached before you can delete the VPC or attach a different VPC to the virtual private gateway. - */ - detachVpnGateway(callback?: (err: AWSError, data: {}) => void): Request<{}, AWSError>; - /** - * Disables a virtual private gateway (VGW) from propagating routes to a specified route table of a VPC. - */ - disableVgwRoutePropagation(params: EC2.Types.DisableVgwRoutePropagationRequest, callback?: (err: AWSError, data: {}) => void): Request<{}, AWSError>; - /** - * Disables a virtual private gateway (VGW) from propagating routes to a specified route table of a VPC. - */ - disableVgwRoutePropagation(callback?: (err: AWSError, data: {}) => void): Request<{}, AWSError>; - /** - * Disables ClassicLink for a VPC. You cannot disable ClassicLink for a VPC that has EC2-Classic instances linked to it. - */ - disableVpcClassicLink(params: EC2.Types.DisableVpcClassicLinkRequest, callback?: (err: AWSError, data: EC2.Types.DisableVpcClassicLinkResult) => void): Request; - /** - * Disables ClassicLink for a VPC. You cannot disable ClassicLink for a VPC that has EC2-Classic instances linked to it. - */ - disableVpcClassicLink(callback?: (err: AWSError, data: EC2.Types.DisableVpcClassicLinkResult) => void): Request; - /** - * Disables ClassicLink DNS support for a VPC. If disabled, DNS hostnames resolve to public IP addresses when addressed between a linked EC2-Classic instance and instances in the VPC to which it's linked. For more information about ClassicLink, see ClassicLink in the Amazon Elastic Compute Cloud User Guide. - */ - disableVpcClassicLinkDnsSupport(params: EC2.Types.DisableVpcClassicLinkDnsSupportRequest, callback?: (err: AWSError, data: EC2.Types.DisableVpcClassicLinkDnsSupportResult) => void): Request; - /** - * Disables ClassicLink DNS support for a VPC. If disabled, DNS hostnames resolve to public IP addresses when addressed between a linked EC2-Classic instance and instances in the VPC to which it's linked. For more information about ClassicLink, see ClassicLink in the Amazon Elastic Compute Cloud User Guide. - */ - disableVpcClassicLinkDnsSupport(callback?: (err: AWSError, data: EC2.Types.DisableVpcClassicLinkDnsSupportResult) => void): Request; - /** - * Disassociates an Elastic IP address from the instance or network interface it's associated with. An Elastic IP address is for use in either the EC2-Classic platform or in a VPC. For more information, see Elastic IP Addresses in the Amazon Elastic Compute Cloud User Guide. This is an idempotent operation. If you perform the operation more than once, Amazon EC2 doesn't return an error. - */ - disassociateAddress(params: EC2.Types.DisassociateAddressRequest, callback?: (err: AWSError, data: {}) => void): Request<{}, AWSError>; - /** - * Disassociates an Elastic IP address from the instance or network interface it's associated with. An Elastic IP address is for use in either the EC2-Classic platform or in a VPC. For more information, see Elastic IP Addresses in the Amazon Elastic Compute Cloud User Guide. This is an idempotent operation. If you perform the operation more than once, Amazon EC2 doesn't return an error. - */ - disassociateAddress(callback?: (err: AWSError, data: {}) => void): Request<{}, AWSError>; - /** - * Disassociates an IAM instance profile from a running or stopped instance. Use DescribeIamInstanceProfileAssociations to get the association ID. - */ - disassociateIamInstanceProfile(params: EC2.Types.DisassociateIamInstanceProfileRequest, callback?: (err: AWSError, data: EC2.Types.DisassociateIamInstanceProfileResult) => void): Request; - /** - * Disassociates an IAM instance profile from a running or stopped instance. Use DescribeIamInstanceProfileAssociations to get the association ID. - */ - disassociateIamInstanceProfile(callback?: (err: AWSError, data: EC2.Types.DisassociateIamInstanceProfileResult) => void): Request; - /** - * Disassociates a subnet from a route table. After you perform this action, the subnet no longer uses the routes in the route table. Instead, it uses the routes in the VPC's main route table. For more information about route tables, see Route Tables in the Amazon Virtual Private Cloud User Guide. - */ - disassociateRouteTable(params: EC2.Types.DisassociateRouteTableRequest, callback?: (err: AWSError, data: {}) => void): Request<{}, AWSError>; - /** - * Disassociates a subnet from a route table. After you perform this action, the subnet no longer uses the routes in the route table. Instead, it uses the routes in the VPC's main route table. For more information about route tables, see Route Tables in the Amazon Virtual Private Cloud User Guide. - */ - disassociateRouteTable(callback?: (err: AWSError, data: {}) => void): Request<{}, AWSError>; - /** - * Disassociates a CIDR block from a subnet. Currently, you can disassociate an IPv6 CIDR block only. You must detach or delete all gateways and resources that are associated with the CIDR block before you can disassociate it. - */ - disassociateSubnetCidrBlock(params: EC2.Types.DisassociateSubnetCidrBlockRequest, callback?: (err: AWSError, data: EC2.Types.DisassociateSubnetCidrBlockResult) => void): Request; - /** - * Disassociates a CIDR block from a subnet. Currently, you can disassociate an IPv6 CIDR block only. You must detach or delete all gateways and resources that are associated with the CIDR block before you can disassociate it. - */ - disassociateSubnetCidrBlock(callback?: (err: AWSError, data: EC2.Types.DisassociateSubnetCidrBlockResult) => void): Request; - /** - * Disassociates a CIDR block from a VPC. To disassociate the CIDR block, you must specify its association ID. You can get the association ID by using DescribeVpcs. You must detach or delete all gateways and resources that are associated with the CIDR block before you can disassociate it. You cannot disassociate the CIDR block with which you originally created the VPC (the primary CIDR block). - */ - disassociateVpcCidrBlock(params: EC2.Types.DisassociateVpcCidrBlockRequest, callback?: (err: AWSError, data: EC2.Types.DisassociateVpcCidrBlockResult) => void): Request; - /** - * Disassociates a CIDR block from a VPC. To disassociate the CIDR block, you must specify its association ID. You can get the association ID by using DescribeVpcs. You must detach or delete all gateways and resources that are associated with the CIDR block before you can disassociate it. You cannot disassociate the CIDR block with which you originally created the VPC (the primary CIDR block). - */ - disassociateVpcCidrBlock(callback?: (err: AWSError, data: EC2.Types.DisassociateVpcCidrBlockResult) => void): Request; - /** - * Enables a virtual private gateway (VGW) to propagate routes to the specified route table of a VPC. - */ - enableVgwRoutePropagation(params: EC2.Types.EnableVgwRoutePropagationRequest, callback?: (err: AWSError, data: {}) => void): Request<{}, AWSError>; - /** - * Enables a virtual private gateway (VGW) to propagate routes to the specified route table of a VPC. - */ - enableVgwRoutePropagation(callback?: (err: AWSError, data: {}) => void): Request<{}, AWSError>; - /** - * Enables I/O operations for a volume that had I/O operations disabled because the data on the volume was potentially inconsistent. - */ - enableVolumeIO(params: EC2.Types.EnableVolumeIORequest, callback?: (err: AWSError, data: {}) => void): Request<{}, AWSError>; - /** - * Enables I/O operations for a volume that had I/O operations disabled because the data on the volume was potentially inconsistent. - */ - enableVolumeIO(callback?: (err: AWSError, data: {}) => void): Request<{}, AWSError>; - /** - * Enables a VPC for ClassicLink. You can then link EC2-Classic instances to your ClassicLink-enabled VPC to allow communication over private IP addresses. You cannot enable your VPC for ClassicLink if any of your VPC's route tables have existing routes for address ranges within the 10.0.0.0/8 IP address range, excluding local routes for VPCs in the 10.0.0.0/16 and 10.1.0.0/16 IP address ranges. For more information, see ClassicLink in the Amazon Elastic Compute Cloud User Guide. - */ - enableVpcClassicLink(params: EC2.Types.EnableVpcClassicLinkRequest, callback?: (err: AWSError, data: EC2.Types.EnableVpcClassicLinkResult) => void): Request; - /** - * Enables a VPC for ClassicLink. You can then link EC2-Classic instances to your ClassicLink-enabled VPC to allow communication over private IP addresses. You cannot enable your VPC for ClassicLink if any of your VPC's route tables have existing routes for address ranges within the 10.0.0.0/8 IP address range, excluding local routes for VPCs in the 10.0.0.0/16 and 10.1.0.0/16 IP address ranges. For more information, see ClassicLink in the Amazon Elastic Compute Cloud User Guide. - */ - enableVpcClassicLink(callback?: (err: AWSError, data: EC2.Types.EnableVpcClassicLinkResult) => void): Request; - /** - * Enables a VPC to support DNS hostname resolution for ClassicLink. If enabled, the DNS hostname of a linked EC2-Classic instance resolves to its private IP address when addressed from an instance in the VPC to which it's linked. Similarly, the DNS hostname of an instance in a VPC resolves to its private IP address when addressed from a linked EC2-Classic instance. For more information about ClassicLink, see ClassicLink in the Amazon Elastic Compute Cloud User Guide. - */ - enableVpcClassicLinkDnsSupport(params: EC2.Types.EnableVpcClassicLinkDnsSupportRequest, callback?: (err: AWSError, data: EC2.Types.EnableVpcClassicLinkDnsSupportResult) => void): Request; - /** - * Enables a VPC to support DNS hostname resolution for ClassicLink. If enabled, the DNS hostname of a linked EC2-Classic instance resolves to its private IP address when addressed from an instance in the VPC to which it's linked. Similarly, the DNS hostname of an instance in a VPC resolves to its private IP address when addressed from a linked EC2-Classic instance. For more information about ClassicLink, see ClassicLink in the Amazon Elastic Compute Cloud User Guide. - */ - enableVpcClassicLinkDnsSupport(callback?: (err: AWSError, data: EC2.Types.EnableVpcClassicLinkDnsSupportResult) => void): Request; - /** - * Gets the console output for the specified instance. Instances do not have a physical monitor through which you can view their console output. They also lack physical controls that allow you to power up, reboot, or shut them down. To allow these actions, we provide them through the Amazon EC2 API and command line interface. Instance console output is buffered and posted shortly after instance boot, reboot, and termination. Amazon EC2 preserves the most recent 64 KB output, which is available for at least one hour after the most recent post. For Linux instances, the instance console output displays the exact console output that would normally be displayed on a physical monitor attached to a computer. This output is buffered because the instance produces it and then posts it to a store where the instance's owner can retrieve it. For Windows instances, the instance console output includes output from the EC2Config service. - */ - getConsoleOutput(params: EC2.Types.GetConsoleOutputRequest, callback?: (err: AWSError, data: EC2.Types.GetConsoleOutputResult) => void): Request; - /** - * Gets the console output for the specified instance. Instances do not have a physical monitor through which you can view their console output. They also lack physical controls that allow you to power up, reboot, or shut them down. To allow these actions, we provide them through the Amazon EC2 API and command line interface. Instance console output is buffered and posted shortly after instance boot, reboot, and termination. Amazon EC2 preserves the most recent 64 KB output, which is available for at least one hour after the most recent post. For Linux instances, the instance console output displays the exact console output that would normally be displayed on a physical monitor attached to a computer. This output is buffered because the instance produces it and then posts it to a store where the instance's owner can retrieve it. For Windows instances, the instance console output includes output from the EC2Config service. - */ - getConsoleOutput(callback?: (err: AWSError, data: EC2.Types.GetConsoleOutputResult) => void): Request; - /** - * Retrieve a JPG-format screenshot of a running instance to help with troubleshooting. The returned content is Base64-encoded. - */ - getConsoleScreenshot(params: EC2.Types.GetConsoleScreenshotRequest, callback?: (err: AWSError, data: EC2.Types.GetConsoleScreenshotResult) => void): Request; - /** - * Retrieve a JPG-format screenshot of a running instance to help with troubleshooting. The returned content is Base64-encoded. - */ - getConsoleScreenshot(callback?: (err: AWSError, data: EC2.Types.GetConsoleScreenshotResult) => void): Request; - /** - * Preview a reservation purchase with configurations that match those of your Dedicated Host. You must have active Dedicated Hosts in your account before you purchase a reservation. This is a preview of the PurchaseHostReservation action and does not result in the offering being purchased. - */ - getHostReservationPurchasePreview(params: EC2.Types.GetHostReservationPurchasePreviewRequest, callback?: (err: AWSError, data: EC2.Types.GetHostReservationPurchasePreviewResult) => void): Request; - /** - * Preview a reservation purchase with configurations that match those of your Dedicated Host. You must have active Dedicated Hosts in your account before you purchase a reservation. This is a preview of the PurchaseHostReservation action and does not result in the offering being purchased. - */ - getHostReservationPurchasePreview(callback?: (err: AWSError, data: EC2.Types.GetHostReservationPurchasePreviewResult) => void): Request; - /** - * Retrieves the encrypted administrator password for a running Windows instance. The Windows password is generated at boot by the EC2Config service or EC2Launch scripts (Windows Server 2016 and later). This usually only happens the first time an instance is launched. For more information, see EC2Config and EC2Launch in the Amazon Elastic Compute Cloud User Guide. For the EC2Config service, the password is not generated for rebundled AMIs unless Ec2SetPassword is enabled before bundling. The password is encrypted using the key pair that you specified when you launched the instance. You must provide the corresponding key pair file. When you launch an instance, password generation and encryption may take a few minutes. If you try to retrieve the password before it's available, the output returns an empty string. We recommend that you wait up to 15 minutes after launching an instance before trying to retrieve the generated password. - */ - getPasswordData(params: EC2.Types.GetPasswordDataRequest, callback?: (err: AWSError, data: EC2.Types.GetPasswordDataResult) => void): Request; - /** - * Retrieves the encrypted administrator password for a running Windows instance. The Windows password is generated at boot by the EC2Config service or EC2Launch scripts (Windows Server 2016 and later). This usually only happens the first time an instance is launched. For more information, see EC2Config and EC2Launch in the Amazon Elastic Compute Cloud User Guide. For the EC2Config service, the password is not generated for rebundled AMIs unless Ec2SetPassword is enabled before bundling. The password is encrypted using the key pair that you specified when you launched the instance. You must provide the corresponding key pair file. When you launch an instance, password generation and encryption may take a few minutes. If you try to retrieve the password before it's available, the output returns an empty string. We recommend that you wait up to 15 minutes after launching an instance before trying to retrieve the generated password. - */ - getPasswordData(callback?: (err: AWSError, data: EC2.Types.GetPasswordDataResult) => void): Request; - /** - * Returns details about the values and term of your specified Convertible Reserved Instances. When a target configuration is specified, it returns information about whether the exchange is valid and can be performed. - */ - getReservedInstancesExchangeQuote(params: EC2.Types.GetReservedInstancesExchangeQuoteRequest, callback?: (err: AWSError, data: EC2.Types.GetReservedInstancesExchangeQuoteResult) => void): Request; - /** - * Returns details about the values and term of your specified Convertible Reserved Instances. When a target configuration is specified, it returns information about whether the exchange is valid and can be performed. - */ - getReservedInstancesExchangeQuote(callback?: (err: AWSError, data: EC2.Types.GetReservedInstancesExchangeQuoteResult) => void): Request; - /** - * Import single or multi-volume disk images or EBS snapshots into an Amazon Machine Image (AMI). For more information, see Importing a VM as an Image Using VM Import/Export in the VM Import/Export User Guide. - */ - importImage(params: EC2.Types.ImportImageRequest, callback?: (err: AWSError, data: EC2.Types.ImportImageResult) => void): Request; - /** - * Import single or multi-volume disk images or EBS snapshots into an Amazon Machine Image (AMI). For more information, see Importing a VM as an Image Using VM Import/Export in the VM Import/Export User Guide. - */ - importImage(callback?: (err: AWSError, data: EC2.Types.ImportImageResult) => void): Request; - /** - * Creates an import instance task using metadata from the specified disk image. ImportInstance only supports single-volume VMs. To import multi-volume VMs, use ImportImage. For more information, see Importing a Virtual Machine Using the Amazon EC2 CLI. For information about the import manifest referenced by this API action, see VM Import Manifest. - */ - importInstance(params: EC2.Types.ImportInstanceRequest, callback?: (err: AWSError, data: EC2.Types.ImportInstanceResult) => void): Request; - /** - * Creates an import instance task using metadata from the specified disk image. ImportInstance only supports single-volume VMs. To import multi-volume VMs, use ImportImage. For more information, see Importing a Virtual Machine Using the Amazon EC2 CLI. For information about the import manifest referenced by this API action, see VM Import Manifest. - */ - importInstance(callback?: (err: AWSError, data: EC2.Types.ImportInstanceResult) => void): Request; - /** - * Imports the public key from an RSA key pair that you created with a third-party tool. Compare this with CreateKeyPair, in which AWS creates the key pair and gives the keys to you (AWS keeps a copy of the public key). With ImportKeyPair, you create the key pair and give AWS just the public key. The private key is never transferred between you and AWS. For more information about key pairs, see Key Pairs in the Amazon Elastic Compute Cloud User Guide. - */ - importKeyPair(params: EC2.Types.ImportKeyPairRequest, callback?: (err: AWSError, data: EC2.Types.ImportKeyPairResult) => void): Request; - /** - * Imports the public key from an RSA key pair that you created with a third-party tool. Compare this with CreateKeyPair, in which AWS creates the key pair and gives the keys to you (AWS keeps a copy of the public key). With ImportKeyPair, you create the key pair and give AWS just the public key. The private key is never transferred between you and AWS. For more information about key pairs, see Key Pairs in the Amazon Elastic Compute Cloud User Guide. - */ - importKeyPair(callback?: (err: AWSError, data: EC2.Types.ImportKeyPairResult) => void): Request; - /** - * Imports a disk into an EBS snapshot. - */ - importSnapshot(params: EC2.Types.ImportSnapshotRequest, callback?: (err: AWSError, data: EC2.Types.ImportSnapshotResult) => void): Request; - /** - * Imports a disk into an EBS snapshot. - */ - importSnapshot(callback?: (err: AWSError, data: EC2.Types.ImportSnapshotResult) => void): Request; - /** - * Creates an import volume task using metadata from the specified disk image.For more information, see Importing Disks to Amazon EBS. For information about the import manifest referenced by this API action, see VM Import Manifest. - */ - importVolume(params: EC2.Types.ImportVolumeRequest, callback?: (err: AWSError, data: EC2.Types.ImportVolumeResult) => void): Request; - /** - * Creates an import volume task using metadata from the specified disk image.For more information, see Importing Disks to Amazon EBS. For information about the import manifest referenced by this API action, see VM Import Manifest. - */ - importVolume(callback?: (err: AWSError, data: EC2.Types.ImportVolumeResult) => void): Request; - /** - * Modifies the specified attribute of the specified Amazon FPGA Image (AFI). - */ - modifyFpgaImageAttribute(params: EC2.Types.ModifyFpgaImageAttributeRequest, callback?: (err: AWSError, data: EC2.Types.ModifyFpgaImageAttributeResult) => void): Request; - /** - * Modifies the specified attribute of the specified Amazon FPGA Image (AFI). - */ - modifyFpgaImageAttribute(callback?: (err: AWSError, data: EC2.Types.ModifyFpgaImageAttributeResult) => void): Request; - /** - * Modify the auto-placement setting of a Dedicated Host. When auto-placement is enabled, AWS will place instances that you launch with a tenancy of host, but without targeting a specific host ID, onto any available Dedicated Host in your account which has auto-placement enabled. When auto-placement is disabled, you need to provide a host ID if you want the instance to launch onto a specific host. If no host ID is provided, the instance will be launched onto a suitable host which has auto-placement enabled. - */ - modifyHosts(params: EC2.Types.ModifyHostsRequest, callback?: (err: AWSError, data: EC2.Types.ModifyHostsResult) => void): Request; - /** - * Modify the auto-placement setting of a Dedicated Host. When auto-placement is enabled, AWS will place instances that you launch with a tenancy of host, but without targeting a specific host ID, onto any available Dedicated Host in your account which has auto-placement enabled. When auto-placement is disabled, you need to provide a host ID if you want the instance to launch onto a specific host. If no host ID is provided, the instance will be launched onto a suitable host which has auto-placement enabled. - */ - modifyHosts(callback?: (err: AWSError, data: EC2.Types.ModifyHostsResult) => void): Request; - /** - * Modifies the ID format for the specified resource on a per-region basis. You can specify that resources should receive longer IDs (17-character IDs) when they are created. The following resource types support longer IDs: instance | reservation | snapshot | volume. This setting applies to the IAM user who makes the request; it does not apply to the entire AWS account. By default, an IAM user defaults to the same settings as the root user. If you're using this action as the root user, then these settings apply to the entire account, unless an IAM user explicitly overrides these settings for themselves. For more information, see Resource IDs in the Amazon Elastic Compute Cloud User Guide. Resources created with longer IDs are visible to all IAM roles and users, regardless of these settings and provided that they have permission to use the relevant Describe command for the resource type. - */ - modifyIdFormat(params: EC2.Types.ModifyIdFormatRequest, callback?: (err: AWSError, data: {}) => void): Request<{}, AWSError>; - /** - * Modifies the ID format for the specified resource on a per-region basis. You can specify that resources should receive longer IDs (17-character IDs) when they are created. The following resource types support longer IDs: instance | reservation | snapshot | volume. This setting applies to the IAM user who makes the request; it does not apply to the entire AWS account. By default, an IAM user defaults to the same settings as the root user. If you're using this action as the root user, then these settings apply to the entire account, unless an IAM user explicitly overrides these settings for themselves. For more information, see Resource IDs in the Amazon Elastic Compute Cloud User Guide. Resources created with longer IDs are visible to all IAM roles and users, regardless of these settings and provided that they have permission to use the relevant Describe command for the resource type. - */ - modifyIdFormat(callback?: (err: AWSError, data: {}) => void): Request<{}, AWSError>; - /** - * Modifies the ID format of a resource for a specified IAM user, IAM role, or the root user for an account; or all IAM users, IAM roles, and the root user for an account. You can specify that resources should receive longer IDs (17-character IDs) when they are created. The following resource types support longer IDs: instance | reservation | snapshot | volume. For more information, see Resource IDs in the Amazon Elastic Compute Cloud User Guide. This setting applies to the principal specified in the request; it does not apply to the principal that makes the request. Resources created with longer IDs are visible to all IAM roles and users, regardless of these settings and provided that they have permission to use the relevant Describe command for the resource type. - */ - modifyIdentityIdFormat(params: EC2.Types.ModifyIdentityIdFormatRequest, callback?: (err: AWSError, data: {}) => void): Request<{}, AWSError>; - /** - * Modifies the ID format of a resource for a specified IAM user, IAM role, or the root user for an account; or all IAM users, IAM roles, and the root user for an account. You can specify that resources should receive longer IDs (17-character IDs) when they are created. The following resource types support longer IDs: instance | reservation | snapshot | volume. For more information, see Resource IDs in the Amazon Elastic Compute Cloud User Guide. This setting applies to the principal specified in the request; it does not apply to the principal that makes the request. Resources created with longer IDs are visible to all IAM roles and users, regardless of these settings and provided that they have permission to use the relevant Describe command for the resource type. - */ - modifyIdentityIdFormat(callback?: (err: AWSError, data: {}) => void): Request<{}, AWSError>; - /** - * Modifies the specified attribute of the specified AMI. You can specify only one attribute at a time. You can use the Attribute parameter to specify the attribute or one of the following parameters: Description, LaunchPermission, or ProductCode. AWS Marketplace product codes cannot be modified. Images with an AWS Marketplace product code cannot be made public. To enable the SriovNetSupport enhanced networking attribute of an image, enable SriovNetSupport on an instance and create an AMI from the instance. - */ - modifyImageAttribute(params: EC2.Types.ModifyImageAttributeRequest, callback?: (err: AWSError, data: {}) => void): Request<{}, AWSError>; - /** - * Modifies the specified attribute of the specified AMI. You can specify only one attribute at a time. You can use the Attribute parameter to specify the attribute or one of the following parameters: Description, LaunchPermission, or ProductCode. AWS Marketplace product codes cannot be modified. Images with an AWS Marketplace product code cannot be made public. To enable the SriovNetSupport enhanced networking attribute of an image, enable SriovNetSupport on an instance and create an AMI from the instance. - */ - modifyImageAttribute(callback?: (err: AWSError, data: {}) => void): Request<{}, AWSError>; - /** - * Modifies the specified attribute of the specified instance. You can specify only one attribute at a time. To modify some attributes, the instance must be stopped. For more information, see Modifying Attributes of a Stopped Instance in the Amazon Elastic Compute Cloud User Guide. - */ - modifyInstanceAttribute(params: EC2.Types.ModifyInstanceAttributeRequest, callback?: (err: AWSError, data: {}) => void): Request<{}, AWSError>; - /** - * Modifies the specified attribute of the specified instance. You can specify only one attribute at a time. To modify some attributes, the instance must be stopped. For more information, see Modifying Attributes of a Stopped Instance in the Amazon Elastic Compute Cloud User Guide. - */ - modifyInstanceAttribute(callback?: (err: AWSError, data: {}) => void): Request<{}, AWSError>; - /** - * Set the instance affinity value for a specific stopped instance and modify the instance tenancy setting. Instance affinity is disabled by default. When instance affinity is host and it is not associated with a specific Dedicated Host, the next time it is launched it will automatically be associated with the host it lands on. This relationship will persist if the instance is stopped/started, or rebooted. You can modify the host ID associated with a stopped instance. If a stopped instance has a new host ID association, the instance will target that host when restarted. You can modify the tenancy of a stopped instance with a tenancy of host or dedicated. Affinity, hostID, and tenancy are not required parameters, but at least one of them must be specified in the request. Affinity and tenancy can be modified in the same request, but tenancy can only be modified on instances that are stopped. - */ - modifyInstancePlacement(params: EC2.Types.ModifyInstancePlacementRequest, callback?: (err: AWSError, data: EC2.Types.ModifyInstancePlacementResult) => void): Request; - /** - * Set the instance affinity value for a specific stopped instance and modify the instance tenancy setting. Instance affinity is disabled by default. When instance affinity is host and it is not associated with a specific Dedicated Host, the next time it is launched it will automatically be associated with the host it lands on. This relationship will persist if the instance is stopped/started, or rebooted. You can modify the host ID associated with a stopped instance. If a stopped instance has a new host ID association, the instance will target that host when restarted. You can modify the tenancy of a stopped instance with a tenancy of host or dedicated. Affinity, hostID, and tenancy are not required parameters, but at least one of them must be specified in the request. Affinity and tenancy can be modified in the same request, but tenancy can only be modified on instances that are stopped. - */ - modifyInstancePlacement(callback?: (err: AWSError, data: EC2.Types.ModifyInstancePlacementResult) => void): Request; - /** - * Modifies the specified network interface attribute. You can specify only one attribute at a time. - */ - modifyNetworkInterfaceAttribute(params: EC2.Types.ModifyNetworkInterfaceAttributeRequest, callback?: (err: AWSError, data: {}) => void): Request<{}, AWSError>; - /** - * Modifies the specified network interface attribute. You can specify only one attribute at a time. - */ - modifyNetworkInterfaceAttribute(callback?: (err: AWSError, data: {}) => void): Request<{}, AWSError>; - /** - * Modifies the Availability Zone, instance count, instance type, or network platform (EC2-Classic or EC2-VPC) of your Standard Reserved Instances. The Reserved Instances to be modified must be identical, except for Availability Zone, network platform, and instance type. For more information, see Modifying Reserved Instances in the Amazon Elastic Compute Cloud User Guide. - */ - modifyReservedInstances(params: EC2.Types.ModifyReservedInstancesRequest, callback?: (err: AWSError, data: EC2.Types.ModifyReservedInstancesResult) => void): Request; - /** - * Modifies the Availability Zone, instance count, instance type, or network platform (EC2-Classic or EC2-VPC) of your Standard Reserved Instances. The Reserved Instances to be modified must be identical, except for Availability Zone, network platform, and instance type. For more information, see Modifying Reserved Instances in the Amazon Elastic Compute Cloud User Guide. - */ - modifyReservedInstances(callback?: (err: AWSError, data: EC2.Types.ModifyReservedInstancesResult) => void): Request; - /** - * Adds or removes permission settings for the specified snapshot. You may add or remove specified AWS account IDs from a snapshot's list of create volume permissions, but you cannot do both in a single API call. If you need to both add and remove account IDs for a snapshot, you must use multiple API calls. Encrypted snapshots and snapshots with AWS Marketplace product codes cannot be made public. Snapshots encrypted with your default CMK cannot be shared with other accounts. For more information on modifying snapshot permissions, see Sharing Snapshots in the Amazon Elastic Compute Cloud User Guide. - */ - modifySnapshotAttribute(params: EC2.Types.ModifySnapshotAttributeRequest, callback?: (err: AWSError, data: {}) => void): Request<{}, AWSError>; - /** - * Adds or removes permission settings for the specified snapshot. You may add or remove specified AWS account IDs from a snapshot's list of create volume permissions, but you cannot do both in a single API call. If you need to both add and remove account IDs for a snapshot, you must use multiple API calls. Encrypted snapshots and snapshots with AWS Marketplace product codes cannot be made public. Snapshots encrypted with your default CMK cannot be shared with other accounts. For more information on modifying snapshot permissions, see Sharing Snapshots in the Amazon Elastic Compute Cloud User Guide. - */ - modifySnapshotAttribute(callback?: (err: AWSError, data: {}) => void): Request<{}, AWSError>; - /** - * Modifies the specified Spot fleet request. While the Spot fleet request is being modified, it is in the modifying state. To scale up your Spot fleet, increase its target capacity. The Spot fleet launches the additional Spot instances according to the allocation strategy for the Spot fleet request. If the allocation strategy is lowestPrice, the Spot fleet launches instances using the Spot pool with the lowest price. If the allocation strategy is diversified, the Spot fleet distributes the instances across the Spot pools. To scale down your Spot fleet, decrease its target capacity. First, the Spot fleet cancels any open bids that exceed the new target capacity. You can request that the Spot fleet terminate Spot instances until the size of the fleet no longer exceeds the new target capacity. If the allocation strategy is lowestPrice, the Spot fleet terminates the instances with the highest price per unit. If the allocation strategy is diversified, the Spot fleet terminates instances across the Spot pools. Alternatively, you can request that the Spot fleet keep the fleet at its current size, but not replace any Spot instances that are interrupted or that you terminate manually. - */ - modifySpotFleetRequest(params: EC2.Types.ModifySpotFleetRequestRequest, callback?: (err: AWSError, data: EC2.Types.ModifySpotFleetRequestResponse) => void): Request; - /** - * Modifies the specified Spot fleet request. While the Spot fleet request is being modified, it is in the modifying state. To scale up your Spot fleet, increase its target capacity. The Spot fleet launches the additional Spot instances according to the allocation strategy for the Spot fleet request. If the allocation strategy is lowestPrice, the Spot fleet launches instances using the Spot pool with the lowest price. If the allocation strategy is diversified, the Spot fleet distributes the instances across the Spot pools. To scale down your Spot fleet, decrease its target capacity. First, the Spot fleet cancels any open bids that exceed the new target capacity. You can request that the Spot fleet terminate Spot instances until the size of the fleet no longer exceeds the new target capacity. If the allocation strategy is lowestPrice, the Spot fleet terminates the instances with the highest price per unit. If the allocation strategy is diversified, the Spot fleet terminates instances across the Spot pools. Alternatively, you can request that the Spot fleet keep the fleet at its current size, but not replace any Spot instances that are interrupted or that you terminate manually. - */ - modifySpotFleetRequest(callback?: (err: AWSError, data: EC2.Types.ModifySpotFleetRequestResponse) => void): Request; - /** - * Modifies a subnet attribute. You can only modify one attribute at a time. - */ - modifySubnetAttribute(params: EC2.Types.ModifySubnetAttributeRequest, callback?: (err: AWSError, data: {}) => void): Request<{}, AWSError>; - /** - * Modifies a subnet attribute. You can only modify one attribute at a time. - */ - modifySubnetAttribute(callback?: (err: AWSError, data: {}) => void): Request<{}, AWSError>; - /** - * You can modify several parameters of an existing EBS volume, including volume size, volume type, and IOPS capacity. If your EBS volume is attached to a current-generation EC2 instance type, you may be able to apply these changes without stopping the instance or detaching the volume from it. For more information about modifying an EBS volume running Linux, see Modifying the Size, IOPS, or Type of an EBS Volume on Linux. For more information about modifying an EBS volume running Windows, see Modifying the Size, IOPS, or Type of an EBS Volume on Windows. When you complete a resize operation on your volume, you need to extend the volume's file-system size to take advantage of the new storage capacity. For information about extending a Linux file system, see Extending a Linux File System. For information about extending a Windows file system, see Extending a Windows File System. You can use CloudWatch Events to check the status of a modification to an EBS volume. For information about CloudWatch Events, see the Amazon CloudWatch Events User Guide. You can also track the status of a modification using the DescribeVolumesModifications API. For information about tracking status changes using either method, see Monitoring Volume Modifications. With previous-generation instance types, resizing an EBS volume may require detaching and reattaching the volume or stopping and restarting the instance. For more information about modifying an EBS volume running Linux, see Modifying the Size, IOPS, or Type of an EBS Volume on Linux. For more information about modifying an EBS volume running Windows, see Modifying the Size, IOPS, or Type of an EBS Volume on Windows. If you reach the maximum volume modification rate per volume limit, you will need to wait at least six hours before applying further modifications to the affected EBS volume. - */ - modifyVolume(params: EC2.Types.ModifyVolumeRequest, callback?: (err: AWSError, data: EC2.Types.ModifyVolumeResult) => void): Request; - /** - * You can modify several parameters of an existing EBS volume, including volume size, volume type, and IOPS capacity. If your EBS volume is attached to a current-generation EC2 instance type, you may be able to apply these changes without stopping the instance or detaching the volume from it. For more information about modifying an EBS volume running Linux, see Modifying the Size, IOPS, or Type of an EBS Volume on Linux. For more information about modifying an EBS volume running Windows, see Modifying the Size, IOPS, or Type of an EBS Volume on Windows. When you complete a resize operation on your volume, you need to extend the volume's file-system size to take advantage of the new storage capacity. For information about extending a Linux file system, see Extending a Linux File System. For information about extending a Windows file system, see Extending a Windows File System. You can use CloudWatch Events to check the status of a modification to an EBS volume. For information about CloudWatch Events, see the Amazon CloudWatch Events User Guide. You can also track the status of a modification using the DescribeVolumesModifications API. For information about tracking status changes using either method, see Monitoring Volume Modifications. With previous-generation instance types, resizing an EBS volume may require detaching and reattaching the volume or stopping and restarting the instance. For more information about modifying an EBS volume running Linux, see Modifying the Size, IOPS, or Type of an EBS Volume on Linux. For more information about modifying an EBS volume running Windows, see Modifying the Size, IOPS, or Type of an EBS Volume on Windows. If you reach the maximum volume modification rate per volume limit, you will need to wait at least six hours before applying further modifications to the affected EBS volume. - */ - modifyVolume(callback?: (err: AWSError, data: EC2.Types.ModifyVolumeResult) => void): Request; - /** - * Modifies a volume attribute. By default, all I/O operations for the volume are suspended when the data on the volume is determined to be potentially inconsistent, to prevent undetectable, latent data corruption. The I/O access to the volume can be resumed by first enabling I/O access and then checking the data consistency on your volume. You can change the default behavior to resume I/O operations. We recommend that you change this only for boot volumes or for volumes that are stateless or disposable. - */ - modifyVolumeAttribute(params: EC2.Types.ModifyVolumeAttributeRequest, callback?: (err: AWSError, data: {}) => void): Request<{}, AWSError>; - /** - * Modifies a volume attribute. By default, all I/O operations for the volume are suspended when the data on the volume is determined to be potentially inconsistent, to prevent undetectable, latent data corruption. The I/O access to the volume can be resumed by first enabling I/O access and then checking the data consistency on your volume. You can change the default behavior to resume I/O operations. We recommend that you change this only for boot volumes or for volumes that are stateless or disposable. - */ - modifyVolumeAttribute(callback?: (err: AWSError, data: {}) => void): Request<{}, AWSError>; - /** - * Modifies the specified attribute of the specified VPC. - */ - modifyVpcAttribute(params: EC2.Types.ModifyVpcAttributeRequest, callback?: (err: AWSError, data: {}) => void): Request<{}, AWSError>; - /** - * Modifies the specified attribute of the specified VPC. - */ - modifyVpcAttribute(callback?: (err: AWSError, data: {}) => void): Request<{}, AWSError>; - /** - * Modifies attributes of a specified VPC endpoint. You can modify the policy associated with the endpoint, and you can add and remove route tables associated with the endpoint. - */ - modifyVpcEndpoint(params: EC2.Types.ModifyVpcEndpointRequest, callback?: (err: AWSError, data: EC2.Types.ModifyVpcEndpointResult) => void): Request; - /** - * Modifies attributes of a specified VPC endpoint. You can modify the policy associated with the endpoint, and you can add and remove route tables associated with the endpoint. - */ - modifyVpcEndpoint(callback?: (err: AWSError, data: EC2.Types.ModifyVpcEndpointResult) => void): Request; - /** - * Modifies the VPC peering connection options on one side of a VPC peering connection. You can do the following: Enable/disable communication over the peering connection between an EC2-Classic instance that's linked to your VPC (using ClassicLink) and instances in the peer VPC. Enable/disable communication over the peering connection between instances in your VPC and an EC2-Classic instance that's linked to the peer VPC. Enable/disable a local VPC to resolve public DNS hostnames to private IP addresses when queried from instances in the peer VPC. If the peered VPCs are in different accounts, each owner must initiate a separate request to modify the peering connection options, depending on whether their VPC was the requester or accepter for the VPC peering connection. If the peered VPCs are in the same account, you can modify the requester and accepter options in the same request. To confirm which VPC is the accepter and requester for a VPC peering connection, use the DescribeVpcPeeringConnections command. - */ - modifyVpcPeeringConnectionOptions(params: EC2.Types.ModifyVpcPeeringConnectionOptionsRequest, callback?: (err: AWSError, data: EC2.Types.ModifyVpcPeeringConnectionOptionsResult) => void): Request; - /** - * Modifies the VPC peering connection options on one side of a VPC peering connection. You can do the following: Enable/disable communication over the peering connection between an EC2-Classic instance that's linked to your VPC (using ClassicLink) and instances in the peer VPC. Enable/disable communication over the peering connection between instances in your VPC and an EC2-Classic instance that's linked to the peer VPC. Enable/disable a local VPC to resolve public DNS hostnames to private IP addresses when queried from instances in the peer VPC. If the peered VPCs are in different accounts, each owner must initiate a separate request to modify the peering connection options, depending on whether their VPC was the requester or accepter for the VPC peering connection. If the peered VPCs are in the same account, you can modify the requester and accepter options in the same request. To confirm which VPC is the accepter and requester for a VPC peering connection, use the DescribeVpcPeeringConnections command. - */ - modifyVpcPeeringConnectionOptions(callback?: (err: AWSError, data: EC2.Types.ModifyVpcPeeringConnectionOptionsResult) => void): Request; - /** - * Enables detailed monitoring for a running instance. Otherwise, basic monitoring is enabled. For more information, see Monitoring Your Instances and Volumes in the Amazon Elastic Compute Cloud User Guide. To disable detailed monitoring, see . - */ - monitorInstances(params: EC2.Types.MonitorInstancesRequest, callback?: (err: AWSError, data: EC2.Types.MonitorInstancesResult) => void): Request; - /** - * Enables detailed monitoring for a running instance. Otherwise, basic monitoring is enabled. For more information, see Monitoring Your Instances and Volumes in the Amazon Elastic Compute Cloud User Guide. To disable detailed monitoring, see . - */ - monitorInstances(callback?: (err: AWSError, data: EC2.Types.MonitorInstancesResult) => void): Request; - /** - * Moves an Elastic IP address from the EC2-Classic platform to the EC2-VPC platform. The Elastic IP address must be allocated to your account for more than 24 hours, and it must not be associated with an instance. After the Elastic IP address is moved, it is no longer available for use in the EC2-Classic platform, unless you move it back using the RestoreAddressToClassic request. You cannot move an Elastic IP address that was originally allocated for use in the EC2-VPC platform to the EC2-Classic platform. - */ - moveAddressToVpc(params: EC2.Types.MoveAddressToVpcRequest, callback?: (err: AWSError, data: EC2.Types.MoveAddressToVpcResult) => void): Request; - /** - * Moves an Elastic IP address from the EC2-Classic platform to the EC2-VPC platform. The Elastic IP address must be allocated to your account for more than 24 hours, and it must not be associated with an instance. After the Elastic IP address is moved, it is no longer available for use in the EC2-Classic platform, unless you move it back using the RestoreAddressToClassic request. You cannot move an Elastic IP address that was originally allocated for use in the EC2-VPC platform to the EC2-Classic platform. - */ - moveAddressToVpc(callback?: (err: AWSError, data: EC2.Types.MoveAddressToVpcResult) => void): Request; - /** - * Purchase a reservation with configurations that match those of your Dedicated Host. You must have active Dedicated Hosts in your account before you purchase a reservation. This action results in the specified reservation being purchased and charged to your account. - */ - purchaseHostReservation(params: EC2.Types.PurchaseHostReservationRequest, callback?: (err: AWSError, data: EC2.Types.PurchaseHostReservationResult) => void): Request; - /** - * Purchase a reservation with configurations that match those of your Dedicated Host. You must have active Dedicated Hosts in your account before you purchase a reservation. This action results in the specified reservation being purchased and charged to your account. - */ - purchaseHostReservation(callback?: (err: AWSError, data: EC2.Types.PurchaseHostReservationResult) => void): Request; - /** - * Purchases a Reserved Instance for use with your account. With Reserved Instances, you pay a lower hourly rate compared to On-Demand instance pricing. Use DescribeReservedInstancesOfferings to get a list of Reserved Instance offerings that match your specifications. After you've purchased a Reserved Instance, you can check for your new Reserved Instance with DescribeReservedInstances. For more information, see Reserved Instances and Reserved Instance Marketplace in the Amazon Elastic Compute Cloud User Guide. - */ - purchaseReservedInstancesOffering(params: EC2.Types.PurchaseReservedInstancesOfferingRequest, callback?: (err: AWSError, data: EC2.Types.PurchaseReservedInstancesOfferingResult) => void): Request; - /** - * Purchases a Reserved Instance for use with your account. With Reserved Instances, you pay a lower hourly rate compared to On-Demand instance pricing. Use DescribeReservedInstancesOfferings to get a list of Reserved Instance offerings that match your specifications. After you've purchased a Reserved Instance, you can check for your new Reserved Instance with DescribeReservedInstances. For more information, see Reserved Instances and Reserved Instance Marketplace in the Amazon Elastic Compute Cloud User Guide. - */ - purchaseReservedInstancesOffering(callback?: (err: AWSError, data: EC2.Types.PurchaseReservedInstancesOfferingResult) => void): Request; - /** - * Purchases one or more Scheduled Instances with the specified schedule. Scheduled Instances enable you to purchase Amazon EC2 compute capacity by the hour for a one-year term. Before you can purchase a Scheduled Instance, you must call DescribeScheduledInstanceAvailability to check for available schedules and obtain a purchase token. After you purchase a Scheduled Instance, you must call RunScheduledInstances during each scheduled time period. After you purchase a Scheduled Instance, you can't cancel, modify, or resell your purchase. - */ - purchaseScheduledInstances(params: EC2.Types.PurchaseScheduledInstancesRequest, callback?: (err: AWSError, data: EC2.Types.PurchaseScheduledInstancesResult) => void): Request; - /** - * Purchases one or more Scheduled Instances with the specified schedule. Scheduled Instances enable you to purchase Amazon EC2 compute capacity by the hour for a one-year term. Before you can purchase a Scheduled Instance, you must call DescribeScheduledInstanceAvailability to check for available schedules and obtain a purchase token. After you purchase a Scheduled Instance, you must call RunScheduledInstances during each scheduled time period. After you purchase a Scheduled Instance, you can't cancel, modify, or resell your purchase. - */ - purchaseScheduledInstances(callback?: (err: AWSError, data: EC2.Types.PurchaseScheduledInstancesResult) => void): Request; - /** - * Requests a reboot of one or more instances. This operation is asynchronous; it only queues a request to reboot the specified instances. The operation succeeds if the instances are valid and belong to you. Requests to reboot terminated instances are ignored. If an instance does not cleanly shut down within four minutes, Amazon EC2 performs a hard reboot. For more information about troubleshooting, see Getting Console Output and Rebooting Instances in the Amazon Elastic Compute Cloud User Guide. - */ - rebootInstances(params: EC2.Types.RebootInstancesRequest, callback?: (err: AWSError, data: {}) => void): Request<{}, AWSError>; - /** - * Requests a reboot of one or more instances. This operation is asynchronous; it only queues a request to reboot the specified instances. The operation succeeds if the instances are valid and belong to you. Requests to reboot terminated instances are ignored. If an instance does not cleanly shut down within four minutes, Amazon EC2 performs a hard reboot. For more information about troubleshooting, see Getting Console Output and Rebooting Instances in the Amazon Elastic Compute Cloud User Guide. - */ - rebootInstances(callback?: (err: AWSError, data: {}) => void): Request<{}, AWSError>; - /** - * Registers an AMI. When you're creating an AMI, this is the final step you must complete before you can launch an instance from the AMI. For more information about creating AMIs, see Creating Your Own AMIs in the Amazon Elastic Compute Cloud User Guide. For Amazon EBS-backed instances, CreateImage creates and registers the AMI in a single request, so you don't have to register the AMI yourself. You can also use RegisterImage to create an Amazon EBS-backed Linux AMI from a snapshot of a root device volume. You specify the snapshot using the block device mapping. For more information, see Launching a Linux Instance from a Backup in the Amazon Elastic Compute Cloud User Guide. You can't register an image where a secondary (non-root) snapshot has AWS Marketplace product codes. Some Linux distributions, such as Red Hat Enterprise Linux (RHEL) and SUSE Linux Enterprise Server (SLES), use the EC2 billing product code associated with an AMI to verify the subscription status for package updates. Creating an AMI from an EBS snapshot does not maintain this billing code, and subsequent instances launched from such an AMI will not be able to connect to package update infrastructure. To create an AMI that must retain billing codes, see CreateImage. If needed, you can deregister an AMI at any time. Any modifications you make to an AMI backed by an instance store volume invalidates its registration. If you make changes to an image, deregister the previous image and register the new image. - */ - registerImage(params: EC2.Types.RegisterImageRequest, callback?: (err: AWSError, data: EC2.Types.RegisterImageResult) => void): Request; - /** - * Registers an AMI. When you're creating an AMI, this is the final step you must complete before you can launch an instance from the AMI. For more information about creating AMIs, see Creating Your Own AMIs in the Amazon Elastic Compute Cloud User Guide. For Amazon EBS-backed instances, CreateImage creates and registers the AMI in a single request, so you don't have to register the AMI yourself. You can also use RegisterImage to create an Amazon EBS-backed Linux AMI from a snapshot of a root device volume. You specify the snapshot using the block device mapping. For more information, see Launching a Linux Instance from a Backup in the Amazon Elastic Compute Cloud User Guide. You can't register an image where a secondary (non-root) snapshot has AWS Marketplace product codes. Some Linux distributions, such as Red Hat Enterprise Linux (RHEL) and SUSE Linux Enterprise Server (SLES), use the EC2 billing product code associated with an AMI to verify the subscription status for package updates. Creating an AMI from an EBS snapshot does not maintain this billing code, and subsequent instances launched from such an AMI will not be able to connect to package update infrastructure. To create an AMI that must retain billing codes, see CreateImage. If needed, you can deregister an AMI at any time. Any modifications you make to an AMI backed by an instance store volume invalidates its registration. If you make changes to an image, deregister the previous image and register the new image. - */ - registerImage(callback?: (err: AWSError, data: EC2.Types.RegisterImageResult) => void): Request; - /** - * Rejects a VPC peering connection request. The VPC peering connection must be in the pending-acceptance state. Use the DescribeVpcPeeringConnections request to view your outstanding VPC peering connection requests. To delete an active VPC peering connection, or to delete a VPC peering connection request that you initiated, use DeleteVpcPeeringConnection. - */ - rejectVpcPeeringConnection(params: EC2.Types.RejectVpcPeeringConnectionRequest, callback?: (err: AWSError, data: EC2.Types.RejectVpcPeeringConnectionResult) => void): Request; - /** - * Rejects a VPC peering connection request. The VPC peering connection must be in the pending-acceptance state. Use the DescribeVpcPeeringConnections request to view your outstanding VPC peering connection requests. To delete an active VPC peering connection, or to delete a VPC peering connection request that you initiated, use DeleteVpcPeeringConnection. - */ - rejectVpcPeeringConnection(callback?: (err: AWSError, data: EC2.Types.RejectVpcPeeringConnectionResult) => void): Request; - /** - * Releases the specified Elastic IP address. [EC2-Classic, default VPC] Releasing an Elastic IP address automatically disassociates it from any instance that it's associated with. To disassociate an Elastic IP address without releasing it, use DisassociateAddress. [Nondefault VPC] You must use DisassociateAddress to disassociate the Elastic IP address before you can release it. Otherwise, Amazon EC2 returns an error (InvalidIPAddress.InUse). After releasing an Elastic IP address, it is released to the IP address pool. Be sure to update your DNS records and any servers or devices that communicate with the address. If you attempt to release an Elastic IP address that you already released, you'll get an AuthFailure error if the address is already allocated to another AWS account. [EC2-VPC] After you release an Elastic IP address for use in a VPC, you might be able to recover it. For more information, see AllocateAddress. - */ - releaseAddress(params: EC2.Types.ReleaseAddressRequest, callback?: (err: AWSError, data: {}) => void): Request<{}, AWSError>; - /** - * Releases the specified Elastic IP address. [EC2-Classic, default VPC] Releasing an Elastic IP address automatically disassociates it from any instance that it's associated with. To disassociate an Elastic IP address without releasing it, use DisassociateAddress. [Nondefault VPC] You must use DisassociateAddress to disassociate the Elastic IP address before you can release it. Otherwise, Amazon EC2 returns an error (InvalidIPAddress.InUse). After releasing an Elastic IP address, it is released to the IP address pool. Be sure to update your DNS records and any servers or devices that communicate with the address. If you attempt to release an Elastic IP address that you already released, you'll get an AuthFailure error if the address is already allocated to another AWS account. [EC2-VPC] After you release an Elastic IP address for use in a VPC, you might be able to recover it. For more information, see AllocateAddress. - */ - releaseAddress(callback?: (err: AWSError, data: {}) => void): Request<{}, AWSError>; - /** - * When you no longer want to use an On-Demand Dedicated Host it can be released. On-Demand billing is stopped and the host goes into released state. The host ID of Dedicated Hosts that have been released can no longer be specified in another request, e.g., ModifyHosts. You must stop or terminate all instances on a host before it can be released. When Dedicated Hosts are released, it make take some time for them to stop counting toward your limit and you may receive capacity errors when trying to allocate new Dedicated hosts. Try waiting a few minutes, and then try again. Released hosts will still appear in a DescribeHosts response. - */ - releaseHosts(params: EC2.Types.ReleaseHostsRequest, callback?: (err: AWSError, data: EC2.Types.ReleaseHostsResult) => void): Request; - /** - * When you no longer want to use an On-Demand Dedicated Host it can be released. On-Demand billing is stopped and the host goes into released state. The host ID of Dedicated Hosts that have been released can no longer be specified in another request, e.g., ModifyHosts. You must stop or terminate all instances on a host before it can be released. When Dedicated Hosts are released, it make take some time for them to stop counting toward your limit and you may receive capacity errors when trying to allocate new Dedicated hosts. Try waiting a few minutes, and then try again. Released hosts will still appear in a DescribeHosts response. - */ - releaseHosts(callback?: (err: AWSError, data: EC2.Types.ReleaseHostsResult) => void): Request; - /** - * Replaces an IAM instance profile for the specified running instance. You can use this action to change the IAM instance profile that's associated with an instance without having to disassociate the existing IAM instance profile first. Use DescribeIamInstanceProfileAssociations to get the association ID. - */ - replaceIamInstanceProfileAssociation(params: EC2.Types.ReplaceIamInstanceProfileAssociationRequest, callback?: (err: AWSError, data: EC2.Types.ReplaceIamInstanceProfileAssociationResult) => void): Request; - /** - * Replaces an IAM instance profile for the specified running instance. You can use this action to change the IAM instance profile that's associated with an instance without having to disassociate the existing IAM instance profile first. Use DescribeIamInstanceProfileAssociations to get the association ID. - */ - replaceIamInstanceProfileAssociation(callback?: (err: AWSError, data: EC2.Types.ReplaceIamInstanceProfileAssociationResult) => void): Request; - /** - * Changes which network ACL a subnet is associated with. By default when you create a subnet, it's automatically associated with the default network ACL. For more information about network ACLs, see Network ACLs in the Amazon Virtual Private Cloud User Guide. - */ - replaceNetworkAclAssociation(params: EC2.Types.ReplaceNetworkAclAssociationRequest, callback?: (err: AWSError, data: EC2.Types.ReplaceNetworkAclAssociationResult) => void): Request; - /** - * Changes which network ACL a subnet is associated with. By default when you create a subnet, it's automatically associated with the default network ACL. For more information about network ACLs, see Network ACLs in the Amazon Virtual Private Cloud User Guide. - */ - replaceNetworkAclAssociation(callback?: (err: AWSError, data: EC2.Types.ReplaceNetworkAclAssociationResult) => void): Request; - /** - * Replaces an entry (rule) in a network ACL. For more information about network ACLs, see Network ACLs in the Amazon Virtual Private Cloud User Guide. - */ - replaceNetworkAclEntry(params: EC2.Types.ReplaceNetworkAclEntryRequest, callback?: (err: AWSError, data: {}) => void): Request<{}, AWSError>; - /** - * Replaces an entry (rule) in a network ACL. For more information about network ACLs, see Network ACLs in the Amazon Virtual Private Cloud User Guide. - */ - replaceNetworkAclEntry(callback?: (err: AWSError, data: {}) => void): Request<{}, AWSError>; - /** - * Replaces an existing route within a route table in a VPC. You must provide only one of the following: Internet gateway or virtual private gateway, NAT instance, NAT gateway, VPC peering connection, network interface, or egress-only Internet gateway. For more information about route tables, see Route Tables in the Amazon Virtual Private Cloud User Guide. - */ - replaceRoute(params: EC2.Types.ReplaceRouteRequest, callback?: (err: AWSError, data: {}) => void): Request<{}, AWSError>; - /** - * Replaces an existing route within a route table in a VPC. You must provide only one of the following: Internet gateway or virtual private gateway, NAT instance, NAT gateway, VPC peering connection, network interface, or egress-only Internet gateway. For more information about route tables, see Route Tables in the Amazon Virtual Private Cloud User Guide. - */ - replaceRoute(callback?: (err: AWSError, data: {}) => void): Request<{}, AWSError>; - /** - * Changes the route table associated with a given subnet in a VPC. After the operation completes, the subnet uses the routes in the new route table it's associated with. For more information about route tables, see Route Tables in the Amazon Virtual Private Cloud User Guide. You can also use ReplaceRouteTableAssociation to change which table is the main route table in the VPC. You just specify the main route table's association ID and the route table to be the new main route table. - */ - replaceRouteTableAssociation(params: EC2.Types.ReplaceRouteTableAssociationRequest, callback?: (err: AWSError, data: EC2.Types.ReplaceRouteTableAssociationResult) => void): Request; - /** - * Changes the route table associated with a given subnet in a VPC. After the operation completes, the subnet uses the routes in the new route table it's associated with. For more information about route tables, see Route Tables in the Amazon Virtual Private Cloud User Guide. You can also use ReplaceRouteTableAssociation to change which table is the main route table in the VPC. You just specify the main route table's association ID and the route table to be the new main route table. - */ - replaceRouteTableAssociation(callback?: (err: AWSError, data: EC2.Types.ReplaceRouteTableAssociationResult) => void): Request; - /** - * Submits feedback about the status of an instance. The instance must be in the running state. If your experience with the instance differs from the instance status returned by DescribeInstanceStatus, use ReportInstanceStatus to report your experience with the instance. Amazon EC2 collects this information to improve the accuracy of status checks. Use of this action does not change the value returned by DescribeInstanceStatus. - */ - reportInstanceStatus(params: EC2.Types.ReportInstanceStatusRequest, callback?: (err: AWSError, data: {}) => void): Request<{}, AWSError>; - /** - * Submits feedback about the status of an instance. The instance must be in the running state. If your experience with the instance differs from the instance status returned by DescribeInstanceStatus, use ReportInstanceStatus to report your experience with the instance. Amazon EC2 collects this information to improve the accuracy of status checks. Use of this action does not change the value returned by DescribeInstanceStatus. - */ - reportInstanceStatus(callback?: (err: AWSError, data: {}) => void): Request<{}, AWSError>; - /** - * Creates a Spot fleet request. You can submit a single request that includes multiple launch specifications that vary by instance type, AMI, Availability Zone, or subnet. By default, the Spot fleet requests Spot instances in the Spot pool where the price per unit is the lowest. Each launch specification can include its own instance weighting that reflects the value of the instance type to your application workload. Alternatively, you can specify that the Spot fleet distribute the target capacity across the Spot pools included in its launch specifications. By ensuring that the Spot instances in your Spot fleet are in different Spot pools, you can improve the availability of your fleet. For more information, see Spot Fleet Requests in the Amazon Elastic Compute Cloud User Guide. - */ - requestSpotFleet(params: EC2.Types.RequestSpotFleetRequest, callback?: (err: AWSError, data: EC2.Types.RequestSpotFleetResponse) => void): Request; - /** - * Creates a Spot fleet request. You can submit a single request that includes multiple launch specifications that vary by instance type, AMI, Availability Zone, or subnet. By default, the Spot fleet requests Spot instances in the Spot pool where the price per unit is the lowest. Each launch specification can include its own instance weighting that reflects the value of the instance type to your application workload. Alternatively, you can specify that the Spot fleet distribute the target capacity across the Spot pools included in its launch specifications. By ensuring that the Spot instances in your Spot fleet are in different Spot pools, you can improve the availability of your fleet. For more information, see Spot Fleet Requests in the Amazon Elastic Compute Cloud User Guide. - */ - requestSpotFleet(callback?: (err: AWSError, data: EC2.Types.RequestSpotFleetResponse) => void): Request; - /** - * Creates a Spot instance request. Spot instances are instances that Amazon EC2 launches when the bid price that you specify exceeds the current Spot price. Amazon EC2 periodically sets the Spot price based on available Spot Instance capacity and current Spot instance requests. For more information, see Spot Instance Requests in the Amazon Elastic Compute Cloud User Guide. - */ - requestSpotInstances(params: EC2.Types.RequestSpotInstancesRequest, callback?: (err: AWSError, data: EC2.Types.RequestSpotInstancesResult) => void): Request; - /** - * Creates a Spot instance request. Spot instances are instances that Amazon EC2 launches when the bid price that you specify exceeds the current Spot price. Amazon EC2 periodically sets the Spot price based on available Spot Instance capacity and current Spot instance requests. For more information, see Spot Instance Requests in the Amazon Elastic Compute Cloud User Guide. - */ - requestSpotInstances(callback?: (err: AWSError, data: EC2.Types.RequestSpotInstancesResult) => void): Request; - /** - * Resets the specified attribute of the specified Amazon FPGA Image (AFI) to its default value. You can only reset the load permission attribute. - */ - resetFpgaImageAttribute(params: EC2.Types.ResetFpgaImageAttributeRequest, callback?: (err: AWSError, data: EC2.Types.ResetFpgaImageAttributeResult) => void): Request; - /** - * Resets the specified attribute of the specified Amazon FPGA Image (AFI) to its default value. You can only reset the load permission attribute. - */ - resetFpgaImageAttribute(callback?: (err: AWSError, data: EC2.Types.ResetFpgaImageAttributeResult) => void): Request; - /** - * Resets an attribute of an AMI to its default value. The productCodes attribute can't be reset. - */ - resetImageAttribute(params: EC2.Types.ResetImageAttributeRequest, callback?: (err: AWSError, data: {}) => void): Request<{}, AWSError>; - /** - * Resets an attribute of an AMI to its default value. The productCodes attribute can't be reset. - */ - resetImageAttribute(callback?: (err: AWSError, data: {}) => void): Request<{}, AWSError>; - /** - * Resets an attribute of an instance to its default value. To reset the kernel or ramdisk, the instance must be in a stopped state. To reset the sourceDestCheck, the instance can be either running or stopped. The sourceDestCheck attribute controls whether source/destination checking is enabled. The default value is true, which means checking is enabled. This value must be false for a NAT instance to perform NAT. For more information, see NAT Instances in the Amazon Virtual Private Cloud User Guide. - */ - resetInstanceAttribute(params: EC2.Types.ResetInstanceAttributeRequest, callback?: (err: AWSError, data: {}) => void): Request<{}, AWSError>; - /** - * Resets an attribute of an instance to its default value. To reset the kernel or ramdisk, the instance must be in a stopped state. To reset the sourceDestCheck, the instance can be either running or stopped. The sourceDestCheck attribute controls whether source/destination checking is enabled. The default value is true, which means checking is enabled. This value must be false for a NAT instance to perform NAT. For more information, see NAT Instances in the Amazon Virtual Private Cloud User Guide. - */ - resetInstanceAttribute(callback?: (err: AWSError, data: {}) => void): Request<{}, AWSError>; - /** - * Resets a network interface attribute. You can specify only one attribute at a time. - */ - resetNetworkInterfaceAttribute(params: EC2.Types.ResetNetworkInterfaceAttributeRequest, callback?: (err: AWSError, data: {}) => void): Request<{}, AWSError>; - /** - * Resets a network interface attribute. You can specify only one attribute at a time. - */ - resetNetworkInterfaceAttribute(callback?: (err: AWSError, data: {}) => void): Request<{}, AWSError>; - /** - * Resets permission settings for the specified snapshot. For more information on modifying snapshot permissions, see Sharing Snapshots in the Amazon Elastic Compute Cloud User Guide. - */ - resetSnapshotAttribute(params: EC2.Types.ResetSnapshotAttributeRequest, callback?: (err: AWSError, data: {}) => void): Request<{}, AWSError>; - /** - * Resets permission settings for the specified snapshot. For more information on modifying snapshot permissions, see Sharing Snapshots in the Amazon Elastic Compute Cloud User Guide. - */ - resetSnapshotAttribute(callback?: (err: AWSError, data: {}) => void): Request<{}, AWSError>; - /** - * Restores an Elastic IP address that was previously moved to the EC2-VPC platform back to the EC2-Classic platform. You cannot move an Elastic IP address that was originally allocated for use in EC2-VPC. The Elastic IP address must not be associated with an instance or network interface. - */ - restoreAddressToClassic(params: EC2.Types.RestoreAddressToClassicRequest, callback?: (err: AWSError, data: EC2.Types.RestoreAddressToClassicResult) => void): Request; - /** - * Restores an Elastic IP address that was previously moved to the EC2-VPC platform back to the EC2-Classic platform. You cannot move an Elastic IP address that was originally allocated for use in EC2-VPC. The Elastic IP address must not be associated with an instance or network interface. - */ - restoreAddressToClassic(callback?: (err: AWSError, data: EC2.Types.RestoreAddressToClassicResult) => void): Request; - /** - * [EC2-VPC only] Removes one or more egress rules from a security group for EC2-VPC. This action doesn't apply to security groups for use in EC2-Classic. To remove a rule, the values that you specify (for example, ports) must match the existing rule's values exactly. Each rule consists of the protocol and the IPv4 or IPv6 CIDR range or source security group. For the TCP and UDP protocols, you must also specify the destination port or range of ports. For the ICMP protocol, you must also specify the ICMP type and code. If the security group rule has a description, you do not have to specify the description to revoke the rule. Rule changes are propagated to instances within the security group as quickly as possible. However, a small delay might occur. - */ - revokeSecurityGroupEgress(params: EC2.Types.RevokeSecurityGroupEgressRequest, callback?: (err: AWSError, data: {}) => void): Request<{}, AWSError>; - /** - * [EC2-VPC only] Removes one or more egress rules from a security group for EC2-VPC. This action doesn't apply to security groups for use in EC2-Classic. To remove a rule, the values that you specify (for example, ports) must match the existing rule's values exactly. Each rule consists of the protocol and the IPv4 or IPv6 CIDR range or source security group. For the TCP and UDP protocols, you must also specify the destination port or range of ports. For the ICMP protocol, you must also specify the ICMP type and code. If the security group rule has a description, you do not have to specify the description to revoke the rule. Rule changes are propagated to instances within the security group as quickly as possible. However, a small delay might occur. - */ - revokeSecurityGroupEgress(callback?: (err: AWSError, data: {}) => void): Request<{}, AWSError>; - /** - * Removes one or more ingress rules from a security group. To remove a rule, the values that you specify (for example, ports) must match the existing rule's values exactly. [EC2-Classic security groups only] If the values you specify do not match the existing rule's values, no error is returned. Use DescribeSecurityGroups to verify that the rule has been removed. Each rule consists of the protocol and the CIDR range or source security group. For the TCP and UDP protocols, you must also specify the destination port or range of ports. For the ICMP protocol, you must also specify the ICMP type and code. If the security group rule has a description, you do not have to specify the description to revoke the rule. Rule changes are propagated to instances within the security group as quickly as possible. However, a small delay might occur. - */ - revokeSecurityGroupIngress(params: EC2.Types.RevokeSecurityGroupIngressRequest, callback?: (err: AWSError, data: {}) => void): Request<{}, AWSError>; - /** - * Removes one or more ingress rules from a security group. To remove a rule, the values that you specify (for example, ports) must match the existing rule's values exactly. [EC2-Classic security groups only] If the values you specify do not match the existing rule's values, no error is returned. Use DescribeSecurityGroups to verify that the rule has been removed. Each rule consists of the protocol and the CIDR range or source security group. For the TCP and UDP protocols, you must also specify the destination port or range of ports. For the ICMP protocol, you must also specify the ICMP type and code. If the security group rule has a description, you do not have to specify the description to revoke the rule. Rule changes are propagated to instances within the security group as quickly as possible. However, a small delay might occur. - */ - revokeSecurityGroupIngress(callback?: (err: AWSError, data: {}) => void): Request<{}, AWSError>; - /** - * Launches the specified number of instances using an AMI for which you have permissions. You can specify a number of options, or leave the default options. The following rules apply: [EC2-VPC] If you don't specify a subnet ID, we choose a default subnet from your default VPC for you. If you don't have a default VPC, you must specify a subnet ID in the request. [EC2-Classic] If don't specify an Availability Zone, we choose one for you. Some instance types must be launched into a VPC. If you do not have a default VPC, or if you do not specify a subnet ID, the request fails. For more information, see Instance Types Available Only in a VPC. [EC2-VPC] All instances have a network interface with a primary private IPv4 address. If you don't specify this address, we choose one from the IPv4 range of your subnet. Not all instance types support IPv6 addresses. For more information, see Instance Types. If you don't specify a security group ID, we use the default security group. For more information, see Security Groups. If any of the AMIs have a product code attached for which the user has not subscribed, the request fails. To ensure faster instance launches, break up large requests into smaller batches. For example, create five separate launch requests for 100 instances each instead of one launch request for 500 instances. An instance is ready for you to use when it's in the running state. You can check the state of your instance using DescribeInstances. You can tag instances and EBS volumes during launch, after launch, or both. For more information, see CreateTags and Tagging Your Amazon EC2 Resources. Linux instances have access to the public key of the key pair at boot. You can use this key to provide secure access to the instance. Amazon EC2 public images use this feature to provide secure access without passwords. For more information, see Key Pairs in the Amazon Elastic Compute Cloud User Guide. For troubleshooting, see What To Do If An Instance Immediately Terminates, and Troubleshooting Connecting to Your Instance in the Amazon Elastic Compute Cloud User Guide. - */ - runInstances(params: EC2.Types.RunInstancesRequest, callback?: (err: AWSError, data: EC2.Types.Reservation) => void): Request; - /** - * Launches the specified number of instances using an AMI for which you have permissions. You can specify a number of options, or leave the default options. The following rules apply: [EC2-VPC] If you don't specify a subnet ID, we choose a default subnet from your default VPC for you. If you don't have a default VPC, you must specify a subnet ID in the request. [EC2-Classic] If don't specify an Availability Zone, we choose one for you. Some instance types must be launched into a VPC. If you do not have a default VPC, or if you do not specify a subnet ID, the request fails. For more information, see Instance Types Available Only in a VPC. [EC2-VPC] All instances have a network interface with a primary private IPv4 address. If you don't specify this address, we choose one from the IPv4 range of your subnet. Not all instance types support IPv6 addresses. For more information, see Instance Types. If you don't specify a security group ID, we use the default security group. For more information, see Security Groups. If any of the AMIs have a product code attached for which the user has not subscribed, the request fails. To ensure faster instance launches, break up large requests into smaller batches. For example, create five separate launch requests for 100 instances each instead of one launch request for 500 instances. An instance is ready for you to use when it's in the running state. You can check the state of your instance using DescribeInstances. You can tag instances and EBS volumes during launch, after launch, or both. For more information, see CreateTags and Tagging Your Amazon EC2 Resources. Linux instances have access to the public key of the key pair at boot. You can use this key to provide secure access to the instance. Amazon EC2 public images use this feature to provide secure access without passwords. For more information, see Key Pairs in the Amazon Elastic Compute Cloud User Guide. For troubleshooting, see What To Do If An Instance Immediately Terminates, and Troubleshooting Connecting to Your Instance in the Amazon Elastic Compute Cloud User Guide. - */ - runInstances(callback?: (err: AWSError, data: EC2.Types.Reservation) => void): Request; - /** - * Launches the specified Scheduled Instances. Before you can launch a Scheduled Instance, you must purchase it and obtain an identifier using PurchaseScheduledInstances. You must launch a Scheduled Instance during its scheduled time period. You can't stop or reboot a Scheduled Instance, but you can terminate it as needed. If you terminate a Scheduled Instance before the current scheduled time period ends, you can launch it again after a few minutes. For more information, see Scheduled Instances in the Amazon Elastic Compute Cloud User Guide. - */ - runScheduledInstances(params: EC2.Types.RunScheduledInstancesRequest, callback?: (err: AWSError, data: EC2.Types.RunScheduledInstancesResult) => void): Request; - /** - * Launches the specified Scheduled Instances. Before you can launch a Scheduled Instance, you must purchase it and obtain an identifier using PurchaseScheduledInstances. You must launch a Scheduled Instance during its scheduled time period. You can't stop or reboot a Scheduled Instance, but you can terminate it as needed. If you terminate a Scheduled Instance before the current scheduled time period ends, you can launch it again after a few minutes. For more information, see Scheduled Instances in the Amazon Elastic Compute Cloud User Guide. - */ - runScheduledInstances(callback?: (err: AWSError, data: EC2.Types.RunScheduledInstancesResult) => void): Request; - /** - * Starts an Amazon EBS-backed instance that you've previously stopped. Instances that use Amazon EBS volumes as their root devices can be quickly stopped and started. When an instance is stopped, the compute resources are released and you are not billed for instance usage. However, your root partition Amazon EBS volume remains and continues to persist your data, and you are charged for Amazon EBS volume usage. You can restart your instance at any time. Every time you start your Windows instance, Amazon EC2 charges you for a full instance hour. If you stop and restart your Windows instance, a new instance hour begins and Amazon EC2 charges you for another full instance hour even if you are still within the same 60-minute period when it was stopped. Every time you start your Linux instance, Amazon EC2 charges a one-minute minimum for instance usage, and thereafter charges per second for instance usage. Before stopping an instance, make sure it is in a state from which it can be restarted. Stopping an instance does not preserve data stored in RAM. Performing this operation on an instance that uses an instance store as its root device returns an error. For more information, see Stopping Instances in the Amazon Elastic Compute Cloud User Guide. - */ - startInstances(params: EC2.Types.StartInstancesRequest, callback?: (err: AWSError, data: EC2.Types.StartInstancesResult) => void): Request; - /** - * Starts an Amazon EBS-backed instance that you've previously stopped. Instances that use Amazon EBS volumes as their root devices can be quickly stopped and started. When an instance is stopped, the compute resources are released and you are not billed for instance usage. However, your root partition Amazon EBS volume remains and continues to persist your data, and you are charged for Amazon EBS volume usage. You can restart your instance at any time. Every time you start your Windows instance, Amazon EC2 charges you for a full instance hour. If you stop and restart your Windows instance, a new instance hour begins and Amazon EC2 charges you for another full instance hour even if you are still within the same 60-minute period when it was stopped. Every time you start your Linux instance, Amazon EC2 charges a one-minute minimum for instance usage, and thereafter charges per second for instance usage. Before stopping an instance, make sure it is in a state from which it can be restarted. Stopping an instance does not preserve data stored in RAM. Performing this operation on an instance that uses an instance store as its root device returns an error. For more information, see Stopping Instances in the Amazon Elastic Compute Cloud User Guide. - */ - startInstances(callback?: (err: AWSError, data: EC2.Types.StartInstancesResult) => void): Request; - /** - * Stops an Amazon EBS-backed instance. We don't charge usage for a stopped instance, or data transfer fees; however, your root partition Amazon EBS volume remains and continues to persist your data, and you are charged for Amazon EBS volume usage. Every time you start your Windows instance, Amazon EC2 charges you for a full instance hour. If you stop and restart your Windows instance, a new instance hour begins and Amazon EC2 charges you for another full instance hour even if you are still within the same 60-minute period when it was stopped. Every time you start your Linux instance, Amazon EC2 charges a one-minute minimum for instance usage, and thereafter charges per second for instance usage. You can't start or stop Spot Instances, and you can't stop instance store-backed instances. When you stop an instance, we shut it down. You can restart your instance at any time. Before stopping an instance, make sure it is in a state from which it can be restarted. Stopping an instance does not preserve data stored in RAM. Stopping an instance is different to rebooting or terminating it. For example, when you stop an instance, the root device and any other devices attached to the instance persist. When you terminate an instance, the root device and any other devices attached during the instance launch are automatically deleted. For more information about the differences between rebooting, stopping, and terminating instances, see Instance Lifecycle in the Amazon Elastic Compute Cloud User Guide. When you stop an instance, we attempt to shut it down forcibly after a short while. If your instance appears stuck in the stopping state after a period of time, there may be an issue with the underlying host computer. For more information, see Troubleshooting Stopping Your Instance in the Amazon Elastic Compute Cloud User Guide. - */ - stopInstances(params: EC2.Types.StopInstancesRequest, callback?: (err: AWSError, data: EC2.Types.StopInstancesResult) => void): Request; - /** - * Stops an Amazon EBS-backed instance. We don't charge usage for a stopped instance, or data transfer fees; however, your root partition Amazon EBS volume remains and continues to persist your data, and you are charged for Amazon EBS volume usage. Every time you start your Windows instance, Amazon EC2 charges you for a full instance hour. If you stop and restart your Windows instance, a new instance hour begins and Amazon EC2 charges you for another full instance hour even if you are still within the same 60-minute period when it was stopped. Every time you start your Linux instance, Amazon EC2 charges a one-minute minimum for instance usage, and thereafter charges per second for instance usage. You can't start or stop Spot Instances, and you can't stop instance store-backed instances. When you stop an instance, we shut it down. You can restart your instance at any time. Before stopping an instance, make sure it is in a state from which it can be restarted. Stopping an instance does not preserve data stored in RAM. Stopping an instance is different to rebooting or terminating it. For example, when you stop an instance, the root device and any other devices attached to the instance persist. When you terminate an instance, the root device and any other devices attached during the instance launch are automatically deleted. For more information about the differences between rebooting, stopping, and terminating instances, see Instance Lifecycle in the Amazon Elastic Compute Cloud User Guide. When you stop an instance, we attempt to shut it down forcibly after a short while. If your instance appears stuck in the stopping state after a period of time, there may be an issue with the underlying host computer. For more information, see Troubleshooting Stopping Your Instance in the Amazon Elastic Compute Cloud User Guide. - */ - stopInstances(callback?: (err: AWSError, data: EC2.Types.StopInstancesResult) => void): Request; - /** - * Shuts down one or more instances. This operation is idempotent; if you terminate an instance more than once, each call succeeds. If you specify multiple instances and the request fails (for example, because of a single incorrect instance ID), none of the instances are terminated. Terminated instances remain visible after termination (for approximately one hour). By default, Amazon EC2 deletes all EBS volumes that were attached when the instance launched. Volumes attached after instance launch continue running. You can stop, start, and terminate EBS-backed instances. You can only terminate instance store-backed instances. What happens to an instance differs if you stop it or terminate it. For example, when you stop an instance, the root device and any other devices attached to the instance persist. When you terminate an instance, any attached EBS volumes with the DeleteOnTermination block device mapping parameter set to true are automatically deleted. For more information about the differences between stopping and terminating instances, see Instance Lifecycle in the Amazon Elastic Compute Cloud User Guide. For more information about troubleshooting, see Troubleshooting Terminating Your Instance in the Amazon Elastic Compute Cloud User Guide. - */ - terminateInstances(params: EC2.Types.TerminateInstancesRequest, callback?: (err: AWSError, data: EC2.Types.TerminateInstancesResult) => void): Request; - /** - * Shuts down one or more instances. This operation is idempotent; if you terminate an instance more than once, each call succeeds. If you specify multiple instances and the request fails (for example, because of a single incorrect instance ID), none of the instances are terminated. Terminated instances remain visible after termination (for approximately one hour). By default, Amazon EC2 deletes all EBS volumes that were attached when the instance launched. Volumes attached after instance launch continue running. You can stop, start, and terminate EBS-backed instances. You can only terminate instance store-backed instances. What happens to an instance differs if you stop it or terminate it. For example, when you stop an instance, the root device and any other devices attached to the instance persist. When you terminate an instance, any attached EBS volumes with the DeleteOnTermination block device mapping parameter set to true are automatically deleted. For more information about the differences between stopping and terminating instances, see Instance Lifecycle in the Amazon Elastic Compute Cloud User Guide. For more information about troubleshooting, see Troubleshooting Terminating Your Instance in the Amazon Elastic Compute Cloud User Guide. - */ - terminateInstances(callback?: (err: AWSError, data: EC2.Types.TerminateInstancesResult) => void): Request; - /** - * Unassigns one or more IPv6 addresses from a network interface. - */ - unassignIpv6Addresses(params: EC2.Types.UnassignIpv6AddressesRequest, callback?: (err: AWSError, data: EC2.Types.UnassignIpv6AddressesResult) => void): Request; - /** - * Unassigns one or more IPv6 addresses from a network interface. - */ - unassignIpv6Addresses(callback?: (err: AWSError, data: EC2.Types.UnassignIpv6AddressesResult) => void): Request; - /** - * Unassigns one or more secondary private IP addresses from a network interface. - */ - unassignPrivateIpAddresses(params: EC2.Types.UnassignPrivateIpAddressesRequest, callback?: (err: AWSError, data: {}) => void): Request<{}, AWSError>; - /** - * Unassigns one or more secondary private IP addresses from a network interface. - */ - unassignPrivateIpAddresses(callback?: (err: AWSError, data: {}) => void): Request<{}, AWSError>; - /** - * Disables detailed monitoring for a running instance. For more information, see Monitoring Your Instances and Volumes in the Amazon Elastic Compute Cloud User Guide. - */ - unmonitorInstances(params: EC2.Types.UnmonitorInstancesRequest, callback?: (err: AWSError, data: EC2.Types.UnmonitorInstancesResult) => void): Request; - /** - * Disables detailed monitoring for a running instance. For more information, see Monitoring Your Instances and Volumes in the Amazon Elastic Compute Cloud User Guide. - */ - unmonitorInstances(callback?: (err: AWSError, data: EC2.Types.UnmonitorInstancesResult) => void): Request; - /** - * [EC2-VPC only] Updates the description of an egress (outbound) security group rule. You can replace an existing description, or add a description to a rule that did not have one previously. You specify the description as part of the IP permissions structure. You can remove a description for a security group rule by omitting the description parameter in the request. - */ - updateSecurityGroupRuleDescriptionsEgress(params: EC2.Types.UpdateSecurityGroupRuleDescriptionsEgressRequest, callback?: (err: AWSError, data: EC2.Types.UpdateSecurityGroupRuleDescriptionsEgressResult) => void): Request; - /** - * [EC2-VPC only] Updates the description of an egress (outbound) security group rule. You can replace an existing description, or add a description to a rule that did not have one previously. You specify the description as part of the IP permissions structure. You can remove a description for a security group rule by omitting the description parameter in the request. - */ - updateSecurityGroupRuleDescriptionsEgress(callback?: (err: AWSError, data: EC2.Types.UpdateSecurityGroupRuleDescriptionsEgressResult) => void): Request; - /** - * Updates the description of an ingress (inbound) security group rule. You can replace an existing description, or add a description to a rule that did not have one previously. You specify the description as part of the IP permissions structure. You can remove a description for a security group rule by omitting the description parameter in the request. - */ - updateSecurityGroupRuleDescriptionsIngress(params: EC2.Types.UpdateSecurityGroupRuleDescriptionsIngressRequest, callback?: (err: AWSError, data: EC2.Types.UpdateSecurityGroupRuleDescriptionsIngressResult) => void): Request; - /** - * Updates the description of an ingress (inbound) security group rule. You can replace an existing description, or add a description to a rule that did not have one previously. You specify the description as part of the IP permissions structure. You can remove a description for a security group rule by omitting the description parameter in the request. - */ - updateSecurityGroupRuleDescriptionsIngress(callback?: (err: AWSError, data: EC2.Types.UpdateSecurityGroupRuleDescriptionsIngressResult) => void): Request; - /** - * Waits for the instanceExists state by periodically calling the underlying EC2.describeInstancesoperation every 5 seconds (at most 40 times). - */ - waitFor(state: "instanceExists", params: EC2.Types.DescribeInstancesRequest, callback?: (err: AWSError, data: EC2.Types.DescribeInstancesResult) => void): Request; - /** - * Waits for the instanceExists state by periodically calling the underlying EC2.describeInstancesoperation every 5 seconds (at most 40 times). - */ - waitFor(state: "instanceExists", callback?: (err: AWSError, data: EC2.Types.DescribeInstancesResult) => void): Request; - /** - * Waits for the bundleTaskComplete state by periodically calling the underlying EC2.describeBundleTasksoperation every 15 seconds (at most 40 times). - */ - waitFor(state: "bundleTaskComplete", params: EC2.Types.DescribeBundleTasksRequest, callback?: (err: AWSError, data: EC2.Types.DescribeBundleTasksResult) => void): Request; - /** - * Waits for the bundleTaskComplete state by periodically calling the underlying EC2.describeBundleTasksoperation every 15 seconds (at most 40 times). - */ - waitFor(state: "bundleTaskComplete", callback?: (err: AWSError, data: EC2.Types.DescribeBundleTasksResult) => void): Request; - /** - * Waits for the conversionTaskCancelled state by periodically calling the underlying EC2.describeConversionTasksoperation every 15 seconds (at most 40 times). - */ - waitFor(state: "conversionTaskCancelled", params: EC2.Types.DescribeConversionTasksRequest, callback?: (err: AWSError, data: EC2.Types.DescribeConversionTasksResult) => void): Request; - /** - * Waits for the conversionTaskCancelled state by periodically calling the underlying EC2.describeConversionTasksoperation every 15 seconds (at most 40 times). - */ - waitFor(state: "conversionTaskCancelled", callback?: (err: AWSError, data: EC2.Types.DescribeConversionTasksResult) => void): Request; - /** - * Waits for the conversionTaskCompleted state by periodically calling the underlying EC2.describeConversionTasksoperation every 15 seconds (at most 40 times). - */ - waitFor(state: "conversionTaskCompleted", params: EC2.Types.DescribeConversionTasksRequest, callback?: (err: AWSError, data: EC2.Types.DescribeConversionTasksResult) => void): Request; - /** - * Waits for the conversionTaskCompleted state by periodically calling the underlying EC2.describeConversionTasksoperation every 15 seconds (at most 40 times). - */ - waitFor(state: "conversionTaskCompleted", callback?: (err: AWSError, data: EC2.Types.DescribeConversionTasksResult) => void): Request; - /** - * Waits for the conversionTaskDeleted state by periodically calling the underlying EC2.describeConversionTasksoperation every 15 seconds (at most 40 times). - */ - waitFor(state: "conversionTaskDeleted", params: EC2.Types.DescribeConversionTasksRequest, callback?: (err: AWSError, data: EC2.Types.DescribeConversionTasksResult) => void): Request; - /** - * Waits for the conversionTaskDeleted state by periodically calling the underlying EC2.describeConversionTasksoperation every 15 seconds (at most 40 times). - */ - waitFor(state: "conversionTaskDeleted", callback?: (err: AWSError, data: EC2.Types.DescribeConversionTasksResult) => void): Request; - /** - * Waits for the customerGatewayAvailable state by periodically calling the underlying EC2.describeCustomerGatewaysoperation every 15 seconds (at most 40 times). - */ - waitFor(state: "customerGatewayAvailable", params: EC2.Types.DescribeCustomerGatewaysRequest, callback?: (err: AWSError, data: EC2.Types.DescribeCustomerGatewaysResult) => void): Request; - /** - * Waits for the customerGatewayAvailable state by periodically calling the underlying EC2.describeCustomerGatewaysoperation every 15 seconds (at most 40 times). - */ - waitFor(state: "customerGatewayAvailable", callback?: (err: AWSError, data: EC2.Types.DescribeCustomerGatewaysResult) => void): Request; - /** - * Waits for the exportTaskCancelled state by periodically calling the underlying EC2.describeExportTasksoperation every 15 seconds (at most 40 times). - */ - waitFor(state: "exportTaskCancelled", params: EC2.Types.DescribeExportTasksRequest, callback?: (err: AWSError, data: EC2.Types.DescribeExportTasksResult) => void): Request; - /** - * Waits for the exportTaskCancelled state by periodically calling the underlying EC2.describeExportTasksoperation every 15 seconds (at most 40 times). - */ - waitFor(state: "exportTaskCancelled", callback?: (err: AWSError, data: EC2.Types.DescribeExportTasksResult) => void): Request; - /** - * Waits for the exportTaskCompleted state by periodically calling the underlying EC2.describeExportTasksoperation every 15 seconds (at most 40 times). - */ - waitFor(state: "exportTaskCompleted", params: EC2.Types.DescribeExportTasksRequest, callback?: (err: AWSError, data: EC2.Types.DescribeExportTasksResult) => void): Request; - /** - * Waits for the exportTaskCompleted state by periodically calling the underlying EC2.describeExportTasksoperation every 15 seconds (at most 40 times). - */ - waitFor(state: "exportTaskCompleted", callback?: (err: AWSError, data: EC2.Types.DescribeExportTasksResult) => void): Request; - /** - * Waits for the imageExists state by periodically calling the underlying EC2.describeImagesoperation every 15 seconds (at most 40 times). - */ - waitFor(state: "imageExists", params: EC2.Types.DescribeImagesRequest, callback?: (err: AWSError, data: EC2.Types.DescribeImagesResult) => void): Request; - /** - * Waits for the imageExists state by periodically calling the underlying EC2.describeImagesoperation every 15 seconds (at most 40 times). - */ - waitFor(state: "imageExists", callback?: (err: AWSError, data: EC2.Types.DescribeImagesResult) => void): Request; - /** - * Waits for the imageAvailable state by periodically calling the underlying EC2.describeImagesoperation every 15 seconds (at most 40 times). - */ - waitFor(state: "imageAvailable", params: EC2.Types.DescribeImagesRequest, callback?: (err: AWSError, data: EC2.Types.DescribeImagesResult) => void): Request; - /** - * Waits for the imageAvailable state by periodically calling the underlying EC2.describeImagesoperation every 15 seconds (at most 40 times). - */ - waitFor(state: "imageAvailable", callback?: (err: AWSError, data: EC2.Types.DescribeImagesResult) => void): Request; - /** - * Waits for the instanceRunning state by periodically calling the underlying EC2.describeInstancesoperation every 15 seconds (at most 40 times). - */ - waitFor(state: "instanceRunning", params: EC2.Types.DescribeInstancesRequest, callback?: (err: AWSError, data: EC2.Types.DescribeInstancesResult) => void): Request; - /** - * Waits for the instanceRunning state by periodically calling the underlying EC2.describeInstancesoperation every 15 seconds (at most 40 times). - */ - waitFor(state: "instanceRunning", callback?: (err: AWSError, data: EC2.Types.DescribeInstancesResult) => void): Request; - /** - * Waits for the instanceStatusOk state by periodically calling the underlying EC2.describeInstanceStatusoperation every 15 seconds (at most 40 times). - */ - waitFor(state: "instanceStatusOk", params: EC2.Types.DescribeInstanceStatusRequest, callback?: (err: AWSError, data: EC2.Types.DescribeInstanceStatusResult) => void): Request; - /** - * Waits for the instanceStatusOk state by periodically calling the underlying EC2.describeInstanceStatusoperation every 15 seconds (at most 40 times). - */ - waitFor(state: "instanceStatusOk", callback?: (err: AWSError, data: EC2.Types.DescribeInstanceStatusResult) => void): Request; - /** - * Waits for the instanceStopped state by periodically calling the underlying EC2.describeInstancesoperation every 15 seconds (at most 40 times). - */ - waitFor(state: "instanceStopped", params: EC2.Types.DescribeInstancesRequest, callback?: (err: AWSError, data: EC2.Types.DescribeInstancesResult) => void): Request; - /** - * Waits for the instanceStopped state by periodically calling the underlying EC2.describeInstancesoperation every 15 seconds (at most 40 times). - */ - waitFor(state: "instanceStopped", callback?: (err: AWSError, data: EC2.Types.DescribeInstancesResult) => void): Request; - /** - * Waits for the instanceTerminated state by periodically calling the underlying EC2.describeInstancesoperation every 15 seconds (at most 40 times). - */ - waitFor(state: "instanceTerminated", params: EC2.Types.DescribeInstancesRequest, callback?: (err: AWSError, data: EC2.Types.DescribeInstancesResult) => void): Request; - /** - * Waits for the instanceTerminated state by periodically calling the underlying EC2.describeInstancesoperation every 15 seconds (at most 40 times). - */ - waitFor(state: "instanceTerminated", callback?: (err: AWSError, data: EC2.Types.DescribeInstancesResult) => void): Request; - /** - * Waits for the keyPairExists state by periodically calling the underlying EC2.describeKeyPairsoperation every 5 seconds (at most 6 times). - */ - waitFor(state: "keyPairExists", params: EC2.Types.DescribeKeyPairsRequest, callback?: (err: AWSError, data: EC2.Types.DescribeKeyPairsResult) => void): Request; - /** - * Waits for the keyPairExists state by periodically calling the underlying EC2.describeKeyPairsoperation every 5 seconds (at most 6 times). - */ - waitFor(state: "keyPairExists", callback?: (err: AWSError, data: EC2.Types.DescribeKeyPairsResult) => void): Request; - /** - * Waits for the natGatewayAvailable state by periodically calling the underlying EC2.describeNatGatewaysoperation every 15 seconds (at most 40 times). - */ - waitFor(state: "natGatewayAvailable", params: EC2.Types.DescribeNatGatewaysRequest, callback?: (err: AWSError, data: EC2.Types.DescribeNatGatewaysResult) => void): Request; - /** - * Waits for the natGatewayAvailable state by periodically calling the underlying EC2.describeNatGatewaysoperation every 15 seconds (at most 40 times). - */ - waitFor(state: "natGatewayAvailable", callback?: (err: AWSError, data: EC2.Types.DescribeNatGatewaysResult) => void): Request; - /** - * Waits for the networkInterfaceAvailable state by periodically calling the underlying EC2.describeNetworkInterfacesoperation every 20 seconds (at most 10 times). - */ - waitFor(state: "networkInterfaceAvailable", params: EC2.Types.DescribeNetworkInterfacesRequest, callback?: (err: AWSError, data: EC2.Types.DescribeNetworkInterfacesResult) => void): Request; - /** - * Waits for the networkInterfaceAvailable state by periodically calling the underlying EC2.describeNetworkInterfacesoperation every 20 seconds (at most 10 times). - */ - waitFor(state: "networkInterfaceAvailable", callback?: (err: AWSError, data: EC2.Types.DescribeNetworkInterfacesResult) => void): Request; - /** - * Waits for the passwordDataAvailable state by periodically calling the underlying EC2.getPasswordDataoperation every 15 seconds (at most 40 times). - */ - waitFor(state: "passwordDataAvailable", params: EC2.Types.GetPasswordDataRequest, callback?: (err: AWSError, data: EC2.Types.GetPasswordDataResult) => void): Request; - /** - * Waits for the passwordDataAvailable state by periodically calling the underlying EC2.getPasswordDataoperation every 15 seconds (at most 40 times). - */ - waitFor(state: "passwordDataAvailable", callback?: (err: AWSError, data: EC2.Types.GetPasswordDataResult) => void): Request; - /** - * Waits for the snapshotCompleted state by periodically calling the underlying EC2.describeSnapshotsoperation every 15 seconds (at most 40 times). - */ - waitFor(state: "snapshotCompleted", params: EC2.Types.DescribeSnapshotsRequest, callback?: (err: AWSError, data: EC2.Types.DescribeSnapshotsResult) => void): Request; - /** - * Waits for the snapshotCompleted state by periodically calling the underlying EC2.describeSnapshotsoperation every 15 seconds (at most 40 times). - */ - waitFor(state: "snapshotCompleted", callback?: (err: AWSError, data: EC2.Types.DescribeSnapshotsResult) => void): Request; - /** - * Waits for the spotInstanceRequestFulfilled state by periodically calling the underlying EC2.describeSpotInstanceRequestsoperation every 15 seconds (at most 40 times). - */ - waitFor(state: "spotInstanceRequestFulfilled", params: EC2.Types.DescribeSpotInstanceRequestsRequest, callback?: (err: AWSError, data: EC2.Types.DescribeSpotInstanceRequestsResult) => void): Request; - /** - * Waits for the spotInstanceRequestFulfilled state by periodically calling the underlying EC2.describeSpotInstanceRequestsoperation every 15 seconds (at most 40 times). - */ - waitFor(state: "spotInstanceRequestFulfilled", callback?: (err: AWSError, data: EC2.Types.DescribeSpotInstanceRequestsResult) => void): Request; - /** - * Waits for the subnetAvailable state by periodically calling the underlying EC2.describeSubnetsoperation every 15 seconds (at most 40 times). - */ - waitFor(state: "subnetAvailable", params: EC2.Types.DescribeSubnetsRequest, callback?: (err: AWSError, data: EC2.Types.DescribeSubnetsResult) => void): Request; - /** - * Waits for the subnetAvailable state by periodically calling the underlying EC2.describeSubnetsoperation every 15 seconds (at most 40 times). - */ - waitFor(state: "subnetAvailable", callback?: (err: AWSError, data: EC2.Types.DescribeSubnetsResult) => void): Request; - /** - * Waits for the systemStatusOk state by periodically calling the underlying EC2.describeInstanceStatusoperation every 15 seconds (at most 40 times). - */ - waitFor(state: "systemStatusOk", params: EC2.Types.DescribeInstanceStatusRequest, callback?: (err: AWSError, data: EC2.Types.DescribeInstanceStatusResult) => void): Request; - /** - * Waits for the systemStatusOk state by periodically calling the underlying EC2.describeInstanceStatusoperation every 15 seconds (at most 40 times). - */ - waitFor(state: "systemStatusOk", callback?: (err: AWSError, data: EC2.Types.DescribeInstanceStatusResult) => void): Request; - /** - * Waits for the volumeAvailable state by periodically calling the underlying EC2.describeVolumesoperation every 15 seconds (at most 40 times). - */ - waitFor(state: "volumeAvailable", params: EC2.Types.DescribeVolumesRequest, callback?: (err: AWSError, data: EC2.Types.DescribeVolumesResult) => void): Request; - /** - * Waits for the volumeAvailable state by periodically calling the underlying EC2.describeVolumesoperation every 15 seconds (at most 40 times). - */ - waitFor(state: "volumeAvailable", callback?: (err: AWSError, data: EC2.Types.DescribeVolumesResult) => void): Request; - /** - * Waits for the volumeDeleted state by periodically calling the underlying EC2.describeVolumesoperation every 15 seconds (at most 40 times). - */ - waitFor(state: "volumeDeleted", params: EC2.Types.DescribeVolumesRequest, callback?: (err: AWSError, data: EC2.Types.DescribeVolumesResult) => void): Request; - /** - * Waits for the volumeDeleted state by periodically calling the underlying EC2.describeVolumesoperation every 15 seconds (at most 40 times). - */ - waitFor(state: "volumeDeleted", callback?: (err: AWSError, data: EC2.Types.DescribeVolumesResult) => void): Request; - /** - * Waits for the volumeInUse state by periodically calling the underlying EC2.describeVolumesoperation every 15 seconds (at most 40 times). - */ - waitFor(state: "volumeInUse", params: EC2.Types.DescribeVolumesRequest, callback?: (err: AWSError, data: EC2.Types.DescribeVolumesResult) => void): Request; - /** - * Waits for the volumeInUse state by periodically calling the underlying EC2.describeVolumesoperation every 15 seconds (at most 40 times). - */ - waitFor(state: "volumeInUse", callback?: (err: AWSError, data: EC2.Types.DescribeVolumesResult) => void): Request; - /** - * Waits for the vpcAvailable state by periodically calling the underlying EC2.describeVpcsoperation every 15 seconds (at most 40 times). - */ - waitFor(state: "vpcAvailable", params: EC2.Types.DescribeVpcsRequest, callback?: (err: AWSError, data: EC2.Types.DescribeVpcsResult) => void): Request; - /** - * Waits for the vpcAvailable state by periodically calling the underlying EC2.describeVpcsoperation every 15 seconds (at most 40 times). - */ - waitFor(state: "vpcAvailable", callback?: (err: AWSError, data: EC2.Types.DescribeVpcsResult) => void): Request; - /** - * Waits for the vpcExists state by periodically calling the underlying EC2.describeVpcsoperation every 1 seconds (at most 5 times). - */ - waitFor(state: "vpcExists", params: EC2.Types.DescribeVpcsRequest, callback?: (err: AWSError, data: EC2.Types.DescribeVpcsResult) => void): Request; - /** - * Waits for the vpcExists state by periodically calling the underlying EC2.describeVpcsoperation every 1 seconds (at most 5 times). - */ - waitFor(state: "vpcExists", callback?: (err: AWSError, data: EC2.Types.DescribeVpcsResult) => void): Request; - /** - * Waits for the vpnConnectionAvailable state by periodically calling the underlying EC2.describeVpnConnectionsoperation every 15 seconds (at most 40 times). - */ - waitFor(state: "vpnConnectionAvailable", params: EC2.Types.DescribeVpnConnectionsRequest, callback?: (err: AWSError, data: EC2.Types.DescribeVpnConnectionsResult) => void): Request; - /** - * Waits for the vpnConnectionAvailable state by periodically calling the underlying EC2.describeVpnConnectionsoperation every 15 seconds (at most 40 times). - */ - waitFor(state: "vpnConnectionAvailable", callback?: (err: AWSError, data: EC2.Types.DescribeVpnConnectionsResult) => void): Request; - /** - * Waits for the vpnConnectionDeleted state by periodically calling the underlying EC2.describeVpnConnectionsoperation every 15 seconds (at most 40 times). - */ - waitFor(state: "vpnConnectionDeleted", params: EC2.Types.DescribeVpnConnectionsRequest, callback?: (err: AWSError, data: EC2.Types.DescribeVpnConnectionsResult) => void): Request; - /** - * Waits for the vpnConnectionDeleted state by periodically calling the underlying EC2.describeVpnConnectionsoperation every 15 seconds (at most 40 times). - */ - waitFor(state: "vpnConnectionDeleted", callback?: (err: AWSError, data: EC2.Types.DescribeVpnConnectionsResult) => void): Request; - /** - * Waits for the vpcPeeringConnectionExists state by periodically calling the underlying EC2.describeVpcPeeringConnectionsoperation every 15 seconds (at most 40 times). - */ - waitFor(state: "vpcPeeringConnectionExists", params: EC2.Types.DescribeVpcPeeringConnectionsRequest, callback?: (err: AWSError, data: EC2.Types.DescribeVpcPeeringConnectionsResult) => void): Request; - /** - * Waits for the vpcPeeringConnectionExists state by periodically calling the underlying EC2.describeVpcPeeringConnectionsoperation every 15 seconds (at most 40 times). - */ - waitFor(state: "vpcPeeringConnectionExists", callback?: (err: AWSError, data: EC2.Types.DescribeVpcPeeringConnectionsResult) => void): Request; - /** - * Waits for the vpcPeeringConnectionDeleted state by periodically calling the underlying EC2.describeVpcPeeringConnectionsoperation every 15 seconds (at most 40 times). - */ - waitFor(state: "vpcPeeringConnectionDeleted", params: EC2.Types.DescribeVpcPeeringConnectionsRequest, callback?: (err: AWSError, data: EC2.Types.DescribeVpcPeeringConnectionsResult) => void): Request; - /** - * Waits for the vpcPeeringConnectionDeleted state by periodically calling the underlying EC2.describeVpcPeeringConnectionsoperation every 15 seconds (at most 40 times). - */ - waitFor(state: "vpcPeeringConnectionDeleted", callback?: (err: AWSError, data: EC2.Types.DescribeVpcPeeringConnectionsResult) => void): Request; -} -declare namespace EC2 { - export interface AcceptReservedInstancesExchangeQuoteRequest { - /** - * Checks whether you have the required permissions for the action, without actually making the request, and provides an error response. If you have the required permissions, the error response is DryRunOperation. Otherwise, it is UnauthorizedOperation. - */ - DryRun?: Boolean; - /** - * The IDs of the Convertible Reserved Instances to exchange for other Convertible Reserved Instances of the same or higher value. - */ - ReservedInstanceIds: ReservedInstanceIdSet; - /** - * The configurations of the Convertible Reserved Instance offerings that you are purchasing in this exchange. - */ - TargetConfigurations?: TargetConfigurationRequestSet; - } - export interface AcceptReservedInstancesExchangeQuoteResult { - /** - * The ID of the successful exchange. - */ - ExchangeId?: String; - } - export interface AcceptVpcPeeringConnectionRequest { - /** - * Checks whether you have the required permissions for the action, without actually making the request, and provides an error response. If you have the required permissions, the error response is DryRunOperation. Otherwise, it is UnauthorizedOperation. - */ - DryRun?: Boolean; - /** - * The ID of the VPC peering connection. - */ - VpcPeeringConnectionId?: String; - } - export interface AcceptVpcPeeringConnectionResult { - /** - * Information about the VPC peering connection. - */ - VpcPeeringConnection?: VpcPeeringConnection; - } - export interface AccountAttribute { - /** - * The name of the account attribute. - */ - AttributeName?: String; - /** - * One or more values for the account attribute. - */ - AttributeValues?: AccountAttributeValueList; - } - export type AccountAttributeList = AccountAttribute[]; - export type AccountAttributeName = "supported-platforms"|"default-vpc"|string; - export type AccountAttributeNameStringList = AccountAttributeName[]; - export interface AccountAttributeValue { - /** - * The value of the attribute. - */ - AttributeValue?: String; - } - export type AccountAttributeValueList = AccountAttributeValue[]; - export interface ActiveInstance { - /** - * The ID of the instance. - */ - InstanceId?: String; - /** - * The instance type. - */ - InstanceType?: String; - /** - * The ID of the Spot instance request. - */ - SpotInstanceRequestId?: String; - /** - * The health status of the instance. If the status of either the instance status check or the system status check is impaired, the health status of the instance is unhealthy. Otherwise, the health status is healthy. - */ - InstanceHealth?: InstanceHealthStatus; - } - export type ActiveInstanceSet = ActiveInstance[]; - export type ActivityStatus = "error"|"pending_fulfillment"|"pending_termination"|"fulfilled"|string; - export interface Address { - /** - * The ID of the instance that the address is associated with (if any). - */ - InstanceId?: String; - /** - * The Elastic IP address. - */ - PublicIp?: String; - /** - * The ID representing the allocation of the address for use with EC2-VPC. - */ - AllocationId?: String; - /** - * The ID representing the association of the address with an instance in a VPC. - */ - AssociationId?: String; - /** - * Indicates whether this Elastic IP address is for use with instances in EC2-Classic (standard) or instances in a VPC (vpc). - */ - Domain?: DomainType; - /** - * The ID of the network interface. - */ - NetworkInterfaceId?: String; - /** - * The ID of the AWS account that owns the network interface. - */ - NetworkInterfaceOwnerId?: String; - /** - * The private IP address associated with the Elastic IP address. - */ - PrivateIpAddress?: String; - } - export type AddressList = Address[]; - export type Affinity = "default"|"host"|string; - export interface AllocateAddressRequest { - /** - * Set to vpc to allocate the address for use with instances in a VPC. Default: The address is for use with instances in EC2-Classic. - */ - Domain?: DomainType; - /** - * [EC2-VPC] The Elastic IP address to recover. - */ - Address?: String; - /** - * Checks whether you have the required permissions for the action, without actually making the request, and provides an error response. If you have the required permissions, the error response is DryRunOperation. Otherwise, it is UnauthorizedOperation. - */ - DryRun?: Boolean; - } - export interface AllocateAddressResult { - /** - * The Elastic IP address. - */ - PublicIp?: String; - /** - * [EC2-VPC] The ID that AWS assigns to represent the allocation of the Elastic IP address for use with instances in a VPC. - */ - AllocationId?: String; - /** - * Indicates whether this Elastic IP address is for use with instances in EC2-Classic (standard) or instances in a VPC (vpc). - */ - Domain?: DomainType; - } - export interface AllocateHostsRequest { - /** - * This is enabled by default. This property allows instances to be automatically placed onto available Dedicated Hosts, when you are launching instances without specifying a host ID. Default: Enabled - */ - AutoPlacement?: AutoPlacement; - /** - * The Availability Zone for the Dedicated Hosts. - */ - AvailabilityZone: String; - /** - * Unique, case-sensitive identifier you provide to ensure idempotency of the request. For more information, see How to Ensure Idempotency in the Amazon Elastic Compute Cloud User Guide. - */ - ClientToken?: String; - /** - * Specify the instance type that you want your Dedicated Hosts to be configured for. When you specify the instance type, that is the only instance type that you can launch onto that host. - */ - InstanceType: String; - /** - * The number of Dedicated Hosts you want to allocate to your account with these parameters. - */ - Quantity: Integer; - } - export interface AllocateHostsResult { - /** - * The ID of the allocated Dedicated Host. This is used when you want to launch an instance onto a specific host. - */ - HostIds?: ResponseHostIdList; - } - export type AllocationIdList = String[]; - export type AllocationState = "available"|"under-assessment"|"permanent-failure"|"released"|"released-permanent-failure"|string; - export type AllocationStrategy = "lowestPrice"|"diversified"|string; - export type ArchitectureValues = "i386"|"x86_64"|string; - export interface AssignIpv6AddressesRequest { - /** - * The number of IPv6 addresses to assign to the network interface. Amazon EC2 automatically selects the IPv6 addresses from the subnet range. You can't use this option if specifying specific IPv6 addresses. - */ - Ipv6AddressCount?: Integer; - /** - * One or more specific IPv6 addresses to be assigned to the network interface. You can't use this option if you're specifying a number of IPv6 addresses. - */ - Ipv6Addresses?: Ipv6AddressList; - /** - * The ID of the network interface. - */ - NetworkInterfaceId: String; - } - export interface AssignIpv6AddressesResult { - /** - * The IPv6 addresses assigned to the network interface. - */ - AssignedIpv6Addresses?: Ipv6AddressList; - /** - * The ID of the network interface. - */ - NetworkInterfaceId?: String; - } - export interface AssignPrivateIpAddressesRequest { - /** - * Indicates whether to allow an IP address that is already assigned to another network interface or instance to be reassigned to the specified network interface. - */ - AllowReassignment?: Boolean; - /** - * The ID of the network interface. - */ - NetworkInterfaceId: String; - /** - * One or more IP addresses to be assigned as a secondary private IP address to the network interface. You can't specify this parameter when also specifying a number of secondary IP addresses. If you don't specify an IP address, Amazon EC2 automatically selects an IP address within the subnet range. - */ - PrivateIpAddresses?: PrivateIpAddressStringList; - /** - * The number of secondary IP addresses to assign to the network interface. You can't specify this parameter when also specifying private IP addresses. - */ - SecondaryPrivateIpAddressCount?: Integer; - } - export interface AssociateAddressRequest { - /** - * [EC2-VPC] The allocation ID. This is required for EC2-VPC. - */ - AllocationId?: String; - /** - * The ID of the instance. This is required for EC2-Classic. For EC2-VPC, you can specify either the instance ID or the network interface ID, but not both. The operation fails if you specify an instance ID unless exactly one network interface is attached. - */ - InstanceId?: String; - /** - * The Elastic IP address. This is required for EC2-Classic. - */ - PublicIp?: String; - /** - * [EC2-VPC] For a VPC in an EC2-Classic account, specify true to allow an Elastic IP address that is already associated with an instance or network interface to be reassociated with the specified instance or network interface. Otherwise, the operation fails. In a VPC in an EC2-VPC-only account, reassociation is automatic, therefore you can specify false to ensure the operation fails if the Elastic IP address is already associated with another resource. - */ - AllowReassociation?: Boolean; - /** - * Checks whether you have the required permissions for the action, without actually making the request, and provides an error response. If you have the required permissions, the error response is DryRunOperation. Otherwise, it is UnauthorizedOperation. - */ - DryRun?: Boolean; - /** - * [EC2-VPC] The ID of the network interface. If the instance has more than one network interface, you must specify a network interface ID. - */ - NetworkInterfaceId?: String; - /** - * [EC2-VPC] The primary or secondary private IP address to associate with the Elastic IP address. If no private IP address is specified, the Elastic IP address is associated with the primary private IP address. - */ - PrivateIpAddress?: String; - } - export interface AssociateAddressResult { - /** - * [EC2-VPC] The ID that represents the association of the Elastic IP address with an instance. - */ - AssociationId?: String; - } - export interface AssociateDhcpOptionsRequest { - /** - * The ID of the DHCP options set, or default to associate no DHCP options with the VPC. - */ - DhcpOptionsId: String; - /** - * The ID of the VPC. - */ - VpcId: String; - /** - * Checks whether you have the required permissions for the action, without actually making the request, and provides an error response. If you have the required permissions, the error response is DryRunOperation. Otherwise, it is UnauthorizedOperation. - */ - DryRun?: Boolean; - } - export interface AssociateIamInstanceProfileRequest { - /** - * The IAM instance profile. - */ - IamInstanceProfile: IamInstanceProfileSpecification; - /** - * The ID of the instance. - */ - InstanceId: String; - } - export interface AssociateIamInstanceProfileResult { - /** - * Information about the IAM instance profile association. - */ - IamInstanceProfileAssociation?: IamInstanceProfileAssociation; - } - export interface AssociateRouteTableRequest { - /** - * Checks whether you have the required permissions for the action, without actually making the request, and provides an error response. If you have the required permissions, the error response is DryRunOperation. Otherwise, it is UnauthorizedOperation. - */ - DryRun?: Boolean; - /** - * The ID of the route table. - */ - RouteTableId: String; - /** - * The ID of the subnet. - */ - SubnetId: String; - } - export interface AssociateRouteTableResult { - /** - * The route table association ID (needed to disassociate the route table). - */ - AssociationId?: String; - } - export interface AssociateSubnetCidrBlockRequest { - /** - * The IPv6 CIDR block for your subnet. The subnet must have a /64 prefix length. - */ - Ipv6CidrBlock: String; - /** - * The ID of your subnet. - */ - SubnetId: String; - } - export interface AssociateSubnetCidrBlockResult { - /** - * Information about the IPv6 CIDR block association. - */ - Ipv6CidrBlockAssociation?: SubnetIpv6CidrBlockAssociation; - /** - * The ID of the subnet. - */ - SubnetId?: String; - } - export interface AssociateVpcCidrBlockRequest { - /** - * Requests an Amazon-provided IPv6 CIDR block with a /56 prefix length for the VPC. You cannot specify the range of IPv6 addresses, or the size of the CIDR block. - */ - AmazonProvidedIpv6CidrBlock?: Boolean; - /** - * An IPv4 CIDR block to associate with the VPC. - */ - CidrBlock?: String; - /** - * The ID of the VPC. - */ - VpcId: String; - } - export interface AssociateVpcCidrBlockResult { - /** - * Information about the IPv6 CIDR block association. - */ - Ipv6CidrBlockAssociation?: VpcIpv6CidrBlockAssociation; - /** - * Information about the IPv4 CIDR block association. - */ - CidrBlockAssociation?: VpcCidrBlockAssociation; - /** - * The ID of the VPC. - */ - VpcId?: String; - } - export type AssociationIdList = String[]; - export interface AttachClassicLinkVpcRequest { - /** - * Checks whether you have the required permissions for the action, without actually making the request, and provides an error response. If you have the required permissions, the error response is DryRunOperation. Otherwise, it is UnauthorizedOperation. - */ - DryRun?: Boolean; - /** - * The ID of one or more of the VPC's security groups. You cannot specify security groups from a different VPC. - */ - Groups: GroupIdStringList; - /** - * The ID of an EC2-Classic instance to link to the ClassicLink-enabled VPC. - */ - InstanceId: String; - /** - * The ID of a ClassicLink-enabled VPC. - */ - VpcId: String; - } - export interface AttachClassicLinkVpcResult { - /** - * Returns true if the request succeeds; otherwise, it returns an error. - */ - Return?: Boolean; - } - export interface AttachInternetGatewayRequest { - /** - * Checks whether you have the required permissions for the action, without actually making the request, and provides an error response. If you have the required permissions, the error response is DryRunOperation. Otherwise, it is UnauthorizedOperation. - */ - DryRun?: Boolean; - /** - * The ID of the Internet gateway. - */ - InternetGatewayId: String; - /** - * The ID of the VPC. - */ - VpcId: String; - } - export interface AttachNetworkInterfaceRequest { - /** - * The index of the device for the network interface attachment. - */ - DeviceIndex: Integer; - /** - * Checks whether you have the required permissions for the action, without actually making the request, and provides an error response. If you have the required permissions, the error response is DryRunOperation. Otherwise, it is UnauthorizedOperation. - */ - DryRun?: Boolean; - /** - * The ID of the instance. - */ - InstanceId: String; - /** - * The ID of the network interface. - */ - NetworkInterfaceId: String; - } - export interface AttachNetworkInterfaceResult { - /** - * The ID of the network interface attachment. - */ - AttachmentId?: String; - } - export interface AttachVolumeRequest { - /** - * The device name to expose to the instance (for example, /dev/sdh or xvdh). - */ - Device: String; - /** - * The ID of the instance. - */ - InstanceId: String; - /** - * The ID of the EBS volume. The volume and instance must be within the same Availability Zone. - */ - VolumeId: String; - /** - * Checks whether you have the required permissions for the action, without actually making the request, and provides an error response. If you have the required permissions, the error response is DryRunOperation. Otherwise, it is UnauthorizedOperation. - */ - DryRun?: Boolean; - } - export interface AttachVpnGatewayRequest { - /** - * The ID of the VPC. - */ - VpcId: String; - /** - * The ID of the virtual private gateway. - */ - VpnGatewayId: String; - /** - * Checks whether you have the required permissions for the action, without actually making the request, and provides an error response. If you have the required permissions, the error response is DryRunOperation. Otherwise, it is UnauthorizedOperation. - */ - DryRun?: Boolean; - } - export interface AttachVpnGatewayResult { - /** - * Information about the attachment. - */ - VpcAttachment?: VpcAttachment; - } - export type AttachmentStatus = "attaching"|"attached"|"detaching"|"detached"|string; - export interface AttributeBooleanValue { - /** - * The attribute value. The valid values are true or false. - */ - Value?: Boolean; - } - export interface AttributeValue { - /** - * The attribute value. Note that the value is case-sensitive. - */ - Value?: String; - } - export interface AuthorizeSecurityGroupEgressRequest { - /** - * Checks whether you have the required permissions for the action, without actually making the request, and provides an error response. If you have the required permissions, the error response is DryRunOperation. Otherwise, it is UnauthorizedOperation. - */ - DryRun?: Boolean; - /** - * The ID of the security group. - */ - GroupId: String; - /** - * One or more sets of IP permissions. You can't specify a destination security group and a CIDR IP address range in the same set of permissions. - */ - IpPermissions?: IpPermissionList; - /** - * Not supported. Use a set of IP permissions to specify the CIDR. - */ - CidrIp?: String; - /** - * Not supported. Use a set of IP permissions to specify the port. - */ - FromPort?: Integer; - /** - * Not supported. Use a set of IP permissions to specify the protocol name or number. - */ - IpProtocol?: String; - /** - * Not supported. Use a set of IP permissions to specify the port. - */ - ToPort?: Integer; - /** - * Not supported. Use a set of IP permissions to specify a destination security group. - */ - SourceSecurityGroupName?: String; - /** - * Not supported. Use a set of IP permissions to specify a destination security group. - */ - SourceSecurityGroupOwnerId?: String; - } - export interface AuthorizeSecurityGroupIngressRequest { - /** - * The CIDR IPv4 address range. You can't specify this parameter when specifying a source security group. - */ - CidrIp?: String; - /** - * The start of port range for the TCP and UDP protocols, or an ICMP/ICMPv6 type number. For the ICMP/ICMPv6 type number, use -1 to specify all types. If you specify all ICMP/ICMPv6 types, you must specify all codes. - */ - FromPort?: Integer; - /** - * The ID of the security group. You must specify either the security group ID or the security group name in the request. For security groups in a nondefault VPC, you must specify the security group ID. - */ - GroupId?: String; - /** - * [EC2-Classic, default VPC] The name of the security group. You must specify either the security group ID or the security group name in the request. - */ - GroupName?: String; - /** - * One or more sets of IP permissions. Can be used to specify multiple rules in a single command. - */ - IpPermissions?: IpPermissionList; - /** - * The IP protocol name (tcp, udp, icmp) or number (see Protocol Numbers). (VPC only) Use -1 to specify all protocols. If you specify -1, or a protocol number other than tcp, udp, icmp, or 58 (ICMPv6), traffic on all ports is allowed, regardless of any ports you specify. For tcp, udp, and icmp, you must specify a port range. For protocol 58 (ICMPv6), you can optionally specify a port range; if you don't, traffic for all types and codes is allowed. - */ - IpProtocol?: String; - /** - * [EC2-Classic, default VPC] The name of the source security group. You can't specify this parameter in combination with the following parameters: the CIDR IP address range, the start of the port range, the IP protocol, and the end of the port range. Creates rules that grant full ICMP, UDP, and TCP access. To create a rule with a specific IP protocol and port range, use a set of IP permissions instead. For EC2-VPC, the source security group must be in the same VPC. - */ - SourceSecurityGroupName?: String; - /** - * [EC2-Classic] The AWS account ID for the source security group, if the source security group is in a different account. You can't specify this parameter in combination with the following parameters: the CIDR IP address range, the IP protocol, the start of the port range, and the end of the port range. Creates rules that grant full ICMP, UDP, and TCP access. To create a rule with a specific IP protocol and port range, use a set of IP permissions instead. - */ - SourceSecurityGroupOwnerId?: String; - /** - * The end of port range for the TCP and UDP protocols, or an ICMP/ICMPv6 code number. For the ICMP/ICMPv6 code number, use -1 to specify all codes. If you specify all ICMP/ICMPv6 types, you must specify all codes. - */ - ToPort?: Integer; - /** - * Checks whether you have the required permissions for the action, without actually making the request, and provides an error response. If you have the required permissions, the error response is DryRunOperation. Otherwise, it is UnauthorizedOperation. - */ - DryRun?: Boolean; - } - export type AutoPlacement = "on"|"off"|string; - export interface AvailabilityZone { - /** - * The state of the Availability Zone. - */ - State?: AvailabilityZoneState; - /** - * Any messages about the Availability Zone. - */ - Messages?: AvailabilityZoneMessageList; - /** - * The name of the region. - */ - RegionName?: String; - /** - * The name of the Availability Zone. - */ - ZoneName?: String; - } - export type AvailabilityZoneList = AvailabilityZone[]; - export interface AvailabilityZoneMessage { - /** - * The message about the Availability Zone. - */ - Message?: String; - } - export type AvailabilityZoneMessageList = AvailabilityZoneMessage[]; - export type AvailabilityZoneState = "available"|"information"|"impaired"|"unavailable"|string; - export interface AvailableCapacity { - /** - * The total number of instances that the Dedicated Host supports. - */ - AvailableInstanceCapacity?: AvailableInstanceCapacityList; - /** - * The number of vCPUs available on the Dedicated Host. - */ - AvailableVCpus?: Integer; - } - export type AvailableInstanceCapacityList = InstanceCapacity[]; - export type BatchState = "submitted"|"active"|"cancelled"|"failed"|"cancelled_running"|"cancelled_terminating"|"modifying"|string; - export type BillingProductList = String[]; - export type _Blob = Buffer|Uint8Array|Blob|string; - export interface BlobAttributeValue { - Value?: _Blob; - } - export interface BlockDeviceMapping { - /** - * The device name exposed to the instance (for example, /dev/sdh or xvdh). - */ - DeviceName?: String; - /** - * The virtual device name (ephemeralN). Instance store volumes are numbered starting from 0. An instance type with 2 available instance store volumes can specify mappings for ephemeral0 and ephemeral1.The number of available instance store volumes depends on the instance type. After you connect to the instance, you must mount the volume. Constraints: For M3 instances, you must specify instance store volumes in the block device mapping for the instance. When you launch an M3 instance, we ignore any instance store volumes specified in the block device mapping for the AMI. - */ - VirtualName?: String; - /** - * Parameters used to automatically set up EBS volumes when the instance is launched. - */ - Ebs?: EbsBlockDevice; - /** - * Suppresses the specified device included in the block device mapping of the AMI. - */ - NoDevice?: String; - } - export type BlockDeviceMappingList = BlockDeviceMapping[]; - export type BlockDeviceMappingRequestList = BlockDeviceMapping[]; - export type Boolean = boolean; - export type BundleIdStringList = String[]; - export interface BundleInstanceRequest { - /** - * The ID of the instance to bundle. Type: String Default: None Required: Yes - */ - InstanceId: String; - /** - * The bucket in which to store the AMI. You can specify a bucket that you already own or a new bucket that Amazon EC2 creates on your behalf. If you specify a bucket that belongs to someone else, Amazon EC2 returns an error. - */ - Storage: Storage; - /** - * Checks whether you have the required permissions for the action, without actually making the request, and provides an error response. If you have the required permissions, the error response is DryRunOperation. Otherwise, it is UnauthorizedOperation. - */ - DryRun?: Boolean; - } - export interface BundleInstanceResult { - /** - * Information about the bundle task. - */ - BundleTask?: BundleTask; - } - export interface BundleTask { - /** - * The ID of the bundle task. - */ - BundleId?: String; - /** - * If the task fails, a description of the error. - */ - BundleTaskError?: BundleTaskError; - /** - * The ID of the instance associated with this bundle task. - */ - InstanceId?: String; - /** - * The level of task completion, as a percent (for example, 20%). - */ - Progress?: String; - /** - * The time this task started. - */ - StartTime?: DateTime; - /** - * The state of the task. - */ - State?: BundleTaskState; - /** - * The Amazon S3 storage locations. - */ - Storage?: Storage; - /** - * The time of the most recent update for the task. - */ - UpdateTime?: DateTime; - } - export interface BundleTaskError { - /** - * The error code. - */ - Code?: String; - /** - * The error message. - */ - Message?: String; - } - export type BundleTaskList = BundleTask[]; - export type BundleTaskState = "pending"|"waiting-for-shutdown"|"bundling"|"storing"|"cancelling"|"complete"|"failed"|string; - export type CancelBatchErrorCode = "fleetRequestIdDoesNotExist"|"fleetRequestIdMalformed"|"fleetRequestNotInCancellableState"|"unexpectedError"|string; - export interface CancelBundleTaskRequest { - /** - * The ID of the bundle task. - */ - BundleId: String; - /** - * Checks whether you have the required permissions for the action, without actually making the request, and provides an error response. If you have the required permissions, the error response is DryRunOperation. Otherwise, it is UnauthorizedOperation. - */ - DryRun?: Boolean; - } - export interface CancelBundleTaskResult { - /** - * Information about the bundle task. - */ - BundleTask?: BundleTask; - } - export interface CancelConversionRequest { - /** - * The ID of the conversion task. - */ - ConversionTaskId: String; - /** - * Checks whether you have the required permissions for the action, without actually making the request, and provides an error response. If you have the required permissions, the error response is DryRunOperation. Otherwise, it is UnauthorizedOperation. - */ - DryRun?: Boolean; - /** - * The reason for canceling the conversion task. - */ - ReasonMessage?: String; - } - export interface CancelExportTaskRequest { - /** - * The ID of the export task. This is the ID returned by CreateInstanceExportTask. - */ - ExportTaskId: String; - } - export interface CancelImportTaskRequest { - /** - * The reason for canceling the task. - */ - CancelReason?: String; - /** - * Checks whether you have the required permissions for the action, without actually making the request, and provides an error response. If you have the required permissions, the error response is DryRunOperation. Otherwise, it is UnauthorizedOperation. - */ - DryRun?: Boolean; - /** - * The ID of the import image or import snapshot task to be canceled. - */ - ImportTaskId?: String; - } - export interface CancelImportTaskResult { - /** - * The ID of the task being canceled. - */ - ImportTaskId?: String; - /** - * The current state of the task being canceled. - */ - PreviousState?: String; - /** - * The current state of the task being canceled. - */ - State?: String; - } - export interface CancelReservedInstancesListingRequest { - /** - * The ID of the Reserved Instance listing. - */ - ReservedInstancesListingId: String; - } - export interface CancelReservedInstancesListingResult { - /** - * The Reserved Instance listing. - */ - ReservedInstancesListings?: ReservedInstancesListingList; - } - export interface CancelSpotFleetRequestsError { - /** - * The error code. - */ - Code: CancelBatchErrorCode; - /** - * The description for the error code. - */ - Message: String; - } - export interface CancelSpotFleetRequestsErrorItem { - /** - * The error. - */ - Error: CancelSpotFleetRequestsError; - /** - * The ID of the Spot fleet request. - */ - SpotFleetRequestId: String; - } - export type CancelSpotFleetRequestsErrorSet = CancelSpotFleetRequestsErrorItem[]; - export interface CancelSpotFleetRequestsRequest { - /** - * Checks whether you have the required permissions for the action, without actually making the request, and provides an error response. If you have the required permissions, the error response is DryRunOperation. Otherwise, it is UnauthorizedOperation. - */ - DryRun?: Boolean; - /** - * The IDs of the Spot fleet requests. - */ - SpotFleetRequestIds: ValueStringList; - /** - * Indicates whether to terminate instances for a Spot fleet request if it is canceled successfully. - */ - TerminateInstances: Boolean; - } - export interface CancelSpotFleetRequestsResponse { - /** - * Information about the Spot fleet requests that are successfully canceled. - */ - SuccessfulFleetRequests?: CancelSpotFleetRequestsSuccessSet; - /** - * Information about the Spot fleet requests that are not successfully canceled. - */ - UnsuccessfulFleetRequests?: CancelSpotFleetRequestsErrorSet; - } - export interface CancelSpotFleetRequestsSuccessItem { - /** - * The current state of the Spot fleet request. - */ - CurrentSpotFleetRequestState: BatchState; - /** - * The previous state of the Spot fleet request. - */ - PreviousSpotFleetRequestState: BatchState; - /** - * The ID of the Spot fleet request. - */ - SpotFleetRequestId: String; - } - export type CancelSpotFleetRequestsSuccessSet = CancelSpotFleetRequestsSuccessItem[]; - export type CancelSpotInstanceRequestState = "active"|"open"|"closed"|"cancelled"|"completed"|string; - export interface CancelSpotInstanceRequestsRequest { - /** - * Checks whether you have the required permissions for the action, without actually making the request, and provides an error response. If you have the required permissions, the error response is DryRunOperation. Otherwise, it is UnauthorizedOperation. - */ - DryRun?: Boolean; - /** - * One or more Spot instance request IDs. - */ - SpotInstanceRequestIds: SpotInstanceRequestIdList; - } - export interface CancelSpotInstanceRequestsResult { - /** - * One or more Spot instance requests. - */ - CancelledSpotInstanceRequests?: CancelledSpotInstanceRequestList; - } - export interface CancelledSpotInstanceRequest { - /** - * The ID of the Spot instance request. - */ - SpotInstanceRequestId?: String; - /** - * The state of the Spot instance request. - */ - State?: CancelSpotInstanceRequestState; - } - export type CancelledSpotInstanceRequestList = CancelledSpotInstanceRequest[]; - export interface CidrBlock { - /** - * The IPv4 CIDR block. - */ - CidrBlock?: String; - } - export type CidrBlockSet = CidrBlock[]; - export interface ClassicLinkDnsSupport { - /** - * Indicates whether ClassicLink DNS support is enabled for the VPC. - */ - ClassicLinkDnsSupported?: Boolean; - /** - * The ID of the VPC. - */ - VpcId?: String; - } - export type ClassicLinkDnsSupportList = ClassicLinkDnsSupport[]; - export interface ClassicLinkInstance { - /** - * A list of security groups. - */ - Groups?: GroupIdentifierList; - /** - * The ID of the instance. - */ - InstanceId?: String; - /** - * Any tags assigned to the instance. - */ - Tags?: TagList; - /** - * The ID of the VPC. - */ - VpcId?: String; - } - export type ClassicLinkInstanceList = ClassicLinkInstance[]; - export interface ClientData { - /** - * A user-defined comment about the disk upload. - */ - Comment?: String; - /** - * The time that the disk upload ends. - */ - UploadEnd?: DateTime; - /** - * The size of the uploaded disk image, in GiB. - */ - UploadSize?: Double; - /** - * The time that the disk upload starts. - */ - UploadStart?: DateTime; - } - export interface ConfirmProductInstanceRequest { - /** - * The ID of the instance. - */ - InstanceId: String; - /** - * The product code. This must be a product code that you own. - */ - ProductCode: String; - /** - * Checks whether you have the required permissions for the action, without actually making the request, and provides an error response. If you have the required permissions, the error response is DryRunOperation. Otherwise, it is UnauthorizedOperation. - */ - DryRun?: Boolean; - } - export interface ConfirmProductInstanceResult { - /** - * The AWS account ID of the instance owner. This is only present if the product code is attached to the instance. - */ - OwnerId?: String; - /** - * The return value of the request. Returns true if the specified product code is owned by the requester and associated with the specified instance. - */ - Return?: Boolean; - } - export type ContainerFormat = "ova"|string; - export type ConversionIdStringList = String[]; - export interface ConversionTask { - /** - * The ID of the conversion task. - */ - ConversionTaskId: String; - /** - * The time when the task expires. If the upload isn't complete before the expiration time, we automatically cancel the task. - */ - ExpirationTime?: String; - /** - * If the task is for importing an instance, this contains information about the import instance task. - */ - ImportInstance?: ImportInstanceTaskDetails; - /** - * If the task is for importing a volume, this contains information about the import volume task. - */ - ImportVolume?: ImportVolumeTaskDetails; - /** - * The state of the conversion task. - */ - State: ConversionTaskState; - /** - * The status message related to the conversion task. - */ - StatusMessage?: String; - /** - * Any tags assigned to the task. - */ - Tags?: TagList; - } - export type ConversionTaskState = "active"|"cancelling"|"cancelled"|"completed"|string; - export interface CopyFpgaImageRequest { - /** - * Checks whether you have the required permissions for the action, without actually making the request, and provides an error response. If you have the required permissions, the error response is DryRunOperation. Otherwise, it is UnauthorizedOperation. - */ - DryRun?: Boolean; - /** - * The ID of the source AFI. - */ - SourceFpgaImageId: String; - /** - * The description for the new AFI. - */ - Description?: String; - /** - * The name for the new AFI. The default is the name of the source AFI. - */ - Name?: String; - /** - * The region that contains the source AFI. - */ - SourceRegion: String; - /** - * Unique, case-sensitive identifier that you provide to ensure the idempotency of the request. For more information, see Ensuring Idempotency. - */ - ClientToken?: String; - } - export interface CopyFpgaImageResult { - /** - * The ID of the new AFI. - */ - FpgaImageId?: String; - } - export interface CopyImageRequest { - /** - * Unique, case-sensitive identifier you provide to ensure idempotency of the request. For more information, see How to Ensure Idempotency in the Amazon Elastic Compute Cloud User Guide. - */ - ClientToken?: String; - /** - * A description for the new AMI in the destination region. - */ - Description?: String; - /** - * Specifies whether the destination snapshots of the copied image should be encrypted. The default CMK for EBS is used unless a non-default AWS Key Management Service (AWS KMS) CMK is specified with KmsKeyId. For more information, see Amazon EBS Encryption in the Amazon Elastic Compute Cloud User Guide. - */ - Encrypted?: Boolean; - /** - * The full ARN of the AWS Key Management Service (AWS KMS) CMK to use when encrypting the snapshots of an image during a copy operation. This parameter is only required if you want to use a non-default CMK; if this parameter is not specified, the default CMK for EBS is used. The ARN contains the arn:aws:kms namespace, followed by the region of the CMK, the AWS account ID of the CMK owner, the key namespace, and then the CMK ID. For example, arn:aws:kms:us-east-1:012345678910:key/abcd1234-a123-456a-a12b-a123b4cd56ef. The specified CMK must exist in the region that the snapshot is being copied to. If a KmsKeyId is specified, the Encrypted flag must also be set. - */ - KmsKeyId?: String; - /** - * The name of the new AMI in the destination region. - */ - Name: String; - /** - * The ID of the AMI to copy. - */ - SourceImageId: String; - /** - * The name of the region that contains the AMI to copy. - */ - SourceRegion: String; - /** - * Checks whether you have the required permissions for the action, without actually making the request, and provides an error response. If you have the required permissions, the error response is DryRunOperation. Otherwise, it is UnauthorizedOperation. - */ - DryRun?: Boolean; - } - export interface CopyImageResult { - /** - * The ID of the new AMI. - */ - ImageId?: String; - } - export interface CopySnapshotRequest { - /** - * A description for the EBS snapshot. - */ - Description?: String; - /** - * The destination region to use in the PresignedUrl parameter of a snapshot copy operation. This parameter is only valid for specifying the destination region in a PresignedUrl parameter, where it is required. CopySnapshot sends the snapshot copy to the regional endpoint that you send the HTTP request to, such as ec2.us-east-1.amazonaws.com (in the AWS CLI, this is specified with the --region parameter or the default region in your AWS configuration file). - */ - DestinationRegion?: String; - /** - * Specifies whether the destination snapshot should be encrypted. You can encrypt a copy of an unencrypted snapshot using this flag, but you cannot use it to create an unencrypted copy from an encrypted snapshot. Your default CMK for EBS is used unless a non-default AWS Key Management Service (AWS KMS) CMK is specified with KmsKeyId. For more information, see Amazon EBS Encryption in the Amazon Elastic Compute Cloud User Guide. - */ - Encrypted?: Boolean; - /** - * The full ARN of the AWS Key Management Service (AWS KMS) CMK to use when creating the snapshot copy. This parameter is only required if you want to use a non-default CMK; if this parameter is not specified, the default CMK for EBS is used. The ARN contains the arn:aws:kms namespace, followed by the region of the CMK, the AWS account ID of the CMK owner, the key namespace, and then the CMK ID. For example, arn:aws:kms:us-east-1:012345678910:key/abcd1234-a123-456a-a12b-a123b4cd56ef. The specified CMK must exist in the region that the snapshot is being copied to. If a KmsKeyId is specified, the Encrypted flag must also be set. - */ - KmsKeyId?: String; - /** - * The pre-signed URL that facilitates copying an encrypted snapshot. This parameter is only required when copying an encrypted snapshot with the Amazon EC2 Query API; it is available as an optional parameter in all other cases. The PresignedUrl should use the snapshot source endpoint, the CopySnapshot action, and include the SourceRegion, SourceSnapshotId, and DestinationRegion parameters. The PresignedUrl must be signed using AWS Signature Version 4. Because EBS snapshots are stored in Amazon S3, the signing algorithm for this parameter uses the same logic that is described in Authenticating Requests by Using Query Parameters (AWS Signature Version 4) in the Amazon Simple Storage Service API Reference. An invalid or improperly signed PresignedUrl will cause the copy operation to fail asynchronously, and the snapshot will move to an error state. - */ - PresignedUrl?: String; - /** - * The ID of the region that contains the snapshot to be copied. - */ - SourceRegion: String; - /** - * The ID of the EBS snapshot to copy. - */ - SourceSnapshotId: String; - /** - * Checks whether you have the required permissions for the action, without actually making the request, and provides an error response. If you have the required permissions, the error response is DryRunOperation. Otherwise, it is UnauthorizedOperation. - */ - DryRun?: Boolean; - } - export interface CopySnapshotResult { - /** - * The ID of the new snapshot. - */ - SnapshotId?: String; - } - export interface CreateCustomerGatewayRequest { - /** - * For devices that support BGP, the customer gateway's BGP ASN. Default: 65000 - */ - BgpAsn: Integer; - /** - * The Internet-routable IP address for the customer gateway's outside interface. The address must be static. - */ - PublicIp: String; - /** - * The type of VPN connection that this customer gateway supports (ipsec.1). - */ - Type: GatewayType; - /** - * Checks whether you have the required permissions for the action, without actually making the request, and provides an error response. If you have the required permissions, the error response is DryRunOperation. Otherwise, it is UnauthorizedOperation. - */ - DryRun?: Boolean; - } - export interface CreateCustomerGatewayResult { - /** - * Information about the customer gateway. - */ - CustomerGateway?: CustomerGateway; - } - export interface CreateDefaultVpcRequest { - /** - * Checks whether you have the required permissions for the action, without actually making the request, and provides an error response. If you have the required permissions, the error response is DryRunOperation. Otherwise, it is UnauthorizedOperation. - */ - DryRun?: Boolean; - } - export interface CreateDefaultVpcResult { - /** - * Information about the VPC. - */ - Vpc?: Vpc; - } - export interface CreateDhcpOptionsRequest { - /** - * A DHCP configuration option. - */ - DhcpConfigurations: NewDhcpConfigurationList; - /** - * Checks whether you have the required permissions for the action, without actually making the request, and provides an error response. If you have the required permissions, the error response is DryRunOperation. Otherwise, it is UnauthorizedOperation. - */ - DryRun?: Boolean; - } - export interface CreateDhcpOptionsResult { - /** - * A set of DHCP options. - */ - DhcpOptions?: DhcpOptions; - } - export interface CreateEgressOnlyInternetGatewayRequest { - /** - * Unique, case-sensitive identifier you provide to ensure the idempotency of the request. For more information, see How to Ensure Idempotency. - */ - ClientToken?: String; - /** - * Checks whether you have the required permissions for the action, without actually making the request, and provides an error response. If you have the required permissions, the error response is DryRunOperation. Otherwise, it is UnauthorizedOperation. - */ - DryRun?: Boolean; - /** - * The ID of the VPC for which to create the egress-only Internet gateway. - */ - VpcId: String; - } - export interface CreateEgressOnlyInternetGatewayResult { - /** - * Unique, case-sensitive identifier you provide to ensure the idempotency of the request. - */ - ClientToken?: String; - /** - * Information about the egress-only Internet gateway. - */ - EgressOnlyInternetGateway?: EgressOnlyInternetGateway; - } - export interface CreateFlowLogsRequest { - /** - * Unique, case-sensitive identifier you provide to ensure the idempotency of the request. For more information, see How to Ensure Idempotency. - */ - ClientToken?: String; - /** - * The ARN for the IAM role that's used to post flow logs to a CloudWatch Logs log group. - */ - DeliverLogsPermissionArn: String; - /** - * The name of the CloudWatch log group. - */ - LogGroupName: String; - /** - * One or more subnet, network interface, or VPC IDs. Constraints: Maximum of 1000 resources - */ - ResourceIds: ValueStringList; - /** - * The type of resource on which to create the flow log. - */ - ResourceType: FlowLogsResourceType; - /** - * The type of traffic to log. - */ - TrafficType: TrafficType; - } - export interface CreateFlowLogsResult { - /** - * Unique, case-sensitive identifier you provide to ensure the idempotency of the request. - */ - ClientToken?: String; - /** - * The IDs of the flow logs. - */ - FlowLogIds?: ValueStringList; - /** - * Information about the flow logs that could not be created successfully. - */ - Unsuccessful?: UnsuccessfulItemSet; - } - export interface CreateFpgaImageRequest { - /** - * Checks whether you have the required permissions for the action, without actually making the request, and provides an error response. If you have the required permissions, the error response is DryRunOperation. Otherwise, it is UnauthorizedOperation. - */ - DryRun?: Boolean; - /** - * The location of the encrypted design checkpoint in Amazon S3. The input must be a tarball. - */ - InputStorageLocation: StorageLocation; - /** - * The location in Amazon S3 for the output logs. - */ - LogsStorageLocation?: StorageLocation; - /** - * A description for the AFI. - */ - Description?: String; - /** - * A name for the AFI. - */ - Name?: String; - /** - * Unique, case-sensitive identifier that you provide to ensure the idempotency of the request. For more information, see Ensuring Idempotency. - */ - ClientToken?: String; - } - export interface CreateFpgaImageResult { - /** - * The FPGA image identifier (AFI ID). - */ - FpgaImageId?: String; - /** - * The global FPGA image identifier (AGFI ID). - */ - FpgaImageGlobalId?: String; - } - export interface CreateImageRequest { - /** - * Information about one or more block device mappings. - */ - BlockDeviceMappings?: BlockDeviceMappingRequestList; - /** - * A description for the new image. - */ - Description?: String; - /** - * Checks whether you have the required permissions for the action, without actually making the request, and provides an error response. If you have the required permissions, the error response is DryRunOperation. Otherwise, it is UnauthorizedOperation. - */ - DryRun?: Boolean; - /** - * The ID of the instance. - */ - InstanceId: String; - /** - * A name for the new image. Constraints: 3-128 alphanumeric characters, parentheses (()), square brackets ([]), spaces ( ), periods (.), slashes (/), dashes (-), single quotes ('), at-signs (@), or underscores(_) - */ - Name: String; - /** - * By default, Amazon EC2 attempts to shut down and reboot the instance before creating the image. If the 'No Reboot' option is set, Amazon EC2 doesn't shut down the instance before creating the image. When this option is used, file system integrity on the created image can't be guaranteed. - */ - NoReboot?: Boolean; - } - export interface CreateImageResult { - /** - * The ID of the new AMI. - */ - ImageId?: String; - } - export interface CreateInstanceExportTaskRequest { - /** - * A description for the conversion task or the resource being exported. The maximum length is 255 bytes. - */ - Description?: String; - /** - * The format and location for an instance export task. - */ - ExportToS3Task?: ExportToS3TaskSpecification; - /** - * The ID of the instance. - */ - InstanceId: String; - /** - * The target virtualization environment. - */ - TargetEnvironment?: ExportEnvironment; - } - export interface CreateInstanceExportTaskResult { - /** - * Information about the instance export task. - */ - ExportTask?: ExportTask; - } - export interface CreateInternetGatewayRequest { - /** - * Checks whether you have the required permissions for the action, without actually making the request, and provides an error response. If you have the required permissions, the error response is DryRunOperation. Otherwise, it is UnauthorizedOperation. - */ - DryRun?: Boolean; - } - export interface CreateInternetGatewayResult { - /** - * Information about the Internet gateway. - */ - InternetGateway?: InternetGateway; - } - export interface CreateKeyPairRequest { - /** - * A unique name for the key pair. Constraints: Up to 255 ASCII characters - */ - KeyName: String; - /** - * Checks whether you have the required permissions for the action, without actually making the request, and provides an error response. If you have the required permissions, the error response is DryRunOperation. Otherwise, it is UnauthorizedOperation. - */ - DryRun?: Boolean; - } - export interface CreateNatGatewayRequest { - /** - * The allocation ID of an Elastic IP address to associate with the NAT gateway. If the Elastic IP address is associated with another resource, you must first disassociate it. - */ - AllocationId: String; - /** - * Unique, case-sensitive identifier you provide to ensure the idempotency of the request. For more information, see How to Ensure Idempotency. Constraint: Maximum 64 ASCII characters. - */ - ClientToken?: String; - /** - * The subnet in which to create the NAT gateway. - */ - SubnetId: String; - } - export interface CreateNatGatewayResult { - /** - * Unique, case-sensitive identifier to ensure the idempotency of the request. Only returned if a client token was provided in the request. - */ - ClientToken?: String; - /** - * Information about the NAT gateway. - */ - NatGateway?: NatGateway; - } - export interface CreateNetworkAclEntryRequest { - /** - * The IPv4 network range to allow or deny, in CIDR notation (for example 172.16.0.0/24). - */ - CidrBlock?: String; - /** - * Checks whether you have the required permissions for the action, without actually making the request, and provides an error response. If you have the required permissions, the error response is DryRunOperation. Otherwise, it is UnauthorizedOperation. - */ - DryRun?: Boolean; - /** - * Indicates whether this is an egress rule (rule is applied to traffic leaving the subnet). - */ - Egress: Boolean; - /** - * ICMP protocol: The ICMP or ICMPv6 type and code. Required if specifying the ICMP protocol, or protocol 58 (ICMPv6) with an IPv6 CIDR block. - */ - IcmpTypeCode?: IcmpTypeCode; - /** - * The IPv6 network range to allow or deny, in CIDR notation (for example 2001:db8:1234:1a00::/64). - */ - Ipv6CidrBlock?: String; - /** - * The ID of the network ACL. - */ - NetworkAclId: String; - /** - * TCP or UDP protocols: The range of ports the rule applies to. - */ - PortRange?: PortRange; - /** - * The protocol. A value of -1 or all means all protocols. If you specify all, -1, or a protocol number other than tcp, udp, or icmp, traffic on all ports is allowed, regardless of any ports or ICMP types or codes you specify. If you specify protocol 58 (ICMPv6) and specify an IPv4 CIDR block, traffic for all ICMP types and codes allowed, regardless of any that you specify. If you specify protocol 58 (ICMPv6) and specify an IPv6 CIDR block, you must specify an ICMP type and code. - */ - Protocol: String; - /** - * Indicates whether to allow or deny the traffic that matches the rule. - */ - RuleAction: RuleAction; - /** - * The rule number for the entry (for example, 100). ACL entries are processed in ascending order by rule number. Constraints: Positive integer from 1 to 32766. The range 32767 to 65535 is reserved for internal use. - */ - RuleNumber: Integer; - } - export interface CreateNetworkAclRequest { - /** - * Checks whether you have the required permissions for the action, without actually making the request, and provides an error response. If you have the required permissions, the error response is DryRunOperation. Otherwise, it is UnauthorizedOperation. - */ - DryRun?: Boolean; - /** - * The ID of the VPC. - */ - VpcId: String; - } - export interface CreateNetworkAclResult { - /** - * Information about the network ACL. - */ - NetworkAcl?: NetworkAcl; - } - export interface CreateNetworkInterfacePermissionRequest { - /** - * The ID of the network interface. - */ - NetworkInterfaceId: String; - /** - * The AWS account ID. - */ - AwsAccountId?: String; - /** - * The AWS service. Currently not supported. - */ - AwsService?: String; - /** - * The type of permission to grant. - */ - Permission: InterfacePermissionType; - /** - * Checks whether you have the required permissions for the action, without actually making the request, and provides an error response. If you have the required permissions, the error response is DryRunOperation. Otherwise, it is UnauthorizedOperation. - */ - DryRun?: Boolean; - } - export interface CreateNetworkInterfacePermissionResult { - /** - * Information about the permission for the network interface. - */ - InterfacePermission?: NetworkInterfacePermission; - } - export interface CreateNetworkInterfaceRequest { - /** - * A description for the network interface. - */ - Description?: String; - /** - * Checks whether you have the required permissions for the action, without actually making the request, and provides an error response. If you have the required permissions, the error response is DryRunOperation. Otherwise, it is UnauthorizedOperation. - */ - DryRun?: Boolean; - /** - * The IDs of one or more security groups. - */ - Groups?: SecurityGroupIdStringList; - /** - * The number of IPv6 addresses to assign to a network interface. Amazon EC2 automatically selects the IPv6 addresses from the subnet range. You can't use this option if specifying specific IPv6 addresses. If your subnet has the AssignIpv6AddressOnCreation attribute set to true, you can specify 0 to override this setting. - */ - Ipv6AddressCount?: Integer; - /** - * One or more specific IPv6 addresses from the IPv6 CIDR block range of your subnet. You can't use this option if you're specifying a number of IPv6 addresses. - */ - Ipv6Addresses?: InstanceIpv6AddressList; - /** - * The primary private IPv4 address of the network interface. If you don't specify an IPv4 address, Amazon EC2 selects one for you from the subnet's IPv4 CIDR range. If you specify an IP address, you cannot indicate any IP addresses specified in privateIpAddresses as primary (only one IP address can be designated as primary). - */ - PrivateIpAddress?: String; - /** - * One or more private IPv4 addresses. - */ - PrivateIpAddresses?: PrivateIpAddressSpecificationList; - /** - * The number of secondary private IPv4 addresses to assign to a network interface. When you specify a number of secondary IPv4 addresses, Amazon EC2 selects these IP addresses within the subnet's IPv4 CIDR range. You can't specify this option and specify more than one private IP address using privateIpAddresses. The number of IP addresses you can assign to a network interface varies by instance type. For more information, see IP Addresses Per ENI Per Instance Type in the Amazon Virtual Private Cloud User Guide. - */ - SecondaryPrivateIpAddressCount?: Integer; - /** - * The ID of the subnet to associate with the network interface. - */ - SubnetId: String; - } - export interface CreateNetworkInterfaceResult { - /** - * Information about the network interface. - */ - NetworkInterface?: NetworkInterface; - } - export interface CreatePlacementGroupRequest { - /** - * Checks whether you have the required permissions for the action, without actually making the request, and provides an error response. If you have the required permissions, the error response is DryRunOperation. Otherwise, it is UnauthorizedOperation. - */ - DryRun?: Boolean; - /** - * A name for the placement group. Constraints: Up to 255 ASCII characters - */ - GroupName: String; - /** - * The placement strategy. - */ - Strategy: PlacementStrategy; - } - export interface CreateReservedInstancesListingRequest { - /** - * Unique, case-sensitive identifier you provide to ensure idempotency of your listings. This helps avoid duplicate listings. For more information, see Ensuring Idempotency. - */ - ClientToken: String; - /** - * The number of instances that are a part of a Reserved Instance account to be listed in the Reserved Instance Marketplace. This number should be less than or equal to the instance count associated with the Reserved Instance ID specified in this call. - */ - InstanceCount: Integer; - /** - * A list specifying the price of the Standard Reserved Instance for each month remaining in the Reserved Instance term. - */ - PriceSchedules: PriceScheduleSpecificationList; - /** - * The ID of the active Standard Reserved Instance. - */ - ReservedInstancesId: String; - } - export interface CreateReservedInstancesListingResult { - /** - * Information about the Standard Reserved Instance listing. - */ - ReservedInstancesListings?: ReservedInstancesListingList; - } - export interface CreateRouteRequest { - /** - * The IPv4 CIDR address block used for the destination match. Routing decisions are based on the most specific match. - */ - DestinationCidrBlock?: String; - /** - * The IPv6 CIDR block used for the destination match. Routing decisions are based on the most specific match. - */ - DestinationIpv6CidrBlock?: String; - /** - * Checks whether you have the required permissions for the action, without actually making the request, and provides an error response. If you have the required permissions, the error response is DryRunOperation. Otherwise, it is UnauthorizedOperation. - */ - DryRun?: Boolean; - /** - * [IPv6 traffic only] The ID of an egress-only Internet gateway. - */ - EgressOnlyInternetGatewayId?: String; - /** - * The ID of an Internet gateway or virtual private gateway attached to your VPC. - */ - GatewayId?: String; - /** - * The ID of a NAT instance in your VPC. The operation fails if you specify an instance ID unless exactly one network interface is attached. - */ - InstanceId?: String; - /** - * [IPv4 traffic only] The ID of a NAT gateway. - */ - NatGatewayId?: String; - /** - * The ID of a network interface. - */ - NetworkInterfaceId?: String; - /** - * The ID of the route table for the route. - */ - RouteTableId: String; - /** - * The ID of a VPC peering connection. - */ - VpcPeeringConnectionId?: String; - } - export interface CreateRouteResult { - /** - * Returns true if the request succeeds; otherwise, it returns an error. - */ - Return?: Boolean; - } - export interface CreateRouteTableRequest { - /** - * Checks whether you have the required permissions for the action, without actually making the request, and provides an error response. If you have the required permissions, the error response is DryRunOperation. Otherwise, it is UnauthorizedOperation. - */ - DryRun?: Boolean; - /** - * The ID of the VPC. - */ - VpcId: String; - } - export interface CreateRouteTableResult { - /** - * Information about the route table. - */ - RouteTable?: RouteTable; - } - export interface CreateSecurityGroupRequest { - /** - * A description for the security group. This is informational only. Constraints: Up to 255 characters in length Constraints for EC2-Classic: ASCII characters Constraints for EC2-VPC: a-z, A-Z, 0-9, spaces, and ._-:/()#,@[]+=&;{}!$* - */ - Description: String; - /** - * The name of the security group. Constraints: Up to 255 characters in length Constraints for EC2-Classic: ASCII characters Constraints for EC2-VPC: a-z, A-Z, 0-9, spaces, and ._-:/()#,@[]+=&;{}!$* - */ - GroupName: String; - /** - * [EC2-VPC] The ID of the VPC. Required for EC2-VPC. - */ - VpcId?: String; - /** - * Checks whether you have the required permissions for the action, without actually making the request, and provides an error response. If you have the required permissions, the error response is DryRunOperation. Otherwise, it is UnauthorizedOperation. - */ - DryRun?: Boolean; - } - export interface CreateSecurityGroupResult { - /** - * The ID of the security group. - */ - GroupId?: String; - } - export interface CreateSnapshotRequest { - /** - * A description for the snapshot. - */ - Description?: String; - /** - * The ID of the EBS volume. - */ - VolumeId: String; - /** - * Checks whether you have the required permissions for the action, without actually making the request, and provides an error response. If you have the required permissions, the error response is DryRunOperation. Otherwise, it is UnauthorizedOperation. - */ - DryRun?: Boolean; - } - export interface CreateSpotDatafeedSubscriptionRequest { - /** - * The Amazon S3 bucket in which to store the Spot instance data feed. - */ - Bucket: String; - /** - * Checks whether you have the required permissions for the action, without actually making the request, and provides an error response. If you have the required permissions, the error response is DryRunOperation. Otherwise, it is UnauthorizedOperation. - */ - DryRun?: Boolean; - /** - * A prefix for the data feed file names. - */ - Prefix?: String; - } - export interface CreateSpotDatafeedSubscriptionResult { - /** - * The Spot instance data feed subscription. - */ - SpotDatafeedSubscription?: SpotDatafeedSubscription; - } - export interface CreateSubnetRequest { - /** - * The Availability Zone for the subnet. Default: AWS selects one for you. If you create more than one subnet in your VPC, we may not necessarily select a different zone for each subnet. - */ - AvailabilityZone?: String; - /** - * The IPv4 network range for the subnet, in CIDR notation. For example, 10.0.0.0/24. - */ - CidrBlock: String; - /** - * The IPv6 network range for the subnet, in CIDR notation. The subnet size must use a /64 prefix length. - */ - Ipv6CidrBlock?: String; - /** - * The ID of the VPC. - */ - VpcId: String; - /** - * Checks whether you have the required permissions for the action, without actually making the request, and provides an error response. If you have the required permissions, the error response is DryRunOperation. Otherwise, it is UnauthorizedOperation. - */ - DryRun?: Boolean; - } - export interface CreateSubnetResult { - /** - * Information about the subnet. - */ - Subnet?: Subnet; - } - export interface CreateTagsRequest { - /** - * Checks whether you have the required permissions for the action, without actually making the request, and provides an error response. If you have the required permissions, the error response is DryRunOperation. Otherwise, it is UnauthorizedOperation. - */ - DryRun?: Boolean; - /** - * The IDs of one or more resources to tag. For example, ami-1a2b3c4d. - */ - Resources: ResourceIdList; - /** - * One or more tags. The value parameter is required, but if you don't want the tag to have a value, specify the parameter with no value, and we set the value to an empty string. - */ - Tags: TagList; - } - export interface CreateVolumePermission { - /** - * The specific group that is to be added or removed from a volume's list of create volume permissions. - */ - Group?: PermissionGroup; - /** - * The specific AWS account ID that is to be added or removed from a volume's list of create volume permissions. - */ - UserId?: String; - } - export type CreateVolumePermissionList = CreateVolumePermission[]; - export interface CreateVolumePermissionModifications { - /** - * Adds a specific AWS account ID or group to a volume's list of create volume permissions. - */ - Add?: CreateVolumePermissionList; - /** - * Removes a specific AWS account ID or group from a volume's list of create volume permissions. - */ - Remove?: CreateVolumePermissionList; - } - export interface CreateVolumeRequest { - /** - * The Availability Zone in which to create the volume. Use DescribeAvailabilityZones to list the Availability Zones that are currently available to you. - */ - AvailabilityZone: String; - /** - * Specifies whether the volume should be encrypted. Encrypted Amazon EBS volumes may only be attached to instances that support Amazon EBS encryption. Volumes that are created from encrypted snapshots are automatically encrypted. There is no way to create an encrypted volume from an unencrypted snapshot or vice versa. If your AMI uses encrypted volumes, you can only launch it on supported instance types. For more information, see Amazon EBS Encryption in the Amazon Elastic Compute Cloud User Guide. - */ - Encrypted?: Boolean; - /** - * Only valid for Provisioned IOPS SSD volumes. The number of I/O operations per second (IOPS) to provision for the volume, with a maximum ratio of 50 IOPS/GiB. Constraint: Range is 100 to 20000 for Provisioned IOPS SSD volumes - */ - Iops?: Integer; - /** - * The full ARN of the AWS Key Management Service (AWS KMS) customer master key (CMK) to use when creating the encrypted volume. This parameter is only required if you want to use a non-default CMK; if this parameter is not specified, the default CMK for EBS is used. The ARN contains the arn:aws:kms namespace, followed by the region of the CMK, the AWS account ID of the CMK owner, the key namespace, and then the CMK ID. For example, arn:aws:kms:us-east-1:012345678910:key/abcd1234-a123-456a-a12b-a123b4cd56ef. If a KmsKeyId is specified, the Encrypted flag must also be set. - */ - KmsKeyId?: String; - /** - * The size of the volume, in GiBs. Constraints: 1-16384 for gp2, 4-16384 for io1, 500-16384 for st1, 500-16384 for sc1, and 1-1024 for standard. If you specify a snapshot, the volume size must be equal to or larger than the snapshot size. Default: If you're creating the volume from a snapshot and don't specify a volume size, the default is the snapshot size. - */ - Size?: Integer; - /** - * The snapshot from which to create the volume. - */ - SnapshotId?: String; - /** - * The volume type. This can be gp2 for General Purpose SSD, io1 for Provisioned IOPS SSD, st1 for Throughput Optimized HDD, sc1 for Cold HDD, or standard for Magnetic volumes. Default: standard - */ - VolumeType?: VolumeType; - /** - * Checks whether you have the required permissions for the action, without actually making the request, and provides an error response. If you have the required permissions, the error response is DryRunOperation. Otherwise, it is UnauthorizedOperation. - */ - DryRun?: Boolean; - /** - * The tags to apply to the volume during creation. - */ - TagSpecifications?: TagSpecificationList; - } - export interface CreateVpcEndpointRequest { - /** - * Unique, case-sensitive identifier you provide to ensure the idempotency of the request. For more information, see How to Ensure Idempotency. - */ - ClientToken?: String; - /** - * Checks whether you have the required permissions for the action, without actually making the request, and provides an error response. If you have the required permissions, the error response is DryRunOperation. Otherwise, it is UnauthorizedOperation. - */ - DryRun?: Boolean; - /** - * A policy to attach to the endpoint that controls access to the service. The policy must be in valid JSON format. If this parameter is not specified, we attach a default policy that allows full access to the service. - */ - PolicyDocument?: String; - /** - * One or more route table IDs. - */ - RouteTableIds?: ValueStringList; - /** - * The AWS service name, in the form com.amazonaws.region.service . To get a list of available services, use the DescribeVpcEndpointServices request. - */ - ServiceName: String; - /** - * The ID of the VPC in which the endpoint will be used. - */ - VpcId: String; - } - export interface CreateVpcEndpointResult { - /** - * Unique, case-sensitive identifier you provide to ensure the idempotency of the request. - */ - ClientToken?: String; - /** - * Information about the endpoint. - */ - VpcEndpoint?: VpcEndpoint; - } - export interface CreateVpcPeeringConnectionRequest { - /** - * Checks whether you have the required permissions for the action, without actually making the request, and provides an error response. If you have the required permissions, the error response is DryRunOperation. Otherwise, it is UnauthorizedOperation. - */ - DryRun?: Boolean; - /** - * The AWS account ID of the owner of the peer VPC. Default: Your AWS account ID - */ - PeerOwnerId?: String; - /** - * The ID of the VPC with which you are creating the VPC peering connection. - */ - PeerVpcId?: String; - /** - * The ID of the requester VPC. - */ - VpcId?: String; - } - export interface CreateVpcPeeringConnectionResult { - /** - * Information about the VPC peering connection. - */ - VpcPeeringConnection?: VpcPeeringConnection; - } - export interface CreateVpcRequest { - /** - * The IPv4 network range for the VPC, in CIDR notation. For example, 10.0.0.0/16. - */ - CidrBlock: String; - /** - * Requests an Amazon-provided IPv6 CIDR block with a /56 prefix length for the VPC. You cannot specify the range of IP addresses, or the size of the CIDR block. - */ - AmazonProvidedIpv6CidrBlock?: Boolean; - /** - * Checks whether you have the required permissions for the action, without actually making the request, and provides an error response. If you have the required permissions, the error response is DryRunOperation. Otherwise, it is UnauthorizedOperation. - */ - DryRun?: Boolean; - /** - * The tenancy options for instances launched into the VPC. For default, instances are launched with shared tenancy by default. You can launch instances with any tenancy into a shared tenancy VPC. For dedicated, instances are launched as dedicated tenancy instances by default. You can only launch instances with a tenancy of dedicated or host into a dedicated tenancy VPC. Important: The host value cannot be used with this parameter. Use the default or dedicated values only. Default: default - */ - InstanceTenancy?: Tenancy; - } - export interface CreateVpcResult { - /** - * Information about the VPC. - */ - Vpc?: Vpc; - } - export interface CreateVpnConnectionRequest { - /** - * The ID of the customer gateway. - */ - CustomerGatewayId: String; - /** - * The type of VPN connection (ipsec.1). - */ - Type: String; - /** - * The ID of the virtual private gateway. - */ - VpnGatewayId: String; - /** - * Checks whether you have the required permissions for the action, without actually making the request, and provides an error response. If you have the required permissions, the error response is DryRunOperation. Otherwise, it is UnauthorizedOperation. - */ - DryRun?: Boolean; - /** - * The options for the VPN connection. - */ - Options?: VpnConnectionOptionsSpecification; - } - export interface CreateVpnConnectionResult { - /** - * Information about the VPN connection. - */ - VpnConnection?: VpnConnection; - } - export interface CreateVpnConnectionRouteRequest { - /** - * The CIDR block associated with the local subnet of the customer network. - */ - DestinationCidrBlock: String; - /** - * The ID of the VPN connection. - */ - VpnConnectionId: String; - } - export interface CreateVpnGatewayRequest { - /** - * The Availability Zone for the virtual private gateway. - */ - AvailabilityZone?: String; - /** - * The type of VPN connection this virtual private gateway supports. - */ - Type: GatewayType; - /** - * A private Autonomous System Number (ASN) for the Amazon side of a BGP session. If you're using a 16-bit ASN, it must be in the 64512 to 65534 range. If you're using a 32-bit ASN, it must be in the 4200000000 to 4294967294 range. Default: 64512 - */ - AmazonSideAsn?: Long; - /** - * Checks whether you have the required permissions for the action, without actually making the request, and provides an error response. If you have the required permissions, the error response is DryRunOperation. Otherwise, it is UnauthorizedOperation. - */ - DryRun?: Boolean; - } - export interface CreateVpnGatewayResult { - /** - * Information about the virtual private gateway. - */ - VpnGateway?: VpnGateway; - } - export type CurrencyCodeValues = "USD"|string; - export interface CustomerGateway { - /** - * The customer gateway's Border Gateway Protocol (BGP) Autonomous System Number (ASN). - */ - BgpAsn?: String; - /** - * The ID of the customer gateway. - */ - CustomerGatewayId?: String; - /** - * The Internet-routable IP address of the customer gateway's outside interface. - */ - IpAddress?: String; - /** - * The current state of the customer gateway (pending | available | deleting | deleted). - */ - State?: String; - /** - * The type of VPN connection the customer gateway supports (ipsec.1). - */ - Type?: String; - /** - * Any tags assigned to the customer gateway. - */ - Tags?: TagList; - } - export type CustomerGatewayIdStringList = String[]; - export type CustomerGatewayList = CustomerGateway[]; - export type DatafeedSubscriptionState = "Active"|"Inactive"|string; - export type DateTime = Date; - export interface DeleteCustomerGatewayRequest { - /** - * The ID of the customer gateway. - */ - CustomerGatewayId: String; - /** - * Checks whether you have the required permissions for the action, without actually making the request, and provides an error response. If you have the required permissions, the error response is DryRunOperation. Otherwise, it is UnauthorizedOperation. - */ - DryRun?: Boolean; - } - export interface DeleteDhcpOptionsRequest { - /** - * The ID of the DHCP options set. - */ - DhcpOptionsId: String; - /** - * Checks whether you have the required permissions for the action, without actually making the request, and provides an error response. If you have the required permissions, the error response is DryRunOperation. Otherwise, it is UnauthorizedOperation. - */ - DryRun?: Boolean; - } - export interface DeleteEgressOnlyInternetGatewayRequest { - /** - * Checks whether you have the required permissions for the action, without actually making the request, and provides an error response. If you have the required permissions, the error response is DryRunOperation. Otherwise, it is UnauthorizedOperation. - */ - DryRun?: Boolean; - /** - * The ID of the egress-only Internet gateway. - */ - EgressOnlyInternetGatewayId: EgressOnlyInternetGatewayId; - } - export interface DeleteEgressOnlyInternetGatewayResult { - /** - * Returns true if the request succeeds; otherwise, it returns an error. - */ - ReturnCode?: Boolean; - } - export interface DeleteFlowLogsRequest { - /** - * One or more flow log IDs. - */ - FlowLogIds: ValueStringList; - } - export interface DeleteFlowLogsResult { - /** - * Information about the flow logs that could not be deleted successfully. - */ - Unsuccessful?: UnsuccessfulItemSet; - } - export interface DeleteFpgaImageRequest { - /** - * Checks whether you have the required permissions for the action, without actually making the request, and provides an error response. If you have the required permissions, the error response is DryRunOperation. Otherwise, it is UnauthorizedOperation. - */ - DryRun?: Boolean; - /** - * The ID of the AFI. - */ - FpgaImageId: String; - } - export interface DeleteFpgaImageResult { - /** - * Is true if the request succeeds, and an error otherwise. - */ - Return?: Boolean; - } - export interface DeleteInternetGatewayRequest { - /** - * Checks whether you have the required permissions for the action, without actually making the request, and provides an error response. If you have the required permissions, the error response is DryRunOperation. Otherwise, it is UnauthorizedOperation. - */ - DryRun?: Boolean; - /** - * The ID of the Internet gateway. - */ - InternetGatewayId: String; - } - export interface DeleteKeyPairRequest { - /** - * The name of the key pair. - */ - KeyName: String; - /** - * Checks whether you have the required permissions for the action, without actually making the request, and provides an error response. If you have the required permissions, the error response is DryRunOperation. Otherwise, it is UnauthorizedOperation. - */ - DryRun?: Boolean; - } - export interface DeleteNatGatewayRequest { - /** - * The ID of the NAT gateway. - */ - NatGatewayId: String; - } - export interface DeleteNatGatewayResult { - /** - * The ID of the NAT gateway. - */ - NatGatewayId?: String; - } - export interface DeleteNetworkAclEntryRequest { - /** - * Checks whether you have the required permissions for the action, without actually making the request, and provides an error response. If you have the required permissions, the error response is DryRunOperation. Otherwise, it is UnauthorizedOperation. - */ - DryRun?: Boolean; - /** - * Indicates whether the rule is an egress rule. - */ - Egress: Boolean; - /** - * The ID of the network ACL. - */ - NetworkAclId: String; - /** - * The rule number of the entry to delete. - */ - RuleNumber: Integer; - } - export interface DeleteNetworkAclRequest { - /** - * Checks whether you have the required permissions for the action, without actually making the request, and provides an error response. If you have the required permissions, the error response is DryRunOperation. Otherwise, it is UnauthorizedOperation. - */ - DryRun?: Boolean; - /** - * The ID of the network ACL. - */ - NetworkAclId: String; - } - export interface DeleteNetworkInterfacePermissionRequest { - /** - * The ID of the network interface permission. - */ - NetworkInterfacePermissionId: String; - /** - * Specify true to remove the permission even if the network interface is attached to an instance. - */ - Force?: Boolean; - /** - * Checks whether you have the required permissions for the action, without actually making the request, and provides an error response. If you have the required permissions, the error response is DryRunOperation. Otherwise, it is UnauthorizedOperation. - */ - DryRun?: Boolean; - } - export interface DeleteNetworkInterfacePermissionResult { - /** - * Returns true if the request succeeds, otherwise returns an error. - */ - Return?: Boolean; - } - export interface DeleteNetworkInterfaceRequest { - /** - * Checks whether you have the required permissions for the action, without actually making the request, and provides an error response. If you have the required permissions, the error response is DryRunOperation. Otherwise, it is UnauthorizedOperation. - */ - DryRun?: Boolean; - /** - * The ID of the network interface. - */ - NetworkInterfaceId: String; - } - export interface DeletePlacementGroupRequest { - /** - * Checks whether you have the required permissions for the action, without actually making the request, and provides an error response. If you have the required permissions, the error response is DryRunOperation. Otherwise, it is UnauthorizedOperation. - */ - DryRun?: Boolean; - /** - * The name of the placement group. - */ - GroupName: String; - } - export interface DeleteRouteRequest { - /** - * The IPv4 CIDR range for the route. The value you specify must match the CIDR for the route exactly. - */ - DestinationCidrBlock?: String; - /** - * The IPv6 CIDR range for the route. The value you specify must match the CIDR for the route exactly. - */ - DestinationIpv6CidrBlock?: String; - /** - * Checks whether you have the required permissions for the action, without actually making the request, and provides an error response. If you have the required permissions, the error response is DryRunOperation. Otherwise, it is UnauthorizedOperation. - */ - DryRun?: Boolean; - /** - * The ID of the route table. - */ - RouteTableId: String; - } - export interface DeleteRouteTableRequest { - /** - * Checks whether you have the required permissions for the action, without actually making the request, and provides an error response. If you have the required permissions, the error response is DryRunOperation. Otherwise, it is UnauthorizedOperation. - */ - DryRun?: Boolean; - /** - * The ID of the route table. - */ - RouteTableId: String; - } - export interface DeleteSecurityGroupRequest { - /** - * The ID of the security group. Required for a nondefault VPC. - */ - GroupId?: String; - /** - * [EC2-Classic, default VPC] The name of the security group. You can specify either the security group name or the security group ID. - */ - GroupName?: String; - /** - * Checks whether you have the required permissions for the action, without actually making the request, and provides an error response. If you have the required permissions, the error response is DryRunOperation. Otherwise, it is UnauthorizedOperation. - */ - DryRun?: Boolean; - } - export interface DeleteSnapshotRequest { - /** - * The ID of the EBS snapshot. - */ - SnapshotId: String; - /** - * Checks whether you have the required permissions for the action, without actually making the request, and provides an error response. If you have the required permissions, the error response is DryRunOperation. Otherwise, it is UnauthorizedOperation. - */ - DryRun?: Boolean; - } - export interface DeleteSpotDatafeedSubscriptionRequest { - /** - * Checks whether you have the required permissions for the action, without actually making the request, and provides an error response. If you have the required permissions, the error response is DryRunOperation. Otherwise, it is UnauthorizedOperation. - */ - DryRun?: Boolean; - } - export interface DeleteSubnetRequest { - /** - * The ID of the subnet. - */ - SubnetId: String; - /** - * Checks whether you have the required permissions for the action, without actually making the request, and provides an error response. If you have the required permissions, the error response is DryRunOperation. Otherwise, it is UnauthorizedOperation. - */ - DryRun?: Boolean; - } - export interface DeleteTagsRequest { - /** - * Checks whether you have the required permissions for the action, without actually making the request, and provides an error response. If you have the required permissions, the error response is DryRunOperation. Otherwise, it is UnauthorizedOperation. - */ - DryRun?: Boolean; - /** - * The IDs of one or more resources. - */ - Resources: ResourceIdList; - /** - * One or more tags to delete. If you omit this parameter, we delete all tags for the specified resources. Specify a tag key and an optional tag value to delete specific tags. If you specify a tag key without a tag value, we delete any tag with this key regardless of its value. If you specify a tag key with an empty string as the tag value, we delete the tag only if its value is an empty string. - */ - Tags?: TagList; - } - export interface DeleteVolumeRequest { - /** - * The ID of the volume. - */ - VolumeId: String; - /** - * Checks whether you have the required permissions for the action, without actually making the request, and provides an error response. If you have the required permissions, the error response is DryRunOperation. Otherwise, it is UnauthorizedOperation. - */ - DryRun?: Boolean; - } - export interface DeleteVpcEndpointsRequest { - /** - * Checks whether you have the required permissions for the action, without actually making the request, and provides an error response. If you have the required permissions, the error response is DryRunOperation. Otherwise, it is UnauthorizedOperation. - */ - DryRun?: Boolean; - /** - * One or more endpoint IDs. - */ - VpcEndpointIds: ValueStringList; - } - export interface DeleteVpcEndpointsResult { - /** - * Information about the endpoints that were not successfully deleted. - */ - Unsuccessful?: UnsuccessfulItemSet; - } - export interface DeleteVpcPeeringConnectionRequest { - /** - * Checks whether you have the required permissions for the action, without actually making the request, and provides an error response. If you have the required permissions, the error response is DryRunOperation. Otherwise, it is UnauthorizedOperation. - */ - DryRun?: Boolean; - /** - * The ID of the VPC peering connection. - */ - VpcPeeringConnectionId: String; - } - export interface DeleteVpcPeeringConnectionResult { - /** - * Returns true if the request succeeds; otherwise, it returns an error. - */ - Return?: Boolean; - } - export interface DeleteVpcRequest { - /** - * The ID of the VPC. - */ - VpcId: String; - /** - * Checks whether you have the required permissions for the action, without actually making the request, and provides an error response. If you have the required permissions, the error response is DryRunOperation. Otherwise, it is UnauthorizedOperation. - */ - DryRun?: Boolean; - } - export interface DeleteVpnConnectionRequest { - /** - * The ID of the VPN connection. - */ - VpnConnectionId: String; - /** - * Checks whether you have the required permissions for the action, without actually making the request, and provides an error response. If you have the required permissions, the error response is DryRunOperation. Otherwise, it is UnauthorizedOperation. - */ - DryRun?: Boolean; - } - export interface DeleteVpnConnectionRouteRequest { - /** - * The CIDR block associated with the local subnet of the customer network. - */ - DestinationCidrBlock: String; - /** - * The ID of the VPN connection. - */ - VpnConnectionId: String; - } - export interface DeleteVpnGatewayRequest { - /** - * The ID of the virtual private gateway. - */ - VpnGatewayId: String; - /** - * Checks whether you have the required permissions for the action, without actually making the request, and provides an error response. If you have the required permissions, the error response is DryRunOperation. Otherwise, it is UnauthorizedOperation. - */ - DryRun?: Boolean; - } - export interface DeregisterImageRequest { - /** - * The ID of the AMI. - */ - ImageId: String; - /** - * Checks whether you have the required permissions for the action, without actually making the request, and provides an error response. If you have the required permissions, the error response is DryRunOperation. Otherwise, it is UnauthorizedOperation. - */ - DryRun?: Boolean; - } - export interface DescribeAccountAttributesRequest { - /** - * One or more account attribute names. - */ - AttributeNames?: AccountAttributeNameStringList; - /** - * Checks whether you have the required permissions for the action, without actually making the request, and provides an error response. If you have the required permissions, the error response is DryRunOperation. Otherwise, it is UnauthorizedOperation. - */ - DryRun?: Boolean; - } - export interface DescribeAccountAttributesResult { - /** - * Information about one or more account attributes. - */ - AccountAttributes?: AccountAttributeList; - } - export interface DescribeAddressesRequest { - /** - * One or more filters. Filter names and values are case-sensitive. allocation-id - [EC2-VPC] The allocation ID for the address. association-id - [EC2-VPC] The association ID for the address. domain - Indicates whether the address is for use in EC2-Classic (standard) or in a VPC (vpc). instance-id - The ID of the instance the address is associated with, if any. network-interface-id - [EC2-VPC] The ID of the network interface that the address is associated with, if any. network-interface-owner-id - The AWS account ID of the owner. private-ip-address - [EC2-VPC] The private IP address associated with the Elastic IP address. public-ip - The Elastic IP address. - */ - Filters?: FilterList; - /** - * [EC2-Classic] One or more Elastic IP addresses. Default: Describes all your Elastic IP addresses. - */ - PublicIps?: PublicIpStringList; - /** - * [EC2-VPC] One or more allocation IDs. Default: Describes all your Elastic IP addresses. - */ - AllocationIds?: AllocationIdList; - /** - * Checks whether you have the required permissions for the action, without actually making the request, and provides an error response. If you have the required permissions, the error response is DryRunOperation. Otherwise, it is UnauthorizedOperation. - */ - DryRun?: Boolean; - } - export interface DescribeAddressesResult { - /** - * Information about one or more Elastic IP addresses. - */ - Addresses?: AddressList; - } - export interface DescribeAvailabilityZonesRequest { - /** - * One or more filters. message - Information about the Availability Zone. region-name - The name of the region for the Availability Zone (for example, us-east-1). state - The state of the Availability Zone (available | information | impaired | unavailable). zone-name - The name of the Availability Zone (for example, us-east-1a). - */ - Filters?: FilterList; - /** - * The names of one or more Availability Zones. - */ - ZoneNames?: ZoneNameStringList; - /** - * Checks whether you have the required permissions for the action, without actually making the request, and provides an error response. If you have the required permissions, the error response is DryRunOperation. Otherwise, it is UnauthorizedOperation. - */ - DryRun?: Boolean; - } - export interface DescribeAvailabilityZonesResult { - /** - * Information about one or more Availability Zones. - */ - AvailabilityZones?: AvailabilityZoneList; - } - export interface DescribeBundleTasksRequest { - /** - * One or more bundle task IDs. Default: Describes all your bundle tasks. - */ - BundleIds?: BundleIdStringList; - /** - * One or more filters. bundle-id - The ID of the bundle task. error-code - If the task failed, the error code returned. error-message - If the task failed, the error message returned. instance-id - The ID of the instance. progress - The level of task completion, as a percentage (for example, 20%). s3-bucket - The Amazon S3 bucket to store the AMI. s3-prefix - The beginning of the AMI name. start-time - The time the task started (for example, 2013-09-15T17:15:20.000Z). state - The state of the task (pending | waiting-for-shutdown | bundling | storing | cancelling | complete | failed). update-time - The time of the most recent update for the task. - */ - Filters?: FilterList; - /** - * Checks whether you have the required permissions for the action, without actually making the request, and provides an error response. If you have the required permissions, the error response is DryRunOperation. Otherwise, it is UnauthorizedOperation. - */ - DryRun?: Boolean; - } - export interface DescribeBundleTasksResult { - /** - * Information about one or more bundle tasks. - */ - BundleTasks?: BundleTaskList; - } - export interface DescribeClassicLinkInstancesRequest { - /** - * One or more filters. group-id - The ID of a VPC security group that's associated with the instance. instance-id - The ID of the instance. tag:key=value - The key/value combination of a tag assigned to the resource. tag-key - The key of a tag assigned to the resource. This filter is independent of the tag-value filter. For example, if you use both the filter "tag-key=Purpose" and the filter "tag-value=X", you get any resources assigned both the tag key Purpose (regardless of what the tag's value is), and the tag value X (regardless of what the tag's key is). If you want to list only resources where Purpose is X, see the tag:key=value filter. tag-value - The value of a tag assigned to the resource. This filter is independent of the tag-key filter. vpc-id - The ID of the VPC that the instance is linked to. - */ - Filters?: FilterList; - /** - * Checks whether you have the required permissions for the action, without actually making the request, and provides an error response. If you have the required permissions, the error response is DryRunOperation. Otherwise, it is UnauthorizedOperation. - */ - DryRun?: Boolean; - /** - * One or more instance IDs. Must be instances linked to a VPC through ClassicLink. - */ - InstanceIds?: InstanceIdStringList; - /** - * The maximum number of results to return for the request in a single page. The remaining results of the initial request can be seen by sending another request with the returned NextToken value. This value can be between 5 and 1000; if MaxResults is given a value larger than 1000, only 1000 results are returned. You cannot specify this parameter and the instance IDs parameter in the same request. Constraint: If the value is greater than 1000, we return only 1000 items. - */ - MaxResults?: Integer; - /** - * The token to retrieve the next page of results. - */ - NextToken?: String; - } - export interface DescribeClassicLinkInstancesResult { - /** - * Information about one or more linked EC2-Classic instances. - */ - Instances?: ClassicLinkInstanceList; - /** - * The token to use to retrieve the next page of results. This value is null when there are no more results to return. - */ - NextToken?: String; - } - export type DescribeConversionTaskList = ConversionTask[]; - export interface DescribeConversionTasksRequest { - /** - * One or more conversion task IDs. - */ - ConversionTaskIds?: ConversionIdStringList; - /** - * Checks whether you have the required permissions for the action, without actually making the request, and provides an error response. If you have the required permissions, the error response is DryRunOperation. Otherwise, it is UnauthorizedOperation. - */ - DryRun?: Boolean; - } - export interface DescribeConversionTasksResult { - /** - * Information about the conversion tasks. - */ - ConversionTasks?: DescribeConversionTaskList; - } - export interface DescribeCustomerGatewaysRequest { - /** - * One or more customer gateway IDs. Default: Describes all your customer gateways. - */ - CustomerGatewayIds?: CustomerGatewayIdStringList; - /** - * One or more filters. bgp-asn - The customer gateway's Border Gateway Protocol (BGP) Autonomous System Number (ASN). customer-gateway-id - The ID of the customer gateway. ip-address - The IP address of the customer gateway's Internet-routable external interface. state - The state of the customer gateway (pending | available | deleting | deleted). type - The type of customer gateway. Currently, the only supported type is ipsec.1. tag:key=value - The key/value combination of a tag assigned to the resource. Specify the key of the tag in the filter name and the value of the tag in the filter value. For example, for the tag Purpose=X, specify tag:Purpose for the filter name and X for the filter value. tag-key - The key of a tag assigned to the resource. This filter is independent of the tag-value filter. For example, if you use both the filter "tag-key=Purpose" and the filter "tag-value=X", you get any resources assigned both the tag key Purpose (regardless of what the tag's value is), and the tag value X (regardless of what the tag's key is). If you want to list only resources where Purpose is X, see the tag:key=value filter. tag-value - The value of a tag assigned to the resource. This filter is independent of the tag-key filter. - */ - Filters?: FilterList; - /** - * Checks whether you have the required permissions for the action, without actually making the request, and provides an error response. If you have the required permissions, the error response is DryRunOperation. Otherwise, it is UnauthorizedOperation. - */ - DryRun?: Boolean; - } - export interface DescribeCustomerGatewaysResult { - /** - * Information about one or more customer gateways. - */ - CustomerGateways?: CustomerGatewayList; - } - export interface DescribeDhcpOptionsRequest { - /** - * The IDs of one or more DHCP options sets. Default: Describes all your DHCP options sets. - */ - DhcpOptionsIds?: DhcpOptionsIdStringList; - /** - * One or more filters. dhcp-options-id - The ID of a set of DHCP options. key - The key for one of the options (for example, domain-name). value - The value for one of the options. tag:key=value - The key/value combination of a tag assigned to the resource. Specify the key of the tag in the filter name and the value of the tag in the filter value. For example, for the tag Purpose=X, specify tag:Purpose for the filter name and X for the filter value. tag-key - The key of a tag assigned to the resource. This filter is independent of the tag-value filter. For example, if you use both the filter "tag-key=Purpose" and the filter "tag-value=X", you get any resources assigned both the tag key Purpose (regardless of what the tag's value is), and the tag value X (regardless of what the tag's key is). If you want to list only resources where Purpose is X, see the tag:key=value filter. tag-value - The value of a tag assigned to the resource. This filter is independent of the tag-key filter. - */ - Filters?: FilterList; - /** - * Checks whether you have the required permissions for the action, without actually making the request, and provides an error response. If you have the required permissions, the error response is DryRunOperation. Otherwise, it is UnauthorizedOperation. - */ - DryRun?: Boolean; - } - export interface DescribeDhcpOptionsResult { - /** - * Information about one or more DHCP options sets. - */ - DhcpOptions?: DhcpOptionsList; - } - export interface DescribeEgressOnlyInternetGatewaysRequest { - /** - * Checks whether you have the required permissions for the action, without actually making the request, and provides an error response. If you have the required permissions, the error response is DryRunOperation. Otherwise, it is UnauthorizedOperation. - */ - DryRun?: Boolean; - /** - * One or more egress-only Internet gateway IDs. - */ - EgressOnlyInternetGatewayIds?: EgressOnlyInternetGatewayIdList; - /** - * The maximum number of results to return for the request in a single page. The remaining results can be seen by sending another request with the returned NextToken value. This value can be between 5 and 1000; if MaxResults is given a value larger than 1000, only 1000 results are returned. - */ - MaxResults?: Integer; - /** - * The token to retrieve the next page of results. - */ - NextToken?: String; - } - export interface DescribeEgressOnlyInternetGatewaysResult { - /** - * Information about the egress-only Internet gateways. - */ - EgressOnlyInternetGateways?: EgressOnlyInternetGatewayList; - /** - * The token to use to retrieve the next page of results. - */ - NextToken?: String; - } - export interface DescribeElasticGpusRequest { - /** - * One or more Elastic GPU IDs. - */ - ElasticGpuIds?: ElasticGpuIdSet; - /** - * Checks whether you have the required permissions for the action, without actually making the request, and provides an error response. If you have the required permissions, the error response is DryRunOperation. Otherwise, it is UnauthorizedOperation. - */ - DryRun?: Boolean; - /** - * One or more filters. availability-zone - The Availability Zone in which the Elastic GPU resides. elastic-gpu-health - The status of the Elastic GPU (OK | IMPAIRED). elastic-gpu-state - The state of the Elastic GPU (ATTACHED). elastic-gpu-type - The type of Elastic GPU; for example, eg1.medium. instance-id - The ID of the instance to which the Elastic GPU is associated. - */ - Filters?: FilterList; - /** - * The maximum number of results to return in a single call. To retrieve the remaining results, make another call with the returned NextToken value. This value can be between 5 and 1000. - */ - MaxResults?: Integer; - /** - * The token to request the next page of results. - */ - NextToken?: String; - } - export interface DescribeElasticGpusResult { - /** - * Information about the Elastic GPUs. - */ - ElasticGpuSet?: ElasticGpuSet; - /** - * The total number of items to return. If the total number of items available is more than the value specified in max-items then a Next-Token will be provided in the output that you can use to resume pagination. - */ - MaxResults?: Integer; - /** - * The token to use to retrieve the next page of results. This value is null when there are no more results to return. - */ - NextToken?: String; - } - export interface DescribeExportTasksRequest { - /** - * One or more export task IDs. - */ - ExportTaskIds?: ExportTaskIdStringList; - } - export interface DescribeExportTasksResult { - /** - * Information about the export tasks. - */ - ExportTasks?: ExportTaskList; - } - export interface DescribeFlowLogsRequest { - /** - * One or more filters. deliver-log-status - The status of the logs delivery (SUCCESS | FAILED). flow-log-id - The ID of the flow log. log-group-name - The name of the log group. resource-id - The ID of the VPC, subnet, or network interface. traffic-type - The type of traffic (ACCEPT | REJECT | ALL) - */ - Filter?: FilterList; - /** - * One or more flow log IDs. - */ - FlowLogIds?: ValueStringList; - /** - * The maximum number of results to return for the request in a single page. The remaining results can be seen by sending another request with the returned NextToken value. This value can be between 5 and 1000; if MaxResults is given a value larger than 1000, only 1000 results are returned. You cannot specify this parameter and the flow log IDs parameter in the same request. - */ - MaxResults?: Integer; - /** - * The token to retrieve the next page of results. - */ - NextToken?: String; - } - export interface DescribeFlowLogsResult { - /** - * Information about the flow logs. - */ - FlowLogs?: FlowLogSet; - /** - * The token to use to retrieve the next page of results. This value is null when there are no more results to return. - */ - NextToken?: String; - } - export interface DescribeFpgaImageAttributeRequest { - /** - * Checks whether you have the required permissions for the action, without actually making the request, and provides an error response. If you have the required permissions, the error response is DryRunOperation. Otherwise, it is UnauthorizedOperation. - */ - DryRun?: Boolean; - /** - * The ID of the AFI. - */ - FpgaImageId: String; - /** - * The AFI attribute. - */ - Attribute: FpgaImageAttributeName; - } - export interface DescribeFpgaImageAttributeResult { - /** - * Information about the attribute. - */ - FpgaImageAttribute?: FpgaImageAttribute; - } - export interface DescribeFpgaImagesRequest { - /** - * Checks whether you have the required permissions for the action, without actually making the request, and provides an error response. If you have the required permissions, the error response is DryRunOperation. Otherwise, it is UnauthorizedOperation. - */ - DryRun?: Boolean; - /** - * One or more AFI IDs. - */ - FpgaImageIds?: FpgaImageIdList; - /** - * Filters the AFI by owner. Specify an AWS account ID, self (owner is the sender of the request), or an AWS owner alias (valid values are amazon | aws-marketplace). - */ - Owners?: OwnerStringList; - /** - * One or more filters. create-time - The creation time of the AFI. fpga-image-id - The FPGA image identifier (AFI ID). fpga-image-global-id - The global FPGA image identifier (AGFI ID). name - The name of the AFI. owner-id - The AWS account ID of the AFI owner. product-code - The product code. shell-version - The version of the AWS Shell that was used to create the bitstream. state - The state of the AFI (pending | failed | available | unavailable). tag:key=value - The key/value combination of a tag assigned to the resource. Specify the key of the tag in the filter name and the value of the tag in the filter value. For example, for the tag Purpose=X, specify tag:Purpose for the filter name and X for the filter value. tag-key - The key of a tag assigned to the resource. This filter is independent of the tag-value filter. For example, if you use both the filter "tag-key=Purpose" and the filter "tag-value=X", you get any resources assigned both the tag key Purpose (regardless of what the tag's value is), and the tag value X (regardless of what the tag's key is). If you want to list only resources where Purpose is X, see the tag:key=value filter. tag-value - The value of a tag assigned to the resource. This filter is independent of the tag-key filter. update-time - The time of the most recent update. - */ - Filters?: FilterList; - /** - * The token to retrieve the next page of results. - */ - NextToken?: NextToken; - /** - * The maximum number of results to return in a single call. - */ - MaxResults?: MaxResults; - } - export interface DescribeFpgaImagesResult { - /** - * Information about one or more FPGA images. - */ - FpgaImages?: FpgaImageList; - /** - * The token to use to retrieve the next page of results. This value is null when there are no more results to return. - */ - NextToken?: NextToken; - } - export interface DescribeHostReservationOfferingsRequest { - /** - * One or more filters. instance-family - The instance family of the offering (e.g., m4). payment-option - The payment option (NoUpfront | PartialUpfront | AllUpfront). - */ - Filter?: FilterList; - /** - * This is the maximum duration of the reservation you'd like to purchase, specified in seconds. Reservations are available in one-year and three-year terms. The number of seconds specified must be the number of seconds in a year (365x24x60x60) times one of the supported durations (1 or 3). For example, specify 94608000 for three years. - */ - MaxDuration?: Integer; - /** - * The maximum number of results to return for the request in a single page. The remaining results can be seen by sending another request with the returned nextToken value. This value can be between 5 and 500; if maxResults is given a larger value than 500, you will receive an error. - */ - MaxResults?: Integer; - /** - * This is the minimum duration of the reservation you'd like to purchase, specified in seconds. Reservations are available in one-year and three-year terms. The number of seconds specified must be the number of seconds in a year (365x24x60x60) times one of the supported durations (1 or 3). For example, specify 31536000 for one year. - */ - MinDuration?: Integer; - /** - * The token to use to retrieve the next page of results. - */ - NextToken?: String; - /** - * The ID of the reservation offering. - */ - OfferingId?: String; - } - export interface DescribeHostReservationOfferingsResult { - /** - * The token to use to retrieve the next page of results. This value is null when there are no more results to return. - */ - NextToken?: String; - /** - * Information about the offerings. - */ - OfferingSet?: HostOfferingSet; - } - export interface DescribeHostReservationsRequest { - /** - * One or more filters. instance-family - The instance family (e.g., m4). payment-option - The payment option (NoUpfront | PartialUpfront | AllUpfront). state - The state of the reservation (payment-pending | payment-failed | active | retired). - */ - Filter?: FilterList; - /** - * One or more host reservation IDs. - */ - HostReservationIdSet?: HostReservationIdSet; - /** - * The maximum number of results to return for the request in a single page. The remaining results can be seen by sending another request with the returned nextToken value. This value can be between 5 and 500; if maxResults is given a larger value than 500, you will receive an error. - */ - MaxResults?: Integer; - /** - * The token to use to retrieve the next page of results. - */ - NextToken?: String; - } - export interface DescribeHostReservationsResult { - /** - * Details about the reservation's configuration. - */ - HostReservationSet?: HostReservationSet; - /** - * The token to use to retrieve the next page of results. This value is null when there are no more results to return. - */ - NextToken?: String; - } - export interface DescribeHostsRequest { - /** - * One or more filters. instance-type - The instance type size that the Dedicated Host is configured to support. auto-placement - Whether auto-placement is enabled or disabled (on | off). host-reservation-id - The ID of the reservation assigned to this host. client-token - The idempotency token you provided when you launched the instance state- The allocation state of the Dedicated Host (available | under-assessment | permanent-failure | released | released-permanent-failure). availability-zone - The Availability Zone of the host. - */ - Filter?: FilterList; - /** - * The IDs of the Dedicated Hosts. The IDs are used for targeted instance launches. - */ - HostIds?: RequestHostIdList; - /** - * The maximum number of results to return for the request in a single page. The remaining results can be seen by sending another request with the returned nextToken value. This value can be between 5 and 500; if maxResults is given a larger value than 500, you will receive an error. You cannot specify this parameter and the host IDs parameter in the same request. - */ - MaxResults?: Integer; - /** - * The token to retrieve the next page of results. - */ - NextToken?: String; - } - export interface DescribeHostsResult { - /** - * Information about the Dedicated Hosts. - */ - Hosts?: HostList; - /** - * The token to use to retrieve the next page of results. This value is null when there are no more results to return. - */ - NextToken?: String; - } - export interface DescribeIamInstanceProfileAssociationsRequest { - /** - * One or more IAM instance profile associations. - */ - AssociationIds?: AssociationIdList; - /** - * One or more filters. instance-id - The ID of the instance. state - The state of the association (associating | associated | disassociating | disassociated). - */ - Filters?: FilterList; - /** - * The maximum number of results to return in a single call. To retrieve the remaining results, make another call with the returned NextToken value. - */ - MaxResults?: MaxResults; - /** - * The token to request the next page of results. - */ - NextToken?: NextToken; - } - export interface DescribeIamInstanceProfileAssociationsResult { - /** - * Information about one or more IAM instance profile associations. - */ - IamInstanceProfileAssociations?: IamInstanceProfileAssociationSet; - /** - * The token to use to retrieve the next page of results. This value is null when there are no more results to return. - */ - NextToken?: NextToken; - } - export interface DescribeIdFormatRequest { - /** - * The type of resource: instance | reservation | snapshot | volume - */ - Resource?: String; - } - export interface DescribeIdFormatResult { - /** - * Information about the ID format for the resource. - */ - Statuses?: IdFormatList; - } - export interface DescribeIdentityIdFormatRequest { - /** - * The ARN of the principal, which can be an IAM role, IAM user, or the root user. - */ - PrincipalArn: String; - /** - * The type of resource: instance | reservation | snapshot | volume - */ - Resource?: String; - } - export interface DescribeIdentityIdFormatResult { - /** - * Information about the ID format for the resources. - */ - Statuses?: IdFormatList; - } - export interface DescribeImageAttributeRequest { - /** - * The AMI attribute. Note: Depending on your account privileges, the blockDeviceMapping attribute may return a Client.AuthFailure error. If this happens, use DescribeImages to get information about the block device mapping for the AMI. - */ - Attribute: ImageAttributeName; - /** - * The ID of the AMI. - */ - ImageId: String; - /** - * Checks whether you have the required permissions for the action, without actually making the request, and provides an error response. If you have the required permissions, the error response is DryRunOperation. Otherwise, it is UnauthorizedOperation. - */ - DryRun?: Boolean; - } - export interface DescribeImagesRequest { - /** - * Scopes the images by users with explicit launch permissions. Specify an AWS account ID, self (the sender of the request), or all (public AMIs). - */ - ExecutableUsers?: ExecutableByStringList; - /** - * One or more filters. architecture - The image architecture (i386 | x86_64). block-device-mapping.delete-on-termination - A Boolean value that indicates whether the Amazon EBS volume is deleted on instance termination. block-device-mapping.device-name - The device name for the EBS volume (for example, /dev/sdh). block-device-mapping.snapshot-id - The ID of the snapshot used for the EBS volume. block-device-mapping.volume-size - The volume size of the EBS volume, in GiB. block-device-mapping.volume-type - The volume type of the EBS volume (gp2 | io1 | st1 | sc1 | standard). description - The description of the image (provided during image creation). ena-support - A Boolean that indicates whether enhanced networking with ENA is enabled. hypervisor - The hypervisor type (ovm | xen). image-id - The ID of the image. image-type - The image type (machine | kernel | ramdisk). is-public - A Boolean that indicates whether the image is public. kernel-id - The kernel ID. manifest-location - The location of the image manifest. name - The name of the AMI (provided during image creation). owner-alias - String value from an Amazon-maintained list (amazon | aws-marketplace | microsoft) of snapshot owners. Not to be confused with the user-configured AWS account alias, which is set from the IAM console. owner-id - The AWS account ID of the image owner. platform - The platform. To only list Windows-based AMIs, use windows. product-code - The product code. product-code.type - The type of the product code (devpay | marketplace). ramdisk-id - The RAM disk ID. root-device-name - The name of the root device volume (for example, /dev/sda1). root-device-type - The type of the root device volume (ebs | instance-store). state - The state of the image (available | pending | failed). state-reason-code - The reason code for the state change. state-reason-message - The message for the state change. tag:key=value - The key/value combination of a tag assigned to the resource. Specify the key of the tag in the filter name and the value of the tag in the filter value. For example, for the tag Purpose=X, specify tag:Purpose for the filter name and X for the filter value. tag-key - The key of a tag assigned to the resource. This filter is independent of the tag-value filter. For example, if you use both the filter "tag-key=Purpose" and the filter "tag-value=X", you get any resources assigned both the tag key Purpose (regardless of what the tag's value is), and the tag value X (regardless of what the tag's key is). If you want to list only resources where Purpose is X, see the tag:key=value filter. tag-value - The value of a tag assigned to the resource. This filter is independent of the tag-key filter. virtualization-type - The virtualization type (paravirtual | hvm). - */ - Filters?: FilterList; - /** - * One or more image IDs. Default: Describes all images available to you. - */ - ImageIds?: ImageIdStringList; - /** - * Filters the images by the owner. Specify an AWS account ID, self (owner is the sender of the request), or an AWS owner alias (valid values are amazon | aws-marketplace | microsoft). Omitting this option returns all images for which you have launch permissions, regardless of ownership. - */ - Owners?: OwnerStringList; - /** - * Checks whether you have the required permissions for the action, without actually making the request, and provides an error response. If you have the required permissions, the error response is DryRunOperation. Otherwise, it is UnauthorizedOperation. - */ - DryRun?: Boolean; - } - export interface DescribeImagesResult { - /** - * Information about one or more images. - */ - Images?: ImageList; - } - export interface DescribeImportImageTasksRequest { - /** - * Checks whether you have the required permissions for the action, without actually making the request, and provides an error response. If you have the required permissions, the error response is DryRunOperation. Otherwise, it is UnauthorizedOperation. - */ - DryRun?: Boolean; - /** - * Filter tasks using the task-state filter and one of the following values: active, completed, deleting, deleted. - */ - Filters?: FilterList; - /** - * A list of import image task IDs. - */ - ImportTaskIds?: ImportTaskIdList; - /** - * The maximum number of results to return in a single call. To retrieve the remaining results, make another call with the returned NextToken value. - */ - MaxResults?: Integer; - /** - * A token that indicates the next page of results. - */ - NextToken?: String; - } - export interface DescribeImportImageTasksResult { - /** - * A list of zero or more import image tasks that are currently active or were completed or canceled in the previous 7 days. - */ - ImportImageTasks?: ImportImageTaskList; - /** - * The token to use to get the next page of results. This value is null when there are no more results to return. - */ - NextToken?: String; - } - export interface DescribeImportSnapshotTasksRequest { - /** - * Checks whether you have the required permissions for the action, without actually making the request, and provides an error response. If you have the required permissions, the error response is DryRunOperation. Otherwise, it is UnauthorizedOperation. - */ - DryRun?: Boolean; - /** - * One or more filters. - */ - Filters?: FilterList; - /** - * A list of import snapshot task IDs. - */ - ImportTaskIds?: ImportTaskIdList; - /** - * The maximum number of results to return in a single call. To retrieve the remaining results, make another call with the returned NextToken value. - */ - MaxResults?: Integer; - /** - * A token that indicates the next page of results. - */ - NextToken?: String; - } - export interface DescribeImportSnapshotTasksResult { - /** - * A list of zero or more import snapshot tasks that are currently active or were completed or canceled in the previous 7 days. - */ - ImportSnapshotTasks?: ImportSnapshotTaskList; - /** - * The token to use to get the next page of results. This value is null when there are no more results to return. - */ - NextToken?: String; - } - export interface DescribeInstanceAttributeRequest { - /** - * The instance attribute. Note: The enaSupport attribute is not supported at this time. - */ - Attribute: InstanceAttributeName; - /** - * Checks whether you have the required permissions for the action, without actually making the request, and provides an error response. If you have the required permissions, the error response is DryRunOperation. Otherwise, it is UnauthorizedOperation. - */ - DryRun?: Boolean; - /** - * The ID of the instance. - */ - InstanceId: String; - } - export interface DescribeInstanceStatusRequest { - /** - * One or more filters. availability-zone - The Availability Zone of the instance. event.code - The code for the scheduled event (instance-reboot | system-reboot | system-maintenance | instance-retirement | instance-stop). event.description - A description of the event. event.not-after - The latest end time for the scheduled event (for example, 2014-09-15T17:15:20.000Z). event.not-before - The earliest start time for the scheduled event (for example, 2014-09-15T17:15:20.000Z). instance-state-code - The code for the instance state, as a 16-bit unsigned integer. The high byte is an opaque internal value and should be ignored. The low byte is set based on the state represented. The valid values are 0 (pending), 16 (running), 32 (shutting-down), 48 (terminated), 64 (stopping), and 80 (stopped). instance-state-name - The state of the instance (pending | running | shutting-down | terminated | stopping | stopped). instance-status.reachability - Filters on instance status where the name is reachability (passed | failed | initializing | insufficient-data). instance-status.status - The status of the instance (ok | impaired | initializing | insufficient-data | not-applicable). system-status.reachability - Filters on system status where the name is reachability (passed | failed | initializing | insufficient-data). system-status.status - The system status of the instance (ok | impaired | initializing | insufficient-data | not-applicable). - */ - Filters?: FilterList; - /** - * One or more instance IDs. Default: Describes all your instances. Constraints: Maximum 100 explicitly specified instance IDs. - */ - InstanceIds?: InstanceIdStringList; - /** - * The maximum number of results to return in a single call. To retrieve the remaining results, make another call with the returned NextToken value. This value can be between 5 and 1000. You cannot specify this parameter and the instance IDs parameter in the same call. - */ - MaxResults?: Integer; - /** - * The token to retrieve the next page of results. - */ - NextToken?: String; - /** - * Checks whether you have the required permissions for the action, without actually making the request, and provides an error response. If you have the required permissions, the error response is DryRunOperation. Otherwise, it is UnauthorizedOperation. - */ - DryRun?: Boolean; - /** - * When true, includes the health status for all instances. When false, includes the health status for running instances only. Default: false - */ - IncludeAllInstances?: Boolean; - } - export interface DescribeInstanceStatusResult { - /** - * One or more instance status descriptions. - */ - InstanceStatuses?: InstanceStatusList; - /** - * The token to use to retrieve the next page of results. This value is null when there are no more results to return. - */ - NextToken?: String; - } - export interface DescribeInstancesRequest { - /** - * One or more filters. affinity - The affinity setting for an instance running on a Dedicated Host (default | host). architecture - The instance architecture (i386 | x86_64). availability-zone - The Availability Zone of the instance. block-device-mapping.attach-time - The attach time for an EBS volume mapped to the instance, for example, 2010-09-15T17:15:20.000Z. block-device-mapping.delete-on-termination - A Boolean that indicates whether the EBS volume is deleted on instance termination. block-device-mapping.device-name - The device name for the EBS volume (for example, /dev/sdh or xvdh). block-device-mapping.status - The status for the EBS volume (attaching | attached | detaching | detached). block-device-mapping.volume-id - The volume ID of the EBS volume. client-token - The idempotency token you provided when you launched the instance. dns-name - The public DNS name of the instance. group-id - The ID of the security group for the instance. EC2-Classic only. group-name - The name of the security group for the instance. EC2-Classic only. host-id - The ID of the Dedicated Host on which the instance is running, if applicable. hypervisor - The hypervisor type of the instance (ovm | xen). iam-instance-profile.arn - The instance profile associated with the instance. Specified as an ARN. image-id - The ID of the image used to launch the instance. instance-id - The ID of the instance. instance-lifecycle - Indicates whether this is a Spot Instance or a Scheduled Instance (spot | scheduled). instance-state-code - The state of the instance, as a 16-bit unsigned integer. The high byte is an opaque internal value and should be ignored. The low byte is set based on the state represented. The valid values are: 0 (pending), 16 (running), 32 (shutting-down), 48 (terminated), 64 (stopping), and 80 (stopped). instance-state-name - The state of the instance (pending | running | shutting-down | terminated | stopping | stopped). instance-type - The type of instance (for example, t2.micro). instance.group-id - The ID of the security group for the instance. instance.group-name - The name of the security group for the instance. ip-address - The public IPv4 address of the instance. kernel-id - The kernel ID. key-name - The name of the key pair used when the instance was launched. launch-index - When launching multiple instances, this is the index for the instance in the launch group (for example, 0, 1, 2, and so on). launch-time - The time when the instance was launched. monitoring-state - Indicates whether detailed monitoring is enabled (disabled | enabled). network-interface.addresses.private-ip-address - The private IPv4 address associated with the network interface. network-interface.addresses.primary - Specifies whether the IPv4 address of the network interface is the primary private IPv4 address. network-interface.addresses.association.public-ip - The ID of the association of an Elastic IP address (IPv4) with a network interface. network-interface.addresses.association.ip-owner-id - The owner ID of the private IPv4 address associated with the network interface. network-interface.association.public-ip - The address of the Elastic IP address (IPv4) bound to the network interface. network-interface.association.ip-owner-id - The owner of the Elastic IP address (IPv4) associated with the network interface. network-interface.association.allocation-id - The allocation ID returned when you allocated the Elastic IP address (IPv4) for your network interface. network-interface.association.association-id - The association ID returned when the network interface was associated with an IPv4 address. network-interface.attachment.attachment-id - The ID of the interface attachment. network-interface.attachment.instance-id - The ID of the instance to which the network interface is attached. network-interface.attachment.instance-owner-id - The owner ID of the instance to which the network interface is attached. network-interface.attachment.device-index - The device index to which the network interface is attached. network-interface.attachment.status - The status of the attachment (attaching | attached | detaching | detached). network-interface.attachment.attach-time - The time that the network interface was attached to an instance. network-interface.attachment.delete-on-termination - Specifies whether the attachment is deleted when an instance is terminated. network-interface.availability-zone - The Availability Zone for the network interface. network-interface.description - The description of the network interface. network-interface.group-id - The ID of a security group associated with the network interface. network-interface.group-name - The name of a security group associated with the network interface. network-interface.ipv6-addresses.ipv6-address - The IPv6 address associated with the network interface. network-interface.mac-address - The MAC address of the network interface. network-interface.network-interface-id - The ID of the network interface. network-interface.owner-id - The ID of the owner of the network interface. network-interface.private-dns-name - The private DNS name of the network interface. network-interface.requester-id - The requester ID for the network interface. network-interface.requester-managed - Indicates whether the network interface is being managed by AWS. network-interface.status - The status of the network interface (available) | in-use). network-interface.source-dest-check - Whether the network interface performs source/destination checking. A value of true means that checking is enabled, and false means that checking is disabled. The value must be false for the network interface to perform network address translation (NAT) in your VPC. network-interface.subnet-id - The ID of the subnet for the network interface. network-interface.vpc-id - The ID of the VPC for the network interface. owner-id - The AWS account ID of the instance owner. placement-group-name - The name of the placement group for the instance. platform - The platform. Use windows if you have Windows instances; otherwise, leave blank. private-dns-name - The private IPv4 DNS name of the instance. private-ip-address - The private IPv4 address of the instance. product-code - The product code associated with the AMI used to launch the instance. product-code.type - The type of product code (devpay | marketplace). ramdisk-id - The RAM disk ID. reason - The reason for the current state of the instance (for example, shows "User Initiated [date]" when you stop or terminate the instance). Similar to the state-reason-code filter. requester-id - The ID of the entity that launched the instance on your behalf (for example, AWS Management Console, Auto Scaling, and so on). reservation-id - The ID of the instance's reservation. A reservation ID is created any time you launch an instance. A reservation ID has a one-to-one relationship with an instance launch request, but can be associated with more than one instance if you launch multiple instances using the same launch request. For example, if you launch one instance, you get one reservation ID. If you launch ten instances using the same launch request, you also get one reservation ID. root-device-name - The name of the root device for the instance (for example, /dev/sda1 or /dev/xvda). root-device-type - The type of root device that the instance uses (ebs | instance-store). source-dest-check - Indicates whether the instance performs source/destination checking. A value of true means that checking is enabled, and false means that checking is disabled. The value must be false for the instance to perform network address translation (NAT) in your VPC. spot-instance-request-id - The ID of the Spot Instance request. state-reason-code - The reason code for the state change. state-reason-message - A message that describes the state change. subnet-id - The ID of the subnet for the instance. tag:key=value - The key/value combination of a tag assigned to the resource. Specify the key of the tag in the filter name and the value of the tag in the filter value. For example, for the tag Purpose=X, specify tag:Purpose for the filter name and X for the filter value. tag-key - The key of a tag assigned to the resource. This filter is independent of the tag-value filter. For example, if you use both the filter "tag-key=Purpose" and the filter "tag-value=X", you get any resources assigned both the tag key Purpose (regardless of what the tag's value is), and the tag value X (regardless of the tag's key). If you want to list only resources where Purpose is X, see the tag:key=value filter. tag-value - The value of a tag assigned to the resource. This filter is independent of the tag-key filter. tenancy - The tenancy of an instance (dedicated | default | host). virtualization-type - The virtualization type of the instance (paravirtual | hvm). vpc-id - The ID of the VPC that the instance is running in. - */ - Filters?: FilterList; - /** - * One or more instance IDs. Default: Describes all your instances. - */ - InstanceIds?: InstanceIdStringList; - /** - * Checks whether you have the required permissions for the action, without actually making the request, and provides an error response. If you have the required permissions, the error response is DryRunOperation. Otherwise, it is UnauthorizedOperation. - */ - DryRun?: Boolean; - /** - * The maximum number of results to return in a single call. To retrieve the remaining results, make another call with the returned NextToken value. This value can be between 5 and 1000. You cannot specify this parameter and the instance IDs parameter or tag filters in the same call. - */ - MaxResults?: Integer; - /** - * The token to request the next page of results. - */ - NextToken?: String; - } - export interface DescribeInstancesResult { - /** - * Zero or more reservations. - */ - Reservations?: ReservationList; - /** - * The token to use to retrieve the next page of results. This value is null when there are no more results to return. - */ - NextToken?: String; - } - export interface DescribeInternetGatewaysRequest { - /** - * One or more filters. attachment.state - The current state of the attachment between the gateway and the VPC (available). Present only if a VPC is attached. attachment.vpc-id - The ID of an attached VPC. internet-gateway-id - The ID of the Internet gateway. tag:key=value - The key/value combination of a tag assigned to the resource. Specify the key of the tag in the filter name and the value of the tag in the filter value. For example, for the tag Purpose=X, specify tag:Purpose for the filter name and X for the filter value. tag-key - The key of a tag assigned to the resource. This filter is independent of the tag-value filter. For example, if you use both the filter "tag-key=Purpose" and the filter "tag-value=X", you get any resources assigned both the tag key Purpose (regardless of what the tag's value is), and the tag value X (regardless of what the tag's key is). If you want to list only resources where Purpose is X, see the tag:key=value filter. tag-value - The value of a tag assigned to the resource. This filter is independent of the tag-key filter. - */ - Filters?: FilterList; - /** - * Checks whether you have the required permissions for the action, without actually making the request, and provides an error response. If you have the required permissions, the error response is DryRunOperation. Otherwise, it is UnauthorizedOperation. - */ - DryRun?: Boolean; - /** - * One or more Internet gateway IDs. Default: Describes all your Internet gateways. - */ - InternetGatewayIds?: ValueStringList; - } - export interface DescribeInternetGatewaysResult { - /** - * Information about one or more Internet gateways. - */ - InternetGateways?: InternetGatewayList; - } - export interface DescribeKeyPairsRequest { - /** - * One or more filters. fingerprint - The fingerprint of the key pair. key-name - The name of the key pair. - */ - Filters?: FilterList; - /** - * One or more key pair names. Default: Describes all your key pairs. - */ - KeyNames?: KeyNameStringList; - /** - * Checks whether you have the required permissions for the action, without actually making the request, and provides an error response. If you have the required permissions, the error response is DryRunOperation. Otherwise, it is UnauthorizedOperation. - */ - DryRun?: Boolean; - } - export interface DescribeKeyPairsResult { - /** - * Information about one or more key pairs. - */ - KeyPairs?: KeyPairList; - } - export interface DescribeMovingAddressesRequest { - /** - * One or more filters. moving-status - The status of the Elastic IP address (MovingToVpc | RestoringToClassic). - */ - Filters?: FilterList; - /** - * Checks whether you have the required permissions for the action, without actually making the request, and provides an error response. If you have the required permissions, the error response is DryRunOperation. Otherwise, it is UnauthorizedOperation. - */ - DryRun?: Boolean; - /** - * The maximum number of results to return for the request in a single page. The remaining results of the initial request can be seen by sending another request with the returned NextToken value. This value can be between 5 and 1000; if MaxResults is given a value outside of this range, an error is returned. Default: If no value is provided, the default is 1000. - */ - MaxResults?: Integer; - /** - * The token to use to retrieve the next page of results. - */ - NextToken?: String; - /** - * One or more Elastic IP addresses. - */ - PublicIps?: ValueStringList; - } - export interface DescribeMovingAddressesResult { - /** - * The status for each Elastic IP address. - */ - MovingAddressStatuses?: MovingAddressStatusSet; - /** - * The token to use to retrieve the next page of results. This value is null when there are no more results to return. - */ - NextToken?: String; - } - export interface DescribeNatGatewaysRequest { - /** - * One or more filters. nat-gateway-id - The ID of the NAT gateway. state - The state of the NAT gateway (pending | failed | available | deleting | deleted). subnet-id - The ID of the subnet in which the NAT gateway resides. tag:key=value - The key/value combination of a tag assigned to the resource. Specify the key of the tag in the filter name and the value of the tag in the filter value. For example, for the tag Purpose=X, specify tag:Purpose for the filter name and X for the filter value. tag-key - The key of a tag assigned to the resource. This filter is independent of the tag-value filter. For example, if you use both the filter "tag-key=Purpose" and the filter "tag-value=X", you get any resources assigned both the tag key Purpose (regardless of what the tag's value is), and the tag value X (regardless of what the tag's key is). If you want to list only resources where Purpose is X, see the tag:key=value filter. tag-value - The value of a tag assigned to the resource. This filter is independent of the tag-key filter. vpc-id - The ID of the VPC in which the NAT gateway resides. - */ - Filter?: FilterList; - /** - * The maximum number of items to return for this request. The request returns a token that you can specify in a subsequent call to get the next set of results. Constraint: If the value specified is greater than 1000, we return only 1000 items. - */ - MaxResults?: Integer; - /** - * One or more NAT gateway IDs. - */ - NatGatewayIds?: ValueStringList; - /** - * The token to retrieve the next page of results. - */ - NextToken?: String; - } - export interface DescribeNatGatewaysResult { - /** - * Information about the NAT gateways. - */ - NatGateways?: NatGatewayList; - /** - * The token to use to retrieve the next page of results. This value is null when there are no more results to return. - */ - NextToken?: String; - } - export interface DescribeNetworkAclsRequest { - /** - * One or more filters. association.association-id - The ID of an association ID for the ACL. association.network-acl-id - The ID of the network ACL involved in the association. association.subnet-id - The ID of the subnet involved in the association. default - Indicates whether the ACL is the default network ACL for the VPC. entry.cidr - The IPv4 CIDR range specified in the entry. entry.egress - Indicates whether the entry applies to egress traffic. entry.icmp.code - The ICMP code specified in the entry, if any. entry.icmp.type - The ICMP type specified in the entry, if any. entry.ipv6-cidr - The IPv6 CIDR range specified in the entry. entry.port-range.from - The start of the port range specified in the entry. entry.port-range.to - The end of the port range specified in the entry. entry.protocol - The protocol specified in the entry (tcp | udp | icmp or a protocol number). entry.rule-action - Allows or denies the matching traffic (allow | deny). entry.rule-number - The number of an entry (in other words, rule) in the ACL's set of entries. network-acl-id - The ID of the network ACL. tag:key=value - The key/value combination of a tag assigned to the resource. Specify the key of the tag in the filter name and the value of the tag in the filter value. For example, for the tag Purpose=X, specify tag:Purpose for the filter name and X for the filter value. tag-key - The key of a tag assigned to the resource. This filter is independent of the tag-value filter. For example, if you use both the filter "tag-key=Purpose" and the filter "tag-value=X", you get any resources assigned both the tag key Purpose (regardless of what the tag's value is), and the tag value X (regardless of what the tag's key is). If you want to list only resources where Purpose is X, see the tag:key=value filter. tag-value - The value of a tag assigned to the resource. This filter is independent of the tag-key filter. vpc-id - The ID of the VPC for the network ACL. - */ - Filters?: FilterList; - /** - * Checks whether you have the required permissions for the action, without actually making the request, and provides an error response. If you have the required permissions, the error response is DryRunOperation. Otherwise, it is UnauthorizedOperation. - */ - DryRun?: Boolean; - /** - * One or more network ACL IDs. Default: Describes all your network ACLs. - */ - NetworkAclIds?: ValueStringList; - } - export interface DescribeNetworkAclsResult { - /** - * Information about one or more network ACLs. - */ - NetworkAcls?: NetworkAclList; - } - export interface DescribeNetworkInterfaceAttributeRequest { - /** - * The attribute of the network interface. This parameter is required. - */ - Attribute?: NetworkInterfaceAttribute; - /** - * Checks whether you have the required permissions for the action, without actually making the request, and provides an error response. If you have the required permissions, the error response is DryRunOperation. Otherwise, it is UnauthorizedOperation. - */ - DryRun?: Boolean; - /** - * The ID of the network interface. - */ - NetworkInterfaceId: String; - } - export interface DescribeNetworkInterfaceAttributeResult { - /** - * The attachment (if any) of the network interface. - */ - Attachment?: NetworkInterfaceAttachment; - /** - * The description of the network interface. - */ - Description?: AttributeValue; - /** - * The security groups associated with the network interface. - */ - Groups?: GroupIdentifierList; - /** - * The ID of the network interface. - */ - NetworkInterfaceId?: String; - /** - * Indicates whether source/destination checking is enabled. - */ - SourceDestCheck?: AttributeBooleanValue; - } - export interface DescribeNetworkInterfacePermissionsRequest { - /** - * One or more network interface permission IDs. - */ - NetworkInterfacePermissionIds?: NetworkInterfacePermissionIdList; - /** - * One or more filters. network-interface-permission.network-interface-permission-id - The ID of the permission. network-interface-permission.network-interface-id - The ID of the network interface. network-interface-permission.aws-account-id - The AWS account ID. network-interface-permission.aws-service - The AWS service. network-interface-permission.permission - The type of permission (INSTANCE-ATTACH | EIP-ASSOCIATE). - */ - Filters?: FilterList; - /** - * The token to request the next page of results. - */ - NextToken?: String; - /** - * The maximum number of results to return in a single call. To retrieve the remaining results, make another call with the returned NextToken value. If this parameter is not specified, up to 50 results are returned by default. - */ - MaxResults?: Integer; - } - export interface DescribeNetworkInterfacePermissionsResult { - /** - * The network interface permissions. - */ - NetworkInterfacePermissions?: NetworkInterfacePermissionList; - /** - * The token to use to retrieve the next page of results. - */ - NextToken?: String; - } - export interface DescribeNetworkInterfacesRequest { - /** - * One or more filters. addresses.private-ip-address - The private IPv4 addresses associated with the network interface. addresses.primary - Whether the private IPv4 address is the primary IP address associated with the network interface. addresses.association.public-ip - The association ID returned when the network interface was associated with the Elastic IP address (IPv4). addresses.association.owner-id - The owner ID of the addresses associated with the network interface. association.association-id - The association ID returned when the network interface was associated with an IPv4 address. association.allocation-id - The allocation ID returned when you allocated the Elastic IP address (IPv4) for your network interface. association.ip-owner-id - The owner of the Elastic IP address (IPv4) associated with the network interface. association.public-ip - The address of the Elastic IP address (IPv4) bound to the network interface. association.public-dns-name - The public DNS name for the network interface (IPv4). attachment.attachment-id - The ID of the interface attachment. attachment.attach.time - The time that the network interface was attached to an instance. attachment.delete-on-termination - Indicates whether the attachment is deleted when an instance is terminated. attachment.device-index - The device index to which the network interface is attached. attachment.instance-id - The ID of the instance to which the network interface is attached. attachment.instance-owner-id - The owner ID of the instance to which the network interface is attached. attachment.nat-gateway-id - The ID of the NAT gateway to which the network interface is attached. attachment.status - The status of the attachment (attaching | attached | detaching | detached). availability-zone - The Availability Zone of the network interface. description - The description of the network interface. group-id - The ID of a security group associated with the network interface. group-name - The name of a security group associated with the network interface. ipv6-addresses.ipv6-address - An IPv6 address associated with the network interface. mac-address - The MAC address of the network interface. network-interface-id - The ID of the network interface. owner-id - The AWS account ID of the network interface owner. private-ip-address - The private IPv4 address or addresses of the network interface. private-dns-name - The private DNS name of the network interface (IPv4). requester-id - The ID of the entity that launched the instance on your behalf (for example, AWS Management Console, Auto Scaling, and so on). requester-managed - Indicates whether the network interface is being managed by an AWS service (for example, AWS Management Console, Auto Scaling, and so on). source-desk-check - Indicates whether the network interface performs source/destination checking. A value of true means checking is enabled, and false means checking is disabled. The value must be false for the network interface to perform network address translation (NAT) in your VPC. status - The status of the network interface. If the network interface is not attached to an instance, the status is available; if a network interface is attached to an instance the status is in-use. subnet-id - The ID of the subnet for the network interface. tag:key=value - The key/value combination of a tag assigned to the resource. Specify the key of the tag in the filter name and the value of the tag in the filter value. For example, for the tag Purpose=X, specify tag:Purpose for the filter name and X for the filter value. tag-key - The key of a tag assigned to the resource. This filter is independent of the tag-value filter. For example, if you use both the filter "tag-key=Purpose" and the filter "tag-value=X", you get any resources assigned both the tag key Purpose (regardless of what the tag's value is), and the tag value X (regardless of what the tag's key is). If you want to list only resources where Purpose is X, see the tag:key=value filter. tag-value - The value of a tag assigned to the resource. This filter is independent of the tag-key filter. vpc-id - The ID of the VPC for the network interface. - */ - Filters?: FilterList; - /** - * Checks whether you have the required permissions for the action, without actually making the request, and provides an error response. If you have the required permissions, the error response is DryRunOperation. Otherwise, it is UnauthorizedOperation. - */ - DryRun?: Boolean; - /** - * One or more network interface IDs. Default: Describes all your network interfaces. - */ - NetworkInterfaceIds?: NetworkInterfaceIdList; - } - export interface DescribeNetworkInterfacesResult { - /** - * Information about one or more network interfaces. - */ - NetworkInterfaces?: NetworkInterfaceList; - } - export interface DescribePlacementGroupsRequest { - /** - * One or more filters. group-name - The name of the placement group. state - The state of the placement group (pending | available | deleting | deleted). strategy - The strategy of the placement group (cluster). - */ - Filters?: FilterList; - /** - * Checks whether you have the required permissions for the action, without actually making the request, and provides an error response. If you have the required permissions, the error response is DryRunOperation. Otherwise, it is UnauthorizedOperation. - */ - DryRun?: Boolean; - /** - * One or more placement group names. Default: Describes all your placement groups, or only those otherwise specified. - */ - GroupNames?: PlacementGroupStringList; - } - export interface DescribePlacementGroupsResult { - /** - * One or more placement groups. - */ - PlacementGroups?: PlacementGroupList; - } - export interface DescribePrefixListsRequest { - /** - * Checks whether you have the required permissions for the action, without actually making the request, and provides an error response. If you have the required permissions, the error response is DryRunOperation. Otherwise, it is UnauthorizedOperation. - */ - DryRun?: Boolean; - /** - * One or more filters. prefix-list-id: The ID of a prefix list. prefix-list-name: The name of a prefix list. - */ - Filters?: FilterList; - /** - * The maximum number of items to return for this request. The request returns a token that you can specify in a subsequent call to get the next set of results. Constraint: If the value specified is greater than 1000, we return only 1000 items. - */ - MaxResults?: Integer; - /** - * The token for the next set of items to return. (You received this token from a prior call.) - */ - NextToken?: String; - /** - * One or more prefix list IDs. - */ - PrefixListIds?: ValueStringList; - } - export interface DescribePrefixListsResult { - /** - * The token to use when requesting the next set of items. If there are no additional items to return, the string is empty. - */ - NextToken?: String; - /** - * All available prefix lists. - */ - PrefixLists?: PrefixListSet; - } - export interface DescribeRegionsRequest { - /** - * One or more filters. endpoint - The endpoint of the region (for example, ec2.us-east-1.amazonaws.com). region-name - The name of the region (for example, us-east-1). - */ - Filters?: FilterList; - /** - * The names of one or more regions. - */ - RegionNames?: RegionNameStringList; - /** - * Checks whether you have the required permissions for the action, without actually making the request, and provides an error response. If you have the required permissions, the error response is DryRunOperation. Otherwise, it is UnauthorizedOperation. - */ - DryRun?: Boolean; - } - export interface DescribeRegionsResult { - /** - * Information about one or more regions. - */ - Regions?: RegionList; - } - export interface DescribeReservedInstancesListingsRequest { - /** - * One or more filters. reserved-instances-id - The ID of the Reserved Instances. reserved-instances-listing-id - The ID of the Reserved Instances listing. status - The status of the Reserved Instance listing (pending | active | cancelled | closed). status-message - The reason for the status. - */ - Filters?: FilterList; - /** - * One or more Reserved Instance IDs. - */ - ReservedInstancesId?: String; - /** - * One or more Reserved Instance listing IDs. - */ - ReservedInstancesListingId?: String; - } - export interface DescribeReservedInstancesListingsResult { - /** - * Information about the Reserved Instance listing. - */ - ReservedInstancesListings?: ReservedInstancesListingList; - } - export interface DescribeReservedInstancesModificationsRequest { - /** - * One or more filters. client-token - The idempotency token for the modification request. create-date - The time when the modification request was created. effective-date - The time when the modification becomes effective. modification-result.reserved-instances-id - The ID for the Reserved Instances created as part of the modification request. This ID is only available when the status of the modification is fulfilled. modification-result.target-configuration.availability-zone - The Availability Zone for the new Reserved Instances. modification-result.target-configuration.instance-count - The number of new Reserved Instances. modification-result.target-configuration.instance-type - The instance type of the new Reserved Instances. modification-result.target-configuration.platform - The network platform of the new Reserved Instances (EC2-Classic | EC2-VPC). reserved-instances-id - The ID of the Reserved Instances modified. reserved-instances-modification-id - The ID of the modification request. status - The status of the Reserved Instances modification request (processing | fulfilled | failed). status-message - The reason for the status. update-date - The time when the modification request was last updated. - */ - Filters?: FilterList; - /** - * IDs for the submitted modification request. - */ - ReservedInstancesModificationIds?: ReservedInstancesModificationIdStringList; - /** - * The token to retrieve the next page of results. - */ - NextToken?: String; - } - export interface DescribeReservedInstancesModificationsResult { - /** - * The token to use to retrieve the next page of results. This value is null when there are no more results to return. - */ - NextToken?: String; - /** - * The Reserved Instance modification information. - */ - ReservedInstancesModifications?: ReservedInstancesModificationList; - } - export interface DescribeReservedInstancesOfferingsRequest { - /** - * The Availability Zone in which the Reserved Instance can be used. - */ - AvailabilityZone?: String; - /** - * One or more filters. availability-zone - The Availability Zone where the Reserved Instance can be used. duration - The duration of the Reserved Instance (for example, one year or three years), in seconds (31536000 | 94608000). fixed-price - The purchase price of the Reserved Instance (for example, 9800.0). instance-type - The instance type that is covered by the reservation. marketplace - Set to true to show only Reserved Instance Marketplace offerings. When this filter is not used, which is the default behavior, all offerings from both AWS and the Reserved Instance Marketplace are listed. product-description - The Reserved Instance product platform description. Instances that include (Amazon VPC) in the product platform description will only be displayed to EC2-Classic account holders and are for use with Amazon VPC. (Linux/UNIX | Linux/UNIX (Amazon VPC) | SUSE Linux | SUSE Linux (Amazon VPC) | Red Hat Enterprise Linux | Red Hat Enterprise Linux (Amazon VPC) | Windows | Windows (Amazon VPC) | Windows with SQL Server Standard | Windows with SQL Server Standard (Amazon VPC) | Windows with SQL Server Web | Windows with SQL Server Web (Amazon VPC) | Windows with SQL Server Enterprise | Windows with SQL Server Enterprise (Amazon VPC)) reserved-instances-offering-id - The Reserved Instances offering ID. scope - The scope of the Reserved Instance (Availability Zone or Region). usage-price - The usage price of the Reserved Instance, per hour (for example, 0.84). - */ - Filters?: FilterList; - /** - * Include Reserved Instance Marketplace offerings in the response. - */ - IncludeMarketplace?: Boolean; - /** - * The instance type that the reservation will cover (for example, m1.small). For more information, see Instance Types in the Amazon Elastic Compute Cloud User Guide. - */ - InstanceType?: InstanceType; - /** - * The maximum duration (in seconds) to filter when searching for offerings. Default: 94608000 (3 years) - */ - MaxDuration?: Long; - /** - * The maximum number of instances to filter when searching for offerings. Default: 20 - */ - MaxInstanceCount?: Integer; - /** - * The minimum duration (in seconds) to filter when searching for offerings. Default: 2592000 (1 month) - */ - MinDuration?: Long; - /** - * The offering class of the Reserved Instance. Can be standard or convertible. - */ - OfferingClass?: OfferingClassType; - /** - * The Reserved Instance product platform description. Instances that include (Amazon VPC) in the description are for use with Amazon VPC. - */ - ProductDescription?: RIProductDescription; - /** - * One or more Reserved Instances offering IDs. - */ - ReservedInstancesOfferingIds?: ReservedInstancesOfferingIdStringList; - /** - * Checks whether you have the required permissions for the action, without actually making the request, and provides an error response. If you have the required permissions, the error response is DryRunOperation. Otherwise, it is UnauthorizedOperation. - */ - DryRun?: Boolean; - /** - * The tenancy of the instances covered by the reservation. A Reserved Instance with a tenancy of dedicated is applied to instances that run in a VPC on single-tenant hardware (i.e., Dedicated Instances). Important: The host value cannot be used with this parameter. Use the default or dedicated values only. Default: default - */ - InstanceTenancy?: Tenancy; - /** - * The maximum number of results to return for the request in a single page. The remaining results of the initial request can be seen by sending another request with the returned NextToken value. The maximum is 100. Default: 100 - */ - MaxResults?: Integer; - /** - * The token to retrieve the next page of results. - */ - NextToken?: String; - /** - * The Reserved Instance offering type. If you are using tools that predate the 2011-11-01 API version, you only have access to the Medium Utilization Reserved Instance offering type. - */ - OfferingType?: OfferingTypeValues; - } - export interface DescribeReservedInstancesOfferingsResult { - /** - * A list of Reserved Instances offerings. - */ - ReservedInstancesOfferings?: ReservedInstancesOfferingList; - /** - * The token to use to retrieve the next page of results. This value is null when there are no more results to return. - */ - NextToken?: String; - } - export interface DescribeReservedInstancesRequest { - /** - * One or more filters. availability-zone - The Availability Zone where the Reserved Instance can be used. duration - The duration of the Reserved Instance (one year or three years), in seconds (31536000 | 94608000). end - The time when the Reserved Instance expires (for example, 2015-08-07T11:54:42.000Z). fixed-price - The purchase price of the Reserved Instance (for example, 9800.0). instance-type - The instance type that is covered by the reservation. scope - The scope of the Reserved Instance (Region or Availability Zone). product-description - The Reserved Instance product platform description. Instances that include (Amazon VPC) in the product platform description will only be displayed to EC2-Classic account holders and are for use with Amazon VPC (Linux/UNIX | Linux/UNIX (Amazon VPC) | SUSE Linux | SUSE Linux (Amazon VPC) | Red Hat Enterprise Linux | Red Hat Enterprise Linux (Amazon VPC) | Windows | Windows (Amazon VPC) | Windows with SQL Server Standard | Windows with SQL Server Standard (Amazon VPC) | Windows with SQL Server Web | Windows with SQL Server Web (Amazon VPC) | Windows with SQL Server Enterprise | Windows with SQL Server Enterprise (Amazon VPC)). reserved-instances-id - The ID of the Reserved Instance. start - The time at which the Reserved Instance purchase request was placed (for example, 2014-08-07T11:54:42.000Z). state - The state of the Reserved Instance (payment-pending | active | payment-failed | retired). tag:key=value - The key/value combination of a tag assigned to the resource. Specify the key of the tag in the filter name and the value of the tag in the filter value. For example, for the tag Purpose=X, specify tag:Purpose for the filter name and X for the filter value. tag-key - The key of a tag assigned to the resource. This filter is independent of the tag-value filter. For example, if you use both the filter "tag-key=Purpose" and the filter "tag-value=X", you get any resources assigned both the tag key Purpose (regardless of what the tag's value is), and the tag value X (regardless of what the tag's key is). If you want to list only resources where Purpose is X, see the tag:key=value filter. tag-value - The value of a tag assigned to the resource. This filter is independent of the tag-key filter. usage-price - The usage price of the Reserved Instance, per hour (for example, 0.84). - */ - Filters?: FilterList; - /** - * Describes whether the Reserved Instance is Standard or Convertible. - */ - OfferingClass?: OfferingClassType; - /** - * One or more Reserved Instance IDs. Default: Describes all your Reserved Instances, or only those otherwise specified. - */ - ReservedInstancesIds?: ReservedInstancesIdStringList; - /** - * Checks whether you have the required permissions for the action, without actually making the request, and provides an error response. If you have the required permissions, the error response is DryRunOperation. Otherwise, it is UnauthorizedOperation. - */ - DryRun?: Boolean; - /** - * The Reserved Instance offering type. If you are using tools that predate the 2011-11-01 API version, you only have access to the Medium Utilization Reserved Instance offering type. - */ - OfferingType?: OfferingTypeValues; - } - export interface DescribeReservedInstancesResult { - /** - * A list of Reserved Instances. - */ - ReservedInstances?: ReservedInstancesList; - } - export interface DescribeRouteTablesRequest { - /** - * One or more filters. association.route-table-association-id - The ID of an association ID for the route table. association.route-table-id - The ID of the route table involved in the association. association.subnet-id - The ID of the subnet involved in the association. association.main - Indicates whether the route table is the main route table for the VPC (true | false). Route tables that do not have an association ID are not returned in the response. route-table-id - The ID of the route table. route.destination-cidr-block - The IPv4 CIDR range specified in a route in the table. route.destination-ipv6-cidr-block - The IPv6 CIDR range specified in a route in the route table. route.destination-prefix-list-id - The ID (prefix) of the AWS service specified in a route in the table. route.egress-only-internet-gateway-id - The ID of an egress-only Internet gateway specified in a route in the route table. route.gateway-id - The ID of a gateway specified in a route in the table. route.instance-id - The ID of an instance specified in a route in the table. route.nat-gateway-id - The ID of a NAT gateway. route.origin - Describes how the route was created. CreateRouteTable indicates that the route was automatically created when the route table was created; CreateRoute indicates that the route was manually added to the route table; EnableVgwRoutePropagation indicates that the route was propagated by route propagation. route.state - The state of a route in the route table (active | blackhole). The blackhole state indicates that the route's target isn't available (for example, the specified gateway isn't attached to the VPC, the specified NAT instance has been terminated, and so on). route.vpc-peering-connection-id - The ID of a VPC peering connection specified in a route in the table. tag:key=value - The key/value combination of a tag assigned to the resource. Specify the key of the tag in the filter name and the value of the tag in the filter value. For example, for the tag Purpose=X, specify tag:Purpose for the filter name and X for the filter value. tag-key - The key of a tag assigned to the resource. This filter is independent of the tag-value filter. For example, if you use both the filter "tag-key=Purpose" and the filter "tag-value=X", you get any resources assigned both the tag key Purpose (regardless of what the tag's value is), and the tag value X (regardless of what the tag's key is). If you want to list only resources where Purpose is X, see the tag:key=value filter. tag-value - The value of a tag assigned to the resource. This filter is independent of the tag-key filter. vpc-id - The ID of the VPC for the route table. - */ - Filters?: FilterList; - /** - * Checks whether you have the required permissions for the action, without actually making the request, and provides an error response. If you have the required permissions, the error response is DryRunOperation. Otherwise, it is UnauthorizedOperation. - */ - DryRun?: Boolean; - /** - * One or more route table IDs. Default: Describes all your route tables. - */ - RouteTableIds?: ValueStringList; - } - export interface DescribeRouteTablesResult { - /** - * Information about one or more route tables. - */ - RouteTables?: RouteTableList; - } - export interface DescribeScheduledInstanceAvailabilityRequest { - /** - * Checks whether you have the required permissions for the action, without actually making the request, and provides an error response. If you have the required permissions, the error response is DryRunOperation. Otherwise, it is UnauthorizedOperation. - */ - DryRun?: Boolean; - /** - * One or more filters. availability-zone - The Availability Zone (for example, us-west-2a). instance-type - The instance type (for example, c4.large). network-platform - The network platform (EC2-Classic or EC2-VPC). platform - The platform (Linux/UNIX or Windows). - */ - Filters?: FilterList; - /** - * The time period for the first schedule to start. - */ - FirstSlotStartTimeRange: SlotDateTimeRangeRequest; - /** - * The maximum number of results to return in a single call. This value can be between 5 and 300. The default value is 300. To retrieve the remaining results, make another call with the returned NextToken value. - */ - MaxResults?: Integer; - /** - * The maximum available duration, in hours. This value must be greater than MinSlotDurationInHours and less than 1,720. - */ - MaxSlotDurationInHours?: Integer; - /** - * The minimum available duration, in hours. The minimum required duration is 1,200 hours per year. For example, the minimum daily schedule is 4 hours, the minimum weekly schedule is 24 hours, and the minimum monthly schedule is 100 hours. - */ - MinSlotDurationInHours?: Integer; - /** - * The token for the next set of results. - */ - NextToken?: String; - /** - * The schedule recurrence. - */ - Recurrence: ScheduledInstanceRecurrenceRequest; - } - export interface DescribeScheduledInstanceAvailabilityResult { - /** - * The token required to retrieve the next set of results. This value is null when there are no more results to return. - */ - NextToken?: String; - /** - * Information about the available Scheduled Instances. - */ - ScheduledInstanceAvailabilitySet?: ScheduledInstanceAvailabilitySet; - } - export interface DescribeScheduledInstancesRequest { - /** - * Checks whether you have the required permissions for the action, without actually making the request, and provides an error response. If you have the required permissions, the error response is DryRunOperation. Otherwise, it is UnauthorizedOperation. - */ - DryRun?: Boolean; - /** - * One or more filters. availability-zone - The Availability Zone (for example, us-west-2a). instance-type - The instance type (for example, c4.large). network-platform - The network platform (EC2-Classic or EC2-VPC). platform - The platform (Linux/UNIX or Windows). - */ - Filters?: FilterList; - /** - * The maximum number of results to return in a single call. This value can be between 5 and 300. The default value is 100. To retrieve the remaining results, make another call with the returned NextToken value. - */ - MaxResults?: Integer; - /** - * The token for the next set of results. - */ - NextToken?: String; - /** - * One or more Scheduled Instance IDs. - */ - ScheduledInstanceIds?: ScheduledInstanceIdRequestSet; - /** - * The time period for the first schedule to start. - */ - SlotStartTimeRange?: SlotStartTimeRangeRequest; - } - export interface DescribeScheduledInstancesResult { - /** - * The token required to retrieve the next set of results. This value is null when there are no more results to return. - */ - NextToken?: String; - /** - * Information about the Scheduled Instances. - */ - ScheduledInstanceSet?: ScheduledInstanceSet; - } - export interface DescribeSecurityGroupReferencesRequest { - /** - * Checks whether you have the required permissions for the operation, without actually making the request, and provides an error response. If you have the required permissions, the error response is DryRunOperation. Otherwise, it is UnauthorizedOperation. - */ - DryRun?: Boolean; - /** - * One or more security group IDs in your account. - */ - GroupId: GroupIds; - } - export interface DescribeSecurityGroupReferencesResult { - /** - * Information about the VPCs with the referencing security groups. - */ - SecurityGroupReferenceSet?: SecurityGroupReferences; - } - export interface DescribeSecurityGroupsRequest { - /** - * One or more filters. If using multiple filters for rules, the results include security groups for which any combination of rules - not necessarily a single rule - match all filters. description - The description of the security group. egress.ip-permission.prefix-list-id - The ID (prefix) of the AWS service to which the security group allows access. group-id - The ID of the security group. group-name - The name of the security group. ip-permission.cidr - An IPv4 CIDR range that has been granted permission in a security group rule. ip-permission.from-port - The start of port range for the TCP and UDP protocols, or an ICMP type number. ip-permission.group-id - The ID of a security group that has been granted permission. ip-permission.group-name - The name of a security group that has been granted permission. ip-permission.ipv6-cidr - An IPv6 CIDR range that has been granted permission in a security group rule. ip-permission.protocol - The IP protocol for the permission (tcp | udp | icmp or a protocol number). ip-permission.to-port - The end of port range for the TCP and UDP protocols, or an ICMP code. ip-permission.user-id - The ID of an AWS account that has been granted permission. owner-id - The AWS account ID of the owner of the security group. tag-key - The key of a tag assigned to the security group. tag-value - The value of a tag assigned to the security group. vpc-id - The ID of the VPC specified when the security group was created. - */ - Filters?: FilterList; - /** - * One or more security group IDs. Required for security groups in a nondefault VPC. Default: Describes all your security groups. - */ - GroupIds?: GroupIdStringList; - /** - * [EC2-Classic and default VPC only] One or more security group names. You can specify either the security group name or the security group ID. For security groups in a nondefault VPC, use the group-name filter to describe security groups by name. Default: Describes all your security groups. - */ - GroupNames?: GroupNameStringList; - /** - * Checks whether you have the required permissions for the action, without actually making the request, and provides an error response. If you have the required permissions, the error response is DryRunOperation. Otherwise, it is UnauthorizedOperation. - */ - DryRun?: Boolean; - } - export interface DescribeSecurityGroupsResult { - /** - * Information about one or more security groups. - */ - SecurityGroups?: SecurityGroupList; - } - export interface DescribeSnapshotAttributeRequest { - /** - * The snapshot attribute you would like to view. - */ - Attribute: SnapshotAttributeName; - /** - * The ID of the EBS snapshot. - */ - SnapshotId: String; - /** - * Checks whether you have the required permissions for the action, without actually making the request, and provides an error response. If you have the required permissions, the error response is DryRunOperation. Otherwise, it is UnauthorizedOperation. - */ - DryRun?: Boolean; - } - export interface DescribeSnapshotAttributeResult { - /** - * A list of permissions for creating volumes from the snapshot. - */ - CreateVolumePermissions?: CreateVolumePermissionList; - /** - * A list of product codes. - */ - ProductCodes?: ProductCodeList; - /** - * The ID of the EBS snapshot. - */ - SnapshotId?: String; - } - export interface DescribeSnapshotsRequest { - /** - * One or more filters. description - A description of the snapshot. owner-alias - Value from an Amazon-maintained list (amazon | aws-marketplace | microsoft) of snapshot owners. Not to be confused with the user-configured AWS account alias, which is set from the IAM console. owner-id - The ID of the AWS account that owns the snapshot. progress - The progress of the snapshot, as a percentage (for example, 80%). snapshot-id - The snapshot ID. start-time - The time stamp when the snapshot was initiated. status - The status of the snapshot (pending | completed | error). tag:key=value - The key/value combination of a tag assigned to the resource. Specify the key of the tag in the filter name and the value of the tag in the filter value. For example, for the tag Purpose=X, specify tag:Purpose for the filter name and X for the filter value. tag-key - The key of a tag assigned to the resource. This filter is independent of the tag-value filter. For example, if you use both the filter "tag-key=Purpose" and the filter "tag-value=X", you get any resources assigned both the tag key Purpose (regardless of what the tag's value is), and the tag value X (regardless of what the tag's key is). If you want to list only resources where Purpose is X, see the tag:key=value filter. tag-value - The value of a tag assigned to the resource. This filter is independent of the tag-key filter. volume-id - The ID of the volume the snapshot is for. volume-size - The size of the volume, in GiB. - */ - Filters?: FilterList; - /** - * The maximum number of snapshot results returned by DescribeSnapshots in paginated output. When this parameter is used, DescribeSnapshots only returns MaxResults results in a single page along with a NextToken response element. The remaining results of the initial request can be seen by sending another DescribeSnapshots request with the returned NextToken value. This value can be between 5 and 1000; if MaxResults is given a value larger than 1000, only 1000 results are returned. If this parameter is not used, then DescribeSnapshots returns all results. You cannot specify this parameter and the snapshot IDs parameter in the same request. - */ - MaxResults?: Integer; - /** - * The NextToken value returned from a previous paginated DescribeSnapshots request where MaxResults was used and the results exceeded the value of that parameter. Pagination continues from the end of the previous results that returned the NextToken value. This value is null when there are no more results to return. - */ - NextToken?: String; - /** - * Returns the snapshots owned by the specified owner. Multiple owners can be specified. - */ - OwnerIds?: OwnerStringList; - /** - * One or more AWS accounts IDs that can create volumes from the snapshot. - */ - RestorableByUserIds?: RestorableByStringList; - /** - * One or more snapshot IDs. Default: Describes snapshots for which you have launch permissions. - */ - SnapshotIds?: SnapshotIdStringList; - /** - * Checks whether you have the required permissions for the action, without actually making the request, and provides an error response. If you have the required permissions, the error response is DryRunOperation. Otherwise, it is UnauthorizedOperation. - */ - DryRun?: Boolean; - } - export interface DescribeSnapshotsResult { - /** - * Information about the snapshots. - */ - Snapshots?: SnapshotList; - /** - * The NextToken value to include in a future DescribeSnapshots request. When the results of a DescribeSnapshots request exceed MaxResults, this value can be used to retrieve the next page of results. This value is null when there are no more results to return. - */ - NextToken?: String; - } - export interface DescribeSpotDatafeedSubscriptionRequest { - /** - * Checks whether you have the required permissions for the action, without actually making the request, and provides an error response. If you have the required permissions, the error response is DryRunOperation. Otherwise, it is UnauthorizedOperation. - */ - DryRun?: Boolean; - } - export interface DescribeSpotDatafeedSubscriptionResult { - /** - * The Spot instance data feed subscription. - */ - SpotDatafeedSubscription?: SpotDatafeedSubscription; - } - export interface DescribeSpotFleetInstancesRequest { - /** - * Checks whether you have the required permissions for the action, without actually making the request, and provides an error response. If you have the required permissions, the error response is DryRunOperation. Otherwise, it is UnauthorizedOperation. - */ - DryRun?: Boolean; - /** - * The maximum number of results to return in a single call. Specify a value between 1 and 1000. The default value is 1000. To retrieve the remaining results, make another call with the returned NextToken value. - */ - MaxResults?: Integer; - /** - * The token for the next set of results. - */ - NextToken?: String; - /** - * The ID of the Spot fleet request. - */ - SpotFleetRequestId: String; - } - export interface DescribeSpotFleetInstancesResponse { - /** - * The running instances. Note that this list is refreshed periodically and might be out of date. - */ - ActiveInstances: ActiveInstanceSet; - /** - * The token required to retrieve the next set of results. This value is null when there are no more results to return. - */ - NextToken?: String; - /** - * The ID of the Spot fleet request. - */ - SpotFleetRequestId: String; - } - export interface DescribeSpotFleetRequestHistoryRequest { - /** - * Checks whether you have the required permissions for the action, without actually making the request, and provides an error response. If you have the required permissions, the error response is DryRunOperation. Otherwise, it is UnauthorizedOperation. - */ - DryRun?: Boolean; - /** - * The type of events to describe. By default, all events are described. - */ - EventType?: EventType; - /** - * The maximum number of results to return in a single call. Specify a value between 1 and 1000. The default value is 1000. To retrieve the remaining results, make another call with the returned NextToken value. - */ - MaxResults?: Integer; - /** - * The token for the next set of results. - */ - NextToken?: String; - /** - * The ID of the Spot fleet request. - */ - SpotFleetRequestId: String; - /** - * The starting date and time for the events, in UTC format (for example, YYYY-MM-DDTHH:MM:SSZ). - */ - StartTime: DateTime; - } - export interface DescribeSpotFleetRequestHistoryResponse { - /** - * Information about the events in the history of the Spot fleet request. - */ - HistoryRecords: HistoryRecords; - /** - * The last date and time for the events, in UTC format (for example, YYYY-MM-DDTHH:MM:SSZ). All records up to this time were retrieved. If nextToken indicates that there are more results, this value is not present. - */ - LastEvaluatedTime: DateTime; - /** - * The token required to retrieve the next set of results. This value is null when there are no more results to return. - */ - NextToken?: String; - /** - * The ID of the Spot fleet request. - */ - SpotFleetRequestId: String; - /** - * The starting date and time for the events, in UTC format (for example, YYYY-MM-DDTHH:MM:SSZ). - */ - StartTime: DateTime; - } - export interface DescribeSpotFleetRequestsRequest { - /** - * Checks whether you have the required permissions for the action, without actually making the request, and provides an error response. If you have the required permissions, the error response is DryRunOperation. Otherwise, it is UnauthorizedOperation. - */ - DryRun?: Boolean; - /** - * The maximum number of results to return in a single call. Specify a value between 1 and 1000. The default value is 1000. To retrieve the remaining results, make another call with the returned NextToken value. - */ - MaxResults?: Integer; - /** - * The token for the next set of results. - */ - NextToken?: String; - /** - * The IDs of the Spot fleet requests. - */ - SpotFleetRequestIds?: ValueStringList; - } - export interface DescribeSpotFleetRequestsResponse { - /** - * The token required to retrieve the next set of results. This value is null when there are no more results to return. - */ - NextToken?: String; - /** - * Information about the configuration of your Spot fleet. - */ - SpotFleetRequestConfigs: SpotFleetRequestConfigSet; - } - export interface DescribeSpotInstanceRequestsRequest { - /** - * One or more filters. availability-zone-group - The Availability Zone group. create-time - The time stamp when the Spot instance request was created. fault-code - The fault code related to the request. fault-message - The fault message related to the request. instance-id - The ID of the instance that fulfilled the request. launch-group - The Spot instance launch group. launch.block-device-mapping.delete-on-termination - Indicates whether the Amazon EBS volume is deleted on instance termination. launch.block-device-mapping.device-name - The device name for the Amazon EBS volume (for example, /dev/sdh). launch.block-device-mapping.snapshot-id - The ID of the snapshot used for the Amazon EBS volume. launch.block-device-mapping.volume-size - The size of the Amazon EBS volume, in GiB. launch.block-device-mapping.volume-type - The type of the Amazon EBS volume: gp2 for General Purpose SSD, io1 for Provisioned IOPS SSD, st1 for Throughput Optimized HDD, sc1for Cold HDD, or standard for Magnetic. launch.group-id - The security group for the instance. launch.image-id - The ID of the AMI. launch.instance-type - The type of instance (for example, m3.medium). launch.kernel-id - The kernel ID. launch.key-name - The name of the key pair the instance launched with. launch.monitoring-enabled - Whether detailed monitoring is enabled for the Spot instance. launch.ramdisk-id - The RAM disk ID. launched-availability-zone - The Availability Zone in which the bid is launched. network-interface.addresses.primary - Indicates whether the IP address is the primary private IP address. network-interface.delete-on-termination - Indicates whether the network interface is deleted when the instance is terminated. network-interface.description - A description of the network interface. network-interface.device-index - The index of the device for the network interface attachment on the instance. network-interface.group-id - The ID of the security group associated with the network interface. network-interface.network-interface-id - The ID of the network interface. network-interface.private-ip-address - The primary private IP address of the network interface. network-interface.subnet-id - The ID of the subnet for the instance. product-description - The product description associated with the instance (Linux/UNIX | Windows). spot-instance-request-id - The Spot instance request ID. spot-price - The maximum hourly price for any Spot instance launched to fulfill the request. state - The state of the Spot instance request (open | active | closed | cancelled | failed). Spot bid status information can help you track your Amazon EC2 Spot instance requests. For more information, see Spot Bid Status in the Amazon Elastic Compute Cloud User Guide. status-code - The short code describing the most recent evaluation of your Spot instance request. status-message - The message explaining the status of the Spot instance request. tag:key=value - The key/value combination of a tag assigned to the resource. Specify the key of the tag in the filter name and the value of the tag in the filter value. For example, for the tag Purpose=X, specify tag:Purpose for the filter name and X for the filter value. tag-key - The key of a tag assigned to the resource. This filter is independent of the tag-value filter. For example, if you use both the filter "tag-key=Purpose" and the filter "tag-value=X", you get any resources assigned both the tag key Purpose (regardless of what the tag's value is), and the tag value X (regardless of what the tag's key is). If you want to list only resources where Purpose is X, see the tag:key=value filter. tag-value - The value of a tag assigned to the resource. This filter is independent of the tag-key filter. type - The type of Spot instance request (one-time | persistent). valid-from - The start date of the request. valid-until - The end date of the request. - */ - Filters?: FilterList; - /** - * Checks whether you have the required permissions for the action, without actually making the request, and provides an error response. If you have the required permissions, the error response is DryRunOperation. Otherwise, it is UnauthorizedOperation. - */ - DryRun?: Boolean; - /** - * One or more Spot instance request IDs. - */ - SpotInstanceRequestIds?: SpotInstanceRequestIdList; - } - export interface DescribeSpotInstanceRequestsResult { - /** - * One or more Spot instance requests. - */ - SpotInstanceRequests?: SpotInstanceRequestList; - } - export interface DescribeSpotPriceHistoryRequest { - /** - * One or more filters. availability-zone - The Availability Zone for which prices should be returned. instance-type - The type of instance (for example, m3.medium). product-description - The product description for the Spot price (Linux/UNIX | SUSE Linux | Windows | Linux/UNIX (Amazon VPC) | SUSE Linux (Amazon VPC) | Windows (Amazon VPC)). spot-price - The Spot price. The value must match exactly (or use wildcards; greater than or less than comparison is not supported). timestamp - The timestamp of the Spot price history, in UTC format (for example, YYYY-MM-DDTHH:MM:SSZ). You can use wildcards (* and ?). Greater than or less than comparison is not supported. - */ - Filters?: FilterList; - /** - * Filters the results by the specified Availability Zone. - */ - AvailabilityZone?: String; - /** - * Checks whether you have the required permissions for the action, without actually making the request, and provides an error response. If you have the required permissions, the error response is DryRunOperation. Otherwise, it is UnauthorizedOperation. - */ - DryRun?: Boolean; - /** - * The date and time, up to the current date, from which to stop retrieving the price history data, in UTC format (for example, YYYY-MM-DDTHH:MM:SSZ). - */ - EndTime?: DateTime; - /** - * Filters the results by the specified instance types. Note that T2 and HS1 instance types are not supported. - */ - InstanceTypes?: InstanceTypeList; - /** - * The maximum number of results to return in a single call. Specify a value between 1 and 1000. The default value is 1000. To retrieve the remaining results, make another call with the returned NextToken value. - */ - MaxResults?: Integer; - /** - * The token for the next set of results. - */ - NextToken?: String; - /** - * Filters the results by the specified basic product descriptions. - */ - ProductDescriptions?: ProductDescriptionList; - /** - * The date and time, up to the past 90 days, from which to start retrieving the price history data, in UTC format (for example, YYYY-MM-DDTHH:MM:SSZ). - */ - StartTime?: DateTime; - } - export interface DescribeSpotPriceHistoryResult { - /** - * The token required to retrieve the next set of results. This value is null when there are no more results to return. - */ - NextToken?: String; - /** - * The historical Spot prices. - */ - SpotPriceHistory?: SpotPriceHistoryList; - } - export interface DescribeStaleSecurityGroupsRequest { - /** - * Checks whether you have the required permissions for the operation, without actually making the request, and provides an error response. If you have the required permissions, the error response is DryRunOperation. Otherwise, it is UnauthorizedOperation. - */ - DryRun?: Boolean; - /** - * The maximum number of items to return for this request. The request returns a token that you can specify in a subsequent call to get the next set of results. - */ - MaxResults?: MaxResults; - /** - * The token for the next set of items to return. (You received this token from a prior call.) - */ - NextToken?: NextToken; - /** - * The ID of the VPC. - */ - VpcId: String; - } - export interface DescribeStaleSecurityGroupsResult { - /** - * The token to use when requesting the next set of items. If there are no additional items to return, the string is empty. - */ - NextToken?: String; - /** - * Information about the stale security groups. - */ - StaleSecurityGroupSet?: StaleSecurityGroupSet; - } - export interface DescribeSubnetsRequest { - /** - * One or more filters. availabilityZone - The Availability Zone for the subnet. You can also use availability-zone as the filter name. available-ip-address-count - The number of IPv4 addresses in the subnet that are available. cidrBlock - The IPv4 CIDR block of the subnet. The CIDR block you specify must exactly match the subnet's CIDR block for information to be returned for the subnet. You can also use cidr or cidr-block as the filter names. defaultForAz - Indicates whether this is the default subnet for the Availability Zone. You can also use default-for-az as the filter name. ipv6-cidr-block-association.ipv6-cidr-block - An IPv6 CIDR block associated with the subnet. ipv6-cidr-block-association.association-id - An association ID for an IPv6 CIDR block associated with the subnet. ipv6-cidr-block-association.state - The state of an IPv6 CIDR block associated with the subnet. state - The state of the subnet (pending | available). subnet-id - The ID of the subnet. tag:key=value - The key/value combination of a tag assigned to the resource. Specify the key of the tag in the filter name and the value of the tag in the filter value. For example, for the tag Purpose=X, specify tag:Purpose for the filter name and X for the filter value. tag-key - The key of a tag assigned to the resource. This filter is independent of the tag-value filter. For example, if you use both the filter "tag-key=Purpose" and the filter "tag-value=X", you get any resources assigned both the tag key Purpose (regardless of what the tag's value is), and the tag value X (regardless of what the tag's key is). If you want to list only resources where Purpose is X, see the tag:key=value filter. tag-value - The value of a tag assigned to the resource. This filter is independent of the tag-key filter. vpc-id - The ID of the VPC for the subnet. - */ - Filters?: FilterList; - /** - * One or more subnet IDs. Default: Describes all your subnets. - */ - SubnetIds?: SubnetIdStringList; - /** - * Checks whether you have the required permissions for the action, without actually making the request, and provides an error response. If you have the required permissions, the error response is DryRunOperation. Otherwise, it is UnauthorizedOperation. - */ - DryRun?: Boolean; - } - export interface DescribeSubnetsResult { - /** - * Information about one or more subnets. - */ - Subnets?: SubnetList; - } - export interface DescribeTagsRequest { - /** - * Checks whether you have the required permissions for the action, without actually making the request, and provides an error response. If you have the required permissions, the error response is DryRunOperation. Otherwise, it is UnauthorizedOperation. - */ - DryRun?: Boolean; - /** - * One or more filters. key - The tag key. resource-id - The resource ID. resource-type - The resource type (customer-gateway | dhcp-options | image | instance | internet-gateway | network-acl | network-interface | reserved-instances | route-table | security-group | snapshot | spot-instances-request | subnet | volume | vpc | vpn-connection | vpn-gateway). value - The tag value. - */ - Filters?: FilterList; - /** - * The maximum number of results to return in a single call. This value can be between 5 and 1000. To retrieve the remaining results, make another call with the returned NextToken value. - */ - MaxResults?: Integer; - /** - * The token to retrieve the next page of results. - */ - NextToken?: String; - } - export interface DescribeTagsResult { - /** - * The token to use to retrieve the next page of results. This value is null when there are no more results to return.. - */ - NextToken?: String; - /** - * A list of tags. - */ - Tags?: TagDescriptionList; - } - export interface DescribeVolumeAttributeRequest { - /** - * The attribute of the volume. This parameter is required. - */ - Attribute?: VolumeAttributeName; - /** - * The ID of the volume. - */ - VolumeId: String; - /** - * Checks whether you have the required permissions for the action, without actually making the request, and provides an error response. If you have the required permissions, the error response is DryRunOperation. Otherwise, it is UnauthorizedOperation. - */ - DryRun?: Boolean; - } - export interface DescribeVolumeAttributeResult { - /** - * The state of autoEnableIO attribute. - */ - AutoEnableIO?: AttributeBooleanValue; - /** - * A list of product codes. - */ - ProductCodes?: ProductCodeList; - /** - * The ID of the volume. - */ - VolumeId?: String; - } - export interface DescribeVolumeStatusRequest { - /** - * One or more filters. action.code - The action code for the event (for example, enable-volume-io). action.description - A description of the action. action.event-id - The event ID associated with the action. availability-zone - The Availability Zone of the instance. event.description - A description of the event. event.event-id - The event ID. event.event-type - The event type (for io-enabled: passed | failed; for io-performance: io-performance:degraded | io-performance:severely-degraded | io-performance:stalled). event.not-after - The latest end time for the event. event.not-before - The earliest start time for the event. volume-status.details-name - The cause for volume-status.status (io-enabled | io-performance). volume-status.details-status - The status of volume-status.details-name (for io-enabled: passed | failed; for io-performance: normal | degraded | severely-degraded | stalled). volume-status.status - The status of the volume (ok | impaired | warning | insufficient-data). - */ - Filters?: FilterList; - /** - * The maximum number of volume results returned by DescribeVolumeStatus in paginated output. When this parameter is used, the request only returns MaxResults results in a single page along with a NextToken response element. The remaining results of the initial request can be seen by sending another request with the returned NextToken value. This value can be between 5 and 1000; if MaxResults is given a value larger than 1000, only 1000 results are returned. If this parameter is not used, then DescribeVolumeStatus returns all results. You cannot specify this parameter and the volume IDs parameter in the same request. - */ - MaxResults?: Integer; - /** - * The NextToken value to include in a future DescribeVolumeStatus request. When the results of the request exceed MaxResults, this value can be used to retrieve the next page of results. This value is null when there are no more results to return. - */ - NextToken?: String; - /** - * One or more volume IDs. Default: Describes all your volumes. - */ - VolumeIds?: VolumeIdStringList; - /** - * Checks whether you have the required permissions for the action, without actually making the request, and provides an error response. If you have the required permissions, the error response is DryRunOperation. Otherwise, it is UnauthorizedOperation. - */ - DryRun?: Boolean; - } - export interface DescribeVolumeStatusResult { - /** - * The token to use to retrieve the next page of results. This value is null when there are no more results to return. - */ - NextToken?: String; - /** - * A list of volumes. - */ - VolumeStatuses?: VolumeStatusList; - } - export interface DescribeVolumesModificationsRequest { - /** - * Checks whether you have the required permissions for the action, without actually making the request, and provides an error response. If you have the required permissions, the error response is DryRunOperation. Otherwise, it is UnauthorizedOperation. - */ - DryRun?: Boolean; - /** - * One or more volume IDs for which in-progress modifications will be described. - */ - VolumeIds?: VolumeIdStringList; - /** - * One or more filters. Supported filters: volume-id, modification-state, target-size, target-iops, target-volume-type, original-size, original-iops, original-volume-type, start-time. - */ - Filters?: FilterList; - /** - * The nextToken value returned by a previous paginated request. - */ - NextToken?: String; - /** - * The maximum number of results (up to a limit of 500) to be returned in a paginated request. - */ - MaxResults?: Integer; - } - export interface DescribeVolumesModificationsResult { - /** - * A list of returned VolumeModification objects. - */ - VolumesModifications?: VolumeModificationList; - /** - * Token for pagination, null if there are no more results - */ - NextToken?: String; - } - export interface DescribeVolumesRequest { - /** - * One or more filters. attachment.attach-time - The time stamp when the attachment initiated. attachment.delete-on-termination - Whether the volume is deleted on instance termination. attachment.device - The device name that is exposed to the instance (for example, /dev/sda1). attachment.instance-id - The ID of the instance the volume is attached to. attachment.status - The attachment state (attaching | attached | detaching | detached). availability-zone - The Availability Zone in which the volume was created. create-time - The time stamp when the volume was created. encrypted - The encryption status of the volume. size - The size of the volume, in GiB. snapshot-id - The snapshot from which the volume was created. status - The status of the volume (creating | available | in-use | deleting | deleted | error). tag:key=value - The key/value combination of a tag assigned to the resource. Specify the key of the tag in the filter name and the value of the tag in the filter value. For example, for the tag Purpose=X, specify tag:Purpose for the filter name and X for the filter value. tag-key - The key of a tag assigned to the resource. This filter is independent of the tag-value filter. For example, if you use both the filter "tag-key=Purpose" and the filter "tag-value=X", you get any resources assigned both the tag key Purpose (regardless of what the tag's value is), and the tag value X (regardless of what the tag's key is). If you want to list only resources where Purpose is X, see the tag:key=value filter. tag-value - The value of a tag assigned to the resource. This filter is independent of the tag-key filter. volume-id - The volume ID. volume-type - The Amazon EBS volume type. This can be gp2 for General Purpose SSD, io1 for Provisioned IOPS SSD, st1 for Throughput Optimized HDD, sc1 for Cold HDD, or standard for Magnetic volumes. - */ - Filters?: FilterList; - /** - * One or more volume IDs. - */ - VolumeIds?: VolumeIdStringList; - /** - * Checks whether you have the required permissions for the action, without actually making the request, and provides an error response. If you have the required permissions, the error response is DryRunOperation. Otherwise, it is UnauthorizedOperation. - */ - DryRun?: Boolean; - /** - * The maximum number of volume results returned by DescribeVolumes in paginated output. When this parameter is used, DescribeVolumes only returns MaxResults results in a single page along with a NextToken response element. The remaining results of the initial request can be seen by sending another DescribeVolumes request with the returned NextToken value. This value can be between 5 and 500; if MaxResults is given a value larger than 500, only 500 results are returned. If this parameter is not used, then DescribeVolumes returns all results. You cannot specify this parameter and the volume IDs parameter in the same request. - */ - MaxResults?: Integer; - /** - * The NextToken value returned from a previous paginated DescribeVolumes request where MaxResults was used and the results exceeded the value of that parameter. Pagination continues from the end of the previous results that returned the NextToken value. This value is null when there are no more results to return. - */ - NextToken?: String; - } - export interface DescribeVolumesResult { - /** - * Information about the volumes. - */ - Volumes?: VolumeList; - /** - * The NextToken value to include in a future DescribeVolumes request. When the results of a DescribeVolumes request exceed MaxResults, this value can be used to retrieve the next page of results. This value is null when there are no more results to return. - */ - NextToken?: String; - } - export interface DescribeVpcAttributeRequest { - /** - * The VPC attribute. - */ - Attribute: VpcAttributeName; - /** - * The ID of the VPC. - */ - VpcId: String; - /** - * Checks whether you have the required permissions for the action, without actually making the request, and provides an error response. If you have the required permissions, the error response is DryRunOperation. Otherwise, it is UnauthorizedOperation. - */ - DryRun?: Boolean; - } - export interface DescribeVpcAttributeResult { - /** - * The ID of the VPC. - */ - VpcId?: String; - /** - * Indicates whether the instances launched in the VPC get DNS hostnames. If this attribute is true, instances in the VPC get DNS hostnames; otherwise, they do not. - */ - EnableDnsHostnames?: AttributeBooleanValue; - /** - * Indicates whether DNS resolution is enabled for the VPC. If this attribute is true, the Amazon DNS server resolves DNS hostnames for your instances to their corresponding IP addresses; otherwise, it does not. - */ - EnableDnsSupport?: AttributeBooleanValue; - } - export interface DescribeVpcClassicLinkDnsSupportRequest { - /** - * The maximum number of items to return for this request. The request returns a token that you can specify in a subsequent call to get the next set of results. - */ - MaxResults?: MaxResults; - /** - * The token for the next set of items to return. (You received this token from a prior call.) - */ - NextToken?: NextToken; - /** - * One or more VPC IDs. - */ - VpcIds?: VpcClassicLinkIdList; - } - export interface DescribeVpcClassicLinkDnsSupportResult { - /** - * The token to use when requesting the next set of items. - */ - NextToken?: NextToken; - /** - * Information about the ClassicLink DNS support status of the VPCs. - */ - Vpcs?: ClassicLinkDnsSupportList; - } - export interface DescribeVpcClassicLinkRequest { - /** - * One or more filters. is-classic-link-enabled - Whether the VPC is enabled for ClassicLink (true | false). tag:key=value - The key/value combination of a tag assigned to the resource. Specify the key of the tag in the filter name and the value of the tag in the filter value. For example, for the tag Purpose=X, specify tag:Purpose for the filter name and X for the filter value. tag-key - The key of a tag assigned to the resource. This filter is independent of the tag-value filter. For example, if you use both the filter "tag-key=Purpose" and the filter "tag-value=X", you get any resources assigned both the tag key Purpose (regardless of what the tag's value is), and the tag value X (regardless of what the tag's key is). If you want to list only resources where Purpose is X, see the tag:key=value filter. tag-value - The value of a tag assigned to the resource. This filter is independent of the tag-key filter. - */ - Filters?: FilterList; - /** - * Checks whether you have the required permissions for the action, without actually making the request, and provides an error response. If you have the required permissions, the error response is DryRunOperation. Otherwise, it is UnauthorizedOperation. - */ - DryRun?: Boolean; - /** - * One or more VPCs for which you want to describe the ClassicLink status. - */ - VpcIds?: VpcClassicLinkIdList; - } - export interface DescribeVpcClassicLinkResult { - /** - * The ClassicLink status of one or more VPCs. - */ - Vpcs?: VpcClassicLinkList; - } - export interface DescribeVpcEndpointServicesRequest { - /** - * Checks whether you have the required permissions for the action, without actually making the request, and provides an error response. If you have the required permissions, the error response is DryRunOperation. Otherwise, it is UnauthorizedOperation. - */ - DryRun?: Boolean; - /** - * The maximum number of items to return for this request. The request returns a token that you can specify in a subsequent call to get the next set of results. Constraint: If the value is greater than 1000, we return only 1000 items. - */ - MaxResults?: Integer; - /** - * The token for the next set of items to return. (You received this token from a prior call.) - */ - NextToken?: String; - } - export interface DescribeVpcEndpointServicesResult { - /** - * The token to use when requesting the next set of items. If there are no additional items to return, the string is empty. - */ - NextToken?: String; - /** - * A list of supported AWS services. - */ - ServiceNames?: ValueStringList; - } - export interface DescribeVpcEndpointsRequest { - /** - * Checks whether you have the required permissions for the action, without actually making the request, and provides an error response. If you have the required permissions, the error response is DryRunOperation. Otherwise, it is UnauthorizedOperation. - */ - DryRun?: Boolean; - /** - * One or more filters. service-name: The name of the AWS service. vpc-id: The ID of the VPC in which the endpoint resides. vpc-endpoint-id: The ID of the endpoint. vpc-endpoint-state: The state of the endpoint. (pending | available | deleting | deleted) - */ - Filters?: FilterList; - /** - * The maximum number of items to return for this request. The request returns a token that you can specify in a subsequent call to get the next set of results. Constraint: If the value is greater than 1000, we return only 1000 items. - */ - MaxResults?: Integer; - /** - * The token for the next set of items to return. (You received this token from a prior call.) - */ - NextToken?: String; - /** - * One or more endpoint IDs. - */ - VpcEndpointIds?: ValueStringList; - } - export interface DescribeVpcEndpointsResult { - /** - * The token to use when requesting the next set of items. If there are no additional items to return, the string is empty. - */ - NextToken?: String; - /** - * Information about the endpoints. - */ - VpcEndpoints?: VpcEndpointSet; - } - export interface DescribeVpcPeeringConnectionsRequest { - /** - * One or more filters. accepter-vpc-info.cidr-block - The IPv4 CIDR block of the peer VPC. accepter-vpc-info.owner-id - The AWS account ID of the owner of the peer VPC. accepter-vpc-info.vpc-id - The ID of the peer VPC. expiration-time - The expiration date and time for the VPC peering connection. requester-vpc-info.cidr-block - The IPv4 CIDR block of the requester's VPC. requester-vpc-info.owner-id - The AWS account ID of the owner of the requester VPC. requester-vpc-info.vpc-id - The ID of the requester VPC. status-code - The status of the VPC peering connection (pending-acceptance | failed | expired | provisioning | active | deleted | rejected). status-message - A message that provides more information about the status of the VPC peering connection, if applicable. tag:key=value - The key/value combination of a tag assigned to the resource. Specify the key of the tag in the filter name and the value of the tag in the filter value. For example, for the tag Purpose=X, specify tag:Purpose for the filter name and X for the filter value. tag-key - The key of a tag assigned to the resource. This filter is independent of the tag-value filter. For example, if you use both the filter "tag-key=Purpose" and the filter "tag-value=X", you get any resources assigned both the tag key Purpose (regardless of what the tag's value is), and the tag value X (regardless of what the tag's key is). If you want to list only resources where Purpose is X, see the tag:key=value filter. tag-value - The value of a tag assigned to the resource. This filter is independent of the tag-key filter. vpc-peering-connection-id - The ID of the VPC peering connection. - */ - Filters?: FilterList; - /** - * Checks whether you have the required permissions for the action, without actually making the request, and provides an error response. If you have the required permissions, the error response is DryRunOperation. Otherwise, it is UnauthorizedOperation. - */ - DryRun?: Boolean; - /** - * One or more VPC peering connection IDs. Default: Describes all your VPC peering connections. - */ - VpcPeeringConnectionIds?: ValueStringList; - } - export interface DescribeVpcPeeringConnectionsResult { - /** - * Information about the VPC peering connections. - */ - VpcPeeringConnections?: VpcPeeringConnectionList; - } - export interface DescribeVpcsRequest { - /** - * One or more filters. cidr - The primary IPv4 CIDR block of the VPC. The CIDR block you specify must exactly match the VPC's CIDR block for information to be returned for the VPC. Must contain the slash followed by one or two digits (for example, /28). cidr-block-association.cidr-block - An IPv4 CIDR block associated with the VPC. cidr-block-association.association-id - The association ID for an IPv4 CIDR block associated with the VPC. cidr-block-association.state - The state of an IPv4 CIDR block associated with the VPC. dhcp-options-id - The ID of a set of DHCP options. ipv6-cidr-block-association.ipv6-cidr-block - An IPv6 CIDR block associated with the VPC. ipv6-cidr-block-association.association-id - The association ID for an IPv6 CIDR block associated with the VPC. ipv6-cidr-block-association.state - The state of an IPv6 CIDR block associated with the VPC. isDefault - Indicates whether the VPC is the default VPC. state - The state of the VPC (pending | available). tag:key=value - The key/value combination of a tag assigned to the resource. Specify the key of the tag in the filter name and the value of the tag in the filter value. For example, for the tag Purpose=X, specify tag:Purpose for the filter name and X for the filter value. tag-key - The key of a tag assigned to the resource. This filter is independent of the tag-value filter. For example, if you use both the filter "tag-key=Purpose" and the filter "tag-value=X", you get any resources assigned both the tag key Purpose (regardless of what the tag's value is), and the tag value X (regardless of what the tag's key is). If you want to list only resources where Purpose is X, see the tag:key=value filter. tag-value - The value of a tag assigned to the resource. This filter is independent of the tag-key filter. vpc-id - The ID of the VPC. - */ - Filters?: FilterList; - /** - * One or more VPC IDs. Default: Describes all your VPCs. - */ - VpcIds?: VpcIdStringList; - /** - * Checks whether you have the required permissions for the action, without actually making the request, and provides an error response. If you have the required permissions, the error response is DryRunOperation. Otherwise, it is UnauthorizedOperation. - */ - DryRun?: Boolean; - } - export interface DescribeVpcsResult { - /** - * Information about one or more VPCs. - */ - Vpcs?: VpcList; - } - export interface DescribeVpnConnectionsRequest { - /** - * One or more filters. customer-gateway-configuration - The configuration information for the customer gateway. customer-gateway-id - The ID of a customer gateway associated with the VPN connection. state - The state of the VPN connection (pending | available | deleting | deleted). option.static-routes-only - Indicates whether the connection has static routes only. Used for devices that do not support Border Gateway Protocol (BGP). route.destination-cidr-block - The destination CIDR block. This corresponds to the subnet used in a customer data center. bgp-asn - The BGP Autonomous System Number (ASN) associated with a BGP device. tag:key=value - The key/value combination of a tag assigned to the resource. Specify the key of the tag in the filter name and the value of the tag in the filter value. For example, for the tag Purpose=X, specify tag:Purpose for the filter name and X for the filter value. tag-key - The key of a tag assigned to the resource. This filter is independent of the tag-value filter. For example, if you use both the filter "tag-key=Purpose" and the filter "tag-value=X", you get any resources assigned both the tag key Purpose (regardless of what the tag's value is), and the tag value X (regardless of what the tag's key is). If you want to list only resources where Purpose is X, see the tag:key=value filter. tag-value - The value of a tag assigned to the resource. This filter is independent of the tag-key filter. type - The type of VPN connection. Currently the only supported type is ipsec.1. vpn-connection-id - The ID of the VPN connection. vpn-gateway-id - The ID of a virtual private gateway associated with the VPN connection. - */ - Filters?: FilterList; - /** - * One or more VPN connection IDs. Default: Describes your VPN connections. - */ - VpnConnectionIds?: VpnConnectionIdStringList; - /** - * Checks whether you have the required permissions for the action, without actually making the request, and provides an error response. If you have the required permissions, the error response is DryRunOperation. Otherwise, it is UnauthorizedOperation. - */ - DryRun?: Boolean; - } - export interface DescribeVpnConnectionsResult { - /** - * Information about one or more VPN connections. - */ - VpnConnections?: VpnConnectionList; - } - export interface DescribeVpnGatewaysRequest { - /** - * One or more filters. amazon-side-asn - The Autonomous System Number (ASN) for the Amazon side of the gateway. attachment.state - The current state of the attachment between the gateway and the VPC (attaching | attached | detaching | detached). attachment.vpc-id - The ID of an attached VPC. availability-zone - The Availability Zone for the virtual private gateway (if applicable). state - The state of the virtual private gateway (pending | available | deleting | deleted). tag:key=value - The key/value combination of a tag assigned to the resource. Specify the key of the tag in the filter name and the value of the tag in the filter value. For example, for the tag Purpose=X, specify tag:Purpose for the filter name and X for the filter value. tag-key - The key of a tag assigned to the resource. This filter is independent of the tag-value filter. For example, if you use both the filter "tag-key=Purpose" and the filter "tag-value=X", you get any resources assigned both the tag key Purpose (regardless of what the tag's value is), and the tag value X (regardless of what the tag's key is). If you want to list only resources where Purpose is X, see the tag:key=value filter. tag-value - The value of a tag assigned to the resource. This filter is independent of the tag-key filter. type - The type of virtual private gateway. Currently the only supported type is ipsec.1. vpn-gateway-id - The ID of the virtual private gateway. - */ - Filters?: FilterList; - /** - * One or more virtual private gateway IDs. Default: Describes all your virtual private gateways. - */ - VpnGatewayIds?: VpnGatewayIdStringList; - /** - * Checks whether you have the required permissions for the action, without actually making the request, and provides an error response. If you have the required permissions, the error response is DryRunOperation. Otherwise, it is UnauthorizedOperation. - */ - DryRun?: Boolean; - } - export interface DescribeVpnGatewaysResult { - /** - * Information about one or more virtual private gateways. - */ - VpnGateways?: VpnGatewayList; - } - export interface DetachClassicLinkVpcRequest { - /** - * Checks whether you have the required permissions for the action, without actually making the request, and provides an error response. If you have the required permissions, the error response is DryRunOperation. Otherwise, it is UnauthorizedOperation. - */ - DryRun?: Boolean; - /** - * The ID of the instance to unlink from the VPC. - */ - InstanceId: String; - /** - * The ID of the VPC to which the instance is linked. - */ - VpcId: String; - } - export interface DetachClassicLinkVpcResult { - /** - * Returns true if the request succeeds; otherwise, it returns an error. - */ - Return?: Boolean; - } - export interface DetachInternetGatewayRequest { - /** - * Checks whether you have the required permissions for the action, without actually making the request, and provides an error response. If you have the required permissions, the error response is DryRunOperation. Otherwise, it is UnauthorizedOperation. - */ - DryRun?: Boolean; - /** - * The ID of the Internet gateway. - */ - InternetGatewayId: String; - /** - * The ID of the VPC. - */ - VpcId: String; - } - export interface DetachNetworkInterfaceRequest { - /** - * The ID of the attachment. - */ - AttachmentId: String; - /** - * Checks whether you have the required permissions for the action, without actually making the request, and provides an error response. If you have the required permissions, the error response is DryRunOperation. Otherwise, it is UnauthorizedOperation. - */ - DryRun?: Boolean; - /** - * Specifies whether to force a detachment. - */ - Force?: Boolean; - } - export interface DetachVolumeRequest { - /** - * The device name. - */ - Device?: String; - /** - * Forces detachment if the previous detachment attempt did not occur cleanly (for example, logging into an instance, unmounting the volume, and detaching normally). This option can lead to data loss or a corrupted file system. Use this option only as a last resort to detach a volume from a failed instance. The instance won't have an opportunity to flush file system caches or file system metadata. If you use this option, you must perform file system check and repair procedures. - */ - Force?: Boolean; - /** - * The ID of the instance. - */ - InstanceId?: String; - /** - * The ID of the volume. - */ - VolumeId: String; - /** - * Checks whether you have the required permissions for the action, without actually making the request, and provides an error response. If you have the required permissions, the error response is DryRunOperation. Otherwise, it is UnauthorizedOperation. - */ - DryRun?: Boolean; - } - export interface DetachVpnGatewayRequest { - /** - * The ID of the VPC. - */ - VpcId: String; - /** - * The ID of the virtual private gateway. - */ - VpnGatewayId: String; - /** - * Checks whether you have the required permissions for the action, without actually making the request, and provides an error response. If you have the required permissions, the error response is DryRunOperation. Otherwise, it is UnauthorizedOperation. - */ - DryRun?: Boolean; - } - export type DeviceType = "ebs"|"instance-store"|string; - export interface DhcpConfiguration { - /** - * The name of a DHCP option. - */ - Key?: String; - /** - * One or more values for the DHCP option. - */ - Values?: DhcpConfigurationValueList; - } - export type DhcpConfigurationList = DhcpConfiguration[]; - export type DhcpConfigurationValueList = AttributeValue[]; - export interface DhcpOptions { - /** - * One or more DHCP options in the set. - */ - DhcpConfigurations?: DhcpConfigurationList; - /** - * The ID of the set of DHCP options. - */ - DhcpOptionsId?: String; - /** - * Any tags assigned to the DHCP options set. - */ - Tags?: TagList; - } - export type DhcpOptionsIdStringList = String[]; - export type DhcpOptionsList = DhcpOptions[]; - export interface DisableVgwRoutePropagationRequest { - /** - * The ID of the virtual private gateway. - */ - GatewayId: String; - /** - * The ID of the route table. - */ - RouteTableId: String; - } - export interface DisableVpcClassicLinkDnsSupportRequest { - /** - * The ID of the VPC. - */ - VpcId?: String; - } - export interface DisableVpcClassicLinkDnsSupportResult { - /** - * Returns true if the request succeeds; otherwise, it returns an error. - */ - Return?: Boolean; - } - export interface DisableVpcClassicLinkRequest { - /** - * Checks whether you have the required permissions for the action, without actually making the request, and provides an error response. If you have the required permissions, the error response is DryRunOperation. Otherwise, it is UnauthorizedOperation. - */ - DryRun?: Boolean; - /** - * The ID of the VPC. - */ - VpcId: String; - } - export interface DisableVpcClassicLinkResult { - /** - * Returns true if the request succeeds; otherwise, it returns an error. - */ - Return?: Boolean; - } - export interface DisassociateAddressRequest { - /** - * [EC2-VPC] The association ID. Required for EC2-VPC. - */ - AssociationId?: String; - /** - * [EC2-Classic] The Elastic IP address. Required for EC2-Classic. - */ - PublicIp?: String; - /** - * Checks whether you have the required permissions for the action, without actually making the request, and provides an error response. If you have the required permissions, the error response is DryRunOperation. Otherwise, it is UnauthorizedOperation. - */ - DryRun?: Boolean; - } - export interface DisassociateIamInstanceProfileRequest { - /** - * The ID of the IAM instance profile association. - */ - AssociationId: String; - } - export interface DisassociateIamInstanceProfileResult { - /** - * Information about the IAM instance profile association. - */ - IamInstanceProfileAssociation?: IamInstanceProfileAssociation; - } - export interface DisassociateRouteTableRequest { - /** - * The association ID representing the current association between the route table and subnet. - */ - AssociationId: String; - /** - * Checks whether you have the required permissions for the action, without actually making the request, and provides an error response. If you have the required permissions, the error response is DryRunOperation. Otherwise, it is UnauthorizedOperation. - */ - DryRun?: Boolean; - } - export interface DisassociateSubnetCidrBlockRequest { - /** - * The association ID for the CIDR block. - */ - AssociationId: String; - } - export interface DisassociateSubnetCidrBlockResult { - /** - * Information about the IPv6 CIDR block association. - */ - Ipv6CidrBlockAssociation?: SubnetIpv6CidrBlockAssociation; - /** - * The ID of the subnet. - */ - SubnetId?: String; - } - export interface DisassociateVpcCidrBlockRequest { - /** - * The association ID for the CIDR block. - */ - AssociationId: String; - } - export interface DisassociateVpcCidrBlockResult { - /** - * Information about the IPv6 CIDR block association. - */ - Ipv6CidrBlockAssociation?: VpcIpv6CidrBlockAssociation; - /** - * Information about the IPv4 CIDR block association. - */ - CidrBlockAssociation?: VpcCidrBlockAssociation; - /** - * The ID of the VPC. - */ - VpcId?: String; - } - export interface DiskImage { - /** - * A description of the disk image. - */ - Description?: String; - /** - * Information about the disk image. - */ - Image?: DiskImageDetail; - /** - * Information about the volume. - */ - Volume?: VolumeDetail; - } - export interface DiskImageDescription { - /** - * The checksum computed for the disk image. - */ - Checksum?: String; - /** - * The disk image format. - */ - Format: DiskImageFormat; - /** - * A presigned URL for the import manifest stored in Amazon S3. For information about creating a presigned URL for an Amazon S3 object, read the "Query String Request Authentication Alternative" section of the Authenticating REST Requests topic in the Amazon Simple Storage Service Developer Guide. For information about the import manifest referenced by this API action, see VM Import Manifest. - */ - ImportManifestUrl: String; - /** - * The size of the disk image, in GiB. - */ - Size: Long; - } - export interface DiskImageDetail { - /** - * The size of the disk image, in GiB. - */ - Bytes: Long; - /** - * The disk image format. - */ - Format: DiskImageFormat; - /** - * A presigned URL for the import manifest stored in Amazon S3 and presented here as an Amazon S3 presigned URL. For information about creating a presigned URL for an Amazon S3 object, read the "Query String Request Authentication Alternative" section of the Authenticating REST Requests topic in the Amazon Simple Storage Service Developer Guide. For information about the import manifest referenced by this API action, see VM Import Manifest. - */ - ImportManifestUrl: String; - } - export type DiskImageFormat = "VMDK"|"RAW"|"VHD"|string; - export type DiskImageList = DiskImage[]; - export interface DiskImageVolumeDescription { - /** - * The volume identifier. - */ - Id: String; - /** - * The size of the volume, in GiB. - */ - Size?: Long; - } - export type DomainType = "vpc"|"standard"|string; - export type Double = number; - export interface EbsBlockDevice { - /** - * Indicates whether the EBS volume is encrypted. Encrypted Amazon EBS volumes may only be attached to instances that support Amazon EBS encryption. - */ - Encrypted?: Boolean; - /** - * Indicates whether the EBS volume is deleted on instance termination. - */ - DeleteOnTermination?: Boolean; - /** - * The number of I/O operations per second (IOPS) that the volume supports. For io1, this represents the number of IOPS that are provisioned for the volume. For gp2, this represents the baseline performance of the volume and the rate at which the volume accumulates I/O credits for bursting. For more information about General Purpose SSD baseline performance, I/O credits, and bursting, see Amazon EBS Volume Types in the Amazon Elastic Compute Cloud User Guide. Constraint: Range is 100-20000 IOPS for io1 volumes and 100-10000 IOPS for gp2 volumes. Condition: This parameter is required for requests to create io1 volumes; it is not used in requests to create gp2, st1, sc1, or standard volumes. - */ - Iops?: Integer; - /** - * The ID of the snapshot. - */ - SnapshotId?: String; - /** - * The size of the volume, in GiB. Constraints: 1-16384 for General Purpose SSD (gp2), 4-16384 for Provisioned IOPS SSD (io1), 500-16384 for Throughput Optimized HDD (st1), 500-16384 for Cold HDD (sc1), and 1-1024 for Magnetic (standard) volumes. If you specify a snapshot, the volume size must be equal to or larger than the snapshot size. Default: If you're creating the volume from a snapshot and don't specify a volume size, the default is the snapshot size. - */ - VolumeSize?: Integer; - /** - * The volume type: gp2, io1, st1, sc1, or standard. Default: standard - */ - VolumeType?: VolumeType; - } - export interface EbsInstanceBlockDevice { - /** - * The time stamp when the attachment initiated. - */ - AttachTime?: DateTime; - /** - * Indicates whether the volume is deleted on instance termination. - */ - DeleteOnTermination?: Boolean; - /** - * The attachment state. - */ - Status?: AttachmentStatus; - /** - * The ID of the EBS volume. - */ - VolumeId?: String; - } - export interface EbsInstanceBlockDeviceSpecification { - /** - * Indicates whether the volume is deleted on instance termination. - */ - DeleteOnTermination?: Boolean; - /** - * The ID of the EBS volume. - */ - VolumeId?: String; - } - export interface EgressOnlyInternetGateway { - /** - * Information about the attachment of the egress-only Internet gateway. - */ - Attachments?: InternetGatewayAttachmentList; - /** - * The ID of the egress-only Internet gateway. - */ - EgressOnlyInternetGatewayId?: EgressOnlyInternetGatewayId; - } - export type EgressOnlyInternetGatewayId = string; - export type EgressOnlyInternetGatewayIdList = EgressOnlyInternetGatewayId[]; - export type EgressOnlyInternetGatewayList = EgressOnlyInternetGateway[]; - export interface ElasticGpuAssociation { - /** - * The ID of the Elastic GPU. - */ - ElasticGpuId?: String; - /** - * The ID of the association. - */ - ElasticGpuAssociationId?: String; - /** - * The state of the association between the instance and the Elastic GPU. - */ - ElasticGpuAssociationState?: String; - /** - * The time the Elastic GPU was associated with the instance. - */ - ElasticGpuAssociationTime?: String; - } - export type ElasticGpuAssociationList = ElasticGpuAssociation[]; - export interface ElasticGpuHealth { - /** - * The health status. - */ - Status?: ElasticGpuStatus; - } - export type ElasticGpuIdSet = String[]; - export type ElasticGpuSet = ElasticGpus[]; - export interface ElasticGpuSpecification { - /** - * The type of Elastic GPU. - */ - Type: String; - } - export type ElasticGpuSpecifications = ElasticGpuSpecification[]; - export type ElasticGpuState = "ATTACHED"|string; - export type ElasticGpuStatus = "OK"|"IMPAIRED"|string; - export interface ElasticGpus { - /** - * The ID of the Elastic GPU. - */ - ElasticGpuId?: String; - /** - * The Availability Zone in the which the Elastic GPU resides. - */ - AvailabilityZone?: String; - /** - * The type of Elastic GPU. - */ - ElasticGpuType?: String; - /** - * The status of the Elastic GPU. - */ - ElasticGpuHealth?: ElasticGpuHealth; - /** - * The state of the Elastic GPU. - */ - ElasticGpuState?: ElasticGpuState; - /** - * The ID of the instance to which the Elastic GPU is attached. - */ - InstanceId?: String; - } - export interface EnableVgwRoutePropagationRequest { - /** - * The ID of the virtual private gateway. - */ - GatewayId: String; - /** - * The ID of the route table. - */ - RouteTableId: String; - } - export interface EnableVolumeIORequest { - /** - * Checks whether you have the required permissions for the action, without actually making the request, and provides an error response. If you have the required permissions, the error response is DryRunOperation. Otherwise, it is UnauthorizedOperation. - */ - DryRun?: Boolean; - /** - * The ID of the volume. - */ - VolumeId: String; - } - export interface EnableVpcClassicLinkDnsSupportRequest { - /** - * The ID of the VPC. - */ - VpcId?: String; - } - export interface EnableVpcClassicLinkDnsSupportResult { - /** - * Returns true if the request succeeds; otherwise, it returns an error. - */ - Return?: Boolean; - } - export interface EnableVpcClassicLinkRequest { - /** - * Checks whether you have the required permissions for the action, without actually making the request, and provides an error response. If you have the required permissions, the error response is DryRunOperation. Otherwise, it is UnauthorizedOperation. - */ - DryRun?: Boolean; - /** - * The ID of the VPC. - */ - VpcId: String; - } - export interface EnableVpcClassicLinkResult { - /** - * Returns true if the request succeeds; otherwise, it returns an error. - */ - Return?: Boolean; - } - export type EventCode = "instance-reboot"|"system-reboot"|"system-maintenance"|"instance-retirement"|"instance-stop"|string; - export interface EventInformation { - /** - * The description of the event. - */ - EventDescription?: String; - /** - * The event. The following are the error events. iamFleetRoleInvalid - The Spot fleet did not have the required permissions either to launch or terminate an instance. launchSpecTemporarilyBlacklisted - The configuration is not valid and several attempts to launch instances have failed. For more information, see the description of the event. spotFleetRequestConfigurationInvalid - The configuration is not valid. For more information, see the description of the event. spotInstanceCountLimitExceeded - You've reached the limit on the number of Spot instances that you can launch. The following are the fleetRequestChange events. active - The Spot fleet has been validated and Amazon EC2 is attempting to maintain the target number of running Spot instances. cancelled - The Spot fleet is canceled and has no running Spot instances. The Spot fleet will be deleted two days after its instances were terminated. cancelled_running - The Spot fleet is canceled and will not launch additional Spot instances, but its existing Spot instances continue to run until they are interrupted or terminated. cancelled_terminating - The Spot fleet is canceled and its Spot instances are terminating. expired - The Spot fleet request has expired. A subsequent event indicates that the instances were terminated, if the request was created with TerminateInstancesWithExpiration set. modify_in_progress - A request to modify the Spot fleet request was accepted and is in progress. modify_successful - The Spot fleet request was modified. price_update - The bid price for a launch configuration was adjusted because it was too high. This change is permanent. submitted - The Spot fleet request is being evaluated and Amazon EC2 is preparing to launch the target number of Spot instances. The following are the instanceChange events. launched - A bid was fulfilled and a new instance was launched. terminated - An instance was terminated by the user. - */ - EventSubType?: String; - /** - * The ID of the instance. This information is available only for instanceChange events. - */ - InstanceId?: String; - } - export type EventType = "instanceChange"|"fleetRequestChange"|"error"|string; - export type ExcessCapacityTerminationPolicy = "noTermination"|"default"|string; - export type ExecutableByStringList = String[]; - export type ExportEnvironment = "citrix"|"vmware"|"microsoft"|string; - export interface ExportTask { - /** - * A description of the resource being exported. - */ - Description?: String; - /** - * The ID of the export task. - */ - ExportTaskId?: String; - /** - * Information about the export task. - */ - ExportToS3Task?: ExportToS3Task; - /** - * Information about the instance to export. - */ - InstanceExportDetails?: InstanceExportDetails; - /** - * The state of the export task. - */ - State?: ExportTaskState; - /** - * The status message related to the export task. - */ - StatusMessage?: String; - } - export type ExportTaskIdStringList = String[]; - export type ExportTaskList = ExportTask[]; - export type ExportTaskState = "active"|"cancelling"|"cancelled"|"completed"|string; - export interface ExportToS3Task { - /** - * The container format used to combine disk images with metadata (such as OVF). If absent, only the disk image is exported. - */ - ContainerFormat?: ContainerFormat; - /** - * The format for the exported image. - */ - DiskImageFormat?: DiskImageFormat; - /** - * The S3 bucket for the destination image. The destination bucket must exist and grant WRITE and READ_ACP permissions to the AWS account vm-import-export@amazon.com. - */ - S3Bucket?: String; - /** - * The encryption key for your S3 bucket. - */ - S3Key?: String; - } - export interface ExportToS3TaskSpecification { - /** - * The container format used to combine disk images with metadata (such as OVF). If absent, only the disk image is exported. - */ - ContainerFormat?: ContainerFormat; - /** - * The format for the exported image. - */ - DiskImageFormat?: DiskImageFormat; - /** - * The S3 bucket for the destination image. The destination bucket must exist and grant WRITE and READ_ACP permissions to the AWS account vm-import-export@amazon.com. - */ - S3Bucket?: String; - /** - * The image is written to a single object in the S3 bucket at the S3 key s3prefix + exportTaskId + '.' + diskImageFormat. - */ - S3Prefix?: String; - } - export interface Filter { - /** - * The name of the filter. Filter names are case-sensitive. - */ - Name?: String; - /** - * One or more filter values. Filter values are case-sensitive. - */ - Values?: ValueStringList; - } - export type FilterList = Filter[]; - export type FleetType = "request"|"maintain"|string; - export type Float = number; - export interface FlowLog { - /** - * The date and time the flow log was created. - */ - CreationTime?: DateTime; - /** - * Information about the error that occurred. Rate limited indicates that CloudWatch logs throttling has been applied for one or more network interfaces, or that you've reached the limit on the number of CloudWatch Logs log groups that you can create. Access error indicates that the IAM role associated with the flow log does not have sufficient permissions to publish to CloudWatch Logs. Unknown error indicates an internal error. - */ - DeliverLogsErrorMessage?: String; - /** - * The ARN of the IAM role that posts logs to CloudWatch Logs. - */ - DeliverLogsPermissionArn?: String; - /** - * The status of the logs delivery (SUCCESS | FAILED). - */ - DeliverLogsStatus?: String; - /** - * The flow log ID. - */ - FlowLogId?: String; - /** - * The status of the flow log (ACTIVE). - */ - FlowLogStatus?: String; - /** - * The name of the flow log group. - */ - LogGroupName?: String; - /** - * The ID of the resource on which the flow log was created. - */ - ResourceId?: String; - /** - * The type of traffic captured for the flow log. - */ - TrafficType?: TrafficType; - } - export type FlowLogSet = FlowLog[]; - export type FlowLogsResourceType = "VPC"|"Subnet"|"NetworkInterface"|string; - export interface FpgaImage { - /** - * The FPGA image identifier (AFI ID). - */ - FpgaImageId?: String; - /** - * The global FPGA image identifier (AGFI ID). - */ - FpgaImageGlobalId?: String; - /** - * The name of the AFI. - */ - Name?: String; - /** - * The description of the AFI. - */ - Description?: String; - /** - * The version of the AWS Shell that was used to create the bitstream. - */ - ShellVersion?: String; - /** - * Information about the PCI bus. - */ - PciId?: PciId; - /** - * Information about the state of the AFI. - */ - State?: FpgaImageState; - /** - * The date and time the AFI was created. - */ - CreateTime?: DateTime; - /** - * The time of the most recent update to the AFI. - */ - UpdateTime?: DateTime; - /** - * The AWS account ID of the AFI owner. - */ - OwnerId?: String; - /** - * The alias of the AFI owner. Possible values include self, amazon, and aws-marketplace. - */ - OwnerAlias?: String; - /** - * The product codes for the AFI. - */ - ProductCodes?: ProductCodeList; - /** - * Any tags assigned to the AFI. - */ - Tags?: TagList; - /** - * Indicates whether the AFI is public. - */ - Public?: Boolean; - } - export interface FpgaImageAttribute { - /** - * The ID of the AFI. - */ - FpgaImageId?: String; - /** - * The name of the AFI. - */ - Name?: String; - /** - * The description of the AFI. - */ - Description?: String; - /** - * One or more load permissions. - */ - LoadPermissions?: LoadPermissionList; - /** - * One or more product codes. - */ - ProductCodes?: ProductCodeList; - } - export type FpgaImageAttributeName = "description"|"name"|"loadPermission"|"productCodes"|string; - export type FpgaImageIdList = String[]; - export type FpgaImageList = FpgaImage[]; - export interface FpgaImageState { - /** - * The state. The following are the possible values: pending - AFI bitstream generation is in progress. available - The AFI is available for use. failed - AFI bitstream generation failed. unavailable - The AFI is no longer available for use. - */ - Code?: FpgaImageStateCode; - /** - * If the state is failed, this is the error message. - */ - Message?: String; - } - export type FpgaImageStateCode = "pending"|"failed"|"available"|"unavailable"|string; - export type GatewayType = "ipsec.1"|string; - export interface GetConsoleOutputRequest { - /** - * The ID of the instance. - */ - InstanceId: String; - /** - * Checks whether you have the required permissions for the action, without actually making the request, and provides an error response. If you have the required permissions, the error response is DryRunOperation. Otherwise, it is UnauthorizedOperation. - */ - DryRun?: Boolean; - } - export interface GetConsoleOutputResult { - /** - * The ID of the instance. - */ - InstanceId?: String; - /** - * The console output, Base64-encoded. If using a command line tool, the tool decodes the output for you. - */ - Output?: String; - /** - * The time the output was last updated. - */ - Timestamp?: DateTime; - } - export interface GetConsoleScreenshotRequest { - /** - * Checks whether you have the required permissions for the action, without actually making the request, and provides an error response. If you have the required permissions, the error response is DryRunOperation. Otherwise, it is UnauthorizedOperation. - */ - DryRun?: Boolean; - /** - * The ID of the instance. - */ - InstanceId: String; - /** - * When set to true, acts as keystroke input and wakes up an instance that's in standby or "sleep" mode. - */ - WakeUp?: Boolean; - } - export interface GetConsoleScreenshotResult { - /** - * The data that comprises the image. - */ - ImageData?: String; - /** - * The ID of the instance. - */ - InstanceId?: String; - } - export interface GetHostReservationPurchasePreviewRequest { - /** - * The ID/s of the Dedicated Host/s that the reservation will be associated with. - */ - HostIdSet: RequestHostIdSet; - /** - * The offering ID of the reservation. - */ - OfferingId: String; - } - export interface GetHostReservationPurchasePreviewResult { - /** - * The currency in which the totalUpfrontPrice and totalHourlyPrice amounts are specified. At this time, the only supported currency is USD. - */ - CurrencyCode?: CurrencyCodeValues; - /** - * The purchase information of the Dedicated Host Reservation and the Dedicated Hosts associated with it. - */ - Purchase?: PurchaseSet; - /** - * The potential total hourly price of the reservation per hour. - */ - TotalHourlyPrice?: String; - /** - * The potential total upfront price. This is billed immediately. - */ - TotalUpfrontPrice?: String; - } - export interface GetPasswordDataRequest { - /** - * The ID of the Windows instance. - */ - InstanceId: String; - /** - * Checks whether you have the required permissions for the action, without actually making the request, and provides an error response. If you have the required permissions, the error response is DryRunOperation. Otherwise, it is UnauthorizedOperation. - */ - DryRun?: Boolean; - } - export interface GetPasswordDataResult { - /** - * The ID of the Windows instance. - */ - InstanceId?: String; - /** - * The password of the instance. Returns an empty string if the password is not available. - */ - PasswordData?: String; - /** - * The time the data was last updated. - */ - Timestamp?: DateTime; - } - export interface GetReservedInstancesExchangeQuoteRequest { - /** - * Checks whether you have the required permissions for the action, without actually making the request, and provides an error response. If you have the required permissions, the error response is DryRunOperation. Otherwise, it is UnauthorizedOperation. - */ - DryRun?: Boolean; - /** - * The IDs of the Convertible Reserved Instances to exchange. - */ - ReservedInstanceIds: ReservedInstanceIdSet; - /** - * The configuration requirements of the Convertible Reserved Instances to exchange for your current Convertible Reserved Instances. - */ - TargetConfigurations?: TargetConfigurationRequestSet; - } - export interface GetReservedInstancesExchangeQuoteResult { - /** - * The currency of the transaction. - */ - CurrencyCode?: String; - /** - * If true, the exchange is valid. If false, the exchange cannot be completed. - */ - IsValidExchange?: Boolean; - /** - * The new end date of the reservation term. - */ - OutputReservedInstancesWillExpireAt?: DateTime; - /** - * The total true upfront charge for the exchange. - */ - PaymentDue?: String; - /** - * The cost associated with the Reserved Instance. - */ - ReservedInstanceValueRollup?: ReservationValue; - /** - * The configuration of your Convertible Reserved Instances. - */ - ReservedInstanceValueSet?: ReservedInstanceReservationValueSet; - /** - * The cost associated with the Reserved Instance. - */ - TargetConfigurationValueRollup?: ReservationValue; - /** - * The values of the target Convertible Reserved Instances. - */ - TargetConfigurationValueSet?: TargetReservationValueSet; - /** - * Describes the reason why the exchange cannot be completed. - */ - ValidationFailureReason?: String; - } - export type GroupIdStringList = String[]; - export interface GroupIdentifier { - /** - * The name of the security group. - */ - GroupName?: String; - /** - * The ID of the security group. - */ - GroupId?: String; - } - export type GroupIdentifierList = GroupIdentifier[]; - export type GroupIds = String[]; - export type GroupNameStringList = String[]; - export interface HistoryRecord { - /** - * Information about the event. - */ - EventInformation: EventInformation; - /** - * The event type. error - Indicates an error with the Spot fleet request. fleetRequestChange - Indicates a change in the status or configuration of the Spot fleet request. instanceChange - Indicates that an instance was launched or terminated. - */ - EventType: EventType; - /** - * The date and time of the event, in UTC format (for example, YYYY-MM-DDTHH:MM:SSZ). - */ - Timestamp: DateTime; - } - export type HistoryRecords = HistoryRecord[]; - export interface Host { - /** - * Whether auto-placement is on or off. - */ - AutoPlacement?: AutoPlacement; - /** - * The Availability Zone of the Dedicated Host. - */ - AvailabilityZone?: String; - /** - * The number of new instances that can be launched onto the Dedicated Host. - */ - AvailableCapacity?: AvailableCapacity; - /** - * Unique, case-sensitive identifier you provide to ensure idempotency of the request. For more information, see How to Ensure Idempotency in the Amazon Elastic Compute Cloud User Guide. - */ - ClientToken?: String; - /** - * The ID of the Dedicated Host. - */ - HostId?: String; - /** - * The hardware specifications of the Dedicated Host. - */ - HostProperties?: HostProperties; - /** - * The reservation ID of the Dedicated Host. This returns a null response if the Dedicated Host doesn't have an associated reservation. - */ - HostReservationId?: String; - /** - * The IDs and instance type that are currently running on the Dedicated Host. - */ - Instances?: HostInstanceList; - /** - * The Dedicated Host's state. - */ - State?: AllocationState; - } - export interface HostInstance { - /** - * the IDs of instances that are running on the Dedicated Host. - */ - InstanceId?: String; - /** - * The instance type size (for example, m3.medium) of the running instance. - */ - InstanceType?: String; - } - export type HostInstanceList = HostInstance[]; - export type HostList = Host[]; - export interface HostOffering { - /** - * The currency of the offering. - */ - CurrencyCode?: CurrencyCodeValues; - /** - * The duration of the offering (in seconds). - */ - Duration?: Integer; - /** - * The hourly price of the offering. - */ - HourlyPrice?: String; - /** - * The instance family of the offering. - */ - InstanceFamily?: String; - /** - * The ID of the offering. - */ - OfferingId?: String; - /** - * The available payment option. - */ - PaymentOption?: PaymentOption; - /** - * The upfront price of the offering. Does not apply to No Upfront offerings. - */ - UpfrontPrice?: String; - } - export type HostOfferingSet = HostOffering[]; - export interface HostProperties { - /** - * The number of cores on the Dedicated Host. - */ - Cores?: Integer; - /** - * The instance type size that the Dedicated Host supports (for example, m3.medium). - */ - InstanceType?: String; - /** - * The number of sockets on the Dedicated Host. - */ - Sockets?: Integer; - /** - * The number of vCPUs on the Dedicated Host. - */ - TotalVCpus?: Integer; - } - export interface HostReservation { - /** - * The number of Dedicated Hosts the reservation is associated with. - */ - Count?: Integer; - /** - * The currency in which the upfrontPrice and hourlyPrice amounts are specified. At this time, the only supported currency is USD. - */ - CurrencyCode?: CurrencyCodeValues; - /** - * The length of the reservation's term, specified in seconds. Can be 31536000 (1 year) | 94608000 (3 years). - */ - Duration?: Integer; - /** - * The date and time that the reservation ends. - */ - End?: DateTime; - /** - * The IDs of the Dedicated Hosts associated with the reservation. - */ - HostIdSet?: ResponseHostIdSet; - /** - * The ID of the reservation that specifies the associated Dedicated Hosts. - */ - HostReservationId?: String; - /** - * The hourly price of the reservation. - */ - HourlyPrice?: String; - /** - * The instance family of the Dedicated Host Reservation. The instance family on the Dedicated Host must be the same in order for it to benefit from the reservation. - */ - InstanceFamily?: String; - /** - * The ID of the reservation. This remains the same regardless of which Dedicated Hosts are associated with it. - */ - OfferingId?: String; - /** - * The payment option selected for this reservation. - */ - PaymentOption?: PaymentOption; - /** - * The date and time that the reservation started. - */ - Start?: DateTime; - /** - * The state of the reservation. - */ - State?: ReservationState; - /** - * The upfront price of the reservation. - */ - UpfrontPrice?: String; - } - export type HostReservationIdSet = String[]; - export type HostReservationSet = HostReservation[]; - export type HostTenancy = "dedicated"|"host"|string; - export type HypervisorType = "ovm"|"xen"|string; - export interface IamInstanceProfile { - /** - * The Amazon Resource Name (ARN) of the instance profile. - */ - Arn?: String; - /** - * The ID of the instance profile. - */ - Id?: String; - } - export interface IamInstanceProfileAssociation { - /** - * The ID of the association. - */ - AssociationId?: String; - /** - * The ID of the instance. - */ - InstanceId?: String; - /** - * The IAM instance profile. - */ - IamInstanceProfile?: IamInstanceProfile; - /** - * The state of the association. - */ - State?: IamInstanceProfileAssociationState; - /** - * The time the IAM instance profile was associated with the instance. - */ - Timestamp?: DateTime; - } - export type IamInstanceProfileAssociationSet = IamInstanceProfileAssociation[]; - export type IamInstanceProfileAssociationState = "associating"|"associated"|"disassociating"|"disassociated"|string; - export interface IamInstanceProfileSpecification { - /** - * The Amazon Resource Name (ARN) of the instance profile. - */ - Arn?: String; - /** - * The name of the instance profile. - */ - Name?: String; - } - export interface IcmpTypeCode { - /** - * The ICMP code. A value of -1 means all codes for the specified ICMP type. - */ - Code?: Integer; - /** - * The ICMP type. A value of -1 means all types. - */ - Type?: Integer; - } - export interface IdFormat { - /** - * The date in UTC at which you are permanently switched over to using longer IDs. If a deadline is not yet available for this resource type, this field is not returned. - */ - Deadline?: DateTime; - /** - * The type of resource. - */ - Resource?: String; - /** - * Indicates whether longer IDs (17-character IDs) are enabled for the resource. - */ - UseLongIds?: Boolean; - } - export type IdFormatList = IdFormat[]; - export interface Image { - /** - * The architecture of the image. - */ - Architecture?: ArchitectureValues; - /** - * The date and time the image was created. - */ - CreationDate?: String; - /** - * The ID of the AMI. - */ - ImageId?: String; - /** - * The location of the AMI. - */ - ImageLocation?: String; - /** - * The type of image. - */ - ImageType?: ImageTypeValues; - /** - * Indicates whether the image has public launch permissions. The value is true if this image has public launch permissions or false if it has only implicit and explicit launch permissions. - */ - Public?: Boolean; - /** - * The kernel associated with the image, if any. Only applicable for machine images. - */ - KernelId?: String; - /** - * The AWS account ID of the image owner. - */ - OwnerId?: String; - /** - * The value is Windows for Windows AMIs; otherwise blank. - */ - Platform?: PlatformValues; - /** - * Any product codes associated with the AMI. - */ - ProductCodes?: ProductCodeList; - /** - * The RAM disk associated with the image, if any. Only applicable for machine images. - */ - RamdiskId?: String; - /** - * The current state of the AMI. If the state is available, the image is successfully registered and can be used to launch an instance. - */ - State?: ImageState; - /** - * Any block device mapping entries. - */ - BlockDeviceMappings?: BlockDeviceMappingList; - /** - * The description of the AMI that was provided during image creation. - */ - Description?: String; - /** - * Specifies whether enhanced networking with ENA is enabled. - */ - EnaSupport?: Boolean; - /** - * The hypervisor type of the image. - */ - Hypervisor?: HypervisorType; - /** - * The AWS account alias (for example, amazon, self) or the AWS account ID of the AMI owner. - */ - ImageOwnerAlias?: String; - /** - * The name of the AMI that was provided during image creation. - */ - Name?: String; - /** - * The device name of the root device (for example, /dev/sda1 or /dev/xvda). - */ - RootDeviceName?: String; - /** - * The type of root device used by the AMI. The AMI can use an EBS volume or an instance store volume. - */ - RootDeviceType?: DeviceType; - /** - * Specifies whether enhanced networking with the Intel 82599 Virtual Function interface is enabled. - */ - SriovNetSupport?: String; - /** - * The reason for the state change. - */ - StateReason?: StateReason; - /** - * Any tags assigned to the image. - */ - Tags?: TagList; - /** - * The type of virtualization of the AMI. - */ - VirtualizationType?: VirtualizationType; - } - export interface ImageAttribute { - /** - * One or more block device mapping entries. - */ - BlockDeviceMappings?: BlockDeviceMappingList; - /** - * The ID of the AMI. - */ - ImageId?: String; - /** - * One or more launch permissions. - */ - LaunchPermissions?: LaunchPermissionList; - /** - * One or more product codes. - */ - ProductCodes?: ProductCodeList; - /** - * A description for the AMI. - */ - Description?: AttributeValue; - /** - * The kernel ID. - */ - KernelId?: AttributeValue; - /** - * The RAM disk ID. - */ - RamdiskId?: AttributeValue; - /** - * Indicates whether enhanced networking with the Intel 82599 Virtual Function interface is enabled. - */ - SriovNetSupport?: AttributeValue; - } - export type ImageAttributeName = "description"|"kernel"|"ramdisk"|"launchPermission"|"productCodes"|"blockDeviceMapping"|"sriovNetSupport"|string; - export interface ImageDiskContainer { - /** - * The description of the disk image. - */ - Description?: String; - /** - * The block device mapping for the disk. - */ - DeviceName?: String; - /** - * The format of the disk image being imported. Valid values: RAW | VHD | VMDK | OVA - */ - Format?: String; - /** - * The ID of the EBS snapshot to be used for importing the snapshot. - */ - SnapshotId?: String; - /** - * The URL to the Amazon S3-based disk image being imported. The URL can either be a https URL (https://..) or an Amazon S3 URL (s3://..) - */ - Url?: String; - /** - * The S3 bucket for the disk image. - */ - UserBucket?: UserBucket; - } - export type ImageDiskContainerList = ImageDiskContainer[]; - export type ImageIdStringList = String[]; - export type ImageList = Image[]; - export type ImageState = "pending"|"available"|"invalid"|"deregistered"|"transient"|"failed"|"error"|string; - export type ImageTypeValues = "machine"|"kernel"|"ramdisk"|string; - export interface ImportImageRequest { - /** - * The architecture of the virtual machine. Valid values: i386 | x86_64 - */ - Architecture?: String; - /** - * The client-specific data. - */ - ClientData?: ClientData; - /** - * The token to enable idempotency for VM import requests. - */ - ClientToken?: String; - /** - * A description string for the import image task. - */ - Description?: String; - /** - * Information about the disk containers. - */ - DiskContainers?: ImageDiskContainerList; - /** - * Checks whether you have the required permissions for the action, without actually making the request, and provides an error response. If you have the required permissions, the error response is DryRunOperation. Otherwise, it is UnauthorizedOperation. - */ - DryRun?: Boolean; - /** - * The target hypervisor platform. Valid values: xen - */ - Hypervisor?: String; - /** - * The license type to be used for the Amazon Machine Image (AMI) after importing. Note: You may only use BYOL if you have existing licenses with rights to use these licenses in a third party cloud like AWS. For more information, see Prerequisites in the VM Import/Export User Guide. Valid values: AWS | BYOL - */ - LicenseType?: String; - /** - * The operating system of the virtual machine. Valid values: Windows | Linux - */ - Platform?: String; - /** - * The name of the role to use when not using the default role, 'vmimport'. - */ - RoleName?: String; - } - export interface ImportImageResult { - /** - * The architecture of the virtual machine. - */ - Architecture?: String; - /** - * A description of the import task. - */ - Description?: String; - /** - * The target hypervisor of the import task. - */ - Hypervisor?: String; - /** - * The ID of the Amazon Machine Image (AMI) created by the import task. - */ - ImageId?: String; - /** - * The task ID of the import image task. - */ - ImportTaskId?: String; - /** - * The license type of the virtual machine. - */ - LicenseType?: String; - /** - * The operating system of the virtual machine. - */ - Platform?: String; - /** - * The progress of the task. - */ - Progress?: String; - /** - * Information about the snapshots. - */ - SnapshotDetails?: SnapshotDetailList; - /** - * A brief status of the task. - */ - Status?: String; - /** - * A detailed status message of the import task. - */ - StatusMessage?: String; - } - export interface ImportImageTask { - /** - * The architecture of the virtual machine. Valid values: i386 | x86_64 - */ - Architecture?: String; - /** - * A description of the import task. - */ - Description?: String; - /** - * The target hypervisor for the import task. Valid values: xen - */ - Hypervisor?: String; - /** - * The ID of the Amazon Machine Image (AMI) of the imported virtual machine. - */ - ImageId?: String; - /** - * The ID of the import image task. - */ - ImportTaskId?: String; - /** - * The license type of the virtual machine. - */ - LicenseType?: String; - /** - * The description string for the import image task. - */ - Platform?: String; - /** - * The percentage of progress of the import image task. - */ - Progress?: String; - /** - * Information about the snapshots. - */ - SnapshotDetails?: SnapshotDetailList; - /** - * A brief status for the import image task. - */ - Status?: String; - /** - * A descriptive status message for the import image task. - */ - StatusMessage?: String; - } - export type ImportImageTaskList = ImportImageTask[]; - export interface ImportInstanceLaunchSpecification { - /** - * Reserved. - */ - AdditionalInfo?: String; - /** - * The architecture of the instance. - */ - Architecture?: ArchitectureValues; - /** - * One or more security group IDs. - */ - GroupIds?: SecurityGroupIdStringList; - /** - * One or more security group names. - */ - GroupNames?: SecurityGroupStringList; - /** - * Indicates whether an instance stops or terminates when you initiate shutdown from the instance (using the operating system command for system shutdown). - */ - InstanceInitiatedShutdownBehavior?: ShutdownBehavior; - /** - * The instance type. For more information about the instance types that you can import, see Instance Types in the VM Import/Export User Guide. - */ - InstanceType?: InstanceType; - /** - * Indicates whether monitoring is enabled. - */ - Monitoring?: Boolean; - /** - * The placement information for the instance. - */ - Placement?: Placement; - /** - * [EC2-VPC] An available IP address from the IP address range of the subnet. - */ - PrivateIpAddress?: String; - /** - * [EC2-VPC] The ID of the subnet in which to launch the instance. - */ - SubnetId?: String; - /** - * The user data to make available to the instance. If you are using an AWS SDK or command line tool, Base64-encoding is performed for you, and you can load the text from a file. Otherwise, you must provide Base64-encoded text. - */ - UserData?: UserData; - } - export interface ImportInstanceRequest { - /** - * A description for the instance being imported. - */ - Description?: String; - /** - * The disk image. - */ - DiskImages?: DiskImageList; - /** - * Checks whether you have the required permissions for the action, without actually making the request, and provides an error response. If you have the required permissions, the error response is DryRunOperation. Otherwise, it is UnauthorizedOperation. - */ - DryRun?: Boolean; - /** - * The launch specification. - */ - LaunchSpecification?: ImportInstanceLaunchSpecification; - /** - * The instance operating system. - */ - Platform: PlatformValues; - } - export interface ImportInstanceResult { - /** - * Information about the conversion task. - */ - ConversionTask?: ConversionTask; - } - export interface ImportInstanceTaskDetails { - /** - * A description of the task. - */ - Description?: String; - /** - * The ID of the instance. - */ - InstanceId?: String; - /** - * The instance operating system. - */ - Platform?: PlatformValues; - /** - * One or more volumes. - */ - Volumes: ImportInstanceVolumeDetailSet; - } - export interface ImportInstanceVolumeDetailItem { - /** - * The Availability Zone where the resulting instance will reside. - */ - AvailabilityZone: String; - /** - * The number of bytes converted so far. - */ - BytesConverted: Long; - /** - * A description of the task. - */ - Description?: String; - /** - * The image. - */ - Image: DiskImageDescription; - /** - * The status of the import of this particular disk image. - */ - Status: String; - /** - * The status information or errors related to the disk image. - */ - StatusMessage?: String; - /** - * The volume. - */ - Volume: DiskImageVolumeDescription; - } - export type ImportInstanceVolumeDetailSet = ImportInstanceVolumeDetailItem[]; - export interface ImportKeyPairRequest { - /** - * Checks whether you have the required permissions for the action, without actually making the request, and provides an error response. If you have the required permissions, the error response is DryRunOperation. Otherwise, it is UnauthorizedOperation. - */ - DryRun?: Boolean; - /** - * A unique name for the key pair. - */ - KeyName: String; - /** - * The public key. For API calls, the text must be base64-encoded. For command line tools, base64 encoding is performed for you. - */ - PublicKeyMaterial: _Blob; - } - export interface ImportKeyPairResult { - /** - * The MD5 public key fingerprint as specified in section 4 of RFC 4716. - */ - KeyFingerprint?: String; - /** - * The key pair name you provided. - */ - KeyName?: String; - } - export interface ImportSnapshotRequest { - /** - * The client-specific data. - */ - ClientData?: ClientData; - /** - * Token to enable idempotency for VM import requests. - */ - ClientToken?: String; - /** - * The description string for the import snapshot task. - */ - Description?: String; - /** - * Information about the disk container. - */ - DiskContainer?: SnapshotDiskContainer; - /** - * Checks whether you have the required permissions for the action, without actually making the request, and provides an error response. If you have the required permissions, the error response is DryRunOperation. Otherwise, it is UnauthorizedOperation. - */ - DryRun?: Boolean; - /** - * The name of the role to use when not using the default role, 'vmimport'. - */ - RoleName?: String; - } - export interface ImportSnapshotResult { - /** - * A description of the import snapshot task. - */ - Description?: String; - /** - * The ID of the import snapshot task. - */ - ImportTaskId?: String; - /** - * Information about the import snapshot task. - */ - SnapshotTaskDetail?: SnapshotTaskDetail; - } - export interface ImportSnapshotTask { - /** - * A description of the import snapshot task. - */ - Description?: String; - /** - * The ID of the import snapshot task. - */ - ImportTaskId?: String; - /** - * Describes an import snapshot task. - */ - SnapshotTaskDetail?: SnapshotTaskDetail; - } - export type ImportSnapshotTaskList = ImportSnapshotTask[]; - export type ImportTaskIdList = String[]; - export interface ImportVolumeRequest { - /** - * The Availability Zone for the resulting EBS volume. - */ - AvailabilityZone: String; - /** - * A description of the volume. - */ - Description?: String; - /** - * Checks whether you have the required permissions for the action, without actually making the request, and provides an error response. If you have the required permissions, the error response is DryRunOperation. Otherwise, it is UnauthorizedOperation. - */ - DryRun?: Boolean; - /** - * The disk image. - */ - Image: DiskImageDetail; - /** - * The volume size. - */ - Volume: VolumeDetail; - } - export interface ImportVolumeResult { - /** - * Information about the conversion task. - */ - ConversionTask?: ConversionTask; - } - export interface ImportVolumeTaskDetails { - /** - * The Availability Zone where the resulting volume will reside. - */ - AvailabilityZone: String; - /** - * The number of bytes converted so far. - */ - BytesConverted: Long; - /** - * The description you provided when starting the import volume task. - */ - Description?: String; - /** - * The image. - */ - Image: DiskImageDescription; - /** - * The volume. - */ - Volume: DiskImageVolumeDescription; - } - export interface Instance { - /** - * The AMI launch index, which can be used to find this instance in the launch group. - */ - AmiLaunchIndex?: Integer; - /** - * The ID of the AMI used to launch the instance. - */ - ImageId?: String; - /** - * The ID of the instance. - */ - InstanceId?: String; - /** - * The instance type. - */ - InstanceType?: InstanceType; - /** - * The kernel associated with this instance, if applicable. - */ - KernelId?: String; - /** - * The name of the key pair, if this instance was launched with an associated key pair. - */ - KeyName?: String; - /** - * The time the instance was launched. - */ - LaunchTime?: DateTime; - /** - * The monitoring for the instance. - */ - Monitoring?: Monitoring; - /** - * The location where the instance launched, if applicable. - */ - Placement?: Placement; - /** - * The value is Windows for Windows instances; otherwise blank. - */ - Platform?: PlatformValues; - /** - * (IPv4 only) The private DNS hostname name assigned to the instance. This DNS hostname can only be used inside the Amazon EC2 network. This name is not available until the instance enters the running state. [EC2-VPC] The Amazon-provided DNS server resolves Amazon-provided private DNS hostnames if you've enabled DNS resolution and DNS hostnames in your VPC. If you are not using the Amazon-provided DNS server in your VPC, your custom domain name servers must resolve the hostname as appropriate. - */ - PrivateDnsName?: String; - /** - * The private IPv4 address assigned to the instance. - */ - PrivateIpAddress?: String; - /** - * The product codes attached to this instance, if applicable. - */ - ProductCodes?: ProductCodeList; - /** - * (IPv4 only) The public DNS name assigned to the instance. This name is not available until the instance enters the running state. For EC2-VPC, this name is only available if you've enabled DNS hostnames for your VPC. - */ - PublicDnsName?: String; - /** - * The public IPv4 address assigned to the instance, if applicable. - */ - PublicIpAddress?: String; - /** - * The RAM disk associated with this instance, if applicable. - */ - RamdiskId?: String; - /** - * The current state of the instance. - */ - State?: InstanceState; - /** - * The reason for the most recent state transition. This might be an empty string. - */ - StateTransitionReason?: String; - /** - * [EC2-VPC] The ID of the subnet in which the instance is running. - */ - SubnetId?: String; - /** - * [EC2-VPC] The ID of the VPC in which the instance is running. - */ - VpcId?: String; - /** - * The architecture of the image. - */ - Architecture?: ArchitectureValues; - /** - * Any block device mapping entries for the instance. - */ - BlockDeviceMappings?: InstanceBlockDeviceMappingList; - /** - * The idempotency token you provided when you launched the instance, if applicable. - */ - ClientToken?: String; - /** - * Indicates whether the instance is optimized for Amazon EBS I/O. This optimization provides dedicated throughput to Amazon EBS and an optimized configuration stack to provide optimal I/O performance. This optimization isn't available with all instance types. Additional usage charges apply when using an EBS Optimized instance. - */ - EbsOptimized?: Boolean; - /** - * Specifies whether enhanced networking with ENA is enabled. - */ - EnaSupport?: Boolean; - /** - * The hypervisor type of the instance. - */ - Hypervisor?: HypervisorType; - /** - * The IAM instance profile associated with the instance, if applicable. - */ - IamInstanceProfile?: IamInstanceProfile; - /** - * Indicates whether this is a Spot Instance or a Scheduled Instance. - */ - InstanceLifecycle?: InstanceLifecycleType; - /** - * The Elastic GPU associated with the instance. - */ - ElasticGpuAssociations?: ElasticGpuAssociationList; - /** - * [EC2-VPC] One or more network interfaces for the instance. - */ - NetworkInterfaces?: InstanceNetworkInterfaceList; - /** - * The root device name (for example, /dev/sda1 or /dev/xvda). - */ - RootDeviceName?: String; - /** - * The root device type used by the AMI. The AMI can use an EBS volume or an instance store volume. - */ - RootDeviceType?: DeviceType; - /** - * One or more security groups for the instance. - */ - SecurityGroups?: GroupIdentifierList; - /** - * Specifies whether to enable an instance launched in a VPC to perform NAT. This controls whether source/destination checking is enabled on the instance. A value of true means that checking is enabled, and false means that checking is disabled. The value must be false for the instance to perform NAT. For more information, see NAT Instances in the Amazon Virtual Private Cloud User Guide. - */ - SourceDestCheck?: Boolean; - /** - * If the request is a Spot Instance request, the ID of the request. - */ - SpotInstanceRequestId?: String; - /** - * Specifies whether enhanced networking with the Intel 82599 Virtual Function interface is enabled. - */ - SriovNetSupport?: String; - /** - * The reason for the most recent state transition. - */ - StateReason?: StateReason; - /** - * Any tags assigned to the instance. - */ - Tags?: TagList; - /** - * The virtualization type of the instance. - */ - VirtualizationType?: VirtualizationType; - } - export interface InstanceAttribute { - /** - * The security groups associated with the instance. - */ - Groups?: GroupIdentifierList; - /** - * The block device mapping of the instance. - */ - BlockDeviceMappings?: InstanceBlockDeviceMappingList; - /** - * If the value is true, you can't terminate the instance through the Amazon EC2 console, CLI, or API; otherwise, you can. - */ - DisableApiTermination?: AttributeBooleanValue; - /** - * Indicates whether enhanced networking with ENA is enabled. - */ - EnaSupport?: AttributeBooleanValue; - /** - * Indicates whether the instance is optimized for Amazon EBS I/O. - */ - EbsOptimized?: AttributeBooleanValue; - /** - * The ID of the instance. - */ - InstanceId?: String; - /** - * Indicates whether an instance stops or terminates when you initiate shutdown from the instance (using the operating system command for system shutdown). - */ - InstanceInitiatedShutdownBehavior?: AttributeValue; - /** - * The instance type. - */ - InstanceType?: AttributeValue; - /** - * The kernel ID. - */ - KernelId?: AttributeValue; - /** - * A list of product codes. - */ - ProductCodes?: ProductCodeList; - /** - * The RAM disk ID. - */ - RamdiskId?: AttributeValue; - /** - * The name of the root device (for example, /dev/sda1 or /dev/xvda). - */ - RootDeviceName?: AttributeValue; - /** - * Indicates whether source/destination checking is enabled. A value of true means that checking is enabled, and false means that checking is disabled. This value must be false for a NAT instance to perform NAT. - */ - SourceDestCheck?: AttributeBooleanValue; - /** - * Indicates whether enhanced networking with the Intel 82599 Virtual Function interface is enabled. - */ - SriovNetSupport?: AttributeValue; - /** - * The user data. - */ - UserData?: AttributeValue; - } - export type InstanceAttributeName = "instanceType"|"kernel"|"ramdisk"|"userData"|"disableApiTermination"|"instanceInitiatedShutdownBehavior"|"rootDeviceName"|"blockDeviceMapping"|"productCodes"|"sourceDestCheck"|"groupSet"|"ebsOptimized"|"sriovNetSupport"|"enaSupport"|string; - export interface InstanceBlockDeviceMapping { - /** - * The device name exposed to the instance (for example, /dev/sdh or xvdh). - */ - DeviceName?: String; - /** - * Parameters used to automatically set up EBS volumes when the instance is launched. - */ - Ebs?: EbsInstanceBlockDevice; - } - export type InstanceBlockDeviceMappingList = InstanceBlockDeviceMapping[]; - export interface InstanceBlockDeviceMappingSpecification { - /** - * The device name exposed to the instance (for example, /dev/sdh or xvdh). - */ - DeviceName?: String; - /** - * Parameters used to automatically set up EBS volumes when the instance is launched. - */ - Ebs?: EbsInstanceBlockDeviceSpecification; - /** - * suppress the specified device included in the block device mapping. - */ - NoDevice?: String; - /** - * The virtual device name. - */ - VirtualName?: String; - } - export type InstanceBlockDeviceMappingSpecificationList = InstanceBlockDeviceMappingSpecification[]; - export interface InstanceCapacity { - /** - * The number of instances that can still be launched onto the Dedicated Host. - */ - AvailableCapacity?: Integer; - /** - * The instance type size supported by the Dedicated Host. - */ - InstanceType?: String; - /** - * The total number of instances that can be launched onto the Dedicated Host. - */ - TotalCapacity?: Integer; - } - export interface InstanceCount { - /** - * The number of listed Reserved Instances in the state specified by the state. - */ - InstanceCount?: Integer; - /** - * The states of the listed Reserved Instances. - */ - State?: ListingState; - } - export type InstanceCountList = InstanceCount[]; - export interface InstanceExportDetails { - /** - * The ID of the resource being exported. - */ - InstanceId?: String; - /** - * The target virtualization environment. - */ - TargetEnvironment?: ExportEnvironment; - } - export type InstanceHealthStatus = "healthy"|"unhealthy"|string; - export type InstanceIdSet = String[]; - export type InstanceIdStringList = String[]; - export type InstanceInterruptionBehavior = "stop"|"terminate"|string; - export interface InstanceIpv6Address { - /** - * The IPv6 address. - */ - Ipv6Address?: String; - } - export type InstanceIpv6AddressList = InstanceIpv6Address[]; - export type InstanceLifecycleType = "spot"|"scheduled"|string; - export type InstanceList = Instance[]; - export interface InstanceMonitoring { - /** - * The ID of the instance. - */ - InstanceId?: String; - /** - * The monitoring for the instance. - */ - Monitoring?: Monitoring; - } - export type InstanceMonitoringList = InstanceMonitoring[]; - export interface InstanceNetworkInterface { - /** - * The association information for an Elastic IPv4 associated with the network interface. - */ - Association?: InstanceNetworkInterfaceAssociation; - /** - * The network interface attachment. - */ - Attachment?: InstanceNetworkInterfaceAttachment; - /** - * The description. - */ - Description?: String; - /** - * One or more security groups. - */ - Groups?: GroupIdentifierList; - /** - * One or more IPv6 addresses associated with the network interface. - */ - Ipv6Addresses?: InstanceIpv6AddressList; - /** - * The MAC address. - */ - MacAddress?: String; - /** - * The ID of the network interface. - */ - NetworkInterfaceId?: String; - /** - * The ID of the AWS account that created the network interface. - */ - OwnerId?: String; - /** - * The private DNS name. - */ - PrivateDnsName?: String; - /** - * The IPv4 address of the network interface within the subnet. - */ - PrivateIpAddress?: String; - /** - * One or more private IPv4 addresses associated with the network interface. - */ - PrivateIpAddresses?: InstancePrivateIpAddressList; - /** - * Indicates whether to validate network traffic to or from this network interface. - */ - SourceDestCheck?: Boolean; - /** - * The status of the network interface. - */ - Status?: NetworkInterfaceStatus; - /** - * The ID of the subnet. - */ - SubnetId?: String; - /** - * The ID of the VPC. - */ - VpcId?: String; - } - export interface InstanceNetworkInterfaceAssociation { - /** - * The ID of the owner of the Elastic IP address. - */ - IpOwnerId?: String; - /** - * The public DNS name. - */ - PublicDnsName?: String; - /** - * The public IP address or Elastic IP address bound to the network interface. - */ - PublicIp?: String; - } - export interface InstanceNetworkInterfaceAttachment { - /** - * The time stamp when the attachment initiated. - */ - AttachTime?: DateTime; - /** - * The ID of the network interface attachment. - */ - AttachmentId?: String; - /** - * Indicates whether the network interface is deleted when the instance is terminated. - */ - DeleteOnTermination?: Boolean; - /** - * The index of the device on the instance for the network interface attachment. - */ - DeviceIndex?: Integer; - /** - * The attachment state. - */ - Status?: AttachmentStatus; - } - export type InstanceNetworkInterfaceList = InstanceNetworkInterface[]; - export interface InstanceNetworkInterfaceSpecification { - /** - * Indicates whether to assign a public IPv4 address to an instance you launch in a VPC. The public IP address can only be assigned to a network interface for eth0, and can only be assigned to a new network interface, not an existing one. You cannot specify more than one network interface in the request. If launching into a default subnet, the default value is true. - */ - AssociatePublicIpAddress?: Boolean; - /** - * If set to true, the interface is deleted when the instance is terminated. You can specify true only if creating a new network interface when launching an instance. - */ - DeleteOnTermination?: Boolean; - /** - * The description of the network interface. Applies only if creating a network interface when launching an instance. - */ - Description?: String; - /** - * The index of the device on the instance for the network interface attachment. If you are specifying a network interface in a RunInstances request, you must provide the device index. - */ - DeviceIndex?: Integer; - /** - * The IDs of the security groups for the network interface. Applies only if creating a network interface when launching an instance. - */ - Groups?: SecurityGroupIdStringList; - /** - * A number of IPv6 addresses to assign to the network interface. Amazon EC2 chooses the IPv6 addresses from the range of the subnet. You cannot specify this option and the option to assign specific IPv6 addresses in the same request. You can specify this option if you've specified a minimum number of instances to launch. - */ - Ipv6AddressCount?: Integer; - /** - * One or more IPv6 addresses to assign to the network interface. You cannot specify this option and the option to assign a number of IPv6 addresses in the same request. You cannot specify this option if you've specified a minimum number of instances to launch. - */ - Ipv6Addresses?: InstanceIpv6AddressList; - /** - * The ID of the network interface. - */ - NetworkInterfaceId?: String; - /** - * The private IPv4 address of the network interface. Applies only if creating a network interface when launching an instance. You cannot specify this option if you're launching more than one instance in a RunInstances request. - */ - PrivateIpAddress?: String; - /** - * One or more private IPv4 addresses to assign to the network interface. Only one private IPv4 address can be designated as primary. You cannot specify this option if you're launching more than one instance in a RunInstances request. - */ - PrivateIpAddresses?: PrivateIpAddressSpecificationList; - /** - * The number of secondary private IPv4 addresses. You can't specify this option and specify more than one private IP address using the private IP addresses option. You cannot specify this option if you're launching more than one instance in a RunInstances request. - */ - SecondaryPrivateIpAddressCount?: Integer; - /** - * The ID of the subnet associated with the network string. Applies only if creating a network interface when launching an instance. - */ - SubnetId?: String; - } - export type InstanceNetworkInterfaceSpecificationList = InstanceNetworkInterfaceSpecification[]; - export interface InstancePrivateIpAddress { - /** - * The association information for an Elastic IP address for the network interface. - */ - Association?: InstanceNetworkInterfaceAssociation; - /** - * Indicates whether this IPv4 address is the primary private IP address of the network interface. - */ - Primary?: Boolean; - /** - * The private IPv4 DNS name. - */ - PrivateDnsName?: String; - /** - * The private IPv4 address of the network interface. - */ - PrivateIpAddress?: String; - } - export type InstancePrivateIpAddressList = InstancePrivateIpAddress[]; - export interface InstanceState { - /** - * The low byte represents the state. The high byte is an opaque internal value and should be ignored. 0 : pending 16 : running 32 : shutting-down 48 : terminated 64 : stopping 80 : stopped - */ - Code?: Integer; - /** - * The current state of the instance. - */ - Name?: InstanceStateName; - } - export interface InstanceStateChange { - /** - * The current state of the instance. - */ - CurrentState?: InstanceState; - /** - * The ID of the instance. - */ - InstanceId?: String; - /** - * The previous state of the instance. - */ - PreviousState?: InstanceState; - } - export type InstanceStateChangeList = InstanceStateChange[]; - export type InstanceStateName = "pending"|"running"|"shutting-down"|"terminated"|"stopping"|"stopped"|string; - export interface InstanceStatus { - /** - * The Availability Zone of the instance. - */ - AvailabilityZone?: String; - /** - * Any scheduled events associated with the instance. - */ - Events?: InstanceStatusEventList; - /** - * The ID of the instance. - */ - InstanceId?: String; - /** - * The intended state of the instance. DescribeInstanceStatus requires that an instance be in the running state. - */ - InstanceState?: InstanceState; - /** - * Reports impaired functionality that stems from issues internal to the instance, such as impaired reachability. - */ - InstanceStatus?: InstanceStatusSummary; - /** - * Reports impaired functionality that stems from issues related to the systems that support an instance, such as hardware failures and network connectivity problems. - */ - SystemStatus?: InstanceStatusSummary; - } - export interface InstanceStatusDetails { - /** - * The time when a status check failed. For an instance that was launched and impaired, this is the time when the instance was launched. - */ - ImpairedSince?: DateTime; - /** - * The type of instance status. - */ - Name?: StatusName; - /** - * The status. - */ - Status?: StatusType; - } - export type InstanceStatusDetailsList = InstanceStatusDetails[]; - export interface InstanceStatusEvent { - /** - * The event code. - */ - Code?: EventCode; - /** - * A description of the event. After a scheduled event is completed, it can still be described for up to a week. If the event has been completed, this description starts with the following text: [Completed]. - */ - Description?: String; - /** - * The latest scheduled end time for the event. - */ - NotAfter?: DateTime; - /** - * The earliest scheduled start time for the event. - */ - NotBefore?: DateTime; - } - export type InstanceStatusEventList = InstanceStatusEvent[]; - export type InstanceStatusList = InstanceStatus[]; - export interface InstanceStatusSummary { - /** - * The system instance health or application instance health. - */ - Details?: InstanceStatusDetailsList; - /** - * The status. - */ - Status?: SummaryStatus; - } - export type InstanceType = "t1.micro"|"t2.nano"|"t2.micro"|"t2.small"|"t2.medium"|"t2.large"|"t2.xlarge"|"t2.2xlarge"|"m1.small"|"m1.medium"|"m1.large"|"m1.xlarge"|"m3.medium"|"m3.large"|"m3.xlarge"|"m3.2xlarge"|"m4.large"|"m4.xlarge"|"m4.2xlarge"|"m4.4xlarge"|"m4.10xlarge"|"m4.16xlarge"|"m2.xlarge"|"m2.2xlarge"|"m2.4xlarge"|"cr1.8xlarge"|"r3.large"|"r3.xlarge"|"r3.2xlarge"|"r3.4xlarge"|"r3.8xlarge"|"r4.large"|"r4.xlarge"|"r4.2xlarge"|"r4.4xlarge"|"r4.8xlarge"|"r4.16xlarge"|"x1.16xlarge"|"x1.32xlarge"|"x1e.32xlarge"|"i2.xlarge"|"i2.2xlarge"|"i2.4xlarge"|"i2.8xlarge"|"i3.large"|"i3.xlarge"|"i3.2xlarge"|"i3.4xlarge"|"i3.8xlarge"|"i3.16xlarge"|"hi1.4xlarge"|"hs1.8xlarge"|"c1.medium"|"c1.xlarge"|"c3.large"|"c3.xlarge"|"c3.2xlarge"|"c3.4xlarge"|"c3.8xlarge"|"c4.large"|"c4.xlarge"|"c4.2xlarge"|"c4.4xlarge"|"c4.8xlarge"|"cc1.4xlarge"|"cc2.8xlarge"|"g2.2xlarge"|"g2.8xlarge"|"g3.4xlarge"|"g3.8xlarge"|"g3.16xlarge"|"cg1.4xlarge"|"p2.xlarge"|"p2.8xlarge"|"p2.16xlarge"|"d2.xlarge"|"d2.2xlarge"|"d2.4xlarge"|"d2.8xlarge"|"f1.2xlarge"|"f1.16xlarge"|string; - export type InstanceTypeList = InstanceType[]; - export type Integer = number; - export type InterfacePermissionType = "INSTANCE-ATTACH"|"EIP-ASSOCIATE"|string; - export interface InternetGateway { - /** - * Any VPCs attached to the Internet gateway. - */ - Attachments?: InternetGatewayAttachmentList; - /** - * The ID of the Internet gateway. - */ - InternetGatewayId?: String; - /** - * Any tags assigned to the Internet gateway. - */ - Tags?: TagList; - } - export interface InternetGatewayAttachment { - /** - * The current state of the attachment. - */ - State?: AttachmentStatus; - /** - * The ID of the VPC. - */ - VpcId?: String; - } - export type InternetGatewayAttachmentList = InternetGatewayAttachment[]; - export type InternetGatewayList = InternetGateway[]; - export interface IpPermission { - /** - * The start of port range for the TCP and UDP protocols, or an ICMP/ICMPv6 type number. A value of -1 indicates all ICMP/ICMPv6 types. If you specify all ICMP/ICMPv6 types, you must specify all codes. - */ - FromPort?: Integer; - /** - * The IP protocol name (tcp, udp, icmp) or number (see Protocol Numbers). [EC2-VPC only] Use -1 to specify all protocols. When authorizing security group rules, specifying -1 or a protocol number other than tcp, udp, icmp, or 58 (ICMPv6) allows traffic on all ports, regardless of any port range you specify. For tcp, udp, and icmp, you must specify a port range. For 58 (ICMPv6), you can optionally specify a port range; if you don't, traffic for all types and codes is allowed when authorizing rules. - */ - IpProtocol?: String; - /** - * One or more IPv4 ranges. - */ - IpRanges?: IpRangeList; - /** - * [EC2-VPC only] One or more IPv6 ranges. - */ - Ipv6Ranges?: Ipv6RangeList; - /** - * (Valid for AuthorizeSecurityGroupEgress, RevokeSecurityGroupEgress and DescribeSecurityGroups only) One or more prefix list IDs for an AWS service. In an AuthorizeSecurityGroupEgress request, this is the AWS service that you want to access through a VPC endpoint from instances associated with the security group. - */ - PrefixListIds?: PrefixListIdList; - /** - * The end of port range for the TCP and UDP protocols, or an ICMP/ICMPv6 code. A value of -1 indicates all ICMP/ICMPv6 codes for the specified ICMP type. If you specify all ICMP/ICMPv6 types, you must specify all codes. - */ - ToPort?: Integer; - /** - * One or more security group and AWS account ID pairs. - */ - UserIdGroupPairs?: UserIdGroupPairList; - } - export type IpPermissionList = IpPermission[]; - export interface IpRange { - /** - * The IPv4 CIDR range. You can either specify a CIDR range or a source security group, not both. To specify a single IPv4 address, use the /32 prefix length. - */ - CidrIp?: String; - /** - * A description for the security group rule that references this IPv4 address range. Constraints: Up to 255 characters in length. Allowed characters are a-z, A-Z, 0-9, spaces, and ._-:/()#,@[]+=;{}!$* - */ - Description?: String; - } - export type IpRangeList = IpRange[]; - export type IpRanges = String[]; - export type Ipv6Address = string; - export type Ipv6AddressList = String[]; - export interface Ipv6CidrBlock { - /** - * The IPv6 CIDR block. - */ - Ipv6CidrBlock?: String; - } - export type Ipv6CidrBlockSet = Ipv6CidrBlock[]; - export interface Ipv6Range { - /** - * The IPv6 CIDR range. You can either specify a CIDR range or a source security group, not both. To specify a single IPv6 address, use the /128 prefix length. - */ - CidrIpv6?: String; - /** - * A description for the security group rule that references this IPv6 address range. Constraints: Up to 255 characters in length. Allowed characters are a-z, A-Z, 0-9, spaces, and ._-:/()#,@[]+=;{}!$* - */ - Description?: String; - } - export type Ipv6RangeList = Ipv6Range[]; - export type KeyNameStringList = String[]; - export interface KeyPair { - /** - * The SHA-1 digest of the DER encoded private key. - */ - KeyFingerprint?: String; - /** - * An unencrypted PEM encoded RSA private key. - */ - KeyMaterial?: String; - /** - * The name of the key pair. - */ - KeyName?: String; - } - export interface KeyPairInfo { - /** - * If you used CreateKeyPair to create the key pair, this is the SHA-1 digest of the DER encoded private key. If you used ImportKeyPair to provide AWS the public key, this is the MD5 public key fingerprint as specified in section 4 of RFC4716. - */ - KeyFingerprint?: String; - /** - * The name of the key pair. - */ - KeyName?: String; - } - export type KeyPairList = KeyPairInfo[]; - export interface LaunchPermission { - /** - * The name of the group. - */ - Group?: PermissionGroup; - /** - * The AWS account ID. - */ - UserId?: String; - } - export type LaunchPermissionList = LaunchPermission[]; - export interface LaunchPermissionModifications { - /** - * The AWS account ID to add to the list of launch permissions for the AMI. - */ - Add?: LaunchPermissionList; - /** - * The AWS account ID to remove from the list of launch permissions for the AMI. - */ - Remove?: LaunchPermissionList; - } - export interface LaunchSpecification { - /** - * The user data to make available to the instances. If you are using an AWS SDK or command line tool, Base64-encoding is performed for you, and you can load the text from a file. Otherwise, you must provide Base64-encoded text. - */ - UserData?: String; - /** - * One or more security groups. When requesting instances in a VPC, you must specify the IDs of the security groups. When requesting instances in EC2-Classic, you can specify the names or the IDs of the security groups. - */ - SecurityGroups?: GroupIdentifierList; - /** - * Deprecated. - */ - AddressingType?: String; - /** - * One or more block device mapping entries. Although you can specify encrypted EBS volumes in this block device mapping for your Spot Instances, these volumes are not encrypted. - */ - BlockDeviceMappings?: BlockDeviceMappingList; - /** - * Indicates whether the instance is optimized for EBS I/O. This optimization provides dedicated throughput to Amazon EBS and an optimized configuration stack to provide optimal EBS I/O performance. This optimization isn't available with all instance types. Additional usage charges apply when using an EBS Optimized instance. Default: false - */ - EbsOptimized?: Boolean; - /** - * The IAM instance profile. - */ - IamInstanceProfile?: IamInstanceProfileSpecification; - /** - * The ID of the AMI. - */ - ImageId?: String; - /** - * The instance type. - */ - InstanceType?: InstanceType; - /** - * The ID of the kernel. - */ - KernelId?: String; - /** - * The name of the key pair. - */ - KeyName?: String; - /** - * One or more network interfaces. If you specify a network interface, you must specify subnet IDs and security group IDs using the network interface. - */ - NetworkInterfaces?: InstanceNetworkInterfaceSpecificationList; - /** - * The placement information for the instance. - */ - Placement?: SpotPlacement; - /** - * The ID of the RAM disk. - */ - RamdiskId?: String; - /** - * The ID of the subnet in which to launch the instance. - */ - SubnetId?: String; - Monitoring?: RunInstancesMonitoringEnabled; - } - export type LaunchSpecsList = SpotFleetLaunchSpecification[]; - export type ListingState = "available"|"sold"|"cancelled"|"pending"|string; - export type ListingStatus = "active"|"pending"|"cancelled"|"closed"|string; - export interface LoadPermission { - /** - * The AWS account ID. - */ - UserId?: String; - /** - * The name of the group. - */ - Group?: PermissionGroup; - } - export type LoadPermissionList = LoadPermission[]; - export type LoadPermissionListRequest = LoadPermissionRequest[]; - export interface LoadPermissionModifications { - /** - * The load permissions to add. - */ - Add?: LoadPermissionListRequest; - /** - * The load permissions to remove. - */ - Remove?: LoadPermissionListRequest; - } - export interface LoadPermissionRequest { - /** - * The name of the group. - */ - Group?: PermissionGroup; - /** - * The AWS account ID. - */ - UserId?: String; - } - export type Long = number; - export type MaxResults = number; - export interface ModifyFpgaImageAttributeRequest { - /** - * Checks whether you have the required permissions for the action, without actually making the request, and provides an error response. If you have the required permissions, the error response is DryRunOperation. Otherwise, it is UnauthorizedOperation. - */ - DryRun?: Boolean; - /** - * The ID of the AFI. - */ - FpgaImageId: String; - /** - * The name of the attribute. - */ - Attribute?: FpgaImageAttributeName; - /** - * The operation type. - */ - OperationType?: OperationType; - /** - * One or more AWS account IDs. This parameter is valid only when modifying the loadPermission attribute. - */ - UserIds?: UserIdStringList; - /** - * One or more user groups. This parameter is valid only when modifying the loadPermission attribute. - */ - UserGroups?: UserGroupStringList; - /** - * One or more product codes. After you add a product code to an AFI, it can't be removed. This parameter is valid only when modifying the productCodes attribute. - */ - ProductCodes?: ProductCodeStringList; - /** - * The load permission for the AFI. - */ - LoadPermission?: LoadPermissionModifications; - /** - * A description for the AFI. - */ - Description?: String; - /** - * A name for the AFI. - */ - Name?: String; - } - export interface ModifyFpgaImageAttributeResult { - /** - * Information about the attribute. - */ - FpgaImageAttribute?: FpgaImageAttribute; - } - export interface ModifyHostsRequest { - /** - * Specify whether to enable or disable auto-placement. - */ - AutoPlacement: AutoPlacement; - /** - * The host IDs of the Dedicated Hosts you want to modify. - */ - HostIds: RequestHostIdList; - } - export interface ModifyHostsResult { - /** - * The IDs of the Dedicated Hosts that were successfully modified. - */ - Successful?: ResponseHostIdList; - /** - * The IDs of the Dedicated Hosts that could not be modified. Check whether the setting you requested can be used. - */ - Unsuccessful?: UnsuccessfulItemList; - } - export interface ModifyIdFormatRequest { - /** - * The type of resource: instance | reservation | snapshot | volume - */ - Resource: String; - /** - * Indicate whether the resource should use longer IDs (17-character IDs). - */ - UseLongIds: Boolean; - } - export interface ModifyIdentityIdFormatRequest { - /** - * The ARN of the principal, which can be an IAM user, IAM role, or the root user. Specify all to modify the ID format for all IAM users, IAM roles, and the root user of the account. - */ - PrincipalArn: String; - /** - * The type of resource: instance | reservation | snapshot | volume - */ - Resource: String; - /** - * Indicates whether the resource should use longer IDs (17-character IDs) - */ - UseLongIds: Boolean; - } - export interface ModifyImageAttributeRequest { - /** - * The name of the attribute to modify. The valid values are description, launchPermission, and productCodes. - */ - Attribute?: String; - /** - * A new description for the AMI. - */ - Description?: AttributeValue; - /** - * The ID of the AMI. - */ - ImageId: String; - /** - * A new launch permission for the AMI. - */ - LaunchPermission?: LaunchPermissionModifications; - /** - * The operation type. This parameter can be used only when the Attribute parameter is launchPermission. - */ - OperationType?: OperationType; - /** - * One or more DevPay product codes. After you add a product code to an AMI, it can't be removed. - */ - ProductCodes?: ProductCodeStringList; - /** - * One or more user groups. This parameter can be used only when the Attribute parameter is launchPermission. - */ - UserGroups?: UserGroupStringList; - /** - * One or more AWS account IDs. This parameter can be used only when the Attribute parameter is launchPermission. - */ - UserIds?: UserIdStringList; - /** - * The value of the attribute being modified. This parameter can be used only when the Attribute parameter is description or productCodes. - */ - Value?: String; - /** - * Checks whether you have the required permissions for the action, without actually making the request, and provides an error response. If you have the required permissions, the error response is DryRunOperation. Otherwise, it is UnauthorizedOperation. - */ - DryRun?: Boolean; - } - export interface ModifyInstanceAttributeRequest { - /** - * Specifies whether source/destination checking is enabled. A value of true means that checking is enabled, and false means that checking is disabled. This value must be false for a NAT instance to perform NAT. - */ - SourceDestCheck?: AttributeBooleanValue; - /** - * The name of the attribute. - */ - Attribute?: InstanceAttributeName; - /** - * Modifies the DeleteOnTermination attribute for volumes that are currently attached. The volume must be owned by the caller. If no value is specified for DeleteOnTermination, the default is true and the volume is deleted when the instance is terminated. To add instance store volumes to an Amazon EBS-backed instance, you must add them when you launch the instance. For more information, see Updating the Block Device Mapping when Launching an Instance in the Amazon Elastic Compute Cloud User Guide. - */ - BlockDeviceMappings?: InstanceBlockDeviceMappingSpecificationList; - /** - * If the value is true, you can't terminate the instance using the Amazon EC2 console, CLI, or API; otherwise, you can. You cannot use this parameter for Spot Instances. - */ - DisableApiTermination?: AttributeBooleanValue; - /** - * Checks whether you have the required permissions for the action, without actually making the request, and provides an error response. If you have the required permissions, the error response is DryRunOperation. Otherwise, it is UnauthorizedOperation. - */ - DryRun?: Boolean; - /** - * Specifies whether the instance is optimized for Amazon EBS I/O. This optimization provides dedicated throughput to Amazon EBS and an optimized configuration stack to provide optimal EBS I/O performance. This optimization isn't available with all instance types. Additional usage charges apply when using an EBS Optimized instance. - */ - EbsOptimized?: AttributeBooleanValue; - /** - * Set to true to enable enhanced networking with ENA for the instance. This option is supported only for HVM instances. Specifying this option with a PV instance can make it unreachable. - */ - EnaSupport?: AttributeBooleanValue; - /** - * [EC2-VPC] Changes the security groups of the instance. You must specify at least one security group, even if it's just the default security group for the VPC. You must specify the security group ID, not the security group name. - */ - Groups?: GroupIdStringList; - /** - * The ID of the instance. - */ - InstanceId: String; - /** - * Specifies whether an instance stops or terminates when you initiate shutdown from the instance (using the operating system command for system shutdown). - */ - InstanceInitiatedShutdownBehavior?: AttributeValue; - /** - * Changes the instance type to the specified value. For more information, see Instance Types. If the instance type is not valid, the error returned is InvalidInstanceAttributeValue. - */ - InstanceType?: AttributeValue; - /** - * Changes the instance's kernel to the specified value. We recommend that you use PV-GRUB instead of kernels and RAM disks. For more information, see PV-GRUB. - */ - Kernel?: AttributeValue; - /** - * Changes the instance's RAM disk to the specified value. We recommend that you use PV-GRUB instead of kernels and RAM disks. For more information, see PV-GRUB. - */ - Ramdisk?: AttributeValue; - /** - * Set to simple to enable enhanced networking with the Intel 82599 Virtual Function interface for the instance. There is no way to disable enhanced networking with the Intel 82599 Virtual Function interface at this time. This option is supported only for HVM instances. Specifying this option with a PV instance can make it unreachable. - */ - SriovNetSupport?: AttributeValue; - /** - * Changes the instance's user data to the specified value. If you are using an AWS SDK or command line tool, base64-encoding is performed for you, and you can load the text from a file. Otherwise, you must provide base64-encoded text. - */ - UserData?: BlobAttributeValue; - /** - * A new value for the attribute. Use only with the kernel, ramdisk, userData, disableApiTermination, or instanceInitiatedShutdownBehavior attribute. - */ - Value?: String; - } - export interface ModifyInstancePlacementRequest { - /** - * The new affinity setting for the instance. - */ - Affinity?: Affinity; - /** - * The ID of the Dedicated Host that the instance will have affinity with. - */ - HostId?: String; - /** - * The ID of the instance that you are modifying. - */ - InstanceId: String; - /** - * The tenancy of the instance that you are modifying. - */ - Tenancy?: HostTenancy; - } - export interface ModifyInstancePlacementResult { - /** - * Is true if the request succeeds, and an error otherwise. - */ - Return?: Boolean; - } - export interface ModifyNetworkInterfaceAttributeRequest { - /** - * Information about the interface attachment. If modifying the 'delete on termination' attribute, you must specify the ID of the interface attachment. - */ - Attachment?: NetworkInterfaceAttachmentChanges; - /** - * A description for the network interface. - */ - Description?: AttributeValue; - /** - * Checks whether you have the required permissions for the action, without actually making the request, and provides an error response. If you have the required permissions, the error response is DryRunOperation. Otherwise, it is UnauthorizedOperation. - */ - DryRun?: Boolean; - /** - * Changes the security groups for the network interface. The new set of groups you specify replaces the current set. You must specify at least one group, even if it's just the default security group in the VPC. You must specify the ID of the security group, not the name. - */ - Groups?: SecurityGroupIdStringList; - /** - * The ID of the network interface. - */ - NetworkInterfaceId: String; - /** - * Indicates whether source/destination checking is enabled. A value of true means checking is enabled, and false means checking is disabled. This value must be false for a NAT instance to perform NAT. For more information, see NAT Instances in the Amazon Virtual Private Cloud User Guide. - */ - SourceDestCheck?: AttributeBooleanValue; - } - export interface ModifyReservedInstancesRequest { - /** - * The IDs of the Reserved Instances to modify. - */ - ReservedInstancesIds: ReservedInstancesIdStringList; - /** - * A unique, case-sensitive token you provide to ensure idempotency of your modification request. For more information, see Ensuring Idempotency. - */ - ClientToken?: String; - /** - * The configuration settings for the Reserved Instances to modify. - */ - TargetConfigurations: ReservedInstancesConfigurationList; - } - export interface ModifyReservedInstancesResult { - /** - * The ID for the modification. - */ - ReservedInstancesModificationId?: String; - } - export interface ModifySnapshotAttributeRequest { - /** - * The snapshot attribute to modify. Only volume creation permissions may be modified at the customer level. - */ - Attribute?: SnapshotAttributeName; - /** - * A JSON representation of the snapshot attribute modification. - */ - CreateVolumePermission?: CreateVolumePermissionModifications; - /** - * The group to modify for the snapshot. - */ - GroupNames?: GroupNameStringList; - /** - * The type of operation to perform to the attribute. - */ - OperationType?: OperationType; - /** - * The ID of the snapshot. - */ - SnapshotId: String; - /** - * The account ID to modify for the snapshot. - */ - UserIds?: UserIdStringList; - /** - * Checks whether you have the required permissions for the action, without actually making the request, and provides an error response. If you have the required permissions, the error response is DryRunOperation. Otherwise, it is UnauthorizedOperation. - */ - DryRun?: Boolean; - } - export interface ModifySpotFleetRequestRequest { - /** - * Indicates whether running Spot instances should be terminated if the target capacity of the Spot fleet request is decreased below the current size of the Spot fleet. - */ - ExcessCapacityTerminationPolicy?: ExcessCapacityTerminationPolicy; - /** - * The ID of the Spot fleet request. - */ - SpotFleetRequestId: String; - /** - * The size of the fleet. - */ - TargetCapacity?: Integer; - } - export interface ModifySpotFleetRequestResponse { - /** - * Is true if the request succeeds, and an error otherwise. - */ - Return?: Boolean; - } - export interface ModifySubnetAttributeRequest { - /** - * Specify true to indicate that network interfaces created in the specified subnet should be assigned an IPv6 address. This includes a network interface that's created when launching an instance into the subnet (the instance therefore receives an IPv6 address). If you enable the IPv6 addressing feature for your subnet, your network interface or instance only receives an IPv6 address if it's created using version 2016-11-15 or later of the Amazon EC2 API. - */ - AssignIpv6AddressOnCreation?: AttributeBooleanValue; - /** - * Specify true to indicate that network interfaces created in the specified subnet should be assigned a public IPv4 address. This includes a network interface that's created when launching an instance into the subnet (the instance therefore receives a public IPv4 address). - */ - MapPublicIpOnLaunch?: AttributeBooleanValue; - /** - * The ID of the subnet. - */ - SubnetId: String; - } - export interface ModifyVolumeAttributeRequest { - /** - * Indicates whether the volume should be auto-enabled for I/O operations. - */ - AutoEnableIO?: AttributeBooleanValue; - /** - * The ID of the volume. - */ - VolumeId: String; - /** - * Checks whether you have the required permissions for the action, without actually making the request, and provides an error response. If you have the required permissions, the error response is DryRunOperation. Otherwise, it is UnauthorizedOperation. - */ - DryRun?: Boolean; - } - export interface ModifyVolumeRequest { - /** - * Checks whether you have the required permissions for the action, without actually making the request, and provides an error response. If you have the required permissions, the error response is DryRunOperation. Otherwise, it is UnauthorizedOperation. - */ - DryRun?: Boolean; - VolumeId: String; - /** - * Target size in GiB of the volume to be modified. Target volume size must be greater than or equal to than the existing size of the volume. For information about available EBS volume sizes, see http://docs.aws.amazon.com/AWSEC2/latest/UserGuide/EBSVolumeTypes.html. Default: If no size is specified, the existing size is retained. - */ - Size?: Integer; - /** - * Target EBS volume type of the volume to be modified The API does not support modifications for volume type standard. You also cannot change the type of a volume to standard. Default: If no type is specified, the existing type is retained. - */ - VolumeType?: VolumeType; - /** - * Target IOPS rate of the volume to be modified. Only valid for Provisioned IOPS SSD (io1) volumes. For more information about io1 IOPS configuration, see http://docs.aws.amazon.com/AWSEC2/latest/UserGuide/EBSVolumeTypes.html#EBSVolumeTypes_piops. Default: If no IOPS value is specified, the existing value is retained. - */ - Iops?: Integer; - } - export interface ModifyVolumeResult { - /** - * A VolumeModification object. - */ - VolumeModification?: VolumeModification; - } - export interface ModifyVpcAttributeRequest { - /** - * Indicates whether the instances launched in the VPC get DNS hostnames. If enabled, instances in the VPC get DNS hostnames; otherwise, they do not. You cannot modify the DNS resolution and DNS hostnames attributes in the same request. Use separate requests for each attribute. You can only enable DNS hostnames if you've enabled DNS support. - */ - EnableDnsHostnames?: AttributeBooleanValue; - /** - * Indicates whether the DNS resolution is supported for the VPC. If enabled, queries to the Amazon provided DNS server at the 169.254.169.253 IP address, or the reserved IP address at the base of the VPC network range "plus two" will succeed. If disabled, the Amazon provided DNS service in the VPC that resolves public DNS hostnames to IP addresses is not enabled. You cannot modify the DNS resolution and DNS hostnames attributes in the same request. Use separate requests for each attribute. - */ - EnableDnsSupport?: AttributeBooleanValue; - /** - * The ID of the VPC. - */ - VpcId: String; - } - export interface ModifyVpcEndpointRequest { - /** - * One or more route tables IDs to associate with the endpoint. - */ - AddRouteTableIds?: ValueStringList; - /** - * Checks whether you have the required permissions for the action, without actually making the request, and provides an error response. If you have the required permissions, the error response is DryRunOperation. Otherwise, it is UnauthorizedOperation. - */ - DryRun?: Boolean; - /** - * A policy document to attach to the endpoint. The policy must be in valid JSON format. - */ - PolicyDocument?: String; - /** - * One or more route table IDs to disassociate from the endpoint. - */ - RemoveRouteTableIds?: ValueStringList; - /** - * Specify true to reset the policy document to the default policy. The default policy allows access to the service. - */ - ResetPolicy?: Boolean; - /** - * The ID of the endpoint. - */ - VpcEndpointId: String; - } - export interface ModifyVpcEndpointResult { - /** - * Returns true if the request succeeds; otherwise, it returns an error. - */ - Return?: Boolean; - } - export interface ModifyVpcPeeringConnectionOptionsRequest { - /** - * The VPC peering connection options for the accepter VPC. - */ - AccepterPeeringConnectionOptions?: PeeringConnectionOptionsRequest; - /** - * Checks whether you have the required permissions for the operation, without actually making the request, and provides an error response. If you have the required permissions, the error response is DryRunOperation. Otherwise, it is UnauthorizedOperation. - */ - DryRun?: Boolean; - /** - * The VPC peering connection options for the requester VPC. - */ - RequesterPeeringConnectionOptions?: PeeringConnectionOptionsRequest; - /** - * The ID of the VPC peering connection. - */ - VpcPeeringConnectionId: String; - } - export interface ModifyVpcPeeringConnectionOptionsResult { - /** - * Information about the VPC peering connection options for the accepter VPC. - */ - AccepterPeeringConnectionOptions?: PeeringConnectionOptions; - /** - * Information about the VPC peering connection options for the requester VPC. - */ - RequesterPeeringConnectionOptions?: PeeringConnectionOptions; - } - export interface MonitorInstancesRequest { - /** - * One or more instance IDs. - */ - InstanceIds: InstanceIdStringList; - /** - * Checks whether you have the required permissions for the action, without actually making the request, and provides an error response. If you have the required permissions, the error response is DryRunOperation. Otherwise, it is UnauthorizedOperation. - */ - DryRun?: Boolean; - } - export interface MonitorInstancesResult { - /** - * The monitoring information. - */ - InstanceMonitorings?: InstanceMonitoringList; - } - export interface Monitoring { - /** - * Indicates whether detailed monitoring is enabled. Otherwise, basic monitoring is enabled. - */ - State?: MonitoringState; - } - export type MonitoringState = "disabled"|"disabling"|"enabled"|"pending"|string; - export interface MoveAddressToVpcRequest { - /** - * Checks whether you have the required permissions for the action, without actually making the request, and provides an error response. If you have the required permissions, the error response is DryRunOperation. Otherwise, it is UnauthorizedOperation. - */ - DryRun?: Boolean; - /** - * The Elastic IP address. - */ - PublicIp: String; - } - export interface MoveAddressToVpcResult { - /** - * The allocation ID for the Elastic IP address. - */ - AllocationId?: String; - /** - * The status of the move of the IP address. - */ - Status?: Status; - } - export type MoveStatus = "movingToVpc"|"restoringToClassic"|string; - export interface MovingAddressStatus { - /** - * The status of the Elastic IP address that's being moved to the EC2-VPC platform, or restored to the EC2-Classic platform. - */ - MoveStatus?: MoveStatus; - /** - * The Elastic IP address. - */ - PublicIp?: String; - } - export type MovingAddressStatusSet = MovingAddressStatus[]; - export interface NatGateway { - /** - * The date and time the NAT gateway was created. - */ - CreateTime?: DateTime; - /** - * The date and time the NAT gateway was deleted, if applicable. - */ - DeleteTime?: DateTime; - /** - * If the NAT gateway could not be created, specifies the error code for the failure. (InsufficientFreeAddressesInSubnet | Gateway.NotAttached | InvalidAllocationID.NotFound | Resource.AlreadyAssociated | InternalError | InvalidSubnetID.NotFound) - */ - FailureCode?: String; - /** - * If the NAT gateway could not be created, specifies the error message for the failure, that corresponds to the error code. For InsufficientFreeAddressesInSubnet: "Subnet has insufficient free addresses to create this NAT gateway" For Gateway.NotAttached: "Network vpc-xxxxxxxx has no Internet gateway attached" For InvalidAllocationID.NotFound: "Elastic IP address eipalloc-xxxxxxxx could not be associated with this NAT gateway" For Resource.AlreadyAssociated: "Elastic IP address eipalloc-xxxxxxxx is already associated" For InternalError: "Network interface eni-xxxxxxxx, created and used internally by this NAT gateway is in an invalid state. Please try again." For InvalidSubnetID.NotFound: "The specified subnet subnet-xxxxxxxx does not exist or could not be found." - */ - FailureMessage?: String; - /** - * Information about the IP addresses and network interface associated with the NAT gateway. - */ - NatGatewayAddresses?: NatGatewayAddressList; - /** - * The ID of the NAT gateway. - */ - NatGatewayId?: String; - /** - * Reserved. If you need to sustain traffic greater than the documented limits, contact us through the Support Center. - */ - ProvisionedBandwidth?: ProvisionedBandwidth; - /** - * The state of the NAT gateway. pending: The NAT gateway is being created and is not ready to process traffic. failed: The NAT gateway could not be created. Check the failureCode and failureMessage fields for the reason. available: The NAT gateway is able to process traffic. This status remains until you delete the NAT gateway, and does not indicate the health of the NAT gateway. deleting: The NAT gateway is in the process of being terminated and may still be processing traffic. deleted: The NAT gateway has been terminated and is no longer processing traffic. - */ - State?: NatGatewayState; - /** - * The ID of the subnet in which the NAT gateway is located. - */ - SubnetId?: String; - /** - * The ID of the VPC in which the NAT gateway is located. - */ - VpcId?: String; - /** - * The tags for the NAT gateway. - */ - Tags?: TagList; - } - export interface NatGatewayAddress { - /** - * The allocation ID of the Elastic IP address that's associated with the NAT gateway. - */ - AllocationId?: String; - /** - * The ID of the network interface associated with the NAT gateway. - */ - NetworkInterfaceId?: String; - /** - * The private IP address associated with the Elastic IP address. - */ - PrivateIp?: String; - /** - * The Elastic IP address associated with the NAT gateway. - */ - PublicIp?: String; - } - export type NatGatewayAddressList = NatGatewayAddress[]; - export type NatGatewayList = NatGateway[]; - export type NatGatewayState = "pending"|"failed"|"available"|"deleting"|"deleted"|string; - export interface NetworkAcl { - /** - * Any associations between the network ACL and one or more subnets - */ - Associations?: NetworkAclAssociationList; - /** - * One or more entries (rules) in the network ACL. - */ - Entries?: NetworkAclEntryList; - /** - * Indicates whether this is the default network ACL for the VPC. - */ - IsDefault?: Boolean; - /** - * The ID of the network ACL. - */ - NetworkAclId?: String; - /** - * Any tags assigned to the network ACL. - */ - Tags?: TagList; - /** - * The ID of the VPC for the network ACL. - */ - VpcId?: String; - } - export interface NetworkAclAssociation { - /** - * The ID of the association between a network ACL and a subnet. - */ - NetworkAclAssociationId?: String; - /** - * The ID of the network ACL. - */ - NetworkAclId?: String; - /** - * The ID of the subnet. - */ - SubnetId?: String; - } - export type NetworkAclAssociationList = NetworkAclAssociation[]; - export interface NetworkAclEntry { - /** - * The IPv4 network range to allow or deny, in CIDR notation. - */ - CidrBlock?: String; - /** - * Indicates whether the rule is an egress rule (applied to traffic leaving the subnet). - */ - Egress?: Boolean; - /** - * ICMP protocol: The ICMP type and code. - */ - IcmpTypeCode?: IcmpTypeCode; - /** - * The IPv6 network range to allow or deny, in CIDR notation. - */ - Ipv6CidrBlock?: String; - /** - * TCP or UDP protocols: The range of ports the rule applies to. - */ - PortRange?: PortRange; - /** - * The protocol. A value of -1 means all protocols. - */ - Protocol?: String; - /** - * Indicates whether to allow or deny the traffic that matches the rule. - */ - RuleAction?: RuleAction; - /** - * The rule number for the entry. ACL entries are processed in ascending order by rule number. - */ - RuleNumber?: Integer; - } - export type NetworkAclEntryList = NetworkAclEntry[]; - export type NetworkAclList = NetworkAcl[]; - export interface NetworkInterface { - /** - * The association information for an Elastic IP address (IPv4) associated with the network interface. - */ - Association?: NetworkInterfaceAssociation; - /** - * The network interface attachment. - */ - Attachment?: NetworkInterfaceAttachment; - /** - * The Availability Zone. - */ - AvailabilityZone?: String; - /** - * A description. - */ - Description?: String; - /** - * Any security groups for the network interface. - */ - Groups?: GroupIdentifierList; - /** - * The type of interface. - */ - InterfaceType?: NetworkInterfaceType; - /** - * The IPv6 addresses associated with the network interface. - */ - Ipv6Addresses?: NetworkInterfaceIpv6AddressesList; - /** - * The MAC address. - */ - MacAddress?: String; - /** - * The ID of the network interface. - */ - NetworkInterfaceId?: String; - /** - * The AWS account ID of the owner of the network interface. - */ - OwnerId?: String; - /** - * The private DNS name. - */ - PrivateDnsName?: String; - /** - * The IPv4 address of the network interface within the subnet. - */ - PrivateIpAddress?: String; - /** - * The private IPv4 addresses associated with the network interface. - */ - PrivateIpAddresses?: NetworkInterfacePrivateIpAddressList; - /** - * The ID of the entity that launched the instance on your behalf (for example, AWS Management Console or Auto Scaling). - */ - RequesterId?: String; - /** - * Indicates whether the network interface is being managed by AWS. - */ - RequesterManaged?: Boolean; - /** - * Indicates whether traffic to or from the instance is validated. - */ - SourceDestCheck?: Boolean; - /** - * The status of the network interface. - */ - Status?: NetworkInterfaceStatus; - /** - * The ID of the subnet. - */ - SubnetId?: String; - /** - * Any tags assigned to the network interface. - */ - TagSet?: TagList; - /** - * The ID of the VPC. - */ - VpcId?: String; - } - export interface NetworkInterfaceAssociation { - /** - * The allocation ID. - */ - AllocationId?: String; - /** - * The association ID. - */ - AssociationId?: String; - /** - * The ID of the Elastic IP address owner. - */ - IpOwnerId?: String; - /** - * The public DNS name. - */ - PublicDnsName?: String; - /** - * The address of the Elastic IP address bound to the network interface. - */ - PublicIp?: String; - } - export interface NetworkInterfaceAttachment { - /** - * The timestamp indicating when the attachment initiated. - */ - AttachTime?: DateTime; - /** - * The ID of the network interface attachment. - */ - AttachmentId?: String; - /** - * Indicates whether the network interface is deleted when the instance is terminated. - */ - DeleteOnTermination?: Boolean; - /** - * The device index of the network interface attachment on the instance. - */ - DeviceIndex?: Integer; - /** - * The ID of the instance. - */ - InstanceId?: String; - /** - * The AWS account ID of the owner of the instance. - */ - InstanceOwnerId?: String; - /** - * The attachment state. - */ - Status?: AttachmentStatus; - } - export interface NetworkInterfaceAttachmentChanges { - /** - * The ID of the network interface attachment. - */ - AttachmentId?: String; - /** - * Indicates whether the network interface is deleted when the instance is terminated. - */ - DeleteOnTermination?: Boolean; - } - export type NetworkInterfaceAttribute = "description"|"groupSet"|"sourceDestCheck"|"attachment"|string; - export type NetworkInterfaceIdList = String[]; - export interface NetworkInterfaceIpv6Address { - /** - * The IPv6 address. - */ - Ipv6Address?: String; - } - export type NetworkInterfaceIpv6AddressesList = NetworkInterfaceIpv6Address[]; - export type NetworkInterfaceList = NetworkInterface[]; - export interface NetworkInterfacePermission { - /** - * The ID of the network interface permission. - */ - NetworkInterfacePermissionId?: String; - /** - * The ID of the network interface. - */ - NetworkInterfaceId?: String; - /** - * The AWS account ID. - */ - AwsAccountId?: String; - /** - * The AWS service. - */ - AwsService?: String; - /** - * The type of permission. - */ - Permission?: InterfacePermissionType; - /** - * Information about the state of the permission. - */ - PermissionState?: NetworkInterfacePermissionState; - } - export type NetworkInterfacePermissionIdList = String[]; - export type NetworkInterfacePermissionList = NetworkInterfacePermission[]; - export interface NetworkInterfacePermissionState { - /** - * The state of the permission. - */ - State?: NetworkInterfacePermissionStateCode; - /** - * A status message, if applicable. - */ - StatusMessage?: String; - } - export type NetworkInterfacePermissionStateCode = "pending"|"granted"|"revoking"|"revoked"|string; - export interface NetworkInterfacePrivateIpAddress { - /** - * The association information for an Elastic IP address (IPv4) associated with the network interface. - */ - Association?: NetworkInterfaceAssociation; - /** - * Indicates whether this IPv4 address is the primary private IPv4 address of the network interface. - */ - Primary?: Boolean; - /** - * The private DNS name. - */ - PrivateDnsName?: String; - /** - * The private IPv4 address. - */ - PrivateIpAddress?: String; - } - export type NetworkInterfacePrivateIpAddressList = NetworkInterfacePrivateIpAddress[]; - export type NetworkInterfaceStatus = "available"|"attaching"|"in-use"|"detaching"|string; - export type NetworkInterfaceType = "interface"|"natGateway"|string; - export interface NewDhcpConfiguration { - Key?: String; - Values?: ValueStringList; - } - export type NewDhcpConfigurationList = NewDhcpConfiguration[]; - export type NextToken = string; - export type OccurrenceDayRequestSet = Integer[]; - export type OccurrenceDaySet = Integer[]; - export type OfferingClassType = "standard"|"convertible"|string; - export type OfferingTypeValues = "Heavy Utilization"|"Medium Utilization"|"Light Utilization"|"No Upfront"|"Partial Upfront"|"All Upfront"|string; - export type OperationType = "add"|"remove"|string; - export type OwnerStringList = String[]; - export type PaymentOption = "AllUpfront"|"PartialUpfront"|"NoUpfront"|string; - export interface PciId { - /** - * The ID of the device. - */ - DeviceId?: String; - /** - * The ID of the vendor. - */ - VendorId?: String; - /** - * The ID of the subsystem. - */ - SubsystemId?: String; - /** - * The ID of the vendor for the subsystem. - */ - SubsystemVendorId?: String; - } - export interface PeeringConnectionOptions { - /** - * If true, enables a local VPC to resolve public DNS hostnames to private IP addresses when queried from instances in the peer VPC. - */ - AllowDnsResolutionFromRemoteVpc?: Boolean; - /** - * If true, enables outbound communication from an EC2-Classic instance that's linked to a local VPC via ClassicLink to instances in a peer VPC. - */ - AllowEgressFromLocalClassicLinkToRemoteVpc?: Boolean; - /** - * If true, enables outbound communication from instances in a local VPC to an EC2-Classic instance that's linked to a peer VPC via ClassicLink. - */ - AllowEgressFromLocalVpcToRemoteClassicLink?: Boolean; - } - export interface PeeringConnectionOptionsRequest { - /** - * If true, enables a local VPC to resolve public DNS hostnames to private IP addresses when queried from instances in the peer VPC. - */ - AllowDnsResolutionFromRemoteVpc?: Boolean; - /** - * If true, enables outbound communication from an EC2-Classic instance that's linked to a local VPC via ClassicLink to instances in a peer VPC. - */ - AllowEgressFromLocalClassicLinkToRemoteVpc?: Boolean; - /** - * If true, enables outbound communication from instances in a local VPC to an EC2-Classic instance that's linked to a peer VPC via ClassicLink. - */ - AllowEgressFromLocalVpcToRemoteClassicLink?: Boolean; - } - export type PermissionGroup = "all"|string; - export interface Placement { - /** - * The Availability Zone of the instance. - */ - AvailabilityZone?: String; - /** - * The affinity setting for the instance on the Dedicated Host. This parameter is not supported for the ImportInstance command. - */ - Affinity?: String; - /** - * The name of the placement group the instance is in (for cluster compute instances). - */ - GroupName?: String; - /** - * The ID of the Dedicated Host on which the instance resides. This parameter is not supported for the ImportInstance command. - */ - HostId?: String; - /** - * The tenancy of the instance (if the instance is running in a VPC). An instance with a tenancy of dedicated runs on single-tenant hardware. The host tenancy is not supported for the ImportInstance command. - */ - Tenancy?: Tenancy; - /** - * Reserved for future use. - */ - SpreadDomain?: String; - } - export interface PlacementGroup { - /** - * The name of the placement group. - */ - GroupName?: String; - /** - * The state of the placement group. - */ - State?: PlacementGroupState; - /** - * The placement strategy. - */ - Strategy?: PlacementStrategy; - } - export type PlacementGroupList = PlacementGroup[]; - export type PlacementGroupState = "pending"|"available"|"deleting"|"deleted"|string; - export type PlacementGroupStringList = String[]; - export type PlacementStrategy = "cluster"|string; - export type PlatformValues = "Windows"|string; - export interface PortRange { - /** - * The first port in the range. - */ - From?: Integer; - /** - * The last port in the range. - */ - To?: Integer; - } - export interface PrefixList { - /** - * The IP address range of the AWS service. - */ - Cidrs?: ValueStringList; - /** - * The ID of the prefix. - */ - PrefixListId?: String; - /** - * The name of the prefix. - */ - PrefixListName?: String; - } - export interface PrefixListId { - /** - * A description for the security group rule that references this prefix list ID. Constraints: Up to 255 characters in length. Allowed characters are a-z, A-Z, 0-9, spaces, and ._-:/()#,@[]+=;{}!$* - */ - Description?: String; - /** - * The ID of the prefix. - */ - PrefixListId?: String; - } - export type PrefixListIdList = PrefixListId[]; - export type PrefixListIdSet = String[]; - export type PrefixListSet = PrefixList[]; - export interface PriceSchedule { - /** - * The current price schedule, as determined by the term remaining for the Reserved Instance in the listing. A specific price schedule is always in effect, but only one price schedule can be active at any time. Take, for example, a Reserved Instance listing that has five months remaining in its term. When you specify price schedules for five months and two months, this means that schedule 1, covering the first three months of the remaining term, will be active during months 5, 4, and 3. Then schedule 2, covering the last two months of the term, will be active for months 2 and 1. - */ - Active?: Boolean; - /** - * The currency for transacting the Reserved Instance resale. At this time, the only supported currency is USD. - */ - CurrencyCode?: CurrencyCodeValues; - /** - * The fixed price for the term. - */ - Price?: Double; - /** - * The number of months remaining in the reservation. For example, 2 is the second to the last month before the capacity reservation expires. - */ - Term?: Long; - } - export type PriceScheduleList = PriceSchedule[]; - export interface PriceScheduleSpecification { - /** - * The currency for transacting the Reserved Instance resale. At this time, the only supported currency is USD. - */ - CurrencyCode?: CurrencyCodeValues; - /** - * The fixed price for the term. - */ - Price?: Double; - /** - * The number of months remaining in the reservation. For example, 2 is the second to the last month before the capacity reservation expires. - */ - Term?: Long; - } - export type PriceScheduleSpecificationList = PriceScheduleSpecification[]; - export interface PricingDetail { - /** - * The number of reservations available for the price. - */ - Count?: Integer; - /** - * The price per instance. - */ - Price?: Double; - } - export type PricingDetailsList = PricingDetail[]; - export type PrivateIpAddressConfigSet = ScheduledInstancesPrivateIpAddressConfig[]; - export interface PrivateIpAddressSpecification { - /** - * Indicates whether the private IPv4 address is the primary private IPv4 address. Only one IPv4 address can be designated as primary. - */ - Primary?: Boolean; - /** - * The private IPv4 addresses. - */ - PrivateIpAddress: String; - } - export type PrivateIpAddressSpecificationList = PrivateIpAddressSpecification[]; - export type PrivateIpAddressStringList = String[]; - export interface ProductCode { - /** - * The product code. - */ - ProductCodeId?: String; - /** - * The type of product code. - */ - ProductCodeType?: ProductCodeValues; - } - export type ProductCodeList = ProductCode[]; - export type ProductCodeStringList = String[]; - export type ProductCodeValues = "devpay"|"marketplace"|string; - export type ProductDescriptionList = String[]; - export interface PropagatingVgw { - /** - * The ID of the virtual private gateway (VGW). - */ - GatewayId?: String; - } - export type PropagatingVgwList = PropagatingVgw[]; - export interface ProvisionedBandwidth { - /** - * Reserved. If you need to sustain traffic greater than the documented limits, contact us through the Support Center. - */ - ProvisionTime?: DateTime; - /** - * Reserved. If you need to sustain traffic greater than the documented limits, contact us through the Support Center. - */ - Provisioned?: String; - /** - * Reserved. If you need to sustain traffic greater than the documented limits, contact us through the Support Center. - */ - RequestTime?: DateTime; - /** - * Reserved. If you need to sustain traffic greater than the documented limits, contact us through the Support Center. - */ - Requested?: String; - /** - * Reserved. If you need to sustain traffic greater than the documented limits, contact us through the Support Center. - */ - Status?: String; - } - export type PublicIpStringList = String[]; - export interface Purchase { - /** - * The currency in which the UpfrontPrice and HourlyPrice amounts are specified. At this time, the only supported currency is USD. - */ - CurrencyCode?: CurrencyCodeValues; - /** - * The duration of the reservation's term in seconds. - */ - Duration?: Integer; - /** - * The IDs of the Dedicated Hosts associated with the reservation. - */ - HostIdSet?: ResponseHostIdSet; - /** - * The ID of the reservation. - */ - HostReservationId?: String; - /** - * The hourly price of the reservation per hour. - */ - HourlyPrice?: String; - /** - * The instance family on the Dedicated Host that the reservation can be associated with. - */ - InstanceFamily?: String; - /** - * The payment option for the reservation. - */ - PaymentOption?: PaymentOption; - /** - * The upfront price of the reservation. - */ - UpfrontPrice?: String; - } - export interface PurchaseHostReservationRequest { - /** - * Unique, case-sensitive identifier you provide to ensure idempotency of the request. For more information, see How to Ensure Idempotency in the Amazon Elastic Compute Cloud User Guide. - */ - ClientToken?: String; - /** - * The currency in which the totalUpfrontPrice, LimitPrice, and totalHourlyPrice amounts are specified. At this time, the only supported currency is USD. - */ - CurrencyCode?: CurrencyCodeValues; - /** - * The ID/s of the Dedicated Host/s that the reservation will be associated with. - */ - HostIdSet: RequestHostIdSet; - /** - * The specified limit is checked against the total upfront cost of the reservation (calculated as the offering's upfront cost multiplied by the host count). If the total upfront cost is greater than the specified price limit, the request will fail. This is used to ensure that the purchase does not exceed the expected upfront cost of the purchase. At this time, the only supported currency is USD. For example, to indicate a limit price of USD 100, specify 100.00. - */ - LimitPrice?: String; - /** - * The ID of the offering. - */ - OfferingId: String; - } - export interface PurchaseHostReservationResult { - /** - * Unique, case-sensitive identifier you provide to ensure idempotency of the request. For more information, see How to Ensure Idempotency in the Amazon Elastic Compute Cloud User Guide - */ - ClientToken?: String; - /** - * The currency in which the totalUpfrontPrice and totalHourlyPrice amounts are specified. At this time, the only supported currency is USD. - */ - CurrencyCode?: CurrencyCodeValues; - /** - * Describes the details of the purchase. - */ - Purchase?: PurchaseSet; - /** - * The total hourly price of the reservation calculated per hour. - */ - TotalHourlyPrice?: String; - /** - * The total amount that will be charged to your account when you purchase the reservation. - */ - TotalUpfrontPrice?: String; - } - export interface PurchaseRequest { - /** - * The number of instances. - */ - InstanceCount: Integer; - /** - * The purchase token. - */ - PurchaseToken: String; - } - export type PurchaseRequestSet = PurchaseRequest[]; - export interface PurchaseReservedInstancesOfferingRequest { - /** - * The number of Reserved Instances to purchase. - */ - InstanceCount: Integer; - /** - * The ID of the Reserved Instance offering to purchase. - */ - ReservedInstancesOfferingId: String; - /** - * Checks whether you have the required permissions for the action, without actually making the request, and provides an error response. If you have the required permissions, the error response is DryRunOperation. Otherwise, it is UnauthorizedOperation. - */ - DryRun?: Boolean; - /** - * Specified for Reserved Instance Marketplace offerings to limit the total order and ensure that the Reserved Instances are not purchased at unexpected prices. - */ - LimitPrice?: ReservedInstanceLimitPrice; - } - export interface PurchaseReservedInstancesOfferingResult { - /** - * The IDs of the purchased Reserved Instances. - */ - ReservedInstancesId?: String; - } - export interface PurchaseScheduledInstancesRequest { - /** - * Unique, case-sensitive identifier that ensures the idempotency of the request. For more information, see Ensuring Idempotency. - */ - ClientToken?: String; - /** - * Checks whether you have the required permissions for the action, without actually making the request, and provides an error response. If you have the required permissions, the error response is DryRunOperation. Otherwise, it is UnauthorizedOperation. - */ - DryRun?: Boolean; - /** - * One or more purchase requests. - */ - PurchaseRequests: PurchaseRequestSet; - } - export interface PurchaseScheduledInstancesResult { - /** - * Information about the Scheduled Instances. - */ - ScheduledInstanceSet?: PurchasedScheduledInstanceSet; - } - export type PurchaseSet = Purchase[]; - export type PurchasedScheduledInstanceSet = ScheduledInstance[]; - export type RIProductDescription = "Linux/UNIX"|"Linux/UNIX (Amazon VPC)"|"Windows"|"Windows (Amazon VPC)"|string; - export type ReasonCodesList = ReportInstanceReasonCodes[]; - export interface RebootInstancesRequest { - /** - * One or more instance IDs. - */ - InstanceIds: InstanceIdStringList; - /** - * Checks whether you have the required permissions for the action, without actually making the request, and provides an error response. If you have the required permissions, the error response is DryRunOperation. Otherwise, it is UnauthorizedOperation. - */ - DryRun?: Boolean; - } - export interface RecurringCharge { - /** - * The amount of the recurring charge. - */ - Amount?: Double; - /** - * The frequency of the recurring charge. - */ - Frequency?: RecurringChargeFrequency; - } - export type RecurringChargeFrequency = "Hourly"|string; - export type RecurringChargesList = RecurringCharge[]; - export interface Region { - /** - * The region service endpoint. - */ - Endpoint?: String; - /** - * The name of the region. - */ - RegionName?: String; - } - export type RegionList = Region[]; - export type RegionNameStringList = String[]; - export interface RegisterImageRequest { - /** - * The full path to your AMI manifest in Amazon S3 storage. - */ - ImageLocation?: String; - /** - * The architecture of the AMI. Default: For Amazon EBS-backed AMIs, i386. For instance store-backed AMIs, the architecture specified in the manifest file. - */ - Architecture?: ArchitectureValues; - /** - * One or more block device mapping entries. - */ - BlockDeviceMappings?: BlockDeviceMappingRequestList; - /** - * A description for your AMI. - */ - Description?: String; - /** - * Checks whether you have the required permissions for the action, without actually making the request, and provides an error response. If you have the required permissions, the error response is DryRunOperation. Otherwise, it is UnauthorizedOperation. - */ - DryRun?: Boolean; - /** - * Set to true to enable enhanced networking with ENA for the AMI and any instances that you launch from the AMI. This option is supported only for HVM AMIs. Specifying this option with a PV AMI can make instances launched from the AMI unreachable. - */ - EnaSupport?: Boolean; - /** - * The ID of the kernel. - */ - KernelId?: String; - /** - * A name for your AMI. Constraints: 3-128 alphanumeric characters, parentheses (()), square brackets ([]), spaces ( ), periods (.), slashes (/), dashes (-), single quotes ('), at-signs (@), or underscores(_) - */ - Name: String; - /** - * The billing product codes. Your account must be authorized to specify billing product codes. Otherwise, you can use the AWS Marketplace to bill for the use of an AMI. - */ - BillingProducts?: BillingProductList; - /** - * The ID of the RAM disk. - */ - RamdiskId?: String; - /** - * The name of the root device (for example, /dev/sda1, or /dev/xvda). - */ - RootDeviceName?: String; - /** - * Set to simple to enable enhanced networking with the Intel 82599 Virtual Function interface for the AMI and any instances that you launch from the AMI. There is no way to disable sriovNetSupport at this time. This option is supported only for HVM AMIs. Specifying this option with a PV AMI can make instances launched from the AMI unreachable. - */ - SriovNetSupport?: String; - /** - * The type of virtualization. Default: paravirtual - */ - VirtualizationType?: String; - } - export interface RegisterImageResult { - /** - * The ID of the newly registered AMI. - */ - ImageId?: String; - } - export interface RejectVpcPeeringConnectionRequest { - /** - * Checks whether you have the required permissions for the action, without actually making the request, and provides an error response. If you have the required permissions, the error response is DryRunOperation. Otherwise, it is UnauthorizedOperation. - */ - DryRun?: Boolean; - /** - * The ID of the VPC peering connection. - */ - VpcPeeringConnectionId: String; - } - export interface RejectVpcPeeringConnectionResult { - /** - * Returns true if the request succeeds; otherwise, it returns an error. - */ - Return?: Boolean; - } - export interface ReleaseAddressRequest { - /** - * [EC2-VPC] The allocation ID. Required for EC2-VPC. - */ - AllocationId?: String; - /** - * [EC2-Classic] The Elastic IP address. Required for EC2-Classic. - */ - PublicIp?: String; - /** - * Checks whether you have the required permissions for the action, without actually making the request, and provides an error response. If you have the required permissions, the error response is DryRunOperation. Otherwise, it is UnauthorizedOperation. - */ - DryRun?: Boolean; - } - export interface ReleaseHostsRequest { - /** - * The IDs of the Dedicated Hosts you want to release. - */ - HostIds: RequestHostIdList; - } - export interface ReleaseHostsResult { - /** - * The IDs of the Dedicated Hosts that were successfully released. - */ - Successful?: ResponseHostIdList; - /** - * The IDs of the Dedicated Hosts that could not be released, including an error message. - */ - Unsuccessful?: UnsuccessfulItemList; - } - export interface ReplaceIamInstanceProfileAssociationRequest { - /** - * The IAM instance profile. - */ - IamInstanceProfile: IamInstanceProfileSpecification; - /** - * The ID of the existing IAM instance profile association. - */ - AssociationId: String; - } - export interface ReplaceIamInstanceProfileAssociationResult { - /** - * Information about the IAM instance profile association. - */ - IamInstanceProfileAssociation?: IamInstanceProfileAssociation; - } - export interface ReplaceNetworkAclAssociationRequest { - /** - * The ID of the current association between the original network ACL and the subnet. - */ - AssociationId: String; - /** - * Checks whether you have the required permissions for the action, without actually making the request, and provides an error response. If you have the required permissions, the error response is DryRunOperation. Otherwise, it is UnauthorizedOperation. - */ - DryRun?: Boolean; - /** - * The ID of the new network ACL to associate with the subnet. - */ - NetworkAclId: String; - } - export interface ReplaceNetworkAclAssociationResult { - /** - * The ID of the new association. - */ - NewAssociationId?: String; - } - export interface ReplaceNetworkAclEntryRequest { - /** - * The IPv4 network range to allow or deny, in CIDR notation (for example 172.16.0.0/24). - */ - CidrBlock?: String; - /** - * Checks whether you have the required permissions for the action, without actually making the request, and provides an error response. If you have the required permissions, the error response is DryRunOperation. Otherwise, it is UnauthorizedOperation. - */ - DryRun?: Boolean; - /** - * Indicates whether to replace the egress rule. Default: If no value is specified, we replace the ingress rule. - */ - Egress: Boolean; - /** - * ICMP protocol: The ICMP or ICMPv6 type and code. Required if specifying the ICMP (1) protocol, or protocol 58 (ICMPv6) with an IPv6 CIDR block. - */ - IcmpTypeCode?: IcmpTypeCode; - /** - * The IPv6 network range to allow or deny, in CIDR notation (for example 2001:bd8:1234:1a00::/64). - */ - Ipv6CidrBlock?: String; - /** - * The ID of the ACL. - */ - NetworkAclId: String; - /** - * TCP or UDP protocols: The range of ports the rule applies to. Required if specifying TCP (6) or UDP (17) for the protocol. - */ - PortRange?: PortRange; - /** - * The IP protocol. You can specify all or -1 to mean all protocols. If you specify all, -1, or a protocol number other than tcp, udp, or icmp, traffic on all ports is allowed, regardless of any ports or ICMP types or codes you specify. If you specify protocol 58 (ICMPv6) and specify an IPv4 CIDR block, traffic for all ICMP types and codes allowed, regardless of any that you specify. If you specify protocol 58 (ICMPv6) and specify an IPv6 CIDR block, you must specify an ICMP type and code. - */ - Protocol: String; - /** - * Indicates whether to allow or deny the traffic that matches the rule. - */ - RuleAction: RuleAction; - /** - * The rule number of the entry to replace. - */ - RuleNumber: Integer; - } - export interface ReplaceRouteRequest { - /** - * The IPv4 CIDR address block used for the destination match. The value you provide must match the CIDR of an existing route in the table. - */ - DestinationCidrBlock?: String; - /** - * The IPv6 CIDR address block used for the destination match. The value you provide must match the CIDR of an existing route in the table. - */ - DestinationIpv6CidrBlock?: String; - /** - * Checks whether you have the required permissions for the action, without actually making the request, and provides an error response. If you have the required permissions, the error response is DryRunOperation. Otherwise, it is UnauthorizedOperation. - */ - DryRun?: Boolean; - /** - * [IPv6 traffic only] The ID of an egress-only Internet gateway. - */ - EgressOnlyInternetGatewayId?: String; - /** - * The ID of an Internet gateway or virtual private gateway. - */ - GatewayId?: String; - /** - * The ID of a NAT instance in your VPC. - */ - InstanceId?: String; - /** - * [IPv4 traffic only] The ID of a NAT gateway. - */ - NatGatewayId?: String; - /** - * The ID of a network interface. - */ - NetworkInterfaceId?: String; - /** - * The ID of the route table. - */ - RouteTableId: String; - /** - * The ID of a VPC peering connection. - */ - VpcPeeringConnectionId?: String; - } - export interface ReplaceRouteTableAssociationRequest { - /** - * The association ID. - */ - AssociationId: String; - /** - * Checks whether you have the required permissions for the action, without actually making the request, and provides an error response. If you have the required permissions, the error response is DryRunOperation. Otherwise, it is UnauthorizedOperation. - */ - DryRun?: Boolean; - /** - * The ID of the new route table to associate with the subnet. - */ - RouteTableId: String; - } - export interface ReplaceRouteTableAssociationResult { - /** - * The ID of the new association. - */ - NewAssociationId?: String; - } - export type ReportInstanceReasonCodes = "instance-stuck-in-state"|"unresponsive"|"not-accepting-credentials"|"password-not-available"|"performance-network"|"performance-instance-store"|"performance-ebs-volume"|"performance-other"|"other"|string; - export interface ReportInstanceStatusRequest { - /** - * Descriptive text about the health state of your instance. - */ - Description?: String; - /** - * Checks whether you have the required permissions for the action, without actually making the request, and provides an error response. If you have the required permissions, the error response is DryRunOperation. Otherwise, it is UnauthorizedOperation. - */ - DryRun?: Boolean; - /** - * The time at which the reported instance health state ended. - */ - EndTime?: DateTime; - /** - * One or more instances. - */ - Instances: InstanceIdStringList; - /** - * One or more reason codes that describe the health state of your instance. instance-stuck-in-state: My instance is stuck in a state. unresponsive: My instance is unresponsive. not-accepting-credentials: My instance is not accepting my credentials. password-not-available: A password is not available for my instance. performance-network: My instance is experiencing performance problems that I believe are network related. performance-instance-store: My instance is experiencing performance problems that I believe are related to the instance stores. performance-ebs-volume: My instance is experiencing performance problems that I believe are related to an EBS volume. performance-other: My instance is experiencing performance problems. other: [explain using the description parameter] - */ - ReasonCodes: ReasonCodesList; - /** - * The time at which the reported instance health state began. - */ - StartTime?: DateTime; - /** - * The status of all instances listed. - */ - Status: ReportStatusType; - } - export type ReportStatusType = "ok"|"impaired"|string; - export type RequestHostIdList = String[]; - export type RequestHostIdSet = String[]; - export interface RequestSpotFleetRequest { - /** - * Checks whether you have the required permissions for the action, without actually making the request, and provides an error response. If you have the required permissions, the error response is DryRunOperation. Otherwise, it is UnauthorizedOperation. - */ - DryRun?: Boolean; - /** - * The configuration for the Spot fleet request. - */ - SpotFleetRequestConfig: SpotFleetRequestConfigData; - } - export interface RequestSpotFleetResponse { - /** - * The ID of the Spot fleet request. - */ - SpotFleetRequestId: String; - } - export interface RequestSpotInstancesRequest { - /** - * The user-specified name for a logical grouping of bids. When you specify an Availability Zone group in a Spot Instance request, all Spot instances in the request are launched in the same Availability Zone. Instance proximity is maintained with this parameter, but the choice of Availability Zone is not. The group applies only to bids for Spot Instances of the same instance type. Any additional Spot instance requests that are specified with the same Availability Zone group name are launched in that same Availability Zone, as long as at least one instance from the group is still active. If there is no active instance running in the Availability Zone group that you specify for a new Spot instance request (all instances are terminated, the bid is expired, or the bid falls below current market), then Amazon EC2 launches the instance in any Availability Zone where the constraint can be met. Consequently, the subsequent set of Spot instances could be placed in a different zone from the original request, even if you specified the same Availability Zone group. Default: Instances are launched in any available Availability Zone. - */ - AvailabilityZoneGroup?: String; - /** - * The required duration for the Spot instances (also known as Spot blocks), in minutes. This value must be a multiple of 60 (60, 120, 180, 240, 300, or 360). The duration period starts as soon as your Spot instance receives its instance ID. At the end of the duration period, Amazon EC2 marks the Spot instance for termination and provides a Spot instance termination notice, which gives the instance a two-minute warning before it terminates. Note that you can't specify an Availability Zone group or a launch group if you specify a duration. - */ - BlockDurationMinutes?: Integer; - /** - * Unique, case-sensitive identifier that you provide to ensure the idempotency of the request. For more information, see How to Ensure Idempotency in the Amazon Elastic Compute Cloud User Guide. - */ - ClientToken?: String; - /** - * Checks whether you have the required permissions for the action, without actually making the request, and provides an error response. If you have the required permissions, the error response is DryRunOperation. Otherwise, it is UnauthorizedOperation. - */ - DryRun?: Boolean; - /** - * The maximum number of Spot instances to launch. Default: 1 - */ - InstanceCount?: Integer; - /** - * The instance launch group. Launch groups are Spot instances that launch together and terminate together. Default: Instances are launched and terminated individually - */ - LaunchGroup?: String; - /** - * The launch specification. - */ - LaunchSpecification?: RequestSpotLaunchSpecification; - /** - * The maximum hourly price (bid) for any Spot instance launched to fulfill the request. - */ - SpotPrice: String; - /** - * The Spot instance request type. Default: one-time - */ - Type?: SpotInstanceType; - /** - * The start date of the request. If this is a one-time request, the request becomes active at this date and time and remains active until all instances launch, the request expires, or the request is canceled. If the request is persistent, the request becomes active at this date and time and remains active until it expires or is canceled. Default: The request is effective indefinitely. - */ - ValidFrom?: DateTime; - /** - * The end date of the request. If this is a one-time request, the request remains active until all instances launch, the request is canceled, or this date is reached. If the request is persistent, it remains active until it is canceled or this date and time is reached. Default: The request is effective indefinitely. - */ - ValidUntil?: DateTime; - /** - * Indicates whether a Spot instance stops or terminates when it is interrupted. - */ - InstanceInterruptionBehavior?: InstanceInterruptionBehavior; - } - export interface RequestSpotInstancesResult { - /** - * One or more Spot instance requests. - */ - SpotInstanceRequests?: SpotInstanceRequestList; - } - export interface RequestSpotLaunchSpecification { - /** - * One or more security group IDs. - */ - SecurityGroupIds?: ValueStringList; - /** - * One or more security groups. When requesting instances in a VPC, you must specify the IDs of the security groups. When requesting instances in EC2-Classic, you can specify the names or the IDs of the security groups. - */ - SecurityGroups?: ValueStringList; - /** - * Deprecated. - */ - AddressingType?: String; - /** - * One or more block device mapping entries. Although you can specify encrypted EBS volumes in this block device mapping for your Spot Instances, these volumes are not encrypted. - */ - BlockDeviceMappings?: BlockDeviceMappingList; - /** - * Indicates whether the instance is optimized for EBS I/O. This optimization provides dedicated throughput to Amazon EBS and an optimized configuration stack to provide optimal EBS I/O performance. This optimization isn't available with all instance types. Additional usage charges apply when using an EBS Optimized instance. Default: false - */ - EbsOptimized?: Boolean; - /** - * The IAM instance profile. - */ - IamInstanceProfile?: IamInstanceProfileSpecification; - /** - * The ID of the AMI. - */ - ImageId?: String; - /** - * The instance type. - */ - InstanceType?: InstanceType; - /** - * The ID of the kernel. - */ - KernelId?: String; - /** - * The name of the key pair. - */ - KeyName?: String; - /** - * Indicates whether basic or detailed monitoring is enabled for the instance. Default: Disabled - */ - Monitoring?: RunInstancesMonitoringEnabled; - /** - * One or more network interfaces. If you specify a network interface, you must specify subnet IDs and security group IDs using the network interface. - */ - NetworkInterfaces?: InstanceNetworkInterfaceSpecificationList; - /** - * The placement information for the instance. - */ - Placement?: SpotPlacement; - /** - * The ID of the RAM disk. - */ - RamdiskId?: String; - /** - * The ID of the subnet in which to launch the instance. - */ - SubnetId?: String; - /** - * The user data to make available to the instances. If you are using an AWS SDK or command line tool, Base64-encoding is performed for you, and you can load the text from a file. Otherwise, you must provide Base64-encoded text. - */ - UserData?: String; - } - export interface Reservation { - /** - * [EC2-Classic only] One or more security groups. - */ - Groups?: GroupIdentifierList; - /** - * One or more instances. - */ - Instances?: InstanceList; - /** - * The ID of the AWS account that owns the reservation. - */ - OwnerId?: String; - /** - * The ID of the requester that launched the instances on your behalf (for example, AWS Management Console or Auto Scaling). - */ - RequesterId?: String; - /** - * The ID of the reservation. - */ - ReservationId?: String; - } - export type ReservationList = Reservation[]; - export type ReservationState = "payment-pending"|"payment-failed"|"active"|"retired"|string; - export interface ReservationValue { - /** - * The hourly rate of the reservation. - */ - HourlyPrice?: String; - /** - * The balance of the total value (the sum of remainingUpfrontValue + hourlyPrice * number of hours remaining). - */ - RemainingTotalValue?: String; - /** - * The remaining upfront cost of the reservation. - */ - RemainingUpfrontValue?: String; - } - export type ReservedInstanceIdSet = String[]; - export interface ReservedInstanceLimitPrice { - /** - * Used for Reserved Instance Marketplace offerings. Specifies the limit price on the total order (instanceCount * price). - */ - Amount?: Double; - /** - * The currency in which the limitPrice amount is specified. At this time, the only supported currency is USD. - */ - CurrencyCode?: CurrencyCodeValues; - } - export interface ReservedInstanceReservationValue { - /** - * The total value of the Convertible Reserved Instance that you are exchanging. - */ - ReservationValue?: ReservationValue; - /** - * The ID of the Convertible Reserved Instance that you are exchanging. - */ - ReservedInstanceId?: String; - } - export type ReservedInstanceReservationValueSet = ReservedInstanceReservationValue[]; - export type ReservedInstanceState = "payment-pending"|"active"|"payment-failed"|"retired"|string; - export interface ReservedInstances { - /** - * The Availability Zone in which the Reserved Instance can be used. - */ - AvailabilityZone?: String; - /** - * The duration of the Reserved Instance, in seconds. - */ - Duration?: Long; - /** - * The time when the Reserved Instance expires. - */ - End?: DateTime; - /** - * The purchase price of the Reserved Instance. - */ - FixedPrice?: Float; - /** - * The number of reservations purchased. - */ - InstanceCount?: Integer; - /** - * The instance type on which the Reserved Instance can be used. - */ - InstanceType?: InstanceType; - /** - * The Reserved Instance product platform description. - */ - ProductDescription?: RIProductDescription; - /** - * The ID of the Reserved Instance. - */ - ReservedInstancesId?: String; - /** - * The date and time the Reserved Instance started. - */ - Start?: DateTime; - /** - * The state of the Reserved Instance purchase. - */ - State?: ReservedInstanceState; - /** - * The usage price of the Reserved Instance, per hour. - */ - UsagePrice?: Float; - /** - * The currency of the Reserved Instance. It's specified using ISO 4217 standard currency codes. At this time, the only supported currency is USD. - */ - CurrencyCode?: CurrencyCodeValues; - /** - * The tenancy of the instance. - */ - InstanceTenancy?: Tenancy; - /** - * The offering class of the Reserved Instance. - */ - OfferingClass?: OfferingClassType; - /** - * The Reserved Instance offering type. - */ - OfferingType?: OfferingTypeValues; - /** - * The recurring charge tag assigned to the resource. - */ - RecurringCharges?: RecurringChargesList; - /** - * The scope of the Reserved Instance. - */ - Scope?: scope; - /** - * Any tags assigned to the resource. - */ - Tags?: TagList; - } - export interface ReservedInstancesConfiguration { - /** - * The Availability Zone for the modified Reserved Instances. - */ - AvailabilityZone?: String; - /** - * The number of modified Reserved Instances. - */ - InstanceCount?: Integer; - /** - * The instance type for the modified Reserved Instances. - */ - InstanceType?: InstanceType; - /** - * The network platform of the modified Reserved Instances, which is either EC2-Classic or EC2-VPC. - */ - Platform?: String; - /** - * Whether the Reserved Instance is applied to instances in a region or instances in a specific Availability Zone. - */ - Scope?: scope; - } - export type ReservedInstancesConfigurationList = ReservedInstancesConfiguration[]; - export interface ReservedInstancesId { - /** - * The ID of the Reserved Instance. - */ - ReservedInstancesId?: String; - } - export type ReservedInstancesIdStringList = String[]; - export type ReservedInstancesList = ReservedInstances[]; - export interface ReservedInstancesListing { - /** - * A unique, case-sensitive key supplied by the client to ensure that the request is idempotent. For more information, see Ensuring Idempotency. - */ - ClientToken?: String; - /** - * The time the listing was created. - */ - CreateDate?: DateTime; - /** - * The number of instances in this state. - */ - InstanceCounts?: InstanceCountList; - /** - * The price of the Reserved Instance listing. - */ - PriceSchedules?: PriceScheduleList; - /** - * The ID of the Reserved Instance. - */ - ReservedInstancesId?: String; - /** - * The ID of the Reserved Instance listing. - */ - ReservedInstancesListingId?: String; - /** - * The status of the Reserved Instance listing. - */ - Status?: ListingStatus; - /** - * The reason for the current status of the Reserved Instance listing. The response can be blank. - */ - StatusMessage?: String; - /** - * Any tags assigned to the resource. - */ - Tags?: TagList; - /** - * The last modified timestamp of the listing. - */ - UpdateDate?: DateTime; - } - export type ReservedInstancesListingList = ReservedInstancesListing[]; - export interface ReservedInstancesModification { - /** - * A unique, case-sensitive key supplied by the client to ensure that the request is idempotent. For more information, see Ensuring Idempotency. - */ - ClientToken?: String; - /** - * The time when the modification request was created. - */ - CreateDate?: DateTime; - /** - * The time for the modification to become effective. - */ - EffectiveDate?: DateTime; - /** - * Contains target configurations along with their corresponding new Reserved Instance IDs. - */ - ModificationResults?: ReservedInstancesModificationResultList; - /** - * The IDs of one or more Reserved Instances. - */ - ReservedInstancesIds?: ReservedIntancesIds; - /** - * A unique ID for the Reserved Instance modification. - */ - ReservedInstancesModificationId?: String; - /** - * The status of the Reserved Instances modification request. - */ - Status?: String; - /** - * The reason for the status. - */ - StatusMessage?: String; - /** - * The time when the modification request was last updated. - */ - UpdateDate?: DateTime; - } - export type ReservedInstancesModificationIdStringList = String[]; - export type ReservedInstancesModificationList = ReservedInstancesModification[]; - export interface ReservedInstancesModificationResult { - /** - * The ID for the Reserved Instances that were created as part of the modification request. This field is only available when the modification is fulfilled. - */ - ReservedInstancesId?: String; - /** - * The target Reserved Instances configurations supplied as part of the modification request. - */ - TargetConfiguration?: ReservedInstancesConfiguration; - } - export type ReservedInstancesModificationResultList = ReservedInstancesModificationResult[]; - export interface ReservedInstancesOffering { - /** - * The Availability Zone in which the Reserved Instance can be used. - */ - AvailabilityZone?: String; - /** - * The duration of the Reserved Instance, in seconds. - */ - Duration?: Long; - /** - * The purchase price of the Reserved Instance. - */ - FixedPrice?: Float; - /** - * The instance type on which the Reserved Instance can be used. - */ - InstanceType?: InstanceType; - /** - * The Reserved Instance product platform description. - */ - ProductDescription?: RIProductDescription; - /** - * The ID of the Reserved Instance offering. This is the offering ID used in GetReservedInstancesExchangeQuote to confirm that an exchange can be made. - */ - ReservedInstancesOfferingId?: String; - /** - * The usage price of the Reserved Instance, per hour. - */ - UsagePrice?: Float; - /** - * The currency of the Reserved Instance offering you are purchasing. It's specified using ISO 4217 standard currency codes. At this time, the only supported currency is USD. - */ - CurrencyCode?: CurrencyCodeValues; - /** - * The tenancy of the instance. - */ - InstanceTenancy?: Tenancy; - /** - * Indicates whether the offering is available through the Reserved Instance Marketplace (resale) or AWS. If it's a Reserved Instance Marketplace offering, this is true. - */ - Marketplace?: Boolean; - /** - * If convertible it can be exchanged for Reserved Instances of the same or higher monetary value, with different configurations. If standard, it is not possible to perform an exchange. - */ - OfferingClass?: OfferingClassType; - /** - * The Reserved Instance offering type. - */ - OfferingType?: OfferingTypeValues; - /** - * The pricing details of the Reserved Instance offering. - */ - PricingDetails?: PricingDetailsList; - /** - * The recurring charge tag assigned to the resource. - */ - RecurringCharges?: RecurringChargesList; - /** - * Whether the Reserved Instance is applied to instances in a region or an Availability Zone. - */ - Scope?: scope; - } - export type ReservedInstancesOfferingIdStringList = String[]; - export type ReservedInstancesOfferingList = ReservedInstancesOffering[]; - export type ReservedIntancesIds = ReservedInstancesId[]; - export type ResetFpgaImageAttributeName = "loadPermission"|string; - export interface ResetFpgaImageAttributeRequest { - /** - * Checks whether you have the required permissions for the action, without actually making the request, and provides an error response. If you have the required permissions, the error response is DryRunOperation. Otherwise, it is UnauthorizedOperation. - */ - DryRun?: Boolean; - /** - * The ID of the AFI. - */ - FpgaImageId: String; - /** - * The attribute. - */ - Attribute?: ResetFpgaImageAttributeName; - } - export interface ResetFpgaImageAttributeResult { - /** - * Is true if the request succeeds, and an error otherwise. - */ - Return?: Boolean; - } - export type ResetImageAttributeName = "launchPermission"|string; - export interface ResetImageAttributeRequest { - /** - * The attribute to reset (currently you can only reset the launch permission attribute). - */ - Attribute: ResetImageAttributeName; - /** - * The ID of the AMI. - */ - ImageId: String; - /** - * Checks whether you have the required permissions for the action, without actually making the request, and provides an error response. If you have the required permissions, the error response is DryRunOperation. Otherwise, it is UnauthorizedOperation. - */ - DryRun?: Boolean; - } - export interface ResetInstanceAttributeRequest { - /** - * The attribute to reset. You can only reset the following attributes: kernel | ramdisk | sourceDestCheck. To change an instance attribute, use ModifyInstanceAttribute. - */ - Attribute: InstanceAttributeName; - /** - * Checks whether you have the required permissions for the action, without actually making the request, and provides an error response. If you have the required permissions, the error response is DryRunOperation. Otherwise, it is UnauthorizedOperation. - */ - DryRun?: Boolean; - /** - * The ID of the instance. - */ - InstanceId: String; - } - export interface ResetNetworkInterfaceAttributeRequest { - /** - * Checks whether you have the required permissions for the action, without actually making the request, and provides an error response. If you have the required permissions, the error response is DryRunOperation. Otherwise, it is UnauthorizedOperation. - */ - DryRun?: Boolean; - /** - * The ID of the network interface. - */ - NetworkInterfaceId: String; - /** - * The source/destination checking attribute. Resets the value to true. - */ - SourceDestCheck?: String; - } - export interface ResetSnapshotAttributeRequest { - /** - * The attribute to reset. Currently, only the attribute for permission to create volumes can be reset. - */ - Attribute: SnapshotAttributeName; - /** - * The ID of the snapshot. - */ - SnapshotId: String; - /** - * Checks whether you have the required permissions for the action, without actually making the request, and provides an error response. If you have the required permissions, the error response is DryRunOperation. Otherwise, it is UnauthorizedOperation. - */ - DryRun?: Boolean; - } - export type ResourceIdList = String[]; - export type ResourceType = "customer-gateway"|"dhcp-options"|"image"|"instance"|"internet-gateway"|"network-acl"|"network-interface"|"reserved-instances"|"route-table"|"snapshot"|"spot-instances-request"|"subnet"|"security-group"|"volume"|"vpc"|"vpn-connection"|"vpn-gateway"|string; - export type ResponseHostIdList = String[]; - export type ResponseHostIdSet = String[]; - export type RestorableByStringList = String[]; - export interface RestoreAddressToClassicRequest { - /** - * Checks whether you have the required permissions for the action, without actually making the request, and provides an error response. If you have the required permissions, the error response is DryRunOperation. Otherwise, it is UnauthorizedOperation. - */ - DryRun?: Boolean; - /** - * The Elastic IP address. - */ - PublicIp: String; - } - export interface RestoreAddressToClassicResult { - /** - * The Elastic IP address. - */ - PublicIp?: String; - /** - * The move status for the IP address. - */ - Status?: Status; - } - export interface RevokeSecurityGroupEgressRequest { - /** - * Checks whether you have the required permissions for the action, without actually making the request, and provides an error response. If you have the required permissions, the error response is DryRunOperation. Otherwise, it is UnauthorizedOperation. - */ - DryRun?: Boolean; - /** - * The ID of the security group. - */ - GroupId: String; - /** - * One or more sets of IP permissions. You can't specify a destination security group and a CIDR IP address range in the same set of permissions. - */ - IpPermissions?: IpPermissionList; - /** - * Not supported. Use a set of IP permissions to specify the CIDR. - */ - CidrIp?: String; - /** - * Not supported. Use a set of IP permissions to specify the port. - */ - FromPort?: Integer; - /** - * Not supported. Use a set of IP permissions to specify the protocol name or number. - */ - IpProtocol?: String; - /** - * Not supported. Use a set of IP permissions to specify the port. - */ - ToPort?: Integer; - /** - * Not supported. Use a set of IP permissions to specify a destination security group. - */ - SourceSecurityGroupName?: String; - /** - * Not supported. Use a set of IP permissions to specify a destination security group. - */ - SourceSecurityGroupOwnerId?: String; - } - export interface RevokeSecurityGroupIngressRequest { - /** - * The CIDR IP address range. You can't specify this parameter when specifying a source security group. - */ - CidrIp?: String; - /** - * The start of port range for the TCP and UDP protocols, or an ICMP type number. For the ICMP type number, use -1 to specify all ICMP types. - */ - FromPort?: Integer; - /** - * The ID of the security group. You must specify either the security group ID or the security group name in the request. For security groups in a nondefault VPC, you must specify the security group ID. - */ - GroupId?: String; - /** - * [EC2-Classic, default VPC] The name of the security group. You must specify either the security group ID or the security group name in the request. - */ - GroupName?: String; - /** - * One or more sets of IP permissions. You can't specify a source security group and a CIDR IP address range in the same set of permissions. - */ - IpPermissions?: IpPermissionList; - /** - * The IP protocol name (tcp, udp, icmp) or number (see Protocol Numbers). Use -1 to specify all. - */ - IpProtocol?: String; - /** - * [EC2-Classic, default VPC] The name of the source security group. You can't specify this parameter in combination with the following parameters: the CIDR IP address range, the start of the port range, the IP protocol, and the end of the port range. For EC2-VPC, the source security group must be in the same VPC. To revoke a specific rule for an IP protocol and port range, use a set of IP permissions instead. - */ - SourceSecurityGroupName?: String; - /** - * [EC2-Classic] The AWS account ID of the source security group, if the source security group is in a different account. You can't specify this parameter in combination with the following parameters: the CIDR IP address range, the IP protocol, the start of the port range, and the end of the port range. To revoke a specific rule for an IP protocol and port range, use a set of IP permissions instead. - */ - SourceSecurityGroupOwnerId?: String; - /** - * The end of port range for the TCP and UDP protocols, or an ICMP code number. For the ICMP code number, use -1 to specify all ICMP codes for the ICMP type. - */ - ToPort?: Integer; - /** - * Checks whether you have the required permissions for the action, without actually making the request, and provides an error response. If you have the required permissions, the error response is DryRunOperation. Otherwise, it is UnauthorizedOperation. - */ - DryRun?: Boolean; - } - export interface Route { - /** - * The IPv4 CIDR block used for the destination match. - */ - DestinationCidrBlock?: String; - /** - * The IPv6 CIDR block used for the destination match. - */ - DestinationIpv6CidrBlock?: String; - /** - * The prefix of the AWS service. - */ - DestinationPrefixListId?: String; - /** - * The ID of the egress-only Internet gateway. - */ - EgressOnlyInternetGatewayId?: String; - /** - * The ID of a gateway attached to your VPC. - */ - GatewayId?: String; - /** - * The ID of a NAT instance in your VPC. - */ - InstanceId?: String; - /** - * The AWS account ID of the owner of the instance. - */ - InstanceOwnerId?: String; - /** - * The ID of a NAT gateway. - */ - NatGatewayId?: String; - /** - * The ID of the network interface. - */ - NetworkInterfaceId?: String; - /** - * Describes how the route was created. CreateRouteTable - The route was automatically created when the route table was created. CreateRoute - The route was manually added to the route table. EnableVgwRoutePropagation - The route was propagated by route propagation. - */ - Origin?: RouteOrigin; - /** - * The state of the route. The blackhole state indicates that the route's target isn't available (for example, the specified gateway isn't attached to the VPC, or the specified NAT instance has been terminated). - */ - State?: RouteState; - /** - * The ID of the VPC peering connection. - */ - VpcPeeringConnectionId?: String; - } - export type RouteList = Route[]; - export type RouteOrigin = "CreateRouteTable"|"CreateRoute"|"EnableVgwRoutePropagation"|string; - export type RouteState = "active"|"blackhole"|string; - export interface RouteTable { - /** - * The associations between the route table and one or more subnets. - */ - Associations?: RouteTableAssociationList; - /** - * Any virtual private gateway (VGW) propagating routes. - */ - PropagatingVgws?: PropagatingVgwList; - /** - * The ID of the route table. - */ - RouteTableId?: String; - /** - * The routes in the route table. - */ - Routes?: RouteList; - /** - * Any tags assigned to the route table. - */ - Tags?: TagList; - /** - * The ID of the VPC. - */ - VpcId?: String; - } - export interface RouteTableAssociation { - /** - * Indicates whether this is the main route table. - */ - Main?: Boolean; - /** - * The ID of the association between a route table and a subnet. - */ - RouteTableAssociationId?: String; - /** - * The ID of the route table. - */ - RouteTableId?: String; - /** - * The ID of the subnet. A subnet ID is not returned for an implicit association. - */ - SubnetId?: String; - } - export type RouteTableAssociationList = RouteTableAssociation[]; - export type RouteTableList = RouteTable[]; - export type RuleAction = "allow"|"deny"|string; - export interface RunInstancesMonitoringEnabled { - /** - * Indicates whether detailed monitoring is enabled. Otherwise, basic monitoring is enabled. - */ - Enabled: Boolean; - } - export interface RunInstancesRequest { - /** - * The block device mapping. Supplying both a snapshot ID and an encryption value as arguments for block-device mapping results in an error. This is because only blank volumes can be encrypted on start, and these are not created from a snapshot. If a snapshot is the basis for the volume, it contains data by definition and its encryption status cannot be changed using this action. - */ - BlockDeviceMappings?: BlockDeviceMappingRequestList; - /** - * The ID of the AMI, which you can get by calling DescribeImages. - */ - ImageId: String; - /** - * The instance type. For more information, see Instance Types in the Amazon Elastic Compute Cloud User Guide. Default: m1.small - */ - InstanceType?: InstanceType; - /** - * [EC2-VPC] A number of IPv6 addresses to associate with the primary network interface. Amazon EC2 chooses the IPv6 addresses from the range of your subnet. You cannot specify this option and the option to assign specific IPv6 addresses in the same request. You can specify this option if you've specified a minimum number of instances to launch. - */ - Ipv6AddressCount?: Integer; - /** - * [EC2-VPC] Specify one or more IPv6 addresses from the range of the subnet to associate with the primary network interface. You cannot specify this option and the option to assign a number of IPv6 addresses in the same request. You cannot specify this option if you've specified a minimum number of instances to launch. - */ - Ipv6Addresses?: InstanceIpv6AddressList; - /** - * The ID of the kernel. We recommend that you use PV-GRUB instead of kernels and RAM disks. For more information, see PV-GRUB in the Amazon Elastic Compute Cloud User Guide. - */ - KernelId?: String; - /** - * The name of the key pair. You can create a key pair using CreateKeyPair or ImportKeyPair. If you do not specify a key pair, you can't connect to the instance unless you choose an AMI that is configured to allow users another way to log in. - */ - KeyName?: String; - /** - * The maximum number of instances to launch. If you specify more instances than Amazon EC2 can launch in the target Availability Zone, Amazon EC2 launches the largest possible number of instances above MinCount. Constraints: Between 1 and the maximum number you're allowed for the specified instance type. For more information about the default limits, and how to request an increase, see How many instances can I run in Amazon EC2 in the Amazon EC2 FAQ. - */ - MaxCount: Integer; - /** - * The minimum number of instances to launch. If you specify a minimum that is more instances than Amazon EC2 can launch in the target Availability Zone, Amazon EC2 launches no instances. Constraints: Between 1 and the maximum number you're allowed for the specified instance type. For more information about the default limits, and how to request an increase, see How many instances can I run in Amazon EC2 in the Amazon EC2 General FAQ. - */ - MinCount: Integer; - /** - * The monitoring for the instance. - */ - Monitoring?: RunInstancesMonitoringEnabled; - /** - * The placement for the instance. - */ - Placement?: Placement; - /** - * The ID of the RAM disk. We recommend that you use PV-GRUB instead of kernels and RAM disks. For more information, see PV-GRUB in the Amazon Elastic Compute Cloud User Guide. - */ - RamdiskId?: String; - /** - * One or more security group IDs. You can create a security group using CreateSecurityGroup. Default: Amazon EC2 uses the default security group. - */ - SecurityGroupIds?: SecurityGroupIdStringList; - /** - * [EC2-Classic, default VPC] One or more security group names. For a nondefault VPC, you must use security group IDs instead. Default: Amazon EC2 uses the default security group. - */ - SecurityGroups?: SecurityGroupStringList; - /** - * [EC2-VPC] The ID of the subnet to launch the instance into. - */ - SubnetId?: String; - /** - * The user data to make available to the instance. For more information, see Running Commands on Your Linux Instance at Launch (Linux) and Adding User Data (Windows). If you are using an AWS SDK or command line tool, base64-encoding is performed for you, and you can load the text from a file. Otherwise, you must provide base64-encoded text. - */ - UserData?: String; - /** - * Reserved. - */ - AdditionalInfo?: String; - /** - * Unique, case-sensitive identifier you provide to ensure the idempotency of the request. For more information, see Ensuring Idempotency. Constraints: Maximum 64 ASCII characters - */ - ClientToken?: String; - /** - * If you set this parameter to true, you can't terminate the instance using the Amazon EC2 console, CLI, or API; otherwise, you can. To change this attribute to false after launch, use ModifyInstanceAttribute. Alternatively, if you set InstanceInitiatedShutdownBehavior to terminate, you can terminate the instance by running the shutdown command from the instance. Default: false - */ - DisableApiTermination?: Boolean; - /** - * Checks whether you have the required permissions for the action, without actually making the request, and provides an error response. If you have the required permissions, the error response is DryRunOperation. Otherwise, it is UnauthorizedOperation. - */ - DryRun?: Boolean; - /** - * Indicates whether the instance is optimized for Amazon EBS I/O. This optimization provides dedicated throughput to Amazon EBS and an optimized configuration stack to provide optimal Amazon EBS I/O performance. This optimization isn't available with all instance types. Additional usage charges apply when using an EBS-optimized instance. Default: false - */ - EbsOptimized?: Boolean; - /** - * The IAM instance profile. - */ - IamInstanceProfile?: IamInstanceProfileSpecification; - /** - * Indicates whether an instance stops or terminates when you initiate shutdown from the instance (using the operating system command for system shutdown). Default: stop - */ - InstanceInitiatedShutdownBehavior?: ShutdownBehavior; - /** - * One or more network interfaces. - */ - NetworkInterfaces?: InstanceNetworkInterfaceSpecificationList; - /** - * [EC2-VPC] The primary IPv4 address. You must specify a value from the IPv4 address range of the subnet. Only one private IP address can be designated as primary. You can't specify this option if you've specified the option to designate a private IP address as the primary IP address in a network interface specification. You cannot specify this option if you're launching more than one instance in the request. - */ - PrivateIpAddress?: String; - /** - * An Elastic GPU to associate with the instance. - */ - ElasticGpuSpecification?: ElasticGpuSpecifications; - /** - * The tags to apply to the resources during launch. You can tag instances and volumes. The specified tags are applied to all instances or volumes that are created during launch. - */ - TagSpecifications?: TagSpecificationList; - } - export interface RunScheduledInstancesRequest { - /** - * Unique, case-sensitive identifier that ensures the idempotency of the request. For more information, see Ensuring Idempotency. - */ - ClientToken?: String; - /** - * Checks whether you have the required permissions for the action, without actually making the request, and provides an error response. If you have the required permissions, the error response is DryRunOperation. Otherwise, it is UnauthorizedOperation. - */ - DryRun?: Boolean; - /** - * The number of instances. Default: 1 - */ - InstanceCount?: Integer; - /** - * The launch specification. You must match the instance type, Availability Zone, network, and platform of the schedule that you purchased. - */ - LaunchSpecification: ScheduledInstancesLaunchSpecification; - /** - * The Scheduled Instance ID. - */ - ScheduledInstanceId: String; - } - export interface RunScheduledInstancesResult { - /** - * The IDs of the newly launched instances. - */ - InstanceIdSet?: InstanceIdSet; - } - export interface S3Storage { - /** - * The access key ID of the owner of the bucket. Before you specify a value for your access key ID, review and follow the guidance in Best Practices for Managing AWS Access Keys. - */ - AWSAccessKeyId?: String; - /** - * The bucket in which to store the AMI. You can specify a bucket that you already own or a new bucket that Amazon EC2 creates on your behalf. If you specify a bucket that belongs to someone else, Amazon EC2 returns an error. - */ - Bucket?: String; - /** - * The beginning of the file name of the AMI. - */ - Prefix?: String; - /** - * An Amazon S3 upload policy that gives Amazon EC2 permission to upload items into Amazon S3 on your behalf. - */ - UploadPolicy?: _Blob; - /** - * The signature of the JSON document. - */ - UploadPolicySignature?: String; - } - export interface ScheduledInstance { - /** - * The Availability Zone. - */ - AvailabilityZone?: String; - /** - * The date when the Scheduled Instance was purchased. - */ - CreateDate?: DateTime; - /** - * The hourly price for a single instance. - */ - HourlyPrice?: String; - /** - * The number of instances. - */ - InstanceCount?: Integer; - /** - * The instance type. - */ - InstanceType?: String; - /** - * The network platform (EC2-Classic or EC2-VPC). - */ - NetworkPlatform?: String; - /** - * The time for the next schedule to start. - */ - NextSlotStartTime?: DateTime; - /** - * The platform (Linux/UNIX or Windows). - */ - Platform?: String; - /** - * The time that the previous schedule ended or will end. - */ - PreviousSlotEndTime?: DateTime; - /** - * The schedule recurrence. - */ - Recurrence?: ScheduledInstanceRecurrence; - /** - * The Scheduled Instance ID. - */ - ScheduledInstanceId?: String; - /** - * The number of hours in the schedule. - */ - SlotDurationInHours?: Integer; - /** - * The end date for the Scheduled Instance. - */ - TermEndDate?: DateTime; - /** - * The start date for the Scheduled Instance. - */ - TermStartDate?: DateTime; - /** - * The total number of hours for a single instance for the entire term. - */ - TotalScheduledInstanceHours?: Integer; - } - export interface ScheduledInstanceAvailability { - /** - * The Availability Zone. - */ - AvailabilityZone?: String; - /** - * The number of available instances. - */ - AvailableInstanceCount?: Integer; - /** - * The time period for the first schedule to start. - */ - FirstSlotStartTime?: DateTime; - /** - * The hourly price for a single instance. - */ - HourlyPrice?: String; - /** - * The instance type. You can specify one of the C3, C4, M4, or R3 instance types. - */ - InstanceType?: String; - /** - * The maximum term. The only possible value is 365 days. - */ - MaxTermDurationInDays?: Integer; - /** - * The minimum term. The only possible value is 365 days. - */ - MinTermDurationInDays?: Integer; - /** - * The network platform (EC2-Classic or EC2-VPC). - */ - NetworkPlatform?: String; - /** - * The platform (Linux/UNIX or Windows). - */ - Platform?: String; - /** - * The purchase token. This token expires in two hours. - */ - PurchaseToken?: String; - /** - * The schedule recurrence. - */ - Recurrence?: ScheduledInstanceRecurrence; - /** - * The number of hours in the schedule. - */ - SlotDurationInHours?: Integer; - /** - * The total number of hours for a single instance for the entire term. - */ - TotalScheduledInstanceHours?: Integer; - } - export type ScheduledInstanceAvailabilitySet = ScheduledInstanceAvailability[]; - export type ScheduledInstanceIdRequestSet = String[]; - export interface ScheduledInstanceRecurrence { - /** - * The frequency (Daily, Weekly, or Monthly). - */ - Frequency?: String; - /** - * The interval quantity. The interval unit depends on the value of frequency. For example, every 2 weeks or every 2 months. - */ - Interval?: Integer; - /** - * The days. For a monthly schedule, this is one or more days of the month (1-31). For a weekly schedule, this is one or more days of the week (1-7, where 1 is Sunday). - */ - OccurrenceDaySet?: OccurrenceDaySet; - /** - * Indicates whether the occurrence is relative to the end of the specified week or month. - */ - OccurrenceRelativeToEnd?: Boolean; - /** - * The unit for occurrenceDaySet (DayOfWeek or DayOfMonth). - */ - OccurrenceUnit?: String; - } - export interface ScheduledInstanceRecurrenceRequest { - /** - * The frequency (Daily, Weekly, or Monthly). - */ - Frequency?: String; - /** - * The interval quantity. The interval unit depends on the value of Frequency. For example, every 2 weeks or every 2 months. - */ - Interval?: Integer; - /** - * The days. For a monthly schedule, this is one or more days of the month (1-31). For a weekly schedule, this is one or more days of the week (1-7, where 1 is Sunday). You can't specify this value with a daily schedule. If the occurrence is relative to the end of the month, you can specify only a single day. - */ - OccurrenceDays?: OccurrenceDayRequestSet; - /** - * Indicates whether the occurrence is relative to the end of the specified week or month. You can't specify this value with a daily schedule. - */ - OccurrenceRelativeToEnd?: Boolean; - /** - * The unit for OccurrenceDays (DayOfWeek or DayOfMonth). This value is required for a monthly schedule. You can't specify DayOfWeek with a weekly schedule. You can't specify this value with a daily schedule. - */ - OccurrenceUnit?: String; - } - export type ScheduledInstanceSet = ScheduledInstance[]; - export interface ScheduledInstancesBlockDeviceMapping { - /** - * The device name exposed to the instance (for example, /dev/sdh or xvdh). - */ - DeviceName?: String; - /** - * Parameters used to set up EBS volumes automatically when the instance is launched. - */ - Ebs?: ScheduledInstancesEbs; - /** - * Suppresses the specified device included in the block device mapping of the AMI. - */ - NoDevice?: String; - /** - * The virtual device name (ephemeralN). Instance store volumes are numbered starting from 0. An instance type with two available instance store volumes can specify mappings for ephemeral0 and ephemeral1.The number of available instance store volumes depends on the instance type. After you connect to the instance, you must mount the volume. Constraints: For M3 instances, you must specify instance store volumes in the block device mapping for the instance. When you launch an M3 instance, we ignore any instance store volumes specified in the block device mapping for the AMI. - */ - VirtualName?: String; - } - export type ScheduledInstancesBlockDeviceMappingSet = ScheduledInstancesBlockDeviceMapping[]; - export interface ScheduledInstancesEbs { - /** - * Indicates whether the volume is deleted on instance termination. - */ - DeleteOnTermination?: Boolean; - /** - * Indicates whether the volume is encrypted. You can attached encrypted volumes only to instances that support them. - */ - Encrypted?: Boolean; - /** - * The number of I/O operations per second (IOPS) that the volume supports. For io1 volumes, this represents the number of IOPS that are provisioned for the volume. For gp2 volumes, this represents the baseline performance of the volume and the rate at which the volume accumulates I/O credits for bursting. For more information about gp2 baseline performance, I/O credits, and bursting, see Amazon EBS Volume Types in the Amazon Elastic Compute Cloud User Guide. Constraint: Range is 100-20000 IOPS for io1 volumes and 100-10000 IOPS for gp2 volumes. Condition: This parameter is required for requests to create io1volumes; it is not used in requests to create gp2, st1, sc1, or standard volumes. - */ - Iops?: Integer; - /** - * The ID of the snapshot. - */ - SnapshotId?: String; - /** - * The size of the volume, in GiB. Default: If you're creating the volume from a snapshot and don't specify a volume size, the default is the snapshot size. - */ - VolumeSize?: Integer; - /** - * The volume type. gp2 for General Purpose SSD, io1 for Provisioned IOPS SSD, Throughput Optimized HDD for st1, Cold HDD for sc1, or standard for Magnetic. Default: standard - */ - VolumeType?: String; - } - export interface ScheduledInstancesIamInstanceProfile { - /** - * The Amazon Resource Name (ARN). - */ - Arn?: String; - /** - * The name. - */ - Name?: String; - } - export interface ScheduledInstancesIpv6Address { - /** - * The IPv6 address. - */ - Ipv6Address?: Ipv6Address; - } - export type ScheduledInstancesIpv6AddressList = ScheduledInstancesIpv6Address[]; - export interface ScheduledInstancesLaunchSpecification { - /** - * One or more block device mapping entries. - */ - BlockDeviceMappings?: ScheduledInstancesBlockDeviceMappingSet; - /** - * Indicates whether the instances are optimized for EBS I/O. This optimization provides dedicated throughput to Amazon EBS and an optimized configuration stack to provide optimal EBS I/O performance. This optimization isn't available with all instance types. Additional usage charges apply when using an EBS-optimized instance. Default: false - */ - EbsOptimized?: Boolean; - /** - * The IAM instance profile. - */ - IamInstanceProfile?: ScheduledInstancesIamInstanceProfile; - /** - * The ID of the Amazon Machine Image (AMI). - */ - ImageId: String; - /** - * The instance type. - */ - InstanceType?: String; - /** - * The ID of the kernel. - */ - KernelId?: String; - /** - * The name of the key pair. - */ - KeyName?: String; - /** - * Enable or disable monitoring for the instances. - */ - Monitoring?: ScheduledInstancesMonitoring; - /** - * One or more network interfaces. - */ - NetworkInterfaces?: ScheduledInstancesNetworkInterfaceSet; - /** - * The placement information. - */ - Placement?: ScheduledInstancesPlacement; - /** - * The ID of the RAM disk. - */ - RamdiskId?: String; - /** - * The IDs of one or more security groups. - */ - SecurityGroupIds?: ScheduledInstancesSecurityGroupIdSet; - /** - * The ID of the subnet in which to launch the instances. - */ - SubnetId?: String; - /** - * The base64-encoded MIME user data. - */ - UserData?: String; - } - export interface ScheduledInstancesMonitoring { - /** - * Indicates whether monitoring is enabled. - */ - Enabled?: Boolean; - } - export interface ScheduledInstancesNetworkInterface { - /** - * Indicates whether to assign a public IPv4 address to instances launched in a VPC. The public IPv4 address can only be assigned to a network interface for eth0, and can only be assigned to a new network interface, not an existing one. You cannot specify more than one network interface in the request. If launching into a default subnet, the default value is true. - */ - AssociatePublicIpAddress?: Boolean; - /** - * Indicates whether to delete the interface when the instance is terminated. - */ - DeleteOnTermination?: Boolean; - /** - * The description. - */ - Description?: String; - /** - * The index of the device for the network interface attachment. - */ - DeviceIndex?: Integer; - /** - * The IDs of one or more security groups. - */ - Groups?: ScheduledInstancesSecurityGroupIdSet; - /** - * The number of IPv6 addresses to assign to the network interface. The IPv6 addresses are automatically selected from the subnet range. - */ - Ipv6AddressCount?: Integer; - /** - * One or more specific IPv6 addresses from the subnet range. - */ - Ipv6Addresses?: ScheduledInstancesIpv6AddressList; - /** - * The ID of the network interface. - */ - NetworkInterfaceId?: String; - /** - * The IPv4 address of the network interface within the subnet. - */ - PrivateIpAddress?: String; - /** - * The private IPv4 addresses. - */ - PrivateIpAddressConfigs?: PrivateIpAddressConfigSet; - /** - * The number of secondary private IPv4 addresses. - */ - SecondaryPrivateIpAddressCount?: Integer; - /** - * The ID of the subnet. - */ - SubnetId?: String; - } - export type ScheduledInstancesNetworkInterfaceSet = ScheduledInstancesNetworkInterface[]; - export interface ScheduledInstancesPlacement { - /** - * The Availability Zone. - */ - AvailabilityZone?: String; - /** - * The name of the placement group. - */ - GroupName?: String; - } - export interface ScheduledInstancesPrivateIpAddressConfig { - /** - * Indicates whether this is a primary IPv4 address. Otherwise, this is a secondary IPv4 address. - */ - Primary?: Boolean; - /** - * The IPv4 address. - */ - PrivateIpAddress?: String; - } - export type ScheduledInstancesSecurityGroupIdSet = String[]; - export interface SecurityGroup { - /** - * A description of the security group. - */ - Description?: String; - /** - * The name of the security group. - */ - GroupName?: String; - /** - * One or more inbound rules associated with the security group. - */ - IpPermissions?: IpPermissionList; - /** - * The AWS account ID of the owner of the security group. - */ - OwnerId?: String; - /** - * The ID of the security group. - */ - GroupId?: String; - /** - * [EC2-VPC] One or more outbound rules associated with the security group. - */ - IpPermissionsEgress?: IpPermissionList; - /** - * Any tags assigned to the security group. - */ - Tags?: TagList; - /** - * [EC2-VPC] The ID of the VPC for the security group. - */ - VpcId?: String; - } - export type SecurityGroupIdStringList = String[]; - export type SecurityGroupList = SecurityGroup[]; - export interface SecurityGroupReference { - /** - * The ID of your security group. - */ - GroupId: String; - /** - * The ID of the VPC with the referencing security group. - */ - ReferencingVpcId: String; - /** - * The ID of the VPC peering connection. - */ - VpcPeeringConnectionId?: String; - } - export type SecurityGroupReferences = SecurityGroupReference[]; - export type SecurityGroupStringList = String[]; - export type ShutdownBehavior = "stop"|"terminate"|string; - export interface SlotDateTimeRangeRequest { - /** - * The earliest date and time, in UTC, for the Scheduled Instance to start. - */ - EarliestTime: DateTime; - /** - * The latest date and time, in UTC, for the Scheduled Instance to start. This value must be later than or equal to the earliest date and at most three months in the future. - */ - LatestTime: DateTime; - } - export interface SlotStartTimeRangeRequest { - /** - * The earliest date and time, in UTC, for the Scheduled Instance to start. - */ - EarliestTime?: DateTime; - /** - * The latest date and time, in UTC, for the Scheduled Instance to start. - */ - LatestTime?: DateTime; - } - export interface Snapshot { - /** - * The data encryption key identifier for the snapshot. This value is a unique identifier that corresponds to the data encryption key that was used to encrypt the original volume or snapshot copy. Because data encryption keys are inherited by volumes created from snapshots, and vice versa, if snapshots share the same data encryption key identifier, then they belong to the same volume/snapshot lineage. This parameter is only returned by the DescribeSnapshots API operation. - */ - DataEncryptionKeyId?: String; - /** - * The description for the snapshot. - */ - Description?: String; - /** - * Indicates whether the snapshot is encrypted. - */ - Encrypted?: Boolean; - /** - * The full ARN of the AWS Key Management Service (AWS KMS) customer master key (CMK) that was used to protect the volume encryption key for the parent volume. - */ - KmsKeyId?: String; - /** - * The AWS account ID of the EBS snapshot owner. - */ - OwnerId?: String; - /** - * The progress of the snapshot, as a percentage. - */ - Progress?: String; - /** - * The ID of the snapshot. Each snapshot receives a unique identifier when it is created. - */ - SnapshotId?: String; - /** - * The time stamp when the snapshot was initiated. - */ - StartTime?: DateTime; - /** - * The snapshot state. - */ - State?: SnapshotState; - /** - * Encrypted Amazon EBS snapshots are copied asynchronously. If a snapshot copy operation fails (for example, if the proper AWS Key Management Service (AWS KMS) permissions are not obtained) this field displays error state details to help you diagnose why the error occurred. This parameter is only returned by the DescribeSnapshots API operation. - */ - StateMessage?: String; - /** - * The ID of the volume that was used to create the snapshot. Snapshots created by the CopySnapshot action have an arbitrary volume ID that should not be used for any purpose. - */ - VolumeId?: String; - /** - * The size of the volume, in GiB. - */ - VolumeSize?: Integer; - /** - * Value from an Amazon-maintained list (amazon | aws-marketplace | microsoft) of snapshot owners. Not to be confused with the user-configured AWS account alias, which is set from the IAM console. - */ - OwnerAlias?: String; - /** - * Any tags assigned to the snapshot. - */ - Tags?: TagList; - } - export type SnapshotAttributeName = "productCodes"|"createVolumePermission"|string; - export interface SnapshotDetail { - /** - * A description for the snapshot. - */ - Description?: String; - /** - * The block device mapping for the snapshot. - */ - DeviceName?: String; - /** - * The size of the disk in the snapshot, in GiB. - */ - DiskImageSize?: Double; - /** - * The format of the disk image from which the snapshot is created. - */ - Format?: String; - /** - * The percentage of progress for the task. - */ - Progress?: String; - /** - * The snapshot ID of the disk being imported. - */ - SnapshotId?: String; - /** - * A brief status of the snapshot creation. - */ - Status?: String; - /** - * A detailed status message for the snapshot creation. - */ - StatusMessage?: String; - /** - * The URL used to access the disk image. - */ - Url?: String; - /** - * The S3 bucket for the disk image. - */ - UserBucket?: UserBucketDetails; - } - export type SnapshotDetailList = SnapshotDetail[]; - export interface SnapshotDiskContainer { - /** - * The description of the disk image being imported. - */ - Description?: String; - /** - * The format of the disk image being imported. Valid values: RAW | VHD | VMDK | OVA - */ - Format?: String; - /** - * The URL to the Amazon S3-based disk image being imported. It can either be a https URL (https://..) or an Amazon S3 URL (s3://..). - */ - Url?: String; - /** - * The S3 bucket for the disk image. - */ - UserBucket?: UserBucket; - } - export type SnapshotIdStringList = String[]; - export type SnapshotList = Snapshot[]; - export type SnapshotState = "pending"|"completed"|"error"|string; - export interface SnapshotTaskDetail { - /** - * The description of the snapshot. - */ - Description?: String; - /** - * The size of the disk in the snapshot, in GiB. - */ - DiskImageSize?: Double; - /** - * The format of the disk image from which the snapshot is created. - */ - Format?: String; - /** - * The percentage of completion for the import snapshot task. - */ - Progress?: String; - /** - * The snapshot ID of the disk being imported. - */ - SnapshotId?: String; - /** - * A brief status for the import snapshot task. - */ - Status?: String; - /** - * A detailed status message for the import snapshot task. - */ - StatusMessage?: String; - /** - * The URL of the disk image from which the snapshot is created. - */ - Url?: String; - /** - * The S3 bucket for the disk image. - */ - UserBucket?: UserBucketDetails; - } - export interface SpotDatafeedSubscription { - /** - * The Amazon S3 bucket where the Spot instance data feed is located. - */ - Bucket?: String; - /** - * The fault codes for the Spot instance request, if any. - */ - Fault?: SpotInstanceStateFault; - /** - * The AWS account ID of the account. - */ - OwnerId?: String; - /** - * The prefix that is prepended to data feed files. - */ - Prefix?: String; - /** - * The state of the Spot instance data feed subscription. - */ - State?: DatafeedSubscriptionState; - } - export interface SpotFleetLaunchSpecification { - /** - * One or more security groups. When requesting instances in a VPC, you must specify the IDs of the security groups. When requesting instances in EC2-Classic, you can specify the names or the IDs of the security groups. - */ - SecurityGroups?: GroupIdentifierList; - /** - * Deprecated. - */ - AddressingType?: String; - /** - * One or more block device mapping entries. - */ - BlockDeviceMappings?: BlockDeviceMappingList; - /** - * Indicates whether the instances are optimized for EBS I/O. This optimization provides dedicated throughput to Amazon EBS and an optimized configuration stack to provide optimal EBS I/O performance. This optimization isn't available with all instance types. Additional usage charges apply when using an EBS Optimized instance. Default: false - */ - EbsOptimized?: Boolean; - /** - * The IAM instance profile. - */ - IamInstanceProfile?: IamInstanceProfileSpecification; - /** - * The ID of the AMI. - */ - ImageId?: String; - /** - * The instance type. Note that T2 and HS1 instance types are not supported. - */ - InstanceType?: InstanceType; - /** - * The ID of the kernel. - */ - KernelId?: String; - /** - * The name of the key pair. - */ - KeyName?: String; - /** - * Enable or disable monitoring for the instances. - */ - Monitoring?: SpotFleetMonitoring; - /** - * One or more network interfaces. If you specify a network interface, you must specify subnet IDs and security group IDs using the network interface. - */ - NetworkInterfaces?: InstanceNetworkInterfaceSpecificationList; - /** - * The placement information. - */ - Placement?: SpotPlacement; - /** - * The ID of the RAM disk. - */ - RamdiskId?: String; - /** - * The bid price per unit hour for the specified instance type. If this value is not specified, the default is the Spot bid price specified for the fleet. To determine the bid price per unit hour, divide the Spot bid price by the value of WeightedCapacity. - */ - SpotPrice?: String; - /** - * The ID of the subnet in which to launch the instances. To specify multiple subnets, separate them using commas; for example, "subnet-a61dafcf, subnet-65ea5f08". - */ - SubnetId?: String; - /** - * The user data to make available to the instances. If you are using an AWS SDK or command line tool, Base64-encoding is performed for you, and you can load the text from a file. Otherwise, you must provide Base64-encoded text. - */ - UserData?: String; - /** - * The number of units provided by the specified instance type. These are the same units that you chose to set the target capacity in terms (instances or a performance characteristic such as vCPUs, memory, or I/O). If the target capacity divided by this value is not a whole number, we round the number of instances to the next whole number. If this value is not specified, the default is 1. - */ - WeightedCapacity?: Double; - /** - * The tags to apply during creation. - */ - TagSpecifications?: SpotFleetTagSpecificationList; - } - export interface SpotFleetMonitoring { - /** - * Enables monitoring for the instance. Default: false - */ - Enabled?: Boolean; - } - export interface SpotFleetRequestConfig { - /** - * The progress of the Spot fleet request. If there is an error, the status is error. After all bids are placed, the status is pending_fulfillment. If the size of the fleet is equal to or greater than its target capacity, the status is fulfilled. If the size of the fleet is decreased, the status is pending_termination while Spot instances are terminating. - */ - ActivityStatus?: ActivityStatus; - /** - * The creation date and time of the request. - */ - CreateTime: DateTime; - /** - * Information about the configuration of the Spot fleet request. - */ - SpotFleetRequestConfig: SpotFleetRequestConfigData; - /** - * The ID of the Spot fleet request. - */ - SpotFleetRequestId: String; - /** - * The state of the Spot fleet request. - */ - SpotFleetRequestState: BatchState; - } - export interface SpotFleetRequestConfigData { - /** - * Indicates how to allocate the target capacity across the Spot pools specified by the Spot fleet request. The default is lowestPrice. - */ - AllocationStrategy?: AllocationStrategy; - /** - * A unique, case-sensitive identifier you provide to ensure idempotency of your listings. This helps avoid duplicate listings. For more information, see Ensuring Idempotency. - */ - ClientToken?: String; - /** - * Indicates whether running Spot instances should be terminated if the target capacity of the Spot fleet request is decreased below the current size of the Spot fleet. - */ - ExcessCapacityTerminationPolicy?: ExcessCapacityTerminationPolicy; - /** - * The number of units fulfilled by this request compared to the set target capacity. - */ - FulfilledCapacity?: Double; - /** - * Grants the Spot fleet permission to terminate Spot instances on your behalf when you cancel its Spot fleet request using CancelSpotFleetRequests or when the Spot fleet request expires, if you set terminateInstancesWithExpiration. - */ - IamFleetRole: String; - /** - * Information about the launch specifications for the Spot fleet request. - */ - LaunchSpecifications: LaunchSpecsList; - /** - * The bid price per unit hour. - */ - SpotPrice: String; - /** - * The number of units to request. You can choose to set the target capacity in terms of instances or a performance characteristic that is important to your application workload, such as vCPUs, memory, or I/O. - */ - TargetCapacity: Integer; - /** - * Indicates whether running Spot instances should be terminated when the Spot fleet request expires. - */ - TerminateInstancesWithExpiration?: Boolean; - /** - * The type of request. Indicates whether the fleet will only request the target capacity or also attempt to maintain it. When you request a certain target capacity, the fleet will only place the required bids. It will not attempt to replenish Spot instances if capacity is diminished, nor will it submit bids in alternative Spot pools if capacity is not available. When you want to maintain a certain target capacity, fleet will place the required bids to meet this target capacity. It will also automatically replenish any interrupted instances. Default: maintain. - */ - Type?: FleetType; - /** - * The start date and time of the request, in UTC format (for example, YYYY-MM-DDTHH:MM:SSZ). The default is to start fulfilling the request immediately. - */ - ValidFrom?: DateTime; - /** - * The end date and time of the request, in UTC format (for example, YYYY-MM-DDTHH:MM:SSZ). At this point, no new Spot instance requests are placed or enabled to fulfill the request. - */ - ValidUntil?: DateTime; - /** - * Indicates whether Spot fleet should replace unhealthy instances. - */ - ReplaceUnhealthyInstances?: Boolean; - /** - * Indicates whether a Spot instance stops or terminates when it is interrupted. - */ - InstanceInterruptionBehavior?: InstanceInterruptionBehavior; - } - export type SpotFleetRequestConfigSet = SpotFleetRequestConfig[]; - export interface SpotFleetTagSpecification { - /** - * The type of resource. Currently, the only resource type that is supported is instance. - */ - ResourceType?: ResourceType; - /** - * The tags. - */ - Tags?: TagList; - } - export type SpotFleetTagSpecificationList = SpotFleetTagSpecification[]; - export interface SpotInstanceRequest { - /** - * If you specified a duration and your Spot instance request was fulfilled, this is the fixed hourly price in effect for the Spot instance while it runs. - */ - ActualBlockHourlyPrice?: String; - /** - * The Availability Zone group. If you specify the same Availability Zone group for all Spot instance requests, all Spot instances are launched in the same Availability Zone. - */ - AvailabilityZoneGroup?: String; - /** - * The duration for the Spot instance, in minutes. - */ - BlockDurationMinutes?: Integer; - /** - * The date and time when the Spot instance request was created, in UTC format (for example, YYYY-MM-DDTHH:MM:SSZ). - */ - CreateTime?: DateTime; - /** - * The fault codes for the Spot instance request, if any. - */ - Fault?: SpotInstanceStateFault; - /** - * The instance ID, if an instance has been launched to fulfill the Spot instance request. - */ - InstanceId?: String; - /** - * The instance launch group. Launch groups are Spot instances that launch together and terminate together. - */ - LaunchGroup?: String; - /** - * Additional information for launching instances. - */ - LaunchSpecification?: LaunchSpecification; - /** - * The Availability Zone in which the bid is launched. - */ - LaunchedAvailabilityZone?: String; - /** - * The product description associated with the Spot instance. - */ - ProductDescription?: RIProductDescription; - /** - * The ID of the Spot instance request. - */ - SpotInstanceRequestId?: String; - /** - * The maximum hourly price (bid) for the Spot instance launched to fulfill the request. - */ - SpotPrice?: String; - /** - * The state of the Spot instance request. Spot bid status information can help you track your Spot instance requests. For more information, see Spot Bid Status in the Amazon Elastic Compute Cloud User Guide. - */ - State?: SpotInstanceState; - /** - * The status code and status message describing the Spot instance request. - */ - Status?: SpotInstanceStatus; - /** - * Any tags assigned to the resource. - */ - Tags?: TagList; - /** - * The Spot instance request type. - */ - Type?: SpotInstanceType; - /** - * The start date of the request, in UTC format (for example, YYYY-MM-DDTHH:MM:SSZ). The request becomes active at this date and time. - */ - ValidFrom?: DateTime; - /** - * The end date of the request, in UTC format (for example, YYYY-MM-DDTHH:MM:SSZ). If this is a one-time request, it remains active until all instances launch, the request is canceled, or this date is reached. If the request is persistent, it remains active until it is canceled or this date is reached. - */ - ValidUntil?: DateTime; - /** - * Indicates whether a Spot instance stops or terminates when it is interrupted. - */ - InstanceInterruptionBehavior?: InstanceInterruptionBehavior; - } - export type SpotInstanceRequestIdList = String[]; - export type SpotInstanceRequestList = SpotInstanceRequest[]; - export type SpotInstanceState = "open"|"active"|"closed"|"cancelled"|"failed"|string; - export interface SpotInstanceStateFault { - /** - * The reason code for the Spot instance state change. - */ - Code?: String; - /** - * The message for the Spot instance state change. - */ - Message?: String; - } - export interface SpotInstanceStatus { - /** - * The status code. For a list of status codes, see Spot Bid Status Codes in the Amazon Elastic Compute Cloud User Guide. - */ - Code?: String; - /** - * The description for the status code. - */ - Message?: String; - /** - * The date and time of the most recent status update, in UTC format (for example, YYYY-MM-DDTHH:MM:SSZ). - */ - UpdateTime?: DateTime; - } - export type SpotInstanceType = "one-time"|"persistent"|string; - export interface SpotPlacement { - /** - * The Availability Zone. [Spot fleet only] To specify multiple Availability Zones, separate them using commas; for example, "us-west-2a, us-west-2b". - */ - AvailabilityZone?: String; - /** - * The name of the placement group (for cluster instances). - */ - GroupName?: String; - /** - * The tenancy of the instance (if the instance is running in a VPC). An instance with a tenancy of dedicated runs on single-tenant hardware. The host tenancy is not supported for Spot instances. - */ - Tenancy?: Tenancy; - } - export interface SpotPrice { - /** - * The Availability Zone. - */ - AvailabilityZone?: String; - /** - * The instance type. Note that T2 and HS1 instance types are not supported. - */ - InstanceType?: InstanceType; - /** - * A general description of the AMI. - */ - ProductDescription?: RIProductDescription; - /** - * The maximum price (bid) that you are willing to pay for a Spot instance. - */ - SpotPrice?: String; - /** - * The date and time the request was created, in UTC format (for example, YYYY-MM-DDTHH:MM:SSZ). - */ - Timestamp?: DateTime; - } - export type SpotPriceHistoryList = SpotPrice[]; - export interface StaleIpPermission { - /** - * The start of the port range for the TCP and UDP protocols, or an ICMP type number. A value of -1 indicates all ICMP types. - */ - FromPort?: Integer; - /** - * The IP protocol name (for tcp, udp, and icmp) or number (see Protocol Numbers). - */ - IpProtocol?: String; - /** - * One or more IP ranges. Not applicable for stale security group rules. - */ - IpRanges?: IpRanges; - /** - * One or more prefix list IDs for an AWS service. Not applicable for stale security group rules. - */ - PrefixListIds?: PrefixListIdSet; - /** - * The end of the port range for the TCP and UDP protocols, or an ICMP type number. A value of -1 indicates all ICMP types. - */ - ToPort?: Integer; - /** - * One or more security group pairs. Returns the ID of the referenced security group and VPC, and the ID and status of the VPC peering connection. - */ - UserIdGroupPairs?: UserIdGroupPairSet; - } - export type StaleIpPermissionSet = StaleIpPermission[]; - export interface StaleSecurityGroup { - /** - * The description of the security group. - */ - Description?: String; - /** - * The ID of the security group. - */ - GroupId: String; - /** - * The name of the security group. - */ - GroupName?: String; - /** - * Information about the stale inbound rules in the security group. - */ - StaleIpPermissions?: StaleIpPermissionSet; - /** - * Information about the stale outbound rules in the security group. - */ - StaleIpPermissionsEgress?: StaleIpPermissionSet; - /** - * The ID of the VPC for the security group. - */ - VpcId?: String; - } - export type StaleSecurityGroupSet = StaleSecurityGroup[]; - export interface StartInstancesRequest { - /** - * One or more instance IDs. - */ - InstanceIds: InstanceIdStringList; - /** - * Reserved. - */ - AdditionalInfo?: String; - /** - * Checks whether you have the required permissions for the action, without actually making the request, and provides an error response. If you have the required permissions, the error response is DryRunOperation. Otherwise, it is UnauthorizedOperation. - */ - DryRun?: Boolean; - } - export interface StartInstancesResult { - /** - * Information about one or more started instances. - */ - StartingInstances?: InstanceStateChangeList; - } - export type State = "Pending"|"Available"|"Deleting"|"Deleted"|string; - export interface StateReason { - /** - * The reason code for the state change. - */ - Code?: String; - /** - * The message for the state change. Server.InsufficientInstanceCapacity: There was insufficient instance capacity to satisfy the launch request. Server.InternalError: An internal error occurred during instance launch, resulting in termination. Server.ScheduledStop: The instance was stopped due to a scheduled retirement. Server.SpotInstanceTermination: A Spot Instance was terminated due to an increase in the market price. Client.InternalError: A client error caused the instance to terminate on launch. Client.InstanceInitiatedShutdown: The instance was shut down using the shutdown -h command from the instance. Client.InstanceTerminated: The instance was terminated or rebooted during AMI creation. Client.UserInitiatedShutdown: The instance was shut down using the Amazon EC2 API. Client.VolumeLimitExceeded: The limit on the number of EBS volumes or total storage was exceeded. Decrease usage or request an increase in your limits. Client.InvalidSnapshot.NotFound: The specified snapshot was not found. - */ - Message?: String; - } - export type Status = "MoveInProgress"|"InVpc"|"InClassic"|string; - export type StatusName = "reachability"|string; - export type StatusType = "passed"|"failed"|"insufficient-data"|"initializing"|string; - export interface StopInstancesRequest { - /** - * One or more instance IDs. - */ - InstanceIds: InstanceIdStringList; - /** - * Checks whether you have the required permissions for the action, without actually making the request, and provides an error response. If you have the required permissions, the error response is DryRunOperation. Otherwise, it is UnauthorizedOperation. - */ - DryRun?: Boolean; - /** - * Forces the instances to stop. The instances do not have an opportunity to flush file system caches or file system metadata. If you use this option, you must perform file system check and repair procedures. This option is not recommended for Windows instances. Default: false - */ - Force?: Boolean; - } - export interface StopInstancesResult { - /** - * Information about one or more stopped instances. - */ - StoppingInstances?: InstanceStateChangeList; - } - export interface Storage { - /** - * An Amazon S3 storage location. - */ - S3?: S3Storage; - } - export interface StorageLocation { - /** - * The name of the S3 bucket. - */ - Bucket?: String; - /** - * The key. - */ - Key?: String; - } - export type String = string; - export interface Subnet { - /** - * The Availability Zone of the subnet. - */ - AvailabilityZone?: String; - /** - * The number of unused private IPv4 addresses in the subnet. Note that the IPv4 addresses for any stopped instances are considered unavailable. - */ - AvailableIpAddressCount?: Integer; - /** - * The IPv4 CIDR block assigned to the subnet. - */ - CidrBlock?: String; - /** - * Indicates whether this is the default subnet for the Availability Zone. - */ - DefaultForAz?: Boolean; - /** - * Indicates whether instances launched in this subnet receive a public IPv4 address. - */ - MapPublicIpOnLaunch?: Boolean; - /** - * The current state of the subnet. - */ - State?: SubnetState; - /** - * The ID of the subnet. - */ - SubnetId?: String; - /** - * The ID of the VPC the subnet is in. - */ - VpcId?: String; - /** - * Indicates whether a network interface created in this subnet (including a network interface created by RunInstances) receives an IPv6 address. - */ - AssignIpv6AddressOnCreation?: Boolean; - /** - * Information about the IPv6 CIDR blocks associated with the subnet. - */ - Ipv6CidrBlockAssociationSet?: SubnetIpv6CidrBlockAssociationSet; - /** - * Any tags assigned to the subnet. - */ - Tags?: TagList; - } - export interface SubnetCidrBlockState { - /** - * The state of a CIDR block. - */ - State?: SubnetCidrBlockStateCode; - /** - * A message about the status of the CIDR block, if applicable. - */ - StatusMessage?: String; - } - export type SubnetCidrBlockStateCode = "associating"|"associated"|"disassociating"|"disassociated"|"failing"|"failed"|string; - export type SubnetIdStringList = String[]; - export interface SubnetIpv6CidrBlockAssociation { - /** - * The association ID for the CIDR block. - */ - AssociationId?: String; - /** - * The IPv6 CIDR block. - */ - Ipv6CidrBlock?: String; - /** - * Information about the state of the CIDR block. - */ - Ipv6CidrBlockState?: SubnetCidrBlockState; - } - export type SubnetIpv6CidrBlockAssociationSet = SubnetIpv6CidrBlockAssociation[]; - export type SubnetList = Subnet[]; - export type SubnetState = "pending"|"available"|string; - export type SummaryStatus = "ok"|"impaired"|"insufficient-data"|"not-applicable"|"initializing"|string; - export interface Tag { - /** - * The key of the tag. Constraints: Tag keys are case-sensitive and accept a maximum of 127 Unicode characters. May not begin with aws: - */ - Key?: String; - /** - * The value of the tag. Constraints: Tag values are case-sensitive and accept a maximum of 255 Unicode characters. - */ - Value?: String; - } - export interface TagDescription { - /** - * The tag key. - */ - Key?: String; - /** - * The ID of the resource. For example, ami-1a2b3c4d. - */ - ResourceId?: String; - /** - * The resource type. - */ - ResourceType?: ResourceType; - /** - * The tag value. - */ - Value?: String; - } - export type TagDescriptionList = TagDescription[]; - export type TagList = Tag[]; - export interface TagSpecification { - /** - * The type of resource to tag. Currently, the resource types that support tagging on creation are instance and volume. - */ - ResourceType?: ResourceType; - /** - * The tags to apply to the resource. - */ - Tags?: TagList; - } - export type TagSpecificationList = TagSpecification[]; - export interface TargetConfiguration { - /** - * The number of instances the Convertible Reserved Instance offering can be applied to. This parameter is reserved and cannot be specified in a request - */ - InstanceCount?: Integer; - /** - * The ID of the Convertible Reserved Instance offering. - */ - OfferingId?: String; - } - export interface TargetConfigurationRequest { - /** - * The number of instances the Covertible Reserved Instance offering can be applied to. This parameter is reserved and cannot be specified in a request - */ - InstanceCount?: Integer; - /** - * The Convertible Reserved Instance offering ID. - */ - OfferingId: String; - } - export type TargetConfigurationRequestSet = TargetConfigurationRequest[]; - export interface TargetReservationValue { - /** - * The total value of the Convertible Reserved Instances that make up the exchange. This is the sum of the list value, remaining upfront price, and additional upfront cost of the exchange. - */ - ReservationValue?: ReservationValue; - /** - * The configuration of the Convertible Reserved Instances that make up the exchange. - */ - TargetConfiguration?: TargetConfiguration; - } - export type TargetReservationValueSet = TargetReservationValue[]; - export type TelemetryStatus = "UP"|"DOWN"|string; - export type Tenancy = "default"|"dedicated"|"host"|string; - export interface TerminateInstancesRequest { - /** - * One or more instance IDs. Constraints: Up to 1000 instance IDs. We recommend breaking up this request into smaller batches. - */ - InstanceIds: InstanceIdStringList; - /** - * Checks whether you have the required permissions for the action, without actually making the request, and provides an error response. If you have the required permissions, the error response is DryRunOperation. Otherwise, it is UnauthorizedOperation. - */ - DryRun?: Boolean; - } - export interface TerminateInstancesResult { - /** - * Information about one or more terminated instances. - */ - TerminatingInstances?: InstanceStateChangeList; - } - export type TrafficType = "ACCEPT"|"REJECT"|"ALL"|string; - export type TunnelOptionsList = VpnTunnelOptionsSpecification[]; - export interface UnassignIpv6AddressesRequest { - /** - * The IPv6 addresses to unassign from the network interface. - */ - Ipv6Addresses: Ipv6AddressList; - /** - * The ID of the network interface. - */ - NetworkInterfaceId: String; - } - export interface UnassignIpv6AddressesResult { - /** - * The ID of the network interface. - */ - NetworkInterfaceId?: String; - /** - * The IPv6 addresses that have been unassigned from the network interface. - */ - UnassignedIpv6Addresses?: Ipv6AddressList; - } - export interface UnassignPrivateIpAddressesRequest { - /** - * The ID of the network interface. - */ - NetworkInterfaceId: String; - /** - * The secondary private IP addresses to unassign from the network interface. You can specify this option multiple times to unassign more than one IP address. - */ - PrivateIpAddresses: PrivateIpAddressStringList; - } - export interface UnmonitorInstancesRequest { - /** - * One or more instance IDs. - */ - InstanceIds: InstanceIdStringList; - /** - * Checks whether you have the required permissions for the action, without actually making the request, and provides an error response. If you have the required permissions, the error response is DryRunOperation. Otherwise, it is UnauthorizedOperation. - */ - DryRun?: Boolean; - } - export interface UnmonitorInstancesResult { - /** - * The monitoring information. - */ - InstanceMonitorings?: InstanceMonitoringList; - } - export interface UnsuccessfulItem { - /** - * Information about the error. - */ - Error: UnsuccessfulItemError; - /** - * The ID of the resource. - */ - ResourceId?: String; - } - export interface UnsuccessfulItemError { - /** - * The error code. - */ - Code: String; - /** - * The error message accompanying the error code. - */ - Message: String; - } - export type UnsuccessfulItemList = UnsuccessfulItem[]; - export type UnsuccessfulItemSet = UnsuccessfulItem[]; - export interface UpdateSecurityGroupRuleDescriptionsEgressRequest { - /** - * Checks whether you have the required permissions for the action, without actually making the request, and provides an error response. If you have the required permissions, the error response is DryRunOperation. Otherwise, it is UnauthorizedOperation. - */ - DryRun?: Boolean; - /** - * The ID of the security group. You must specify either the security group ID or the security group name in the request. For security groups in a nondefault VPC, you must specify the security group ID. - */ - GroupId?: String; - /** - * [Default VPC] The name of the security group. You must specify either the security group ID or the security group name in the request. - */ - GroupName?: String; - /** - * The IP permissions for the security group rule. - */ - IpPermissions: IpPermissionList; - } - export interface UpdateSecurityGroupRuleDescriptionsEgressResult { - /** - * Returns true if the request succeeds; otherwise, returns an error. - */ - Return?: Boolean; - } - export interface UpdateSecurityGroupRuleDescriptionsIngressRequest { - /** - * Checks whether you have the required permissions for the action, without actually making the request, and provides an error response. If you have the required permissions, the error response is DryRunOperation. Otherwise, it is UnauthorizedOperation. - */ - DryRun?: Boolean; - /** - * The ID of the security group. You must specify either the security group ID or the security group name in the request. For security groups in a nondefault VPC, you must specify the security group ID. - */ - GroupId?: String; - /** - * [EC2-Classic, default VPC] The name of the security group. You must specify either the security group ID or the security group name in the request. - */ - GroupName?: String; - /** - * The IP permissions for the security group rule. - */ - IpPermissions: IpPermissionList; - } - export interface UpdateSecurityGroupRuleDescriptionsIngressResult { - /** - * Returns true if the request succeeds; otherwise, returns an error. - */ - Return?: Boolean; - } - export interface UserBucket { - /** - * The name of the S3 bucket where the disk image is located. - */ - S3Bucket?: String; - /** - * The file name of the disk image. - */ - S3Key?: String; - } - export interface UserBucketDetails { - /** - * The S3 bucket from which the disk image was created. - */ - S3Bucket?: String; - /** - * The file name of the disk image. - */ - S3Key?: String; - } - export interface UserData { - /** - * The user data. If you are using an AWS SDK or command line tool, Base64-encoding is performed for you, and you can load the text from a file. Otherwise, you must provide Base64-encoded text. - */ - Data?: String; - } - export type UserGroupStringList = String[]; - export interface UserIdGroupPair { - /** - * A description for the security group rule that references this user ID group pair. Constraints: Up to 255 characters in length. Allowed characters are a-z, A-Z, 0-9, spaces, and ._-:/()#,@[]+=;{}!$* - */ - Description?: String; - /** - * The ID of the security group. - */ - GroupId?: String; - /** - * The name of the security group. In a request, use this parameter for a security group in EC2-Classic or a default VPC only. For a security group in a nondefault VPC, use the security group ID. - */ - GroupName?: String; - /** - * The status of a VPC peering connection, if applicable. - */ - PeeringStatus?: String; - /** - * The ID of an AWS account. For a referenced security group in another VPC, the account ID of the referenced security group is returned. [EC2-Classic] Required when adding or removing rules that reference a security group in another AWS account. - */ - UserId?: String; - /** - * The ID of the VPC for the referenced security group, if applicable. - */ - VpcId?: String; - /** - * The ID of the VPC peering connection, if applicable. - */ - VpcPeeringConnectionId?: String; - } - export type UserIdGroupPairList = UserIdGroupPair[]; - export type UserIdGroupPairSet = UserIdGroupPair[]; - export type UserIdStringList = String[]; - export type ValueStringList = String[]; - export interface VgwTelemetry { - /** - * The number of accepted routes. - */ - AcceptedRouteCount?: Integer; - /** - * The date and time of the last change in status. - */ - LastStatusChange?: DateTime; - /** - * The Internet-routable IP address of the virtual private gateway's outside interface. - */ - OutsideIpAddress?: String; - /** - * The status of the VPN tunnel. - */ - Status?: TelemetryStatus; - /** - * If an error occurs, a description of the error. - */ - StatusMessage?: String; - } - export type VgwTelemetryList = VgwTelemetry[]; - export type VirtualizationType = "hvm"|"paravirtual"|string; - export interface Volume { - /** - * Information about the volume attachments. - */ - Attachments?: VolumeAttachmentList; - /** - * The Availability Zone for the volume. - */ - AvailabilityZone?: String; - /** - * The time stamp when volume creation was initiated. - */ - CreateTime?: DateTime; - /** - * Indicates whether the volume will be encrypted. - */ - Encrypted?: Boolean; - /** - * The full ARN of the AWS Key Management Service (AWS KMS) customer master key (CMK) that was used to protect the volume encryption key for the volume. - */ - KmsKeyId?: String; - /** - * The size of the volume, in GiBs. - */ - Size?: Integer; - /** - * The snapshot from which the volume was created, if applicable. - */ - SnapshotId?: String; - /** - * The volume state. - */ - State?: VolumeState; - /** - * The ID of the volume. - */ - VolumeId?: String; - /** - * The number of I/O operations per second (IOPS) that the volume supports. For Provisioned IOPS SSD volumes, this represents the number of IOPS that are provisioned for the volume. For General Purpose SSD volumes, this represents the baseline performance of the volume and the rate at which the volume accumulates I/O credits for bursting. For more information on General Purpose SSD baseline performance, I/O credits, and bursting, see Amazon EBS Volume Types in the Amazon Elastic Compute Cloud User Guide. Constraint: Range is 100-20000 IOPS for io1 volumes and 100-10000 IOPS for gp2 volumes. Condition: This parameter is required for requests to create io1 volumes; it is not used in requests to create gp2, st1, sc1, or standard volumes. - */ - Iops?: Integer; - /** - * Any tags assigned to the volume. - */ - Tags?: TagList; - /** - * The volume type. This can be gp2 for General Purpose SSD, io1 for Provisioned IOPS SSD, st1 for Throughput Optimized HDD, sc1 for Cold HDD, or standard for Magnetic volumes. - */ - VolumeType?: VolumeType; - } - export interface VolumeAttachment { - /** - * The time stamp when the attachment initiated. - */ - AttachTime?: DateTime; - /** - * The device name. - */ - Device?: String; - /** - * The ID of the instance. - */ - InstanceId?: String; - /** - * The attachment state of the volume. - */ - State?: VolumeAttachmentState; - /** - * The ID of the volume. - */ - VolumeId?: String; - /** - * Indicates whether the EBS volume is deleted on instance termination. - */ - DeleteOnTermination?: Boolean; - } - export type VolumeAttachmentList = VolumeAttachment[]; - export type VolumeAttachmentState = "attaching"|"attached"|"detaching"|"detached"|string; - export type VolumeAttributeName = "autoEnableIO"|"productCodes"|string; - export interface VolumeDetail { - /** - * The size of the volume, in GiB. - */ - Size: Long; - } - export type VolumeIdStringList = String[]; - export type VolumeList = Volume[]; - export interface VolumeModification { - /** - * ID of the volume being modified. - */ - VolumeId?: String; - /** - * Current state of modification. Modification state is null for unmodified volumes. - */ - ModificationState?: VolumeModificationState; - /** - * Generic status message on modification progress or failure. - */ - StatusMessage?: String; - /** - * Target size of the volume being modified. - */ - TargetSize?: Integer; - /** - * Target IOPS rate of the volume being modified. - */ - TargetIops?: Integer; - /** - * Target EBS volume type of the volume being modified. - */ - TargetVolumeType?: VolumeType; - /** - * Original size of the volume being modified. - */ - OriginalSize?: Integer; - /** - * Original IOPS rate of the volume being modified. - */ - OriginalIops?: Integer; - /** - * Original EBS volume type of the volume being modified. - */ - OriginalVolumeType?: VolumeType; - /** - * Modification progress from 0 to 100%. - */ - Progress?: Long; - /** - * Modification start time - */ - StartTime?: DateTime; - /** - * Modification completion or failure time. - */ - EndTime?: DateTime; - } - export type VolumeModificationList = VolumeModification[]; - export type VolumeModificationState = "modifying"|"optimizing"|"completed"|"failed"|string; - export type VolumeState = "creating"|"available"|"in-use"|"deleting"|"deleted"|"error"|string; - export interface VolumeStatusAction { - /** - * The code identifying the operation, for example, enable-volume-io. - */ - Code?: String; - /** - * A description of the operation. - */ - Description?: String; - /** - * The ID of the event associated with this operation. - */ - EventId?: String; - /** - * The event type associated with this operation. - */ - EventType?: String; - } - export type VolumeStatusActionsList = VolumeStatusAction[]; - export interface VolumeStatusDetails { - /** - * The name of the volume status. - */ - Name?: VolumeStatusName; - /** - * The intended status of the volume status. - */ - Status?: String; - } - export type VolumeStatusDetailsList = VolumeStatusDetails[]; - export interface VolumeStatusEvent { - /** - * A description of the event. - */ - Description?: String; - /** - * The ID of this event. - */ - EventId?: String; - /** - * The type of this event. - */ - EventType?: String; - /** - * The latest end time of the event. - */ - NotAfter?: DateTime; - /** - * The earliest start time of the event. - */ - NotBefore?: DateTime; - } - export type VolumeStatusEventsList = VolumeStatusEvent[]; - export interface VolumeStatusInfo { - /** - * The details of the volume status. - */ - Details?: VolumeStatusDetailsList; - /** - * The status of the volume. - */ - Status?: VolumeStatusInfoStatus; - } - export type VolumeStatusInfoStatus = "ok"|"impaired"|"insufficient-data"|string; - export interface VolumeStatusItem { - /** - * The details of the operation. - */ - Actions?: VolumeStatusActionsList; - /** - * The Availability Zone of the volume. - */ - AvailabilityZone?: String; - /** - * A list of events associated with the volume. - */ - Events?: VolumeStatusEventsList; - /** - * The volume ID. - */ - VolumeId?: String; - /** - * The volume status. - */ - VolumeStatus?: VolumeStatusInfo; - } - export type VolumeStatusList = VolumeStatusItem[]; - export type VolumeStatusName = "io-enabled"|"io-performance"|string; - export type VolumeType = "standard"|"io1"|"gp2"|"sc1"|"st1"|string; - export interface Vpc { - /** - * The primary IPv4 CIDR block for the VPC. - */ - CidrBlock?: String; - /** - * The ID of the set of DHCP options you've associated with the VPC (or default if the default options are associated with the VPC). - */ - DhcpOptionsId?: String; - /** - * The current state of the VPC. - */ - State?: VpcState; - /** - * The ID of the VPC. - */ - VpcId?: String; - /** - * The allowed tenancy of instances launched into the VPC. - */ - InstanceTenancy?: Tenancy; - /** - * Information about the IPv6 CIDR blocks associated with the VPC. - */ - Ipv6CidrBlockAssociationSet?: VpcIpv6CidrBlockAssociationSet; - /** - * Information about the IPv4 CIDR blocks associated with the VPC. - */ - CidrBlockAssociationSet?: VpcCidrBlockAssociationSet; - /** - * Indicates whether the VPC is the default VPC. - */ - IsDefault?: Boolean; - /** - * Any tags assigned to the VPC. - */ - Tags?: TagList; - } - export interface VpcAttachment { - /** - * The current state of the attachment. - */ - State?: AttachmentStatus; - /** - * The ID of the VPC. - */ - VpcId?: String; - } - export type VpcAttachmentList = VpcAttachment[]; - export type VpcAttributeName = "enableDnsSupport"|"enableDnsHostnames"|string; - export interface VpcCidrBlockAssociation { - /** - * The association ID for the IPv4 CIDR block. - */ - AssociationId?: String; - /** - * The IPv4 CIDR block. - */ - CidrBlock?: String; - /** - * Information about the state of the CIDR block. - */ - CidrBlockState?: VpcCidrBlockState; - } - export type VpcCidrBlockAssociationSet = VpcCidrBlockAssociation[]; - export interface VpcCidrBlockState { - /** - * The state of the CIDR block. - */ - State?: VpcCidrBlockStateCode; - /** - * A message about the status of the CIDR block, if applicable. - */ - StatusMessage?: String; - } - export type VpcCidrBlockStateCode = "associating"|"associated"|"disassociating"|"disassociated"|"failing"|"failed"|string; - export interface VpcClassicLink { - /** - * Indicates whether the VPC is enabled for ClassicLink. - */ - ClassicLinkEnabled?: Boolean; - /** - * Any tags assigned to the VPC. - */ - Tags?: TagList; - /** - * The ID of the VPC. - */ - VpcId?: String; - } - export type VpcClassicLinkIdList = String[]; - export type VpcClassicLinkList = VpcClassicLink[]; - export interface VpcEndpoint { - /** - * The date and time the VPC endpoint was created. - */ - CreationTimestamp?: DateTime; - /** - * The policy document associated with the endpoint. - */ - PolicyDocument?: String; - /** - * One or more route tables associated with the endpoint. - */ - RouteTableIds?: ValueStringList; - /** - * The name of the AWS service to which the endpoint is associated. - */ - ServiceName?: String; - /** - * The state of the VPC endpoint. - */ - State?: State; - /** - * The ID of the VPC endpoint. - */ - VpcEndpointId?: String; - /** - * The ID of the VPC to which the endpoint is associated. - */ - VpcId?: String; - } - export type VpcEndpointSet = VpcEndpoint[]; - export type VpcIdStringList = String[]; - export interface VpcIpv6CidrBlockAssociation { - /** - * The association ID for the IPv6 CIDR block. - */ - AssociationId?: String; - /** - * The IPv6 CIDR block. - */ - Ipv6CidrBlock?: String; - /** - * Information about the state of the CIDR block. - */ - Ipv6CidrBlockState?: VpcCidrBlockState; - } - export type VpcIpv6CidrBlockAssociationSet = VpcIpv6CidrBlockAssociation[]; - export type VpcList = Vpc[]; - export interface VpcPeeringConnection { - /** - * Information about the accepter VPC. CIDR block information is only returned when describing an active VPC peering connection. - */ - AccepterVpcInfo?: VpcPeeringConnectionVpcInfo; - /** - * The time that an unaccepted VPC peering connection will expire. - */ - ExpirationTime?: DateTime; - /** - * Information about the requester VPC. CIDR block information is only returned when describing an active VPC peering connection. - */ - RequesterVpcInfo?: VpcPeeringConnectionVpcInfo; - /** - * The status of the VPC peering connection. - */ - Status?: VpcPeeringConnectionStateReason; - /** - * Any tags assigned to the resource. - */ - Tags?: TagList; - /** - * The ID of the VPC peering connection. - */ - VpcPeeringConnectionId?: String; - } - export type VpcPeeringConnectionList = VpcPeeringConnection[]; - export interface VpcPeeringConnectionOptionsDescription { - /** - * Indicates whether a local VPC can resolve public DNS hostnames to private IP addresses when queried from instances in a peer VPC. - */ - AllowDnsResolutionFromRemoteVpc?: Boolean; - /** - * Indicates whether a local ClassicLink connection can communicate with the peer VPC over the VPC peering connection. - */ - AllowEgressFromLocalClassicLinkToRemoteVpc?: Boolean; - /** - * Indicates whether a local VPC can communicate with a ClassicLink connection in the peer VPC over the VPC peering connection. - */ - AllowEgressFromLocalVpcToRemoteClassicLink?: Boolean; - } - export interface VpcPeeringConnectionStateReason { - /** - * The status of the VPC peering connection. - */ - Code?: VpcPeeringConnectionStateReasonCode; - /** - * A message that provides more information about the status, if applicable. - */ - Message?: String; - } - export type VpcPeeringConnectionStateReasonCode = "initiating-request"|"pending-acceptance"|"active"|"deleted"|"rejected"|"failed"|"expired"|"provisioning"|"deleting"|string; - export interface VpcPeeringConnectionVpcInfo { - /** - * The IPv4 CIDR block for the VPC. - */ - CidrBlock?: String; - /** - * The IPv6 CIDR block for the VPC. - */ - Ipv6CidrBlockSet?: Ipv6CidrBlockSet; - /** - * Information about the IPv4 CIDR blocks for the VPC. - */ - CidrBlockSet?: CidrBlockSet; - /** - * The AWS account ID of the VPC owner. - */ - OwnerId?: String; - /** - * Information about the VPC peering connection options for the accepter or requester VPC. - */ - PeeringOptions?: VpcPeeringConnectionOptionsDescription; - /** - * The ID of the VPC. - */ - VpcId?: String; - } - export type VpcState = "pending"|"available"|string; - export interface VpnConnection { - /** - * The configuration information for the VPN connection's customer gateway (in the native XML format). This element is always present in the CreateVpnConnection response; however, it's present in the DescribeVpnConnections response only if the VPN connection is in the pending or available state. - */ - CustomerGatewayConfiguration?: String; - /** - * The ID of the customer gateway at your end of the VPN connection. - */ - CustomerGatewayId?: String; - /** - * The category of the VPN connection. A value of VPN indicates an AWS VPN connection. A value of VPN-Classic indicates an AWS Classic VPN connection. For more information, see AWS Managed VPN Categories in the Amazon Virtual Private Cloud User Guide. - */ - Category?: String; - /** - * The current state of the VPN connection. - */ - State?: VpnState; - /** - * The type of VPN connection. - */ - Type?: GatewayType; - /** - * The ID of the VPN connection. - */ - VpnConnectionId?: String; - /** - * The ID of the virtual private gateway at the AWS side of the VPN connection. - */ - VpnGatewayId?: String; - /** - * The VPN connection options. - */ - Options?: VpnConnectionOptions; - /** - * The static routes associated with the VPN connection. - */ - Routes?: VpnStaticRouteList; - /** - * Any tags assigned to the VPN connection. - */ - Tags?: TagList; - /** - * Information about the VPN tunnel. - */ - VgwTelemetry?: VgwTelemetryList; - } - export type VpnConnectionIdStringList = String[]; - export type VpnConnectionList = VpnConnection[]; - export interface VpnConnectionOptions { - /** - * Indicates whether the VPN connection uses static routes only. Static routes must be used for devices that don't support BGP. - */ - StaticRoutesOnly?: Boolean; - } - export interface VpnConnectionOptionsSpecification { - /** - * Indicate whether the VPN connection uses static routes only. If you are creating a VPN connection for a device that does not support BGP, you must specify true. Default: false - */ - StaticRoutesOnly?: Boolean; - /** - * The tunnel options for the VPN connection. - */ - TunnelOptions?: TunnelOptionsList; - } - export interface VpnGateway { - /** - * The Availability Zone where the virtual private gateway was created, if applicable. This field may be empty or not returned. - */ - AvailabilityZone?: String; - /** - * The current state of the virtual private gateway. - */ - State?: VpnState; - /** - * The type of VPN connection the virtual private gateway supports. - */ - Type?: GatewayType; - /** - * Any VPCs attached to the virtual private gateway. - */ - VpcAttachments?: VpcAttachmentList; - /** - * The ID of the virtual private gateway. - */ - VpnGatewayId?: String; - /** - * The private Autonomous System Number (ASN) for the Amazon side of a BGP session. - */ - AmazonSideAsn?: Long; - /** - * Any tags assigned to the virtual private gateway. - */ - Tags?: TagList; - } - export type VpnGatewayIdStringList = String[]; - export type VpnGatewayList = VpnGateway[]; - export type VpnState = "pending"|"available"|"deleting"|"deleted"|string; - export interface VpnStaticRoute { - /** - * The CIDR block associated with the local subnet of the customer data center. - */ - DestinationCidrBlock?: String; - /** - * Indicates how the routes were provided. - */ - Source?: VpnStaticRouteSource; - /** - * The current state of the static route. - */ - State?: VpnState; - } - export type VpnStaticRouteList = VpnStaticRoute[]; - export type VpnStaticRouteSource = "Static"|string; - export interface VpnTunnelOptionsSpecification { - /** - * The range of inside IP addresses for the tunnel. Any specified CIDR blocks must be unique across all VPN connections that use the same virtual private gateway. Constraints: A size /30 CIDR block from the 169.254.0.0/16 range. The following CIDR blocks are reserved and cannot be used: 169.254.0.0/30 169.254.1.0/30 169.254.2.0/30 169.254.3.0/30 169.254.4.0/30 169.254.5.0/30 169.254.169.252/30 - */ - TunnelInsideCidr?: String; - /** - * The pre-shared key (PSK) to establish initial authentication between the virtual private gateway and customer gateway. Constraints: Allowed characters are alphanumeric characters and ._. Must be between 8 and 64 characters in length and cannot start with zero (0). - */ - PreSharedKey?: String; - } - export type ZoneNameStringList = String[]; - export type scope = "Availability Zone"|"Region"|string; - /** - * A string in YYYY-MM-DD format that represents the latest possible API version that can be used in this service. Specify 'latest' to use the latest possible version. - */ - export type apiVersion = "2013-06-15"|"2013-10-15"|"2014-02-01"|"2014-05-01"|"2014-06-15"|"2014-09-01"|"2014-10-01"|"2015-03-01"|"2015-04-15"|"2015-10-01"|"2016-04-01"|"2016-09-15"|"2016-11-15"|"latest"|string; - export interface ClientApiVersions { - /** - * A string in YYYY-MM-DD format that represents the latest possible API version that can be used in this service. Specify 'latest' to use the latest possible version. - */ - apiVersion?: apiVersion; - } - export type ClientConfiguration = ServiceConfigurationOptions & ClientApiVersions; - /** - * Contains interfaces for use with the EC2 client. - */ - export import Types = EC2; -} -export = EC2; diff --git a/workshops/monte-carlo-on-ec2-spot-fleet/src/web/node_modules/aws-sdk/clients/ec2.js b/workshops/monte-carlo-on-ec2-spot-fleet/src/web/node_modules/aws-sdk/clients/ec2.js deleted file mode 100644 index a102db82..00000000 --- a/workshops/monte-carlo-on-ec2-spot-fleet/src/web/node_modules/aws-sdk/clients/ec2.js +++ /dev/null @@ -1,20 +0,0 @@ -require('../lib/node_loader'); -var AWS = require('../lib/core'); -var Service = AWS.Service; -var apiLoader = AWS.apiLoader; - -apiLoader.services['ec2'] = {}; -AWS.EC2 = Service.defineService('ec2', ['2013-06-15*', '2013-10-15*', '2014-02-01*', '2014-05-01*', '2014-06-15*', '2014-09-01*', '2014-10-01*', '2015-03-01*', '2015-04-15*', '2015-10-01*', '2016-04-01*', '2016-09-15*', '2016-11-15']); -require('../lib/services/ec2'); -Object.defineProperty(apiLoader.services['ec2'], '2016-11-15', { - get: function get() { - var model = require('../apis/ec2-2016-11-15.min.json'); - model.paginators = require('../apis/ec2-2016-11-15.paginators.json').pagination; - model.waiters = require('../apis/ec2-2016-11-15.waiters2.json').waiters; - return model; - }, - enumerable: true, - configurable: true -}); - -module.exports = AWS.EC2; diff --git a/workshops/monte-carlo-on-ec2-spot-fleet/src/web/node_modules/aws-sdk/clients/ecr.d.ts b/workshops/monte-carlo-on-ec2-spot-fleet/src/web/node_modules/aws-sdk/clients/ecr.d.ts deleted file mode 100644 index 99aa4d95..00000000 --- a/workshops/monte-carlo-on-ec2-spot-fleet/src/web/node_modules/aws-sdk/clients/ecr.d.ts +++ /dev/null @@ -1,1064 +0,0 @@ -import {Request} from '../lib/request'; -import {Response} from '../lib/response'; -import {AWSError} from '../lib/error'; -import {Service} from '../lib/service'; -import {ServiceConfigurationOptions} from '../lib/service'; -import {ConfigBase as Config} from '../lib/config'; -interface Blob {} -declare class ECR extends Service { - /** - * Constructs a service object. This object has one method for each API operation. - */ - constructor(options?: ECR.Types.ClientConfiguration) - config: Config & ECR.Types.ClientConfiguration; - /** - * Check the availability of multiple image layers in a specified registry and repository. This operation is used by the Amazon ECR proxy, and it is not intended for general use by customers for pulling and pushing images. In most cases, you should use the docker CLI to pull, tag, and push images. - */ - batchCheckLayerAvailability(params: ECR.Types.BatchCheckLayerAvailabilityRequest, callback?: (err: AWSError, data: ECR.Types.BatchCheckLayerAvailabilityResponse) => void): Request; - /** - * Check the availability of multiple image layers in a specified registry and repository. This operation is used by the Amazon ECR proxy, and it is not intended for general use by customers for pulling and pushing images. In most cases, you should use the docker CLI to pull, tag, and push images. - */ - batchCheckLayerAvailability(callback?: (err: AWSError, data: ECR.Types.BatchCheckLayerAvailabilityResponse) => void): Request; - /** - * Deletes a list of specified images within a specified repository. Images are specified with either imageTag or imageDigest. You can remove a tag from an image by specifying the image's tag in your request. When you remove the last tag from an image, the image is deleted from your repository. You can completely delete an image (and all of its tags) by specifying the image's digest in your request. - */ - batchDeleteImage(params: ECR.Types.BatchDeleteImageRequest, callback?: (err: AWSError, data: ECR.Types.BatchDeleteImageResponse) => void): Request; - /** - * Deletes a list of specified images within a specified repository. Images are specified with either imageTag or imageDigest. You can remove a tag from an image by specifying the image's tag in your request. When you remove the last tag from an image, the image is deleted from your repository. You can completely delete an image (and all of its tags) by specifying the image's digest in your request. - */ - batchDeleteImage(callback?: (err: AWSError, data: ECR.Types.BatchDeleteImageResponse) => void): Request; - /** - * Gets detailed information for specified images within a specified repository. Images are specified with either imageTag or imageDigest. - */ - batchGetImage(params: ECR.Types.BatchGetImageRequest, callback?: (err: AWSError, data: ECR.Types.BatchGetImageResponse) => void): Request; - /** - * Gets detailed information for specified images within a specified repository. Images are specified with either imageTag or imageDigest. - */ - batchGetImage(callback?: (err: AWSError, data: ECR.Types.BatchGetImageResponse) => void): Request; - /** - * Informs Amazon ECR that the image layer upload has completed for a specified registry, repository name, and upload ID. You can optionally provide a sha256 digest of the image layer for data validation purposes. This operation is used by the Amazon ECR proxy, and it is not intended for general use by customers for pulling and pushing images. In most cases, you should use the docker CLI to pull, tag, and push images. - */ - completeLayerUpload(params: ECR.Types.CompleteLayerUploadRequest, callback?: (err: AWSError, data: ECR.Types.CompleteLayerUploadResponse) => void): Request; - /** - * Informs Amazon ECR that the image layer upload has completed for a specified registry, repository name, and upload ID. You can optionally provide a sha256 digest of the image layer for data validation purposes. This operation is used by the Amazon ECR proxy, and it is not intended for general use by customers for pulling and pushing images. In most cases, you should use the docker CLI to pull, tag, and push images. - */ - completeLayerUpload(callback?: (err: AWSError, data: ECR.Types.CompleteLayerUploadResponse) => void): Request; - /** - * Creates an image repository. - */ - createRepository(params: ECR.Types.CreateRepositoryRequest, callback?: (err: AWSError, data: ECR.Types.CreateRepositoryResponse) => void): Request; - /** - * Creates an image repository. - */ - createRepository(callback?: (err: AWSError, data: ECR.Types.CreateRepositoryResponse) => void): Request; - /** - * Deletes the specified lifecycle policy. - */ - deleteLifecyclePolicy(params: ECR.Types.DeleteLifecyclePolicyRequest, callback?: (err: AWSError, data: ECR.Types.DeleteLifecyclePolicyResponse) => void): Request; - /** - * Deletes the specified lifecycle policy. - */ - deleteLifecyclePolicy(callback?: (err: AWSError, data: ECR.Types.DeleteLifecyclePolicyResponse) => void): Request; - /** - * Deletes an existing image repository. If a repository contains images, you must use the force option to delete it. - */ - deleteRepository(params: ECR.Types.DeleteRepositoryRequest, callback?: (err: AWSError, data: ECR.Types.DeleteRepositoryResponse) => void): Request; - /** - * Deletes an existing image repository. If a repository contains images, you must use the force option to delete it. - */ - deleteRepository(callback?: (err: AWSError, data: ECR.Types.DeleteRepositoryResponse) => void): Request; - /** - * Deletes the repository policy from a specified repository. - */ - deleteRepositoryPolicy(params: ECR.Types.DeleteRepositoryPolicyRequest, callback?: (err: AWSError, data: ECR.Types.DeleteRepositoryPolicyResponse) => void): Request; - /** - * Deletes the repository policy from a specified repository. - */ - deleteRepositoryPolicy(callback?: (err: AWSError, data: ECR.Types.DeleteRepositoryPolicyResponse) => void): Request; - /** - * Returns metadata about the images in a repository, including image size, image tags, and creation date. Beginning with Docker version 1.9, the Docker client compresses image layers before pushing them to a V2 Docker registry. The output of the docker images command shows the uncompressed image size, so it may return a larger image size than the image sizes returned by DescribeImages. - */ - describeImages(params: ECR.Types.DescribeImagesRequest, callback?: (err: AWSError, data: ECR.Types.DescribeImagesResponse) => void): Request; - /** - * Returns metadata about the images in a repository, including image size, image tags, and creation date. Beginning with Docker version 1.9, the Docker client compresses image layers before pushing them to a V2 Docker registry. The output of the docker images command shows the uncompressed image size, so it may return a larger image size than the image sizes returned by DescribeImages. - */ - describeImages(callback?: (err: AWSError, data: ECR.Types.DescribeImagesResponse) => void): Request; - /** - * Describes image repositories in a registry. - */ - describeRepositories(params: ECR.Types.DescribeRepositoriesRequest, callback?: (err: AWSError, data: ECR.Types.DescribeRepositoriesResponse) => void): Request; - /** - * Describes image repositories in a registry. - */ - describeRepositories(callback?: (err: AWSError, data: ECR.Types.DescribeRepositoriesResponse) => void): Request; - /** - * Retrieves a token that is valid for a specified registry for 12 hours. This command allows you to use the docker CLI to push and pull images with Amazon ECR. If you do not specify a registry, the default registry is assumed. The authorizationToken returned for each registry specified is a base64 encoded string that can be decoded and used in a docker login command to authenticate to a registry. The AWS CLI offers an aws ecr get-login command that simplifies the login process. - */ - getAuthorizationToken(params: ECR.Types.GetAuthorizationTokenRequest, callback?: (err: AWSError, data: ECR.Types.GetAuthorizationTokenResponse) => void): Request; - /** - * Retrieves a token that is valid for a specified registry for 12 hours. This command allows you to use the docker CLI to push and pull images with Amazon ECR. If you do not specify a registry, the default registry is assumed. The authorizationToken returned for each registry specified is a base64 encoded string that can be decoded and used in a docker login command to authenticate to a registry. The AWS CLI offers an aws ecr get-login command that simplifies the login process. - */ - getAuthorizationToken(callback?: (err: AWSError, data: ECR.Types.GetAuthorizationTokenResponse) => void): Request; - /** - * Retrieves the pre-signed Amazon S3 download URL corresponding to an image layer. You can only get URLs for image layers that are referenced in an image. This operation is used by the Amazon ECR proxy, and it is not intended for general use by customers for pulling and pushing images. In most cases, you should use the docker CLI to pull, tag, and push images. - */ - getDownloadUrlForLayer(params: ECR.Types.GetDownloadUrlForLayerRequest, callback?: (err: AWSError, data: ECR.Types.GetDownloadUrlForLayerResponse) => void): Request; - /** - * Retrieves the pre-signed Amazon S3 download URL corresponding to an image layer. You can only get URLs for image layers that are referenced in an image. This operation is used by the Amazon ECR proxy, and it is not intended for general use by customers for pulling and pushing images. In most cases, you should use the docker CLI to pull, tag, and push images. - */ - getDownloadUrlForLayer(callback?: (err: AWSError, data: ECR.Types.GetDownloadUrlForLayerResponse) => void): Request; - /** - * Retrieves the specified lifecycle policy. - */ - getLifecyclePolicy(params: ECR.Types.GetLifecyclePolicyRequest, callback?: (err: AWSError, data: ECR.Types.GetLifecyclePolicyResponse) => void): Request; - /** - * Retrieves the specified lifecycle policy. - */ - getLifecyclePolicy(callback?: (err: AWSError, data: ECR.Types.GetLifecyclePolicyResponse) => void): Request; - /** - * Retrieves the results of the specified lifecycle policy preview request. - */ - getLifecyclePolicyPreview(params: ECR.Types.GetLifecyclePolicyPreviewRequest, callback?: (err: AWSError, data: ECR.Types.GetLifecyclePolicyPreviewResponse) => void): Request; - /** - * Retrieves the results of the specified lifecycle policy preview request. - */ - getLifecyclePolicyPreview(callback?: (err: AWSError, data: ECR.Types.GetLifecyclePolicyPreviewResponse) => void): Request; - /** - * Retrieves the repository policy for a specified repository. - */ - getRepositoryPolicy(params: ECR.Types.GetRepositoryPolicyRequest, callback?: (err: AWSError, data: ECR.Types.GetRepositoryPolicyResponse) => void): Request; - /** - * Retrieves the repository policy for a specified repository. - */ - getRepositoryPolicy(callback?: (err: AWSError, data: ECR.Types.GetRepositoryPolicyResponse) => void): Request; - /** - * Notify Amazon ECR that you intend to upload an image layer. This operation is used by the Amazon ECR proxy, and it is not intended for general use by customers for pulling and pushing images. In most cases, you should use the docker CLI to pull, tag, and push images. - */ - initiateLayerUpload(params: ECR.Types.InitiateLayerUploadRequest, callback?: (err: AWSError, data: ECR.Types.InitiateLayerUploadResponse) => void): Request; - /** - * Notify Amazon ECR that you intend to upload an image layer. This operation is used by the Amazon ECR proxy, and it is not intended for general use by customers for pulling and pushing images. In most cases, you should use the docker CLI to pull, tag, and push images. - */ - initiateLayerUpload(callback?: (err: AWSError, data: ECR.Types.InitiateLayerUploadResponse) => void): Request; - /** - * Lists all the image IDs for a given repository. You can filter images based on whether or not they are tagged by setting the tagStatus parameter to TAGGED or UNTAGGED. For example, you can filter your results to return only UNTAGGED images and then pipe that result to a BatchDeleteImage operation to delete them. Or, you can filter your results to return only TAGGED images to list all of the tags in your repository. - */ - listImages(params: ECR.Types.ListImagesRequest, callback?: (err: AWSError, data: ECR.Types.ListImagesResponse) => void): Request; - /** - * Lists all the image IDs for a given repository. You can filter images based on whether or not they are tagged by setting the tagStatus parameter to TAGGED or UNTAGGED. For example, you can filter your results to return only UNTAGGED images and then pipe that result to a BatchDeleteImage operation to delete them. Or, you can filter your results to return only TAGGED images to list all of the tags in your repository. - */ - listImages(callback?: (err: AWSError, data: ECR.Types.ListImagesResponse) => void): Request; - /** - * Creates or updates the image manifest and tags associated with an image. This operation is used by the Amazon ECR proxy, and it is not intended for general use by customers for pulling and pushing images. In most cases, you should use the docker CLI to pull, tag, and push images. - */ - putImage(params: ECR.Types.PutImageRequest, callback?: (err: AWSError, data: ECR.Types.PutImageResponse) => void): Request; - /** - * Creates or updates the image manifest and tags associated with an image. This operation is used by the Amazon ECR proxy, and it is not intended for general use by customers for pulling and pushing images. In most cases, you should use the docker CLI to pull, tag, and push images. - */ - putImage(callback?: (err: AWSError, data: ECR.Types.PutImageResponse) => void): Request; - /** - * Creates or updates a lifecycle policy. - */ - putLifecyclePolicy(params: ECR.Types.PutLifecyclePolicyRequest, callback?: (err: AWSError, data: ECR.Types.PutLifecyclePolicyResponse) => void): Request; - /** - * Creates or updates a lifecycle policy. - */ - putLifecyclePolicy(callback?: (err: AWSError, data: ECR.Types.PutLifecyclePolicyResponse) => void): Request; - /** - * Applies a repository policy on a specified repository to control access permissions. - */ - setRepositoryPolicy(params: ECR.Types.SetRepositoryPolicyRequest, callback?: (err: AWSError, data: ECR.Types.SetRepositoryPolicyResponse) => void): Request; - /** - * Applies a repository policy on a specified repository to control access permissions. - */ - setRepositoryPolicy(callback?: (err: AWSError, data: ECR.Types.SetRepositoryPolicyResponse) => void): Request; - /** - * Starts a preview of the specified lifecycle policy. This allows you to see the results before creating the lifecycle policy. - */ - startLifecyclePolicyPreview(params: ECR.Types.StartLifecyclePolicyPreviewRequest, callback?: (err: AWSError, data: ECR.Types.StartLifecyclePolicyPreviewResponse) => void): Request; - /** - * Starts a preview of the specified lifecycle policy. This allows you to see the results before creating the lifecycle policy. - */ - startLifecyclePolicyPreview(callback?: (err: AWSError, data: ECR.Types.StartLifecyclePolicyPreviewResponse) => void): Request; - /** - * Uploads an image layer part to Amazon ECR. This operation is used by the Amazon ECR proxy, and it is not intended for general use by customers for pulling and pushing images. In most cases, you should use the docker CLI to pull, tag, and push images. - */ - uploadLayerPart(params: ECR.Types.UploadLayerPartRequest, callback?: (err: AWSError, data: ECR.Types.UploadLayerPartResponse) => void): Request; - /** - * Uploads an image layer part to Amazon ECR. This operation is used by the Amazon ECR proxy, and it is not intended for general use by customers for pulling and pushing images. In most cases, you should use the docker CLI to pull, tag, and push images. - */ - uploadLayerPart(callback?: (err: AWSError, data: ECR.Types.UploadLayerPartResponse) => void): Request; -} -declare namespace ECR { - export type Arn = string; - export interface AuthorizationData { - /** - * A base64-encoded string that contains authorization data for the specified Amazon ECR registry. When the string is decoded, it is presented in the format user:password for private registry authentication using docker login. - */ - authorizationToken?: Base64; - /** - * The Unix time in seconds and milliseconds when the authorization token expires. Authorization tokens are valid for 12 hours. - */ - expiresAt?: ExpirationTimestamp; - /** - * The registry URL to use for this authorization token in a docker login command. The Amazon ECR registry URL format is https://aws_account_id.dkr.ecr.region.amazonaws.com. For example, https://012345678910.dkr.ecr.us-east-1.amazonaws.com.. - */ - proxyEndpoint?: ProxyEndpoint; - } - export type AuthorizationDataList = AuthorizationData[]; - export type Base64 = string; - export interface BatchCheckLayerAvailabilityRequest { - /** - * The AWS account ID associated with the registry that contains the image layers to check. If you do not specify a registry, the default registry is assumed. - */ - registryId?: RegistryId; - /** - * The name of the repository that is associated with the image layers to check. - */ - repositoryName: RepositoryName; - /** - * The digests of the image layers to check. - */ - layerDigests: BatchedOperationLayerDigestList; - } - export interface BatchCheckLayerAvailabilityResponse { - /** - * A list of image layer objects corresponding to the image layer references in the request. - */ - layers?: LayerList; - /** - * Any failures associated with the call. - */ - failures?: LayerFailureList; - } - export interface BatchDeleteImageRequest { - /** - * The AWS account ID associated with the registry that contains the image to delete. If you do not specify a registry, the default registry is assumed. - */ - registryId?: RegistryId; - /** - * The repository that contains the image to delete. - */ - repositoryName: RepositoryName; - /** - * A list of image ID references that correspond to images to delete. The format of the imageIds reference is imageTag=tag or imageDigest=digest. - */ - imageIds: ImageIdentifierList; - } - export interface BatchDeleteImageResponse { - /** - * The image IDs of the deleted images. - */ - imageIds?: ImageIdentifierList; - /** - * Any failures associated with the call. - */ - failures?: ImageFailureList; - } - export interface BatchGetImageRequest { - /** - * The AWS account ID associated with the registry that contains the images to describe. If you do not specify a registry, the default registry is assumed. - */ - registryId?: RegistryId; - /** - * The repository that contains the images to describe. - */ - repositoryName: RepositoryName; - /** - * A list of image ID references that correspond to images to describe. The format of the imageIds reference is imageTag=tag or imageDigest=digest. - */ - imageIds: ImageIdentifierList; - /** - * The accepted media types for the request. Valid values: application/vnd.docker.distribution.manifest.v1+json | application/vnd.docker.distribution.manifest.v2+json | application/vnd.oci.image.manifest.v1+json - */ - acceptedMediaTypes?: MediaTypeList; - } - export interface BatchGetImageResponse { - /** - * A list of image objects corresponding to the image references in the request. - */ - images?: ImageList; - /** - * Any failures associated with the call. - */ - failures?: ImageFailureList; - } - export type BatchedOperationLayerDigest = string; - export type BatchedOperationLayerDigestList = BatchedOperationLayerDigest[]; - export interface CompleteLayerUploadRequest { - /** - * The AWS account ID associated with the registry to which to upload layers. If you do not specify a registry, the default registry is assumed. - */ - registryId?: RegistryId; - /** - * The name of the repository to associate with the image layer. - */ - repositoryName: RepositoryName; - /** - * The upload ID from a previous InitiateLayerUpload operation to associate with the image layer. - */ - uploadId: UploadId; - /** - * The sha256 digest of the image layer. - */ - layerDigests: LayerDigestList; - } - export interface CompleteLayerUploadResponse { - /** - * The registry ID associated with the request. - */ - registryId?: RegistryId; - /** - * The repository name associated with the request. - */ - repositoryName?: RepositoryName; - /** - * The upload ID associated with the layer. - */ - uploadId?: UploadId; - /** - * The sha256 digest of the image layer. - */ - layerDigest?: LayerDigest; - } - export interface CreateRepositoryRequest { - /** - * The name to use for the repository. The repository name may be specified on its own (such as nginx-web-app) or it can be prepended with a namespace to group the repository into a category (such as project-a/nginx-web-app). - */ - repositoryName: RepositoryName; - } - export interface CreateRepositoryResponse { - /** - * The repository that was created. - */ - repository?: Repository; - } - export type CreationTimestamp = Date; - export interface DeleteLifecyclePolicyRequest { - /** - * The AWS account ID associated with the registry that contains the repository. If you do not specify a registry, the default registry is assumed. - */ - registryId?: RegistryId; - /** - * The name of the repository that is associated with the repository policy to
 delete. - */ - repositoryName: RepositoryName; - } - export interface DeleteLifecyclePolicyResponse { - /** - * The registry ID associated with the request. - */ - registryId?: RegistryId; - /** - * The repository name associated with the request. - */ - repositoryName?: RepositoryName; - /** - * The JSON repository policy text. - */ - lifecyclePolicyText?: LifecyclePolicyText; - /** - * The time stamp of the last time that the lifecycle policy was run. - */ - lastEvaluatedAt?: EvaluationTimestamp; - } - export interface DeleteRepositoryPolicyRequest { - /** - * The AWS account ID associated with the registry that contains the repository policy to delete. If you do not specify a registry, the default registry is assumed. - */ - registryId?: RegistryId; - /** - * The name of the repository that is associated with the repository policy to delete. - */ - repositoryName: RepositoryName; - } - export interface DeleteRepositoryPolicyResponse { - /** - * The registry ID associated with the request. - */ - registryId?: RegistryId; - /** - * The repository name associated with the request. - */ - repositoryName?: RepositoryName; - /** - * The JSON repository policy that was deleted from the repository. - */ - policyText?: RepositoryPolicyText; - } - export interface DeleteRepositoryRequest { - /** - * The AWS account ID associated with the registry that contains the repository to delete. If you do not specify a registry, the default registry is assumed. - */ - registryId?: RegistryId; - /** - * The name of the repository to delete. - */ - repositoryName: RepositoryName; - /** - * If a repository contains images, forces the deletion. - */ - force?: ForceFlag; - } - export interface DeleteRepositoryResponse { - /** - * The repository that was deleted. - */ - repository?: Repository; - } - export interface DescribeImagesFilter { - /** - * The tag status with which to filter your DescribeImages results. You can filter results based on whether they are TAGGED or UNTAGGED. - */ - tagStatus?: TagStatus; - } - export interface DescribeImagesRequest { - /** - * The AWS account ID associated with the registry that contains the repository in which to describe images. If you do not specify a registry, the default registry is assumed. - */ - registryId?: RegistryId; - /** - * A list of repositories to describe. If this parameter is omitted, then all repositories in a registry are described. - */ - repositoryName: RepositoryName; - /** - * The list of image IDs for the requested repository. - */ - imageIds?: ImageIdentifierList; - /** - * The nextToken value returned from a previous paginated DescribeImages request where maxResults was used and the results exceeded the value of that parameter. Pagination continues from the end of the previous results that returned the nextToken value. This value is null when there are no more results to return. - */ - nextToken?: NextToken; - /** - * The maximum number of repository results returned by DescribeImages in paginated output. When this parameter is used, DescribeImages only returns maxResults results in a single page along with a nextToken response element. The remaining results of the initial request can be seen by sending another DescribeImages request with the returned nextToken value. This value can be between 1 and 100. If this parameter is not used, then DescribeImages returns up to 100 results and a nextToken value, if applicable. - */ - maxResults?: MaxResults; - /** - * The filter key and value with which to filter your DescribeImages results. - */ - filter?: DescribeImagesFilter; - } - export interface DescribeImagesResponse { - /** - * A list of ImageDetail objects that contain data about the image. - */ - imageDetails?: ImageDetailList; - /** - * The nextToken value to include in a future DescribeImages request. When the results of a DescribeImages request exceed maxResults, this value can be used to retrieve the next page of results. This value is null when there are no more results to return. - */ - nextToken?: NextToken; - } - export interface DescribeRepositoriesRequest { - /** - * The AWS account ID associated with the registry that contains the repositories to be described. If you do not specify a registry, the default registry is assumed. - */ - registryId?: RegistryId; - /** - * A list of repositories to describe. If this parameter is omitted, then all repositories in a registry are described. - */ - repositoryNames?: RepositoryNameList; - /** - * The nextToken value returned from a previous paginated DescribeRepositories request where maxResults was used and the results exceeded the value of that parameter. Pagination continues from the end of the previous results that returned the nextToken value. This value is null when there are no more results to return. This token should be treated as an opaque identifier that is only used to retrieve the next items in a list and not for other programmatic purposes. - */ - nextToken?: NextToken; - /** - * The maximum number of repository results returned by DescribeRepositories in paginated output. When this parameter is used, DescribeRepositories only returns maxResults results in a single page along with a nextToken response element. The remaining results of the initial request can be seen by sending another DescribeRepositories request with the returned nextToken value. This value can be between 1 and 100. If this parameter is not used, then DescribeRepositories returns up to 100 results and a nextToken value, if applicable. - */ - maxResults?: MaxResults; - } - export interface DescribeRepositoriesResponse { - /** - * A list of repository objects corresponding to valid repositories. - */ - repositories?: RepositoryList; - /** - * The nextToken value to include in a future DescribeRepositories request. When the results of a DescribeRepositories request exceed maxResults, this value can be used to retrieve the next page of results. This value is null when there are no more results to return. - */ - nextToken?: NextToken; - } - export type EvaluationTimestamp = Date; - export type ExceptionMessage = string; - export type ExpirationTimestamp = Date; - export type ForceFlag = boolean; - export type GetAuthorizationTokenRegistryIdList = RegistryId[]; - export interface GetAuthorizationTokenRequest { - /** - * A list of AWS account IDs that are associated with the registries for which to get authorization tokens. If you do not specify a registry, the default registry is assumed. - */ - registryIds?: GetAuthorizationTokenRegistryIdList; - } - export interface GetAuthorizationTokenResponse { - /** - * A list of authorization token data objects that correspond to the registryIds values in the request. - */ - authorizationData?: AuthorizationDataList; - } - export interface GetDownloadUrlForLayerRequest { - /** - * The AWS account ID associated with the registry that contains the image layer to download. If you do not specify a registry, the default registry is assumed. - */ - registryId?: RegistryId; - /** - * The name of the repository that is associated with the image layer to download. - */ - repositoryName: RepositoryName; - /** - * The digest of the image layer to download. - */ - layerDigest: LayerDigest; - } - export interface GetDownloadUrlForLayerResponse { - /** - * The pre-signed Amazon S3 download URL for the requested layer. - */ - downloadUrl?: Url; - /** - * The digest of the image layer to download. - */ - layerDigest?: LayerDigest; - } - export interface GetLifecyclePolicyPreviewRequest { - /** - * The AWS account ID associated with the registry that contains the repository. If you do not specify a registry, the default registry is assumed. - */ - registryId?: RegistryId; - /** - * The name of the repository with the policy to retrieve. - */ - repositoryName: RepositoryName; - /** - * The list of imageIDs to be included. - */ - imageIds?: ImageIdentifierList; - /** - * The nextToken value returned from a previous paginated
 GetLifecyclePolicyPreviewRequest request where maxResults was used and the
 results exceeded the value of that parameter. Pagination continues from the end of the
 previous results that returned the nextToken value. This value is
 null when there are no more results to return. - */ - nextToken?: NextToken; - /** - * The maximum number of repository results returned by GetLifecyclePolicyPreviewRequest in
 paginated output. When this parameter is used, GetLifecyclePolicyPreviewRequest only returns
 maxResults results in a single page along with a nextToken
 response element. The remaining results of the initial request can be seen by sending
 another GetLifecyclePolicyPreviewRequest request with the returned nextToken
 value. This value can be between 1 and 100. If this
 parameter is not used, then GetLifecyclePolicyPreviewRequest returns up to
 100 results and a nextToken value, if
 applicable. - */ - maxResults?: MaxResults; - /** - * An optional parameter that filters results based on image tag status and all tags, if tagged. - */ - filter?: LifecyclePolicyPreviewFilter; - } - export interface GetLifecyclePolicyPreviewResponse { - /** - * The registry ID associated with the request. - */ - registryId?: RegistryId; - /** - * The repository name associated with the request. - */ - repositoryName?: RepositoryName; - /** - * The JSON repository policy text. - */ - lifecyclePolicyText?: LifecyclePolicyText; - /** - * The status of the lifecycle policy preview request. - */ - status?: LifecyclePolicyPreviewStatus; - /** - * The nextToken value to include in a future GetLifecyclePolicyPreview request. When the results of a GetLifecyclePolicyPreview request exceed maxResults, this value can be used to retrieve the next page of results. This value is null when there are no more results to return. - */ - nextToken?: NextToken; - /** - * The results of the lifecycle policy preview request. - */ - previewResults?: LifecyclePolicyPreviewResultList; - /** - * The list of images that is returned as a result of the action. - */ - summary?: LifecyclePolicyPreviewSummary; - } - export interface GetLifecyclePolicyRequest { - /** - * The AWS account ID associated with the registry that contains the repository. If you do not specify a registry, the default registry is assumed. - */ - registryId?: RegistryId; - /** - * The name of the repository with the policy to retrieve. - */ - repositoryName: RepositoryName; - } - export interface GetLifecyclePolicyResponse { - /** - * The registry ID associated with the request. - */ - registryId?: RegistryId; - /** - * The repository name associated with the request. - */ - repositoryName?: RepositoryName; - /** - * The JSON repository policy text. - */ - lifecyclePolicyText?: LifecyclePolicyText; - /** - * The time stamp of the last time that the lifecycle policy was run. - */ - lastEvaluatedAt?: EvaluationTimestamp; - } - export interface GetRepositoryPolicyRequest { - /** - * The AWS account ID associated with the registry that contains the repository. If you do not specify a registry, the default registry is assumed. - */ - registryId?: RegistryId; - /** - * The name of the repository with the policy to retrieve. - */ - repositoryName: RepositoryName; - } - export interface GetRepositoryPolicyResponse { - /** - * The registry ID associated with the request. - */ - registryId?: RegistryId; - /** - * The repository name associated with the request. - */ - repositoryName?: RepositoryName; - /** - * The JSON repository policy text associated with the repository. - */ - policyText?: RepositoryPolicyText; - } - export interface Image { - /** - * The AWS account ID associated with the registry containing the image. - */ - registryId?: RegistryId; - /** - * The name of the repository associated with the image. - */ - repositoryName?: RepositoryName; - /** - * An object containing the image tag and image digest associated with an image. - */ - imageId?: ImageIdentifier; - /** - * The image manifest associated with the image. - */ - imageManifest?: ImageManifest; - } - export type ImageActionType = "EXPIRE"|string; - export type ImageCount = number; - export interface ImageDetail { - /** - * The AWS account ID associated with the registry to which this image belongs. - */ - registryId?: RegistryId; - /** - * The name of the repository to which this image belongs. - */ - repositoryName?: RepositoryName; - /** - * The sha256 digest of the image manifest. - */ - imageDigest?: ImageDigest; - /** - * The list of tags associated with this image. - */ - imageTags?: ImageTagList; - /** - * The size, in bytes, of the image in the repository. Beginning with Docker version 1.9, the Docker client compresses image layers before pushing them to a V2 Docker registry. The output of the docker images command shows the uncompressed image size, so it may return a larger image size than the image sizes returned by DescribeImages. - */ - imageSizeInBytes?: ImageSizeInBytes; - /** - * The date and time, expressed in standard JavaScript date format, at which the current image was pushed to the repository. - */ - imagePushedAt?: PushTimestamp; - } - export type ImageDetailList = ImageDetail[]; - export type ImageDigest = string; - export interface ImageFailure { - /** - * The image ID associated with the failure. - */ - imageId?: ImageIdentifier; - /** - * The code associated with the failure. - */ - failureCode?: ImageFailureCode; - /** - * The reason for the failure. - */ - failureReason?: ImageFailureReason; - } - export type ImageFailureCode = "InvalidImageDigest"|"InvalidImageTag"|"ImageTagDoesNotMatchDigest"|"ImageNotFound"|"MissingDigestAndTag"|string; - export type ImageFailureList = ImageFailure[]; - export type ImageFailureReason = string; - export interface ImageIdentifier { - /** - * The sha256 digest of the image manifest. - */ - imageDigest?: ImageDigest; - /** - * The tag used for the image. - */ - imageTag?: ImageTag; - } - export type ImageIdentifierList = ImageIdentifier[]; - export type ImageList = Image[]; - export type ImageManifest = string; - export type ImageSizeInBytes = number; - export type ImageTag = string; - export type ImageTagList = ImageTag[]; - export interface InitiateLayerUploadRequest { - /** - * The AWS account ID associated with the registry to which you intend to upload layers. If you do not specify a registry, the default registry is assumed. - */ - registryId?: RegistryId; - /** - * The name of the repository to which you intend to upload layers. - */ - repositoryName: RepositoryName; - } - export interface InitiateLayerUploadResponse { - /** - * The upload ID for the layer upload. This parameter is passed to further UploadLayerPart and CompleteLayerUpload operations. - */ - uploadId?: UploadId; - /** - * The size, in bytes, that Amazon ECR expects future layer part uploads to be. - */ - partSize?: PartSize; - } - export interface Layer { - /** - * The sha256 digest of the image layer. - */ - layerDigest?: LayerDigest; - /** - * The availability status of the image layer. - */ - layerAvailability?: LayerAvailability; - /** - * The size, in bytes, of the image layer. - */ - layerSize?: LayerSizeInBytes; - /** - * The media type of the layer, such as application/vnd.docker.image.rootfs.diff.tar.gzip or application/vnd.oci.image.layer.v1.tar+gzip. - */ - mediaType?: MediaType; - } - export type LayerAvailability = "AVAILABLE"|"UNAVAILABLE"|string; - export type LayerDigest = string; - export type LayerDigestList = LayerDigest[]; - export interface LayerFailure { - /** - * The layer digest associated with the failure. - */ - layerDigest?: BatchedOperationLayerDigest; - /** - * The failure code associated with the failure. - */ - failureCode?: LayerFailureCode; - /** - * The reason for the failure. - */ - failureReason?: LayerFailureReason; - } - export type LayerFailureCode = "InvalidLayerDigest"|"MissingLayerDigest"|string; - export type LayerFailureList = LayerFailure[]; - export type LayerFailureReason = string; - export type LayerList = Layer[]; - export type LayerPartBlob = Buffer|Uint8Array|Blob|string; - export type LayerSizeInBytes = number; - export interface LifecyclePolicyPreviewFilter { - /** - * The tag status of the image. - */ - tagStatus?: TagStatus; - } - export interface LifecyclePolicyPreviewResult { - /** - * The list of tags associated with this image. - */ - imageTags?: ImageTagList; - /** - * The sha256 digest of the image manifest. - */ - imageDigest?: ImageDigest; - /** - * The date and time, expressed in standard JavaScript date format, at which the current image was pushed to the repository. - */ - imagePushedAt?: PushTimestamp; - /** - * The type of action to be taken. - */ - action?: LifecyclePolicyRuleAction; - /** - * The priority of the applied rule. - */ - appliedRulePriority?: LifecyclePolicyRulePriority; - } - export type LifecyclePolicyPreviewResultList = LifecyclePolicyPreviewResult[]; - export type LifecyclePolicyPreviewStatus = "IN_PROGRESS"|"COMPLETE"|"EXPIRED"|"FAILED"|string; - export interface LifecyclePolicyPreviewSummary { - /** - * The number of expiring images. - */ - expiringImageTotalCount?: ImageCount; - } - export interface LifecyclePolicyRuleAction { - /** - * The type of action to be taken. - */ - type?: ImageActionType; - } - export type LifecyclePolicyRulePriority = number; - export type LifecyclePolicyText = string; - export interface ListImagesFilter { - /** - * The tag status with which to filter your ListImages results. You can filter results based on whether they are TAGGED or UNTAGGED. - */ - tagStatus?: TagStatus; - } - export interface ListImagesRequest { - /** - * The AWS account ID associated with the registry that contains the repository in which to list images. If you do not specify a registry, the default registry is assumed. - */ - registryId?: RegistryId; - /** - * The repository with image IDs to be listed. - */ - repositoryName: RepositoryName; - /** - * The nextToken value returned from a previous paginated ListImages request where maxResults was used and the results exceeded the value of that parameter. Pagination continues from the end of the previous results that returned the nextToken value. This value is null when there are no more results to return. This token should be treated as an opaque identifier that is only used to retrieve the next items in a list and not for other programmatic purposes. - */ - nextToken?: NextToken; - /** - * The maximum number of image results returned by ListImages in paginated output. When this parameter is used, ListImages only returns maxResults results in a single page along with a nextToken response element. The remaining results of the initial request can be seen by sending another ListImages request with the returned nextToken value. This value can be between 1 and 100. If this parameter is not used, then ListImages returns up to 100 results and a nextToken value, if applicable. - */ - maxResults?: MaxResults; - /** - * The filter key and value with which to filter your ListImages results. - */ - filter?: ListImagesFilter; - } - export interface ListImagesResponse { - /** - * The list of image IDs for the requested repository. - */ - imageIds?: ImageIdentifierList; - /** - * The nextToken value to include in a future ListImages request. When the results of a ListImages request exceed maxResults, this value can be used to retrieve the next page of results. This value is null when there are no more results to return. - */ - nextToken?: NextToken; - } - export type MaxResults = number; - export type MediaType = string; - export type MediaTypeList = MediaType[]; - export type NextToken = string; - export type PartSize = number; - export type ProxyEndpoint = string; - export type PushTimestamp = Date; - export interface PutImageRequest { - /** - * The AWS account ID associated with the registry that contains the repository in which to put the image. If you do not specify a registry, the default registry is assumed. - */ - registryId?: RegistryId; - /** - * The name of the repository in which to put the image. - */ - repositoryName: RepositoryName; - /** - * The image manifest corresponding to the image to be uploaded. - */ - imageManifest: ImageManifest; - /** - * The tag to associate with the image. This parameter is required for images that use the Docker Image Manifest V2 Schema 2 or OCI formats. - */ - imageTag?: ImageTag; - } - export interface PutImageResponse { - /** - * Details of the image uploaded. - */ - image?: Image; - } - export interface PutLifecyclePolicyRequest { - /** - * The AWS account ID associated with the registry that contains the repository. If you do
 not specify a registry, the default registry is assumed. - */ - registryId?: RegistryId; - /** - * The name of the repository to receive the policy. - */ - repositoryName: RepositoryName; - /** - * The JSON repository policy text to apply to the repository. - */ - lifecyclePolicyText: LifecyclePolicyText; - } - export interface PutLifecyclePolicyResponse { - /** - * The registry ID associated with the request. - */ - registryId?: RegistryId; - /** - * The repository name associated with the request. - */ - repositoryName?: RepositoryName; - /** - * The JSON repository policy text. - */ - lifecyclePolicyText?: LifecyclePolicyText; - } - export type RegistryId = string; - export interface Repository { - /** - * The Amazon Resource Name (ARN) that identifies the repository. The ARN contains the arn:aws:ecr namespace, followed by the region of the repository, AWS account ID of the repository owner, repository namespace, and repository name. For example, arn:aws:ecr:region:012345678910:repository/test. - */ - repositoryArn?: Arn; - /** - * The AWS account ID associated with the registry that contains the repository. - */ - registryId?: RegistryId; - /** - * The name of the repository. - */ - repositoryName?: RepositoryName; - /** - * The URI for the repository. You can use this URI for Docker push or pull operations. - */ - repositoryUri?: Url; - /** - * The date and time, in JavaScript date format, when the repository was created. - */ - createdAt?: CreationTimestamp; - } - export type RepositoryList = Repository[]; - export type RepositoryName = string; - export type RepositoryNameList = RepositoryName[]; - export type RepositoryPolicyText = string; - export interface SetRepositoryPolicyRequest { - /** - * The AWS account ID associated with the registry that contains the repository. If you do not specify a registry, the default registry is assumed. - */ - registryId?: RegistryId; - /** - * The name of the repository to receive the policy. - */ - repositoryName: RepositoryName; - /** - * The JSON repository policy text to apply to the repository. - */ - policyText: RepositoryPolicyText; - /** - * If the policy you are attempting to set on a repository policy would prevent you from setting another policy in the future, you must force the SetRepositoryPolicy operation. This is intended to prevent accidental repository lock outs. - */ - force?: ForceFlag; - } - export interface SetRepositoryPolicyResponse { - /** - * The registry ID associated with the request. - */ - registryId?: RegistryId; - /** - * The repository name associated with the request. - */ - repositoryName?: RepositoryName; - /** - * The JSON repository policy text applied to the repository. - */ - policyText?: RepositoryPolicyText; - } - export interface StartLifecyclePolicyPreviewRequest { - /** - * The AWS account ID associated with the registry that contains the repository. If you do not specify a registry, the default registry is assumed. - */ - registryId?: RegistryId; - /** - * The name of the repository to be evaluated. - */ - repositoryName: RepositoryName; - /** - * The policy to be evaluated against. If you do not specify a policy, the current policy for the repository is used. - */ - lifecyclePolicyText?: LifecyclePolicyText; - } - export interface StartLifecyclePolicyPreviewResponse { - /** - * The registry ID associated with the request. - */ - registryId?: RegistryId; - /** - * The repository name associated with the request. - */ - repositoryName?: RepositoryName; - /** - * The JSON repository policy text. - */ - lifecyclePolicyText?: LifecyclePolicyText; - /** - * The status of the lifecycle policy preview request. - */ - status?: LifecyclePolicyPreviewStatus; - } - export type TagStatus = "TAGGED"|"UNTAGGED"|string; - export type UploadId = string; - export interface UploadLayerPartRequest { - /** - * The AWS account ID associated with the registry to which you are uploading layer parts. If you do not specify a registry, the default registry is assumed. - */ - registryId?: RegistryId; - /** - * The name of the repository to which you are uploading layer parts. - */ - repositoryName: RepositoryName; - /** - * The upload ID from a previous InitiateLayerUpload operation to associate with the layer part upload. - */ - uploadId: UploadId; - /** - * The integer value of the first byte of the layer part. - */ - partFirstByte: PartSize; - /** - * The integer value of the last byte of the layer part. - */ - partLastByte: PartSize; - /** - * The base64-encoded layer part payload. - */ - layerPartBlob: LayerPartBlob; - } - export interface UploadLayerPartResponse { - /** - * The registry ID associated with the request. - */ - registryId?: RegistryId; - /** - * The repository name associated with the request. - */ - repositoryName?: RepositoryName; - /** - * The upload ID associated with the request. - */ - uploadId?: UploadId; - /** - * The integer value of the last byte received in the request. - */ - lastByteReceived?: PartSize; - } - export type Url = string; - /** - * A string in YYYY-MM-DD format that represents the latest possible API version that can be used in this service. Specify 'latest' to use the latest possible version. - */ - export type apiVersion = "2015-09-21"|"latest"|string; - export interface ClientApiVersions { - /** - * A string in YYYY-MM-DD format that represents the latest possible API version that can be used in this service. Specify 'latest' to use the latest possible version. - */ - apiVersion?: apiVersion; - } - export type ClientConfiguration = ServiceConfigurationOptions & ClientApiVersions; - /** - * Contains interfaces for use with the ECR client. - */ - export import Types = ECR; -} -export = ECR; diff --git a/workshops/monte-carlo-on-ec2-spot-fleet/src/web/node_modules/aws-sdk/clients/ecr.js b/workshops/monte-carlo-on-ec2-spot-fleet/src/web/node_modules/aws-sdk/clients/ecr.js deleted file mode 100644 index 6683d138..00000000 --- a/workshops/monte-carlo-on-ec2-spot-fleet/src/web/node_modules/aws-sdk/clients/ecr.js +++ /dev/null @@ -1,18 +0,0 @@ -require('../lib/node_loader'); -var AWS = require('../lib/core'); -var Service = AWS.Service; -var apiLoader = AWS.apiLoader; - -apiLoader.services['ecr'] = {}; -AWS.ECR = Service.defineService('ecr', ['2015-09-21']); -Object.defineProperty(apiLoader.services['ecr'], '2015-09-21', { - get: function get() { - var model = require('../apis/ecr-2015-09-21.min.json'); - model.paginators = require('../apis/ecr-2015-09-21.paginators.json').pagination; - return model; - }, - enumerable: true, - configurable: true -}); - -module.exports = AWS.ECR; diff --git a/workshops/monte-carlo-on-ec2-spot-fleet/src/web/node_modules/aws-sdk/clients/ecs.d.ts b/workshops/monte-carlo-on-ec2-spot-fleet/src/web/node_modules/aws-sdk/clients/ecs.d.ts deleted file mode 100644 index ed025161..00000000 --- a/workshops/monte-carlo-on-ec2-spot-fleet/src/web/node_modules/aws-sdk/clients/ecs.d.ts +++ /dev/null @@ -1,1870 +0,0 @@ -import {Request} from '../lib/request'; -import {Response} from '../lib/response'; -import {AWSError} from '../lib/error'; -import {Service} from '../lib/service'; -import {ServiceConfigurationOptions} from '../lib/service'; -import {ConfigBase as Config} from '../lib/config'; -interface Blob {} -declare class ECS extends Service { - /** - * Constructs a service object. This object has one method for each API operation. - */ - constructor(options?: ECS.Types.ClientConfiguration) - config: Config & ECS.Types.ClientConfiguration; - /** - * Creates a new Amazon ECS cluster. By default, your account receives a default cluster when you launch your first container instance. However, you can create your own cluster with a unique name with the CreateCluster action. - */ - createCluster(params: ECS.Types.CreateClusterRequest, callback?: (err: AWSError, data: ECS.Types.CreateClusterResponse) => void): Request; - /** - * Creates a new Amazon ECS cluster. By default, your account receives a default cluster when you launch your first container instance. However, you can create your own cluster with a unique name with the CreateCluster action. - */ - createCluster(callback?: (err: AWSError, data: ECS.Types.CreateClusterResponse) => void): Request; - /** - * Runs and maintains a desired number of tasks from a specified task definition. If the number of tasks running in a service drops below desiredCount, Amazon ECS spawns another copy of the task in the specified cluster. To update an existing service, see UpdateService. In addition to maintaining the desired count of tasks in your service, you can optionally run your service behind a load balancer. The load balancer distributes traffic across the tasks that are associated with the service. For more information, see Service Load Balancing in the Amazon EC2 Container Service Developer Guide. You can optionally specify a deployment configuration for your service. During a deployment (which is triggered by changing the task definition or the desired count of a service with an UpdateService operation), the service scheduler uses the minimumHealthyPercent and maximumPercent parameters to determine the deployment strategy. The minimumHealthyPercent represents a lower limit on the number of your service's tasks that must remain in the RUNNING state during a deployment, as a percentage of the desiredCount (rounded up to the nearest integer). This parameter enables you to deploy without using additional cluster capacity. For example, if your service has a desiredCount of four tasks and a minimumHealthyPercent of 50%, the scheduler can stop two existing tasks to free up cluster capacity before starting two new tasks. Tasks for services that do not use a load balancer are considered healthy if they are in the RUNNING state. Tasks for services that do use a load balancer are considered healthy if they are in the RUNNING state and the container instance they are hosted on is reported as healthy by the load balancer. The default value for minimumHealthyPercent is 50% in the console and 100% for the AWS CLI, the AWS SDKs, and the APIs. The maximumPercent parameter represents an upper limit on the number of your service's tasks that are allowed in the RUNNING or PENDING state during a deployment, as a percentage of the desiredCount (rounded down to the nearest integer). This parameter enables you to define the deployment batch size. For example, if your service has a desiredCount of four tasks and a maximumPercent value of 200%, the scheduler can start four new tasks before stopping the four older tasks (provided that the cluster resources required to do this are available). The default value for maximumPercent is 200%. When the service scheduler launches new tasks, it determines task placement in your cluster using the following logic: Determine which of the container instances in your cluster can support your service's task definition (for example, they have the required CPU, memory, ports, and container instance attributes). By default, the service scheduler attempts to balance tasks across Availability Zones in this manner (although you can choose a different placement strategy) with the placementStrategy parameter): Sort the valid container instances by the fewest number of running tasks for this service in the same Availability Zone as the instance. For example, if zone A has one running service task and zones B and C each have zero, valid container instances in either zone B or C are considered optimal for placement. Place the new service task on a valid container instance in an optimal Availability Zone (based on the previous steps), favoring container instances with the fewest number of running tasks for this service. - */ - createService(params: ECS.Types.CreateServiceRequest, callback?: (err: AWSError, data: ECS.Types.CreateServiceResponse) => void): Request; - /** - * Runs and maintains a desired number of tasks from a specified task definition. If the number of tasks running in a service drops below desiredCount, Amazon ECS spawns another copy of the task in the specified cluster. To update an existing service, see UpdateService. In addition to maintaining the desired count of tasks in your service, you can optionally run your service behind a load balancer. The load balancer distributes traffic across the tasks that are associated with the service. For more information, see Service Load Balancing in the Amazon EC2 Container Service Developer Guide. You can optionally specify a deployment configuration for your service. During a deployment (which is triggered by changing the task definition or the desired count of a service with an UpdateService operation), the service scheduler uses the minimumHealthyPercent and maximumPercent parameters to determine the deployment strategy. The minimumHealthyPercent represents a lower limit on the number of your service's tasks that must remain in the RUNNING state during a deployment, as a percentage of the desiredCount (rounded up to the nearest integer). This parameter enables you to deploy without using additional cluster capacity. For example, if your service has a desiredCount of four tasks and a minimumHealthyPercent of 50%, the scheduler can stop two existing tasks to free up cluster capacity before starting two new tasks. Tasks for services that do not use a load balancer are considered healthy if they are in the RUNNING state. Tasks for services that do use a load balancer are considered healthy if they are in the RUNNING state and the container instance they are hosted on is reported as healthy by the load balancer. The default value for minimumHealthyPercent is 50% in the console and 100% for the AWS CLI, the AWS SDKs, and the APIs. The maximumPercent parameter represents an upper limit on the number of your service's tasks that are allowed in the RUNNING or PENDING state during a deployment, as a percentage of the desiredCount (rounded down to the nearest integer). This parameter enables you to define the deployment batch size. For example, if your service has a desiredCount of four tasks and a maximumPercent value of 200%, the scheduler can start four new tasks before stopping the four older tasks (provided that the cluster resources required to do this are available). The default value for maximumPercent is 200%. When the service scheduler launches new tasks, it determines task placement in your cluster using the following logic: Determine which of the container instances in your cluster can support your service's task definition (for example, they have the required CPU, memory, ports, and container instance attributes). By default, the service scheduler attempts to balance tasks across Availability Zones in this manner (although you can choose a different placement strategy) with the placementStrategy parameter): Sort the valid container instances by the fewest number of running tasks for this service in the same Availability Zone as the instance. For example, if zone A has one running service task and zones B and C each have zero, valid container instances in either zone B or C are considered optimal for placement. Place the new service task on a valid container instance in an optimal Availability Zone (based on the previous steps), favoring container instances with the fewest number of running tasks for this service. - */ - createService(callback?: (err: AWSError, data: ECS.Types.CreateServiceResponse) => void): Request; - /** - * Deletes one or more custom attributes from an Amazon ECS resource. - */ - deleteAttributes(params: ECS.Types.DeleteAttributesRequest, callback?: (err: AWSError, data: ECS.Types.DeleteAttributesResponse) => void): Request; - /** - * Deletes one or more custom attributes from an Amazon ECS resource. - */ - deleteAttributes(callback?: (err: AWSError, data: ECS.Types.DeleteAttributesResponse) => void): Request; - /** - * Deletes the specified cluster. You must deregister all container instances from this cluster before you may delete it. You can list the container instances in a cluster with ListContainerInstances and deregister them with DeregisterContainerInstance. - */ - deleteCluster(params: ECS.Types.DeleteClusterRequest, callback?: (err: AWSError, data: ECS.Types.DeleteClusterResponse) => void): Request; - /** - * Deletes the specified cluster. You must deregister all container instances from this cluster before you may delete it. You can list the container instances in a cluster with ListContainerInstances and deregister them with DeregisterContainerInstance. - */ - deleteCluster(callback?: (err: AWSError, data: ECS.Types.DeleteClusterResponse) => void): Request; - /** - * Deletes a specified service within a cluster. You can delete a service if you have no running tasks in it and the desired task count is zero. If the service is actively maintaining tasks, you cannot delete it, and you must update the service to a desired task count of zero. For more information, see UpdateService. When you delete a service, if there are still running tasks that require cleanup, the service status moves from ACTIVE to DRAINING, and the service is no longer visible in the console or in ListServices API operations. After the tasks have stopped, then the service status moves from DRAINING to INACTIVE. Services in the DRAINING or INACTIVE status can still be viewed with DescribeServices API operations; however, in the future, INACTIVE services may be cleaned up and purged from Amazon ECS record keeping, and DescribeServices API operations on those services will return a ServiceNotFoundException error. - */ - deleteService(params: ECS.Types.DeleteServiceRequest, callback?: (err: AWSError, data: ECS.Types.DeleteServiceResponse) => void): Request; - /** - * Deletes a specified service within a cluster. You can delete a service if you have no running tasks in it and the desired task count is zero. If the service is actively maintaining tasks, you cannot delete it, and you must update the service to a desired task count of zero. For more information, see UpdateService. When you delete a service, if there are still running tasks that require cleanup, the service status moves from ACTIVE to DRAINING, and the service is no longer visible in the console or in ListServices API operations. After the tasks have stopped, then the service status moves from DRAINING to INACTIVE. Services in the DRAINING or INACTIVE status can still be viewed with DescribeServices API operations; however, in the future, INACTIVE services may be cleaned up and purged from Amazon ECS record keeping, and DescribeServices API operations on those services will return a ServiceNotFoundException error. - */ - deleteService(callback?: (err: AWSError, data: ECS.Types.DeleteServiceResponse) => void): Request; - /** - * Deregisters an Amazon ECS container instance from the specified cluster. This instance is no longer available to run tasks. If you intend to use the container instance for some other purpose after deregistration, you should stop all of the tasks running on the container instance before deregistration to avoid any orphaned tasks from consuming resources. Deregistering a container instance removes the instance from a cluster, but it does not terminate the EC2 instance; if you are finished using the instance, be sure to terminate it in the Amazon EC2 console to stop billing. If you terminate a running container instance, Amazon ECS automatically deregisters the instance from your cluster (stopped container instances or instances with disconnected agents are not automatically deregistered when terminated). - */ - deregisterContainerInstance(params: ECS.Types.DeregisterContainerInstanceRequest, callback?: (err: AWSError, data: ECS.Types.DeregisterContainerInstanceResponse) => void): Request; - /** - * Deregisters an Amazon ECS container instance from the specified cluster. This instance is no longer available to run tasks. If you intend to use the container instance for some other purpose after deregistration, you should stop all of the tasks running on the container instance before deregistration to avoid any orphaned tasks from consuming resources. Deregistering a container instance removes the instance from a cluster, but it does not terminate the EC2 instance; if you are finished using the instance, be sure to terminate it in the Amazon EC2 console to stop billing. If you terminate a running container instance, Amazon ECS automatically deregisters the instance from your cluster (stopped container instances or instances with disconnected agents are not automatically deregistered when terminated). - */ - deregisterContainerInstance(callback?: (err: AWSError, data: ECS.Types.DeregisterContainerInstanceResponse) => void): Request; - /** - * Deregisters the specified task definition by family and revision. Upon deregistration, the task definition is marked as INACTIVE. Existing tasks and services that reference an INACTIVE task definition continue to run without disruption. Existing services that reference an INACTIVE task definition can still scale up or down by modifying the service's desired count. You cannot use an INACTIVE task definition to run new tasks or create new services, and you cannot update an existing service to reference an INACTIVE task definition (although there may be up to a 10 minute window following deregistration where these restrictions have not yet taken effect). At this time, INACTIVE task definitions remain discoverable in your account indefinitely; however, this behavior is subject to change in the future, so you should not rely on INACTIVE task definitions persisting beyond the life cycle of any associated tasks and services. - */ - deregisterTaskDefinition(params: ECS.Types.DeregisterTaskDefinitionRequest, callback?: (err: AWSError, data: ECS.Types.DeregisterTaskDefinitionResponse) => void): Request; - /** - * Deregisters the specified task definition by family and revision. Upon deregistration, the task definition is marked as INACTIVE. Existing tasks and services that reference an INACTIVE task definition continue to run without disruption. Existing services that reference an INACTIVE task definition can still scale up or down by modifying the service's desired count. You cannot use an INACTIVE task definition to run new tasks or create new services, and you cannot update an existing service to reference an INACTIVE task definition (although there may be up to a 10 minute window following deregistration where these restrictions have not yet taken effect). At this time, INACTIVE task definitions remain discoverable in your account indefinitely; however, this behavior is subject to change in the future, so you should not rely on INACTIVE task definitions persisting beyond the life cycle of any associated tasks and services. - */ - deregisterTaskDefinition(callback?: (err: AWSError, data: ECS.Types.DeregisterTaskDefinitionResponse) => void): Request; - /** - * Describes one or more of your clusters. - */ - describeClusters(params: ECS.Types.DescribeClustersRequest, callback?: (err: AWSError, data: ECS.Types.DescribeClustersResponse) => void): Request; - /** - * Describes one or more of your clusters. - */ - describeClusters(callback?: (err: AWSError, data: ECS.Types.DescribeClustersResponse) => void): Request; - /** - * Describes Amazon EC2 Container Service container instances. Returns metadata about registered and remaining resources on each container instance requested. - */ - describeContainerInstances(params: ECS.Types.DescribeContainerInstancesRequest, callback?: (err: AWSError, data: ECS.Types.DescribeContainerInstancesResponse) => void): Request; - /** - * Describes Amazon EC2 Container Service container instances. Returns metadata about registered and remaining resources on each container instance requested. - */ - describeContainerInstances(callback?: (err: AWSError, data: ECS.Types.DescribeContainerInstancesResponse) => void): Request; - /** - * Describes the specified services running in your cluster. - */ - describeServices(params: ECS.Types.DescribeServicesRequest, callback?: (err: AWSError, data: ECS.Types.DescribeServicesResponse) => void): Request; - /** - * Describes the specified services running in your cluster. - */ - describeServices(callback?: (err: AWSError, data: ECS.Types.DescribeServicesResponse) => void): Request; - /** - * Describes a task definition. You can specify a family and revision to find information about a specific task definition, or you can simply specify the family to find the latest ACTIVE revision in that family. You can only describe INACTIVE task definitions while an active task or service references them. - */ - describeTaskDefinition(params: ECS.Types.DescribeTaskDefinitionRequest, callback?: (err: AWSError, data: ECS.Types.DescribeTaskDefinitionResponse) => void): Request; - /** - * Describes a task definition. You can specify a family and revision to find information about a specific task definition, or you can simply specify the family to find the latest ACTIVE revision in that family. You can only describe INACTIVE task definitions while an active task or service references them. - */ - describeTaskDefinition(callback?: (err: AWSError, data: ECS.Types.DescribeTaskDefinitionResponse) => void): Request; - /** - * Describes a specified task or tasks. - */ - describeTasks(params: ECS.Types.DescribeTasksRequest, callback?: (err: AWSError, data: ECS.Types.DescribeTasksResponse) => void): Request; - /** - * Describes a specified task or tasks. - */ - describeTasks(callback?: (err: AWSError, data: ECS.Types.DescribeTasksResponse) => void): Request; - /** - * This action is only used by the Amazon EC2 Container Service agent, and it is not intended for use outside of the agent. Returns an endpoint for the Amazon EC2 Container Service agent to poll for updates. - */ - discoverPollEndpoint(params: ECS.Types.DiscoverPollEndpointRequest, callback?: (err: AWSError, data: ECS.Types.DiscoverPollEndpointResponse) => void): Request; - /** - * This action is only used by the Amazon EC2 Container Service agent, and it is not intended for use outside of the agent. Returns an endpoint for the Amazon EC2 Container Service agent to poll for updates. - */ - discoverPollEndpoint(callback?: (err: AWSError, data: ECS.Types.DiscoverPollEndpointResponse) => void): Request; - /** - * Lists the attributes for Amazon ECS resources within a specified target type and cluster. When you specify a target type and cluster, ListAttributes returns a list of attribute objects, one for each attribute on each resource. You can filter the list of results to a single attribute name to only return results that have that name. You can also filter the results by attribute name and value, for example, to see which container instances in a cluster are running a Linux AMI (ecs.os-type=linux). - */ - listAttributes(params: ECS.Types.ListAttributesRequest, callback?: (err: AWSError, data: ECS.Types.ListAttributesResponse) => void): Request; - /** - * Lists the attributes for Amazon ECS resources within a specified target type and cluster. When you specify a target type and cluster, ListAttributes returns a list of attribute objects, one for each attribute on each resource. You can filter the list of results to a single attribute name to only return results that have that name. You can also filter the results by attribute name and value, for example, to see which container instances in a cluster are running a Linux AMI (ecs.os-type=linux). - */ - listAttributes(callback?: (err: AWSError, data: ECS.Types.ListAttributesResponse) => void): Request; - /** - * Returns a list of existing clusters. - */ - listClusters(params: ECS.Types.ListClustersRequest, callback?: (err: AWSError, data: ECS.Types.ListClustersResponse) => void): Request; - /** - * Returns a list of existing clusters. - */ - listClusters(callback?: (err: AWSError, data: ECS.Types.ListClustersResponse) => void): Request; - /** - * Returns a list of container instances in a specified cluster. You can filter the results of a ListContainerInstances operation with cluster query language statements inside the filter parameter. For more information, see Cluster Query Language in the Amazon EC2 Container Service Developer Guide. - */ - listContainerInstances(params: ECS.Types.ListContainerInstancesRequest, callback?: (err: AWSError, data: ECS.Types.ListContainerInstancesResponse) => void): Request; - /** - * Returns a list of container instances in a specified cluster. You can filter the results of a ListContainerInstances operation with cluster query language statements inside the filter parameter. For more information, see Cluster Query Language in the Amazon EC2 Container Service Developer Guide. - */ - listContainerInstances(callback?: (err: AWSError, data: ECS.Types.ListContainerInstancesResponse) => void): Request; - /** - * Lists the services that are running in a specified cluster. - */ - listServices(params: ECS.Types.ListServicesRequest, callback?: (err: AWSError, data: ECS.Types.ListServicesResponse) => void): Request; - /** - * Lists the services that are running in a specified cluster. - */ - listServices(callback?: (err: AWSError, data: ECS.Types.ListServicesResponse) => void): Request; - /** - * Returns a list of task definition families that are registered to your account (which may include task definition families that no longer have any ACTIVE task definition revisions). You can filter out task definition families that do not contain any ACTIVE task definition revisions by setting the status parameter to ACTIVE. You can also filter the results with the familyPrefix parameter. - */ - listTaskDefinitionFamilies(params: ECS.Types.ListTaskDefinitionFamiliesRequest, callback?: (err: AWSError, data: ECS.Types.ListTaskDefinitionFamiliesResponse) => void): Request; - /** - * Returns a list of task definition families that are registered to your account (which may include task definition families that no longer have any ACTIVE task definition revisions). You can filter out task definition families that do not contain any ACTIVE task definition revisions by setting the status parameter to ACTIVE. You can also filter the results with the familyPrefix parameter. - */ - listTaskDefinitionFamilies(callback?: (err: AWSError, data: ECS.Types.ListTaskDefinitionFamiliesResponse) => void): Request; - /** - * Returns a list of task definitions that are registered to your account. You can filter the results by family name with the familyPrefix parameter or by status with the status parameter. - */ - listTaskDefinitions(params: ECS.Types.ListTaskDefinitionsRequest, callback?: (err: AWSError, data: ECS.Types.ListTaskDefinitionsResponse) => void): Request; - /** - * Returns a list of task definitions that are registered to your account. You can filter the results by family name with the familyPrefix parameter or by status with the status parameter. - */ - listTaskDefinitions(callback?: (err: AWSError, data: ECS.Types.ListTaskDefinitionsResponse) => void): Request; - /** - * Returns a list of tasks for a specified cluster. You can filter the results by family name, by a particular container instance, or by the desired status of the task with the family, containerInstance, and desiredStatus parameters. Recently-stopped tasks might appear in the returned results. Currently, stopped tasks appear in the returned results for at least one hour. - */ - listTasks(params: ECS.Types.ListTasksRequest, callback?: (err: AWSError, data: ECS.Types.ListTasksResponse) => void): Request; - /** - * Returns a list of tasks for a specified cluster. You can filter the results by family name, by a particular container instance, or by the desired status of the task with the family, containerInstance, and desiredStatus parameters. Recently-stopped tasks might appear in the returned results. Currently, stopped tasks appear in the returned results for at least one hour. - */ - listTasks(callback?: (err: AWSError, data: ECS.Types.ListTasksResponse) => void): Request; - /** - * Create or update an attribute on an Amazon ECS resource. If the attribute does not exist, it is created. If the attribute exists, its value is replaced with the specified value. To delete an attribute, use DeleteAttributes. For more information, see Attributes in the Amazon EC2 Container Service Developer Guide. - */ - putAttributes(params: ECS.Types.PutAttributesRequest, callback?: (err: AWSError, data: ECS.Types.PutAttributesResponse) => void): Request; - /** - * Create or update an attribute on an Amazon ECS resource. If the attribute does not exist, it is created. If the attribute exists, its value is replaced with the specified value. To delete an attribute, use DeleteAttributes. For more information, see Attributes in the Amazon EC2 Container Service Developer Guide. - */ - putAttributes(callback?: (err: AWSError, data: ECS.Types.PutAttributesResponse) => void): Request; - /** - * This action is only used by the Amazon EC2 Container Service agent, and it is not intended for use outside of the agent. Registers an EC2 instance into the specified cluster. This instance becomes available to place containers on. - */ - registerContainerInstance(params: ECS.Types.RegisterContainerInstanceRequest, callback?: (err: AWSError, data: ECS.Types.RegisterContainerInstanceResponse) => void): Request; - /** - * This action is only used by the Amazon EC2 Container Service agent, and it is not intended for use outside of the agent. Registers an EC2 instance into the specified cluster. This instance becomes available to place containers on. - */ - registerContainerInstance(callback?: (err: AWSError, data: ECS.Types.RegisterContainerInstanceResponse) => void): Request; - /** - * Registers a new task definition from the supplied family and containerDefinitions. Optionally, you can add data volumes to your containers with the volumes parameter. For more information about task definition parameters and defaults, see Amazon ECS Task Definitions in the Amazon EC2 Container Service Developer Guide. You can specify an IAM role for your task with the taskRoleArn parameter. When you specify an IAM role for a task, its containers can then use the latest versions of the AWS CLI or SDKs to make API requests to the AWS services that are specified in the IAM policy associated with the role. For more information, see IAM Roles for Tasks in the Amazon EC2 Container Service Developer Guide. You can specify a Docker networking mode for the containers in your task definition with the networkMode parameter. The available network modes correspond to those described in Network settings in the Docker run reference. - */ - registerTaskDefinition(params: ECS.Types.RegisterTaskDefinitionRequest, callback?: (err: AWSError, data: ECS.Types.RegisterTaskDefinitionResponse) => void): Request; - /** - * Registers a new task definition from the supplied family and containerDefinitions. Optionally, you can add data volumes to your containers with the volumes parameter. For more information about task definition parameters and defaults, see Amazon ECS Task Definitions in the Amazon EC2 Container Service Developer Guide. You can specify an IAM role for your task with the taskRoleArn parameter. When you specify an IAM role for a task, its containers can then use the latest versions of the AWS CLI or SDKs to make API requests to the AWS services that are specified in the IAM policy associated with the role. For more information, see IAM Roles for Tasks in the Amazon EC2 Container Service Developer Guide. You can specify a Docker networking mode for the containers in your task definition with the networkMode parameter. The available network modes correspond to those described in Network settings in the Docker run reference. - */ - registerTaskDefinition(callback?: (err: AWSError, data: ECS.Types.RegisterTaskDefinitionResponse) => void): Request; - /** - * Starts a new task using the specified task definition. You can allow Amazon ECS to place tasks for you, or you can customize how Amazon ECS places tasks using placement constraints and placement strategies. For more information, see Scheduling Tasks in the Amazon EC2 Container Service Developer Guide. Alternatively, you can use StartTask to use your own scheduler or place tasks manually on specific container instances. - */ - runTask(params: ECS.Types.RunTaskRequest, callback?: (err: AWSError, data: ECS.Types.RunTaskResponse) => void): Request; - /** - * Starts a new task using the specified task definition. You can allow Amazon ECS to place tasks for you, or you can customize how Amazon ECS places tasks using placement constraints and placement strategies. For more information, see Scheduling Tasks in the Amazon EC2 Container Service Developer Guide. Alternatively, you can use StartTask to use your own scheduler or place tasks manually on specific container instances. - */ - runTask(callback?: (err: AWSError, data: ECS.Types.RunTaskResponse) => void): Request; - /** - * Starts a new task from the specified task definition on the specified container instance or instances. Alternatively, you can use RunTask to place tasks for you. For more information, see Scheduling Tasks in the Amazon EC2 Container Service Developer Guide. - */ - startTask(params: ECS.Types.StartTaskRequest, callback?: (err: AWSError, data: ECS.Types.StartTaskResponse) => void): Request; - /** - * Starts a new task from the specified task definition on the specified container instance or instances. Alternatively, you can use RunTask to place tasks for you. For more information, see Scheduling Tasks in the Amazon EC2 Container Service Developer Guide. - */ - startTask(callback?: (err: AWSError, data: ECS.Types.StartTaskResponse) => void): Request; - /** - * Stops a running task. When StopTask is called on a task, the equivalent of docker stop is issued to the containers running in the task. This results in a SIGTERM and a default 30-second timeout, after which SIGKILL is sent and the containers are forcibly stopped. If the container handles the SIGTERM gracefully and exits within 30 seconds from receiving it, no SIGKILL is sent. The default 30-second timeout can be configured on the Amazon ECS container agent with the ECS_CONTAINER_STOP_TIMEOUT variable. For more information, see Amazon ECS Container Agent Configuration in the Amazon EC2 Container Service Developer Guide. - */ - stopTask(params: ECS.Types.StopTaskRequest, callback?: (err: AWSError, data: ECS.Types.StopTaskResponse) => void): Request; - /** - * Stops a running task. When StopTask is called on a task, the equivalent of docker stop is issued to the containers running in the task. This results in a SIGTERM and a default 30-second timeout, after which SIGKILL is sent and the containers are forcibly stopped. If the container handles the SIGTERM gracefully and exits within 30 seconds from receiving it, no SIGKILL is sent. The default 30-second timeout can be configured on the Amazon ECS container agent with the ECS_CONTAINER_STOP_TIMEOUT variable. For more information, see Amazon ECS Container Agent Configuration in the Amazon EC2 Container Service Developer Guide. - */ - stopTask(callback?: (err: AWSError, data: ECS.Types.StopTaskResponse) => void): Request; - /** - * This action is only used by the Amazon EC2 Container Service agent, and it is not intended for use outside of the agent. Sent to acknowledge that a container changed states. - */ - submitContainerStateChange(params: ECS.Types.SubmitContainerStateChangeRequest, callback?: (err: AWSError, data: ECS.Types.SubmitContainerStateChangeResponse) => void): Request; - /** - * This action is only used by the Amazon EC2 Container Service agent, and it is not intended for use outside of the agent. Sent to acknowledge that a container changed states. - */ - submitContainerStateChange(callback?: (err: AWSError, data: ECS.Types.SubmitContainerStateChangeResponse) => void): Request; - /** - * This action is only used by the Amazon EC2 Container Service agent, and it is not intended for use outside of the agent. Sent to acknowledge that a task changed states. - */ - submitTaskStateChange(params: ECS.Types.SubmitTaskStateChangeRequest, callback?: (err: AWSError, data: ECS.Types.SubmitTaskStateChangeResponse) => void): Request; - /** - * This action is only used by the Amazon EC2 Container Service agent, and it is not intended for use outside of the agent. Sent to acknowledge that a task changed states. - */ - submitTaskStateChange(callback?: (err: AWSError, data: ECS.Types.SubmitTaskStateChangeResponse) => void): Request; - /** - * Updates the Amazon ECS container agent on a specified container instance. Updating the Amazon ECS container agent does not interrupt running tasks or services on the container instance. The process for updating the agent differs depending on whether your container instance was launched with the Amazon ECS-optimized AMI or another operating system. UpdateContainerAgent requires the Amazon ECS-optimized AMI or Amazon Linux with the ecs-init service installed and running. For help updating the Amazon ECS container agent on other operating systems, see Manually Updating the Amazon ECS Container Agent in the Amazon EC2 Container Service Developer Guide. - */ - updateContainerAgent(params: ECS.Types.UpdateContainerAgentRequest, callback?: (err: AWSError, data: ECS.Types.UpdateContainerAgentResponse) => void): Request; - /** - * Updates the Amazon ECS container agent on a specified container instance. Updating the Amazon ECS container agent does not interrupt running tasks or services on the container instance. The process for updating the agent differs depending on whether your container instance was launched with the Amazon ECS-optimized AMI or another operating system. UpdateContainerAgent requires the Amazon ECS-optimized AMI or Amazon Linux with the ecs-init service installed and running. For help updating the Amazon ECS container agent on other operating systems, see Manually Updating the Amazon ECS Container Agent in the Amazon EC2 Container Service Developer Guide. - */ - updateContainerAgent(callback?: (err: AWSError, data: ECS.Types.UpdateContainerAgentResponse) => void): Request; - /** - * Modifies the status of an Amazon ECS container instance. You can change the status of a container instance to DRAINING to manually remove an instance from a cluster, for example to perform system updates, update the Docker daemon, or scale down the cluster size. When you set a container instance to DRAINING, Amazon ECS prevents new tasks from being scheduled for placement on the container instance and replacement service tasks are started on other container instances in the cluster if the resources are available. Service tasks on the container instance that are in the PENDING state are stopped immediately. Service tasks on the container instance that are in the RUNNING state are stopped and replaced according the service's deployment configuration parameters, minimumHealthyPercent and maximumPercent. Note that you can change the deployment configuration of your service using UpdateService. If minimumHealthyPercent is below 100%, the scheduler can ignore desiredCount temporarily during task replacement. For example, desiredCount is four tasks, a minimum of 50% allows the scheduler to stop two existing tasks before starting two new tasks. If the minimum is 100%, the service scheduler can't remove existing tasks until the replacement tasks are considered healthy. Tasks for services that do not use a load balancer are considered healthy if they are in the RUNNING state. Tasks for services that use a load balancer are considered healthy if they are in the RUNNING state and the container instance they are hosted on is reported as healthy by the load balancer. The maximumPercent parameter represents an upper limit on the number of running tasks during task replacement, which enables you to define the replacement batch size. For example, if desiredCount of four tasks, a maximum of 200% starts four new tasks before stopping the four tasks to be drained (provided that the cluster resources required to do this are available). If the maximum is 100%, then replacement tasks can't start until the draining tasks have stopped. Any PENDING or RUNNING tasks that do not belong to a service are not affected; you must wait for them to finish or stop them manually. A container instance has completed draining when it has no more RUNNING tasks. You can verify this using ListTasks. When you set a container instance to ACTIVE, the Amazon ECS scheduler can begin scheduling tasks on the instance again. - */ - updateContainerInstancesState(params: ECS.Types.UpdateContainerInstancesStateRequest, callback?: (err: AWSError, data: ECS.Types.UpdateContainerInstancesStateResponse) => void): Request; - /** - * Modifies the status of an Amazon ECS container instance. You can change the status of a container instance to DRAINING to manually remove an instance from a cluster, for example to perform system updates, update the Docker daemon, or scale down the cluster size. When you set a container instance to DRAINING, Amazon ECS prevents new tasks from being scheduled for placement on the container instance and replacement service tasks are started on other container instances in the cluster if the resources are available. Service tasks on the container instance that are in the PENDING state are stopped immediately. Service tasks on the container instance that are in the RUNNING state are stopped and replaced according the service's deployment configuration parameters, minimumHealthyPercent and maximumPercent. Note that you can change the deployment configuration of your service using UpdateService. If minimumHealthyPercent is below 100%, the scheduler can ignore desiredCount temporarily during task replacement. For example, desiredCount is four tasks, a minimum of 50% allows the scheduler to stop two existing tasks before starting two new tasks. If the minimum is 100%, the service scheduler can't remove existing tasks until the replacement tasks are considered healthy. Tasks for services that do not use a load balancer are considered healthy if they are in the RUNNING state. Tasks for services that use a load balancer are considered healthy if they are in the RUNNING state and the container instance they are hosted on is reported as healthy by the load balancer. The maximumPercent parameter represents an upper limit on the number of running tasks during task replacement, which enables you to define the replacement batch size. For example, if desiredCount of four tasks, a maximum of 200% starts four new tasks before stopping the four tasks to be drained (provided that the cluster resources required to do this are available). If the maximum is 100%, then replacement tasks can't start until the draining tasks have stopped. Any PENDING or RUNNING tasks that do not belong to a service are not affected; you must wait for them to finish or stop them manually. A container instance has completed draining when it has no more RUNNING tasks. You can verify this using ListTasks. When you set a container instance to ACTIVE, the Amazon ECS scheduler can begin scheduling tasks on the instance again. - */ - updateContainerInstancesState(callback?: (err: AWSError, data: ECS.Types.UpdateContainerInstancesStateResponse) => void): Request; - /** - * Modifies the desired count, deployment configuration, or task definition used in a service. You can add to or subtract from the number of instantiations of a task definition in a service by specifying the cluster that the service is running in and a new desiredCount parameter. You can use UpdateService to modify your task definition and deploy a new version of your service. You can also update the deployment configuration of a service. When a deployment is triggered by updating the task definition of a service, the service scheduler uses the deployment configuration parameters, minimumHealthyPercent and maximumPercent, to determine the deployment strategy. If minimumHealthyPercent is below 100%, the scheduler can ignore desiredCount temporarily during a deployment. For example, if desiredCount is four tasks, a minimum of 50% allows the scheduler to stop two existing tasks before starting two new tasks. Tasks for services that do not use a load balancer are considered healthy if they are in the RUNNING state. Tasks for services that use a load balancer are considered healthy if they are in the RUNNING state and the container instance they are hosted on is reported as healthy by the load balancer. The maximumPercent parameter represents an upper limit on the number of running tasks during a deployment, which enables you to define the deployment batch size. For example, if desiredCount is four tasks, a maximum of 200% starts four new tasks before stopping the four older tasks (provided that the cluster resources required to do this are available). When UpdateService stops a task during a deployment, the equivalent of docker stop is issued to the containers running in the task. This results in a SIGTERM and a 30-second timeout, after which SIGKILL is sent and the containers are forcibly stopped. If the container handles the SIGTERM gracefully and exits within 30 seconds from receiving it, no SIGKILL is sent. When the service scheduler launches new tasks, it determines task placement in your cluster with the following logic: Determine which of the container instances in your cluster can support your service's task definition (for example, they have the required CPU, memory, ports, and container instance attributes). By default, the service scheduler attempts to balance tasks across Availability Zones in this manner (although you can choose a different placement strategy): Sort the valid container instances by the fewest number of running tasks for this service in the same Availability Zone as the instance. For example, if zone A has one running service task and zones B and C each have zero, valid container instances in either zone B or C are considered optimal for placement. Place the new service task on a valid container instance in an optimal Availability Zone (based on the previous steps), favoring container instances with the fewest number of running tasks for this service. When the service scheduler stops running tasks, it attempts to maintain balance across the Availability Zones in your cluster using the following logic: Sort the container instances by the largest number of running tasks for this service in the same Availability Zone as the instance. For example, if zone A has one running service task and zones B and C each have two, container instances in either zone B or C are considered optimal for termination. Stop the task on a container instance in an optimal Availability Zone (based on the previous steps), favoring container instances with the largest number of running tasks for this service. - */ - updateService(params: ECS.Types.UpdateServiceRequest, callback?: (err: AWSError, data: ECS.Types.UpdateServiceResponse) => void): Request; - /** - * Modifies the desired count, deployment configuration, or task definition used in a service. You can add to or subtract from the number of instantiations of a task definition in a service by specifying the cluster that the service is running in and a new desiredCount parameter. You can use UpdateService to modify your task definition and deploy a new version of your service. You can also update the deployment configuration of a service. When a deployment is triggered by updating the task definition of a service, the service scheduler uses the deployment configuration parameters, minimumHealthyPercent and maximumPercent, to determine the deployment strategy. If minimumHealthyPercent is below 100%, the scheduler can ignore desiredCount temporarily during a deployment. For example, if desiredCount is four tasks, a minimum of 50% allows the scheduler to stop two existing tasks before starting two new tasks. Tasks for services that do not use a load balancer are considered healthy if they are in the RUNNING state. Tasks for services that use a load balancer are considered healthy if they are in the RUNNING state and the container instance they are hosted on is reported as healthy by the load balancer. The maximumPercent parameter represents an upper limit on the number of running tasks during a deployment, which enables you to define the deployment batch size. For example, if desiredCount is four tasks, a maximum of 200% starts four new tasks before stopping the four older tasks (provided that the cluster resources required to do this are available). When UpdateService stops a task during a deployment, the equivalent of docker stop is issued to the containers running in the task. This results in a SIGTERM and a 30-second timeout, after which SIGKILL is sent and the containers are forcibly stopped. If the container handles the SIGTERM gracefully and exits within 30 seconds from receiving it, no SIGKILL is sent. When the service scheduler launches new tasks, it determines task placement in your cluster with the following logic: Determine which of the container instances in your cluster can support your service's task definition (for example, they have the required CPU, memory, ports, and container instance attributes). By default, the service scheduler attempts to balance tasks across Availability Zones in this manner (although you can choose a different placement strategy): Sort the valid container instances by the fewest number of running tasks for this service in the same Availability Zone as the instance. For example, if zone A has one running service task and zones B and C each have zero, valid container instances in either zone B or C are considered optimal for placement. Place the new service task on a valid container instance in an optimal Availability Zone (based on the previous steps), favoring container instances with the fewest number of running tasks for this service. When the service scheduler stops running tasks, it attempts to maintain balance across the Availability Zones in your cluster using the following logic: Sort the container instances by the largest number of running tasks for this service in the same Availability Zone as the instance. For example, if zone A has one running service task and zones B and C each have two, container instances in either zone B or C are considered optimal for termination. Stop the task on a container instance in an optimal Availability Zone (based on the previous steps), favoring container instances with the largest number of running tasks for this service. - */ - updateService(callback?: (err: AWSError, data: ECS.Types.UpdateServiceResponse) => void): Request; - /** - * Waits for the tasksRunning state by periodically calling the underlying ECS.describeTasksoperation every 6 seconds (at most 100 times). - */ - waitFor(state: "tasksRunning", params: ECS.Types.DescribeTasksRequest, callback?: (err: AWSError, data: ECS.Types.DescribeTasksResponse) => void): Request; - /** - * Waits for the tasksRunning state by periodically calling the underlying ECS.describeTasksoperation every 6 seconds (at most 100 times). - */ - waitFor(state: "tasksRunning", callback?: (err: AWSError, data: ECS.Types.DescribeTasksResponse) => void): Request; - /** - * Waits for the tasksStopped state by periodically calling the underlying ECS.describeTasksoperation every 6 seconds (at most 100 times). - */ - waitFor(state: "tasksStopped", params: ECS.Types.DescribeTasksRequest, callback?: (err: AWSError, data: ECS.Types.DescribeTasksResponse) => void): Request; - /** - * Waits for the tasksStopped state by periodically calling the underlying ECS.describeTasksoperation every 6 seconds (at most 100 times). - */ - waitFor(state: "tasksStopped", callback?: (err: AWSError, data: ECS.Types.DescribeTasksResponse) => void): Request; - /** - * Waits for the servicesStable state by periodically calling the underlying ECS.describeServicesoperation every 15 seconds (at most 40 times). - */ - waitFor(state: "servicesStable", params: ECS.Types.DescribeServicesRequest, callback?: (err: AWSError, data: ECS.Types.DescribeServicesResponse) => void): Request; - /** - * Waits for the servicesStable state by periodically calling the underlying ECS.describeServicesoperation every 15 seconds (at most 40 times). - */ - waitFor(state: "servicesStable", callback?: (err: AWSError, data: ECS.Types.DescribeServicesResponse) => void): Request; - /** - * Waits for the servicesInactive state by periodically calling the underlying ECS.describeServicesoperation every 15 seconds (at most 40 times). - */ - waitFor(state: "servicesInactive", params: ECS.Types.DescribeServicesRequest, callback?: (err: AWSError, data: ECS.Types.DescribeServicesResponse) => void): Request; - /** - * Waits for the servicesInactive state by periodically calling the underlying ECS.describeServicesoperation every 15 seconds (at most 40 times). - */ - waitFor(state: "servicesInactive", callback?: (err: AWSError, data: ECS.Types.DescribeServicesResponse) => void): Request; -} -declare namespace ECS { - export type AgentUpdateStatus = "PENDING"|"STAGING"|"STAGED"|"UPDATING"|"UPDATED"|"FAILED"|string; - export interface Attribute { - /** - * The name of the attribute. Up to 128 letters (uppercase and lowercase), numbers, hyphens, underscores, and periods are allowed. - */ - name: String; - /** - * The value of the attribute. Up to 128 letters (uppercase and lowercase), numbers, hyphens, underscores, periods, at signs (@), forward slashes, colons, and spaces are allowed. - */ - value?: String; - /** - * The type of the target with which to attach the attribute. This parameter is required if you use the short form ID for a resource instead of the full Amazon Resource Name (ARN). - */ - targetType?: TargetType; - /** - * The ID of the target. You can specify the short form ID for a resource or the full Amazon Resource Name (ARN). - */ - targetId?: String; - } - export type Attributes = Attribute[]; - export type Boolean = boolean; - export type BoxedBoolean = boolean; - export type BoxedInteger = number; - export interface Cluster { - /** - * The Amazon Resource Name (ARN) that identifies the cluster. The ARN contains the arn:aws:ecs namespace, followed by the region of the cluster, the AWS account ID of the cluster owner, the cluster namespace, and then the cluster name. For example, arn:aws:ecs:region:012345678910:cluster/test .. - */ - clusterArn?: String; - /** - * A user-generated string that you use to identify your cluster. - */ - clusterName?: String; - /** - * The status of the cluster. The valid values are ACTIVE or INACTIVE. ACTIVE indicates that you can register container instances with the cluster and the associated instances can accept tasks. - */ - status?: String; - /** - * The number of container instances registered into the cluster. - */ - registeredContainerInstancesCount?: Integer; - /** - * The number of tasks in the cluster that are in the RUNNING state. - */ - runningTasksCount?: Integer; - /** - * The number of tasks in the cluster that are in the PENDING state. - */ - pendingTasksCount?: Integer; - /** - * The number of services that are running on the cluster in an ACTIVE state. You can view these services with ListServices. - */ - activeServicesCount?: Integer; - } - export type Clusters = Cluster[]; - export interface Container { - /** - * The Amazon Resource Name (ARN) of the container. - */ - containerArn?: String; - /** - * The Amazon Resource Name (ARN) of the task. - */ - taskArn?: String; - /** - * The name of the container. - */ - name?: String; - /** - * The last known status of the container. - */ - lastStatus?: String; - /** - * The exit code returned from the container. - */ - exitCode?: BoxedInteger; - /** - * A short (255 max characters) human-readable string to provide additional details about a running or stopped container. - */ - reason?: String; - /** - * The network bindings associated with the container. - */ - networkBindings?: NetworkBindings; - } - export interface ContainerDefinition { - /** - * The name of a container. If you are linking multiple containers together in a task definition, the name of one container can be entered in the links of another container to connect the containers. Up to 255 letters (uppercase and lowercase), numbers, hyphens, and underscores are allowed. This parameter maps to name in the Create a container section of the Docker Remote API and the --name option to docker run. - */ - name?: String; - /** - * The image used to start a container. This string is passed directly to the Docker daemon. Images in the Docker Hub registry are available by default. Other repositories are specified with either repository-url/image:tag or repository-url/image@digest . Up to 255 letters (uppercase and lowercase), numbers, hyphens, underscores, colons, periods, forward slashes, and number signs are allowed. This parameter maps to Image in the Create a container section of the Docker Remote API and the IMAGE parameter of docker run. Images in Amazon ECR repositories can be specified by either using the full registry/repository:tag or registry/repository@digest. For example, 012345678910.dkr.ecr.<region-name>.amazonaws.com/<repository-name>:latest or 012345678910.dkr.ecr.<region-name>.amazonaws.com/<repository-name>@sha256:94afd1f2e64d908bc90dbca0035a5b567EXAMPLE. Images in official repositories on Docker Hub use a single name (for example, ubuntu or mongo). Images in other repositories on Docker Hub are qualified with an organization name (for example, amazon/amazon-ecs-agent). Images in other online repositories are qualified further by a domain name (for example, quay.io/assemblyline/ubuntu). - */ - image?: String; - /** - * The number of cpu units reserved for the container. A container instance has 1,024 cpu units for every CPU core. This parameter specifies the minimum amount of CPU to reserve for a container, and containers share unallocated CPU units with other containers on the instance with the same ratio as their allocated amount. This parameter maps to CpuShares in the Create a container section of the Docker Remote API and the --cpu-shares option to docker run. You can determine the number of CPU units that are available per EC2 instance type by multiplying the vCPUs listed for that instance type on the Amazon EC2 Instances detail page by 1,024. For example, if you run a single-container task on a single-core instance type with 512 CPU units specified for that container, and that is the only task running on the container instance, that container could use the full 1,024 CPU unit share at any given time. However, if you launched another copy of the same task on that container instance, each task would be guaranteed a minimum of 512 CPU units when needed, and each container could float to higher CPU usage if the other container was not using it, but if both tasks were 100% active all of the time, they would be limited to 512 CPU units. The Docker daemon on the container instance uses the CPU value to calculate the relative CPU share ratios for running containers. For more information, see CPU share constraint in the Docker documentation. The minimum valid CPU share value that the Linux kernel allows is 2; however, the CPU parameter is not required, and you can use CPU values below 2 in your container definitions. For CPU values below 2 (including null), the behavior varies based on your Amazon ECS container agent version: Agent versions less than or equal to 1.1.0: Null and zero CPU values are passed to Docker as 0, which Docker then converts to 1,024 CPU shares. CPU values of 1 are passed to Docker as 1, which the Linux kernel converts to 2 CPU shares. Agent versions greater than or equal to 1.2.0: Null, zero, and CPU values of 1 are passed to Docker as 2. - */ - cpu?: Integer; - /** - * The hard limit (in MiB) of memory to present to the container. If your container attempts to exceed the memory specified here, the container is killed. This parameter maps to Memory in the Create a container section of the Docker Remote API and the --memory option to docker run. You must specify a non-zero integer for one or both of memory or memoryReservation in container definitions. If you specify both, memory must be greater than memoryReservation. If you specify memoryReservation, then that value is subtracted from the available memory resources for the container instance on which the container is placed; otherwise, the value of memory is used. The Docker daemon reserves a minimum of 4 MiB of memory for a container, so you should not specify fewer than 4 MiB of memory for your containers. - */ - memory?: BoxedInteger; - /** - * The soft limit (in MiB) of memory to reserve for the container. When system memory is under heavy contention, Docker attempts to keep the container memory to this soft limit; however, your container can consume more memory when it needs to, up to either the hard limit specified with the memory parameter (if applicable), or all of the available memory on the container instance, whichever comes first. This parameter maps to MemoryReservation in the Create a container section of the Docker Remote API and the --memory-reservation option to docker run. You must specify a non-zero integer for one or both of memory or memoryReservation in container definitions. If you specify both, memory must be greater than memoryReservation. If you specify memoryReservation, then that value is subtracted from the available memory resources for the container instance on which the container is placed; otherwise, the value of memory is used. For example, if your container normally uses 128 MiB of memory, but occasionally bursts to 256 MiB of memory for short periods of time, you can set a memoryReservation of 128 MiB, and a memory hard limit of 300 MiB. This configuration would allow the container to only reserve 128 MiB of memory from the remaining resources on the container instance, but also allow the container to consume more memory resources when needed. - */ - memoryReservation?: BoxedInteger; - /** - * The link parameter allows containers to communicate with each other without the need for port mappings, using the name parameter and optionally, an alias for the link. This construct is analogous to name:alias in Docker links. Up to 255 letters (uppercase and lowercase), numbers, hyphens, and underscores are allowed for each name and alias. For more information on linking Docker containers, see https://docs.docker.com/engine/userguide/networking/default_network/dockerlinks/. This parameter maps to Links in the Create a container section of the Docker Remote API and the --link option to docker run. Containers that are collocated on a single container instance may be able to communicate with each other without requiring links or host port mappings. Network isolation is achieved on the container instance using security groups and VPC settings. - */ - links?: StringList; - /** - * The list of port mappings for the container. Port mappings allow containers to access ports on the host container instance to send or receive traffic. This parameter maps to PortBindings in the Create a container section of the Docker Remote API and the --publish option to docker run. If the network mode of a task definition is set to none, then you cannot specify port mappings. If the network mode of a task definition is set to host, then host ports must either be undefined or they must match the container port in the port mapping. After a task reaches the RUNNING status, manual and automatic host and container port assignments are visible in the Network Bindings section of a container description of a selected task in the Amazon ECS console, or the networkBindings section DescribeTasks responses. - */ - portMappings?: PortMappingList; - /** - * If the essential parameter of a container is marked as true, and that container fails or stops for any reason, all other containers that are part of the task are stopped. If the essential parameter of a container is marked as false, then its failure does not affect the rest of the containers in a task. If this parameter is omitted, a container is assumed to be essential. All tasks must have at least one essential container. If you have an application that is composed of multiple containers, you should group containers that are used for a common purpose into components, and separate the different components into multiple task definitions. For more information, see Application Architecture in the Amazon EC2 Container Service Developer Guide. - */ - essential?: BoxedBoolean; - /** - * Early versions of the Amazon ECS container agent do not properly handle entryPoint parameters. If you have problems using entryPoint, update your container agent or enter your commands and arguments as command array items instead. The entry point that is passed to the container. This parameter maps to Entrypoint in the Create a container section of the Docker Remote API and the --entrypoint option to docker run. For more information, see https://docs.docker.com/engine/reference/builder/#entrypoint. - */ - entryPoint?: StringList; - /** - * The command that is passed to the container. This parameter maps to Cmd in the Create a container section of the Docker Remote API and the COMMAND parameter to docker run. For more information, see https://docs.docker.com/engine/reference/builder/#cmd. - */ - command?: StringList; - /** - * The environment variables to pass to a container. This parameter maps to Env in the Create a container section of the Docker Remote API and the --env option to docker run. We do not recommend using plain text environment variables for sensitive information, such as credential data. - */ - environment?: EnvironmentVariables; - /** - * The mount points for data volumes in your container. This parameter maps to Volumes in the Create a container section of the Docker Remote API and the --volume option to docker run. - */ - mountPoints?: MountPointList; - /** - * Data volumes to mount from another container. This parameter maps to VolumesFrom in the Create a container section of the Docker Remote API and the --volumes-from option to docker run. - */ - volumesFrom?: VolumeFromList; - /** - * Linux-specific modifications that are applied to the container, such as Linux KernelCapabilities. - */ - linuxParameters?: LinuxParameters; - /** - * The hostname to use for your container. This parameter maps to Hostname in the Create a container section of the Docker Remote API and the --hostname option to docker run. - */ - hostname?: String; - /** - * The user name to use inside the container. This parameter maps to User in the Create a container section of the Docker Remote API and the --user option to docker run. - */ - user?: String; - /** - * The working directory in which to run commands inside the container. This parameter maps to WorkingDir in the Create a container section of the Docker Remote API and the --workdir option to docker run. - */ - workingDirectory?: String; - /** - * When this parameter is true, networking is disabled within the container. This parameter maps to NetworkDisabled in the Create a container section of the Docker Remote API. - */ - disableNetworking?: BoxedBoolean; - /** - * When this parameter is true, the container is given elevated privileges on the host container instance (similar to the root user). This parameter maps to Privileged in the Create a container section of the Docker Remote API and the --privileged option to docker run. - */ - privileged?: BoxedBoolean; - /** - * When this parameter is true, the container is given read-only access to its root file system. This parameter maps to ReadonlyRootfs in the Create a container section of the Docker Remote API and the --read-only option to docker run. - */ - readonlyRootFilesystem?: BoxedBoolean; - /** - * A list of DNS servers that are presented to the container. This parameter maps to Dns in the Create a container section of the Docker Remote API and the --dns option to docker run. - */ - dnsServers?: StringList; - /** - * A list of DNS search domains that are presented to the container. This parameter maps to DnsSearch in the Create a container section of the Docker Remote API and the --dns-search option to docker run. - */ - dnsSearchDomains?: StringList; - /** - * A list of hostnames and IP address mappings to append to the /etc/hosts file on the container. This parameter maps to ExtraHosts in the Create a container section of the Docker Remote API and the --add-host option to docker run. - */ - extraHosts?: HostEntryList; - /** - * A list of strings to provide custom labels for SELinux and AppArmor multi-level security systems. This parameter maps to SecurityOpt in the Create a container section of the Docker Remote API and the --security-opt option to docker run. The Amazon ECS container agent running on a container instance must register with the ECS_SELINUX_CAPABLE=true or ECS_APPARMOR_CAPABLE=true environment variables before containers placed on that instance can use these security options. For more information, see Amazon ECS Container Agent Configuration in the Amazon EC2 Container Service Developer Guide. - */ - dockerSecurityOptions?: StringList; - /** - * A key/value map of labels to add to the container. This parameter maps to Labels in the Create a container section of the Docker Remote API and the --label option to docker run. This parameter requires version 1.18 of the Docker Remote API or greater on your container instance. To check the Docker Remote API version on your container instance, log into your container instance and run the following command: sudo docker version | grep "Server API version" - */ - dockerLabels?: DockerLabelsMap; - /** - * A list of ulimits to set in the container. This parameter maps to Ulimits in the Create a container section of the Docker Remote API and the --ulimit option to docker run. Valid naming values are displayed in the Ulimit data type. This parameter requires version 1.18 of the Docker Remote API or greater on your container instance. To check the Docker Remote API version on your container instance, log into your container instance and run the following command: sudo docker version | grep "Server API version" - */ - ulimits?: UlimitList; - /** - * The log configuration specification for the container. This parameter maps to LogConfig in the Create a container section of the Docker Remote API and the --log-driver option to docker run. By default, containers use the same logging driver that the Docker daemon uses; however the container may use a different logging driver than the Docker daemon by specifying a log driver with this parameter in the container definition. To use a different logging driver for a container, the log system must be configured properly on the container instance (or on a different log server for remote logging options). For more information on the options for different supported log drivers, see Configure logging drivers in the Docker documentation. Amazon ECS currently supports a subset of the logging drivers available to the Docker daemon (shown in the LogConfiguration data type). Additional log drivers may be available in future releases of the Amazon ECS container agent. This parameter requires version 1.18 of the Docker Remote API or greater on your container instance. To check the Docker Remote API version on your container instance, log into your container instance and run the following command: sudo docker version | grep "Server API version" The Amazon ECS container agent running on a container instance must register the logging drivers available on that instance with the ECS_AVAILABLE_LOGGING_DRIVERS environment variable before containers placed on that instance can use these log configuration options. For more information, see Amazon ECS Container Agent Configuration in the Amazon EC2 Container Service Developer Guide. - */ - logConfiguration?: LogConfiguration; - } - export type ContainerDefinitions = ContainerDefinition[]; - export interface ContainerInstance { - /** - * The Amazon Resource Name (ARN) of the container instance. The ARN contains the arn:aws:ecs namespace, followed by the region of the container instance, the AWS account ID of the container instance owner, the container-instance namespace, and then the container instance ID. For example, arn:aws:ecs:region:aws_account_id:container-instance/container_instance_ID . - */ - containerInstanceArn?: String; - /** - * The EC2 instance ID of the container instance. - */ - ec2InstanceId?: String; - /** - * The version counter for the container instance. Every time a container instance experiences a change that triggers a CloudWatch event, the version counter is incremented. If you are replicating your Amazon ECS container instance state with CloudWatch events, you can compare the version of a container instance reported by the Amazon ECS APIs with the version reported in CloudWatch events for the container instance (inside the detail object) to verify that the version in your event stream is current. - */ - version?: Long; - /** - * The version information for the Amazon ECS container agent and Docker daemon running on the container instance. - */ - versionInfo?: VersionInfo; - /** - * For most resource types, this parameter describes the remaining resources of the container instance that are available for new tasks. For port resource types, this parameter describes the ports that are reserved by the Amazon ECS container agent and any containers that have reserved port mappings; any port that is not specified here is available for new tasks. - */ - remainingResources?: Resources; - /** - * For most resource types, this parameter describes the registered resources on the container instance that are in use by current tasks. For port resource types, this parameter describes the ports that were reserved by the Amazon ECS container agent when it registered the container instance with Amazon ECS. - */ - registeredResources?: Resources; - /** - * The status of the container instance. The valid values are ACTIVE, INACTIVE, or DRAINING. ACTIVE indicates that the container instance can accept tasks. DRAINING indicates that new tasks are not placed on the container instance and any service tasks running on the container instance are removed if possible. For more information, see Container Instance Draining in the Amazon EC2 Container Service Developer Guide. - */ - status?: String; - /** - * This parameter returns true if the agent is actually connected to Amazon ECS. Registered instances with an agent that may be unhealthy or stopped return false, and instances without a connected agent cannot accept placement requests. - */ - agentConnected?: Boolean; - /** - * The number of tasks on the container instance that are in the RUNNING status. - */ - runningTasksCount?: Integer; - /** - * The number of tasks on the container instance that are in the PENDING status. - */ - pendingTasksCount?: Integer; - /** - * The status of the most recent agent update. If an update has never been requested, this value is NULL. - */ - agentUpdateStatus?: AgentUpdateStatus; - /** - * The attributes set for the container instance, either by the Amazon ECS container agent at instance registration or manually with the PutAttributes operation. - */ - attributes?: Attributes; - /** - * The Unix timestamp for when the container instance was registered. - */ - registeredAt?: Timestamp; - } - export type ContainerInstanceStatus = "ACTIVE"|"DRAINING"|string; - export type ContainerInstances = ContainerInstance[]; - export interface ContainerOverride { - /** - * The name of the container that receives the override. This parameter is required if any override is specified. - */ - name?: String; - /** - * The command to send to the container that overrides the default command from the Docker image or the task definition. You must also specify a container name. - */ - command?: StringList; - /** - * The environment variables to send to the container. You can add new environment variables, which are added to the container at launch, or you can override the existing environment variables from the Docker image or the task definition. You must also specify a container name. - */ - environment?: EnvironmentVariables; - /** - * The number of cpu units reserved for the container, instead of the default value from the task definition. You must also specify a container name. - */ - cpu?: BoxedInteger; - /** - * The hard limit (in MiB) of memory to present to the container, instead of the default value from the task definition. If your container attempts to exceed the memory specified here, the container is killed. You must also specify a container name. - */ - memory?: BoxedInteger; - /** - * The soft limit (in MiB) of memory to reserve for the container, instead of the default value from the task definition. You must also specify a container name. - */ - memoryReservation?: BoxedInteger; - } - export type ContainerOverrides = ContainerOverride[]; - export type Containers = Container[]; - export interface CreateClusterRequest { - /** - * The name of your cluster. If you do not specify a name for your cluster, you create a cluster named default. Up to 255 letters (uppercase and lowercase), numbers, hyphens, and underscores are allowed. - */ - clusterName?: String; - } - export interface CreateClusterResponse { - /** - * The full description of your new cluster. - */ - cluster?: Cluster; - } - export interface CreateServiceRequest { - /** - * The short name or full Amazon Resource Name (ARN) of the cluster on which to run your service. If you do not specify a cluster, the default cluster is assumed. - */ - cluster?: String; - /** - * The name of your service. Up to 255 letters (uppercase and lowercase), numbers, hyphens, and underscores are allowed. Service names must be unique within a cluster, but you can have similarly named services in multiple clusters within a region or across multiple regions. - */ - serviceName: String; - /** - * The family and revision (family:revision) or full Amazon Resource Name (ARN) of the task definition to run in your service. If a revision is not specified, the latest ACTIVE revision is used. - */ - taskDefinition: String; - /** - * A load balancer object representing the load balancer to use with your service. Currently, you are limited to one load balancer or target group per service. After you create a service, the load balancer name or target group ARN, container name, and container port specified in the service definition are immutable. For Classic Load Balancers, this object must contain the load balancer name, the container name (as it appears in a container definition), and the container port to access from the load balancer. When a task from this service is placed on a container instance, the container instance is registered with the load balancer specified here. For Application Load Balancers and Network Load Balancers, this object must contain the load balancer target group ARN, the container name (as it appears in a container definition), and the container port to access from the load balancer. When a task from this service is placed on a container instance, the container instance and port combination is registered as a target in the target group specified here. - */ - loadBalancers?: LoadBalancers; - /** - * The number of instantiations of the specified task definition to place and keep running on your cluster. - */ - desiredCount: BoxedInteger; - /** - * Unique, case-sensitive identifier you provide to ensure the idempotency of the request. Up to 32 ASCII characters are allowed. - */ - clientToken?: String; - /** - * The name or full Amazon Resource Name (ARN) of the IAM role that allows Amazon ECS to make calls to your load balancer on your behalf. This parameter is required if you are using a load balancer with your service. If you specify the role parameter, you must also specify a load balancer object with the loadBalancers parameter. If your specified role has a path other than /, then you must either specify the full role ARN (this is recommended) or prefix the role name with the path. For example, if a role with the name bar has a path of /foo/ then you would specify /foo/bar as the role name. For more information, see Friendly Names and Paths in the IAM User Guide. - */ - role?: String; - /** - * Optional deployment parameters that control how many tasks run during the deployment and the ordering of stopping and starting tasks. - */ - deploymentConfiguration?: DeploymentConfiguration; - /** - * An array of placement constraint objects to use for tasks in your service. You can specify a maximum of 10 constraints per task (this limit includes constraints in the task definition and those specified at run time). - */ - placementConstraints?: PlacementConstraints; - /** - * The placement strategy objects to use for tasks in your service. You can specify a maximum of 5 strategy rules per service. - */ - placementStrategy?: PlacementStrategies; - } - export interface CreateServiceResponse { - /** - * The full description of your service following the create call. - */ - service?: Service; - } - export interface DeleteAttributesRequest { - /** - * The short name or full Amazon Resource Name (ARN) of the cluster that contains the resource to delete attributes. If you do not specify a cluster, the default cluster is assumed. - */ - cluster?: String; - /** - * The attributes to delete from your resource. You can specify up to 10 attributes per request. For custom attributes, specify the attribute name and target ID, but do not specify the value. If you specify the target ID using the short form, you must also specify the target type. - */ - attributes: Attributes; - } - export interface DeleteAttributesResponse { - /** - * A list of attribute objects that were successfully deleted from your resource. - */ - attributes?: Attributes; - } - export interface DeleteClusterRequest { - /** - * The short name or full Amazon Resource Name (ARN) of the cluster to delete. - */ - cluster: String; - } - export interface DeleteClusterResponse { - /** - * The full description of the deleted cluster. - */ - cluster?: Cluster; - } - export interface DeleteServiceRequest { - /** - * The short name or full Amazon Resource Name (ARN) of the cluster that hosts the service to delete. If you do not specify a cluster, the default cluster is assumed. - */ - cluster?: String; - /** - * The name of the service to delete. - */ - service: String; - } - export interface DeleteServiceResponse { - /** - * The full description of the deleted service. - */ - service?: Service; - } - export interface Deployment { - /** - * The ID of the deployment. - */ - id?: String; - /** - * The status of the deployment. Valid values are PRIMARY (for the most recent deployment), ACTIVE (for previous deployments that still have tasks running, but are being replaced with the PRIMARY deployment), and INACTIVE (for deployments that have been completely replaced). - */ - status?: String; - /** - * The most recent task definition that was specified for the service to use. - */ - taskDefinition?: String; - /** - * The most recent desired count of tasks that was specified for the service to deploy or maintain. - */ - desiredCount?: Integer; - /** - * The number of tasks in the deployment that are in the PENDING status. - */ - pendingCount?: Integer; - /** - * The number of tasks in the deployment that are in the RUNNING status. - */ - runningCount?: Integer; - /** - * The Unix timestamp for when the service was created. - */ - createdAt?: Timestamp; - /** - * The Unix timestamp for when the service was last updated. - */ - updatedAt?: Timestamp; - } - export interface DeploymentConfiguration { - /** - * The upper limit (as a percentage of the service's desiredCount) of the number of tasks that are allowed in the RUNNING or PENDING state in a service during a deployment. The maximum number of tasks during a deployment is the desiredCount multiplied by maximumPercent/100, rounded down to the nearest integer value. - */ - maximumPercent?: BoxedInteger; - /** - * The lower limit (as a percentage of the service's desiredCount) of the number of running tasks that must remain in the RUNNING state in a service during a deployment. The minimum healthy tasks during a deployment is the desiredCount multiplied by minimumHealthyPercent/100, rounded up to the nearest integer value. - */ - minimumHealthyPercent?: BoxedInteger; - } - export type Deployments = Deployment[]; - export interface DeregisterContainerInstanceRequest { - /** - * The short name or full Amazon Resource Name (ARN) of the cluster that hosts the container instance to deregister. If you do not specify a cluster, the default cluster is assumed. - */ - cluster?: String; - /** - * The container instance ID or full Amazon Resource Name (ARN) of the container instance to deregister. The ARN contains the arn:aws:ecs namespace, followed by the region of the container instance, the AWS account ID of the container instance owner, the container-instance namespace, and then the container instance ID. For example, arn:aws:ecs:region:aws_account_id:container-instance/container_instance_ID . - */ - containerInstance: String; - /** - * Forces the deregistration of the container instance. If you have tasks running on the container instance when you deregister it with the force option, these tasks remain running until you terminate the instance or the tasks stop through some other means, but they are orphaned (no longer monitored or accounted for by Amazon ECS). If an orphaned task on your container instance is part of an Amazon ECS service, then the service scheduler starts another copy of that task, on a different container instance if possible. Any containers in orphaned service tasks that are registered with a Classic Load Balancer or an Application Load Balancer target group are deregistered, and they will begin connection draining according to the settings on the load balancer or target group. - */ - force?: BoxedBoolean; - } - export interface DeregisterContainerInstanceResponse { - /** - * The container instance that was deregistered. - */ - containerInstance?: ContainerInstance; - } - export interface DeregisterTaskDefinitionRequest { - /** - * The family and revision (family:revision) or full Amazon Resource Name (ARN) of the task definition to deregister. You must specify a revision. - */ - taskDefinition: String; - } - export interface DeregisterTaskDefinitionResponse { - /** - * The full description of the deregistered task. - */ - taskDefinition?: TaskDefinition; - } - export interface DescribeClustersRequest { - /** - * A list of up to 100 cluster names or full cluster Amazon Resource Name (ARN) entries. If you do not specify a cluster, the default cluster is assumed. - */ - clusters?: StringList; - } - export interface DescribeClustersResponse { - /** - * The list of clusters. - */ - clusters?: Clusters; - /** - * Any failures associated with the call. - */ - failures?: Failures; - } - export interface DescribeContainerInstancesRequest { - /** - * The short name or full Amazon Resource Name (ARN) of the cluster that hosts the container instances to describe. If you do not specify a cluster, the default cluster is assumed. - */ - cluster?: String; - /** - * A list of container instance IDs or full Amazon Resource Name (ARN) entries. - */ - containerInstances: StringList; - } - export interface DescribeContainerInstancesResponse { - /** - * The list of container instances. - */ - containerInstances?: ContainerInstances; - /** - * Any failures associated with the call. - */ - failures?: Failures; - } - export interface DescribeServicesRequest { - /** - * The short name or full Amazon Resource Name (ARN)the cluster that hosts the service to describe. If you do not specify a cluster, the default cluster is assumed. - */ - cluster?: String; - /** - * A list of services to describe. You may specify up to 10 services to describe in a single operation. - */ - services: StringList; - } - export interface DescribeServicesResponse { - /** - * The list of services described. - */ - services?: Services; - /** - * Any failures associated with the call. - */ - failures?: Failures; - } - export interface DescribeTaskDefinitionRequest { - /** - * The family for the latest ACTIVE revision, family and revision (family:revision) for a specific revision in the family, or full Amazon Resource Name (ARN) of the task definition to describe. - */ - taskDefinition: String; - } - export interface DescribeTaskDefinitionResponse { - /** - * The full task definition description. - */ - taskDefinition?: TaskDefinition; - } - export interface DescribeTasksRequest { - /** - * The short name or full Amazon Resource Name (ARN) of the cluster that hosts the task to describe. If you do not specify a cluster, the default cluster is assumed. - */ - cluster?: String; - /** - * A list of up to 100 task IDs or full Amazon Resource Name (ARN) entries. - */ - tasks: StringList; - } - export interface DescribeTasksResponse { - /** - * The list of tasks. - */ - tasks?: Tasks; - /** - * Any failures associated with the call. - */ - failures?: Failures; - } - export type DesiredStatus = "RUNNING"|"PENDING"|"STOPPED"|string; - export interface DiscoverPollEndpointRequest { - /** - * The container instance ID or full Amazon Resource Name (ARN) of the container instance. The ARN contains the arn:aws:ecs namespace, followed by the region of the container instance, the AWS account ID of the container instance owner, the container-instance namespace, and then the container instance ID. For example, arn:aws:ecs:region:aws_account_id:container-instance/container_instance_ID . - */ - containerInstance?: String; - /** - * The short name or full Amazon Resource Name (ARN) of the cluster that the container instance belongs to. - */ - cluster?: String; - } - export interface DiscoverPollEndpointResponse { - /** - * The endpoint for the Amazon ECS agent to poll. - */ - endpoint?: String; - /** - * The telemetry endpoint for the Amazon ECS agent. - */ - telemetryEndpoint?: String; - } - export type DockerLabelsMap = {[key: string]: String}; - export type Double = number; - export type EnvironmentVariables = KeyValuePair[]; - export interface Failure { - /** - * The Amazon Resource Name (ARN) of the failed resource. - */ - arn?: String; - /** - * The reason for the failure. - */ - reason?: String; - } - export type Failures = Failure[]; - export interface HostEntry { - /** - * The hostname to use in the /etc/hosts entry. - */ - hostname: String; - /** - * The IP address to use in the /etc/hosts entry. - */ - ipAddress: String; - } - export type HostEntryList = HostEntry[]; - export interface HostVolumeProperties { - /** - * The path on the host container instance that is presented to the container. If this parameter is empty, then the Docker daemon has assigned a host path for you. If the host parameter contains a sourcePath file location, then the data volume persists at the specified location on the host container instance until you delete it manually. If the sourcePath value does not exist on the host container instance, the Docker daemon creates it. If the location does exist, the contents of the source path folder are exported. - */ - sourcePath?: String; - } - export type Integer = number; - export interface KernelCapabilities { - /** - * The Linux capabilities for the container that have been added to the default configuration provided by Docker. This parameter maps to CapAdd in the Create a container section of the Docker Remote API and the --cap-add option to docker run. - */ - add?: StringList; - /** - * The Linux capabilities for the container that have been removed from the default configuration provided by Docker. This parameter maps to CapDrop in the Create a container section of the Docker Remote API and the --cap-drop option to docker run. - */ - drop?: StringList; - } - export interface KeyValuePair { - /** - * The name of the key value pair. For environment variables, this is the name of the environment variable. - */ - name?: String; - /** - * The value of the key value pair. For environment variables, this is the value of the environment variable. - */ - value?: String; - } - export interface LinuxParameters { - /** - * The Linux capabilities for the container that are added to or dropped from the default configuration provided by Docker. - */ - capabilities?: KernelCapabilities; - } - export interface ListAttributesRequest { - /** - * The short name or full Amazon Resource Name (ARN) of the cluster to list attributes. If you do not specify a cluster, the default cluster is assumed. - */ - cluster?: String; - /** - * The type of the target with which to list attributes. - */ - targetType: TargetType; - /** - * The name of the attribute with which to filter the results. - */ - attributeName?: String; - /** - * The value of the attribute with which to filter results. You must also specify an attribute name to use this parameter. - */ - attributeValue?: String; - /** - * The nextToken value returned from a previous paginated ListAttributes request where maxResults was used and the results exceeded the value of that parameter. Pagination continues from the end of the previous results that returned the nextToken value. This value is null when there are no more results to return. This token should be treated as an opaque identifier that is only used to retrieve the next items in a list and not for other programmatic purposes. - */ - nextToken?: String; - /** - * The maximum number of cluster results returned by ListAttributes in paginated output. When this parameter is used, ListAttributes only returns maxResults results in a single page along with a nextToken response element. The remaining results of the initial request can be seen by sending another ListAttributes request with the returned nextToken value. This value can be between 1 and 100. If this parameter is not used, then ListAttributes returns up to 100 results and a nextToken value if applicable. - */ - maxResults?: BoxedInteger; - } - export interface ListAttributesResponse { - /** - * A list of attribute objects that meet the criteria of the request. - */ - attributes?: Attributes; - /** - * The nextToken value to include in a future ListAttributes request. When the results of a ListAttributes request exceed maxResults, this value can be used to retrieve the next page of results. This value is null when there are no more results to return. - */ - nextToken?: String; - } - export interface ListClustersRequest { - /** - * The nextToken value returned from a previous paginated ListClusters request where maxResults was used and the results exceeded the value of that parameter. Pagination continues from the end of the previous results that returned the nextToken value. This value is null when there are no more results to return. This token should be treated as an opaque identifier that is only used to retrieve the next items in a list and not for other programmatic purposes. - */ - nextToken?: String; - /** - * The maximum number of cluster results returned by ListClusters in paginated output. When this parameter is used, ListClusters only returns maxResults results in a single page along with a nextToken response element. The remaining results of the initial request can be seen by sending another ListClusters request with the returned nextToken value. This value can be between 1 and 100. If this parameter is not used, then ListClusters returns up to 100 results and a nextToken value if applicable. - */ - maxResults?: BoxedInteger; - } - export interface ListClustersResponse { - /** - * The list of full Amazon Resource Name (ARN) entries for each cluster associated with your account. - */ - clusterArns?: StringList; - /** - * The nextToken value to include in a future ListClusters request. When the results of a ListClusters request exceed maxResults, this value can be used to retrieve the next page of results. This value is null when there are no more results to return. - */ - nextToken?: String; - } - export interface ListContainerInstancesRequest { - /** - * The short name or full Amazon Resource Name (ARN) of the cluster that hosts the container instances to list. If you do not specify a cluster, the default cluster is assumed. - */ - cluster?: String; - /** - * You can filter the results of a ListContainerInstances operation with cluster query language statements. For more information, see Cluster Query Language in the Amazon EC2 Container Service Developer Guide. - */ - filter?: String; - /** - * The nextToken value returned from a previous paginated ListContainerInstances request where maxResults was used and the results exceeded the value of that parameter. Pagination continues from the end of the previous results that returned the nextToken value. This value is null when there are no more results to return. This token should be treated as an opaque identifier that is only used to retrieve the next items in a list and not for other programmatic purposes. - */ - nextToken?: String; - /** - * The maximum number of container instance results returned by ListContainerInstances in paginated output. When this parameter is used, ListContainerInstances only returns maxResults results in a single page along with a nextToken response element. The remaining results of the initial request can be seen by sending another ListContainerInstances request with the returned nextToken value. This value can be between 1 and 100. If this parameter is not used, then ListContainerInstances returns up to 100 results and a nextToken value if applicable. - */ - maxResults?: BoxedInteger; - /** - * Filters the container instances by status. For example, if you specify the DRAINING status, the results include only container instances that have been set to DRAINING using UpdateContainerInstancesState. If you do not specify this parameter, the default is to include container instances set to ACTIVE and DRAINING. - */ - status?: ContainerInstanceStatus; - } - export interface ListContainerInstancesResponse { - /** - * The list of container instances with full Amazon Resource Name (ARN) entries for each container instance associated with the specified cluster. - */ - containerInstanceArns?: StringList; - /** - * The nextToken value to include in a future ListContainerInstances request. When the results of a ListContainerInstances request exceed maxResults, this value can be used to retrieve the next page of results. This value is null when there are no more results to return. - */ - nextToken?: String; - } - export interface ListServicesRequest { - /** - * The short name or full Amazon Resource Name (ARN) of the cluster that hosts the services to list. If you do not specify a cluster, the default cluster is assumed. - */ - cluster?: String; - /** - * The nextToken value returned from a previous paginated ListServices request where maxResults was used and the results exceeded the value of that parameter. Pagination continues from the end of the previous results that returned the nextToken value. This value is null when there are no more results to return. This token should be treated as an opaque identifier that is only used to retrieve the next items in a list and not for other programmatic purposes. - */ - nextToken?: String; - /** - * The maximum number of container instance results returned by ListServices in paginated output. When this parameter is used, ListServices only returns maxResults results in a single page along with a nextToken response element. The remaining results of the initial request can be seen by sending another ListServices request with the returned nextToken value. This value can be between 1 and 10. If this parameter is not used, then ListServices returns up to 10 results and a nextToken value if applicable. - */ - maxResults?: BoxedInteger; - } - export interface ListServicesResponse { - /** - * The list of full Amazon Resource Name (ARN) entries for each service associated with the specified cluster. - */ - serviceArns?: StringList; - /** - * The nextToken value to include in a future ListServices request. When the results of a ListServices request exceed maxResults, this value can be used to retrieve the next page of results. This value is null when there are no more results to return. - */ - nextToken?: String; - } - export interface ListTaskDefinitionFamiliesRequest { - /** - * The familyPrefix is a string that is used to filter the results of ListTaskDefinitionFamilies. If you specify a familyPrefix, only task definition family names that begin with the familyPrefix string are returned. - */ - familyPrefix?: String; - /** - * The task definition family status with which to filter the ListTaskDefinitionFamilies results. By default, both ACTIVE and INACTIVE task definition families are listed. If this parameter is set to ACTIVE, only task definition families that have an ACTIVE task definition revision are returned. If this parameter is set to INACTIVE, only task definition families that do not have any ACTIVE task definition revisions are returned. If you paginate the resulting output, be sure to keep the status value constant in each subsequent request. - */ - status?: TaskDefinitionFamilyStatus; - /** - * The nextToken value returned from a previous paginated ListTaskDefinitionFamilies request where maxResults was used and the results exceeded the value of that parameter. Pagination continues from the end of the previous results that returned the nextToken value. This value is null when there are no more results to return. This token should be treated as an opaque identifier that is only used to retrieve the next items in a list and not for other programmatic purposes. - */ - nextToken?: String; - /** - * The maximum number of task definition family results returned by ListTaskDefinitionFamilies in paginated output. When this parameter is used, ListTaskDefinitions only returns maxResults results in a single page along with a nextToken response element. The remaining results of the initial request can be seen by sending another ListTaskDefinitionFamilies request with the returned nextToken value. This value can be between 1 and 100. If this parameter is not used, then ListTaskDefinitionFamilies returns up to 100 results and a nextToken value if applicable. - */ - maxResults?: BoxedInteger; - } - export interface ListTaskDefinitionFamiliesResponse { - /** - * The list of task definition family names that match the ListTaskDefinitionFamilies request. - */ - families?: StringList; - /** - * The nextToken value to include in a future ListTaskDefinitionFamilies request. When the results of a ListTaskDefinitionFamilies request exceed maxResults, this value can be used to retrieve the next page of results. This value is null when there are no more results to return. - */ - nextToken?: String; - } - export interface ListTaskDefinitionsRequest { - /** - * The full family name with which to filter the ListTaskDefinitions results. Specifying a familyPrefix limits the listed task definitions to task definition revisions that belong to that family. - */ - familyPrefix?: String; - /** - * The task definition status with which to filter the ListTaskDefinitions results. By default, only ACTIVE task definitions are listed. By setting this parameter to INACTIVE, you can view task definitions that are INACTIVE as long as an active task or service still references them. If you paginate the resulting output, be sure to keep the status value constant in each subsequent request. - */ - status?: TaskDefinitionStatus; - /** - * The order in which to sort the results. Valid values are ASC and DESC. By default (ASC), task definitions are listed lexicographically by family name and in ascending numerical order by revision so that the newest task definitions in a family are listed last. Setting this parameter to DESC reverses the sort order on family name and revision so that the newest task definitions in a family are listed first. - */ - sort?: SortOrder; - /** - * The nextToken value returned from a previous paginated ListTaskDefinitions request where maxResults was used and the results exceeded the value of that parameter. Pagination continues from the end of the previous results that returned the nextToken value. This value is null when there are no more results to return. This token should be treated as an opaque identifier that is only used to retrieve the next items in a list and not for other programmatic purposes. - */ - nextToken?: String; - /** - * The maximum number of task definition results returned by ListTaskDefinitions in paginated output. When this parameter is used, ListTaskDefinitions only returns maxResults results in a single page along with a nextToken response element. The remaining results of the initial request can be seen by sending another ListTaskDefinitions request with the returned nextToken value. This value can be between 1 and 100. If this parameter is not used, then ListTaskDefinitions returns up to 100 results and a nextToken value if applicable. - */ - maxResults?: BoxedInteger; - } - export interface ListTaskDefinitionsResponse { - /** - * The list of task definition Amazon Resource Name (ARN) entries for the ListTaskDefinitions request. - */ - taskDefinitionArns?: StringList; - /** - * The nextToken value to include in a future ListTaskDefinitions request. When the results of a ListTaskDefinitions request exceed maxResults, this value can be used to retrieve the next page of results. This value is null when there are no more results to return. - */ - nextToken?: String; - } - export interface ListTasksRequest { - /** - * The short name or full Amazon Resource Name (ARN) of the cluster that hosts the tasks to list. If you do not specify a cluster, the default cluster is assumed. - */ - cluster?: String; - /** - * The container instance ID or full Amazon Resource Name (ARN) of the container instance with which to filter the ListTasks results. Specifying a containerInstance limits the results to tasks that belong to that container instance. - */ - containerInstance?: String; - /** - * The name of the family with which to filter the ListTasks results. Specifying a family limits the results to tasks that belong to that family. - */ - family?: String; - /** - * The nextToken value returned from a previous paginated ListTasks request where maxResults was used and the results exceeded the value of that parameter. Pagination continues from the end of the previous results that returned the nextToken value. This value is null when there are no more results to return. This token should be treated as an opaque identifier that is only used to retrieve the next items in a list and not for other programmatic purposes. - */ - nextToken?: String; - /** - * The maximum number of task results returned by ListTasks in paginated output. When this parameter is used, ListTasks only returns maxResults results in a single page along with a nextToken response element. The remaining results of the initial request can be seen by sending another ListTasks request with the returned nextToken value. This value can be between 1 and 100. If this parameter is not used, then ListTasks returns up to 100 results and a nextToken value if applicable. - */ - maxResults?: BoxedInteger; - /** - * The startedBy value with which to filter the task results. Specifying a startedBy value limits the results to tasks that were started with that value. - */ - startedBy?: String; - /** - * The name of the service with which to filter the ListTasks results. Specifying a serviceName limits the results to tasks that belong to that service. - */ - serviceName?: String; - /** - * The task desired status with which to filter the ListTasks results. Specifying a desiredStatus of STOPPED limits the results to tasks that ECS has set the desired status to STOPPED, which can be useful for debugging tasks that are not starting properly or have died or finished. The default status filter is RUNNING, which shows tasks that ECS has set the desired status to RUNNING. Although you can filter results based on a desired status of PENDING, this will not return any results because ECS never sets the desired status of a task to that value (only a task's lastStatus may have a value of PENDING). - */ - desiredStatus?: DesiredStatus; - } - export interface ListTasksResponse { - /** - * The list of task Amazon Resource Name (ARN) entries for the ListTasks request. - */ - taskArns?: StringList; - /** - * The nextToken value to include in a future ListTasks request. When the results of a ListTasks request exceed maxResults, this value can be used to retrieve the next page of results. This value is null when there are no more results to return. - */ - nextToken?: String; - } - export interface LoadBalancer { - /** - * The full Amazon Resource Name (ARN) of the Elastic Load Balancing target group associated with a service. - */ - targetGroupArn?: String; - /** - * The name of a load balancer. - */ - loadBalancerName?: String; - /** - * The name of the container (as it appears in a container definition) to associate with the load balancer. - */ - containerName?: String; - /** - * The port on the container to associate with the load balancer. This port must correspond to a containerPort in the service's task definition. Your container instances must allow ingress traffic on the hostPort of the port mapping. - */ - containerPort?: BoxedInteger; - } - export type LoadBalancers = LoadBalancer[]; - export interface LogConfiguration { - /** - * The log driver to use for the container. The valid values listed for this parameter are log drivers that the Amazon ECS container agent can communicate with by default. If you have a custom driver that is not listed above that you would like to work with the Amazon ECS container agent, you can fork the Amazon ECS container agent project that is available on GitHub and customize it to work with that driver. We encourage you to submit pull requests for changes that you would like to have included. However, Amazon Web Services does not currently provide support for running modified copies of this software. This parameter requires version 1.18 of the Docker Remote API or greater on your container instance. To check the Docker Remote API version on your container instance, log into your container instance and run the following command: sudo docker version | grep "Server API version" - */ - logDriver: LogDriver; - /** - * The configuration options to send to the log driver. This parameter requires version 1.19 of the Docker Remote API or greater on your container instance. To check the Docker Remote API version on your container instance, log into your container instance and run the following command: sudo docker version | grep "Server API version" - */ - options?: LogConfigurationOptionsMap; - } - export type LogConfigurationOptionsMap = {[key: string]: String}; - export type LogDriver = "json-file"|"syslog"|"journald"|"gelf"|"fluentd"|"awslogs"|"splunk"|string; - export type Long = number; - export interface MountPoint { - /** - * The name of the volume to mount. - */ - sourceVolume?: String; - /** - * The path on the container to mount the host volume at. - */ - containerPath?: String; - /** - * If this value is true, the container has read-only access to the volume. If this value is false, then the container can write to the volume. The default value is false. - */ - readOnly?: BoxedBoolean; - } - export type MountPointList = MountPoint[]; - export interface NetworkBinding { - /** - * The IP address that the container is bound to on the container instance. - */ - bindIP?: String; - /** - * The port number on the container that is be used with the network binding. - */ - containerPort?: BoxedInteger; - /** - * The port number on the host that is used with the network binding. - */ - hostPort?: BoxedInteger; - /** - * The protocol used for the network binding. - */ - protocol?: TransportProtocol; - } - export type NetworkBindings = NetworkBinding[]; - export type NetworkMode = "bridge"|"host"|"none"|string; - export interface PlacementConstraint { - /** - * The type of constraint. Use distinctInstance to ensure that each task in a particular group is running on a different container instance. Use memberOf to restrict selection to a group of valid candidates. Note that distinctInstance is not supported in task definitions. - */ - type?: PlacementConstraintType; - /** - * A cluster query language expression to apply to the constraint. Note you cannot specify an expression if the constraint type is distinctInstance. For more information, see Cluster Query Language in the Amazon EC2 Container Service Developer Guide. - */ - expression?: String; - } - export type PlacementConstraintType = "distinctInstance"|"memberOf"|string; - export type PlacementConstraints = PlacementConstraint[]; - export type PlacementStrategies = PlacementStrategy[]; - export interface PlacementStrategy { - /** - * The type of placement strategy. The random placement strategy randomly places tasks on available candidates. The spread placement strategy spreads placement across available candidates evenly based on the field parameter. The binpack strategy places tasks on available candidates that have the least available amount of the resource that is specified with the field parameter. For example, if you binpack on memory, a task is placed on the instance with the least amount of remaining memory (but still enough to run the task). - */ - type?: PlacementStrategyType; - /** - * The field to apply the placement strategy against. For the spread placement strategy, valid values are instanceId (or host, which has the same effect), or any platform or custom attribute that is applied to a container instance, such as attribute:ecs.availability-zone. For the binpack placement strategy, valid values are cpu and memory. For the random placement strategy, this field is not used. - */ - field?: String; - } - export type PlacementStrategyType = "random"|"spread"|"binpack"|string; - export interface PortMapping { - /** - * The port number on the container that is bound to the user-specified or automatically assigned host port. If you specify a container port and not a host port, your container automatically receives a host port in the ephemeral port range (for more information, see hostPort). Port mappings that are automatically assigned in this way do not count toward the 100 reserved ports limit of a container instance. - */ - containerPort?: BoxedInteger; - /** - * The port number on the container instance to reserve for your container. You can specify a non-reserved host port for your container port mapping, or you can omit the hostPort (or set it to 0) while specifying a containerPort and your container automatically receives a port in the ephemeral port range for your container instance operating system and Docker version. The default ephemeral port range for Docker version 1.6.0 and later is listed on the instance under /proc/sys/net/ipv4/ip_local_port_range; if this kernel parameter is unavailable, the default ephemeral port range of 49153 to 65535 is used. You should not attempt to specify a host port in the ephemeral port range as these are reserved for automatic assignment. In general, ports below 32768 are outside of the ephemeral port range. The default ephemeral port range of 49153 to 65535 will always be used for Docker versions prior to 1.6.0. The default reserved ports are 22 for SSH, the Docker ports 2375 and 2376, and the Amazon ECS container agent ports 51678 and 51679. Any host port that was previously specified in a running task is also reserved while the task is running (after a task stops, the host port is released).The current reserved ports are displayed in the remainingResources of DescribeContainerInstances output, and a container instance may have up to 100 reserved ports at a time, including the default reserved ports (automatically assigned ports do not count toward the 100 reserved ports limit). - */ - hostPort?: BoxedInteger; - /** - * The protocol used for the port mapping. Valid values are tcp and udp. The default is tcp. - */ - protocol?: TransportProtocol; - } - export type PortMappingList = PortMapping[]; - export interface PutAttributesRequest { - /** - * The short name or full Amazon Resource Name (ARN) of the cluster that contains the resource to apply attributes. If you do not specify a cluster, the default cluster is assumed. - */ - cluster?: String; - /** - * The attributes to apply to your resource. You can specify up to 10 custom attributes per resource. You can specify up to 10 attributes in a single call. - */ - attributes: Attributes; - } - export interface PutAttributesResponse { - /** - * The attributes applied to your resource. - */ - attributes?: Attributes; - } - export interface RegisterContainerInstanceRequest { - /** - * The short name or full Amazon Resource Name (ARN) of the cluster with which to register your container instance. If you do not specify a cluster, the default cluster is assumed. - */ - cluster?: String; - /** - * The instance identity document for the EC2 instance to register. This document can be found by running the following command from the instance: curl http://169.254.169.254/latest/dynamic/instance-identity/document/ - */ - instanceIdentityDocument?: String; - /** - * The instance identity document signature for the EC2 instance to register. This signature can be found by running the following command from the instance: curl http://169.254.169.254/latest/dynamic/instance-identity/signature/ - */ - instanceIdentityDocumentSignature?: String; - /** - * The resources available on the instance. - */ - totalResources?: Resources; - /** - * The version information for the Amazon ECS container agent and Docker daemon running on the container instance. - */ - versionInfo?: VersionInfo; - /** - * The Amazon Resource Name (ARN) of the container instance (if it was previously registered). - */ - containerInstanceArn?: String; - /** - * The container instance attributes that this container instance supports. - */ - attributes?: Attributes; - } - export interface RegisterContainerInstanceResponse { - /** - * The container instance that was registered. - */ - containerInstance?: ContainerInstance; - } - export interface RegisterTaskDefinitionRequest { - /** - * You must specify a family for a task definition, which allows you to track multiple versions of the same task definition. The family is used as a name for your task definition. Up to 255 letters (uppercase and lowercase), numbers, hyphens, and underscores are allowed. - */ - family: String; - /** - * The short name or full Amazon Resource Name (ARN) of the IAM role that containers in this task can assume. All containers in this task are granted the permissions that are specified in this role. For more information, see IAM Roles for Tasks in the Amazon EC2 Container Service Developer Guide. - */ - taskRoleArn?: String; - /** - * The Docker networking mode to use for the containers in the task. The valid values are none, bridge, and host. The default Docker network mode is bridge. If the network mode is set to none, you cannot specify port mappings in your container definitions, and the task's containers do not have external connectivity. The host network mode offers the highest networking performance for containers because they use the host network stack instead of the virtualized network stack provided by the bridge mode; however, exposed container ports are mapped directly to the corresponding host port, so you cannot take advantage of dynamic host port mappings or run multiple instantiations of the same task on a single container instance if port mappings are used. For more information, see Network settings in the Docker run reference. - */ - networkMode?: NetworkMode; - /** - * A list of container definitions in JSON format that describe the different containers that make up your task. - */ - containerDefinitions: ContainerDefinitions; - /** - * A list of volume definitions in JSON format that containers in your task may use. - */ - volumes?: VolumeList; - /** - * An array of placement constraint objects to use for the task. You can specify a maximum of 10 constraints per task (this limit includes constraints in the task definition and those specified at run time). - */ - placementConstraints?: TaskDefinitionPlacementConstraints; - } - export interface RegisterTaskDefinitionResponse { - /** - * The full description of the registered task definition. - */ - taskDefinition?: TaskDefinition; - } - export type RequiresAttributes = Attribute[]; - export interface Resource { - /** - * The name of the resource, such as cpu, memory, ports, or a user-defined resource. - */ - name?: String; - /** - * The type of the resource, such as INTEGER, DOUBLE, LONG, or STRINGSET. - */ - type?: String; - /** - * When the doubleValue type is set, the value of the resource must be a double precision floating-point type. - */ - doubleValue?: Double; - /** - * When the longValue type is set, the value of the resource must be an extended precision floating-point type. - */ - longValue?: Long; - /** - * When the integerValue type is set, the value of the resource must be an integer. - */ - integerValue?: Integer; - /** - * When the stringSetValue type is set, the value of the resource must be a string type. - */ - stringSetValue?: StringList; - } - export type Resources = Resource[]; - export interface RunTaskRequest { - /** - * The short name or full Amazon Resource Name (ARN) of the cluster on which to run your task. If you do not specify a cluster, the default cluster is assumed. - */ - cluster?: String; - /** - * The family and revision (family:revision) or full Amazon Resource Name (ARN) of the task definition to run. If a revision is not specified, the latest ACTIVE revision is used. - */ - taskDefinition: String; - /** - * A list of container overrides in JSON format that specify the name of a container in the specified task definition and the overrides it should receive. You can override the default command for a container (that is specified in the task definition or Docker image) with a command override. You can also override existing environment variables (that are specified in the task definition or Docker image) on a container or add new environment variables to it with an environment override. A total of 8192 characters are allowed for overrides. This limit includes the JSON formatting characters of the override structure. - */ - overrides?: TaskOverride; - /** - * The number of instantiations of the specified task to place on your cluster. You can specify up to 10 tasks per call. - */ - count?: BoxedInteger; - /** - * An optional tag specified when a task is started. For example if you automatically trigger a task to run a batch process job, you could apply a unique identifier for that job to your task with the startedBy parameter. You can then identify which tasks belong to that job by filtering the results of a ListTasks call with the startedBy value. Up to 36 letters (uppercase and lowercase), numbers, hyphens, and underscores are allowed. If a task is started by an Amazon ECS service, then the startedBy parameter contains the deployment ID of the service that starts it. - */ - startedBy?: String; - /** - * The name of the task group to associate with the task. The default value is the family name of the task definition (for example, family:my-family-name). - */ - group?: String; - /** - * An array of placement constraint objects to use for the task. You can specify up to 10 constraints per task (including constraints in the task definition and those specified at run time). - */ - placementConstraints?: PlacementConstraints; - /** - * The placement strategy objects to use for the task. You can specify a maximum of 5 strategy rules per task. - */ - placementStrategy?: PlacementStrategies; - } - export interface RunTaskResponse { - /** - * A full description of the tasks that were run. Each task that was successfully placed on your cluster are described here. - */ - tasks?: Tasks; - /** - * Any failures associated with the call. - */ - failures?: Failures; - } - export interface Service { - /** - * The Amazon Resource Name (ARN) that identifies the service. The ARN contains the arn:aws:ecs namespace, followed by the region of the service, the AWS account ID of the service owner, the service namespace, and then the service name. For example, arn:aws:ecs:region:012345678910:service/my-service . - */ - serviceArn?: String; - /** - * The name of your service. Up to 255 letters (uppercase and lowercase), numbers, hyphens, and underscores are allowed. Service names must be unique within a cluster, but you can have similarly named services in multiple clusters within a region or across multiple regions. - */ - serviceName?: String; - /** - * The Amazon Resource Name (ARN) of the cluster that hosts the service. - */ - clusterArn?: String; - /** - * A list of Elastic Load Balancing load balancer objects, containing the load balancer name, the container name (as it appears in a container definition), and the container port to access from the load balancer. - */ - loadBalancers?: LoadBalancers; - /** - * The status of the service. The valid values are ACTIVE, DRAINING, or INACTIVE. - */ - status?: String; - /** - * The desired number of instantiations of the task definition to keep running on the service. This value is specified when the service is created with CreateService, and it can be modified with UpdateService. - */ - desiredCount?: Integer; - /** - * The number of tasks in the cluster that are in the RUNNING state. - */ - runningCount?: Integer; - /** - * The number of tasks in the cluster that are in the PENDING state. - */ - pendingCount?: Integer; - /** - * The task definition to use for tasks in the service. This value is specified when the service is created with CreateService, and it can be modified with UpdateService. - */ - taskDefinition?: String; - /** - * Optional deployment parameters that control how many tasks run during the deployment and the ordering of stopping and starting tasks. - */ - deploymentConfiguration?: DeploymentConfiguration; - /** - * The current state of deployments for the service. - */ - deployments?: Deployments; - /** - * The Amazon Resource Name (ARN) of the IAM role associated with the service that allows the Amazon ECS container agent to register container instances with an Elastic Load Balancing load balancer. - */ - roleArn?: String; - /** - * The event stream for your service. A maximum of 100 of the latest events are displayed. - */ - events?: ServiceEvents; - /** - * The Unix timestamp for when the service was created. - */ - createdAt?: Timestamp; - /** - * The placement constraints for the tasks in the service. - */ - placementConstraints?: PlacementConstraints; - /** - * The placement strategy that determines how tasks for the service are placed. - */ - placementStrategy?: PlacementStrategies; - } - export interface ServiceEvent { - /** - * The ID string of the event. - */ - id?: String; - /** - * The Unix timestamp for when the event was triggered. - */ - createdAt?: Timestamp; - /** - * The event message. - */ - message?: String; - } - export type ServiceEvents = ServiceEvent[]; - export type Services = Service[]; - export type SortOrder = "ASC"|"DESC"|string; - export interface StartTaskRequest { - /** - * The short name or full Amazon Resource Name (ARN) of the cluster on which to start your task. If you do not specify a cluster, the default cluster is assumed. - */ - cluster?: String; - /** - * The family and revision (family:revision) or full Amazon Resource Name (ARN) of the task definition to start. If a revision is not specified, the latest ACTIVE revision is used. - */ - taskDefinition: String; - /** - * A list of container overrides in JSON format that specify the name of a container in the specified task definition and the overrides it should receive. You can override the default command for a container (that is specified in the task definition or Docker image) with a command override. You can also override existing environment variables (that are specified in the task definition or Docker image) on a container or add new environment variables to it with an environment override. A total of 8192 characters are allowed for overrides. This limit includes the JSON formatting characters of the override structure. - */ - overrides?: TaskOverride; - /** - * The container instance IDs or full Amazon Resource Name (ARN) entries for the container instances on which you would like to place your task. You can specify up to 10 container instances. - */ - containerInstances: StringList; - /** - * An optional tag specified when a task is started. For example if you automatically trigger a task to run a batch process job, you could apply a unique identifier for that job to your task with the startedBy parameter. You can then identify which tasks belong to that job by filtering the results of a ListTasks call with the startedBy value. Up to 36 letters (uppercase and lowercase), numbers, hyphens, and underscores are allowed. If a task is started by an Amazon ECS service, then the startedBy parameter contains the deployment ID of the service that starts it. - */ - startedBy?: String; - /** - * The name of the task group to associate with the task. The default value is the family name of the task definition (for example, family:my-family-name). - */ - group?: String; - } - export interface StartTaskResponse { - /** - * A full description of the tasks that were started. Each task that was successfully placed on your container instances are described here. - */ - tasks?: Tasks; - /** - * Any failures associated with the call. - */ - failures?: Failures; - } - export interface StopTaskRequest { - /** - * The short name or full Amazon Resource Name (ARN) of the cluster that hosts the task to stop. If you do not specify a cluster, the default cluster is assumed. - */ - cluster?: String; - /** - * The task ID or full Amazon Resource Name (ARN) entry of the task to stop. - */ - task: String; - /** - * An optional message specified when a task is stopped. For example, if you are using a custom scheduler, you can use this parameter to specify the reason for stopping the task here, and the message will appear in subsequent DescribeTasks API operations on this task. Up to 255 characters are allowed in this message. - */ - reason?: String; - } - export interface StopTaskResponse { - /** - * The task that was stopped. - */ - task?: Task; - } - export type String = string; - export type StringList = String[]; - export interface SubmitContainerStateChangeRequest { - /** - * The short name or full Amazon Resource Name (ARN) of the cluster that hosts the container. - */ - cluster?: String; - /** - * The task ID or full Amazon Resource Name (ARN) of the task that hosts the container. - */ - task?: String; - /** - * The name of the container. - */ - containerName?: String; - /** - * The status of the state change request. - */ - status?: String; - /** - * The exit code returned for the state change request. - */ - exitCode?: BoxedInteger; - /** - * The reason for the state change request. - */ - reason?: String; - /** - * The network bindings of the container. - */ - networkBindings?: NetworkBindings; - } - export interface SubmitContainerStateChangeResponse { - /** - * Acknowledgement of the state change. - */ - acknowledgment?: String; - } - export interface SubmitTaskStateChangeRequest { - /** - * The short name or full Amazon Resource Name (ARN) of the cluster that hosts the task. - */ - cluster?: String; - /** - * The task ID or full Amazon Resource Name (ARN) of the task in the state change request. - */ - task?: String; - /** - * The status of the state change request. - */ - status?: String; - /** - * The reason for the state change request. - */ - reason?: String; - } - export interface SubmitTaskStateChangeResponse { - /** - * Acknowledgement of the state change. - */ - acknowledgment?: String; - } - export type TargetType = "container-instance"|string; - export interface Task { - /** - * The Amazon Resource Name (ARN) of the task. - */ - taskArn?: String; - /** - * The Amazon Resource Name (ARN) of the cluster that hosts the task. - */ - clusterArn?: String; - /** - * The Amazon Resource Name (ARN) of the task definition that creates the task. - */ - taskDefinitionArn?: String; - /** - * The Amazon Resource Name (ARN) of the container instances that host the task. - */ - containerInstanceArn?: String; - /** - * One or more container overrides. - */ - overrides?: TaskOverride; - /** - * The last known status of the task. - */ - lastStatus?: String; - /** - * The desired status of the task. - */ - desiredStatus?: String; - /** - * The containers associated with the task. - */ - containers?: Containers; - /** - * The tag specified when a task is started. If the task is started by an Amazon ECS service, then the startedBy parameter contains the deployment ID of the service that starts it. - */ - startedBy?: String; - /** - * The version counter for the task. Every time a task experiences a change that triggers a CloudWatch event, the version counter is incremented. If you are replicating your Amazon ECS task state with CloudWatch events, you can compare the version of a task reported by the Amazon ECS APIs with the version reported in CloudWatch events for the task (inside the detail object) to verify that the version in your event stream is current. - */ - version?: Long; - /** - * The reason the task was stopped. - */ - stoppedReason?: String; - /** - * The Unix timestamp for when the task was created (the task entered the PENDING state). - */ - createdAt?: Timestamp; - /** - * The Unix timestamp for when the task was started (the task transitioned from the PENDING state to the RUNNING state). - */ - startedAt?: Timestamp; - /** - * The Unix timestamp for when the task was stopped (the task transitioned from the RUNNING state to the STOPPED state). - */ - stoppedAt?: Timestamp; - /** - * The name of the task group associated with the task. - */ - group?: String; - } - export interface TaskDefinition { - /** - * The full Amazon Resource Name (ARN) of the task definition. - */ - taskDefinitionArn?: String; - /** - * A list of container definitions in JSON format that describe the different containers that make up your task. For more information about container definition parameters and defaults, see Amazon ECS Task Definitions in the Amazon EC2 Container Service Developer Guide. - */ - containerDefinitions?: ContainerDefinitions; - /** - * The family of your task definition, used as the definition name. - */ - family?: String; - /** - * The Amazon Resource Name (ARN) of the IAM role that containers in this task can assume. All containers in this task are granted the permissions that are specified in this role. - */ - taskRoleArn?: String; - /** - * The Docker networking mode to use for the containers in the task. The valid values are none, bridge, and host. If the network mode is none, the containers do not have external connectivity. The default Docker network mode is bridge. The host network mode offers the highest networking performance for containers because it uses the host network stack instead of the virtualized network stack provided by the bridge mode. For more information, see Network settings in the Docker run reference. - */ - networkMode?: NetworkMode; - /** - * The revision of the task in a particular family. The revision is a version number of a task definition in a family. When you register a task definition for the first time, the revision is 1; each time you register a new revision of a task definition in the same family, the revision value always increases by one (even if you have deregistered previous revisions in this family). - */ - revision?: Integer; - /** - * The list of volumes in a task. For more information about volume definition parameters and defaults, see Amazon ECS Task Definitions in the Amazon EC2 Container Service Developer Guide. - */ - volumes?: VolumeList; - /** - * The status of the task definition. - */ - status?: TaskDefinitionStatus; - /** - * The container instance attributes required by your task. - */ - requiresAttributes?: RequiresAttributes; - /** - * An array of placement constraint objects to use for tasks. - */ - placementConstraints?: TaskDefinitionPlacementConstraints; - } - export type TaskDefinitionFamilyStatus = "ACTIVE"|"INACTIVE"|"ALL"|string; - export interface TaskDefinitionPlacementConstraint { - /** - * The type of constraint. The DistinctInstance constraint ensures that each task in a particular group is running on a different container instance. The MemberOf constraint restricts selection to be from a group of valid candidates. - */ - type?: TaskDefinitionPlacementConstraintType; - /** - * A cluster query language expression to apply to the constraint. For more information, see Cluster Query Language in the Amazon EC2 Container Service Developer Guide. - */ - expression?: String; - } - export type TaskDefinitionPlacementConstraintType = "memberOf"|string; - export type TaskDefinitionPlacementConstraints = TaskDefinitionPlacementConstraint[]; - export type TaskDefinitionStatus = "ACTIVE"|"INACTIVE"|string; - export interface TaskOverride { - /** - * One or more container overrides sent to a task. - */ - containerOverrides?: ContainerOverrides; - /** - * The Amazon Resource Name (ARN) of the IAM role that containers in this task can assume. All containers in this task are granted the permissions that are specified in this role. - */ - taskRoleArn?: String; - } - export type Tasks = Task[]; - export type Timestamp = Date; - export type TransportProtocol = "tcp"|"udp"|string; - export interface Ulimit { - /** - * The type of the ulimit. - */ - name: UlimitName; - /** - * The soft limit for the ulimit type. - */ - softLimit: Integer; - /** - * The hard limit for the ulimit type. - */ - hardLimit: Integer; - } - export type UlimitList = Ulimit[]; - export type UlimitName = "core"|"cpu"|"data"|"fsize"|"locks"|"memlock"|"msgqueue"|"nice"|"nofile"|"nproc"|"rss"|"rtprio"|"rttime"|"sigpending"|"stack"|string; - export interface UpdateContainerAgentRequest { - /** - * The short name or full Amazon Resource Name (ARN) of the cluster that your container instance is running on. If you do not specify a cluster, the default cluster is assumed. - */ - cluster?: String; - /** - * The container instance ID or full Amazon Resource Name (ARN) entries for the container instance on which you would like to update the Amazon ECS container agent. - */ - containerInstance: String; - } - export interface UpdateContainerAgentResponse { - /** - * The container instance for which the container agent was updated. - */ - containerInstance?: ContainerInstance; - } - export interface UpdateContainerInstancesStateRequest { - /** - * The short name or full Amazon Resource Name (ARN) of the cluster that hosts the container instance to update. If you do not specify a cluster, the default cluster is assumed. - */ - cluster?: String; - /** - * A list of container instance IDs or full Amazon Resource Name (ARN) entries. - */ - containerInstances: StringList; - /** - * The container instance state with which to update the container instance. - */ - status: ContainerInstanceStatus; - } - export interface UpdateContainerInstancesStateResponse { - /** - * The list of container instances. - */ - containerInstances?: ContainerInstances; - /** - * Any failures associated with the call. - */ - failures?: Failures; - } - export interface UpdateServiceRequest { - /** - * The short name or full Amazon Resource Name (ARN) of the cluster that your service is running on. If you do not specify a cluster, the default cluster is assumed. - */ - cluster?: String; - /** - * The name of the service to update. - */ - service: String; - /** - * The number of instantiations of the task to place and keep running in your service. - */ - desiredCount?: BoxedInteger; - /** - * The family and revision (family:revision) or full Amazon Resource Name (ARN) of the task definition to run in your service. If a revision is not specified, the latest ACTIVE revision is used. If you modify the task definition with UpdateService, Amazon ECS spawns a task with the new version of the task definition and then stops an old task after the new version is running. - */ - taskDefinition?: String; - /** - * Optional deployment parameters that control how many tasks run during the deployment and the ordering of stopping and starting tasks. - */ - deploymentConfiguration?: DeploymentConfiguration; - } - export interface UpdateServiceResponse { - /** - * The full description of your service following the update call. - */ - service?: Service; - } - export interface VersionInfo { - /** - * The version number of the Amazon ECS container agent. - */ - agentVersion?: String; - /** - * The Git commit hash for the Amazon ECS container agent build on the amazon-ecs-agent GitHub repository. - */ - agentHash?: String; - /** - * The Docker version running on the container instance. - */ - dockerVersion?: String; - } - export interface Volume { - /** - * The name of the volume. Up to 255 letters (uppercase and lowercase), numbers, hyphens, and underscores are allowed. This name is referenced in the sourceVolume parameter of container definition mountPoints. - */ - name?: String; - /** - * The contents of the host parameter determine whether your data volume persists on the host container instance and where it is stored. If the host parameter is empty, then the Docker daemon assigns a host path for your data volume, but the data is not guaranteed to persist after the containers associated with it stop running. - */ - host?: HostVolumeProperties; - } - export interface VolumeFrom { - /** - * The name of another container within the same task definition to mount volumes from. - */ - sourceContainer?: String; - /** - * If this value is true, the container has read-only access to the volume. If this value is false, then the container can write to the volume. The default value is false. - */ - readOnly?: BoxedBoolean; - } - export type VolumeFromList = VolumeFrom[]; - export type VolumeList = Volume[]; - /** - * A string in YYYY-MM-DD format that represents the latest possible API version that can be used in this service. Specify 'latest' to use the latest possible version. - */ - export type apiVersion = "2014-11-13"|"latest"|string; - export interface ClientApiVersions { - /** - * A string in YYYY-MM-DD format that represents the latest possible API version that can be used in this service. Specify 'latest' to use the latest possible version. - */ - apiVersion?: apiVersion; - } - export type ClientConfiguration = ServiceConfigurationOptions & ClientApiVersions; - /** - * Contains interfaces for use with the ECS client. - */ - export import Types = ECS; -} -export = ECS; diff --git a/workshops/monte-carlo-on-ec2-spot-fleet/src/web/node_modules/aws-sdk/clients/ecs.js b/workshops/monte-carlo-on-ec2-spot-fleet/src/web/node_modules/aws-sdk/clients/ecs.js deleted file mode 100644 index 5f937551..00000000 --- a/workshops/monte-carlo-on-ec2-spot-fleet/src/web/node_modules/aws-sdk/clients/ecs.js +++ /dev/null @@ -1,19 +0,0 @@ -require('../lib/node_loader'); -var AWS = require('../lib/core'); -var Service = AWS.Service; -var apiLoader = AWS.apiLoader; - -apiLoader.services['ecs'] = {}; -AWS.ECS = Service.defineService('ecs', ['2014-11-13']); -Object.defineProperty(apiLoader.services['ecs'], '2014-11-13', { - get: function get() { - var model = require('../apis/ecs-2014-11-13.min.json'); - model.paginators = require('../apis/ecs-2014-11-13.paginators.json').pagination; - model.waiters = require('../apis/ecs-2014-11-13.waiters2.json').waiters; - return model; - }, - enumerable: true, - configurable: true -}); - -module.exports = AWS.ECS; diff --git a/workshops/monte-carlo-on-ec2-spot-fleet/src/web/node_modules/aws-sdk/clients/efs.d.ts b/workshops/monte-carlo-on-ec2-spot-fleet/src/web/node_modules/aws-sdk/clients/efs.d.ts deleted file mode 100644 index 68456b0d..00000000 --- a/workshops/monte-carlo-on-ec2-spot-fleet/src/web/node_modules/aws-sdk/clients/efs.d.ts +++ /dev/null @@ -1,424 +0,0 @@ -import {Request} from '../lib/request'; -import {Response} from '../lib/response'; -import {AWSError} from '../lib/error'; -import {Service} from '../lib/service'; -import {ServiceConfigurationOptions} from '../lib/service'; -import {ConfigBase as Config} from '../lib/config'; -interface Blob {} -declare class EFS extends Service { - /** - * Constructs a service object. This object has one method for each API operation. - */ - constructor(options?: EFS.Types.ClientConfiguration) - config: Config & EFS.Types.ClientConfiguration; - /** - * Creates a new, empty file system. The operation requires a creation token in the request that Amazon EFS uses to ensure idempotent creation (calling the operation with same creation token has no effect). If a file system does not currently exist that is owned by the caller's AWS account with the specified creation token, this operation does the following: Creates a new, empty file system. The file system will have an Amazon EFS assigned ID, and an initial lifecycle state creating. Returns with the description of the created file system. Otherwise, this operation returns a FileSystemAlreadyExists error with the ID of the existing file system. For basic use cases, you can use a randomly generated UUID for the creation token. The idempotent operation allows you to retry a CreateFileSystem call without risk of creating an extra file system. This can happen when an initial call fails in a way that leaves it uncertain whether or not a file system was actually created. An example might be that a transport level timeout occurred or your connection was reset. As long as you use the same creation token, if the initial call had succeeded in creating a file system, the client can learn of its existence from the FileSystemAlreadyExists error. The CreateFileSystem call returns while the file system's lifecycle state is still creating. You can check the file system creation status by calling the DescribeFileSystems operation, which among other things returns the file system state. This operation also takes an optional PerformanceMode parameter that you choose for your file system. We recommend generalPurpose performance mode for most file systems. File systems using the maxIO performance mode can scale to higher levels of aggregate throughput and operations per second with a tradeoff of slightly higher latencies for most file operations. The performance mode can't be changed after the file system has been created. For more information, see Amazon EFS: Performance Modes. After the file system is fully created, Amazon EFS sets its lifecycle state to available, at which point you can create one or more mount targets for the file system in your VPC. For more information, see CreateMountTarget. You mount your Amazon EFS file system on an EC2 instances in your VPC via the mount target. For more information, see Amazon EFS: How it Works. This operation requires permissions for the elasticfilesystem:CreateFileSystem action. - */ - createFileSystem(params: EFS.Types.CreateFileSystemRequest, callback?: (err: AWSError, data: EFS.Types.FileSystemDescription) => void): Request; - /** - * Creates a new, empty file system. The operation requires a creation token in the request that Amazon EFS uses to ensure idempotent creation (calling the operation with same creation token has no effect). If a file system does not currently exist that is owned by the caller's AWS account with the specified creation token, this operation does the following: Creates a new, empty file system. The file system will have an Amazon EFS assigned ID, and an initial lifecycle state creating. Returns with the description of the created file system. Otherwise, this operation returns a FileSystemAlreadyExists error with the ID of the existing file system. For basic use cases, you can use a randomly generated UUID for the creation token. The idempotent operation allows you to retry a CreateFileSystem call without risk of creating an extra file system. This can happen when an initial call fails in a way that leaves it uncertain whether or not a file system was actually created. An example might be that a transport level timeout occurred or your connection was reset. As long as you use the same creation token, if the initial call had succeeded in creating a file system, the client can learn of its existence from the FileSystemAlreadyExists error. The CreateFileSystem call returns while the file system's lifecycle state is still creating. You can check the file system creation status by calling the DescribeFileSystems operation, which among other things returns the file system state. This operation also takes an optional PerformanceMode parameter that you choose for your file system. We recommend generalPurpose performance mode for most file systems. File systems using the maxIO performance mode can scale to higher levels of aggregate throughput and operations per second with a tradeoff of slightly higher latencies for most file operations. The performance mode can't be changed after the file system has been created. For more information, see Amazon EFS: Performance Modes. After the file system is fully created, Amazon EFS sets its lifecycle state to available, at which point you can create one or more mount targets for the file system in your VPC. For more information, see CreateMountTarget. You mount your Amazon EFS file system on an EC2 instances in your VPC via the mount target. For more information, see Amazon EFS: How it Works. This operation requires permissions for the elasticfilesystem:CreateFileSystem action. - */ - createFileSystem(callback?: (err: AWSError, data: EFS.Types.FileSystemDescription) => void): Request; - /** - * Creates a mount target for a file system. You can then mount the file system on EC2 instances via the mount target. You can create one mount target in each Availability Zone in your VPC. All EC2 instances in a VPC within a given Availability Zone share a single mount target for a given file system. If you have multiple subnets in an Availability Zone, you create a mount target in one of the subnets. EC2 instances do not need to be in the same subnet as the mount target in order to access their file system. For more information, see Amazon EFS: How it Works. In the request, you also specify a file system ID for which you are creating the mount target and the file system's lifecycle state must be available. For more information, see DescribeFileSystems. In the request, you also provide a subnet ID, which determines the following: VPC in which Amazon EFS creates the mount target Availability Zone in which Amazon EFS creates the mount target IP address range from which Amazon EFS selects the IP address of the mount target (if you don't specify an IP address in the request) After creating the mount target, Amazon EFS returns a response that includes, a MountTargetId and an IpAddress. You use this IP address when mounting the file system in an EC2 instance. You can also use the mount target's DNS name when mounting the file system. The EC2 instance on which you mount the file system via the mount target can resolve the mount target's DNS name to its IP address. For more information, see How it Works: Implementation Overview. Note that you can create mount targets for a file system in only one VPC, and there can be only one mount target per Availability Zone. That is, if the file system already has one or more mount targets created for it, the subnet specified in the request to add another mount target must meet the following requirements: Must belong to the same VPC as the subnets of the existing mount targets Must not be in the same Availability Zone as any of the subnets of the existing mount targets If the request satisfies the requirements, Amazon EFS does the following: Creates a new mount target in the specified subnet. Also creates a new network interface in the subnet as follows: If the request provides an IpAddress, Amazon EFS assigns that IP address to the network interface. Otherwise, Amazon EFS assigns a free address in the subnet (in the same way that the Amazon EC2 CreateNetworkInterface call does when a request does not specify a primary private IP address). If the request provides SecurityGroups, this network interface is associated with those security groups. Otherwise, it belongs to the default security group for the subnet's VPC. Assigns the description Mount target fsmt-id for file system fs-id where fsmt-id is the mount target ID, and fs-id is the FileSystemId. Sets the requesterManaged property of the network interface to true, and the requesterId value to EFS. Each Amazon EFS mount target has one corresponding requester-managed EC2 network interface. After the network interface is created, Amazon EFS sets the NetworkInterfaceId field in the mount target's description to the network interface ID, and the IpAddress field to its address. If network interface creation fails, the entire CreateMountTarget operation fails. The CreateMountTarget call returns only after creating the network interface, but while the mount target state is still creating, you can check the mount target creation status by calling the DescribeMountTargets operation, which among other things returns the mount target state. We recommend you create a mount target in each of the Availability Zones. There are cost considerations for using a file system in an Availability Zone through a mount target created in another Availability Zone. For more information, see Amazon EFS. In addition, by always using a mount target local to the instance's Availability Zone, you eliminate a partial failure scenario. If the Availability Zone in which your mount target is created goes down, then you won't be able to access your file system through that mount target. This operation requires permissions for the following action on the file system: elasticfilesystem:CreateMountTarget This operation also requires permissions for the following Amazon EC2 actions: ec2:DescribeSubnets ec2:DescribeNetworkInterfaces ec2:CreateNetworkInterface - */ - createMountTarget(params: EFS.Types.CreateMountTargetRequest, callback?: (err: AWSError, data: EFS.Types.MountTargetDescription) => void): Request; - /** - * Creates a mount target for a file system. You can then mount the file system on EC2 instances via the mount target. You can create one mount target in each Availability Zone in your VPC. All EC2 instances in a VPC within a given Availability Zone share a single mount target for a given file system. If you have multiple subnets in an Availability Zone, you create a mount target in one of the subnets. EC2 instances do not need to be in the same subnet as the mount target in order to access their file system. For more information, see Amazon EFS: How it Works. In the request, you also specify a file system ID for which you are creating the mount target and the file system's lifecycle state must be available. For more information, see DescribeFileSystems. In the request, you also provide a subnet ID, which determines the following: VPC in which Amazon EFS creates the mount target Availability Zone in which Amazon EFS creates the mount target IP address range from which Amazon EFS selects the IP address of the mount target (if you don't specify an IP address in the request) After creating the mount target, Amazon EFS returns a response that includes, a MountTargetId and an IpAddress. You use this IP address when mounting the file system in an EC2 instance. You can also use the mount target's DNS name when mounting the file system. The EC2 instance on which you mount the file system via the mount target can resolve the mount target's DNS name to its IP address. For more information, see How it Works: Implementation Overview. Note that you can create mount targets for a file system in only one VPC, and there can be only one mount target per Availability Zone. That is, if the file system already has one or more mount targets created for it, the subnet specified in the request to add another mount target must meet the following requirements: Must belong to the same VPC as the subnets of the existing mount targets Must not be in the same Availability Zone as any of the subnets of the existing mount targets If the request satisfies the requirements, Amazon EFS does the following: Creates a new mount target in the specified subnet. Also creates a new network interface in the subnet as follows: If the request provides an IpAddress, Amazon EFS assigns that IP address to the network interface. Otherwise, Amazon EFS assigns a free address in the subnet (in the same way that the Amazon EC2 CreateNetworkInterface call does when a request does not specify a primary private IP address). If the request provides SecurityGroups, this network interface is associated with those security groups. Otherwise, it belongs to the default security group for the subnet's VPC. Assigns the description Mount target fsmt-id for file system fs-id where fsmt-id is the mount target ID, and fs-id is the FileSystemId. Sets the requesterManaged property of the network interface to true, and the requesterId value to EFS. Each Amazon EFS mount target has one corresponding requester-managed EC2 network interface. After the network interface is created, Amazon EFS sets the NetworkInterfaceId field in the mount target's description to the network interface ID, and the IpAddress field to its address. If network interface creation fails, the entire CreateMountTarget operation fails. The CreateMountTarget call returns only after creating the network interface, but while the mount target state is still creating, you can check the mount target creation status by calling the DescribeMountTargets operation, which among other things returns the mount target state. We recommend you create a mount target in each of the Availability Zones. There are cost considerations for using a file system in an Availability Zone through a mount target created in another Availability Zone. For more information, see Amazon EFS. In addition, by always using a mount target local to the instance's Availability Zone, you eliminate a partial failure scenario. If the Availability Zone in which your mount target is created goes down, then you won't be able to access your file system through that mount target. This operation requires permissions for the following action on the file system: elasticfilesystem:CreateMountTarget This operation also requires permissions for the following Amazon EC2 actions: ec2:DescribeSubnets ec2:DescribeNetworkInterfaces ec2:CreateNetworkInterface - */ - createMountTarget(callback?: (err: AWSError, data: EFS.Types.MountTargetDescription) => void): Request; - /** - * Creates or overwrites tags associated with a file system. Each tag is a key-value pair. If a tag key specified in the request already exists on the file system, this operation overwrites its value with the value provided in the request. If you add the Name tag to your file system, Amazon EFS returns it in the response to the DescribeFileSystems operation. This operation requires permission for the elasticfilesystem:CreateTags action. - */ - createTags(params: EFS.Types.CreateTagsRequest, callback?: (err: AWSError, data: {}) => void): Request<{}, AWSError>; - /** - * Creates or overwrites tags associated with a file system. Each tag is a key-value pair. If a tag key specified in the request already exists on the file system, this operation overwrites its value with the value provided in the request. If you add the Name tag to your file system, Amazon EFS returns it in the response to the DescribeFileSystems operation. This operation requires permission for the elasticfilesystem:CreateTags action. - */ - createTags(callback?: (err: AWSError, data: {}) => void): Request<{}, AWSError>; - /** - * Deletes a file system, permanently severing access to its contents. Upon return, the file system no longer exists and you can't access any contents of the deleted file system. You can't delete a file system that is in use. That is, if the file system has any mount targets, you must first delete them. For more information, see DescribeMountTargets and DeleteMountTarget. The DeleteFileSystem call returns while the file system state is still deleting. You can check the file system deletion status by calling the DescribeFileSystems operation, which returns a list of file systems in your account. If you pass file system ID or creation token for the deleted file system, the DescribeFileSystems returns a 404 FileSystemNotFound error. This operation requires permissions for the elasticfilesystem:DeleteFileSystem action. - */ - deleteFileSystem(params: EFS.Types.DeleteFileSystemRequest, callback?: (err: AWSError, data: {}) => void): Request<{}, AWSError>; - /** - * Deletes a file system, permanently severing access to its contents. Upon return, the file system no longer exists and you can't access any contents of the deleted file system. You can't delete a file system that is in use. That is, if the file system has any mount targets, you must first delete them. For more information, see DescribeMountTargets and DeleteMountTarget. The DeleteFileSystem call returns while the file system state is still deleting. You can check the file system deletion status by calling the DescribeFileSystems operation, which returns a list of file systems in your account. If you pass file system ID or creation token for the deleted file system, the DescribeFileSystems returns a 404 FileSystemNotFound error. This operation requires permissions for the elasticfilesystem:DeleteFileSystem action. - */ - deleteFileSystem(callback?: (err: AWSError, data: {}) => void): Request<{}, AWSError>; - /** - * Deletes the specified mount target. This operation forcibly breaks any mounts of the file system via the mount target that is being deleted, which might disrupt instances or applications using those mounts. To avoid applications getting cut off abruptly, you might consider unmounting any mounts of the mount target, if feasible. The operation also deletes the associated network interface. Uncommitted writes may be lost, but breaking a mount target using this operation does not corrupt the file system itself. The file system you created remains. You can mount an EC2 instance in your VPC via another mount target. This operation requires permissions for the following action on the file system: elasticfilesystem:DeleteMountTarget The DeleteMountTarget call returns while the mount target state is still deleting. You can check the mount target deletion by calling the DescribeMountTargets operation, which returns a list of mount target descriptions for the given file system. The operation also requires permissions for the following Amazon EC2 action on the mount target's network interface: ec2:DeleteNetworkInterface - */ - deleteMountTarget(params: EFS.Types.DeleteMountTargetRequest, callback?: (err: AWSError, data: {}) => void): Request<{}, AWSError>; - /** - * Deletes the specified mount target. This operation forcibly breaks any mounts of the file system via the mount target that is being deleted, which might disrupt instances or applications using those mounts. To avoid applications getting cut off abruptly, you might consider unmounting any mounts of the mount target, if feasible. The operation also deletes the associated network interface. Uncommitted writes may be lost, but breaking a mount target using this operation does not corrupt the file system itself. The file system you created remains. You can mount an EC2 instance in your VPC via another mount target. This operation requires permissions for the following action on the file system: elasticfilesystem:DeleteMountTarget The DeleteMountTarget call returns while the mount target state is still deleting. You can check the mount target deletion by calling the DescribeMountTargets operation, which returns a list of mount target descriptions for the given file system. The operation also requires permissions for the following Amazon EC2 action on the mount target's network interface: ec2:DeleteNetworkInterface - */ - deleteMountTarget(callback?: (err: AWSError, data: {}) => void): Request<{}, AWSError>; - /** - * Deletes the specified tags from a file system. If the DeleteTags request includes a tag key that does not exist, Amazon EFS ignores it and doesn't cause an error. For more information about tags and related restrictions, see Tag Restrictions in the AWS Billing and Cost Management User Guide. This operation requires permissions for the elasticfilesystem:DeleteTags action. - */ - deleteTags(params: EFS.Types.DeleteTagsRequest, callback?: (err: AWSError, data: {}) => void): Request<{}, AWSError>; - /** - * Deletes the specified tags from a file system. If the DeleteTags request includes a tag key that does not exist, Amazon EFS ignores it and doesn't cause an error. For more information about tags and related restrictions, see Tag Restrictions in the AWS Billing and Cost Management User Guide. This operation requires permissions for the elasticfilesystem:DeleteTags action. - */ - deleteTags(callback?: (err: AWSError, data: {}) => void): Request<{}, AWSError>; - /** - * Returns the description of a specific Amazon EFS file system if either the file system CreationToken or the FileSystemId is provided. Otherwise, it returns descriptions of all file systems owned by the caller's AWS account in the AWS Region of the endpoint that you're calling. When retrieving all file system descriptions, you can optionally specify the MaxItems parameter to limit the number of descriptions in a response. If more file system descriptions remain, Amazon EFS returns a NextMarker, an opaque token, in the response. In this case, you should send a subsequent request with the Marker request parameter set to the value of NextMarker. To retrieve a list of your file system descriptions, this operation is used in an iterative process, where DescribeFileSystems is called first without the Marker and then the operation continues to call it with the Marker parameter set to the value of the NextMarker from the previous response until the response has no NextMarker. The implementation may return fewer than MaxItems file system descriptions while still including a NextMarker value. The order of file systems returned in the response of one DescribeFileSystems call and the order of file systems returned across the responses of a multi-call iteration is unspecified. This operation requires permissions for the elasticfilesystem:DescribeFileSystems action. - */ - describeFileSystems(params: EFS.Types.DescribeFileSystemsRequest, callback?: (err: AWSError, data: EFS.Types.DescribeFileSystemsResponse) => void): Request; - /** - * Returns the description of a specific Amazon EFS file system if either the file system CreationToken or the FileSystemId is provided. Otherwise, it returns descriptions of all file systems owned by the caller's AWS account in the AWS Region of the endpoint that you're calling. When retrieving all file system descriptions, you can optionally specify the MaxItems parameter to limit the number of descriptions in a response. If more file system descriptions remain, Amazon EFS returns a NextMarker, an opaque token, in the response. In this case, you should send a subsequent request with the Marker request parameter set to the value of NextMarker. To retrieve a list of your file system descriptions, this operation is used in an iterative process, where DescribeFileSystems is called first without the Marker and then the operation continues to call it with the Marker parameter set to the value of the NextMarker from the previous response until the response has no NextMarker. The implementation may return fewer than MaxItems file system descriptions while still including a NextMarker value. The order of file systems returned in the response of one DescribeFileSystems call and the order of file systems returned across the responses of a multi-call iteration is unspecified. This operation requires permissions for the elasticfilesystem:DescribeFileSystems action. - */ - describeFileSystems(callback?: (err: AWSError, data: EFS.Types.DescribeFileSystemsResponse) => void): Request; - /** - * Returns the security groups currently in effect for a mount target. This operation requires that the network interface of the mount target has been created and the lifecycle state of the mount target is not deleted. This operation requires permissions for the following actions: elasticfilesystem:DescribeMountTargetSecurityGroups action on the mount target's file system. ec2:DescribeNetworkInterfaceAttribute action on the mount target's network interface. - */ - describeMountTargetSecurityGroups(params: EFS.Types.DescribeMountTargetSecurityGroupsRequest, callback?: (err: AWSError, data: EFS.Types.DescribeMountTargetSecurityGroupsResponse) => void): Request; - /** - * Returns the security groups currently in effect for a mount target. This operation requires that the network interface of the mount target has been created and the lifecycle state of the mount target is not deleted. This operation requires permissions for the following actions: elasticfilesystem:DescribeMountTargetSecurityGroups action on the mount target's file system. ec2:DescribeNetworkInterfaceAttribute action on the mount target's network interface. - */ - describeMountTargetSecurityGroups(callback?: (err: AWSError, data: EFS.Types.DescribeMountTargetSecurityGroupsResponse) => void): Request; - /** - * Returns the descriptions of all the current mount targets, or a specific mount target, for a file system. When requesting all of the current mount targets, the order of mount targets returned in the response is unspecified. This operation requires permissions for the elasticfilesystem:DescribeMountTargets action, on either the file system ID that you specify in FileSystemId, or on the file system of the mount target that you specify in MountTargetId. - */ - describeMountTargets(params: EFS.Types.DescribeMountTargetsRequest, callback?: (err: AWSError, data: EFS.Types.DescribeMountTargetsResponse) => void): Request; - /** - * Returns the descriptions of all the current mount targets, or a specific mount target, for a file system. When requesting all of the current mount targets, the order of mount targets returned in the response is unspecified. This operation requires permissions for the elasticfilesystem:DescribeMountTargets action, on either the file system ID that you specify in FileSystemId, or on the file system of the mount target that you specify in MountTargetId. - */ - describeMountTargets(callback?: (err: AWSError, data: EFS.Types.DescribeMountTargetsResponse) => void): Request; - /** - * Returns the tags associated with a file system. The order of tags returned in the response of one DescribeTags call and the order of tags returned across the responses of a multi-call iteration (when using pagination) is unspecified. This operation requires permissions for the elasticfilesystem:DescribeTags action. - */ - describeTags(params: EFS.Types.DescribeTagsRequest, callback?: (err: AWSError, data: EFS.Types.DescribeTagsResponse) => void): Request; - /** - * Returns the tags associated with a file system. The order of tags returned in the response of one DescribeTags call and the order of tags returned across the responses of a multi-call iteration (when using pagination) is unspecified. This operation requires permissions for the elasticfilesystem:DescribeTags action. - */ - describeTags(callback?: (err: AWSError, data: EFS.Types.DescribeTagsResponse) => void): Request; - /** - * Modifies the set of security groups in effect for a mount target. When you create a mount target, Amazon EFS also creates a new network interface. For more information, see CreateMountTarget. This operation replaces the security groups in effect for the network interface associated with a mount target, with the SecurityGroups provided in the request. This operation requires that the network interface of the mount target has been created and the lifecycle state of the mount target is not deleted. The operation requires permissions for the following actions: elasticfilesystem:ModifyMountTargetSecurityGroups action on the mount target's file system. ec2:ModifyNetworkInterfaceAttribute action on the mount target's network interface. - */ - modifyMountTargetSecurityGroups(params: EFS.Types.ModifyMountTargetSecurityGroupsRequest, callback?: (err: AWSError, data: {}) => void): Request<{}, AWSError>; - /** - * Modifies the set of security groups in effect for a mount target. When you create a mount target, Amazon EFS also creates a new network interface. For more information, see CreateMountTarget. This operation replaces the security groups in effect for the network interface associated with a mount target, with the SecurityGroups provided in the request. This operation requires that the network interface of the mount target has been created and the lifecycle state of the mount target is not deleted. The operation requires permissions for the following actions: elasticfilesystem:ModifyMountTargetSecurityGroups action on the mount target's file system. ec2:ModifyNetworkInterfaceAttribute action on the mount target's network interface. - */ - modifyMountTargetSecurityGroups(callback?: (err: AWSError, data: {}) => void): Request<{}, AWSError>; -} -declare namespace EFS { - export type AwsAccountId = string; - export interface CreateFileSystemRequest { - /** - * String of up to 64 ASCII characters. Amazon EFS uses this to ensure idempotent creation. - */ - CreationToken: CreationToken; - /** - * The PerformanceMode of the file system. We recommend generalPurpose performance mode for most file systems. File systems using the maxIO performance mode can scale to higher levels of aggregate throughput and operations per second with a tradeoff of slightly higher latencies for most file operations. This can't be changed after the file system has been created. - */ - PerformanceMode?: PerformanceMode; - /** - * A boolean value that, if true, creates an encrypted file system. When creating an encrypted file system, you have the option of specifying a CreateFileSystemRequest$KmsKeyId for an existing AWS Key Management Service (AWS KMS) customer master key (CMK). If you don't specify a CMK, then the default CMK for Amazon EFS, /aws/elasticfilesystem, is used to protect the encrypted file system. - */ - Encrypted?: Encrypted; - /** - * The id of the AWS KMS CMK that will be used to protect the encrypted file system. This parameter is only required if you want to use a non-default CMK. If this parameter is not specified, the default CMK for Amazon EFS is used. This id can be in one of the following formats: Key ID - A unique identifier of the key. For example, 1234abcd-12ab-34cd-56ef-1234567890ab. ARN - An Amazon Resource Name for the key. For example, arn:aws:kms:us-west-2:111122223333:key/1234abcd-12ab-34cd-56ef-1234567890ab. Key alias - A previously created display name for a key. For example, alias/projectKey1. Key alias ARN - An Amazon Resource Name for a key alias. For example, arn:aws:kms:us-west-2:444455556666:alias/projectKey1. Note that if the KmsKeyId is specified, the CreateFileSystemRequest$Encrypted parameter must be set to true. - */ - KmsKeyId?: KmsKeyId; - } - export interface CreateMountTargetRequest { - /** - * ID of the file system for which to create the mount target. - */ - FileSystemId: FileSystemId; - /** - * ID of the subnet to add the mount target in. - */ - SubnetId: SubnetId; - /** - * Valid IPv4 address within the address range of the specified subnet. - */ - IpAddress?: IpAddress; - /** - * Up to five VPC security group IDs, of the form sg-xxxxxxxx. These must be for the same VPC as subnet specified. - */ - SecurityGroups?: SecurityGroups; - } - export interface CreateTagsRequest { - /** - * ID of the file system whose tags you want to modify (String). This operation modifies the tags only, not the file system. - */ - FileSystemId: FileSystemId; - /** - * Array of Tag objects to add. Each Tag object is a key-value pair. - */ - Tags: Tags; - } - export type CreationToken = string; - export interface DeleteFileSystemRequest { - /** - * ID of the file system you want to delete. - */ - FileSystemId: FileSystemId; - } - export interface DeleteMountTargetRequest { - /** - * ID of the mount target to delete (String). - */ - MountTargetId: MountTargetId; - } - export interface DeleteTagsRequest { - /** - * ID of the file system whose tags you want to delete (String). - */ - FileSystemId: FileSystemId; - /** - * List of tag keys to delete. - */ - TagKeys: TagKeys; - } - export interface DescribeFileSystemsRequest { - /** - * (Optional) Specifies the maximum number of file systems to return in the response (integer). This parameter value must be greater than 0. The number of items that Amazon EFS returns is the minimum of the MaxItems parameter specified in the request and the service's internal maximum number of items per page. - */ - MaxItems?: MaxItems; - /** - * (Optional) Opaque pagination token returned from a previous DescribeFileSystems operation (String). If present, specifies to continue the list from where the returning call had left off. - */ - Marker?: Marker; - /** - * (Optional) Restricts the list to the file system with this creation token (String). You specify a creation token when you create an Amazon EFS file system. - */ - CreationToken?: CreationToken; - /** - * (Optional) ID of the file system whose description you want to retrieve (String). - */ - FileSystemId?: FileSystemId; - } - export interface DescribeFileSystemsResponse { - /** - * Present if provided by caller in the request (String). - */ - Marker?: Marker; - /** - * Array of file system descriptions. - */ - FileSystems?: FileSystemDescriptions; - /** - * Present if there are more file systems than returned in the response (String). You can use the NextMarker in the subsequent request to fetch the descriptions. - */ - NextMarker?: Marker; - } - export interface DescribeMountTargetSecurityGroupsRequest { - /** - * ID of the mount target whose security groups you want to retrieve. - */ - MountTargetId: MountTargetId; - } - export interface DescribeMountTargetSecurityGroupsResponse { - /** - * Array of security groups. - */ - SecurityGroups: SecurityGroups; - } - export interface DescribeMountTargetsRequest { - /** - * (Optional) Maximum number of mount targets to return in the response. It must be an integer with a value greater than zero. - */ - MaxItems?: MaxItems; - /** - * (Optional) Opaque pagination token returned from a previous DescribeMountTargets operation (String). If present, it specifies to continue the list from where the previous returning call left off. - */ - Marker?: Marker; - /** - * (Optional) ID of the file system whose mount targets you want to list (String). It must be included in your request if MountTargetId is not included. - */ - FileSystemId?: FileSystemId; - /** - * (Optional) ID of the mount target that you want to have described (String). It must be included in your request if FileSystemId is not included. - */ - MountTargetId?: MountTargetId; - } - export interface DescribeMountTargetsResponse { - /** - * If the request included the Marker, the response returns that value in this field. - */ - Marker?: Marker; - /** - * Returns the file system's mount targets as an array of MountTargetDescription objects. - */ - MountTargets?: MountTargetDescriptions; - /** - * If a value is present, there are more mount targets to return. In a subsequent request, you can provide Marker in your request with this value to retrieve the next set of mount targets. - */ - NextMarker?: Marker; - } - export interface DescribeTagsRequest { - /** - * (Optional) Maximum number of file system tags to return in the response. It must be an integer with a value greater than zero. - */ - MaxItems?: MaxItems; - /** - * (Optional) Opaque pagination token returned from a previous DescribeTags operation (String). If present, it specifies to continue the list from where the previous call left off. - */ - Marker?: Marker; - /** - * ID of the file system whose tag set you want to retrieve. - */ - FileSystemId: FileSystemId; - } - export interface DescribeTagsResponse { - /** - * If the request included a Marker, the response returns that value in this field. - */ - Marker?: Marker; - /** - * Returns tags associated with the file system as an array of Tag objects. - */ - Tags: Tags; - /** - * If a value is present, there are more tags to return. In a subsequent request, you can provide the value of NextMarker as the value of the Marker parameter in your next request to retrieve the next set of tags. - */ - NextMarker?: Marker; - } - export type Encrypted = boolean; - export type ErrorCode = string; - export type ErrorMessage = string; - export interface FileSystemDescription { - /** - * AWS account that created the file system. If the file system was created by an IAM user, the parent account to which the user belongs is the owner. - */ - OwnerId: AwsAccountId; - /** - * Opaque string specified in the request. - */ - CreationToken: CreationToken; - /** - * ID of the file system, assigned by Amazon EFS. - */ - FileSystemId: FileSystemId; - /** - * Time that the file system was created, in seconds (since 1970-01-01T00:00:00Z). - */ - CreationTime: Timestamp; - /** - * Lifecycle phase of the file system. - */ - LifeCycleState: LifeCycleState; - /** - * You can add tags to a file system, including a Name tag. For more information, see CreateTags. If the file system has a Name tag, Amazon EFS returns the value in this field. - */ - Name?: TagValue; - /** - * Current number of mount targets that the file system has. For more information, see CreateMountTarget. - */ - NumberOfMountTargets: MountTargetCount; - /** - * Latest known metered size (in bytes) of data stored in the file system, in bytes, in its Value field, and the time at which that size was determined in its Timestamp field. The Timestamp value is the integer number of seconds since 1970-01-01T00:00:00Z. Note that the value does not represent the size of a consistent snapshot of the file system, but it is eventually consistent when there are no writes to the file system. That is, the value will represent actual size only if the file system is not modified for a period longer than a couple of hours. Otherwise, the value is not the exact size the file system was at any instant in time. - */ - SizeInBytes: FileSystemSize; - /** - * The PerformanceMode of the file system. - */ - PerformanceMode: PerformanceMode; - /** - * A boolean value that, if true, indicates that the file system is encrypted. - */ - Encrypted?: Encrypted; - /** - * The id of an AWS Key Management Service (AWS KMS) customer master key (CMK) that was used to protect the encrypted file system. - */ - KmsKeyId?: KmsKeyId; - } - export type FileSystemDescriptions = FileSystemDescription[]; - export type FileSystemId = string; - export interface FileSystemSize { - /** - * Latest known metered size (in bytes) of data stored in the file system. - */ - Value: FileSystemSizeValue; - /** - * Time at which the size of data, returned in the Value field, was determined. The value is the integer number of seconds since 1970-01-01T00:00:00Z. - */ - Timestamp?: Timestamp; - } - export type FileSystemSizeValue = number; - export type IpAddress = string; - export type KmsKeyId = string; - export type LifeCycleState = "creating"|"available"|"deleting"|"deleted"|string; - export type Marker = string; - export type MaxItems = number; - export interface ModifyMountTargetSecurityGroupsRequest { - /** - * ID of the mount target whose security groups you want to modify. - */ - MountTargetId: MountTargetId; - /** - * Array of up to five VPC security group IDs. - */ - SecurityGroups?: SecurityGroups; - } - export type MountTargetCount = number; - export interface MountTargetDescription { - /** - * AWS account ID that owns the resource. - */ - OwnerId?: AwsAccountId; - /** - * System-assigned mount target ID. - */ - MountTargetId: MountTargetId; - /** - * ID of the file system for which the mount target is intended. - */ - FileSystemId: FileSystemId; - /** - * ID of the mount target's subnet. - */ - SubnetId: SubnetId; - /** - * Lifecycle state of the mount target. - */ - LifeCycleState: LifeCycleState; - /** - * Address at which the file system may be mounted via the mount target. - */ - IpAddress?: IpAddress; - /** - * ID of the network interface that Amazon EFS created when it created the mount target. - */ - NetworkInterfaceId?: NetworkInterfaceId; - } - export type MountTargetDescriptions = MountTargetDescription[]; - export type MountTargetId = string; - export type NetworkInterfaceId = string; - export type PerformanceMode = "generalPurpose"|"maxIO"|string; - export type SecurityGroup = string; - export type SecurityGroups = SecurityGroup[]; - export type SubnetId = string; - export interface Tag { - /** - * Tag key (String). The key can't start with aws:. - */ - Key: TagKey; - /** - * Value of the tag key. - */ - Value: TagValue; - } - export type TagKey = string; - export type TagKeys = TagKey[]; - export type TagValue = string; - export type Tags = Tag[]; - export type Timestamp = Date; - /** - * A string in YYYY-MM-DD format that represents the latest possible API version that can be used in this service. Specify 'latest' to use the latest possible version. - */ - export type apiVersion = "2015-02-01"|"latest"|string; - export interface ClientApiVersions { - /** - * A string in YYYY-MM-DD format that represents the latest possible API version that can be used in this service. Specify 'latest' to use the latest possible version. - */ - apiVersion?: apiVersion; - } - export type ClientConfiguration = ServiceConfigurationOptions & ClientApiVersions; - /** - * Contains interfaces for use with the EFS client. - */ - export import Types = EFS; -} -export = EFS; diff --git a/workshops/monte-carlo-on-ec2-spot-fleet/src/web/node_modules/aws-sdk/clients/efs.js b/workshops/monte-carlo-on-ec2-spot-fleet/src/web/node_modules/aws-sdk/clients/efs.js deleted file mode 100644 index 19b4f2ce..00000000 --- a/workshops/monte-carlo-on-ec2-spot-fleet/src/web/node_modules/aws-sdk/clients/efs.js +++ /dev/null @@ -1,18 +0,0 @@ -require('../lib/node_loader'); -var AWS = require('../lib/core'); -var Service = AWS.Service; -var apiLoader = AWS.apiLoader; - -apiLoader.services['efs'] = {}; -AWS.EFS = Service.defineService('efs', ['2015-02-01']); -Object.defineProperty(apiLoader.services['efs'], '2015-02-01', { - get: function get() { - var model = require('../apis/elasticfilesystem-2015-02-01.min.json'); - model.paginators = require('../apis/elasticfilesystem-2015-02-01.paginators.json').pagination; - return model; - }, - enumerable: true, - configurable: true -}); - -module.exports = AWS.EFS; diff --git a/workshops/monte-carlo-on-ec2-spot-fleet/src/web/node_modules/aws-sdk/clients/elasticache.d.ts b/workshops/monte-carlo-on-ec2-spot-fleet/src/web/node_modules/aws-sdk/clients/elasticache.d.ts deleted file mode 100644 index 10393bc0..00000000 --- a/workshops/monte-carlo-on-ec2-spot-fleet/src/web/node_modules/aws-sdk/clients/elasticache.d.ts +++ /dev/null @@ -1,2239 +0,0 @@ -import {Request} from '../lib/request'; -import {Response} from '../lib/response'; -import {AWSError} from '../lib/error'; -import {Service} from '../lib/service'; -import {ServiceConfigurationOptions} from '../lib/service'; -import {ConfigBase as Config} from '../lib/config'; -interface Blob {} -declare class ElastiCache extends Service { - /** - * Constructs a service object. This object has one method for each API operation. - */ - constructor(options?: ElastiCache.Types.ClientConfiguration) - config: Config & ElastiCache.Types.ClientConfiguration; - /** - * Adds up to 50 cost allocation tags to the named resource. A cost allocation tag is a key-value pair where the key and value are case-sensitive. You can use cost allocation tags to categorize and track your AWS costs. When you apply tags to your ElastiCache resources, AWS generates a cost allocation report as a comma-separated value (CSV) file with your usage and costs aggregated by your tags. You can apply tags that represent business categories (such as cost centers, application names, or owners) to organize your costs across multiple services. For more information, see Using Cost Allocation Tags in Amazon ElastiCache in the ElastiCache User Guide. - */ - addTagsToResource(params: ElastiCache.Types.AddTagsToResourceMessage, callback?: (err: AWSError, data: ElastiCache.Types.TagListMessage) => void): Request; - /** - * Adds up to 50 cost allocation tags to the named resource. A cost allocation tag is a key-value pair where the key and value are case-sensitive. You can use cost allocation tags to categorize and track your AWS costs. When you apply tags to your ElastiCache resources, AWS generates a cost allocation report as a comma-separated value (CSV) file with your usage and costs aggregated by your tags. You can apply tags that represent business categories (such as cost centers, application names, or owners) to organize your costs across multiple services. For more information, see Using Cost Allocation Tags in Amazon ElastiCache in the ElastiCache User Guide. - */ - addTagsToResource(callback?: (err: AWSError, data: ElastiCache.Types.TagListMessage) => void): Request; - /** - * Allows network ingress to a cache security group. Applications using ElastiCache must be running on Amazon EC2, and Amazon EC2 security groups are used as the authorization mechanism. You cannot authorize ingress from an Amazon EC2 security group in one region to an ElastiCache cluster in another region. - */ - authorizeCacheSecurityGroupIngress(params: ElastiCache.Types.AuthorizeCacheSecurityGroupIngressMessage, callback?: (err: AWSError, data: ElastiCache.Types.AuthorizeCacheSecurityGroupIngressResult) => void): Request; - /** - * Allows network ingress to a cache security group. Applications using ElastiCache must be running on Amazon EC2, and Amazon EC2 security groups are used as the authorization mechanism. You cannot authorize ingress from an Amazon EC2 security group in one region to an ElastiCache cluster in another region. - */ - authorizeCacheSecurityGroupIngress(callback?: (err: AWSError, data: ElastiCache.Types.AuthorizeCacheSecurityGroupIngressResult) => void): Request; - /** - * Makes a copy of an existing snapshot. This operation is valid for Redis only. Users or groups that have permissions to use the CopySnapshot operation can create their own Amazon S3 buckets and copy snapshots to it. To control access to your snapshots, use an IAM policy to control who has the ability to use the CopySnapshot operation. For more information about using IAM to control the use of ElastiCache operations, see Exporting Snapshots and Authentication & Access Control. You could receive the following error messages. Error Messages Error Message: The S3 bucket %s is outside of the region. Solution: Create an Amazon S3 bucket in the same region as your snapshot. For more information, see Step 1: Create an Amazon S3 Bucket in the ElastiCache User Guide. Error Message: The S3 bucket %s does not exist. Solution: Create an Amazon S3 bucket in the same region as your snapshot. For more information, see Step 1: Create an Amazon S3 Bucket in the ElastiCache User Guide. Error Message: The S3 bucket %s is not owned by the authenticated user. Solution: Create an Amazon S3 bucket in the same region as your snapshot. For more information, see Step 1: Create an Amazon S3 Bucket in the ElastiCache User Guide. Error Message: The authenticated user does not have sufficient permissions to perform the desired activity. Solution: Contact your system administrator to get the needed permissions. Error Message: The S3 bucket %s already contains an object with key %s. Solution: Give the TargetSnapshotName a new and unique value. If exporting a snapshot, you could alternatively create a new Amazon S3 bucket and use this same value for TargetSnapshotName. Error Message: ElastiCache has not been granted READ permissions %s on the S3 Bucket. Solution: Add List and Read permissions on the bucket. For more information, see Step 2: Grant ElastiCache Access to Your Amazon S3 Bucket in the ElastiCache User Guide. Error Message: ElastiCache has not been granted WRITE permissions %s on the S3 Bucket. Solution: Add Upload/Delete permissions on the bucket. For more information, see Step 2: Grant ElastiCache Access to Your Amazon S3 Bucket in the ElastiCache User Guide. Error Message: ElastiCache has not been granted READ_ACP permissions %s on the S3 Bucket. Solution: Add View Permissions on the bucket. For more information, see Step 2: Grant ElastiCache Access to Your Amazon S3 Bucket in the ElastiCache User Guide. - */ - copySnapshot(params: ElastiCache.Types.CopySnapshotMessage, callback?: (err: AWSError, data: ElastiCache.Types.CopySnapshotResult) => void): Request; - /** - * Makes a copy of an existing snapshot. This operation is valid for Redis only. Users or groups that have permissions to use the CopySnapshot operation can create their own Amazon S3 buckets and copy snapshots to it. To control access to your snapshots, use an IAM policy to control who has the ability to use the CopySnapshot operation. For more information about using IAM to control the use of ElastiCache operations, see Exporting Snapshots and Authentication & Access Control. You could receive the following error messages. Error Messages Error Message: The S3 bucket %s is outside of the region. Solution: Create an Amazon S3 bucket in the same region as your snapshot. For more information, see Step 1: Create an Amazon S3 Bucket in the ElastiCache User Guide. Error Message: The S3 bucket %s does not exist. Solution: Create an Amazon S3 bucket in the same region as your snapshot. For more information, see Step 1: Create an Amazon S3 Bucket in the ElastiCache User Guide. Error Message: The S3 bucket %s is not owned by the authenticated user. Solution: Create an Amazon S3 bucket in the same region as your snapshot. For more information, see Step 1: Create an Amazon S3 Bucket in the ElastiCache User Guide. Error Message: The authenticated user does not have sufficient permissions to perform the desired activity. Solution: Contact your system administrator to get the needed permissions. Error Message: The S3 bucket %s already contains an object with key %s. Solution: Give the TargetSnapshotName a new and unique value. If exporting a snapshot, you could alternatively create a new Amazon S3 bucket and use this same value for TargetSnapshotName. Error Message: ElastiCache has not been granted READ permissions %s on the S3 Bucket. Solution: Add List and Read permissions on the bucket. For more information, see Step 2: Grant ElastiCache Access to Your Amazon S3 Bucket in the ElastiCache User Guide. Error Message: ElastiCache has not been granted WRITE permissions %s on the S3 Bucket. Solution: Add Upload/Delete permissions on the bucket. For more information, see Step 2: Grant ElastiCache Access to Your Amazon S3 Bucket in the ElastiCache User Guide. Error Message: ElastiCache has not been granted READ_ACP permissions %s on the S3 Bucket. Solution: Add View Permissions on the bucket. For more information, see Step 2: Grant ElastiCache Access to Your Amazon S3 Bucket in the ElastiCache User Guide. - */ - copySnapshot(callback?: (err: AWSError, data: ElastiCache.Types.CopySnapshotResult) => void): Request; - /** - * Creates a cache cluster. All nodes in the cache cluster run the same protocol-compliant cache engine software, either Memcached or Redis. Due to current limitations on Redis (cluster mode disabled), this operation or parameter is not supported on Redis (cluster mode enabled) replication groups. - */ - createCacheCluster(params: ElastiCache.Types.CreateCacheClusterMessage, callback?: (err: AWSError, data: ElastiCache.Types.CreateCacheClusterResult) => void): Request; - /** - * Creates a cache cluster. All nodes in the cache cluster run the same protocol-compliant cache engine software, either Memcached or Redis. Due to current limitations on Redis (cluster mode disabled), this operation or parameter is not supported on Redis (cluster mode enabled) replication groups. - */ - createCacheCluster(callback?: (err: AWSError, data: ElastiCache.Types.CreateCacheClusterResult) => void): Request; - /** - * Creates a new Amazon ElastiCache cache parameter group. An ElastiCache cache parameter group is a collection of parameters and their values that are applied to all of the nodes in any cache cluster or replication group using the CacheParameterGroup. A newly created CacheParameterGroup is an exact duplicate of the default parameter group for the CacheParameterGroupFamily. To customize the newly created CacheParameterGroup you can change the values of specific parameters. For more information, see: ModifyCacheParameterGroup in the ElastiCache API Reference. Parameters and Parameter Groups in the ElastiCache User Guide. - */ - createCacheParameterGroup(params: ElastiCache.Types.CreateCacheParameterGroupMessage, callback?: (err: AWSError, data: ElastiCache.Types.CreateCacheParameterGroupResult) => void): Request; - /** - * Creates a new Amazon ElastiCache cache parameter group. An ElastiCache cache parameter group is a collection of parameters and their values that are applied to all of the nodes in any cache cluster or replication group using the CacheParameterGroup. A newly created CacheParameterGroup is an exact duplicate of the default parameter group for the CacheParameterGroupFamily. To customize the newly created CacheParameterGroup you can change the values of specific parameters. For more information, see: ModifyCacheParameterGroup in the ElastiCache API Reference. Parameters and Parameter Groups in the ElastiCache User Guide. - */ - createCacheParameterGroup(callback?: (err: AWSError, data: ElastiCache.Types.CreateCacheParameterGroupResult) => void): Request; - /** - * Creates a new cache security group. Use a cache security group to control access to one or more cache clusters. Cache security groups are only used when you are creating a cache cluster outside of an Amazon Virtual Private Cloud (Amazon VPC). If you are creating a cache cluster inside of a VPC, use a cache subnet group instead. For more information, see CreateCacheSubnetGroup. - */ - createCacheSecurityGroup(params: ElastiCache.Types.CreateCacheSecurityGroupMessage, callback?: (err: AWSError, data: ElastiCache.Types.CreateCacheSecurityGroupResult) => void): Request; - /** - * Creates a new cache security group. Use a cache security group to control access to one or more cache clusters. Cache security groups are only used when you are creating a cache cluster outside of an Amazon Virtual Private Cloud (Amazon VPC). If you are creating a cache cluster inside of a VPC, use a cache subnet group instead. For more information, see CreateCacheSubnetGroup. - */ - createCacheSecurityGroup(callback?: (err: AWSError, data: ElastiCache.Types.CreateCacheSecurityGroupResult) => void): Request; - /** - * Creates a new cache subnet group. Use this parameter only when you are creating a cluster in an Amazon Virtual Private Cloud (Amazon VPC). - */ - createCacheSubnetGroup(params: ElastiCache.Types.CreateCacheSubnetGroupMessage, callback?: (err: AWSError, data: ElastiCache.Types.CreateCacheSubnetGroupResult) => void): Request; - /** - * Creates a new cache subnet group. Use this parameter only when you are creating a cluster in an Amazon Virtual Private Cloud (Amazon VPC). - */ - createCacheSubnetGroup(callback?: (err: AWSError, data: ElastiCache.Types.CreateCacheSubnetGroupResult) => void): Request; - /** - * Creates a Redis (cluster mode disabled) or a Redis (cluster mode enabled) replication group. A Redis (cluster mode disabled) replication group is a collection of cache clusters, where one of the cache clusters is a read/write primary and the others are read-only replicas. Writes to the primary are asynchronously propagated to the replicas. A Redis (cluster mode enabled) replication group is a collection of 1 to 15 node groups (shards). Each node group (shard) has one read/write primary node and up to 5 read-only replica nodes. Writes to the primary are asynchronously propagated to the replicas. Redis (cluster mode enabled) replication groups partition the data across node groups (shards). When a Redis (cluster mode disabled) replication group has been successfully created, you can add one or more read replicas to it, up to a total of 5 read replicas. You cannot alter a Redis (cluster mode enabled) replication group after it has been created. However, if you need to increase or decrease the number of node groups (console: shards), you can avail yourself of ElastiCache for Redis' enhanced backup and restore. For more information, see Restoring From a Backup with Cluster Resizing in the ElastiCache User Guide. This operation is valid for Redis only. - */ - createReplicationGroup(params: ElastiCache.Types.CreateReplicationGroupMessage, callback?: (err: AWSError, data: ElastiCache.Types.CreateReplicationGroupResult) => void): Request; - /** - * Creates a Redis (cluster mode disabled) or a Redis (cluster mode enabled) replication group. A Redis (cluster mode disabled) replication group is a collection of cache clusters, where one of the cache clusters is a read/write primary and the others are read-only replicas. Writes to the primary are asynchronously propagated to the replicas. A Redis (cluster mode enabled) replication group is a collection of 1 to 15 node groups (shards). Each node group (shard) has one read/write primary node and up to 5 read-only replica nodes. Writes to the primary are asynchronously propagated to the replicas. Redis (cluster mode enabled) replication groups partition the data across node groups (shards). When a Redis (cluster mode disabled) replication group has been successfully created, you can add one or more read replicas to it, up to a total of 5 read replicas. You cannot alter a Redis (cluster mode enabled) replication group after it has been created. However, if you need to increase or decrease the number of node groups (console: shards), you can avail yourself of ElastiCache for Redis' enhanced backup and restore. For more information, see Restoring From a Backup with Cluster Resizing in the ElastiCache User Guide. This operation is valid for Redis only. - */ - createReplicationGroup(callback?: (err: AWSError, data: ElastiCache.Types.CreateReplicationGroupResult) => void): Request; - /** - * Creates a copy of an entire cache cluster or replication group at a specific moment in time. This operation is valid for Redis only. - */ - createSnapshot(params: ElastiCache.Types.CreateSnapshotMessage, callback?: (err: AWSError, data: ElastiCache.Types.CreateSnapshotResult) => void): Request; - /** - * Creates a copy of an entire cache cluster or replication group at a specific moment in time. This operation is valid for Redis only. - */ - createSnapshot(callback?: (err: AWSError, data: ElastiCache.Types.CreateSnapshotResult) => void): Request; - /** - * Deletes a previously provisioned cache cluster. DeleteCacheCluster deletes all associated cache nodes, node endpoints and the cache cluster itself. When you receive a successful response from this operation, Amazon ElastiCache immediately begins deleting the cache cluster; you cannot cancel or revert this operation. This operation cannot be used to delete a cache cluster that is the last read replica of a replication group or node group (shard) that has Multi-AZ mode enabled or a cache cluster from a Redis (cluster mode enabled) replication group. Due to current limitations on Redis (cluster mode disabled), this operation or parameter is not supported on Redis (cluster mode enabled) replication groups. - */ - deleteCacheCluster(params: ElastiCache.Types.DeleteCacheClusterMessage, callback?: (err: AWSError, data: ElastiCache.Types.DeleteCacheClusterResult) => void): Request; - /** - * Deletes a previously provisioned cache cluster. DeleteCacheCluster deletes all associated cache nodes, node endpoints and the cache cluster itself. When you receive a successful response from this operation, Amazon ElastiCache immediately begins deleting the cache cluster; you cannot cancel or revert this operation. This operation cannot be used to delete a cache cluster that is the last read replica of a replication group or node group (shard) that has Multi-AZ mode enabled or a cache cluster from a Redis (cluster mode enabled) replication group. Due to current limitations on Redis (cluster mode disabled), this operation or parameter is not supported on Redis (cluster mode enabled) replication groups. - */ - deleteCacheCluster(callback?: (err: AWSError, data: ElastiCache.Types.DeleteCacheClusterResult) => void): Request; - /** - * Deletes the specified cache parameter group. You cannot delete a cache parameter group if it is associated with any cache clusters. - */ - deleteCacheParameterGroup(params: ElastiCache.Types.DeleteCacheParameterGroupMessage, callback?: (err: AWSError, data: {}) => void): Request<{}, AWSError>; - /** - * Deletes the specified cache parameter group. You cannot delete a cache parameter group if it is associated with any cache clusters. - */ - deleteCacheParameterGroup(callback?: (err: AWSError, data: {}) => void): Request<{}, AWSError>; - /** - * Deletes a cache security group. You cannot delete a cache security group if it is associated with any cache clusters. - */ - deleteCacheSecurityGroup(params: ElastiCache.Types.DeleteCacheSecurityGroupMessage, callback?: (err: AWSError, data: {}) => void): Request<{}, AWSError>; - /** - * Deletes a cache security group. You cannot delete a cache security group if it is associated with any cache clusters. - */ - deleteCacheSecurityGroup(callback?: (err: AWSError, data: {}) => void): Request<{}, AWSError>; - /** - * Deletes a cache subnet group. You cannot delete a cache subnet group if it is associated with any cache clusters. - */ - deleteCacheSubnetGroup(params: ElastiCache.Types.DeleteCacheSubnetGroupMessage, callback?: (err: AWSError, data: {}) => void): Request<{}, AWSError>; - /** - * Deletes a cache subnet group. You cannot delete a cache subnet group if it is associated with any cache clusters. - */ - deleteCacheSubnetGroup(callback?: (err: AWSError, data: {}) => void): Request<{}, AWSError>; - /** - * Deletes an existing replication group. By default, this operation deletes the entire replication group, including the primary/primaries and all of the read replicas. If the replication group has only one primary, you can optionally delete only the read replicas, while retaining the primary by setting RetainPrimaryCluster=true. When you receive a successful response from this operation, Amazon ElastiCache immediately begins deleting the selected resources; you cannot cancel or revert this operation. This operation is valid for Redis only. - */ - deleteReplicationGroup(params: ElastiCache.Types.DeleteReplicationGroupMessage, callback?: (err: AWSError, data: ElastiCache.Types.DeleteReplicationGroupResult) => void): Request; - /** - * Deletes an existing replication group. By default, this operation deletes the entire replication group, including the primary/primaries and all of the read replicas. If the replication group has only one primary, you can optionally delete only the read replicas, while retaining the primary by setting RetainPrimaryCluster=true. When you receive a successful response from this operation, Amazon ElastiCache immediately begins deleting the selected resources; you cannot cancel or revert this operation. This operation is valid for Redis only. - */ - deleteReplicationGroup(callback?: (err: AWSError, data: ElastiCache.Types.DeleteReplicationGroupResult) => void): Request; - /** - * Deletes an existing snapshot. When you receive a successful response from this operation, ElastiCache immediately begins deleting the snapshot; you cannot cancel or revert this operation. This operation is valid for Redis only. - */ - deleteSnapshot(params: ElastiCache.Types.DeleteSnapshotMessage, callback?: (err: AWSError, data: ElastiCache.Types.DeleteSnapshotResult) => void): Request; - /** - * Deletes an existing snapshot. When you receive a successful response from this operation, ElastiCache immediately begins deleting the snapshot; you cannot cancel or revert this operation. This operation is valid for Redis only. - */ - deleteSnapshot(callback?: (err: AWSError, data: ElastiCache.Types.DeleteSnapshotResult) => void): Request; - /** - * Returns information about all provisioned cache clusters if no cache cluster identifier is specified, or about a specific cache cluster if a cache cluster identifier is supplied. By default, abbreviated information about the cache clusters is returned. You can use the optional ShowCacheNodeInfo flag to retrieve detailed information about the cache nodes associated with the cache clusters. These details include the DNS address and port for the cache node endpoint. If the cluster is in the creating state, only cluster-level information is displayed until all of the nodes are successfully provisioned. If the cluster is in the deleting state, only cluster-level information is displayed. If cache nodes are currently being added to the cache cluster, node endpoint information and creation time for the additional nodes are not displayed until they are completely provisioned. When the cache cluster state is available, the cluster is ready for use. If cache nodes are currently being removed from the cache cluster, no endpoint information for the removed nodes is displayed. - */ - describeCacheClusters(params: ElastiCache.Types.DescribeCacheClustersMessage, callback?: (err: AWSError, data: ElastiCache.Types.CacheClusterMessage) => void): Request; - /** - * Returns information about all provisioned cache clusters if no cache cluster identifier is specified, or about a specific cache cluster if a cache cluster identifier is supplied. By default, abbreviated information about the cache clusters is returned. You can use the optional ShowCacheNodeInfo flag to retrieve detailed information about the cache nodes associated with the cache clusters. These details include the DNS address and port for the cache node endpoint. If the cluster is in the creating state, only cluster-level information is displayed until all of the nodes are successfully provisioned. If the cluster is in the deleting state, only cluster-level information is displayed. If cache nodes are currently being added to the cache cluster, node endpoint information and creation time for the additional nodes are not displayed until they are completely provisioned. When the cache cluster state is available, the cluster is ready for use. If cache nodes are currently being removed from the cache cluster, no endpoint information for the removed nodes is displayed. - */ - describeCacheClusters(callback?: (err: AWSError, data: ElastiCache.Types.CacheClusterMessage) => void): Request; - /** - * Returns a list of the available cache engines and their versions. - */ - describeCacheEngineVersions(params: ElastiCache.Types.DescribeCacheEngineVersionsMessage, callback?: (err: AWSError, data: ElastiCache.Types.CacheEngineVersionMessage) => void): Request; - /** - * Returns a list of the available cache engines and their versions. - */ - describeCacheEngineVersions(callback?: (err: AWSError, data: ElastiCache.Types.CacheEngineVersionMessage) => void): Request; - /** - * Returns a list of cache parameter group descriptions. If a cache parameter group name is specified, the list contains only the descriptions for that group. - */ - describeCacheParameterGroups(params: ElastiCache.Types.DescribeCacheParameterGroupsMessage, callback?: (err: AWSError, data: ElastiCache.Types.CacheParameterGroupsMessage) => void): Request; - /** - * Returns a list of cache parameter group descriptions. If a cache parameter group name is specified, the list contains only the descriptions for that group. - */ - describeCacheParameterGroups(callback?: (err: AWSError, data: ElastiCache.Types.CacheParameterGroupsMessage) => void): Request; - /** - * Returns the detailed parameter list for a particular cache parameter group. - */ - describeCacheParameters(params: ElastiCache.Types.DescribeCacheParametersMessage, callback?: (err: AWSError, data: ElastiCache.Types.CacheParameterGroupDetails) => void): Request; - /** - * Returns the detailed parameter list for a particular cache parameter group. - */ - describeCacheParameters(callback?: (err: AWSError, data: ElastiCache.Types.CacheParameterGroupDetails) => void): Request; - /** - * Returns a list of cache security group descriptions. If a cache security group name is specified, the list contains only the description of that group. - */ - describeCacheSecurityGroups(params: ElastiCache.Types.DescribeCacheSecurityGroupsMessage, callback?: (err: AWSError, data: ElastiCache.Types.CacheSecurityGroupMessage) => void): Request; - /** - * Returns a list of cache security group descriptions. If a cache security group name is specified, the list contains only the description of that group. - */ - describeCacheSecurityGroups(callback?: (err: AWSError, data: ElastiCache.Types.CacheSecurityGroupMessage) => void): Request; - /** - * Returns a list of cache subnet group descriptions. If a subnet group name is specified, the list contains only the description of that group. - */ - describeCacheSubnetGroups(params: ElastiCache.Types.DescribeCacheSubnetGroupsMessage, callback?: (err: AWSError, data: ElastiCache.Types.CacheSubnetGroupMessage) => void): Request; - /** - * Returns a list of cache subnet group descriptions. If a subnet group name is specified, the list contains only the description of that group. - */ - describeCacheSubnetGroups(callback?: (err: AWSError, data: ElastiCache.Types.CacheSubnetGroupMessage) => void): Request; - /** - * Returns the default engine and system parameter information for the specified cache engine. - */ - describeEngineDefaultParameters(params: ElastiCache.Types.DescribeEngineDefaultParametersMessage, callback?: (err: AWSError, data: ElastiCache.Types.DescribeEngineDefaultParametersResult) => void): Request; - /** - * Returns the default engine and system parameter information for the specified cache engine. - */ - describeEngineDefaultParameters(callback?: (err: AWSError, data: ElastiCache.Types.DescribeEngineDefaultParametersResult) => void): Request; - /** - * Returns events related to cache clusters, cache security groups, and cache parameter groups. You can obtain events specific to a particular cache cluster, cache security group, or cache parameter group by providing the name as a parameter. By default, only the events occurring within the last hour are returned; however, you can retrieve up to 14 days' worth of events if necessary. - */ - describeEvents(params: ElastiCache.Types.DescribeEventsMessage, callback?: (err: AWSError, data: ElastiCache.Types.EventsMessage) => void): Request; - /** - * Returns events related to cache clusters, cache security groups, and cache parameter groups. You can obtain events specific to a particular cache cluster, cache security group, or cache parameter group by providing the name as a parameter. By default, only the events occurring within the last hour are returned; however, you can retrieve up to 14 days' worth of events if necessary. - */ - describeEvents(callback?: (err: AWSError, data: ElastiCache.Types.EventsMessage) => void): Request; - /** - * Returns information about a particular replication group. If no identifier is specified, DescribeReplicationGroups returns information about all replication groups. This operation is valid for Redis only. - */ - describeReplicationGroups(params: ElastiCache.Types.DescribeReplicationGroupsMessage, callback?: (err: AWSError, data: ElastiCache.Types.ReplicationGroupMessage) => void): Request; - /** - * Returns information about a particular replication group. If no identifier is specified, DescribeReplicationGroups returns information about all replication groups. This operation is valid for Redis only. - */ - describeReplicationGroups(callback?: (err: AWSError, data: ElastiCache.Types.ReplicationGroupMessage) => void): Request; - /** - * Returns information about reserved cache nodes for this account, or about a specified reserved cache node. - */ - describeReservedCacheNodes(params: ElastiCache.Types.DescribeReservedCacheNodesMessage, callback?: (err: AWSError, data: ElastiCache.Types.ReservedCacheNodeMessage) => void): Request; - /** - * Returns information about reserved cache nodes for this account, or about a specified reserved cache node. - */ - describeReservedCacheNodes(callback?: (err: AWSError, data: ElastiCache.Types.ReservedCacheNodeMessage) => void): Request; - /** - * Lists available reserved cache node offerings. - */ - describeReservedCacheNodesOfferings(params: ElastiCache.Types.DescribeReservedCacheNodesOfferingsMessage, callback?: (err: AWSError, data: ElastiCache.Types.ReservedCacheNodesOfferingMessage) => void): Request; - /** - * Lists available reserved cache node offerings. - */ - describeReservedCacheNodesOfferings(callback?: (err: AWSError, data: ElastiCache.Types.ReservedCacheNodesOfferingMessage) => void): Request; - /** - * Returns information about cache cluster or replication group snapshots. By default, DescribeSnapshots lists all of your snapshots; it can optionally describe a single snapshot, or just the snapshots associated with a particular cache cluster. This operation is valid for Redis only. - */ - describeSnapshots(params: ElastiCache.Types.DescribeSnapshotsMessage, callback?: (err: AWSError, data: ElastiCache.Types.DescribeSnapshotsListMessage) => void): Request; - /** - * Returns information about cache cluster or replication group snapshots. By default, DescribeSnapshots lists all of your snapshots; it can optionally describe a single snapshot, or just the snapshots associated with a particular cache cluster. This operation is valid for Redis only. - */ - describeSnapshots(callback?: (err: AWSError, data: ElastiCache.Types.DescribeSnapshotsListMessage) => void): Request; - /** - * Lists all available node types that you can scale your Redis cluster's or replication group's current node type up to. When you use the ModifyCacheCluster or ModifyReplicationGroup operations to scale up your cluster or replication group, the value of the CacheNodeType parameter must be one of the node types returned by this operation. - */ - listAllowedNodeTypeModifications(params: ElastiCache.Types.ListAllowedNodeTypeModificationsMessage, callback?: (err: AWSError, data: ElastiCache.Types.AllowedNodeTypeModificationsMessage) => void): Request; - /** - * Lists all available node types that you can scale your Redis cluster's or replication group's current node type up to. When you use the ModifyCacheCluster or ModifyReplicationGroup operations to scale up your cluster or replication group, the value of the CacheNodeType parameter must be one of the node types returned by this operation. - */ - listAllowedNodeTypeModifications(callback?: (err: AWSError, data: ElastiCache.Types.AllowedNodeTypeModificationsMessage) => void): Request; - /** - * Lists all cost allocation tags currently on the named resource. A cost allocation tag is a key-value pair where the key is case-sensitive and the value is optional. You can use cost allocation tags to categorize and track your AWS costs. You can have a maximum of 50 cost allocation tags on an ElastiCache resource. For more information, see Using Cost Allocation Tags in Amazon ElastiCache. - */ - listTagsForResource(params: ElastiCache.Types.ListTagsForResourceMessage, callback?: (err: AWSError, data: ElastiCache.Types.TagListMessage) => void): Request; - /** - * Lists all cost allocation tags currently on the named resource. A cost allocation tag is a key-value pair where the key is case-sensitive and the value is optional. You can use cost allocation tags to categorize and track your AWS costs. You can have a maximum of 50 cost allocation tags on an ElastiCache resource. For more information, see Using Cost Allocation Tags in Amazon ElastiCache. - */ - listTagsForResource(callback?: (err: AWSError, data: ElastiCache.Types.TagListMessage) => void): Request; - /** - * Modifies the settings for a cache cluster. You can use this operation to change one or more cluster configuration parameters by specifying the parameters and the new values. - */ - modifyCacheCluster(params: ElastiCache.Types.ModifyCacheClusterMessage, callback?: (err: AWSError, data: ElastiCache.Types.ModifyCacheClusterResult) => void): Request; - /** - * Modifies the settings for a cache cluster. You can use this operation to change one or more cluster configuration parameters by specifying the parameters and the new values. - */ - modifyCacheCluster(callback?: (err: AWSError, data: ElastiCache.Types.ModifyCacheClusterResult) => void): Request; - /** - * Modifies the parameters of a cache parameter group. You can modify up to 20 parameters in a single request by submitting a list parameter name and value pairs. - */ - modifyCacheParameterGroup(params: ElastiCache.Types.ModifyCacheParameterGroupMessage, callback?: (err: AWSError, data: ElastiCache.Types.CacheParameterGroupNameMessage) => void): Request; - /** - * Modifies the parameters of a cache parameter group. You can modify up to 20 parameters in a single request by submitting a list parameter name and value pairs. - */ - modifyCacheParameterGroup(callback?: (err: AWSError, data: ElastiCache.Types.CacheParameterGroupNameMessage) => void): Request; - /** - * Modifies an existing cache subnet group. - */ - modifyCacheSubnetGroup(params: ElastiCache.Types.ModifyCacheSubnetGroupMessage, callback?: (err: AWSError, data: ElastiCache.Types.ModifyCacheSubnetGroupResult) => void): Request; - /** - * Modifies an existing cache subnet group. - */ - modifyCacheSubnetGroup(callback?: (err: AWSError, data: ElastiCache.Types.ModifyCacheSubnetGroupResult) => void): Request; - /** - * Modifies the settings for a replication group. Due to current limitations on Redis (cluster mode disabled), this operation or parameter is not supported on Redis (cluster mode enabled) replication groups. This operation is valid for Redis only. - */ - modifyReplicationGroup(params: ElastiCache.Types.ModifyReplicationGroupMessage, callback?: (err: AWSError, data: ElastiCache.Types.ModifyReplicationGroupResult) => void): Request; - /** - * Modifies the settings for a replication group. Due to current limitations on Redis (cluster mode disabled), this operation or parameter is not supported on Redis (cluster mode enabled) replication groups. This operation is valid for Redis only. - */ - modifyReplicationGroup(callback?: (err: AWSError, data: ElastiCache.Types.ModifyReplicationGroupResult) => void): Request; - /** - * Allows you to purchase a reserved cache node offering. - */ - purchaseReservedCacheNodesOffering(params: ElastiCache.Types.PurchaseReservedCacheNodesOfferingMessage, callback?: (err: AWSError, data: ElastiCache.Types.PurchaseReservedCacheNodesOfferingResult) => void): Request; - /** - * Allows you to purchase a reserved cache node offering. - */ - purchaseReservedCacheNodesOffering(callback?: (err: AWSError, data: ElastiCache.Types.PurchaseReservedCacheNodesOfferingResult) => void): Request; - /** - * Reboots some, or all, of the cache nodes within a provisioned cache cluster. This operation applies any modified cache parameter groups to the cache cluster. The reboot operation takes place as soon as possible, and results in a momentary outage to the cache cluster. During the reboot, the cache cluster status is set to REBOOTING. The reboot causes the contents of the cache (for each cache node being rebooted) to be lost. When the reboot is complete, a cache cluster event is created. - */ - rebootCacheCluster(params: ElastiCache.Types.RebootCacheClusterMessage, callback?: (err: AWSError, data: ElastiCache.Types.RebootCacheClusterResult) => void): Request; - /** - * Reboots some, or all, of the cache nodes within a provisioned cache cluster. This operation applies any modified cache parameter groups to the cache cluster. The reboot operation takes place as soon as possible, and results in a momentary outage to the cache cluster. During the reboot, the cache cluster status is set to REBOOTING. The reboot causes the contents of the cache (for each cache node being rebooted) to be lost. When the reboot is complete, a cache cluster event is created. - */ - rebootCacheCluster(callback?: (err: AWSError, data: ElastiCache.Types.RebootCacheClusterResult) => void): Request; - /** - * Removes the tags identified by the TagKeys list from the named resource. - */ - removeTagsFromResource(params: ElastiCache.Types.RemoveTagsFromResourceMessage, callback?: (err: AWSError, data: ElastiCache.Types.TagListMessage) => void): Request; - /** - * Removes the tags identified by the TagKeys list from the named resource. - */ - removeTagsFromResource(callback?: (err: AWSError, data: ElastiCache.Types.TagListMessage) => void): Request; - /** - * Modifies the parameters of a cache parameter group to the engine or system default value. You can reset specific parameters by submitting a list of parameter names. To reset the entire cache parameter group, specify the ResetAllParameters and CacheParameterGroupName parameters. - */ - resetCacheParameterGroup(params: ElastiCache.Types.ResetCacheParameterGroupMessage, callback?: (err: AWSError, data: ElastiCache.Types.CacheParameterGroupNameMessage) => void): Request; - /** - * Modifies the parameters of a cache parameter group to the engine or system default value. You can reset specific parameters by submitting a list of parameter names. To reset the entire cache parameter group, specify the ResetAllParameters and CacheParameterGroupName parameters. - */ - resetCacheParameterGroup(callback?: (err: AWSError, data: ElastiCache.Types.CacheParameterGroupNameMessage) => void): Request; - /** - * Revokes ingress from a cache security group. Use this operation to disallow access from an Amazon EC2 security group that had been previously authorized. - */ - revokeCacheSecurityGroupIngress(params: ElastiCache.Types.RevokeCacheSecurityGroupIngressMessage, callback?: (err: AWSError, data: ElastiCache.Types.RevokeCacheSecurityGroupIngressResult) => void): Request; - /** - * Revokes ingress from a cache security group. Use this operation to disallow access from an Amazon EC2 security group that had been previously authorized. - */ - revokeCacheSecurityGroupIngress(callback?: (err: AWSError, data: ElastiCache.Types.RevokeCacheSecurityGroupIngressResult) => void): Request; - /** - * Represents the input of a TestFailover operation which test automatic failover on a specified node group (called shard in the console) in a replication group (called cluster in the console). Note the following A customer can use this operation to test automatic failover on up to 5 shards (called node groups in the ElastiCache API and AWS CLI) in any rolling 24-hour period. If calling this operation on shards in different clusters (called replication groups in the API and CLI), the calls can be made concurrently. If calling this operation multiple times on different shards in the same Redis (cluster mode enabled) replication group, the first node replacement must complete before a subsequent call can be made. To determine whether the node replacement is complete you can check Events using the Amazon ElastiCache console, the AWS CLI, or the ElastiCache API. Look for the following automatic failover related events, listed here in order of occurrance: Replication group message: Test Failover API called for node group <node-group-id> Cache cluster message: Failover from master node <primary-node-id> to replica node <node-id> completed Replication group message: Failover from master node <primary-node-id> to replica node <node-id> completed Cache cluster message: Recovering cache nodes <node-id> Cache cluster message: Finished recovery for cache nodes <node-id> For more information see: Viewing ElastiCache Events in the ElastiCache User Guide DescribeEvents in the ElastiCache API Reference Also see, Testing Multi-AZ with Automatic Failover in the ElastiCache User Guide. - */ - testFailover(params: ElastiCache.Types.TestFailoverMessage, callback?: (err: AWSError, data: ElastiCache.Types.TestFailoverResult) => void): Request; - /** - * Represents the input of a TestFailover operation which test automatic failover on a specified node group (called shard in the console) in a replication group (called cluster in the console). Note the following A customer can use this operation to test automatic failover on up to 5 shards (called node groups in the ElastiCache API and AWS CLI) in any rolling 24-hour period. If calling this operation on shards in different clusters (called replication groups in the API and CLI), the calls can be made concurrently. If calling this operation multiple times on different shards in the same Redis (cluster mode enabled) replication group, the first node replacement must complete before a subsequent call can be made. To determine whether the node replacement is complete you can check Events using the Amazon ElastiCache console, the AWS CLI, or the ElastiCache API. Look for the following automatic failover related events, listed here in order of occurrance: Replication group message: Test Failover API called for node group <node-group-id> Cache cluster message: Failover from master node <primary-node-id> to replica node <node-id> completed Replication group message: Failover from master node <primary-node-id> to replica node <node-id> completed Cache cluster message: Recovering cache nodes <node-id> Cache cluster message: Finished recovery for cache nodes <node-id> For more information see: Viewing ElastiCache Events in the ElastiCache User Guide DescribeEvents in the ElastiCache API Reference Also see, Testing Multi-AZ with Automatic Failover in the ElastiCache User Guide. - */ - testFailover(callback?: (err: AWSError, data: ElastiCache.Types.TestFailoverResult) => void): Request; - /** - * Waits for the cacheClusterAvailable state by periodically calling the underlying ElastiCache.describeCacheClustersoperation every 15 seconds (at most 40 times). Wait until ElastiCache cluster is available. - */ - waitFor(state: "cacheClusterAvailable", params: ElastiCache.Types.DescribeCacheClustersMessage, callback?: (err: AWSError, data: ElastiCache.Types.CacheClusterMessage) => void): Request; - /** - * Waits for the cacheClusterAvailable state by periodically calling the underlying ElastiCache.describeCacheClustersoperation every 15 seconds (at most 40 times). Wait until ElastiCache cluster is available. - */ - waitFor(state: "cacheClusterAvailable", callback?: (err: AWSError, data: ElastiCache.Types.CacheClusterMessage) => void): Request; - /** - * Waits for the cacheClusterDeleted state by periodically calling the underlying ElastiCache.describeCacheClustersoperation every 15 seconds (at most 40 times). Wait until ElastiCache cluster is deleted. - */ - waitFor(state: "cacheClusterDeleted", params: ElastiCache.Types.DescribeCacheClustersMessage, callback?: (err: AWSError, data: ElastiCache.Types.CacheClusterMessage) => void): Request; - /** - * Waits for the cacheClusterDeleted state by periodically calling the underlying ElastiCache.describeCacheClustersoperation every 15 seconds (at most 40 times). Wait until ElastiCache cluster is deleted. - */ - waitFor(state: "cacheClusterDeleted", callback?: (err: AWSError, data: ElastiCache.Types.CacheClusterMessage) => void): Request; - /** - * Waits for the replicationGroupAvailable state by periodically calling the underlying ElastiCache.describeReplicationGroupsoperation every 15 seconds (at most 40 times). Wait until ElastiCache replication group is available. - */ - waitFor(state: "replicationGroupAvailable", params: ElastiCache.Types.DescribeReplicationGroupsMessage, callback?: (err: AWSError, data: ElastiCache.Types.ReplicationGroupMessage) => void): Request; - /** - * Waits for the replicationGroupAvailable state by periodically calling the underlying ElastiCache.describeReplicationGroupsoperation every 15 seconds (at most 40 times). Wait until ElastiCache replication group is available. - */ - waitFor(state: "replicationGroupAvailable", callback?: (err: AWSError, data: ElastiCache.Types.ReplicationGroupMessage) => void): Request; - /** - * Waits for the replicationGroupDeleted state by periodically calling the underlying ElastiCache.describeReplicationGroupsoperation every 15 seconds (at most 40 times). Wait until ElastiCache replication group is deleted. - */ - waitFor(state: "replicationGroupDeleted", params: ElastiCache.Types.DescribeReplicationGroupsMessage, callback?: (err: AWSError, data: ElastiCache.Types.ReplicationGroupMessage) => void): Request; - /** - * Waits for the replicationGroupDeleted state by periodically calling the underlying ElastiCache.describeReplicationGroupsoperation every 15 seconds (at most 40 times). Wait until ElastiCache replication group is deleted. - */ - waitFor(state: "replicationGroupDeleted", callback?: (err: AWSError, data: ElastiCache.Types.ReplicationGroupMessage) => void): Request; -} -declare namespace ElastiCache { - export type AZMode = "single-az"|"cross-az"|string; - export interface AddTagsToResourceMessage { - /** - * The Amazon Resource Name (ARN) of the resource to which the tags are to be added, for example arn:aws:elasticache:us-west-2:0123456789:cluster:myCluster or arn:aws:elasticache:us-west-2:0123456789:snapshot:mySnapshot. For more information about ARNs, see Amazon Resource Names (ARNs) and AWS Service Namespaces. - */ - ResourceName: String; - /** - * A list of cost allocation tags to be added to this resource. A tag is a key-value pair. A tag key must be accompanied by a tag value. - */ - Tags: TagList; - } - export interface AllowedNodeTypeModificationsMessage { - /** - * A string list, each element of which specifies a cache node type which you can use to scale your cache cluster or replication group. When scaling up a Redis cluster or replication group using ModifyCacheCluster or ModifyReplicationGroup, use a value from this list for the CacheNodeType parameter. - */ - ScaleUpModifications?: NodeTypeList; - } - export interface AuthorizeCacheSecurityGroupIngressMessage { - /** - * The cache security group that allows network ingress. - */ - CacheSecurityGroupName: String; - /** - * The Amazon EC2 security group to be authorized for ingress to the cache security group. - */ - EC2SecurityGroupName: String; - /** - * The AWS account number of the Amazon EC2 security group owner. Note that this is not the same thing as an AWS access key ID - you must provide a valid AWS account number for this parameter. - */ - EC2SecurityGroupOwnerId: String; - } - export interface AuthorizeCacheSecurityGroupIngressResult { - CacheSecurityGroup?: CacheSecurityGroup; - } - export type AutomaticFailoverStatus = "enabled"|"disabled"|"enabling"|"disabling"|string; - export interface AvailabilityZone { - /** - * The name of the Availability Zone. - */ - Name?: String; - } - export type AvailabilityZonesList = String[]; - export type AwsQueryErrorMessage = string; - export type Boolean = boolean; - export type BooleanOptional = boolean; - export interface CacheCluster { - /** - * The user-supplied identifier of the cache cluster. This identifier is a unique key that identifies a cache cluster. - */ - CacheClusterId?: String; - /** - * Represents a Memcached cluster endpoint which, if Automatic Discovery is enabled on the cluster, can be used by an application to connect to any node in the cluster. The configuration endpoint will always have .cfg in it. Example: mem-3.9dvc4r.cfg.usw2.cache.amazonaws.com:11211 - */ - ConfigurationEndpoint?: Endpoint; - /** - * The URL of the web page where you can download the latest ElastiCache client library. - */ - ClientDownloadLandingPage?: String; - /** - * The name of the compute and memory capacity node type for the cache cluster. Valid node types are as follows: General purpose: Current generation: cache.t2.micro, cache.t2.small, cache.t2.medium, cache.m3.medium, cache.m3.large, cache.m3.xlarge, cache.m3.2xlarge, cache.m4.large, cache.m4.xlarge, cache.m4.2xlarge, cache.m4.4xlarge, cache.m4.10xlarge Previous generation: cache.t1.micro, cache.m1.small, cache.m1.medium, cache.m1.large, cache.m1.xlarge Compute optimized: cache.c1.xlarge Memory optimized: Current generation: cache.r3.large, cache.r3.xlarge, cache.r3.2xlarge, cache.r3.4xlarge, cache.r3.8xlarge Previous generation: cache.m2.xlarge, cache.m2.2xlarge, cache.m2.4xlarge Notes: All T2 instances are created in an Amazon Virtual Private Cloud (Amazon VPC). Redis backup/restore is not supported for Redis (cluster mode disabled) T1 and T2 instances. Backup/restore is supported on Redis (cluster mode enabled) T2 instances. Redis Append-only files (AOF) functionality is not supported for T1 or T2 instances. For a complete listing of node types and specifications, see Amazon ElastiCache Product Features and Details and either Cache Node Type-Specific Parameters for Memcached or Cache Node Type-Specific Parameters for Redis. - */ - CacheNodeType?: String; - /** - * The name of the cache engine (memcached or redis) to be used for this cache cluster. - */ - Engine?: String; - /** - * The version of the cache engine that is used in this cache cluster. - */ - EngineVersion?: String; - /** - * The current state of this cache cluster, one of the following values: available, creating, deleted, deleting, incompatible-network, modifying, rebooting cache cluster nodes, restore-failed, or snapshotting. - */ - CacheClusterStatus?: String; - /** - * The number of cache nodes in the cache cluster. For clusters running Redis, this value must be 1. For clusters running Memcached, this value must be between 1 and 20. - */ - NumCacheNodes?: IntegerOptional; - /** - * The name of the Availability Zone in which the cache cluster is located or "Multiple" if the cache nodes are located in different Availability Zones. - */ - PreferredAvailabilityZone?: String; - /** - * The date and time when the cache cluster was created. - */ - CacheClusterCreateTime?: TStamp; - /** - * Specifies the weekly time range during which maintenance on the cluster is performed. It is specified as a range in the format ddd:hh24:mi-ddd:hh24:mi (24H Clock UTC). The minimum maintenance window is a 60 minute period. Valid values for ddd are: sun mon tue wed thu fri sat Example: sun:23:00-mon:01:30 - */ - PreferredMaintenanceWindow?: String; - PendingModifiedValues?: PendingModifiedValues; - NotificationConfiguration?: NotificationConfiguration; - /** - * A list of cache security group elements, composed of name and status sub-elements. - */ - CacheSecurityGroups?: CacheSecurityGroupMembershipList; - CacheParameterGroup?: CacheParameterGroupStatus; - /** - * The name of the cache subnet group associated with the cache cluster. - */ - CacheSubnetGroupName?: String; - /** - * A list of cache nodes that are members of the cache cluster. - */ - CacheNodes?: CacheNodeList; - /** - * This parameter is currently disabled. - */ - AutoMinorVersionUpgrade?: Boolean; - /** - * A list of VPC Security Groups associated with the cache cluster. - */ - SecurityGroups?: SecurityGroupMembershipList; - /** - * The replication group to which this cache cluster belongs. If this field is empty, the cache cluster is not associated with any replication group. - */ - ReplicationGroupId?: String; - /** - * The number of days for which ElastiCache retains automatic cache cluster snapshots before deleting them. For example, if you set SnapshotRetentionLimit to 5, a snapshot that was taken today is retained for 5 days before being deleted. If the value of SnapshotRetentionLimit is set to zero (0), backups are turned off. - */ - SnapshotRetentionLimit?: IntegerOptional; - /** - * The daily time range (in UTC) during which ElastiCache begins taking a daily snapshot of your cache cluster. Example: 05:00-09:00 - */ - SnapshotWindow?: String; - } - export type CacheClusterList = CacheCluster[]; - export interface CacheClusterMessage { - /** - * Provides an identifier to allow retrieval of paginated results. - */ - Marker?: String; - /** - * A list of cache clusters. Each item in the list contains detailed information about one cache cluster. - */ - CacheClusters?: CacheClusterList; - } - export interface CacheEngineVersion { - /** - * The name of the cache engine. - */ - Engine?: String; - /** - * The version number of the cache engine. - */ - EngineVersion?: String; - /** - * The name of the cache parameter group family associated with this cache engine. Valid values are: memcached1.4 | redis2.6 | redis2.8 | redis3.2 - */ - CacheParameterGroupFamily?: String; - /** - * The description of the cache engine. - */ - CacheEngineDescription?: String; - /** - * The description of the cache engine version. - */ - CacheEngineVersionDescription?: String; - } - export type CacheEngineVersionList = CacheEngineVersion[]; - export interface CacheEngineVersionMessage { - /** - * Provides an identifier to allow retrieval of paginated results. - */ - Marker?: String; - /** - * A list of cache engine version details. Each element in the list contains detailed information about one cache engine version. - */ - CacheEngineVersions?: CacheEngineVersionList; - } - export interface CacheNode { - /** - * The cache node identifier. A node ID is a numeric identifier (0001, 0002, etc.). The combination of cluster ID and node ID uniquely identifies every cache node used in a customer's AWS account. - */ - CacheNodeId?: String; - /** - * The current state of this cache node. - */ - CacheNodeStatus?: String; - /** - * The date and time when the cache node was created. - */ - CacheNodeCreateTime?: TStamp; - /** - * The hostname for connecting to this cache node. - */ - Endpoint?: Endpoint; - /** - * The status of the parameter group applied to this cache node. - */ - ParameterGroupStatus?: String; - /** - * The ID of the primary node to which this read replica node is synchronized. If this field is empty, this node is not associated with a primary cache cluster. - */ - SourceCacheNodeId?: String; - /** - * The Availability Zone where this node was created and now resides. - */ - CustomerAvailabilityZone?: String; - } - export type CacheNodeIdsList = String[]; - export type CacheNodeList = CacheNode[]; - export interface CacheNodeTypeSpecificParameter { - /** - * The name of the parameter. - */ - ParameterName?: String; - /** - * A description of the parameter. - */ - Description?: String; - /** - * The source of the parameter value. - */ - Source?: String; - /** - * The valid data type for the parameter. - */ - DataType?: String; - /** - * The valid range of values for the parameter. - */ - AllowedValues?: String; - /** - * Indicates whether (true) or not (false) the parameter can be modified. Some parameters have security or operational implications that prevent them from being changed. - */ - IsModifiable?: Boolean; - /** - * The earliest cache engine version to which the parameter can apply. - */ - MinimumEngineVersion?: String; - /** - * A list of cache node types and their corresponding values for this parameter. - */ - CacheNodeTypeSpecificValues?: CacheNodeTypeSpecificValueList; - /** - * Indicates whether a change to the parameter is applied immediately or requires a reboot for the change to be applied. You can force a reboot or wait until the next maintenance window's reboot. For more information, see Rebooting a Cluster. - */ - ChangeType?: ChangeType; - } - export type CacheNodeTypeSpecificParametersList = CacheNodeTypeSpecificParameter[]; - export interface CacheNodeTypeSpecificValue { - /** - * The cache node type for which this value applies. - */ - CacheNodeType?: String; - /** - * The value for the cache node type. - */ - Value?: String; - } - export type CacheNodeTypeSpecificValueList = CacheNodeTypeSpecificValue[]; - export interface CacheParameterGroup { - /** - * The name of the cache parameter group. - */ - CacheParameterGroupName?: String; - /** - * The name of the cache parameter group family that this cache parameter group is compatible with. Valid values are: memcached1.4 | redis2.6 | redis2.8 | redis3.2 - */ - CacheParameterGroupFamily?: String; - /** - * The description for this cache parameter group. - */ - Description?: String; - } - export interface CacheParameterGroupDetails { - /** - * Provides an identifier to allow retrieval of paginated results. - */ - Marker?: String; - /** - * A list of Parameter instances. - */ - Parameters?: ParametersList; - /** - * A list of parameters specific to a particular cache node type. Each element in the list contains detailed information about one parameter. - */ - CacheNodeTypeSpecificParameters?: CacheNodeTypeSpecificParametersList; - } - export type CacheParameterGroupList = CacheParameterGroup[]; - export interface CacheParameterGroupNameMessage { - /** - * The name of the cache parameter group. - */ - CacheParameterGroupName?: String; - } - export interface CacheParameterGroupStatus { - /** - * The name of the cache parameter group. - */ - CacheParameterGroupName?: String; - /** - * The status of parameter updates. - */ - ParameterApplyStatus?: String; - /** - * A list of the cache node IDs which need to be rebooted for parameter changes to be applied. A node ID is a numeric identifier (0001, 0002, etc.). - */ - CacheNodeIdsToReboot?: CacheNodeIdsList; - } - export interface CacheParameterGroupsMessage { - /** - * Provides an identifier to allow retrieval of paginated results. - */ - Marker?: String; - /** - * A list of cache parameter groups. Each element in the list contains detailed information about one cache parameter group. - */ - CacheParameterGroups?: CacheParameterGroupList; - } - export interface CacheSecurityGroup { - /** - * The AWS account ID of the cache security group owner. - */ - OwnerId?: String; - /** - * The name of the cache security group. - */ - CacheSecurityGroupName?: String; - /** - * The description of the cache security group. - */ - Description?: String; - /** - * A list of Amazon EC2 security groups that are associated with this cache security group. - */ - EC2SecurityGroups?: EC2SecurityGroupList; - } - export interface CacheSecurityGroupMembership { - /** - * The name of the cache security group. - */ - CacheSecurityGroupName?: String; - /** - * The membership status in the cache security group. The status changes when a cache security group is modified, or when the cache security groups assigned to a cache cluster are modified. - */ - Status?: String; - } - export type CacheSecurityGroupMembershipList = CacheSecurityGroupMembership[]; - export interface CacheSecurityGroupMessage { - /** - * Provides an identifier to allow retrieval of paginated results. - */ - Marker?: String; - /** - * A list of cache security groups. Each element in the list contains detailed information about one group. - */ - CacheSecurityGroups?: CacheSecurityGroups; - } - export type CacheSecurityGroupNameList = String[]; - export type CacheSecurityGroups = CacheSecurityGroup[]; - export interface CacheSubnetGroup { - /** - * The name of the cache subnet group. - */ - CacheSubnetGroupName?: String; - /** - * The description of the cache subnet group. - */ - CacheSubnetGroupDescription?: String; - /** - * The Amazon Virtual Private Cloud identifier (VPC ID) of the cache subnet group. - */ - VpcId?: String; - /** - * A list of subnets associated with the cache subnet group. - */ - Subnets?: SubnetList; - } - export interface CacheSubnetGroupMessage { - /** - * Provides an identifier to allow retrieval of paginated results. - */ - Marker?: String; - /** - * A list of cache subnet groups. Each element in the list contains detailed information about one group. - */ - CacheSubnetGroups?: CacheSubnetGroups; - } - export type CacheSubnetGroups = CacheSubnetGroup[]; - export type ChangeType = "immediate"|"requires-reboot"|string; - export type ClusterIdList = String[]; - export interface CopySnapshotMessage { - /** - * The name of an existing snapshot from which to make a copy. - */ - SourceSnapshotName: String; - /** - * A name for the snapshot copy. ElastiCache does not permit overwriting a snapshot, therefore this name must be unique within its context - ElastiCache or an Amazon S3 bucket if exporting. - */ - TargetSnapshotName: String; - /** - * The Amazon S3 bucket to which the snapshot is exported. This parameter is used only when exporting a snapshot for external access. When using this parameter to export a snapshot, be sure Amazon ElastiCache has the needed permissions to this S3 bucket. For more information, see Step 2: Grant ElastiCache Access to Your Amazon S3 Bucket in the Amazon ElastiCache User Guide. For more information, see Exporting a Snapshot in the Amazon ElastiCache User Guide. - */ - TargetBucket?: String; - } - export interface CopySnapshotResult { - Snapshot?: Snapshot; - } - export interface CreateCacheClusterMessage { - /** - * The node group (shard) identifier. This parameter is stored as a lowercase string. Constraints: A name must contain from 1 to 20 alphanumeric characters or hyphens. The first character must be a letter. A name cannot end with a hyphen or contain two consecutive hyphens. - */ - CacheClusterId: String; - /** - * Due to current limitations on Redis (cluster mode disabled), this operation or parameter is not supported on Redis (cluster mode enabled) replication groups. The ID of the replication group to which this cache cluster should belong. If this parameter is specified, the cache cluster is added to the specified replication group as a read replica; otherwise, the cache cluster is a standalone primary that is not part of any replication group. If the specified replication group is Multi-AZ enabled and the Availability Zone is not specified, the cache cluster is created in Availability Zones that provide the best spread of read replicas across Availability Zones. This parameter is only valid if the Engine parameter is redis. - */ - ReplicationGroupId?: String; - /** - * Specifies whether the nodes in this Memcached cluster are created in a single Availability Zone or created across multiple Availability Zones in the cluster's region. This parameter is only supported for Memcached cache clusters. If the AZMode and PreferredAvailabilityZones are not specified, ElastiCache assumes single-az mode. - */ - AZMode?: AZMode; - /** - * The EC2 Availability Zone in which the cache cluster is created. All nodes belonging to this Memcached cache cluster are placed in the preferred Availability Zone. If you want to create your nodes across multiple Availability Zones, use PreferredAvailabilityZones. Default: System chosen Availability Zone. - */ - PreferredAvailabilityZone?: String; - /** - * A list of the Availability Zones in which cache nodes are created. The order of the zones in the list is not important. This option is only supported on Memcached. If you are creating your cache cluster in an Amazon VPC (recommended) you can only locate nodes in Availability Zones that are associated with the subnets in the selected subnet group. The number of Availability Zones listed must equal the value of NumCacheNodes. If you want all the nodes in the same Availability Zone, use PreferredAvailabilityZone instead, or repeat the Availability Zone multiple times in the list. Default: System chosen Availability Zones. - */ - PreferredAvailabilityZones?: PreferredAvailabilityZoneList; - /** - * The initial number of cache nodes that the cache cluster has. For clusters running Redis, this value must be 1. For clusters running Memcached, this value must be between 1 and 20. If you need more than 20 nodes for your Memcached cluster, please fill out the ElastiCache Limit Increase Request form at http://aws.amazon.com/contact-us/elasticache-node-limit-request/. - */ - NumCacheNodes?: IntegerOptional; - /** - * The compute and memory capacity of the nodes in the node group (shard). Valid node types are as follows: General purpose: Current generation: cache.t2.micro, cache.t2.small, cache.t2.medium, cache.m3.medium, cache.m3.large, cache.m3.xlarge, cache.m3.2xlarge, cache.m4.large, cache.m4.xlarge, cache.m4.2xlarge, cache.m4.4xlarge, cache.m4.10xlarge Previous generation: cache.t1.micro, cache.m1.small, cache.m1.medium, cache.m1.large, cache.m1.xlarge Compute optimized: cache.c1.xlarge Memory optimized: Current generation: cache.r3.large, cache.r3.xlarge, cache.r3.2xlarge, cache.r3.4xlarge, cache.r3.8xlarge Previous generation: cache.m2.xlarge, cache.m2.2xlarge, cache.m2.4xlarge Notes: All T2 instances are created in an Amazon Virtual Private Cloud (Amazon VPC). Redis backup/restore is not supported for Redis (cluster mode disabled) T1 and T2 instances. Backup/restore is supported on Redis (cluster mode enabled) T2 instances. Redis Append-only files (AOF) functionality is not supported for T1 or T2 instances. For a complete listing of node types and specifications, see Amazon ElastiCache Product Features and Details and either Cache Node Type-Specific Parameters for Memcached or Cache Node Type-Specific Parameters for Redis. - */ - CacheNodeType?: String; - /** - * The name of the cache engine to be used for this cache cluster. Valid values for this parameter are: memcached | redis - */ - Engine?: String; - /** - * The version number of the cache engine to be used for this cache cluster. To view the supported cache engine versions, use the DescribeCacheEngineVersions operation. Important: You can upgrade to a newer engine version (see Selecting a Cache Engine and Version), but you cannot downgrade to an earlier engine version. If you want to use an earlier engine version, you must delete the existing cache cluster or replication group and create it anew with the earlier engine version. - */ - EngineVersion?: String; - /** - * The name of the parameter group to associate with this cache cluster. If this argument is omitted, the default parameter group for the specified engine is used. You cannot use any parameter group which has cluster-enabled='yes' when creating a cluster. - */ - CacheParameterGroupName?: String; - /** - * The name of the subnet group to be used for the cache cluster. Use this parameter only when you are creating a cache cluster in an Amazon Virtual Private Cloud (Amazon VPC). If you're going to launch your cluster in an Amazon VPC, you need to create a subnet group before you start creating a cluster. For more information, see Subnets and Subnet Groups. - */ - CacheSubnetGroupName?: String; - /** - * A list of security group names to associate with this cache cluster. Use this parameter only when you are creating a cache cluster outside of an Amazon Virtual Private Cloud (Amazon VPC). - */ - CacheSecurityGroupNames?: CacheSecurityGroupNameList; - /** - * One or more VPC security groups associated with the cache cluster. Use this parameter only when you are creating a cache cluster in an Amazon Virtual Private Cloud (Amazon VPC). - */ - SecurityGroupIds?: SecurityGroupIdsList; - /** - * A list of cost allocation tags to be added to this resource. A tag is a key-value pair. A tag key must be accompanied by a tag value. - */ - Tags?: TagList; - /** - * A single-element string list containing an Amazon Resource Name (ARN) that uniquely identifies a Redis RDB snapshot file stored in Amazon S3. The snapshot file is used to populate the node group (shard). The Amazon S3 object name in the ARN cannot contain any commas. This parameter is only valid if the Engine parameter is redis. Example of an Amazon S3 ARN: arn:aws:s3:::my_bucket/snapshot1.rdb - */ - SnapshotArns?: SnapshotArnsList; - /** - * The name of a Redis snapshot from which to restore data into the new node group (shard). The snapshot status changes to restoring while the new node group (shard) is being created. This parameter is only valid if the Engine parameter is redis. - */ - SnapshotName?: String; - /** - * Specifies the weekly time range during which maintenance on the cache cluster is performed. It is specified as a range in the format ddd:hh24:mi-ddd:hh24:mi (24H Clock UTC). The minimum maintenance window is a 60 minute period. Valid values for ddd are: Specifies the weekly time range during which maintenance on the cluster is performed. It is specified as a range in the format ddd:hh24:mi-ddd:hh24:mi (24H Clock UTC). The minimum maintenance window is a 60 minute period. Valid values for ddd are: sun mon tue wed thu fri sat Example: sun:23:00-mon:01:30 - */ - PreferredMaintenanceWindow?: String; - /** - * The port number on which each of the cache nodes accepts connections. - */ - Port?: IntegerOptional; - /** - * The Amazon Resource Name (ARN) of the Amazon Simple Notification Service (SNS) topic to which notifications are sent. The Amazon SNS topic owner must be the same as the cache cluster owner. - */ - NotificationTopicArn?: String; - /** - * This parameter is currently disabled. - */ - AutoMinorVersionUpgrade?: BooleanOptional; - /** - * The number of days for which ElastiCache retains automatic snapshots before deleting them. For example, if you set SnapshotRetentionLimit to 5, a snapshot taken today is retained for 5 days before being deleted. This parameter is only valid if the Engine parameter is redis. Default: 0 (i.e., automatic backups are disabled for this cache cluster). - */ - SnapshotRetentionLimit?: IntegerOptional; - /** - * The daily time range (in UTC) during which ElastiCache begins taking a daily snapshot of your node group (shard). Example: 05:00-09:00 If you do not specify this parameter, ElastiCache automatically chooses an appropriate time range. Note: This parameter is only valid if the Engine parameter is redis. - */ - SnapshotWindow?: String; - /** - * Reserved parameter. The password used to access a password protected server. Password constraints: Must be only printable ASCII characters. Must be at least 16 characters and no more than 128 characters in length. Cannot contain any of the following characters: '/', '"', or "@". For more information, see AUTH password at Redis. - */ - AuthToken?: String; - } - export interface CreateCacheClusterResult { - CacheCluster?: CacheCluster; - } - export interface CreateCacheParameterGroupMessage { - /** - * A user-specified name for the cache parameter group. - */ - CacheParameterGroupName: String; - /** - * The name of the cache parameter group family that the cache parameter group can be used with. Valid values are: memcached1.4 | redis2.6 | redis2.8 | redis3.2 - */ - CacheParameterGroupFamily: String; - /** - * A user-specified description for the cache parameter group. - */ - Description: String; - } - export interface CreateCacheParameterGroupResult { - CacheParameterGroup?: CacheParameterGroup; - } - export interface CreateCacheSecurityGroupMessage { - /** - * A name for the cache security group. This value is stored as a lowercase string. Constraints: Must contain no more than 255 alphanumeric characters. Cannot be the word "Default". Example: mysecuritygroup - */ - CacheSecurityGroupName: String; - /** - * A description for the cache security group. - */ - Description: String; - } - export interface CreateCacheSecurityGroupResult { - CacheSecurityGroup?: CacheSecurityGroup; - } - export interface CreateCacheSubnetGroupMessage { - /** - * A name for the cache subnet group. This value is stored as a lowercase string. Constraints: Must contain no more than 255 alphanumeric characters or hyphens. Example: mysubnetgroup - */ - CacheSubnetGroupName: String; - /** - * A description for the cache subnet group. - */ - CacheSubnetGroupDescription: String; - /** - * A list of VPC subnet IDs for the cache subnet group. - */ - SubnetIds: SubnetIdentifierList; - } - export interface CreateCacheSubnetGroupResult { - CacheSubnetGroup?: CacheSubnetGroup; - } - export interface CreateReplicationGroupMessage { - /** - * The replication group identifier. This parameter is stored as a lowercase string. Constraints: A name must contain from 1 to 20 alphanumeric characters or hyphens. The first character must be a letter. A name cannot end with a hyphen or contain two consecutive hyphens. - */ - ReplicationGroupId: String; - /** - * A user-created description for the replication group. - */ - ReplicationGroupDescription: String; - /** - * The identifier of the cache cluster that serves as the primary for this replication group. This cache cluster must already exist and have a status of available. This parameter is not required if NumCacheClusters, NumNodeGroups, or ReplicasPerNodeGroup is specified. - */ - PrimaryClusterId?: String; - /** - * Specifies whether a read-only replica is automatically promoted to read/write primary if the existing primary fails. If true, Multi-AZ is enabled for this replication group. If false, Multi-AZ is disabled for this replication group. AutomaticFailoverEnabled must be enabled for Redis (cluster mode enabled) replication groups. Default: false ElastiCache Multi-AZ replication groups is not supported on: Redis versions earlier than 2.8.6. Redis (cluster mode disabled): T1 and T2 node types. Redis (cluster mode enabled): T2 node types. - */ - AutomaticFailoverEnabled?: BooleanOptional; - /** - * The number of clusters this replication group initially has. This parameter is not used if there is more than one node group (shard). You should use ReplicasPerNodeGroup instead. If AutomaticFailoverEnabled is true, the value of this parameter must be at least 2. If AutomaticFailoverEnabled is false you can omit this parameter (it will default to 1), or you can explicitly set it to a value between 2 and 6. The maximum permitted value for NumCacheClusters is 6 (primary plus 5 replicas). - */ - NumCacheClusters?: IntegerOptional; - /** - * A list of EC2 Availability Zones in which the replication group's cache clusters are created. The order of the Availability Zones in the list is the order in which clusters are allocated. The primary cluster is created in the first AZ in the list. This parameter is not used if there is more than one node group (shard). You should use NodeGroupConfiguration instead. If you are creating your replication group in an Amazon VPC (recommended), you can only locate cache clusters in Availability Zones associated with the subnets in the selected subnet group. The number of Availability Zones listed must equal the value of NumCacheClusters. Default: system chosen Availability Zones. - */ - PreferredCacheClusterAZs?: AvailabilityZonesList; - /** - * An optional parameter that specifies the number of node groups (shards) for this Redis (cluster mode enabled) replication group. For Redis (cluster mode disabled) either omit this parameter or set it to 1. Default: 1 - */ - NumNodeGroups?: IntegerOptional; - /** - * An optional parameter that specifies the number of replica nodes in each node group (shard). Valid values are 0 to 5. - */ - ReplicasPerNodeGroup?: IntegerOptional; - /** - * A list of node group (shard) configuration options. Each node group (shard) configuration has the following: Slots, PrimaryAvailabilityZone, ReplicaAvailabilityZones, ReplicaCount. If you're creating a Redis (cluster mode disabled) or a Redis (cluster mode enabled) replication group, you can use this parameter to individually configure each node group (shard), or you can omit this parameter. - */ - NodeGroupConfiguration?: NodeGroupConfigurationList; - /** - * The compute and memory capacity of the nodes in the node group (shard). Valid node types are as follows: General purpose: Current generation: cache.t2.micro, cache.t2.small, cache.t2.medium, cache.m3.medium, cache.m3.large, cache.m3.xlarge, cache.m3.2xlarge, cache.m4.large, cache.m4.xlarge, cache.m4.2xlarge, cache.m4.4xlarge, cache.m4.10xlarge Previous generation: cache.t1.micro, cache.m1.small, cache.m1.medium, cache.m1.large, cache.m1.xlarge Compute optimized: cache.c1.xlarge Memory optimized: Current generation: cache.r3.large, cache.r3.xlarge, cache.r3.2xlarge, cache.r3.4xlarge, cache.r3.8xlarge Previous generation: cache.m2.xlarge, cache.m2.2xlarge, cache.m2.4xlarge Notes: All T2 instances are created in an Amazon Virtual Private Cloud (Amazon VPC). Redis backup/restore is not supported for Redis (cluster mode disabled) T1 and T2 instances. Backup/restore is supported on Redis (cluster mode enabled) T2 instances. Redis Append-only files (AOF) functionality is not supported for T1 or T2 instances. For a complete listing of node types and specifications, see Amazon ElastiCache Product Features and Details and either Cache Node Type-Specific Parameters for Memcached or Cache Node Type-Specific Parameters for Redis. - */ - CacheNodeType?: String; - /** - * The name of the cache engine to be used for the cache clusters in this replication group. - */ - Engine?: String; - /** - * The version number of the cache engine to be used for the cache clusters in this replication group. To view the supported cache engine versions, use the DescribeCacheEngineVersions operation. Important: You can upgrade to a newer engine version (see Selecting a Cache Engine and Version) in the ElastiCache User Guide, but you cannot downgrade to an earlier engine version. If you want to use an earlier engine version, you must delete the existing cache cluster or replication group and create it anew with the earlier engine version. - */ - EngineVersion?: String; - /** - * The name of the parameter group to associate with this replication group. If this argument is omitted, the default cache parameter group for the specified engine is used. If you are running Redis version 3.2.4 or later, only one node group (shard), and want to use a default parameter group, we recommend that you specify the parameter group by name. To create a Redis (cluster mode disabled) replication group, use CacheParameterGroupName=default.redis3.2. To create a Redis (cluster mode enabled) replication group, use CacheParameterGroupName=default.redis3.2.cluster.on. - */ - CacheParameterGroupName?: String; - /** - * The name of the cache subnet group to be used for the replication group. If you're going to launch your cluster in an Amazon VPC, you need to create a subnet group before you start creating a cluster. For more information, see Subnets and Subnet Groups. - */ - CacheSubnetGroupName?: String; - /** - * A list of cache security group names to associate with this replication group. - */ - CacheSecurityGroupNames?: CacheSecurityGroupNameList; - /** - * One or more Amazon VPC security groups associated with this replication group. Use this parameter only when you are creating a replication group in an Amazon Virtual Private Cloud (Amazon VPC). - */ - SecurityGroupIds?: SecurityGroupIdsList; - /** - * A list of cost allocation tags to be added to this resource. A tag is a key-value pair. A tag key must be accompanied by a tag value. - */ - Tags?: TagList; - /** - * A list of Amazon Resource Names (ARN) that uniquely identify the Redis RDB snapshot files stored in Amazon S3. The snapshot files are used to populate the new replication group. The Amazon S3 object name in the ARN cannot contain any commas. The new replication group will have the number of node groups (console: shards) specified by the parameter NumNodeGroups or the number of node groups configured by NodeGroupConfiguration regardless of the number of ARNs specified here. This parameter is only valid if the Engine parameter is redis. Example of an Amazon S3 ARN: arn:aws:s3:::my_bucket/snapshot1.rdb - */ - SnapshotArns?: SnapshotArnsList; - /** - * The name of a snapshot from which to restore data into the new replication group. The snapshot status changes to restoring while the new replication group is being created. This parameter is only valid if the Engine parameter is redis. - */ - SnapshotName?: String; - /** - * Specifies the weekly time range during which maintenance on the cache cluster is performed. It is specified as a range in the format ddd:hh24:mi-ddd:hh24:mi (24H Clock UTC). The minimum maintenance window is a 60 minute period. Valid values for ddd are: Specifies the weekly time range during which maintenance on the cluster is performed. It is specified as a range in the format ddd:hh24:mi-ddd:hh24:mi (24H Clock UTC). The minimum maintenance window is a 60 minute period. Valid values for ddd are: sun mon tue wed thu fri sat Example: sun:23:00-mon:01:30 - */ - PreferredMaintenanceWindow?: String; - /** - * The port number on which each member of the replication group accepts connections. - */ - Port?: IntegerOptional; - /** - * The Amazon Resource Name (ARN) of the Amazon Simple Notification Service (SNS) topic to which notifications are sent. The Amazon SNS topic owner must be the same as the cache cluster owner. - */ - NotificationTopicArn?: String; - /** - * This parameter is currently disabled. - */ - AutoMinorVersionUpgrade?: BooleanOptional; - /** - * The number of days for which ElastiCache retains automatic snapshots before deleting them. For example, if you set SnapshotRetentionLimit to 5, a snapshot that was taken today is retained for 5 days before being deleted. This parameter is only valid if the Engine parameter is redis. Default: 0 (i.e., automatic backups are disabled for this cache cluster). - */ - SnapshotRetentionLimit?: IntegerOptional; - /** - * The daily time range (in UTC) during which ElastiCache begins taking a daily snapshot of your node group (shard). Example: 05:00-09:00 If you do not specify this parameter, ElastiCache automatically chooses an appropriate time range. This parameter is only valid if the Engine parameter is redis. - */ - SnapshotWindow?: String; - /** - * Reserved parameter. The password used to access a password protected server. Password constraints: Must be only printable ASCII characters. Must be at least 16 characters and no more than 128 characters in length. Cannot contain any of the following characters: '/', '"', or "@". For more information, see AUTH password at Redis. - */ - AuthToken?: String; - } - export interface CreateReplicationGroupResult { - ReplicationGroup?: ReplicationGroup; - } - export interface CreateSnapshotMessage { - /** - * The identifier of an existing replication group. The snapshot is created from this replication group. - */ - ReplicationGroupId?: String; - /** - * The identifier of an existing cache cluster. The snapshot is created from this cache cluster. - */ - CacheClusterId?: String; - /** - * A name for the snapshot being created. - */ - SnapshotName: String; - } - export interface CreateSnapshotResult { - Snapshot?: Snapshot; - } - export interface DeleteCacheClusterMessage { - /** - * The cache cluster identifier for the cluster to be deleted. This parameter is not case sensitive. - */ - CacheClusterId: String; - /** - * The user-supplied name of a final cache cluster snapshot. This is the unique name that identifies the snapshot. ElastiCache creates the snapshot, and then deletes the cache cluster immediately afterward. - */ - FinalSnapshotIdentifier?: String; - } - export interface DeleteCacheClusterResult { - CacheCluster?: CacheCluster; - } - export interface DeleteCacheParameterGroupMessage { - /** - * The name of the cache parameter group to delete. The specified cache security group must not be associated with any cache clusters. - */ - CacheParameterGroupName: String; - } - export interface DeleteCacheSecurityGroupMessage { - /** - * The name of the cache security group to delete. You cannot delete the default security group. - */ - CacheSecurityGroupName: String; - } - export interface DeleteCacheSubnetGroupMessage { - /** - * The name of the cache subnet group to delete. Constraints: Must contain no more than 255 alphanumeric characters or hyphens. - */ - CacheSubnetGroupName: String; - } - export interface DeleteReplicationGroupMessage { - /** - * The identifier for the cluster to be deleted. This parameter is not case sensitive. - */ - ReplicationGroupId: String; - /** - * If set to true, all of the read replicas are deleted, but the primary node is retained. - */ - RetainPrimaryCluster?: BooleanOptional; - /** - * The name of a final node group (shard) snapshot. ElastiCache creates the snapshot from the primary node in the cluster, rather than one of the replicas; this is to ensure that it captures the freshest data. After the final snapshot is taken, the replication group is immediately deleted. - */ - FinalSnapshotIdentifier?: String; - } - export interface DeleteReplicationGroupResult { - ReplicationGroup?: ReplicationGroup; - } - export interface DeleteSnapshotMessage { - /** - * The name of the snapshot to be deleted. - */ - SnapshotName: String; - } - export interface DeleteSnapshotResult { - Snapshot?: Snapshot; - } - export interface DescribeCacheClustersMessage { - /** - * The user-supplied cluster identifier. If this parameter is specified, only information about that specific cache cluster is returned. This parameter isn't case sensitive. - */ - CacheClusterId?: String; - /** - * The maximum number of records to include in the response. If more records exist than the specified MaxRecords value, a marker is included in the response so that the remaining results can be retrieved. Default: 100 Constraints: minimum 20; maximum 100. - */ - MaxRecords?: IntegerOptional; - /** - * An optional marker returned from a prior request. Use this marker for pagination of results from this operation. If this parameter is specified, the response includes only records beyond the marker, up to the value specified by MaxRecords. - */ - Marker?: String; - /** - * An optional flag that can be included in the DescribeCacheCluster request to retrieve information about the individual cache nodes. - */ - ShowCacheNodeInfo?: BooleanOptional; - /** - * An optional flag that can be included in the DescribeCacheCluster request to show only nodes (API/CLI: clusters) that are not members of a replication group. In practice, this mean Memcached and single node Redis clusters. - */ - ShowCacheClustersNotInReplicationGroups?: BooleanOptional; - } - export interface DescribeCacheEngineVersionsMessage { - /** - * The cache engine to return. Valid values: memcached | redis - */ - Engine?: String; - /** - * The cache engine version to return. Example: 1.4.14 - */ - EngineVersion?: String; - /** - * The name of a specific cache parameter group family to return details for. Valid values are: memcached1.4 | redis2.6 | redis2.8 | redis3.2 Constraints: Must be 1 to 255 alphanumeric characters First character must be a letter Cannot end with a hyphen or contain two consecutive hyphens - */ - CacheParameterGroupFamily?: String; - /** - * The maximum number of records to include in the response. If more records exist than the specified MaxRecords value, a marker is included in the response so that the remaining results can be retrieved. Default: 100 Constraints: minimum 20; maximum 100. - */ - MaxRecords?: IntegerOptional; - /** - * An optional marker returned from a prior request. Use this marker for pagination of results from this operation. If this parameter is specified, the response includes only records beyond the marker, up to the value specified by MaxRecords. - */ - Marker?: String; - /** - * If true, specifies that only the default version of the specified engine or engine and major version combination is to be returned. - */ - DefaultOnly?: Boolean; - } - export interface DescribeCacheParameterGroupsMessage { - /** - * The name of a specific cache parameter group to return details for. - */ - CacheParameterGroupName?: String; - /** - * The maximum number of records to include in the response. If more records exist than the specified MaxRecords value, a marker is included in the response so that the remaining results can be retrieved. Default: 100 Constraints: minimum 20; maximum 100. - */ - MaxRecords?: IntegerOptional; - /** - * An optional marker returned from a prior request. Use this marker for pagination of results from this operation. If this parameter is specified, the response includes only records beyond the marker, up to the value specified by MaxRecords. - */ - Marker?: String; - } - export interface DescribeCacheParametersMessage { - /** - * The name of a specific cache parameter group to return details for. - */ - CacheParameterGroupName: String; - /** - * The parameter types to return. Valid values: user | system | engine-default - */ - Source?: String; - /** - * The maximum number of records to include in the response. If more records exist than the specified MaxRecords value, a marker is included in the response so that the remaining results can be retrieved. Default: 100 Constraints: minimum 20; maximum 100. - */ - MaxRecords?: IntegerOptional; - /** - * An optional marker returned from a prior request. Use this marker for pagination of results from this operation. If this parameter is specified, the response includes only records beyond the marker, up to the value specified by MaxRecords. - */ - Marker?: String; - } - export interface DescribeCacheSecurityGroupsMessage { - /** - * The name of the cache security group to return details for. - */ - CacheSecurityGroupName?: String; - /** - * The maximum number of records to include in the response. If more records exist than the specified MaxRecords value, a marker is included in the response so that the remaining results can be retrieved. Default: 100 Constraints: minimum 20; maximum 100. - */ - MaxRecords?: IntegerOptional; - /** - * An optional marker returned from a prior request. Use this marker for pagination of results from this operation. If this parameter is specified, the response includes only records beyond the marker, up to the value specified by MaxRecords. - */ - Marker?: String; - } - export interface DescribeCacheSubnetGroupsMessage { - /** - * The name of the cache subnet group to return details for. - */ - CacheSubnetGroupName?: String; - /** - * The maximum number of records to include in the response. If more records exist than the specified MaxRecords value, a marker is included in the response so that the remaining results can be retrieved. Default: 100 Constraints: minimum 20; maximum 100. - */ - MaxRecords?: IntegerOptional; - /** - * An optional marker returned from a prior request. Use this marker for pagination of results from this operation. If this parameter is specified, the response includes only records beyond the marker, up to the value specified by MaxRecords. - */ - Marker?: String; - } - export interface DescribeEngineDefaultParametersMessage { - /** - * The name of the cache parameter group family. Valid values are: memcached1.4 | redis2.6 | redis2.8 | redis3.2 - */ - CacheParameterGroupFamily: String; - /** - * The maximum number of records to include in the response. If more records exist than the specified MaxRecords value, a marker is included in the response so that the remaining results can be retrieved. Default: 100 Constraints: minimum 20; maximum 100. - */ - MaxRecords?: IntegerOptional; - /** - * An optional marker returned from a prior request. Use this marker for pagination of results from this operation. If this parameter is specified, the response includes only records beyond the marker, up to the value specified by MaxRecords. - */ - Marker?: String; - } - export interface DescribeEngineDefaultParametersResult { - EngineDefaults?: EngineDefaults; - } - export interface DescribeEventsMessage { - /** - * The identifier of the event source for which events are returned. If not specified, all sources are included in the response. - */ - SourceIdentifier?: String; - /** - * The event source to retrieve events for. If no value is specified, all events are returned. - */ - SourceType?: SourceType; - /** - * The beginning of the time interval to retrieve events for, specified in ISO 8601 format. Example: 2017-03-30T07:03:49.555Z - */ - StartTime?: TStamp; - /** - * The end of the time interval for which to retrieve events, specified in ISO 8601 format. Example: 2017-03-30T07:03:49.555Z - */ - EndTime?: TStamp; - /** - * The number of minutes worth of events to retrieve. - */ - Duration?: IntegerOptional; - /** - * The maximum number of records to include in the response. If more records exist than the specified MaxRecords value, a marker is included in the response so that the remaining results can be retrieved. Default: 100 Constraints: minimum 20; maximum 100. - */ - MaxRecords?: IntegerOptional; - /** - * An optional marker returned from a prior request. Use this marker for pagination of results from this operation. If this parameter is specified, the response includes only records beyond the marker, up to the value specified by MaxRecords. - */ - Marker?: String; - } - export interface DescribeReplicationGroupsMessage { - /** - * The identifier for the replication group to be described. This parameter is not case sensitive. If you do not specify this parameter, information about all replication groups is returned. - */ - ReplicationGroupId?: String; - /** - * The maximum number of records to include in the response. If more records exist than the specified MaxRecords value, a marker is included in the response so that the remaining results can be retrieved. Default: 100 Constraints: minimum 20; maximum 100. - */ - MaxRecords?: IntegerOptional; - /** - * An optional marker returned from a prior request. Use this marker for pagination of results from this operation. If this parameter is specified, the response includes only records beyond the marker, up to the value specified by MaxRecords. - */ - Marker?: String; - } - export interface DescribeReservedCacheNodesMessage { - /** - * The reserved cache node identifier filter value. Use this parameter to show only the reservation that matches the specified reservation ID. - */ - ReservedCacheNodeId?: String; - /** - * The offering identifier filter value. Use this parameter to show only purchased reservations matching the specified offering identifier. - */ - ReservedCacheNodesOfferingId?: String; - /** - * The cache node type filter value. Use this parameter to show only those reservations matching the specified cache node type. Valid node types are as follows: General purpose: Current generation: cache.t2.micro, cache.t2.small, cache.t2.medium, cache.m3.medium, cache.m3.large, cache.m3.xlarge, cache.m3.2xlarge, cache.m4.large, cache.m4.xlarge, cache.m4.2xlarge, cache.m4.4xlarge, cache.m4.10xlarge Previous generation: cache.t1.micro, cache.m1.small, cache.m1.medium, cache.m1.large, cache.m1.xlarge Compute optimized: cache.c1.xlarge Memory optimized: Current generation: cache.r3.large, cache.r3.xlarge, cache.r3.2xlarge, cache.r3.4xlarge, cache.r3.8xlarge Previous generation: cache.m2.xlarge, cache.m2.2xlarge, cache.m2.4xlarge Notes: All T2 instances are created in an Amazon Virtual Private Cloud (Amazon VPC). Redis backup/restore is not supported for Redis (cluster mode disabled) T1 and T2 instances. Backup/restore is supported on Redis (cluster mode enabled) T2 instances. Redis Append-only files (AOF) functionality is not supported for T1 or T2 instances. For a complete listing of node types and specifications, see Amazon ElastiCache Product Features and Details and either Cache Node Type-Specific Parameters for Memcached or Cache Node Type-Specific Parameters for Redis. - */ - CacheNodeType?: String; - /** - * The duration filter value, specified in years or seconds. Use this parameter to show only reservations for this duration. Valid Values: 1 | 3 | 31536000 | 94608000 - */ - Duration?: String; - /** - * The product description filter value. Use this parameter to show only those reservations matching the specified product description. - */ - ProductDescription?: String; - /** - * The offering type filter value. Use this parameter to show only the available offerings matching the specified offering type. Valid values: "Light Utilization"|"Medium Utilization"|"Heavy Utilization" - */ - OfferingType?: String; - /** - * The maximum number of records to include in the response. If more records exist than the specified MaxRecords value, a marker is included in the response so that the remaining results can be retrieved. Default: 100 Constraints: minimum 20; maximum 100. - */ - MaxRecords?: IntegerOptional; - /** - * An optional marker returned from a prior request. Use this marker for pagination of results from this operation. If this parameter is specified, the response includes only records beyond the marker, up to the value specified by MaxRecords. - */ - Marker?: String; - } - export interface DescribeReservedCacheNodesOfferingsMessage { - /** - * The offering identifier filter value. Use this parameter to show only the available offering that matches the specified reservation identifier. Example: 438012d3-4052-4cc7-b2e3-8d3372e0e706 - */ - ReservedCacheNodesOfferingId?: String; - /** - * The cache node type filter value. Use this parameter to show only the available offerings matching the specified cache node type. Valid node types are as follows: General purpose: Current generation: cache.t2.micro, cache.t2.small, cache.t2.medium, cache.m3.medium, cache.m3.large, cache.m3.xlarge, cache.m3.2xlarge, cache.m4.large, cache.m4.xlarge, cache.m4.2xlarge, cache.m4.4xlarge, cache.m4.10xlarge Previous generation: cache.t1.micro, cache.m1.small, cache.m1.medium, cache.m1.large, cache.m1.xlarge Compute optimized: cache.c1.xlarge Memory optimized: Current generation: cache.r3.large, cache.r3.xlarge, cache.r3.2xlarge, cache.r3.4xlarge, cache.r3.8xlarge Previous generation: cache.m2.xlarge, cache.m2.2xlarge, cache.m2.4xlarge Notes: All T2 instances are created in an Amazon Virtual Private Cloud (Amazon VPC). Redis backup/restore is not supported for Redis (cluster mode disabled) T1 and T2 instances. Backup/restore is supported on Redis (cluster mode enabled) T2 instances. Redis Append-only files (AOF) functionality is not supported for T1 or T2 instances. For a complete listing of node types and specifications, see Amazon ElastiCache Product Features and Details and either Cache Node Type-Specific Parameters for Memcached or Cache Node Type-Specific Parameters for Redis. - */ - CacheNodeType?: String; - /** - * Duration filter value, specified in years or seconds. Use this parameter to show only reservations for a given duration. Valid Values: 1 | 3 | 31536000 | 94608000 - */ - Duration?: String; - /** - * The product description filter value. Use this parameter to show only the available offerings matching the specified product description. - */ - ProductDescription?: String; - /** - * The offering type filter value. Use this parameter to show only the available offerings matching the specified offering type. Valid Values: "Light Utilization"|"Medium Utilization"|"Heavy Utilization" - */ - OfferingType?: String; - /** - * The maximum number of records to include in the response. If more records exist than the specified MaxRecords value, a marker is included in the response so that the remaining results can be retrieved. Default: 100 Constraints: minimum 20; maximum 100. - */ - MaxRecords?: IntegerOptional; - /** - * An optional marker returned from a prior request. Use this marker for pagination of results from this operation. If this parameter is specified, the response includes only records beyond the marker, up to the value specified by MaxRecords. - */ - Marker?: String; - } - export interface DescribeSnapshotsListMessage { - /** - * An optional marker returned from a prior request. Use this marker for pagination of results from this operation. If this parameter is specified, the response includes only records beyond the marker, up to the value specified by MaxRecords. - */ - Marker?: String; - /** - * A list of snapshots. Each item in the list contains detailed information about one snapshot. - */ - Snapshots?: SnapshotList; - } - export interface DescribeSnapshotsMessage { - /** - * A user-supplied replication group identifier. If this parameter is specified, only snapshots associated with that specific replication group are described. - */ - ReplicationGroupId?: String; - /** - * A user-supplied cluster identifier. If this parameter is specified, only snapshots associated with that specific cache cluster are described. - */ - CacheClusterId?: String; - /** - * A user-supplied name of the snapshot. If this parameter is specified, only this snapshot are described. - */ - SnapshotName?: String; - /** - * If set to system, the output shows snapshots that were automatically created by ElastiCache. If set to user the output shows snapshots that were manually created. If omitted, the output shows both automatically and manually created snapshots. - */ - SnapshotSource?: String; - /** - * An optional marker returned from a prior request. Use this marker for pagination of results from this operation. If this parameter is specified, the response includes only records beyond the marker, up to the value specified by MaxRecords. - */ - Marker?: String; - /** - * The maximum number of records to include in the response. If more records exist than the specified MaxRecords value, a marker is included in the response so that the remaining results can be retrieved. Default: 50 Constraints: minimum 20; maximum 50. - */ - MaxRecords?: IntegerOptional; - /** - * A Boolean value which if true, the node group (shard) configuration is included in the snapshot description. - */ - ShowNodeGroupConfig?: BooleanOptional; - } - export type Double = number; - export interface EC2SecurityGroup { - /** - * The status of the Amazon EC2 security group. - */ - Status?: String; - /** - * The name of the Amazon EC2 security group. - */ - EC2SecurityGroupName?: String; - /** - * The AWS account ID of the Amazon EC2 security group owner. - */ - EC2SecurityGroupOwnerId?: String; - } - export type EC2SecurityGroupList = EC2SecurityGroup[]; - export interface Endpoint { - /** - * The DNS hostname of the cache node. - */ - Address?: String; - /** - * The port number that the cache engine is listening on. - */ - Port?: Integer; - } - export interface EngineDefaults { - /** - * Specifies the name of the cache parameter group family to which the engine default parameters apply. Valid values are: memcached1.4 | redis2.6 | redis2.8 | redis3.2 - */ - CacheParameterGroupFamily?: String; - /** - * Provides an identifier to allow retrieval of paginated results. - */ - Marker?: String; - /** - * Contains a list of engine default parameters. - */ - Parameters?: ParametersList; - /** - * A list of parameters specific to a particular cache node type. Each element in the list contains detailed information about one parameter. - */ - CacheNodeTypeSpecificParameters?: CacheNodeTypeSpecificParametersList; - } - export interface Event { - /** - * The identifier for the source of the event. For example, if the event occurred at the cache cluster level, the identifier would be the name of the cache cluster. - */ - SourceIdentifier?: String; - /** - * Specifies the origin of this event - a cache cluster, a parameter group, a security group, etc. - */ - SourceType?: SourceType; - /** - * The text of the event. - */ - Message?: String; - /** - * The date and time when the event occurred. - */ - Date?: TStamp; - } - export type EventList = Event[]; - export interface EventsMessage { - /** - * Provides an identifier to allow retrieval of paginated results. - */ - Marker?: String; - /** - * A list of events. Each element in the list contains detailed information about one event. - */ - Events?: EventList; - } - export type Integer = number; - export type IntegerOptional = number; - export type KeyList = String[]; - export interface ListAllowedNodeTypeModificationsMessage { - /** - * The name of the cache cluster you want to scale up to a larger node instanced type. ElastiCache uses the cluster id to identify the current node type of this cluster and from that to create a list of node types you can scale up to. You must provide a value for either the CacheClusterId or the ReplicationGroupId. - */ - CacheClusterId?: String; - /** - * The name of the replication group want to scale up to a larger node type. ElastiCache uses the replication group id to identify the current node type being used by this replication group, and from that to create a list of node types you can scale up to. You must provide a value for either the CacheClusterId or the ReplicationGroupId. - */ - ReplicationGroupId?: String; - } - export interface ListTagsForResourceMessage { - /** - * The Amazon Resource Name (ARN) of the resource for which you want the list of tags, for example arn:aws:elasticache:us-west-2:0123456789:cluster:myCluster or arn:aws:elasticache:us-west-2:0123456789:snapshot:mySnapshot. For more information about ARNs, see Amazon Resource Names (ARNs) and AWS Service Namespaces. - */ - ResourceName: String; - } - export interface ModifyCacheClusterMessage { - /** - * The cache cluster identifier. This value is stored as a lowercase string. - */ - CacheClusterId: String; - /** - * The number of cache nodes that the cache cluster should have. If the value for NumCacheNodes is greater than the sum of the number of current cache nodes and the number of cache nodes pending creation (which may be zero), more nodes are added. If the value is less than the number of existing cache nodes, nodes are removed. If the value is equal to the number of current cache nodes, any pending add or remove requests are canceled. If you are removing cache nodes, you must use the CacheNodeIdsToRemove parameter to provide the IDs of the specific cache nodes to remove. For clusters running Redis, this value must be 1. For clusters running Memcached, this value must be between 1 and 20. Adding or removing Memcached cache nodes can be applied immediately or as a pending operation (see ApplyImmediately). A pending operation to modify the number of cache nodes in a cluster during its maintenance window, whether by adding or removing nodes in accordance with the scale out architecture, is not queued. The customer's latest request to add or remove nodes to the cluster overrides any previous pending operations to modify the number of cache nodes in the cluster. For example, a request to remove 2 nodes would override a previous pending operation to remove 3 nodes. Similarly, a request to add 2 nodes would override a previous pending operation to remove 3 nodes and vice versa. As Memcached cache nodes may now be provisioned in different Availability Zones with flexible cache node placement, a request to add nodes does not automatically override a previous pending operation to add nodes. The customer can modify the previous pending operation to add more nodes or explicitly cancel the pending request and retry the new request. To cancel pending operations to modify the number of cache nodes in a cluster, use the ModifyCacheCluster request and set NumCacheNodes equal to the number of cache nodes currently in the cache cluster. - */ - NumCacheNodes?: IntegerOptional; - /** - * A list of cache node IDs to be removed. A node ID is a numeric identifier (0001, 0002, etc.). This parameter is only valid when NumCacheNodes is less than the existing number of cache nodes. The number of cache node IDs supplied in this parameter must match the difference between the existing number of cache nodes in the cluster or pending cache nodes, whichever is greater, and the value of NumCacheNodes in the request. For example: If you have 3 active cache nodes, 7 pending cache nodes, and the number of cache nodes in this ModifyCacheCluser call is 5, you must list 2 (7 - 5) cache node IDs to remove. - */ - CacheNodeIdsToRemove?: CacheNodeIdsList; - /** - * Specifies whether the new nodes in this Memcached cache cluster are all created in a single Availability Zone or created across multiple Availability Zones. Valid values: single-az | cross-az. This option is only supported for Memcached cache clusters. You cannot specify single-az if the Memcached cache cluster already has cache nodes in different Availability Zones. If cross-az is specified, existing Memcached nodes remain in their current Availability Zone. Only newly created nodes are located in different Availability Zones. For instructions on how to move existing Memcached nodes to different Availability Zones, see the Availability Zone Considerations section of Cache Node Considerations for Memcached. - */ - AZMode?: AZMode; - /** - * The list of Availability Zones where the new Memcached cache nodes are created. This parameter is only valid when NumCacheNodes in the request is greater than the sum of the number of active cache nodes and the number of cache nodes pending creation (which may be zero). The number of Availability Zones supplied in this list must match the cache nodes being added in this request. This option is only supported on Memcached clusters. Scenarios: Scenario 1: You have 3 active nodes and wish to add 2 nodes. Specify NumCacheNodes=5 (3 + 2) and optionally specify two Availability Zones for the two new nodes. Scenario 2: You have 3 active nodes and 2 nodes pending creation (from the scenario 1 call) and want to add 1 more node. Specify NumCacheNodes=6 ((3 + 2) + 1) and optionally specify an Availability Zone for the new node. Scenario 3: You want to cancel all pending operations. Specify NumCacheNodes=3 to cancel all pending operations. The Availability Zone placement of nodes pending creation cannot be modified. If you wish to cancel any nodes pending creation, add 0 nodes by setting NumCacheNodes to the number of current nodes. If cross-az is specified, existing Memcached nodes remain in their current Availability Zone. Only newly created nodes can be located in different Availability Zones. For guidance on how to move existing Memcached nodes to different Availability Zones, see the Availability Zone Considerations section of Cache Node Considerations for Memcached. Impact of new add/remove requests upon pending requests Scenario-1 Pending Action: Delete New Request: Delete Result: The new delete, pending or immediate, replaces the pending delete. Scenario-2 Pending Action: Delete New Request: Create Result: The new create, pending or immediate, replaces the pending delete. Scenario-3 Pending Action: Create New Request: Delete Result: The new delete, pending or immediate, replaces the pending create. Scenario-4 Pending Action: Create New Request: Create Result: The new create is added to the pending create. Important: If the new create request is Apply Immediately - Yes, all creates are performed immediately. If the new create request is Apply Immediately - No, all creates are pending. - */ - NewAvailabilityZones?: PreferredAvailabilityZoneList; - /** - * A list of cache security group names to authorize on this cache cluster. This change is asynchronously applied as soon as possible. You can use this parameter only with clusters that are created outside of an Amazon Virtual Private Cloud (Amazon VPC). Constraints: Must contain no more than 255 alphanumeric characters. Must not be "Default". - */ - CacheSecurityGroupNames?: CacheSecurityGroupNameList; - /** - * Specifies the VPC Security Groups associated with the cache cluster. This parameter can be used only with clusters that are created in an Amazon Virtual Private Cloud (Amazon VPC). - */ - SecurityGroupIds?: SecurityGroupIdsList; - /** - * Specifies the weekly time range during which maintenance on the cluster is performed. It is specified as a range in the format ddd:hh24:mi-ddd:hh24:mi (24H Clock UTC). The minimum maintenance window is a 60 minute period. Valid values for ddd are: sun mon tue wed thu fri sat Example: sun:23:00-mon:01:30 - */ - PreferredMaintenanceWindow?: String; - /** - * The Amazon Resource Name (ARN) of the Amazon SNS topic to which notifications are sent. The Amazon SNS topic owner must be same as the cache cluster owner. - */ - NotificationTopicArn?: String; - /** - * The name of the cache parameter group to apply to this cache cluster. This change is asynchronously applied as soon as possible for parameters when the ApplyImmediately parameter is specified as true for this request. - */ - CacheParameterGroupName?: String; - /** - * The status of the Amazon SNS notification topic. Notifications are sent only if the status is active. Valid values: active | inactive - */ - NotificationTopicStatus?: String; - /** - * If true, this parameter causes the modifications in this request and any pending modifications to be applied, asynchronously and as soon as possible, regardless of the PreferredMaintenanceWindow setting for the cache cluster. If false, changes to the cache cluster are applied on the next maintenance reboot, or the next failure reboot, whichever occurs first. If you perform a ModifyCacheCluster before a pending modification is applied, the pending modification is replaced by the newer modification. Valid values: true | false Default: false - */ - ApplyImmediately?: Boolean; - /** - * The upgraded version of the cache engine to be run on the cache nodes. Important: You can upgrade to a newer engine version (see Selecting a Cache Engine and Version), but you cannot downgrade to an earlier engine version. If you want to use an earlier engine version, you must delete the existing cache cluster and create it anew with the earlier engine version. - */ - EngineVersion?: String; - /** - * This parameter is currently disabled. - */ - AutoMinorVersionUpgrade?: BooleanOptional; - /** - * The number of days for which ElastiCache retains automatic cache cluster snapshots before deleting them. For example, if you set SnapshotRetentionLimit to 5, a snapshot that was taken today is retained for 5 days before being deleted. If the value of SnapshotRetentionLimit is set to zero (0), backups are turned off. - */ - SnapshotRetentionLimit?: IntegerOptional; - /** - * The daily time range (in UTC) during which ElastiCache begins taking a daily snapshot of your cache cluster. - */ - SnapshotWindow?: String; - /** - * A valid cache node type that you want to scale this cache cluster up to. - */ - CacheNodeType?: String; - } - export interface ModifyCacheClusterResult { - CacheCluster?: CacheCluster; - } - export interface ModifyCacheParameterGroupMessage { - /** - * The name of the cache parameter group to modify. - */ - CacheParameterGroupName: String; - /** - * An array of parameter names and values for the parameter update. You must supply at least one parameter name and value; subsequent arguments are optional. A maximum of 20 parameters may be modified per request. - */ - ParameterNameValues: ParameterNameValueList; - } - export interface ModifyCacheSubnetGroupMessage { - /** - * The name for the cache subnet group. This value is stored as a lowercase string. Constraints: Must contain no more than 255 alphanumeric characters or hyphens. Example: mysubnetgroup - */ - CacheSubnetGroupName: String; - /** - * A description of the cache subnet group. - */ - CacheSubnetGroupDescription?: String; - /** - * The EC2 subnet IDs for the cache subnet group. - */ - SubnetIds?: SubnetIdentifierList; - } - export interface ModifyCacheSubnetGroupResult { - CacheSubnetGroup?: CacheSubnetGroup; - } - export interface ModifyReplicationGroupMessage { - /** - * The identifier of the replication group to modify. - */ - ReplicationGroupId: String; - /** - * A description for the replication group. Maximum length is 255 characters. - */ - ReplicationGroupDescription?: String; - /** - * For replication groups with a single primary, if this parameter is specified, ElastiCache promotes the specified cluster in the specified replication group to the primary role. The nodes of all other clusters in the replication group are read replicas. - */ - PrimaryClusterId?: String; - /** - * The cache cluster ID that is used as the daily snapshot source for the replication group. This parameter cannot be set for Redis (cluster mode enabled) replication groups. - */ - SnapshottingClusterId?: String; - /** - * Determines whether a read replica is automatically promoted to read/write primary if the existing primary encounters a failure. Valid values: true | false ElastiCache Multi-AZ replication groups are not supported on: Redis versions earlier than 2.8.6. Redis (cluster mode disabled):T1 and T2 cache node types. Redis (cluster mode enabled): T1 node types. - */ - AutomaticFailoverEnabled?: BooleanOptional; - /** - * A list of cache security group names to authorize for the clusters in this replication group. This change is asynchronously applied as soon as possible. This parameter can be used only with replication group containing cache clusters running outside of an Amazon Virtual Private Cloud (Amazon VPC). Constraints: Must contain no more than 255 alphanumeric characters. Must not be Default. - */ - CacheSecurityGroupNames?: CacheSecurityGroupNameList; - /** - * Specifies the VPC Security Groups associated with the cache clusters in the replication group. This parameter can be used only with replication group containing cache clusters running in an Amazon Virtual Private Cloud (Amazon VPC). - */ - SecurityGroupIds?: SecurityGroupIdsList; - /** - * Specifies the weekly time range during which maintenance on the cluster is performed. It is specified as a range in the format ddd:hh24:mi-ddd:hh24:mi (24H Clock UTC). The minimum maintenance window is a 60 minute period. Valid values for ddd are: sun mon tue wed thu fri sat Example: sun:23:00-mon:01:30 - */ - PreferredMaintenanceWindow?: String; - /** - * The Amazon Resource Name (ARN) of the Amazon SNS topic to which notifications are sent. The Amazon SNS topic owner must be same as the replication group owner. - */ - NotificationTopicArn?: String; - /** - * The name of the cache parameter group to apply to all of the clusters in this replication group. This change is asynchronously applied as soon as possible for parameters when the ApplyImmediately parameter is specified as true for this request. - */ - CacheParameterGroupName?: String; - /** - * The status of the Amazon SNS notification topic for the replication group. Notifications are sent only if the status is active. Valid values: active | inactive - */ - NotificationTopicStatus?: String; - /** - * If true, this parameter causes the modifications in this request and any pending modifications to be applied, asynchronously and as soon as possible, regardless of the PreferredMaintenanceWindow setting for the replication group. If false, changes to the nodes in the replication group are applied on the next maintenance reboot, or the next failure reboot, whichever occurs first. Valid values: true | false Default: false - */ - ApplyImmediately?: Boolean; - /** - * The upgraded version of the cache engine to be run on the cache clusters in the replication group. Important: You can upgrade to a newer engine version (see Selecting a Cache Engine and Version), but you cannot downgrade to an earlier engine version. If you want to use an earlier engine version, you must delete the existing replication group and create it anew with the earlier engine version. - */ - EngineVersion?: String; - /** - * This parameter is currently disabled. - */ - AutoMinorVersionUpgrade?: BooleanOptional; - /** - * The number of days for which ElastiCache retains automatic node group (shard) snapshots before deleting them. For example, if you set SnapshotRetentionLimit to 5, a snapshot that was taken today is retained for 5 days before being deleted. Important If the value of SnapshotRetentionLimit is set to zero (0), backups are turned off. - */ - SnapshotRetentionLimit?: IntegerOptional; - /** - * The daily time range (in UTC) during which ElastiCache begins taking a daily snapshot of the node group (shard) specified by SnapshottingClusterId. Example: 05:00-09:00 If you do not specify this parameter, ElastiCache automatically chooses an appropriate time range. - */ - SnapshotWindow?: String; - /** - * A valid cache node type that you want to scale this replication group to. - */ - CacheNodeType?: String; - /** - * The name of the Node Group (called shard in the console). - */ - NodeGroupId?: String; - } - export interface ModifyReplicationGroupResult { - ReplicationGroup?: ReplicationGroup; - } - export interface NodeGroup { - /** - * The identifier for the node group (shard). A Redis (cluster mode disabled) replication group contains only 1 node group; therefore, the node group ID is 0001. A Redis (cluster mode enabled) replication group contains 1 to 15 node groups numbered 0001 to 0015. - */ - NodeGroupId?: String; - /** - * The current state of this replication group - creating, available, etc. - */ - Status?: String; - /** - * The endpoint of the primary node in this node group (shard). - */ - PrimaryEndpoint?: Endpoint; - /** - * The keyspace for this node group (shard). - */ - Slots?: String; - /** - * A list containing information about individual nodes within the node group (shard). - */ - NodeGroupMembers?: NodeGroupMemberList; - } - export interface NodeGroupConfiguration { - /** - * A string that specifies the keyspace for a particular node group. Keyspaces range from 0 to 16,383. The string is in the format startkey-endkey. Example: "0-3999" - */ - Slots?: String; - /** - * The number of read replica nodes in this node group (shard). - */ - ReplicaCount?: IntegerOptional; - /** - * The Availability Zone where the primary node of this node group (shard) is launched. - */ - PrimaryAvailabilityZone?: String; - /** - * A list of Availability Zones to be used for the read replicas. The number of Availability Zones in this list must match the value of ReplicaCount or ReplicasPerNodeGroup if not specified. - */ - ReplicaAvailabilityZones?: AvailabilityZonesList; - } - export type NodeGroupConfigurationList = NodeGroupConfiguration[]; - export type NodeGroupList = NodeGroup[]; - export interface NodeGroupMember { - /** - * The ID of the cache cluster to which the node belongs. - */ - CacheClusterId?: String; - /** - * The ID of the node within its cache cluster. A node ID is a numeric identifier (0001, 0002, etc.). - */ - CacheNodeId?: String; - ReadEndpoint?: Endpoint; - /** - * The name of the Availability Zone in which the node is located. - */ - PreferredAvailabilityZone?: String; - /** - * The role that is currently assigned to the node - primary or replica. - */ - CurrentRole?: String; - } - export type NodeGroupMemberList = NodeGroupMember[]; - export interface NodeSnapshot { - /** - * A unique identifier for the source cache cluster. - */ - CacheClusterId?: String; - /** - * A unique identifier for the source node group (shard). - */ - NodeGroupId?: String; - /** - * The cache node identifier for the node in the source cache cluster. - */ - CacheNodeId?: String; - /** - * The configuration for the source node group (shard). - */ - NodeGroupConfiguration?: NodeGroupConfiguration; - /** - * The size of the cache on the source cache node. - */ - CacheSize?: String; - /** - * The date and time when the cache node was created in the source cache cluster. - */ - CacheNodeCreateTime?: TStamp; - /** - * The date and time when the source node's metadata and cache data set was obtained for the snapshot. - */ - SnapshotCreateTime?: TStamp; - } - export type NodeSnapshotList = NodeSnapshot[]; - export type NodeTypeList = String[]; - export interface NotificationConfiguration { - /** - * The Amazon Resource Name (ARN) that identifies the topic. - */ - TopicArn?: String; - /** - * The current state of the topic. - */ - TopicStatus?: String; - } - export interface Parameter { - /** - * The name of the parameter. - */ - ParameterName?: String; - /** - * The value of the parameter. - */ - ParameterValue?: String; - /** - * A description of the parameter. - */ - Description?: String; - /** - * The source of the parameter. - */ - Source?: String; - /** - * The valid data type for the parameter. - */ - DataType?: String; - /** - * The valid range of values for the parameter. - */ - AllowedValues?: String; - /** - * Indicates whether (true) or not (false) the parameter can be modified. Some parameters have security or operational implications that prevent them from being changed. - */ - IsModifiable?: Boolean; - /** - * The earliest cache engine version to which the parameter can apply. - */ - MinimumEngineVersion?: String; - /** - * Indicates whether a change to the parameter is applied immediately or requires a reboot for the change to be applied. You can force a reboot or wait until the next maintenance window's reboot. For more information, see Rebooting a Cluster. - */ - ChangeType?: ChangeType; - } - export interface ParameterNameValue { - /** - * The name of the parameter. - */ - ParameterName?: String; - /** - * The value of the parameter. - */ - ParameterValue?: String; - } - export type ParameterNameValueList = ParameterNameValue[]; - export type ParametersList = Parameter[]; - export type PendingAutomaticFailoverStatus = "enabled"|"disabled"|string; - export interface PendingModifiedValues { - /** - * The new number of cache nodes for the cache cluster. For clusters running Redis, this value must be 1. For clusters running Memcached, this value must be between 1 and 20. - */ - NumCacheNodes?: IntegerOptional; - /** - * A list of cache node IDs that are being removed (or will be removed) from the cache cluster. A node ID is a numeric identifier (0001, 0002, etc.). - */ - CacheNodeIdsToRemove?: CacheNodeIdsList; - /** - * The new cache engine version that the cache cluster runs. - */ - EngineVersion?: String; - /** - * The cache node type that this cache cluster or replication group is scaled to. - */ - CacheNodeType?: String; - } - export type PreferredAvailabilityZoneList = String[]; - export interface PurchaseReservedCacheNodesOfferingMessage { - /** - * The ID of the reserved cache node offering to purchase. Example: 438012d3-4052-4cc7-b2e3-8d3372e0e706 - */ - ReservedCacheNodesOfferingId: String; - /** - * A customer-specified identifier to track this reservation. The Reserved Cache Node ID is an unique customer-specified identifier to track this reservation. If this parameter is not specified, ElastiCache automatically generates an identifier for the reservation. Example: myreservationID - */ - ReservedCacheNodeId?: String; - /** - * The number of cache node instances to reserve. Default: 1 - */ - CacheNodeCount?: IntegerOptional; - } - export interface PurchaseReservedCacheNodesOfferingResult { - ReservedCacheNode?: ReservedCacheNode; - } - export interface RebootCacheClusterMessage { - /** - * The cache cluster identifier. This parameter is stored as a lowercase string. - */ - CacheClusterId: String; - /** - * A list of cache node IDs to reboot. A node ID is a numeric identifier (0001, 0002, etc.). To reboot an entire cache cluster, specify all of the cache node IDs. - */ - CacheNodeIdsToReboot: CacheNodeIdsList; - } - export interface RebootCacheClusterResult { - CacheCluster?: CacheCluster; - } - export interface RecurringCharge { - /** - * The monetary amount of the recurring charge. - */ - RecurringChargeAmount?: Double; - /** - * The frequency of the recurring charge. - */ - RecurringChargeFrequency?: String; - } - export type RecurringChargeList = RecurringCharge[]; - export interface RemoveTagsFromResourceMessage { - /** - * The Amazon Resource Name (ARN) of the resource from which you want the tags removed, for example arn:aws:elasticache:us-west-2:0123456789:cluster:myCluster or arn:aws:elasticache:us-west-2:0123456789:snapshot:mySnapshot. For more information about ARNs, see Amazon Resource Names (ARNs) and AWS Service Namespaces. - */ - ResourceName: String; - /** - * A list of TagKeys identifying the tags you want removed from the named resource. - */ - TagKeys: KeyList; - } - export interface ReplicationGroup { - /** - * The identifier for the replication group. - */ - ReplicationGroupId?: String; - /** - * The description of the replication group. - */ - Description?: String; - /** - * The current state of this replication group - creating, available, modifying, deleting, create-failed, snapshotting. - */ - Status?: String; - /** - * A group of settings to be applied to the replication group, either immediately or during the next maintenance window. - */ - PendingModifiedValues?: ReplicationGroupPendingModifiedValues; - /** - * The names of all the cache clusters that are part of this replication group. - */ - MemberClusters?: ClusterIdList; - /** - * A single element list with information about the nodes in the replication group. - */ - NodeGroups?: NodeGroupList; - /** - * The cache cluster ID that is used as the daily snapshot source for the replication group. - */ - SnapshottingClusterId?: String; - /** - * Indicates the status of Multi-AZ for this replication group. ElastiCache Multi-AZ replication groups are not supported on: Redis versions earlier than 2.8.6. Redis (cluster mode disabled):T1 and T2 cache node types. Redis (cluster mode enabled): T1 node types. - */ - AutomaticFailover?: AutomaticFailoverStatus; - /** - * The configuration endpoint for this replicaiton group. Use the configuration endpoint to connect to this replication group. - */ - ConfigurationEndpoint?: Endpoint; - /** - * The number of days for which ElastiCache retains automatic cache cluster snapshots before deleting them. For example, if you set SnapshotRetentionLimit to 5, a snapshot that was taken today is retained for 5 days before being deleted. If the value of SnapshotRetentionLimit is set to zero (0), backups are turned off. - */ - SnapshotRetentionLimit?: IntegerOptional; - /** - * The daily time range (in UTC) during which ElastiCache begins taking a daily snapshot of your node group (shard). Example: 05:00-09:00 If you do not specify this parameter, ElastiCache automatically chooses an appropriate time range. Note: This parameter is only valid if the Engine parameter is redis. - */ - SnapshotWindow?: String; - /** - * A flag indicating whether or not this replication group is cluster enabled; i.e., whether its data can be partitioned across multiple shards (API/CLI: node groups). Valid values: true | false - */ - ClusterEnabled?: BooleanOptional; - /** - * The name of the compute and memory capacity node type for each node in the replication group. - */ - CacheNodeType?: String; - } - export type ReplicationGroupList = ReplicationGroup[]; - export interface ReplicationGroupMessage { - /** - * Provides an identifier to allow retrieval of paginated results. - */ - Marker?: String; - /** - * A list of replication groups. Each item in the list contains detailed information about one replication group. - */ - ReplicationGroups?: ReplicationGroupList; - } - export interface ReplicationGroupPendingModifiedValues { - /** - * The primary cluster ID that is applied immediately (if --apply-immediately was specified), or during the next maintenance window. - */ - PrimaryClusterId?: String; - /** - * Indicates the status of Multi-AZ for this Redis replication group. ElastiCache Multi-AZ replication groups are not supported on: Redis versions earlier than 2.8.6. Redis (cluster mode disabled):T1 and T2 cache node types. Redis (cluster mode enabled): T1 node types. - */ - AutomaticFailoverStatus?: PendingAutomaticFailoverStatus; - } - export interface ReservedCacheNode { - /** - * The unique identifier for the reservation. - */ - ReservedCacheNodeId?: String; - /** - * The offering identifier. - */ - ReservedCacheNodesOfferingId?: String; - /** - * The cache node type for the reserved cache nodes. Valid node types are as follows: General purpose: Current generation: cache.t2.micro, cache.t2.small, cache.t2.medium, cache.m3.medium, cache.m3.large, cache.m3.xlarge, cache.m3.2xlarge, cache.m4.large, cache.m4.xlarge, cache.m4.2xlarge, cache.m4.4xlarge, cache.m4.10xlarge Previous generation: cache.t1.micro, cache.m1.small, cache.m1.medium, cache.m1.large, cache.m1.xlarge Compute optimized: cache.c1.xlarge Memory optimized: Current generation: cache.r3.large, cache.r3.xlarge, cache.r3.2xlarge, cache.r3.4xlarge, cache.r3.8xlarge Previous generation: cache.m2.xlarge, cache.m2.2xlarge, cache.m2.4xlarge Notes: All T2 instances are created in an Amazon Virtual Private Cloud (Amazon VPC). Redis backup/restore is not supported for Redis (cluster mode disabled) T1 and T2 instances. Backup/restore is supported on Redis (cluster mode enabled) T2 instances. Redis Append-only files (AOF) functionality is not supported for T1 or T2 instances. For a complete listing of node types and specifications, see Amazon ElastiCache Product Features and Details and either Cache Node Type-Specific Parameters for Memcached or Cache Node Type-Specific Parameters for Redis. - */ - CacheNodeType?: String; - /** - * The time the reservation started. - */ - StartTime?: TStamp; - /** - * The duration of the reservation in seconds. - */ - Duration?: Integer; - /** - * The fixed price charged for this reserved cache node. - */ - FixedPrice?: Double; - /** - * The hourly price charged for this reserved cache node. - */ - UsagePrice?: Double; - /** - * The number of cache nodes that have been reserved. - */ - CacheNodeCount?: Integer; - /** - * The description of the reserved cache node. - */ - ProductDescription?: String; - /** - * The offering type of this reserved cache node. - */ - OfferingType?: String; - /** - * The state of the reserved cache node. - */ - State?: String; - /** - * The recurring price charged to run this reserved cache node. - */ - RecurringCharges?: RecurringChargeList; - } - export type ReservedCacheNodeList = ReservedCacheNode[]; - export interface ReservedCacheNodeMessage { - /** - * Provides an identifier to allow retrieval of paginated results. - */ - Marker?: String; - /** - * A list of reserved cache nodes. Each element in the list contains detailed information about one node. - */ - ReservedCacheNodes?: ReservedCacheNodeList; - } - export interface ReservedCacheNodesOffering { - /** - * A unique identifier for the reserved cache node offering. - */ - ReservedCacheNodesOfferingId?: String; - /** - * The cache node type for the reserved cache node. Valid node types are as follows: General purpose: Current generation: cache.t2.micro, cache.t2.small, cache.t2.medium, cache.m3.medium, cache.m3.large, cache.m3.xlarge, cache.m3.2xlarge, cache.m4.large, cache.m4.xlarge, cache.m4.2xlarge, cache.m4.4xlarge, cache.m4.10xlarge Previous generation: cache.t1.micro, cache.m1.small, cache.m1.medium, cache.m1.large, cache.m1.xlarge Compute optimized: cache.c1.xlarge Memory optimized: Current generation: cache.r3.large, cache.r3.xlarge, cache.r3.2xlarge, cache.r3.4xlarge, cache.r3.8xlarge Previous generation: cache.m2.xlarge, cache.m2.2xlarge, cache.m2.4xlarge Notes: All T2 instances are created in an Amazon Virtual Private Cloud (Amazon VPC). Redis backup/restore is not supported for Redis (cluster mode disabled) T1 and T2 instances. Backup/restore is supported on Redis (cluster mode enabled) T2 instances. Redis Append-only files (AOF) functionality is not supported for T1 or T2 instances. For a complete listing of node types and specifications, see Amazon ElastiCache Product Features and Details and either Cache Node Type-Specific Parameters for Memcached or Cache Node Type-Specific Parameters for Redis. - */ - CacheNodeType?: String; - /** - * The duration of the offering. in seconds. - */ - Duration?: Integer; - /** - * The fixed price charged for this offering. - */ - FixedPrice?: Double; - /** - * The hourly price charged for this offering. - */ - UsagePrice?: Double; - /** - * The cache engine used by the offering. - */ - ProductDescription?: String; - /** - * The offering type. - */ - OfferingType?: String; - /** - * The recurring price charged to run this reserved cache node. - */ - RecurringCharges?: RecurringChargeList; - } - export type ReservedCacheNodesOfferingList = ReservedCacheNodesOffering[]; - export interface ReservedCacheNodesOfferingMessage { - /** - * Provides an identifier to allow retrieval of paginated results. - */ - Marker?: String; - /** - * A list of reserved cache node offerings. Each element in the list contains detailed information about one offering. - */ - ReservedCacheNodesOfferings?: ReservedCacheNodesOfferingList; - } - export interface ResetCacheParameterGroupMessage { - /** - * The name of the cache parameter group to reset. - */ - CacheParameterGroupName: String; - /** - * If true, all parameters in the cache parameter group are reset to their default values. If false, only the parameters listed by ParameterNameValues are reset to their default values. Valid values: true | false - */ - ResetAllParameters?: Boolean; - /** - * An array of parameter names to reset to their default values. If ResetAllParameters is true, do not use ParameterNameValues. If ResetAllParameters is false, you must specify the name of at least one parameter to reset. - */ - ParameterNameValues?: ParameterNameValueList; - } - export interface RevokeCacheSecurityGroupIngressMessage { - /** - * The name of the cache security group to revoke ingress from. - */ - CacheSecurityGroupName: String; - /** - * The name of the Amazon EC2 security group to revoke access from. - */ - EC2SecurityGroupName: String; - /** - * The AWS account number of the Amazon EC2 security group owner. Note that this is not the same thing as an AWS access key ID - you must provide a valid AWS account number for this parameter. - */ - EC2SecurityGroupOwnerId: String; - } - export interface RevokeCacheSecurityGroupIngressResult { - CacheSecurityGroup?: CacheSecurityGroup; - } - export type SecurityGroupIdsList = String[]; - export interface SecurityGroupMembership { - /** - * The identifier of the cache security group. - */ - SecurityGroupId?: String; - /** - * The status of the cache security group membership. The status changes whenever a cache security group is modified, or when the cache security groups assigned to a cache cluster are modified. - */ - Status?: String; - } - export type SecurityGroupMembershipList = SecurityGroupMembership[]; - export interface Snapshot { - /** - * The name of a snapshot. For an automatic snapshot, the name is system-generated. For a manual snapshot, this is the user-provided name. - */ - SnapshotName?: String; - /** - * The unique identifier of the source replication group. - */ - ReplicationGroupId?: String; - /** - * A description of the source replication group. - */ - ReplicationGroupDescription?: String; - /** - * The user-supplied identifier of the source cache cluster. - */ - CacheClusterId?: String; - /** - * The status of the snapshot. Valid values: creating | available | restoring | copying | deleting. - */ - SnapshotStatus?: String; - /** - * Indicates whether the snapshot is from an automatic backup (automated) or was created manually (manual). - */ - SnapshotSource?: String; - /** - * The name of the compute and memory capacity node type for the source cache cluster. Valid node types are as follows: General purpose: Current generation: cache.t2.micro, cache.t2.small, cache.t2.medium, cache.m3.medium, cache.m3.large, cache.m3.xlarge, cache.m3.2xlarge, cache.m4.large, cache.m4.xlarge, cache.m4.2xlarge, cache.m4.4xlarge, cache.m4.10xlarge Previous generation: cache.t1.micro, cache.m1.small, cache.m1.medium, cache.m1.large, cache.m1.xlarge Compute optimized: cache.c1.xlarge Memory optimized: Current generation: cache.r3.large, cache.r3.xlarge, cache.r3.2xlarge, cache.r3.4xlarge, cache.r3.8xlarge Previous generation: cache.m2.xlarge, cache.m2.2xlarge, cache.m2.4xlarge Notes: All T2 instances are created in an Amazon Virtual Private Cloud (Amazon VPC). Redis backup/restore is not supported for Redis (cluster mode disabled) T1 and T2 instances. Backup/restore is supported on Redis (cluster mode enabled) T2 instances. Redis Append-only files (AOF) functionality is not supported for T1 or T2 instances. For a complete listing of node types and specifications, see Amazon ElastiCache Product Features and Details and either Cache Node Type-Specific Parameters for Memcached or Cache Node Type-Specific Parameters for Redis. - */ - CacheNodeType?: String; - /** - * The name of the cache engine (memcached or redis) used by the source cache cluster. - */ - Engine?: String; - /** - * The version of the cache engine version that is used by the source cache cluster. - */ - EngineVersion?: String; - /** - * The number of cache nodes in the source cache cluster. For clusters running Redis, this value must be 1. For clusters running Memcached, this value must be between 1 and 20. - */ - NumCacheNodes?: IntegerOptional; - /** - * The name of the Availability Zone in which the source cache cluster is located. - */ - PreferredAvailabilityZone?: String; - /** - * The date and time when the source cache cluster was created. - */ - CacheClusterCreateTime?: TStamp; - /** - * Specifies the weekly time range during which maintenance on the cluster is performed. It is specified as a range in the format ddd:hh24:mi-ddd:hh24:mi (24H Clock UTC). The minimum maintenance window is a 60 minute period. Valid values for ddd are: sun mon tue wed thu fri sat Example: sun:23:00-mon:01:30 - */ - PreferredMaintenanceWindow?: String; - /** - * The Amazon Resource Name (ARN) for the topic used by the source cache cluster for publishing notifications. - */ - TopicArn?: String; - /** - * The port number used by each cache nodes in the source cache cluster. - */ - Port?: IntegerOptional; - /** - * The cache parameter group that is associated with the source cache cluster. - */ - CacheParameterGroupName?: String; - /** - * The name of the cache subnet group associated with the source cache cluster. - */ - CacheSubnetGroupName?: String; - /** - * The Amazon Virtual Private Cloud identifier (VPC ID) of the cache subnet group for the source cache cluster. - */ - VpcId?: String; - /** - * This parameter is currently disabled. - */ - AutoMinorVersionUpgrade?: Boolean; - /** - * For an automatic snapshot, the number of days for which ElastiCache retains the snapshot before deleting it. For manual snapshots, this field reflects the SnapshotRetentionLimit for the source cache cluster when the snapshot was created. This field is otherwise ignored: Manual snapshots do not expire, and can only be deleted using the DeleteSnapshot operation. Important If the value of SnapshotRetentionLimit is set to zero (0), backups are turned off. - */ - SnapshotRetentionLimit?: IntegerOptional; - /** - * The daily time range during which ElastiCache takes daily snapshots of the source cache cluster. - */ - SnapshotWindow?: String; - /** - * The number of node groups (shards) in this snapshot. When restoring from a snapshot, the number of node groups (shards) in the snapshot and in the restored replication group must be the same. - */ - NumNodeGroups?: IntegerOptional; - /** - * Indicates the status of Multi-AZ for the source replication group. ElastiCache Multi-AZ replication groups are not supported on: Redis versions earlier than 2.8.6. Redis (cluster mode disabled):T1 and T2 cache node types. Redis (cluster mode enabled): T1 node types. - */ - AutomaticFailover?: AutomaticFailoverStatus; - /** - * A list of the cache nodes in the source cache cluster. - */ - NodeSnapshots?: NodeSnapshotList; - } - export type SnapshotArnsList = String[]; - export type SnapshotList = Snapshot[]; - export type SourceType = "cache-cluster"|"cache-parameter-group"|"cache-security-group"|"cache-subnet-group"|"replication-group"|string; - export type String = string; - export interface Subnet { - /** - * The unique identifier for the subnet. - */ - SubnetIdentifier?: String; - /** - * The Availability Zone associated with the subnet. - */ - SubnetAvailabilityZone?: AvailabilityZone; - } - export type SubnetIdentifierList = String[]; - export type SubnetList = Subnet[]; - export type TStamp = Date; - export interface Tag { - /** - * The key for the tag. May not be null. - */ - Key?: String; - /** - * The tag's value. May be null. - */ - Value?: String; - } - export type TagList = Tag[]; - export interface TagListMessage { - /** - * A list of cost allocation tags as key-value pairs. - */ - TagList?: TagList; - } - export interface TestFailoverMessage { - /** - * The name of the replication group (console: cluster) whose automatic failover is being tested by this operation. - */ - ReplicationGroupId: String; - /** - * The name of the node group (called shard in the console) in this replication group on which automatic failover is to be tested. You may test automatic failover on up to 5 node groups in any rolling 24-hour period. - */ - NodeGroupId: String; - } - export interface TestFailoverResult { - ReplicationGroup?: ReplicationGroup; - } - /** - * A string in YYYY-MM-DD format that represents the latest possible API version that can be used in this service. Specify 'latest' to use the latest possible version. - */ - export type apiVersion = "2012-11-15"|"2014-03-24"|"2014-07-15"|"2014-09-30"|"2015-02-02"|"latest"|string; - export interface ClientApiVersions { - /** - * A string in YYYY-MM-DD format that represents the latest possible API version that can be used in this service. Specify 'latest' to use the latest possible version. - */ - apiVersion?: apiVersion; - } - export type ClientConfiguration = ServiceConfigurationOptions & ClientApiVersions; - /** - * Contains interfaces for use with the ElastiCache client. - */ - export import Types = ElastiCache; -} -export = ElastiCache; diff --git a/workshops/monte-carlo-on-ec2-spot-fleet/src/web/node_modules/aws-sdk/clients/elasticache.js b/workshops/monte-carlo-on-ec2-spot-fleet/src/web/node_modules/aws-sdk/clients/elasticache.js deleted file mode 100644 index 0eca10e4..00000000 --- a/workshops/monte-carlo-on-ec2-spot-fleet/src/web/node_modules/aws-sdk/clients/elasticache.js +++ /dev/null @@ -1,19 +0,0 @@ -require('../lib/node_loader'); -var AWS = require('../lib/core'); -var Service = AWS.Service; -var apiLoader = AWS.apiLoader; - -apiLoader.services['elasticache'] = {}; -AWS.ElastiCache = Service.defineService('elasticache', ['2012-11-15*', '2014-03-24*', '2014-07-15*', '2014-09-30*', '2015-02-02']); -Object.defineProperty(apiLoader.services['elasticache'], '2015-02-02', { - get: function get() { - var model = require('../apis/elasticache-2015-02-02.min.json'); - model.paginators = require('../apis/elasticache-2015-02-02.paginators.json').pagination; - model.waiters = require('../apis/elasticache-2015-02-02.waiters2.json').waiters; - return model; - }, - enumerable: true, - configurable: true -}); - -module.exports = AWS.ElastiCache; diff --git a/workshops/monte-carlo-on-ec2-spot-fleet/src/web/node_modules/aws-sdk/clients/elasticbeanstalk.d.ts b/workshops/monte-carlo-on-ec2-spot-fleet/src/web/node_modules/aws-sdk/clients/elasticbeanstalk.d.ts deleted file mode 100644 index a91f00f6..00000000 --- a/workshops/monte-carlo-on-ec2-spot-fleet/src/web/node_modules/aws-sdk/clients/elasticbeanstalk.d.ts +++ /dev/null @@ -1,2512 +0,0 @@ -import {Request} from '../lib/request'; -import {Response} from '../lib/response'; -import {AWSError} from '../lib/error'; -import {Service} from '../lib/service'; -import {ServiceConfigurationOptions} from '../lib/service'; -import {ConfigBase as Config} from '../lib/config'; -interface Blob {} -declare class ElasticBeanstalk extends Service { - /** - * Constructs a service object. This object has one method for each API operation. - */ - constructor(options?: ElasticBeanstalk.Types.ClientConfiguration) - config: Config & ElasticBeanstalk.Types.ClientConfiguration; - /** - * Cancels in-progress environment configuration update or application version deployment. - */ - abortEnvironmentUpdate(params: ElasticBeanstalk.Types.AbortEnvironmentUpdateMessage, callback?: (err: AWSError, data: {}) => void): Request<{}, AWSError>; - /** - * Cancels in-progress environment configuration update or application version deployment. - */ - abortEnvironmentUpdate(callback?: (err: AWSError, data: {}) => void): Request<{}, AWSError>; - /** - * Applies a scheduled managed action immediately. A managed action can be applied only if its status is Scheduled. Get the status and action ID of a managed action with DescribeEnvironmentManagedActions. - */ - applyEnvironmentManagedAction(params: ElasticBeanstalk.Types.ApplyEnvironmentManagedActionRequest, callback?: (err: AWSError, data: ElasticBeanstalk.Types.ApplyEnvironmentManagedActionResult) => void): Request; - /** - * Applies a scheduled managed action immediately. A managed action can be applied only if its status is Scheduled. Get the status and action ID of a managed action with DescribeEnvironmentManagedActions. - */ - applyEnvironmentManagedAction(callback?: (err: AWSError, data: ElasticBeanstalk.Types.ApplyEnvironmentManagedActionResult) => void): Request; - /** - * Checks if the specified CNAME is available. - */ - checkDNSAvailability(params: ElasticBeanstalk.Types.CheckDNSAvailabilityMessage, callback?: (err: AWSError, data: ElasticBeanstalk.Types.CheckDNSAvailabilityResultMessage) => void): Request; - /** - * Checks if the specified CNAME is available. - */ - checkDNSAvailability(callback?: (err: AWSError, data: ElasticBeanstalk.Types.CheckDNSAvailabilityResultMessage) => void): Request; - /** - * Create or update a group of environments that each run a separate component of a single application. Takes a list of version labels that specify application source bundles for each of the environments to create or update. The name of each environment and other required information must be included in the source bundles in an environment manifest named env.yaml. See Compose Environments for details. - */ - composeEnvironments(params: ElasticBeanstalk.Types.ComposeEnvironmentsMessage, callback?: (err: AWSError, data: ElasticBeanstalk.Types.EnvironmentDescriptionsMessage) => void): Request; - /** - * Create or update a group of environments that each run a separate component of a single application. Takes a list of version labels that specify application source bundles for each of the environments to create or update. The name of each environment and other required information must be included in the source bundles in an environment manifest named env.yaml. See Compose Environments for details. - */ - composeEnvironments(callback?: (err: AWSError, data: ElasticBeanstalk.Types.EnvironmentDescriptionsMessage) => void): Request; - /** - * Creates an application that has one configuration template named default and no application versions. - */ - createApplication(params: ElasticBeanstalk.Types.CreateApplicationMessage, callback?: (err: AWSError, data: ElasticBeanstalk.Types.ApplicationDescriptionMessage) => void): Request; - /** - * Creates an application that has one configuration template named default and no application versions. - */ - createApplication(callback?: (err: AWSError, data: ElasticBeanstalk.Types.ApplicationDescriptionMessage) => void): Request; - /** - * Creates an application version for the specified application. You can create an application version from a source bundle in Amazon S3, a commit in AWS CodeCommit, or the output of an AWS CodeBuild build as follows: Specify a commit in an AWS CodeCommit repository with SourceBuildInformation. Specify a build in an AWS CodeBuild with SourceBuildInformation and BuildConfiguration. Specify a source bundle in S3 with SourceBundle Omit both SourceBuildInformation and SourceBundle to use the default sample application. Once you create an application version with a specified Amazon S3 bucket and key location, you cannot change that Amazon S3 location. If you change the Amazon S3 location, you receive an exception when you attempt to launch an environment from the application version. - */ - createApplicationVersion(params: ElasticBeanstalk.Types.CreateApplicationVersionMessage, callback?: (err: AWSError, data: ElasticBeanstalk.Types.ApplicationVersionDescriptionMessage) => void): Request; - /** - * Creates an application version for the specified application. You can create an application version from a source bundle in Amazon S3, a commit in AWS CodeCommit, or the output of an AWS CodeBuild build as follows: Specify a commit in an AWS CodeCommit repository with SourceBuildInformation. Specify a build in an AWS CodeBuild with SourceBuildInformation and BuildConfiguration. Specify a source bundle in S3 with SourceBundle Omit both SourceBuildInformation and SourceBundle to use the default sample application. Once you create an application version with a specified Amazon S3 bucket and key location, you cannot change that Amazon S3 location. If you change the Amazon S3 location, you receive an exception when you attempt to launch an environment from the application version. - */ - createApplicationVersion(callback?: (err: AWSError, data: ElasticBeanstalk.Types.ApplicationVersionDescriptionMessage) => void): Request; - /** - * Creates a configuration template. Templates are associated with a specific application and are used to deploy different versions of the application with the same configuration settings. Related Topics DescribeConfigurationOptions DescribeConfigurationSettings ListAvailableSolutionStacks - */ - createConfigurationTemplate(params: ElasticBeanstalk.Types.CreateConfigurationTemplateMessage, callback?: (err: AWSError, data: ElasticBeanstalk.Types.ConfigurationSettingsDescription) => void): Request; - /** - * Creates a configuration template. Templates are associated with a specific application and are used to deploy different versions of the application with the same configuration settings. Related Topics DescribeConfigurationOptions DescribeConfigurationSettings ListAvailableSolutionStacks - */ - createConfigurationTemplate(callback?: (err: AWSError, data: ElasticBeanstalk.Types.ConfigurationSettingsDescription) => void): Request; - /** - * Launches an environment for the specified application using the specified configuration. - */ - createEnvironment(params: ElasticBeanstalk.Types.CreateEnvironmentMessage, callback?: (err: AWSError, data: ElasticBeanstalk.Types.EnvironmentDescription) => void): Request; - /** - * Launches an environment for the specified application using the specified configuration. - */ - createEnvironment(callback?: (err: AWSError, data: ElasticBeanstalk.Types.EnvironmentDescription) => void): Request; - /** - * Create a new version of your custom platform. - */ - createPlatformVersion(params: ElasticBeanstalk.Types.CreatePlatformVersionRequest, callback?: (err: AWSError, data: ElasticBeanstalk.Types.CreatePlatformVersionResult) => void): Request; - /** - * Create a new version of your custom platform. - */ - createPlatformVersion(callback?: (err: AWSError, data: ElasticBeanstalk.Types.CreatePlatformVersionResult) => void): Request; - /** - * Creates the Amazon S3 storage location for the account. This location is used to store user log files. - */ - createStorageLocation(callback?: (err: AWSError, data: ElasticBeanstalk.Types.CreateStorageLocationResultMessage) => void): Request; - /** - * Deletes the specified application along with all associated versions and configurations. The application versions will not be deleted from your Amazon S3 bucket. You cannot delete an application that has a running environment. - */ - deleteApplication(params: ElasticBeanstalk.Types.DeleteApplicationMessage, callback?: (err: AWSError, data: {}) => void): Request<{}, AWSError>; - /** - * Deletes the specified application along with all associated versions and configurations. The application versions will not be deleted from your Amazon S3 bucket. You cannot delete an application that has a running environment. - */ - deleteApplication(callback?: (err: AWSError, data: {}) => void): Request<{}, AWSError>; - /** - * Deletes the specified version from the specified application. You cannot delete an application version that is associated with a running environment. - */ - deleteApplicationVersion(params: ElasticBeanstalk.Types.DeleteApplicationVersionMessage, callback?: (err: AWSError, data: {}) => void): Request<{}, AWSError>; - /** - * Deletes the specified version from the specified application. You cannot delete an application version that is associated with a running environment. - */ - deleteApplicationVersion(callback?: (err: AWSError, data: {}) => void): Request<{}, AWSError>; - /** - * Deletes the specified configuration template. When you launch an environment using a configuration template, the environment gets a copy of the template. You can delete or modify the environment's copy of the template without affecting the running environment. - */ - deleteConfigurationTemplate(params: ElasticBeanstalk.Types.DeleteConfigurationTemplateMessage, callback?: (err: AWSError, data: {}) => void): Request<{}, AWSError>; - /** - * Deletes the specified configuration template. When you launch an environment using a configuration template, the environment gets a copy of the template. You can delete or modify the environment's copy of the template without affecting the running environment. - */ - deleteConfigurationTemplate(callback?: (err: AWSError, data: {}) => void): Request<{}, AWSError>; - /** - * Deletes the draft configuration associated with the running environment. Updating a running environment with any configuration changes creates a draft configuration set. You can get the draft configuration using DescribeConfigurationSettings while the update is in progress or if the update fails. The DeploymentStatus for the draft configuration indicates whether the deployment is in process or has failed. The draft configuration remains in existence until it is deleted with this action. - */ - deleteEnvironmentConfiguration(params: ElasticBeanstalk.Types.DeleteEnvironmentConfigurationMessage, callback?: (err: AWSError, data: {}) => void): Request<{}, AWSError>; - /** - * Deletes the draft configuration associated with the running environment. Updating a running environment with any configuration changes creates a draft configuration set. You can get the draft configuration using DescribeConfigurationSettings while the update is in progress or if the update fails. The DeploymentStatus for the draft configuration indicates whether the deployment is in process or has failed. The draft configuration remains in existence until it is deleted with this action. - */ - deleteEnvironmentConfiguration(callback?: (err: AWSError, data: {}) => void): Request<{}, AWSError>; - /** - * Deletes the specified version of a custom platform. - */ - deletePlatformVersion(params: ElasticBeanstalk.Types.DeletePlatformVersionRequest, callback?: (err: AWSError, data: ElasticBeanstalk.Types.DeletePlatformVersionResult) => void): Request; - /** - * Deletes the specified version of a custom platform. - */ - deletePlatformVersion(callback?: (err: AWSError, data: ElasticBeanstalk.Types.DeletePlatformVersionResult) => void): Request; - /** - * Retrieve a list of application versions. - */ - describeApplicationVersions(params: ElasticBeanstalk.Types.DescribeApplicationVersionsMessage, callback?: (err: AWSError, data: ElasticBeanstalk.Types.ApplicationVersionDescriptionsMessage) => void): Request; - /** - * Retrieve a list of application versions. - */ - describeApplicationVersions(callback?: (err: AWSError, data: ElasticBeanstalk.Types.ApplicationVersionDescriptionsMessage) => void): Request; - /** - * Returns the descriptions of existing applications. - */ - describeApplications(params: ElasticBeanstalk.Types.DescribeApplicationsMessage, callback?: (err: AWSError, data: ElasticBeanstalk.Types.ApplicationDescriptionsMessage) => void): Request; - /** - * Returns the descriptions of existing applications. - */ - describeApplications(callback?: (err: AWSError, data: ElasticBeanstalk.Types.ApplicationDescriptionsMessage) => void): Request; - /** - * Describes the configuration options that are used in a particular configuration template or environment, or that a specified solution stack defines. The description includes the values the options, their default values, and an indication of the required action on a running environment if an option value is changed. - */ - describeConfigurationOptions(params: ElasticBeanstalk.Types.DescribeConfigurationOptionsMessage, callback?: (err: AWSError, data: ElasticBeanstalk.Types.ConfigurationOptionsDescription) => void): Request; - /** - * Describes the configuration options that are used in a particular configuration template or environment, or that a specified solution stack defines. The description includes the values the options, their default values, and an indication of the required action on a running environment if an option value is changed. - */ - describeConfigurationOptions(callback?: (err: AWSError, data: ElasticBeanstalk.Types.ConfigurationOptionsDescription) => void): Request; - /** - * Returns a description of the settings for the specified configuration set, that is, either a configuration template or the configuration set associated with a running environment. When describing the settings for the configuration set associated with a running environment, it is possible to receive two sets of setting descriptions. One is the deployed configuration set, and the other is a draft configuration of an environment that is either in the process of deployment or that failed to deploy. Related Topics DeleteEnvironmentConfiguration - */ - describeConfigurationSettings(params: ElasticBeanstalk.Types.DescribeConfigurationSettingsMessage, callback?: (err: AWSError, data: ElasticBeanstalk.Types.ConfigurationSettingsDescriptions) => void): Request; - /** - * Returns a description of the settings for the specified configuration set, that is, either a configuration template or the configuration set associated with a running environment. When describing the settings for the configuration set associated with a running environment, it is possible to receive two sets of setting descriptions. One is the deployed configuration set, and the other is a draft configuration of an environment that is either in the process of deployment or that failed to deploy. Related Topics DeleteEnvironmentConfiguration - */ - describeConfigurationSettings(callback?: (err: AWSError, data: ElasticBeanstalk.Types.ConfigurationSettingsDescriptions) => void): Request; - /** - * Returns information about the overall health of the specified environment. The DescribeEnvironmentHealth operation is only available with AWS Elastic Beanstalk Enhanced Health. - */ - describeEnvironmentHealth(params: ElasticBeanstalk.Types.DescribeEnvironmentHealthRequest, callback?: (err: AWSError, data: ElasticBeanstalk.Types.DescribeEnvironmentHealthResult) => void): Request; - /** - * Returns information about the overall health of the specified environment. The DescribeEnvironmentHealth operation is only available with AWS Elastic Beanstalk Enhanced Health. - */ - describeEnvironmentHealth(callback?: (err: AWSError, data: ElasticBeanstalk.Types.DescribeEnvironmentHealthResult) => void): Request; - /** - * Lists an environment's completed and failed managed actions. - */ - describeEnvironmentManagedActionHistory(params: ElasticBeanstalk.Types.DescribeEnvironmentManagedActionHistoryRequest, callback?: (err: AWSError, data: ElasticBeanstalk.Types.DescribeEnvironmentManagedActionHistoryResult) => void): Request; - /** - * Lists an environment's completed and failed managed actions. - */ - describeEnvironmentManagedActionHistory(callback?: (err: AWSError, data: ElasticBeanstalk.Types.DescribeEnvironmentManagedActionHistoryResult) => void): Request; - /** - * Lists an environment's upcoming and in-progress managed actions. - */ - describeEnvironmentManagedActions(params: ElasticBeanstalk.Types.DescribeEnvironmentManagedActionsRequest, callback?: (err: AWSError, data: ElasticBeanstalk.Types.DescribeEnvironmentManagedActionsResult) => void): Request; - /** - * Lists an environment's upcoming and in-progress managed actions. - */ - describeEnvironmentManagedActions(callback?: (err: AWSError, data: ElasticBeanstalk.Types.DescribeEnvironmentManagedActionsResult) => void): Request; - /** - * Returns AWS resources for this environment. - */ - describeEnvironmentResources(params: ElasticBeanstalk.Types.DescribeEnvironmentResourcesMessage, callback?: (err: AWSError, data: ElasticBeanstalk.Types.EnvironmentResourceDescriptionsMessage) => void): Request; - /** - * Returns AWS resources for this environment. - */ - describeEnvironmentResources(callback?: (err: AWSError, data: ElasticBeanstalk.Types.EnvironmentResourceDescriptionsMessage) => void): Request; - /** - * Returns descriptions for existing environments. - */ - describeEnvironments(params: ElasticBeanstalk.Types.DescribeEnvironmentsMessage, callback?: (err: AWSError, data: ElasticBeanstalk.Types.EnvironmentDescriptionsMessage) => void): Request; - /** - * Returns descriptions for existing environments. - */ - describeEnvironments(callback?: (err: AWSError, data: ElasticBeanstalk.Types.EnvironmentDescriptionsMessage) => void): Request; - /** - * Returns list of event descriptions matching criteria up to the last 6 weeks. This action returns the most recent 1,000 events from the specified NextToken. - */ - describeEvents(params: ElasticBeanstalk.Types.DescribeEventsMessage, callback?: (err: AWSError, data: ElasticBeanstalk.Types.EventDescriptionsMessage) => void): Request; - /** - * Returns list of event descriptions matching criteria up to the last 6 weeks. This action returns the most recent 1,000 events from the specified NextToken. - */ - describeEvents(callback?: (err: AWSError, data: ElasticBeanstalk.Types.EventDescriptionsMessage) => void): Request; - /** - * Retrives detailed information about the health of instances in your AWS Elastic Beanstalk. This operation requires enhanced health reporting. - */ - describeInstancesHealth(params: ElasticBeanstalk.Types.DescribeInstancesHealthRequest, callback?: (err: AWSError, data: ElasticBeanstalk.Types.DescribeInstancesHealthResult) => void): Request; - /** - * Retrives detailed information about the health of instances in your AWS Elastic Beanstalk. This operation requires enhanced health reporting. - */ - describeInstancesHealth(callback?: (err: AWSError, data: ElasticBeanstalk.Types.DescribeInstancesHealthResult) => void): Request; - /** - * Describes the version of the platform. - */ - describePlatformVersion(params: ElasticBeanstalk.Types.DescribePlatformVersionRequest, callback?: (err: AWSError, data: ElasticBeanstalk.Types.DescribePlatformVersionResult) => void): Request; - /** - * Describes the version of the platform. - */ - describePlatformVersion(callback?: (err: AWSError, data: ElasticBeanstalk.Types.DescribePlatformVersionResult) => void): Request; - /** - * Returns a list of the available solution stack names, with the public version first and then in reverse chronological order. - */ - listAvailableSolutionStacks(callback?: (err: AWSError, data: ElasticBeanstalk.Types.ListAvailableSolutionStacksResultMessage) => void): Request; - /** - * Lists the available platforms. - */ - listPlatformVersions(params: ElasticBeanstalk.Types.ListPlatformVersionsRequest, callback?: (err: AWSError, data: ElasticBeanstalk.Types.ListPlatformVersionsResult) => void): Request; - /** - * Lists the available platforms. - */ - listPlatformVersions(callback?: (err: AWSError, data: ElasticBeanstalk.Types.ListPlatformVersionsResult) => void): Request; - /** - * Returns the tags applied to an AWS Elastic Beanstalk resource. The response contains a list of tag key-value pairs. Currently, Elastic Beanstalk only supports tagging Elastic Beanstalk environments. - */ - listTagsForResource(params: ElasticBeanstalk.Types.ListTagsForResourceMessage, callback?: (err: AWSError, data: ElasticBeanstalk.Types.ResourceTagsDescriptionMessage) => void): Request; - /** - * Returns the tags applied to an AWS Elastic Beanstalk resource. The response contains a list of tag key-value pairs. Currently, Elastic Beanstalk only supports tagging Elastic Beanstalk environments. - */ - listTagsForResource(callback?: (err: AWSError, data: ElasticBeanstalk.Types.ResourceTagsDescriptionMessage) => void): Request; - /** - * Deletes and recreates all of the AWS resources (for example: the Auto Scaling group, load balancer, etc.) for a specified environment and forces a restart. - */ - rebuildEnvironment(params: ElasticBeanstalk.Types.RebuildEnvironmentMessage, callback?: (err: AWSError, data: {}) => void): Request<{}, AWSError>; - /** - * Deletes and recreates all of the AWS resources (for example: the Auto Scaling group, load balancer, etc.) for a specified environment and forces a restart. - */ - rebuildEnvironment(callback?: (err: AWSError, data: {}) => void): Request<{}, AWSError>; - /** - * Initiates a request to compile the specified type of information of the deployed environment. Setting the InfoType to tail compiles the last lines from the application server log files of every Amazon EC2 instance in your environment. Setting the InfoType to bundle compresses the application server log files for every Amazon EC2 instance into a .zip file. Legacy and .NET containers do not support bundle logs. Use RetrieveEnvironmentInfo to obtain the set of logs. Related Topics RetrieveEnvironmentInfo - */ - requestEnvironmentInfo(params: ElasticBeanstalk.Types.RequestEnvironmentInfoMessage, callback?: (err: AWSError, data: {}) => void): Request<{}, AWSError>; - /** - * Initiates a request to compile the specified type of information of the deployed environment. Setting the InfoType to tail compiles the last lines from the application server log files of every Amazon EC2 instance in your environment. Setting the InfoType to bundle compresses the application server log files for every Amazon EC2 instance into a .zip file. Legacy and .NET containers do not support bundle logs. Use RetrieveEnvironmentInfo to obtain the set of logs. Related Topics RetrieveEnvironmentInfo - */ - requestEnvironmentInfo(callback?: (err: AWSError, data: {}) => void): Request<{}, AWSError>; - /** - * Causes the environment to restart the application container server running on each Amazon EC2 instance. - */ - restartAppServer(params: ElasticBeanstalk.Types.RestartAppServerMessage, callback?: (err: AWSError, data: {}) => void): Request<{}, AWSError>; - /** - * Causes the environment to restart the application container server running on each Amazon EC2 instance. - */ - restartAppServer(callback?: (err: AWSError, data: {}) => void): Request<{}, AWSError>; - /** - * Retrieves the compiled information from a RequestEnvironmentInfo request. Related Topics RequestEnvironmentInfo - */ - retrieveEnvironmentInfo(params: ElasticBeanstalk.Types.RetrieveEnvironmentInfoMessage, callback?: (err: AWSError, data: ElasticBeanstalk.Types.RetrieveEnvironmentInfoResultMessage) => void): Request; - /** - * Retrieves the compiled information from a RequestEnvironmentInfo request. Related Topics RequestEnvironmentInfo - */ - retrieveEnvironmentInfo(callback?: (err: AWSError, data: ElasticBeanstalk.Types.RetrieveEnvironmentInfoResultMessage) => void): Request; - /** - * Swaps the CNAMEs of two environments. - */ - swapEnvironmentCNAMEs(params: ElasticBeanstalk.Types.SwapEnvironmentCNAMEsMessage, callback?: (err: AWSError, data: {}) => void): Request<{}, AWSError>; - /** - * Swaps the CNAMEs of two environments. - */ - swapEnvironmentCNAMEs(callback?: (err: AWSError, data: {}) => void): Request<{}, AWSError>; - /** - * Terminates the specified environment. - */ - terminateEnvironment(params: ElasticBeanstalk.Types.TerminateEnvironmentMessage, callback?: (err: AWSError, data: ElasticBeanstalk.Types.EnvironmentDescription) => void): Request; - /** - * Terminates the specified environment. - */ - terminateEnvironment(callback?: (err: AWSError, data: ElasticBeanstalk.Types.EnvironmentDescription) => void): Request; - /** - * Updates the specified application to have the specified properties. If a property (for example, description) is not provided, the value remains unchanged. To clear these properties, specify an empty string. - */ - updateApplication(params: ElasticBeanstalk.Types.UpdateApplicationMessage, callback?: (err: AWSError, data: ElasticBeanstalk.Types.ApplicationDescriptionMessage) => void): Request; - /** - * Updates the specified application to have the specified properties. If a property (for example, description) is not provided, the value remains unchanged. To clear these properties, specify an empty string. - */ - updateApplication(callback?: (err: AWSError, data: ElasticBeanstalk.Types.ApplicationDescriptionMessage) => void): Request; - /** - * Modifies lifecycle settings for an application. - */ - updateApplicationResourceLifecycle(params: ElasticBeanstalk.Types.UpdateApplicationResourceLifecycleMessage, callback?: (err: AWSError, data: ElasticBeanstalk.Types.ApplicationResourceLifecycleDescriptionMessage) => void): Request; - /** - * Modifies lifecycle settings for an application. - */ - updateApplicationResourceLifecycle(callback?: (err: AWSError, data: ElasticBeanstalk.Types.ApplicationResourceLifecycleDescriptionMessage) => void): Request; - /** - * Updates the specified application version to have the specified properties. If a property (for example, description) is not provided, the value remains unchanged. To clear properties, specify an empty string. - */ - updateApplicationVersion(params: ElasticBeanstalk.Types.UpdateApplicationVersionMessage, callback?: (err: AWSError, data: ElasticBeanstalk.Types.ApplicationVersionDescriptionMessage) => void): Request; - /** - * Updates the specified application version to have the specified properties. If a property (for example, description) is not provided, the value remains unchanged. To clear properties, specify an empty string. - */ - updateApplicationVersion(callback?: (err: AWSError, data: ElasticBeanstalk.Types.ApplicationVersionDescriptionMessage) => void): Request; - /** - * Updates the specified configuration template to have the specified properties or configuration option values. If a property (for example, ApplicationName) is not provided, its value remains unchanged. To clear such properties, specify an empty string. Related Topics DescribeConfigurationOptions - */ - updateConfigurationTemplate(params: ElasticBeanstalk.Types.UpdateConfigurationTemplateMessage, callback?: (err: AWSError, data: ElasticBeanstalk.Types.ConfigurationSettingsDescription) => void): Request; - /** - * Updates the specified configuration template to have the specified properties or configuration option values. If a property (for example, ApplicationName) is not provided, its value remains unchanged. To clear such properties, specify an empty string. Related Topics DescribeConfigurationOptions - */ - updateConfigurationTemplate(callback?: (err: AWSError, data: ElasticBeanstalk.Types.ConfigurationSettingsDescription) => void): Request; - /** - * Updates the environment description, deploys a new application version, updates the configuration settings to an entirely new configuration template, or updates select configuration option values in the running environment. Attempting to update both the release and configuration is not allowed and AWS Elastic Beanstalk returns an InvalidParameterCombination error. When updating the configuration settings to a new template or individual settings, a draft configuration is created and DescribeConfigurationSettings for this environment returns two setting descriptions with different DeploymentStatus values. - */ - updateEnvironment(params: ElasticBeanstalk.Types.UpdateEnvironmentMessage, callback?: (err: AWSError, data: ElasticBeanstalk.Types.EnvironmentDescription) => void): Request; - /** - * Updates the environment description, deploys a new application version, updates the configuration settings to an entirely new configuration template, or updates select configuration option values in the running environment. Attempting to update both the release and configuration is not allowed and AWS Elastic Beanstalk returns an InvalidParameterCombination error. When updating the configuration settings to a new template or individual settings, a draft configuration is created and DescribeConfigurationSettings for this environment returns two setting descriptions with different DeploymentStatus values. - */ - updateEnvironment(callback?: (err: AWSError, data: ElasticBeanstalk.Types.EnvironmentDescription) => void): Request; - /** - * Update the list of tags applied to an AWS Elastic Beanstalk resource. Two lists can be passed: TagsToAdd for tags to add or update, and TagsToRemove. Currently, Elastic Beanstalk only supports tagging of Elastic Beanstalk environments. - */ - updateTagsForResource(params: ElasticBeanstalk.Types.UpdateTagsForResourceMessage, callback?: (err: AWSError, data: {}) => void): Request<{}, AWSError>; - /** - * Update the list of tags applied to an AWS Elastic Beanstalk resource. Two lists can be passed: TagsToAdd for tags to add or update, and TagsToRemove. Currently, Elastic Beanstalk only supports tagging of Elastic Beanstalk environments. - */ - updateTagsForResource(callback?: (err: AWSError, data: {}) => void): Request<{}, AWSError>; - /** - * Takes a set of configuration settings and either a configuration template or environment, and determines whether those values are valid. This action returns a list of messages indicating any errors or warnings associated with the selection of option values. - */ - validateConfigurationSettings(params: ElasticBeanstalk.Types.ValidateConfigurationSettingsMessage, callback?: (err: AWSError, data: ElasticBeanstalk.Types.ConfigurationSettingsValidationMessages) => void): Request; - /** - * Takes a set of configuration settings and either a configuration template or environment, and determines whether those values are valid. This action returns a list of messages indicating any errors or warnings associated with the selection of option values. - */ - validateConfigurationSettings(callback?: (err: AWSError, data: ElasticBeanstalk.Types.ConfigurationSettingsValidationMessages) => void): Request; -} -declare namespace ElasticBeanstalk { - export type ARN = string; - export interface AbortEnvironmentUpdateMessage { - /** - * This specifies the ID of the environment with the in-progress update that you want to cancel. - */ - EnvironmentId?: EnvironmentId; - /** - * This specifies the name of the environment with the in-progress update that you want to cancel. - */ - EnvironmentName?: EnvironmentName; - } - export type AbortableOperationInProgress = boolean; - export type ActionHistoryStatus = "Completed"|"Failed"|"Unknown"|string; - export type ActionStatus = "Scheduled"|"Pending"|"Running"|"Unknown"|string; - export type ActionType = "InstanceRefresh"|"PlatformUpdate"|"Unknown"|string; - export interface ApplicationDescription { - /** - * The name of the application. - */ - ApplicationName?: ApplicationName; - /** - * User-defined description of the application. - */ - Description?: Description; - /** - * The date when the application was created. - */ - DateCreated?: CreationDate; - /** - * The date when the application was last modified. - */ - DateUpdated?: UpdateDate; - /** - * The names of the versions for this application. - */ - Versions?: VersionLabelsList; - /** - * The names of the configuration templates associated with this application. - */ - ConfigurationTemplates?: ConfigurationTemplateNamesList; - /** - * The lifecycle settings for the application. - */ - ResourceLifecycleConfig?: ApplicationResourceLifecycleConfig; - } - export type ApplicationDescriptionList = ApplicationDescription[]; - export interface ApplicationDescriptionMessage { - /** - * The ApplicationDescription of the application. - */ - Application?: ApplicationDescription; - } - export interface ApplicationDescriptionsMessage { - /** - * This parameter contains a list of ApplicationDescription. - */ - Applications?: ApplicationDescriptionList; - } - export interface ApplicationMetrics { - /** - * The amount of time that the metrics cover (usually 10 seconds). For example, you might have 5 requests (request_count) within the most recent time slice of 10 seconds (duration). - */ - Duration?: NullableInteger; - /** - * Average number of requests handled by the web server per second over the last 10 seconds. - */ - RequestCount?: RequestCount; - /** - * Represents the percentage of requests over the last 10 seconds that resulted in each type of status code response. - */ - StatusCodes?: StatusCodes; - /** - * Represents the average latency for the slowest X percent of requests over the last 10 seconds. Latencies are in seconds with one millisecond resolution. - */ - Latency?: Latency; - } - export type ApplicationName = string; - export type ApplicationNamesList = ApplicationName[]; - export interface ApplicationResourceLifecycleConfig { - /** - * The ARN of an IAM service role that Elastic Beanstalk has permission to assume. - */ - ServiceRole?: String; - /** - * The application version lifecycle configuration. - */ - VersionLifecycleConfig?: ApplicationVersionLifecycleConfig; - } - export interface ApplicationResourceLifecycleDescriptionMessage { - /** - * The name of the application. - */ - ApplicationName?: ApplicationName; - /** - * The lifecycle configuration. - */ - ResourceLifecycleConfig?: ApplicationResourceLifecycleConfig; - } - export interface ApplicationVersionDescription { - /** - * The name of the application to which the application version belongs. - */ - ApplicationName?: ApplicationName; - /** - * The description of the application version. - */ - Description?: Description; - /** - * A unique identifier for the application version. - */ - VersionLabel?: VersionLabel; - /** - * If the version's source code was retrieved from AWS CodeCommit, the location of the source code for the application version. - */ - SourceBuildInformation?: SourceBuildInformation; - /** - * Reference to the artifact from the AWS CodeBuild build. - */ - BuildArn?: String; - /** - * The storage location of the application version's source bundle in Amazon S3. - */ - SourceBundle?: S3Location; - /** - * The creation date of the application version. - */ - DateCreated?: CreationDate; - /** - * The last modified date of the application version. - */ - DateUpdated?: UpdateDate; - /** - * The processing status of the application version. - */ - Status?: ApplicationVersionStatus; - } - export type ApplicationVersionDescriptionList = ApplicationVersionDescription[]; - export interface ApplicationVersionDescriptionMessage { - /** - * The ApplicationVersionDescription of the application version. - */ - ApplicationVersion?: ApplicationVersionDescription; - } - export interface ApplicationVersionDescriptionsMessage { - /** - * List of ApplicationVersionDescription objects sorted in order of creation. - */ - ApplicationVersions?: ApplicationVersionDescriptionList; - /** - * In a paginated request, the token that you can pass in a subsequent request to get the next response page. - */ - NextToken?: Token; - } - export interface ApplicationVersionLifecycleConfig { - /** - * Specify a max count rule to restrict the number of application versions that are retained for an application. - */ - MaxCountRule?: MaxCountRule; - /** - * Specify a max age rule to restrict the length of time that application versions are retained for an application. - */ - MaxAgeRule?: MaxAgeRule; - } - export type ApplicationVersionProccess = boolean; - export type ApplicationVersionStatus = "Processed"|"Unprocessed"|"Failed"|"Processing"|"Building"|string; - export interface ApplyEnvironmentManagedActionRequest { - /** - * The name of the target environment. - */ - EnvironmentName?: String; - /** - * The environment ID of the target environment. - */ - EnvironmentId?: String; - /** - * The action ID of the scheduled managed action to execute. - */ - ActionId: String; - } - export interface ApplyEnvironmentManagedActionResult { - /** - * The action ID of the managed action. - */ - ActionId?: String; - /** - * A description of the managed action. - */ - ActionDescription?: String; - /** - * The type of managed action. - */ - ActionType?: ActionType; - /** - * The status of the managed action. - */ - Status?: String; - } - export type AutoCreateApplication = boolean; - export interface AutoScalingGroup { - /** - * The name of the AutoScalingGroup . - */ - Name?: ResourceId; - } - export type AutoScalingGroupList = AutoScalingGroup[]; - export type AvailableSolutionStackDetailsList = SolutionStackDescription[]; - export type AvailableSolutionStackNamesList = SolutionStackName[]; - export type BoxedBoolean = boolean; - export type BoxedInt = number; - export interface BuildConfiguration { - /** - * The name of the artifact of the CodeBuild build. If provided, Elastic Beanstalk stores the build artifact in the S3 location S3-bucket/resources/application-name/codebuild/codebuild-version-label-artifact-name.zip. If not provided, Elastic Beanstalk stores the build artifact in the S3 location S3-bucket/resources/application-name/codebuild/codebuild-version-label.zip. - */ - ArtifactName?: String; - /** - * The Amazon Resource Name (ARN) of the AWS Identity and Access Management (IAM) role that enables AWS CodeBuild to interact with dependent AWS services on behalf of the AWS account. - */ - CodeBuildServiceRole: NonEmptyString; - /** - * Information about the compute resources the build project will use. BUILD_GENERAL1_SMALL: Use up to 3 GB memory and 2 vCPUs for builds BUILD_GENERAL1_MEDIUM: Use up to 7 GB memory and 4 vCPUs for builds BUILD_GENERAL1_LARGE: Use up to 15 GB memory and 8 vCPUs for builds - */ - ComputeType?: ComputeType; - /** - * The ID of the Docker image to use for this build project. - */ - Image: NonEmptyString; - /** - * How long in minutes, from 5 to 480 (8 hours), for AWS CodeBuild to wait until timing out any related build that does not get marked as completed. The default is 60 minutes. - */ - TimeoutInMinutes?: BoxedInt; - } - export interface Builder { - /** - * The ARN of the builder. - */ - ARN?: ARN; - } - export interface CPUUtilization { - /** - * Percentage of time that the CPU has spent in the User state over the last 10 seconds. - */ - User?: NullableDouble; - /** - * Percentage of time that the CPU has spent in the Nice state over the last 10 seconds. - */ - Nice?: NullableDouble; - /** - * Percentage of time that the CPU has spent in the System state over the last 10 seconds. - */ - System?: NullableDouble; - /** - * Percentage of time that the CPU has spent in the Idle state over the last 10 seconds. - */ - Idle?: NullableDouble; - /** - * Percentage of time that the CPU has spent in the I/O Wait state over the last 10 seconds. - */ - IOWait?: NullableDouble; - /** - * Percentage of time that the CPU has spent in the IRQ state over the last 10 seconds. - */ - IRQ?: NullableDouble; - /** - * Percentage of time that the CPU has spent in the SoftIRQ state over the last 10 seconds. - */ - SoftIRQ?: NullableDouble; - } - export type Cause = string; - export type Causes = Cause[]; - export interface CheckDNSAvailabilityMessage { - /** - * The prefix used when this CNAME is reserved. - */ - CNAMEPrefix: DNSCnamePrefix; - } - export interface CheckDNSAvailabilityResultMessage { - /** - * Indicates if the specified CNAME is available: true : The CNAME is available. false : The CNAME is not available. - */ - Available?: CnameAvailability; - /** - * The fully qualified CNAME to reserve when CreateEnvironment is called with the provided prefix. - */ - FullyQualifiedCNAME?: DNSCname; - } - export type CnameAvailability = boolean; - export interface ComposeEnvironmentsMessage { - /** - * The name of the application to which the specified source bundles belong. - */ - ApplicationName?: ApplicationName; - /** - * The name of the group to which the target environments belong. Specify a group name only if the environment name defined in each target environment's manifest ends with a + (plus) character. See Environment Manifest (env.yaml) for details. - */ - GroupName?: GroupName; - /** - * A list of version labels, specifying one or more application source bundles that belong to the target application. Each source bundle must include an environment manifest that specifies the name of the environment and the name of the solution stack to use, and optionally can specify environment links to create. - */ - VersionLabels?: VersionLabels; - } - export type ComputeType = "BUILD_GENERAL1_SMALL"|"BUILD_GENERAL1_MEDIUM"|"BUILD_GENERAL1_LARGE"|string; - export type ConfigurationDeploymentStatus = "deployed"|"pending"|"failed"|string; - export type ConfigurationOptionDefaultValue = string; - export interface ConfigurationOptionDescription { - /** - * A unique namespace identifying the option's associated AWS resource. - */ - Namespace?: OptionNamespace; - /** - * The name of the configuration option. - */ - Name?: ConfigurationOptionName; - /** - * The default value for this configuration option. - */ - DefaultValue?: ConfigurationOptionDefaultValue; - /** - * An indication of which action is required if the value for this configuration option changes: NoInterruption : There is no interruption to the environment or application availability. RestartEnvironment : The environment is entirely restarted, all AWS resources are deleted and recreated, and the environment is unavailable during the process. RestartApplicationServer : The environment is available the entire time. However, a short application outage occurs when the application servers on the running Amazon EC2 instances are restarted. - */ - ChangeSeverity?: ConfigurationOptionSeverity; - /** - * An indication of whether the user defined this configuration option: true : This configuration option was defined by the user. It is a valid choice for specifying if this as an Option to Remove when updating configuration settings. false : This configuration was not defined by the user. Constraint: You can remove only UserDefined options from a configuration. Valid Values: true | false - */ - UserDefined?: UserDefinedOption; - /** - * An indication of which type of values this option has and whether it is allowable to select one or more than one of the possible values: Scalar : Values for this option are a single selection from the possible values, or an unformatted string, or numeric value governed by the MIN/MAX/Regex constraints. List : Values for this option are multiple selections from the possible values. Boolean : Values for this option are either true or false . Json : Values for this option are a JSON representation of a ConfigDocument. - */ - ValueType?: ConfigurationOptionValueType; - /** - * If specified, values for the configuration option are selected from this list. - */ - ValueOptions?: ConfigurationOptionPossibleValues; - /** - * If specified, the configuration option must be a numeric value greater than this value. - */ - MinValue?: OptionRestrictionMinValue; - /** - * If specified, the configuration option must be a numeric value less than this value. - */ - MaxValue?: OptionRestrictionMaxValue; - /** - * If specified, the configuration option must be a string value no longer than this value. - */ - MaxLength?: OptionRestrictionMaxLength; - /** - * If specified, the configuration option must be a string value that satisfies this regular expression. - */ - Regex?: OptionRestrictionRegex; - } - export type ConfigurationOptionDescriptionsList = ConfigurationOptionDescription[]; - export type ConfigurationOptionName = string; - export type ConfigurationOptionPossibleValue = string; - export type ConfigurationOptionPossibleValues = ConfigurationOptionPossibleValue[]; - export interface ConfigurationOptionSetting { - /** - * A unique resource name for a time-based scaling configuration option. - */ - ResourceName?: ResourceName; - /** - * A unique namespace identifying the option's associated AWS resource. - */ - Namespace?: OptionNamespace; - /** - * The name of the configuration option. - */ - OptionName?: ConfigurationOptionName; - /** - * The current value for the configuration option. - */ - Value?: ConfigurationOptionValue; - } - export type ConfigurationOptionSettingsList = ConfigurationOptionSetting[]; - export type ConfigurationOptionSeverity = string; - export type ConfigurationOptionValue = string; - export type ConfigurationOptionValueType = "Scalar"|"List"|string; - export interface ConfigurationOptionsDescription { - /** - * The name of the solution stack these configuration options belong to. - */ - SolutionStackName?: SolutionStackName; - /** - * The ARN of the platform. - */ - PlatformArn?: PlatformArn; - /** - * A list of ConfigurationOptionDescription. - */ - Options?: ConfigurationOptionDescriptionsList; - } - export interface ConfigurationSettingsDescription { - /** - * The name of the solution stack this configuration set uses. - */ - SolutionStackName?: SolutionStackName; - /** - * The ARN of the platform. - */ - PlatformArn?: PlatformArn; - /** - * The name of the application associated with this configuration set. - */ - ApplicationName?: ApplicationName; - /** - * If not null, the name of the configuration template for this configuration set. - */ - TemplateName?: ConfigurationTemplateName; - /** - * Describes this configuration set. - */ - Description?: Description; - /** - * If not null, the name of the environment for this configuration set. - */ - EnvironmentName?: EnvironmentName; - /** - * If this configuration set is associated with an environment, the DeploymentStatus parameter indicates the deployment status of this configuration set: null: This configuration is not associated with a running environment. pending: This is a draft configuration that is not deployed to the associated environment but is in the process of deploying. deployed: This is the configuration that is currently deployed to the associated running environment. failed: This is a draft configuration that failed to successfully deploy. - */ - DeploymentStatus?: ConfigurationDeploymentStatus; - /** - * The date (in UTC time) when this configuration set was created. - */ - DateCreated?: CreationDate; - /** - * The date (in UTC time) when this configuration set was last modified. - */ - DateUpdated?: UpdateDate; - /** - * A list of the configuration options and their values in this configuration set. - */ - OptionSettings?: ConfigurationOptionSettingsList; - } - export type ConfigurationSettingsDescriptionList = ConfigurationSettingsDescription[]; - export interface ConfigurationSettingsDescriptions { - /** - * A list of ConfigurationSettingsDescription. - */ - ConfigurationSettings?: ConfigurationSettingsDescriptionList; - } - export interface ConfigurationSettingsValidationMessages { - /** - * A list of ValidationMessage. - */ - Messages?: ValidationMessagesList; - } - export type ConfigurationTemplateName = string; - export type ConfigurationTemplateNamesList = ConfigurationTemplateName[]; - export interface CreateApplicationMessage { - /** - * The name of the application. Constraint: This name must be unique within your account. If the specified name already exists, the action returns an InvalidParameterValue error. - */ - ApplicationName: ApplicationName; - /** - * Describes the application. - */ - Description?: Description; - /** - * Specify an application resource lifecycle configuration to prevent your application from accumulating too many versions. - */ - ResourceLifecycleConfig?: ApplicationResourceLifecycleConfig; - } - export interface CreateApplicationVersionMessage { - /** - * The name of the application. If no application is found with this name, and AutoCreateApplication is false, returns an InvalidParameterValue error. - */ - ApplicationName: ApplicationName; - /** - * A label identifying this version. Constraint: Must be unique per application. If an application version already exists with this label for the specified application, AWS Elastic Beanstalk returns an InvalidParameterValue error. - */ - VersionLabel: VersionLabel; - /** - * Describes this version. - */ - Description?: Description; - /** - * Specify a commit in an AWS CodeCommit Git repository to use as the source code for the application version. - */ - SourceBuildInformation?: SourceBuildInformation; - /** - * The Amazon S3 bucket and key that identify the location of the source bundle for this version. The Amazon S3 bucket must be in the same region as the environment. Specify a source bundle in S3 or a commit in an AWS CodeCommit repository (with SourceBuildInformation), but not both. If neither SourceBundle nor SourceBuildInformation are provided, Elastic Beanstalk uses a sample application. - */ - SourceBundle?: S3Location; - /** - * Settings for an AWS CodeBuild build. - */ - BuildConfiguration?: BuildConfiguration; - /** - * Set to true to create an application with the specified name if it doesn't already exist. - */ - AutoCreateApplication?: AutoCreateApplication; - /** - * Preprocesses and validates the environment manifest and configuration files in the source bundle. Validating configuration files can identify issues prior to deploying the application version to an environment. - */ - Process?: ApplicationVersionProccess; - } - export interface CreateConfigurationTemplateMessage { - /** - * The name of the application to associate with this configuration template. If no application is found with this name, AWS Elastic Beanstalk returns an InvalidParameterValue error. - */ - ApplicationName: ApplicationName; - /** - * The name of the configuration template. Constraint: This name must be unique per application. Default: If a configuration template already exists with this name, AWS Elastic Beanstalk returns an InvalidParameterValue error. - */ - TemplateName: ConfigurationTemplateName; - /** - * The name of the solution stack used by this configuration. The solution stack specifies the operating system, architecture, and application server for a configuration template. It determines the set of configuration options as well as the possible and default values. Use ListAvailableSolutionStacks to obtain a list of available solution stacks. A solution stack name or a source configuration parameter must be specified, otherwise AWS Elastic Beanstalk returns an InvalidParameterValue error. If a solution stack name is not specified and the source configuration parameter is specified, AWS Elastic Beanstalk uses the same solution stack as the source configuration template. - */ - SolutionStackName?: SolutionStackName; - /** - * The ARN of the custome platform. - */ - PlatformArn?: PlatformArn; - /** - * If specified, AWS Elastic Beanstalk uses the configuration values from the specified configuration template to create a new configuration. Values specified in the OptionSettings parameter of this call overrides any values obtained from the SourceConfiguration. If no configuration template is found, returns an InvalidParameterValue error. Constraint: If both the solution stack name parameter and the source configuration parameters are specified, the solution stack of the source configuration template must match the specified solution stack name or else AWS Elastic Beanstalk returns an InvalidParameterCombination error. - */ - SourceConfiguration?: SourceConfiguration; - /** - * The ID of the environment used with this configuration template. - */ - EnvironmentId?: EnvironmentId; - /** - * Describes this configuration. - */ - Description?: Description; - /** - * If specified, AWS Elastic Beanstalk sets the specified configuration option to the requested value. The new value overrides the value obtained from the solution stack or the source configuration template. - */ - OptionSettings?: ConfigurationOptionSettingsList; - } - export interface CreateEnvironmentMessage { - /** - * The name of the application that contains the version to be deployed. If no application is found with this name, CreateEnvironment returns an InvalidParameterValue error. - */ - ApplicationName: ApplicationName; - /** - * A unique name for the deployment environment. Used in the application URL. Constraint: Must be from 4 to 40 characters in length. The name can contain only letters, numbers, and hyphens. It cannot start or end with a hyphen. This name must be unique within a region in your account. If the specified name already exists in the region, AWS Elastic Beanstalk returns an InvalidParameterValue error. Default: If the CNAME parameter is not specified, the environment name becomes part of the CNAME, and therefore part of the visible URL for your application. - */ - EnvironmentName?: EnvironmentName; - /** - * The name of the group to which the target environment belongs. Specify a group name only if the environment's name is specified in an environment manifest and not with the environment name parameter. See Environment Manifest (env.yaml) for details. - */ - GroupName?: GroupName; - /** - * Describes this environment. - */ - Description?: Description; - /** - * If specified, the environment attempts to use this value as the prefix for the CNAME. If not specified, the CNAME is generated automatically by appending a random alphanumeric string to the environment name. - */ - CNAMEPrefix?: DNSCnamePrefix; - /** - * This specifies the tier to use for creating this environment. - */ - Tier?: EnvironmentTier; - /** - * This specifies the tags applied to resources in the environment. - */ - Tags?: Tags; - /** - * The name of the application version to deploy. If the specified application has no associated application versions, AWS Elastic Beanstalk UpdateEnvironment returns an InvalidParameterValue error. Default: If not specified, AWS Elastic Beanstalk attempts to launch the sample application in the container. - */ - VersionLabel?: VersionLabel; - /** - * The name of the configuration template to use in deployment. If no configuration template is found with this name, AWS Elastic Beanstalk returns an InvalidParameterValue error. - */ - TemplateName?: ConfigurationTemplateName; - /** - * This is an alternative to specifying a template name. If specified, AWS Elastic Beanstalk sets the configuration values to the default values associated with the specified solution stack. - */ - SolutionStackName?: SolutionStackName; - /** - * The ARN of the platform. - */ - PlatformArn?: PlatformArn; - /** - * If specified, AWS Elastic Beanstalk sets the specified configuration options to the requested value in the configuration set for the new environment. These override the values obtained from the solution stack or the configuration template. - */ - OptionSettings?: ConfigurationOptionSettingsList; - /** - * A list of custom user-defined configuration options to remove from the configuration set for this new environment. - */ - OptionsToRemove?: OptionsSpecifierList; - } - export interface CreatePlatformVersionRequest { - /** - * The name of your custom platform. - */ - PlatformName: PlatformName; - /** - * The number, such as 1.0.2, for the new platform version. - */ - PlatformVersion: PlatformVersion; - /** - * The location of the platform definition archive in Amazon S3. - */ - PlatformDefinitionBundle: S3Location; - /** - * The name of the builder environment. - */ - EnvironmentName?: EnvironmentName; - /** - * The configuration option settings to apply to the builder environment. - */ - OptionSettings?: ConfigurationOptionSettingsList; - } - export interface CreatePlatformVersionResult { - /** - * Detailed information about the new version of the custom platform. - */ - PlatformSummary?: PlatformSummary; - /** - * The builder used to create the custom platform. - */ - Builder?: Builder; - } - export interface CreateStorageLocationResultMessage { - /** - * The name of the Amazon S3 bucket created. - */ - S3Bucket?: S3Bucket; - } - export type CreationDate = Date; - export interface CustomAmi { - /** - * The type of virtualization used to create the custom AMI. - */ - VirtualizationType?: VirtualizationType; - /** - * THe ID of the image used to create the custom AMI. - */ - ImageId?: ImageId; - } - export type CustomAmiList = CustomAmi[]; - export type DNSCname = string; - export type DNSCnamePrefix = string; - export interface DeleteApplicationMessage { - /** - * The name of the application to delete. - */ - ApplicationName: ApplicationName; - /** - * When set to true, running environments will be terminated before deleting the application. - */ - TerminateEnvByForce?: TerminateEnvForce; - } - export interface DeleteApplicationVersionMessage { - /** - * The name of the application to which the version belongs. - */ - ApplicationName: ApplicationName; - /** - * The label of the version to delete. - */ - VersionLabel: VersionLabel; - /** - * Set to true to delete the source bundle from your storage bucket. Otherwise, the application version is deleted only from Elastic Beanstalk and the source bundle remains in Amazon S3. - */ - DeleteSourceBundle?: DeleteSourceBundle; - } - export interface DeleteConfigurationTemplateMessage { - /** - * The name of the application to delete the configuration template from. - */ - ApplicationName: ApplicationName; - /** - * The name of the configuration template to delete. - */ - TemplateName: ConfigurationTemplateName; - } - export interface DeleteEnvironmentConfigurationMessage { - /** - * The name of the application the environment is associated with. - */ - ApplicationName: ApplicationName; - /** - * The name of the environment to delete the draft configuration from. - */ - EnvironmentName: EnvironmentName; - } - export interface DeletePlatformVersionRequest { - /** - * The ARN of the version of the custom platform. - */ - PlatformArn?: PlatformArn; - } - export interface DeletePlatformVersionResult { - /** - * Detailed information about the version of the custom platform. - */ - PlatformSummary?: PlatformSummary; - } - export type DeleteSourceBundle = boolean; - export interface Deployment { - /** - * The version label of the application version in the deployment. - */ - VersionLabel?: String; - /** - * The ID of the deployment. This number increases by one each time that you deploy source code or change instance configuration settings. - */ - DeploymentId?: NullableLong; - /** - * The status of the deployment: In Progress : The deployment is in progress. Deployed : The deployment succeeded. Failed : The deployment failed. - */ - Status?: String; - /** - * For in-progress deployments, the time that the deployment started. For completed deployments, the time that the deployment ended. - */ - DeploymentTime?: DeploymentTimestamp; - } - export type DeploymentTimestamp = Date; - export interface DescribeApplicationVersionsMessage { - /** - * Specify an application name to show only application versions for that application. - */ - ApplicationName?: ApplicationName; - /** - * Specify a version label to show a specific application version. - */ - VersionLabels?: VersionLabelsList; - /** - * For a paginated request. Specify a maximum number of application versions to include in each response. If no MaxRecords is specified, all available application versions are retrieved in a single response. - */ - MaxRecords?: MaxRecords; - /** - * For a paginated request. Specify a token from a previous response page to retrieve the next response page. All other parameter values must be identical to the ones specified in the initial request. If no NextToken is specified, the first page is retrieved. - */ - NextToken?: Token; - } - export interface DescribeApplicationsMessage { - /** - * If specified, AWS Elastic Beanstalk restricts the returned descriptions to only include those with the specified names. - */ - ApplicationNames?: ApplicationNamesList; - } - export interface DescribeConfigurationOptionsMessage { - /** - * The name of the application associated with the configuration template or environment. Only needed if you want to describe the configuration options associated with either the configuration template or environment. - */ - ApplicationName?: ApplicationName; - /** - * The name of the configuration template whose configuration options you want to describe. - */ - TemplateName?: ConfigurationTemplateName; - /** - * The name of the environment whose configuration options you want to describe. - */ - EnvironmentName?: EnvironmentName; - /** - * The name of the solution stack whose configuration options you want to describe. - */ - SolutionStackName?: SolutionStackName; - /** - * The ARN of the custom platform. - */ - PlatformArn?: PlatformArn; - /** - * If specified, restricts the descriptions to only the specified options. - */ - Options?: OptionsSpecifierList; - } - export interface DescribeConfigurationSettingsMessage { - /** - * The application for the environment or configuration template. - */ - ApplicationName: ApplicationName; - /** - * The name of the configuration template to describe. Conditional: You must specify either this parameter or an EnvironmentName, but not both. If you specify both, AWS Elastic Beanstalk returns an InvalidParameterCombination error. If you do not specify either, AWS Elastic Beanstalk returns a MissingRequiredParameter error. - */ - TemplateName?: ConfigurationTemplateName; - /** - * The name of the environment to describe. Condition: You must specify either this or a TemplateName, but not both. If you specify both, AWS Elastic Beanstalk returns an InvalidParameterCombination error. If you do not specify either, AWS Elastic Beanstalk returns MissingRequiredParameter error. - */ - EnvironmentName?: EnvironmentName; - } - export interface DescribeEnvironmentHealthRequest { - /** - * Specify the environment by name. You must specify either this or an EnvironmentName, or both. - */ - EnvironmentName?: EnvironmentName; - /** - * Specify the environment by ID. You must specify either this or an EnvironmentName, or both. - */ - EnvironmentId?: EnvironmentId; - /** - * Specify the response elements to return. To retrieve all attributes, set to All. If no attribute names are specified, returns the name of the environment. - */ - AttributeNames?: EnvironmentHealthAttributes; - } - export interface DescribeEnvironmentHealthResult { - /** - * The environment's name. - */ - EnvironmentName?: EnvironmentName; - /** - * The health status of the environment. For example, Ok. - */ - HealthStatus?: String; - /** - * The environment's operational status. Ready, Launching, Updating, Terminating, or Terminated. - */ - Status?: EnvironmentHealth; - /** - * The health color of the environment. - */ - Color?: String; - /** - * Descriptions of the data that contributed to the environment's current health status. - */ - Causes?: Causes; - /** - * Application request metrics for the environment. - */ - ApplicationMetrics?: ApplicationMetrics; - /** - * Summary health information for the instances in the environment. - */ - InstancesHealth?: InstanceHealthSummary; - /** - * The date and time that the health information was retrieved. - */ - RefreshedAt?: RefreshedAt; - } - export interface DescribeEnvironmentManagedActionHistoryRequest { - /** - * The environment ID of the target environment. - */ - EnvironmentId?: EnvironmentId; - /** - * The name of the target environment. - */ - EnvironmentName?: EnvironmentName; - /** - * The pagination token returned by a previous request. - */ - NextToken?: String; - /** - * The maximum number of items to return for a single request. - */ - MaxItems?: Integer; - } - export interface DescribeEnvironmentManagedActionHistoryResult { - /** - * A list of completed and failed managed actions. - */ - ManagedActionHistoryItems?: ManagedActionHistoryItems; - /** - * A pagination token that you pass to DescribeEnvironmentManagedActionHistory to get the next page of results. - */ - NextToken?: String; - } - export interface DescribeEnvironmentManagedActionsRequest { - /** - * The name of the target environment. - */ - EnvironmentName?: String; - /** - * The environment ID of the target environment. - */ - EnvironmentId?: String; - /** - * To show only actions with a particular status, specify a status. - */ - Status?: ActionStatus; - } - export interface DescribeEnvironmentManagedActionsResult { - /** - * A list of upcoming and in-progress managed actions. - */ - ManagedActions?: ManagedActions; - } - export interface DescribeEnvironmentResourcesMessage { - /** - * The ID of the environment to retrieve AWS resource usage data. Condition: You must specify either this or an EnvironmentName, or both. If you do not specify either, AWS Elastic Beanstalk returns MissingRequiredParameter error. - */ - EnvironmentId?: EnvironmentId; - /** - * The name of the environment to retrieve AWS resource usage data. Condition: You must specify either this or an EnvironmentId, or both. If you do not specify either, AWS Elastic Beanstalk returns MissingRequiredParameter error. - */ - EnvironmentName?: EnvironmentName; - } - export interface DescribeEnvironmentsMessage { - /** - * If specified, AWS Elastic Beanstalk restricts the returned descriptions to include only those that are associated with this application. - */ - ApplicationName?: ApplicationName; - /** - * If specified, AWS Elastic Beanstalk restricts the returned descriptions to include only those that are associated with this application version. - */ - VersionLabel?: VersionLabel; - /** - * If specified, AWS Elastic Beanstalk restricts the returned descriptions to include only those that have the specified IDs. - */ - EnvironmentIds?: EnvironmentIdList; - /** - * If specified, AWS Elastic Beanstalk restricts the returned descriptions to include only those that have the specified names. - */ - EnvironmentNames?: EnvironmentNamesList; - /** - * Indicates whether to include deleted environments: true: Environments that have been deleted after IncludedDeletedBackTo are displayed. false: Do not include deleted environments. - */ - IncludeDeleted?: IncludeDeleted; - /** - * If specified when IncludeDeleted is set to true, then environments deleted after this date are displayed. - */ - IncludedDeletedBackTo?: IncludeDeletedBackTo; - /** - * For a paginated request. Specify a maximum number of environments to include in each response. If no MaxRecords is specified, all available environments are retrieved in a single response. - */ - MaxRecords?: MaxRecords; - /** - * For a paginated request. Specify a token from a previous response page to retrieve the next response page. All other parameter values must be identical to the ones specified in the initial request. If no NextToken is specified, the first page is retrieved. - */ - NextToken?: Token; - } - export interface DescribeEventsMessage { - /** - * If specified, AWS Elastic Beanstalk restricts the returned descriptions to include only those associated with this application. - */ - ApplicationName?: ApplicationName; - /** - * If specified, AWS Elastic Beanstalk restricts the returned descriptions to those associated with this application version. - */ - VersionLabel?: VersionLabel; - /** - * If specified, AWS Elastic Beanstalk restricts the returned descriptions to those that are associated with this environment configuration. - */ - TemplateName?: ConfigurationTemplateName; - /** - * If specified, AWS Elastic Beanstalk restricts the returned descriptions to those associated with this environment. - */ - EnvironmentId?: EnvironmentId; - /** - * If specified, AWS Elastic Beanstalk restricts the returned descriptions to those associated with this environment. - */ - EnvironmentName?: EnvironmentName; - /** - * The ARN of the version of the custom platform. - */ - PlatformArn?: PlatformArn; - /** - * If specified, AWS Elastic Beanstalk restricts the described events to include only those associated with this request ID. - */ - RequestId?: RequestId; - /** - * If specified, limits the events returned from this call to include only those with the specified severity or higher. - */ - Severity?: EventSeverity; - /** - * If specified, AWS Elastic Beanstalk restricts the returned descriptions to those that occur on or after this time. - */ - StartTime?: TimeFilterStart; - /** - * If specified, AWS Elastic Beanstalk restricts the returned descriptions to those that occur up to, but not including, the EndTime. - */ - EndTime?: TimeFilterEnd; - /** - * Specifies the maximum number of events that can be returned, beginning with the most recent event. - */ - MaxRecords?: MaxRecords; - /** - * Pagination token. If specified, the events return the next batch of results. - */ - NextToken?: Token; - } - export interface DescribeInstancesHealthRequest { - /** - * Specify the AWS Elastic Beanstalk environment by name. - */ - EnvironmentName?: EnvironmentName; - /** - * Specify the AWS Elastic Beanstalk environment by ID. - */ - EnvironmentId?: EnvironmentId; - /** - * Specifies the response elements you wish to receive. To retrieve all attributes, set to All. If no attribute names are specified, returns a list of instances. - */ - AttributeNames?: InstancesHealthAttributes; - /** - * Specify the pagination token returned by a previous call. - */ - NextToken?: NextToken; - } - export interface DescribeInstancesHealthResult { - /** - * Detailed health information about each instance. - */ - InstanceHealthList?: InstanceHealthList; - /** - * The date and time that the health information was retrieved. - */ - RefreshedAt?: RefreshedAt; - /** - * Pagination token for the next page of results, if available. - */ - NextToken?: NextToken; - } - export interface DescribePlatformVersionRequest { - /** - * The ARN of the version of the platform. - */ - PlatformArn?: PlatformArn; - } - export interface DescribePlatformVersionResult { - /** - * Detailed information about the version of the platform. - */ - PlatformDescription?: PlatformDescription; - } - export type Description = string; - export type Ec2InstanceId = string; - export type EndpointURL = string; - export type EnvironmentArn = string; - export interface EnvironmentDescription { - /** - * The name of this environment. - */ - EnvironmentName?: EnvironmentName; - /** - * The ID of this environment. - */ - EnvironmentId?: EnvironmentId; - /** - * The name of the application associated with this environment. - */ - ApplicationName?: ApplicationName; - /** - * The application version deployed in this environment. - */ - VersionLabel?: VersionLabel; - /** - * The name of the SolutionStack deployed with this environment. - */ - SolutionStackName?: SolutionStackName; - /** - * The ARN of the platform. - */ - PlatformArn?: PlatformArn; - /** - * The name of the configuration template used to originally launch this environment. - */ - TemplateName?: ConfigurationTemplateName; - /** - * Describes this environment. - */ - Description?: Description; - /** - * For load-balanced, autoscaling environments, the URL to the LoadBalancer. For single-instance environments, the IP address of the instance. - */ - EndpointURL?: EndpointURL; - /** - * The URL to the CNAME for this environment. - */ - CNAME?: DNSCname; - /** - * The creation date for this environment. - */ - DateCreated?: CreationDate; - /** - * The last modified date for this environment. - */ - DateUpdated?: UpdateDate; - /** - * The current operational status of the environment: Launching: Environment is in the process of initial deployment. Updating: Environment is in the process of updating its configuration settings or application version. Ready: Environment is available to have an action performed on it, such as update or terminate. Terminating: Environment is in the shut-down process. Terminated: Environment is not running. - */ - Status?: EnvironmentStatus; - /** - * Indicates if there is an in-progress environment configuration update or application version deployment that you can cancel. true: There is an update in progress. false: There are no updates currently in progress. - */ - AbortableOperationInProgress?: AbortableOperationInProgress; - /** - * Describes the health status of the environment. AWS Elastic Beanstalk indicates the failure levels for a running environment: Red: Indicates the environment is not responsive. Occurs when three or more consecutive failures occur for an environment. Yellow: Indicates that something is wrong. Occurs when two consecutive failures occur for an environment. Green: Indicates the environment is healthy and fully functional. Grey: Default health for a new environment. The environment is not fully launched and health checks have not started or health checks are suspended during an UpdateEnvironment or RestartEnvironement request. Default: Grey - */ - Health?: EnvironmentHealth; - /** - * Returns the health status of the application running in your environment. For more information, see Health Colors and Statuses. - */ - HealthStatus?: EnvironmentHealthStatus; - /** - * The description of the AWS resources used by this environment. - */ - Resources?: EnvironmentResourcesDescription; - /** - * Describes the current tier of this environment. - */ - Tier?: EnvironmentTier; - /** - * A list of links to other environments in the same group. - */ - EnvironmentLinks?: EnvironmentLinks; - /** - * The environment's Amazon Resource Name (ARN), which can be used in other API reuqests that require an ARN. - */ - EnvironmentArn?: EnvironmentArn; - } - export type EnvironmentDescriptionsList = EnvironmentDescription[]; - export interface EnvironmentDescriptionsMessage { - /** - * Returns an EnvironmentDescription list. - */ - Environments?: EnvironmentDescriptionsList; - /** - * In a paginated request, the token that you can pass in a subsequent request to get the next response page. - */ - NextToken?: Token; - } - export type EnvironmentHealth = "Green"|"Yellow"|"Red"|"Grey"|string; - export type EnvironmentHealthAttribute = "Status"|"Color"|"Causes"|"ApplicationMetrics"|"InstancesHealth"|"All"|"HealthStatus"|"RefreshedAt"|string; - export type EnvironmentHealthAttributes = EnvironmentHealthAttribute[]; - export type EnvironmentHealthStatus = "NoData"|"Unknown"|"Pending"|"Ok"|"Info"|"Warning"|"Degraded"|"Severe"|string; - export type EnvironmentId = string; - export type EnvironmentIdList = EnvironmentId[]; - export interface EnvironmentInfoDescription { - /** - * The type of information retrieved. - */ - InfoType?: EnvironmentInfoType; - /** - * The Amazon EC2 Instance ID for this information. - */ - Ec2InstanceId?: Ec2InstanceId; - /** - * The time stamp when this information was retrieved. - */ - SampleTimestamp?: SampleTimestamp; - /** - * The retrieved information. - */ - Message?: Message; - } - export type EnvironmentInfoDescriptionList = EnvironmentInfoDescription[]; - export type EnvironmentInfoType = "tail"|"bundle"|string; - export interface EnvironmentLink { - /** - * The name of the link. - */ - LinkName?: String; - /** - * The name of the linked environment (the dependency). - */ - EnvironmentName?: String; - } - export type EnvironmentLinks = EnvironmentLink[]; - export type EnvironmentName = string; - export type EnvironmentNamesList = EnvironmentName[]; - export interface EnvironmentResourceDescription { - /** - * The name of the environment. - */ - EnvironmentName?: EnvironmentName; - /** - * The AutoScalingGroups used by this environment. - */ - AutoScalingGroups?: AutoScalingGroupList; - /** - * The Amazon EC2 instances used by this environment. - */ - Instances?: InstanceList; - /** - * The Auto Scaling launch configurations in use by this environment. - */ - LaunchConfigurations?: LaunchConfigurationList; - /** - * The LoadBalancers in use by this environment. - */ - LoadBalancers?: LoadBalancerList; - /** - * The AutoScaling triggers in use by this environment. - */ - Triggers?: TriggerList; - /** - * The queues used by this environment. - */ - Queues?: QueueList; - } - export interface EnvironmentResourceDescriptionsMessage { - /** - * A list of EnvironmentResourceDescription. - */ - EnvironmentResources?: EnvironmentResourceDescription; - } - export interface EnvironmentResourcesDescription { - /** - * Describes the LoadBalancer. - */ - LoadBalancer?: LoadBalancerDescription; - } - export type EnvironmentStatus = "Launching"|"Updating"|"Ready"|"Terminating"|"Terminated"|string; - export interface EnvironmentTier { - /** - * The name of this environment tier. - */ - Name?: String; - /** - * The type of this environment tier. - */ - Type?: String; - /** - * The version of this environment tier. - */ - Version?: String; - } - export type EventDate = Date; - export interface EventDescription { - /** - * The date when the event occurred. - */ - EventDate?: EventDate; - /** - * The event message. - */ - Message?: EventMessage; - /** - * The application associated with the event. - */ - ApplicationName?: ApplicationName; - /** - * The release label for the application version associated with this event. - */ - VersionLabel?: VersionLabel; - /** - * The name of the configuration associated with this event. - */ - TemplateName?: ConfigurationTemplateName; - /** - * The name of the environment associated with this event. - */ - EnvironmentName?: EnvironmentName; - /** - * The ARN of the platform. - */ - PlatformArn?: PlatformArn; - /** - * The web service request ID for the activity of this event. - */ - RequestId?: RequestId; - /** - * The severity level of this event. - */ - Severity?: EventSeverity; - } - export type EventDescriptionList = EventDescription[]; - export interface EventDescriptionsMessage { - /** - * A list of EventDescription. - */ - Events?: EventDescriptionList; - /** - * If returned, this indicates that there are more results to obtain. Use this token in the next DescribeEvents call to get the next batch of events. - */ - NextToken?: Token; - } - export type EventMessage = string; - export type EventSeverity = "TRACE"|"DEBUG"|"INFO"|"WARN"|"ERROR"|"FATAL"|string; - export type ExceptionMessage = string; - export type FailureType = "UpdateCancelled"|"CancellationFailed"|"RollbackFailed"|"RollbackSuccessful"|"InternalFailure"|"InvalidEnvironmentState"|"PermissionsError"|string; - export type FileTypeExtension = string; - export type ForceTerminate = boolean; - export type GroupName = string; - export type ImageId = string; - export type IncludeDeleted = boolean; - export type IncludeDeletedBackTo = Date; - export interface Instance { - /** - * The ID of the Amazon EC2 instance. - */ - Id?: ResourceId; - } - export type InstanceHealthList = SingleInstanceHealth[]; - export interface InstanceHealthSummary { - /** - * Grey. AWS Elastic Beanstalk and the health agent are reporting no data on an instance. - */ - NoData?: NullableInteger; - /** - * Grey. AWS Elastic Beanstalk and the health agent are reporting an insufficient amount of data on an instance. - */ - Unknown?: NullableInteger; - /** - * Grey. An operation is in progress on an instance within the command timeout. - */ - Pending?: NullableInteger; - /** - * Green. An instance is passing health checks and the health agent is not reporting any problems. - */ - Ok?: NullableInteger; - /** - * Green. An operation is in progress on an instance. - */ - Info?: NullableInteger; - /** - * Yellow. The health agent is reporting a moderate number of request failures or other issues for an instance or environment. - */ - Warning?: NullableInteger; - /** - * Red. The health agent is reporting a high number of request failures or other issues for an instance or environment. - */ - Degraded?: NullableInteger; - /** - * Red. The health agent is reporting a very high number of request failures or other issues for an instance or environment. - */ - Severe?: NullableInteger; - } - export type InstanceId = string; - export type InstanceList = Instance[]; - export type InstancesHealthAttribute = "HealthStatus"|"Color"|"Causes"|"ApplicationMetrics"|"RefreshedAt"|"LaunchedAt"|"System"|"Deployment"|"AvailabilityZone"|"InstanceType"|"All"|string; - export type InstancesHealthAttributes = InstancesHealthAttribute[]; - export type Integer = number; - export interface Latency { - /** - * The average latency for the slowest 0.1 percent of requests over the last 10 seconds. - */ - P999?: NullableDouble; - /** - * The average latency for the slowest 1 percent of requests over the last 10 seconds. - */ - P99?: NullableDouble; - /** - * The average latency for the slowest 5 percent of requests over the last 10 seconds. - */ - P95?: NullableDouble; - /** - * The average latency for the slowest 10 percent of requests over the last 10 seconds. - */ - P90?: NullableDouble; - /** - * The average latency for the slowest 15 percent of requests over the last 10 seconds. - */ - P85?: NullableDouble; - /** - * The average latency for the slowest 25 percent of requests over the last 10 seconds. - */ - P75?: NullableDouble; - /** - * The average latency for the slowest 50 percent of requests over the last 10 seconds. - */ - P50?: NullableDouble; - /** - * The average latency for the slowest 90 percent of requests over the last 10 seconds. - */ - P10?: NullableDouble; - } - export interface LaunchConfiguration { - /** - * The name of the launch configuration. - */ - Name?: ResourceId; - } - export type LaunchConfigurationList = LaunchConfiguration[]; - export type LaunchedAt = Date; - export interface ListAvailableSolutionStacksResultMessage { - /** - * A list of available solution stacks. - */ - SolutionStacks?: AvailableSolutionStackNamesList; - /** - * A list of available solution stacks and their SolutionStackDescription. - */ - SolutionStackDetails?: AvailableSolutionStackDetailsList; - } - export interface ListPlatformVersionsRequest { - /** - * List only the platforms where the platform member value relates to one of the supplied values. - */ - Filters?: PlatformFilters; - /** - * The maximum number of platform values returned in one call. - */ - MaxRecords?: PlatformMaxRecords; - /** - * The starting index into the remaining list of platforms. Use the NextToken value from a previous ListPlatformVersion call. - */ - NextToken?: Token; - } - export interface ListPlatformVersionsResult { - /** - * Detailed information about the platforms. - */ - PlatformSummaryList?: PlatformSummaryList; - /** - * The starting index into the remaining list of platforms. if this value is not null, you can use it in a subsequent ListPlatformVersion call. - */ - NextToken?: Token; - } - export interface ListTagsForResourceMessage { - /** - * The Amazon Resource Name (ARN) of the resouce for which a tag list is requested. Must be the ARN of an Elastic Beanstalk environment. - */ - ResourceArn: ResourceArn; - } - export interface Listener { - /** - * The protocol that is used by the Listener. - */ - Protocol?: String; - /** - * The port that is used by the Listener. - */ - Port?: Integer; - } - export type LoadAverage = LoadAverageValue[]; - export type LoadAverageValue = number; - export interface LoadBalancer { - /** - * The name of the LoadBalancer. - */ - Name?: ResourceId; - } - export interface LoadBalancerDescription { - /** - * The name of the LoadBalancer. - */ - LoadBalancerName?: String; - /** - * The domain name of the LoadBalancer. - */ - Domain?: String; - /** - * A list of Listeners used by the LoadBalancer. - */ - Listeners?: LoadBalancerListenersDescription; - } - export type LoadBalancerList = LoadBalancer[]; - export type LoadBalancerListenersDescription = Listener[]; - export type Maintainer = string; - export interface ManagedAction { - /** - * A unique identifier for the managed action. - */ - ActionId?: String; - /** - * A description of the managed action. - */ - ActionDescription?: String; - /** - * The type of managed action. - */ - ActionType?: ActionType; - /** - * The status of the managed action. If the action is Scheduled, you can apply it immediately with ApplyEnvironmentManagedAction. - */ - Status?: ActionStatus; - /** - * The start time of the maintenance window in which the managed action will execute. - */ - WindowStartTime?: Timestamp; - } - export interface ManagedActionHistoryItem { - /** - * A unique identifier for the managed action. - */ - ActionId?: String; - /** - * The type of the managed action. - */ - ActionType?: ActionType; - /** - * A description of the managed action. - */ - ActionDescription?: String; - /** - * If the action failed, the type of failure. - */ - FailureType?: FailureType; - /** - * The status of the action. - */ - Status?: ActionHistoryStatus; - /** - * If the action failed, a description of the failure. - */ - FailureDescription?: String; - /** - * The date and time that the action started executing. - */ - ExecutedTime?: Timestamp; - /** - * The date and time that the action finished executing. - */ - FinishedTime?: Timestamp; - } - export type ManagedActionHistoryItems = ManagedActionHistoryItem[]; - export type ManagedActions = ManagedAction[]; - export interface MaxAgeRule { - /** - * Specify true to apply the rule, or false to disable it. - */ - Enabled: BoxedBoolean; - /** - * Specify the number of days to retain an application versions. - */ - MaxAgeInDays?: BoxedInt; - /** - * Set to true to delete a version's source bundle from Amazon S3 when Elastic Beanstalk deletes the application version. - */ - DeleteSourceFromS3?: BoxedBoolean; - } - export interface MaxCountRule { - /** - * Specify true to apply the rule, or false to disable it. - */ - Enabled: BoxedBoolean; - /** - * Specify the maximum number of application versions to retain. - */ - MaxCount?: BoxedInt; - /** - * Set to true to delete a version's source bundle from Amazon S3 when Elastic Beanstalk deletes the application version. - */ - DeleteSourceFromS3?: BoxedBoolean; - } - export type MaxRecords = number; - export type Message = string; - export type NextToken = string; - export type NonEmptyString = string; - export type NullableDouble = number; - export type NullableInteger = number; - export type NullableLong = number; - export type OperatingSystemName = string; - export type OperatingSystemVersion = string; - export type OptionNamespace = string; - export type OptionRestrictionMaxLength = number; - export type OptionRestrictionMaxValue = number; - export type OptionRestrictionMinValue = number; - export interface OptionRestrictionRegex { - /** - * The regular expression pattern that a string configuration option value with this restriction must match. - */ - Pattern?: RegexPattern; - /** - * A unique name representing this regular expression. - */ - Label?: RegexLabel; - } - export interface OptionSpecification { - /** - * A unique resource name for a time-based scaling configuration option. - */ - ResourceName?: ResourceName; - /** - * A unique namespace identifying the option's associated AWS resource. - */ - Namespace?: OptionNamespace; - /** - * The name of the configuration option. - */ - OptionName?: ConfigurationOptionName; - } - export type OptionsSpecifierList = OptionSpecification[]; - export type PlatformArn = string; - export type PlatformCategory = string; - export interface PlatformDescription { - /** - * The ARN of the platform. - */ - PlatformArn?: PlatformArn; - /** - * The AWS account ID of the person who created the platform. - */ - PlatformOwner?: PlatformOwner; - /** - * The name of the platform. - */ - PlatformName?: PlatformName; - /** - * The version of the platform. - */ - PlatformVersion?: PlatformVersion; - /** - * The name of the solution stack used by the platform. - */ - SolutionStackName?: SolutionStackName; - /** - * The status of the platform. - */ - PlatformStatus?: PlatformStatus; - /** - * The date when the platform was created. - */ - DateCreated?: CreationDate; - /** - * The date when the platform was last updated. - */ - DateUpdated?: UpdateDate; - /** - * The category of the platform. - */ - PlatformCategory?: PlatformCategory; - /** - * The description of the platform. - */ - Description?: Description; - /** - * Information about the maintainer of the platform. - */ - Maintainer?: Maintainer; - /** - * The operating system used by the platform. - */ - OperatingSystemName?: OperatingSystemName; - /** - * The version of the operating system used by the platform. - */ - OperatingSystemVersion?: OperatingSystemVersion; - /** - * The programming languages supported by the platform. - */ - ProgrammingLanguages?: PlatformProgrammingLanguages; - /** - * The frameworks supported by the platform. - */ - Frameworks?: PlatformFrameworks; - /** - * The custom AMIs supported by the platform. - */ - CustomAmiList?: CustomAmiList; - /** - * The tiers supported by the platform. - */ - SupportedTierList?: SupportedTierList; - /** - * The additions supported by the platform. - */ - SupportedAddonList?: SupportedAddonList; - } - export interface PlatformFilter { - /** - * The custom platform attribute to which the filter values are applied. Valid Values: PlatformName | PlatformVersion | PlatformStatus | PlatformOwner - */ - Type?: PlatformFilterType; - /** - * The operator to apply to the Type with each of the Values. Valid Values: = (equal to) | != (not equal to) | < (less than) | <= (less than or equal to) | > (greater than) | >= (greater than or equal to) | contains | begins_with | ends_with - */ - Operator?: PlatformFilterOperator; - /** - * The list of values applied to the custom platform attribute. - */ - Values?: PlatformFilterValueList; - } - export type PlatformFilterOperator = string; - export type PlatformFilterType = string; - export type PlatformFilterValue = string; - export type PlatformFilterValueList = PlatformFilterValue[]; - export type PlatformFilters = PlatformFilter[]; - export interface PlatformFramework { - /** - * The name of the framework. - */ - Name?: String; - /** - * The version of the framework. - */ - Version?: String; - } - export type PlatformFrameworks = PlatformFramework[]; - export type PlatformMaxRecords = number; - export type PlatformName = string; - export type PlatformOwner = string; - export interface PlatformProgrammingLanguage { - /** - * The name of the programming language. - */ - Name?: String; - /** - * The version of the programming language. - */ - Version?: String; - } - export type PlatformProgrammingLanguages = PlatformProgrammingLanguage[]; - export type PlatformStatus = "Creating"|"Failed"|"Ready"|"Deleting"|"Deleted"|string; - export interface PlatformSummary { - /** - * The ARN of the platform. - */ - PlatformArn?: PlatformArn; - /** - * The AWS account ID of the person who created the platform. - */ - PlatformOwner?: PlatformOwner; - /** - * The status of the platform. You can create an environment from the platform once it is ready. - */ - PlatformStatus?: PlatformStatus; - /** - * The category of platform. - */ - PlatformCategory?: PlatformCategory; - /** - * The operating system used by the platform. - */ - OperatingSystemName?: OperatingSystemName; - /** - * The version of the operating system used by the platform. - */ - OperatingSystemVersion?: OperatingSystemVersion; - /** - * The tiers in which the platform runs. - */ - SupportedTierList?: SupportedTierList; - /** - * The additions associated with the platform. - */ - SupportedAddonList?: SupportedAddonList; - } - export type PlatformSummaryList = PlatformSummary[]; - export type PlatformVersion = string; - export interface Queue { - /** - * The name of the queue. - */ - Name?: String; - /** - * The URL of the queue. - */ - URL?: String; - } - export type QueueList = Queue[]; - export interface RebuildEnvironmentMessage { - /** - * The ID of the environment to rebuild. Condition: You must specify either this or an EnvironmentName, or both. If you do not specify either, AWS Elastic Beanstalk returns MissingRequiredParameter error. - */ - EnvironmentId?: EnvironmentId; - /** - * The name of the environment to rebuild. Condition: You must specify either this or an EnvironmentId, or both. If you do not specify either, AWS Elastic Beanstalk returns MissingRequiredParameter error. - */ - EnvironmentName?: EnvironmentName; - } - export type RefreshedAt = Date; - export type RegexLabel = string; - export type RegexPattern = string; - export type RequestCount = number; - export interface RequestEnvironmentInfoMessage { - /** - * The ID of the environment of the requested data. If no such environment is found, RequestEnvironmentInfo returns an InvalidParameterValue error. Condition: You must specify either this or an EnvironmentName, or both. If you do not specify either, AWS Elastic Beanstalk returns MissingRequiredParameter error. - */ - EnvironmentId?: EnvironmentId; - /** - * The name of the environment of the requested data. If no such environment is found, RequestEnvironmentInfo returns an InvalidParameterValue error. Condition: You must specify either this or an EnvironmentId, or both. If you do not specify either, AWS Elastic Beanstalk returns MissingRequiredParameter error. - */ - EnvironmentName?: EnvironmentName; - /** - * The type of information to request. - */ - InfoType: EnvironmentInfoType; - } - export type RequestId = string; - export type ResourceArn = string; - export type ResourceId = string; - export type ResourceName = string; - export interface ResourceTagsDescriptionMessage { - /** - * The Amazon Resource Name (ARN) of the resouce for which a tag list was requested. - */ - ResourceArn?: ResourceArn; - /** - * A list of tag key-value pairs. - */ - ResourceTags?: TagList; - } - export interface RestartAppServerMessage { - /** - * The ID of the environment to restart the server for. Condition: You must specify either this or an EnvironmentName, or both. If you do not specify either, AWS Elastic Beanstalk returns MissingRequiredParameter error. - */ - EnvironmentId?: EnvironmentId; - /** - * The name of the environment to restart the server for. Condition: You must specify either this or an EnvironmentId, or both. If you do not specify either, AWS Elastic Beanstalk returns MissingRequiredParameter error. - */ - EnvironmentName?: EnvironmentName; - } - export interface RetrieveEnvironmentInfoMessage { - /** - * The ID of the data's environment. If no such environment is found, returns an InvalidParameterValue error. Condition: You must specify either this or an EnvironmentName, or both. If you do not specify either, AWS Elastic Beanstalk returns MissingRequiredParameter error. - */ - EnvironmentId?: EnvironmentId; - /** - * The name of the data's environment. If no such environment is found, returns an InvalidParameterValue error. Condition: You must specify either this or an EnvironmentId, or both. If you do not specify either, AWS Elastic Beanstalk returns MissingRequiredParameter error. - */ - EnvironmentName?: EnvironmentName; - /** - * The type of information to retrieve. - */ - InfoType: EnvironmentInfoType; - } - export interface RetrieveEnvironmentInfoResultMessage { - /** - * The EnvironmentInfoDescription of the environment. - */ - EnvironmentInfo?: EnvironmentInfoDescriptionList; - } - export type S3Bucket = string; - export type S3Key = string; - export interface S3Location { - /** - * The Amazon S3 bucket where the data is located. - */ - S3Bucket?: S3Bucket; - /** - * The Amazon S3 key where the data is located. - */ - S3Key?: S3Key; - } - export type SampleTimestamp = Date; - export interface SingleInstanceHealth { - /** - * The ID of the Amazon EC2 instance. - */ - InstanceId?: InstanceId; - /** - * Returns the health status of the specified instance. For more information, see Health Colors and Statuses. - */ - HealthStatus?: String; - /** - * Represents the color indicator that gives you information about the health of the EC2 instance. For more information, see Health Colors and Statuses. - */ - Color?: String; - /** - * Represents the causes, which provide more information about the current health status. - */ - Causes?: Causes; - /** - * The time at which the EC2 instance was launched. - */ - LaunchedAt?: LaunchedAt; - /** - * Request metrics from your application. - */ - ApplicationMetrics?: ApplicationMetrics; - /** - * Operating system metrics from the instance. - */ - System?: SystemStatus; - /** - * Information about the most recent deployment to an instance. - */ - Deployment?: Deployment; - /** - * The availability zone in which the instance runs. - */ - AvailabilityZone?: String; - /** - * The instance's type. - */ - InstanceType?: String; - } - export interface SolutionStackDescription { - /** - * The name of the solution stack. - */ - SolutionStackName?: SolutionStackName; - /** - * The permitted file types allowed for a solution stack. - */ - PermittedFileTypes?: SolutionStackFileTypeList; - } - export type SolutionStackFileTypeList = FileTypeExtension[]; - export type SolutionStackName = string; - export interface SourceBuildInformation { - /** - * The type of repository. Git Zip - */ - SourceType: SourceType; - /** - * Location where the repository is stored. CodeCommit S3 - */ - SourceRepository: SourceRepository; - /** - * The location of the source code, as a formatted string, depending on the value of SourceRepository For CodeCommit, the format is the repository name and commit ID, separated by a forward slash. For example, my-git-repo/265cfa0cf6af46153527f55d6503ec030551f57a. For S3, the format is the S3 bucket name and object key, separated by a forward slash. For example, my-s3-bucket/Folders/my-source-file. - */ - SourceLocation: SourceLocation; - } - export interface SourceConfiguration { - /** - * The name of the application associated with the configuration. - */ - ApplicationName?: ApplicationName; - /** - * The name of the configuration template. - */ - TemplateName?: ConfigurationTemplateName; - } - export type SourceLocation = string; - export type SourceRepository = "CodeCommit"|"S3"|string; - export type SourceType = "Git"|"Zip"|string; - export interface StatusCodes { - /** - * The percentage of requests over the last 10 seconds that resulted in a 2xx (200, 201, etc.) status code. - */ - Status2xx?: NullableInteger; - /** - * The percentage of requests over the last 10 seconds that resulted in a 3xx (300, 301, etc.) status code. - */ - Status3xx?: NullableInteger; - /** - * The percentage of requests over the last 10 seconds that resulted in a 4xx (400, 401, etc.) status code. - */ - Status4xx?: NullableInteger; - /** - * The percentage of requests over the last 10 seconds that resulted in a 5xx (500, 501, etc.) status code. - */ - Status5xx?: NullableInteger; - } - export type String = string; - export type SupportedAddon = string; - export type SupportedAddonList = SupportedAddon[]; - export type SupportedTier = string; - export type SupportedTierList = SupportedTier[]; - export interface SwapEnvironmentCNAMEsMessage { - /** - * The ID of the source environment. Condition: You must specify at least the SourceEnvironmentID or the SourceEnvironmentName. You may also specify both. If you specify the SourceEnvironmentId, you must specify the DestinationEnvironmentId. - */ - SourceEnvironmentId?: EnvironmentId; - /** - * The name of the source environment. Condition: You must specify at least the SourceEnvironmentID or the SourceEnvironmentName. You may also specify both. If you specify the SourceEnvironmentName, you must specify the DestinationEnvironmentName. - */ - SourceEnvironmentName?: EnvironmentName; - /** - * The ID of the destination environment. Condition: You must specify at least the DestinationEnvironmentID or the DestinationEnvironmentName. You may also specify both. You must specify the SourceEnvironmentId with the DestinationEnvironmentId. - */ - DestinationEnvironmentId?: EnvironmentId; - /** - * The name of the destination environment. Condition: You must specify at least the DestinationEnvironmentID or the DestinationEnvironmentName. You may also specify both. You must specify the SourceEnvironmentName with the DestinationEnvironmentName. - */ - DestinationEnvironmentName?: EnvironmentName; - } - export interface SystemStatus { - /** - * CPU utilization metrics for the instance. - */ - CPUUtilization?: CPUUtilization; - /** - * Load average in the last 1-minute, 5-minute, and 15-minute periods. For more information, see Operating System Metrics. - */ - LoadAverage?: LoadAverage; - } - export interface Tag { - /** - * The key of the tag. - */ - Key?: TagKey; - /** - * The value of the tag. - */ - Value?: TagValue; - } - export type TagKey = string; - export type TagKeyList = TagKey[]; - export type TagList = Tag[]; - export type TagValue = string; - export type Tags = Tag[]; - export type TerminateEnvForce = boolean; - export interface TerminateEnvironmentMessage { - /** - * The ID of the environment to terminate. Condition: You must specify either this or an EnvironmentName, or both. If you do not specify either, AWS Elastic Beanstalk returns MissingRequiredParameter error. - */ - EnvironmentId?: EnvironmentId; - /** - * The name of the environment to terminate. Condition: You must specify either this or an EnvironmentId, or both. If you do not specify either, AWS Elastic Beanstalk returns MissingRequiredParameter error. - */ - EnvironmentName?: EnvironmentName; - /** - * Indicates whether the associated AWS resources should shut down when the environment is terminated: true: The specified environment as well as the associated AWS resources, such as Auto Scaling group and LoadBalancer, are terminated. false: AWS Elastic Beanstalk resource management is removed from the environment, but the AWS resources continue to operate. For more information, see the AWS Elastic Beanstalk User Guide. Default: true Valid Values: true | false - */ - TerminateResources?: TerminateEnvironmentResources; - /** - * Terminates the target environment even if another environment in the same group is dependent on it. - */ - ForceTerminate?: ForceTerminate; - } - export type TerminateEnvironmentResources = boolean; - export type TimeFilterEnd = Date; - export type TimeFilterStart = Date; - export type Timestamp = Date; - export type Token = string; - export interface Trigger { - /** - * The name of the trigger. - */ - Name?: ResourceId; - } - export type TriggerList = Trigger[]; - export interface UpdateApplicationMessage { - /** - * The name of the application to update. If no such application is found, UpdateApplication returns an InvalidParameterValue error. - */ - ApplicationName: ApplicationName; - /** - * A new description for the application. Default: If not specified, AWS Elastic Beanstalk does not update the description. - */ - Description?: Description; - } - export interface UpdateApplicationResourceLifecycleMessage { - /** - * The name of the application. - */ - ApplicationName: ApplicationName; - /** - * The lifecycle configuration. - */ - ResourceLifecycleConfig: ApplicationResourceLifecycleConfig; - } - export interface UpdateApplicationVersionMessage { - /** - * The name of the application associated with this version. If no application is found with this name, UpdateApplication returns an InvalidParameterValue error. - */ - ApplicationName: ApplicationName; - /** - * The name of the version to update. If no application version is found with this label, UpdateApplication returns an InvalidParameterValue error. - */ - VersionLabel: VersionLabel; - /** - * A new description for this version. - */ - Description?: Description; - } - export interface UpdateConfigurationTemplateMessage { - /** - * The name of the application associated with the configuration template to update. If no application is found with this name, UpdateConfigurationTemplate returns an InvalidParameterValue error. - */ - ApplicationName: ApplicationName; - /** - * The name of the configuration template to update. If no configuration template is found with this name, UpdateConfigurationTemplate returns an InvalidParameterValue error. - */ - TemplateName: ConfigurationTemplateName; - /** - * A new description for the configuration. - */ - Description?: Description; - /** - * A list of configuration option settings to update with the new specified option value. - */ - OptionSettings?: ConfigurationOptionSettingsList; - /** - * A list of configuration options to remove from the configuration set. Constraint: You can remove only UserDefined configuration options. - */ - OptionsToRemove?: OptionsSpecifierList; - } - export type UpdateDate = Date; - export interface UpdateEnvironmentMessage { - /** - * The name of the application with which the environment is associated. - */ - ApplicationName?: ApplicationName; - /** - * The ID of the environment to update. If no environment with this ID exists, AWS Elastic Beanstalk returns an InvalidParameterValue error. Condition: You must specify either this or an EnvironmentName, or both. If you do not specify either, AWS Elastic Beanstalk returns MissingRequiredParameter error. - */ - EnvironmentId?: EnvironmentId; - /** - * The name of the environment to update. If no environment with this name exists, AWS Elastic Beanstalk returns an InvalidParameterValue error. Condition: You must specify either this or an EnvironmentId, or both. If you do not specify either, AWS Elastic Beanstalk returns MissingRequiredParameter error. - */ - EnvironmentName?: EnvironmentName; - /** - * The name of the group to which the target environment belongs. Specify a group name only if the environment's name is specified in an environment manifest and not with the environment name or environment ID parameters. See Environment Manifest (env.yaml) for details. - */ - GroupName?: GroupName; - /** - * If this parameter is specified, AWS Elastic Beanstalk updates the description of this environment. - */ - Description?: Description; - /** - * This specifies the tier to use to update the environment. Condition: At this time, if you change the tier version, name, or type, AWS Elastic Beanstalk returns InvalidParameterValue error. - */ - Tier?: EnvironmentTier; - /** - * If this parameter is specified, AWS Elastic Beanstalk deploys the named application version to the environment. If no such application version is found, returns an InvalidParameterValue error. - */ - VersionLabel?: VersionLabel; - /** - * If this parameter is specified, AWS Elastic Beanstalk deploys this configuration template to the environment. If no such configuration template is found, AWS Elastic Beanstalk returns an InvalidParameterValue error. - */ - TemplateName?: ConfigurationTemplateName; - /** - * This specifies the platform version that the environment will run after the environment is updated. - */ - SolutionStackName?: SolutionStackName; - /** - * The ARN of the platform, if used. - */ - PlatformArn?: PlatformArn; - /** - * If specified, AWS Elastic Beanstalk updates the configuration set associated with the running environment and sets the specified configuration options to the requested value. - */ - OptionSettings?: ConfigurationOptionSettingsList; - /** - * A list of custom user-defined configuration options to remove from the configuration set for this environment. - */ - OptionsToRemove?: OptionsSpecifierList; - } - export interface UpdateTagsForResourceMessage { - /** - * The Amazon Resource Name (ARN) of the resouce to be updated. Must be the ARN of an Elastic Beanstalk environment. - */ - ResourceArn: ResourceArn; - /** - * A list of tags to add or update. If a key of an existing tag is added, the tag's value is updated. - */ - TagsToAdd?: TagList; - /** - * A list of tag keys to remove. If a tag key doesn't exist, it is silently ignored. - */ - TagsToRemove?: TagKeyList; - } - export type UserDefinedOption = boolean; - export interface ValidateConfigurationSettingsMessage { - /** - * The name of the application that the configuration template or environment belongs to. - */ - ApplicationName: ApplicationName; - /** - * The name of the configuration template to validate the settings against. Condition: You cannot specify both this and an environment name. - */ - TemplateName?: ConfigurationTemplateName; - /** - * The name of the environment to validate the settings against. Condition: You cannot specify both this and a configuration template name. - */ - EnvironmentName?: EnvironmentName; - /** - * A list of the options and desired values to evaluate. - */ - OptionSettings: ConfigurationOptionSettingsList; - } - export interface ValidationMessage { - /** - * A message describing the error or warning. - */ - Message?: ValidationMessageString; - /** - * An indication of the severity of this message: error: This message indicates that this is not a valid setting for an option. warning: This message is providing information you should take into account. - */ - Severity?: ValidationSeverity; - /** - * The namespace to which the option belongs. - */ - Namespace?: OptionNamespace; - /** - * The name of the option. - */ - OptionName?: ConfigurationOptionName; - } - export type ValidationMessageString = string; - export type ValidationMessagesList = ValidationMessage[]; - export type ValidationSeverity = "error"|"warning"|string; - export type VersionLabel = string; - export type VersionLabels = VersionLabel[]; - export type VersionLabelsList = VersionLabel[]; - export type VirtualizationType = string; - /** - * A string in YYYY-MM-DD format that represents the latest possible API version that can be used in this service. Specify 'latest' to use the latest possible version. - */ - export type apiVersion = "2010-12-01"|"latest"|string; - export interface ClientApiVersions { - /** - * A string in YYYY-MM-DD format that represents the latest possible API version that can be used in this service. Specify 'latest' to use the latest possible version. - */ - apiVersion?: apiVersion; - } - export type ClientConfiguration = ServiceConfigurationOptions & ClientApiVersions; - /** - * Contains interfaces for use with the ElasticBeanstalk client. - */ - export import Types = ElasticBeanstalk; -} -export = ElasticBeanstalk; diff --git a/workshops/monte-carlo-on-ec2-spot-fleet/src/web/node_modules/aws-sdk/clients/elasticbeanstalk.js b/workshops/monte-carlo-on-ec2-spot-fleet/src/web/node_modules/aws-sdk/clients/elasticbeanstalk.js deleted file mode 100644 index 96c5a93f..00000000 --- a/workshops/monte-carlo-on-ec2-spot-fleet/src/web/node_modules/aws-sdk/clients/elasticbeanstalk.js +++ /dev/null @@ -1,18 +0,0 @@ -require('../lib/node_loader'); -var AWS = require('../lib/core'); -var Service = AWS.Service; -var apiLoader = AWS.apiLoader; - -apiLoader.services['elasticbeanstalk'] = {}; -AWS.ElasticBeanstalk = Service.defineService('elasticbeanstalk', ['2010-12-01']); -Object.defineProperty(apiLoader.services['elasticbeanstalk'], '2010-12-01', { - get: function get() { - var model = require('../apis/elasticbeanstalk-2010-12-01.min.json'); - model.paginators = require('../apis/elasticbeanstalk-2010-12-01.paginators.json').pagination; - return model; - }, - enumerable: true, - configurable: true -}); - -module.exports = AWS.ElasticBeanstalk; diff --git a/workshops/monte-carlo-on-ec2-spot-fleet/src/web/node_modules/aws-sdk/clients/elastictranscoder.d.ts b/workshops/monte-carlo-on-ec2-spot-fleet/src/web/node_modules/aws-sdk/clients/elastictranscoder.d.ts deleted file mode 100644 index f4bb3073..00000000 --- a/workshops/monte-carlo-on-ec2-spot-fleet/src/web/node_modules/aws-sdk/clients/elastictranscoder.d.ts +++ /dev/null @@ -1,1485 +0,0 @@ -import {Request} from '../lib/request'; -import {Response} from '../lib/response'; -import {AWSError} from '../lib/error'; -import {Service} from '../lib/service'; -import {ServiceConfigurationOptions} from '../lib/service'; -import {ConfigBase as Config} from '../lib/config'; -interface Blob {} -declare class ElasticTranscoder extends Service { - /** - * Constructs a service object. This object has one method for each API operation. - */ - constructor(options?: ElasticTranscoder.Types.ClientConfiguration) - config: Config & ElasticTranscoder.Types.ClientConfiguration; - /** - * The CancelJob operation cancels an unfinished job. You can only cancel a job that has a status of Submitted. To prevent a pipeline from starting to process a job while you're getting the job identifier, use UpdatePipelineStatus to temporarily pause the pipeline. - */ - cancelJob(params: ElasticTranscoder.Types.CancelJobRequest, callback?: (err: AWSError, data: ElasticTranscoder.Types.CancelJobResponse) => void): Request; - /** - * The CancelJob operation cancels an unfinished job. You can only cancel a job that has a status of Submitted. To prevent a pipeline from starting to process a job while you're getting the job identifier, use UpdatePipelineStatus to temporarily pause the pipeline. - */ - cancelJob(callback?: (err: AWSError, data: ElasticTranscoder.Types.CancelJobResponse) => void): Request; - /** - * When you create a job, Elastic Transcoder returns JSON data that includes the values that you specified plus information about the job that is created. If you have specified more than one output for your jobs (for example, one output for the Kindle Fire and another output for the Apple iPhone 4s), you currently must use the Elastic Transcoder API to list the jobs (as opposed to the AWS Console). - */ - createJob(params: ElasticTranscoder.Types.CreateJobRequest, callback?: (err: AWSError, data: ElasticTranscoder.Types.CreateJobResponse) => void): Request; - /** - * When you create a job, Elastic Transcoder returns JSON data that includes the values that you specified plus information about the job that is created. If you have specified more than one output for your jobs (for example, one output for the Kindle Fire and another output for the Apple iPhone 4s), you currently must use the Elastic Transcoder API to list the jobs (as opposed to the AWS Console). - */ - createJob(callback?: (err: AWSError, data: ElasticTranscoder.Types.CreateJobResponse) => void): Request; - /** - * The CreatePipeline operation creates a pipeline with settings that you specify. - */ - createPipeline(params: ElasticTranscoder.Types.CreatePipelineRequest, callback?: (err: AWSError, data: ElasticTranscoder.Types.CreatePipelineResponse) => void): Request; - /** - * The CreatePipeline operation creates a pipeline with settings that you specify. - */ - createPipeline(callback?: (err: AWSError, data: ElasticTranscoder.Types.CreatePipelineResponse) => void): Request; - /** - * The CreatePreset operation creates a preset with settings that you specify. Elastic Transcoder checks the CreatePreset settings to ensure that they meet Elastic Transcoder requirements and to determine whether they comply with H.264 standards. If your settings are not valid for Elastic Transcoder, Elastic Transcoder returns an HTTP 400 response (ValidationException) and does not create the preset. If the settings are valid for Elastic Transcoder but aren't strictly compliant with the H.264 standard, Elastic Transcoder creates the preset and returns a warning message in the response. This helps you determine whether your settings comply with the H.264 standard while giving you greater flexibility with respect to the video that Elastic Transcoder produces. Elastic Transcoder uses the H.264 video-compression format. For more information, see the International Telecommunication Union publication Recommendation ITU-T H.264: Advanced video coding for generic audiovisual services. - */ - createPreset(params: ElasticTranscoder.Types.CreatePresetRequest, callback?: (err: AWSError, data: ElasticTranscoder.Types.CreatePresetResponse) => void): Request; - /** - * The CreatePreset operation creates a preset with settings that you specify. Elastic Transcoder checks the CreatePreset settings to ensure that they meet Elastic Transcoder requirements and to determine whether they comply with H.264 standards. If your settings are not valid for Elastic Transcoder, Elastic Transcoder returns an HTTP 400 response (ValidationException) and does not create the preset. If the settings are valid for Elastic Transcoder but aren't strictly compliant with the H.264 standard, Elastic Transcoder creates the preset and returns a warning message in the response. This helps you determine whether your settings comply with the H.264 standard while giving you greater flexibility with respect to the video that Elastic Transcoder produces. Elastic Transcoder uses the H.264 video-compression format. For more information, see the International Telecommunication Union publication Recommendation ITU-T H.264: Advanced video coding for generic audiovisual services. - */ - createPreset(callback?: (err: AWSError, data: ElasticTranscoder.Types.CreatePresetResponse) => void): Request; - /** - * The DeletePipeline operation removes a pipeline. You can only delete a pipeline that has never been used or that is not currently in use (doesn't contain any active jobs). If the pipeline is currently in use, DeletePipeline returns an error. - */ - deletePipeline(params: ElasticTranscoder.Types.DeletePipelineRequest, callback?: (err: AWSError, data: ElasticTranscoder.Types.DeletePipelineResponse) => void): Request; - /** - * The DeletePipeline operation removes a pipeline. You can only delete a pipeline that has never been used or that is not currently in use (doesn't contain any active jobs). If the pipeline is currently in use, DeletePipeline returns an error. - */ - deletePipeline(callback?: (err: AWSError, data: ElasticTranscoder.Types.DeletePipelineResponse) => void): Request; - /** - * The DeletePreset operation removes a preset that you've added in an AWS region. You can't delete the default presets that are included with Elastic Transcoder. - */ - deletePreset(params: ElasticTranscoder.Types.DeletePresetRequest, callback?: (err: AWSError, data: ElasticTranscoder.Types.DeletePresetResponse) => void): Request; - /** - * The DeletePreset operation removes a preset that you've added in an AWS region. You can't delete the default presets that are included with Elastic Transcoder. - */ - deletePreset(callback?: (err: AWSError, data: ElasticTranscoder.Types.DeletePresetResponse) => void): Request; - /** - * The ListJobsByPipeline operation gets a list of the jobs currently in a pipeline. Elastic Transcoder returns all of the jobs currently in the specified pipeline. The response body contains one element for each job that satisfies the search criteria. - */ - listJobsByPipeline(params: ElasticTranscoder.Types.ListJobsByPipelineRequest, callback?: (err: AWSError, data: ElasticTranscoder.Types.ListJobsByPipelineResponse) => void): Request; - /** - * The ListJobsByPipeline operation gets a list of the jobs currently in a pipeline. Elastic Transcoder returns all of the jobs currently in the specified pipeline. The response body contains one element for each job that satisfies the search criteria. - */ - listJobsByPipeline(callback?: (err: AWSError, data: ElasticTranscoder.Types.ListJobsByPipelineResponse) => void): Request; - /** - * The ListJobsByStatus operation gets a list of jobs that have a specified status. The response body contains one element for each job that satisfies the search criteria. - */ - listJobsByStatus(params: ElasticTranscoder.Types.ListJobsByStatusRequest, callback?: (err: AWSError, data: ElasticTranscoder.Types.ListJobsByStatusResponse) => void): Request; - /** - * The ListJobsByStatus operation gets a list of jobs that have a specified status. The response body contains one element for each job that satisfies the search criteria. - */ - listJobsByStatus(callback?: (err: AWSError, data: ElasticTranscoder.Types.ListJobsByStatusResponse) => void): Request; - /** - * The ListPipelines operation gets a list of the pipelines associated with the current AWS account. - */ - listPipelines(params: ElasticTranscoder.Types.ListPipelinesRequest, callback?: (err: AWSError, data: ElasticTranscoder.Types.ListPipelinesResponse) => void): Request; - /** - * The ListPipelines operation gets a list of the pipelines associated with the current AWS account. - */ - listPipelines(callback?: (err: AWSError, data: ElasticTranscoder.Types.ListPipelinesResponse) => void): Request; - /** - * The ListPresets operation gets a list of the default presets included with Elastic Transcoder and the presets that you've added in an AWS region. - */ - listPresets(params: ElasticTranscoder.Types.ListPresetsRequest, callback?: (err: AWSError, data: ElasticTranscoder.Types.ListPresetsResponse) => void): Request; - /** - * The ListPresets operation gets a list of the default presets included with Elastic Transcoder and the presets that you've added in an AWS region. - */ - listPresets(callback?: (err: AWSError, data: ElasticTranscoder.Types.ListPresetsResponse) => void): Request; - /** - * The ReadJob operation returns detailed information about a job. - */ - readJob(params: ElasticTranscoder.Types.ReadJobRequest, callback?: (err: AWSError, data: ElasticTranscoder.Types.ReadJobResponse) => void): Request; - /** - * The ReadJob operation returns detailed information about a job. - */ - readJob(callback?: (err: AWSError, data: ElasticTranscoder.Types.ReadJobResponse) => void): Request; - /** - * The ReadPipeline operation gets detailed information about a pipeline. - */ - readPipeline(params: ElasticTranscoder.Types.ReadPipelineRequest, callback?: (err: AWSError, data: ElasticTranscoder.Types.ReadPipelineResponse) => void): Request; - /** - * The ReadPipeline operation gets detailed information about a pipeline. - */ - readPipeline(callback?: (err: AWSError, data: ElasticTranscoder.Types.ReadPipelineResponse) => void): Request; - /** - * The ReadPreset operation gets detailed information about a preset. - */ - readPreset(params: ElasticTranscoder.Types.ReadPresetRequest, callback?: (err: AWSError, data: ElasticTranscoder.Types.ReadPresetResponse) => void): Request; - /** - * The ReadPreset operation gets detailed information about a preset. - */ - readPreset(callback?: (err: AWSError, data: ElasticTranscoder.Types.ReadPresetResponse) => void): Request; - /** - * The TestRole operation tests the IAM role used to create the pipeline. The TestRole action lets you determine whether the IAM role you are using has sufficient permissions to let Elastic Transcoder perform tasks associated with the transcoding process. The action attempts to assume the specified IAM role, checks read access to the input and output buckets, and tries to send a test notification to Amazon SNS topics that you specify. - */ - testRole(params: ElasticTranscoder.Types.TestRoleRequest, callback?: (err: AWSError, data: ElasticTranscoder.Types.TestRoleResponse) => void): Request; - /** - * The TestRole operation tests the IAM role used to create the pipeline. The TestRole action lets you determine whether the IAM role you are using has sufficient permissions to let Elastic Transcoder perform tasks associated with the transcoding process. The action attempts to assume the specified IAM role, checks read access to the input and output buckets, and tries to send a test notification to Amazon SNS topics that you specify. - */ - testRole(callback?: (err: AWSError, data: ElasticTranscoder.Types.TestRoleResponse) => void): Request; - /** - * Use the UpdatePipeline operation to update settings for a pipeline. When you change pipeline settings, your changes take effect immediately. Jobs that you have already submitted and that Elastic Transcoder has not started to process are affected in addition to jobs that you submit after you change settings. - */ - updatePipeline(params: ElasticTranscoder.Types.UpdatePipelineRequest, callback?: (err: AWSError, data: ElasticTranscoder.Types.UpdatePipelineResponse) => void): Request; - /** - * Use the UpdatePipeline operation to update settings for a pipeline. When you change pipeline settings, your changes take effect immediately. Jobs that you have already submitted and that Elastic Transcoder has not started to process are affected in addition to jobs that you submit after you change settings. - */ - updatePipeline(callback?: (err: AWSError, data: ElasticTranscoder.Types.UpdatePipelineResponse) => void): Request; - /** - * With the UpdatePipelineNotifications operation, you can update Amazon Simple Notification Service (Amazon SNS) notifications for a pipeline. When you update notifications for a pipeline, Elastic Transcoder returns the values that you specified in the request. - */ - updatePipelineNotifications(params: ElasticTranscoder.Types.UpdatePipelineNotificationsRequest, callback?: (err: AWSError, data: ElasticTranscoder.Types.UpdatePipelineNotificationsResponse) => void): Request; - /** - * With the UpdatePipelineNotifications operation, you can update Amazon Simple Notification Service (Amazon SNS) notifications for a pipeline. When you update notifications for a pipeline, Elastic Transcoder returns the values that you specified in the request. - */ - updatePipelineNotifications(callback?: (err: AWSError, data: ElasticTranscoder.Types.UpdatePipelineNotificationsResponse) => void): Request; - /** - * The UpdatePipelineStatus operation pauses or reactivates a pipeline, so that the pipeline stops or restarts the processing of jobs. Changing the pipeline status is useful if you want to cancel one or more jobs. You can't cancel jobs after Elastic Transcoder has started processing them; if you pause the pipeline to which you submitted the jobs, you have more time to get the job IDs for the jobs that you want to cancel, and to send a CancelJob request. - */ - updatePipelineStatus(params: ElasticTranscoder.Types.UpdatePipelineStatusRequest, callback?: (err: AWSError, data: ElasticTranscoder.Types.UpdatePipelineStatusResponse) => void): Request; - /** - * The UpdatePipelineStatus operation pauses or reactivates a pipeline, so that the pipeline stops or restarts the processing of jobs. Changing the pipeline status is useful if you want to cancel one or more jobs. You can't cancel jobs after Elastic Transcoder has started processing them; if you pause the pipeline to which you submitted the jobs, you have more time to get the job IDs for the jobs that you want to cancel, and to send a CancelJob request. - */ - updatePipelineStatus(callback?: (err: AWSError, data: ElasticTranscoder.Types.UpdatePipelineStatusResponse) => void): Request; - /** - * Waits for the jobComplete state by periodically calling the underlying ElasticTranscoder.readJoboperation every 30 seconds (at most 120 times). - */ - waitFor(state: "jobComplete", params: ElasticTranscoder.Types.ReadJobRequest, callback?: (err: AWSError, data: ElasticTranscoder.Types.ReadJobResponse) => void): Request; - /** - * Waits for the jobComplete state by periodically calling the underlying ElasticTranscoder.readJoboperation every 30 seconds (at most 120 times). - */ - waitFor(state: "jobComplete", callback?: (err: AWSError, data: ElasticTranscoder.Types.ReadJobResponse) => void): Request; -} -declare namespace ElasticTranscoder { - export type AccessControl = string; - export type AccessControls = AccessControl[]; - export interface Artwork { - /** - * The name of the file to be used as album art. To determine which Amazon S3 bucket contains the specified file, Elastic Transcoder checks the pipeline specified by PipelineId; the InputBucket object in that pipeline identifies the bucket. If the file name includes a prefix, for example, cooking/pie.jpg, include the prefix in the key. If the file isn't in the specified bucket, Elastic Transcoder returns an error. - */ - InputKey?: WatermarkKey; - /** - * The maximum width of the output album art in pixels. If you specify auto, Elastic Transcoder uses 600 as the default value. If you specify a numeric value, enter an even integer between 32 and 4096, inclusive. - */ - MaxWidth?: DigitsOrAuto; - /** - * The maximum height of the output album art in pixels. If you specify auto, Elastic Transcoder uses 600 as the default value. If you specify a numeric value, enter an even integer between 32 and 3072, inclusive. - */ - MaxHeight?: DigitsOrAuto; - /** - * Specify one of the following values to control scaling of the output album art: Fit: Elastic Transcoder scales the output art so it matches the value that you specified in either MaxWidth or MaxHeight without exceeding the other value. Fill: Elastic Transcoder scales the output art so it matches the value that you specified in either MaxWidth or MaxHeight and matches or exceeds the other value. Elastic Transcoder centers the output art and then crops it in the dimension (if any) that exceeds the maximum value. Stretch: Elastic Transcoder stretches the output art to match the values that you specified for MaxWidth and MaxHeight. If the relative proportions of the input art and the output art are different, the output art will be distorted. Keep: Elastic Transcoder does not scale the output art. If either dimension of the input art exceeds the values that you specified for MaxWidth and MaxHeight, Elastic Transcoder crops the output art. ShrinkToFit: Elastic Transcoder scales the output art down so that its dimensions match the values that you specified for at least one of MaxWidth and MaxHeight without exceeding either value. If you specify this option, Elastic Transcoder does not scale the art up. ShrinkToFill Elastic Transcoder scales the output art down so that its dimensions match the values that you specified for at least one of MaxWidth and MaxHeight without dropping below either value. If you specify this option, Elastic Transcoder does not scale the art up. - */ - SizingPolicy?: SizingPolicy; - /** - * When you set PaddingPolicy to Pad, Elastic Transcoder may add white bars to the top and bottom and/or left and right sides of the output album art to make the total size of the output art match the values that you specified for MaxWidth and MaxHeight. - */ - PaddingPolicy?: PaddingPolicy; - /** - * The format of album art, if any. Valid formats are .jpg and .png. - */ - AlbumArtFormat?: JpgOrPng; - /** - * The encryption settings, if any, that you want Elastic Transcoder to apply to your artwork. - */ - Encryption?: Encryption; - } - export type Artworks = Artwork[]; - export type Ascending = string; - export type AspectRatio = string; - export type AudioBitDepth = string; - export type AudioBitOrder = string; - export type AudioBitRate = string; - export type AudioChannels = string; - export type AudioCodec = string; - export interface AudioCodecOptions { - /** - * You can only choose an audio profile when you specify AAC for the value of Audio:Codec. Specify the AAC profile for the output file. Elastic Transcoder supports the following profiles: auto: If you specify auto, Elastic Transcoder selects the profile based on the bit rate selected for the output file. AAC-LC: The most common AAC profile. Use for bit rates larger than 64 kbps. HE-AAC: Not supported on some older players and devices. Use for bit rates between 40 and 80 kbps. HE-AACv2: Not supported on some players and devices. Use for bit rates less than 48 kbps. All outputs in a Smooth playlist must have the same value for Profile. If you created any presets before AAC profiles were added, Elastic Transcoder automatically updated your presets to use AAC-LC. You can change the value as required. - */ - Profile?: AudioCodecProfile; - /** - * You can only choose an audio bit depth when you specify flac or pcm for the value of Audio:Codec. The bit depth of a sample is how many bits of information are included in the audio samples. The higher the bit depth, the better the audio, but the larger the file. Valid values are 16 and 24. The most common bit depth is 24. - */ - BitDepth?: AudioBitDepth; - /** - * You can only choose an audio bit order when you specify pcm for the value of Audio:Codec. The order the bits of a PCM sample are stored in. The supported value is LittleEndian. - */ - BitOrder?: AudioBitOrder; - /** - * You can only choose whether an audio sample is signed when you specify pcm for the value of Audio:Codec. Whether audio samples are represented with negative and positive numbers (signed) or only positive numbers (unsigned). The supported value is Signed. - */ - Signed?: AudioSigned; - } - export type AudioCodecProfile = string; - export type AudioPackingMode = string; - export interface AudioParameters { - /** - * The audio codec for the output file. Valid values include aac, flac, mp2, mp3, pcm, and vorbis. - */ - Codec?: AudioCodec; - /** - * The sample rate of the audio stream in the output file, in Hertz. Valid values include: auto, 22050, 32000, 44100, 48000, 96000 If you specify auto, Elastic Transcoder automatically detects the sample rate. - */ - SampleRate?: AudioSampleRate; - /** - * The bit rate of the audio stream in the output file, in kilobits/second. Enter an integer between 64 and 320, inclusive. - */ - BitRate?: AudioBitRate; - /** - * The number of audio channels in the output file. The following values are valid: auto, 0, 1, 2 One channel carries the information played by a single speaker. For example, a stereo track with two channels sends one channel to the left speaker, and the other channel to the right speaker. The output channels are organized into tracks. If you want Elastic Transcoder to automatically detect the number of audio channels in the input file and use that value for the output file, select auto. The output of a specific channel value and inputs are as follows: auto channel specified, with any input: Pass through up to eight input channels. 0 channels specified, with any input: Audio omitted from the output. 1 channel specified, with at least one input channel: Mono sound. 2 channels specified, with any input: Two identical mono channels or stereo. For more information about tracks, see Audio:AudioPackingMode. For more information about how Elastic Transcoder organizes channels and tracks, see Audio:AudioPackingMode. - */ - Channels?: AudioChannels; - /** - * The method of organizing audio channels and tracks. Use Audio:Channels to specify the number of channels in your output, and Audio:AudioPackingMode to specify the number of tracks and their relation to the channels. If you do not specify an Audio:AudioPackingMode, Elastic Transcoder uses SingleTrack. The following values are valid: SingleTrack, OneChannelPerTrack, and OneChannelPerTrackWithMosTo8Tracks When you specify SingleTrack, Elastic Transcoder creates a single track for your output. The track can have up to eight channels. Use SingleTrack for all non-mxf containers. The outputs of SingleTrack for a specific channel value and inputs are as follows: 0 channels with any input: Audio omitted from the output 1, 2, or auto channels with no audio input: Audio omitted from the output 1 channel with any input with audio: One track with one channel, downmixed if necessary 2 channels with one track with one channel: One track with two identical channels 2 or auto channels with two tracks with one channel each: One track with two channels 2 or auto channels with one track with two channels: One track with two channels 2 channels with one track with multiple channels: One track with two channels auto channels with one track with one channel: One track with one channel auto channels with one track with multiple channels: One track with multiple channels When you specify OneChannelPerTrack, Elastic Transcoder creates a new track for every channel in your output. Your output can have up to eight single-channel tracks. The outputs of OneChannelPerTrack for a specific channel value and inputs are as follows: 0 channels with any input: Audio omitted from the output 1, 2, or auto channels with no audio input: Audio omitted from the output 1 channel with any input with audio: One track with one channel, downmixed if necessary 2 channels with one track with one channel: Two tracks with one identical channel each 2 or auto channels with two tracks with one channel each: Two tracks with one channel each 2 or auto channels with one track with two channels: Two tracks with one channel each 2 channels with one track with multiple channels: Two tracks with one channel each auto channels with one track with one channel: One track with one channel auto channels with one track with multiple channels: Up to eight tracks with one channel each When you specify OneChannelPerTrackWithMosTo8Tracks, Elastic Transcoder creates eight single-channel tracks for your output. All tracks that do not contain audio data from an input channel are MOS, or Mit Out Sound, tracks. The outputs of OneChannelPerTrackWithMosTo8Tracks for a specific channel value and inputs are as follows: 0 channels with any input: Audio omitted from the output 1, 2, or auto channels with no audio input: Audio omitted from the output 1 channel with any input with audio: One track with one channel, downmixed if necessary, plus six MOS tracks 2 channels with one track with one channel: Two tracks with one identical channel each, plus six MOS tracks 2 or auto channels with two tracks with one channel each: Two tracks with one channel each, plus six MOS tracks 2 or auto channels with one track with two channels: Two tracks with one channel each, plus six MOS tracks 2 channels with one track with multiple channels: Two tracks with one channel each, plus six MOS tracks auto channels with one track with one channel: One track with one channel, plus seven MOS tracks auto channels with one track with multiple channels: Up to eight tracks with one channel each, plus MOS tracks until there are eight tracks in all - */ - AudioPackingMode?: AudioPackingMode; - /** - * If you specified AAC for Audio:Codec, this is the AAC compression profile to use. Valid values include: auto, AAC-LC, HE-AAC, HE-AACv2 If you specify auto, Elastic Transcoder chooses a profile based on the bit rate of the output file. - */ - CodecOptions?: AudioCodecOptions; - } - export type AudioSampleRate = string; - export type AudioSigned = string; - export type Base64EncodedString = string; - export type BucketName = string; - export interface CancelJobRequest { - /** - * The identifier of the job that you want to cancel. To get a list of the jobs (including their jobId) that have a status of Submitted, use the ListJobsByStatus API action. - */ - Id: Id; - } - export interface CancelJobResponse { - } - export interface CaptionFormat { - /** - * The format you specify determines whether Elastic Transcoder generates an embedded or sidecar caption for this output. Valid Embedded Caption Formats: for FLAC: None For MP3: None For MP4: mov-text For MPEG-TS: None For ogg: None For webm: None Valid Sidecar Caption Formats: Elastic Transcoder supports dfxp (first div element only), scc, srt, and webvtt. If you want ttml or smpte-tt compatible captions, specify dfxp as your output format. For FMP4: dfxp Non-FMP4 outputs: All sidecar types fmp4 captions have an extension of .ismt - */ - Format?: CaptionFormatFormat; - /** - * The prefix for caption filenames, in the form description-{language}, where: description is a description of the video. {language} is a literal value that Elastic Transcoder replaces with the two- or three-letter code for the language of the caption in the output file names. If you don't include {language} in the file name pattern, Elastic Transcoder automatically appends "{language}" to the value that you specify for the description. In addition, Elastic Transcoder automatically appends the count to the end of the segment files. For example, suppose you're transcoding into srt format. When you enter "Sydney-{language}-sunrise", and the language of the captions is English (en), the name of the first caption file is be Sydney-en-sunrise00000.srt. - */ - Pattern?: CaptionFormatPattern; - /** - * The encryption settings, if any, that you want Elastic Transcoder to apply to your caption formats. - */ - Encryption?: Encryption; - } - export type CaptionFormatFormat = string; - export type CaptionFormatPattern = string; - export type CaptionFormats = CaptionFormat[]; - export type CaptionMergePolicy = string; - export interface CaptionSource { - /** - * The name of the sidecar caption file that you want Elastic Transcoder to include in the output file. - */ - Key?: LongKey; - /** - * A string that specifies the language of the caption. If you specified multiple inputs with captions, the caption language must match in order to be included in the output. Specify this as one of: 2-character ISO 639-1 code 3-character ISO 639-2 code For more information on ISO language codes and language names, see the List of ISO 639-1 codes. - */ - Language?: Key; - /** - * For clip generation or captions that do not start at the same time as the associated video file, the TimeOffset tells Elastic Transcoder how much of the video to encode before including captions. Specify the TimeOffset in the form [+-]SS.sss or [+-]HH:mm:SS.ss. - */ - TimeOffset?: TimeOffset; - /** - * The label of the caption shown in the player when choosing a language. We recommend that you put the caption language name here, in the language of the captions. - */ - Label?: Name; - /** - * The encryption settings, if any, that Elastic Transcoder needs to decyrpt your caption sources, or that you want Elastic Transcoder to apply to your caption sources. - */ - Encryption?: Encryption; - } - export type CaptionSources = CaptionSource[]; - export interface Captions { - /** - * A policy that determines how Elastic Transcoder handles the existence of multiple captions. MergeOverride: Elastic Transcoder transcodes both embedded and sidecar captions into outputs. If captions for a language are embedded in the input file and also appear in a sidecar file, Elastic Transcoder uses the sidecar captions and ignores the embedded captions for that language. MergeRetain: Elastic Transcoder transcodes both embedded and sidecar captions into outputs. If captions for a language are embedded in the input file and also appear in a sidecar file, Elastic Transcoder uses the embedded captions and ignores the sidecar captions for that language. If CaptionSources is empty, Elastic Transcoder omits all sidecar captions from the output files. Override: Elastic Transcoder transcodes only the sidecar captions that you specify in CaptionSources. MergePolicy cannot be null. - */ - MergePolicy?: CaptionMergePolicy; - /** - * Source files for the input sidecar captions used during the transcoding process. To omit all sidecar captions, leave CaptionSources blank. - */ - CaptionSources?: CaptionSources; - /** - * The array of file formats for the output captions. If you leave this value blank, Elastic Transcoder returns an error. - */ - CaptionFormats?: CaptionFormats; - } - export interface Clip { - /** - * Settings that determine when a clip begins and how long it lasts. - */ - TimeSpan?: TimeSpan; - } - export type CodecOption = string; - export type CodecOptions = {[key: string]: CodecOption}; - export type Composition = Clip[]; - export interface CreateJobOutput { - /** - * The name to assign to the transcoded file. Elastic Transcoder saves the file in the Amazon S3 bucket specified by the OutputBucket object in the pipeline that is specified by the pipeline ID. If a file with the specified name already exists in the output bucket, the job fails. - */ - Key?: Key; - /** - * Whether you want Elastic Transcoder to create thumbnails for your videos and, if so, how you want Elastic Transcoder to name the files. If you don't want Elastic Transcoder to create thumbnails, specify "". If you do want Elastic Transcoder to create thumbnails, specify the information that you want to include in the file name for each thumbnail. You can specify the following values in any sequence: {count} (Required): If you want to create thumbnails, you must include {count} in the ThumbnailPattern object. Wherever you specify {count}, Elastic Transcoder adds a five-digit sequence number (beginning with 00001) to thumbnail file names. The number indicates where a given thumbnail appears in the sequence of thumbnails for a transcoded file. If you specify a literal value and/or {resolution} but you omit {count}, Elastic Transcoder returns a validation error and does not create the job. Literal values (Optional): You can specify literal values anywhere in the ThumbnailPattern object. For example, you can include them as a file name prefix or as a delimiter between {resolution} and {count}. {resolution} (Optional): If you want Elastic Transcoder to include the resolution in the file name, include {resolution} in the ThumbnailPattern object. When creating thumbnails, Elastic Transcoder automatically saves the files in the format (.jpg or .png) that appears in the preset that you specified in the PresetID value of CreateJobOutput. Elastic Transcoder also appends the applicable file name extension. - */ - ThumbnailPattern?: ThumbnailPattern; - /** - * The encryption settings, if any, that you want Elastic Transcoder to apply to your thumbnail. - */ - ThumbnailEncryption?: Encryption; - /** - * The number of degrees clockwise by which you want Elastic Transcoder to rotate the output relative to the input. Enter one of the following values: auto, 0, 90, 180, 270. The value auto generally works only if the file that you're transcoding contains rotation metadata. - */ - Rotate?: Rotate; - /** - * The Id of the preset to use for this job. The preset determines the audio, video, and thumbnail settings that Elastic Transcoder uses for transcoding. - */ - PresetId?: Id; - /** - * (Outputs in Fragmented MP4 or MPEG-TS format only. If you specify a preset in PresetId for which the value of Container is fmp4 (Fragmented MP4) or ts (MPEG-TS), SegmentDuration is the target maximum duration of each segment in seconds. For HLSv3 format playlists, each media segment is stored in a separate .ts file. For HLSv4 and Smooth playlists, all media segments for an output are stored in a single file. Each segment is approximately the length of the SegmentDuration, though individual segments might be shorter or longer. The range of valid values is 1 to 60 seconds. If the duration of the video is not evenly divisible by SegmentDuration, the duration of the last segment is the remainder of total length/SegmentDuration. Elastic Transcoder creates an output-specific playlist for each output HLS output that you specify in OutputKeys. To add an output to the master playlist for this job, include it in the OutputKeys of the associated playlist. - */ - SegmentDuration?: FloatString; - /** - * Information about the watermarks that you want Elastic Transcoder to add to the video during transcoding. You can specify up to four watermarks for each output. Settings for each watermark must be defined in the preset for the current output. - */ - Watermarks?: JobWatermarks; - /** - * Information about the album art that you want Elastic Transcoder to add to the file during transcoding. You can specify up to twenty album artworks for each output. Settings for each artwork must be defined in the job for the current output. - */ - AlbumArt?: JobAlbumArt; - /** - * You can create an output file that contains an excerpt from the input file. This excerpt, called a clip, can come from the beginning, middle, or end of the file. The Composition object contains settings for the clips that make up an output file. For the current release, you can only specify settings for a single clip per output file. The Composition object cannot be null. - */ - Composition?: Composition; - /** - * You can configure Elastic Transcoder to transcode captions, or subtitles, from one format to another. All captions must be in UTF-8. Elastic Transcoder supports two types of captions: Embedded: Embedded captions are included in the same file as the audio and video. Elastic Transcoder supports only one embedded caption per language, to a maximum of 300 embedded captions per file. Valid input values include: CEA-608 (EIA-608, first non-empty channel only), CEA-708 (EIA-708, first non-empty channel only), and mov-text Valid outputs include: mov-text Elastic Transcoder supports a maximum of one embedded format per output. Sidecar: Sidecar captions are kept in a separate metadata file from the audio and video data. Sidecar captions require a player that is capable of understanding the relationship between the video file and the sidecar file. Elastic Transcoder supports only one sidecar caption per language, to a maximum of 20 sidecar captions per file. Valid input values include: dfxp (first div element only), ebu-tt, scc, smpt, srt, ttml (first div element only), and webvtt Valid outputs include: dfxp (first div element only), scc, srt, and webvtt. If you want ttml or smpte-tt compatible captions, specify dfxp as your output format. Elastic Transcoder does not support OCR (Optical Character Recognition), does not accept pictures as a valid input for captions, and is not available for audio-only transcoding. Elastic Transcoder does not preserve text formatting (for example, italics) during the transcoding process. To remove captions or leave the captions empty, set Captions to null. To pass through existing captions unchanged, set the MergePolicy to MergeRetain, and pass in a null CaptionSources array. For more information on embedded files, see the Subtitles Wikipedia page. For more information on sidecar files, see the Extensible Metadata Platform and Sidecar file Wikipedia pages. - */ - Captions?: Captions; - /** - * You can specify encryption settings for any output files that you want to use for a transcoding job. This includes the output file and any watermarks, thumbnails, album art, or captions that you want to use. You must specify encryption settings for each file individually. - */ - Encryption?: Encryption; - } - export type CreateJobOutputs = CreateJobOutput[]; - export interface CreateJobPlaylist { - /** - * The name that you want Elastic Transcoder to assign to the master playlist, for example, nyc-vacation.m3u8. If the name includes a / character, the section of the name before the last / must be identical for all Name objects. If you create more than one master playlist, the values of all Name objects must be unique. Elastic Transcoder automatically appends the relevant file extension to the file name (.m3u8 for HLSv3 and HLSv4 playlists, and .ism and .ismc for Smooth playlists). If you include a file extension in Name, the file name will have two extensions. - */ - Name?: Filename; - /** - * The format of the output playlist. Valid formats include HLSv3, HLSv4, and Smooth. - */ - Format?: PlaylistFormat; - /** - * For each output in this job that you want to include in a master playlist, the value of the Outputs:Key object. If your output is not HLS or does not have a segment duration set, the name of the output file is a concatenation of OutputKeyPrefix and Outputs:Key: OutputKeyPrefixOutputs:Key If your output is HLSv3 and has a segment duration set, or is not included in a playlist, Elastic Transcoder creates an output playlist file with a file extension of .m3u8, and a series of .ts files that include a five-digit sequential counter beginning with 00000: OutputKeyPrefixOutputs:Key.m3u8 OutputKeyPrefixOutputs:Key00000.ts If your output is HLSv4, has a segment duration set, and is included in an HLSv4 playlist, Elastic Transcoder creates an output playlist file with a file extension of _v4.m3u8. If the output is video, Elastic Transcoder also creates an output file with an extension of _iframe.m3u8: OutputKeyPrefixOutputs:Key_v4.m3u8 OutputKeyPrefixOutputs:Key_iframe.m3u8 OutputKeyPrefixOutputs:Key.ts Elastic Transcoder automatically appends the relevant file extension to the file name. If you include a file extension in Output Key, the file name will have two extensions. If you include more than one output in a playlist, any segment duration settings, clip settings, or caption settings must be the same for all outputs in the playlist. For Smooth playlists, the Audio:Profile, Video:Profile, and Video:FrameRate to Video:KeyframesMaxDist ratio must be the same for all outputs. - */ - OutputKeys?: OutputKeys; - /** - * The HLS content protection settings, if any, that you want Elastic Transcoder to apply to the output files associated with this playlist. - */ - HlsContentProtection?: HlsContentProtection; - /** - * The DRM settings, if any, that you want Elastic Transcoder to apply to the output files associated with this playlist. - */ - PlayReadyDrm?: PlayReadyDrm; - } - export type CreateJobPlaylists = CreateJobPlaylist[]; - export interface CreateJobRequest { - /** - * The Id of the pipeline that you want Elastic Transcoder to use for transcoding. The pipeline determines several settings, including the Amazon S3 bucket from which Elastic Transcoder gets the files to transcode and the bucket into which Elastic Transcoder puts the transcoded files. - */ - PipelineId: Id; - /** - * A section of the request body that provides information about the file that is being transcoded. - */ - Input?: JobInput; - /** - * A section of the request body that provides information about the files that are being transcoded. - */ - Inputs?: JobInputs; - /** - * A section of the request body that provides information about the transcoded (target) file. We strongly recommend that you use the Outputs syntax instead of the Output syntax. - */ - Output?: CreateJobOutput; - /** - * A section of the request body that provides information about the transcoded (target) files. We recommend that you use the Outputs syntax instead of the Output syntax. - */ - Outputs?: CreateJobOutputs; - /** - * The value, if any, that you want Elastic Transcoder to prepend to the names of all files that this job creates, including output files, thumbnails, and playlists. - */ - OutputKeyPrefix?: Key; - /** - * If you specify a preset in PresetId for which the value of Container is fmp4 (Fragmented MP4) or ts (MPEG-TS), Playlists contains information about the master playlists that you want Elastic Transcoder to create. The maximum number of master playlists in a job is 30. - */ - Playlists?: CreateJobPlaylists; - /** - * User-defined metadata that you want to associate with an Elastic Transcoder job. You specify metadata in key/value pairs, and you can add up to 10 key/value pairs per job. Elastic Transcoder does not guarantee that key/value pairs are returned in the same order in which you specify them. - */ - UserMetadata?: UserMetadata; - } - export interface CreateJobResponse { - /** - * A section of the response body that provides information about the job that is created. - */ - Job?: Job; - } - export interface CreatePipelineRequest { - /** - * The name of the pipeline. We recommend that the name be unique within the AWS account, but uniqueness is not enforced. Constraints: Maximum 40 characters. - */ - Name: Name; - /** - * The Amazon S3 bucket in which you saved the media files that you want to transcode. - */ - InputBucket: BucketName; - /** - * The Amazon S3 bucket in which you want Elastic Transcoder to save the transcoded files. (Use this, or use ContentConfig:Bucket plus ThumbnailConfig:Bucket.) Specify this value when all of the following are true: You want to save transcoded files, thumbnails (if any), and playlists (if any) together in one bucket. You do not want to specify the users or groups who have access to the transcoded files, thumbnails, and playlists. You do not want to specify the permissions that Elastic Transcoder grants to the files. When Elastic Transcoder saves files in OutputBucket, it grants full control over the files only to the AWS account that owns the role that is specified by Role. You want to associate the transcoded files and thumbnails with the Amazon S3 Standard storage class. If you want to save transcoded files and playlists in one bucket and thumbnails in another bucket, specify which users can access the transcoded files or the permissions the users have, or change the Amazon S3 storage class, omit OutputBucket and specify values for ContentConfig and ThumbnailConfig instead. - */ - OutputBucket?: BucketName; - /** - * The IAM Amazon Resource Name (ARN) for the role that you want Elastic Transcoder to use to create the pipeline. - */ - Role: Role; - /** - * The AWS Key Management Service (AWS KMS) key that you want to use with this pipeline. If you use either S3 or S3-AWS-KMS as your Encryption:Mode, you don't need to provide a key with your job because a default key, known as an AWS-KMS key, is created for you automatically. You need to provide an AWS-KMS key only if you want to use a non-default AWS-KMS key, or if you are using an Encryption:Mode of AES-PKCS7, AES-CTR, or AES-GCM. - */ - AwsKmsKeyArn?: KeyArn; - /** - * The Amazon Simple Notification Service (Amazon SNS) topic that you want to notify to report job status. To receive notifications, you must also subscribe to the new topic in the Amazon SNS console. Progressing: The topic ARN for the Amazon Simple Notification Service (Amazon SNS) topic that you want to notify when Elastic Transcoder has started to process a job in this pipeline. This is the ARN that Amazon SNS returned when you created the topic. For more information, see Create a Topic in the Amazon Simple Notification Service Developer Guide. Completed: The topic ARN for the Amazon SNS topic that you want to notify when Elastic Transcoder has finished processing a job in this pipeline. This is the ARN that Amazon SNS returned when you created the topic. Warning: The topic ARN for the Amazon SNS topic that you want to notify when Elastic Transcoder encounters a warning condition while processing a job in this pipeline. This is the ARN that Amazon SNS returned when you created the topic. Error: The topic ARN for the Amazon SNS topic that you want to notify when Elastic Transcoder encounters an error condition while processing a job in this pipeline. This is the ARN that Amazon SNS returned when you created the topic. - */ - Notifications?: Notifications; - /** - * The optional ContentConfig object specifies information about the Amazon S3 bucket in which you want Elastic Transcoder to save transcoded files and playlists: which bucket to use, which users you want to have access to the files, the type of access you want users to have, and the storage class that you want to assign to the files. If you specify values for ContentConfig, you must also specify values for ThumbnailConfig. If you specify values for ContentConfig and ThumbnailConfig, omit the OutputBucket object. Bucket: The Amazon S3 bucket in which you want Elastic Transcoder to save transcoded files and playlists. Permissions (Optional): The Permissions object specifies which users you want to have access to transcoded files and the type of access you want them to have. You can grant permissions to a maximum of 30 users and/or predefined Amazon S3 groups. Grantee Type: Specify the type of value that appears in the Grantee object: Canonical: The value in the Grantee object is either the canonical user ID for an AWS account or an origin access identity for an Amazon CloudFront distribution. For more information about canonical user IDs, see Access Control List (ACL) Overview in the Amazon Simple Storage Service Developer Guide. For more information about using CloudFront origin access identities to require that users use CloudFront URLs instead of Amazon S3 URLs, see Using an Origin Access Identity to Restrict Access to Your Amazon S3 Content. A canonical user ID is not the same as an AWS account number. Email: The value in the Grantee object is the registered email address of an AWS account. Group: The value in the Grantee object is one of the following predefined Amazon S3 groups: AllUsers, AuthenticatedUsers, or LogDelivery. Grantee: The AWS user or group that you want to have access to transcoded files and playlists. To identify the user or group, you can specify the canonical user ID for an AWS account, an origin access identity for a CloudFront distribution, the registered email address of an AWS account, or a predefined Amazon S3 group Access: The permission that you want to give to the AWS user that you specified in Grantee. Permissions are granted on the files that Elastic Transcoder adds to the bucket, including playlists and video files. Valid values include: READ: The grantee can read the objects and metadata for objects that Elastic Transcoder adds to the Amazon S3 bucket. READ_ACP: The grantee can read the object ACL for objects that Elastic Transcoder adds to the Amazon S3 bucket. WRITE_ACP: The grantee can write the ACL for the objects that Elastic Transcoder adds to the Amazon S3 bucket. FULL_CONTROL: The grantee has READ, READ_ACP, and WRITE_ACP permissions for the objects that Elastic Transcoder adds to the Amazon S3 bucket. StorageClass: The Amazon S3 storage class, Standard or ReducedRedundancy, that you want Elastic Transcoder to assign to the video files and playlists that it stores in your Amazon S3 bucket. - */ - ContentConfig?: PipelineOutputConfig; - /** - * The ThumbnailConfig object specifies several values, including the Amazon S3 bucket in which you want Elastic Transcoder to save thumbnail files, which users you want to have access to the files, the type of access you want users to have, and the storage class that you want to assign to the files. If you specify values for ContentConfig, you must also specify values for ThumbnailConfig even if you don't want to create thumbnails. If you specify values for ContentConfig and ThumbnailConfig, omit the OutputBucket object. Bucket: The Amazon S3 bucket in which you want Elastic Transcoder to save thumbnail files. Permissions (Optional): The Permissions object specifies which users and/or predefined Amazon S3 groups you want to have access to thumbnail files, and the type of access you want them to have. You can grant permissions to a maximum of 30 users and/or predefined Amazon S3 groups. GranteeType: Specify the type of value that appears in the Grantee object: Canonical: The value in the Grantee object is either the canonical user ID for an AWS account or an origin access identity for an Amazon CloudFront distribution. A canonical user ID is not the same as an AWS account number. Email: The value in the Grantee object is the registered email address of an AWS account. Group: The value in the Grantee object is one of the following predefined Amazon S3 groups: AllUsers, AuthenticatedUsers, or LogDelivery. Grantee: The AWS user or group that you want to have access to thumbnail files. To identify the user or group, you can specify the canonical user ID for an AWS account, an origin access identity for a CloudFront distribution, the registered email address of an AWS account, or a predefined Amazon S3 group. Access: The permission that you want to give to the AWS user that you specified in Grantee. Permissions are granted on the thumbnail files that Elastic Transcoder adds to the bucket. Valid values include: READ: The grantee can read the thumbnails and metadata for objects that Elastic Transcoder adds to the Amazon S3 bucket. READ_ACP: The grantee can read the object ACL for thumbnails that Elastic Transcoder adds to the Amazon S3 bucket. WRITE_ACP: The grantee can write the ACL for the thumbnails that Elastic Transcoder adds to the Amazon S3 bucket. FULL_CONTROL: The grantee has READ, READ_ACP, and WRITE_ACP permissions for the thumbnails that Elastic Transcoder adds to the Amazon S3 bucket. StorageClass: The Amazon S3 storage class, Standard or ReducedRedundancy, that you want Elastic Transcoder to assign to the thumbnails that it stores in your Amazon S3 bucket. - */ - ThumbnailConfig?: PipelineOutputConfig; - } - export interface CreatePipelineResponse { - /** - * A section of the response body that provides information about the pipeline that is created. - */ - Pipeline?: Pipeline; - /** - * Elastic Transcoder returns a warning if the resources used by your pipeline are not in the same region as the pipeline. Using resources in the same region, such as your Amazon S3 buckets, Amazon SNS notification topics, and AWS KMS key, reduces processing time and prevents cross-regional charges. - */ - Warnings?: Warnings; - } - export interface CreatePresetRequest { - /** - * The name of the preset. We recommend that the name be unique within the AWS account, but uniqueness is not enforced. - */ - Name: Name; - /** - * A description of the preset. - */ - Description?: Description; - /** - * The container type for the output file. Valid values include flac, flv, fmp4, gif, mp3, mp4, mpg, mxf, oga, ogg, ts, and webm. - */ - Container: PresetContainer; - /** - * A section of the request body that specifies the video parameters. - */ - Video?: VideoParameters; - /** - * A section of the request body that specifies the audio parameters. - */ - Audio?: AudioParameters; - /** - * A section of the request body that specifies the thumbnail parameters, if any. - */ - Thumbnails?: Thumbnails; - } - export interface CreatePresetResponse { - /** - * A section of the response body that provides information about the preset that is created. - */ - Preset?: Preset; - /** - * If the preset settings don't comply with the standards for the video codec but Elastic Transcoder created the preset, this message explains the reason the preset settings don't meet the standard. Elastic Transcoder created the preset because the settings might produce acceptable output. - */ - Warning?: String; - } - export interface DeletePipelineRequest { - /** - * The identifier of the pipeline that you want to delete. - */ - Id: Id; - } - export interface DeletePipelineResponse { - } - export interface DeletePresetRequest { - /** - * The identifier of the preset for which you want to get detailed information. - */ - Id: Id; - } - export interface DeletePresetResponse { - } - export type Description = string; - export interface DetectedProperties { - /** - * The detected width of the input file, in pixels. - */ - Width?: NullableInteger; - /** - * The detected height of the input file, in pixels. - */ - Height?: NullableInteger; - /** - * The detected frame rate of the input file, in frames per second. - */ - FrameRate?: FloatString; - /** - * The detected file size of the input file, in bytes. - */ - FileSize?: NullableLong; - /** - * The detected duration of the input file, in milliseconds. - */ - DurationMillis?: NullableLong; - } - export type Digits = string; - export type DigitsOrAuto = string; - export interface Encryption { - /** - * The specific server-side encryption mode that you want Elastic Transcoder to use when decrypting your input files or encrypting your output files. Elastic Transcoder supports the following options: S3: Amazon S3 creates and manages the keys used for encrypting your files. S3-AWS-KMS: Amazon S3 calls the Amazon Key Management Service, which creates and manages the keys that are used for encrypting your files. If you specify S3-AWS-KMS and you don't want to use the default key, you must add the AWS-KMS key that you want to use to your pipeline. AES-CBC-PKCS7: A padded cipher-block mode of operation originally used for HLS files. AES-CTR: AES Counter Mode. AES-GCM: AES Galois Counter Mode, a mode of operation that is an authenticated encryption format, meaning that a file, key, or initialization vector that has been tampered with fails the decryption process. For all three AES options, you must provide the following settings, which must be base64-encoded: Key Key MD5 Initialization Vector For the AES modes, your private encryption keys and your unencrypted data are never stored by AWS; therefore, it is important that you safely manage your encryption keys. If you lose them, you won't be able to unencrypt your data. - */ - Mode?: EncryptionMode; - /** - * The data encryption key that you want Elastic Transcoder to use to encrypt your output file, or that was used to encrypt your input file. The key must be base64-encoded and it must be one of the following bit lengths before being base64-encoded: 128, 192, or 256. The key must also be encrypted by using the Amazon Key Management Service. - */ - Key?: Base64EncodedString; - /** - * The MD5 digest of the key that you used to encrypt your input file, or that you want Elastic Transcoder to use to encrypt your output file. Elastic Transcoder uses the key digest as a checksum to make sure your key was not corrupted in transit. The key MD5 must be base64-encoded, and it must be exactly 16 bytes long before being base64-encoded. - */ - KeyMd5?: Base64EncodedString; - /** - * The series of random bits created by a random bit generator, unique for every encryption operation, that you used to encrypt your input files or that you want Elastic Transcoder to use to encrypt your output files. The initialization vector must be base64-encoded, and it must be exactly 16 bytes long before being base64-encoded. - */ - InitializationVector?: ZeroTo255String; - } - export type EncryptionMode = string; - export type ExceptionMessages = String[]; - export type Filename = string; - export type FixedGOP = string; - export type FloatString = string; - export type FrameRate = string; - export type Grantee = string; - export type GranteeType = string; - export interface HlsContentProtection { - /** - * The content protection method for your output. The only valid value is: aes-128. This value is written into the method attribute of the EXT-X-KEY metadata tag in the output playlist. - */ - Method?: HlsContentProtectionMethod; - /** - * If you want Elastic Transcoder to generate a key for you, leave this field blank. If you choose to supply your own key, you must encrypt the key by using AWS KMS. The key must be base64-encoded, and it must be one of the following bit lengths before being base64-encoded: 128, 192, or 256. - */ - Key?: Base64EncodedString; - /** - * If Elastic Transcoder is generating your key for you, you must leave this field blank. The MD5 digest of the key that you want Elastic Transcoder to use to encrypt your output file, and that you want Elastic Transcoder to use as a checksum to make sure your key was not corrupted in transit. The key MD5 must be base64-encoded, and it must be exactly 16 bytes before being base64- encoded. - */ - KeyMd5?: Base64EncodedString; - /** - * If Elastic Transcoder is generating your key for you, you must leave this field blank. The series of random bits created by a random bit generator, unique for every encryption operation, that you want Elastic Transcoder to use to encrypt your output files. The initialization vector must be base64-encoded, and it must be exactly 16 bytes before being base64-encoded. - */ - InitializationVector?: ZeroTo255String; - /** - * The location of the license key required to decrypt your HLS playlist. The URL must be an absolute path, and is referenced in the URI attribute of the EXT-X-KEY metadata tag in the playlist file. - */ - LicenseAcquisitionUrl?: ZeroTo512String; - /** - * Specify whether you want Elastic Transcoder to write your HLS license key to an Amazon S3 bucket. If you choose WithVariantPlaylists, LicenseAcquisitionUrl must be left blank and Elastic Transcoder writes your data key into the same bucket as the associated playlist. - */ - KeyStoragePolicy?: KeyStoragePolicy; - } - export type HlsContentProtectionMethod = string; - export type HorizontalAlign = string; - export type Id = string; - export interface InputCaptions { - /** - * A policy that determines how Elastic Transcoder handles the existence of multiple captions. MergeOverride: Elastic Transcoder transcodes both embedded and sidecar captions into outputs. If captions for a language are embedded in the input file and also appear in a sidecar file, Elastic Transcoder uses the sidecar captions and ignores the embedded captions for that language. MergeRetain: Elastic Transcoder transcodes both embedded and sidecar captions into outputs. If captions for a language are embedded in the input file and also appear in a sidecar file, Elastic Transcoder uses the embedded captions and ignores the sidecar captions for that language. If CaptionSources is empty, Elastic Transcoder omits all sidecar captions from the output files. Override: Elastic Transcoder transcodes only the sidecar captions that you specify in CaptionSources. MergePolicy cannot be null. - */ - MergePolicy?: CaptionMergePolicy; - /** - * Source files for the input sidecar captions used during the transcoding process. To omit all sidecar captions, leave CaptionSources blank. - */ - CaptionSources?: CaptionSources; - } - export type Interlaced = string; - export interface Job { - /** - * The identifier that Elastic Transcoder assigned to the job. You use this value to get settings for the job or to delete the job. - */ - Id?: Id; - /** - * The Amazon Resource Name (ARN) for the job. - */ - Arn?: String; - /** - * The Id of the pipeline that you want Elastic Transcoder to use for transcoding. The pipeline determines several settings, including the Amazon S3 bucket from which Elastic Transcoder gets the files to transcode and the bucket into which Elastic Transcoder puts the transcoded files. - */ - PipelineId?: Id; - /** - * A section of the request or response body that provides information about the file that is being transcoded. - */ - Input?: JobInput; - /** - * Information about the files that you're transcoding. If you specified multiple files for this job, Elastic Transcoder stitches the files together to make one output. - */ - Inputs?: JobInputs; - /** - * If you specified one output for a job, information about that output. If you specified multiple outputs for a job, the Output object lists information about the first output. This duplicates the information that is listed for the first output in the Outputs object. Outputs recommended instead. A section of the request or response body that provides information about the transcoded (target) file. - */ - Output?: JobOutput; - /** - * Information about the output files. We recommend that you use the Outputs syntax for all jobs, even when you want Elastic Transcoder to transcode a file into only one format. Do not use both the Outputs and Output syntaxes in the same request. You can create a maximum of 30 outputs per job. If you specify more than one output for a job, Elastic Transcoder creates the files for each output in the order in which you specify them in the job. - */ - Outputs?: JobOutputs; - /** - * The value, if any, that you want Elastic Transcoder to prepend to the names of all files that this job creates, including output files, thumbnails, and playlists. We recommend that you add a / or some other delimiter to the end of the OutputKeyPrefix. - */ - OutputKeyPrefix?: Key; - /** - * Outputs in Fragmented MP4 or MPEG-TS format only. If you specify a preset in PresetId for which the value of Container is fmp4 (Fragmented MP4) or ts (MPEG-TS), Playlists contains information about the master playlists that you want Elastic Transcoder to create. The maximum number of master playlists in a job is 30. - */ - Playlists?: Playlists; - /** - * The status of the job: Submitted, Progressing, Complete, Canceled, or Error. - */ - Status?: JobStatus; - /** - * User-defined metadata that you want to associate with an Elastic Transcoder job. You specify metadata in key/value pairs, and you can add up to 10 key/value pairs per job. Elastic Transcoder does not guarantee that key/value pairs are returned in the same order in which you specify them. Metadata keys and values must use characters from the following list: 0-9 A-Z and a-z Space The following symbols: _.:/=+-%@ - */ - UserMetadata?: UserMetadata; - /** - * Details about the timing of a job. - */ - Timing?: Timing; - } - export interface JobAlbumArt { - /** - * A policy that determines how Elastic Transcoder handles the existence of multiple album artwork files. Replace: The specified album art replaces any existing album art. Prepend: The specified album art is placed in front of any existing album art. Append: The specified album art is placed after any existing album art. Fallback: If the original input file contains artwork, Elastic Transcoder uses that artwork for the output. If the original input does not contain artwork, Elastic Transcoder uses the specified album art file. - */ - MergePolicy?: MergePolicy; - /** - * The file to be used as album art. There can be multiple artworks associated with an audio file, to a maximum of 20. Valid formats are .jpg and .png - */ - Artwork?: Artworks; - } - export type JobContainer = string; - export interface JobInput { - /** - * The name of the file to transcode. Elsewhere in the body of the JSON block is the the ID of the pipeline to use for processing the job. The InputBucket object in that pipeline tells Elastic Transcoder which Amazon S3 bucket to get the file from. If the file name includes a prefix, such as cooking/lasagna.mpg, include the prefix in the key. If the file isn't in the specified bucket, Elastic Transcoder returns an error. - */ - Key?: LongKey; - /** - * The frame rate of the input file. If you want Elastic Transcoder to automatically detect the frame rate of the input file, specify auto. If you want to specify the frame rate for the input file, enter one of the following values: 10, 15, 23.97, 24, 25, 29.97, 30, 60 If you specify a value other than auto, Elastic Transcoder disables automatic detection of the frame rate. - */ - FrameRate?: FrameRate; - /** - * This value must be auto, which causes Elastic Transcoder to automatically detect the resolution of the input file. - */ - Resolution?: Resolution; - /** - * The aspect ratio of the input file. If you want Elastic Transcoder to automatically detect the aspect ratio of the input file, specify auto. If you want to specify the aspect ratio for the output file, enter one of the following values: 1:1, 4:3, 3:2, 16:9 If you specify a value other than auto, Elastic Transcoder disables automatic detection of the aspect ratio. - */ - AspectRatio?: AspectRatio; - /** - * Whether the input file is interlaced. If you want Elastic Transcoder to automatically detect whether the input file is interlaced, specify auto. If you want to specify whether the input file is interlaced, enter one of the following values: true, false If you specify a value other than auto, Elastic Transcoder disables automatic detection of interlacing. - */ - Interlaced?: Interlaced; - /** - * The container type for the input file. If you want Elastic Transcoder to automatically detect the container type of the input file, specify auto. If you want to specify the container type for the input file, enter one of the following values: 3gp, aac, asf, avi, divx, flv, m4a, mkv, mov, mp3, mp4, mpeg, mpeg-ps, mpeg-ts, mxf, ogg, vob, wav, webm - */ - Container?: JobContainer; - /** - * The encryption settings, if any, that are used for decrypting your input files. If your input file is encrypted, you must specify the mode that Elastic Transcoder uses to decrypt your file. - */ - Encryption?: Encryption; - /** - * Settings for clipping an input. Each input can have different clip settings. - */ - TimeSpan?: TimeSpan; - /** - * You can configure Elastic Transcoder to transcode captions, or subtitles, from one format to another. All captions must be in UTF-8. Elastic Transcoder supports two types of captions: Embedded: Embedded captions are included in the same file as the audio and video. Elastic Transcoder supports only one embedded caption per language, to a maximum of 300 embedded captions per file. Valid input values include: CEA-608 (EIA-608, first non-empty channel only), CEA-708 (EIA-708, first non-empty channel only), and mov-text Valid outputs include: mov-text Elastic Transcoder supports a maximum of one embedded format per output. Sidecar: Sidecar captions are kept in a separate metadata file from the audio and video data. Sidecar captions require a player that is capable of understanding the relationship between the video file and the sidecar file. Elastic Transcoder supports only one sidecar caption per language, to a maximum of 20 sidecar captions per file. Valid input values include: dfxp (first div element only), ebu-tt, scc, smpt, srt, ttml (first div element only), and webvtt Valid outputs include: dfxp (first div element only), scc, srt, and webvtt. If you want ttml or smpte-tt compatible captions, specify dfxp as your output format. Elastic Transcoder does not support OCR (Optical Character Recognition), does not accept pictures as a valid input for captions, and is not available for audio-only transcoding. Elastic Transcoder does not preserve text formatting (for example, italics) during the transcoding process. To remove captions or leave the captions empty, set Captions to null. To pass through existing captions unchanged, set the MergePolicy to MergeRetain, and pass in a null CaptionSources array. For more information on embedded files, see the Subtitles Wikipedia page. For more information on sidecar files, see the Extensible Metadata Platform and Sidecar file Wikipedia pages. - */ - InputCaptions?: InputCaptions; - /** - * The detected properties of the input file. - */ - DetectedProperties?: DetectedProperties; - } - export type JobInputs = JobInput[]; - export interface JobOutput { - /** - * A sequential counter, starting with 1, that identifies an output among the outputs from the current job. In the Output syntax, this value is always 1. - */ - Id?: String; - /** - * The name to assign to the transcoded file. Elastic Transcoder saves the file in the Amazon S3 bucket specified by the OutputBucket object in the pipeline that is specified by the pipeline ID. - */ - Key?: Key; - /** - * Whether you want Elastic Transcoder to create thumbnails for your videos and, if so, how you want Elastic Transcoder to name the files. If you don't want Elastic Transcoder to create thumbnails, specify "". If you do want Elastic Transcoder to create thumbnails, specify the information that you want to include in the file name for each thumbnail. You can specify the following values in any sequence: {count} (Required): If you want to create thumbnails, you must include {count} in the ThumbnailPattern object. Wherever you specify {count}, Elastic Transcoder adds a five-digit sequence number (beginning with 00001) to thumbnail file names. The number indicates where a given thumbnail appears in the sequence of thumbnails for a transcoded file. If you specify a literal value and/or {resolution} but you omit {count}, Elastic Transcoder returns a validation error and does not create the job. Literal values (Optional): You can specify literal values anywhere in the ThumbnailPattern object. For example, you can include them as a file name prefix or as a delimiter between {resolution} and {count}. {resolution} (Optional): If you want Elastic Transcoder to include the resolution in the file name, include {resolution} in the ThumbnailPattern object. When creating thumbnails, Elastic Transcoder automatically saves the files in the format (.jpg or .png) that appears in the preset that you specified in the PresetID value of CreateJobOutput. Elastic Transcoder also appends the applicable file name extension. - */ - ThumbnailPattern?: ThumbnailPattern; - /** - * The encryption settings, if any, that you want Elastic Transcoder to apply to your thumbnail. - */ - ThumbnailEncryption?: Encryption; - /** - * The number of degrees clockwise by which you want Elastic Transcoder to rotate the output relative to the input. Enter one of the following values: auto, 0, 90, 180, 270 The value auto generally works only if the file that you're transcoding contains rotation metadata. - */ - Rotate?: Rotate; - /** - * The value of the Id object for the preset that you want to use for this job. The preset determines the audio, video, and thumbnail settings that Elastic Transcoder uses for transcoding. To use a preset that you created, specify the preset ID that Elastic Transcoder returned in the response when you created the preset. You can also use the Elastic Transcoder system presets, which you can get with ListPresets. - */ - PresetId?: Id; - /** - * (Outputs in Fragmented MP4 or MPEG-TS format only. If you specify a preset in PresetId for which the value of Container is fmp4 (Fragmented MP4) or ts (MPEG-TS), SegmentDuration is the target maximum duration of each segment in seconds. For HLSv3 format playlists, each media segment is stored in a separate .ts file. For HLSv4, MPEG-DASH, and Smooth playlists, all media segments for an output are stored in a single file. Each segment is approximately the length of the SegmentDuration, though individual segments might be shorter or longer. The range of valid values is 1 to 60 seconds. If the duration of the video is not evenly divisible by SegmentDuration, the duration of the last segment is the remainder of total length/SegmentDuration. Elastic Transcoder creates an output-specific playlist for each output HLS output that you specify in OutputKeys. To add an output to the master playlist for this job, include it in the OutputKeys of the associated playlist. - */ - SegmentDuration?: FloatString; - /** - * The status of one output in a job. If you specified only one output for the job, Outputs:Status is always the same as Job:Status. If you specified more than one output: Job:Status and Outputs:Status for all of the outputs is Submitted until Elastic Transcoder starts to process the first output. When Elastic Transcoder starts to process the first output, Outputs:Status for that output and Job:Status both change to Progressing. For each output, the value of Outputs:Status remains Submitted until Elastic Transcoder starts to process the output. Job:Status remains Progressing until all of the outputs reach a terminal status, either Complete or Error. When all of the outputs reach a terminal status, Job:Status changes to Complete only if Outputs:Status for all of the outputs is Complete. If Outputs:Status for one or more outputs is Error, the terminal status for Job:Status is also Error. The value of Status is one of the following: Submitted, Progressing, Complete, Canceled, or Error. - */ - Status?: JobStatus; - /** - * Information that further explains Status. - */ - StatusDetail?: Description; - /** - * Duration of the output file, in seconds. - */ - Duration?: NullableLong; - /** - * Specifies the width of the output file in pixels. - */ - Width?: NullableInteger; - /** - * Height of the output file, in pixels. - */ - Height?: NullableInteger; - /** - * Frame rate of the output file, in frames per second. - */ - FrameRate?: FloatString; - /** - * File size of the output file, in bytes. - */ - FileSize?: NullableLong; - /** - * Duration of the output file, in milliseconds. - */ - DurationMillis?: NullableLong; - /** - * Information about the watermarks that you want Elastic Transcoder to add to the video during transcoding. You can specify up to four watermarks for each output. Settings for each watermark must be defined in the preset that you specify in Preset for the current output. Watermarks are added to the output video in the sequence in which you list them in the job output—the first watermark in the list is added to the output video first, the second watermark in the list is added next, and so on. As a result, if the settings in a preset cause Elastic Transcoder to place all watermarks in the same location, the second watermark that you add covers the first one, the third one covers the second, and the fourth one covers the third. - */ - Watermarks?: JobWatermarks; - /** - * The album art to be associated with the output file, if any. - */ - AlbumArt?: JobAlbumArt; - /** - * You can create an output file that contains an excerpt from the input file. This excerpt, called a clip, can come from the beginning, middle, or end of the file. The Composition object contains settings for the clips that make up an output file. For the current release, you can only specify settings for a single clip per output file. The Composition object cannot be null. - */ - Composition?: Composition; - /** - * You can configure Elastic Transcoder to transcode captions, or subtitles, from one format to another. All captions must be in UTF-8. Elastic Transcoder supports two types of captions: Embedded: Embedded captions are included in the same file as the audio and video. Elastic Transcoder supports only one embedded caption per language, to a maximum of 300 embedded captions per file. Valid input values include: CEA-608 (EIA-608, first non-empty channel only), CEA-708 (EIA-708, first non-empty channel only), and mov-text Valid outputs include: mov-text Elastic Transcoder supports a maximum of one embedded format per output. Sidecar: Sidecar captions are kept in a separate metadata file from the audio and video data. Sidecar captions require a player that is capable of understanding the relationship between the video file and the sidecar file. Elastic Transcoder supports only one sidecar caption per language, to a maximum of 20 sidecar captions per file. Valid input values include: dfxp (first div element only), ebu-tt, scc, smpt, srt, ttml (first div element only), and webvtt Valid outputs include: dfxp (first div element only), scc, srt, and webvtt. If you want ttml or smpte-tt compatible captions, specify dfxp as your output format. Elastic Transcoder does not support OCR (Optical Character Recognition), does not accept pictures as a valid input for captions, and is not available for audio-only transcoding. Elastic Transcoder does not preserve text formatting (for example, italics) during the transcoding process. To remove captions or leave the captions empty, set Captions to null. To pass through existing captions unchanged, set the MergePolicy to MergeRetain, and pass in a null CaptionSources array. For more information on embedded files, see the Subtitles Wikipedia page. For more information on sidecar files, see the Extensible Metadata Platform and Sidecar file Wikipedia pages. - */ - Captions?: Captions; - /** - * The encryption settings, if any, that you want Elastic Transcoder to apply to your output files. If you choose to use encryption, you must specify a mode to use. If you choose not to use encryption, Elastic Transcoder writes an unencrypted file to your Amazon S3 bucket. - */ - Encryption?: Encryption; - /** - * If Elastic Transcoder used a preset with a ColorSpaceConversionMode to transcode the output file, the AppliedColorSpaceConversion parameter shows the conversion used. If no ColorSpaceConversionMode was defined in the preset, this parameter is not be included in the job response. - */ - AppliedColorSpaceConversion?: String; - } - export type JobOutputs = JobOutput[]; - export type JobStatus = string; - export interface JobWatermark { - /** - * The ID of the watermark settings that Elastic Transcoder uses to add watermarks to the video during transcoding. The settings are in the preset specified by Preset for the current output. In that preset, the value of Watermarks Id tells Elastic Transcoder which settings to use. - */ - PresetWatermarkId?: PresetWatermarkId; - /** - * The name of the .png or .jpg file that you want to use for the watermark. To determine which Amazon S3 bucket contains the specified file, Elastic Transcoder checks the pipeline specified by Pipeline; the Input Bucket object in that pipeline identifies the bucket. If the file name includes a prefix, for example, logos/128x64.png, include the prefix in the key. If the file isn't in the specified bucket, Elastic Transcoder returns an error. - */ - InputKey?: WatermarkKey; - /** - * The encryption settings, if any, that you want Elastic Transcoder to apply to your watermarks. - */ - Encryption?: Encryption; - } - export type JobWatermarks = JobWatermark[]; - export type Jobs = Job[]; - export type JpgOrPng = string; - export type Key = string; - export type KeyArn = string; - export type KeyIdGuid = string; - export type KeyStoragePolicy = string; - export type KeyframesMaxDist = string; - export interface ListJobsByPipelineRequest { - /** - * The ID of the pipeline for which you want to get job information. - */ - PipelineId: Id; - /** - * To list jobs in chronological order by the date and time that they were submitted, enter true. To list jobs in reverse chronological order, enter false. - */ - Ascending?: Ascending; - /** - * When Elastic Transcoder returns more than one page of results, use pageToken in subsequent GET requests to get each successive page of results. - */ - PageToken?: Id; - } - export interface ListJobsByPipelineResponse { - /** - * An array of Job objects that are in the specified pipeline. - */ - Jobs?: Jobs; - /** - * A value that you use to access the second and subsequent pages of results, if any. When the jobs in the specified pipeline fit on one page or when you've reached the last page of results, the value of NextPageToken is null. - */ - NextPageToken?: Id; - } - export interface ListJobsByStatusRequest { - /** - * To get information about all of the jobs associated with the current AWS account that have a given status, specify the following status: Submitted, Progressing, Complete, Canceled, or Error. - */ - Status: JobStatus; - /** - * To list jobs in chronological order by the date and time that they were submitted, enter true. To list jobs in reverse chronological order, enter false. - */ - Ascending?: Ascending; - /** - * When Elastic Transcoder returns more than one page of results, use pageToken in subsequent GET requests to get each successive page of results. - */ - PageToken?: Id; - } - export interface ListJobsByStatusResponse { - /** - * An array of Job objects that have the specified status. - */ - Jobs?: Jobs; - /** - * A value that you use to access the second and subsequent pages of results, if any. When the jobs in the specified pipeline fit on one page or when you've reached the last page of results, the value of NextPageToken is null. - */ - NextPageToken?: Id; - } - export interface ListPipelinesRequest { - /** - * To list pipelines in chronological order by the date and time that they were created, enter true. To list pipelines in reverse chronological order, enter false. - */ - Ascending?: Ascending; - /** - * When Elastic Transcoder returns more than one page of results, use pageToken in subsequent GET requests to get each successive page of results. - */ - PageToken?: Id; - } - export interface ListPipelinesResponse { - /** - * An array of Pipeline objects. - */ - Pipelines?: Pipelines; - /** - * A value that you use to access the second and subsequent pages of results, if any. When the pipelines fit on one page or when you've reached the last page of results, the value of NextPageToken is null. - */ - NextPageToken?: Id; - } - export interface ListPresetsRequest { - /** - * To list presets in chronological order by the date and time that they were created, enter true. To list presets in reverse chronological order, enter false. - */ - Ascending?: Ascending; - /** - * When Elastic Transcoder returns more than one page of results, use pageToken in subsequent GET requests to get each successive page of results. - */ - PageToken?: Id; - } - export interface ListPresetsResponse { - /** - * An array of Preset objects. - */ - Presets?: Presets; - /** - * A value that you use to access the second and subsequent pages of results, if any. When the presets fit on one page or when you've reached the last page of results, the value of NextPageToken is null. - */ - NextPageToken?: Id; - } - export type LongKey = string; - export type MaxFrameRate = string; - export type MergePolicy = string; - export type Name = string; - export type NonEmptyBase64EncodedString = string; - export interface Notifications { - /** - * The Amazon Simple Notification Service (Amazon SNS) topic that you want to notify when Elastic Transcoder has started to process the job. - */ - Progressing?: SnsTopic; - /** - * The Amazon SNS topic that you want to notify when Elastic Transcoder has finished processing the job. - */ - Completed?: SnsTopic; - /** - * The Amazon SNS topic that you want to notify when Elastic Transcoder encounters a warning condition. - */ - Warning?: SnsTopic; - /** - * The Amazon SNS topic that you want to notify when Elastic Transcoder encounters an error condition. - */ - Error?: SnsTopic; - } - export type NullableInteger = number; - export type NullableLong = number; - export type OneTo512String = string; - export type Opacity = string; - export type OutputKeys = Key[]; - export type PaddingPolicy = string; - export interface Permission { - /** - * The type of value that appears in the Grantee object: Canonical: Either the canonical user ID for an AWS account or an origin access identity for an Amazon CloudFront distribution. A canonical user ID is not the same as an AWS account number. Email: The registered email address of an AWS account. Group: One of the following predefined Amazon S3 groups: AllUsers, AuthenticatedUsers, or LogDelivery. - */ - GranteeType?: GranteeType; - /** - * The AWS user or group that you want to have access to transcoded files and playlists. To identify the user or group, you can specify the canonical user ID for an AWS account, an origin access identity for a CloudFront distribution, the registered email address of an AWS account, or a predefined Amazon S3 group. - */ - Grantee?: Grantee; - /** - * The permission that you want to give to the AWS user that is listed in Grantee. Valid values include: READ: The grantee can read the thumbnails and metadata for thumbnails that Elastic Transcoder adds to the Amazon S3 bucket. READ_ACP: The grantee can read the object ACL for thumbnails that Elastic Transcoder adds to the Amazon S3 bucket. WRITE_ACP: The grantee can write the ACL for the thumbnails that Elastic Transcoder adds to the Amazon S3 bucket. FULL_CONTROL: The grantee has READ, READ_ACP, and WRITE_ACP permissions for the thumbnails that Elastic Transcoder adds to the Amazon S3 bucket. - */ - Access?: AccessControls; - } - export type Permissions = Permission[]; - export interface Pipeline { - /** - * The identifier for the pipeline. You use this value to identify the pipeline in which you want to perform a variety of operations, such as creating a job or a preset. - */ - Id?: Id; - /** - * The Amazon Resource Name (ARN) for the pipeline. - */ - Arn?: String; - /** - * The name of the pipeline. We recommend that the name be unique within the AWS account, but uniqueness is not enforced. Constraints: Maximum 40 characters - */ - Name?: Name; - /** - * The current status of the pipeline: Active: The pipeline is processing jobs. Paused: The pipeline is not currently processing jobs. - */ - Status?: PipelineStatus; - /** - * The Amazon S3 bucket from which Elastic Transcoder gets media files for transcoding and the graphics files, if any, that you want to use for watermarks. - */ - InputBucket?: BucketName; - /** - * The Amazon S3 bucket in which you want Elastic Transcoder to save transcoded files, thumbnails, and playlists. Either you specify this value, or you specify both ContentConfig and ThumbnailConfig. - */ - OutputBucket?: BucketName; - /** - * The IAM Amazon Resource Name (ARN) for the role that Elastic Transcoder uses to transcode jobs for this pipeline. - */ - Role?: Role; - /** - * The AWS Key Management Service (AWS KMS) key that you want to use with this pipeline. If you use either S3 or S3-AWS-KMS as your Encryption:Mode, you don't need to provide a key with your job because a default key, known as an AWS-KMS key, is created for you automatically. You need to provide an AWS-KMS key only if you want to use a non-default AWS-KMS key, or if you are using an Encryption:Mode of AES-PKCS7, AES-CTR, or AES-GCM. - */ - AwsKmsKeyArn?: KeyArn; - /** - * The Amazon Simple Notification Service (Amazon SNS) topic that you want to notify to report job status. To receive notifications, you must also subscribe to the new topic in the Amazon SNS console. Progressing (optional): The Amazon Simple Notification Service (Amazon SNS) topic that you want to notify when Elastic Transcoder has started to process the job. Completed (optional): The Amazon SNS topic that you want to notify when Elastic Transcoder has finished processing the job. Warning (optional): The Amazon SNS topic that you want to notify when Elastic Transcoder encounters a warning condition. Error (optional): The Amazon SNS topic that you want to notify when Elastic Transcoder encounters an error condition. - */ - Notifications?: Notifications; - /** - * Information about the Amazon S3 bucket in which you want Elastic Transcoder to save transcoded files and playlists. Either you specify both ContentConfig and ThumbnailConfig, or you specify OutputBucket. Bucket: The Amazon S3 bucket in which you want Elastic Transcoder to save transcoded files and playlists. Permissions: A list of the users and/or predefined Amazon S3 groups you want to have access to transcoded files and playlists, and the type of access that you want them to have. GranteeType: The type of value that appears in the Grantee object: Canonical: Either the canonical user ID for an AWS account or an origin access identity for an Amazon CloudFront distribution. Email: The registered email address of an AWS account. Group: One of the following predefined Amazon S3 groups: AllUsers, AuthenticatedUsers, or LogDelivery. Grantee: The AWS user or group that you want to have access to transcoded files and playlists. Access: The permission that you want to give to the AWS user that is listed in Grantee. Valid values include: READ: The grantee can read the objects and metadata for objects that Elastic Transcoder adds to the Amazon S3 bucket. READ_ACP: The grantee can read the object ACL for objects that Elastic Transcoder adds to the Amazon S3 bucket. WRITE_ACP: The grantee can write the ACL for the objects that Elastic Transcoder adds to the Amazon S3 bucket. FULL_CONTROL: The grantee has READ, READ_ACP, and WRITE_ACP permissions for the objects that Elastic Transcoder adds to the Amazon S3 bucket. StorageClass: The Amazon S3 storage class, Standard or ReducedRedundancy, that you want Elastic Transcoder to assign to the video files and playlists that it stores in your Amazon S3 bucket. - */ - ContentConfig?: PipelineOutputConfig; - /** - * Information about the Amazon S3 bucket in which you want Elastic Transcoder to save thumbnail files. Either you specify both ContentConfig and ThumbnailConfig, or you specify OutputBucket. Bucket: The Amazon S3 bucket in which you want Elastic Transcoder to save thumbnail files. Permissions: A list of the users and/or predefined Amazon S3 groups you want to have access to thumbnail files, and the type of access that you want them to have. GranteeType: The type of value that appears in the Grantee object: Canonical: Either the canonical user ID for an AWS account or an origin access identity for an Amazon CloudFront distribution. A canonical user ID is not the same as an AWS account number. Email: The registered email address of an AWS account. Group: One of the following predefined Amazon S3 groups: AllUsers, AuthenticatedUsers, or LogDelivery. Grantee: The AWS user or group that you want to have access to thumbnail files. Access: The permission that you want to give to the AWS user that is listed in Grantee. Valid values include: READ: The grantee can read the thumbnails and metadata for thumbnails that Elastic Transcoder adds to the Amazon S3 bucket. READ_ACP: The grantee can read the object ACL for thumbnails that Elastic Transcoder adds to the Amazon S3 bucket. WRITE_ACP: The grantee can write the ACL for the thumbnails that Elastic Transcoder adds to the Amazon S3 bucket. FULL_CONTROL: The grantee has READ, READ_ACP, and WRITE_ACP permissions for the thumbnails that Elastic Transcoder adds to the Amazon S3 bucket. StorageClass: The Amazon S3 storage class, Standard or ReducedRedundancy, that you want Elastic Transcoder to assign to the thumbnails that it stores in your Amazon S3 bucket. - */ - ThumbnailConfig?: PipelineOutputConfig; - } - export interface PipelineOutputConfig { - /** - * The Amazon S3 bucket in which you want Elastic Transcoder to save the transcoded files. Specify this value when all of the following are true: You want to save transcoded files, thumbnails (if any), and playlists (if any) together in one bucket. You do not want to specify the users or groups who have access to the transcoded files, thumbnails, and playlists. You do not want to specify the permissions that Elastic Transcoder grants to the files. You want to associate the transcoded files and thumbnails with the Amazon S3 Standard storage class. If you want to save transcoded files and playlists in one bucket and thumbnails in another bucket, specify which users can access the transcoded files or the permissions the users have, or change the Amazon S3 storage class, omit OutputBucket and specify values for ContentConfig and ThumbnailConfig instead. - */ - Bucket?: BucketName; - /** - * The Amazon S3 storage class, Standard or ReducedRedundancy, that you want Elastic Transcoder to assign to the video files and playlists that it stores in your Amazon S3 bucket. - */ - StorageClass?: StorageClass; - /** - * Optional. The Permissions object specifies which users and/or predefined Amazon S3 groups you want to have access to transcoded files and playlists, and the type of access you want them to have. You can grant permissions to a maximum of 30 users and/or predefined Amazon S3 groups. If you include Permissions, Elastic Transcoder grants only the permissions that you specify. It does not grant full permissions to the owner of the role specified by Role. If you want that user to have full control, you must explicitly grant full control to the user. If you omit Permissions, Elastic Transcoder grants full control over the transcoded files and playlists to the owner of the role specified by Role, and grants no other permissions to any other user or group. - */ - Permissions?: Permissions; - } - export type PipelineStatus = string; - export type Pipelines = Pipeline[]; - export type PixelsOrPercent = string; - export interface PlayReadyDrm { - /** - * The type of DRM, if any, that you want Elastic Transcoder to apply to the output files associated with this playlist. - */ - Format?: PlayReadyDrmFormatString; - /** - * The DRM key for your file, provided by your DRM license provider. The key must be base64-encoded, and it must be one of the following bit lengths before being base64-encoded: 128, 192, or 256. The key must also be encrypted by using AWS KMS. - */ - Key?: NonEmptyBase64EncodedString; - /** - * The MD5 digest of the key used for DRM on your file, and that you want Elastic Transcoder to use as a checksum to make sure your key was not corrupted in transit. The key MD5 must be base64-encoded, and it must be exactly 16 bytes before being base64-encoded. - */ - KeyMd5?: NonEmptyBase64EncodedString; - /** - * The ID for your DRM key, so that your DRM license provider knows which key to provide. The key ID must be provided in big endian, and Elastic Transcoder converts it to little endian before inserting it into the PlayReady DRM headers. If you are unsure whether your license server provides your key ID in big or little endian, check with your DRM provider. - */ - KeyId?: KeyIdGuid; - /** - * The series of random bits created by a random bit generator, unique for every encryption operation, that you want Elastic Transcoder to use to encrypt your files. The initialization vector must be base64-encoded, and it must be exactly 8 bytes long before being base64-encoded. If no initialization vector is provided, Elastic Transcoder generates one for you. - */ - InitializationVector?: ZeroTo255String; - /** - * The location of the license key required to play DRM content. The URL must be an absolute path, and is referenced by the PlayReady header. The PlayReady header is referenced in the protection header of the client manifest for Smooth Streaming outputs, and in the EXT-X-DXDRM and EXT-XDXDRMINFO metadata tags for HLS playlist outputs. An example URL looks like this: https://www.example.com/exampleKey/ - */ - LicenseAcquisitionUrl?: OneTo512String; - } - export type PlayReadyDrmFormatString = string; - export interface Playlist { - /** - * The name that you want Elastic Transcoder to assign to the master playlist, for example, nyc-vacation.m3u8. If the name includes a / character, the section of the name before the last / must be identical for all Name objects. If you create more than one master playlist, the values of all Name objects must be unique. Elastic Transcoder automatically appends the relevant file extension to the file name (.m3u8 for HLSv3 and HLSv4 playlists, and .ism and .ismc for Smooth playlists). If you include a file extension in Name, the file name will have two extensions. - */ - Name?: Filename; - /** - * The format of the output playlist. Valid formats include HLSv3, HLSv4, and Smooth. - */ - Format?: PlaylistFormat; - /** - * For each output in this job that you want to include in a master playlist, the value of the Outputs:Key object. If your output is not HLS or does not have a segment duration set, the name of the output file is a concatenation of OutputKeyPrefix and Outputs:Key: OutputKeyPrefixOutputs:Key If your output is HLSv3 and has a segment duration set, or is not included in a playlist, Elastic Transcoder creates an output playlist file with a file extension of .m3u8, and a series of .ts files that include a five-digit sequential counter beginning with 00000: OutputKeyPrefixOutputs:Key.m3u8 OutputKeyPrefixOutputs:Key00000.ts If your output is HLSv4, has a segment duration set, and is included in an HLSv4 playlist, Elastic Transcoder creates an output playlist file with a file extension of _v4.m3u8. If the output is video, Elastic Transcoder also creates an output file with an extension of _iframe.m3u8: OutputKeyPrefixOutputs:Key_v4.m3u8 OutputKeyPrefixOutputs:Key_iframe.m3u8 OutputKeyPrefixOutputs:Key.ts Elastic Transcoder automatically appends the relevant file extension to the file name. If you include a file extension in Output Key, the file name will have two extensions. If you include more than one output in a playlist, any segment duration settings, clip settings, or caption settings must be the same for all outputs in the playlist. For Smooth playlists, the Audio:Profile, Video:Profile, and Video:FrameRate to Video:KeyframesMaxDist ratio must be the same for all outputs. - */ - OutputKeys?: OutputKeys; - /** - * The HLS content protection settings, if any, that you want Elastic Transcoder to apply to the output files associated with this playlist. - */ - HlsContentProtection?: HlsContentProtection; - /** - * The DRM settings, if any, that you want Elastic Transcoder to apply to the output files associated with this playlist. - */ - PlayReadyDrm?: PlayReadyDrm; - /** - * The status of the job with which the playlist is associated. - */ - Status?: JobStatus; - /** - * Information that further explains the status. - */ - StatusDetail?: Description; - } - export type PlaylistFormat = string; - export type Playlists = Playlist[]; - export interface Preset { - /** - * Identifier for the new preset. You use this value to get settings for the preset or to delete it. - */ - Id?: Id; - /** - * The Amazon Resource Name (ARN) for the preset. - */ - Arn?: String; - /** - * The name of the preset. - */ - Name?: Name; - /** - * A description of the preset. - */ - Description?: Description; - /** - * The container type for the output file. Valid values include flac, flv, fmp4, gif, mp3, mp4, mpg, mxf, oga, ogg, ts, and webm. - */ - Container?: PresetContainer; - /** - * A section of the response body that provides information about the audio preset values. - */ - Audio?: AudioParameters; - /** - * A section of the response body that provides information about the video preset values. - */ - Video?: VideoParameters; - /** - * A section of the response body that provides information about the thumbnail preset values, if any. - */ - Thumbnails?: Thumbnails; - /** - * Whether the preset is a default preset provided by Elastic Transcoder (System) or a preset that you have defined (Custom). - */ - Type?: PresetType; - } - export type PresetContainer = string; - export type PresetType = string; - export interface PresetWatermark { - /** - * A unique identifier for the settings for one watermark. The value of Id can be up to 40 characters long. - */ - Id?: PresetWatermarkId; - /** - * The maximum width of the watermark in one of the following formats: number of pixels (px): The minimum value is 16 pixels, and the maximum value is the value of MaxWidth. integer percentage (%): The range of valid values is 0 to 100. Use the value of Target to specify whether you want Elastic Transcoder to include the black bars that are added by Elastic Transcoder, if any, in the calculation. If you specify the value in pixels, it must be less than or equal to the value of MaxWidth. - */ - MaxWidth?: PixelsOrPercent; - /** - * The maximum height of the watermark in one of the following formats: number of pixels (px): The minimum value is 16 pixels, and the maximum value is the value of MaxHeight. integer percentage (%): The range of valid values is 0 to 100. Use the value of Target to specify whether you want Elastic Transcoder to include the black bars that are added by Elastic Transcoder, if any, in the calculation. If you specify the value in pixels, it must be less than or equal to the value of MaxHeight. - */ - MaxHeight?: PixelsOrPercent; - /** - * A value that controls scaling of the watermark: Fit: Elastic Transcoder scales the watermark so it matches the value that you specified in either MaxWidth or MaxHeight without exceeding the other value. Stretch: Elastic Transcoder stretches the watermark to match the values that you specified for MaxWidth and MaxHeight. If the relative proportions of the watermark and the values of MaxWidth and MaxHeight are different, the watermark will be distorted. ShrinkToFit: Elastic Transcoder scales the watermark down so that its dimensions match the values that you specified for at least one of MaxWidth and MaxHeight without exceeding either value. If you specify this option, Elastic Transcoder does not scale the watermark up. - */ - SizingPolicy?: WatermarkSizingPolicy; - /** - * The horizontal position of the watermark unless you specify a non-zero value for HorizontalOffset: Left: The left edge of the watermark is aligned with the left border of the video. Right: The right edge of the watermark is aligned with the right border of the video. Center: The watermark is centered between the left and right borders. - */ - HorizontalAlign?: HorizontalAlign; - /** - * The amount by which you want the horizontal position of the watermark to be offset from the position specified by HorizontalAlign: number of pixels (px): The minimum value is 0 pixels, and the maximum value is the value of MaxWidth. integer percentage (%): The range of valid values is 0 to 100. For example, if you specify Left for HorizontalAlign and 5px for HorizontalOffset, the left side of the watermark appears 5 pixels from the left border of the output video. HorizontalOffset is only valid when the value of HorizontalAlign is Left or Right. If you specify an offset that causes the watermark to extend beyond the left or right border and Elastic Transcoder has not added black bars, the watermark is cropped. If Elastic Transcoder has added black bars, the watermark extends into the black bars. If the watermark extends beyond the black bars, it is cropped. Use the value of Target to specify whether you want to include the black bars that are added by Elastic Transcoder, if any, in the offset calculation. - */ - HorizontalOffset?: PixelsOrPercent; - /** - * The vertical position of the watermark unless you specify a non-zero value for VerticalOffset: Top: The top edge of the watermark is aligned with the top border of the video. Bottom: The bottom edge of the watermark is aligned with the bottom border of the video. Center: The watermark is centered between the top and bottom borders. - */ - VerticalAlign?: VerticalAlign; - /** - * VerticalOffset The amount by which you want the vertical position of the watermark to be offset from the position specified by VerticalAlign: number of pixels (px): The minimum value is 0 pixels, and the maximum value is the value of MaxHeight. integer percentage (%): The range of valid values is 0 to 100. For example, if you specify Top for VerticalAlign and 5px for VerticalOffset, the top of the watermark appears 5 pixels from the top border of the output video. VerticalOffset is only valid when the value of VerticalAlign is Top or Bottom. If you specify an offset that causes the watermark to extend beyond the top or bottom border and Elastic Transcoder has not added black bars, the watermark is cropped. If Elastic Transcoder has added black bars, the watermark extends into the black bars. If the watermark extends beyond the black bars, it is cropped. Use the value of Target to specify whether you want Elastic Transcoder to include the black bars that are added by Elastic Transcoder, if any, in the offset calculation. - */ - VerticalOffset?: PixelsOrPercent; - /** - * A percentage that indicates how much you want a watermark to obscure the video in the location where it appears. Valid values are 0 (the watermark is invisible) to 100 (the watermark completely obscures the video in the specified location). The datatype of Opacity is float. Elastic Transcoder supports transparent .png graphics. If you use a transparent .png, the transparent portion of the video appears as if you had specified a value of 0 for Opacity. The .jpg file format doesn't support transparency. - */ - Opacity?: Opacity; - /** - * A value that determines how Elastic Transcoder interprets values that you specified for HorizontalOffset, VerticalOffset, MaxWidth, and MaxHeight: Content: HorizontalOffset and VerticalOffset values are calculated based on the borders of the video excluding black bars added by Elastic Transcoder, if any. In addition, MaxWidth and MaxHeight, if specified as a percentage, are calculated based on the borders of the video excluding black bars added by Elastic Transcoder, if any. Frame: HorizontalOffset and VerticalOffset values are calculated based on the borders of the video including black bars added by Elastic Transcoder, if any. In addition, MaxWidth and MaxHeight, if specified as a percentage, are calculated based on the borders of the video including black bars added by Elastic Transcoder, if any. - */ - Target?: Target; - } - export type PresetWatermarkId = string; - export type PresetWatermarks = PresetWatermark[]; - export type Presets = Preset[]; - export interface ReadJobRequest { - /** - * The identifier of the job for which you want to get detailed information. - */ - Id: Id; - } - export interface ReadJobResponse { - /** - * A section of the response body that provides information about the job. - */ - Job?: Job; - } - export interface ReadPipelineRequest { - /** - * The identifier of the pipeline to read. - */ - Id: Id; - } - export interface ReadPipelineResponse { - /** - * A section of the response body that provides information about the pipeline. - */ - Pipeline?: Pipeline; - /** - * Elastic Transcoder returns a warning if the resources used by your pipeline are not in the same region as the pipeline. Using resources in the same region, such as your Amazon S3 buckets, Amazon SNS notification topics, and AWS KMS key, reduces processing time and prevents cross-regional charges. - */ - Warnings?: Warnings; - } - export interface ReadPresetRequest { - /** - * The identifier of the preset for which you want to get detailed information. - */ - Id: Id; - } - export interface ReadPresetResponse { - /** - * A section of the response body that provides information about the preset. - */ - Preset?: Preset; - } - export type Resolution = string; - export type Role = string; - export type Rotate = string; - export type SizingPolicy = string; - export type SnsTopic = string; - export type SnsTopics = SnsTopic[]; - export type StorageClass = string; - export type String = string; - export type Success = string; - export type Target = string; - export interface TestRoleRequest { - /** - * The IAM Amazon Resource Name (ARN) for the role that you want Elastic Transcoder to test. - */ - Role: Role; - /** - * The Amazon S3 bucket that contains media files to be transcoded. The action attempts to read from this bucket. - */ - InputBucket: BucketName; - /** - * The Amazon S3 bucket that Elastic Transcoder writes transcoded media files to. The action attempts to read from this bucket. - */ - OutputBucket: BucketName; - /** - * The ARNs of one or more Amazon Simple Notification Service (Amazon SNS) topics that you want the action to send a test notification to. - */ - Topics: SnsTopics; - } - export interface TestRoleResponse { - /** - * If the operation is successful, this value is true; otherwise, the value is false. - */ - Success?: Success; - /** - * If the Success element contains false, this value is an array of one or more error messages that were generated during the test process. - */ - Messages?: ExceptionMessages; - } - export type ThumbnailPattern = string; - export type ThumbnailResolution = string; - export interface Thumbnails { - /** - * The format of thumbnails, if any. Valid values are jpg and png. You specify whether you want Elastic Transcoder to create thumbnails when you create a job. - */ - Format?: JpgOrPng; - /** - * The approximate number of seconds between thumbnails. Specify an integer value. - */ - Interval?: Digits; - /** - * To better control resolution and aspect ratio of thumbnails, we recommend that you use the values MaxWidth, MaxHeight, SizingPolicy, and PaddingPolicy instead of Resolution and AspectRatio. The two groups of settings are mutually exclusive. Do not use them together. The width and height of thumbnail files in pixels. Specify a value in the format width x height where both values are even integers. The values cannot exceed the width and height that you specified in the Video:Resolution object. - */ - Resolution?: ThumbnailResolution; - /** - * To better control resolution and aspect ratio of thumbnails, we recommend that you use the values MaxWidth, MaxHeight, SizingPolicy, and PaddingPolicy instead of Resolution and AspectRatio. The two groups of settings are mutually exclusive. Do not use them together. The aspect ratio of thumbnails. Valid values include: auto, 1:1, 4:3, 3:2, 16:9 If you specify auto, Elastic Transcoder tries to preserve the aspect ratio of the video in the output file. - */ - AspectRatio?: AspectRatio; - /** - * The maximum width of thumbnails in pixels. If you specify auto, Elastic Transcoder uses 1920 (Full HD) as the default value. If you specify a numeric value, enter an even integer between 32 and 4096. - */ - MaxWidth?: DigitsOrAuto; - /** - * The maximum height of thumbnails in pixels. If you specify auto, Elastic Transcoder uses 1080 (Full HD) as the default value. If you specify a numeric value, enter an even integer between 32 and 3072. - */ - MaxHeight?: DigitsOrAuto; - /** - * Specify one of the following values to control scaling of thumbnails: Fit: Elastic Transcoder scales thumbnails so they match the value that you specified in thumbnail MaxWidth or MaxHeight settings without exceeding the other value. Fill: Elastic Transcoder scales thumbnails so they match the value that you specified in thumbnail MaxWidth or MaxHeight settings and matches or exceeds the other value. Elastic Transcoder centers the image in thumbnails and then crops in the dimension (if any) that exceeds the maximum value. Stretch: Elastic Transcoder stretches thumbnails to match the values that you specified for thumbnail MaxWidth and MaxHeight settings. If the relative proportions of the input video and thumbnails are different, the thumbnails will be distorted. Keep: Elastic Transcoder does not scale thumbnails. If either dimension of the input video exceeds the values that you specified for thumbnail MaxWidth and MaxHeight settings, Elastic Transcoder crops the thumbnails. ShrinkToFit: Elastic Transcoder scales thumbnails down so that their dimensions match the values that you specified for at least one of thumbnail MaxWidth and MaxHeight without exceeding either value. If you specify this option, Elastic Transcoder does not scale thumbnails up. ShrinkToFill: Elastic Transcoder scales thumbnails down so that their dimensions match the values that you specified for at least one of MaxWidth and MaxHeight without dropping below either value. If you specify this option, Elastic Transcoder does not scale thumbnails up. - */ - SizingPolicy?: SizingPolicy; - /** - * When you set PaddingPolicy to Pad, Elastic Transcoder may add black bars to the top and bottom and/or left and right sides of thumbnails to make the total size of the thumbnails match the values that you specified for thumbnail MaxWidth and MaxHeight settings. - */ - PaddingPolicy?: PaddingPolicy; - } - export type Time = string; - export type TimeOffset = string; - export interface TimeSpan { - /** - * The place in the input file where you want a clip to start. The format can be either HH:mm:ss.SSS (maximum value: 23:59:59.999; SSS is thousandths of a second) or sssss.SSS (maximum value: 86399.999). If you don't specify a value, Elastic Transcoder starts at the beginning of the input file. - */ - StartTime?: Time; - /** - * The duration of the clip. The format can be either HH:mm:ss.SSS (maximum value: 23:59:59.999; SSS is thousandths of a second) or sssss.SSS (maximum value: 86399.999). If you don't specify a value, Elastic Transcoder creates an output file from StartTime to the end of the file. If you specify a value longer than the duration of the input file, Elastic Transcoder transcodes the file and returns a warning message. - */ - Duration?: Time; - } - export interface Timing { - /** - * The time the job was submitted to Elastic Transcoder, in epoch milliseconds. - */ - SubmitTimeMillis?: NullableLong; - /** - * The time the job began transcoding, in epoch milliseconds. - */ - StartTimeMillis?: NullableLong; - /** - * The time the job finished transcoding, in epoch milliseconds. - */ - FinishTimeMillis?: NullableLong; - } - export interface UpdatePipelineNotificationsRequest { - /** - * The identifier of the pipeline for which you want to change notification settings. - */ - Id: Id; - /** - * The topic ARN for the Amazon Simple Notification Service (Amazon SNS) topic that you want to notify to report job status. To receive notifications, you must also subscribe to the new topic in the Amazon SNS console. Progressing: The topic ARN for the Amazon Simple Notification Service (Amazon SNS) topic that you want to notify when Elastic Transcoder has started to process jobs that are added to this pipeline. This is the ARN that Amazon SNS returned when you created the topic. Completed: The topic ARN for the Amazon SNS topic that you want to notify when Elastic Transcoder has finished processing a job. This is the ARN that Amazon SNS returned when you created the topic. Warning: The topic ARN for the Amazon SNS topic that you want to notify when Elastic Transcoder encounters a warning condition. This is the ARN that Amazon SNS returned when you created the topic. Error: The topic ARN for the Amazon SNS topic that you want to notify when Elastic Transcoder encounters an error condition. This is the ARN that Amazon SNS returned when you created the topic. - */ - Notifications: Notifications; - } - export interface UpdatePipelineNotificationsResponse { - /** - * A section of the response body that provides information about the pipeline associated with this notification. - */ - Pipeline?: Pipeline; - } - export interface UpdatePipelineRequest { - /** - * The ID of the pipeline that you want to update. - */ - Id: Id; - /** - * The name of the pipeline. We recommend that the name be unique within the AWS account, but uniqueness is not enforced. Constraints: Maximum 40 characters - */ - Name?: Name; - /** - * The Amazon S3 bucket in which you saved the media files that you want to transcode and the graphics that you want to use as watermarks. - */ - InputBucket?: BucketName; - /** - * The IAM Amazon Resource Name (ARN) for the role that you want Elastic Transcoder to use to transcode jobs for this pipeline. - */ - Role?: Role; - /** - * The AWS Key Management Service (AWS KMS) key that you want to use with this pipeline. If you use either S3 or S3-AWS-KMS as your Encryption:Mode, you don't need to provide a key with your job because a default key, known as an AWS-KMS key, is created for you automatically. You need to provide an AWS-KMS key only if you want to use a non-default AWS-KMS key, or if you are using an Encryption:Mode of AES-PKCS7, AES-CTR, or AES-GCM. - */ - AwsKmsKeyArn?: KeyArn; - /** - * The topic ARN for the Amazon Simple Notification Service (Amazon SNS) topic that you want to notify to report job status. To receive notifications, you must also subscribe to the new topic in the Amazon SNS console. Progressing: The topic ARN for the Amazon Simple Notification Service (Amazon SNS) topic that you want to notify when Elastic Transcoder has started to process jobs that are added to this pipeline. This is the ARN that Amazon SNS returned when you created the topic. Completed: The topic ARN for the Amazon SNS topic that you want to notify when Elastic Transcoder has finished processing a job. This is the ARN that Amazon SNS returned when you created the topic. Warning: The topic ARN for the Amazon SNS topic that you want to notify when Elastic Transcoder encounters a warning condition. This is the ARN that Amazon SNS returned when you created the topic. Error: The topic ARN for the Amazon SNS topic that you want to notify when Elastic Transcoder encounters an error condition. This is the ARN that Amazon SNS returned when you created the topic. - */ - Notifications?: Notifications; - /** - * The optional ContentConfig object specifies information about the Amazon S3 bucket in which you want Elastic Transcoder to save transcoded files and playlists: which bucket to use, which users you want to have access to the files, the type of access you want users to have, and the storage class that you want to assign to the files. If you specify values for ContentConfig, you must also specify values for ThumbnailConfig. If you specify values for ContentConfig and ThumbnailConfig, omit the OutputBucket object. Bucket: The Amazon S3 bucket in which you want Elastic Transcoder to save transcoded files and playlists. Permissions (Optional): The Permissions object specifies which users you want to have access to transcoded files and the type of access you want them to have. You can grant permissions to a maximum of 30 users and/or predefined Amazon S3 groups. Grantee Type: Specify the type of value that appears in the Grantee object: Canonical: The value in the Grantee object is either the canonical user ID for an AWS account or an origin access identity for an Amazon CloudFront distribution. For more information about canonical user IDs, see Access Control List (ACL) Overview in the Amazon Simple Storage Service Developer Guide. For more information about using CloudFront origin access identities to require that users use CloudFront URLs instead of Amazon S3 URLs, see Using an Origin Access Identity to Restrict Access to Your Amazon S3 Content. A canonical user ID is not the same as an AWS account number. Email: The value in the Grantee object is the registered email address of an AWS account. Group: The value in the Grantee object is one of the following predefined Amazon S3 groups: AllUsers, AuthenticatedUsers, or LogDelivery. Grantee: The AWS user or group that you want to have access to transcoded files and playlists. To identify the user or group, you can specify the canonical user ID for an AWS account, an origin access identity for a CloudFront distribution, the registered email address of an AWS account, or a predefined Amazon S3 group Access: The permission that you want to give to the AWS user that you specified in Grantee. Permissions are granted on the files that Elastic Transcoder adds to the bucket, including playlists and video files. Valid values include: READ: The grantee can read the objects and metadata for objects that Elastic Transcoder adds to the Amazon S3 bucket. READ_ACP: The grantee can read the object ACL for objects that Elastic Transcoder adds to the Amazon S3 bucket. WRITE_ACP: The grantee can write the ACL for the objects that Elastic Transcoder adds to the Amazon S3 bucket. FULL_CONTROL: The grantee has READ, READ_ACP, and WRITE_ACP permissions for the objects that Elastic Transcoder adds to the Amazon S3 bucket. StorageClass: The Amazon S3 storage class, Standard or ReducedRedundancy, that you want Elastic Transcoder to assign to the video files and playlists that it stores in your Amazon S3 bucket. - */ - ContentConfig?: PipelineOutputConfig; - /** - * The ThumbnailConfig object specifies several values, including the Amazon S3 bucket in which you want Elastic Transcoder to save thumbnail files, which users you want to have access to the files, the type of access you want users to have, and the storage class that you want to assign to the files. If you specify values for ContentConfig, you must also specify values for ThumbnailConfig even if you don't want to create thumbnails. If you specify values for ContentConfig and ThumbnailConfig, omit the OutputBucket object. Bucket: The Amazon S3 bucket in which you want Elastic Transcoder to save thumbnail files. Permissions (Optional): The Permissions object specifies which users and/or predefined Amazon S3 groups you want to have access to thumbnail files, and the type of access you want them to have. You can grant permissions to a maximum of 30 users and/or predefined Amazon S3 groups. GranteeType: Specify the type of value that appears in the Grantee object: Canonical: The value in the Grantee object is either the canonical user ID for an AWS account or an origin access identity for an Amazon CloudFront distribution. A canonical user ID is not the same as an AWS account number. Email: The value in the Grantee object is the registered email address of an AWS account. Group: The value in the Grantee object is one of the following predefined Amazon S3 groups: AllUsers, AuthenticatedUsers, or LogDelivery. Grantee: The AWS user or group that you want to have access to thumbnail files. To identify the user or group, you can specify the canonical user ID for an AWS account, an origin access identity for a CloudFront distribution, the registered email address of an AWS account, or a predefined Amazon S3 group. Access: The permission that you want to give to the AWS user that you specified in Grantee. Permissions are granted on the thumbnail files that Elastic Transcoder adds to the bucket. Valid values include: READ: The grantee can read the thumbnails and metadata for objects that Elastic Transcoder adds to the Amazon S3 bucket. READ_ACP: The grantee can read the object ACL for thumbnails that Elastic Transcoder adds to the Amazon S3 bucket. WRITE_ACP: The grantee can write the ACL for the thumbnails that Elastic Transcoder adds to the Amazon S3 bucket. FULL_CONTROL: The grantee has READ, READ_ACP, and WRITE_ACP permissions for the thumbnails that Elastic Transcoder adds to the Amazon S3 bucket. StorageClass: The Amazon S3 storage class, Standard or ReducedRedundancy, that you want Elastic Transcoder to assign to the thumbnails that it stores in your Amazon S3 bucket. - */ - ThumbnailConfig?: PipelineOutputConfig; - } - export interface UpdatePipelineResponse { - /** - * The pipeline updated by this UpdatePipelineResponse call. - */ - Pipeline?: Pipeline; - /** - * Elastic Transcoder returns a warning if the resources used by your pipeline are not in the same region as the pipeline. Using resources in the same region, such as your Amazon S3 buckets, Amazon SNS notification topics, and AWS KMS key, reduces processing time and prevents cross-regional charges. - */ - Warnings?: Warnings; - } - export interface UpdatePipelineStatusRequest { - /** - * The identifier of the pipeline to update. - */ - Id: Id; - /** - * The desired status of the pipeline: Active: The pipeline is processing jobs. Paused: The pipeline is not currently processing jobs. - */ - Status: PipelineStatus; - } - export interface UpdatePipelineStatusResponse { - /** - * A section of the response body that provides information about the pipeline. - */ - Pipeline?: Pipeline; - } - export type UserMetadata = {[key: string]: String}; - export type VerticalAlign = string; - export type VideoBitRate = string; - export type VideoCodec = string; - export interface VideoParameters { - /** - * The video codec for the output file. Valid values include gif, H.264, mpeg2, vp8, and vp9. You can only specify vp8 and vp9 when the container type is webm, gif when the container type is gif, and mpeg2 when the container type is mpg. - */ - Codec?: VideoCodec; - /** - * Profile (H.264/VP8/VP9 Only) The H.264 profile that you want to use for the output file. Elastic Transcoder supports the following profiles: baseline: The profile most commonly used for videoconferencing and for mobile applications. main: The profile used for standard-definition digital TV broadcasts. high: The profile used for high-definition digital TV broadcasts and for Blu-ray discs. Level (H.264 Only) The H.264 level that you want to use for the output file. Elastic Transcoder supports the following levels: 1, 1b, 1.1, 1.2, 1.3, 2, 2.1, 2.2, 3, 3.1, 3.2, 4, 4.1 MaxReferenceFrames (H.264 Only) Applicable only when the value of Video:Codec is H.264. The maximum number of previously decoded frames to use as a reference for decoding future frames. Valid values are integers 0 through 16, but we recommend that you not use a value greater than the following: Min(Floor(Maximum decoded picture buffer in macroblocks * 256 / (Width in pixels * Height in pixels)), 16) where Width in pixels and Height in pixels represent either MaxWidth and MaxHeight, or Resolution. Maximum decoded picture buffer in macroblocks depends on the value of the Level object. See the list below. (A macroblock is a block of pixels measuring 16x16.) 1 - 396 1b - 396 1.1 - 900 1.2 - 2376 1.3 - 2376 2 - 2376 2.1 - 4752 2.2 - 8100 3 - 8100 3.1 - 18000 3.2 - 20480 4 - 32768 4.1 - 32768 MaxBitRate (Optional, H.264/MPEG2/VP8/VP9 only) The maximum number of bits per second in a video buffer; the size of the buffer is specified by BufferSize. Specify a value between 16 and 62,500. You can reduce the bandwidth required to stream a video by reducing the maximum bit rate, but this also reduces the quality of the video. BufferSize (Optional, H.264/MPEG2/VP8/VP9 only) The maximum number of bits in any x seconds of the output video. This window is commonly 10 seconds, the standard segment duration when you're using FMP4 or MPEG-TS for the container type of the output video. Specify an integer greater than 0. If you specify MaxBitRate and omit BufferSize, Elastic Transcoder sets BufferSize to 10 times the value of MaxBitRate. InterlacedMode (Optional, H.264/MPEG2 Only) The interlace mode for the output video. Interlaced video is used to double the perceived frame rate for a video by interlacing two fields (one field on every other line, the other field on the other lines) so that the human eye registers multiple pictures per frame. Interlacing reduces the bandwidth required for transmitting a video, but can result in blurred images and flickering. Valid values include Progressive (no interlacing, top to bottom), TopFirst (top field first), BottomFirst (bottom field first), and Auto. If InterlaceMode is not specified, Elastic Transcoder uses Progressive for the output. If Auto is specified, Elastic Transcoder interlaces the output. ColorSpaceConversionMode (Optional, H.264/MPEG2 Only) The color space conversion Elastic Transcoder applies to the output video. Color spaces are the algorithms used by the computer to store information about how to render color. Bt.601 is the standard for standard definition video, while Bt.709 is the standard for high definition video. Valid values include None, Bt709toBt601, Bt601toBt709, and Auto. If you chose Auto for ColorSpaceConversionMode and your output is interlaced, your frame rate is one of 23.97, 24, 25, 29.97, 50, or 60, your SegmentDuration is null, and you are using one of the resolution changes from the list below, Elastic Transcoder applies the following color space conversions: Standard to HD, 720x480 to 1920x1080 - Elastic Transcoder applies Bt601ToBt709 Standard to HD, 720x576 to 1920x1080 - Elastic Transcoder applies Bt601ToBt709 HD to Standard, 1920x1080 to 720x480 - Elastic Transcoder applies Bt709ToBt601 HD to Standard, 1920x1080 to 720x576 - Elastic Transcoder applies Bt709ToBt601 Elastic Transcoder may change the behavior of the ColorspaceConversionMode Auto mode in the future. All outputs in a playlist must use the same ColorSpaceConversionMode. If you do not specify a ColorSpaceConversionMode, Elastic Transcoder does not change the color space of a file. If you are unsure what ColorSpaceConversionMode was applied to your output file, you can check the AppliedColorSpaceConversion parameter included in your job response. If your job does not have an AppliedColorSpaceConversion in its response, no ColorSpaceConversionMode was applied. ChromaSubsampling The sampling pattern for the chroma (color) channels of the output video. Valid values include yuv420p and yuv422p. yuv420p samples the chroma information of every other horizontal and every other vertical line, yuv422p samples the color information of every horizontal line and every other vertical line. LoopCount (Gif Only) The number of times you want the output gif to loop. Valid values include Infinite and integers between 0 and 100, inclusive. - */ - CodecOptions?: CodecOptions; - /** - * Applicable only when the value of Video:Codec is one of H.264, MPEG2, or VP8. The maximum number of frames between key frames. Key frames are fully encoded frames; the frames between key frames are encoded based, in part, on the content of the key frames. The value is an integer formatted as a string; valid values are between 1 (every frame is a key frame) and 100000, inclusive. A higher value results in higher compression but may also discernibly decrease video quality. For Smooth outputs, the FrameRate must have a constant ratio to the KeyframesMaxDist. This allows Smooth playlists to switch between different quality levels while the file is being played. For example, an input file can have a FrameRate of 30 with a KeyframesMaxDist of 90. The output file then needs to have a ratio of 1:3. Valid outputs would have FrameRate of 30, 25, and 10, and KeyframesMaxDist of 90, 75, and 30, respectively. Alternately, this can be achieved by setting FrameRate to auto and having the same values for MaxFrameRate and KeyframesMaxDist. - */ - KeyframesMaxDist?: KeyframesMaxDist; - /** - * Applicable only when the value of Video:Codec is one of H.264, MPEG2, or VP8. Whether to use a fixed value for FixedGOP. Valid values are true and false: true: Elastic Transcoder uses the value of KeyframesMaxDist for the distance between key frames (the number of frames in a group of pictures, or GOP). false: The distance between key frames can vary. FixedGOP must be set to true for fmp4 containers. - */ - FixedGOP?: FixedGOP; - /** - * The bit rate of the video stream in the output file, in kilobits/second. Valid values depend on the values of Level and Profile. If you specify auto, Elastic Transcoder uses the detected bit rate of the input source. If you specify a value other than auto, we recommend that you specify a value less than or equal to the maximum H.264-compliant value listed for your level and profile: Level - Maximum video bit rate in kilobits/second (baseline and main Profile) : maximum video bit rate in kilobits/second (high Profile) 1 - 64 : 80 1b - 128 : 160 1.1 - 192 : 240 1.2 - 384 : 480 1.3 - 768 : 960 2 - 2000 : 2500 3 - 10000 : 12500 3.1 - 14000 : 17500 3.2 - 20000 : 25000 4 - 20000 : 25000 4.1 - 50000 : 62500 - */ - BitRate?: VideoBitRate; - /** - * The frames per second for the video stream in the output file. Valid values include: auto, 10, 15, 23.97, 24, 25, 29.97, 30, 60 If you specify auto, Elastic Transcoder uses the detected frame rate of the input source. If you specify a frame rate, we recommend that you perform the following calculation: Frame rate = maximum recommended decoding speed in luma samples/second / (width in pixels * height in pixels) where: width in pixels and height in pixels represent the Resolution of the output video. maximum recommended decoding speed in Luma samples/second is less than or equal to the maximum value listed in the following table, based on the value that you specified for Level. The maximum recommended decoding speed in Luma samples/second for each level is described in the following list (Level - Decoding speed): 1 - 380160 1b - 380160 1.1 - 76800 1.2 - 1536000 1.3 - 3041280 2 - 3041280 2.1 - 5068800 2.2 - 5184000 3 - 10368000 3.1 - 27648000 3.2 - 55296000 4 - 62914560 4.1 - 62914560 - */ - FrameRate?: FrameRate; - /** - * If you specify auto for FrameRate, Elastic Transcoder uses the frame rate of the input video for the frame rate of the output video. Specify the maximum frame rate that you want Elastic Transcoder to use when the frame rate of the input video is greater than the desired maximum frame rate of the output video. Valid values include: 10, 15, 23.97, 24, 25, 29.97, 30, 60. - */ - MaxFrameRate?: MaxFrameRate; - /** - * To better control resolution and aspect ratio of output videos, we recommend that you use the values MaxWidth, MaxHeight, SizingPolicy, PaddingPolicy, and DisplayAspectRatio instead of Resolution and AspectRatio. The two groups of settings are mutually exclusive. Do not use them together. The width and height of the video in the output file, in pixels. Valid values are auto and width x height: auto: Elastic Transcoder attempts to preserve the width and height of the input file, subject to the following rules. width x height : The width and height of the output video in pixels. Note the following about specifying the width and height: The width must be an even integer between 128 and 4096, inclusive. The height must be an even integer between 96 and 3072, inclusive. If you specify a resolution that is less than the resolution of the input file, Elastic Transcoder rescales the output file to the lower resolution. If you specify a resolution that is greater than the resolution of the input file, Elastic Transcoder rescales the output to the higher resolution. We recommend that you specify a resolution for which the product of width and height is less than or equal to the applicable value in the following list (List - Max width x height value): 1 - 25344 1b - 25344 1.1 - 101376 1.2 - 101376 1.3 - 101376 2 - 101376 2.1 - 202752 2.2 - 404720 3 - 404720 3.1 - 921600 3.2 - 1310720 4 - 2097152 4.1 - 2097152 - */ - Resolution?: Resolution; - /** - * To better control resolution and aspect ratio of output videos, we recommend that you use the values MaxWidth, MaxHeight, SizingPolicy, PaddingPolicy, and DisplayAspectRatio instead of Resolution and AspectRatio. The two groups of settings are mutually exclusive. Do not use them together. The display aspect ratio of the video in the output file. Valid values include: auto, 1:1, 4:3, 3:2, 16:9 If you specify auto, Elastic Transcoder tries to preserve the aspect ratio of the input file. If you specify an aspect ratio for the output file that differs from aspect ratio of the input file, Elastic Transcoder adds pillarboxing (black bars on the sides) or letterboxing (black bars on the top and bottom) to maintain the aspect ratio of the active region of the video. - */ - AspectRatio?: AspectRatio; - /** - * The maximum width of the output video in pixels. If you specify auto, Elastic Transcoder uses 1920 (Full HD) as the default value. If you specify a numeric value, enter an even integer between 128 and 4096. - */ - MaxWidth?: DigitsOrAuto; - /** - * The maximum height of the output video in pixels. If you specify auto, Elastic Transcoder uses 1080 (Full HD) as the default value. If you specify a numeric value, enter an even integer between 96 and 3072. - */ - MaxHeight?: DigitsOrAuto; - /** - * The value that Elastic Transcoder adds to the metadata in the output file. - */ - DisplayAspectRatio?: AspectRatio; - /** - * Specify one of the following values to control scaling of the output video: Fit: Elastic Transcoder scales the output video so it matches the value that you specified in either MaxWidth or MaxHeight without exceeding the other value. Fill: Elastic Transcoder scales the output video so it matches the value that you specified in either MaxWidth or MaxHeight and matches or exceeds the other value. Elastic Transcoder centers the output video and then crops it in the dimension (if any) that exceeds the maximum value. Stretch: Elastic Transcoder stretches the output video to match the values that you specified for MaxWidth and MaxHeight. If the relative proportions of the input video and the output video are different, the output video will be distorted. Keep: Elastic Transcoder does not scale the output video. If either dimension of the input video exceeds the values that you specified for MaxWidth and MaxHeight, Elastic Transcoder crops the output video. ShrinkToFit: Elastic Transcoder scales the output video down so that its dimensions match the values that you specified for at least one of MaxWidth and MaxHeight without exceeding either value. If you specify this option, Elastic Transcoder does not scale the video up. ShrinkToFill: Elastic Transcoder scales the output video down so that its dimensions match the values that you specified for at least one of MaxWidth and MaxHeight without dropping below either value. If you specify this option, Elastic Transcoder does not scale the video up. - */ - SizingPolicy?: SizingPolicy; - /** - * When you set PaddingPolicy to Pad, Elastic Transcoder may add black bars to the top and bottom and/or left and right sides of the output video to make the total size of the output video match the values that you specified for MaxWidth and MaxHeight. - */ - PaddingPolicy?: PaddingPolicy; - /** - * Settings for the size, location, and opacity of graphics that you want Elastic Transcoder to overlay over videos that are transcoded using this preset. You can specify settings for up to four watermarks. Watermarks appear in the specified size and location, and with the specified opacity for the duration of the transcoded video. Watermarks can be in .png or .jpg format. If you want to display a watermark that is not rectangular, use the .png format, which supports transparency. When you create a job that uses this preset, you specify the .png or .jpg graphics that you want Elastic Transcoder to include in the transcoded videos. You can specify fewer graphics in the job than you specify watermark settings in the preset, which allows you to use the same preset for up to four watermarks that have different dimensions. - */ - Watermarks?: PresetWatermarks; - } - export interface Warning { - /** - * The code of the cross-regional warning. - */ - Code?: String; - /** - * The message explaining what resources are in a different region from the pipeline. AWS KMS keys must be in the same region as the pipeline. - */ - Message?: String; - } - export type Warnings = Warning[]; - export type WatermarkKey = string; - export type WatermarkSizingPolicy = string; - export type ZeroTo255String = string; - export type ZeroTo512String = string; - /** - * A string in YYYY-MM-DD format that represents the latest possible API version that can be used in this service. Specify 'latest' to use the latest possible version. - */ - export type apiVersion = "2012-09-25"|"latest"|string; - export interface ClientApiVersions { - /** - * A string in YYYY-MM-DD format that represents the latest possible API version that can be used in this service. Specify 'latest' to use the latest possible version. - */ - apiVersion?: apiVersion; - } - export type ClientConfiguration = ServiceConfigurationOptions & ClientApiVersions; - /** - * Contains interfaces for use with the ElasticTranscoder client. - */ - export import Types = ElasticTranscoder; -} -export = ElasticTranscoder; diff --git a/workshops/monte-carlo-on-ec2-spot-fleet/src/web/node_modules/aws-sdk/clients/elastictranscoder.js b/workshops/monte-carlo-on-ec2-spot-fleet/src/web/node_modules/aws-sdk/clients/elastictranscoder.js deleted file mode 100644 index a2be9bf1..00000000 --- a/workshops/monte-carlo-on-ec2-spot-fleet/src/web/node_modules/aws-sdk/clients/elastictranscoder.js +++ /dev/null @@ -1,19 +0,0 @@ -require('../lib/node_loader'); -var AWS = require('../lib/core'); -var Service = AWS.Service; -var apiLoader = AWS.apiLoader; - -apiLoader.services['elastictranscoder'] = {}; -AWS.ElasticTranscoder = Service.defineService('elastictranscoder', ['2012-09-25']); -Object.defineProperty(apiLoader.services['elastictranscoder'], '2012-09-25', { - get: function get() { - var model = require('../apis/elastictranscoder-2012-09-25.min.json'); - model.paginators = require('../apis/elastictranscoder-2012-09-25.paginators.json').pagination; - model.waiters = require('../apis/elastictranscoder-2012-09-25.waiters2.json').waiters; - return model; - }, - enumerable: true, - configurable: true -}); - -module.exports = AWS.ElasticTranscoder; diff --git a/workshops/monte-carlo-on-ec2-spot-fleet/src/web/node_modules/aws-sdk/clients/elb.d.ts b/workshops/monte-carlo-on-ec2-spot-fleet/src/web/node_modules/aws-sdk/clients/elb.d.ts deleted file mode 100644 index 25549317..00000000 --- a/workshops/monte-carlo-on-ec2-spot-fleet/src/web/node_modules/aws-sdk/clients/elb.d.ts +++ /dev/null @@ -1,1203 +0,0 @@ -import {Request} from '../lib/request'; -import {Response} from '../lib/response'; -import {AWSError} from '../lib/error'; -import {Service} from '../lib/service'; -import {ServiceConfigurationOptions} from '../lib/service'; -import {ConfigBase as Config} from '../lib/config'; -interface Blob {} -declare class ELB extends Service { - /** - * Constructs a service object. This object has one method for each API operation. - */ - constructor(options?: ELB.Types.ClientConfiguration) - config: Config & ELB.Types.ClientConfiguration; - /** - * Adds the specified tags to the specified load balancer. Each load balancer can have a maximum of 10 tags. Each tag consists of a key and an optional value. If a tag with the same key is already associated with the load balancer, AddTags updates its value. For more information, see Tag Your Classic Load Balancer in the Classic Load Balancer Guide. - */ - addTags(params: ELB.Types.AddTagsInput, callback?: (err: AWSError, data: ELB.Types.AddTagsOutput) => void): Request; - /** - * Adds the specified tags to the specified load balancer. Each load balancer can have a maximum of 10 tags. Each tag consists of a key and an optional value. If a tag with the same key is already associated with the load balancer, AddTags updates its value. For more information, see Tag Your Classic Load Balancer in the Classic Load Balancer Guide. - */ - addTags(callback?: (err: AWSError, data: ELB.Types.AddTagsOutput) => void): Request; - /** - * Associates one or more security groups with your load balancer in a virtual private cloud (VPC). The specified security groups override the previously associated security groups. For more information, see Security Groups for Load Balancers in a VPC in the Classic Load Balancer Guide. - */ - applySecurityGroupsToLoadBalancer(params: ELB.Types.ApplySecurityGroupsToLoadBalancerInput, callback?: (err: AWSError, data: ELB.Types.ApplySecurityGroupsToLoadBalancerOutput) => void): Request; - /** - * Associates one or more security groups with your load balancer in a virtual private cloud (VPC). The specified security groups override the previously associated security groups. For more information, see Security Groups for Load Balancers in a VPC in the Classic Load Balancer Guide. - */ - applySecurityGroupsToLoadBalancer(callback?: (err: AWSError, data: ELB.Types.ApplySecurityGroupsToLoadBalancerOutput) => void): Request; - /** - * Adds one or more subnets to the set of configured subnets for the specified load balancer. The load balancer evenly distributes requests across all registered subnets. For more information, see Add or Remove Subnets for Your Load Balancer in a VPC in the Classic Load Balancer Guide. - */ - attachLoadBalancerToSubnets(params: ELB.Types.AttachLoadBalancerToSubnetsInput, callback?: (err: AWSError, data: ELB.Types.AttachLoadBalancerToSubnetsOutput) => void): Request; - /** - * Adds one or more subnets to the set of configured subnets for the specified load balancer. The load balancer evenly distributes requests across all registered subnets. For more information, see Add or Remove Subnets for Your Load Balancer in a VPC in the Classic Load Balancer Guide. - */ - attachLoadBalancerToSubnets(callback?: (err: AWSError, data: ELB.Types.AttachLoadBalancerToSubnetsOutput) => void): Request; - /** - * Specifies the health check settings to use when evaluating the health state of your EC2 instances. For more information, see Configure Health Checks for Your Load Balancer in the Classic Load Balancer Guide. - */ - configureHealthCheck(params: ELB.Types.ConfigureHealthCheckInput, callback?: (err: AWSError, data: ELB.Types.ConfigureHealthCheckOutput) => void): Request; - /** - * Specifies the health check settings to use when evaluating the health state of your EC2 instances. For more information, see Configure Health Checks for Your Load Balancer in the Classic Load Balancer Guide. - */ - configureHealthCheck(callback?: (err: AWSError, data: ELB.Types.ConfigureHealthCheckOutput) => void): Request; - /** - * Generates a stickiness policy with sticky session lifetimes that follow that of an application-generated cookie. This policy can be associated only with HTTP/HTTPS listeners. This policy is similar to the policy created by CreateLBCookieStickinessPolicy, except that the lifetime of the special Elastic Load Balancing cookie, AWSELB, follows the lifetime of the application-generated cookie specified in the policy configuration. The load balancer only inserts a new stickiness cookie when the application response includes a new application cookie. If the application cookie is explicitly removed or expires, the session stops being sticky until a new application cookie is issued. For more information, see Application-Controlled Session Stickiness in the Classic Load Balancer Guide. - */ - createAppCookieStickinessPolicy(params: ELB.Types.CreateAppCookieStickinessPolicyInput, callback?: (err: AWSError, data: ELB.Types.CreateAppCookieStickinessPolicyOutput) => void): Request; - /** - * Generates a stickiness policy with sticky session lifetimes that follow that of an application-generated cookie. This policy can be associated only with HTTP/HTTPS listeners. This policy is similar to the policy created by CreateLBCookieStickinessPolicy, except that the lifetime of the special Elastic Load Balancing cookie, AWSELB, follows the lifetime of the application-generated cookie specified in the policy configuration. The load balancer only inserts a new stickiness cookie when the application response includes a new application cookie. If the application cookie is explicitly removed or expires, the session stops being sticky until a new application cookie is issued. For more information, see Application-Controlled Session Stickiness in the Classic Load Balancer Guide. - */ - createAppCookieStickinessPolicy(callback?: (err: AWSError, data: ELB.Types.CreateAppCookieStickinessPolicyOutput) => void): Request; - /** - * Generates a stickiness policy with sticky session lifetimes controlled by the lifetime of the browser (user-agent) or a specified expiration period. This policy can be associated only with HTTP/HTTPS listeners. When a load balancer implements this policy, the load balancer uses a special cookie to track the instance for each request. When the load balancer receives a request, it first checks to see if this cookie is present in the request. If so, the load balancer sends the request to the application server specified in the cookie. If not, the load balancer sends the request to a server that is chosen based on the existing load-balancing algorithm. A cookie is inserted into the response for binding subsequent requests from the same user to that server. The validity of the cookie is based on the cookie expiration time, which is specified in the policy configuration. For more information, see Duration-Based Session Stickiness in the Classic Load Balancer Guide. - */ - createLBCookieStickinessPolicy(params: ELB.Types.CreateLBCookieStickinessPolicyInput, callback?: (err: AWSError, data: ELB.Types.CreateLBCookieStickinessPolicyOutput) => void): Request; - /** - * Generates a stickiness policy with sticky session lifetimes controlled by the lifetime of the browser (user-agent) or a specified expiration period. This policy can be associated only with HTTP/HTTPS listeners. When a load balancer implements this policy, the load balancer uses a special cookie to track the instance for each request. When the load balancer receives a request, it first checks to see if this cookie is present in the request. If so, the load balancer sends the request to the application server specified in the cookie. If not, the load balancer sends the request to a server that is chosen based on the existing load-balancing algorithm. A cookie is inserted into the response for binding subsequent requests from the same user to that server. The validity of the cookie is based on the cookie expiration time, which is specified in the policy configuration. For more information, see Duration-Based Session Stickiness in the Classic Load Balancer Guide. - */ - createLBCookieStickinessPolicy(callback?: (err: AWSError, data: ELB.Types.CreateLBCookieStickinessPolicyOutput) => void): Request; - /** - * Creates a Classic Load Balancer. You can add listeners, security groups, subnets, and tags when you create your load balancer, or you can add them later using CreateLoadBalancerListeners, ApplySecurityGroupsToLoadBalancer, AttachLoadBalancerToSubnets, and AddTags. To describe your current load balancers, see DescribeLoadBalancers. When you are finished with a load balancer, you can delete it using DeleteLoadBalancer. You can create up to 20 load balancers per region per account. You can request an increase for the number of load balancers for your account. For more information, see Limits for Your Classic Load Balancer in the Classic Load Balancer Guide. - */ - createLoadBalancer(params: ELB.Types.CreateAccessPointInput, callback?: (err: AWSError, data: ELB.Types.CreateAccessPointOutput) => void): Request; - /** - * Creates a Classic Load Balancer. You can add listeners, security groups, subnets, and tags when you create your load balancer, or you can add them later using CreateLoadBalancerListeners, ApplySecurityGroupsToLoadBalancer, AttachLoadBalancerToSubnets, and AddTags. To describe your current load balancers, see DescribeLoadBalancers. When you are finished with a load balancer, you can delete it using DeleteLoadBalancer. You can create up to 20 load balancers per region per account. You can request an increase for the number of load balancers for your account. For more information, see Limits for Your Classic Load Balancer in the Classic Load Balancer Guide. - */ - createLoadBalancer(callback?: (err: AWSError, data: ELB.Types.CreateAccessPointOutput) => void): Request; - /** - * Creates one or more listeners for the specified load balancer. If a listener with the specified port does not already exist, it is created; otherwise, the properties of the new listener must match the properties of the existing listener. For more information, see Listeners for Your Classic Load Balancer in the Classic Load Balancer Guide. - */ - createLoadBalancerListeners(params: ELB.Types.CreateLoadBalancerListenerInput, callback?: (err: AWSError, data: ELB.Types.CreateLoadBalancerListenerOutput) => void): Request; - /** - * Creates one or more listeners for the specified load balancer. If a listener with the specified port does not already exist, it is created; otherwise, the properties of the new listener must match the properties of the existing listener. For more information, see Listeners for Your Classic Load Balancer in the Classic Load Balancer Guide. - */ - createLoadBalancerListeners(callback?: (err: AWSError, data: ELB.Types.CreateLoadBalancerListenerOutput) => void): Request; - /** - * Creates a policy with the specified attributes for the specified load balancer. Policies are settings that are saved for your load balancer and that can be applied to the listener or the application server, depending on the policy type. - */ - createLoadBalancerPolicy(params: ELB.Types.CreateLoadBalancerPolicyInput, callback?: (err: AWSError, data: ELB.Types.CreateLoadBalancerPolicyOutput) => void): Request; - /** - * Creates a policy with the specified attributes for the specified load balancer. Policies are settings that are saved for your load balancer and that can be applied to the listener or the application server, depending on the policy type. - */ - createLoadBalancerPolicy(callback?: (err: AWSError, data: ELB.Types.CreateLoadBalancerPolicyOutput) => void): Request; - /** - * Deletes the specified load balancer. If you are attempting to recreate a load balancer, you must reconfigure all settings. The DNS name associated with a deleted load balancer are no longer usable. The name and associated DNS record of the deleted load balancer no longer exist and traffic sent to any of its IP addresses is no longer delivered to your instances. If the load balancer does not exist or has already been deleted, the call to DeleteLoadBalancer still succeeds. - */ - deleteLoadBalancer(params: ELB.Types.DeleteAccessPointInput, callback?: (err: AWSError, data: ELB.Types.DeleteAccessPointOutput) => void): Request; - /** - * Deletes the specified load balancer. If you are attempting to recreate a load balancer, you must reconfigure all settings. The DNS name associated with a deleted load balancer are no longer usable. The name and associated DNS record of the deleted load balancer no longer exist and traffic sent to any of its IP addresses is no longer delivered to your instances. If the load balancer does not exist or has already been deleted, the call to DeleteLoadBalancer still succeeds. - */ - deleteLoadBalancer(callback?: (err: AWSError, data: ELB.Types.DeleteAccessPointOutput) => void): Request; - /** - * Deletes the specified listeners from the specified load balancer. - */ - deleteLoadBalancerListeners(params: ELB.Types.DeleteLoadBalancerListenerInput, callback?: (err: AWSError, data: ELB.Types.DeleteLoadBalancerListenerOutput) => void): Request; - /** - * Deletes the specified listeners from the specified load balancer. - */ - deleteLoadBalancerListeners(callback?: (err: AWSError, data: ELB.Types.DeleteLoadBalancerListenerOutput) => void): Request; - /** - * Deletes the specified policy from the specified load balancer. This policy must not be enabled for any listeners. - */ - deleteLoadBalancerPolicy(params: ELB.Types.DeleteLoadBalancerPolicyInput, callback?: (err: AWSError, data: ELB.Types.DeleteLoadBalancerPolicyOutput) => void): Request; - /** - * Deletes the specified policy from the specified load balancer. This policy must not be enabled for any listeners. - */ - deleteLoadBalancerPolicy(callback?: (err: AWSError, data: ELB.Types.DeleteLoadBalancerPolicyOutput) => void): Request; - /** - * Deregisters the specified instances from the specified load balancer. After the instance is deregistered, it no longer receives traffic from the load balancer. You can use DescribeLoadBalancers to verify that the instance is deregistered from the load balancer. For more information, see Register or De-Register EC2 Instances in the Classic Load Balancer Guide. - */ - deregisterInstancesFromLoadBalancer(params: ELB.Types.DeregisterEndPointsInput, callback?: (err: AWSError, data: ELB.Types.DeregisterEndPointsOutput) => void): Request; - /** - * Deregisters the specified instances from the specified load balancer. After the instance is deregistered, it no longer receives traffic from the load balancer. You can use DescribeLoadBalancers to verify that the instance is deregistered from the load balancer. For more information, see Register or De-Register EC2 Instances in the Classic Load Balancer Guide. - */ - deregisterInstancesFromLoadBalancer(callback?: (err: AWSError, data: ELB.Types.DeregisterEndPointsOutput) => void): Request; - /** - * Describes the current Elastic Load Balancing resource limits for your AWS account. For more information, see Limits for Your Classic Load Balancer in the Classic Load Balancer Guide. - */ - describeAccountLimits(params: ELB.Types.DescribeAccountLimitsInput, callback?: (err: AWSError, data: ELB.Types.DescribeAccountLimitsOutput) => void): Request; - /** - * Describes the current Elastic Load Balancing resource limits for your AWS account. For more information, see Limits for Your Classic Load Balancer in the Classic Load Balancer Guide. - */ - describeAccountLimits(callback?: (err: AWSError, data: ELB.Types.DescribeAccountLimitsOutput) => void): Request; - /** - * Describes the state of the specified instances with respect to the specified load balancer. If no instances are specified, the call describes the state of all instances that are currently registered with the load balancer. If instances are specified, their state is returned even if they are no longer registered with the load balancer. The state of terminated instances is not returned. - */ - describeInstanceHealth(params: ELB.Types.DescribeEndPointStateInput, callback?: (err: AWSError, data: ELB.Types.DescribeEndPointStateOutput) => void): Request; - /** - * Describes the state of the specified instances with respect to the specified load balancer. If no instances are specified, the call describes the state of all instances that are currently registered with the load balancer. If instances are specified, their state is returned even if they are no longer registered with the load balancer. The state of terminated instances is not returned. - */ - describeInstanceHealth(callback?: (err: AWSError, data: ELB.Types.DescribeEndPointStateOutput) => void): Request; - /** - * Describes the attributes for the specified load balancer. - */ - describeLoadBalancerAttributes(params: ELB.Types.DescribeLoadBalancerAttributesInput, callback?: (err: AWSError, data: ELB.Types.DescribeLoadBalancerAttributesOutput) => void): Request; - /** - * Describes the attributes for the specified load balancer. - */ - describeLoadBalancerAttributes(callback?: (err: AWSError, data: ELB.Types.DescribeLoadBalancerAttributesOutput) => void): Request; - /** - * Describes the specified policies. If you specify a load balancer name, the action returns the descriptions of all policies created for the load balancer. If you specify a policy name associated with your load balancer, the action returns the description of that policy. If you don't specify a load balancer name, the action returns descriptions of the specified sample policies, or descriptions of all sample policies. The names of the sample policies have the ELBSample- prefix. - */ - describeLoadBalancerPolicies(params: ELB.Types.DescribeLoadBalancerPoliciesInput, callback?: (err: AWSError, data: ELB.Types.DescribeLoadBalancerPoliciesOutput) => void): Request; - /** - * Describes the specified policies. If you specify a load balancer name, the action returns the descriptions of all policies created for the load balancer. If you specify a policy name associated with your load balancer, the action returns the description of that policy. If you don't specify a load balancer name, the action returns descriptions of the specified sample policies, or descriptions of all sample policies. The names of the sample policies have the ELBSample- prefix. - */ - describeLoadBalancerPolicies(callback?: (err: AWSError, data: ELB.Types.DescribeLoadBalancerPoliciesOutput) => void): Request; - /** - * Describes the specified load balancer policy types or all load balancer policy types. The description of each type indicates how it can be used. For example, some policies can be used only with layer 7 listeners, some policies can be used only with layer 4 listeners, and some policies can be used only with your EC2 instances. You can use CreateLoadBalancerPolicy to create a policy configuration for any of these policy types. Then, depending on the policy type, use either SetLoadBalancerPoliciesOfListener or SetLoadBalancerPoliciesForBackendServer to set the policy. - */ - describeLoadBalancerPolicyTypes(params: ELB.Types.DescribeLoadBalancerPolicyTypesInput, callback?: (err: AWSError, data: ELB.Types.DescribeLoadBalancerPolicyTypesOutput) => void): Request; - /** - * Describes the specified load balancer policy types or all load balancer policy types. The description of each type indicates how it can be used. For example, some policies can be used only with layer 7 listeners, some policies can be used only with layer 4 listeners, and some policies can be used only with your EC2 instances. You can use CreateLoadBalancerPolicy to create a policy configuration for any of these policy types. Then, depending on the policy type, use either SetLoadBalancerPoliciesOfListener or SetLoadBalancerPoliciesForBackendServer to set the policy. - */ - describeLoadBalancerPolicyTypes(callback?: (err: AWSError, data: ELB.Types.DescribeLoadBalancerPolicyTypesOutput) => void): Request; - /** - * Describes the specified the load balancers. If no load balancers are specified, the call describes all of your load balancers. - */ - describeLoadBalancers(params: ELB.Types.DescribeAccessPointsInput, callback?: (err: AWSError, data: ELB.Types.DescribeAccessPointsOutput) => void): Request; - /** - * Describes the specified the load balancers. If no load balancers are specified, the call describes all of your load balancers. - */ - describeLoadBalancers(callback?: (err: AWSError, data: ELB.Types.DescribeAccessPointsOutput) => void): Request; - /** - * Describes the tags associated with the specified load balancers. - */ - describeTags(params: ELB.Types.DescribeTagsInput, callback?: (err: AWSError, data: ELB.Types.DescribeTagsOutput) => void): Request; - /** - * Describes the tags associated with the specified load balancers. - */ - describeTags(callback?: (err: AWSError, data: ELB.Types.DescribeTagsOutput) => void): Request; - /** - * Removes the specified subnets from the set of configured subnets for the load balancer. After a subnet is removed, all EC2 instances registered with the load balancer in the removed subnet go into the OutOfService state. Then, the load balancer balances the traffic among the remaining routable subnets. - */ - detachLoadBalancerFromSubnets(params: ELB.Types.DetachLoadBalancerFromSubnetsInput, callback?: (err: AWSError, data: ELB.Types.DetachLoadBalancerFromSubnetsOutput) => void): Request; - /** - * Removes the specified subnets from the set of configured subnets for the load balancer. After a subnet is removed, all EC2 instances registered with the load balancer in the removed subnet go into the OutOfService state. Then, the load balancer balances the traffic among the remaining routable subnets. - */ - detachLoadBalancerFromSubnets(callback?: (err: AWSError, data: ELB.Types.DetachLoadBalancerFromSubnetsOutput) => void): Request; - /** - * Removes the specified Availability Zones from the set of Availability Zones for the specified load balancer. There must be at least one Availability Zone registered with a load balancer at all times. After an Availability Zone is removed, all instances registered with the load balancer that are in the removed Availability Zone go into the OutOfService state. Then, the load balancer attempts to equally balance the traffic among its remaining Availability Zones. For more information, see Add or Remove Availability Zones in the Classic Load Balancer Guide. - */ - disableAvailabilityZonesForLoadBalancer(params: ELB.Types.RemoveAvailabilityZonesInput, callback?: (err: AWSError, data: ELB.Types.RemoveAvailabilityZonesOutput) => void): Request; - /** - * Removes the specified Availability Zones from the set of Availability Zones for the specified load balancer. There must be at least one Availability Zone registered with a load balancer at all times. After an Availability Zone is removed, all instances registered with the load balancer that are in the removed Availability Zone go into the OutOfService state. Then, the load balancer attempts to equally balance the traffic among its remaining Availability Zones. For more information, see Add or Remove Availability Zones in the Classic Load Balancer Guide. - */ - disableAvailabilityZonesForLoadBalancer(callback?: (err: AWSError, data: ELB.Types.RemoveAvailabilityZonesOutput) => void): Request; - /** - * Adds the specified Availability Zones to the set of Availability Zones for the specified load balancer. The load balancer evenly distributes requests across all its registered Availability Zones that contain instances. For more information, see Add or Remove Availability Zones in the Classic Load Balancer Guide. - */ - enableAvailabilityZonesForLoadBalancer(params: ELB.Types.AddAvailabilityZonesInput, callback?: (err: AWSError, data: ELB.Types.AddAvailabilityZonesOutput) => void): Request; - /** - * Adds the specified Availability Zones to the set of Availability Zones for the specified load balancer. The load balancer evenly distributes requests across all its registered Availability Zones that contain instances. For more information, see Add or Remove Availability Zones in the Classic Load Balancer Guide. - */ - enableAvailabilityZonesForLoadBalancer(callback?: (err: AWSError, data: ELB.Types.AddAvailabilityZonesOutput) => void): Request; - /** - * Modifies the attributes of the specified load balancer. You can modify the load balancer attributes, such as AccessLogs, ConnectionDraining, and CrossZoneLoadBalancing by either enabling or disabling them. Or, you can modify the load balancer attribute ConnectionSettings by specifying an idle connection timeout value for your load balancer. For more information, see the following in the Classic Load Balancer Guide: Cross-Zone Load Balancing Connection Draining Access Logs Idle Connection Timeout - */ - modifyLoadBalancerAttributes(params: ELB.Types.ModifyLoadBalancerAttributesInput, callback?: (err: AWSError, data: ELB.Types.ModifyLoadBalancerAttributesOutput) => void): Request; - /** - * Modifies the attributes of the specified load balancer. You can modify the load balancer attributes, such as AccessLogs, ConnectionDraining, and CrossZoneLoadBalancing by either enabling or disabling them. Or, you can modify the load balancer attribute ConnectionSettings by specifying an idle connection timeout value for your load balancer. For more information, see the following in the Classic Load Balancer Guide: Cross-Zone Load Balancing Connection Draining Access Logs Idle Connection Timeout - */ - modifyLoadBalancerAttributes(callback?: (err: AWSError, data: ELB.Types.ModifyLoadBalancerAttributesOutput) => void): Request; - /** - * Adds the specified instances to the specified load balancer. The instance must be a running instance in the same network as the load balancer (EC2-Classic or the same VPC). If you have EC2-Classic instances and a load balancer in a VPC with ClassicLink enabled, you can link the EC2-Classic instances to that VPC and then register the linked EC2-Classic instances with the load balancer in the VPC. Note that RegisterInstanceWithLoadBalancer completes when the request has been registered. Instance registration takes a little time to complete. To check the state of the registered instances, use DescribeLoadBalancers or DescribeInstanceHealth. After the instance is registered, it starts receiving traffic and requests from the load balancer. Any instance that is not in one of the Availability Zones registered for the load balancer is moved to the OutOfService state. If an Availability Zone is added to the load balancer later, any instances registered with the load balancer move to the InService state. To deregister instances from a load balancer, use DeregisterInstancesFromLoadBalancer. For more information, see Register or De-Register EC2 Instances in the Classic Load Balancer Guide. - */ - registerInstancesWithLoadBalancer(params: ELB.Types.RegisterEndPointsInput, callback?: (err: AWSError, data: ELB.Types.RegisterEndPointsOutput) => void): Request; - /** - * Adds the specified instances to the specified load balancer. The instance must be a running instance in the same network as the load balancer (EC2-Classic or the same VPC). If you have EC2-Classic instances and a load balancer in a VPC with ClassicLink enabled, you can link the EC2-Classic instances to that VPC and then register the linked EC2-Classic instances with the load balancer in the VPC. Note that RegisterInstanceWithLoadBalancer completes when the request has been registered. Instance registration takes a little time to complete. To check the state of the registered instances, use DescribeLoadBalancers or DescribeInstanceHealth. After the instance is registered, it starts receiving traffic and requests from the load balancer. Any instance that is not in one of the Availability Zones registered for the load balancer is moved to the OutOfService state. If an Availability Zone is added to the load balancer later, any instances registered with the load balancer move to the InService state. To deregister instances from a load balancer, use DeregisterInstancesFromLoadBalancer. For more information, see Register or De-Register EC2 Instances in the Classic Load Balancer Guide. - */ - registerInstancesWithLoadBalancer(callback?: (err: AWSError, data: ELB.Types.RegisterEndPointsOutput) => void): Request; - /** - * Removes one or more tags from the specified load balancer. - */ - removeTags(params: ELB.Types.RemoveTagsInput, callback?: (err: AWSError, data: ELB.Types.RemoveTagsOutput) => void): Request; - /** - * Removes one or more tags from the specified load balancer. - */ - removeTags(callback?: (err: AWSError, data: ELB.Types.RemoveTagsOutput) => void): Request; - /** - * Sets the certificate that terminates the specified listener's SSL connections. The specified certificate replaces any prior certificate that was used on the same load balancer and port. For more information about updating your SSL certificate, see Replace the SSL Certificate for Your Load Balancer in the Classic Load Balancer Guide. - */ - setLoadBalancerListenerSSLCertificate(params: ELB.Types.SetLoadBalancerListenerSSLCertificateInput, callback?: (err: AWSError, data: ELB.Types.SetLoadBalancerListenerSSLCertificateOutput) => void): Request; - /** - * Sets the certificate that terminates the specified listener's SSL connections. The specified certificate replaces any prior certificate that was used on the same load balancer and port. For more information about updating your SSL certificate, see Replace the SSL Certificate for Your Load Balancer in the Classic Load Balancer Guide. - */ - setLoadBalancerListenerSSLCertificate(callback?: (err: AWSError, data: ELB.Types.SetLoadBalancerListenerSSLCertificateOutput) => void): Request; - /** - * Replaces the set of policies associated with the specified port on which the EC2 instance is listening with a new set of policies. At this time, only the back-end server authentication policy type can be applied to the instance ports; this policy type is composed of multiple public key policies. Each time you use SetLoadBalancerPoliciesForBackendServer to enable the policies, use the PolicyNames parameter to list the policies that you want to enable. You can use DescribeLoadBalancers or DescribeLoadBalancerPolicies to verify that the policy is associated with the EC2 instance. For more information about enabling back-end instance authentication, see Configure Back-end Instance Authentication in the Classic Load Balancer Guide. For more information about Proxy Protocol, see Configure Proxy Protocol Support in the Classic Load Balancer Guide. - */ - setLoadBalancerPoliciesForBackendServer(params: ELB.Types.SetLoadBalancerPoliciesForBackendServerInput, callback?: (err: AWSError, data: ELB.Types.SetLoadBalancerPoliciesForBackendServerOutput) => void): Request; - /** - * Replaces the set of policies associated with the specified port on which the EC2 instance is listening with a new set of policies. At this time, only the back-end server authentication policy type can be applied to the instance ports; this policy type is composed of multiple public key policies. Each time you use SetLoadBalancerPoliciesForBackendServer to enable the policies, use the PolicyNames parameter to list the policies that you want to enable. You can use DescribeLoadBalancers or DescribeLoadBalancerPolicies to verify that the policy is associated with the EC2 instance. For more information about enabling back-end instance authentication, see Configure Back-end Instance Authentication in the Classic Load Balancer Guide. For more information about Proxy Protocol, see Configure Proxy Protocol Support in the Classic Load Balancer Guide. - */ - setLoadBalancerPoliciesForBackendServer(callback?: (err: AWSError, data: ELB.Types.SetLoadBalancerPoliciesForBackendServerOutput) => void): Request; - /** - * Replaces the current set of policies for the specified load balancer port with the specified set of policies. To enable back-end server authentication, use SetLoadBalancerPoliciesForBackendServer. For more information about setting policies, see Update the SSL Negotiation Configuration, Duration-Based Session Stickiness, and Application-Controlled Session Stickiness in the Classic Load Balancer Guide. - */ - setLoadBalancerPoliciesOfListener(params: ELB.Types.SetLoadBalancerPoliciesOfListenerInput, callback?: (err: AWSError, data: ELB.Types.SetLoadBalancerPoliciesOfListenerOutput) => void): Request; - /** - * Replaces the current set of policies for the specified load balancer port with the specified set of policies. To enable back-end server authentication, use SetLoadBalancerPoliciesForBackendServer. For more information about setting policies, see Update the SSL Negotiation Configuration, Duration-Based Session Stickiness, and Application-Controlled Session Stickiness in the Classic Load Balancer Guide. - */ - setLoadBalancerPoliciesOfListener(callback?: (err: AWSError, data: ELB.Types.SetLoadBalancerPoliciesOfListenerOutput) => void): Request; - /** - * Waits for the instanceDeregistered state by periodically calling the underlying ELB.describeInstanceHealthoperation every 15 seconds (at most 40 times). - */ - waitFor(state: "instanceDeregistered", params: ELB.Types.DescribeEndPointStateInput, callback?: (err: AWSError, data: ELB.Types.DescribeEndPointStateOutput) => void): Request; - /** - * Waits for the instanceDeregistered state by periodically calling the underlying ELB.describeInstanceHealthoperation every 15 seconds (at most 40 times). - */ - waitFor(state: "instanceDeregistered", callback?: (err: AWSError, data: ELB.Types.DescribeEndPointStateOutput) => void): Request; - /** - * Waits for the anyInstanceInService state by periodically calling the underlying ELB.describeInstanceHealthoperation every 15 seconds (at most 40 times). - */ - waitFor(state: "anyInstanceInService", params: ELB.Types.DescribeEndPointStateInput, callback?: (err: AWSError, data: ELB.Types.DescribeEndPointStateOutput) => void): Request; - /** - * Waits for the anyInstanceInService state by periodically calling the underlying ELB.describeInstanceHealthoperation every 15 seconds (at most 40 times). - */ - waitFor(state: "anyInstanceInService", callback?: (err: AWSError, data: ELB.Types.DescribeEndPointStateOutput) => void): Request; - /** - * Waits for the instanceInService state by periodically calling the underlying ELB.describeInstanceHealthoperation every 15 seconds (at most 40 times). - */ - waitFor(state: "instanceInService", params: ELB.Types.DescribeEndPointStateInput, callback?: (err: AWSError, data: ELB.Types.DescribeEndPointStateOutput) => void): Request; - /** - * Waits for the instanceInService state by periodically calling the underlying ELB.describeInstanceHealthoperation every 15 seconds (at most 40 times). - */ - waitFor(state: "instanceInService", callback?: (err: AWSError, data: ELB.Types.DescribeEndPointStateOutput) => void): Request; -} -declare namespace ELB { - export interface AccessLog { - /** - * Specifies whether access logs are enabled for the load balancer. - */ - Enabled: AccessLogEnabled; - /** - * The name of the Amazon S3 bucket where the access logs are stored. - */ - S3BucketName?: S3BucketName; - /** - * The interval for publishing the access logs. You can specify an interval of either 5 minutes or 60 minutes. Default: 60 minutes - */ - EmitInterval?: AccessLogInterval; - /** - * The logical hierarchy you created for your Amazon S3 bucket, for example my-bucket-prefix/prod. If the prefix is not provided, the log is placed at the root level of the bucket. - */ - S3BucketPrefix?: AccessLogPrefix; - } - export type AccessLogEnabled = boolean; - export type AccessLogInterval = number; - export type AccessLogPrefix = string; - export type AccessPointName = string; - export type AccessPointPort = number; - export interface AddAvailabilityZonesInput { - /** - * The name of the load balancer. - */ - LoadBalancerName: AccessPointName; - /** - * The Availability Zones. These must be in the same region as the load balancer. - */ - AvailabilityZones: AvailabilityZones; - } - export interface AddAvailabilityZonesOutput { - /** - * The updated list of Availability Zones for the load balancer. - */ - AvailabilityZones?: AvailabilityZones; - } - export interface AddTagsInput { - /** - * The name of the load balancer. You can specify one load balancer only. - */ - LoadBalancerNames: LoadBalancerNames; - /** - * The tags. - */ - Tags: TagList; - } - export interface AddTagsOutput { - } - export interface AdditionalAttribute { - /** - * This parameter is reserved. - */ - Key?: AdditionalAttributeKey; - /** - * This parameter is reserved. - */ - Value?: AdditionalAttributeValue; - } - export type AdditionalAttributeKey = string; - export type AdditionalAttributeValue = string; - export type AdditionalAttributes = AdditionalAttribute[]; - export type AppCookieStickinessPolicies = AppCookieStickinessPolicy[]; - export interface AppCookieStickinessPolicy { - /** - * The mnemonic name for the policy being created. The name must be unique within a set of policies for this load balancer. - */ - PolicyName?: PolicyName; - /** - * The name of the application cookie used for stickiness. - */ - CookieName?: CookieName; - } - export interface ApplySecurityGroupsToLoadBalancerInput { - /** - * The name of the load balancer. - */ - LoadBalancerName: AccessPointName; - /** - * The IDs of the security groups to associate with the load balancer. Note that you cannot specify the name of the security group. - */ - SecurityGroups: SecurityGroups; - } - export interface ApplySecurityGroupsToLoadBalancerOutput { - /** - * The IDs of the security groups associated with the load balancer. - */ - SecurityGroups?: SecurityGroups; - } - export interface AttachLoadBalancerToSubnetsInput { - /** - * The name of the load balancer. - */ - LoadBalancerName: AccessPointName; - /** - * The IDs of the subnets to add. You can add only one subnet per Availability Zone. - */ - Subnets: Subnets; - } - export interface AttachLoadBalancerToSubnetsOutput { - /** - * The IDs of the subnets attached to the load balancer. - */ - Subnets?: Subnets; - } - export type AttributeName = string; - export type AttributeType = string; - export type AttributeValue = string; - export type AvailabilityZone = string; - export type AvailabilityZones = AvailabilityZone[]; - export interface BackendServerDescription { - /** - * The port on which the EC2 instance is listening. - */ - InstancePort?: InstancePort; - /** - * The names of the policies enabled for the EC2 instance. - */ - PolicyNames?: PolicyNames; - } - export type BackendServerDescriptions = BackendServerDescription[]; - export type Cardinality = string; - export interface ConfigureHealthCheckInput { - /** - * The name of the load balancer. - */ - LoadBalancerName: AccessPointName; - /** - * The configuration information. - */ - HealthCheck: HealthCheck; - } - export interface ConfigureHealthCheckOutput { - /** - * The updated health check. - */ - HealthCheck?: HealthCheck; - } - export interface ConnectionDraining { - /** - * Specifies whether connection draining is enabled for the load balancer. - */ - Enabled: ConnectionDrainingEnabled; - /** - * The maximum time, in seconds, to keep the existing connections open before deregistering the instances. - */ - Timeout?: ConnectionDrainingTimeout; - } - export type ConnectionDrainingEnabled = boolean; - export type ConnectionDrainingTimeout = number; - export interface ConnectionSettings { - /** - * The time, in seconds, that the connection is allowed to be idle (no data has been sent over the connection) before it is closed by the load balancer. - */ - IdleTimeout: IdleTimeout; - } - export type CookieExpirationPeriod = number; - export type CookieName = string; - export interface CreateAccessPointInput { - /** - * The name of the load balancer. This name must be unique within your set of load balancers for the region, must have a maximum of 32 characters, must contain only alphanumeric characters or hyphens, and cannot begin or end with a hyphen. - */ - LoadBalancerName: AccessPointName; - /** - * The listeners. For more information, see Listeners for Your Classic Load Balancer in the Classic Load Balancer Guide. - */ - Listeners: Listeners; - /** - * One or more Availability Zones from the same region as the load balancer. You must specify at least one Availability Zone. You can add more Availability Zones after you create the load balancer using EnableAvailabilityZonesForLoadBalancer. - */ - AvailabilityZones?: AvailabilityZones; - /** - * The IDs of the subnets in your VPC to attach to the load balancer. Specify one subnet per Availability Zone specified in AvailabilityZones. - */ - Subnets?: Subnets; - /** - * The IDs of the security groups to assign to the load balancer. - */ - SecurityGroups?: SecurityGroups; - /** - * The type of a load balancer. Valid only for load balancers in a VPC. By default, Elastic Load Balancing creates an Internet-facing load balancer with a DNS name that resolves to public IP addresses. For more information about Internet-facing and Internal load balancers, see Load Balancer Scheme in the Elastic Load Balancing User Guide. Specify internal to create a load balancer with a DNS name that resolves to private IP addresses. - */ - Scheme?: LoadBalancerScheme; - /** - * A list of tags to assign to the load balancer. For more information about tagging your load balancer, see Tag Your Classic Load Balancer in the Classic Load Balancer Guide. - */ - Tags?: TagList; - } - export interface CreateAccessPointOutput { - /** - * The DNS name of the load balancer. - */ - DNSName?: DNSName; - } - export interface CreateAppCookieStickinessPolicyInput { - /** - * The name of the load balancer. - */ - LoadBalancerName: AccessPointName; - /** - * The name of the policy being created. Policy names must consist of alphanumeric characters and dashes (-). This name must be unique within the set of policies for this load balancer. - */ - PolicyName: PolicyName; - /** - * The name of the application cookie used for stickiness. - */ - CookieName: CookieName; - } - export interface CreateAppCookieStickinessPolicyOutput { - } - export interface CreateLBCookieStickinessPolicyInput { - /** - * The name of the load balancer. - */ - LoadBalancerName: AccessPointName; - /** - * The name of the policy being created. Policy names must consist of alphanumeric characters and dashes (-). This name must be unique within the set of policies for this load balancer. - */ - PolicyName: PolicyName; - /** - * The time period, in seconds, after which the cookie should be considered stale. If you do not specify this parameter, the default value is 0, which indicates that the sticky session should last for the duration of the browser session. - */ - CookieExpirationPeriod?: CookieExpirationPeriod; - } - export interface CreateLBCookieStickinessPolicyOutput { - } - export interface CreateLoadBalancerListenerInput { - /** - * The name of the load balancer. - */ - LoadBalancerName: AccessPointName; - /** - * The listeners. - */ - Listeners: Listeners; - } - export interface CreateLoadBalancerListenerOutput { - } - export interface CreateLoadBalancerPolicyInput { - /** - * The name of the load balancer. - */ - LoadBalancerName: AccessPointName; - /** - * The name of the load balancer policy to be created. This name must be unique within the set of policies for this load balancer. - */ - PolicyName: PolicyName; - /** - * The name of the base policy type. To get the list of policy types, use DescribeLoadBalancerPolicyTypes. - */ - PolicyTypeName: PolicyTypeName; - /** - * The policy attributes. - */ - PolicyAttributes?: PolicyAttributes; - } - export interface CreateLoadBalancerPolicyOutput { - } - export type CreatedTime = Date; - export interface CrossZoneLoadBalancing { - /** - * Specifies whether cross-zone load balancing is enabled for the load balancer. - */ - Enabled: CrossZoneLoadBalancingEnabled; - } - export type CrossZoneLoadBalancingEnabled = boolean; - export type DNSName = string; - export type DefaultValue = string; - export interface DeleteAccessPointInput { - /** - * The name of the load balancer. - */ - LoadBalancerName: AccessPointName; - } - export interface DeleteAccessPointOutput { - } - export interface DeleteLoadBalancerListenerInput { - /** - * The name of the load balancer. - */ - LoadBalancerName: AccessPointName; - /** - * The client port numbers of the listeners. - */ - LoadBalancerPorts: Ports; - } - export interface DeleteLoadBalancerListenerOutput { - } - export interface DeleteLoadBalancerPolicyInput { - /** - * The name of the load balancer. - */ - LoadBalancerName: AccessPointName; - /** - * The name of the policy. - */ - PolicyName: PolicyName; - } - export interface DeleteLoadBalancerPolicyOutput { - } - export interface DeregisterEndPointsInput { - /** - * The name of the load balancer. - */ - LoadBalancerName: AccessPointName; - /** - * The IDs of the instances. - */ - Instances: Instances; - } - export interface DeregisterEndPointsOutput { - /** - * The remaining instances registered with the load balancer. - */ - Instances?: Instances; - } - export interface DescribeAccessPointsInput { - /** - * The names of the load balancers. - */ - LoadBalancerNames?: LoadBalancerNames; - /** - * The marker for the next set of results. (You received this marker from a previous call.) - */ - Marker?: Marker; - /** - * The maximum number of results to return with this call (a number from 1 to 400). The default is 400. - */ - PageSize?: PageSize; - } - export interface DescribeAccessPointsOutput { - /** - * Information about the load balancers. - */ - LoadBalancerDescriptions?: LoadBalancerDescriptions; - /** - * The marker to use when requesting the next set of results. If there are no additional results, the string is empty. - */ - NextMarker?: Marker; - } - export interface DescribeAccountLimitsInput { - /** - * The marker for the next set of results. (You received this marker from a previous call.) - */ - Marker?: Marker; - /** - * The maximum number of results to return with this call. - */ - PageSize?: PageSize; - } - export interface DescribeAccountLimitsOutput { - /** - * Information about the limits. - */ - Limits?: Limits; - /** - * The marker to use when requesting the next set of results. If there are no additional results, the string is empty. - */ - NextMarker?: Marker; - } - export interface DescribeEndPointStateInput { - /** - * The name of the load balancer. - */ - LoadBalancerName: AccessPointName; - /** - * The IDs of the instances. - */ - Instances?: Instances; - } - export interface DescribeEndPointStateOutput { - /** - * Information about the health of the instances. - */ - InstanceStates?: InstanceStates; - } - export interface DescribeLoadBalancerAttributesInput { - /** - * The name of the load balancer. - */ - LoadBalancerName: AccessPointName; - } - export interface DescribeLoadBalancerAttributesOutput { - /** - * Information about the load balancer attributes. - */ - LoadBalancerAttributes?: LoadBalancerAttributes; - } - export interface DescribeLoadBalancerPoliciesInput { - /** - * The name of the load balancer. - */ - LoadBalancerName?: AccessPointName; - /** - * The names of the policies. - */ - PolicyNames?: PolicyNames; - } - export interface DescribeLoadBalancerPoliciesOutput { - /** - * Information about the policies. - */ - PolicyDescriptions?: PolicyDescriptions; - } - export interface DescribeLoadBalancerPolicyTypesInput { - /** - * The names of the policy types. If no names are specified, describes all policy types defined by Elastic Load Balancing. - */ - PolicyTypeNames?: PolicyTypeNames; - } - export interface DescribeLoadBalancerPolicyTypesOutput { - /** - * Information about the policy types. - */ - PolicyTypeDescriptions?: PolicyTypeDescriptions; - } - export interface DescribeTagsInput { - /** - * The names of the load balancers. - */ - LoadBalancerNames: LoadBalancerNamesMax20; - } - export interface DescribeTagsOutput { - /** - * Information about the tags. - */ - TagDescriptions?: TagDescriptions; - } - export type Description = string; - export interface DetachLoadBalancerFromSubnetsInput { - /** - * The name of the load balancer. - */ - LoadBalancerName: AccessPointName; - /** - * The IDs of the subnets. - */ - Subnets: Subnets; - } - export interface DetachLoadBalancerFromSubnetsOutput { - /** - * The IDs of the remaining subnets for the load balancer. - */ - Subnets?: Subnets; - } - export type EndPointPort = number; - export interface HealthCheck { - /** - * The instance being checked. The protocol is either TCP, HTTP, HTTPS, or SSL. The range of valid ports is one (1) through 65535. TCP is the default, specified as a TCP: port pair, for example "TCP:5000". In this case, a health check simply attempts to open a TCP connection to the instance on the specified port. Failure to connect within the configured timeout is considered unhealthy. SSL is also specified as SSL: port pair, for example, SSL:5000. For HTTP/HTTPS, you must include a ping path in the string. HTTP is specified as a HTTP:port;/;PathToPing; grouping, for example "HTTP:80/weather/us/wa/seattle". In this case, a HTTP GET request is issued to the instance on the given port and path. Any answer other than "200 OK" within the timeout period is considered unhealthy. The total length of the HTTP ping target must be 1024 16-bit Unicode characters or less. - */ - Target: HealthCheckTarget; - /** - * The approximate interval, in seconds, between health checks of an individual instance. - */ - Interval: HealthCheckInterval; - /** - * The amount of time, in seconds, during which no response means a failed health check. This value must be less than the Interval value. - */ - Timeout: HealthCheckTimeout; - /** - * The number of consecutive health check failures required before moving the instance to the Unhealthy state. - */ - UnhealthyThreshold: UnhealthyThreshold; - /** - * The number of consecutive health checks successes required before moving the instance to the Healthy state. - */ - HealthyThreshold: HealthyThreshold; - } - export type HealthCheckInterval = number; - export type HealthCheckTarget = string; - export type HealthCheckTimeout = number; - export type HealthyThreshold = number; - export type IdleTimeout = number; - export interface Instance { - /** - * The instance ID. - */ - InstanceId?: InstanceId; - } - export type InstanceId = string; - export type InstancePort = number; - export interface InstanceState { - /** - * The ID of the instance. - */ - InstanceId?: InstanceId; - /** - * The current state of the instance. Valid values: InService | OutOfService | Unknown - */ - State?: State; - /** - * Information about the cause of OutOfService instances. Specifically, whether the cause is Elastic Load Balancing or the instance. Valid values: ELB | Instance | N/A - */ - ReasonCode?: ReasonCode; - /** - * A description of the instance state. This string can contain one or more of the following messages. N/A A transient error occurred. Please try again later. Instance has failed at least the UnhealthyThreshold number of health checks consecutively. Instance has not passed the configured HealthyThreshold number of health checks consecutively. Instance registration is still in progress. Instance is in the EC2 Availability Zone for which LoadBalancer is not configured to route traffic to. Instance is not currently registered with the LoadBalancer. Instance deregistration currently in progress. Disable Availability Zone is currently in progress. Instance is in pending state. Instance is in stopped state. Instance is in terminated state. - */ - Description?: Description; - } - export type InstanceStates = InstanceState[]; - export type Instances = Instance[]; - export type LBCookieStickinessPolicies = LBCookieStickinessPolicy[]; - export interface LBCookieStickinessPolicy { - /** - * The name of the policy. This name must be unique within the set of policies for this load balancer. - */ - PolicyName?: PolicyName; - /** - * The time period, in seconds, after which the cookie should be considered stale. If this parameter is not specified, the stickiness session lasts for the duration of the browser session. - */ - CookieExpirationPeriod?: CookieExpirationPeriod; - } - export interface Limit { - /** - * The name of the limit. The possible values are: classic-listeners classic-load-balancers - */ - Name?: Name; - /** - * The maximum value of the limit. - */ - Max?: Max; - } - export type Limits = Limit[]; - export interface Listener { - /** - * The load balancer transport protocol to use for routing: HTTP, HTTPS, TCP, or SSL. - */ - Protocol: Protocol; - /** - * The port on which the load balancer is listening. On EC2-VPC, you can specify any port from the range 1-65535. On EC2-Classic, you can specify any port from the following list: 25, 80, 443, 465, 587, 1024-65535. - */ - LoadBalancerPort: AccessPointPort; - /** - * The protocol to use for routing traffic to instances: HTTP, HTTPS, TCP, or SSL. If the front-end protocol is HTTP, HTTPS, TCP, or SSL, InstanceProtocol must be at the same protocol. If there is another listener with the same InstancePort whose InstanceProtocol is secure, (HTTPS or SSL), the listener's InstanceProtocol must also be secure. If there is another listener with the same InstancePort whose InstanceProtocol is HTTP or TCP, the listener's InstanceProtocol must be HTTP or TCP. - */ - InstanceProtocol?: Protocol; - /** - * The port on which the instance is listening. - */ - InstancePort: InstancePort; - /** - * The Amazon Resource Name (ARN) of the server certificate. - */ - SSLCertificateId?: SSLCertificateId; - } - export interface ListenerDescription { - /** - * The listener. - */ - Listener?: Listener; - /** - * The policies. If there are no policies enabled, the list is empty. - */ - PolicyNames?: PolicyNames; - } - export type ListenerDescriptions = ListenerDescription[]; - export type Listeners = Listener[]; - export interface LoadBalancerAttributes { - /** - * If enabled, the load balancer routes the request traffic evenly across all instances regardless of the Availability Zones. For more information, see Configure Cross-Zone Load Balancing in the Classic Load Balancer Guide. - */ - CrossZoneLoadBalancing?: CrossZoneLoadBalancing; - /** - * If enabled, the load balancer captures detailed information of all requests and delivers the information to the Amazon S3 bucket that you specify. For more information, see Enable Access Logs in the Classic Load Balancer Guide. - */ - AccessLog?: AccessLog; - /** - * If enabled, the load balancer allows existing requests to complete before the load balancer shifts traffic away from a deregistered or unhealthy instance. For more information, see Configure Connection Draining in the Classic Load Balancer Guide. - */ - ConnectionDraining?: ConnectionDraining; - /** - * If enabled, the load balancer allows the connections to remain idle (no data is sent over the connection) for the specified duration. By default, Elastic Load Balancing maintains a 60-second idle connection timeout for both front-end and back-end connections of your load balancer. For more information, see Configure Idle Connection Timeout in the Classic Load Balancer Guide. - */ - ConnectionSettings?: ConnectionSettings; - /** - * This parameter is reserved. - */ - AdditionalAttributes?: AdditionalAttributes; - } - export interface LoadBalancerDescription { - /** - * The name of the load balancer. - */ - LoadBalancerName?: AccessPointName; - /** - * The DNS name of the load balancer. - */ - DNSName?: DNSName; - /** - * The DNS name of the load balancer. For more information, see Configure a Custom Domain Name in the Classic Load Balancer Guide. - */ - CanonicalHostedZoneName?: DNSName; - /** - * The ID of the Amazon Route 53 hosted zone for the load balancer. - */ - CanonicalHostedZoneNameID?: DNSName; - /** - * The listeners for the load balancer. - */ - ListenerDescriptions?: ListenerDescriptions; - /** - * The policies defined for the load balancer. - */ - Policies?: Policies; - /** - * Information about your EC2 instances. - */ - BackendServerDescriptions?: BackendServerDescriptions; - /** - * The Availability Zones for the load balancer. - */ - AvailabilityZones?: AvailabilityZones; - /** - * The IDs of the subnets for the load balancer. - */ - Subnets?: Subnets; - /** - * The ID of the VPC for the load balancer. - */ - VPCId?: VPCId; - /** - * The IDs of the instances for the load balancer. - */ - Instances?: Instances; - /** - * Information about the health checks conducted on the load balancer. - */ - HealthCheck?: HealthCheck; - /** - * The security group for the load balancer, which you can use as part of your inbound rules for your registered instances. To only allow traffic from load balancers, add a security group rule that specifies this source security group as the inbound source. - */ - SourceSecurityGroup?: SourceSecurityGroup; - /** - * The security groups for the load balancer. Valid only for load balancers in a VPC. - */ - SecurityGroups?: SecurityGroups; - /** - * The date and time the load balancer was created. - */ - CreatedTime?: CreatedTime; - /** - * The type of load balancer. Valid only for load balancers in a VPC. If Scheme is internet-facing, the load balancer has a public DNS name that resolves to a public IP address. If Scheme is internal, the load balancer has a public DNS name that resolves to a private IP address. - */ - Scheme?: LoadBalancerScheme; - } - export type LoadBalancerDescriptions = LoadBalancerDescription[]; - export type LoadBalancerNames = AccessPointName[]; - export type LoadBalancerNamesMax20 = AccessPointName[]; - export type LoadBalancerScheme = string; - export type Marker = string; - export type Max = string; - export interface ModifyLoadBalancerAttributesInput { - /** - * The name of the load balancer. - */ - LoadBalancerName: AccessPointName; - /** - * The attributes for the load balancer. - */ - LoadBalancerAttributes: LoadBalancerAttributes; - } - export interface ModifyLoadBalancerAttributesOutput { - /** - * The name of the load balancer. - */ - LoadBalancerName?: AccessPointName; - /** - * Information about the load balancer attributes. - */ - LoadBalancerAttributes?: LoadBalancerAttributes; - } - export type Name = string; - export type PageSize = number; - export interface Policies { - /** - * The stickiness policies created using CreateAppCookieStickinessPolicy. - */ - AppCookieStickinessPolicies?: AppCookieStickinessPolicies; - /** - * The stickiness policies created using CreateLBCookieStickinessPolicy. - */ - LBCookieStickinessPolicies?: LBCookieStickinessPolicies; - /** - * The policies other than the stickiness policies. - */ - OtherPolicies?: PolicyNames; - } - export interface PolicyAttribute { - /** - * The name of the attribute. - */ - AttributeName?: AttributeName; - /** - * The value of the attribute. - */ - AttributeValue?: AttributeValue; - } - export interface PolicyAttributeDescription { - /** - * The name of the attribute. - */ - AttributeName?: AttributeName; - /** - * The value of the attribute. - */ - AttributeValue?: AttributeValue; - } - export type PolicyAttributeDescriptions = PolicyAttributeDescription[]; - export interface PolicyAttributeTypeDescription { - /** - * The name of the attribute. - */ - AttributeName?: AttributeName; - /** - * The type of the attribute. For example, Boolean or Integer. - */ - AttributeType?: AttributeType; - /** - * A description of the attribute. - */ - Description?: Description; - /** - * The default value of the attribute, if applicable. - */ - DefaultValue?: DefaultValue; - /** - * The cardinality of the attribute. Valid values: ONE(1) : Single value required ZERO_OR_ONE(0..1) : Up to one value is allowed ZERO_OR_MORE(0..*) : Optional. Multiple values are allowed ONE_OR_MORE(1..*0) : Required. Multiple values are allowed - */ - Cardinality?: Cardinality; - } - export type PolicyAttributeTypeDescriptions = PolicyAttributeTypeDescription[]; - export type PolicyAttributes = PolicyAttribute[]; - export interface PolicyDescription { - /** - * The name of the policy. - */ - PolicyName?: PolicyName; - /** - * The name of the policy type. - */ - PolicyTypeName?: PolicyTypeName; - /** - * The policy attributes. - */ - PolicyAttributeDescriptions?: PolicyAttributeDescriptions; - } - export type PolicyDescriptions = PolicyDescription[]; - export type PolicyName = string; - export type PolicyNames = PolicyName[]; - export interface PolicyTypeDescription { - /** - * The name of the policy type. - */ - PolicyTypeName?: PolicyTypeName; - /** - * A description of the policy type. - */ - Description?: Description; - /** - * The description of the policy attributes associated with the policies defined by Elastic Load Balancing. - */ - PolicyAttributeTypeDescriptions?: PolicyAttributeTypeDescriptions; - } - export type PolicyTypeDescriptions = PolicyTypeDescription[]; - export type PolicyTypeName = string; - export type PolicyTypeNames = PolicyTypeName[]; - export type Ports = AccessPointPort[]; - export type Protocol = string; - export type ReasonCode = string; - export interface RegisterEndPointsInput { - /** - * The name of the load balancer. - */ - LoadBalancerName: AccessPointName; - /** - * The IDs of the instances. - */ - Instances: Instances; - } - export interface RegisterEndPointsOutput { - /** - * The updated list of instances for the load balancer. - */ - Instances?: Instances; - } - export interface RemoveAvailabilityZonesInput { - /** - * The name of the load balancer. - */ - LoadBalancerName: AccessPointName; - /** - * The Availability Zones. - */ - AvailabilityZones: AvailabilityZones; - } - export interface RemoveAvailabilityZonesOutput { - /** - * The remaining Availability Zones for the load balancer. - */ - AvailabilityZones?: AvailabilityZones; - } - export interface RemoveTagsInput { - /** - * The name of the load balancer. You can specify a maximum of one load balancer name. - */ - LoadBalancerNames: LoadBalancerNames; - /** - * The list of tag keys to remove. - */ - Tags: TagKeyList; - } - export interface RemoveTagsOutput { - } - export type S3BucketName = string; - export type SSLCertificateId = string; - export type SecurityGroupId = string; - export type SecurityGroupName = string; - export type SecurityGroupOwnerAlias = string; - export type SecurityGroups = SecurityGroupId[]; - export interface SetLoadBalancerListenerSSLCertificateInput { - /** - * The name of the load balancer. - */ - LoadBalancerName: AccessPointName; - /** - * The port that uses the specified SSL certificate. - */ - LoadBalancerPort: AccessPointPort; - /** - * The Amazon Resource Name (ARN) of the SSL certificate. - */ - SSLCertificateId: SSLCertificateId; - } - export interface SetLoadBalancerListenerSSLCertificateOutput { - } - export interface SetLoadBalancerPoliciesForBackendServerInput { - /** - * The name of the load balancer. - */ - LoadBalancerName: AccessPointName; - /** - * The port number associated with the EC2 instance. - */ - InstancePort: EndPointPort; - /** - * The names of the policies. If the list is empty, then all current polices are removed from the EC2 instance. - */ - PolicyNames: PolicyNames; - } - export interface SetLoadBalancerPoliciesForBackendServerOutput { - } - export interface SetLoadBalancerPoliciesOfListenerInput { - /** - * The name of the load balancer. - */ - LoadBalancerName: AccessPointName; - /** - * The external port of the load balancer. - */ - LoadBalancerPort: AccessPointPort; - /** - * The names of the policies. This list must include all policies to be enabled. If you omit a policy that is currently enabled, it is disabled. If the list is empty, all current policies are disabled. - */ - PolicyNames: PolicyNames; - } - export interface SetLoadBalancerPoliciesOfListenerOutput { - } - export interface SourceSecurityGroup { - /** - * The owner of the security group. - */ - OwnerAlias?: SecurityGroupOwnerAlias; - /** - * The name of the security group. - */ - GroupName?: SecurityGroupName; - } - export type State = string; - export type SubnetId = string; - export type Subnets = SubnetId[]; - export interface Tag { - /** - * The key of the tag. - */ - Key: TagKey; - /** - * The value of the tag. - */ - Value?: TagValue; - } - export interface TagDescription { - /** - * The name of the load balancer. - */ - LoadBalancerName?: AccessPointName; - /** - * The tags. - */ - Tags?: TagList; - } - export type TagDescriptions = TagDescription[]; - export type TagKey = string; - export type TagKeyList = TagKeyOnly[]; - export interface TagKeyOnly { - /** - * The name of the key. - */ - Key?: TagKey; - } - export type TagList = Tag[]; - export type TagValue = string; - export type UnhealthyThreshold = number; - export type VPCId = string; - /** - * A string in YYYY-MM-DD format that represents the latest possible API version that can be used in this service. Specify 'latest' to use the latest possible version. - */ - export type apiVersion = "2012-06-01"|"latest"|string; - export interface ClientApiVersions { - /** - * A string in YYYY-MM-DD format that represents the latest possible API version that can be used in this service. Specify 'latest' to use the latest possible version. - */ - apiVersion?: apiVersion; - } - export type ClientConfiguration = ServiceConfigurationOptions & ClientApiVersions; - /** - * Contains interfaces for use with the ELB client. - */ - export import Types = ELB; -} -export = ELB; diff --git a/workshops/monte-carlo-on-ec2-spot-fleet/src/web/node_modules/aws-sdk/clients/elb.js b/workshops/monte-carlo-on-ec2-spot-fleet/src/web/node_modules/aws-sdk/clients/elb.js deleted file mode 100644 index 361acbb5..00000000 --- a/workshops/monte-carlo-on-ec2-spot-fleet/src/web/node_modules/aws-sdk/clients/elb.js +++ /dev/null @@ -1,19 +0,0 @@ -require('../lib/node_loader'); -var AWS = require('../lib/core'); -var Service = AWS.Service; -var apiLoader = AWS.apiLoader; - -apiLoader.services['elb'] = {}; -AWS.ELB = Service.defineService('elb', ['2012-06-01']); -Object.defineProperty(apiLoader.services['elb'], '2012-06-01', { - get: function get() { - var model = require('../apis/elasticloadbalancing-2012-06-01.min.json'); - model.paginators = require('../apis/elasticloadbalancing-2012-06-01.paginators.json').pagination; - model.waiters = require('../apis/elasticloadbalancing-2012-06-01.waiters2.json').waiters; - return model; - }, - enumerable: true, - configurable: true -}); - -module.exports = AWS.ELB; diff --git a/workshops/monte-carlo-on-ec2-spot-fleet/src/web/node_modules/aws-sdk/clients/elbv2.d.ts b/workshops/monte-carlo-on-ec2-spot-fleet/src/web/node_modules/aws-sdk/clients/elbv2.d.ts deleted file mode 100644 index 35f1d83e..00000000 --- a/workshops/monte-carlo-on-ec2-spot-fleet/src/web/node_modules/aws-sdk/clients/elbv2.d.ts +++ /dev/null @@ -1,1495 +0,0 @@ -import {Request} from '../lib/request'; -import {Response} from '../lib/response'; -import {AWSError} from '../lib/error'; -import {Service} from '../lib/service'; -import {ServiceConfigurationOptions} from '../lib/service'; -import {ConfigBase as Config} from '../lib/config'; -interface Blob {} -declare class ELBv2 extends Service { - /** - * Constructs a service object. This object has one method for each API operation. - */ - constructor(options?: ELBv2.Types.ClientConfiguration) - config: Config & ELBv2.Types.ClientConfiguration; - /** - * Adds the specified certificate to the specified secure listener. If the certificate was already added, the call is successful but the certificate is not added again. To list the certificates for your listener, use DescribeListenerCertificates. To remove certificates from your listener, use RemoveListenerCertificates. - */ - addListenerCertificates(params: ELBv2.Types.AddListenerCertificatesInput, callback?: (err: AWSError, data: ELBv2.Types.AddListenerCertificatesOutput) => void): Request; - /** - * Adds the specified certificate to the specified secure listener. If the certificate was already added, the call is successful but the certificate is not added again. To list the certificates for your listener, use DescribeListenerCertificates. To remove certificates from your listener, use RemoveListenerCertificates. - */ - addListenerCertificates(callback?: (err: AWSError, data: ELBv2.Types.AddListenerCertificatesOutput) => void): Request; - /** - * Adds the specified tags to the specified Elastic Load Balancing resource. You can tag your Application Load Balancers, Network Load Balancers, and your target groups. Each tag consists of a key and an optional value. If a resource already has a tag with the same key, AddTags updates its value. To list the current tags for your resources, use DescribeTags. To remove tags from your resources, use RemoveTags. - */ - addTags(params: ELBv2.Types.AddTagsInput, callback?: (err: AWSError, data: ELBv2.Types.AddTagsOutput) => void): Request; - /** - * Adds the specified tags to the specified Elastic Load Balancing resource. You can tag your Application Load Balancers, Network Load Balancers, and your target groups. Each tag consists of a key and an optional value. If a resource already has a tag with the same key, AddTags updates its value. To list the current tags for your resources, use DescribeTags. To remove tags from your resources, use RemoveTags. - */ - addTags(callback?: (err: AWSError, data: ELBv2.Types.AddTagsOutput) => void): Request; - /** - * Creates a listener for the specified Application Load Balancer or Network Load Balancer. You can create up to 10 listeners per load balancer. To update a listener, use ModifyListener. When you are finished with a listener, you can delete it using DeleteListener. If you are finished with both the listener and the load balancer, you can delete them both using DeleteLoadBalancer. For more information, see Listeners for Your Application Load Balancers in the Application Load Balancers Guide and Listeners for Your Network Load Balancers in the Network Load Balancers Guide. - */ - createListener(params: ELBv2.Types.CreateListenerInput, callback?: (err: AWSError, data: ELBv2.Types.CreateListenerOutput) => void): Request; - /** - * Creates a listener for the specified Application Load Balancer or Network Load Balancer. You can create up to 10 listeners per load balancer. To update a listener, use ModifyListener. When you are finished with a listener, you can delete it using DeleteListener. If you are finished with both the listener and the load balancer, you can delete them both using DeleteLoadBalancer. For more information, see Listeners for Your Application Load Balancers in the Application Load Balancers Guide and Listeners for Your Network Load Balancers in the Network Load Balancers Guide. - */ - createListener(callback?: (err: AWSError, data: ELBv2.Types.CreateListenerOutput) => void): Request; - /** - * Creates an Application Load Balancer or a Network Load Balancer. When you create a load balancer, you can specify security groups, subnets, IP address type, and tags. Otherwise, you could do so later using SetSecurityGroups, SetSubnets, SetIpAddressType, and AddTags. To create listeners for your load balancer, use CreateListener. To describe your current load balancers, see DescribeLoadBalancers. When you are finished with a load balancer, you can delete it using DeleteLoadBalancer. You can create up to 20 load balancers per region per account. You can request an increase for the number of load balancers for your account. For more information, see Limits for Your Application Load Balancer in the Application Load Balancers Guide and Limits for Your Network Load Balancer in the Network Load Balancers Guide. For more information, see Application Load Balancers in the Application Load Balancers Guide and Network Load Balancers in the Network Load Balancers Guide. - */ - createLoadBalancer(params: ELBv2.Types.CreateLoadBalancerInput, callback?: (err: AWSError, data: ELBv2.Types.CreateLoadBalancerOutput) => void): Request; - /** - * Creates an Application Load Balancer or a Network Load Balancer. When you create a load balancer, you can specify security groups, subnets, IP address type, and tags. Otherwise, you could do so later using SetSecurityGroups, SetSubnets, SetIpAddressType, and AddTags. To create listeners for your load balancer, use CreateListener. To describe your current load balancers, see DescribeLoadBalancers. When you are finished with a load balancer, you can delete it using DeleteLoadBalancer. You can create up to 20 load balancers per region per account. You can request an increase for the number of load balancers for your account. For more information, see Limits for Your Application Load Balancer in the Application Load Balancers Guide and Limits for Your Network Load Balancer in the Network Load Balancers Guide. For more information, see Application Load Balancers in the Application Load Balancers Guide and Network Load Balancers in the Network Load Balancers Guide. - */ - createLoadBalancer(callback?: (err: AWSError, data: ELBv2.Types.CreateLoadBalancerOutput) => void): Request; - /** - * Creates a rule for the specified listener. The listener must be associated with an Application Load Balancer. Rules are evaluated in priority order, from the lowest value to the highest value. When the condition for a rule is met, the specified action is taken. If no conditions are met, the action for the default rule is taken. For more information, see Listener Rules in the Application Load Balancers Guide. To view your current rules, use DescribeRules. To update a rule, use ModifyRule. To set the priorities of your rules, use SetRulePriorities. To delete a rule, use DeleteRule. - */ - createRule(params: ELBv2.Types.CreateRuleInput, callback?: (err: AWSError, data: ELBv2.Types.CreateRuleOutput) => void): Request; - /** - * Creates a rule for the specified listener. The listener must be associated with an Application Load Balancer. Rules are evaluated in priority order, from the lowest value to the highest value. When the condition for a rule is met, the specified action is taken. If no conditions are met, the action for the default rule is taken. For more information, see Listener Rules in the Application Load Balancers Guide. To view your current rules, use DescribeRules. To update a rule, use ModifyRule. To set the priorities of your rules, use SetRulePriorities. To delete a rule, use DeleteRule. - */ - createRule(callback?: (err: AWSError, data: ELBv2.Types.CreateRuleOutput) => void): Request; - /** - * Creates a target group. To register targets with the target group, use RegisterTargets. To update the health check settings for the target group, use ModifyTargetGroup. To monitor the health of targets in the target group, use DescribeTargetHealth. To route traffic to the targets in a target group, specify the target group in an action using CreateListener or CreateRule. To delete a target group, use DeleteTargetGroup. For more information, see Target Groups for Your Application Load Balancers in the Application Load Balancers Guide or Target Groups for Your Network Load Balancers in the Network Load Balancers Guide. - */ - createTargetGroup(params: ELBv2.Types.CreateTargetGroupInput, callback?: (err: AWSError, data: ELBv2.Types.CreateTargetGroupOutput) => void): Request; - /** - * Creates a target group. To register targets with the target group, use RegisterTargets. To update the health check settings for the target group, use ModifyTargetGroup. To monitor the health of targets in the target group, use DescribeTargetHealth. To route traffic to the targets in a target group, specify the target group in an action using CreateListener or CreateRule. To delete a target group, use DeleteTargetGroup. For more information, see Target Groups for Your Application Load Balancers in the Application Load Balancers Guide or Target Groups for Your Network Load Balancers in the Network Load Balancers Guide. - */ - createTargetGroup(callback?: (err: AWSError, data: ELBv2.Types.CreateTargetGroupOutput) => void): Request; - /** - * Deletes the specified listener. Alternatively, your listener is deleted when you delete the load balancer it is attached to using DeleteLoadBalancer. - */ - deleteListener(params: ELBv2.Types.DeleteListenerInput, callback?: (err: AWSError, data: ELBv2.Types.DeleteListenerOutput) => void): Request; - /** - * Deletes the specified listener. Alternatively, your listener is deleted when you delete the load balancer it is attached to using DeleteLoadBalancer. - */ - deleteListener(callback?: (err: AWSError, data: ELBv2.Types.DeleteListenerOutput) => void): Request; - /** - * Deletes the specified Application Load Balancer or Network Load Balancer and its attached listeners. You can't delete a load balancer if deletion protection is enabled. If the load balancer does not exist or has already been deleted, the call succeeds. Deleting a load balancer does not affect its registered targets. For example, your EC2 instances continue to run and are still registered to their target groups. If you no longer need these EC2 instances, you can stop or terminate them. - */ - deleteLoadBalancer(params: ELBv2.Types.DeleteLoadBalancerInput, callback?: (err: AWSError, data: ELBv2.Types.DeleteLoadBalancerOutput) => void): Request; - /** - * Deletes the specified Application Load Balancer or Network Load Balancer and its attached listeners. You can't delete a load balancer if deletion protection is enabled. If the load balancer does not exist or has already been deleted, the call succeeds. Deleting a load balancer does not affect its registered targets. For example, your EC2 instances continue to run and are still registered to their target groups. If you no longer need these EC2 instances, you can stop or terminate them. - */ - deleteLoadBalancer(callback?: (err: AWSError, data: ELBv2.Types.DeleteLoadBalancerOutput) => void): Request; - /** - * Deletes the specified rule. - */ - deleteRule(params: ELBv2.Types.DeleteRuleInput, callback?: (err: AWSError, data: ELBv2.Types.DeleteRuleOutput) => void): Request; - /** - * Deletes the specified rule. - */ - deleteRule(callback?: (err: AWSError, data: ELBv2.Types.DeleteRuleOutput) => void): Request; - /** - * Deletes the specified target group. You can delete a target group if it is not referenced by any actions. Deleting a target group also deletes any associated health checks. - */ - deleteTargetGroup(params: ELBv2.Types.DeleteTargetGroupInput, callback?: (err: AWSError, data: ELBv2.Types.DeleteTargetGroupOutput) => void): Request; - /** - * Deletes the specified target group. You can delete a target group if it is not referenced by any actions. Deleting a target group also deletes any associated health checks. - */ - deleteTargetGroup(callback?: (err: AWSError, data: ELBv2.Types.DeleteTargetGroupOutput) => void): Request; - /** - * Deregisters the specified targets from the specified target group. After the targets are deregistered, they no longer receive traffic from the load balancer. - */ - deregisterTargets(params: ELBv2.Types.DeregisterTargetsInput, callback?: (err: AWSError, data: ELBv2.Types.DeregisterTargetsOutput) => void): Request; - /** - * Deregisters the specified targets from the specified target group. After the targets are deregistered, they no longer receive traffic from the load balancer. - */ - deregisterTargets(callback?: (err: AWSError, data: ELBv2.Types.DeregisterTargetsOutput) => void): Request; - /** - * Describes the current Elastic Load Balancing resource limits for your AWS account. For more information, see Limits for Your Application Load Balancers in the Application Load Balancer Guide or Limits for Your Network Load Balancers in the Network Load Balancers Guide. - */ - describeAccountLimits(params: ELBv2.Types.DescribeAccountLimitsInput, callback?: (err: AWSError, data: ELBv2.Types.DescribeAccountLimitsOutput) => void): Request; - /** - * Describes the current Elastic Load Balancing resource limits for your AWS account. For more information, see Limits for Your Application Load Balancers in the Application Load Balancer Guide or Limits for Your Network Load Balancers in the Network Load Balancers Guide. - */ - describeAccountLimits(callback?: (err: AWSError, data: ELBv2.Types.DescribeAccountLimitsOutput) => void): Request; - /** - * Describes the certificates for the specified secure listener. - */ - describeListenerCertificates(params: ELBv2.Types.DescribeListenerCertificatesInput, callback?: (err: AWSError, data: ELBv2.Types.DescribeListenerCertificatesOutput) => void): Request; - /** - * Describes the certificates for the specified secure listener. - */ - describeListenerCertificates(callback?: (err: AWSError, data: ELBv2.Types.DescribeListenerCertificatesOutput) => void): Request; - /** - * Describes the specified listeners or the listeners for the specified Application Load Balancer or Network Load Balancer. You must specify either a load balancer or one or more listeners. - */ - describeListeners(params: ELBv2.Types.DescribeListenersInput, callback?: (err: AWSError, data: ELBv2.Types.DescribeListenersOutput) => void): Request; - /** - * Describes the specified listeners or the listeners for the specified Application Load Balancer or Network Load Balancer. You must specify either a load balancer or one or more listeners. - */ - describeListeners(callback?: (err: AWSError, data: ELBv2.Types.DescribeListenersOutput) => void): Request; - /** - * Describes the attributes for the specified Application Load Balancer or Network Load Balancer. - */ - describeLoadBalancerAttributes(params: ELBv2.Types.DescribeLoadBalancerAttributesInput, callback?: (err: AWSError, data: ELBv2.Types.DescribeLoadBalancerAttributesOutput) => void): Request; - /** - * Describes the attributes for the specified Application Load Balancer or Network Load Balancer. - */ - describeLoadBalancerAttributes(callback?: (err: AWSError, data: ELBv2.Types.DescribeLoadBalancerAttributesOutput) => void): Request; - /** - * Describes the specified load balancers or all of your load balancers. To describe the listeners for a load balancer, use DescribeListeners. To describe the attributes for a load balancer, use DescribeLoadBalancerAttributes. - */ - describeLoadBalancers(params: ELBv2.Types.DescribeLoadBalancersInput, callback?: (err: AWSError, data: ELBv2.Types.DescribeLoadBalancersOutput) => void): Request; - /** - * Describes the specified load balancers or all of your load balancers. To describe the listeners for a load balancer, use DescribeListeners. To describe the attributes for a load balancer, use DescribeLoadBalancerAttributes. - */ - describeLoadBalancers(callback?: (err: AWSError, data: ELBv2.Types.DescribeLoadBalancersOutput) => void): Request; - /** - * Describes the specified rules or the rules for the specified listener. You must specify either a listener or one or more rules. - */ - describeRules(params: ELBv2.Types.DescribeRulesInput, callback?: (err: AWSError, data: ELBv2.Types.DescribeRulesOutput) => void): Request; - /** - * Describes the specified rules or the rules for the specified listener. You must specify either a listener or one or more rules. - */ - describeRules(callback?: (err: AWSError, data: ELBv2.Types.DescribeRulesOutput) => void): Request; - /** - * Describes the specified policies or all policies used for SSL negotiation. For more information, see Security Policies in the Application Load Balancers Guide. - */ - describeSSLPolicies(params: ELBv2.Types.DescribeSSLPoliciesInput, callback?: (err: AWSError, data: ELBv2.Types.DescribeSSLPoliciesOutput) => void): Request; - /** - * Describes the specified policies or all policies used for SSL negotiation. For more information, see Security Policies in the Application Load Balancers Guide. - */ - describeSSLPolicies(callback?: (err: AWSError, data: ELBv2.Types.DescribeSSLPoliciesOutput) => void): Request; - /** - * Describes the tags for the specified resources. You can describe the tags for one or more Application Load Balancers, Network Load Balancers, and target groups. - */ - describeTags(params: ELBv2.Types.DescribeTagsInput, callback?: (err: AWSError, data: ELBv2.Types.DescribeTagsOutput) => void): Request; - /** - * Describes the tags for the specified resources. You can describe the tags for one or more Application Load Balancers, Network Load Balancers, and target groups. - */ - describeTags(callback?: (err: AWSError, data: ELBv2.Types.DescribeTagsOutput) => void): Request; - /** - * Describes the attributes for the specified target group. - */ - describeTargetGroupAttributes(params: ELBv2.Types.DescribeTargetGroupAttributesInput, callback?: (err: AWSError, data: ELBv2.Types.DescribeTargetGroupAttributesOutput) => void): Request; - /** - * Describes the attributes for the specified target group. - */ - describeTargetGroupAttributes(callback?: (err: AWSError, data: ELBv2.Types.DescribeTargetGroupAttributesOutput) => void): Request; - /** - * Describes the specified target groups or all of your target groups. By default, all target groups are described. Alternatively, you can specify one of the following to filter the results: the ARN of the load balancer, the names of one or more target groups, or the ARNs of one or more target groups. To describe the targets for a target group, use DescribeTargetHealth. To describe the attributes of a target group, use DescribeTargetGroupAttributes. - */ - describeTargetGroups(params: ELBv2.Types.DescribeTargetGroupsInput, callback?: (err: AWSError, data: ELBv2.Types.DescribeTargetGroupsOutput) => void): Request; - /** - * Describes the specified target groups or all of your target groups. By default, all target groups are described. Alternatively, you can specify one of the following to filter the results: the ARN of the load balancer, the names of one or more target groups, or the ARNs of one or more target groups. To describe the targets for a target group, use DescribeTargetHealth. To describe the attributes of a target group, use DescribeTargetGroupAttributes. - */ - describeTargetGroups(callback?: (err: AWSError, data: ELBv2.Types.DescribeTargetGroupsOutput) => void): Request; - /** - * Describes the health of the specified targets or all of your targets. - */ - describeTargetHealth(params: ELBv2.Types.DescribeTargetHealthInput, callback?: (err: AWSError, data: ELBv2.Types.DescribeTargetHealthOutput) => void): Request; - /** - * Describes the health of the specified targets or all of your targets. - */ - describeTargetHealth(callback?: (err: AWSError, data: ELBv2.Types.DescribeTargetHealthOutput) => void): Request; - /** - * Modifies the specified properties of the specified listener. Any properties that you do not specify retain their current values. However, changing the protocol from HTTPS to HTTP removes the security policy and SSL certificate properties. If you change the protocol from HTTP to HTTPS, you must add the security policy and server certificate. - */ - modifyListener(params: ELBv2.Types.ModifyListenerInput, callback?: (err: AWSError, data: ELBv2.Types.ModifyListenerOutput) => void): Request; - /** - * Modifies the specified properties of the specified listener. Any properties that you do not specify retain their current values. However, changing the protocol from HTTPS to HTTP removes the security policy and SSL certificate properties. If you change the protocol from HTTP to HTTPS, you must add the security policy and server certificate. - */ - modifyListener(callback?: (err: AWSError, data: ELBv2.Types.ModifyListenerOutput) => void): Request; - /** - * Modifies the specified attributes of the specified Application Load Balancer or Network Load Balancer. If any of the specified attributes can't be modified as requested, the call fails. Any existing attributes that you do not modify retain their current values. - */ - modifyLoadBalancerAttributes(params: ELBv2.Types.ModifyLoadBalancerAttributesInput, callback?: (err: AWSError, data: ELBv2.Types.ModifyLoadBalancerAttributesOutput) => void): Request; - /** - * Modifies the specified attributes of the specified Application Load Balancer or Network Load Balancer. If any of the specified attributes can't be modified as requested, the call fails. Any existing attributes that you do not modify retain their current values. - */ - modifyLoadBalancerAttributes(callback?: (err: AWSError, data: ELBv2.Types.ModifyLoadBalancerAttributesOutput) => void): Request; - /** - * Modifies the specified rule. Any existing properties that you do not modify retain their current values. To modify the default action, use ModifyListener. - */ - modifyRule(params: ELBv2.Types.ModifyRuleInput, callback?: (err: AWSError, data: ELBv2.Types.ModifyRuleOutput) => void): Request; - /** - * Modifies the specified rule. Any existing properties that you do not modify retain their current values. To modify the default action, use ModifyListener. - */ - modifyRule(callback?: (err: AWSError, data: ELBv2.Types.ModifyRuleOutput) => void): Request; - /** - * Modifies the health checks used when evaluating the health state of the targets in the specified target group. To monitor the health of the targets, use DescribeTargetHealth. - */ - modifyTargetGroup(params: ELBv2.Types.ModifyTargetGroupInput, callback?: (err: AWSError, data: ELBv2.Types.ModifyTargetGroupOutput) => void): Request; - /** - * Modifies the health checks used when evaluating the health state of the targets in the specified target group. To monitor the health of the targets, use DescribeTargetHealth. - */ - modifyTargetGroup(callback?: (err: AWSError, data: ELBv2.Types.ModifyTargetGroupOutput) => void): Request; - /** - * Modifies the specified attributes of the specified target group. - */ - modifyTargetGroupAttributes(params: ELBv2.Types.ModifyTargetGroupAttributesInput, callback?: (err: AWSError, data: ELBv2.Types.ModifyTargetGroupAttributesOutput) => void): Request; - /** - * Modifies the specified attributes of the specified target group. - */ - modifyTargetGroupAttributes(callback?: (err: AWSError, data: ELBv2.Types.ModifyTargetGroupAttributesOutput) => void): Request; - /** - * Registers the specified targets with the specified target group. You can register targets by instance ID or by IP address. If the target is an EC2 instance, it must be in the running state when you register it. By default, the load balancer routes requests to registered targets using the protocol and port for the target group. Alternatively, you can override the port for a target when you register it. You can register each EC2 instance or IP address with the same target group multiple times using different ports. With a Network Load Balancer, you cannot register instances by instance ID if they have the following instance types: C1, CC1, CC2, CG1, CG2, CR1, CS1, G1, G2, HI1, HS1, M1, M2, M3, and T1. You can register instances of these types by IP address. To remove a target from a target group, use DeregisterTargets. - */ - registerTargets(params: ELBv2.Types.RegisterTargetsInput, callback?: (err: AWSError, data: ELBv2.Types.RegisterTargetsOutput) => void): Request; - /** - * Registers the specified targets with the specified target group. You can register targets by instance ID or by IP address. If the target is an EC2 instance, it must be in the running state when you register it. By default, the load balancer routes requests to registered targets using the protocol and port for the target group. Alternatively, you can override the port for a target when you register it. You can register each EC2 instance or IP address with the same target group multiple times using different ports. With a Network Load Balancer, you cannot register instances by instance ID if they have the following instance types: C1, CC1, CC2, CG1, CG2, CR1, CS1, G1, G2, HI1, HS1, M1, M2, M3, and T1. You can register instances of these types by IP address. To remove a target from a target group, use DeregisterTargets. - */ - registerTargets(callback?: (err: AWSError, data: ELBv2.Types.RegisterTargetsOutput) => void): Request; - /** - * Removes the specified certificate from the specified secure listener. You can't remove the default certificate for a listener. To replace the default certificate, call ModifyListener. To list the certificates for your listener, use DescribeListenerCertificates. - */ - removeListenerCertificates(params: ELBv2.Types.RemoveListenerCertificatesInput, callback?: (err: AWSError, data: ELBv2.Types.RemoveListenerCertificatesOutput) => void): Request; - /** - * Removes the specified certificate from the specified secure listener. You can't remove the default certificate for a listener. To replace the default certificate, call ModifyListener. To list the certificates for your listener, use DescribeListenerCertificates. - */ - removeListenerCertificates(callback?: (err: AWSError, data: ELBv2.Types.RemoveListenerCertificatesOutput) => void): Request; - /** - * Removes the specified tags from the specified Elastic Load Balancing resource. To list the current tags for your resources, use DescribeTags. - */ - removeTags(params: ELBv2.Types.RemoveTagsInput, callback?: (err: AWSError, data: ELBv2.Types.RemoveTagsOutput) => void): Request; - /** - * Removes the specified tags from the specified Elastic Load Balancing resource. To list the current tags for your resources, use DescribeTags. - */ - removeTags(callback?: (err: AWSError, data: ELBv2.Types.RemoveTagsOutput) => void): Request; - /** - * Sets the type of IP addresses used by the subnets of the specified Application Load Balancer or Network Load Balancer. Note that Network Load Balancers must use ipv4. - */ - setIpAddressType(params: ELBv2.Types.SetIpAddressTypeInput, callback?: (err: AWSError, data: ELBv2.Types.SetIpAddressTypeOutput) => void): Request; - /** - * Sets the type of IP addresses used by the subnets of the specified Application Load Balancer or Network Load Balancer. Note that Network Load Balancers must use ipv4. - */ - setIpAddressType(callback?: (err: AWSError, data: ELBv2.Types.SetIpAddressTypeOutput) => void): Request; - /** - * Sets the priorities of the specified rules. You can reorder the rules as long as there are no priority conflicts in the new order. Any existing rules that you do not specify retain their current priority. - */ - setRulePriorities(params: ELBv2.Types.SetRulePrioritiesInput, callback?: (err: AWSError, data: ELBv2.Types.SetRulePrioritiesOutput) => void): Request; - /** - * Sets the priorities of the specified rules. You can reorder the rules as long as there are no priority conflicts in the new order. Any existing rules that you do not specify retain their current priority. - */ - setRulePriorities(callback?: (err: AWSError, data: ELBv2.Types.SetRulePrioritiesOutput) => void): Request; - /** - * Associates the specified security groups with the specified Application Load Balancer. The specified security groups override the previously associated security groups. Note that you can't specify a security group for a Network Load Balancer. - */ - setSecurityGroups(params: ELBv2.Types.SetSecurityGroupsInput, callback?: (err: AWSError, data: ELBv2.Types.SetSecurityGroupsOutput) => void): Request; - /** - * Associates the specified security groups with the specified Application Load Balancer. The specified security groups override the previously associated security groups. Note that you can't specify a security group for a Network Load Balancer. - */ - setSecurityGroups(callback?: (err: AWSError, data: ELBv2.Types.SetSecurityGroupsOutput) => void): Request; - /** - * Enables the Availability Zone for the specified subnets for the specified Application Load Balancer. The specified subnets replace the previously enabled subnets. Note that you can't change the subnets for a Network Load Balancer. - */ - setSubnets(params: ELBv2.Types.SetSubnetsInput, callback?: (err: AWSError, data: ELBv2.Types.SetSubnetsOutput) => void): Request; - /** - * Enables the Availability Zone for the specified subnets for the specified Application Load Balancer. The specified subnets replace the previously enabled subnets. Note that you can't change the subnets for a Network Load Balancer. - */ - setSubnets(callback?: (err: AWSError, data: ELBv2.Types.SetSubnetsOutput) => void): Request; - /** - * Waits for the loadBalancerExists state by periodically calling the underlying ELBv2.describeLoadBalancersoperation every 15 seconds (at most 40 times). - */ - waitFor(state: "loadBalancerExists", params: ELBv2.Types.DescribeLoadBalancersInput, callback?: (err: AWSError, data: ELBv2.Types.DescribeLoadBalancersOutput) => void): Request; - /** - * Waits for the loadBalancerExists state by periodically calling the underlying ELBv2.describeLoadBalancersoperation every 15 seconds (at most 40 times). - */ - waitFor(state: "loadBalancerExists", callback?: (err: AWSError, data: ELBv2.Types.DescribeLoadBalancersOutput) => void): Request; - /** - * Waits for the loadBalancerAvailable state by periodically calling the underlying ELBv2.describeLoadBalancersoperation every 15 seconds (at most 40 times). - */ - waitFor(state: "loadBalancerAvailable", params: ELBv2.Types.DescribeLoadBalancersInput, callback?: (err: AWSError, data: ELBv2.Types.DescribeLoadBalancersOutput) => void): Request; - /** - * Waits for the loadBalancerAvailable state by periodically calling the underlying ELBv2.describeLoadBalancersoperation every 15 seconds (at most 40 times). - */ - waitFor(state: "loadBalancerAvailable", callback?: (err: AWSError, data: ELBv2.Types.DescribeLoadBalancersOutput) => void): Request; - /** - * Waits for the loadBalancersDeleted state by periodically calling the underlying ELBv2.describeLoadBalancersoperation every 15 seconds (at most 40 times). - */ - waitFor(state: "loadBalancersDeleted", params: ELBv2.Types.DescribeLoadBalancersInput, callback?: (err: AWSError, data: ELBv2.Types.DescribeLoadBalancersOutput) => void): Request; - /** - * Waits for the loadBalancersDeleted state by periodically calling the underlying ELBv2.describeLoadBalancersoperation every 15 seconds (at most 40 times). - */ - waitFor(state: "loadBalancersDeleted", callback?: (err: AWSError, data: ELBv2.Types.DescribeLoadBalancersOutput) => void): Request; - /** - * Waits for the targetInService state by periodically calling the underlying ELBv2.describeTargetHealthoperation every 15 seconds (at most 40 times). - */ - waitFor(state: "targetInService", params: ELBv2.Types.DescribeTargetHealthInput, callback?: (err: AWSError, data: ELBv2.Types.DescribeTargetHealthOutput) => void): Request; - /** - * Waits for the targetInService state by periodically calling the underlying ELBv2.describeTargetHealthoperation every 15 seconds (at most 40 times). - */ - waitFor(state: "targetInService", callback?: (err: AWSError, data: ELBv2.Types.DescribeTargetHealthOutput) => void): Request; - /** - * Waits for the targetDeregistered state by periodically calling the underlying ELBv2.describeTargetHealthoperation every 15 seconds (at most 40 times). - */ - waitFor(state: "targetDeregistered", params: ELBv2.Types.DescribeTargetHealthInput, callback?: (err: AWSError, data: ELBv2.Types.DescribeTargetHealthOutput) => void): Request; - /** - * Waits for the targetDeregistered state by periodically calling the underlying ELBv2.describeTargetHealthoperation every 15 seconds (at most 40 times). - */ - waitFor(state: "targetDeregistered", callback?: (err: AWSError, data: ELBv2.Types.DescribeTargetHealthOutput) => void): Request; -} -declare namespace ELBv2 { - export interface Action { - /** - * The type of action. - */ - Type: ActionTypeEnum; - /** - * The Amazon Resource Name (ARN) of the target group. - */ - TargetGroupArn: TargetGroupArn; - } - export type ActionTypeEnum = "forward"|string; - export type Actions = Action[]; - export interface AddListenerCertificatesInput { - /** - * The Amazon Resource Name (ARN) of the listener. - */ - ListenerArn: ListenerArn; - /** - * The certificate to add. You can specify one certificate per call. - */ - Certificates: CertificateList; - } - export interface AddListenerCertificatesOutput { - /** - * Information about the certificates. - */ - Certificates?: CertificateList; - } - export interface AddTagsInput { - /** - * The Amazon Resource Name (ARN) of the resource. - */ - ResourceArns: ResourceArns; - /** - * The tags. Each resource can have a maximum of 10 tags. - */ - Tags: TagList; - } - export interface AddTagsOutput { - } - export type AllocationId = string; - export interface AvailabilityZone { - /** - * The name of the Availability Zone. - */ - ZoneName?: ZoneName; - /** - * The ID of the subnet. - */ - SubnetId?: SubnetId; - /** - * [Network Load Balancers] The static IP address. - */ - LoadBalancerAddresses?: LoadBalancerAddresses; - } - export type AvailabilityZones = AvailabilityZone[]; - export type CanonicalHostedZoneId = string; - export interface Certificate { - /** - * The Amazon Resource Name (ARN) of the certificate. - */ - CertificateArn?: CertificateArn; - /** - * Indicates whether the certificate is the default certificate. - */ - IsDefault?: Default; - } - export type CertificateArn = string; - export type CertificateList = Certificate[]; - export interface Cipher { - /** - * The name of the cipher. - */ - Name?: CipherName; - /** - * The priority of the cipher. - */ - Priority?: CipherPriority; - } - export type CipherName = string; - export type CipherPriority = number; - export type Ciphers = Cipher[]; - export type ConditionFieldName = string; - export interface CreateListenerInput { - /** - * The Amazon Resource Name (ARN) of the load balancer. - */ - LoadBalancerArn: LoadBalancerArn; - /** - * The protocol for connections from clients to the load balancer. For Application Load Balancers, the supported protocols are HTTP and HTTPS. For Network Load Balancers, the supported protocol is TCP. - */ - Protocol: ProtocolEnum; - /** - * The port on which the load balancer is listening. - */ - Port: Port; - /** - * [HTTPS listeners] The security policy that defines which ciphers and protocols are supported. The default is the current predefined security policy. - */ - SslPolicy?: SslPolicyName; - /** - * [HTTPS listeners] The SSL server certificate. You must provide exactly one certificate. - */ - Certificates?: CertificateList; - /** - * The default action for the listener. For Application Load Balancers, the protocol of the specified target group must be HTTP or HTTPS. For Network Load Balancers, the protocol of the specified target group must be TCP. - */ - DefaultActions: Actions; - } - export interface CreateListenerOutput { - /** - * Information about the listener. - */ - Listeners?: Listeners; - } - export interface CreateLoadBalancerInput { - /** - * The name of the load balancer. This name must be unique per region per account, can have a maximum of 32 characters, must contain only alphanumeric characters or hyphens, and must not begin or end with a hyphen. - */ - Name: LoadBalancerName; - /** - * The IDs of the subnets to attach to the load balancer. You can specify only one subnet per Availability Zone. You must specify either subnets or subnet mappings. [Application Load Balancers] You must specify subnets from at least two Availability Zones. - */ - Subnets?: Subnets; - /** - * The IDs of the subnets to attach to the load balancer. You can specify only one subnet per Availability Zone. You must specify either subnets or subnet mappings. [Network Load Balancers] You can specify one Elastic IP address per subnet. [Application Load Balancers] You cannot specify Elastic IP addresses for your subnets. - */ - SubnetMappings?: SubnetMappings; - /** - * [Application Load Balancers] The IDs of the security groups to assign to the load balancer. - */ - SecurityGroups?: SecurityGroups; - /** - * The nodes of an Internet-facing load balancer have public IP addresses. The DNS name of an Internet-facing load balancer is publicly resolvable to the public IP addresses of the nodes. Therefore, Internet-facing load balancers can route requests from clients over the Internet. The nodes of an internal load balancer have only private IP addresses. The DNS name of an internal load balancer is publicly resolvable to the private IP addresses of the nodes. Therefore, internal load balancers can only route requests from clients with access to the VPC for the load balancer. The default is an Internet-facing load balancer. - */ - Scheme?: LoadBalancerSchemeEnum; - /** - * One or more tags to assign to the load balancer. - */ - Tags?: TagList; - /** - * The type of load balancer to create. The default is application. - */ - Type?: LoadBalancerTypeEnum; - /** - * [Application Load Balancers] The type of IP addresses used by the subnets for your load balancer. The possible values are ipv4 (for IPv4 addresses) and dualstack (for IPv4 and IPv6 addresses). Internal load balancers must use ipv4. - */ - IpAddressType?: IpAddressType; - } - export interface CreateLoadBalancerOutput { - /** - * Information about the load balancer. - */ - LoadBalancers?: LoadBalancers; - } - export interface CreateRuleInput { - /** - * The Amazon Resource Name (ARN) of the listener. - */ - ListenerArn: ListenerArn; - /** - * The conditions. Each condition specifies a field name and a single value. If the field name is host-header, you can specify a single host name (for example, my.example.com). A host name is case insensitive, can be up to 128 characters in length, and can contain any of the following characters. Note that you can include up to three wildcard characters. A-Z, a-z, 0-9 - . * (matches 0 or more characters) ? (matches exactly 1 character) If the field name is path-pattern, you can specify a single path pattern. A path pattern is case sensitive, can be up to 128 characters in length, and can contain any of the following characters. Note that you can include up to three wildcard characters. A-Z, a-z, 0-9 _ - . $ / ~ " ' @ : + & (using &amp;) * (matches 0 or more characters) ? (matches exactly 1 character) - */ - Conditions: RuleConditionList; - /** - * The priority for the rule. A listener can't have multiple rules with the same priority. - */ - Priority: RulePriority; - /** - * An action. Each action has the type forward and specifies a target group. - */ - Actions: Actions; - } - export interface CreateRuleOutput { - /** - * Information about the rule. - */ - Rules?: Rules; - } - export interface CreateTargetGroupInput { - /** - * The name of the target group. This name must be unique per region per account, can have a maximum of 32 characters, must contain only alphanumeric characters or hyphens, and must not begin or end with a hyphen. - */ - Name: TargetGroupName; - /** - * The protocol to use for routing traffic to the targets. For Application Load Balancers, the supported protocols are HTTP and HTTPS. For Network Load Balancers, the supported protocol is TCP. - */ - Protocol: ProtocolEnum; - /** - * The port on which the targets receive traffic. This port is used unless you specify a port override when registering the target. - */ - Port: Port; - /** - * The identifier of the virtual private cloud (VPC). - */ - VpcId: VpcId; - /** - * The protocol the load balancer uses when performing health checks on targets. The TCP protocol is supported only if the protocol of the target group is TCP. For Application Load Balancers, the default is HTTP. For Network Load Balancers, the default is TCP. - */ - HealthCheckProtocol?: ProtocolEnum; - /** - * The port the load balancer uses when performing health checks on targets. The default is traffic-port, which is the port on which each target receives traffic from the load balancer. - */ - HealthCheckPort?: HealthCheckPort; - /** - * [HTTP/HTTPS health checks] The ping path that is the destination on the targets for health checks. The default is /. - */ - HealthCheckPath?: Path; - /** - * The approximate amount of time, in seconds, between health checks of an individual target. For Application Load Balancers, the range is 5 to 300 seconds. For Network Load Balancers, the supported values are 10 or 30 seconds. The default is 30 seconds. - */ - HealthCheckIntervalSeconds?: HealthCheckIntervalSeconds; - /** - * The amount of time, in seconds, during which no response from a target means a failed health check. For Application Load Balancers, the range is 2 to 60 seconds and the default is 5 seconds. For Network Load Balancers, this is 10 seconds for TCP and HTTPS health checks and 6 seconds for HTTP health checks. - */ - HealthCheckTimeoutSeconds?: HealthCheckTimeoutSeconds; - /** - * The number of consecutive health checks successes required before considering an unhealthy target healthy. For Application Load Balancers, the default is 5. For Network Load Balancers, the default is 3. - */ - HealthyThresholdCount?: HealthCheckThresholdCount; - /** - * The number of consecutive health check failures required before considering a target unhealthy. For Application Load Balancers, the default is 2. For Network Load Balancers, this value must be the same as the healthy threshold count. - */ - UnhealthyThresholdCount?: HealthCheckThresholdCount; - /** - * [HTTP/HTTPS health checks] The HTTP codes to use when checking for a successful response from a target. - */ - Matcher?: Matcher; - /** - * The type of target that you must specify when registering targets with this target group. The possible values are instance (targets are specified by instance ID) or ip (targets are specified by IP address). The default is instance. Note that you can't specify targets for a target group using both instance IDs and IP addresses. If the target type is ip, specify IP addresses from the subnets of the virtual private cloud (VPC) for the target group, the RFC 1918 range (10.0.0.0/8, 172.16.0.0/12, and 192.168.0.0/16), and the RFC 6598 range (100.64.0.0/10). You can't specify publicly routable IP addresses. - */ - TargetType?: TargetTypeEnum; - } - export interface CreateTargetGroupOutput { - /** - * Information about the target group. - */ - TargetGroups?: TargetGroups; - } - export type CreatedTime = Date; - export type DNSName = string; - export type Default = boolean; - export interface DeleteListenerInput { - /** - * The Amazon Resource Name (ARN) of the listener. - */ - ListenerArn: ListenerArn; - } - export interface DeleteListenerOutput { - } - export interface DeleteLoadBalancerInput { - /** - * The Amazon Resource Name (ARN) of the load balancer. - */ - LoadBalancerArn: LoadBalancerArn; - } - export interface DeleteLoadBalancerOutput { - } - export interface DeleteRuleInput { - /** - * The Amazon Resource Name (ARN) of the rule. - */ - RuleArn: RuleArn; - } - export interface DeleteRuleOutput { - } - export interface DeleteTargetGroupInput { - /** - * The Amazon Resource Name (ARN) of the target group. - */ - TargetGroupArn: TargetGroupArn; - } - export interface DeleteTargetGroupOutput { - } - export interface DeregisterTargetsInput { - /** - * The Amazon Resource Name (ARN) of the target group. - */ - TargetGroupArn: TargetGroupArn; - /** - * The targets. If you specified a port override when you registered a target, you must specify both the target ID and the port when you deregister it. - */ - Targets: TargetDescriptions; - } - export interface DeregisterTargetsOutput { - } - export interface DescribeAccountLimitsInput { - /** - * The marker for the next set of results. (You received this marker from a previous call.) - */ - Marker?: Marker; - /** - * The maximum number of results to return with this call. - */ - PageSize?: PageSize; - } - export interface DescribeAccountLimitsOutput { - /** - * Information about the limits. - */ - Limits?: Limits; - /** - * The marker to use when requesting the next set of results. If there are no additional results, the string is empty. - */ - NextMarker?: Marker; - } - export interface DescribeListenerCertificatesInput { - /** - * The Amazon Resource Names (ARN) of the listener. - */ - ListenerArn: ListenerArn; - /** - * The marker for the next set of results. (You received this marker from a previous call.) - */ - Marker?: Marker; - /** - * The maximum number of results to return with this call. - */ - PageSize?: PageSize; - } - export interface DescribeListenerCertificatesOutput { - /** - * Information about the certificates. - */ - Certificates?: CertificateList; - /** - * The marker to use when requesting the next set of results. If there are no additional results, the string is empty. - */ - NextMarker?: Marker; - } - export interface DescribeListenersInput { - /** - * The Amazon Resource Name (ARN) of the load balancer. - */ - LoadBalancerArn?: LoadBalancerArn; - /** - * The Amazon Resource Names (ARN) of the listeners. - */ - ListenerArns?: ListenerArns; - /** - * The marker for the next set of results. (You received this marker from a previous call.) - */ - Marker?: Marker; - /** - * The maximum number of results to return with this call. - */ - PageSize?: PageSize; - } - export interface DescribeListenersOutput { - /** - * Information about the listeners. - */ - Listeners?: Listeners; - /** - * The marker to use when requesting the next set of results. If there are no additional results, the string is empty. - */ - NextMarker?: Marker; - } - export interface DescribeLoadBalancerAttributesInput { - /** - * The Amazon Resource Name (ARN) of the load balancer. - */ - LoadBalancerArn: LoadBalancerArn; - } - export interface DescribeLoadBalancerAttributesOutput { - /** - * Information about the load balancer attributes. - */ - Attributes?: LoadBalancerAttributes; - } - export interface DescribeLoadBalancersInput { - /** - * The Amazon Resource Names (ARN) of the load balancers. You can specify up to 20 load balancers in a single call. - */ - LoadBalancerArns?: LoadBalancerArns; - /** - * The names of the load balancers. - */ - Names?: LoadBalancerNames; - /** - * The marker for the next set of results. (You received this marker from a previous call.) - */ - Marker?: Marker; - /** - * The maximum number of results to return with this call. - */ - PageSize?: PageSize; - } - export interface DescribeLoadBalancersOutput { - /** - * Information about the load balancers. - */ - LoadBalancers?: LoadBalancers; - /** - * The marker to use when requesting the next set of results. If there are no additional results, the string is empty. - */ - NextMarker?: Marker; - } - export interface DescribeRulesInput { - /** - * The Amazon Resource Name (ARN) of the listener. - */ - ListenerArn?: ListenerArn; - /** - * The Amazon Resource Names (ARN) of the rules. - */ - RuleArns?: RuleArns; - /** - * The marker for the next set of results. (You received this marker from a previous call.) - */ - Marker?: Marker; - /** - * The maximum number of results to return with this call. - */ - PageSize?: PageSize; - } - export interface DescribeRulesOutput { - /** - * Information about the rules. - */ - Rules?: Rules; - /** - * The marker to use when requesting the next set of results. If there are no additional results, the string is empty. - */ - NextMarker?: Marker; - } - export interface DescribeSSLPoliciesInput { - /** - * The names of the policies. - */ - Names?: SslPolicyNames; - /** - * The marker for the next set of results. (You received this marker from a previous call.) - */ - Marker?: Marker; - /** - * The maximum number of results to return with this call. - */ - PageSize?: PageSize; - } - export interface DescribeSSLPoliciesOutput { - /** - * Information about the policies. - */ - SslPolicies?: SslPolicies; - /** - * The marker to use when requesting the next set of results. If there are no additional results, the string is empty. - */ - NextMarker?: Marker; - } - export interface DescribeTagsInput { - /** - * The Amazon Resource Names (ARN) of the resources. - */ - ResourceArns: ResourceArns; - } - export interface DescribeTagsOutput { - /** - * Information about the tags. - */ - TagDescriptions?: TagDescriptions; - } - export interface DescribeTargetGroupAttributesInput { - /** - * The Amazon Resource Name (ARN) of the target group. - */ - TargetGroupArn: TargetGroupArn; - } - export interface DescribeTargetGroupAttributesOutput { - /** - * Information about the target group attributes - */ - Attributes?: TargetGroupAttributes; - } - export interface DescribeTargetGroupsInput { - /** - * The Amazon Resource Name (ARN) of the load balancer. - */ - LoadBalancerArn?: LoadBalancerArn; - /** - * The Amazon Resource Names (ARN) of the target groups. - */ - TargetGroupArns?: TargetGroupArns; - /** - * The names of the target groups. - */ - Names?: TargetGroupNames; - /** - * The marker for the next set of results. (You received this marker from a previous call.) - */ - Marker?: Marker; - /** - * The maximum number of results to return with this call. - */ - PageSize?: PageSize; - } - export interface DescribeTargetGroupsOutput { - /** - * Information about the target groups. - */ - TargetGroups?: TargetGroups; - /** - * The marker to use when requesting the next set of results. If there are no additional results, the string is empty. - */ - NextMarker?: Marker; - } - export interface DescribeTargetHealthInput { - /** - * The Amazon Resource Name (ARN) of the target group. - */ - TargetGroupArn: TargetGroupArn; - /** - * The targets. - */ - Targets?: TargetDescriptions; - } - export interface DescribeTargetHealthOutput { - /** - * Information about the health of the targets. - */ - TargetHealthDescriptions?: TargetHealthDescriptions; - } - export type Description = string; - export type HealthCheckIntervalSeconds = number; - export type HealthCheckPort = string; - export type HealthCheckThresholdCount = number; - export type HealthCheckTimeoutSeconds = number; - export type HttpCode = string; - export type IpAddress = string; - export type IpAddressType = "ipv4"|"dualstack"|string; - export type IsDefault = boolean; - export interface Limit { - /** - * The name of the limit. The possible values are: application-load-balancers listeners-per-application-load-balancer listeners-per-network-load-balancer network-load-balancers rules-per-application-load-balancer target-groups targets-per-application-load-balancer - */ - Name?: Name; - /** - * The maximum value of the limit. - */ - Max?: Max; - } - export type Limits = Limit[]; - export type ListOfString = StringValue[]; - export interface Listener { - /** - * The Amazon Resource Name (ARN) of the listener. - */ - ListenerArn?: ListenerArn; - /** - * The Amazon Resource Name (ARN) of the load balancer. - */ - LoadBalancerArn?: LoadBalancerArn; - /** - * The port on which the load balancer is listening. - */ - Port?: Port; - /** - * The protocol for connections from clients to the load balancer. - */ - Protocol?: ProtocolEnum; - /** - * The SSL server certificate. You must provide a certificate if the protocol is HTTPS. - */ - Certificates?: CertificateList; - /** - * The security policy that defines which ciphers and protocols are supported. The default is the current predefined security policy. - */ - SslPolicy?: SslPolicyName; - /** - * The default actions for the listener. - */ - DefaultActions?: Actions; - } - export type ListenerArn = string; - export type ListenerArns = ListenerArn[]; - export type Listeners = Listener[]; - export interface LoadBalancer { - /** - * The Amazon Resource Name (ARN) of the load balancer. - */ - LoadBalancerArn?: LoadBalancerArn; - /** - * The public DNS name of the load balancer. - */ - DNSName?: DNSName; - /** - * The ID of the Amazon Route 53 hosted zone associated with the load balancer. - */ - CanonicalHostedZoneId?: CanonicalHostedZoneId; - /** - * The date and time the load balancer was created. - */ - CreatedTime?: CreatedTime; - /** - * The name of the load balancer. - */ - LoadBalancerName?: LoadBalancerName; - /** - * The nodes of an Internet-facing load balancer have public IP addresses. The DNS name of an Internet-facing load balancer is publicly resolvable to the public IP addresses of the nodes. Therefore, Internet-facing load balancers can route requests from clients over the Internet. The nodes of an internal load balancer have only private IP addresses. The DNS name of an internal load balancer is publicly resolvable to the private IP addresses of the nodes. Therefore, internal load balancers can only route requests from clients with access to the VPC for the load balancer. - */ - Scheme?: LoadBalancerSchemeEnum; - /** - * The ID of the VPC for the load balancer. - */ - VpcId?: VpcId; - /** - * The state of the load balancer. - */ - State?: LoadBalancerState; - /** - * The type of load balancer. - */ - Type?: LoadBalancerTypeEnum; - /** - * The Availability Zones for the load balancer. - */ - AvailabilityZones?: AvailabilityZones; - /** - * The IDs of the security groups for the load balancer. - */ - SecurityGroups?: SecurityGroups; - /** - * The type of IP addresses used by the subnets for your load balancer. The possible values are ipv4 (for IPv4 addresses) and dualstack (for IPv4 and IPv6 addresses). - */ - IpAddressType?: IpAddressType; - } - export interface LoadBalancerAddress { - /** - * The static IP address. - */ - IpAddress?: IpAddress; - /** - * [Network Load Balancers] The allocation ID of the Elastic IP address. - */ - AllocationId?: AllocationId; - } - export type LoadBalancerAddresses = LoadBalancerAddress[]; - export type LoadBalancerArn = string; - export type LoadBalancerArns = LoadBalancerArn[]; - export interface LoadBalancerAttribute { - /** - * The name of the attribute. access_logs.s3.enabled - [Application Load Balancers] Indicates whether access logs stored in Amazon S3 are enabled. The value is true or false. access_logs.s3.bucket - [Application Load Balancers] The name of the S3 bucket for the access logs. This attribute is required if access logs in Amazon S3 are enabled. The bucket must exist in the same region as the load balancer and have a bucket policy that grants Elastic Load Balancing permission to write to the bucket. access_logs.s3.prefix - [Application Load Balancers] The prefix for the location in the S3 bucket. If you don't specify a prefix, the access logs are stored in the root of the bucket. deletion_protection.enabled - Indicates whether deletion protection is enabled. The value is true or false. idle_timeout.timeout_seconds - [Application Load Balancers] The idle timeout value, in seconds. The valid range is 1-4000. The default is 60 seconds. - */ - Key?: LoadBalancerAttributeKey; - /** - * The value of the attribute. - */ - Value?: LoadBalancerAttributeValue; - } - export type LoadBalancerAttributeKey = string; - export type LoadBalancerAttributeValue = string; - export type LoadBalancerAttributes = LoadBalancerAttribute[]; - export type LoadBalancerName = string; - export type LoadBalancerNames = LoadBalancerName[]; - export type LoadBalancerSchemeEnum = "internet-facing"|"internal"|string; - export interface LoadBalancerState { - /** - * The state code. The initial state of the load balancer is provisioning. After the load balancer is fully set up and ready to route traffic, its state is active. If the load balancer could not be set up, its state is failed. - */ - Code?: LoadBalancerStateEnum; - /** - * A description of the state. - */ - Reason?: StateReason; - } - export type LoadBalancerStateEnum = "active"|"provisioning"|"active_impaired"|"failed"|string; - export type LoadBalancerTypeEnum = "application"|"network"|string; - export type LoadBalancers = LoadBalancer[]; - export type Marker = string; - export interface Matcher { - /** - * The HTTP codes. For Application Load Balancers, you can specify values between 200 and 499, and the default value is 200. You can specify multiple values (for example, "200,202") or a range of values (for example, "200-299"). For Network Load Balancers, this is 200 to 399. - */ - HttpCode: HttpCode; - } - export type Max = string; - export interface ModifyListenerInput { - /** - * The Amazon Resource Name (ARN) of the listener. - */ - ListenerArn: ListenerArn; - /** - * The port for connections from clients to the load balancer. - */ - Port?: Port; - /** - * The protocol for connections from clients to the load balancer. Application Load Balancers support HTTP and HTTPS and Network Load Balancers support TCP. - */ - Protocol?: ProtocolEnum; - /** - * The security policy that defines which protocols and ciphers are supported. For more information, see Security Policies in the Application Load Balancers Guide. - */ - SslPolicy?: SslPolicyName; - /** - * The default SSL server certificate. - */ - Certificates?: CertificateList; - /** - * The default action. For Application Load Balancers, the protocol of the specified target group must be HTTP or HTTPS. For Network Load Balancers, the protocol of the specified target group must be TCP. - */ - DefaultActions?: Actions; - } - export interface ModifyListenerOutput { - /** - * Information about the modified listeners. - */ - Listeners?: Listeners; - } - export interface ModifyLoadBalancerAttributesInput { - /** - * The Amazon Resource Name (ARN) of the load balancer. - */ - LoadBalancerArn: LoadBalancerArn; - /** - * The load balancer attributes. - */ - Attributes: LoadBalancerAttributes; - } - export interface ModifyLoadBalancerAttributesOutput { - /** - * Information about the load balancer attributes. - */ - Attributes?: LoadBalancerAttributes; - } - export interface ModifyRuleInput { - /** - * The Amazon Resource Name (ARN) of the rule. - */ - RuleArn: RuleArn; - /** - * The conditions. - */ - Conditions?: RuleConditionList; - /** - * The actions. The target group must use the HTTP or HTTPS protocol. - */ - Actions?: Actions; - } - export interface ModifyRuleOutput { - /** - * Information about the rule. - */ - Rules?: Rules; - } - export interface ModifyTargetGroupAttributesInput { - /** - * The Amazon Resource Name (ARN) of the target group. - */ - TargetGroupArn: TargetGroupArn; - /** - * The attributes. - */ - Attributes: TargetGroupAttributes; - } - export interface ModifyTargetGroupAttributesOutput { - /** - * Information about the attributes. - */ - Attributes?: TargetGroupAttributes; - } - export interface ModifyTargetGroupInput { - /** - * The Amazon Resource Name (ARN) of the target group. - */ - TargetGroupArn: TargetGroupArn; - /** - * The protocol the load balancer uses when performing health checks on targets. The TCP protocol is supported only if the protocol of the target group is TCP. - */ - HealthCheckProtocol?: ProtocolEnum; - /** - * The port the load balancer uses when performing health checks on targets. - */ - HealthCheckPort?: HealthCheckPort; - /** - * [HTTP/HTTPS health checks] The ping path that is the destination for the health check request. - */ - HealthCheckPath?: Path; - /** - * The approximate amount of time, in seconds, between health checks of an individual target. For Application Load Balancers, the range is 5 to 300 seconds. For Network Load Balancers, the supported values are 10 or 30 seconds. - */ - HealthCheckIntervalSeconds?: HealthCheckIntervalSeconds; - /** - * [HTTP/HTTPS health checks] The amount of time, in seconds, during which no response means a failed health check. - */ - HealthCheckTimeoutSeconds?: HealthCheckTimeoutSeconds; - /** - * The number of consecutive health checks successes required before considering an unhealthy target healthy. - */ - HealthyThresholdCount?: HealthCheckThresholdCount; - /** - * The number of consecutive health check failures required before considering the target unhealthy. For Network Load Balancers, this value must be the same as the healthy threshold count. - */ - UnhealthyThresholdCount?: HealthCheckThresholdCount; - /** - * [HTTP/HTTPS health checks] The HTTP codes to use when checking for a successful response from a target. - */ - Matcher?: Matcher; - } - export interface ModifyTargetGroupOutput { - /** - * Information about the target group. - */ - TargetGroups?: TargetGroups; - } - export type Name = string; - export type PageSize = number; - export type Path = string; - export type Port = number; - export type ProtocolEnum = "HTTP"|"HTTPS"|"TCP"|string; - export interface RegisterTargetsInput { - /** - * The Amazon Resource Name (ARN) of the target group. - */ - TargetGroupArn: TargetGroupArn; - /** - * The targets. - */ - Targets: TargetDescriptions; - } - export interface RegisterTargetsOutput { - } - export interface RemoveListenerCertificatesInput { - /** - * The Amazon Resource Name (ARN) of the listener. - */ - ListenerArn: ListenerArn; - /** - * The certificate to remove. You can specify one certificate per call. - */ - Certificates: CertificateList; - } - export interface RemoveListenerCertificatesOutput { - } - export interface RemoveTagsInput { - /** - * The Amazon Resource Name (ARN) of the resource. - */ - ResourceArns: ResourceArns; - /** - * The tag keys for the tags to remove. - */ - TagKeys: TagKeys; - } - export interface RemoveTagsOutput { - } - export type ResourceArn = string; - export type ResourceArns = ResourceArn[]; - export interface Rule { - /** - * The Amazon Resource Name (ARN) of the rule. - */ - RuleArn?: RuleArn; - /** - * The priority. - */ - Priority?: String; - /** - * The conditions. - */ - Conditions?: RuleConditionList; - /** - * The actions. - */ - Actions?: Actions; - /** - * Indicates whether this is the default rule. - */ - IsDefault?: IsDefault; - } - export type RuleArn = string; - export type RuleArns = RuleArn[]; - export interface RuleCondition { - /** - * The name of the field. The possible values are host-header and path-pattern. - */ - Field?: ConditionFieldName; - /** - * The condition value. If the field name is host-header, you can specify a single host name (for example, my.example.com). A host name is case insensitive, can be up to 128 characters in length, and can contain any of the following characters. Note that you can include up to three wildcard characters. A-Z, a-z, 0-9 - . * (matches 0 or more characters) ? (matches exactly 1 character) If the field name is path-pattern, you can specify a single path pattern (for example, /img/*). A path pattern is case sensitive, can be up to 128 characters in length, and can contain any of the following characters. Note that you can include up to three wildcard characters. A-Z, a-z, 0-9 _ - . $ / ~ " ' @ : + & (using &amp;) * (matches 0 or more characters) ? (matches exactly 1 character) - */ - Values?: ListOfString; - } - export type RuleConditionList = RuleCondition[]; - export type RulePriority = number; - export type RulePriorityList = RulePriorityPair[]; - export interface RulePriorityPair { - /** - * The Amazon Resource Name (ARN) of the rule. - */ - RuleArn?: RuleArn; - /** - * The rule priority. - */ - Priority?: RulePriority; - } - export type Rules = Rule[]; - export type SecurityGroupId = string; - export type SecurityGroups = SecurityGroupId[]; - export interface SetIpAddressTypeInput { - /** - * The Amazon Resource Name (ARN) of the load balancer. - */ - LoadBalancerArn: LoadBalancerArn; - /** - * The IP address type. The possible values are ipv4 (for IPv4 addresses) and dualstack (for IPv4 and IPv6 addresses). Internal load balancers must use ipv4. - */ - IpAddressType: IpAddressType; - } - export interface SetIpAddressTypeOutput { - /** - * The IP address type. - */ - IpAddressType?: IpAddressType; - } - export interface SetRulePrioritiesInput { - /** - * The rule priorities. - */ - RulePriorities: RulePriorityList; - } - export interface SetRulePrioritiesOutput { - /** - * Information about the rules. - */ - Rules?: Rules; - } - export interface SetSecurityGroupsInput { - /** - * The Amazon Resource Name (ARN) of the load balancer. - */ - LoadBalancerArn: LoadBalancerArn; - /** - * The IDs of the security groups. - */ - SecurityGroups: SecurityGroups; - } - export interface SetSecurityGroupsOutput { - /** - * The IDs of the security groups associated with the load balancer. - */ - SecurityGroupIds?: SecurityGroups; - } - export interface SetSubnetsInput { - /** - * The Amazon Resource Name (ARN) of the load balancer. - */ - LoadBalancerArn: LoadBalancerArn; - /** - * The IDs of the subnets. You must specify subnets from at least two Availability Zones. You can specify only one subnet per Availability Zone. You must specify either subnets or subnet mappings. - */ - Subnets: Subnets; - /** - * The IDs of the subnets. You must specify subnets from at least two Availability Zones. You can specify only one subnet per Availability Zone. You must specify either subnets or subnet mappings. The load balancer is allocated one static IP address per subnet. You cannot specify your own Elastic IP addresses. - */ - SubnetMappings?: SubnetMappings; - } - export interface SetSubnetsOutput { - /** - * Information about the subnet and Availability Zone. - */ - AvailabilityZones?: AvailabilityZones; - } - export type SslPolicies = SslPolicy[]; - export interface SslPolicy { - /** - * The protocols. - */ - SslProtocols?: SslProtocols; - /** - * The ciphers. - */ - Ciphers?: Ciphers; - /** - * The name of the policy. - */ - Name?: SslPolicyName; - } - export type SslPolicyName = string; - export type SslPolicyNames = SslPolicyName[]; - export type SslProtocol = string; - export type SslProtocols = SslProtocol[]; - export type StateReason = string; - export type String = string; - export type StringValue = string; - export type SubnetId = string; - export interface SubnetMapping { - /** - * The ID of the subnet. - */ - SubnetId?: SubnetId; - /** - * [Network Load Balancers] The allocation ID of the Elastic IP address. - */ - AllocationId?: AllocationId; - } - export type SubnetMappings = SubnetMapping[]; - export type Subnets = SubnetId[]; - export interface Tag { - /** - * The key of the tag. - */ - Key: TagKey; - /** - * The value of the tag. - */ - Value?: TagValue; - } - export interface TagDescription { - /** - * The Amazon Resource Name (ARN) of the resource. - */ - ResourceArn?: ResourceArn; - /** - * Information about the tags. - */ - Tags?: TagList; - } - export type TagDescriptions = TagDescription[]; - export type TagKey = string; - export type TagKeys = TagKey[]; - export type TagList = Tag[]; - export type TagValue = string; - export interface TargetDescription { - /** - * The ID of the target. If the target type of the target group is instance, specify an instance ID. If the target type is ip, specify an IP address. - */ - Id: TargetId; - /** - * The port on which the target is listening. - */ - Port?: Port; - /** - * An Availability Zone or all. This determines whether the target receives traffic from the load balancer nodes in the specified Availability Zone or from all enabled Availability Zones for the load balancer. This parameter is not supported if the target type of the target group is instance. If the IP address is in a subnet of the VPC for the target group, the Availability Zone is automatically detected and this parameter is optional. If the IP address is outside the VPC, this parameter is required. With an Application Load Balancer, if the IP address is outside the VPC for the target group, the only supported value is all. - */ - AvailabilityZone?: ZoneName; - } - export type TargetDescriptions = TargetDescription[]; - export interface TargetGroup { - /** - * The Amazon Resource Name (ARN) of the target group. - */ - TargetGroupArn?: TargetGroupArn; - /** - * The name of the target group. - */ - TargetGroupName?: TargetGroupName; - /** - * The protocol to use for routing traffic to the targets. - */ - Protocol?: ProtocolEnum; - /** - * The port on which the targets are listening. - */ - Port?: Port; - /** - * The ID of the VPC for the targets. - */ - VpcId?: VpcId; - /** - * The protocol to use to connect with the target. - */ - HealthCheckProtocol?: ProtocolEnum; - /** - * The port to use to connect with the target. - */ - HealthCheckPort?: HealthCheckPort; - /** - * The approximate amount of time, in seconds, between health checks of an individual target. - */ - HealthCheckIntervalSeconds?: HealthCheckIntervalSeconds; - /** - * The amount of time, in seconds, during which no response means a failed health check. - */ - HealthCheckTimeoutSeconds?: HealthCheckTimeoutSeconds; - /** - * The number of consecutive health checks successes required before considering an unhealthy target healthy. - */ - HealthyThresholdCount?: HealthCheckThresholdCount; - /** - * The number of consecutive health check failures required before considering the target unhealthy. - */ - UnhealthyThresholdCount?: HealthCheckThresholdCount; - /** - * The destination for the health check request. - */ - HealthCheckPath?: Path; - /** - * The HTTP codes to use when checking for a successful response from a target. - */ - Matcher?: Matcher; - /** - * The Amazon Resource Names (ARN) of the load balancers that route traffic to this target group. - */ - LoadBalancerArns?: LoadBalancerArns; - /** - * The type of target that you must specify when registering targets with this target group. The possible values are instance (targets are specified by instance ID) or ip (targets are specified by IP address). - */ - TargetType?: TargetTypeEnum; - } - export type TargetGroupArn = string; - export type TargetGroupArns = TargetGroupArn[]; - export interface TargetGroupAttribute { - /** - * The name of the attribute. deregistration_delay.timeout_seconds - The amount time for Elastic Load Balancing to wait before changing the state of a deregistering target from draining to unused. The range is 0-3600 seconds. The default value is 300 seconds. stickiness.enabled - [Application Load Balancers] Indicates whether sticky sessions are enabled. The value is true or false. stickiness.type - [Application Load Balancers] The type of sticky sessions. The possible value is lb_cookie. stickiness.lb_cookie.duration_seconds - [Application Load Balancers] The time period, in seconds, during which requests from a client should be routed to the same target. After this time period expires, the load balancer-generated cookie is considered stale. The range is 1 second to 1 week (604800 seconds). The default value is 1 day (86400 seconds). - */ - Key?: TargetGroupAttributeKey; - /** - * The value of the attribute. - */ - Value?: TargetGroupAttributeValue; - } - export type TargetGroupAttributeKey = string; - export type TargetGroupAttributeValue = string; - export type TargetGroupAttributes = TargetGroupAttribute[]; - export type TargetGroupName = string; - export type TargetGroupNames = TargetGroupName[]; - export type TargetGroups = TargetGroup[]; - export interface TargetHealth { - /** - * The state of the target. - */ - State?: TargetHealthStateEnum; - /** - * The reason code. If the target state is healthy, a reason code is not provided. If the target state is initial, the reason code can be one of the following values: Elb.RegistrationInProgress - The target is in the process of being registered with the load balancer. Elb.InitialHealthChecking - The load balancer is still sending the target the minimum number of health checks required to determine its health status. If the target state is unhealthy, the reason code can be one of the following values: Target.ResponseCodeMismatch - The health checks did not return an expected HTTP code. Target.Timeout - The health check requests timed out. Target.FailedHealthChecks - The health checks failed because the connection to the target timed out, the target response was malformed, or the target failed the health check for an unknown reason. Elb.InternalError - The health checks failed due to an internal error. If the target state is unused, the reason code can be one of the following values: Target.NotRegistered - The target is not registered with the target group. Target.NotInUse - The target group is not used by any load balancer or the target is in an Availability Zone that is not enabled for its load balancer. Target.IpUnusable - The target IP address is reserved for use by a load balancer. Target.InvalidState - The target is in the stopped or terminated state. If the target state is draining, the reason code can be the following value: Target.DeregistrationInProgress - The target is in the process of being deregistered and the deregistration delay period has not expired. - */ - Reason?: TargetHealthReasonEnum; - /** - * A description of the target health that provides additional details. If the state is healthy, a description is not provided. - */ - Description?: Description; - } - export interface TargetHealthDescription { - /** - * The description of the target. - */ - Target?: TargetDescription; - /** - * The port to use to connect with the target. - */ - HealthCheckPort?: HealthCheckPort; - /** - * The health information for the target. - */ - TargetHealth?: TargetHealth; - } - export type TargetHealthDescriptions = TargetHealthDescription[]; - export type TargetHealthReasonEnum = "Elb.RegistrationInProgress"|"Elb.InitialHealthChecking"|"Target.ResponseCodeMismatch"|"Target.Timeout"|"Target.FailedHealthChecks"|"Target.NotRegistered"|"Target.NotInUse"|"Target.DeregistrationInProgress"|"Target.InvalidState"|"Target.IpUnusable"|"Elb.InternalError"|string; - export type TargetHealthStateEnum = "initial"|"healthy"|"unhealthy"|"unused"|"draining"|"unavailable"|string; - export type TargetId = string; - export type TargetTypeEnum = "instance"|"ip"|string; - export type VpcId = string; - export type ZoneName = string; - /** - * A string in YYYY-MM-DD format that represents the latest possible API version that can be used in this service. Specify 'latest' to use the latest possible version. - */ - export type apiVersion = "2015-12-01"|"latest"|string; - export interface ClientApiVersions { - /** - * A string in YYYY-MM-DD format that represents the latest possible API version that can be used in this service. Specify 'latest' to use the latest possible version. - */ - apiVersion?: apiVersion; - } - export type ClientConfiguration = ServiceConfigurationOptions & ClientApiVersions; - /** - * Contains interfaces for use with the ELBv2 client. - */ - export import Types = ELBv2; -} -export = ELBv2; diff --git a/workshops/monte-carlo-on-ec2-spot-fleet/src/web/node_modules/aws-sdk/clients/elbv2.js b/workshops/monte-carlo-on-ec2-spot-fleet/src/web/node_modules/aws-sdk/clients/elbv2.js deleted file mode 100644 index 6b98bf82..00000000 --- a/workshops/monte-carlo-on-ec2-spot-fleet/src/web/node_modules/aws-sdk/clients/elbv2.js +++ /dev/null @@ -1,19 +0,0 @@ -require('../lib/node_loader'); -var AWS = require('../lib/core'); -var Service = AWS.Service; -var apiLoader = AWS.apiLoader; - -apiLoader.services['elbv2'] = {}; -AWS.ELBv2 = Service.defineService('elbv2', ['2015-12-01']); -Object.defineProperty(apiLoader.services['elbv2'], '2015-12-01', { - get: function get() { - var model = require('../apis/elasticloadbalancingv2-2015-12-01.min.json'); - model.paginators = require('../apis/elasticloadbalancingv2-2015-12-01.paginators.json').pagination; - model.waiters = require('../apis/elasticloadbalancingv2-2015-12-01.waiters2.json').waiters; - return model; - }, - enumerable: true, - configurable: true -}); - -module.exports = AWS.ELBv2; diff --git a/workshops/monte-carlo-on-ec2-spot-fleet/src/web/node_modules/aws-sdk/clients/emr.d.ts b/workshops/monte-carlo-on-ec2-spot-fleet/src/web/node_modules/aws-sdk/clients/emr.d.ts deleted file mode 100644 index 99a1e803..00000000 --- a/workshops/monte-carlo-on-ec2-spot-fleet/src/web/node_modules/aws-sdk/clients/emr.d.ts +++ /dev/null @@ -1,2361 +0,0 @@ -import {Request} from '../lib/request'; -import {Response} from '../lib/response'; -import {AWSError} from '../lib/error'; -import {Service} from '../lib/service'; -import {ServiceConfigurationOptions} from '../lib/service'; -import {ConfigBase as Config} from '../lib/config'; -interface Blob {} -declare class EMR extends Service { - /** - * Constructs a service object. This object has one method for each API operation. - */ - constructor(options?: EMR.Types.ClientConfiguration) - config: Config & EMR.Types.ClientConfiguration; - /** - * Adds an instance fleet to a running cluster. The instance fleet configuration is available only in Amazon EMR versions 4.8.0 and later, excluding 5.0.x. - */ - addInstanceFleet(params: EMR.Types.AddInstanceFleetInput, callback?: (err: AWSError, data: EMR.Types.AddInstanceFleetOutput) => void): Request; - /** - * Adds an instance fleet to a running cluster. The instance fleet configuration is available only in Amazon EMR versions 4.8.0 and later, excluding 5.0.x. - */ - addInstanceFleet(callback?: (err: AWSError, data: EMR.Types.AddInstanceFleetOutput) => void): Request; - /** - * Adds one or more instance groups to a running cluster. - */ - addInstanceGroups(params: EMR.Types.AddInstanceGroupsInput, callback?: (err: AWSError, data: EMR.Types.AddInstanceGroupsOutput) => void): Request; - /** - * Adds one or more instance groups to a running cluster. - */ - addInstanceGroups(callback?: (err: AWSError, data: EMR.Types.AddInstanceGroupsOutput) => void): Request; - /** - * AddJobFlowSteps adds new steps to a running cluster. A maximum of 256 steps are allowed in each job flow. If your cluster is long-running (such as a Hive data warehouse) or complex, you may require more than 256 steps to process your data. You can bypass the 256-step limitation in various ways, including using SSH to connect to the master node and submitting queries directly to the software running on the master node, such as Hive and Hadoop. For more information on how to do this, see Add More than 256 Steps to a Cluster in the Amazon EMR Management Guide. A step specifies the location of a JAR file stored either on the master node of the cluster or in Amazon S3. Each step is performed by the main function of the main class of the JAR file. The main class can be specified either in the manifest of the JAR or by using the MainFunction parameter of the step. Amazon EMR executes each step in the order listed. For a step to be considered complete, the main function must exit with a zero exit code and all Hadoop jobs started while the step was running must have completed and run successfully. You can only add steps to a cluster that is in one of the following states: STARTING, BOOTSTRAPPING, RUNNING, or WAITING. - */ - addJobFlowSteps(params: EMR.Types.AddJobFlowStepsInput, callback?: (err: AWSError, data: EMR.Types.AddJobFlowStepsOutput) => void): Request; - /** - * AddJobFlowSteps adds new steps to a running cluster. A maximum of 256 steps are allowed in each job flow. If your cluster is long-running (such as a Hive data warehouse) or complex, you may require more than 256 steps to process your data. You can bypass the 256-step limitation in various ways, including using SSH to connect to the master node and submitting queries directly to the software running on the master node, such as Hive and Hadoop. For more information on how to do this, see Add More than 256 Steps to a Cluster in the Amazon EMR Management Guide. A step specifies the location of a JAR file stored either on the master node of the cluster or in Amazon S3. Each step is performed by the main function of the main class of the JAR file. The main class can be specified either in the manifest of the JAR or by using the MainFunction parameter of the step. Amazon EMR executes each step in the order listed. For a step to be considered complete, the main function must exit with a zero exit code and all Hadoop jobs started while the step was running must have completed and run successfully. You can only add steps to a cluster that is in one of the following states: STARTING, BOOTSTRAPPING, RUNNING, or WAITING. - */ - addJobFlowSteps(callback?: (err: AWSError, data: EMR.Types.AddJobFlowStepsOutput) => void): Request; - /** - * Adds tags to an Amazon EMR resource. Tags make it easier to associate clusters in various ways, such as grouping clusters to track your Amazon EMR resource allocation costs. For more information, see Tagging Amazon EMR Resources. - */ - addTags(params: EMR.Types.AddTagsInput, callback?: (err: AWSError, data: EMR.Types.AddTagsOutput) => void): Request; - /** - * Adds tags to an Amazon EMR resource. Tags make it easier to associate clusters in various ways, such as grouping clusters to track your Amazon EMR resource allocation costs. For more information, see Tagging Amazon EMR Resources. - */ - addTags(callback?: (err: AWSError, data: EMR.Types.AddTagsOutput) => void): Request; - /** - * Cancels a pending step or steps in a running cluster. Available only in Amazon EMR versions 4.8.0 and later, excluding version 5.0.0. A maximum of 256 steps are allowed in each CancelSteps request. CancelSteps is idempotent but asynchronous; it does not guarantee a step will be canceled, even if the request is successfully submitted. You can only cancel steps that are in a PENDING state. - */ - cancelSteps(params: EMR.Types.CancelStepsInput, callback?: (err: AWSError, data: EMR.Types.CancelStepsOutput) => void): Request; - /** - * Cancels a pending step or steps in a running cluster. Available only in Amazon EMR versions 4.8.0 and later, excluding version 5.0.0. A maximum of 256 steps are allowed in each CancelSteps request. CancelSteps is idempotent but asynchronous; it does not guarantee a step will be canceled, even if the request is successfully submitted. You can only cancel steps that are in a PENDING state. - */ - cancelSteps(callback?: (err: AWSError, data: EMR.Types.CancelStepsOutput) => void): Request; - /** - * Creates a security configuration, which is stored in the service and can be specified when a cluster is created. - */ - createSecurityConfiguration(params: EMR.Types.CreateSecurityConfigurationInput, callback?: (err: AWSError, data: EMR.Types.CreateSecurityConfigurationOutput) => void): Request; - /** - * Creates a security configuration, which is stored in the service and can be specified when a cluster is created. - */ - createSecurityConfiguration(callback?: (err: AWSError, data: EMR.Types.CreateSecurityConfigurationOutput) => void): Request; - /** - * Deletes a security configuration. - */ - deleteSecurityConfiguration(params: EMR.Types.DeleteSecurityConfigurationInput, callback?: (err: AWSError, data: EMR.Types.DeleteSecurityConfigurationOutput) => void): Request; - /** - * Deletes a security configuration. - */ - deleteSecurityConfiguration(callback?: (err: AWSError, data: EMR.Types.DeleteSecurityConfigurationOutput) => void): Request; - /** - * Provides cluster-level details including status, hardware and software configuration, VPC settings, and so on. For information about the cluster steps, see ListSteps. - */ - describeCluster(params: EMR.Types.DescribeClusterInput, callback?: (err: AWSError, data: EMR.Types.DescribeClusterOutput) => void): Request; - /** - * Provides cluster-level details including status, hardware and software configuration, VPC settings, and so on. For information about the cluster steps, see ListSteps. - */ - describeCluster(callback?: (err: AWSError, data: EMR.Types.DescribeClusterOutput) => void): Request; - /** - * This API is deprecated and will eventually be removed. We recommend you use ListClusters, DescribeCluster, ListSteps, ListInstanceGroups and ListBootstrapActions instead. DescribeJobFlows returns a list of job flows that match all of the supplied parameters. The parameters can include a list of job flow IDs, job flow states, and restrictions on job flow creation date and time. Regardless of supplied parameters, only job flows created within the last two months are returned. If no parameters are supplied, then job flows matching either of the following criteria are returned: Job flows created and completed in the last two weeks Job flows created within the last two months that are in one of the following states: RUNNING, WAITING, SHUTTING_DOWN, STARTING Amazon EMR can return a maximum of 512 job flow descriptions. - */ - describeJobFlows(params: EMR.Types.DescribeJobFlowsInput, callback?: (err: AWSError, data: EMR.Types.DescribeJobFlowsOutput) => void): Request; - /** - * This API is deprecated and will eventually be removed. We recommend you use ListClusters, DescribeCluster, ListSteps, ListInstanceGroups and ListBootstrapActions instead. DescribeJobFlows returns a list of job flows that match all of the supplied parameters. The parameters can include a list of job flow IDs, job flow states, and restrictions on job flow creation date and time. Regardless of supplied parameters, only job flows created within the last two months are returned. If no parameters are supplied, then job flows matching either of the following criteria are returned: Job flows created and completed in the last two weeks Job flows created within the last two months that are in one of the following states: RUNNING, WAITING, SHUTTING_DOWN, STARTING Amazon EMR can return a maximum of 512 job flow descriptions. - */ - describeJobFlows(callback?: (err: AWSError, data: EMR.Types.DescribeJobFlowsOutput) => void): Request; - /** - * Provides the details of a security configuration by returning the configuration JSON. - */ - describeSecurityConfiguration(params: EMR.Types.DescribeSecurityConfigurationInput, callback?: (err: AWSError, data: EMR.Types.DescribeSecurityConfigurationOutput) => void): Request; - /** - * Provides the details of a security configuration by returning the configuration JSON. - */ - describeSecurityConfiguration(callback?: (err: AWSError, data: EMR.Types.DescribeSecurityConfigurationOutput) => void): Request; - /** - * Provides more detail about the cluster step. - */ - describeStep(params: EMR.Types.DescribeStepInput, callback?: (err: AWSError, data: EMR.Types.DescribeStepOutput) => void): Request; - /** - * Provides more detail about the cluster step. - */ - describeStep(callback?: (err: AWSError, data: EMR.Types.DescribeStepOutput) => void): Request; - /** - * Provides information about the bootstrap actions associated with a cluster. - */ - listBootstrapActions(params: EMR.Types.ListBootstrapActionsInput, callback?: (err: AWSError, data: EMR.Types.ListBootstrapActionsOutput) => void): Request; - /** - * Provides information about the bootstrap actions associated with a cluster. - */ - listBootstrapActions(callback?: (err: AWSError, data: EMR.Types.ListBootstrapActionsOutput) => void): Request; - /** - * Provides the status of all clusters visible to this AWS account. Allows you to filter the list of clusters based on certain criteria; for example, filtering by cluster creation date and time or by status. This call returns a maximum of 50 clusters per call, but returns a marker to track the paging of the cluster list across multiple ListClusters calls. - */ - listClusters(params: EMR.Types.ListClustersInput, callback?: (err: AWSError, data: EMR.Types.ListClustersOutput) => void): Request; - /** - * Provides the status of all clusters visible to this AWS account. Allows you to filter the list of clusters based on certain criteria; for example, filtering by cluster creation date and time or by status. This call returns a maximum of 50 clusters per call, but returns a marker to track the paging of the cluster list across multiple ListClusters calls. - */ - listClusters(callback?: (err: AWSError, data: EMR.Types.ListClustersOutput) => void): Request; - /** - * Lists all available details about the instance fleets in a cluster. The instance fleet configuration is available only in Amazon EMR versions 4.8.0 and later, excluding 5.0.x versions. - */ - listInstanceFleets(params: EMR.Types.ListInstanceFleetsInput, callback?: (err: AWSError, data: EMR.Types.ListInstanceFleetsOutput) => void): Request; - /** - * Lists all available details about the instance fleets in a cluster. The instance fleet configuration is available only in Amazon EMR versions 4.8.0 and later, excluding 5.0.x versions. - */ - listInstanceFleets(callback?: (err: AWSError, data: EMR.Types.ListInstanceFleetsOutput) => void): Request; - /** - * Provides all available details about the instance groups in a cluster. - */ - listInstanceGroups(params: EMR.Types.ListInstanceGroupsInput, callback?: (err: AWSError, data: EMR.Types.ListInstanceGroupsOutput) => void): Request; - /** - * Provides all available details about the instance groups in a cluster. - */ - listInstanceGroups(callback?: (err: AWSError, data: EMR.Types.ListInstanceGroupsOutput) => void): Request; - /** - * Provides information for all active EC2 instances and EC2 instances terminated in the last 30 days, up to a maximum of 2,000. EC2 instances in any of the following states are considered active: AWAITING_FULFILLMENT, PROVISIONING, BOOTSTRAPPING, RUNNING. - */ - listInstances(params: EMR.Types.ListInstancesInput, callback?: (err: AWSError, data: EMR.Types.ListInstancesOutput) => void): Request; - /** - * Provides information for all active EC2 instances and EC2 instances terminated in the last 30 days, up to a maximum of 2,000. EC2 instances in any of the following states are considered active: AWAITING_FULFILLMENT, PROVISIONING, BOOTSTRAPPING, RUNNING. - */ - listInstances(callback?: (err: AWSError, data: EMR.Types.ListInstancesOutput) => void): Request; - /** - * Lists all the security configurations visible to this account, providing their creation dates and times, and their names. This call returns a maximum of 50 clusters per call, but returns a marker to track the paging of the cluster list across multiple ListSecurityConfigurations calls. - */ - listSecurityConfigurations(params: EMR.Types.ListSecurityConfigurationsInput, callback?: (err: AWSError, data: EMR.Types.ListSecurityConfigurationsOutput) => void): Request; - /** - * Lists all the security configurations visible to this account, providing their creation dates and times, and their names. This call returns a maximum of 50 clusters per call, but returns a marker to track the paging of the cluster list across multiple ListSecurityConfigurations calls. - */ - listSecurityConfigurations(callback?: (err: AWSError, data: EMR.Types.ListSecurityConfigurationsOutput) => void): Request; - /** - * Provides a list of steps for the cluster in reverse order unless you specify stepIds with the request. - */ - listSteps(params: EMR.Types.ListStepsInput, callback?: (err: AWSError, data: EMR.Types.ListStepsOutput) => void): Request; - /** - * Provides a list of steps for the cluster in reverse order unless you specify stepIds with the request. - */ - listSteps(callback?: (err: AWSError, data: EMR.Types.ListStepsOutput) => void): Request; - /** - * Modifies the target On-Demand and target Spot capacities for the instance fleet with the specified InstanceFleetID within the cluster specified using ClusterID. The call either succeeds or fails atomically. The instance fleet configuration is available only in Amazon EMR versions 4.8.0 and later, excluding 5.0.x versions. - */ - modifyInstanceFleet(params: EMR.Types.ModifyInstanceFleetInput, callback?: (err: AWSError, data: {}) => void): Request<{}, AWSError>; - /** - * Modifies the target On-Demand and target Spot capacities for the instance fleet with the specified InstanceFleetID within the cluster specified using ClusterID. The call either succeeds or fails atomically. The instance fleet configuration is available only in Amazon EMR versions 4.8.0 and later, excluding 5.0.x versions. - */ - modifyInstanceFleet(callback?: (err: AWSError, data: {}) => void): Request<{}, AWSError>; - /** - * ModifyInstanceGroups modifies the number of nodes and configuration settings of an instance group. The input parameters include the new target instance count for the group and the instance group ID. The call will either succeed or fail atomically. - */ - modifyInstanceGroups(params: EMR.Types.ModifyInstanceGroupsInput, callback?: (err: AWSError, data: {}) => void): Request<{}, AWSError>; - /** - * ModifyInstanceGroups modifies the number of nodes and configuration settings of an instance group. The input parameters include the new target instance count for the group and the instance group ID. The call will either succeed or fail atomically. - */ - modifyInstanceGroups(callback?: (err: AWSError, data: {}) => void): Request<{}, AWSError>; - /** - * Creates or updates an automatic scaling policy for a core instance group or task instance group in an Amazon EMR cluster. The automatic scaling policy defines how an instance group dynamically adds and terminates EC2 instances in response to the value of a CloudWatch metric. - */ - putAutoScalingPolicy(params: EMR.Types.PutAutoScalingPolicyInput, callback?: (err: AWSError, data: EMR.Types.PutAutoScalingPolicyOutput) => void): Request; - /** - * Creates or updates an automatic scaling policy for a core instance group or task instance group in an Amazon EMR cluster. The automatic scaling policy defines how an instance group dynamically adds and terminates EC2 instances in response to the value of a CloudWatch metric. - */ - putAutoScalingPolicy(callback?: (err: AWSError, data: EMR.Types.PutAutoScalingPolicyOutput) => void): Request; - /** - * Removes an automatic scaling policy from a specified instance group within an EMR cluster. - */ - removeAutoScalingPolicy(params: EMR.Types.RemoveAutoScalingPolicyInput, callback?: (err: AWSError, data: EMR.Types.RemoveAutoScalingPolicyOutput) => void): Request; - /** - * Removes an automatic scaling policy from a specified instance group within an EMR cluster. - */ - removeAutoScalingPolicy(callback?: (err: AWSError, data: EMR.Types.RemoveAutoScalingPolicyOutput) => void): Request; - /** - * Removes tags from an Amazon EMR resource. Tags make it easier to associate clusters in various ways, such as grouping clusters to track your Amazon EMR resource allocation costs. For more information, see Tagging Amazon EMR Resources. The following example removes the stack tag with value Prod from a cluster: - */ - removeTags(params: EMR.Types.RemoveTagsInput, callback?: (err: AWSError, data: EMR.Types.RemoveTagsOutput) => void): Request; - /** - * Removes tags from an Amazon EMR resource. Tags make it easier to associate clusters in various ways, such as grouping clusters to track your Amazon EMR resource allocation costs. For more information, see Tagging Amazon EMR Resources. The following example removes the stack tag with value Prod from a cluster: - */ - removeTags(callback?: (err: AWSError, data: EMR.Types.RemoveTagsOutput) => void): Request; - /** - * RunJobFlow creates and starts running a new cluster (job flow). The cluster runs the steps specified. After the steps complete, the cluster stops and the HDFS partition is lost. To prevent loss of data, configure the last step of the job flow to store results in Amazon S3. If the JobFlowInstancesConfig KeepJobFlowAliveWhenNoSteps parameter is set to TRUE, the cluster transitions to the WAITING state rather than shutting down after the steps have completed. For additional protection, you can set the JobFlowInstancesConfig TerminationProtected parameter to TRUE to lock the cluster and prevent it from being terminated by API call, user intervention, or in the event of a job flow error. A maximum of 256 steps are allowed in each job flow. If your cluster is long-running (such as a Hive data warehouse) or complex, you may require more than 256 steps to process your data. You can bypass the 256-step limitation in various ways, including using the SSH shell to connect to the master node and submitting queries directly to the software running on the master node, such as Hive and Hadoop. For more information on how to do this, see Add More than 256 Steps to a Cluster in the Amazon EMR Management Guide. For long running clusters, we recommend that you periodically store your results. The instance fleets configuration is available only in Amazon EMR versions 4.8.0 and later, excluding 5.0.x versions. The RunJobFlow request can contain InstanceFleets parameters or InstanceGroups parameters, but not both. - */ - runJobFlow(params: EMR.Types.RunJobFlowInput, callback?: (err: AWSError, data: EMR.Types.RunJobFlowOutput) => void): Request; - /** - * RunJobFlow creates and starts running a new cluster (job flow). The cluster runs the steps specified. After the steps complete, the cluster stops and the HDFS partition is lost. To prevent loss of data, configure the last step of the job flow to store results in Amazon S3. If the JobFlowInstancesConfig KeepJobFlowAliveWhenNoSteps parameter is set to TRUE, the cluster transitions to the WAITING state rather than shutting down after the steps have completed. For additional protection, you can set the JobFlowInstancesConfig TerminationProtected parameter to TRUE to lock the cluster and prevent it from being terminated by API call, user intervention, or in the event of a job flow error. A maximum of 256 steps are allowed in each job flow. If your cluster is long-running (such as a Hive data warehouse) or complex, you may require more than 256 steps to process your data. You can bypass the 256-step limitation in various ways, including using the SSH shell to connect to the master node and submitting queries directly to the software running on the master node, such as Hive and Hadoop. For more information on how to do this, see Add More than 256 Steps to a Cluster in the Amazon EMR Management Guide. For long running clusters, we recommend that you periodically store your results. The instance fleets configuration is available only in Amazon EMR versions 4.8.0 and later, excluding 5.0.x versions. The RunJobFlow request can contain InstanceFleets parameters or InstanceGroups parameters, but not both. - */ - runJobFlow(callback?: (err: AWSError, data: EMR.Types.RunJobFlowOutput) => void): Request; - /** - * SetTerminationProtection locks a cluster (job flow) so the EC2 instances in the cluster cannot be terminated by user intervention, an API call, or in the event of a job-flow error. The cluster still terminates upon successful completion of the job flow. Calling SetTerminationProtection on a cluster is similar to calling the Amazon EC2 DisableAPITermination API on all EC2 instances in a cluster. SetTerminationProtection is used to prevent accidental termination of a cluster and to ensure that in the event of an error, the instances persist so that you can recover any data stored in their ephemeral instance storage. To terminate a cluster that has been locked by setting SetTerminationProtection to true, you must first unlock the job flow by a subsequent call to SetTerminationProtection in which you set the value to false. For more information, seeManaging Cluster Termination in the Amazon EMR Management Guide. - */ - setTerminationProtection(params: EMR.Types.SetTerminationProtectionInput, callback?: (err: AWSError, data: {}) => void): Request<{}, AWSError>; - /** - * SetTerminationProtection locks a cluster (job flow) so the EC2 instances in the cluster cannot be terminated by user intervention, an API call, or in the event of a job-flow error. The cluster still terminates upon successful completion of the job flow. Calling SetTerminationProtection on a cluster is similar to calling the Amazon EC2 DisableAPITermination API on all EC2 instances in a cluster. SetTerminationProtection is used to prevent accidental termination of a cluster and to ensure that in the event of an error, the instances persist so that you can recover any data stored in their ephemeral instance storage. To terminate a cluster that has been locked by setting SetTerminationProtection to true, you must first unlock the job flow by a subsequent call to SetTerminationProtection in which you set the value to false. For more information, seeManaging Cluster Termination in the Amazon EMR Management Guide. - */ - setTerminationProtection(callback?: (err: AWSError, data: {}) => void): Request<{}, AWSError>; - /** - * Sets whether all AWS Identity and Access Management (IAM) users under your account can access the specified clusters (job flows). This action works on running clusters. You can also set the visibility of a cluster when you launch it using the VisibleToAllUsers parameter of RunJobFlow. The SetVisibleToAllUsers action can be called only by an IAM user who created the cluster or the AWS account that owns the cluster. - */ - setVisibleToAllUsers(params: EMR.Types.SetVisibleToAllUsersInput, callback?: (err: AWSError, data: {}) => void): Request<{}, AWSError>; - /** - * Sets whether all AWS Identity and Access Management (IAM) users under your account can access the specified clusters (job flows). This action works on running clusters. You can also set the visibility of a cluster when you launch it using the VisibleToAllUsers parameter of RunJobFlow. The SetVisibleToAllUsers action can be called only by an IAM user who created the cluster or the AWS account that owns the cluster. - */ - setVisibleToAllUsers(callback?: (err: AWSError, data: {}) => void): Request<{}, AWSError>; - /** - * TerminateJobFlows shuts a list of clusters (job flows) down. When a job flow is shut down, any step not yet completed is canceled and the EC2 instances on which the cluster is running are stopped. Any log files not already saved are uploaded to Amazon S3 if a LogUri was specified when the cluster was created. The maximum number of clusters allowed is 10. The call to TerminateJobFlows is asynchronous. Depending on the configuration of the cluster, it may take up to 1-5 minutes for the cluster to completely terminate and release allocated resources, such as Amazon EC2 instances. - */ - terminateJobFlows(params: EMR.Types.TerminateJobFlowsInput, callback?: (err: AWSError, data: {}) => void): Request<{}, AWSError>; - /** - * TerminateJobFlows shuts a list of clusters (job flows) down. When a job flow is shut down, any step not yet completed is canceled and the EC2 instances on which the cluster is running are stopped. Any log files not already saved are uploaded to Amazon S3 if a LogUri was specified when the cluster was created. The maximum number of clusters allowed is 10. The call to TerminateJobFlows is asynchronous. Depending on the configuration of the cluster, it may take up to 1-5 minutes for the cluster to completely terminate and release allocated resources, such as Amazon EC2 instances. - */ - terminateJobFlows(callback?: (err: AWSError, data: {}) => void): Request<{}, AWSError>; - /** - * Waits for the clusterRunning state by periodically calling the underlying EMR.describeClusteroperation every 30 seconds (at most 60 times). - */ - waitFor(state: "clusterRunning", params: EMR.Types.DescribeClusterInput, callback?: (err: AWSError, data: EMR.Types.DescribeClusterOutput) => void): Request; - /** - * Waits for the clusterRunning state by periodically calling the underlying EMR.describeClusteroperation every 30 seconds (at most 60 times). - */ - waitFor(state: "clusterRunning", callback?: (err: AWSError, data: EMR.Types.DescribeClusterOutput) => void): Request; - /** - * Waits for the stepComplete state by periodically calling the underlying EMR.describeStepoperation every 30 seconds (at most 60 times). - */ - waitFor(state: "stepComplete", params: EMR.Types.DescribeStepInput, callback?: (err: AWSError, data: EMR.Types.DescribeStepOutput) => void): Request; - /** - * Waits for the stepComplete state by periodically calling the underlying EMR.describeStepoperation every 30 seconds (at most 60 times). - */ - waitFor(state: "stepComplete", callback?: (err: AWSError, data: EMR.Types.DescribeStepOutput) => void): Request; - /** - * Waits for the clusterTerminated state by periodically calling the underlying EMR.describeClusteroperation every 30 seconds (at most 60 times). - */ - waitFor(state: "clusterTerminated", params: EMR.Types.DescribeClusterInput, callback?: (err: AWSError, data: EMR.Types.DescribeClusterOutput) => void): Request; - /** - * Waits for the clusterTerminated state by periodically calling the underlying EMR.describeClusteroperation every 30 seconds (at most 60 times). - */ - waitFor(state: "clusterTerminated", callback?: (err: AWSError, data: EMR.Types.DescribeClusterOutput) => void): Request; -} -declare namespace EMR { - export type ActionOnFailure = "TERMINATE_JOB_FLOW"|"TERMINATE_CLUSTER"|"CANCEL_AND_WAIT"|"CONTINUE"|string; - export interface AddInstanceFleetInput { - /** - * The unique identifier of the cluster. - */ - ClusterId: XmlStringMaxLen256; - /** - * Specifies the configuration of the instance fleet. - */ - InstanceFleet: InstanceFleetConfig; - } - export interface AddInstanceFleetOutput { - /** - * The unique identifier of the cluster. - */ - ClusterId?: XmlStringMaxLen256; - /** - * The unique identifier of the instance fleet. - */ - InstanceFleetId?: InstanceFleetId; - } - export interface AddInstanceGroupsInput { - /** - * Instance groups to add. - */ - InstanceGroups: InstanceGroupConfigList; - /** - * Job flow in which to add the instance groups. - */ - JobFlowId: XmlStringMaxLen256; - } - export interface AddInstanceGroupsOutput { - /** - * The job flow ID in which the instance groups are added. - */ - JobFlowId?: XmlStringMaxLen256; - /** - * Instance group IDs of the newly created instance groups. - */ - InstanceGroupIds?: InstanceGroupIdsList; - } - export interface AddJobFlowStepsInput { - /** - * A string that uniquely identifies the job flow. This identifier is returned by RunJobFlow and can also be obtained from ListClusters. - */ - JobFlowId: XmlStringMaxLen256; - /** - * A list of StepConfig to be executed by the job flow. - */ - Steps: StepConfigList; - } - export interface AddJobFlowStepsOutput { - /** - * The identifiers of the list of steps added to the job flow. - */ - StepIds?: StepIdsList; - } - export interface AddTagsInput { - /** - * The Amazon EMR resource identifier to which tags will be added. This value must be a cluster identifier. - */ - ResourceId: ResourceId; - /** - * A list of tags to associate with a cluster and propagate to EC2 instances. Tags are user-defined key/value pairs that consist of a required key string with a maximum of 128 characters, and an optional value string with a maximum of 256 characters. - */ - Tags: TagList; - } - export interface AddTagsOutput { - } - export type AdjustmentType = "CHANGE_IN_CAPACITY"|"PERCENT_CHANGE_IN_CAPACITY"|"EXACT_CAPACITY"|string; - export interface Application { - /** - * The name of the application. - */ - Name?: String; - /** - * The version of the application. - */ - Version?: String; - /** - * Arguments for Amazon EMR to pass to the application. - */ - Args?: StringList; - /** - * This option is for advanced users only. This is meta information about third-party applications that third-party vendors use for testing purposes. - */ - AdditionalInfo?: StringMap; - } - export type ApplicationList = Application[]; - export interface AutoScalingPolicy { - /** - * The upper and lower EC2 instance limits for an automatic scaling policy. Automatic scaling activity will not cause an instance group to grow above or below these limits. - */ - Constraints: ScalingConstraints; - /** - * The scale-in and scale-out rules that comprise the automatic scaling policy. - */ - Rules: ScalingRuleList; - } - export interface AutoScalingPolicyDescription { - /** - * The status of an automatic scaling policy. - */ - Status?: AutoScalingPolicyStatus; - /** - * The upper and lower EC2 instance limits for an automatic scaling policy. Automatic scaling activity will not cause an instance group to grow above or below these limits. - */ - Constraints?: ScalingConstraints; - /** - * The scale-in and scale-out rules that comprise the automatic scaling policy. - */ - Rules?: ScalingRuleList; - } - export type AutoScalingPolicyState = "PENDING"|"ATTACHING"|"ATTACHED"|"DETACHING"|"DETACHED"|"FAILED"|string; - export interface AutoScalingPolicyStateChangeReason { - /** - * The code indicating the reason for the change in status.USER_REQUEST indicates that the scaling policy status was changed by a user. PROVISION_FAILURE indicates that the status change was because the policy failed to provision. CLEANUP_FAILURE indicates an error. - */ - Code?: AutoScalingPolicyStateChangeReasonCode; - /** - * A friendly, more verbose message that accompanies an automatic scaling policy state change. - */ - Message?: String; - } - export type AutoScalingPolicyStateChangeReasonCode = "USER_REQUEST"|"PROVISION_FAILURE"|"CLEANUP_FAILURE"|string; - export interface AutoScalingPolicyStatus { - /** - * Indicates the status of the automatic scaling policy. - */ - State?: AutoScalingPolicyState; - /** - * The reason for a change in status. - */ - StateChangeReason?: AutoScalingPolicyStateChangeReason; - } - export type Boolean = boolean; - export type BooleanObject = boolean; - export interface BootstrapActionConfig { - /** - * The name of the bootstrap action. - */ - Name: XmlStringMaxLen256; - /** - * The script run by the bootstrap action. - */ - ScriptBootstrapAction: ScriptBootstrapActionConfig; - } - export type BootstrapActionConfigList = BootstrapActionConfig[]; - export interface BootstrapActionDetail { - /** - * A description of the bootstrap action. - */ - BootstrapActionConfig?: BootstrapActionConfig; - } - export type BootstrapActionDetailList = BootstrapActionDetail[]; - export interface CancelStepsInfo { - /** - * The encrypted StepId of a step. - */ - StepId?: StepId; - /** - * The status of a CancelSteps Request. The value may be SUBMITTED or FAILED. - */ - Status?: CancelStepsRequestStatus; - /** - * The reason for the failure if the CancelSteps request fails. - */ - Reason?: String; - } - export type CancelStepsInfoList = CancelStepsInfo[]; - export interface CancelStepsInput { - /** - * The ClusterID for which specified steps will be canceled. Use RunJobFlow and ListClusters to get ClusterIDs. - */ - ClusterId?: XmlStringMaxLen256; - /** - * The list of StepIDs to cancel. Use ListSteps to get steps and their states for the specified cluster. - */ - StepIds?: StepIdsList; - } - export interface CancelStepsOutput { - /** - * A list of CancelStepsInfo, which shows the status of specified cancel requests for each StepID specified. - */ - CancelStepsInfoList?: CancelStepsInfoList; - } - export type CancelStepsRequestStatus = "SUBMITTED"|"FAILED"|string; - export interface CloudWatchAlarmDefinition { - /** - * Determines how the metric specified by MetricName is compared to the value specified by Threshold. - */ - ComparisonOperator: ComparisonOperator; - /** - * The number of periods, expressed in seconds using Period, during which the alarm condition must exist before the alarm triggers automatic scaling activity. The default value is 1. - */ - EvaluationPeriods?: Integer; - /** - * The name of the CloudWatch metric that is watched to determine an alarm condition. - */ - MetricName: String; - /** - * The namespace for the CloudWatch metric. The default is AWS/ElasticMapReduce. - */ - Namespace?: String; - /** - * The period, in seconds, over which the statistic is applied. EMR CloudWatch metrics are emitted every five minutes (300 seconds), so if an EMR CloudWatch metric is specified, specify 300. - */ - Period: Integer; - /** - * The statistic to apply to the metric associated with the alarm. The default is AVERAGE. - */ - Statistic?: Statistic; - /** - * The value against which the specified statistic is compared. - */ - Threshold: NonNegativeDouble; - /** - * The unit of measure associated with the CloudWatch metric being watched. The value specified for Unit must correspond to the units specified in the CloudWatch metric. - */ - Unit?: Unit; - /** - * A CloudWatch metric dimension. - */ - Dimensions?: MetricDimensionList; - } - export interface Cluster { - /** - * The unique identifier for the cluster. - */ - Id?: ClusterId; - /** - * The name of the cluster. - */ - Name?: String; - /** - * The current status details about the cluster. - */ - Status?: ClusterStatus; - /** - * Provides information about the EC2 instances in a cluster grouped by category. For example, key name, subnet ID, IAM instance profile, and so on. - */ - Ec2InstanceAttributes?: Ec2InstanceAttributes; - /** - * The instance fleet configuration is available only in Amazon EMR versions 4.8.0 and later, excluding 5.0.x versions. The instance group configuration of the cluster. A value of INSTANCE_GROUP indicates a uniform instance group configuration. A value of INSTANCE_FLEET indicates an instance fleets configuration. - */ - InstanceCollectionType?: InstanceCollectionType; - /** - * The path to the Amazon S3 location where logs for this cluster are stored. - */ - LogUri?: String; - /** - * The AMI version requested for this cluster. - */ - RequestedAmiVersion?: String; - /** - * The AMI version running on this cluster. - */ - RunningAmiVersion?: String; - /** - * The release label for the Amazon EMR release. - */ - ReleaseLabel?: String; - /** - * Specifies whether the cluster should terminate after completing all steps. - */ - AutoTerminate?: Boolean; - /** - * Indicates whether Amazon EMR will lock the cluster to prevent the EC2 instances from being terminated by an API call or user intervention, or in the event of a cluster error. - */ - TerminationProtected?: Boolean; - /** - * Indicates whether the cluster is visible to all IAM users of the AWS account associated with the cluster. If this value is set to true, all IAM users of that AWS account can view and manage the cluster if they have the proper policy permissions set. If this value is false, only the IAM user that created the cluster can view and manage it. This value can be changed using the SetVisibleToAllUsers action. - */ - VisibleToAllUsers?: Boolean; - /** - * The applications installed on this cluster. - */ - Applications?: ApplicationList; - /** - * A list of tags associated with a cluster. - */ - Tags?: TagList; - /** - * The IAM role that will be assumed by the Amazon EMR service to access AWS resources on your behalf. - */ - ServiceRole?: String; - /** - * An approximation of the cost of the cluster, represented in m1.small/hours. This value is incremented one time for every hour an m1.small instance runs. Larger instances are weighted more, so an EC2 instance that is roughly four times more expensive would result in the normalized instance hours being incremented by four. This result is only an approximation and does not reflect the actual billing rate. - */ - NormalizedInstanceHours?: Integer; - /** - * The public DNS name of the master EC2 instance. - */ - MasterPublicDnsName?: String; - /** - * Applies only to Amazon EMR releases 4.x and later. The list of Configurations supplied to the EMR cluster. - */ - Configurations?: ConfigurationList; - /** - * The name of the security configuration applied to the cluster. - */ - SecurityConfiguration?: XmlString; - /** - * An IAM role for automatic scaling policies. The default role is EMR_AutoScaling_DefaultRole. The IAM role provides permissions that the automatic scaling feature requires to launch and terminate EC2 instances in an instance group. - */ - AutoScalingRole?: XmlString; - /** - * The way that individual Amazon EC2 instances terminate when an automatic scale-in activity occurs or an instance group is resized. TERMINATE_AT_INSTANCE_HOUR indicates that Amazon EMR terminates nodes at the instance-hour boundary, regardless of when the request to terminate the instance was submitted. This option is only available with Amazon EMR 5.1.0 and later and is the default for clusters created using that version. TERMINATE_AT_TASK_COMPLETION indicates that Amazon EMR blacklists and drains tasks from nodes before terminating the Amazon EC2 instances, regardless of the instance-hour boundary. With either behavior, Amazon EMR removes the least active nodes first and blocks instance termination if it could lead to HDFS corruption. TERMINATE_AT_TASK_COMPLETION is available only in Amazon EMR version 4.1.0 and later, and is the default for versions of Amazon EMR earlier than 5.1.0. - */ - ScaleDownBehavior?: ScaleDownBehavior; - /** - * Available only in Amazon EMR version 5.7.0 and later. The ID of a custom Amazon EBS-backed Linux AMI if the cluster uses a custom AMI. - */ - CustomAmiId?: XmlStringMaxLen256; - /** - * The size, in GiB, of the EBS root device volume of the Linux AMI that is used for each EC2 instance. Available in Amazon EMR version 4.x and later. - */ - EbsRootVolumeSize?: Integer; - /** - * Applies only when CustomAmiID is used. Specifies the type of updates that are applied from the Amazon Linux AMI package repositories when an instance boots using the AMI. - */ - RepoUpgradeOnBoot?: RepoUpgradeOnBoot; - } - export type ClusterId = string; - export type ClusterState = "STARTING"|"BOOTSTRAPPING"|"RUNNING"|"WAITING"|"TERMINATING"|"TERMINATED"|"TERMINATED_WITH_ERRORS"|string; - export interface ClusterStateChangeReason { - /** - * The programmatic code for the state change reason. - */ - Code?: ClusterStateChangeReasonCode; - /** - * The descriptive message for the state change reason. - */ - Message?: String; - } - export type ClusterStateChangeReasonCode = "INTERNAL_ERROR"|"VALIDATION_ERROR"|"INSTANCE_FAILURE"|"INSTANCE_FLEET_TIMEOUT"|"BOOTSTRAP_FAILURE"|"USER_REQUEST"|"STEP_FAILURE"|"ALL_STEPS_COMPLETED"|string; - export type ClusterStateList = ClusterState[]; - export interface ClusterStatus { - /** - * The current state of the cluster. - */ - State?: ClusterState; - /** - * The reason for the cluster status change. - */ - StateChangeReason?: ClusterStateChangeReason; - /** - * A timeline that represents the status of a cluster over the lifetime of the cluster. - */ - Timeline?: ClusterTimeline; - } - export interface ClusterSummary { - /** - * The unique identifier for the cluster. - */ - Id?: ClusterId; - /** - * The name of the cluster. - */ - Name?: String; - /** - * The details about the current status of the cluster. - */ - Status?: ClusterStatus; - /** - * An approximation of the cost of the cluster, represented in m1.small/hours. This value is incremented one time for every hour an m1.small instance runs. Larger instances are weighted more, so an EC2 instance that is roughly four times more expensive would result in the normalized instance hours being incremented by four. This result is only an approximation and does not reflect the actual billing rate. - */ - NormalizedInstanceHours?: Integer; - } - export type ClusterSummaryList = ClusterSummary[]; - export interface ClusterTimeline { - /** - * The creation date and time of the cluster. - */ - CreationDateTime?: _Date; - /** - * The date and time when the cluster was ready to execute steps. - */ - ReadyDateTime?: _Date; - /** - * The date and time when the cluster was terminated. - */ - EndDateTime?: _Date; - } - export interface Command { - /** - * The name of the command. - */ - Name?: String; - /** - * The Amazon S3 location of the command script. - */ - ScriptPath?: String; - /** - * Arguments for Amazon EMR to pass to the command for execution. - */ - Args?: StringList; - } - export type CommandList = Command[]; - export type ComparisonOperator = "GREATER_THAN_OR_EQUAL"|"GREATER_THAN"|"LESS_THAN"|"LESS_THAN_OR_EQUAL"|string; - export interface Configuration { - /** - * The classification within a configuration. - */ - Classification?: String; - /** - * A list of additional configurations to apply within a configuration object. - */ - Configurations?: ConfigurationList; - /** - * A set of properties specified within a configuration classification. - */ - Properties?: StringMap; - } - export type ConfigurationList = Configuration[]; - export interface CreateSecurityConfigurationInput { - /** - * The name of the security configuration. - */ - Name: XmlString; - /** - * The security configuration details in JSON format. - */ - SecurityConfiguration: String; - } - export interface CreateSecurityConfigurationOutput { - /** - * The name of the security configuration. - */ - Name: XmlString; - /** - * The date and time the security configuration was created. - */ - CreationDateTime: _Date; - } - export type _Date = Date; - export interface DeleteSecurityConfigurationInput { - /** - * The name of the security configuration. - */ - Name: XmlString; - } - export interface DeleteSecurityConfigurationOutput { - } - export interface DescribeClusterInput { - /** - * The identifier of the cluster to describe. - */ - ClusterId: ClusterId; - } - export interface DescribeClusterOutput { - /** - * This output contains the details for the requested cluster. - */ - Cluster?: Cluster; - } - export interface DescribeJobFlowsInput { - /** - * Return only job flows created after this date and time. - */ - CreatedAfter?: _Date; - /** - * Return only job flows created before this date and time. - */ - CreatedBefore?: _Date; - /** - * Return only job flows whose job flow ID is contained in this list. - */ - JobFlowIds?: XmlStringList; - /** - * Return only job flows whose state is contained in this list. - */ - JobFlowStates?: JobFlowExecutionStateList; - } - export interface DescribeJobFlowsOutput { - /** - * A list of job flows matching the parameters supplied. - */ - JobFlows?: JobFlowDetailList; - } - export interface DescribeSecurityConfigurationInput { - /** - * The name of the security configuration. - */ - Name: XmlString; - } - export interface DescribeSecurityConfigurationOutput { - /** - * The name of the security configuration. - */ - Name?: XmlString; - /** - * The security configuration details in JSON format. - */ - SecurityConfiguration?: String; - /** - * The date and time the security configuration was created - */ - CreationDateTime?: _Date; - } - export interface DescribeStepInput { - /** - * The identifier of the cluster with steps to describe. - */ - ClusterId: ClusterId; - /** - * The identifier of the step to describe. - */ - StepId: StepId; - } - export interface DescribeStepOutput { - /** - * The step details for the requested step identifier. - */ - Step?: Step; - } - export type EC2InstanceIdsList = InstanceId[]; - export type EC2InstanceIdsToTerminateList = InstanceId[]; - export interface EbsBlockDevice { - /** - * EBS volume specifications such as volume type, IOPS, and size (GiB) that will be requested for the EBS volume attached to an EC2 instance in the cluster. - */ - VolumeSpecification?: VolumeSpecification; - /** - * The device name that is exposed to the instance, such as /dev/sdh. - */ - Device?: String; - } - export interface EbsBlockDeviceConfig { - /** - * EBS volume specifications such as volume type, IOPS, and size (GiB) that will be requested for the EBS volume attached to an EC2 instance in the cluster. - */ - VolumeSpecification: VolumeSpecification; - /** - * Number of EBS volumes with a specific volume configuration that will be associated with every instance in the instance group - */ - VolumesPerInstance?: Integer; - } - export type EbsBlockDeviceConfigList = EbsBlockDeviceConfig[]; - export type EbsBlockDeviceList = EbsBlockDevice[]; - export interface EbsConfiguration { - /** - * An array of Amazon EBS volume specifications attached to a cluster instance. - */ - EbsBlockDeviceConfigs?: EbsBlockDeviceConfigList; - /** - * Indicates whether an Amazon EBS volume is EBS-optimized. - */ - EbsOptimized?: BooleanObject; - } - export interface EbsVolume { - /** - * The device name that is exposed to the instance, such as /dev/sdh. - */ - Device?: String; - /** - * The volume identifier of the EBS volume. - */ - VolumeId?: String; - } - export type EbsVolumeList = EbsVolume[]; - export interface Ec2InstanceAttributes { - /** - * The name of the Amazon EC2 key pair to use when connecting with SSH into the master node as a user named "hadoop". - */ - Ec2KeyName?: String; - /** - * To launch the cluster in Amazon VPC, set this parameter to the identifier of the Amazon VPC subnet where you want the cluster to launch. If you do not specify this value, the cluster is launched in the normal AWS cloud, outside of a VPC. Amazon VPC currently does not support cluster compute quadruple extra large (cc1.4xlarge) instances. Thus, you cannot specify the cc1.4xlarge instance type for nodes of a cluster launched in a VPC. - */ - Ec2SubnetId?: String; - /** - * Applies to clusters configured with the instance fleets option. Specifies the unique identifier of one or more Amazon EC2 subnets in which to launch EC2 cluster instances. Subnets must exist within the same VPC. Amazon EMR chooses the EC2 subnet with the best fit from among the list of RequestedEc2SubnetIds, and then launches all cluster instances within that Subnet. If this value is not specified, and the account and region support EC2-Classic networks, the cluster launches instances in the EC2-Classic network and uses RequestedEc2AvailabilityZones instead of this setting. If EC2-Classic is not supported, and no Subnet is specified, Amazon EMR chooses the subnet for you. RequestedEc2SubnetIDs and RequestedEc2AvailabilityZones cannot be specified together. - */ - RequestedEc2SubnetIds?: XmlStringMaxLen256List; - /** - * The Availability Zone in which the cluster will run. - */ - Ec2AvailabilityZone?: String; - /** - * Applies to clusters configured with the instance fleets option. Specifies one or more Availability Zones in which to launch EC2 cluster instances when the EC2-Classic network configuration is supported. Amazon EMR chooses the Availability Zone with the best fit from among the list of RequestedEc2AvailabilityZones, and then launches all cluster instances within that Availability Zone. If you do not specify this value, Amazon EMR chooses the Availability Zone for you. RequestedEc2SubnetIDs and RequestedEc2AvailabilityZones cannot be specified together. - */ - RequestedEc2AvailabilityZones?: XmlStringMaxLen256List; - /** - * The IAM role that was specified when the cluster was launched. The EC2 instances of the cluster assume this role. - */ - IamInstanceProfile?: String; - /** - * The identifier of the Amazon EC2 security group for the master node. - */ - EmrManagedMasterSecurityGroup?: String; - /** - * The identifier of the Amazon EC2 security group for the slave nodes. - */ - EmrManagedSlaveSecurityGroup?: String; - /** - * The identifier of the Amazon EC2 security group for the Amazon EMR service to access clusters in VPC private subnets. - */ - ServiceAccessSecurityGroup?: String; - /** - * A list of additional Amazon EC2 security group IDs for the master node. - */ - AdditionalMasterSecurityGroups?: StringList; - /** - * A list of additional Amazon EC2 security group IDs for the slave nodes. - */ - AdditionalSlaveSecurityGroups?: StringList; - } - export type ErrorCode = string; - export type ErrorMessage = string; - export interface FailureDetails { - /** - * The reason for the step failure. In the case where the service cannot successfully determine the root cause of the failure, it returns "Unknown Error" as a reason. - */ - Reason?: String; - /** - * The descriptive message including the error the EMR service has identified as the cause of step failure. This is text from an error log that describes the root cause of the failure. - */ - Message?: String; - /** - * The path to the log file where the step failure root cause was originally recorded. - */ - LogFile?: String; - } - export interface HadoopJarStepConfig { - /** - * A list of Java properties that are set when the step runs. You can use these properties to pass key value pairs to your main function. - */ - Properties?: KeyValueList; - /** - * A path to a JAR file run during the step. - */ - Jar: XmlString; - /** - * The name of the main class in the specified Java file. If not specified, the JAR file should specify a Main-Class in its manifest file. - */ - MainClass?: XmlString; - /** - * A list of command line arguments passed to the JAR file's main function when executed. - */ - Args?: XmlStringList; - } - export interface HadoopStepConfig { - /** - * The path to the JAR file that runs during the step. - */ - Jar?: String; - /** - * The list of Java properties that are set when the step runs. You can use these properties to pass key value pairs to your main function. - */ - Properties?: StringMap; - /** - * The name of the main class in the specified Java file. If not specified, the JAR file should specify a main class in its manifest file. - */ - MainClass?: String; - /** - * The list of command line arguments to pass to the JAR file's main function for execution. - */ - Args?: StringList; - } - export interface Instance { - /** - * The unique identifier for the instance in Amazon EMR. - */ - Id?: InstanceId; - /** - * The unique identifier of the instance in Amazon EC2. - */ - Ec2InstanceId?: InstanceId; - /** - * The public DNS name of the instance. - */ - PublicDnsName?: String; - /** - * The public IP address of the instance. - */ - PublicIpAddress?: String; - /** - * The private DNS name of the instance. - */ - PrivateDnsName?: String; - /** - * The private IP address of the instance. - */ - PrivateIpAddress?: String; - /** - * The current status of the instance. - */ - Status?: InstanceStatus; - /** - * The identifier of the instance group to which this instance belongs. - */ - InstanceGroupId?: String; - /** - * The unique identifier of the instance fleet to which an EC2 instance belongs. - */ - InstanceFleetId?: InstanceFleetId; - /** - * The instance purchasing option. Valid values are ON_DEMAND or SPOT. - */ - Market?: MarketType; - /** - * The EC2 instance type, for example m3.xlarge. - */ - InstanceType?: InstanceType; - /** - * The list of EBS volumes that are attached to this instance. - */ - EbsVolumes?: EbsVolumeList; - } - export type InstanceCollectionType = "INSTANCE_FLEET"|"INSTANCE_GROUP"|string; - export interface InstanceFleet { - /** - * The unique identifier of the instance fleet. - */ - Id?: InstanceFleetId; - /** - * A friendly name for the instance fleet. - */ - Name?: XmlStringMaxLen256; - /** - * The current status of the instance fleet. - */ - Status?: InstanceFleetStatus; - /** - * The node type that the instance fleet hosts. Valid values are MASTER, CORE, or TASK. - */ - InstanceFleetType?: InstanceFleetType; - /** - * The target capacity of On-Demand units for the instance fleet, which determines how many On-Demand instances to provision. When the instance fleet launches, Amazon EMR tries to provision On-Demand instances as specified by InstanceTypeConfig. Each instance configuration has a specified WeightedCapacity. When an On-Demand instance is provisioned, the WeightedCapacity units count toward the target capacity. Amazon EMR provisions instances until the target capacity is totally fulfilled, even if this results in an overage. For example, if there are 2 units remaining to fulfill capacity, and Amazon EMR can only provision an instance with a WeightedCapacity of 5 units, the instance is provisioned, and the target capacity is exceeded by 3 units. You can use InstanceFleet$ProvisionedOnDemandCapacity to determine the Spot capacity units that have been provisioned for the instance fleet. If not specified or set to 0, only Spot instances are provisioned for the instance fleet using TargetSpotCapacity. At least one of TargetSpotCapacity and TargetOnDemandCapacity should be greater than 0. For a master instance fleet, only one of TargetSpotCapacity and TargetOnDemandCapacity can be specified, and its value must be 1. - */ - TargetOnDemandCapacity?: WholeNumber; - /** - * The target capacity of Spot units for the instance fleet, which determines how many Spot instances to provision. When the instance fleet launches, Amazon EMR tries to provision Spot instances as specified by InstanceTypeConfig. Each instance configuration has a specified WeightedCapacity. When a Spot instance is provisioned, the WeightedCapacity units count toward the target capacity. Amazon EMR provisions instances until the target capacity is totally fulfilled, even if this results in an overage. For example, if there are 2 units remaining to fulfill capacity, and Amazon EMR can only provision an instance with a WeightedCapacity of 5 units, the instance is provisioned, and the target capacity is exceeded by 3 units. You can use InstanceFleet$ProvisionedSpotCapacity to determine the Spot capacity units that have been provisioned for the instance fleet. If not specified or set to 0, only On-Demand instances are provisioned for the instance fleet. At least one of TargetSpotCapacity and TargetOnDemandCapacity should be greater than 0. For a master instance fleet, only one of TargetSpotCapacity and TargetOnDemandCapacity can be specified, and its value must be 1. - */ - TargetSpotCapacity?: WholeNumber; - /** - * The number of On-Demand units that have been provisioned for the instance fleet to fulfill TargetOnDemandCapacity. This provisioned capacity might be less than or greater than TargetOnDemandCapacity. - */ - ProvisionedOnDemandCapacity?: WholeNumber; - /** - * The number of Spot units that have been provisioned for this instance fleet to fulfill TargetSpotCapacity. This provisioned capacity might be less than or greater than TargetSpotCapacity. - */ - ProvisionedSpotCapacity?: WholeNumber; - /** - * The specification for the instance types that comprise an instance fleet. Up to five unique instance specifications may be defined for each instance fleet. - */ - InstanceTypeSpecifications?: InstanceTypeSpecificationList; - /** - * Describes the launch specification for an instance fleet. - */ - LaunchSpecifications?: InstanceFleetProvisioningSpecifications; - } - export interface InstanceFleetConfig { - /** - * The friendly name of the instance fleet. - */ - Name?: XmlStringMaxLen256; - /** - * The node type that the instance fleet hosts. Valid values are MASTER,CORE,and TASK. - */ - InstanceFleetType: InstanceFleetType; - /** - * The target capacity of On-Demand units for the instance fleet, which determines how many On-Demand instances to provision. When the instance fleet launches, Amazon EMR tries to provision On-Demand instances as specified by InstanceTypeConfig. Each instance configuration has a specified WeightedCapacity. When an On-Demand instance is provisioned, the WeightedCapacity units count toward the target capacity. Amazon EMR provisions instances until the target capacity is totally fulfilled, even if this results in an overage. For example, if there are 2 units remaining to fulfill capacity, and Amazon EMR can only provision an instance with a WeightedCapacity of 5 units, the instance is provisioned, and the target capacity is exceeded by 3 units. If not specified or set to 0, only Spot instances are provisioned for the instance fleet using TargetSpotCapacity. At least one of TargetSpotCapacity and TargetOnDemandCapacity should be greater than 0. For a master instance fleet, only one of TargetSpotCapacity and TargetOnDemandCapacity can be specified, and its value must be 1. - */ - TargetOnDemandCapacity?: WholeNumber; - /** - * The target capacity of Spot units for the instance fleet, which determines how many Spot instances to provision. When the instance fleet launches, Amazon EMR tries to provision Spot instances as specified by InstanceTypeConfig. Each instance configuration has a specified WeightedCapacity. When a Spot instance is provisioned, the WeightedCapacity units count toward the target capacity. Amazon EMR provisions instances until the target capacity is totally fulfilled, even if this results in an overage. For example, if there are 2 units remaining to fulfill capacity, and Amazon EMR can only provision an instance with a WeightedCapacity of 5 units, the instance is provisioned, and the target capacity is exceeded by 3 units. If not specified or set to 0, only On-Demand instances are provisioned for the instance fleet. At least one of TargetSpotCapacity and TargetOnDemandCapacity should be greater than 0. For a master instance fleet, only one of TargetSpotCapacity and TargetOnDemandCapacity can be specified, and its value must be 1. - */ - TargetSpotCapacity?: WholeNumber; - /** - * The instance type configurations that define the EC2 instances in the instance fleet. - */ - InstanceTypeConfigs?: InstanceTypeConfigList; - /** - * The launch specification for the instance fleet. - */ - LaunchSpecifications?: InstanceFleetProvisioningSpecifications; - } - export type InstanceFleetConfigList = InstanceFleetConfig[]; - export type InstanceFleetId = string; - export type InstanceFleetList = InstanceFleet[]; - export interface InstanceFleetModifyConfig { - /** - * A unique identifier for the instance fleet. - */ - InstanceFleetId: InstanceFleetId; - /** - * The target capacity of On-Demand units for the instance fleet. For more information see InstanceFleetConfig$TargetOnDemandCapacity. - */ - TargetOnDemandCapacity?: WholeNumber; - /** - * The target capacity of Spot units for the instance fleet. For more information, see InstanceFleetConfig$TargetSpotCapacity. - */ - TargetSpotCapacity?: WholeNumber; - } - export interface InstanceFleetProvisioningSpecifications { - /** - * The launch specification for Spot instances in the fleet, which determines the defined duration and provisioning timeout behavior. - */ - SpotSpecification: SpotProvisioningSpecification; - } - export type InstanceFleetState = "PROVISIONING"|"BOOTSTRAPPING"|"RUNNING"|"RESIZING"|"SUSPENDED"|"TERMINATING"|"TERMINATED"|string; - export interface InstanceFleetStateChangeReason { - /** - * A code corresponding to the reason the state change occurred. - */ - Code?: InstanceFleetStateChangeReasonCode; - /** - * An explanatory message. - */ - Message?: String; - } - export type InstanceFleetStateChangeReasonCode = "INTERNAL_ERROR"|"VALIDATION_ERROR"|"INSTANCE_FAILURE"|"CLUSTER_TERMINATED"|string; - export interface InstanceFleetStatus { - /** - * A code representing the instance fleet status. - */ - State?: InstanceFleetState; - /** - * Provides status change reason details for the instance fleet. - */ - StateChangeReason?: InstanceFleetStateChangeReason; - /** - * Provides historical timestamps for the instance fleet, including the time of creation, the time it became ready to run jobs, and the time of termination. - */ - Timeline?: InstanceFleetTimeline; - } - export interface InstanceFleetTimeline { - /** - * The time and date the instance fleet was created. - */ - CreationDateTime?: _Date; - /** - * The time and date the instance fleet was ready to run jobs. - */ - ReadyDateTime?: _Date; - /** - * The time and date the instance fleet terminated. - */ - EndDateTime?: _Date; - } - export type InstanceFleetType = "MASTER"|"CORE"|"TASK"|string; - export interface InstanceGroup { - /** - * The identifier of the instance group. - */ - Id?: InstanceGroupId; - /** - * The name of the instance group. - */ - Name?: String; - /** - * The marketplace to provision instances for this group. Valid values are ON_DEMAND or SPOT. - */ - Market?: MarketType; - /** - * The type of the instance group. Valid values are MASTER, CORE or TASK. - */ - InstanceGroupType?: InstanceGroupType; - /** - * The bid price for each EC2 instance in the instance group when launching nodes as Spot Instances, expressed in USD. - */ - BidPrice?: String; - /** - * The EC2 instance type for all instances in the instance group. - */ - InstanceType?: InstanceType; - /** - * The target number of instances for the instance group. - */ - RequestedInstanceCount?: Integer; - /** - * The number of instances currently running in this instance group. - */ - RunningInstanceCount?: Integer; - /** - * The current status of the instance group. - */ - Status?: InstanceGroupStatus; - /** - * Amazon EMR releases 4.x or later. The list of configurations supplied for an EMR cluster instance group. You can specify a separate configuration for each instance group (master, core, and task). - */ - Configurations?: ConfigurationList; - /** - * The EBS block devices that are mapped to this instance group. - */ - EbsBlockDevices?: EbsBlockDeviceList; - /** - * If the instance group is EBS-optimized. An Amazon EBS-optimized instance uses an optimized configuration stack and provides additional, dedicated capacity for Amazon EBS I/O. - */ - EbsOptimized?: BooleanObject; - /** - * Policy for customizing shrink operations. - */ - ShrinkPolicy?: ShrinkPolicy; - /** - * An automatic scaling policy for a core instance group or task instance group in an Amazon EMR cluster. The automatic scaling policy defines how an instance group dynamically adds and terminates EC2 instances in response to the value of a CloudWatch metric. See PutAutoScalingPolicy. - */ - AutoScalingPolicy?: AutoScalingPolicyDescription; - } - export interface InstanceGroupConfig { - /** - * Friendly name given to the instance group. - */ - Name?: XmlStringMaxLen256; - /** - * Market type of the EC2 instances used to create a cluster node. - */ - Market?: MarketType; - /** - * The role of the instance group in the cluster. - */ - InstanceRole: InstanceRoleType; - /** - * Bid price for each EC2 instance in the instance group when launching nodes as Spot Instances, expressed in USD. - */ - BidPrice?: XmlStringMaxLen256; - /** - * The EC2 instance type for all instances in the instance group. - */ - InstanceType: InstanceType; - /** - * Target number of instances for the instance group. - */ - InstanceCount: Integer; - /** - * Amazon EMR releases 4.x or later. The list of configurations supplied for an EMR cluster instance group. You can specify a separate configuration for each instance group (master, core, and task). - */ - Configurations?: ConfigurationList; - /** - * EBS configurations that will be attached to each EC2 instance in the instance group. - */ - EbsConfiguration?: EbsConfiguration; - /** - * An automatic scaling policy for a core instance group or task instance group in an Amazon EMR cluster. The automatic scaling policy defines how an instance group dynamically adds and terminates EC2 instances in response to the value of a CloudWatch metric. See PutAutoScalingPolicy. - */ - AutoScalingPolicy?: AutoScalingPolicy; - } - export type InstanceGroupConfigList = InstanceGroupConfig[]; - export interface InstanceGroupDetail { - /** - * Unique identifier for the instance group. - */ - InstanceGroupId?: XmlStringMaxLen256; - /** - * Friendly name for the instance group. - */ - Name?: XmlStringMaxLen256; - /** - * Market type of the EC2 instances used to create a cluster node. - */ - Market: MarketType; - /** - * Instance group role in the cluster - */ - InstanceRole: InstanceRoleType; - /** - * Bid price for EC2 Instances when launching nodes as Spot Instances, expressed in USD. - */ - BidPrice?: XmlStringMaxLen256; - /** - * EC2 instance type. - */ - InstanceType: InstanceType; - /** - * Target number of instances to run in the instance group. - */ - InstanceRequestCount: Integer; - /** - * Actual count of running instances. - */ - InstanceRunningCount: Integer; - /** - * State of instance group. The following values are deprecated: STARTING, TERMINATED, and FAILED. - */ - State: InstanceGroupState; - /** - * Details regarding the state of the instance group. - */ - LastStateChangeReason?: XmlString; - /** - * The date/time the instance group was created. - */ - CreationDateTime: _Date; - /** - * The date/time the instance group was started. - */ - StartDateTime?: _Date; - /** - * The date/time the instance group was available to the cluster. - */ - ReadyDateTime?: _Date; - /** - * The date/time the instance group was terminated. - */ - EndDateTime?: _Date; - } - export type InstanceGroupDetailList = InstanceGroupDetail[]; - export type InstanceGroupId = string; - export type InstanceGroupIdsList = XmlStringMaxLen256[]; - export type InstanceGroupList = InstanceGroup[]; - export interface InstanceGroupModifyConfig { - /** - * Unique ID of the instance group to expand or shrink. - */ - InstanceGroupId: XmlStringMaxLen256; - /** - * Target size for the instance group. - */ - InstanceCount?: Integer; - /** - * The EC2 InstanceIds to terminate. After you terminate the instances, the instance group will not return to its original requested size. - */ - EC2InstanceIdsToTerminate?: EC2InstanceIdsToTerminateList; - /** - * Policy for customizing shrink operations. - */ - ShrinkPolicy?: ShrinkPolicy; - } - export type InstanceGroupModifyConfigList = InstanceGroupModifyConfig[]; - export type InstanceGroupState = "PROVISIONING"|"BOOTSTRAPPING"|"RUNNING"|"RESIZING"|"SUSPENDED"|"TERMINATING"|"TERMINATED"|"ARRESTED"|"SHUTTING_DOWN"|"ENDED"|string; - export interface InstanceGroupStateChangeReason { - /** - * The programmable code for the state change reason. - */ - Code?: InstanceGroupStateChangeReasonCode; - /** - * The status change reason description. - */ - Message?: String; - } - export type InstanceGroupStateChangeReasonCode = "INTERNAL_ERROR"|"VALIDATION_ERROR"|"INSTANCE_FAILURE"|"CLUSTER_TERMINATED"|string; - export interface InstanceGroupStatus { - /** - * The current state of the instance group. - */ - State?: InstanceGroupState; - /** - * The status change reason details for the instance group. - */ - StateChangeReason?: InstanceGroupStateChangeReason; - /** - * The timeline of the instance group status over time. - */ - Timeline?: InstanceGroupTimeline; - } - export interface InstanceGroupTimeline { - /** - * The creation date and time of the instance group. - */ - CreationDateTime?: _Date; - /** - * The date and time when the instance group became ready to perform tasks. - */ - ReadyDateTime?: _Date; - /** - * The date and time when the instance group terminated. - */ - EndDateTime?: _Date; - } - export type InstanceGroupType = "MASTER"|"CORE"|"TASK"|string; - export type InstanceGroupTypeList = InstanceGroupType[]; - export type InstanceId = string; - export type InstanceList = Instance[]; - export interface InstanceResizePolicy { - /** - * Specific list of instances to be terminated when shrinking an instance group. - */ - InstancesToTerminate?: EC2InstanceIdsList; - /** - * Specific list of instances to be protected when shrinking an instance group. - */ - InstancesToProtect?: EC2InstanceIdsList; - /** - * Decommissioning timeout override for the specific list of instances to be terminated. - */ - InstanceTerminationTimeout?: Integer; - } - export type InstanceRoleType = "MASTER"|"CORE"|"TASK"|string; - export type InstanceState = "AWAITING_FULFILLMENT"|"PROVISIONING"|"BOOTSTRAPPING"|"RUNNING"|"TERMINATED"|string; - export interface InstanceStateChangeReason { - /** - * The programmable code for the state change reason. - */ - Code?: InstanceStateChangeReasonCode; - /** - * The status change reason description. - */ - Message?: String; - } - export type InstanceStateChangeReasonCode = "INTERNAL_ERROR"|"VALIDATION_ERROR"|"INSTANCE_FAILURE"|"BOOTSTRAP_FAILURE"|"CLUSTER_TERMINATED"|string; - export type InstanceStateList = InstanceState[]; - export interface InstanceStatus { - /** - * The current state of the instance. - */ - State?: InstanceState; - /** - * The details of the status change reason for the instance. - */ - StateChangeReason?: InstanceStateChangeReason; - /** - * The timeline of the instance status over time. - */ - Timeline?: InstanceTimeline; - } - export interface InstanceTimeline { - /** - * The creation date and time of the instance. - */ - CreationDateTime?: _Date; - /** - * The date and time when the instance was ready to perform tasks. - */ - ReadyDateTime?: _Date; - /** - * The date and time when the instance was terminated. - */ - EndDateTime?: _Date; - } - export type InstanceType = string; - export interface InstanceTypeConfig { - /** - * An EC2 instance type, such as m3.xlarge. - */ - InstanceType: InstanceType; - /** - * The number of units that a provisioned instance of this type provides toward fulfilling the target capacities defined in InstanceFleetConfig. This value is 1 for a master instance fleet, and must be 1 or greater for core and task instance fleets. Defaults to 1 if not specified. - */ - WeightedCapacity?: WholeNumber; - /** - * The bid price for each EC2 Spot instance type as defined by InstanceType. Expressed in USD. If neither BidPrice nor BidPriceAsPercentageOfOnDemandPrice is provided, BidPriceAsPercentageOfOnDemandPrice defaults to 100%. - */ - BidPrice?: XmlStringMaxLen256; - /** - * The bid price, as a percentage of On-Demand price, for each EC2 Spot instance as defined by InstanceType. Expressed as a number (for example, 20 specifies 20%). If neither BidPrice nor BidPriceAsPercentageOfOnDemandPrice is provided, BidPriceAsPercentageOfOnDemandPrice defaults to 100%. - */ - BidPriceAsPercentageOfOnDemandPrice?: NonNegativeDouble; - /** - * The configuration of Amazon Elastic Block Storage (EBS) attached to each instance as defined by InstanceType. - */ - EbsConfiguration?: EbsConfiguration; - /** - * A configuration classification that applies when provisioning cluster instances, which can include configurations for applications and software that run on the cluster. - */ - Configurations?: ConfigurationList; - } - export type InstanceTypeConfigList = InstanceTypeConfig[]; - export interface InstanceTypeSpecification { - /** - * The EC2 instance type, for example m3.xlarge. - */ - InstanceType?: InstanceType; - /** - * The number of units that a provisioned instance of this type provides toward fulfilling the target capacities defined in InstanceFleetConfig. Capacity values represent performance characteristics such as vCPUs, memory, or I/O. If not specified, the default value is 1. - */ - WeightedCapacity?: WholeNumber; - /** - * The bid price for each EC2 Spot instance type as defined by InstanceType. Expressed in USD. - */ - BidPrice?: XmlStringMaxLen256; - /** - * The bid price, as a percentage of On-Demand price, for each EC2 Spot instance as defined by InstanceType. Expressed as a number (for example, 20 specifies 20%). - */ - BidPriceAsPercentageOfOnDemandPrice?: NonNegativeDouble; - /** - * A configuration classification that applies when provisioning cluster instances, which can include configurations for applications and software bundled with Amazon EMR. - */ - Configurations?: ConfigurationList; - /** - * The configuration of Amazon Elastic Block Storage (EBS) attached to each instance as defined by InstanceType. - */ - EbsBlockDevices?: EbsBlockDeviceList; - /** - * Evaluates to TRUE when the specified InstanceType is EBS-optimized. - */ - EbsOptimized?: BooleanObject; - } - export type InstanceTypeSpecificationList = InstanceTypeSpecification[]; - export type Integer = number; - export interface JobFlowDetail { - /** - * The job flow identifier. - */ - JobFlowId: XmlStringMaxLen256; - /** - * The name of the job flow. - */ - Name: XmlStringMaxLen256; - /** - * The location in Amazon S3 where log files for the job are stored. - */ - LogUri?: XmlString; - /** - * Used only for version 2.x and 3.x of Amazon EMR. The version of the AMI used to initialize Amazon EC2 instances in the job flow. For a list of AMI versions supported by Amazon EMR, see AMI Versions Supported in EMR in the Amazon EMR Developer Guide. - */ - AmiVersion?: XmlStringMaxLen256; - /** - * Describes the execution status of the job flow. - */ - ExecutionStatusDetail: JobFlowExecutionStatusDetail; - /** - * Describes the Amazon EC2 instances of the job flow. - */ - Instances: JobFlowInstancesDetail; - /** - * A list of steps run by the job flow. - */ - Steps?: StepDetailList; - /** - * A list of the bootstrap actions run by the job flow. - */ - BootstrapActions?: BootstrapActionDetailList; - /** - * A list of strings set by third party software when the job flow is launched. If you are not using third party software to manage the job flow this value is empty. - */ - SupportedProducts?: SupportedProductsList; - /** - * Specifies whether the cluster is visible to all IAM users of the AWS account associated with the cluster. If this value is set to true, all IAM users of that AWS account can view and (if they have the proper policy permissions set) manage the cluster. If it is set to false, only the IAM user that created the cluster can view and manage it. This value can be changed using the SetVisibleToAllUsers action. - */ - VisibleToAllUsers?: Boolean; - /** - * The IAM role that was specified when the job flow was launched. The EC2 instances of the job flow assume this role. - */ - JobFlowRole?: XmlString; - /** - * The IAM role that will be assumed by the Amazon EMR service to access AWS resources on your behalf. - */ - ServiceRole?: XmlString; - /** - * An IAM role for automatic scaling policies. The default role is EMR_AutoScaling_DefaultRole. The IAM role provides a way for the automatic scaling feature to get the required permissions it needs to launch and terminate EC2 instances in an instance group. - */ - AutoScalingRole?: XmlString; - /** - * The way that individual Amazon EC2 instances terminate when an automatic scale-in activity occurs or an instance group is resized. TERMINATE_AT_INSTANCE_HOUR indicates that Amazon EMR terminates nodes at the instance-hour boundary, regardless of when the request to terminate the instance was submitted. This option is only available with Amazon EMR 5.1.0 and later and is the default for clusters created using that version. TERMINATE_AT_TASK_COMPLETION indicates that Amazon EMR blacklists and drains tasks from nodes before terminating the Amazon EC2 instances, regardless of the instance-hour boundary. With either behavior, Amazon EMR removes the least active nodes first and blocks instance termination if it could lead to HDFS corruption. TERMINATE_AT_TASK_COMPLETION available only in Amazon EMR version 4.1.0 and later, and is the default for versions of Amazon EMR earlier than 5.1.0. - */ - ScaleDownBehavior?: ScaleDownBehavior; - } - export type JobFlowDetailList = JobFlowDetail[]; - export type JobFlowExecutionState = "STARTING"|"BOOTSTRAPPING"|"RUNNING"|"WAITING"|"SHUTTING_DOWN"|"TERMINATED"|"COMPLETED"|"FAILED"|string; - export type JobFlowExecutionStateList = JobFlowExecutionState[]; - export interface JobFlowExecutionStatusDetail { - /** - * The state of the job flow. - */ - State: JobFlowExecutionState; - /** - * The creation date and time of the job flow. - */ - CreationDateTime: _Date; - /** - * The start date and time of the job flow. - */ - StartDateTime?: _Date; - /** - * The date and time when the job flow was ready to start running bootstrap actions. - */ - ReadyDateTime?: _Date; - /** - * The completion date and time of the job flow. - */ - EndDateTime?: _Date; - /** - * Description of the job flow last changed state. - */ - LastStateChangeReason?: XmlString; - } - export interface JobFlowInstancesConfig { - /** - * The EC2 instance type of the master node. - */ - MasterInstanceType?: InstanceType; - /** - * The EC2 instance type of the slave nodes. - */ - SlaveInstanceType?: InstanceType; - /** - * The number of EC2 instances in the cluster. - */ - InstanceCount?: Integer; - /** - * Configuration for the instance groups in a cluster. - */ - InstanceGroups?: InstanceGroupConfigList; - /** - * The instance fleet configuration is available only in Amazon EMR versions 4.8.0 and later, excluding 5.0.x versions. Describes the EC2 instances and instance configurations for clusters that use the instance fleet configuration. - */ - InstanceFleets?: InstanceFleetConfigList; - /** - * The name of the EC2 key pair that can be used to ssh to the master node as the user called "hadoop." - */ - Ec2KeyName?: XmlStringMaxLen256; - /** - * The Availability Zone in which the cluster runs. - */ - Placement?: PlacementType; - /** - * Specifies whether the cluster should remain available after completing all steps. - */ - KeepJobFlowAliveWhenNoSteps?: Boolean; - /** - * Specifies whether to lock the cluster to prevent the Amazon EC2 instances from being terminated by API call, user intervention, or in the event of a job-flow error. - */ - TerminationProtected?: Boolean; - /** - * The Hadoop version for the cluster. Valid inputs are "0.18" (deprecated), "0.20" (deprecated), "0.20.205" (deprecated), "1.0.3", "2.2.0", or "2.4.0". If you do not set this value, the default of 0.18 is used, unless the AmiVersion parameter is set in the RunJobFlow call, in which case the default version of Hadoop for that AMI version is used. - */ - HadoopVersion?: XmlStringMaxLen256; - /** - * Applies to clusters that use the uniform instance group configuration. To launch the cluster in Amazon Virtual Private Cloud (Amazon VPC), set this parameter to the identifier of the Amazon VPC subnet where you want the cluster to launch. If you do not specify this value, the cluster launches in the normal Amazon Web Services cloud, outside of an Amazon VPC, if the account launching the cluster supports EC2 Classic networks in the region where the cluster launches. Amazon VPC currently does not support cluster compute quadruple extra large (cc1.4xlarge) instances. Thus you cannot specify the cc1.4xlarge instance type for clusters launched in an Amazon VPC. - */ - Ec2SubnetId?: XmlStringMaxLen256; - /** - * Applies to clusters that use the instance fleet configuration. When multiple EC2 subnet IDs are specified, Amazon EMR evaluates them and launches instances in the optimal subnet. The instance fleet configuration is available only in Amazon EMR versions 4.8.0 and later, excluding 5.0.x versions. - */ - Ec2SubnetIds?: XmlStringMaxLen256List; - /** - * The identifier of the Amazon EC2 security group for the master node. - */ - EmrManagedMasterSecurityGroup?: XmlStringMaxLen256; - /** - * The identifier of the Amazon EC2 security group for the slave nodes. - */ - EmrManagedSlaveSecurityGroup?: XmlStringMaxLen256; - /** - * The identifier of the Amazon EC2 security group for the Amazon EMR service to access clusters in VPC private subnets. - */ - ServiceAccessSecurityGroup?: XmlStringMaxLen256; - /** - * A list of additional Amazon EC2 security group IDs for the master node. - */ - AdditionalMasterSecurityGroups?: SecurityGroupsList; - /** - * A list of additional Amazon EC2 security group IDs for the slave nodes. - */ - AdditionalSlaveSecurityGroups?: SecurityGroupsList; - } - export interface JobFlowInstancesDetail { - /** - * The Amazon EC2 master node instance type. - */ - MasterInstanceType: InstanceType; - /** - * The DNS name of the master node. - */ - MasterPublicDnsName?: XmlString; - /** - * The Amazon EC2 instance identifier of the master node. - */ - MasterInstanceId?: XmlString; - /** - * The Amazon EC2 slave node instance type. - */ - SlaveInstanceType: InstanceType; - /** - * The number of Amazon EC2 instances in the cluster. If the value is 1, the same instance serves as both the master and slave node. If the value is greater than 1, one instance is the master node and all others are slave nodes. - */ - InstanceCount: Integer; - /** - * Details about the instance groups in a cluster. - */ - InstanceGroups?: InstanceGroupDetailList; - /** - * An approximation of the cost of the cluster, represented in m1.small/hours. This value is incremented one time for every hour that an m1.small runs. Larger instances are weighted more, so an Amazon EC2 instance that is roughly four times more expensive would result in the normalized instance hours being incremented by four. This result is only an approximation and does not reflect the actual billing rate. - */ - NormalizedInstanceHours?: Integer; - /** - * The name of an Amazon EC2 key pair that can be used to ssh to the master node. - */ - Ec2KeyName?: XmlStringMaxLen256; - /** - * For clusters launched within Amazon Virtual Private Cloud, this is the identifier of the subnet where the cluster was launched. - */ - Ec2SubnetId?: XmlStringMaxLen256; - /** - * The Amazon EC2 Availability Zone for the cluster. - */ - Placement?: PlacementType; - /** - * Specifies whether the cluster should remain available after completing all steps. - */ - KeepJobFlowAliveWhenNoSteps?: Boolean; - /** - * Specifies whether the Amazon EC2 instances in the cluster are protected from termination by API calls, user intervention, or in the event of a job-flow error. - */ - TerminationProtected?: Boolean; - /** - * The Hadoop version for the cluster. - */ - HadoopVersion?: XmlStringMaxLen256; - } - export interface KeyValue { - /** - * The unique identifier of a key value pair. - */ - Key?: XmlString; - /** - * The value part of the identified key. - */ - Value?: XmlString; - } - export type KeyValueList = KeyValue[]; - export interface ListBootstrapActionsInput { - /** - * The cluster identifier for the bootstrap actions to list. - */ - ClusterId: ClusterId; - /** - * The pagination token that indicates the next set of results to retrieve. - */ - Marker?: Marker; - } - export interface ListBootstrapActionsOutput { - /** - * The bootstrap actions associated with the cluster. - */ - BootstrapActions?: CommandList; - /** - * The pagination token that indicates the next set of results to retrieve. - */ - Marker?: Marker; - } - export interface ListClustersInput { - /** - * The creation date and time beginning value filter for listing clusters. - */ - CreatedAfter?: _Date; - /** - * The creation date and time end value filter for listing clusters. - */ - CreatedBefore?: _Date; - /** - * The cluster state filters to apply when listing clusters. - */ - ClusterStates?: ClusterStateList; - /** - * The pagination token that indicates the next set of results to retrieve. - */ - Marker?: Marker; - } - export interface ListClustersOutput { - /** - * The list of clusters for the account based on the given filters. - */ - Clusters?: ClusterSummaryList; - /** - * The pagination token that indicates the next set of results to retrieve. - */ - Marker?: Marker; - } - export interface ListInstanceFleetsInput { - /** - * The unique identifier of the cluster. - */ - ClusterId: ClusterId; - /** - * The pagination token that indicates the next set of results to retrieve. - */ - Marker?: Marker; - } - export interface ListInstanceFleetsOutput { - /** - * The list of instance fleets for the cluster and given filters. - */ - InstanceFleets?: InstanceFleetList; - /** - * The pagination token that indicates the next set of results to retrieve. - */ - Marker?: Marker; - } - export interface ListInstanceGroupsInput { - /** - * The identifier of the cluster for which to list the instance groups. - */ - ClusterId: ClusterId; - /** - * The pagination token that indicates the next set of results to retrieve. - */ - Marker?: Marker; - } - export interface ListInstanceGroupsOutput { - /** - * The list of instance groups for the cluster and given filters. - */ - InstanceGroups?: InstanceGroupList; - /** - * The pagination token that indicates the next set of results to retrieve. - */ - Marker?: Marker; - } - export interface ListInstancesInput { - /** - * The identifier of the cluster for which to list the instances. - */ - ClusterId: ClusterId; - /** - * The identifier of the instance group for which to list the instances. - */ - InstanceGroupId?: InstanceGroupId; - /** - * The type of instance group for which to list the instances. - */ - InstanceGroupTypes?: InstanceGroupTypeList; - /** - * The unique identifier of the instance fleet. - */ - InstanceFleetId?: InstanceFleetId; - /** - * The node type of the instance fleet. For example MASTER, CORE, or TASK. - */ - InstanceFleetType?: InstanceFleetType; - /** - * A list of instance states that will filter the instances returned with this request. - */ - InstanceStates?: InstanceStateList; - /** - * The pagination token that indicates the next set of results to retrieve. - */ - Marker?: Marker; - } - export interface ListInstancesOutput { - /** - * The list of instances for the cluster and given filters. - */ - Instances?: InstanceList; - /** - * The pagination token that indicates the next set of results to retrieve. - */ - Marker?: Marker; - } - export interface ListSecurityConfigurationsInput { - /** - * The pagination token that indicates the set of results to retrieve. - */ - Marker?: Marker; - } - export interface ListSecurityConfigurationsOutput { - /** - * The creation date and time, and name, of each security configuration. - */ - SecurityConfigurations?: SecurityConfigurationList; - /** - * A pagination token that indicates the next set of results to retrieve. Include the marker in the next ListSecurityConfiguration call to retrieve the next page of results, if required. - */ - Marker?: Marker; - } - export interface ListStepsInput { - /** - * The identifier of the cluster for which to list the steps. - */ - ClusterId: ClusterId; - /** - * The filter to limit the step list based on certain states. - */ - StepStates?: StepStateList; - /** - * The filter to limit the step list based on the identifier of the steps. - */ - StepIds?: XmlStringList; - /** - * The pagination token that indicates the next set of results to retrieve. - */ - Marker?: Marker; - } - export interface ListStepsOutput { - /** - * The filtered list of steps for the cluster. - */ - Steps?: StepSummaryList; - /** - * The pagination token that indicates the next set of results to retrieve. - */ - Marker?: Marker; - } - export type Marker = string; - export type MarketType = "ON_DEMAND"|"SPOT"|string; - export interface MetricDimension { - /** - * The dimension name. - */ - Key?: String; - /** - * The dimension value. - */ - Value?: String; - } - export type MetricDimensionList = MetricDimension[]; - export interface ModifyInstanceFleetInput { - /** - * The unique identifier of the cluster. - */ - ClusterId: ClusterId; - /** - * The unique identifier of the instance fleet. - */ - InstanceFleet: InstanceFleetModifyConfig; - } - export interface ModifyInstanceGroupsInput { - /** - * The ID of the cluster to which the instance group belongs. - */ - ClusterId?: ClusterId; - /** - * Instance groups to change. - */ - InstanceGroups?: InstanceGroupModifyConfigList; - } - export type NewSupportedProductsList = SupportedProductConfig[]; - export type NonNegativeDouble = number; - export interface PlacementType { - /** - * The Amazon EC2 Availability Zone for the cluster. AvailabilityZone is used for uniform instance groups, while AvailabilityZones (plural) is used for instance fleets. - */ - AvailabilityZone?: XmlString; - /** - * When multiple Availability Zones are specified, Amazon EMR evaluates them and launches instances in the optimal Availability Zone. AvailabilityZones is used for instance fleets, while AvailabilityZone (singular) is used for uniform instance groups. The instance fleet configuration is available only in Amazon EMR versions 4.8.0 and later, excluding 5.0.x versions. - */ - AvailabilityZones?: XmlStringMaxLen256List; - } - export interface PutAutoScalingPolicyInput { - /** - * Specifies the ID of a cluster. The instance group to which the automatic scaling policy is applied is within this cluster. - */ - ClusterId: ClusterId; - /** - * Specifies the ID of the instance group to which the automatic scaling policy is applied. - */ - InstanceGroupId: InstanceGroupId; - /** - * Specifies the definition of the automatic scaling policy. - */ - AutoScalingPolicy: AutoScalingPolicy; - } - export interface PutAutoScalingPolicyOutput { - /** - * Specifies the ID of a cluster. The instance group to which the automatic scaling policy is applied is within this cluster. - */ - ClusterId?: ClusterId; - /** - * Specifies the ID of the instance group to which the scaling policy is applied. - */ - InstanceGroupId?: InstanceGroupId; - /** - * The automatic scaling policy definition. - */ - AutoScalingPolicy?: AutoScalingPolicyDescription; - } - export interface RemoveAutoScalingPolicyInput { - /** - * Specifies the ID of a cluster. The instance group to which the automatic scaling policy is applied is within this cluster. - */ - ClusterId: ClusterId; - /** - * Specifies the ID of the instance group to which the scaling policy is applied. - */ - InstanceGroupId: InstanceGroupId; - } - export interface RemoveAutoScalingPolicyOutput { - } - export interface RemoveTagsInput { - /** - * The Amazon EMR resource identifier from which tags will be removed. This value must be a cluster identifier. - */ - ResourceId: ResourceId; - /** - * A list of tag keys to remove from a resource. - */ - TagKeys: StringList; - } - export interface RemoveTagsOutput { - } - export type RepoUpgradeOnBoot = "SECURITY"|"NONE"|string; - export type ResourceId = string; - export interface RunJobFlowInput { - /** - * The name of the job flow. - */ - Name: XmlStringMaxLen256; - /** - * The location in Amazon S3 to write the log files of the job flow. If a value is not provided, logs are not created. - */ - LogUri?: XmlString; - /** - * A JSON string for selecting additional features. - */ - AdditionalInfo?: XmlString; - /** - * For Amazon EMR AMI versions 3.x and 2.x. For Amazon EMR releases 4.0 and later, the Linux AMI is determined by the ReleaseLabel specified or by CustomAmiID. The version of the Amazon Machine Image (AMI) to use when launching Amazon EC2 instances in the job flow. For details about the AMI versions currently supported in EMR version 3.x and 2.x, see AMI Versions Supported in EMR in the Amazon EMR Developer Guide. If the AMI supports multiple versions of Hadoop (for example, AMI 1.0 supports both Hadoop 0.18 and 0.20), you can use the JobFlowInstancesConfig HadoopVersion parameter to modify the version of Hadoop from the defaults shown above. Previously, the EMR AMI version API parameter options allowed you to use latest for the latest AMI version rather than specify a numerical value. Some regions no longer support this deprecated option as they only have a newer release label version of EMR, which requires you to specify an EMR release label release (EMR 4.x or later). - */ - AmiVersion?: XmlStringMaxLen256; - /** - * The release label for the Amazon EMR release. For Amazon EMR 3.x and 2.x AMIs, use AmiVersion instead. - */ - ReleaseLabel?: XmlStringMaxLen256; - /** - * A specification of the number and type of Amazon EC2 instances. - */ - Instances: JobFlowInstancesConfig; - /** - * A list of steps to run. - */ - Steps?: StepConfigList; - /** - * A list of bootstrap actions to run before Hadoop starts on the cluster nodes. - */ - BootstrapActions?: BootstrapActionConfigList; - /** - * For Amazon EMR releases 3.x and 2.x. For Amazon EMR releases 4.x and later, use Applications. A list of strings that indicates third-party software to use. For more information, see Use Third Party Applications with Amazon EMR. Currently supported values are: "mapr-m3" - launch the job flow using MapR M3 Edition. "mapr-m5" - launch the job flow using MapR M5 Edition. - */ - SupportedProducts?: SupportedProductsList; - /** - * For Amazon EMR releases 3.x and 2.x. For Amazon EMR releases 4.x and later, use Applications. A list of strings that indicates third-party software to use with the job flow that accepts a user argument list. EMR accepts and forwards the argument list to the corresponding installation script as bootstrap action arguments. For more information, see "Launch a Job Flow on the MapR Distribution for Hadoop" in the Amazon EMR Developer Guide. Supported values are: "mapr-m3" - launch the cluster using MapR M3 Edition. "mapr-m5" - launch the cluster using MapR M5 Edition. "mapr" with the user arguments specifying "--edition,m3" or "--edition,m5" - launch the job flow using MapR M3 or M5 Edition respectively. "mapr-m7" - launch the cluster using MapR M7 Edition. "hunk" - launch the cluster with the Hunk Big Data Analtics Platform. "hue"- launch the cluster with Hue installed. "spark" - launch the cluster with Apache Spark installed. "ganglia" - launch the cluster with the Ganglia Monitoring System installed. - */ - NewSupportedProducts?: NewSupportedProductsList; - /** - * For Amazon EMR releases 4.0 and later. A list of applications for the cluster. Valid values are: "Hadoop", "Hive", "Mahout", "Pig", and "Spark." They are case insensitive. - */ - Applications?: ApplicationList; - /** - * For Amazon EMR releases 4.0 and later. The list of configurations supplied for the EMR cluster you are creating. - */ - Configurations?: ConfigurationList; - /** - * Whether the cluster is visible to all IAM users of the AWS account associated with the cluster. If this value is set to true, all IAM users of that AWS account can view and (if they have the proper policy permissions set) manage the cluster. If it is set to false, only the IAM user that created the cluster can view and manage it. - */ - VisibleToAllUsers?: Boolean; - /** - * Also called instance profile and EC2 role. An IAM role for an EMR cluster. The EC2 instances of the cluster assume this role. The default role is EMR_EC2_DefaultRole. In order to use the default role, you must have already created it using the CLI or console. - */ - JobFlowRole?: XmlString; - /** - * The IAM role that will be assumed by the Amazon EMR service to access AWS resources on your behalf. - */ - ServiceRole?: XmlString; - /** - * A list of tags to associate with a cluster and propagate to Amazon EC2 instances. - */ - Tags?: TagList; - /** - * The name of a security configuration to apply to the cluster. - */ - SecurityConfiguration?: XmlString; - /** - * An IAM role for automatic scaling policies. The default role is EMR_AutoScaling_DefaultRole. The IAM role provides permissions that the automatic scaling feature requires to launch and terminate EC2 instances in an instance group. - */ - AutoScalingRole?: XmlString; - /** - * Specifies the way that individual Amazon EC2 instances terminate when an automatic scale-in activity occurs or an instance group is resized. TERMINATE_AT_INSTANCE_HOUR indicates that Amazon EMR terminates nodes at the instance-hour boundary, regardless of when the request to terminate the instance was submitted. This option is only available with Amazon EMR 5.1.0 and later and is the default for clusters created using that version. TERMINATE_AT_TASK_COMPLETION indicates that Amazon EMR blacklists and drains tasks from nodes before terminating the Amazon EC2 instances, regardless of the instance-hour boundary. With either behavior, Amazon EMR removes the least active nodes first and blocks instance termination if it could lead to HDFS corruption. TERMINATE_AT_TASK_COMPLETION available only in Amazon EMR version 4.1.0 and later, and is the default for versions of Amazon EMR earlier than 5.1.0. - */ - ScaleDownBehavior?: ScaleDownBehavior; - /** - * Available only in Amazon EMR version 5.7.0 and later. The ID of a custom Amazon EBS-backed Linux AMI. If specified, Amazon EMR uses this AMI when it launches cluster EC2 instances. For more information about custom AMIs in Amazon EMR, see Using a Custom AMI in the Amazon EMR Management Guide. If omitted, the cluster uses the base Linux AMI for the ReleaseLabel specified. For Amazon EMR versions 2.x and 3.x, use AmiVersion instead. For information about creating a custom AMI, see Creating an Amazon EBS-Backed Linux AMI in the Amazon Elastic Compute Cloud User Guide for Linux Instances. For information about finding an AMI ID, see Finding a Linux AMI. - */ - CustomAmiId?: XmlStringMaxLen256; - /** - * The size, in GiB, of the EBS root device volume of the Linux AMI that is used for each EC2 instance. Available in Amazon EMR version 4.x and later. - */ - EbsRootVolumeSize?: Integer; - /** - * Applies only when CustomAmiID is used. Specifies which updates from the Amazon Linux AMI package repositories to apply automatically when the instance boots using the AMI. If omitted, the default is SECURITY, which indicates that only security updates are applied. If NONE is specified, no updates are applied, and all updates must be applied manually. - */ - RepoUpgradeOnBoot?: RepoUpgradeOnBoot; - } - export interface RunJobFlowOutput { - /** - * An unique identifier for the job flow. - */ - JobFlowId?: XmlStringMaxLen256; - } - export type ScaleDownBehavior = "TERMINATE_AT_INSTANCE_HOUR"|"TERMINATE_AT_TASK_COMPLETION"|string; - export interface ScalingAction { - /** - * Not available for instance groups. Instance groups use the market type specified for the group. - */ - Market?: MarketType; - /** - * The type of adjustment the automatic scaling activity makes when triggered, and the periodicity of the adjustment. - */ - SimpleScalingPolicyConfiguration: SimpleScalingPolicyConfiguration; - } - export interface ScalingConstraints { - /** - * The lower boundary of EC2 instances in an instance group below which scaling activities are not allowed to shrink. Scale-in activities will not terminate instances below this boundary. - */ - MinCapacity: Integer; - /** - * The upper boundary of EC2 instances in an instance group beyond which scaling activities are not allowed to grow. Scale-out activities will not add instances beyond this boundary. - */ - MaxCapacity: Integer; - } - export interface ScalingRule { - /** - * The name used to identify an automatic scaling rule. Rule names must be unique within a scaling policy. - */ - Name: String; - /** - * A friendly, more verbose description of the automatic scaling rule. - */ - Description?: String; - /** - * The conditions that trigger an automatic scaling activity. - */ - Action: ScalingAction; - /** - * The CloudWatch alarm definition that determines when automatic scaling activity is triggered. - */ - Trigger: ScalingTrigger; - } - export type ScalingRuleList = ScalingRule[]; - export interface ScalingTrigger { - /** - * The definition of a CloudWatch metric alarm. When the defined alarm conditions are met along with other trigger parameters, scaling activity begins. - */ - CloudWatchAlarmDefinition: CloudWatchAlarmDefinition; - } - export interface ScriptBootstrapActionConfig { - /** - * Location of the script to run during a bootstrap action. Can be either a location in Amazon S3 or on a local file system. - */ - Path: XmlString; - /** - * A list of command line arguments to pass to the bootstrap action script. - */ - Args?: XmlStringList; - } - export type SecurityConfigurationList = SecurityConfigurationSummary[]; - export interface SecurityConfigurationSummary { - /** - * The name of the security configuration. - */ - Name?: XmlString; - /** - * The date and time the security configuration was created. - */ - CreationDateTime?: _Date; - } - export type SecurityGroupsList = XmlStringMaxLen256[]; - export interface SetTerminationProtectionInput { - /** - * A list of strings that uniquely identify the clusters to protect. This identifier is returned by RunJobFlow and can also be obtained from DescribeJobFlows . - */ - JobFlowIds: XmlStringList; - /** - * A Boolean that indicates whether to protect the cluster and prevent the Amazon EC2 instances in the cluster from shutting down due to API calls, user intervention, or job-flow error. - */ - TerminationProtected: Boolean; - } - export interface SetVisibleToAllUsersInput { - /** - * Identifiers of the job flows to receive the new visibility setting. - */ - JobFlowIds: XmlStringList; - /** - * Whether the specified clusters are visible to all IAM users of the AWS account associated with the cluster. If this value is set to True, all IAM users of that AWS account can view and, if they have the proper IAM policy permissions set, manage the clusters. If it is set to False, only the IAM user that created a cluster can view and manage it. - */ - VisibleToAllUsers: Boolean; - } - export interface ShrinkPolicy { - /** - * The desired timeout for decommissioning an instance. Overrides the default YARN decommissioning timeout. - */ - DecommissionTimeout?: Integer; - /** - * Custom policy for requesting termination protection or termination of specific instances when shrinking an instance group. - */ - InstanceResizePolicy?: InstanceResizePolicy; - } - export interface SimpleScalingPolicyConfiguration { - /** - * The way in which EC2 instances are added (if ScalingAdjustment is a positive number) or terminated (if ScalingAdjustment is a negative number) each time the scaling activity is triggered. CHANGE_IN_CAPACITY is the default. CHANGE_IN_CAPACITY indicates that the EC2 instance count increments or decrements by ScalingAdjustment, which should be expressed as an integer. PERCENT_CHANGE_IN_CAPACITY indicates the instance count increments or decrements by the percentage specified by ScalingAdjustment, which should be expressed as a decimal. For example, 0.20 indicates an increase in 20% increments of cluster capacity. EXACT_CAPACITY indicates the scaling activity results in an instance group with the number of EC2 instances specified by ScalingAdjustment, which should be expressed as a positive integer. - */ - AdjustmentType?: AdjustmentType; - /** - * The amount by which to scale in or scale out, based on the specified AdjustmentType. A positive value adds to the instance group's EC2 instance count while a negative number removes instances. If AdjustmentType is set to EXACT_CAPACITY, the number should only be a positive integer. If AdjustmentType is set to PERCENT_CHANGE_IN_CAPACITY, the value should express the percentage as a decimal. For example, -0.20 indicates a decrease in 20% increments of cluster capacity. - */ - ScalingAdjustment: Integer; - /** - * The amount of time, in seconds, after a scaling activity completes before any further trigger-related scaling activities can start. The default value is 0. - */ - CoolDown?: Integer; - } - export interface SpotProvisioningSpecification { - /** - * The spot provisioning timeout period in minutes. If Spot instances are not provisioned within this time period, the TimeOutAction is taken. Minimum value is 5 and maximum value is 1440. The timeout applies only during initial provisioning, when the cluster is first created. - */ - TimeoutDurationMinutes: WholeNumber; - /** - * The action to take when TargetSpotCapacity has not been fulfilled when the TimeoutDurationMinutes has expired. Spot instances are not uprovisioned within the Spot provisioining timeout. Valid values are TERMINATE_CLUSTER and SWITCH_TO_ON_DEMAND. SWITCH_TO_ON_DEMAND specifies that if no Spot instances are available, On-Demand Instances should be provisioned to fulfill any remaining Spot capacity. - */ - TimeoutAction: SpotProvisioningTimeoutAction; - /** - * The defined duration for Spot instances (also known as Spot blocks) in minutes. When specified, the Spot instance does not terminate before the defined duration expires, and defined duration pricing for Spot instances applies. Valid values are 60, 120, 180, 240, 300, or 360. The duration period starts as soon as a Spot instance receives its instance ID. At the end of the duration, Amazon EC2 marks the Spot instance for termination and provides a Spot instance termination notice, which gives the instance a two-minute warning before it terminates. - */ - BlockDurationMinutes?: WholeNumber; - } - export type SpotProvisioningTimeoutAction = "SWITCH_TO_ON_DEMAND"|"TERMINATE_CLUSTER"|string; - export type Statistic = "SAMPLE_COUNT"|"AVERAGE"|"SUM"|"MINIMUM"|"MAXIMUM"|string; - export interface Step { - /** - * The identifier of the cluster step. - */ - Id?: StepId; - /** - * The name of the cluster step. - */ - Name?: String; - /** - * The Hadoop job configuration of the cluster step. - */ - Config?: HadoopStepConfig; - /** - * This specifies what action to take when the cluster step fails. Possible values are TERMINATE_CLUSTER, CANCEL_AND_WAIT, and CONTINUE. - */ - ActionOnFailure?: ActionOnFailure; - /** - * The current execution status details of the cluster step. - */ - Status?: StepStatus; - } - export interface StepConfig { - /** - * The name of the step. - */ - Name: XmlStringMaxLen256; - /** - * The action to take if the step fails. - */ - ActionOnFailure?: ActionOnFailure; - /** - * The JAR file used for the step. - */ - HadoopJarStep: HadoopJarStepConfig; - } - export type StepConfigList = StepConfig[]; - export interface StepDetail { - /** - * The step configuration. - */ - StepConfig: StepConfig; - /** - * The description of the step status. - */ - ExecutionStatusDetail: StepExecutionStatusDetail; - } - export type StepDetailList = StepDetail[]; - export type StepExecutionState = "PENDING"|"RUNNING"|"CONTINUE"|"COMPLETED"|"CANCELLED"|"FAILED"|"INTERRUPTED"|string; - export interface StepExecutionStatusDetail { - /** - * The state of the step. - */ - State: StepExecutionState; - /** - * The creation date and time of the step. - */ - CreationDateTime: _Date; - /** - * The start date and time of the step. - */ - StartDateTime?: _Date; - /** - * The completion date and time of the step. - */ - EndDateTime?: _Date; - /** - * A description of the step's current state. - */ - LastStateChangeReason?: XmlString; - } - export type StepId = string; - export type StepIdsList = XmlStringMaxLen256[]; - export type StepState = "PENDING"|"CANCEL_PENDING"|"RUNNING"|"COMPLETED"|"CANCELLED"|"FAILED"|"INTERRUPTED"|string; - export interface StepStateChangeReason { - /** - * The programmable code for the state change reason. Note: Currently, the service provides no code for the state change. - */ - Code?: StepStateChangeReasonCode; - /** - * The descriptive message for the state change reason. - */ - Message?: String; - } - export type StepStateChangeReasonCode = "NONE"|string; - export type StepStateList = StepState[]; - export interface StepStatus { - /** - * The execution state of the cluster step. - */ - State?: StepState; - /** - * The reason for the step execution status change. - */ - StateChangeReason?: StepStateChangeReason; - /** - * The details for the step failure including reason, message, and log file path where the root cause was identified. - */ - FailureDetails?: FailureDetails; - /** - * The timeline of the cluster step status over time. - */ - Timeline?: StepTimeline; - } - export interface StepSummary { - /** - * The identifier of the cluster step. - */ - Id?: StepId; - /** - * The name of the cluster step. - */ - Name?: String; - /** - * The Hadoop job configuration of the cluster step. - */ - Config?: HadoopStepConfig; - /** - * This specifies what action to take when the cluster step fails. Possible values are TERMINATE_CLUSTER, CANCEL_AND_WAIT, and CONTINUE. - */ - ActionOnFailure?: ActionOnFailure; - /** - * The current execution status details of the cluster step. - */ - Status?: StepStatus; - } - export type StepSummaryList = StepSummary[]; - export interface StepTimeline { - /** - * The date and time when the cluster step was created. - */ - CreationDateTime?: _Date; - /** - * The date and time when the cluster step execution started. - */ - StartDateTime?: _Date; - /** - * The date and time when the cluster step execution completed or failed. - */ - EndDateTime?: _Date; - } - export type String = string; - export type StringList = String[]; - export type StringMap = {[key: string]: String}; - export interface SupportedProductConfig { - /** - * The name of the product configuration. - */ - Name?: XmlStringMaxLen256; - /** - * The list of user-supplied arguments. - */ - Args?: XmlStringList; - } - export type SupportedProductsList = XmlStringMaxLen256[]; - export interface Tag { - /** - * A user-defined key, which is the minimum required information for a valid tag. For more information, see Tagging Amazon EMR Resources. - */ - Key?: String; - /** - * A user-defined value, which is optional in a tag. For more information, see Tagging Amazon EMR Resources. - */ - Value?: String; - } - export type TagList = Tag[]; - export interface TerminateJobFlowsInput { - /** - * A list of job flows to be shutdown. - */ - JobFlowIds: XmlStringList; - } - export type Unit = "NONE"|"SECONDS"|"MICRO_SECONDS"|"MILLI_SECONDS"|"BYTES"|"KILO_BYTES"|"MEGA_BYTES"|"GIGA_BYTES"|"TERA_BYTES"|"BITS"|"KILO_BITS"|"MEGA_BITS"|"GIGA_BITS"|"TERA_BITS"|"PERCENT"|"COUNT"|"BYTES_PER_SECOND"|"KILO_BYTES_PER_SECOND"|"MEGA_BYTES_PER_SECOND"|"GIGA_BYTES_PER_SECOND"|"TERA_BYTES_PER_SECOND"|"BITS_PER_SECOND"|"KILO_BITS_PER_SECOND"|"MEGA_BITS_PER_SECOND"|"GIGA_BITS_PER_SECOND"|"TERA_BITS_PER_SECOND"|"COUNT_PER_SECOND"|string; - export interface VolumeSpecification { - /** - * The volume type. Volume types supported are gp2, io1, standard. - */ - VolumeType: String; - /** - * The number of I/O operations per second (IOPS) that the volume supports. - */ - Iops?: Integer; - /** - * The volume size, in gibibytes (GiB). This can be a number from 1 - 1024. If the volume type is EBS-optimized, the minimum value is 10. - */ - SizeInGB: Integer; - } - export type WholeNumber = number; - export type XmlString = string; - export type XmlStringList = XmlString[]; - export type XmlStringMaxLen256 = string; - export type XmlStringMaxLen256List = XmlStringMaxLen256[]; - /** - * A string in YYYY-MM-DD format that represents the latest possible API version that can be used in this service. Specify 'latest' to use the latest possible version. - */ - export type apiVersion = "2009-03-31"|"latest"|string; - export interface ClientApiVersions { - /** - * A string in YYYY-MM-DD format that represents the latest possible API version that can be used in this service. Specify 'latest' to use the latest possible version. - */ - apiVersion?: apiVersion; - } - export type ClientConfiguration = ServiceConfigurationOptions & ClientApiVersions; - /** - * Contains interfaces for use with the EMR client. - */ - export import Types = EMR; -} -export = EMR; diff --git a/workshops/monte-carlo-on-ec2-spot-fleet/src/web/node_modules/aws-sdk/clients/emr.js b/workshops/monte-carlo-on-ec2-spot-fleet/src/web/node_modules/aws-sdk/clients/emr.js deleted file mode 100644 index a53499a9..00000000 --- a/workshops/monte-carlo-on-ec2-spot-fleet/src/web/node_modules/aws-sdk/clients/emr.js +++ /dev/null @@ -1,19 +0,0 @@ -require('../lib/node_loader'); -var AWS = require('../lib/core'); -var Service = AWS.Service; -var apiLoader = AWS.apiLoader; - -apiLoader.services['emr'] = {}; -AWS.EMR = Service.defineService('emr', ['2009-03-31']); -Object.defineProperty(apiLoader.services['emr'], '2009-03-31', { - get: function get() { - var model = require('../apis/elasticmapreduce-2009-03-31.min.json'); - model.paginators = require('../apis/elasticmapreduce-2009-03-31.paginators.json').pagination; - model.waiters = require('../apis/elasticmapreduce-2009-03-31.waiters2.json').waiters; - return model; - }, - enumerable: true, - configurable: true -}); - -module.exports = AWS.EMR; diff --git a/workshops/monte-carlo-on-ec2-spot-fleet/src/web/node_modules/aws-sdk/clients/es.d.ts b/workshops/monte-carlo-on-ec2-spot-fleet/src/web/node_modules/aws-sdk/clients/es.d.ts deleted file mode 100644 index 6af01445..00000000 --- a/workshops/monte-carlo-on-ec2-spot-fleet/src/web/node_modules/aws-sdk/clients/es.d.ts +++ /dev/null @@ -1,652 +0,0 @@ -import {Request} from '../lib/request'; -import {Response} from '../lib/response'; -import {AWSError} from '../lib/error'; -import {Service} from '../lib/service'; -import {ServiceConfigurationOptions} from '../lib/service'; -import {ConfigBase as Config} from '../lib/config'; -interface Blob {} -declare class ES extends Service { - /** - * Constructs a service object. This object has one method for each API operation. - */ - constructor(options?: ES.Types.ClientConfiguration) - config: Config & ES.Types.ClientConfiguration; - /** - * Attaches tags to an existing Elasticsearch domain. Tags are a set of case-sensitive key value pairs. An Elasticsearch domain may have up to 10 tags. See Tagging Amazon Elasticsearch Service Domains for more information. - */ - addTags(params: ES.Types.AddTagsRequest, callback?: (err: AWSError, data: {}) => void): Request<{}, AWSError>; - /** - * Attaches tags to an existing Elasticsearch domain. Tags are a set of case-sensitive key value pairs. An Elasticsearch domain may have up to 10 tags. See Tagging Amazon Elasticsearch Service Domains for more information. - */ - addTags(callback?: (err: AWSError, data: {}) => void): Request<{}, AWSError>; - /** - * Creates a new Elasticsearch domain. For more information, see Creating Elasticsearch Domains in the Amazon Elasticsearch Service Developer Guide. - */ - createElasticsearchDomain(params: ES.Types.CreateElasticsearchDomainRequest, callback?: (err: AWSError, data: ES.Types.CreateElasticsearchDomainResponse) => void): Request; - /** - * Creates a new Elasticsearch domain. For more information, see Creating Elasticsearch Domains in the Amazon Elasticsearch Service Developer Guide. - */ - createElasticsearchDomain(callback?: (err: AWSError, data: ES.Types.CreateElasticsearchDomainResponse) => void): Request; - /** - * Permanently deletes the specified Elasticsearch domain and all of its data. Once a domain is deleted, it cannot be recovered. - */ - deleteElasticsearchDomain(params: ES.Types.DeleteElasticsearchDomainRequest, callback?: (err: AWSError, data: ES.Types.DeleteElasticsearchDomainResponse) => void): Request; - /** - * Permanently deletes the specified Elasticsearch domain and all of its data. Once a domain is deleted, it cannot be recovered. - */ - deleteElasticsearchDomain(callback?: (err: AWSError, data: ES.Types.DeleteElasticsearchDomainResponse) => void): Request; - /** - * Returns domain configuration information about the specified Elasticsearch domain, including the domain ID, domain endpoint, and domain ARN. - */ - describeElasticsearchDomain(params: ES.Types.DescribeElasticsearchDomainRequest, callback?: (err: AWSError, data: ES.Types.DescribeElasticsearchDomainResponse) => void): Request; - /** - * Returns domain configuration information about the specified Elasticsearch domain, including the domain ID, domain endpoint, and domain ARN. - */ - describeElasticsearchDomain(callback?: (err: AWSError, data: ES.Types.DescribeElasticsearchDomainResponse) => void): Request; - /** - * Provides cluster configuration information about the specified Elasticsearch domain, such as the state, creation date, update version, and update date for cluster options. - */ - describeElasticsearchDomainConfig(params: ES.Types.DescribeElasticsearchDomainConfigRequest, callback?: (err: AWSError, data: ES.Types.DescribeElasticsearchDomainConfigResponse) => void): Request; - /** - * Provides cluster configuration information about the specified Elasticsearch domain, such as the state, creation date, update version, and update date for cluster options. - */ - describeElasticsearchDomainConfig(callback?: (err: AWSError, data: ES.Types.DescribeElasticsearchDomainConfigResponse) => void): Request; - /** - * Returns domain configuration information about the specified Elasticsearch domains, including the domain ID, domain endpoint, and domain ARN. - */ - describeElasticsearchDomains(params: ES.Types.DescribeElasticsearchDomainsRequest, callback?: (err: AWSError, data: ES.Types.DescribeElasticsearchDomainsResponse) => void): Request; - /** - * Returns domain configuration information about the specified Elasticsearch domains, including the domain ID, domain endpoint, and domain ARN. - */ - describeElasticsearchDomains(callback?: (err: AWSError, data: ES.Types.DescribeElasticsearchDomainsResponse) => void): Request; - /** - * Describe Elasticsearch Limits for a given InstanceType and ElasticsearchVersion. When modifying existing Domain, specify the DomainName to know what Limits are supported for modifying. - */ - describeElasticsearchInstanceTypeLimits(params: ES.Types.DescribeElasticsearchInstanceTypeLimitsRequest, callback?: (err: AWSError, data: ES.Types.DescribeElasticsearchInstanceTypeLimitsResponse) => void): Request; - /** - * Describe Elasticsearch Limits for a given InstanceType and ElasticsearchVersion. When modifying existing Domain, specify the DomainName to know what Limits are supported for modifying. - */ - describeElasticsearchInstanceTypeLimits(callback?: (err: AWSError, data: ES.Types.DescribeElasticsearchInstanceTypeLimitsResponse) => void): Request; - /** - * Returns the name of all Elasticsearch domains owned by the current user's account. - */ - listDomainNames(callback?: (err: AWSError, data: ES.Types.ListDomainNamesResponse) => void): Request; - /** - * List all Elasticsearch instance types that are supported for given ElasticsearchVersion - */ - listElasticsearchInstanceTypes(params: ES.Types.ListElasticsearchInstanceTypesRequest, callback?: (err: AWSError, data: ES.Types.ListElasticsearchInstanceTypesResponse) => void): Request; - /** - * List all Elasticsearch instance types that are supported for given ElasticsearchVersion - */ - listElasticsearchInstanceTypes(callback?: (err: AWSError, data: ES.Types.ListElasticsearchInstanceTypesResponse) => void): Request; - /** - * List all supported Elasticsearch versions - */ - listElasticsearchVersions(params: ES.Types.ListElasticsearchVersionsRequest, callback?: (err: AWSError, data: ES.Types.ListElasticsearchVersionsResponse) => void): Request; - /** - * List all supported Elasticsearch versions - */ - listElasticsearchVersions(callback?: (err: AWSError, data: ES.Types.ListElasticsearchVersionsResponse) => void): Request; - /** - * Returns all tags for the given Elasticsearch domain. - */ - listTags(params: ES.Types.ListTagsRequest, callback?: (err: AWSError, data: ES.Types.ListTagsResponse) => void): Request; - /** - * Returns all tags for the given Elasticsearch domain. - */ - listTags(callback?: (err: AWSError, data: ES.Types.ListTagsResponse) => void): Request; - /** - * Removes the specified set of tags from the specified Elasticsearch domain. - */ - removeTags(params: ES.Types.RemoveTagsRequest, callback?: (err: AWSError, data: {}) => void): Request<{}, AWSError>; - /** - * Removes the specified set of tags from the specified Elasticsearch domain. - */ - removeTags(callback?: (err: AWSError, data: {}) => void): Request<{}, AWSError>; - /** - * Modifies the cluster configuration of the specified Elasticsearch domain, setting as setting the instance type and the number of instances. - */ - updateElasticsearchDomainConfig(params: ES.Types.UpdateElasticsearchDomainConfigRequest, callback?: (err: AWSError, data: ES.Types.UpdateElasticsearchDomainConfigResponse) => void): Request; - /** - * Modifies the cluster configuration of the specified Elasticsearch domain, setting as setting the instance type and the number of instances. - */ - updateElasticsearchDomainConfig(callback?: (err: AWSError, data: ES.Types.UpdateElasticsearchDomainConfigResponse) => void): Request; -} -declare namespace ES { - export type ARN = string; - export interface AccessPoliciesStatus { - /** - * The access policy configured for the Elasticsearch domain. Access policies may be resource-based, IP-based, or IAM-based. See Configuring Access Policiesfor more information. - */ - Options: PolicyDocument; - /** - * The status of the access policy for the Elasticsearch domain. See OptionStatus for the status information that's included. - */ - Status: OptionStatus; - } - export interface AddTagsRequest { - /** - * Specify the ARN for which you want to add the tags. - */ - ARN: ARN; - /** - * List of Tag that need to be added for the Elasticsearch domain. - */ - TagList: TagList; - } - export interface AdditionalLimit { - /** - * Name of Additional Limit is specific to a given InstanceType and for each of it's InstanceRole etc. Attributes and their details: MaximumNumberOfDataNodesSupported This attribute will be present in Master node only to specify how much data nodes upto which given ESPartitionInstanceType can support as master node. MaximumNumberOfDataNodesWithoutMasterNode This attribute will be present in Data node only to specify how much data nodes of given ESPartitionInstanceType upto which you don't need any master nodes to govern them. - */ - LimitName?: LimitName; - /** - * Value for given AdditionalLimit$LimitName . - */ - LimitValues?: LimitValueList; - } - export type AdditionalLimitList = AdditionalLimit[]; - export type AdvancedOptions = {[key: string]: String}; - export interface AdvancedOptionsStatus { - /** - * Specifies the status of advanced options for the specified Elasticsearch domain. - */ - Options: AdvancedOptions; - /** - * Specifies the status of OptionStatus for advanced options for the specified Elasticsearch domain. - */ - Status: OptionStatus; - } - export type Boolean = boolean; - export interface CreateElasticsearchDomainRequest { - /** - * The name of the Elasticsearch domain that you are creating. Domain names are unique across the domains owned by an account within an AWS region. Domain names must start with a letter or number and can contain the following characters: a-z (lowercase), 0-9, and - (hyphen). - */ - DomainName: DomainName; - /** - * String of format X.Y to specify version for the Elasticsearch domain eg. "1.5" or "2.3". For more information, see Creating Elasticsearch Domains in the Amazon Elasticsearch Service Developer Guide. - */ - ElasticsearchVersion?: ElasticsearchVersionString; - /** - * Configuration options for an Elasticsearch domain. Specifies the instance type and number of instances in the domain cluster. - */ - ElasticsearchClusterConfig?: ElasticsearchClusterConfig; - /** - * Options to enable, disable and specify the type and size of EBS storage volumes. - */ - EBSOptions?: EBSOptions; - /** - * IAM access policy as a JSON-formatted string. - */ - AccessPolicies?: PolicyDocument; - /** - * Option to set time, in UTC format, of the daily automated snapshot. Default value is 0 hours. - */ - SnapshotOptions?: SnapshotOptions; - /** - * Option to allow references to indices in an HTTP request body. Must be false when configuring access to individual sub-resources. By default, the value is true. See Configuration Advanced Options for more information. - */ - AdvancedOptions?: AdvancedOptions; - } - export interface CreateElasticsearchDomainResponse { - /** - * The status of the newly created Elasticsearch domain. - */ - DomainStatus?: ElasticsearchDomainStatus; - } - export interface DeleteElasticsearchDomainRequest { - /** - * The name of the Elasticsearch domain that you want to permanently delete. - */ - DomainName: DomainName; - } - export interface DeleteElasticsearchDomainResponse { - /** - * The status of the Elasticsearch domain being deleted. - */ - DomainStatus?: ElasticsearchDomainStatus; - } - export interface DescribeElasticsearchDomainConfigRequest { - /** - * The Elasticsearch domain that you want to get information about. - */ - DomainName: DomainName; - } - export interface DescribeElasticsearchDomainConfigResponse { - /** - * The configuration information of the domain requested in the DescribeElasticsearchDomainConfig request. - */ - DomainConfig: ElasticsearchDomainConfig; - } - export interface DescribeElasticsearchDomainRequest { - /** - * The name of the Elasticsearch domain for which you want information. - */ - DomainName: DomainName; - } - export interface DescribeElasticsearchDomainResponse { - /** - * The current status of the Elasticsearch domain. - */ - DomainStatus: ElasticsearchDomainStatus; - } - export interface DescribeElasticsearchDomainsRequest { - /** - * The Elasticsearch domains for which you want information. - */ - DomainNames: DomainNameList; - } - export interface DescribeElasticsearchDomainsResponse { - /** - * The status of the domains requested in the DescribeElasticsearchDomains request. - */ - DomainStatusList: ElasticsearchDomainStatusList; - } - export interface DescribeElasticsearchInstanceTypeLimitsRequest { - /** - * DomainName represents the name of the Domain that we are trying to modify. This should be present only if we are querying for Elasticsearch Limits for existing domain. - */ - DomainName?: DomainName; - /** - * The instance type for an Elasticsearch cluster for which Elasticsearch Limits are needed. - */ - InstanceType: ESPartitionInstanceType; - /** - * Version of Elasticsearch for which Limits are needed. - */ - ElasticsearchVersion: ElasticsearchVersionString; - } - export interface DescribeElasticsearchInstanceTypeLimitsResponse { - LimitsByRole?: LimitsByRole; - } - export type DomainId = string; - export interface DomainInfo { - /** - * Specifies the DomainName. - */ - DomainName?: DomainName; - } - export type DomainInfoList = DomainInfo[]; - export type DomainName = string; - export type DomainNameList = DomainName[]; - export interface EBSOptions { - /** - * Specifies whether EBS-based storage is enabled. - */ - EBSEnabled?: Boolean; - /** - * Specifies the volume type for EBS-based storage. - */ - VolumeType?: VolumeType; - /** - * Integer to specify the size of an EBS volume. - */ - VolumeSize?: IntegerClass; - /** - * Specifies the IOPD for a Provisioned IOPS EBS volume (SSD). - */ - Iops?: IntegerClass; - } - export interface EBSOptionsStatus { - /** - * Specifies the EBS options for the specified Elasticsearch domain. - */ - Options: EBSOptions; - /** - * Specifies the status of the EBS options for the specified Elasticsearch domain. - */ - Status: OptionStatus; - } - export type ESPartitionInstanceType = "m3.medium.elasticsearch"|"m3.large.elasticsearch"|"m3.xlarge.elasticsearch"|"m3.2xlarge.elasticsearch"|"m4.large.elasticsearch"|"m4.xlarge.elasticsearch"|"m4.2xlarge.elasticsearch"|"m4.4xlarge.elasticsearch"|"m4.10xlarge.elasticsearch"|"t2.micro.elasticsearch"|"t2.small.elasticsearch"|"t2.medium.elasticsearch"|"r3.large.elasticsearch"|"r3.xlarge.elasticsearch"|"r3.2xlarge.elasticsearch"|"r3.4xlarge.elasticsearch"|"r3.8xlarge.elasticsearch"|"i2.xlarge.elasticsearch"|"i2.2xlarge.elasticsearch"|"d2.xlarge.elasticsearch"|"d2.2xlarge.elasticsearch"|"d2.4xlarge.elasticsearch"|"d2.8xlarge.elasticsearch"|"c4.large.elasticsearch"|"c4.xlarge.elasticsearch"|"c4.2xlarge.elasticsearch"|"c4.4xlarge.elasticsearch"|"c4.8xlarge.elasticsearch"|"r4.large.elasticsearch"|"r4.xlarge.elasticsearch"|"r4.2xlarge.elasticsearch"|"r4.4xlarge.elasticsearch"|"r4.8xlarge.elasticsearch"|"r4.16xlarge.elasticsearch"|string; - export interface ElasticsearchClusterConfig { - /** - * The instance type for an Elasticsearch cluster. - */ - InstanceType?: ESPartitionInstanceType; - /** - * The number of instances in the specified domain cluster. - */ - InstanceCount?: IntegerClass; - /** - * A boolean value to indicate whether a dedicated master node is enabled. See About Dedicated Master Nodes for more information. - */ - DedicatedMasterEnabled?: Boolean; - /** - * A boolean value to indicate whether zone awareness is enabled. See About Zone Awareness for more information. - */ - ZoneAwarenessEnabled?: Boolean; - /** - * The instance type for a dedicated master node. - */ - DedicatedMasterType?: ESPartitionInstanceType; - /** - * Total number of dedicated master nodes, active and on standby, for the cluster. - */ - DedicatedMasterCount?: IntegerClass; - } - export interface ElasticsearchClusterConfigStatus { - /** - * Specifies the cluster configuration for the specified Elasticsearch domain. - */ - Options: ElasticsearchClusterConfig; - /** - * Specifies the status of the configuration for the specified Elasticsearch domain. - */ - Status: OptionStatus; - } - export interface ElasticsearchDomainConfig { - /** - * String of format X.Y to specify version for the Elasticsearch domain. - */ - ElasticsearchVersion?: ElasticsearchVersionStatus; - /** - * Specifies the ElasticsearchClusterConfig for the Elasticsearch domain. - */ - ElasticsearchClusterConfig?: ElasticsearchClusterConfigStatus; - /** - * Specifies the EBSOptions for the Elasticsearch domain. - */ - EBSOptions?: EBSOptionsStatus; - /** - * IAM access policy as a JSON-formatted string. - */ - AccessPolicies?: AccessPoliciesStatus; - /** - * Specifies the SnapshotOptions for the Elasticsearch domain. - */ - SnapshotOptions?: SnapshotOptionsStatus; - /** - * Specifies the AdvancedOptions for the domain. See Configuring Advanced Options for more information. - */ - AdvancedOptions?: AdvancedOptionsStatus; - } - export interface ElasticsearchDomainStatus { - /** - * The unique identifier for the specified Elasticsearch domain. - */ - DomainId: DomainId; - /** - * The name of an Elasticsearch domain. Domain names are unique across the domains owned by an account within an AWS region. Domain names start with a letter or number and can contain the following characters: a-z (lowercase), 0-9, and - (hyphen). - */ - DomainName: DomainName; - /** - * The Amazon resource name (ARN) of an Elasticsearch domain. See Identifiers for IAM Entities in Using AWS Identity and Access Management for more information. - */ - ARN: ARN; - /** - * The domain creation status. True if the creation of an Elasticsearch domain is complete. False if domain creation is still in progress. - */ - Created?: Boolean; - /** - * The domain deletion status. True if a delete request has been received for the domain but resource cleanup is still in progress. False if the domain has not been deleted. Once domain deletion is complete, the status of the domain is no longer returned. - */ - Deleted?: Boolean; - /** - * The Elasticsearch domain endpoint that you use to submit index and search requests. - */ - Endpoint?: ServiceUrl; - /** - * The status of the Elasticsearch domain configuration. True if Amazon Elasticsearch Service is processing configuration changes. False if the configuration is active. - */ - Processing?: Boolean; - ElasticsearchVersion?: ElasticsearchVersionString; - /** - * The type and number of instances in the domain cluster. - */ - ElasticsearchClusterConfig: ElasticsearchClusterConfig; - /** - * The EBSOptions for the specified domain. See Configuring EBS-based Storage for more information. - */ - EBSOptions?: EBSOptions; - /** - * IAM access policy as a JSON-formatted string. - */ - AccessPolicies?: PolicyDocument; - /** - * Specifies the status of the SnapshotOptions - */ - SnapshotOptions?: SnapshotOptions; - /** - * Specifies the status of the AdvancedOptions - */ - AdvancedOptions?: AdvancedOptions; - } - export type ElasticsearchDomainStatusList = ElasticsearchDomainStatus[]; - export type ElasticsearchInstanceTypeList = ESPartitionInstanceType[]; - export type ElasticsearchVersionList = ElasticsearchVersionString[]; - export interface ElasticsearchVersionStatus { - /** - * Specifies the Elasticsearch version for the specified Elasticsearch domain. - */ - Options: ElasticsearchVersionString; - /** - * Specifies the status of the Elasticsearch version options for the specified Elasticsearch domain. - */ - Status: OptionStatus; - } - export type ElasticsearchVersionString = string; - export type ErrorMessage = string; - export interface InstanceCountLimits { - MinimumInstanceCount?: MinimumInstanceCount; - MaximumInstanceCount?: MaximumInstanceCount; - } - export interface InstanceLimits { - InstanceCountLimits?: InstanceCountLimits; - } - export type InstanceRole = string; - export type IntegerClass = number; - export type LimitName = string; - export type LimitValue = string; - export type LimitValueList = LimitValue[]; - export interface Limits { - /** - * StorageType represents the list of storage related types and attributes that are available for given InstanceType. - */ - StorageTypes?: StorageTypeList; - InstanceLimits?: InstanceLimits; - /** - * List of additional limits that are specific to a given InstanceType and for each of it's InstanceRole . - */ - AdditionalLimits?: AdditionalLimitList; - } - export type LimitsByRole = {[key: string]: Limits}; - export interface ListDomainNamesResponse { - /** - * List of Elasticsearch domain names. - */ - DomainNames?: DomainInfoList; - } - export interface ListElasticsearchInstanceTypesRequest { - /** - * Version of Elasticsearch for which list of supported elasticsearch instance types are needed. - */ - ElasticsearchVersion: ElasticsearchVersionString; - /** - * DomainName represents the name of the Domain that we are trying to modify. This should be present only if we are querying for list of available Elasticsearch instance types when modifying existing domain. - */ - DomainName?: DomainName; - /** - * Set this value to limit the number of results returned. Value provided must be greater than 30 else it wont be honored. - */ - MaxResults?: MaxResults; - /** - * NextToken should be sent in case if earlier API call produced result containing NextToken. It is used for pagination. - */ - NextToken?: NextToken; - } - export interface ListElasticsearchInstanceTypesResponse { - /** - * List of instance types supported by Amazon Elasticsearch service for given ElasticsearchVersion - */ - ElasticsearchInstanceTypes?: ElasticsearchInstanceTypeList; - /** - * In case if there are more results available NextToken would be present, make further request to the same API with received NextToken to paginate remaining results. - */ - NextToken?: NextToken; - } - export interface ListElasticsearchVersionsRequest { - /** - * Set this value to limit the number of results returned. Value provided must be greater than 10 else it wont be honored. - */ - MaxResults?: MaxResults; - NextToken?: NextToken; - } - export interface ListElasticsearchVersionsResponse { - ElasticsearchVersions?: ElasticsearchVersionList; - NextToken?: NextToken; - } - export interface ListTagsRequest { - /** - * Specify the ARN for the Elasticsearch domain to which the tags are attached that you want to view. - */ - ARN: ARN; - } - export interface ListTagsResponse { - /** - * List of Tag for the requested Elasticsearch domain. - */ - TagList?: TagList; - } - export type MaxResults = number; - export type MaximumInstanceCount = number; - export type MinimumInstanceCount = number; - export type NextToken = string; - export type OptionState = "RequiresIndexDocuments"|"Processing"|"Active"|string; - export interface OptionStatus { - /** - * Timestamp which tells the creation date for the entity. - */ - CreationDate: UpdateTimestamp; - /** - * Timestamp which tells the last updated time for the entity. - */ - UpdateDate: UpdateTimestamp; - /** - * Specifies the latest version for the entity. - */ - UpdateVersion?: UIntValue; - /** - * Provides the OptionState for the Elasticsearch domain. - */ - State: OptionState; - /** - * Indicates whether the Elasticsearch domain is being deleted. - */ - PendingDeletion?: Boolean; - } - export type PolicyDocument = string; - export interface RemoveTagsRequest { - /** - * Specifies the ARN for the Elasticsearch domain from which you want to delete the specified tags. - */ - ARN: ARN; - /** - * Specifies the TagKey list which you want to remove from the Elasticsearch domain. - */ - TagKeys: StringList; - } - export type ServiceUrl = string; - export interface SnapshotOptions { - /** - * Specifies the time, in UTC format, when the service takes a daily automated snapshot of the specified Elasticsearch domain. Default value is 0 hours. - */ - AutomatedSnapshotStartHour?: IntegerClass; - } - export interface SnapshotOptionsStatus { - /** - * Specifies the daily snapshot options specified for the Elasticsearch domain. - */ - Options: SnapshotOptions; - /** - * Specifies the status of a daily automated snapshot. - */ - Status: OptionStatus; - } - export type StorageSubTypeName = string; - export interface StorageType { - StorageTypeName?: StorageTypeName; - StorageSubTypeName?: StorageSubTypeName; - /** - * List of limits that are applicable for given storage type. - */ - StorageTypeLimits?: StorageTypeLimitList; - } - export interface StorageTypeLimit { - /** - * Name of storage limits that are applicable for given storage type. If StorageType is ebs, following storage options are applicable MinimumVolumeSize Minimum amount of volume size that is applicable for given storage type.It can be empty if it is not applicable. MaximumVolumeSize Maximum amount of volume size that is applicable for given storage type.It can be empty if it is not applicable. MaximumIops Maximum amount of Iops that is applicable for given storage type.It can be empty if it is not applicable. MinimumIops Minimum amount of Iops that is applicable for given storage type.It can be empty if it is not applicable. - */ - LimitName?: LimitName; - /** - * Values for the StorageTypeLimit$LimitName . - */ - LimitValues?: LimitValueList; - } - export type StorageTypeLimitList = StorageTypeLimit[]; - export type StorageTypeList = StorageType[]; - export type StorageTypeName = string; - export type String = string; - export type StringList = String[]; - export interface Tag { - /** - * Specifies the TagKey, the name of the tag. Tag keys must be unique for the Elasticsearch domain to which they are attached. - */ - Key: TagKey; - /** - * Specifies the TagValue, the value assigned to the corresponding tag key. Tag values can be null and do not have to be unique in a tag set. For example, you can have a key value pair in a tag set of project : Trinity and cost-center : Trinity - */ - Value: TagValue; - } - export type TagKey = string; - export type TagList = Tag[]; - export type TagValue = string; - export type UIntValue = number; - export interface UpdateElasticsearchDomainConfigRequest { - /** - * The name of the Elasticsearch domain that you are updating. - */ - DomainName: DomainName; - /** - * The type and number of instances to instantiate for the domain cluster. - */ - ElasticsearchClusterConfig?: ElasticsearchClusterConfig; - /** - * Specify the type and size of the EBS volume that you want to use. - */ - EBSOptions?: EBSOptions; - /** - * Option to set the time, in UTC format, for the daily automated snapshot. Default value is 0 hours. - */ - SnapshotOptions?: SnapshotOptions; - /** - * Modifies the advanced option to allow references to indices in an HTTP request body. Must be false when configuring access to individual sub-resources. By default, the value is true. See Configuration Advanced Options for more information. - */ - AdvancedOptions?: AdvancedOptions; - /** - * IAM access policy as a JSON-formatted string. - */ - AccessPolicies?: PolicyDocument; - } - export interface UpdateElasticsearchDomainConfigResponse { - /** - * The status of the updated Elasticsearch domain. - */ - DomainConfig: ElasticsearchDomainConfig; - } - export type UpdateTimestamp = Date; - export type VolumeType = "standard"|"gp2"|"io1"|string; - /** - * A string in YYYY-MM-DD format that represents the latest possible API version that can be used in this service. Specify 'latest' to use the latest possible version. - */ - export type apiVersion = "2015-01-01"|"latest"|string; - export interface ClientApiVersions { - /** - * A string in YYYY-MM-DD format that represents the latest possible API version that can be used in this service. Specify 'latest' to use the latest possible version. - */ - apiVersion?: apiVersion; - } - export type ClientConfiguration = ServiceConfigurationOptions & ClientApiVersions; - /** - * Contains interfaces for use with the ES client. - */ - export import Types = ES; -} -export = ES; diff --git a/workshops/monte-carlo-on-ec2-spot-fleet/src/web/node_modules/aws-sdk/clients/es.js b/workshops/monte-carlo-on-ec2-spot-fleet/src/web/node_modules/aws-sdk/clients/es.js deleted file mode 100644 index 18871723..00000000 --- a/workshops/monte-carlo-on-ec2-spot-fleet/src/web/node_modules/aws-sdk/clients/es.js +++ /dev/null @@ -1,18 +0,0 @@ -require('../lib/node_loader'); -var AWS = require('../lib/core'); -var Service = AWS.Service; -var apiLoader = AWS.apiLoader; - -apiLoader.services['es'] = {}; -AWS.ES = Service.defineService('es', ['2015-01-01']); -Object.defineProperty(apiLoader.services['es'], '2015-01-01', { - get: function get() { - var model = require('../apis/es-2015-01-01.min.json'); - model.paginators = require('../apis/es-2015-01-01.paginators.json').pagination; - return model; - }, - enumerable: true, - configurable: true -}); - -module.exports = AWS.ES; diff --git a/workshops/monte-carlo-on-ec2-spot-fleet/src/web/node_modules/aws-sdk/clients/firehose.d.ts b/workshops/monte-carlo-on-ec2-spot-fleet/src/web/node_modules/aws-sdk/clients/firehose.d.ts deleted file mode 100644 index 8400970a..00000000 --- a/workshops/monte-carlo-on-ec2-spot-fleet/src/web/node_modules/aws-sdk/clients/firehose.d.ts +++ /dev/null @@ -1,1026 +0,0 @@ -import {Request} from '../lib/request'; -import {Response} from '../lib/response'; -import {AWSError} from '../lib/error'; -import {Service} from '../lib/service'; -import {ServiceConfigurationOptions} from '../lib/service'; -import {ConfigBase as Config} from '../lib/config'; -interface Blob {} -declare class Firehose extends Service { - /** - * Constructs a service object. This object has one method for each API operation. - */ - constructor(options?: Firehose.Types.ClientConfiguration) - config: Config & Firehose.Types.ClientConfiguration; - /** - * Creates a delivery stream. By default, you can create up to 20 delivery streams per region. This is an asynchronous operation that immediately returns. The initial status of the delivery stream is CREATING. After the delivery stream is created, its status is ACTIVE and it now accepts data. Attempts to send data to a delivery stream that is not in the ACTIVE state cause an exception. To check the state of a delivery stream, use DescribeDeliveryStream. A Kinesis Firehose delivery stream can be configured to receive records directly from providers using PutRecord or PutRecordBatch, or it can be configured to use an existing Kinesis stream as its source. To specify a Kinesis stream as input, set the DeliveryStreamType parameter to KinesisStreamAsSource, and provide the Kinesis stream ARN and role ARN in the KinesisStreamSourceConfiguration parameter. A delivery stream is configured with a single destination: Amazon S3, Amazon ES, or Amazon Redshift. You must specify only one of the following destination configuration parameters: ExtendedS3DestinationConfiguration, S3DestinationConfiguration, ElasticsearchDestinationConfiguration, or RedshiftDestinationConfiguration. When you specify S3DestinationConfiguration, you can also provide the following optional values: BufferingHints, EncryptionConfiguration, and CompressionFormat. By default, if no BufferingHints value is provided, Kinesis Firehose buffers data up to 5 MB or for 5 minutes, whichever condition is satisfied first. Note that BufferingHints is a hint, so there are some cases where the service cannot adhere to these conditions strictly; for example, record boundaries are such that the size is a little over or under the configured buffering size. By default, no encryption is performed. We strongly recommend that you enable encryption to ensure secure data storage in Amazon S3. A few notes about Amazon Redshift as a destination: An Amazon Redshift destination requires an S3 bucket as intermediate location, as Kinesis Firehose first delivers data to S3 and then uses COPY syntax to load data into an Amazon Redshift table. This is specified in the RedshiftDestinationConfiguration.S3Configuration parameter. The compression formats SNAPPY or ZIP cannot be specified in RedshiftDestinationConfiguration.S3Configuration because the Amazon Redshift COPY operation that reads from the S3 bucket doesn't support these compression formats. We strongly recommend that you use the user name and password you provide exclusively with Kinesis Firehose, and that the permissions for the account are restricted for Amazon Redshift INSERT permissions. Kinesis Firehose assumes the IAM role that is configured as part of the destination. The role should allow the Kinesis Firehose principal to assume the role, and the role should have permissions that allow the service to deliver the data. For more information, see Amazon S3 Bucket Access in the Amazon Kinesis Firehose Developer Guide. - */ - createDeliveryStream(params: Firehose.Types.CreateDeliveryStreamInput, callback?: (err: AWSError, data: Firehose.Types.CreateDeliveryStreamOutput) => void): Request; - /** - * Creates a delivery stream. By default, you can create up to 20 delivery streams per region. This is an asynchronous operation that immediately returns. The initial status of the delivery stream is CREATING. After the delivery stream is created, its status is ACTIVE and it now accepts data. Attempts to send data to a delivery stream that is not in the ACTIVE state cause an exception. To check the state of a delivery stream, use DescribeDeliveryStream. A Kinesis Firehose delivery stream can be configured to receive records directly from providers using PutRecord or PutRecordBatch, or it can be configured to use an existing Kinesis stream as its source. To specify a Kinesis stream as input, set the DeliveryStreamType parameter to KinesisStreamAsSource, and provide the Kinesis stream ARN and role ARN in the KinesisStreamSourceConfiguration parameter. A delivery stream is configured with a single destination: Amazon S3, Amazon ES, or Amazon Redshift. You must specify only one of the following destination configuration parameters: ExtendedS3DestinationConfiguration, S3DestinationConfiguration, ElasticsearchDestinationConfiguration, or RedshiftDestinationConfiguration. When you specify S3DestinationConfiguration, you can also provide the following optional values: BufferingHints, EncryptionConfiguration, and CompressionFormat. By default, if no BufferingHints value is provided, Kinesis Firehose buffers data up to 5 MB or for 5 minutes, whichever condition is satisfied first. Note that BufferingHints is a hint, so there are some cases where the service cannot adhere to these conditions strictly; for example, record boundaries are such that the size is a little over or under the configured buffering size. By default, no encryption is performed. We strongly recommend that you enable encryption to ensure secure data storage in Amazon S3. A few notes about Amazon Redshift as a destination: An Amazon Redshift destination requires an S3 bucket as intermediate location, as Kinesis Firehose first delivers data to S3 and then uses COPY syntax to load data into an Amazon Redshift table. This is specified in the RedshiftDestinationConfiguration.S3Configuration parameter. The compression formats SNAPPY or ZIP cannot be specified in RedshiftDestinationConfiguration.S3Configuration because the Amazon Redshift COPY operation that reads from the S3 bucket doesn't support these compression formats. We strongly recommend that you use the user name and password you provide exclusively with Kinesis Firehose, and that the permissions for the account are restricted for Amazon Redshift INSERT permissions. Kinesis Firehose assumes the IAM role that is configured as part of the destination. The role should allow the Kinesis Firehose principal to assume the role, and the role should have permissions that allow the service to deliver the data. For more information, see Amazon S3 Bucket Access in the Amazon Kinesis Firehose Developer Guide. - */ - createDeliveryStream(callback?: (err: AWSError, data: Firehose.Types.CreateDeliveryStreamOutput) => void): Request; - /** - * Deletes a delivery stream and its data. You can delete a delivery stream only if it is in ACTIVE or DELETING state, and not in the CREATING state. While the deletion request is in process, the delivery stream is in the DELETING state. To check the state of a delivery stream, use DescribeDeliveryStream. While the delivery stream is DELETING state, the service may continue to accept the records, but the service doesn't make any guarantees with respect to delivering the data. Therefore, as a best practice, you should first stop any applications that are sending records before deleting a delivery stream. - */ - deleteDeliveryStream(params: Firehose.Types.DeleteDeliveryStreamInput, callback?: (err: AWSError, data: Firehose.Types.DeleteDeliveryStreamOutput) => void): Request; - /** - * Deletes a delivery stream and its data. You can delete a delivery stream only if it is in ACTIVE or DELETING state, and not in the CREATING state. While the deletion request is in process, the delivery stream is in the DELETING state. To check the state of a delivery stream, use DescribeDeliveryStream. While the delivery stream is DELETING state, the service may continue to accept the records, but the service doesn't make any guarantees with respect to delivering the data. Therefore, as a best practice, you should first stop any applications that are sending records before deleting a delivery stream. - */ - deleteDeliveryStream(callback?: (err: AWSError, data: Firehose.Types.DeleteDeliveryStreamOutput) => void): Request; - /** - * Describes the specified delivery stream and gets the status. For example, after your delivery stream is created, call DescribeDeliveryStream to see if the delivery stream is ACTIVE and therefore ready for data to be sent to it. - */ - describeDeliveryStream(params: Firehose.Types.DescribeDeliveryStreamInput, callback?: (err: AWSError, data: Firehose.Types.DescribeDeliveryStreamOutput) => void): Request; - /** - * Describes the specified delivery stream and gets the status. For example, after your delivery stream is created, call DescribeDeliveryStream to see if the delivery stream is ACTIVE and therefore ready for data to be sent to it. - */ - describeDeliveryStream(callback?: (err: AWSError, data: Firehose.Types.DescribeDeliveryStreamOutput) => void): Request; - /** - * - */ - getKinesisStream(params: Firehose.Types.GetKinesisStreamInput, callback?: (err: AWSError, data: Firehose.Types.GetKinesisStreamOutput) => void): Request; - /** - * - */ - getKinesisStream(callback?: (err: AWSError, data: Firehose.Types.GetKinesisStreamOutput) => void): Request; - /** - * Lists your delivery streams. The number of delivery streams might be too large to return using a single call to ListDeliveryStreams. You can limit the number of delivery streams returned, using the Limit parameter. To determine whether there are more delivery streams to list, check the value of HasMoreDeliveryStreams in the output. If there are more delivery streams to list, you can request them by specifying the name of the last delivery stream returned in the call in the ExclusiveStartDeliveryStreamName parameter of a subsequent call. - */ - listDeliveryStreams(params: Firehose.Types.ListDeliveryStreamsInput, callback?: (err: AWSError, data: Firehose.Types.ListDeliveryStreamsOutput) => void): Request; - /** - * Lists your delivery streams. The number of delivery streams might be too large to return using a single call to ListDeliveryStreams. You can limit the number of delivery streams returned, using the Limit parameter. To determine whether there are more delivery streams to list, check the value of HasMoreDeliveryStreams in the output. If there are more delivery streams to list, you can request them by specifying the name of the last delivery stream returned in the call in the ExclusiveStartDeliveryStreamName parameter of a subsequent call. - */ - listDeliveryStreams(callback?: (err: AWSError, data: Firehose.Types.ListDeliveryStreamsOutput) => void): Request; - /** - * Writes a single data record into an Amazon Kinesis Firehose delivery stream. To write multiple data records into a delivery stream, use PutRecordBatch. Applications using these operations are referred to as producers. By default, each delivery stream can take in up to 2,000 transactions per second, 5,000 records per second, or 5 MB per second. Note that if you use PutRecord and PutRecordBatch, the limits are an aggregate across these two operations for each delivery stream. For more information about limits and how to request an increase, see Amazon Kinesis Firehose Limits. You must specify the name of the delivery stream and the data record when using PutRecord. The data record consists of a data blob that can be up to 1,000 KB in size, and any kind of data, for example, a segment from a log file, geographic location data, website clickstream data, and so on. Kinesis Firehose buffers records before delivering them to the destination. To disambiguate the data blobs at the destination, a common solution is to use delimiters in the data, such as a newline (\n) or some other character unique within the data. This allows the consumer application to parse individual data items when reading the data from the destination. The PutRecord operation returns a RecordId, which is a unique string assigned to each record. Producer applications can use this ID for purposes such as auditability and investigation. If the PutRecord operation throws a ServiceUnavailableException, back off and retry. If the exception persists, it is possible that the throughput limits have been exceeded for the delivery stream. Data records sent to Kinesis Firehose are stored for 24 hours from the time they are added to a delivery stream as it attempts to send the records to the destination. If the destination is unreachable for more than 24 hours, the data is no longer available. - */ - putRecord(params: Firehose.Types.PutRecordInput, callback?: (err: AWSError, data: Firehose.Types.PutRecordOutput) => void): Request; - /** - * Writes a single data record into an Amazon Kinesis Firehose delivery stream. To write multiple data records into a delivery stream, use PutRecordBatch. Applications using these operations are referred to as producers. By default, each delivery stream can take in up to 2,000 transactions per second, 5,000 records per second, or 5 MB per second. Note that if you use PutRecord and PutRecordBatch, the limits are an aggregate across these two operations for each delivery stream. For more information about limits and how to request an increase, see Amazon Kinesis Firehose Limits. You must specify the name of the delivery stream and the data record when using PutRecord. The data record consists of a data blob that can be up to 1,000 KB in size, and any kind of data, for example, a segment from a log file, geographic location data, website clickstream data, and so on. Kinesis Firehose buffers records before delivering them to the destination. To disambiguate the data blobs at the destination, a common solution is to use delimiters in the data, such as a newline (\n) or some other character unique within the data. This allows the consumer application to parse individual data items when reading the data from the destination. The PutRecord operation returns a RecordId, which is a unique string assigned to each record. Producer applications can use this ID for purposes such as auditability and investigation. If the PutRecord operation throws a ServiceUnavailableException, back off and retry. If the exception persists, it is possible that the throughput limits have been exceeded for the delivery stream. Data records sent to Kinesis Firehose are stored for 24 hours from the time they are added to a delivery stream as it attempts to send the records to the destination. If the destination is unreachable for more than 24 hours, the data is no longer available. - */ - putRecord(callback?: (err: AWSError, data: Firehose.Types.PutRecordOutput) => void): Request; - /** - * Writes multiple data records into a delivery stream in a single call, which can achieve higher throughput per producer than when writing single records. To write single data records into a delivery stream, use PutRecord. Applications using these operations are referred to as producers. By default, each delivery stream can take in up to 2,000 transactions per second, 5,000 records per second, or 5 MB per second. If you use PutRecord and PutRecordBatch, the limits are an aggregate across these two operations for each delivery stream. For more information about limits, see Amazon Kinesis Firehose Limits. Each PutRecordBatch request supports up to 500 records. Each record in the request can be as large as 1,000 KB (before 64-bit encoding), up to a limit of 4 MB for the entire request. These limits cannot be changed. You must specify the name of the delivery stream and the data record when using PutRecord. The data record consists of a data blob that can be up to 1,000 KB in size, and any kind of data. For example, it could be a segment from a log file, geographic location data, web site clickstream data, and so on. Kinesis Firehose buffers records before delivering them to the destination. To disambiguate the data blobs at the destination, a common solution is to use delimiters in the data, such as a newline (\n) or some other character unique within the data. This allows the consumer application to parse individual data items when reading the data from the destination. The PutRecordBatch response includes a count of failed records, FailedPutCount, and an array of responses, RequestResponses. Each entry in the RequestResponses array provides additional information about the processed record. It directly correlates with a record in the request array using the same ordering, from the top to the bottom. The response array always includes the same number of records as the request array. RequestResponses includes both successfully and unsuccessfully processed records. Kinesis Firehose attempts to process all records in each PutRecordBatch request. A single record failure does not stop the processing of subsequent records. A successfully processed record includes a RecordId value, which is unique for the record. An unsuccessfully processed record includes ErrorCode and ErrorMessage values. ErrorCode reflects the type of error, and is one of the following values: ServiceUnavailable or InternalFailure. ErrorMessage provides more detailed information about the error. If there is an internal server error or a timeout, the write might have completed or it might have failed. If FailedPutCount is greater than 0, retry the request, resending only those records that might have failed processing. This minimizes the possible duplicate records and also reduces the total bytes sent (and corresponding charges). We recommend that you handle any duplicates at the destination. If PutRecordBatch throws ServiceUnavailableException, back off and retry. If the exception persists, it is possible that the throughput limits have been exceeded for the delivery stream. Data records sent to Kinesis Firehose are stored for 24 hours from the time they are added to a delivery stream as it attempts to send the records to the destination. If the destination is unreachable for more than 24 hours, the data is no longer available. - */ - putRecordBatch(params: Firehose.Types.PutRecordBatchInput, callback?: (err: AWSError, data: Firehose.Types.PutRecordBatchOutput) => void): Request; - /** - * Writes multiple data records into a delivery stream in a single call, which can achieve higher throughput per producer than when writing single records. To write single data records into a delivery stream, use PutRecord. Applications using these operations are referred to as producers. By default, each delivery stream can take in up to 2,000 transactions per second, 5,000 records per second, or 5 MB per second. If you use PutRecord and PutRecordBatch, the limits are an aggregate across these two operations for each delivery stream. For more information about limits, see Amazon Kinesis Firehose Limits. Each PutRecordBatch request supports up to 500 records. Each record in the request can be as large as 1,000 KB (before 64-bit encoding), up to a limit of 4 MB for the entire request. These limits cannot be changed. You must specify the name of the delivery stream and the data record when using PutRecord. The data record consists of a data blob that can be up to 1,000 KB in size, and any kind of data. For example, it could be a segment from a log file, geographic location data, web site clickstream data, and so on. Kinesis Firehose buffers records before delivering them to the destination. To disambiguate the data blobs at the destination, a common solution is to use delimiters in the data, such as a newline (\n) or some other character unique within the data. This allows the consumer application to parse individual data items when reading the data from the destination. The PutRecordBatch response includes a count of failed records, FailedPutCount, and an array of responses, RequestResponses. Each entry in the RequestResponses array provides additional information about the processed record. It directly correlates with a record in the request array using the same ordering, from the top to the bottom. The response array always includes the same number of records as the request array. RequestResponses includes both successfully and unsuccessfully processed records. Kinesis Firehose attempts to process all records in each PutRecordBatch request. A single record failure does not stop the processing of subsequent records. A successfully processed record includes a RecordId value, which is unique for the record. An unsuccessfully processed record includes ErrorCode and ErrorMessage values. ErrorCode reflects the type of error, and is one of the following values: ServiceUnavailable or InternalFailure. ErrorMessage provides more detailed information about the error. If there is an internal server error or a timeout, the write might have completed or it might have failed. If FailedPutCount is greater than 0, retry the request, resending only those records that might have failed processing. This minimizes the possible duplicate records and also reduces the total bytes sent (and corresponding charges). We recommend that you handle any duplicates at the destination. If PutRecordBatch throws ServiceUnavailableException, back off and retry. If the exception persists, it is possible that the throughput limits have been exceeded for the delivery stream. Data records sent to Kinesis Firehose are stored for 24 hours from the time they are added to a delivery stream as it attempts to send the records to the destination. If the destination is unreachable for more than 24 hours, the data is no longer available. - */ - putRecordBatch(callback?: (err: AWSError, data: Firehose.Types.PutRecordBatchOutput) => void): Request; - /** - * Updates the specified destination of the specified delivery stream. You can use this operation to change the destination type (for example, to replace the Amazon S3 destination with Amazon Redshift) or change the parameters associated with a destination (for example, to change the bucket name of the Amazon S3 destination). The update might not occur immediately. The target delivery stream remains active while the configurations are updated, so data writes to the delivery stream can continue during this process. The updated configurations are usually effective within a few minutes. Note that switching between Amazon ES and other services is not supported. For an Amazon ES destination, you can only update to another Amazon ES destination. If the destination type is the same, Kinesis Firehose merges the configuration parameters specified with the destination configuration that already exists on the delivery stream. If any of the parameters are not specified in the call, the existing values are retained. For example, in the Amazon S3 destination, if EncryptionConfiguration is not specified, then the existing EncryptionConfiguration is maintained on the destination. If the destination type is not the same, for example, changing the destination from Amazon S3 to Amazon Redshift, Kinesis Firehose does not merge any parameters. In this case, all parameters must be specified. Kinesis Firehose uses CurrentDeliveryStreamVersionId to avoid race conditions and conflicting merges. This is a required field, and the service updates the configuration only if the existing configuration has a version ID that matches. After the update is applied successfully, the version ID is updated, and can be retrieved using DescribeDeliveryStream. Use the new version ID to set CurrentDeliveryStreamVersionId in the next call. - */ - updateDestination(params: Firehose.Types.UpdateDestinationInput, callback?: (err: AWSError, data: Firehose.Types.UpdateDestinationOutput) => void): Request; - /** - * Updates the specified destination of the specified delivery stream. You can use this operation to change the destination type (for example, to replace the Amazon S3 destination with Amazon Redshift) or change the parameters associated with a destination (for example, to change the bucket name of the Amazon S3 destination). The update might not occur immediately. The target delivery stream remains active while the configurations are updated, so data writes to the delivery stream can continue during this process. The updated configurations are usually effective within a few minutes. Note that switching between Amazon ES and other services is not supported. For an Amazon ES destination, you can only update to another Amazon ES destination. If the destination type is the same, Kinesis Firehose merges the configuration parameters specified with the destination configuration that already exists on the delivery stream. If any of the parameters are not specified in the call, the existing values are retained. For example, in the Amazon S3 destination, if EncryptionConfiguration is not specified, then the existing EncryptionConfiguration is maintained on the destination. If the destination type is not the same, for example, changing the destination from Amazon S3 to Amazon Redshift, Kinesis Firehose does not merge any parameters. In this case, all parameters must be specified. Kinesis Firehose uses CurrentDeliveryStreamVersionId to avoid race conditions and conflicting merges. This is a required field, and the service updates the configuration only if the existing configuration has a version ID that matches. After the update is applied successfully, the version ID is updated, and can be retrieved using DescribeDeliveryStream. Use the new version ID to set CurrentDeliveryStreamVersionId in the next call. - */ - updateDestination(callback?: (err: AWSError, data: Firehose.Types.UpdateDestinationOutput) => void): Request; -} -declare namespace Firehose { - export type AWSKMSKeyARN = string; - export type AccessKeyId = string; - export type BooleanObject = boolean; - export type BucketARN = string; - export interface BufferingHints { - /** - * Buffer incoming data to the specified size, in MBs, before delivering it to the destination. The default value is 5. We recommend setting this parameter to a value greater than the amount of data you typically ingest into the delivery stream in 10 seconds. For example, if you typically ingest data at 1 MB/sec, the value should be 10 MB or higher. - */ - SizeInMBs?: SizeInMBs; - /** - * Buffer incoming data for the specified period of time, in seconds, before delivering it to the destination. The default value is 300. - */ - IntervalInSeconds?: IntervalInSeconds; - } - export interface CloudWatchLoggingOptions { - /** - * Enables or disables CloudWatch logging. - */ - Enabled?: BooleanObject; - /** - * The CloudWatch group name for logging. This value is required if CloudWatch logging is enabled. - */ - LogGroupName?: LogGroupName; - /** - * The CloudWatch log stream name for logging. This value is required if CloudWatch logging is enabled. - */ - LogStreamName?: LogStreamName; - } - export type ClusterJDBCURL = string; - export type CompressionFormat = "UNCOMPRESSED"|"GZIP"|"ZIP"|"Snappy"|string; - export interface CopyCommand { - /** - * The name of the target table. The table must already exist in the database. - */ - DataTableName: DataTableName; - /** - * A comma-separated list of column names. - */ - DataTableColumns?: DataTableColumns; - /** - * Optional parameters to use with the Amazon Redshift COPY command. For more information, see the "Optional Parameters" section of Amazon Redshift COPY command. Some possible examples that would apply to Kinesis Firehose are as follows: delimiter '\t' lzop; - fields are delimited with "\t" (TAB character) and compressed using lzop. delimiter '|' - fields are delimited with "|" (this is the default delimiter). delimiter '|' escape - the delimiter should be escaped. fixedwidth 'venueid:3,venuename:25,venuecity:12,venuestate:2,venueseats:6' - fields are fixed width in the source, with each width specified after every column in the table. JSON 's3://mybucket/jsonpaths.txt' - data is in JSON format, and the path specified is the format of the data. For more examples, see Amazon Redshift COPY command examples. - */ - CopyOptions?: CopyOptions; - } - export type CopyOptions = string; - export interface CreateDeliveryStreamInput { - /** - * The name of the delivery stream. This name must be unique per AWS account in the same region. If the delivery streams are in different accounts or different regions, you can have multiple delivery streams with the same name. - */ - DeliveryStreamName: DeliveryStreamName; - /** - * The delivery stream type. This parameter can be one of the following values: DirectPut: Provider applications access the delivery stream directly. KinesisStreamAsSource: The delivery stream uses a Kinesis stream as a source. - */ - DeliveryStreamType?: DeliveryStreamType; - /** - * When a Kinesis stream is used as the source for the delivery stream, a KinesisStreamSourceConfiguration containing the Kinesis stream ARN and the role ARN for the source stream. - */ - KinesisStreamSourceConfiguration?: KinesisStreamSourceConfiguration; - /** - * [Deprecated] The destination in Amazon S3. You can specify only one destination. - */ - S3DestinationConfiguration?: S3DestinationConfiguration; - /** - * The destination in Amazon S3. You can specify only one destination. - */ - ExtendedS3DestinationConfiguration?: ExtendedS3DestinationConfiguration; - /** - * The destination in Amazon Redshift. You can specify only one destination. - */ - RedshiftDestinationConfiguration?: RedshiftDestinationConfiguration; - /** - * The destination in Amazon ES. You can specify only one destination. - */ - ElasticsearchDestinationConfiguration?: ElasticsearchDestinationConfiguration; - } - export interface CreateDeliveryStreamOutput { - /** - * The ARN of the delivery stream. - */ - DeliveryStreamARN?: DeliveryStreamARN; - } - export type Data = Buffer|Uint8Array|Blob|string; - export type DataTableColumns = string; - export type DataTableName = string; - export interface DeleteDeliveryStreamInput { - /** - * The name of the delivery stream. - */ - DeliveryStreamName: DeliveryStreamName; - } - export interface DeleteDeliveryStreamOutput { - } - export type DeliveryStartTimestamp = Date; - export type DeliveryStreamARN = string; - export interface DeliveryStreamDescription { - /** - * The name of the delivery stream. - */ - DeliveryStreamName: DeliveryStreamName; - /** - * The Amazon Resource Name (ARN) of the delivery stream. - */ - DeliveryStreamARN: DeliveryStreamARN; - /** - * The status of the delivery stream. - */ - DeliveryStreamStatus: DeliveryStreamStatus; - /** - * The delivery stream type. This can be one of the following values: DirectPut: Provider applications access the delivery stream directly. KinesisStreamAsSource: The delivery stream uses a Kinesis stream as a source. - */ - DeliveryStreamType: DeliveryStreamType; - /** - * Each time the destination is updated for a delivery stream, the version ID is changed, and the current version ID is required when updating the destination. This is so that the service knows it is applying the changes to the correct version of the delivery stream. - */ - VersionId: DeliveryStreamVersionId; - /** - * The date and time that the delivery stream was created. - */ - CreateTimestamp?: Timestamp; - /** - * The date and time that the delivery stream was last updated. - */ - LastUpdateTimestamp?: Timestamp; - /** - * If the DeliveryStreamType parameter is KinesisStreamAsSource, a SourceDescription object describing the source Kinesis stream. - */ - Source?: SourceDescription; - /** - * The destinations. - */ - Destinations: DestinationDescriptionList; - /** - * Indicates whether there are more destinations available to list. - */ - HasMoreDestinations: BooleanObject; - } - export type DeliveryStreamName = string; - export type DeliveryStreamNameList = DeliveryStreamName[]; - export type DeliveryStreamStatus = "CREATING"|"DELETING"|"ACTIVE"|string; - export type DeliveryStreamType = "DirectPut"|"KinesisStreamAsSource"|string; - export type DeliveryStreamVersionId = string; - export interface DescribeDeliveryStreamInput { - /** - * The name of the delivery stream. - */ - DeliveryStreamName: DeliveryStreamName; - /** - * The limit on the number of destinations to return. Currently, you can have one destination per delivery stream. - */ - Limit?: DescribeDeliveryStreamInputLimit; - /** - * The ID of the destination to start returning the destination information. Currently, Kinesis Firehose supports one destination per delivery stream. - */ - ExclusiveStartDestinationId?: DestinationId; - } - export type DescribeDeliveryStreamInputLimit = number; - export interface DescribeDeliveryStreamOutput { - /** - * Information about the delivery stream. - */ - DeliveryStreamDescription: DeliveryStreamDescription; - } - export interface DestinationDescription { - /** - * The ID of the destination. - */ - DestinationId: DestinationId; - /** - * [Deprecated] The destination in Amazon S3. - */ - S3DestinationDescription?: S3DestinationDescription; - /** - * The destination in Amazon S3. - */ - ExtendedS3DestinationDescription?: ExtendedS3DestinationDescription; - /** - * The destination in Amazon Redshift. - */ - RedshiftDestinationDescription?: RedshiftDestinationDescription; - /** - * The destination in Amazon ES. - */ - ElasticsearchDestinationDescription?: ElasticsearchDestinationDescription; - } - export type DestinationDescriptionList = DestinationDescription[]; - export type DestinationId = string; - export interface ElasticsearchBufferingHints { - /** - * Buffer incoming data for the specified period of time, in seconds, before delivering it to the destination. The default value is 300 (5 minutes). - */ - IntervalInSeconds?: ElasticsearchBufferingIntervalInSeconds; - /** - * Buffer incoming data to the specified size, in MBs, before delivering it to the destination. The default value is 5. We recommend setting this parameter to a value greater than the amount of data you typically ingest into the delivery stream in 10 seconds. For example, if you typically ingest data at 1 MB/sec, the value should be 10 MB or higher. - */ - SizeInMBs?: ElasticsearchBufferingSizeInMBs; - } - export type ElasticsearchBufferingIntervalInSeconds = number; - export type ElasticsearchBufferingSizeInMBs = number; - export interface ElasticsearchDestinationConfiguration { - /** - * The ARN of the IAM role to be assumed by Kinesis Firehose for calling the Amazon ES Configuration API and for indexing documents. For more information, see Amazon S3 Bucket Access. - */ - RoleARN: RoleARN; - /** - * The ARN of the Amazon ES domain. The IAM role must have permissions for DescribeElasticsearchDomain, DescribeElasticsearchDomains, and DescribeElasticsearchDomainConfig after assuming the role specified in RoleARN. - */ - DomainARN: ElasticsearchDomainARN; - /** - * The Elasticsearch index name. - */ - IndexName: ElasticsearchIndexName; - /** - * The Elasticsearch type name. - */ - TypeName: ElasticsearchTypeName; - /** - * The Elasticsearch index rotation period. Index rotation appends a time stamp to the IndexName to facilitate the expiration of old data. For more information, see Index Rotation for Amazon Elasticsearch Service Destination. The default value is OneDay. - */ - IndexRotationPeriod?: ElasticsearchIndexRotationPeriod; - /** - * The buffering options. If no value is specified, the default values for ElasticsearchBufferingHints are used. - */ - BufferingHints?: ElasticsearchBufferingHints; - /** - * The retry behavior in case Kinesis Firehose is unable to deliver documents to Amazon ES. The default value is 300 (5 minutes). - */ - RetryOptions?: ElasticsearchRetryOptions; - /** - * Defines how documents should be delivered to Amazon S3. When set to FailedDocumentsOnly, Kinesis Firehose writes any documents that could not be indexed to the configured Amazon S3 destination, with elasticsearch-failed/ appended to the key prefix. When set to AllDocuments, Kinesis Firehose delivers all incoming records to Amazon S3, and also writes failed documents with elasticsearch-failed/ appended to the prefix. For more information, see Amazon S3 Backup for Amazon Elasticsearch Service Destination. Default value is FailedDocumentsOnly. - */ - S3BackupMode?: ElasticsearchS3BackupMode; - /** - * The configuration for the backup Amazon S3 location. - */ - S3Configuration: S3DestinationConfiguration; - /** - * The data processing configuration. - */ - ProcessingConfiguration?: ProcessingConfiguration; - /** - * The CloudWatch logging options for your delivery stream. - */ - CloudWatchLoggingOptions?: CloudWatchLoggingOptions; - } - export interface ElasticsearchDestinationDescription { - /** - * The ARN of the AWS credentials. - */ - RoleARN?: RoleARN; - /** - * The ARN of the Amazon ES domain. - */ - DomainARN?: ElasticsearchDomainARN; - /** - * The Elasticsearch index name. - */ - IndexName?: ElasticsearchIndexName; - /** - * The Elasticsearch type name. - */ - TypeName?: ElasticsearchTypeName; - /** - * The Elasticsearch index rotation period - */ - IndexRotationPeriod?: ElasticsearchIndexRotationPeriod; - /** - * The buffering options. - */ - BufferingHints?: ElasticsearchBufferingHints; - /** - * The Amazon ES retry options. - */ - RetryOptions?: ElasticsearchRetryOptions; - /** - * The Amazon S3 backup mode. - */ - S3BackupMode?: ElasticsearchS3BackupMode; - /** - * The Amazon S3 destination. - */ - S3DestinationDescription?: S3DestinationDescription; - /** - * The data processing configuration. - */ - ProcessingConfiguration?: ProcessingConfiguration; - /** - * The CloudWatch logging options. - */ - CloudWatchLoggingOptions?: CloudWatchLoggingOptions; - } - export interface ElasticsearchDestinationUpdate { - /** - * The ARN of the IAM role to be assumed by Kinesis Firehose for calling the Amazon ES Configuration API and for indexing documents. For more information, see Amazon S3 Bucket Access. - */ - RoleARN?: RoleARN; - /** - * The ARN of the Amazon ES domain. The IAM role must have permissions for DescribeElasticsearchDomain, DescribeElasticsearchDomains, and DescribeElasticsearchDomainConfig after assuming the IAM role specified in RoleARN. - */ - DomainARN?: ElasticsearchDomainARN; - /** - * The Elasticsearch index name. - */ - IndexName?: ElasticsearchIndexName; - /** - * The Elasticsearch type name. - */ - TypeName?: ElasticsearchTypeName; - /** - * The Elasticsearch index rotation period. Index rotation appends a time stamp to IndexName to facilitate the expiration of old data. For more information, see Index Rotation for Amazon Elasticsearch Service Destination. Default value is OneDay. - */ - IndexRotationPeriod?: ElasticsearchIndexRotationPeriod; - /** - * The buffering options. If no value is specified, ElasticsearchBufferingHints object default values are used. - */ - BufferingHints?: ElasticsearchBufferingHints; - /** - * The retry behavior in case Kinesis Firehose is unable to deliver documents to Amazon ES. The default value is 300 (5 minutes). - */ - RetryOptions?: ElasticsearchRetryOptions; - /** - * The Amazon S3 destination. - */ - S3Update?: S3DestinationUpdate; - /** - * The data processing configuration. - */ - ProcessingConfiguration?: ProcessingConfiguration; - /** - * The CloudWatch logging options for your delivery stream. - */ - CloudWatchLoggingOptions?: CloudWatchLoggingOptions; - } - export type ElasticsearchDomainARN = string; - export type ElasticsearchIndexName = string; - export type ElasticsearchIndexRotationPeriod = "NoRotation"|"OneHour"|"OneDay"|"OneWeek"|"OneMonth"|string; - export type ElasticsearchRetryDurationInSeconds = number; - export interface ElasticsearchRetryOptions { - /** - * After an initial failure to deliver to Amazon ES, the total amount of time during which Kinesis Firehose re-attempts delivery (including the first attempt). After this time has elapsed, the failed documents are written to Amazon S3. Default value is 300 seconds (5 minutes). A value of 0 (zero) results in no retries. - */ - DurationInSeconds?: ElasticsearchRetryDurationInSeconds; - } - export type ElasticsearchS3BackupMode = "FailedDocumentsOnly"|"AllDocuments"|string; - export type ElasticsearchTypeName = string; - export interface EncryptionConfiguration { - /** - * Specifically override existing encryption information to ensure that no encryption is used. - */ - NoEncryptionConfig?: NoEncryptionConfig; - /** - * The encryption key. - */ - KMSEncryptionConfig?: KMSEncryptionConfig; - } - export type ErrorCode = string; - export type ErrorMessage = string; - export interface ExtendedS3DestinationConfiguration { - /** - * The ARN of the AWS credentials. - */ - RoleARN: RoleARN; - /** - * The ARN of the S3 bucket. - */ - BucketARN: BucketARN; - /** - * The "YYYY/MM/DD/HH" time format prefix is automatically used for delivered S3 files. You can specify an extra prefix to be added in front of the time format prefix. If the prefix ends with a slash, it appears as a folder in the S3 bucket. For more information, see Amazon S3 Object Name Format in the Amazon Kinesis Firehose Developer Guide. - */ - Prefix?: Prefix; - /** - * The buffering option. - */ - BufferingHints?: BufferingHints; - /** - * The compression format. If no value is specified, the default is UNCOMPRESSED. - */ - CompressionFormat?: CompressionFormat; - /** - * The encryption configuration. If no value is specified, the default is no encryption. - */ - EncryptionConfiguration?: EncryptionConfiguration; - /** - * The CloudWatch logging options for your delivery stream. - */ - CloudWatchLoggingOptions?: CloudWatchLoggingOptions; - /** - * The data processing configuration. - */ - ProcessingConfiguration?: ProcessingConfiguration; - /** - * The Amazon S3 backup mode. - */ - S3BackupMode?: S3BackupMode; - /** - * The configuration for backup in Amazon S3. - */ - S3BackupConfiguration?: S3DestinationConfiguration; - } - export interface ExtendedS3DestinationDescription { - /** - * The ARN of the AWS credentials. - */ - RoleARN: RoleARN; - /** - * The ARN of the S3 bucket. - */ - BucketARN: BucketARN; - /** - * The "YYYY/MM/DD/HH" time format prefix is automatically used for delivered S3 files. You can specify an extra prefix to be added in front of the time format prefix. If the prefix ends with a slash, it appears as a folder in the S3 bucket. For more information, see Amazon S3 Object Name Format in the Amazon Kinesis Firehose Developer Guide. - */ - Prefix?: Prefix; - /** - * The buffering option. - */ - BufferingHints: BufferingHints; - /** - * The compression format. If no value is specified, the default is UNCOMPRESSED. - */ - CompressionFormat: CompressionFormat; - /** - * The encryption configuration. If no value is specified, the default is no encryption. - */ - EncryptionConfiguration: EncryptionConfiguration; - /** - * The CloudWatch logging options for your delivery stream. - */ - CloudWatchLoggingOptions?: CloudWatchLoggingOptions; - /** - * The data processing configuration. - */ - ProcessingConfiguration?: ProcessingConfiguration; - /** - * The Amazon S3 backup mode. - */ - S3BackupMode?: S3BackupMode; - /** - * The configuration for backup in Amazon S3. - */ - S3BackupDescription?: S3DestinationDescription; - } - export interface ExtendedS3DestinationUpdate { - /** - * The ARN of the AWS credentials. - */ - RoleARN?: RoleARN; - /** - * The ARN of the S3 bucket. - */ - BucketARN?: BucketARN; - /** - * The "YYYY/MM/DD/HH" time format prefix is automatically used for delivered S3 files. You can specify an extra prefix to be added in front of the time format prefix. If the prefix ends with a slash, it appears as a folder in the S3 bucket. For more information, see Amazon S3 Object Name Format in the Amazon Kinesis Firehose Developer Guide. - */ - Prefix?: Prefix; - /** - * The buffering option. - */ - BufferingHints?: BufferingHints; - /** - * The compression format. If no value is specified, the default is UNCOMPRESSED. - */ - CompressionFormat?: CompressionFormat; - /** - * The encryption configuration. If no value is specified, the default is no encryption. - */ - EncryptionConfiguration?: EncryptionConfiguration; - /** - * The CloudWatch logging options for your delivery stream. - */ - CloudWatchLoggingOptions?: CloudWatchLoggingOptions; - /** - * The data processing configuration. - */ - ProcessingConfiguration?: ProcessingConfiguration; - /** - * Enables or disables Amazon S3 backup mode. - */ - S3BackupMode?: S3BackupMode; - /** - * The Amazon S3 destination for backup. - */ - S3BackupUpdate?: S3DestinationUpdate; - } - export type FirehoseSource = string; - export interface GetKinesisStreamInput { - DeliveryStreamARN: DeliveryStreamARN; - } - export interface GetKinesisStreamOutput { - KinesisStreamARN?: KinesisStreamARN; - CredentialsForReadingKinesisStream?: SessionCredentials; - } - export type IntervalInSeconds = number; - export interface KMSEncryptionConfig { - /** - * The ARN of the encryption key. Must belong to the same region as the destination Amazon S3 bucket. - */ - AWSKMSKeyARN: AWSKMSKeyARN; - } - export type KinesisStreamARN = string; - export interface KinesisStreamSourceConfiguration { - /** - * The ARN of the source Kinesis stream. - */ - KinesisStreamARN: KinesisStreamARN; - /** - * The ARN of the role that provides access to the source Kinesis stream. - */ - RoleARN: RoleARN; - } - export interface KinesisStreamSourceDescription { - /** - * The ARN of the source Kinesis stream. - */ - KinesisStreamARN?: KinesisStreamARN; - /** - * The ARN of the role used by the source Kinesis stream. - */ - RoleARN?: RoleARN; - /** - * Kinesis Firehose starts retrieving records from the Kinesis stream starting with this time stamp. - */ - DeliveryStartTimestamp?: DeliveryStartTimestamp; - } - export interface ListDeliveryStreamsInput { - /** - * The maximum number of delivery streams to list. - */ - Limit?: ListDeliveryStreamsInputLimit; - /** - * The delivery stream type. This can be one of the following values: DirectPut: Provider applications access the delivery stream directly. KinesisStreamAsSource: The delivery stream uses a Kinesis stream as a source. This parameter is optional. If this parameter is omitted, delivery streams of all types are returned. - */ - DeliveryStreamType?: DeliveryStreamType; - /** - * The name of the delivery stream to start the list with. - */ - ExclusiveStartDeliveryStreamName?: DeliveryStreamName; - } - export type ListDeliveryStreamsInputLimit = number; - export interface ListDeliveryStreamsOutput { - /** - * The names of the delivery streams. - */ - DeliveryStreamNames: DeliveryStreamNameList; - /** - * Indicates whether there are more delivery streams available to list. - */ - HasMoreDeliveryStreams: BooleanObject; - } - export type LogGroupName = string; - export type LogStreamName = string; - export type NoEncryptionConfig = "NoEncryption"|string; - export type NonNegativeIntegerObject = number; - export type Password = string; - export type Prefix = string; - export interface ProcessingConfiguration { - /** - * Enables or disables data processing. - */ - Enabled?: BooleanObject; - /** - * The data processors. - */ - Processors?: ProcessorList; - } - export interface Processor { - /** - * The type of processor. - */ - Type: ProcessorType; - /** - * The processor parameters. - */ - Parameters?: ProcessorParameterList; - } - export type ProcessorList = Processor[]; - export interface ProcessorParameter { - /** - * The name of the parameter. - */ - ParameterName: ProcessorParameterName; - /** - * The parameter value. - */ - ParameterValue: ProcessorParameterValue; - } - export type ProcessorParameterList = ProcessorParameter[]; - export type ProcessorParameterName = "LambdaArn"|"NumberOfRetries"|string; - export type ProcessorParameterValue = string; - export type ProcessorType = "Lambda"|string; - export interface PutRecordBatchInput { - /** - * The name of the delivery stream. - */ - DeliveryStreamName: DeliveryStreamName; - /** - * One or more records. - */ - Records: PutRecordBatchRequestEntryList; - } - export interface PutRecordBatchOutput { - /** - * The number of records that might have failed processing. - */ - FailedPutCount: NonNegativeIntegerObject; - /** - * The results array. For each record, the index of the response element is the same as the index used in the request array. - */ - RequestResponses: PutRecordBatchResponseEntryList; - } - export type PutRecordBatchRequestEntryList = Record[]; - export interface PutRecordBatchResponseEntry { - /** - * The ID of the record. - */ - RecordId?: PutResponseRecordId; - /** - * The error code for an individual record result. - */ - ErrorCode?: ErrorCode; - /** - * The error message for an individual record result. - */ - ErrorMessage?: ErrorMessage; - } - export type PutRecordBatchResponseEntryList = PutRecordBatchResponseEntry[]; - export interface PutRecordInput { - /** - * The name of the delivery stream. - */ - DeliveryStreamName: DeliveryStreamName; - /** - * The record. - */ - Record: Record; - } - export interface PutRecordOutput { - /** - * The ID of the record. - */ - RecordId: PutResponseRecordId; - } - export type PutResponseRecordId = string; - export interface Record { - /** - * The data blob, which is base64-encoded when the blob is serialized. The maximum size of the data blob, before base64-encoding, is 1,000 KB. - */ - Data: Data; - } - export interface RedshiftDestinationConfiguration { - /** - * The ARN of the AWS credentials. - */ - RoleARN: RoleARN; - /** - * The database connection string. - */ - ClusterJDBCURL: ClusterJDBCURL; - /** - * The COPY command. - */ - CopyCommand: CopyCommand; - /** - * The name of the user. - */ - Username: Username; - /** - * The user password. - */ - Password: Password; - /** - * The retry behavior in case Kinesis Firehose is unable to deliver documents to Amazon Redshift. Default value is 3600 (60 minutes). - */ - RetryOptions?: RedshiftRetryOptions; - /** - * The configuration for the intermediate Amazon S3 location from which Amazon Redshift obtains data. Restrictions are described in the topic for CreateDeliveryStream. The compression formats SNAPPY or ZIP cannot be specified in RedshiftDestinationConfiguration.S3Configuration because the Amazon Redshift COPY operation that reads from the S3 bucket doesn't support these compression formats. - */ - S3Configuration: S3DestinationConfiguration; - /** - * The data processing configuration. - */ - ProcessingConfiguration?: ProcessingConfiguration; - /** - * The Amazon S3 backup mode. - */ - S3BackupMode?: RedshiftS3BackupMode; - /** - * The configuration for backup in Amazon S3. - */ - S3BackupConfiguration?: S3DestinationConfiguration; - /** - * The CloudWatch logging options for your delivery stream. - */ - CloudWatchLoggingOptions?: CloudWatchLoggingOptions; - } - export interface RedshiftDestinationDescription { - /** - * The ARN of the AWS credentials. - */ - RoleARN: RoleARN; - /** - * The database connection string. - */ - ClusterJDBCURL: ClusterJDBCURL; - /** - * The COPY command. - */ - CopyCommand: CopyCommand; - /** - * The name of the user. - */ - Username: Username; - /** - * The retry behavior in case Kinesis Firehose is unable to deliver documents to Amazon Redshift. Default value is 3600 (60 minutes). - */ - RetryOptions?: RedshiftRetryOptions; - /** - * The Amazon S3 destination. - */ - S3DestinationDescription: S3DestinationDescription; - /** - * The data processing configuration. - */ - ProcessingConfiguration?: ProcessingConfiguration; - /** - * The Amazon S3 backup mode. - */ - S3BackupMode?: RedshiftS3BackupMode; - /** - * The configuration for backup in Amazon S3. - */ - S3BackupDescription?: S3DestinationDescription; - /** - * The CloudWatch logging options for your delivery stream. - */ - CloudWatchLoggingOptions?: CloudWatchLoggingOptions; - } - export interface RedshiftDestinationUpdate { - /** - * The ARN of the AWS credentials. - */ - RoleARN?: RoleARN; - /** - * The database connection string. - */ - ClusterJDBCURL?: ClusterJDBCURL; - /** - * The COPY command. - */ - CopyCommand?: CopyCommand; - /** - * The name of the user. - */ - Username?: Username; - /** - * The user password. - */ - Password?: Password; - /** - * The retry behavior in case Kinesis Firehose is unable to deliver documents to Amazon Redshift. Default value is 3600 (60 minutes). - */ - RetryOptions?: RedshiftRetryOptions; - /** - * The Amazon S3 destination. The compression formats SNAPPY or ZIP cannot be specified in RedshiftDestinationUpdate.S3Update because the Amazon Redshift COPY operation that reads from the S3 bucket doesn't support these compression formats. - */ - S3Update?: S3DestinationUpdate; - /** - * The data processing configuration. - */ - ProcessingConfiguration?: ProcessingConfiguration; - /** - * The Amazon S3 backup mode. - */ - S3BackupMode?: RedshiftS3BackupMode; - /** - * The Amazon S3 destination for backup. - */ - S3BackupUpdate?: S3DestinationUpdate; - /** - * The CloudWatch logging options for your delivery stream. - */ - CloudWatchLoggingOptions?: CloudWatchLoggingOptions; - } - export type RedshiftRetryDurationInSeconds = number; - export interface RedshiftRetryOptions { - /** - * The length of time during which Kinesis Firehose retries delivery after a failure, starting from the initial request and including the first attempt. The default value is 3600 seconds (60 minutes). Kinesis Firehose does not retry if the value of DurationInSeconds is 0 (zero) or if the first delivery attempt takes longer than the current value. - */ - DurationInSeconds?: RedshiftRetryDurationInSeconds; - } - export type RedshiftS3BackupMode = "Disabled"|"Enabled"|string; - export type RoleARN = string; - export type S3BackupMode = "Disabled"|"Enabled"|string; - export interface S3DestinationConfiguration { - /** - * The ARN of the AWS credentials. - */ - RoleARN: RoleARN; - /** - * The ARN of the S3 bucket. - */ - BucketARN: BucketARN; - /** - * The "YYYY/MM/DD/HH" time format prefix is automatically used for delivered S3 files. You can specify an extra prefix to be added in front of the time format prefix. If the prefix ends with a slash, it appears as a folder in the S3 bucket. For more information, see Amazon S3 Object Name Format in the Amazon Kinesis Firehose Developer Guide. - */ - Prefix?: Prefix; - /** - * The buffering option. If no value is specified, BufferingHints object default values are used. - */ - BufferingHints?: BufferingHints; - /** - * The compression format. If no value is specified, the default is UNCOMPRESSED. The compression formats SNAPPY or ZIP cannot be specified for Amazon Redshift destinations because they are not supported by the Amazon Redshift COPY operation that reads from the S3 bucket. - */ - CompressionFormat?: CompressionFormat; - /** - * The encryption configuration. If no value is specified, the default is no encryption. - */ - EncryptionConfiguration?: EncryptionConfiguration; - /** - * The CloudWatch logging options for your delivery stream. - */ - CloudWatchLoggingOptions?: CloudWatchLoggingOptions; - } - export interface S3DestinationDescription { - /** - * The ARN of the AWS credentials. - */ - RoleARN: RoleARN; - /** - * The ARN of the S3 bucket. - */ - BucketARN: BucketARN; - /** - * The "YYYY/MM/DD/HH" time format prefix is automatically used for delivered S3 files. You can specify an extra prefix to be added in front of the time format prefix. If the prefix ends with a slash, it appears as a folder in the S3 bucket. For more information, see Amazon S3 Object Name Format in the Amazon Kinesis Firehose Developer Guide. - */ - Prefix?: Prefix; - /** - * The buffering option. If no value is specified, BufferingHints object default values are used. - */ - BufferingHints: BufferingHints; - /** - * The compression format. If no value is specified, the default is UNCOMPRESSED. - */ - CompressionFormat: CompressionFormat; - /** - * The encryption configuration. If no value is specified, the default is no encryption. - */ - EncryptionConfiguration: EncryptionConfiguration; - /** - * The CloudWatch logging options for your delivery stream. - */ - CloudWatchLoggingOptions?: CloudWatchLoggingOptions; - } - export interface S3DestinationUpdate { - /** - * The ARN of the AWS credentials. - */ - RoleARN?: RoleARN; - /** - * The ARN of the S3 bucket. - */ - BucketARN?: BucketARN; - /** - * The "YYYY/MM/DD/HH" time format prefix is automatically used for delivered S3 files. You can specify an extra prefix to be added in front of the time format prefix. If the prefix ends with a slash, it appears as a folder in the S3 bucket. For more information, see Amazon S3 Object Name Format in the Amazon Kinesis Firehose Developer Guide. - */ - Prefix?: Prefix; - /** - * The buffering option. If no value is specified, BufferingHints object default values are used. - */ - BufferingHints?: BufferingHints; - /** - * The compression format. If no value is specified, the default is UNCOMPRESSED. The compression formats SNAPPY or ZIP cannot be specified for Amazon Redshift destinations because they are not supported by the Amazon Redshift COPY operation that reads from the S3 bucket. - */ - CompressionFormat?: CompressionFormat; - /** - * The encryption configuration. If no value is specified, the default is no encryption. - */ - EncryptionConfiguration?: EncryptionConfiguration; - /** - * The CloudWatch logging options for your delivery stream. - */ - CloudWatchLoggingOptions?: CloudWatchLoggingOptions; - } - export type SecretAccessKey = string; - export interface SessionCredentials { - AccessKeyId: AccessKeyId; - SecretAccessKey: SecretAccessKey; - SessionToken: SessionToken; - Expiration: Timestamp; - } - export type SessionToken = string; - export type SizeInMBs = number; - export interface SourceDescription { - /** - * The KinesisStreamSourceDescription value for the source Kinesis stream. - */ - KinesisStreamSourceDescription?: KinesisStreamSourceDescription; - } - export type Timestamp = Date; - export interface UpdateDestinationInput { - /** - * The name of the delivery stream. - */ - DeliveryStreamName: DeliveryStreamName; - /** - * Obtain this value from the VersionId result of DeliveryStreamDescription. This value is required, and helps the service to perform conditional operations. For example, if there is an interleaving update and this value is null, then the update destination fails. After the update is successful, the VersionId value is updated. The service then performs a merge of the old configuration with the new configuration. - */ - CurrentDeliveryStreamVersionId: DeliveryStreamVersionId; - /** - * The ID of the destination. - */ - DestinationId: DestinationId; - /** - * [Deprecated] Describes an update for a destination in Amazon S3. - */ - S3DestinationUpdate?: S3DestinationUpdate; - /** - * Describes an update for a destination in Amazon S3. - */ - ExtendedS3DestinationUpdate?: ExtendedS3DestinationUpdate; - /** - * Describes an update for a destination in Amazon Redshift. - */ - RedshiftDestinationUpdate?: RedshiftDestinationUpdate; - /** - * Describes an update for a destination in Amazon ES. - */ - ElasticsearchDestinationUpdate?: ElasticsearchDestinationUpdate; - } - export interface UpdateDestinationOutput { - } - export type Username = string; - /** - * A string in YYYY-MM-DD format that represents the latest possible API version that can be used in this service. Specify 'latest' to use the latest possible version. - */ - export type apiVersion = "2015-08-04"|"latest"|string; - export interface ClientApiVersions { - /** - * A string in YYYY-MM-DD format that represents the latest possible API version that can be used in this service. Specify 'latest' to use the latest possible version. - */ - apiVersion?: apiVersion; - } - export type ClientConfiguration = ServiceConfigurationOptions & ClientApiVersions; - /** - * Contains interfaces for use with the Firehose client. - */ - export import Types = Firehose; -} -export = Firehose; diff --git a/workshops/monte-carlo-on-ec2-spot-fleet/src/web/node_modules/aws-sdk/clients/firehose.js b/workshops/monte-carlo-on-ec2-spot-fleet/src/web/node_modules/aws-sdk/clients/firehose.js deleted file mode 100644 index 8aa30bbc..00000000 --- a/workshops/monte-carlo-on-ec2-spot-fleet/src/web/node_modules/aws-sdk/clients/firehose.js +++ /dev/null @@ -1,18 +0,0 @@ -require('../lib/node_loader'); -var AWS = require('../lib/core'); -var Service = AWS.Service; -var apiLoader = AWS.apiLoader; - -apiLoader.services['firehose'] = {}; -AWS.Firehose = Service.defineService('firehose', ['2015-08-04']); -Object.defineProperty(apiLoader.services['firehose'], '2015-08-04', { - get: function get() { - var model = require('../apis/firehose-2015-08-04.min.json'); - model.paginators = require('../apis/firehose-2015-08-04.paginators.json').pagination; - return model; - }, - enumerable: true, - configurable: true -}); - -module.exports = AWS.Firehose; diff --git a/workshops/monte-carlo-on-ec2-spot-fleet/src/web/node_modules/aws-sdk/clients/gamelift.d.ts b/workshops/monte-carlo-on-ec2-spot-fleet/src/web/node_modules/aws-sdk/clients/gamelift.d.ts deleted file mode 100644 index ce253ff2..00000000 --- a/workshops/monte-carlo-on-ec2-spot-fleet/src/web/node_modules/aws-sdk/clients/gamelift.d.ts +++ /dev/null @@ -1,2964 +0,0 @@ -import {Request} from '../lib/request'; -import {Response} from '../lib/response'; -import {AWSError} from '../lib/error'; -import {Service} from '../lib/service'; -import {ServiceConfigurationOptions} from '../lib/service'; -import {ConfigBase as Config} from '../lib/config'; -interface Blob {} -declare class GameLift extends Service { - /** - * Constructs a service object. This object has one method for each API operation. - */ - constructor(options?: GameLift.Types.ClientConfiguration) - config: Config & GameLift.Types.ClientConfiguration; - /** - * Registers a player's acceptance or rejection of a proposed FlexMatch match. A matchmaking configuration may require player acceptance; if so, then matches built with that configuration cannot be completed unless all players accept the proposed match within a specified time limit. When FlexMatch builds a match, all the matchmaking tickets involved in the proposed match are placed into status REQUIRES_ACCEPTANCE. This is a trigger for your game to get acceptance from all players in the ticket. Acceptances are only valid for tickets when they are in this status; all other acceptances result in an error. To register acceptance, specify the ticket ID, a response, and one or more players. Once all players have registered acceptance, the matchmaking tickets advance to status PLACING, where a new game session is created for the match. If any player rejects the match, or if acceptances are not received before a specified timeout, the proposed match is dropped. The matchmaking tickets are then handled in one of two ways: For tickets where all players accepted the match, the ticket status is returned to SEARCHING to find a new match. For tickets where one or more players failed to accept the match, the ticket status is set to FAILED, and processing is terminated. A new matchmaking request for these players can be submitted as needed. Matchmaking-related operations include: StartMatchmaking DescribeMatchmaking StopMatchmaking AcceptMatch - */ - acceptMatch(params: GameLift.Types.AcceptMatchInput, callback?: (err: AWSError, data: GameLift.Types.AcceptMatchOutput) => void): Request; - /** - * Registers a player's acceptance or rejection of a proposed FlexMatch match. A matchmaking configuration may require player acceptance; if so, then matches built with that configuration cannot be completed unless all players accept the proposed match within a specified time limit. When FlexMatch builds a match, all the matchmaking tickets involved in the proposed match are placed into status REQUIRES_ACCEPTANCE. This is a trigger for your game to get acceptance from all players in the ticket. Acceptances are only valid for tickets when they are in this status; all other acceptances result in an error. To register acceptance, specify the ticket ID, a response, and one or more players. Once all players have registered acceptance, the matchmaking tickets advance to status PLACING, where a new game session is created for the match. If any player rejects the match, or if acceptances are not received before a specified timeout, the proposed match is dropped. The matchmaking tickets are then handled in one of two ways: For tickets where all players accepted the match, the ticket status is returned to SEARCHING to find a new match. For tickets where one or more players failed to accept the match, the ticket status is set to FAILED, and processing is terminated. A new matchmaking request for these players can be submitted as needed. Matchmaking-related operations include: StartMatchmaking DescribeMatchmaking StopMatchmaking AcceptMatch - */ - acceptMatch(callback?: (err: AWSError, data: GameLift.Types.AcceptMatchOutput) => void): Request; - /** - * Creates an alias for a fleet. In most situations, you can use an alias ID in place of a fleet ID. By using a fleet alias instead of a specific fleet ID, you can switch gameplay and players to a new fleet without changing your game client or other game components. For example, for games in production, using an alias allows you to seamlessly redirect your player base to a new game server update. Amazon GameLift supports two types of routing strategies for aliases: simple and terminal. A simple alias points to an active fleet. A terminal alias is used to display messaging or link to a URL instead of routing players to an active fleet. For example, you might use a terminal alias when a game version is no longer supported and you want to direct players to an upgrade site. To create a fleet alias, specify an alias name, routing strategy, and optional description. Each simple alias can point to only one fleet, but a fleet can have multiple aliases. If successful, a new alias record is returned, including an alias ID, which you can reference when creating a game session. You can reassign an alias to another fleet by calling UpdateAlias. Alias-related operations include: CreateAlias ListAliases DescribeAlias UpdateAlias DeleteAlias ResolveAlias - */ - createAlias(params: GameLift.Types.CreateAliasInput, callback?: (err: AWSError, data: GameLift.Types.CreateAliasOutput) => void): Request; - /** - * Creates an alias for a fleet. In most situations, you can use an alias ID in place of a fleet ID. By using a fleet alias instead of a specific fleet ID, you can switch gameplay and players to a new fleet without changing your game client or other game components. For example, for games in production, using an alias allows you to seamlessly redirect your player base to a new game server update. Amazon GameLift supports two types of routing strategies for aliases: simple and terminal. A simple alias points to an active fleet. A terminal alias is used to display messaging or link to a URL instead of routing players to an active fleet. For example, you might use a terminal alias when a game version is no longer supported and you want to direct players to an upgrade site. To create a fleet alias, specify an alias name, routing strategy, and optional description. Each simple alias can point to only one fleet, but a fleet can have multiple aliases. If successful, a new alias record is returned, including an alias ID, which you can reference when creating a game session. You can reassign an alias to another fleet by calling UpdateAlias. Alias-related operations include: CreateAlias ListAliases DescribeAlias UpdateAlias DeleteAlias ResolveAlias - */ - createAlias(callback?: (err: AWSError, data: GameLift.Types.CreateAliasOutput) => void): Request; - /** - * Creates a new Amazon GameLift build from a set of game server binary files stored in an Amazon Simple Storage Service (Amazon S3) location. To use this API call, create a .zip file containing all of the files for the build and store it in an Amazon S3 bucket under your AWS account. For help on packaging your build files and creating a build, see Uploading Your Game to Amazon GameLift. Use this API action ONLY if you are storing your game build files in an Amazon S3 bucket. To create a build using files stored locally, use the CLI command upload-build , which uploads the build files from a file location you specify. To create a new build using CreateBuild, identify the storage location and operating system of your game build. You also have the option of specifying a build name and version. If successful, this action creates a new build record with an unique build ID and in INITIALIZED status. Use the API call DescribeBuild to check the status of your build. A build must be in READY status before it can be used to create fleets to host your game. Build-related operations include: CreateBuild ListBuilds DescribeBuild UpdateBuild DeleteBuild - */ - createBuild(params: GameLift.Types.CreateBuildInput, callback?: (err: AWSError, data: GameLift.Types.CreateBuildOutput) => void): Request; - /** - * Creates a new Amazon GameLift build from a set of game server binary files stored in an Amazon Simple Storage Service (Amazon S3) location. To use this API call, create a .zip file containing all of the files for the build and store it in an Amazon S3 bucket under your AWS account. For help on packaging your build files and creating a build, see Uploading Your Game to Amazon GameLift. Use this API action ONLY if you are storing your game build files in an Amazon S3 bucket. To create a build using files stored locally, use the CLI command upload-build , which uploads the build files from a file location you specify. To create a new build using CreateBuild, identify the storage location and operating system of your game build. You also have the option of specifying a build name and version. If successful, this action creates a new build record with an unique build ID and in INITIALIZED status. Use the API call DescribeBuild to check the status of your build. A build must be in READY status before it can be used to create fleets to host your game. Build-related operations include: CreateBuild ListBuilds DescribeBuild UpdateBuild DeleteBuild - */ - createBuild(callback?: (err: AWSError, data: GameLift.Types.CreateBuildOutput) => void): Request; - /** - * Creates a new fleet to run your game servers. A fleet is a set of Amazon Elastic Compute Cloud (Amazon EC2) instances, each of which can run multiple server processes to host game sessions. You configure a fleet to create instances with certain hardware specifications (see Amazon EC2 Instance Types for more information), and deploy a specified game build to each instance. A newly created fleet passes through several statuses; once it reaches the ACTIVE status, it can begin hosting game sessions. To create a new fleet, you must specify the following: (1) fleet name, (2) build ID of an uploaded game build, (3) an EC2 instance type, and (4) a run-time configuration that describes which server processes to run on each instance in the fleet. (Although the run-time configuration is not a required parameter, the fleet cannot be successfully activated without it.) You can also configure the new fleet with the following settings: Fleet description Access permissions for inbound traffic Fleet-wide game session protection Resource creation limit If you use Amazon CloudWatch for metrics, you can add the new fleet to a metric group. This allows you to view aggregated metrics for a set of fleets. Once you specify a metric group, the new fleet's metrics are included in the metric group's data. You have the option of creating a VPC peering connection with the new fleet. For more information, see VPC Peering with Amazon GameLift Fleets. If the CreateFleet call is successful, Amazon GameLift performs the following tasks: Creates a fleet record and sets the status to NEW (followed by other statuses as the fleet is activated). Sets the fleet's target capacity to 1 (desired instances), which causes Amazon GameLift to start one new EC2 instance. Starts launching server processes on the instance. If the fleet is configured to run multiple server processes per instance, Amazon GameLift staggers each launch by a few seconds. Begins writing events to the fleet event log, which can be accessed in the Amazon GameLift console. Sets the fleet's status to ACTIVE as soon as one server process in the fleet is ready to host a game session. Fleet-related operations include: CreateFleet ListFleets Describe fleets: DescribeFleetAttributes DescribeFleetPortSettings DescribeFleetUtilization DescribeRuntimeConfiguration DescribeFleetEvents Update fleets: UpdateFleetAttributes UpdateFleetCapacity UpdateFleetPortSettings UpdateRuntimeConfiguration Manage fleet capacity: DescribeFleetCapacity UpdateFleetCapacity PutScalingPolicy (automatic scaling) DescribeScalingPolicies (automatic scaling) DeleteScalingPolicy (automatic scaling) DescribeEC2InstanceLimits DeleteFleet - */ - createFleet(params: GameLift.Types.CreateFleetInput, callback?: (err: AWSError, data: GameLift.Types.CreateFleetOutput) => void): Request; - /** - * Creates a new fleet to run your game servers. A fleet is a set of Amazon Elastic Compute Cloud (Amazon EC2) instances, each of which can run multiple server processes to host game sessions. You configure a fleet to create instances with certain hardware specifications (see Amazon EC2 Instance Types for more information), and deploy a specified game build to each instance. A newly created fleet passes through several statuses; once it reaches the ACTIVE status, it can begin hosting game sessions. To create a new fleet, you must specify the following: (1) fleet name, (2) build ID of an uploaded game build, (3) an EC2 instance type, and (4) a run-time configuration that describes which server processes to run on each instance in the fleet. (Although the run-time configuration is not a required parameter, the fleet cannot be successfully activated without it.) You can also configure the new fleet with the following settings: Fleet description Access permissions for inbound traffic Fleet-wide game session protection Resource creation limit If you use Amazon CloudWatch for metrics, you can add the new fleet to a metric group. This allows you to view aggregated metrics for a set of fleets. Once you specify a metric group, the new fleet's metrics are included in the metric group's data. You have the option of creating a VPC peering connection with the new fleet. For more information, see VPC Peering with Amazon GameLift Fleets. If the CreateFleet call is successful, Amazon GameLift performs the following tasks: Creates a fleet record and sets the status to NEW (followed by other statuses as the fleet is activated). Sets the fleet's target capacity to 1 (desired instances), which causes Amazon GameLift to start one new EC2 instance. Starts launching server processes on the instance. If the fleet is configured to run multiple server processes per instance, Amazon GameLift staggers each launch by a few seconds. Begins writing events to the fleet event log, which can be accessed in the Amazon GameLift console. Sets the fleet's status to ACTIVE as soon as one server process in the fleet is ready to host a game session. Fleet-related operations include: CreateFleet ListFleets Describe fleets: DescribeFleetAttributes DescribeFleetPortSettings DescribeFleetUtilization DescribeRuntimeConfiguration DescribeFleetEvents Update fleets: UpdateFleetAttributes UpdateFleetCapacity UpdateFleetPortSettings UpdateRuntimeConfiguration Manage fleet capacity: DescribeFleetCapacity UpdateFleetCapacity PutScalingPolicy (automatic scaling) DescribeScalingPolicies (automatic scaling) DeleteScalingPolicy (automatic scaling) DescribeEC2InstanceLimits DeleteFleet - */ - createFleet(callback?: (err: AWSError, data: GameLift.Types.CreateFleetOutput) => void): Request; - /** - * Creates a multiplayer game session for players. This action creates a game session record and assigns an available server process in the specified fleet to host the game session. A fleet must have an ACTIVE status before a game session can be created in it. To create a game session, specify either fleet ID or alias ID and indicate a maximum number of players to allow in the game session. You can also provide a name and game-specific properties for this game session. If successful, a GameSession object is returned containing the game session properties and other settings you specified. Idempotency tokens. You can add a token that uniquely identifies game session requests. This is useful for ensuring that game session requests are idempotent. Multiple requests with the same idempotency token are processed only once; subsequent requests return the original result. All response values are the same with the exception of game session status, which may change. Resource creation limits. If you are creating a game session on a fleet with a resource creation limit policy in force, then you must specify a creator ID. Without this ID, Amazon GameLift has no way to evaluate the policy for this new game session request. Player acceptance policy. By default, newly created game sessions are open to new players. You can restrict new player access by using UpdateGameSession to change the game session's player session creation policy. Game session logs. Logs are retained for all active game sessions for 14 days. To access the logs, call GetGameSessionLogUrl to download the log files. Available in Amazon GameLift Local. Game-session-related operations include: CreateGameSession DescribeGameSessions DescribeGameSessionDetails SearchGameSessions UpdateGameSession GetGameSessionLogUrl Game session placements StartGameSessionPlacement DescribeGameSessionPlacement StopGameSessionPlacement - */ - createGameSession(params: GameLift.Types.CreateGameSessionInput, callback?: (err: AWSError, data: GameLift.Types.CreateGameSessionOutput) => void): Request; - /** - * Creates a multiplayer game session for players. This action creates a game session record and assigns an available server process in the specified fleet to host the game session. A fleet must have an ACTIVE status before a game session can be created in it. To create a game session, specify either fleet ID or alias ID and indicate a maximum number of players to allow in the game session. You can also provide a name and game-specific properties for this game session. If successful, a GameSession object is returned containing the game session properties and other settings you specified. Idempotency tokens. You can add a token that uniquely identifies game session requests. This is useful for ensuring that game session requests are idempotent. Multiple requests with the same idempotency token are processed only once; subsequent requests return the original result. All response values are the same with the exception of game session status, which may change. Resource creation limits. If you are creating a game session on a fleet with a resource creation limit policy in force, then you must specify a creator ID. Without this ID, Amazon GameLift has no way to evaluate the policy for this new game session request. Player acceptance policy. By default, newly created game sessions are open to new players. You can restrict new player access by using UpdateGameSession to change the game session's player session creation policy. Game session logs. Logs are retained for all active game sessions for 14 days. To access the logs, call GetGameSessionLogUrl to download the log files. Available in Amazon GameLift Local. Game-session-related operations include: CreateGameSession DescribeGameSessions DescribeGameSessionDetails SearchGameSessions UpdateGameSession GetGameSessionLogUrl Game session placements StartGameSessionPlacement DescribeGameSessionPlacement StopGameSessionPlacement - */ - createGameSession(callback?: (err: AWSError, data: GameLift.Types.CreateGameSessionOutput) => void): Request; - /** - * Establishes a new queue for processing requests to place new game sessions. A queue identifies where new game sessions can be hosted -- by specifying a list of destinations (fleets or aliases) -- and how long requests can wait in the queue before timing out. You can set up a queue to try to place game sessions on fleets in multiple regions. To add placement requests to a queue, call StartGameSessionPlacement and reference the queue name. Destination order. When processing a request for a game session, Amazon GameLift tries each destination in order until it finds one with available resources to host the new game session. A queue's default order is determined by how destinations are listed. The default order is overridden when a game session placement request provides player latency information. Player latency information enables Amazon GameLift to prioritize destinations where players report the lowest average latency, as a result placing the new game session where the majority of players will have the best possible gameplay experience. Player latency policies. For placement requests containing player latency information, use player latency policies to protect individual players from very high latencies. With a latency cap, even when a destination can deliver a low latency for most players, the game is not placed where any individual player is reporting latency higher than a policy's maximum. A queue can have multiple latency policies, which are enforced consecutively starting with the policy with the lowest latency cap. Use multiple policies to gradually relax latency controls; for example, you might set a policy with a low latency cap for the first 60 seconds, a second policy with a higher cap for the next 60 seconds, etc. To create a new queue, provide a name, timeout value, a list of destinations and, if desired, a set of latency policies. If successful, a new queue object is returned. Queue-related operations include: CreateGameSessionQueue DescribeGameSessionQueues UpdateGameSessionQueue DeleteGameSessionQueue - */ - createGameSessionQueue(params: GameLift.Types.CreateGameSessionQueueInput, callback?: (err: AWSError, data: GameLift.Types.CreateGameSessionQueueOutput) => void): Request; - /** - * Establishes a new queue for processing requests to place new game sessions. A queue identifies where new game sessions can be hosted -- by specifying a list of destinations (fleets or aliases) -- and how long requests can wait in the queue before timing out. You can set up a queue to try to place game sessions on fleets in multiple regions. To add placement requests to a queue, call StartGameSessionPlacement and reference the queue name. Destination order. When processing a request for a game session, Amazon GameLift tries each destination in order until it finds one with available resources to host the new game session. A queue's default order is determined by how destinations are listed. The default order is overridden when a game session placement request provides player latency information. Player latency information enables Amazon GameLift to prioritize destinations where players report the lowest average latency, as a result placing the new game session where the majority of players will have the best possible gameplay experience. Player latency policies. For placement requests containing player latency information, use player latency policies to protect individual players from very high latencies. With a latency cap, even when a destination can deliver a low latency for most players, the game is not placed where any individual player is reporting latency higher than a policy's maximum. A queue can have multiple latency policies, which are enforced consecutively starting with the policy with the lowest latency cap. Use multiple policies to gradually relax latency controls; for example, you might set a policy with a low latency cap for the first 60 seconds, a second policy with a higher cap for the next 60 seconds, etc. To create a new queue, provide a name, timeout value, a list of destinations and, if desired, a set of latency policies. If successful, a new queue object is returned. Queue-related operations include: CreateGameSessionQueue DescribeGameSessionQueues UpdateGameSessionQueue DeleteGameSessionQueue - */ - createGameSessionQueue(callback?: (err: AWSError, data: GameLift.Types.CreateGameSessionQueueOutput) => void): Request; - /** - * Defines a new matchmaking configuration for use with FlexMatch. A matchmaking configuration sets out guidelines for matching players and getting the matches into games. You can set up multiple matchmaking configurations to handle the scenarios needed for your game. Each matchmaking request (StartMatchmaking) specifies a configuration for the match and provides player attributes to support the configuration being used. To create a matchmaking configuration, at a minimum you must specify the following: configuration name; a rule set that governs how to evaluate players and find acceptable matches; a game session queue to use when placing a new game session for the match; and the maximum time allowed for a matchmaking attempt. Player acceptance -- In each configuration, you have the option to require that all players accept participation in a proposed match. To enable this feature, set AcceptanceRequired to true and specify a time limit for player acceptance. Players have the option to accept or reject a proposed match, and a match does not move ahead to game session placement unless all matched players accept. Matchmaking status notification -- There are two ways to track the progress of matchmaking tickets: (1) polling ticket status with DescribeMatchmaking; or (2) receiving notifications with Amazon Simple Notification Service (SNS). To use notifications, you first need to set up an SNS topic to receive the notifications, and provide the topic ARN in the matchmaking configuration (see Setting up Notifications for Matchmaking). Since notifications promise only "best effort" delivery, we recommend calling DescribeMatchmaking if no notifications are received within 30 seconds. Operations related to match configurations and rule sets include: CreateMatchmakingConfiguration DescribeMatchmakingConfigurations UpdateMatchmakingConfiguration DeleteMatchmakingConfiguration CreateMatchmakingRuleSet DescribeMatchmakingRuleSets ValidateMatchmakingRuleSet - */ - createMatchmakingConfiguration(params: GameLift.Types.CreateMatchmakingConfigurationInput, callback?: (err: AWSError, data: GameLift.Types.CreateMatchmakingConfigurationOutput) => void): Request; - /** - * Defines a new matchmaking configuration for use with FlexMatch. A matchmaking configuration sets out guidelines for matching players and getting the matches into games. You can set up multiple matchmaking configurations to handle the scenarios needed for your game. Each matchmaking request (StartMatchmaking) specifies a configuration for the match and provides player attributes to support the configuration being used. To create a matchmaking configuration, at a minimum you must specify the following: configuration name; a rule set that governs how to evaluate players and find acceptable matches; a game session queue to use when placing a new game session for the match; and the maximum time allowed for a matchmaking attempt. Player acceptance -- In each configuration, you have the option to require that all players accept participation in a proposed match. To enable this feature, set AcceptanceRequired to true and specify a time limit for player acceptance. Players have the option to accept or reject a proposed match, and a match does not move ahead to game session placement unless all matched players accept. Matchmaking status notification -- There are two ways to track the progress of matchmaking tickets: (1) polling ticket status with DescribeMatchmaking; or (2) receiving notifications with Amazon Simple Notification Service (SNS). To use notifications, you first need to set up an SNS topic to receive the notifications, and provide the topic ARN in the matchmaking configuration (see Setting up Notifications for Matchmaking). Since notifications promise only "best effort" delivery, we recommend calling DescribeMatchmaking if no notifications are received within 30 seconds. Operations related to match configurations and rule sets include: CreateMatchmakingConfiguration DescribeMatchmakingConfigurations UpdateMatchmakingConfiguration DeleteMatchmakingConfiguration CreateMatchmakingRuleSet DescribeMatchmakingRuleSets ValidateMatchmakingRuleSet - */ - createMatchmakingConfiguration(callback?: (err: AWSError, data: GameLift.Types.CreateMatchmakingConfigurationOutput) => void): Request; - /** - * Creates a new rule set for FlexMatch matchmaking. A rule set describes the type of match to create, such as the number and size of teams, and sets the parameters for acceptable player matches, such as minimum skill level or character type. Rule sets are used in matchmaking configurations, which define how matchmaking requests are handled. Each MatchmakingConfiguration uses one rule set; you can set up multiple rule sets to handle the scenarios that suit your game (such as for different game modes), and create a separate matchmaking configuration for each rule set. See additional information on rule set content in the MatchmakingRuleSet structure. For help creating rule sets, including useful examples, see the topic Adding FlexMatch to Your Game. Once created, matchmaking rule sets cannot be changed or deleted, so we recommend checking the rule set syntax using ValidateMatchmakingRuleSetbefore creating the rule set. To create a matchmaking rule set, provide the set of rules and a unique name. Rule sets must be defined in the same region as the matchmaking configuration they will be used with. Rule sets cannot be edited or deleted. If you need to change a rule set, create a new one with the necessary edits and then update matchmaking configurations to use the new rule set. Operations related to match configurations and rule sets include: CreateMatchmakingConfiguration DescribeMatchmakingConfigurations UpdateMatchmakingConfiguration DeleteMatchmakingConfiguration CreateMatchmakingRuleSet DescribeMatchmakingRuleSets ValidateMatchmakingRuleSet - */ - createMatchmakingRuleSet(params: GameLift.Types.CreateMatchmakingRuleSetInput, callback?: (err: AWSError, data: GameLift.Types.CreateMatchmakingRuleSetOutput) => void): Request; - /** - * Creates a new rule set for FlexMatch matchmaking. A rule set describes the type of match to create, such as the number and size of teams, and sets the parameters for acceptable player matches, such as minimum skill level or character type. Rule sets are used in matchmaking configurations, which define how matchmaking requests are handled. Each MatchmakingConfiguration uses one rule set; you can set up multiple rule sets to handle the scenarios that suit your game (such as for different game modes), and create a separate matchmaking configuration for each rule set. See additional information on rule set content in the MatchmakingRuleSet structure. For help creating rule sets, including useful examples, see the topic Adding FlexMatch to Your Game. Once created, matchmaking rule sets cannot be changed or deleted, so we recommend checking the rule set syntax using ValidateMatchmakingRuleSetbefore creating the rule set. To create a matchmaking rule set, provide the set of rules and a unique name. Rule sets must be defined in the same region as the matchmaking configuration they will be used with. Rule sets cannot be edited or deleted. If you need to change a rule set, create a new one with the necessary edits and then update matchmaking configurations to use the new rule set. Operations related to match configurations and rule sets include: CreateMatchmakingConfiguration DescribeMatchmakingConfigurations UpdateMatchmakingConfiguration DeleteMatchmakingConfiguration CreateMatchmakingRuleSet DescribeMatchmakingRuleSets ValidateMatchmakingRuleSet - */ - createMatchmakingRuleSet(callback?: (err: AWSError, data: GameLift.Types.CreateMatchmakingRuleSetOutput) => void): Request; - /** - * Adds a player to a game session and creates a player session record. Before a player can be added, a game session must have an ACTIVE status, have a creation policy of ALLOW_ALL, and have an open player slot. To add a group of players to a game session, use CreatePlayerSessions. To create a player session, specify a game session ID, player ID, and optionally a string of player data. If successful, the player is added to the game session and a new PlayerSession object is returned. Player sessions cannot be updated. Available in Amazon GameLift Local. Player-session-related operations include: CreatePlayerSession CreatePlayerSessions DescribePlayerSessions Game session placements StartGameSessionPlacement DescribeGameSessionPlacement StopGameSessionPlacement - */ - createPlayerSession(params: GameLift.Types.CreatePlayerSessionInput, callback?: (err: AWSError, data: GameLift.Types.CreatePlayerSessionOutput) => void): Request; - /** - * Adds a player to a game session and creates a player session record. Before a player can be added, a game session must have an ACTIVE status, have a creation policy of ALLOW_ALL, and have an open player slot. To add a group of players to a game session, use CreatePlayerSessions. To create a player session, specify a game session ID, player ID, and optionally a string of player data. If successful, the player is added to the game session and a new PlayerSession object is returned. Player sessions cannot be updated. Available in Amazon GameLift Local. Player-session-related operations include: CreatePlayerSession CreatePlayerSessions DescribePlayerSessions Game session placements StartGameSessionPlacement DescribeGameSessionPlacement StopGameSessionPlacement - */ - createPlayerSession(callback?: (err: AWSError, data: GameLift.Types.CreatePlayerSessionOutput) => void): Request; - /** - * Adds a group of players to a game session. This action is useful with a team matching feature. Before players can be added, a game session must have an ACTIVE status, have a creation policy of ALLOW_ALL, and have an open player slot. To add a single player to a game session, use CreatePlayerSession. To create player sessions, specify a game session ID, a list of player IDs, and optionally a set of player data strings. If successful, the players are added to the game session and a set of new PlayerSession objects is returned. Player sessions cannot be updated. Available in Amazon GameLift Local. Player-session-related operations include: CreatePlayerSession CreatePlayerSessions DescribePlayerSessions Game session placements StartGameSessionPlacement DescribeGameSessionPlacement StopGameSessionPlacement - */ - createPlayerSessions(params: GameLift.Types.CreatePlayerSessionsInput, callback?: (err: AWSError, data: GameLift.Types.CreatePlayerSessionsOutput) => void): Request; - /** - * Adds a group of players to a game session. This action is useful with a team matching feature. Before players can be added, a game session must have an ACTIVE status, have a creation policy of ALLOW_ALL, and have an open player slot. To add a single player to a game session, use CreatePlayerSession. To create player sessions, specify a game session ID, a list of player IDs, and optionally a set of player data strings. If successful, the players are added to the game session and a set of new PlayerSession objects is returned. Player sessions cannot be updated. Available in Amazon GameLift Local. Player-session-related operations include: CreatePlayerSession CreatePlayerSessions DescribePlayerSessions Game session placements StartGameSessionPlacement DescribeGameSessionPlacement StopGameSessionPlacement - */ - createPlayerSessions(callback?: (err: AWSError, data: GameLift.Types.CreatePlayerSessionsOutput) => void): Request; - /** - * Requests authorization to create or delete a peer connection between the VPC for your Amazon GameLift fleet and a virtual private cloud (VPC) in your AWS account. VPC peering enables the game servers on your fleet to communicate directly with other AWS resources. Once you've received authorization, call CreateVpcPeeringConnection to establish the peering connection. For more information, see VPC Peering with Amazon GameLift Fleets. You can peer with VPCs that are owned by any AWS account you have access to, including the account that you use to manage your Amazon GameLift fleets. You cannot peer with VPCs that are in different regions. To request authorization to create a connection, call this operation from the AWS account with the VPC that you want to peer to your Amazon GameLift fleet. For example, to enable your game servers to retrieve data from a DynamoDB table, use the account that manages that DynamoDB resource. Identify the following values: (1) The ID of the VPC that you want to peer with, and (2) the ID of the AWS account that you use to manage Amazon GameLift. If successful, VPC peering is authorized for the specified VPC. To request authorization to delete a connection, call this operation from the AWS account with the VPC that is peered with your Amazon GameLift fleet. Identify the following values: (1) VPC ID that you want to delete the peering connection for, and (2) ID of the AWS account that you use to manage Amazon GameLift. The authorization remains valid for 24 hours unless it is canceled by a call to DeleteVpcPeeringAuthorization. You must create or delete the peering connection while the authorization is valid. VPC peering connection operations include: CreateVpcPeeringAuthorization DescribeVpcPeeringAuthorizations DeleteVpcPeeringAuthorization CreateVpcPeeringConnection DescribeVpcPeeringConnections DeleteVpcPeeringConnection - */ - createVpcPeeringAuthorization(params: GameLift.Types.CreateVpcPeeringAuthorizationInput, callback?: (err: AWSError, data: GameLift.Types.CreateVpcPeeringAuthorizationOutput) => void): Request; - /** - * Requests authorization to create or delete a peer connection between the VPC for your Amazon GameLift fleet and a virtual private cloud (VPC) in your AWS account. VPC peering enables the game servers on your fleet to communicate directly with other AWS resources. Once you've received authorization, call CreateVpcPeeringConnection to establish the peering connection. For more information, see VPC Peering with Amazon GameLift Fleets. You can peer with VPCs that are owned by any AWS account you have access to, including the account that you use to manage your Amazon GameLift fleets. You cannot peer with VPCs that are in different regions. To request authorization to create a connection, call this operation from the AWS account with the VPC that you want to peer to your Amazon GameLift fleet. For example, to enable your game servers to retrieve data from a DynamoDB table, use the account that manages that DynamoDB resource. Identify the following values: (1) The ID of the VPC that you want to peer with, and (2) the ID of the AWS account that you use to manage Amazon GameLift. If successful, VPC peering is authorized for the specified VPC. To request authorization to delete a connection, call this operation from the AWS account with the VPC that is peered with your Amazon GameLift fleet. Identify the following values: (1) VPC ID that you want to delete the peering connection for, and (2) ID of the AWS account that you use to manage Amazon GameLift. The authorization remains valid for 24 hours unless it is canceled by a call to DeleteVpcPeeringAuthorization. You must create or delete the peering connection while the authorization is valid. VPC peering connection operations include: CreateVpcPeeringAuthorization DescribeVpcPeeringAuthorizations DeleteVpcPeeringAuthorization CreateVpcPeeringConnection DescribeVpcPeeringConnections DeleteVpcPeeringConnection - */ - createVpcPeeringAuthorization(callback?: (err: AWSError, data: GameLift.Types.CreateVpcPeeringAuthorizationOutput) => void): Request; - /** - * Establishes a VPC peering connection between a virtual private cloud (VPC) in an AWS account with the VPC for your Amazon GameLift fleet. VPC peering enables the game servers on your fleet to communicate directly with other AWS resources. You can peer with VPCs in any AWS account that you have access to, including the account that you use to manage your Amazon GameLift fleets. You cannot peer with VPCs that are in different regions. For more information, see VPC Peering with Amazon GameLift Fleets. Before calling this operation to establish the peering connection, you first need to call CreateVpcPeeringAuthorization and identify the VPC you want to peer with. Once the authorization for the specified VPC is issued, you have 24 hours to establish the connection. These two operations handle all tasks necessary to peer the two VPCs, including acceptance, updating routing tables, etc. To establish the connection, call this operation from the AWS account that is used to manage the Amazon GameLift fleets. Identify the following values: (1) The ID of the fleet you want to be enable a VPC peering connection for; (2) The AWS account with the VPC that you want to peer with; and (3) The ID of the VPC you want to peer with. This operation is asynchronous. If successful, a VpcPeeringConnection request is created. You can use continuous polling to track the request's status using DescribeVpcPeeringConnections, or by monitoring fleet events for success or failure using DescribeFleetEvents. VPC peering connection operations include: CreateVpcPeeringAuthorization DescribeVpcPeeringAuthorizations DeleteVpcPeeringAuthorization CreateVpcPeeringConnection DescribeVpcPeeringConnections DeleteVpcPeeringConnection - */ - createVpcPeeringConnection(params: GameLift.Types.CreateVpcPeeringConnectionInput, callback?: (err: AWSError, data: GameLift.Types.CreateVpcPeeringConnectionOutput) => void): Request; - /** - * Establishes a VPC peering connection between a virtual private cloud (VPC) in an AWS account with the VPC for your Amazon GameLift fleet. VPC peering enables the game servers on your fleet to communicate directly with other AWS resources. You can peer with VPCs in any AWS account that you have access to, including the account that you use to manage your Amazon GameLift fleets. You cannot peer with VPCs that are in different regions. For more information, see VPC Peering with Amazon GameLift Fleets. Before calling this operation to establish the peering connection, you first need to call CreateVpcPeeringAuthorization and identify the VPC you want to peer with. Once the authorization for the specified VPC is issued, you have 24 hours to establish the connection. These two operations handle all tasks necessary to peer the two VPCs, including acceptance, updating routing tables, etc. To establish the connection, call this operation from the AWS account that is used to manage the Amazon GameLift fleets. Identify the following values: (1) The ID of the fleet you want to be enable a VPC peering connection for; (2) The AWS account with the VPC that you want to peer with; and (3) The ID of the VPC you want to peer with. This operation is asynchronous. If successful, a VpcPeeringConnection request is created. You can use continuous polling to track the request's status using DescribeVpcPeeringConnections, or by monitoring fleet events for success or failure using DescribeFleetEvents. VPC peering connection operations include: CreateVpcPeeringAuthorization DescribeVpcPeeringAuthorizations DeleteVpcPeeringAuthorization CreateVpcPeeringConnection DescribeVpcPeeringConnections DeleteVpcPeeringConnection - */ - createVpcPeeringConnection(callback?: (err: AWSError, data: GameLift.Types.CreateVpcPeeringConnectionOutput) => void): Request; - /** - * Deletes an alias. This action removes all record of the alias. Game clients attempting to access a server process using the deleted alias receive an error. To delete an alias, specify the alias ID to be deleted. Alias-related operations include: CreateAlias ListAliases DescribeAlias UpdateAlias DeleteAlias ResolveAlias - */ - deleteAlias(params: GameLift.Types.DeleteAliasInput, callback?: (err: AWSError, data: {}) => void): Request<{}, AWSError>; - /** - * Deletes an alias. This action removes all record of the alias. Game clients attempting to access a server process using the deleted alias receive an error. To delete an alias, specify the alias ID to be deleted. Alias-related operations include: CreateAlias ListAliases DescribeAlias UpdateAlias DeleteAlias ResolveAlias - */ - deleteAlias(callback?: (err: AWSError, data: {}) => void): Request<{}, AWSError>; - /** - * Deletes a build. This action permanently deletes the build record and any uploaded build files. To delete a build, specify its ID. Deleting a build does not affect the status of any active fleets using the build, but you can no longer create new fleets with the deleted build. Build-related operations include: CreateBuild ListBuilds DescribeBuild UpdateBuild DeleteBuild - */ - deleteBuild(params: GameLift.Types.DeleteBuildInput, callback?: (err: AWSError, data: {}) => void): Request<{}, AWSError>; - /** - * Deletes a build. This action permanently deletes the build record and any uploaded build files. To delete a build, specify its ID. Deleting a build does not affect the status of any active fleets using the build, but you can no longer create new fleets with the deleted build. Build-related operations include: CreateBuild ListBuilds DescribeBuild UpdateBuild DeleteBuild - */ - deleteBuild(callback?: (err: AWSError, data: {}) => void): Request<{}, AWSError>; - /** - * Deletes everything related to a fleet. Before deleting a fleet, you must set the fleet's desired capacity to zero. See UpdateFleetCapacity. This action removes the fleet's resources and the fleet record. Once a fleet is deleted, you can no longer use that fleet. Fleet-related operations include: CreateFleet ListFleets Describe fleets: DescribeFleetAttributes DescribeFleetPortSettings DescribeFleetUtilization DescribeRuntimeConfiguration DescribeFleetEvents Update fleets: UpdateFleetAttributes UpdateFleetCapacity UpdateFleetPortSettings UpdateRuntimeConfiguration Manage fleet capacity: DescribeFleetCapacity UpdateFleetCapacity PutScalingPolicy (automatic scaling) DescribeScalingPolicies (automatic scaling) DeleteScalingPolicy (automatic scaling) DescribeEC2InstanceLimits DeleteFleet - */ - deleteFleet(params: GameLift.Types.DeleteFleetInput, callback?: (err: AWSError, data: {}) => void): Request<{}, AWSError>; - /** - * Deletes everything related to a fleet. Before deleting a fleet, you must set the fleet's desired capacity to zero. See UpdateFleetCapacity. This action removes the fleet's resources and the fleet record. Once a fleet is deleted, you can no longer use that fleet. Fleet-related operations include: CreateFleet ListFleets Describe fleets: DescribeFleetAttributes DescribeFleetPortSettings DescribeFleetUtilization DescribeRuntimeConfiguration DescribeFleetEvents Update fleets: UpdateFleetAttributes UpdateFleetCapacity UpdateFleetPortSettings UpdateRuntimeConfiguration Manage fleet capacity: DescribeFleetCapacity UpdateFleetCapacity PutScalingPolicy (automatic scaling) DescribeScalingPolicies (automatic scaling) DeleteScalingPolicy (automatic scaling) DescribeEC2InstanceLimits DeleteFleet - */ - deleteFleet(callback?: (err: AWSError, data: {}) => void): Request<{}, AWSError>; - /** - * Deletes a game session queue. This action means that any StartGameSessionPlacement requests that reference this queue will fail. To delete a queue, specify the queue name. Queue-related operations include: CreateGameSessionQueue DescribeGameSessionQueues UpdateGameSessionQueue DeleteGameSessionQueue - */ - deleteGameSessionQueue(params: GameLift.Types.DeleteGameSessionQueueInput, callback?: (err: AWSError, data: GameLift.Types.DeleteGameSessionQueueOutput) => void): Request; - /** - * Deletes a game session queue. This action means that any StartGameSessionPlacement requests that reference this queue will fail. To delete a queue, specify the queue name. Queue-related operations include: CreateGameSessionQueue DescribeGameSessionQueues UpdateGameSessionQueue DeleteGameSessionQueue - */ - deleteGameSessionQueue(callback?: (err: AWSError, data: GameLift.Types.DeleteGameSessionQueueOutput) => void): Request; - /** - * Permanently removes a FlexMatch matchmaking configuration. To delete, specify the configuration name. A matchmaking configuration cannot be deleted if it is being used in any active matchmaking tickets. Operations related to match configurations and rule sets include: CreateMatchmakingConfiguration DescribeMatchmakingConfigurations UpdateMatchmakingConfiguration DeleteMatchmakingConfiguration CreateMatchmakingRuleSet DescribeMatchmakingRuleSets ValidateMatchmakingRuleSet - */ - deleteMatchmakingConfiguration(params: GameLift.Types.DeleteMatchmakingConfigurationInput, callback?: (err: AWSError, data: GameLift.Types.DeleteMatchmakingConfigurationOutput) => void): Request; - /** - * Permanently removes a FlexMatch matchmaking configuration. To delete, specify the configuration name. A matchmaking configuration cannot be deleted if it is being used in any active matchmaking tickets. Operations related to match configurations and rule sets include: CreateMatchmakingConfiguration DescribeMatchmakingConfigurations UpdateMatchmakingConfiguration DeleteMatchmakingConfiguration CreateMatchmakingRuleSet DescribeMatchmakingRuleSets ValidateMatchmakingRuleSet - */ - deleteMatchmakingConfiguration(callback?: (err: AWSError, data: GameLift.Types.DeleteMatchmakingConfigurationOutput) => void): Request; - /** - * Deletes a fleet scaling policy. This action means that the policy is no longer in force and removes all record of it. To delete a scaling policy, specify both the scaling policy name and the fleet ID it is associated with. Fleet-related operations include: CreateFleet ListFleets Describe fleets: DescribeFleetAttributes DescribeFleetPortSettings DescribeFleetUtilization DescribeRuntimeConfiguration DescribeFleetEvents Update fleets: UpdateFleetAttributes UpdateFleetCapacity UpdateFleetPortSettings UpdateRuntimeConfiguration Manage fleet capacity: DescribeFleetCapacity UpdateFleetCapacity PutScalingPolicy (automatic scaling) DescribeScalingPolicies (automatic scaling) DeleteScalingPolicy (automatic scaling) DescribeEC2InstanceLimits DeleteFleet - */ - deleteScalingPolicy(params: GameLift.Types.DeleteScalingPolicyInput, callback?: (err: AWSError, data: {}) => void): Request<{}, AWSError>; - /** - * Deletes a fleet scaling policy. This action means that the policy is no longer in force and removes all record of it. To delete a scaling policy, specify both the scaling policy name and the fleet ID it is associated with. Fleet-related operations include: CreateFleet ListFleets Describe fleets: DescribeFleetAttributes DescribeFleetPortSettings DescribeFleetUtilization DescribeRuntimeConfiguration DescribeFleetEvents Update fleets: UpdateFleetAttributes UpdateFleetCapacity UpdateFleetPortSettings UpdateRuntimeConfiguration Manage fleet capacity: DescribeFleetCapacity UpdateFleetCapacity PutScalingPolicy (automatic scaling) DescribeScalingPolicies (automatic scaling) DeleteScalingPolicy (automatic scaling) DescribeEC2InstanceLimits DeleteFleet - */ - deleteScalingPolicy(callback?: (err: AWSError, data: {}) => void): Request<{}, AWSError>; - /** - * Cancels a pending VPC peering authorization for the specified VPC. If the authorization has already been used to create a peering connection, call DeleteVpcPeeringConnection to remove the connection. VPC peering connection operations include: CreateVpcPeeringAuthorization DescribeVpcPeeringAuthorizations DeleteVpcPeeringAuthorization CreateVpcPeeringConnection DescribeVpcPeeringConnections DeleteVpcPeeringConnection - */ - deleteVpcPeeringAuthorization(params: GameLift.Types.DeleteVpcPeeringAuthorizationInput, callback?: (err: AWSError, data: GameLift.Types.DeleteVpcPeeringAuthorizationOutput) => void): Request; - /** - * Cancels a pending VPC peering authorization for the specified VPC. If the authorization has already been used to create a peering connection, call DeleteVpcPeeringConnection to remove the connection. VPC peering connection operations include: CreateVpcPeeringAuthorization DescribeVpcPeeringAuthorizations DeleteVpcPeeringAuthorization CreateVpcPeeringConnection DescribeVpcPeeringConnections DeleteVpcPeeringConnection - */ - deleteVpcPeeringAuthorization(callback?: (err: AWSError, data: GameLift.Types.DeleteVpcPeeringAuthorizationOutput) => void): Request; - /** - * Removes a VPC peering connection. To delete the connection, you must have a valid authorization for the VPC peering connection that you want to delete. You can check for an authorization by calling DescribeVpcPeeringAuthorizations or request a new one using CreateVpcPeeringAuthorization. Once a valid authorization exists, call this operation from the AWS account that is used to manage the Amazon GameLift fleets. Identify the connection to delete by the connection ID and fleet ID. If successful, the connection is removed. VPC peering connection operations include: CreateVpcPeeringAuthorization DescribeVpcPeeringAuthorizations DeleteVpcPeeringAuthorization CreateVpcPeeringConnection DescribeVpcPeeringConnections DeleteVpcPeeringConnection - */ - deleteVpcPeeringConnection(params: GameLift.Types.DeleteVpcPeeringConnectionInput, callback?: (err: AWSError, data: GameLift.Types.DeleteVpcPeeringConnectionOutput) => void): Request; - /** - * Removes a VPC peering connection. To delete the connection, you must have a valid authorization for the VPC peering connection that you want to delete. You can check for an authorization by calling DescribeVpcPeeringAuthorizations or request a new one using CreateVpcPeeringAuthorization. Once a valid authorization exists, call this operation from the AWS account that is used to manage the Amazon GameLift fleets. Identify the connection to delete by the connection ID and fleet ID. If successful, the connection is removed. VPC peering connection operations include: CreateVpcPeeringAuthorization DescribeVpcPeeringAuthorizations DeleteVpcPeeringAuthorization CreateVpcPeeringConnection DescribeVpcPeeringConnections DeleteVpcPeeringConnection - */ - deleteVpcPeeringConnection(callback?: (err: AWSError, data: GameLift.Types.DeleteVpcPeeringConnectionOutput) => void): Request; - /** - * Retrieves properties for an alias. This operation returns all alias metadata and settings. To get an alias's target fleet ID only, use ResolveAlias. To get alias properties, specify the alias ID. If successful, the requested alias record is returned. Alias-related operations include: CreateAlias ListAliases DescribeAlias UpdateAlias DeleteAlias ResolveAlias - */ - describeAlias(params: GameLift.Types.DescribeAliasInput, callback?: (err: AWSError, data: GameLift.Types.DescribeAliasOutput) => void): Request; - /** - * Retrieves properties for an alias. This operation returns all alias metadata and settings. To get an alias's target fleet ID only, use ResolveAlias. To get alias properties, specify the alias ID. If successful, the requested alias record is returned. Alias-related operations include: CreateAlias ListAliases DescribeAlias UpdateAlias DeleteAlias ResolveAlias - */ - describeAlias(callback?: (err: AWSError, data: GameLift.Types.DescribeAliasOutput) => void): Request; - /** - * Retrieves properties for a build. To get a build record, specify a build ID. If successful, an object containing the build properties is returned. Build-related operations include: CreateBuild ListBuilds DescribeBuild UpdateBuild DeleteBuild - */ - describeBuild(params: GameLift.Types.DescribeBuildInput, callback?: (err: AWSError, data: GameLift.Types.DescribeBuildOutput) => void): Request; - /** - * Retrieves properties for a build. To get a build record, specify a build ID. If successful, an object containing the build properties is returned. Build-related operations include: CreateBuild ListBuilds DescribeBuild UpdateBuild DeleteBuild - */ - describeBuild(callback?: (err: AWSError, data: GameLift.Types.DescribeBuildOutput) => void): Request; - /** - * Retrieves the following information for the specified EC2 instance type: maximum number of instances allowed per AWS account (service limit) current usage level for the AWS account Service limits vary depending on region. Available regions for Amazon GameLift can be found in the AWS Management Console for Amazon GameLift (see the drop-down list in the upper right corner). Fleet-related operations include: CreateFleet ListFleets Describe fleets: DescribeFleetAttributes DescribeFleetPortSettings DescribeFleetUtilization DescribeRuntimeConfiguration DescribeFleetEvents Update fleets: UpdateFleetAttributes UpdateFleetCapacity UpdateFleetPortSettings UpdateRuntimeConfiguration Manage fleet capacity: DescribeFleetCapacity UpdateFleetCapacity PutScalingPolicy (automatic scaling) DescribeScalingPolicies (automatic scaling) DeleteScalingPolicy (automatic scaling) DescribeEC2InstanceLimits DeleteFleet - */ - describeEC2InstanceLimits(params: GameLift.Types.DescribeEC2InstanceLimitsInput, callback?: (err: AWSError, data: GameLift.Types.DescribeEC2InstanceLimitsOutput) => void): Request; - /** - * Retrieves the following information for the specified EC2 instance type: maximum number of instances allowed per AWS account (service limit) current usage level for the AWS account Service limits vary depending on region. Available regions for Amazon GameLift can be found in the AWS Management Console for Amazon GameLift (see the drop-down list in the upper right corner). Fleet-related operations include: CreateFleet ListFleets Describe fleets: DescribeFleetAttributes DescribeFleetPortSettings DescribeFleetUtilization DescribeRuntimeConfiguration DescribeFleetEvents Update fleets: UpdateFleetAttributes UpdateFleetCapacity UpdateFleetPortSettings UpdateRuntimeConfiguration Manage fleet capacity: DescribeFleetCapacity UpdateFleetCapacity PutScalingPolicy (automatic scaling) DescribeScalingPolicies (automatic scaling) DeleteScalingPolicy (automatic scaling) DescribeEC2InstanceLimits DeleteFleet - */ - describeEC2InstanceLimits(callback?: (err: AWSError, data: GameLift.Types.DescribeEC2InstanceLimitsOutput) => void): Request; - /** - * Retrieves fleet properties, including metadata, status, and configuration, for one or more fleets. You can request attributes for all fleets, or specify a list of one or more fleet IDs. When requesting multiple fleets, use the pagination parameters to retrieve results as a set of sequential pages. If successful, a FleetAttributes object is returned for each requested fleet ID. When specifying a list of fleet IDs, attribute objects are returned only for fleets that currently exist. Some API actions may limit the number of fleet IDs allowed in one request. If a request exceeds this limit, the request fails and the error message includes the maximum allowed. Fleet-related operations include: CreateFleet ListFleets Describe fleets: DescribeFleetAttributes DescribeFleetPortSettings DescribeFleetUtilization DescribeRuntimeConfiguration DescribeFleetEvents Update fleets: UpdateFleetAttributes UpdateFleetCapacity UpdateFleetPortSettings UpdateRuntimeConfiguration Manage fleet capacity: DescribeFleetCapacity UpdateFleetCapacity PutScalingPolicy (automatic scaling) DescribeScalingPolicies (automatic scaling) DeleteScalingPolicy (automatic scaling) DescribeEC2InstanceLimits DeleteFleet - */ - describeFleetAttributes(params: GameLift.Types.DescribeFleetAttributesInput, callback?: (err: AWSError, data: GameLift.Types.DescribeFleetAttributesOutput) => void): Request; - /** - * Retrieves fleet properties, including metadata, status, and configuration, for one or more fleets. You can request attributes for all fleets, or specify a list of one or more fleet IDs. When requesting multiple fleets, use the pagination parameters to retrieve results as a set of sequential pages. If successful, a FleetAttributes object is returned for each requested fleet ID. When specifying a list of fleet IDs, attribute objects are returned only for fleets that currently exist. Some API actions may limit the number of fleet IDs allowed in one request. If a request exceeds this limit, the request fails and the error message includes the maximum allowed. Fleet-related operations include: CreateFleet ListFleets Describe fleets: DescribeFleetAttributes DescribeFleetPortSettings DescribeFleetUtilization DescribeRuntimeConfiguration DescribeFleetEvents Update fleets: UpdateFleetAttributes UpdateFleetCapacity UpdateFleetPortSettings UpdateRuntimeConfiguration Manage fleet capacity: DescribeFleetCapacity UpdateFleetCapacity PutScalingPolicy (automatic scaling) DescribeScalingPolicies (automatic scaling) DeleteScalingPolicy (automatic scaling) DescribeEC2InstanceLimits DeleteFleet - */ - describeFleetAttributes(callback?: (err: AWSError, data: GameLift.Types.DescribeFleetAttributesOutput) => void): Request; - /** - * Retrieves the current status of fleet capacity for one or more fleets. This information includes the number of instances that have been requested for the fleet and the number currently active. You can request capacity for all fleets, or specify a list of one or more fleet IDs. When requesting multiple fleets, use the pagination parameters to retrieve results as a set of sequential pages. If successful, a FleetCapacity object is returned for each requested fleet ID. When specifying a list of fleet IDs, attribute objects are returned only for fleets that currently exist. Some API actions may limit the number of fleet IDs allowed in one request. If a request exceeds this limit, the request fails and the error message includes the maximum allowed. Fleet-related operations include: CreateFleet ListFleets Describe fleets: DescribeFleetAttributes DescribeFleetPortSettings DescribeFleetUtilization DescribeRuntimeConfiguration DescribeFleetEvents Update fleets: UpdateFleetAttributes UpdateFleetCapacity UpdateFleetPortSettings UpdateRuntimeConfiguration Manage fleet capacity: DescribeFleetCapacity UpdateFleetCapacity PutScalingPolicy (automatic scaling) DescribeScalingPolicies (automatic scaling) DeleteScalingPolicy (automatic scaling) DescribeEC2InstanceLimits DeleteFleet - */ - describeFleetCapacity(params: GameLift.Types.DescribeFleetCapacityInput, callback?: (err: AWSError, data: GameLift.Types.DescribeFleetCapacityOutput) => void): Request; - /** - * Retrieves the current status of fleet capacity for one or more fleets. This information includes the number of instances that have been requested for the fleet and the number currently active. You can request capacity for all fleets, or specify a list of one or more fleet IDs. When requesting multiple fleets, use the pagination parameters to retrieve results as a set of sequential pages. If successful, a FleetCapacity object is returned for each requested fleet ID. When specifying a list of fleet IDs, attribute objects are returned only for fleets that currently exist. Some API actions may limit the number of fleet IDs allowed in one request. If a request exceeds this limit, the request fails and the error message includes the maximum allowed. Fleet-related operations include: CreateFleet ListFleets Describe fleets: DescribeFleetAttributes DescribeFleetPortSettings DescribeFleetUtilization DescribeRuntimeConfiguration DescribeFleetEvents Update fleets: UpdateFleetAttributes UpdateFleetCapacity UpdateFleetPortSettings UpdateRuntimeConfiguration Manage fleet capacity: DescribeFleetCapacity UpdateFleetCapacity PutScalingPolicy (automatic scaling) DescribeScalingPolicies (automatic scaling) DeleteScalingPolicy (automatic scaling) DescribeEC2InstanceLimits DeleteFleet - */ - describeFleetCapacity(callback?: (err: AWSError, data: GameLift.Types.DescribeFleetCapacityOutput) => void): Request; - /** - * Retrieves entries from the specified fleet's event log. You can specify a time range to limit the result set. Use the pagination parameters to retrieve results as a set of sequential pages. If successful, a collection of event log entries matching the request are returned. Fleet-related operations include: CreateFleet ListFleets Describe fleets: DescribeFleetAttributes DescribeFleetPortSettings DescribeFleetUtilization DescribeRuntimeConfiguration DescribeFleetEvents Update fleets: UpdateFleetAttributes UpdateFleetCapacity UpdateFleetPortSettings UpdateRuntimeConfiguration Manage fleet capacity: DescribeFleetCapacity UpdateFleetCapacity PutScalingPolicy (automatic scaling) DescribeScalingPolicies (automatic scaling) DeleteScalingPolicy (automatic scaling) DescribeEC2InstanceLimits DeleteFleet - */ - describeFleetEvents(params: GameLift.Types.DescribeFleetEventsInput, callback?: (err: AWSError, data: GameLift.Types.DescribeFleetEventsOutput) => void): Request; - /** - * Retrieves entries from the specified fleet's event log. You can specify a time range to limit the result set. Use the pagination parameters to retrieve results as a set of sequential pages. If successful, a collection of event log entries matching the request are returned. Fleet-related operations include: CreateFleet ListFleets Describe fleets: DescribeFleetAttributes DescribeFleetPortSettings DescribeFleetUtilization DescribeRuntimeConfiguration DescribeFleetEvents Update fleets: UpdateFleetAttributes UpdateFleetCapacity UpdateFleetPortSettings UpdateRuntimeConfiguration Manage fleet capacity: DescribeFleetCapacity UpdateFleetCapacity PutScalingPolicy (automatic scaling) DescribeScalingPolicies (automatic scaling) DeleteScalingPolicy (automatic scaling) DescribeEC2InstanceLimits DeleteFleet - */ - describeFleetEvents(callback?: (err: AWSError, data: GameLift.Types.DescribeFleetEventsOutput) => void): Request; - /** - * Retrieves the inbound connection permissions for a fleet. Connection permissions include a range of IP addresses and port settings that incoming traffic can use to access server processes in the fleet. To get a fleet's inbound connection permissions, specify a fleet ID. If successful, a collection of IpPermission objects is returned for the requested fleet ID. If the requested fleet has been deleted, the result set is empty. Fleet-related operations include: CreateFleet ListFleets Describe fleets: DescribeFleetAttributes DescribeFleetPortSettings DescribeFleetUtilization DescribeRuntimeConfiguration DescribeFleetEvents Update fleets: UpdateFleetAttributes UpdateFleetCapacity UpdateFleetPortSettings UpdateRuntimeConfiguration Manage fleet capacity: DescribeFleetCapacity UpdateFleetCapacity PutScalingPolicy (automatic scaling) DescribeScalingPolicies (automatic scaling) DeleteScalingPolicy (automatic scaling) DescribeEC2InstanceLimits DeleteFleet - */ - describeFleetPortSettings(params: GameLift.Types.DescribeFleetPortSettingsInput, callback?: (err: AWSError, data: GameLift.Types.DescribeFleetPortSettingsOutput) => void): Request; - /** - * Retrieves the inbound connection permissions for a fleet. Connection permissions include a range of IP addresses and port settings that incoming traffic can use to access server processes in the fleet. To get a fleet's inbound connection permissions, specify a fleet ID. If successful, a collection of IpPermission objects is returned for the requested fleet ID. If the requested fleet has been deleted, the result set is empty. Fleet-related operations include: CreateFleet ListFleets Describe fleets: DescribeFleetAttributes DescribeFleetPortSettings DescribeFleetUtilization DescribeRuntimeConfiguration DescribeFleetEvents Update fleets: UpdateFleetAttributes UpdateFleetCapacity UpdateFleetPortSettings UpdateRuntimeConfiguration Manage fleet capacity: DescribeFleetCapacity UpdateFleetCapacity PutScalingPolicy (automatic scaling) DescribeScalingPolicies (automatic scaling) DeleteScalingPolicy (automatic scaling) DescribeEC2InstanceLimits DeleteFleet - */ - describeFleetPortSettings(callback?: (err: AWSError, data: GameLift.Types.DescribeFleetPortSettingsOutput) => void): Request; - /** - * Retrieves utilization statistics for one or more fleets. You can request utilization data for all fleets, or specify a list of one or more fleet IDs. When requesting multiple fleets, use the pagination parameters to retrieve results as a set of sequential pages. If successful, a FleetUtilization object is returned for each requested fleet ID. When specifying a list of fleet IDs, utilization objects are returned only for fleets that currently exist. Some API actions may limit the number of fleet IDs allowed in one request. If a request exceeds this limit, the request fails and the error message includes the maximum allowed. Fleet-related operations include: CreateFleet ListFleets Describe fleets: DescribeFleetAttributes DescribeFleetPortSettings DescribeFleetUtilization DescribeRuntimeConfiguration DescribeFleetEvents Update fleets: UpdateFleetAttributes UpdateFleetCapacity UpdateFleetPortSettings UpdateRuntimeConfiguration Manage fleet capacity: DescribeFleetCapacity UpdateFleetCapacity PutScalingPolicy (automatic scaling) DescribeScalingPolicies (automatic scaling) DeleteScalingPolicy (automatic scaling) DescribeEC2InstanceLimits DeleteFleet - */ - describeFleetUtilization(params: GameLift.Types.DescribeFleetUtilizationInput, callback?: (err: AWSError, data: GameLift.Types.DescribeFleetUtilizationOutput) => void): Request; - /** - * Retrieves utilization statistics for one or more fleets. You can request utilization data for all fleets, or specify a list of one or more fleet IDs. When requesting multiple fleets, use the pagination parameters to retrieve results as a set of sequential pages. If successful, a FleetUtilization object is returned for each requested fleet ID. When specifying a list of fleet IDs, utilization objects are returned only for fleets that currently exist. Some API actions may limit the number of fleet IDs allowed in one request. If a request exceeds this limit, the request fails and the error message includes the maximum allowed. Fleet-related operations include: CreateFleet ListFleets Describe fleets: DescribeFleetAttributes DescribeFleetPortSettings DescribeFleetUtilization DescribeRuntimeConfiguration DescribeFleetEvents Update fleets: UpdateFleetAttributes UpdateFleetCapacity UpdateFleetPortSettings UpdateRuntimeConfiguration Manage fleet capacity: DescribeFleetCapacity UpdateFleetCapacity PutScalingPolicy (automatic scaling) DescribeScalingPolicies (automatic scaling) DeleteScalingPolicy (automatic scaling) DescribeEC2InstanceLimits DeleteFleet - */ - describeFleetUtilization(callback?: (err: AWSError, data: GameLift.Types.DescribeFleetUtilizationOutput) => void): Request; - /** - * Retrieves properties, including the protection policy in force, for one or more game sessions. This action can be used in several ways: (1) provide a GameSessionId or GameSessionArn to request details for a specific game session; (2) provide either a FleetId or an AliasId to request properties for all game sessions running on a fleet. To get game session record(s), specify just one of the following: game session ID, fleet ID, or alias ID. You can filter this request by game session status. Use the pagination parameters to retrieve results as a set of sequential pages. If successful, a GameSessionDetail object is returned for each session matching the request. Game-session-related operations include: CreateGameSession DescribeGameSessions DescribeGameSessionDetails SearchGameSessions UpdateGameSession GetGameSessionLogUrl Game session placements StartGameSessionPlacement DescribeGameSessionPlacement StopGameSessionPlacement - */ - describeGameSessionDetails(params: GameLift.Types.DescribeGameSessionDetailsInput, callback?: (err: AWSError, data: GameLift.Types.DescribeGameSessionDetailsOutput) => void): Request; - /** - * Retrieves properties, including the protection policy in force, for one or more game sessions. This action can be used in several ways: (1) provide a GameSessionId or GameSessionArn to request details for a specific game session; (2) provide either a FleetId or an AliasId to request properties for all game sessions running on a fleet. To get game session record(s), specify just one of the following: game session ID, fleet ID, or alias ID. You can filter this request by game session status. Use the pagination parameters to retrieve results as a set of sequential pages. If successful, a GameSessionDetail object is returned for each session matching the request. Game-session-related operations include: CreateGameSession DescribeGameSessions DescribeGameSessionDetails SearchGameSessions UpdateGameSession GetGameSessionLogUrl Game session placements StartGameSessionPlacement DescribeGameSessionPlacement StopGameSessionPlacement - */ - describeGameSessionDetails(callback?: (err: AWSError, data: GameLift.Types.DescribeGameSessionDetailsOutput) => void): Request; - /** - * Retrieves properties and current status of a game session placement request. To get game session placement details, specify the placement ID. If successful, a GameSessionPlacement object is returned. Game-session-related operations include: CreateGameSession DescribeGameSessions DescribeGameSessionDetails SearchGameSessions UpdateGameSession GetGameSessionLogUrl Game session placements StartGameSessionPlacement DescribeGameSessionPlacement StopGameSessionPlacement - */ - describeGameSessionPlacement(params: GameLift.Types.DescribeGameSessionPlacementInput, callback?: (err: AWSError, data: GameLift.Types.DescribeGameSessionPlacementOutput) => void): Request; - /** - * Retrieves properties and current status of a game session placement request. To get game session placement details, specify the placement ID. If successful, a GameSessionPlacement object is returned. Game-session-related operations include: CreateGameSession DescribeGameSessions DescribeGameSessionDetails SearchGameSessions UpdateGameSession GetGameSessionLogUrl Game session placements StartGameSessionPlacement DescribeGameSessionPlacement StopGameSessionPlacement - */ - describeGameSessionPlacement(callback?: (err: AWSError, data: GameLift.Types.DescribeGameSessionPlacementOutput) => void): Request; - /** - * Retrieves the properties for one or more game session queues. When requesting multiple queues, use the pagination parameters to retrieve results as a set of sequential pages. If successful, a GameSessionQueue object is returned for each requested queue. When specifying a list of queues, objects are returned only for queues that currently exist in the region. Queue-related operations include: CreateGameSessionQueue DescribeGameSessionQueues UpdateGameSessionQueue DeleteGameSessionQueue - */ - describeGameSessionQueues(params: GameLift.Types.DescribeGameSessionQueuesInput, callback?: (err: AWSError, data: GameLift.Types.DescribeGameSessionQueuesOutput) => void): Request; - /** - * Retrieves the properties for one or more game session queues. When requesting multiple queues, use the pagination parameters to retrieve results as a set of sequential pages. If successful, a GameSessionQueue object is returned for each requested queue. When specifying a list of queues, objects are returned only for queues that currently exist in the region. Queue-related operations include: CreateGameSessionQueue DescribeGameSessionQueues UpdateGameSessionQueue DeleteGameSessionQueue - */ - describeGameSessionQueues(callback?: (err: AWSError, data: GameLift.Types.DescribeGameSessionQueuesOutput) => void): Request; - /** - * Retrieves a set of one or more game sessions. Request a specific game session or request all game sessions on a fleet. Alternatively, use SearchGameSessions to request a set of active game sessions that are filtered by certain criteria. To retrieve protection policy settings for game sessions, use DescribeGameSessionDetails. To get game sessions, specify one of the following: game session ID, fleet ID, or alias ID. You can filter this request by game session status. Use the pagination parameters to retrieve results as a set of sequential pages. If successful, a GameSession object is returned for each game session matching the request. Available in Amazon GameLift Local. Game-session-related operations include: CreateGameSession DescribeGameSessions DescribeGameSessionDetails SearchGameSessions UpdateGameSession GetGameSessionLogUrl Game session placements StartGameSessionPlacement DescribeGameSessionPlacement StopGameSessionPlacement - */ - describeGameSessions(params: GameLift.Types.DescribeGameSessionsInput, callback?: (err: AWSError, data: GameLift.Types.DescribeGameSessionsOutput) => void): Request; - /** - * Retrieves a set of one or more game sessions. Request a specific game session or request all game sessions on a fleet. Alternatively, use SearchGameSessions to request a set of active game sessions that are filtered by certain criteria. To retrieve protection policy settings for game sessions, use DescribeGameSessionDetails. To get game sessions, specify one of the following: game session ID, fleet ID, or alias ID. You can filter this request by game session status. Use the pagination parameters to retrieve results as a set of sequential pages. If successful, a GameSession object is returned for each game session matching the request. Available in Amazon GameLift Local. Game-session-related operations include: CreateGameSession DescribeGameSessions DescribeGameSessionDetails SearchGameSessions UpdateGameSession GetGameSessionLogUrl Game session placements StartGameSessionPlacement DescribeGameSessionPlacement StopGameSessionPlacement - */ - describeGameSessions(callback?: (err: AWSError, data: GameLift.Types.DescribeGameSessionsOutput) => void): Request; - /** - * Retrieves information about a fleet's instances, including instance IDs. Use this action to get details on all instances in the fleet or get details on one specific instance. To get a specific instance, specify fleet ID and instance ID. To get all instances in a fleet, specify a fleet ID only. Use the pagination parameters to retrieve results as a set of sequential pages. If successful, an Instance object is returned for each result. - */ - describeInstances(params: GameLift.Types.DescribeInstancesInput, callback?: (err: AWSError, data: GameLift.Types.DescribeInstancesOutput) => void): Request; - /** - * Retrieves information about a fleet's instances, including instance IDs. Use this action to get details on all instances in the fleet or get details on one specific instance. To get a specific instance, specify fleet ID and instance ID. To get all instances in a fleet, specify a fleet ID only. Use the pagination parameters to retrieve results as a set of sequential pages. If successful, an Instance object is returned for each result. - */ - describeInstances(callback?: (err: AWSError, data: GameLift.Types.DescribeInstancesOutput) => void): Request; - /** - * Retrieves a set of one or more matchmaking tickets. Use this operation to retrieve ticket information, including status and--once a successful match is made--acquire connection information for the resulting new game session. You can use this operation to track the progress of matchmaking requests (through polling) as an alternative to using event notifications. See more details on tracking matchmaking requests through polling or notifications in StartMatchmaking. You can request data for a one or a list of ticket IDs. If the request is successful, a ticket object is returned for each requested ID. When specifying a list of ticket IDs, objects are returned only for tickets that currently exist. Matchmaking-related operations include: StartMatchmaking DescribeMatchmaking StopMatchmaking AcceptMatch - */ - describeMatchmaking(params: GameLift.Types.DescribeMatchmakingInput, callback?: (err: AWSError, data: GameLift.Types.DescribeMatchmakingOutput) => void): Request; - /** - * Retrieves a set of one or more matchmaking tickets. Use this operation to retrieve ticket information, including status and--once a successful match is made--acquire connection information for the resulting new game session. You can use this operation to track the progress of matchmaking requests (through polling) as an alternative to using event notifications. See more details on tracking matchmaking requests through polling or notifications in StartMatchmaking. You can request data for a one or a list of ticket IDs. If the request is successful, a ticket object is returned for each requested ID. When specifying a list of ticket IDs, objects are returned only for tickets that currently exist. Matchmaking-related operations include: StartMatchmaking DescribeMatchmaking StopMatchmaking AcceptMatch - */ - describeMatchmaking(callback?: (err: AWSError, data: GameLift.Types.DescribeMatchmakingOutput) => void): Request; - /** - * Retrieves the details of FlexMatch matchmaking configurations. with this operation, you have the following options: (1) retrieve all existing configurations, (2) provide the names of one or more configurations to retrieve, or (3) retrieve all configurations that use a specified rule set name. When requesting multiple items, use the pagination parameters to retrieve results as a set of sequential pages. If successful, a configuration is returned for each requested name. When specifying a list of names, only configurations that currently exist are returned. Operations related to match configurations and rule sets include: CreateMatchmakingConfiguration DescribeMatchmakingConfigurations UpdateMatchmakingConfiguration DeleteMatchmakingConfiguration CreateMatchmakingRuleSet DescribeMatchmakingRuleSets ValidateMatchmakingRuleSet - */ - describeMatchmakingConfigurations(params: GameLift.Types.DescribeMatchmakingConfigurationsInput, callback?: (err: AWSError, data: GameLift.Types.DescribeMatchmakingConfigurationsOutput) => void): Request; - /** - * Retrieves the details of FlexMatch matchmaking configurations. with this operation, you have the following options: (1) retrieve all existing configurations, (2) provide the names of one or more configurations to retrieve, or (3) retrieve all configurations that use a specified rule set name. When requesting multiple items, use the pagination parameters to retrieve results as a set of sequential pages. If successful, a configuration is returned for each requested name. When specifying a list of names, only configurations that currently exist are returned. Operations related to match configurations and rule sets include: CreateMatchmakingConfiguration DescribeMatchmakingConfigurations UpdateMatchmakingConfiguration DeleteMatchmakingConfiguration CreateMatchmakingRuleSet DescribeMatchmakingRuleSets ValidateMatchmakingRuleSet - */ - describeMatchmakingConfigurations(callback?: (err: AWSError, data: GameLift.Types.DescribeMatchmakingConfigurationsOutput) => void): Request; - /** - * Retrieves the details for FlexMatch matchmaking rule sets. You can request all existing rule sets for the region, or provide a list of one or more rule set names. When requesting multiple items, use the pagination parameters to retrieve results as a set of sequential pages. If successful, a rule set is returned for each requested name. Operations related to match configurations and rule sets include: CreateMatchmakingConfiguration DescribeMatchmakingConfigurations UpdateMatchmakingConfiguration DeleteMatchmakingConfiguration CreateMatchmakingRuleSet DescribeMatchmakingRuleSets ValidateMatchmakingRuleSet - */ - describeMatchmakingRuleSets(params: GameLift.Types.DescribeMatchmakingRuleSetsInput, callback?: (err: AWSError, data: GameLift.Types.DescribeMatchmakingRuleSetsOutput) => void): Request; - /** - * Retrieves the details for FlexMatch matchmaking rule sets. You can request all existing rule sets for the region, or provide a list of one or more rule set names. When requesting multiple items, use the pagination parameters to retrieve results as a set of sequential pages. If successful, a rule set is returned for each requested name. Operations related to match configurations and rule sets include: CreateMatchmakingConfiguration DescribeMatchmakingConfigurations UpdateMatchmakingConfiguration DeleteMatchmakingConfiguration CreateMatchmakingRuleSet DescribeMatchmakingRuleSets ValidateMatchmakingRuleSet - */ - describeMatchmakingRuleSets(callback?: (err: AWSError, data: GameLift.Types.DescribeMatchmakingRuleSetsOutput) => void): Request; - /** - * Retrieves properties for one or more player sessions. This action can be used in several ways: (1) provide a PlayerSessionId to request properties for a specific player session; (2) provide a GameSessionId to request properties for all player sessions in the specified game session; (3) provide a PlayerId to request properties for all player sessions of a specified player. To get game session record(s), specify only one of the following: a player session ID, a game session ID, or a player ID. You can filter this request by player session status. Use the pagination parameters to retrieve results as a set of sequential pages. If successful, a PlayerSession object is returned for each session matching the request. Available in Amazon GameLift Local. Player-session-related operations include: CreatePlayerSession CreatePlayerSessions DescribePlayerSessions Game session placements StartGameSessionPlacement DescribeGameSessionPlacement StopGameSessionPlacement - */ - describePlayerSessions(params: GameLift.Types.DescribePlayerSessionsInput, callback?: (err: AWSError, data: GameLift.Types.DescribePlayerSessionsOutput) => void): Request; - /** - * Retrieves properties for one or more player sessions. This action can be used in several ways: (1) provide a PlayerSessionId to request properties for a specific player session; (2) provide a GameSessionId to request properties for all player sessions in the specified game session; (3) provide a PlayerId to request properties for all player sessions of a specified player. To get game session record(s), specify only one of the following: a player session ID, a game session ID, or a player ID. You can filter this request by player session status. Use the pagination parameters to retrieve results as a set of sequential pages. If successful, a PlayerSession object is returned for each session matching the request. Available in Amazon GameLift Local. Player-session-related operations include: CreatePlayerSession CreatePlayerSessions DescribePlayerSessions Game session placements StartGameSessionPlacement DescribeGameSessionPlacement StopGameSessionPlacement - */ - describePlayerSessions(callback?: (err: AWSError, data: GameLift.Types.DescribePlayerSessionsOutput) => void): Request; - /** - * Retrieves the current run-time configuration for the specified fleet. The run-time configuration tells Amazon GameLift how to launch server processes on instances in the fleet. Fleet-related operations include: CreateFleet ListFleets Describe fleets: DescribeFleetAttributes DescribeFleetPortSettings DescribeFleetUtilization DescribeRuntimeConfiguration DescribeFleetEvents Update fleets: UpdateFleetAttributes UpdateFleetCapacity UpdateFleetPortSettings UpdateRuntimeConfiguration Manage fleet capacity: DescribeFleetCapacity UpdateFleetCapacity PutScalingPolicy (automatic scaling) DescribeScalingPolicies (automatic scaling) DeleteScalingPolicy (automatic scaling) DescribeEC2InstanceLimits DeleteFleet - */ - describeRuntimeConfiguration(params: GameLift.Types.DescribeRuntimeConfigurationInput, callback?: (err: AWSError, data: GameLift.Types.DescribeRuntimeConfigurationOutput) => void): Request; - /** - * Retrieves the current run-time configuration for the specified fleet. The run-time configuration tells Amazon GameLift how to launch server processes on instances in the fleet. Fleet-related operations include: CreateFleet ListFleets Describe fleets: DescribeFleetAttributes DescribeFleetPortSettings DescribeFleetUtilization DescribeRuntimeConfiguration DescribeFleetEvents Update fleets: UpdateFleetAttributes UpdateFleetCapacity UpdateFleetPortSettings UpdateRuntimeConfiguration Manage fleet capacity: DescribeFleetCapacity UpdateFleetCapacity PutScalingPolicy (automatic scaling) DescribeScalingPolicies (automatic scaling) DeleteScalingPolicy (automatic scaling) DescribeEC2InstanceLimits DeleteFleet - */ - describeRuntimeConfiguration(callback?: (err: AWSError, data: GameLift.Types.DescribeRuntimeConfigurationOutput) => void): Request; - /** - * Retrieves all scaling policies applied to a fleet. To get a fleet's scaling policies, specify the fleet ID. You can filter this request by policy status, such as to retrieve only active scaling policies. Use the pagination parameters to retrieve results as a set of sequential pages. If successful, set of ScalingPolicy objects is returned for the fleet. Fleet-related operations include: CreateFleet ListFleets Describe fleets: DescribeFleetAttributes DescribeFleetPortSettings DescribeFleetUtilization DescribeRuntimeConfiguration DescribeFleetEvents Update fleets: UpdateFleetAttributes UpdateFleetCapacity UpdateFleetPortSettings UpdateRuntimeConfiguration Manage fleet capacity: DescribeFleetCapacity UpdateFleetCapacity PutScalingPolicy (automatic scaling) DescribeScalingPolicies (automatic scaling) DeleteScalingPolicy (automatic scaling) DescribeEC2InstanceLimits DeleteFleet - */ - describeScalingPolicies(params: GameLift.Types.DescribeScalingPoliciesInput, callback?: (err: AWSError, data: GameLift.Types.DescribeScalingPoliciesOutput) => void): Request; - /** - * Retrieves all scaling policies applied to a fleet. To get a fleet's scaling policies, specify the fleet ID. You can filter this request by policy status, such as to retrieve only active scaling policies. Use the pagination parameters to retrieve results as a set of sequential pages. If successful, set of ScalingPolicy objects is returned for the fleet. Fleet-related operations include: CreateFleet ListFleets Describe fleets: DescribeFleetAttributes DescribeFleetPortSettings DescribeFleetUtilization DescribeRuntimeConfiguration DescribeFleetEvents Update fleets: UpdateFleetAttributes UpdateFleetCapacity UpdateFleetPortSettings UpdateRuntimeConfiguration Manage fleet capacity: DescribeFleetCapacity UpdateFleetCapacity PutScalingPolicy (automatic scaling) DescribeScalingPolicies (automatic scaling) DeleteScalingPolicy (automatic scaling) DescribeEC2InstanceLimits DeleteFleet - */ - describeScalingPolicies(callback?: (err: AWSError, data: GameLift.Types.DescribeScalingPoliciesOutput) => void): Request; - /** - * Retrieves valid VPC peering authorizations that are pending for the AWS account. This operation returns all VPC peering authorizations and requests for peering. This includes those initiated and received by this account. VPC peering connection operations include: CreateVpcPeeringAuthorization DescribeVpcPeeringAuthorizations DeleteVpcPeeringAuthorization CreateVpcPeeringConnection DescribeVpcPeeringConnections DeleteVpcPeeringConnection - */ - describeVpcPeeringAuthorizations(params: GameLift.Types.DescribeVpcPeeringAuthorizationsInput, callback?: (err: AWSError, data: GameLift.Types.DescribeVpcPeeringAuthorizationsOutput) => void): Request; - /** - * Retrieves valid VPC peering authorizations that are pending for the AWS account. This operation returns all VPC peering authorizations and requests for peering. This includes those initiated and received by this account. VPC peering connection operations include: CreateVpcPeeringAuthorization DescribeVpcPeeringAuthorizations DeleteVpcPeeringAuthorization CreateVpcPeeringConnection DescribeVpcPeeringConnections DeleteVpcPeeringConnection - */ - describeVpcPeeringAuthorizations(callback?: (err: AWSError, data: GameLift.Types.DescribeVpcPeeringAuthorizationsOutput) => void): Request; - /** - * Retrieves information on VPC peering connections. Use this operation to get peering information for all fleets or for one specific fleet ID. To retrieve connection information, call this operation from the AWS account that is used to manage the Amazon GameLift fleets. Specify a fleet ID or leave the parameter empty to retrieve all connection records. If successful, the retrieved information includes both active and pending connections. Active connections identify the IpV4 CIDR block that the VPC uses to connect. VPC peering connection operations include: CreateVpcPeeringAuthorization DescribeVpcPeeringAuthorizations DeleteVpcPeeringAuthorization CreateVpcPeeringConnection DescribeVpcPeeringConnections DeleteVpcPeeringConnection - */ - describeVpcPeeringConnections(params: GameLift.Types.DescribeVpcPeeringConnectionsInput, callback?: (err: AWSError, data: GameLift.Types.DescribeVpcPeeringConnectionsOutput) => void): Request; - /** - * Retrieves information on VPC peering connections. Use this operation to get peering information for all fleets or for one specific fleet ID. To retrieve connection information, call this operation from the AWS account that is used to manage the Amazon GameLift fleets. Specify a fleet ID or leave the parameter empty to retrieve all connection records. If successful, the retrieved information includes both active and pending connections. Active connections identify the IpV4 CIDR block that the VPC uses to connect. VPC peering connection operations include: CreateVpcPeeringAuthorization DescribeVpcPeeringAuthorizations DeleteVpcPeeringAuthorization CreateVpcPeeringConnection DescribeVpcPeeringConnections DeleteVpcPeeringConnection - */ - describeVpcPeeringConnections(callback?: (err: AWSError, data: GameLift.Types.DescribeVpcPeeringConnectionsOutput) => void): Request; - /** - * Retrieves the location of stored game session logs for a specified game session. When a game session is terminated, Amazon GameLift automatically stores the logs in Amazon S3 and retains them for 14 days. Use this URL to download the logs. See the AWS Service Limits page for maximum log file sizes. Log files that exceed this limit are not saved. Game-session-related operations include: CreateGameSession DescribeGameSessions DescribeGameSessionDetails SearchGameSessions UpdateGameSession GetGameSessionLogUrl Game session placements StartGameSessionPlacement DescribeGameSessionPlacement StopGameSessionPlacement - */ - getGameSessionLogUrl(params: GameLift.Types.GetGameSessionLogUrlInput, callback?: (err: AWSError, data: GameLift.Types.GetGameSessionLogUrlOutput) => void): Request; - /** - * Retrieves the location of stored game session logs for a specified game session. When a game session is terminated, Amazon GameLift automatically stores the logs in Amazon S3 and retains them for 14 days. Use this URL to download the logs. See the AWS Service Limits page for maximum log file sizes. Log files that exceed this limit are not saved. Game-session-related operations include: CreateGameSession DescribeGameSessions DescribeGameSessionDetails SearchGameSessions UpdateGameSession GetGameSessionLogUrl Game session placements StartGameSessionPlacement DescribeGameSessionPlacement StopGameSessionPlacement - */ - getGameSessionLogUrl(callback?: (err: AWSError, data: GameLift.Types.GetGameSessionLogUrlOutput) => void): Request; - /** - * Requests remote access to a fleet instance. Remote access is useful for debugging, gathering benchmarking data, or watching activity in real time. Access requires credentials that match the operating system of the instance. For a Windows instance, Amazon GameLift returns a user name and password as strings for use with a Windows Remote Desktop client. For a Linux instance, Amazon GameLift returns a user name and RSA private key, also as strings, for use with an SSH client. The private key must be saved in the proper format to a .pem file before using. If you're making this request using the AWS CLI, saving the secret can be handled as part of the GetInstanceAccess request. (See the example later in this topic). For more information on remote access, see Remotely Accessing an Instance. To request access to a specific instance, specify the IDs of the instance and the fleet it belongs to. If successful, an InstanceAccess object is returned containing the instance's IP address and a set of credentials. - */ - getInstanceAccess(params: GameLift.Types.GetInstanceAccessInput, callback?: (err: AWSError, data: GameLift.Types.GetInstanceAccessOutput) => void): Request; - /** - * Requests remote access to a fleet instance. Remote access is useful for debugging, gathering benchmarking data, or watching activity in real time. Access requires credentials that match the operating system of the instance. For a Windows instance, Amazon GameLift returns a user name and password as strings for use with a Windows Remote Desktop client. For a Linux instance, Amazon GameLift returns a user name and RSA private key, also as strings, for use with an SSH client. The private key must be saved in the proper format to a .pem file before using. If you're making this request using the AWS CLI, saving the secret can be handled as part of the GetInstanceAccess request. (See the example later in this topic). For more information on remote access, see Remotely Accessing an Instance. To request access to a specific instance, specify the IDs of the instance and the fleet it belongs to. If successful, an InstanceAccess object is returned containing the instance's IP address and a set of credentials. - */ - getInstanceAccess(callback?: (err: AWSError, data: GameLift.Types.GetInstanceAccessOutput) => void): Request; - /** - * Retrieves all aliases for this AWS account. You can filter the result set by alias name and/or routing strategy type. Use the pagination parameters to retrieve results in sequential pages. Returned aliases are not listed in any particular order. Alias-related operations include: CreateAlias ListAliases DescribeAlias UpdateAlias DeleteAlias ResolveAlias - */ - listAliases(params: GameLift.Types.ListAliasesInput, callback?: (err: AWSError, data: GameLift.Types.ListAliasesOutput) => void): Request; - /** - * Retrieves all aliases for this AWS account. You can filter the result set by alias name and/or routing strategy type. Use the pagination parameters to retrieve results in sequential pages. Returned aliases are not listed in any particular order. Alias-related operations include: CreateAlias ListAliases DescribeAlias UpdateAlias DeleteAlias ResolveAlias - */ - listAliases(callback?: (err: AWSError, data: GameLift.Types.ListAliasesOutput) => void): Request; - /** - * Retrieves build records for all builds associated with the AWS account in use. You can limit results to builds that are in a specific status by using the Status parameter. Use the pagination parameters to retrieve results in a set of sequential pages. Build records are not listed in any particular order. Build-related operations include: CreateBuild ListBuilds DescribeBuild UpdateBuild DeleteBuild - */ - listBuilds(params: GameLift.Types.ListBuildsInput, callback?: (err: AWSError, data: GameLift.Types.ListBuildsOutput) => void): Request; - /** - * Retrieves build records for all builds associated with the AWS account in use. You can limit results to builds that are in a specific status by using the Status parameter. Use the pagination parameters to retrieve results in a set of sequential pages. Build records are not listed in any particular order. Build-related operations include: CreateBuild ListBuilds DescribeBuild UpdateBuild DeleteBuild - */ - listBuilds(callback?: (err: AWSError, data: GameLift.Types.ListBuildsOutput) => void): Request; - /** - * Retrieves a collection of fleet records for this AWS account. You can filter the result set by build ID. Use the pagination parameters to retrieve results in sequential pages. Fleet records are not listed in any particular order. Fleet-related operations include: CreateFleet ListFleets Describe fleets: DescribeFleetAttributes DescribeFleetPortSettings DescribeFleetUtilization DescribeRuntimeConfiguration DescribeFleetEvents Update fleets: UpdateFleetAttributes UpdateFleetCapacity UpdateFleetPortSettings UpdateRuntimeConfiguration Manage fleet capacity: DescribeFleetCapacity UpdateFleetCapacity PutScalingPolicy (automatic scaling) DescribeScalingPolicies (automatic scaling) DeleteScalingPolicy (automatic scaling) DescribeEC2InstanceLimits DeleteFleet - */ - listFleets(params: GameLift.Types.ListFleetsInput, callback?: (err: AWSError, data: GameLift.Types.ListFleetsOutput) => void): Request; - /** - * Retrieves a collection of fleet records for this AWS account. You can filter the result set by build ID. Use the pagination parameters to retrieve results in sequential pages. Fleet records are not listed in any particular order. Fleet-related operations include: CreateFleet ListFleets Describe fleets: DescribeFleetAttributes DescribeFleetPortSettings DescribeFleetUtilization DescribeRuntimeConfiguration DescribeFleetEvents Update fleets: UpdateFleetAttributes UpdateFleetCapacity UpdateFleetPortSettings UpdateRuntimeConfiguration Manage fleet capacity: DescribeFleetCapacity UpdateFleetCapacity PutScalingPolicy (automatic scaling) DescribeScalingPolicies (automatic scaling) DeleteScalingPolicy (automatic scaling) DescribeEC2InstanceLimits DeleteFleet - */ - listFleets(callback?: (err: AWSError, data: GameLift.Types.ListFleetsOutput) => void): Request; - /** - * Creates or updates a scaling policy for a fleet. An active scaling policy prompts Amazon GameLift to track a certain metric for a fleet and automatically change the fleet's capacity in specific circumstances. Each scaling policy contains one rule statement. Fleets can have multiple scaling policies in force simultaneously. A scaling policy rule statement has the following structure: If [MetricName] is [ComparisonOperator] [Threshold] for [EvaluationPeriods] minutes, then [ScalingAdjustmentType] to/by [ScalingAdjustment]. For example, this policy: "If the number of idle instances exceeds 20 for more than 15 minutes, then reduce the fleet capacity by 10 instances" could be implemented as the following rule statement: If [IdleInstances] is [GreaterThanOrEqualToThreshold] [20] for [15] minutes, then [ChangeInCapacity] by [-10]. To create or update a scaling policy, specify a unique combination of name and fleet ID, and set the rule values. All parameters for this action are required. If successful, the policy name is returned. Scaling policies cannot be suspended or made inactive. To stop enforcing a scaling policy, call DeleteScalingPolicy. Fleet-related operations include: CreateFleet ListFleets Describe fleets: DescribeFleetAttributes DescribeFleetPortSettings DescribeFleetUtilization DescribeRuntimeConfiguration DescribeFleetEvents Update fleets: UpdateFleetAttributes UpdateFleetCapacity UpdateFleetPortSettings UpdateRuntimeConfiguration Manage fleet capacity: DescribeFleetCapacity UpdateFleetCapacity PutScalingPolicy (automatic scaling) DescribeScalingPolicies (automatic scaling) DeleteScalingPolicy (automatic scaling) DescribeEC2InstanceLimits DeleteFleet - */ - putScalingPolicy(params: GameLift.Types.PutScalingPolicyInput, callback?: (err: AWSError, data: GameLift.Types.PutScalingPolicyOutput) => void): Request; - /** - * Creates or updates a scaling policy for a fleet. An active scaling policy prompts Amazon GameLift to track a certain metric for a fleet and automatically change the fleet's capacity in specific circumstances. Each scaling policy contains one rule statement. Fleets can have multiple scaling policies in force simultaneously. A scaling policy rule statement has the following structure: If [MetricName] is [ComparisonOperator] [Threshold] for [EvaluationPeriods] minutes, then [ScalingAdjustmentType] to/by [ScalingAdjustment]. For example, this policy: "If the number of idle instances exceeds 20 for more than 15 minutes, then reduce the fleet capacity by 10 instances" could be implemented as the following rule statement: If [IdleInstances] is [GreaterThanOrEqualToThreshold] [20] for [15] minutes, then [ChangeInCapacity] by [-10]. To create or update a scaling policy, specify a unique combination of name and fleet ID, and set the rule values. All parameters for this action are required. If successful, the policy name is returned. Scaling policies cannot be suspended or made inactive. To stop enforcing a scaling policy, call DeleteScalingPolicy. Fleet-related operations include: CreateFleet ListFleets Describe fleets: DescribeFleetAttributes DescribeFleetPortSettings DescribeFleetUtilization DescribeRuntimeConfiguration DescribeFleetEvents Update fleets: UpdateFleetAttributes UpdateFleetCapacity UpdateFleetPortSettings UpdateRuntimeConfiguration Manage fleet capacity: DescribeFleetCapacity UpdateFleetCapacity PutScalingPolicy (automatic scaling) DescribeScalingPolicies (automatic scaling) DeleteScalingPolicy (automatic scaling) DescribeEC2InstanceLimits DeleteFleet - */ - putScalingPolicy(callback?: (err: AWSError, data: GameLift.Types.PutScalingPolicyOutput) => void): Request; - /** - * This API call is not currently in use. Retrieves a fresh set of upload credentials and the assigned Amazon S3 storage location for a specific build. Valid credentials are required to upload your game build files to Amazon S3. - */ - requestUploadCredentials(params: GameLift.Types.RequestUploadCredentialsInput, callback?: (err: AWSError, data: GameLift.Types.RequestUploadCredentialsOutput) => void): Request; - /** - * This API call is not currently in use. Retrieves a fresh set of upload credentials and the assigned Amazon S3 storage location for a specific build. Valid credentials are required to upload your game build files to Amazon S3. - */ - requestUploadCredentials(callback?: (err: AWSError, data: GameLift.Types.RequestUploadCredentialsOutput) => void): Request; - /** - * Retrieves the fleet ID that a specified alias is currently pointing to. Alias-related operations include: CreateAlias ListAliases DescribeAlias UpdateAlias DeleteAlias ResolveAlias - */ - resolveAlias(params: GameLift.Types.ResolveAliasInput, callback?: (err: AWSError, data: GameLift.Types.ResolveAliasOutput) => void): Request; - /** - * Retrieves the fleet ID that a specified alias is currently pointing to. Alias-related operations include: CreateAlias ListAliases DescribeAlias UpdateAlias DeleteAlias ResolveAlias - */ - resolveAlias(callback?: (err: AWSError, data: GameLift.Types.ResolveAliasOutput) => void): Request; - /** - * Retrieves a set of game sessions that match a set of search criteria and sorts them in a specified order. A game session search is limited to a single fleet. Search results include only game sessions that are in ACTIVE status. If you need to retrieve game sessions with a status other than active, use DescribeGameSessions. If you need to retrieve the protection policy for each game session, use DescribeGameSessionDetails. You can search or sort by the following game session attributes: gameSessionId -- Unique identifier for the game session. You can use either a GameSessionId or GameSessionArn value. gameSessionName -- Name assigned to a game session. This value is set when requesting a new game session with CreateGameSession or updating with UpdateGameSession. Game session names do not need to be unique to a game session. creationTimeMillis -- Value indicating when a game session was created. It is expressed in Unix time as milliseconds. playerSessionCount -- Number of players currently connected to a game session. This value changes rapidly as players join the session or drop out. maximumSessions -- Maximum number of player sessions allowed for a game session. This value is set when requesting a new game session with CreateGameSession or updating with UpdateGameSession. hasAvailablePlayerSessions -- Boolean value indicating whether a game session has reached its maximum number of players. When searching with this attribute, the search value must be true or false. It is highly recommended that all search requests include this filter attribute to optimize search performance and return only sessions that players can join. To search or sort, specify either a fleet ID or an alias ID, and provide a search filter expression, a sort expression, or both. Use the pagination parameters to retrieve results as a set of sequential pages. If successful, a collection of GameSession objects matching the request is returned. Returned values for playerSessionCount and hasAvailablePlayerSessions change quickly as players join sessions and others drop out. Results should be considered a snapshot in time. Be sure to refresh search results often, and handle sessions that fill up before a player can join. Game-session-related operations include: CreateGameSession DescribeGameSessions DescribeGameSessionDetails SearchGameSessions UpdateGameSession GetGameSessionLogUrl Game session placements StartGameSessionPlacement DescribeGameSessionPlacement StopGameSessionPlacement - */ - searchGameSessions(params: GameLift.Types.SearchGameSessionsInput, callback?: (err: AWSError, data: GameLift.Types.SearchGameSessionsOutput) => void): Request; - /** - * Retrieves a set of game sessions that match a set of search criteria and sorts them in a specified order. A game session search is limited to a single fleet. Search results include only game sessions that are in ACTIVE status. If you need to retrieve game sessions with a status other than active, use DescribeGameSessions. If you need to retrieve the protection policy for each game session, use DescribeGameSessionDetails. You can search or sort by the following game session attributes: gameSessionId -- Unique identifier for the game session. You can use either a GameSessionId or GameSessionArn value. gameSessionName -- Name assigned to a game session. This value is set when requesting a new game session with CreateGameSession or updating with UpdateGameSession. Game session names do not need to be unique to a game session. creationTimeMillis -- Value indicating when a game session was created. It is expressed in Unix time as milliseconds. playerSessionCount -- Number of players currently connected to a game session. This value changes rapidly as players join the session or drop out. maximumSessions -- Maximum number of player sessions allowed for a game session. This value is set when requesting a new game session with CreateGameSession or updating with UpdateGameSession. hasAvailablePlayerSessions -- Boolean value indicating whether a game session has reached its maximum number of players. When searching with this attribute, the search value must be true or false. It is highly recommended that all search requests include this filter attribute to optimize search performance and return only sessions that players can join. To search or sort, specify either a fleet ID or an alias ID, and provide a search filter expression, a sort expression, or both. Use the pagination parameters to retrieve results as a set of sequential pages. If successful, a collection of GameSession objects matching the request is returned. Returned values for playerSessionCount and hasAvailablePlayerSessions change quickly as players join sessions and others drop out. Results should be considered a snapshot in time. Be sure to refresh search results often, and handle sessions that fill up before a player can join. Game-session-related operations include: CreateGameSession DescribeGameSessions DescribeGameSessionDetails SearchGameSessions UpdateGameSession GetGameSessionLogUrl Game session placements StartGameSessionPlacement DescribeGameSessionPlacement StopGameSessionPlacement - */ - searchGameSessions(callback?: (err: AWSError, data: GameLift.Types.SearchGameSessionsOutput) => void): Request; - /** - * Places a request for a new game session in a queue (see CreateGameSessionQueue). When processing a placement request, Amazon GameLift searches for available resources on the queue's destinations, scanning each until it finds resources or the placement request times out. A game session placement request can also request player sessions. When a new game session is successfully created, Amazon GameLift creates a player session for each player included in the request. When placing a game session, by default Amazon GameLift tries each fleet in the order they are listed in the queue configuration. Ideally, a queue's destinations are listed in preference order. Alternatively, when requesting a game session with players, you can also provide latency data for each player in relevant regions. Latency data indicates the performance lag a player experiences when connected to a fleet in the region. Amazon GameLift uses latency data to reorder the list of destinations to place the game session in a region with minimal lag. If latency data is provided for multiple players, Amazon GameLift calculates each region's average lag for all players and reorders to get the best game play across all players. To place a new game session request, specify the following: The queue name and a set of game session properties and settings A unique ID (such as a UUID) for the placement. You use this ID to track the status of the placement request (Optional) A set of IDs and player data for each player you want to join to the new game session Latency data for all players (if you want to optimize game play for the players) If successful, a new game session placement is created. To track the status of a placement request, call DescribeGameSessionPlacement and check the request's status. If the status is FULFILLED, a new game session has been created and a game session ARN and region are referenced. If the placement request times out, you can resubmit the request or retry it with a different queue. Game-session-related operations include: CreateGameSession DescribeGameSessions DescribeGameSessionDetails SearchGameSessions UpdateGameSession GetGameSessionLogUrl Game session placements StartGameSessionPlacement DescribeGameSessionPlacement StopGameSessionPlacement - */ - startGameSessionPlacement(params: GameLift.Types.StartGameSessionPlacementInput, callback?: (err: AWSError, data: GameLift.Types.StartGameSessionPlacementOutput) => void): Request; - /** - * Places a request for a new game session in a queue (see CreateGameSessionQueue). When processing a placement request, Amazon GameLift searches for available resources on the queue's destinations, scanning each until it finds resources or the placement request times out. A game session placement request can also request player sessions. When a new game session is successfully created, Amazon GameLift creates a player session for each player included in the request. When placing a game session, by default Amazon GameLift tries each fleet in the order they are listed in the queue configuration. Ideally, a queue's destinations are listed in preference order. Alternatively, when requesting a game session with players, you can also provide latency data for each player in relevant regions. Latency data indicates the performance lag a player experiences when connected to a fleet in the region. Amazon GameLift uses latency data to reorder the list of destinations to place the game session in a region with minimal lag. If latency data is provided for multiple players, Amazon GameLift calculates each region's average lag for all players and reorders to get the best game play across all players. To place a new game session request, specify the following: The queue name and a set of game session properties and settings A unique ID (such as a UUID) for the placement. You use this ID to track the status of the placement request (Optional) A set of IDs and player data for each player you want to join to the new game session Latency data for all players (if you want to optimize game play for the players) If successful, a new game session placement is created. To track the status of a placement request, call DescribeGameSessionPlacement and check the request's status. If the status is FULFILLED, a new game session has been created and a game session ARN and region are referenced. If the placement request times out, you can resubmit the request or retry it with a different queue. Game-session-related operations include: CreateGameSession DescribeGameSessions DescribeGameSessionDetails SearchGameSessions UpdateGameSession GetGameSessionLogUrl Game session placements StartGameSessionPlacement DescribeGameSessionPlacement StopGameSessionPlacement - */ - startGameSessionPlacement(callback?: (err: AWSError, data: GameLift.Types.StartGameSessionPlacementOutput) => void): Request; - /** - * Uses FlexMatch to create a game match for a group of players based on custom matchmaking rules, and starts a new game for the matched players. Each matchmaking request specifies the type of match to build (team configuration, rules for an acceptable match, etc.). The request also specifies the players to find a match for and where to host the new game session for optimal performance. A matchmaking request might start with a single player or a group of players who want to play together. FlexMatch finds additional players as needed to fill the match. Match type, rules, and the queue used to place a new game session are defined in a MatchmakingConfiguration. For complete information on setting up and using FlexMatch, see the topic Adding FlexMatch to Your Game. To start matchmaking, provide a unique ticket ID, specify a matchmaking configuration, and include the players to be matched. You must also include a set of player attributes relevant for the matchmaking configuration. If successful, a matchmaking ticket is returned with status set to QUEUED. Track the status of the ticket to respond as needed and acquire game session connection information for successfully completed matches. Tracking ticket status -- A couple of options are available for tracking the status of matchmaking requests: Polling -- Call DescribeMatchmaking. This operation returns the full ticket object, including current status and (for completed tickets) game session connection info. We recommend polling no more than once every 10 seconds. Notifications -- Get event notifications for changes in ticket status using Amazon Simple Notification Service (SNS). Notifications are easy to set up (see CreateMatchmakingConfiguration) and typically deliver match status changes faster and more efficiently than polling. We recommend that you use polling to back up to notifications (since delivery is not guaranteed) and call DescribeMatchmaking only when notifications are not received within 30 seconds. Processing a matchmaking request -- FlexMatch handles a matchmaking request as follows: Your client code submits a StartMatchmaking request for one or more players and tracks the status of the request ticket. FlexMatch uses this ticket and others in process to build an acceptable match. When a potential match is identified, all tickets in the proposed match are advanced to the next status. If the match requires player acceptance (set in the matchmaking configuration), the tickets move into status REQUIRES_ACCEPTANCE. This status triggers your client code to solicit acceptance from all players in every ticket involved in the match, and then call AcceptMatch for each player. If any player rejects or fails to accept the match before a specified timeout, the proposed match is dropped (see AcceptMatch for more details). Once a match is proposed and accepted, the matchmaking tickets move into status PLACING. FlexMatch locates resources for a new game session using the game session queue (set in the matchmaking configuration) and creates the game session based on the match data. When the match is successfully placed, the matchmaking tickets move into COMPLETED status. Connection information (including game session endpoint and player session) is added to the matchmaking tickets. Matched players can use the connection information to join the game. Matchmaking-related operations include: StartMatchmaking DescribeMatchmaking StopMatchmaking AcceptMatch - */ - startMatchmaking(params: GameLift.Types.StartMatchmakingInput, callback?: (err: AWSError, data: GameLift.Types.StartMatchmakingOutput) => void): Request; - /** - * Uses FlexMatch to create a game match for a group of players based on custom matchmaking rules, and starts a new game for the matched players. Each matchmaking request specifies the type of match to build (team configuration, rules for an acceptable match, etc.). The request also specifies the players to find a match for and where to host the new game session for optimal performance. A matchmaking request might start with a single player or a group of players who want to play together. FlexMatch finds additional players as needed to fill the match. Match type, rules, and the queue used to place a new game session are defined in a MatchmakingConfiguration. For complete information on setting up and using FlexMatch, see the topic Adding FlexMatch to Your Game. To start matchmaking, provide a unique ticket ID, specify a matchmaking configuration, and include the players to be matched. You must also include a set of player attributes relevant for the matchmaking configuration. If successful, a matchmaking ticket is returned with status set to QUEUED. Track the status of the ticket to respond as needed and acquire game session connection information for successfully completed matches. Tracking ticket status -- A couple of options are available for tracking the status of matchmaking requests: Polling -- Call DescribeMatchmaking. This operation returns the full ticket object, including current status and (for completed tickets) game session connection info. We recommend polling no more than once every 10 seconds. Notifications -- Get event notifications for changes in ticket status using Amazon Simple Notification Service (SNS). Notifications are easy to set up (see CreateMatchmakingConfiguration) and typically deliver match status changes faster and more efficiently than polling. We recommend that you use polling to back up to notifications (since delivery is not guaranteed) and call DescribeMatchmaking only when notifications are not received within 30 seconds. Processing a matchmaking request -- FlexMatch handles a matchmaking request as follows: Your client code submits a StartMatchmaking request for one or more players and tracks the status of the request ticket. FlexMatch uses this ticket and others in process to build an acceptable match. When a potential match is identified, all tickets in the proposed match are advanced to the next status. If the match requires player acceptance (set in the matchmaking configuration), the tickets move into status REQUIRES_ACCEPTANCE. This status triggers your client code to solicit acceptance from all players in every ticket involved in the match, and then call AcceptMatch for each player. If any player rejects or fails to accept the match before a specified timeout, the proposed match is dropped (see AcceptMatch for more details). Once a match is proposed and accepted, the matchmaking tickets move into status PLACING. FlexMatch locates resources for a new game session using the game session queue (set in the matchmaking configuration) and creates the game session based on the match data. When the match is successfully placed, the matchmaking tickets move into COMPLETED status. Connection information (including game session endpoint and player session) is added to the matchmaking tickets. Matched players can use the connection information to join the game. Matchmaking-related operations include: StartMatchmaking DescribeMatchmaking StopMatchmaking AcceptMatch - */ - startMatchmaking(callback?: (err: AWSError, data: GameLift.Types.StartMatchmakingOutput) => void): Request; - /** - * Cancels a game session placement that is in PENDING status. To stop a placement, provide the placement ID values. If successful, the placement is moved to CANCELLED status. Game-session-related operations include: CreateGameSession DescribeGameSessions DescribeGameSessionDetails SearchGameSessions UpdateGameSession GetGameSessionLogUrl Game session placements StartGameSessionPlacement DescribeGameSessionPlacement StopGameSessionPlacement - */ - stopGameSessionPlacement(params: GameLift.Types.StopGameSessionPlacementInput, callback?: (err: AWSError, data: GameLift.Types.StopGameSessionPlacementOutput) => void): Request; - /** - * Cancels a game session placement that is in PENDING status. To stop a placement, provide the placement ID values. If successful, the placement is moved to CANCELLED status. Game-session-related operations include: CreateGameSession DescribeGameSessions DescribeGameSessionDetails SearchGameSessions UpdateGameSession GetGameSessionLogUrl Game session placements StartGameSessionPlacement DescribeGameSessionPlacement StopGameSessionPlacement - */ - stopGameSessionPlacement(callback?: (err: AWSError, data: GameLift.Types.StopGameSessionPlacementOutput) => void): Request; - /** - * Cancels a matchmaking ticket that is currently being processed. To stop the matchmaking operation, specify the ticket ID. If successful, work on the ticket is stopped, and the ticket status is changed to CANCELLED. Matchmaking-related operations include: StartMatchmaking DescribeMatchmaking StopMatchmaking AcceptMatch - */ - stopMatchmaking(params: GameLift.Types.StopMatchmakingInput, callback?: (err: AWSError, data: GameLift.Types.StopMatchmakingOutput) => void): Request; - /** - * Cancels a matchmaking ticket that is currently being processed. To stop the matchmaking operation, specify the ticket ID. If successful, work on the ticket is stopped, and the ticket status is changed to CANCELLED. Matchmaking-related operations include: StartMatchmaking DescribeMatchmaking StopMatchmaking AcceptMatch - */ - stopMatchmaking(callback?: (err: AWSError, data: GameLift.Types.StopMatchmakingOutput) => void): Request; - /** - * Updates properties for an alias. To update properties, specify the alias ID to be updated and provide the information to be changed. To reassign an alias to another fleet, provide an updated routing strategy. If successful, the updated alias record is returned. Alias-related operations include: CreateAlias ListAliases DescribeAlias UpdateAlias DeleteAlias ResolveAlias - */ - updateAlias(params: GameLift.Types.UpdateAliasInput, callback?: (err: AWSError, data: GameLift.Types.UpdateAliasOutput) => void): Request; - /** - * Updates properties for an alias. To update properties, specify the alias ID to be updated and provide the information to be changed. To reassign an alias to another fleet, provide an updated routing strategy. If successful, the updated alias record is returned. Alias-related operations include: CreateAlias ListAliases DescribeAlias UpdateAlias DeleteAlias ResolveAlias - */ - updateAlias(callback?: (err: AWSError, data: GameLift.Types.UpdateAliasOutput) => void): Request; - /** - * Updates metadata in a build record, including the build name and version. To update the metadata, specify the build ID to update and provide the new values. If successful, a build object containing the updated metadata is returned. Build-related operations include: CreateBuild ListBuilds DescribeBuild UpdateBuild DeleteBuild - */ - updateBuild(params: GameLift.Types.UpdateBuildInput, callback?: (err: AWSError, data: GameLift.Types.UpdateBuildOutput) => void): Request; - /** - * Updates metadata in a build record, including the build name and version. To update the metadata, specify the build ID to update and provide the new values. If successful, a build object containing the updated metadata is returned. Build-related operations include: CreateBuild ListBuilds DescribeBuild UpdateBuild DeleteBuild - */ - updateBuild(callback?: (err: AWSError, data: GameLift.Types.UpdateBuildOutput) => void): Request; - /** - * Updates fleet properties, including name and description, for a fleet. To update metadata, specify the fleet ID and the property values that you want to change. If successful, the fleet ID for the updated fleet is returned. Fleet-related operations include: CreateFleet ListFleets Describe fleets: DescribeFleetAttributes DescribeFleetPortSettings DescribeFleetUtilization DescribeRuntimeConfiguration DescribeFleetEvents Update fleets: UpdateFleetAttributes UpdateFleetCapacity UpdateFleetPortSettings UpdateRuntimeConfiguration Manage fleet capacity: DescribeFleetCapacity UpdateFleetCapacity PutScalingPolicy (automatic scaling) DescribeScalingPolicies (automatic scaling) DeleteScalingPolicy (automatic scaling) DescribeEC2InstanceLimits DeleteFleet - */ - updateFleetAttributes(params: GameLift.Types.UpdateFleetAttributesInput, callback?: (err: AWSError, data: GameLift.Types.UpdateFleetAttributesOutput) => void): Request; - /** - * Updates fleet properties, including name and description, for a fleet. To update metadata, specify the fleet ID and the property values that you want to change. If successful, the fleet ID for the updated fleet is returned. Fleet-related operations include: CreateFleet ListFleets Describe fleets: DescribeFleetAttributes DescribeFleetPortSettings DescribeFleetUtilization DescribeRuntimeConfiguration DescribeFleetEvents Update fleets: UpdateFleetAttributes UpdateFleetCapacity UpdateFleetPortSettings UpdateRuntimeConfiguration Manage fleet capacity: DescribeFleetCapacity UpdateFleetCapacity PutScalingPolicy (automatic scaling) DescribeScalingPolicies (automatic scaling) DeleteScalingPolicy (automatic scaling) DescribeEC2InstanceLimits DeleteFleet - */ - updateFleetAttributes(callback?: (err: AWSError, data: GameLift.Types.UpdateFleetAttributesOutput) => void): Request; - /** - * Updates capacity settings for a fleet. Use this action to specify the number of EC2 instances (hosts) that you want this fleet to contain. Before calling this action, you may want to call DescribeEC2InstanceLimits to get the maximum capacity based on the fleet's EC2 instance type. If you're using autoscaling (see PutScalingPolicy), you may want to specify a minimum and/or maximum capacity. If you don't provide these, autoscaling can set capacity anywhere between zero and the service limits. To update fleet capacity, specify the fleet ID and the number of instances you want the fleet to host. If successful, Amazon GameLift starts or terminates instances so that the fleet's active instance count matches the desired instance count. You can view a fleet's current capacity information by calling DescribeFleetCapacity. If the desired instance count is higher than the instance type's limit, the "Limit Exceeded" exception occurs. Fleet-related operations include: CreateFleet ListFleets Describe fleets: DescribeFleetAttributes DescribeFleetPortSettings DescribeFleetUtilization DescribeRuntimeConfiguration DescribeFleetEvents Update fleets: UpdateFleetAttributes UpdateFleetCapacity UpdateFleetPortSettings UpdateRuntimeConfiguration Manage fleet capacity: DescribeFleetCapacity UpdateFleetCapacity PutScalingPolicy (automatic scaling) DescribeScalingPolicies (automatic scaling) DeleteScalingPolicy (automatic scaling) DescribeEC2InstanceLimits DeleteFleet - */ - updateFleetCapacity(params: GameLift.Types.UpdateFleetCapacityInput, callback?: (err: AWSError, data: GameLift.Types.UpdateFleetCapacityOutput) => void): Request; - /** - * Updates capacity settings for a fleet. Use this action to specify the number of EC2 instances (hosts) that you want this fleet to contain. Before calling this action, you may want to call DescribeEC2InstanceLimits to get the maximum capacity based on the fleet's EC2 instance type. If you're using autoscaling (see PutScalingPolicy), you may want to specify a minimum and/or maximum capacity. If you don't provide these, autoscaling can set capacity anywhere between zero and the service limits. To update fleet capacity, specify the fleet ID and the number of instances you want the fleet to host. If successful, Amazon GameLift starts or terminates instances so that the fleet's active instance count matches the desired instance count. You can view a fleet's current capacity information by calling DescribeFleetCapacity. If the desired instance count is higher than the instance type's limit, the "Limit Exceeded" exception occurs. Fleet-related operations include: CreateFleet ListFleets Describe fleets: DescribeFleetAttributes DescribeFleetPortSettings DescribeFleetUtilization DescribeRuntimeConfiguration DescribeFleetEvents Update fleets: UpdateFleetAttributes UpdateFleetCapacity UpdateFleetPortSettings UpdateRuntimeConfiguration Manage fleet capacity: DescribeFleetCapacity UpdateFleetCapacity PutScalingPolicy (automatic scaling) DescribeScalingPolicies (automatic scaling) DeleteScalingPolicy (automatic scaling) DescribeEC2InstanceLimits DeleteFleet - */ - updateFleetCapacity(callback?: (err: AWSError, data: GameLift.Types.UpdateFleetCapacityOutput) => void): Request; - /** - * Updates port settings for a fleet. To update settings, specify the fleet ID to be updated and list the permissions you want to update. List the permissions you want to add in InboundPermissionAuthorizations, and permissions you want to remove in InboundPermissionRevocations. Permissions to be removed must match existing fleet permissions. If successful, the fleet ID for the updated fleet is returned. Fleet-related operations include: CreateFleet ListFleets Describe fleets: DescribeFleetAttributes DescribeFleetPortSettings DescribeFleetUtilization DescribeRuntimeConfiguration DescribeFleetEvents Update fleets: UpdateFleetAttributes UpdateFleetCapacity UpdateFleetPortSettings UpdateRuntimeConfiguration Manage fleet capacity: DescribeFleetCapacity UpdateFleetCapacity PutScalingPolicy (automatic scaling) DescribeScalingPolicies (automatic scaling) DeleteScalingPolicy (automatic scaling) DescribeEC2InstanceLimits DeleteFleet - */ - updateFleetPortSettings(params: GameLift.Types.UpdateFleetPortSettingsInput, callback?: (err: AWSError, data: GameLift.Types.UpdateFleetPortSettingsOutput) => void): Request; - /** - * Updates port settings for a fleet. To update settings, specify the fleet ID to be updated and list the permissions you want to update. List the permissions you want to add in InboundPermissionAuthorizations, and permissions you want to remove in InboundPermissionRevocations. Permissions to be removed must match existing fleet permissions. If successful, the fleet ID for the updated fleet is returned. Fleet-related operations include: CreateFleet ListFleets Describe fleets: DescribeFleetAttributes DescribeFleetPortSettings DescribeFleetUtilization DescribeRuntimeConfiguration DescribeFleetEvents Update fleets: UpdateFleetAttributes UpdateFleetCapacity UpdateFleetPortSettings UpdateRuntimeConfiguration Manage fleet capacity: DescribeFleetCapacity UpdateFleetCapacity PutScalingPolicy (automatic scaling) DescribeScalingPolicies (automatic scaling) DeleteScalingPolicy (automatic scaling) DescribeEC2InstanceLimits DeleteFleet - */ - updateFleetPortSettings(callback?: (err: AWSError, data: GameLift.Types.UpdateFleetPortSettingsOutput) => void): Request; - /** - * Updates game session properties. This includes the session name, maximum player count, protection policy, which controls whether or not an active game session can be terminated during a scale-down event, and the player session creation policy, which controls whether or not new players can join the session. To update a game session, specify the game session ID and the values you want to change. If successful, an updated GameSession object is returned. Game-session-related operations include: CreateGameSession DescribeGameSessions DescribeGameSessionDetails SearchGameSessions UpdateGameSession GetGameSessionLogUrl Game session placements StartGameSessionPlacement DescribeGameSessionPlacement StopGameSessionPlacement - */ - updateGameSession(params: GameLift.Types.UpdateGameSessionInput, callback?: (err: AWSError, data: GameLift.Types.UpdateGameSessionOutput) => void): Request; - /** - * Updates game session properties. This includes the session name, maximum player count, protection policy, which controls whether or not an active game session can be terminated during a scale-down event, and the player session creation policy, which controls whether or not new players can join the session. To update a game session, specify the game session ID and the values you want to change. If successful, an updated GameSession object is returned. Game-session-related operations include: CreateGameSession DescribeGameSessions DescribeGameSessionDetails SearchGameSessions UpdateGameSession GetGameSessionLogUrl Game session placements StartGameSessionPlacement DescribeGameSessionPlacement StopGameSessionPlacement - */ - updateGameSession(callback?: (err: AWSError, data: GameLift.Types.UpdateGameSessionOutput) => void): Request; - /** - * Updates settings for a game session queue, which determines how new game session requests in the queue are processed. To update settings, specify the queue name to be updated and provide the new settings. When updating destinations, provide a complete list of destinations. Queue-related operations include: CreateGameSessionQueue DescribeGameSessionQueues UpdateGameSessionQueue DeleteGameSessionQueue - */ - updateGameSessionQueue(params: GameLift.Types.UpdateGameSessionQueueInput, callback?: (err: AWSError, data: GameLift.Types.UpdateGameSessionQueueOutput) => void): Request; - /** - * Updates settings for a game session queue, which determines how new game session requests in the queue are processed. To update settings, specify the queue name to be updated and provide the new settings. When updating destinations, provide a complete list of destinations. Queue-related operations include: CreateGameSessionQueue DescribeGameSessionQueues UpdateGameSessionQueue DeleteGameSessionQueue - */ - updateGameSessionQueue(callback?: (err: AWSError, data: GameLift.Types.UpdateGameSessionQueueOutput) => void): Request; - /** - * Updates settings for a FlexMatch matchmaking configuration. To update settings, specify the configuration name to be updated and provide the new settings. Operations related to match configurations and rule sets include: CreateMatchmakingConfiguration DescribeMatchmakingConfigurations UpdateMatchmakingConfiguration DeleteMatchmakingConfiguration CreateMatchmakingRuleSet DescribeMatchmakingRuleSets ValidateMatchmakingRuleSet - */ - updateMatchmakingConfiguration(params: GameLift.Types.UpdateMatchmakingConfigurationInput, callback?: (err: AWSError, data: GameLift.Types.UpdateMatchmakingConfigurationOutput) => void): Request; - /** - * Updates settings for a FlexMatch matchmaking configuration. To update settings, specify the configuration name to be updated and provide the new settings. Operations related to match configurations and rule sets include: CreateMatchmakingConfiguration DescribeMatchmakingConfigurations UpdateMatchmakingConfiguration DeleteMatchmakingConfiguration CreateMatchmakingRuleSet DescribeMatchmakingRuleSets ValidateMatchmakingRuleSet - */ - updateMatchmakingConfiguration(callback?: (err: AWSError, data: GameLift.Types.UpdateMatchmakingConfigurationOutput) => void): Request; - /** - * Updates the current run-time configuration for the specified fleet, which tells Amazon GameLift how to launch server processes on instances in the fleet. You can update a fleet's run-time configuration at any time after the fleet is created; it does not need to be in an ACTIVE status. To update run-time configuration, specify the fleet ID and provide a RuntimeConfiguration object with the updated collection of server process configurations. Each instance in a Amazon GameLift fleet checks regularly for an updated run-time configuration and changes how it launches server processes to comply with the latest version. Existing server processes are not affected by the update; they continue to run until they end, while Amazon GameLift simply adds new server processes to fit the current run-time configuration. As a result, the run-time configuration changes are applied gradually as existing processes shut down and new processes are launched in Amazon GameLift's normal process recycling activity. Fleet-related operations include: CreateFleet ListFleets Describe fleets: DescribeFleetAttributes DescribeFleetPortSettings DescribeFleetUtilization DescribeRuntimeConfiguration DescribeFleetEvents Update fleets: UpdateFleetAttributes UpdateFleetCapacity UpdateFleetPortSettings UpdateRuntimeConfiguration Manage fleet capacity: DescribeFleetCapacity UpdateFleetCapacity PutScalingPolicy (automatic scaling) DescribeScalingPolicies (automatic scaling) DeleteScalingPolicy (automatic scaling) DescribeEC2InstanceLimits DeleteFleet - */ - updateRuntimeConfiguration(params: GameLift.Types.UpdateRuntimeConfigurationInput, callback?: (err: AWSError, data: GameLift.Types.UpdateRuntimeConfigurationOutput) => void): Request; - /** - * Updates the current run-time configuration for the specified fleet, which tells Amazon GameLift how to launch server processes on instances in the fleet. You can update a fleet's run-time configuration at any time after the fleet is created; it does not need to be in an ACTIVE status. To update run-time configuration, specify the fleet ID and provide a RuntimeConfiguration object with the updated collection of server process configurations. Each instance in a Amazon GameLift fleet checks regularly for an updated run-time configuration and changes how it launches server processes to comply with the latest version. Existing server processes are not affected by the update; they continue to run until they end, while Amazon GameLift simply adds new server processes to fit the current run-time configuration. As a result, the run-time configuration changes are applied gradually as existing processes shut down and new processes are launched in Amazon GameLift's normal process recycling activity. Fleet-related operations include: CreateFleet ListFleets Describe fleets: DescribeFleetAttributes DescribeFleetPortSettings DescribeFleetUtilization DescribeRuntimeConfiguration DescribeFleetEvents Update fleets: UpdateFleetAttributes UpdateFleetCapacity UpdateFleetPortSettings UpdateRuntimeConfiguration Manage fleet capacity: DescribeFleetCapacity UpdateFleetCapacity PutScalingPolicy (automatic scaling) DescribeScalingPolicies (automatic scaling) DeleteScalingPolicy (automatic scaling) DescribeEC2InstanceLimits DeleteFleet - */ - updateRuntimeConfiguration(callback?: (err: AWSError, data: GameLift.Types.UpdateRuntimeConfigurationOutput) => void): Request; - /** - * Validates the syntax of a matchmaking rule or rule set. This operation checks that the rule set uses syntactically correct JSON and that it conforms to allowed property expressions. To validate syntax, provide a rule set string. Operations related to match configurations and rule sets include: CreateMatchmakingConfiguration DescribeMatchmakingConfigurations UpdateMatchmakingConfiguration DeleteMatchmakingConfiguration CreateMatchmakingRuleSet DescribeMatchmakingRuleSets ValidateMatchmakingRuleSet - */ - validateMatchmakingRuleSet(params: GameLift.Types.ValidateMatchmakingRuleSetInput, callback?: (err: AWSError, data: GameLift.Types.ValidateMatchmakingRuleSetOutput) => void): Request; - /** - * Validates the syntax of a matchmaking rule or rule set. This operation checks that the rule set uses syntactically correct JSON and that it conforms to allowed property expressions. To validate syntax, provide a rule set string. Operations related to match configurations and rule sets include: CreateMatchmakingConfiguration DescribeMatchmakingConfigurations UpdateMatchmakingConfiguration DeleteMatchmakingConfiguration CreateMatchmakingRuleSet DescribeMatchmakingRuleSets ValidateMatchmakingRuleSet - */ - validateMatchmakingRuleSet(callback?: (err: AWSError, data: GameLift.Types.ValidateMatchmakingRuleSetOutput) => void): Request; -} -declare namespace GameLift { - export interface AcceptMatchInput { - /** - * Unique identifier for a matchmaking ticket. The ticket must be in status REQUIRES_ACCEPTANCE; otherwise this request will fail. - */ - TicketId: MatchmakingIdStringModel; - /** - * Unique identifier for a player delivering the response. This parameter can include one or multiple player IDs. - */ - PlayerIds: MatchmakingPlayerIdList; - /** - * Player response to the proposed match. - */ - AcceptanceType: AcceptanceType; - } - export interface AcceptMatchOutput { - } - export type AcceptanceType = "ACCEPT"|"REJECT"|string; - export interface Alias { - /** - * Unique identifier for an alias; alias IDs are unique within a region. - */ - AliasId?: AliasId; - /** - * Descriptive label that is associated with an alias. Alias names do not need to be unique. - */ - Name?: NonBlankAndLengthConstraintString; - /** - * Unique identifier for an alias; alias ARNs are unique across all regions. - */ - AliasArn?: ArnStringModel; - /** - * Human-readable description of an alias. - */ - Description?: FreeText; - /** - * Alias configuration for the alias, including routing type and settings. - */ - RoutingStrategy?: RoutingStrategy; - /** - * Time stamp indicating when this data object was created. Format is a number expressed in Unix time as milliseconds (for example "1469498468.057"). - */ - CreationTime?: Timestamp; - /** - * Time stamp indicating when this data object was last modified. Format is a number expressed in Unix time as milliseconds (for example "1469498468.057"). - */ - LastUpdatedTime?: Timestamp; - } - export type AliasId = string; - export type AliasList = Alias[]; - export type ArnStringModel = string; - export interface AttributeValue { - /** - * For single string values. Maximum string length is 100 characters. - */ - S?: NonZeroAndMaxString; - /** - * For number values, expressed as double. - */ - N?: DoubleObject; - /** - * For a list of up to 10 strings. Maximum length for each string is 100 characters. Duplicate values are not recognized; all occurrences of the repeated value after the first of a repeated value are ignored. - */ - SL?: StringList; - /** - * For a map of up to 10 type:value pairs. Maximum length for each string value is 100 characters. - */ - SDM?: StringDoubleMap; - } - export interface AwsCredentials { - /** - * Temporary key allowing access to the Amazon GameLift S3 account. - */ - AccessKeyId?: NonEmptyString; - /** - * Temporary secret key allowing access to the Amazon GameLift S3 account. - */ - SecretAccessKey?: NonEmptyString; - /** - * Token used to associate a specific build ID with the files uploaded using these credentials. - */ - SessionToken?: NonEmptyString; - } - export type Boolean = boolean; - export interface Build { - /** - * Unique identifier for a build. - */ - BuildId?: BuildId; - /** - * Descriptive label that is associated with a build. Build names do not need to be unique. It can be set using CreateBuild or UpdateBuild. - */ - Name?: FreeText; - /** - * Version that is associated with this build. Version strings do not need to be unique. This value can be set using CreateBuild or UpdateBuild. - */ - Version?: FreeText; - /** - * Current status of the build. Possible build statuses include the following: INITIALIZED -- A new build has been defined, but no files have been uploaded. You cannot create fleets for builds that are in this status. When a build is successfully created, the build status is set to this value. READY -- The game build has been successfully uploaded. You can now create new fleets for this build. FAILED -- The game build upload failed. You cannot create new fleets for this build. - */ - Status?: BuildStatus; - /** - * File size of the uploaded game build, expressed in bytes. When the build status is INITIALIZED, this value is 0. - */ - SizeOnDisk?: PositiveLong; - /** - * Operating system that the game server binaries are built to run on. This value determines the type of fleet resources that you can use for this build. - */ - OperatingSystem?: OperatingSystem; - /** - * Time stamp indicating when this data object was created. Format is a number expressed in Unix time as milliseconds (for example "1469498468.057"). - */ - CreationTime?: Timestamp; - } - export type BuildId = string; - export type BuildList = Build[]; - export type BuildStatus = "INITIALIZED"|"READY"|"FAILED"|string; - export type ComparisonOperatorType = "GreaterThanOrEqualToThreshold"|"GreaterThanThreshold"|"LessThanThreshold"|"LessThanOrEqualToThreshold"|string; - export interface CreateAliasInput { - /** - * Descriptive label that is associated with an alias. Alias names do not need to be unique. - */ - Name: NonBlankAndLengthConstraintString; - /** - * Human-readable description of an alias. - */ - Description?: NonZeroAndMaxString; - /** - * Object that specifies the fleet and routing type to use for the alias. - */ - RoutingStrategy: RoutingStrategy; - } - export interface CreateAliasOutput { - /** - * Object that describes the newly created alias record. - */ - Alias?: Alias; - } - export interface CreateBuildInput { - /** - * Descriptive label that is associated with a build. Build names do not need to be unique. You can use UpdateBuild to change this value later. - */ - Name?: NonZeroAndMaxString; - /** - * Version that is associated with this build. Version strings do not need to be unique. You can use UpdateBuild to change this value later. - */ - Version?: NonZeroAndMaxString; - /** - * Amazon S3 location of the game build files to be uploaded. The S3 bucket must be owned by the same AWS account that you're using to manage Amazon GameLift. It also must in the same region that you want to create a new build in. Before calling CreateBuild with this location, you must allow Amazon GameLift to access your Amazon S3 bucket (see Create a Build with Files in Amazon S3). - */ - StorageLocation?: S3Location; - /** - * Operating system that the game server binaries are built to run on. This value determines the type of fleet resources that you can use for this build. If your game build contains multiple executables, they all must run on the same operating system. - */ - OperatingSystem?: OperatingSystem; - } - export interface CreateBuildOutput { - /** - * The newly created build record, including a unique build ID and status. - */ - Build?: Build; - /** - * This element is not currently in use. - */ - UploadCredentials?: AwsCredentials; - /** - * Amazon S3 location specified in the request. - */ - StorageLocation?: S3Location; - } - export interface CreateFleetInput { - /** - * Descriptive label that is associated with a fleet. Fleet names do not need to be unique. - */ - Name: NonZeroAndMaxString; - /** - * Human-readable description of a fleet. - */ - Description?: NonZeroAndMaxString; - /** - * Unique identifier for a build to be deployed on the new fleet. The build must have been successfully uploaded to Amazon GameLift and be in a READY status. This fleet setting cannot be changed once the fleet is created. - */ - BuildId: BuildId; - /** - * This parameter is no longer used. Instead, specify a server launch path using the RuntimeConfiguration parameter. (Requests that specify a server launch path and launch parameters instead of a run-time configuration will continue to work.) - */ - ServerLaunchPath?: NonZeroAndMaxString; - /** - * This parameter is no longer used. Instead, specify server launch parameters in the RuntimeConfiguration parameter. (Requests that specify a server launch path and launch parameters instead of a run-time configuration will continue to work.) - */ - ServerLaunchParameters?: NonZeroAndMaxString; - /** - * This parameter is no longer used. Instead, to specify where Amazon GameLift should store log files once a server process shuts down, use the Amazon GameLift server API ProcessReady() and specify one or more directory paths in logParameters. See more information in the Server API Reference. - */ - LogPaths?: StringList; - /** - * Name of an EC2 instance type that is supported in Amazon GameLift. A fleet instance type determines the computing resources of each instance in the fleet, including CPU, memory, storage, and networking capacity. Amazon GameLift supports the following EC2 instance types. See Amazon EC2 Instance Types for detailed descriptions. - */ - EC2InstanceType: EC2InstanceType; - /** - * Range of IP addresses and port settings that permit inbound traffic to access server processes running on the fleet. If no inbound permissions are set, including both IP address range and port range, the server processes in the fleet cannot accept connections. You can specify one or more sets of permissions for a fleet. - */ - EC2InboundPermissions?: IpPermissionsList; - /** - * Game session protection policy to apply to all instances in this fleet. If this parameter is not set, instances in this fleet default to no protection. You can change a fleet's protection policy using UpdateFleetAttributes, but this change will only affect sessions created after the policy change. You can also set protection for individual instances using UpdateGameSession. NoProtection -- The game session can be terminated during a scale-down event. FullProtection -- If the game session is in an ACTIVE status, it cannot be terminated during a scale-down event. - */ - NewGameSessionProtectionPolicy?: ProtectionPolicy; - /** - * Instructions for launching server processes on each instance in the fleet. The run-time configuration for a fleet has a collection of server process configurations, one for each type of server process to run on an instance. A server process configuration specifies the location of the server executable, launch parameters, and the number of concurrent processes with that configuration to maintain on each instance. A CreateFleet request must include a run-time configuration with at least one server process configuration; otherwise the request fails with an invalid request exception. (This parameter replaces the parameters ServerLaunchPath and ServerLaunchParameters; requests that contain values for these parameters instead of a run-time configuration will continue to work.) - */ - RuntimeConfiguration?: RuntimeConfiguration; - /** - * Policy that limits the number of game sessions an individual player can create over a span of time for this fleet. - */ - ResourceCreationLimitPolicy?: ResourceCreationLimitPolicy; - /** - * Names of metric groups to add this fleet to. Use an existing metric group name to add this fleet to the group. Or use a new name to create a new metric group. A fleet can only be included in one metric group at a time. - */ - MetricGroups?: MetricGroupList; - /** - * Unique identifier for the AWS account with the VPC that you want to peer your Amazon GameLift fleet with. You can find your Account ID in the AWS Management Console under account settings. - */ - PeerVpcAwsAccountId?: NonZeroAndMaxString; - /** - * Unique identifier for a VPC with resources to be accessed by your Amazon GameLift fleet. The VPC must be in the same region where your fleet is deployed. To get VPC information, including IDs, use the Virtual Private Cloud service tools, including the VPC Dashboard in the AWS Management Console. - */ - PeerVpcId?: NonZeroAndMaxString; - } - export interface CreateFleetOutput { - /** - * Properties for the newly created fleet. - */ - FleetAttributes?: FleetAttributes; - } - export interface CreateGameSessionInput { - /** - * Unique identifier for a fleet to create a game session in. Each request must reference either a fleet ID or alias ID, but not both. - */ - FleetId?: FleetId; - /** - * Unique identifier for an alias associated with the fleet to create a game session in. Each request must reference either a fleet ID or alias ID, but not both. - */ - AliasId?: AliasId; - /** - * Maximum number of players that can be connected simultaneously to the game session. - */ - MaximumPlayerSessionCount: WholeNumber; - /** - * Descriptive label that is associated with a game session. Session names do not need to be unique. - */ - Name?: NonZeroAndMaxString; - /** - * Set of developer-defined properties for a game session, formatted as a set of type:value pairs. These properties are included in the GameSession object, which is passed to the game server with a request to start a new game session (see Start a Game Session). - */ - GameProperties?: GamePropertyList; - /** - * Unique identifier for a player or entity creating the game session. This ID is used to enforce a resource protection policy (if one exists) that limits the number of concurrent active game sessions one player can have. - */ - CreatorId?: NonZeroAndMaxString; - /** - * This parameter is no longer preferred. Please use IdempotencyToken instead. Custom string that uniquely identifies a request for a new game session. Maximum token length is 48 characters. If provided, this string is included in the new game session's ID. (A game session ARN has the following format: arn:aws:gamelift:<region>::gamesession/<fleet ID>/<custom ID string or idempotency token>.) - */ - GameSessionId?: IdStringModel; - /** - * Custom string that uniquely identifies a request for a new game session. Maximum token length is 48 characters. If provided, this string is included in the new game session's ID. (A game session ARN has the following format: arn:aws:gamelift:<region>::gamesession/<fleet ID>/<custom ID string or idempotency token>.) Idempotency tokens remain in use for 30 days after a game session has ended; game session objects are retained for this time period and then deleted. - */ - IdempotencyToken?: IdStringModel; - /** - * Set of developer-defined game session properties, formatted as a single string value. This data is included in the GameSession object, which is passed to the game server with a request to start a new game session (see Start a Game Session). - */ - GameSessionData?: GameSessionData; - } - export interface CreateGameSessionOutput { - /** - * Object that describes the newly created game session record. - */ - GameSession?: GameSession; - } - export interface CreateGameSessionQueueInput { - /** - * Descriptive label that is associated with game session queue. Queue names must be unique within each region. - */ - Name: GameSessionQueueName; - /** - * Maximum time, in seconds, that a new game session placement request remains in the queue. When a request exceeds this time, the game session placement changes to a TIMED_OUT status. - */ - TimeoutInSeconds?: WholeNumber; - /** - * Collection of latency policies to apply when processing game sessions placement requests with player latency information. Multiple policies are evaluated in order of the maximum latency value, starting with the lowest latency values. With just one policy, it is enforced at the start of the game session placement for the duration period. With multiple policies, each policy is enforced consecutively for its duration period. For example, a queue might enforce a 60-second policy followed by a 120-second policy, and then no policy for the remainder of the placement. A player latency policy must set a value for MaximumIndividualPlayerLatencyMilliseconds; if none is set, this API requests will fail. - */ - PlayerLatencyPolicies?: PlayerLatencyPolicyList; - /** - * List of fleets that can be used to fulfill game session placement requests in the queue. Fleets are identified by either a fleet ARN or a fleet alias ARN. Destinations are listed in default preference order. - */ - Destinations?: GameSessionQueueDestinationList; - } - export interface CreateGameSessionQueueOutput { - /** - * Object that describes the newly created game session queue. - */ - GameSessionQueue?: GameSessionQueue; - } - export interface CreateMatchmakingConfigurationInput { - /** - * Unique identifier for a matchmaking configuration. This name is used to identify the configuration associated with a matchmaking request or ticket. - */ - Name: MatchmakingIdStringModel; - /** - * Meaningful description of the matchmaking configuration. - */ - Description?: NonZeroAndMaxString; - /** - * Amazon Resource Name (ARN) that is assigned to a game session queue and uniquely identifies it. Format is arn:aws:gamelift:<region>::fleet/fleet-a1234567-b8c9-0d1e-2fa3-b45c6d7e8912. These queues are used when placing game sessions for matches that are created with this matchmaking configuration. Queues can be located in any region. - */ - GameSessionQueueArns: QueueArnsList; - /** - * Maximum duration, in seconds, that a matchmaking ticket can remain in process before timing out. Requests that time out can be resubmitted as needed. - */ - RequestTimeoutSeconds: MatchmakingRequestTimeoutInteger; - /** - * Length of time (in seconds) to wait for players to accept a proposed match. If any player rejects the match or fails to accept before the timeout, the ticket continues to look for an acceptable match. - */ - AcceptanceTimeoutSeconds?: MatchmakingAcceptanceTimeoutInteger; - /** - * Flag that determines whether or not a match that was created with this configuration must be accepted by the matched players. To require acceptance, set to TRUE. - */ - AcceptanceRequired: Boolean; - /** - * Unique identifier for a matchmaking rule set to use with this configuration. A matchmaking configuration can only use rule sets that are defined in the same region. - */ - RuleSetName: MatchmakingIdStringModel; - /** - * SNS topic ARN that is set up to receive matchmaking notifications. - */ - NotificationTarget?: SnsArnStringModel; - /** - * Number of player slots in a match to keep open for future players. For example, if the configuration's rule set specifies a match for a single 12-person team, and the additional player count is set to 2, only 10 players are selected for the match. - */ - AdditionalPlayerCount?: WholeNumber; - /** - * Information to attached to all events related to the matchmaking configuration. - */ - CustomEventData?: CustomEventData; - /** - * Set of developer-defined properties for a game session, formatted as a set of type:value pairs. These properties are included in the GameSession object, which is passed to the game server with a request to start a new game session (see Start a Game Session). This information is added to the new GameSession object that is created for a successful match. - */ - GameProperties?: GamePropertyList; - /** - * Set of developer-defined game session properties, formatted as a single string value. This data is included in the GameSession object, which is passed to the game server with a request to start a new game session (see Start a Game Session). This information is added to the new GameSession object that is created for a successful match. - */ - GameSessionData?: GameSessionData; - } - export interface CreateMatchmakingConfigurationOutput { - /** - * Object that describes the newly created matchmaking configuration. - */ - Configuration?: MatchmakingConfiguration; - } - export interface CreateMatchmakingRuleSetInput { - /** - * Unique identifier for a matchmaking rule set. This name is used to identify the rule set associated with a matchmaking configuration. - */ - Name: MatchmakingIdStringModel; - /** - * Collection of matchmaking rules, formatted as a JSON string. (Note that comments are not allowed in JSON, but most elements support a description field.) - */ - RuleSetBody: RuleSetBody; - } - export interface CreateMatchmakingRuleSetOutput { - /** - * Object that describes the newly created matchmaking rule set. - */ - RuleSet: MatchmakingRuleSet; - } - export interface CreatePlayerSessionInput { - /** - * Unique identifier for the game session to add a player to. - */ - GameSessionId: ArnStringModel; - /** - * Unique identifier for a player. Player IDs are developer-defined. - */ - PlayerId: NonZeroAndMaxString; - /** - * Developer-defined information related to a player. Amazon GameLift does not use this data, so it can be formatted as needed for use in the game. - */ - PlayerData?: PlayerData; - } - export interface CreatePlayerSessionOutput { - /** - * Object that describes the newly created player session record. - */ - PlayerSession?: PlayerSession; - } - export interface CreatePlayerSessionsInput { - /** - * Unique identifier for the game session to add players to. - */ - GameSessionId: ArnStringModel; - /** - * List of unique identifiers for the players to be added. - */ - PlayerIds: PlayerIdList; - /** - * Map of string pairs, each specifying a player ID and a set of developer-defined information related to the player. Amazon GameLift does not use this data, so it can be formatted as needed for use in the game. Player data strings for player IDs not included in the PlayerIds parameter are ignored. - */ - PlayerDataMap?: PlayerDataMap; - } - export interface CreatePlayerSessionsOutput { - /** - * Collection of player session objects created for the added players. - */ - PlayerSessions?: PlayerSessionList; - } - export interface CreateVpcPeeringAuthorizationInput { - /** - * Unique identifier for the AWS account that you use to manage your Amazon GameLift fleet. You can find your Account ID in the AWS Management Console under account settings. - */ - GameLiftAwsAccountId: NonZeroAndMaxString; - /** - * Unique identifier for a VPC with resources to be accessed by your Amazon GameLift fleet. The VPC must be in the same region where your fleet is deployed. To get VPC information, including IDs, use the Virtual Private Cloud service tools, including the VPC Dashboard in the AWS Management Console. - */ - PeerVpcId: NonZeroAndMaxString; - } - export interface CreateVpcPeeringAuthorizationOutput { - /** - * Details on the requested VPC peering authorization, including expiration. - */ - VpcPeeringAuthorization?: VpcPeeringAuthorization; - } - export interface CreateVpcPeeringConnectionInput { - /** - * Unique identifier for a fleet. This tells Amazon GameLift which GameLift VPC to peer with. - */ - FleetId: FleetId; - /** - * Unique identifier for the AWS account with the VPC that you want to peer your Amazon GameLift fleet with. You can find your Account ID in the AWS Management Console under account settings. - */ - PeerVpcAwsAccountId: NonZeroAndMaxString; - /** - * Unique identifier for a VPC with resources to be accessed by your Amazon GameLift fleet. The VPC must be in the same region where your fleet is deployed. To get VPC information, including IDs, use the Virtual Private Cloud service tools, including the VPC Dashboard in the AWS Management Console. - */ - PeerVpcId: NonZeroAndMaxString; - } - export interface CreateVpcPeeringConnectionOutput { - } - export type CustomEventData = string; - export interface DeleteAliasInput { - /** - * Unique identifier for a fleet alias. Specify the alias you want to delete. - */ - AliasId: AliasId; - } - export interface DeleteBuildInput { - /** - * Unique identifier for a build to delete. - */ - BuildId: BuildId; - } - export interface DeleteFleetInput { - /** - * Unique identifier for a fleet to be deleted. - */ - FleetId: FleetId; - } - export interface DeleteGameSessionQueueInput { - /** - * Descriptive label that is associated with game session queue. Queue names must be unique within each region. - */ - Name: GameSessionQueueName; - } - export interface DeleteGameSessionQueueOutput { - } - export interface DeleteMatchmakingConfigurationInput { - /** - * Unique identifier for a matchmaking configuration - */ - Name: MatchmakingIdStringModel; - } - export interface DeleteMatchmakingConfigurationOutput { - } - export interface DeleteScalingPolicyInput { - /** - * Descriptive label that is associated with a scaling policy. Policy names do not need to be unique. - */ - Name: NonZeroAndMaxString; - /** - * Unique identifier for a fleet to be deleted. - */ - FleetId: FleetId; - } - export interface DeleteVpcPeeringAuthorizationInput { - /** - * Unique identifier for the AWS account that you use to manage your Amazon GameLift fleet. You can find your Account ID in the AWS Management Console under account settings. - */ - GameLiftAwsAccountId: NonZeroAndMaxString; - /** - * Unique identifier for a VPC with resources to be accessed by your Amazon GameLift fleet. The VPC must be in the same region where your fleet is deployed. To get VPC information, including IDs, use the Virtual Private Cloud service tools, including the VPC Dashboard in the AWS Management Console. - */ - PeerVpcId: NonZeroAndMaxString; - } - export interface DeleteVpcPeeringAuthorizationOutput { - } - export interface DeleteVpcPeeringConnectionInput { - /** - * Unique identifier for a fleet. This value must match the fleet ID referenced in the VPC peering connection record. - */ - FleetId: FleetId; - /** - * Unique identifier for a VPC peering connection. This value is included in the VpcPeeringConnection object, which can be retrieved by calling DescribeVpcPeeringConnections. - */ - VpcPeeringConnectionId: NonZeroAndMaxString; - } - export interface DeleteVpcPeeringConnectionOutput { - } - export interface DescribeAliasInput { - /** - * Unique identifier for a fleet alias. Specify the alias you want to retrieve. - */ - AliasId: AliasId; - } - export interface DescribeAliasOutput { - /** - * Object that contains the requested alias. - */ - Alias?: Alias; - } - export interface DescribeBuildInput { - /** - * Unique identifier for a build to retrieve properties for. - */ - BuildId: BuildId; - } - export interface DescribeBuildOutput { - /** - * Set of properties describing the requested build. - */ - Build?: Build; - } - export interface DescribeEC2InstanceLimitsInput { - /** - * Name of an EC2 instance type that is supported in Amazon GameLift. A fleet instance type determines the computing resources of each instance in the fleet, including CPU, memory, storage, and networking capacity. Amazon GameLift supports the following EC2 instance types. See Amazon EC2 Instance Types for detailed descriptions. Leave this parameter blank to retrieve limits for all types. - */ - EC2InstanceType?: EC2InstanceType; - } - export interface DescribeEC2InstanceLimitsOutput { - /** - * Object that contains the maximum number of instances for the specified instance type. - */ - EC2InstanceLimits?: EC2InstanceLimitList; - } - export interface DescribeFleetAttributesInput { - /** - * Unique identifier for a fleet(s) to retrieve attributes for. To request attributes for all fleets, leave this parameter empty. - */ - FleetIds?: FleetIdList; - /** - * Maximum number of results to return. Use this parameter with NextToken to get results as a set of sequential pages. This parameter is ignored when the request specifies one or a list of fleet IDs. - */ - Limit?: PositiveInteger; - /** - * Token that indicates the start of the next sequential page of results. Use the token that is returned with a previous call to this action. To start at the beginning of the result set, do not specify a value. This parameter is ignored when the request specifies one or a list of fleet IDs. - */ - NextToken?: NonZeroAndMaxString; - } - export interface DescribeFleetAttributesOutput { - /** - * Collection of objects containing attribute metadata for each requested fleet ID. - */ - FleetAttributes?: FleetAttributesList; - /** - * Token that indicates where to resume retrieving results on the next call to this action. If no token is returned, these results represent the end of the list. - */ - NextToken?: NonZeroAndMaxString; - } - export interface DescribeFleetCapacityInput { - /** - * Unique identifier for a fleet(s) to retrieve capacity information for. To request capacity information for all fleets, leave this parameter empty. - */ - FleetIds?: FleetIdList; - /** - * Maximum number of results to return. Use this parameter with NextToken to get results as a set of sequential pages. This parameter is ignored when the request specifies one or a list of fleet IDs. - */ - Limit?: PositiveInteger; - /** - * Token that indicates the start of the next sequential page of results. Use the token that is returned with a previous call to this action. To start at the beginning of the result set, do not specify a value. This parameter is ignored when the request specifies one or a list of fleet IDs. - */ - NextToken?: NonZeroAndMaxString; - } - export interface DescribeFleetCapacityOutput { - /** - * Collection of objects containing capacity information for each requested fleet ID. Leave this parameter empty to retrieve capacity information for all fleets. - */ - FleetCapacity?: FleetCapacityList; - /** - * Token that indicates where to resume retrieving results on the next call to this action. If no token is returned, these results represent the end of the list. - */ - NextToken?: NonZeroAndMaxString; - } - export interface DescribeFleetEventsInput { - /** - * Unique identifier for a fleet to get event logs for. - */ - FleetId: FleetId; - /** - * Earliest date to retrieve event logs for. If no start time is specified, this call returns entries starting from when the fleet was created to the specified end time. Format is a number expressed in Unix time as milliseconds (ex: "1469498468.057"). - */ - StartTime?: Timestamp; - /** - * Most recent date to retrieve event logs for. If no end time is specified, this call returns entries from the specified start time up to the present. Format is a number expressed in Unix time as milliseconds (ex: "1469498468.057"). - */ - EndTime?: Timestamp; - /** - * Maximum number of results to return. Use this parameter with NextToken to get results as a set of sequential pages. - */ - Limit?: PositiveInteger; - /** - * Token that indicates the start of the next sequential page of results. Use the token that is returned with a previous call to this action. To start at the beginning of the result set, do not specify a value. - */ - NextToken?: NonZeroAndMaxString; - } - export interface DescribeFleetEventsOutput { - /** - * Collection of objects containing event log entries for the specified fleet. - */ - Events?: EventList; - /** - * Token that indicates where to resume retrieving results on the next call to this action. If no token is returned, these results represent the end of the list. - */ - NextToken?: NonZeroAndMaxString; - } - export interface DescribeFleetPortSettingsInput { - /** - * Unique identifier for a fleet to retrieve port settings for. - */ - FleetId: FleetId; - } - export interface DescribeFleetPortSettingsOutput { - /** - * Object that contains port settings for the requested fleet ID. - */ - InboundPermissions?: IpPermissionsList; - } - export interface DescribeFleetUtilizationInput { - /** - * Unique identifier for a fleet(s) to retrieve utilization data for. To request utilization data for all fleets, leave this parameter empty. - */ - FleetIds?: FleetIdList; - /** - * Maximum number of results to return. Use this parameter with NextToken to get results as a set of sequential pages. This parameter is ignored when the request specifies one or a list of fleet IDs. - */ - Limit?: PositiveInteger; - /** - * Token that indicates the start of the next sequential page of results. Use the token that is returned with a previous call to this action. To start at the beginning of the result set, do not specify a value. This parameter is ignored when the request specifies one or a list of fleet IDs. - */ - NextToken?: NonZeroAndMaxString; - } - export interface DescribeFleetUtilizationOutput { - /** - * Collection of objects containing utilization information for each requested fleet ID. - */ - FleetUtilization?: FleetUtilizationList; - /** - * Token that indicates where to resume retrieving results on the next call to this action. If no token is returned, these results represent the end of the list. - */ - NextToken?: NonZeroAndMaxString; - } - export interface DescribeGameSessionDetailsInput { - /** - * Unique identifier for a fleet to retrieve all game sessions active on the fleet. - */ - FleetId?: FleetId; - /** - * Unique identifier for the game session to retrieve. - */ - GameSessionId?: ArnStringModel; - /** - * Unique identifier for an alias associated with the fleet to retrieve all game sessions for. - */ - AliasId?: AliasId; - /** - * Game session status to filter results on. Possible game session statuses include ACTIVE, TERMINATED, ACTIVATING and TERMINATING (the last two are transitory). - */ - StatusFilter?: NonZeroAndMaxString; - /** - * Maximum number of results to return. Use this parameter with NextToken to get results as a set of sequential pages. - */ - Limit?: PositiveInteger; - /** - * Token that indicates the start of the next sequential page of results. Use the token that is returned with a previous call to this action. To start at the beginning of the result set, do not specify a value. - */ - NextToken?: NonZeroAndMaxString; - } - export interface DescribeGameSessionDetailsOutput { - /** - * Collection of objects containing game session properties and the protection policy currently in force for each session matching the request. - */ - GameSessionDetails?: GameSessionDetailList; - /** - * Token that indicates where to resume retrieving results on the next call to this action. If no token is returned, these results represent the end of the list. - */ - NextToken?: NonZeroAndMaxString; - } - export interface DescribeGameSessionPlacementInput { - /** - * Unique identifier for a game session placement to retrieve. - */ - PlacementId: IdStringModel; - } - export interface DescribeGameSessionPlacementOutput { - /** - * Object that describes the requested game session placement. - */ - GameSessionPlacement?: GameSessionPlacement; - } - export interface DescribeGameSessionQueuesInput { - /** - * List of queue names to retrieve information for. To request settings for all queues, leave this parameter empty. - */ - Names?: GameSessionQueueNameList; - /** - * Maximum number of results to return. Use this parameter with NextToken to get results as a set of sequential pages. - */ - Limit?: PositiveInteger; - /** - * Token that indicates the start of the next sequential page of results. Use the token that is returned with a previous call to this action. To start at the beginning of the result set, do not specify a value. - */ - NextToken?: NonZeroAndMaxString; - } - export interface DescribeGameSessionQueuesOutput { - /** - * Collection of objects that describes the requested game session queues. - */ - GameSessionQueues?: GameSessionQueueList; - /** - * Token that indicates where to resume retrieving results on the next call to this action. If no token is returned, these results represent the end of the list. - */ - NextToken?: NonZeroAndMaxString; - } - export interface DescribeGameSessionsInput { - /** - * Unique identifier for a fleet to retrieve all game sessions for. - */ - FleetId?: FleetId; - /** - * Unique identifier for the game session to retrieve. You can use either a GameSessionId or GameSessionArn value. - */ - GameSessionId?: ArnStringModel; - /** - * Unique identifier for an alias associated with the fleet to retrieve all game sessions for. - */ - AliasId?: AliasId; - /** - * Game session status to filter results on. Possible game session statuses include ACTIVE, TERMINATED, ACTIVATING, and TERMINATING (the last two are transitory). - */ - StatusFilter?: NonZeroAndMaxString; - /** - * Maximum number of results to return. Use this parameter with NextToken to get results as a set of sequential pages. - */ - Limit?: PositiveInteger; - /** - * Token that indicates the start of the next sequential page of results. Use the token that is returned with a previous call to this action. To start at the beginning of the result set, do not specify a value. - */ - NextToken?: NonZeroAndMaxString; - } - export interface DescribeGameSessionsOutput { - /** - * Collection of objects containing game session properties for each session matching the request. - */ - GameSessions?: GameSessionList; - /** - * Token that indicates where to resume retrieving results on the next call to this action. If no token is returned, these results represent the end of the list. - */ - NextToken?: NonZeroAndMaxString; - } - export interface DescribeInstancesInput { - /** - * Unique identifier for a fleet to retrieve instance information for. - */ - FleetId: FleetId; - /** - * Unique identifier for an instance to retrieve. Specify an instance ID or leave blank to retrieve all instances in the fleet. - */ - InstanceId?: InstanceId; - /** - * Maximum number of results to return. Use this parameter with NextToken to get results as a set of sequential pages. - */ - Limit?: PositiveInteger; - /** - * Token that indicates the start of the next sequential page of results. Use the token that is returned with a previous call to this action. To start at the beginning of the result set, do not specify a value. - */ - NextToken?: NonZeroAndMaxString; - } - export interface DescribeInstancesOutput { - /** - * Collection of objects containing properties for each instance returned. - */ - Instances?: InstanceList; - /** - * Token that indicates where to resume retrieving results on the next call to this action. If no token is returned, these results represent the end of the list. - */ - NextToken?: NonZeroAndMaxString; - } - export interface DescribeMatchmakingConfigurationsInput { - /** - * Unique identifier for a matchmaking configuration(s) to retrieve. To request all existing configurations, leave this parameter empty. - */ - Names?: MatchmakingIdList; - /** - * Unique identifier for a matchmaking rule set. Use this parameter to retrieve all matchmaking configurations that use this rule set. - */ - RuleSetName?: MatchmakingIdStringModel; - /** - * Maximum number of results to return. Use this parameter with NextToken to get results as a set of sequential pages. This parameter is limited to 10. - */ - Limit?: PositiveInteger; - /** - * Token that indicates the start of the next sequential page of results. Use the token that is returned with a previous call to this action. To start at the beginning of the result set, do not specify a value. - */ - NextToken?: NonZeroAndMaxString; - } - export interface DescribeMatchmakingConfigurationsOutput { - /** - * Collection of requested matchmaking configuration objects. - */ - Configurations?: MatchmakingConfigurationList; - /** - * Token that indicates where to resume retrieving results on the next call to this action. If no token is returned, these results represent the end of the list. - */ - NextToken?: NonZeroAndMaxString; - } - export interface DescribeMatchmakingInput { - /** - * Unique identifier for a matchmaking ticket. To request all existing tickets, leave this parameter empty. - */ - TicketIds: MatchmakingIdList; - } - export interface DescribeMatchmakingOutput { - /** - * Collection of existing matchmaking ticket objects matching the request. - */ - TicketList?: MatchmakingTicketList; - } - export interface DescribeMatchmakingRuleSetsInput { - /** - * Unique identifier for a matchmaking rule set. This name is used to identify the rule set associated with a matchmaking configuration. - */ - Names?: MatchmakingRuleSetNameList; - /** - * Maximum number of results to return. Use this parameter with NextToken to get results as a set of sequential pages. - */ - Limit?: RuleSetLimit; - /** - * Token that indicates the start of the next sequential page of results. Use the token that is returned with a previous call to this action. To start at the beginning of the result set, do not specify a value. - */ - NextToken?: NonZeroAndMaxString; - } - export interface DescribeMatchmakingRuleSetsOutput { - /** - * Collection of requested matchmaking rule set objects. - */ - RuleSets: MatchmakingRuleSetList; - /** - * Token that indicates where to resume retrieving results on the next call to this action. If no token is returned, these results represent the end of the list. - */ - NextToken?: NonZeroAndMaxString; - } - export interface DescribePlayerSessionsInput { - /** - * Unique identifier for the game session to retrieve player sessions for. - */ - GameSessionId?: ArnStringModel; - /** - * Unique identifier for a player to retrieve player sessions for. - */ - PlayerId?: NonZeroAndMaxString; - /** - * Unique identifier for a player session to retrieve. - */ - PlayerSessionId?: PlayerSessionId; - /** - * Player session status to filter results on. Possible player session statuses include the following: RESERVED -- The player session request has been received, but the player has not yet connected to the server process and/or been validated. ACTIVE -- The player has been validated by the server process and is currently connected. COMPLETED -- The player connection has been dropped. TIMEDOUT -- A player session request was received, but the player did not connect and/or was not validated within the timeout limit (60 seconds). - */ - PlayerSessionStatusFilter?: NonZeroAndMaxString; - /** - * Maximum number of results to return. Use this parameter with NextToken to get results as a set of sequential pages. If a player session ID is specified, this parameter is ignored. - */ - Limit?: PositiveInteger; - /** - * Token that indicates the start of the next sequential page of results. Use the token that is returned with a previous call to this action. To start at the beginning of the result set, do not specify a value. If a player session ID is specified, this parameter is ignored. - */ - NextToken?: NonZeroAndMaxString; - } - export interface DescribePlayerSessionsOutput { - /** - * Collection of objects containing properties for each player session that matches the request. - */ - PlayerSessions?: PlayerSessionList; - /** - * Token that indicates where to resume retrieving results on the next call to this action. If no token is returned, these results represent the end of the list. - */ - NextToken?: NonZeroAndMaxString; - } - export interface DescribeRuntimeConfigurationInput { - /** - * Unique identifier for a fleet to get the run-time configuration for. - */ - FleetId: FleetId; - } - export interface DescribeRuntimeConfigurationOutput { - /** - * Instructions describing how server processes should be launched and maintained on each instance in the fleet. - */ - RuntimeConfiguration?: RuntimeConfiguration; - } - export interface DescribeScalingPoliciesInput { - /** - * Unique identifier for a fleet to retrieve scaling policies for. - */ - FleetId: FleetId; - /** - * Scaling policy status to filter results on. A scaling policy is only in force when in an ACTIVE status. ACTIVE -- The scaling policy is currently in force. UPDATEREQUESTED -- A request to update the scaling policy has been received. UPDATING -- A change is being made to the scaling policy. DELETEREQUESTED -- A request to delete the scaling policy has been received. DELETING -- The scaling policy is being deleted. DELETED -- The scaling policy has been deleted. ERROR -- An error occurred in creating the policy. It should be removed and recreated. - */ - StatusFilter?: ScalingStatusType; - /** - * Maximum number of results to return. Use this parameter with NextToken to get results as a set of sequential pages. - */ - Limit?: PositiveInteger; - /** - * Token that indicates the start of the next sequential page of results. Use the token that is returned with a previous call to this action. To start at the beginning of the result set, do not specify a value. - */ - NextToken?: NonZeroAndMaxString; - } - export interface DescribeScalingPoliciesOutput { - /** - * Collection of objects containing the scaling policies matching the request. - */ - ScalingPolicies?: ScalingPolicyList; - /** - * Token that indicates where to resume retrieving results on the next call to this action. If no token is returned, these results represent the end of the list. - */ - NextToken?: NonZeroAndMaxString; - } - export interface DescribeVpcPeeringAuthorizationsInput { - } - export interface DescribeVpcPeeringAuthorizationsOutput { - /** - * Collection of objects that describe all valid VPC peering operations for the current AWS account. - */ - VpcPeeringAuthorizations?: VpcPeeringAuthorizationList; - } - export interface DescribeVpcPeeringConnectionsInput { - /** - * Unique identifier for a fleet. - */ - FleetId?: FleetId; - } - export interface DescribeVpcPeeringConnectionsOutput { - /** - * Collection of VPC peering connection records that match the request. - */ - VpcPeeringConnections?: VpcPeeringConnectionList; - } - export interface DesiredPlayerSession { - /** - * Unique identifier for a player to associate with the player session. - */ - PlayerId?: NonZeroAndMaxString; - /** - * Developer-defined information related to a player. Amazon GameLift does not use this data, so it can be formatted as needed for use in the game. - */ - PlayerData?: PlayerData; - } - export type DesiredPlayerSessionList = DesiredPlayerSession[]; - export type Double = number; - export type DoubleObject = number; - export interface EC2InstanceCounts { - /** - * Ideal number of active instances in the fleet. - */ - DESIRED?: WholeNumber; - /** - * Minimum value allowed for the fleet's instance count. - */ - MINIMUM?: WholeNumber; - /** - * Maximum value allowed for the fleet's instance count. - */ - MAXIMUM?: WholeNumber; - /** - * Number of instances in the fleet that are starting but not yet active. - */ - PENDING?: WholeNumber; - /** - * Actual number of active instances in the fleet. - */ - ACTIVE?: WholeNumber; - /** - * Number of active instances in the fleet that are not currently hosting a game session. - */ - IDLE?: WholeNumber; - /** - * Number of instances in the fleet that are no longer active but haven't yet been terminated. - */ - TERMINATING?: WholeNumber; - } - export interface EC2InstanceLimit { - /** - * Name of an EC2 instance type that is supported in Amazon GameLift. A fleet instance type determines the computing resources of each instance in the fleet, including CPU, memory, storage, and networking capacity. Amazon GameLift supports the following EC2 instance types. See Amazon EC2 Instance Types for detailed descriptions. - */ - EC2InstanceType?: EC2InstanceType; - /** - * Number of instances of the specified type that are currently in use by this AWS account. - */ - CurrentInstances?: WholeNumber; - /** - * Number of instances allowed. - */ - InstanceLimit?: WholeNumber; - } - export type EC2InstanceLimitList = EC2InstanceLimit[]; - export type EC2InstanceType = "t2.micro"|"t2.small"|"t2.medium"|"t2.large"|"c3.large"|"c3.xlarge"|"c3.2xlarge"|"c3.4xlarge"|"c3.8xlarge"|"c4.large"|"c4.xlarge"|"c4.2xlarge"|"c4.4xlarge"|"c4.8xlarge"|"r3.large"|"r3.xlarge"|"r3.2xlarge"|"r3.4xlarge"|"r3.8xlarge"|"r4.large"|"r4.xlarge"|"r4.2xlarge"|"r4.4xlarge"|"r4.8xlarge"|"r4.16xlarge"|"m3.medium"|"m3.large"|"m3.xlarge"|"m3.2xlarge"|"m4.large"|"m4.xlarge"|"m4.2xlarge"|"m4.4xlarge"|"m4.10xlarge"|string; - export interface Event { - /** - * Unique identifier for a fleet event. - */ - EventId?: NonZeroAndMaxString; - /** - * Unique identifier for an event resource, such as a fleet ID. - */ - ResourceId?: NonZeroAndMaxString; - /** - * Type of event being logged. The following events are currently in use: General events: GENERIC_EVENT -- An unspecified event has occurred. Fleet creation events: FLEET_CREATED -- A fleet record was successfully created with a status of NEW. Event messaging includes the fleet ID. FLEET_STATE_DOWNLOADING -- Fleet status changed from NEW to DOWNLOADING. The compressed build has started downloading to a fleet instance for installation. FLEET_BINARY_DOWNLOAD_FAILED -- The build failed to download to the fleet instance. FLEET_CREATION_EXTRACTING_BUILD – The game server build was successfully downloaded to an instance, and the build files are now being extracted from the uploaded build and saved to an instance. Failure at this stage prevents a fleet from moving to ACTIVE status. Logs for this stage display a list of the files that are extracted and saved on the instance. Access the logs by using the URL in PreSignedLogUrl. FLEET_CREATION_RUNNING_INSTALLER – The game server build files were successfully extracted, and the Amazon GameLift is now running the build's install script (if one is included). Failure in this stage prevents a fleet from moving to ACTIVE status. Logs for this stage list the installation steps and whether or not the install completed successfully. Access the logs by using the URL in PreSignedLogUrl. FLEET_CREATION_VALIDATING_RUNTIME_CONFIG -- The build process was successful, and the Amazon GameLift is now verifying that the game server launch paths, which are specified in the fleet's run-time configuration, exist. If any listed launch path exists, Amazon GameLift tries to launch a game server process and waits for the process to report ready. Failures in this stage prevent a fleet from moving to ACTIVE status. Logs for this stage list the launch paths in the run-time configuration and indicate whether each is found. Access the logs by using the URL in PreSignedLogUrl. FLEET_STATE_VALIDATING -- Fleet status changed from DOWNLOADING to VALIDATING. FLEET_VALIDATION_LAUNCH_PATH_NOT_FOUND -- Validation of the run-time configuration failed because the executable specified in a launch path does not exist on the instance. FLEET_STATE_BUILDING -- Fleet status changed from VALIDATING to BUILDING. FLEET_VALIDATION_EXECUTABLE_RUNTIME_FAILURE -- Validation of the run-time configuration failed because the executable specified in a launch path failed to run on the fleet instance. FLEET_STATE_ACTIVATING -- Fleet status changed from BUILDING to ACTIVATING. FLEET_ACTIVATION_FAILED - The fleet failed to successfully complete one of the steps in the fleet activation process. This event code indicates that the game build was successfully downloaded to a fleet instance, built, and validated, but was not able to start a server process. A possible reason for failure is that the game server is not reporting "process ready" to the Amazon GameLift service. FLEET_STATE_ACTIVE -- The fleet's status changed from ACTIVATING to ACTIVE. The fleet is now ready to host game sessions. VPC peering events: FLEET_VPC_PEERING_SUCCEEDED -- A VPC peering connection has been established between the VPC for an Amazon GameLift fleet and a VPC in your AWS account. FLEET_VPC_PEERING_FAILED -- A requested VPC peering connection has failed. Event details and status information (see DescribeVpcPeeringConnections) provide additional detail. A common reason for peering failure is that the two VPCs have overlapping CIDR blocks of IPv4 addresses. To resolve this, change the CIDR block for the VPC in your AWS account. For more information on VPC peering failures, see http://docs.aws.amazon.com/AmazonVPC/latest/PeeringGuide/invalid-peering-configurations.html FLEET_VPC_PEERING_DELETED -- A VPC peering connection has been successfully deleted. Other fleet events: FLEET_SCALING_EVENT -- A change was made to the fleet's capacity settings (desired instances, minimum/maximum scaling limits). Event messaging includes the new capacity settings. FLEET_NEW_GAME_SESSION_PROTECTION_POLICY_UPDATED -- A change was made to the fleet's game session protection policy setting. Event messaging includes both the old and new policy setting. FLEET_DELETED -- A request to delete a fleet was initiated. - */ - EventCode?: EventCode; - /** - * Additional information related to the event. - */ - Message?: NonEmptyString; - /** - * Time stamp indicating when this event occurred. Format is a number expressed in Unix time as milliseconds (for example "1469498468.057"). - */ - EventTime?: Timestamp; - /** - * Location of stored logs with additional detail that is related to the event. This is useful for debugging issues. The URL is valid for 15 minutes. You can also access fleet creation logs through the Amazon GameLift console. - */ - PreSignedLogUrl?: NonZeroAndMaxString; - } - export type EventCode = "GENERIC_EVENT"|"FLEET_CREATED"|"FLEET_DELETED"|"FLEET_SCALING_EVENT"|"FLEET_STATE_DOWNLOADING"|"FLEET_STATE_VALIDATING"|"FLEET_STATE_BUILDING"|"FLEET_STATE_ACTIVATING"|"FLEET_STATE_ACTIVE"|"FLEET_STATE_ERROR"|"FLEET_INITIALIZATION_FAILED"|"FLEET_BINARY_DOWNLOAD_FAILED"|"FLEET_VALIDATION_LAUNCH_PATH_NOT_FOUND"|"FLEET_VALIDATION_EXECUTABLE_RUNTIME_FAILURE"|"FLEET_VALIDATION_TIMED_OUT"|"FLEET_ACTIVATION_FAILED"|"FLEET_ACTIVATION_FAILED_NO_INSTANCES"|"FLEET_NEW_GAME_SESSION_PROTECTION_POLICY_UPDATED"|"SERVER_PROCESS_INVALID_PATH"|"SERVER_PROCESS_SDK_INITIALIZATION_TIMEOUT"|"SERVER_PROCESS_PROCESS_READY_TIMEOUT"|"SERVER_PROCESS_CRASHED"|"SERVER_PROCESS_TERMINATED_UNHEALTHY"|"SERVER_PROCESS_FORCE_TERMINATED"|"SERVER_PROCESS_PROCESS_EXIT_TIMEOUT"|"GAME_SESSION_ACTIVATION_TIMEOUT"|"FLEET_CREATION_EXTRACTING_BUILD"|"FLEET_CREATION_RUNNING_INSTALLER"|"FLEET_CREATION_VALIDATING_RUNTIME_CONFIG"|"FLEET_VPC_PEERING_SUCCEEDED"|"FLEET_VPC_PEERING_FAILED"|"FLEET_VPC_PEERING_DELETED"|string; - export type EventList = Event[]; - export interface FleetAttributes { - /** - * Unique identifier for a fleet. - */ - FleetId?: FleetId; - /** - * Identifier for a fleet that is unique across all regions. - */ - FleetArn?: ArnStringModel; - /** - * Human-readable description of the fleet. - */ - Description?: NonZeroAndMaxString; - /** - * Descriptive label that is associated with a fleet. Fleet names do not need to be unique. - */ - Name?: NonZeroAndMaxString; - /** - * Time stamp indicating when this data object was created. Format is a number expressed in Unix time as milliseconds (for example "1469498468.057"). - */ - CreationTime?: Timestamp; - /** - * Time stamp indicating when this data object was terminated. Format is a number expressed in Unix time as milliseconds (for example "1469498468.057"). - */ - TerminationTime?: Timestamp; - /** - * Current status of the fleet. Possible fleet statuses include the following: NEW -- A new fleet has been defined and desired instances is set to 1. DOWNLOADING/VALIDATING/BUILDING/ACTIVATING -- Amazon GameLift is setting up the new fleet, creating new instances with the game build and starting server processes. ACTIVE -- Hosts can now accept game sessions. ERROR -- An error occurred when downloading, validating, building, or activating the fleet. DELETING -- Hosts are responding to a delete fleet request. TERMINATED -- The fleet no longer exists. - */ - Status?: FleetStatus; - /** - * Unique identifier for a build. - */ - BuildId?: BuildId; - /** - * Path to a game server executable in the fleet's build, specified for fleets created before 2016-08-04 (or AWS SDK v. 0.12.16). Server launch paths for fleets created after this date are specified in the fleet's RuntimeConfiguration. - */ - ServerLaunchPath?: NonZeroAndMaxString; - /** - * Game server launch parameters specified for fleets created before 2016-08-04 (or AWS SDK v. 0.12.16). Server launch parameters for fleets created after this date are specified in the fleet's RuntimeConfiguration. - */ - ServerLaunchParameters?: NonZeroAndMaxString; - /** - * Location of default log files. When a server process is shut down, Amazon GameLift captures and stores any log files in this location. These logs are in addition to game session logs; see more on game session logs in the Amazon GameLift Developer Guide. If no default log path for a fleet is specified, Amazon GameLift automatically uploads logs that are stored on each instance at C:\game\logs (for Windows) or /local/game/logs (for Linux). Use the Amazon GameLift console to access stored logs. - */ - LogPaths?: StringList; - /** - * Type of game session protection to set for all new instances started in the fleet. NoProtection -- The game session can be terminated during a scale-down event. FullProtection -- If the game session is in an ACTIVE status, it cannot be terminated during a scale-down event. - */ - NewGameSessionProtectionPolicy?: ProtectionPolicy; - /** - * Operating system of the fleet's computing resources. A fleet's operating system depends on the OS specified for the build that is deployed on this fleet. - */ - OperatingSystem?: OperatingSystem; - /** - * Fleet policy to limit the number of game sessions an individual player can create over a span of time. - */ - ResourceCreationLimitPolicy?: ResourceCreationLimitPolicy; - /** - * Names of metric groups that this fleet is included in. In Amazon CloudWatch, you can view metrics for an individual fleet or aggregated metrics for fleets that are in a fleet metric group. A fleet can be included in only one metric group at a time. - */ - MetricGroups?: MetricGroupList; - } - export type FleetAttributesList = FleetAttributes[]; - export interface FleetCapacity { - /** - * Unique identifier for a fleet. - */ - FleetId?: FleetId; - /** - * Name of an EC2 instance type that is supported in Amazon GameLift. A fleet instance type determines the computing resources of each instance in the fleet, including CPU, memory, storage, and networking capacity. Amazon GameLift supports the following EC2 instance types. See Amazon EC2 Instance Types for detailed descriptions. - */ - InstanceType?: EC2InstanceType; - /** - * Current status of fleet capacity. - */ - InstanceCounts?: EC2InstanceCounts; - } - export type FleetCapacityList = FleetCapacity[]; - export type FleetId = string; - export type FleetIdList = FleetId[]; - export type FleetStatus = "NEW"|"DOWNLOADING"|"VALIDATING"|"BUILDING"|"ACTIVATING"|"ACTIVE"|"DELETING"|"ERROR"|"TERMINATED"|string; - export interface FleetUtilization { - /** - * Unique identifier for a fleet. - */ - FleetId?: FleetId; - /** - * Number of server processes in an ACTIVE status currently running across all instances in the fleet - */ - ActiveServerProcessCount?: WholeNumber; - /** - * Number of active game sessions currently being hosted on all instances in the fleet. - */ - ActiveGameSessionCount?: WholeNumber; - /** - * Number of active player sessions currently being hosted on all instances in the fleet. - */ - CurrentPlayerSessionCount?: WholeNumber; - /** - * Maximum players allowed across all game sessions currently being hosted on all instances in the fleet. - */ - MaximumPlayerSessionCount?: WholeNumber; - } - export type FleetUtilizationList = FleetUtilization[]; - export type Float = number; - export type FreeText = string; - export interface GameProperty { - /** - * Game property identifier. - */ - Key: GamePropertyKey; - /** - * Game property value. - */ - Value: GamePropertyValue; - } - export type GamePropertyKey = string; - export type GamePropertyList = GameProperty[]; - export type GamePropertyValue = string; - export interface GameSession { - /** - * Unique identifier for the game session. A game session ARN has the following format: arn:aws:gamelift:<region>::gamesession/<fleet ID>/<custom ID string or idempotency token>. - */ - GameSessionId?: NonZeroAndMaxString; - /** - * Descriptive label that is associated with a game session. Session names do not need to be unique. - */ - Name?: NonZeroAndMaxString; - /** - * Unique identifier for a fleet that the game session is running on. - */ - FleetId?: FleetId; - /** - * Time stamp indicating when this data object was created. Format is a number expressed in Unix time as milliseconds (for example "1469498468.057"). - */ - CreationTime?: Timestamp; - /** - * Time stamp indicating when this data object was terminated. Format is a number expressed in Unix time as milliseconds (for example "1469498468.057"). - */ - TerminationTime?: Timestamp; - /** - * Number of players currently in the game session. - */ - CurrentPlayerSessionCount?: WholeNumber; - /** - * Maximum number of players that can be connected simultaneously to the game session. - */ - MaximumPlayerSessionCount?: WholeNumber; - /** - * Current status of the game session. A game session must have an ACTIVE status to have player sessions. - */ - Status?: GameSessionStatus; - /** - * Set of developer-defined properties for a game session, formatted as a set of type:value pairs. These properties are included in the GameSession object, which is passed to the game server with a request to start a new game session (see Start a Game Session). - */ - GameProperties?: GamePropertyList; - /** - * IP address of the game session. To connect to a Amazon GameLift game server, an app needs both the IP address and port number. - */ - IpAddress?: IpAddress; - /** - * Port number for the game session. To connect to a Amazon GameLift game server, an app needs both the IP address and port number. - */ - Port?: PortNumber; - /** - * Indicates whether or not the game session is accepting new players. - */ - PlayerSessionCreationPolicy?: PlayerSessionCreationPolicy; - /** - * Unique identifier for a player. This ID is used to enforce a resource protection policy (if one exists), that limits the number of game sessions a player can create. - */ - CreatorId?: NonZeroAndMaxString; - /** - * Set of developer-defined game session properties, formatted as a single string value. This data is included in the GameSession object, which is passed to the game server with a request to start a new game session (see Start a Game Session). - */ - GameSessionData?: GameSessionData; - } - export type GameSessionActivationTimeoutSeconds = number; - export interface GameSessionConnectionInfo { - /** - * Amazon Resource Name (ARN) that is assigned to a game session and uniquely identifies it. - */ - GameSessionArn?: ArnStringModel; - /** - * IP address of the game session. To connect to a Amazon GameLift game server, an app needs both the IP address and port number. - */ - IpAddress?: StringModel; - /** - * Port number for the game session. To connect to a Amazon GameLift game server, an app needs both the IP address and port number. - */ - Port?: PositiveInteger; - /** - * Collection of player session IDs, one for each player ID that was included in the original matchmaking request. - */ - MatchedPlayerSessions?: MatchedPlayerSessionList; - } - export type GameSessionData = string; - export interface GameSessionDetail { - /** - * Object that describes a game session. - */ - GameSession?: GameSession; - /** - * Current status of protection for the game session. NoProtection -- The game session can be terminated during a scale-down event. FullProtection -- If the game session is in an ACTIVE status, it cannot be terminated during a scale-down event. - */ - ProtectionPolicy?: ProtectionPolicy; - } - export type GameSessionDetailList = GameSessionDetail[]; - export type GameSessionList = GameSession[]; - export interface GameSessionPlacement { - /** - * Unique identifier for a game session placement. - */ - PlacementId?: IdStringModel; - /** - * Descriptive label that is associated with game session queue. Queue names must be unique within each region. - */ - GameSessionQueueName?: GameSessionQueueName; - /** - * Current status of the game session placement request. PENDING -- The placement request is currently in the queue waiting to be processed. FULFILLED -- A new game session and player sessions (if requested) have been successfully created. Values for GameSessionArn and GameSessionRegion are available. CANCELLED -- The placement request was canceled with a call to StopGameSessionPlacement. TIMED_OUT -- A new game session was not successfully created before the time limit expired. You can resubmit the placement request as needed. - */ - Status?: GameSessionPlacementState; - /** - * Set of developer-defined properties for a game session, formatted as a set of type:value pairs. These properties are included in the GameSession object, which is passed to the game server with a request to start a new game session (see Start a Game Session). - */ - GameProperties?: GamePropertyList; - /** - * Maximum number of players that can be connected simultaneously to the game session. - */ - MaximumPlayerSessionCount?: WholeNumber; - /** - * Descriptive label that is associated with a game session. Session names do not need to be unique. - */ - GameSessionName?: NonZeroAndMaxString; - /** - * Unique identifier for the game session. This value is set once the new game session is placed (placement status is FULFILLED). - */ - GameSessionId?: NonZeroAndMaxString; - /** - * Identifier for the game session created by this placement request. This value is set once the new game session is placed (placement status is FULFILLED). This identifier is unique across all regions. You can use this value as a GameSessionId value as needed. - */ - GameSessionArn?: NonZeroAndMaxString; - /** - * Name of the region where the game session created by this placement request is running. This value is set once the new game session is placed (placement status is FULFILLED). - */ - GameSessionRegion?: NonZeroAndMaxString; - /** - * Set of values, expressed in milliseconds, indicating the amount of latency that a player experiences when connected to AWS regions. - */ - PlayerLatencies?: PlayerLatencyList; - /** - * Time stamp indicating when this request was placed in the queue. Format is a number expressed in Unix time as milliseconds (for example "1469498468.057"). - */ - StartTime?: Timestamp; - /** - * Time stamp indicating when this request was completed, canceled, or timed out. - */ - EndTime?: Timestamp; - /** - * IP address of the game session. To connect to a Amazon GameLift game server, an app needs both the IP address and port number. This value is set once the new game session is placed (placement status is FULFILLED). - */ - IpAddress?: IpAddress; - /** - * Port number for the game session. To connect to a Amazon GameLift game server, an app needs both the IP address and port number. This value is set once the new game session is placed (placement status is FULFILLED). - */ - Port?: PortNumber; - /** - * Collection of information on player sessions created in response to the game session placement request. These player sessions are created only once a new game session is successfully placed (placement status is FULFILLED). This information includes the player ID (as provided in the placement request) and the corresponding player session ID. Retrieve full player sessions by calling DescribePlayerSessions with the player session ID. - */ - PlacedPlayerSessions?: PlacedPlayerSessionList; - /** - * Set of developer-defined game session properties, formatted as a single string value. This data is included in the GameSession object, which is passed to the game server with a request to start a new game session (see Start a Game Session). - */ - GameSessionData?: GameSessionData; - } - export type GameSessionPlacementState = "PENDING"|"FULFILLED"|"CANCELLED"|"TIMED_OUT"|string; - export interface GameSessionQueue { - /** - * Descriptive label that is associated with game session queue. Queue names must be unique within each region. - */ - Name?: GameSessionQueueName; - /** - * Amazon Resource Name (ARN) that is assigned to a game session queue and uniquely identifies it. Format is arn:aws:gamelift:<region>::fleet/fleet-a1234567-b8c9-0d1e-2fa3-b45c6d7e8912. - */ - GameSessionQueueArn?: ArnStringModel; - /** - * Maximum time, in seconds, that a new game session placement request remains in the queue. When a request exceeds this time, the game session placement changes to a TIMED_OUT status. - */ - TimeoutInSeconds?: WholeNumber; - /** - * Collection of latency policies to apply when processing game sessions placement requests with player latency information. Multiple policies are evaluated in order of the maximum latency value, starting with the lowest latency values. With just one policy, it is enforced at the start of the game session placement for the duration period. With multiple policies, each policy is enforced consecutively for its duration period. For example, a queue might enforce a 60-second policy followed by a 120-second policy, and then no policy for the remainder of the placement. - */ - PlayerLatencyPolicies?: PlayerLatencyPolicyList; - /** - * List of fleets that can be used to fulfill game session placement requests in the queue. Fleets are identified by either a fleet ARN or a fleet alias ARN. Destinations are listed in default preference order. - */ - Destinations?: GameSessionQueueDestinationList; - } - export interface GameSessionQueueDestination { - /** - * Amazon Resource Name (ARN) assigned to fleet or fleet alias. ARNs, which include a fleet ID or alias ID and a region name, provide a unique identifier across all regions. - */ - DestinationArn?: ArnStringModel; - } - export type GameSessionQueueDestinationList = GameSessionQueueDestination[]; - export type GameSessionQueueList = GameSessionQueue[]; - export type GameSessionQueueName = string; - export type GameSessionQueueNameList = GameSessionQueueName[]; - export type GameSessionStatus = "ACTIVE"|"ACTIVATING"|"TERMINATED"|"TERMINATING"|"ERROR"|string; - export interface GetGameSessionLogUrlInput { - /** - * Unique identifier for the game session to get logs for. - */ - GameSessionId: ArnStringModel; - } - export interface GetGameSessionLogUrlOutput { - /** - * Location of the requested game session logs, available for download. - */ - PreSignedUrl?: NonZeroAndMaxString; - } - export interface GetInstanceAccessInput { - /** - * Unique identifier for a fleet that contains the instance you want access to. The fleet can be in any of the following statuses: ACTIVATING, ACTIVE, or ERROR. Fleets with an ERROR status may be accessible for a short time before they are deleted. - */ - FleetId: FleetId; - /** - * Unique identifier for an instance you want to get access to. You can access an instance in any status. - */ - InstanceId: InstanceId; - } - export interface GetInstanceAccessOutput { - /** - * Object that contains connection information for a fleet instance, including IP address and access credentials. - */ - InstanceAccess?: InstanceAccess; - } - export type IdStringModel = string; - export interface Instance { - /** - * Unique identifier for a fleet that the instance is in. - */ - FleetId?: FleetId; - /** - * Unique identifier for an instance. - */ - InstanceId?: InstanceId; - /** - * IP address assigned to the instance. - */ - IpAddress?: IpAddress; - /** - * Operating system that is running on this instance. - */ - OperatingSystem?: OperatingSystem; - /** - * EC2 instance type that defines the computing resources of this instance. - */ - Type?: EC2InstanceType; - /** - * Current status of the instance. Possible statuses include the following: PENDING -- The instance is in the process of being created and launching server processes as defined in the fleet's run-time configuration. ACTIVE -- The instance has been successfully created and at least one server process has successfully launched and reported back to Amazon GameLift that it is ready to host a game session. The instance is now considered ready to host game sessions. TERMINATING -- The instance is in the process of shutting down. This may happen to reduce capacity during a scaling down event or to recycle resources in the event of a problem. - */ - Status?: InstanceStatus; - /** - * Time stamp indicating when this data object was created. Format is a number expressed in Unix time as milliseconds (for example "1469498468.057"). - */ - CreationTime?: Timestamp; - } - export interface InstanceAccess { - /** - * Unique identifier for a fleet containing the instance being accessed. - */ - FleetId?: FleetId; - /** - * Unique identifier for an instance being accessed. - */ - InstanceId?: InstanceId; - /** - * IP address assigned to the instance. - */ - IpAddress?: IpAddress; - /** - * Operating system that is running on the instance. - */ - OperatingSystem?: OperatingSystem; - /** - * Credentials required to access the instance. - */ - Credentials?: InstanceCredentials; - } - export interface InstanceCredentials { - /** - * User login string. - */ - UserName?: NonEmptyString; - /** - * Secret string. For Windows instances, the secret is a password for use with Windows Remote Desktop. For Linux instances, it is a private key (which must be saved as a .pem file) for use with SSH. - */ - Secret?: NonEmptyString; - } - export type InstanceId = string; - export type InstanceList = Instance[]; - export type InstanceStatus = "PENDING"|"ACTIVE"|"TERMINATING"|string; - export type Integer = number; - export type IpAddress = string; - export interface IpPermission { - /** - * Starting value for a range of allowed port numbers. - */ - FromPort: PortNumber; - /** - * Ending value for a range of allowed port numbers. Port numbers are end-inclusive. This value must be higher than FromPort. - */ - ToPort: PortNumber; - /** - * Range of allowed IP addresses. This value must be expressed in CIDR notation. Example: "000.000.000.000/[subnet mask]" or optionally the shortened version "0.0.0.0/[subnet mask]". - */ - IpRange: NonBlankString; - /** - * Network communication protocol used by the fleet. - */ - Protocol: IpProtocol; - } - export type IpPermissionsList = IpPermission[]; - export type IpProtocol = "TCP"|"UDP"|string; - export type LatencyMap = {[key: string]: PositiveInteger}; - export interface ListAliasesInput { - /** - * Type of routing to filter results on. Use this parameter to retrieve only aliases of a certain type. To retrieve all aliases, leave this parameter empty. Possible routing types include the following: SIMPLE -- The alias resolves to one specific fleet. Use this type when routing to active fleets. TERMINAL -- The alias does not resolve to a fleet but instead can be used to display a message to the user. A terminal alias throws a TerminalRoutingStrategyException with the RoutingStrategy message embedded. - */ - RoutingStrategyType?: RoutingStrategyType; - /** - * Descriptive label that is associated with an alias. Alias names do not need to be unique. - */ - Name?: NonEmptyString; - /** - * Maximum number of results to return. Use this parameter with NextToken to get results as a set of sequential pages. - */ - Limit?: PositiveInteger; - /** - * Token that indicates the start of the next sequential page of results. Use the token that is returned with a previous call to this action. To start at the beginning of the result set, do not specify a value. - */ - NextToken?: NonEmptyString; - } - export interface ListAliasesOutput { - /** - * Collection of alias records that match the list request. - */ - Aliases?: AliasList; - /** - * Token that indicates where to resume retrieving results on the next call to this action. If no token is returned, these results represent the end of the list. - */ - NextToken?: NonEmptyString; - } - export interface ListBuildsInput { - /** - * Build status to filter results by. To retrieve all builds, leave this parameter empty. Possible build statuses include the following: INITIALIZED -- A new build has been defined, but no files have been uploaded. You cannot create fleets for builds that are in this status. When a build is successfully created, the build status is set to this value. READY -- The game build has been successfully uploaded. You can now create new fleets for this build. FAILED -- The game build upload failed. You cannot create new fleets for this build. - */ - Status?: BuildStatus; - /** - * Maximum number of results to return. Use this parameter with NextToken to get results as a set of sequential pages. - */ - Limit?: PositiveInteger; - /** - * Token that indicates the start of the next sequential page of results. Use the token that is returned with a previous call to this action. To start at the beginning of the result set, do not specify a value. - */ - NextToken?: NonEmptyString; - } - export interface ListBuildsOutput { - /** - * Collection of build records that match the request. - */ - Builds?: BuildList; - /** - * Token that indicates where to resume retrieving results on the next call to this action. If no token is returned, these results represent the end of the list. - */ - NextToken?: NonEmptyString; - } - export interface ListFleetsInput { - /** - * Unique identifier for a build to return fleets for. Use this parameter to return only fleets using the specified build. To retrieve all fleets, leave this parameter empty. - */ - BuildId?: BuildId; - /** - * Maximum number of results to return. Use this parameter with NextToken to get results as a set of sequential pages. - */ - Limit?: PositiveInteger; - /** - * Token that indicates the start of the next sequential page of results. Use the token that is returned with a previous call to this action. To start at the beginning of the result set, do not specify a value. - */ - NextToken?: NonZeroAndMaxString; - } - export interface ListFleetsOutput { - /** - * Set of fleet IDs matching the list request. You can retrieve additional information about all returned fleets by passing this result set to a call to DescribeFleetAttributes, DescribeFleetCapacity, or DescribeFleetUtilization. - */ - FleetIds?: FleetIdList; - /** - * Token that indicates where to resume retrieving results on the next call to this action. If no token is returned, these results represent the end of the list. - */ - NextToken?: NonZeroAndMaxString; - } - export interface MatchedPlayerSession { - /** - * Unique identifier for a player - */ - PlayerId?: NonZeroAndMaxString; - /** - * Unique identifier for a player session - */ - PlayerSessionId?: PlayerSessionId; - } - export type MatchedPlayerSessionList = MatchedPlayerSession[]; - export type MatchmakingAcceptanceTimeoutInteger = number; - export interface MatchmakingConfiguration { - /** - * Unique identifier for a matchmaking configuration. This name is used to identify the configuration associated with a matchmaking request or ticket. - */ - Name?: MatchmakingIdStringModel; - /** - * Descriptive label that is associated with matchmaking configuration. - */ - Description?: NonZeroAndMaxString; - /** - * Amazon Resource Name (ARN) that is assigned to a game session queue and uniquely identifies it. Format is arn:aws:gamelift:<region>::fleet/fleet-a1234567-b8c9-0d1e-2fa3-b45c6d7e8912. These queues are used when placing game sessions for matches that are created with this matchmaking configuration. Queues can be located in any region. - */ - GameSessionQueueArns?: QueueArnsList; - /** - * Maximum duration, in seconds, that a matchmaking ticket can remain in process before timing out. Requests that time out can be resubmitted as needed. - */ - RequestTimeoutSeconds?: MatchmakingRequestTimeoutInteger; - /** - * Length of time (in seconds) to wait for players to accept a proposed match. If any player rejects the match or fails to accept before the timeout, the ticket continues to look for an acceptable match. - */ - AcceptanceTimeoutSeconds?: MatchmakingAcceptanceTimeoutInteger; - /** - * Flag that determines whether or not a match that was created with this configuration must be accepted by the matched players. To require acceptance, set to TRUE. - */ - AcceptanceRequired?: Boolean; - /** - * Unique identifier for a matchmaking rule set to use with this configuration. A matchmaking configuration can only use rule sets that are defined in the same region. - */ - RuleSetName?: MatchmakingIdStringModel; - /** - * SNS topic ARN that is set up to receive matchmaking notifications. - */ - NotificationTarget?: SnsArnStringModel; - /** - * Number of player slots in a match to keep open for future players. For example, if the configuration's rule set specifies a match for a single 12-person team, and the additional player count is set to 2, only 10 players are selected for the match. - */ - AdditionalPlayerCount?: WholeNumber; - /** - * Information to attached to all events related to the matchmaking configuration. - */ - CustomEventData?: CustomEventData; - /** - * Time stamp indicating when this data object was created. Format is a number expressed in Unix time as milliseconds (for example "1469498468.057"). - */ - CreationTime?: Timestamp; - /** - * Set of developer-defined properties for a game session, formatted as a set of type:value pairs. These properties are included in the GameSession object, which is passed to the game server with a request to start a new game session (see Start a Game Session). This information is added to the new GameSession object that is created for a successful match. - */ - GameProperties?: GamePropertyList; - /** - * Set of developer-defined game session properties, formatted as a single string value. This data is included in the GameSession object, which is passed to the game server with a request to start a new game session (see Start a Game Session). This information is added to the new GameSession object that is created for a successful match. - */ - GameSessionData?: GameSessionData; - } - export type MatchmakingConfigurationList = MatchmakingConfiguration[]; - export type MatchmakingConfigurationStatus = "CANCELLED"|"COMPLETED"|"FAILED"|"PLACING"|"QUEUED"|"REQUIRES_ACCEPTANCE"|"SEARCHING"|"TIMED_OUT"|string; - export type MatchmakingIdList = MatchmakingIdStringModel[]; - export type MatchmakingIdStringModel = string; - export type MatchmakingPlayerIdList = PlayerIdStringModel[]; - export type MatchmakingRequestTimeoutInteger = number; - export interface MatchmakingRuleSet { - /** - * Unique identifier for a matchmaking rule set - */ - RuleSetName?: MatchmakingIdStringModel; - /** - * Collection of matchmaking rules, formatted as a JSON string. (Note that comments14 are not allowed in JSON, but most elements support a description field.) - */ - RuleSetBody: RuleSetBody; - /** - * Time stamp indicating when this data object was created. Format is a number expressed in Unix time as milliseconds (for example "1469498468.057"). - */ - CreationTime?: Timestamp; - } - export type MatchmakingRuleSetList = MatchmakingRuleSet[]; - export type MatchmakingRuleSetNameList = MatchmakingIdStringModel[]; - export interface MatchmakingTicket { - /** - * Unique identifier for a matchmaking ticket. - */ - TicketId?: MatchmakingIdStringModel; - /** - * Name of the MatchmakingConfiguration that is used with this ticket. Matchmaking configurations determine how players are grouped into a match and how a new game session is created for the match. - */ - ConfigurationName?: MatchmakingIdStringModel; - /** - * Current status of the matchmaking request. QUEUED -- The matchmaking request has been received and is currently waiting to be processed. SEARCHING -- The matchmaking request is currently being processed. REQUIRES_ACCEPTANCE -- A match has been proposed and the players must accept the match (see AcceptMatch). This status is used only with requests that use a matchmaking configuration with a player acceptance requirement. PLACING -- The FlexMatch engine has matched players and is in the process of placing a new game session for the match. COMPLETED -- Players have been matched and a game session is ready to host the players. A ticket in this state contains the necessary connection information for players. FAILED -- The matchmaking request was not completed. Tickets with players who fail to accept a proposed match are placed in FAILED status; new matchmaking requests can be submitted for these players. CANCELLED -- The matchmaking request was canceled with a call to StopMatchmaking. TIMED_OUT -- The matchmaking request was not completed within the duration specified in the matchmaking configuration. Matchmaking requests that time out can be resubmitted. - */ - Status?: MatchmakingConfigurationStatus; - /** - * Code to explain the current status. For example, a status reason may indicate when a ticket has returned to SEARCHING status after a proposed match fails to receive player acceptances. - */ - StatusReason?: StringModel; - /** - * Additional information about the current status. - */ - StatusMessage?: StringModel; - /** - * Time stamp indicating when this matchmaking request was received. Format is a number expressed in Unix time as milliseconds (for example "1469498468.057"). - */ - StartTime?: Timestamp; - /** - * Time stamp indicating when the matchmaking request stopped being processed due to successful completion, timeout, or cancellation. Format is a number expressed in Unix time as milliseconds (for example "1469498468.057"). - */ - EndTime?: Timestamp; - /** - * A set of Player objects, each representing a player to find matches for. Players are identified by a unique player ID and may include latency data for use during matchmaking. If the ticket is in status COMPLETED, the Player objects include the team the players were assigned to in the resulting match. - */ - Players?: PlayerList; - /** - * Identifier and connection information of the game session created for the match. This information is added to the ticket only after the matchmaking request has been successfully completed. - */ - GameSessionConnectionInfo?: GameSessionConnectionInfo; - /** - * Average amount of time (in seconds) that players are currently waiting for a match. If there is not enough recent data, this property may be empty. - */ - EstimatedWaitTime?: WholeNumber; - } - export type MatchmakingTicketList = MatchmakingTicket[]; - export type MaxConcurrentGameSessionActivations = number; - export type MetricGroup = string; - export type MetricGroupList = MetricGroup[]; - export type MetricName = "ActivatingGameSessions"|"ActiveGameSessions"|"ActiveInstances"|"AvailableGameSessions"|"AvailablePlayerSessions"|"CurrentPlayerSessions"|"IdleInstances"|"PercentAvailableGameSessions"|"PercentIdleInstances"|"QueueDepth"|"WaitTime"|string; - export type NonBlankAndLengthConstraintString = string; - export type NonBlankString = string; - export type NonEmptyString = string; - export type NonZeroAndMaxString = string; - export type OperatingSystem = "WINDOWS_2012"|"AMAZON_LINUX"|string; - export interface PlacedPlayerSession { - /** - * Unique identifier for a player that is associated with this player session. - */ - PlayerId?: NonZeroAndMaxString; - /** - * Unique identifier for a player session. - */ - PlayerSessionId?: PlayerSessionId; - } - export type PlacedPlayerSessionList = PlacedPlayerSession[]; - export interface Player { - /** - * Unique identifier for a player - */ - PlayerId?: PlayerIdStringModel; - /** - * Collection of name:value pairs containing player information for use in matchmaking. Player attribute names need to match playerAttributes names in the rule set being used. Example: "PlayerAttributes": {"skill": {"N": "23"}, "gameMode": {"S": "deathmatch"}}. - */ - PlayerAttributes?: PlayerAttributeMap; - /** - * Name of the team that the player is assigned to in a match. Team names are defined in a matchmaking rule set. - */ - Team?: NonZeroAndMaxString; - /** - * Set of values, expressed in milliseconds, indicating the amount of latency that a player experiences when connected to AWS regions. If this property is present, FlexMatch considers placing the match only in regions for which latency is reported. If a matchmaker has a rule that evaluates player latency, players must report latency in order to be matched. If no latency is reported in this scenario, FlexMatch assumes that no regions are available to the player and the ticket is not matchable. - */ - LatencyInMs?: LatencyMap; - } - export type PlayerAttributeMap = {[key: string]: AttributeValue}; - export type PlayerData = string; - export type PlayerDataMap = {[key: string]: PlayerData}; - export type PlayerIdList = NonZeroAndMaxString[]; - export type PlayerIdStringModel = string; - export interface PlayerLatency { - /** - * Unique identifier for a player associated with the latency data. - */ - PlayerId?: NonZeroAndMaxString; - /** - * Name of the region that is associated with the latency value. - */ - RegionIdentifier?: NonZeroAndMaxString; - /** - * Amount of time that represents the time lag experienced by the player when connected to the specified region. - */ - LatencyInMilliseconds?: Float; - } - export type PlayerLatencyList = PlayerLatency[]; - export interface PlayerLatencyPolicy { - /** - * The maximum latency value that is allowed for any player, in milliseconds. All policies must have a value set for this property. - */ - MaximumIndividualPlayerLatencyMilliseconds?: WholeNumber; - /** - * The length of time, in seconds, that the policy is enforced while placing a new game session. A null value for this property means that the policy is enforced until the queue times out. - */ - PolicyDurationSeconds?: WholeNumber; - } - export type PlayerLatencyPolicyList = PlayerLatencyPolicy[]; - export type PlayerList = Player[]; - export interface PlayerSession { - /** - * Unique identifier for a player session. - */ - PlayerSessionId?: PlayerSessionId; - /** - * Unique identifier for a player that is associated with this player session. - */ - PlayerId?: NonZeroAndMaxString; - /** - * Unique identifier for the game session that the player session is connected to. - */ - GameSessionId?: NonZeroAndMaxString; - /** - * Unique identifier for a fleet that the player's game session is running on. - */ - FleetId?: FleetId; - /** - * Time stamp indicating when this data object was created. Format is a number expressed in Unix time as milliseconds (for example "1469498468.057"). - */ - CreationTime?: Timestamp; - /** - * Time stamp indicating when this data object was terminated. Format is a number expressed in Unix time as milliseconds (for example "1469498468.057"). - */ - TerminationTime?: Timestamp; - /** - * Current status of the player session. Possible player session statuses include the following: RESERVED -- The player session request has been received, but the player has not yet connected to the server process and/or been validated. ACTIVE -- The player has been validated by the server process and is currently connected. COMPLETED -- The player connection has been dropped. TIMEDOUT -- A player session request was received, but the player did not connect and/or was not validated within the timeout limit (60 seconds). - */ - Status?: PlayerSessionStatus; - /** - * IP address of the game session. To connect to a Amazon GameLift game server, an app needs both the IP address and port number. - */ - IpAddress?: IpAddress; - /** - * Port number for the game session. To connect to a Amazon GameLift server process, an app needs both the IP address and port number. - */ - Port?: PortNumber; - /** - * Developer-defined information related to a player. Amazon GameLift does not use this data, so it can be formatted as needed for use in the game. - */ - PlayerData?: PlayerData; - } - export type PlayerSessionCreationPolicy = "ACCEPT_ALL"|"DENY_ALL"|string; - export type PlayerSessionId = string; - export type PlayerSessionList = PlayerSession[]; - export type PlayerSessionStatus = "RESERVED"|"ACTIVE"|"COMPLETED"|"TIMEDOUT"|string; - export type PortNumber = number; - export type PositiveInteger = number; - export type PositiveLong = number; - export type ProtectionPolicy = "NoProtection"|"FullProtection"|string; - export interface PutScalingPolicyInput { - /** - * Descriptive label that is associated with a scaling policy. Policy names do not need to be unique. A fleet can have only one scaling policy with the same name. - */ - Name: NonZeroAndMaxString; - /** - * Unique identifier for a fleet to apply this policy to. - */ - FleetId: FleetId; - /** - * Amount of adjustment to make, based on the scaling adjustment type. - */ - ScalingAdjustment: Integer; - /** - * Type of adjustment to make to a fleet's instance count (see FleetCapacity): ChangeInCapacity -- add (or subtract) the scaling adjustment value from the current instance count. Positive values scale up while negative values scale down. ExactCapacity -- set the instance count to the scaling adjustment value. PercentChangeInCapacity -- increase or reduce the current instance count by the scaling adjustment, read as a percentage. Positive values scale up while negative values scale down; for example, a value of "-10" scales the fleet down by 10%. - */ - ScalingAdjustmentType: ScalingAdjustmentType; - /** - * Metric value used to trigger a scaling event. - */ - Threshold: Double; - /** - * Comparison operator to use when measuring the metric against the threshold value. - */ - ComparisonOperator: ComparisonOperatorType; - /** - * Length of time (in minutes) the metric must be at or beyond the threshold before a scaling event is triggered. - */ - EvaluationPeriods: PositiveInteger; - /** - * Name of the Amazon GameLift-defined metric that is used to trigger an adjustment. ActivatingGameSessions -- number of game sessions in the process of being created (game session status = ACTIVATING). ActiveGameSessions -- number of game sessions currently running (game session status = ACTIVE). CurrentPlayerSessions -- number of active or reserved player sessions (player session status = ACTIVE or RESERVED). AvailablePlayerSessions -- number of player session slots currently available in active game sessions across the fleet, calculated by subtracting a game session's current player session count from its maximum player session count. This number includes game sessions that are not currently accepting players (game session PlayerSessionCreationPolicy = DENY_ALL). ActiveInstances -- number of instances currently running a game session. IdleInstances -- number of instances not currently running a game session. - */ - MetricName: MetricName; - } - export interface PutScalingPolicyOutput { - /** - * Descriptive label that is associated with a scaling policy. Policy names do not need to be unique. - */ - Name?: NonZeroAndMaxString; - } - export type QueueArnsList = ArnStringModel[]; - export interface RequestUploadCredentialsInput { - /** - * Unique identifier for a build to get credentials for. - */ - BuildId: BuildId; - } - export interface RequestUploadCredentialsOutput { - /** - * AWS credentials required when uploading a game build to the storage location. These credentials have a limited lifespan and are valid only for the build they were issued for. - */ - UploadCredentials?: AwsCredentials; - /** - * Amazon S3 path and key, identifying where the game build files are stored. - */ - StorageLocation?: S3Location; - } - export interface ResolveAliasInput { - /** - * Unique identifier for the alias you want to resolve. - */ - AliasId: AliasId; - } - export interface ResolveAliasOutput { - /** - * Fleet identifier that is associated with the requested alias. - */ - FleetId?: FleetId; - } - export interface ResourceCreationLimitPolicy { - /** - * Maximum number of game sessions that an individual can create during the policy period. - */ - NewGameSessionsPerCreator?: WholeNumber; - /** - * Time span used in evaluating the resource creation limit policy. - */ - PolicyPeriodInMinutes?: WholeNumber; - } - export interface RoutingStrategy { - /** - * Type of routing strategy. Possible routing types include the following: SIMPLE -- The alias resolves to one specific fleet. Use this type when routing to active fleets. TERMINAL -- The alias does not resolve to a fleet but instead can be used to display a message to the user. A terminal alias throws a TerminalRoutingStrategyException with the RoutingStrategy message embedded. - */ - Type?: RoutingStrategyType; - /** - * Unique identifier for a fleet that the alias points to. - */ - FleetId?: FleetId; - /** - * Message text to be used with a terminal routing strategy. - */ - Message?: FreeText; - } - export type RoutingStrategyType = "SIMPLE"|"TERMINAL"|string; - export type RuleSetBody = string; - export type RuleSetLimit = number; - export interface RuntimeConfiguration { - /** - * Collection of server process configurations that describe which server processes to run on each instance in a fleet. - */ - ServerProcesses?: ServerProcessList; - /** - * Maximum number of game sessions with status ACTIVATING to allow on an instance simultaneously. This setting limits the amount of instance resources that can be used for new game activations at any one time. - */ - MaxConcurrentGameSessionActivations?: MaxConcurrentGameSessionActivations; - /** - * Maximum amount of time (in seconds) that a game session can remain in status ACTIVATING. If the game session is not active before the timeout, activation is terminated and the game session status is changed to TERMINATED. - */ - GameSessionActivationTimeoutSeconds?: GameSessionActivationTimeoutSeconds; - } - export interface S3Location { - /** - * Amazon S3 bucket identifier. This is the name of your S3 bucket. - */ - Bucket?: NonEmptyString; - /** - * Name of the zip file containing your build files. - */ - Key?: NonEmptyString; - /** - * Amazon Resource Name (ARN) for the access role that allows Amazon GameLift to access your S3 bucket. - */ - RoleArn?: NonEmptyString; - } - export type ScalingAdjustmentType = "ChangeInCapacity"|"ExactCapacity"|"PercentChangeInCapacity"|string; - export interface ScalingPolicy { - /** - * Unique identifier for a fleet that is associated with this scaling policy. - */ - FleetId?: FleetId; - /** - * Descriptive label that is associated with a scaling policy. Policy names do not need to be unique. - */ - Name?: NonZeroAndMaxString; - /** - * Current status of the scaling policy. The scaling policy is only in force when in an ACTIVE status. ACTIVE -- The scaling policy is currently in force. UPDATE_REQUESTED -- A request to update the scaling policy has been received. UPDATING -- A change is being made to the scaling policy. DELETE_REQUESTED -- A request to delete the scaling policy has been received. DELETING -- The scaling policy is being deleted. DELETED -- The scaling policy has been deleted. ERROR -- An error occurred in creating the policy. It should be removed and recreated. - */ - Status?: ScalingStatusType; - /** - * Amount of adjustment to make, based on the scaling adjustment type. - */ - ScalingAdjustment?: Integer; - /** - * Type of adjustment to make to a fleet's instance count (see FleetCapacity): ChangeInCapacity -- add (or subtract) the scaling adjustment value from the current instance count. Positive values scale up while negative values scale down. ExactCapacity -- set the instance count to the scaling adjustment value. PercentChangeInCapacity -- increase or reduce the current instance count by the scaling adjustment, read as a percentage. Positive values scale up while negative values scale down. - */ - ScalingAdjustmentType?: ScalingAdjustmentType; - /** - * Comparison operator to use when measuring a metric against the threshold value. - */ - ComparisonOperator?: ComparisonOperatorType; - /** - * Metric value used to trigger a scaling event. - */ - Threshold?: Double; - /** - * Length of time (in minutes) the metric must be at or beyond the threshold before a scaling event is triggered. - */ - EvaluationPeriods?: PositiveInteger; - /** - * Name of the Amazon GameLift-defined metric that is used to trigger an adjustment. ActivatingGameSessions -- number of game sessions in the process of being created (game session status = ACTIVATING). ActiveGameSessions -- number of game sessions currently running (game session status = ACTIVE). CurrentPlayerSessions -- number of active or reserved player sessions (player session status = ACTIVE or RESERVED). AvailablePlayerSessions -- number of player session slots currently available in active game sessions across the fleet, calculated by subtracting a game session's current player session count from its maximum player session count. This number does include game sessions that are not currently accepting players (game session PlayerSessionCreationPolicy = DENY_ALL). ActiveInstances -- number of instances currently running a game session. IdleInstances -- number of instances not currently running a game session. - */ - MetricName?: MetricName; - } - export type ScalingPolicyList = ScalingPolicy[]; - export type ScalingStatusType = "ACTIVE"|"UPDATE_REQUESTED"|"UPDATING"|"DELETE_REQUESTED"|"DELETING"|"DELETED"|"ERROR"|string; - export interface SearchGameSessionsInput { - /** - * Unique identifier for a fleet to search for active game sessions. Each request must reference either a fleet ID or alias ID, but not both. - */ - FleetId?: FleetId; - /** - * Unique identifier for an alias associated with the fleet to search for active game sessions. Each request must reference either a fleet ID or alias ID, but not both. - */ - AliasId?: AliasId; - /** - * String containing the search criteria for the session search. If no filter expression is included, the request returns results for all game sessions in the fleet that are in ACTIVE status. A filter expression can contain one or multiple conditions. Each condition consists of the following: Operand -- Name of a game session attribute. Valid values are gameSessionName, gameSessionId, creationTimeMillis, playerSessionCount, maximumSessions, hasAvailablePlayerSessions. Comparator -- Valid comparators are: =, <>, <, >, <=, >=. Value -- Value to be searched for. Values can be numbers, boolean values (true/false) or strings. String values are case sensitive, enclosed in single quotes. Special characters must be escaped. Boolean and string values can only be used with the comparators = and <>. For example, the following filter expression searches on gameSessionName: "FilterExpression": "gameSessionName = 'Matt\\'s Awesome Game 1'". To chain multiple conditions in a single expression, use the logical keywords AND, OR, and NOT and parentheses as needed. For example: x AND y AND NOT z, NOT (x OR y). Session search evaluates conditions from left to right using the following precedence rules: =, <>, <, >, <=, >= Parentheses NOT AND OR For example, this filter expression retrieves game sessions hosting at least ten players that have an open player slot: "maximumSessions>=10 AND hasAvailablePlayerSessions=true". - */ - FilterExpression?: NonZeroAndMaxString; - /** - * Instructions on how to sort the search results. If no sort expression is included, the request returns results in random order. A sort expression consists of the following elements: Operand -- Name of a game session attribute. Valid values are gameSessionName, gameSessionId, creationTimeMillis, playerSessionCount, maximumSessions, hasAvailablePlayerSessions. Order -- Valid sort orders are ASC (ascending) and DESC (descending). For example, this sort expression returns the oldest active sessions first: "SortExpression": "creationTimeMillis ASC". Results with a null value for the sort operand are returned at the end of the list. - */ - SortExpression?: NonZeroAndMaxString; - /** - * Maximum number of results to return. Use this parameter with NextToken to get results as a set of sequential pages. The maximum number of results returned is 20, even if this value is not set or is set higher than 20. - */ - Limit?: PositiveInteger; - /** - * Token that indicates the start of the next sequential page of results. Use the token that is returned with a previous call to this action. To start at the beginning of the result set, do not specify a value. - */ - NextToken?: NonZeroAndMaxString; - } - export interface SearchGameSessionsOutput { - /** - * Collection of objects containing game session properties for each session matching the request. - */ - GameSessions?: GameSessionList; - /** - * Token that indicates where to resume retrieving results on the next call to this action. If no token is returned, these results represent the end of the list. - */ - NextToken?: NonZeroAndMaxString; - } - export interface ServerProcess { - /** - * Location of the server executable in a game build. All game builds are installed on instances at the root : for Windows instances C:\game, and for Linux instances /local/game. A Windows game build with an executable file located at MyGame\latest\server.exe must have a launch path of "C:\game\MyGame\latest\server.exe". A Linux game build with an executable file located at MyGame/latest/server.exe must have a launch path of "/local/game/MyGame/latest/server.exe". - */ - LaunchPath: NonZeroAndMaxString; - /** - * Optional list of parameters to pass to the server executable on launch. - */ - Parameters?: NonZeroAndMaxString; - /** - * Number of server processes using this configuration to run concurrently on an instance. - */ - ConcurrentExecutions: PositiveInteger; - } - export type ServerProcessList = ServerProcess[]; - export type SnsArnStringModel = string; - export interface StartGameSessionPlacementInput { - /** - * Unique identifier to assign to the new game session placement. This value is developer-defined. The value must be unique across all regions and cannot be reused unless you are resubmitting a canceled or timed-out placement request. - */ - PlacementId: IdStringModel; - /** - * Name of the queue to use to place the new game session. - */ - GameSessionQueueName: GameSessionQueueName; - /** - * Set of developer-defined properties for a game session, formatted as a set of type:value pairs. These properties are included in the GameSession object, which is passed to the game server with a request to start a new game session (see Start a Game Session). - */ - GameProperties?: GamePropertyList; - /** - * Maximum number of players that can be connected simultaneously to the game session. - */ - MaximumPlayerSessionCount: WholeNumber; - /** - * Descriptive label that is associated with a game session. Session names do not need to be unique. - */ - GameSessionName?: NonZeroAndMaxString; - /** - * Set of values, expressed in milliseconds, indicating the amount of latency that a player experiences when connected to AWS regions. This information is used to try to place the new game session where it can offer the best possible gameplay experience for the players. - */ - PlayerLatencies?: PlayerLatencyList; - /** - * Set of information on each player to create a player session for. - */ - DesiredPlayerSessions?: DesiredPlayerSessionList; - /** - * Set of developer-defined game session properties, formatted as a single string value. This data is included in the GameSession object, which is passed to the game server with a request to start a new game session (see Start a Game Session). - */ - GameSessionData?: GameSessionData; - } - export interface StartGameSessionPlacementOutput { - /** - * Object that describes the newly created game session placement. This object includes all the information provided in the request, as well as start/end time stamps and placement status. - */ - GameSessionPlacement?: GameSessionPlacement; - } - export interface StartMatchmakingInput { - /** - * Unique identifier for a matchmaking ticket. Use this identifier to track the matchmaking ticket status and retrieve match results. - */ - TicketId?: MatchmakingIdStringModel; - /** - * Name of the matchmaking configuration to use for this request. Matchmaking configurations must exist in the same region as this request. - */ - ConfigurationName: MatchmakingIdStringModel; - /** - * Information on each player to be matched. This information must include a player ID, and may contain player attributes and latency data to be used in the matchmaking process. After a successful match, Player objects contain the name of the team the player is assigned to. - */ - Players: PlayerList; - } - export interface StartMatchmakingOutput { - /** - * Ticket representing the matchmaking request. This object include the information included in the request, ticket status, and match results as generated during the matchmaking process. - */ - MatchmakingTicket?: MatchmakingTicket; - } - export interface StopGameSessionPlacementInput { - /** - * Unique identifier for a game session placement to cancel. - */ - PlacementId: IdStringModel; - } - export interface StopGameSessionPlacementOutput { - /** - * Object that describes the canceled game session placement, with CANCELLED status and an end time stamp. - */ - GameSessionPlacement?: GameSessionPlacement; - } - export interface StopMatchmakingInput { - /** - * Unique identifier for a matchmaking ticket. - */ - TicketId: MatchmakingIdStringModel; - } - export interface StopMatchmakingOutput { - } - export type StringDoubleMap = {[key: string]: DoubleObject}; - export type StringList = NonZeroAndMaxString[]; - export type StringModel = string; - export type Timestamp = Date; - export interface UpdateAliasInput { - /** - * Unique identifier for a fleet alias. Specify the alias you want to update. - */ - AliasId: AliasId; - /** - * Descriptive label that is associated with an alias. Alias names do not need to be unique. - */ - Name?: NonBlankAndLengthConstraintString; - /** - * Human-readable description of an alias. - */ - Description?: NonZeroAndMaxString; - /** - * Object that specifies the fleet and routing type to use for the alias. - */ - RoutingStrategy?: RoutingStrategy; - } - export interface UpdateAliasOutput { - /** - * Object that contains the updated alias configuration. - */ - Alias?: Alias; - } - export interface UpdateBuildInput { - /** - * Unique identifier for a build to update. - */ - BuildId: BuildId; - /** - * Descriptive label that is associated with a build. Build names do not need to be unique. - */ - Name?: NonZeroAndMaxString; - /** - * Version that is associated with this build. Version strings do not need to be unique. - */ - Version?: NonZeroAndMaxString; - } - export interface UpdateBuildOutput { - /** - * Object that contains the updated build record. - */ - Build?: Build; - } - export interface UpdateFleetAttributesInput { - /** - * Unique identifier for a fleet to update attribute metadata for. - */ - FleetId: FleetId; - /** - * Descriptive label that is associated with a fleet. Fleet names do not need to be unique. - */ - Name?: NonZeroAndMaxString; - /** - * Human-readable description of a fleet. - */ - Description?: NonZeroAndMaxString; - /** - * Game session protection policy to apply to all new instances created in this fleet. Instances that already exist are not affected. You can set protection for individual instances using UpdateGameSession. NoProtection -- The game session can be terminated during a scale-down event. FullProtection -- If the game session is in an ACTIVE status, it cannot be terminated during a scale-down event. - */ - NewGameSessionProtectionPolicy?: ProtectionPolicy; - /** - * Policy that limits the number of game sessions an individual player can create over a span of time. - */ - ResourceCreationLimitPolicy?: ResourceCreationLimitPolicy; - /** - * Names of metric groups to include this fleet in. Amazon CloudWatch uses a fleet metric group is to aggregate metrics from multiple fleets. Use an existing metric group name to add this fleet to the group. Or use a new name to create a new metric group. A fleet can only be included in one metric group at a time. - */ - MetricGroups?: MetricGroupList; - } - export interface UpdateFleetAttributesOutput { - /** - * Unique identifier for a fleet that was updated. - */ - FleetId?: FleetId; - } - export interface UpdateFleetCapacityInput { - /** - * Unique identifier for a fleet to update capacity for. - */ - FleetId: FleetId; - /** - * Number of EC2 instances you want this fleet to host. - */ - DesiredInstances?: WholeNumber; - /** - * Minimum value allowed for the fleet's instance count. Default if not set is 0. - */ - MinSize?: WholeNumber; - /** - * Maximum value allowed for the fleet's instance count. Default if not set is 1. - */ - MaxSize?: WholeNumber; - } - export interface UpdateFleetCapacityOutput { - /** - * Unique identifier for a fleet that was updated. - */ - FleetId?: FleetId; - } - export interface UpdateFleetPortSettingsInput { - /** - * Unique identifier for a fleet to update port settings for. - */ - FleetId: FleetId; - /** - * Collection of port settings to be added to the fleet record. - */ - InboundPermissionAuthorizations?: IpPermissionsList; - /** - * Collection of port settings to be removed from the fleet record. - */ - InboundPermissionRevocations?: IpPermissionsList; - } - export interface UpdateFleetPortSettingsOutput { - /** - * Unique identifier for a fleet that was updated. - */ - FleetId?: FleetId; - } - export interface UpdateGameSessionInput { - /** - * Unique identifier for the game session to update. - */ - GameSessionId: ArnStringModel; - /** - * Maximum number of players that can be connected simultaneously to the game session. - */ - MaximumPlayerSessionCount?: WholeNumber; - /** - * Descriptive label that is associated with a game session. Session names do not need to be unique. - */ - Name?: NonZeroAndMaxString; - /** - * Policy determining whether or not the game session accepts new players. - */ - PlayerSessionCreationPolicy?: PlayerSessionCreationPolicy; - /** - * Game session protection policy to apply to this game session only. NoProtection -- The game session can be terminated during a scale-down event. FullProtection -- If the game session is in an ACTIVE status, it cannot be terminated during a scale-down event. - */ - ProtectionPolicy?: ProtectionPolicy; - } - export interface UpdateGameSessionOutput { - /** - * Object that contains the updated game session metadata. - */ - GameSession?: GameSession; - } - export interface UpdateGameSessionQueueInput { - /** - * Descriptive label that is associated with game session queue. Queue names must be unique within each region. - */ - Name: GameSessionQueueName; - /** - * Maximum time, in seconds, that a new game session placement request remains in the queue. When a request exceeds this time, the game session placement changes to a TIMED_OUT status. - */ - TimeoutInSeconds?: WholeNumber; - /** - * Collection of latency policies to apply when processing game sessions placement requests with player latency information. Multiple policies are evaluated in order of the maximum latency value, starting with the lowest latency values. With just one policy, it is enforced at the start of the game session placement for the duration period. With multiple policies, each policy is enforced consecutively for its duration period. For example, a queue might enforce a 60-second policy followed by a 120-second policy, and then no policy for the remainder of the placement. When updating policies, provide a complete collection of policies. - */ - PlayerLatencyPolicies?: PlayerLatencyPolicyList; - /** - * List of fleets that can be used to fulfill game session placement requests in the queue. Fleets are identified by either a fleet ARN or a fleet alias ARN. Destinations are listed in default preference order. When updating this list, provide a complete list of destinations. - */ - Destinations?: GameSessionQueueDestinationList; - } - export interface UpdateGameSessionQueueOutput { - /** - * Object that describes the newly updated game session queue. - */ - GameSessionQueue?: GameSessionQueue; - } - export interface UpdateMatchmakingConfigurationInput { - /** - * Unique identifier for a matchmaking configuration to update. - */ - Name: MatchmakingIdStringModel; - /** - * Descriptive label that is associated with matchmaking configuration. - */ - Description?: NonZeroAndMaxString; - /** - * Amazon Resource Name (ARN) that is assigned to a game session queue and uniquely identifies it. Format is arn:aws:gamelift:<region>::fleet/fleet-a1234567-b8c9-0d1e-2fa3-b45c6d7e8912. These queues are used when placing game sessions for matches that are created with this matchmaking configuration. Queues can be located in any region. - */ - GameSessionQueueArns?: QueueArnsList; - /** - * Maximum duration, in seconds, that a matchmaking ticket can remain in process before timing out. Requests that time out can be resubmitted as needed. - */ - RequestTimeoutSeconds?: MatchmakingRequestTimeoutInteger; - /** - * Length of time (in seconds) to wait for players to accept a proposed match. If any player rejects the match or fails to accept before the timeout, the ticket continues to look for an acceptable match. - */ - AcceptanceTimeoutSeconds?: MatchmakingAcceptanceTimeoutInteger; - /** - * Flag that determines whether or not a match that was created with this configuration must be accepted by the matched players. To require acceptance, set to TRUE. - */ - AcceptanceRequired?: Boolean; - /** - * Unique identifier for a matchmaking rule set to use with this configuration. A matchmaking configuration can only use rule sets that are defined in the same region. - */ - RuleSetName?: MatchmakingIdStringModel; - /** - * SNS topic ARN that is set up to receive matchmaking notifications. See Setting up Notifications for Matchmaking for more information. - */ - NotificationTarget?: SnsArnStringModel; - /** - * Number of player slots in a match to keep open for future players. For example, if the configuration's rule set specifies a match for a single 12-person team, and the additional player count is set to 2, only 10 players are selected for the match. - */ - AdditionalPlayerCount?: WholeNumber; - /** - * Information to attached to all events related to the matchmaking configuration. - */ - CustomEventData?: CustomEventData; - /** - * Set of developer-defined properties for a game session, formatted as a set of type:value pairs. These properties are included in the GameSession object, which is passed to the game server with a request to start a new game session (see Start a Game Session). This information is added to the new GameSession object that is created for a successful match. - */ - GameProperties?: GamePropertyList; - /** - * Set of developer-defined game session properties, formatted as a single string value. This data is included in the GameSession object, which is passed to the game server with a request to start a new game session (see Start a Game Session). This information is added to the new GameSession object that is created for a successful match. - */ - GameSessionData?: GameSessionData; - } - export interface UpdateMatchmakingConfigurationOutput { - /** - * Object that describes the updated matchmaking configuration. - */ - Configuration?: MatchmakingConfiguration; - } - export interface UpdateRuntimeConfigurationInput { - /** - * Unique identifier for a fleet to update run-time configuration for. - */ - FleetId: FleetId; - /** - * Instructions for launching server processes on each instance in the fleet. The run-time configuration for a fleet has a collection of server process configurations, one for each type of server process to run on an instance. A server process configuration specifies the location of the server executable, launch parameters, and the number of concurrent processes with that configuration to maintain on each instance. - */ - RuntimeConfiguration: RuntimeConfiguration; - } - export interface UpdateRuntimeConfigurationOutput { - /** - * The run-time configuration currently in force. If the update was successful, this object matches the one in the request. - */ - RuntimeConfiguration?: RuntimeConfiguration; - } - export interface ValidateMatchmakingRuleSetInput { - /** - * Collection of matchmaking rules to validate, formatted as a JSON string. - */ - RuleSetBody: RuleSetBody; - } - export interface ValidateMatchmakingRuleSetOutput { - /** - * Response indicating whether or not the rule set is valid. - */ - Valid?: Boolean; - } - export interface VpcPeeringAuthorization { - /** - * Unique identifier for the AWS account that you use to manage your Amazon GameLift fleet. You can find your Account ID in the AWS Management Console under account settings. - */ - GameLiftAwsAccountId?: NonZeroAndMaxString; - /** - * - */ - PeerVpcAwsAccountId?: NonZeroAndMaxString; - /** - * Unique identifier for a VPC with resources to be accessed by your Amazon GameLift fleet. The VPC must be in the same region where your fleet is deployed. To get VPC information, including IDs, use the Virtual Private Cloud service tools, including the VPC Dashboard in the AWS Management Console. - */ - PeerVpcId?: NonZeroAndMaxString; - /** - * Time stamp indicating when this authorization was issued. Format is a number expressed in Unix time as milliseconds (for example "1469498468.057"). - */ - CreationTime?: Timestamp; - /** - * Time stamp indicating when this authorization expires (24 hours after issuance). Format is a number expressed in Unix time as milliseconds (for example "1469498468.057"). - */ - ExpirationTime?: Timestamp; - } - export type VpcPeeringAuthorizationList = VpcPeeringAuthorization[]; - export interface VpcPeeringConnection { - /** - * Unique identifier for a fleet. This ID determines the ID of the Amazon GameLift VPC for your fleet. - */ - FleetId?: FleetId; - /** - * CIDR block of IPv4 addresses assigned to the VPC peering connection for the GameLift VPC. The peered VPC also has an IPv4 CIDR block associated with it; these blocks cannot overlap or the peering connection cannot be created. - */ - IpV4CidrBlock?: NonZeroAndMaxString; - /** - * Unique identifier that is automatically assigned to the connection record. This ID is referenced in VPC peering connection events, and is used when deleting a connection with DeleteVpcPeeringConnection. - */ - VpcPeeringConnectionId?: NonZeroAndMaxString; - /** - * Object that contains status information about the connection. Status indicates if a connection is pending, successful, or failed. - */ - Status?: VpcPeeringConnectionStatus; - /** - * Unique identifier for a VPC with resources to be accessed by your Amazon GameLift fleet. The VPC must be in the same region where your fleet is deployed. To get VPC information, including IDs, use the Virtual Private Cloud service tools, including the VPC Dashboard in the AWS Management Console. - */ - PeerVpcId?: NonZeroAndMaxString; - /** - * Unique identifier for the VPC that contains the Amazon GameLift fleet for this connection. This VPC is managed by Amazon GameLift and does not appear in your AWS account. - */ - GameLiftVpcId?: NonZeroAndMaxString; - } - export type VpcPeeringConnectionList = VpcPeeringConnection[]; - export interface VpcPeeringConnectionStatus { - /** - * Code indicating the status of a VPC peering connection. - */ - Code?: NonZeroAndMaxString; - /** - * Additional messaging associated with the connection status. - */ - Message?: NonZeroAndMaxString; - } - export type WholeNumber = number; - /** - * A string in YYYY-MM-DD format that represents the latest possible API version that can be used in this service. Specify 'latest' to use the latest possible version. - */ - export type apiVersion = "2015-10-01"|"latest"|string; - export interface ClientApiVersions { - /** - * A string in YYYY-MM-DD format that represents the latest possible API version that can be used in this service. Specify 'latest' to use the latest possible version. - */ - apiVersion?: apiVersion; - } - export type ClientConfiguration = ServiceConfigurationOptions & ClientApiVersions; - /** - * Contains interfaces for use with the GameLift client. - */ - export import Types = GameLift; -} -export = GameLift; diff --git a/workshops/monte-carlo-on-ec2-spot-fleet/src/web/node_modules/aws-sdk/clients/gamelift.js b/workshops/monte-carlo-on-ec2-spot-fleet/src/web/node_modules/aws-sdk/clients/gamelift.js deleted file mode 100644 index 18ee4363..00000000 --- a/workshops/monte-carlo-on-ec2-spot-fleet/src/web/node_modules/aws-sdk/clients/gamelift.js +++ /dev/null @@ -1,18 +0,0 @@ -require('../lib/node_loader'); -var AWS = require('../lib/core'); -var Service = AWS.Service; -var apiLoader = AWS.apiLoader; - -apiLoader.services['gamelift'] = {}; -AWS.GameLift = Service.defineService('gamelift', ['2015-10-01']); -Object.defineProperty(apiLoader.services['gamelift'], '2015-10-01', { - get: function get() { - var model = require('../apis/gamelift-2015-10-01.min.json'); - model.paginators = require('../apis/gamelift-2015-10-01.paginators.json').pagination; - return model; - }, - enumerable: true, - configurable: true -}); - -module.exports = AWS.GameLift; diff --git a/workshops/monte-carlo-on-ec2-spot-fleet/src/web/node_modules/aws-sdk/clients/glacier.d.ts b/workshops/monte-carlo-on-ec2-spot-fleet/src/web/node_modules/aws-sdk/clients/glacier.d.ts deleted file mode 100644 index fd079bba..00000000 --- a/workshops/monte-carlo-on-ec2-spot-fleet/src/web/node_modules/aws-sdk/clients/glacier.d.ts +++ /dev/null @@ -1,1240 +0,0 @@ -import {Request} from '../lib/request'; -import {Response} from '../lib/response'; -import {AWSError} from '../lib/error'; -import {GlacierCustomizations} from '../lib/services/glacier'; -import {ServiceConfigurationOptions} from '../lib/service'; -import {ConfigBase as Config} from '../lib/config'; -import {Readable} from 'stream'; -interface Blob {} -declare class Glacier extends GlacierCustomizations { - /** - * Constructs a service object. This object has one method for each API operation. - */ - constructor(options?: Glacier.Types.ClientConfiguration) - config: Config & Glacier.Types.ClientConfiguration; - /** - * This operation aborts a multipart upload identified by the upload ID. After the Abort Multipart Upload request succeeds, you cannot upload any more parts to the multipart upload or complete the multipart upload. Aborting a completed upload fails. However, aborting an already-aborted upload will succeed, for a short time. For more information about uploading a part and completing a multipart upload, see UploadMultipartPart and CompleteMultipartUpload. This operation is idempotent. An AWS account has full permission to perform all operations (actions). However, AWS Identity and Access Management (IAM) users don't have any permissions by default. You must grant them explicit permission to perform specific actions. For more information, see Access Control Using AWS Identity and Access Management (IAM). For conceptual information and underlying REST API, see Working with Archives in Amazon Glacier and Abort Multipart Upload in the Amazon Glacier Developer Guide. - */ - abortMultipartUpload(params: Glacier.Types.AbortMultipartUploadInput, callback?: (err: AWSError, data: {}) => void): Request<{}, AWSError>; - /** - * This operation aborts a multipart upload identified by the upload ID. After the Abort Multipart Upload request succeeds, you cannot upload any more parts to the multipart upload or complete the multipart upload. Aborting a completed upload fails. However, aborting an already-aborted upload will succeed, for a short time. For more information about uploading a part and completing a multipart upload, see UploadMultipartPart and CompleteMultipartUpload. This operation is idempotent. An AWS account has full permission to perform all operations (actions). However, AWS Identity and Access Management (IAM) users don't have any permissions by default. You must grant them explicit permission to perform specific actions. For more information, see Access Control Using AWS Identity and Access Management (IAM). For conceptual information and underlying REST API, see Working with Archives in Amazon Glacier and Abort Multipart Upload in the Amazon Glacier Developer Guide. - */ - abortMultipartUpload(callback?: (err: AWSError, data: {}) => void): Request<{}, AWSError>; - /** - * This operation aborts the vault locking process if the vault lock is not in the Locked state. If the vault lock is in the Locked state when this operation is requested, the operation returns an AccessDeniedException error. Aborting the vault locking process removes the vault lock policy from the specified vault. A vault lock is put into the InProgress state by calling InitiateVaultLock. A vault lock is put into the Locked state by calling CompleteVaultLock. You can get the state of a vault lock by calling GetVaultLock. For more information about the vault locking process, see Amazon Glacier Vault Lock. For more information about vault lock policies, see Amazon Glacier Access Control with Vault Lock Policies. This operation is idempotent. You can successfully invoke this operation multiple times, if the vault lock is in the InProgress state or if there is no policy associated with the vault. - */ - abortVaultLock(params: Glacier.Types.AbortVaultLockInput, callback?: (err: AWSError, data: {}) => void): Request<{}, AWSError>; - /** - * This operation aborts the vault locking process if the vault lock is not in the Locked state. If the vault lock is in the Locked state when this operation is requested, the operation returns an AccessDeniedException error. Aborting the vault locking process removes the vault lock policy from the specified vault. A vault lock is put into the InProgress state by calling InitiateVaultLock. A vault lock is put into the Locked state by calling CompleteVaultLock. You can get the state of a vault lock by calling GetVaultLock. For more information about the vault locking process, see Amazon Glacier Vault Lock. For more information about vault lock policies, see Amazon Glacier Access Control with Vault Lock Policies. This operation is idempotent. You can successfully invoke this operation multiple times, if the vault lock is in the InProgress state or if there is no policy associated with the vault. - */ - abortVaultLock(callback?: (err: AWSError, data: {}) => void): Request<{}, AWSError>; - /** - * This operation adds the specified tags to a vault. Each tag is composed of a key and a value. Each vault can have up to 10 tags. If your request would cause the tag limit for the vault to be exceeded, the operation throws the LimitExceededException error. If a tag already exists on the vault under a specified key, the existing key value will be overwritten. For more information about tags, see Tagging Amazon Glacier Resources. - */ - addTagsToVault(params: Glacier.Types.AddTagsToVaultInput, callback?: (err: AWSError, data: {}) => void): Request<{}, AWSError>; - /** - * This operation adds the specified tags to a vault. Each tag is composed of a key and a value. Each vault can have up to 10 tags. If your request would cause the tag limit for the vault to be exceeded, the operation throws the LimitExceededException error. If a tag already exists on the vault under a specified key, the existing key value will be overwritten. For more information about tags, see Tagging Amazon Glacier Resources. - */ - addTagsToVault(callback?: (err: AWSError, data: {}) => void): Request<{}, AWSError>; - /** - * You call this operation to inform Amazon Glacier that all the archive parts have been uploaded and that Amazon Glacier can now assemble the archive from the uploaded parts. After assembling and saving the archive to the vault, Amazon Glacier returns the URI path of the newly created archive resource. Using the URI path, you can then access the archive. After you upload an archive, you should save the archive ID returned to retrieve the archive at a later point. You can also get the vault inventory to obtain a list of archive IDs in a vault. For more information, see InitiateJob. In the request, you must include the computed SHA256 tree hash of the entire archive you have uploaded. For information about computing a SHA256 tree hash, see Computing Checksums. On the server side, Amazon Glacier also constructs the SHA256 tree hash of the assembled archive. If the values match, Amazon Glacier saves the archive to the vault; otherwise, it returns an error, and the operation fails. The ListParts operation returns a list of parts uploaded for a specific multipart upload. It includes checksum information for each uploaded part that can be used to debug a bad checksum issue. Additionally, Amazon Glacier also checks for any missing content ranges when assembling the archive, if missing content ranges are found, Amazon Glacier returns an error and the operation fails. Complete Multipart Upload is an idempotent operation. After your first successful complete multipart upload, if you call the operation again within a short period, the operation will succeed and return the same archive ID. This is useful in the event you experience a network issue that causes an aborted connection or receive a 500 server error, in which case you can repeat your Complete Multipart Upload request and get the same archive ID without creating duplicate archives. Note, however, that after the multipart upload completes, you cannot call the List Parts operation and the multipart upload will not appear in List Multipart Uploads response, even if idempotent complete is possible. An AWS account has full permission to perform all operations (actions). However, AWS Identity and Access Management (IAM) users don't have any permissions by default. You must grant them explicit permission to perform specific actions. For more information, see Access Control Using AWS Identity and Access Management (IAM). For conceptual information and underlying REST API, see Uploading Large Archives in Parts (Multipart Upload) and Complete Multipart Upload in the Amazon Glacier Developer Guide. - */ - completeMultipartUpload(params: Glacier.Types.CompleteMultipartUploadInput, callback?: (err: AWSError, data: Glacier.Types.ArchiveCreationOutput) => void): Request; - /** - * You call this operation to inform Amazon Glacier that all the archive parts have been uploaded and that Amazon Glacier can now assemble the archive from the uploaded parts. After assembling and saving the archive to the vault, Amazon Glacier returns the URI path of the newly created archive resource. Using the URI path, you can then access the archive. After you upload an archive, you should save the archive ID returned to retrieve the archive at a later point. You can also get the vault inventory to obtain a list of archive IDs in a vault. For more information, see InitiateJob. In the request, you must include the computed SHA256 tree hash of the entire archive you have uploaded. For information about computing a SHA256 tree hash, see Computing Checksums. On the server side, Amazon Glacier also constructs the SHA256 tree hash of the assembled archive. If the values match, Amazon Glacier saves the archive to the vault; otherwise, it returns an error, and the operation fails. The ListParts operation returns a list of parts uploaded for a specific multipart upload. It includes checksum information for each uploaded part that can be used to debug a bad checksum issue. Additionally, Amazon Glacier also checks for any missing content ranges when assembling the archive, if missing content ranges are found, Amazon Glacier returns an error and the operation fails. Complete Multipart Upload is an idempotent operation. After your first successful complete multipart upload, if you call the operation again within a short period, the operation will succeed and return the same archive ID. This is useful in the event you experience a network issue that causes an aborted connection or receive a 500 server error, in which case you can repeat your Complete Multipart Upload request and get the same archive ID without creating duplicate archives. Note, however, that after the multipart upload completes, you cannot call the List Parts operation and the multipart upload will not appear in List Multipart Uploads response, even if idempotent complete is possible. An AWS account has full permission to perform all operations (actions). However, AWS Identity and Access Management (IAM) users don't have any permissions by default. You must grant them explicit permission to perform specific actions. For more information, see Access Control Using AWS Identity and Access Management (IAM). For conceptual information and underlying REST API, see Uploading Large Archives in Parts (Multipart Upload) and Complete Multipart Upload in the Amazon Glacier Developer Guide. - */ - completeMultipartUpload(callback?: (err: AWSError, data: Glacier.Types.ArchiveCreationOutput) => void): Request; - /** - * This operation completes the vault locking process by transitioning the vault lock from the InProgress state to the Locked state, which causes the vault lock policy to become unchangeable. A vault lock is put into the InProgress state by calling InitiateVaultLock. You can obtain the state of the vault lock by calling GetVaultLock. For more information about the vault locking process, Amazon Glacier Vault Lock. This operation is idempotent. This request is always successful if the vault lock is in the Locked state and the provided lock ID matches the lock ID originally used to lock the vault. If an invalid lock ID is passed in the request when the vault lock is in the Locked state, the operation returns an AccessDeniedException error. If an invalid lock ID is passed in the request when the vault lock is in the InProgress state, the operation throws an InvalidParameter error. - */ - completeVaultLock(params: Glacier.Types.CompleteVaultLockInput, callback?: (err: AWSError, data: {}) => void): Request<{}, AWSError>; - /** - * This operation completes the vault locking process by transitioning the vault lock from the InProgress state to the Locked state, which causes the vault lock policy to become unchangeable. A vault lock is put into the InProgress state by calling InitiateVaultLock. You can obtain the state of the vault lock by calling GetVaultLock. For more information about the vault locking process, Amazon Glacier Vault Lock. This operation is idempotent. This request is always successful if the vault lock is in the Locked state and the provided lock ID matches the lock ID originally used to lock the vault. If an invalid lock ID is passed in the request when the vault lock is in the Locked state, the operation returns an AccessDeniedException error. If an invalid lock ID is passed in the request when the vault lock is in the InProgress state, the operation throws an InvalidParameter error. - */ - completeVaultLock(callback?: (err: AWSError, data: {}) => void): Request<{}, AWSError>; - /** - * This operation creates a new vault with the specified name. The name of the vault must be unique within a region for an AWS account. You can create up to 1,000 vaults per account. If you need to create more vaults, contact Amazon Glacier. You must use the following guidelines when naming a vault. Names can be between 1 and 255 characters long. Allowed characters are a-z, A-Z, 0-9, '_' (underscore), '-' (hyphen), and '.' (period). This operation is idempotent. An AWS account has full permission to perform all operations (actions). However, AWS Identity and Access Management (IAM) users don't have any permissions by default. You must grant them explicit permission to perform specific actions. For more information, see Access Control Using AWS Identity and Access Management (IAM). For conceptual information and underlying REST API, see Creating a Vault in Amazon Glacier and Create Vault in the Amazon Glacier Developer Guide. - */ - createVault(params: Glacier.Types.CreateVaultInput, callback?: (err: AWSError, data: Glacier.Types.CreateVaultOutput) => void): Request; - /** - * This operation creates a new vault with the specified name. The name of the vault must be unique within a region for an AWS account. You can create up to 1,000 vaults per account. If you need to create more vaults, contact Amazon Glacier. You must use the following guidelines when naming a vault. Names can be between 1 and 255 characters long. Allowed characters are a-z, A-Z, 0-9, '_' (underscore), '-' (hyphen), and '.' (period). This operation is idempotent. An AWS account has full permission to perform all operations (actions). However, AWS Identity and Access Management (IAM) users don't have any permissions by default. You must grant them explicit permission to perform specific actions. For more information, see Access Control Using AWS Identity and Access Management (IAM). For conceptual information and underlying REST API, see Creating a Vault in Amazon Glacier and Create Vault in the Amazon Glacier Developer Guide. - */ - createVault(callback?: (err: AWSError, data: Glacier.Types.CreateVaultOutput) => void): Request; - /** - * This operation deletes an archive from a vault. Subsequent requests to initiate a retrieval of this archive will fail. Archive retrievals that are in progress for this archive ID may or may not succeed according to the following scenarios: If the archive retrieval job is actively preparing the data for download when Amazon Glacier receives the delete archive request, the archival retrieval operation might fail. If the archive retrieval job has successfully prepared the archive for download when Amazon Glacier receives the delete archive request, you will be able to download the output. This operation is idempotent. Attempting to delete an already-deleted archive does not result in an error. An AWS account has full permission to perform all operations (actions). However, AWS Identity and Access Management (IAM) users don't have any permissions by default. You must grant them explicit permission to perform specific actions. For more information, see Access Control Using AWS Identity and Access Management (IAM). For conceptual information and underlying REST API, see Deleting an Archive in Amazon Glacier and Delete Archive in the Amazon Glacier Developer Guide. - */ - deleteArchive(params: Glacier.Types.DeleteArchiveInput, callback?: (err: AWSError, data: {}) => void): Request<{}, AWSError>; - /** - * This operation deletes an archive from a vault. Subsequent requests to initiate a retrieval of this archive will fail. Archive retrievals that are in progress for this archive ID may or may not succeed according to the following scenarios: If the archive retrieval job is actively preparing the data for download when Amazon Glacier receives the delete archive request, the archival retrieval operation might fail. If the archive retrieval job has successfully prepared the archive for download when Amazon Glacier receives the delete archive request, you will be able to download the output. This operation is idempotent. Attempting to delete an already-deleted archive does not result in an error. An AWS account has full permission to perform all operations (actions). However, AWS Identity and Access Management (IAM) users don't have any permissions by default. You must grant them explicit permission to perform specific actions. For more information, see Access Control Using AWS Identity and Access Management (IAM). For conceptual information and underlying REST API, see Deleting an Archive in Amazon Glacier and Delete Archive in the Amazon Glacier Developer Guide. - */ - deleteArchive(callback?: (err: AWSError, data: {}) => void): Request<{}, AWSError>; - /** - * This operation deletes a vault. Amazon Glacier will delete a vault only if there are no archives in the vault as of the last inventory and there have been no writes to the vault since the last inventory. If either of these conditions is not satisfied, the vault deletion fails (that is, the vault is not removed) and Amazon Glacier returns an error. You can use DescribeVault to return the number of archives in a vault, and you can use Initiate a Job (POST jobs) to initiate a new inventory retrieval for a vault. The inventory contains the archive IDs you use to delete archives using Delete Archive (DELETE archive). This operation is idempotent. An AWS account has full permission to perform all operations (actions). However, AWS Identity and Access Management (IAM) users don't have any permissions by default. You must grant them explicit permission to perform specific actions. For more information, see Access Control Using AWS Identity and Access Management (IAM). For conceptual information and underlying REST API, see Deleting a Vault in Amazon Glacier and Delete Vault in the Amazon Glacier Developer Guide. - */ - deleteVault(params: Glacier.Types.DeleteVaultInput, callback?: (err: AWSError, data: {}) => void): Request<{}, AWSError>; - /** - * This operation deletes a vault. Amazon Glacier will delete a vault only if there are no archives in the vault as of the last inventory and there have been no writes to the vault since the last inventory. If either of these conditions is not satisfied, the vault deletion fails (that is, the vault is not removed) and Amazon Glacier returns an error. You can use DescribeVault to return the number of archives in a vault, and you can use Initiate a Job (POST jobs) to initiate a new inventory retrieval for a vault. The inventory contains the archive IDs you use to delete archives using Delete Archive (DELETE archive). This operation is idempotent. An AWS account has full permission to perform all operations (actions). However, AWS Identity and Access Management (IAM) users don't have any permissions by default. You must grant them explicit permission to perform specific actions. For more information, see Access Control Using AWS Identity and Access Management (IAM). For conceptual information and underlying REST API, see Deleting a Vault in Amazon Glacier and Delete Vault in the Amazon Glacier Developer Guide. - */ - deleteVault(callback?: (err: AWSError, data: {}) => void): Request<{}, AWSError>; - /** - * This operation deletes the access policy associated with the specified vault. The operation is eventually consistent; that is, it might take some time for Amazon Glacier to completely remove the access policy, and you might still see the effect of the policy for a short time after you send the delete request. This operation is idempotent. You can invoke delete multiple times, even if there is no policy associated with the vault. For more information about vault access policies, see Amazon Glacier Access Control with Vault Access Policies. - */ - deleteVaultAccessPolicy(params: Glacier.Types.DeleteVaultAccessPolicyInput, callback?: (err: AWSError, data: {}) => void): Request<{}, AWSError>; - /** - * This operation deletes the access policy associated with the specified vault. The operation is eventually consistent; that is, it might take some time for Amazon Glacier to completely remove the access policy, and you might still see the effect of the policy for a short time after you send the delete request. This operation is idempotent. You can invoke delete multiple times, even if there is no policy associated with the vault. For more information about vault access policies, see Amazon Glacier Access Control with Vault Access Policies. - */ - deleteVaultAccessPolicy(callback?: (err: AWSError, data: {}) => void): Request<{}, AWSError>; - /** - * This operation deletes the notification configuration set for a vault. The operation is eventually consistent; that is, it might take some time for Amazon Glacier to completely disable the notifications and you might still receive some notifications for a short time after you send the delete request. An AWS account has full permission to perform all operations (actions). However, AWS Identity and Access Management (IAM) users don't have any permissions by default. You must grant them explicit permission to perform specific actions. For more information, see Access Control Using AWS Identity and Access Management (IAM). For conceptual information and underlying REST API, see Configuring Vault Notifications in Amazon Glacier and Delete Vault Notification Configuration in the Amazon Glacier Developer Guide. - */ - deleteVaultNotifications(params: Glacier.Types.DeleteVaultNotificationsInput, callback?: (err: AWSError, data: {}) => void): Request<{}, AWSError>; - /** - * This operation deletes the notification configuration set for a vault. The operation is eventually consistent; that is, it might take some time for Amazon Glacier to completely disable the notifications and you might still receive some notifications for a short time after you send the delete request. An AWS account has full permission to perform all operations (actions). However, AWS Identity and Access Management (IAM) users don't have any permissions by default. You must grant them explicit permission to perform specific actions. For more information, see Access Control Using AWS Identity and Access Management (IAM). For conceptual information and underlying REST API, see Configuring Vault Notifications in Amazon Glacier and Delete Vault Notification Configuration in the Amazon Glacier Developer Guide. - */ - deleteVaultNotifications(callback?: (err: AWSError, data: {}) => void): Request<{}, AWSError>; - /** - * This operation returns information about a job you previously initiated, including the job initiation date, the user who initiated the job, the job status code/message and the Amazon SNS topic to notify after Amazon Glacier completes the job. For more information about initiating a job, see InitiateJob. This operation enables you to check the status of your job. However, it is strongly recommended that you set up an Amazon SNS topic and specify it in your initiate job request so that Amazon Glacier can notify the topic after it completes the job. A job ID will not expire for at least 24 hours after Amazon Glacier completes the job. An AWS account has full permission to perform all operations (actions). However, AWS Identity and Access Management (IAM) users don't have any permissions by default. You must grant them explicit permission to perform specific actions. For more information, see Access Control Using AWS Identity and Access Management (IAM). For information about the underlying REST API, see Working with Archives in Amazon Glacier in the Amazon Glacier Developer Guide. - */ - describeJob(params: Glacier.Types.DescribeJobInput, callback?: (err: AWSError, data: Glacier.Types.GlacierJobDescription) => void): Request; - /** - * This operation returns information about a job you previously initiated, including the job initiation date, the user who initiated the job, the job status code/message and the Amazon SNS topic to notify after Amazon Glacier completes the job. For more information about initiating a job, see InitiateJob. This operation enables you to check the status of your job. However, it is strongly recommended that you set up an Amazon SNS topic and specify it in your initiate job request so that Amazon Glacier can notify the topic after it completes the job. A job ID will not expire for at least 24 hours after Amazon Glacier completes the job. An AWS account has full permission to perform all operations (actions). However, AWS Identity and Access Management (IAM) users don't have any permissions by default. You must grant them explicit permission to perform specific actions. For more information, see Access Control Using AWS Identity and Access Management (IAM). For information about the underlying REST API, see Working with Archives in Amazon Glacier in the Amazon Glacier Developer Guide. - */ - describeJob(callback?: (err: AWSError, data: Glacier.Types.GlacierJobDescription) => void): Request; - /** - * This operation returns information about a vault, including the vault's Amazon Resource Name (ARN), the date the vault was created, the number of archives it contains, and the total size of all the archives in the vault. The number of archives and their total size are as of the last inventory generation. This means that if you add or remove an archive from a vault, and then immediately use Describe Vault, the change in contents will not be immediately reflected. If you want to retrieve the latest inventory of the vault, use InitiateJob. Amazon Glacier generates vault inventories approximately daily. For more information, see Downloading a Vault Inventory in Amazon Glacier. An AWS account has full permission to perform all operations (actions). However, AWS Identity and Access Management (IAM) users don't have any permissions by default. You must grant them explicit permission to perform specific actions. For more information, see Access Control Using AWS Identity and Access Management (IAM). For conceptual information and underlying REST API, see Retrieving Vault Metadata in Amazon Glacier and Describe Vault in the Amazon Glacier Developer Guide. - */ - describeVault(params: Glacier.Types.DescribeVaultInput, callback?: (err: AWSError, data: Glacier.Types.DescribeVaultOutput) => void): Request; - /** - * This operation returns information about a vault, including the vault's Amazon Resource Name (ARN), the date the vault was created, the number of archives it contains, and the total size of all the archives in the vault. The number of archives and their total size are as of the last inventory generation. This means that if you add or remove an archive from a vault, and then immediately use Describe Vault, the change in contents will not be immediately reflected. If you want to retrieve the latest inventory of the vault, use InitiateJob. Amazon Glacier generates vault inventories approximately daily. For more information, see Downloading a Vault Inventory in Amazon Glacier. An AWS account has full permission to perform all operations (actions). However, AWS Identity and Access Management (IAM) users don't have any permissions by default. You must grant them explicit permission to perform specific actions. For more information, see Access Control Using AWS Identity and Access Management (IAM). For conceptual information and underlying REST API, see Retrieving Vault Metadata in Amazon Glacier and Describe Vault in the Amazon Glacier Developer Guide. - */ - describeVault(callback?: (err: AWSError, data: Glacier.Types.DescribeVaultOutput) => void): Request; - /** - * This operation returns the current data retrieval policy for the account and region specified in the GET request. For more information about data retrieval policies, see Amazon Glacier Data Retrieval Policies. - */ - getDataRetrievalPolicy(params: Glacier.Types.GetDataRetrievalPolicyInput, callback?: (err: AWSError, data: Glacier.Types.GetDataRetrievalPolicyOutput) => void): Request; - /** - * This operation returns the current data retrieval policy for the account and region specified in the GET request. For more information about data retrieval policies, see Amazon Glacier Data Retrieval Policies. - */ - getDataRetrievalPolicy(callback?: (err: AWSError, data: Glacier.Types.GetDataRetrievalPolicyOutput) => void): Request; - /** - * This operation downloads the output of the job you initiated using InitiateJob. Depending on the job type you specified when you initiated the job, the output will be either the content of an archive or a vault inventory. You can download all the job output or download a portion of the output by specifying a byte range. In the case of an archive retrieval job, depending on the byte range you specify, Amazon Glacier returns the checksum for the portion of the data. You can compute the checksum on the client and verify that the values match to ensure the portion you downloaded is the correct data. A job ID will not expire for at least 24 hours after Amazon Glacier completes the job. That a byte range. For both archive and inventory retrieval jobs, you should verify the downloaded size against the size returned in the headers from the Get Job Output response. For archive retrieval jobs, you should also verify that the size is what you expected. If you download a portion of the output, the expected size is based on the range of bytes you specified. For example, if you specify a range of bytes=0-1048575, you should verify your download size is 1,048,576 bytes. If you download an entire archive, the expected size is the size of the archive when you uploaded it to Amazon Glacier The expected size is also returned in the headers from the Get Job Output response. In the case of an archive retrieval job, depending on the byte range you specify, Amazon Glacier returns the checksum for the portion of the data. To ensure the portion you downloaded is the correct data, compute the checksum on the client, verify that the values match, and verify that the size is what you expected. A job ID does not expire for at least 24 hours after Amazon Glacier completes the job. That is, you can download the job output within the 24 hours period after Amazon Glacier completes the job. An AWS account has full permission to perform all operations (actions). However, AWS Identity and Access Management (IAM) users don't have any permissions by default. You must grant them explicit permission to perform specific actions. For more information, see Access Control Using AWS Identity and Access Management (IAM). For conceptual information and the underlying REST API, see Downloading a Vault Inventory, Downloading an Archive, and Get Job Output - */ - getJobOutput(params: Glacier.Types.GetJobOutputInput, callback?: (err: AWSError, data: Glacier.Types.GetJobOutputOutput) => void): Request; - /** - * This operation downloads the output of the job you initiated using InitiateJob. Depending on the job type you specified when you initiated the job, the output will be either the content of an archive or a vault inventory. You can download all the job output or download a portion of the output by specifying a byte range. In the case of an archive retrieval job, depending on the byte range you specify, Amazon Glacier returns the checksum for the portion of the data. You can compute the checksum on the client and verify that the values match to ensure the portion you downloaded is the correct data. A job ID will not expire for at least 24 hours after Amazon Glacier completes the job. That a byte range. For both archive and inventory retrieval jobs, you should verify the downloaded size against the size returned in the headers from the Get Job Output response. For archive retrieval jobs, you should also verify that the size is what you expected. If you download a portion of the output, the expected size is based on the range of bytes you specified. For example, if you specify a range of bytes=0-1048575, you should verify your download size is 1,048,576 bytes. If you download an entire archive, the expected size is the size of the archive when you uploaded it to Amazon Glacier The expected size is also returned in the headers from the Get Job Output response. In the case of an archive retrieval job, depending on the byte range you specify, Amazon Glacier returns the checksum for the portion of the data. To ensure the portion you downloaded is the correct data, compute the checksum on the client, verify that the values match, and verify that the size is what you expected. A job ID does not expire for at least 24 hours after Amazon Glacier completes the job. That is, you can download the job output within the 24 hours period after Amazon Glacier completes the job. An AWS account has full permission to perform all operations (actions). However, AWS Identity and Access Management (IAM) users don't have any permissions by default. You must grant them explicit permission to perform specific actions. For more information, see Access Control Using AWS Identity and Access Management (IAM). For conceptual information and the underlying REST API, see Downloading a Vault Inventory, Downloading an Archive, and Get Job Output - */ - getJobOutput(callback?: (err: AWSError, data: Glacier.Types.GetJobOutputOutput) => void): Request; - /** - * This operation retrieves the access-policy subresource set on the vault; for more information on setting this subresource, see Set Vault Access Policy (PUT access-policy). If there is no access policy set on the vault, the operation returns a 404 Not found error. For more information about vault access policies, see Amazon Glacier Access Control with Vault Access Policies. - */ - getVaultAccessPolicy(params: Glacier.Types.GetVaultAccessPolicyInput, callback?: (err: AWSError, data: Glacier.Types.GetVaultAccessPolicyOutput) => void): Request; - /** - * This operation retrieves the access-policy subresource set on the vault; for more information on setting this subresource, see Set Vault Access Policy (PUT access-policy). If there is no access policy set on the vault, the operation returns a 404 Not found error. For more information about vault access policies, see Amazon Glacier Access Control with Vault Access Policies. - */ - getVaultAccessPolicy(callback?: (err: AWSError, data: Glacier.Types.GetVaultAccessPolicyOutput) => void): Request; - /** - * This operation retrieves the following attributes from the lock-policy subresource set on the specified vault: The vault lock policy set on the vault. The state of the vault lock, which is either InProgess or Locked. When the lock ID expires. The lock ID is used to complete the vault locking process. When the vault lock was initiated and put into the InProgress state. A vault lock is put into the InProgress state by calling InitiateVaultLock. A vault lock is put into the Locked state by calling CompleteVaultLock. You can abort the vault locking process by calling AbortVaultLock. For more information about the vault locking process, Amazon Glacier Vault Lock. If there is no vault lock policy set on the vault, the operation returns a 404 Not found error. For more information about vault lock policies, Amazon Glacier Access Control with Vault Lock Policies. - */ - getVaultLock(params: Glacier.Types.GetVaultLockInput, callback?: (err: AWSError, data: Glacier.Types.GetVaultLockOutput) => void): Request; - /** - * This operation retrieves the following attributes from the lock-policy subresource set on the specified vault: The vault lock policy set on the vault. The state of the vault lock, which is either InProgess or Locked. When the lock ID expires. The lock ID is used to complete the vault locking process. When the vault lock was initiated and put into the InProgress state. A vault lock is put into the InProgress state by calling InitiateVaultLock. A vault lock is put into the Locked state by calling CompleteVaultLock. You can abort the vault locking process by calling AbortVaultLock. For more information about the vault locking process, Amazon Glacier Vault Lock. If there is no vault lock policy set on the vault, the operation returns a 404 Not found error. For more information about vault lock policies, Amazon Glacier Access Control with Vault Lock Policies. - */ - getVaultLock(callback?: (err: AWSError, data: Glacier.Types.GetVaultLockOutput) => void): Request; - /** - * This operation retrieves the notification-configuration subresource of the specified vault. For information about setting a notification configuration on a vault, see SetVaultNotifications. If a notification configuration for a vault is not set, the operation returns a 404 Not Found error. For more information about vault notifications, see Configuring Vault Notifications in Amazon Glacier. An AWS account has full permission to perform all operations (actions). However, AWS Identity and Access Management (IAM) users don't have any permissions by default. You must grant them explicit permission to perform specific actions. For more information, see Access Control Using AWS Identity and Access Management (IAM). For conceptual information and underlying REST API, see Configuring Vault Notifications in Amazon Glacier and Get Vault Notification Configuration in the Amazon Glacier Developer Guide. - */ - getVaultNotifications(params: Glacier.Types.GetVaultNotificationsInput, callback?: (err: AWSError, data: Glacier.Types.GetVaultNotificationsOutput) => void): Request; - /** - * This operation retrieves the notification-configuration subresource of the specified vault. For information about setting a notification configuration on a vault, see SetVaultNotifications. If a notification configuration for a vault is not set, the operation returns a 404 Not Found error. For more information about vault notifications, see Configuring Vault Notifications in Amazon Glacier. An AWS account has full permission to perform all operations (actions). However, AWS Identity and Access Management (IAM) users don't have any permissions by default. You must grant them explicit permission to perform specific actions. For more information, see Access Control Using AWS Identity and Access Management (IAM). For conceptual information and underlying REST API, see Configuring Vault Notifications in Amazon Glacier and Get Vault Notification Configuration in the Amazon Glacier Developer Guide. - */ - getVaultNotifications(callback?: (err: AWSError, data: Glacier.Types.GetVaultNotificationsOutput) => void): Request; - /** - * This operation initiates a job of the specified type. In this release, you can initiate a job to retrieve either an archive or a vault inventory (a list of archives in a vault). Retrieving data from Amazon Glacier is a two-step process: Initiate a retrieval job. A data retrieval policy can cause your initiate retrieval job request to fail with a PolicyEnforcedException exception. For more information about data retrieval policies, see Amazon Glacier Data Retrieval Policies. For more information about the PolicyEnforcedException exception, see Error Responses. After the job completes, download the bytes. The retrieval request is executed asynchronously. When you initiate a retrieval job, Amazon Glacier creates a job and returns a job ID in the response. When Amazon Glacier completes the job, you can get the job output (archive or inventory data). For information about getting job output, see GetJobOutput operation. The job must complete before you can get its output. To determine when a job is complete, you have the following options: Use Amazon SNS Notification You can specify an Amazon Simple Notification Service (Amazon SNS) topic to which Amazon Glacier can post a notification after the job is completed. You can specify an SNS topic per job request. The notification is sent only after Amazon Glacier completes the job. In addition to specifying an SNS topic per job request, you can configure vault notifications for a vault so that job notifications are always sent. For more information, see SetVaultNotifications. Get job details You can make a DescribeJob request to obtain job status information while a job is in progress. However, it is more efficient to use an Amazon SNS notification to determine when a job is complete. The information you get via notification is same that you get by calling DescribeJob. If for a specific event, you add both the notification configuration on the vault and also specify an SNS topic in your initiate job request, Amazon Glacier sends both notifications. For more information, see SetVaultNotifications. An AWS account has full permission to perform all operations (actions). However, AWS Identity and Access Management (IAM) users don't have any permissions by default. You must grant them explicit permission to perform specific actions. For more information, see Access Control Using AWS Identity and Access Management (IAM). About the Vault Inventory Amazon Glacier prepares an inventory for each vault periodically, every 24 hours. When you initiate a job for a vault inventory, Amazon Glacier returns the last inventory for the vault. The inventory data you get might be up to a day or two days old. Also, the initiate inventory job might take some time to complete before you can download the vault inventory. So you do not want to retrieve a vault inventory for each vault operation. However, in some scenarios, you might find the vault inventory useful. For example, when you upload an archive, you can provide an archive description but not an archive name. Amazon Glacier provides you a unique archive ID, an opaque string of characters. So, you might maintain your own database that maps archive names to their corresponding Amazon Glacier assigned archive IDs. You might find the vault inventory useful in the event you need to reconcile information in your database with the actual vault inventory. Range Inventory Retrieval You can limit the number of inventory items retrieved by filtering on the archive creation date or by setting a limit. Filtering by Archive Creation Date You can retrieve inventory items for archives created between StartDate and EndDate by specifying values for these parameters in the InitiateJob request. Archives created on or after the StartDate and before the EndDate will be returned. If you only provide the StartDate without the EndDate, you will retrieve the inventory for all archives created on or after the StartDate. If you only provide the EndDate without the StartDate, you will get back the inventory for all archives created before the EndDate. Limiting Inventory Items per Retrieval You can limit the number of inventory items returned by setting the Limit parameter in the InitiateJob request. The inventory job output will contain inventory items up to the specified Limit. If there are more inventory items available, the result is paginated. After a job is complete you can use the DescribeJob operation to get a marker that you use in a subsequent InitiateJob request. The marker will indicate the starting point to retrieve the next set of inventory items. You can page through your entire inventory by repeatedly making InitiateJob requests with the marker from the previous DescribeJob output, until you get a marker from DescribeJob that returns null, indicating that there are no more inventory items available. You can use the Limit parameter together with the date range parameters. About Ranged Archive Retrieval You can initiate an archive retrieval for the whole archive or a range of the archive. In the case of ranged archive retrieval, you specify a byte range to return or the whole archive. The range specified must be megabyte (MB) aligned, that is the range start value must be divisible by 1 MB and range end value plus 1 must be divisible by 1 MB or equal the end of the archive. If the ranged archive retrieval is not megabyte aligned, this operation returns a 400 response. Furthermore, to ensure you get checksum values for data you download using Get Job Output API, the range must be tree hash aligned. An AWS account has full permission to perform all operations (actions). However, AWS Identity and Access Management (IAM) users don't have any permissions by default. You must grant them explicit permission to perform specific actions. For more information, see Access Control Using AWS Identity and Access Management (IAM). For conceptual information and the underlying REST API, see Initiate a Job and Downloading a Vault Inventory Expedited and Bulk Archive Retrievals When retrieving an archive, you can specify one of the following options in the Tier field of the request body: Standard The default type of retrieval, which allows access to any of your archives within several hours. Standard retrievals typically complete within 3–5 hours. Bulk Amazon Glacier’s lowest-cost retrieval option, which enables you to retrieve large amounts of data inexpensively in a day. Bulk retrieval requests typically complete within 5–12 hours. Expedited Amazon Glacier’s option for the fastest retrievals. Archives requested using the expedited retrievals typically become accessible within 1–5 minutes. For more information about expedited and bulk retrievals, see Retrieving Amazon Glacier Archives. - */ - initiateJob(params: Glacier.Types.InitiateJobInput, callback?: (err: AWSError, data: Glacier.Types.InitiateJobOutput) => void): Request; - /** - * This operation initiates a job of the specified type. In this release, you can initiate a job to retrieve either an archive or a vault inventory (a list of archives in a vault). Retrieving data from Amazon Glacier is a two-step process: Initiate a retrieval job. A data retrieval policy can cause your initiate retrieval job request to fail with a PolicyEnforcedException exception. For more information about data retrieval policies, see Amazon Glacier Data Retrieval Policies. For more information about the PolicyEnforcedException exception, see Error Responses. After the job completes, download the bytes. The retrieval request is executed asynchronously. When you initiate a retrieval job, Amazon Glacier creates a job and returns a job ID in the response. When Amazon Glacier completes the job, you can get the job output (archive or inventory data). For information about getting job output, see GetJobOutput operation. The job must complete before you can get its output. To determine when a job is complete, you have the following options: Use Amazon SNS Notification You can specify an Amazon Simple Notification Service (Amazon SNS) topic to which Amazon Glacier can post a notification after the job is completed. You can specify an SNS topic per job request. The notification is sent only after Amazon Glacier completes the job. In addition to specifying an SNS topic per job request, you can configure vault notifications for a vault so that job notifications are always sent. For more information, see SetVaultNotifications. Get job details You can make a DescribeJob request to obtain job status information while a job is in progress. However, it is more efficient to use an Amazon SNS notification to determine when a job is complete. The information you get via notification is same that you get by calling DescribeJob. If for a specific event, you add both the notification configuration on the vault and also specify an SNS topic in your initiate job request, Amazon Glacier sends both notifications. For more information, see SetVaultNotifications. An AWS account has full permission to perform all operations (actions). However, AWS Identity and Access Management (IAM) users don't have any permissions by default. You must grant them explicit permission to perform specific actions. For more information, see Access Control Using AWS Identity and Access Management (IAM). About the Vault Inventory Amazon Glacier prepares an inventory for each vault periodically, every 24 hours. When you initiate a job for a vault inventory, Amazon Glacier returns the last inventory for the vault. The inventory data you get might be up to a day or two days old. Also, the initiate inventory job might take some time to complete before you can download the vault inventory. So you do not want to retrieve a vault inventory for each vault operation. However, in some scenarios, you might find the vault inventory useful. For example, when you upload an archive, you can provide an archive description but not an archive name. Amazon Glacier provides you a unique archive ID, an opaque string of characters. So, you might maintain your own database that maps archive names to their corresponding Amazon Glacier assigned archive IDs. You might find the vault inventory useful in the event you need to reconcile information in your database with the actual vault inventory. Range Inventory Retrieval You can limit the number of inventory items retrieved by filtering on the archive creation date or by setting a limit. Filtering by Archive Creation Date You can retrieve inventory items for archives created between StartDate and EndDate by specifying values for these parameters in the InitiateJob request. Archives created on or after the StartDate and before the EndDate will be returned. If you only provide the StartDate without the EndDate, you will retrieve the inventory for all archives created on or after the StartDate. If you only provide the EndDate without the StartDate, you will get back the inventory for all archives created before the EndDate. Limiting Inventory Items per Retrieval You can limit the number of inventory items returned by setting the Limit parameter in the InitiateJob request. The inventory job output will contain inventory items up to the specified Limit. If there are more inventory items available, the result is paginated. After a job is complete you can use the DescribeJob operation to get a marker that you use in a subsequent InitiateJob request. The marker will indicate the starting point to retrieve the next set of inventory items. You can page through your entire inventory by repeatedly making InitiateJob requests with the marker from the previous DescribeJob output, until you get a marker from DescribeJob that returns null, indicating that there are no more inventory items available. You can use the Limit parameter together with the date range parameters. About Ranged Archive Retrieval You can initiate an archive retrieval for the whole archive or a range of the archive. In the case of ranged archive retrieval, you specify a byte range to return or the whole archive. The range specified must be megabyte (MB) aligned, that is the range start value must be divisible by 1 MB and range end value plus 1 must be divisible by 1 MB or equal the end of the archive. If the ranged archive retrieval is not megabyte aligned, this operation returns a 400 response. Furthermore, to ensure you get checksum values for data you download using Get Job Output API, the range must be tree hash aligned. An AWS account has full permission to perform all operations (actions). However, AWS Identity and Access Management (IAM) users don't have any permissions by default. You must grant them explicit permission to perform specific actions. For more information, see Access Control Using AWS Identity and Access Management (IAM). For conceptual information and the underlying REST API, see Initiate a Job and Downloading a Vault Inventory Expedited and Bulk Archive Retrievals When retrieving an archive, you can specify one of the following options in the Tier field of the request body: Standard The default type of retrieval, which allows access to any of your archives within several hours. Standard retrievals typically complete within 3–5 hours. Bulk Amazon Glacier’s lowest-cost retrieval option, which enables you to retrieve large amounts of data inexpensively in a day. Bulk retrieval requests typically complete within 5–12 hours. Expedited Amazon Glacier’s option for the fastest retrievals. Archives requested using the expedited retrievals typically become accessible within 1–5 minutes. For more information about expedited and bulk retrievals, see Retrieving Amazon Glacier Archives. - */ - initiateJob(callback?: (err: AWSError, data: Glacier.Types.InitiateJobOutput) => void): Request; - /** - * This operation initiates a multipart upload. Amazon Glacier creates a multipart upload resource and returns its ID in the response. The multipart upload ID is used in subsequent requests to upload parts of an archive (see UploadMultipartPart). When you initiate a multipart upload, you specify the part size in number of bytes. The part size must be a megabyte (1024 KB) multiplied by a power of 2-for example, 1048576 (1 MB), 2097152 (2 MB), 4194304 (4 MB), 8388608 (8 MB), and so on. The minimum allowable part size is 1 MB, and the maximum is 4 GB. Every part you upload to this resource (see UploadMultipartPart), except the last one, must have the same size. The last one can be the same size or smaller. For example, suppose you want to upload a 16.2 MB file. If you initiate the multipart upload with a part size of 4 MB, you will upload four parts of 4 MB each and one part of 0.2 MB. You don't need to know the size of the archive when you start a multipart upload because Amazon Glacier does not require you to specify the overall archive size. After you complete the multipart upload, Amazon Glacier removes the multipart upload resource referenced by the ID. Amazon Glacier also removes the multipart upload resource if you cancel the multipart upload or it may be removed if there is no activity for a period of 24 hours. An AWS account has full permission to perform all operations (actions). However, AWS Identity and Access Management (IAM) users don't have any permissions by default. You must grant them explicit permission to perform specific actions. For more information, see Access Control Using AWS Identity and Access Management (IAM). For conceptual information and underlying REST API, see Uploading Large Archives in Parts (Multipart Upload) and Initiate Multipart Upload in the Amazon Glacier Developer Guide. - */ - initiateMultipartUpload(params: Glacier.Types.InitiateMultipartUploadInput, callback?: (err: AWSError, data: Glacier.Types.InitiateMultipartUploadOutput) => void): Request; - /** - * This operation initiates a multipart upload. Amazon Glacier creates a multipart upload resource and returns its ID in the response. The multipart upload ID is used in subsequent requests to upload parts of an archive (see UploadMultipartPart). When you initiate a multipart upload, you specify the part size in number of bytes. The part size must be a megabyte (1024 KB) multiplied by a power of 2-for example, 1048576 (1 MB), 2097152 (2 MB), 4194304 (4 MB), 8388608 (8 MB), and so on. The minimum allowable part size is 1 MB, and the maximum is 4 GB. Every part you upload to this resource (see UploadMultipartPart), except the last one, must have the same size. The last one can be the same size or smaller. For example, suppose you want to upload a 16.2 MB file. If you initiate the multipart upload with a part size of 4 MB, you will upload four parts of 4 MB each and one part of 0.2 MB. You don't need to know the size of the archive when you start a multipart upload because Amazon Glacier does not require you to specify the overall archive size. After you complete the multipart upload, Amazon Glacier removes the multipart upload resource referenced by the ID. Amazon Glacier also removes the multipart upload resource if you cancel the multipart upload or it may be removed if there is no activity for a period of 24 hours. An AWS account has full permission to perform all operations (actions). However, AWS Identity and Access Management (IAM) users don't have any permissions by default. You must grant them explicit permission to perform specific actions. For more information, see Access Control Using AWS Identity and Access Management (IAM). For conceptual information and underlying REST API, see Uploading Large Archives in Parts (Multipart Upload) and Initiate Multipart Upload in the Amazon Glacier Developer Guide. - */ - initiateMultipartUpload(callback?: (err: AWSError, data: Glacier.Types.InitiateMultipartUploadOutput) => void): Request; - /** - * This operation initiates the vault locking process by doing the following: Installing a vault lock policy on the specified vault. Setting the lock state of vault lock to InProgress. Returning a lock ID, which is used to complete the vault locking process. You can set one vault lock policy for each vault and this policy can be up to 20 KB in size. For more information about vault lock policies, see Amazon Glacier Access Control with Vault Lock Policies. You must complete the vault locking process within 24 hours after the vault lock enters the InProgress state. After the 24 hour window ends, the lock ID expires, the vault automatically exits the InProgress state, and the vault lock policy is removed from the vault. You call CompleteVaultLock to complete the vault locking process by setting the state of the vault lock to Locked. After a vault lock is in the Locked state, you cannot initiate a new vault lock for the vault. You can abort the vault locking process by calling AbortVaultLock. You can get the state of the vault lock by calling GetVaultLock. For more information about the vault locking process, Amazon Glacier Vault Lock. If this operation is called when the vault lock is in the InProgress state, the operation returns an AccessDeniedException error. When the vault lock is in the InProgress state you must call AbortVaultLock before you can initiate a new vault lock policy. - */ - initiateVaultLock(params: Glacier.Types.InitiateVaultLockInput, callback?: (err: AWSError, data: Glacier.Types.InitiateVaultLockOutput) => void): Request; - /** - * This operation initiates the vault locking process by doing the following: Installing a vault lock policy on the specified vault. Setting the lock state of vault lock to InProgress. Returning a lock ID, which is used to complete the vault locking process. You can set one vault lock policy for each vault and this policy can be up to 20 KB in size. For more information about vault lock policies, see Amazon Glacier Access Control with Vault Lock Policies. You must complete the vault locking process within 24 hours after the vault lock enters the InProgress state. After the 24 hour window ends, the lock ID expires, the vault automatically exits the InProgress state, and the vault lock policy is removed from the vault. You call CompleteVaultLock to complete the vault locking process by setting the state of the vault lock to Locked. After a vault lock is in the Locked state, you cannot initiate a new vault lock for the vault. You can abort the vault locking process by calling AbortVaultLock. You can get the state of the vault lock by calling GetVaultLock. For more information about the vault locking process, Amazon Glacier Vault Lock. If this operation is called when the vault lock is in the InProgress state, the operation returns an AccessDeniedException error. When the vault lock is in the InProgress state you must call AbortVaultLock before you can initiate a new vault lock policy. - */ - initiateVaultLock(callback?: (err: AWSError, data: Glacier.Types.InitiateVaultLockOutput) => void): Request; - /** - * This operation lists jobs for a vault, including jobs that are in-progress and jobs that have recently finished. Amazon Glacier retains recently completed jobs for a period before deleting them; however, it eventually removes completed jobs. The output of completed jobs can be retrieved. Retaining completed jobs for a period of time after they have completed enables you to get a job output in the event you miss the job completion notification or your first attempt to download it fails. For example, suppose you start an archive retrieval job to download an archive. After the job completes, you start to download the archive but encounter a network error. In this scenario, you can retry and download the archive while the job exists. To retrieve an archive or retrieve a vault inventory from Amazon Glacier, you first initiate a job, and after the job completes, you download the data. For an archive retrieval, the output is the archive data. For an inventory retrieval, it is the inventory list. The List Job operation returns a list of these jobs sorted by job initiation time. The List Jobs operation supports pagination. You should always check the response Marker field. If there are no more jobs to list, the Marker field is set to null. If there are more jobs to list, the Marker field is set to a non-null value, which you can use to continue the pagination of the list. To return a list of jobs that begins at a specific job, set the marker request parameter to the Marker value for that job that you obtained from a previous List Jobs request. You can set a maximum limit for the number of jobs returned in the response by specifying the limit parameter in the request. The default limit is 1000. The number of jobs returned might be fewer than the limit, but the number of returned jobs never exceeds the limit. Additionally, you can filter the jobs list returned by specifying the optional statuscode parameter or completed parameter, or both. Using the statuscode parameter, you can specify to return only jobs that match either the InProgress, Succeeded, or Failed status. Using the completed parameter, you can specify to return only jobs that were completed (true) or jobs that were not completed (false). For the underlying REST API, see List Jobs. - */ - listJobs(params: Glacier.Types.ListJobsInput, callback?: (err: AWSError, data: Glacier.Types.ListJobsOutput) => void): Request; - /** - * This operation lists jobs for a vault, including jobs that are in-progress and jobs that have recently finished. Amazon Glacier retains recently completed jobs for a period before deleting them; however, it eventually removes completed jobs. The output of completed jobs can be retrieved. Retaining completed jobs for a period of time after they have completed enables you to get a job output in the event you miss the job completion notification or your first attempt to download it fails. For example, suppose you start an archive retrieval job to download an archive. After the job completes, you start to download the archive but encounter a network error. In this scenario, you can retry and download the archive while the job exists. To retrieve an archive or retrieve a vault inventory from Amazon Glacier, you first initiate a job, and after the job completes, you download the data. For an archive retrieval, the output is the archive data. For an inventory retrieval, it is the inventory list. The List Job operation returns a list of these jobs sorted by job initiation time. The List Jobs operation supports pagination. You should always check the response Marker field. If there are no more jobs to list, the Marker field is set to null. If there are more jobs to list, the Marker field is set to a non-null value, which you can use to continue the pagination of the list. To return a list of jobs that begins at a specific job, set the marker request parameter to the Marker value for that job that you obtained from a previous List Jobs request. You can set a maximum limit for the number of jobs returned in the response by specifying the limit parameter in the request. The default limit is 1000. The number of jobs returned might be fewer than the limit, but the number of returned jobs never exceeds the limit. Additionally, you can filter the jobs list returned by specifying the optional statuscode parameter or completed parameter, or both. Using the statuscode parameter, you can specify to return only jobs that match either the InProgress, Succeeded, or Failed status. Using the completed parameter, you can specify to return only jobs that were completed (true) or jobs that were not completed (false). For the underlying REST API, see List Jobs. - */ - listJobs(callback?: (err: AWSError, data: Glacier.Types.ListJobsOutput) => void): Request; - /** - * This operation lists in-progress multipart uploads for the specified vault. An in-progress multipart upload is a multipart upload that has been initiated by an InitiateMultipartUpload request, but has not yet been completed or aborted. The list returned in the List Multipart Upload response has no guaranteed order. The List Multipart Uploads operation supports pagination. By default, this operation returns up to 1,000 multipart uploads in the response. You should always check the response for a marker at which to continue the list; if there are no more items the marker is null. To return a list of multipart uploads that begins at a specific upload, set the marker request parameter to the value you obtained from a previous List Multipart Upload request. You can also limit the number of uploads returned in the response by specifying the limit parameter in the request. Note the difference between this operation and listing parts (ListParts). The List Multipart Uploads operation lists all multipart uploads for a vault and does not require a multipart upload ID. The List Parts operation requires a multipart upload ID since parts are associated with a single upload. An AWS account has full permission to perform all operations (actions). However, AWS Identity and Access Management (IAM) users don't have any permissions by default. You must grant them explicit permission to perform specific actions. For more information, see Access Control Using AWS Identity and Access Management (IAM). For conceptual information and the underlying REST API, see Working with Archives in Amazon Glacier and List Multipart Uploads in the Amazon Glacier Developer Guide. - */ - listMultipartUploads(params: Glacier.Types.ListMultipartUploadsInput, callback?: (err: AWSError, data: Glacier.Types.ListMultipartUploadsOutput) => void): Request; - /** - * This operation lists in-progress multipart uploads for the specified vault. An in-progress multipart upload is a multipart upload that has been initiated by an InitiateMultipartUpload request, but has not yet been completed or aborted. The list returned in the List Multipart Upload response has no guaranteed order. The List Multipart Uploads operation supports pagination. By default, this operation returns up to 1,000 multipart uploads in the response. You should always check the response for a marker at which to continue the list; if there are no more items the marker is null. To return a list of multipart uploads that begins at a specific upload, set the marker request parameter to the value you obtained from a previous List Multipart Upload request. You can also limit the number of uploads returned in the response by specifying the limit parameter in the request. Note the difference between this operation and listing parts (ListParts). The List Multipart Uploads operation lists all multipart uploads for a vault and does not require a multipart upload ID. The List Parts operation requires a multipart upload ID since parts are associated with a single upload. An AWS account has full permission to perform all operations (actions). However, AWS Identity and Access Management (IAM) users don't have any permissions by default. You must grant them explicit permission to perform specific actions. For more information, see Access Control Using AWS Identity and Access Management (IAM). For conceptual information and the underlying REST API, see Working with Archives in Amazon Glacier and List Multipart Uploads in the Amazon Glacier Developer Guide. - */ - listMultipartUploads(callback?: (err: AWSError, data: Glacier.Types.ListMultipartUploadsOutput) => void): Request; - /** - * This operation lists the parts of an archive that have been uploaded in a specific multipart upload. You can make this request at any time during an in-progress multipart upload before you complete the upload (see CompleteMultipartUpload. List Parts returns an error for completed uploads. The list returned in the List Parts response is sorted by part range. The List Parts operation supports pagination. By default, this operation returns up to 1,000 uploaded parts in the response. You should always check the response for a marker at which to continue the list; if there are no more items the marker is null. To return a list of parts that begins at a specific part, set the marker request parameter to the value you obtained from a previous List Parts request. You can also limit the number of parts returned in the response by specifying the limit parameter in the request. An AWS account has full permission to perform all operations (actions). However, AWS Identity and Access Management (IAM) users don't have any permissions by default. You must grant them explicit permission to perform specific actions. For more information, see Access Control Using AWS Identity and Access Management (IAM). For conceptual information and the underlying REST API, see Working with Archives in Amazon Glacier and List Parts in the Amazon Glacier Developer Guide. - */ - listParts(params: Glacier.Types.ListPartsInput, callback?: (err: AWSError, data: Glacier.Types.ListPartsOutput) => void): Request; - /** - * This operation lists the parts of an archive that have been uploaded in a specific multipart upload. You can make this request at any time during an in-progress multipart upload before you complete the upload (see CompleteMultipartUpload. List Parts returns an error for completed uploads. The list returned in the List Parts response is sorted by part range. The List Parts operation supports pagination. By default, this operation returns up to 1,000 uploaded parts in the response. You should always check the response for a marker at which to continue the list; if there are no more items the marker is null. To return a list of parts that begins at a specific part, set the marker request parameter to the value you obtained from a previous List Parts request. You can also limit the number of parts returned in the response by specifying the limit parameter in the request. An AWS account has full permission to perform all operations (actions). However, AWS Identity and Access Management (IAM) users don't have any permissions by default. You must grant them explicit permission to perform specific actions. For more information, see Access Control Using AWS Identity and Access Management (IAM). For conceptual information and the underlying REST API, see Working with Archives in Amazon Glacier and List Parts in the Amazon Glacier Developer Guide. - */ - listParts(callback?: (err: AWSError, data: Glacier.Types.ListPartsOutput) => void): Request; - /** - * This operation lists the provisioned capacity for the specified AWS account. - */ - listProvisionedCapacity(params: Glacier.Types.ListProvisionedCapacityInput, callback?: (err: AWSError, data: Glacier.Types.ListProvisionedCapacityOutput) => void): Request; - /** - * This operation lists the provisioned capacity for the specified AWS account. - */ - listProvisionedCapacity(callback?: (err: AWSError, data: Glacier.Types.ListProvisionedCapacityOutput) => void): Request; - /** - * This operation lists all the tags attached to a vault. The operation returns an empty map if there are no tags. For more information about tags, see Tagging Amazon Glacier Resources. - */ - listTagsForVault(params: Glacier.Types.ListTagsForVaultInput, callback?: (err: AWSError, data: Glacier.Types.ListTagsForVaultOutput) => void): Request; - /** - * This operation lists all the tags attached to a vault. The operation returns an empty map if there are no tags. For more information about tags, see Tagging Amazon Glacier Resources. - */ - listTagsForVault(callback?: (err: AWSError, data: Glacier.Types.ListTagsForVaultOutput) => void): Request; - /** - * This operation lists all vaults owned by the calling user's account. The list returned in the response is ASCII-sorted by vault name. By default, this operation returns up to 1,000 items. If there are more vaults to list, the response marker field contains the vault Amazon Resource Name (ARN) at which to continue the list with a new List Vaults request; otherwise, the marker field is null. To return a list of vaults that begins at a specific vault, set the marker request parameter to the vault ARN you obtained from a previous List Vaults request. You can also limit the number of vaults returned in the response by specifying the limit parameter in the request. An AWS account has full permission to perform all operations (actions). However, AWS Identity and Access Management (IAM) users don't have any permissions by default. You must grant them explicit permission to perform specific actions. For more information, see Access Control Using AWS Identity and Access Management (IAM). For conceptual information and underlying REST API, see Retrieving Vault Metadata in Amazon Glacier and List Vaults in the Amazon Glacier Developer Guide. - */ - listVaults(params: Glacier.Types.ListVaultsInput, callback?: (err: AWSError, data: Glacier.Types.ListVaultsOutput) => void): Request; - /** - * This operation lists all vaults owned by the calling user's account. The list returned in the response is ASCII-sorted by vault name. By default, this operation returns up to 1,000 items. If there are more vaults to list, the response marker field contains the vault Amazon Resource Name (ARN) at which to continue the list with a new List Vaults request; otherwise, the marker field is null. To return a list of vaults that begins at a specific vault, set the marker request parameter to the vault ARN you obtained from a previous List Vaults request. You can also limit the number of vaults returned in the response by specifying the limit parameter in the request. An AWS account has full permission to perform all operations (actions). However, AWS Identity and Access Management (IAM) users don't have any permissions by default. You must grant them explicit permission to perform specific actions. For more information, see Access Control Using AWS Identity and Access Management (IAM). For conceptual information and underlying REST API, see Retrieving Vault Metadata in Amazon Glacier and List Vaults in the Amazon Glacier Developer Guide. - */ - listVaults(callback?: (err: AWSError, data: Glacier.Types.ListVaultsOutput) => void): Request; - /** - * This operation purchases a provisioned capacity unit for an AWS account. - */ - purchaseProvisionedCapacity(params: Glacier.Types.PurchaseProvisionedCapacityInput, callback?: (err: AWSError, data: Glacier.Types.PurchaseProvisionedCapacityOutput) => void): Request; - /** - * This operation purchases a provisioned capacity unit for an AWS account. - */ - purchaseProvisionedCapacity(callback?: (err: AWSError, data: Glacier.Types.PurchaseProvisionedCapacityOutput) => void): Request; - /** - * This operation removes one or more tags from the set of tags attached to a vault. For more information about tags, see Tagging Amazon Glacier Resources. This operation is idempotent. The operation will be successful, even if there are no tags attached to the vault. - */ - removeTagsFromVault(params: Glacier.Types.RemoveTagsFromVaultInput, callback?: (err: AWSError, data: {}) => void): Request<{}, AWSError>; - /** - * This operation removes one or more tags from the set of tags attached to a vault. For more information about tags, see Tagging Amazon Glacier Resources. This operation is idempotent. The operation will be successful, even if there are no tags attached to the vault. - */ - removeTagsFromVault(callback?: (err: AWSError, data: {}) => void): Request<{}, AWSError>; - /** - * This operation sets and then enacts a data retrieval policy in the region specified in the PUT request. You can set one policy per region for an AWS account. The policy is enacted within a few minutes of a successful PUT operation. The set policy operation does not affect retrieval jobs that were in progress before the policy was enacted. For more information about data retrieval policies, see Amazon Glacier Data Retrieval Policies. - */ - setDataRetrievalPolicy(params: Glacier.Types.SetDataRetrievalPolicyInput, callback?: (err: AWSError, data: {}) => void): Request<{}, AWSError>; - /** - * This operation sets and then enacts a data retrieval policy in the region specified in the PUT request. You can set one policy per region for an AWS account. The policy is enacted within a few minutes of a successful PUT operation. The set policy operation does not affect retrieval jobs that were in progress before the policy was enacted. For more information about data retrieval policies, see Amazon Glacier Data Retrieval Policies. - */ - setDataRetrievalPolicy(callback?: (err: AWSError, data: {}) => void): Request<{}, AWSError>; - /** - * This operation configures an access policy for a vault and will overwrite an existing policy. To configure a vault access policy, send a PUT request to the access-policy subresource of the vault. An access policy is specific to a vault and is also called a vault subresource. You can set one access policy per vault and the policy can be up to 20 KB in size. For more information about vault access policies, see Amazon Glacier Access Control with Vault Access Policies. - */ - setVaultAccessPolicy(params: Glacier.Types.SetVaultAccessPolicyInput, callback?: (err: AWSError, data: {}) => void): Request<{}, AWSError>; - /** - * This operation configures an access policy for a vault and will overwrite an existing policy. To configure a vault access policy, send a PUT request to the access-policy subresource of the vault. An access policy is specific to a vault and is also called a vault subresource. You can set one access policy per vault and the policy can be up to 20 KB in size. For more information about vault access policies, see Amazon Glacier Access Control with Vault Access Policies. - */ - setVaultAccessPolicy(callback?: (err: AWSError, data: {}) => void): Request<{}, AWSError>; - /** - * This operation configures notifications that will be sent when specific events happen to a vault. By default, you don't get any notifications. To configure vault notifications, send a PUT request to the notification-configuration subresource of the vault. The request should include a JSON document that provides an Amazon SNS topic and specific events for which you want Amazon Glacier to send notifications to the topic. Amazon SNS topics must grant permission to the vault to be allowed to publish notifications to the topic. You can configure a vault to publish a notification for the following vault events: ArchiveRetrievalCompleted This event occurs when a job that was initiated for an archive retrieval is completed (InitiateJob). The status of the completed job can be "Succeeded" or "Failed". The notification sent to the SNS topic is the same output as returned from DescribeJob. InventoryRetrievalCompleted This event occurs when a job that was initiated for an inventory retrieval is completed (InitiateJob). The status of the completed job can be "Succeeded" or "Failed". The notification sent to the SNS topic is the same output as returned from DescribeJob. An AWS account has full permission to perform all operations (actions). However, AWS Identity and Access Management (IAM) users don't have any permissions by default. You must grant them explicit permission to perform specific actions. For more information, see Access Control Using AWS Identity and Access Management (IAM). For conceptual information and underlying REST API, see Configuring Vault Notifications in Amazon Glacier and Set Vault Notification Configuration in the Amazon Glacier Developer Guide. - */ - setVaultNotifications(params: Glacier.Types.SetVaultNotificationsInput, callback?: (err: AWSError, data: {}) => void): Request<{}, AWSError>; - /** - * This operation configures notifications that will be sent when specific events happen to a vault. By default, you don't get any notifications. To configure vault notifications, send a PUT request to the notification-configuration subresource of the vault. The request should include a JSON document that provides an Amazon SNS topic and specific events for which you want Amazon Glacier to send notifications to the topic. Amazon SNS topics must grant permission to the vault to be allowed to publish notifications to the topic. You can configure a vault to publish a notification for the following vault events: ArchiveRetrievalCompleted This event occurs when a job that was initiated for an archive retrieval is completed (InitiateJob). The status of the completed job can be "Succeeded" or "Failed". The notification sent to the SNS topic is the same output as returned from DescribeJob. InventoryRetrievalCompleted This event occurs when a job that was initiated for an inventory retrieval is completed (InitiateJob). The status of the completed job can be "Succeeded" or "Failed". The notification sent to the SNS topic is the same output as returned from DescribeJob. An AWS account has full permission to perform all operations (actions). However, AWS Identity and Access Management (IAM) users don't have any permissions by default. You must grant them explicit permission to perform specific actions. For more information, see Access Control Using AWS Identity and Access Management (IAM). For conceptual information and underlying REST API, see Configuring Vault Notifications in Amazon Glacier and Set Vault Notification Configuration in the Amazon Glacier Developer Guide. - */ - setVaultNotifications(callback?: (err: AWSError, data: {}) => void): Request<{}, AWSError>; - /** - * This operation adds an archive to a vault. This is a synchronous operation, and for a successful upload, your data is durably persisted. Amazon Glacier returns the archive ID in the x-amz-archive-id header of the response. You must use the archive ID to access your data in Amazon Glacier. After you upload an archive, you should save the archive ID returned so that you can retrieve or delete the archive later. Besides saving the archive ID, you can also index it and give it a friendly name to allow for better searching. You can also use the optional archive description field to specify how the archive is referred to in an external index of archives, such as you might create in Amazon DynamoDB. You can also get the vault inventory to obtain a list of archive IDs in a vault. For more information, see InitiateJob. You must provide a SHA256 tree hash of the data you are uploading. For information about computing a SHA256 tree hash, see Computing Checksums. You can optionally specify an archive description of up to 1,024 printable ASCII characters. You can get the archive description when you either retrieve the archive or get the vault inventory. For more information, see InitiateJob. Amazon Glacier does not interpret the description in any way. An archive description does not need to be unique. You cannot use the description to retrieve or sort the archive list. Archives are immutable. After you upload an archive, you cannot edit the archive or its description. An AWS account has full permission to perform all operations (actions). However, AWS Identity and Access Management (IAM) users don't have any permissions by default. You must grant them explicit permission to perform specific actions. For more information, see Access Control Using AWS Identity and Access Management (IAM). For conceptual information and underlying REST API, see Uploading an Archive in Amazon Glacier and Upload Archive in the Amazon Glacier Developer Guide. - */ - uploadArchive(params: Glacier.Types.UploadArchiveInput, callback?: (err: AWSError, data: Glacier.Types.ArchiveCreationOutput) => void): Request; - /** - * This operation adds an archive to a vault. This is a synchronous operation, and for a successful upload, your data is durably persisted. Amazon Glacier returns the archive ID in the x-amz-archive-id header of the response. You must use the archive ID to access your data in Amazon Glacier. After you upload an archive, you should save the archive ID returned so that you can retrieve or delete the archive later. Besides saving the archive ID, you can also index it and give it a friendly name to allow for better searching. You can also use the optional archive description field to specify how the archive is referred to in an external index of archives, such as you might create in Amazon DynamoDB. You can also get the vault inventory to obtain a list of archive IDs in a vault. For more information, see InitiateJob. You must provide a SHA256 tree hash of the data you are uploading. For information about computing a SHA256 tree hash, see Computing Checksums. You can optionally specify an archive description of up to 1,024 printable ASCII characters. You can get the archive description when you either retrieve the archive or get the vault inventory. For more information, see InitiateJob. Amazon Glacier does not interpret the description in any way. An archive description does not need to be unique. You cannot use the description to retrieve or sort the archive list. Archives are immutable. After you upload an archive, you cannot edit the archive or its description. An AWS account has full permission to perform all operations (actions). However, AWS Identity and Access Management (IAM) users don't have any permissions by default. You must grant them explicit permission to perform specific actions. For more information, see Access Control Using AWS Identity and Access Management (IAM). For conceptual information and underlying REST API, see Uploading an Archive in Amazon Glacier and Upload Archive in the Amazon Glacier Developer Guide. - */ - uploadArchive(callback?: (err: AWSError, data: Glacier.Types.ArchiveCreationOutput) => void): Request; - /** - * This operation uploads a part of an archive. You can upload archive parts in any order. You can also upload them in parallel. You can upload up to 10,000 parts for a multipart upload. Amazon Glacier rejects your upload part request if any of the following conditions is true: SHA256 tree hash does not matchTo ensure that part data is not corrupted in transmission, you compute a SHA256 tree hash of the part and include it in your request. Upon receiving the part data, Amazon Glacier also computes a SHA256 tree hash. If these hash values don't match, the operation fails. For information about computing a SHA256 tree hash, see Computing Checksums. Part size does not matchThe size of each part except the last must match the size specified in the corresponding InitiateMultipartUpload request. The size of the last part must be the same size as, or smaller than, the specified size. If you upload a part whose size is smaller than the part size you specified in your initiate multipart upload request and that part is not the last part, then the upload part request will succeed. However, the subsequent Complete Multipart Upload request will fail. Range does not alignThe byte range value in the request does not align with the part size specified in the corresponding initiate request. For example, if you specify a part size of 4194304 bytes (4 MB), then 0 to 4194303 bytes (4 MB - 1) and 4194304 (4 MB) to 8388607 (8 MB - 1) are valid part ranges. However, if you set a range value of 2 MB to 6 MB, the range does not align with the part size and the upload will fail. This operation is idempotent. If you upload the same part multiple times, the data included in the most recent request overwrites the previously uploaded data. An AWS account has full permission to perform all operations (actions). However, AWS Identity and Access Management (IAM) users don't have any permissions by default. You must grant them explicit permission to perform specific actions. For more information, see Access Control Using AWS Identity and Access Management (IAM). For conceptual information and underlying REST API, see Uploading Large Archives in Parts (Multipart Upload) and Upload Part in the Amazon Glacier Developer Guide. - */ - uploadMultipartPart(params: Glacier.Types.UploadMultipartPartInput, callback?: (err: AWSError, data: Glacier.Types.UploadMultipartPartOutput) => void): Request; - /** - * This operation uploads a part of an archive. You can upload archive parts in any order. You can also upload them in parallel. You can upload up to 10,000 parts for a multipart upload. Amazon Glacier rejects your upload part request if any of the following conditions is true: SHA256 tree hash does not matchTo ensure that part data is not corrupted in transmission, you compute a SHA256 tree hash of the part and include it in your request. Upon receiving the part data, Amazon Glacier also computes a SHA256 tree hash. If these hash values don't match, the operation fails. For information about computing a SHA256 tree hash, see Computing Checksums. Part size does not matchThe size of each part except the last must match the size specified in the corresponding InitiateMultipartUpload request. The size of the last part must be the same size as, or smaller than, the specified size. If you upload a part whose size is smaller than the part size you specified in your initiate multipart upload request and that part is not the last part, then the upload part request will succeed. However, the subsequent Complete Multipart Upload request will fail. Range does not alignThe byte range value in the request does not align with the part size specified in the corresponding initiate request. For example, if you specify a part size of 4194304 bytes (4 MB), then 0 to 4194303 bytes (4 MB - 1) and 4194304 (4 MB) to 8388607 (8 MB - 1) are valid part ranges. However, if you set a range value of 2 MB to 6 MB, the range does not align with the part size and the upload will fail. This operation is idempotent. If you upload the same part multiple times, the data included in the most recent request overwrites the previously uploaded data. An AWS account has full permission to perform all operations (actions). However, AWS Identity and Access Management (IAM) users don't have any permissions by default. You must grant them explicit permission to perform specific actions. For more information, see Access Control Using AWS Identity and Access Management (IAM). For conceptual information and underlying REST API, see Uploading Large Archives in Parts (Multipart Upload) and Upload Part in the Amazon Glacier Developer Guide. - */ - uploadMultipartPart(callback?: (err: AWSError, data: Glacier.Types.UploadMultipartPartOutput) => void): Request; - /** - * Waits for the vaultExists state by periodically calling the underlying Glacier.describeVaultoperation every 3 seconds (at most 15 times). - */ - waitFor(state: "vaultExists", params: Glacier.Types.DescribeVaultInput, callback?: (err: AWSError, data: Glacier.Types.DescribeVaultOutput) => void): Request; - /** - * Waits for the vaultExists state by periodically calling the underlying Glacier.describeVaultoperation every 3 seconds (at most 15 times). - */ - waitFor(state: "vaultExists", callback?: (err: AWSError, data: Glacier.Types.DescribeVaultOutput) => void): Request; - /** - * Waits for the vaultNotExists state by periodically calling the underlying Glacier.describeVaultoperation every 3 seconds (at most 15 times). - */ - waitFor(state: "vaultNotExists", params: Glacier.Types.DescribeVaultInput, callback?: (err: AWSError, data: Glacier.Types.DescribeVaultOutput) => void): Request; - /** - * Waits for the vaultNotExists state by periodically calling the underlying Glacier.describeVaultoperation every 3 seconds (at most 15 times). - */ - waitFor(state: "vaultNotExists", callback?: (err: AWSError, data: Glacier.Types.DescribeVaultOutput) => void): Request; -} -declare namespace Glacier { - export interface AbortMultipartUploadInput { - /** - * The AccountId value is the AWS account ID of the account that owns the vault. You can either specify an AWS account ID or optionally a single '-' (hyphen), in which case Amazon Glacier uses the AWS account ID associated with the credentials used to sign the request. If you use an account ID, do not include any hyphens ('-') in the ID. - */ - accountId: string; - /** - * The name of the vault. - */ - vaultName: string; - /** - * The upload ID of the multipart upload to delete. - */ - uploadId: string; - } - export interface AbortVaultLockInput { - /** - * The AccountId value is the AWS account ID. This value must match the AWS account ID associated with the credentials used to sign the request. You can either specify an AWS account ID or optionally a single '-' (hyphen), in which case Amazon Glacier uses the AWS account ID associated with the credentials used to sign the request. If you specify your account ID, do not include any hyphens ('-') in the ID. - */ - accountId: string; - /** - * The name of the vault. - */ - vaultName: string; - } - export type ActionCode = "ArchiveRetrieval"|"InventoryRetrieval"|string; - export interface AddTagsToVaultInput { - /** - * The AccountId value is the AWS account ID of the account that owns the vault. You can either specify an AWS account ID or optionally a single '-' (hyphen), in which case Amazon Glacier uses the AWS account ID associated with the credentials used to sign the request. If you use an account ID, do not include any hyphens ('-') in the ID. - */ - accountId: string; - /** - * The name of the vault. - */ - vaultName: string; - /** - * The tags to add to the vault. Each tag is composed of a key and a value. The value can be an empty string. - */ - Tags?: TagMap; - } - export interface ArchiveCreationOutput { - /** - * The relative URI path of the newly added archive resource. - */ - location?: string; - /** - * The checksum of the archive computed by Amazon Glacier. - */ - checksum?: string; - /** - * The ID of the archive. This value is also included as part of the location. - */ - archiveId?: string; - } - export interface CompleteMultipartUploadInput { - /** - * The AccountId value is the AWS account ID of the account that owns the vault. You can either specify an AWS account ID or optionally a single '-' (hyphen), in which case Amazon Glacier uses the AWS account ID associated with the credentials used to sign the request. If you use an account ID, do not include any hyphens ('-') in the ID. - */ - accountId: string; - /** - * The name of the vault. - */ - vaultName: string; - /** - * The upload ID of the multipart upload. - */ - uploadId: string; - /** - * The total size, in bytes, of the entire archive. This value should be the sum of all the sizes of the individual parts that you uploaded. - */ - archiveSize?: string; - /** - * The SHA256 tree hash of the entire archive. It is the tree hash of SHA256 tree hash of the individual parts. If the value you specify in the request does not match the SHA256 tree hash of the final assembled archive as computed by Amazon Glacier, Amazon Glacier returns an error and the request fails. - */ - checksum?: string; - } - export interface CompleteVaultLockInput { - /** - * The AccountId value is the AWS account ID. This value must match the AWS account ID associated with the credentials used to sign the request. You can either specify an AWS account ID or optionally a single '-' (hyphen), in which case Amazon Glacier uses the AWS account ID associated with the credentials used to sign the request. If you specify your account ID, do not include any hyphens ('-') in the ID. - */ - accountId: string; - /** - * The name of the vault. - */ - vaultName: string; - /** - * The lockId value is the lock ID obtained from a InitiateVaultLock request. - */ - lockId: string; - } - export interface CreateVaultInput { - /** - * The AccountId value is the AWS account ID. This value must match the AWS account ID associated with the credentials used to sign the request. You can either specify an AWS account ID or optionally a single '-' (hyphen), in which case Amazon Glacier uses the AWS account ID associated with the credentials used to sign the request. If you specify your account ID, do not include any hyphens ('-') in the ID. - */ - accountId: string; - /** - * The name of the vault. - */ - vaultName: string; - } - export interface CreateVaultOutput { - /** - * The URI of the vault that was created. - */ - location?: string; - } - export interface DataRetrievalPolicy { - /** - * The policy rule. Although this is a list type, currently there must be only one rule, which contains a Strategy field and optionally a BytesPerHour field. - */ - Rules?: DataRetrievalRulesList; - } - export interface DataRetrievalRule { - /** - * The type of data retrieval policy to set. Valid values: BytesPerHour|FreeTier|None - */ - Strategy?: string; - /** - * The maximum number of bytes that can be retrieved in an hour. This field is required only if the value of the Strategy field is BytesPerHour. Your PUT operation will be rejected if the Strategy field is not set to BytesPerHour and you set this field. - */ - BytesPerHour?: NullableLong; - } - export type DataRetrievalRulesList = DataRetrievalRule[]; - export type DateTime = string; - export interface DeleteArchiveInput { - /** - * The AccountId value is the AWS account ID of the account that owns the vault. You can either specify an AWS account ID or optionally a single '-' (hyphen), in which case Amazon Glacier uses the AWS account ID associated with the credentials used to sign the request. If you use an account ID, do not include any hyphens ('-') in the ID. - */ - accountId: string; - /** - * The name of the vault. - */ - vaultName: string; - /** - * The ID of the archive to delete. - */ - archiveId: string; - } - export interface DeleteVaultAccessPolicyInput { - /** - * The AccountId value is the AWS account ID of the account that owns the vault. You can either specify an AWS account ID or optionally a single '-' (hyphen), in which case Amazon Glacier uses the AWS account ID associated with the credentials used to sign the request. If you use an account ID, do not include any hyphens ('-') in the ID. - */ - accountId: string; - /** - * The name of the vault. - */ - vaultName: string; - } - export interface DeleteVaultInput { - /** - * The AccountId value is the AWS account ID of the account that owns the vault. You can either specify an AWS account ID or optionally a single '-' (hyphen), in which case Amazon Glacier uses the AWS account ID associated with the credentials used to sign the request. If you use an account ID, do not include any hyphens ('-') in the ID. - */ - accountId: string; - /** - * The name of the vault. - */ - vaultName: string; - } - export interface DeleteVaultNotificationsInput { - /** - * The AccountId value is the AWS account ID of the account that owns the vault. You can either specify an AWS account ID or optionally a single '-' (hyphen), in which case Amazon Glacier uses the AWS account ID associated with the credentials used to sign the request. If you use an account ID, do not include any hyphens ('-') in the ID. - */ - accountId: string; - /** - * The name of the vault. - */ - vaultName: string; - } - export interface DescribeJobInput { - /** - * The AccountId value is the AWS account ID of the account that owns the vault. You can either specify an AWS account ID or optionally a single '-' (hyphen), in which case Amazon Glacier uses the AWS account ID associated with the credentials used to sign the request. If you use an account ID, do not include any hyphens ('-') in the ID. - */ - accountId: string; - /** - * The name of the vault. - */ - vaultName: string; - /** - * The ID of the job to describe. - */ - jobId: string; - } - export interface DescribeVaultInput { - /** - * The AccountId value is the AWS account ID of the account that owns the vault. You can either specify an AWS account ID or optionally a single '-' (hyphen), in which case Amazon Glacier uses the AWS account ID associated with the credentials used to sign the request. If you use an account ID, do not include any hyphens ('-') in the ID. - */ - accountId: string; - /** - * The name of the vault. - */ - vaultName: string; - } - export interface DescribeVaultOutput { - /** - * The Amazon Resource Name (ARN) of the vault. - */ - VaultARN?: string; - /** - * The name of the vault. - */ - VaultName?: string; - /** - * The Universal Coordinated Time (UTC) date when the vault was created. This value should be a string in the ISO 8601 date format, for example 2012-03-20T17:03:43.221Z. - */ - CreationDate?: string; - /** - * The Universal Coordinated Time (UTC) date when Amazon Glacier completed the last vault inventory. This value should be a string in the ISO 8601 date format, for example 2012-03-20T17:03:43.221Z. - */ - LastInventoryDate?: string; - /** - * The number of archives in the vault as of the last inventory date. This field will return null if an inventory has not yet run on the vault, for example if you just created the vault. - */ - NumberOfArchives?: long; - /** - * Total size, in bytes, of the archives in the vault as of the last inventory date. This field will return null if an inventory has not yet run on the vault, for example if you just created the vault. - */ - SizeInBytes?: long; - } - export interface GetDataRetrievalPolicyInput { - /** - * The AccountId value is the AWS account ID. This value must match the AWS account ID associated with the credentials used to sign the request. You can either specify an AWS account ID or optionally a single '-' (hyphen), in which case Amazon Glacier uses the AWS account ID associated with the credentials used to sign the request. If you specify your account ID, do not include any hyphens ('-') in the ID. - */ - accountId: string; - } - export interface GetDataRetrievalPolicyOutput { - /** - * Contains the returned data retrieval policy in JSON format. - */ - Policy?: DataRetrievalPolicy; - } - export interface GetJobOutputInput { - /** - * The AccountId value is the AWS account ID of the account that owns the vault. You can either specify an AWS account ID or optionally a single '-' (hyphen), in which case Amazon Glacier uses the AWS account ID associated with the credentials used to sign the request. If you use an account ID, do not include any hyphens ('-') in the ID. - */ - accountId: string; - /** - * The name of the vault. - */ - vaultName: string; - /** - * The job ID whose data is downloaded. - */ - jobId: string; - /** - * The range of bytes to retrieve from the output. For example, if you want to download the first 1,048,576 bytes, specify the range as bytes=0-1048575. By default, this operation downloads the entire output. If the job output is large, then you can use a range to retrieve a portion of the output. This allows you to download the entire output in smaller chunks of bytes. For example, suppose you have 1 GB of job output you want to download and you decide to download 128 MB chunks of data at a time, which is a total of eight Get Job Output requests. You use the following process to download the job output: Download a 128 MB chunk of output by specifying the appropriate byte range. Verify that all 128 MB of data was received. Along with the data, the response includes a SHA256 tree hash of the payload. You compute the checksum of the payload on the client and compare it with the checksum you received in the response to ensure you received all the expected data. Repeat steps 1 and 2 for all the eight 128 MB chunks of output data, each time specifying the appropriate byte range. After downloading all the parts of the job output, you have a list of eight checksum values. Compute the tree hash of these values to find the checksum of the entire output. Using the DescribeJob API, obtain job information of the job that provided you the output. The response includes the checksum of the entire archive stored in Amazon Glacier. You compare this value with the checksum you computed to ensure you have downloaded the entire archive content with no errors. - */ - range?: string; - } - export interface GetJobOutputOutput { - /** - * The job data, either archive data or inventory data. - */ - body?: Stream; - /** - * The checksum of the data in the response. This header is returned only when retrieving the output for an archive retrieval job. Furthermore, this header appears only under the following conditions: You get the entire range of the archive. You request a range to return of the archive that starts and ends on a multiple of 1 MB. For example, if you have an 3.1 MB archive and you specify a range to return that starts at 1 MB and ends at 2 MB, then the x-amz-sha256-tree-hash is returned as a response header. You request a range of the archive to return that starts on a multiple of 1 MB and goes to the end of the archive. For example, if you have a 3.1 MB archive and you specify a range that starts at 2 MB and ends at 3.1 MB (the end of the archive), then the x-amz-sha256-tree-hash is returned as a response header. - */ - checksum?: string; - /** - * The HTTP response code for a job output request. The value depends on whether a range was specified in the request. - */ - status?: httpstatus; - /** - * The range of bytes returned by Amazon Glacier. If only partial output is downloaded, the response provides the range of bytes Amazon Glacier returned. For example, bytes 0-1048575/8388608 returns the first 1 MB from 8 MB. - */ - contentRange?: string; - /** - * Indicates the range units accepted. For more information, see RFC2616. - */ - acceptRanges?: string; - /** - * The Content-Type depends on whether the job output is an archive or a vault inventory. For archive data, the Content-Type is application/octet-stream. For vault inventory, if you requested CSV format when you initiated the job, the Content-Type is text/csv. Otherwise, by default, vault inventory is returned as JSON, and the Content-Type is application/json. - */ - contentType?: string; - /** - * The description of an archive. - */ - archiveDescription?: string; - } - export interface GetVaultAccessPolicyInput { - /** - * The AccountId value is the AWS account ID of the account that owns the vault. You can either specify an AWS account ID or optionally a single '-' (hyphen), in which case Amazon Glacier uses the AWS account ID associated with the credentials used to sign the request. If you use an account ID, do not include any hyphens ('-') in the ID. - */ - accountId: string; - /** - * The name of the vault. - */ - vaultName: string; - } - export interface GetVaultAccessPolicyOutput { - /** - * Contains the returned vault access policy as a JSON string. - */ - policy?: VaultAccessPolicy; - } - export interface GetVaultLockInput { - /** - * The AccountId value is the AWS account ID of the account that owns the vault. You can either specify an AWS account ID or optionally a single '-' (hyphen), in which case Amazon Glacier uses the AWS account ID associated with the credentials used to sign the request. If you use an account ID, do not include any hyphens ('-') in the ID. - */ - accountId: string; - /** - * The name of the vault. - */ - vaultName: string; - } - export interface GetVaultLockOutput { - /** - * The vault lock policy as a JSON string, which uses "\" as an escape character. - */ - Policy?: string; - /** - * The state of the vault lock. InProgress or Locked. - */ - State?: string; - /** - * The UTC date and time at which the lock ID expires. This value can be null if the vault lock is in a Locked state. - */ - ExpirationDate?: string; - /** - * The UTC date and time at which the vault lock was put into the InProgress state. - */ - CreationDate?: string; - } - export interface GetVaultNotificationsInput { - /** - * The AccountId value is the AWS account ID of the account that owns the vault. You can either specify an AWS account ID or optionally a single '-' (hyphen), in which case Amazon Glacier uses the AWS account ID associated with the credentials used to sign the request. If you use an account ID, do not include any hyphens ('-') in the ID. - */ - accountId: string; - /** - * The name of the vault. - */ - vaultName: string; - } - export interface GetVaultNotificationsOutput { - /** - * Returns the notification configuration set on the vault. - */ - vaultNotificationConfig?: VaultNotificationConfig; - } - export interface GlacierJobDescription { - /** - * An opaque string that identifies an Amazon Glacier job. - */ - JobId?: string; - /** - * The job description you provided when you initiated the job. - */ - JobDescription?: string; - /** - * The job type. It is either ArchiveRetrieval or InventoryRetrieval. - */ - Action?: ActionCode; - /** - * For an ArchiveRetrieval job, this is the archive ID requested for download. Otherwise, this field is null. - */ - ArchiveId?: string; - /** - * The Amazon Resource Name (ARN) of the vault from which the archive retrieval was requested. - */ - VaultARN?: string; - /** - * The UTC date when the job was created. A string representation of ISO 8601 date format, for example, "2012-03-20T17:03:43.221Z". - */ - CreationDate?: string; - /** - * The job status. When a job is completed, you get the job's output. - */ - Completed?: boolean; - /** - * The status code can be InProgress, Succeeded, or Failed, and indicates the status of the job. - */ - StatusCode?: StatusCode; - /** - * A friendly message that describes the job status. - */ - StatusMessage?: string; - /** - * For an ArchiveRetrieval job, this is the size in bytes of the archive being requested for download. For the InventoryRetrieval job, the value is null. - */ - ArchiveSizeInBytes?: Size; - /** - * For an InventoryRetrieval job, this is the size in bytes of the inventory requested for download. For the ArchiveRetrieval job, the value is null. - */ - InventorySizeInBytes?: Size; - /** - * An Amazon Simple Notification Service (Amazon SNS) topic that receives notification. - */ - SNSTopic?: string; - /** - * The UTC time that the archive retrieval request completed. While the job is in progress, the value will be null. - */ - CompletionDate?: string; - /** - * For an ArchiveRetrieval job, it is the checksum of the archive. Otherwise, the value is null. The SHA256 tree hash value for the requested range of an archive. If the Initiate a Job request for an archive specified a tree-hash aligned range, then this field returns a value. For the specific case when the whole archive is retrieved, this value is the same as the ArchiveSHA256TreeHash value. This field is null in the following situations: Archive retrieval jobs that specify a range that is not tree-hash aligned. Archival jobs that specify a range that is equal to the whole archive and the job status is InProgress. Inventory jobs. - */ - SHA256TreeHash?: string; - /** - * The SHA256 tree hash of the entire archive for an archive retrieval. For inventory retrieval jobs, this field is null. - */ - ArchiveSHA256TreeHash?: string; - /** - * The retrieved byte range for archive retrieval jobs in the form "StartByteValue-EndByteValue" If no range was specified in the archive retrieval, then the whole archive is retrieved and StartByteValue equals 0 and EndByteValue equals the size of the archive minus 1. For inventory retrieval jobs this field is null. - */ - RetrievalByteRange?: string; - /** - * The retrieval option to use for the archive retrieval. Valid values are Expedited, Standard, or Bulk. Standard is the default. - */ - Tier?: string; - /** - * Parameters used for range inventory retrieval. - */ - InventoryRetrievalParameters?: InventoryRetrievalJobDescription; - } - export interface InitiateJobInput { - /** - * The AccountId value is the AWS account ID of the account that owns the vault. You can either specify an AWS account ID or optionally a single '-' (hyphen), in which case Amazon Glacier uses the AWS account ID associated with the credentials used to sign the request. If you use an account ID, do not include any hyphens ('-') in the ID. - */ - accountId: string; - /** - * The name of the vault. - */ - vaultName: string; - /** - * Provides options for specifying job information. - */ - jobParameters?: JobParameters; - } - export interface InitiateJobOutput { - /** - * The relative URI path of the job. - */ - location?: string; - /** - * The ID of the job. - */ - jobId?: string; - } - export interface InitiateMultipartUploadInput { - /** - * The AccountId value is the AWS account ID of the account that owns the vault. You can either specify an AWS account ID or optionally a single '-' (hyphen), in which case Amazon Glacier uses the AWS account ID associated with the credentials used to sign the request. If you use an account ID, do not include any hyphens ('-') in the ID. - */ - accountId: string; - /** - * The name of the vault. - */ - vaultName: string; - /** - * The archive description that you are uploading in parts. The part size must be a megabyte (1024 KB) multiplied by a power of 2, for example 1048576 (1 MB), 2097152 (2 MB), 4194304 (4 MB), 8388608 (8 MB), and so on. The minimum allowable part size is 1 MB, and the maximum is 4 GB (4096 MB). - */ - archiveDescription?: string; - /** - * The size of each part except the last, in bytes. The last part can be smaller than this part size. - */ - partSize?: string; - } - export interface InitiateMultipartUploadOutput { - /** - * The relative URI path of the multipart upload ID Amazon Glacier created. - */ - location?: string; - /** - * The ID of the multipart upload. This value is also included as part of the location. - */ - uploadId?: string; - } - export interface InitiateVaultLockInput { - /** - * The AccountId value is the AWS account ID. This value must match the AWS account ID associated with the credentials used to sign the request. You can either specify an AWS account ID or optionally a single '-' (hyphen), in which case Amazon Glacier uses the AWS account ID associated with the credentials used to sign the request. If you specify your account ID, do not include any hyphens ('-') in the ID. - */ - accountId: string; - /** - * The name of the vault. - */ - vaultName: string; - /** - * The vault lock policy as a JSON string, which uses "\" as an escape character. - */ - policy?: VaultLockPolicy; - } - export interface InitiateVaultLockOutput { - /** - * The lock ID, which is used to complete the vault locking process. - */ - lockId?: string; - } - export interface InventoryRetrievalJobDescription { - /** - * The output format for the vault inventory list, which is set by the InitiateJob request when initiating a job to retrieve a vault inventory. Valid values are CSV and JSON. - */ - Format?: string; - /** - * The start of the date range in Universal Coordinated Time (UTC) for vault inventory retrieval that includes archives created on or after this date. This value should be a string in the ISO 8601 date format, for example 2013-03-20T17:03:43Z. - */ - StartDate?: DateTime; - /** - * The end of the date range in UTC for vault inventory retrieval that includes archives created before this date. This value should be a string in the ISO 8601 date format, for example 2013-03-20T17:03:43Z. - */ - EndDate?: DateTime; - /** - * The maximum number of inventory items returned per vault inventory retrieval request. This limit is set when initiating the job with the a InitiateJob request. - */ - Limit?: string; - /** - * An opaque string that represents where to continue pagination of the vault inventory retrieval results. You use the marker in a new InitiateJob request to obtain additional inventory items. If there are no more inventory items, this value is null. For more information, see Range Inventory Retrieval. - */ - Marker?: string; - } - export interface InventoryRetrievalJobInput { - /** - * The start of the date range in UTC for vault inventory retrieval that includes archives created on or after this date. This value should be a string in the ISO 8601 date format, for example 2013-03-20T17:03:43Z. - */ - StartDate?: string; - /** - * The end of the date range in UTC for vault inventory retrieval that includes archives created before this date. This value should be a string in the ISO 8601 date format, for example 2013-03-20T17:03:43Z. - */ - EndDate?: string; - /** - * Specifies the maximum number of inventory items returned per vault inventory retrieval request. Valid values are greater than or equal to 1. - */ - Limit?: string; - /** - * An opaque string that represents where to continue pagination of the vault inventory retrieval results. You use the marker in a new InitiateJob request to obtain additional inventory items. If there are no more inventory items, this value is null. - */ - Marker?: string; - } - export type JobList = GlacierJobDescription[]; - export interface JobParameters { - /** - * When initiating a job to retrieve a vault inventory, you can optionally add this parameter to your request to specify the output format. If you are initiating an inventory job and do not specify a Format field, JSON is the default format. Valid values are "CSV" and "JSON". - */ - Format?: string; - /** - * The job type. You can initiate a job to retrieve an archive or get an inventory of a vault. Valid values are "archive-retrieval" and "inventory-retrieval". - */ - Type?: string; - /** - * The ID of the archive that you want to retrieve. This field is required only if Type is set to archive-retrieval. An error occurs if you specify this request parameter for an inventory retrieval job request. - */ - ArchiveId?: string; - /** - * The optional description for the job. The description must be less than or equal to 1,024 bytes. The allowable characters are 7-bit ASCII without control codes-specifically, ASCII values 32-126 decimal or 0x20-0x7E hexadecimal. - */ - Description?: string; - /** - * The Amazon SNS topic ARN to which Amazon Glacier sends a notification when the job is completed and the output is ready for you to download. The specified topic publishes the notification to its subscribers. The SNS topic must exist. - */ - SNSTopic?: string; - /** - * The byte range to retrieve for an archive retrieval. in the form "StartByteValue-EndByteValue" If not specified, the whole archive is retrieved. If specified, the byte range must be megabyte (1024*1024) aligned which means that StartByteValue must be divisible by 1 MB and EndByteValue plus 1 must be divisible by 1 MB or be the end of the archive specified as the archive byte size value minus 1. If RetrievalByteRange is not megabyte aligned, this operation returns a 400 response. An error occurs if you specify this field for an inventory retrieval job request. - */ - RetrievalByteRange?: string; - /** - * The retrieval option to use for the archive retrieval. Valid values are Expedited, Standard, or Bulk. Standard is the default. - */ - Tier?: string; - /** - * Input parameters used for range inventory retrieval. - */ - InventoryRetrievalParameters?: InventoryRetrievalJobInput; - } - export interface ListJobsInput { - /** - * The AccountId value is the AWS account ID of the account that owns the vault. You can either specify an AWS account ID or optionally a single '-' (hyphen), in which case Amazon Glacier uses the AWS account ID associated with the credentials used to sign the request. If you use an account ID, do not include any hyphens ('-') in the ID. - */ - accountId: string; - /** - * The name of the vault. - */ - vaultName: string; - /** - * The maximum number of jobs to be returned. The default limit is 1000. The number of jobs returned might be fewer than the specified limit, but the number of returned jobs never exceeds the limit. - */ - limit?: string; - /** - * An opaque string used for pagination. This value specifies the job at which the listing of jobs should begin. Get the marker value from a previous List Jobs response. You only need to include the marker if you are continuing the pagination of results started in a previous List Jobs request. - */ - marker?: string; - /** - * The type of job status to return. You can specify the following values: InProgress, Succeeded, or Failed. - */ - statuscode?: string; - /** - * The state of the jobs to return. You can specify true or false. - */ - completed?: string; - } - export interface ListJobsOutput { - /** - * A list of job objects. Each job object contains metadata describing the job. - */ - JobList?: JobList; - /** - * An opaque string used for pagination that specifies the job at which the listing of jobs should begin. You get the marker value from a previous List Jobs response. You only need to include the marker if you are continuing the pagination of the results started in a previous List Jobs request. - */ - Marker?: string; - } - export interface ListMultipartUploadsInput { - /** - * The AccountId value is the AWS account ID of the account that owns the vault. You can either specify an AWS account ID or optionally a single '-' (hyphen), in which case Amazon Glacier uses the AWS account ID associated with the credentials used to sign the request. If you use an account ID, do not include any hyphens ('-') in the ID. - */ - accountId: string; - /** - * The name of the vault. - */ - vaultName: string; - /** - * An opaque string used for pagination. This value specifies the upload at which the listing of uploads should begin. Get the marker value from a previous List Uploads response. You need only include the marker if you are continuing the pagination of results started in a previous List Uploads request. - */ - marker?: string; - /** - * Specifies the maximum number of uploads returned in the response body. If this value is not specified, the List Uploads operation returns up to 1,000 uploads. - */ - limit?: string; - } - export interface ListMultipartUploadsOutput { - /** - * A list of in-progress multipart uploads. - */ - UploadsList?: UploadsList; - /** - * An opaque string that represents where to continue pagination of the results. You use the marker in a new List Multipart Uploads request to obtain more uploads in the list. If there are no more uploads, this value is null. - */ - Marker?: string; - } - export interface ListPartsInput { - /** - * The AccountId value is the AWS account ID of the account that owns the vault. You can either specify an AWS account ID or optionally a single '-' (hyphen), in which case Amazon Glacier uses the AWS account ID associated with the credentials used to sign the request. If you use an account ID, do not include any hyphens ('-') in the ID. - */ - accountId: string; - /** - * The name of the vault. - */ - vaultName: string; - /** - * The upload ID of the multipart upload. - */ - uploadId: string; - /** - * An opaque string used for pagination. This value specifies the part at which the listing of parts should begin. Get the marker value from the response of a previous List Parts response. You need only include the marker if you are continuing the pagination of results started in a previous List Parts request. - */ - marker?: string; - /** - * The maximum number of parts to be returned. The default limit is 1000. The number of parts returned might be fewer than the specified limit, but the number of returned parts never exceeds the limit. - */ - limit?: string; - } - export interface ListPartsOutput { - /** - * The ID of the upload to which the parts are associated. - */ - MultipartUploadId?: string; - /** - * The Amazon Resource Name (ARN) of the vault to which the multipart upload was initiated. - */ - VaultARN?: string; - /** - * The description of the archive that was specified in the Initiate Multipart Upload request. - */ - ArchiveDescription?: string; - /** - * The part size in bytes. This is the same value that you specified in the Initiate Multipart Upload request. - */ - PartSizeInBytes?: long; - /** - * The UTC time at which the multipart upload was initiated. - */ - CreationDate?: string; - /** - * A list of the part sizes of the multipart upload. Each object in the array contains a RangeBytes and sha256-tree-hash name/value pair. - */ - Parts?: PartList; - /** - * An opaque string that represents where to continue pagination of the results. You use the marker in a new List Parts request to obtain more jobs in the list. If there are no more parts, this value is null. - */ - Marker?: string; - } - export interface ListProvisionedCapacityInput { - /** - * The AccountId value is the AWS account ID of the account that owns the vault. You can either specify an AWS account ID or optionally a single '-' (hyphen), in which case Amazon Glacier uses the AWS account ID associated with the credentials used to sign the request. If you use an account ID, don't include any hyphens ('-') in the ID. - */ - accountId: string; - } - export interface ListProvisionedCapacityOutput { - /** - * The response body contains the following JSON fields. - */ - ProvisionedCapacityList?: ProvisionedCapacityList; - } - export interface ListTagsForVaultInput { - /** - * The AccountId value is the AWS account ID of the account that owns the vault. You can either specify an AWS account ID or optionally a single '-' (hyphen), in which case Amazon Glacier uses the AWS account ID associated with the credentials used to sign the request. If you use an account ID, do not include any hyphens ('-') in the ID. - */ - accountId: string; - /** - * The name of the vault. - */ - vaultName: string; - } - export interface ListTagsForVaultOutput { - /** - * The tags attached to the vault. Each tag is composed of a key and a value. - */ - Tags?: TagMap; - } - export interface ListVaultsInput { - /** - * The AccountId value is the AWS account ID. This value must match the AWS account ID associated with the credentials used to sign the request. You can either specify an AWS account ID or optionally a single '-' (hyphen), in which case Amazon Glacier uses the AWS account ID associated with the credentials used to sign the request. If you specify your account ID, do not include any hyphens ('-') in the ID. - */ - accountId: string; - /** - * A string used for pagination. The marker specifies the vault ARN after which the listing of vaults should begin. - */ - marker?: string; - /** - * The maximum number of vaults to be returned. The default limit is 1000. The number of vaults returned might be fewer than the specified limit, but the number of returned vaults never exceeds the limit. - */ - limit?: string; - } - export interface ListVaultsOutput { - /** - * List of vaults. - */ - VaultList?: VaultList; - /** - * The vault ARN at which to continue pagination of the results. You use the marker in another List Vaults request to obtain more vaults in the list. - */ - Marker?: string; - } - export type NotificationEventList = string[]; - export type NullableLong = number; - export type PartList = PartListElement[]; - export interface PartListElement { - /** - * The byte range of a part, inclusive of the upper value of the range. - */ - RangeInBytes?: string; - /** - * The SHA256 tree hash value that Amazon Glacier calculated for the part. This field is never null. - */ - SHA256TreeHash?: string; - } - export interface ProvisionedCapacityDescription { - /** - * The ID that identifies the provisioned capacity unit. - */ - CapacityId?: string; - /** - * The date that the provisioned capacity unit was purchased, in Universal Coordinated Time (UTC). - */ - StartDate?: string; - /** - * The date that the provisioned capacity unit expires, in Universal Coordinated Time (UTC). - */ - ExpirationDate?: string; - } - export type ProvisionedCapacityList = ProvisionedCapacityDescription[]; - export interface PurchaseProvisionedCapacityInput { - /** - * The AWS account ID of the account that owns the vault. You can either specify an AWS account ID or optionally a single '-' (hyphen), in which case Amazon Glacier uses the AWS account ID associated with the credentials used to sign the request. If you use an account ID, don't include any hyphens ('-') in the ID. - */ - accountId: string; - } - export interface PurchaseProvisionedCapacityOutput { - /** - * The ID that identifies the provisioned capacity unit. - */ - capacityId?: string; - } - export interface RemoveTagsFromVaultInput { - /** - * The AccountId value is the AWS account ID of the account that owns the vault. You can either specify an AWS account ID or optionally a single '-' (hyphen), in which case Amazon Glacier uses the AWS account ID associated with the credentials used to sign the request. If you use an account ID, do not include any hyphens ('-') in the ID. - */ - accountId: string; - /** - * The name of the vault. - */ - vaultName: string; - /** - * A list of tag keys. Each corresponding tag is removed from the vault. - */ - TagKeys?: TagKeyList; - } - export interface SetDataRetrievalPolicyInput { - /** - * The AccountId value is the AWS account ID. This value must match the AWS account ID associated with the credentials used to sign the request. You can either specify an AWS account ID or optionally a single '-' (hyphen), in which case Amazon Glacier uses the AWS account ID associated with the credentials used to sign the request. If you specify your account ID, do not include any hyphens ('-') in the ID. - */ - accountId: string; - /** - * The data retrieval policy in JSON format. - */ - Policy?: DataRetrievalPolicy; - } - export interface SetVaultAccessPolicyInput { - /** - * The AccountId value is the AWS account ID of the account that owns the vault. You can either specify an AWS account ID or optionally a single '-' (hyphen), in which case Amazon Glacier uses the AWS account ID associated with the credentials used to sign the request. If you use an account ID, do not include any hyphens ('-') in the ID. - */ - accountId: string; - /** - * The name of the vault. - */ - vaultName: string; - /** - * The vault access policy as a JSON string. - */ - policy?: VaultAccessPolicy; - } - export interface SetVaultNotificationsInput { - /** - * The AccountId value is the AWS account ID of the account that owns the vault. You can either specify an AWS account ID or optionally a single '-' (hyphen), in which case Amazon Glacier uses the AWS account ID associated with the credentials used to sign the request. If you use an account ID, do not include any hyphens ('-') in the ID. - */ - accountId: string; - /** - * The name of the vault. - */ - vaultName: string; - /** - * Provides options for specifying notification configuration. - */ - vaultNotificationConfig?: VaultNotificationConfig; - } - export type Size = number; - export type StatusCode = "InProgress"|"Succeeded"|"Failed"|string; - export type Stream = Buffer|Uint8Array|Blob|string|Readable; - export type TagKey = string; - export type TagKeyList = string[]; - export type TagMap = {[key: string]: TagValue}; - export type TagValue = string; - export interface UploadArchiveInput { - /** - * The name of the vault. - */ - vaultName: string; - /** - * The AccountId value is the AWS account ID of the account that owns the vault. You can either specify an AWS account ID or optionally a single '-' (hyphen), in which case Amazon Glacier uses the AWS account ID associated with the credentials used to sign the request. If you use an account ID, do not include any hyphens ('-') in the ID. - */ - accountId: string; - /** - * The optional description of the archive you are uploading. - */ - archiveDescription?: string; - /** - * The SHA256 tree hash of the data being uploaded. - */ - checksum?: string; - /** - * The data to upload. - */ - body?: Stream; - } - export interface UploadListElement { - /** - * The ID of a multipart upload. - */ - MultipartUploadId?: string; - /** - * The Amazon Resource Name (ARN) of the vault that contains the archive. - */ - VaultARN?: string; - /** - * The description of the archive that was specified in the Initiate Multipart Upload request. - */ - ArchiveDescription?: string; - /** - * The part size, in bytes, specified in the Initiate Multipart Upload request. This is the size of all the parts in the upload except the last part, which may be smaller than this size. - */ - PartSizeInBytes?: long; - /** - * The UTC time at which the multipart upload was initiated. - */ - CreationDate?: string; - } - export interface UploadMultipartPartInput { - /** - * The AccountId value is the AWS account ID of the account that owns the vault. You can either specify an AWS account ID or optionally a single '-' (hyphen), in which case Amazon Glacier uses the AWS account ID associated with the credentials used to sign the request. If you use an account ID, do not include any hyphens ('-') in the ID. - */ - accountId: string; - /** - * The name of the vault. - */ - vaultName: string; - /** - * The upload ID of the multipart upload. - */ - uploadId: string; - /** - * The SHA256 tree hash of the data being uploaded. - */ - checksum?: string; - /** - * Identifies the range of bytes in the assembled archive that will be uploaded in this part. Amazon Glacier uses this information to assemble the archive in the proper sequence. The format of this header follows RFC 2616. An example header is Content-Range:bytes 0-4194303/*. - */ - range?: string; - /** - * The data to upload. - */ - body?: Stream; - } - export interface UploadMultipartPartOutput { - /** - * The SHA256 tree hash that Amazon Glacier computed for the uploaded part. - */ - checksum?: string; - } - export type UploadsList = UploadListElement[]; - export interface VaultAccessPolicy { - /** - * The vault access policy. - */ - Policy?: string; - } - export type VaultList = DescribeVaultOutput[]; - export interface VaultLockPolicy { - /** - * The vault lock policy. - */ - Policy?: string; - } - export interface VaultNotificationConfig { - /** - * The Amazon Simple Notification Service (Amazon SNS) topic Amazon Resource Name (ARN). - */ - SNSTopic?: string; - /** - * A list of one or more events for which Amazon Glacier will send a notification to the specified Amazon SNS topic. - */ - Events?: NotificationEventList; - } - export type httpstatus = number; - export type long = number; - /** - * A string in YYYY-MM-DD format that represents the latest possible API version that can be used in this service. Specify 'latest' to use the latest possible version. - */ - export type apiVersion = "2012-06-01"|"latest"|string; - export interface ClientApiVersions { - /** - * A string in YYYY-MM-DD format that represents the latest possible API version that can be used in this service. Specify 'latest' to use the latest possible version. - */ - apiVersion?: apiVersion; - } - export type ClientConfiguration = ServiceConfigurationOptions & ClientApiVersions; - /** - * Contains interfaces for use with the Glacier client. - */ - export import Types = Glacier; -} -export = Glacier; diff --git a/workshops/monte-carlo-on-ec2-spot-fleet/src/web/node_modules/aws-sdk/clients/glacier.js b/workshops/monte-carlo-on-ec2-spot-fleet/src/web/node_modules/aws-sdk/clients/glacier.js deleted file mode 100644 index e6fccbeb..00000000 --- a/workshops/monte-carlo-on-ec2-spot-fleet/src/web/node_modules/aws-sdk/clients/glacier.js +++ /dev/null @@ -1,20 +0,0 @@ -require('../lib/node_loader'); -var AWS = require('../lib/core'); -var Service = AWS.Service; -var apiLoader = AWS.apiLoader; - -apiLoader.services['glacier'] = {}; -AWS.Glacier = Service.defineService('glacier', ['2012-06-01']); -require('../lib/services/glacier'); -Object.defineProperty(apiLoader.services['glacier'], '2012-06-01', { - get: function get() { - var model = require('../apis/glacier-2012-06-01.min.json'); - model.paginators = require('../apis/glacier-2012-06-01.paginators.json').pagination; - model.waiters = require('../apis/glacier-2012-06-01.waiters2.json').waiters; - return model; - }, - enumerable: true, - configurable: true -}); - -module.exports = AWS.Glacier; diff --git a/workshops/monte-carlo-on-ec2-spot-fleet/src/web/node_modules/aws-sdk/clients/glue.d.ts b/workshops/monte-carlo-on-ec2-spot-fleet/src/web/node_modules/aws-sdk/clients/glue.d.ts deleted file mode 100644 index 1d9c15cc..00000000 --- a/workshops/monte-carlo-on-ec2-spot-fleet/src/web/node_modules/aws-sdk/clients/glue.d.ts +++ /dev/null @@ -1,3398 +0,0 @@ -import {Request} from '../lib/request'; -import {Response} from '../lib/response'; -import {AWSError} from '../lib/error'; -import {Service} from '../lib/service'; -import {ServiceConfigurationOptions} from '../lib/service'; -import {ConfigBase as Config} from '../lib/config'; -interface Blob {} -declare class Glue extends Service { - /** - * Constructs a service object. This object has one method for each API operation. - */ - constructor(options?: Glue.Types.ClientConfiguration) - config: Config & Glue.Types.ClientConfiguration; - /** - * Creates one or more partitions in a batch operation. - */ - batchCreatePartition(params: Glue.Types.BatchCreatePartitionRequest, callback?: (err: AWSError, data: Glue.Types.BatchCreatePartitionResponse) => void): Request; - /** - * Creates one or more partitions in a batch operation. - */ - batchCreatePartition(callback?: (err: AWSError, data: Glue.Types.BatchCreatePartitionResponse) => void): Request; - /** - * Deletes a list of connection definitions from the Data Catalog. - */ - batchDeleteConnection(params: Glue.Types.BatchDeleteConnectionRequest, callback?: (err: AWSError, data: Glue.Types.BatchDeleteConnectionResponse) => void): Request; - /** - * Deletes a list of connection definitions from the Data Catalog. - */ - batchDeleteConnection(callback?: (err: AWSError, data: Glue.Types.BatchDeleteConnectionResponse) => void): Request; - /** - * Deletes one or more partitions in a batch operation. - */ - batchDeletePartition(params: Glue.Types.BatchDeletePartitionRequest, callback?: (err: AWSError, data: Glue.Types.BatchDeletePartitionResponse) => void): Request; - /** - * Deletes one or more partitions in a batch operation. - */ - batchDeletePartition(callback?: (err: AWSError, data: Glue.Types.BatchDeletePartitionResponse) => void): Request; - /** - * Deletes multiple tables at once. - */ - batchDeleteTable(params: Glue.Types.BatchDeleteTableRequest, callback?: (err: AWSError, data: Glue.Types.BatchDeleteTableResponse) => void): Request; - /** - * Deletes multiple tables at once. - */ - batchDeleteTable(callback?: (err: AWSError, data: Glue.Types.BatchDeleteTableResponse) => void): Request; - /** - * Retrieves partitions in a batch request. - */ - batchGetPartition(params: Glue.Types.BatchGetPartitionRequest, callback?: (err: AWSError, data: Glue.Types.BatchGetPartitionResponse) => void): Request; - /** - * Retrieves partitions in a batch request. - */ - batchGetPartition(callback?: (err: AWSError, data: Glue.Types.BatchGetPartitionResponse) => void): Request; - /** - * Creates a Classifier in the user's account. - */ - createClassifier(params: Glue.Types.CreateClassifierRequest, callback?: (err: AWSError, data: Glue.Types.CreateClassifierResponse) => void): Request; - /** - * Creates a Classifier in the user's account. - */ - createClassifier(callback?: (err: AWSError, data: Glue.Types.CreateClassifierResponse) => void): Request; - /** - * Creates a connection definition in the Data Catalog. - */ - createConnection(params: Glue.Types.CreateConnectionRequest, callback?: (err: AWSError, data: Glue.Types.CreateConnectionResponse) => void): Request; - /** - * Creates a connection definition in the Data Catalog. - */ - createConnection(callback?: (err: AWSError, data: Glue.Types.CreateConnectionResponse) => void): Request; - /** - * Creates a new Crawler with specified targets, role, configuration, and optional schedule. At least one crawl target must be specified, in either the s3Targets or the jdbcTargets field. - */ - createCrawler(params: Glue.Types.CreateCrawlerRequest, callback?: (err: AWSError, data: Glue.Types.CreateCrawlerResponse) => void): Request; - /** - * Creates a new Crawler with specified targets, role, configuration, and optional schedule. At least one crawl target must be specified, in either the s3Targets or the jdbcTargets field. - */ - createCrawler(callback?: (err: AWSError, data: Glue.Types.CreateCrawlerResponse) => void): Request; - /** - * Creates a new database in a Data Catalog. - */ - createDatabase(params: Glue.Types.CreateDatabaseRequest, callback?: (err: AWSError, data: Glue.Types.CreateDatabaseResponse) => void): Request; - /** - * Creates a new database in a Data Catalog. - */ - createDatabase(callback?: (err: AWSError, data: Glue.Types.CreateDatabaseResponse) => void): Request; - /** - * Creates a new DevEndpoint. - */ - createDevEndpoint(params: Glue.Types.CreateDevEndpointRequest, callback?: (err: AWSError, data: Glue.Types.CreateDevEndpointResponse) => void): Request; - /** - * Creates a new DevEndpoint. - */ - createDevEndpoint(callback?: (err: AWSError, data: Glue.Types.CreateDevEndpointResponse) => void): Request; - /** - * Creates a new job. - */ - createJob(params: Glue.Types.CreateJobRequest, callback?: (err: AWSError, data: Glue.Types.CreateJobResponse) => void): Request; - /** - * Creates a new job. - */ - createJob(callback?: (err: AWSError, data: Glue.Types.CreateJobResponse) => void): Request; - /** - * Creates a new partition. - */ - createPartition(params: Glue.Types.CreatePartitionRequest, callback?: (err: AWSError, data: Glue.Types.CreatePartitionResponse) => void): Request; - /** - * Creates a new partition. - */ - createPartition(callback?: (err: AWSError, data: Glue.Types.CreatePartitionResponse) => void): Request; - /** - * Transforms a directed acyclic graph (DAG) into a Python script. - */ - createScript(params: Glue.Types.CreateScriptRequest, callback?: (err: AWSError, data: Glue.Types.CreateScriptResponse) => void): Request; - /** - * Transforms a directed acyclic graph (DAG) into a Python script. - */ - createScript(callback?: (err: AWSError, data: Glue.Types.CreateScriptResponse) => void): Request; - /** - * Creates a new table definition in the Data Catalog. - */ - createTable(params: Glue.Types.CreateTableRequest, callback?: (err: AWSError, data: Glue.Types.CreateTableResponse) => void): Request; - /** - * Creates a new table definition in the Data Catalog. - */ - createTable(callback?: (err: AWSError, data: Glue.Types.CreateTableResponse) => void): Request; - /** - * Creates a new trigger. - */ - createTrigger(params: Glue.Types.CreateTriggerRequest, callback?: (err: AWSError, data: Glue.Types.CreateTriggerResponse) => void): Request; - /** - * Creates a new trigger. - */ - createTrigger(callback?: (err: AWSError, data: Glue.Types.CreateTriggerResponse) => void): Request; - /** - * Creates a new function definition in the Data Catalog. - */ - createUserDefinedFunction(params: Glue.Types.CreateUserDefinedFunctionRequest, callback?: (err: AWSError, data: Glue.Types.CreateUserDefinedFunctionResponse) => void): Request; - /** - * Creates a new function definition in the Data Catalog. - */ - createUserDefinedFunction(callback?: (err: AWSError, data: Glue.Types.CreateUserDefinedFunctionResponse) => void): Request; - /** - * Removes a Classifier from the metadata store. - */ - deleteClassifier(params: Glue.Types.DeleteClassifierRequest, callback?: (err: AWSError, data: Glue.Types.DeleteClassifierResponse) => void): Request; - /** - * Removes a Classifier from the metadata store. - */ - deleteClassifier(callback?: (err: AWSError, data: Glue.Types.DeleteClassifierResponse) => void): Request; - /** - * Deletes a connection from the Data Catalog. - */ - deleteConnection(params: Glue.Types.DeleteConnectionRequest, callback?: (err: AWSError, data: Glue.Types.DeleteConnectionResponse) => void): Request; - /** - * Deletes a connection from the Data Catalog. - */ - deleteConnection(callback?: (err: AWSError, data: Glue.Types.DeleteConnectionResponse) => void): Request; - /** - * Removes a specified Crawler from the metadata store, unless the Crawler state is RUNNING. - */ - deleteCrawler(params: Glue.Types.DeleteCrawlerRequest, callback?: (err: AWSError, data: Glue.Types.DeleteCrawlerResponse) => void): Request; - /** - * Removes a specified Crawler from the metadata store, unless the Crawler state is RUNNING. - */ - deleteCrawler(callback?: (err: AWSError, data: Glue.Types.DeleteCrawlerResponse) => void): Request; - /** - * Removes a specified Database from a Data Catalog. - */ - deleteDatabase(params: Glue.Types.DeleteDatabaseRequest, callback?: (err: AWSError, data: Glue.Types.DeleteDatabaseResponse) => void): Request; - /** - * Removes a specified Database from a Data Catalog. - */ - deleteDatabase(callback?: (err: AWSError, data: Glue.Types.DeleteDatabaseResponse) => void): Request; - /** - * Deletes a specified DevEndpoint. - */ - deleteDevEndpoint(params: Glue.Types.DeleteDevEndpointRequest, callback?: (err: AWSError, data: Glue.Types.DeleteDevEndpointResponse) => void): Request; - /** - * Deletes a specified DevEndpoint. - */ - deleteDevEndpoint(callback?: (err: AWSError, data: Glue.Types.DeleteDevEndpointResponse) => void): Request; - /** - * Deletes a specified job. - */ - deleteJob(params: Glue.Types.DeleteJobRequest, callback?: (err: AWSError, data: Glue.Types.DeleteJobResponse) => void): Request; - /** - * Deletes a specified job. - */ - deleteJob(callback?: (err: AWSError, data: Glue.Types.DeleteJobResponse) => void): Request; - /** - * Deletes a specified partition. - */ - deletePartition(params: Glue.Types.DeletePartitionRequest, callback?: (err: AWSError, data: Glue.Types.DeletePartitionResponse) => void): Request; - /** - * Deletes a specified partition. - */ - deletePartition(callback?: (err: AWSError, data: Glue.Types.DeletePartitionResponse) => void): Request; - /** - * Removes a table definition from the Data Catalog. - */ - deleteTable(params: Glue.Types.DeleteTableRequest, callback?: (err: AWSError, data: Glue.Types.DeleteTableResponse) => void): Request; - /** - * Removes a table definition from the Data Catalog. - */ - deleteTable(callback?: (err: AWSError, data: Glue.Types.DeleteTableResponse) => void): Request; - /** - * Deletes a specified trigger. - */ - deleteTrigger(params: Glue.Types.DeleteTriggerRequest, callback?: (err: AWSError, data: Glue.Types.DeleteTriggerResponse) => void): Request; - /** - * Deletes a specified trigger. - */ - deleteTrigger(callback?: (err: AWSError, data: Glue.Types.DeleteTriggerResponse) => void): Request; - /** - * Deletes an existing function definition from the Data Catalog. - */ - deleteUserDefinedFunction(params: Glue.Types.DeleteUserDefinedFunctionRequest, callback?: (err: AWSError, data: Glue.Types.DeleteUserDefinedFunctionResponse) => void): Request; - /** - * Deletes an existing function definition from the Data Catalog. - */ - deleteUserDefinedFunction(callback?: (err: AWSError, data: Glue.Types.DeleteUserDefinedFunctionResponse) => void): Request; - /** - * Retrieves the status of a migration operation. - */ - getCatalogImportStatus(params: Glue.Types.GetCatalogImportStatusRequest, callback?: (err: AWSError, data: Glue.Types.GetCatalogImportStatusResponse) => void): Request; - /** - * Retrieves the status of a migration operation. - */ - getCatalogImportStatus(callback?: (err: AWSError, data: Glue.Types.GetCatalogImportStatusResponse) => void): Request; - /** - * Retrieve a Classifier by name. - */ - getClassifier(params: Glue.Types.GetClassifierRequest, callback?: (err: AWSError, data: Glue.Types.GetClassifierResponse) => void): Request; - /** - * Retrieve a Classifier by name. - */ - getClassifier(callback?: (err: AWSError, data: Glue.Types.GetClassifierResponse) => void): Request; - /** - * Lists all Classifier objects in the metadata store. - */ - getClassifiers(params: Glue.Types.GetClassifiersRequest, callback?: (err: AWSError, data: Glue.Types.GetClassifiersResponse) => void): Request; - /** - * Lists all Classifier objects in the metadata store. - */ - getClassifiers(callback?: (err: AWSError, data: Glue.Types.GetClassifiersResponse) => void): Request; - /** - * Retrieves a connection definition from the Data Catalog. - */ - getConnection(params: Glue.Types.GetConnectionRequest, callback?: (err: AWSError, data: Glue.Types.GetConnectionResponse) => void): Request; - /** - * Retrieves a connection definition from the Data Catalog. - */ - getConnection(callback?: (err: AWSError, data: Glue.Types.GetConnectionResponse) => void): Request; - /** - * Retrieves a list of connection definitions from the Data Catalog. - */ - getConnections(params: Glue.Types.GetConnectionsRequest, callback?: (err: AWSError, data: Glue.Types.GetConnectionsResponse) => void): Request; - /** - * Retrieves a list of connection definitions from the Data Catalog. - */ - getConnections(callback?: (err: AWSError, data: Glue.Types.GetConnectionsResponse) => void): Request; - /** - * Retrieves metadata for a specified Crawler. - */ - getCrawler(params: Glue.Types.GetCrawlerRequest, callback?: (err: AWSError, data: Glue.Types.GetCrawlerResponse) => void): Request; - /** - * Retrieves metadata for a specified Crawler. - */ - getCrawler(callback?: (err: AWSError, data: Glue.Types.GetCrawlerResponse) => void): Request; - /** - * Retrieves metrics about specified crawlers. - */ - getCrawlerMetrics(params: Glue.Types.GetCrawlerMetricsRequest, callback?: (err: AWSError, data: Glue.Types.GetCrawlerMetricsResponse) => void): Request; - /** - * Retrieves metrics about specified crawlers. - */ - getCrawlerMetrics(callback?: (err: AWSError, data: Glue.Types.GetCrawlerMetricsResponse) => void): Request; - /** - * Retrieves metadata for all Crawlers defined in the customer account. - */ - getCrawlers(params: Glue.Types.GetCrawlersRequest, callback?: (err: AWSError, data: Glue.Types.GetCrawlersResponse) => void): Request; - /** - * Retrieves metadata for all Crawlers defined in the customer account. - */ - getCrawlers(callback?: (err: AWSError, data: Glue.Types.GetCrawlersResponse) => void): Request; - /** - * Retrieves the definition of a specified database. - */ - getDatabase(params: Glue.Types.GetDatabaseRequest, callback?: (err: AWSError, data: Glue.Types.GetDatabaseResponse) => void): Request; - /** - * Retrieves the definition of a specified database. - */ - getDatabase(callback?: (err: AWSError, data: Glue.Types.GetDatabaseResponse) => void): Request; - /** - * Retrieves all Databases defined in a given Data Catalog. - */ - getDatabases(params: Glue.Types.GetDatabasesRequest, callback?: (err: AWSError, data: Glue.Types.GetDatabasesResponse) => void): Request; - /** - * Retrieves all Databases defined in a given Data Catalog. - */ - getDatabases(callback?: (err: AWSError, data: Glue.Types.GetDatabasesResponse) => void): Request; - /** - * Transforms a Python script into a directed acyclic graph (DAG). - */ - getDataflowGraph(params: Glue.Types.GetDataflowGraphRequest, callback?: (err: AWSError, data: Glue.Types.GetDataflowGraphResponse) => void): Request; - /** - * Transforms a Python script into a directed acyclic graph (DAG). - */ - getDataflowGraph(callback?: (err: AWSError, data: Glue.Types.GetDataflowGraphResponse) => void): Request; - /** - * Retrieves information about a specified DevEndpoint. - */ - getDevEndpoint(params: Glue.Types.GetDevEndpointRequest, callback?: (err: AWSError, data: Glue.Types.GetDevEndpointResponse) => void): Request; - /** - * Retrieves information about a specified DevEndpoint. - */ - getDevEndpoint(callback?: (err: AWSError, data: Glue.Types.GetDevEndpointResponse) => void): Request; - /** - * Retrieves all the DevEndpoints in this AWS account. - */ - getDevEndpoints(params: Glue.Types.GetDevEndpointsRequest, callback?: (err: AWSError, data: Glue.Types.GetDevEndpointsResponse) => void): Request; - /** - * Retrieves all the DevEndpoints in this AWS account. - */ - getDevEndpoints(callback?: (err: AWSError, data: Glue.Types.GetDevEndpointsResponse) => void): Request; - /** - * Retrieves an existing job definition. - */ - getJob(params: Glue.Types.GetJobRequest, callback?: (err: AWSError, data: Glue.Types.GetJobResponse) => void): Request; - /** - * Retrieves an existing job definition. - */ - getJob(callback?: (err: AWSError, data: Glue.Types.GetJobResponse) => void): Request; - /** - * Retrieves the metadata for a given job run. - */ - getJobRun(params: Glue.Types.GetJobRunRequest, callback?: (err: AWSError, data: Glue.Types.GetJobRunResponse) => void): Request; - /** - * Retrieves the metadata for a given job run. - */ - getJobRun(callback?: (err: AWSError, data: Glue.Types.GetJobRunResponse) => void): Request; - /** - * Retrieves metadata for all runs of a given job. - */ - getJobRuns(params: Glue.Types.GetJobRunsRequest, callback?: (err: AWSError, data: Glue.Types.GetJobRunsResponse) => void): Request; - /** - * Retrieves metadata for all runs of a given job. - */ - getJobRuns(callback?: (err: AWSError, data: Glue.Types.GetJobRunsResponse) => void): Request; - /** - * Retrieves all current jobs. - */ - getJobs(params: Glue.Types.GetJobsRequest, callback?: (err: AWSError, data: Glue.Types.GetJobsResponse) => void): Request; - /** - * Retrieves all current jobs. - */ - getJobs(callback?: (err: AWSError, data: Glue.Types.GetJobsResponse) => void): Request; - /** - * Creates mappings. - */ - getMapping(params: Glue.Types.GetMappingRequest, callback?: (err: AWSError, data: Glue.Types.GetMappingResponse) => void): Request; - /** - * Creates mappings. - */ - getMapping(callback?: (err: AWSError, data: Glue.Types.GetMappingResponse) => void): Request; - /** - * Retrieves information about a specified partition. - */ - getPartition(params: Glue.Types.GetPartitionRequest, callback?: (err: AWSError, data: Glue.Types.GetPartitionResponse) => void): Request; - /** - * Retrieves information about a specified partition. - */ - getPartition(callback?: (err: AWSError, data: Glue.Types.GetPartitionResponse) => void): Request; - /** - * Retrieves information about the partitions in a table. - */ - getPartitions(params: Glue.Types.GetPartitionsRequest, callback?: (err: AWSError, data: Glue.Types.GetPartitionsResponse) => void): Request; - /** - * Retrieves information about the partitions in a table. - */ - getPartitions(callback?: (err: AWSError, data: Glue.Types.GetPartitionsResponse) => void): Request; - /** - * Gets a Python script to perform a specified mapping. - */ - getPlan(params: Glue.Types.GetPlanRequest, callback?: (err: AWSError, data: Glue.Types.GetPlanResponse) => void): Request; - /** - * Gets a Python script to perform a specified mapping. - */ - getPlan(callback?: (err: AWSError, data: Glue.Types.GetPlanResponse) => void): Request; - /** - * Retrieves the Table definition in a Data Catalog for a specified table. - */ - getTable(params: Glue.Types.GetTableRequest, callback?: (err: AWSError, data: Glue.Types.GetTableResponse) => void): Request; - /** - * Retrieves the Table definition in a Data Catalog for a specified table. - */ - getTable(callback?: (err: AWSError, data: Glue.Types.GetTableResponse) => void): Request; - /** - * Retrieves a list of strings that identify available versions of a specified table. - */ - getTableVersions(params: Glue.Types.GetTableVersionsRequest, callback?: (err: AWSError, data: Glue.Types.GetTableVersionsResponse) => void): Request; - /** - * Retrieves a list of strings that identify available versions of a specified table. - */ - getTableVersions(callback?: (err: AWSError, data: Glue.Types.GetTableVersionsResponse) => void): Request; - /** - * Retrieves the definitions of some or all of the tables in a given Database. - */ - getTables(params: Glue.Types.GetTablesRequest, callback?: (err: AWSError, data: Glue.Types.GetTablesResponse) => void): Request; - /** - * Retrieves the definitions of some or all of the tables in a given Database. - */ - getTables(callback?: (err: AWSError, data: Glue.Types.GetTablesResponse) => void): Request; - /** - * Retrieves the definition of a trigger. - */ - getTrigger(params: Glue.Types.GetTriggerRequest, callback?: (err: AWSError, data: Glue.Types.GetTriggerResponse) => void): Request; - /** - * Retrieves the definition of a trigger. - */ - getTrigger(callback?: (err: AWSError, data: Glue.Types.GetTriggerResponse) => void): Request; - /** - * Gets all the triggers associated with a job. - */ - getTriggers(params: Glue.Types.GetTriggersRequest, callback?: (err: AWSError, data: Glue.Types.GetTriggersResponse) => void): Request; - /** - * Gets all the triggers associated with a job. - */ - getTriggers(callback?: (err: AWSError, data: Glue.Types.GetTriggersResponse) => void): Request; - /** - * Retrieves a specified function definition from the Data Catalog. - */ - getUserDefinedFunction(params: Glue.Types.GetUserDefinedFunctionRequest, callback?: (err: AWSError, data: Glue.Types.GetUserDefinedFunctionResponse) => void): Request; - /** - * Retrieves a specified function definition from the Data Catalog. - */ - getUserDefinedFunction(callback?: (err: AWSError, data: Glue.Types.GetUserDefinedFunctionResponse) => void): Request; - /** - * Retrieves a multiple function definitions from the Data Catalog. - */ - getUserDefinedFunctions(params: Glue.Types.GetUserDefinedFunctionsRequest, callback?: (err: AWSError, data: Glue.Types.GetUserDefinedFunctionsResponse) => void): Request; - /** - * Retrieves a multiple function definitions from the Data Catalog. - */ - getUserDefinedFunctions(callback?: (err: AWSError, data: Glue.Types.GetUserDefinedFunctionsResponse) => void): Request; - /** - * Imports an existing Athena Data Catalog to AWS Glue - */ - importCatalogToGlue(params: Glue.Types.ImportCatalogToGlueRequest, callback?: (err: AWSError, data: Glue.Types.ImportCatalogToGlueResponse) => void): Request; - /** - * Imports an existing Athena Data Catalog to AWS Glue - */ - importCatalogToGlue(callback?: (err: AWSError, data: Glue.Types.ImportCatalogToGlueResponse) => void): Request; - /** - * Resets a bookmark entry. - */ - resetJobBookmark(params: Glue.Types.ResetJobBookmarkRequest, callback?: (err: AWSError, data: Glue.Types.ResetJobBookmarkResponse) => void): Request; - /** - * Resets a bookmark entry. - */ - resetJobBookmark(callback?: (err: AWSError, data: Glue.Types.ResetJobBookmarkResponse) => void): Request; - /** - * Starts a crawl using the specified Crawler, regardless of what is scheduled. If the Crawler is already running, does nothing. - */ - startCrawler(params: Glue.Types.StartCrawlerRequest, callback?: (err: AWSError, data: Glue.Types.StartCrawlerResponse) => void): Request; - /** - * Starts a crawl using the specified Crawler, regardless of what is scheduled. If the Crawler is already running, does nothing. - */ - startCrawler(callback?: (err: AWSError, data: Glue.Types.StartCrawlerResponse) => void): Request; - /** - * Changes the schedule state of the specified crawler to SCHEDULED, unless the crawler is already running or the schedule state is already SCHEDULED. - */ - startCrawlerSchedule(params: Glue.Types.StartCrawlerScheduleRequest, callback?: (err: AWSError, data: Glue.Types.StartCrawlerScheduleResponse) => void): Request; - /** - * Changes the schedule state of the specified crawler to SCHEDULED, unless the crawler is already running or the schedule state is already SCHEDULED. - */ - startCrawlerSchedule(callback?: (err: AWSError, data: Glue.Types.StartCrawlerScheduleResponse) => void): Request; - /** - * Runs a job. - */ - startJobRun(params: Glue.Types.StartJobRunRequest, callback?: (err: AWSError, data: Glue.Types.StartJobRunResponse) => void): Request; - /** - * Runs a job. - */ - startJobRun(callback?: (err: AWSError, data: Glue.Types.StartJobRunResponse) => void): Request; - /** - * Starts an existing trigger. - */ - startTrigger(params: Glue.Types.StartTriggerRequest, callback?: (err: AWSError, data: Glue.Types.StartTriggerResponse) => void): Request; - /** - * Starts an existing trigger. - */ - startTrigger(callback?: (err: AWSError, data: Glue.Types.StartTriggerResponse) => void): Request; - /** - * If the specified Crawler is running, stops the crawl. - */ - stopCrawler(params: Glue.Types.StopCrawlerRequest, callback?: (err: AWSError, data: Glue.Types.StopCrawlerResponse) => void): Request; - /** - * If the specified Crawler is running, stops the crawl. - */ - stopCrawler(callback?: (err: AWSError, data: Glue.Types.StopCrawlerResponse) => void): Request; - /** - * Sets the schedule state of the specified crawler to NOT_SCHEDULED, but does not stop the crawler if it is already running. - */ - stopCrawlerSchedule(params: Glue.Types.StopCrawlerScheduleRequest, callback?: (err: AWSError, data: Glue.Types.StopCrawlerScheduleResponse) => void): Request; - /** - * Sets the schedule state of the specified crawler to NOT_SCHEDULED, but does not stop the crawler if it is already running. - */ - stopCrawlerSchedule(callback?: (err: AWSError, data: Glue.Types.StopCrawlerScheduleResponse) => void): Request; - /** - * Stops a specified trigger. - */ - stopTrigger(params: Glue.Types.StopTriggerRequest, callback?: (err: AWSError, data: Glue.Types.StopTriggerResponse) => void): Request; - /** - * Stops a specified trigger. - */ - stopTrigger(callback?: (err: AWSError, data: Glue.Types.StopTriggerResponse) => void): Request; - /** - * Modifies an existing Classifier. - */ - updateClassifier(params: Glue.Types.UpdateClassifierRequest, callback?: (err: AWSError, data: Glue.Types.UpdateClassifierResponse) => void): Request; - /** - * Modifies an existing Classifier. - */ - updateClassifier(callback?: (err: AWSError, data: Glue.Types.UpdateClassifierResponse) => void): Request; - /** - * Updates a connection definition in the Data Catalog. - */ - updateConnection(params: Glue.Types.UpdateConnectionRequest, callback?: (err: AWSError, data: Glue.Types.UpdateConnectionResponse) => void): Request; - /** - * Updates a connection definition in the Data Catalog. - */ - updateConnection(callback?: (err: AWSError, data: Glue.Types.UpdateConnectionResponse) => void): Request; - /** - * Updates a Crawler. If a Crawler is running, you must stop it using StopCrawler before updating it. - */ - updateCrawler(params: Glue.Types.UpdateCrawlerRequest, callback?: (err: AWSError, data: Glue.Types.UpdateCrawlerResponse) => void): Request; - /** - * Updates a Crawler. If a Crawler is running, you must stop it using StopCrawler before updating it. - */ - updateCrawler(callback?: (err: AWSError, data: Glue.Types.UpdateCrawlerResponse) => void): Request; - /** - * Updates the schedule of a crawler using a Cron expression. - */ - updateCrawlerSchedule(params: Glue.Types.UpdateCrawlerScheduleRequest, callback?: (err: AWSError, data: Glue.Types.UpdateCrawlerScheduleResponse) => void): Request; - /** - * Updates the schedule of a crawler using a Cron expression. - */ - updateCrawlerSchedule(callback?: (err: AWSError, data: Glue.Types.UpdateCrawlerScheduleResponse) => void): Request; - /** - * Updates an existing database definition in a Data Catalog. - */ - updateDatabase(params: Glue.Types.UpdateDatabaseRequest, callback?: (err: AWSError, data: Glue.Types.UpdateDatabaseResponse) => void): Request; - /** - * Updates an existing database definition in a Data Catalog. - */ - updateDatabase(callback?: (err: AWSError, data: Glue.Types.UpdateDatabaseResponse) => void): Request; - /** - * Updates a specified DevEndpoint. - */ - updateDevEndpoint(params: Glue.Types.UpdateDevEndpointRequest, callback?: (err: AWSError, data: Glue.Types.UpdateDevEndpointResponse) => void): Request; - /** - * Updates a specified DevEndpoint. - */ - updateDevEndpoint(callback?: (err: AWSError, data: Glue.Types.UpdateDevEndpointResponse) => void): Request; - /** - * Updates an existing job definition. - */ - updateJob(params: Glue.Types.UpdateJobRequest, callback?: (err: AWSError, data: Glue.Types.UpdateJobResponse) => void): Request; - /** - * Updates an existing job definition. - */ - updateJob(callback?: (err: AWSError, data: Glue.Types.UpdateJobResponse) => void): Request; - /** - * Updates a partition. - */ - updatePartition(params: Glue.Types.UpdatePartitionRequest, callback?: (err: AWSError, data: Glue.Types.UpdatePartitionResponse) => void): Request; - /** - * Updates a partition. - */ - updatePartition(callback?: (err: AWSError, data: Glue.Types.UpdatePartitionResponse) => void): Request; - /** - * Updates a metadata table in the Data Catalog. - */ - updateTable(params: Glue.Types.UpdateTableRequest, callback?: (err: AWSError, data: Glue.Types.UpdateTableResponse) => void): Request; - /** - * Updates a metadata table in the Data Catalog. - */ - updateTable(callback?: (err: AWSError, data: Glue.Types.UpdateTableResponse) => void): Request; - /** - * Updates a trigger definition. - */ - updateTrigger(params: Glue.Types.UpdateTriggerRequest, callback?: (err: AWSError, data: Glue.Types.UpdateTriggerResponse) => void): Request; - /** - * Updates a trigger definition. - */ - updateTrigger(callback?: (err: AWSError, data: Glue.Types.UpdateTriggerResponse) => void): Request; - /** - * Updates an existing function definition in the Data Catalog. - */ - updateUserDefinedFunction(params: Glue.Types.UpdateUserDefinedFunctionRequest, callback?: (err: AWSError, data: Glue.Types.UpdateUserDefinedFunctionResponse) => void): Request; - /** - * Updates an existing function definition in the Data Catalog. - */ - updateUserDefinedFunction(callback?: (err: AWSError, data: Glue.Types.UpdateUserDefinedFunctionResponse) => void): Request; -} -declare namespace Glue { - export interface Action { - JobName?: NameString; - Arguments?: GenericMap; - } - export type ActionList = Action[]; - export type AttemptCount = number; - export interface BatchCreatePartitionRequest { - /** - * The ID of the catalog in which the partion is to be created. Currently, this should be the AWS account ID. - */ - CatalogId?: CatalogIdString; - /** - * The name of the metadata database in which the partition is to be created. - */ - DatabaseName: NameString; - /** - * The name of the metadata table in which the partition is to be created. - */ - TableName: NameString; - /** - * A list of PartitionInput structures that define the partitions to be created. - */ - PartitionInputList: PartitionInputList; - } - export interface BatchCreatePartitionResponse { - /** - * Errors encountered when trying to create the requested partitions. - */ - Errors?: PartitionErrors; - } - export interface BatchDeleteConnectionRequest { - /** - * The ID of the Data Catalog in which the connections reside. If none is supplied, the AWS account ID is used by default. - */ - CatalogId?: CatalogIdString; - /** - * A list of names of the connections to delete. - */ - ConnectionNameList: DeleteConnectionNameList; - } - export interface BatchDeleteConnectionResponse { - /** - * A list of names of the connection definitions that were successfully deleted. - */ - Succeeded?: NameStringList; - /** - * A map of the names of connections that were not successfully deleted to error details. - */ - Errors?: ErrorByName; - } - export interface BatchDeletePartitionRequest { - /** - * The ID of the Data Catalog where the partition to be deleted resides. If none is supplied, the AWS account ID is used by default. - */ - CatalogId?: CatalogIdString; - /** - * The name of the catalog database in which the table in question resides. - */ - DatabaseName: NameString; - /** - * The name of the table where the partitions to be deleted is located. - */ - TableName: NameString; - /** - * A list of PartitionInput structures that define the partitions to be deleted. - */ - PartitionsToDelete: BatchDeletePartitionValueList; - } - export interface BatchDeletePartitionResponse { - /** - * Errors encountered when trying to delete the requested partitions. - */ - Errors?: PartitionErrors; - } - export type BatchDeletePartitionValueList = PartitionValueList[]; - export type BatchDeleteTableNameList = NameString[]; - export interface BatchDeleteTableRequest { - /** - * The ID of the Data Catalog where the table resides. If none is supplied, the AWS account ID is used by default. - */ - CatalogId?: CatalogIdString; - /** - * The name of the catalog database where the tables to delete reside. - */ - DatabaseName: NameString; - /** - * A list of the table to delete. - */ - TablesToDelete: BatchDeleteTableNameList; - } - export interface BatchDeleteTableResponse { - /** - * A list of errors encountered in attempting to delete the specified tables. - */ - Errors?: TableErrors; - } - export interface BatchGetPartitionRequest { - /** - * The ID of the Data Catalog where the partitions in question reside. If none is supplied, the AWS account ID is used by default. - */ - CatalogId?: CatalogIdString; - /** - * The name of the catalog database where the partitions reside. - */ - DatabaseName: NameString; - /** - * The name of the partitions' table. - */ - TableName: NameString; - /** - * A list of partition values identifying the partitions to retrieve. - */ - PartitionsToGet: BatchGetPartitionValueList; - } - export interface BatchGetPartitionResponse { - /** - * A list of the requested partitions. - */ - Partitions?: PartitionList; - /** - * A list of the partition values in the request for which partions were not returned. - */ - UnprocessedKeys?: BatchGetPartitionValueList; - } - export type BatchGetPartitionValueList = PartitionValueList[]; - export type Boolean = boolean; - export type BooleanValue = boolean; - export type BoundedPartitionValueList = ValueString[]; - export type CatalogEntries = CatalogEntry[]; - export interface CatalogEntry { - /** - * The database in which the table metadata resides. - */ - DatabaseName: NameString; - /** - * The name of the table in question. - */ - TableName: NameString; - } - export type CatalogIdString = string; - export interface CatalogImportStatus { - /** - * True if the migration has completed, or False otherwise. - */ - ImportCompleted?: Boolean; - /** - * The time that the migration was started. - */ - ImportTime?: Timestamp; - /** - * The name of the person who initiated the migration. - */ - ImportedBy?: NameString; - } - export type Classification = string; - export interface Classifier { - /** - * A GrokClassifier object. - */ - GrokClassifier?: GrokClassifier; - } - export type ClassifierList = Classifier[]; - export type ClassifierNameList = NameString[]; - export type CodeGenArgName = string; - export type CodeGenArgValue = string; - export interface CodeGenEdge { - /** - * The ID of the node at which the edge starts. - */ - Source: CodeGenIdentifier; - /** - * The ID of the node at which the edge ends. - */ - Target: CodeGenIdentifier; - /** - * The target of the edge. - */ - TargetParameter?: CodeGenArgName; - } - export type CodeGenIdentifier = string; - export interface CodeGenNode { - /** - * A node identifier that is unique within the node's graph. - */ - Id: CodeGenIdentifier; - /** - * The type of node this is. - */ - NodeType: CodeGenNodeType; - /** - * Properties of the node, in the form of name-value pairs. - */ - Args: CodeGenNodeArgs; - /** - * The line number of the node. - */ - LineNumber?: Integer; - } - export interface CodeGenNodeArg { - /** - * The name of the argument or property. - */ - Name: CodeGenArgName; - /** - * The value of the argument or property. - */ - Value: CodeGenArgValue; - /** - * True if the value is used as a parameter. - */ - Param?: Boolean; - } - export type CodeGenNodeArgs = CodeGenNodeArg[]; - export type CodeGenNodeType = string; - export interface Column { - /** - * The name of the Column. - */ - Name: NameString; - /** - * The datatype of data in the Column. - */ - Type?: ColumnTypeString; - /** - * Free-form text comment. - */ - Comment?: CommentString; - } - export type ColumnList = Column[]; - export type ColumnTypeString = string; - export type ColumnValueStringList = ColumnValuesString[]; - export type ColumnValuesString = string; - export type CommentString = string; - export interface Condition { - LogicalOperator?: LogicalOperator; - JobName?: NameString; - State?: JobRunState; - } - export type ConditionList = Condition[]; - export interface Connection { - /** - * The name of the connection definition. - */ - Name?: NameString; - /** - * Description of the connection. - */ - Description?: DescriptionString; - /** - * The type of the connection. - */ - ConnectionType?: ConnectionType; - /** - * A list of criteria that can be used in selecting this connection. - */ - MatchCriteria?: MatchCriteria; - /** - * A list of key-value pairs used as parameters for this connection. - */ - ConnectionProperties?: ConnectionProperties; - /** - * A map of physical connection requirements, such as VPC and SecurityGroup, needed for making this connection successfully. - */ - PhysicalConnectionRequirements?: PhysicalConnectionRequirements; - /** - * The time this connection definition was created. - */ - CreationTime?: Timestamp; - /** - * The last time this connection definition was updated. - */ - LastUpdatedTime?: Timestamp; - /** - * The user, group or role that last updated this connection definition. - */ - LastUpdatedBy?: NameString; - } - export interface ConnectionInput { - /** - * The name of the connection. - */ - Name?: NameString; - /** - * Description of the connection. - */ - Description?: DescriptionString; - /** - * The type of the connection. - */ - ConnectionType?: ConnectionType; - /** - * A list of criteria that can be used in selecting this connection. - */ - MatchCriteria?: MatchCriteria; - /** - * A list of key-value pairs used as parameters for this connection. - */ - ConnectionProperties?: ConnectionProperties; - /** - * A map of physical connection requirements, such as VPC and SecurityGroup, needed for making this connection successfully. - */ - PhysicalConnectionRequirements?: PhysicalConnectionRequirements; - } - export type ConnectionList = Connection[]; - export type ConnectionName = string; - export type ConnectionProperties = {[key: string]: ValueString}; - export type ConnectionPropertyKey = "HOST"|"PORT"|"USERNAME"|"PASSWORD"|"JDBC_DRIVER_JAR_URI"|"JDBC_DRIVER_CLASS_NAME"|"JDBC_ENGINE"|"JDBC_ENGINE_VERSION"|"CONFIG_FILES"|"INSTANCE_ID"|"JDBC_CONNECTION_URL"|string; - export type ConnectionType = "JDBC"|"SFTP"|string; - export interface ConnectionsList { - /** - * A list of connections used by the job. - */ - Connections?: StringList; - } - export interface Crawler { - /** - * The Crawler name. - */ - Name?: NameString; - /** - * The ARN of an IAM role used to access customer resources such as data in S3. - */ - Role?: RoleArn; - /** - * A collection of targets to crawl. - */ - Targets?: CrawlerTargets; - /** - * The Database where this Crawler's output should be stored. - */ - DatabaseName?: DatabaseName; - /** - * A description of this Crawler and where it should be used. - */ - Description?: DescriptionString; - /** - * A list of custom Classifiers associated with this Crawler. - */ - Classifiers?: ClassifierNameList; - /** - * Sets policy for the crawler's update and delete behavior. - */ - SchemaChangePolicy?: SchemaChangePolicy; - /** - * Indicates whether this Crawler is running, or whether a run is pending. - */ - State?: CrawlerState; - /** - * The table prefix used for catalog tables created. - */ - TablePrefix?: TablePrefix; - /** - * A Schedule object that specifies the schedule on which this Crawler is to be run. - */ - Schedule?: Schedule; - /** - * If this Crawler is running, contains the total time elapsed since the last crawl began. - */ - CrawlElapsedTime?: MillisecondsCount; - /** - * The time when the Crawler was created. - */ - CreationTime?: Timestamp; - /** - * The time the Crawler was last updated. - */ - LastUpdated?: Timestamp; - /** - * The status of the last crawl, and potentially error information if an error occurred. - */ - LastCrawl?: LastCrawlInfo; - /** - * The version of the Crawler. - */ - Version?: VersionId; - } - export type CrawlerList = Crawler[]; - export interface CrawlerMetrics { - /** - * The name of the crawler. - */ - CrawlerName?: NameString; - /** - * The estimated time left to complete a running crawl. - */ - TimeLeftSeconds?: NonNegativeDouble; - /** - * True if the crawler is estimating its - */ - StillEstimating?: Boolean; - /** - * The duration of the crawler's most recent run, in seconds. - */ - LastRuntimeSeconds?: NonNegativeDouble; - /** - * The median duration of this crawler's runs, in seconds. - */ - MedianRuntimeSeconds?: NonNegativeDouble; - /** - * A list of the tables created by this crawler. - */ - TablesCreated?: NonNegativeInteger; - /** - * A list of the tables created by this crawler. - */ - TablesUpdated?: NonNegativeInteger; - /** - * A list of the tables deleted by this crawler. - */ - TablesDeleted?: NonNegativeInteger; - } - export type CrawlerMetricsList = CrawlerMetrics[]; - export type CrawlerNameList = NameString[]; - export type CrawlerState = "READY"|"RUNNING"|"STOPPING"|string; - export interface CrawlerTargets { - /** - * Specifies targets in AWS S3. - */ - S3Targets?: S3TargetList; - /** - * Specifies JDBC targets. - */ - JdbcTargets?: JdbcTargetList; - } - export interface CreateClassifierRequest { - /** - * A grok classifier to create. - */ - GrokClassifier?: CreateGrokClassifierRequest; - } - export interface CreateClassifierResponse { - } - export interface CreateConnectionRequest { - /** - * The ID of the Data Catalog in which to create the connection. If none is supplied, the AWS account ID is used by default. - */ - CatalogId?: CatalogIdString; - /** - * A ConnectionInput object defining the connection to create. - */ - ConnectionInput: ConnectionInput; - } - export interface CreateConnectionResponse { - } - export interface CreateCrawlerRequest { - /** - * Name of the new Crawler. - */ - Name: NameString; - /** - * The AWS ARN of the IAM role used by the new Crawler to access customer resources. - */ - Role: RoleArn; - /** - * The Glue Database where results will be stored, such as: arn:aws:daylight:us-east-1::database/sometable/*. - */ - DatabaseName: DatabaseName; - /** - * A description of the new Crawler. - */ - Description?: DescriptionString; - /** - * A list of collection of targets to crawl. - */ - Targets: CrawlerTargets; - /** - * A cron expression that can be used as a Cloudwatch event (see CloudWatch Schedule Expression Syntax. For example, to run every day at 12:15 UTC, specify: cron(15 12 * * ? *). - */ - Schedule?: CronExpression; - /** - * A list of custom Classifier names that the user has registered. By default, all AWS classifiers are included in a crawl, but these custom classifiers always override the default classifiers for a given classification. - */ - Classifiers?: ClassifierNameList; - /** - * The table prefix used for catalog tables created. - */ - TablePrefix?: TablePrefix; - /** - * Policy for the crawler's update and deletion behavior. - */ - SchemaChangePolicy?: SchemaChangePolicy; - } - export interface CreateCrawlerResponse { - } - export interface CreateDatabaseRequest { - /** - * The ID of the Data Catalog in which to create the database. If none is supplied, the AWS account ID is used by default. - */ - CatalogId?: CatalogIdString; - /** - * A DatabaseInput object defining the metadata database to create in the catalog. - */ - DatabaseInput: DatabaseInput; - } - export interface CreateDatabaseResponse { - } - export interface CreateDevEndpointRequest { - /** - * The name to be assigned to the new DevEndpoint. - */ - EndpointName: GenericString; - /** - * The IAM role for the DevEndpoint. - */ - RoleArn: RoleArn; - /** - * Security group IDs for the security groups to be used by the new DevEndpoint. - */ - SecurityGroupIds: StringList; - /** - * The subnet ID for the new DevEndpoint to use. - */ - SubnetId: GenericString; - /** - * The public key to use for authentication. - */ - PublicKey?: GenericString; - /** - * The number of nodes to use. - */ - NumberOfNodes?: IntegerValue; - /** - * Path to one or more Python libraries in an S3 bucket that should be loaded in your DevEndpoint. - */ - ExtraPythonLibsS3Path?: GenericString; - /** - * Path to one or more Java Jars in an S3 bucket that should be loaded in your DevEndpoint. - */ - ExtraJarsS3Path?: GenericString; - } - export interface CreateDevEndpointResponse { - /** - * The name assigned to the new DevEndpoint. - */ - EndpointName?: GenericString; - /** - * The current status of the new DevEndpoint. - */ - Status?: GenericString; - /** - * The security groups assigned to the new DevEndpoint. - */ - SecurityGroupIds?: StringList; - /** - * The subnet ID assigned to the new DevEndpoint. - */ - SubnetId?: GenericString; - /** - * The AWS ARN of the role assigned to the new DevEndpoint. - */ - RoleArn?: RoleArn; - /** - * The address of the YARN endpoint used by this DevEndpoint. - */ - YarnEndpointAddress?: GenericString; - /** - * The number of nodes in this DevEndpoint. - */ - NumberOfNodes?: IntegerValue; - /** - * The AWS availability zone where this DevEndpoint is located. - */ - AvailabilityZone?: GenericString; - /** - * The ID of the VPC used by this DevEndpoint. - */ - VpcId?: GenericString; - /** - * Path to one or more Python libraries in an S3 bucket that will be loaded in your DevEndpoint. - */ - ExtraPythonLibsS3Path?: GenericString; - /** - * Path to one or more Java Jars in an S3 bucket that will be loaded in your DevEndpoint. - */ - ExtraJarsS3Path?: GenericString; - /** - * The reason for a current failure in this DevEndpoint. - */ - FailureReason?: GenericString; - /** - * The point in time at which this DevEndpoint was created. - */ - CreatedTimestamp?: TimestampValue; - } - export interface CreateGrokClassifierRequest { - /** - * The type of result that the classifier matches, such as Twitter Json, Omniture logs, Cloudwatch logs, and so forth. - */ - Classification: Classification; - /** - * The name of the new Classifier. - */ - Name: NameString; - /** - * The grok pattern used by this classifier. - */ - GrokPattern: GrokPattern; - /** - * Custom grok patterns used by this classifier. - */ - CustomPatterns?: CustomPatterns; - } - export interface CreateJobRequest { - /** - * The name you assign to this job. - */ - Name: NameString; - /** - * Description of the job. - */ - Description?: DescriptionString; - /** - * Location of the logs for this job. - */ - LogUri?: UriString; - /** - * The role associated with this job. - */ - Role: RoleString; - /** - * An ExecutionProperty specifying the maximum number of concurrent runs allowed for this job. - */ - ExecutionProperty?: ExecutionProperty; - /** - * The JobCommand that executes this job. - */ - Command: JobCommand; - /** - * The default parameters for this job. - */ - DefaultArguments?: GenericMap; - /** - * The connections used for this job. - */ - Connections?: ConnectionsList; - /** - * The maximum number of times to retry this job if it fails. - */ - MaxRetries?: MaxRetries; - /** - * The number of capacity units allocated to this job. - */ - AllocatedCapacity?: IntegerValue; - } - export interface CreateJobResponse { - /** - * The unique name of the new job that has been created. - */ - Name?: NameString; - } - export interface CreatePartitionRequest { - /** - * The ID of the catalog in which the partion is to be created. Currently, this should be the AWS account ID. - */ - CatalogId?: CatalogIdString; - /** - * The name of the metadata database in which the partition is to be created. - */ - DatabaseName: NameString; - /** - * The name of the metadata table in which the partition is to be created. - */ - TableName: NameString; - /** - * A PartitionInput structure defining the partition to be created. - */ - PartitionInput: PartitionInput; - } - export interface CreatePartitionResponse { - } - export interface CreateScriptRequest { - /** - * A list of the nodes in the DAG. - */ - DagNodes?: DagNodes; - /** - * A list of the edges in the DAG. - */ - DagEdges?: DagEdges; - } - export interface CreateScriptResponse { - /** - * The Python script generated from the DAG. - */ - PythonScript?: PythonScript; - } - export interface CreateTableRequest { - /** - * The ID of the Data Catalog in which to create the Table. If none is supplied, the AWS account ID is used by default. - */ - CatalogId?: CatalogIdString; - /** - * The catalog database in which to create the new table. - */ - DatabaseName: NameString; - /** - * The TableInput object that defines the metadata table to create in the catalog. - */ - TableInput: TableInput; - } - export interface CreateTableResponse { - } - export interface CreateTriggerRequest { - /** - * The name to assign to the new trigger. - */ - Name: NameString; - /** - * The type of the new trigger. - */ - Type: TriggerType; - /** - * A cron schedule expression for the new trigger. - */ - Schedule?: GenericString; - /** - * A predicate to specify when the new trigger should fire. - */ - Predicate?: Predicate; - /** - * The actions initiated by this trigger when it fires. - */ - Actions: ActionList; - /** - * A description of the new trigger. - */ - Description?: DescriptionString; - } - export interface CreateTriggerResponse { - /** - * The name assigned to the new trigger. - */ - Name?: NameString; - } - export interface CreateUserDefinedFunctionRequest { - /** - * The ID of the Data Catalog in which to create the function. If none is supplied, the AWS account ID is used by default. - */ - CatalogId?: CatalogIdString; - /** - * The name of the catalog database in which to create the function. - */ - DatabaseName: NameString; - /** - * A FunctionInput object that defines the function to create in the Data Catalog. - */ - FunctionInput: UserDefinedFunctionInput; - } - export interface CreateUserDefinedFunctionResponse { - } - export type CronExpression = string; - export type CustomPatterns = string; - export type DagEdges = CodeGenEdge[]; - export type DagNodes = CodeGenNode[]; - export interface Database { - /** - * Name of the database. - */ - Name: NameString; - /** - * Description of the database. - */ - Description?: DescriptionString; - /** - * The location of the database (for example, an HDFS path). - */ - LocationUri?: URI; - /** - * A list of key-value pairs that define parameters and properties of the database. - */ - Parameters?: ParametersMap; - /** - * The time at which the metadata database was created in the catalog. - */ - CreateTime?: Timestamp; - } - export interface DatabaseInput { - /** - * Name of the database. - */ - Name: NameString; - /** - * Description of the database - */ - Description?: DescriptionString; - /** - * The location of the database (for example, an HDFS path). - */ - LocationUri?: URI; - /** - * A list of key-value pairs that define parameters and properties of the database. - */ - Parameters?: ParametersMap; - } - export type DatabaseList = Database[]; - export type DatabaseName = string; - export type DeleteBehavior = "LOG"|"DELETE_FROM_DATABASE"|"DEPRECATE_IN_DATABASE"|string; - export interface DeleteClassifierRequest { - /** - * Name of the Classifier to remove. - */ - Name: NameString; - } - export interface DeleteClassifierResponse { - } - export type DeleteConnectionNameList = NameString[]; - export interface DeleteConnectionRequest { - /** - * The ID of the Data Catalog in which the connection resides. If none is supplied, the AWS account ID is used by default. - */ - CatalogId?: CatalogIdString; - /** - * The name of the connection to delete. - */ - ConnectionName: NameString; - } - export interface DeleteConnectionResponse { - } - export interface DeleteCrawlerRequest { - /** - * Name of the Crawler to remove. - */ - Name: NameString; - } - export interface DeleteCrawlerResponse { - } - export interface DeleteDatabaseRequest { - /** - * The ID of the Data Catalog in which the database resides. If none is supplied, the AWS account ID is used by default. - */ - CatalogId?: CatalogIdString; - /** - * The name of the Database to delete. - */ - Name: NameString; - } - export interface DeleteDatabaseResponse { - } - export interface DeleteDevEndpointRequest { - /** - * The name of the DevEndpoint. - */ - EndpointName: GenericString; - } - export interface DeleteDevEndpointResponse { - } - export interface DeleteJobRequest { - /** - * The name of the job to delete. - */ - JobName: NameString; - } - export interface DeleteJobResponse { - /** - * The name of the job that was deleted. - */ - JobName?: NameString; - } - export interface DeletePartitionRequest { - /** - * The ID of the Data Catalog where the partition to be deleted resides. If none is supplied, the AWS account ID is used by default. - */ - CatalogId?: CatalogIdString; - /** - * The name of the catalog database in which the table in question resides. - */ - DatabaseName: NameString; - /** - * The name of the table where the partition to be deleted is located. - */ - TableName: NameString; - /** - * The values that define the partition. - */ - PartitionValues: ValueStringList; - } - export interface DeletePartitionResponse { - } - export interface DeleteTableRequest { - /** - * The ID of the Data Catalog where the table resides. If none is supplied, the AWS account ID is used by default. - */ - CatalogId?: CatalogIdString; - /** - * The name of the catalog database in which the table resides. - */ - DatabaseName: NameString; - /** - * The name of the table to be deleted. - */ - Name: NameString; - } - export interface DeleteTableResponse { - } - export interface DeleteTriggerRequest { - /** - * The name of the trigger to delete. - */ - Name: NameString; - } - export interface DeleteTriggerResponse { - /** - * The name of the trigger that was deleted. - */ - Name?: NameString; - } - export interface DeleteUserDefinedFunctionRequest { - /** - * The ID of the Data Catalog where the function to be deleted is located. If none is supplied, the AWS account ID is used by default. - */ - CatalogId?: CatalogIdString; - /** - * The name of the catalog database where the function is located. - */ - DatabaseName: NameString; - /** - * The name of the function definition to be deleted. - */ - FunctionName: NameString; - } - export interface DeleteUserDefinedFunctionResponse { - } - export type DescriptionString = string; - export type DescriptionStringRemovable = string; - export interface DevEndpoint { - /** - * The name of the DevEndpoint. - */ - EndpointName?: GenericString; - /** - * The AWS ARN of the IAM role used in this DevEndpoint. - */ - RoleArn?: RoleArn; - /** - * A list of security group identifiers used in this DevEndpoint. - */ - SecurityGroupIds?: StringList; - /** - * The subnet ID for this DevEndpoint. - */ - SubnetId?: GenericString; - /** - * The YARN endpoint address used by this DevEndpoint. - */ - YarnEndpointAddress?: GenericString; - /** - * The public address used by this DevEndpoint. - */ - PublicAddress?: GenericString; - /** - * The current status of this DevEndpoint. - */ - Status?: GenericString; - /** - * The number of nodes used by this DevEndpoint. - */ - NumberOfNodes?: IntegerValue; - /** - * The AWS availability zone where this DevEndpoint is located. - */ - AvailabilityZone?: GenericString; - /** - * The ID of the virtual private cloud (VPC) used by this DevEndpoint. - */ - VpcId?: GenericString; - /** - * Path to one or more Python libraries in an S3 bucket that should be loaded in your DevEndpoint. - */ - ExtraPythonLibsS3Path?: GenericString; - /** - * Path to one or more Java Jars in an S3 bucket that should be loaded in your DevEndpoint. - */ - ExtraJarsS3Path?: GenericString; - /** - * The reason for a current failure in this DevEndpoint. - */ - FailureReason?: GenericString; - /** - * The status of the last update. - */ - LastUpdateStatus?: GenericString; - /** - * The point in time at which this DevEndpoint was created. - */ - CreatedTimestamp?: TimestampValue; - /** - * The point in time at which this DevEndpoint was last modified. - */ - LastModifiedTimestamp?: TimestampValue; - /** - * The public key to be used by this DevEndpoint for authentication. - */ - PublicKey?: GenericString; - } - export interface DevEndpointCustomLibraries { - /** - * Path to one or more Python libraries in an S3 bucket that should be loaded in your DevEndpoint. - */ - ExtraPythonLibsS3Path?: GenericString; - /** - * Path to one or more Java Jars in an S3 bucket that should be loaded in your DevEndpoint. - */ - ExtraJarsS3Path?: GenericString; - } - export type DevEndpointList = DevEndpoint[]; - export type ErrorByName = {[key: string]: ErrorDetail}; - export interface ErrorDetail { - /** - * The code associated with this error. - */ - ErrorCode?: NameString; - /** - * A message describing the error. - */ - ErrorMessage?: DescriptionString; - } - export type ErrorString = string; - export interface ExecutionProperty { - /** - * The maximum number of concurrent runs allowed for a job. - */ - MaxConcurrentRuns?: MaxConcurrentRuns; - } - export type FieldType = string; - export type FilterString = string; - export type FormatString = string; - export type GenericMap = {[key: string]: GenericString}; - export type GenericString = string; - export interface GetCatalogImportStatusRequest { - /** - * The ID of the catalog to migrate. Currently, this should be the AWS account ID. - */ - CatalogId?: CatalogIdString; - } - export interface GetCatalogImportStatusResponse { - /** - * The status of the specified catalog migration. - */ - ImportStatus?: CatalogImportStatus; - } - export interface GetClassifierRequest { - /** - * Name of the Classifier to retrieve. - */ - Name: NameString; - } - export interface GetClassifierResponse { - /** - * The requested Classifier. - */ - Classifier?: Classifier; - } - export interface GetClassifiersRequest { - /** - * Size of the list to return (optional). - */ - MaxResults?: PageSize; - /** - * An optional continuation token. - */ - NextToken?: Token; - } - export interface GetClassifiersResponse { - /** - * The requested list of Classifier objects. - */ - Classifiers?: ClassifierList; - /** - * A continuation token. - */ - NextToken?: Token; - } - export interface GetConnectionRequest { - /** - * The ID of the Data Catalog in which the connection resides. If none is supplied, the AWS account ID is used by default. - */ - CatalogId?: CatalogIdString; - /** - * The name of the connection definition to retrieve. - */ - Name: NameString; - } - export interface GetConnectionResponse { - /** - * The requested connection definition. - */ - Connection?: Connection; - } - export interface GetConnectionsFilter { - /** - * A criteria string that must match the criteria recorded in the connection definition for that connection definition to be returned. - */ - MatchCriteria?: MatchCriteria; - /** - * The type of connections to return. - */ - ConnectionType?: ConnectionType; - } - export interface GetConnectionsRequest { - /** - * The ID of the Data Catalog in which the connections reside. If none is supplied, the AWS account ID is used by default. - */ - CatalogId?: CatalogIdString; - /** - * A filter that controls which connections will be returned. - */ - Filter?: GetConnectionsFilter; - /** - * A continuation token, if this is a continuation call. - */ - NextToken?: Token; - /** - * The maximum number of connections to return in one response. - */ - MaxResults?: PageSize; - } - export interface GetConnectionsResponse { - /** - * A list of requested connection definitions. - */ - ConnectionList?: ConnectionList; - /** - * A continuation token, if the list of connections returned does not include the last of the filtered connections. - */ - NextToken?: Token; - } - export interface GetCrawlerMetricsRequest { - /** - * A list of the names of crawlers about which to retrieve metrics. - */ - CrawlerNameList?: CrawlerNameList; - /** - * The maximum size of a list to return. - */ - MaxResults?: PageSize; - /** - * A continuation token, if this is a continuation call. - */ - NextToken?: Token; - } - export interface GetCrawlerMetricsResponse { - /** - * A list of metrics for the specified crawler. - */ - CrawlerMetricsList?: CrawlerMetricsList; - /** - * A continuation token, if the returned list does not contain the last metric available. - */ - NextToken?: Token; - } - export interface GetCrawlerRequest { - /** - * Name of the Crawler to retrieve metadata for. - */ - Name: NameString; - } - export interface GetCrawlerResponse { - /** - * The metadata for the specified Crawler. - */ - Crawler?: Crawler; - } - export interface GetCrawlersRequest { - /** - * The number of Crawlers to return on each call. - */ - MaxResults?: PageSize; - /** - * A continuation token, if this is a continuation request. - */ - NextToken?: Token; - } - export interface GetCrawlersResponse { - /** - * A list of Crawler metadata. - */ - Crawlers?: CrawlerList; - /** - * A continuation token, if the returned list has not reached the end of those defined in this customer account. - */ - NextToken?: Token; - } - export interface GetDatabaseRequest { - /** - * The ID of the Data Catalog in which the database resides. If none is supplied, the AWS account ID is used by default. - */ - CatalogId?: CatalogIdString; - /** - * The name of the database to retrieve. - */ - Name: NameString; - } - export interface GetDatabaseResponse { - /** - * The definition of the specified database in the catalog. - */ - Database?: Database; - } - export interface GetDatabasesRequest { - /** - * The ID of the Data Catalog from which to retrieve Databases. If none is supplied, the AWS account ID is used by default. - */ - CatalogId?: CatalogIdString; - /** - * A continuation token, if this is a continuation call. - */ - NextToken?: Token; - /** - * The maximum number of databases to return in one response. - */ - MaxResults?: PageSize; - } - export interface GetDatabasesResponse { - /** - * A list of Database objects from the specified catalog. - */ - DatabaseList: DatabaseList; - /** - * A continuation token for paginating the returned list of tokens, returned if the current segment of the list is not the last. - */ - NextToken?: Token; - } - export interface GetDataflowGraphRequest { - /** - * The Python script to transform. - */ - PythonScript?: PythonScript; - } - export interface GetDataflowGraphResponse { - /** - * A list of the nodes in the resulting DAG. - */ - DagNodes?: DagNodes; - /** - * A list of the edges in the resulting DAG. - */ - DagEdges?: DagEdges; - } - export interface GetDevEndpointRequest { - /** - * Name of the DevEndpoint for which to retrieve information. - */ - EndpointName: GenericString; - } - export interface GetDevEndpointResponse { - /** - * A DevEndpoint definition. - */ - DevEndpoint?: DevEndpoint; - } - export interface GetDevEndpointsRequest { - /** - * The maximum size of information to return. - */ - MaxResults?: PageSize; - /** - * A continuation token, if this is a continuation call. - */ - NextToken?: GenericString; - } - export interface GetDevEndpointsResponse { - /** - * A list of DevEndpoint definitions. - */ - DevEndpoints?: DevEndpointList; - /** - * A continuation token, if not all DevEndpoint definitions have yet been returned. - */ - NextToken?: GenericString; - } - export interface GetJobRequest { - /** - * The name of the job to retrieve. - */ - JobName: NameString; - } - export interface GetJobResponse { - /** - * The requested job definition. - */ - Job?: Job; - } - export interface GetJobRunRequest { - /** - * Name of the job being run. - */ - JobName: NameString; - /** - * The ID of the job run. - */ - RunId: IdString; - /** - * A list of the predecessor runs to return as well. - */ - PredecessorsIncluded?: BooleanValue; - } - export interface GetJobRunResponse { - /** - * The requested job-run metadata. - */ - JobRun?: JobRun; - } - export interface GetJobRunsRequest { - /** - * The name of the job for which to retrieve all job runs. - */ - JobName: NameString; - /** - * A continuation token, if this is a continuation call. - */ - NextToken?: GenericString; - /** - * The maximum size of the response. - */ - MaxResults?: PageSize; - } - export interface GetJobRunsResponse { - /** - * A list of job-run metatdata objects. - */ - JobRuns?: JobRunList; - /** - * A continuation token, if not all reequested job runs have been returned. - */ - NextToken?: GenericString; - } - export interface GetJobsRequest { - /** - * A continuation token, if this is a continuation call. - */ - NextToken?: GenericString; - /** - * The maximum size of the response. - */ - MaxResults?: PageSize; - } - export interface GetJobsResponse { - /** - * A list of jobs. - */ - Jobs?: JobList; - /** - * A continuation token, if not all jobs have yet been returned. - */ - NextToken?: GenericString; - } - export interface GetMappingRequest { - /** - * Specifies the source table. - */ - Source: CatalogEntry; - /** - * A list of target tables. - */ - Sinks?: CatalogEntries; - /** - * Parameters for the mapping. - */ - Location?: Location; - } - export interface GetMappingResponse { - /** - * A list of mappings to the specified targets. - */ - Mapping: MappingList; - } - export interface GetPartitionRequest { - /** - * The ID of the Data Catalog where the partition in question resides. If none is supplied, the AWS account ID is used by default. - */ - CatalogId?: CatalogIdString; - /** - * The name of the catalog database where the partition resides. - */ - DatabaseName: NameString; - /** - * The name of the partition's table. - */ - TableName: NameString; - /** - * The values that define the partition. - */ - PartitionValues: ValueStringList; - } - export interface GetPartitionResponse { - /** - * The requested information, in the form of a Partition object. - */ - Partition?: Partition; - } - export interface GetPartitionsRequest { - /** - * The ID of the Data Catalog where the partitions in question reside. If none is supplied, the AWS account ID is used by default. - */ - CatalogId?: CatalogIdString; - /** - * The name of the catalog database where the partitions reside. - */ - DatabaseName: NameString; - /** - * The name of the partitions' table. - */ - TableName: NameString; - /** - * An expression filtering the partitions to be returned. - */ - Expression?: PredicateString; - /** - * A continuation token, if this is not the first call to retrieve these partitions. - */ - NextToken?: Token; - /** - * The segment of the table's partitions to scan in this request. - */ - Segment?: Segment; - /** - * The maximum number of partitions to return in a single response. - */ - MaxResults?: PageSize; - } - export interface GetPartitionsResponse { - /** - * A list of requested partitions. - */ - Partitions?: PartitionList; - /** - * A continuation token, if the returned list of partitions does not does not include the last one. - */ - NextToken?: Token; - } - export interface GetPlanRequest { - /** - * The list of mappings from a source table to target tables. - */ - Mapping: MappingList; - /** - * The source table. - */ - Source: CatalogEntry; - /** - * The target tables. - */ - Sinks?: CatalogEntries; - /** - * Parameters for the mapping. - */ - Location?: Location; - } - export interface GetPlanResponse { - /** - * A python script to perform the mapping. - */ - PythonScript?: PythonScript; - } - export interface GetTableRequest { - /** - * The ID of the Data Catalog where the table resides. If none is supplied, the AWS account ID is used by default. - */ - CatalogId?: CatalogIdString; - /** - * The name of the database in the catalog in which the table resides. - */ - DatabaseName: NameString; - /** - * The name of the table for which to retrieve the definition. - */ - Name: NameString; - } - export interface GetTableResponse { - /** - * The Table object that defines the specified table. - */ - Table?: Table; - } - export type GetTableVersionsList = TableVersion[]; - export interface GetTableVersionsRequest { - /** - * The ID of the Data Catalog where the tables reside. If none is supplied, the AWS account ID is used by default. - */ - CatalogId?: CatalogIdString; - /** - * The database in the catalog in which the table resides. - */ - DatabaseName: NameString; - /** - * The name of the table. - */ - TableName: NameString; - /** - * A continuation token, if this is not the first call. - */ - NextToken?: Token; - /** - * The maximum number of table versions to return in one response. - */ - MaxResults?: PageSize; - } - export interface GetTableVersionsResponse { - /** - * A list of strings identifying available versions of the specified table. - */ - TableVersions?: GetTableVersionsList; - /** - * A continuation token, if the list of available versions does not include the last one. - */ - NextToken?: Token; - } - export interface GetTablesRequest { - /** - * The ID of the Data Catalog where the tables reside. If none is supplied, the AWS account ID is used by default. - */ - CatalogId?: CatalogIdString; - /** - * The database in the catalog whose tables to list. - */ - DatabaseName: NameString; - /** - * A regular expression pattern. If present, only those tables whose names match the pattern are returned. - */ - Expression?: FilterString; - /** - * A continuation token, included if this is a continuation call. - */ - NextToken?: Token; - /** - * The maximum number of tables to return in a single response. - */ - MaxResults?: PageSize; - } - export interface GetTablesResponse { - /** - * A list of the requested Table objects. - */ - TableList?: TableList; - /** - * A continuation token, present if the current list segment is not the last. - */ - NextToken?: Token; - } - export interface GetTriggerRequest { - /** - * The name of the trigger to retrieve. - */ - Name: NameString; - } - export interface GetTriggerResponse { - /** - * The requested trigger definition. - */ - Trigger?: Trigger; - } - export interface GetTriggersRequest { - /** - * A continuation token, if this is a continuation call. - */ - NextToken?: GenericString; - /** - * The name of the job for which to retrieve triggers. - */ - DependentJobName?: NameString; - /** - * The maximum size of the response. - */ - MaxResults?: PageSize; - } - export interface GetTriggersResponse { - /** - * A list of triggers for the specified job. - */ - Triggers?: TriggerList; - /** - * A continuation token, if not all the requested triggers have yet been returned. - */ - NextToken?: GenericString; - } - export interface GetUserDefinedFunctionRequest { - /** - * The ID of the Data Catalog where the function to be retrieved is located. If none is supplied, the AWS account ID is used by default. - */ - CatalogId?: CatalogIdString; - /** - * The name of the catalog database where the function is located. - */ - DatabaseName: NameString; - /** - * The name of the function. - */ - FunctionName: NameString; - } - export interface GetUserDefinedFunctionResponse { - /** - * The requested function definition. - */ - UserDefinedFunction?: UserDefinedFunction; - } - export interface GetUserDefinedFunctionsRequest { - /** - * The ID of the Data Catalog where the functions to be retrieved are located. If none is supplied, the AWS account ID is used by default. - */ - CatalogId?: CatalogIdString; - /** - * The name of the catalog database where the functions are located. - */ - DatabaseName: NameString; - /** - * An optional function-name pattern string that filters the function definitions returned. - */ - Pattern: NameString; - /** - * A continuation token, if this is a continuation call. - */ - NextToken?: Token; - /** - * The maximum number of functions to return in one response. - */ - MaxResults?: PageSize; - } - export interface GetUserDefinedFunctionsResponse { - /** - * A list of requested function definitions. - */ - UserDefinedFunctions?: UserDefinedFunctionList; - /** - * A continuation token, if the list of functions returned does not include the last requested function. - */ - NextToken?: Token; - } - export interface GrokClassifier { - /** - * The name of the classifier. - */ - Name: NameString; - /** - * The data form that the classifier matches, such as Twitter, JSON, Omniture Logs, and so forth. - */ - Classification: Classification; - /** - * The time this classifier was registered. - */ - CreationTime?: Timestamp; - /** - * The time this classifier was last updated. - */ - LastUpdated?: Timestamp; - /** - * The version of this classifier. - */ - Version?: VersionId; - /** - * The grok pattern used by this classifier. - */ - GrokPattern: GrokPattern; - /** - * Custom grok patterns used by this classifier. - */ - CustomPatterns?: CustomPatterns; - } - export type GrokPattern = string; - export type IdString = string; - export interface ImportCatalogToGlueRequest { - /** - * The ID of the catalog to import. Currently, this should be the AWS account ID. - */ - CatalogId?: CatalogIdString; - } - export interface ImportCatalogToGlueResponse { - } - export type Integer = number; - export type IntegerFlag = number; - export type IntegerValue = number; - export interface JdbcTarget { - /** - * The name of the connection to use for the JDBC target. - */ - ConnectionName?: ConnectionName; - /** - * The path of the JDBC target. - */ - Path?: Path; - /** - * A list of items to exclude from the crawl. - */ - Exclusions?: PathList; - } - export type JdbcTargetList = JdbcTarget[]; - export interface Job { - /** - * The name you assign to this job. - */ - Name?: NameString; - /** - * Description of this job. - */ - Description?: DescriptionString; - /** - * Location of the logs for this job. - */ - LogUri?: UriString; - /** - * The role associated with this job. - */ - Role?: RoleString; - /** - * The time and date that this job specification was created. - */ - CreatedOn?: TimestampValue; - /** - * The last point in time when this job specification was modified. - */ - LastModifiedOn?: TimestampValue; - /** - * An ExecutionProperty specifying the maximum number of concurrent runs allowed for this job. - */ - ExecutionProperty?: ExecutionProperty; - /** - * The JobCommand that executes this job. - */ - Command?: JobCommand; - /** - * The default parameters for this job. - */ - DefaultArguments?: GenericMap; - /** - * The connections used for this job. - */ - Connections?: ConnectionsList; - /** - * The maximum number of times to retry this job if it fails. - */ - MaxRetries?: MaxRetries; - /** - * The number of capacity units allocated to this job. - */ - AllocatedCapacity?: IntegerValue; - } - export interface JobBookmarkEntry { - /** - * Name of the job in question. - */ - JobName?: JobName; - /** - * Version of the job. - */ - Version?: IntegerValue; - /** - * The run ID number. - */ - Run?: IntegerValue; - /** - * The attempt ID number. - */ - Attempt?: IntegerValue; - /** - * The bookmark itself. - */ - JobBookmark?: JsonValue; - } - export interface JobCommand { - /** - * The name of this job command. - */ - Name?: GenericString; - /** - * Specifies the location of a script that executes a job. - */ - ScriptLocation?: ScriptLocationString; - } - export type JobList = Job[]; - export type JobName = string; - export interface JobRun { - /** - * The ID of this job run. - */ - Id?: IdString; - /** - * The number or the attempt to run this job. - */ - Attempt?: AttemptCount; - /** - * The ID of the previous run of this job. - */ - PreviousRunId?: IdString; - /** - * The name of the trigger for this job run. - */ - TriggerName?: NameString; - /** - * The name of the job being run. - */ - JobName?: NameString; - /** - * The date and time at which this job run was started. - */ - StartedOn?: TimestampValue; - /** - * The last time this job run was modified. - */ - LastModifiedOn?: TimestampValue; - /** - * The date and time this job run completed. - */ - CompletedOn?: TimestampValue; - /** - * The current state of the job run. - */ - JobRunState?: JobRunState; - /** - * The job arguments associated with this run. - */ - Arguments?: GenericMap; - /** - * An error message associated with this job run. - */ - ErrorMessage?: ErrorString; - /** - * A list of predecessors to this job run. - */ - PredecessorRuns?: PredecessorList; - /** - * The amount of infrastructure capacity allocated to this job run. - */ - AllocatedCapacity?: IntegerValue; - } - export type JobRunList = JobRun[]; - export type JobRunState = "STARTING"|"RUNNING"|"STOPPING"|"STOPPED"|"SUCCEEDED"|"FAILED"|string; - export interface JobUpdate { - /** - * Description of the job. - */ - Description?: DescriptionString; - /** - * Location of the logs for this job. - */ - LogUri?: UriString; - /** - * The role associated with this job. - */ - Role?: RoleString; - /** - * An ExecutionProperty specifying the maximum number of concurrent runs allowed for this job. - */ - ExecutionProperty?: ExecutionProperty; - /** - * The JobCommand that executes this job. - */ - Command?: JobCommand; - /** - * The default parameters for this job. - */ - DefaultArguments?: GenericMap; - /** - * The connections used for this job. - */ - Connections?: ConnectionsList; - /** - * The maximum number of times to retry this job if it fails. - */ - MaxRetries?: MaxRetries; - /** - * The number of capacity units allocated to this job. - */ - AllocatedCapacity?: IntegerValue; - } - export type JsonValue = string; - export type KeyString = string; - export interface LastCrawlInfo { - /** - * Status of the last crawl. - */ - Status?: LastCrawlStatus; - /** - * Error information about the last crawl, if an error occurred. - */ - ErrorMessage?: DescriptionString; - /** - * The log group for the last crawl. - */ - LogGroup?: LogGroup; - /** - * The log stream for the last crawl. - */ - LogStream?: LogStream; - /** - * The prefix for a message about this crawl. - */ - MessagePrefix?: MessagePrefix; - /** - * The time at which the crawl started. - */ - StartTime?: Timestamp; - } - export type LastCrawlStatus = "SUCCEEDED"|"CANCELLED"|"FAILED"|string; - export interface Location { - /** - * A JDBC location. - */ - Jdbc?: CodeGenNodeArgs; - /** - * An AWS S3 location. - */ - S3?: CodeGenNodeArgs; - } - export type LocationMap = {[key: string]: ColumnValuesString}; - export type LocationString = string; - export type LogGroup = string; - export type LogStream = string; - export type Logical = "AND"|string; - export type LogicalOperator = "EQUALS"|string; - export interface MappingEntry { - /** - * The name of the source table. - */ - SourceTable?: TableName; - /** - * The source path. - */ - SourcePath?: SchemaPathString; - /** - * The source type. - */ - SourceType?: FieldType; - /** - * The target table. - */ - TargetTable?: TableName; - /** - * The target path. - */ - TargetPath?: SchemaPathString; - /** - * The target type. - */ - TargetType?: FieldType; - } - export type MappingList = MappingEntry[]; - export type MatchCriteria = NameString[]; - export type MaxConcurrentRuns = number; - export type MaxRetries = number; - export type MessagePrefix = string; - export type MessageString = string; - export type MillisecondsCount = number; - export type NameString = string; - export type NameStringList = NameString[]; - export type NonNegativeDouble = number; - export type NonNegativeInteger = number; - export interface Order { - /** - * The name of the column. - */ - Column: NameString; - /** - * Indicates that the column is sorted in ascending order (== 1), or in descending order (==0). - */ - SortOrder: IntegerFlag; - } - export type OrderList = Order[]; - export type PageSize = number; - export type ParametersMap = {[key: string]: ParametersMapValue}; - export type ParametersMapValue = string; - export interface Partition { - /** - * The values of the partition. - */ - Values?: ValueStringList; - /** - * The name of the catalog database where the table in question is located. - */ - DatabaseName?: NameString; - /** - * The name of the table in question. - */ - TableName?: NameString; - /** - * The time at which the partition was created. - */ - CreationTime?: Timestamp; - /** - * The last time at which the partition was accessed. - */ - LastAccessTime?: Timestamp; - /** - * Provides information about the physical location where the partition is stored. - */ - StorageDescriptor?: StorageDescriptor; - /** - * Partition parameters, in the form of a list of key-value pairs. - */ - Parameters?: ParametersMap; - /** - * The last time at which column statistics were computed for this partition. - */ - LastAnalyzedTime?: Timestamp; - } - export interface PartitionError { - /** - * The values that define the partition. - */ - PartitionValues?: ValueStringList; - /** - * Details about the partition error. - */ - ErrorDetail?: ErrorDetail; - } - export type PartitionErrors = PartitionError[]; - export interface PartitionInput { - /** - * The values of the partition. - */ - Values?: ValueStringList; - /** - * The last time at which the partition was accessed. - */ - LastAccessTime?: Timestamp; - /** - * Provides information about the physical location where the partition is stored. - */ - StorageDescriptor?: StorageDescriptor; - /** - * Partition parameters, in the form of a list of key-value pairs. - */ - Parameters?: ParametersMap; - /** - * The last time at which column statistics were computed for this partition. - */ - LastAnalyzedTime?: Timestamp; - } - export type PartitionInputList = PartitionInput[]; - export type PartitionList = Partition[]; - export interface PartitionValueList { - Values: ValueStringList; - } - export type Path = string; - export type PathList = Path[]; - export interface PhysicalConnectionRequirements { - /** - * The subnet ID used by the connection. - */ - SubnetId?: NameString; - /** - * The security group ID list used by the connection. - */ - SecurityGroupIdList?: SecurityGroupIdList; - /** - * The connection's availability zone. - */ - AvailabilityZone?: NameString; - } - export interface Predecessor { - /** - * The name of the predecessor job. - */ - JobName?: NameString; - /** - * The job-run ID of the precessor job run. - */ - RunId?: IdString; - } - export type PredecessorList = Predecessor[]; - export interface Predicate { - /** - * Currently "OR" is not supported. - */ - Logical?: Logical; - /** - * A list of the conditions that determine when the trigger will fire. - */ - Conditions?: ConditionList; - } - export type PredicateString = string; - export type PrincipalType = "USER"|"ROLE"|"GROUP"|string; - export type PythonScript = string; - export interface ResetJobBookmarkRequest { - /** - * The name of the job in question. - */ - JobName: JobName; - } - export interface ResetJobBookmarkResponse { - /** - * The reset bookmark entry. - */ - JobBookmarkEntry?: JobBookmarkEntry; - } - export type ResourceType = "JAR"|"FILE"|"ARCHIVE"|string; - export interface ResourceUri { - /** - * The type of the resource. - */ - ResourceType?: ResourceType; - /** - * The URI for accessing the resource. - */ - Uri?: URI; - } - export type ResourceUriList = ResourceUri[]; - export type RoleArn = string; - export type RoleString = string; - export interface S3Target { - /** - * The path to the S3 target. - */ - Path?: Path; - /** - * A list of S3 objects to exclude from the crawl. - */ - Exclusions?: PathList; - } - export type S3TargetList = S3Target[]; - export interface Schedule { - /** - * A cron expression that can be used as a Cloudwatch event to schedule something (see CloudWatch Schedule Expression Syntax. For example, to run something every day at 12:15 UTC, you would specify: cron(15 12 * * ? *). - */ - ScheduleExpression?: CronExpression; - /** - * The state of the schedule. - */ - State?: ScheduleState; - } - export type ScheduleState = "SCHEDULED"|"NOT_SCHEDULED"|"TRANSITIONING"|string; - export interface SchemaChangePolicy { - /** - * The update behavior. - */ - UpdateBehavior?: UpdateBehavior; - /** - * The deletion behavior. - */ - DeleteBehavior?: DeleteBehavior; - } - export type SchemaPathString = string; - export type ScriptLocationString = string; - export type SecurityGroupIdList = NameString[]; - export interface Segment { - /** - * The zero-based index number of the this segment. For example, if the total number of segments is 4, SegmentNumber values will range from zero through three. - */ - SegmentNumber: NonNegativeInteger; - /** - * The total numer of segments. - */ - TotalSegments: TotalSegmentsInteger; - } - export interface SerDeInfo { - /** - * Name of the SerDe. - */ - Name?: NameString; - /** - * Usually the class that implements the SerDe. An example is: org.apache.hadoop.hive.serde2.columnar.ColumnarSerDe. - */ - SerializationLibrary?: NameString; - /** - * A list of initialization parameters for the SerDe, in key-value form. - */ - Parameters?: ParametersMap; - } - export interface SkewedInfo { - /** - * A list of names of columns that contain skewed values. - */ - SkewedColumnNames?: NameStringList; - /** - * A list of values that appear so frequently as to be considered skewed. - */ - SkewedColumnValues?: ColumnValueStringList; - /** - * A mapping of skewed values to the columns that contain them. - */ - SkewedColumnValueLocationMaps?: LocationMap; - } - export interface StartCrawlerRequest { - /** - * Name of the Crawler to start. - */ - Name: NameString; - } - export interface StartCrawlerResponse { - } - export interface StartCrawlerScheduleRequest { - /** - * Name of the crawler to schedule. - */ - CrawlerName: NameString; - } - export interface StartCrawlerScheduleResponse { - } - export interface StartJobRunRequest { - /** - * The name of the job to start. - */ - JobName: NameString; - /** - * The ID of the job run to start. - */ - JobRunId?: IdString; - /** - * Specific arguments for this job run. - */ - Arguments?: GenericMap; - /** - * The infrastructure capacity to allocate to this job. - */ - AllocatedCapacity?: IntegerValue; - } - export interface StartJobRunResponse { - /** - * The ID assigned to this job run. - */ - JobRunId?: IdString; - } - export interface StartTriggerRequest { - /** - * The name of the trigger to start. - */ - Name: NameString; - } - export interface StartTriggerResponse { - /** - * The name of the trigger that was started. - */ - Name?: NameString; - } - export interface StopCrawlerRequest { - /** - * Name of the Crawler to stop. - */ - Name: NameString; - } - export interface StopCrawlerResponse { - } - export interface StopCrawlerScheduleRequest { - /** - * Name of the crawler whose schedule state to set. - */ - CrawlerName: NameString; - } - export interface StopCrawlerScheduleResponse { - } - export interface StopTriggerRequest { - /** - * The name of the trigger to stop. - */ - Name: NameString; - } - export interface StopTriggerResponse { - /** - * The name of the trigger that was stopped. - */ - Name?: NameString; - } - export interface StorageDescriptor { - /** - * A list of the Columns in the table. - */ - Columns?: ColumnList; - /** - * The physical location of the table. By default this takes the form of the warehouse location, followed by the database location in the warehouse, followed by the table name. - */ - Location?: LocationString; - /** - * The input format: SequenceFileInputFormat (binary), or TextInputFormat, or a custom format. - */ - InputFormat?: FormatString; - /** - * The output format: SequenceFileOutputFormat (binary), or IgnoreKeyTextOutputFormat, or a custom format. - */ - OutputFormat?: FormatString; - /** - * True if the data in the table is compressed, or False if not. - */ - Compressed?: Boolean; - /** - * Must be specified if the table contains any dimension columns. - */ - NumberOfBuckets?: Integer; - /** - * Serialization/deserialization (SerDe) information. - */ - SerdeInfo?: SerDeInfo; - /** - * A list of reducer grouping columns, clustering columns, and bucketing columns in the table. - */ - BucketColumns?: NameStringList; - /** - * A list specifying the sort order of each bucket in the table. - */ - SortColumns?: OrderList; - /** - * User-supplied properties in key-value form. - */ - Parameters?: ParametersMap; - /** - * Information about values that appear very frequently in a column (skewed values). - */ - SkewedInfo?: SkewedInfo; - /** - * True if the table data is stored in subdirectories, or False if not. - */ - StoredAsSubDirectories?: Boolean; - } - export type StringList = GenericString[]; - export interface Table { - /** - * Name of the table. - */ - Name: NameString; - /** - * Name of the metadata database where the table metadata resides. - */ - DatabaseName?: NameString; - /** - * Description of the table. - */ - Description?: DescriptionString; - /** - * Owner of the table. - */ - Owner?: NameString; - /** - * Time when the table definition was created in the Data Catalog. - */ - CreateTime?: Timestamp; - /** - * Last time the table was updated. - */ - UpdateTime?: Timestamp; - /** - * Last time the table was accessed. This is usually taken from HDFS, and may not be reliable. - */ - LastAccessTime?: Timestamp; - /** - * Last time column statistics were computed for this table. - */ - LastAnalyzedTime?: Timestamp; - /** - * Retention time for this table. - */ - Retention?: NonNegativeInteger; - /** - * A storage descriptor containing information about the physical storage of this table. - */ - StorageDescriptor?: StorageDescriptor; - /** - * A list of columns by which the table is partitioned. Only primitive types are supported as partition keys. - */ - PartitionKeys?: ColumnList; - /** - * If the table is a view, the original text of the view; otherwise null. - */ - ViewOriginalText?: ViewTextString; - /** - * If the table is a view, the expanded text of the view; otherwise null. - */ - ViewExpandedText?: ViewTextString; - /** - * The type of this table (EXTERNAL_TABLE, VIRTUAL_VIEW, etc.). - */ - TableType?: TableTypeString; - /** - * Properties associated with this table, as a list of key-value pairs. - */ - Parameters?: ParametersMap; - /** - * Person or entity who created the table. - */ - CreatedBy?: NameString; - } - export interface TableError { - /** - * Name of the table. - */ - TableName?: NameString; - /** - * Detail about the error. - */ - ErrorDetail?: ErrorDetail; - } - export type TableErrors = TableError[]; - export interface TableInput { - /** - * Name of the table. - */ - Name: NameString; - /** - * Description of the table. - */ - Description?: DescriptionString; - /** - * Owner of the table. - */ - Owner?: NameString; - /** - * Last time the table was accessed. - */ - LastAccessTime?: Timestamp; - /** - * Last time column statistics were computed for this table. - */ - LastAnalyzedTime?: Timestamp; - /** - * Retention time for this table. - */ - Retention?: NonNegativeInteger; - /** - * A storage descriptor containing information about the physical storage of this table. - */ - StorageDescriptor?: StorageDescriptor; - /** - * A list of columns by which the table is partitioned. Only primitive types are supported as partition keys. - */ - PartitionKeys?: ColumnList; - /** - * If the table is a view, the original text of the view; otherwise null. - */ - ViewOriginalText?: ViewTextString; - /** - * If the table is a view, the expanded text of the view; otherwise null. - */ - ViewExpandedText?: ViewTextString; - /** - * The type of this table (EXTERNAL_TABLE, VIRTUAL_VIEW, etc.). - */ - TableType?: TableTypeString; - /** - * Properties associated with this table, as a list of key-value pairs. - */ - Parameters?: ParametersMap; - } - export type TableList = Table[]; - export type TableName = string; - export type TablePrefix = string; - export type TableTypeString = string; - export interface TableVersion { - Table?: Table; - VersionId?: VersionString; - } - export type Timestamp = Date; - export type TimestampValue = Date; - export type Token = string; - export type TotalSegmentsInteger = number; - export interface Trigger { - /** - * Name of the trigger. - */ - Name?: NameString; - /** - * The trigger ID. - */ - Id?: IdString; - /** - * The type of trigger that this is. - */ - Type?: TriggerType; - /** - * The current state of the trigger. - */ - State?: TriggerState; - /** - * A description of this trigger. - */ - Description?: DescriptionString; - /** - * A cron schedule expression. - */ - Schedule?: GenericString; - /** - * The actions initiated by this trigger. - */ - Actions?: ActionList; - /** - * The predicate of this trigger. - */ - Predicate?: Predicate; - } - export type TriggerList = Trigger[]; - export type TriggerState = "CREATING"|"CREATED"|"ACTIVATING"|"ACTIVATED"|"DEACTIVATING"|"DEACTIVATED"|"DELETING"|"UPDATING"|string; - export type TriggerType = "SCHEDULED"|"CONDITIONAL"|"ON_DEMAND"|string; - export interface TriggerUpdate { - /** - * The name of the trigger. - */ - Name?: NameString; - /** - * A description of this trigger. - */ - Description?: DescriptionString; - /** - * A cron expression specifying the schedule. - */ - Schedule?: GenericString; - /** - * The actions initiated by this trigger. - */ - Actions?: ActionList; - /** - * The predicate of this trigger, which defines when it will fire. - */ - Predicate?: Predicate; - } - export type URI = string; - export type UpdateBehavior = "LOG"|"UPDATE_IN_DATABASE"|string; - export interface UpdateClassifierRequest { - /** - * A GrokClassifier object with updated fields. - */ - GrokClassifier?: UpdateGrokClassifierRequest; - } - export interface UpdateClassifierResponse { - } - export interface UpdateConnectionRequest { - /** - * The ID of the Data Catalog in which the connection resides. If none is supplied, the AWS account ID is used by default. - */ - CatalogId?: CatalogIdString; - /** - * The name of the connection definition to update. - */ - Name: NameString; - /** - * A ConnectionInput object that redefines the connection in question. - */ - ConnectionInput: ConnectionInput; - } - export interface UpdateConnectionResponse { - } - export interface UpdateCrawlerRequest { - /** - * Name of the new Crawler. - */ - Name: NameString; - /** - * The AWS ARN of the IAM role used by the new Crawler to access customer resources. - */ - Role?: RoleArn; - /** - * The Glue Database where results will be stored, such as: arn:aws:daylight:us-east-1::database/sometable/*. - */ - DatabaseName?: DatabaseName; - /** - * A description of the new Crawler. - */ - Description?: DescriptionStringRemovable; - /** - * A list of collection of targets to crawl. - */ - Targets?: CrawlerTargets; - /** - * A cron expression that can be used as a Cloudwatch event (see CloudWatch Schedule Expression Syntax. For example, to run every day at 12:15 UTC, specify: cron(15 12 * * ? *). - */ - Schedule?: CronExpression; - /** - * A list of custom Classifier names that the user has registered. By default, all AWS classifiers are included in a crawl, but these custom classifiers always override the default classifiers for a given classification. - */ - Classifiers?: ClassifierNameList; - /** - * The table prefix used for catalog tables created. - */ - TablePrefix?: TablePrefix; - /** - * Policy for the crawler's update and deletion behavior. - */ - SchemaChangePolicy?: SchemaChangePolicy; - } - export interface UpdateCrawlerResponse { - } - export interface UpdateCrawlerScheduleRequest { - /** - * Name of the crawler whose schedule to update. - */ - CrawlerName: NameString; - /** - * Cron expression of the updated schedule. - */ - Schedule?: CronExpression; - } - export interface UpdateCrawlerScheduleResponse { - } - export interface UpdateDatabaseRequest { - /** - * The ID of the Data Catalog in which the metadata database resides. If none is supplied, the AWS account ID is used by default. - */ - CatalogId?: CatalogIdString; - /** - * The name of the metadata database to update in the catalog. - */ - Name: NameString; - /** - * A DatabaseInput object specifying the new definition of the metadata database in the catalog. - */ - DatabaseInput: DatabaseInput; - } - export interface UpdateDatabaseResponse { - } - export interface UpdateDevEndpointRequest { - /** - * The name of the DevEndpoint to be updated. - */ - EndpointName: GenericString; - /** - * The public key for the DevEndpoint to use. - */ - PublicKey?: GenericString; - /** - * Custom Python or Java custom libraries to be loaded in the DevEndpoint. - */ - CustomLibraries?: DevEndpointCustomLibraries; - } - export interface UpdateDevEndpointResponse { - } - export interface UpdateGrokClassifierRequest { - /** - * The name of the GrokClassifier. - */ - Name: NameString; - /** - * The type of result that the classifier matches, such as Twitter Json, Omniture logs, Cloudwatch logs, and so forth. - */ - Classification?: Classification; - /** - * The grok pattern used by this classifier. - */ - GrokPattern?: GrokPattern; - /** - * Custom grok patterns used by this classifier. - */ - CustomPatterns?: CustomPatterns; - } - export interface UpdateJobRequest { - /** - * Name of the job definition to update. - */ - JobName: NameString; - /** - * Specifies the values with which to update the job. - */ - JobUpdate: JobUpdate; - } - export interface UpdateJobResponse { - /** - * Returns the name of the updated job. - */ - JobName?: NameString; - } - export interface UpdatePartitionRequest { - /** - * The ID of the Data Catalog where the partition to be updated resides. If none is supplied, the AWS account ID is used by default. - */ - CatalogId?: CatalogIdString; - /** - * The name of the catalog database in which the table in question resides. - */ - DatabaseName: NameString; - /** - * The name of the table where the partition to be updated is located. - */ - TableName: NameString; - /** - * A list of the values defining the partition. - */ - PartitionValueList: BoundedPartitionValueList; - /** - * The new partition object to which to update the partition. - */ - PartitionInput: PartitionInput; - } - export interface UpdatePartitionResponse { - } - export interface UpdateTableRequest { - /** - * The ID of the Data Catalog where the table resides. If none is supplied, the AWS account ID is used by default. - */ - CatalogId?: CatalogIdString; - /** - * The name of the catalog database in which the table resides. - */ - DatabaseName: NameString; - /** - * An updated TableInput object to define the metadata table in the catalog. - */ - TableInput: TableInput; - } - export interface UpdateTableResponse { - } - export interface UpdateTriggerRequest { - /** - * The name of the trigger to update. - */ - Name: NameString; - /** - * The new values with which to update the trigger. - */ - TriggerUpdate: TriggerUpdate; - } - export interface UpdateTriggerResponse { - /** - * The resulting trigger definition. - */ - Trigger?: Trigger; - } - export interface UpdateUserDefinedFunctionRequest { - /** - * The ID of the Data Catalog where the function to be updated is located. If none is supplied, the AWS account ID is used by default. - */ - CatalogId?: CatalogIdString; - /** - * The name of the catalog database where the function to be updated is located. - */ - DatabaseName: NameString; - /** - * The name of the function. - */ - FunctionName: NameString; - /** - * A FunctionInput object that re-defines the function in the Data Catalog. - */ - FunctionInput: UserDefinedFunctionInput; - } - export interface UpdateUserDefinedFunctionResponse { - } - export type UriString = string; - export interface UserDefinedFunction { - /** - * The name of the function. - */ - FunctionName?: NameString; - /** - * The Java class that contains the function code. - */ - ClassName?: NameString; - /** - * The owner of the function. - */ - OwnerName?: NameString; - /** - * The owner type. - */ - OwnerType?: PrincipalType; - /** - * The time at which the function was created. - */ - CreateTime?: Timestamp; - /** - * The resource URIs for the function. - */ - ResourceUris?: ResourceUriList; - } - export interface UserDefinedFunctionInput { - /** - * The name of the function. - */ - FunctionName?: NameString; - /** - * The Java class that contains the function code. - */ - ClassName?: NameString; - /** - * The owner of the function. - */ - OwnerName?: NameString; - /** - * The owner type. - */ - OwnerType?: PrincipalType; - /** - * The resource URIs for the function. - */ - ResourceUris?: ResourceUriList; - } - export type UserDefinedFunctionList = UserDefinedFunction[]; - export type ValueString = string; - export type ValueStringList = ValueString[]; - export type VersionId = number; - export type VersionString = string; - export type ViewTextString = string; - /** - * A string in YYYY-MM-DD format that represents the latest possible API version that can be used in this service. Specify 'latest' to use the latest possible version. - */ - export type apiVersion = "2017-03-31"|"latest"|string; - export interface ClientApiVersions { - /** - * A string in YYYY-MM-DD format that represents the latest possible API version that can be used in this service. Specify 'latest' to use the latest possible version. - */ - apiVersion?: apiVersion; - } - export type ClientConfiguration = ServiceConfigurationOptions & ClientApiVersions; - /** - * Contains interfaces for use with the Glue client. - */ - export import Types = Glue; -} -export = Glue; diff --git a/workshops/monte-carlo-on-ec2-spot-fleet/src/web/node_modules/aws-sdk/clients/glue.js b/workshops/monte-carlo-on-ec2-spot-fleet/src/web/node_modules/aws-sdk/clients/glue.js deleted file mode 100644 index c2efdd87..00000000 --- a/workshops/monte-carlo-on-ec2-spot-fleet/src/web/node_modules/aws-sdk/clients/glue.js +++ /dev/null @@ -1,18 +0,0 @@ -require('../lib/node_loader'); -var AWS = require('../lib/core'); -var Service = AWS.Service; -var apiLoader = AWS.apiLoader; - -apiLoader.services['glue'] = {}; -AWS.Glue = Service.defineService('glue', ['2017-03-31']); -Object.defineProperty(apiLoader.services['glue'], '2017-03-31', { - get: function get() { - var model = require('../apis/glue-2017-03-31.min.json'); - model.paginators = require('../apis/glue-2017-03-31.paginators.json').pagination; - return model; - }, - enumerable: true, - configurable: true -}); - -module.exports = AWS.Glue; diff --git a/workshops/monte-carlo-on-ec2-spot-fleet/src/web/node_modules/aws-sdk/clients/greengrass.d.ts b/workshops/monte-carlo-on-ec2-spot-fleet/src/web/node_modules/aws-sdk/clients/greengrass.d.ts deleted file mode 100644 index 944c25d9..00000000 --- a/workshops/monte-carlo-on-ec2-spot-fleet/src/web/node_modules/aws-sdk/clients/greengrass.d.ts +++ /dev/null @@ -1,2516 +0,0 @@ -import {Request} from '../lib/request'; -import {Response} from '../lib/response'; -import {AWSError} from '../lib/error'; -import {Service} from '../lib/service'; -import {ServiceConfigurationOptions} from '../lib/service'; -import {ConfigBase as Config} from '../lib/config'; -interface Blob {} -declare class Greengrass extends Service { - /** - * Constructs a service object. This object has one method for each API operation. - */ - constructor(options?: Greengrass.Types.ClientConfiguration) - config: Config & Greengrass.Types.ClientConfiguration; - /** - * Associates a role with a group. The role will be used by the AWS Greengrass core in order to access AWS cloud services. The role's permissions will allow Greengrass core Lambda functions to perform actions against the cloud. - */ - associateRoleToGroup(params: Greengrass.Types.AssociateRoleToGroupRequest, callback?: (err: AWSError, data: Greengrass.Types.AssociateRoleToGroupResponse) => void): Request; - /** - * Associates a role with a group. The role will be used by the AWS Greengrass core in order to access AWS cloud services. The role's permissions will allow Greengrass core Lambda functions to perform actions against the cloud. - */ - associateRoleToGroup(callback?: (err: AWSError, data: Greengrass.Types.AssociateRoleToGroupResponse) => void): Request; - /** - * Associates a role which is used by AWS Greengrass. AWS Greengrass uses the role to access your Lambda functions and AWS IoT resources. This is necessary for deployments to succeed. It needs to have minimum permissions in policy ``AWSGreengrassResourceAccessRolePolicy`` - */ - associateServiceRoleToAccount(params: Greengrass.Types.AssociateServiceRoleToAccountRequest, callback?: (err: AWSError, data: Greengrass.Types.AssociateServiceRoleToAccountResponse) => void): Request; - /** - * Associates a role which is used by AWS Greengrass. AWS Greengrass uses the role to access your Lambda functions and AWS IoT resources. This is necessary for deployments to succeed. It needs to have minimum permissions in policy ``AWSGreengrassResourceAccessRolePolicy`` - */ - associateServiceRoleToAccount(callback?: (err: AWSError, data: Greengrass.Types.AssociateServiceRoleToAccountResponse) => void): Request; - /** - * Creates a core definition. You may optionally provide the initial version of the core definition or use ''CreateCoreDefinitionVersion'' at a later time. AWS Greengrass Groups must each contain exactly 1 AWS Greengrass Core. - */ - createCoreDefinition(params: Greengrass.Types.CreateCoreDefinitionRequest, callback?: (err: AWSError, data: Greengrass.Types.CreateCoreDefinitionResponse) => void): Request; - /** - * Creates a core definition. You may optionally provide the initial version of the core definition or use ''CreateCoreDefinitionVersion'' at a later time. AWS Greengrass Groups must each contain exactly 1 AWS Greengrass Core. - */ - createCoreDefinition(callback?: (err: AWSError, data: Greengrass.Types.CreateCoreDefinitionResponse) => void): Request; - /** - * Creates a version of a core definition that has already been defined. AWS Greengrass Groups must each contain exactly 1 AWS Greengrass Core. - */ - createCoreDefinitionVersion(params: Greengrass.Types.CreateCoreDefinitionVersionRequest, callback?: (err: AWSError, data: Greengrass.Types.CreateCoreDefinitionVersionResponse) => void): Request; - /** - * Creates a version of a core definition that has already been defined. AWS Greengrass Groups must each contain exactly 1 AWS Greengrass Core. - */ - createCoreDefinitionVersion(callback?: (err: AWSError, data: Greengrass.Types.CreateCoreDefinitionVersionResponse) => void): Request; - /** - * Creates a deployment. - */ - createDeployment(params: Greengrass.Types.CreateDeploymentRequest, callback?: (err: AWSError, data: Greengrass.Types.CreateDeploymentResponse) => void): Request; - /** - * Creates a deployment. - */ - createDeployment(callback?: (err: AWSError, data: Greengrass.Types.CreateDeploymentResponse) => void): Request; - /** - * Creates a device definition. You may optinally provide the initial version of the device definition or use ``CreateDeviceDefinitionVersion`` at a later time. - */ - createDeviceDefinition(params: Greengrass.Types.CreateDeviceDefinitionRequest, callback?: (err: AWSError, data: Greengrass.Types.CreateDeviceDefinitionResponse) => void): Request; - /** - * Creates a device definition. You may optinally provide the initial version of the device definition or use ``CreateDeviceDefinitionVersion`` at a later time. - */ - createDeviceDefinition(callback?: (err: AWSError, data: Greengrass.Types.CreateDeviceDefinitionResponse) => void): Request; - /** - * Creates a version of a device definition that has already been defined. - */ - createDeviceDefinitionVersion(params: Greengrass.Types.CreateDeviceDefinitionVersionRequest, callback?: (err: AWSError, data: Greengrass.Types.CreateDeviceDefinitionVersionResponse) => void): Request; - /** - * Creates a version of a device definition that has already been defined. - */ - createDeviceDefinitionVersion(callback?: (err: AWSError, data: Greengrass.Types.CreateDeviceDefinitionVersionResponse) => void): Request; - /** - * Creates a Lambda function definition which contains a list of Lambda functions and their configurations to be used in a group. You can create an initial version of the definition by providing a list of Lambda functions and their configurations now, or use ``CreateFunctionDefinitionVersion`` later. - */ - createFunctionDefinition(params: Greengrass.Types.CreateFunctionDefinitionRequest, callback?: (err: AWSError, data: Greengrass.Types.CreateFunctionDefinitionResponse) => void): Request; - /** - * Creates a Lambda function definition which contains a list of Lambda functions and their configurations to be used in a group. You can create an initial version of the definition by providing a list of Lambda functions and their configurations now, or use ``CreateFunctionDefinitionVersion`` later. - */ - createFunctionDefinition(callback?: (err: AWSError, data: Greengrass.Types.CreateFunctionDefinitionResponse) => void): Request; - /** - * Create a version of a Lambda function definition that has already been defined. - */ - createFunctionDefinitionVersion(params: Greengrass.Types.CreateFunctionDefinitionVersionRequest, callback?: (err: AWSError, data: Greengrass.Types.CreateFunctionDefinitionVersionResponse) => void): Request; - /** - * Create a version of a Lambda function definition that has already been defined. - */ - createFunctionDefinitionVersion(callback?: (err: AWSError, data: Greengrass.Types.CreateFunctionDefinitionVersionResponse) => void): Request; - /** - * Creates a group. You may optionally provide the initial version of the group or use ''CreateGroupVersion'' at a later time. - */ - createGroup(params: Greengrass.Types.CreateGroupRequest, callback?: (err: AWSError, data: Greengrass.Types.CreateGroupResponse) => void): Request; - /** - * Creates a group. You may optionally provide the initial version of the group or use ''CreateGroupVersion'' at a later time. - */ - createGroup(callback?: (err: AWSError, data: Greengrass.Types.CreateGroupResponse) => void): Request; - /** - * Creates a CA for the group. If a CA already exists, it will rotate the existing CA. - */ - createGroupCertificateAuthority(params: Greengrass.Types.CreateGroupCertificateAuthorityRequest, callback?: (err: AWSError, data: Greengrass.Types.CreateGroupCertificateAuthorityResponse) => void): Request; - /** - * Creates a CA for the group. If a CA already exists, it will rotate the existing CA. - */ - createGroupCertificateAuthority(callback?: (err: AWSError, data: Greengrass.Types.CreateGroupCertificateAuthorityResponse) => void): Request; - /** - * Creates a version of a group which has already been defined. - */ - createGroupVersion(params: Greengrass.Types.CreateGroupVersionRequest, callback?: (err: AWSError, data: Greengrass.Types.CreateGroupVersionResponse) => void): Request; - /** - * Creates a version of a group which has already been defined. - */ - createGroupVersion(callback?: (err: AWSError, data: Greengrass.Types.CreateGroupVersionResponse) => void): Request; - /** - * Creates a logger definition. You may optionally provide the initial version of the logger definition or use ``CreateLoggerDefinitionVersion`` at a later time. - */ - createLoggerDefinition(params: Greengrass.Types.CreateLoggerDefinitionRequest, callback?: (err: AWSError, data: Greengrass.Types.CreateLoggerDefinitionResponse) => void): Request; - /** - * Creates a logger definition. You may optionally provide the initial version of the logger definition or use ``CreateLoggerDefinitionVersion`` at a later time. - */ - createLoggerDefinition(callback?: (err: AWSError, data: Greengrass.Types.CreateLoggerDefinitionResponse) => void): Request; - /** - * Creates a version of a logger definition that has already been defined. - */ - createLoggerDefinitionVersion(params: Greengrass.Types.CreateLoggerDefinitionVersionRequest, callback?: (err: AWSError, data: Greengrass.Types.CreateLoggerDefinitionVersionResponse) => void): Request; - /** - * Creates a version of a logger definition that has already been defined. - */ - createLoggerDefinitionVersion(callback?: (err: AWSError, data: Greengrass.Types.CreateLoggerDefinitionVersionResponse) => void): Request; - /** - * Creates a subscription definition. You may optionally provide the initial version of the subscription definition or use ``CreateSubscriptionDefinitionVersion`` at a later time. - */ - createSubscriptionDefinition(params: Greengrass.Types.CreateSubscriptionDefinitionRequest, callback?: (err: AWSError, data: Greengrass.Types.CreateSubscriptionDefinitionResponse) => void): Request; - /** - * Creates a subscription definition. You may optionally provide the initial version of the subscription definition or use ``CreateSubscriptionDefinitionVersion`` at a later time. - */ - createSubscriptionDefinition(callback?: (err: AWSError, data: Greengrass.Types.CreateSubscriptionDefinitionResponse) => void): Request; - /** - * Creates a version of a subscription definition which has already been defined. - */ - createSubscriptionDefinitionVersion(params: Greengrass.Types.CreateSubscriptionDefinitionVersionRequest, callback?: (err: AWSError, data: Greengrass.Types.CreateSubscriptionDefinitionVersionResponse) => void): Request; - /** - * Creates a version of a subscription definition which has already been defined. - */ - createSubscriptionDefinitionVersion(callback?: (err: AWSError, data: Greengrass.Types.CreateSubscriptionDefinitionVersionResponse) => void): Request; - /** - * Deletes a core definition. The core definition must not have been used in a deployment. - */ - deleteCoreDefinition(params: Greengrass.Types.DeleteCoreDefinitionRequest, callback?: (err: AWSError, data: Greengrass.Types.DeleteCoreDefinitionResponse) => void): Request; - /** - * Deletes a core definition. The core definition must not have been used in a deployment. - */ - deleteCoreDefinition(callback?: (err: AWSError, data: Greengrass.Types.DeleteCoreDefinitionResponse) => void): Request; - /** - * Deletes a device definition. The device definition must not have been used in a deployment. - */ - deleteDeviceDefinition(params: Greengrass.Types.DeleteDeviceDefinitionRequest, callback?: (err: AWSError, data: Greengrass.Types.DeleteDeviceDefinitionResponse) => void): Request; - /** - * Deletes a device definition. The device definition must not have been used in a deployment. - */ - deleteDeviceDefinition(callback?: (err: AWSError, data: Greengrass.Types.DeleteDeviceDefinitionResponse) => void): Request; - /** - * Deletes a Lambda function definition. The Lambda function definition must not have been used in a deployment. - */ - deleteFunctionDefinition(params: Greengrass.Types.DeleteFunctionDefinitionRequest, callback?: (err: AWSError, data: Greengrass.Types.DeleteFunctionDefinitionResponse) => void): Request; - /** - * Deletes a Lambda function definition. The Lambda function definition must not have been used in a deployment. - */ - deleteFunctionDefinition(callback?: (err: AWSError, data: Greengrass.Types.DeleteFunctionDefinitionResponse) => void): Request; - /** - * Deletes a group. The group must not have been used in deployment. - */ - deleteGroup(params: Greengrass.Types.DeleteGroupRequest, callback?: (err: AWSError, data: Greengrass.Types.DeleteGroupResponse) => void): Request; - /** - * Deletes a group. The group must not have been used in deployment. - */ - deleteGroup(callback?: (err: AWSError, data: Greengrass.Types.DeleteGroupResponse) => void): Request; - /** - * Deletes a logger definition. The logger definition must not have been used in a deployment. - */ - deleteLoggerDefinition(params: Greengrass.Types.DeleteLoggerDefinitionRequest, callback?: (err: AWSError, data: Greengrass.Types.DeleteLoggerDefinitionResponse) => void): Request; - /** - * Deletes a logger definition. The logger definition must not have been used in a deployment. - */ - deleteLoggerDefinition(callback?: (err: AWSError, data: Greengrass.Types.DeleteLoggerDefinitionResponse) => void): Request; - /** - * Deletes a subscription definition. The subscription definition must not have been used in a deployment. - */ - deleteSubscriptionDefinition(params: Greengrass.Types.DeleteSubscriptionDefinitionRequest, callback?: (err: AWSError, data: Greengrass.Types.DeleteSubscriptionDefinitionResponse) => void): Request; - /** - * Deletes a subscription definition. The subscription definition must not have been used in a deployment. - */ - deleteSubscriptionDefinition(callback?: (err: AWSError, data: Greengrass.Types.DeleteSubscriptionDefinitionResponse) => void): Request; - /** - * Disassociates the role from a group. - */ - disassociateRoleFromGroup(params: Greengrass.Types.DisassociateRoleFromGroupRequest, callback?: (err: AWSError, data: Greengrass.Types.DisassociateRoleFromGroupResponse) => void): Request; - /** - * Disassociates the role from a group. - */ - disassociateRoleFromGroup(callback?: (err: AWSError, data: Greengrass.Types.DisassociateRoleFromGroupResponse) => void): Request; - /** - * Disassociates the service role from the account. Without a service role, deployments will not work. - */ - disassociateServiceRoleFromAccount(params: Greengrass.Types.DisassociateServiceRoleFromAccountRequest, callback?: (err: AWSError, data: Greengrass.Types.DisassociateServiceRoleFromAccountResponse) => void): Request; - /** - * Disassociates the service role from the account. Without a service role, deployments will not work. - */ - disassociateServiceRoleFromAccount(callback?: (err: AWSError, data: Greengrass.Types.DisassociateServiceRoleFromAccountResponse) => void): Request; - /** - * Retrieves the role associated with a particular group. - */ - getAssociatedRole(params: Greengrass.Types.GetAssociatedRoleRequest, callback?: (err: AWSError, data: Greengrass.Types.GetAssociatedRoleResponse) => void): Request; - /** - * Retrieves the role associated with a particular group. - */ - getAssociatedRole(callback?: (err: AWSError, data: Greengrass.Types.GetAssociatedRoleResponse) => void): Request; - /** - * Retrieves the connectivity information for a core. - */ - getConnectivityInfo(params: Greengrass.Types.GetConnectivityInfoRequest, callback?: (err: AWSError, data: Greengrass.Types.GetConnectivityInfoResponse) => void): Request; - /** - * Retrieves the connectivity information for a core. - */ - getConnectivityInfo(callback?: (err: AWSError, data: Greengrass.Types.GetConnectivityInfoResponse) => void): Request; - /** - * Retrieves information about a core definition version. - */ - getCoreDefinition(params: Greengrass.Types.GetCoreDefinitionRequest, callback?: (err: AWSError, data: Greengrass.Types.GetCoreDefinitionResponse) => void): Request; - /** - * Retrieves information about a core definition version. - */ - getCoreDefinition(callback?: (err: AWSError, data: Greengrass.Types.GetCoreDefinitionResponse) => void): Request; - /** - * Retrieves information about a core definition version. - */ - getCoreDefinitionVersion(params: Greengrass.Types.GetCoreDefinitionVersionRequest, callback?: (err: AWSError, data: Greengrass.Types.GetCoreDefinitionVersionResponse) => void): Request; - /** - * Retrieves information about a core definition version. - */ - getCoreDefinitionVersion(callback?: (err: AWSError, data: Greengrass.Types.GetCoreDefinitionVersionResponse) => void): Request; - /** - * Returns the status of a deployment. - */ - getDeploymentStatus(params: Greengrass.Types.GetDeploymentStatusRequest, callback?: (err: AWSError, data: Greengrass.Types.GetDeploymentStatusResponse) => void): Request; - /** - * Returns the status of a deployment. - */ - getDeploymentStatus(callback?: (err: AWSError, data: Greengrass.Types.GetDeploymentStatusResponse) => void): Request; - /** - * Retrieves information about a device definition. - */ - getDeviceDefinition(params: Greengrass.Types.GetDeviceDefinitionRequest, callback?: (err: AWSError, data: Greengrass.Types.GetDeviceDefinitionResponse) => void): Request; - /** - * Retrieves information about a device definition. - */ - getDeviceDefinition(callback?: (err: AWSError, data: Greengrass.Types.GetDeviceDefinitionResponse) => void): Request; - /** - * Retrieves information about a device definition version. - */ - getDeviceDefinitionVersion(params: Greengrass.Types.GetDeviceDefinitionVersionRequest, callback?: (err: AWSError, data: Greengrass.Types.GetDeviceDefinitionVersionResponse) => void): Request; - /** - * Retrieves information about a device definition version. - */ - getDeviceDefinitionVersion(callback?: (err: AWSError, data: Greengrass.Types.GetDeviceDefinitionVersionResponse) => void): Request; - /** - * Retrieves information about a Lambda function definition, such as its creation time and latest version. - */ - getFunctionDefinition(params: Greengrass.Types.GetFunctionDefinitionRequest, callback?: (err: AWSError, data: Greengrass.Types.GetFunctionDefinitionResponse) => void): Request; - /** - * Retrieves information about a Lambda function definition, such as its creation time and latest version. - */ - getFunctionDefinition(callback?: (err: AWSError, data: Greengrass.Types.GetFunctionDefinitionResponse) => void): Request; - /** - * Retrieves information about a Lambda function definition version, such as which Lambda functions are included in the version and their configurations. - */ - getFunctionDefinitionVersion(params: Greengrass.Types.GetFunctionDefinitionVersionRequest, callback?: (err: AWSError, data: Greengrass.Types.GetFunctionDefinitionVersionResponse) => void): Request; - /** - * Retrieves information about a Lambda function definition version, such as which Lambda functions are included in the version and their configurations. - */ - getFunctionDefinitionVersion(callback?: (err: AWSError, data: Greengrass.Types.GetFunctionDefinitionVersionResponse) => void): Request; - /** - * Retrieves information about a group. - */ - getGroup(params: Greengrass.Types.GetGroupRequest, callback?: (err: AWSError, data: Greengrass.Types.GetGroupResponse) => void): Request; - /** - * Retrieves information about a group. - */ - getGroup(callback?: (err: AWSError, data: Greengrass.Types.GetGroupResponse) => void): Request; - /** - * Retreives the CA associated with a group. Returns the public key of the CA. - */ - getGroupCertificateAuthority(params: Greengrass.Types.GetGroupCertificateAuthorityRequest, callback?: (err: AWSError, data: Greengrass.Types.GetGroupCertificateAuthorityResponse) => void): Request; - /** - * Retreives the CA associated with a group. Returns the public key of the CA. - */ - getGroupCertificateAuthority(callback?: (err: AWSError, data: Greengrass.Types.GetGroupCertificateAuthorityResponse) => void): Request; - /** - * Retrieves the current configuration for the CA used by the group. - */ - getGroupCertificateConfiguration(params: Greengrass.Types.GetGroupCertificateConfigurationRequest, callback?: (err: AWSError, data: Greengrass.Types.GetGroupCertificateConfigurationResponse) => void): Request; - /** - * Retrieves the current configuration for the CA used by the group. - */ - getGroupCertificateConfiguration(callback?: (err: AWSError, data: Greengrass.Types.GetGroupCertificateConfigurationResponse) => void): Request; - /** - * Retrieves information about a group version. - */ - getGroupVersion(params: Greengrass.Types.GetGroupVersionRequest, callback?: (err: AWSError, data: Greengrass.Types.GetGroupVersionResponse) => void): Request; - /** - * Retrieves information about a group version. - */ - getGroupVersion(callback?: (err: AWSError, data: Greengrass.Types.GetGroupVersionResponse) => void): Request; - /** - * Retrieves information about a logger definition. - */ - getLoggerDefinition(params: Greengrass.Types.GetLoggerDefinitionRequest, callback?: (err: AWSError, data: Greengrass.Types.GetLoggerDefinitionResponse) => void): Request; - /** - * Retrieves information about a logger definition. - */ - getLoggerDefinition(callback?: (err: AWSError, data: Greengrass.Types.GetLoggerDefinitionResponse) => void): Request; - /** - * Retrieves information about a logger definition version. - */ - getLoggerDefinitionVersion(params: Greengrass.Types.GetLoggerDefinitionVersionRequest, callback?: (err: AWSError, data: Greengrass.Types.GetLoggerDefinitionVersionResponse) => void): Request; - /** - * Retrieves information about a logger definition version. - */ - getLoggerDefinitionVersion(callback?: (err: AWSError, data: Greengrass.Types.GetLoggerDefinitionVersionResponse) => void): Request; - /** - * Retrieves the service role that is attached to the account. - */ - getServiceRoleForAccount(params: Greengrass.Types.GetServiceRoleForAccountRequest, callback?: (err: AWSError, data: Greengrass.Types.GetServiceRoleForAccountResponse) => void): Request; - /** - * Retrieves the service role that is attached to the account. - */ - getServiceRoleForAccount(callback?: (err: AWSError, data: Greengrass.Types.GetServiceRoleForAccountResponse) => void): Request; - /** - * Retrieves information about a subscription definition. - */ - getSubscriptionDefinition(params: Greengrass.Types.GetSubscriptionDefinitionRequest, callback?: (err: AWSError, data: Greengrass.Types.GetSubscriptionDefinitionResponse) => void): Request; - /** - * Retrieves information about a subscription definition. - */ - getSubscriptionDefinition(callback?: (err: AWSError, data: Greengrass.Types.GetSubscriptionDefinitionResponse) => void): Request; - /** - * Retrieves information about a subscription definition version. - */ - getSubscriptionDefinitionVersion(params: Greengrass.Types.GetSubscriptionDefinitionVersionRequest, callback?: (err: AWSError, data: Greengrass.Types.GetSubscriptionDefinitionVersionResponse) => void): Request; - /** - * Retrieves information about a subscription definition version. - */ - getSubscriptionDefinitionVersion(callback?: (err: AWSError, data: Greengrass.Types.GetSubscriptionDefinitionVersionResponse) => void): Request; - /** - * Lists versions of a core definition. - */ - listCoreDefinitionVersions(params: Greengrass.Types.ListCoreDefinitionVersionsRequest, callback?: (err: AWSError, data: Greengrass.Types.ListCoreDefinitionVersionsResponse) => void): Request; - /** - * Lists versions of a core definition. - */ - listCoreDefinitionVersions(callback?: (err: AWSError, data: Greengrass.Types.ListCoreDefinitionVersionsResponse) => void): Request; - /** - * Retrieves a list of core definitions. - */ - listCoreDefinitions(params: Greengrass.Types.ListCoreDefinitionsRequest, callback?: (err: AWSError, data: Greengrass.Types.ListCoreDefinitionsResponse) => void): Request; - /** - * Retrieves a list of core definitions. - */ - listCoreDefinitions(callback?: (err: AWSError, data: Greengrass.Types.ListCoreDefinitionsResponse) => void): Request; - /** - * Returns a history of deployments for the group. - */ - listDeployments(params: Greengrass.Types.ListDeploymentsRequest, callback?: (err: AWSError, data: Greengrass.Types.ListDeploymentsResponse) => void): Request; - /** - * Returns a history of deployments for the group. - */ - listDeployments(callback?: (err: AWSError, data: Greengrass.Types.ListDeploymentsResponse) => void): Request; - /** - * Lists the versions of a device definition. - */ - listDeviceDefinitionVersions(params: Greengrass.Types.ListDeviceDefinitionVersionsRequest, callback?: (err: AWSError, data: Greengrass.Types.ListDeviceDefinitionVersionsResponse) => void): Request; - /** - * Lists the versions of a device definition. - */ - listDeviceDefinitionVersions(callback?: (err: AWSError, data: Greengrass.Types.ListDeviceDefinitionVersionsResponse) => void): Request; - /** - * Retrieves a list of device definitions. - */ - listDeviceDefinitions(params: Greengrass.Types.ListDeviceDefinitionsRequest, callback?: (err: AWSError, data: Greengrass.Types.ListDeviceDefinitionsResponse) => void): Request; - /** - * Retrieves a list of device definitions. - */ - listDeviceDefinitions(callback?: (err: AWSError, data: Greengrass.Types.ListDeviceDefinitionsResponse) => void): Request; - /** - * Lists the versions of a Lambda function definition. - */ - listFunctionDefinitionVersions(params: Greengrass.Types.ListFunctionDefinitionVersionsRequest, callback?: (err: AWSError, data: Greengrass.Types.ListFunctionDefinitionVersionsResponse) => void): Request; - /** - * Lists the versions of a Lambda function definition. - */ - listFunctionDefinitionVersions(callback?: (err: AWSError, data: Greengrass.Types.ListFunctionDefinitionVersionsResponse) => void): Request; - /** - * Retrieves a list of Lambda function definitions. - */ - listFunctionDefinitions(params: Greengrass.Types.ListFunctionDefinitionsRequest, callback?: (err: AWSError, data: Greengrass.Types.ListFunctionDefinitionsResponse) => void): Request; - /** - * Retrieves a list of Lambda function definitions. - */ - listFunctionDefinitions(callback?: (err: AWSError, data: Greengrass.Types.ListFunctionDefinitionsResponse) => void): Request; - /** - * Retrieves the current CAs for a group. - */ - listGroupCertificateAuthorities(params: Greengrass.Types.ListGroupCertificateAuthoritiesRequest, callback?: (err: AWSError, data: Greengrass.Types.ListGroupCertificateAuthoritiesResponse) => void): Request; - /** - * Retrieves the current CAs for a group. - */ - listGroupCertificateAuthorities(callback?: (err: AWSError, data: Greengrass.Types.ListGroupCertificateAuthoritiesResponse) => void): Request; - /** - * List the versions of a group. - */ - listGroupVersions(params: Greengrass.Types.ListGroupVersionsRequest, callback?: (err: AWSError, data: Greengrass.Types.ListGroupVersionsResponse) => void): Request; - /** - * List the versions of a group. - */ - listGroupVersions(callback?: (err: AWSError, data: Greengrass.Types.ListGroupVersionsResponse) => void): Request; - /** - * Retrieves a list of groups. - */ - listGroups(params: Greengrass.Types.ListGroupsRequest, callback?: (err: AWSError, data: Greengrass.Types.ListGroupsResponse) => void): Request; - /** - * Retrieves a list of groups. - */ - listGroups(callback?: (err: AWSError, data: Greengrass.Types.ListGroupsResponse) => void): Request; - /** - * Lists the versions of a logger definition. - */ - listLoggerDefinitionVersions(params: Greengrass.Types.ListLoggerDefinitionVersionsRequest, callback?: (err: AWSError, data: Greengrass.Types.ListLoggerDefinitionVersionsResponse) => void): Request; - /** - * Lists the versions of a logger definition. - */ - listLoggerDefinitionVersions(callback?: (err: AWSError, data: Greengrass.Types.ListLoggerDefinitionVersionsResponse) => void): Request; - /** - * Retrieves a list of logger definitions. - */ - listLoggerDefinitions(params: Greengrass.Types.ListLoggerDefinitionsRequest, callback?: (err: AWSError, data: Greengrass.Types.ListLoggerDefinitionsResponse) => void): Request; - /** - * Retrieves a list of logger definitions. - */ - listLoggerDefinitions(callback?: (err: AWSError, data: Greengrass.Types.ListLoggerDefinitionsResponse) => void): Request; - /** - * Lists the versions of a subscription definition. - */ - listSubscriptionDefinitionVersions(params: Greengrass.Types.ListSubscriptionDefinitionVersionsRequest, callback?: (err: AWSError, data: Greengrass.Types.ListSubscriptionDefinitionVersionsResponse) => void): Request; - /** - * Lists the versions of a subscription definition. - */ - listSubscriptionDefinitionVersions(callback?: (err: AWSError, data: Greengrass.Types.ListSubscriptionDefinitionVersionsResponse) => void): Request; - /** - * Retrieves a list of subscription definitions. - */ - listSubscriptionDefinitions(params: Greengrass.Types.ListSubscriptionDefinitionsRequest, callback?: (err: AWSError, data: Greengrass.Types.ListSubscriptionDefinitionsResponse) => void): Request; - /** - * Retrieves a list of subscription definitions. - */ - listSubscriptionDefinitions(callback?: (err: AWSError, data: Greengrass.Types.ListSubscriptionDefinitionsResponse) => void): Request; - /** - * Resets a group's deployments. - */ - resetDeployments(params: Greengrass.Types.ResetDeploymentsRequest, callback?: (err: AWSError, data: Greengrass.Types.ResetDeploymentsResponse) => void): Request; - /** - * Resets a group's deployments. - */ - resetDeployments(callback?: (err: AWSError, data: Greengrass.Types.ResetDeploymentsResponse) => void): Request; - /** - * Updates the connectivity information for the core. Any devices that belong to the group which has this core will receive this information in order to find the location of the core and connect to it. - */ - updateConnectivityInfo(params: Greengrass.Types.UpdateConnectivityInfoRequest, callback?: (err: AWSError, data: Greengrass.Types.UpdateConnectivityInfoResponse) => void): Request; - /** - * Updates the connectivity information for the core. Any devices that belong to the group which has this core will receive this information in order to find the location of the core and connect to it. - */ - updateConnectivityInfo(callback?: (err: AWSError, data: Greengrass.Types.UpdateConnectivityInfoResponse) => void): Request; - /** - * Updates a core definition. - */ - updateCoreDefinition(params: Greengrass.Types.UpdateCoreDefinitionRequest, callback?: (err: AWSError, data: Greengrass.Types.UpdateCoreDefinitionResponse) => void): Request; - /** - * Updates a core definition. - */ - updateCoreDefinition(callback?: (err: AWSError, data: Greengrass.Types.UpdateCoreDefinitionResponse) => void): Request; - /** - * Updates a device definition. - */ - updateDeviceDefinition(params: Greengrass.Types.UpdateDeviceDefinitionRequest, callback?: (err: AWSError, data: Greengrass.Types.UpdateDeviceDefinitionResponse) => void): Request; - /** - * Updates a device definition. - */ - updateDeviceDefinition(callback?: (err: AWSError, data: Greengrass.Types.UpdateDeviceDefinitionResponse) => void): Request; - /** - * Updates a Lambda function definition. - */ - updateFunctionDefinition(params: Greengrass.Types.UpdateFunctionDefinitionRequest, callback?: (err: AWSError, data: Greengrass.Types.UpdateFunctionDefinitionResponse) => void): Request; - /** - * Updates a Lambda function definition. - */ - updateFunctionDefinition(callback?: (err: AWSError, data: Greengrass.Types.UpdateFunctionDefinitionResponse) => void): Request; - /** - * Updates a group. - */ - updateGroup(params: Greengrass.Types.UpdateGroupRequest, callback?: (err: AWSError, data: Greengrass.Types.UpdateGroupResponse) => void): Request; - /** - * Updates a group. - */ - updateGroup(callback?: (err: AWSError, data: Greengrass.Types.UpdateGroupResponse) => void): Request; - /** - * Updates the Cert expiry time for a group. - */ - updateGroupCertificateConfiguration(params: Greengrass.Types.UpdateGroupCertificateConfigurationRequest, callback?: (err: AWSError, data: Greengrass.Types.UpdateGroupCertificateConfigurationResponse) => void): Request; - /** - * Updates the Cert expiry time for a group. - */ - updateGroupCertificateConfiguration(callback?: (err: AWSError, data: Greengrass.Types.UpdateGroupCertificateConfigurationResponse) => void): Request; - /** - * Updates a logger definition. - */ - updateLoggerDefinition(params: Greengrass.Types.UpdateLoggerDefinitionRequest, callback?: (err: AWSError, data: Greengrass.Types.UpdateLoggerDefinitionResponse) => void): Request; - /** - * Updates a logger definition. - */ - updateLoggerDefinition(callback?: (err: AWSError, data: Greengrass.Types.UpdateLoggerDefinitionResponse) => void): Request; - /** - * Updates a subscription definition. - */ - updateSubscriptionDefinition(params: Greengrass.Types.UpdateSubscriptionDefinitionRequest, callback?: (err: AWSError, data: Greengrass.Types.UpdateSubscriptionDefinitionResponse) => void): Request; - /** - * Updates a subscription definition. - */ - updateSubscriptionDefinition(callback?: (err: AWSError, data: Greengrass.Types.UpdateSubscriptionDefinitionResponse) => void): Request; -} -declare namespace Greengrass { - export interface AssociateRoleToGroupRequest { - /** - * The unique Id of the AWS Greengrass Group - */ - GroupId: __string; - /** - * Role arn you wish to associate with this group. - */ - RoleArn?: __string; - } - export interface AssociateRoleToGroupResponse { - /** - * Time the role arn was associated to your group. - */ - AssociatedAt?: __string; - } - export interface AssociateServiceRoleToAccountRequest { - /** - * Role arn you wish to associate with this account. - */ - RoleArn?: __string; - } - export interface AssociateServiceRoleToAccountResponse { - /** - * Time when the service role was associated to the account. - */ - AssociatedAt?: __string; - } - export interface ConnectivityInfo { - /** - * Endpoint for the GGC. Can be an IP address or DNS. - */ - HostAddress?: __string; - /** - * Element Id for this entry in the list. - */ - Id?: __string; - /** - * Metadata for this endpoint. - */ - Metadata?: __string; - /** - * Port of the GGC. Usually 8883. - */ - PortNumber?: __integer; - } - export interface Core { - /** - * Certificate arn of the core. - */ - CertificateArn?: __string; - /** - * Element Id for this entry in the list. - */ - Id?: __string; - /** - * If true, the local shadow value automatically syncs with the cloud's shadow state. - */ - SyncShadow?: __boolean; - /** - * Thing arn of the core. - */ - ThingArn?: __string; - } - export interface CoreDefinitionVersion { - /** - * Cores in the definition version. - */ - Cores?: ListOfCore; - } - export interface CreateCoreDefinitionRequest { - /** - * The client token used to request idempotent operations. - */ - AmznClientToken?: __string; - /** - * Information on the initial version - */ - InitialVersion?: CoreDefinitionVersion; - /** - * name of the core definition - */ - Name?: __string; - } - export interface CreateCoreDefinitionResponse { - /** - * Arn of the definition. - */ - Arn?: __string; - /** - * Timestamp of when the definition was created. - */ - CreationTimestamp?: __string; - /** - * Id of the definition. - */ - Id?: __string; - /** - * Last updated timestamp of the definition. - */ - LastUpdatedTimestamp?: __string; - /** - * Last version of the definition. - */ - LatestVersion?: __string; - /** - * Latest version arn of the definition. - */ - LatestVersionArn?: __string; - /** - * Name of the definition. - */ - Name?: __string; - } - export interface CreateCoreDefinitionVersionRequest { - /** - * The client token used to request idempotent operations. - */ - AmznClientToken?: __string; - /** - * core definition Id - */ - CoreDefinitionId: __string; - /** - * Cores in the definition version. - */ - Cores?: ListOfCore; - } - export interface CreateCoreDefinitionVersionResponse { - /** - * Arn of the version. - */ - Arn?: __string; - /** - * Timestamp of when the version was created. - */ - CreationTimestamp?: __string; - /** - * Id of the resource container. - */ - Id?: __string; - /** - * Unique Id of a version. - */ - Version?: __string; - } - export interface CreateDeploymentRequest { - /** - * The client token used to request idempotent operations. - */ - AmznClientToken?: __string; - /** - * Id of the deployment if you wish to redeploy a previous deployment. - */ - DeploymentId?: __string; - /** - * Type of deployment. When used in CreateDeployment, only NewDeployment and Redeployment are valid. - */ - DeploymentType?: DeploymentType; - /** - * The unique Id of the AWS Greengrass Group - */ - GroupId: __string; - /** - * Group Version you wish to deploy. - */ - GroupVersionId?: __string; - } - export interface CreateDeploymentResponse { - /** - * The arn of the deployment. - */ - DeploymentArn?: __string; - /** - * The id of the deployment. - */ - DeploymentId?: __string; - } - export interface CreateDeviceDefinitionRequest { - /** - * The client token used to request idempotent operations. - */ - AmznClientToken?: __string; - /** - * Information on the initial version - */ - InitialVersion?: DeviceDefinitionVersion; - /** - * name of the device definition - */ - Name?: __string; - } - export interface CreateDeviceDefinitionResponse { - /** - * Arn of the definition. - */ - Arn?: __string; - /** - * Timestamp of when the definition was created. - */ - CreationTimestamp?: __string; - /** - * Id of the definition. - */ - Id?: __string; - /** - * Last updated timestamp of the definition. - */ - LastUpdatedTimestamp?: __string; - /** - * Last version of the definition. - */ - LatestVersion?: __string; - /** - * Latest version arn of the definition. - */ - LatestVersionArn?: __string; - /** - * Name of the definition. - */ - Name?: __string; - } - export interface CreateDeviceDefinitionVersionRequest { - /** - * The client token used to request idempotent operations. - */ - AmznClientToken?: __string; - /** - * device definition Id - */ - DeviceDefinitionId: __string; - /** - * Devices in the definition version. - */ - Devices?: ListOfDevice; - } - export interface CreateDeviceDefinitionVersionResponse { - /** - * Arn of the version. - */ - Arn?: __string; - /** - * Timestamp of when the version was created. - */ - CreationTimestamp?: __string; - /** - * Id of the resource container. - */ - Id?: __string; - /** - * Unique Id of a version. - */ - Version?: __string; - } - export interface CreateFunctionDefinitionRequest { - /** - * The client token used to request idempotent operations. - */ - AmznClientToken?: __string; - /** - * Information on the initial version - */ - InitialVersion?: FunctionDefinitionVersion; - /** - * name of the function definition - */ - Name?: __string; - } - export interface CreateFunctionDefinitionResponse { - /** - * Arn of the definition. - */ - Arn?: __string; - /** - * Timestamp of when the definition was created. - */ - CreationTimestamp?: __string; - /** - * Id of the definition. - */ - Id?: __string; - /** - * Last updated timestamp of the definition. - */ - LastUpdatedTimestamp?: __string; - /** - * Last version of the definition. - */ - LatestVersion?: __string; - /** - * Latest version arn of the definition. - */ - LatestVersionArn?: __string; - /** - * Name of the definition. - */ - Name?: __string; - } - export interface CreateFunctionDefinitionVersionRequest { - /** - * The client token used to request idempotent operations. - */ - AmznClientToken?: __string; - /** - * the unique Id of the lambda definition - */ - FunctionDefinitionId: __string; - /** - * Lambda functions in this function definition version. - */ - Functions?: ListOfFunction; - } - export interface CreateFunctionDefinitionVersionResponse { - /** - * Arn of the version. - */ - Arn?: __string; - /** - * Timestamp of when the version was created. - */ - CreationTimestamp?: __string; - /** - * Id of the resource container. - */ - Id?: __string; - /** - * Unique Id of a version. - */ - Version?: __string; - } - export interface CreateGroupCertificateAuthorityRequest { - /** - * The client token used to request idempotent operations. - */ - AmznClientToken?: __string; - /** - * The unique Id of the AWS Greengrass Group - */ - GroupId: __string; - } - export interface CreateGroupCertificateAuthorityResponse { - /** - * Arn of the group certificate authority. - */ - GroupCertificateAuthorityArn?: __string; - } - export interface CreateGroupRequest { - /** - * The client token used to request idempotent operations. - */ - AmznClientToken?: __string; - /** - * Information on the initial version - */ - InitialVersion?: GroupVersion; - /** - * name of the group - */ - Name?: __string; - } - export interface CreateGroupResponse { - /** - * Arn of the definition. - */ - Arn?: __string; - /** - * Timestamp of when the definition was created. - */ - CreationTimestamp?: __string; - /** - * Id of the definition. - */ - Id?: __string; - /** - * Last updated timestamp of the definition. - */ - LastUpdatedTimestamp?: __string; - /** - * Last version of the definition. - */ - LatestVersion?: __string; - /** - * Latest version arn of the definition. - */ - LatestVersionArn?: __string; - /** - * Name of the definition. - */ - Name?: __string; - } - export interface CreateGroupVersionRequest { - /** - * The client token used to request idempotent operations. - */ - AmznClientToken?: __string; - /** - * Core definition version arn for this group. - */ - CoreDefinitionVersionArn?: __string; - /** - * Device definition version arn for this group. - */ - DeviceDefinitionVersionArn?: __string; - /** - * Function definition version arn for this group. - */ - FunctionDefinitionVersionArn?: __string; - /** - * The unique Id of the AWS Greengrass Group - */ - GroupId: __string; - /** - * Logger definitionv ersion arn for this group. - */ - LoggerDefinitionVersionArn?: __string; - /** - * Subscription definition version arn for this group. - */ - SubscriptionDefinitionVersionArn?: __string; - } - export interface CreateGroupVersionResponse { - /** - * Arn of the version. - */ - Arn?: __string; - /** - * Timestamp of when the version was created. - */ - CreationTimestamp?: __string; - /** - * Id of the resource container. - */ - Id?: __string; - /** - * Unique Id of a version. - */ - Version?: __string; - } - export interface CreateLoggerDefinitionRequest { - /** - * The client token used to request idempotent operations. - */ - AmznClientToken?: __string; - /** - * Information on the initial version - */ - InitialVersion?: LoggerDefinitionVersion; - /** - * name of the logger definition - */ - Name?: __string; - } - export interface CreateLoggerDefinitionResponse { - /** - * Arn of the definition. - */ - Arn?: __string; - /** - * Timestamp of when the definition was created. - */ - CreationTimestamp?: __string; - /** - * Id of the definition. - */ - Id?: __string; - /** - * Last updated timestamp of the definition. - */ - LastUpdatedTimestamp?: __string; - /** - * Last version of the definition. - */ - LatestVersion?: __string; - /** - * Latest version arn of the definition. - */ - LatestVersionArn?: __string; - /** - * Name of the definition. - */ - Name?: __string; - } - export interface CreateLoggerDefinitionVersionRequest { - /** - * The client token used to request idempotent operations. - */ - AmznClientToken?: __string; - /** - * logger definition Id - */ - LoggerDefinitionId: __string; - /** - * List of loggers. - */ - Loggers?: ListOfLogger; - } - export interface CreateLoggerDefinitionVersionResponse { - /** - * Arn of the version. - */ - Arn?: __string; - /** - * Timestamp of when the version was created. - */ - CreationTimestamp?: __string; - /** - * Id of the resource container. - */ - Id?: __string; - /** - * Unique Id of a version. - */ - Version?: __string; - } - export interface CreateSubscriptionDefinitionRequest { - /** - * The client token used to request idempotent operations. - */ - AmznClientToken?: __string; - /** - * Information on the initial version - */ - InitialVersion?: SubscriptionDefinitionVersion; - /** - * name of the subscription definition - */ - Name?: __string; - } - export interface CreateSubscriptionDefinitionResponse { - /** - * Arn of the definition. - */ - Arn?: __string; - /** - * Timestamp of when the definition was created. - */ - CreationTimestamp?: __string; - /** - * Id of the definition. - */ - Id?: __string; - /** - * Last updated timestamp of the definition. - */ - LastUpdatedTimestamp?: __string; - /** - * Last version of the definition. - */ - LatestVersion?: __string; - /** - * Latest version arn of the definition. - */ - LatestVersionArn?: __string; - /** - * Name of the definition. - */ - Name?: __string; - } - export interface CreateSubscriptionDefinitionVersionRequest { - /** - * The client token used to request idempotent operations. - */ - AmznClientToken?: __string; - /** - * subscription definition Id - */ - SubscriptionDefinitionId: __string; - /** - * Subscriptions in the version. - */ - Subscriptions?: ListOfSubscription; - } - export interface CreateSubscriptionDefinitionVersionResponse { - /** - * Arn of the version. - */ - Arn?: __string; - /** - * Timestamp of when the version was created. - */ - CreationTimestamp?: __string; - /** - * Id of the resource container. - */ - Id?: __string; - /** - * Unique Id of a version. - */ - Version?: __string; - } - export interface DefinitionInformation { - /** - * Arn of the definition. - */ - Arn?: __string; - /** - * Timestamp of when the definition was created. - */ - CreationTimestamp?: __string; - /** - * Id of the definition. - */ - Id?: __string; - /** - * Last updated timestamp of the definition. - */ - LastUpdatedTimestamp?: __string; - /** - * Last version of the definition. - */ - LatestVersion?: __string; - /** - * Latest version arn of the definition. - */ - LatestVersionArn?: __string; - /** - * Name of the definition. - */ - Name?: __string; - } - export interface DeleteCoreDefinitionRequest { - /** - * core definition Id - */ - CoreDefinitionId: __string; - } - export interface DeleteCoreDefinitionResponse { - } - export interface DeleteDeviceDefinitionRequest { - /** - * device definition Id - */ - DeviceDefinitionId: __string; - } - export interface DeleteDeviceDefinitionResponse { - } - export interface DeleteFunctionDefinitionRequest { - /** - * the unique Id of the lambda definition - */ - FunctionDefinitionId: __string; - } - export interface DeleteFunctionDefinitionResponse { - } - export interface DeleteGroupRequest { - /** - * The unique Id of the AWS Greengrass Group - */ - GroupId: __string; - } - export interface DeleteGroupResponse { - } - export interface DeleteLoggerDefinitionRequest { - /** - * logger definition Id - */ - LoggerDefinitionId: __string; - } - export interface DeleteLoggerDefinitionResponse { - } - export interface DeleteSubscriptionDefinitionRequest { - /** - * subscription definition Id - */ - SubscriptionDefinitionId: __string; - } - export interface DeleteSubscriptionDefinitionResponse { - } - export interface Deployment { - /** - * Timestamp when the deployment was created. - */ - CreatedAt?: __string; - /** - * Arn of the deployment. - */ - DeploymentArn?: __string; - /** - * Id of the deployment. - */ - DeploymentId?: __string; - /** - * The type of deployment. - */ - DeploymentType?: DeploymentType; - /** - * Arn of the group for this deployment. - */ - GroupArn?: __string; - } - export type DeploymentType = "NewDeployment"|"Redeployment"|"ResetDeployment"|"ForceResetDeployment"|string; - export type Deployments = Deployment[]; - export interface Device { - /** - * Certificate arn of the device. - */ - CertificateArn?: __string; - /** - * Element Id for this entry in the list. - */ - Id?: __string; - /** - * If true, the local shadow value automatically syncs with the cloud's shadow state. - */ - SyncShadow?: __boolean; - /** - * Thing arn of the device. - */ - ThingArn?: __string; - } - export interface DeviceDefinitionVersion { - /** - * Devices in the definition version. - */ - Devices?: ListOfDevice; - } - export interface DisassociateRoleFromGroupRequest { - /** - * The unique Id of the AWS Greengrass Group - */ - GroupId: __string; - } - export interface DisassociateRoleFromGroupResponse { - /** - * Time when the role was disassociated from the group. - */ - DisassociatedAt?: __string; - } - export interface DisassociateServiceRoleFromAccountRequest { - } - export interface DisassociateServiceRoleFromAccountResponse { - /** - * Time when the service role was disassociated from the account. - */ - DisassociatedAt?: __string; - } - export interface Empty { - } - export interface ErrorDetail { - /** - * Detailed Error Code - */ - DetailedErrorCode?: __string; - /** - * Detailed Error Message - */ - DetailedErrorMessage?: __string; - } - export type ErrorDetails = ErrorDetail[]; - export interface Function { - /** - * Arn of the Lambda function. - */ - FunctionArn?: __string; - /** - * Configuration of the function - */ - FunctionConfiguration?: FunctionConfiguration; - /** - * Id of the function in this version. - */ - Id?: __string; - } - export interface FunctionConfiguration { - /** - * Environment of the function configuration - */ - Environment?: FunctionConfigurationEnvironment; - /** - * Execution Arguments - */ - ExecArgs?: __string; - /** - * Executable - */ - Executable?: __string; - /** - * The memory size, in KB, you configured for the function. - */ - MemorySize?: __integer; - /** - * Whether the function is pinned or not. Pinned means the function is long-lived and starts when the core starts. - */ - Pinned?: __boolean; - /** - * The function execution time at which Lambda should terminate the function. This timeout still applies to pinned lambdas for each request. - */ - Timeout?: __integer; - } - export interface FunctionConfigurationEnvironment { - /** - * Environment variables for the lambda function. - */ - Variables?: MapOf__string; - } - export interface FunctionDefinitionVersion { - /** - * Lambda functions in this function definition version. - */ - Functions?: ListOfFunction; - } - export interface GeneralError { - /** - * Error Details - */ - ErrorDetails?: ErrorDetails; - /** - * Message containing information about the error - */ - Message?: __string; - } - export interface GetAssociatedRoleRequest { - /** - * The unique Id of the AWS Greengrass Group - */ - GroupId: __string; - } - export interface GetAssociatedRoleResponse { - /** - * Time when the role was associated for the group. - */ - AssociatedAt?: __string; - /** - * Arn of the role that is associated with the group. - */ - RoleArn?: __string; - } - export interface GetConnectivityInfoRequest { - /** - * Thing Name - */ - ThingName: __string; - } - export interface GetConnectivityInfoResponse { - /** - * Connectivity info list - */ - ConnectivityInfo?: ListOfConnectivityInfo; - /** - * Response Text - */ - Message?: __string; - } - export interface GetCoreDefinitionRequest { - /** - * core definition Id - */ - CoreDefinitionId: __string; - } - export interface GetCoreDefinitionResponse { - /** - * Arn of the definition. - */ - Arn?: __string; - /** - * Timestamp of when the definition was created. - */ - CreationTimestamp?: __string; - /** - * Id of the definition. - */ - Id?: __string; - /** - * Last updated timestamp of the definition. - */ - LastUpdatedTimestamp?: __string; - /** - * Last version of the definition. - */ - LatestVersion?: __string; - /** - * Latest version arn of the definition. - */ - LatestVersionArn?: __string; - /** - * Name of the definition. - */ - Name?: __string; - } - export interface GetCoreDefinitionVersionRequest { - /** - * core definition Id - */ - CoreDefinitionId: __string; - /** - * core definition version Id - */ - CoreDefinitionVersionId: __string; - } - export interface GetCoreDefinitionVersionResponse { - /** - * Arn of the core definition version. - */ - Arn?: __string; - /** - * Timestamp of when the core definition version was created. - */ - CreationTimestamp?: __string; - /** - * Information on definition - */ - Definition?: CoreDefinitionVersion; - /** - * Id of the core definition the version belongs to. - */ - Id?: __string; - /** - * Version of the core definition version. - */ - Version?: __string; - } - export interface GetDeploymentStatusRequest { - /** - * the deployment Id - */ - DeploymentId: __string; - /** - * The unique Id of the AWS Greengrass Group - */ - GroupId: __string; - } - export interface GetDeploymentStatusResponse { - /** - * Status of the deployment. - */ - DeploymentStatus?: __string; - /** - * The type of the deployment. - */ - DeploymentType?: DeploymentType; - /** - * The error Details - */ - ErrorDetails?: ErrorDetails; - /** - * Error Message - */ - ErrorMessage?: __string; - /** - * Last time the deployment status was updated. - */ - UpdatedAt?: __string; - } - export interface GetDeviceDefinitionRequest { - /** - * device definition Id - */ - DeviceDefinitionId: __string; - } - export interface GetDeviceDefinitionResponse { - /** - * Arn of the definition. - */ - Arn?: __string; - /** - * Timestamp of when the definition was created. - */ - CreationTimestamp?: __string; - /** - * Id of the definition. - */ - Id?: __string; - /** - * Last updated timestamp of the definition. - */ - LastUpdatedTimestamp?: __string; - /** - * Last version of the definition. - */ - LatestVersion?: __string; - /** - * Latest version arn of the definition. - */ - LatestVersionArn?: __string; - /** - * Name of the definition. - */ - Name?: __string; - } - export interface GetDeviceDefinitionVersionRequest { - /** - * device definition Id - */ - DeviceDefinitionId: __string; - /** - * device definition version Id - */ - DeviceDefinitionVersionId: __string; - } - export interface GetDeviceDefinitionVersionResponse { - /** - * Arn of the device definition version. - */ - Arn?: __string; - /** - * Timestamp of when the device definition version was created. - */ - CreationTimestamp?: __string; - /** - * Device definition version - */ - Definition?: DeviceDefinitionVersion; - /** - * Id of the device definition the version belongs to. - */ - Id?: __string; - /** - * Version of the device definition version. - */ - Version?: __string; - } - export interface GetFunctionDefinitionRequest { - /** - * the unique Id of the lambda definition - */ - FunctionDefinitionId: __string; - } - export interface GetFunctionDefinitionResponse { - /** - * Arn of the definition. - */ - Arn?: __string; - /** - * Timestamp of when the definition was created. - */ - CreationTimestamp?: __string; - /** - * Id of the definition. - */ - Id?: __string; - /** - * Last updated timestamp of the definition. - */ - LastUpdatedTimestamp?: __string; - /** - * Last version of the definition. - */ - LatestVersion?: __string; - /** - * Latest version arn of the definition. - */ - LatestVersionArn?: __string; - /** - * Name of the definition. - */ - Name?: __string; - } - export interface GetFunctionDefinitionVersionRequest { - /** - * the unique Id of the lambda definition - */ - FunctionDefinitionId: __string; - /** - * Function definition version Id - */ - FunctionDefinitionVersionId: __string; - } - export interface GetFunctionDefinitionVersionResponse { - /** - * Arn of the function definition version. - */ - Arn?: __string; - /** - * Timestamp when the funtion definition version was created. - */ - CreationTimestamp?: __string; - /** - * Information on the definition. - */ - Definition?: FunctionDefinitionVersion; - /** - * Id of the function definition the version belongs to. - */ - Id?: __string; - /** - * Version of the function definition version. - */ - Version?: __string; - } - export interface GetGroupCertificateAuthorityRequest { - /** - * certificate authority Id - */ - CertificateAuthorityId: __string; - /** - * The unique Id of the AWS Greengrass Group - */ - GroupId: __string; - } - export interface GetGroupCertificateAuthorityResponse { - /** - * Arn of the certificate authority for the group. - */ - GroupCertificateAuthorityArn?: __string; - /** - * Id of the certificate authority for the group. - */ - GroupCertificateAuthorityId?: __string; - /** - * PEM encoded certificate for the group. - */ - PemEncodedCertificate?: __string; - } - export interface GetGroupCertificateConfigurationRequest { - /** - * The unique Id of the AWS Greengrass Group - */ - GroupId: __string; - } - export interface GetGroupCertificateConfigurationResponse { - /** - * Amount of time when the certificate authority expires in milliseconds. - */ - CertificateAuthorityExpiryInMilliseconds?: __string; - /** - * Amount of time when the certificate expires in milliseconds. - */ - CertificateExpiryInMilliseconds?: __string; - /** - * Id of the group the certificate configuration belongs to. - */ - GroupId?: __string; - } - export interface GetGroupRequest { - /** - * The unique Id of the AWS Greengrass Group - */ - GroupId: __string; - } - export interface GetGroupResponse { - /** - * Arn of the definition. - */ - Arn?: __string; - /** - * Timestamp of when the definition was created. - */ - CreationTimestamp?: __string; - /** - * Id of the definition. - */ - Id?: __string; - /** - * Last updated timestamp of the definition. - */ - LastUpdatedTimestamp?: __string; - /** - * Last version of the definition. - */ - LatestVersion?: __string; - /** - * Latest version arn of the definition. - */ - LatestVersionArn?: __string; - /** - * Name of the definition. - */ - Name?: __string; - } - export interface GetGroupVersionRequest { - /** - * The unique Id of the AWS Greengrass Group - */ - GroupId: __string; - /** - * Group version Id - */ - GroupVersionId: __string; - } - export interface GetGroupVersionResponse { - /** - * Arn of the group version. - */ - Arn?: __string; - /** - * Timestamp when the group version was created. - */ - CreationTimestamp?: __string; - /** - * Information on the definition - */ - Definition?: GroupVersion; - /** - * Id of the group version. - */ - Id?: __string; - /** - * Unique Id for a version of the Group. - */ - Version?: __string; - } - export interface GetLoggerDefinitionRequest { - /** - * logger definition Id - */ - LoggerDefinitionId: __string; - } - export interface GetLoggerDefinitionResponse { - /** - * Arn of the definition. - */ - Arn?: __string; - /** - * Timestamp of when the definition was created. - */ - CreationTimestamp?: __string; - /** - * Id of the definition. - */ - Id?: __string; - /** - * Last updated timestamp of the definition. - */ - LastUpdatedTimestamp?: __string; - /** - * Last version of the definition. - */ - LatestVersion?: __string; - /** - * Latest version arn of the definition. - */ - LatestVersionArn?: __string; - /** - * Name of the definition. - */ - Name?: __string; - } - export interface GetLoggerDefinitionVersionRequest { - /** - * logger definition Id - */ - LoggerDefinitionId: __string; - /** - * logger definition version Id - */ - LoggerDefinitionVersionId: __string; - } - export interface GetLoggerDefinitionVersionResponse { - /** - * Arn of the logger definition version. - */ - Arn?: __string; - /** - * Timestamp of when the logger definition version was created. - */ - CreationTimestamp?: __string; - /** - * Information on definition - */ - Definition?: LoggerDefinitionVersion; - /** - * Id of the logger definition the version belongs to. - */ - Id?: __string; - /** - * Version of the logger definition version. - */ - Version?: __string; - } - export interface GetServiceRoleForAccountRequest { - } - export interface GetServiceRoleForAccountResponse { - /** - * Time when the service role was associated to the account. - */ - AssociatedAt?: __string; - /** - * Role arn which is associated to the account. - */ - RoleArn?: __string; - } - export interface GetSubscriptionDefinitionRequest { - /** - * subscription definition Id - */ - SubscriptionDefinitionId: __string; - } - export interface GetSubscriptionDefinitionResponse { - /** - * Arn of the definition. - */ - Arn?: __string; - /** - * Timestamp of when the definition was created. - */ - CreationTimestamp?: __string; - /** - * Id of the definition. - */ - Id?: __string; - /** - * Last updated timestamp of the definition. - */ - LastUpdatedTimestamp?: __string; - /** - * Last version of the definition. - */ - LatestVersion?: __string; - /** - * Latest version arn of the definition. - */ - LatestVersionArn?: __string; - /** - * Name of the definition. - */ - Name?: __string; - } - export interface GetSubscriptionDefinitionVersionRequest { - /** - * subscription definition Id - */ - SubscriptionDefinitionId: __string; - /** - * subscription definition version Id - */ - SubscriptionDefinitionVersionId: __string; - } - export interface GetSubscriptionDefinitionVersionResponse { - /** - * Arn of the subscription definition version. - */ - Arn?: __string; - /** - * Timestamp of when the subscription definition version was created. - */ - CreationTimestamp?: __string; - /** - * Information on the definition - */ - Definition?: SubscriptionDefinitionVersion; - /** - * Id of the subscription definition the version belongs to. - */ - Id?: __string; - /** - * Version of the subscription definition version. - */ - Version?: __string; - } - export interface GroupCertificateAuthorityProperties { - /** - * Arn of the certificate authority for the group. - */ - GroupCertificateAuthorityArn?: __string; - /** - * Id of the certificate authority for the group. - */ - GroupCertificateAuthorityId?: __string; - } - export interface GroupCertificateConfiguration { - /** - * Amount of time when the certificate authority expires in milliseconds. - */ - CertificateAuthorityExpiryInMilliseconds?: __string; - /** - * Amount of time when the certificate expires in milliseconds. - */ - CertificateExpiryInMilliseconds?: __string; - /** - * Id of the group the certificate configuration belongs to. - */ - GroupId?: __string; - } - export interface GroupInformation { - /** - * Arn of a group. - */ - Arn?: __string; - /** - * Timestamp of when the group was created. - */ - CreationTimestamp?: __string; - /** - * Id of a group. - */ - Id?: __string; - /** - * Last updated timestamp of the group. - */ - LastUpdatedTimestamp?: __string; - /** - * Last version of the group. - */ - LatestVersion?: __string; - /** - * Latest version arn of the group. - */ - LatestVersionArn?: __string; - /** - * Name of a group. - */ - Name?: __string; - } - export interface GroupVersion { - /** - * Core definition version arn for this group. - */ - CoreDefinitionVersionArn?: __string; - /** - * Device definition version arn for this group. - */ - DeviceDefinitionVersionArn?: __string; - /** - * Function definition version arn for this group. - */ - FunctionDefinitionVersionArn?: __string; - /** - * Logger definitionv ersion arn for this group. - */ - LoggerDefinitionVersionArn?: __string; - /** - * Subscription definition version arn for this group. - */ - SubscriptionDefinitionVersionArn?: __string; - } - export interface ListCoreDefinitionVersionsRequest { - /** - * core definition Id - */ - CoreDefinitionId: __string; - /** - * Specifies the maximum number of list results to be returned in this page - */ - MaxResults?: __string; - /** - * Specifies the pagination token used when iterating through a paginated request - */ - NextToken?: __string; - } - export interface ListCoreDefinitionVersionsResponse { - /** - * The token for the next set of results, or ''null'' if there are no additional results. - */ - NextToken?: __string; - /** - * Versions - */ - Versions?: ListOfVersionInformation; - } - export interface ListCoreDefinitionsRequest { - /** - * Specifies the maximum number of list results to be returned in this page - */ - MaxResults?: __string; - /** - * Specifies the pagination token used when iterating through a paginated request - */ - NextToken?: __string; - } - export interface ListCoreDefinitionsResponse { - /** - * Definitions - */ - Definitions?: ListOfDefinitionInformation; - /** - * The token for the next set of results, or ''null'' if there are no additional results. - */ - NextToken?: __string; - } - export interface ListDefinitionsResponse { - /** - * Definitions - */ - Definitions?: ListOfDefinitionInformation; - /** - * The token for the next set of results, or ''null'' if there are no additional results. - */ - NextToken?: __string; - } - export interface ListDeploymentsRequest { - /** - * The unique Id of the AWS Greengrass Group - */ - GroupId: __string; - /** - * Specifies the maximum number of list results to be returned in this page - */ - MaxResults?: __string; - /** - * Specifies the pagination token used when iterating through a paginated request - */ - NextToken?: __string; - } - export interface ListDeploymentsResponse { - /** - * List of deployments for the requested groups - */ - Deployments?: Deployments; - /** - * The token for the next set of results, or ''null'' if there are no additional results. - */ - NextToken?: __string; - } - export interface ListDeviceDefinitionVersionsRequest { - /** - * device definition Id - */ - DeviceDefinitionId: __string; - /** - * Specifies the maximum number of list results to be returned in this page - */ - MaxResults?: __string; - /** - * Specifies the pagination token used when iterating through a paginated request - */ - NextToken?: __string; - } - export interface ListDeviceDefinitionVersionsResponse { - /** - * The token for the next set of results, or ''null'' if there are no additional results. - */ - NextToken?: __string; - /** - * Versions - */ - Versions?: ListOfVersionInformation; - } - export interface ListDeviceDefinitionsRequest { - /** - * Specifies the maximum number of list results to be returned in this page - */ - MaxResults?: __string; - /** - * Specifies the pagination token used when iterating through a paginated request - */ - NextToken?: __string; - } - export interface ListDeviceDefinitionsResponse { - /** - * Definitions - */ - Definitions?: ListOfDefinitionInformation; - /** - * The token for the next set of results, or ''null'' if there are no additional results. - */ - NextToken?: __string; - } - export interface ListFunctionDefinitionVersionsRequest { - /** - * the unique Id of the lambda definition - */ - FunctionDefinitionId: __string; - /** - * Specifies the maximum number of list results to be returned in this page - */ - MaxResults?: __string; - /** - * Specifies the pagination token used when iterating through a paginated request - */ - NextToken?: __string; - } - export interface ListFunctionDefinitionVersionsResponse { - /** - * The token for the next set of results, or ''null'' if there are no additional results. - */ - NextToken?: __string; - /** - * Versions - */ - Versions?: ListOfVersionInformation; - } - export interface ListFunctionDefinitionsRequest { - /** - * Specifies the maximum number of list results to be returned in this page - */ - MaxResults?: __string; - /** - * Specifies the pagination token used when iterating through a paginated request - */ - NextToken?: __string; - } - export interface ListFunctionDefinitionsResponse { - /** - * Definitions - */ - Definitions?: ListOfDefinitionInformation; - /** - * The token for the next set of results, or ''null'' if there are no additional results. - */ - NextToken?: __string; - } - export interface ListGroupCertificateAuthoritiesRequest { - /** - * The unique Id of the AWS Greengrass Group - */ - GroupId: __string; - } - export interface ListGroupCertificateAuthoritiesResponse { - /** - * List of certificate authorities associated with the group. - */ - GroupCertificateAuthorities?: ListOfGroupCertificateAuthorityProperties; - } - export interface ListGroupVersionsRequest { - /** - * The unique Id of the AWS Greengrass Group - */ - GroupId: __string; - /** - * Specifies the maximum number of list results to be returned in this page - */ - MaxResults?: __string; - /** - * Specifies the pagination token used when iterating through a paginated request - */ - NextToken?: __string; - } - export interface ListGroupVersionsResponse { - /** - * The token for the next set of results, or ''null'' if there are no additional results. - */ - NextToken?: __string; - /** - * Versions - */ - Versions?: ListOfVersionInformation; - } - export interface ListGroupsRequest { - /** - * Specifies the maximum number of list results to be returned in this page - */ - MaxResults?: __string; - /** - * Specifies the pagination token used when iterating through a paginated request - */ - NextToken?: __string; - } - export interface ListGroupsResponse { - /** - * Groups - */ - Groups?: ListOfGroupInformation; - /** - * The token for the next set of results, or ''null'' if there are no additional results. - */ - NextToken?: __string; - } - export interface ListLoggerDefinitionVersionsRequest { - /** - * logger definition Id - */ - LoggerDefinitionId: __string; - /** - * Specifies the maximum number of list results to be returned in this page - */ - MaxResults?: __string; - /** - * Specifies the pagination token used when iterating through a paginated request - */ - NextToken?: __string; - } - export interface ListLoggerDefinitionVersionsResponse { - /** - * The token for the next set of results, or ''null'' if there are no additional results. - */ - NextToken?: __string; - /** - * Versions - */ - Versions?: ListOfVersionInformation; - } - export interface ListLoggerDefinitionsRequest { - /** - * Specifies the maximum number of list results to be returned in this page - */ - MaxResults?: __string; - /** - * Specifies the pagination token used when iterating through a paginated request - */ - NextToken?: __string; - } - export interface ListLoggerDefinitionsResponse { - /** - * Definitions - */ - Definitions?: ListOfDefinitionInformation; - /** - * The token for the next set of results, or ''null'' if there are no additional results. - */ - NextToken?: __string; - } - export type ListOfConnectivityInfo = ConnectivityInfo[]; - export type ListOfCore = Core[]; - export type ListOfDefinitionInformation = DefinitionInformation[]; - export type ListOfDevice = Device[]; - export type ListOfFunction = Function[]; - export type ListOfGroupCertificateAuthorityProperties = GroupCertificateAuthorityProperties[]; - export type ListOfGroupInformation = GroupInformation[]; - export type ListOfLogger = Logger[]; - export type ListOfSubscription = Subscription[]; - export type ListOfVersionInformation = VersionInformation[]; - export interface ListSubscriptionDefinitionVersionsRequest { - /** - * Specifies the maximum number of list results to be returned in this page - */ - MaxResults?: __string; - /** - * Specifies the pagination token used when iterating through a paginated request - */ - NextToken?: __string; - /** - * subscription definition Id - */ - SubscriptionDefinitionId: __string; - } - export interface ListSubscriptionDefinitionVersionsResponse { - /** - * The token for the next set of results, or ''null'' if there are no additional results. - */ - NextToken?: __string; - /** - * Versions - */ - Versions?: ListOfVersionInformation; - } - export interface ListSubscriptionDefinitionsRequest { - /** - * Specifies the maximum number of list results to be returned in this page - */ - MaxResults?: __string; - /** - * Specifies the pagination token used when iterating through a paginated request - */ - NextToken?: __string; - } - export interface ListSubscriptionDefinitionsResponse { - /** - * Definitions - */ - Definitions?: ListOfDefinitionInformation; - /** - * The token for the next set of results, or ''null'' if there are no additional results. - */ - NextToken?: __string; - } - export interface ListVersionsResponse { - /** - * The token for the next set of results, or ''null'' if there are no additional results. - */ - NextToken?: __string; - /** - * Versions - */ - Versions?: ListOfVersionInformation; - } - export interface Logger { - /** - * The component that will be subject to logs - */ - Component?: LoggerComponent; - /** - * Element Id for this entry in the list. - */ - Id?: __string; - /** - * The level of the logs - */ - Level?: LoggerLevel; - /** - * Amount of hardware space, in KB, to use if file system is used for logging purposes. - */ - Space?: __integer; - /** - * The type which will be use for log output - */ - Type?: LoggerType; - } - export type LoggerComponent = "GreengrassSystem"|"Lambda"|string; - export interface LoggerDefinitionVersion { - /** - * List of loggers. - */ - Loggers?: ListOfLogger; - } - export type LoggerLevel = "DEBUG"|"INFO"|"WARN"|"ERROR"|"FATAL"|string; - export type LoggerType = "FileSystem"|"AWSCloudWatch"|string; - export type MapOf__string = {[key: string]: __string}; - export interface ResetDeploymentsRequest { - /** - * The client token used to request idempotent operations. - */ - AmznClientToken?: __string; - /** - * When set to true, perform a best-effort only core reset. - */ - Force?: __boolean; - /** - * The unique Id of the AWS Greengrass Group - */ - GroupId: __string; - } - export interface ResetDeploymentsResponse { - /** - * The arn of the reset deployment. - */ - DeploymentArn?: __string; - /** - * The id of the reset deployment. - */ - DeploymentId?: __string; - } - export interface Subscription { - /** - * Element Id for this entry in the list. - */ - Id?: __string; - /** - * Source of the subscription. Can be a thing arn, lambda arn or word 'cloud' - */ - Source?: __string; - /** - * Subject of the message. - */ - Subject?: __string; - /** - * Where the message is sent to. Can be a thing arn, lambda arn or word 'cloud'. - */ - Target?: __string; - } - export interface SubscriptionDefinitionVersion { - /** - * Subscriptions in the version. - */ - Subscriptions?: ListOfSubscription; - } - export interface UpdateConnectivityInfoRequest { - /** - * Connectivity info list - */ - ConnectivityInfo?: ListOfConnectivityInfo; - /** - * Thing Name - */ - ThingName: __string; - } - export interface UpdateConnectivityInfoResponse { - /** - * Response Text - */ - Message?: __string; - /** - * New Version - */ - Version?: __string; - } - export interface UpdateCoreDefinitionRequest { - /** - * core definition Id - */ - CoreDefinitionId: __string; - /** - * name of the definition - */ - Name?: __string; - } - export interface UpdateCoreDefinitionResponse { - } - export interface UpdateDeviceDefinitionRequest { - /** - * device definition Id - */ - DeviceDefinitionId: __string; - /** - * name of the definition - */ - Name?: __string; - } - export interface UpdateDeviceDefinitionResponse { - } - export interface UpdateFunctionDefinitionRequest { - /** - * the unique Id of the lambda definition - */ - FunctionDefinitionId: __string; - /** - * name of the definition - */ - Name?: __string; - } - export interface UpdateFunctionDefinitionResponse { - } - export interface UpdateGroupCertificateConfigurationRequest { - /** - * Amount of time when the certificate expires in milliseconds. - */ - CertificateExpiryInMilliseconds?: __string; - /** - * The unique Id of the AWS Greengrass Group - */ - GroupId: __string; - } - export interface UpdateGroupCertificateConfigurationResponse { - /** - * Amount of time when the certificate authority expires in milliseconds. - */ - CertificateAuthorityExpiryInMilliseconds?: __string; - /** - * Amount of time when the certificate expires in milliseconds. - */ - CertificateExpiryInMilliseconds?: __string; - /** - * Id of the group the certificate configuration belongs to. - */ - GroupId?: __string; - } - export interface UpdateGroupRequest { - /** - * The unique Id of the AWS Greengrass Group - */ - GroupId: __string; - /** - * name of the definition - */ - Name?: __string; - } - export interface UpdateGroupResponse { - } - export interface UpdateLoggerDefinitionRequest { - /** - * logger definition Id - */ - LoggerDefinitionId: __string; - /** - * name of the definition - */ - Name?: __string; - } - export interface UpdateLoggerDefinitionResponse { - } - export interface UpdateSubscriptionDefinitionRequest { - /** - * name of the definition - */ - Name?: __string; - /** - * subscription definition Id - */ - SubscriptionDefinitionId: __string; - } - export interface UpdateSubscriptionDefinitionResponse { - } - export interface VersionInformation { - /** - * Arn of the version. - */ - Arn?: __string; - /** - * Timestamp of when the version was created. - */ - CreationTimestamp?: __string; - /** - * Id of the resource container. - */ - Id?: __string; - /** - * Unique Id of a version. - */ - Version?: __string; - } - export type __boolean = boolean; - export type __double = number; - export type __integer = number; - export type __string = string; - export type __timestamp = Date; - /** - * A string in YYYY-MM-DD format that represents the latest possible API version that can be used in this service. Specify 'latest' to use the latest possible version. - */ - export type apiVersion = "2017-06-07"|"latest"|string; - export interface ClientApiVersions { - /** - * A string in YYYY-MM-DD format that represents the latest possible API version that can be used in this service. Specify 'latest' to use the latest possible version. - */ - apiVersion?: apiVersion; - } - export type ClientConfiguration = ServiceConfigurationOptions & ClientApiVersions; - /** - * Contains interfaces for use with the Greengrass client. - */ - export import Types = Greengrass; -} -export = Greengrass; diff --git a/workshops/monte-carlo-on-ec2-spot-fleet/src/web/node_modules/aws-sdk/clients/greengrass.js b/workshops/monte-carlo-on-ec2-spot-fleet/src/web/node_modules/aws-sdk/clients/greengrass.js deleted file mode 100644 index f9420ae0..00000000 --- a/workshops/monte-carlo-on-ec2-spot-fleet/src/web/node_modules/aws-sdk/clients/greengrass.js +++ /dev/null @@ -1,17 +0,0 @@ -require('../lib/node_loader'); -var AWS = require('../lib/core'); -var Service = AWS.Service; -var apiLoader = AWS.apiLoader; - -apiLoader.services['greengrass'] = {}; -AWS.Greengrass = Service.defineService('greengrass', ['2017-06-07']); -Object.defineProperty(apiLoader.services['greengrass'], '2017-06-07', { - get: function get() { - var model = require('../apis/greengrass-2017-06-07.min.json'); - return model; - }, - enumerable: true, - configurable: true -}); - -module.exports = AWS.Greengrass; diff --git a/workshops/monte-carlo-on-ec2-spot-fleet/src/web/node_modules/aws-sdk/clients/health.d.ts b/workshops/monte-carlo-on-ec2-spot-fleet/src/web/node_modules/aws-sdk/clients/health.d.ts deleted file mode 100644 index 8a86cd4b..00000000 --- a/workshops/monte-carlo-on-ec2-spot-fleet/src/web/node_modules/aws-sdk/clients/health.d.ts +++ /dev/null @@ -1,516 +0,0 @@ -import {Request} from '../lib/request'; -import {Response} from '../lib/response'; -import {AWSError} from '../lib/error'; -import {Service} from '../lib/service'; -import {ServiceConfigurationOptions} from '../lib/service'; -import {ConfigBase as Config} from '../lib/config'; -interface Blob {} -declare class Health extends Service { - /** - * Constructs a service object. This object has one method for each API operation. - */ - constructor(options?: Health.Types.ClientConfiguration) - config: Config & Health.Types.ClientConfiguration; - /** - * Returns a list of entities that have been affected by the specified events, based on the specified filter criteria. Entities can refer to individual customer resources, groups of customer resources, or any other construct, depending on the AWS service. Events that have impact beyond that of the affected entities, or where the extent of impact is unknown, include at least one entity indicating this. At least one event ARN is required. Results are sorted by the lastUpdatedTime of the entity, starting with the most recent. - */ - describeAffectedEntities(params: Health.Types.DescribeAffectedEntitiesRequest, callback?: (err: AWSError, data: Health.Types.DescribeAffectedEntitiesResponse) => void): Request; - /** - * Returns a list of entities that have been affected by the specified events, based on the specified filter criteria. Entities can refer to individual customer resources, groups of customer resources, or any other construct, depending on the AWS service. Events that have impact beyond that of the affected entities, or where the extent of impact is unknown, include at least one entity indicating this. At least one event ARN is required. Results are sorted by the lastUpdatedTime of the entity, starting with the most recent. - */ - describeAffectedEntities(callback?: (err: AWSError, data: Health.Types.DescribeAffectedEntitiesResponse) => void): Request; - /** - * Returns the number of entities that are affected by each of the specified events. If no events are specified, the counts of all affected entities are returned. - */ - describeEntityAggregates(params: Health.Types.DescribeEntityAggregatesRequest, callback?: (err: AWSError, data: Health.Types.DescribeEntityAggregatesResponse) => void): Request; - /** - * Returns the number of entities that are affected by each of the specified events. If no events are specified, the counts of all affected entities are returned. - */ - describeEntityAggregates(callback?: (err: AWSError, data: Health.Types.DescribeEntityAggregatesResponse) => void): Request; - /** - * Returns the number of events of each event type (issue, scheduled change, and account notification). If no filter is specified, the counts of all events in each category are returned. - */ - describeEventAggregates(params: Health.Types.DescribeEventAggregatesRequest, callback?: (err: AWSError, data: Health.Types.DescribeEventAggregatesResponse) => void): Request; - /** - * Returns the number of events of each event type (issue, scheduled change, and account notification). If no filter is specified, the counts of all events in each category are returned. - */ - describeEventAggregates(callback?: (err: AWSError, data: Health.Types.DescribeEventAggregatesResponse) => void): Request; - /** - * Returns detailed information about one or more specified events. Information includes standard event data (region, service, etc., as returned by DescribeEvents), a detailed event description, and possible additional metadata that depends upon the nature of the event. Affected entities are not included; to retrieve those, use the DescribeAffectedEntities operation. If a specified event cannot be retrieved, an error message is returned for that event. - */ - describeEventDetails(params: Health.Types.DescribeEventDetailsRequest, callback?: (err: AWSError, data: Health.Types.DescribeEventDetailsResponse) => void): Request; - /** - * Returns detailed information about one or more specified events. Information includes standard event data (region, service, etc., as returned by DescribeEvents), a detailed event description, and possible additional metadata that depends upon the nature of the event. Affected entities are not included; to retrieve those, use the DescribeAffectedEntities operation. If a specified event cannot be retrieved, an error message is returned for that event. - */ - describeEventDetails(callback?: (err: AWSError, data: Health.Types.DescribeEventDetailsResponse) => void): Request; - /** - * Returns the event types that meet the specified filter criteria. If no filter criteria are specified, all event types are returned, in no particular order. - */ - describeEventTypes(params: Health.Types.DescribeEventTypesRequest, callback?: (err: AWSError, data: Health.Types.DescribeEventTypesResponse) => void): Request; - /** - * Returns the event types that meet the specified filter criteria. If no filter criteria are specified, all event types are returned, in no particular order. - */ - describeEventTypes(callback?: (err: AWSError, data: Health.Types.DescribeEventTypesResponse) => void): Request; - /** - * Returns information about events that meet the specified filter criteria. Events are returned in a summary form and do not include the detailed description, any additional metadata that depends on the event type, or any affected resources. To retrieve that information, use the DescribeEventDetails and DescribeAffectedEntities operations. If no filter criteria are specified, all events are returned. Results are sorted by lastModifiedTime, starting with the most recent. - */ - describeEvents(params: Health.Types.DescribeEventsRequest, callback?: (err: AWSError, data: Health.Types.DescribeEventsResponse) => void): Request; - /** - * Returns information about events that meet the specified filter criteria. Events are returned in a summary form and do not include the detailed description, any additional metadata that depends on the event type, or any affected resources. To retrieve that information, use the DescribeEventDetails and DescribeAffectedEntities operations. If no filter criteria are specified, all events are returned. Results are sorted by lastModifiedTime, starting with the most recent. - */ - describeEvents(callback?: (err: AWSError, data: Health.Types.DescribeEventsResponse) => void): Request; -} -declare namespace Health { - export interface AffectedEntity { - /** - * The unique identifier for the entity. Format: arn:aws:health:entity-region:aws-account:entity/entity-id . Example: arn:aws:health:us-east-1:111222333444:entity/AVh5GGT7ul1arKr1sE1K - */ - entityArn?: entityArn; - /** - * The unique identifier for the event. Format: arn:aws:health:event-region::event/EVENT_TYPE_PLUS_ID . Example: arn:aws:health:us-east-1::event/AWS_EC2_MAINTENANCE_5331 - */ - eventArn?: eventArn; - /** - * The ID of the affected entity. - */ - entityValue?: entityValue; - /** - * The 12-digit AWS account number that contains the affected entity. - */ - awsAccountId?: accountId; - /** - * The most recent time that the entity was updated. - */ - lastUpdatedTime?: timestamp; - /** - * The most recent status of the entity affected by the event. The possible values are IMPAIRED, UNIMPAIRED, and UNKNOWN. - */ - statusCode?: entityStatusCode; - /** - * A map of entity tags attached to the affected entity. - */ - tags?: tagSet; - } - export interface DateTimeRange { - /** - * The starting date and time of a time range. - */ - from?: timestamp; - /** - * The ending date and time of a time range. - */ - to?: timestamp; - } - export interface DescribeAffectedEntitiesRequest { - /** - * Values to narrow the results returned. At least one event ARN is required. - */ - filter: EntityFilter; - /** - * The locale (language) to return information in. English (en) is the default and the only supported value at this time. - */ - locale?: locale; - /** - * If the results of a search are large, only a portion of the results are returned, and a nextToken pagination token is returned in the response. To retrieve the next batch of results, reissue the search request and include the returned token. When all results have been returned, the response does not contain a pagination token value. - */ - nextToken?: nextToken; - /** - * The maximum number of items to return in one batch, between 10 and 100, inclusive. - */ - maxResults?: maxResults; - } - export interface DescribeAffectedEntitiesResponse { - /** - * The entities that match the filter criteria. - */ - entities?: EntityList; - /** - * If the results of a search are large, only a portion of the results are returned, and a nextToken pagination token is returned in the response. To retrieve the next batch of results, reissue the search request and include the returned token. When all results have been returned, the response does not contain a pagination token value. - */ - nextToken?: nextToken; - } - export interface DescribeEntityAggregatesRequest { - /** - * A list of event ARNs (unique identifiers). For example: "arn:aws:health:us-east-1::event/AWS_EC2_MAINTENANCE_5331", "arn:aws:health:us-west-1::event/AWS_EBS_LOST_VOLUME_xyz" - */ - eventArns?: EventArnsList; - } - export interface DescribeEntityAggregatesResponse { - /** - * The number of entities that are affected by each of the specified events. - */ - entityAggregates?: EntityAggregateList; - } - export interface DescribeEventAggregatesRequest { - /** - * Values to narrow the results returned. - */ - filter?: EventFilter; - /** - * The only currently supported value is eventTypeCategory. - */ - aggregateField: eventAggregateField; - /** - * The maximum number of items to return in one batch, between 10 and 100, inclusive. - */ - maxResults?: maxResults; - /** - * If the results of a search are large, only a portion of the results are returned, and a nextToken pagination token is returned in the response. To retrieve the next batch of results, reissue the search request and include the returned token. When all results have been returned, the response does not contain a pagination token value. - */ - nextToken?: nextToken; - } - export interface DescribeEventAggregatesResponse { - /** - * The number of events in each category that meet the optional filter criteria. - */ - eventAggregates?: EventAggregateList; - /** - * If the results of a search are large, only a portion of the results are returned, and a nextToken pagination token is returned in the response. To retrieve the next batch of results, reissue the search request and include the returned token. When all results have been returned, the response does not contain a pagination token value. - */ - nextToken?: nextToken; - } - export type DescribeEventDetailsFailedSet = EventDetailsErrorItem[]; - export interface DescribeEventDetailsRequest { - /** - * A list of event ARNs (unique identifiers). For example: "arn:aws:health:us-east-1::event/AWS_EC2_MAINTENANCE_5331", "arn:aws:health:us-west-1::event/AWS_EBS_LOST_VOLUME_xyz" - */ - eventArns: eventArnList; - /** - * The locale (language) to return information in. English (en) is the default and the only supported value at this time. - */ - locale?: locale; - } - export interface DescribeEventDetailsResponse { - /** - * Information about the events that could be retrieved. - */ - successfulSet?: DescribeEventDetailsSuccessfulSet; - /** - * Error messages for any events that could not be retrieved. - */ - failedSet?: DescribeEventDetailsFailedSet; - } - export type DescribeEventDetailsSuccessfulSet = EventDetails[]; - export interface DescribeEventTypesRequest { - /** - * Values to narrow the results returned. - */ - filter?: EventTypeFilter; - /** - * The locale (language) to return information in. English (en) is the default and the only supported value at this time. - */ - locale?: locale; - /** - * If the results of a search are large, only a portion of the results are returned, and a nextToken pagination token is returned in the response. To retrieve the next batch of results, reissue the search request and include the returned token. When all results have been returned, the response does not contain a pagination token value. - */ - nextToken?: nextToken; - /** - * The maximum number of items to return in one batch, between 10 and 100, inclusive. - */ - maxResults?: maxResults; - } - export interface DescribeEventTypesResponse { - /** - * A list of event types that match the filter criteria. Event types have a category (issue, accountNotification, or scheduledChange), a service (for example, EC2, RDS, DATAPIPELINE, BILLING), and a code (in the format AWS_SERVICE_DESCRIPTION ; for example, AWS_EC2_SYSTEM_MAINTENANCE_EVENT). - */ - eventTypes?: EventTypeList; - /** - * If the results of a search are large, only a portion of the results are returned, and a nextToken pagination token is returned in the response. To retrieve the next batch of results, reissue the search request and include the returned token. When all results have been returned, the response does not contain a pagination token value. - */ - nextToken?: nextToken; - } - export interface DescribeEventsRequest { - /** - * Values to narrow the results returned. - */ - filter?: EventFilter; - /** - * If the results of a search are large, only a portion of the results are returned, and a nextToken pagination token is returned in the response. To retrieve the next batch of results, reissue the search request and include the returned token. When all results have been returned, the response does not contain a pagination token value. - */ - nextToken?: nextToken; - /** - * The maximum number of items to return in one batch, between 10 and 100, inclusive. - */ - maxResults?: maxResults; - /** - * The locale (language) to return information in. English (en) is the default and the only supported value at this time. - */ - locale?: locale; - } - export interface DescribeEventsResponse { - /** - * The events that match the specified filter criteria. - */ - events?: EventList; - /** - * If the results of a search are large, only a portion of the results are returned, and a nextToken pagination token is returned in the response. To retrieve the next batch of results, reissue the search request and include the returned token. When all results have been returned, the response does not contain a pagination token value. - */ - nextToken?: nextToken; - } - export interface EntityAggregate { - /** - * The unique identifier for the event. Format: arn:aws:health:event-region::event/EVENT_TYPE_PLUS_ID . Example: arn:aws:health:us-east-1::event/AWS_EC2_MAINTENANCE_5331 - */ - eventArn?: eventArn; - /** - * The number entities that match the criteria for the specified events. - */ - count?: count; - } - export type EntityAggregateList = EntityAggregate[]; - export interface EntityFilter { - /** - * A list of event ARNs (unique identifiers). For example: "arn:aws:health:us-east-1::event/AWS_EC2_MAINTENANCE_5331", "arn:aws:health:us-west-1::event/AWS_EBS_LOST_VOLUME_xyz" - */ - eventArns: eventArnList; - /** - * A list of entity ARNs (unique identifiers). - */ - entityArns?: entityArnList; - /** - * A list of IDs for affected entities. - */ - entityValues?: entityValueList; - /** - * A list of the most recent dates and times that the entity was updated. - */ - lastUpdatedTimes?: dateTimeRangeList; - /** - * A map of entity tags attached to the affected entity. - */ - tags?: tagFilter; - /** - * A list of entity status codes (IMPAIRED, UNIMPAIRED, or UNKNOWN). - */ - statusCodes?: entityStatusCodeList; - } - export type EntityList = AffectedEntity[]; - export interface Event { - /** - * The unique identifier for the event. Format: arn:aws:health:event-region::event/EVENT_TYPE_PLUS_ID . Example: arn:aws:health:us-east-1::event/AWS_EC2_MAINTENANCE_5331 - */ - arn?: eventArn; - /** - * The AWS service that is affected by the event. For example, EC2, RDS. - */ - service?: service; - /** - * The unique identifier for the event type. The format is AWS_SERVICE_DESCRIPTION ; for example, AWS_EC2_SYSTEM_MAINTENANCE_EVENT. - */ - eventTypeCode?: eventTypeCode; - /** - * The - */ - eventTypeCategory?: eventTypeCategory; - /** - * The AWS region name of the event. - */ - region?: region; - /** - * The AWS Availability Zone of the event. For example, us-east-1a. - */ - availabilityZone?: availabilityZone; - /** - * The date and time that the event began. - */ - startTime?: timestamp; - /** - * The date and time that the event ended. - */ - endTime?: timestamp; - /** - * The most recent date and time that the event was updated. - */ - lastUpdatedTime?: timestamp; - /** - * The most recent status of the event. Possible values are open, closed, and upcoming. - */ - statusCode?: eventStatusCode; - } - export interface EventAggregate { - /** - * The issue type for the associated count. - */ - aggregateValue?: aggregateValue; - /** - * The number of events of the associated issue type. - */ - count?: count; - } - export type EventAggregateList = EventAggregate[]; - export type EventArnsList = eventArn[]; - export interface EventDescription { - /** - * The most recent description of the event. - */ - latestDescription?: eventDescription; - } - export interface EventDetails { - /** - * Summary information about the event. - */ - event?: Event; - /** - * The most recent description of the event. - */ - eventDescription?: EventDescription; - /** - * Additional metadata about the event. - */ - eventMetadata?: eventMetadata; - } - export interface EventDetailsErrorItem { - /** - * The unique identifier for the event. Format: arn:aws:health:event-region::event/EVENT_TYPE_PLUS_ID . Example: arn:aws:health:us-east-1::event/AWS_EC2_MAINTENANCE_5331 - */ - eventArn?: eventArn; - /** - * The name of the error. - */ - errorName?: string; - /** - * A message that describes the error. - */ - errorMessage?: string; - } - export interface EventFilter { - /** - * A list of event ARNs (unique identifiers). For example: "arn:aws:health:us-east-1::event/AWS_EC2_MAINTENANCE_5331", "arn:aws:health:us-west-1::event/AWS_EBS_LOST_VOLUME_xyz" - */ - eventArns?: eventArnList; - /** - * A list of unique identifiers for event types. For example, "AWS_EC2_SYSTEM_MAINTENANCE_EVENT","AWS_RDS_MAINTENANCE_SCHEDULED" - */ - eventTypeCodes?: eventTypeList; - /** - * The AWS services associated with the event. For example, EC2, RDS. - */ - services?: serviceList; - /** - * A list of AWS regions. - */ - regions?: regionList; - /** - * A list of AWS availability zones. - */ - availabilityZones?: availabilityZones; - /** - * A list of dates and times that the event began. - */ - startTimes?: dateTimeRangeList; - /** - * A list of dates and times that the event ended. - */ - endTimes?: dateTimeRangeList; - /** - * A list of dates and times that the event was last updated. - */ - lastUpdatedTimes?: dateTimeRangeList; - /** - * A list of entity ARNs (unique identifiers). - */ - entityArns?: entityArnList; - /** - * A list of entity identifiers, such as EC2 instance IDs (i-34ab692e) or EBS volumes (vol-426ab23e). - */ - entityValues?: entityValueList; - /** - * A list of event type category codes (issue, scheduledChange, or accountNotification). - */ - eventTypeCategories?: eventTypeCategoryList; - /** - * A map of entity tags attached to the affected entity. - */ - tags?: tagFilter; - /** - * A list of event status codes. - */ - eventStatusCodes?: eventStatusCodeList; - } - export type EventList = Event[]; - export interface EventType { - /** - * The AWS service that is affected by the event. For example, EC2, RDS. - */ - service?: service; - /** - * The unique identifier for the event type. The format is AWS_SERVICE_DESCRIPTION ; for example, AWS_EC2_SYSTEM_MAINTENANCE_EVENT. - */ - code?: eventTypeCode; - /** - * A list of event type category codes (issue, scheduledChange, or accountNotification). - */ - category?: eventTypeCategory; - } - export type EventTypeCategoryList = eventTypeCategory[]; - export type EventTypeCodeList = eventTypeCode[]; - export interface EventTypeFilter { - /** - * A list of event type codes. - */ - eventTypeCodes?: EventTypeCodeList; - /** - * The AWS services associated with the event. For example, EC2, RDS. - */ - services?: serviceList; - /** - * A list of event type category codes (issue, scheduledChange, or accountNotification). - */ - eventTypeCategories?: EventTypeCategoryList; - } - export type EventTypeList = EventType[]; - export type accountId = string; - export type aggregateValue = string; - export type availabilityZone = string; - export type availabilityZones = availabilityZone[]; - export type count = number; - export type dateTimeRangeList = DateTimeRange[]; - export type entityArn = string; - export type entityArnList = entityArn[]; - export type entityStatusCode = "IMPAIRED"|"UNIMPAIRED"|"UNKNOWN"|string; - export type entityStatusCodeList = entityStatusCode[]; - export type entityValue = string; - export type entityValueList = entityValue[]; - export type eventAggregateField = "eventTypeCategory"|string; - export type eventArn = string; - export type eventArnList = eventArn[]; - export type eventDescription = string; - export type eventMetadata = {[key: string]: metadataValue}; - export type eventStatusCode = "open"|"closed"|"upcoming"|string; - export type eventStatusCodeList = eventStatusCode[]; - export type eventType = string; - export type eventTypeCategory = "issue"|"accountNotification"|"scheduledChange"|string; - export type eventTypeCategoryList = eventTypeCategory[]; - export type eventTypeCode = string; - export type eventTypeList = eventType[]; - export type locale = string; - export type maxResults = number; - export type metadataKey = string; - export type metadataValue = string; - export type nextToken = string; - export type region = string; - export type regionList = region[]; - export type service = string; - export type serviceList = service[]; - export type tagFilter = tagSet[]; - export type tagKey = string; - export type tagSet = {[key: string]: tagValue}; - export type tagValue = string; - export type timestamp = Date; - /** - * A string in YYYY-MM-DD format that represents the latest possible API version that can be used in this service. Specify 'latest' to use the latest possible version. - */ - export type apiVersion = "2016-08-04"|"latest"|string; - export interface ClientApiVersions { - /** - * A string in YYYY-MM-DD format that represents the latest possible API version that can be used in this service. Specify 'latest' to use the latest possible version. - */ - apiVersion?: apiVersion; - } - export type ClientConfiguration = ServiceConfigurationOptions & ClientApiVersions; - /** - * Contains interfaces for use with the Health client. - */ - export import Types = Health; -} -export = Health; diff --git a/workshops/monte-carlo-on-ec2-spot-fleet/src/web/node_modules/aws-sdk/clients/health.js b/workshops/monte-carlo-on-ec2-spot-fleet/src/web/node_modules/aws-sdk/clients/health.js deleted file mode 100644 index 30f4deb2..00000000 --- a/workshops/monte-carlo-on-ec2-spot-fleet/src/web/node_modules/aws-sdk/clients/health.js +++ /dev/null @@ -1,18 +0,0 @@ -require('../lib/node_loader'); -var AWS = require('../lib/core'); -var Service = AWS.Service; -var apiLoader = AWS.apiLoader; - -apiLoader.services['health'] = {}; -AWS.Health = Service.defineService('health', ['2016-08-04']); -Object.defineProperty(apiLoader.services['health'], '2016-08-04', { - get: function get() { - var model = require('../apis/health-2016-08-04.min.json'); - model.paginators = require('../apis/health-2016-08-04.paginators.json').pagination; - return model; - }, - enumerable: true, - configurable: true -}); - -module.exports = AWS.Health; diff --git a/workshops/monte-carlo-on-ec2-spot-fleet/src/web/node_modules/aws-sdk/clients/iam.d.ts b/workshops/monte-carlo-on-ec2-spot-fleet/src/web/node_modules/aws-sdk/clients/iam.d.ts deleted file mode 100644 index 5353298b..00000000 --- a/workshops/monte-carlo-on-ec2-spot-fleet/src/web/node_modules/aws-sdk/clients/iam.d.ts +++ /dev/null @@ -1,4017 +0,0 @@ -import {Request} from '../lib/request'; -import {Response} from '../lib/response'; -import {AWSError} from '../lib/error'; -import {Service} from '../lib/service'; -import {ServiceConfigurationOptions} from '../lib/service'; -import {ConfigBase as Config} from '../lib/config'; -interface Blob {} -declare class IAM extends Service { - /** - * Constructs a service object. This object has one method for each API operation. - */ - constructor(options?: IAM.Types.ClientConfiguration) - config: Config & IAM.Types.ClientConfiguration; - /** - * Adds a new client ID (also known as audience) to the list of client IDs already registered for the specified IAM OpenID Connect (OIDC) provider resource. This action is idempotent; it does not fail or return an error if you add an existing client ID to the provider. - */ - addClientIDToOpenIDConnectProvider(params: IAM.Types.AddClientIDToOpenIDConnectProviderRequest, callback?: (err: AWSError, data: {}) => void): Request<{}, AWSError>; - /** - * Adds a new client ID (also known as audience) to the list of client IDs already registered for the specified IAM OpenID Connect (OIDC) provider resource. This action is idempotent; it does not fail or return an error if you add an existing client ID to the provider. - */ - addClientIDToOpenIDConnectProvider(callback?: (err: AWSError, data: {}) => void): Request<{}, AWSError>; - /** - * Adds the specified IAM role to the specified instance profile. An instance profile can contain only one role, and this limit cannot be increased. The caller of this API must be granted the PassRole permission on the IAM role by a permission policy. For more information about roles, go to Working with Roles. For more information about instance profiles, go to About Instance Profiles. - */ - addRoleToInstanceProfile(params: IAM.Types.AddRoleToInstanceProfileRequest, callback?: (err: AWSError, data: {}) => void): Request<{}, AWSError>; - /** - * Adds the specified IAM role to the specified instance profile. An instance profile can contain only one role, and this limit cannot be increased. The caller of this API must be granted the PassRole permission on the IAM role by a permission policy. For more information about roles, go to Working with Roles. For more information about instance profiles, go to About Instance Profiles. - */ - addRoleToInstanceProfile(callback?: (err: AWSError, data: {}) => void): Request<{}, AWSError>; - /** - * Adds the specified user to the specified group. - */ - addUserToGroup(params: IAM.Types.AddUserToGroupRequest, callback?: (err: AWSError, data: {}) => void): Request<{}, AWSError>; - /** - * Adds the specified user to the specified group. - */ - addUserToGroup(callback?: (err: AWSError, data: {}) => void): Request<{}, AWSError>; - /** - * Attaches the specified managed policy to the specified IAM group. You use this API to attach a managed policy to a group. To embed an inline policy in a group, use PutGroupPolicy. For more information about policies, see Managed Policies and Inline Policies in the IAM User Guide. - */ - attachGroupPolicy(params: IAM.Types.AttachGroupPolicyRequest, callback?: (err: AWSError, data: {}) => void): Request<{}, AWSError>; - /** - * Attaches the specified managed policy to the specified IAM group. You use this API to attach a managed policy to a group. To embed an inline policy in a group, use PutGroupPolicy. For more information about policies, see Managed Policies and Inline Policies in the IAM User Guide. - */ - attachGroupPolicy(callback?: (err: AWSError, data: {}) => void): Request<{}, AWSError>; - /** - * Attaches the specified managed policy to the specified IAM role. When you attach a managed policy to a role, the managed policy becomes part of the role's permission (access) policy. You cannot use a managed policy as the role's trust policy. The role's trust policy is created at the same time as the role, using CreateRole. You can update a role's trust policy using UpdateAssumeRolePolicy. Use this API to attach a managed policy to a role. To embed an inline policy in a role, use PutRolePolicy. For more information about policies, see Managed Policies and Inline Policies in the IAM User Guide. - */ - attachRolePolicy(params: IAM.Types.AttachRolePolicyRequest, callback?: (err: AWSError, data: {}) => void): Request<{}, AWSError>; - /** - * Attaches the specified managed policy to the specified IAM role. When you attach a managed policy to a role, the managed policy becomes part of the role's permission (access) policy. You cannot use a managed policy as the role's trust policy. The role's trust policy is created at the same time as the role, using CreateRole. You can update a role's trust policy using UpdateAssumeRolePolicy. Use this API to attach a managed policy to a role. To embed an inline policy in a role, use PutRolePolicy. For more information about policies, see Managed Policies and Inline Policies in the IAM User Guide. - */ - attachRolePolicy(callback?: (err: AWSError, data: {}) => void): Request<{}, AWSError>; - /** - * Attaches the specified managed policy to the specified user. You use this API to attach a managed policy to a user. To embed an inline policy in a user, use PutUserPolicy. For more information about policies, see Managed Policies and Inline Policies in the IAM User Guide. - */ - attachUserPolicy(params: IAM.Types.AttachUserPolicyRequest, callback?: (err: AWSError, data: {}) => void): Request<{}, AWSError>; - /** - * Attaches the specified managed policy to the specified user. You use this API to attach a managed policy to a user. To embed an inline policy in a user, use PutUserPolicy. For more information about policies, see Managed Policies and Inline Policies in the IAM User Guide. - */ - attachUserPolicy(callback?: (err: AWSError, data: {}) => void): Request<{}, AWSError>; - /** - * Changes the password of the IAM user who is calling this action. The root account password is not affected by this action. To change the password for a different user, see UpdateLoginProfile. For more information about modifying passwords, see Managing Passwords in the IAM User Guide. - */ - changePassword(params: IAM.Types.ChangePasswordRequest, callback?: (err: AWSError, data: {}) => void): Request<{}, AWSError>; - /** - * Changes the password of the IAM user who is calling this action. The root account password is not affected by this action. To change the password for a different user, see UpdateLoginProfile. For more information about modifying passwords, see Managing Passwords in the IAM User Guide. - */ - changePassword(callback?: (err: AWSError, data: {}) => void): Request<{}, AWSError>; - /** - * Creates a new AWS secret access key and corresponding AWS access key ID for the specified user. The default status for new keys is Active. If you do not specify a user name, IAM determines the user name implicitly based on the AWS access key ID signing the request. Because this action works for access keys under the AWS account, you can use this action to manage root credentials even if the AWS account has no associated users. For information about limits on the number of keys you can create, see Limitations on IAM Entities in the IAM User Guide. To ensure the security of your AWS account, the secret access key is accessible only during key and user creation. You must save the key (for example, in a text file) if you want to be able to access it again. If a secret key is lost, you can delete the access keys for the associated user and then create new keys. - */ - createAccessKey(params: IAM.Types.CreateAccessKeyRequest, callback?: (err: AWSError, data: IAM.Types.CreateAccessKeyResponse) => void): Request; - /** - * Creates a new AWS secret access key and corresponding AWS access key ID for the specified user. The default status for new keys is Active. If you do not specify a user name, IAM determines the user name implicitly based on the AWS access key ID signing the request. Because this action works for access keys under the AWS account, you can use this action to manage root credentials even if the AWS account has no associated users. For information about limits on the number of keys you can create, see Limitations on IAM Entities in the IAM User Guide. To ensure the security of your AWS account, the secret access key is accessible only during key and user creation. You must save the key (for example, in a text file) if you want to be able to access it again. If a secret key is lost, you can delete the access keys for the associated user and then create new keys. - */ - createAccessKey(callback?: (err: AWSError, data: IAM.Types.CreateAccessKeyResponse) => void): Request; - /** - * Creates an alias for your AWS account. For information about using an AWS account alias, see Using an Alias for Your AWS Account ID in the IAM User Guide. - */ - createAccountAlias(params: IAM.Types.CreateAccountAliasRequest, callback?: (err: AWSError, data: {}) => void): Request<{}, AWSError>; - /** - * Creates an alias for your AWS account. For information about using an AWS account alias, see Using an Alias for Your AWS Account ID in the IAM User Guide. - */ - createAccountAlias(callback?: (err: AWSError, data: {}) => void): Request<{}, AWSError>; - /** - * Creates a new group. For information about the number of groups you can create, see Limitations on IAM Entities in the IAM User Guide. - */ - createGroup(params: IAM.Types.CreateGroupRequest, callback?: (err: AWSError, data: IAM.Types.CreateGroupResponse) => void): Request; - /** - * Creates a new group. For information about the number of groups you can create, see Limitations on IAM Entities in the IAM User Guide. - */ - createGroup(callback?: (err: AWSError, data: IAM.Types.CreateGroupResponse) => void): Request; - /** - * Creates a new instance profile. For information about instance profiles, go to About Instance Profiles. For information about the number of instance profiles you can create, see Limitations on IAM Entities in the IAM User Guide. - */ - createInstanceProfile(params: IAM.Types.CreateInstanceProfileRequest, callback?: (err: AWSError, data: IAM.Types.CreateInstanceProfileResponse) => void): Request; - /** - * Creates a new instance profile. For information about instance profiles, go to About Instance Profiles. For information about the number of instance profiles you can create, see Limitations on IAM Entities in the IAM User Guide. - */ - createInstanceProfile(callback?: (err: AWSError, data: IAM.Types.CreateInstanceProfileResponse) => void): Request; - /** - * Creates a password for the specified user, giving the user the ability to access AWS services through the AWS Management Console. For more information about managing passwords, see Managing Passwords in the IAM User Guide. - */ - createLoginProfile(params: IAM.Types.CreateLoginProfileRequest, callback?: (err: AWSError, data: IAM.Types.CreateLoginProfileResponse) => void): Request; - /** - * Creates a password for the specified user, giving the user the ability to access AWS services through the AWS Management Console. For more information about managing passwords, see Managing Passwords in the IAM User Guide. - */ - createLoginProfile(callback?: (err: AWSError, data: IAM.Types.CreateLoginProfileResponse) => void): Request; - /** - * Creates an IAM entity to describe an identity provider (IdP) that supports OpenID Connect (OIDC). The OIDC provider that you create with this operation can be used as a principal in a role's trust policy to establish a trust relationship between AWS and the OIDC provider. When you create the IAM OIDC provider, you specify the URL of the OIDC identity provider (IdP) to trust, a list of client IDs (also known as audiences) that identify the application or applications that are allowed to authenticate using the OIDC provider, and a list of thumbprints of the server certificate(s) that the IdP uses. You get all of this information from the OIDC IdP that you want to use for access to AWS. Because trust for the OIDC provider is ultimately derived from the IAM provider that this action creates, it is a best practice to limit access to the CreateOpenIDConnectProvider action to highly-privileged users. - */ - createOpenIDConnectProvider(params: IAM.Types.CreateOpenIDConnectProviderRequest, callback?: (err: AWSError, data: IAM.Types.CreateOpenIDConnectProviderResponse) => void): Request; - /** - * Creates an IAM entity to describe an identity provider (IdP) that supports OpenID Connect (OIDC). The OIDC provider that you create with this operation can be used as a principal in a role's trust policy to establish a trust relationship between AWS and the OIDC provider. When you create the IAM OIDC provider, you specify the URL of the OIDC identity provider (IdP) to trust, a list of client IDs (also known as audiences) that identify the application or applications that are allowed to authenticate using the OIDC provider, and a list of thumbprints of the server certificate(s) that the IdP uses. You get all of this information from the OIDC IdP that you want to use for access to AWS. Because trust for the OIDC provider is ultimately derived from the IAM provider that this action creates, it is a best practice to limit access to the CreateOpenIDConnectProvider action to highly-privileged users. - */ - createOpenIDConnectProvider(callback?: (err: AWSError, data: IAM.Types.CreateOpenIDConnectProviderResponse) => void): Request; - /** - * Creates a new managed policy for your AWS account. This operation creates a policy version with a version identifier of v1 and sets v1 as the policy's default version. For more information about policy versions, see Versioning for Managed Policies in the IAM User Guide. For more information about managed policies in general, see Managed Policies and Inline Policies in the IAM User Guide. - */ - createPolicy(params: IAM.Types.CreatePolicyRequest, callback?: (err: AWSError, data: IAM.Types.CreatePolicyResponse) => void): Request; - /** - * Creates a new managed policy for your AWS account. This operation creates a policy version with a version identifier of v1 and sets v1 as the policy's default version. For more information about policy versions, see Versioning for Managed Policies in the IAM User Guide. For more information about managed policies in general, see Managed Policies and Inline Policies in the IAM User Guide. - */ - createPolicy(callback?: (err: AWSError, data: IAM.Types.CreatePolicyResponse) => void): Request; - /** - * Creates a new version of the specified managed policy. To update a managed policy, you create a new policy version. A managed policy can have up to five versions. If the policy has five versions, you must delete an existing version using DeletePolicyVersion before you create a new version. Optionally, you can set the new version as the policy's default version. The default version is the version that is in effect for the IAM users, groups, and roles to which the policy is attached. For more information about managed policy versions, see Versioning for Managed Policies in the IAM User Guide. - */ - createPolicyVersion(params: IAM.Types.CreatePolicyVersionRequest, callback?: (err: AWSError, data: IAM.Types.CreatePolicyVersionResponse) => void): Request; - /** - * Creates a new version of the specified managed policy. To update a managed policy, you create a new policy version. A managed policy can have up to five versions. If the policy has five versions, you must delete an existing version using DeletePolicyVersion before you create a new version. Optionally, you can set the new version as the policy's default version. The default version is the version that is in effect for the IAM users, groups, and roles to which the policy is attached. For more information about managed policy versions, see Versioning for Managed Policies in the IAM User Guide. - */ - createPolicyVersion(callback?: (err: AWSError, data: IAM.Types.CreatePolicyVersionResponse) => void): Request; - /** - * Creates a new role for your AWS account. For more information about roles, go to Working with Roles. For information about limitations on role names and the number of roles you can create, go to Limitations on IAM Entities in the IAM User Guide. - */ - createRole(params: IAM.Types.CreateRoleRequest, callback?: (err: AWSError, data: IAM.Types.CreateRoleResponse) => void): Request; - /** - * Creates a new role for your AWS account. For more information about roles, go to Working with Roles. For information about limitations on role names and the number of roles you can create, go to Limitations on IAM Entities in the IAM User Guide. - */ - createRole(callback?: (err: AWSError, data: IAM.Types.CreateRoleResponse) => void): Request; - /** - * Creates an IAM resource that describes an identity provider (IdP) that supports SAML 2.0. The SAML provider resource that you create with this operation can be used as a principal in an IAM role's trust policy to enable federated users who sign-in using the SAML IdP to assume the role. You can create an IAM role that supports Web-based single sign-on (SSO) to the AWS Management Console or one that supports API access to AWS. When you create the SAML provider resource, you upload an a SAML metadata document that you get from your IdP and that includes the issuer's name, expiration information, and keys that can be used to validate the SAML authentication response (assertions) that the IdP sends. You must generate the metadata document using the identity management software that is used as your organization's IdP. This operation requires Signature Version 4. For more information, see Enabling SAML 2.0 Federated Users to Access the AWS Management Console and About SAML 2.0-based Federation in the IAM User Guide. - */ - createSAMLProvider(params: IAM.Types.CreateSAMLProviderRequest, callback?: (err: AWSError, data: IAM.Types.CreateSAMLProviderResponse) => void): Request; - /** - * Creates an IAM resource that describes an identity provider (IdP) that supports SAML 2.0. The SAML provider resource that you create with this operation can be used as a principal in an IAM role's trust policy to enable federated users who sign-in using the SAML IdP to assume the role. You can create an IAM role that supports Web-based single sign-on (SSO) to the AWS Management Console or one that supports API access to AWS. When you create the SAML provider resource, you upload an a SAML metadata document that you get from your IdP and that includes the issuer's name, expiration information, and keys that can be used to validate the SAML authentication response (assertions) that the IdP sends. You must generate the metadata document using the identity management software that is used as your organization's IdP. This operation requires Signature Version 4. For more information, see Enabling SAML 2.0 Federated Users to Access the AWS Management Console and About SAML 2.0-based Federation in the IAM User Guide. - */ - createSAMLProvider(callback?: (err: AWSError, data: IAM.Types.CreateSAMLProviderResponse) => void): Request; - /** - * Creates an IAM role that is linked to a specific AWS service. The service controls the attached policies and when the role can be deleted. This helps ensure that the service is not broken by an unexpectedly changed or deleted role, which could put your AWS resources into an unknown state. Allowing the service to control the role helps improve service stability and proper cleanup when a service and its role are no longer needed. The name of the role is autogenerated by combining the string that you specify for the AWSServiceName parameter with the string that you specify for the CustomSuffix parameter. The resulting name must be unique in your account or the request fails. To attach a policy to this service-linked role, you must make the request using the AWS service that depends on this role. - */ - createServiceLinkedRole(params: IAM.Types.CreateServiceLinkedRoleRequest, callback?: (err: AWSError, data: IAM.Types.CreateServiceLinkedRoleResponse) => void): Request; - /** - * Creates an IAM role that is linked to a specific AWS service. The service controls the attached policies and when the role can be deleted. This helps ensure that the service is not broken by an unexpectedly changed or deleted role, which could put your AWS resources into an unknown state. Allowing the service to control the role helps improve service stability and proper cleanup when a service and its role are no longer needed. The name of the role is autogenerated by combining the string that you specify for the AWSServiceName parameter with the string that you specify for the CustomSuffix parameter. The resulting name must be unique in your account or the request fails. To attach a policy to this service-linked role, you must make the request using the AWS service that depends on this role. - */ - createServiceLinkedRole(callback?: (err: AWSError, data: IAM.Types.CreateServiceLinkedRoleResponse) => void): Request; - /** - * Generates a set of credentials consisting of a user name and password that can be used to access the service specified in the request. These credentials are generated by IAM, and can be used only for the specified service. You can have a maximum of two sets of service-specific credentials for each supported service per user. The only supported service at this time is AWS CodeCommit. You can reset the password to a new service-generated value by calling ResetServiceSpecificCredential. For more information about service-specific credentials, see Using IAM with AWS CodeCommit: Git Credentials, SSH Keys, and AWS Access Keys in the IAM User Guide. - */ - createServiceSpecificCredential(params: IAM.Types.CreateServiceSpecificCredentialRequest, callback?: (err: AWSError, data: IAM.Types.CreateServiceSpecificCredentialResponse) => void): Request; - /** - * Generates a set of credentials consisting of a user name and password that can be used to access the service specified in the request. These credentials are generated by IAM, and can be used only for the specified service. You can have a maximum of two sets of service-specific credentials for each supported service per user. The only supported service at this time is AWS CodeCommit. You can reset the password to a new service-generated value by calling ResetServiceSpecificCredential. For more information about service-specific credentials, see Using IAM with AWS CodeCommit: Git Credentials, SSH Keys, and AWS Access Keys in the IAM User Guide. - */ - createServiceSpecificCredential(callback?: (err: AWSError, data: IAM.Types.CreateServiceSpecificCredentialResponse) => void): Request; - /** - * Creates a new IAM user for your AWS account. For information about limitations on the number of IAM users you can create, see Limitations on IAM Entities in the IAM User Guide. - */ - createUser(params: IAM.Types.CreateUserRequest, callback?: (err: AWSError, data: IAM.Types.CreateUserResponse) => void): Request; - /** - * Creates a new IAM user for your AWS account. For information about limitations on the number of IAM users you can create, see Limitations on IAM Entities in the IAM User Guide. - */ - createUser(callback?: (err: AWSError, data: IAM.Types.CreateUserResponse) => void): Request; - /** - * Creates a new virtual MFA device for the AWS account. After creating the virtual MFA, use EnableMFADevice to attach the MFA device to an IAM user. For more information about creating and working with virtual MFA devices, go to Using a Virtual MFA Device in the IAM User Guide. For information about limits on the number of MFA devices you can create, see Limitations on Entities in the IAM User Guide. The seed information contained in the QR code and the Base32 string should be treated like any other secret access information, such as your AWS access keys or your passwords. After you provision your virtual device, you should ensure that the information is destroyed following secure procedures. - */ - createVirtualMFADevice(params: IAM.Types.CreateVirtualMFADeviceRequest, callback?: (err: AWSError, data: IAM.Types.CreateVirtualMFADeviceResponse) => void): Request; - /** - * Creates a new virtual MFA device for the AWS account. After creating the virtual MFA, use EnableMFADevice to attach the MFA device to an IAM user. For more information about creating and working with virtual MFA devices, go to Using a Virtual MFA Device in the IAM User Guide. For information about limits on the number of MFA devices you can create, see Limitations on Entities in the IAM User Guide. The seed information contained in the QR code and the Base32 string should be treated like any other secret access information, such as your AWS access keys or your passwords. After you provision your virtual device, you should ensure that the information is destroyed following secure procedures. - */ - createVirtualMFADevice(callback?: (err: AWSError, data: IAM.Types.CreateVirtualMFADeviceResponse) => void): Request; - /** - * Deactivates the specified MFA device and removes it from association with the user name for which it was originally enabled. For more information about creating and working with virtual MFA devices, go to Using a Virtual MFA Device in the IAM User Guide. - */ - deactivateMFADevice(params: IAM.Types.DeactivateMFADeviceRequest, callback?: (err: AWSError, data: {}) => void): Request<{}, AWSError>; - /** - * Deactivates the specified MFA device and removes it from association with the user name for which it was originally enabled. For more information about creating and working with virtual MFA devices, go to Using a Virtual MFA Device in the IAM User Guide. - */ - deactivateMFADevice(callback?: (err: AWSError, data: {}) => void): Request<{}, AWSError>; - /** - * Deletes the access key pair associated with the specified IAM user. If you do not specify a user name, IAM determines the user name implicitly based on the AWS access key ID signing the request. Because this action works for access keys under the AWS account, you can use this action to manage root credentials even if the AWS account has no associated users. - */ - deleteAccessKey(params: IAM.Types.DeleteAccessKeyRequest, callback?: (err: AWSError, data: {}) => void): Request<{}, AWSError>; - /** - * Deletes the access key pair associated with the specified IAM user. If you do not specify a user name, IAM determines the user name implicitly based on the AWS access key ID signing the request. Because this action works for access keys under the AWS account, you can use this action to manage root credentials even if the AWS account has no associated users. - */ - deleteAccessKey(callback?: (err: AWSError, data: {}) => void): Request<{}, AWSError>; - /** - * Deletes the specified AWS account alias. For information about using an AWS account alias, see Using an Alias for Your AWS Account ID in the IAM User Guide. - */ - deleteAccountAlias(params: IAM.Types.DeleteAccountAliasRequest, callback?: (err: AWSError, data: {}) => void): Request<{}, AWSError>; - /** - * Deletes the specified AWS account alias. For information about using an AWS account alias, see Using an Alias for Your AWS Account ID in the IAM User Guide. - */ - deleteAccountAlias(callback?: (err: AWSError, data: {}) => void): Request<{}, AWSError>; - /** - * Deletes the password policy for the AWS account. There are no parameters. - */ - deleteAccountPasswordPolicy(callback?: (err: AWSError, data: {}) => void): Request<{}, AWSError>; - /** - * Deletes the specified IAM group. The group must not contain any users or have any attached policies. - */ - deleteGroup(params: IAM.Types.DeleteGroupRequest, callback?: (err: AWSError, data: {}) => void): Request<{}, AWSError>; - /** - * Deletes the specified IAM group. The group must not contain any users or have any attached policies. - */ - deleteGroup(callback?: (err: AWSError, data: {}) => void): Request<{}, AWSError>; - /** - * Deletes the specified inline policy that is embedded in the specified IAM group. A group can also have managed policies attached to it. To detach a managed policy from a group, use DetachGroupPolicy. For more information about policies, refer to Managed Policies and Inline Policies in the IAM User Guide. - */ - deleteGroupPolicy(params: IAM.Types.DeleteGroupPolicyRequest, callback?: (err: AWSError, data: {}) => void): Request<{}, AWSError>; - /** - * Deletes the specified inline policy that is embedded in the specified IAM group. A group can also have managed policies attached to it. To detach a managed policy from a group, use DetachGroupPolicy. For more information about policies, refer to Managed Policies and Inline Policies in the IAM User Guide. - */ - deleteGroupPolicy(callback?: (err: AWSError, data: {}) => void): Request<{}, AWSError>; - /** - * Deletes the specified instance profile. The instance profile must not have an associated role. Make sure you do not have any Amazon EC2 instances running with the instance profile you are about to delete. Deleting a role or instance profile that is associated with a running instance will break any applications running on the instance. For more information about instance profiles, go to About Instance Profiles. - */ - deleteInstanceProfile(params: IAM.Types.DeleteInstanceProfileRequest, callback?: (err: AWSError, data: {}) => void): Request<{}, AWSError>; - /** - * Deletes the specified instance profile. The instance profile must not have an associated role. Make sure you do not have any Amazon EC2 instances running with the instance profile you are about to delete. Deleting a role or instance profile that is associated with a running instance will break any applications running on the instance. For more information about instance profiles, go to About Instance Profiles. - */ - deleteInstanceProfile(callback?: (err: AWSError, data: {}) => void): Request<{}, AWSError>; - /** - * Deletes the password for the specified IAM user, which terminates the user's ability to access AWS services through the AWS Management Console. Deleting a user's password does not prevent a user from accessing AWS through the command line interface or the API. To prevent all user access you must also either make any access keys inactive or delete them. For more information about making keys inactive or deleting them, see UpdateAccessKey and DeleteAccessKey. - */ - deleteLoginProfile(params: IAM.Types.DeleteLoginProfileRequest, callback?: (err: AWSError, data: {}) => void): Request<{}, AWSError>; - /** - * Deletes the password for the specified IAM user, which terminates the user's ability to access AWS services through the AWS Management Console. Deleting a user's password does not prevent a user from accessing AWS through the command line interface or the API. To prevent all user access you must also either make any access keys inactive or delete them. For more information about making keys inactive or deleting them, see UpdateAccessKey and DeleteAccessKey. - */ - deleteLoginProfile(callback?: (err: AWSError, data: {}) => void): Request<{}, AWSError>; - /** - * Deletes an OpenID Connect identity provider (IdP) resource object in IAM. Deleting an IAM OIDC provider resource does not update any roles that reference the provider as a principal in their trust policies. Any attempt to assume a role that references a deleted provider fails. This action is idempotent; it does not fail or return an error if you call the action for a provider that does not exist. - */ - deleteOpenIDConnectProvider(params: IAM.Types.DeleteOpenIDConnectProviderRequest, callback?: (err: AWSError, data: {}) => void): Request<{}, AWSError>; - /** - * Deletes an OpenID Connect identity provider (IdP) resource object in IAM. Deleting an IAM OIDC provider resource does not update any roles that reference the provider as a principal in their trust policies. Any attempt to assume a role that references a deleted provider fails. This action is idempotent; it does not fail or return an error if you call the action for a provider that does not exist. - */ - deleteOpenIDConnectProvider(callback?: (err: AWSError, data: {}) => void): Request<{}, AWSError>; - /** - * Deletes the specified managed policy. Before you can delete a managed policy, you must first detach the policy from all users, groups, and roles that it is attached to, and you must delete all of the policy's versions. The following steps describe the process for deleting a managed policy: Detach the policy from all users, groups, and roles that the policy is attached to, using the DetachUserPolicy, DetachGroupPolicy, or DetachRolePolicy APIs. To list all the users, groups, and roles that a policy is attached to, use ListEntitiesForPolicy. Delete all versions of the policy using DeletePolicyVersion. To list the policy's versions, use ListPolicyVersions. You cannot use DeletePolicyVersion to delete the version that is marked as the default version. You delete the policy's default version in the next step of the process. Delete the policy (this automatically deletes the policy's default version) using this API. For information about managed policies, see Managed Policies and Inline Policies in the IAM User Guide. - */ - deletePolicy(params: IAM.Types.DeletePolicyRequest, callback?: (err: AWSError, data: {}) => void): Request<{}, AWSError>; - /** - * Deletes the specified managed policy. Before you can delete a managed policy, you must first detach the policy from all users, groups, and roles that it is attached to, and you must delete all of the policy's versions. The following steps describe the process for deleting a managed policy: Detach the policy from all users, groups, and roles that the policy is attached to, using the DetachUserPolicy, DetachGroupPolicy, or DetachRolePolicy APIs. To list all the users, groups, and roles that a policy is attached to, use ListEntitiesForPolicy. Delete all versions of the policy using DeletePolicyVersion. To list the policy's versions, use ListPolicyVersions. You cannot use DeletePolicyVersion to delete the version that is marked as the default version. You delete the policy's default version in the next step of the process. Delete the policy (this automatically deletes the policy's default version) using this API. For information about managed policies, see Managed Policies and Inline Policies in the IAM User Guide. - */ - deletePolicy(callback?: (err: AWSError, data: {}) => void): Request<{}, AWSError>; - /** - * Deletes the specified version from the specified managed policy. You cannot delete the default version from a policy using this API. To delete the default version from a policy, use DeletePolicy. To find out which version of a policy is marked as the default version, use ListPolicyVersions. For information about versions for managed policies, see Versioning for Managed Policies in the IAM User Guide. - */ - deletePolicyVersion(params: IAM.Types.DeletePolicyVersionRequest, callback?: (err: AWSError, data: {}) => void): Request<{}, AWSError>; - /** - * Deletes the specified version from the specified managed policy. You cannot delete the default version from a policy using this API. To delete the default version from a policy, use DeletePolicy. To find out which version of a policy is marked as the default version, use ListPolicyVersions. For information about versions for managed policies, see Versioning for Managed Policies in the IAM User Guide. - */ - deletePolicyVersion(callback?: (err: AWSError, data: {}) => void): Request<{}, AWSError>; - /** - * Deletes the specified role. The role must not have any policies attached. For more information about roles, go to Working with Roles. Make sure you do not have any Amazon EC2 instances running with the role you are about to delete. Deleting a role or instance profile that is associated with a running instance will break any applications running on the instance. - */ - deleteRole(params: IAM.Types.DeleteRoleRequest, callback?: (err: AWSError, data: {}) => void): Request<{}, AWSError>; - /** - * Deletes the specified role. The role must not have any policies attached. For more information about roles, go to Working with Roles. Make sure you do not have any Amazon EC2 instances running with the role you are about to delete. Deleting a role or instance profile that is associated with a running instance will break any applications running on the instance. - */ - deleteRole(callback?: (err: AWSError, data: {}) => void): Request<{}, AWSError>; - /** - * Deletes the specified inline policy that is embedded in the specified IAM role. A role can also have managed policies attached to it. To detach a managed policy from a role, use DetachRolePolicy. For more information about policies, refer to Managed Policies and Inline Policies in the IAM User Guide. - */ - deleteRolePolicy(params: IAM.Types.DeleteRolePolicyRequest, callback?: (err: AWSError, data: {}) => void): Request<{}, AWSError>; - /** - * Deletes the specified inline policy that is embedded in the specified IAM role. A role can also have managed policies attached to it. To detach a managed policy from a role, use DetachRolePolicy. For more information about policies, refer to Managed Policies and Inline Policies in the IAM User Guide. - */ - deleteRolePolicy(callback?: (err: AWSError, data: {}) => void): Request<{}, AWSError>; - /** - * Deletes a SAML provider resource in IAM. Deleting the provider resource from IAM does not update any roles that reference the SAML provider resource's ARN as a principal in their trust policies. Any attempt to assume a role that references a non-existent provider resource ARN fails. This operation requires Signature Version 4. - */ - deleteSAMLProvider(params: IAM.Types.DeleteSAMLProviderRequest, callback?: (err: AWSError, data: {}) => void): Request<{}, AWSError>; - /** - * Deletes a SAML provider resource in IAM. Deleting the provider resource from IAM does not update any roles that reference the SAML provider resource's ARN as a principal in their trust policies. Any attempt to assume a role that references a non-existent provider resource ARN fails. This operation requires Signature Version 4. - */ - deleteSAMLProvider(callback?: (err: AWSError, data: {}) => void): Request<{}, AWSError>; - /** - * Deletes the specified SSH public key. The SSH public key deleted by this action is used only for authenticating the associated IAM user to an AWS CodeCommit repository. For more information about using SSH keys to authenticate to an AWS CodeCommit repository, see Set up AWS CodeCommit for SSH Connections in the AWS CodeCommit User Guide. - */ - deleteSSHPublicKey(params: IAM.Types.DeleteSSHPublicKeyRequest, callback?: (err: AWSError, data: {}) => void): Request<{}, AWSError>; - /** - * Deletes the specified SSH public key. The SSH public key deleted by this action is used only for authenticating the associated IAM user to an AWS CodeCommit repository. For more information about using SSH keys to authenticate to an AWS CodeCommit repository, see Set up AWS CodeCommit for SSH Connections in the AWS CodeCommit User Guide. - */ - deleteSSHPublicKey(callback?: (err: AWSError, data: {}) => void): Request<{}, AWSError>; - /** - * Deletes the specified server certificate. For more information about working with server certificates, including a list of AWS services that can use the server certificates that you manage with IAM, go to Working with Server Certificates in the IAM User Guide. If you are using a server certificate with Elastic Load Balancing, deleting the certificate could have implications for your application. If Elastic Load Balancing doesn't detect the deletion of bound certificates, it may continue to use the certificates. This could cause Elastic Load Balancing to stop accepting traffic. We recommend that you remove the reference to the certificate from Elastic Load Balancing before using this command to delete the certificate. For more information, go to DeleteLoadBalancerListeners in the Elastic Load Balancing API Reference. - */ - deleteServerCertificate(params: IAM.Types.DeleteServerCertificateRequest, callback?: (err: AWSError, data: {}) => void): Request<{}, AWSError>; - /** - * Deletes the specified server certificate. For more information about working with server certificates, including a list of AWS services that can use the server certificates that you manage with IAM, go to Working with Server Certificates in the IAM User Guide. If you are using a server certificate with Elastic Load Balancing, deleting the certificate could have implications for your application. If Elastic Load Balancing doesn't detect the deletion of bound certificates, it may continue to use the certificates. This could cause Elastic Load Balancing to stop accepting traffic. We recommend that you remove the reference to the certificate from Elastic Load Balancing before using this command to delete the certificate. For more information, go to DeleteLoadBalancerListeners in the Elastic Load Balancing API Reference. - */ - deleteServerCertificate(callback?: (err: AWSError, data: {}) => void): Request<{}, AWSError>; - /** - * Submits a service-linked role deletion request and returns a DeletionTaskId, which you can use to check the status of the deletion. Before you call this operation, confirm that the role has no active sessions and that any resources used by the role in the linked service are deleted. If you call this operation more than once for the same service-linked role and an earlier deletion task is not complete, then the DeletionTaskId of the earlier request is returned. If you submit a deletion request for a service-linked role whose linked service is still accessing a resource, then the deletion task fails. If it fails, the GetServiceLinkedRoleDeletionStatus API operation returns the reason for the failure, including the resources that must be deleted. To delete the service-linked role, you must first remove those resources from the linked service and then submit the deletion request again. Resources are specific to the service that is linked to the role. For more information about removing resources from a service, see the AWS documentation for your service. For more information about service-linked roles, see Roles Terms and Concepts: AWS Service-Linked Role in the IAM User Guide. - */ - deleteServiceLinkedRole(params: IAM.Types.DeleteServiceLinkedRoleRequest, callback?: (err: AWSError, data: IAM.Types.DeleteServiceLinkedRoleResponse) => void): Request; - /** - * Submits a service-linked role deletion request and returns a DeletionTaskId, which you can use to check the status of the deletion. Before you call this operation, confirm that the role has no active sessions and that any resources used by the role in the linked service are deleted. If you call this operation more than once for the same service-linked role and an earlier deletion task is not complete, then the DeletionTaskId of the earlier request is returned. If you submit a deletion request for a service-linked role whose linked service is still accessing a resource, then the deletion task fails. If it fails, the GetServiceLinkedRoleDeletionStatus API operation returns the reason for the failure, including the resources that must be deleted. To delete the service-linked role, you must first remove those resources from the linked service and then submit the deletion request again. Resources are specific to the service that is linked to the role. For more information about removing resources from a service, see the AWS documentation for your service. For more information about service-linked roles, see Roles Terms and Concepts: AWS Service-Linked Role in the IAM User Guide. - */ - deleteServiceLinkedRole(callback?: (err: AWSError, data: IAM.Types.DeleteServiceLinkedRoleResponse) => void): Request; - /** - * Deletes the specified service-specific credential. - */ - deleteServiceSpecificCredential(params: IAM.Types.DeleteServiceSpecificCredentialRequest, callback?: (err: AWSError, data: {}) => void): Request<{}, AWSError>; - /** - * Deletes the specified service-specific credential. - */ - deleteServiceSpecificCredential(callback?: (err: AWSError, data: {}) => void): Request<{}, AWSError>; - /** - * Deletes a signing certificate associated with the specified IAM user. If you do not specify a user name, IAM determines the user name implicitly based on the AWS access key ID signing the request. Because this action works for access keys under the AWS account, you can use this action to manage root credentials even if the AWS account has no associated IAM users. - */ - deleteSigningCertificate(params: IAM.Types.DeleteSigningCertificateRequest, callback?: (err: AWSError, data: {}) => void): Request<{}, AWSError>; - /** - * Deletes a signing certificate associated with the specified IAM user. If you do not specify a user name, IAM determines the user name implicitly based on the AWS access key ID signing the request. Because this action works for access keys under the AWS account, you can use this action to manage root credentials even if the AWS account has no associated IAM users. - */ - deleteSigningCertificate(callback?: (err: AWSError, data: {}) => void): Request<{}, AWSError>; - /** - * Deletes the specified IAM user. The user must not belong to any groups or have any access keys, signing certificates, or attached policies. - */ - deleteUser(params: IAM.Types.DeleteUserRequest, callback?: (err: AWSError, data: {}) => void): Request<{}, AWSError>; - /** - * Deletes the specified IAM user. The user must not belong to any groups or have any access keys, signing certificates, or attached policies. - */ - deleteUser(callback?: (err: AWSError, data: {}) => void): Request<{}, AWSError>; - /** - * Deletes the specified inline policy that is embedded in the specified IAM user. A user can also have managed policies attached to it. To detach a managed policy from a user, use DetachUserPolicy. For more information about policies, refer to Managed Policies and Inline Policies in the IAM User Guide. - */ - deleteUserPolicy(params: IAM.Types.DeleteUserPolicyRequest, callback?: (err: AWSError, data: {}) => void): Request<{}, AWSError>; - /** - * Deletes the specified inline policy that is embedded in the specified IAM user. A user can also have managed policies attached to it. To detach a managed policy from a user, use DetachUserPolicy. For more information about policies, refer to Managed Policies and Inline Policies in the IAM User Guide. - */ - deleteUserPolicy(callback?: (err: AWSError, data: {}) => void): Request<{}, AWSError>; - /** - * Deletes a virtual MFA device. You must deactivate a user's virtual MFA device before you can delete it. For information about deactivating MFA devices, see DeactivateMFADevice. - */ - deleteVirtualMFADevice(params: IAM.Types.DeleteVirtualMFADeviceRequest, callback?: (err: AWSError, data: {}) => void): Request<{}, AWSError>; - /** - * Deletes a virtual MFA device. You must deactivate a user's virtual MFA device before you can delete it. For information about deactivating MFA devices, see DeactivateMFADevice. - */ - deleteVirtualMFADevice(callback?: (err: AWSError, data: {}) => void): Request<{}, AWSError>; - /** - * Removes the specified managed policy from the specified IAM group. A group can also have inline policies embedded with it. To delete an inline policy, use the DeleteGroupPolicy API. For information about policies, see Managed Policies and Inline Policies in the IAM User Guide. - */ - detachGroupPolicy(params: IAM.Types.DetachGroupPolicyRequest, callback?: (err: AWSError, data: {}) => void): Request<{}, AWSError>; - /** - * Removes the specified managed policy from the specified IAM group. A group can also have inline policies embedded with it. To delete an inline policy, use the DeleteGroupPolicy API. For information about policies, see Managed Policies and Inline Policies in the IAM User Guide. - */ - detachGroupPolicy(callback?: (err: AWSError, data: {}) => void): Request<{}, AWSError>; - /** - * Removes the specified managed policy from the specified role. A role can also have inline policies embedded with it. To delete an inline policy, use the DeleteRolePolicy API. For information about policies, see Managed Policies and Inline Policies in the IAM User Guide. - */ - detachRolePolicy(params: IAM.Types.DetachRolePolicyRequest, callback?: (err: AWSError, data: {}) => void): Request<{}, AWSError>; - /** - * Removes the specified managed policy from the specified role. A role can also have inline policies embedded with it. To delete an inline policy, use the DeleteRolePolicy API. For information about policies, see Managed Policies and Inline Policies in the IAM User Guide. - */ - detachRolePolicy(callback?: (err: AWSError, data: {}) => void): Request<{}, AWSError>; - /** - * Removes the specified managed policy from the specified user. A user can also have inline policies embedded with it. To delete an inline policy, use the DeleteUserPolicy API. For information about policies, see Managed Policies and Inline Policies in the IAM User Guide. - */ - detachUserPolicy(params: IAM.Types.DetachUserPolicyRequest, callback?: (err: AWSError, data: {}) => void): Request<{}, AWSError>; - /** - * Removes the specified managed policy from the specified user. A user can also have inline policies embedded with it. To delete an inline policy, use the DeleteUserPolicy API. For information about policies, see Managed Policies and Inline Policies in the IAM User Guide. - */ - detachUserPolicy(callback?: (err: AWSError, data: {}) => void): Request<{}, AWSError>; - /** - * Enables the specified MFA device and associates it with the specified IAM user. When enabled, the MFA device is required for every subsequent login by the IAM user associated with the device. - */ - enableMFADevice(params: IAM.Types.EnableMFADeviceRequest, callback?: (err: AWSError, data: {}) => void): Request<{}, AWSError>; - /** - * Enables the specified MFA device and associates it with the specified IAM user. When enabled, the MFA device is required for every subsequent login by the IAM user associated with the device. - */ - enableMFADevice(callback?: (err: AWSError, data: {}) => void): Request<{}, AWSError>; - /** - * Generates a credential report for the AWS account. For more information about the credential report, see Getting Credential Reports in the IAM User Guide. - */ - generateCredentialReport(callback?: (err: AWSError, data: IAM.Types.GenerateCredentialReportResponse) => void): Request; - /** - * Retrieves information about when the specified access key was last used. The information includes the date and time of last use, along with the AWS service and region that were specified in the last request made with that key. - */ - getAccessKeyLastUsed(params: IAM.Types.GetAccessKeyLastUsedRequest, callback?: (err: AWSError, data: IAM.Types.GetAccessKeyLastUsedResponse) => void): Request; - /** - * Retrieves information about when the specified access key was last used. The information includes the date and time of last use, along with the AWS service and region that were specified in the last request made with that key. - */ - getAccessKeyLastUsed(callback?: (err: AWSError, data: IAM.Types.GetAccessKeyLastUsedResponse) => void): Request; - /** - * Retrieves information about all IAM users, groups, roles, and policies in your AWS account, including their relationships to one another. Use this API to obtain a snapshot of the configuration of IAM permissions (users, groups, roles, and policies) in your account. You can optionally filter the results using the Filter parameter. You can paginate the results using the MaxItems and Marker parameters. - */ - getAccountAuthorizationDetails(params: IAM.Types.GetAccountAuthorizationDetailsRequest, callback?: (err: AWSError, data: IAM.Types.GetAccountAuthorizationDetailsResponse) => void): Request; - /** - * Retrieves information about all IAM users, groups, roles, and policies in your AWS account, including their relationships to one another. Use this API to obtain a snapshot of the configuration of IAM permissions (users, groups, roles, and policies) in your account. You can optionally filter the results using the Filter parameter. You can paginate the results using the MaxItems and Marker parameters. - */ - getAccountAuthorizationDetails(callback?: (err: AWSError, data: IAM.Types.GetAccountAuthorizationDetailsResponse) => void): Request; - /** - * Retrieves the password policy for the AWS account. For more information about using a password policy, go to Managing an IAM Password Policy. - */ - getAccountPasswordPolicy(callback?: (err: AWSError, data: IAM.Types.GetAccountPasswordPolicyResponse) => void): Request; - /** - * Retrieves information about IAM entity usage and IAM quotas in the AWS account. For information about limitations on IAM entities, see Limitations on IAM Entities in the IAM User Guide. - */ - getAccountSummary(callback?: (err: AWSError, data: IAM.Types.GetAccountSummaryResponse) => void): Request; - /** - * Gets a list of all of the context keys referenced in the input policies. The policies are supplied as a list of one or more strings. To get the context keys from policies associated with an IAM user, group, or role, use GetContextKeysForPrincipalPolicy. Context keys are variables maintained by AWS and its services that provide details about the context of an API query request, and can be evaluated by testing against a value specified in an IAM policy. Use GetContextKeysForCustomPolicy to understand what key names and values you must supply when you call SimulateCustomPolicy. Note that all parameters are shown in unencoded form here for clarity, but must be URL encoded to be included as a part of a real HTML request. - */ - getContextKeysForCustomPolicy(params: IAM.Types.GetContextKeysForCustomPolicyRequest, callback?: (err: AWSError, data: IAM.Types.GetContextKeysForPolicyResponse) => void): Request; - /** - * Gets a list of all of the context keys referenced in the input policies. The policies are supplied as a list of one or more strings. To get the context keys from policies associated with an IAM user, group, or role, use GetContextKeysForPrincipalPolicy. Context keys are variables maintained by AWS and its services that provide details about the context of an API query request, and can be evaluated by testing against a value specified in an IAM policy. Use GetContextKeysForCustomPolicy to understand what key names and values you must supply when you call SimulateCustomPolicy. Note that all parameters are shown in unencoded form here for clarity, but must be URL encoded to be included as a part of a real HTML request. - */ - getContextKeysForCustomPolicy(callback?: (err: AWSError, data: IAM.Types.GetContextKeysForPolicyResponse) => void): Request; - /** - * Gets a list of all of the context keys referenced in all of the IAM policies attached to the specified IAM entity. The entity can be an IAM user, group, or role. If you specify a user, then the request also includes all of the policies attached to groups that the user is a member of. You can optionally include a list of one or more additional policies, specified as strings. If you want to include only a list of policies by string, use GetContextKeysForCustomPolicy instead. Note: This API discloses information about the permissions granted to other users. If you do not want users to see other user's permissions, then consider allowing them to use GetContextKeysForCustomPolicy instead. Context keys are variables maintained by AWS and its services that provide details about the context of an API query request, and can be evaluated by testing against a value in an IAM policy. Use GetContextKeysForPrincipalPolicy to understand what key names and values you must supply when you call SimulatePrincipalPolicy. - */ - getContextKeysForPrincipalPolicy(params: IAM.Types.GetContextKeysForPrincipalPolicyRequest, callback?: (err: AWSError, data: IAM.Types.GetContextKeysForPolicyResponse) => void): Request; - /** - * Gets a list of all of the context keys referenced in all of the IAM policies attached to the specified IAM entity. The entity can be an IAM user, group, or role. If you specify a user, then the request also includes all of the policies attached to groups that the user is a member of. You can optionally include a list of one or more additional policies, specified as strings. If you want to include only a list of policies by string, use GetContextKeysForCustomPolicy instead. Note: This API discloses information about the permissions granted to other users. If you do not want users to see other user's permissions, then consider allowing them to use GetContextKeysForCustomPolicy instead. Context keys are variables maintained by AWS and its services that provide details about the context of an API query request, and can be evaluated by testing against a value in an IAM policy. Use GetContextKeysForPrincipalPolicy to understand what key names and values you must supply when you call SimulatePrincipalPolicy. - */ - getContextKeysForPrincipalPolicy(callback?: (err: AWSError, data: IAM.Types.GetContextKeysForPolicyResponse) => void): Request; - /** - * Retrieves a credential report for the AWS account. For more information about the credential report, see Getting Credential Reports in the IAM User Guide. - */ - getCredentialReport(callback?: (err: AWSError, data: IAM.Types.GetCredentialReportResponse) => void): Request; - /** - * Returns a list of IAM users that are in the specified IAM group. You can paginate the results using the MaxItems and Marker parameters. - */ - getGroup(params: IAM.Types.GetGroupRequest, callback?: (err: AWSError, data: IAM.Types.GetGroupResponse) => void): Request; - /** - * Returns a list of IAM users that are in the specified IAM group. You can paginate the results using the MaxItems and Marker parameters. - */ - getGroup(callback?: (err: AWSError, data: IAM.Types.GetGroupResponse) => void): Request; - /** - * Retrieves the specified inline policy document that is embedded in the specified IAM group. Policies returned by this API are URL-encoded compliant with RFC 3986. You can use a URL decoding method to convert the policy back to plain JSON text. For example, if you use Java, you can use the decode method of the java.net.URLDecoder utility class in the Java SDK. Other languages and SDKs provide similar functionality. An IAM group can also have managed policies attached to it. To retrieve a managed policy document that is attached to a group, use GetPolicy to determine the policy's default version, then use GetPolicyVersion to retrieve the policy document. For more information about policies, see Managed Policies and Inline Policies in the IAM User Guide. - */ - getGroupPolicy(params: IAM.Types.GetGroupPolicyRequest, callback?: (err: AWSError, data: IAM.Types.GetGroupPolicyResponse) => void): Request; - /** - * Retrieves the specified inline policy document that is embedded in the specified IAM group. Policies returned by this API are URL-encoded compliant with RFC 3986. You can use a URL decoding method to convert the policy back to plain JSON text. For example, if you use Java, you can use the decode method of the java.net.URLDecoder utility class in the Java SDK. Other languages and SDKs provide similar functionality. An IAM group can also have managed policies attached to it. To retrieve a managed policy document that is attached to a group, use GetPolicy to determine the policy's default version, then use GetPolicyVersion to retrieve the policy document. For more information about policies, see Managed Policies and Inline Policies in the IAM User Guide. - */ - getGroupPolicy(callback?: (err: AWSError, data: IAM.Types.GetGroupPolicyResponse) => void): Request; - /** - * Retrieves information about the specified instance profile, including the instance profile's path, GUID, ARN, and role. For more information about instance profiles, see About Instance Profiles in the IAM User Guide. - */ - getInstanceProfile(params: IAM.Types.GetInstanceProfileRequest, callback?: (err: AWSError, data: IAM.Types.GetInstanceProfileResponse) => void): Request; - /** - * Retrieves information about the specified instance profile, including the instance profile's path, GUID, ARN, and role. For more information about instance profiles, see About Instance Profiles in the IAM User Guide. - */ - getInstanceProfile(callback?: (err: AWSError, data: IAM.Types.GetInstanceProfileResponse) => void): Request; - /** - * Retrieves the user name and password-creation date for the specified IAM user. If the user has not been assigned a password, the action returns a 404 (NoSuchEntity) error. - */ - getLoginProfile(params: IAM.Types.GetLoginProfileRequest, callback?: (err: AWSError, data: IAM.Types.GetLoginProfileResponse) => void): Request; - /** - * Retrieves the user name and password-creation date for the specified IAM user. If the user has not been assigned a password, the action returns a 404 (NoSuchEntity) error. - */ - getLoginProfile(callback?: (err: AWSError, data: IAM.Types.GetLoginProfileResponse) => void): Request; - /** - * Returns information about the specified OpenID Connect (OIDC) provider resource object in IAM. - */ - getOpenIDConnectProvider(params: IAM.Types.GetOpenIDConnectProviderRequest, callback?: (err: AWSError, data: IAM.Types.GetOpenIDConnectProviderResponse) => void): Request; - /** - * Returns information about the specified OpenID Connect (OIDC) provider resource object in IAM. - */ - getOpenIDConnectProvider(callback?: (err: AWSError, data: IAM.Types.GetOpenIDConnectProviderResponse) => void): Request; - /** - * Retrieves information about the specified managed policy, including the policy's default version and the total number of IAM users, groups, and roles to which the policy is attached. To retrieve the list of the specific users, groups, and roles that the policy is attached to, use the ListEntitiesForPolicy API. This API returns metadata about the policy. To retrieve the actual policy document for a specific version of the policy, use GetPolicyVersion. This API retrieves information about managed policies. To retrieve information about an inline policy that is embedded with an IAM user, group, or role, use the GetUserPolicy, GetGroupPolicy, or GetRolePolicy API. For more information about policies, see Managed Policies and Inline Policies in the IAM User Guide. - */ - getPolicy(params: IAM.Types.GetPolicyRequest, callback?: (err: AWSError, data: IAM.Types.GetPolicyResponse) => void): Request; - /** - * Retrieves information about the specified managed policy, including the policy's default version and the total number of IAM users, groups, and roles to which the policy is attached. To retrieve the list of the specific users, groups, and roles that the policy is attached to, use the ListEntitiesForPolicy API. This API returns metadata about the policy. To retrieve the actual policy document for a specific version of the policy, use GetPolicyVersion. This API retrieves information about managed policies. To retrieve information about an inline policy that is embedded with an IAM user, group, or role, use the GetUserPolicy, GetGroupPolicy, or GetRolePolicy API. For more information about policies, see Managed Policies and Inline Policies in the IAM User Guide. - */ - getPolicy(callback?: (err: AWSError, data: IAM.Types.GetPolicyResponse) => void): Request; - /** - * Retrieves information about the specified version of the specified managed policy, including the policy document. Policies returned by this API are URL-encoded compliant with RFC 3986. You can use a URL decoding method to convert the policy back to plain JSON text. For example, if you use Java, you can use the decode method of the java.net.URLDecoder utility class in the Java SDK. Other languages and SDKs provide similar functionality. To list the available versions for a policy, use ListPolicyVersions. This API retrieves information about managed policies. To retrieve information about an inline policy that is embedded in a user, group, or role, use the GetUserPolicy, GetGroupPolicy, or GetRolePolicy API. For more information about the types of policies, see Managed Policies and Inline Policies in the IAM User Guide. For more information about managed policy versions, see Versioning for Managed Policies in the IAM User Guide. - */ - getPolicyVersion(params: IAM.Types.GetPolicyVersionRequest, callback?: (err: AWSError, data: IAM.Types.GetPolicyVersionResponse) => void): Request; - /** - * Retrieves information about the specified version of the specified managed policy, including the policy document. Policies returned by this API are URL-encoded compliant with RFC 3986. You can use a URL decoding method to convert the policy back to plain JSON text. For example, if you use Java, you can use the decode method of the java.net.URLDecoder utility class in the Java SDK. Other languages and SDKs provide similar functionality. To list the available versions for a policy, use ListPolicyVersions. This API retrieves information about managed policies. To retrieve information about an inline policy that is embedded in a user, group, or role, use the GetUserPolicy, GetGroupPolicy, or GetRolePolicy API. For more information about the types of policies, see Managed Policies and Inline Policies in the IAM User Guide. For more information about managed policy versions, see Versioning for Managed Policies in the IAM User Guide. - */ - getPolicyVersion(callback?: (err: AWSError, data: IAM.Types.GetPolicyVersionResponse) => void): Request; - /** - * Retrieves information about the specified role, including the role's path, GUID, ARN, and the role's trust policy that grants permission to assume the role. For more information about roles, see Working with Roles. Policies returned by this API are URL-encoded compliant with RFC 3986. You can use a URL decoding method to convert the policy back to plain JSON text. For example, if you use Java, you can use the decode method of the java.net.URLDecoder utility class in the Java SDK. Other languages and SDKs provide similar functionality. - */ - getRole(params: IAM.Types.GetRoleRequest, callback?: (err: AWSError, data: IAM.Types.GetRoleResponse) => void): Request; - /** - * Retrieves information about the specified role, including the role's path, GUID, ARN, and the role's trust policy that grants permission to assume the role. For more information about roles, see Working with Roles. Policies returned by this API are URL-encoded compliant with RFC 3986. You can use a URL decoding method to convert the policy back to plain JSON text. For example, if you use Java, you can use the decode method of the java.net.URLDecoder utility class in the Java SDK. Other languages and SDKs provide similar functionality. - */ - getRole(callback?: (err: AWSError, data: IAM.Types.GetRoleResponse) => void): Request; - /** - * Retrieves the specified inline policy document that is embedded with the specified IAM role. Policies returned by this API are URL-encoded compliant with RFC 3986. You can use a URL decoding method to convert the policy back to plain JSON text. For example, if you use Java, you can use the decode method of the java.net.URLDecoder utility class in the Java SDK. Other languages and SDKs provide similar functionality. An IAM role can also have managed policies attached to it. To retrieve a managed policy document that is attached to a role, use GetPolicy to determine the policy's default version, then use GetPolicyVersion to retrieve the policy document. For more information about policies, see Managed Policies and Inline Policies in the IAM User Guide. For more information about roles, see Using Roles to Delegate Permissions and Federate Identities. - */ - getRolePolicy(params: IAM.Types.GetRolePolicyRequest, callback?: (err: AWSError, data: IAM.Types.GetRolePolicyResponse) => void): Request; - /** - * Retrieves the specified inline policy document that is embedded with the specified IAM role. Policies returned by this API are URL-encoded compliant with RFC 3986. You can use a URL decoding method to convert the policy back to plain JSON text. For example, if you use Java, you can use the decode method of the java.net.URLDecoder utility class in the Java SDK. Other languages and SDKs provide similar functionality. An IAM role can also have managed policies attached to it. To retrieve a managed policy document that is attached to a role, use GetPolicy to determine the policy's default version, then use GetPolicyVersion to retrieve the policy document. For more information about policies, see Managed Policies and Inline Policies in the IAM User Guide. For more information about roles, see Using Roles to Delegate Permissions and Federate Identities. - */ - getRolePolicy(callback?: (err: AWSError, data: IAM.Types.GetRolePolicyResponse) => void): Request; - /** - * Returns the SAML provider metadocument that was uploaded when the IAM SAML provider resource object was created or updated. This operation requires Signature Version 4. - */ - getSAMLProvider(params: IAM.Types.GetSAMLProviderRequest, callback?: (err: AWSError, data: IAM.Types.GetSAMLProviderResponse) => void): Request; - /** - * Returns the SAML provider metadocument that was uploaded when the IAM SAML provider resource object was created or updated. This operation requires Signature Version 4. - */ - getSAMLProvider(callback?: (err: AWSError, data: IAM.Types.GetSAMLProviderResponse) => void): Request; - /** - * Retrieves the specified SSH public key, including metadata about the key. The SSH public key retrieved by this action is used only for authenticating the associated IAM user to an AWS CodeCommit repository. For more information about using SSH keys to authenticate to an AWS CodeCommit repository, see Set up AWS CodeCommit for SSH Connections in the AWS CodeCommit User Guide. - */ - getSSHPublicKey(params: IAM.Types.GetSSHPublicKeyRequest, callback?: (err: AWSError, data: IAM.Types.GetSSHPublicKeyResponse) => void): Request; - /** - * Retrieves the specified SSH public key, including metadata about the key. The SSH public key retrieved by this action is used only for authenticating the associated IAM user to an AWS CodeCommit repository. For more information about using SSH keys to authenticate to an AWS CodeCommit repository, see Set up AWS CodeCommit for SSH Connections in the AWS CodeCommit User Guide. - */ - getSSHPublicKey(callback?: (err: AWSError, data: IAM.Types.GetSSHPublicKeyResponse) => void): Request; - /** - * Retrieves information about the specified server certificate stored in IAM. For more information about working with server certificates, including a list of AWS services that can use the server certificates that you manage with IAM, go to Working with Server Certificates in the IAM User Guide. - */ - getServerCertificate(params: IAM.Types.GetServerCertificateRequest, callback?: (err: AWSError, data: IAM.Types.GetServerCertificateResponse) => void): Request; - /** - * Retrieves information about the specified server certificate stored in IAM. For more information about working with server certificates, including a list of AWS services that can use the server certificates that you manage with IAM, go to Working with Server Certificates in the IAM User Guide. - */ - getServerCertificate(callback?: (err: AWSError, data: IAM.Types.GetServerCertificateResponse) => void): Request; - /** - * Retrieves the status of your service-linked role deletion. After you use the DeleteServiceLinkedRole API operation to submit a service-linked role for deletion, you can use the DeletionTaskId parameter in GetServiceLinkedRoleDeletionStatus to check the status of the deletion. If the deletion fails, this operation returns the reason that it failed. - */ - getServiceLinkedRoleDeletionStatus(params: IAM.Types.GetServiceLinkedRoleDeletionStatusRequest, callback?: (err: AWSError, data: IAM.Types.GetServiceLinkedRoleDeletionStatusResponse) => void): Request; - /** - * Retrieves the status of your service-linked role deletion. After you use the DeleteServiceLinkedRole API operation to submit a service-linked role for deletion, you can use the DeletionTaskId parameter in GetServiceLinkedRoleDeletionStatus to check the status of the deletion. If the deletion fails, this operation returns the reason that it failed. - */ - getServiceLinkedRoleDeletionStatus(callback?: (err: AWSError, data: IAM.Types.GetServiceLinkedRoleDeletionStatusResponse) => void): Request; - /** - * Retrieves information about the specified IAM user, including the user's creation date, path, unique ID, and ARN. If you do not specify a user name, IAM determines the user name implicitly based on the AWS access key ID used to sign the request to this API. - */ - getUser(params: IAM.Types.GetUserRequest, callback?: (err: AWSError, data: IAM.Types.GetUserResponse) => void): Request; - /** - * Retrieves information about the specified IAM user, including the user's creation date, path, unique ID, and ARN. If you do not specify a user name, IAM determines the user name implicitly based on the AWS access key ID used to sign the request to this API. - */ - getUser(callback?: (err: AWSError, data: IAM.Types.GetUserResponse) => void): Request; - /** - * Retrieves the specified inline policy document that is embedded in the specified IAM user. Policies returned by this API are URL-encoded compliant with RFC 3986. You can use a URL decoding method to convert the policy back to plain JSON text. For example, if you use Java, you can use the decode method of the java.net.URLDecoder utility class in the Java SDK. Other languages and SDKs provide similar functionality. An IAM user can also have managed policies attached to it. To retrieve a managed policy document that is attached to a user, use GetPolicy to determine the policy's default version, then use GetPolicyVersion to retrieve the policy document. For more information about policies, see Managed Policies and Inline Policies in the IAM User Guide. - */ - getUserPolicy(params: IAM.Types.GetUserPolicyRequest, callback?: (err: AWSError, data: IAM.Types.GetUserPolicyResponse) => void): Request; - /** - * Retrieves the specified inline policy document that is embedded in the specified IAM user. Policies returned by this API are URL-encoded compliant with RFC 3986. You can use a URL decoding method to convert the policy back to plain JSON text. For example, if you use Java, you can use the decode method of the java.net.URLDecoder utility class in the Java SDK. Other languages and SDKs provide similar functionality. An IAM user can also have managed policies attached to it. To retrieve a managed policy document that is attached to a user, use GetPolicy to determine the policy's default version, then use GetPolicyVersion to retrieve the policy document. For more information about policies, see Managed Policies and Inline Policies in the IAM User Guide. - */ - getUserPolicy(callback?: (err: AWSError, data: IAM.Types.GetUserPolicyResponse) => void): Request; - /** - * Returns information about the access key IDs associated with the specified IAM user. If there are none, the action returns an empty list. Although each user is limited to a small number of keys, you can still paginate the results using the MaxItems and Marker parameters. If the UserName field is not specified, the UserName is determined implicitly based on the AWS access key ID used to sign the request. Because this action works for access keys under the AWS account, you can use this action to manage root credentials even if the AWS account has no associated users. To ensure the security of your AWS account, the secret access key is accessible only during key and user creation. - */ - listAccessKeys(params: IAM.Types.ListAccessKeysRequest, callback?: (err: AWSError, data: IAM.Types.ListAccessKeysResponse) => void): Request; - /** - * Returns information about the access key IDs associated with the specified IAM user. If there are none, the action returns an empty list. Although each user is limited to a small number of keys, you can still paginate the results using the MaxItems and Marker parameters. If the UserName field is not specified, the UserName is determined implicitly based on the AWS access key ID used to sign the request. Because this action works for access keys under the AWS account, you can use this action to manage root credentials even if the AWS account has no associated users. To ensure the security of your AWS account, the secret access key is accessible only during key and user creation. - */ - listAccessKeys(callback?: (err: AWSError, data: IAM.Types.ListAccessKeysResponse) => void): Request; - /** - * Lists the account alias associated with the AWS account (Note: you can have only one). For information about using an AWS account alias, see Using an Alias for Your AWS Account ID in the IAM User Guide. - */ - listAccountAliases(params: IAM.Types.ListAccountAliasesRequest, callback?: (err: AWSError, data: IAM.Types.ListAccountAliasesResponse) => void): Request; - /** - * Lists the account alias associated with the AWS account (Note: you can have only one). For information about using an AWS account alias, see Using an Alias for Your AWS Account ID in the IAM User Guide. - */ - listAccountAliases(callback?: (err: AWSError, data: IAM.Types.ListAccountAliasesResponse) => void): Request; - /** - * Lists all managed policies that are attached to the specified IAM group. An IAM group can also have inline policies embedded with it. To list the inline policies for a group, use the ListGroupPolicies API. For information about policies, see Managed Policies and Inline Policies in the IAM User Guide. You can paginate the results using the MaxItems and Marker parameters. You can use the PathPrefix parameter to limit the list of policies to only those matching the specified path prefix. If there are no policies attached to the specified group (or none that match the specified path prefix), the action returns an empty list. - */ - listAttachedGroupPolicies(params: IAM.Types.ListAttachedGroupPoliciesRequest, callback?: (err: AWSError, data: IAM.Types.ListAttachedGroupPoliciesResponse) => void): Request; - /** - * Lists all managed policies that are attached to the specified IAM group. An IAM group can also have inline policies embedded with it. To list the inline policies for a group, use the ListGroupPolicies API. For information about policies, see Managed Policies and Inline Policies in the IAM User Guide. You can paginate the results using the MaxItems and Marker parameters. You can use the PathPrefix parameter to limit the list of policies to only those matching the specified path prefix. If there are no policies attached to the specified group (or none that match the specified path prefix), the action returns an empty list. - */ - listAttachedGroupPolicies(callback?: (err: AWSError, data: IAM.Types.ListAttachedGroupPoliciesResponse) => void): Request; - /** - * Lists all managed policies that are attached to the specified IAM role. An IAM role can also have inline policies embedded with it. To list the inline policies for a role, use the ListRolePolicies API. For information about policies, see Managed Policies and Inline Policies in the IAM User Guide. You can paginate the results using the MaxItems and Marker parameters. You can use the PathPrefix parameter to limit the list of policies to only those matching the specified path prefix. If there are no policies attached to the specified role (or none that match the specified path prefix), the action returns an empty list. - */ - listAttachedRolePolicies(params: IAM.Types.ListAttachedRolePoliciesRequest, callback?: (err: AWSError, data: IAM.Types.ListAttachedRolePoliciesResponse) => void): Request; - /** - * Lists all managed policies that are attached to the specified IAM role. An IAM role can also have inline policies embedded with it. To list the inline policies for a role, use the ListRolePolicies API. For information about policies, see Managed Policies and Inline Policies in the IAM User Guide. You can paginate the results using the MaxItems and Marker parameters. You can use the PathPrefix parameter to limit the list of policies to only those matching the specified path prefix. If there are no policies attached to the specified role (or none that match the specified path prefix), the action returns an empty list. - */ - listAttachedRolePolicies(callback?: (err: AWSError, data: IAM.Types.ListAttachedRolePoliciesResponse) => void): Request; - /** - * Lists all managed policies that are attached to the specified IAM user. An IAM user can also have inline policies embedded with it. To list the inline policies for a user, use the ListUserPolicies API. For information about policies, see Managed Policies and Inline Policies in the IAM User Guide. You can paginate the results using the MaxItems and Marker parameters. You can use the PathPrefix parameter to limit the list of policies to only those matching the specified path prefix. If there are no policies attached to the specified group (or none that match the specified path prefix), the action returns an empty list. - */ - listAttachedUserPolicies(params: IAM.Types.ListAttachedUserPoliciesRequest, callback?: (err: AWSError, data: IAM.Types.ListAttachedUserPoliciesResponse) => void): Request; - /** - * Lists all managed policies that are attached to the specified IAM user. An IAM user can also have inline policies embedded with it. To list the inline policies for a user, use the ListUserPolicies API. For information about policies, see Managed Policies and Inline Policies in the IAM User Guide. You can paginate the results using the MaxItems and Marker parameters. You can use the PathPrefix parameter to limit the list of policies to only those matching the specified path prefix. If there are no policies attached to the specified group (or none that match the specified path prefix), the action returns an empty list. - */ - listAttachedUserPolicies(callback?: (err: AWSError, data: IAM.Types.ListAttachedUserPoliciesResponse) => void): Request; - /** - * Lists all IAM users, groups, and roles that the specified managed policy is attached to. You can use the optional EntityFilter parameter to limit the results to a particular type of entity (users, groups, or roles). For example, to list only the roles that are attached to the specified policy, set EntityFilter to Role. You can paginate the results using the MaxItems and Marker parameters. - */ - listEntitiesForPolicy(params: IAM.Types.ListEntitiesForPolicyRequest, callback?: (err: AWSError, data: IAM.Types.ListEntitiesForPolicyResponse) => void): Request; - /** - * Lists all IAM users, groups, and roles that the specified managed policy is attached to. You can use the optional EntityFilter parameter to limit the results to a particular type of entity (users, groups, or roles). For example, to list only the roles that are attached to the specified policy, set EntityFilter to Role. You can paginate the results using the MaxItems and Marker parameters. - */ - listEntitiesForPolicy(callback?: (err: AWSError, data: IAM.Types.ListEntitiesForPolicyResponse) => void): Request; - /** - * Lists the names of the inline policies that are embedded in the specified IAM group. An IAM group can also have managed policies attached to it. To list the managed policies that are attached to a group, use ListAttachedGroupPolicies. For more information about policies, see Managed Policies and Inline Policies in the IAM User Guide. You can paginate the results using the MaxItems and Marker parameters. If there are no inline policies embedded with the specified group, the action returns an empty list. - */ - listGroupPolicies(params: IAM.Types.ListGroupPoliciesRequest, callback?: (err: AWSError, data: IAM.Types.ListGroupPoliciesResponse) => void): Request; - /** - * Lists the names of the inline policies that are embedded in the specified IAM group. An IAM group can also have managed policies attached to it. To list the managed policies that are attached to a group, use ListAttachedGroupPolicies. For more information about policies, see Managed Policies and Inline Policies in the IAM User Guide. You can paginate the results using the MaxItems and Marker parameters. If there are no inline policies embedded with the specified group, the action returns an empty list. - */ - listGroupPolicies(callback?: (err: AWSError, data: IAM.Types.ListGroupPoliciesResponse) => void): Request; - /** - * Lists the IAM groups that have the specified path prefix. You can paginate the results using the MaxItems and Marker parameters. - */ - listGroups(params: IAM.Types.ListGroupsRequest, callback?: (err: AWSError, data: IAM.Types.ListGroupsResponse) => void): Request; - /** - * Lists the IAM groups that have the specified path prefix. You can paginate the results using the MaxItems and Marker parameters. - */ - listGroups(callback?: (err: AWSError, data: IAM.Types.ListGroupsResponse) => void): Request; - /** - * Lists the IAM groups that the specified IAM user belongs to. You can paginate the results using the MaxItems and Marker parameters. - */ - listGroupsForUser(params: IAM.Types.ListGroupsForUserRequest, callback?: (err: AWSError, data: IAM.Types.ListGroupsForUserResponse) => void): Request; - /** - * Lists the IAM groups that the specified IAM user belongs to. You can paginate the results using the MaxItems and Marker parameters. - */ - listGroupsForUser(callback?: (err: AWSError, data: IAM.Types.ListGroupsForUserResponse) => void): Request; - /** - * Lists the instance profiles that have the specified path prefix. If there are none, the action returns an empty list. For more information about instance profiles, go to About Instance Profiles. You can paginate the results using the MaxItems and Marker parameters. - */ - listInstanceProfiles(params: IAM.Types.ListInstanceProfilesRequest, callback?: (err: AWSError, data: IAM.Types.ListInstanceProfilesResponse) => void): Request; - /** - * Lists the instance profiles that have the specified path prefix. If there are none, the action returns an empty list. For more information about instance profiles, go to About Instance Profiles. You can paginate the results using the MaxItems and Marker parameters. - */ - listInstanceProfiles(callback?: (err: AWSError, data: IAM.Types.ListInstanceProfilesResponse) => void): Request; - /** - * Lists the instance profiles that have the specified associated IAM role. If there are none, the action returns an empty list. For more information about instance profiles, go to About Instance Profiles. You can paginate the results using the MaxItems and Marker parameters. - */ - listInstanceProfilesForRole(params: IAM.Types.ListInstanceProfilesForRoleRequest, callback?: (err: AWSError, data: IAM.Types.ListInstanceProfilesForRoleResponse) => void): Request; - /** - * Lists the instance profiles that have the specified associated IAM role. If there are none, the action returns an empty list. For more information about instance profiles, go to About Instance Profiles. You can paginate the results using the MaxItems and Marker parameters. - */ - listInstanceProfilesForRole(callback?: (err: AWSError, data: IAM.Types.ListInstanceProfilesForRoleResponse) => void): Request; - /** - * Lists the MFA devices for an IAM user. If the request includes a IAM user name, then this action lists all the MFA devices associated with the specified user. If you do not specify a user name, IAM determines the user name implicitly based on the AWS access key ID signing the request for this API. You can paginate the results using the MaxItems and Marker parameters. - */ - listMFADevices(params: IAM.Types.ListMFADevicesRequest, callback?: (err: AWSError, data: IAM.Types.ListMFADevicesResponse) => void): Request; - /** - * Lists the MFA devices for an IAM user. If the request includes a IAM user name, then this action lists all the MFA devices associated with the specified user. If you do not specify a user name, IAM determines the user name implicitly based on the AWS access key ID signing the request for this API. You can paginate the results using the MaxItems and Marker parameters. - */ - listMFADevices(callback?: (err: AWSError, data: IAM.Types.ListMFADevicesResponse) => void): Request; - /** - * Lists information about the IAM OpenID Connect (OIDC) provider resource objects defined in the AWS account. - */ - listOpenIDConnectProviders(params: IAM.Types.ListOpenIDConnectProvidersRequest, callback?: (err: AWSError, data: IAM.Types.ListOpenIDConnectProvidersResponse) => void): Request; - /** - * Lists information about the IAM OpenID Connect (OIDC) provider resource objects defined in the AWS account. - */ - listOpenIDConnectProviders(callback?: (err: AWSError, data: IAM.Types.ListOpenIDConnectProvidersResponse) => void): Request; - /** - * Lists all the managed policies that are available in your AWS account, including your own customer-defined managed policies and all AWS managed policies. You can filter the list of policies that is returned using the optional OnlyAttached, Scope, and PathPrefix parameters. For example, to list only the customer managed policies in your AWS account, set Scope to Local. To list only AWS managed policies, set Scope to AWS. You can paginate the results using the MaxItems and Marker parameters. For more information about managed policies, see Managed Policies and Inline Policies in the IAM User Guide. - */ - listPolicies(params: IAM.Types.ListPoliciesRequest, callback?: (err: AWSError, data: IAM.Types.ListPoliciesResponse) => void): Request; - /** - * Lists all the managed policies that are available in your AWS account, including your own customer-defined managed policies and all AWS managed policies. You can filter the list of policies that is returned using the optional OnlyAttached, Scope, and PathPrefix parameters. For example, to list only the customer managed policies in your AWS account, set Scope to Local. To list only AWS managed policies, set Scope to AWS. You can paginate the results using the MaxItems and Marker parameters. For more information about managed policies, see Managed Policies and Inline Policies in the IAM User Guide. - */ - listPolicies(callback?: (err: AWSError, data: IAM.Types.ListPoliciesResponse) => void): Request; - /** - * Lists information about the versions of the specified managed policy, including the version that is currently set as the policy's default version. For more information about managed policies, see Managed Policies and Inline Policies in the IAM User Guide. - */ - listPolicyVersions(params: IAM.Types.ListPolicyVersionsRequest, callback?: (err: AWSError, data: IAM.Types.ListPolicyVersionsResponse) => void): Request; - /** - * Lists information about the versions of the specified managed policy, including the version that is currently set as the policy's default version. For more information about managed policies, see Managed Policies and Inline Policies in the IAM User Guide. - */ - listPolicyVersions(callback?: (err: AWSError, data: IAM.Types.ListPolicyVersionsResponse) => void): Request; - /** - * Lists the names of the inline policies that are embedded in the specified IAM role. An IAM role can also have managed policies attached to it. To list the managed policies that are attached to a role, use ListAttachedRolePolicies. For more information about policies, see Managed Policies and Inline Policies in the IAM User Guide. You can paginate the results using the MaxItems and Marker parameters. If there are no inline policies embedded with the specified role, the action returns an empty list. - */ - listRolePolicies(params: IAM.Types.ListRolePoliciesRequest, callback?: (err: AWSError, data: IAM.Types.ListRolePoliciesResponse) => void): Request; - /** - * Lists the names of the inline policies that are embedded in the specified IAM role. An IAM role can also have managed policies attached to it. To list the managed policies that are attached to a role, use ListAttachedRolePolicies. For more information about policies, see Managed Policies and Inline Policies in the IAM User Guide. You can paginate the results using the MaxItems and Marker parameters. If there are no inline policies embedded with the specified role, the action returns an empty list. - */ - listRolePolicies(callback?: (err: AWSError, data: IAM.Types.ListRolePoliciesResponse) => void): Request; - /** - * Lists the IAM roles that have the specified path prefix. If there are none, the action returns an empty list. For more information about roles, go to Working with Roles. You can paginate the results using the MaxItems and Marker parameters. - */ - listRoles(params: IAM.Types.ListRolesRequest, callback?: (err: AWSError, data: IAM.Types.ListRolesResponse) => void): Request; - /** - * Lists the IAM roles that have the specified path prefix. If there are none, the action returns an empty list. For more information about roles, go to Working with Roles. You can paginate the results using the MaxItems and Marker parameters. - */ - listRoles(callback?: (err: AWSError, data: IAM.Types.ListRolesResponse) => void): Request; - /** - * Lists the SAML provider resource objects defined in IAM in the account. This operation requires Signature Version 4. - */ - listSAMLProviders(params: IAM.Types.ListSAMLProvidersRequest, callback?: (err: AWSError, data: IAM.Types.ListSAMLProvidersResponse) => void): Request; - /** - * Lists the SAML provider resource objects defined in IAM in the account. This operation requires Signature Version 4. - */ - listSAMLProviders(callback?: (err: AWSError, data: IAM.Types.ListSAMLProvidersResponse) => void): Request; - /** - * Returns information about the SSH public keys associated with the specified IAM user. If there are none, the action returns an empty list. The SSH public keys returned by this action are used only for authenticating the IAM user to an AWS CodeCommit repository. For more information about using SSH keys to authenticate to an AWS CodeCommit repository, see Set up AWS CodeCommit for SSH Connections in the AWS CodeCommit User Guide. Although each user is limited to a small number of keys, you can still paginate the results using the MaxItems and Marker parameters. - */ - listSSHPublicKeys(params: IAM.Types.ListSSHPublicKeysRequest, callback?: (err: AWSError, data: IAM.Types.ListSSHPublicKeysResponse) => void): Request; - /** - * Returns information about the SSH public keys associated with the specified IAM user. If there are none, the action returns an empty list. The SSH public keys returned by this action are used only for authenticating the IAM user to an AWS CodeCommit repository. For more information about using SSH keys to authenticate to an AWS CodeCommit repository, see Set up AWS CodeCommit for SSH Connections in the AWS CodeCommit User Guide. Although each user is limited to a small number of keys, you can still paginate the results using the MaxItems and Marker parameters. - */ - listSSHPublicKeys(callback?: (err: AWSError, data: IAM.Types.ListSSHPublicKeysResponse) => void): Request; - /** - * Lists the server certificates stored in IAM that have the specified path prefix. If none exist, the action returns an empty list. You can paginate the results using the MaxItems and Marker parameters. For more information about working with server certificates, including a list of AWS services that can use the server certificates that you manage with IAM, go to Working with Server Certificates in the IAM User Guide. - */ - listServerCertificates(params: IAM.Types.ListServerCertificatesRequest, callback?: (err: AWSError, data: IAM.Types.ListServerCertificatesResponse) => void): Request; - /** - * Lists the server certificates stored in IAM that have the specified path prefix. If none exist, the action returns an empty list. You can paginate the results using the MaxItems and Marker parameters. For more information about working with server certificates, including a list of AWS services that can use the server certificates that you manage with IAM, go to Working with Server Certificates in the IAM User Guide. - */ - listServerCertificates(callback?: (err: AWSError, data: IAM.Types.ListServerCertificatesResponse) => void): Request; - /** - * Returns information about the service-specific credentials associated with the specified IAM user. If there are none, the action returns an empty list. The service-specific credentials returned by this action are used only for authenticating the IAM user to a specific service. For more information about using service-specific credentials to authenticate to an AWS service, see Set Up service-specific credentials in the AWS CodeCommit User Guide. - */ - listServiceSpecificCredentials(params: IAM.Types.ListServiceSpecificCredentialsRequest, callback?: (err: AWSError, data: IAM.Types.ListServiceSpecificCredentialsResponse) => void): Request; - /** - * Returns information about the service-specific credentials associated with the specified IAM user. If there are none, the action returns an empty list. The service-specific credentials returned by this action are used only for authenticating the IAM user to a specific service. For more information about using service-specific credentials to authenticate to an AWS service, see Set Up service-specific credentials in the AWS CodeCommit User Guide. - */ - listServiceSpecificCredentials(callback?: (err: AWSError, data: IAM.Types.ListServiceSpecificCredentialsResponse) => void): Request; - /** - * Returns information about the signing certificates associated with the specified IAM user. If there are none, the action returns an empty list. Although each user is limited to a small number of signing certificates, you can still paginate the results using the MaxItems and Marker parameters. If the UserName field is not specified, the user name is determined implicitly based on the AWS access key ID used to sign the request for this API. Because this action works for access keys under the AWS account, you can use this action to manage root credentials even if the AWS account has no associated users. - */ - listSigningCertificates(params: IAM.Types.ListSigningCertificatesRequest, callback?: (err: AWSError, data: IAM.Types.ListSigningCertificatesResponse) => void): Request; - /** - * Returns information about the signing certificates associated with the specified IAM user. If there are none, the action returns an empty list. Although each user is limited to a small number of signing certificates, you can still paginate the results using the MaxItems and Marker parameters. If the UserName field is not specified, the user name is determined implicitly based on the AWS access key ID used to sign the request for this API. Because this action works for access keys under the AWS account, you can use this action to manage root credentials even if the AWS account has no associated users. - */ - listSigningCertificates(callback?: (err: AWSError, data: IAM.Types.ListSigningCertificatesResponse) => void): Request; - /** - * Lists the names of the inline policies embedded in the specified IAM user. An IAM user can also have managed policies attached to it. To list the managed policies that are attached to a user, use ListAttachedUserPolicies. For more information about policies, see Managed Policies and Inline Policies in the IAM User Guide. You can paginate the results using the MaxItems and Marker parameters. If there are no inline policies embedded with the specified user, the action returns an empty list. - */ - listUserPolicies(params: IAM.Types.ListUserPoliciesRequest, callback?: (err: AWSError, data: IAM.Types.ListUserPoliciesResponse) => void): Request; - /** - * Lists the names of the inline policies embedded in the specified IAM user. An IAM user can also have managed policies attached to it. To list the managed policies that are attached to a user, use ListAttachedUserPolicies. For more information about policies, see Managed Policies and Inline Policies in the IAM User Guide. You can paginate the results using the MaxItems and Marker parameters. If there are no inline policies embedded with the specified user, the action returns an empty list. - */ - listUserPolicies(callback?: (err: AWSError, data: IAM.Types.ListUserPoliciesResponse) => void): Request; - /** - * Lists the IAM users that have the specified path prefix. If no path prefix is specified, the action returns all users in the AWS account. If there are none, the action returns an empty list. You can paginate the results using the MaxItems and Marker parameters. - */ - listUsers(params: IAM.Types.ListUsersRequest, callback?: (err: AWSError, data: IAM.Types.ListUsersResponse) => void): Request; - /** - * Lists the IAM users that have the specified path prefix. If no path prefix is specified, the action returns all users in the AWS account. If there are none, the action returns an empty list. You can paginate the results using the MaxItems and Marker parameters. - */ - listUsers(callback?: (err: AWSError, data: IAM.Types.ListUsersResponse) => void): Request; - /** - * Lists the virtual MFA devices defined in the AWS account by assignment status. If you do not specify an assignment status, the action returns a list of all virtual MFA devices. Assignment status can be Assigned, Unassigned, or Any. You can paginate the results using the MaxItems and Marker parameters. - */ - listVirtualMFADevices(params: IAM.Types.ListVirtualMFADevicesRequest, callback?: (err: AWSError, data: IAM.Types.ListVirtualMFADevicesResponse) => void): Request; - /** - * Lists the virtual MFA devices defined in the AWS account by assignment status. If you do not specify an assignment status, the action returns a list of all virtual MFA devices. Assignment status can be Assigned, Unassigned, or Any. You can paginate the results using the MaxItems and Marker parameters. - */ - listVirtualMFADevices(callback?: (err: AWSError, data: IAM.Types.ListVirtualMFADevicesResponse) => void): Request; - /** - * Adds or updates an inline policy document that is embedded in the specified IAM group. A user can also have managed policies attached to it. To attach a managed policy to a group, use AttachGroupPolicy. To create a new managed policy, use CreatePolicy. For information about policies, see Managed Policies and Inline Policies in the IAM User Guide. For information about limits on the number of inline policies that you can embed in a group, see Limitations on IAM Entities in the IAM User Guide. Because policy documents can be large, you should use POST rather than GET when calling PutGroupPolicy. For general information about using the Query API with IAM, go to Making Query Requests in the IAM User Guide. - */ - putGroupPolicy(params: IAM.Types.PutGroupPolicyRequest, callback?: (err: AWSError, data: {}) => void): Request<{}, AWSError>; - /** - * Adds or updates an inline policy document that is embedded in the specified IAM group. A user can also have managed policies attached to it. To attach a managed policy to a group, use AttachGroupPolicy. To create a new managed policy, use CreatePolicy. For information about policies, see Managed Policies and Inline Policies in the IAM User Guide. For information about limits on the number of inline policies that you can embed in a group, see Limitations on IAM Entities in the IAM User Guide. Because policy documents can be large, you should use POST rather than GET when calling PutGroupPolicy. For general information about using the Query API with IAM, go to Making Query Requests in the IAM User Guide. - */ - putGroupPolicy(callback?: (err: AWSError, data: {}) => void): Request<{}, AWSError>; - /** - * Adds or updates an inline policy document that is embedded in the specified IAM role. When you embed an inline policy in a role, the inline policy is used as part of the role's access (permissions) policy. The role's trust policy is created at the same time as the role, using CreateRole. You can update a role's trust policy using UpdateAssumeRolePolicy. For more information about IAM roles, go to Using Roles to Delegate Permissions and Federate Identities. A role can also have a managed policy attached to it. To attach a managed policy to a role, use AttachRolePolicy. To create a new managed policy, use CreatePolicy. For information about policies, see Managed Policies and Inline Policies in the IAM User Guide. For information about limits on the number of inline policies that you can embed with a role, see Limitations on IAM Entities in the IAM User Guide. Because policy documents can be large, you should use POST rather than GET when calling PutRolePolicy. For general information about using the Query API with IAM, go to Making Query Requests in the IAM User Guide. - */ - putRolePolicy(params: IAM.Types.PutRolePolicyRequest, callback?: (err: AWSError, data: {}) => void): Request<{}, AWSError>; - /** - * Adds or updates an inline policy document that is embedded in the specified IAM role. When you embed an inline policy in a role, the inline policy is used as part of the role's access (permissions) policy. The role's trust policy is created at the same time as the role, using CreateRole. You can update a role's trust policy using UpdateAssumeRolePolicy. For more information about IAM roles, go to Using Roles to Delegate Permissions and Federate Identities. A role can also have a managed policy attached to it. To attach a managed policy to a role, use AttachRolePolicy. To create a new managed policy, use CreatePolicy. For information about policies, see Managed Policies and Inline Policies in the IAM User Guide. For information about limits on the number of inline policies that you can embed with a role, see Limitations on IAM Entities in the IAM User Guide. Because policy documents can be large, you should use POST rather than GET when calling PutRolePolicy. For general information about using the Query API with IAM, go to Making Query Requests in the IAM User Guide. - */ - putRolePolicy(callback?: (err: AWSError, data: {}) => void): Request<{}, AWSError>; - /** - * Adds or updates an inline policy document that is embedded in the specified IAM user. An IAM user can also have a managed policy attached to it. To attach a managed policy to a user, use AttachUserPolicy. To create a new managed policy, use CreatePolicy. For information about policies, see Managed Policies and Inline Policies in the IAM User Guide. For information about limits on the number of inline policies that you can embed in a user, see Limitations on IAM Entities in the IAM User Guide. Because policy documents can be large, you should use POST rather than GET when calling PutUserPolicy. For general information about using the Query API with IAM, go to Making Query Requests in the IAM User Guide. - */ - putUserPolicy(params: IAM.Types.PutUserPolicyRequest, callback?: (err: AWSError, data: {}) => void): Request<{}, AWSError>; - /** - * Adds or updates an inline policy document that is embedded in the specified IAM user. An IAM user can also have a managed policy attached to it. To attach a managed policy to a user, use AttachUserPolicy. To create a new managed policy, use CreatePolicy. For information about policies, see Managed Policies and Inline Policies in the IAM User Guide. For information about limits on the number of inline policies that you can embed in a user, see Limitations on IAM Entities in the IAM User Guide. Because policy documents can be large, you should use POST rather than GET when calling PutUserPolicy. For general information about using the Query API with IAM, go to Making Query Requests in the IAM User Guide. - */ - putUserPolicy(callback?: (err: AWSError, data: {}) => void): Request<{}, AWSError>; - /** - * Removes the specified client ID (also known as audience) from the list of client IDs registered for the specified IAM OpenID Connect (OIDC) provider resource object. This action is idempotent; it does not fail or return an error if you try to remove a client ID that does not exist. - */ - removeClientIDFromOpenIDConnectProvider(params: IAM.Types.RemoveClientIDFromOpenIDConnectProviderRequest, callback?: (err: AWSError, data: {}) => void): Request<{}, AWSError>; - /** - * Removes the specified client ID (also known as audience) from the list of client IDs registered for the specified IAM OpenID Connect (OIDC) provider resource object. This action is idempotent; it does not fail or return an error if you try to remove a client ID that does not exist. - */ - removeClientIDFromOpenIDConnectProvider(callback?: (err: AWSError, data: {}) => void): Request<{}, AWSError>; - /** - * Removes the specified IAM role from the specified EC2 instance profile. Make sure you do not have any Amazon EC2 instances running with the role you are about to remove from the instance profile. Removing a role from an instance profile that is associated with a running instance might break any applications running on the instance. For more information about IAM roles, go to Working with Roles. For more information about instance profiles, go to About Instance Profiles. - */ - removeRoleFromInstanceProfile(params: IAM.Types.RemoveRoleFromInstanceProfileRequest, callback?: (err: AWSError, data: {}) => void): Request<{}, AWSError>; - /** - * Removes the specified IAM role from the specified EC2 instance profile. Make sure you do not have any Amazon EC2 instances running with the role you are about to remove from the instance profile. Removing a role from an instance profile that is associated with a running instance might break any applications running on the instance. For more information about IAM roles, go to Working with Roles. For more information about instance profiles, go to About Instance Profiles. - */ - removeRoleFromInstanceProfile(callback?: (err: AWSError, data: {}) => void): Request<{}, AWSError>; - /** - * Removes the specified user from the specified group. - */ - removeUserFromGroup(params: IAM.Types.RemoveUserFromGroupRequest, callback?: (err: AWSError, data: {}) => void): Request<{}, AWSError>; - /** - * Removes the specified user from the specified group. - */ - removeUserFromGroup(callback?: (err: AWSError, data: {}) => void): Request<{}, AWSError>; - /** - * Resets the password for a service-specific credential. The new password is AWS generated and cryptographically strong. It cannot be configured by the user. Resetting the password immediately invalidates the previous password associated with this user. - */ - resetServiceSpecificCredential(params: IAM.Types.ResetServiceSpecificCredentialRequest, callback?: (err: AWSError, data: IAM.Types.ResetServiceSpecificCredentialResponse) => void): Request; - /** - * Resets the password for a service-specific credential. The new password is AWS generated and cryptographically strong. It cannot be configured by the user. Resetting the password immediately invalidates the previous password associated with this user. - */ - resetServiceSpecificCredential(callback?: (err: AWSError, data: IAM.Types.ResetServiceSpecificCredentialResponse) => void): Request; - /** - * Synchronizes the specified MFA device with its IAM resource object on the AWS servers. For more information about creating and working with virtual MFA devices, go to Using a Virtual MFA Device in the IAM User Guide. - */ - resyncMFADevice(params: IAM.Types.ResyncMFADeviceRequest, callback?: (err: AWSError, data: {}) => void): Request<{}, AWSError>; - /** - * Synchronizes the specified MFA device with its IAM resource object on the AWS servers. For more information about creating and working with virtual MFA devices, go to Using a Virtual MFA Device in the IAM User Guide. - */ - resyncMFADevice(callback?: (err: AWSError, data: {}) => void): Request<{}, AWSError>; - /** - * Sets the specified version of the specified policy as the policy's default (operative) version. This action affects all users, groups, and roles that the policy is attached to. To list the users, groups, and roles that the policy is attached to, use the ListEntitiesForPolicy API. For information about managed policies, see Managed Policies and Inline Policies in the IAM User Guide. - */ - setDefaultPolicyVersion(params: IAM.Types.SetDefaultPolicyVersionRequest, callback?: (err: AWSError, data: {}) => void): Request<{}, AWSError>; - /** - * Sets the specified version of the specified policy as the policy's default (operative) version. This action affects all users, groups, and roles that the policy is attached to. To list the users, groups, and roles that the policy is attached to, use the ListEntitiesForPolicy API. For information about managed policies, see Managed Policies and Inline Policies in the IAM User Guide. - */ - setDefaultPolicyVersion(callback?: (err: AWSError, data: {}) => void): Request<{}, AWSError>; - /** - * Simulate how a set of IAM policies and optionally a resource-based policy works with a list of API actions and AWS resources to determine the policies' effective permissions. The policies are provided as strings. The simulation does not perform the API actions; it only checks the authorization to determine if the simulated policies allow or deny the actions. If you want to simulate existing policies attached to an IAM user, group, or role, use SimulatePrincipalPolicy instead. Context keys are variables maintained by AWS and its services that provide details about the context of an API query request. You can use the Condition element of an IAM policy to evaluate context keys. To get the list of context keys that the policies require for correct simulation, use GetContextKeysForCustomPolicy. If the output is long, you can use MaxItems and Marker parameters to paginate the results. - */ - simulateCustomPolicy(params: IAM.Types.SimulateCustomPolicyRequest, callback?: (err: AWSError, data: IAM.Types.SimulatePolicyResponse) => void): Request; - /** - * Simulate how a set of IAM policies and optionally a resource-based policy works with a list of API actions and AWS resources to determine the policies' effective permissions. The policies are provided as strings. The simulation does not perform the API actions; it only checks the authorization to determine if the simulated policies allow or deny the actions. If you want to simulate existing policies attached to an IAM user, group, or role, use SimulatePrincipalPolicy instead. Context keys are variables maintained by AWS and its services that provide details about the context of an API query request. You can use the Condition element of an IAM policy to evaluate context keys. To get the list of context keys that the policies require for correct simulation, use GetContextKeysForCustomPolicy. If the output is long, you can use MaxItems and Marker parameters to paginate the results. - */ - simulateCustomPolicy(callback?: (err: AWSError, data: IAM.Types.SimulatePolicyResponse) => void): Request; - /** - * Simulate how a set of IAM policies attached to an IAM entity works with a list of API actions and AWS resources to determine the policies' effective permissions. The entity can be an IAM user, group, or role. If you specify a user, then the simulation also includes all of the policies that are attached to groups that the user belongs to . You can optionally include a list of one or more additional policies specified as strings to include in the simulation. If you want to simulate only policies specified as strings, use SimulateCustomPolicy instead. You can also optionally include one resource-based policy to be evaluated with each of the resources included in the simulation. The simulation does not perform the API actions, it only checks the authorization to determine if the simulated policies allow or deny the actions. Note: This API discloses information about the permissions granted to other users. If you do not want users to see other user's permissions, then consider allowing them to use SimulateCustomPolicy instead. Context keys are variables maintained by AWS and its services that provide details about the context of an API query request. You can use the Condition element of an IAM policy to evaluate context keys. To get the list of context keys that the policies require for correct simulation, use GetContextKeysForPrincipalPolicy. If the output is long, you can use the MaxItems and Marker parameters to paginate the results. - */ - simulatePrincipalPolicy(params: IAM.Types.SimulatePrincipalPolicyRequest, callback?: (err: AWSError, data: IAM.Types.SimulatePolicyResponse) => void): Request; - /** - * Simulate how a set of IAM policies attached to an IAM entity works with a list of API actions and AWS resources to determine the policies' effective permissions. The entity can be an IAM user, group, or role. If you specify a user, then the simulation also includes all of the policies that are attached to groups that the user belongs to . You can optionally include a list of one or more additional policies specified as strings to include in the simulation. If you want to simulate only policies specified as strings, use SimulateCustomPolicy instead. You can also optionally include one resource-based policy to be evaluated with each of the resources included in the simulation. The simulation does not perform the API actions, it only checks the authorization to determine if the simulated policies allow or deny the actions. Note: This API discloses information about the permissions granted to other users. If you do not want users to see other user's permissions, then consider allowing them to use SimulateCustomPolicy instead. Context keys are variables maintained by AWS and its services that provide details about the context of an API query request. You can use the Condition element of an IAM policy to evaluate context keys. To get the list of context keys that the policies require for correct simulation, use GetContextKeysForPrincipalPolicy. If the output is long, you can use the MaxItems and Marker parameters to paginate the results. - */ - simulatePrincipalPolicy(callback?: (err: AWSError, data: IAM.Types.SimulatePolicyResponse) => void): Request; - /** - * Changes the status of the specified access key from Active to Inactive, or vice versa. This action can be used to disable a user's key as part of a key rotation work flow. If the UserName field is not specified, the UserName is determined implicitly based on the AWS access key ID used to sign the request. Because this action works for access keys under the AWS account, you can use this action to manage root credentials even if the AWS account has no associated users. For information about rotating keys, see Managing Keys and Certificates in the IAM User Guide. - */ - updateAccessKey(params: IAM.Types.UpdateAccessKeyRequest, callback?: (err: AWSError, data: {}) => void): Request<{}, AWSError>; - /** - * Changes the status of the specified access key from Active to Inactive, or vice versa. This action can be used to disable a user's key as part of a key rotation work flow. If the UserName field is not specified, the UserName is determined implicitly based on the AWS access key ID used to sign the request. Because this action works for access keys under the AWS account, you can use this action to manage root credentials even if the AWS account has no associated users. For information about rotating keys, see Managing Keys and Certificates in the IAM User Guide. - */ - updateAccessKey(callback?: (err: AWSError, data: {}) => void): Request<{}, AWSError>; - /** - * Updates the password policy settings for the AWS account. This action does not support partial updates. No parameters are required, but if you do not specify a parameter, that parameter's value reverts to its default value. See the Request Parameters section for each parameter's default value. For more information about using a password policy, see Managing an IAM Password Policy in the IAM User Guide. - */ - updateAccountPasswordPolicy(params: IAM.Types.UpdateAccountPasswordPolicyRequest, callback?: (err: AWSError, data: {}) => void): Request<{}, AWSError>; - /** - * Updates the password policy settings for the AWS account. This action does not support partial updates. No parameters are required, but if you do not specify a parameter, that parameter's value reverts to its default value. See the Request Parameters section for each parameter's default value. For more information about using a password policy, see Managing an IAM Password Policy in the IAM User Guide. - */ - updateAccountPasswordPolicy(callback?: (err: AWSError, data: {}) => void): Request<{}, AWSError>; - /** - * Updates the policy that grants an IAM entity permission to assume a role. This is typically referred to as the "role trust policy". For more information about roles, go to Using Roles to Delegate Permissions and Federate Identities. - */ - updateAssumeRolePolicy(params: IAM.Types.UpdateAssumeRolePolicyRequest, callback?: (err: AWSError, data: {}) => void): Request<{}, AWSError>; - /** - * Updates the policy that grants an IAM entity permission to assume a role. This is typically referred to as the "role trust policy". For more information about roles, go to Using Roles to Delegate Permissions and Federate Identities. - */ - updateAssumeRolePolicy(callback?: (err: AWSError, data: {}) => void): Request<{}, AWSError>; - /** - * Updates the name and/or the path of the specified IAM group. You should understand the implications of changing a group's path or name. For more information, see Renaming Users and Groups in the IAM User Guide. To change an IAM group name the requester must have appropriate permissions on both the source object and the target object. For example, to change "Managers" to "MGRs", the entity making the request must have permission on both "Managers" and "MGRs", or must have permission on all (*). For more information about permissions, see Permissions and Policies. - */ - updateGroup(params: IAM.Types.UpdateGroupRequest, callback?: (err: AWSError, data: {}) => void): Request<{}, AWSError>; - /** - * Updates the name and/or the path of the specified IAM group. You should understand the implications of changing a group's path or name. For more information, see Renaming Users and Groups in the IAM User Guide. To change an IAM group name the requester must have appropriate permissions on both the source object and the target object. For example, to change "Managers" to "MGRs", the entity making the request must have permission on both "Managers" and "MGRs", or must have permission on all (*). For more information about permissions, see Permissions and Policies. - */ - updateGroup(callback?: (err: AWSError, data: {}) => void): Request<{}, AWSError>; - /** - * Changes the password for the specified IAM user. IAM users can change their own passwords by calling ChangePassword. For more information about modifying passwords, see Managing Passwords in the IAM User Guide. - */ - updateLoginProfile(params: IAM.Types.UpdateLoginProfileRequest, callback?: (err: AWSError, data: {}) => void): Request<{}, AWSError>; - /** - * Changes the password for the specified IAM user. IAM users can change their own passwords by calling ChangePassword. For more information about modifying passwords, see Managing Passwords in the IAM User Guide. - */ - updateLoginProfile(callback?: (err: AWSError, data: {}) => void): Request<{}, AWSError>; - /** - * Replaces the existing list of server certificate thumbprints associated with an OpenID Connect (OIDC) provider resource object with a new list of thumbprints. The list that you pass with this action completely replaces the existing list of thumbprints. (The lists are not merged.) Typically, you need to update a thumbprint only when the identity provider's certificate changes, which occurs rarely. However, if the provider's certificate does change, any attempt to assume an IAM role that specifies the OIDC provider as a principal fails until the certificate thumbprint is updated. Because trust for the OIDC provider is ultimately derived from the provider's certificate and is validated by the thumbprint, it is a best practice to limit access to the UpdateOpenIDConnectProviderThumbprint action to highly-privileged users. - */ - updateOpenIDConnectProviderThumbprint(params: IAM.Types.UpdateOpenIDConnectProviderThumbprintRequest, callback?: (err: AWSError, data: {}) => void): Request<{}, AWSError>; - /** - * Replaces the existing list of server certificate thumbprints associated with an OpenID Connect (OIDC) provider resource object with a new list of thumbprints. The list that you pass with this action completely replaces the existing list of thumbprints. (The lists are not merged.) Typically, you need to update a thumbprint only when the identity provider's certificate changes, which occurs rarely. However, if the provider's certificate does change, any attempt to assume an IAM role that specifies the OIDC provider as a principal fails until the certificate thumbprint is updated. Because trust for the OIDC provider is ultimately derived from the provider's certificate and is validated by the thumbprint, it is a best practice to limit access to the UpdateOpenIDConnectProviderThumbprint action to highly-privileged users. - */ - updateOpenIDConnectProviderThumbprint(callback?: (err: AWSError, data: {}) => void): Request<{}, AWSError>; - /** - * Modifies the description of a role. - */ - updateRoleDescription(params: IAM.Types.UpdateRoleDescriptionRequest, callback?: (err: AWSError, data: IAM.Types.UpdateRoleDescriptionResponse) => void): Request; - /** - * Modifies the description of a role. - */ - updateRoleDescription(callback?: (err: AWSError, data: IAM.Types.UpdateRoleDescriptionResponse) => void): Request; - /** - * Updates the metadata document for an existing SAML provider resource object. This operation requires Signature Version 4. - */ - updateSAMLProvider(params: IAM.Types.UpdateSAMLProviderRequest, callback?: (err: AWSError, data: IAM.Types.UpdateSAMLProviderResponse) => void): Request; - /** - * Updates the metadata document for an existing SAML provider resource object. This operation requires Signature Version 4. - */ - updateSAMLProvider(callback?: (err: AWSError, data: IAM.Types.UpdateSAMLProviderResponse) => void): Request; - /** - * Sets the status of an IAM user's SSH public key to active or inactive. SSH public keys that are inactive cannot be used for authentication. This action can be used to disable a user's SSH public key as part of a key rotation work flow. The SSH public key affected by this action is used only for authenticating the associated IAM user to an AWS CodeCommit repository. For more information about using SSH keys to authenticate to an AWS CodeCommit repository, see Set up AWS CodeCommit for SSH Connections in the AWS CodeCommit User Guide. - */ - updateSSHPublicKey(params: IAM.Types.UpdateSSHPublicKeyRequest, callback?: (err: AWSError, data: {}) => void): Request<{}, AWSError>; - /** - * Sets the status of an IAM user's SSH public key to active or inactive. SSH public keys that are inactive cannot be used for authentication. This action can be used to disable a user's SSH public key as part of a key rotation work flow. The SSH public key affected by this action is used only for authenticating the associated IAM user to an AWS CodeCommit repository. For more information about using SSH keys to authenticate to an AWS CodeCommit repository, see Set up AWS CodeCommit for SSH Connections in the AWS CodeCommit User Guide. - */ - updateSSHPublicKey(callback?: (err: AWSError, data: {}) => void): Request<{}, AWSError>; - /** - * Updates the name and/or the path of the specified server certificate stored in IAM. For more information about working with server certificates, including a list of AWS services that can use the server certificates that you manage with IAM, go to Working with Server Certificates in the IAM User Guide. You should understand the implications of changing a server certificate's path or name. For more information, see Renaming a Server Certificate in the IAM User Guide. To change a server certificate name the requester must have appropriate permissions on both the source object and the target object. For example, to change the name from "ProductionCert" to "ProdCert", the entity making the request must have permission on "ProductionCert" and "ProdCert", or must have permission on all (*). For more information about permissions, see Access Management in the IAM User Guide. - */ - updateServerCertificate(params: IAM.Types.UpdateServerCertificateRequest, callback?: (err: AWSError, data: {}) => void): Request<{}, AWSError>; - /** - * Updates the name and/or the path of the specified server certificate stored in IAM. For more information about working with server certificates, including a list of AWS services that can use the server certificates that you manage with IAM, go to Working with Server Certificates in the IAM User Guide. You should understand the implications of changing a server certificate's path or name. For more information, see Renaming a Server Certificate in the IAM User Guide. To change a server certificate name the requester must have appropriate permissions on both the source object and the target object. For example, to change the name from "ProductionCert" to "ProdCert", the entity making the request must have permission on "ProductionCert" and "ProdCert", or must have permission on all (*). For more information about permissions, see Access Management in the IAM User Guide. - */ - updateServerCertificate(callback?: (err: AWSError, data: {}) => void): Request<{}, AWSError>; - /** - * Sets the status of a service-specific credential to Active or Inactive. Service-specific credentials that are inactive cannot be used for authentication to the service. This action can be used to disable a user’s service-specific credential as part of a credential rotation work flow. - */ - updateServiceSpecificCredential(params: IAM.Types.UpdateServiceSpecificCredentialRequest, callback?: (err: AWSError, data: {}) => void): Request<{}, AWSError>; - /** - * Sets the status of a service-specific credential to Active or Inactive. Service-specific credentials that are inactive cannot be used for authentication to the service. This action can be used to disable a user’s service-specific credential as part of a credential rotation work flow. - */ - updateServiceSpecificCredential(callback?: (err: AWSError, data: {}) => void): Request<{}, AWSError>; - /** - * Changes the status of the specified user signing certificate from active to disabled, or vice versa. This action can be used to disable an IAM user's signing certificate as part of a certificate rotation work flow. If the UserName field is not specified, the UserName is determined implicitly based on the AWS access key ID used to sign the request. Because this action works for access keys under the AWS account, you can use this action to manage root credentials even if the AWS account has no associated users. - */ - updateSigningCertificate(params: IAM.Types.UpdateSigningCertificateRequest, callback?: (err: AWSError, data: {}) => void): Request<{}, AWSError>; - /** - * Changes the status of the specified user signing certificate from active to disabled, or vice versa. This action can be used to disable an IAM user's signing certificate as part of a certificate rotation work flow. If the UserName field is not specified, the UserName is determined implicitly based on the AWS access key ID used to sign the request. Because this action works for access keys under the AWS account, you can use this action to manage root credentials even if the AWS account has no associated users. - */ - updateSigningCertificate(callback?: (err: AWSError, data: {}) => void): Request<{}, AWSError>; - /** - * Updates the name and/or the path of the specified IAM user. You should understand the implications of changing an IAM user's path or name. For more information, see Renaming an IAM User and Renaming an IAM Group in the IAM User Guide. To change a user name the requester must have appropriate permissions on both the source object and the target object. For example, to change Bob to Robert, the entity making the request must have permission on Bob and Robert, or must have permission on all (*). For more information about permissions, see Permissions and Policies. - */ - updateUser(params: IAM.Types.UpdateUserRequest, callback?: (err: AWSError, data: {}) => void): Request<{}, AWSError>; - /** - * Updates the name and/or the path of the specified IAM user. You should understand the implications of changing an IAM user's path or name. For more information, see Renaming an IAM User and Renaming an IAM Group in the IAM User Guide. To change a user name the requester must have appropriate permissions on both the source object and the target object. For example, to change Bob to Robert, the entity making the request must have permission on Bob and Robert, or must have permission on all (*). For more information about permissions, see Permissions and Policies. - */ - updateUser(callback?: (err: AWSError, data: {}) => void): Request<{}, AWSError>; - /** - * Uploads an SSH public key and associates it with the specified IAM user. The SSH public key uploaded by this action can be used only for authenticating the associated IAM user to an AWS CodeCommit repository. For more information about using SSH keys to authenticate to an AWS CodeCommit repository, see Set up AWS CodeCommit for SSH Connections in the AWS CodeCommit User Guide. - */ - uploadSSHPublicKey(params: IAM.Types.UploadSSHPublicKeyRequest, callback?: (err: AWSError, data: IAM.Types.UploadSSHPublicKeyResponse) => void): Request; - /** - * Uploads an SSH public key and associates it with the specified IAM user. The SSH public key uploaded by this action can be used only for authenticating the associated IAM user to an AWS CodeCommit repository. For more information about using SSH keys to authenticate to an AWS CodeCommit repository, see Set up AWS CodeCommit for SSH Connections in the AWS CodeCommit User Guide. - */ - uploadSSHPublicKey(callback?: (err: AWSError, data: IAM.Types.UploadSSHPublicKeyResponse) => void): Request; - /** - * Uploads a server certificate entity for the AWS account. The server certificate entity includes a public key certificate, a private key, and an optional certificate chain, which should all be PEM-encoded. We recommend that you use AWS Certificate Manager to provision, manage, and deploy your server certificates. With ACM you can request a certificate, deploy it to AWS resources, and let ACM handle certificate renewals for you. Certificates provided by ACM are free. For more information about using ACM, see the AWS Certificate Manager User Guide. For more information about working with server certificates, including a list of AWS services that can use the server certificates that you manage with IAM, go to Working with Server Certificates in the IAM User Guide. For information about the number of server certificates you can upload, see Limitations on IAM Entities and Objects in the IAM User Guide. Because the body of the public key certificate, private key, and the certificate chain can be large, you should use POST rather than GET when calling UploadServerCertificate. For information about setting up signatures and authorization through the API, go to Signing AWS API Requests in the AWS General Reference. For general information about using the Query API with IAM, go to Calling the API by Making HTTP Query Requests in the IAM User Guide. - */ - uploadServerCertificate(params: IAM.Types.UploadServerCertificateRequest, callback?: (err: AWSError, data: IAM.Types.UploadServerCertificateResponse) => void): Request; - /** - * Uploads a server certificate entity for the AWS account. The server certificate entity includes a public key certificate, a private key, and an optional certificate chain, which should all be PEM-encoded. We recommend that you use AWS Certificate Manager to provision, manage, and deploy your server certificates. With ACM you can request a certificate, deploy it to AWS resources, and let ACM handle certificate renewals for you. Certificates provided by ACM are free. For more information about using ACM, see the AWS Certificate Manager User Guide. For more information about working with server certificates, including a list of AWS services that can use the server certificates that you manage with IAM, go to Working with Server Certificates in the IAM User Guide. For information about the number of server certificates you can upload, see Limitations on IAM Entities and Objects in the IAM User Guide. Because the body of the public key certificate, private key, and the certificate chain can be large, you should use POST rather than GET when calling UploadServerCertificate. For information about setting up signatures and authorization through the API, go to Signing AWS API Requests in the AWS General Reference. For general information about using the Query API with IAM, go to Calling the API by Making HTTP Query Requests in the IAM User Guide. - */ - uploadServerCertificate(callback?: (err: AWSError, data: IAM.Types.UploadServerCertificateResponse) => void): Request; - /** - * Uploads an X.509 signing certificate and associates it with the specified IAM user. Some AWS services use X.509 signing certificates to validate requests that are signed with a corresponding private key. When you upload the certificate, its default status is Active. If the UserName field is not specified, the IAM user name is determined implicitly based on the AWS access key ID used to sign the request. Because this action works for access keys under the AWS account, you can use this action to manage root credentials even if the AWS account has no associated users. Because the body of a X.509 certificate can be large, you should use POST rather than GET when calling UploadSigningCertificate. For information about setting up signatures and authorization through the API, go to Signing AWS API Requests in the AWS General Reference. For general information about using the Query API with IAM, go to Making Query Requests in the IAM User Guide. - */ - uploadSigningCertificate(params: IAM.Types.UploadSigningCertificateRequest, callback?: (err: AWSError, data: IAM.Types.UploadSigningCertificateResponse) => void): Request; - /** - * Uploads an X.509 signing certificate and associates it with the specified IAM user. Some AWS services use X.509 signing certificates to validate requests that are signed with a corresponding private key. When you upload the certificate, its default status is Active. If the UserName field is not specified, the IAM user name is determined implicitly based on the AWS access key ID used to sign the request. Because this action works for access keys under the AWS account, you can use this action to manage root credentials even if the AWS account has no associated users. Because the body of a X.509 certificate can be large, you should use POST rather than GET when calling UploadSigningCertificate. For information about setting up signatures and authorization through the API, go to Signing AWS API Requests in the AWS General Reference. For general information about using the Query API with IAM, go to Making Query Requests in the IAM User Guide. - */ - uploadSigningCertificate(callback?: (err: AWSError, data: IAM.Types.UploadSigningCertificateResponse) => void): Request; - /** - * Waits for the instanceProfileExists state by periodically calling the underlying IAM.getInstanceProfileoperation every 1 seconds (at most 40 times). - */ - waitFor(state: "instanceProfileExists", params: IAM.Types.GetInstanceProfileRequest, callback?: (err: AWSError, data: IAM.Types.GetInstanceProfileResponse) => void): Request; - /** - * Waits for the instanceProfileExists state by periodically calling the underlying IAM.getInstanceProfileoperation every 1 seconds (at most 40 times). - */ - waitFor(state: "instanceProfileExists", callback?: (err: AWSError, data: IAM.Types.GetInstanceProfileResponse) => void): Request; - /** - * Waits for the userExists state by periodically calling the underlying IAM.getUseroperation every 1 seconds (at most 20 times). - */ - waitFor(state: "userExists", params: IAM.Types.GetUserRequest, callback?: (err: AWSError, data: IAM.Types.GetUserResponse) => void): Request; - /** - * Waits for the userExists state by periodically calling the underlying IAM.getUseroperation every 1 seconds (at most 20 times). - */ - waitFor(state: "userExists", callback?: (err: AWSError, data: IAM.Types.GetUserResponse) => void): Request; -} -declare namespace IAM { - export interface AccessKey { - /** - * The name of the IAM user that the access key is associated with. - */ - UserName: userNameType; - /** - * The ID for this access key. - */ - AccessKeyId: accessKeyIdType; - /** - * The status of the access key. Active means the key is valid for API calls, while Inactive means it is not. - */ - Status: statusType; - /** - * The secret key used to sign requests. - */ - SecretAccessKey: accessKeySecretType; - /** - * The date when the access key was created. - */ - CreateDate?: dateType; - } - export interface AccessKeyLastUsed { - /** - * The date and time, in ISO 8601 date-time format, when the access key was most recently used. This field is null when: The user does not have an access key. An access key exists but has never been used, at least not since IAM started tracking this information on April 22nd, 2015. There is no sign-in data associated with the user - */ - LastUsedDate: dateType; - /** - * The name of the AWS service with which this access key was most recently used. This field displays "N/A" when: The user does not have an access key. An access key exists but has never been used, at least not since IAM started tracking this information on April 22nd, 2015. There is no sign-in data associated with the user - */ - ServiceName: stringType; - /** - * The AWS region where this access key was most recently used. This field is displays "N/A" when: The user does not have an access key. An access key exists but has never been used, at least not since IAM started tracking this information on April 22nd, 2015. There is no sign-in data associated with the user For more information about AWS regions, see Regions and Endpoints in the Amazon Web Services General Reference. - */ - Region: stringType; - } - export interface AccessKeyMetadata { - /** - * The name of the IAM user that the key is associated with. - */ - UserName?: userNameType; - /** - * The ID for this access key. - */ - AccessKeyId?: accessKeyIdType; - /** - * The status of the access key. Active means the key is valid for API calls; Inactive means it is not. - */ - Status?: statusType; - /** - * The date when the access key was created. - */ - CreateDate?: dateType; - } - export type ActionNameListType = ActionNameType[]; - export type ActionNameType = string; - export interface AddClientIDToOpenIDConnectProviderRequest { - /** - * The Amazon Resource Name (ARN) of the IAM OpenID Connect (OIDC) provider resource to add the client ID to. You can get a list of OIDC provider ARNs by using the ListOpenIDConnectProviders action. - */ - OpenIDConnectProviderArn: arnType; - /** - * The client ID (also known as audience) to add to the IAM OpenID Connect provider resource. - */ - ClientID: clientIDType; - } - export interface AddRoleToInstanceProfileRequest { - /** - * The name of the instance profile to update. This parameter allows (per its regex pattern) a string of characters consisting of upper and lowercase alphanumeric characters with no spaces. You can also include any of the following characters: =,.@- - */ - InstanceProfileName: instanceProfileNameType; - /** - * The name of the role to add. This parameter allows (per its regex pattern) a string of characters consisting of upper and lowercase alphanumeric characters with no spaces. You can also include any of the following characters: _+=,.@- - */ - RoleName: roleNameType; - } - export interface AddUserToGroupRequest { - /** - * The name of the group to update. This parameter allows (per its regex pattern) a string of characters consisting of upper and lowercase alphanumeric characters with no spaces. You can also include any of the following characters: =,.@- - */ - GroupName: groupNameType; - /** - * The name of the user to add. This parameter allows (per its regex pattern) a string of characters consisting of upper and lowercase alphanumeric characters with no spaces. You can also include any of the following characters: =,.@- - */ - UserName: existingUserNameType; - } - export type ArnListType = arnType[]; - export interface AttachGroupPolicyRequest { - /** - * The name (friendly name, not ARN) of the group to attach the policy to. This parameter allows (per its regex pattern) a string of characters consisting of upper and lowercase alphanumeric characters with no spaces. You can also include any of the following characters: =,.@- - */ - GroupName: groupNameType; - /** - * The Amazon Resource Name (ARN) of the IAM policy you want to attach. For more information about ARNs, see Amazon Resource Names (ARNs) and AWS Service Namespaces in the AWS General Reference. - */ - PolicyArn: arnType; - } - export interface AttachRolePolicyRequest { - /** - * The name (friendly name, not ARN) of the role to attach the policy to. This parameter allows (per its regex pattern) a string of characters consisting of upper and lowercase alphanumeric characters with no spaces. You can also include any of the following characters: _+=,.@- - */ - RoleName: roleNameType; - /** - * The Amazon Resource Name (ARN) of the IAM policy you want to attach. For more information about ARNs, see Amazon Resource Names (ARNs) and AWS Service Namespaces in the AWS General Reference. - */ - PolicyArn: arnType; - } - export interface AttachUserPolicyRequest { - /** - * The name (friendly name, not ARN) of the IAM user to attach the policy to. This parameter allows (per its regex pattern) a string of characters consisting of upper and lowercase alphanumeric characters with no spaces. You can also include any of the following characters: =,.@- - */ - UserName: userNameType; - /** - * The Amazon Resource Name (ARN) of the IAM policy you want to attach. For more information about ARNs, see Amazon Resource Names (ARNs) and AWS Service Namespaces in the AWS General Reference. - */ - PolicyArn: arnType; - } - export interface AttachedPolicy { - /** - * The friendly name of the attached policy. - */ - PolicyName?: policyNameType; - PolicyArn?: arnType; - } - export type BootstrapDatum = Buffer|Uint8Array|Blob|string; - export interface ChangePasswordRequest { - /** - * The IAM user's current password. - */ - OldPassword: passwordType; - /** - * The new password. The new password must conform to the AWS account's password policy, if one exists. The regex pattern used to validate this parameter is a string of characters consisting of almost any printable ASCII character from the space (\u0020) through the end of the ASCII character range (\u00FF). You can also include the tab (\u0009), line feed (\u000A), and carriage return (\u000D) characters. Although any of these characters are valid in a password, note that many tools, such as the AWS Management Console, might restrict the ability to enter certain characters because they have special meaning within that tool. - */ - NewPassword: passwordType; - } - export type ColumnNumber = number; - export interface ContextEntry { - /** - * The full name of a condition context key, including the service prefix. For example, aws:SourceIp or s3:VersionId. - */ - ContextKeyName?: ContextKeyNameType; - /** - * The value (or values, if the condition context key supports multiple values) to provide to the simulation for use when the key is referenced by a Condition element in an input policy. - */ - ContextKeyValues?: ContextKeyValueListType; - /** - * The data type of the value (or values) specified in the ContextKeyValues parameter. - */ - ContextKeyType?: ContextKeyTypeEnum; - } - export type ContextEntryListType = ContextEntry[]; - export type ContextKeyNameType = string; - export type ContextKeyNamesResultListType = ContextKeyNameType[]; - export type ContextKeyTypeEnum = "string"|"stringList"|"numeric"|"numericList"|"boolean"|"booleanList"|"ip"|"ipList"|"binary"|"binaryList"|"date"|"dateList"|string; - export type ContextKeyValueListType = ContextKeyValueType[]; - export type ContextKeyValueType = string; - export interface CreateAccessKeyRequest { - /** - * The name of the IAM user that the new key will belong to. This parameter allows (per its regex pattern) a string of characters consisting of upper and lowercase alphanumeric characters with no spaces. You can also include any of the following characters: =,.@- - */ - UserName?: existingUserNameType; - } - export interface CreateAccessKeyResponse { - /** - * A structure with details about the access key. - */ - AccessKey: AccessKey; - } - export interface CreateAccountAliasRequest { - /** - * The account alias to create. This parameter allows (per its regex pattern) a string of characters consisting of lowercase letters, digits, and dashes. You cannot start or finish with a dash, nor can you have two dashes in a row. - */ - AccountAlias: accountAliasType; - } - export interface CreateGroupRequest { - /** - * The path to the group. For more information about paths, see IAM Identifiers in the IAM User Guide. This parameter is optional. If it is not included, it defaults to a slash (/). This paramater allows (per its regex pattern) a string of characters consisting of either a forward slash (/) by itself or a string that must begin and end with forward slashes, containing any ASCII character from the ! (\u0021) thru the DEL character (\u007F), including most punctuation characters, digits, and upper and lowercased letters. - */ - Path?: pathType; - /** - * The name of the group to create. Do not include the path in this value. This parameter allows (per its regex pattern) a string of characters consisting of upper and lowercase alphanumeric characters with no spaces. You can also include any of the following characters: =,.@-. The group name must be unique within the account. Group names are not distinguished by case. For example, you cannot create groups named both "ADMINS" and "admins". - */ - GroupName: groupNameType; - } - export interface CreateGroupResponse { - /** - * A structure containing details about the new group. - */ - Group: Group; - } - export interface CreateInstanceProfileRequest { - /** - * The name of the instance profile to create. This parameter allows (per its regex pattern) a string of characters consisting of upper and lowercase alphanumeric characters with no spaces. You can also include any of the following characters: =,.@- - */ - InstanceProfileName: instanceProfileNameType; - /** - * The path to the instance profile. For more information about paths, see IAM Identifiers in the IAM User Guide. This parameter is optional. If it is not included, it defaults to a slash (/). This paramater allows (per its regex pattern) a string of characters consisting of either a forward slash (/) by itself or a string that must begin and end with forward slashes, containing any ASCII character from the ! (\u0021) thru the DEL character (\u007F), including most punctuation characters, digits, and upper and lowercased letters. - */ - Path?: pathType; - } - export interface CreateInstanceProfileResponse { - /** - * A structure containing details about the new instance profile. - */ - InstanceProfile: InstanceProfile; - } - export interface CreateLoginProfileRequest { - /** - * The name of the IAM user to create a password for. The user must already exist. This parameter allows (per its regex pattern) a string of characters consisting of upper and lowercase alphanumeric characters with no spaces. You can also include any of the following characters: =,.@- - */ - UserName: userNameType; - /** - * The new password for the user. The regex pattern used to validate this parameter is a string of characters consisting of almost any printable ASCII character from the space (\u0020) through the end of the ASCII character range (\u00FF). You can also include the tab (\u0009), line feed (\u000A), and carriage return (\u000D) characters. Although any of these characters are valid in a password, note that many tools, such as the AWS Management Console, might restrict the ability to enter certain characters because they have special meaning within that tool. - */ - Password: passwordType; - /** - * Specifies whether the user is required to set a new password on next sign-in. - */ - PasswordResetRequired?: booleanType; - } - export interface CreateLoginProfileResponse { - /** - * A structure containing the user name and password create date. - */ - LoginProfile: LoginProfile; - } - export interface CreateOpenIDConnectProviderRequest { - /** - * The URL of the identity provider. The URL must begin with "https://" and should correspond to the iss claim in the provider's OpenID Connect ID tokens. Per the OIDC standard, path components are allowed but query parameters are not. Typically the URL consists of only a host name, like "https://server.example.org" or "https://example.com". You cannot register the same provider multiple times in a single AWS account. If you try to submit a URL that has already been used for an OpenID Connect provider in the AWS account, you will get an error. - */ - Url: OpenIDConnectProviderUrlType; - /** - * A list of client IDs (also known as audiences). When a mobile or web app registers with an OpenID Connect provider, they establish a value that identifies the application. (This is the value that's sent as the client_id parameter on OAuth requests.) You can register multiple client IDs with the same provider. For example, you might have multiple applications that use the same OIDC provider. You cannot register more than 100 client IDs with a single IAM OIDC provider. There is no defined format for a client ID. The CreateOpenIDConnectProviderRequest action accepts client IDs up to 255 characters long. - */ - ClientIDList?: clientIDListType; - /** - * A list of server certificate thumbprints for the OpenID Connect (OIDC) identity provider's server certificate(s). Typically this list includes only one entry. However, IAM lets you have up to five thumbprints for an OIDC provider. This lets you maintain multiple thumbprints if the identity provider is rotating certificates. The server certificate thumbprint is the hex-encoded SHA-1 hash value of the X.509 certificate used by the domain where the OpenID Connect provider makes its keys available. It is always a 40-character string. You must provide at least one thumbprint when creating an IAM OIDC provider. For example, if the OIDC provider is server.example.com and the provider stores its keys at "https://keys.server.example.com/openid-connect", the thumbprint string would be the hex-encoded SHA-1 hash value of the certificate used by https://keys.server.example.com. For more information about obtaining the OIDC provider's thumbprint, see Obtaining the Thumbprint for an OpenID Connect Provider in the IAM User Guide. - */ - ThumbprintList: thumbprintListType; - } - export interface CreateOpenIDConnectProviderResponse { - /** - * The Amazon Resource Name (ARN) of the new IAM OpenID Connect provider that is created. For more information, see OpenIDConnectProviderListEntry. - */ - OpenIDConnectProviderArn?: arnType; - } - export interface CreatePolicyRequest { - /** - * The friendly name of the policy. This parameter allows (per its regex pattern) a string of characters consisting of upper and lowercase alphanumeric characters with no spaces. You can also include any of the following characters: =,.@-+ - */ - PolicyName: policyNameType; - /** - * The path for the policy. For more information about paths, see IAM Identifiers in the IAM User Guide. This parameter is optional. If it is not included, it defaults to a slash (/). This paramater allows (per its regex pattern) a string of characters consisting of either a forward slash (/) by itself or a string that must begin and end with forward slashes, containing any ASCII character from the ! (\u0021) thru the DEL character (\u007F), including most punctuation characters, digits, and upper and lowercased letters. - */ - Path?: policyPathType; - /** - * The JSON policy document that you want to use as the content for the new policy. The regex pattern used to validate this parameter is a string of characters consisting of any printable ASCII character ranging from the space character (\u0020) through end of the ASCII character range as well as the printable characters in the Basic Latin and Latin-1 Supplement character set (through \u00FF). It also includes the special characters tab (\u0009), line feed (\u000A), and carriage return (\u000D). - */ - PolicyDocument: policyDocumentType; - /** - * A friendly description of the policy. Typically used to store information about the permissions defined in the policy. For example, "Grants access to production DynamoDB tables." The policy description is immutable. After a value is assigned, it cannot be changed. - */ - Description?: policyDescriptionType; - } - export interface CreatePolicyResponse { - /** - * A structure containing details about the new policy. - */ - Policy?: Policy; - } - export interface CreatePolicyVersionRequest { - /** - * The Amazon Resource Name (ARN) of the IAM policy to which you want to add a new version. For more information about ARNs, see Amazon Resource Names (ARNs) and AWS Service Namespaces in the AWS General Reference. - */ - PolicyArn: arnType; - /** - * The JSON policy document that you want to use as the content for this new version of the policy. The regex pattern used to validate this parameter is a string of characters consisting of any printable ASCII character ranging from the space character (\u0020) through end of the ASCII character range as well as the printable characters in the Basic Latin and Latin-1 Supplement character set (through \u00FF). It also includes the special characters tab (\u0009), line feed (\u000A), and carriage return (\u000D). - */ - PolicyDocument: policyDocumentType; - /** - * Specifies whether to set this version as the policy's default version. When this parameter is true, the new policy version becomes the operative version; that is, the version that is in effect for the IAM users, groups, and roles that the policy is attached to. For more information about managed policy versions, see Versioning for Managed Policies in the IAM User Guide. - */ - SetAsDefault?: booleanType; - } - export interface CreatePolicyVersionResponse { - /** - * A structure containing details about the new policy version. - */ - PolicyVersion?: PolicyVersion; - } - export interface CreateRoleRequest { - /** - * The path to the role. For more information about paths, see IAM Identifiers in the IAM User Guide. This parameter is optional. If it is not included, it defaults to a slash (/). This paramater allows (per its regex pattern) a string of characters consisting of either a forward slash (/) by itself or a string that must begin and end with forward slashes, containing any ASCII character from the ! (\u0021) thru the DEL character (\u007F), including most punctuation characters, digits, and upper and lowercased letters. - */ - Path?: pathType; - /** - * The name of the role to create. This parameter allows (per its regex pattern) a string of characters consisting of upper and lowercase alphanumeric characters with no spaces. You can also include any of the following characters: _+=,.@- Role names are not distinguished by case. For example, you cannot create roles named both "PRODROLE" and "prodrole". - */ - RoleName: roleNameType; - /** - * The trust relationship policy document that grants an entity permission to assume the role. The regex pattern used to validate this parameter is a string of characters consisting of any printable ASCII character ranging from the space character (\u0020) through end of the ASCII character range as well as the printable characters in the Basic Latin and Latin-1 Supplement character set (through \u00FF). It also includes the special characters tab (\u0009), line feed (\u000A), and carriage return (\u000D). - */ - AssumeRolePolicyDocument: policyDocumentType; - /** - * A customer-provided description of the role. - */ - Description?: roleDescriptionType; - } - export interface CreateRoleResponse { - /** - * A structure containing details about the new role. - */ - Role: Role; - } - export interface CreateSAMLProviderRequest { - /** - * An XML document generated by an identity provider (IdP) that supports SAML 2.0. The document includes the issuer's name, expiration information, and keys that can be used to validate the SAML authentication response (assertions) that are received from the IdP. You must generate the metadata document using the identity management software that is used as your organization's IdP. For more information, see About SAML 2.0-based Federation in the IAM User Guide - */ - SAMLMetadataDocument: SAMLMetadataDocumentType; - /** - * The name of the provider to create. This parameter allows (per its regex pattern) a string of characters consisting of upper and lowercase alphanumeric characters with no spaces. You can also include any of the following characters: =,.@- - */ - Name: SAMLProviderNameType; - } - export interface CreateSAMLProviderResponse { - /** - * The Amazon Resource Name (ARN) of the new SAML provider resource in IAM. - */ - SAMLProviderArn?: arnType; - } - export interface CreateServiceLinkedRoleRequest { - /** - * The AWS service to which this role is attached. You use a string similar to a URL but without the http:// in front. For example: elasticbeanstalk.amazonaws.com - */ - AWSServiceName: groupNameType; - /** - * The description of the role. - */ - Description?: roleDescriptionType; - /** - * A string that you provide, which is combined with the service name to form the complete role name. If you make multiple requests for the same service, then you must supply a different CustomSuffix for each request. Otherwise the request fails with a duplicate role name error. For example, you could add -1 or -debug to the suffix. - */ - CustomSuffix?: customSuffixType; - } - export interface CreateServiceLinkedRoleResponse { - /** - * A Role object that contains details about the newly created role. - */ - Role?: Role; - } - export interface CreateServiceSpecificCredentialRequest { - /** - * The name of the IAM user that is to be associated with the credentials. The new service-specific credentials have the same permissions as the associated user except that they can be used only to access the specified service. This parameter allows (per its regex pattern) a string of characters consisting of upper and lowercase alphanumeric characters with no spaces. You can also include any of the following characters: =,.@- - */ - UserName: userNameType; - /** - * The name of the AWS service that is to be associated with the credentials. The service you specify here is the only service that can be accessed using these credentials. - */ - ServiceName: serviceName; - } - export interface CreateServiceSpecificCredentialResponse { - /** - * A structure that contains information about the newly created service-specific credential. This is the only time that the password for this credential set is available. It cannot be recovered later. Instead, you will have to reset the password with ResetServiceSpecificCredential. - */ - ServiceSpecificCredential?: ServiceSpecificCredential; - } - export interface CreateUserRequest { - /** - * The path for the user name. For more information about paths, see IAM Identifiers in the IAM User Guide. This parameter is optional. If it is not included, it defaults to a slash (/). This paramater allows (per its regex pattern) a string of characters consisting of either a forward slash (/) by itself or a string that must begin and end with forward slashes, containing any ASCII character from the ! (\u0021) thru the DEL character (\u007F), including most punctuation characters, digits, and upper and lowercased letters. - */ - Path?: pathType; - /** - * The name of the user to create. This parameter allows (per its regex pattern) a string of characters consisting of upper and lowercase alphanumeric characters with no spaces. You can also include any of the following characters: =,.@-. User names are not distinguished by case. For example, you cannot create users named both "TESTUSER" and "testuser". - */ - UserName: userNameType; - } - export interface CreateUserResponse { - /** - * A structure with details about the new IAM user. - */ - User?: User; - } - export interface CreateVirtualMFADeviceRequest { - /** - * The path for the virtual MFA device. For more information about paths, see IAM Identifiers in the IAM User Guide. This parameter is optional. If it is not included, it defaults to a slash (/). This paramater allows (per its regex pattern) a string of characters consisting of either a forward slash (/) by itself or a string that must begin and end with forward slashes, containing any ASCII character from the ! (\u0021) thru the DEL character (\u007F), including most punctuation characters, digits, and upper and lowercased letters. - */ - Path?: pathType; - /** - * The name of the virtual MFA device. Use with path to uniquely identify a virtual MFA device. This parameter allows (per its regex pattern) a string of characters consisting of upper and lowercase alphanumeric characters with no spaces. You can also include any of the following characters: =,.@- - */ - VirtualMFADeviceName: virtualMFADeviceName; - } - export interface CreateVirtualMFADeviceResponse { - /** - * A structure containing details about the new virtual MFA device. - */ - VirtualMFADevice: VirtualMFADevice; - } - export interface DeactivateMFADeviceRequest { - /** - * The name of the user whose MFA device you want to deactivate. This parameter allows (per its regex pattern) a string of characters consisting of upper and lowercase alphanumeric characters with no spaces. You can also include any of the following characters: =,.@- - */ - UserName: existingUserNameType; - /** - * The serial number that uniquely identifies the MFA device. For virtual MFA devices, the serial number is the device ARN. This parameter allows (per its regex pattern) a string of characters consisting of upper and lowercase alphanumeric characters with no spaces. You can also include any of the following characters: =,.@:/- - */ - SerialNumber: serialNumberType; - } - export interface DeleteAccessKeyRequest { - /** - * The name of the user whose access key pair you want to delete. This parameter allows (per its regex pattern) a string of characters consisting of upper and lowercase alphanumeric characters with no spaces. You can also include any of the following characters: =,.@- - */ - UserName?: existingUserNameType; - /** - * The access key ID for the access key ID and secret access key you want to delete. This parameter allows (per its regex pattern) a string of characters that can consist of any upper or lowercased letter or digit. - */ - AccessKeyId: accessKeyIdType; - } - export interface DeleteAccountAliasRequest { - /** - * The name of the account alias to delete. This parameter allows (per its regex pattern) a string of characters consisting of lowercase letters, digits, and dashes. You cannot start or finish with a dash, nor can you have two dashes in a row. - */ - AccountAlias: accountAliasType; - } - export interface DeleteGroupPolicyRequest { - /** - * The name (friendly name, not ARN) identifying the group that the policy is embedded in. This parameter allows (per its regex pattern) a string of characters consisting of upper and lowercase alphanumeric characters with no spaces. You can also include any of the following characters: =,.@- - */ - GroupName: groupNameType; - /** - * The name identifying the policy document to delete. This parameter allows (per its regex pattern) a string of characters consisting of upper and lowercase alphanumeric characters with no spaces. You can also include any of the following characters: =,.@-+ - */ - PolicyName: policyNameType; - } - export interface DeleteGroupRequest { - /** - * The name of the IAM group to delete. This parameter allows (per its regex pattern) a string of characters consisting of upper and lowercase alphanumeric characters with no spaces. You can also include any of the following characters: =,.@- - */ - GroupName: groupNameType; - } - export interface DeleteInstanceProfileRequest { - /** - * The name of the instance profile to delete. This parameter allows (per its regex pattern) a string of characters consisting of upper and lowercase alphanumeric characters with no spaces. You can also include any of the following characters: =,.@- - */ - InstanceProfileName: instanceProfileNameType; - } - export interface DeleteLoginProfileRequest { - /** - * The name of the user whose password you want to delete. This parameter allows (per its regex pattern) a string of characters consisting of upper and lowercase alphanumeric characters with no spaces. You can also include any of the following characters: =,.@- - */ - UserName: userNameType; - } - export interface DeleteOpenIDConnectProviderRequest { - /** - * The Amazon Resource Name (ARN) of the IAM OpenID Connect provider resource object to delete. You can get a list of OpenID Connect provider resource ARNs by using the ListOpenIDConnectProviders action. - */ - OpenIDConnectProviderArn: arnType; - } - export interface DeletePolicyRequest { - /** - * The Amazon Resource Name (ARN) of the IAM policy you want to delete. For more information about ARNs, see Amazon Resource Names (ARNs) and AWS Service Namespaces in the AWS General Reference. - */ - PolicyArn: arnType; - } - export interface DeletePolicyVersionRequest { - /** - * The Amazon Resource Name (ARN) of the IAM policy from which you want to delete a version. For more information about ARNs, see Amazon Resource Names (ARNs) and AWS Service Namespaces in the AWS General Reference. - */ - PolicyArn: arnType; - /** - * The policy version to delete. This parameter allows (per its regex pattern) a string of characters that consists of the lowercase letter 'v' followed by one or two digits, and optionally followed by a period '.' and a string of letters and digits. For more information about managed policy versions, see Versioning for Managed Policies in the IAM User Guide. - */ - VersionId: policyVersionIdType; - } - export interface DeleteRolePolicyRequest { - /** - * The name (friendly name, not ARN) identifying the role that the policy is embedded in. This parameter allows (per its regex pattern) a string of characters consisting of upper and lowercase alphanumeric characters with no spaces. You can also include any of the following characters: _+=,.@- - */ - RoleName: roleNameType; - /** - * The name of the inline policy to delete from the specified IAM role. This parameter allows (per its regex pattern) a string of characters consisting of upper and lowercase alphanumeric characters with no spaces. You can also include any of the following characters: =,.@-+ - */ - PolicyName: policyNameType; - } - export interface DeleteRoleRequest { - /** - * The name of the role to delete. This parameter allows (per its regex pattern) a string of characters consisting of upper and lowercase alphanumeric characters with no spaces. You can also include any of the following characters: _+=,.@- - */ - RoleName: roleNameType; - } - export interface DeleteSAMLProviderRequest { - /** - * The Amazon Resource Name (ARN) of the SAML provider to delete. - */ - SAMLProviderArn: arnType; - } - export interface DeleteSSHPublicKeyRequest { - /** - * The name of the IAM user associated with the SSH public key. This parameter allows (per its regex pattern) a string of characters consisting of upper and lowercase alphanumeric characters with no spaces. You can also include any of the following characters: =,.@- - */ - UserName: userNameType; - /** - * The unique identifier for the SSH public key. This parameter allows (per its regex pattern) a string of characters that can consist of any upper or lowercased letter or digit. - */ - SSHPublicKeyId: publicKeyIdType; - } - export interface DeleteServerCertificateRequest { - /** - * The name of the server certificate you want to delete. This parameter allows (per its regex pattern) a string of characters consisting of upper and lowercase alphanumeric characters with no spaces. You can also include any of the following characters: =,.@- - */ - ServerCertificateName: serverCertificateNameType; - } - export interface DeleteServiceLinkedRoleRequest { - /** - * The name of the service-linked role to be deleted. - */ - RoleName: roleNameType; - } - export interface DeleteServiceLinkedRoleResponse { - /** - * The deletion task identifier that you can use to check the status of the deletion. This identifier is returned in the format task/aws-service-role/<service-principal-name>/<role-name>/<task-uuid>. - */ - DeletionTaskId: DeletionTaskIdType; - } - export interface DeleteServiceSpecificCredentialRequest { - /** - * The name of the IAM user associated with the service-specific credential. If this value is not specified, then the operation assumes the user whose credentials are used to call the operation. This parameter allows (per its regex pattern) a string of characters consisting of upper and lowercase alphanumeric characters with no spaces. You can also include any of the following characters: =,.@- - */ - UserName?: userNameType; - /** - * The unique identifier of the service-specific credential. You can get this value by calling ListServiceSpecificCredentials. This parameter allows (per its regex pattern) a string of characters that can consist of any upper or lowercased letter or digit. - */ - ServiceSpecificCredentialId: serviceSpecificCredentialId; - } - export interface DeleteSigningCertificateRequest { - /** - * The name of the user the signing certificate belongs to. This parameter allows (per its regex pattern) a string of characters consisting of upper and lowercase alphanumeric characters with no spaces. You can also include any of the following characters: =,.@- - */ - UserName?: existingUserNameType; - /** - * The ID of the signing certificate to delete. The format of this parameter, as described by its regex pattern, is a string of characters that can be upper- or lower-cased letters or digits. - */ - CertificateId: certificateIdType; - } - export interface DeleteUserPolicyRequest { - /** - * The name (friendly name, not ARN) identifying the user that the policy is embedded in. This parameter allows (per its regex pattern) a string of characters consisting of upper and lowercase alphanumeric characters with no spaces. You can also include any of the following characters: =,.@- - */ - UserName: existingUserNameType; - /** - * The name identifying the policy document to delete. This parameter allows (per its regex pattern) a string of characters consisting of upper and lowercase alphanumeric characters with no spaces. You can also include any of the following characters: =,.@-+ - */ - PolicyName: policyNameType; - } - export interface DeleteUserRequest { - /** - * The name of the user to delete. This parameter allows (per its regex pattern) a string of characters consisting of upper and lowercase alphanumeric characters with no spaces. You can also include any of the following characters: =,.@- - */ - UserName: existingUserNameType; - } - export interface DeleteVirtualMFADeviceRequest { - /** - * The serial number that uniquely identifies the MFA device. For virtual MFA devices, the serial number is the same as the ARN. This parameter allows (per its regex pattern) a string of characters consisting of upper and lowercase alphanumeric characters with no spaces. You can also include any of the following characters: =,.@:/- - */ - SerialNumber: serialNumberType; - } - export interface DeletionTaskFailureReasonType { - /** - * A short description of the reason that the service-linked role deletion failed. - */ - Reason?: ReasonType; - /** - * A list of objects that contains details about the service-linked role deletion failure. If the service-linked role has active sessions or if any resources that were used by the role have not been deleted from the linked service, the role can't be deleted. This parameter includes a list of the resources that are associated with the role and the region in which the resources are being used. - */ - RoleUsageList?: RoleUsageListType; - } - export type DeletionTaskIdType = string; - export type DeletionTaskStatusType = "SUCCEEDED"|"IN_PROGRESS"|"FAILED"|"NOT_STARTED"|string; - export interface DetachGroupPolicyRequest { - /** - * The name (friendly name, not ARN) of the IAM group to detach the policy from. This parameter allows (per its regex pattern) a string of characters consisting of upper and lowercase alphanumeric characters with no spaces. You can also include any of the following characters: =,.@- - */ - GroupName: groupNameType; - /** - * The Amazon Resource Name (ARN) of the IAM policy you want to detach. For more information about ARNs, see Amazon Resource Names (ARNs) and AWS Service Namespaces in the AWS General Reference. - */ - PolicyArn: arnType; - } - export interface DetachRolePolicyRequest { - /** - * The name (friendly name, not ARN) of the IAM role to detach the policy from. This parameter allows (per its regex pattern) a string of characters consisting of upper and lowercase alphanumeric characters with no spaces. You can also include any of the following characters: _+=,.@- - */ - RoleName: roleNameType; - /** - * The Amazon Resource Name (ARN) of the IAM policy you want to detach. For more information about ARNs, see Amazon Resource Names (ARNs) and AWS Service Namespaces in the AWS General Reference. - */ - PolicyArn: arnType; - } - export interface DetachUserPolicyRequest { - /** - * The name (friendly name, not ARN) of the IAM user to detach the policy from. This parameter allows (per its regex pattern) a string of characters consisting of upper and lowercase alphanumeric characters with no spaces. You can also include any of the following characters: =,.@- - */ - UserName: userNameType; - /** - * The Amazon Resource Name (ARN) of the IAM policy you want to detach. For more information about ARNs, see Amazon Resource Names (ARNs) and AWS Service Namespaces in the AWS General Reference. - */ - PolicyArn: arnType; - } - export interface EnableMFADeviceRequest { - /** - * The name of the IAM user for whom you want to enable the MFA device. This parameter allows (per its regex pattern) a string of characters consisting of upper and lowercase alphanumeric characters with no spaces. You can also include any of the following characters: =,.@- - */ - UserName: existingUserNameType; - /** - * The serial number that uniquely identifies the MFA device. For virtual MFA devices, the serial number is the device ARN. This parameter allows (per its regex pattern) a string of characters consisting of upper and lowercase alphanumeric characters with no spaces. You can also include any of the following characters: =,.@:/- - */ - SerialNumber: serialNumberType; - /** - * An authentication code emitted by the device. The format for this parameter is a string of 6 digits. Submit your request immediately after generating the authentication codes. If you generate the codes and then wait too long to submit the request, the MFA device successfully associates with the user but the MFA device becomes out of sync. This happens because time-based one-time passwords (TOTP) expire after a short period of time. If this happens, you can resync the device. - */ - AuthenticationCode1: authenticationCodeType; - /** - * A subsequent authentication code emitted by the device. The format for this parameter is a string of 6 digits. Submit your request immediately after generating the authentication codes. If you generate the codes and then wait too long to submit the request, the MFA device successfully associates with the user but the MFA device becomes out of sync. This happens because time-based one-time passwords (TOTP) expire after a short period of time. If this happens, you can resync the device. - */ - AuthenticationCode2: authenticationCodeType; - } - export type EntityType = "User"|"Role"|"Group"|"LocalManagedPolicy"|"AWSManagedPolicy"|string; - export type EvalDecisionDetailsType = {[key: string]: PolicyEvaluationDecisionType}; - export type EvalDecisionSourceType = string; - export interface EvaluationResult { - /** - * The name of the API action tested on the indicated resource. - */ - EvalActionName: ActionNameType; - /** - * The ARN of the resource that the indicated API action was tested on. - */ - EvalResourceName?: ResourceNameType; - /** - * The result of the simulation. - */ - EvalDecision: PolicyEvaluationDecisionType; - /** - * A list of the statements in the input policies that determine the result for this scenario. Remember that even if multiple statements allow the action on the resource, if only one statement denies that action, then the explicit deny overrides any allow, and the deny statement is the only entry included in the result. - */ - MatchedStatements?: StatementListType; - /** - * A list of context keys that are required by the included input policies but that were not provided by one of the input parameters. This list is used when the resource in a simulation is "*", either explicitly, or when the ResourceArns parameter blank. If you include a list of resources, then any missing context values are instead included under the ResourceSpecificResults section. To discover the context keys used by a set of policies, you can call GetContextKeysForCustomPolicy or GetContextKeysForPrincipalPolicy. - */ - MissingContextValues?: ContextKeyNamesResultListType; - /** - * A structure that details how AWS Organizations and its service control policies affect the results of the simulation. Only applies if the simulated user's account is part of an organization. - */ - OrganizationsDecisionDetail?: OrganizationsDecisionDetail; - /** - * Additional details about the results of the evaluation decision. When there are both IAM policies and resource policies, this parameter explains how each set of policies contributes to the final evaluation decision. When simulating cross-account access to a resource, both the resource-based policy and the caller's IAM policy must grant access. See How IAM Roles Differ from Resource-based Policies - */ - EvalDecisionDetails?: EvalDecisionDetailsType; - /** - * The individual results of the simulation of the API action specified in EvalActionName on each resource. - */ - ResourceSpecificResults?: ResourceSpecificResultListType; - } - export type EvaluationResultsListType = EvaluationResult[]; - export interface GenerateCredentialReportResponse { - /** - * Information about the state of the credential report. - */ - State?: ReportStateType; - /** - * Information about the credential report. - */ - Description?: ReportStateDescriptionType; - } - export interface GetAccessKeyLastUsedRequest { - /** - * The identifier of an access key. This parameter allows (per its regex pattern) a string of characters that can consist of any upper or lowercased letter or digit. - */ - AccessKeyId: accessKeyIdType; - } - export interface GetAccessKeyLastUsedResponse { - /** - * The name of the AWS IAM user that owns this access key. - */ - UserName?: existingUserNameType; - /** - * Contains information about the last time the access key was used. - */ - AccessKeyLastUsed?: AccessKeyLastUsed; - } - export interface GetAccountAuthorizationDetailsRequest { - /** - * A list of entity types used to filter the results. Only the entities that match the types you specify are included in the output. Use the value LocalManagedPolicy to include customer managed policies. The format for this parameter is a comma-separated (if more than one) list of strings. Each string value in the list must be one of the valid values listed below. - */ - Filter?: entityListType; - /** - * (Optional) Use this only when paginating results to indicate the maximum number of items you want in the response. If additional items exist beyond the maximum you specify, the IsTruncated response element is true. If you do not include this parameter, it defaults to 100. Note that IAM might return fewer results, even when there are more results available. In that case, the IsTruncated response element returns true and Marker contains a value to include in the subsequent call that tells the service where to continue from. - */ - MaxItems?: maxItemsType; - /** - * Use this parameter only when paginating results and only after you receive a response indicating that the results are truncated. Set it to the value of the Marker element in the response that you received to indicate where the next call should start. - */ - Marker?: markerType; - } - export interface GetAccountAuthorizationDetailsResponse { - /** - * A list containing information about IAM users. - */ - UserDetailList?: userDetailListType; - /** - * A list containing information about IAM groups. - */ - GroupDetailList?: groupDetailListType; - /** - * A list containing information about IAM roles. - */ - RoleDetailList?: roleDetailListType; - /** - * A list containing information about managed policies. - */ - Policies?: ManagedPolicyDetailListType; - /** - * A flag that indicates whether there are more items to return. If your results were truncated, you can make a subsequent pagination request using the Marker request parameter to retrieve more items. Note that IAM might return fewer than the MaxItems number of results even when there are more results available. We recommend that you check IsTruncated after every call to ensure that you receive all of your results. - */ - IsTruncated?: booleanType; - /** - * When IsTruncated is true, this element is present and contains the value to use for the Marker parameter in a subsequent pagination request. - */ - Marker?: markerType; - } - export interface GetAccountPasswordPolicyResponse { - /** - * A structure that contains details about the account's password policy. - */ - PasswordPolicy: PasswordPolicy; - } - export interface GetAccountSummaryResponse { - /** - * A set of key value pairs containing information about IAM entity usage and IAM quotas. - */ - SummaryMap?: summaryMapType; - } - export interface GetContextKeysForCustomPolicyRequest { - /** - * A list of policies for which you want the list of context keys referenced in those policies. Each document is specified as a string containing the complete, valid JSON text of an IAM policy. The regex pattern used to validate this parameter is a string of characters consisting of any printable ASCII character ranging from the space character (\u0020) through end of the ASCII character range as well as the printable characters in the Basic Latin and Latin-1 Supplement character set (through \u00FF). It also includes the special characters tab (\u0009), line feed (\u000A), and carriage return (\u000D). - */ - PolicyInputList: SimulationPolicyListType; - } - export interface GetContextKeysForPolicyResponse { - /** - * The list of context keys that are referenced in the input policies. - */ - ContextKeyNames?: ContextKeyNamesResultListType; - } - export interface GetContextKeysForPrincipalPolicyRequest { - /** - * The ARN of a user, group, or role whose policies contain the context keys that you want listed. If you specify a user, the list includes context keys that are found in all policies attached to the user as well as to all groups that the user is a member of. If you pick a group or a role, then it includes only those context keys that are found in policies attached to that entity. Note that all parameters are shown in unencoded form here for clarity, but must be URL encoded to be included as a part of a real HTML request. For more information about ARNs, see Amazon Resource Names (ARNs) and AWS Service Namespaces in the AWS General Reference. - */ - PolicySourceArn: arnType; - /** - * An optional list of additional policies for which you want the list of context keys that are referenced. The regex pattern used to validate this parameter is a string of characters consisting of any printable ASCII character ranging from the space character (\u0020) through end of the ASCII character range as well as the printable characters in the Basic Latin and Latin-1 Supplement character set (through \u00FF). It also includes the special characters tab (\u0009), line feed (\u000A), and carriage return (\u000D). - */ - PolicyInputList?: SimulationPolicyListType; - } - export interface GetCredentialReportResponse { - /** - * Contains the credential report. The report is Base64-encoded. - */ - Content?: ReportContentType; - /** - * The format (MIME type) of the credential report. - */ - ReportFormat?: ReportFormatType; - /** - * The date and time when the credential report was created, in ISO 8601 date-time format. - */ - GeneratedTime?: dateType; - } - export interface GetGroupPolicyRequest { - /** - * The name of the group the policy is associated with. This parameter allows (per its regex pattern) a string of characters consisting of upper and lowercase alphanumeric characters with no spaces. You can also include any of the following characters: =,.@- - */ - GroupName: groupNameType; - /** - * The name of the policy document to get. This parameter allows (per its regex pattern) a string of characters consisting of upper and lowercase alphanumeric characters with no spaces. You can also include any of the following characters: =,.@-+ - */ - PolicyName: policyNameType; - } - export interface GetGroupPolicyResponse { - /** - * The group the policy is associated with. - */ - GroupName: groupNameType; - /** - * The name of the policy. - */ - PolicyName: policyNameType; - /** - * The policy document. - */ - PolicyDocument: policyDocumentType; - } - export interface GetGroupRequest { - /** - * The name of the group. This parameter allows (per its regex pattern) a string of characters consisting of upper and lowercase alphanumeric characters with no spaces. You can also include any of the following characters: =,.@- - */ - GroupName: groupNameType; - /** - * Use this parameter only when paginating results and only after you receive a response indicating that the results are truncated. Set it to the value of the Marker element in the response that you received to indicate where the next call should start. - */ - Marker?: markerType; - /** - * (Optional) Use this only when paginating results to indicate the maximum number of items you want in the response. If additional items exist beyond the maximum you specify, the IsTruncated response element is true. If you do not include this parameter, it defaults to 100. Note that IAM might return fewer results, even when there are more results available. In that case, the IsTruncated response element returns true and Marker contains a value to include in the subsequent call that tells the service where to continue from. - */ - MaxItems?: maxItemsType; - } - export interface GetGroupResponse { - /** - * A structure that contains details about the group. - */ - Group: Group; - /** - * A list of users in the group. - */ - Users: userListType; - /** - * A flag that indicates whether there are more items to return. If your results were truncated, you can make a subsequent pagination request using the Marker request parameter to retrieve more items. Note that IAM might return fewer than the MaxItems number of results even when there are more results available. We recommend that you check IsTruncated after every call to ensure that you receive all of your results. - */ - IsTruncated?: booleanType; - /** - * When IsTruncated is true, this element is present and contains the value to use for the Marker parameter in a subsequent pagination request. - */ - Marker?: markerType; - } - export interface GetInstanceProfileRequest { - /** - * The name of the instance profile to get information about. This parameter allows (per its regex pattern) a string of characters consisting of upper and lowercase alphanumeric characters with no spaces. You can also include any of the following characters: =,.@- - */ - InstanceProfileName: instanceProfileNameType; - } - export interface GetInstanceProfileResponse { - /** - * A structure containing details about the instance profile. - */ - InstanceProfile: InstanceProfile; - } - export interface GetLoginProfileRequest { - /** - * The name of the user whose login profile you want to retrieve. This parameter allows (per its regex pattern) a string of characters consisting of upper and lowercase alphanumeric characters with no spaces. You can also include any of the following characters: =,.@- - */ - UserName: userNameType; - } - export interface GetLoginProfileResponse { - /** - * A structure containing the user name and password create date for the user. - */ - LoginProfile: LoginProfile; - } - export interface GetOpenIDConnectProviderRequest { - /** - * The Amazon Resource Name (ARN) of the OIDC provider resource object in IAM to get information for. You can get a list of OIDC provider resource ARNs by using the ListOpenIDConnectProviders action. For more information about ARNs, see Amazon Resource Names (ARNs) and AWS Service Namespaces in the AWS General Reference. - */ - OpenIDConnectProviderArn: arnType; - } - export interface GetOpenIDConnectProviderResponse { - /** - * The URL that the IAM OIDC provider resource object is associated with. For more information, see CreateOpenIDConnectProvider. - */ - Url?: OpenIDConnectProviderUrlType; - /** - * A list of client IDs (also known as audiences) that are associated with the specified IAM OIDC provider resource object. For more information, see CreateOpenIDConnectProvider. - */ - ClientIDList?: clientIDListType; - /** - * A list of certificate thumbprints that are associated with the specified IAM OIDC provider resource object. For more information, see CreateOpenIDConnectProvider. - */ - ThumbprintList?: thumbprintListType; - /** - * The date and time when the IAM OIDC provider resource object was created in the AWS account. - */ - CreateDate?: dateType; - } - export interface GetPolicyRequest { - /** - * The Amazon Resource Name (ARN) of the managed policy that you want information about. For more information about ARNs, see Amazon Resource Names (ARNs) and AWS Service Namespaces in the AWS General Reference. - */ - PolicyArn: arnType; - } - export interface GetPolicyResponse { - /** - * A structure containing details about the policy. - */ - Policy?: Policy; - } - export interface GetPolicyVersionRequest { - /** - * The Amazon Resource Name (ARN) of the managed policy that you want information about. For more information about ARNs, see Amazon Resource Names (ARNs) and AWS Service Namespaces in the AWS General Reference. - */ - PolicyArn: arnType; - /** - * Identifies the policy version to retrieve. This parameter allows (per its regex pattern) a string of characters that consists of the lowercase letter 'v' followed by one or two digits, and optionally followed by a period '.' and a string of letters and digits. - */ - VersionId: policyVersionIdType; - } - export interface GetPolicyVersionResponse { - /** - * A structure containing details about the policy version. - */ - PolicyVersion?: PolicyVersion; - } - export interface GetRolePolicyRequest { - /** - * The name of the role associated with the policy. This parameter allows (per its regex pattern) a string of characters consisting of upper and lowercase alphanumeric characters with no spaces. You can also include any of the following characters: _+=,.@- - */ - RoleName: roleNameType; - /** - * The name of the policy document to get. This parameter allows (per its regex pattern) a string of characters consisting of upper and lowercase alphanumeric characters with no spaces. You can also include any of the following characters: =,.@-+ - */ - PolicyName: policyNameType; - } - export interface GetRolePolicyResponse { - /** - * The role the policy is associated with. - */ - RoleName: roleNameType; - /** - * The name of the policy. - */ - PolicyName: policyNameType; - /** - * The policy document. - */ - PolicyDocument: policyDocumentType; - } - export interface GetRoleRequest { - /** - * The name of the IAM role to get information about. This parameter allows (per its regex pattern) a string of characters consisting of upper and lowercase alphanumeric characters with no spaces. You can also include any of the following characters: _+=,.@- - */ - RoleName: roleNameType; - } - export interface GetRoleResponse { - /** - * A structure containing details about the IAM role. - */ - Role: Role; - } - export interface GetSAMLProviderRequest { - /** - * The Amazon Resource Name (ARN) of the SAML provider resource object in IAM to get information about. For more information about ARNs, see Amazon Resource Names (ARNs) and AWS Service Namespaces in the AWS General Reference. - */ - SAMLProviderArn: arnType; - } - export interface GetSAMLProviderResponse { - /** - * The XML metadata document that includes information about an identity provider. - */ - SAMLMetadataDocument?: SAMLMetadataDocumentType; - /** - * The date and time when the SAML provider was created. - */ - CreateDate?: dateType; - /** - * The expiration date and time for the SAML provider. - */ - ValidUntil?: dateType; - } - export interface GetSSHPublicKeyRequest { - /** - * The name of the IAM user associated with the SSH public key. This parameter allows (per its regex pattern) a string of characters consisting of upper and lowercase alphanumeric characters with no spaces. You can also include any of the following characters: =,.@- - */ - UserName: userNameType; - /** - * The unique identifier for the SSH public key. This parameter allows (per its regex pattern) a string of characters that can consist of any upper or lowercased letter or digit. - */ - SSHPublicKeyId: publicKeyIdType; - /** - * Specifies the public key encoding format to use in the response. To retrieve the public key in ssh-rsa format, use SSH. To retrieve the public key in PEM format, use PEM. - */ - Encoding: encodingType; - } - export interface GetSSHPublicKeyResponse { - /** - * A structure containing details about the SSH public key. - */ - SSHPublicKey?: SSHPublicKey; - } - export interface GetServerCertificateRequest { - /** - * The name of the server certificate you want to retrieve information about. This parameter allows (per its regex pattern) a string of characters consisting of upper and lowercase alphanumeric characters with no spaces. You can also include any of the following characters: =,.@- - */ - ServerCertificateName: serverCertificateNameType; - } - export interface GetServerCertificateResponse { - /** - * A structure containing details about the server certificate. - */ - ServerCertificate: ServerCertificate; - } - export interface GetServiceLinkedRoleDeletionStatusRequest { - /** - * The deletion task identifier. This identifier is returned by the DeleteServiceLinkedRole operation in the format task/aws-service-role/<service-principal-name>/<role-name>/<task-uuid>. - */ - DeletionTaskId: DeletionTaskIdType; - } - export interface GetServiceLinkedRoleDeletionStatusResponse { - /** - * The status of the deletion. - */ - Status: DeletionTaskStatusType; - /** - * An object that contains details about the reason the deletion failed. - */ - Reason?: DeletionTaskFailureReasonType; - } - export interface GetUserPolicyRequest { - /** - * The name of the user who the policy is associated with. This parameter allows (per its regex pattern) a string of characters consisting of upper and lowercase alphanumeric characters with no spaces. You can also include any of the following characters: =,.@- - */ - UserName: existingUserNameType; - /** - * The name of the policy document to get. This parameter allows (per its regex pattern) a string of characters consisting of upper and lowercase alphanumeric characters with no spaces. You can also include any of the following characters: =,.@-+ - */ - PolicyName: policyNameType; - } - export interface GetUserPolicyResponse { - /** - * The user the policy is associated with. - */ - UserName: existingUserNameType; - /** - * The name of the policy. - */ - PolicyName: policyNameType; - /** - * The policy document. - */ - PolicyDocument: policyDocumentType; - } - export interface GetUserRequest { - /** - * The name of the user to get information about. This parameter is optional. If it is not included, it defaults to the user making the request. This parameter allows (per its regex pattern) a string of characters consisting of upper and lowercase alphanumeric characters with no spaces. You can also include any of the following characters: =,.@- - */ - UserName?: existingUserNameType; - } - export interface GetUserResponse { - /** - * A structure containing details about the IAM user. - */ - User: User; - } - export interface Group { - /** - * The path to the group. For more information about paths, see IAM Identifiers in the Using IAM guide. - */ - Path: pathType; - /** - * The friendly name that identifies the group. - */ - GroupName: groupNameType; - /** - * The stable and unique string identifying the group. For more information about IDs, see IAM Identifiers in the Using IAM guide. - */ - GroupId: idType; - /** - * The Amazon Resource Name (ARN) specifying the group. For more information about ARNs and how to use them in policies, see IAM Identifiers in the Using IAM guide. - */ - Arn: arnType; - /** - * The date and time, in ISO 8601 date-time format, when the group was created. - */ - CreateDate: dateType; - } - export interface GroupDetail { - /** - * The path to the group. For more information about paths, see IAM Identifiers in the Using IAM guide. - */ - Path?: pathType; - /** - * The friendly name that identifies the group. - */ - GroupName?: groupNameType; - /** - * The stable and unique string identifying the group. For more information about IDs, see IAM Identifiers in the Using IAM guide. - */ - GroupId?: idType; - Arn?: arnType; - /** - * The date and time, in ISO 8601 date-time format, when the group was created. - */ - CreateDate?: dateType; - /** - * A list of the inline policies embedded in the group. - */ - GroupPolicyList?: policyDetailListType; - /** - * A list of the managed policies attached to the group. - */ - AttachedManagedPolicies?: attachedPoliciesListType; - } - export interface InstanceProfile { - /** - * The path to the instance profile. For more information about paths, see IAM Identifiers in the Using IAM guide. - */ - Path: pathType; - /** - * The name identifying the instance profile. - */ - InstanceProfileName: instanceProfileNameType; - /** - * The stable and unique string identifying the instance profile. For more information about IDs, see IAM Identifiers in the Using IAM guide. - */ - InstanceProfileId: idType; - /** - * The Amazon Resource Name (ARN) specifying the instance profile. For more information about ARNs and how to use them in policies, see IAM Identifiers in the Using IAM guide. - */ - Arn: arnType; - /** - * The date when the instance profile was created. - */ - CreateDate: dateType; - /** - * The role associated with the instance profile. - */ - Roles: roleListType; - } - export type LineNumber = number; - export interface ListAccessKeysRequest { - /** - * The name of the user. This parameter allows (per its regex pattern) a string of characters consisting of upper and lowercase alphanumeric characters with no spaces. You can also include any of the following characters: =,.@- - */ - UserName?: existingUserNameType; - /** - * Use this parameter only when paginating results and only after you receive a response indicating that the results are truncated. Set it to the value of the Marker element in the response that you received to indicate where the next call should start. - */ - Marker?: markerType; - /** - * (Optional) Use this only when paginating results to indicate the maximum number of items you want in the response. If additional items exist beyond the maximum you specify, the IsTruncated response element is true. If you do not include this parameter, it defaults to 100. Note that IAM might return fewer results, even when there are more results available. In that case, the IsTruncated response element returns true and Marker contains a value to include in the subsequent call that tells the service where to continue from. - */ - MaxItems?: maxItemsType; - } - export interface ListAccessKeysResponse { - /** - * A list of objects containing metadata about the access keys. - */ - AccessKeyMetadata: accessKeyMetadataListType; - /** - * A flag that indicates whether there are more items to return. If your results were truncated, you can make a subsequent pagination request using the Marker request parameter to retrieve more items. Note that IAM might return fewer than the MaxItems number of results even when there are more results available. We recommend that you check IsTruncated after every call to ensure that you receive all of your results. - */ - IsTruncated?: booleanType; - /** - * When IsTruncated is true, this element is present and contains the value to use for the Marker parameter in a subsequent pagination request. - */ - Marker?: markerType; - } - export interface ListAccountAliasesRequest { - /** - * Use this parameter only when paginating results and only after you receive a response indicating that the results are truncated. Set it to the value of the Marker element in the response that you received to indicate where the next call should start. - */ - Marker?: markerType; - /** - * (Optional) Use this only when paginating results to indicate the maximum number of items you want in the response. If additional items exist beyond the maximum you specify, the IsTruncated response element is true. If you do not include this parameter, it defaults to 100. Note that IAM might return fewer results, even when there are more results available. In that case, the IsTruncated response element returns true and Marker contains a value to include in the subsequent call that tells the service where to continue from. - */ - MaxItems?: maxItemsType; - } - export interface ListAccountAliasesResponse { - /** - * A list of aliases associated with the account. AWS supports only one alias per account. - */ - AccountAliases: accountAliasListType; - /** - * A flag that indicates whether there are more items to return. If your results were truncated, you can make a subsequent pagination request using the Marker request parameter to retrieve more items. Note that IAM might return fewer than the MaxItems number of results even when there are more results available. We recommend that you check IsTruncated after every call to ensure that you receive all of your results. - */ - IsTruncated?: booleanType; - /** - * When IsTruncated is true, this element is present and contains the value to use for the Marker parameter in a subsequent pagination request. - */ - Marker?: markerType; - } - export interface ListAttachedGroupPoliciesRequest { - /** - * The name (friendly name, not ARN) of the group to list attached policies for. This parameter allows (per its regex pattern) a string of characters consisting of upper and lowercase alphanumeric characters with no spaces. You can also include any of the following characters: =,.@- - */ - GroupName: groupNameType; - /** - * The path prefix for filtering the results. This parameter is optional. If it is not included, it defaults to a slash (/), listing all policies. This paramater allows (per its regex pattern) a string of characters consisting of either a forward slash (/) by itself or a string that must begin and end with forward slashes, containing any ASCII character from the ! (\u0021) thru the DEL character (\u007F), including most punctuation characters, digits, and upper and lowercased letters. - */ - PathPrefix?: policyPathType; - /** - * Use this parameter only when paginating results and only after you receive a response indicating that the results are truncated. Set it to the value of the Marker element in the response that you received to indicate where the next call should start. - */ - Marker?: markerType; - /** - * (Optional) Use this only when paginating results to indicate the maximum number of items you want in the response. If additional items exist beyond the maximum you specify, the IsTruncated response element is true. If you do not include this parameter, it defaults to 100. Note that IAM might return fewer results, even when there are more results available. In that case, the IsTruncated response element returns true and Marker contains a value to include in the subsequent call that tells the service where to continue from. - */ - MaxItems?: maxItemsType; - } - export interface ListAttachedGroupPoliciesResponse { - /** - * A list of the attached policies. - */ - AttachedPolicies?: attachedPoliciesListType; - /** - * A flag that indicates whether there are more items to return. If your results were truncated, you can make a subsequent pagination request using the Marker request parameter to retrieve more items. Note that IAM might return fewer than the MaxItems number of results even when there are more results available. We recommend that you check IsTruncated after every call to ensure that you receive all of your results. - */ - IsTruncated?: booleanType; - /** - * When IsTruncated is true, this element is present and contains the value to use for the Marker parameter in a subsequent pagination request. - */ - Marker?: markerType; - } - export interface ListAttachedRolePoliciesRequest { - /** - * The name (friendly name, not ARN) of the role to list attached policies for. This parameter allows (per its regex pattern) a string of characters consisting of upper and lowercase alphanumeric characters with no spaces. You can also include any of the following characters: _+=,.@- - */ - RoleName: roleNameType; - /** - * The path prefix for filtering the results. This parameter is optional. If it is not included, it defaults to a slash (/), listing all policies. This paramater allows (per its regex pattern) a string of characters consisting of either a forward slash (/) by itself or a string that must begin and end with forward slashes, containing any ASCII character from the ! (\u0021) thru the DEL character (\u007F), including most punctuation characters, digits, and upper and lowercased letters. - */ - PathPrefix?: policyPathType; - /** - * Use this parameter only when paginating results and only after you receive a response indicating that the results are truncated. Set it to the value of the Marker element in the response that you received to indicate where the next call should start. - */ - Marker?: markerType; - /** - * (Optional) Use this only when paginating results to indicate the maximum number of items you want in the response. If additional items exist beyond the maximum you specify, the IsTruncated response element is true. If you do not include this parameter, it defaults to 100. Note that IAM might return fewer results, even when there are more results available. In that case, the IsTruncated response element returns true and Marker contains a value to include in the subsequent call that tells the service where to continue from. - */ - MaxItems?: maxItemsType; - } - export interface ListAttachedRolePoliciesResponse { - /** - * A list of the attached policies. - */ - AttachedPolicies?: attachedPoliciesListType; - /** - * A flag that indicates whether there are more items to return. If your results were truncated, you can make a subsequent pagination request using the Marker request parameter to retrieve more items. Note that IAM might return fewer than the MaxItems number of results even when there are more results available. We recommend that you check IsTruncated after every call to ensure that you receive all of your results. - */ - IsTruncated?: booleanType; - /** - * When IsTruncated is true, this element is present and contains the value to use for the Marker parameter in a subsequent pagination request. - */ - Marker?: markerType; - } - export interface ListAttachedUserPoliciesRequest { - /** - * The name (friendly name, not ARN) of the user to list attached policies for. This parameter allows (per its regex pattern) a string of characters consisting of upper and lowercase alphanumeric characters with no spaces. You can also include any of the following characters: =,.@- - */ - UserName: userNameType; - /** - * The path prefix for filtering the results. This parameter is optional. If it is not included, it defaults to a slash (/), listing all policies. This paramater allows (per its regex pattern) a string of characters consisting of either a forward slash (/) by itself or a string that must begin and end with forward slashes, containing any ASCII character from the ! (\u0021) thru the DEL character (\u007F), including most punctuation characters, digits, and upper and lowercased letters. - */ - PathPrefix?: policyPathType; - /** - * Use this parameter only when paginating results and only after you receive a response indicating that the results are truncated. Set it to the value of the Marker element in the response that you received to indicate where the next call should start. - */ - Marker?: markerType; - /** - * (Optional) Use this only when paginating results to indicate the maximum number of items you want in the response. If additional items exist beyond the maximum you specify, the IsTruncated response element is true. If you do not include this parameter, it defaults to 100. Note that IAM might return fewer results, even when there are more results available. In that case, the IsTruncated response element returns true and Marker contains a value to include in the subsequent call that tells the service where to continue from. - */ - MaxItems?: maxItemsType; - } - export interface ListAttachedUserPoliciesResponse { - /** - * A list of the attached policies. - */ - AttachedPolicies?: attachedPoliciesListType; - /** - * A flag that indicates whether there are more items to return. If your results were truncated, you can make a subsequent pagination request using the Marker request parameter to retrieve more items. Note that IAM might return fewer than the MaxItems number of results even when there are more results available. We recommend that you check IsTruncated after every call to ensure that you receive all of your results. - */ - IsTruncated?: booleanType; - /** - * When IsTruncated is true, this element is present and contains the value to use for the Marker parameter in a subsequent pagination request. - */ - Marker?: markerType; - } - export interface ListEntitiesForPolicyRequest { - /** - * The Amazon Resource Name (ARN) of the IAM policy for which you want the versions. For more information about ARNs, see Amazon Resource Names (ARNs) and AWS Service Namespaces in the AWS General Reference. - */ - PolicyArn: arnType; - /** - * The entity type to use for filtering the results. For example, when EntityFilter is Role, only the roles that are attached to the specified policy are returned. This parameter is optional. If it is not included, all attached entities (users, groups, and roles) are returned. The argument for this parameter must be one of the valid values listed below. - */ - EntityFilter?: EntityType; - /** - * The path prefix for filtering the results. This parameter is optional. If it is not included, it defaults to a slash (/), listing all entities. This paramater allows (per its regex pattern) a string of characters consisting of either a forward slash (/) by itself or a string that must begin and end with forward slashes, containing any ASCII character from the ! (\u0021) thru the DEL character (\u007F), including most punctuation characters, digits, and upper and lowercased letters. - */ - PathPrefix?: pathType; - /** - * Use this parameter only when paginating results and only after you receive a response indicating that the results are truncated. Set it to the value of the Marker element in the response that you received to indicate where the next call should start. - */ - Marker?: markerType; - /** - * (Optional) Use this only when paginating results to indicate the maximum number of items you want in the response. If additional items exist beyond the maximum you specify, the IsTruncated response element is true. If you do not include this parameter, it defaults to 100. Note that IAM might return fewer results, even when there are more results available. In that case, the IsTruncated response element returns true and Marker contains a value to include in the subsequent call that tells the service where to continue from. - */ - MaxItems?: maxItemsType; - } - export interface ListEntitiesForPolicyResponse { - /** - * A list of IAM groups that the policy is attached to. - */ - PolicyGroups?: PolicyGroupListType; - /** - * A list of IAM users that the policy is attached to. - */ - PolicyUsers?: PolicyUserListType; - /** - * A list of IAM roles that the policy is attached to. - */ - PolicyRoles?: PolicyRoleListType; - /** - * A flag that indicates whether there are more items to return. If your results were truncated, you can make a subsequent pagination request using the Marker request parameter to retrieve more items. Note that IAM might return fewer than the MaxItems number of results even when there are more results available. We recommend that you check IsTruncated after every call to ensure that you receive all of your results. - */ - IsTruncated?: booleanType; - /** - * When IsTruncated is true, this element is present and contains the value to use for the Marker parameter in a subsequent pagination request. - */ - Marker?: markerType; - } - export interface ListGroupPoliciesRequest { - /** - * The name of the group to list policies for. This parameter allows (per its regex pattern) a string of characters consisting of upper and lowercase alphanumeric characters with no spaces. You can also include any of the following characters: =,.@- - */ - GroupName: groupNameType; - /** - * Use this parameter only when paginating results and only after you receive a response indicating that the results are truncated. Set it to the value of the Marker element in the response that you received to indicate where the next call should start. - */ - Marker?: markerType; - /** - * (Optional) Use this only when paginating results to indicate the maximum number of items you want in the response. If additional items exist beyond the maximum you specify, the IsTruncated response element is true. If you do not include this parameter, it defaults to 100. Note that IAM might return fewer results, even when there are more results available. In that case, the IsTruncated response element returns true and Marker contains a value to include in the subsequent call that tells the service where to continue from. - */ - MaxItems?: maxItemsType; - } - export interface ListGroupPoliciesResponse { - /** - * A list of policy names. This parameter allows (per its regex pattern) a string of characters consisting of upper and lowercase alphanumeric characters with no spaces. You can also include any of the following characters: =,.@-+ - */ - PolicyNames: policyNameListType; - /** - * A flag that indicates whether there are more items to return. If your results were truncated, you can make a subsequent pagination request using the Marker request parameter to retrieve more items. Note that IAM might return fewer than the MaxItems number of results even when there are more results available. We recommend that you check IsTruncated after every call to ensure that you receive all of your results. - */ - IsTruncated?: booleanType; - /** - * When IsTruncated is true, this element is present and contains the value to use for the Marker parameter in a subsequent pagination request. - */ - Marker?: markerType; - } - export interface ListGroupsForUserRequest { - /** - * The name of the user to list groups for. This parameter allows (per its regex pattern) a string of characters consisting of upper and lowercase alphanumeric characters with no spaces. You can also include any of the following characters: =,.@- - */ - UserName: existingUserNameType; - /** - * Use this parameter only when paginating results and only after you receive a response indicating that the results are truncated. Set it to the value of the Marker element in the response that you received to indicate where the next call should start. - */ - Marker?: markerType; - /** - * (Optional) Use this only when paginating results to indicate the maximum number of items you want in the response. If additional items exist beyond the maximum you specify, the IsTruncated response element is true. If you do not include this parameter, it defaults to 100. Note that IAM might return fewer results, even when there are more results available. In that case, the IsTruncated response element returns true and Marker contains a value to include in the subsequent call that tells the service where to continue from. - */ - MaxItems?: maxItemsType; - } - export interface ListGroupsForUserResponse { - /** - * A list of groups. - */ - Groups: groupListType; - /** - * A flag that indicates whether there are more items to return. If your results were truncated, you can make a subsequent pagination request using the Marker request parameter to retrieve more items. Note that IAM might return fewer than the MaxItems number of results even when there are more results available. We recommend that you check IsTruncated after every call to ensure that you receive all of your results. - */ - IsTruncated?: booleanType; - /** - * When IsTruncated is true, this element is present and contains the value to use for the Marker parameter in a subsequent pagination request. - */ - Marker?: markerType; - } - export interface ListGroupsRequest { - /** - * The path prefix for filtering the results. For example, the prefix /division_abc/subdivision_xyz/ gets all groups whose path starts with /division_abc/subdivision_xyz/. This parameter is optional. If it is not included, it defaults to a slash (/), listing all groups. This paramater allows (per its regex pattern) a string of characters consisting of either a forward slash (/) by itself or a string that must begin and end with forward slashes, containing any ASCII character from the ! (\u0021) thru the DEL character (\u007F), including most punctuation characters, digits, and upper and lowercased letters. - */ - PathPrefix?: pathPrefixType; - /** - * Use this parameter only when paginating results and only after you receive a response indicating that the results are truncated. Set it to the value of the Marker element in the response that you received to indicate where the next call should start. - */ - Marker?: markerType; - /** - * (Optional) Use this only when paginating results to indicate the maximum number of items you want in the response. If additional items exist beyond the maximum you specify, the IsTruncated response element is true. If you do not include this parameter, it defaults to 100. Note that IAM might return fewer results, even when there are more results available. In that case, the IsTruncated response element returns true and Marker contains a value to include in the subsequent call that tells the service where to continue from. - */ - MaxItems?: maxItemsType; - } - export interface ListGroupsResponse { - /** - * A list of groups. - */ - Groups: groupListType; - /** - * A flag that indicates whether there are more items to return. If your results were truncated, you can make a subsequent pagination request using the Marker request parameter to retrieve more items. Note that IAM might return fewer than the MaxItems number of results even when there are more results available. We recommend that you check IsTruncated after every call to ensure that you receive all of your results. - */ - IsTruncated?: booleanType; - /** - * When IsTruncated is true, this element is present and contains the value to use for the Marker parameter in a subsequent pagination request. - */ - Marker?: markerType; - } - export interface ListInstanceProfilesForRoleRequest { - /** - * The name of the role to list instance profiles for. This parameter allows (per its regex pattern) a string of characters consisting of upper and lowercase alphanumeric characters with no spaces. You can also include any of the following characters: _+=,.@- - */ - RoleName: roleNameType; - /** - * Use this parameter only when paginating results and only after you receive a response indicating that the results are truncated. Set it to the value of the Marker element in the response that you received to indicate where the next call should start. - */ - Marker?: markerType; - /** - * (Optional) Use this only when paginating results to indicate the maximum number of items you want in the response. If additional items exist beyond the maximum you specify, the IsTruncated response element is true. If you do not include this parameter, it defaults to 100. Note that IAM might return fewer results, even when there are more results available. In that case, the IsTruncated response element returns true and Marker contains a value to include in the subsequent call that tells the service where to continue from. - */ - MaxItems?: maxItemsType; - } - export interface ListInstanceProfilesForRoleResponse { - /** - * A list of instance profiles. - */ - InstanceProfiles: instanceProfileListType; - /** - * A flag that indicates whether there are more items to return. If your results were truncated, you can make a subsequent pagination request using the Marker request parameter to retrieve more items. Note that IAM might return fewer than the MaxItems number of results even when there are more results available. We recommend that you check IsTruncated after every call to ensure that you receive all of your results. - */ - IsTruncated?: booleanType; - /** - * When IsTruncated is true, this element is present and contains the value to use for the Marker parameter in a subsequent pagination request. - */ - Marker?: markerType; - } - export interface ListInstanceProfilesRequest { - /** - * The path prefix for filtering the results. For example, the prefix /application_abc/component_xyz/ gets all instance profiles whose path starts with /application_abc/component_xyz/. This parameter is optional. If it is not included, it defaults to a slash (/), listing all instance profiles. This paramater allows (per its regex pattern) a string of characters consisting of either a forward slash (/) by itself or a string that must begin and end with forward slashes, containing any ASCII character from the ! (\u0021) thru the DEL character (\u007F), including most punctuation characters, digits, and upper and lowercased letters. - */ - PathPrefix?: pathPrefixType; - /** - * Use this parameter only when paginating results and only after you receive a response indicating that the results are truncated. Set it to the value of the Marker element in the response that you received to indicate where the next call should start. - */ - Marker?: markerType; - /** - * (Optional) Use this only when paginating results to indicate the maximum number of items you want in the response. If additional items exist beyond the maximum you specify, the IsTruncated response element is true. If you do not include this parameter, it defaults to 100. Note that IAM might return fewer results, even when there are more results available. In that case, the IsTruncated response element returns true and Marker contains a value to include in the subsequent call that tells the service where to continue from. - */ - MaxItems?: maxItemsType; - } - export interface ListInstanceProfilesResponse { - /** - * A list of instance profiles. - */ - InstanceProfiles: instanceProfileListType; - /** - * A flag that indicates whether there are more items to return. If your results were truncated, you can make a subsequent pagination request using the Marker request parameter to retrieve more items. Note that IAM might return fewer than the MaxItems number of results even when there are more results available. We recommend that you check IsTruncated after every call to ensure that you receive all of your results. - */ - IsTruncated?: booleanType; - /** - * When IsTruncated is true, this element is present and contains the value to use for the Marker parameter in a subsequent pagination request. - */ - Marker?: markerType; - } - export interface ListMFADevicesRequest { - /** - * The name of the user whose MFA devices you want to list. This parameter allows (per its regex pattern) a string of characters consisting of upper and lowercase alphanumeric characters with no spaces. You can also include any of the following characters: =,.@- - */ - UserName?: existingUserNameType; - /** - * Use this parameter only when paginating results and only after you receive a response indicating that the results are truncated. Set it to the value of the Marker element in the response that you received to indicate where the next call should start. - */ - Marker?: markerType; - /** - * (Optional) Use this only when paginating results to indicate the maximum number of items you want in the response. If additional items exist beyond the maximum you specify, the IsTruncated response element is true. If you do not include this parameter, it defaults to 100. Note that IAM might return fewer results, even when there are more results available. In that case, the IsTruncated response element returns true and Marker contains a value to include in the subsequent call that tells the service where to continue from. - */ - MaxItems?: maxItemsType; - } - export interface ListMFADevicesResponse { - /** - * A list of MFA devices. - */ - MFADevices: mfaDeviceListType; - /** - * A flag that indicates whether there are more items to return. If your results were truncated, you can make a subsequent pagination request using the Marker request parameter to retrieve more items. Note that IAM might return fewer than the MaxItems number of results even when there are more results available. We recommend that you check IsTruncated after every call to ensure that you receive all of your results. - */ - IsTruncated?: booleanType; - /** - * When IsTruncated is true, this element is present and contains the value to use for the Marker parameter in a subsequent pagination request. - */ - Marker?: markerType; - } - export interface ListOpenIDConnectProvidersRequest { - } - export interface ListOpenIDConnectProvidersResponse { - /** - * The list of IAM OIDC provider resource objects defined in the AWS account. - */ - OpenIDConnectProviderList?: OpenIDConnectProviderListType; - } - export interface ListPoliciesRequest { - /** - * The scope to use for filtering the results. To list only AWS managed policies, set Scope to AWS. To list only the customer managed policies in your AWS account, set Scope to Local. This parameter is optional. If it is not included, or if it is set to All, all policies are returned. - */ - Scope?: policyScopeType; - /** - * A flag to filter the results to only the attached policies. When OnlyAttached is true, the returned list contains only the policies that are attached to an IAM user, group, or role. When OnlyAttached is false, or when the parameter is not included, all policies are returned. - */ - OnlyAttached?: booleanType; - /** - * The path prefix for filtering the results. This parameter is optional. If it is not included, it defaults to a slash (/), listing all policies. This paramater allows (per its regex pattern) a string of characters consisting of either a forward slash (/) by itself or a string that must begin and end with forward slashes, containing any ASCII character from the ! (\u0021) thru the DEL character (\u007F), including most punctuation characters, digits, and upper and lowercased letters. - */ - PathPrefix?: policyPathType; - /** - * Use this parameter only when paginating results and only after you receive a response indicating that the results are truncated. Set it to the value of the Marker element in the response that you received to indicate where the next call should start. - */ - Marker?: markerType; - /** - * (Optional) Use this only when paginating results to indicate the maximum number of items you want in the response. If additional items exist beyond the maximum you specify, the IsTruncated response element is true. If you do not include this parameter, it defaults to 100. Note that IAM might return fewer results, even when there are more results available. In that case, the IsTruncated response element returns true and Marker contains a value to include in the subsequent call that tells the service where to continue from. - */ - MaxItems?: maxItemsType; - } - export interface ListPoliciesResponse { - /** - * A list of policies. - */ - Policies?: policyListType; - /** - * A flag that indicates whether there are more items to return. If your results were truncated, you can make a subsequent pagination request using the Marker request parameter to retrieve more items. Note that IAM might return fewer than the MaxItems number of results even when there are more results available. We recommend that you check IsTruncated after every call to ensure that you receive all of your results. - */ - IsTruncated?: booleanType; - /** - * When IsTruncated is true, this element is present and contains the value to use for the Marker parameter in a subsequent pagination request. - */ - Marker?: markerType; - } - export interface ListPolicyVersionsRequest { - /** - * The Amazon Resource Name (ARN) of the IAM policy for which you want the versions. For more information about ARNs, see Amazon Resource Names (ARNs) and AWS Service Namespaces in the AWS General Reference. - */ - PolicyArn: arnType; - /** - * Use this parameter only when paginating results and only after you receive a response indicating that the results are truncated. Set it to the value of the Marker element in the response that you received to indicate where the next call should start. - */ - Marker?: markerType; - /** - * (Optional) Use this only when paginating results to indicate the maximum number of items you want in the response. If additional items exist beyond the maximum you specify, the IsTruncated response element is true. If you do not include this parameter, it defaults to 100. Note that IAM might return fewer results, even when there are more results available. In that case, the IsTruncated response element returns true and Marker contains a value to include in the subsequent call that tells the service where to continue from. - */ - MaxItems?: maxItemsType; - } - export interface ListPolicyVersionsResponse { - /** - * A list of policy versions. For more information about managed policy versions, see Versioning for Managed Policies in the IAM User Guide. - */ - Versions?: policyDocumentVersionListType; - /** - * A flag that indicates whether there are more items to return. If your results were truncated, you can make a subsequent pagination request using the Marker request parameter to retrieve more items. Note that IAM might return fewer than the MaxItems number of results even when there are more results available. We recommend that you check IsTruncated after every call to ensure that you receive all of your results. - */ - IsTruncated?: booleanType; - /** - * When IsTruncated is true, this element is present and contains the value to use for the Marker parameter in a subsequent pagination request. - */ - Marker?: markerType; - } - export interface ListRolePoliciesRequest { - /** - * The name of the role to list policies for. This parameter allows (per its regex pattern) a string of characters consisting of upper and lowercase alphanumeric characters with no spaces. You can also include any of the following characters: _+=,.@- - */ - RoleName: roleNameType; - /** - * Use this parameter only when paginating results and only after you receive a response indicating that the results are truncated. Set it to the value of the Marker element in the response that you received to indicate where the next call should start. - */ - Marker?: markerType; - /** - * (Optional) Use this only when paginating results to indicate the maximum number of items you want in the response. If additional items exist beyond the maximum you specify, the IsTruncated response element is true. If you do not include this parameter, it defaults to 100. Note that IAM might return fewer results, even when there are more results available. In that case, the IsTruncated response element returns true and Marker contains a value to include in the subsequent call that tells the service where to continue from. - */ - MaxItems?: maxItemsType; - } - export interface ListRolePoliciesResponse { - /** - * A list of policy names. - */ - PolicyNames: policyNameListType; - /** - * A flag that indicates whether there are more items to return. If your results were truncated, you can make a subsequent pagination request using the Marker request parameter to retrieve more items. Note that IAM might return fewer than the MaxItems number of results even when there are more results available. We recommend that you check IsTruncated after every call to ensure that you receive all of your results. - */ - IsTruncated?: booleanType; - /** - * When IsTruncated is true, this element is present and contains the value to use for the Marker parameter in a subsequent pagination request. - */ - Marker?: markerType; - } - export interface ListRolesRequest { - /** - * The path prefix for filtering the results. For example, the prefix /application_abc/component_xyz/ gets all roles whose path starts with /application_abc/component_xyz/. This parameter is optional. If it is not included, it defaults to a slash (/), listing all roles. This paramater allows (per its regex pattern) a string of characters consisting of either a forward slash (/) by itself or a string that must begin and end with forward slashes, containing any ASCII character from the ! (\u0021) thru the DEL character (\u007F), including most punctuation characters, digits, and upper and lowercased letters. - */ - PathPrefix?: pathPrefixType; - /** - * Use this parameter only when paginating results and only after you receive a response indicating that the results are truncated. Set it to the value of the Marker element in the response that you received to indicate where the next call should start. - */ - Marker?: markerType; - /** - * (Optional) Use this only when paginating results to indicate the maximum number of items you want in the response. If additional items exist beyond the maximum you specify, the IsTruncated response element is true. If you do not include this parameter, it defaults to 100. Note that IAM might return fewer results, even when there are more results available. In that case, the IsTruncated response element returns true and Marker contains a value to include in the subsequent call that tells the service where to continue from. - */ - MaxItems?: maxItemsType; - } - export interface ListRolesResponse { - /** - * A list of roles. - */ - Roles: roleListType; - /** - * A flag that indicates whether there are more items to return. If your results were truncated, you can make a subsequent pagination request using the Marker request parameter to retrieve more items. Note that IAM might return fewer than the MaxItems number of results even when there are more results available. We recommend that you check IsTruncated after every call to ensure that you receive all of your results. - */ - IsTruncated?: booleanType; - /** - * When IsTruncated is true, this element is present and contains the value to use for the Marker parameter in a subsequent pagination request. - */ - Marker?: markerType; - } - export interface ListSAMLProvidersRequest { - } - export interface ListSAMLProvidersResponse { - /** - * The list of SAML provider resource objects defined in IAM for this AWS account. - */ - SAMLProviderList?: SAMLProviderListType; - } - export interface ListSSHPublicKeysRequest { - /** - * The name of the IAM user to list SSH public keys for. If none is specified, the UserName field is determined implicitly based on the AWS access key used to sign the request. This parameter allows (per its regex pattern) a string of characters consisting of upper and lowercase alphanumeric characters with no spaces. You can also include any of the following characters: =,.@- - */ - UserName?: userNameType; - /** - * Use this parameter only when paginating results and only after you receive a response indicating that the results are truncated. Set it to the value of the Marker element in the response that you received to indicate where the next call should start. - */ - Marker?: markerType; - /** - * (Optional) Use this only when paginating results to indicate the maximum number of items you want in the response. If additional items exist beyond the maximum you specify, the IsTruncated response element is true. If you do not include this parameter, it defaults to 100. Note that IAM might return fewer results, even when there are more results available. In that case, the IsTruncated response element returns true and Marker contains a value to include in the subsequent call that tells the service where to continue from. - */ - MaxItems?: maxItemsType; - } - export interface ListSSHPublicKeysResponse { - /** - * A list of the SSH public keys assigned to IAM user. - */ - SSHPublicKeys?: SSHPublicKeyListType; - /** - * A flag that indicates whether there are more items to return. If your results were truncated, you can make a subsequent pagination request using the Marker request parameter to retrieve more items. Note that IAM might return fewer than the MaxItems number of results even when there are more results available. We recommend that you check IsTruncated after every call to ensure that you receive all of your results. - */ - IsTruncated?: booleanType; - /** - * When IsTruncated is true, this element is present and contains the value to use for the Marker parameter in a subsequent pagination request. - */ - Marker?: markerType; - } - export interface ListServerCertificatesRequest { - /** - * The path prefix for filtering the results. For example: /company/servercerts would get all server certificates for which the path starts with /company/servercerts. This parameter is optional. If it is not included, it defaults to a slash (/), listing all server certificates. This paramater allows (per its regex pattern) a string of characters consisting of either a forward slash (/) by itself or a string that must begin and end with forward slashes, containing any ASCII character from the ! (\u0021) thru the DEL character (\u007F), including most punctuation characters, digits, and upper and lowercased letters. - */ - PathPrefix?: pathPrefixType; - /** - * Use this parameter only when paginating results and only after you receive a response indicating that the results are truncated. Set it to the value of the Marker element in the response that you received to indicate where the next call should start. - */ - Marker?: markerType; - /** - * (Optional) Use this only when paginating results to indicate the maximum number of items you want in the response. If additional items exist beyond the maximum you specify, the IsTruncated response element is true. If you do not include this parameter, it defaults to 100. Note that IAM might return fewer results, even when there are more results available. In that case, the IsTruncated response element returns true and Marker contains a value to include in the subsequent call that tells the service where to continue from. - */ - MaxItems?: maxItemsType; - } - export interface ListServerCertificatesResponse { - /** - * A list of server certificates. - */ - ServerCertificateMetadataList: serverCertificateMetadataListType; - /** - * A flag that indicates whether there are more items to return. If your results were truncated, you can make a subsequent pagination request using the Marker request parameter to retrieve more items. Note that IAM might return fewer than the MaxItems number of results even when there are more results available. We recommend that you check IsTruncated after every call to ensure that you receive all of your results. - */ - IsTruncated?: booleanType; - /** - * When IsTruncated is true, this element is present and contains the value to use for the Marker parameter in a subsequent pagination request. - */ - Marker?: markerType; - } - export interface ListServiceSpecificCredentialsRequest { - /** - * The name of the user whose service-specific credentials you want information about. If this value is not specified then the operation assumes the user whose credentials are used to call the operation. This parameter allows (per its regex pattern) a string of characters consisting of upper and lowercase alphanumeric characters with no spaces. You can also include any of the following characters: =,.@- - */ - UserName?: userNameType; - /** - * Filters the returned results to only those for the specified AWS service. If not specified, then AWS returns service-specific credentials for all services. - */ - ServiceName?: serviceName; - } - export interface ListServiceSpecificCredentialsResponse { - /** - * A list of structures that each contain details about a service-specific credential. - */ - ServiceSpecificCredentials?: ServiceSpecificCredentialsListType; - } - export interface ListSigningCertificatesRequest { - /** - * The name of the IAM user whose signing certificates you want to examine. This parameter allows (per its regex pattern) a string of characters consisting of upper and lowercase alphanumeric characters with no spaces. You can also include any of the following characters: =,.@- - */ - UserName?: existingUserNameType; - /** - * Use this parameter only when paginating results and only after you receive a response indicating that the results are truncated. Set it to the value of the Marker element in the response that you received to indicate where the next call should start. - */ - Marker?: markerType; - /** - * (Optional) Use this only when paginating results to indicate the maximum number of items you want in the response. If additional items exist beyond the maximum you specify, the IsTruncated response element is true. If you do not include this parameter, it defaults to 100. Note that IAM might return fewer results, even when there are more results available. In that case, the IsTruncated response element returns true and Marker contains a value to include in the subsequent call that tells the service where to continue from. - */ - MaxItems?: maxItemsType; - } - export interface ListSigningCertificatesResponse { - /** - * A list of the user's signing certificate information. - */ - Certificates: certificateListType; - /** - * A flag that indicates whether there are more items to return. If your results were truncated, you can make a subsequent pagination request using the Marker request parameter to retrieve more items. Note that IAM might return fewer than the MaxItems number of results even when there are more results available. We recommend that you check IsTruncated after every call to ensure that you receive all of your results. - */ - IsTruncated?: booleanType; - /** - * When IsTruncated is true, this element is present and contains the value to use for the Marker parameter in a subsequent pagination request. - */ - Marker?: markerType; - } - export interface ListUserPoliciesRequest { - /** - * The name of the user to list policies for. This parameter allows (per its regex pattern) a string of characters consisting of upper and lowercase alphanumeric characters with no spaces. You can also include any of the following characters: =,.@- - */ - UserName: existingUserNameType; - /** - * Use this parameter only when paginating results and only after you receive a response indicating that the results are truncated. Set it to the value of the Marker element in the response that you received to indicate where the next call should start. - */ - Marker?: markerType; - /** - * (Optional) Use this only when paginating results to indicate the maximum number of items you want in the response. If additional items exist beyond the maximum you specify, the IsTruncated response element is true. If you do not include this parameter, it defaults to 100. Note that IAM might return fewer results, even when there are more results available. In that case, the IsTruncated response element returns true and Marker contains a value to include in the subsequent call that tells the service where to continue from. - */ - MaxItems?: maxItemsType; - } - export interface ListUserPoliciesResponse { - /** - * A list of policy names. - */ - PolicyNames: policyNameListType; - /** - * A flag that indicates whether there are more items to return. If your results were truncated, you can make a subsequent pagination request using the Marker request parameter to retrieve more items. Note that IAM might return fewer than the MaxItems number of results even when there are more results available. We recommend that you check IsTruncated after every call to ensure that you receive all of your results. - */ - IsTruncated?: booleanType; - /** - * When IsTruncated is true, this element is present and contains the value to use for the Marker parameter in a subsequent pagination request. - */ - Marker?: markerType; - } - export interface ListUsersRequest { - /** - * The path prefix for filtering the results. For example: /division_abc/subdivision_xyz/, which would get all user names whose path starts with /division_abc/subdivision_xyz/. This parameter is optional. If it is not included, it defaults to a slash (/), listing all user names. This paramater allows (per its regex pattern) a string of characters consisting of either a forward slash (/) by itself or a string that must begin and end with forward slashes, containing any ASCII character from the ! (\u0021) thru the DEL character (\u007F), including most punctuation characters, digits, and upper and lowercased letters. - */ - PathPrefix?: pathPrefixType; - /** - * Use this parameter only when paginating results and only after you receive a response indicating that the results are truncated. Set it to the value of the Marker element in the response that you received to indicate where the next call should start. - */ - Marker?: markerType; - /** - * (Optional) Use this only when paginating results to indicate the maximum number of items you want in the response. If additional items exist beyond the maximum you specify, the IsTruncated response element is true. If you do not include this parameter, it defaults to 100. Note that IAM might return fewer results, even when there are more results available. In that case, the IsTruncated response element returns true and Marker contains a value to include in the subsequent call that tells the service where to continue from. - */ - MaxItems?: maxItemsType; - } - export interface ListUsersResponse { - /** - * A list of users. - */ - Users: userListType; - /** - * A flag that indicates whether there are more items to return. If your results were truncated, you can make a subsequent pagination request using the Marker request parameter to retrieve more items. Note that IAM might return fewer than the MaxItems number of results even when there are more results available. We recommend that you check IsTruncated after every call to ensure that you receive all of your results. - */ - IsTruncated?: booleanType; - /** - * When IsTruncated is true, this element is present and contains the value to use for the Marker parameter in a subsequent pagination request. - */ - Marker?: markerType; - } - export interface ListVirtualMFADevicesRequest { - /** - * The status (Unassigned or Assigned) of the devices to list. If you do not specify an AssignmentStatus, the action defaults to Any which lists both assigned and unassigned virtual MFA devices. - */ - AssignmentStatus?: assignmentStatusType; - /** - * Use this parameter only when paginating results and only after you receive a response indicating that the results are truncated. Set it to the value of the Marker element in the response that you received to indicate where the next call should start. - */ - Marker?: markerType; - /** - * (Optional) Use this only when paginating results to indicate the maximum number of items you want in the response. If additional items exist beyond the maximum you specify, the IsTruncated response element is true. If you do not include this parameter, it defaults to 100. Note that IAM might return fewer results, even when there are more results available. In that case, the IsTruncated response element returns true and Marker contains a value to include in the subsequent call that tells the service where to continue from. - */ - MaxItems?: maxItemsType; - } - export interface ListVirtualMFADevicesResponse { - /** - * The list of virtual MFA devices in the current account that match the AssignmentStatus value that was passed in the request. - */ - VirtualMFADevices: virtualMFADeviceListType; - /** - * A flag that indicates whether there are more items to return. If your results were truncated, you can make a subsequent pagination request using the Marker request parameter to retrieve more items. Note that IAM might return fewer than the MaxItems number of results even when there are more results available. We recommend that you check IsTruncated after every call to ensure that you receive all of your results. - */ - IsTruncated?: booleanType; - /** - * When IsTruncated is true, this element is present and contains the value to use for the Marker parameter in a subsequent pagination request. - */ - Marker?: markerType; - } - export interface LoginProfile { - /** - * The name of the user, which can be used for signing in to the AWS Management Console. - */ - UserName: userNameType; - /** - * The date when the password for the user was created. - */ - CreateDate: dateType; - /** - * Specifies whether the user is required to set a new password on next sign-in. - */ - PasswordResetRequired?: booleanType; - } - export interface MFADevice { - /** - * The user with whom the MFA device is associated. - */ - UserName: userNameType; - /** - * The serial number that uniquely identifies the MFA device. For virtual MFA devices, the serial number is the device ARN. - */ - SerialNumber: serialNumberType; - /** - * The date when the MFA device was enabled for the user. - */ - EnableDate: dateType; - } - export interface ManagedPolicyDetail { - /** - * The friendly name (not ARN) identifying the policy. - */ - PolicyName?: policyNameType; - /** - * The stable and unique string identifying the policy. For more information about IDs, see IAM Identifiers in the Using IAM guide. - */ - PolicyId?: idType; - Arn?: arnType; - /** - * The path to the policy. For more information about paths, see IAM Identifiers in the Using IAM guide. - */ - Path?: policyPathType; - /** - * The identifier for the version of the policy that is set as the default (operative) version. For more information about policy versions, see Versioning for Managed Policies in the Using IAM guide. - */ - DefaultVersionId?: policyVersionIdType; - /** - * The number of principal entities (users, groups, and roles) that the policy is attached to. - */ - AttachmentCount?: attachmentCountType; - /** - * Specifies whether the policy can be attached to an IAM user, group, or role. - */ - IsAttachable?: booleanType; - /** - * A friendly description of the policy. - */ - Description?: policyDescriptionType; - /** - * The date and time, in ISO 8601 date-time format, when the policy was created. - */ - CreateDate?: dateType; - /** - * The date and time, in ISO 8601 date-time format, when the policy was last updated. When a policy has only one version, this field contains the date and time when the policy was created. When a policy has more than one version, this field contains the date and time when the most recent policy version was created. - */ - UpdateDate?: dateType; - /** - * A list containing information about the versions of the policy. - */ - PolicyVersionList?: policyDocumentVersionListType; - } - export type ManagedPolicyDetailListType = ManagedPolicyDetail[]; - export interface OpenIDConnectProviderListEntry { - Arn?: arnType; - } - export type OpenIDConnectProviderListType = OpenIDConnectProviderListEntry[]; - export type OpenIDConnectProviderUrlType = string; - export interface OrganizationsDecisionDetail { - /** - * Specifies whether the simulated action is allowed by the AWS Organizations service control policies that impact the simulated user's account. - */ - AllowedByOrganizations?: booleanType; - } - export interface PasswordPolicy { - /** - * Minimum length to require for IAM user passwords. - */ - MinimumPasswordLength?: minimumPasswordLengthType; - /** - * Specifies whether to require symbols for IAM user passwords. - */ - RequireSymbols?: booleanType; - /** - * Specifies whether to require numbers for IAM user passwords. - */ - RequireNumbers?: booleanType; - /** - * Specifies whether to require uppercase characters for IAM user passwords. - */ - RequireUppercaseCharacters?: booleanType; - /** - * Specifies whether to require lowercase characters for IAM user passwords. - */ - RequireLowercaseCharacters?: booleanType; - /** - * Specifies whether IAM users are allowed to change their own password. - */ - AllowUsersToChangePassword?: booleanType; - /** - * Indicates whether passwords in the account expire. Returns true if MaxPasswordAge is contains a value greater than 0. Returns false if MaxPasswordAge is 0 or not present. - */ - ExpirePasswords?: booleanType; - /** - * The number of days that an IAM user password is valid. - */ - MaxPasswordAge?: maxPasswordAgeType; - /** - * Specifies the number of previous passwords that IAM users are prevented from reusing. - */ - PasswordReusePrevention?: passwordReusePreventionType; - /** - * Specifies whether IAM users are prevented from setting a new password after their password has expired. - */ - HardExpiry?: booleanObjectType; - } - export interface Policy { - /** - * The friendly name (not ARN) identifying the policy. - */ - PolicyName?: policyNameType; - /** - * The stable and unique string identifying the policy. For more information about IDs, see IAM Identifiers in the Using IAM guide. - */ - PolicyId?: idType; - Arn?: arnType; - /** - * The path to the policy. For more information about paths, see IAM Identifiers in the Using IAM guide. - */ - Path?: policyPathType; - /** - * The identifier for the version of the policy that is set as the default version. - */ - DefaultVersionId?: policyVersionIdType; - /** - * The number of entities (users, groups, and roles) that the policy is attached to. - */ - AttachmentCount?: attachmentCountType; - /** - * Specifies whether the policy can be attached to an IAM user, group, or role. - */ - IsAttachable?: booleanType; - /** - * A friendly description of the policy. This element is included in the response to the GetPolicy operation. It is not included in the response to the ListPolicies operation. - */ - Description?: policyDescriptionType; - /** - * The date and time, in ISO 8601 date-time format, when the policy was created. - */ - CreateDate?: dateType; - /** - * The date and time, in ISO 8601 date-time format, when the policy was last updated. When a policy has only one version, this field contains the date and time when the policy was created. When a policy has more than one version, this field contains the date and time when the most recent policy version was created. - */ - UpdateDate?: dateType; - } - export interface PolicyDetail { - /** - * The name of the policy. - */ - PolicyName?: policyNameType; - /** - * The policy document. - */ - PolicyDocument?: policyDocumentType; - } - export type PolicyEvaluationDecisionType = "allowed"|"explicitDeny"|"implicitDeny"|string; - export interface PolicyGroup { - /** - * The name (friendly name, not ARN) identifying the group. - */ - GroupName?: groupNameType; - /** - * The stable and unique string identifying the group. For more information about IDs, see IAM Identifiers in the IAM User Guide. - */ - GroupId?: idType; - } - export type PolicyGroupListType = PolicyGroup[]; - export type PolicyIdentifierType = string; - export interface PolicyRole { - /** - * The name (friendly name, not ARN) identifying the role. - */ - RoleName?: roleNameType; - /** - * The stable and unique string identifying the role. For more information about IDs, see IAM Identifiers in the IAM User Guide. - */ - RoleId?: idType; - } - export type PolicyRoleListType = PolicyRole[]; - export type PolicySourceType = "user"|"group"|"role"|"aws-managed"|"user-managed"|"resource"|"none"|string; - export interface PolicyUser { - /** - * The name (friendly name, not ARN) identifying the user. - */ - UserName?: userNameType; - /** - * The stable and unique string identifying the user. For more information about IDs, see IAM Identifiers in the IAM User Guide. - */ - UserId?: idType; - } - export type PolicyUserListType = PolicyUser[]; - export interface PolicyVersion { - /** - * The policy document. The policy document is returned in the response to the GetPolicyVersion and GetAccountAuthorizationDetails operations. It is not returned in the response to the CreatePolicyVersion or ListPolicyVersions operations. - */ - Document?: policyDocumentType; - /** - * The identifier for the policy version. Policy version identifiers always begin with v (always lowercase). When a policy is created, the first policy version is v1. - */ - VersionId?: policyVersionIdType; - /** - * Specifies whether the policy version is set as the policy's default version. - */ - IsDefaultVersion?: booleanType; - /** - * The date and time, in ISO 8601 date-time format, when the policy version was created. - */ - CreateDate?: dateType; - } - export interface Position { - /** - * The line containing the specified position in the document. - */ - Line?: LineNumber; - /** - * The column in the line containing the specified position in the document. - */ - Column?: ColumnNumber; - } - export interface PutGroupPolicyRequest { - /** - * The name of the group to associate the policy with. This parameter allows (per its regex pattern) a string of characters consisting of upper and lowercase alphanumeric characters with no spaces. You can also include any of the following characters: =,.@- - */ - GroupName: groupNameType; - /** - * The name of the policy document. This parameter allows (per its regex pattern) a string of characters consisting of upper and lowercase alphanumeric characters with no spaces. You can also include any of the following characters: =,.@-+ - */ - PolicyName: policyNameType; - /** - * The policy document. The regex pattern used to validate this parameter is a string of characters consisting of any printable ASCII character ranging from the space character (\u0020) through end of the ASCII character range as well as the printable characters in the Basic Latin and Latin-1 Supplement character set (through \u00FF). It also includes the special characters tab (\u0009), line feed (\u000A), and carriage return (\u000D). - */ - PolicyDocument: policyDocumentType; - } - export interface PutRolePolicyRequest { - /** - * The name of the role to associate the policy with. This parameter allows (per its regex pattern) a string of characters consisting of upper and lowercase alphanumeric characters with no spaces. You can also include any of the following characters: _+=,.@- - */ - RoleName: roleNameType; - /** - * The name of the policy document. This parameter allows (per its regex pattern) a string of characters consisting of upper and lowercase alphanumeric characters with no spaces. You can also include any of the following characters: =,.@-+ - */ - PolicyName: policyNameType; - /** - * The policy document. The regex pattern used to validate this parameter is a string of characters consisting of any printable ASCII character ranging from the space character (\u0020) through end of the ASCII character range as well as the printable characters in the Basic Latin and Latin-1 Supplement character set (through \u00FF). It also includes the special characters tab (\u0009), line feed (\u000A), and carriage return (\u000D). - */ - PolicyDocument: policyDocumentType; - } - export interface PutUserPolicyRequest { - /** - * The name of the user to associate the policy with. This parameter allows (per its regex pattern) a string of characters consisting of upper and lowercase alphanumeric characters with no spaces. You can also include any of the following characters: =,.@- - */ - UserName: existingUserNameType; - /** - * The name of the policy document. This parameter allows (per its regex pattern) a string of characters consisting of upper and lowercase alphanumeric characters with no spaces. You can also include any of the following characters: =,.@-+ - */ - PolicyName: policyNameType; - /** - * The policy document. The regex pattern used to validate this parameter is a string of characters consisting of any printable ASCII character ranging from the space character (\u0020) through end of the ASCII character range as well as the printable characters in the Basic Latin and Latin-1 Supplement character set (through \u00FF). It also includes the special characters tab (\u0009), line feed (\u000A), and carriage return (\u000D). - */ - PolicyDocument: policyDocumentType; - } - export type ReasonType = string; - export type RegionNameType = string; - export interface RemoveClientIDFromOpenIDConnectProviderRequest { - /** - * The Amazon Resource Name (ARN) of the IAM OIDC provider resource to remove the client ID from. You can get a list of OIDC provider ARNs by using the ListOpenIDConnectProviders action. For more information about ARNs, see Amazon Resource Names (ARNs) and AWS Service Namespaces in the AWS General Reference. - */ - OpenIDConnectProviderArn: arnType; - /** - * The client ID (also known as audience) to remove from the IAM OIDC provider resource. For more information about client IDs, see CreateOpenIDConnectProvider. - */ - ClientID: clientIDType; - } - export interface RemoveRoleFromInstanceProfileRequest { - /** - * The name of the instance profile to update. This parameter allows (per its regex pattern) a string of characters consisting of upper and lowercase alphanumeric characters with no spaces. You can also include any of the following characters: =,.@- - */ - InstanceProfileName: instanceProfileNameType; - /** - * The name of the role to remove. This parameter allows (per its regex pattern) a string of characters consisting of upper and lowercase alphanumeric characters with no spaces. You can also include any of the following characters: _+=,.@- - */ - RoleName: roleNameType; - } - export interface RemoveUserFromGroupRequest { - /** - * The name of the group to update. This parameter allows (per its regex pattern) a string of characters consisting of upper and lowercase alphanumeric characters with no spaces. You can also include any of the following characters: =,.@- - */ - GroupName: groupNameType; - /** - * The name of the user to remove. This parameter allows (per its regex pattern) a string of characters consisting of upper and lowercase alphanumeric characters with no spaces. You can also include any of the following characters: =,.@- - */ - UserName: existingUserNameType; - } - export type ReportContentType = Buffer|Uint8Array|Blob|string; - export type ReportFormatType = "text/csv"|string; - export type ReportStateDescriptionType = string; - export type ReportStateType = "STARTED"|"INPROGRESS"|"COMPLETE"|string; - export interface ResetServiceSpecificCredentialRequest { - /** - * The name of the IAM user associated with the service-specific credential. If this value is not specified, then the operation assumes the user whose credentials are used to call the operation. This parameter allows (per its regex pattern) a string of characters consisting of upper and lowercase alphanumeric characters with no spaces. You can also include any of the following characters: =,.@- - */ - UserName?: userNameType; - /** - * The unique identifier of the service-specific credential. This parameter allows (per its regex pattern) a string of characters that can consist of any upper or lowercased letter or digit. - */ - ServiceSpecificCredentialId: serviceSpecificCredentialId; - } - export interface ResetServiceSpecificCredentialResponse { - /** - * A structure with details about the updated service-specific credential, including the new password. This is the only time that you can access the password. You cannot recover the password later, but you can reset it again. - */ - ServiceSpecificCredential?: ServiceSpecificCredential; - } - export type ResourceHandlingOptionType = string; - export type ResourceNameListType = ResourceNameType[]; - export type ResourceNameType = string; - export interface ResourceSpecificResult { - /** - * The name of the simulated resource, in Amazon Resource Name (ARN) format. - */ - EvalResourceName: ResourceNameType; - /** - * The result of the simulation of the simulated API action on the resource specified in EvalResourceName. - */ - EvalResourceDecision: PolicyEvaluationDecisionType; - /** - * A list of the statements in the input policies that determine the result for this part of the simulation. Remember that even if multiple statements allow the action on the resource, if any statement denies that action, then the explicit deny overrides any allow, and the deny statement is the only entry included in the result. - */ - MatchedStatements?: StatementListType; - /** - * A list of context keys that are required by the included input policies but that were not provided by one of the input parameters. This list is used when a list of ARNs is included in the ResourceArns parameter instead of "*". If you do not specify individual resources, by setting ResourceArns to "*" or by not including the ResourceArns parameter, then any missing context values are instead included under the EvaluationResults section. To discover the context keys used by a set of policies, you can call GetContextKeysForCustomPolicy or GetContextKeysForPrincipalPolicy. - */ - MissingContextValues?: ContextKeyNamesResultListType; - /** - * Additional details about the results of the evaluation decision. When there are both IAM policies and resource policies, this parameter explains how each set of policies contributes to the final evaluation decision. When simulating cross-account access to a resource, both the resource-based policy and the caller's IAM policy must grant access. - */ - EvalDecisionDetails?: EvalDecisionDetailsType; - } - export type ResourceSpecificResultListType = ResourceSpecificResult[]; - export interface ResyncMFADeviceRequest { - /** - * The name of the user whose MFA device you want to resynchronize. This parameter allows (per its regex pattern) a string of characters consisting of upper and lowercase alphanumeric characters with no spaces. You can also include any of the following characters: =,.@- - */ - UserName: existingUserNameType; - /** - * Serial number that uniquely identifies the MFA device. This parameter allows (per its regex pattern) a string of characters consisting of upper and lowercase alphanumeric characters with no spaces. You can also include any of the following characters: =,.@- - */ - SerialNumber: serialNumberType; - /** - * An authentication code emitted by the device. The format for this parameter is a sequence of six digits. - */ - AuthenticationCode1: authenticationCodeType; - /** - * A subsequent authentication code emitted by the device. The format for this parameter is a sequence of six digits. - */ - AuthenticationCode2: authenticationCodeType; - } - export interface Role { - /** - * The path to the role. For more information about paths, see IAM Identifiers in the Using IAM guide. - */ - Path: pathType; - /** - * The friendly name that identifies the role. - */ - RoleName: roleNameType; - /** - * The stable and unique string identifying the role. For more information about IDs, see IAM Identifiers in the Using IAM guide. - */ - RoleId: idType; - /** - * The Amazon Resource Name (ARN) specifying the role. For more information about ARNs and how to use them in policies, see IAM Identifiers in the IAM User Guide guide. - */ - Arn: arnType; - /** - * The date and time, in ISO 8601 date-time format, when the role was created. - */ - CreateDate: dateType; - /** - * The policy that grants an entity permission to assume the role. - */ - AssumeRolePolicyDocument?: policyDocumentType; - /** - * A description of the role that you provide. - */ - Description?: roleDescriptionType; - } - export interface RoleDetail { - /** - * The path to the role. For more information about paths, see IAM Identifiers in the Using IAM guide. - */ - Path?: pathType; - /** - * The friendly name that identifies the role. - */ - RoleName?: roleNameType; - /** - * The stable and unique string identifying the role. For more information about IDs, see IAM Identifiers in the Using IAM guide. - */ - RoleId?: idType; - Arn?: arnType; - /** - * The date and time, in ISO 8601 date-time format, when the role was created. - */ - CreateDate?: dateType; - /** - * The trust policy that grants permission to assume the role. - */ - AssumeRolePolicyDocument?: policyDocumentType; - /** - * A list of instance profiles that contain this role. - */ - InstanceProfileList?: instanceProfileListType; - /** - * A list of inline policies embedded in the role. These policies are the role's access (permissions) policies. - */ - RolePolicyList?: policyDetailListType; - /** - * A list of managed policies attached to the role. These policies are the role's access (permissions) policies. - */ - AttachedManagedPolicies?: attachedPoliciesListType; - } - export type RoleUsageListType = RoleUsageType[]; - export interface RoleUsageType { - /** - * The name of the region where the service-linked role is being used. - */ - Region?: RegionNameType; - /** - * The name of the resource that is using the service-linked role. - */ - Resources?: ArnListType; - } - export type SAMLMetadataDocumentType = string; - export interface SAMLProviderListEntry { - /** - * The Amazon Resource Name (ARN) of the SAML provider. - */ - Arn?: arnType; - /** - * The expiration date and time for the SAML provider. - */ - ValidUntil?: dateType; - /** - * The date and time when the SAML provider was created. - */ - CreateDate?: dateType; - } - export type SAMLProviderListType = SAMLProviderListEntry[]; - export type SAMLProviderNameType = string; - export interface SSHPublicKey { - /** - * The name of the IAM user associated with the SSH public key. - */ - UserName: userNameType; - /** - * The unique identifier for the SSH public key. - */ - SSHPublicKeyId: publicKeyIdType; - /** - * The MD5 message digest of the SSH public key. - */ - Fingerprint: publicKeyFingerprintType; - /** - * The SSH public key. - */ - SSHPublicKeyBody: publicKeyMaterialType; - /** - * The status of the SSH public key. Active means the key can be used for authentication with an AWS CodeCommit repository. Inactive means the key cannot be used. - */ - Status: statusType; - /** - * The date and time, in ISO 8601 date-time format, when the SSH public key was uploaded. - */ - UploadDate?: dateType; - } - export type SSHPublicKeyListType = SSHPublicKeyMetadata[]; - export interface SSHPublicKeyMetadata { - /** - * The name of the IAM user associated with the SSH public key. - */ - UserName: userNameType; - /** - * The unique identifier for the SSH public key. - */ - SSHPublicKeyId: publicKeyIdType; - /** - * The status of the SSH public key. Active means the key can be used for authentication with an AWS CodeCommit repository. Inactive means the key cannot be used. - */ - Status: statusType; - /** - * The date and time, in ISO 8601 date-time format, when the SSH public key was uploaded. - */ - UploadDate: dateType; - } - export interface ServerCertificate { - /** - * The meta information of the server certificate, such as its name, path, ID, and ARN. - */ - ServerCertificateMetadata: ServerCertificateMetadata; - /** - * The contents of the public key certificate. - */ - CertificateBody: certificateBodyType; - /** - * The contents of the public key certificate chain. - */ - CertificateChain?: certificateChainType; - } - export interface ServerCertificateMetadata { - /** - * The path to the server certificate. For more information about paths, see IAM Identifiers in the Using IAM guide. - */ - Path: pathType; - /** - * The name that identifies the server certificate. - */ - ServerCertificateName: serverCertificateNameType; - /** - * The stable and unique string identifying the server certificate. For more information about IDs, see IAM Identifiers in the Using IAM guide. - */ - ServerCertificateId: idType; - /** - * The Amazon Resource Name (ARN) specifying the server certificate. For more information about ARNs and how to use them in policies, see IAM Identifiers in the Using IAM guide. - */ - Arn: arnType; - /** - * The date when the server certificate was uploaded. - */ - UploadDate?: dateType; - /** - * The date on which the certificate is set to expire. - */ - Expiration?: dateType; - } - export interface ServiceSpecificCredential { - /** - * The date and time, in ISO 8601 date-time format, when the service-specific credential were created. - */ - CreateDate: dateType; - /** - * The name of the service associated with the service-specific credential. - */ - ServiceName: serviceName; - /** - * The generated user name for the service-specific credential. This value is generated by combining the IAM user's name combined with the ID number of the AWS account, as in jane-at-123456789012, for example. This value cannot be configured by the user. - */ - ServiceUserName: serviceUserName; - /** - * The generated password for the service-specific credential. - */ - ServicePassword: servicePassword; - /** - * The unique identifier for the service-specific credential. - */ - ServiceSpecificCredentialId: serviceSpecificCredentialId; - /** - * The name of the IAM user associated with the service-specific credential. - */ - UserName: userNameType; - /** - * The status of the service-specific credential. Active means the key is valid for API calls, while Inactive means it is not. - */ - Status: statusType; - } - export interface ServiceSpecificCredentialMetadata { - /** - * The name of the IAM user associated with the service-specific credential. - */ - UserName: userNameType; - /** - * The status of the service-specific credential. Active means the key is valid for API calls, while Inactive means it is not. - */ - Status: statusType; - /** - * The generated user name for the service-specific credential. - */ - ServiceUserName: serviceUserName; - /** - * The date and time, in ISO 8601 date-time format, when the service-specific credential were created. - */ - CreateDate: dateType; - /** - * The unique identifier for the service-specific credential. - */ - ServiceSpecificCredentialId: serviceSpecificCredentialId; - /** - * The name of the service associated with the service-specific credential. - */ - ServiceName: serviceName; - } - export type ServiceSpecificCredentialsListType = ServiceSpecificCredentialMetadata[]; - export interface SetDefaultPolicyVersionRequest { - /** - * The Amazon Resource Name (ARN) of the IAM policy whose default version you want to set. For more information about ARNs, see Amazon Resource Names (ARNs) and AWS Service Namespaces in the AWS General Reference. - */ - PolicyArn: arnType; - /** - * The version of the policy to set as the default (operative) version. For more information about managed policy versions, see Versioning for Managed Policies in the IAM User Guide. - */ - VersionId: policyVersionIdType; - } - export interface SigningCertificate { - /** - * The name of the user the signing certificate is associated with. - */ - UserName: userNameType; - /** - * The ID for the signing certificate. - */ - CertificateId: certificateIdType; - /** - * The contents of the signing certificate. - */ - CertificateBody: certificateBodyType; - /** - * The status of the signing certificate. Active means the key is valid for API calls, while Inactive means it is not. - */ - Status: statusType; - /** - * The date when the signing certificate was uploaded. - */ - UploadDate?: dateType; - } - export interface SimulateCustomPolicyRequest { - /** - * A list of policy documents to include in the simulation. Each document is specified as a string containing the complete, valid JSON text of an IAM policy. Do not include any resource-based policies in this parameter. Any resource-based policy must be submitted with the ResourcePolicy parameter. The policies cannot be "scope-down" policies, such as you could include in a call to GetFederationToken or one of the AssumeRole APIs to restrict what a user can do while using the temporary credentials. The regex pattern used to validate this parameter is a string of characters consisting of any printable ASCII character ranging from the space character (\u0020) through end of the ASCII character range as well as the printable characters in the Basic Latin and Latin-1 Supplement character set (through \u00FF). It also includes the special characters tab (\u0009), line feed (\u000A), and carriage return (\u000D). - */ - PolicyInputList: SimulationPolicyListType; - /** - * A list of names of API actions to evaluate in the simulation. Each action is evaluated against each resource. Each action must include the service identifier, such as iam:CreateUser. - */ - ActionNames: ActionNameListType; - /** - * A list of ARNs of AWS resources to include in the simulation. If this parameter is not provided then the value defaults to * (all resources). Each API in the ActionNames parameter is evaluated for each resource in this list. The simulation determines the access result (allowed or denied) of each combination and reports it in the response. The simulation does not automatically retrieve policies for the specified resources. If you want to include a resource policy in the simulation, then you must include the policy as a string in the ResourcePolicy parameter. If you include a ResourcePolicy, then it must be applicable to all of the resources included in the simulation or you receive an invalid input error. For more information about ARNs, see Amazon Resource Names (ARNs) and AWS Service Namespaces in the AWS General Reference. - */ - ResourceArns?: ResourceNameListType; - /** - * A resource-based policy to include in the simulation provided as a string. Each resource in the simulation is treated as if it had this policy attached. You can include only one resource-based policy in a simulation. The regex pattern used to validate this parameter is a string of characters consisting of any printable ASCII character ranging from the space character (\u0020) through end of the ASCII character range as well as the printable characters in the Basic Latin and Latin-1 Supplement character set (through \u00FF). It also includes the special characters tab (\u0009), line feed (\u000A), and carriage return (\u000D). - */ - ResourcePolicy?: policyDocumentType; - /** - * An AWS account ID that specifies the owner of any simulated resource that does not identify its owner in the resource ARN, such as an S3 bucket or object. If ResourceOwner is specified, it is also used as the account owner of any ResourcePolicy included in the simulation. If the ResourceOwner parameter is not specified, then the owner of the resources and the resource policy defaults to the account of the identity provided in CallerArn. This parameter is required only if you specify a resource-based policy and account that owns the resource is different from the account that owns the simulated calling user CallerArn. - */ - ResourceOwner?: ResourceNameType; - /** - * The ARN of the IAM user that you want to use as the simulated caller of the APIs. CallerArn is required if you include a ResourcePolicy so that the policy's Principal element has a value to use in evaluating the policy. You can specify only the ARN of an IAM user. You cannot specify the ARN of an assumed role, federated user, or a service principal. - */ - CallerArn?: ResourceNameType; - /** - * A list of context keys and corresponding values for the simulation to use. Whenever a context key is evaluated in one of the simulated IAM permission policies, the corresponding value is supplied. - */ - ContextEntries?: ContextEntryListType; - /** - * Specifies the type of simulation to run. Different APIs that support resource-based policies require different combinations of resources. By specifying the type of simulation to run, you enable the policy simulator to enforce the presence of the required resources to ensure reliable simulation results. If your simulation does not match one of the following scenarios, then you can omit this parameter. The following list shows each of the supported scenario values and the resources that you must define to run the simulation. Each of the EC2 scenarios requires that you specify instance, image, and security-group resources. If your scenario includes an EBS volume, then you must specify that volume as a resource. If the EC2 scenario includes VPC, then you must supply the network-interface resource. If it includes an IP subnet, then you must specify the subnet resource. For more information on the EC2 scenario options, see Supported Platforms in the AWS EC2 User Guide. EC2-Classic-InstanceStore instance, image, security-group EC2-Classic-EBS instance, image, security-group, volume EC2-VPC-InstanceStore instance, image, security-group, network-interface EC2-VPC-InstanceStore-Subnet instance, image, security-group, network-interface, subnet EC2-VPC-EBS instance, image, security-group, network-interface, volume EC2-VPC-EBS-Subnet instance, image, security-group, network-interface, subnet, volume - */ - ResourceHandlingOption?: ResourceHandlingOptionType; - /** - * (Optional) Use this only when paginating results to indicate the maximum number of items you want in the response. If additional items exist beyond the maximum you specify, the IsTruncated response element is true. If you do not include this parameter, it defaults to 100. Note that IAM might return fewer results, even when there are more results available. In that case, the IsTruncated response element returns true and Marker contains a value to include in the subsequent call that tells the service where to continue from. - */ - MaxItems?: maxItemsType; - /** - * Use this parameter only when paginating results and only after you receive a response indicating that the results are truncated. Set it to the value of the Marker element in the response that you received to indicate where the next call should start. - */ - Marker?: markerType; - } - export interface SimulatePolicyResponse { - /** - * The results of the simulation. - */ - EvaluationResults?: EvaluationResultsListType; - /** - * A flag that indicates whether there are more items to return. If your results were truncated, you can make a subsequent pagination request using the Marker request parameter to retrieve more items. Note that IAM might return fewer than the MaxItems number of results even when there are more results available. We recommend that you check IsTruncated after every call to ensure that you receive all of your results. - */ - IsTruncated?: booleanType; - /** - * When IsTruncated is true, this element is present and contains the value to use for the Marker parameter in a subsequent pagination request. - */ - Marker?: markerType; - } - export interface SimulatePrincipalPolicyRequest { - /** - * The Amazon Resource Name (ARN) of a user, group, or role whose policies you want to include in the simulation. If you specify a user, group, or role, the simulation includes all policies that are associated with that entity. If you specify a user, the simulation also includes all policies that are attached to any groups the user belongs to. For more information about ARNs, see Amazon Resource Names (ARNs) and AWS Service Namespaces in the AWS General Reference. - */ - PolicySourceArn: arnType; - /** - * An optional list of additional policy documents to include in the simulation. Each document is specified as a string containing the complete, valid JSON text of an IAM policy. The regex pattern used to validate this parameter is a string of characters consisting of any printable ASCII character ranging from the space character (\u0020) through end of the ASCII character range as well as the printable characters in the Basic Latin and Latin-1 Supplement character set (through \u00FF). It also includes the special characters tab (\u0009), line feed (\u000A), and carriage return (\u000D). - */ - PolicyInputList?: SimulationPolicyListType; - /** - * A list of names of API actions to evaluate in the simulation. Each action is evaluated for each resource. Each action must include the service identifier, such as iam:CreateUser. - */ - ActionNames: ActionNameListType; - /** - * A list of ARNs of AWS resources to include in the simulation. If this parameter is not provided then the value defaults to * (all resources). Each API in the ActionNames parameter is evaluated for each resource in this list. The simulation determines the access result (allowed or denied) of each combination and reports it in the response. The simulation does not automatically retrieve policies for the specified resources. If you want to include a resource policy in the simulation, then you must include the policy as a string in the ResourcePolicy parameter. For more information about ARNs, see Amazon Resource Names (ARNs) and AWS Service Namespaces in the AWS General Reference. - */ - ResourceArns?: ResourceNameListType; - /** - * A resource-based policy to include in the simulation provided as a string. Each resource in the simulation is treated as if it had this policy attached. You can include only one resource-based policy in a simulation. The regex pattern used to validate this parameter is a string of characters consisting of any printable ASCII character ranging from the space character (\u0020) through end of the ASCII character range as well as the printable characters in the Basic Latin and Latin-1 Supplement character set (through \u00FF). It also includes the special characters tab (\u0009), line feed (\u000A), and carriage return (\u000D). - */ - ResourcePolicy?: policyDocumentType; - /** - * An AWS account ID that specifies the owner of any simulated resource that does not identify its owner in the resource ARN, such as an S3 bucket or object. If ResourceOwner is specified, it is also used as the account owner of any ResourcePolicy included in the simulation. If the ResourceOwner parameter is not specified, then the owner of the resources and the resource policy defaults to the account of the identity provided in CallerArn. This parameter is required only if you specify a resource-based policy and account that owns the resource is different from the account that owns the simulated calling user CallerArn. - */ - ResourceOwner?: ResourceNameType; - /** - * The ARN of the IAM user that you want to specify as the simulated caller of the APIs. If you do not specify a CallerArn, it defaults to the ARN of the user that you specify in PolicySourceArn, if you specified a user. If you include both a PolicySourceArn (for example, arn:aws:iam::123456789012:user/David) and a CallerArn (for example, arn:aws:iam::123456789012:user/Bob), the result is that you simulate calling the APIs as Bob, as if Bob had David's policies. You can specify only the ARN of an IAM user. You cannot specify the ARN of an assumed role, federated user, or a service principal. CallerArn is required if you include a ResourcePolicy and the PolicySourceArn is not the ARN for an IAM user. This is required so that the resource-based policy's Principal element has a value to use in evaluating the policy. For more information about ARNs, see Amazon Resource Names (ARNs) and AWS Service Namespaces in the AWS General Reference. - */ - CallerArn?: ResourceNameType; - /** - * A list of context keys and corresponding values for the simulation to use. Whenever a context key is evaluated in one of the simulated IAM permission policies, the corresponding value is supplied. - */ - ContextEntries?: ContextEntryListType; - /** - * Specifies the type of simulation to run. Different APIs that support resource-based policies require different combinations of resources. By specifying the type of simulation to run, you enable the policy simulator to enforce the presence of the required resources to ensure reliable simulation results. If your simulation does not match one of the following scenarios, then you can omit this parameter. The following list shows each of the supported scenario values and the resources that you must define to run the simulation. Each of the EC2 scenarios requires that you specify instance, image, and security-group resources. If your scenario includes an EBS volume, then you must specify that volume as a resource. If the EC2 scenario includes VPC, then you must supply the network-interface resource. If it includes an IP subnet, then you must specify the subnet resource. For more information on the EC2 scenario options, see Supported Platforms in the AWS EC2 User Guide. EC2-Classic-InstanceStore instance, image, security-group EC2-Classic-EBS instance, image, security-group, volume EC2-VPC-InstanceStore instance, image, security-group, network-interface EC2-VPC-InstanceStore-Subnet instance, image, security-group, network-interface, subnet EC2-VPC-EBS instance, image, security-group, network-interface, volume EC2-VPC-EBS-Subnet instance, image, security-group, network-interface, subnet, volume - */ - ResourceHandlingOption?: ResourceHandlingOptionType; - /** - * (Optional) Use this only when paginating results to indicate the maximum number of items you want in the response. If additional items exist beyond the maximum you specify, the IsTruncated response element is true. If you do not include this parameter, it defaults to 100. Note that IAM might return fewer results, even when there are more results available. In that case, the IsTruncated response element returns true and Marker contains a value to include in the subsequent call that tells the service where to continue from. - */ - MaxItems?: maxItemsType; - /** - * Use this parameter only when paginating results and only after you receive a response indicating that the results are truncated. Set it to the value of the Marker element in the response that you received to indicate where the next call should start. - */ - Marker?: markerType; - } - export type SimulationPolicyListType = policyDocumentType[]; - export interface Statement { - /** - * The identifier of the policy that was provided as an input. - */ - SourcePolicyId?: PolicyIdentifierType; - /** - * The type of the policy. - */ - SourcePolicyType?: PolicySourceType; - /** - * The row and column of the beginning of the Statement in an IAM policy. - */ - StartPosition?: Position; - /** - * The row and column of the end of a Statement in an IAM policy. - */ - EndPosition?: Position; - } - export type StatementListType = Statement[]; - export interface UpdateAccessKeyRequest { - /** - * The name of the user whose key you want to update. This parameter allows (per its regex pattern) a string of characters consisting of upper and lowercase alphanumeric characters with no spaces. You can also include any of the following characters: =,.@- - */ - UserName?: existingUserNameType; - /** - * The access key ID of the secret access key you want to update. This parameter allows (per its regex pattern) a string of characters that can consist of any upper or lowercased letter or digit. - */ - AccessKeyId: accessKeyIdType; - /** - * The status you want to assign to the secret access key. Active means the key can be used for API calls to AWS, while Inactive means the key cannot be used. - */ - Status: statusType; - } - export interface UpdateAccountPasswordPolicyRequest { - /** - * The minimum number of characters allowed in an IAM user password. Default value: 6 - */ - MinimumPasswordLength?: minimumPasswordLengthType; - /** - * Specifies whether IAM user passwords must contain at least one of the following non-alphanumeric characters: ! @ # $ % ^ &amp; * ( ) _ + - = [ ] { } | ' Default value: false - */ - RequireSymbols?: booleanType; - /** - * Specifies whether IAM user passwords must contain at least one numeric character (0 to 9). Default value: false - */ - RequireNumbers?: booleanType; - /** - * Specifies whether IAM user passwords must contain at least one uppercase character from the ISO basic Latin alphabet (A to Z). Default value: false - */ - RequireUppercaseCharacters?: booleanType; - /** - * Specifies whether IAM user passwords must contain at least one lowercase character from the ISO basic Latin alphabet (a to z). Default value: false - */ - RequireLowercaseCharacters?: booleanType; - /** - * Allows all IAM users in your account to use the AWS Management Console to change their own passwords. For more information, see Letting IAM Users Change Their Own Passwords in the IAM User Guide. Default value: false - */ - AllowUsersToChangePassword?: booleanType; - /** - * The number of days that an IAM user password is valid. The default value of 0 means IAM user passwords never expire. Default value: 0 - */ - MaxPasswordAge?: maxPasswordAgeType; - /** - * Specifies the number of previous passwords that IAM users are prevented from reusing. The default value of 0 means IAM users are not prevented from reusing previous passwords. Default value: 0 - */ - PasswordReusePrevention?: passwordReusePreventionType; - /** - * Prevents IAM users from setting a new password after their password has expired. Default value: false - */ - HardExpiry?: booleanObjectType; - } - export interface UpdateAssumeRolePolicyRequest { - /** - * The name of the role to update with the new policy. This parameter allows (per its regex pattern) a string of characters consisting of upper and lowercase alphanumeric characters with no spaces. You can also include any of the following characters: _+=,.@- - */ - RoleName: roleNameType; - /** - * The policy that grants an entity permission to assume the role. The regex pattern used to validate this parameter is a string of characters consisting of any printable ASCII character ranging from the space character (\u0020) through end of the ASCII character range as well as the printable characters in the Basic Latin and Latin-1 Supplement character set (through \u00FF). It also includes the special characters tab (\u0009), line feed (\u000A), and carriage return (\u000D). - */ - PolicyDocument: policyDocumentType; - } - export interface UpdateGroupRequest { - /** - * Name of the IAM group to update. If you're changing the name of the group, this is the original name. This parameter allows (per its regex pattern) a string of characters consisting of upper and lowercase alphanumeric characters with no spaces. You can also include any of the following characters: =,.@- - */ - GroupName: groupNameType; - /** - * New path for the IAM group. Only include this if changing the group's path. This paramater allows (per its regex pattern) a string of characters consisting of either a forward slash (/) by itself or a string that must begin and end with forward slashes, containing any ASCII character from the ! (\u0021) thru the DEL character (\u007F), including most punctuation characters, digits, and upper and lowercased letters. - */ - NewPath?: pathType; - /** - * New name for the IAM group. Only include this if changing the group's name. This parameter allows (per its regex pattern) a string of characters consisting of upper and lowercase alphanumeric characters with no spaces. You can also include any of the following characters: =,.@- - */ - NewGroupName?: groupNameType; - } - export interface UpdateLoginProfileRequest { - /** - * The name of the user whose password you want to update. This parameter allows (per its regex pattern) a string of characters consisting of upper and lowercase alphanumeric characters with no spaces. You can also include any of the following characters: =,.@- - */ - UserName: userNameType; - /** - * The new password for the specified IAM user. The regex pattern used to validate this parameter is a string of characters consisting of any printable ASCII character ranging from the space character (\u0020) through end of the ASCII character range as well as the printable characters in the Basic Latin and Latin-1 Supplement character set (through \u00FF). It also includes the special characters tab (\u0009), line feed (\u000A), and carriage return (\u000D). However, the format can be further restricted by the account administrator by setting a password policy on the AWS account. For more information, see UpdateAccountPasswordPolicy. - */ - Password?: passwordType; - /** - * Allows this new password to be used only once by requiring the specified IAM user to set a new password on next sign-in. - */ - PasswordResetRequired?: booleanObjectType; - } - export interface UpdateOpenIDConnectProviderThumbprintRequest { - /** - * The Amazon Resource Name (ARN) of the IAM OIDC provider resource object for which you want to update the thumbprint. You can get a list of OIDC provider ARNs by using the ListOpenIDConnectProviders action. For more information about ARNs, see Amazon Resource Names (ARNs) and AWS Service Namespaces in the AWS General Reference. - */ - OpenIDConnectProviderArn: arnType; - /** - * A list of certificate thumbprints that are associated with the specified IAM OpenID Connect provider. For more information, see CreateOpenIDConnectProvider. - */ - ThumbprintList: thumbprintListType; - } - export interface UpdateRoleDescriptionRequest { - /** - * The name of the role that you want to modify. - */ - RoleName: roleNameType; - /** - * The new description that you want to apply to the specified role. - */ - Description: roleDescriptionType; - } - export interface UpdateRoleDescriptionResponse { - /** - * A structure that contains details about the modified role. - */ - Role?: Role; - } - export interface UpdateSAMLProviderRequest { - /** - * An XML document generated by an identity provider (IdP) that supports SAML 2.0. The document includes the issuer's name, expiration information, and keys that can be used to validate the SAML authentication response (assertions) that are received from the IdP. You must generate the metadata document using the identity management software that is used as your organization's IdP. - */ - SAMLMetadataDocument: SAMLMetadataDocumentType; - /** - * The Amazon Resource Name (ARN) of the SAML provider to update. For more information about ARNs, see Amazon Resource Names (ARNs) and AWS Service Namespaces in the AWS General Reference. - */ - SAMLProviderArn: arnType; - } - export interface UpdateSAMLProviderResponse { - /** - * The Amazon Resource Name (ARN) of the SAML provider that was updated. - */ - SAMLProviderArn?: arnType; - } - export interface UpdateSSHPublicKeyRequest { - /** - * The name of the IAM user associated with the SSH public key. This parameter allows (per its regex pattern) a string of characters consisting of upper and lowercase alphanumeric characters with no spaces. You can also include any of the following characters: =,.@- - */ - UserName: userNameType; - /** - * The unique identifier for the SSH public key. This parameter allows (per its regex pattern) a string of characters that can consist of any upper or lowercased letter or digit. - */ - SSHPublicKeyId: publicKeyIdType; - /** - * The status to assign to the SSH public key. Active means the key can be used for authentication with an AWS CodeCommit repository. Inactive means the key cannot be used. - */ - Status: statusType; - } - export interface UpdateServerCertificateRequest { - /** - * The name of the server certificate that you want to update. This parameter allows (per its regex pattern) a string of characters consisting of upper and lowercase alphanumeric characters with no spaces. You can also include any of the following characters: =,.@- - */ - ServerCertificateName: serverCertificateNameType; - /** - * The new path for the server certificate. Include this only if you are updating the server certificate's path. This paramater allows (per its regex pattern) a string of characters consisting of either a forward slash (/) by itself or a string that must begin and end with forward slashes, containing any ASCII character from the ! (\u0021) thru the DEL character (\u007F), including most punctuation characters, digits, and upper and lowercased letters. - */ - NewPath?: pathType; - /** - * The new name for the server certificate. Include this only if you are updating the server certificate's name. The name of the certificate cannot contain any spaces. This parameter allows (per its regex pattern) a string of characters consisting of upper and lowercase alphanumeric characters with no spaces. You can also include any of the following characters: =,.@- - */ - NewServerCertificateName?: serverCertificateNameType; - } - export interface UpdateServiceSpecificCredentialRequest { - /** - * The name of the IAM user associated with the service-specific credential. If you do not specify this value, then the operation assumes the user whose credentials are used to call the operation. This parameter allows (per its regex pattern) a string of characters consisting of upper and lowercase alphanumeric characters with no spaces. You can also include any of the following characters: =,.@- - */ - UserName?: userNameType; - /** - * The unique identifier of the service-specific credential. This parameter allows (per its regex pattern) a string of characters that can consist of any upper or lowercased letter or digit. - */ - ServiceSpecificCredentialId: serviceSpecificCredentialId; - /** - * The status to be assigned to the service-specific credential. - */ - Status: statusType; - } - export interface UpdateSigningCertificateRequest { - /** - * The name of the IAM user the signing certificate belongs to. This parameter allows (per its regex pattern) a string of characters consisting of upper and lowercase alphanumeric characters with no spaces. You can also include any of the following characters: =,.@- - */ - UserName?: existingUserNameType; - /** - * The ID of the signing certificate you want to update. This parameter allows (per its regex pattern) a string of characters that can consist of any upper or lowercased letter or digit. - */ - CertificateId: certificateIdType; - /** - * The status you want to assign to the certificate. Active means the certificate can be used for API calls to AWS, while Inactive means the certificate cannot be used. - */ - Status: statusType; - } - export interface UpdateUserRequest { - /** - * Name of the user to update. If you're changing the name of the user, this is the original user name. This parameter allows (per its regex pattern) a string of characters consisting of upper and lowercase alphanumeric characters with no spaces. You can also include any of the following characters: =,.@- - */ - UserName: existingUserNameType; - /** - * New path for the IAM user. Include this parameter only if you're changing the user's path. This paramater allows (per its regex pattern) a string of characters consisting of either a forward slash (/) by itself or a string that must begin and end with forward slashes, containing any ASCII character from the ! (\u0021) thru the DEL character (\u007F), including most punctuation characters, digits, and upper and lowercased letters. - */ - NewPath?: pathType; - /** - * New name for the user. Include this parameter only if you're changing the user's name. This parameter allows (per its regex pattern) a string of characters consisting of upper and lowercase alphanumeric characters with no spaces. You can also include any of the following characters: =,.@- - */ - NewUserName?: userNameType; - } - export interface UploadSSHPublicKeyRequest { - /** - * The name of the IAM user to associate the SSH public key with. This parameter allows (per its regex pattern) a string of characters consisting of upper and lowercase alphanumeric characters with no spaces. You can also include any of the following characters: =,.@- - */ - UserName: userNameType; - /** - * The SSH public key. The public key must be encoded in ssh-rsa format or PEM format. The regex pattern used to validate this parameter is a string of characters consisting of any printable ASCII character ranging from the space character (\u0020) through end of the ASCII character range as well as the printable characters in the Basic Latin and Latin-1 Supplement character set (through \u00FF). It also includes the special characters tab (\u0009), line feed (\u000A), and carriage return (\u000D). - */ - SSHPublicKeyBody: publicKeyMaterialType; - } - export interface UploadSSHPublicKeyResponse { - /** - * Contains information about the SSH public key. - */ - SSHPublicKey?: SSHPublicKey; - } - export interface UploadServerCertificateRequest { - /** - * The path for the server certificate. For more information about paths, see IAM Identifiers in the IAM User Guide. This parameter is optional. If it is not included, it defaults to a slash (/). This paramater allows (per its regex pattern) a string of characters consisting of either a forward slash (/) by itself or a string that must begin and end with forward slashes, containing any ASCII character from the ! (\u0021) thru the DEL character (\u007F), including most punctuation characters, digits, and upper and lowercased letters. If you are uploading a server certificate specifically for use with Amazon CloudFront distributions, you must specify a path using the --path option. The path must begin with /cloudfront and must include a trailing slash (for example, /cloudfront/test/). - */ - Path?: pathType; - /** - * The name for the server certificate. Do not include the path in this value. The name of the certificate cannot contain any spaces. This parameter allows (per its regex pattern) a string of characters consisting of upper and lowercase alphanumeric characters with no spaces. You can also include any of the following characters: =,.@- - */ - ServerCertificateName: serverCertificateNameType; - /** - * The contents of the public key certificate in PEM-encoded format. The regex pattern used to validate this parameter is a string of characters consisting of any printable ASCII character ranging from the space character (\u0020) through end of the ASCII character range as well as the printable characters in the Basic Latin and Latin-1 Supplement character set (through \u00FF). It also includes the special characters tab (\u0009), line feed (\u000A), and carriage return (\u000D). - */ - CertificateBody: certificateBodyType; - /** - * The contents of the private key in PEM-encoded format. The regex pattern used to validate this parameter is a string of characters consisting of any printable ASCII character ranging from the space character (\u0020) through end of the ASCII character range as well as the printable characters in the Basic Latin and Latin-1 Supplement character set (through \u00FF). It also includes the special characters tab (\u0009), line feed (\u000A), and carriage return (\u000D). - */ - PrivateKey: privateKeyType; - /** - * The contents of the certificate chain. This is typically a concatenation of the PEM-encoded public key certificates of the chain. The regex pattern used to validate this parameter is a string of characters consisting of any printable ASCII character ranging from the space character (\u0020) through end of the ASCII character range as well as the printable characters in the Basic Latin and Latin-1 Supplement character set (through \u00FF). It also includes the special characters tab (\u0009), line feed (\u000A), and carriage return (\u000D). - */ - CertificateChain?: certificateChainType; - } - export interface UploadServerCertificateResponse { - /** - * The meta information of the uploaded server certificate without its certificate body, certificate chain, and private key. - */ - ServerCertificateMetadata?: ServerCertificateMetadata; - } - export interface UploadSigningCertificateRequest { - /** - * The name of the user the signing certificate is for. This parameter allows (per its regex pattern) a string of characters consisting of upper and lowercase alphanumeric characters with no spaces. You can also include any of the following characters: =,.@- - */ - UserName?: existingUserNameType; - /** - * The contents of the signing certificate. The regex pattern used to validate this parameter is a string of characters consisting of any printable ASCII character ranging from the space character (\u0020) through end of the ASCII character range as well as the printable characters in the Basic Latin and Latin-1 Supplement character set (through \u00FF). It also includes the special characters tab (\u0009), line feed (\u000A), and carriage return (\u000D). - */ - CertificateBody: certificateBodyType; - } - export interface UploadSigningCertificateResponse { - /** - * Information about the certificate. - */ - Certificate: SigningCertificate; - } - export interface User { - /** - * The path to the user. For more information about paths, see IAM Identifiers in the Using IAM guide. - */ - Path: pathType; - /** - * The friendly name identifying the user. - */ - UserName: userNameType; - /** - * The stable and unique string identifying the user. For more information about IDs, see IAM Identifiers in the Using IAM guide. - */ - UserId: idType; - /** - * The Amazon Resource Name (ARN) that identifies the user. For more information about ARNs and how to use ARNs in policies, see IAM Identifiers in the Using IAM guide. - */ - Arn: arnType; - /** - * The date and time, in ISO 8601 date-time format, when the user was created. - */ - CreateDate: dateType; - /** - * The date and time, in ISO 8601 date-time format, when the user's password was last used to sign in to an AWS website. For a list of AWS websites that capture a user's last sign-in time, see the Credential Reports topic in the Using IAM guide. If a password is used more than once in a five-minute span, only the first use is returned in this field. If the field is null (no value) then it indicates that they never signed in with a password. This can be because: The user never had a password. A password exists but has not been used since IAM started tracking this information on October 20th, 2014. A null does not mean that the user never had a password. Also, if the user does not currently have a password, but had one in the past, then this field contains the date and time the most recent password was used. This value is returned only in the GetUser and ListUsers actions. - */ - PasswordLastUsed?: dateType; - } - export interface UserDetail { - /** - * The path to the user. For more information about paths, see IAM Identifiers in the Using IAM guide. - */ - Path?: pathType; - /** - * The friendly name identifying the user. - */ - UserName?: userNameType; - /** - * The stable and unique string identifying the user. For more information about IDs, see IAM Identifiers in the Using IAM guide. - */ - UserId?: idType; - Arn?: arnType; - /** - * The date and time, in ISO 8601 date-time format, when the user was created. - */ - CreateDate?: dateType; - /** - * A list of the inline policies embedded in the user. - */ - UserPolicyList?: policyDetailListType; - /** - * A list of IAM groups that the user is in. - */ - GroupList?: groupNameListType; - /** - * A list of the managed policies attached to the user. - */ - AttachedManagedPolicies?: attachedPoliciesListType; - } - export interface VirtualMFADevice { - /** - * The serial number associated with VirtualMFADevice. - */ - SerialNumber: serialNumberType; - /** - * The Base32 seed defined as specified in RFC3548. The Base32StringSeed is Base64-encoded. - */ - Base32StringSeed?: BootstrapDatum; - /** - * A QR code PNG image that encodes otpauth://totp/$virtualMFADeviceName@$AccountName?secret=$Base32String where $virtualMFADeviceName is one of the create call arguments, AccountName is the user name if set (otherwise, the account ID otherwise), and Base32String is the seed in Base32 format. The Base32String value is Base64-encoded. - */ - QRCodePNG?: BootstrapDatum; - /** - * The IAM user associated with this virtual MFA device. - */ - User?: User; - /** - * The date and time on which the virtual MFA device was enabled. - */ - EnableDate?: dateType; - } - export type accessKeyIdType = string; - export type accessKeyMetadataListType = AccessKeyMetadata[]; - export type accessKeySecretType = string; - export type accountAliasListType = accountAliasType[]; - export type accountAliasType = string; - export type arnType = string; - export type assignmentStatusType = "Assigned"|"Unassigned"|"Any"|string; - export type attachedPoliciesListType = AttachedPolicy[]; - export type attachmentCountType = number; - export type authenticationCodeType = string; - export type booleanObjectType = boolean; - export type booleanType = boolean; - export type certificateBodyType = string; - export type certificateChainType = string; - export type certificateIdType = string; - export type certificateListType = SigningCertificate[]; - export type clientIDListType = clientIDType[]; - export type clientIDType = string; - export type credentialReportExpiredExceptionMessage = string; - export type credentialReportNotPresentExceptionMessage = string; - export type credentialReportNotReadyExceptionMessage = string; - export type customSuffixType = string; - export type dateType = Date; - export type deleteConflictMessage = string; - export type duplicateCertificateMessage = string; - export type duplicateSSHPublicKeyMessage = string; - export type encodingType = "SSH"|"PEM"|string; - export type entityAlreadyExistsMessage = string; - export type entityListType = EntityType[]; - export type entityTemporarilyUnmodifiableMessage = string; - export type existingUserNameType = string; - export type groupDetailListType = GroupDetail[]; - export type groupListType = Group[]; - export type groupNameListType = groupNameType[]; - export type groupNameType = string; - export type idType = string; - export type instanceProfileListType = InstanceProfile[]; - export type instanceProfileNameType = string; - export type invalidAuthenticationCodeMessage = string; - export type invalidCertificateMessage = string; - export type invalidInputMessage = string; - export type invalidPublicKeyMessage = string; - export type invalidUserTypeMessage = string; - export type keyPairMismatchMessage = string; - export type limitExceededMessage = string; - export type malformedCertificateMessage = string; - export type malformedPolicyDocumentMessage = string; - export type markerType = string; - export type maxItemsType = number; - export type maxPasswordAgeType = number; - export type mfaDeviceListType = MFADevice[]; - export type minimumPasswordLengthType = number; - export type noSuchEntityMessage = string; - export type passwordPolicyViolationMessage = string; - export type passwordReusePreventionType = number; - export type passwordType = string; - export type pathPrefixType = string; - export type pathType = string; - export type policyDescriptionType = string; - export type policyDetailListType = PolicyDetail[]; - export type policyDocumentType = string; - export type policyDocumentVersionListType = PolicyVersion[]; - export type policyEvaluationErrorMessage = string; - export type policyListType = Policy[]; - export type policyNameListType = policyNameType[]; - export type policyNameType = string; - export type policyNotAttachableMessage = string; - export type policyPathType = string; - export type policyScopeType = "All"|"AWS"|"Local"|string; - export type policyVersionIdType = string; - export type privateKeyType = string; - export type publicKeyFingerprintType = string; - export type publicKeyIdType = string; - export type publicKeyMaterialType = string; - export type roleDescriptionType = string; - export type roleDetailListType = RoleDetail[]; - export type roleListType = Role[]; - export type roleNameType = string; - export type serialNumberType = string; - export type serverCertificateMetadataListType = ServerCertificateMetadata[]; - export type serverCertificateNameType = string; - export type serviceFailureExceptionMessage = string; - export type serviceName = string; - export type serviceNotSupportedMessage = string; - export type servicePassword = string; - export type serviceSpecificCredentialId = string; - export type serviceUserName = string; - export type statusType = "Active"|"Inactive"|string; - export type stringType = string; - export type summaryKeyType = "Users"|"UsersQuota"|"Groups"|"GroupsQuota"|"ServerCertificates"|"ServerCertificatesQuota"|"UserPolicySizeQuota"|"GroupPolicySizeQuota"|"GroupsPerUserQuota"|"SigningCertificatesPerUserQuota"|"AccessKeysPerUserQuota"|"MFADevices"|"MFADevicesInUse"|"AccountMFAEnabled"|"AccountAccessKeysPresent"|"AccountSigningCertificatesPresent"|"AttachedPoliciesPerGroupQuota"|"AttachedPoliciesPerRoleQuota"|"AttachedPoliciesPerUserQuota"|"Policies"|"PoliciesQuota"|"PolicySizeQuota"|"PolicyVersionsInUse"|"PolicyVersionsInUseQuota"|"VersionsPerPolicyQuota"|string; - export type summaryMapType = {[key: string]: summaryValueType}; - export type summaryValueType = number; - export type thumbprintListType = thumbprintType[]; - export type thumbprintType = string; - export type unmodifiableEntityMessage = string; - export type unrecognizedPublicKeyEncodingMessage = string; - export type userDetailListType = UserDetail[]; - export type userListType = User[]; - export type userNameType = string; - export type virtualMFADeviceListType = VirtualMFADevice[]; - export type virtualMFADeviceName = string; - /** - * A string in YYYY-MM-DD format that represents the latest possible API version that can be used in this service. Specify 'latest' to use the latest possible version. - */ - export type apiVersion = "2010-05-08"|"latest"|string; - export interface ClientApiVersions { - /** - * A string in YYYY-MM-DD format that represents the latest possible API version that can be used in this service. Specify 'latest' to use the latest possible version. - */ - apiVersion?: apiVersion; - } - export type ClientConfiguration = ServiceConfigurationOptions & ClientApiVersions; - /** - * Contains interfaces for use with the IAM client. - */ - export import Types = IAM; -} -export = IAM; diff --git a/workshops/monte-carlo-on-ec2-spot-fleet/src/web/node_modules/aws-sdk/clients/iam.js b/workshops/monte-carlo-on-ec2-spot-fleet/src/web/node_modules/aws-sdk/clients/iam.js deleted file mode 100644 index ee268cd5..00000000 --- a/workshops/monte-carlo-on-ec2-spot-fleet/src/web/node_modules/aws-sdk/clients/iam.js +++ /dev/null @@ -1,19 +0,0 @@ -require('../lib/node_loader'); -var AWS = require('../lib/core'); -var Service = AWS.Service; -var apiLoader = AWS.apiLoader; - -apiLoader.services['iam'] = {}; -AWS.IAM = Service.defineService('iam', ['2010-05-08']); -Object.defineProperty(apiLoader.services['iam'], '2010-05-08', { - get: function get() { - var model = require('../apis/iam-2010-05-08.min.json'); - model.paginators = require('../apis/iam-2010-05-08.paginators.json').pagination; - model.waiters = require('../apis/iam-2010-05-08.waiters2.json').waiters; - return model; - }, - enumerable: true, - configurable: true -}); - -module.exports = AWS.IAM; diff --git a/workshops/monte-carlo-on-ec2-spot-fleet/src/web/node_modules/aws-sdk/clients/importexport.d.ts b/workshops/monte-carlo-on-ec2-spot-fleet/src/web/node_modules/aws-sdk/clients/importexport.d.ts deleted file mode 100644 index cdbd6415..00000000 --- a/workshops/monte-carlo-on-ec2-spot-fleet/src/web/node_modules/aws-sdk/clients/importexport.d.ts +++ /dev/null @@ -1,215 +0,0 @@ -import {Request} from '../lib/request'; -import {Response} from '../lib/response'; -import {AWSError} from '../lib/error'; -import {Service} from '../lib/service'; -import {ServiceConfigurationOptions} from '../lib/service'; -import {ConfigBase as Config} from '../lib/config'; -interface Blob {} -declare class ImportExport extends Service { - /** - * Constructs a service object. This object has one method for each API operation. - */ - constructor(options?: ImportExport.Types.ClientConfiguration) - config: Config & ImportExport.Types.ClientConfiguration; - /** - * This operation cancels a specified job. Only the job owner can cancel it. The operation fails if the job has already started or is complete. - */ - cancelJob(params: ImportExport.Types.CancelJobInput, callback?: (err: AWSError, data: ImportExport.Types.CancelJobOutput) => void): Request; - /** - * This operation cancels a specified job. Only the job owner can cancel it. The operation fails if the job has already started or is complete. - */ - cancelJob(callback?: (err: AWSError, data: ImportExport.Types.CancelJobOutput) => void): Request; - /** - * This operation initiates the process of scheduling an upload or download of your data. You include in the request a manifest that describes the data transfer specifics. The response to the request includes a job ID, which you can use in other operations, a signature that you use to identify your storage device, and the address where you should ship your storage device. - */ - createJob(params: ImportExport.Types.CreateJobInput, callback?: (err: AWSError, data: ImportExport.Types.CreateJobOutput) => void): Request; - /** - * This operation initiates the process of scheduling an upload or download of your data. You include in the request a manifest that describes the data transfer specifics. The response to the request includes a job ID, which you can use in other operations, a signature that you use to identify your storage device, and the address where you should ship your storage device. - */ - createJob(callback?: (err: AWSError, data: ImportExport.Types.CreateJobOutput) => void): Request; - /** - * This operation generates a pre-paid UPS shipping label that you will use to ship your device to AWS for processing. - */ - getShippingLabel(params: ImportExport.Types.GetShippingLabelInput, callback?: (err: AWSError, data: ImportExport.Types.GetShippingLabelOutput) => void): Request; - /** - * This operation generates a pre-paid UPS shipping label that you will use to ship your device to AWS for processing. - */ - getShippingLabel(callback?: (err: AWSError, data: ImportExport.Types.GetShippingLabelOutput) => void): Request; - /** - * This operation returns information about a job, including where the job is in the processing pipeline, the status of the results, and the signature value associated with the job. You can only return information about jobs you own. - */ - getStatus(params: ImportExport.Types.GetStatusInput, callback?: (err: AWSError, data: ImportExport.Types.GetStatusOutput) => void): Request; - /** - * This operation returns information about a job, including where the job is in the processing pipeline, the status of the results, and the signature value associated with the job. You can only return information about jobs you own. - */ - getStatus(callback?: (err: AWSError, data: ImportExport.Types.GetStatusOutput) => void): Request; - /** - * This operation returns the jobs associated with the requester. AWS Import/Export lists the jobs in reverse chronological order based on the date of creation. For example if Job Test1 was created 2009Dec30 and Test2 was created 2010Feb05, the ListJobs operation would return Test2 followed by Test1. - */ - listJobs(params: ImportExport.Types.ListJobsInput, callback?: (err: AWSError, data: ImportExport.Types.ListJobsOutput) => void): Request; - /** - * This operation returns the jobs associated with the requester. AWS Import/Export lists the jobs in reverse chronological order based on the date of creation. For example if Job Test1 was created 2009Dec30 and Test2 was created 2010Feb05, the ListJobs operation would return Test2 followed by Test1. - */ - listJobs(callback?: (err: AWSError, data: ImportExport.Types.ListJobsOutput) => void): Request; - /** - * You use this operation to change the parameters specified in the original manifest file by supplying a new manifest file. The manifest file attached to this request replaces the original manifest file. You can only use the operation after a CreateJob request but before the data transfer starts and you can only use it on jobs you own. - */ - updateJob(params: ImportExport.Types.UpdateJobInput, callback?: (err: AWSError, data: ImportExport.Types.UpdateJobOutput) => void): Request; - /** - * You use this operation to change the parameters specified in the original manifest file by supplying a new manifest file. The manifest file attached to this request replaces the original manifest file. You can only use the operation after a CreateJob request but before the data transfer starts and you can only use it on jobs you own. - */ - updateJob(callback?: (err: AWSError, data: ImportExport.Types.UpdateJobOutput) => void): Request; -} -declare namespace ImportExport { - export type APIVersion = string; - export interface Artifact { - Description?: Description; - URL?: URL; - } - export type ArtifactList = Artifact[]; - export interface CancelJobInput { - JobId: JobId; - APIVersion?: APIVersion; - } - export interface CancelJobOutput { - Success?: Success; - } - export type Carrier = string; - export interface CreateJobInput { - JobType: JobType; - Manifest: Manifest; - ManifestAddendum?: ManifestAddendum; - ValidateOnly: ValidateOnly; - APIVersion?: APIVersion; - } - export interface CreateJobOutput { - JobId?: JobId; - JobType?: JobType; - Signature?: Signature; - SignatureFileContents?: SignatureFileContents; - WarningMessage?: WarningMessage; - ArtifactList?: ArtifactList; - } - export type CreationDate = Date; - export type CurrentManifest = string; - export type Description = string; - export type ErrorCount = number; - export type ErrorMessage = string; - export type GenericString = string; - export interface GetShippingLabelInput { - jobIds: JobIdList; - name?: name; - company?: company; - phoneNumber?: phoneNumber; - country?: country; - stateOrProvince?: stateOrProvince; - city?: city; - postalCode?: postalCode; - street1?: street1; - street2?: street2; - street3?: street3; - APIVersion?: APIVersion; - } - export interface GetShippingLabelOutput { - ShippingLabelURL?: GenericString; - Warning?: GenericString; - } - export interface GetStatusInput { - JobId: JobId; - APIVersion?: APIVersion; - } - export interface GetStatusOutput { - JobId?: JobId; - JobType?: JobType; - LocationCode?: LocationCode; - LocationMessage?: LocationMessage; - ProgressCode?: ProgressCode; - ProgressMessage?: ProgressMessage; - Carrier?: Carrier; - TrackingNumber?: TrackingNumber; - LogBucket?: LogBucket; - LogKey?: LogKey; - ErrorCount?: ErrorCount; - Signature?: Signature; - SignatureFileContents?: Signature; - CurrentManifest?: CurrentManifest; - CreationDate?: CreationDate; - ArtifactList?: ArtifactList; - } - export type IsCanceled = boolean; - export type IsTruncated = boolean; - export interface Job { - JobId?: JobId; - CreationDate?: CreationDate; - IsCanceled?: IsCanceled; - JobType?: JobType; - } - export type JobId = string; - export type JobIdList = GenericString[]; - export type JobType = "Import"|"Export"|string; - export type JobsList = Job[]; - export interface ListJobsInput { - MaxJobs?: MaxJobs; - Marker?: Marker; - APIVersion?: APIVersion; - } - export interface ListJobsOutput { - Jobs?: JobsList; - IsTruncated?: IsTruncated; - } - export type LocationCode = string; - export type LocationMessage = string; - export type LogBucket = string; - export type LogKey = string; - export type Manifest = string; - export type ManifestAddendum = string; - export type Marker = string; - export type MaxJobs = number; - export type ProgressCode = string; - export type ProgressMessage = string; - export type Signature = string; - export type SignatureFileContents = string; - export type Success = boolean; - export type TrackingNumber = string; - export type URL = string; - export interface UpdateJobInput { - JobId: JobId; - Manifest: Manifest; - JobType: JobType; - ValidateOnly: ValidateOnly; - APIVersion?: APIVersion; - } - export interface UpdateJobOutput { - Success?: Success; - WarningMessage?: WarningMessage; - ArtifactList?: ArtifactList; - } - export type ValidateOnly = boolean; - export type WarningMessage = string; - export type city = string; - export type company = string; - export type country = string; - export type name = string; - export type phoneNumber = string; - export type postalCode = string; - export type stateOrProvince = string; - export type street1 = string; - export type street2 = string; - export type street3 = string; - /** - * A string in YYYY-MM-DD format that represents the latest possible API version that can be used in this service. Specify 'latest' to use the latest possible version. - */ - export type apiVersion = "2010-06-01"|"latest"|string; - export interface ClientApiVersions { - /** - * A string in YYYY-MM-DD format that represents the latest possible API version that can be used in this service. Specify 'latest' to use the latest possible version. - */ - apiVersion?: apiVersion; - } - export type ClientConfiguration = ServiceConfigurationOptions & ClientApiVersions; - /** - * Contains interfaces for use with the ImportExport client. - */ - export import Types = ImportExport; -} -export = ImportExport; diff --git a/workshops/monte-carlo-on-ec2-spot-fleet/src/web/node_modules/aws-sdk/clients/importexport.js b/workshops/monte-carlo-on-ec2-spot-fleet/src/web/node_modules/aws-sdk/clients/importexport.js deleted file mode 100644 index b9b054d7..00000000 --- a/workshops/monte-carlo-on-ec2-spot-fleet/src/web/node_modules/aws-sdk/clients/importexport.js +++ /dev/null @@ -1,18 +0,0 @@ -require('../lib/node_loader'); -var AWS = require('../lib/core'); -var Service = AWS.Service; -var apiLoader = AWS.apiLoader; - -apiLoader.services['importexport'] = {}; -AWS.ImportExport = Service.defineService('importexport', ['2010-06-01']); -Object.defineProperty(apiLoader.services['importexport'], '2010-06-01', { - get: function get() { - var model = require('../apis/importexport-2010-06-01.min.json'); - model.paginators = require('../apis/importexport-2010-06-01.paginators.json').pagination; - return model; - }, - enumerable: true, - configurable: true -}); - -module.exports = AWS.ImportExport; diff --git a/workshops/monte-carlo-on-ec2-spot-fleet/src/web/node_modules/aws-sdk/clients/inspector.d.ts b/workshops/monte-carlo-on-ec2-spot-fleet/src/web/node_modules/aws-sdk/clients/inspector.d.ts deleted file mode 100644 index 9432782d..00000000 --- a/workshops/monte-carlo-on-ec2-spot-fleet/src/web/node_modules/aws-sdk/clients/inspector.d.ts +++ /dev/null @@ -1,1483 +0,0 @@ -import {Request} from '../lib/request'; -import {Response} from '../lib/response'; -import {AWSError} from '../lib/error'; -import {Service} from '../lib/service'; -import {ServiceConfigurationOptions} from '../lib/service'; -import {ConfigBase as Config} from '../lib/config'; -interface Blob {} -declare class Inspector extends Service { - /** - * Constructs a service object. This object has one method for each API operation. - */ - constructor(options?: Inspector.Types.ClientConfiguration) - config: Config & Inspector.Types.ClientConfiguration; - /** - * Assigns attributes (key and value pairs) to the findings that are specified by the ARNs of the findings. - */ - addAttributesToFindings(params: Inspector.Types.AddAttributesToFindingsRequest, callback?: (err: AWSError, data: Inspector.Types.AddAttributesToFindingsResponse) => void): Request; - /** - * Assigns attributes (key and value pairs) to the findings that are specified by the ARNs of the findings. - */ - addAttributesToFindings(callback?: (err: AWSError, data: Inspector.Types.AddAttributesToFindingsResponse) => void): Request; - /** - * Creates a new assessment target using the ARN of the resource group that is generated by CreateResourceGroup. You can create up to 50 assessment targets per AWS account. You can run up to 500 concurrent agents per AWS account. For more information, see Amazon Inspector Assessment Targets. - */ - createAssessmentTarget(params: Inspector.Types.CreateAssessmentTargetRequest, callback?: (err: AWSError, data: Inspector.Types.CreateAssessmentTargetResponse) => void): Request; - /** - * Creates a new assessment target using the ARN of the resource group that is generated by CreateResourceGroup. You can create up to 50 assessment targets per AWS account. You can run up to 500 concurrent agents per AWS account. For more information, see Amazon Inspector Assessment Targets. - */ - createAssessmentTarget(callback?: (err: AWSError, data: Inspector.Types.CreateAssessmentTargetResponse) => void): Request; - /** - * Creates an assessment template for the assessment target that is specified by the ARN of the assessment target. - */ - createAssessmentTemplate(params: Inspector.Types.CreateAssessmentTemplateRequest, callback?: (err: AWSError, data: Inspector.Types.CreateAssessmentTemplateResponse) => void): Request; - /** - * Creates an assessment template for the assessment target that is specified by the ARN of the assessment target. - */ - createAssessmentTemplate(callback?: (err: AWSError, data: Inspector.Types.CreateAssessmentTemplateResponse) => void): Request; - /** - * Creates a resource group using the specified set of tags (key and value pairs) that are used to select the EC2 instances to be included in an Amazon Inspector assessment target. The created resource group is then used to create an Amazon Inspector assessment target. For more information, see CreateAssessmentTarget. - */ - createResourceGroup(params: Inspector.Types.CreateResourceGroupRequest, callback?: (err: AWSError, data: Inspector.Types.CreateResourceGroupResponse) => void): Request; - /** - * Creates a resource group using the specified set of tags (key and value pairs) that are used to select the EC2 instances to be included in an Amazon Inspector assessment target. The created resource group is then used to create an Amazon Inspector assessment target. For more information, see CreateAssessmentTarget. - */ - createResourceGroup(callback?: (err: AWSError, data: Inspector.Types.CreateResourceGroupResponse) => void): Request; - /** - * Deletes the assessment run that is specified by the ARN of the assessment run. - */ - deleteAssessmentRun(params: Inspector.Types.DeleteAssessmentRunRequest, callback?: (err: AWSError, data: {}) => void): Request<{}, AWSError>; - /** - * Deletes the assessment run that is specified by the ARN of the assessment run. - */ - deleteAssessmentRun(callback?: (err: AWSError, data: {}) => void): Request<{}, AWSError>; - /** - * Deletes the assessment target that is specified by the ARN of the assessment target. - */ - deleteAssessmentTarget(params: Inspector.Types.DeleteAssessmentTargetRequest, callback?: (err: AWSError, data: {}) => void): Request<{}, AWSError>; - /** - * Deletes the assessment target that is specified by the ARN of the assessment target. - */ - deleteAssessmentTarget(callback?: (err: AWSError, data: {}) => void): Request<{}, AWSError>; - /** - * Deletes the assessment template that is specified by the ARN of the assessment template. - */ - deleteAssessmentTemplate(params: Inspector.Types.DeleteAssessmentTemplateRequest, callback?: (err: AWSError, data: {}) => void): Request<{}, AWSError>; - /** - * Deletes the assessment template that is specified by the ARN of the assessment template. - */ - deleteAssessmentTemplate(callback?: (err: AWSError, data: {}) => void): Request<{}, AWSError>; - /** - * Describes the assessment runs that are specified by the ARNs of the assessment runs. - */ - describeAssessmentRuns(params: Inspector.Types.DescribeAssessmentRunsRequest, callback?: (err: AWSError, data: Inspector.Types.DescribeAssessmentRunsResponse) => void): Request; - /** - * Describes the assessment runs that are specified by the ARNs of the assessment runs. - */ - describeAssessmentRuns(callback?: (err: AWSError, data: Inspector.Types.DescribeAssessmentRunsResponse) => void): Request; - /** - * Describes the assessment targets that are specified by the ARNs of the assessment targets. - */ - describeAssessmentTargets(params: Inspector.Types.DescribeAssessmentTargetsRequest, callback?: (err: AWSError, data: Inspector.Types.DescribeAssessmentTargetsResponse) => void): Request; - /** - * Describes the assessment targets that are specified by the ARNs of the assessment targets. - */ - describeAssessmentTargets(callback?: (err: AWSError, data: Inspector.Types.DescribeAssessmentTargetsResponse) => void): Request; - /** - * Describes the assessment templates that are specified by the ARNs of the assessment templates. - */ - describeAssessmentTemplates(params: Inspector.Types.DescribeAssessmentTemplatesRequest, callback?: (err: AWSError, data: Inspector.Types.DescribeAssessmentTemplatesResponse) => void): Request; - /** - * Describes the assessment templates that are specified by the ARNs of the assessment templates. - */ - describeAssessmentTemplates(callback?: (err: AWSError, data: Inspector.Types.DescribeAssessmentTemplatesResponse) => void): Request; - /** - * Describes the IAM role that enables Amazon Inspector to access your AWS account. - */ - describeCrossAccountAccessRole(callback?: (err: AWSError, data: Inspector.Types.DescribeCrossAccountAccessRoleResponse) => void): Request; - /** - * Describes the findings that are specified by the ARNs of the findings. - */ - describeFindings(params: Inspector.Types.DescribeFindingsRequest, callback?: (err: AWSError, data: Inspector.Types.DescribeFindingsResponse) => void): Request; - /** - * Describes the findings that are specified by the ARNs of the findings. - */ - describeFindings(callback?: (err: AWSError, data: Inspector.Types.DescribeFindingsResponse) => void): Request; - /** - * Describes the resource groups that are specified by the ARNs of the resource groups. - */ - describeResourceGroups(params: Inspector.Types.DescribeResourceGroupsRequest, callback?: (err: AWSError, data: Inspector.Types.DescribeResourceGroupsResponse) => void): Request; - /** - * Describes the resource groups that are specified by the ARNs of the resource groups. - */ - describeResourceGroups(callback?: (err: AWSError, data: Inspector.Types.DescribeResourceGroupsResponse) => void): Request; - /** - * Describes the rules packages that are specified by the ARNs of the rules packages. - */ - describeRulesPackages(params: Inspector.Types.DescribeRulesPackagesRequest, callback?: (err: AWSError, data: Inspector.Types.DescribeRulesPackagesResponse) => void): Request; - /** - * Describes the rules packages that are specified by the ARNs of the rules packages. - */ - describeRulesPackages(callback?: (err: AWSError, data: Inspector.Types.DescribeRulesPackagesResponse) => void): Request; - /** - * Produces an assessment report that includes detailed and comprehensive results of a specified assessment run. - */ - getAssessmentReport(params: Inspector.Types.GetAssessmentReportRequest, callback?: (err: AWSError, data: Inspector.Types.GetAssessmentReportResponse) => void): Request; - /** - * Produces an assessment report that includes detailed and comprehensive results of a specified assessment run. - */ - getAssessmentReport(callback?: (err: AWSError, data: Inspector.Types.GetAssessmentReportResponse) => void): Request; - /** - * Information about the data that is collected for the specified assessment run. - */ - getTelemetryMetadata(params: Inspector.Types.GetTelemetryMetadataRequest, callback?: (err: AWSError, data: Inspector.Types.GetTelemetryMetadataResponse) => void): Request; - /** - * Information about the data that is collected for the specified assessment run. - */ - getTelemetryMetadata(callback?: (err: AWSError, data: Inspector.Types.GetTelemetryMetadataResponse) => void): Request; - /** - * Lists the agents of the assessment runs that are specified by the ARNs of the assessment runs. - */ - listAssessmentRunAgents(params: Inspector.Types.ListAssessmentRunAgentsRequest, callback?: (err: AWSError, data: Inspector.Types.ListAssessmentRunAgentsResponse) => void): Request; - /** - * Lists the agents of the assessment runs that are specified by the ARNs of the assessment runs. - */ - listAssessmentRunAgents(callback?: (err: AWSError, data: Inspector.Types.ListAssessmentRunAgentsResponse) => void): Request; - /** - * Lists the assessment runs that correspond to the assessment templates that are specified by the ARNs of the assessment templates. - */ - listAssessmentRuns(params: Inspector.Types.ListAssessmentRunsRequest, callback?: (err: AWSError, data: Inspector.Types.ListAssessmentRunsResponse) => void): Request; - /** - * Lists the assessment runs that correspond to the assessment templates that are specified by the ARNs of the assessment templates. - */ - listAssessmentRuns(callback?: (err: AWSError, data: Inspector.Types.ListAssessmentRunsResponse) => void): Request; - /** - * Lists the ARNs of the assessment targets within this AWS account. For more information about assessment targets, see Amazon Inspector Assessment Targets. - */ - listAssessmentTargets(params: Inspector.Types.ListAssessmentTargetsRequest, callback?: (err: AWSError, data: Inspector.Types.ListAssessmentTargetsResponse) => void): Request; - /** - * Lists the ARNs of the assessment targets within this AWS account. For more information about assessment targets, see Amazon Inspector Assessment Targets. - */ - listAssessmentTargets(callback?: (err: AWSError, data: Inspector.Types.ListAssessmentTargetsResponse) => void): Request; - /** - * Lists the assessment templates that correspond to the assessment targets that are specified by the ARNs of the assessment targets. - */ - listAssessmentTemplates(params: Inspector.Types.ListAssessmentTemplatesRequest, callback?: (err: AWSError, data: Inspector.Types.ListAssessmentTemplatesResponse) => void): Request; - /** - * Lists the assessment templates that correspond to the assessment targets that are specified by the ARNs of the assessment targets. - */ - listAssessmentTemplates(callback?: (err: AWSError, data: Inspector.Types.ListAssessmentTemplatesResponse) => void): Request; - /** - * Lists all the event subscriptions for the assessment template that is specified by the ARN of the assessment template. For more information, see SubscribeToEvent and UnsubscribeFromEvent. - */ - listEventSubscriptions(params: Inspector.Types.ListEventSubscriptionsRequest, callback?: (err: AWSError, data: Inspector.Types.ListEventSubscriptionsResponse) => void): Request; - /** - * Lists all the event subscriptions for the assessment template that is specified by the ARN of the assessment template. For more information, see SubscribeToEvent and UnsubscribeFromEvent. - */ - listEventSubscriptions(callback?: (err: AWSError, data: Inspector.Types.ListEventSubscriptionsResponse) => void): Request; - /** - * Lists findings that are generated by the assessment runs that are specified by the ARNs of the assessment runs. - */ - listFindings(params: Inspector.Types.ListFindingsRequest, callback?: (err: AWSError, data: Inspector.Types.ListFindingsResponse) => void): Request; - /** - * Lists findings that are generated by the assessment runs that are specified by the ARNs of the assessment runs. - */ - listFindings(callback?: (err: AWSError, data: Inspector.Types.ListFindingsResponse) => void): Request; - /** - * Lists all available Amazon Inspector rules packages. - */ - listRulesPackages(params: Inspector.Types.ListRulesPackagesRequest, callback?: (err: AWSError, data: Inspector.Types.ListRulesPackagesResponse) => void): Request; - /** - * Lists all available Amazon Inspector rules packages. - */ - listRulesPackages(callback?: (err: AWSError, data: Inspector.Types.ListRulesPackagesResponse) => void): Request; - /** - * Lists all tags associated with an assessment template. - */ - listTagsForResource(params: Inspector.Types.ListTagsForResourceRequest, callback?: (err: AWSError, data: Inspector.Types.ListTagsForResourceResponse) => void): Request; - /** - * Lists all tags associated with an assessment template. - */ - listTagsForResource(callback?: (err: AWSError, data: Inspector.Types.ListTagsForResourceResponse) => void): Request; - /** - * Previews the agents installed on the EC2 instances that are part of the specified assessment target. - */ - previewAgents(params: Inspector.Types.PreviewAgentsRequest, callback?: (err: AWSError, data: Inspector.Types.PreviewAgentsResponse) => void): Request; - /** - * Previews the agents installed on the EC2 instances that are part of the specified assessment target. - */ - previewAgents(callback?: (err: AWSError, data: Inspector.Types.PreviewAgentsResponse) => void): Request; - /** - * Registers the IAM role that Amazon Inspector uses to list your EC2 instances at the start of the assessment run or when you call the PreviewAgents action. - */ - registerCrossAccountAccessRole(params: Inspector.Types.RegisterCrossAccountAccessRoleRequest, callback?: (err: AWSError, data: {}) => void): Request<{}, AWSError>; - /** - * Registers the IAM role that Amazon Inspector uses to list your EC2 instances at the start of the assessment run or when you call the PreviewAgents action. - */ - registerCrossAccountAccessRole(callback?: (err: AWSError, data: {}) => void): Request<{}, AWSError>; - /** - * Removes entire attributes (key and value pairs) from the findings that are specified by the ARNs of the findings where an attribute with the specified key exists. - */ - removeAttributesFromFindings(params: Inspector.Types.RemoveAttributesFromFindingsRequest, callback?: (err: AWSError, data: Inspector.Types.RemoveAttributesFromFindingsResponse) => void): Request; - /** - * Removes entire attributes (key and value pairs) from the findings that are specified by the ARNs of the findings where an attribute with the specified key exists. - */ - removeAttributesFromFindings(callback?: (err: AWSError, data: Inspector.Types.RemoveAttributesFromFindingsResponse) => void): Request; - /** - * Sets tags (key and value pairs) to the assessment template that is specified by the ARN of the assessment template. - */ - setTagsForResource(params: Inspector.Types.SetTagsForResourceRequest, callback?: (err: AWSError, data: {}) => void): Request<{}, AWSError>; - /** - * Sets tags (key and value pairs) to the assessment template that is specified by the ARN of the assessment template. - */ - setTagsForResource(callback?: (err: AWSError, data: {}) => void): Request<{}, AWSError>; - /** - * Starts the assessment run specified by the ARN of the assessment template. For this API to function properly, you must not exceed the limit of running up to 500 concurrent agents per AWS account. - */ - startAssessmentRun(params: Inspector.Types.StartAssessmentRunRequest, callback?: (err: AWSError, data: Inspector.Types.StartAssessmentRunResponse) => void): Request; - /** - * Starts the assessment run specified by the ARN of the assessment template. For this API to function properly, you must not exceed the limit of running up to 500 concurrent agents per AWS account. - */ - startAssessmentRun(callback?: (err: AWSError, data: Inspector.Types.StartAssessmentRunResponse) => void): Request; - /** - * Stops the assessment run that is specified by the ARN of the assessment run. - */ - stopAssessmentRun(params: Inspector.Types.StopAssessmentRunRequest, callback?: (err: AWSError, data: {}) => void): Request<{}, AWSError>; - /** - * Stops the assessment run that is specified by the ARN of the assessment run. - */ - stopAssessmentRun(callback?: (err: AWSError, data: {}) => void): Request<{}, AWSError>; - /** - * Enables the process of sending Amazon Simple Notification Service (SNS) notifications about a specified event to a specified SNS topic. - */ - subscribeToEvent(params: Inspector.Types.SubscribeToEventRequest, callback?: (err: AWSError, data: {}) => void): Request<{}, AWSError>; - /** - * Enables the process of sending Amazon Simple Notification Service (SNS) notifications about a specified event to a specified SNS topic. - */ - subscribeToEvent(callback?: (err: AWSError, data: {}) => void): Request<{}, AWSError>; - /** - * Disables the process of sending Amazon Simple Notification Service (SNS) notifications about a specified event to a specified SNS topic. - */ - unsubscribeFromEvent(params: Inspector.Types.UnsubscribeFromEventRequest, callback?: (err: AWSError, data: {}) => void): Request<{}, AWSError>; - /** - * Disables the process of sending Amazon Simple Notification Service (SNS) notifications about a specified event to a specified SNS topic. - */ - unsubscribeFromEvent(callback?: (err: AWSError, data: {}) => void): Request<{}, AWSError>; - /** - * Updates the assessment target that is specified by the ARN of the assessment target. - */ - updateAssessmentTarget(params: Inspector.Types.UpdateAssessmentTargetRequest, callback?: (err: AWSError, data: {}) => void): Request<{}, AWSError>; - /** - * Updates the assessment target that is specified by the ARN of the assessment target. - */ - updateAssessmentTarget(callback?: (err: AWSError, data: {}) => void): Request<{}, AWSError>; -} -declare namespace Inspector { - export type AccessDeniedErrorCode = "ACCESS_DENIED_TO_ASSESSMENT_TARGET"|"ACCESS_DENIED_TO_ASSESSMENT_TEMPLATE"|"ACCESS_DENIED_TO_ASSESSMENT_RUN"|"ACCESS_DENIED_TO_FINDING"|"ACCESS_DENIED_TO_RESOURCE_GROUP"|"ACCESS_DENIED_TO_RULES_PACKAGE"|"ACCESS_DENIED_TO_SNS_TOPIC"|"ACCESS_DENIED_TO_IAM_ROLE"|string; - export interface AddAttributesToFindingsRequest { - /** - * The ARNs that specify the findings that you want to assign attributes to. - */ - findingArns: AddRemoveAttributesFindingArnList; - /** - * The array of attributes that you want to assign to specified findings. - */ - attributes: UserAttributeList; - } - export interface AddAttributesToFindingsResponse { - /** - * Attribute details that cannot be described. An error code is provided for each failed item. - */ - failedItems: FailedItems; - } - export type AddRemoveAttributesFindingArnList = Arn[]; - export interface AgentAlreadyRunningAssessment { - /** - * ID of the agent that is running on an EC2 instance that is already participating in another started assessment run. - */ - agentId: AgentId; - /** - * The ARN of the assessment run that has already been started. - */ - assessmentRunArn: Arn; - } - export type AgentAlreadyRunningAssessmentList = AgentAlreadyRunningAssessment[]; - export interface AgentFilter { - /** - * The current health state of the agent. Values can be set to HEALTHY or UNHEALTHY. - */ - agentHealths: AgentHealthList; - /** - * The detailed health state of the agent. Values can be set to IDLE, RUNNING, SHUTDOWN, UNHEALTHY, THROTTLED, and UNKNOWN. - */ - agentHealthCodes: AgentHealthCodeList; - } - export type AgentHealth = "HEALTHY"|"UNHEALTHY"|string; - export type AgentHealthCode = "IDLE"|"RUNNING"|"SHUTDOWN"|"UNHEALTHY"|"THROTTLED"|"UNKNOWN"|string; - export type AgentHealthCodeList = AgentHealthCode[]; - export type AgentHealthList = AgentHealth[]; - export type AgentId = string; - export type AgentIdList = AgentId[]; - export interface AgentPreview { - /** - * The ID of the EC2 instance where the agent is installed. - */ - agentId: AgentId; - /** - * The Auto Scaling group for the EC2 instance where the agent is installed. - */ - autoScalingGroup?: AutoScalingGroup; - } - export type AgentPreviewList = AgentPreview[]; - export type AmiId = string; - export type Arn = string; - export type AssessmentRulesPackageArnList = Arn[]; - export interface AssessmentRun { - /** - * The ARN of the assessment run. - */ - arn: Arn; - /** - * The auto-generated name for the assessment run. - */ - name: AssessmentRunName; - /** - * The ARN of the assessment template that is associated with the assessment run. - */ - assessmentTemplateArn: Arn; - /** - * The state of the assessment run. - */ - state: AssessmentRunState; - /** - * The duration of the assessment run. - */ - durationInSeconds: AssessmentRunDuration; - /** - * The rules packages selected for the assessment run. - */ - rulesPackageArns: AssessmentRulesPackageArnList; - /** - * The user-defined attributes that are assigned to every generated finding. - */ - userAttributesForFindings: UserAttributeList; - /** - * The time when StartAssessmentRun was called. - */ - createdAt: Timestamp; - /** - * The time when StartAssessmentRun was called. - */ - startedAt?: Timestamp; - /** - * The assessment run completion time that corresponds to the rules packages evaluation completion time or failure. - */ - completedAt?: Timestamp; - /** - * The last time when the assessment run's state changed. - */ - stateChangedAt: Timestamp; - /** - * A Boolean value (true or false) that specifies whether the process of collecting data from the agents is completed. - */ - dataCollected: Bool; - /** - * A list of the assessment run state changes. - */ - stateChanges: AssessmentRunStateChangeList; - /** - * A list of notifications for the event subscriptions. A notification about a particular generated finding is added to this list only once. - */ - notifications: AssessmentRunNotificationList; - /** - * Provides a total count of generated findings per severity. - */ - findingCounts: AssessmentRunFindingCounts; - } - export interface AssessmentRunAgent { - /** - * The AWS account of the EC2 instance where the agent is installed. - */ - agentId: AgentId; - /** - * The ARN of the assessment run that is associated with the agent. - */ - assessmentRunArn: Arn; - /** - * The current health state of the agent. - */ - agentHealth: AgentHealth; - /** - * The detailed health state of the agent. - */ - agentHealthCode: AgentHealthCode; - /** - * The description for the agent health code. - */ - agentHealthDetails?: Message; - /** - * The Auto Scaling group of the EC2 instance that is specified by the agent ID. - */ - autoScalingGroup?: AutoScalingGroup; - /** - * The Amazon Inspector application data metrics that are collected by the agent. - */ - telemetryMetadata: TelemetryMetadataList; - } - export type AssessmentRunAgentList = AssessmentRunAgent[]; - export type AssessmentRunDuration = number; - export interface AssessmentRunFilter { - /** - * For a record to match a filter, an explicit value or a string containing a wildcard that is specified for this data type property must match the value of the assessmentRunName property of the AssessmentRun data type. - */ - namePattern?: NamePattern; - /** - * For a record to match a filter, one of the values specified for this data type property must be the exact match of the value of the assessmentRunState property of the AssessmentRun data type. - */ - states?: AssessmentRunStateList; - /** - * For a record to match a filter, the value that is specified for this data type property must inclusively match any value between the specified minimum and maximum values of the durationInSeconds property of the AssessmentRun data type. - */ - durationRange?: DurationRange; - /** - * For a record to match a filter, the value that is specified for this data type property must be contained in the list of values of the rulesPackages property of the AssessmentRun data type. - */ - rulesPackageArns?: FilterRulesPackageArnList; - /** - * For a record to match a filter, the value that is specified for this data type property must inclusively match any value between the specified minimum and maximum values of the startTime property of the AssessmentRun data type. - */ - startTimeRange?: TimestampRange; - /** - * For a record to match a filter, the value that is specified for this data type property must inclusively match any value between the specified minimum and maximum values of the completedAt property of the AssessmentRun data type. - */ - completionTimeRange?: TimestampRange; - /** - * For a record to match a filter, the value that is specified for this data type property must match the stateChangedAt property of the AssessmentRun data type. - */ - stateChangeTimeRange?: TimestampRange; - } - export type AssessmentRunFindingCounts = {[key: string]: FindingCount}; - export type AssessmentRunInProgressArnList = Arn[]; - export type AssessmentRunList = AssessmentRun[]; - export type AssessmentRunName = string; - export interface AssessmentRunNotification { - /** - * The date of the notification. - */ - date: Timestamp; - /** - * The event for which a notification is sent. - */ - event: InspectorEvent; - /** - * The message included in the notification. - */ - message?: Message; - /** - * The Boolean value that specifies whether the notification represents an error. - */ - error: Bool; - /** - * The SNS topic to which the SNS notification is sent. - */ - snsTopicArn?: Arn; - /** - * The status code of the SNS notification. - */ - snsPublishStatusCode?: AssessmentRunNotificationSnsStatusCode; - } - export type AssessmentRunNotificationList = AssessmentRunNotification[]; - export type AssessmentRunNotificationSnsStatusCode = "SUCCESS"|"TOPIC_DOES_NOT_EXIST"|"ACCESS_DENIED"|"INTERNAL_ERROR"|string; - export type AssessmentRunState = "CREATED"|"START_DATA_COLLECTION_PENDING"|"START_DATA_COLLECTION_IN_PROGRESS"|"COLLECTING_DATA"|"STOP_DATA_COLLECTION_PENDING"|"DATA_COLLECTED"|"START_EVALUATING_RULES_PENDING"|"EVALUATING_RULES"|"FAILED"|"ERROR"|"COMPLETED"|"COMPLETED_WITH_ERRORS"|"CANCELED"|string; - export interface AssessmentRunStateChange { - /** - * The last time the assessment run state changed. - */ - stateChangedAt: Timestamp; - /** - * The assessment run state. - */ - state: AssessmentRunState; - } - export type AssessmentRunStateChangeList = AssessmentRunStateChange[]; - export type AssessmentRunStateList = AssessmentRunState[]; - export interface AssessmentTarget { - /** - * The ARN that specifies the Amazon Inspector assessment target. - */ - arn: Arn; - /** - * The name of the Amazon Inspector assessment target. - */ - name: AssessmentTargetName; - /** - * The ARN that specifies the resource group that is associated with the assessment target. - */ - resourceGroupArn: Arn; - /** - * The time at which the assessment target is created. - */ - createdAt: Timestamp; - /** - * The time at which UpdateAssessmentTarget is called. - */ - updatedAt: Timestamp; - } - export interface AssessmentTargetFilter { - /** - * For a record to match a filter, an explicit value or a string that contains a wildcard that is specified for this data type property must match the value of the assessmentTargetName property of the AssessmentTarget data type. - */ - assessmentTargetNamePattern?: NamePattern; - } - export type AssessmentTargetList = AssessmentTarget[]; - export type AssessmentTargetName = string; - export interface AssessmentTemplate { - /** - * The ARN of the assessment template. - */ - arn: Arn; - /** - * The name of the assessment template. - */ - name: AssessmentTemplateName; - /** - * The ARN of the assessment target that corresponds to this assessment template. - */ - assessmentTargetArn: Arn; - /** - * The duration in seconds specified for this assessment tempate. The default value is 3600 seconds (one hour). The maximum value is 86400 seconds (one day). - */ - durationInSeconds: AssessmentRunDuration; - /** - * The rules packages that are specified for this assessment template. - */ - rulesPackageArns: AssessmentTemplateRulesPackageArnList; - /** - * The user-defined attributes that are assigned to every generated finding from the assessment run that uses this assessment template. - */ - userAttributesForFindings: UserAttributeList; - /** - * The time at which the assessment template is created. - */ - createdAt: Timestamp; - } - export interface AssessmentTemplateFilter { - /** - * For a record to match a filter, an explicit value or a string that contains a wildcard that is specified for this data type property must match the value of the assessmentTemplateName property of the AssessmentTemplate data type. - */ - namePattern?: NamePattern; - /** - * For a record to match a filter, the value specified for this data type property must inclusively match any value between the specified minimum and maximum values of the durationInSeconds property of the AssessmentTemplate data type. - */ - durationRange?: DurationRange; - /** - * For a record to match a filter, the values that are specified for this data type property must be contained in the list of values of the rulesPackageArns property of the AssessmentTemplate data type. - */ - rulesPackageArns?: FilterRulesPackageArnList; - } - export type AssessmentTemplateList = AssessmentTemplate[]; - export type AssessmentTemplateName = string; - export type AssessmentTemplateRulesPackageArnList = Arn[]; - export interface AssetAttributes { - /** - * The schema version of this data type. - */ - schemaVersion: NumericVersion; - /** - * The ID of the agent that is installed on the EC2 instance where the finding is generated. - */ - agentId?: AgentId; - /** - * The Auto Scaling group of the EC2 instance where the finding is generated. - */ - autoScalingGroup?: AutoScalingGroup; - /** - * The ID of the Amazon Machine Image (AMI) that is installed on the EC2 instance where the finding is generated. - */ - amiId?: AmiId; - /** - * The hostname of the EC2 instance where the finding is generated. - */ - hostname?: Hostname; - /** - * The list of IP v4 addresses of the EC2 instance where the finding is generated. - */ - ipv4Addresses?: Ipv4AddressList; - } - export type AssetType = "ec2-instance"|string; - export interface Attribute { - /** - * The attribute key. - */ - key: AttributeKey; - /** - * The value assigned to the attribute key. - */ - value?: AttributeValue; - } - export type AttributeKey = string; - export type AttributeList = Attribute[]; - export type AttributeValue = string; - export type AutoScalingGroup = string; - export type AutoScalingGroupList = AutoScalingGroup[]; - export type BatchDescribeArnList = Arn[]; - export type Bool = boolean; - export interface CreateAssessmentTargetRequest { - /** - * The user-defined name that identifies the assessment target that you want to create. The name must be unique within the AWS account. - */ - assessmentTargetName: AssessmentTargetName; - /** - * The ARN that specifies the resource group that is used to create the assessment target. - */ - resourceGroupArn: Arn; - } - export interface CreateAssessmentTargetResponse { - /** - * The ARN that specifies the assessment target that is created. - */ - assessmentTargetArn: Arn; - } - export interface CreateAssessmentTemplateRequest { - /** - * The ARN that specifies the assessment target for which you want to create the assessment template. - */ - assessmentTargetArn: Arn; - /** - * The user-defined name that identifies the assessment template that you want to create. You can create several assessment templates for an assessment target. The names of the assessment templates that correspond to a particular assessment target must be unique. - */ - assessmentTemplateName: AssessmentTemplateName; - /** - * The duration of the assessment run in seconds. The default value is 3600 seconds (one hour). - */ - durationInSeconds: AssessmentRunDuration; - /** - * The ARNs that specify the rules packages that you want to attach to the assessment template. - */ - rulesPackageArns: AssessmentTemplateRulesPackageArnList; - /** - * The user-defined attributes that are assigned to every finding that is generated by the assessment run that uses this assessment template. An attribute is a key and value pair (an Attribute object). Within an assessment template, each key must be unique. - */ - userAttributesForFindings?: UserAttributeList; - } - export interface CreateAssessmentTemplateResponse { - /** - * The ARN that specifies the assessment template that is created. - */ - assessmentTemplateArn: Arn; - } - export interface CreateResourceGroupRequest { - /** - * A collection of keys and an array of possible values, '[{"key":"key1","values":["Value1","Value2"]},{"key":"Key2","values":["Value3"]}]'. For example,'[{"key":"Name","values":["TestEC2Instance"]}]'. - */ - resourceGroupTags: ResourceGroupTags; - } - export interface CreateResourceGroupResponse { - /** - * The ARN that specifies the resource group that is created. - */ - resourceGroupArn: Arn; - } - export interface DeleteAssessmentRunRequest { - /** - * The ARN that specifies the assessment run that you want to delete. - */ - assessmentRunArn: Arn; - } - export interface DeleteAssessmentTargetRequest { - /** - * The ARN that specifies the assessment target that you want to delete. - */ - assessmentTargetArn: Arn; - } - export interface DeleteAssessmentTemplateRequest { - /** - * The ARN that specifies the assessment template that you want to delete. - */ - assessmentTemplateArn: Arn; - } - export interface DescribeAssessmentRunsRequest { - /** - * The ARN that specifies the assessment run that you want to describe. - */ - assessmentRunArns: BatchDescribeArnList; - } - export interface DescribeAssessmentRunsResponse { - /** - * Information about the assessment run. - */ - assessmentRuns: AssessmentRunList; - /** - * Assessment run details that cannot be described. An error code is provided for each failed item. - */ - failedItems: FailedItems; - } - export interface DescribeAssessmentTargetsRequest { - /** - * The ARNs that specifies the assessment targets that you want to describe. - */ - assessmentTargetArns: BatchDescribeArnList; - } - export interface DescribeAssessmentTargetsResponse { - /** - * Information about the assessment targets. - */ - assessmentTargets: AssessmentTargetList; - /** - * Assessment target details that cannot be described. An error code is provided for each failed item. - */ - failedItems: FailedItems; - } - export interface DescribeAssessmentTemplatesRequest { - assessmentTemplateArns: BatchDescribeArnList; - } - export interface DescribeAssessmentTemplatesResponse { - /** - * Information about the assessment templates. - */ - assessmentTemplates: AssessmentTemplateList; - /** - * Assessment template details that cannot be described. An error code is provided for each failed item. - */ - failedItems: FailedItems; - } - export interface DescribeCrossAccountAccessRoleResponse { - /** - * The ARN that specifies the IAM role that Amazon Inspector uses to access your AWS account. - */ - roleArn: Arn; - /** - * A Boolean value that specifies whether the IAM role has the necessary policies attached to enable Amazon Inspector to access your AWS account. - */ - valid: Bool; - /** - * The date when the cross-account access role was registered. - */ - registeredAt: Timestamp; - } - export interface DescribeFindingsRequest { - /** - * The ARN that specifies the finding that you want to describe. - */ - findingArns: BatchDescribeArnList; - /** - * The locale into which you want to translate a finding description, recommendation, and the short description that identifies the finding. - */ - locale?: Locale; - } - export interface DescribeFindingsResponse { - /** - * Information about the finding. - */ - findings: FindingList; - /** - * Finding details that cannot be described. An error code is provided for each failed item. - */ - failedItems: FailedItems; - } - export interface DescribeResourceGroupsRequest { - /** - * The ARN that specifies the resource group that you want to describe. - */ - resourceGroupArns: BatchDescribeArnList; - } - export interface DescribeResourceGroupsResponse { - /** - * Information about a resource group. - */ - resourceGroups: ResourceGroupList; - /** - * Resource group details that cannot be described. An error code is provided for each failed item. - */ - failedItems: FailedItems; - } - export interface DescribeRulesPackagesRequest { - /** - * The ARN that specifies the rules package that you want to describe. - */ - rulesPackageArns: BatchDescribeArnList; - /** - * The locale that you want to translate a rules package description into. - */ - locale?: Locale; - } - export interface DescribeRulesPackagesResponse { - /** - * Information about the rules package. - */ - rulesPackages: RulesPackageList; - /** - * Rules package details that cannot be described. An error code is provided for each failed item. - */ - failedItems: FailedItems; - } - export interface DurationRange { - /** - * The minimum value of the duration range. Must be greater than zero. - */ - minSeconds?: AssessmentRunDuration; - /** - * The maximum value of the duration range. Must be less than or equal to 604800 seconds (1 week). - */ - maxSeconds?: AssessmentRunDuration; - } - export type ErrorMessage = string; - export interface EventSubscription { - /** - * The event for which Amazon Simple Notification Service (SNS) notifications are sent. - */ - event: InspectorEvent; - /** - * The time at which SubscribeToEvent is called. - */ - subscribedAt: Timestamp; - } - export type EventSubscriptionList = EventSubscription[]; - export interface FailedItemDetails { - /** - * The status code of a failed item. - */ - failureCode: FailedItemErrorCode; - /** - * Indicates whether you can immediately retry a request for this item for a specified resource. - */ - retryable: Bool; - } - export type FailedItemErrorCode = "INVALID_ARN"|"DUPLICATE_ARN"|"ITEM_DOES_NOT_EXIST"|"ACCESS_DENIED"|"LIMIT_EXCEEDED"|"INTERNAL_ERROR"|string; - export type FailedItems = {[key: string]: FailedItemDetails}; - export type FilterRulesPackageArnList = Arn[]; - export interface Finding { - /** - * The ARN that specifies the finding. - */ - arn: Arn; - /** - * The schema version of this data type. - */ - schemaVersion?: NumericVersion; - /** - * The data element is set to "Inspector". - */ - service?: ServiceName; - /** - * This data type is used in the Finding data type. - */ - serviceAttributes?: InspectorServiceAttributes; - /** - * The type of the host from which the finding is generated. - */ - assetType?: AssetType; - /** - * A collection of attributes of the host from which the finding is generated. - */ - assetAttributes?: AssetAttributes; - /** - * The ID of the finding. - */ - id?: FindingId; - /** - * The name of the finding. - */ - title?: Text; - /** - * The description of the finding. - */ - description?: Text; - /** - * The recommendation for the finding. - */ - recommendation?: Text; - /** - * The finding severity. Values can be set to High, Medium, Low, and Informational. - */ - severity?: Severity; - /** - * The numeric value of the finding severity. - */ - numericSeverity?: NumericSeverity; - /** - * This data element is currently not used. - */ - confidence?: IocConfidence; - /** - * This data element is currently not used. - */ - indicatorOfCompromise?: Bool; - /** - * The system-defined attributes for the finding. - */ - attributes: AttributeList; - /** - * The user-defined attributes that are assigned to the finding. - */ - userAttributes: UserAttributeList; - /** - * The time when the finding was generated. - */ - createdAt: Timestamp; - /** - * The time when AddAttributesToFindings is called. - */ - updatedAt: Timestamp; - } - export type FindingCount = number; - export interface FindingFilter { - /** - * For a record to match a filter, one of the values that is specified for this data type property must be the exact match of the value of the agentId property of the Finding data type. - */ - agentIds?: AgentIdList; - /** - * For a record to match a filter, one of the values that is specified for this data type property must be the exact match of the value of the autoScalingGroup property of the Finding data type. - */ - autoScalingGroups?: AutoScalingGroupList; - /** - * For a record to match a filter, one of the values that is specified for this data type property must be the exact match of the value of the ruleName property of the Finding data type. - */ - ruleNames?: RuleNameList; - /** - * For a record to match a filter, one of the values that is specified for this data type property must be the exact match of the value of the severity property of the Finding data type. - */ - severities?: SeverityList; - /** - * For a record to match a filter, one of the values that is specified for this data type property must be the exact match of the value of the rulesPackageArn property of the Finding data type. - */ - rulesPackageArns?: FilterRulesPackageArnList; - /** - * For a record to match a filter, the list of values that are specified for this data type property must be contained in the list of values of the attributes property of the Finding data type. - */ - attributes?: AttributeList; - /** - * For a record to match a filter, the value that is specified for this data type property must be contained in the list of values of the userAttributes property of the Finding data type. - */ - userAttributes?: AttributeList; - /** - * The time range during which the finding is generated. - */ - creationTimeRange?: TimestampRange; - } - export type FindingId = string; - export type FindingList = Finding[]; - export interface GetAssessmentReportRequest { - /** - * The ARN that specifies the assessment run for which you want to generate a report. - */ - assessmentRunArn: Arn; - /** - * Specifies the file format (html or pdf) of the assessment report that you want to generate. - */ - reportFileFormat: ReportFileFormat; - /** - * Specifies the type of the assessment report that you want to generate. There are two types of assessment reports: a finding report and a full report. For more information, see Assessment Reports. - */ - reportType: ReportType; - } - export interface GetAssessmentReportResponse { - /** - * Specifies the status of the request to generate an assessment report. - */ - status: ReportStatus; - /** - * Specifies the URL where you can find the generated assessment report. This parameter is only returned if the report is successfully generated. - */ - url?: Url; - } - export interface GetTelemetryMetadataRequest { - /** - * The ARN that specifies the assessment run that has the telemetry data that you want to obtain. - */ - assessmentRunArn: Arn; - } - export interface GetTelemetryMetadataResponse { - /** - * Telemetry details. - */ - telemetryMetadata: TelemetryMetadataList; - } - export type Hostname = string; - export type InspectorEvent = "ASSESSMENT_RUN_STARTED"|"ASSESSMENT_RUN_COMPLETED"|"ASSESSMENT_RUN_STATE_CHANGED"|"FINDING_REPORTED"|"OTHER"|string; - export interface InspectorServiceAttributes { - /** - * The schema version of this data type. - */ - schemaVersion: NumericVersion; - /** - * The ARN of the assessment run during which the finding is generated. - */ - assessmentRunArn?: Arn; - /** - * The ARN of the rules package that is used to generate the finding. - */ - rulesPackageArn?: Arn; - } - export type InvalidCrossAccountRoleErrorCode = "ROLE_DOES_NOT_EXIST_OR_INVALID_TRUST_RELATIONSHIP"|"ROLE_DOES_NOT_HAVE_CORRECT_POLICY"|string; - export type InvalidInputErrorCode = "INVALID_ASSESSMENT_TARGET_ARN"|"INVALID_ASSESSMENT_TEMPLATE_ARN"|"INVALID_ASSESSMENT_RUN_ARN"|"INVALID_FINDING_ARN"|"INVALID_RESOURCE_GROUP_ARN"|"INVALID_RULES_PACKAGE_ARN"|"INVALID_RESOURCE_ARN"|"INVALID_SNS_TOPIC_ARN"|"INVALID_IAM_ROLE_ARN"|"INVALID_ASSESSMENT_TARGET_NAME"|"INVALID_ASSESSMENT_TARGET_NAME_PATTERN"|"INVALID_ASSESSMENT_TEMPLATE_NAME"|"INVALID_ASSESSMENT_TEMPLATE_NAME_PATTERN"|"INVALID_ASSESSMENT_TEMPLATE_DURATION"|"INVALID_ASSESSMENT_TEMPLATE_DURATION_RANGE"|"INVALID_ASSESSMENT_RUN_DURATION_RANGE"|"INVALID_ASSESSMENT_RUN_START_TIME_RANGE"|"INVALID_ASSESSMENT_RUN_COMPLETION_TIME_RANGE"|"INVALID_ASSESSMENT_RUN_STATE_CHANGE_TIME_RANGE"|"INVALID_ASSESSMENT_RUN_STATE"|"INVALID_TAG"|"INVALID_TAG_KEY"|"INVALID_TAG_VALUE"|"INVALID_RESOURCE_GROUP_TAG_KEY"|"INVALID_RESOURCE_GROUP_TAG_VALUE"|"INVALID_ATTRIBUTE"|"INVALID_USER_ATTRIBUTE"|"INVALID_USER_ATTRIBUTE_KEY"|"INVALID_USER_ATTRIBUTE_VALUE"|"INVALID_PAGINATION_TOKEN"|"INVALID_MAX_RESULTS"|"INVALID_AGENT_ID"|"INVALID_AUTO_SCALING_GROUP"|"INVALID_RULE_NAME"|"INVALID_SEVERITY"|"INVALID_LOCALE"|"INVALID_EVENT"|"ASSESSMENT_TARGET_NAME_ALREADY_TAKEN"|"ASSESSMENT_TEMPLATE_NAME_ALREADY_TAKEN"|"INVALID_NUMBER_OF_ASSESSMENT_TARGET_ARNS"|"INVALID_NUMBER_OF_ASSESSMENT_TEMPLATE_ARNS"|"INVALID_NUMBER_OF_ASSESSMENT_RUN_ARNS"|"INVALID_NUMBER_OF_FINDING_ARNS"|"INVALID_NUMBER_OF_RESOURCE_GROUP_ARNS"|"INVALID_NUMBER_OF_RULES_PACKAGE_ARNS"|"INVALID_NUMBER_OF_ASSESSMENT_RUN_STATES"|"INVALID_NUMBER_OF_TAGS"|"INVALID_NUMBER_OF_RESOURCE_GROUP_TAGS"|"INVALID_NUMBER_OF_ATTRIBUTES"|"INVALID_NUMBER_OF_USER_ATTRIBUTES"|"INVALID_NUMBER_OF_AGENT_IDS"|"INVALID_NUMBER_OF_AUTO_SCALING_GROUPS"|"INVALID_NUMBER_OF_RULE_NAMES"|"INVALID_NUMBER_OF_SEVERITIES"|string; - export type IocConfidence = number; - export type Ipv4Address = string; - export type Ipv4AddressList = Ipv4Address[]; - export type LimitExceededErrorCode = "ASSESSMENT_TARGET_LIMIT_EXCEEDED"|"ASSESSMENT_TEMPLATE_LIMIT_EXCEEDED"|"ASSESSMENT_RUN_LIMIT_EXCEEDED"|"RESOURCE_GROUP_LIMIT_EXCEEDED"|"EVENT_SUBSCRIPTION_LIMIT_EXCEEDED"|string; - export interface ListAssessmentRunAgentsRequest { - /** - * The ARN that specifies the assessment run whose agents you want to list. - */ - assessmentRunArn: Arn; - /** - * You can use this parameter to specify a subset of data to be included in the action's response. For a record to match a filter, all specified filter attributes must match. When multiple values are specified for a filter attribute, any of the values can match. - */ - filter?: AgentFilter; - /** - * You can use this parameter when paginating results. Set the value of this parameter to null on your first call to the ListAssessmentRunAgents action. Subsequent calls to the action fill nextToken in the request with the value of NextToken from the previous response to continue listing data. - */ - nextToken?: PaginationToken; - /** - * You can use this parameter to indicate the maximum number of items that you want in the response. The default value is 10. The maximum value is 500. - */ - maxResults?: ListMaxResults; - } - export interface ListAssessmentRunAgentsResponse { - /** - * A list of ARNs that specifies the agents returned by the action. - */ - assessmentRunAgents: AssessmentRunAgentList; - /** - * When a response is generated, if there is more data to be listed, this parameter is present in the response and contains the value to use for the nextToken parameter in a subsequent pagination request. If there is no more data to be listed, this parameter is set to null. - */ - nextToken?: PaginationToken; - } - export interface ListAssessmentRunsRequest { - /** - * The ARNs that specify the assessment templates whose assessment runs you want to list. - */ - assessmentTemplateArns?: ListParentArnList; - /** - * You can use this parameter to specify a subset of data to be included in the action's response. For a record to match a filter, all specified filter attributes must match. When multiple values are specified for a filter attribute, any of the values can match. - */ - filter?: AssessmentRunFilter; - /** - * You can use this parameter when paginating results. Set the value of this parameter to null on your first call to the ListAssessmentRuns action. Subsequent calls to the action fill nextToken in the request with the value of NextToken from the previous response to continue listing data. - */ - nextToken?: PaginationToken; - /** - * You can use this parameter to indicate the maximum number of items that you want in the response. The default value is 10. The maximum value is 500. - */ - maxResults?: ListMaxResults; - } - export interface ListAssessmentRunsResponse { - /** - * A list of ARNs that specifies the assessment runs that are returned by the action. - */ - assessmentRunArns: ListReturnedArnList; - /** - * When a response is generated, if there is more data to be listed, this parameter is present in the response and contains the value to use for the nextToken parameter in a subsequent pagination request. If there is no more data to be listed, this parameter is set to null. - */ - nextToken?: PaginationToken; - } - export interface ListAssessmentTargetsRequest { - /** - * You can use this parameter to specify a subset of data to be included in the action's response. For a record to match a filter, all specified filter attributes must match. When multiple values are specified for a filter attribute, any of the values can match. - */ - filter?: AssessmentTargetFilter; - /** - * You can use this parameter when paginating results. Set the value of this parameter to null on your first call to the ListAssessmentTargets action. Subsequent calls to the action fill nextToken in the request with the value of NextToken from the previous response to continue listing data. - */ - nextToken?: PaginationToken; - /** - * You can use this parameter to indicate the maximum number of items you want in the response. The default value is 10. The maximum value is 500. - */ - maxResults?: ListMaxResults; - } - export interface ListAssessmentTargetsResponse { - /** - * A list of ARNs that specifies the assessment targets that are returned by the action. - */ - assessmentTargetArns: ListReturnedArnList; - /** - * When a response is generated, if there is more data to be listed, this parameter is present in the response and contains the value to use for the nextToken parameter in a subsequent pagination request. If there is no more data to be listed, this parameter is set to null. - */ - nextToken?: PaginationToken; - } - export interface ListAssessmentTemplatesRequest { - /** - * A list of ARNs that specifies the assessment targets whose assessment templates you want to list. - */ - assessmentTargetArns?: ListParentArnList; - /** - * You can use this parameter to specify a subset of data to be included in the action's response. For a record to match a filter, all specified filter attributes must match. When multiple values are specified for a filter attribute, any of the values can match. - */ - filter?: AssessmentTemplateFilter; - /** - * You can use this parameter when paginating results. Set the value of this parameter to null on your first call to the ListAssessmentTemplates action. Subsequent calls to the action fill nextToken in the request with the value of NextToken from the previous response to continue listing data. - */ - nextToken?: PaginationToken; - /** - * You can use this parameter to indicate the maximum number of items you want in the response. The default value is 10. The maximum value is 500. - */ - maxResults?: ListMaxResults; - } - export interface ListAssessmentTemplatesResponse { - /** - * A list of ARNs that specifies the assessment templates returned by the action. - */ - assessmentTemplateArns: ListReturnedArnList; - /** - * When a response is generated, if there is more data to be listed, this parameter is present in the response and contains the value to use for the nextToken parameter in a subsequent pagination request. If there is no more data to be listed, this parameter is set to null. - */ - nextToken?: PaginationToken; - } - export type ListEventSubscriptionsMaxResults = number; - export interface ListEventSubscriptionsRequest { - /** - * The ARN of the assessment template for which you want to list the existing event subscriptions. - */ - resourceArn?: Arn; - /** - * You can use this parameter when paginating results. Set the value of this parameter to null on your first call to the ListEventSubscriptions action. Subsequent calls to the action fill nextToken in the request with the value of NextToken from the previous response to continue listing data. - */ - nextToken?: PaginationToken; - /** - * You can use this parameter to indicate the maximum number of items you want in the response. The default value is 10. The maximum value is 500. - */ - maxResults?: ListEventSubscriptionsMaxResults; - } - export interface ListEventSubscriptionsResponse { - /** - * Details of the returned event subscriptions. - */ - subscriptions: SubscriptionList; - /** - * When a response is generated, if there is more data to be listed, this parameter is present in the response and contains the value to use for the nextToken parameter in a subsequent pagination request. If there is no more data to be listed, this parameter is set to null. - */ - nextToken?: PaginationToken; - } - export interface ListFindingsRequest { - /** - * The ARNs of the assessment runs that generate the findings that you want to list. - */ - assessmentRunArns?: ListParentArnList; - /** - * You can use this parameter to specify a subset of data to be included in the action's response. For a record to match a filter, all specified filter attributes must match. When multiple values are specified for a filter attribute, any of the values can match. - */ - filter?: FindingFilter; - /** - * You can use this parameter when paginating results. Set the value of this parameter to null on your first call to the ListFindings action. Subsequent calls to the action fill nextToken in the request with the value of NextToken from the previous response to continue listing data. - */ - nextToken?: PaginationToken; - /** - * You can use this parameter to indicate the maximum number of items you want in the response. The default value is 10. The maximum value is 500. - */ - maxResults?: ListMaxResults; - } - export interface ListFindingsResponse { - /** - * A list of ARNs that specifies the findings returned by the action. - */ - findingArns: ListReturnedArnList; - /** - * When a response is generated, if there is more data to be listed, this parameter is present in the response and contains the value to use for the nextToken parameter in a subsequent pagination request. If there is no more data to be listed, this parameter is set to null. - */ - nextToken?: PaginationToken; - } - export type ListMaxResults = number; - export type ListParentArnList = Arn[]; - export type ListReturnedArnList = Arn[]; - export interface ListRulesPackagesRequest { - /** - * You can use this parameter when paginating results. Set the value of this parameter to null on your first call to the ListRulesPackages action. Subsequent calls to the action fill nextToken in the request with the value of NextToken from the previous response to continue listing data. - */ - nextToken?: PaginationToken; - /** - * You can use this parameter to indicate the maximum number of items you want in the response. The default value is 10. The maximum value is 500. - */ - maxResults?: ListMaxResults; - } - export interface ListRulesPackagesResponse { - /** - * The list of ARNs that specifies the rules packages returned by the action. - */ - rulesPackageArns: ListReturnedArnList; - /** - * When a response is generated, if there is more data to be listed, this parameter is present in the response and contains the value to use for the nextToken parameter in a subsequent pagination request. If there is no more data to be listed, this parameter is set to null. - */ - nextToken?: PaginationToken; - } - export interface ListTagsForResourceRequest { - /** - * The ARN that specifies the assessment template whose tags you want to list. - */ - resourceArn: Arn; - } - export interface ListTagsForResourceResponse { - /** - * A collection of key and value pairs. - */ - tags: TagList; - } - export type Locale = "EN_US"|string; - export type Long = number; - export type Message = string; - export type MessageType = string; - export type NamePattern = string; - export type NoSuchEntityErrorCode = "ASSESSMENT_TARGET_DOES_NOT_EXIST"|"ASSESSMENT_TEMPLATE_DOES_NOT_EXIST"|"ASSESSMENT_RUN_DOES_NOT_EXIST"|"FINDING_DOES_NOT_EXIST"|"RESOURCE_GROUP_DOES_NOT_EXIST"|"RULES_PACKAGE_DOES_NOT_EXIST"|"SNS_TOPIC_DOES_NOT_EXIST"|"IAM_ROLE_DOES_NOT_EXIST"|string; - export type NumericSeverity = number; - export type NumericVersion = number; - export type PaginationToken = string; - export type PreviewAgentsMaxResults = number; - export interface PreviewAgentsRequest { - /** - * The ARN of the assessment target whose agents you want to preview. - */ - previewAgentsArn: Arn; - /** - * You can use this parameter when paginating results. Set the value of this parameter to null on your first call to the PreviewAgents action. Subsequent calls to the action fill nextToken in the request with the value of NextToken from the previous response to continue listing data. - */ - nextToken?: PaginationToken; - /** - * You can use this parameter to indicate the maximum number of items you want in the response. The default value is 10. The maximum value is 500. - */ - maxResults?: PreviewAgentsMaxResults; - } - export interface PreviewAgentsResponse { - /** - * The resulting list of agents. - */ - agentPreviews: AgentPreviewList; - /** - * When a response is generated, if there is more data to be listed, this parameter is present in the response and contains the value to use for the nextToken parameter in a subsequent pagination request. If there is no more data to be listed, this parameter is set to null. - */ - nextToken?: PaginationToken; - } - export type ProviderName = string; - export interface RegisterCrossAccountAccessRoleRequest { - /** - * The ARN of the IAM role that Amazon Inspector uses to list your EC2 instances during the assessment run or when you call the PreviewAgents action. - */ - roleArn: Arn; - } - export interface RemoveAttributesFromFindingsRequest { - /** - * The ARNs that specify the findings that you want to remove attributes from. - */ - findingArns: AddRemoveAttributesFindingArnList; - /** - * The array of attribute keys that you want to remove from specified findings. - */ - attributeKeys: UserAttributeKeyList; - } - export interface RemoveAttributesFromFindingsResponse { - /** - * Attributes details that cannot be described. An error code is provided for each failed item. - */ - failedItems: FailedItems; - } - export type ReportFileFormat = "HTML"|"PDF"|string; - export type ReportStatus = "WORK_IN_PROGRESS"|"FAILED"|"COMPLETED"|string; - export type ReportType = "FINDING"|"FULL"|string; - export interface ResourceGroup { - /** - * The ARN of the resource group. - */ - arn: Arn; - /** - * The tags (key and value pairs) of the resource group. This data type property is used in the CreateResourceGroup action. - */ - tags: ResourceGroupTags; - /** - * The time at which resource group is created. - */ - createdAt: Timestamp; - } - export type ResourceGroupList = ResourceGroup[]; - export interface ResourceGroupTag { - /** - * A tag key. - */ - key: TagKey; - /** - * The value assigned to a tag key. - */ - value?: TagValue; - } - export type ResourceGroupTags = ResourceGroupTag[]; - export type RuleName = string; - export type RuleNameList = RuleName[]; - export interface RulesPackage { - /** - * The ARN of the rules package. - */ - arn: Arn; - /** - * The name of the rules package. - */ - name: RulesPackageName; - /** - * The version ID of the rules package. - */ - version: Version; - /** - * The provider of the rules package. - */ - provider: ProviderName; - /** - * The description of the rules package. - */ - description?: Text; - } - export type RulesPackageList = RulesPackage[]; - export type RulesPackageName = string; - export type ServiceName = string; - export interface SetTagsForResourceRequest { - /** - * The ARN of the assessment template that you want to set tags to. - */ - resourceArn: Arn; - /** - * A collection of key and value pairs that you want to set to the assessment template. - */ - tags?: TagList; - } - export type Severity = "Low"|"Medium"|"High"|"Informational"|"Undefined"|string; - export type SeverityList = Severity[]; - export interface StartAssessmentRunRequest { - /** - * The ARN of the assessment template of the assessment run that you want to start. - */ - assessmentTemplateArn: Arn; - /** - * You can specify the name for the assessment run. The name must be unique for the assessment template whose ARN is used to start the assessment run. - */ - assessmentRunName?: AssessmentRunName; - } - export interface StartAssessmentRunResponse { - /** - * The ARN of the assessment run that has been started. - */ - assessmentRunArn: Arn; - } - export type StopAction = "START_EVALUATION"|"SKIP_EVALUATION"|string; - export interface StopAssessmentRunRequest { - /** - * The ARN of the assessment run that you want to stop. - */ - assessmentRunArn: Arn; - /** - * An input option that can be set to either START_EVALUATION or SKIP_EVALUATION. START_EVALUATION (the default value), stops the AWS agent from collecting data and begins the results evaluation and the findings generation process. SKIP_EVALUATION cancels the assessment run immediately, after which no findings are generated. - */ - stopAction?: StopAction; - } - export interface SubscribeToEventRequest { - /** - * The ARN of the assessment template that is used during the event for which you want to receive SNS notifications. - */ - resourceArn: Arn; - /** - * The event for which you want to receive SNS notifications. - */ - event: InspectorEvent; - /** - * The ARN of the SNS topic to which the SNS notifications are sent. - */ - topicArn: Arn; - } - export interface Subscription { - /** - * The ARN of the assessment template that is used during the event for which the SNS notification is sent. - */ - resourceArn: Arn; - /** - * The ARN of the Amazon Simple Notification Service (SNS) topic to which the SNS notifications are sent. - */ - topicArn: Arn; - /** - * The list of existing event subscriptions. - */ - eventSubscriptions: EventSubscriptionList; - } - export type SubscriptionList = Subscription[]; - export interface Tag { - /** - * A tag key. - */ - key: TagKey; - /** - * A value assigned to a tag key. - */ - value?: TagValue; - } - export type TagKey = string; - export type TagList = Tag[]; - export type TagValue = string; - export interface TelemetryMetadata { - /** - * A specific type of behavioral data that is collected by the agent. - */ - messageType: MessageType; - /** - * The count of messages that the agent sends to the Amazon Inspector service. - */ - count: Long; - /** - * The data size of messages that the agent sends to the Amazon Inspector service. - */ - dataSize?: Long; - } - export type TelemetryMetadataList = TelemetryMetadata[]; - export type Text = string; - export type Timestamp = Date; - export interface TimestampRange { - /** - * The minimum value of the timestamp range. - */ - beginDate?: Timestamp; - /** - * The maximum value of the timestamp range. - */ - endDate?: Timestamp; - } - export interface UnsubscribeFromEventRequest { - /** - * The ARN of the assessment template that is used during the event for which you want to stop receiving SNS notifications. - */ - resourceArn: Arn; - /** - * The event for which you want to stop receiving SNS notifications. - */ - event: InspectorEvent; - /** - * The ARN of the SNS topic to which SNS notifications are sent. - */ - topicArn: Arn; - } - export interface UpdateAssessmentTargetRequest { - /** - * The ARN of the assessment target that you want to update. - */ - assessmentTargetArn: Arn; - /** - * The name of the assessment target that you want to update. - */ - assessmentTargetName: AssessmentTargetName; - /** - * The ARN of the resource group that is used to specify the new resource group to associate with the assessment target. - */ - resourceGroupArn: Arn; - } - export type Url = string; - export type UserAttributeKeyList = AttributeKey[]; - export type UserAttributeList = Attribute[]; - export type Version = string; - /** - * A string in YYYY-MM-DD format that represents the latest possible API version that can be used in this service. Specify 'latest' to use the latest possible version. - */ - export type apiVersion = "2015-08-18"|"2016-02-16"|"latest"|string; - export interface ClientApiVersions { - /** - * A string in YYYY-MM-DD format that represents the latest possible API version that can be used in this service. Specify 'latest' to use the latest possible version. - */ - apiVersion?: apiVersion; - } - export type ClientConfiguration = ServiceConfigurationOptions & ClientApiVersions; - /** - * Contains interfaces for use with the Inspector client. - */ - export import Types = Inspector; -} -export = Inspector; diff --git a/workshops/monte-carlo-on-ec2-spot-fleet/src/web/node_modules/aws-sdk/clients/inspector.js b/workshops/monte-carlo-on-ec2-spot-fleet/src/web/node_modules/aws-sdk/clients/inspector.js deleted file mode 100644 index b03c62d8..00000000 --- a/workshops/monte-carlo-on-ec2-spot-fleet/src/web/node_modules/aws-sdk/clients/inspector.js +++ /dev/null @@ -1,18 +0,0 @@ -require('../lib/node_loader'); -var AWS = require('../lib/core'); -var Service = AWS.Service; -var apiLoader = AWS.apiLoader; - -apiLoader.services['inspector'] = {}; -AWS.Inspector = Service.defineService('inspector', ['2015-08-18*', '2016-02-16']); -Object.defineProperty(apiLoader.services['inspector'], '2016-02-16', { - get: function get() { - var model = require('../apis/inspector-2016-02-16.min.json'); - model.paginators = require('../apis/inspector-2016-02-16.paginators.json').pagination; - return model; - }, - enumerable: true, - configurable: true -}); - -module.exports = AWS.Inspector; diff --git a/workshops/monte-carlo-on-ec2-spot-fleet/src/web/node_modules/aws-sdk/clients/iot.d.ts b/workshops/monte-carlo-on-ec2-spot-fleet/src/web/node_modules/aws-sdk/clients/iot.d.ts deleted file mode 100644 index 93297c91..00000000 --- a/workshops/monte-carlo-on-ec2-spot-fleet/src/web/node_modules/aws-sdk/clients/iot.d.ts +++ /dev/null @@ -1,2163 +0,0 @@ -import {Request} from '../lib/request'; -import {Response} from '../lib/response'; -import {AWSError} from '../lib/error'; -import {Service} from '../lib/service'; -import {ServiceConfigurationOptions} from '../lib/service'; -import {ConfigBase as Config} from '../lib/config'; -interface Blob {} -declare class Iot extends Service { - /** - * Constructs a service object. This object has one method for each API operation. - */ - constructor(options?: Iot.Types.ClientConfiguration) - config: Config & Iot.Types.ClientConfiguration; - /** - * Accepts a pending certificate transfer. The default state of the certificate is INACTIVE. To check for pending certificate transfers, call ListCertificates to enumerate your certificates. - */ - acceptCertificateTransfer(params: Iot.Types.AcceptCertificateTransferRequest, callback?: (err: AWSError, data: {}) => void): Request<{}, AWSError>; - /** - * Accepts a pending certificate transfer. The default state of the certificate is INACTIVE. To check for pending certificate transfers, call ListCertificates to enumerate your certificates. - */ - acceptCertificateTransfer(callback?: (err: AWSError, data: {}) => void): Request<{}, AWSError>; - /** - * Attaches the specified policy to the specified principal (certificate or other credential). - */ - attachPrincipalPolicy(params: Iot.Types.AttachPrincipalPolicyRequest, callback?: (err: AWSError, data: {}) => void): Request<{}, AWSError>; - /** - * Attaches the specified policy to the specified principal (certificate or other credential). - */ - attachPrincipalPolicy(callback?: (err: AWSError, data: {}) => void): Request<{}, AWSError>; - /** - * Attaches the specified principal to the specified thing. - */ - attachThingPrincipal(params: Iot.Types.AttachThingPrincipalRequest, callback?: (err: AWSError, data: Iot.Types.AttachThingPrincipalResponse) => void): Request; - /** - * Attaches the specified principal to the specified thing. - */ - attachThingPrincipal(callback?: (err: AWSError, data: Iot.Types.AttachThingPrincipalResponse) => void): Request; - /** - * Cancels a pending transfer for the specified certificate. Note Only the transfer source account can use this operation to cancel a transfer. (Transfer destinations can use RejectCertificateTransfer instead.) After transfer, AWS IoT returns the certificate to the source account in the INACTIVE state. After the destination account has accepted the transfer, the transfer cannot be cancelled. After a certificate transfer is cancelled, the status of the certificate changes from PENDING_TRANSFER to INACTIVE. - */ - cancelCertificateTransfer(params: Iot.Types.CancelCertificateTransferRequest, callback?: (err: AWSError, data: {}) => void): Request<{}, AWSError>; - /** - * Cancels a pending transfer for the specified certificate. Note Only the transfer source account can use this operation to cancel a transfer. (Transfer destinations can use RejectCertificateTransfer instead.) After transfer, AWS IoT returns the certificate to the source account in the INACTIVE state. After the destination account has accepted the transfer, the transfer cannot be cancelled. After a certificate transfer is cancelled, the status of the certificate changes from PENDING_TRANSFER to INACTIVE. - */ - cancelCertificateTransfer(callback?: (err: AWSError, data: {}) => void): Request<{}, AWSError>; - /** - * Creates an X.509 certificate using the specified certificate signing request. Note: The CSR must include a public key that is either an RSA key with a length of at least 2048 bits or an ECC key from NIST P-256 or NIST P-384 curves. Note: Reusing the same certificate signing request (CSR) results in a distinct certificate. You can create multiple certificates in a batch by creating a directory, copying multiple .csr files into that directory, and then specifying that directory on the command line. The following commands show how to create a batch of certificates given a batch of CSRs. Assuming a set of CSRs are located inside of the directory my-csr-directory: On Linux and OS X, the command is: $ ls my-csr-directory/ | xargs -I {} aws iot create-certificate-from-csr --certificate-signing-request file://my-csr-directory/{} This command lists all of the CSRs in my-csr-directory and pipes each CSR file name to the aws iot create-certificate-from-csr AWS CLI command to create a certificate for the corresponding CSR. The aws iot create-certificate-from-csr part of the command can also be run in parallel to speed up the certificate creation process: $ ls my-csr-directory/ | xargs -P 10 -I {} aws iot create-certificate-from-csr --certificate-signing-request file://my-csr-directory/{} On Windows PowerShell, the command to create certificates for all CSRs in my-csr-directory is: > ls -Name my-csr-directory | %{aws iot create-certificate-from-csr --certificate-signing-request file://my-csr-directory/$_} On a Windows command prompt, the command to create certificates for all CSRs in my-csr-directory is: > forfiles /p my-csr-directory /c "cmd /c aws iot create-certificate-from-csr --certificate-signing-request file://@path" - */ - createCertificateFromCsr(params: Iot.Types.CreateCertificateFromCsrRequest, callback?: (err: AWSError, data: Iot.Types.CreateCertificateFromCsrResponse) => void): Request; - /** - * Creates an X.509 certificate using the specified certificate signing request. Note: The CSR must include a public key that is either an RSA key with a length of at least 2048 bits or an ECC key from NIST P-256 or NIST P-384 curves. Note: Reusing the same certificate signing request (CSR) results in a distinct certificate. You can create multiple certificates in a batch by creating a directory, copying multiple .csr files into that directory, and then specifying that directory on the command line. The following commands show how to create a batch of certificates given a batch of CSRs. Assuming a set of CSRs are located inside of the directory my-csr-directory: On Linux and OS X, the command is: $ ls my-csr-directory/ | xargs -I {} aws iot create-certificate-from-csr --certificate-signing-request file://my-csr-directory/{} This command lists all of the CSRs in my-csr-directory and pipes each CSR file name to the aws iot create-certificate-from-csr AWS CLI command to create a certificate for the corresponding CSR. The aws iot create-certificate-from-csr part of the command can also be run in parallel to speed up the certificate creation process: $ ls my-csr-directory/ | xargs -P 10 -I {} aws iot create-certificate-from-csr --certificate-signing-request file://my-csr-directory/{} On Windows PowerShell, the command to create certificates for all CSRs in my-csr-directory is: > ls -Name my-csr-directory | %{aws iot create-certificate-from-csr --certificate-signing-request file://my-csr-directory/$_} On a Windows command prompt, the command to create certificates for all CSRs in my-csr-directory is: > forfiles /p my-csr-directory /c "cmd /c aws iot create-certificate-from-csr --certificate-signing-request file://@path" - */ - createCertificateFromCsr(callback?: (err: AWSError, data: Iot.Types.CreateCertificateFromCsrResponse) => void): Request; - /** - * Creates a 2048-bit RSA key pair and issues an X.509 certificate using the issued public key. Note This is the only time AWS IoT issues the private key for this certificate, so it is important to keep it in a secure location. - */ - createKeysAndCertificate(params: Iot.Types.CreateKeysAndCertificateRequest, callback?: (err: AWSError, data: Iot.Types.CreateKeysAndCertificateResponse) => void): Request; - /** - * Creates a 2048-bit RSA key pair and issues an X.509 certificate using the issued public key. Note This is the only time AWS IoT issues the private key for this certificate, so it is important to keep it in a secure location. - */ - createKeysAndCertificate(callback?: (err: AWSError, data: Iot.Types.CreateKeysAndCertificateResponse) => void): Request; - /** - * Creates an AWS IoT policy. The created policy is the default version for the policy. This operation creates a policy version with a version identifier of 1 and sets 1 as the policy's default version. - */ - createPolicy(params: Iot.Types.CreatePolicyRequest, callback?: (err: AWSError, data: Iot.Types.CreatePolicyResponse) => void): Request; - /** - * Creates an AWS IoT policy. The created policy is the default version for the policy. This operation creates a policy version with a version identifier of 1 and sets 1 as the policy's default version. - */ - createPolicy(callback?: (err: AWSError, data: Iot.Types.CreatePolicyResponse) => void): Request; - /** - * Creates a new version of the specified AWS IoT policy. To update a policy, create a new policy version. A managed policy can have up to five versions. If the policy has five versions, you must use DeletePolicyVersion to delete an existing version before you create a new one. Optionally, you can set the new version as the policy's default version. The default version is the operative version (that is, the version that is in effect for the certificates to which the policy is attached). - */ - createPolicyVersion(params: Iot.Types.CreatePolicyVersionRequest, callback?: (err: AWSError, data: Iot.Types.CreatePolicyVersionResponse) => void): Request; - /** - * Creates a new version of the specified AWS IoT policy. To update a policy, create a new policy version. A managed policy can have up to five versions. If the policy has five versions, you must use DeletePolicyVersion to delete an existing version before you create a new one. Optionally, you can set the new version as the policy's default version. The default version is the operative version (that is, the version that is in effect for the certificates to which the policy is attached). - */ - createPolicyVersion(callback?: (err: AWSError, data: Iot.Types.CreatePolicyVersionResponse) => void): Request; - /** - * Creates a thing record in the thing registry. - */ - createThing(params: Iot.Types.CreateThingRequest, callback?: (err: AWSError, data: Iot.Types.CreateThingResponse) => void): Request; - /** - * Creates a thing record in the thing registry. - */ - createThing(callback?: (err: AWSError, data: Iot.Types.CreateThingResponse) => void): Request; - /** - * Creates a new thing type. - */ - createThingType(params: Iot.Types.CreateThingTypeRequest, callback?: (err: AWSError, data: Iot.Types.CreateThingTypeResponse) => void): Request; - /** - * Creates a new thing type. - */ - createThingType(callback?: (err: AWSError, data: Iot.Types.CreateThingTypeResponse) => void): Request; - /** - * Creates a rule. Creating rules is an administrator-level action. Any user who has permission to create rules will be able to access data processed by the rule. - */ - createTopicRule(params: Iot.Types.CreateTopicRuleRequest, callback?: (err: AWSError, data: {}) => void): Request<{}, AWSError>; - /** - * Creates a rule. Creating rules is an administrator-level action. Any user who has permission to create rules will be able to access data processed by the rule. - */ - createTopicRule(callback?: (err: AWSError, data: {}) => void): Request<{}, AWSError>; - /** - * Deletes a registered CA certificate. - */ - deleteCACertificate(params: Iot.Types.DeleteCACertificateRequest, callback?: (err: AWSError, data: Iot.Types.DeleteCACertificateResponse) => void): Request; - /** - * Deletes a registered CA certificate. - */ - deleteCACertificate(callback?: (err: AWSError, data: Iot.Types.DeleteCACertificateResponse) => void): Request; - /** - * Deletes the specified certificate. A certificate cannot be deleted if it has a policy attached to it or if its status is set to ACTIVE. To delete a certificate, first use the DetachPrincipalPolicy API to detach all policies. Next, use the UpdateCertificate API to set the certificate to the INACTIVE status. - */ - deleteCertificate(params: Iot.Types.DeleteCertificateRequest, callback?: (err: AWSError, data: {}) => void): Request<{}, AWSError>; - /** - * Deletes the specified certificate. A certificate cannot be deleted if it has a policy attached to it or if its status is set to ACTIVE. To delete a certificate, first use the DetachPrincipalPolicy API to detach all policies. Next, use the UpdateCertificate API to set the certificate to the INACTIVE status. - */ - deleteCertificate(callback?: (err: AWSError, data: {}) => void): Request<{}, AWSError>; - /** - * Deletes the specified policy. A policy cannot be deleted if it has non-default versions or it is attached to any certificate. To delete a policy, use the DeletePolicyVersion API to delete all non-default versions of the policy; use the DetachPrincipalPolicy API to detach the policy from any certificate; and then use the DeletePolicy API to delete the policy. When a policy is deleted using DeletePolicy, its default version is deleted with it. - */ - deletePolicy(params: Iot.Types.DeletePolicyRequest, callback?: (err: AWSError, data: {}) => void): Request<{}, AWSError>; - /** - * Deletes the specified policy. A policy cannot be deleted if it has non-default versions or it is attached to any certificate. To delete a policy, use the DeletePolicyVersion API to delete all non-default versions of the policy; use the DetachPrincipalPolicy API to detach the policy from any certificate; and then use the DeletePolicy API to delete the policy. When a policy is deleted using DeletePolicy, its default version is deleted with it. - */ - deletePolicy(callback?: (err: AWSError, data: {}) => void): Request<{}, AWSError>; - /** - * Deletes the specified version of the specified policy. You cannot delete the default version of a policy using this API. To delete the default version of a policy, use DeletePolicy. To find out which version of a policy is marked as the default version, use ListPolicyVersions. - */ - deletePolicyVersion(params: Iot.Types.DeletePolicyVersionRequest, callback?: (err: AWSError, data: {}) => void): Request<{}, AWSError>; - /** - * Deletes the specified version of the specified policy. You cannot delete the default version of a policy using this API. To delete the default version of a policy, use DeletePolicy. To find out which version of a policy is marked as the default version, use ListPolicyVersions. - */ - deletePolicyVersion(callback?: (err: AWSError, data: {}) => void): Request<{}, AWSError>; - /** - * Deletes a CA certificate registration code. - */ - deleteRegistrationCode(params: Iot.Types.DeleteRegistrationCodeRequest, callback?: (err: AWSError, data: Iot.Types.DeleteRegistrationCodeResponse) => void): Request; - /** - * Deletes a CA certificate registration code. - */ - deleteRegistrationCode(callback?: (err: AWSError, data: Iot.Types.DeleteRegistrationCodeResponse) => void): Request; - /** - * Deletes the specified thing. - */ - deleteThing(params: Iot.Types.DeleteThingRequest, callback?: (err: AWSError, data: Iot.Types.DeleteThingResponse) => void): Request; - /** - * Deletes the specified thing. - */ - deleteThing(callback?: (err: AWSError, data: Iot.Types.DeleteThingResponse) => void): Request; - /** - * Deletes the specified thing type . You cannot delete a thing type if it has things associated with it. To delete a thing type, first mark it as deprecated by calling DeprecateThingType, then remove any associated things by calling UpdateThing to change the thing type on any associated thing, and finally use DeleteThingType to delete the thing type. - */ - deleteThingType(params: Iot.Types.DeleteThingTypeRequest, callback?: (err: AWSError, data: Iot.Types.DeleteThingTypeResponse) => void): Request; - /** - * Deletes the specified thing type . You cannot delete a thing type if it has things associated with it. To delete a thing type, first mark it as deprecated by calling DeprecateThingType, then remove any associated things by calling UpdateThing to change the thing type on any associated thing, and finally use DeleteThingType to delete the thing type. - */ - deleteThingType(callback?: (err: AWSError, data: Iot.Types.DeleteThingTypeResponse) => void): Request; - /** - * Deletes the specified rule. - */ - deleteTopicRule(params: Iot.Types.DeleteTopicRuleRequest, callback?: (err: AWSError, data: {}) => void): Request<{}, AWSError>; - /** - * Deletes the specified rule. - */ - deleteTopicRule(callback?: (err: AWSError, data: {}) => void): Request<{}, AWSError>; - /** - * Deprecates a thing type. You can not associate new things with deprecated thing type. - */ - deprecateThingType(params: Iot.Types.DeprecateThingTypeRequest, callback?: (err: AWSError, data: Iot.Types.DeprecateThingTypeResponse) => void): Request; - /** - * Deprecates a thing type. You can not associate new things with deprecated thing type. - */ - deprecateThingType(callback?: (err: AWSError, data: Iot.Types.DeprecateThingTypeResponse) => void): Request; - /** - * Describes a registered CA certificate. - */ - describeCACertificate(params: Iot.Types.DescribeCACertificateRequest, callback?: (err: AWSError, data: Iot.Types.DescribeCACertificateResponse) => void): Request; - /** - * Describes a registered CA certificate. - */ - describeCACertificate(callback?: (err: AWSError, data: Iot.Types.DescribeCACertificateResponse) => void): Request; - /** - * Gets information about the specified certificate. - */ - describeCertificate(params: Iot.Types.DescribeCertificateRequest, callback?: (err: AWSError, data: Iot.Types.DescribeCertificateResponse) => void): Request; - /** - * Gets information about the specified certificate. - */ - describeCertificate(callback?: (err: AWSError, data: Iot.Types.DescribeCertificateResponse) => void): Request; - /** - * Returns a unique endpoint specific to the AWS account making the call. - */ - describeEndpoint(params: Iot.Types.DescribeEndpointRequest, callback?: (err: AWSError, data: Iot.Types.DescribeEndpointResponse) => void): Request; - /** - * Returns a unique endpoint specific to the AWS account making the call. - */ - describeEndpoint(callback?: (err: AWSError, data: Iot.Types.DescribeEndpointResponse) => void): Request; - /** - * Gets information about the specified thing. - */ - describeThing(params: Iot.Types.DescribeThingRequest, callback?: (err: AWSError, data: Iot.Types.DescribeThingResponse) => void): Request; - /** - * Gets information about the specified thing. - */ - describeThing(callback?: (err: AWSError, data: Iot.Types.DescribeThingResponse) => void): Request; - /** - * Gets information about the specified thing type. - */ - describeThingType(params: Iot.Types.DescribeThingTypeRequest, callback?: (err: AWSError, data: Iot.Types.DescribeThingTypeResponse) => void): Request; - /** - * Gets information about the specified thing type. - */ - describeThingType(callback?: (err: AWSError, data: Iot.Types.DescribeThingTypeResponse) => void): Request; - /** - * Removes the specified policy from the specified certificate. - */ - detachPrincipalPolicy(params: Iot.Types.DetachPrincipalPolicyRequest, callback?: (err: AWSError, data: {}) => void): Request<{}, AWSError>; - /** - * Removes the specified policy from the specified certificate. - */ - detachPrincipalPolicy(callback?: (err: AWSError, data: {}) => void): Request<{}, AWSError>; - /** - * Detaches the specified principal from the specified thing. - */ - detachThingPrincipal(params: Iot.Types.DetachThingPrincipalRequest, callback?: (err: AWSError, data: Iot.Types.DetachThingPrincipalResponse) => void): Request; - /** - * Detaches the specified principal from the specified thing. - */ - detachThingPrincipal(callback?: (err: AWSError, data: Iot.Types.DetachThingPrincipalResponse) => void): Request; - /** - * Disables the specified rule. - */ - disableTopicRule(params: Iot.Types.DisableTopicRuleRequest, callback?: (err: AWSError, data: {}) => void): Request<{}, AWSError>; - /** - * Disables the specified rule. - */ - disableTopicRule(callback?: (err: AWSError, data: {}) => void): Request<{}, AWSError>; - /** - * Enables the specified rule. - */ - enableTopicRule(params: Iot.Types.EnableTopicRuleRequest, callback?: (err: AWSError, data: {}) => void): Request<{}, AWSError>; - /** - * Enables the specified rule. - */ - enableTopicRule(callback?: (err: AWSError, data: {}) => void): Request<{}, AWSError>; - /** - * Gets the logging options. - */ - getLoggingOptions(params: Iot.Types.GetLoggingOptionsRequest, callback?: (err: AWSError, data: Iot.Types.GetLoggingOptionsResponse) => void): Request; - /** - * Gets the logging options. - */ - getLoggingOptions(callback?: (err: AWSError, data: Iot.Types.GetLoggingOptionsResponse) => void): Request; - /** - * Gets information about the specified policy with the policy document of the default version. - */ - getPolicy(params: Iot.Types.GetPolicyRequest, callback?: (err: AWSError, data: Iot.Types.GetPolicyResponse) => void): Request; - /** - * Gets information about the specified policy with the policy document of the default version. - */ - getPolicy(callback?: (err: AWSError, data: Iot.Types.GetPolicyResponse) => void): Request; - /** - * Gets information about the specified policy version. - */ - getPolicyVersion(params: Iot.Types.GetPolicyVersionRequest, callback?: (err: AWSError, data: Iot.Types.GetPolicyVersionResponse) => void): Request; - /** - * Gets information about the specified policy version. - */ - getPolicyVersion(callback?: (err: AWSError, data: Iot.Types.GetPolicyVersionResponse) => void): Request; - /** - * Gets a registration code used to register a CA certificate with AWS IoT. - */ - getRegistrationCode(params: Iot.Types.GetRegistrationCodeRequest, callback?: (err: AWSError, data: Iot.Types.GetRegistrationCodeResponse) => void): Request; - /** - * Gets a registration code used to register a CA certificate with AWS IoT. - */ - getRegistrationCode(callback?: (err: AWSError, data: Iot.Types.GetRegistrationCodeResponse) => void): Request; - /** - * Gets information about the specified rule. - */ - getTopicRule(params: Iot.Types.GetTopicRuleRequest, callback?: (err: AWSError, data: Iot.Types.GetTopicRuleResponse) => void): Request; - /** - * Gets information about the specified rule. - */ - getTopicRule(callback?: (err: AWSError, data: Iot.Types.GetTopicRuleResponse) => void): Request; - /** - * Lists the CA certificates registered for your AWS account. The results are paginated with a default page size of 25. You can use the returned marker to retrieve additional results. - */ - listCACertificates(params: Iot.Types.ListCACertificatesRequest, callback?: (err: AWSError, data: Iot.Types.ListCACertificatesResponse) => void): Request; - /** - * Lists the CA certificates registered for your AWS account. The results are paginated with a default page size of 25. You can use the returned marker to retrieve additional results. - */ - listCACertificates(callback?: (err: AWSError, data: Iot.Types.ListCACertificatesResponse) => void): Request; - /** - * Lists the certificates registered in your AWS account. The results are paginated with a default page size of 25. You can use the returned marker to retrieve additional results. - */ - listCertificates(params: Iot.Types.ListCertificatesRequest, callback?: (err: AWSError, data: Iot.Types.ListCertificatesResponse) => void): Request; - /** - * Lists the certificates registered in your AWS account. The results are paginated with a default page size of 25. You can use the returned marker to retrieve additional results. - */ - listCertificates(callback?: (err: AWSError, data: Iot.Types.ListCertificatesResponse) => void): Request; - /** - * List the device certificates signed by the specified CA certificate. - */ - listCertificatesByCA(params: Iot.Types.ListCertificatesByCARequest, callback?: (err: AWSError, data: Iot.Types.ListCertificatesByCAResponse) => void): Request; - /** - * List the device certificates signed by the specified CA certificate. - */ - listCertificatesByCA(callback?: (err: AWSError, data: Iot.Types.ListCertificatesByCAResponse) => void): Request; - /** - * Lists certificates that are being transfered but not yet accepted. - */ - listOutgoingCertificates(params: Iot.Types.ListOutgoingCertificatesRequest, callback?: (err: AWSError, data: Iot.Types.ListOutgoingCertificatesResponse) => void): Request; - /** - * Lists certificates that are being transfered but not yet accepted. - */ - listOutgoingCertificates(callback?: (err: AWSError, data: Iot.Types.ListOutgoingCertificatesResponse) => void): Request; - /** - * Lists your policies. - */ - listPolicies(params: Iot.Types.ListPoliciesRequest, callback?: (err: AWSError, data: Iot.Types.ListPoliciesResponse) => void): Request; - /** - * Lists your policies. - */ - listPolicies(callback?: (err: AWSError, data: Iot.Types.ListPoliciesResponse) => void): Request; - /** - * Lists the principals associated with the specified policy. - */ - listPolicyPrincipals(params: Iot.Types.ListPolicyPrincipalsRequest, callback?: (err: AWSError, data: Iot.Types.ListPolicyPrincipalsResponse) => void): Request; - /** - * Lists the principals associated with the specified policy. - */ - listPolicyPrincipals(callback?: (err: AWSError, data: Iot.Types.ListPolicyPrincipalsResponse) => void): Request; - /** - * Lists the versions of the specified policy and identifies the default version. - */ - listPolicyVersions(params: Iot.Types.ListPolicyVersionsRequest, callback?: (err: AWSError, data: Iot.Types.ListPolicyVersionsResponse) => void): Request; - /** - * Lists the versions of the specified policy and identifies the default version. - */ - listPolicyVersions(callback?: (err: AWSError, data: Iot.Types.ListPolicyVersionsResponse) => void): Request; - /** - * Lists the policies attached to the specified principal. If you use an Cognito identity, the ID must be in AmazonCognito Identity format. - */ - listPrincipalPolicies(params: Iot.Types.ListPrincipalPoliciesRequest, callback?: (err: AWSError, data: Iot.Types.ListPrincipalPoliciesResponse) => void): Request; - /** - * Lists the policies attached to the specified principal. If you use an Cognito identity, the ID must be in AmazonCognito Identity format. - */ - listPrincipalPolicies(callback?: (err: AWSError, data: Iot.Types.ListPrincipalPoliciesResponse) => void): Request; - /** - * Lists the things associated with the specified principal. - */ - listPrincipalThings(params: Iot.Types.ListPrincipalThingsRequest, callback?: (err: AWSError, data: Iot.Types.ListPrincipalThingsResponse) => void): Request; - /** - * Lists the things associated with the specified principal. - */ - listPrincipalThings(callback?: (err: AWSError, data: Iot.Types.ListPrincipalThingsResponse) => void): Request; - /** - * Lists the principals associated with the specified thing. - */ - listThingPrincipals(params: Iot.Types.ListThingPrincipalsRequest, callback?: (err: AWSError, data: Iot.Types.ListThingPrincipalsResponse) => void): Request; - /** - * Lists the principals associated with the specified thing. - */ - listThingPrincipals(callback?: (err: AWSError, data: Iot.Types.ListThingPrincipalsResponse) => void): Request; - /** - * Lists the existing thing types. - */ - listThingTypes(params: Iot.Types.ListThingTypesRequest, callback?: (err: AWSError, data: Iot.Types.ListThingTypesResponse) => void): Request; - /** - * Lists the existing thing types. - */ - listThingTypes(callback?: (err: AWSError, data: Iot.Types.ListThingTypesResponse) => void): Request; - /** - * Lists your things. Use the attributeName and attributeValue parameters to filter your things. For example, calling ListThings with attributeName=Color and attributeValue=Red retrieves all things in the registry that contain an attribute Color with the value Red. - */ - listThings(params: Iot.Types.ListThingsRequest, callback?: (err: AWSError, data: Iot.Types.ListThingsResponse) => void): Request; - /** - * Lists your things. Use the attributeName and attributeValue parameters to filter your things. For example, calling ListThings with attributeName=Color and attributeValue=Red retrieves all things in the registry that contain an attribute Color with the value Red. - */ - listThings(callback?: (err: AWSError, data: Iot.Types.ListThingsResponse) => void): Request; - /** - * Lists the rules for the specific topic. - */ - listTopicRules(params: Iot.Types.ListTopicRulesRequest, callback?: (err: AWSError, data: Iot.Types.ListTopicRulesResponse) => void): Request; - /** - * Lists the rules for the specific topic. - */ - listTopicRules(callback?: (err: AWSError, data: Iot.Types.ListTopicRulesResponse) => void): Request; - /** - * Registers a CA certificate with AWS IoT. This CA certificate can then be used to sign device certificates, which can be then registered with AWS IoT. You can register up to 10 CA certificates per AWS account that have the same subject field. This enables you to have up to 10 certificate authorities sign your device certificates. If you have more than one CA certificate registered, make sure you pass the CA certificate when you register your device certificates with the RegisterCertificate API. - */ - registerCACertificate(params: Iot.Types.RegisterCACertificateRequest, callback?: (err: AWSError, data: Iot.Types.RegisterCACertificateResponse) => void): Request; - /** - * Registers a CA certificate with AWS IoT. This CA certificate can then be used to sign device certificates, which can be then registered with AWS IoT. You can register up to 10 CA certificates per AWS account that have the same subject field. This enables you to have up to 10 certificate authorities sign your device certificates. If you have more than one CA certificate registered, make sure you pass the CA certificate when you register your device certificates with the RegisterCertificate API. - */ - registerCACertificate(callback?: (err: AWSError, data: Iot.Types.RegisterCACertificateResponse) => void): Request; - /** - * Registers a device certificate with AWS IoT. If you have more than one CA certificate that has the same subject field, you must specify the CA certificate that was used to sign the device certificate being registered. - */ - registerCertificate(params: Iot.Types.RegisterCertificateRequest, callback?: (err: AWSError, data: Iot.Types.RegisterCertificateResponse) => void): Request; - /** - * Registers a device certificate with AWS IoT. If you have more than one CA certificate that has the same subject field, you must specify the CA certificate that was used to sign the device certificate being registered. - */ - registerCertificate(callback?: (err: AWSError, data: Iot.Types.RegisterCertificateResponse) => void): Request; - /** - * Rejects a pending certificate transfer. After AWS IoT rejects a certificate transfer, the certificate status changes from PENDING_TRANSFER to INACTIVE. To check for pending certificate transfers, call ListCertificates to enumerate your certificates. This operation can only be called by the transfer destination. After it is called, the certificate will be returned to the source's account in the INACTIVE state. - */ - rejectCertificateTransfer(params: Iot.Types.RejectCertificateTransferRequest, callback?: (err: AWSError, data: {}) => void): Request<{}, AWSError>; - /** - * Rejects a pending certificate transfer. After AWS IoT rejects a certificate transfer, the certificate status changes from PENDING_TRANSFER to INACTIVE. To check for pending certificate transfers, call ListCertificates to enumerate your certificates. This operation can only be called by the transfer destination. After it is called, the certificate will be returned to the source's account in the INACTIVE state. - */ - rejectCertificateTransfer(callback?: (err: AWSError, data: {}) => void): Request<{}, AWSError>; - /** - * Replaces the specified rule. You must specify all parameters for the new rule. Creating rules is an administrator-level action. Any user who has permission to create rules will be able to access data processed by the rule. - */ - replaceTopicRule(params: Iot.Types.ReplaceTopicRuleRequest, callback?: (err: AWSError, data: {}) => void): Request<{}, AWSError>; - /** - * Replaces the specified rule. You must specify all parameters for the new rule. Creating rules is an administrator-level action. Any user who has permission to create rules will be able to access data processed by the rule. - */ - replaceTopicRule(callback?: (err: AWSError, data: {}) => void): Request<{}, AWSError>; - /** - * Sets the specified version of the specified policy as the policy's default (operative) version. This action affects all certificates to which the policy is attached. To list the principals the policy is attached to, use the ListPrincipalPolicy API. - */ - setDefaultPolicyVersion(params: Iot.Types.SetDefaultPolicyVersionRequest, callback?: (err: AWSError, data: {}) => void): Request<{}, AWSError>; - /** - * Sets the specified version of the specified policy as the policy's default (operative) version. This action affects all certificates to which the policy is attached. To list the principals the policy is attached to, use the ListPrincipalPolicy API. - */ - setDefaultPolicyVersion(callback?: (err: AWSError, data: {}) => void): Request<{}, AWSError>; - /** - * Sets the logging options. - */ - setLoggingOptions(params: Iot.Types.SetLoggingOptionsRequest, callback?: (err: AWSError, data: {}) => void): Request<{}, AWSError>; - /** - * Sets the logging options. - */ - setLoggingOptions(callback?: (err: AWSError, data: {}) => void): Request<{}, AWSError>; - /** - * Transfers the specified certificate to the specified AWS account. You can cancel the transfer until it is acknowledged by the recipient. No notification is sent to the transfer destination's account. It is up to the caller to notify the transfer target. The certificate being transferred must not be in the ACTIVE state. You can use the UpdateCertificate API to deactivate it. The certificate must not have any policies attached to it. You can use the DetachPrincipalPolicy API to detach them. - */ - transferCertificate(params: Iot.Types.TransferCertificateRequest, callback?: (err: AWSError, data: Iot.Types.TransferCertificateResponse) => void): Request; - /** - * Transfers the specified certificate to the specified AWS account. You can cancel the transfer until it is acknowledged by the recipient. No notification is sent to the transfer destination's account. It is up to the caller to notify the transfer target. The certificate being transferred must not be in the ACTIVE state. You can use the UpdateCertificate API to deactivate it. The certificate must not have any policies attached to it. You can use the DetachPrincipalPolicy API to detach them. - */ - transferCertificate(callback?: (err: AWSError, data: Iot.Types.TransferCertificateResponse) => void): Request; - /** - * Updates a registered CA certificate. - */ - updateCACertificate(params: Iot.Types.UpdateCACertificateRequest, callback?: (err: AWSError, data: {}) => void): Request<{}, AWSError>; - /** - * Updates a registered CA certificate. - */ - updateCACertificate(callback?: (err: AWSError, data: {}) => void): Request<{}, AWSError>; - /** - * Updates the status of the specified certificate. This operation is idempotent. Moving a certificate from the ACTIVE state (including REVOKED) will not disconnect currently connected devices, but these devices will be unable to reconnect. The ACTIVE state is required to authenticate devices connecting to AWS IoT using a certificate. - */ - updateCertificate(params: Iot.Types.UpdateCertificateRequest, callback?: (err: AWSError, data: {}) => void): Request<{}, AWSError>; - /** - * Updates the status of the specified certificate. This operation is idempotent. Moving a certificate from the ACTIVE state (including REVOKED) will not disconnect currently connected devices, but these devices will be unable to reconnect. The ACTIVE state is required to authenticate devices connecting to AWS IoT using a certificate. - */ - updateCertificate(callback?: (err: AWSError, data: {}) => void): Request<{}, AWSError>; - /** - * Updates the data for a thing. - */ - updateThing(params: Iot.Types.UpdateThingRequest, callback?: (err: AWSError, data: Iot.Types.UpdateThingResponse) => void): Request; - /** - * Updates the data for a thing. - */ - updateThing(callback?: (err: AWSError, data: Iot.Types.UpdateThingResponse) => void): Request; -} -declare namespace Iot { - export interface AcceptCertificateTransferRequest { - /** - * The ID of the certificate. - */ - certificateId: CertificateId; - /** - * Specifies whether the certificate is active. - */ - setAsActive?: SetAsActive; - } - export interface Action { - /** - * Write to a DynamoDB table. - */ - dynamoDB?: DynamoDBAction; - /** - * Write to a DynamoDB table. This is a new version of the DynamoDB action. It allows you to write each attribute in an MQTT message payload into a separate DynamoDB column. - */ - dynamoDBv2?: DynamoDBv2Action; - /** - * Invoke a Lambda function. - */ - lambda?: LambdaAction; - /** - * Publish to an Amazon SNS topic. - */ - sns?: SnsAction; - /** - * Publish to an Amazon SQS queue. - */ - sqs?: SqsAction; - /** - * Write data to an Amazon Kinesis stream. - */ - kinesis?: KinesisAction; - /** - * Publish to another MQTT topic. - */ - republish?: RepublishAction; - /** - * Write to an Amazon S3 bucket. - */ - s3?: S3Action; - /** - * Write to an Amazon Kinesis Firehose stream. - */ - firehose?: FirehoseAction; - /** - * Capture a CloudWatch metric. - */ - cloudwatchMetric?: CloudwatchMetricAction; - /** - * Change the state of a CloudWatch alarm. - */ - cloudwatchAlarm?: CloudwatchAlarmAction; - /** - * Write data to an Amazon Elasticsearch Service domain. - */ - elasticsearch?: ElasticsearchAction; - /** - * Send a message to a Salesforce IoT Cloud Input Stream. - */ - salesforce?: SalesforceAction; - } - export type ActionList = Action[]; - export type AlarmName = string; - export type AllowAutoRegistration = boolean; - export type AscendingOrder = boolean; - export interface AttachPrincipalPolicyRequest { - /** - * The policy name. - */ - policyName: PolicyName; - /** - * The principal, which can be a certificate ARN (as returned from the CreateCertificate operation) or an Amazon Cognito ID. - */ - principal: Principal; - } - export interface AttachThingPrincipalRequest { - /** - * The name of the thing. - */ - thingName: ThingName; - /** - * The principal, such as a certificate or other credential. - */ - principal: Principal; - } - export interface AttachThingPrincipalResponse { - } - export type AttributeName = string; - export interface AttributePayload { - /** - * A JSON string containing up to three key-value pair in JSON format. For example: {\"attributes\":{\"string1\":\"string2\"}} - */ - attributes?: Attributes; - /** - * Specifies whether the list of attributes provided in the AttributePayload is merged with the attributes stored in the registry, instead of overwriting them. To remove an attribute, call UpdateThing with an empty attribute value. The merge attribute is only valid when calling UpdateThing. - */ - merge?: Flag; - } - export type AttributeValue = string; - export type Attributes = {[key: string]: AttributeValue}; - export type AutoRegistrationStatus = "ENABLE"|"DISABLE"|string; - export type AwsAccountId = string; - export type AwsArn = string; - export type AwsIotSqlVersion = string; - export type Boolean = boolean; - export type BucketName = string; - export interface CACertificate { - /** - * The ARN of the CA certificate. - */ - certificateArn?: CertificateArn; - /** - * The ID of the CA certificate. - */ - certificateId?: CertificateId; - /** - * The status of the CA certificate. The status value REGISTER_INACTIVE is deprecated and should not be used. - */ - status?: CACertificateStatus; - /** - * The date the CA certificate was created. - */ - creationDate?: DateType; - } - export interface CACertificateDescription { - /** - * The CA certificate ARN. - */ - certificateArn?: CertificateArn; - /** - * The CA certificate ID. - */ - certificateId?: CertificateId; - /** - * The status of a CA certificate. - */ - status?: CACertificateStatus; - /** - * The CA certificate data, in PEM format. - */ - certificatePem?: CertificatePem; - /** - * The owner of the CA certificate. - */ - ownedBy?: AwsAccountId; - /** - * The date the CA certificate was created. - */ - creationDate?: DateType; - /** - * Whether the CA certificate configured for auto registration of device certificates. Valid values are "ENABLE" and "DISABLE" - */ - autoRegistrationStatus?: AutoRegistrationStatus; - } - export type CACertificateStatus = "ACTIVE"|"INACTIVE"|string; - export type CACertificates = CACertificate[]; - export interface CancelCertificateTransferRequest { - /** - * The ID of the certificate. - */ - certificateId: CertificateId; - } - export type CannedAccessControlList = "private"|"public-read"|"public-read-write"|"aws-exec-read"|"authenticated-read"|"bucket-owner-read"|"bucket-owner-full-control"|"log-delivery-write"|string; - export interface Certificate { - /** - * The ARN of the certificate. - */ - certificateArn?: CertificateArn; - /** - * The ID of the certificate. - */ - certificateId?: CertificateId; - /** - * The status of the certificate. The status value REGISTER_INACTIVE is deprecated and should not be used. - */ - status?: CertificateStatus; - /** - * The date and time the certificate was created. - */ - creationDate?: DateType; - } - export type CertificateArn = string; - export interface CertificateDescription { - /** - * The ARN of the certificate. - */ - certificateArn?: CertificateArn; - /** - * The ID of the certificate. - */ - certificateId?: CertificateId; - /** - * The certificate ID of the CA certificate used to sign this certificate. - */ - caCertificateId?: CertificateId; - /** - * The status of the certificate. - */ - status?: CertificateStatus; - /** - * The certificate data, in PEM format. - */ - certificatePem?: CertificatePem; - /** - * The ID of the AWS account that owns the certificate. - */ - ownedBy?: AwsAccountId; - /** - * The ID of the AWS account of the previous owner of the certificate. - */ - previousOwnedBy?: AwsAccountId; - /** - * The date and time the certificate was created. - */ - creationDate?: DateType; - /** - * The date and time the certificate was last modified. - */ - lastModifiedDate?: DateType; - /** - * The transfer data. - */ - transferData?: TransferData; - } - export type CertificateId = string; - export type CertificatePem = string; - export type CertificateSigningRequest = string; - export type CertificateStatus = "ACTIVE"|"INACTIVE"|"REVOKED"|"PENDING_TRANSFER"|"REGISTER_INACTIVE"|"PENDING_ACTIVATION"|string; - export type Certificates = Certificate[]; - export type ClientId = string; - export interface CloudwatchAlarmAction { - /** - * The IAM role that allows access to the CloudWatch alarm. - */ - roleArn: AwsArn; - /** - * The CloudWatch alarm name. - */ - alarmName: AlarmName; - /** - * The reason for the alarm change. - */ - stateReason: StateReason; - /** - * The value of the alarm state. Acceptable values are: OK, ALARM, INSUFFICIENT_DATA. - */ - stateValue: StateValue; - } - export interface CloudwatchMetricAction { - /** - * The IAM role that allows access to the CloudWatch metric. - */ - roleArn: AwsArn; - /** - * The CloudWatch metric namespace name. - */ - metricNamespace: MetricNamespace; - /** - * The CloudWatch metric name. - */ - metricName: MetricName; - /** - * The CloudWatch metric value. - */ - metricValue: MetricValue; - /** - * The metric unit supported by CloudWatch. - */ - metricUnit: MetricUnit; - /** - * An optional Unix timestamp. - */ - metricTimestamp?: MetricTimestamp; - } - export interface CreateCertificateFromCsrRequest { - /** - * The certificate signing request (CSR). - */ - certificateSigningRequest: CertificateSigningRequest; - /** - * Specifies whether the certificate is active. - */ - setAsActive?: SetAsActive; - } - export interface CreateCertificateFromCsrResponse { - /** - * The Amazon Resource Name (ARN) of the certificate. You can use the ARN as a principal for policy operations. - */ - certificateArn?: CertificateArn; - /** - * The ID of the certificate. Certificate management operations only take a certificateId. - */ - certificateId?: CertificateId; - /** - * The certificate data, in PEM format. - */ - certificatePem?: CertificatePem; - } - export interface CreateKeysAndCertificateRequest { - /** - * Specifies whether the certificate is active. - */ - setAsActive?: SetAsActive; - } - export interface CreateKeysAndCertificateResponse { - /** - * The ARN of the certificate. - */ - certificateArn?: CertificateArn; - /** - * The ID of the certificate. AWS IoT issues a default subject name for the certificate (for example, AWS IoT Certificate). - */ - certificateId?: CertificateId; - /** - * The certificate data, in PEM format. - */ - certificatePem?: CertificatePem; - /** - * The generated key pair. - */ - keyPair?: KeyPair; - } - export interface CreatePolicyRequest { - /** - * The policy name. - */ - policyName: PolicyName; - /** - * The JSON document that describes the policy. policyDocument must have a minimum length of 1, with a maximum length of 2048, excluding whitespace. - */ - policyDocument: PolicyDocument; - } - export interface CreatePolicyResponse { - /** - * The policy name. - */ - policyName?: PolicyName; - /** - * The policy ARN. - */ - policyArn?: PolicyArn; - /** - * The JSON document that describes the policy. - */ - policyDocument?: PolicyDocument; - /** - * The policy version ID. - */ - policyVersionId?: PolicyVersionId; - } - export interface CreatePolicyVersionRequest { - /** - * The policy name. - */ - policyName: PolicyName; - /** - * The JSON document that describes the policy. Minimum length of 1. Maximum length of 2048, excluding whitespaces - */ - policyDocument: PolicyDocument; - /** - * Specifies whether the policy version is set as the default. When this parameter is true, the new policy version becomes the operative version (that is, the version that is in effect for the certificates to which the policy is attached). - */ - setAsDefault?: SetAsDefault; - } - export interface CreatePolicyVersionResponse { - /** - * The policy ARN. - */ - policyArn?: PolicyArn; - /** - * The JSON document that describes the policy. - */ - policyDocument?: PolicyDocument; - /** - * The policy version ID. - */ - policyVersionId?: PolicyVersionId; - /** - * Specifies whether the policy version is the default. - */ - isDefaultVersion?: IsDefaultVersion; - } - export interface CreateThingRequest { - /** - * The name of the thing to create. - */ - thingName: ThingName; - /** - * The name of the thing type associated with the new thing. - */ - thingTypeName?: ThingTypeName; - /** - * The attribute payload, which consists of up to three name/value pairs in a JSON document. For example: {\"attributes\":{\"string1\":\"string2\"}} - */ - attributePayload?: AttributePayload; - } - export interface CreateThingResponse { - /** - * The name of the new thing. - */ - thingName?: ThingName; - /** - * The ARN of the new thing. - */ - thingArn?: ThingArn; - } - export interface CreateThingTypeRequest { - /** - * The name of the thing type. - */ - thingTypeName: ThingTypeName; - /** - * The ThingTypeProperties for the thing type to create. It contains information about the new thing type including a description, and a list of searchable thing attribute names. - */ - thingTypeProperties?: ThingTypeProperties; - } - export interface CreateThingTypeResponse { - /** - * The name of the thing type. - */ - thingTypeName?: ThingTypeName; - /** - * The Amazon Resource Name (ARN) of the thing type. - */ - thingTypeArn?: ThingTypeArn; - } - export interface CreateTopicRuleRequest { - /** - * The name of the rule. - */ - ruleName: RuleName; - /** - * The rule payload. - */ - topicRulePayload: TopicRulePayload; - } - export type CreatedAtDate = Date; - export type CreationDate = Date; - export type DateType = Date; - export interface DeleteCACertificateRequest { - /** - * The ID of the certificate to delete. - */ - certificateId: CertificateId; - } - export interface DeleteCACertificateResponse { - } - export interface DeleteCertificateRequest { - /** - * The ID of the certificate. - */ - certificateId: CertificateId; - } - export interface DeletePolicyRequest { - /** - * The name of the policy to delete. - */ - policyName: PolicyName; - } - export interface DeletePolicyVersionRequest { - /** - * The name of the policy. - */ - policyName: PolicyName; - /** - * The policy version ID. - */ - policyVersionId: PolicyVersionId; - } - export interface DeleteRegistrationCodeRequest { - } - export interface DeleteRegistrationCodeResponse { - } - export interface DeleteThingRequest { - /** - * The name of the thing to delete. - */ - thingName: ThingName; - /** - * The expected version of the thing record in the registry. If the version of the record in the registry does not match the expected version specified in the request, the DeleteThing request is rejected with a VersionConflictException. - */ - expectedVersion?: OptionalVersion; - } - export interface DeleteThingResponse { - } - export interface DeleteThingTypeRequest { - /** - * The name of the thing type. - */ - thingTypeName: ThingTypeName; - } - export interface DeleteThingTypeResponse { - } - export interface DeleteTopicRuleRequest { - /** - * The name of the rule. - */ - ruleName: RuleName; - } - export type DeliveryStreamName = string; - export interface DeprecateThingTypeRequest { - /** - * The name of the thing type to deprecate. - */ - thingTypeName: ThingTypeName; - /** - * Whether to undeprecate a deprecated thing type. If true, the thing type will not be deprecated anymore and you can associate it with things. - */ - undoDeprecate?: UndoDeprecate; - } - export interface DeprecateThingTypeResponse { - } - export type DeprecationDate = Date; - export interface DescribeCACertificateRequest { - /** - * The CA certificate identifier. - */ - certificateId: CertificateId; - } - export interface DescribeCACertificateResponse { - /** - * The CA certificate description. - */ - certificateDescription?: CACertificateDescription; - } - export interface DescribeCertificateRequest { - /** - * The ID of the certificate. - */ - certificateId: CertificateId; - } - export interface DescribeCertificateResponse { - /** - * The description of the certificate. - */ - certificateDescription?: CertificateDescription; - } - export interface DescribeEndpointRequest { - } - export interface DescribeEndpointResponse { - /** - * The endpoint. The format of the endpoint is as follows: identifier.iot.region.amazonaws.com. - */ - endpointAddress?: EndpointAddress; - } - export interface DescribeThingRequest { - /** - * The name of the thing. - */ - thingName: ThingName; - } - export interface DescribeThingResponse { - /** - * The default client ID. - */ - defaultClientId?: ClientId; - /** - * The name of the thing. - */ - thingName?: ThingName; - /** - * The thing type name. - */ - thingTypeName?: ThingTypeName; - /** - * The thing attributes. - */ - attributes?: Attributes; - /** - * The current version of the thing record in the registry. To avoid unintentional changes to the information in the registry, you can pass the version information in the expectedVersion parameter of the UpdateThing and DeleteThing calls. - */ - version?: Version; - } - export interface DescribeThingTypeRequest { - /** - * The name of the thing type. - */ - thingTypeName: ThingTypeName; - } - export interface DescribeThingTypeResponse { - /** - * The name of the thing type. - */ - thingTypeName?: ThingTypeName; - /** - * The ThingTypeProperties contains information about the thing type including description, and a list of searchable thing attribute names. - */ - thingTypeProperties?: ThingTypeProperties; - /** - * The ThingTypeMetadata contains additional information about the thing type including: creation date and time, a value indicating whether the thing type is deprecated, and a date and time when it was deprecated. - */ - thingTypeMetadata?: ThingTypeMetadata; - } - export type Description = string; - export interface DetachPrincipalPolicyRequest { - /** - * The name of the policy to detach. - */ - policyName: PolicyName; - /** - * The principal. If the principal is a certificate, specify the certificate ARN. If the principal is an Amazon Cognito identity, specify the identity ID. - */ - principal: Principal; - } - export interface DetachThingPrincipalRequest { - /** - * The name of the thing. - */ - thingName: ThingName; - /** - * If the principal is a certificate, this value must be ARN of the certificate. If the principal is an Amazon Cognito identity, this value must be the ID of the Amazon Cognito identity. - */ - principal: Principal; - } - export interface DetachThingPrincipalResponse { - } - export interface DisableTopicRuleRequest { - /** - * The name of the rule to disable. - */ - ruleName: RuleName; - } - export interface DynamoDBAction { - /** - * The name of the DynamoDB table. - */ - tableName: TableName; - /** - * The ARN of the IAM role that grants access to the DynamoDB table. - */ - roleArn: AwsArn; - /** - * The type of operation to be performed. This follows the substitution template, so it can be ${operation}, but the substitution must result in one of the following: INSERT, UPDATE, or DELETE. - */ - operation?: DynamoOperation; - /** - * The hash key name. - */ - hashKeyField: HashKeyField; - /** - * The hash key value. - */ - hashKeyValue: HashKeyValue; - /** - * The hash key type. Valid values are "STRING" or "NUMBER" - */ - hashKeyType?: DynamoKeyType; - /** - * The range key name. - */ - rangeKeyField?: RangeKeyField; - /** - * The range key value. - */ - rangeKeyValue?: RangeKeyValue; - /** - * The range key type. Valid values are "STRING" or "NUMBER" - */ - rangeKeyType?: DynamoKeyType; - /** - * The action payload. This name can be customized. - */ - payloadField?: PayloadField; - } - export interface DynamoDBv2Action { - /** - * The ARN of the IAM role that grants access to the DynamoDB table. - */ - roleArn?: AwsArn; - /** - * Specifies the DynamoDB table to which the message data will be written. For example: { "dynamoDBv2": { "roleArn": "aws:iam:12341251:my-role" "putItem": { "tableName": "my-table" } } } Each attribute in the message payload will be written to a separate column in the DynamoDB database. - */ - putItem?: PutItemInput; - } - export type DynamoKeyType = "STRING"|"NUMBER"|string; - export type DynamoOperation = string; - export interface ElasticsearchAction { - /** - * The IAM role ARN that has access to Elasticsearch. - */ - roleArn: AwsArn; - /** - * The endpoint of your Elasticsearch domain. - */ - endpoint: ElasticsearchEndpoint; - /** - * The Elasticsearch index where you want to store your data. - */ - index: ElasticsearchIndex; - /** - * The type of document you are storing. - */ - type: ElasticsearchType; - /** - * The unique identifier for the document you are storing. - */ - id: ElasticsearchId; - } - export type ElasticsearchEndpoint = string; - export type ElasticsearchId = string; - export type ElasticsearchIndex = string; - export type ElasticsearchType = string; - export interface EnableTopicRuleRequest { - /** - * The name of the topic rule to enable. - */ - ruleName: RuleName; - } - export type EndpointAddress = string; - export interface FirehoseAction { - /** - * The IAM role that grants access to the Amazon Kinesis Firehost stream. - */ - roleArn: AwsArn; - /** - * The delivery stream name. - */ - deliveryStreamName: DeliveryStreamName; - /** - * A character separator that will be used to separate records written to the Firehose stream. Valid values are: '\n' (newline), '\t' (tab), '\r\n' (Windows newline), ',' (comma). - */ - separator?: FirehoseSeparator; - } - export type FirehoseSeparator = string; - export type Flag = boolean; - export type FunctionArn = string; - export interface GetLoggingOptionsRequest { - } - export interface GetLoggingOptionsResponse { - /** - * The ARN of the IAM role that grants access. - */ - roleArn?: AwsArn; - /** - * The logging level. - */ - logLevel?: LogLevel; - } - export interface GetPolicyRequest { - /** - * The name of the policy. - */ - policyName: PolicyName; - } - export interface GetPolicyResponse { - /** - * The policy name. - */ - policyName?: PolicyName; - /** - * The policy ARN. - */ - policyArn?: PolicyArn; - /** - * The JSON document that describes the policy. - */ - policyDocument?: PolicyDocument; - /** - * The default policy version ID. - */ - defaultVersionId?: PolicyVersionId; - } - export interface GetPolicyVersionRequest { - /** - * The name of the policy. - */ - policyName: PolicyName; - /** - * The policy version ID. - */ - policyVersionId: PolicyVersionId; - } - export interface GetPolicyVersionResponse { - /** - * The policy ARN. - */ - policyArn?: PolicyArn; - /** - * The policy name. - */ - policyName?: PolicyName; - /** - * The JSON document that describes the policy. - */ - policyDocument?: PolicyDocument; - /** - * The policy version ID. - */ - policyVersionId?: PolicyVersionId; - /** - * Specifies whether the policy version is the default. - */ - isDefaultVersion?: IsDefaultVersion; - } - export interface GetRegistrationCodeRequest { - } - export interface GetRegistrationCodeResponse { - /** - * The CA certificate registration code. - */ - registrationCode?: RegistrationCode; - } - export interface GetTopicRuleRequest { - /** - * The name of the rule. - */ - ruleName: RuleName; - } - export interface GetTopicRuleResponse { - /** - * The rule ARN. - */ - ruleArn?: RuleArn; - /** - * The rule. - */ - rule?: TopicRule; - } - export type HashKeyField = string; - export type HashKeyValue = string; - export type IsDefaultVersion = boolean; - export type IsDisabled = boolean; - export type Key = string; - export interface KeyPair { - /** - * The public key. - */ - PublicKey?: PublicKey; - /** - * The private key. - */ - PrivateKey?: PrivateKey; - } - export interface KinesisAction { - /** - * The ARN of the IAM role that grants access to the Amazon Kinesis stream. - */ - roleArn: AwsArn; - /** - * The name of the Amazon Kinesis stream. - */ - streamName: StreamName; - /** - * The partition key. - */ - partitionKey?: PartitionKey; - } - export interface LambdaAction { - /** - * The ARN of the Lambda function. - */ - functionArn: FunctionArn; - } - export interface ListCACertificatesRequest { - /** - * The result page size. - */ - pageSize?: PageSize; - /** - * The marker for the next set of results. - */ - marker?: Marker; - /** - * Determines the order of the results. - */ - ascendingOrder?: AscendingOrder; - } - export interface ListCACertificatesResponse { - /** - * The CA certificates registered in your AWS account. - */ - certificates?: CACertificates; - /** - * The current position within the list of CA certificates. - */ - nextMarker?: Marker; - } - export interface ListCertificatesByCARequest { - /** - * The ID of the CA certificate. This operation will list all registered device certificate that were signed by this CA certificate. - */ - caCertificateId: CertificateId; - /** - * The result page size. - */ - pageSize?: PageSize; - /** - * The marker for the next set of results. - */ - marker?: Marker; - /** - * Specifies the order for results. If True, the results are returned in ascending order, based on the creation date. - */ - ascendingOrder?: AscendingOrder; - } - export interface ListCertificatesByCAResponse { - /** - * The device certificates signed by the specified CA certificate. - */ - certificates?: Certificates; - /** - * The marker for the next set of results, or null if there are no additional results. - */ - nextMarker?: Marker; - } - export interface ListCertificatesRequest { - /** - * The result page size. - */ - pageSize?: PageSize; - /** - * The marker for the next set of results. - */ - marker?: Marker; - /** - * Specifies the order for results. If True, the results are returned in ascending order, based on the creation date. - */ - ascendingOrder?: AscendingOrder; - } - export interface ListCertificatesResponse { - /** - * The descriptions of the certificates. - */ - certificates?: Certificates; - /** - * The marker for the next set of results, or null if there are no additional results. - */ - nextMarker?: Marker; - } - export interface ListOutgoingCertificatesRequest { - /** - * The result page size. - */ - pageSize?: PageSize; - /** - * The marker for the next set of results. - */ - marker?: Marker; - /** - * Specifies the order for results. If True, the results are returned in ascending order, based on the creation date. - */ - ascendingOrder?: AscendingOrder; - } - export interface ListOutgoingCertificatesResponse { - /** - * The certificates that are being transfered but not yet accepted. - */ - outgoingCertificates?: OutgoingCertificates; - /** - * The marker for the next set of results. - */ - nextMarker?: Marker; - } - export interface ListPoliciesRequest { - /** - * The marker for the next set of results. - */ - marker?: Marker; - /** - * The result page size. - */ - pageSize?: PageSize; - /** - * Specifies the order for results. If true, the results are returned in ascending creation order. - */ - ascendingOrder?: AscendingOrder; - } - export interface ListPoliciesResponse { - /** - * The descriptions of the policies. - */ - policies?: Policies; - /** - * The marker for the next set of results, or null if there are no additional results. - */ - nextMarker?: Marker; - } - export interface ListPolicyPrincipalsRequest { - /** - * The policy name. - */ - policyName: PolicyName; - /** - * The marker for the next set of results. - */ - marker?: Marker; - /** - * The result page size. - */ - pageSize?: PageSize; - /** - * Specifies the order for results. If true, the results are returned in ascending creation order. - */ - ascendingOrder?: AscendingOrder; - } - export interface ListPolicyPrincipalsResponse { - /** - * The descriptions of the principals. - */ - principals?: Principals; - /** - * The marker for the next set of results, or null if there are no additional results. - */ - nextMarker?: Marker; - } - export interface ListPolicyVersionsRequest { - /** - * The policy name. - */ - policyName: PolicyName; - } - export interface ListPolicyVersionsResponse { - /** - * The policy versions. - */ - policyVersions?: PolicyVersions; - } - export interface ListPrincipalPoliciesRequest { - /** - * The principal. - */ - principal: Principal; - /** - * The marker for the next set of results. - */ - marker?: Marker; - /** - * The result page size. - */ - pageSize?: PageSize; - /** - * Specifies the order for results. If true, results are returned in ascending creation order. - */ - ascendingOrder?: AscendingOrder; - } - export interface ListPrincipalPoliciesResponse { - /** - * The policies. - */ - policies?: Policies; - /** - * The marker for the next set of results, or null if there are no additional results. - */ - nextMarker?: Marker; - } - export interface ListPrincipalThingsRequest { - /** - * The token for the next set of results, or null if there are no additional results. - */ - nextToken?: NextToken; - /** - * The maximum number of results to return in this operation. - */ - maxResults?: RegistryMaxResults; - /** - * The principal. - */ - principal: Principal; - } - export interface ListPrincipalThingsResponse { - /** - * The things. - */ - things?: ThingNameList; - /** - * The token for the next set of results, or null if there are no additional results. - */ - nextToken?: NextToken; - } - export interface ListThingPrincipalsRequest { - /** - * The name of the thing. - */ - thingName: ThingName; - } - export interface ListThingPrincipalsResponse { - /** - * The principals associated with the thing. - */ - principals?: Principals; - } - export interface ListThingTypesRequest { - /** - * The token for the next set of results, or null if there are no additional results. - */ - nextToken?: NextToken; - /** - * The maximum number of results to return in this operation. - */ - maxResults?: RegistryMaxResults; - /** - * The name of the thing type. - */ - thingTypeName?: ThingTypeName; - } - export interface ListThingTypesResponse { - /** - * The thing types. - */ - thingTypes?: ThingTypeList; - /** - * The token for the next set of results, or null if there are no additional results. - */ - nextToken?: NextToken; - } - export interface ListThingsRequest { - /** - * The token for the next set of results, or null if there are no additional results. - */ - nextToken?: NextToken; - /** - * The maximum number of results to return in this operation. - */ - maxResults?: RegistryMaxResults; - /** - * The attribute name used to search for things. - */ - attributeName?: AttributeName; - /** - * The attribute value used to search for things. - */ - attributeValue?: AttributeValue; - /** - * The name of the thing type used to search for things. - */ - thingTypeName?: ThingTypeName; - } - export interface ListThingsResponse { - /** - * The things. - */ - things?: ThingAttributeList; - /** - * The token for the next set of results, or null if there are no additional results. - */ - nextToken?: NextToken; - } - export interface ListTopicRulesRequest { - /** - * The topic. - */ - topic?: Topic; - /** - * The maximum number of results to return. - */ - maxResults?: MaxResults; - /** - * A token used to retrieve the next value. - */ - nextToken?: NextToken; - /** - * Specifies whether the rule is disabled. - */ - ruleDisabled?: IsDisabled; - } - export interface ListTopicRulesResponse { - /** - * The rules. - */ - rules?: TopicRuleList; - /** - * A token used to retrieve the next value. - */ - nextToken?: NextToken; - } - export type LogLevel = "DEBUG"|"INFO"|"ERROR"|"WARN"|"DISABLED"|string; - export interface LoggingOptionsPayload { - /** - * The ARN of the IAM role that grants access. - */ - roleArn: AwsArn; - /** - * The logging level. - */ - logLevel?: LogLevel; - } - export type Marker = string; - export type MaxResults = number; - export type Message = string; - export type MessageFormat = "RAW"|"JSON"|string; - export type MetricName = string; - export type MetricNamespace = string; - export type MetricTimestamp = string; - export type MetricUnit = string; - export type MetricValue = string; - export type NextToken = string; - export type OptionalVersion = number; - export interface OutgoingCertificate { - /** - * The certificate ARN. - */ - certificateArn?: CertificateArn; - /** - * The certificate ID. - */ - certificateId?: CertificateId; - /** - * The AWS account to which the transfer was made. - */ - transferredTo?: AwsAccountId; - /** - * The date the transfer was initiated. - */ - transferDate?: DateType; - /** - * The transfer message. - */ - transferMessage?: Message; - /** - * The certificate creation date. - */ - creationDate?: DateType; - } - export type OutgoingCertificates = OutgoingCertificate[]; - export type PageSize = number; - export type PartitionKey = string; - export type PayloadField = string; - export type Policies = Policy[]; - export interface Policy { - /** - * The policy name. - */ - policyName?: PolicyName; - /** - * The policy ARN. - */ - policyArn?: PolicyArn; - } - export type PolicyArn = string; - export type PolicyDocument = string; - export type PolicyName = string; - export interface PolicyVersion { - /** - * The policy version ID. - */ - versionId?: PolicyVersionId; - /** - * Specifies whether the policy version is the default. - */ - isDefaultVersion?: IsDefaultVersion; - /** - * The date and time the policy was created. - */ - createDate?: DateType; - } - export type PolicyVersionId = string; - export type PolicyVersions = PolicyVersion[]; - export type Principal = string; - export type PrincipalArn = string; - export type Principals = PrincipalArn[]; - export type PrivateKey = string; - export type PublicKey = string; - export interface PutItemInput { - /** - * The table where the message data will be written - */ - tableName: TableName; - } - export type QueueUrl = string; - export type RangeKeyField = string; - export type RangeKeyValue = string; - export interface RegisterCACertificateRequest { - /** - * The CA certificate. - */ - caCertificate: CertificatePem; - /** - * The private key verification certificate. - */ - verificationCertificate: CertificatePem; - /** - * A boolean value that specifies if the CA certificate is set to active. - */ - setAsActive?: SetAsActive; - /** - * Allows this CA certificate to be used for auto registration of device certificates. - */ - allowAutoRegistration?: AllowAutoRegistration; - } - export interface RegisterCACertificateResponse { - /** - * The CA certificate ARN. - */ - certificateArn?: CertificateArn; - /** - * The CA certificate identifier. - */ - certificateId?: CertificateId; - } - export interface RegisterCertificateRequest { - /** - * The certificate data, in PEM format. - */ - certificatePem: CertificatePem; - /** - * The CA certificate used to sign the device certificate being registered. - */ - caCertificatePem?: CertificatePem; - /** - * A boolean value that specifies if the CA certificate is set to active. - */ - setAsActive?: SetAsActiveFlag; - /** - * The status of the register certificate request. - */ - status?: CertificateStatus; - } - export interface RegisterCertificateResponse { - /** - * The certificate ARN. - */ - certificateArn?: CertificateArn; - /** - * The certificate identifier. - */ - certificateId?: CertificateId; - } - export type RegistrationCode = string; - export type RegistryMaxResults = number; - export interface RejectCertificateTransferRequest { - /** - * The ID of the certificate. - */ - certificateId: CertificateId; - /** - * The reason the certificate transfer was rejected. - */ - rejectReason?: Message; - } - export type RemoveThingType = boolean; - export interface ReplaceTopicRuleRequest { - /** - * The name of the rule. - */ - ruleName: RuleName; - /** - * The rule payload. - */ - topicRulePayload: TopicRulePayload; - } - export interface RepublishAction { - /** - * The ARN of the IAM role that grants access. - */ - roleArn: AwsArn; - /** - * The name of the MQTT topic. - */ - topic: TopicPattern; - } - export type RuleArn = string; - export type RuleName = string; - export interface S3Action { - /** - * The ARN of the IAM role that grants access. - */ - roleArn: AwsArn; - /** - * The Amazon S3 bucket. - */ - bucketName: BucketName; - /** - * The object key. - */ - key: Key; - /** - * The Amazon S3 canned ACL that controls access to the object identified by the object key. For more information, see S3 canned ACLs. - */ - cannedAcl?: CannedAccessControlList; - } - export type SQL = string; - export interface SalesforceAction { - /** - * The token used to authenticate access to the Salesforce IoT Cloud Input Stream. The token is available from the Salesforce IoT Cloud platform after creation of the Input Stream. - */ - token: SalesforceToken; - /** - * The URL exposed by the Salesforce IoT Cloud Input Stream. The URL is available from the Salesforce IoT Cloud platform after creation of the Input Stream. - */ - url: SalesforceEndpoint; - } - export type SalesforceEndpoint = string; - export type SalesforceToken = string; - export type SearchableAttributes = AttributeName[]; - export type SetAsActive = boolean; - export type SetAsActiveFlag = boolean; - export type SetAsDefault = boolean; - export interface SetDefaultPolicyVersionRequest { - /** - * The policy name. - */ - policyName: PolicyName; - /** - * The policy version ID. - */ - policyVersionId: PolicyVersionId; - } - export interface SetLoggingOptionsRequest { - /** - * The logging options payload. - */ - loggingOptionsPayload: LoggingOptionsPayload; - } - export interface SnsAction { - /** - * The ARN of the SNS topic. - */ - targetArn: AwsArn; - /** - * The ARN of the IAM role that grants access. - */ - roleArn: AwsArn; - /** - * The message format of the message to publish. Optional. Accepted values are "JSON" and "RAW". The default value of the attribute is "RAW". SNS uses this setting to determine if the payload should be parsed and relevant platform-specific bits of the payload should be extracted. To read more about SNS message formats, see http://docs.aws.amazon.com/sns/latest/dg/json-formats.html refer to their official documentation. - */ - messageFormat?: MessageFormat; - } - export interface SqsAction { - /** - * The ARN of the IAM role that grants access. - */ - roleArn: AwsArn; - /** - * The URL of the Amazon SQS queue. - */ - queueUrl: QueueUrl; - /** - * Specifies whether to use Base64 encoding. - */ - useBase64?: UseBase64; - } - export type StateReason = string; - export type StateValue = string; - export type StreamName = string; - export type TableName = string; - export type ThingArn = string; - export interface ThingAttribute { - /** - * The name of the thing. - */ - thingName?: ThingName; - /** - * The name of the thing type, if the thing has been associated with a type. - */ - thingTypeName?: ThingTypeName; - /** - * A list of thing attributes which are name-value pairs. - */ - attributes?: Attributes; - /** - * The version of the thing record in the registry. - */ - version?: Version; - } - export type ThingAttributeList = ThingAttribute[]; - export type ThingName = string; - export type ThingNameList = ThingName[]; - export type ThingTypeArn = string; - export interface ThingTypeDefinition { - /** - * The name of the thing type. - */ - thingTypeName?: ThingTypeName; - /** - * The ThingTypeProperties for the thing type. - */ - thingTypeProperties?: ThingTypeProperties; - /** - * The ThingTypeMetadata contains additional information about the thing type including: creation date and time, a value indicating whether the thing type is deprecated, and a date and time when it was deprecated. - */ - thingTypeMetadata?: ThingTypeMetadata; - } - export type ThingTypeDescription = string; - export type ThingTypeList = ThingTypeDefinition[]; - export interface ThingTypeMetadata { - /** - * Whether the thing type is deprecated. If true, no new things could be associated with this type. - */ - deprecated?: Boolean; - /** - * The date and time when the thing type was deprecated. - */ - deprecationDate?: DeprecationDate; - /** - * The date and time when the thing type was created. - */ - creationDate?: CreationDate; - } - export type ThingTypeName = string; - export interface ThingTypeProperties { - /** - * The description of the thing type. - */ - thingTypeDescription?: ThingTypeDescription; - /** - * A list of searchable thing attribute names. - */ - searchableAttributes?: SearchableAttributes; - } - export type Topic = string; - export type TopicPattern = string; - export interface TopicRule { - /** - * The name of the rule. - */ - ruleName?: RuleName; - /** - * The SQL statement used to query the topic. When using a SQL query with multiple lines, be sure to escape the newline characters. - */ - sql?: SQL; - /** - * The description of the rule. - */ - description?: Description; - /** - * The date and time the rule was created. - */ - createdAt?: CreatedAtDate; - /** - * The actions associated with the rule. - */ - actions?: ActionList; - /** - * Specifies whether the rule is disabled. - */ - ruleDisabled?: IsDisabled; - /** - * The version of the SQL rules engine to use when evaluating the rule. - */ - awsIotSqlVersion?: AwsIotSqlVersion; - } - export type TopicRuleList = TopicRuleListItem[]; - export interface TopicRuleListItem { - /** - * The rule ARN. - */ - ruleArn?: RuleArn; - /** - * The name of the rule. - */ - ruleName?: RuleName; - /** - * The pattern for the topic names that apply. - */ - topicPattern?: TopicPattern; - /** - * The date and time the rule was created. - */ - createdAt?: CreatedAtDate; - /** - * Specifies whether the rule is disabled. - */ - ruleDisabled?: IsDisabled; - } - export interface TopicRulePayload { - /** - * The SQL statement used to query the topic. For more information, see AWS IoT SQL Reference in the AWS IoT Developer Guide. - */ - sql: SQL; - /** - * The description of the rule. - */ - description?: Description; - /** - * The actions associated with the rule. - */ - actions: ActionList; - /** - * Specifies whether the rule is disabled. - */ - ruleDisabled?: IsDisabled; - /** - * The version of the SQL rules engine to use when evaluating the rule. - */ - awsIotSqlVersion?: AwsIotSqlVersion; - } - export interface TransferCertificateRequest { - /** - * The ID of the certificate. - */ - certificateId: CertificateId; - /** - * The AWS account. - */ - targetAwsAccount: AwsAccountId; - /** - * The transfer message. - */ - transferMessage?: Message; - } - export interface TransferCertificateResponse { - /** - * The ARN of the certificate. - */ - transferredCertificateArn?: CertificateArn; - } - export interface TransferData { - /** - * The transfer message. - */ - transferMessage?: Message; - /** - * The reason why the transfer was rejected. - */ - rejectReason?: Message; - /** - * The date the transfer took place. - */ - transferDate?: DateType; - /** - * The date the transfer was accepted. - */ - acceptDate?: DateType; - /** - * The date the transfer was rejected. - */ - rejectDate?: DateType; - } - export type UndoDeprecate = boolean; - export interface UpdateCACertificateRequest { - /** - * The CA certificate identifier. - */ - certificateId: CertificateId; - /** - * The updated status of the CA certificate. Note: The status value REGISTER_INACTIVE is deprecated and should not be used. - */ - newStatus?: CACertificateStatus; - /** - * The new value for the auto registration status. Valid values are: "ENABLE" or "DISABLE". - */ - newAutoRegistrationStatus?: AutoRegistrationStatus; - } - export interface UpdateCertificateRequest { - /** - * The ID of the certificate. - */ - certificateId: CertificateId; - /** - * The new status. Note: Setting the status to PENDING_TRANSFER will result in an exception being thrown. PENDING_TRANSFER is a status used internally by AWS IoT. It is not intended for developer use. Note: The status value REGISTER_INACTIVE is deprecated and should not be used. - */ - newStatus: CertificateStatus; - } - export interface UpdateThingRequest { - /** - * The name of the thing to update. - */ - thingName: ThingName; - /** - * The name of the thing type. - */ - thingTypeName?: ThingTypeName; - /** - * A list of thing attributes, a JSON string containing name-value pairs. For example: {\"attributes\":{\"name1\":\"value2\"}} This data is used to add new attributes or update existing attributes. - */ - attributePayload?: AttributePayload; - /** - * The expected version of the thing record in the registry. If the version of the record in the registry does not match the expected version specified in the request, the UpdateThing request is rejected with a VersionConflictException. - */ - expectedVersion?: OptionalVersion; - /** - * Remove a thing type association. If true, the assocation is removed. - */ - removeThingType?: RemoveThingType; - } - export interface UpdateThingResponse { - } - export type UseBase64 = boolean; - export type Version = number; - export type errorMessage = string; - export type resourceArn = string; - export type resourceId = string; - /** - * A string in YYYY-MM-DD format that represents the latest possible API version that can be used in this service. Specify 'latest' to use the latest possible version. - */ - export type apiVersion = "2015-05-28"|"latest"|string; - export interface ClientApiVersions { - /** - * A string in YYYY-MM-DD format that represents the latest possible API version that can be used in this service. Specify 'latest' to use the latest possible version. - */ - apiVersion?: apiVersion; - } - export type ClientConfiguration = ServiceConfigurationOptions & ClientApiVersions; - /** - * Contains interfaces for use with the Iot client. - */ - export import Types = Iot; -} -export = Iot; diff --git a/workshops/monte-carlo-on-ec2-spot-fleet/src/web/node_modules/aws-sdk/clients/iot.js b/workshops/monte-carlo-on-ec2-spot-fleet/src/web/node_modules/aws-sdk/clients/iot.js deleted file mode 100644 index 05ca17a9..00000000 --- a/workshops/monte-carlo-on-ec2-spot-fleet/src/web/node_modules/aws-sdk/clients/iot.js +++ /dev/null @@ -1,18 +0,0 @@ -require('../lib/node_loader'); -var AWS = require('../lib/core'); -var Service = AWS.Service; -var apiLoader = AWS.apiLoader; - -apiLoader.services['iot'] = {}; -AWS.Iot = Service.defineService('iot', ['2015-05-28']); -Object.defineProperty(apiLoader.services['iot'], '2015-05-28', { - get: function get() { - var model = require('../apis/iot-2015-05-28.min.json'); - model.paginators = require('../apis/iot-2015-05-28.paginators.json').pagination; - return model; - }, - enumerable: true, - configurable: true -}); - -module.exports = AWS.Iot; diff --git a/workshops/monte-carlo-on-ec2-spot-fleet/src/web/node_modules/aws-sdk/clients/iotdata.d.ts b/workshops/monte-carlo-on-ec2-spot-fleet/src/web/node_modules/aws-sdk/clients/iotdata.d.ts deleted file mode 100644 index 8d921ae2..00000000 --- a/workshops/monte-carlo-on-ec2-spot-fleet/src/web/node_modules/aws-sdk/clients/iotdata.d.ts +++ /dev/null @@ -1,125 +0,0 @@ -import {Request} from '../lib/request'; -import {Response} from '../lib/response'; -import {AWSError} from '../lib/error'; -import {Service} from '../lib/service'; -import {ServiceConfigurationOptions} from '../lib/service'; -import {ConfigBase as Config} from '../lib/config'; -interface Blob {} -declare class IotData extends Service { - /** - * Constructs a service object. This object has one method for each API operation. - */ - constructor(options?: IotData.Types.ClientConfiguration) - config: Config & IotData.Types.ClientConfiguration; - /** - * Deletes the thing shadow for the specified thing. For more information, see DeleteThingShadow in the AWS IoT Developer Guide. - */ - deleteThingShadow(params: IotData.Types.DeleteThingShadowRequest, callback?: (err: AWSError, data: IotData.Types.DeleteThingShadowResponse) => void): Request; - /** - * Deletes the thing shadow for the specified thing. For more information, see DeleteThingShadow in the AWS IoT Developer Guide. - */ - deleteThingShadow(callback?: (err: AWSError, data: IotData.Types.DeleteThingShadowResponse) => void): Request; - /** - * Gets the thing shadow for the specified thing. For more information, see GetThingShadow in the AWS IoT Developer Guide. - */ - getThingShadow(params: IotData.Types.GetThingShadowRequest, callback?: (err: AWSError, data: IotData.Types.GetThingShadowResponse) => void): Request; - /** - * Gets the thing shadow for the specified thing. For more information, see GetThingShadow in the AWS IoT Developer Guide. - */ - getThingShadow(callback?: (err: AWSError, data: IotData.Types.GetThingShadowResponse) => void): Request; - /** - * Publishes state information. For more information, see HTTP Protocol in the AWS IoT Developer Guide. - */ - publish(params: IotData.Types.PublishRequest, callback?: (err: AWSError, data: {}) => void): Request<{}, AWSError>; - /** - * Publishes state information. For more information, see HTTP Protocol in the AWS IoT Developer Guide. - */ - publish(callback?: (err: AWSError, data: {}) => void): Request<{}, AWSError>; - /** - * Updates the thing shadow for the specified thing. For more information, see UpdateThingShadow in the AWS IoT Developer Guide. - */ - updateThingShadow(params: IotData.Types.UpdateThingShadowRequest, callback?: (err: AWSError, data: IotData.Types.UpdateThingShadowResponse) => void): Request; - /** - * Updates the thing shadow for the specified thing. For more information, see UpdateThingShadow in the AWS IoT Developer Guide. - */ - updateThingShadow(callback?: (err: AWSError, data: IotData.Types.UpdateThingShadowResponse) => void): Request; -} -declare namespace IotData { - export interface DeleteThingShadowRequest { - /** - * The name of the thing. - */ - thingName: ThingName; - } - export interface DeleteThingShadowResponse { - /** - * The state information, in JSON format. - */ - payload: JsonDocument; - } - export type ErrorMessage = string; - export interface GetThingShadowRequest { - /** - * The name of the thing. - */ - thingName: ThingName; - } - export interface GetThingShadowResponse { - /** - * The state information, in JSON format. - */ - payload?: JsonDocument; - } - export type JsonDocument = Buffer|Uint8Array|Blob|string; - export type Payload = Buffer|Uint8Array|Blob|string; - export interface PublishRequest { - /** - * The name of the MQTT topic. - */ - topic: Topic; - /** - * The Quality of Service (QoS) level. - */ - qos?: Qos; - /** - * The state information, in JSON format. - */ - payload?: Payload; - } - export type Qos = number; - export type ThingName = string; - export type Topic = string; - export interface UpdateThingShadowRequest { - /** - * The name of the thing. - */ - thingName: ThingName; - /** - * The state information, in JSON format. - */ - payload: JsonDocument; - } - export interface UpdateThingShadowResponse { - /** - * The state information, in JSON format. - */ - payload?: JsonDocument; - } - export type errorMessage = string; - /** - * A string in YYYY-MM-DD format that represents the latest possible API version that can be used in this service. Specify 'latest' to use the latest possible version. - */ - export type apiVersion = "2015-05-28"|"latest"|string; - export interface ClientApiVersions { - /** - * A string in YYYY-MM-DD format that represents the latest possible API version that can be used in this service. Specify 'latest' to use the latest possible version. - */ - apiVersion?: apiVersion; - } - export type ClientConfiguration = ServiceConfigurationOptions & ClientApiVersions; - /** - * Contains interfaces for use with the IotData client. - */ - export import Types = IotData; -} -export = IotData; diff --git a/workshops/monte-carlo-on-ec2-spot-fleet/src/web/node_modules/aws-sdk/clients/iotdata.js b/workshops/monte-carlo-on-ec2-spot-fleet/src/web/node_modules/aws-sdk/clients/iotdata.js deleted file mode 100644 index 1df465fb..00000000 --- a/workshops/monte-carlo-on-ec2-spot-fleet/src/web/node_modules/aws-sdk/clients/iotdata.js +++ /dev/null @@ -1,18 +0,0 @@ -require('../lib/node_loader'); -var AWS = require('../lib/core'); -var Service = AWS.Service; -var apiLoader = AWS.apiLoader; - -apiLoader.services['iotdata'] = {}; -AWS.IotData = Service.defineService('iotdata', ['2015-05-28']); -require('../lib/services/iotdata'); -Object.defineProperty(apiLoader.services['iotdata'], '2015-05-28', { - get: function get() { - var model = require('../apis/iot-data-2015-05-28.min.json'); - return model; - }, - enumerable: true, - configurable: true -}); - -module.exports = AWS.IotData; diff --git a/workshops/monte-carlo-on-ec2-spot-fleet/src/web/node_modules/aws-sdk/clients/kinesis.d.ts b/workshops/monte-carlo-on-ec2-spot-fleet/src/web/node_modules/aws-sdk/clients/kinesis.d.ts deleted file mode 100644 index 02821c95..00000000 --- a/workshops/monte-carlo-on-ec2-spot-fleet/src/web/node_modules/aws-sdk/clients/kinesis.d.ts +++ /dev/null @@ -1,769 +0,0 @@ -import {Request} from '../lib/request'; -import {Response} from '../lib/response'; -import {AWSError} from '../lib/error'; -import {Service} from '../lib/service'; -import {ServiceConfigurationOptions} from '../lib/service'; -import {ConfigBase as Config} from '../lib/config'; -interface Blob {} -declare class Kinesis extends Service { - /** - * Constructs a service object. This object has one method for each API operation. - */ - constructor(options?: Kinesis.Types.ClientConfiguration) - config: Config & Kinesis.Types.ClientConfiguration; - /** - * Adds or updates tags for the specified Amazon Kinesis stream. Each stream can have up to 10 tags. If tags have already been assigned to the stream, AddTagsToStream overwrites any existing tags that correspond to the specified tag keys. - */ - addTagsToStream(params: Kinesis.Types.AddTagsToStreamInput, callback?: (err: AWSError, data: {}) => void): Request<{}, AWSError>; - /** - * Adds or updates tags for the specified Amazon Kinesis stream. Each stream can have up to 10 tags. If tags have already been assigned to the stream, AddTagsToStream overwrites any existing tags that correspond to the specified tag keys. - */ - addTagsToStream(callback?: (err: AWSError, data: {}) => void): Request<{}, AWSError>; - /** - * Creates an Amazon Kinesis stream. A stream captures and transports data records that are continuously emitted from different data sources or producers. Scale-out within a stream is explicitly supported by means of shards, which are uniquely identified groups of data records in a stream. You specify and control the number of shards that a stream is composed of. Each shard can support reads up to 5 transactions per second, up to a maximum data read total of 2 MB per second. Each shard can support writes up to 1,000 records per second, up to a maximum data write total of 1 MB per second. You can add shards to a stream if the amount of data input increases and you can remove shards if the amount of data input decreases. The stream name identifies the stream. The name is scoped to the AWS account used by the application. It is also scoped by region. That is, two streams in two different accounts can have the same name, and two streams in the same account, but in two different regions, can have the same name. CreateStream is an asynchronous operation. Upon receiving a CreateStream request, Amazon Kinesis immediately returns and sets the stream status to CREATING. After the stream is created, Amazon Kinesis sets the stream status to ACTIVE. You should perform read and write operations only on an ACTIVE stream. You receive a LimitExceededException when making a CreateStream request if you try to do one of the following: Have more than five streams in the CREATING state at any point in time. Create more shards than are authorized for your account. For the default shard limit for an AWS account, see Streams Limits in the Amazon Kinesis Streams Developer Guide. If you need to increase this limit, contact AWS Support. You can use DescribeStream to check the stream status, which is returned in StreamStatus. CreateStream has a limit of 5 transactions per second per account. - */ - createStream(params: Kinesis.Types.CreateStreamInput, callback?: (err: AWSError, data: {}) => void): Request<{}, AWSError>; - /** - * Creates an Amazon Kinesis stream. A stream captures and transports data records that are continuously emitted from different data sources or producers. Scale-out within a stream is explicitly supported by means of shards, which are uniquely identified groups of data records in a stream. You specify and control the number of shards that a stream is composed of. Each shard can support reads up to 5 transactions per second, up to a maximum data read total of 2 MB per second. Each shard can support writes up to 1,000 records per second, up to a maximum data write total of 1 MB per second. You can add shards to a stream if the amount of data input increases and you can remove shards if the amount of data input decreases. The stream name identifies the stream. The name is scoped to the AWS account used by the application. It is also scoped by region. That is, two streams in two different accounts can have the same name, and two streams in the same account, but in two different regions, can have the same name. CreateStream is an asynchronous operation. Upon receiving a CreateStream request, Amazon Kinesis immediately returns and sets the stream status to CREATING. After the stream is created, Amazon Kinesis sets the stream status to ACTIVE. You should perform read and write operations only on an ACTIVE stream. You receive a LimitExceededException when making a CreateStream request if you try to do one of the following: Have more than five streams in the CREATING state at any point in time. Create more shards than are authorized for your account. For the default shard limit for an AWS account, see Streams Limits in the Amazon Kinesis Streams Developer Guide. If you need to increase this limit, contact AWS Support. You can use DescribeStream to check the stream status, which is returned in StreamStatus. CreateStream has a limit of 5 transactions per second per account. - */ - createStream(callback?: (err: AWSError, data: {}) => void): Request<{}, AWSError>; - /** - * Decreases the Amazon Kinesis stream's retention period, which is the length of time data records are accessible after they are added to the stream. The minimum value of a stream's retention period is 24 hours. This operation may result in lost data. For example, if the stream's retention period is 48 hours and is decreased to 24 hours, any data already in the stream that is older than 24 hours is inaccessible. - */ - decreaseStreamRetentionPeriod(params: Kinesis.Types.DecreaseStreamRetentionPeriodInput, callback?: (err: AWSError, data: {}) => void): Request<{}, AWSError>; - /** - * Decreases the Amazon Kinesis stream's retention period, which is the length of time data records are accessible after they are added to the stream. The minimum value of a stream's retention period is 24 hours. This operation may result in lost data. For example, if the stream's retention period is 48 hours and is decreased to 24 hours, any data already in the stream that is older than 24 hours is inaccessible. - */ - decreaseStreamRetentionPeriod(callback?: (err: AWSError, data: {}) => void): Request<{}, AWSError>; - /** - * Deletes an Amazon Kinesis stream and all its shards and data. You must shut down any applications that are operating on the stream before you delete the stream. If an application attempts to operate on a deleted stream, it will receive the exception ResourceNotFoundException. If the stream is in the ACTIVE state, you can delete it. After a DeleteStream request, the specified stream is in the DELETING state until Amazon Kinesis completes the deletion. Note: Amazon Kinesis might continue to accept data read and write operations, such as PutRecord, PutRecords, and GetRecords, on a stream in the DELETING state until the stream deletion is complete. When you delete a stream, any shards in that stream are also deleted, and any tags are dissociated from the stream. You can use the DescribeStream operation to check the state of the stream, which is returned in StreamStatus. DeleteStream has a limit of 5 transactions per second per account. - */ - deleteStream(params: Kinesis.Types.DeleteStreamInput, callback?: (err: AWSError, data: {}) => void): Request<{}, AWSError>; - /** - * Deletes an Amazon Kinesis stream and all its shards and data. You must shut down any applications that are operating on the stream before you delete the stream. If an application attempts to operate on a deleted stream, it will receive the exception ResourceNotFoundException. If the stream is in the ACTIVE state, you can delete it. After a DeleteStream request, the specified stream is in the DELETING state until Amazon Kinesis completes the deletion. Note: Amazon Kinesis might continue to accept data read and write operations, such as PutRecord, PutRecords, and GetRecords, on a stream in the DELETING state until the stream deletion is complete. When you delete a stream, any shards in that stream are also deleted, and any tags are dissociated from the stream. You can use the DescribeStream operation to check the state of the stream, which is returned in StreamStatus. DeleteStream has a limit of 5 transactions per second per account. - */ - deleteStream(callback?: (err: AWSError, data: {}) => void): Request<{}, AWSError>; - /** - * Describes the shard limits and usage for the account. If you update your account limits, the old limits might be returned for a few minutes. This operation has a limit of 1 transaction per second per account. - */ - describeLimits(params: Kinesis.Types.DescribeLimitsInput, callback?: (err: AWSError, data: Kinesis.Types.DescribeLimitsOutput) => void): Request; - /** - * Describes the shard limits and usage for the account. If you update your account limits, the old limits might be returned for a few minutes. This operation has a limit of 1 transaction per second per account. - */ - describeLimits(callback?: (err: AWSError, data: Kinesis.Types.DescribeLimitsOutput) => void): Request; - /** - * Describes the specified Amazon Kinesis stream. The information returned includes the stream name, Amazon Resource Name (ARN), creation time, enhanced metric configuration, and shard map. The shard map is an array of shard objects. For each shard object, there is the hash key and sequence number ranges that the shard spans, and the IDs of any earlier shards that played in a role in creating the shard. Every record ingested in the stream is identified by a sequence number, which is assigned when the record is put into the stream. You can limit the number of shards returned by each call. For more information, see Retrieving Shards from a Stream in the Amazon Kinesis Streams Developer Guide. There are no guarantees about the chronological order shards returned. To process shards in chronological order, use the ID of the parent shard to track the lineage to the oldest shard. This operation has a limit of 10 transactions per second per account. - */ - describeStream(params: Kinesis.Types.DescribeStreamInput, callback?: (err: AWSError, data: Kinesis.Types.DescribeStreamOutput) => void): Request; - /** - * Describes the specified Amazon Kinesis stream. The information returned includes the stream name, Amazon Resource Name (ARN), creation time, enhanced metric configuration, and shard map. The shard map is an array of shard objects. For each shard object, there is the hash key and sequence number ranges that the shard spans, and the IDs of any earlier shards that played in a role in creating the shard. Every record ingested in the stream is identified by a sequence number, which is assigned when the record is put into the stream. You can limit the number of shards returned by each call. For more information, see Retrieving Shards from a Stream in the Amazon Kinesis Streams Developer Guide. There are no guarantees about the chronological order shards returned. To process shards in chronological order, use the ID of the parent shard to track the lineage to the oldest shard. This operation has a limit of 10 transactions per second per account. - */ - describeStream(callback?: (err: AWSError, data: Kinesis.Types.DescribeStreamOutput) => void): Request; - /** - * Disables enhanced monitoring. - */ - disableEnhancedMonitoring(params: Kinesis.Types.DisableEnhancedMonitoringInput, callback?: (err: AWSError, data: Kinesis.Types.EnhancedMonitoringOutput) => void): Request; - /** - * Disables enhanced monitoring. - */ - disableEnhancedMonitoring(callback?: (err: AWSError, data: Kinesis.Types.EnhancedMonitoringOutput) => void): Request; - /** - * Enables enhanced Amazon Kinesis stream monitoring for shard-level metrics. - */ - enableEnhancedMonitoring(params: Kinesis.Types.EnableEnhancedMonitoringInput, callback?: (err: AWSError, data: Kinesis.Types.EnhancedMonitoringOutput) => void): Request; - /** - * Enables enhanced Amazon Kinesis stream monitoring for shard-level metrics. - */ - enableEnhancedMonitoring(callback?: (err: AWSError, data: Kinesis.Types.EnhancedMonitoringOutput) => void): Request; - /** - * Gets data records from an Amazon Kinesis stream's shard. Specify a shard iterator using the ShardIterator parameter. The shard iterator specifies the position in the shard from which you want to start reading data records sequentially. If there are no records available in the portion of the shard that the iterator points to, GetRecords returns an empty list. Note that it might take multiple calls to get to a portion of the shard that contains records. You can scale by provisioning multiple shards per stream while considering service limits (for more information, see Streams Limits in the Amazon Kinesis Streams Developer Guide). Your application should have one thread per shard, each reading continuously from its stream. To read from a stream continually, call GetRecords in a loop. Use GetShardIterator to get the shard iterator to specify in the first GetRecords call. GetRecords returns a new shard iterator in NextShardIterator. Specify the shard iterator returned in NextShardIterator in subsequent calls to GetRecords. Note that if the shard has been closed, the shard iterator can't return more data and GetRecords returns null in NextShardIterator. You can terminate the loop when the shard is closed, or when the shard iterator reaches the record with the sequence number or other attribute that marks it as the last record to process. Each data record can be up to 1 MB in size, and each shard can read up to 2 MB per second. You can ensure that your calls don't exceed the maximum supported size or throughput by using the Limit parameter to specify the maximum number of records that GetRecords can return. Consider your average record size when determining this limit. The size of the data returned by GetRecords varies depending on the utilization of the shard. The maximum size of data that GetRecords can return is 10 MB. If a call returns this amount of data, subsequent calls made within the next 5 seconds throw ProvisionedThroughputExceededException. If there is insufficient provisioned throughput on the shard, subsequent calls made within the next 1 second throw ProvisionedThroughputExceededException. Note that GetRecords won't return any data when it throws an exception. For this reason, we recommend that you wait one second between calls to GetRecords; however, it's possible that the application will get exceptions for longer than 1 second. To detect whether the application is falling behind in processing, you can use the MillisBehindLatest response attribute. You can also monitor the stream using CloudWatch metrics and other mechanisms (see Monitoring in the Amazon Kinesis Streams Developer Guide). Each Amazon Kinesis record includes a value, ApproximateArrivalTimestamp, that is set when a stream successfully receives and stores a record. This is commonly referred to as a server-side timestamp, whereas a client-side timestamp is set when a data producer creates or sends the record to a stream (a data producer is any data source putting data records into a stream, for example with PutRecords). The timestamp has millisecond precision. There are no guarantees about the timestamp accuracy, or that the timestamp is always increasing. For example, records in a shard or across a stream might have timestamps that are out of order. - */ - getRecords(params: Kinesis.Types.GetRecordsInput, callback?: (err: AWSError, data: Kinesis.Types.GetRecordsOutput) => void): Request; - /** - * Gets data records from an Amazon Kinesis stream's shard. Specify a shard iterator using the ShardIterator parameter. The shard iterator specifies the position in the shard from which you want to start reading data records sequentially. If there are no records available in the portion of the shard that the iterator points to, GetRecords returns an empty list. Note that it might take multiple calls to get to a portion of the shard that contains records. You can scale by provisioning multiple shards per stream while considering service limits (for more information, see Streams Limits in the Amazon Kinesis Streams Developer Guide). Your application should have one thread per shard, each reading continuously from its stream. To read from a stream continually, call GetRecords in a loop. Use GetShardIterator to get the shard iterator to specify in the first GetRecords call. GetRecords returns a new shard iterator in NextShardIterator. Specify the shard iterator returned in NextShardIterator in subsequent calls to GetRecords. Note that if the shard has been closed, the shard iterator can't return more data and GetRecords returns null in NextShardIterator. You can terminate the loop when the shard is closed, or when the shard iterator reaches the record with the sequence number or other attribute that marks it as the last record to process. Each data record can be up to 1 MB in size, and each shard can read up to 2 MB per second. You can ensure that your calls don't exceed the maximum supported size or throughput by using the Limit parameter to specify the maximum number of records that GetRecords can return. Consider your average record size when determining this limit. The size of the data returned by GetRecords varies depending on the utilization of the shard. The maximum size of data that GetRecords can return is 10 MB. If a call returns this amount of data, subsequent calls made within the next 5 seconds throw ProvisionedThroughputExceededException. If there is insufficient provisioned throughput on the shard, subsequent calls made within the next 1 second throw ProvisionedThroughputExceededException. Note that GetRecords won't return any data when it throws an exception. For this reason, we recommend that you wait one second between calls to GetRecords; however, it's possible that the application will get exceptions for longer than 1 second. To detect whether the application is falling behind in processing, you can use the MillisBehindLatest response attribute. You can also monitor the stream using CloudWatch metrics and other mechanisms (see Monitoring in the Amazon Kinesis Streams Developer Guide). Each Amazon Kinesis record includes a value, ApproximateArrivalTimestamp, that is set when a stream successfully receives and stores a record. This is commonly referred to as a server-side timestamp, whereas a client-side timestamp is set when a data producer creates or sends the record to a stream (a data producer is any data source putting data records into a stream, for example with PutRecords). The timestamp has millisecond precision. There are no guarantees about the timestamp accuracy, or that the timestamp is always increasing. For example, records in a shard or across a stream might have timestamps that are out of order. - */ - getRecords(callback?: (err: AWSError, data: Kinesis.Types.GetRecordsOutput) => void): Request; - /** - * Gets an Amazon Kinesis shard iterator. A shard iterator expires five minutes after it is returned to the requester. A shard iterator specifies the shard position from which to start reading data records sequentially. The position is specified using the sequence number of a data record in a shard. A sequence number is the identifier associated with every record ingested in the stream, and is assigned when a record is put into the stream. Each stream has one or more shards. You must specify the shard iterator type. For example, you can set the ShardIteratorType parameter to read exactly from the position denoted by a specific sequence number by using the AT_SEQUENCE_NUMBER shard iterator type, or right after the sequence number by using the AFTER_SEQUENCE_NUMBER shard iterator type, using sequence numbers returned by earlier calls to PutRecord, PutRecords, GetRecords, or DescribeStream. In the request, you can specify the shard iterator type AT_TIMESTAMP to read records from an arbitrary point in time, TRIM_HORIZON to cause ShardIterator to point to the last untrimmed record in the shard in the system (the oldest data record in the shard), or LATEST so that you always read the most recent data in the shard. When you read repeatedly from a stream, use a GetShardIterator request to get the first shard iterator for use in your first GetRecords request and for subsequent reads use the shard iterator returned by the GetRecords request in NextShardIterator. A new shard iterator is returned by every GetRecords request in NextShardIterator, which you use in the ShardIterator parameter of the next GetRecords request. If a GetShardIterator request is made too often, you receive a ProvisionedThroughputExceededException. For more information about throughput limits, see GetRecords, and Streams Limits in the Amazon Kinesis Streams Developer Guide. If the shard is closed, GetShardIterator returns a valid iterator for the last sequence number of the shard. Note that a shard can be closed as a result of using SplitShard or MergeShards. GetShardIterator has a limit of 5 transactions per second per account per open shard. - */ - getShardIterator(params: Kinesis.Types.GetShardIteratorInput, callback?: (err: AWSError, data: Kinesis.Types.GetShardIteratorOutput) => void): Request; - /** - * Gets an Amazon Kinesis shard iterator. A shard iterator expires five minutes after it is returned to the requester. A shard iterator specifies the shard position from which to start reading data records sequentially. The position is specified using the sequence number of a data record in a shard. A sequence number is the identifier associated with every record ingested in the stream, and is assigned when a record is put into the stream. Each stream has one or more shards. You must specify the shard iterator type. For example, you can set the ShardIteratorType parameter to read exactly from the position denoted by a specific sequence number by using the AT_SEQUENCE_NUMBER shard iterator type, or right after the sequence number by using the AFTER_SEQUENCE_NUMBER shard iterator type, using sequence numbers returned by earlier calls to PutRecord, PutRecords, GetRecords, or DescribeStream. In the request, you can specify the shard iterator type AT_TIMESTAMP to read records from an arbitrary point in time, TRIM_HORIZON to cause ShardIterator to point to the last untrimmed record in the shard in the system (the oldest data record in the shard), or LATEST so that you always read the most recent data in the shard. When you read repeatedly from a stream, use a GetShardIterator request to get the first shard iterator for use in your first GetRecords request and for subsequent reads use the shard iterator returned by the GetRecords request in NextShardIterator. A new shard iterator is returned by every GetRecords request in NextShardIterator, which you use in the ShardIterator parameter of the next GetRecords request. If a GetShardIterator request is made too often, you receive a ProvisionedThroughputExceededException. For more information about throughput limits, see GetRecords, and Streams Limits in the Amazon Kinesis Streams Developer Guide. If the shard is closed, GetShardIterator returns a valid iterator for the last sequence number of the shard. Note that a shard can be closed as a result of using SplitShard or MergeShards. GetShardIterator has a limit of 5 transactions per second per account per open shard. - */ - getShardIterator(callback?: (err: AWSError, data: Kinesis.Types.GetShardIteratorOutput) => void): Request; - /** - * Increases the Amazon Kinesis stream's retention period, which is the length of time data records are accessible after they are added to the stream. The maximum value of a stream's retention period is 168 hours (7 days). Upon choosing a longer stream retention period, this operation will increase the time period records are accessible that have not yet expired. However, it will not make previous data that has expired (older than the stream's previous retention period) accessible after the operation has been called. For example, if a stream's retention period is set to 24 hours and is increased to 168 hours, any data that is older than 24 hours will remain inaccessible to consumer applications. - */ - increaseStreamRetentionPeriod(params: Kinesis.Types.IncreaseStreamRetentionPeriodInput, callback?: (err: AWSError, data: {}) => void): Request<{}, AWSError>; - /** - * Increases the Amazon Kinesis stream's retention period, which is the length of time data records are accessible after they are added to the stream. The maximum value of a stream's retention period is 168 hours (7 days). Upon choosing a longer stream retention period, this operation will increase the time period records are accessible that have not yet expired. However, it will not make previous data that has expired (older than the stream's previous retention period) accessible after the operation has been called. For example, if a stream's retention period is set to 24 hours and is increased to 168 hours, any data that is older than 24 hours will remain inaccessible to consumer applications. - */ - increaseStreamRetentionPeriod(callback?: (err: AWSError, data: {}) => void): Request<{}, AWSError>; - /** - * Lists your Amazon Kinesis streams. The number of streams may be too large to return from a single call to ListStreams. You can limit the number of returned streams using the Limit parameter. If you do not specify a value for the Limit parameter, Amazon Kinesis uses the default limit, which is currently 10. You can detect if there are more streams available to list by using the HasMoreStreams flag from the returned output. If there are more streams available, you can request more streams by using the name of the last stream returned by the ListStreams request in the ExclusiveStartStreamName parameter in a subsequent request to ListStreams. The group of stream names returned by the subsequent request is then added to the list. You can continue this process until all the stream names have been collected in the list. ListStreams has a limit of 5 transactions per second per account. - */ - listStreams(params: Kinesis.Types.ListStreamsInput, callback?: (err: AWSError, data: Kinesis.Types.ListStreamsOutput) => void): Request; - /** - * Lists your Amazon Kinesis streams. The number of streams may be too large to return from a single call to ListStreams. You can limit the number of returned streams using the Limit parameter. If you do not specify a value for the Limit parameter, Amazon Kinesis uses the default limit, which is currently 10. You can detect if there are more streams available to list by using the HasMoreStreams flag from the returned output. If there are more streams available, you can request more streams by using the name of the last stream returned by the ListStreams request in the ExclusiveStartStreamName parameter in a subsequent request to ListStreams. The group of stream names returned by the subsequent request is then added to the list. You can continue this process until all the stream names have been collected in the list. ListStreams has a limit of 5 transactions per second per account. - */ - listStreams(callback?: (err: AWSError, data: Kinesis.Types.ListStreamsOutput) => void): Request; - /** - * Lists the tags for the specified Amazon Kinesis stream. - */ - listTagsForStream(params: Kinesis.Types.ListTagsForStreamInput, callback?: (err: AWSError, data: Kinesis.Types.ListTagsForStreamOutput) => void): Request; - /** - * Lists the tags for the specified Amazon Kinesis stream. - */ - listTagsForStream(callback?: (err: AWSError, data: Kinesis.Types.ListTagsForStreamOutput) => void): Request; - /** - * Merges two adjacent shards in an Amazon Kinesis stream and combines them into a single shard to reduce the stream's capacity to ingest and transport data. Two shards are considered adjacent if the union of the hash key ranges for the two shards form a contiguous set with no gaps. For example, if you have two shards, one with a hash key range of 276...381 and the other with a hash key range of 382...454, then you could merge these two shards into a single shard that would have a hash key range of 276...454. After the merge, the single child shard receives data for all hash key values covered by the two parent shards. MergeShards is called when there is a need to reduce the overall capacity of a stream because of excess capacity that is not being used. You must specify the shard to be merged and the adjacent shard for a stream. For more information about merging shards, see Merge Two Shards in the Amazon Kinesis Streams Developer Guide. If the stream is in the ACTIVE state, you can call MergeShards. If a stream is in the CREATING, UPDATING, or DELETING state, MergeShards returns a ResourceInUseException. If the specified stream does not exist, MergeShards returns a ResourceNotFoundException. You can use DescribeStream to check the state of the stream, which is returned in StreamStatus. MergeShards is an asynchronous operation. Upon receiving a MergeShards request, Amazon Kinesis immediately returns a response and sets the StreamStatus to UPDATING. After the operation is completed, Amazon Kinesis sets the StreamStatus to ACTIVE. Read and write operations continue to work while the stream is in the UPDATING state. You use DescribeStream to determine the shard IDs that are specified in the MergeShards request. If you try to operate on too many streams in parallel using CreateStream, DeleteStream, MergeShards or SplitShard, you will receive a LimitExceededException. MergeShards has limit of 5 transactions per second per account. - */ - mergeShards(params: Kinesis.Types.MergeShardsInput, callback?: (err: AWSError, data: {}) => void): Request<{}, AWSError>; - /** - * Merges two adjacent shards in an Amazon Kinesis stream and combines them into a single shard to reduce the stream's capacity to ingest and transport data. Two shards are considered adjacent if the union of the hash key ranges for the two shards form a contiguous set with no gaps. For example, if you have two shards, one with a hash key range of 276...381 and the other with a hash key range of 382...454, then you could merge these two shards into a single shard that would have a hash key range of 276...454. After the merge, the single child shard receives data for all hash key values covered by the two parent shards. MergeShards is called when there is a need to reduce the overall capacity of a stream because of excess capacity that is not being used. You must specify the shard to be merged and the adjacent shard for a stream. For more information about merging shards, see Merge Two Shards in the Amazon Kinesis Streams Developer Guide. If the stream is in the ACTIVE state, you can call MergeShards. If a stream is in the CREATING, UPDATING, or DELETING state, MergeShards returns a ResourceInUseException. If the specified stream does not exist, MergeShards returns a ResourceNotFoundException. You can use DescribeStream to check the state of the stream, which is returned in StreamStatus. MergeShards is an asynchronous operation. Upon receiving a MergeShards request, Amazon Kinesis immediately returns a response and sets the StreamStatus to UPDATING. After the operation is completed, Amazon Kinesis sets the StreamStatus to ACTIVE. Read and write operations continue to work while the stream is in the UPDATING state. You use DescribeStream to determine the shard IDs that are specified in the MergeShards request. If you try to operate on too many streams in parallel using CreateStream, DeleteStream, MergeShards or SplitShard, you will receive a LimitExceededException. MergeShards has limit of 5 transactions per second per account. - */ - mergeShards(callback?: (err: AWSError, data: {}) => void): Request<{}, AWSError>; - /** - * Writes a single data record into an Amazon Kinesis stream. Call PutRecord to send data into the stream for real-time ingestion and subsequent processing, one record at a time. Each shard can support writes up to 1,000 records per second, up to a maximum data write total of 1 MB per second. You must specify the name of the stream that captures, stores, and transports the data; a partition key; and the data blob itself. The data blob can be any type of data; for example, a segment from a log file, geographic/location data, website clickstream data, and so on. The partition key is used by Amazon Kinesis to distribute data across shards. Amazon Kinesis segregates the data records that belong to a stream into multiple shards, using the partition key associated with each data record to determine which shard a given data record belongs to. Partition keys are Unicode strings, with a maximum length limit of 256 characters for each key. An MD5 hash function is used to map partition keys to 128-bit integer values and to map associated data records to shards using the hash key ranges of the shards. You can override hashing the partition key to determine the shard by explicitly specifying a hash value using the ExplicitHashKey parameter. For more information, see Adding Data to a Stream in the Amazon Kinesis Streams Developer Guide. PutRecord returns the shard ID of where the data record was placed and the sequence number that was assigned to the data record. Sequence numbers increase over time and are specific to a shard within a stream, not across all shards within a stream. To guarantee strictly increasing ordering, write serially to a shard and use the SequenceNumberForOrdering parameter. For more information, see Adding Data to a Stream in the Amazon Kinesis Streams Developer Guide. If a PutRecord request cannot be processed because of insufficient provisioned throughput on the shard involved in the request, PutRecord throws ProvisionedThroughputExceededException. By default, data records are accessible for 24 hours from the time that they are added to a stream. You can use IncreaseStreamRetentionPeriod or DecreaseStreamRetentionPeriod to modify this retention period. - */ - putRecord(params: Kinesis.Types.PutRecordInput, callback?: (err: AWSError, data: Kinesis.Types.PutRecordOutput) => void): Request; - /** - * Writes a single data record into an Amazon Kinesis stream. Call PutRecord to send data into the stream for real-time ingestion and subsequent processing, one record at a time. Each shard can support writes up to 1,000 records per second, up to a maximum data write total of 1 MB per second. You must specify the name of the stream that captures, stores, and transports the data; a partition key; and the data blob itself. The data blob can be any type of data; for example, a segment from a log file, geographic/location data, website clickstream data, and so on. The partition key is used by Amazon Kinesis to distribute data across shards. Amazon Kinesis segregates the data records that belong to a stream into multiple shards, using the partition key associated with each data record to determine which shard a given data record belongs to. Partition keys are Unicode strings, with a maximum length limit of 256 characters for each key. An MD5 hash function is used to map partition keys to 128-bit integer values and to map associated data records to shards using the hash key ranges of the shards. You can override hashing the partition key to determine the shard by explicitly specifying a hash value using the ExplicitHashKey parameter. For more information, see Adding Data to a Stream in the Amazon Kinesis Streams Developer Guide. PutRecord returns the shard ID of where the data record was placed and the sequence number that was assigned to the data record. Sequence numbers increase over time and are specific to a shard within a stream, not across all shards within a stream. To guarantee strictly increasing ordering, write serially to a shard and use the SequenceNumberForOrdering parameter. For more information, see Adding Data to a Stream in the Amazon Kinesis Streams Developer Guide. If a PutRecord request cannot be processed because of insufficient provisioned throughput on the shard involved in the request, PutRecord throws ProvisionedThroughputExceededException. By default, data records are accessible for 24 hours from the time that they are added to a stream. You can use IncreaseStreamRetentionPeriod or DecreaseStreamRetentionPeriod to modify this retention period. - */ - putRecord(callback?: (err: AWSError, data: Kinesis.Types.PutRecordOutput) => void): Request; - /** - * Writes multiple data records into an Amazon Kinesis stream in a single call (also referred to as a PutRecords request). Use this operation to send data into the stream for data ingestion and processing. Each PutRecords request can support up to 500 records. Each record in the request can be as large as 1 MB, up to a limit of 5 MB for the entire request, including partition keys. Each shard can support writes up to 1,000 records per second, up to a maximum data write total of 1 MB per second. You must specify the name of the stream that captures, stores, and transports the data; and an array of request Records, with each record in the array requiring a partition key and data blob. The record size limit applies to the total size of the partition key and data blob. The data blob can be any type of data; for example, a segment from a log file, geographic/location data, website clickstream data, and so on. The partition key is used by Amazon Kinesis as input to a hash function that maps the partition key and associated data to a specific shard. An MD5 hash function is used to map partition keys to 128-bit integer values and to map associated data records to shards. As a result of this hashing mechanism, all data records with the same partition key map to the same shard within the stream. For more information, see Adding Data to a Stream in the Amazon Kinesis Streams Developer Guide. Each record in the Records array may include an optional parameter, ExplicitHashKey, which overrides the partition key to shard mapping. This parameter allows a data producer to determine explicitly the shard where the record is stored. For more information, see Adding Multiple Records with PutRecords in the Amazon Kinesis Streams Developer Guide. The PutRecords response includes an array of response Records. Each record in the response array directly correlates with a record in the request array using natural ordering, from the top to the bottom of the request and response. The response Records array always includes the same number of records as the request array. The response Records array includes both successfully and unsuccessfully processed records. Amazon Kinesis attempts to process all records in each PutRecords request. A single record failure does not stop the processing of subsequent records. A successfully-processed record includes ShardId and SequenceNumber values. The ShardId parameter identifies the shard in the stream where the record is stored. The SequenceNumber parameter is an identifier assigned to the put record, unique to all records in the stream. An unsuccessfully-processed record includes ErrorCode and ErrorMessage values. ErrorCode reflects the type of error and can be one of the following values: ProvisionedThroughputExceededException or InternalFailure. ErrorMessage provides more detailed information about the ProvisionedThroughputExceededException exception including the account ID, stream name, and shard ID of the record that was throttled. For more information about partially successful responses, see Adding Multiple Records with PutRecords in the Amazon Kinesis Streams Developer Guide. By default, data records are accessible for 24 hours from the time that they are added to a stream. You can use IncreaseStreamRetentionPeriod or DecreaseStreamRetentionPeriod to modify this retention period. - */ - putRecords(params: Kinesis.Types.PutRecordsInput, callback?: (err: AWSError, data: Kinesis.Types.PutRecordsOutput) => void): Request; - /** - * Writes multiple data records into an Amazon Kinesis stream in a single call (also referred to as a PutRecords request). Use this operation to send data into the stream for data ingestion and processing. Each PutRecords request can support up to 500 records. Each record in the request can be as large as 1 MB, up to a limit of 5 MB for the entire request, including partition keys. Each shard can support writes up to 1,000 records per second, up to a maximum data write total of 1 MB per second. You must specify the name of the stream that captures, stores, and transports the data; and an array of request Records, with each record in the array requiring a partition key and data blob. The record size limit applies to the total size of the partition key and data blob. The data blob can be any type of data; for example, a segment from a log file, geographic/location data, website clickstream data, and so on. The partition key is used by Amazon Kinesis as input to a hash function that maps the partition key and associated data to a specific shard. An MD5 hash function is used to map partition keys to 128-bit integer values and to map associated data records to shards. As a result of this hashing mechanism, all data records with the same partition key map to the same shard within the stream. For more information, see Adding Data to a Stream in the Amazon Kinesis Streams Developer Guide. Each record in the Records array may include an optional parameter, ExplicitHashKey, which overrides the partition key to shard mapping. This parameter allows a data producer to determine explicitly the shard where the record is stored. For more information, see Adding Multiple Records with PutRecords in the Amazon Kinesis Streams Developer Guide. The PutRecords response includes an array of response Records. Each record in the response array directly correlates with a record in the request array using natural ordering, from the top to the bottom of the request and response. The response Records array always includes the same number of records as the request array. The response Records array includes both successfully and unsuccessfully processed records. Amazon Kinesis attempts to process all records in each PutRecords request. A single record failure does not stop the processing of subsequent records. A successfully-processed record includes ShardId and SequenceNumber values. The ShardId parameter identifies the shard in the stream where the record is stored. The SequenceNumber parameter is an identifier assigned to the put record, unique to all records in the stream. An unsuccessfully-processed record includes ErrorCode and ErrorMessage values. ErrorCode reflects the type of error and can be one of the following values: ProvisionedThroughputExceededException or InternalFailure. ErrorMessage provides more detailed information about the ProvisionedThroughputExceededException exception including the account ID, stream name, and shard ID of the record that was throttled. For more information about partially successful responses, see Adding Multiple Records with PutRecords in the Amazon Kinesis Streams Developer Guide. By default, data records are accessible for 24 hours from the time that they are added to a stream. You can use IncreaseStreamRetentionPeriod or DecreaseStreamRetentionPeriod to modify this retention period. - */ - putRecords(callback?: (err: AWSError, data: Kinesis.Types.PutRecordsOutput) => void): Request; - /** - * Removes tags from the specified Amazon Kinesis stream. Removed tags are deleted and cannot be recovered after this operation successfully completes. If you specify a tag that does not exist, it is ignored. - */ - removeTagsFromStream(params: Kinesis.Types.RemoveTagsFromStreamInput, callback?: (err: AWSError, data: {}) => void): Request<{}, AWSError>; - /** - * Removes tags from the specified Amazon Kinesis stream. Removed tags are deleted and cannot be recovered after this operation successfully completes. If you specify a tag that does not exist, it is ignored. - */ - removeTagsFromStream(callback?: (err: AWSError, data: {}) => void): Request<{}, AWSError>; - /** - * Splits a shard into two new shards in the Amazon Kinesis stream to increase the stream's capacity to ingest and transport data. SplitShard is called when there is a need to increase the overall capacity of a stream because of an expected increase in the volume of data records being ingested. You can also use SplitShard when a shard appears to be approaching its maximum utilization; for example, the producers sending data into the specific shard are suddenly sending more than previously anticipated. You can also call SplitShard to increase stream capacity, so that more Amazon Kinesis applications can simultaneously read data from the stream for real-time processing. You must specify the shard to be split and the new hash key, which is the position in the shard where the shard gets split in two. In many cases, the new hash key might simply be the average of the beginning and ending hash key, but it can be any hash key value in the range being mapped into the shard. For more information about splitting shards, see Split a Shard in the Amazon Kinesis Streams Developer Guide. You can use DescribeStream to determine the shard ID and hash key values for the ShardToSplit and NewStartingHashKey parameters that are specified in the SplitShard request. SplitShard is an asynchronous operation. Upon receiving a SplitShard request, Amazon Kinesis immediately returns a response and sets the stream status to UPDATING. After the operation is completed, Amazon Kinesis sets the stream status to ACTIVE. Read and write operations continue to work while the stream is in the UPDATING state. You can use DescribeStream to check the status of the stream, which is returned in StreamStatus. If the stream is in the ACTIVE state, you can call SplitShard. If a stream is in CREATING or UPDATING or DELETING states, DescribeStream returns a ResourceInUseException. If the specified stream does not exist, DescribeStream returns a ResourceNotFoundException. If you try to create more shards than are authorized for your account, you receive a LimitExceededException. For the default shard limit for an AWS account, see Streams Limits in the Amazon Kinesis Streams Developer Guide. If you need to increase this limit, contact AWS Support. If you try to operate on too many streams simultaneously using CreateStream, DeleteStream, MergeShards, and/or SplitShard, you receive a LimitExceededException. SplitShard has limit of 5 transactions per second per account. - */ - splitShard(params: Kinesis.Types.SplitShardInput, callback?: (err: AWSError, data: {}) => void): Request<{}, AWSError>; - /** - * Splits a shard into two new shards in the Amazon Kinesis stream to increase the stream's capacity to ingest and transport data. SplitShard is called when there is a need to increase the overall capacity of a stream because of an expected increase in the volume of data records being ingested. You can also use SplitShard when a shard appears to be approaching its maximum utilization; for example, the producers sending data into the specific shard are suddenly sending more than previously anticipated. You can also call SplitShard to increase stream capacity, so that more Amazon Kinesis applications can simultaneously read data from the stream for real-time processing. You must specify the shard to be split and the new hash key, which is the position in the shard where the shard gets split in two. In many cases, the new hash key might simply be the average of the beginning and ending hash key, but it can be any hash key value in the range being mapped into the shard. For more information about splitting shards, see Split a Shard in the Amazon Kinesis Streams Developer Guide. You can use DescribeStream to determine the shard ID and hash key values for the ShardToSplit and NewStartingHashKey parameters that are specified in the SplitShard request. SplitShard is an asynchronous operation. Upon receiving a SplitShard request, Amazon Kinesis immediately returns a response and sets the stream status to UPDATING. After the operation is completed, Amazon Kinesis sets the stream status to ACTIVE. Read and write operations continue to work while the stream is in the UPDATING state. You can use DescribeStream to check the status of the stream, which is returned in StreamStatus. If the stream is in the ACTIVE state, you can call SplitShard. If a stream is in CREATING or UPDATING or DELETING states, DescribeStream returns a ResourceInUseException. If the specified stream does not exist, DescribeStream returns a ResourceNotFoundException. If you try to create more shards than are authorized for your account, you receive a LimitExceededException. For the default shard limit for an AWS account, see Streams Limits in the Amazon Kinesis Streams Developer Guide. If you need to increase this limit, contact AWS Support. If you try to operate on too many streams simultaneously using CreateStream, DeleteStream, MergeShards, and/or SplitShard, you receive a LimitExceededException. SplitShard has limit of 5 transactions per second per account. - */ - splitShard(callback?: (err: AWSError, data: {}) => void): Request<{}, AWSError>; - /** - * Enables or updates server-side encryption using an AWS KMS key for a specified stream. Starting encryption is an asynchronous operation. Upon receiving the request, Amazon Kinesis returns immediately and sets the status of the stream to UPDATING. After the update is complete, Amazon Kinesis sets the status of the stream back to ACTIVE. Updating or applying encryption normally takes a few seconds to complete but it can take minutes. You can continue to read and write data to your stream while its status is UPDATING. Once the status of the stream is ACTIVE, records written to the stream will begin to be encrypted. API Limits: You can successfully apply a new AWS KMS key for server-side encryption 25 times in a rolling 24 hour period. Note: It can take up to 5 seconds after the stream is in an ACTIVE status before all records written to the stream are encrypted. After you’ve enabled encryption, you can verify encryption was applied by inspecting the API response from PutRecord or PutRecords. - */ - startStreamEncryption(params: Kinesis.Types.StartStreamEncryptionInput, callback?: (err: AWSError, data: {}) => void): Request<{}, AWSError>; - /** - * Enables or updates server-side encryption using an AWS KMS key for a specified stream. Starting encryption is an asynchronous operation. Upon receiving the request, Amazon Kinesis returns immediately and sets the status of the stream to UPDATING. After the update is complete, Amazon Kinesis sets the status of the stream back to ACTIVE. Updating or applying encryption normally takes a few seconds to complete but it can take minutes. You can continue to read and write data to your stream while its status is UPDATING. Once the status of the stream is ACTIVE, records written to the stream will begin to be encrypted. API Limits: You can successfully apply a new AWS KMS key for server-side encryption 25 times in a rolling 24 hour period. Note: It can take up to 5 seconds after the stream is in an ACTIVE status before all records written to the stream are encrypted. After you’ve enabled encryption, you can verify encryption was applied by inspecting the API response from PutRecord or PutRecords. - */ - startStreamEncryption(callback?: (err: AWSError, data: {}) => void): Request<{}, AWSError>; - /** - * Disables server-side encryption for a specified stream. Stopping encryption is an asynchronous operation. Upon receiving the request, Amazon Kinesis returns immediately and sets the status of the stream to UPDATING. After the update is complete, Amazon Kinesis sets the status of the stream back to ACTIVE. Stopping encryption normally takes a few seconds to complete but it can take minutes. You can continue to read and write data to your stream while its status is UPDATING. Once the status of the stream is ACTIVE records written to the stream will no longer be encrypted by the Amazon Kinesis Streams service. API Limits: You can successfully disable server-side encryption 25 times in a rolling 24 hour period. Note: It can take up to 5 seconds after the stream is in an ACTIVE status before all records written to the stream are no longer subject to encryption. After you’ve disabled encryption, you can verify encryption was not applied by inspecting the API response from PutRecord or PutRecords. - */ - stopStreamEncryption(params: Kinesis.Types.StopStreamEncryptionInput, callback?: (err: AWSError, data: {}) => void): Request<{}, AWSError>; - /** - * Disables server-side encryption for a specified stream. Stopping encryption is an asynchronous operation. Upon receiving the request, Amazon Kinesis returns immediately and sets the status of the stream to UPDATING. After the update is complete, Amazon Kinesis sets the status of the stream back to ACTIVE. Stopping encryption normally takes a few seconds to complete but it can take minutes. You can continue to read and write data to your stream while its status is UPDATING. Once the status of the stream is ACTIVE records written to the stream will no longer be encrypted by the Amazon Kinesis Streams service. API Limits: You can successfully disable server-side encryption 25 times in a rolling 24 hour period. Note: It can take up to 5 seconds after the stream is in an ACTIVE status before all records written to the stream are no longer subject to encryption. After you’ve disabled encryption, you can verify encryption was not applied by inspecting the API response from PutRecord or PutRecords. - */ - stopStreamEncryption(callback?: (err: AWSError, data: {}) => void): Request<{}, AWSError>; - /** - * Updates the shard count of the specified stream to the specified number of shards. Updating the shard count is an asynchronous operation. Upon receiving the request, Amazon Kinesis returns immediately and sets the status of the stream to UPDATING. After the update is complete, Amazon Kinesis sets the status of the stream back to ACTIVE. Depending on the size of the stream, the scaling action could take a few minutes to complete. You can continue to read and write data to your stream while its status is UPDATING. To update the shard count, Amazon Kinesis performs splits or merges on individual shards. This can cause short-lived shards to be created, in addition to the final shards. We recommend that you double or halve the shard count, as this results in the fewest number of splits or merges. This operation has the following limits, which are per region per account unless otherwise noted: scale more than twice per rolling 24 hour period scale up above double your current shard count scale down below half your current shard count scale up above 200 shards in a stream scale a stream with more than 200 shards down unless the result is less than 200 shards scale up above the shard limits for your account For the default limits for an AWS account, see Streams Limits in the Amazon Kinesis Streams Developer Guide. If you need to increase a limit, contact AWS Support. - */ - updateShardCount(params: Kinesis.Types.UpdateShardCountInput, callback?: (err: AWSError, data: Kinesis.Types.UpdateShardCountOutput) => void): Request; - /** - * Updates the shard count of the specified stream to the specified number of shards. Updating the shard count is an asynchronous operation. Upon receiving the request, Amazon Kinesis returns immediately and sets the status of the stream to UPDATING. After the update is complete, Amazon Kinesis sets the status of the stream back to ACTIVE. Depending on the size of the stream, the scaling action could take a few minutes to complete. You can continue to read and write data to your stream while its status is UPDATING. To update the shard count, Amazon Kinesis performs splits or merges on individual shards. This can cause short-lived shards to be created, in addition to the final shards. We recommend that you double or halve the shard count, as this results in the fewest number of splits or merges. This operation has the following limits, which are per region per account unless otherwise noted: scale more than twice per rolling 24 hour period scale up above double your current shard count scale down below half your current shard count scale up above 200 shards in a stream scale a stream with more than 200 shards down unless the result is less than 200 shards scale up above the shard limits for your account For the default limits for an AWS account, see Streams Limits in the Amazon Kinesis Streams Developer Guide. If you need to increase a limit, contact AWS Support. - */ - updateShardCount(callback?: (err: AWSError, data: Kinesis.Types.UpdateShardCountOutput) => void): Request; - /** - * Waits for the streamExists state by periodically calling the underlying Kinesis.describeStreamoperation every 10 seconds (at most 18 times). - */ - waitFor(state: "streamExists", params: Kinesis.Types.DescribeStreamInput, callback?: (err: AWSError, data: Kinesis.Types.DescribeStreamOutput) => void): Request; - /** - * Waits for the streamExists state by periodically calling the underlying Kinesis.describeStreamoperation every 10 seconds (at most 18 times). - */ - waitFor(state: "streamExists", callback?: (err: AWSError, data: Kinesis.Types.DescribeStreamOutput) => void): Request; - /** - * Waits for the streamNotExists state by periodically calling the underlying Kinesis.describeStreamoperation every 10 seconds (at most 18 times). - */ - waitFor(state: "streamNotExists", params: Kinesis.Types.DescribeStreamInput, callback?: (err: AWSError, data: Kinesis.Types.DescribeStreamOutput) => void): Request; - /** - * Waits for the streamNotExists state by periodically calling the underlying Kinesis.describeStreamoperation every 10 seconds (at most 18 times). - */ - waitFor(state: "streamNotExists", callback?: (err: AWSError, data: Kinesis.Types.DescribeStreamOutput) => void): Request; -} -declare namespace Kinesis { - export interface AddTagsToStreamInput { - /** - * The name of the stream. - */ - StreamName: StreamName; - /** - * The set of key-value pairs to use to create the tags. - */ - Tags: TagMap; - } - export type BooleanObject = boolean; - export interface CreateStreamInput { - /** - * A name to identify the stream. The stream name is scoped to the AWS account used by the application that creates the stream. It is also scoped by region. That is, two streams in two different AWS accounts can have the same name, and two streams in the same AWS account but in two different regions can have the same name. - */ - StreamName: StreamName; - /** - * The number of shards that the stream will use. The throughput of the stream is a function of the number of shards; more shards are required for greater provisioned throughput. DefaultShardLimit; - */ - ShardCount: PositiveIntegerObject; - } - export type Data = Buffer|Uint8Array|Blob|string; - export interface DecreaseStreamRetentionPeriodInput { - /** - * The name of the stream to modify. - */ - StreamName: StreamName; - /** - * The new retention period of the stream, in hours. Must be less than the current retention period. - */ - RetentionPeriodHours: PositiveIntegerObject; - } - export interface DeleteStreamInput { - /** - * The name of the stream to delete. - */ - StreamName: StreamName; - } - export interface DescribeLimitsInput { - } - export interface DescribeLimitsOutput { - /** - * The maximum number of shards. - */ - ShardLimit: ShardCountObject; - /** - * The number of open shards. - */ - OpenShardCount: ShardCountObject; - } - export interface DescribeStreamInput { - /** - * The name of the stream to describe. - */ - StreamName: StreamName; - /** - * The maximum number of shards to return in a single call. The default value is 100. If you specify a value greater than 100, at most 100 shards are returned. - */ - Limit?: DescribeStreamInputLimit; - /** - * The shard ID of the shard to start with. - */ - ExclusiveStartShardId?: ShardId; - } - export type DescribeStreamInputLimit = number; - export interface DescribeStreamOutput { - /** - * The current status of the stream, the stream ARN, an array of shard objects that comprise the stream, and whether there are more shards available. - */ - StreamDescription: StreamDescription; - } - export interface DisableEnhancedMonitoringInput { - /** - * The name of the Amazon Kinesis stream for which to disable enhanced monitoring. - */ - StreamName: StreamName; - /** - * List of shard-level metrics to disable. The following are the valid shard-level metrics. The value "ALL" disables every metric. IncomingBytes IncomingRecords OutgoingBytes OutgoingRecords WriteProvisionedThroughputExceeded ReadProvisionedThroughputExceeded IteratorAgeMilliseconds ALL For more information, see Monitoring the Amazon Kinesis Streams Service with Amazon CloudWatch in the Amazon Kinesis Streams Developer Guide. - */ - ShardLevelMetrics: MetricsNameList; - } - export interface EnableEnhancedMonitoringInput { - /** - * The name of the stream for which to enable enhanced monitoring. - */ - StreamName: StreamName; - /** - * List of shard-level metrics to enable. The following are the valid shard-level metrics. The value "ALL" enables every metric. IncomingBytes IncomingRecords OutgoingBytes OutgoingRecords WriteProvisionedThroughputExceeded ReadProvisionedThroughputExceeded IteratorAgeMilliseconds ALL For more information, see Monitoring the Amazon Kinesis Streams Service with Amazon CloudWatch in the Amazon Kinesis Streams Developer Guide. - */ - ShardLevelMetrics: MetricsNameList; - } - export type EncryptionType = "NONE"|"KMS"|string; - export interface EnhancedMetrics { - /** - * List of shard-level metrics. The following are the valid shard-level metrics. The value "ALL" enhances every metric. IncomingBytes IncomingRecords OutgoingBytes OutgoingRecords WriteProvisionedThroughputExceeded ReadProvisionedThroughputExceeded IteratorAgeMilliseconds ALL For more information, see Monitoring the Amazon Kinesis Streams Service with Amazon CloudWatch in the Amazon Kinesis Streams Developer Guide. - */ - ShardLevelMetrics?: MetricsNameList; - } - export type EnhancedMonitoringList = EnhancedMetrics[]; - export interface EnhancedMonitoringOutput { - /** - * The name of the Amazon Kinesis stream. - */ - StreamName?: StreamName; - /** - * Represents the current state of the metrics that are in the enhanced state before the operation. - */ - CurrentShardLevelMetrics?: MetricsNameList; - /** - * Represents the list of all the metrics that would be in the enhanced state after the operation. - */ - DesiredShardLevelMetrics?: MetricsNameList; - } - export type ErrorCode = string; - export type ErrorMessage = string; - export interface GetRecordsInput { - /** - * The position in the shard from which you want to start sequentially reading data records. A shard iterator specifies this position using the sequence number of a data record in the shard. - */ - ShardIterator: ShardIterator; - /** - * The maximum number of records to return. Specify a value of up to 10,000. If you specify a value that is greater than 10,000, GetRecords throws InvalidArgumentException. - */ - Limit?: GetRecordsInputLimit; - } - export type GetRecordsInputLimit = number; - export interface GetRecordsOutput { - /** - * The data records retrieved from the shard. - */ - Records: RecordList; - /** - * The next position in the shard from which to start sequentially reading data records. If set to null, the shard has been closed and the requested iterator will not return any more data. - */ - NextShardIterator?: ShardIterator; - /** - * The number of milliseconds the GetRecords response is from the tip of the stream, indicating how far behind current time the consumer is. A value of zero indicates record processing is caught up, and there are no new records to process at this moment. - */ - MillisBehindLatest?: MillisBehindLatest; - } - export interface GetShardIteratorInput { - /** - * The name of the Amazon Kinesis stream. - */ - StreamName: StreamName; - /** - * The shard ID of the Amazon Kinesis shard to get the iterator for. - */ - ShardId: ShardId; - /** - * Determines how the shard iterator is used to start reading data records from the shard. The following are the valid Amazon Kinesis shard iterator types: AT_SEQUENCE_NUMBER - Start reading from the position denoted by a specific sequence number, provided in the value StartingSequenceNumber. AFTER_SEQUENCE_NUMBER - Start reading right after the position denoted by a specific sequence number, provided in the value StartingSequenceNumber. AT_TIMESTAMP - Start reading from the position denoted by a specific timestamp, provided in the value Timestamp. TRIM_HORIZON - Start reading at the last untrimmed record in the shard in the system, which is the oldest data record in the shard. LATEST - Start reading just after the most recent record in the shard, so that you always read the most recent data in the shard. - */ - ShardIteratorType: ShardIteratorType; - /** - * The sequence number of the data record in the shard from which to start reading. Used with shard iterator type AT_SEQUENCE_NUMBER and AFTER_SEQUENCE_NUMBER. - */ - StartingSequenceNumber?: SequenceNumber; - /** - * The timestamp of the data record from which to start reading. Used with shard iterator type AT_TIMESTAMP. A timestamp is the Unix epoch date with precision in milliseconds. For example, 2016-04-04T19:58:46.480-00:00 or 1459799926.480. If a record with this exact timestamp does not exist, the iterator returned is for the next (later) record. If the timestamp is older than the current trim horizon, the iterator returned is for the oldest untrimmed data record (TRIM_HORIZON). - */ - Timestamp?: Timestamp; - } - export interface GetShardIteratorOutput { - /** - * The position in the shard from which to start reading data records sequentially. A shard iterator specifies this position using the sequence number of a data record in a shard. - */ - ShardIterator?: ShardIterator; - } - export type HashKey = string; - export interface HashKeyRange { - /** - * The starting hash key of the hash key range. - */ - StartingHashKey: HashKey; - /** - * The ending hash key of the hash key range. - */ - EndingHashKey: HashKey; - } - export interface IncreaseStreamRetentionPeriodInput { - /** - * The name of the stream to modify. - */ - StreamName: StreamName; - /** - * The new retention period of the stream, in hours. Must be more than the current retention period. - */ - RetentionPeriodHours: PositiveIntegerObject; - } - export type KeyId = string; - export interface ListStreamsInput { - /** - * The maximum number of streams to list. - */ - Limit?: ListStreamsInputLimit; - /** - * The name of the stream to start the list with. - */ - ExclusiveStartStreamName?: StreamName; - } - export type ListStreamsInputLimit = number; - export interface ListStreamsOutput { - /** - * The names of the streams that are associated with the AWS account making the ListStreams request. - */ - StreamNames: StreamNameList; - /** - * If set to true, there are more streams available to list. - */ - HasMoreStreams: BooleanObject; - } - export interface ListTagsForStreamInput { - /** - * The name of the stream. - */ - StreamName: StreamName; - /** - * The key to use as the starting point for the list of tags. If this parameter is set, ListTagsForStream gets all tags that occur after ExclusiveStartTagKey. - */ - ExclusiveStartTagKey?: TagKey; - /** - * The number of tags to return. If this number is less than the total number of tags associated with the stream, HasMoreTags is set to true. To list additional tags, set ExclusiveStartTagKey to the last key in the response. - */ - Limit?: ListTagsForStreamInputLimit; - } - export type ListTagsForStreamInputLimit = number; - export interface ListTagsForStreamOutput { - /** - * A list of tags associated with StreamName, starting with the first tag after ExclusiveStartTagKey and up to the specified Limit. - */ - Tags: TagList; - /** - * If set to true, more tags are available. To request additional tags, set ExclusiveStartTagKey to the key of the last tag returned. - */ - HasMoreTags: BooleanObject; - } - export interface MergeShardsInput { - /** - * The name of the stream for the merge. - */ - StreamName: StreamName; - /** - * The shard ID of the shard to combine with the adjacent shard for the merge. - */ - ShardToMerge: ShardId; - /** - * The shard ID of the adjacent shard for the merge. - */ - AdjacentShardToMerge: ShardId; - } - export type MetricsName = "IncomingBytes"|"IncomingRecords"|"OutgoingBytes"|"OutgoingRecords"|"WriteProvisionedThroughputExceeded"|"ReadProvisionedThroughputExceeded"|"IteratorAgeMilliseconds"|"ALL"|string; - export type MetricsNameList = MetricsName[]; - export type MillisBehindLatest = number; - export type PartitionKey = string; - export type PositiveIntegerObject = number; - export interface PutRecordInput { - /** - * The name of the stream to put the data record into. - */ - StreamName: StreamName; - /** - * The data blob to put into the record, which is base64-encoded when the blob is serialized. When the data blob (the payload before base64-encoding) is added to the partition key size, the total size must not exceed the maximum record size (1 MB). - */ - Data: Data; - /** - * Determines which shard in the stream the data record is assigned to. Partition keys are Unicode strings with a maximum length limit of 256 characters for each key. Amazon Kinesis uses the partition key as input to a hash function that maps the partition key and associated data to a specific shard. Specifically, an MD5 hash function is used to map partition keys to 128-bit integer values and to map associated data records to shards. As a result of this hashing mechanism, all data records with the same partition key map to the same shard within the stream. - */ - PartitionKey: PartitionKey; - /** - * The hash value used to explicitly determine the shard the data record is assigned to by overriding the partition key hash. - */ - ExplicitHashKey?: HashKey; - /** - * Guarantees strictly increasing sequence numbers, for puts from the same client and to the same partition key. Usage: set the SequenceNumberForOrdering of record n to the sequence number of record n-1 (as returned in the result when putting record n-1). If this parameter is not set, records will be coarsely ordered based on arrival time. - */ - SequenceNumberForOrdering?: SequenceNumber; - } - export interface PutRecordOutput { - /** - * The shard ID of the shard where the data record was placed. - */ - ShardId: ShardId; - /** - * The sequence number identifier that was assigned to the put data record. The sequence number for the record is unique across all records in the stream. A sequence number is the identifier associated with every record put into the stream. - */ - SequenceNumber: SequenceNumber; - /** - * The encryption type to use on the record. This parameter can be one of the following values: NONE: Do not encrypt the records in the stream. KMS: Use server-side encryption on the records in the stream using a customer-managed KMS key. - */ - EncryptionType?: EncryptionType; - } - export interface PutRecordsInput { - /** - * The records associated with the request. - */ - Records: PutRecordsRequestEntryList; - /** - * The stream name associated with the request. - */ - StreamName: StreamName; - } - export interface PutRecordsOutput { - /** - * The number of unsuccessfully processed records in a PutRecords request. - */ - FailedRecordCount?: PositiveIntegerObject; - /** - * An array of successfully and unsuccessfully processed record results, correlated with the request by natural ordering. A record that is successfully added to a stream includes SequenceNumber and ShardId in the result. A record that fails to be added to a stream includes ErrorCode and ErrorMessage in the result. - */ - Records: PutRecordsResultEntryList; - /** - * The encryption type used on the records. This parameter can be one of the following values: NONE: Do not encrypt the records. KMS: Use server-side encryption on the records using a customer-managed KMS key. - */ - EncryptionType?: EncryptionType; - } - export interface PutRecordsRequestEntry { - /** - * The data blob to put into the record, which is base64-encoded when the blob is serialized. When the data blob (the payload before base64-encoding) is added to the partition key size, the total size must not exceed the maximum record size (1 MB). - */ - Data: Data; - /** - * The hash value used to determine explicitly the shard that the data record is assigned to by overriding the partition key hash. - */ - ExplicitHashKey?: HashKey; - /** - * Determines which shard in the stream the data record is assigned to. Partition keys are Unicode strings with a maximum length limit of 256 characters for each key. Amazon Kinesis uses the partition key as input to a hash function that maps the partition key and associated data to a specific shard. Specifically, an MD5 hash function is used to map partition keys to 128-bit integer values and to map associated data records to shards. As a result of this hashing mechanism, all data records with the same partition key map to the same shard within the stream. - */ - PartitionKey: PartitionKey; - } - export type PutRecordsRequestEntryList = PutRecordsRequestEntry[]; - export interface PutRecordsResultEntry { - /** - * The sequence number for an individual record result. - */ - SequenceNumber?: SequenceNumber; - /** - * The shard ID for an individual record result. - */ - ShardId?: ShardId; - /** - * The error code for an individual record result. ErrorCodes can be either ProvisionedThroughputExceededException or InternalFailure. - */ - ErrorCode?: ErrorCode; - /** - * The error message for an individual record result. An ErrorCode value of ProvisionedThroughputExceededException has an error message that includes the account ID, stream name, and shard ID. An ErrorCode value of InternalFailure has the error message "Internal Service Failure". - */ - ErrorMessage?: ErrorMessage; - } - export type PutRecordsResultEntryList = PutRecordsResultEntry[]; - export interface Record { - /** - * The unique identifier of the record within its shard. - */ - SequenceNumber: SequenceNumber; - /** - * The approximate time that the record was inserted into the stream. - */ - ApproximateArrivalTimestamp?: Timestamp; - /** - * The data blob. The data in the blob is both opaque and immutable to the Amazon Kinesis service, which does not inspect, interpret, or change the data in the blob in any way. When the data blob (the payload before base64-encoding) is added to the partition key size, the total size must not exceed the maximum record size (1 MB). - */ - Data: Data; - /** - * Identifies which shard in the stream the data record is assigned to. - */ - PartitionKey: PartitionKey; - /** - * The encryption type used on the record. This parameter can be one of the following values: NONE: Do not encrypt the records in the stream. KMS: Use server-side encryption on the records in the stream using a customer-managed KMS key. - */ - EncryptionType?: EncryptionType; - } - export type RecordList = Record[]; - export interface RemoveTagsFromStreamInput { - /** - * The name of the stream. - */ - StreamName: StreamName; - /** - * A list of tag keys. Each corresponding tag is removed from the stream. - */ - TagKeys: TagKeyList; - } - export type ScalingType = "UNIFORM_SCALING"|string; - export type SequenceNumber = string; - export interface SequenceNumberRange { - /** - * The starting sequence number for the range. - */ - StartingSequenceNumber: SequenceNumber; - /** - * The ending sequence number for the range. Shards that are in the OPEN state have an ending sequence number of null. - */ - EndingSequenceNumber?: SequenceNumber; - } - export interface Shard { - /** - * The unique identifier of the shard within the stream. - */ - ShardId: ShardId; - /** - * The shard ID of the shard's parent. - */ - ParentShardId?: ShardId; - /** - * The shard ID of the shard adjacent to the shard's parent. - */ - AdjacentParentShardId?: ShardId; - /** - * The range of possible hash key values for the shard, which is a set of ordered contiguous positive integers. - */ - HashKeyRange: HashKeyRange; - /** - * The range of possible sequence numbers for the shard. - */ - SequenceNumberRange: SequenceNumberRange; - } - export type ShardCountObject = number; - export type ShardId = string; - export type ShardIterator = string; - export type ShardIteratorType = "AT_SEQUENCE_NUMBER"|"AFTER_SEQUENCE_NUMBER"|"TRIM_HORIZON"|"LATEST"|"AT_TIMESTAMP"|string; - export type ShardList = Shard[]; - export interface SplitShardInput { - /** - * The name of the stream for the shard split. - */ - StreamName: StreamName; - /** - * The shard ID of the shard to split. - */ - ShardToSplit: ShardId; - /** - * A hash key value for the starting hash key of one of the child shards created by the split. The hash key range for a given shard constitutes a set of ordered contiguous positive integers. The value for NewStartingHashKey must be in the range of hash keys being mapped into the shard. The NewStartingHashKey hash key value and all higher hash key values in hash key range are distributed to one of the child shards. All the lower hash key values in the range are distributed to the other child shard. - */ - NewStartingHashKey: HashKey; - } - export interface StartStreamEncryptionInput { - /** - * The name of the stream for which to start encrypting records. - */ - StreamName: StreamName; - /** - * The encryption type to use. This parameter can be one of the following values: NONE: Not valid for this operation. An InvalidOperationException will be thrown. KMS: Use server-side encryption on the records in the stream using a customer-managed KMS key. - */ - EncryptionType: EncryptionType; - /** - * The GUID for the customer-managed KMS key to use for encryption. You can also use a Kinesis-owned master key by specifying the alias aws/kinesis. - */ - KeyId: KeyId; - } - export interface StopStreamEncryptionInput { - /** - * The name of the stream on which to stop encrypting records. - */ - StreamName: StreamName; - /** - * The encryption type. This parameter can be one of the following values: NONE: Not valid for this operation. An InvalidOperationException will be thrown. KMS: Use server-side encryption on the records in the stream using a customer-managed KMS key. - */ - EncryptionType: EncryptionType; - /** - * The GUID for the customer-managed key that was used for encryption. - */ - KeyId: KeyId; - } - export type StreamARN = string; - export interface StreamDescription { - /** - * The name of the stream being described. - */ - StreamName: StreamName; - /** - * The Amazon Resource Name (ARN) for the stream being described. - */ - StreamARN: StreamARN; - /** - * The current status of the stream being described. The stream status is one of the following states: CREATING - The stream is being created. Amazon Kinesis immediately returns and sets StreamStatus to CREATING. DELETING - The stream is being deleted. The specified stream is in the DELETING state until Amazon Kinesis completes the deletion. ACTIVE - The stream exists and is ready for read and write operations or deletion. You should perform read and write operations only on an ACTIVE stream. UPDATING - Shards in the stream are being merged or split. Read and write operations continue to work while the stream is in the UPDATING state. - */ - StreamStatus: StreamStatus; - /** - * The shards that comprise the stream. - */ - Shards: ShardList; - /** - * If set to true, more shards in the stream are available to describe. - */ - HasMoreShards: BooleanObject; - /** - * The current retention period, in hours. - */ - RetentionPeriodHours: PositiveIntegerObject; - /** - * The approximate time that the stream was created. - */ - StreamCreationTimestamp: Timestamp; - /** - * Represents the current enhanced monitoring settings of the stream. - */ - EnhancedMonitoring: EnhancedMonitoringList; - /** - * The server-side encryption type used on the stream. This parameter can be one of the following values: NONE: Do not encrypt the records in the stream. KMS: Use server-side encryption on the records in the stream using a customer-managed KMS key. - */ - EncryptionType?: EncryptionType; - /** - * The GUID for the customer-managed KMS key used for encryption on the stream. - */ - KeyId?: KeyId; - } - export type StreamName = string; - export type StreamNameList = StreamName[]; - export type StreamStatus = "CREATING"|"DELETING"|"ACTIVE"|"UPDATING"|string; - export interface Tag { - /** - * A unique identifier for the tag. Maximum length: 128 characters. Valid characters: Unicode letters, digits, white space, _ . / = + - % @ - */ - Key: TagKey; - /** - * An optional string, typically used to describe or define the tag. Maximum length: 256 characters. Valid characters: Unicode letters, digits, white space, _ . / = + - % @ - */ - Value?: TagValue; - } - export type TagKey = string; - export type TagKeyList = TagKey[]; - export type TagList = Tag[]; - export type TagMap = {[key: string]: TagValue}; - export type TagValue = string; - export type Timestamp = Date; - export interface UpdateShardCountInput { - /** - * The name of the stream. - */ - StreamName: StreamName; - /** - * The new number of shards. - */ - TargetShardCount: PositiveIntegerObject; - /** - * The scaling type. Uniform scaling creates shards of equal size. - */ - ScalingType: ScalingType; - } - export interface UpdateShardCountOutput { - /** - * The name of the stream. - */ - StreamName?: StreamName; - /** - * The current number of shards. - */ - CurrentShardCount?: PositiveIntegerObject; - /** - * The updated number of shards. - */ - TargetShardCount?: PositiveIntegerObject; - } - /** - * A string in YYYY-MM-DD format that represents the latest possible API version that can be used in this service. Specify 'latest' to use the latest possible version. - */ - export type apiVersion = "2013-12-02"|"latest"|string; - export interface ClientApiVersions { - /** - * A string in YYYY-MM-DD format that represents the latest possible API version that can be used in this service. Specify 'latest' to use the latest possible version. - */ - apiVersion?: apiVersion; - } - export type ClientConfiguration = ServiceConfigurationOptions & ClientApiVersions; - /** - * Contains interfaces for use with the Kinesis client. - */ - export import Types = Kinesis; -} -export = Kinesis; diff --git a/workshops/monte-carlo-on-ec2-spot-fleet/src/web/node_modules/aws-sdk/clients/kinesis.js b/workshops/monte-carlo-on-ec2-spot-fleet/src/web/node_modules/aws-sdk/clients/kinesis.js deleted file mode 100644 index e7fbe10e..00000000 --- a/workshops/monte-carlo-on-ec2-spot-fleet/src/web/node_modules/aws-sdk/clients/kinesis.js +++ /dev/null @@ -1,19 +0,0 @@ -require('../lib/node_loader'); -var AWS = require('../lib/core'); -var Service = AWS.Service; -var apiLoader = AWS.apiLoader; - -apiLoader.services['kinesis'] = {}; -AWS.Kinesis = Service.defineService('kinesis', ['2013-12-02']); -Object.defineProperty(apiLoader.services['kinesis'], '2013-12-02', { - get: function get() { - var model = require('../apis/kinesis-2013-12-02.min.json'); - model.paginators = require('../apis/kinesis-2013-12-02.paginators.json').pagination; - model.waiters = require('../apis/kinesis-2013-12-02.waiters2.json').waiters; - return model; - }, - enumerable: true, - configurable: true -}); - -module.exports = AWS.Kinesis; diff --git a/workshops/monte-carlo-on-ec2-spot-fleet/src/web/node_modules/aws-sdk/clients/kinesisanalytics.d.ts b/workshops/monte-carlo-on-ec2-spot-fleet/src/web/node_modules/aws-sdk/clients/kinesisanalytics.d.ts deleted file mode 100644 index 6ffff2ee..00000000 --- a/workshops/monte-carlo-on-ec2-spot-fleet/src/web/node_modules/aws-sdk/clients/kinesisanalytics.d.ts +++ /dev/null @@ -1,1150 +0,0 @@ -import {Request} from '../lib/request'; -import {Response} from '../lib/response'; -import {AWSError} from '../lib/error'; -import {Service} from '../lib/service'; -import {ServiceConfigurationOptions} from '../lib/service'; -import {ConfigBase as Config} from '../lib/config'; -interface Blob {} -declare class KinesisAnalytics extends Service { - /** - * Constructs a service object. This object has one method for each API operation. - */ - constructor(options?: KinesisAnalytics.Types.ClientConfiguration) - config: Config & KinesisAnalytics.Types.ClientConfiguration; - /** - * Adds a CloudWatch log stream to monitor application configuration errors. For more information about using CloudWatch log streams with Amazon Kinesis Analytics applications, see Working with Amazon CloudWatch Logs. - */ - addApplicationCloudWatchLoggingOption(params: KinesisAnalytics.Types.AddApplicationCloudWatchLoggingOptionRequest, callback?: (err: AWSError, data: KinesisAnalytics.Types.AddApplicationCloudWatchLoggingOptionResponse) => void): Request; - /** - * Adds a CloudWatch log stream to monitor application configuration errors. For more information about using CloudWatch log streams with Amazon Kinesis Analytics applications, see Working with Amazon CloudWatch Logs. - */ - addApplicationCloudWatchLoggingOption(callback?: (err: AWSError, data: KinesisAnalytics.Types.AddApplicationCloudWatchLoggingOptionResponse) => void): Request; - /** - * Adds a streaming source to your Amazon Kinesis application. For conceptual information, see Configuring Application Input. You can add a streaming source either when you create an application or you can use this operation to add a streaming source after you create an application. For more information, see CreateApplication. Any configuration update, including adding a streaming source using this operation, results in a new version of the application. You can use the DescribeApplication operation to find the current application version. This operation requires permissions to perform the kinesisanalytics:AddApplicationInput action. - */ - addApplicationInput(params: KinesisAnalytics.Types.AddApplicationInputRequest, callback?: (err: AWSError, data: KinesisAnalytics.Types.AddApplicationInputResponse) => void): Request; - /** - * Adds a streaming source to your Amazon Kinesis application. For conceptual information, see Configuring Application Input. You can add a streaming source either when you create an application or you can use this operation to add a streaming source after you create an application. For more information, see CreateApplication. Any configuration update, including adding a streaming source using this operation, results in a new version of the application. You can use the DescribeApplication operation to find the current application version. This operation requires permissions to perform the kinesisanalytics:AddApplicationInput action. - */ - addApplicationInput(callback?: (err: AWSError, data: KinesisAnalytics.Types.AddApplicationInputResponse) => void): Request; - /** - * Adds an InputProcessingConfiguration to an application. An input processor preprocesses records on the input stream before the application's SQL code executes. Currently, the only input processor available is AWS Lambda. - */ - addApplicationInputProcessingConfiguration(params: KinesisAnalytics.Types.AddApplicationInputProcessingConfigurationRequest, callback?: (err: AWSError, data: KinesisAnalytics.Types.AddApplicationInputProcessingConfigurationResponse) => void): Request; - /** - * Adds an InputProcessingConfiguration to an application. An input processor preprocesses records on the input stream before the application's SQL code executes. Currently, the only input processor available is AWS Lambda. - */ - addApplicationInputProcessingConfiguration(callback?: (err: AWSError, data: KinesisAnalytics.Types.AddApplicationInputProcessingConfigurationResponse) => void): Request; - /** - * Adds an external destination to your Amazon Kinesis Analytics application. If you want Amazon Kinesis Analytics to deliver data from an in-application stream within your application to an external destination (such as an Amazon Kinesis stream or a Firehose delivery stream), you add the relevant configuration to your application using this operation. You can configure one or more outputs for your application. Each output configuration maps an in-application stream and an external destination. You can use one of the output configurations to deliver data from your in-application error stream to an external destination so that you can analyze the errors. For conceptual information, see Understanding Application Output (Destination). Note that any configuration update, including adding a streaming source using this operation, results in a new version of the application. You can use the DescribeApplication operation to find the current application version. For the limits on the number of application inputs and outputs you can configure, see Limits. This operation requires permissions to perform the kinesisanalytics:AddApplicationOutput action. - */ - addApplicationOutput(params: KinesisAnalytics.Types.AddApplicationOutputRequest, callback?: (err: AWSError, data: KinesisAnalytics.Types.AddApplicationOutputResponse) => void): Request; - /** - * Adds an external destination to your Amazon Kinesis Analytics application. If you want Amazon Kinesis Analytics to deliver data from an in-application stream within your application to an external destination (such as an Amazon Kinesis stream or a Firehose delivery stream), you add the relevant configuration to your application using this operation. You can configure one or more outputs for your application. Each output configuration maps an in-application stream and an external destination. You can use one of the output configurations to deliver data from your in-application error stream to an external destination so that you can analyze the errors. For conceptual information, see Understanding Application Output (Destination). Note that any configuration update, including adding a streaming source using this operation, results in a new version of the application. You can use the DescribeApplication operation to find the current application version. For the limits on the number of application inputs and outputs you can configure, see Limits. This operation requires permissions to perform the kinesisanalytics:AddApplicationOutput action. - */ - addApplicationOutput(callback?: (err: AWSError, data: KinesisAnalytics.Types.AddApplicationOutputResponse) => void): Request; - /** - * Adds a reference data source to an existing application. Amazon Kinesis Analytics reads reference data (that is, an Amazon S3 object) and creates an in-application table within your application. In the request, you provide the source (S3 bucket name and object key name), name of the in-application table to create, and the necessary mapping information that describes how data in Amazon S3 object maps to columns in the resulting in-application table. For conceptual information, see Configuring Application Input. For the limits on data sources you can add to your application, see Limits. This operation requires permissions to perform the kinesisanalytics:AddApplicationOutput action. - */ - addApplicationReferenceDataSource(params: KinesisAnalytics.Types.AddApplicationReferenceDataSourceRequest, callback?: (err: AWSError, data: KinesisAnalytics.Types.AddApplicationReferenceDataSourceResponse) => void): Request; - /** - * Adds a reference data source to an existing application. Amazon Kinesis Analytics reads reference data (that is, an Amazon S3 object) and creates an in-application table within your application. In the request, you provide the source (S3 bucket name and object key name), name of the in-application table to create, and the necessary mapping information that describes how data in Amazon S3 object maps to columns in the resulting in-application table. For conceptual information, see Configuring Application Input. For the limits on data sources you can add to your application, see Limits. This operation requires permissions to perform the kinesisanalytics:AddApplicationOutput action. - */ - addApplicationReferenceDataSource(callback?: (err: AWSError, data: KinesisAnalytics.Types.AddApplicationReferenceDataSourceResponse) => void): Request; - /** - * Creates an Amazon Kinesis Analytics application. You can configure each application with one streaming source as input, application code to process the input, and up to five streaming destinations where you want Amazon Kinesis Analytics to write the output data from your application. For an overview, see How it Works. In the input configuration, you map the streaming source to an in-application stream, which you can think of as a constantly updating table. In the mapping, you must provide a schema for the in-application stream and map each data column in the in-application stream to a data element in the streaming source. Your application code is one or more SQL statements that read input data, transform it, and generate output. Your application code can create one or more SQL artifacts like SQL streams or pumps. In the output configuration, you can configure the application to write data from in-application streams created in your applications to up to five streaming destinations. To read data from your source stream or write data to destination streams, Amazon Kinesis Analytics needs your permissions. You grant these permissions by creating IAM roles. This operation requires permissions to perform the kinesisanalytics:CreateApplication action. For introductory exercises to create an Amazon Kinesis Analytics application, see Getting Started. - */ - createApplication(params: KinesisAnalytics.Types.CreateApplicationRequest, callback?: (err: AWSError, data: KinesisAnalytics.Types.CreateApplicationResponse) => void): Request; - /** - * Creates an Amazon Kinesis Analytics application. You can configure each application with one streaming source as input, application code to process the input, and up to five streaming destinations where you want Amazon Kinesis Analytics to write the output data from your application. For an overview, see How it Works. In the input configuration, you map the streaming source to an in-application stream, which you can think of as a constantly updating table. In the mapping, you must provide a schema for the in-application stream and map each data column in the in-application stream to a data element in the streaming source. Your application code is one or more SQL statements that read input data, transform it, and generate output. Your application code can create one or more SQL artifacts like SQL streams or pumps. In the output configuration, you can configure the application to write data from in-application streams created in your applications to up to five streaming destinations. To read data from your source stream or write data to destination streams, Amazon Kinesis Analytics needs your permissions. You grant these permissions by creating IAM roles. This operation requires permissions to perform the kinesisanalytics:CreateApplication action. For introductory exercises to create an Amazon Kinesis Analytics application, see Getting Started. - */ - createApplication(callback?: (err: AWSError, data: KinesisAnalytics.Types.CreateApplicationResponse) => void): Request; - /** - * Deletes the specified application. Amazon Kinesis Analytics halts application execution and deletes the application, including any application artifacts (such as in-application streams, reference table, and application code). This operation requires permissions to perform the kinesisanalytics:DeleteApplication action. - */ - deleteApplication(params: KinesisAnalytics.Types.DeleteApplicationRequest, callback?: (err: AWSError, data: KinesisAnalytics.Types.DeleteApplicationResponse) => void): Request; - /** - * Deletes the specified application. Amazon Kinesis Analytics halts application execution and deletes the application, including any application artifacts (such as in-application streams, reference table, and application code). This operation requires permissions to perform the kinesisanalytics:DeleteApplication action. - */ - deleteApplication(callback?: (err: AWSError, data: KinesisAnalytics.Types.DeleteApplicationResponse) => void): Request; - /** - * Deletes a CloudWatch log stream from an application. For more information about using CloudWatch log streams with Amazon Kinesis Analytics applications, see Working with Amazon CloudWatch Logs. - */ - deleteApplicationCloudWatchLoggingOption(params: KinesisAnalytics.Types.DeleteApplicationCloudWatchLoggingOptionRequest, callback?: (err: AWSError, data: KinesisAnalytics.Types.DeleteApplicationCloudWatchLoggingOptionResponse) => void): Request; - /** - * Deletes a CloudWatch log stream from an application. For more information about using CloudWatch log streams with Amazon Kinesis Analytics applications, see Working with Amazon CloudWatch Logs. - */ - deleteApplicationCloudWatchLoggingOption(callback?: (err: AWSError, data: KinesisAnalytics.Types.DeleteApplicationCloudWatchLoggingOptionResponse) => void): Request; - /** - * Deletes an InputProcessingConfiguration from an input. - */ - deleteApplicationInputProcessingConfiguration(params: KinesisAnalytics.Types.DeleteApplicationInputProcessingConfigurationRequest, callback?: (err: AWSError, data: KinesisAnalytics.Types.DeleteApplicationInputProcessingConfigurationResponse) => void): Request; - /** - * Deletes an InputProcessingConfiguration from an input. - */ - deleteApplicationInputProcessingConfiguration(callback?: (err: AWSError, data: KinesisAnalytics.Types.DeleteApplicationInputProcessingConfigurationResponse) => void): Request; - /** - * Deletes output destination configuration from your application configuration. Amazon Kinesis Analytics will no longer write data from the corresponding in-application stream to the external output destination. This operation requires permissions to perform the kinesisanalytics:DeleteApplicationOutput action. - */ - deleteApplicationOutput(params: KinesisAnalytics.Types.DeleteApplicationOutputRequest, callback?: (err: AWSError, data: KinesisAnalytics.Types.DeleteApplicationOutputResponse) => void): Request; - /** - * Deletes output destination configuration from your application configuration. Amazon Kinesis Analytics will no longer write data from the corresponding in-application stream to the external output destination. This operation requires permissions to perform the kinesisanalytics:DeleteApplicationOutput action. - */ - deleteApplicationOutput(callback?: (err: AWSError, data: KinesisAnalytics.Types.DeleteApplicationOutputResponse) => void): Request; - /** - * Deletes a reference data source configuration from the specified application configuration. If the application is running, Amazon Kinesis Analytics immediately removes the in-application table that you created using the AddApplicationReferenceDataSource operation. This operation requires permissions to perform the kinesisanalytics.DeleteApplicationReferenceDataSource action. - */ - deleteApplicationReferenceDataSource(params: KinesisAnalytics.Types.DeleteApplicationReferenceDataSourceRequest, callback?: (err: AWSError, data: KinesisAnalytics.Types.DeleteApplicationReferenceDataSourceResponse) => void): Request; - /** - * Deletes a reference data source configuration from the specified application configuration. If the application is running, Amazon Kinesis Analytics immediately removes the in-application table that you created using the AddApplicationReferenceDataSource operation. This operation requires permissions to perform the kinesisanalytics.DeleteApplicationReferenceDataSource action. - */ - deleteApplicationReferenceDataSource(callback?: (err: AWSError, data: KinesisAnalytics.Types.DeleteApplicationReferenceDataSourceResponse) => void): Request; - /** - * Returns information about a specific Amazon Kinesis Analytics application. If you want to retrieve a list of all applications in your account, use the ListApplications operation. This operation requires permissions to perform the kinesisanalytics:DescribeApplication action. You can use DescribeApplication to get the current application versionId, which you need to call other operations such as Update. - */ - describeApplication(params: KinesisAnalytics.Types.DescribeApplicationRequest, callback?: (err: AWSError, data: KinesisAnalytics.Types.DescribeApplicationResponse) => void): Request; - /** - * Returns information about a specific Amazon Kinesis Analytics application. If you want to retrieve a list of all applications in your account, use the ListApplications operation. This operation requires permissions to perform the kinesisanalytics:DescribeApplication action. You can use DescribeApplication to get the current application versionId, which you need to call other operations such as Update. - */ - describeApplication(callback?: (err: AWSError, data: KinesisAnalytics.Types.DescribeApplicationResponse) => void): Request; - /** - * Infers a schema by evaluating sample records on the specified streaming source (Amazon Kinesis stream or Amazon Kinesis Firehose delivery stream). In the response, the operation returns the inferred schema and also the sample records that the operation used to infer the schema. You can use the inferred schema when configuring a streaming source for your application. For conceptual information, see Configuring Application Input. Note that when you create an application using the Amazon Kinesis Analytics console, the console uses this operation to infer a schema and show it in the console user interface. This operation requires permissions to perform the kinesisanalytics:DiscoverInputSchema action. - */ - discoverInputSchema(params: KinesisAnalytics.Types.DiscoverInputSchemaRequest, callback?: (err: AWSError, data: KinesisAnalytics.Types.DiscoverInputSchemaResponse) => void): Request; - /** - * Infers a schema by evaluating sample records on the specified streaming source (Amazon Kinesis stream or Amazon Kinesis Firehose delivery stream). In the response, the operation returns the inferred schema and also the sample records that the operation used to infer the schema. You can use the inferred schema when configuring a streaming source for your application. For conceptual information, see Configuring Application Input. Note that when you create an application using the Amazon Kinesis Analytics console, the console uses this operation to infer a schema and show it in the console user interface. This operation requires permissions to perform the kinesisanalytics:DiscoverInputSchema action. - */ - discoverInputSchema(callback?: (err: AWSError, data: KinesisAnalytics.Types.DiscoverInputSchemaResponse) => void): Request; - /** - * Returns a list of Amazon Kinesis Analytics applications in your account. For each application, the response includes the application name, Amazon Resource Name (ARN), and status. If the response returns the HasMoreApplications value as true, you can send another request by adding the ExclusiveStartApplicationName in the request body, and set the value of this to the last application name from the previous response. If you want detailed information about a specific application, use DescribeApplication. This operation requires permissions to perform the kinesisanalytics:ListApplications action. - */ - listApplications(params: KinesisAnalytics.Types.ListApplicationsRequest, callback?: (err: AWSError, data: KinesisAnalytics.Types.ListApplicationsResponse) => void): Request; - /** - * Returns a list of Amazon Kinesis Analytics applications in your account. For each application, the response includes the application name, Amazon Resource Name (ARN), and status. If the response returns the HasMoreApplications value as true, you can send another request by adding the ExclusiveStartApplicationName in the request body, and set the value of this to the last application name from the previous response. If you want detailed information about a specific application, use DescribeApplication. This operation requires permissions to perform the kinesisanalytics:ListApplications action. - */ - listApplications(callback?: (err: AWSError, data: KinesisAnalytics.Types.ListApplicationsResponse) => void): Request; - /** - * Starts the specified Amazon Kinesis Analytics application. After creating an application, you must exclusively call this operation to start your application. After the application starts, it begins consuming the input data, processes it, and writes the output to the configured destination. The application status must be READY for you to start an application. You can get the application status in the console or using the DescribeApplication operation. After you start the application, you can stop the application from processing the input by calling the StopApplication operation. This operation requires permissions to perform the kinesisanalytics:StartApplication action. - */ - startApplication(params: KinesisAnalytics.Types.StartApplicationRequest, callback?: (err: AWSError, data: KinesisAnalytics.Types.StartApplicationResponse) => void): Request; - /** - * Starts the specified Amazon Kinesis Analytics application. After creating an application, you must exclusively call this operation to start your application. After the application starts, it begins consuming the input data, processes it, and writes the output to the configured destination. The application status must be READY for you to start an application. You can get the application status in the console or using the DescribeApplication operation. After you start the application, you can stop the application from processing the input by calling the StopApplication operation. This operation requires permissions to perform the kinesisanalytics:StartApplication action. - */ - startApplication(callback?: (err: AWSError, data: KinesisAnalytics.Types.StartApplicationResponse) => void): Request; - /** - * Stops the application from processing input data. You can stop an application only if it is in the running state. You can use the DescribeApplication operation to find the application state. After the application is stopped, Amazon Kinesis Analytics stops reading data from the input, the application stops processing data, and there is no output written to the destination. This operation requires permissions to perform the kinesisanalytics:StopApplication action. - */ - stopApplication(params: KinesisAnalytics.Types.StopApplicationRequest, callback?: (err: AWSError, data: KinesisAnalytics.Types.StopApplicationResponse) => void): Request; - /** - * Stops the application from processing input data. You can stop an application only if it is in the running state. You can use the DescribeApplication operation to find the application state. After the application is stopped, Amazon Kinesis Analytics stops reading data from the input, the application stops processing data, and there is no output written to the destination. This operation requires permissions to perform the kinesisanalytics:StopApplication action. - */ - stopApplication(callback?: (err: AWSError, data: KinesisAnalytics.Types.StopApplicationResponse) => void): Request; - /** - * Updates an existing Amazon Kinesis Analytics application. Using this API, you can update application code, input configuration, and output configuration. Note that Amazon Kinesis Analytics updates the CurrentApplicationVersionId each time you update your application. This operation requires permission for the kinesisanalytics:UpdateApplication action. - */ - updateApplication(params: KinesisAnalytics.Types.UpdateApplicationRequest, callback?: (err: AWSError, data: KinesisAnalytics.Types.UpdateApplicationResponse) => void): Request; - /** - * Updates an existing Amazon Kinesis Analytics application. Using this API, you can update application code, input configuration, and output configuration. Note that Amazon Kinesis Analytics updates the CurrentApplicationVersionId each time you update your application. This operation requires permission for the kinesisanalytics:UpdateApplication action. - */ - updateApplication(callback?: (err: AWSError, data: KinesisAnalytics.Types.UpdateApplicationResponse) => void): Request; -} -declare namespace KinesisAnalytics { - export interface AddApplicationCloudWatchLoggingOptionRequest { - /** - * The Kinesis Analytics application name. - */ - ApplicationName: ApplicationName; - /** - * The version ID of the Kinesis Analytics application. - */ - CurrentApplicationVersionId: ApplicationVersionId; - /** - * Provides the CloudWatch log stream Amazon Resource Name (ARN) and the IAM role ARN. Note: To write application messages to CloudWatch, the IAM role that is used must have the PutLogEvents policy action enabled. - */ - CloudWatchLoggingOption: CloudWatchLoggingOption; - } - export interface AddApplicationCloudWatchLoggingOptionResponse { - } - export interface AddApplicationInputProcessingConfigurationRequest { - /** - * Name of the application to which you want to add the input processing configuration. - */ - ApplicationName: ApplicationName; - /** - * Version of the application to which you want to add the input processing configuration. You can use the DescribeApplication operation to get the current application version. If the version specified is not the current version, the ConcurrentModificationException is returned. - */ - CurrentApplicationVersionId: ApplicationVersionId; - /** - * The ID of the input configuration to which to add the input configuration. You can get a list of the input IDs for an application using the DescribeApplication operation. - */ - InputId: Id; - /** - * The InputProcessingConfiguration to add to the application. - */ - InputProcessingConfiguration: InputProcessingConfiguration; - } - export interface AddApplicationInputProcessingConfigurationResponse { - } - export interface AddApplicationInputRequest { - /** - * Name of your existing Amazon Kinesis Analytics application to which you want to add the streaming source. - */ - ApplicationName: ApplicationName; - /** - * Current version of your Amazon Kinesis Analytics application. You can use the DescribeApplication operation to find the current application version. - */ - CurrentApplicationVersionId: ApplicationVersionId; - /** - * The Input to add. - */ - Input: Input; - } - export interface AddApplicationInputResponse { - } - export interface AddApplicationOutputRequest { - /** - * Name of the application to which you want to add the output configuration. - */ - ApplicationName: ApplicationName; - /** - * Version of the application to which you want add the output configuration. You can use the DescribeApplication operation to get the current application version. If the version specified is not the current version, the ConcurrentModificationException is returned. - */ - CurrentApplicationVersionId: ApplicationVersionId; - /** - * An array of objects, each describing one output configuration. In the output configuration, you specify the name of an in-application stream, a destination (that is, an Amazon Kinesis stream or an Amazon Kinesis Firehose delivery stream), and record the formation to use when writing to the destination. - */ - Output: Output; - } - export interface AddApplicationOutputResponse { - } - export interface AddApplicationReferenceDataSourceRequest { - /** - * Name of an existing application. - */ - ApplicationName: ApplicationName; - /** - * Version of the application for which you are adding the reference data source. You can use the DescribeApplication operation to get the current application version. If the version specified is not the current version, the ConcurrentModificationException is returned. - */ - CurrentApplicationVersionId: ApplicationVersionId; - /** - * The reference data source can be an object in your Amazon S3 bucket. Amazon Kinesis Analytics reads the object and copies the data into the in-application table that is created. You provide an S3 bucket, object key name, and the resulting in-application table that is created. You must also provide an IAM role with the necessary permissions that Amazon Kinesis Analytics can assume to read the object from your S3 bucket on your behalf. - */ - ReferenceDataSource: ReferenceDataSource; - } - export interface AddApplicationReferenceDataSourceResponse { - } - export type ApplicationCode = string; - export type ApplicationDescription = string; - export interface ApplicationDetail { - /** - * Name of the application. - */ - ApplicationName: ApplicationName; - /** - * Description of the application. - */ - ApplicationDescription?: ApplicationDescription; - /** - * ARN of the application. - */ - ApplicationARN: ResourceARN; - /** - * Status of the application. - */ - ApplicationStatus: ApplicationStatus; - /** - * Timestamp when the application version was created. - */ - CreateTimestamp?: Timestamp; - /** - * Timestamp when the application was last updated. - */ - LastUpdateTimestamp?: Timestamp; - /** - * Describes the application input configuration. For more information, see Configuring Application Input. - */ - InputDescriptions?: InputDescriptions; - /** - * Describes the application output configuration. For more information, see Configuring Application Output. - */ - OutputDescriptions?: OutputDescriptions; - /** - * Describes reference data sources configured for the application. For more information, see Configuring Application Input. - */ - ReferenceDataSourceDescriptions?: ReferenceDataSourceDescriptions; - /** - * Describes the CloudWatch log streams that are configured to receive application messages. For more information about using CloudWatch log streams with Amazon Kinesis Analytics applications, see Working with Amazon CloudWatch Logs. - */ - CloudWatchLoggingOptionDescriptions?: CloudWatchLoggingOptionDescriptions; - /** - * Returns the application code that you provided to perform data analysis on any of the in-application streams in your application. - */ - ApplicationCode?: ApplicationCode; - /** - * Provides the current application version. - */ - ApplicationVersionId: ApplicationVersionId; - } - export type ApplicationName = string; - export type ApplicationStatus = "DELETING"|"STARTING"|"STOPPING"|"READY"|"RUNNING"|"UPDATING"|string; - export type ApplicationSummaries = ApplicationSummary[]; - export interface ApplicationSummary { - /** - * Name of the application. - */ - ApplicationName: ApplicationName; - /** - * ARN of the application. - */ - ApplicationARN: ResourceARN; - /** - * Status of the application. - */ - ApplicationStatus: ApplicationStatus; - } - export interface ApplicationUpdate { - /** - * Describes application input configuration updates. - */ - InputUpdates?: InputUpdates; - /** - * Describes application code updates. - */ - ApplicationCodeUpdate?: ApplicationCode; - /** - * Describes application output configuration updates. - */ - OutputUpdates?: OutputUpdates; - /** - * Describes application reference data source updates. - */ - ReferenceDataSourceUpdates?: ReferenceDataSourceUpdates; - /** - * Describes application CloudWatch logging option updates. - */ - CloudWatchLoggingOptionUpdates?: CloudWatchLoggingOptionUpdates; - } - export type ApplicationVersionId = number; - export type BooleanObject = boolean; - export type BucketARN = string; - export interface CSVMappingParameters { - /** - * Row delimiter. For example, in a CSV format, '\n' is the typical row delimiter. - */ - RecordRowDelimiter: RecordRowDelimiter; - /** - * Column delimiter. For example, in a CSV format, a comma (",") is the typical column delimiter. - */ - RecordColumnDelimiter: RecordColumnDelimiter; - } - export interface CloudWatchLoggingOption { - /** - * ARN of the CloudWatch log to receive application messages. - */ - LogStreamARN: LogStreamARN; - /** - * IAM ARN of the role to use to send application messages. Note: To write application messages to CloudWatch, the IAM role that is used must have the PutLogEvents policy action enabled. - */ - RoleARN: RoleARN; - } - export interface CloudWatchLoggingOptionDescription { - /** - * ID of the CloudWatch logging option description. - */ - CloudWatchLoggingOptionId?: Id; - /** - * ARN of the CloudWatch log to receive application messages. - */ - LogStreamARN: LogStreamARN; - /** - * IAM ARN of the role to use to send application messages. Note: To write application messages to CloudWatch, the IAM role used must have the PutLogEvents policy action enabled. - */ - RoleARN: RoleARN; - } - export type CloudWatchLoggingOptionDescriptions = CloudWatchLoggingOptionDescription[]; - export interface CloudWatchLoggingOptionUpdate { - /** - * ID of the CloudWatch logging option to update - */ - CloudWatchLoggingOptionId: Id; - /** - * ARN of the CloudWatch log to receive application messages. - */ - LogStreamARNUpdate?: LogStreamARN; - /** - * IAM ARN of the role to use to send application messages. Note: To write application messages to CloudWatch, the IAM role used must have the PutLogEvents policy action enabled. - */ - RoleARNUpdate?: RoleARN; - } - export type CloudWatchLoggingOptionUpdates = CloudWatchLoggingOptionUpdate[]; - export type CloudWatchLoggingOptions = CloudWatchLoggingOption[]; - export interface CreateApplicationRequest { - /** - * Name of your Amazon Kinesis Analytics application (for example, sample-app). - */ - ApplicationName: ApplicationName; - /** - * Summary description of the application. - */ - ApplicationDescription?: ApplicationDescription; - /** - * Use this parameter to configure the application input. You can configure your application to receive input from a single streaming source. In this configuration, you map this streaming source to an in-application stream that is created. Your application code can then query the in-application stream like a table (you can think of it as a constantly updating table). For the streaming source, you provide its Amazon Resource Name (ARN) and format of data on the stream (for example, JSON, CSV, etc). You also must provide an IAM role that Amazon Kinesis Analytics can assume to read this stream on your behalf. To create the in-application stream, you need to specify a schema to transform your data into a schematized version used in SQL. In the schema, you provide the necessary mapping of the data elements in the streaming source to record columns in the in-app stream. - */ - Inputs?: Inputs; - /** - * You can configure application output to write data from any of the in-application streams to up to five destinations. These destinations can be Amazon Kinesis streams, Amazon Kinesis Firehose delivery streams, or both. In the configuration, you specify the in-application stream name, the destination stream Amazon Resource Name (ARN), and the format to use when writing data. You must also provide an IAM role that Amazon Kinesis Analytics can assume to write to the destination stream on your behalf. In the output configuration, you also provide the output stream Amazon Resource Name (ARN) and the format of data in the stream (for example, JSON, CSV). You also must provide an IAM role that Amazon Kinesis Analytics can assume to write to this stream on your behalf. - */ - Outputs?: Outputs; - /** - * Use this parameter to configure a CloudWatch log stream to monitor application configuration errors. For more information, see Working with Amazon CloudWatch Logs. - */ - CloudWatchLoggingOptions?: CloudWatchLoggingOptions; - /** - * One or more SQL statements that read input data, transform it, and generate output. For example, you can write a SQL statement that reads data from one in-application stream, generates a running average of the number of advertisement clicks by vendor, and insert resulting rows in another in-application stream using pumps. For more inforamtion about the typical pattern, see Application Code. You can provide such series of SQL statements, where output of one statement can be used as the input for the next statement. You store intermediate results by creating in-application streams and pumps. Note that the application code must create the streams with names specified in the Outputs. For example, if your Outputs defines output streams named ExampleOutputStream1 and ExampleOutputStream2, then your application code must create these streams. - */ - ApplicationCode?: ApplicationCode; - } - export interface CreateApplicationResponse { - /** - * In response to your CreateApplication request, Amazon Kinesis Analytics returns a response with a summary of the application it created, including the application Amazon Resource Name (ARN), name, and status. - */ - ApplicationSummary: ApplicationSummary; - } - export interface DeleteApplicationCloudWatchLoggingOptionRequest { - /** - * The Kinesis Analytics application name. - */ - ApplicationName: ApplicationName; - /** - * The version ID of the Kinesis Analytics application. - */ - CurrentApplicationVersionId: ApplicationVersionId; - /** - * The CloudWatchLoggingOptionId of the CloudWatch logging option to delete. You can use the DescribeApplication operation to get the CloudWatchLoggingOptionId. - */ - CloudWatchLoggingOptionId: Id; - } - export interface DeleteApplicationCloudWatchLoggingOptionResponse { - } - export interface DeleteApplicationInputProcessingConfigurationRequest { - /** - * The Kinesis Analytics application name. - */ - ApplicationName: ApplicationName; - /** - * The version ID of the Kinesis Analytics application. - */ - CurrentApplicationVersionId: ApplicationVersionId; - /** - * The ID of the input configuration from which to delete the input configuration. You can get a list of the input IDs for an application using the DescribeApplication operation. - */ - InputId: Id; - } - export interface DeleteApplicationInputProcessingConfigurationResponse { - } - export interface DeleteApplicationOutputRequest { - /** - * Amazon Kinesis Analytics application name. - */ - ApplicationName: ApplicationName; - /** - * Amazon Kinesis Analytics application version. You can use the DescribeApplication operation to get the current application version. If the version specified is not the current version, the ConcurrentModificationException is returned. - */ - CurrentApplicationVersionId: ApplicationVersionId; - /** - * The ID of the configuration to delete. Each output configuration that is added to the application, either when the application is created or later using the AddApplicationOutput operation, has a unique ID. You need to provide the ID to uniquely identify the output configuration that you want to delete from the application configuration. You can use the DescribeApplication operation to get the specific OutputId. - */ - OutputId: Id; - } - export interface DeleteApplicationOutputResponse { - } - export interface DeleteApplicationReferenceDataSourceRequest { - /** - * Name of an existing application. - */ - ApplicationName: ApplicationName; - /** - * Version of the application. You can use the DescribeApplication operation to get the current application version. If the version specified is not the current version, the ConcurrentModificationException is returned. - */ - CurrentApplicationVersionId: ApplicationVersionId; - /** - * ID of the reference data source. When you add a reference data source to your application using the AddApplicationReferenceDataSource, Amazon Kinesis Analytics assigns an ID. You can use the DescribeApplication operation to get the reference ID. - */ - ReferenceId: Id; - } - export interface DeleteApplicationReferenceDataSourceResponse { - } - export interface DeleteApplicationRequest { - /** - * Name of the Amazon Kinesis Analytics application to delete. - */ - ApplicationName: ApplicationName; - /** - * You can use the DescribeApplication operation to get this value. - */ - CreateTimestamp: Timestamp; - } - export interface DeleteApplicationResponse { - } - export interface DescribeApplicationRequest { - /** - * Name of the application. - */ - ApplicationName: ApplicationName; - } - export interface DescribeApplicationResponse { - /** - * Provides a description of the application, such as the application Amazon Resource Name (ARN), status, latest version, and input and output configuration details. - */ - ApplicationDetail: ApplicationDetail; - } - export interface DestinationSchema { - /** - * Specifies the format of the records on the output stream. - */ - RecordFormatType?: RecordFormatType; - } - export interface DiscoverInputSchemaRequest { - /** - * Amazon Resource Name (ARN) of the streaming source. - */ - ResourceARN?: ResourceARN; - /** - * ARN of the IAM role that Amazon Kinesis Analytics can assume to access the stream on your behalf. - */ - RoleARN?: RoleARN; - /** - * Point at which you want Amazon Kinesis Analytics to start reading records from the specified streaming source discovery purposes. - */ - InputStartingPositionConfiguration?: InputStartingPositionConfiguration; - S3Configuration?: S3Configuration; - /** - * The InputProcessingConfiguration to use to preprocess the records before discovering the schema of the records. - */ - InputProcessingConfiguration?: InputProcessingConfiguration; - } - export interface DiscoverInputSchemaResponse { - /** - * Schema inferred from the streaming source. It identifies the format of the data in the streaming source and how each data element maps to corresponding columns in the in-application stream that you can create. - */ - InputSchema?: SourceSchema; - /** - * An array of elements, where each element corresponds to a row in a stream record (a stream record can have more than one row). - */ - ParsedInputRecords?: ParsedInputRecords; - /** - * Stream data that was modified by the processor specified in the InputProcessingConfiguration parameter. - */ - ProcessedInputRecords?: ProcessedInputRecords; - /** - * Raw stream data that was sampled to infer the schema. - */ - RawInputRecords?: RawInputRecords; - } - export type ErrorMessage = string; - export type FileKey = string; - export type Id = string; - export type InAppStreamName = string; - export type InAppStreamNames = InAppStreamName[]; - export type InAppTableName = string; - export interface Input { - /** - * Name prefix to use when creating in-application stream. Suppose you specify a prefix "MyInApplicationStream". Amazon Kinesis Analytics will then create one or more (as per the InputParallelism count you specified) in-application streams with names "MyInApplicationStream_001", "MyInApplicationStream_002" and so on. - */ - NamePrefix: InAppStreamName; - /** - * The InputProcessingConfiguration for the Input. An input processor transforms records as they are received from the stream, before the application's SQL code executes. Currently, the only input processing configuration available is InputLambdaProcessor. - */ - InputProcessingConfiguration?: InputProcessingConfiguration; - /** - * If the streaming source is an Amazon Kinesis stream, identifies the stream's Amazon Resource Name (ARN) and an IAM role that enables Amazon Kinesis Analytics to access the stream on your behalf. Note: Either KinesisStreamsInput or KinesisFirehoseInput is required. - */ - KinesisStreamsInput?: KinesisStreamsInput; - /** - * If the streaming source is an Amazon Kinesis Firehose delivery stream, identifies the Firehose delivery stream's ARN and an IAM role that enables Amazon Kinesis Analytics to access the stream on your behalf. Note: Either KinesisStreamsInput or KinesisFirehoseInput is required. - */ - KinesisFirehoseInput?: KinesisFirehoseInput; - /** - * Describes the number of in-application streams to create. Data from your source will be routed to these in-application input streams. (see Configuring Application Input. - */ - InputParallelism?: InputParallelism; - /** - * Describes the format of the data in the streaming source, and how each data element maps to corresponding columns in the in-application stream that is being created. Also used to describe the format of the reference data source. - */ - InputSchema: SourceSchema; - } - export interface InputConfiguration { - /** - * Input source ID. You can get this ID by calling the DescribeApplication operation. - */ - Id: Id; - /** - * Point at which you want the application to start processing records from the streaming source. - */ - InputStartingPositionConfiguration: InputStartingPositionConfiguration; - } - export type InputConfigurations = InputConfiguration[]; - export interface InputDescription { - /** - * Input ID associated with the application input. This is the ID that Amazon Kinesis Analytics assigns to each input configuration you add to your application. - */ - InputId?: Id; - /** - * In-application name prefix. - */ - NamePrefix?: InAppStreamName; - /** - * Returns the in-application stream names that are mapped to the stream source. - */ - InAppStreamNames?: InAppStreamNames; - /** - * The description of the preprocessor that executes on records in this input before the application's code is run. - */ - InputProcessingConfigurationDescription?: InputProcessingConfigurationDescription; - /** - * If an Amazon Kinesis stream is configured as streaming source, provides Amazon Kinesis stream's ARN and an IAM role that enables Amazon Kinesis Analytics to access the stream on your behalf. - */ - KinesisStreamsInputDescription?: KinesisStreamsInputDescription; - /** - * If an Amazon Kinesis Firehose delivery stream is configured as a streaming source, provides the Firehose delivery stream's Amazon Resource Name (ARN) and an IAM role that enables Amazon Kinesis Analytics to access the stream on your behalf. - */ - KinesisFirehoseInputDescription?: KinesisFirehoseInputDescription; - /** - * Describes the format of the data in the streaming source, and how each data element maps to corresponding columns in the in-application stream that is being created. - */ - InputSchema?: SourceSchema; - /** - * Describes the configured parallelism (number of in-application streams mapped to the streaming source). - */ - InputParallelism?: InputParallelism; - /** - * Point at which the application is configured to read from the input stream. - */ - InputStartingPositionConfiguration?: InputStartingPositionConfiguration; - } - export type InputDescriptions = InputDescription[]; - export interface InputLambdaProcessor { - /** - * The ARN of the AWS Lambda function that operates on records in the stream. - */ - ResourceARN: ResourceARN; - /** - * The ARN of the IAM role used to access the AWS Lambda function. - */ - RoleARN: RoleARN; - } - export interface InputLambdaProcessorDescription { - /** - * The ARN of the AWS Lambda function that is used to preprocess the records in the stream. - */ - ResourceARN?: ResourceARN; - /** - * The ARN of the IAM role used to access the AWS Lambda function. - */ - RoleARN?: RoleARN; - } - export interface InputLambdaProcessorUpdate { - /** - * The ARN of the new AWS Lambda function that is used to preprocess the records in the stream. - */ - ResourceARNUpdate?: ResourceARN; - /** - * The ARN of the new IAM role used to access the AWS Lambda function. - */ - RoleARNUpdate?: RoleARN; - } - export interface InputParallelism { - /** - * Number of in-application streams to create. For more information, see Limits. - */ - Count?: InputParallelismCount; - } - export type InputParallelismCount = number; - export interface InputParallelismUpdate { - /** - * Number of in-application streams to create for the specified streaming source. - */ - CountUpdate?: InputParallelismCount; - } - export interface InputProcessingConfiguration { - /** - * The InputLambdaProcessor that is used to preprocess the records in the stream prior to being processed by your application code. - */ - InputLambdaProcessor: InputLambdaProcessor; - } - export interface InputProcessingConfigurationDescription { - /** - * Provides configuration information about the associated InputLambdaProcessorDescription. - */ - InputLambdaProcessorDescription?: InputLambdaProcessorDescription; - } - export interface InputProcessingConfigurationUpdate { - /** - * Provides update information for an InputLambdaProcessor. - */ - InputLambdaProcessorUpdate: InputLambdaProcessorUpdate; - } - export interface InputSchemaUpdate { - /** - * Specifies the format of the records on the streaming source. - */ - RecordFormatUpdate?: RecordFormat; - /** - * Specifies the encoding of the records in the streaming source. For example, UTF-8. - */ - RecordEncodingUpdate?: RecordEncoding; - /** - * A list of RecordColumn objects. Each object describes the mapping of the streaming source element to the corresponding column in the in-application stream. - */ - RecordColumnUpdates?: RecordColumns; - } - export type InputStartingPosition = "NOW"|"TRIM_HORIZON"|"LAST_STOPPED_POINT"|string; - export interface InputStartingPositionConfiguration { - /** - * The starting position on the stream. NOW - Start reading just after the most recent record in the stream, start at the request timestamp that the customer issued. TRIM_HORIZON - Start reading at the last untrimmed record in the stream, which is the oldest record available in the stream. This option is not available for an Amazon Kinesis Firehose delivery stream. LAST_STOPPED_POINT - Resume reading from where the application last stopped reading. - */ - InputStartingPosition?: InputStartingPosition; - } - export interface InputUpdate { - /** - * Input ID of the application input to be updated. - */ - InputId: Id; - /** - * Name prefix for in-application streams that Amazon Kinesis Analytics creates for the specific streaming source. - */ - NamePrefixUpdate?: InAppStreamName; - /** - * Describes updates for an input processing configuration. - */ - InputProcessingConfigurationUpdate?: InputProcessingConfigurationUpdate; - /** - * If a Amazon Kinesis stream is the streaming source to be updated, provides an updated stream ARN and IAM role ARN. - */ - KinesisStreamsInputUpdate?: KinesisStreamsInputUpdate; - /** - * If an Amazon Kinesis Firehose delivery stream is the streaming source to be updated, provides an updated stream Amazon Resource Name (ARN) and IAM role ARN. - */ - KinesisFirehoseInputUpdate?: KinesisFirehoseInputUpdate; - /** - * Describes the data format on the streaming source, and how record elements on the streaming source map to columns of the in-application stream that is created. - */ - InputSchemaUpdate?: InputSchemaUpdate; - /** - * Describes the parallelism updates (the number in-application streams Amazon Kinesis Analytics creates for the specific streaming source). - */ - InputParallelismUpdate?: InputParallelismUpdate; - } - export type InputUpdates = InputUpdate[]; - export type Inputs = Input[]; - export interface JSONMappingParameters { - /** - * Path to the top-level parent that contains the records. - */ - RecordRowPath: RecordRowPath; - } - export interface KinesisFirehoseInput { - /** - * ARN of the input Firehose delivery stream. - */ - ResourceARN: ResourceARN; - /** - * ARN of the IAM role that Amazon Kinesis Analytics can assume to access the stream on your behalf. You need to make sure the role has necessary permissions to access the stream. - */ - RoleARN: RoleARN; - } - export interface KinesisFirehoseInputDescription { - /** - * Amazon Resource Name (ARN) of the Amazon Kinesis Firehose delivery stream. - */ - ResourceARN?: ResourceARN; - /** - * ARN of the IAM role that Amazon Kinesis Analytics assumes to access the stream. - */ - RoleARN?: RoleARN; - } - export interface KinesisFirehoseInputUpdate { - /** - * ARN of the input Amazon Kinesis Firehose delivery stream to read. - */ - ResourceARNUpdate?: ResourceARN; - /** - * Amazon Resource Name (ARN) of the IAM role that Amazon Kinesis Analytics can assume to access the stream on your behalf. You need to grant necessary permissions to this role. - */ - RoleARNUpdate?: RoleARN; - } - export interface KinesisFirehoseOutput { - /** - * ARN of the destination Amazon Kinesis Firehose delivery stream to write to. - */ - ResourceARN: ResourceARN; - /** - * ARN of the IAM role that Amazon Kinesis Analytics can assume to write to the destination stream on your behalf. You need to grant the necessary permissions to this role. - */ - RoleARN: RoleARN; - } - export interface KinesisFirehoseOutputDescription { - /** - * Amazon Resource Name (ARN) of the Amazon Kinesis Firehose delivery stream. - */ - ResourceARN?: ResourceARN; - /** - * ARN of the IAM role that Amazon Kinesis Analytics can assume to access the stream. - */ - RoleARN?: RoleARN; - } - export interface KinesisFirehoseOutputUpdate { - /** - * Amazon Resource Name (ARN) of the Amazon Kinesis Firehose delivery stream to write to. - */ - ResourceARNUpdate?: ResourceARN; - /** - * ARN of the IAM role that Amazon Kinesis Analytics can assume to access the stream on your behalf. You need to grant necessary permissions to this role. - */ - RoleARNUpdate?: RoleARN; - } - export interface KinesisStreamsInput { - /** - * ARN of the input Amazon Kinesis stream to read. - */ - ResourceARN: ResourceARN; - /** - * ARN of the IAM role that Amazon Kinesis Analytics can assume to access the stream on your behalf. You need to grant the necessary permissions to this role. - */ - RoleARN: RoleARN; - } - export interface KinesisStreamsInputDescription { - /** - * Amazon Resource Name (ARN) of the Amazon Kinesis stream. - */ - ResourceARN?: ResourceARN; - /** - * ARN of the IAM role that Amazon Kinesis Analytics can assume to access the stream. - */ - RoleARN?: RoleARN; - } - export interface KinesisStreamsInputUpdate { - /** - * Amazon Resource Name (ARN) of the input Amazon Kinesis stream to read. - */ - ResourceARNUpdate?: ResourceARN; - /** - * ARN of the IAM role that Amazon Kinesis Analytics can assume to access the stream on your behalf. You need to grant the necessary permissions to this role. - */ - RoleARNUpdate?: RoleARN; - } - export interface KinesisStreamsOutput { - /** - * ARN of the destination Amazon Kinesis stream to write to. - */ - ResourceARN: ResourceARN; - /** - * ARN of the IAM role that Amazon Kinesis Analytics can assume to write to the destination stream on your behalf. You need to grant the necessary permissions to this role. - */ - RoleARN: RoleARN; - } - export interface KinesisStreamsOutputDescription { - /** - * Amazon Resource Name (ARN) of the Amazon Kinesis stream. - */ - ResourceARN?: ResourceARN; - /** - * ARN of the IAM role that Amazon Kinesis Analytics can assume to access the stream. - */ - RoleARN?: RoleARN; - } - export interface KinesisStreamsOutputUpdate { - /** - * Amazon Resource Name (ARN) of the Amazon Kinesis stream where you want to write the output. - */ - ResourceARNUpdate?: ResourceARN; - /** - * ARN of the IAM role that Amazon Kinesis Analytics can assume to access the stream on your behalf. You need to grant the necessary permissions to this role. - */ - RoleARNUpdate?: RoleARN; - } - export type ListApplicationsInputLimit = number; - export interface ListApplicationsRequest { - /** - * Maximum number of applications to list. - */ - Limit?: ListApplicationsInputLimit; - /** - * Name of the application to start the list with. When using pagination to retrieve the list, you don't need to specify this parameter in the first request. However, in subsequent requests, you add the last application name from the previous response to get the next page of applications. - */ - ExclusiveStartApplicationName?: ApplicationName; - } - export interface ListApplicationsResponse { - /** - * List of ApplicationSummary objects. - */ - ApplicationSummaries: ApplicationSummaries; - /** - * Returns true if there are more applications to retrieve. - */ - HasMoreApplications: BooleanObject; - } - export type LogStreamARN = string; - export interface MappingParameters { - /** - * Provides additional mapping information when JSON is the record format on the streaming source. - */ - JSONMappingParameters?: JSONMappingParameters; - /** - * Provides additional mapping information when the record format uses delimiters (for example, CSV). - */ - CSVMappingParameters?: CSVMappingParameters; - } - export interface Output { - /** - * Name of the in-application stream. - */ - Name: InAppStreamName; - /** - * Identifies an Amazon Kinesis stream as the destination. - */ - KinesisStreamsOutput?: KinesisStreamsOutput; - /** - * Identifies an Amazon Kinesis Firehose delivery stream as the destination. - */ - KinesisFirehoseOutput?: KinesisFirehoseOutput; - DestinationSchema: DestinationSchema; - } - export interface OutputDescription { - /** - * A unique identifier for the output configuration. - */ - OutputId?: Id; - /** - * Name of the in-application stream configured as output. - */ - Name?: InAppStreamName; - /** - * Describes Amazon Kinesis stream configured as the destination where output is written. - */ - KinesisStreamsOutputDescription?: KinesisStreamsOutputDescription; - /** - * Describes the Amazon Kinesis Firehose delivery stream configured as the destination where output is written. - */ - KinesisFirehoseOutputDescription?: KinesisFirehoseOutputDescription; - /** - * Data format used for writing data to the destination. - */ - DestinationSchema?: DestinationSchema; - } - export type OutputDescriptions = OutputDescription[]; - export interface OutputUpdate { - /** - * Identifies the specific output configuration that you want to update. - */ - OutputId: Id; - /** - * If you want to specify a different in-application stream for this output configuration, use this field to specify the new in-application stream name. - */ - NameUpdate?: InAppStreamName; - /** - * Describes an Amazon Kinesis stream as the destination for the output. - */ - KinesisStreamsOutputUpdate?: KinesisStreamsOutputUpdate; - /** - * Describes a Amazon Kinesis Firehose delivery stream as the destination for the output. - */ - KinesisFirehoseOutputUpdate?: KinesisFirehoseOutputUpdate; - DestinationSchemaUpdate?: DestinationSchema; - } - export type OutputUpdates = OutputUpdate[]; - export type Outputs = Output[]; - export type ParsedInputRecord = ParsedInputRecordField[]; - export type ParsedInputRecordField = string; - export type ParsedInputRecords = ParsedInputRecord[]; - export type ProcessedInputRecord = string; - export type ProcessedInputRecords = ProcessedInputRecord[]; - export type RawInputRecord = string; - export type RawInputRecords = RawInputRecord[]; - export interface RecordColumn { - /** - * Name of the column created in the in-application input stream or reference table. - */ - Name: RecordColumnName; - /** - * Reference to the data element in the streaming input of the reference data source. - */ - Mapping?: RecordColumnMapping; - /** - * Type of column created in the in-application input stream or reference table. - */ - SqlType: RecordColumnSqlType; - } - export type RecordColumnDelimiter = string; - export type RecordColumnMapping = string; - export type RecordColumnName = string; - export type RecordColumnSqlType = string; - export type RecordColumns = RecordColumn[]; - export type RecordEncoding = string; - export interface RecordFormat { - /** - * The type of record format. - */ - RecordFormatType: RecordFormatType; - MappingParameters?: MappingParameters; - } - export type RecordFormatType = "JSON"|"CSV"|string; - export type RecordRowDelimiter = string; - export type RecordRowPath = string; - export interface ReferenceDataSource { - /** - * Name of the in-application table to create. - */ - TableName: InAppTableName; - S3ReferenceDataSource?: S3ReferenceDataSource; - ReferenceSchema: SourceSchema; - } - export interface ReferenceDataSourceDescription { - /** - * ID of the reference data source. This is the ID that Amazon Kinesis Analytics assigns when you add the reference data source to your application using the AddApplicationReferenceDataSource operation. - */ - ReferenceId: Id; - /** - * The in-application table name created by the specific reference data source configuration. - */ - TableName: InAppTableName; - /** - * Provides the S3 bucket name, the object key name that contains the reference data. It also provides the Amazon Resource Name (ARN) of the IAM role that Amazon Kinesis Analytics can assume to read the Amazon S3 object and populate the in-application reference table. - */ - S3ReferenceDataSourceDescription: S3ReferenceDataSourceDescription; - ReferenceSchema?: SourceSchema; - } - export type ReferenceDataSourceDescriptions = ReferenceDataSourceDescription[]; - export interface ReferenceDataSourceUpdate { - /** - * ID of the reference data source being updated. You can use the DescribeApplication operation to get this value. - */ - ReferenceId: Id; - /** - * In-application table name that is created by this update. - */ - TableNameUpdate?: InAppTableName; - /** - * Describes the S3 bucket name, object key name, and IAM role that Amazon Kinesis Analytics can assume to read the Amazon S3 object on your behalf and populate the in-application reference table. - */ - S3ReferenceDataSourceUpdate?: S3ReferenceDataSourceUpdate; - ReferenceSchemaUpdate?: SourceSchema; - } - export type ReferenceDataSourceUpdates = ReferenceDataSourceUpdate[]; - export type ResourceARN = string; - export type RoleARN = string; - export interface S3Configuration { - RoleARN: RoleARN; - BucketARN: BucketARN; - FileKey: FileKey; - } - export interface S3ReferenceDataSource { - /** - * Amazon Resource Name (ARN) of the S3 bucket. - */ - BucketARN: BucketARN; - /** - * Object key name containing reference data. - */ - FileKey: FileKey; - /** - * ARN of the IAM role that the service can assume to read data on your behalf. This role must have permission for the s3:GetObject action on the object and trust policy that allows Amazon Kinesis Analytics service principal to assume this role. - */ - ReferenceRoleARN: RoleARN; - } - export interface S3ReferenceDataSourceDescription { - /** - * Amazon Resource Name (ARN) of the S3 bucket. - */ - BucketARN: BucketARN; - /** - * Amazon S3 object key name. - */ - FileKey: FileKey; - /** - * ARN of the IAM role that Amazon Kinesis Analytics can assume to read the Amazon S3 object on your behalf to populate the in-application reference table. - */ - ReferenceRoleARN: RoleARN; - } - export interface S3ReferenceDataSourceUpdate { - /** - * Amazon Resource Name (ARN) of the S3 bucket. - */ - BucketARNUpdate?: BucketARN; - /** - * Object key name. - */ - FileKeyUpdate?: FileKey; - /** - * ARN of the IAM role that Amazon Kinesis Analytics can assume to read the Amazon S3 object and populate the in-application. - */ - ReferenceRoleARNUpdate?: RoleARN; - } - export interface SourceSchema { - /** - * Specifies the format of the records on the streaming source. - */ - RecordFormat: RecordFormat; - /** - * Specifies the encoding of the records in the streaming source. For example, UTF-8. - */ - RecordEncoding?: RecordEncoding; - /** - * A list of RecordColumn objects. - */ - RecordColumns: RecordColumns; - } - export interface StartApplicationRequest { - /** - * Name of the application. - */ - ApplicationName: ApplicationName; - /** - * Identifies the specific input, by ID, that the application starts consuming. Amazon Kinesis Analytics starts reading the streaming source associated with the input. You can also specify where in the streaming source you want Amazon Kinesis Analytics to start reading. - */ - InputConfigurations: InputConfigurations; - } - export interface StartApplicationResponse { - } - export interface StopApplicationRequest { - /** - * Name of the running application to stop. - */ - ApplicationName: ApplicationName; - } - export interface StopApplicationResponse { - } - export type Timestamp = Date; - export interface UpdateApplicationRequest { - /** - * Name of the Amazon Kinesis Analytics application to update. - */ - ApplicationName: ApplicationName; - /** - * The current application version ID. You can use the DescribeApplication operation to get this value. - */ - CurrentApplicationVersionId: ApplicationVersionId; - /** - * Describes application updates. - */ - ApplicationUpdate: ApplicationUpdate; - } - export interface UpdateApplicationResponse { - } - /** - * A string in YYYY-MM-DD format that represents the latest possible API version that can be used in this service. Specify 'latest' to use the latest possible version. - */ - export type apiVersion = "2015-08-14"|"latest"|string; - export interface ClientApiVersions { - /** - * A string in YYYY-MM-DD format that represents the latest possible API version that can be used in this service. Specify 'latest' to use the latest possible version. - */ - apiVersion?: apiVersion; - } - export type ClientConfiguration = ServiceConfigurationOptions & ClientApiVersions; - /** - * Contains interfaces for use with the KinesisAnalytics client. - */ - export import Types = KinesisAnalytics; -} -export = KinesisAnalytics; diff --git a/workshops/monte-carlo-on-ec2-spot-fleet/src/web/node_modules/aws-sdk/clients/kinesisanalytics.js b/workshops/monte-carlo-on-ec2-spot-fleet/src/web/node_modules/aws-sdk/clients/kinesisanalytics.js deleted file mode 100644 index 00048f38..00000000 --- a/workshops/monte-carlo-on-ec2-spot-fleet/src/web/node_modules/aws-sdk/clients/kinesisanalytics.js +++ /dev/null @@ -1,18 +0,0 @@ -require('../lib/node_loader'); -var AWS = require('../lib/core'); -var Service = AWS.Service; -var apiLoader = AWS.apiLoader; - -apiLoader.services['kinesisanalytics'] = {}; -AWS.KinesisAnalytics = Service.defineService('kinesisanalytics', ['2015-08-14']); -Object.defineProperty(apiLoader.services['kinesisanalytics'], '2015-08-14', { - get: function get() { - var model = require('../apis/kinesisanalytics-2015-08-14.min.json'); - model.paginators = require('../apis/kinesisanalytics-2015-08-14.paginators.json').pagination; - return model; - }, - enumerable: true, - configurable: true -}); - -module.exports = AWS.KinesisAnalytics; diff --git a/workshops/monte-carlo-on-ec2-spot-fleet/src/web/node_modules/aws-sdk/clients/kms.d.ts b/workshops/monte-carlo-on-ec2-spot-fleet/src/web/node_modules/aws-sdk/clients/kms.d.ts deleted file mode 100644 index 08ef3387..00000000 --- a/workshops/monte-carlo-on-ec2-spot-fleet/src/web/node_modules/aws-sdk/clients/kms.d.ts +++ /dev/null @@ -1,1136 +0,0 @@ -import {Request} from '../lib/request'; -import {Response} from '../lib/response'; -import {AWSError} from '../lib/error'; -import {Service} from '../lib/service'; -import {ServiceConfigurationOptions} from '../lib/service'; -import {ConfigBase as Config} from '../lib/config'; -interface Blob {} -declare class KMS extends Service { - /** - * Constructs a service object. This object has one method for each API operation. - */ - constructor(options?: KMS.Types.ClientConfiguration) - config: Config & KMS.Types.ClientConfiguration; - /** - * Cancels the deletion of a customer master key (CMK). When this operation is successful, the CMK is set to the Disabled state. To enable a CMK, use EnableKey. For more information about scheduling and canceling deletion of a CMK, see Deleting Customer Master Keys in the AWS Key Management Service Developer Guide. - */ - cancelKeyDeletion(params: KMS.Types.CancelKeyDeletionRequest, callback?: (err: AWSError, data: KMS.Types.CancelKeyDeletionResponse) => void): Request; - /** - * Cancels the deletion of a customer master key (CMK). When this operation is successful, the CMK is set to the Disabled state. To enable a CMK, use EnableKey. For more information about scheduling and canceling deletion of a CMK, see Deleting Customer Master Keys in the AWS Key Management Service Developer Guide. - */ - cancelKeyDeletion(callback?: (err: AWSError, data: KMS.Types.CancelKeyDeletionResponse) => void): Request; - /** - * Creates a display name for a customer master key. An alias can be used to identify a key and should be unique. The console enforces a one-to-one mapping between the alias and a key. An alias name can contain only alphanumeric characters, forward slashes (/), underscores (_), and dashes (-). An alias must start with the word "alias" followed by a forward slash (alias/). An alias that begins with "aws" after the forward slash (alias/aws...) is reserved by Amazon Web Services (AWS). The alias and the key it is mapped to must be in the same AWS account and the same region. To map an alias to a different key, call UpdateAlias. - */ - createAlias(params: KMS.Types.CreateAliasRequest, callback?: (err: AWSError, data: {}) => void): Request<{}, AWSError>; - /** - * Creates a display name for a customer master key. An alias can be used to identify a key and should be unique. The console enforces a one-to-one mapping between the alias and a key. An alias name can contain only alphanumeric characters, forward slashes (/), underscores (_), and dashes (-). An alias must start with the word "alias" followed by a forward slash (alias/). An alias that begins with "aws" after the forward slash (alias/aws...) is reserved by Amazon Web Services (AWS). The alias and the key it is mapped to must be in the same AWS account and the same region. To map an alias to a different key, call UpdateAlias. - */ - createAlias(callback?: (err: AWSError, data: {}) => void): Request<{}, AWSError>; - /** - * Adds a grant to a key to specify who can use the key and under what conditions. Grants are alternate permission mechanisms to key policies. For more information about grants, see Grants in the AWS Key Management Service Developer Guide. - */ - createGrant(params: KMS.Types.CreateGrantRequest, callback?: (err: AWSError, data: KMS.Types.CreateGrantResponse) => void): Request; - /** - * Adds a grant to a key to specify who can use the key and under what conditions. Grants are alternate permission mechanisms to key policies. For more information about grants, see Grants in the AWS Key Management Service Developer Guide. - */ - createGrant(callback?: (err: AWSError, data: KMS.Types.CreateGrantResponse) => void): Request; - /** - * Creates a customer master key (CMK). You can use a CMK to encrypt small amounts of data (4 KiB or less) directly, but CMKs are more commonly used to encrypt data encryption keys (DEKs), which are used to encrypt raw data. For more information about DEKs and the difference between CMKs and DEKs, see the following: The GenerateDataKey operation AWS Key Management Service Concepts in the AWS Key Management Service Developer Guide - */ - createKey(params: KMS.Types.CreateKeyRequest, callback?: (err: AWSError, data: KMS.Types.CreateKeyResponse) => void): Request; - /** - * Creates a customer master key (CMK). You can use a CMK to encrypt small amounts of data (4 KiB or less) directly, but CMKs are more commonly used to encrypt data encryption keys (DEKs), which are used to encrypt raw data. For more information about DEKs and the difference between CMKs and DEKs, see the following: The GenerateDataKey operation AWS Key Management Service Concepts in the AWS Key Management Service Developer Guide - */ - createKey(callback?: (err: AWSError, data: KMS.Types.CreateKeyResponse) => void): Request; - /** - * Decrypts ciphertext. Ciphertext is plaintext that has been previously encrypted by using any of the following functions: GenerateDataKey GenerateDataKeyWithoutPlaintext Encrypt Note that if a caller has been granted access permissions to all keys (through, for example, IAM user policies that grant Decrypt permission on all resources), then ciphertext encrypted by using keys in other accounts where the key grants access to the caller can be decrypted. To remedy this, we recommend that you do not grant Decrypt access in an IAM user policy. Instead grant Decrypt access only in key policies. If you must grant Decrypt access in an IAM user policy, you should scope the resource to specific keys or to specific trusted accounts. - */ - decrypt(params: KMS.Types.DecryptRequest, callback?: (err: AWSError, data: KMS.Types.DecryptResponse) => void): Request; - /** - * Decrypts ciphertext. Ciphertext is plaintext that has been previously encrypted by using any of the following functions: GenerateDataKey GenerateDataKeyWithoutPlaintext Encrypt Note that if a caller has been granted access permissions to all keys (through, for example, IAM user policies that grant Decrypt permission on all resources), then ciphertext encrypted by using keys in other accounts where the key grants access to the caller can be decrypted. To remedy this, we recommend that you do not grant Decrypt access in an IAM user policy. Instead grant Decrypt access only in key policies. If you must grant Decrypt access in an IAM user policy, you should scope the resource to specific keys or to specific trusted accounts. - */ - decrypt(callback?: (err: AWSError, data: KMS.Types.DecryptResponse) => void): Request; - /** - * Deletes the specified alias. To map an alias to a different key, call UpdateAlias. - */ - deleteAlias(params: KMS.Types.DeleteAliasRequest, callback?: (err: AWSError, data: {}) => void): Request<{}, AWSError>; - /** - * Deletes the specified alias. To map an alias to a different key, call UpdateAlias. - */ - deleteAlias(callback?: (err: AWSError, data: {}) => void): Request<{}, AWSError>; - /** - * Deletes key material that you previously imported and makes the specified customer master key (CMK) unusable. For more information about importing key material into AWS KMS, see Importing Key Material in the AWS Key Management Service Developer Guide. When the specified CMK is in the PendingDeletion state, this operation does not change the CMK's state. Otherwise, it changes the CMK's state to PendingImport. After you delete key material, you can use ImportKeyMaterial to reimport the same key material into the CMK. - */ - deleteImportedKeyMaterial(params: KMS.Types.DeleteImportedKeyMaterialRequest, callback?: (err: AWSError, data: {}) => void): Request<{}, AWSError>; - /** - * Deletes key material that you previously imported and makes the specified customer master key (CMK) unusable. For more information about importing key material into AWS KMS, see Importing Key Material in the AWS Key Management Service Developer Guide. When the specified CMK is in the PendingDeletion state, this operation does not change the CMK's state. Otherwise, it changes the CMK's state to PendingImport. After you delete key material, you can use ImportKeyMaterial to reimport the same key material into the CMK. - */ - deleteImportedKeyMaterial(callback?: (err: AWSError, data: {}) => void): Request<{}, AWSError>; - /** - * Provides detailed information about the specified customer master key. - */ - describeKey(params: KMS.Types.DescribeKeyRequest, callback?: (err: AWSError, data: KMS.Types.DescribeKeyResponse) => void): Request; - /** - * Provides detailed information about the specified customer master key. - */ - describeKey(callback?: (err: AWSError, data: KMS.Types.DescribeKeyResponse) => void): Request; - /** - * Sets the state of a customer master key (CMK) to disabled, thereby preventing its use for cryptographic operations. For more information about how key state affects the use of a CMK, see How Key State Affects the Use of a Customer Master Key in the AWS Key Management Service Developer Guide. - */ - disableKey(params: KMS.Types.DisableKeyRequest, callback?: (err: AWSError, data: {}) => void): Request<{}, AWSError>; - /** - * Sets the state of a customer master key (CMK) to disabled, thereby preventing its use for cryptographic operations. For more information about how key state affects the use of a CMK, see How Key State Affects the Use of a Customer Master Key in the AWS Key Management Service Developer Guide. - */ - disableKey(callback?: (err: AWSError, data: {}) => void): Request<{}, AWSError>; - /** - * Disables rotation of the specified key. - */ - disableKeyRotation(params: KMS.Types.DisableKeyRotationRequest, callback?: (err: AWSError, data: {}) => void): Request<{}, AWSError>; - /** - * Disables rotation of the specified key. - */ - disableKeyRotation(callback?: (err: AWSError, data: {}) => void): Request<{}, AWSError>; - /** - * Marks a key as enabled, thereby permitting its use. - */ - enableKey(params: KMS.Types.EnableKeyRequest, callback?: (err: AWSError, data: {}) => void): Request<{}, AWSError>; - /** - * Marks a key as enabled, thereby permitting its use. - */ - enableKey(callback?: (err: AWSError, data: {}) => void): Request<{}, AWSError>; - /** - * Enables rotation of the specified customer master key. - */ - enableKeyRotation(params: KMS.Types.EnableKeyRotationRequest, callback?: (err: AWSError, data: {}) => void): Request<{}, AWSError>; - /** - * Enables rotation of the specified customer master key. - */ - enableKeyRotation(callback?: (err: AWSError, data: {}) => void): Request<{}, AWSError>; - /** - * Encrypts plaintext into ciphertext by using a customer master key. The Encrypt function has two primary use cases: You can encrypt up to 4 KB of arbitrary data such as an RSA key, a database password, or other sensitive customer information. If you are moving encrypted data from one region to another, you can use this API to encrypt in the new region the plaintext data key that was used to encrypt the data in the original region. This provides you with an encrypted copy of the data key that can be decrypted in the new region and used there to decrypt the encrypted data. Unless you are moving encrypted data from one region to another, you don't use this function to encrypt a generated data key within a region. You retrieve data keys already encrypted by calling the GenerateDataKey or GenerateDataKeyWithoutPlaintext function. Data keys don't need to be encrypted again by calling Encrypt. If you want to encrypt data locally in your application, you can use the GenerateDataKey function to return a plaintext data encryption key and a copy of the key encrypted under the customer master key (CMK) of your choosing. - */ - encrypt(params: KMS.Types.EncryptRequest, callback?: (err: AWSError, data: KMS.Types.EncryptResponse) => void): Request; - /** - * Encrypts plaintext into ciphertext by using a customer master key. The Encrypt function has two primary use cases: You can encrypt up to 4 KB of arbitrary data such as an RSA key, a database password, or other sensitive customer information. If you are moving encrypted data from one region to another, you can use this API to encrypt in the new region the plaintext data key that was used to encrypt the data in the original region. This provides you with an encrypted copy of the data key that can be decrypted in the new region and used there to decrypt the encrypted data. Unless you are moving encrypted data from one region to another, you don't use this function to encrypt a generated data key within a region. You retrieve data keys already encrypted by calling the GenerateDataKey or GenerateDataKeyWithoutPlaintext function. Data keys don't need to be encrypted again by calling Encrypt. If you want to encrypt data locally in your application, you can use the GenerateDataKey function to return a plaintext data encryption key and a copy of the key encrypted under the customer master key (CMK) of your choosing. - */ - encrypt(callback?: (err: AWSError, data: KMS.Types.EncryptResponse) => void): Request; - /** - * Returns a data encryption key that you can use in your application to encrypt data locally. You must specify the customer master key (CMK) under which to generate the data key. You must also specify the length of the data key using either the KeySpec or NumberOfBytes field. You must specify one field or the other, but not both. For common key lengths (128-bit and 256-bit symmetric keys), we recommend that you use KeySpec. This operation returns a plaintext copy of the data key in the Plaintext field of the response, and an encrypted copy of the data key in the CiphertextBlob field. The data key is encrypted under the CMK specified in the KeyId field of the request. We recommend that you use the following pattern to encrypt data locally in your application: Use this operation (GenerateDataKey) to retrieve a data encryption key. Use the plaintext data encryption key (returned in the Plaintext field of the response) to encrypt data locally, then erase the plaintext data key from memory. Store the encrypted data key (returned in the CiphertextBlob field of the response) alongside the locally encrypted data. To decrypt data locally: Use the Decrypt operation to decrypt the encrypted data key into a plaintext copy of the data key. Use the plaintext data key to decrypt data locally, then erase the plaintext data key from memory. To return only an encrypted copy of the data key, use GenerateDataKeyWithoutPlaintext. To return a random byte string that is cryptographically secure, use GenerateRandom. If you use the optional EncryptionContext field, you must store at least enough information to be able to reconstruct the full encryption context when you later send the ciphertext to the Decrypt operation. It is a good practice to choose an encryption context that you can reconstruct on the fly to better secure the ciphertext. For more information, see Encryption Context in the AWS Key Management Service Developer Guide. - */ - generateDataKey(params: KMS.Types.GenerateDataKeyRequest, callback?: (err: AWSError, data: KMS.Types.GenerateDataKeyResponse) => void): Request; - /** - * Returns a data encryption key that you can use in your application to encrypt data locally. You must specify the customer master key (CMK) under which to generate the data key. You must also specify the length of the data key using either the KeySpec or NumberOfBytes field. You must specify one field or the other, but not both. For common key lengths (128-bit and 256-bit symmetric keys), we recommend that you use KeySpec. This operation returns a plaintext copy of the data key in the Plaintext field of the response, and an encrypted copy of the data key in the CiphertextBlob field. The data key is encrypted under the CMK specified in the KeyId field of the request. We recommend that you use the following pattern to encrypt data locally in your application: Use this operation (GenerateDataKey) to retrieve a data encryption key. Use the plaintext data encryption key (returned in the Plaintext field of the response) to encrypt data locally, then erase the plaintext data key from memory. Store the encrypted data key (returned in the CiphertextBlob field of the response) alongside the locally encrypted data. To decrypt data locally: Use the Decrypt operation to decrypt the encrypted data key into a plaintext copy of the data key. Use the plaintext data key to decrypt data locally, then erase the plaintext data key from memory. To return only an encrypted copy of the data key, use GenerateDataKeyWithoutPlaintext. To return a random byte string that is cryptographically secure, use GenerateRandom. If you use the optional EncryptionContext field, you must store at least enough information to be able to reconstruct the full encryption context when you later send the ciphertext to the Decrypt operation. It is a good practice to choose an encryption context that you can reconstruct on the fly to better secure the ciphertext. For more information, see Encryption Context in the AWS Key Management Service Developer Guide. - */ - generateDataKey(callback?: (err: AWSError, data: KMS.Types.GenerateDataKeyResponse) => void): Request; - /** - * Returns a data encryption key encrypted under a customer master key (CMK). This operation is identical to GenerateDataKey but returns only the encrypted copy of the data key. This operation is useful in a system that has multiple components with different degrees of trust. For example, consider a system that stores encrypted data in containers. Each container stores the encrypted data and an encrypted copy of the data key. One component of the system, called the control plane, creates new containers. When it creates a new container, it uses this operation (GenerateDataKeyWithoutPlaintext) to get an encrypted data key and then stores it in the container. Later, a different component of the system, called the data plane, puts encrypted data into the containers. To do this, it passes the encrypted data key to the Decrypt operation, then uses the returned plaintext data key to encrypt data, and finally stores the encrypted data in the container. In this system, the control plane never sees the plaintext data key. - */ - generateDataKeyWithoutPlaintext(params: KMS.Types.GenerateDataKeyWithoutPlaintextRequest, callback?: (err: AWSError, data: KMS.Types.GenerateDataKeyWithoutPlaintextResponse) => void): Request; - /** - * Returns a data encryption key encrypted under a customer master key (CMK). This operation is identical to GenerateDataKey but returns only the encrypted copy of the data key. This operation is useful in a system that has multiple components with different degrees of trust. For example, consider a system that stores encrypted data in containers. Each container stores the encrypted data and an encrypted copy of the data key. One component of the system, called the control plane, creates new containers. When it creates a new container, it uses this operation (GenerateDataKeyWithoutPlaintext) to get an encrypted data key and then stores it in the container. Later, a different component of the system, called the data plane, puts encrypted data into the containers. To do this, it passes the encrypted data key to the Decrypt operation, then uses the returned plaintext data key to encrypt data, and finally stores the encrypted data in the container. In this system, the control plane never sees the plaintext data key. - */ - generateDataKeyWithoutPlaintext(callback?: (err: AWSError, data: KMS.Types.GenerateDataKeyWithoutPlaintextResponse) => void): Request; - /** - * Returns a random byte string that is cryptographically secure. For more information about entropy and random number generation, see the AWS Key Management Service Cryptographic Details whitepaper. - */ - generateRandom(params: KMS.Types.GenerateRandomRequest, callback?: (err: AWSError, data: KMS.Types.GenerateRandomResponse) => void): Request; - /** - * Returns a random byte string that is cryptographically secure. For more information about entropy and random number generation, see the AWS Key Management Service Cryptographic Details whitepaper. - */ - generateRandom(callback?: (err: AWSError, data: KMS.Types.GenerateRandomResponse) => void): Request; - /** - * Retrieves a policy attached to the specified key. - */ - getKeyPolicy(params: KMS.Types.GetKeyPolicyRequest, callback?: (err: AWSError, data: KMS.Types.GetKeyPolicyResponse) => void): Request; - /** - * Retrieves a policy attached to the specified key. - */ - getKeyPolicy(callback?: (err: AWSError, data: KMS.Types.GetKeyPolicyResponse) => void): Request; - /** - * Retrieves a Boolean value that indicates whether key rotation is enabled for the specified key. - */ - getKeyRotationStatus(params: KMS.Types.GetKeyRotationStatusRequest, callback?: (err: AWSError, data: KMS.Types.GetKeyRotationStatusResponse) => void): Request; - /** - * Retrieves a Boolean value that indicates whether key rotation is enabled for the specified key. - */ - getKeyRotationStatus(callback?: (err: AWSError, data: KMS.Types.GetKeyRotationStatusResponse) => void): Request; - /** - * Returns the items you need in order to import key material into AWS KMS from your existing key management infrastructure. For more information about importing key material into AWS KMS, see Importing Key Material in the AWS Key Management Service Developer Guide. You must specify the key ID of the customer master key (CMK) into which you will import key material. This CMK's Origin must be EXTERNAL. You must also specify the wrapping algorithm and type of wrapping key (public key) that you will use to encrypt the key material. This operation returns a public key and an import token. Use the public key to encrypt the key material. Store the import token to send with a subsequent ImportKeyMaterial request. The public key and import token from the same response must be used together. These items are valid for 24 hours, after which they cannot be used for a subsequent ImportKeyMaterial request. To retrieve new ones, send another GetParametersForImport request. - */ - getParametersForImport(params: KMS.Types.GetParametersForImportRequest, callback?: (err: AWSError, data: KMS.Types.GetParametersForImportResponse) => void): Request; - /** - * Returns the items you need in order to import key material into AWS KMS from your existing key management infrastructure. For more information about importing key material into AWS KMS, see Importing Key Material in the AWS Key Management Service Developer Guide. You must specify the key ID of the customer master key (CMK) into which you will import key material. This CMK's Origin must be EXTERNAL. You must also specify the wrapping algorithm and type of wrapping key (public key) that you will use to encrypt the key material. This operation returns a public key and an import token. Use the public key to encrypt the key material. Store the import token to send with a subsequent ImportKeyMaterial request. The public key and import token from the same response must be used together. These items are valid for 24 hours, after which they cannot be used for a subsequent ImportKeyMaterial request. To retrieve new ones, send another GetParametersForImport request. - */ - getParametersForImport(callback?: (err: AWSError, data: KMS.Types.GetParametersForImportResponse) => void): Request; - /** - * Imports key material into an AWS KMS customer master key (CMK) from your existing key management infrastructure. For more information about importing key material into AWS KMS, see Importing Key Material in the AWS Key Management Service Developer Guide. You must specify the key ID of the CMK to import the key material into. This CMK's Origin must be EXTERNAL. You must also send an import token and the encrypted key material. Send the import token that you received in the same GetParametersForImport response that contained the public key that you used to encrypt the key material. You must also specify whether the key material expires and if so, when. When the key material expires, AWS KMS deletes the key material and the CMK becomes unusable. To use the CMK again, you can reimport the same key material. If you set an expiration date, you can change it only by reimporting the same key material and specifying a new expiration date. When this operation is successful, the specified CMK's key state changes to Enabled, and you can use the CMK. After you successfully import key material into a CMK, you can reimport the same key material into that CMK, but you cannot import different key material. - */ - importKeyMaterial(params: KMS.Types.ImportKeyMaterialRequest, callback?: (err: AWSError, data: KMS.Types.ImportKeyMaterialResponse) => void): Request; - /** - * Imports key material into an AWS KMS customer master key (CMK) from your existing key management infrastructure. For more information about importing key material into AWS KMS, see Importing Key Material in the AWS Key Management Service Developer Guide. You must specify the key ID of the CMK to import the key material into. This CMK's Origin must be EXTERNAL. You must also send an import token and the encrypted key material. Send the import token that you received in the same GetParametersForImport response that contained the public key that you used to encrypt the key material. You must also specify whether the key material expires and if so, when. When the key material expires, AWS KMS deletes the key material and the CMK becomes unusable. To use the CMK again, you can reimport the same key material. If you set an expiration date, you can change it only by reimporting the same key material and specifying a new expiration date. When this operation is successful, the specified CMK's key state changes to Enabled, and you can use the CMK. After you successfully import key material into a CMK, you can reimport the same key material into that CMK, but you cannot import different key material. - */ - importKeyMaterial(callback?: (err: AWSError, data: KMS.Types.ImportKeyMaterialResponse) => void): Request; - /** - * Lists all of the key aliases in the account. - */ - listAliases(params: KMS.Types.ListAliasesRequest, callback?: (err: AWSError, data: KMS.Types.ListAliasesResponse) => void): Request; - /** - * Lists all of the key aliases in the account. - */ - listAliases(callback?: (err: AWSError, data: KMS.Types.ListAliasesResponse) => void): Request; - /** - * List the grants for a specified key. - */ - listGrants(params: KMS.Types.ListGrantsRequest, callback?: (err: AWSError, data: KMS.Types.ListGrantsResponse) => void): Request; - /** - * List the grants for a specified key. - */ - listGrants(callback?: (err: AWSError, data: KMS.Types.ListGrantsResponse) => void): Request; - /** - * Retrieves a list of policies attached to a key. - */ - listKeyPolicies(params: KMS.Types.ListKeyPoliciesRequest, callback?: (err: AWSError, data: KMS.Types.ListKeyPoliciesResponse) => void): Request; - /** - * Retrieves a list of policies attached to a key. - */ - listKeyPolicies(callback?: (err: AWSError, data: KMS.Types.ListKeyPoliciesResponse) => void): Request; - /** - * Lists the customer master keys. - */ - listKeys(params: KMS.Types.ListKeysRequest, callback?: (err: AWSError, data: KMS.Types.ListKeysResponse) => void): Request; - /** - * Lists the customer master keys. - */ - listKeys(callback?: (err: AWSError, data: KMS.Types.ListKeysResponse) => void): Request; - /** - * Returns a list of all tags for the specified customer master key (CMK). - */ - listResourceTags(params: KMS.Types.ListResourceTagsRequest, callback?: (err: AWSError, data: KMS.Types.ListResourceTagsResponse) => void): Request; - /** - * Returns a list of all tags for the specified customer master key (CMK). - */ - listResourceTags(callback?: (err: AWSError, data: KMS.Types.ListResourceTagsResponse) => void): Request; - /** - * Returns a list of all grants for which the grant's RetiringPrincipal matches the one specified. A typical use is to list all grants that you are able to retire. To retire a grant, use RetireGrant. - */ - listRetirableGrants(params: KMS.Types.ListRetirableGrantsRequest, callback?: (err: AWSError, data: KMS.Types.ListGrantsResponse) => void): Request; - /** - * Returns a list of all grants for which the grant's RetiringPrincipal matches the one specified. A typical use is to list all grants that you are able to retire. To retire a grant, use RetireGrant. - */ - listRetirableGrants(callback?: (err: AWSError, data: KMS.Types.ListGrantsResponse) => void): Request; - /** - * Attaches a key policy to the specified customer master key (CMK). For more information about key policies, see Key Policies in the AWS Key Management Service Developer Guide. - */ - putKeyPolicy(params: KMS.Types.PutKeyPolicyRequest, callback?: (err: AWSError, data: {}) => void): Request<{}, AWSError>; - /** - * Attaches a key policy to the specified customer master key (CMK). For more information about key policies, see Key Policies in the AWS Key Management Service Developer Guide. - */ - putKeyPolicy(callback?: (err: AWSError, data: {}) => void): Request<{}, AWSError>; - /** - * Encrypts data on the server side with a new customer master key (CMK) without exposing the plaintext of the data on the client side. The data is first decrypted and then reencrypted. You can also use this operation to change the encryption context of a ciphertext. Unlike other operations, ReEncrypt is authorized twice, once as ReEncryptFrom on the source CMK and once as ReEncryptTo on the destination CMK. We recommend that you include the "kms:ReEncrypt*" permission in your key policies to permit reencryption from or to the CMK. This permission is automatically included in the key policy when you create a CMK through the console, but you must include it manually when you create a CMK programmatically or when you set a key policy with the PutKeyPolicy operation. - */ - reEncrypt(params: KMS.Types.ReEncryptRequest, callback?: (err: AWSError, data: KMS.Types.ReEncryptResponse) => void): Request; - /** - * Encrypts data on the server side with a new customer master key (CMK) without exposing the plaintext of the data on the client side. The data is first decrypted and then reencrypted. You can also use this operation to change the encryption context of a ciphertext. Unlike other operations, ReEncrypt is authorized twice, once as ReEncryptFrom on the source CMK and once as ReEncryptTo on the destination CMK. We recommend that you include the "kms:ReEncrypt*" permission in your key policies to permit reencryption from or to the CMK. This permission is automatically included in the key policy when you create a CMK through the console, but you must include it manually when you create a CMK programmatically or when you set a key policy with the PutKeyPolicy operation. - */ - reEncrypt(callback?: (err: AWSError, data: KMS.Types.ReEncryptResponse) => void): Request; - /** - * Retires a grant. To clean up, you can retire a grant when you're done using it. You should revoke a grant when you intend to actively deny operations that depend on it. The following are permitted to call this API: The AWS account (root user) under which the grant was created The RetiringPrincipal, if present in the grant The GranteePrincipal, if RetireGrant is an operation specified in the grant You must identify the grant to retire by its grant token or by a combination of the grant ID and the Amazon Resource Name (ARN) of the customer master key (CMK). A grant token is a unique variable-length base64-encoded string. A grant ID is a 64 character unique identifier of a grant. The CreateGrant operation returns both. - */ - retireGrant(params: KMS.Types.RetireGrantRequest, callback?: (err: AWSError, data: {}) => void): Request<{}, AWSError>; - /** - * Retires a grant. To clean up, you can retire a grant when you're done using it. You should revoke a grant when you intend to actively deny operations that depend on it. The following are permitted to call this API: The AWS account (root user) under which the grant was created The RetiringPrincipal, if present in the grant The GranteePrincipal, if RetireGrant is an operation specified in the grant You must identify the grant to retire by its grant token or by a combination of the grant ID and the Amazon Resource Name (ARN) of the customer master key (CMK). A grant token is a unique variable-length base64-encoded string. A grant ID is a 64 character unique identifier of a grant. The CreateGrant operation returns both. - */ - retireGrant(callback?: (err: AWSError, data: {}) => void): Request<{}, AWSError>; - /** - * Revokes a grant. You can revoke a grant to actively deny operations that depend on it. - */ - revokeGrant(params: KMS.Types.RevokeGrantRequest, callback?: (err: AWSError, data: {}) => void): Request<{}, AWSError>; - /** - * Revokes a grant. You can revoke a grant to actively deny operations that depend on it. - */ - revokeGrant(callback?: (err: AWSError, data: {}) => void): Request<{}, AWSError>; - /** - * Schedules the deletion of a customer master key (CMK). You may provide a waiting period, specified in days, before deletion occurs. If you do not provide a waiting period, the default period of 30 days is used. When this operation is successful, the state of the CMK changes to PendingDeletion. Before the waiting period ends, you can use CancelKeyDeletion to cancel the deletion of the CMK. After the waiting period ends, AWS KMS deletes the CMK and all AWS KMS data associated with it, including all aliases that refer to it. Deleting a CMK is a destructive and potentially dangerous operation. When a CMK is deleted, all data that was encrypted under the CMK is rendered unrecoverable. To restrict the use of a CMK without deleting it, use DisableKey. For more information about scheduling a CMK for deletion, see Deleting Customer Master Keys in the AWS Key Management Service Developer Guide. - */ - scheduleKeyDeletion(params: KMS.Types.ScheduleKeyDeletionRequest, callback?: (err: AWSError, data: KMS.Types.ScheduleKeyDeletionResponse) => void): Request; - /** - * Schedules the deletion of a customer master key (CMK). You may provide a waiting period, specified in days, before deletion occurs. If you do not provide a waiting period, the default period of 30 days is used. When this operation is successful, the state of the CMK changes to PendingDeletion. Before the waiting period ends, you can use CancelKeyDeletion to cancel the deletion of the CMK. After the waiting period ends, AWS KMS deletes the CMK and all AWS KMS data associated with it, including all aliases that refer to it. Deleting a CMK is a destructive and potentially dangerous operation. When a CMK is deleted, all data that was encrypted under the CMK is rendered unrecoverable. To restrict the use of a CMK without deleting it, use DisableKey. For more information about scheduling a CMK for deletion, see Deleting Customer Master Keys in the AWS Key Management Service Developer Guide. - */ - scheduleKeyDeletion(callback?: (err: AWSError, data: KMS.Types.ScheduleKeyDeletionResponse) => void): Request; - /** - * Adds or overwrites one or more tags for the specified customer master key (CMK). Each tag consists of a tag key and a tag value. Tag keys and tag values are both required, but tag values can be empty (null) strings. You cannot use the same tag key more than once per CMK. For example, consider a CMK with one tag whose tag key is Purpose and tag value is Test. If you send a TagResource request for this CMK with a tag key of Purpose and a tag value of Prod, it does not create a second tag. Instead, the original tag is overwritten with the new tag value. - */ - tagResource(params: KMS.Types.TagResourceRequest, callback?: (err: AWSError, data: {}) => void): Request<{}, AWSError>; - /** - * Adds or overwrites one or more tags for the specified customer master key (CMK). Each tag consists of a tag key and a tag value. Tag keys and tag values are both required, but tag values can be empty (null) strings. You cannot use the same tag key more than once per CMK. For example, consider a CMK with one tag whose tag key is Purpose and tag value is Test. If you send a TagResource request for this CMK with a tag key of Purpose and a tag value of Prod, it does not create a second tag. Instead, the original tag is overwritten with the new tag value. - */ - tagResource(callback?: (err: AWSError, data: {}) => void): Request<{}, AWSError>; - /** - * Removes the specified tag or tags from the specified customer master key (CMK). To remove a tag, you specify the tag key for each tag to remove. You do not specify the tag value. To overwrite the tag value for an existing tag, use TagResource. - */ - untagResource(params: KMS.Types.UntagResourceRequest, callback?: (err: AWSError, data: {}) => void): Request<{}, AWSError>; - /** - * Removes the specified tag or tags from the specified customer master key (CMK). To remove a tag, you specify the tag key for each tag to remove. You do not specify the tag value. To overwrite the tag value for an existing tag, use TagResource. - */ - untagResource(callback?: (err: AWSError, data: {}) => void): Request<{}, AWSError>; - /** - * Updates an alias to map it to a different key. An alias is not a property of a key. Therefore, an alias can be mapped to and unmapped from an existing key without changing the properties of the key. An alias name can contain only alphanumeric characters, forward slashes (/), underscores (_), and dashes (-). An alias must start with the word "alias" followed by a forward slash (alias/). An alias that begins with "aws" after the forward slash (alias/aws...) is reserved by Amazon Web Services (AWS). The alias and the key it is mapped to must be in the same AWS account and the same region. - */ - updateAlias(params: KMS.Types.UpdateAliasRequest, callback?: (err: AWSError, data: {}) => void): Request<{}, AWSError>; - /** - * Updates an alias to map it to a different key. An alias is not a property of a key. Therefore, an alias can be mapped to and unmapped from an existing key without changing the properties of the key. An alias name can contain only alphanumeric characters, forward slashes (/), underscores (_), and dashes (-). An alias must start with the word "alias" followed by a forward slash (alias/). An alias that begins with "aws" after the forward slash (alias/aws...) is reserved by Amazon Web Services (AWS). The alias and the key it is mapped to must be in the same AWS account and the same region. - */ - updateAlias(callback?: (err: AWSError, data: {}) => void): Request<{}, AWSError>; - /** - * Updates the description of a customer master key (CMK). - */ - updateKeyDescription(params: KMS.Types.UpdateKeyDescriptionRequest, callback?: (err: AWSError, data: {}) => void): Request<{}, AWSError>; - /** - * Updates the description of a customer master key (CMK). - */ - updateKeyDescription(callback?: (err: AWSError, data: {}) => void): Request<{}, AWSError>; -} -declare namespace KMS { - export type AWSAccountIdType = string; - export type AlgorithmSpec = "RSAES_PKCS1_V1_5"|"RSAES_OAEP_SHA_1"|"RSAES_OAEP_SHA_256"|string; - export type AliasList = AliasListEntry[]; - export interface AliasListEntry { - /** - * String that contains the alias. - */ - AliasName?: AliasNameType; - /** - * String that contains the key ARN. - */ - AliasArn?: ArnType; - /** - * String that contains the key identifier referred to by the alias. - */ - TargetKeyId?: KeyIdType; - } - export type AliasNameType = string; - export type ArnType = string; - export type BooleanType = boolean; - export interface CancelKeyDeletionRequest { - /** - * The unique identifier for the customer master key (CMK) for which to cancel deletion. To specify this value, use the unique key ID or the Amazon Resource Name (ARN) of the CMK. Examples: Unique key ID: 1234abcd-12ab-34cd-56ef-1234567890ab Key ARN: arn:aws:kms:us-east-2:111122223333:key/1234abcd-12ab-34cd-56ef-1234567890ab To obtain the unique key ID and key ARN for a given CMK, use ListKeys or DescribeKey. - */ - KeyId: KeyIdType; - } - export interface CancelKeyDeletionResponse { - /** - * The unique identifier of the master key for which deletion is canceled. - */ - KeyId?: KeyIdType; - } - export type CiphertextType = Buffer|Uint8Array|Blob|string; - export interface CreateAliasRequest { - /** - * String that contains the display name. The name must start with the word "alias" followed by a forward slash (alias/). Aliases that begin with "alias/AWS" are reserved. - */ - AliasName: AliasNameType; - /** - * An identifier of the key for which you are creating the alias. This value cannot be another alias but can be a globally unique identifier or a fully specified ARN to a key. Key ARN Example - arn:aws:kms:us-east-1:123456789012:key/12345678-1234-1234-1234-123456789012 Globally Unique Key ID Example - 12345678-1234-1234-1234-123456789012 - */ - TargetKeyId: KeyIdType; - } - export interface CreateGrantRequest { - /** - * The unique identifier for the customer master key (CMK) that the grant applies to. To specify this value, use the globally unique key ID or the Amazon Resource Name (ARN) of the key. Examples: Globally unique key ID: 12345678-1234-1234-1234-123456789012 Key ARN: arn:aws:kms:us-west-2:123456789012:key/12345678-1234-1234-1234-123456789012 - */ - KeyId: KeyIdType; - /** - * The principal that is given permission to perform the operations that the grant permits. To specify the principal, use the Amazon Resource Name (ARN) of an AWS principal. Valid AWS principals include AWS accounts (root), IAM users, IAM roles, federated users, and assumed role users. For examples of the ARN syntax to use for specifying a principal, see AWS Identity and Access Management (IAM) in the Example ARNs section of the AWS General Reference. - */ - GranteePrincipal: PrincipalIdType; - /** - * The principal that is given permission to retire the grant by using RetireGrant operation. To specify the principal, use the Amazon Resource Name (ARN) of an AWS principal. Valid AWS principals include AWS accounts (root), IAM users, federated users, and assumed role users. For examples of the ARN syntax to use for specifying a principal, see AWS Identity and Access Management (IAM) in the Example ARNs section of the AWS General Reference. - */ - RetiringPrincipal?: PrincipalIdType; - /** - * A list of operations that the grant permits. - */ - Operations?: GrantOperationList; - /** - * A structure that you can use to allow certain operations in the grant only when the desired encryption context is present. For more information about encryption context, see Encryption Context in the AWS Key Management Service Developer Guide. - */ - Constraints?: GrantConstraints; - /** - * A list of grant tokens. For more information, see Grant Tokens in the AWS Key Management Service Developer Guide. - */ - GrantTokens?: GrantTokenList; - /** - * A friendly name for identifying the grant. Use this value to prevent unintended creation of duplicate grants when retrying this request. When this value is absent, all CreateGrant requests result in a new grant with a unique GrantId even if all the supplied parameters are identical. This can result in unintended duplicates when you retry the CreateGrant request. When this value is present, you can retry a CreateGrant request with identical parameters; if the grant already exists, the original GrantId is returned without creating a new grant. Note that the returned grant token is unique with every CreateGrant request, even when a duplicate GrantId is returned. All grant tokens obtained in this way can be used interchangeably. - */ - Name?: GrantNameType; - } - export interface CreateGrantResponse { - /** - * The grant token. For more information, see Grant Tokens in the AWS Key Management Service Developer Guide. - */ - GrantToken?: GrantTokenType; - /** - * The unique identifier for the grant. You can use the GrantId in a subsequent RetireGrant or RevokeGrant operation. - */ - GrantId?: GrantIdType; - } - export interface CreateKeyRequest { - /** - * The key policy to attach to the CMK. If you specify a policy and do not set BypassPolicyLockoutSafetyCheck to true, the policy must meet the following criteria: It must allow the principal that is making the CreateKey request to make a subsequent PutKeyPolicy request on the CMK. This reduces the likelihood that the CMK becomes unmanageable. For more information, refer to the scenario in the Default Key Policy section in the AWS Key Management Service Developer Guide. The principals that are specified in the key policy must exist and be visible to AWS KMS. When you create a new AWS principal (for example, an IAM user or role), you might need to enforce a delay before specifying the new principal in a key policy because the new principal might not immediately be visible to AWS KMS. For more information, see Changes that I make are not always immediately visible in the IAM User Guide. If you do not specify a policy, AWS KMS attaches a default key policy to the CMK. For more information, see Default Key Policy in the AWS Key Management Service Developer Guide. The policy size limit is 32 KiB (32768 bytes). - */ - Policy?: PolicyType; - /** - * A description of the CMK. Use a description that helps you decide whether the CMK is appropriate for a task. - */ - Description?: DescriptionType; - /** - * The intended use of the CMK. You can use CMKs only for symmetric encryption and decryption. - */ - KeyUsage?: KeyUsageType; - /** - * The source of the CMK's key material. The default is AWS_KMS, which means AWS KMS creates the key material. When this parameter is set to EXTERNAL, the request creates a CMK without key material so that you can import key material from your existing key management infrastructure. For more information about importing key material into AWS KMS, see Importing Key Material in the AWS Key Management Service Developer Guide. The CMK's Origin is immutable and is set when the CMK is created. - */ - Origin?: OriginType; - /** - * A flag to indicate whether to bypass the key policy lockout safety check. Setting this value to true increases the likelihood that the CMK becomes unmanageable. Do not set this value to true indiscriminately. For more information, refer to the scenario in the Default Key Policy section in the AWS Key Management Service Developer Guide. Use this parameter only when you include a policy in the request and you intend to prevent the principal that is making the request from making a subsequent PutKeyPolicy request on the CMK. The default value is false. - */ - BypassPolicyLockoutSafetyCheck?: BooleanType; - /** - * One or more tags. Each tag consists of a tag key and a tag value. Tag keys and tag values are both required, but tag values can be empty (null) strings. Use this parameter to tag the CMK when it is created. Alternately, you can omit this parameter and instead tag the CMK after it is created using TagResource. - */ - Tags?: TagList; - } - export interface CreateKeyResponse { - /** - * Metadata associated with the CMK. - */ - KeyMetadata?: KeyMetadata; - } - export type DataKeySpec = "AES_256"|"AES_128"|string; - export type DateType = Date; - export interface DecryptRequest { - /** - * Ciphertext to be decrypted. The blob includes metadata. - */ - CiphertextBlob: CiphertextType; - /** - * The encryption context. If this was specified in the Encrypt function, it must be specified here or the decryption operation will fail. For more information, see Encryption Context. - */ - EncryptionContext?: EncryptionContextType; - /** - * A list of grant tokens. For more information, see Grant Tokens in the AWS Key Management Service Developer Guide. - */ - GrantTokens?: GrantTokenList; - } - export interface DecryptResponse { - /** - * ARN of the key used to perform the decryption. This value is returned if no errors are encountered during the operation. - */ - KeyId?: KeyIdType; - /** - * Decrypted plaintext data. This value may not be returned if the customer master key is not available or if you didn't have permission to use it. - */ - Plaintext?: PlaintextType; - } - export interface DeleteAliasRequest { - /** - * The alias to be deleted. The name must start with the word "alias" followed by a forward slash (alias/). Aliases that begin with "alias/AWS" are reserved. - */ - AliasName: AliasNameType; - } - export interface DeleteImportedKeyMaterialRequest { - /** - * The identifier of the CMK whose key material to delete. The CMK's Origin must be EXTERNAL. A valid identifier is the unique key ID or the Amazon Resource Name (ARN) of the CMK. Examples: Unique key ID: 1234abcd-12ab-34cd-56ef-1234567890ab Key ARN: arn:aws:kms:us-east-2:111122223333:key/1234abcd-12ab-34cd-56ef-1234567890ab - */ - KeyId: KeyIdType; - } - export interface DescribeKeyRequest { - /** - * A unique identifier for the customer master key. This value can be a globally unique identifier, a fully specified ARN to either an alias or a key, or an alias name prefixed by "alias/". Key ARN Example - arn:aws:kms:us-east-1:123456789012:key/12345678-1234-1234-1234-123456789012 Alias ARN Example - arn:aws:kms:us-east-1:123456789012:alias/MyAliasName Globally Unique Key ID Example - 12345678-1234-1234-1234-123456789012 Alias Name Example - alias/MyAliasName - */ - KeyId: KeyIdType; - /** - * A list of grant tokens. For more information, see Grant Tokens in the AWS Key Management Service Developer Guide. - */ - GrantTokens?: GrantTokenList; - } - export interface DescribeKeyResponse { - /** - * Metadata associated with the key. - */ - KeyMetadata?: KeyMetadata; - } - export type DescriptionType = string; - export interface DisableKeyRequest { - /** - * A unique identifier for the CMK. Use the CMK's unique identifier or its Amazon Resource Name (ARN). For example: Unique ID: 1234abcd-12ab-34cd-56ef-1234567890ab ARN: arn:aws:kms:us-east-2:111122223333:key/1234abcd-12ab-34cd-56ef-1234567890ab - */ - KeyId: KeyIdType; - } - export interface DisableKeyRotationRequest { - /** - * A unique identifier for the customer master key. This value can be a globally unique identifier or the fully specified ARN to a key. Key ARN Example - arn:aws:kms:us-east-1:123456789012:key/12345678-1234-1234-1234-123456789012 Globally Unique Key ID Example - 12345678-1234-1234-1234-123456789012 - */ - KeyId: KeyIdType; - } - export interface EnableKeyRequest { - /** - * A unique identifier for the customer master key. This value can be a globally unique identifier or the fully specified ARN to a key. Key ARN Example - arn:aws:kms:us-east-1:123456789012:key/12345678-1234-1234-1234-123456789012 Globally Unique Key ID Example - 12345678-1234-1234-1234-123456789012 - */ - KeyId: KeyIdType; - } - export interface EnableKeyRotationRequest { - /** - * A unique identifier for the customer master key. This value can be a globally unique identifier or the fully specified ARN to a key. Key ARN Example - arn:aws:kms:us-east-1:123456789012:key/12345678-1234-1234-1234-123456789012 Globally Unique Key ID Example - 12345678-1234-1234-1234-123456789012 - */ - KeyId: KeyIdType; - } - export interface EncryptRequest { - /** - * A unique identifier for the customer master key. This value can be a globally unique identifier, a fully specified ARN to either an alias or a key, or an alias name prefixed by "alias/". Key ARN Example - arn:aws:kms:us-east-1:123456789012:key/12345678-1234-1234-1234-123456789012 Alias ARN Example - arn:aws:kms:us-east-1:123456789012:alias/MyAliasName Globally Unique Key ID Example - 12345678-1234-1234-1234-123456789012 Alias Name Example - alias/MyAliasName - */ - KeyId: KeyIdType; - /** - * Data to be encrypted. - */ - Plaintext: PlaintextType; - /** - * Name-value pair that specifies the encryption context to be used for authenticated encryption. If used here, the same value must be supplied to the Decrypt API or decryption will fail. For more information, see Encryption Context. - */ - EncryptionContext?: EncryptionContextType; - /** - * A list of grant tokens. For more information, see Grant Tokens in the AWS Key Management Service Developer Guide. - */ - GrantTokens?: GrantTokenList; - } - export interface EncryptResponse { - /** - * The encrypted plaintext. If you are using the CLI, the value is Base64 encoded. Otherwise, it is not encoded. - */ - CiphertextBlob?: CiphertextType; - /** - * The ID of the key used during encryption. - */ - KeyId?: KeyIdType; - } - export type EncryptionContextKey = string; - export type EncryptionContextType = {[key: string]: EncryptionContextValue}; - export type EncryptionContextValue = string; - export type ErrorMessageType = string; - export type ExpirationModelType = "KEY_MATERIAL_EXPIRES"|"KEY_MATERIAL_DOES_NOT_EXPIRE"|string; - export interface GenerateDataKeyRequest { - /** - * The identifier of the CMK under which to generate and encrypt the data encryption key. A valid identifier is the unique key ID or the Amazon Resource Name (ARN) of the CMK, or the alias name or ARN of an alias that refers to the CMK. Examples: Unique key ID: 1234abcd-12ab-34cd-56ef-1234567890ab CMK ARN: arn:aws:kms:us-east-2:111122223333:key/1234abcd-12ab-34cd-56ef-1234567890ab Alias name: alias/ExampleAlias Alias ARN: arn:aws:kms:us-east-2:111122223333:alias/ExampleAlias - */ - KeyId: KeyIdType; - /** - * A set of key-value pairs that represents additional authenticated data. For more information, see Encryption Context in the AWS Key Management Service Developer Guide. - */ - EncryptionContext?: EncryptionContextType; - /** - * The length of the data encryption key in bytes. For example, use the value 64 to generate a 512-bit data key (64 bytes is 512 bits). For common key lengths (128-bit and 256-bit symmetric keys), we recommend that you use the KeySpec field instead of this one. - */ - NumberOfBytes?: NumberOfBytesType; - /** - * The length of the data encryption key. Use AES_128 to generate a 128-bit symmetric key, or AES_256 to generate a 256-bit symmetric key. - */ - KeySpec?: DataKeySpec; - /** - * A list of grant tokens. For more information, see Grant Tokens in the AWS Key Management Service Developer Guide. - */ - GrantTokens?: GrantTokenList; - } - export interface GenerateDataKeyResponse { - /** - * The encrypted data encryption key. - */ - CiphertextBlob?: CiphertextType; - /** - * The data encryption key. Use this data key for local encryption and decryption, then remove it from memory as soon as possible. - */ - Plaintext?: PlaintextType; - /** - * The identifier of the CMK under which the data encryption key was generated and encrypted. - */ - KeyId?: KeyIdType; - } - export interface GenerateDataKeyWithoutPlaintextRequest { - /** - * The identifier of the CMK under which to generate and encrypt the data encryption key. A valid identifier is the unique key ID or the Amazon Resource Name (ARN) of the CMK, or the alias name or ARN of an alias that refers to the CMK. Examples: Unique key ID: 1234abcd-12ab-34cd-56ef-1234567890ab CMK ARN: arn:aws:kms:us-east-2:111122223333:key/1234abcd-12ab-34cd-56ef-1234567890ab Alias name: alias/ExampleAlias Alias ARN: arn:aws:kms:us-east-2:111122223333:alias/ExampleAlias - */ - KeyId: KeyIdType; - /** - * A set of key-value pairs that represents additional authenticated data. For more information, see Encryption Context in the AWS Key Management Service Developer Guide. - */ - EncryptionContext?: EncryptionContextType; - /** - * The length of the data encryption key. Use AES_128 to generate a 128-bit symmetric key, or AES_256 to generate a 256-bit symmetric key. - */ - KeySpec?: DataKeySpec; - /** - * The length of the data encryption key in bytes. For example, use the value 64 to generate a 512-bit data key (64 bytes is 512 bits). For common key lengths (128-bit and 256-bit symmetric keys), we recommend that you use the KeySpec field instead of this one. - */ - NumberOfBytes?: NumberOfBytesType; - /** - * A list of grant tokens. For more information, see Grant Tokens in the AWS Key Management Service Developer Guide. - */ - GrantTokens?: GrantTokenList; - } - export interface GenerateDataKeyWithoutPlaintextResponse { - /** - * The encrypted data encryption key. - */ - CiphertextBlob?: CiphertextType; - /** - * The identifier of the CMK under which the data encryption key was generated and encrypted. - */ - KeyId?: KeyIdType; - } - export interface GenerateRandomRequest { - /** - * The length of the byte string. - */ - NumberOfBytes?: NumberOfBytesType; - } - export interface GenerateRandomResponse { - /** - * The random byte string. - */ - Plaintext?: PlaintextType; - } - export interface GetKeyPolicyRequest { - /** - * A unique identifier for the customer master key. This value can be a globally unique identifier or the fully specified ARN to a key. Key ARN Example - arn:aws:kms:us-east-1:123456789012:key/12345678-1234-1234-1234-123456789012 Globally Unique Key ID Example - 12345678-1234-1234-1234-123456789012 - */ - KeyId: KeyIdType; - /** - * String that contains the name of the policy. Currently, this must be "default". Policy names can be discovered by calling ListKeyPolicies. - */ - PolicyName: PolicyNameType; - } - export interface GetKeyPolicyResponse { - /** - * A policy document in JSON format. - */ - Policy?: PolicyType; - } - export interface GetKeyRotationStatusRequest { - /** - * A unique identifier for the customer master key. This value can be a globally unique identifier or the fully specified ARN to a key. Key ARN Example - arn:aws:kms:us-east-1:123456789012:key/12345678-1234-1234-1234-123456789012 Globally Unique Key ID Example - 12345678-1234-1234-1234-123456789012 - */ - KeyId: KeyIdType; - } - export interface GetKeyRotationStatusResponse { - /** - * A Boolean value that specifies whether key rotation is enabled. - */ - KeyRotationEnabled?: BooleanType; - } - export interface GetParametersForImportRequest { - /** - * The identifier of the CMK into which you will import key material. The CMK's Origin must be EXTERNAL. A valid identifier is the unique key ID or the Amazon Resource Name (ARN) of the CMK. Examples: Unique key ID: 1234abcd-12ab-34cd-56ef-1234567890ab Key ARN: arn:aws:kms:us-east-2:111122223333:key/1234abcd-12ab-34cd-56ef-1234567890ab - */ - KeyId: KeyIdType; - /** - * The algorithm you will use to encrypt the key material before importing it with ImportKeyMaterial. For more information, see Encrypt the Key Material in the AWS Key Management Service Developer Guide. - */ - WrappingAlgorithm: AlgorithmSpec; - /** - * The type of wrapping key (public key) to return in the response. Only 2048-bit RSA public keys are supported. - */ - WrappingKeySpec: WrappingKeySpec; - } - export interface GetParametersForImportResponse { - /** - * The identifier of the CMK to use in a subsequent ImportKeyMaterial request. This is the same CMK specified in the GetParametersForImport request. - */ - KeyId?: KeyIdType; - /** - * The import token to send in a subsequent ImportKeyMaterial request. - */ - ImportToken?: CiphertextType; - /** - * The public key to use to encrypt the key material before importing it with ImportKeyMaterial. - */ - PublicKey?: PlaintextType; - /** - * The time at which the import token and public key are no longer valid. After this time, you cannot use them to make an ImportKeyMaterial request and you must send another GetParametersForImport request to retrieve new ones. - */ - ParametersValidTo?: DateType; - } - export interface GrantConstraints { - /** - * A list of key-value pairs, all of which must be present in the encryption context of certain subsequent operations that the grant allows. When certain subsequent operations allowed by the grant include encryption context that matches this list or is a superset of this list, the grant allows the operation. Otherwise, the grant does not allow the operation. - */ - EncryptionContextSubset?: EncryptionContextType; - /** - * A list of key-value pairs that must be present in the encryption context of certain subsequent operations that the grant allows. When certain subsequent operations allowed by the grant include encryption context that matches this list, the grant allows the operation. Otherwise, the grant does not allow the operation. - */ - EncryptionContextEquals?: EncryptionContextType; - } - export type GrantIdType = string; - export type GrantList = GrantListEntry[]; - export interface GrantListEntry { - /** - * The unique identifier for the customer master key (CMK) to which the grant applies. - */ - KeyId?: KeyIdType; - /** - * The unique identifier for the grant. - */ - GrantId?: GrantIdType; - /** - * The friendly name that identifies the grant. If a name was provided in the CreateGrant request, that name is returned. Otherwise this value is null. - */ - Name?: GrantNameType; - /** - * The date and time when the grant was created. - */ - CreationDate?: DateType; - /** - * The principal that receives the grant's permissions. - */ - GranteePrincipal?: PrincipalIdType; - /** - * The principal that can retire the grant. - */ - RetiringPrincipal?: PrincipalIdType; - /** - * The AWS account under which the grant was issued. - */ - IssuingAccount?: PrincipalIdType; - /** - * The list of operations permitted by the grant. - */ - Operations?: GrantOperationList; - /** - * A list of key-value pairs that must be present in the encryption context of certain subsequent operations that the grant allows. - */ - Constraints?: GrantConstraints; - } - export type GrantNameType = string; - export type GrantOperation = "Decrypt"|"Encrypt"|"GenerateDataKey"|"GenerateDataKeyWithoutPlaintext"|"ReEncryptFrom"|"ReEncryptTo"|"CreateGrant"|"RetireGrant"|"DescribeKey"|string; - export type GrantOperationList = GrantOperation[]; - export type GrantTokenList = GrantTokenType[]; - export type GrantTokenType = string; - export interface ImportKeyMaterialRequest { - /** - * The identifier of the CMK to import the key material into. The CMK's Origin must be EXTERNAL. A valid identifier is the unique key ID or the Amazon Resource Name (ARN) of the CMK. Examples: Unique key ID: 1234abcd-12ab-34cd-56ef-1234567890ab Key ARN: arn:aws:kms:us-east-2:111122223333:key/1234abcd-12ab-34cd-56ef-1234567890ab - */ - KeyId: KeyIdType; - /** - * The import token that you received in the response to a previous GetParametersForImport request. It must be from the same response that contained the public key that you used to encrypt the key material. - */ - ImportToken: CiphertextType; - /** - * The encrypted key material to import. It must be encrypted with the public key that you received in the response to a previous GetParametersForImport request, using the wrapping algorithm that you specified in that request. - */ - EncryptedKeyMaterial: CiphertextType; - /** - * The time at which the imported key material expires. When the key material expires, AWS KMS deletes the key material and the CMK becomes unusable. You must omit this parameter when the ExpirationModel parameter is set to KEY_MATERIAL_DOES_NOT_EXPIRE. Otherwise it is required. - */ - ValidTo?: DateType; - /** - * Specifies whether the key material expires. The default is KEY_MATERIAL_EXPIRES, in which case you must include the ValidTo parameter. When this parameter is set to KEY_MATERIAL_DOES_NOT_EXPIRE, you must omit the ValidTo parameter. - */ - ExpirationModel?: ExpirationModelType; - } - export interface ImportKeyMaterialResponse { - } - export type KeyIdType = string; - export type KeyList = KeyListEntry[]; - export interface KeyListEntry { - /** - * Unique identifier of the key. - */ - KeyId?: KeyIdType; - /** - * ARN of the key. - */ - KeyArn?: ArnType; - } - export type KeyManagerType = "AWS"|"CUSTOMER"|string; - export interface KeyMetadata { - /** - * The twelve-digit account ID of the AWS account that owns the CMK. - */ - AWSAccountId?: AWSAccountIdType; - /** - * The globally unique identifier for the CMK. - */ - KeyId: KeyIdType; - /** - * The Amazon Resource Name (ARN) of the CMK. For examples, see AWS Key Management Service (AWS KMS) in the Example ARNs section of the AWS General Reference. - */ - Arn?: ArnType; - /** - * The date and time when the CMK was created. - */ - CreationDate?: DateType; - /** - * Specifies whether the CMK is enabled. When KeyState is Enabled this value is true, otherwise it is false. - */ - Enabled?: BooleanType; - /** - * The description of the CMK. - */ - Description?: DescriptionType; - /** - * The cryptographic operations for which you can use the CMK. Currently the only allowed value is ENCRYPT_DECRYPT, which means you can use the CMK for the Encrypt and Decrypt operations. - */ - KeyUsage?: KeyUsageType; - /** - * The state of the CMK. For more information about how key state affects the use of a CMK, see How Key State Affects the Use of a Customer Master Key in the AWS Key Management Service Developer Guide. - */ - KeyState?: KeyState; - /** - * The date and time after which AWS KMS deletes the CMK. This value is present only when KeyState is PendingDeletion, otherwise this value is omitted. - */ - DeletionDate?: DateType; - /** - * The time at which the imported key material expires. When the key material expires, AWS KMS deletes the key material and the CMK becomes unusable. This value is present only for CMKs whose Origin is EXTERNAL and whose ExpirationModel is KEY_MATERIAL_EXPIRES, otherwise this value is omitted. - */ - ValidTo?: DateType; - /** - * The source of the CMK's key material. When this value is AWS_KMS, AWS KMS created the key material. When this value is EXTERNAL, the key material was imported from your existing key management infrastructure or the CMK lacks key material. - */ - Origin?: OriginType; - /** - * Specifies whether the CMK's key material expires. This value is present only when Origin is EXTERNAL, otherwise this value is omitted. - */ - ExpirationModel?: ExpirationModelType; - /** - * The CMK's manager. CMKs are either customer-managed or AWS-managed. For more information about the difference, see Customer Master Keys in the AWS Key Management Service Developer Guide. - */ - KeyManager?: KeyManagerType; - } - export type KeyState = "Enabled"|"Disabled"|"PendingDeletion"|"PendingImport"|string; - export type KeyUsageType = "ENCRYPT_DECRYPT"|string; - export type LimitType = number; - export interface ListAliasesRequest { - /** - * Use this parameter to specify the maximum number of items to return. When this value is present, AWS KMS does not return more than the specified number of items, but it might return fewer. This value is optional. If you include a value, it must be between 1 and 100, inclusive. If you do not include a value, it defaults to 50. - */ - Limit?: LimitType; - /** - * Use this parameter in a subsequent request after you receive a response with truncated results. Set it to the value of NextMarker from the truncated response you just received. - */ - Marker?: MarkerType; - } - export interface ListAliasesResponse { - /** - * A list of key aliases in the user's account. - */ - Aliases?: AliasList; - /** - * When Truncated is true, this element is present and contains the value to use for the Marker parameter in a subsequent request. - */ - NextMarker?: MarkerType; - /** - * A flag that indicates whether there are more items in the list. When this value is true, the list in this response is truncated. To retrieve more items, pass the value of the NextMarker element in this response to the Marker parameter in a subsequent request. - */ - Truncated?: BooleanType; - } - export interface ListGrantsRequest { - /** - * Use this parameter to specify the maximum number of items to return. When this value is present, AWS KMS does not return more than the specified number of items, but it might return fewer. This value is optional. If you include a value, it must be between 1 and 100, inclusive. If you do not include a value, it defaults to 50. - */ - Limit?: LimitType; - /** - * Use this parameter in a subsequent request after you receive a response with truncated results. Set it to the value of NextMarker from the truncated response you just received. - */ - Marker?: MarkerType; - /** - * A unique identifier for the customer master key. This value can be a globally unique identifier or the fully specified ARN to a key. Key ARN Example - arn:aws:kms:us-east-1:123456789012:key/12345678-1234-1234-1234-123456789012 Globally Unique Key ID Example - 12345678-1234-1234-1234-123456789012 - */ - KeyId: KeyIdType; - } - export interface ListGrantsResponse { - /** - * A list of grants. - */ - Grants?: GrantList; - /** - * When Truncated is true, this element is present and contains the value to use for the Marker parameter in a subsequent request. - */ - NextMarker?: MarkerType; - /** - * A flag that indicates whether there are more items in the list. When this value is true, the list in this response is truncated. To retrieve more items, pass the value of the NextMarker element in this response to the Marker parameter in a subsequent request. - */ - Truncated?: BooleanType; - } - export interface ListKeyPoliciesRequest { - /** - * A unique identifier for the customer master key (CMK). You can use the unique key ID or the Amazon Resource Name (ARN) of the CMK. Examples: Unique key ID: 1234abcd-12ab-34cd-56ef-1234567890ab Key ARN: arn:aws:kms:us-east-2:111122223333:key/1234abcd-12ab-34cd-56ef-1234567890ab - */ - KeyId: KeyIdType; - /** - * Use this parameter to specify the maximum number of items to return. When this value is present, AWS KMS does not return more than the specified number of items, but it might return fewer. This value is optional. If you include a value, it must be between 1 and 1000, inclusive. If you do not include a value, it defaults to 100. Currently only 1 policy can be attached to a key. - */ - Limit?: LimitType; - /** - * Use this parameter in a subsequent request after you receive a response with truncated results. Set it to the value of NextMarker from the truncated response you just received. - */ - Marker?: MarkerType; - } - export interface ListKeyPoliciesResponse { - /** - * A list of policy names. Currently, there is only one policy and it is named "Default". - */ - PolicyNames?: PolicyNameList; - /** - * When Truncated is true, this element is present and contains the value to use for the Marker parameter in a subsequent request. - */ - NextMarker?: MarkerType; - /** - * A flag that indicates whether there are more items in the list. When this value is true, the list in this response is truncated. To retrieve more items, pass the value of the NextMarker element in this response to the Marker parameter in a subsequent request. - */ - Truncated?: BooleanType; - } - export interface ListKeysRequest { - /** - * Use this parameter to specify the maximum number of items to return. When this value is present, AWS KMS does not return more than the specified number of items, but it might return fewer. This value is optional. If you include a value, it must be between 1 and 1000, inclusive. If you do not include a value, it defaults to 100. - */ - Limit?: LimitType; - /** - * Use this parameter in a subsequent request after you receive a response with truncated results. Set it to the value of NextMarker from the truncated response you just received. - */ - Marker?: MarkerType; - } - export interface ListKeysResponse { - /** - * A list of keys. - */ - Keys?: KeyList; - /** - * When Truncated is true, this element is present and contains the value to use for the Marker parameter in a subsequent request. - */ - NextMarker?: MarkerType; - /** - * A flag that indicates whether there are more items in the list. When this value is true, the list in this response is truncated. To retrieve more items, pass the value of the NextMarker element in this response to the Marker parameter in a subsequent request. - */ - Truncated?: BooleanType; - } - export interface ListResourceTagsRequest { - /** - * A unique identifier for the CMK whose tags you are listing. You can use the unique key ID or the Amazon Resource Name (ARN) of the CMK. Examples: Unique key ID: 1234abcd-12ab-34cd-56ef-1234567890ab Key ARN: arn:aws:kms:us-east-2:111122223333:key/1234abcd-12ab-34cd-56ef-1234567890ab - */ - KeyId: KeyIdType; - /** - * Use this parameter to specify the maximum number of items to return. When this value is present, AWS KMS does not return more than the specified number of items, but it might return fewer. This value is optional. If you include a value, it must be between 1 and 50, inclusive. If you do not include a value, it defaults to 50. - */ - Limit?: LimitType; - /** - * Use this parameter in a subsequent request after you receive a response with truncated results. Set it to the value of NextMarker from the truncated response you just received. Do not attempt to construct this value. Use only the value of NextMarker from the truncated response you just received. - */ - Marker?: MarkerType; - } - export interface ListResourceTagsResponse { - /** - * A list of tags. Each tag consists of a tag key and a tag value. - */ - Tags?: TagList; - /** - * When Truncated is true, this element is present and contains the value to use for the Marker parameter in a subsequent request. Do not assume or infer any information from this value. - */ - NextMarker?: MarkerType; - /** - * A flag that indicates whether there are more items in the list. When this value is true, the list in this response is truncated. To retrieve more items, pass the value of the NextMarker element in this response to the Marker parameter in a subsequent request. - */ - Truncated?: BooleanType; - } - export interface ListRetirableGrantsRequest { - /** - * Use this parameter to specify the maximum number of items to return. When this value is present, AWS KMS does not return more than the specified number of items, but it might return fewer. This value is optional. If you include a value, it must be between 1 and 100, inclusive. If you do not include a value, it defaults to 50. - */ - Limit?: LimitType; - /** - * Use this parameter in a subsequent request after you receive a response with truncated results. Set it to the value of NextMarker from the truncated response you just received. - */ - Marker?: MarkerType; - /** - * The retiring principal for which to list grants. To specify the retiring principal, use the Amazon Resource Name (ARN) of an AWS principal. Valid AWS principals include AWS accounts (root), IAM users, federated users, and assumed role users. For examples of the ARN syntax for specifying a principal, see AWS Identity and Access Management (IAM) in the Example ARNs section of the Amazon Web Services General Reference. - */ - RetiringPrincipal: PrincipalIdType; - } - export type MarkerType = string; - export type NumberOfBytesType = number; - export type OriginType = "AWS_KMS"|"EXTERNAL"|string; - export type PendingWindowInDaysType = number; - export type PlaintextType = Buffer|Uint8Array|Blob|string; - export type PolicyNameList = PolicyNameType[]; - export type PolicyNameType = string; - export type PolicyType = string; - export type PrincipalIdType = string; - export interface PutKeyPolicyRequest { - /** - * A unique identifier for the CMK. Use the CMK's unique identifier or its Amazon Resource Name (ARN). For example: Unique ID: 1234abcd-12ab-34cd-56ef-1234567890ab ARN: arn:aws:kms:us-east-2:111122223333:key/1234abcd-12ab-34cd-56ef-1234567890ab - */ - KeyId: KeyIdType; - /** - * The name of the key policy. This value must be default. - */ - PolicyName: PolicyNameType; - /** - * The key policy to attach to the CMK. If you do not set BypassPolicyLockoutSafetyCheck to true, the policy must meet the following criteria: It must allow the principal that is making the PutKeyPolicy request to make a subsequent PutKeyPolicy request on the CMK. This reduces the likelihood that the CMK becomes unmanageable. For more information, refer to the scenario in the Default Key Policy section in the AWS Key Management Service Developer Guide. The principals that are specified in the key policy must exist and be visible to AWS KMS. When you create a new AWS principal (for example, an IAM user or role), you might need to enforce a delay before specifying the new principal in a key policy because the new principal might not immediately be visible to AWS KMS. For more information, see Changes that I make are not always immediately visible in the IAM User Guide. The policy size limit is 32 KiB (32768 bytes). - */ - Policy: PolicyType; - /** - * A flag to indicate whether to bypass the key policy lockout safety check. Setting this value to true increases the likelihood that the CMK becomes unmanageable. Do not set this value to true indiscriminately. For more information, refer to the scenario in the Default Key Policy section in the AWS Key Management Service Developer Guide. Use this parameter only when you intend to prevent the principal that is making the request from making a subsequent PutKeyPolicy request on the CMK. The default value is false. - */ - BypassPolicyLockoutSafetyCheck?: BooleanType; - } - export interface ReEncryptRequest { - /** - * Ciphertext of the data to reencrypt. - */ - CiphertextBlob: CiphertextType; - /** - * Encryption context used to encrypt and decrypt the data specified in the CiphertextBlob parameter. - */ - SourceEncryptionContext?: EncryptionContextType; - /** - * A unique identifier for the CMK to use to reencrypt the data. This value can be a globally unique identifier, a fully specified ARN to either an alias or a key, or an alias name prefixed by "alias/". Key ARN Example - arn:aws:kms:us-east-1:123456789012:key/12345678-1234-1234-1234-123456789012 Alias ARN Example - arn:aws:kms:us-east-1:123456789012:alias/MyAliasName Globally Unique Key ID Example - 12345678-1234-1234-1234-123456789012 Alias Name Example - alias/MyAliasName - */ - DestinationKeyId: KeyIdType; - /** - * Encryption context to use when the data is reencrypted. - */ - DestinationEncryptionContext?: EncryptionContextType; - /** - * A list of grant tokens. For more information, see Grant Tokens in the AWS Key Management Service Developer Guide. - */ - GrantTokens?: GrantTokenList; - } - export interface ReEncryptResponse { - /** - * The reencrypted data. - */ - CiphertextBlob?: CiphertextType; - /** - * Unique identifier of the CMK used to originally encrypt the data. - */ - SourceKeyId?: KeyIdType; - /** - * Unique identifier of the CMK used to reencrypt the data. - */ - KeyId?: KeyIdType; - } - export interface RetireGrantRequest { - /** - * Token that identifies the grant to be retired. - */ - GrantToken?: GrantTokenType; - /** - * The Amazon Resource Name of the CMK associated with the grant. Example: arn:aws:kms:us-east-2:444455556666:key/1234abcd-12ab-34cd-56ef-1234567890ab - */ - KeyId?: KeyIdType; - /** - * Unique identifier of the grant to retire. The grant ID is returned in the response to a CreateGrant operation. Grant ID Example - 0123456789012345678901234567890123456789012345678901234567890123 - */ - GrantId?: GrantIdType; - } - export interface RevokeGrantRequest { - /** - * A unique identifier for the customer master key associated with the grant. This value can be a globally unique identifier or the fully specified ARN to a key. Key ARN Example - arn:aws:kms:us-east-1:123456789012:key/12345678-1234-1234-1234-123456789012 Globally Unique Key ID Example - 12345678-1234-1234-1234-123456789012 - */ - KeyId: KeyIdType; - /** - * Identifier of the grant to be revoked. - */ - GrantId: GrantIdType; - } - export interface ScheduleKeyDeletionRequest { - /** - * The unique identifier for the customer master key (CMK) to delete. To specify this value, use the unique key ID or the Amazon Resource Name (ARN) of the CMK. Examples: Unique key ID: 1234abcd-12ab-34cd-56ef-1234567890ab Key ARN: arn:aws:kms:us-east-2:111122223333:key/1234abcd-12ab-34cd-56ef-1234567890ab To obtain the unique key ID and key ARN for a given CMK, use ListKeys or DescribeKey. - */ - KeyId: KeyIdType; - /** - * The waiting period, specified in number of days. After the waiting period ends, AWS KMS deletes the customer master key (CMK). This value is optional. If you include a value, it must be between 7 and 30, inclusive. If you do not include a value, it defaults to 30. - */ - PendingWindowInDays?: PendingWindowInDaysType; - } - export interface ScheduleKeyDeletionResponse { - /** - * The unique identifier of the customer master key (CMK) for which deletion is scheduled. - */ - KeyId?: KeyIdType; - /** - * The date and time after which AWS KMS deletes the customer master key (CMK). - */ - DeletionDate?: DateType; - } - export interface Tag { - /** - * The key of the tag. - */ - TagKey: TagKeyType; - /** - * The value of the tag. - */ - TagValue: TagValueType; - } - export type TagKeyList = TagKeyType[]; - export type TagKeyType = string; - export type TagList = Tag[]; - export interface TagResourceRequest { - /** - * A unique identifier for the CMK you are tagging. You can use the unique key ID or the Amazon Resource Name (ARN) of the CMK. Examples: Unique key ID: 1234abcd-12ab-34cd-56ef-1234567890ab Key ARN: arn:aws:kms:us-east-2:111122223333:key/1234abcd-12ab-34cd-56ef-1234567890ab - */ - KeyId: KeyIdType; - /** - * One or more tags. Each tag consists of a tag key and a tag value. - */ - Tags: TagList; - } - export type TagValueType = string; - export interface UntagResourceRequest { - /** - * A unique identifier for the CMK from which you are removing tags. You can use the unique key ID or the Amazon Resource Name (ARN) of the CMK. Examples: Unique key ID: 1234abcd-12ab-34cd-56ef-1234567890ab Key ARN: arn:aws:kms:us-east-2:111122223333:key/1234abcd-12ab-34cd-56ef-1234567890ab - */ - KeyId: KeyIdType; - /** - * One or more tag keys. Specify only the tag keys, not the tag values. - */ - TagKeys: TagKeyList; - } - export interface UpdateAliasRequest { - /** - * String that contains the name of the alias to be modified. The name must start with the word "alias" followed by a forward slash (alias/). Aliases that begin with "alias/aws" are reserved. - */ - AliasName: AliasNameType; - /** - * Unique identifier of the customer master key to be mapped to the alias. This value can be a globally unique identifier or the fully specified ARN of a key. Key ARN Example - arn:aws:kms:us-east-1:123456789012:key/12345678-1234-1234-1234-123456789012 Globally Unique Key ID Example - 12345678-1234-1234-1234-123456789012 You can call ListAliases to verify that the alias is mapped to the correct TargetKeyId. - */ - TargetKeyId: KeyIdType; - } - export interface UpdateKeyDescriptionRequest { - /** - * A unique identifier for the CMK. This value can be a globally unique identifier or the fully specified ARN to a key. Key ARN Example - arn:aws:kms:us-east-1:123456789012:key/12345678-1234-1234-1234-123456789012 Globally Unique Key ID Example - 12345678-1234-1234-1234-123456789012 - */ - KeyId: KeyIdType; - /** - * New description for the CMK. - */ - Description: DescriptionType; - } - export type WrappingKeySpec = "RSA_2048"|string; - /** - * A string in YYYY-MM-DD format that represents the latest possible API version that can be used in this service. Specify 'latest' to use the latest possible version. - */ - export type apiVersion = "2014-11-01"|"latest"|string; - export interface ClientApiVersions { - /** - * A string in YYYY-MM-DD format that represents the latest possible API version that can be used in this service. Specify 'latest' to use the latest possible version. - */ - apiVersion?: apiVersion; - } - export type ClientConfiguration = ServiceConfigurationOptions & ClientApiVersions; - /** - * Contains interfaces for use with the KMS client. - */ - export import Types = KMS; -} -export = KMS; diff --git a/workshops/monte-carlo-on-ec2-spot-fleet/src/web/node_modules/aws-sdk/clients/kms.js b/workshops/monte-carlo-on-ec2-spot-fleet/src/web/node_modules/aws-sdk/clients/kms.js deleted file mode 100644 index 09c0f05d..00000000 --- a/workshops/monte-carlo-on-ec2-spot-fleet/src/web/node_modules/aws-sdk/clients/kms.js +++ /dev/null @@ -1,18 +0,0 @@ -require('../lib/node_loader'); -var AWS = require('../lib/core'); -var Service = AWS.Service; -var apiLoader = AWS.apiLoader; - -apiLoader.services['kms'] = {}; -AWS.KMS = Service.defineService('kms', ['2014-11-01']); -Object.defineProperty(apiLoader.services['kms'], '2014-11-01', { - get: function get() { - var model = require('../apis/kms-2014-11-01.min.json'); - model.paginators = require('../apis/kms-2014-11-01.paginators.json').pagination; - return model; - }, - enumerable: true, - configurable: true -}); - -module.exports = AWS.KMS; diff --git a/workshops/monte-carlo-on-ec2-spot-fleet/src/web/node_modules/aws-sdk/clients/lambda.d.ts b/workshops/monte-carlo-on-ec2-spot-fleet/src/web/node_modules/aws-sdk/clients/lambda.d.ts deleted file mode 100644 index 6091eae5..00000000 --- a/workshops/monte-carlo-on-ec2-spot-fleet/src/web/node_modules/aws-sdk/clients/lambda.d.ts +++ /dev/null @@ -1,1140 +0,0 @@ -import {Request} from '../lib/request'; -import {Response} from '../lib/response'; -import {AWSError} from '../lib/error'; -import {Service} from '../lib/service'; -import {ServiceConfigurationOptions} from '../lib/service'; -import {ConfigBase as Config} from '../lib/config'; -import {Readable} from 'stream'; -interface Blob {} -declare class Lambda extends Service { - /** - * Constructs a service object. This object has one method for each API operation. - */ - constructor(options?: Lambda.Types.ClientConfiguration) - config: Config & Lambda.Types.ClientConfiguration; - /** - * Adds a permission to the resource policy associated with the specified AWS Lambda function. You use resource policies to grant permissions to event sources that use push model. In a push model, event sources (such as Amazon S3 and custom applications) invoke your Lambda function. Each permission you add to the resource policy allows an event source, permission to invoke the Lambda function. For information about the push model, see AWS Lambda: How it Works. If you are using versioning, the permissions you add are specific to the Lambda function version or alias you specify in the AddPermission request via the Qualifier parameter. For more information about versioning, see AWS Lambda Function Versioning and Aliases. This operation requires permission for the lambda:AddPermission action. - */ - addPermission(params: Lambda.Types.AddPermissionRequest, callback?: (err: AWSError, data: Lambda.Types.AddPermissionResponse) => void): Request; - /** - * Adds a permission to the resource policy associated with the specified AWS Lambda function. You use resource policies to grant permissions to event sources that use push model. In a push model, event sources (such as Amazon S3 and custom applications) invoke your Lambda function. Each permission you add to the resource policy allows an event source, permission to invoke the Lambda function. For information about the push model, see AWS Lambda: How it Works. If you are using versioning, the permissions you add are specific to the Lambda function version or alias you specify in the AddPermission request via the Qualifier parameter. For more information about versioning, see AWS Lambda Function Versioning and Aliases. This operation requires permission for the lambda:AddPermission action. - */ - addPermission(callback?: (err: AWSError, data: Lambda.Types.AddPermissionResponse) => void): Request; - /** - * Creates an alias that points to the specified Lambda function version. For more information, see Introduction to AWS Lambda Aliases. Alias names are unique for a given function. This requires permission for the lambda:CreateAlias action. - */ - createAlias(params: Lambda.Types.CreateAliasRequest, callback?: (err: AWSError, data: Lambda.Types.AliasConfiguration) => void): Request; - /** - * Creates an alias that points to the specified Lambda function version. For more information, see Introduction to AWS Lambda Aliases. Alias names are unique for a given function. This requires permission for the lambda:CreateAlias action. - */ - createAlias(callback?: (err: AWSError, data: Lambda.Types.AliasConfiguration) => void): Request; - /** - * Identifies a stream as an event source for a Lambda function. It can be either an Amazon Kinesis stream or an Amazon DynamoDB stream. AWS Lambda invokes the specified function when records are posted to the stream. This association between a stream source and a Lambda function is called the event source mapping. This event source mapping is relevant only in the AWS Lambda pull model, where AWS Lambda invokes the function. For more information, see AWS Lambda: How it Works in the AWS Lambda Developer Guide. You provide mapping information (for example, which stream to read from and which Lambda function to invoke) in the request body. Each event source, such as an Amazon Kinesis or a DynamoDB stream, can be associated with multiple AWS Lambda function. A given Lambda function can be associated with multiple AWS event sources. If you are using versioning, you can specify a specific function version or an alias via the function name parameter. For more information about versioning, see AWS Lambda Function Versioning and Aliases. This operation requires permission for the lambda:CreateEventSourceMapping action. - */ - createEventSourceMapping(params: Lambda.Types.CreateEventSourceMappingRequest, callback?: (err: AWSError, data: Lambda.Types.EventSourceMappingConfiguration) => void): Request; - /** - * Identifies a stream as an event source for a Lambda function. It can be either an Amazon Kinesis stream or an Amazon DynamoDB stream. AWS Lambda invokes the specified function when records are posted to the stream. This association between a stream source and a Lambda function is called the event source mapping. This event source mapping is relevant only in the AWS Lambda pull model, where AWS Lambda invokes the function. For more information, see AWS Lambda: How it Works in the AWS Lambda Developer Guide. You provide mapping information (for example, which stream to read from and which Lambda function to invoke) in the request body. Each event source, such as an Amazon Kinesis or a DynamoDB stream, can be associated with multiple AWS Lambda function. A given Lambda function can be associated with multiple AWS event sources. If you are using versioning, you can specify a specific function version or an alias via the function name parameter. For more information about versioning, see AWS Lambda Function Versioning and Aliases. This operation requires permission for the lambda:CreateEventSourceMapping action. - */ - createEventSourceMapping(callback?: (err: AWSError, data: Lambda.Types.EventSourceMappingConfiguration) => void): Request; - /** - * Creates a new Lambda function. The function metadata is created from the request parameters, and the code for the function is provided by a .zip file in the request body. If the function name already exists, the operation will fail. Note that the function name is case-sensitive. If you are using versioning, you can also publish a version of the Lambda function you are creating using the Publish parameter. For more information about versioning, see AWS Lambda Function Versioning and Aliases. This operation requires permission for the lambda:CreateFunction action. - */ - createFunction(params: Lambda.Types.CreateFunctionRequest, callback?: (err: AWSError, data: Lambda.Types.FunctionConfiguration) => void): Request; - /** - * Creates a new Lambda function. The function metadata is created from the request parameters, and the code for the function is provided by a .zip file in the request body. If the function name already exists, the operation will fail. Note that the function name is case-sensitive. If you are using versioning, you can also publish a version of the Lambda function you are creating using the Publish parameter. For more information about versioning, see AWS Lambda Function Versioning and Aliases. This operation requires permission for the lambda:CreateFunction action. - */ - createFunction(callback?: (err: AWSError, data: Lambda.Types.FunctionConfiguration) => void): Request; - /** - * Deletes the specified Lambda function alias. For more information, see Introduction to AWS Lambda Aliases. This requires permission for the lambda:DeleteAlias action. - */ - deleteAlias(params: Lambda.Types.DeleteAliasRequest, callback?: (err: AWSError, data: {}) => void): Request<{}, AWSError>; - /** - * Deletes the specified Lambda function alias. For more information, see Introduction to AWS Lambda Aliases. This requires permission for the lambda:DeleteAlias action. - */ - deleteAlias(callback?: (err: AWSError, data: {}) => void): Request<{}, AWSError>; - /** - * Removes an event source mapping. This means AWS Lambda will no longer invoke the function for events in the associated source. This operation requires permission for the lambda:DeleteEventSourceMapping action. - */ - deleteEventSourceMapping(params: Lambda.Types.DeleteEventSourceMappingRequest, callback?: (err: AWSError, data: Lambda.Types.EventSourceMappingConfiguration) => void): Request; - /** - * Removes an event source mapping. This means AWS Lambda will no longer invoke the function for events in the associated source. This operation requires permission for the lambda:DeleteEventSourceMapping action. - */ - deleteEventSourceMapping(callback?: (err: AWSError, data: Lambda.Types.EventSourceMappingConfiguration) => void): Request; - /** - * Deletes the specified Lambda function code and configuration. If you are using the versioning feature and you don't specify a function version in your DeleteFunction request, AWS Lambda will delete the function, including all its versions, and any aliases pointing to the function versions. To delete a specific function version, you must provide the function version via the Qualifier parameter. For information about function versioning, see AWS Lambda Function Versioning and Aliases. When you delete a function the associated resource policy is also deleted. You will need to delete the event source mappings explicitly. This operation requires permission for the lambda:DeleteFunction action. - */ - deleteFunction(params: Lambda.Types.DeleteFunctionRequest, callback?: (err: AWSError, data: {}) => void): Request<{}, AWSError>; - /** - * Deletes the specified Lambda function code and configuration. If you are using the versioning feature and you don't specify a function version in your DeleteFunction request, AWS Lambda will delete the function, including all its versions, and any aliases pointing to the function versions. To delete a specific function version, you must provide the function version via the Qualifier parameter. For information about function versioning, see AWS Lambda Function Versioning and Aliases. When you delete a function the associated resource policy is also deleted. You will need to delete the event source mappings explicitly. This operation requires permission for the lambda:DeleteFunction action. - */ - deleteFunction(callback?: (err: AWSError, data: {}) => void): Request<{}, AWSError>; - /** - * Returns a customer's account settings. You can use this operation to retrieve Lambda limits information, such as code size and concurrency limits. For more information about limits, see AWS Lambda Limits. You can also retrieve resource usage statistics, such as code storage usage and function count. - */ - getAccountSettings(params: Lambda.Types.GetAccountSettingsRequest, callback?: (err: AWSError, data: Lambda.Types.GetAccountSettingsResponse) => void): Request; - /** - * Returns a customer's account settings. You can use this operation to retrieve Lambda limits information, such as code size and concurrency limits. For more information about limits, see AWS Lambda Limits. You can also retrieve resource usage statistics, such as code storage usage and function count. - */ - getAccountSettings(callback?: (err: AWSError, data: Lambda.Types.GetAccountSettingsResponse) => void): Request; - /** - * Returns the specified alias information such as the alias ARN, description, and function version it is pointing to. For more information, see Introduction to AWS Lambda Aliases. This requires permission for the lambda:GetAlias action. - */ - getAlias(params: Lambda.Types.GetAliasRequest, callback?: (err: AWSError, data: Lambda.Types.AliasConfiguration) => void): Request; - /** - * Returns the specified alias information such as the alias ARN, description, and function version it is pointing to. For more information, see Introduction to AWS Lambda Aliases. This requires permission for the lambda:GetAlias action. - */ - getAlias(callback?: (err: AWSError, data: Lambda.Types.AliasConfiguration) => void): Request; - /** - * Returns configuration information for the specified event source mapping (see CreateEventSourceMapping). This operation requires permission for the lambda:GetEventSourceMapping action. - */ - getEventSourceMapping(params: Lambda.Types.GetEventSourceMappingRequest, callback?: (err: AWSError, data: Lambda.Types.EventSourceMappingConfiguration) => void): Request; - /** - * Returns configuration information for the specified event source mapping (see CreateEventSourceMapping). This operation requires permission for the lambda:GetEventSourceMapping action. - */ - getEventSourceMapping(callback?: (err: AWSError, data: Lambda.Types.EventSourceMappingConfiguration) => void): Request; - /** - * Returns the configuration information of the Lambda function and a presigned URL link to the .zip file you uploaded with CreateFunction so you can download the .zip file. Note that the URL is valid for up to 10 minutes. The configuration information is the same information you provided as parameters when uploading the function. Using the optional Qualifier parameter, you can specify a specific function version for which you want this information. If you don't specify this parameter, the API uses unqualified function ARN which return information about the $LATEST version of the Lambda function. For more information, see AWS Lambda Function Versioning and Aliases. This operation requires permission for the lambda:GetFunction action. - */ - getFunction(params: Lambda.Types.GetFunctionRequest, callback?: (err: AWSError, data: Lambda.Types.GetFunctionResponse) => void): Request; - /** - * Returns the configuration information of the Lambda function and a presigned URL link to the .zip file you uploaded with CreateFunction so you can download the .zip file. Note that the URL is valid for up to 10 minutes. The configuration information is the same information you provided as parameters when uploading the function. Using the optional Qualifier parameter, you can specify a specific function version for which you want this information. If you don't specify this parameter, the API uses unqualified function ARN which return information about the $LATEST version of the Lambda function. For more information, see AWS Lambda Function Versioning and Aliases. This operation requires permission for the lambda:GetFunction action. - */ - getFunction(callback?: (err: AWSError, data: Lambda.Types.GetFunctionResponse) => void): Request; - /** - * Returns the configuration information of the Lambda function. This the same information you provided as parameters when uploading the function by using CreateFunction. If you are using the versioning feature, you can retrieve this information for a specific function version by using the optional Qualifier parameter and specifying the function version or alias that points to it. If you don't provide it, the API returns information about the $LATEST version of the function. For more information about versioning, see AWS Lambda Function Versioning and Aliases. This operation requires permission for the lambda:GetFunctionConfiguration operation. - */ - getFunctionConfiguration(params: Lambda.Types.GetFunctionConfigurationRequest, callback?: (err: AWSError, data: Lambda.Types.FunctionConfiguration) => void): Request; - /** - * Returns the configuration information of the Lambda function. This the same information you provided as parameters when uploading the function by using CreateFunction. If you are using the versioning feature, you can retrieve this information for a specific function version by using the optional Qualifier parameter and specifying the function version or alias that points to it. If you don't provide it, the API returns information about the $LATEST version of the function. For more information about versioning, see AWS Lambda Function Versioning and Aliases. This operation requires permission for the lambda:GetFunctionConfiguration operation. - */ - getFunctionConfiguration(callback?: (err: AWSError, data: Lambda.Types.FunctionConfiguration) => void): Request; - /** - * Returns the resource policy associated with the specified Lambda function. If you are using the versioning feature, you can get the resource policy associated with the specific Lambda function version or alias by specifying the version or alias name using the Qualifier parameter. For more information about versioning, see AWS Lambda Function Versioning and Aliases. You need permission for the lambda:GetPolicy action. - */ - getPolicy(params: Lambda.Types.GetPolicyRequest, callback?: (err: AWSError, data: Lambda.Types.GetPolicyResponse) => void): Request; - /** - * Returns the resource policy associated with the specified Lambda function. If you are using the versioning feature, you can get the resource policy associated with the specific Lambda function version or alias by specifying the version or alias name using the Qualifier parameter. For more information about versioning, see AWS Lambda Function Versioning and Aliases. You need permission for the lambda:GetPolicy action. - */ - getPolicy(callback?: (err: AWSError, data: Lambda.Types.GetPolicyResponse) => void): Request; - /** - * Invokes a specific Lambda function. For an example, see Create the Lambda Function and Test It Manually. If you are using the versioning feature, you can invoke the specific function version by providing function version or alias name that is pointing to the function version using the Qualifier parameter in the request. If you don't provide the Qualifier parameter, the $LATEST version of the Lambda function is invoked. Invocations occur at least once in response to an event and functions must be idempotent to handle this. For information about the versioning feature, see AWS Lambda Function Versioning and Aliases. This operation requires permission for the lambda:InvokeFunction action. - */ - invoke(params: Lambda.Types.InvocationRequest, callback?: (err: AWSError, data: Lambda.Types.InvocationResponse) => void): Request; - /** - * Invokes a specific Lambda function. For an example, see Create the Lambda Function and Test It Manually. If you are using the versioning feature, you can invoke the specific function version by providing function version or alias name that is pointing to the function version using the Qualifier parameter in the request. If you don't provide the Qualifier parameter, the $LATEST version of the Lambda function is invoked. Invocations occur at least once in response to an event and functions must be idempotent to handle this. For information about the versioning feature, see AWS Lambda Function Versioning and Aliases. This operation requires permission for the lambda:InvokeFunction action. - */ - invoke(callback?: (err: AWSError, data: Lambda.Types.InvocationResponse) => void): Request; - /** - * This API is deprecated. We recommend you use Invoke API (see Invoke). Submits an invocation request to AWS Lambda. Upon receiving the request, Lambda executes the specified function asynchronously. To see the logs generated by the Lambda function execution, see the CloudWatch Logs console. This operation requires permission for the lambda:InvokeFunction action. - */ - invokeAsync(params: Lambda.Types.InvokeAsyncRequest, callback?: (err: AWSError, data: Lambda.Types.InvokeAsyncResponse) => void): Request; - /** - * This API is deprecated. We recommend you use Invoke API (see Invoke). Submits an invocation request to AWS Lambda. Upon receiving the request, Lambda executes the specified function asynchronously. To see the logs generated by the Lambda function execution, see the CloudWatch Logs console. This operation requires permission for the lambda:InvokeFunction action. - */ - invokeAsync(callback?: (err: AWSError, data: Lambda.Types.InvokeAsyncResponse) => void): Request; - /** - * Returns list of aliases created for a Lambda function. For each alias, the response includes information such as the alias ARN, description, alias name, and the function version to which it points. For more information, see Introduction to AWS Lambda Aliases. This requires permission for the lambda:ListAliases action. - */ - listAliases(params: Lambda.Types.ListAliasesRequest, callback?: (err: AWSError, data: Lambda.Types.ListAliasesResponse) => void): Request; - /** - * Returns list of aliases created for a Lambda function. For each alias, the response includes information such as the alias ARN, description, alias name, and the function version to which it points. For more information, see Introduction to AWS Lambda Aliases. This requires permission for the lambda:ListAliases action. - */ - listAliases(callback?: (err: AWSError, data: Lambda.Types.ListAliasesResponse) => void): Request; - /** - * Returns a list of event source mappings you created using the CreateEventSourceMapping (see CreateEventSourceMapping). For each mapping, the API returns configuration information. You can optionally specify filters to retrieve specific event source mappings. If you are using the versioning feature, you can get list of event source mappings for a specific Lambda function version or an alias as described in the FunctionName parameter. For information about the versioning feature, see AWS Lambda Function Versioning and Aliases. This operation requires permission for the lambda:ListEventSourceMappings action. - */ - listEventSourceMappings(params: Lambda.Types.ListEventSourceMappingsRequest, callback?: (err: AWSError, data: Lambda.Types.ListEventSourceMappingsResponse) => void): Request; - /** - * Returns a list of event source mappings you created using the CreateEventSourceMapping (see CreateEventSourceMapping). For each mapping, the API returns configuration information. You can optionally specify filters to retrieve specific event source mappings. If you are using the versioning feature, you can get list of event source mappings for a specific Lambda function version or an alias as described in the FunctionName parameter. For information about the versioning feature, see AWS Lambda Function Versioning and Aliases. This operation requires permission for the lambda:ListEventSourceMappings action. - */ - listEventSourceMappings(callback?: (err: AWSError, data: Lambda.Types.ListEventSourceMappingsResponse) => void): Request; - /** - * Returns a list of your Lambda functions. For each function, the response includes the function configuration information. You must use GetFunction to retrieve the code for your function. This operation requires permission for the lambda:ListFunctions action. If you are using the versioning feature, you can list all of your functions or only $LATEST versions. For information about the versioning feature, see AWS Lambda Function Versioning and Aliases. - */ - listFunctions(params: Lambda.Types.ListFunctionsRequest, callback?: (err: AWSError, data: Lambda.Types.ListFunctionsResponse) => void): Request; - /** - * Returns a list of your Lambda functions. For each function, the response includes the function configuration information. You must use GetFunction to retrieve the code for your function. This operation requires permission for the lambda:ListFunctions action. If you are using the versioning feature, you can list all of your functions or only $LATEST versions. For information about the versioning feature, see AWS Lambda Function Versioning and Aliases. - */ - listFunctions(callback?: (err: AWSError, data: Lambda.Types.ListFunctionsResponse) => void): Request; - /** - * Returns a list of tags assigned to a function when supplied the function ARN (Amazon Resource Name). - */ - listTags(params: Lambda.Types.ListTagsRequest, callback?: (err: AWSError, data: Lambda.Types.ListTagsResponse) => void): Request; - /** - * Returns a list of tags assigned to a function when supplied the function ARN (Amazon Resource Name). - */ - listTags(callback?: (err: AWSError, data: Lambda.Types.ListTagsResponse) => void): Request; - /** - * List all versions of a function. For information about the versioning feature, see AWS Lambda Function Versioning and Aliases. - */ - listVersionsByFunction(params: Lambda.Types.ListVersionsByFunctionRequest, callback?: (err: AWSError, data: Lambda.Types.ListVersionsByFunctionResponse) => void): Request; - /** - * List all versions of a function. For information about the versioning feature, see AWS Lambda Function Versioning and Aliases. - */ - listVersionsByFunction(callback?: (err: AWSError, data: Lambda.Types.ListVersionsByFunctionResponse) => void): Request; - /** - * Publishes a version of your function from the current snapshot of $LATEST. That is, AWS Lambda takes a snapshot of the function code and configuration information from $LATEST and publishes a new version. The code and configuration cannot be modified after publication. For information about the versioning feature, see AWS Lambda Function Versioning and Aliases. - */ - publishVersion(params: Lambda.Types.PublishVersionRequest, callback?: (err: AWSError, data: Lambda.Types.FunctionConfiguration) => void): Request; - /** - * Publishes a version of your function from the current snapshot of $LATEST. That is, AWS Lambda takes a snapshot of the function code and configuration information from $LATEST and publishes a new version. The code and configuration cannot be modified after publication. For information about the versioning feature, see AWS Lambda Function Versioning and Aliases. - */ - publishVersion(callback?: (err: AWSError, data: Lambda.Types.FunctionConfiguration) => void): Request; - /** - * You can remove individual permissions from an resource policy associated with a Lambda function by providing a statement ID that you provided when you added the permission. If you are using versioning, the permissions you remove are specific to the Lambda function version or alias you specify in the AddPermission request via the Qualifier parameter. For more information about versioning, see AWS Lambda Function Versioning and Aliases. Note that removal of a permission will cause an active event source to lose permission to the function. You need permission for the lambda:RemovePermission action. - */ - removePermission(params: Lambda.Types.RemovePermissionRequest, callback?: (err: AWSError, data: {}) => void): Request<{}, AWSError>; - /** - * You can remove individual permissions from an resource policy associated with a Lambda function by providing a statement ID that you provided when you added the permission. If you are using versioning, the permissions you remove are specific to the Lambda function version or alias you specify in the AddPermission request via the Qualifier parameter. For more information about versioning, see AWS Lambda Function Versioning and Aliases. Note that removal of a permission will cause an active event source to lose permission to the function. You need permission for the lambda:RemovePermission action. - */ - removePermission(callback?: (err: AWSError, data: {}) => void): Request<{}, AWSError>; - /** - * Creates a list of tags (key-value pairs) on the Lambda function. Requires the Lambda function ARN (Amazon Resource Name). If a key is specified without a value, Lambda creates a tag with the specified key and a value of null. - */ - tagResource(params: Lambda.Types.TagResourceRequest, callback?: (err: AWSError, data: {}) => void): Request<{}, AWSError>; - /** - * Creates a list of tags (key-value pairs) on the Lambda function. Requires the Lambda function ARN (Amazon Resource Name). If a key is specified without a value, Lambda creates a tag with the specified key and a value of null. - */ - tagResource(callback?: (err: AWSError, data: {}) => void): Request<{}, AWSError>; - /** - * Removes tags from a Lambda function. Requires the function ARN (Amazon Resource Name). - */ - untagResource(params: Lambda.Types.UntagResourceRequest, callback?: (err: AWSError, data: {}) => void): Request<{}, AWSError>; - /** - * Removes tags from a Lambda function. Requires the function ARN (Amazon Resource Name). - */ - untagResource(callback?: (err: AWSError, data: {}) => void): Request<{}, AWSError>; - /** - * Using this API you can update the function version to which the alias points and the alias description. For more information, see Introduction to AWS Lambda Aliases. This requires permission for the lambda:UpdateAlias action. - */ - updateAlias(params: Lambda.Types.UpdateAliasRequest, callback?: (err: AWSError, data: Lambda.Types.AliasConfiguration) => void): Request; - /** - * Using this API you can update the function version to which the alias points and the alias description. For more information, see Introduction to AWS Lambda Aliases. This requires permission for the lambda:UpdateAlias action. - */ - updateAlias(callback?: (err: AWSError, data: Lambda.Types.AliasConfiguration) => void): Request; - /** - * You can update an event source mapping. This is useful if you want to change the parameters of the existing mapping without losing your position in the stream. You can change which function will receive the stream records, but to change the stream itself, you must create a new mapping. If you are using the versioning feature, you can update the event source mapping to map to a specific Lambda function version or alias as described in the FunctionName parameter. For information about the versioning feature, see AWS Lambda Function Versioning and Aliases. If you disable the event source mapping, AWS Lambda stops polling. If you enable again, it will resume polling from the time it had stopped polling, so you don't lose processing of any records. However, if you delete event source mapping and create it again, it will reset. This operation requires permission for the lambda:UpdateEventSourceMapping action. - */ - updateEventSourceMapping(params: Lambda.Types.UpdateEventSourceMappingRequest, callback?: (err: AWSError, data: Lambda.Types.EventSourceMappingConfiguration) => void): Request; - /** - * You can update an event source mapping. This is useful if you want to change the parameters of the existing mapping without losing your position in the stream. You can change which function will receive the stream records, but to change the stream itself, you must create a new mapping. If you are using the versioning feature, you can update the event source mapping to map to a specific Lambda function version or alias as described in the FunctionName parameter. For information about the versioning feature, see AWS Lambda Function Versioning and Aliases. If you disable the event source mapping, AWS Lambda stops polling. If you enable again, it will resume polling from the time it had stopped polling, so you don't lose processing of any records. However, if you delete event source mapping and create it again, it will reset. This operation requires permission for the lambda:UpdateEventSourceMapping action. - */ - updateEventSourceMapping(callback?: (err: AWSError, data: Lambda.Types.EventSourceMappingConfiguration) => void): Request; - /** - * Updates the code for the specified Lambda function. This operation must only be used on an existing Lambda function and cannot be used to update the function configuration. If you are using the versioning feature, note this API will always update the $LATEST version of your Lambda function. For information about the versioning feature, see AWS Lambda Function Versioning and Aliases. This operation requires permission for the lambda:UpdateFunctionCode action. - */ - updateFunctionCode(params: Lambda.Types.UpdateFunctionCodeRequest, callback?: (err: AWSError, data: Lambda.Types.FunctionConfiguration) => void): Request; - /** - * Updates the code for the specified Lambda function. This operation must only be used on an existing Lambda function and cannot be used to update the function configuration. If you are using the versioning feature, note this API will always update the $LATEST version of your Lambda function. For information about the versioning feature, see AWS Lambda Function Versioning and Aliases. This operation requires permission for the lambda:UpdateFunctionCode action. - */ - updateFunctionCode(callback?: (err: AWSError, data: Lambda.Types.FunctionConfiguration) => void): Request; - /** - * Updates the configuration parameters for the specified Lambda function by using the values provided in the request. You provide only the parameters you want to change. This operation must only be used on an existing Lambda function and cannot be used to update the function's code. If you are using the versioning feature, note this API will always update the $LATEST version of your Lambda function. For information about the versioning feature, see AWS Lambda Function Versioning and Aliases. This operation requires permission for the lambda:UpdateFunctionConfiguration action. - */ - updateFunctionConfiguration(params: Lambda.Types.UpdateFunctionConfigurationRequest, callback?: (err: AWSError, data: Lambda.Types.FunctionConfiguration) => void): Request; - /** - * Updates the configuration parameters for the specified Lambda function by using the values provided in the request. You provide only the parameters you want to change. This operation must only be used on an existing Lambda function and cannot be used to update the function's code. If you are using the versioning feature, note this API will always update the $LATEST version of your Lambda function. For information about the versioning feature, see AWS Lambda Function Versioning and Aliases. This operation requires permission for the lambda:UpdateFunctionConfiguration action. - */ - updateFunctionConfiguration(callback?: (err: AWSError, data: Lambda.Types.FunctionConfiguration) => void): Request; -} -declare namespace Lambda { - export interface AccountLimit { - /** - * Maximum size, in bytes, of a code package you can upload per region. The default size is 75 GB. - */ - TotalCodeSize?: Long; - /** - * Size, in bytes, of code/dependencies that you can zip into a deployment package (uncompressed zip/jar size) for uploading. The default limit is 250 MB. - */ - CodeSizeUnzipped?: Long; - /** - * Size, in bytes, of a single zipped code/dependencies package you can upload for your Lambda function(.zip/.jar file). Try using Amazon S3 for uploading larger files. Default limit is 50 MB. - */ - CodeSizeZipped?: Long; - /** - * Number of simultaneous executions of your function per region. For more information or to request a limit increase for concurrent executions, see Lambda Function Concurrent Executions. The default limit is 100. - */ - ConcurrentExecutions?: Integer; - } - export interface AccountUsage { - /** - * Total size, in bytes, of the account's deployment packages per region. - */ - TotalCodeSize?: Long; - /** - * The number of your account's existing functions per region. - */ - FunctionCount?: Long; - } - export type Action = string; - export interface AddPermissionRequest { - /** - * Name of the Lambda function whose resource policy you are updating by adding a new permission. You can specify a function name (for example, Thumbnail) or you can specify Amazon Resource Name (ARN) of the function (for example, arn:aws:lambda:us-west-2:account-id:function:ThumbNail). AWS Lambda also allows you to specify partial ARN (for example, account-id:Thumbnail). Note that the length constraint applies only to the ARN. If you specify only the function name, it is limited to 64 characters in length. - */ - FunctionName: FunctionName; - /** - * A unique statement identifier. - */ - StatementId: StatementId; - /** - * The AWS Lambda action you want to allow in this statement. Each Lambda action is a string starting with lambda: followed by the API name . For example, lambda:CreateFunction. You can use wildcard (lambda:*) to grant permission for all AWS Lambda actions. - */ - Action: Action; - /** - * The principal who is getting this permission. It can be Amazon S3 service Principal (s3.amazonaws.com) if you want Amazon S3 to invoke the function, an AWS account ID if you are granting cross-account permission, or any valid AWS service principal such as sns.amazonaws.com. For example, you might want to allow a custom application in another AWS account to push events to AWS Lambda by invoking your function. - */ - Principal: Principal; - /** - * This is optional; however, when granting permission to invoke your function, you should specify this field with the Amazon Resource Name (ARN) as its value. This ensures that only events generated from the specified source can invoke the function. If you add a permission without providing the source ARN, any AWS account that creates a mapping to your function ARN can send events to invoke your Lambda function. - */ - SourceArn?: Arn; - /** - * This parameter is used for S3 and SES. The AWS account ID (without a hyphen) of the source owner. For example, if the SourceArn identifies a bucket, then this is the bucket owner's account ID. You can use this additional condition to ensure the bucket you specify is owned by a specific account (it is possible the bucket owner deleted the bucket and some other AWS account created the bucket). You can also use this condition to specify all sources (that is, you don't specify the SourceArn) owned by a specific account. - */ - SourceAccount?: SourceOwner; - /** - * A unique token that must be supplied by the principal invoking the function. This is currently only used for Alexa Smart Home functions. - */ - EventSourceToken?: EventSourceToken; - /** - * You can use this optional query parameter to describe a qualified ARN using a function version or an alias name. The permission will then apply to the specific qualified ARN. For example, if you specify function version 2 as the qualifier, then permission applies only when request is made using qualified function ARN: arn:aws:lambda:aws-region:acct-id:function:function-name:2 If you specify an alias name, for example PROD, then the permission is valid only for requests made using the alias ARN: arn:aws:lambda:aws-region:acct-id:function:function-name:PROD If the qualifier is not specified, the permission is valid only when requests is made using unqualified function ARN. arn:aws:lambda:aws-region:acct-id:function:function-name - */ - Qualifier?: Qualifier; - } - export interface AddPermissionResponse { - /** - * The permission statement you specified in the request. The response returns the same as a string using a backslash ("\") as an escape character in the JSON. - */ - Statement?: String; - } - export type Alias = string; - export interface AliasConfiguration { - /** - * Lambda function ARN that is qualified using the alias name as the suffix. For example, if you create an alias called BETA that points to a helloworld function version, the ARN is arn:aws:lambda:aws-regions:acct-id:function:helloworld:BETA. - */ - AliasArn?: FunctionArn; - /** - * Alias name. - */ - Name?: Alias; - /** - * Function version to which the alias points. - */ - FunctionVersion?: Version; - /** - * Alias description. - */ - Description?: Description; - } - export type AliasList = AliasConfiguration[]; - export type Arn = string; - export type BatchSize = number; - export type _Blob = Buffer|Uint8Array|Blob|string; - export type BlobStream = Buffer|Uint8Array|Blob|string|Readable; - export type Boolean = boolean; - export interface CreateAliasRequest { - /** - * Name of the Lambda function for which you want to create an alias. Note that the length constraint applies only to the ARN. If you specify only the function name, it is limited to 64 characters in length. - */ - FunctionName: FunctionName; - /** - * Name for the alias you are creating. - */ - Name: Alias; - /** - * Lambda function version for which you are creating the alias. - */ - FunctionVersion: Version; - /** - * Description of the alias. - */ - Description?: Description; - } - export interface CreateEventSourceMappingRequest { - /** - * The Amazon Resource Name (ARN) of the Amazon Kinesis or the Amazon DynamoDB stream that is the event source. Any record added to this stream could cause AWS Lambda to invoke your Lambda function, it depends on the BatchSize. AWS Lambda POSTs the Amazon Kinesis event, containing records, to your Lambda function as JSON. - */ - EventSourceArn: Arn; - /** - * The Lambda function to invoke when AWS Lambda detects an event on the stream. You can specify the function name (for example, Thumbnail) or you can specify Amazon Resource Name (ARN) of the function (for example, arn:aws:lambda:us-west-2:account-id:function:ThumbNail). If you are using versioning, you can also provide a qualified function ARN (ARN that is qualified with function version or alias name as suffix). For more information about versioning, see AWS Lambda Function Versioning and Aliases AWS Lambda also allows you to specify only the function name with the account ID qualifier (for example, account-id:Thumbnail). Note that the length constraint applies only to the ARN. If you specify only the function name, it is limited to 64 characters in length. - */ - FunctionName: FunctionName; - /** - * Indicates whether AWS Lambda should begin polling the event source. By default, Enabled is true. - */ - Enabled?: Enabled; - /** - * The largest number of records that AWS Lambda will retrieve from your event source at the time of invoking your function. Your function receives an event with all the retrieved records. The default is 100 records. - */ - BatchSize?: BatchSize; - /** - * The position in the stream where AWS Lambda should start reading. Valid only for Kinesis streams. For more information, see ShardIteratorType in the Amazon Kinesis API Reference. - */ - StartingPosition: EventSourcePosition; - /** - * The timestamp of the data record from which to start reading. Used with shard iterator type AT_TIMESTAMP. If a record with this exact timestamp does not exist, the iterator returned is for the next (later) record. If the timestamp is older than the current trim horizon, the iterator returned is for the oldest untrimmed data record (TRIM_HORIZON). Valid only for Kinesis streams. - */ - StartingPositionTimestamp?: _Date; - } - export interface CreateFunctionRequest { - /** - * The name you want to assign to the function you are uploading. The function names appear in the console and are returned in the ListFunctions API. Function names are used to specify functions to other AWS Lambda API operations, such as Invoke. Note that the length constraint applies only to the ARN. If you specify only the function name, it is limited to 64 characters in length. - */ - FunctionName: FunctionName; - /** - * The runtime environment for the Lambda function you are uploading. To use the Python runtime v3.6, set the value to "python3.6". To use the Python runtime v2.7, set the value to "python2.7". To use the Node.js runtime v6.10, set the value to "nodejs6.10". To use the Node.js runtime v4.3, set the value to "nodejs4.3". Node v0.10.42 is currently marked as deprecated. You must migrate existing functions to the newer Node.js runtime versions available on AWS Lambda (nodejs4.3 or nodejs6.10) as soon as possible. You can request a one-time extension until June 30, 2017 by going to the Lambda console and following the instructions provided. Failure to do so will result in an invalid parmaeter error being returned. Note that you will have to follow this procedure for each region that contains functions written in the Node v0.10.42 runtime. - */ - Runtime: Runtime; - /** - * The Amazon Resource Name (ARN) of the IAM role that Lambda assumes when it executes your function to access any other Amazon Web Services (AWS) resources. For more information, see AWS Lambda: How it Works. - */ - Role: RoleArn; - /** - * The function within your code that Lambda calls to begin execution. For Node.js, it is the module-name.export value in your function. For Java, it can be package.class-name::handler or package.class-name. For more information, see Lambda Function Handler (Java). - */ - Handler: Handler; - /** - * The code for the Lambda function. - */ - Code: FunctionCode; - /** - * A short, user-defined function description. Lambda does not use this value. Assign a meaningful description as you see fit. - */ - Description?: Description; - /** - * The function execution time at which Lambda should terminate the function. Because the execution time has cost implications, we recommend you set this value based on your expected execution time. The default is 3 seconds. - */ - Timeout?: Timeout; - /** - * The amount of memory, in MB, your Lambda function is given. Lambda uses this memory size to infer the amount of CPU and memory allocated to your function. Your function use-case determines your CPU and memory requirements. For example, a database operation might need less memory compared to an image processing function. The default value is 128 MB. The value must be a multiple of 64 MB. - */ - MemorySize?: MemorySize; - /** - * This boolean parameter can be used to request AWS Lambda to create the Lambda function and publish a version as an atomic operation. - */ - Publish?: Boolean; - /** - * If your Lambda function accesses resources in a VPC, you provide this parameter identifying the list of security group IDs and subnet IDs. These must belong to the same VPC. You must provide at least one security group and one subnet ID. - */ - VpcConfig?: VpcConfig; - /** - * The parent object that contains the target ARN (Amazon Resource Name) of an Amazon SQS queue or Amazon SNS topic. - */ - DeadLetterConfig?: DeadLetterConfig; - Environment?: Environment; - /** - * The Amazon Resource Name (ARN) of the KMS key used to encrypt your function's environment variables. If not provided, AWS Lambda will use a default service key. - */ - KMSKeyArn?: KMSKeyArn; - /** - * The parent object that contains your function's tracing settings. - */ - TracingConfig?: TracingConfig; - /** - * The list of tags (key-value pairs) assigned to the new function. - */ - Tags?: Tags; - } - export type _Date = Date; - export interface DeadLetterConfig { - /** - * The Amazon Resource Name (ARN) of an Amazon SQS queue or Amazon SNS topic you specify as your Dead Letter Queue (DLQ). - */ - TargetArn?: ResourceArn; - } - export interface DeleteAliasRequest { - /** - * The Lambda function name for which the alias is created. Deleting an alias does not delete the function version to which it is pointing. Note that the length constraint applies only to the ARN. If you specify only the function name, it is limited to 64 characters in length. - */ - FunctionName: FunctionName; - /** - * Name of the alias to delete. - */ - Name: Alias; - } - export interface DeleteEventSourceMappingRequest { - /** - * The event source mapping ID. - */ - UUID: String; - } - export interface DeleteFunctionRequest { - /** - * The Lambda function to delete. You can specify the function name (for example, Thumbnail) or you can specify Amazon Resource Name (ARN) of the function (for example, arn:aws:lambda:us-west-2:account-id:function:ThumbNail). If you are using versioning, you can also provide a qualified function ARN (ARN that is qualified with function version or alias name as suffix). AWS Lambda also allows you to specify only the function name with the account ID qualifier (for example, account-id:Thumbnail). Note that the length constraint applies only to the ARN. If you specify only the function name, it is limited to 64 characters in length. - */ - FunctionName: FunctionName; - /** - * Using this optional parameter you can specify a function version (but not the $LATEST version) to direct AWS Lambda to delete a specific function version. If the function version has one or more aliases pointing to it, you will get an error because you cannot have aliases pointing to it. You can delete any function version but not the $LATEST, that is, you cannot specify $LATEST as the value of this parameter. The $LATEST version can be deleted only when you want to delete all the function versions and aliases. You can only specify a function version, not an alias name, using this parameter. You cannot delete a function version using its alias. If you don't specify this parameter, AWS Lambda will delete the function, including all of its versions and aliases. - */ - Qualifier?: Qualifier; - } - export type Description = string; - export type Enabled = boolean; - export interface Environment { - /** - * The key-value pairs that represent your environment's configuration settings. - */ - Variables?: EnvironmentVariables; - } - export interface EnvironmentError { - /** - * The error code returned by the environment error object. - */ - ErrorCode?: String; - /** - * The message returned by the environment error object. - */ - Message?: SensitiveString; - } - export interface EnvironmentResponse { - /** - * The key-value pairs returned that represent your environment's configuration settings or error information. - */ - Variables?: EnvironmentVariables; - Error?: EnvironmentError; - } - export type EnvironmentVariableName = string; - export type EnvironmentVariableValue = string; - export type EnvironmentVariables = {[key: string]: EnvironmentVariableValue}; - export interface EventSourceMappingConfiguration { - /** - * The AWS Lambda assigned opaque identifier for the mapping. - */ - UUID?: String; - /** - * The largest number of records that AWS Lambda will retrieve from your event source at the time of invoking your function. Your function receives an event with all the retrieved records. - */ - BatchSize?: BatchSize; - /** - * The Amazon Resource Name (ARN) of the Amazon Kinesis stream that is the source of events. - */ - EventSourceArn?: Arn; - /** - * The Lambda function to invoke when AWS Lambda detects an event on the stream. - */ - FunctionArn?: FunctionArn; - /** - * The UTC time string indicating the last time the event mapping was updated. - */ - LastModified?: _Date; - /** - * The result of the last AWS Lambda invocation of your Lambda function. - */ - LastProcessingResult?: String; - /** - * The state of the event source mapping. It can be Creating, Enabled, Disabled, Enabling, Disabling, Updating, or Deleting. - */ - State?: String; - /** - * The reason the event source mapping is in its current state. It is either user-requested or an AWS Lambda-initiated state transition. - */ - StateTransitionReason?: String; - } - export type EventSourceMappingsList = EventSourceMappingConfiguration[]; - export type EventSourcePosition = "TRIM_HORIZON"|"LATEST"|"AT_TIMESTAMP"|string; - export type EventSourceToken = string; - export type FunctionArn = string; - export interface FunctionCode { - /** - * The contents of your zip file containing your deployment package. If you are using the web API directly, the contents of the zip file must be base64-encoded. If you are using the AWS SDKs or the AWS CLI, the SDKs or CLI will do the encoding for you. For more information about creating a .zip file, see Execution Permissions in the AWS Lambda Developer Guide. - */ - ZipFile?: _Blob; - /** - * Amazon S3 bucket name where the .zip file containing your deployment package is stored. This bucket must reside in the same AWS region where you are creating the Lambda function. - */ - S3Bucket?: S3Bucket; - /** - * The Amazon S3 object (the deployment package) key name you want to upload. - */ - S3Key?: S3Key; - /** - * The Amazon S3 object (the deployment package) version you want to upload. - */ - S3ObjectVersion?: S3ObjectVersion; - } - export interface FunctionCodeLocation { - /** - * The repository from which you can download the function. - */ - RepositoryType?: String; - /** - * The presigned URL you can use to download the function's .zip file that you previously uploaded. The URL is valid for up to 10 minutes. - */ - Location?: String; - } - export interface FunctionConfiguration { - /** - * The name of the function. Note that the length constraint applies only to the ARN. If you specify only the function name, it is limited to 64 characters in length. - */ - FunctionName?: NamespacedFunctionName; - /** - * The Amazon Resource Name (ARN) assigned to the function. - */ - FunctionArn?: NameSpacedFunctionArn; - /** - * The runtime environment for the Lambda function. - */ - Runtime?: Runtime; - /** - * The Amazon Resource Name (ARN) of the IAM role that Lambda assumes when it executes your function to access any other Amazon Web Services (AWS) resources. - */ - Role?: RoleArn; - /** - * The function Lambda calls to begin executing your function. - */ - Handler?: Handler; - /** - * The size, in bytes, of the function .zip file you uploaded. - */ - CodeSize?: Long; - /** - * The user-provided description. - */ - Description?: Description; - /** - * The function execution time at which Lambda should terminate the function. Because the execution time has cost implications, we recommend you set this value based on your expected execution time. The default is 3 seconds. - */ - Timeout?: Timeout; - /** - * The memory size, in MB, you configured for the function. Must be a multiple of 64 MB. - */ - MemorySize?: MemorySize; - /** - * The time stamp of the last time you updated the function. The time stamp is conveyed as a string complying with ISO-8601 in this way YYYY-MM-DDThh:mm:ssTZD (e.g., 1997-07-16T19:20:30+01:00). For more information, see Date and Time Formats. - */ - LastModified?: Timestamp; - /** - * It is the SHA256 hash of your function deployment package. - */ - CodeSha256?: String; - /** - * The version of the Lambda function. - */ - Version?: Version; - /** - * VPC configuration associated with your Lambda function. - */ - VpcConfig?: VpcConfigResponse; - /** - * The parent object that contains the target ARN (Amazon Resource Name) of an Amazon SQS queue or Amazon SNS topic. - */ - DeadLetterConfig?: DeadLetterConfig; - /** - * The parent object that contains your environment's configuration settings. - */ - Environment?: EnvironmentResponse; - /** - * The Amazon Resource Name (ARN) of the KMS key used to encrypt your function's environment variables. If empty, it means you are using the AWS Lambda default service key. - */ - KMSKeyArn?: KMSKeyArn; - /** - * The parent object that contains your function's tracing settings. - */ - TracingConfig?: TracingConfigResponse; - /** - * Returns the ARN (Amazon Resource Name) of the master function. - */ - MasterArn?: FunctionArn; - } - export type FunctionList = FunctionConfiguration[]; - export type FunctionName = string; - export type FunctionVersion = "ALL"|string; - export interface GetAccountSettingsRequest { - } - export interface GetAccountSettingsResponse { - AccountLimit?: AccountLimit; - AccountUsage?: AccountUsage; - } - export interface GetAliasRequest { - /** - * Function name for which the alias is created. An alias is a subresource that exists only in the context of an existing Lambda function so you must specify the function name. Note that the length constraint applies only to the ARN. If you specify only the function name, it is limited to 64 characters in length. - */ - FunctionName: FunctionName; - /** - * Name of the alias for which you want to retrieve information. - */ - Name: Alias; - } - export interface GetEventSourceMappingRequest { - /** - * The AWS Lambda assigned ID of the event source mapping. - */ - UUID: String; - } - export interface GetFunctionConfigurationRequest { - /** - * The name of the Lambda function for which you want to retrieve the configuration information. You can specify a function name (for example, Thumbnail) or you can specify Amazon Resource Name (ARN) of the function (for example, arn:aws:lambda:us-west-2:account-id:function:ThumbNail). AWS Lambda also allows you to specify a partial ARN (for example, account-id:Thumbnail). Note that the length constraint applies only to the ARN. If you specify only the function name, it is limited to 64 characters in length. - */ - FunctionName: NamespacedFunctionName; - /** - * Using this optional parameter you can specify a function version or an alias name. If you specify function version, the API uses qualified function ARN and returns information about the specific function version. If you specify an alias name, the API uses the alias ARN and returns information about the function version to which the alias points. If you don't specify this parameter, the API uses unqualified function ARN, and returns information about the $LATEST function version. - */ - Qualifier?: Qualifier; - } - export interface GetFunctionRequest { - /** - * The Lambda function name. You can specify a function name (for example, Thumbnail) or you can specify Amazon Resource Name (ARN) of the function (for example, arn:aws:lambda:us-west-2:account-id:function:ThumbNail). AWS Lambda also allows you to specify a partial ARN (for example, account-id:Thumbnail). Note that the length constraint applies only to the ARN. If you specify only the function name, it is limited to 64 characters in length. - */ - FunctionName: NamespacedFunctionName; - /** - * Using this optional parameter to specify a function version or an alias name. If you specify function version, the API uses qualified function ARN for the request and returns information about the specific Lambda function version. If you specify an alias name, the API uses the alias ARN and returns information about the function version to which the alias points. If you don't provide this parameter, the API uses unqualified function ARN and returns information about the $LATEST version of the Lambda function. - */ - Qualifier?: Qualifier; - } - export interface GetFunctionResponse { - Configuration?: FunctionConfiguration; - Code?: FunctionCodeLocation; - /** - * Returns the list of tags associated with the function. - */ - Tags?: Tags; - } - export interface GetPolicyRequest { - /** - * Function name whose resource policy you want to retrieve. You can specify the function name (for example, Thumbnail) or you can specify Amazon Resource Name (ARN) of the function (for example, arn:aws:lambda:us-west-2:account-id:function:ThumbNail). If you are using versioning, you can also provide a qualified function ARN (ARN that is qualified with function version or alias name as suffix). AWS Lambda also allows you to specify only the function name with the account ID qualifier (for example, account-id:Thumbnail). Note that the length constraint applies only to the ARN. If you specify only the function name, it is limited to 64 characters in length. - */ - FunctionName: NamespacedFunctionName; - /** - * You can specify this optional query parameter to specify a function version or an alias name in which case this API will return all permissions associated with the specific qualified ARN. If you don't provide this parameter, the API will return permissions that apply to the unqualified function ARN. - */ - Qualifier?: Qualifier; - } - export interface GetPolicyResponse { - /** - * The resource policy associated with the specified function. The response returns the same as a string using a backslash ("\") as an escape character in the JSON. - */ - Policy?: String; - } - export type Handler = string; - export type HttpStatus = number; - export type Integer = number; - export interface InvocationRequest { - /** - * The Lambda function name. You can specify a function name (for example, Thumbnail) or you can specify Amazon Resource Name (ARN) of the function (for example, arn:aws:lambda:us-west-2:account-id:function:ThumbNail). AWS Lambda also allows you to specify a partial ARN (for example, account-id:Thumbnail). Note that the length constraint applies only to the ARN. If you specify only the function name, it is limited to 64 characters in length. - */ - FunctionName: NamespacedFunctionName; - /** - * By default, the Invoke API assumes RequestResponse invocation type. You can optionally request asynchronous execution by specifying Event as the InvocationType. You can also use this parameter to request AWS Lambda to not execute the function but do some verification, such as if the caller is authorized to invoke the function and if the inputs are valid. You request this by specifying DryRun as the InvocationType. This is useful in a cross-account scenario when you want to verify access to a function without running it. - */ - InvocationType?: InvocationType; - /** - * You can set this optional parameter to Tail in the request only if you specify the InvocationType parameter with value RequestResponse. In this case, AWS Lambda returns the base64-encoded last 4 KB of log data produced by your Lambda function in the x-amz-log-result header. - */ - LogType?: LogType; - /** - * Using the ClientContext you can pass client-specific information to the Lambda function you are invoking. You can then process the client information in your Lambda function as you choose through the context variable. For an example of a ClientContext JSON, see PutEvents in the Amazon Mobile Analytics API Reference and User Guide. The ClientContext JSON must be base64-encoded. - */ - ClientContext?: String; - /** - * JSON that you want to provide to your Lambda function as input. - */ - Payload?: _Blob; - /** - * You can use this optional parameter to specify a Lambda function version or alias name. If you specify a function version, the API uses the qualified function ARN to invoke a specific Lambda function. If you specify an alias name, the API uses the alias ARN to invoke the Lambda function version to which the alias points. If you don't provide this parameter, then the API uses unqualified function ARN which results in invocation of the $LATEST version. - */ - Qualifier?: Qualifier; - } - export interface InvocationResponse { - /** - * The HTTP status code will be in the 200 range for successful request. For the RequestResponse invocation type this status code will be 200. For the Event invocation type this status code will be 202. For the DryRun invocation type the status code will be 204. - */ - StatusCode?: Integer; - /** - * Indicates whether an error occurred while executing the Lambda function. If an error occurred this field will have one of two values; Handled or Unhandled. Handled errors are errors that are reported by the function while the Unhandled errors are those detected and reported by AWS Lambda. Unhandled errors include out of memory errors and function timeouts. For information about how to report an Handled error, see Programming Model. - */ - FunctionError?: String; - /** - * It is the base64-encoded logs for the Lambda function invocation. This is present only if the invocation type is RequestResponse and the logs were requested. - */ - LogResult?: String; - /** - * It is the JSON representation of the object returned by the Lambda function. This is present only if the invocation type is RequestResponse. In the event of a function error this field contains a message describing the error. For the Handled errors the Lambda function will report this message. For Unhandled errors AWS Lambda reports the message. - */ - Payload?: _Blob; - } - export type InvocationType = "Event"|"RequestResponse"|"DryRun"|string; - export interface InvokeAsyncRequest { - /** - * The Lambda function name. Note that the length constraint applies only to the ARN. If you specify only the function name, it is limited to 64 characters in length. - */ - FunctionName: NamespacedFunctionName; - /** - * JSON that you want to provide to your Lambda function as input. - */ - InvokeArgs: BlobStream; - } - export interface InvokeAsyncResponse { - /** - * It will be 202 upon success. - */ - Status?: HttpStatus; - } - export type KMSKeyArn = string; - export interface ListAliasesRequest { - /** - * Lambda function name for which the alias is created. Note that the length constraint applies only to the ARN. If you specify only the function name, it is limited to 64 characters in length. - */ - FunctionName: FunctionName; - /** - * If you specify this optional parameter, the API returns only the aliases that are pointing to the specific Lambda function version, otherwise the API returns all of the aliases created for the Lambda function. - */ - FunctionVersion?: Version; - /** - * Optional string. An opaque pagination token returned from a previous ListAliases operation. If present, indicates where to continue the listing. - */ - Marker?: String; - /** - * Optional integer. Specifies the maximum number of aliases to return in response. This parameter value must be greater than 0. - */ - MaxItems?: MaxListItems; - } - export interface ListAliasesResponse { - /** - * A string, present if there are more aliases. - */ - NextMarker?: String; - /** - * A list of aliases. - */ - Aliases?: AliasList; - } - export interface ListEventSourceMappingsRequest { - /** - * The Amazon Resource Name (ARN) of the Amazon Kinesis stream. (This parameter is optional.) - */ - EventSourceArn?: Arn; - /** - * The name of the Lambda function. You can specify the function name (for example, Thumbnail) or you can specify Amazon Resource Name (ARN) of the function (for example, arn:aws:lambda:us-west-2:account-id:function:ThumbNail). If you are using versioning, you can also provide a qualified function ARN (ARN that is qualified with function version or alias name as suffix). AWS Lambda also allows you to specify only the function name with the account ID qualifier (for example, account-id:Thumbnail). Note that the length constraint applies only to the ARN. If you specify only the function name, it is limited to 64 characters in length. - */ - FunctionName?: FunctionName; - /** - * Optional string. An opaque pagination token returned from a previous ListEventSourceMappings operation. If present, specifies to continue the list from where the returning call left off. - */ - Marker?: String; - /** - * Optional integer. Specifies the maximum number of event sources to return in response. This value must be greater than 0. - */ - MaxItems?: MaxListItems; - } - export interface ListEventSourceMappingsResponse { - /** - * A string, present if there are more event source mappings. - */ - NextMarker?: String; - /** - * An array of EventSourceMappingConfiguration objects. - */ - EventSourceMappings?: EventSourceMappingsList; - } - export interface ListFunctionsRequest { - /** - * Optional string. If not specified, will return only regular function versions (i.e., non-replicated versions). Valid values are: The region from which the functions are replicated. For example, if you specify us-east-1, only functions replicated from that region will be returned. ALL _ Will return all functions from any region. If specified, you also must specify a valid FunctionVersion parameter. - */ - MasterRegion?: MasterRegion; - /** - * Optional string. If not specified, only the unqualified functions ARNs (Amazon Resource Names) will be returned. Valid value: ALL _ Will return all versions, including $LATEST which will have fully qualified ARNs (Amazon Resource Names). - */ - FunctionVersion?: FunctionVersion; - /** - * Optional string. An opaque pagination token returned from a previous ListFunctions operation. If present, indicates where to continue the listing. - */ - Marker?: String; - /** - * Optional integer. Specifies the maximum number of AWS Lambda functions to return in response. This parameter value must be greater than 0. - */ - MaxItems?: MaxListItems; - } - export interface ListFunctionsResponse { - /** - * A string, present if there are more functions. - */ - NextMarker?: String; - /** - * A list of Lambda functions. - */ - Functions?: FunctionList; - } - export interface ListTagsRequest { - /** - * The ARN (Amazon Resource Name) of the function. - */ - Resource: FunctionArn; - } - export interface ListTagsResponse { - /** - * The list of tags assigned to the function. - */ - Tags?: Tags; - } - export interface ListVersionsByFunctionRequest { - /** - * Function name whose versions to list. You can specify a function name (for example, Thumbnail) or you can specify Amazon Resource Name (ARN) of the function (for example, arn:aws:lambda:us-west-2:account-id:function:ThumbNail). AWS Lambda also allows you to specify a partial ARN (for example, account-id:Thumbnail). Note that the length constraint applies only to the ARN. If you specify only the function name, it is limited to 64 characters in length. - */ - FunctionName: NamespacedFunctionName; - /** - * Optional string. An opaque pagination token returned from a previous ListVersionsByFunction operation. If present, indicates where to continue the listing. - */ - Marker?: String; - /** - * Optional integer. Specifies the maximum number of AWS Lambda function versions to return in response. This parameter value must be greater than 0. - */ - MaxItems?: MaxListItems; - } - export interface ListVersionsByFunctionResponse { - /** - * A string, present if there are more function versions. - */ - NextMarker?: String; - /** - * A list of Lambda function versions. - */ - Versions?: FunctionList; - } - export type LogType = "None"|"Tail"|string; - export type Long = number; - export type MasterRegion = string; - export type MaxListItems = number; - export type MemorySize = number; - export type NameSpacedFunctionArn = string; - export type NamespacedFunctionName = string; - export type NamespacedStatementId = string; - export type Principal = string; - export interface PublishVersionRequest { - /** - * The Lambda function name. You can specify a function name (for example, Thumbnail) or you can specify Amazon Resource Name (ARN) of the function (for example, arn:aws:lambda:us-west-2:account-id:function:ThumbNail). AWS Lambda also allows you to specify a partial ARN (for example, account-id:Thumbnail). Note that the length constraint applies only to the ARN. If you specify only the function name, it is limited to 64 characters in length. - */ - FunctionName: FunctionName; - /** - * The SHA256 hash of the deployment package you want to publish. This provides validation on the code you are publishing. If you provide this parameter value must match the SHA256 of the $LATEST version for the publication to succeed. - */ - CodeSha256?: String; - /** - * The description for the version you are publishing. If not provided, AWS Lambda copies the description from the $LATEST version. - */ - Description?: Description; - } - export type Qualifier = string; - export interface RemovePermissionRequest { - /** - * Lambda function whose resource policy you want to remove a permission from. You can specify a function name (for example, Thumbnail) or you can specify Amazon Resource Name (ARN) of the function (for example, arn:aws:lambda:us-west-2:account-id:function:ThumbNail). AWS Lambda also allows you to specify a partial ARN (for example, account-id:Thumbnail). Note that the length constraint applies only to the ARN. If you specify only the function name, it is limited to 64 characters in length. - */ - FunctionName: FunctionName; - /** - * Statement ID of the permission to remove. - */ - StatementId: NamespacedStatementId; - /** - * You can specify this optional parameter to remove permission associated with a specific function version or function alias. If you don't specify this parameter, the API removes permission associated with the unqualified function ARN. - */ - Qualifier?: Qualifier; - } - export type ResourceArn = string; - export type RoleArn = string; - export type Runtime = "nodejs"|"nodejs4.3"|"nodejs6.10"|"java8"|"python2.7"|"python3.6"|"dotnetcore1.0"|"nodejs4.3-edge"|string; - export type S3Bucket = string; - export type S3Key = string; - export type S3ObjectVersion = string; - export type SecurityGroupId = string; - export type SecurityGroupIds = SecurityGroupId[]; - export type SensitiveString = string; - export type SourceOwner = string; - export type StatementId = string; - export type String = string; - export type SubnetId = string; - export type SubnetIds = SubnetId[]; - export type TagKey = string; - export type TagKeyList = TagKey[]; - export interface TagResourceRequest { - /** - * The ARN (Amazon Resource Name) of the Lambda function. - */ - Resource: FunctionArn; - /** - * The list of tags (key-value pairs) you are assigning to the Lambda function. - */ - Tags: Tags; - } - export type TagValue = string; - export type Tags = {[key: string]: TagValue}; - export type ThrottleReason = "ConcurrentInvocationLimitExceeded"|"FunctionInvocationRateLimitExceeded"|"CallerRateLimitExceeded"|string; - export type Timeout = number; - export type Timestamp = string; - export interface TracingConfig { - /** - * Can be either PassThrough or Active. If PassThrough, Lambda will only trace the request from an upstream service if it contains a tracing header with "sampled=1". If Active, Lambda will respect any tracing header it receives from an upstream service. If no tracing header is received, Lambda will call X-Ray for a tracing decision. - */ - Mode?: TracingMode; - } - export interface TracingConfigResponse { - /** - * The tracing mode associated with your Lambda function. - */ - Mode?: TracingMode; - } - export type TracingMode = "Active"|"PassThrough"|string; - export interface UntagResourceRequest { - /** - * The ARN (Amazon Resource Name) of the function. - */ - Resource: FunctionArn; - /** - * The list of tag keys to be deleted from the function. - */ - TagKeys: TagKeyList; - } - export interface UpdateAliasRequest { - /** - * The function name for which the alias is created. Note that the length constraint applies only to the ARN. If you specify only the function name, it is limited to 64 characters in length. - */ - FunctionName: FunctionName; - /** - * The alias name. - */ - Name: Alias; - /** - * Using this parameter you can change the Lambda function version to which the alias points. - */ - FunctionVersion?: Version; - /** - * You can change the description of the alias using this parameter. - */ - Description?: Description; - } - export interface UpdateEventSourceMappingRequest { - /** - * The event source mapping identifier. - */ - UUID: String; - /** - * The Lambda function to which you want the stream records sent. You can specify a function name (for example, Thumbnail) or you can specify Amazon Resource Name (ARN) of the function (for example, arn:aws:lambda:us-west-2:account-id:function:ThumbNail). AWS Lambda also allows you to specify a partial ARN (for example, account-id:Thumbnail). Note that the length constraint applies only to the ARN. If you specify only the function name, it is limited to 64 characters in length. If you are using versioning, you can also provide a qualified function ARN (ARN that is qualified with function version or alias name as suffix). For more information about versioning, see AWS Lambda Function Versioning and Aliases Note that the length constraint applies only to the ARN. If you specify only the function name, it is limited to 64 character in length. - */ - FunctionName?: FunctionName; - /** - * Specifies whether AWS Lambda should actively poll the stream or not. If disabled, AWS Lambda will not poll the stream. - */ - Enabled?: Enabled; - /** - * The maximum number of stream records that can be sent to your Lambda function for a single invocation. - */ - BatchSize?: BatchSize; - } - export interface UpdateFunctionCodeRequest { - /** - * The existing Lambda function name whose code you want to replace. You can specify a function name (for example, Thumbnail) or you can specify Amazon Resource Name (ARN) of the function (for example, arn:aws:lambda:us-west-2:account-id:function:ThumbNail). AWS Lambda also allows you to specify a partial ARN (for example, account-id:Thumbnail). Note that the length constraint applies only to the ARN. If you specify only the function name, it is limited to 64 characters in length. - */ - FunctionName: FunctionName; - /** - * The contents of your zip file containing your deployment package. If you are using the web API directly, the contents of the zip file must be base64-encoded. If you are using the AWS SDKs or the AWS CLI, the SDKs or CLI will do the encoding for you. For more information about creating a .zip file, see Execution Permissions in the AWS Lambda Developer Guide. - */ - ZipFile?: _Blob; - /** - * Amazon S3 bucket name where the .zip file containing your deployment package is stored. This bucket must reside in the same AWS Region where you are creating the Lambda function. - */ - S3Bucket?: S3Bucket; - /** - * The Amazon S3 object (the deployment package) key name you want to upload. - */ - S3Key?: S3Key; - /** - * The Amazon S3 object (the deployment package) version you want to upload. - */ - S3ObjectVersion?: S3ObjectVersion; - /** - * This boolean parameter can be used to request AWS Lambda to update the Lambda function and publish a version as an atomic operation. - */ - Publish?: Boolean; - /** - * This boolean parameter can be used to test your request to AWS Lambda to update the Lambda function and publish a version as an atomic operation. It will do all necessary computation and validation of your code but will not upload it or a publish a version. Each time this operation is invoked, the CodeSha256 hash value the provided code will also be computed and returned in the response. - */ - DryRun?: Boolean; - } - export interface UpdateFunctionConfigurationRequest { - /** - * The name of the Lambda function. You can specify a function name (for example, Thumbnail) or you can specify Amazon Resource Name (ARN) of the function (for example, arn:aws:lambda:us-west-2:account-id:function:ThumbNail). AWS Lambda also allows you to specify a partial ARN (for example, account-id:Thumbnail). Note that the length constraint applies only to the ARN. If you specify only the function name, it is limited to 64 character in length. - */ - FunctionName: FunctionName; - /** - * The Amazon Resource Name (ARN) of the IAM role that Lambda will assume when it executes your function. - */ - Role?: RoleArn; - /** - * The function that Lambda calls to begin executing your function. For Node.js, it is the module-name.export value in your function. - */ - Handler?: Handler; - /** - * A short user-defined function description. AWS Lambda does not use this value. Assign a meaningful description as you see fit. - */ - Description?: Description; - /** - * The function execution time at which AWS Lambda should terminate the function. Because the execution time has cost implications, we recommend you set this value based on your expected execution time. The default is 3 seconds. - */ - Timeout?: Timeout; - /** - * The amount of memory, in MB, your Lambda function is given. AWS Lambda uses this memory size to infer the amount of CPU allocated to your function. Your function use-case determines your CPU and memory requirements. For example, a database operation might need less memory compared to an image processing function. The default value is 128 MB. The value must be a multiple of 64 MB. - */ - MemorySize?: MemorySize; - VpcConfig?: VpcConfig; - /** - * The parent object that contains your environment's configuration settings. - */ - Environment?: Environment; - /** - * The runtime environment for the Lambda function. To use the Python runtime v3.6, set the value to "python3.6". To use the Python runtime v2.7, set the value to "python2.7". To use the Node.js runtime v6.10, set the value to "nodejs6.10". To use the Node.js runtime v4.3, set the value to "nodejs4.3". To use the Python runtime v3.6, set the value to "python3.6". Node v0.10.42 is currently marked as deprecated. You must migrate existing functions to the newer Node.js runtime versions available on AWS Lambda (nodejs4.3 or nodejs6.10) as soon as possible. You can request a one-time extension until June 30, 2017 by going to the Lambda console and following the instructions provided. Failure to do so will result in an invalid parameter error being returned. Note that you will have to follow this procedure for each region that contains functions written in the Node v0.10.42 runtime. - */ - Runtime?: Runtime; - /** - * The parent object that contains the target ARN (Amazon Resource Name) of an Amazon SQS queue or Amazon SNS topic. - */ - DeadLetterConfig?: DeadLetterConfig; - /** - * The Amazon Resource Name (ARN) of the KMS key used to encrypt your function's environment variables. If you elect to use the AWS Lambda default service key, pass in an empty string ("") for this parameter. - */ - KMSKeyArn?: KMSKeyArn; - /** - * The parent object that contains your function's tracing settings. - */ - TracingConfig?: TracingConfig; - } - export type Version = string; - export interface VpcConfig { - /** - * A list of one or more subnet IDs in your VPC. - */ - SubnetIds?: SubnetIds; - /** - * A list of one or more security groups IDs in your VPC. - */ - SecurityGroupIds?: SecurityGroupIds; - } - export interface VpcConfigResponse { - /** - * A list of subnet IDs associated with the Lambda function. - */ - SubnetIds?: SubnetIds; - /** - * A list of security group IDs associated with the Lambda function. - */ - SecurityGroupIds?: SecurityGroupIds; - /** - * The VPC ID associated with you Lambda function. - */ - VpcId?: VpcId; - } - export type VpcId = string; - /** - * A string in YYYY-MM-DD format that represents the latest possible API version that can be used in this service. Specify 'latest' to use the latest possible version. - */ - export type apiVersion = "2014-11-11"|"2015-03-31"|"latest"|string; - export interface ClientApiVersions { - /** - * A string in YYYY-MM-DD format that represents the latest possible API version that can be used in this service. Specify 'latest' to use the latest possible version. - */ - apiVersion?: apiVersion; - } - export type ClientConfiguration = ServiceConfigurationOptions & ClientApiVersions; - /** - * Contains interfaces for use with the Lambda client. - */ - export import Types = Lambda; -} -export = Lambda; diff --git a/workshops/monte-carlo-on-ec2-spot-fleet/src/web/node_modules/aws-sdk/clients/lambda.js b/workshops/monte-carlo-on-ec2-spot-fleet/src/web/node_modules/aws-sdk/clients/lambda.js deleted file mode 100644 index 0d041d0b..00000000 --- a/workshops/monte-carlo-on-ec2-spot-fleet/src/web/node_modules/aws-sdk/clients/lambda.js +++ /dev/null @@ -1,28 +0,0 @@ -require('../lib/node_loader'); -var AWS = require('../lib/core'); -var Service = AWS.Service; -var apiLoader = AWS.apiLoader; - -apiLoader.services['lambda'] = {}; -AWS.Lambda = Service.defineService('lambda', ['2014-11-11', '2015-03-31']); -require('../lib/services/lambda'); -Object.defineProperty(apiLoader.services['lambda'], '2014-11-11', { - get: function get() { - var model = require('../apis/lambda-2014-11-11.min.json'); - model.paginators = require('../apis/lambda-2014-11-11.paginators.json').pagination; - return model; - }, - enumerable: true, - configurable: true -}); -Object.defineProperty(apiLoader.services['lambda'], '2015-03-31', { - get: function get() { - var model = require('../apis/lambda-2015-03-31.min.json'); - model.paginators = require('../apis/lambda-2015-03-31.paginators.json').pagination; - return model; - }, - enumerable: true, - configurable: true -}); - -module.exports = AWS.Lambda; diff --git a/workshops/monte-carlo-on-ec2-spot-fleet/src/web/node_modules/aws-sdk/clients/lexmodelbuildingservice.d.ts b/workshops/monte-carlo-on-ec2-spot-fleet/src/web/node_modules/aws-sdk/clients/lexmodelbuildingservice.d.ts deleted file mode 100644 index 8802e281..00000000 --- a/workshops/monte-carlo-on-ec2-spot-fleet/src/web/node_modules/aws-sdk/clients/lexmodelbuildingservice.d.ts +++ /dev/null @@ -1,1910 +0,0 @@ -import {Request} from '../lib/request'; -import {Response} from '../lib/response'; -import {AWSError} from '../lib/error'; -import {Service} from '../lib/service'; -import {ServiceConfigurationOptions} from '../lib/service'; -import {ConfigBase as Config} from '../lib/config'; -interface Blob {} -declare class LexModelBuildingService extends Service { - /** - * Constructs a service object. This object has one method for each API operation. - */ - constructor(options?: LexModelBuildingService.Types.ClientConfiguration) - config: Config & LexModelBuildingService.Types.ClientConfiguration; - /** - * Creates a new version of the bot based on the $LATEST version. If the $LATEST version of this resource hasn't changed since you created the last version, Amazon Lex doesn't create a new version. It returns the last created version. You can update only the $LATEST version of the bot. You can't update the numbered versions that you create with the CreateBotVersion operation. When you create the first version of a bot, Amazon Lex sets the version to 1. Subsequent versions increment by 1. For more information, see versioning-intro. This operation requires permission for the lex:CreateBotVersion action. - */ - createBotVersion(params: LexModelBuildingService.Types.CreateBotVersionRequest, callback?: (err: AWSError, data: LexModelBuildingService.Types.CreateBotVersionResponse) => void): Request; - /** - * Creates a new version of the bot based on the $LATEST version. If the $LATEST version of this resource hasn't changed since you created the last version, Amazon Lex doesn't create a new version. It returns the last created version. You can update only the $LATEST version of the bot. You can't update the numbered versions that you create with the CreateBotVersion operation. When you create the first version of a bot, Amazon Lex sets the version to 1. Subsequent versions increment by 1. For more information, see versioning-intro. This operation requires permission for the lex:CreateBotVersion action. - */ - createBotVersion(callback?: (err: AWSError, data: LexModelBuildingService.Types.CreateBotVersionResponse) => void): Request; - /** - * Creates a new version of an intent based on the $LATEST version of the intent. If the $LATEST version of this intent hasn't changed since you last updated it, Amazon Lex doesn't create a new version. It returns the last version you created. You can update only the $LATEST version of the intent. You can't update the numbered versions that you create with the CreateIntentVersion operation. When you create a version of an intent, Amazon Lex sets the version to 1. Subsequent versions increment by 1. For more information, see versioning-intro. This operation requires permissions to perform the lex:CreateIntentVersion action. - */ - createIntentVersion(params: LexModelBuildingService.Types.CreateIntentVersionRequest, callback?: (err: AWSError, data: LexModelBuildingService.Types.CreateIntentVersionResponse) => void): Request; - /** - * Creates a new version of an intent based on the $LATEST version of the intent. If the $LATEST version of this intent hasn't changed since you last updated it, Amazon Lex doesn't create a new version. It returns the last version you created. You can update only the $LATEST version of the intent. You can't update the numbered versions that you create with the CreateIntentVersion operation. When you create a version of an intent, Amazon Lex sets the version to 1. Subsequent versions increment by 1. For more information, see versioning-intro. This operation requires permissions to perform the lex:CreateIntentVersion action. - */ - createIntentVersion(callback?: (err: AWSError, data: LexModelBuildingService.Types.CreateIntentVersionResponse) => void): Request; - /** - * Creates a new version of a slot type based on the $LATEST version of the specified slot type. If the $LATEST version of this resource has not changed since the last version that you created, Amazon Lex doesn't create a new version. It returns the last version that you created. You can update only the $LATEST version of a slot type. You can't update the numbered versions that you create with the CreateSlotTypeVersion operation. When you create a version of a slot type, Amazon Lex sets the version to 1. Subsequent versions increment by 1. For more information, see versioning-intro. This operation requires permissions for the lex:CreateSlotTypeVersion action. - */ - createSlotTypeVersion(params: LexModelBuildingService.Types.CreateSlotTypeVersionRequest, callback?: (err: AWSError, data: LexModelBuildingService.Types.CreateSlotTypeVersionResponse) => void): Request; - /** - * Creates a new version of a slot type based on the $LATEST version of the specified slot type. If the $LATEST version of this resource has not changed since the last version that you created, Amazon Lex doesn't create a new version. It returns the last version that you created. You can update only the $LATEST version of a slot type. You can't update the numbered versions that you create with the CreateSlotTypeVersion operation. When you create a version of a slot type, Amazon Lex sets the version to 1. Subsequent versions increment by 1. For more information, see versioning-intro. This operation requires permissions for the lex:CreateSlotTypeVersion action. - */ - createSlotTypeVersion(callback?: (err: AWSError, data: LexModelBuildingService.Types.CreateSlotTypeVersionResponse) => void): Request; - /** - * Deletes all versions of the bot, including the $LATEST version. To delete a specific version of the bot, use the DeleteBotVersion operation. If a bot has an alias, you can't delete it. Instead, the DeleteBot operation returns a ResourceInUseException exception that includes a reference to the alias that refers to the bot. To remove the reference to the bot, delete the alias. If you get the same exception again, delete the referring alias until the DeleteBot operation is successful. This operation requires permissions for the lex:DeleteBot action. - */ - deleteBot(params: LexModelBuildingService.Types.DeleteBotRequest, callback?: (err: AWSError, data: {}) => void): Request<{}, AWSError>; - /** - * Deletes all versions of the bot, including the $LATEST version. To delete a specific version of the bot, use the DeleteBotVersion operation. If a bot has an alias, you can't delete it. Instead, the DeleteBot operation returns a ResourceInUseException exception that includes a reference to the alias that refers to the bot. To remove the reference to the bot, delete the alias. If you get the same exception again, delete the referring alias until the DeleteBot operation is successful. This operation requires permissions for the lex:DeleteBot action. - */ - deleteBot(callback?: (err: AWSError, data: {}) => void): Request<{}, AWSError>; - /** - * Deletes an alias for the specified bot. You can't delete an alias that is used in the association between a bot and a messaging channel. If an alias is used in a channel association, the DeleteBot operation returns a ResourceInUseException exception that includes a reference to the channel association that refers to the bot. You can remove the reference to the alias by deleting the channel association. If you get the same exception again, delete the referring association until the DeleteBotAlias operation is successful. - */ - deleteBotAlias(params: LexModelBuildingService.Types.DeleteBotAliasRequest, callback?: (err: AWSError, data: {}) => void): Request<{}, AWSError>; - /** - * Deletes an alias for the specified bot. You can't delete an alias that is used in the association between a bot and a messaging channel. If an alias is used in a channel association, the DeleteBot operation returns a ResourceInUseException exception that includes a reference to the channel association that refers to the bot. You can remove the reference to the alias by deleting the channel association. If you get the same exception again, delete the referring association until the DeleteBotAlias operation is successful. - */ - deleteBotAlias(callback?: (err: AWSError, data: {}) => void): Request<{}, AWSError>; - /** - * Deletes the association between an Amazon Lex bot and a messaging platform. This operation requires permission for the lex:DeleteBotChannelAssociation action. - */ - deleteBotChannelAssociation(params: LexModelBuildingService.Types.DeleteBotChannelAssociationRequest, callback?: (err: AWSError, data: {}) => void): Request<{}, AWSError>; - /** - * Deletes the association between an Amazon Lex bot and a messaging platform. This operation requires permission for the lex:DeleteBotChannelAssociation action. - */ - deleteBotChannelAssociation(callback?: (err: AWSError, data: {}) => void): Request<{}, AWSError>; - /** - * Deletes a specific version of a bot. To delete all versions of a bot, use the DeleteBot operation. This operation requires permissions for the lex:DeleteBotVersion action. - */ - deleteBotVersion(params: LexModelBuildingService.Types.DeleteBotVersionRequest, callback?: (err: AWSError, data: {}) => void): Request<{}, AWSError>; - /** - * Deletes a specific version of a bot. To delete all versions of a bot, use the DeleteBot operation. This operation requires permissions for the lex:DeleteBotVersion action. - */ - deleteBotVersion(callback?: (err: AWSError, data: {}) => void): Request<{}, AWSError>; - /** - * Deletes all versions of the intent, including the $LATEST version. To delete a specific version of the intent, use the DeleteIntentVersion operation. You can delete a version of an intent only if it is not referenced. To delete an intent that is referred to in one or more bots (see how-it-works), you must remove those references first. If you get the ResourceInUseException exception, it provides an example reference that shows where the intent is referenced. To remove the reference to the intent, either update the bot or delete it. If you get the same exception when you attempt to delete the intent again, repeat until the intent has no references and the call to DeleteIntent is successful. This operation requires permission for the lex:DeleteIntent action. - */ - deleteIntent(params: LexModelBuildingService.Types.DeleteIntentRequest, callback?: (err: AWSError, data: {}) => void): Request<{}, AWSError>; - /** - * Deletes all versions of the intent, including the $LATEST version. To delete a specific version of the intent, use the DeleteIntentVersion operation. You can delete a version of an intent only if it is not referenced. To delete an intent that is referred to in one or more bots (see how-it-works), you must remove those references first. If you get the ResourceInUseException exception, it provides an example reference that shows where the intent is referenced. To remove the reference to the intent, either update the bot or delete it. If you get the same exception when you attempt to delete the intent again, repeat until the intent has no references and the call to DeleteIntent is successful. This operation requires permission for the lex:DeleteIntent action. - */ - deleteIntent(callback?: (err: AWSError, data: {}) => void): Request<{}, AWSError>; - /** - * Deletes a specific version of an intent. To delete all versions of a intent, use the DeleteIntent operation. This operation requires permissions for the lex:DeleteIntentVersion action. - */ - deleteIntentVersion(params: LexModelBuildingService.Types.DeleteIntentVersionRequest, callback?: (err: AWSError, data: {}) => void): Request<{}, AWSError>; - /** - * Deletes a specific version of an intent. To delete all versions of a intent, use the DeleteIntent operation. This operation requires permissions for the lex:DeleteIntentVersion action. - */ - deleteIntentVersion(callback?: (err: AWSError, data: {}) => void): Request<{}, AWSError>; - /** - * Deletes all versions of the slot type, including the $LATEST version. To delete a specific version of the slot type, use the DeleteSlotTypeVersion operation. You can delete a version of a slot type only if it is not referenced. To delete a slot type that is referred to in one or more intents, you must remove those references first. If you get the ResourceInUseException exception, the exception provides an example reference that shows the intent where the slot type is referenced. To remove the reference to the slot type, either update the intent or delete it. If you get the same exception when you attempt to delete the slot type again, repeat until the slot type has no references and the DeleteSlotType call is successful. This operation requires permission for the lex:DeleteSlotType action. - */ - deleteSlotType(params: LexModelBuildingService.Types.DeleteSlotTypeRequest, callback?: (err: AWSError, data: {}) => void): Request<{}, AWSError>; - /** - * Deletes all versions of the slot type, including the $LATEST version. To delete a specific version of the slot type, use the DeleteSlotTypeVersion operation. You can delete a version of a slot type only if it is not referenced. To delete a slot type that is referred to in one or more intents, you must remove those references first. If you get the ResourceInUseException exception, the exception provides an example reference that shows the intent where the slot type is referenced. To remove the reference to the slot type, either update the intent or delete it. If you get the same exception when you attempt to delete the slot type again, repeat until the slot type has no references and the DeleteSlotType call is successful. This operation requires permission for the lex:DeleteSlotType action. - */ - deleteSlotType(callback?: (err: AWSError, data: {}) => void): Request<{}, AWSError>; - /** - * Deletes a specific version of a slot type. To delete all versions of a slot type, use the DeleteSlotType operation. This operation requires permissions for the lex:DeleteSlotTypeVersion action. - */ - deleteSlotTypeVersion(params: LexModelBuildingService.Types.DeleteSlotTypeVersionRequest, callback?: (err: AWSError, data: {}) => void): Request<{}, AWSError>; - /** - * Deletes a specific version of a slot type. To delete all versions of a slot type, use the DeleteSlotType operation. This operation requires permissions for the lex:DeleteSlotTypeVersion action. - */ - deleteSlotTypeVersion(callback?: (err: AWSError, data: {}) => void): Request<{}, AWSError>; - /** - * Deletes stored utterances. Amazon Lex stores the utterances that users send to your bot unless the childDirected field in the bot is set to true. Utterances are stored for 15 days for use with the GetUtterancesView operation, and then stored indefinately for use in improving the ability of your bot to respond to user input. Use the DeleteStoredUtterances operation to manually delete stored utterances for a specific user. This operation requires permissions for the lex:DeleteUtterances action. - */ - deleteUtterances(params: LexModelBuildingService.Types.DeleteUtterancesRequest, callback?: (err: AWSError, data: {}) => void): Request<{}, AWSError>; - /** - * Deletes stored utterances. Amazon Lex stores the utterances that users send to your bot unless the childDirected field in the bot is set to true. Utterances are stored for 15 days for use with the GetUtterancesView operation, and then stored indefinately for use in improving the ability of your bot to respond to user input. Use the DeleteStoredUtterances operation to manually delete stored utterances for a specific user. This operation requires permissions for the lex:DeleteUtterances action. - */ - deleteUtterances(callback?: (err: AWSError, data: {}) => void): Request<{}, AWSError>; - /** - * Returns metadata information for a specific bot. You must provide the bot name and the bot version or alias. This operation requires permissions for the lex:GetBot action. - */ - getBot(params: LexModelBuildingService.Types.GetBotRequest, callback?: (err: AWSError, data: LexModelBuildingService.Types.GetBotResponse) => void): Request; - /** - * Returns metadata information for a specific bot. You must provide the bot name and the bot version or alias. This operation requires permissions for the lex:GetBot action. - */ - getBot(callback?: (err: AWSError, data: LexModelBuildingService.Types.GetBotResponse) => void): Request; - /** - * Returns information about an Amazon Lex bot alias. For more information about aliases, see versioning-aliases. This operation requires permissions for the lex:GetBotAlias action. - */ - getBotAlias(params: LexModelBuildingService.Types.GetBotAliasRequest, callback?: (err: AWSError, data: LexModelBuildingService.Types.GetBotAliasResponse) => void): Request; - /** - * Returns information about an Amazon Lex bot alias. For more information about aliases, see versioning-aliases. This operation requires permissions for the lex:GetBotAlias action. - */ - getBotAlias(callback?: (err: AWSError, data: LexModelBuildingService.Types.GetBotAliasResponse) => void): Request; - /** - * Returns a list of aliases for a specified Amazon Lex bot. This operation requires permissions for the lex:GetBotAliases action. - */ - getBotAliases(params: LexModelBuildingService.Types.GetBotAliasesRequest, callback?: (err: AWSError, data: LexModelBuildingService.Types.GetBotAliasesResponse) => void): Request; - /** - * Returns a list of aliases for a specified Amazon Lex bot. This operation requires permissions for the lex:GetBotAliases action. - */ - getBotAliases(callback?: (err: AWSError, data: LexModelBuildingService.Types.GetBotAliasesResponse) => void): Request; - /** - * Returns information about the association between an Amazon Lex bot and a messaging platform. This operation requires permissions for the lex:GetBotChannelAssociation action. - */ - getBotChannelAssociation(params: LexModelBuildingService.Types.GetBotChannelAssociationRequest, callback?: (err: AWSError, data: LexModelBuildingService.Types.GetBotChannelAssociationResponse) => void): Request; - /** - * Returns information about the association between an Amazon Lex bot and a messaging platform. This operation requires permissions for the lex:GetBotChannelAssociation action. - */ - getBotChannelAssociation(callback?: (err: AWSError, data: LexModelBuildingService.Types.GetBotChannelAssociationResponse) => void): Request; - /** - * Returns a list of all of the channels associated with the specified bot. The GetBotChannelAssociations operation requires permissions for the lex:GetBotChannelAssociations action. - */ - getBotChannelAssociations(params: LexModelBuildingService.Types.GetBotChannelAssociationsRequest, callback?: (err: AWSError, data: LexModelBuildingService.Types.GetBotChannelAssociationsResponse) => void): Request; - /** - * Returns a list of all of the channels associated with the specified bot. The GetBotChannelAssociations operation requires permissions for the lex:GetBotChannelAssociations action. - */ - getBotChannelAssociations(callback?: (err: AWSError, data: LexModelBuildingService.Types.GetBotChannelAssociationsResponse) => void): Request; - /** - * Gets information about all of the versions of a bot. The GetBotVersions operation returns a BotMetadata object for each version of a bot. For example, if a bot has three numbered versions, the GetBotVersions operation returns four BotMetadata objects in the response, one for each numbered version and one for the $LATEST version. The GetBotVersions operation always returns at least one version, the $LATEST version. This operation requires permissions for the lex:GetBotVersions action. - */ - getBotVersions(params: LexModelBuildingService.Types.GetBotVersionsRequest, callback?: (err: AWSError, data: LexModelBuildingService.Types.GetBotVersionsResponse) => void): Request; - /** - * Gets information about all of the versions of a bot. The GetBotVersions operation returns a BotMetadata object for each version of a bot. For example, if a bot has three numbered versions, the GetBotVersions operation returns four BotMetadata objects in the response, one for each numbered version and one for the $LATEST version. The GetBotVersions operation always returns at least one version, the $LATEST version. This operation requires permissions for the lex:GetBotVersions action. - */ - getBotVersions(callback?: (err: AWSError, data: LexModelBuildingService.Types.GetBotVersionsResponse) => void): Request; - /** - * Returns bot information as follows: If you provide the nameContains field, the response includes information for the $LATEST version of all bots whose name contains the specified string. If you don't specify the nameContains field, the operation returns information about the $LATEST version of all of your bots. This operation requires permission for the lex:GetBots action. - */ - getBots(params: LexModelBuildingService.Types.GetBotsRequest, callback?: (err: AWSError, data: LexModelBuildingService.Types.GetBotsResponse) => void): Request; - /** - * Returns bot information as follows: If you provide the nameContains field, the response includes information for the $LATEST version of all bots whose name contains the specified string. If you don't specify the nameContains field, the operation returns information about the $LATEST version of all of your bots. This operation requires permission for the lex:GetBots action. - */ - getBots(callback?: (err: AWSError, data: LexModelBuildingService.Types.GetBotsResponse) => void): Request; - /** - * Returns information about a built-in intent. This operation requires permission for the lex:GetBuiltinIntent action. - */ - getBuiltinIntent(params: LexModelBuildingService.Types.GetBuiltinIntentRequest, callback?: (err: AWSError, data: LexModelBuildingService.Types.GetBuiltinIntentResponse) => void): Request; - /** - * Returns information about a built-in intent. This operation requires permission for the lex:GetBuiltinIntent action. - */ - getBuiltinIntent(callback?: (err: AWSError, data: LexModelBuildingService.Types.GetBuiltinIntentResponse) => void): Request; - /** - * Gets a list of built-in intents that meet the specified criteria. This operation requires permission for the lex:GetBuiltinIntents action. - */ - getBuiltinIntents(params: LexModelBuildingService.Types.GetBuiltinIntentsRequest, callback?: (err: AWSError, data: LexModelBuildingService.Types.GetBuiltinIntentsResponse) => void): Request; - /** - * Gets a list of built-in intents that meet the specified criteria. This operation requires permission for the lex:GetBuiltinIntents action. - */ - getBuiltinIntents(callback?: (err: AWSError, data: LexModelBuildingService.Types.GetBuiltinIntentsResponse) => void): Request; - /** - * Gets a list of built-in slot types that meet the specified criteria. For a list of built-in slot types, see Slot Type Reference in the Alexa Skills Kit. This operation requires permission for the lex:GetBuiltInSlotTypes action. - */ - getBuiltinSlotTypes(params: LexModelBuildingService.Types.GetBuiltinSlotTypesRequest, callback?: (err: AWSError, data: LexModelBuildingService.Types.GetBuiltinSlotTypesResponse) => void): Request; - /** - * Gets a list of built-in slot types that meet the specified criteria. For a list of built-in slot types, see Slot Type Reference in the Alexa Skills Kit. This operation requires permission for the lex:GetBuiltInSlotTypes action. - */ - getBuiltinSlotTypes(callback?: (err: AWSError, data: LexModelBuildingService.Types.GetBuiltinSlotTypesResponse) => void): Request; - /** - * Exports the contents of a Amazon Lex resource in a specified format. - */ - getExport(params: LexModelBuildingService.Types.GetExportRequest, callback?: (err: AWSError, data: LexModelBuildingService.Types.GetExportResponse) => void): Request; - /** - * Exports the contents of a Amazon Lex resource in a specified format. - */ - getExport(callback?: (err: AWSError, data: LexModelBuildingService.Types.GetExportResponse) => void): Request; - /** - * Returns information about an intent. In addition to the intent name, you must specify the intent version. This operation requires permissions to perform the lex:GetIntent action. - */ - getIntent(params: LexModelBuildingService.Types.GetIntentRequest, callback?: (err: AWSError, data: LexModelBuildingService.Types.GetIntentResponse) => void): Request; - /** - * Returns information about an intent. In addition to the intent name, you must specify the intent version. This operation requires permissions to perform the lex:GetIntent action. - */ - getIntent(callback?: (err: AWSError, data: LexModelBuildingService.Types.GetIntentResponse) => void): Request; - /** - * Gets information about all of the versions of an intent. The GetIntentVersions operation returns an IntentMetadata object for each version of an intent. For example, if an intent has three numbered versions, the GetIntentVersions operation returns four IntentMetadata objects in the response, one for each numbered version and one for the $LATEST version. The GetIntentVersions operation always returns at least one version, the $LATEST version. This operation requires permissions for the lex:GetIntentVersions action. - */ - getIntentVersions(params: LexModelBuildingService.Types.GetIntentVersionsRequest, callback?: (err: AWSError, data: LexModelBuildingService.Types.GetIntentVersionsResponse) => void): Request; - /** - * Gets information about all of the versions of an intent. The GetIntentVersions operation returns an IntentMetadata object for each version of an intent. For example, if an intent has three numbered versions, the GetIntentVersions operation returns four IntentMetadata objects in the response, one for each numbered version and one for the $LATEST version. The GetIntentVersions operation always returns at least one version, the $LATEST version. This operation requires permissions for the lex:GetIntentVersions action. - */ - getIntentVersions(callback?: (err: AWSError, data: LexModelBuildingService.Types.GetIntentVersionsResponse) => void): Request; - /** - * Returns intent information as follows: If you specify the nameContains field, returns the $LATEST version of all intents that contain the specified string. If you don't specify the nameContains field, returns information about the $LATEST version of all intents. The operation requires permission for the lex:GetIntents action. - */ - getIntents(params: LexModelBuildingService.Types.GetIntentsRequest, callback?: (err: AWSError, data: LexModelBuildingService.Types.GetIntentsResponse) => void): Request; - /** - * Returns intent information as follows: If you specify the nameContains field, returns the $LATEST version of all intents that contain the specified string. If you don't specify the nameContains field, returns information about the $LATEST version of all intents. The operation requires permission for the lex:GetIntents action. - */ - getIntents(callback?: (err: AWSError, data: LexModelBuildingService.Types.GetIntentsResponse) => void): Request; - /** - * Returns information about a specific version of a slot type. In addition to specifying the slot type name, you must specify the slot type version. This operation requires permissions for the lex:GetSlotType action. - */ - getSlotType(params: LexModelBuildingService.Types.GetSlotTypeRequest, callback?: (err: AWSError, data: LexModelBuildingService.Types.GetSlotTypeResponse) => void): Request; - /** - * Returns information about a specific version of a slot type. In addition to specifying the slot type name, you must specify the slot type version. This operation requires permissions for the lex:GetSlotType action. - */ - getSlotType(callback?: (err: AWSError, data: LexModelBuildingService.Types.GetSlotTypeResponse) => void): Request; - /** - * Gets information about all versions of a slot type. The GetSlotTypeVersions operation returns a SlotTypeMetadata object for each version of a slot type. For example, if a slot type has three numbered versions, the GetSlotTypeVersions operation returns four SlotTypeMetadata objects in the response, one for each numbered version and one for the $LATEST version. The GetSlotTypeVersions operation always returns at least one version, the $LATEST version. This operation requires permissions for the lex:GetSlotTypeVersions action. - */ - getSlotTypeVersions(params: LexModelBuildingService.Types.GetSlotTypeVersionsRequest, callback?: (err: AWSError, data: LexModelBuildingService.Types.GetSlotTypeVersionsResponse) => void): Request; - /** - * Gets information about all versions of a slot type. The GetSlotTypeVersions operation returns a SlotTypeMetadata object for each version of a slot type. For example, if a slot type has three numbered versions, the GetSlotTypeVersions operation returns four SlotTypeMetadata objects in the response, one for each numbered version and one for the $LATEST version. The GetSlotTypeVersions operation always returns at least one version, the $LATEST version. This operation requires permissions for the lex:GetSlotTypeVersions action. - */ - getSlotTypeVersions(callback?: (err: AWSError, data: LexModelBuildingService.Types.GetSlotTypeVersionsResponse) => void): Request; - /** - * Returns slot type information as follows: If you specify the nameContains field, returns the $LATEST version of all slot types that contain the specified string. If you don't specify the nameContains field, returns information about the $LATEST version of all slot types. The operation requires permission for the lex:GetSlotTypes action. - */ - getSlotTypes(params: LexModelBuildingService.Types.GetSlotTypesRequest, callback?: (err: AWSError, data: LexModelBuildingService.Types.GetSlotTypesResponse) => void): Request; - /** - * Returns slot type information as follows: If you specify the nameContains field, returns the $LATEST version of all slot types that contain the specified string. If you don't specify the nameContains field, returns information about the $LATEST version of all slot types. The operation requires permission for the lex:GetSlotTypes action. - */ - getSlotTypes(callback?: (err: AWSError, data: LexModelBuildingService.Types.GetSlotTypesResponse) => void): Request; - /** - * Use the GetUtterancesView operation to get information about the utterances that your users have made to your bot. You can use this list to tune the utterances that your bot responds to. For example, say that you have created a bot to order flowers. After your users have used your bot for a while, use the GetUtterancesView operation to see the requests that they have made and whether they have been successful. You might find that the utterance "I want flowers" is not being recognized. You could add this utterance to the OrderFlowers intent so that your bot recognizes that utterance. After you publish a new version of a bot, you can get information about the old version and the new so that you can compare the performance across the two versions. Data is available for the last 15 days. You can request information for up to 5 versions in each request. The response contains information about a maximum of 100 utterances for each version. If the bot's childDirected field is set to true, utterances for the bot are not stored and cannot be retrieved with the GetUtterancesView operation. For more information, see PutBot. This operation requires permissions for the lex:GetUtterancesView action. - */ - getUtterancesView(params: LexModelBuildingService.Types.GetUtterancesViewRequest, callback?: (err: AWSError, data: LexModelBuildingService.Types.GetUtterancesViewResponse) => void): Request; - /** - * Use the GetUtterancesView operation to get information about the utterances that your users have made to your bot. You can use this list to tune the utterances that your bot responds to. For example, say that you have created a bot to order flowers. After your users have used your bot for a while, use the GetUtterancesView operation to see the requests that they have made and whether they have been successful. You might find that the utterance "I want flowers" is not being recognized. You could add this utterance to the OrderFlowers intent so that your bot recognizes that utterance. After you publish a new version of a bot, you can get information about the old version and the new so that you can compare the performance across the two versions. Data is available for the last 15 days. You can request information for up to 5 versions in each request. The response contains information about a maximum of 100 utterances for each version. If the bot's childDirected field is set to true, utterances for the bot are not stored and cannot be retrieved with the GetUtterancesView operation. For more information, see PutBot. This operation requires permissions for the lex:GetUtterancesView action. - */ - getUtterancesView(callback?: (err: AWSError, data: LexModelBuildingService.Types.GetUtterancesViewResponse) => void): Request; - /** - * Creates an Amazon Lex conversational bot or replaces an existing bot. When you create or update a bot you are only required to specify a name. You can use this to add intents later, or to remove intents from an existing bot. When you create a bot with a name only, the bot is created or updated but Amazon Lex returns the response FAILED. You can build the bot after you add one or more intents. For more information about Amazon Lex bots, see how-it-works. If you specify the name of an existing bot, the fields in the request replace the existing values in the $LATEST version of the bot. Amazon Lex removes any fields that you don't provide values for in the request, except for the idleTTLInSeconds and privacySettings fields, which are set to their default values. If you don't specify values for required fields, Amazon Lex throws an exception. This operation requires permissions for the lex:PutBot action. For more information, see auth-and-access-control. - */ - putBot(params: LexModelBuildingService.Types.PutBotRequest, callback?: (err: AWSError, data: LexModelBuildingService.Types.PutBotResponse) => void): Request; - /** - * Creates an Amazon Lex conversational bot or replaces an existing bot. When you create or update a bot you are only required to specify a name. You can use this to add intents later, or to remove intents from an existing bot. When you create a bot with a name only, the bot is created or updated but Amazon Lex returns the response FAILED. You can build the bot after you add one or more intents. For more information about Amazon Lex bots, see how-it-works. If you specify the name of an existing bot, the fields in the request replace the existing values in the $LATEST version of the bot. Amazon Lex removes any fields that you don't provide values for in the request, except for the idleTTLInSeconds and privacySettings fields, which are set to their default values. If you don't specify values for required fields, Amazon Lex throws an exception. This operation requires permissions for the lex:PutBot action. For more information, see auth-and-access-control. - */ - putBot(callback?: (err: AWSError, data: LexModelBuildingService.Types.PutBotResponse) => void): Request; - /** - * Creates an alias for the specified version of the bot or replaces an alias for the specified bot. To change the version of the bot that the alias points to, replace the alias. For more information about aliases, see versioning-aliases. This operation requires permissions for the lex:PutBotAlias action. - */ - putBotAlias(params: LexModelBuildingService.Types.PutBotAliasRequest, callback?: (err: AWSError, data: LexModelBuildingService.Types.PutBotAliasResponse) => void): Request; - /** - * Creates an alias for the specified version of the bot or replaces an alias for the specified bot. To change the version of the bot that the alias points to, replace the alias. For more information about aliases, see versioning-aliases. This operation requires permissions for the lex:PutBotAlias action. - */ - putBotAlias(callback?: (err: AWSError, data: LexModelBuildingService.Types.PutBotAliasResponse) => void): Request; - /** - * Creates an intent or replaces an existing intent. To define the interaction between the user and your bot, you use one or more intents. For a pizza ordering bot, for example, you would create an OrderPizza intent. To create an intent or replace an existing intent, you must provide the following: Intent name. For example, OrderPizza. Sample utterances. For example, "Can I order a pizza, please." and "I want to order a pizza." Information to be gathered. You specify slot types for the information that your bot will request from the user. You can specify standard slot types, such as a date or a time, or custom slot types such as the size and crust of a pizza. How the intent will be fulfilled. You can provide a Lambda function or configure the intent to return the intent information to the client application. If you use a Lambda function, when all of the intent information is available, Amazon Lex invokes your Lambda function. If you configure your intent to return the intent information to the client application. You can specify other optional information in the request, such as: A confirmation prompt to ask the user to confirm an intent. For example, "Shall I order your pizza?" A conclusion statement to send to the user after the intent has been fulfilled. For example, "I placed your pizza order." A follow-up prompt that asks the user for additional activity. For example, asking "Do you want to order a drink with your pizza?" If you specify an existing intent name to update the intent, Amazon Lex replaces the values in the $LATEST version of the slot type with the values in the request. Amazon Lex removes fields that you don't provide in the request. If you don't specify the required fields, Amazon Lex throws an exception. For more information, see how-it-works. This operation requires permissions for the lex:PutIntent action. - */ - putIntent(params: LexModelBuildingService.Types.PutIntentRequest, callback?: (err: AWSError, data: LexModelBuildingService.Types.PutIntentResponse) => void): Request; - /** - * Creates an intent or replaces an existing intent. To define the interaction between the user and your bot, you use one or more intents. For a pizza ordering bot, for example, you would create an OrderPizza intent. To create an intent or replace an existing intent, you must provide the following: Intent name. For example, OrderPizza. Sample utterances. For example, "Can I order a pizza, please." and "I want to order a pizza." Information to be gathered. You specify slot types for the information that your bot will request from the user. You can specify standard slot types, such as a date or a time, or custom slot types such as the size and crust of a pizza. How the intent will be fulfilled. You can provide a Lambda function or configure the intent to return the intent information to the client application. If you use a Lambda function, when all of the intent information is available, Amazon Lex invokes your Lambda function. If you configure your intent to return the intent information to the client application. You can specify other optional information in the request, such as: A confirmation prompt to ask the user to confirm an intent. For example, "Shall I order your pizza?" A conclusion statement to send to the user after the intent has been fulfilled. For example, "I placed your pizza order." A follow-up prompt that asks the user for additional activity. For example, asking "Do you want to order a drink with your pizza?" If you specify an existing intent name to update the intent, Amazon Lex replaces the values in the $LATEST version of the slot type with the values in the request. Amazon Lex removes fields that you don't provide in the request. If you don't specify the required fields, Amazon Lex throws an exception. For more information, see how-it-works. This operation requires permissions for the lex:PutIntent action. - */ - putIntent(callback?: (err: AWSError, data: LexModelBuildingService.Types.PutIntentResponse) => void): Request; - /** - * Creates a custom slot type or replaces an existing custom slot type. To create a custom slot type, specify a name for the slot type and a set of enumeration values, which are the values that a slot of this type can assume. For more information, see how-it-works. If you specify the name of an existing slot type, the fields in the request replace the existing values in the $LATEST version of the slot type. Amazon Lex removes the fields that you don't provide in the request. If you don't specify required fields, Amazon Lex throws an exception. This operation requires permissions for the lex:PutSlotType action. - */ - putSlotType(params: LexModelBuildingService.Types.PutSlotTypeRequest, callback?: (err: AWSError, data: LexModelBuildingService.Types.PutSlotTypeResponse) => void): Request; - /** - * Creates a custom slot type or replaces an existing custom slot type. To create a custom slot type, specify a name for the slot type and a set of enumeration values, which are the values that a slot of this type can assume. For more information, see how-it-works. If you specify the name of an existing slot type, the fields in the request replace the existing values in the $LATEST version of the slot type. Amazon Lex removes the fields that you don't provide in the request. If you don't specify required fields, Amazon Lex throws an exception. This operation requires permissions for the lex:PutSlotType action. - */ - putSlotType(callback?: (err: AWSError, data: LexModelBuildingService.Types.PutSlotTypeResponse) => void): Request; -} -declare namespace LexModelBuildingService { - export type AliasName = string; - export type AliasNameOrListAll = string; - export type Boolean = boolean; - export interface BotAliasMetadata { - /** - * The name of the bot alias. - */ - name?: AliasName; - /** - * A description of the bot alias. - */ - description?: Description; - /** - * The version of the Amazon Lex bot to which the alias points. - */ - botVersion?: Version; - /** - * The name of the bot to which the alias points. - */ - botName?: BotName; - /** - * The date that the bot alias was updated. When you create a resource, the creation date and last updated date are the same. - */ - lastUpdatedDate?: Timestamp; - /** - * The date that the bot alias was created. - */ - createdDate?: Timestamp; - /** - * Checksum of the bot alias. - */ - checksum?: String; - } - export type BotAliasMetadataList = BotAliasMetadata[]; - export interface BotChannelAssociation { - /** - * The name of the association between the bot and the channel. - */ - name?: BotChannelName; - /** - * A text description of the association you are creating. - */ - description?: Description; - /** - * An alias pointing to the specific version of the Amazon Lex bot to which this association is being made. - */ - botAlias?: AliasName; - /** - * The name of the Amazon Lex bot to which this association is being made. Currently, Amazon Lex supports associations with Facebook and Slack, and Twilio. - */ - botName?: BotName; - /** - * The date that the association between the Amazon Lex bot and the channel was created. - */ - createdDate?: Timestamp; - /** - * Specifies the type of association by indicating the type of channel being established between the Amazon Lex bot and the external messaging platform. - */ - type?: ChannelType; - /** - * Provides information necessary to communicate with the messaging platform. - */ - botConfiguration?: ChannelConfigurationMap; - } - export type BotChannelAssociationList = BotChannelAssociation[]; - export type BotChannelName = string; - export interface BotMetadata { - /** - * The name of the bot. - */ - name?: BotName; - /** - * A description of the bot. - */ - description?: Description; - /** - * The status of the bot. - */ - status?: Status; - /** - * The date that the bot was updated. When you create a bot, the creation date and last updated date are the same. - */ - lastUpdatedDate?: Timestamp; - /** - * The date that the bot was created. - */ - createdDate?: Timestamp; - /** - * The version of the bot. For a new bot, the version is always $LATEST. - */ - version?: Version; - } - export type BotMetadataList = BotMetadata[]; - export type BotName = string; - export type BotVersions = Version[]; - export interface BuiltinIntentMetadata { - /** - * A unique identifier for the built-in intent. To find the signature for an intent, see Standard Built-in Intents in the Alexa Skills Kit. - */ - signature?: BuiltinIntentSignature; - /** - * A list of identifiers for the locales that the intent supports. - */ - supportedLocales?: LocaleList; - } - export type BuiltinIntentMetadataList = BuiltinIntentMetadata[]; - export type BuiltinIntentSignature = string; - export interface BuiltinIntentSlot { - /** - * A list of the slots defined for the intent. - */ - name?: String; - } - export type BuiltinIntentSlotList = BuiltinIntentSlot[]; - export interface BuiltinSlotTypeMetadata { - /** - * A unique identifier for the built-in slot type. To find the signature for a slot type, see Slot Type Reference in the Alexa Skills Kit. - */ - signature?: BuiltinSlotTypeSignature; - /** - * A list of target locales for the slot. - */ - supportedLocales?: LocaleList; - } - export type BuiltinSlotTypeMetadataList = BuiltinSlotTypeMetadata[]; - export type BuiltinSlotTypeSignature = string; - export type ChannelConfigurationMap = {[key: string]: String}; - export type ChannelType = "Facebook"|"Slack"|"Twilio-Sms"|string; - export interface CodeHook { - /** - * The Amazon Resource Name (ARN) of the Lambda function. - */ - uri: LambdaARN; - /** - * The version of the request-response that you want Amazon Lex to use to invoke your Lambda function. For more information, see using-lambda. - */ - messageVersion: MessageVersion; - } - export type ContentString = string; - export type ContentType = "PlainText"|"SSML"|string; - export type Count = number; - export interface CreateBotVersionRequest { - /** - * The name of the bot that you want to create a new version of. The name is case sensitive. - */ - name: BotName; - /** - * Identifies a specific revision of the $LATEST version of the bot. If you specify a checksum and the $LATEST version of the bot has a different checksum, a PreconditionFailedException exception is returned and Amazon Lex doesn't publish a new version. If you don't specify a checksum, Amazon Lex publishes the $LATEST version. - */ - checksum?: String; - } - export interface CreateBotVersionResponse { - /** - * The name of the bot. - */ - name?: BotName; - /** - * A description of the bot. - */ - description?: Description; - /** - * An array of Intent objects. For more information, see PutBot. - */ - intents?: IntentList; - /** - * The message that Amazon Lex uses when it doesn't understand the user's request. For more information, see PutBot. - */ - clarificationPrompt?: Prompt; - /** - * The message that Amazon Lex uses to abort a conversation. For more information, see PutBot. - */ - abortStatement?: Statement; - /** - * When you send a request to create or update a bot, Amazon Lex sets the status response element to BUILDING. After Amazon Lex builds the bot, it sets status to READY. If Amazon Lex can't build the bot, it sets status to FAILED. Amazon Lex returns the reason for the failure in the failureReason response element. - */ - status?: Status; - /** - * If status is FAILED, Amazon Lex provides the reason that it failed to build the bot. - */ - failureReason?: String; - /** - * The date when the $LATEST version of this bot was updated. - */ - lastUpdatedDate?: Timestamp; - /** - * The date when the bot version was created. - */ - createdDate?: Timestamp; - /** - * The maximum time in seconds that Amazon Lex retains the data gathered in a conversation. For more information, see PutBot. - */ - idleSessionTTLInSeconds?: SessionTTL; - /** - * The Amazon Polly voice ID that Amazon Lex uses for voice interactions with the user. - */ - voiceId?: String; - /** - * Checksum identifying the version of the bot that was created. - */ - checksum?: String; - /** - * The version of the bot. - */ - version?: Version; - /** - * Specifies the target locale for the bot. - */ - locale?: Locale; - /** - * For each Amazon Lex bot created with the Amazon Lex Model Building Service, you must specify whether your use of Amazon Lex is related to a website, program, or other application that is directed or targeted, in whole or in part, to children under age 13 and subject to the Children's Online Privacy Protection Act (COPPA) by specifying true or false in the childDirected field. By specifying true in the childDirected field, you confirm that your use of Amazon Lex is related to a website, program, or other application that is directed or targeted, in whole or in part, to children under age 13 and subject to COPPA. By specifying false in the childDirected field, you confirm that your use of Amazon Lex is not related to a website, program, or other application that is directed or targeted, in whole or in part, to children under age 13 and subject to COPPA. You may not specify a default value for the childDirected field that does not accurately reflect whether your use of Amazon Lex is related to a website, program, or other application that is directed or targeted, in whole or in part, to children under age 13 and subject to COPPA. If your use of Amazon Lex relates to a website, program, or other application that is directed in whole or in part, to children under age 13, you must obtain any required verifiable parental consent under COPPA. For information regarding the use of Amazon Lex in connection with websites, programs, or other applications that are directed or targeted, in whole or in part, to children under age 13, see the Amazon Lex FAQ. - */ - childDirected?: Boolean; - } - export interface CreateIntentVersionRequest { - /** - * The name of the intent that you want to create a new version of. The name is case sensitive. - */ - name: IntentName; - /** - * Checksum of the $LATEST version of the intent that should be used to create the new version. If you specify a checksum and the $LATEST version of the intent has a different checksum, Amazon Lex returns a PreconditionFailedException exception and doesn't publish a new version. If you don't specify a checksum, Amazon Lex publishes the $LATEST version. - */ - checksum?: String; - } - export interface CreateIntentVersionResponse { - /** - * The name of the intent. - */ - name?: IntentName; - /** - * A description of the intent. - */ - description?: Description; - /** - * An array of slot types that defines the information required to fulfill the intent. - */ - slots?: SlotList; - /** - * An array of sample utterances configured for the intent. - */ - sampleUtterances?: IntentUtteranceList; - /** - * If defined, the prompt that Amazon Lex uses to confirm the user's intent before fulfilling it. - */ - confirmationPrompt?: Prompt; - /** - * If the user answers "no" to the question defined in confirmationPrompt, Amazon Lex responds with this statement to acknowledge that the intent was canceled. - */ - rejectionStatement?: Statement; - /** - * If defined, Amazon Lex uses this prompt to solicit additional user activity after the intent is fulfilled. - */ - followUpPrompt?: FollowUpPrompt; - /** - * After the Lambda function specified in the fulfillmentActivity field fulfills the intent, Amazon Lex conveys this statement to the user. - */ - conclusionStatement?: Statement; - /** - * If defined, Amazon Lex invokes this Lambda function for each user input. - */ - dialogCodeHook?: CodeHook; - /** - * Describes how the intent is fulfilled. - */ - fulfillmentActivity?: FulfillmentActivity; - /** - * A unique identifier for a built-in intent. - */ - parentIntentSignature?: BuiltinIntentSignature; - /** - * The date that the intent was updated. - */ - lastUpdatedDate?: Timestamp; - /** - * The date that the intent was created. - */ - createdDate?: Timestamp; - /** - * The version number assigned to the new version of the intent. - */ - version?: Version; - /** - * Checksum of the intent version created. - */ - checksum?: String; - } - export interface CreateSlotTypeVersionRequest { - /** - * The name of the slot type that you want to create a new version for. The name is case sensitive. - */ - name: SlotTypeName; - /** - * Checksum for the $LATEST version of the slot type that you want to publish. If you specify a checksum and the $LATEST version of the slot type has a different checksum, Amazon Lex returns a PreconditionFailedException exception and doesn't publish the new version. If you don't specify a checksum, Amazon Lex publishes the $LATEST version. - */ - checksum?: String; - } - export interface CreateSlotTypeVersionResponse { - /** - * The name of the slot type. - */ - name?: SlotTypeName; - /** - * A description of the slot type. - */ - description?: Description; - /** - * A list of EnumerationValue objects that defines the values that the slot type can take. - */ - enumerationValues?: EnumerationValues; - /** - * The date that the slot type was updated. When you create a resource, the creation date and last update date are the same. - */ - lastUpdatedDate?: Timestamp; - /** - * The date that the slot type was created. - */ - createdDate?: Timestamp; - /** - * The version assigned to the new slot type version. - */ - version?: Version; - /** - * Checksum of the $LATEST version of the slot type. - */ - checksum?: String; - /** - * The strategy that Amazon Lex uses to determine the value of the slot. For more information, see PutSlotType. - */ - valueSelectionStrategy?: SlotValueSelectionStrategy; - } - export type CustomOrBuiltinSlotTypeName = string; - export interface DeleteBotAliasRequest { - /** - * The name of the alias to delete. The name is case sensitive. - */ - name: AliasName; - /** - * The name of the bot that the alias points to. - */ - botName: BotName; - } - export interface DeleteBotChannelAssociationRequest { - /** - * The name of the association. The name is case sensitive. - */ - name: BotChannelName; - /** - * The name of the Amazon Lex bot. - */ - botName: BotName; - /** - * An alias that points to the specific version of the Amazon Lex bot to which this association is being made. - */ - botAlias: AliasName; - } - export interface DeleteBotRequest { - /** - * The name of the bot. The name is case sensitive. - */ - name: BotName; - } - export interface DeleteBotVersionRequest { - /** - * The name of the bot. - */ - name: BotName; - /** - * The version of the bot to delete. You cannot delete the $LATEST version of the bot. To delete the $LATEST version, use the DeleteBot operation. - */ - version: NumericalVersion; - } - export interface DeleteIntentRequest { - /** - * The name of the intent. The name is case sensitive. - */ - name: IntentName; - } - export interface DeleteIntentVersionRequest { - /** - * The name of the intent. - */ - name: IntentName; - /** - * The version of the intent to delete. You cannot delete the $LATEST version of the intent. To delete the $LATEST version, use the DeleteIntent operation. - */ - version: NumericalVersion; - } - export interface DeleteSlotTypeRequest { - /** - * The name of the slot type. The name is case sensitive. - */ - name: SlotTypeName; - } - export interface DeleteSlotTypeVersionRequest { - /** - * The name of the slot type. - */ - name: SlotTypeName; - /** - * The version of the slot type to delete. You cannot delete the $LATEST version of the slot type. To delete the $LATEST version, use the DeleteSlotType operation. - */ - version: NumericalVersion; - } - export interface DeleteUtterancesRequest { - /** - * The name of the bot that stored the utterances. - */ - botName: BotName; - /** - * The unique identifier for the user that made the utterances. This is the user ID that was sent in the PostContent or PostText operation request that contained the utterance. - */ - userId: UserId; - } - export type Description = string; - export interface EnumerationValue { - /** - * The value of the slot type. - */ - value: Value; - /** - * Additional values related to the slot type value. - */ - synonyms?: SynonymList; - } - export type EnumerationValues = EnumerationValue[]; - export type ExportStatus = "IN_PROGRESS"|"READY"|"FAILED"|string; - export type ExportType = "ALEXA_SKILLS_KIT"|string; - export interface FollowUpPrompt { - /** - * Prompts for information from the user. - */ - prompt: Prompt; - /** - * If the user answers "no" to the question defined in the prompt field, Amazon Lex responds with this statement to acknowledge that the intent was canceled. - */ - rejectionStatement: Statement; - } - export interface FulfillmentActivity { - /** - * How the intent should be fulfilled, either by running a Lambda function or by returning the slot data to the client application. - */ - type: FulfillmentActivityType; - /** - * A description of the Lambda function that is run to fulfill the intent. - */ - codeHook?: CodeHook; - } - export type FulfillmentActivityType = "ReturnIntent"|"CodeHook"|string; - export interface GetBotAliasRequest { - /** - * The name of the bot alias. The name is case sensitive. - */ - name: AliasName; - /** - * The name of the bot. - */ - botName: BotName; - } - export interface GetBotAliasResponse { - /** - * The name of the bot alias. - */ - name?: AliasName; - /** - * A description of the bot alias. - */ - description?: Description; - /** - * The version of the bot that the alias points to. - */ - botVersion?: Version; - /** - * The name of the bot that the alias points to. - */ - botName?: BotName; - /** - * The date that the bot alias was updated. When you create a resource, the creation date and the last updated date are the same. - */ - lastUpdatedDate?: Timestamp; - /** - * The date that the bot alias was created. - */ - createdDate?: Timestamp; - /** - * Checksum of the bot alias. - */ - checksum?: String; - } - export interface GetBotAliasesRequest { - /** - * The name of the bot. - */ - botName: BotName; - /** - * A pagination token for fetching the next page of aliases. If the response to this call is truncated, Amazon Lex returns a pagination token in the response. To fetch the next page of aliases, specify the pagination token in the next request. - */ - nextToken?: NextToken; - /** - * The maximum number of aliases to return in the response. The default is 50. . - */ - maxResults?: MaxResults; - /** - * Substring to match in bot alias names. An alias will be returned if any part of its name matches the substring. For example, "xyz" matches both "xyzabc" and "abcxyz." - */ - nameContains?: AliasName; - } - export interface GetBotAliasesResponse { - /** - * An array of BotAliasMetadata objects, each describing a bot alias. - */ - BotAliases?: BotAliasMetadataList; - /** - * A pagination token for fetching next page of aliases. If the response to this call is truncated, Amazon Lex returns a pagination token in the response. To fetch the next page of aliases, specify the pagination token in the next request. - */ - nextToken?: NextToken; - } - export interface GetBotChannelAssociationRequest { - /** - * The name of the association between the bot and the channel. The name is case sensitive. - */ - name: BotChannelName; - /** - * The name of the Amazon Lex bot. - */ - botName: BotName; - /** - * An alias pointing to the specific version of the Amazon Lex bot to which this association is being made. - */ - botAlias: AliasName; - } - export interface GetBotChannelAssociationResponse { - /** - * The name of the association between the bot and the channel. - */ - name?: BotChannelName; - /** - * A description of the association between the bot and the channel. - */ - description?: Description; - /** - * An alias pointing to the specific version of the Amazon Lex bot to which this association is being made. - */ - botAlias?: AliasName; - /** - * The name of the Amazon Lex bot. - */ - botName?: BotName; - /** - * The date that the association between the bot and the channel was created. - */ - createdDate?: Timestamp; - /** - * The type of the messaging platform. - */ - type?: ChannelType; - /** - * Provides information that the messaging platform needs to communicate with the Amazon Lex bot. - */ - botConfiguration?: ChannelConfigurationMap; - } - export interface GetBotChannelAssociationsRequest { - /** - * The name of the Amazon Lex bot in the association. - */ - botName: BotName; - /** - * An alias pointing to the specific version of the Amazon Lex bot to which this association is being made. - */ - botAlias: AliasNameOrListAll; - /** - * A pagination token for fetching the next page of associations. If the response to this call is truncated, Amazon Lex returns a pagination token in the response. To fetch the next page of associations, specify the pagination token in the next request. - */ - nextToken?: NextToken; - /** - * The maximum number of associations to return in the response. The default is 50. - */ - maxResults?: MaxResults; - /** - * Substring to match in channel association names. An association will be returned if any part of its name matches the substring. For example, "xyz" matches both "xyzabc" and "abcxyz." To return all bot channel associations, use a hyphen ("-") as the nameContains parameter. - */ - nameContains?: BotChannelName; - } - export interface GetBotChannelAssociationsResponse { - /** - * An array of objects, one for each association, that provides information about the Amazon Lex bot and its association with the channel. - */ - botChannelAssociations?: BotChannelAssociationList; - /** - * A pagination token that fetches the next page of associations. If the response to this call is truncated, Amazon Lex returns a pagination token in the response. To fetch the next page of associations, specify the pagination token in the next request. - */ - nextToken?: NextToken; - } - export interface GetBotRequest { - /** - * The name of the bot. The name is case sensitive. - */ - name: BotName; - /** - * The version or alias of the bot. - */ - versionOrAlias: String; - } - export interface GetBotResponse { - /** - * The name of the bot. - */ - name?: BotName; - /** - * A description of the bot. - */ - description?: Description; - /** - * An array of intent objects. For more information, see PutBot. - */ - intents?: IntentList; - /** - * The message Amazon Lex uses when it doesn't understand the user's request. For more information, see PutBot. - */ - clarificationPrompt?: Prompt; - /** - * The message that Amazon Lex returns when the user elects to end the conversation without completing it. For more information, see PutBot. - */ - abortStatement?: Statement; - /** - * The status of the bot. If the bot is ready to run, the status is READY. If there was a problem with building the bot, the status is FAILED and the failureReason explains why the bot did not build. If the bot was saved but not built, the status is NOT BUILT. - */ - status?: Status; - /** - * If status is FAILED, Amazon Lex explains why it failed to build the bot. - */ - failureReason?: String; - /** - * The date that the bot was updated. When you create a resource, the creation date and last updated date are the same. - */ - lastUpdatedDate?: Timestamp; - /** - * The date that the bot was created. - */ - createdDate?: Timestamp; - /** - * The maximum time in seconds that Amazon Lex retains the data gathered in a conversation. For more information, see PutBot. - */ - idleSessionTTLInSeconds?: SessionTTL; - /** - * The Amazon Polly voice ID that Amazon Lex uses for voice interaction with the user. For more information, see PutBot. - */ - voiceId?: String; - /** - * Checksum of the bot used to identify a specific revision of the bot's $LATEST version. - */ - checksum?: String; - /** - * The version of the bot. For a new bot, the version is always $LATEST. - */ - version?: Version; - /** - * The target locale for the bot. - */ - locale?: Locale; - /** - * For each Amazon Lex bot created with the Amazon Lex Model Building Service, you must specify whether your use of Amazon Lex is related to a website, program, or other application that is directed or targeted, in whole or in part, to children under age 13 and subject to the Children's Online Privacy Protection Act (COPPA) by specifying true or false in the childDirected field. By specifying true in the childDirected field, you confirm that your use of Amazon Lex is related to a website, program, or other application that is directed or targeted, in whole or in part, to children under age 13 and subject to COPPA. By specifying false in the childDirected field, you confirm that your use of Amazon Lex is not related to a website, program, or other application that is directed or targeted, in whole or in part, to children under age 13 and subject to COPPA. You may not specify a default value for the childDirected field that does not accurately reflect whether your use of Amazon Lex is related to a website, program, or other application that is directed or targeted, in whole or in part, to children under age 13 and subject to COPPA. If your use of Amazon Lex relates to a website, program, or other application that is directed in whole or in part, to children under age 13, you must obtain any required verifiable parental consent under COPPA. For information regarding the use of Amazon Lex in connection with websites, programs, or other applications that are directed or targeted, in whole or in part, to children under age 13, see the Amazon Lex FAQ. - */ - childDirected?: Boolean; - } - export interface GetBotVersionsRequest { - /** - * The name of the bot for which versions should be returned. - */ - name: BotName; - /** - * A pagination token for fetching the next page of bot versions. If the response to this call is truncated, Amazon Lex returns a pagination token in the response. To fetch the next page of versions, specify the pagination token in the next request. - */ - nextToken?: NextToken; - /** - * The maximum number of bot versions to return in the response. The default is 10. - */ - maxResults?: MaxResults; - } - export interface GetBotVersionsResponse { - /** - * An array of BotMetadata objects, one for each numbered version of the bot plus one for the $LATEST version. - */ - bots?: BotMetadataList; - /** - * A pagination token for fetching the next page of bot versions. If the response to this call is truncated, Amazon Lex returns a pagination token in the response. To fetch the next page of versions, specify the pagination token in the next request. - */ - nextToken?: NextToken; - } - export interface GetBotsRequest { - /** - * A pagination token that fetches the next page of bots. If the response to this call is truncated, Amazon Lex returns a pagination token in the response. To fetch the next page of bots, specify the pagination token in the next request. - */ - nextToken?: NextToken; - /** - * The maximum number of bots to return in the response that the request will return. The default is 10. - */ - maxResults?: MaxResults; - /** - * Substring to match in bot names. A bot will be returned if any part of its name matches the substring. For example, "xyz" matches both "xyzabc" and "abcxyz." - */ - nameContains?: BotName; - } - export interface GetBotsResponse { - /** - * An array of botMetadata objects, with one entry for each bot. - */ - bots?: BotMetadataList; - /** - * If the response is truncated, it includes a pagination token that you can specify in your next request to fetch the next page of bots. - */ - nextToken?: NextToken; - } - export interface GetBuiltinIntentRequest { - /** - * The unique identifier for a built-in intent. To find the signature for an intent, see Standard Built-in Intents in the Alexa Skills Kit. - */ - signature: BuiltinIntentSignature; - } - export interface GetBuiltinIntentResponse { - /** - * The unique identifier for a built-in intent. - */ - signature?: BuiltinIntentSignature; - /** - * A list of locales that the intent supports. - */ - supportedLocales?: LocaleList; - /** - * An array of BuiltinIntentSlot objects, one entry for each slot type in the intent. - */ - slots?: BuiltinIntentSlotList; - } - export interface GetBuiltinIntentsRequest { - /** - * A list of locales that the intent supports. - */ - locale?: Locale; - /** - * Substring to match in built-in intent signatures. An intent will be returned if any part of its signature matches the substring. For example, "xyz" matches both "xyzabc" and "abcxyz." To find the signature for an intent, see Standard Built-in Intents in the Alexa Skills Kit. - */ - signatureContains?: String; - /** - * A pagination token that fetches the next page of intents. If this API call is truncated, Amazon Lex returns a pagination token in the response. To fetch the next page of intents, use the pagination token in the next request. - */ - nextToken?: NextToken; - /** - * The maximum number of intents to return in the response. The default is 10. - */ - maxResults?: MaxResults; - } - export interface GetBuiltinIntentsResponse { - /** - * An array of builtinIntentMetadata objects, one for each intent in the response. - */ - intents?: BuiltinIntentMetadataList; - /** - * A pagination token that fetches the next page of intents. If the response to this API call is truncated, Amazon Lex returns a pagination token in the response. To fetch the next page of intents, specify the pagination token in the next request. - */ - nextToken?: NextToken; - } - export interface GetBuiltinSlotTypesRequest { - /** - * A list of locales that the slot type supports. - */ - locale?: Locale; - /** - * Substring to match in built-in slot type signatures. A slot type will be returned if any part of its signature matches the substring. For example, "xyz" matches both "xyzabc" and "abcxyz." - */ - signatureContains?: String; - /** - * A pagination token that fetches the next page of slot types. If the response to this API call is truncated, Amazon Lex returns a pagination token in the response. To fetch the next page of slot types, specify the pagination token in the next request. - */ - nextToken?: NextToken; - /** - * The maximum number of slot types to return in the response. The default is 10. - */ - maxResults?: MaxResults; - } - export interface GetBuiltinSlotTypesResponse { - /** - * An array of BuiltInSlotTypeMetadata objects, one entry for each slot type returned. - */ - slotTypes?: BuiltinSlotTypeMetadataList; - /** - * If the response is truncated, the response includes a pagination token that you can use in your next request to fetch the next page of slot types. - */ - nextToken?: NextToken; - } - export interface GetExportRequest { - /** - * The name of the bot to export. - */ - name: Name; - /** - * The version of the bot to export. - */ - version: NumericalVersion; - /** - * The type of resource to export. - */ - resourceType: ResourceType; - /** - * The format of the exported data. - */ - exportType: ExportType; - } - export interface GetExportResponse { - /** - * The name of the bot being exported. - */ - name?: Name; - /** - * The version of the bot being exported. - */ - version?: NumericalVersion; - /** - * The type of the exported resource. - */ - resourceType?: ResourceType; - /** - * The format of the exported data. - */ - exportType?: ExportType; - /** - * The status of the export. IN_PROGRESS - The export is in progress. READY - The export is complete. FAILED - The export could not be completed. - */ - exportStatus?: ExportStatus; - /** - * If status is FAILED, Amazon Lex provides the reason that it failed to export the resource. - */ - failureReason?: String; - /** - * An S3 pre-signed URL that provides the location of the exported resource. The exported resource is a ZIP archive that contains the exported resource in JSON format. The structure of the archive may change. Your code should not rely on the archive structure. - */ - url?: String; - } - export interface GetIntentRequest { - /** - * The name of the intent. The name is case sensitive. - */ - name: IntentName; - /** - * The version of the intent. - */ - version: Version; - } - export interface GetIntentResponse { - /** - * The name of the intent. - */ - name?: IntentName; - /** - * A description of the intent. - */ - description?: Description; - /** - * An array of intent slots configured for the intent. - */ - slots?: SlotList; - /** - * An array of sample utterances configured for the intent. - */ - sampleUtterances?: IntentUtteranceList; - /** - * If defined in the bot, Amazon Lex uses prompt to confirm the intent before fulfilling the user's request. For more information, see PutIntent. - */ - confirmationPrompt?: Prompt; - /** - * If the user answers "no" to the question defined in confirmationPrompt, Amazon Lex responds with this statement to acknowledge that the intent was canceled. - */ - rejectionStatement?: Statement; - /** - * If defined in the bot, Amazon Lex uses this prompt to solicit additional user activity after the intent is fulfilled. For more information, see PutIntent. - */ - followUpPrompt?: FollowUpPrompt; - /** - * After the Lambda function specified in the fulfillmentActivity element fulfills the intent, Amazon Lex conveys this statement to the user. - */ - conclusionStatement?: Statement; - /** - * If defined in the bot, Amazon Amazon Lex invokes this Lambda function for each user input. For more information, see PutIntent. - */ - dialogCodeHook?: CodeHook; - /** - * Describes how the intent is fulfilled. For more information, see PutIntent. - */ - fulfillmentActivity?: FulfillmentActivity; - /** - * A unique identifier for a built-in intent. - */ - parentIntentSignature?: BuiltinIntentSignature; - /** - * The date that the intent was updated. When you create a resource, the creation date and the last updated date are the same. - */ - lastUpdatedDate?: Timestamp; - /** - * The date that the intent was created. - */ - createdDate?: Timestamp; - /** - * The version of the intent. - */ - version?: Version; - /** - * Checksum of the intent. - */ - checksum?: String; - } - export interface GetIntentVersionsRequest { - /** - * The name of the intent for which versions should be returned. - */ - name: IntentName; - /** - * A pagination token for fetching the next page of intent versions. If the response to this call is truncated, Amazon Lex returns a pagination token in the response. To fetch the next page of versions, specify the pagination token in the next request. - */ - nextToken?: NextToken; - /** - * The maximum number of intent versions to return in the response. The default is 10. - */ - maxResults?: MaxResults; - } - export interface GetIntentVersionsResponse { - /** - * An array of IntentMetadata objects, one for each numbered version of the intent plus one for the $LATEST version. - */ - intents?: IntentMetadataList; - /** - * A pagination token for fetching the next page of intent versions. If the response to this call is truncated, Amazon Lex returns a pagination token in the response. To fetch the next page of versions, specify the pagination token in the next request. - */ - nextToken?: NextToken; - } - export interface GetIntentsRequest { - /** - * A pagination token that fetches the next page of intents. If the response to this API call is truncated, Amazon Lex returns a pagination token in the response. To fetch the next page of intents, specify the pagination token in the next request. - */ - nextToken?: NextToken; - /** - * The maximum number of intents to return in the response. The default is 10. - */ - maxResults?: MaxResults; - /** - * Substring to match in intent names. An intent will be returned if any part of its name matches the substring. For example, "xyz" matches both "xyzabc" and "abcxyz." - */ - nameContains?: IntentName; - } - export interface GetIntentsResponse { - /** - * An array of Intent objects. For more information, see PutBot. - */ - intents?: IntentMetadataList; - /** - * If the response is truncated, the response includes a pagination token that you can specify in your next request to fetch the next page of intents. - */ - nextToken?: NextToken; - } - export interface GetSlotTypeRequest { - /** - * The name of the slot type. The name is case sensitive. - */ - name: SlotTypeName; - /** - * The version of the slot type. - */ - version: Version; - } - export interface GetSlotTypeResponse { - /** - * The name of the slot type. - */ - name?: SlotTypeName; - /** - * A description of the slot type. - */ - description?: Description; - /** - * A list of EnumerationValue objects that defines the values that the slot type can take. - */ - enumerationValues?: EnumerationValues; - /** - * The date that the slot type was updated. When you create a resource, the creation date and last update date are the same. - */ - lastUpdatedDate?: Timestamp; - /** - * The date that the slot type was created. - */ - createdDate?: Timestamp; - /** - * The version of the slot type. - */ - version?: Version; - /** - * Checksum of the $LATEST version of the slot type. - */ - checksum?: String; - /** - * The strategy that Amazon Lex uses to determine the value of the slot. For more information, see PutSlotType. - */ - valueSelectionStrategy?: SlotValueSelectionStrategy; - } - export interface GetSlotTypeVersionsRequest { - /** - * The name of the slot type for which versions should be returned. - */ - name: SlotTypeName; - /** - * A pagination token for fetching the next page of slot type versions. If the response to this call is truncated, Amazon Lex returns a pagination token in the response. To fetch the next page of versions, specify the pagination token in the next request. - */ - nextToken?: NextToken; - /** - * The maximum number of slot type versions to return in the response. The default is 10. - */ - maxResults?: MaxResults; - } - export interface GetSlotTypeVersionsResponse { - /** - * An array of SlotTypeMetadata objects, one for each numbered version of the slot type plus one for the $LATEST version. - */ - slotTypes?: SlotTypeMetadataList; - /** - * A pagination token for fetching the next page of slot type versions. If the response to this call is truncated, Amazon Lex returns a pagination token in the response. To fetch the next page of versions, specify the pagination token in the next request. - */ - nextToken?: NextToken; - } - export interface GetSlotTypesRequest { - /** - * A pagination token that fetches the next page of slot types. If the response to this API call is truncated, Amazon Lex returns a pagination token in the response. To fetch next page of slot types, specify the pagination token in the next request. - */ - nextToken?: NextToken; - /** - * The maximum number of slot types to return in the response. The default is 10. - */ - maxResults?: MaxResults; - /** - * Substring to match in slot type names. A slot type will be returned if any part of its name matches the substring. For example, "xyz" matches both "xyzabc" and "abcxyz." - */ - nameContains?: SlotTypeName; - } - export interface GetSlotTypesResponse { - /** - * An array of objects, one for each slot type, that provides information such as the name of the slot type, the version, and a description. - */ - slotTypes?: SlotTypeMetadataList; - /** - * If the response is truncated, it includes a pagination token that you can specify in your next request to fetch the next page of slot types. - */ - nextToken?: NextToken; - } - export interface GetUtterancesViewRequest { - /** - * The name of the bot for which utterance information should be returned. - */ - botName: BotName; - /** - * An array of bot versions for which utterance information should be returned. The limit is 5 versions per request. - */ - botVersions: BotVersions; - /** - * To return utterances that were recognized and handled, useDetected. To return utterances that were not recognized, use Missed. - */ - statusType: StatusType; - } - export interface GetUtterancesViewResponse { - /** - * The name of the bot for which utterance information was returned. - */ - botName?: BotName; - /** - * An array of UtteranceList objects, each containing a list of UtteranceData objects describing the utterances that were processed by your bot. The response contains a maximum of 100 UtteranceData objects for each version. - */ - utterances?: ListsOfUtterances; - } - export interface Intent { - /** - * The name of the intent. - */ - intentName: IntentName; - /** - * The version of the intent. - */ - intentVersion: Version; - } - export type IntentList = Intent[]; - export interface IntentMetadata { - /** - * The name of the intent. - */ - name?: IntentName; - /** - * A description of the intent. - */ - description?: Description; - /** - * The date that the intent was updated. When you create an intent, the creation date and last updated date are the same. - */ - lastUpdatedDate?: Timestamp; - /** - * The date that the intent was created. - */ - createdDate?: Timestamp; - /** - * The version of the intent. - */ - version?: Version; - } - export type IntentMetadataList = IntentMetadata[]; - export type IntentName = string; - export type IntentUtteranceList = Utterance[]; - export type LambdaARN = string; - export type ListOfUtterance = UtteranceData[]; - export type ListsOfUtterances = UtteranceList[]; - export type Locale = "en-US"|string; - export type LocaleList = Locale[]; - export type MaxResults = number; - export interface Message { - /** - * The content type of the message string. - */ - contentType: ContentType; - /** - * The text of the message. - */ - content: ContentString; - } - export type MessageList = Message[]; - export type MessageVersion = string; - export type Name = string; - export type NextToken = string; - export type NumericalVersion = string; - export type Priority = number; - export type ProcessBehavior = "SAVE"|"BUILD"|string; - export interface Prompt { - /** - * An array of objects, each of which provides a message string and its type. You can specify the message string in plain text or in Speech Synthesis Markup Language (SSML). - */ - messages: MessageList; - /** - * The number of times to prompt the user for information. - */ - maxAttempts: PromptMaxAttempts; - /** - * A response card. Amazon Lex uses this prompt at runtime, in the PostText API response. It substitutes session attributes and slot values for placeholders in the response card. For more information, see ex-resp-card. - */ - responseCard?: ResponseCard; - } - export type PromptMaxAttempts = number; - export interface PutBotAliasRequest { - /** - * The name of the alias. The name is not case sensitive. - */ - name: AliasName; - /** - * A description of the alias. - */ - description?: Description; - /** - * The version of the bot. - */ - botVersion: Version; - /** - * The name of the bot. - */ - botName: BotName; - /** - * Identifies a specific revision of the $LATEST version. When you create a new bot alias, leave the checksum field blank. If you specify a checksum you get a BadRequestException exception. When you want to update a bot alias, set the checksum field to the checksum of the most recent revision of the $LATEST version. If you don't specify the checksum field, or if the checksum does not match the $LATEST version, you get a PreconditionFailedException exception. - */ - checksum?: String; - } - export interface PutBotAliasResponse { - /** - * The name of the alias. - */ - name?: AliasName; - /** - * A description of the alias. - */ - description?: Description; - /** - * The version of the bot that the alias points to. - */ - botVersion?: Version; - /** - * The name of the bot that the alias points to. - */ - botName?: BotName; - /** - * The date that the bot alias was updated. When you create a resource, the creation date and the last updated date are the same. - */ - lastUpdatedDate?: Timestamp; - /** - * The date that the bot alias was created. - */ - createdDate?: Timestamp; - /** - * The checksum for the current version of the alias. - */ - checksum?: String; - } - export interface PutBotRequest { - /** - * The name of the bot. The name is not case sensitive. - */ - name: BotName; - /** - * A description of the bot. - */ - description?: Description; - /** - * An array of Intent objects. Each intent represents a command that a user can express. For example, a pizza ordering bot might support an OrderPizza intent. For more information, see how-it-works. - */ - intents?: IntentList; - /** - * When Amazon Lex doesn't understand the user's intent, it uses this message to get clarification. To specify how many times Amazon Lex should repeate the clarification prompt, use the maxAttempts field. If Amazon Lex still doesn't understand, it sends the message in the abortStatement field. When you create a clarification prompt, make sure that it suggests the correct response from the user. for example, for a bot that orders pizza and drinks, you might create this clarification prompt: "What would you like to do? You can say 'Order a pizza' or 'Order a drink.'" - */ - clarificationPrompt?: Prompt; - /** - * When Amazon Lex can't understand the user's input in context, it tries to elicit the information a few times. After that, Amazon Lex sends the message defined in abortStatement to the user, and then aborts the conversation. To set the number of retries, use the valueElicitationPrompt field for the slot type. For example, in a pizza ordering bot, Amazon Lex might ask a user "What type of crust would you like?" If the user's response is not one of the expected responses (for example, "thin crust, "deep dish," etc.), Amazon Lex tries to elicit a correct response a few more times. For example, in a pizza ordering application, OrderPizza might be one of the intents. This intent might require the CrustType slot. You specify the valueElicitationPrompt field when you create the CrustType slot. - */ - abortStatement?: Statement; - /** - * The maximum time in seconds that Amazon Lex retains the data gathered in a conversation. A user interaction session remains active for the amount of time specified. If no conversation occurs during this time, the session expires and Amazon Lex deletes any data provided before the timeout. For example, suppose that a user chooses the OrderPizza intent, but gets sidetracked halfway through placing an order. If the user doesn't complete the order within the specified time, Amazon Lex discards the slot information that it gathered, and the user must start over. If you don't include the idleSessionTTLInSeconds element in a PutBot operation request, Amazon Lex uses the default value. This is also true if the request replaces an existing bot. The default is 300 seconds (5 minutes). - */ - idleSessionTTLInSeconds?: SessionTTL; - /** - * The Amazon Polly voice ID that you want Amazon Lex to use for voice interactions with the user. The locale configured for the voice must match the locale of the bot. For more information, see Available Voices in the Amazon Polly Developer Guide. - */ - voiceId?: String; - /** - * Identifies a specific revision of the $LATEST version. When you create a new bot, leave the checksum field blank. If you specify a checksum you get a BadRequestException exception. When you want to update a bot, set the checksum field to the checksum of the most recent revision of the $LATEST version. If you don't specify the checksum field, or if the checksum does not match the $LATEST version, you get a PreconditionFailedException exception. - */ - checksum?: String; - /** - * If you set the processBehavior element to Build, Amazon Lex builds the bot so that it can be run. If you set the element to SaveAmazon Lex saves the bot, but doesn't build it. If you don't specify this value, the default value is Save. - */ - processBehavior?: ProcessBehavior; - /** - * Specifies the target locale for the bot. Any intent used in the bot must be compatible with the locale of the bot. The default is en-US. - */ - locale: Locale; - /** - * For each Amazon Lex bot created with the Amazon Lex Model Building Service, you must specify whether your use of Amazon Lex is related to a website, program, or other application that is directed or targeted, in whole or in part, to children under age 13 and subject to the Children's Online Privacy Protection Act (COPPA) by specifying true or false in the childDirected field. By specifying true in the childDirected field, you confirm that your use of Amazon Lex is related to a website, program, or other application that is directed or targeted, in whole or in part, to children under age 13 and subject to COPPA. By specifying false in the childDirected field, you confirm that your use of Amazon Lex is not related to a website, program, or other application that is directed or targeted, in whole or in part, to children under age 13 and subject to COPPA. You may not specify a default value for the childDirected field that does not accurately reflect whether your use of Amazon Lex is related to a website, program, or other application that is directed or targeted, in whole or in part, to children under age 13 and subject to COPPA. If your use of Amazon Lex relates to a website, program, or other application that is directed in whole or in part, to children under age 13, you must obtain any required verifiable parental consent under COPPA. For information regarding the use of Amazon Lex in connection with websites, programs, or other applications that are directed or targeted, in whole or in part, to children under age 13, see the Amazon Lex FAQ. - */ - childDirected: Boolean; - } - export interface PutBotResponse { - /** - * The name of the bot. - */ - name?: BotName; - /** - * A description of the bot. - */ - description?: Description; - /** - * An array of Intent objects. For more information, see PutBot. - */ - intents?: IntentList; - /** - * The prompts that Amazon Lex uses when it doesn't understand the user's intent. For more information, see PutBot. - */ - clarificationPrompt?: Prompt; - /** - * The message that Amazon Lex uses to abort a conversation. For more information, see PutBot. - */ - abortStatement?: Statement; - /** - * When you send a request to create a bot with processBehavior set to BUILD, Amazon Lex sets the status response element to BUILDING. After Amazon Lex builds the bot, it sets status to READY. If Amazon Lex can't build the bot, Amazon Lex sets status to FAILED. Amazon Lex returns the reason for the failure in the failureReason response element. When you set processBehaviorto SAVE, Amazon Lex sets the status code to NOT BUILT. - */ - status?: Status; - /** - * If status is FAILED, Amazon Lex provides the reason that it failed to build the bot. - */ - failureReason?: String; - /** - * The date that the bot was updated. When you create a resource, the creation date and last updated date are the same. - */ - lastUpdatedDate?: Timestamp; - /** - * The date that the bot was created. - */ - createdDate?: Timestamp; - /** - * The maximum length of time that Amazon Lex retains the data gathered in a conversation. For more information, see PutBot. - */ - idleSessionTTLInSeconds?: SessionTTL; - /** - * The Amazon Polly voice ID that Amazon Lex uses for voice interaction with the user. For more information, see PutBot. - */ - voiceId?: String; - /** - * Checksum of the bot that you created. - */ - checksum?: String; - /** - * The version of the bot. For a new bot, the version is always $LATEST. - */ - version?: Version; - /** - * The target locale for the bot. - */ - locale?: Locale; - /** - * For each Amazon Lex bot created with the Amazon Lex Model Building Service, you must specify whether your use of Amazon Lex is related to a website, program, or other application that is directed or targeted, in whole or in part, to children under age 13 and subject to the Children's Online Privacy Protection Act (COPPA) by specifying true or false in the childDirected field. By specifying true in the childDirected field, you confirm that your use of Amazon Lex is related to a website, program, or other application that is directed or targeted, in whole or in part, to children under age 13 and subject to COPPA. By specifying false in the childDirected field, you confirm that your use of Amazon Lex is not related to a website, program, or other application that is directed or targeted, in whole or in part, to children under age 13 and subject to COPPA. You may not specify a default value for the childDirected field that does not accurately reflect whether your use of Amazon Lex is related to a website, program, or other application that is directed or targeted, in whole or in part, to children under age 13 and subject to COPPA. If your use of Amazon Lex relates to a website, program, or other application that is directed in whole or in part, to children under age 13, you must obtain any required verifiable parental consent under COPPA. For information regarding the use of Amazon Lex in connection with websites, programs, or other applications that are directed or targeted, in whole or in part, to children under age 13, see the Amazon Lex FAQ. - */ - childDirected?: Boolean; - } - export interface PutIntentRequest { - /** - * The name of the intent. The name is not case sensitive. The name can't match a built-in intent name, or a built-in intent name with "AMAZON." removed. For example, because there is a built-in intent called AMAZON.HelpIntent, you can't create a custom intent called HelpIntent. For a list of built-in intents, see Standard Built-in Intents in the Alexa Skills Kit. - */ - name: IntentName; - /** - * A description of the intent. - */ - description?: Description; - /** - * An array of intent slots. At runtime, Amazon Lex elicits required slot values from the user using prompts defined in the slots. For more information, see how-it-works. - */ - slots?: SlotList; - /** - * An array of utterances (strings) that a user might say to signal the intent. For example, "I want {PizzaSize} pizza", "Order {Quantity} {PizzaSize} pizzas". In each utterance, a slot name is enclosed in curly braces. - */ - sampleUtterances?: IntentUtteranceList; - /** - * Prompts the user to confirm the intent. This question should have a yes or no answer. Amazon Lex uses this prompt to ensure that the user acknowledges that the intent is ready for fulfillment. For example, with the OrderPizza intent, you might want to confirm that the order is correct before placing it. For other intents, such as intents that simply respond to user questions, you might not need to ask the user for confirmation before providing the information. You you must provide both the rejectionStatement and the confirmationPrompt, or neither. - */ - confirmationPrompt?: Prompt; - /** - * When the user answers "no" to the question defined in confirmationPrompt, Amazon Lex responds with this statement to acknowledge that the intent was canceled. You must provide both the rejectionStatement and the confirmationPrompt, or neither. - */ - rejectionStatement?: Statement; - /** - * Amazon Lex uses this prompt to solicit additional activity after fulfilling an intent. For example, after the OrderPizza intent is fulfilled, you might prompt the user to order a drink. The action that Amazon Lex takes depends on the user's response, as follows: If the user says "Yes" it responds with the clarification prompt that is configured for the bot. if the user says "Yes" and continues with an utterance that triggers an intent it starts a conversation for the intent. If the user says "No" it responds with the rejection statement configured for the the follow-up prompt. If it doesn't recognize the utterance it repeats the follow-up prompt again. The followUpPrompt field and the conclusionStatement field are mutually exclusive. You can specify only one. - */ - followUpPrompt?: FollowUpPrompt; - /** - * The statement that you want Amazon Lex to convey to the user after the intent is successfully fulfilled by the Lambda function. This element is relevant only if you provide a Lambda function in the fulfillmentActivity. If you return the intent to the client application, you can't specify this element. The followUpPrompt and conclusionStatement are mutually exclusive. You can specify only one. - */ - conclusionStatement?: Statement; - /** - * Specifies a Lambda function to invoke for each user input. You can invoke this Lambda function to personalize user interaction. For example, suppose your bot determines that the user is John. Your Lambda function might retrieve John's information from a backend database and prepopulate some of the values. For example, if you find that John is gluten intolerant, you might set the corresponding intent slot, GlutenIntolerant, to true. You might find John's phone number and set the corresponding session attribute. - */ - dialogCodeHook?: CodeHook; - /** - * Required. Describes how the intent is fulfilled. For example, after a user provides all of the information for a pizza order, fulfillmentActivity defines how the bot places an order with a local pizza store. You might configure Amazon Lex to return all of the intent information to the client application, or direct it to invoke a Lambda function that can process the intent (for example, place an order with a pizzeria). - */ - fulfillmentActivity?: FulfillmentActivity; - /** - * A unique identifier for the built-in intent to base this intent on. To find the signature for an intent, see Standard Built-in Intents in the Alexa Skills Kit. - */ - parentIntentSignature?: BuiltinIntentSignature; - /** - * Identifies a specific revision of the $LATEST version. When you create a new intent, leave the checksum field blank. If you specify a checksum you get a BadRequestException exception. When you want to update a intent, set the checksum field to the checksum of the most recent revision of the $LATEST version. If you don't specify the checksum field, or if the checksum does not match the $LATEST version, you get a PreconditionFailedException exception. - */ - checksum?: String; - } - export interface PutIntentResponse { - /** - * The name of the intent. - */ - name?: IntentName; - /** - * A description of the intent. - */ - description?: Description; - /** - * An array of intent slots that are configured for the intent. - */ - slots?: SlotList; - /** - * An array of sample utterances that are configured for the intent. - */ - sampleUtterances?: IntentUtteranceList; - /** - * If defined in the intent, Amazon Lex prompts the user to confirm the intent before fulfilling it. - */ - confirmationPrompt?: Prompt; - /** - * If the user answers "no" to the question defined in confirmationPrompt Amazon Lex responds with this statement to acknowledge that the intent was canceled. - */ - rejectionStatement?: Statement; - /** - * If defined in the intent, Amazon Lex uses this prompt to solicit additional user activity after the intent is fulfilled. - */ - followUpPrompt?: FollowUpPrompt; - /** - * After the Lambda function specified in thefulfillmentActivityintent fulfills the intent, Amazon Lex conveys this statement to the user. - */ - conclusionStatement?: Statement; - /** - * If defined in the intent, Amazon Lex invokes this Lambda function for each user input. - */ - dialogCodeHook?: CodeHook; - /** - * If defined in the intent, Amazon Lex invokes this Lambda function to fulfill the intent after the user provides all of the information required by the intent. - */ - fulfillmentActivity?: FulfillmentActivity; - /** - * A unique identifier for the built-in intent that this intent is based on. - */ - parentIntentSignature?: BuiltinIntentSignature; - /** - * The date that the intent was updated. When you create a resource, the creation date and last update dates are the same. - */ - lastUpdatedDate?: Timestamp; - /** - * The date that the intent was created. - */ - createdDate?: Timestamp; - /** - * The version of the intent. For a new intent, the version is always $LATEST. - */ - version?: Version; - /** - * Checksum of the $LATESTversion of the intent created or updated. - */ - checksum?: String; - } - export interface PutSlotTypeRequest { - /** - * The name of the slot type. The name is not case sensitive. The name can't match a built-in slot type name, or a built-in slot type name with "AMAZON." removed. For example, because there is a built-in slot type called AMAZON.DATE, you can't create a custom slot type called DATE. For a list of built-in slot types, see Slot Type Reference in the Alexa Skills Kit. - */ - name: SlotTypeName; - /** - * A description of the slot type. - */ - description?: Description; - /** - * A list of EnumerationValue objects that defines the values that the slot type can take. Each value can have a list of synonyms, which are additional values that help train the machine learning model about the values that it resolves for a slot. When Amazon Lex resolves a slot value, it generates a resolution list that contains up to five possible values for the slot. If you are using a Lambda function, this resolution list is passed to the function. If you are not using a Lambda function you can choose to return the value that the user entered or the first value in the resolution list as the slot value. The valueSelectionStrategy field indicates the option to use. - */ - enumerationValues?: EnumerationValues; - /** - * Identifies a specific revision of the $LATEST version. When you create a new slot type, leave the checksum field blank. If you specify a checksum you get a BadRequestException exception. When you want to update a slot type, set the checksum field to the checksum of the most recent revision of the $LATEST version. If you don't specify the checksum field, or if the checksum does not match the $LATEST version, you get a PreconditionFailedException exception. - */ - checksum?: String; - /** - * Determines the slot resolution strategy that Amazon Lex uses to return slot type values. The field can be set to one of the following values: ORIGINAL_VALUE - Returns the value entered by the user, if the user value is similar to the slot value. TOP_RESOLUTION - If there is a resolution list for the slot, return the first value in the resolution list as the slot type value. If there is no resolution list, null is returned. If you don't specify the valueSelectionStrategy, the default is ORIGINAL_VALUE. - */ - valueSelectionStrategy?: SlotValueSelectionStrategy; - } - export interface PutSlotTypeResponse { - /** - * The name of the slot type. - */ - name?: SlotTypeName; - /** - * A description of the slot type. - */ - description?: Description; - /** - * A list of EnumerationValue objects that defines the values that the slot type can take. - */ - enumerationValues?: EnumerationValues; - /** - * The date that the slot type was updated. When you create a slot type, the creation date and last update date are the same. - */ - lastUpdatedDate?: Timestamp; - /** - * The date that the slot type was created. - */ - createdDate?: Timestamp; - /** - * The version of the slot type. For a new slot type, the version is always $LATEST. - */ - version?: Version; - /** - * Checksum of the $LATEST version of the slot type. - */ - checksum?: String; - /** - * The slot resolution strategy that Amazon Lex uses to determine the value of the slot. For more information, see PutSlotType. - */ - valueSelectionStrategy?: SlotValueSelectionStrategy; - } - export type ReferenceType = "Intent"|"Bot"|"BotAlias"|"BotChannel"|string; - export interface ResourceReference { - /** - * The name of the resource that is using the resource that you are trying to delete. - */ - name?: Name; - /** - * The version of the resource that is using the resource that you are trying to delete. - */ - version?: Version; - } - export type ResourceType = "BOT"|string; - export type ResponseCard = string; - export type SessionTTL = number; - export interface Slot { - /** - * The name of the slot. - */ - name: SlotName; - /** - * A description of the slot. - */ - description?: Description; - /** - * Specifies whether the slot is required or optional. - */ - slotConstraint: SlotConstraint; - /** - * The type of the slot, either a custom slot type that you defined or one of the built-in slot types. - */ - slotType?: CustomOrBuiltinSlotTypeName; - /** - * The version of the slot type. - */ - slotTypeVersion?: Version; - /** - * The prompt that Amazon Lex uses to elicit the slot value from the user. - */ - valueElicitationPrompt?: Prompt; - /** - * Directs Lex the order in which to elicit this slot value from the user. For example, if the intent has two slots with priorities 1 and 2, AWS Lex first elicits a value for the slot with priority 1. If multiple slots share the same priority, the order in which Lex elicits values is arbitrary. - */ - priority?: Priority; - /** - * If you know a specific pattern with which users might respond to an Amazon Lex request for a slot value, you can provide those utterances to improve accuracy. This is optional. In most cases, Amazon Lex is capable of understanding user utterances. - */ - sampleUtterances?: SlotUtteranceList; - /** - * A set of possible responses for the slot type used by text-based clients. A user chooses an option from the response card, instead of using text to reply. - */ - responseCard?: ResponseCard; - } - export type SlotConstraint = "Required"|"Optional"|string; - export type SlotList = Slot[]; - export type SlotName = string; - export interface SlotTypeMetadata { - /** - * The name of the slot type. - */ - name?: SlotTypeName; - /** - * A description of the slot type. - */ - description?: Description; - /** - * The date that the slot type was updated. When you create a resource, the creation date and last updated date are the same. - */ - lastUpdatedDate?: Timestamp; - /** - * The date that the slot type was created. - */ - createdDate?: Timestamp; - /** - * The version of the slot type. - */ - version?: Version; - } - export type SlotTypeMetadataList = SlotTypeMetadata[]; - export type SlotTypeName = string; - export type SlotUtteranceList = Utterance[]; - export type SlotValueSelectionStrategy = "ORIGINAL_VALUE"|"TOP_RESOLUTION"|string; - export interface Statement { - /** - * A collection of message objects. - */ - messages: MessageList; - /** - * At runtime, if the client is using the PostText API, Amazon Lex includes the response card in the response. It substitutes all of the session attributes and slot values for placeholders in the response card. - */ - responseCard?: ResponseCard; - } - export type Status = "BUILDING"|"READY"|"FAILED"|"NOT_BUILT"|string; - export type StatusType = "Detected"|"Missed"|string; - export type String = string; - export type SynonymList = Value[]; - export type Timestamp = Date; - export type UserId = string; - export type Utterance = string; - export interface UtteranceData { - /** - * The text that was entered by the user or the text representation of an audio clip. - */ - utteranceString?: UtteranceString; - /** - * The number of times that the utterance was processed. - */ - count?: Count; - /** - * The total number of individuals that used the utterance. - */ - distinctUsers?: Count; - /** - * The date that the utterance was first recorded. - */ - firstUtteredDate?: Timestamp; - /** - * The date that the utterance was last recorded. - */ - lastUtteredDate?: Timestamp; - } - export interface UtteranceList { - /** - * The version of the bot that processed the list. - */ - botVersion?: Version; - /** - * One or more UtteranceData objects that contain information about the utterances that have been made to a bot. The maximum number of object is 100. - */ - utterances?: ListOfUtterance; - } - export type UtteranceString = string; - export type Value = string; - export type Version = string; - /** - * A string in YYYY-MM-DD format that represents the latest possible API version that can be used in this service. Specify 'latest' to use the latest possible version. - */ - export type apiVersion = "2017-04-19"|"latest"|string; - export interface ClientApiVersions { - /** - * A string in YYYY-MM-DD format that represents the latest possible API version that can be used in this service. Specify 'latest' to use the latest possible version. - */ - apiVersion?: apiVersion; - } - export type ClientConfiguration = ServiceConfigurationOptions & ClientApiVersions; - /** - * Contains interfaces for use with the LexModelBuildingService client. - */ - export import Types = LexModelBuildingService; -} -export = LexModelBuildingService; diff --git a/workshops/monte-carlo-on-ec2-spot-fleet/src/web/node_modules/aws-sdk/clients/lexmodelbuildingservice.js b/workshops/monte-carlo-on-ec2-spot-fleet/src/web/node_modules/aws-sdk/clients/lexmodelbuildingservice.js deleted file mode 100644 index 41ff6a2a..00000000 --- a/workshops/monte-carlo-on-ec2-spot-fleet/src/web/node_modules/aws-sdk/clients/lexmodelbuildingservice.js +++ /dev/null @@ -1,18 +0,0 @@ -require('../lib/node_loader'); -var AWS = require('../lib/core'); -var Service = AWS.Service; -var apiLoader = AWS.apiLoader; - -apiLoader.services['lexmodelbuildingservice'] = {}; -AWS.LexModelBuildingService = Service.defineService('lexmodelbuildingservice', ['2017-04-19']); -Object.defineProperty(apiLoader.services['lexmodelbuildingservice'], '2017-04-19', { - get: function get() { - var model = require('../apis/lex-models-2017-04-19.min.json'); - model.paginators = require('../apis/lex-models-2017-04-19.paginators.json').pagination; - return model; - }, - enumerable: true, - configurable: true -}); - -module.exports = AWS.LexModelBuildingService; diff --git a/workshops/monte-carlo-on-ec2-spot-fleet/src/web/node_modules/aws-sdk/clients/lexruntime.d.ts b/workshops/monte-carlo-on-ec2-spot-fleet/src/web/node_modules/aws-sdk/clients/lexruntime.d.ts deleted file mode 100644 index 2f5a567f..00000000 --- a/workshops/monte-carlo-on-ec2-spot-fleet/src/web/node_modules/aws-sdk/clients/lexruntime.d.ts +++ /dev/null @@ -1,243 +0,0 @@ -import {Request} from '../lib/request'; -import {Response} from '../lib/response'; -import {AWSError} from '../lib/error'; -import {Service} from '../lib/service'; -import {ServiceConfigurationOptions} from '../lib/service'; -import {ConfigBase as Config} from '../lib/config'; -import {Readable} from 'stream'; -interface Blob {} -declare class LexRuntime extends Service { - /** - * Constructs a service object. This object has one method for each API operation. - */ - constructor(options?: LexRuntime.Types.ClientConfiguration) - config: Config & LexRuntime.Types.ClientConfiguration; - /** - * Sends user input (text or speech) to Amazon Lex. Clients use this API to send text and audio requests to Amazon Lex at runtime. Amazon Lex interprets the user input using the machine learning model that it built for the bot. The PostContent operation supports audio input at 8kHz and 16kHz. You can use 8kHz audio to achieve higher speech recognition accuracy in telephone audio applications. In response, Amazon Lex returns the next message to convey to the user. Consider the following example messages: For a user input "I would like a pizza," Amazon Lex might return a response with a message eliciting slot data (for example, PizzaSize): "What size pizza would you like?". After the user provides all of the pizza order information, Amazon Lex might return a response with a message to get user confirmation: "Order the pizza?". After the user replies "Yes" to the confirmation prompt, Amazon Lex might return a conclusion statement: "Thank you, your cheese pizza has been ordered.". Not all Amazon Lex messages require a response from the user. For example, conclusion statements do not require a response. Some messages require only a yes or no response. In addition to the message, Amazon Lex provides additional context about the message in the response that you can use to enhance client behavior, such as displaying the appropriate client user interface. Consider the following examples: If the message is to elicit slot data, Amazon Lex returns the following context information: x-amz-lex-dialog-state header set to ElicitSlot x-amz-lex-intent-name header set to the intent name in the current context x-amz-lex-slot-to-elicit header set to the slot name for which the message is eliciting information x-amz-lex-slots header set to a map of slots configured for the intent with their current values If the message is a confirmation prompt, the x-amz-lex-dialog-state header is set to Confirmation and the x-amz-lex-slot-to-elicit header is omitted. If the message is a clarification prompt configured for the intent, indicating that the user intent is not understood, the x-amz-dialog-state header is set to ElicitIntent and the x-amz-slot-to-elicit header is omitted. In addition, Amazon Lex also returns your application-specific sessionAttributes. For more information, see Managing Conversation Context. - */ - postContent(params: LexRuntime.Types.PostContentRequest, callback?: (err: AWSError, data: LexRuntime.Types.PostContentResponse) => void): Request; - /** - * Sends user input (text or speech) to Amazon Lex. Clients use this API to send text and audio requests to Amazon Lex at runtime. Amazon Lex interprets the user input using the machine learning model that it built for the bot. The PostContent operation supports audio input at 8kHz and 16kHz. You can use 8kHz audio to achieve higher speech recognition accuracy in telephone audio applications. In response, Amazon Lex returns the next message to convey to the user. Consider the following example messages: For a user input "I would like a pizza," Amazon Lex might return a response with a message eliciting slot data (for example, PizzaSize): "What size pizza would you like?". After the user provides all of the pizza order information, Amazon Lex might return a response with a message to get user confirmation: "Order the pizza?". After the user replies "Yes" to the confirmation prompt, Amazon Lex might return a conclusion statement: "Thank you, your cheese pizza has been ordered.". Not all Amazon Lex messages require a response from the user. For example, conclusion statements do not require a response. Some messages require only a yes or no response. In addition to the message, Amazon Lex provides additional context about the message in the response that you can use to enhance client behavior, such as displaying the appropriate client user interface. Consider the following examples: If the message is to elicit slot data, Amazon Lex returns the following context information: x-amz-lex-dialog-state header set to ElicitSlot x-amz-lex-intent-name header set to the intent name in the current context x-amz-lex-slot-to-elicit header set to the slot name for which the message is eliciting information x-amz-lex-slots header set to a map of slots configured for the intent with their current values If the message is a confirmation prompt, the x-amz-lex-dialog-state header is set to Confirmation and the x-amz-lex-slot-to-elicit header is omitted. If the message is a clarification prompt configured for the intent, indicating that the user intent is not understood, the x-amz-dialog-state header is set to ElicitIntent and the x-amz-slot-to-elicit header is omitted. In addition, Amazon Lex also returns your application-specific sessionAttributes. For more information, see Managing Conversation Context. - */ - postContent(callback?: (err: AWSError, data: LexRuntime.Types.PostContentResponse) => void): Request; - /** - * Sends user input (text-only) to Amazon Lex. Client applications can use this API to send requests to Amazon Lex at runtime. Amazon Lex then interprets the user input using the machine learning model it built for the bot. In response, Amazon Lex returns the next message to convey to the user an optional responseCard to display. Consider the following example messages: For a user input "I would like a pizza", Amazon Lex might return a response with a message eliciting slot data (for example, PizzaSize): "What size pizza would you like?" After the user provides all of the pizza order information, Amazon Lex might return a response with a message to obtain user confirmation "Proceed with the pizza order?". After the user replies to a confirmation prompt with a "yes", Amazon Lex might return a conclusion statement: "Thank you, your cheese pizza has been ordered.". Not all Amazon Lex messages require a user response. For example, a conclusion statement does not require a response. Some messages require only a "yes" or "no" user response. In addition to the message, Amazon Lex provides additional context about the message in the response that you might use to enhance client behavior, for example, to display the appropriate client user interface. These are the slotToElicit, dialogState, intentName, and slots fields in the response. Consider the following examples: If the message is to elicit slot data, Amazon Lex returns the following context information: dialogState set to ElicitSlot intentName set to the intent name in the current context slotToElicit set to the slot name for which the message is eliciting information slots set to a map of slots, configured for the intent, with currently known values If the message is a confirmation prompt, the dialogState is set to ConfirmIntent and SlotToElicit is set to null. If the message is a clarification prompt (configured for the intent) that indicates that user intent is not understood, the dialogState is set to ElicitIntent and slotToElicit is set to null. In addition, Amazon Lex also returns your application-specific sessionAttributes. For more information, see Managing Conversation Context. - */ - postText(params: LexRuntime.Types.PostTextRequest, callback?: (err: AWSError, data: LexRuntime.Types.PostTextResponse) => void): Request; - /** - * Sends user input (text-only) to Amazon Lex. Client applications can use this API to send requests to Amazon Lex at runtime. Amazon Lex then interprets the user input using the machine learning model it built for the bot. In response, Amazon Lex returns the next message to convey to the user an optional responseCard to display. Consider the following example messages: For a user input "I would like a pizza", Amazon Lex might return a response with a message eliciting slot data (for example, PizzaSize): "What size pizza would you like?" After the user provides all of the pizza order information, Amazon Lex might return a response with a message to obtain user confirmation "Proceed with the pizza order?". After the user replies to a confirmation prompt with a "yes", Amazon Lex might return a conclusion statement: "Thank you, your cheese pizza has been ordered.". Not all Amazon Lex messages require a user response. For example, a conclusion statement does not require a response. Some messages require only a "yes" or "no" user response. In addition to the message, Amazon Lex provides additional context about the message in the response that you might use to enhance client behavior, for example, to display the appropriate client user interface. These are the slotToElicit, dialogState, intentName, and slots fields in the response. Consider the following examples: If the message is to elicit slot data, Amazon Lex returns the following context information: dialogState set to ElicitSlot intentName set to the intent name in the current context slotToElicit set to the slot name for which the message is eliciting information slots set to a map of slots, configured for the intent, with currently known values If the message is a confirmation prompt, the dialogState is set to ConfirmIntent and SlotToElicit is set to null. If the message is a clarification prompt (configured for the intent) that indicates that user intent is not understood, the dialogState is set to ElicitIntent and slotToElicit is set to null. In addition, Amazon Lex also returns your application-specific sessionAttributes. For more information, see Managing Conversation Context. - */ - postText(callback?: (err: AWSError, data: LexRuntime.Types.PostTextResponse) => void): Request; -} -declare namespace LexRuntime { - export type Accept = string; - export type AttributesString = string; - export type BlobStream = Buffer|Uint8Array|Blob|string|Readable; - export type BotAlias = string; - export type BotName = string; - export interface Button { - /** - * Text that is visible to the user on the button. - */ - text: ButtonTextStringWithLength; - /** - * The value sent to Amazon Lex when a user chooses the button. For example, consider button text "NYC." When the user chooses the button, the value sent can be "New York City." - */ - value: ButtonValueStringWithLength; - } - export type ButtonTextStringWithLength = string; - export type ButtonValueStringWithLength = string; - export type ContentType = "application/vnd.amazonaws.card.generic"|string; - export type DialogState = "ElicitIntent"|"ConfirmIntent"|"ElicitSlot"|"Fulfilled"|"ReadyForFulfillment"|"Failed"|string; - export type ErrorMessage = string; - export interface GenericAttachment { - /** - * The title of the option. - */ - title?: StringWithLength; - /** - * The subtitle shown below the title. - */ - subTitle?: StringWithLength; - /** - * The URL of an attachment to the response card. - */ - attachmentLinkUrl?: StringUrlWithLength; - /** - * The URL of an image that is displayed to the user. - */ - imageUrl?: StringUrlWithLength; - /** - * The list of options to show to the user. - */ - buttons?: listOfButtons; - } - export type HttpContentType = string; - export type IntentName = string; - export interface PostContentRequest { - /** - * Name of the Amazon Lex bot. - */ - botName: BotName; - /** - * Alias of the Amazon Lex bot. - */ - botAlias: BotAlias; - /** - * The ID of the client application user. Amazon Lex uses this to identify a user's conversation with your bot. At runtime, each request must contain the userID field. To decide the user ID to use for your application, consider the following factors. The userID field must not contain any personally identifiable information of the user, for example, name, personal identification numbers, or other end user personal information. If you want a user to start a conversation on one device and continue on another device, use a user-specific identifier. If you want the same user to be able to have two independent conversations on two different devices, choose a device-specific identifier. A user can't have two independent conversations with two different versions of the same bot. For example, a user can't have a conversation with the PROD and BETA versions of the same bot. If you anticipate that a user will need to have conversation with two different versions, for example, while testing, include the bot alias in the user ID to separate the two conversations. - */ - userId: UserId; - /** - * You pass this value as the x-amz-lex-session-attributes HTTP header. Application-specific information passed between Amazon Lex and a client application. The value must be a JSON serialized and base64 encoded map with string keys and values. The total size of the sessionAttributes and requestAttributes headers is limited to 12 KB. For more information, see Setting Session Attributes. - */ - sessionAttributes?: AttributesString; - /** - * You pass this value as the x-amz-lex-request-attributes HTTP header. Request-specific information passed between Amazon Lex and a client application. The value must be a JSON serialized and base64 encoded map with string keys and values. The total size of the requestAttributes and sessionAttributes headers is limited to 12 KB. The namespace x-amz-lex: is reserved for special attributes. Don't create any request attributes with the prefix x-amz-lex:. For more information, see Setting Request Attributes. - */ - requestAttributes?: AttributesString; - /** - * You pass this value as the Content-Type HTTP header. Indicates the audio format or text. The header value must start with one of the following prefixes: PCM format, audio data must be in little-endian byte order. audio/l16; rate=16000; channels=1 audio/x-l16; sample-rate=16000; channel-count=1 audio/lpcm; sample-rate=8000; sample-size-bits=16; channel-count=1; is-big-endian=false Opus format audio/x-cbr-opus-with-preamble; preamble-size=0; bit-rate=256000; frame-size-milliseconds=4 Text format text/plain; charset=utf-8 - */ - contentType: HttpContentType; - /** - * You pass this value as the Accept HTTP header. The message Amazon Lex returns in the response can be either text or speech based on the Accept HTTP header value in the request. If the value is text/plain; charset=utf-8, Amazon Lex returns text in the response. If the value begins with audio/, Amazon Lex returns speech in the response. Amazon Lex uses Amazon Polly to generate the speech (using the configuration you specified in the Accept header). For example, if you specify audio/mpeg as the value, Amazon Lex returns speech in the MPEG format. The following are the accepted values: audio/mpeg audio/ogg audio/pcm text/plain; charset=utf-8 audio/* (defaults to mpeg) - */ - accept?: Accept; - /** - * User input in PCM or Opus audio format or text format as described in the Content-Type HTTP header. You can stream audio data to Amazon Lex or you can create a local buffer that captures all of the audio data before sending. In general, you get better performance if you stream audio data rather than buffering the data locally. - */ - inputStream: BlobStream; - } - export interface PostContentResponse { - /** - * Content type as specified in the Accept HTTP header in the request. - */ - contentType?: HttpContentType; - /** - * Current user intent that Amazon Lex is aware of. - */ - intentName?: IntentName; - /** - * Map of zero or more intent slots (name/value pairs) Amazon Lex detected from the user input during the conversation. Amazon Lex creates a resolution list containing likely values for a slot. The value that it returns is determined by the valueSelectionStrategy selected when the slot type was created or updated. If valueSelectionStrategy is set to ORIGINAL_VALUE, the value provided by the user is returned, if the user value is similar to the slot values. If valueSelectionStrategy is set to TOP_RESOLUTION Amazon Lex returns the first value in the resolution list or, if there is no resolution list, null. If you don't specify a valueSelectionStrategy, the default is ORIGINAL_VALUE. - */ - slots?: String; - /** - * Map of key/value pairs representing the session-specific context information. - */ - sessionAttributes?: String; - /** - * Message to convey to the user. It can come from the bot's configuration or a code hook (Lambda function). If the current intent is not configured with a code hook or if the code hook returned Delegate as the dialogAction.type in its response, then Amazon Lex decides the next course of action and selects an appropriate message from the bot configuration based on the current user interaction context. For example, if Amazon Lex is not able to understand the user input, it uses a clarification prompt message (For more information, see the Error Handling section in the Amazon Lex console). Another example: if the intent requires confirmation before fulfillment, then Amazon Lex uses the confirmation prompt message in the intent configuration. If the code hook returns a message, Amazon Lex passes it as-is in its response to the client. - */ - message?: Text; - /** - * Identifies the current state of the user interaction. Amazon Lex returns one of the following values as dialogState. The client can optionally use this information to customize the user interface. ElicitIntent - Amazon Lex wants to elicit the user's intent. Consider the following examples: For example, a user might utter an intent ("I want to order a pizza"). If Amazon Lex cannot infer the user intent from this utterance, it will return this dialog state. ConfirmIntent - Amazon Lex is expecting a "yes" or "no" response. For example, Amazon Lex wants user confirmation before fulfilling an intent. Instead of a simple "yes" or "no" response, a user might respond with additional information. For example, "yes, but make it a thick crust pizza" or "no, I want to order a drink." Amazon Lex can process such additional information (in these examples, update the crust type slot or change the intent from OrderPizza to OrderDrink). ElicitSlot - Amazon Lex is expecting the value of a slot for the current intent. For example, suppose that in the response Amazon Lex sends this message: "What size pizza would you like?". A user might reply with the slot value (e.g., "medium"). The user might also provide additional information in the response (e.g., "medium thick crust pizza"). Amazon Lex can process such additional information appropriately. Fulfilled - Conveys that the Lambda function has successfully fulfilled the intent. ReadyForFulfillment - Conveys that the client has to fulfill the request. Failed - Conveys that the conversation with the user failed. This can happen for various reasons, including that the user does not provide an appropriate response to prompts from the service (you can configure how many times Amazon Lex can prompt a user for specific information), or if the Lambda function fails to fulfill the intent. - */ - dialogState?: DialogState; - /** - * If the dialogState value is ElicitSlot, returns the name of the slot for which Amazon Lex is eliciting a value. - */ - slotToElicit?: String; - /** - * The text used to process the request. If the input was an audio stream, the inputTranscript field contains the text extracted from the audio stream. This is the text that is actually processed to recognize intents and slot values. You can use this information to determine if Amazon Lex is correctly processing the audio that you send. - */ - inputTranscript?: String; - /** - * The prompt (or statement) to convey to the user. This is based on the bot configuration and context. For example, if Amazon Lex did not understand the user intent, it sends the clarificationPrompt configured for the bot. If the intent requires confirmation before taking the fulfillment action, it sends the confirmationPrompt. Another example: Suppose that the Lambda function successfully fulfilled the intent, and sent a message to convey to the user. Then Amazon Lex sends that message in the response. - */ - audioStream?: BlobStream; - } - export interface PostTextRequest { - /** - * The name of the Amazon Lex bot. - */ - botName: BotName; - /** - * The alias of the Amazon Lex bot. - */ - botAlias: BotAlias; - /** - * The ID of the client application user. Amazon Lex uses this to identify a user's conversation with your bot. At runtime, each request must contain the userID field. To decide the user ID to use for your application, consider the following factors. The userID field must not contain any personally identifiable information of the user, for example, name, personal identification numbers, or other end user personal information. If you want a user to start a conversation on one device and continue on another device, use a user-specific identifier. If you want the same user to be able to have two independent conversations on two different devices, choose a device-specific identifier. A user can't have two independent conversations with two different versions of the same bot. For example, a user can't have a conversation with the PROD and BETA versions of the same bot. If you anticipate that a user will need to have conversation with two different versions, for example, while testing, include the bot alias in the user ID to separate the two conversations. - */ - userId: UserId; - /** - * Application-specific information passed between Amazon Lex and a client application. For more information, see Setting Session Attributes. - */ - sessionAttributes?: StringMap; - /** - * Request-specific information passed between Amazon Lex and a client application. The namespace x-amz-lex: is reserved for special attributes. Don't create any request attributes with the prefix x-amz-lex:. For more information, see Setting Request Attributes. - */ - requestAttributes?: StringMap; - /** - * The text that the user entered (Amazon Lex interprets this text). - */ - inputText: Text; - } - export interface PostTextResponse { - /** - * The current user intent that Amazon Lex is aware of. - */ - intentName?: IntentName; - /** - * The intent slots that Amazon Lex detected from the user input in the conversation. Amazon Lex creates a resolution list containing likely values for a slot. The value that it returns is determined by the valueSelectionStrategy selected when the slot type was created or updated. If valueSelectionStrategy is set to ORIGINAL_VALUE, the value provided by the user is returned, if the user value is similar to the slot values. If valueSelectionStrategy is set to TOP_RESOLUTION Amazon Lex returns the first value in the resolution list or, if there is no resolution list, null. If you don't specify a valueSelectionStrategy, the default is ORIGINAL_VALUE. - */ - slots?: StringMap; - /** - * A map of key-value pairs representing the session-specific context information. - */ - sessionAttributes?: StringMap; - /** - * A message to convey to the user. It can come from the bot's configuration or a code hook (Lambda function). If the current intent is not configured with a code hook or the code hook returned Delegate as the dialogAction.type in its response, then Amazon Lex decides the next course of action and selects an appropriate message from the bot configuration based on the current user interaction context. For example, if Amazon Lex is not able to understand the user input, it uses a clarification prompt message (for more information, see the Error Handling section in the Amazon Lex console). Another example: if the intent requires confirmation before fulfillment, then Amazon Lex uses the confirmation prompt message in the intent configuration. If the code hook returns a message, Amazon Lex passes it as-is in its response to the client. - */ - message?: Text; - /** - * Identifies the current state of the user interaction. Amazon Lex returns one of the following values as dialogState. The client can optionally use this information to customize the user interface. ElicitIntent - Amazon Lex wants to elicit user intent. For example, a user might utter an intent ("I want to order a pizza"). If Amazon Lex cannot infer the user intent from this utterance, it will return this dialogState. ConfirmIntent - Amazon Lex is expecting a "yes" or "no" response. For example, Amazon Lex wants user confirmation before fulfilling an intent. Instead of a simple "yes" or "no," a user might respond with additional information. For example, "yes, but make it thick crust pizza" or "no, I want to order a drink". Amazon Lex can process such additional information (in these examples, update the crust type slot value, or change intent from OrderPizza to OrderDrink). ElicitSlot - Amazon Lex is expecting a slot value for the current intent. For example, suppose that in the response Amazon Lex sends this message: "What size pizza would you like?". A user might reply with the slot value (e.g., "medium"). The user might also provide additional information in the response (e.g., "medium thick crust pizza"). Amazon Lex can process such additional information appropriately. Fulfilled - Conveys that the Lambda function configured for the intent has successfully fulfilled the intent. ReadyForFulfillment - Conveys that the client has to fulfill the intent. Failed - Conveys that the conversation with the user failed. This can happen for various reasons including that the user did not provide an appropriate response to prompts from the service (you can configure how many times Amazon Lex can prompt a user for specific information), or the Lambda function failed to fulfill the intent. - */ - dialogState?: DialogState; - /** - * If the dialogState value is ElicitSlot, returns the name of the slot for which Amazon Lex is eliciting a value. - */ - slotToElicit?: String; - /** - * Represents the options that the user has to respond to the current prompt. Response Card can come from the bot configuration (in the Amazon Lex console, choose the settings button next to a slot) or from a code hook (Lambda function). - */ - responseCard?: ResponseCard; - } - export interface ResponseCard { - /** - * The version of the response card format. - */ - version?: String; - /** - * The content type of the response. - */ - contentType?: ContentType; - /** - * An array of attachment objects representing options. - */ - genericAttachments?: genericAttachmentList; - } - export type String = string; - export type StringMap = {[key: string]: String}; - export type StringUrlWithLength = string; - export type StringWithLength = string; - export type Text = string; - export type UserId = string; - export type genericAttachmentList = GenericAttachment[]; - export type listOfButtons = Button[]; - /** - * A string in YYYY-MM-DD format that represents the latest possible API version that can be used in this service. Specify 'latest' to use the latest possible version. - */ - export type apiVersion = "2016-11-28"|"latest"|string; - export interface ClientApiVersions { - /** - * A string in YYYY-MM-DD format that represents the latest possible API version that can be used in this service. Specify 'latest' to use the latest possible version. - */ - apiVersion?: apiVersion; - } - export type ClientConfiguration = ServiceConfigurationOptions & ClientApiVersions; - /** - * Contains interfaces for use with the LexRuntime client. - */ - export import Types = LexRuntime; -} -export = LexRuntime; diff --git a/workshops/monte-carlo-on-ec2-spot-fleet/src/web/node_modules/aws-sdk/clients/lexruntime.js b/workshops/monte-carlo-on-ec2-spot-fleet/src/web/node_modules/aws-sdk/clients/lexruntime.js deleted file mode 100644 index 77add98f..00000000 --- a/workshops/monte-carlo-on-ec2-spot-fleet/src/web/node_modules/aws-sdk/clients/lexruntime.js +++ /dev/null @@ -1,18 +0,0 @@ -require('../lib/node_loader'); -var AWS = require('../lib/core'); -var Service = AWS.Service; -var apiLoader = AWS.apiLoader; - -apiLoader.services['lexruntime'] = {}; -AWS.LexRuntime = Service.defineService('lexruntime', ['2016-11-28']); -Object.defineProperty(apiLoader.services['lexruntime'], '2016-11-28', { - get: function get() { - var model = require('../apis/runtime.lex-2016-11-28.min.json'); - model.paginators = require('../apis/runtime.lex-2016-11-28.paginators.json').pagination; - return model; - }, - enumerable: true, - configurable: true -}); - -module.exports = AWS.LexRuntime; diff --git a/workshops/monte-carlo-on-ec2-spot-fleet/src/web/node_modules/aws-sdk/clients/lightsail.d.ts b/workshops/monte-carlo-on-ec2-spot-fleet/src/web/node_modules/aws-sdk/clients/lightsail.d.ts deleted file mode 100644 index 33e47ee1..00000000 --- a/workshops/monte-carlo-on-ec2-spot-fleet/src/web/node_modules/aws-sdk/clients/lightsail.d.ts +++ /dev/null @@ -1,1860 +0,0 @@ -import {Request} from '../lib/request'; -import {Response} from '../lib/response'; -import {AWSError} from '../lib/error'; -import {Service} from '../lib/service'; -import {ServiceConfigurationOptions} from '../lib/service'; -import {ConfigBase as Config} from '../lib/config'; -interface Blob {} -declare class Lightsail extends Service { - /** - * Constructs a service object. This object has one method for each API operation. - */ - constructor(options?: Lightsail.Types.ClientConfiguration) - config: Config & Lightsail.Types.ClientConfiguration; - /** - * Allocates a static IP address. - */ - allocateStaticIp(params: Lightsail.Types.AllocateStaticIpRequest, callback?: (err: AWSError, data: Lightsail.Types.AllocateStaticIpResult) => void): Request; - /** - * Allocates a static IP address. - */ - allocateStaticIp(callback?: (err: AWSError, data: Lightsail.Types.AllocateStaticIpResult) => void): Request; - /** - * Attaches a static IP address to a specific Amazon Lightsail instance. - */ - attachStaticIp(params: Lightsail.Types.AttachStaticIpRequest, callback?: (err: AWSError, data: Lightsail.Types.AttachStaticIpResult) => void): Request; - /** - * Attaches a static IP address to a specific Amazon Lightsail instance. - */ - attachStaticIp(callback?: (err: AWSError, data: Lightsail.Types.AttachStaticIpResult) => void): Request; - /** - * Closes the public ports on a specific Amazon Lightsail instance. - */ - closeInstancePublicPorts(params: Lightsail.Types.CloseInstancePublicPortsRequest, callback?: (err: AWSError, data: Lightsail.Types.CloseInstancePublicPortsResult) => void): Request; - /** - * Closes the public ports on a specific Amazon Lightsail instance. - */ - closeInstancePublicPorts(callback?: (err: AWSError, data: Lightsail.Types.CloseInstancePublicPortsResult) => void): Request; - /** - * Creates a domain resource for the specified domain (e.g., example.com). - */ - createDomain(params: Lightsail.Types.CreateDomainRequest, callback?: (err: AWSError, data: Lightsail.Types.CreateDomainResult) => void): Request; - /** - * Creates a domain resource for the specified domain (e.g., example.com). - */ - createDomain(callback?: (err: AWSError, data: Lightsail.Types.CreateDomainResult) => void): Request; - /** - * Creates one of the following entry records associated with the domain: A record, CNAME record, TXT record, or MX record. - */ - createDomainEntry(params: Lightsail.Types.CreateDomainEntryRequest, callback?: (err: AWSError, data: Lightsail.Types.CreateDomainEntryResult) => void): Request; - /** - * Creates one of the following entry records associated with the domain: A record, CNAME record, TXT record, or MX record. - */ - createDomainEntry(callback?: (err: AWSError, data: Lightsail.Types.CreateDomainEntryResult) => void): Request; - /** - * Creates a snapshot of a specific virtual private server, or instance. You can use a snapshot to create a new instance that is based on that snapshot. - */ - createInstanceSnapshot(params: Lightsail.Types.CreateInstanceSnapshotRequest, callback?: (err: AWSError, data: Lightsail.Types.CreateInstanceSnapshotResult) => void): Request; - /** - * Creates a snapshot of a specific virtual private server, or instance. You can use a snapshot to create a new instance that is based on that snapshot. - */ - createInstanceSnapshot(callback?: (err: AWSError, data: Lightsail.Types.CreateInstanceSnapshotResult) => void): Request; - /** - * Creates one or more Amazon Lightsail virtual private servers, or instances. - */ - createInstances(params: Lightsail.Types.CreateInstancesRequest, callback?: (err: AWSError, data: Lightsail.Types.CreateInstancesResult) => void): Request; - /** - * Creates one or more Amazon Lightsail virtual private servers, or instances. - */ - createInstances(callback?: (err: AWSError, data: Lightsail.Types.CreateInstancesResult) => void): Request; - /** - * Uses a specific snapshot as a blueprint for creating one or more new instances that are based on that identical configuration. - */ - createInstancesFromSnapshot(params: Lightsail.Types.CreateInstancesFromSnapshotRequest, callback?: (err: AWSError, data: Lightsail.Types.CreateInstancesFromSnapshotResult) => void): Request; - /** - * Uses a specific snapshot as a blueprint for creating one or more new instances that are based on that identical configuration. - */ - createInstancesFromSnapshot(callback?: (err: AWSError, data: Lightsail.Types.CreateInstancesFromSnapshotResult) => void): Request; - /** - * Creates sn SSH key pair. - */ - createKeyPair(params: Lightsail.Types.CreateKeyPairRequest, callback?: (err: AWSError, data: Lightsail.Types.CreateKeyPairResult) => void): Request; - /** - * Creates sn SSH key pair. - */ - createKeyPair(callback?: (err: AWSError, data: Lightsail.Types.CreateKeyPairResult) => void): Request; - /** - * Deletes the specified domain recordset and all of its domain records. - */ - deleteDomain(params: Lightsail.Types.DeleteDomainRequest, callback?: (err: AWSError, data: Lightsail.Types.DeleteDomainResult) => void): Request; - /** - * Deletes the specified domain recordset and all of its domain records. - */ - deleteDomain(callback?: (err: AWSError, data: Lightsail.Types.DeleteDomainResult) => void): Request; - /** - * Deletes a specific domain entry. - */ - deleteDomainEntry(params: Lightsail.Types.DeleteDomainEntryRequest, callback?: (err: AWSError, data: Lightsail.Types.DeleteDomainEntryResult) => void): Request; - /** - * Deletes a specific domain entry. - */ - deleteDomainEntry(callback?: (err: AWSError, data: Lightsail.Types.DeleteDomainEntryResult) => void): Request; - /** - * Deletes a specific Amazon Lightsail virtual private server, or instance. - */ - deleteInstance(params: Lightsail.Types.DeleteInstanceRequest, callback?: (err: AWSError, data: Lightsail.Types.DeleteInstanceResult) => void): Request; - /** - * Deletes a specific Amazon Lightsail virtual private server, or instance. - */ - deleteInstance(callback?: (err: AWSError, data: Lightsail.Types.DeleteInstanceResult) => void): Request; - /** - * Deletes a specific snapshot of a virtual private server (or instance). - */ - deleteInstanceSnapshot(params: Lightsail.Types.DeleteInstanceSnapshotRequest, callback?: (err: AWSError, data: Lightsail.Types.DeleteInstanceSnapshotResult) => void): Request; - /** - * Deletes a specific snapshot of a virtual private server (or instance). - */ - deleteInstanceSnapshot(callback?: (err: AWSError, data: Lightsail.Types.DeleteInstanceSnapshotResult) => void): Request; - /** - * Deletes a specific SSH key pair. - */ - deleteKeyPair(params: Lightsail.Types.DeleteKeyPairRequest, callback?: (err: AWSError, data: Lightsail.Types.DeleteKeyPairResult) => void): Request; - /** - * Deletes a specific SSH key pair. - */ - deleteKeyPair(callback?: (err: AWSError, data: Lightsail.Types.DeleteKeyPairResult) => void): Request; - /** - * Detaches a static IP from the Amazon Lightsail instance to which it is attached. - */ - detachStaticIp(params: Lightsail.Types.DetachStaticIpRequest, callback?: (err: AWSError, data: Lightsail.Types.DetachStaticIpResult) => void): Request; - /** - * Detaches a static IP from the Amazon Lightsail instance to which it is attached. - */ - detachStaticIp(callback?: (err: AWSError, data: Lightsail.Types.DetachStaticIpResult) => void): Request; - /** - * Downloads the default SSH key pair from the user's account. - */ - downloadDefaultKeyPair(params: Lightsail.Types.DownloadDefaultKeyPairRequest, callback?: (err: AWSError, data: Lightsail.Types.DownloadDefaultKeyPairResult) => void): Request; - /** - * Downloads the default SSH key pair from the user's account. - */ - downloadDefaultKeyPair(callback?: (err: AWSError, data: Lightsail.Types.DownloadDefaultKeyPairResult) => void): Request; - /** - * Returns the names of all active (not deleted) resources. - */ - getActiveNames(params: Lightsail.Types.GetActiveNamesRequest, callback?: (err: AWSError, data: Lightsail.Types.GetActiveNamesResult) => void): Request; - /** - * Returns the names of all active (not deleted) resources. - */ - getActiveNames(callback?: (err: AWSError, data: Lightsail.Types.GetActiveNamesResult) => void): Request; - /** - * Returns the list of available instance images, or blueprints. You can use a blueprint to create a new virtual private server already running a specific operating system, as well as a preinstalled app or development stack. The software each instance is running depends on the blueprint image you choose. - */ - getBlueprints(params: Lightsail.Types.GetBlueprintsRequest, callback?: (err: AWSError, data: Lightsail.Types.GetBlueprintsResult) => void): Request; - /** - * Returns the list of available instance images, or blueprints. You can use a blueprint to create a new virtual private server already running a specific operating system, as well as a preinstalled app or development stack. The software each instance is running depends on the blueprint image you choose. - */ - getBlueprints(callback?: (err: AWSError, data: Lightsail.Types.GetBlueprintsResult) => void): Request; - /** - * Returns the list of bundles that are available for purchase. A bundle describes the specs for your virtual private server (or instance). - */ - getBundles(params: Lightsail.Types.GetBundlesRequest, callback?: (err: AWSError, data: Lightsail.Types.GetBundlesResult) => void): Request; - /** - * Returns the list of bundles that are available for purchase. A bundle describes the specs for your virtual private server (or instance). - */ - getBundles(callback?: (err: AWSError, data: Lightsail.Types.GetBundlesResult) => void): Request; - /** - * Returns information about a specific domain recordset. - */ - getDomain(params: Lightsail.Types.GetDomainRequest, callback?: (err: AWSError, data: Lightsail.Types.GetDomainResult) => void): Request; - /** - * Returns information about a specific domain recordset. - */ - getDomain(callback?: (err: AWSError, data: Lightsail.Types.GetDomainResult) => void): Request; - /** - * Returns a list of all domains in the user's account. - */ - getDomains(params: Lightsail.Types.GetDomainsRequest, callback?: (err: AWSError, data: Lightsail.Types.GetDomainsResult) => void): Request; - /** - * Returns a list of all domains in the user's account. - */ - getDomains(callback?: (err: AWSError, data: Lightsail.Types.GetDomainsResult) => void): Request; - /** - * Returns information about a specific Amazon Lightsail instance, which is a virtual private server. - */ - getInstance(params: Lightsail.Types.GetInstanceRequest, callback?: (err: AWSError, data: Lightsail.Types.GetInstanceResult) => void): Request; - /** - * Returns information about a specific Amazon Lightsail instance, which is a virtual private server. - */ - getInstance(callback?: (err: AWSError, data: Lightsail.Types.GetInstanceResult) => void): Request; - /** - * Returns temporary SSH keys you can use to connect to a specific virtual private server, or instance. - */ - getInstanceAccessDetails(params: Lightsail.Types.GetInstanceAccessDetailsRequest, callback?: (err: AWSError, data: Lightsail.Types.GetInstanceAccessDetailsResult) => void): Request; - /** - * Returns temporary SSH keys you can use to connect to a specific virtual private server, or instance. - */ - getInstanceAccessDetails(callback?: (err: AWSError, data: Lightsail.Types.GetInstanceAccessDetailsResult) => void): Request; - /** - * Returns the data points for the specified Amazon Lightsail instance metric, given an instance name. - */ - getInstanceMetricData(params: Lightsail.Types.GetInstanceMetricDataRequest, callback?: (err: AWSError, data: Lightsail.Types.GetInstanceMetricDataResult) => void): Request; - /** - * Returns the data points for the specified Amazon Lightsail instance metric, given an instance name. - */ - getInstanceMetricData(callback?: (err: AWSError, data: Lightsail.Types.GetInstanceMetricDataResult) => void): Request; - /** - * Returns the port states for a specific virtual private server, or instance. - */ - getInstancePortStates(params: Lightsail.Types.GetInstancePortStatesRequest, callback?: (err: AWSError, data: Lightsail.Types.GetInstancePortStatesResult) => void): Request; - /** - * Returns the port states for a specific virtual private server, or instance. - */ - getInstancePortStates(callback?: (err: AWSError, data: Lightsail.Types.GetInstancePortStatesResult) => void): Request; - /** - * Returns information about a specific instance snapshot. - */ - getInstanceSnapshot(params: Lightsail.Types.GetInstanceSnapshotRequest, callback?: (err: AWSError, data: Lightsail.Types.GetInstanceSnapshotResult) => void): Request; - /** - * Returns information about a specific instance snapshot. - */ - getInstanceSnapshot(callback?: (err: AWSError, data: Lightsail.Types.GetInstanceSnapshotResult) => void): Request; - /** - * Returns all instance snapshots for the user's account. - */ - getInstanceSnapshots(params: Lightsail.Types.GetInstanceSnapshotsRequest, callback?: (err: AWSError, data: Lightsail.Types.GetInstanceSnapshotsResult) => void): Request; - /** - * Returns all instance snapshots for the user's account. - */ - getInstanceSnapshots(callback?: (err: AWSError, data: Lightsail.Types.GetInstanceSnapshotsResult) => void): Request; - /** - * Returns the state of a specific instance. Works on one instance at a time. - */ - getInstanceState(params: Lightsail.Types.GetInstanceStateRequest, callback?: (err: AWSError, data: Lightsail.Types.GetInstanceStateResult) => void): Request; - /** - * Returns the state of a specific instance. Works on one instance at a time. - */ - getInstanceState(callback?: (err: AWSError, data: Lightsail.Types.GetInstanceStateResult) => void): Request; - /** - * Returns information about all Amazon Lightsail virtual private servers, or instances. - */ - getInstances(params: Lightsail.Types.GetInstancesRequest, callback?: (err: AWSError, data: Lightsail.Types.GetInstancesResult) => void): Request; - /** - * Returns information about all Amazon Lightsail virtual private servers, or instances. - */ - getInstances(callback?: (err: AWSError, data: Lightsail.Types.GetInstancesResult) => void): Request; - /** - * Returns information about a specific key pair. - */ - getKeyPair(params: Lightsail.Types.GetKeyPairRequest, callback?: (err: AWSError, data: Lightsail.Types.GetKeyPairResult) => void): Request; - /** - * Returns information about a specific key pair. - */ - getKeyPair(callback?: (err: AWSError, data: Lightsail.Types.GetKeyPairResult) => void): Request; - /** - * Returns information about all key pairs in the user's account. - */ - getKeyPairs(params: Lightsail.Types.GetKeyPairsRequest, callback?: (err: AWSError, data: Lightsail.Types.GetKeyPairsResult) => void): Request; - /** - * Returns information about all key pairs in the user's account. - */ - getKeyPairs(callback?: (err: AWSError, data: Lightsail.Types.GetKeyPairsResult) => void): Request; - /** - * Returns information about a specific operation. Operations include events such as when you create an instance, allocate a static IP, attach a static IP, and so on. - */ - getOperation(params: Lightsail.Types.GetOperationRequest, callback?: (err: AWSError, data: Lightsail.Types.GetOperationResult) => void): Request; - /** - * Returns information about a specific operation. Operations include events such as when you create an instance, allocate a static IP, attach a static IP, and so on. - */ - getOperation(callback?: (err: AWSError, data: Lightsail.Types.GetOperationResult) => void): Request; - /** - * Returns information about all operations. Results are returned from oldest to newest, up to a maximum of 200. Results can be paged by making each subsequent call to GetOperations use the maximum (last) statusChangedAt value from the previous request. - */ - getOperations(params: Lightsail.Types.GetOperationsRequest, callback?: (err: AWSError, data: Lightsail.Types.GetOperationsResult) => void): Request; - /** - * Returns information about all operations. Results are returned from oldest to newest, up to a maximum of 200. Results can be paged by making each subsequent call to GetOperations use the maximum (last) statusChangedAt value from the previous request. - */ - getOperations(callback?: (err: AWSError, data: Lightsail.Types.GetOperationsResult) => void): Request; - /** - * Gets operations for a specific resource (e.g., an instance or a static IP). - */ - getOperationsForResource(params: Lightsail.Types.GetOperationsForResourceRequest, callback?: (err: AWSError, data: Lightsail.Types.GetOperationsForResourceResult) => void): Request; - /** - * Gets operations for a specific resource (e.g., an instance or a static IP). - */ - getOperationsForResource(callback?: (err: AWSError, data: Lightsail.Types.GetOperationsForResourceResult) => void): Request; - /** - * Returns a list of all valid regions for Amazon Lightsail. Use the include availability zones parameter to also return the availability zones in a region. - */ - getRegions(params: Lightsail.Types.GetRegionsRequest, callback?: (err: AWSError, data: Lightsail.Types.GetRegionsResult) => void): Request; - /** - * Returns a list of all valid regions for Amazon Lightsail. Use the include availability zones parameter to also return the availability zones in a region. - */ - getRegions(callback?: (err: AWSError, data: Lightsail.Types.GetRegionsResult) => void): Request; - /** - * Returns information about a specific static IP. - */ - getStaticIp(params: Lightsail.Types.GetStaticIpRequest, callback?: (err: AWSError, data: Lightsail.Types.GetStaticIpResult) => void): Request; - /** - * Returns information about a specific static IP. - */ - getStaticIp(callback?: (err: AWSError, data: Lightsail.Types.GetStaticIpResult) => void): Request; - /** - * Returns information about all static IPs in the user's account. - */ - getStaticIps(params: Lightsail.Types.GetStaticIpsRequest, callback?: (err: AWSError, data: Lightsail.Types.GetStaticIpsResult) => void): Request; - /** - * Returns information about all static IPs in the user's account. - */ - getStaticIps(callback?: (err: AWSError, data: Lightsail.Types.GetStaticIpsResult) => void): Request; - /** - * Imports a public SSH key from a specific key pair. - */ - importKeyPair(params: Lightsail.Types.ImportKeyPairRequest, callback?: (err: AWSError, data: Lightsail.Types.ImportKeyPairResult) => void): Request; - /** - * Imports a public SSH key from a specific key pair. - */ - importKeyPair(callback?: (err: AWSError, data: Lightsail.Types.ImportKeyPairResult) => void): Request; - /** - * Returns a Boolean value indicating whether your Lightsail VPC is peered. - */ - isVpcPeered(params: Lightsail.Types.IsVpcPeeredRequest, callback?: (err: AWSError, data: Lightsail.Types.IsVpcPeeredResult) => void): Request; - /** - * Returns a Boolean value indicating whether your Lightsail VPC is peered. - */ - isVpcPeered(callback?: (err: AWSError, data: Lightsail.Types.IsVpcPeeredResult) => void): Request; - /** - * Adds public ports to an Amazon Lightsail instance. - */ - openInstancePublicPorts(params: Lightsail.Types.OpenInstancePublicPortsRequest, callback?: (err: AWSError, data: Lightsail.Types.OpenInstancePublicPortsResult) => void): Request; - /** - * Adds public ports to an Amazon Lightsail instance. - */ - openInstancePublicPorts(callback?: (err: AWSError, data: Lightsail.Types.OpenInstancePublicPortsResult) => void): Request; - /** - * Tries to peer the Lightsail VPC with the user's default VPC. - */ - peerVpc(params: Lightsail.Types.PeerVpcRequest, callback?: (err: AWSError, data: Lightsail.Types.PeerVpcResult) => void): Request; - /** - * Tries to peer the Lightsail VPC with the user's default VPC. - */ - peerVpc(callback?: (err: AWSError, data: Lightsail.Types.PeerVpcResult) => void): Request; - /** - * Sets the specified open ports for an Amazon Lightsail instance, and closes all ports for every protocol not included in the current request. - */ - putInstancePublicPorts(params: Lightsail.Types.PutInstancePublicPortsRequest, callback?: (err: AWSError, data: Lightsail.Types.PutInstancePublicPortsResult) => void): Request; - /** - * Sets the specified open ports for an Amazon Lightsail instance, and closes all ports for every protocol not included in the current request. - */ - putInstancePublicPorts(callback?: (err: AWSError, data: Lightsail.Types.PutInstancePublicPortsResult) => void): Request; - /** - * Restarts a specific instance. When your Amazon Lightsail instance is finished rebooting, Lightsail assigns a new public IP address. To use the same IP address after restarting, create a static IP address and attach it to the instance. - */ - rebootInstance(params: Lightsail.Types.RebootInstanceRequest, callback?: (err: AWSError, data: Lightsail.Types.RebootInstanceResult) => void): Request; - /** - * Restarts a specific instance. When your Amazon Lightsail instance is finished rebooting, Lightsail assigns a new public IP address. To use the same IP address after restarting, create a static IP address and attach it to the instance. - */ - rebootInstance(callback?: (err: AWSError, data: Lightsail.Types.RebootInstanceResult) => void): Request; - /** - * Deletes a specific static IP from your account. - */ - releaseStaticIp(params: Lightsail.Types.ReleaseStaticIpRequest, callback?: (err: AWSError, data: Lightsail.Types.ReleaseStaticIpResult) => void): Request; - /** - * Deletes a specific static IP from your account. - */ - releaseStaticIp(callback?: (err: AWSError, data: Lightsail.Types.ReleaseStaticIpResult) => void): Request; - /** - * Starts a specific Amazon Lightsail instance from a stopped state. To restart an instance, use the reboot instance operation. - */ - startInstance(params: Lightsail.Types.StartInstanceRequest, callback?: (err: AWSError, data: Lightsail.Types.StartInstanceResult) => void): Request; - /** - * Starts a specific Amazon Lightsail instance from a stopped state. To restart an instance, use the reboot instance operation. - */ - startInstance(callback?: (err: AWSError, data: Lightsail.Types.StartInstanceResult) => void): Request; - /** - * Stops a specific Amazon Lightsail instance that is currently running. - */ - stopInstance(params: Lightsail.Types.StopInstanceRequest, callback?: (err: AWSError, data: Lightsail.Types.StopInstanceResult) => void): Request; - /** - * Stops a specific Amazon Lightsail instance that is currently running. - */ - stopInstance(callback?: (err: AWSError, data: Lightsail.Types.StopInstanceResult) => void): Request; - /** - * Attempts to unpeer the Lightsail VPC from the user's default VPC. - */ - unpeerVpc(params: Lightsail.Types.UnpeerVpcRequest, callback?: (err: AWSError, data: Lightsail.Types.UnpeerVpcResult) => void): Request; - /** - * Attempts to unpeer the Lightsail VPC from the user's default VPC. - */ - unpeerVpc(callback?: (err: AWSError, data: Lightsail.Types.UnpeerVpcResult) => void): Request; - /** - * Updates a domain recordset after it is created. - */ - updateDomainEntry(params: Lightsail.Types.UpdateDomainEntryRequest, callback?: (err: AWSError, data: Lightsail.Types.UpdateDomainEntryResult) => void): Request; - /** - * Updates a domain recordset after it is created. - */ - updateDomainEntry(callback?: (err: AWSError, data: Lightsail.Types.UpdateDomainEntryResult) => void): Request; -} -declare namespace Lightsail { - export type AccessDirection = "inbound"|"outbound"|string; - export interface AllocateStaticIpRequest { - /** - * The name of the static IP address. - */ - staticIpName: ResourceName; - } - export interface AllocateStaticIpResult { - /** - * An array of key-value pairs containing information about the static IP address you allocated. - */ - operations?: OperationList; - } - export interface AttachStaticIpRequest { - /** - * The name of the static IP. - */ - staticIpName: ResourceName; - /** - * The instance name to which you want to attach the static IP address. - */ - instanceName: ResourceName; - } - export interface AttachStaticIpResult { - /** - * An array of key-value pairs containing information about your API operations. - */ - operations?: OperationList; - } - export interface AvailabilityZone { - /** - * The name of the Availability Zone. The format is us-east-1a (case-sensitive). - */ - zoneName?: NonEmptyString; - /** - * The state of the Availability Zone. - */ - state?: NonEmptyString; - } - export type AvailabilityZoneList = AvailabilityZone[]; - export type Base64 = string; - export interface Blueprint { - /** - * The ID for the virtual private server image (e.g., app_wordpress_4_4 or app_lamp_7_0). - */ - blueprintId?: NonEmptyString; - /** - * The friendly name of the blueprint (e.g., Amazon Linux). - */ - name?: ResourceName; - /** - * The group name of the blueprint (e.g., amazon-linux). - */ - group?: NonEmptyString; - /** - * The type of the blueprint (e.g., os or app). - */ - type?: BlueprintType; - /** - * The description of the blueprint. - */ - description?: string; - /** - * A Boolean value indicating whether the blueprint is active. When you update your blueprints, you will inactivate old blueprints and keep the most recent versions active. - */ - isActive?: boolean; - /** - * The minimum machine size required to run this blueprint. 0 indicates that the blueprint runs on all instances. - */ - minPower?: integer; - /** - * The version number of the operating system, application, or stack (e.g., 2016.03.0). - */ - version?: string; - /** - * The version code. - */ - versionCode?: string; - /** - * The product URL to learn more about the image or blueprint. - */ - productUrl?: string; - /** - * The end-user license agreement URL for the image or blueprint. - */ - licenseUrl?: string; - } - export type BlueprintList = Blueprint[]; - export type BlueprintType = "os"|"app"|string; - export interface Bundle { - /** - * The price in US dollars (e.g., 5.0). - */ - price?: float; - /** - * The number of vCPUs included in the bundle (e.g., 2). - */ - cpuCount?: integer; - /** - * The size of the SSD (e.g., 30). - */ - diskSizeInGb?: integer; - /** - * The bundle ID (e.g., micro_1_0). - */ - bundleId?: NonEmptyString; - /** - * The Amazon EC2 instance type (e.g., t2.micro). - */ - instanceType?: string; - /** - * A Boolean value indicating whether the bundle is active. - */ - isActive?: boolean; - /** - * A friendly name for the bundle (e.g., Micro). - */ - name?: string; - /** - * The power of the bundle (e.g., 500). - */ - power?: integer; - /** - * The amount of RAM in GB (e.g., 2.0). - */ - ramSizeInGb?: float; - /** - * The data transfer rate per month in GB (e.g., 2000). - */ - transferPerMonthInGb?: integer; - } - export type BundleList = Bundle[]; - export interface CloseInstancePublicPortsRequest { - /** - * Information about the public port you are trying to close. - */ - portInfo: PortInfo; - /** - * The name of the instance on which you're attempting to close the public ports. - */ - instanceName: ResourceName; - } - export interface CloseInstancePublicPortsResult { - /** - * An array of key-value pairs that contains information about the operation. - */ - operation?: Operation; - } - export interface CreateDomainEntryRequest { - /** - * The domain name (e.g., example.com) for which you want to create the domain entry. - */ - domainName: DomainName; - /** - * An array of key-value pairs containing information about the domain entry request. - */ - domainEntry: DomainEntry; - } - export interface CreateDomainEntryResult { - /** - * An array of key-value pairs containing information about the operation. - */ - operation?: Operation; - } - export interface CreateDomainRequest { - /** - * The domain name to manage (e.g., example.com). You cannot register a new domain name using Lightsail. You must register a domain name using Amazon Route 53 or another domain name registrar. If you have already registered your domain, you can enter its name in this parameter to manage the DNS records for that domain. - */ - domainName: DomainName; - } - export interface CreateDomainResult { - /** - * An array of key-value pairs containing information about the domain resource you created. - */ - operation?: Operation; - } - export interface CreateInstanceSnapshotRequest { - /** - * The name for your new snapshot. - */ - instanceSnapshotName: ResourceName; - /** - * The Lightsail instance on which to base your snapshot. - */ - instanceName: ResourceName; - } - export interface CreateInstanceSnapshotResult { - /** - * An array of key-value pairs containing information about the results of your create instances snapshot request. - */ - operations?: OperationList; - } - export interface CreateInstancesFromSnapshotRequest { - /** - * The names for your new instances. - */ - instanceNames: StringList; - /** - * The Availability Zone where you want to create your instances. Use the following formatting: us-east-1a (case sensitive). You can get a list of availability zones by using the get regions operation. Be sure to add the include availability zones parameter to your request. - */ - availabilityZone: string; - /** - * The name of the instance snapshot on which you are basing your new instances. Use the get instance snapshots operation to return information about your existing snapshots. - */ - instanceSnapshotName: ResourceName; - /** - * The bundle of specification information for your virtual private server (or instance), including the pricing plan (e.g., micro_1_0). - */ - bundleId: NonEmptyString; - /** - * You can create a launch script that configures a server with additional user data. For example, apt-get –y update. Depending on the machine image you choose, the command to get software on your instance varies. Amazon Linux and CentOS use yum, Debian and Ubuntu use apt-get, and FreeBSD uses pkg. For a complete list, see the Dev Guide. - */ - userData?: string; - /** - * The name for your key pair. - */ - keyPairName?: ResourceName; - } - export interface CreateInstancesFromSnapshotResult { - /** - * An array of key-value pairs containing information about the results of your create instances from snapshot request. - */ - operations?: OperationList; - } - export interface CreateInstancesRequest { - /** - * The names to use for your new Lightsail instances. Separate multiple values using quotation marks and commas, for example: ["MyFirstInstance","MySecondInstance"] - */ - instanceNames: StringList; - /** - * The Availability Zone in which to create your instance. Use the following format: us-east-1a (case sensitive). You can get a list of availability zones by using the get regions operation. Be sure to add the include availability zones parameter to your request. - */ - availabilityZone: string; - /** - * (Deprecated) The name for your custom image. In releases prior to June 12, 2017, this parameter was ignored by the API. It is now deprecated. - */ - customImageName?: ResourceName; - /** - * The ID for a virtual private server image (e.g., app_wordpress_4_4 or app_lamp_7_0). Use the get blueprints operation to return a list of available images (or blueprints). - */ - blueprintId: NonEmptyString; - /** - * The bundle of specification information for your virtual private server (or instance), including the pricing plan (e.g., micro_1_0). - */ - bundleId: NonEmptyString; - /** - * A launch script you can create that configures a server with additional user data. For example, you might want to run apt-get –y update. Depending on the machine image you choose, the command to get software on your instance varies. Amazon Linux and CentOS use yum, Debian and Ubuntu use apt-get, and FreeBSD uses pkg. For a complete list, see the Dev Guide. - */ - userData?: string; - /** - * The name of your key pair. - */ - keyPairName?: ResourceName; - } - export interface CreateInstancesResult { - /** - * An array of key-value pairs containing information about the results of your create instances request. - */ - operations?: OperationList; - } - export interface CreateKeyPairRequest { - /** - * The name for your new key pair. - */ - keyPairName: ResourceName; - } - export interface CreateKeyPairResult { - /** - * An array of key-value pairs containing information about the new key pair you just created. - */ - keyPair?: KeyPair; - /** - * A base64-encoded public key of the ssh-rsa type. - */ - publicKeyBase64?: Base64; - /** - * A base64-encoded RSA private key. - */ - privateKeyBase64?: Base64; - /** - * An array of key-value pairs containing information about the results of your create key pair request. - */ - operation?: Operation; - } - export interface DeleteDomainEntryRequest { - /** - * The name of the domain entry to delete. - */ - domainName: DomainName; - /** - * An array of key-value pairs containing information about your domain entries. - */ - domainEntry: DomainEntry; - } - export interface DeleteDomainEntryResult { - /** - * An array of key-value pairs containing information about the results of your delete domain entry request. - */ - operation?: Operation; - } - export interface DeleteDomainRequest { - /** - * The specific domain name to delete. - */ - domainName: DomainName; - } - export interface DeleteDomainResult { - /** - * An array of key-value pairs containing information about the results of your delete domain request. - */ - operation?: Operation; - } - export interface DeleteInstanceRequest { - /** - * The name of the instance to delete. - */ - instanceName: ResourceName; - } - export interface DeleteInstanceResult { - /** - * An array of key-value pairs containing information about the results of your delete instance request. - */ - operations?: OperationList; - } - export interface DeleteInstanceSnapshotRequest { - /** - * The name of the snapshot to delete. - */ - instanceSnapshotName: ResourceName; - } - export interface DeleteInstanceSnapshotResult { - /** - * An array of key-value pairs containing information about the results of your delete instance snapshot request. - */ - operations?: OperationList; - } - export interface DeleteKeyPairRequest { - /** - * The name of the key pair to delete. - */ - keyPairName: ResourceName; - } - export interface DeleteKeyPairResult { - /** - * An array of key-value pairs containing information about the results of your delete key pair request. - */ - operation?: Operation; - } - export interface DetachStaticIpRequest { - /** - * The name of the static IP to detach from the instance. - */ - staticIpName: ResourceName; - } - export interface DetachStaticIpResult { - /** - * An array of key-value pairs containing information about the results of your detach static IP request. - */ - operations?: OperationList; - } - export interface Disk { - /** - * The name of the disk. - */ - name?: ResourceName; - /** - * The Amazon Resource Name (ARN) of the disk. - */ - arn?: NonEmptyString; - /** - * The support code. Include this code in your email to support when you have questions about an instance or another resource in Lightsail. This code enables our support team to look up your Lightsail information more easily. - */ - supportCode?: string; - /** - * The date when the disk was created. - */ - createdAt?: IsoDate; - /** - * The region and Availability Zone where the disk is located. - */ - location?: ResourceLocation; - /** - * The resource type of the disk. - */ - resourceType?: ResourceType; - /** - * The size of the disk in GB. - */ - sizeInGb?: integer; - /** - * The number of GB in use by the disk. - */ - gbInUse?: integer; - /** - * A Boolean value indicating whether this disk is a system disk (has an operating system loaded on it). - */ - isSystemDisk?: boolean; - /** - * The input/output operations per second (IOPS) of the disk. - */ - iops?: integer; - /** - * The disk path. - */ - path?: string; - /** - * The resources to which the disk is attached. - */ - attachedTo?: string; - /** - * A Boolean value indicating whether the disk is attached. - */ - isAttached?: boolean; - /** - * The attachment state of the disk. - */ - attachmentState?: string; - } - export type DiskList = Disk[]; - export interface Domain { - /** - * The name of the domain. - */ - name?: ResourceName; - /** - * The Amazon Resource Name (ARN) of the domain recordset (e.g., arn:aws:lightsail:global:123456789101:Domain/824cede0-abc7-4f84-8dbc-12345EXAMPLE). - */ - arn?: NonEmptyString; - /** - * The support code. Include this code in your email to support when you have questions about an instance or another resource in Lightsail. This code enables our support team to look up your Lightsail information more easily. - */ - supportCode?: string; - /** - * The date when the domain recordset was created. - */ - createdAt?: IsoDate; - /** - * The AWS Region and Availability Zones where the domain recordset was created. - */ - location?: ResourceLocation; - /** - * The resource type. - */ - resourceType?: ResourceType; - /** - * An array of key-value pairs containing information about the domain entries. - */ - domainEntries?: DomainEntryList; - } - export interface DomainEntry { - /** - * The ID of the domain recordset entry. - */ - id?: NonEmptyString; - /** - * The name of the domain. - */ - name?: DomainName; - /** - * The target AWS name server (e.g., ns-111.awsdns-22.com.). - */ - target?: string; - /** - * The type of domain entry (e.g., SOA or NS). - */ - type?: DomainEntryType; - /** - * The options for the domain entry. - */ - options?: DomainEntryOptions; - } - export type DomainEntryList = DomainEntry[]; - export type DomainEntryOptions = {[key: string]: string}; - export type DomainEntryOptionsKeys = string; - export type DomainEntryType = string; - export type DomainList = Domain[]; - export type DomainName = string; - export interface DownloadDefaultKeyPairRequest { - } - export interface DownloadDefaultKeyPairResult { - /** - * A base64-encoded public key of the ssh-rsa type. - */ - publicKeyBase64?: Base64; - /** - * A base64-encoded RSA private key. - */ - privateKeyBase64?: Base64; - } - export interface GetActiveNamesRequest { - /** - * A token used for paginating results from your get active names request. - */ - pageToken?: string; - } - export interface GetActiveNamesResult { - /** - * The list of active names returned by the get active names request. - */ - activeNames?: StringList; - /** - * A token used for advancing to the next page of results from your get active names request. - */ - nextPageToken?: string; - } - export interface GetBlueprintsRequest { - /** - * A Boolean value indicating whether to include inactive results in your request. - */ - includeInactive?: boolean; - /** - * A token used for advancing to the next page of results from your get blueprints request. - */ - pageToken?: string; - } - export interface GetBlueprintsResult { - /** - * An array of key-value pairs that contains information about the available blueprints. - */ - blueprints?: BlueprintList; - /** - * A token used for advancing to the next page of results from your get blueprints request. - */ - nextPageToken?: string; - } - export interface GetBundlesRequest { - /** - * A Boolean value that indicates whether to include inactive bundle results in your request. - */ - includeInactive?: boolean; - /** - * A token used for advancing to the next page of results from your get bundles request. - */ - pageToken?: string; - } - export interface GetBundlesResult { - /** - * An array of key-value pairs that contains information about the available bundles. - */ - bundles?: BundleList; - /** - * A token used for advancing to the next page of results from your get active names request. - */ - nextPageToken?: string; - } - export interface GetDomainRequest { - /** - * The domain name for which your want to return information about. - */ - domainName: DomainName; - } - export interface GetDomainResult { - /** - * An array of key-value pairs containing information about your get domain request. - */ - domain?: Domain; - } - export interface GetDomainsRequest { - /** - * A token used for advancing to the next page of results from your get domains request. - */ - pageToken?: string; - } - export interface GetDomainsResult { - /** - * An array of key-value pairs containing information about each of the domain entries in the user's account. - */ - domains?: DomainList; - /** - * A token used for advancing to the next page of results from your get active names request. - */ - nextPageToken?: string; - } - export interface GetInstanceAccessDetailsRequest { - /** - * The name of the instance to access. - */ - instanceName: ResourceName; - /** - * The protocol to use to connect to your instance. Defaults to ssh. - */ - protocol?: InstanceAccessProtocol; - } - export interface GetInstanceAccessDetailsResult { - /** - * An array of key-value pairs containing information about a get instance access request. - */ - accessDetails?: InstanceAccessDetails; - } - export interface GetInstanceMetricDataRequest { - /** - * The name of the instance for which you want to get metrics data. - */ - instanceName: ResourceName; - /** - * The metric name to get data about. - */ - metricName: InstanceMetricName; - /** - * The time period for which you are requesting data. - */ - period: MetricPeriod; - /** - * The start time of the time period. - */ - startTime: timestamp; - /** - * The end time of the time period. - */ - endTime: timestamp; - /** - * The unit. The list of valid values is below. - */ - unit: MetricUnit; - /** - * The instance statistics. - */ - statistics: MetricStatisticList; - } - export interface GetInstanceMetricDataResult { - /** - * The metric name to return data for. - */ - metricName?: InstanceMetricName; - /** - * An array of key-value pairs containing information about the results of your get instance metric data request. - */ - metricData?: MetricDatapointList; - } - export interface GetInstancePortStatesRequest { - /** - * The name of the instance. - */ - instanceName: ResourceName; - } - export interface GetInstancePortStatesResult { - /** - * Information about the port states resulting from your request. - */ - portStates?: InstancePortStateList; - } - export interface GetInstanceRequest { - /** - * The name of the instance. - */ - instanceName: ResourceName; - } - export interface GetInstanceResult { - /** - * An array of key-value pairs containing information about the specified instance. - */ - instance?: Instance; - } - export interface GetInstanceSnapshotRequest { - /** - * The name of the snapshot for which you are requesting information. - */ - instanceSnapshotName: ResourceName; - } - export interface GetInstanceSnapshotResult { - /** - * An array of key-value pairs containing information about the results of your get instance snapshot request. - */ - instanceSnapshot?: InstanceSnapshot; - } - export interface GetInstanceSnapshotsRequest { - /** - * A token used for advancing to the next page of results from your get instance snapshots request. - */ - pageToken?: string; - } - export interface GetInstanceSnapshotsResult { - /** - * An array of key-value pairs containing information about the results of your get instance snapshots request. - */ - instanceSnapshots?: InstanceSnapshotList; - /** - * A token used for advancing to the next page of results from your get instance snapshots request. - */ - nextPageToken?: string; - } - export interface GetInstanceStateRequest { - /** - * The name of the instance to get state information about. - */ - instanceName: ResourceName; - } - export interface GetInstanceStateResult { - /** - * The state of the instance. - */ - state?: InstanceState; - } - export interface GetInstancesRequest { - /** - * A token used for advancing to the next page of results from your get instances request. - */ - pageToken?: string; - } - export interface GetInstancesResult { - /** - * An array of key-value pairs containing information about your instances. - */ - instances?: InstanceList; - /** - * A token used for advancing to the next page of results from your get instances request. - */ - nextPageToken?: string; - } - export interface GetKeyPairRequest { - /** - * The name of the key pair for which you are requesting information. - */ - keyPairName: ResourceName; - } - export interface GetKeyPairResult { - /** - * An array of key-value pairs containing information about the key pair. - */ - keyPair?: KeyPair; - } - export interface GetKeyPairsRequest { - /** - * A token used for advancing to the next page of results from your get key pairs request. - */ - pageToken?: string; - } - export interface GetKeyPairsResult { - /** - * An array of key-value pairs containing information about the key pairs. - */ - keyPairs?: KeyPairList; - /** - * A token used for advancing to the next page of results from your get key pairs request. - */ - nextPageToken?: string; - } - export interface GetOperationRequest { - /** - * A GUID used to identify the operation. - */ - operationId: NonEmptyString; - } - export interface GetOperationResult { - /** - * An array of key-value pairs containing information about the results of your get operation request. - */ - operation?: Operation; - } - export interface GetOperationsForResourceRequest { - /** - * The name of the resource for which you are requesting information. - */ - resourceName: ResourceName; - /** - * A token used for advancing to the next page of results from your get operations for resource request. - */ - pageToken?: string; - } - export interface GetOperationsForResourceResult { - /** - * An array of key-value pairs containing information about the results of your get operations for resource request. - */ - operations?: OperationList; - /** - * (Deprecated) Returns the number of pages of results that remain. In releases prior to June 12, 2017, this parameter returned null by the API. It is now deprecated, and the API returns the nextPageToken parameter instead. - */ - nextPageCount?: string; - /** - * An identifier that was returned from the previous call to this operation, which can be used to return the next set of items in the list. - */ - nextPageToken?: string; - } - export interface GetOperationsRequest { - /** - * A token used for advancing to the next page of results from your get operations request. - */ - pageToken?: string; - } - export interface GetOperationsResult { - /** - * An array of key-value pairs containing information about the results of your get operations request. - */ - operations?: OperationList; - /** - * A token used for advancing to the next page of results from your get operations request. - */ - nextPageToken?: string; - } - export interface GetRegionsRequest { - /** - * A Boolean value indicating whether to also include Availability Zones in your get regions request. Availability Zones are indicated with a letter: e.g., us-east-1a. - */ - includeAvailabilityZones?: boolean; - } - export interface GetRegionsResult { - /** - * An array of key-value pairs containing information about your get regions request. - */ - regions?: RegionList; - } - export interface GetStaticIpRequest { - /** - * The name of the static IP in Lightsail. - */ - staticIpName: ResourceName; - } - export interface GetStaticIpResult { - /** - * An array of key-value pairs containing information about the requested static IP. - */ - staticIp?: StaticIp; - } - export interface GetStaticIpsRequest { - /** - * A token used for advancing to the next page of results from your get static IPs request. - */ - pageToken?: string; - } - export interface GetStaticIpsResult { - /** - * An array of key-value pairs containing information about your get static IPs request. - */ - staticIps?: StaticIpList; - /** - * A token used for advancing to the next page of results from your get static IPs request. - */ - nextPageToken?: string; - } - export interface ImportKeyPairRequest { - /** - * The name of the key pair for which you want to import the public key. - */ - keyPairName: ResourceName; - /** - * A base64-encoded public key of the ssh-rsa type. - */ - publicKeyBase64: Base64; - } - export interface ImportKeyPairResult { - /** - * An array of key-value pairs containing information about the request operation. - */ - operation?: Operation; - } - export interface Instance { - /** - * The name the user gave the instance (e.g., Amazon_Linux-1GB-Virginia-1). - */ - name?: ResourceName; - /** - * The Amazon Resource Name (ARN) of the instance (e.g., arn:aws:lightsail:us-east-1:123456789101:Instance/244ad76f-8aad-4741-809f-12345EXAMPLE). - */ - arn?: NonEmptyString; - /** - * The support code. Include this code in your email to support when you have questions about an instance or another resource in Lightsail. This code enables our support team to look up your Lightsail information more easily. - */ - supportCode?: string; - /** - * The timestamp when the instance was created (e.g., 1479734909.17). - */ - createdAt?: IsoDate; - /** - * The region name and availability zone where the instance is located. - */ - location?: ResourceLocation; - /** - * The type of resource (usually Instance). - */ - resourceType?: ResourceType; - /** - * The blueprint ID (e.g., os_amlinux_2016_03). - */ - blueprintId?: NonEmptyString; - /** - * The friendly name of the blueprint (e.g., Amazon Linux). - */ - blueprintName?: NonEmptyString; - /** - * The bundle for the instance (e.g., micro_1_0). - */ - bundleId?: NonEmptyString; - /** - * A Boolean value indicating whether this instance has a static IP assigned to it. - */ - isStaticIp?: boolean; - /** - * The private IP address of the instance. - */ - privateIpAddress?: IpAddress; - /** - * The public IP address of the instance. - */ - publicIpAddress?: IpAddress; - /** - * The IPv6 address of the instance. - */ - ipv6Address?: IpV6Address; - /** - * The size of the vCPU and the amount of RAM for the instance. - */ - hardware?: InstanceHardware; - /** - * Information about the public ports and monthly data transfer rates for the instance. - */ - networking?: InstanceNetworking; - /** - * The status code and the state (e.g., running) for the instance. - */ - state?: InstanceState; - /** - * The user name for connecting to the instance (e.g., ec2-user). - */ - username?: NonEmptyString; - /** - * The name of the SSH key being used to connect to the instance (e.g., LightsailDefaultKeyPair). - */ - sshKeyName?: ResourceName; - } - export interface InstanceAccessDetails { - /** - * For SSH access, the public key to use when accessing your instance For OpenSSH clients (e.g., command line SSH), you should save this value to tempkey-cert.pub. - */ - certKey?: string; - /** - * For SSH access, the date on which the temporary keys expire. - */ - expiresAt?: IsoDate; - /** - * The public IP address of the Amazon Lightsail instance. - */ - ipAddress?: IpAddress; - /** - * For RDP access, the temporary password of the Amazon EC2 instance. - */ - password?: string; - /** - * For SSH access, the temporary private key. For OpenSSH clients (e.g., command line SSH), you should save this value to tempkey). - */ - privateKey?: string; - /** - * The protocol for these Amazon Lightsail instance access details. - */ - protocol?: InstanceAccessProtocol; - /** - * The name of this Amazon Lightsail instance. - */ - instanceName?: ResourceName; - /** - * The user name to use when logging in to the Amazon Lightsail instance. - */ - username?: string; - } - export type InstanceAccessProtocol = "ssh"|"rdp"|string; - export interface InstanceHardware { - /** - * The number of vCPUs the instance has. - */ - cpuCount?: integer; - /** - * The disks attached to the instance. - */ - disks?: DiskList; - /** - * The amount of RAM in GB on the instance (e.g., 1.0). - */ - ramSizeInGb?: float; - } - export type InstanceList = Instance[]; - export type InstanceMetricName = "CPUUtilization"|"NetworkIn"|"NetworkOut"|"StatusCheckFailed"|"StatusCheckFailed_Instance"|"StatusCheckFailed_System"|string; - export interface InstanceNetworking { - /** - * The amount of data in GB allocated for monthly data transfers. - */ - monthlyTransfer?: MonthlyTransfer; - /** - * An array of key-value pairs containing information about the ports on the instance. - */ - ports?: InstancePortInfoList; - } - export interface InstancePortInfo { - /** - * The first port in the range. - */ - fromPort?: Port; - /** - * The last port in the range. - */ - toPort?: Port; - /** - * The protocol being used. Can be one of the following. tcp - Transmission Control Protocol (TCP) provides reliable, ordered, and error-checked delivery of streamed data between applications running on hosts communicating by an IP network. If you have an application that doesn't require reliable data stream service, use UDP instead. all - All transport layer protocol types. For more general information, see Transport layer on Wikipedia. udp - With User Datagram Protocol (UDP), computer applications can send messages (or datagrams) to other hosts on an Internet Protocol (IP) network. Prior communications are not required to set up transmission channels or data paths. Applications that don't require reliable data stream service can use UDP, which provides a connectionless datagram service that emphasizes reduced latency over reliability. If you do require reliable data stream service, use TCP instead. - */ - protocol?: NetworkProtocol; - /** - * The location from which access is allowed (e.g., Anywhere (0.0.0.0/0)). - */ - accessFrom?: string; - /** - * The type of access (Public or Private). - */ - accessType?: PortAccessType; - /** - * The common name. - */ - commonName?: string; - /** - * The access direction (inbound or outbound). - */ - accessDirection?: AccessDirection; - } - export type InstancePortInfoList = InstancePortInfo[]; - export interface InstancePortState { - /** - * The first port in the range. - */ - fromPort?: Port; - /** - * The last port in the range. - */ - toPort?: Port; - /** - * The protocol being used. Can be one of the following. tcp - Transmission Control Protocol (TCP) provides reliable, ordered, and error-checked delivery of streamed data between applications running on hosts communicating by an IP network. If you have an application that doesn't require reliable data stream service, use UDP instead. all - All transport layer protocol types. For more general information, see Transport layer on Wikipedia. udp - With User Datagram Protocol (UDP), computer applications can send messages (or datagrams) to other hosts on an Internet Protocol (IP) network. Prior communications are not required to set up transmission channels or data paths. Applications that don't require reliable data stream service can use UDP, which provides a connectionless datagram service that emphasizes reduced latency over reliability. If you do require reliable data stream service, use TCP instead. - */ - protocol?: NetworkProtocol; - /** - * Specifies whether the instance port is open or closed. - */ - state?: PortState; - } - export type InstancePortStateList = InstancePortState[]; - export interface InstanceSnapshot { - /** - * The name of the snapshot. - */ - name?: ResourceName; - /** - * The Amazon Resource Name (ARN) of the snapshot (e.g., arn:aws:lightsail:us-east-1:123456789101:InstanceSnapshot/d23b5706-3322-4d83-81e5-12345EXAMPLE). - */ - arn?: NonEmptyString; - /** - * The support code. Include this code in your email to support when you have questions about an instance or another resource in Lightsail. This code enables our support team to look up your Lightsail information more easily. - */ - supportCode?: string; - /** - * The timestamp when the snapshot was created (e.g., 1479907467.024). - */ - createdAt?: IsoDate; - /** - * The region name and availability zone where you created the snapshot. - */ - location?: ResourceLocation; - /** - * The type of resource (usually InstanceSnapshot). - */ - resourceType?: ResourceType; - /** - * The state the snapshot is in. - */ - state?: InstanceSnapshotState; - /** - * The progress of the snapshot. - */ - progress?: string; - /** - * The instance from which the snapshot was created. - */ - fromInstanceName?: ResourceName; - /** - * The Amazon Resource Name (ARN) of the instance from which the snapshot was created (e.g., arn:aws:lightsail:us-east-1:123456789101:Instance/64b8404c-ccb1-430b-8daf-12345EXAMPLE). - */ - fromInstanceArn?: NonEmptyString; - /** - * The blueprint ID from which you created the snapshot (e.g., os_debian_8_3). A blueprint is a virtual private server (or instance) image used to create instances quickly. - */ - fromBlueprintId?: string; - /** - * The bundle ID from which you created the snapshot (e.g., micro_1_0). - */ - fromBundleId?: string; - /** - * The size in GB of the SSD. - */ - sizeInGb?: integer; - } - export type InstanceSnapshotList = InstanceSnapshot[]; - export type InstanceSnapshotState = "pending"|"error"|"available"|string; - export interface InstanceState { - /** - * The status code for the instance. - */ - code?: integer; - /** - * The state of the instance (e.g., running or pending). - */ - name?: string; - } - export type IpAddress = string; - export type IpV6Address = string; - export interface IsVpcPeeredRequest { - } - export interface IsVpcPeeredResult { - /** - * Returns true if the Lightsail VPC is peered; otherwise, false. - */ - isPeered?: boolean; - } - export type IsoDate = Date; - export interface KeyPair { - /** - * The friendly name of the SSH key pair. - */ - name?: ResourceName; - /** - * The Amazon Resource Name (ARN) of the key pair (e.g., arn:aws:lightsail:us-east-1:123456789101:KeyPair/05859e3d-331d-48ba-9034-12345EXAMPLE). - */ - arn?: NonEmptyString; - /** - * The support code. Include this code in your email to support when you have questions about an instance or another resource in Lightsail. This code enables our support team to look up your Lightsail information more easily. - */ - supportCode?: string; - /** - * The timestamp when the key pair was created (e.g., 1479816991.349). - */ - createdAt?: IsoDate; - /** - * The region name and Availability Zone where the key pair was created. - */ - location?: ResourceLocation; - /** - * The resource type (usually KeyPair). - */ - resourceType?: ResourceType; - /** - * The RSA fingerprint of the key pair. - */ - fingerprint?: Base64; - } - export type KeyPairList = KeyPair[]; - export interface MetricDatapoint { - /** - * The average. - */ - average?: double; - /** - * The maximum. - */ - maximum?: double; - /** - * The minimum. - */ - minimum?: double; - /** - * The sample count. - */ - sampleCount?: double; - /** - * The sum. - */ - sum?: double; - /** - * The timestamp (e.g., 1479816991.349). - */ - timestamp?: timestamp; - /** - * The unit. - */ - unit?: MetricUnit; - } - export type MetricDatapointList = MetricDatapoint[]; - export type MetricPeriod = number; - export type MetricStatistic = "Minimum"|"Maximum"|"Sum"|"Average"|"SampleCount"|string; - export type MetricStatisticList = MetricStatistic[]; - export type MetricUnit = "Seconds"|"Microseconds"|"Milliseconds"|"Bytes"|"Kilobytes"|"Megabytes"|"Gigabytes"|"Terabytes"|"Bits"|"Kilobits"|"Megabits"|"Gigabits"|"Terabits"|"Percent"|"Count"|"Bytes/Second"|"Kilobytes/Second"|"Megabytes/Second"|"Gigabytes/Second"|"Terabytes/Second"|"Bits/Second"|"Kilobits/Second"|"Megabits/Second"|"Gigabits/Second"|"Terabits/Second"|"Count/Second"|"None"|string; - export interface MonthlyTransfer { - /** - * The amount allocated per month (in GB). - */ - gbPerMonthAllocated?: integer; - } - export type NetworkProtocol = "tcp"|"all"|"udp"|string; - export type NonEmptyString = string; - export interface OpenInstancePublicPortsRequest { - /** - * An array of key-value pairs containing information about the port mappings. - */ - portInfo: PortInfo; - /** - * The name of the instance for which you want to open the public ports. - */ - instanceName: ResourceName; - } - export interface OpenInstancePublicPortsResult { - /** - * An array of key-value pairs containing information about the request operation. - */ - operation?: Operation; - } - export interface Operation { - /** - * The ID of the operation. - */ - id?: NonEmptyString; - /** - * The resource name. - */ - resourceName?: ResourceName; - /** - * The resource type. - */ - resourceType?: ResourceType; - /** - * The timestamp when the operation was initialized (e.g., 1479816991.349). - */ - createdAt?: IsoDate; - /** - * The region and Availability Zone. - */ - location?: ResourceLocation; - /** - * A Boolean value indicating whether the operation is terminal. - */ - isTerminal?: boolean; - /** - * Details about the operation (e.g., Debian-1GB-Virginia-1). - */ - operationDetails?: string; - /** - * The type of operation. - */ - operationType?: OperationType; - /** - * The status of the operation. - */ - status?: OperationStatus; - /** - * The timestamp when the status was changed (e.g., 1479816991.349). - */ - statusChangedAt?: IsoDate; - /** - * The error code. - */ - errorCode?: string; - /** - * The error details. - */ - errorDetails?: string; - } - export type OperationList = Operation[]; - export type OperationStatus = "NotStarted"|"Started"|"Failed"|"Completed"|string; - export type OperationType = "DeleteInstance"|"CreateInstance"|"StopInstance"|"StartInstance"|"RebootInstance"|"OpenInstancePublicPorts"|"PutInstancePublicPorts"|"CloseInstancePublicPorts"|"AllocateStaticIp"|"ReleaseStaticIp"|"AttachStaticIp"|"DetachStaticIp"|"UpdateDomainEntry"|"DeleteDomainEntry"|"CreateDomain"|"DeleteDomain"|"CreateInstanceSnapshot"|"DeleteInstanceSnapshot"|"CreateInstancesFromSnapshot"|string; - export interface PeerVpcRequest { - } - export interface PeerVpcResult { - /** - * An array of key-value pairs containing information about the request operation. - */ - operation?: Operation; - } - export type Port = number; - export type PortAccessType = "Public"|"Private"|string; - export interface PortInfo { - /** - * The first port in the range. - */ - fromPort?: Port; - /** - * The last port in the range. - */ - toPort?: Port; - /** - * The protocol. - */ - protocol?: NetworkProtocol; - } - export type PortInfoList = PortInfo[]; - export type PortState = "open"|"closed"|string; - export interface PutInstancePublicPortsRequest { - /** - * Specifies information about the public port(s). - */ - portInfos: PortInfoList; - /** - * The Lightsail instance name of the public port(s) you are setting. - */ - instanceName: ResourceName; - } - export interface PutInstancePublicPortsResult { - /** - * Describes metadata about the operation you just executed. - */ - operation?: Operation; - } - export interface RebootInstanceRequest { - /** - * The name of the instance to reboot. - */ - instanceName: ResourceName; - } - export interface RebootInstanceResult { - /** - * An array of key-value pairs containing information about the request operation. - */ - operations?: OperationList; - } - export interface Region { - /** - * The continent code (e.g., NA, meaning North America). - */ - continentCode?: string; - /** - * The description of the AWS Region (e.g., This region is recommended to serve users in the eastern United States and eastern Canada). - */ - description?: string; - /** - * The display name (e.g., Virginia). - */ - displayName?: string; - /** - * The region name (e.g., us-east-1). - */ - name?: RegionName; - /** - * The Availability Zones. Follows the format us-east-1a (case-sensitive). - */ - availabilityZones?: AvailabilityZoneList; - } - export type RegionList = Region[]; - export type RegionName = "us-east-1"|"us-east-2"|"us-west-1"|"us-west-2"|"eu-west-1"|"eu-central-1"|"ap-south-1"|"ap-southeast-1"|"ap-southeast-2"|"ap-northeast-1"|"ap-northeast-2"|string; - export interface ReleaseStaticIpRequest { - /** - * The name of the static IP to delete. - */ - staticIpName: ResourceName; - } - export interface ReleaseStaticIpResult { - /** - * An array of key-value pairs containing information about the request operation. - */ - operations?: OperationList; - } - export interface ResourceLocation { - /** - * The Availability Zone. Follows the format us-east-1a (case-sensitive). - */ - availabilityZone?: string; - /** - * The AWS Region name. - */ - regionName?: RegionName; - } - export type ResourceName = string; - export type ResourceType = "Instance"|"StaticIp"|"KeyPair"|"InstanceSnapshot"|"Domain"|"PeeredVpc"|string; - export interface StartInstanceRequest { - /** - * The name of the instance (a virtual private server) to start. - */ - instanceName: ResourceName; - } - export interface StartInstanceResult { - /** - * An array of key-value pairs containing information about the request operation. - */ - operations?: OperationList; - } - export interface StaticIp { - /** - * The name of the static IP (e.g., StaticIP-Virginia-EXAMPLE). - */ - name?: ResourceName; - /** - * The Amazon Resource Name (ARN) of the static IP (e.g., arn:aws:lightsail:us-east-1:123456789101:StaticIp/9cbb4a9e-f8e3-4dfe-b57e-12345EXAMPLE). - */ - arn?: NonEmptyString; - /** - * The support code. Include this code in your email to support when you have questions about an instance or another resource in Lightsail. This code enables our support team to look up your Lightsail information more easily. - */ - supportCode?: string; - /** - * The timestamp when the static IP was created (e.g., 1479735304.222). - */ - createdAt?: IsoDate; - /** - * The region and Availability Zone where the static IP was created. - */ - location?: ResourceLocation; - /** - * The resource type (usually StaticIp). - */ - resourceType?: ResourceType; - /** - * The static IP address. - */ - ipAddress?: IpAddress; - /** - * The instance where the static IP is attached (e.g., Amazon_Linux-1GB-Virginia-1). - */ - attachedTo?: ResourceName; - /** - * A Boolean value indicating whether the static IP is attached. - */ - isAttached?: boolean; - } - export type StaticIpList = StaticIp[]; - export interface StopInstanceRequest { - /** - * The name of the instance (a virtual private server) to stop. - */ - instanceName: ResourceName; - } - export interface StopInstanceResult { - /** - * An array of key-value pairs containing information about the request operation. - */ - operations?: OperationList; - } - export type StringList = string[]; - export interface UnpeerVpcRequest { - } - export interface UnpeerVpcResult { - /** - * An array of key-value pairs containing information about the request operation. - */ - operation?: Operation; - } - export interface UpdateDomainEntryRequest { - /** - * The name of the domain recordset to update. - */ - domainName: DomainName; - /** - * An array of key-value pairs containing information about the domain entry. - */ - domainEntry: DomainEntry; - } - export interface UpdateDomainEntryResult { - /** - * An array of key-value pairs containing information about the request operation. - */ - operations?: OperationList; - } - export type double = number; - export type float = number; - export type integer = number; - export type timestamp = Date; - /** - * A string in YYYY-MM-DD format that represents the latest possible API version that can be used in this service. Specify 'latest' to use the latest possible version. - */ - export type apiVersion = "2016-11-28"|"latest"|string; - export interface ClientApiVersions { - /** - * A string in YYYY-MM-DD format that represents the latest possible API version that can be used in this service. Specify 'latest' to use the latest possible version. - */ - apiVersion?: apiVersion; - } - export type ClientConfiguration = ServiceConfigurationOptions & ClientApiVersions; - /** - * Contains interfaces for use with the Lightsail client. - */ - export import Types = Lightsail; -} -export = Lightsail; diff --git a/workshops/monte-carlo-on-ec2-spot-fleet/src/web/node_modules/aws-sdk/clients/lightsail.js b/workshops/monte-carlo-on-ec2-spot-fleet/src/web/node_modules/aws-sdk/clients/lightsail.js deleted file mode 100644 index 4d62e577..00000000 --- a/workshops/monte-carlo-on-ec2-spot-fleet/src/web/node_modules/aws-sdk/clients/lightsail.js +++ /dev/null @@ -1,18 +0,0 @@ -require('../lib/node_loader'); -var AWS = require('../lib/core'); -var Service = AWS.Service; -var apiLoader = AWS.apiLoader; - -apiLoader.services['lightsail'] = {}; -AWS.Lightsail = Service.defineService('lightsail', ['2016-11-28']); -Object.defineProperty(apiLoader.services['lightsail'], '2016-11-28', { - get: function get() { - var model = require('../apis/lightsail-2016-11-28.min.json'); - model.paginators = require('../apis/lightsail-2016-11-28.paginators.json').pagination; - return model; - }, - enumerable: true, - configurable: true -}); - -module.exports = AWS.Lightsail; diff --git a/workshops/monte-carlo-on-ec2-spot-fleet/src/web/node_modules/aws-sdk/clients/machinelearning.d.ts b/workshops/monte-carlo-on-ec2-spot-fleet/src/web/node_modules/aws-sdk/clients/machinelearning.d.ts deleted file mode 100644 index 5bed74e7..00000000 --- a/workshops/monte-carlo-on-ec2-spot-fleet/src/web/node_modules/aws-sdk/clients/machinelearning.d.ts +++ /dev/null @@ -1,1708 +0,0 @@ -import {Request} from '../lib/request'; -import {Response} from '../lib/response'; -import {AWSError} from '../lib/error'; -import {Service} from '../lib/service'; -import {ServiceConfigurationOptions} from '../lib/service'; -import {ConfigBase as Config} from '../lib/config'; -interface Blob {} -declare class MachineLearning extends Service { - /** - * Constructs a service object. This object has one method for each API operation. - */ - constructor(options?: MachineLearning.Types.ClientConfiguration) - config: Config & MachineLearning.Types.ClientConfiguration; - /** - * Adds one or more tags to an object, up to a limit of 10. Each tag consists of a key and an optional value. If you add a tag using a key that is already associated with the ML object, AddTags updates the tag's value. - */ - addTags(params: MachineLearning.Types.AddTagsInput, callback?: (err: AWSError, data: MachineLearning.Types.AddTagsOutput) => void): Request; - /** - * Adds one or more tags to an object, up to a limit of 10. Each tag consists of a key and an optional value. If you add a tag using a key that is already associated with the ML object, AddTags updates the tag's value. - */ - addTags(callback?: (err: AWSError, data: MachineLearning.Types.AddTagsOutput) => void): Request; - /** - * Generates predictions for a group of observations. The observations to process exist in one or more data files referenced by a DataSource. This operation creates a new BatchPrediction, and uses an MLModel and the data files referenced by the DataSource as information sources. CreateBatchPrediction is an asynchronous operation. In response to CreateBatchPrediction, Amazon Machine Learning (Amazon ML) immediately returns and sets the BatchPrediction status to PENDING. After the BatchPrediction completes, Amazon ML sets the status to COMPLETED. You can poll for status updates by using the GetBatchPrediction operation and checking the Status parameter of the result. After the COMPLETED status appears, the results are available in the location specified by the OutputUri parameter. - */ - createBatchPrediction(params: MachineLearning.Types.CreateBatchPredictionInput, callback?: (err: AWSError, data: MachineLearning.Types.CreateBatchPredictionOutput) => void): Request; - /** - * Generates predictions for a group of observations. The observations to process exist in one or more data files referenced by a DataSource. This operation creates a new BatchPrediction, and uses an MLModel and the data files referenced by the DataSource as information sources. CreateBatchPrediction is an asynchronous operation. In response to CreateBatchPrediction, Amazon Machine Learning (Amazon ML) immediately returns and sets the BatchPrediction status to PENDING. After the BatchPrediction completes, Amazon ML sets the status to COMPLETED. You can poll for status updates by using the GetBatchPrediction operation and checking the Status parameter of the result. After the COMPLETED status appears, the results are available in the location specified by the OutputUri parameter. - */ - createBatchPrediction(callback?: (err: AWSError, data: MachineLearning.Types.CreateBatchPredictionOutput) => void): Request; - /** - * Creates a DataSource object from an Amazon Relational Database Service (Amazon RDS). A DataSource references data that can be used to perform CreateMLModel, CreateEvaluation, or CreateBatchPrediction operations. CreateDataSourceFromRDS is an asynchronous operation. In response to CreateDataSourceFromRDS, Amazon Machine Learning (Amazon ML) immediately returns and sets the DataSource status to PENDING. After the DataSource is created and ready for use, Amazon ML sets the Status parameter to COMPLETED. DataSource in the COMPLETED or PENDING state can be used only to perform >CreateMLModel>, CreateEvaluation, or CreateBatchPrediction operations. If Amazon ML cannot accept the input source, it sets the Status parameter to FAILED and includes an error message in the Message attribute of the GetDataSource operation response. - */ - createDataSourceFromRDS(params: MachineLearning.Types.CreateDataSourceFromRDSInput, callback?: (err: AWSError, data: MachineLearning.Types.CreateDataSourceFromRDSOutput) => void): Request; - /** - * Creates a DataSource object from an Amazon Relational Database Service (Amazon RDS). A DataSource references data that can be used to perform CreateMLModel, CreateEvaluation, or CreateBatchPrediction operations. CreateDataSourceFromRDS is an asynchronous operation. In response to CreateDataSourceFromRDS, Amazon Machine Learning (Amazon ML) immediately returns and sets the DataSource status to PENDING. After the DataSource is created and ready for use, Amazon ML sets the Status parameter to COMPLETED. DataSource in the COMPLETED or PENDING state can be used only to perform >CreateMLModel>, CreateEvaluation, or CreateBatchPrediction operations. If Amazon ML cannot accept the input source, it sets the Status parameter to FAILED and includes an error message in the Message attribute of the GetDataSource operation response. - */ - createDataSourceFromRDS(callback?: (err: AWSError, data: MachineLearning.Types.CreateDataSourceFromRDSOutput) => void): Request; - /** - * Creates a DataSource from a database hosted on an Amazon Redshift cluster. A DataSource references data that can be used to perform either CreateMLModel, CreateEvaluation, or CreateBatchPrediction operations. CreateDataSourceFromRedshift is an asynchronous operation. In response to CreateDataSourceFromRedshift, Amazon Machine Learning (Amazon ML) immediately returns and sets the DataSource status to PENDING. After the DataSource is created and ready for use, Amazon ML sets the Status parameter to COMPLETED. DataSource in COMPLETED or PENDING states can be used to perform only CreateMLModel, CreateEvaluation, or CreateBatchPrediction operations. If Amazon ML can't accept the input source, it sets the Status parameter to FAILED and includes an error message in the Message attribute of the GetDataSource operation response. The observations should be contained in the database hosted on an Amazon Redshift cluster and should be specified by a SelectSqlQuery query. Amazon ML executes an Unload command in Amazon Redshift to transfer the result set of the SelectSqlQuery query to S3StagingLocation. After the DataSource has been created, it's ready for use in evaluations and batch predictions. If you plan to use the DataSource to train an MLModel, the DataSource also requires a recipe. A recipe describes how each input variable will be used in training an MLModel. Will the variable be included or excluded from training? Will the variable be manipulated; for example, will it be combined with another variable or will it be split apart into word combinations? The recipe provides answers to these questions. You can't change an existing datasource, but you can copy and modify the settings from an existing Amazon Redshift datasource to create a new datasource. To do so, call GetDataSource for an existing datasource and copy the values to a CreateDataSource call. Change the settings that you want to change and make sure that all required fields have the appropriate values. - */ - createDataSourceFromRedshift(params: MachineLearning.Types.CreateDataSourceFromRedshiftInput, callback?: (err: AWSError, data: MachineLearning.Types.CreateDataSourceFromRedshiftOutput) => void): Request; - /** - * Creates a DataSource from a database hosted on an Amazon Redshift cluster. A DataSource references data that can be used to perform either CreateMLModel, CreateEvaluation, or CreateBatchPrediction operations. CreateDataSourceFromRedshift is an asynchronous operation. In response to CreateDataSourceFromRedshift, Amazon Machine Learning (Amazon ML) immediately returns and sets the DataSource status to PENDING. After the DataSource is created and ready for use, Amazon ML sets the Status parameter to COMPLETED. DataSource in COMPLETED or PENDING states can be used to perform only CreateMLModel, CreateEvaluation, or CreateBatchPrediction operations. If Amazon ML can't accept the input source, it sets the Status parameter to FAILED and includes an error message in the Message attribute of the GetDataSource operation response. The observations should be contained in the database hosted on an Amazon Redshift cluster and should be specified by a SelectSqlQuery query. Amazon ML executes an Unload command in Amazon Redshift to transfer the result set of the SelectSqlQuery query to S3StagingLocation. After the DataSource has been created, it's ready for use in evaluations and batch predictions. If you plan to use the DataSource to train an MLModel, the DataSource also requires a recipe. A recipe describes how each input variable will be used in training an MLModel. Will the variable be included or excluded from training? Will the variable be manipulated; for example, will it be combined with another variable or will it be split apart into word combinations? The recipe provides answers to these questions. You can't change an existing datasource, but you can copy and modify the settings from an existing Amazon Redshift datasource to create a new datasource. To do so, call GetDataSource for an existing datasource and copy the values to a CreateDataSource call. Change the settings that you want to change and make sure that all required fields have the appropriate values. - */ - createDataSourceFromRedshift(callback?: (err: AWSError, data: MachineLearning.Types.CreateDataSourceFromRedshiftOutput) => void): Request; - /** - * Creates a DataSource object. A DataSource references data that can be used to perform CreateMLModel, CreateEvaluation, or CreateBatchPrediction operations. CreateDataSourceFromS3 is an asynchronous operation. In response to CreateDataSourceFromS3, Amazon Machine Learning (Amazon ML) immediately returns and sets the DataSource status to PENDING. After the DataSource has been created and is ready for use, Amazon ML sets the Status parameter to COMPLETED. DataSource in the COMPLETED or PENDING state can be used to perform only CreateMLModel, CreateEvaluation or CreateBatchPrediction operations. If Amazon ML can't accept the input source, it sets the Status parameter to FAILED and includes an error message in the Message attribute of the GetDataSource operation response. The observation data used in a DataSource should be ready to use; that is, it should have a consistent structure, and missing data values should be kept to a minimum. The observation data must reside in one or more .csv files in an Amazon Simple Storage Service (Amazon S3) location, along with a schema that describes the data items by name and type. The same schema must be used for all of the data files referenced by the DataSource. After the DataSource has been created, it's ready to use in evaluations and batch predictions. If you plan to use the DataSource to train an MLModel, the DataSource also needs a recipe. A recipe describes how each input variable will be used in training an MLModel. Will the variable be included or excluded from training? Will the variable be manipulated; for example, will it be combined with another variable or will it be split apart into word combinations? The recipe provides answers to these questions. - */ - createDataSourceFromS3(params: MachineLearning.Types.CreateDataSourceFromS3Input, callback?: (err: AWSError, data: MachineLearning.Types.CreateDataSourceFromS3Output) => void): Request; - /** - * Creates a DataSource object. A DataSource references data that can be used to perform CreateMLModel, CreateEvaluation, or CreateBatchPrediction operations. CreateDataSourceFromS3 is an asynchronous operation. In response to CreateDataSourceFromS3, Amazon Machine Learning (Amazon ML) immediately returns and sets the DataSource status to PENDING. After the DataSource has been created and is ready for use, Amazon ML sets the Status parameter to COMPLETED. DataSource in the COMPLETED or PENDING state can be used to perform only CreateMLModel, CreateEvaluation or CreateBatchPrediction operations. If Amazon ML can't accept the input source, it sets the Status parameter to FAILED and includes an error message in the Message attribute of the GetDataSource operation response. The observation data used in a DataSource should be ready to use; that is, it should have a consistent structure, and missing data values should be kept to a minimum. The observation data must reside in one or more .csv files in an Amazon Simple Storage Service (Amazon S3) location, along with a schema that describes the data items by name and type. The same schema must be used for all of the data files referenced by the DataSource. After the DataSource has been created, it's ready to use in evaluations and batch predictions. If you plan to use the DataSource to train an MLModel, the DataSource also needs a recipe. A recipe describes how each input variable will be used in training an MLModel. Will the variable be included or excluded from training? Will the variable be manipulated; for example, will it be combined with another variable or will it be split apart into word combinations? The recipe provides answers to these questions. - */ - createDataSourceFromS3(callback?: (err: AWSError, data: MachineLearning.Types.CreateDataSourceFromS3Output) => void): Request; - /** - * Creates a new Evaluation of an MLModel. An MLModel is evaluated on a set of observations associated to a DataSource. Like a DataSource for an MLModel, the DataSource for an Evaluation contains values for the Target Variable. The Evaluation compares the predicted result for each observation to the actual outcome and provides a summary so that you know how effective the MLModel functions on the test data. Evaluation generates a relevant performance metric, such as BinaryAUC, RegressionRMSE or MulticlassAvgFScore based on the corresponding MLModelType: BINARY, REGRESSION or MULTICLASS. CreateEvaluation is an asynchronous operation. In response to CreateEvaluation, Amazon Machine Learning (Amazon ML) immediately returns and sets the evaluation status to PENDING. After the Evaluation is created and ready for use, Amazon ML sets the status to COMPLETED. You can use the GetEvaluation operation to check progress of the evaluation during the creation operation. - */ - createEvaluation(params: MachineLearning.Types.CreateEvaluationInput, callback?: (err: AWSError, data: MachineLearning.Types.CreateEvaluationOutput) => void): Request; - /** - * Creates a new Evaluation of an MLModel. An MLModel is evaluated on a set of observations associated to a DataSource. Like a DataSource for an MLModel, the DataSource for an Evaluation contains values for the Target Variable. The Evaluation compares the predicted result for each observation to the actual outcome and provides a summary so that you know how effective the MLModel functions on the test data. Evaluation generates a relevant performance metric, such as BinaryAUC, RegressionRMSE or MulticlassAvgFScore based on the corresponding MLModelType: BINARY, REGRESSION or MULTICLASS. CreateEvaluation is an asynchronous operation. In response to CreateEvaluation, Amazon Machine Learning (Amazon ML) immediately returns and sets the evaluation status to PENDING. After the Evaluation is created and ready for use, Amazon ML sets the status to COMPLETED. You can use the GetEvaluation operation to check progress of the evaluation during the creation operation. - */ - createEvaluation(callback?: (err: AWSError, data: MachineLearning.Types.CreateEvaluationOutput) => void): Request; - /** - * Creates a new MLModel using the DataSource and the recipe as information sources. An MLModel is nearly immutable. Users can update only the MLModelName and the ScoreThreshold in an MLModel without creating a new MLModel. CreateMLModel is an asynchronous operation. In response to CreateMLModel, Amazon Machine Learning (Amazon ML) immediately returns and sets the MLModel status to PENDING. After the MLModel has been created and ready is for use, Amazon ML sets the status to COMPLETED. You can use the GetMLModel operation to check the progress of the MLModel during the creation operation. CreateMLModel requires a DataSource with computed statistics, which can be created by setting ComputeStatistics to true in CreateDataSourceFromRDS, CreateDataSourceFromS3, or CreateDataSourceFromRedshift operations. - */ - createMLModel(params: MachineLearning.Types.CreateMLModelInput, callback?: (err: AWSError, data: MachineLearning.Types.CreateMLModelOutput) => void): Request; - /** - * Creates a new MLModel using the DataSource and the recipe as information sources. An MLModel is nearly immutable. Users can update only the MLModelName and the ScoreThreshold in an MLModel without creating a new MLModel. CreateMLModel is an asynchronous operation. In response to CreateMLModel, Amazon Machine Learning (Amazon ML) immediately returns and sets the MLModel status to PENDING. After the MLModel has been created and ready is for use, Amazon ML sets the status to COMPLETED. You can use the GetMLModel operation to check the progress of the MLModel during the creation operation. CreateMLModel requires a DataSource with computed statistics, which can be created by setting ComputeStatistics to true in CreateDataSourceFromRDS, CreateDataSourceFromS3, or CreateDataSourceFromRedshift operations. - */ - createMLModel(callback?: (err: AWSError, data: MachineLearning.Types.CreateMLModelOutput) => void): Request; - /** - * Creates a real-time endpoint for the MLModel. The endpoint contains the URI of the MLModel; that is, the location to send real-time prediction requests for the specified MLModel. - */ - createRealtimeEndpoint(params: MachineLearning.Types.CreateRealtimeEndpointInput, callback?: (err: AWSError, data: MachineLearning.Types.CreateRealtimeEndpointOutput) => void): Request; - /** - * Creates a real-time endpoint for the MLModel. The endpoint contains the URI of the MLModel; that is, the location to send real-time prediction requests for the specified MLModel. - */ - createRealtimeEndpoint(callback?: (err: AWSError, data: MachineLearning.Types.CreateRealtimeEndpointOutput) => void): Request; - /** - * Assigns the DELETED status to a BatchPrediction, rendering it unusable. After using the DeleteBatchPrediction operation, you can use the GetBatchPrediction operation to verify that the status of the BatchPrediction changed to DELETED. Caution: The result of the DeleteBatchPrediction operation is irreversible. - */ - deleteBatchPrediction(params: MachineLearning.Types.DeleteBatchPredictionInput, callback?: (err: AWSError, data: MachineLearning.Types.DeleteBatchPredictionOutput) => void): Request; - /** - * Assigns the DELETED status to a BatchPrediction, rendering it unusable. After using the DeleteBatchPrediction operation, you can use the GetBatchPrediction operation to verify that the status of the BatchPrediction changed to DELETED. Caution: The result of the DeleteBatchPrediction operation is irreversible. - */ - deleteBatchPrediction(callback?: (err: AWSError, data: MachineLearning.Types.DeleteBatchPredictionOutput) => void): Request; - /** - * Assigns the DELETED status to a DataSource, rendering it unusable. After using the DeleteDataSource operation, you can use the GetDataSource operation to verify that the status of the DataSource changed to DELETED. Caution: The results of the DeleteDataSource operation are irreversible. - */ - deleteDataSource(params: MachineLearning.Types.DeleteDataSourceInput, callback?: (err: AWSError, data: MachineLearning.Types.DeleteDataSourceOutput) => void): Request; - /** - * Assigns the DELETED status to a DataSource, rendering it unusable. After using the DeleteDataSource operation, you can use the GetDataSource operation to verify that the status of the DataSource changed to DELETED. Caution: The results of the DeleteDataSource operation are irreversible. - */ - deleteDataSource(callback?: (err: AWSError, data: MachineLearning.Types.DeleteDataSourceOutput) => void): Request; - /** - * Assigns the DELETED status to an Evaluation, rendering it unusable. After invoking the DeleteEvaluation operation, you can use the GetEvaluation operation to verify that the status of the Evaluation changed to DELETED. Caution The results of the DeleteEvaluation operation are irreversible. - */ - deleteEvaluation(params: MachineLearning.Types.DeleteEvaluationInput, callback?: (err: AWSError, data: MachineLearning.Types.DeleteEvaluationOutput) => void): Request; - /** - * Assigns the DELETED status to an Evaluation, rendering it unusable. After invoking the DeleteEvaluation operation, you can use the GetEvaluation operation to verify that the status of the Evaluation changed to DELETED. Caution The results of the DeleteEvaluation operation are irreversible. - */ - deleteEvaluation(callback?: (err: AWSError, data: MachineLearning.Types.DeleteEvaluationOutput) => void): Request; - /** - * Assigns the DELETED status to an MLModel, rendering it unusable. After using the DeleteMLModel operation, you can use the GetMLModel operation to verify that the status of the MLModel changed to DELETED. Caution: The result of the DeleteMLModel operation is irreversible. - */ - deleteMLModel(params: MachineLearning.Types.DeleteMLModelInput, callback?: (err: AWSError, data: MachineLearning.Types.DeleteMLModelOutput) => void): Request; - /** - * Assigns the DELETED status to an MLModel, rendering it unusable. After using the DeleteMLModel operation, you can use the GetMLModel operation to verify that the status of the MLModel changed to DELETED. Caution: The result of the DeleteMLModel operation is irreversible. - */ - deleteMLModel(callback?: (err: AWSError, data: MachineLearning.Types.DeleteMLModelOutput) => void): Request; - /** - * Deletes a real time endpoint of an MLModel. - */ - deleteRealtimeEndpoint(params: MachineLearning.Types.DeleteRealtimeEndpointInput, callback?: (err: AWSError, data: MachineLearning.Types.DeleteRealtimeEndpointOutput) => void): Request; - /** - * Deletes a real time endpoint of an MLModel. - */ - deleteRealtimeEndpoint(callback?: (err: AWSError, data: MachineLearning.Types.DeleteRealtimeEndpointOutput) => void): Request; - /** - * Deletes the specified tags associated with an ML object. After this operation is complete, you can't recover deleted tags. If you specify a tag that doesn't exist, Amazon ML ignores it. - */ - deleteTags(params: MachineLearning.Types.DeleteTagsInput, callback?: (err: AWSError, data: MachineLearning.Types.DeleteTagsOutput) => void): Request; - /** - * Deletes the specified tags associated with an ML object. After this operation is complete, you can't recover deleted tags. If you specify a tag that doesn't exist, Amazon ML ignores it. - */ - deleteTags(callback?: (err: AWSError, data: MachineLearning.Types.DeleteTagsOutput) => void): Request; - /** - * Returns a list of BatchPrediction operations that match the search criteria in the request. - */ - describeBatchPredictions(params: MachineLearning.Types.DescribeBatchPredictionsInput, callback?: (err: AWSError, data: MachineLearning.Types.DescribeBatchPredictionsOutput) => void): Request; - /** - * Returns a list of BatchPrediction operations that match the search criteria in the request. - */ - describeBatchPredictions(callback?: (err: AWSError, data: MachineLearning.Types.DescribeBatchPredictionsOutput) => void): Request; - /** - * Returns a list of DataSource that match the search criteria in the request. - */ - describeDataSources(params: MachineLearning.Types.DescribeDataSourcesInput, callback?: (err: AWSError, data: MachineLearning.Types.DescribeDataSourcesOutput) => void): Request; - /** - * Returns a list of DataSource that match the search criteria in the request. - */ - describeDataSources(callback?: (err: AWSError, data: MachineLearning.Types.DescribeDataSourcesOutput) => void): Request; - /** - * Returns a list of DescribeEvaluations that match the search criteria in the request. - */ - describeEvaluations(params: MachineLearning.Types.DescribeEvaluationsInput, callback?: (err: AWSError, data: MachineLearning.Types.DescribeEvaluationsOutput) => void): Request; - /** - * Returns a list of DescribeEvaluations that match the search criteria in the request. - */ - describeEvaluations(callback?: (err: AWSError, data: MachineLearning.Types.DescribeEvaluationsOutput) => void): Request; - /** - * Returns a list of MLModel that match the search criteria in the request. - */ - describeMLModels(params: MachineLearning.Types.DescribeMLModelsInput, callback?: (err: AWSError, data: MachineLearning.Types.DescribeMLModelsOutput) => void): Request; - /** - * Returns a list of MLModel that match the search criteria in the request. - */ - describeMLModels(callback?: (err: AWSError, data: MachineLearning.Types.DescribeMLModelsOutput) => void): Request; - /** - * Describes one or more of the tags for your Amazon ML object. - */ - describeTags(params: MachineLearning.Types.DescribeTagsInput, callback?: (err: AWSError, data: MachineLearning.Types.DescribeTagsOutput) => void): Request; - /** - * Describes one or more of the tags for your Amazon ML object. - */ - describeTags(callback?: (err: AWSError, data: MachineLearning.Types.DescribeTagsOutput) => void): Request; - /** - * Returns a BatchPrediction that includes detailed metadata, status, and data file information for a Batch Prediction request. - */ - getBatchPrediction(params: MachineLearning.Types.GetBatchPredictionInput, callback?: (err: AWSError, data: MachineLearning.Types.GetBatchPredictionOutput) => void): Request; - /** - * Returns a BatchPrediction that includes detailed metadata, status, and data file information for a Batch Prediction request. - */ - getBatchPrediction(callback?: (err: AWSError, data: MachineLearning.Types.GetBatchPredictionOutput) => void): Request; - /** - * Returns a DataSource that includes metadata and data file information, as well as the current status of the DataSource. GetDataSource provides results in normal or verbose format. The verbose format adds the schema description and the list of files pointed to by the DataSource to the normal format. - */ - getDataSource(params: MachineLearning.Types.GetDataSourceInput, callback?: (err: AWSError, data: MachineLearning.Types.GetDataSourceOutput) => void): Request; - /** - * Returns a DataSource that includes metadata and data file information, as well as the current status of the DataSource. GetDataSource provides results in normal or verbose format. The verbose format adds the schema description and the list of files pointed to by the DataSource to the normal format. - */ - getDataSource(callback?: (err: AWSError, data: MachineLearning.Types.GetDataSourceOutput) => void): Request; - /** - * Returns an Evaluation that includes metadata as well as the current status of the Evaluation. - */ - getEvaluation(params: MachineLearning.Types.GetEvaluationInput, callback?: (err: AWSError, data: MachineLearning.Types.GetEvaluationOutput) => void): Request; - /** - * Returns an Evaluation that includes metadata as well as the current status of the Evaluation. - */ - getEvaluation(callback?: (err: AWSError, data: MachineLearning.Types.GetEvaluationOutput) => void): Request; - /** - * Returns an MLModel that includes detailed metadata, data source information, and the current status of the MLModel. GetMLModel provides results in normal or verbose format. - */ - getMLModel(params: MachineLearning.Types.GetMLModelInput, callback?: (err: AWSError, data: MachineLearning.Types.GetMLModelOutput) => void): Request; - /** - * Returns an MLModel that includes detailed metadata, data source information, and the current status of the MLModel. GetMLModel provides results in normal or verbose format. - */ - getMLModel(callback?: (err: AWSError, data: MachineLearning.Types.GetMLModelOutput) => void): Request; - /** - * Generates a prediction for the observation using the specified ML Model. Note Not all response parameters will be populated. Whether a response parameter is populated depends on the type of model requested. - */ - predict(params: MachineLearning.Types.PredictInput, callback?: (err: AWSError, data: MachineLearning.Types.PredictOutput) => void): Request; - /** - * Generates a prediction for the observation using the specified ML Model. Note Not all response parameters will be populated. Whether a response parameter is populated depends on the type of model requested. - */ - predict(callback?: (err: AWSError, data: MachineLearning.Types.PredictOutput) => void): Request; - /** - * Updates the BatchPredictionName of a BatchPrediction. You can use the GetBatchPrediction operation to view the contents of the updated data element. - */ - updateBatchPrediction(params: MachineLearning.Types.UpdateBatchPredictionInput, callback?: (err: AWSError, data: MachineLearning.Types.UpdateBatchPredictionOutput) => void): Request; - /** - * Updates the BatchPredictionName of a BatchPrediction. You can use the GetBatchPrediction operation to view the contents of the updated data element. - */ - updateBatchPrediction(callback?: (err: AWSError, data: MachineLearning.Types.UpdateBatchPredictionOutput) => void): Request; - /** - * Updates the DataSourceName of a DataSource. You can use the GetDataSource operation to view the contents of the updated data element. - */ - updateDataSource(params: MachineLearning.Types.UpdateDataSourceInput, callback?: (err: AWSError, data: MachineLearning.Types.UpdateDataSourceOutput) => void): Request; - /** - * Updates the DataSourceName of a DataSource. You can use the GetDataSource operation to view the contents of the updated data element. - */ - updateDataSource(callback?: (err: AWSError, data: MachineLearning.Types.UpdateDataSourceOutput) => void): Request; - /** - * Updates the EvaluationName of an Evaluation. You can use the GetEvaluation operation to view the contents of the updated data element. - */ - updateEvaluation(params: MachineLearning.Types.UpdateEvaluationInput, callback?: (err: AWSError, data: MachineLearning.Types.UpdateEvaluationOutput) => void): Request; - /** - * Updates the EvaluationName of an Evaluation. You can use the GetEvaluation operation to view the contents of the updated data element. - */ - updateEvaluation(callback?: (err: AWSError, data: MachineLearning.Types.UpdateEvaluationOutput) => void): Request; - /** - * Updates the MLModelName and the ScoreThreshold of an MLModel. You can use the GetMLModel operation to view the contents of the updated data element. - */ - updateMLModel(params: MachineLearning.Types.UpdateMLModelInput, callback?: (err: AWSError, data: MachineLearning.Types.UpdateMLModelOutput) => void): Request; - /** - * Updates the MLModelName and the ScoreThreshold of an MLModel. You can use the GetMLModel operation to view the contents of the updated data element. - */ - updateMLModel(callback?: (err: AWSError, data: MachineLearning.Types.UpdateMLModelOutput) => void): Request; - /** - * Waits for the dataSourceAvailable state by periodically calling the underlying MachineLearning.describeDataSourcesoperation every 30 seconds (at most 60 times). - */ - waitFor(state: "dataSourceAvailable", params: MachineLearning.Types.DescribeDataSourcesInput, callback?: (err: AWSError, data: MachineLearning.Types.DescribeDataSourcesOutput) => void): Request; - /** - * Waits for the dataSourceAvailable state by periodically calling the underlying MachineLearning.describeDataSourcesoperation every 30 seconds (at most 60 times). - */ - waitFor(state: "dataSourceAvailable", callback?: (err: AWSError, data: MachineLearning.Types.DescribeDataSourcesOutput) => void): Request; - /** - * Waits for the mLModelAvailable state by periodically calling the underlying MachineLearning.describeMLModelsoperation every 30 seconds (at most 60 times). - */ - waitFor(state: "mLModelAvailable", params: MachineLearning.Types.DescribeMLModelsInput, callback?: (err: AWSError, data: MachineLearning.Types.DescribeMLModelsOutput) => void): Request; - /** - * Waits for the mLModelAvailable state by periodically calling the underlying MachineLearning.describeMLModelsoperation every 30 seconds (at most 60 times). - */ - waitFor(state: "mLModelAvailable", callback?: (err: AWSError, data: MachineLearning.Types.DescribeMLModelsOutput) => void): Request; - /** - * Waits for the evaluationAvailable state by periodically calling the underlying MachineLearning.describeEvaluationsoperation every 30 seconds (at most 60 times). - */ - waitFor(state: "evaluationAvailable", params: MachineLearning.Types.DescribeEvaluationsInput, callback?: (err: AWSError, data: MachineLearning.Types.DescribeEvaluationsOutput) => void): Request; - /** - * Waits for the evaluationAvailable state by periodically calling the underlying MachineLearning.describeEvaluationsoperation every 30 seconds (at most 60 times). - */ - waitFor(state: "evaluationAvailable", callback?: (err: AWSError, data: MachineLearning.Types.DescribeEvaluationsOutput) => void): Request; - /** - * Waits for the batchPredictionAvailable state by periodically calling the underlying MachineLearning.describeBatchPredictionsoperation every 30 seconds (at most 60 times). - */ - waitFor(state: "batchPredictionAvailable", params: MachineLearning.Types.DescribeBatchPredictionsInput, callback?: (err: AWSError, data: MachineLearning.Types.DescribeBatchPredictionsOutput) => void): Request; - /** - * Waits for the batchPredictionAvailable state by periodically calling the underlying MachineLearning.describeBatchPredictionsoperation every 30 seconds (at most 60 times). - */ - waitFor(state: "batchPredictionAvailable", callback?: (err: AWSError, data: MachineLearning.Types.DescribeBatchPredictionsOutput) => void): Request; -} -declare namespace MachineLearning { - export interface AddTagsInput { - /** - * The key-value pairs to use to create tags. If you specify a key without specifying a value, Amazon ML creates a tag with the specified key and a value of null. - */ - Tags: TagList; - /** - * The ID of the ML object to tag. For example, exampleModelId. - */ - ResourceId: EntityId; - /** - * The type of the ML object to tag. - */ - ResourceType: TaggableResourceType; - } - export interface AddTagsOutput { - /** - * The ID of the ML object that was tagged. - */ - ResourceId?: EntityId; - /** - * The type of the ML object that was tagged. - */ - ResourceType?: TaggableResourceType; - } - export type Algorithm = "sgd"|string; - export type AwsUserArn = string; - export interface BatchPrediction { - /** - * The ID assigned to the BatchPrediction at creation. This value should be identical to the value of the BatchPredictionID in the request. - */ - BatchPredictionId?: EntityId; - /** - * The ID of the MLModel that generated predictions for the BatchPrediction request. - */ - MLModelId?: EntityId; - /** - * The ID of the DataSource that points to the group of observations to predict. - */ - BatchPredictionDataSourceId?: EntityId; - /** - * The location of the data file or directory in Amazon Simple Storage Service (Amazon S3). - */ - InputDataLocationS3?: S3Url; - /** - * The AWS user account that invoked the BatchPrediction. The account type can be either an AWS root account or an AWS Identity and Access Management (IAM) user account. - */ - CreatedByIamUser?: AwsUserArn; - /** - * The time that the BatchPrediction was created. The time is expressed in epoch time. - */ - CreatedAt?: EpochTime; - /** - * The time of the most recent edit to the BatchPrediction. The time is expressed in epoch time. - */ - LastUpdatedAt?: EpochTime; - /** - * A user-supplied name or description of the BatchPrediction. - */ - Name?: EntityName; - /** - * The status of the BatchPrediction. This element can have one of the following values: PENDING - Amazon Machine Learning (Amazon ML) submitted a request to generate predictions for a batch of observations. INPROGRESS - The process is underway. FAILED - The request to perform a batch prediction did not run to completion. It is not usable. COMPLETED - The batch prediction process completed successfully. DELETED - The BatchPrediction is marked as deleted. It is not usable. - */ - Status?: EntityStatus; - /** - * The location of an Amazon S3 bucket or directory to receive the operation results. The following substrings are not allowed in the s3 key portion of the outputURI field: ':', '//', '/./', '/../'. - */ - OutputUri?: S3Url; - /** - * A description of the most recent details about processing the batch prediction request. - */ - Message?: Message; - ComputeTime?: LongType; - FinishedAt?: EpochTime; - StartedAt?: EpochTime; - TotalRecordCount?: LongType; - InvalidRecordCount?: LongType; - } - export type BatchPredictionFilterVariable = "CreatedAt"|"LastUpdatedAt"|"Status"|"Name"|"IAMUser"|"MLModelId"|"DataSourceId"|"DataURI"|string; - export type BatchPredictions = BatchPrediction[]; - export type ComparatorValue = string; - export type ComputeStatistics = boolean; - export interface CreateBatchPredictionInput { - /** - * A user-supplied ID that uniquely identifies the BatchPrediction. - */ - BatchPredictionId: EntityId; - /** - * A user-supplied name or description of the BatchPrediction. BatchPredictionName can only use the UTF-8 character set. - */ - BatchPredictionName?: EntityName; - /** - * The ID of the MLModel that will generate predictions for the group of observations. - */ - MLModelId: EntityId; - /** - * The ID of the DataSource that points to the group of observations to predict. - */ - BatchPredictionDataSourceId: EntityId; - /** - * The location of an Amazon Simple Storage Service (Amazon S3) bucket or directory to store the batch prediction results. The following substrings are not allowed in the s3 key portion of the outputURI field: ':', '//', '/./', '/../'. Amazon ML needs permissions to store and retrieve the logs on your behalf. For information about how to set permissions, see the Amazon Machine Learning Developer Guide. - */ - OutputUri: S3Url; - } - export interface CreateBatchPredictionOutput { - /** - * A user-supplied ID that uniquely identifies the BatchPrediction. This value is identical to the value of the BatchPredictionId in the request. - */ - BatchPredictionId?: EntityId; - } - export interface CreateDataSourceFromRDSInput { - /** - * A user-supplied ID that uniquely identifies the DataSource. Typically, an Amazon Resource Number (ARN) becomes the ID for a DataSource. - */ - DataSourceId: EntityId; - /** - * A user-supplied name or description of the DataSource. - */ - DataSourceName?: EntityName; - /** - * The data specification of an Amazon RDS DataSource: DatabaseInformation - DatabaseName - The name of the Amazon RDS database. InstanceIdentifier - A unique identifier for the Amazon RDS database instance. DatabaseCredentials - AWS Identity and Access Management (IAM) credentials that are used to connect to the Amazon RDS database. ResourceRole - A role (DataPipelineDefaultResourceRole) assumed by an EC2 instance to carry out the copy task from Amazon RDS to Amazon Simple Storage Service (Amazon S3). For more information, see Role templates for data pipelines. ServiceRole - A role (DataPipelineDefaultRole) assumed by the AWS Data Pipeline service to monitor the progress of the copy task from Amazon RDS to Amazon S3. For more information, see Role templates for data pipelines. SecurityInfo - The security information to use to access an RDS DB instance. You need to set up appropriate ingress rules for the security entity IDs provided to allow access to the Amazon RDS instance. Specify a [SubnetId, SecurityGroupIds] pair for a VPC-based RDS DB instance. SelectSqlQuery - A query that is used to retrieve the observation data for the Datasource. S3StagingLocation - The Amazon S3 location for staging Amazon RDS data. The data retrieved from Amazon RDS using SelectSqlQuery is stored in this location. DataSchemaUri - The Amazon S3 location of the DataSchema. DataSchema - A JSON string representing the schema. This is not required if DataSchemaUri is specified. DataRearrangement - A JSON string that represents the splitting and rearrangement requirements for the Datasource. Sample - "{\"splitting\":{\"percentBegin\":10,\"percentEnd\":60}}" - */ - RDSData: RDSDataSpec; - /** - * The role that Amazon ML assumes on behalf of the user to create and activate a data pipeline in the user's account and copy data using the SelectSqlQuery query from Amazon RDS to Amazon S3. - */ - RoleARN: RoleARN; - /** - * The compute statistics for a DataSource. The statistics are generated from the observation data referenced by a DataSource. Amazon ML uses the statistics internally during MLModel training. This parameter must be set to true if the DataSource needs to be used for MLModel training. - */ - ComputeStatistics?: ComputeStatistics; - } - export interface CreateDataSourceFromRDSOutput { - /** - * A user-supplied ID that uniquely identifies the datasource. This value should be identical to the value of the DataSourceID in the request. - */ - DataSourceId?: EntityId; - } - export interface CreateDataSourceFromRedshiftInput { - /** - * A user-supplied ID that uniquely identifies the DataSource. - */ - DataSourceId: EntityId; - /** - * A user-supplied name or description of the DataSource. - */ - DataSourceName?: EntityName; - /** - * The data specification of an Amazon Redshift DataSource: DatabaseInformation - DatabaseName - The name of the Amazon Redshift database. ClusterIdentifier - The unique ID for the Amazon Redshift cluster. DatabaseCredentials - The AWS Identity and Access Management (IAM) credentials that are used to connect to the Amazon Redshift database. SelectSqlQuery - The query that is used to retrieve the observation data for the Datasource. S3StagingLocation - The Amazon Simple Storage Service (Amazon S3) location for staging Amazon Redshift data. The data retrieved from Amazon Redshift using the SelectSqlQuery query is stored in this location. DataSchemaUri - The Amazon S3 location of the DataSchema. DataSchema - A JSON string representing the schema. This is not required if DataSchemaUri is specified. DataRearrangement - A JSON string that represents the splitting and rearrangement requirements for the DataSource. Sample - "{\"splitting\":{\"percentBegin\":10,\"percentEnd\":60}}" - */ - DataSpec: RedshiftDataSpec; - /** - * A fully specified role Amazon Resource Name (ARN). Amazon ML assumes the role on behalf of the user to create the following: A security group to allow Amazon ML to execute the SelectSqlQuery query on an Amazon Redshift cluster An Amazon S3 bucket policy to grant Amazon ML read/write permissions on the S3StagingLocation - */ - RoleARN: RoleARN; - /** - * The compute statistics for a DataSource. The statistics are generated from the observation data referenced by a DataSource. Amazon ML uses the statistics internally during MLModel training. This parameter must be set to true if the DataSource needs to be used for MLModel training. - */ - ComputeStatistics?: ComputeStatistics; - } - export interface CreateDataSourceFromRedshiftOutput { - /** - * A user-supplied ID that uniquely identifies the datasource. This value should be identical to the value of the DataSourceID in the request. - */ - DataSourceId?: EntityId; - } - export interface CreateDataSourceFromS3Input { - /** - * A user-supplied identifier that uniquely identifies the DataSource. - */ - DataSourceId: EntityId; - /** - * A user-supplied name or description of the DataSource. - */ - DataSourceName?: EntityName; - /** - * The data specification of a DataSource: DataLocationS3 - The Amazon S3 location of the observation data. DataSchemaLocationS3 - The Amazon S3 location of the DataSchema. DataSchema - A JSON string representing the schema. This is not required if DataSchemaUri is specified. DataRearrangement - A JSON string that represents the splitting and rearrangement requirements for the Datasource. Sample - "{\"splitting\":{\"percentBegin\":10,\"percentEnd\":60}}" - */ - DataSpec: S3DataSpec; - /** - * The compute statistics for a DataSource. The statistics are generated from the observation data referenced by a DataSource. Amazon ML uses the statistics internally during MLModel training. This parameter must be set to true if the DataSource needs to be used for MLModel training. - */ - ComputeStatistics?: ComputeStatistics; - } - export interface CreateDataSourceFromS3Output { - /** - * A user-supplied ID that uniquely identifies the DataSource. This value should be identical to the value of the DataSourceID in the request. - */ - DataSourceId?: EntityId; - } - export interface CreateEvaluationInput { - /** - * A user-supplied ID that uniquely identifies the Evaluation. - */ - EvaluationId: EntityId; - /** - * A user-supplied name or description of the Evaluation. - */ - EvaluationName?: EntityName; - /** - * The ID of the MLModel to evaluate. The schema used in creating the MLModel must match the schema of the DataSource used in the Evaluation. - */ - MLModelId: EntityId; - /** - * The ID of the DataSource for the evaluation. The schema of the DataSource must match the schema used to create the MLModel. - */ - EvaluationDataSourceId: EntityId; - } - export interface CreateEvaluationOutput { - /** - * The user-supplied ID that uniquely identifies the Evaluation. This value should be identical to the value of the EvaluationId in the request. - */ - EvaluationId?: EntityId; - } - export interface CreateMLModelInput { - /** - * A user-supplied ID that uniquely identifies the MLModel. - */ - MLModelId: EntityId; - /** - * A user-supplied name or description of the MLModel. - */ - MLModelName?: EntityName; - /** - * The category of supervised learning that this MLModel will address. Choose from the following types: Choose REGRESSION if the MLModel will be used to predict a numeric value. Choose BINARY if the MLModel result has two possible values. Choose MULTICLASS if the MLModel result has a limited number of values. For more information, see the Amazon Machine Learning Developer Guide. - */ - MLModelType: MLModelType; - /** - * A list of the training parameters in the MLModel. The list is implemented as a map of key-value pairs. The following is the current set of training parameters: sgd.maxMLModelSizeInBytes - The maximum allowed size of the model. Depending on the input data, the size of the model might affect its performance. The value is an integer that ranges from 100000 to 2147483648. The default value is 33554432. sgd.maxPasses - The number of times that the training process traverses the observations to build the MLModel. The value is an integer that ranges from 1 to 10000. The default value is 10. sgd.shuffleType - Whether Amazon ML shuffles the training data. Shuffling the data improves a model's ability to find the optimal solution for a variety of data types. The valid values are auto and none. The default value is none. We strongly recommend that you shuffle your data. sgd.l1RegularizationAmount - The coefficient regularization L1 norm. It controls overfitting the data by penalizing large coefficients. This tends to drive coefficients to zero, resulting in a sparse feature set. If you use this parameter, start by specifying a small value, such as 1.0E-08. The value is a double that ranges from 0 to MAX_DOUBLE. The default is to not use L1 normalization. This parameter can't be used when L2 is specified. Use this parameter sparingly. sgd.l2RegularizationAmount - The coefficient regularization L2 norm. It controls overfitting the data by penalizing large coefficients. This tends to drive coefficients to small, nonzero values. If you use this parameter, start by specifying a small value, such as 1.0E-08. The value is a double that ranges from 0 to MAX_DOUBLE. The default is to not use L2 normalization. This parameter can't be used when L1 is specified. Use this parameter sparingly. - */ - Parameters?: TrainingParameters; - /** - * The DataSource that points to the training data. - */ - TrainingDataSourceId: EntityId; - /** - * The data recipe for creating the MLModel. You must specify either the recipe or its URI. If you don't specify a recipe or its URI, Amazon ML creates a default. - */ - Recipe?: Recipe; - /** - * The Amazon Simple Storage Service (Amazon S3) location and file name that contains the MLModel recipe. You must specify either the recipe or its URI. If you don't specify a recipe or its URI, Amazon ML creates a default. - */ - RecipeUri?: S3Url; - } - export interface CreateMLModelOutput { - /** - * A user-supplied ID that uniquely identifies the MLModel. This value should be identical to the value of the MLModelId in the request. - */ - MLModelId?: EntityId; - } - export interface CreateRealtimeEndpointInput { - /** - * The ID assigned to the MLModel during creation. - */ - MLModelId: EntityId; - } - export interface CreateRealtimeEndpointOutput { - /** - * A user-supplied ID that uniquely identifies the MLModel. This value should be identical to the value of the MLModelId in the request. - */ - MLModelId?: EntityId; - /** - * The endpoint information of the MLModel - */ - RealtimeEndpointInfo?: RealtimeEndpointInfo; - } - export type DataRearrangement = string; - export type DataSchema = string; - export interface DataSource { - /** - * The ID that is assigned to the DataSource during creation. - */ - DataSourceId?: EntityId; - /** - * The location and name of the data in Amazon Simple Storage Service (Amazon S3) that is used by a DataSource. - */ - DataLocationS3?: S3Url; - /** - * A JSON string that represents the splitting and rearrangement requirement used when this DataSource was created. - */ - DataRearrangement?: DataRearrangement; - /** - * The AWS user account from which the DataSource was created. The account type can be either an AWS root account or an AWS Identity and Access Management (IAM) user account. - */ - CreatedByIamUser?: AwsUserArn; - /** - * The time that the DataSource was created. The time is expressed in epoch time. - */ - CreatedAt?: EpochTime; - /** - * The time of the most recent edit to the BatchPrediction. The time is expressed in epoch time. - */ - LastUpdatedAt?: EpochTime; - /** - * The total number of observations contained in the data files that the DataSource references. - */ - DataSizeInBytes?: LongType; - /** - * The number of data files referenced by the DataSource. - */ - NumberOfFiles?: LongType; - /** - * A user-supplied name or description of the DataSource. - */ - Name?: EntityName; - /** - * The current status of the DataSource. This element can have one of the following values: PENDING - Amazon Machine Learning (Amazon ML) submitted a request to create a DataSource. INPROGRESS - The creation process is underway. FAILED - The request to create a DataSource did not run to completion. It is not usable. COMPLETED - The creation process completed successfully. DELETED - The DataSource is marked as deleted. It is not usable. - */ - Status?: EntityStatus; - /** - * A description of the most recent details about creating the DataSource. - */ - Message?: Message; - RedshiftMetadata?: RedshiftMetadata; - RDSMetadata?: RDSMetadata; - RoleARN?: RoleARN; - /** - * The parameter is true if statistics need to be generated from the observation data. - */ - ComputeStatistics?: ComputeStatistics; - ComputeTime?: LongType; - FinishedAt?: EpochTime; - StartedAt?: EpochTime; - } - export type DataSourceFilterVariable = "CreatedAt"|"LastUpdatedAt"|"Status"|"Name"|"DataLocationS3"|"IAMUser"|string; - export type DataSources = DataSource[]; - export interface DeleteBatchPredictionInput { - /** - * A user-supplied ID that uniquely identifies the BatchPrediction. - */ - BatchPredictionId: EntityId; - } - export interface DeleteBatchPredictionOutput { - /** - * A user-supplied ID that uniquely identifies the BatchPrediction. This value should be identical to the value of the BatchPredictionID in the request. - */ - BatchPredictionId?: EntityId; - } - export interface DeleteDataSourceInput { - /** - * A user-supplied ID that uniquely identifies the DataSource. - */ - DataSourceId: EntityId; - } - export interface DeleteDataSourceOutput { - /** - * A user-supplied ID that uniquely identifies the DataSource. This value should be identical to the value of the DataSourceID in the request. - */ - DataSourceId?: EntityId; - } - export interface DeleteEvaluationInput { - /** - * A user-supplied ID that uniquely identifies the Evaluation to delete. - */ - EvaluationId: EntityId; - } - export interface DeleteEvaluationOutput { - /** - * A user-supplied ID that uniquely identifies the Evaluation. This value should be identical to the value of the EvaluationId in the request. - */ - EvaluationId?: EntityId; - } - export interface DeleteMLModelInput { - /** - * A user-supplied ID that uniquely identifies the MLModel. - */ - MLModelId: EntityId; - } - export interface DeleteMLModelOutput { - /** - * A user-supplied ID that uniquely identifies the MLModel. This value should be identical to the value of the MLModelID in the request. - */ - MLModelId?: EntityId; - } - export interface DeleteRealtimeEndpointInput { - /** - * The ID assigned to the MLModel during creation. - */ - MLModelId: EntityId; - } - export interface DeleteRealtimeEndpointOutput { - /** - * A user-supplied ID that uniquely identifies the MLModel. This value should be identical to the value of the MLModelId in the request. - */ - MLModelId?: EntityId; - /** - * The endpoint information of the MLModel - */ - RealtimeEndpointInfo?: RealtimeEndpointInfo; - } - export interface DeleteTagsInput { - /** - * One or more tags to delete. - */ - TagKeys: TagKeyList; - /** - * The ID of the tagged ML object. For example, exampleModelId. - */ - ResourceId: EntityId; - /** - * The type of the tagged ML object. - */ - ResourceType: TaggableResourceType; - } - export interface DeleteTagsOutput { - /** - * The ID of the ML object from which tags were deleted. - */ - ResourceId?: EntityId; - /** - * The type of the ML object from which tags were deleted. - */ - ResourceType?: TaggableResourceType; - } - export interface DescribeBatchPredictionsInput { - /** - * Use one of the following variables to filter a list of BatchPrediction: CreatedAt - Sets the search criteria to the BatchPrediction creation date. Status - Sets the search criteria to the BatchPrediction status. Name - Sets the search criteria to the contents of the BatchPrediction Name. IAMUser - Sets the search criteria to the user account that invoked the BatchPrediction creation. MLModelId - Sets the search criteria to the MLModel used in the BatchPrediction. DataSourceId - Sets the search criteria to the DataSource used in the BatchPrediction. DataURI - Sets the search criteria to the data file(s) used in the BatchPrediction. The URL can identify either a file or an Amazon Simple Storage Solution (Amazon S3) bucket or directory. - */ - FilterVariable?: BatchPredictionFilterVariable; - /** - * The equal to operator. The BatchPrediction results will have FilterVariable values that exactly match the value specified with EQ. - */ - EQ?: ComparatorValue; - /** - * The greater than operator. The BatchPrediction results will have FilterVariable values that are greater than the value specified with GT. - */ - GT?: ComparatorValue; - /** - * The less than operator. The BatchPrediction results will have FilterVariable values that are less than the value specified with LT. - */ - LT?: ComparatorValue; - /** - * The greater than or equal to operator. The BatchPrediction results will have FilterVariable values that are greater than or equal to the value specified with GE. - */ - GE?: ComparatorValue; - /** - * The less than or equal to operator. The BatchPrediction results will have FilterVariable values that are less than or equal to the value specified with LE. - */ - LE?: ComparatorValue; - /** - * The not equal to operator. The BatchPrediction results will have FilterVariable values not equal to the value specified with NE. - */ - NE?: ComparatorValue; - /** - * A string that is found at the beginning of a variable, such as Name or Id. For example, a Batch Prediction operation could have the Name 2014-09-09-HolidayGiftMailer. To search for this BatchPrediction, select Name for the FilterVariable and any of the following strings for the Prefix: 2014-09 2014-09-09 2014-09-09-Holiday - */ - Prefix?: ComparatorValue; - /** - * A two-value parameter that determines the sequence of the resulting list of MLModels. asc - Arranges the list in ascending order (A-Z, 0-9). dsc - Arranges the list in descending order (Z-A, 9-0). Results are sorted by FilterVariable. - */ - SortOrder?: SortOrder; - /** - * An ID of the page in the paginated results. - */ - NextToken?: StringType; - /** - * The number of pages of information to include in the result. The range of acceptable values is 1 through 100. The default value is 100. - */ - Limit?: PageLimit; - } - export interface DescribeBatchPredictionsOutput { - /** - * A list of BatchPrediction objects that meet the search criteria. - */ - Results?: BatchPredictions; - /** - * The ID of the next page in the paginated results that indicates at least one more page follows. - */ - NextToken?: StringType; - } - export interface DescribeDataSourcesInput { - /** - * Use one of the following variables to filter a list of DataSource: CreatedAt - Sets the search criteria to DataSource creation dates. Status - Sets the search criteria to DataSource statuses. Name - Sets the search criteria to the contents of DataSource Name. DataUri - Sets the search criteria to the URI of data files used to create the DataSource. The URI can identify either a file or an Amazon Simple Storage Service (Amazon S3) bucket or directory. IAMUser - Sets the search criteria to the user account that invoked the DataSource creation. - */ - FilterVariable?: DataSourceFilterVariable; - /** - * The equal to operator. The DataSource results will have FilterVariable values that exactly match the value specified with EQ. - */ - EQ?: ComparatorValue; - /** - * The greater than operator. The DataSource results will have FilterVariable values that are greater than the value specified with GT. - */ - GT?: ComparatorValue; - /** - * The less than operator. The DataSource results will have FilterVariable values that are less than the value specified with LT. - */ - LT?: ComparatorValue; - /** - * The greater than or equal to operator. The DataSource results will have FilterVariable values that are greater than or equal to the value specified with GE. - */ - GE?: ComparatorValue; - /** - * The less than or equal to operator. The DataSource results will have FilterVariable values that are less than or equal to the value specified with LE. - */ - LE?: ComparatorValue; - /** - * The not equal to operator. The DataSource results will have FilterVariable values not equal to the value specified with NE. - */ - NE?: ComparatorValue; - /** - * A string that is found at the beginning of a variable, such as Name or Id. For example, a DataSource could have the Name 2014-09-09-HolidayGiftMailer. To search for this DataSource, select Name for the FilterVariable and any of the following strings for the Prefix: 2014-09 2014-09-09 2014-09-09-Holiday - */ - Prefix?: ComparatorValue; - /** - * A two-value parameter that determines the sequence of the resulting list of DataSource. asc - Arranges the list in ascending order (A-Z, 0-9). dsc - Arranges the list in descending order (Z-A, 9-0). Results are sorted by FilterVariable. - */ - SortOrder?: SortOrder; - /** - * The ID of the page in the paginated results. - */ - NextToken?: StringType; - /** - * The maximum number of DataSource to include in the result. - */ - Limit?: PageLimit; - } - export interface DescribeDataSourcesOutput { - /** - * A list of DataSource that meet the search criteria. - */ - Results?: DataSources; - /** - * An ID of the next page in the paginated results that indicates at least one more page follows. - */ - NextToken?: StringType; - } - export interface DescribeEvaluationsInput { - /** - * Use one of the following variable to filter a list of Evaluation objects: CreatedAt - Sets the search criteria to the Evaluation creation date. Status - Sets the search criteria to the Evaluation status. Name - Sets the search criteria to the contents of Evaluation Name. IAMUser - Sets the search criteria to the user account that invoked an Evaluation. MLModelId - Sets the search criteria to the MLModel that was evaluated. DataSourceId - Sets the search criteria to the DataSource used in Evaluation. DataUri - Sets the search criteria to the data file(s) used in Evaluation. The URL can identify either a file or an Amazon Simple Storage Solution (Amazon S3) bucket or directory. - */ - FilterVariable?: EvaluationFilterVariable; - /** - * The equal to operator. The Evaluation results will have FilterVariable values that exactly match the value specified with EQ. - */ - EQ?: ComparatorValue; - /** - * The greater than operator. The Evaluation results will have FilterVariable values that are greater than the value specified with GT. - */ - GT?: ComparatorValue; - /** - * The less than operator. The Evaluation results will have FilterVariable values that are less than the value specified with LT. - */ - LT?: ComparatorValue; - /** - * The greater than or equal to operator. The Evaluation results will have FilterVariable values that are greater than or equal to the value specified with GE. - */ - GE?: ComparatorValue; - /** - * The less than or equal to operator. The Evaluation results will have FilterVariable values that are less than or equal to the value specified with LE. - */ - LE?: ComparatorValue; - /** - * The not equal to operator. The Evaluation results will have FilterVariable values not equal to the value specified with NE. - */ - NE?: ComparatorValue; - /** - * A string that is found at the beginning of a variable, such as Name or Id. For example, an Evaluation could have the Name 2014-09-09-HolidayGiftMailer. To search for this Evaluation, select Name for the FilterVariable and any of the following strings for the Prefix: 2014-09 2014-09-09 2014-09-09-Holiday - */ - Prefix?: ComparatorValue; - /** - * A two-value parameter that determines the sequence of the resulting list of Evaluation. asc - Arranges the list in ascending order (A-Z, 0-9). dsc - Arranges the list in descending order (Z-A, 9-0). Results are sorted by FilterVariable. - */ - SortOrder?: SortOrder; - /** - * The ID of the page in the paginated results. - */ - NextToken?: StringType; - /** - * The maximum number of Evaluation to include in the result. - */ - Limit?: PageLimit; - } - export interface DescribeEvaluationsOutput { - /** - * A list of Evaluation that meet the search criteria. - */ - Results?: Evaluations; - /** - * The ID of the next page in the paginated results that indicates at least one more page follows. - */ - NextToken?: StringType; - } - export interface DescribeMLModelsInput { - /** - * Use one of the following variables to filter a list of MLModel: CreatedAt - Sets the search criteria to MLModel creation date. Status - Sets the search criteria to MLModel status. Name - Sets the search criteria to the contents of MLModel Name. IAMUser - Sets the search criteria to the user account that invoked the MLModel creation. TrainingDataSourceId - Sets the search criteria to the DataSource used to train one or more MLModel. RealtimeEndpointStatus - Sets the search criteria to the MLModel real-time endpoint status. MLModelType - Sets the search criteria to MLModel type: binary, regression, or multi-class. Algorithm - Sets the search criteria to the algorithm that the MLModel uses. TrainingDataURI - Sets the search criteria to the data file(s) used in training a MLModel. The URL can identify either a file or an Amazon Simple Storage Service (Amazon S3) bucket or directory. - */ - FilterVariable?: MLModelFilterVariable; - /** - * The equal to operator. The MLModel results will have FilterVariable values that exactly match the value specified with EQ. - */ - EQ?: ComparatorValue; - /** - * The greater than operator. The MLModel results will have FilterVariable values that are greater than the value specified with GT. - */ - GT?: ComparatorValue; - /** - * The less than operator. The MLModel results will have FilterVariable values that are less than the value specified with LT. - */ - LT?: ComparatorValue; - /** - * The greater than or equal to operator. The MLModel results will have FilterVariable values that are greater than or equal to the value specified with GE. - */ - GE?: ComparatorValue; - /** - * The less than or equal to operator. The MLModel results will have FilterVariable values that are less than or equal to the value specified with LE. - */ - LE?: ComparatorValue; - /** - * The not equal to operator. The MLModel results will have FilterVariable values not equal to the value specified with NE. - */ - NE?: ComparatorValue; - /** - * A string that is found at the beginning of a variable, such as Name or Id. For example, an MLModel could have the Name 2014-09-09-HolidayGiftMailer. To search for this MLModel, select Name for the FilterVariable and any of the following strings for the Prefix: 2014-09 2014-09-09 2014-09-09-Holiday - */ - Prefix?: ComparatorValue; - /** - * A two-value parameter that determines the sequence of the resulting list of MLModel. asc - Arranges the list in ascending order (A-Z, 0-9). dsc - Arranges the list in descending order (Z-A, 9-0). Results are sorted by FilterVariable. - */ - SortOrder?: SortOrder; - /** - * The ID of the page in the paginated results. - */ - NextToken?: StringType; - /** - * The number of pages of information to include in the result. The range of acceptable values is 1 through 100. The default value is 100. - */ - Limit?: PageLimit; - } - export interface DescribeMLModelsOutput { - /** - * A list of MLModel that meet the search criteria. - */ - Results?: MLModels; - /** - * The ID of the next page in the paginated results that indicates at least one more page follows. - */ - NextToken?: StringType; - } - export interface DescribeTagsInput { - /** - * The ID of the ML object. For example, exampleModelId. - */ - ResourceId: EntityId; - /** - * The type of the ML object. - */ - ResourceType: TaggableResourceType; - } - export interface DescribeTagsOutput { - /** - * The ID of the tagged ML object. - */ - ResourceId?: EntityId; - /** - * The type of the tagged ML object. - */ - ResourceType?: TaggableResourceType; - /** - * A list of tags associated with the ML object. - */ - Tags?: TagList; - } - export type DetailsAttributes = "PredictiveModelType"|"Algorithm"|string; - export type DetailsMap = {[key: string]: DetailsValue}; - export type DetailsValue = string; - export type EDPPipelineId = string; - export type EDPResourceRole = string; - export type EDPSecurityGroupId = string; - export type EDPSecurityGroupIds = EDPSecurityGroupId[]; - export type EDPServiceRole = string; - export type EDPSubnetId = string; - export type EntityId = string; - export type EntityName = string; - export type EntityStatus = "PENDING"|"INPROGRESS"|"FAILED"|"COMPLETED"|"DELETED"|string; - export type EpochTime = Date; - export type ErrorCode = number; - export type ErrorMessage = string; - export interface Evaluation { - /** - * The ID that is assigned to the Evaluation at creation. - */ - EvaluationId?: EntityId; - /** - * The ID of the MLModel that is the focus of the evaluation. - */ - MLModelId?: EntityId; - /** - * The ID of the DataSource that is used to evaluate the MLModel. - */ - EvaluationDataSourceId?: EntityId; - /** - * The location and name of the data in Amazon Simple Storage Server (Amazon S3) that is used in the evaluation. - */ - InputDataLocationS3?: S3Url; - /** - * The AWS user account that invoked the evaluation. The account type can be either an AWS root account or an AWS Identity and Access Management (IAM) user account. - */ - CreatedByIamUser?: AwsUserArn; - /** - * The time that the Evaluation was created. The time is expressed in epoch time. - */ - CreatedAt?: EpochTime; - /** - * The time of the most recent edit to the Evaluation. The time is expressed in epoch time. - */ - LastUpdatedAt?: EpochTime; - /** - * A user-supplied name or description of the Evaluation. - */ - Name?: EntityName; - /** - * The status of the evaluation. This element can have one of the following values: PENDING - Amazon Machine Learning (Amazon ML) submitted a request to evaluate an MLModel. INPROGRESS - The evaluation is underway. FAILED - The request to evaluate an MLModel did not run to completion. It is not usable. COMPLETED - The evaluation process completed successfully. DELETED - The Evaluation is marked as deleted. It is not usable. - */ - Status?: EntityStatus; - /** - * Measurements of how well the MLModel performed, using observations referenced by the DataSource. One of the following metrics is returned, based on the type of the MLModel: BinaryAUC: A binary MLModel uses the Area Under the Curve (AUC) technique to measure performance. RegressionRMSE: A regression MLModel uses the Root Mean Square Error (RMSE) technique to measure performance. RMSE measures the difference between predicted and actual values for a single variable. MulticlassAvgFScore: A multiclass MLModel uses the F1 score technique to measure performance. For more information about performance metrics, please see the Amazon Machine Learning Developer Guide. - */ - PerformanceMetrics?: PerformanceMetrics; - /** - * A description of the most recent details about evaluating the MLModel. - */ - Message?: Message; - ComputeTime?: LongType; - FinishedAt?: EpochTime; - StartedAt?: EpochTime; - } - export type EvaluationFilterVariable = "CreatedAt"|"LastUpdatedAt"|"Status"|"Name"|"IAMUser"|"MLModelId"|"DataSourceId"|"DataURI"|string; - export type Evaluations = Evaluation[]; - export interface GetBatchPredictionInput { - /** - * An ID assigned to the BatchPrediction at creation. - */ - BatchPredictionId: EntityId; - } - export interface GetBatchPredictionOutput { - /** - * An ID assigned to the BatchPrediction at creation. This value should be identical to the value of the BatchPredictionID in the request. - */ - BatchPredictionId?: EntityId; - /** - * The ID of the MLModel that generated predictions for the BatchPrediction request. - */ - MLModelId?: EntityId; - /** - * The ID of the DataSource that was used to create the BatchPrediction. - */ - BatchPredictionDataSourceId?: EntityId; - /** - * The location of the data file or directory in Amazon Simple Storage Service (Amazon S3). - */ - InputDataLocationS3?: S3Url; - /** - * The AWS user account that invoked the BatchPrediction. The account type can be either an AWS root account or an AWS Identity and Access Management (IAM) user account. - */ - CreatedByIamUser?: AwsUserArn; - /** - * The time when the BatchPrediction was created. The time is expressed in epoch time. - */ - CreatedAt?: EpochTime; - /** - * The time of the most recent edit to BatchPrediction. The time is expressed in epoch time. - */ - LastUpdatedAt?: EpochTime; - /** - * A user-supplied name or description of the BatchPrediction. - */ - Name?: EntityName; - /** - * The status of the BatchPrediction, which can be one of the following values: PENDING - Amazon Machine Learning (Amazon ML) submitted a request to generate batch predictions. INPROGRESS - The batch predictions are in progress. FAILED - The request to perform a batch prediction did not run to completion. It is not usable. COMPLETED - The batch prediction process completed successfully. DELETED - The BatchPrediction is marked as deleted. It is not usable. - */ - Status?: EntityStatus; - /** - * The location of an Amazon S3 bucket or directory to receive the operation results. - */ - OutputUri?: S3Url; - /** - * A link to the file that contains logs of the CreateBatchPrediction operation. - */ - LogUri?: PresignedS3Url; - /** - * A description of the most recent details about processing the batch prediction request. - */ - Message?: Message; - /** - * The approximate CPU time in milliseconds that Amazon Machine Learning spent processing the BatchPrediction, normalized and scaled on computation resources. ComputeTime is only available if the BatchPrediction is in the COMPLETED state. - */ - ComputeTime?: LongType; - /** - * The epoch time when Amazon Machine Learning marked the BatchPrediction as COMPLETED or FAILED. FinishedAt is only available when the BatchPrediction is in the COMPLETED or FAILED state. - */ - FinishedAt?: EpochTime; - /** - * The epoch time when Amazon Machine Learning marked the BatchPrediction as INPROGRESS. StartedAt isn't available if the BatchPrediction is in the PENDING state. - */ - StartedAt?: EpochTime; - /** - * The number of total records that Amazon Machine Learning saw while processing the BatchPrediction. - */ - TotalRecordCount?: LongType; - /** - * The number of invalid records that Amazon Machine Learning saw while processing the BatchPrediction. - */ - InvalidRecordCount?: LongType; - } - export interface GetDataSourceInput { - /** - * The ID assigned to the DataSource at creation. - */ - DataSourceId: EntityId; - /** - * Specifies whether the GetDataSource operation should return DataSourceSchema. If true, DataSourceSchema is returned. If false, DataSourceSchema is not returned. - */ - Verbose?: Verbose; - } - export interface GetDataSourceOutput { - /** - * The ID assigned to the DataSource at creation. This value should be identical to the value of the DataSourceId in the request. - */ - DataSourceId?: EntityId; - /** - * The location of the data file or directory in Amazon Simple Storage Service (Amazon S3). - */ - DataLocationS3?: S3Url; - /** - * A JSON string that represents the splitting and rearrangement requirement used when this DataSource was created. - */ - DataRearrangement?: DataRearrangement; - /** - * The AWS user account from which the DataSource was created. The account type can be either an AWS root account or an AWS Identity and Access Management (IAM) user account. - */ - CreatedByIamUser?: AwsUserArn; - /** - * The time that the DataSource was created. The time is expressed in epoch time. - */ - CreatedAt?: EpochTime; - /** - * The time of the most recent edit to the DataSource. The time is expressed in epoch time. - */ - LastUpdatedAt?: EpochTime; - /** - * The total size of observations in the data files. - */ - DataSizeInBytes?: LongType; - /** - * The number of data files referenced by the DataSource. - */ - NumberOfFiles?: LongType; - /** - * A user-supplied name or description of the DataSource. - */ - Name?: EntityName; - /** - * The current status of the DataSource. This element can have one of the following values: PENDING - Amazon ML submitted a request to create a DataSource. INPROGRESS - The creation process is underway. FAILED - The request to create a DataSource did not run to completion. It is not usable. COMPLETED - The creation process completed successfully. DELETED - The DataSource is marked as deleted. It is not usable. - */ - Status?: EntityStatus; - /** - * A link to the file containing logs of CreateDataSourceFrom* operations. - */ - LogUri?: PresignedS3Url; - /** - * The user-supplied description of the most recent details about creating the DataSource. - */ - Message?: Message; - RedshiftMetadata?: RedshiftMetadata; - RDSMetadata?: RDSMetadata; - RoleARN?: RoleARN; - /** - * The parameter is true if statistics need to be generated from the observation data. - */ - ComputeStatistics?: ComputeStatistics; - /** - * The approximate CPU time in milliseconds that Amazon Machine Learning spent processing the DataSource, normalized and scaled on computation resources. ComputeTime is only available if the DataSource is in the COMPLETED state and the ComputeStatistics is set to true. - */ - ComputeTime?: LongType; - /** - * The epoch time when Amazon Machine Learning marked the DataSource as COMPLETED or FAILED. FinishedAt is only available when the DataSource is in the COMPLETED or FAILED state. - */ - FinishedAt?: EpochTime; - /** - * The epoch time when Amazon Machine Learning marked the DataSource as INPROGRESS. StartedAt isn't available if the DataSource is in the PENDING state. - */ - StartedAt?: EpochTime; - /** - * The schema used by all of the data files of this DataSource. Note This parameter is provided as part of the verbose format. - */ - DataSourceSchema?: DataSchema; - } - export interface GetEvaluationInput { - /** - * The ID of the Evaluation to retrieve. The evaluation of each MLModel is recorded and cataloged. The ID provides the means to access the information. - */ - EvaluationId: EntityId; - } - export interface GetEvaluationOutput { - /** - * The evaluation ID which is same as the EvaluationId in the request. - */ - EvaluationId?: EntityId; - /** - * The ID of the MLModel that was the focus of the evaluation. - */ - MLModelId?: EntityId; - /** - * The DataSource used for this evaluation. - */ - EvaluationDataSourceId?: EntityId; - /** - * The location of the data file or directory in Amazon Simple Storage Service (Amazon S3). - */ - InputDataLocationS3?: S3Url; - /** - * The AWS user account that invoked the evaluation. The account type can be either an AWS root account or an AWS Identity and Access Management (IAM) user account. - */ - CreatedByIamUser?: AwsUserArn; - /** - * The time that the Evaluation was created. The time is expressed in epoch time. - */ - CreatedAt?: EpochTime; - /** - * The time of the most recent edit to the Evaluation. The time is expressed in epoch time. - */ - LastUpdatedAt?: EpochTime; - /** - * A user-supplied name or description of the Evaluation. - */ - Name?: EntityName; - /** - * The status of the evaluation. This element can have one of the following values: PENDING - Amazon Machine Language (Amazon ML) submitted a request to evaluate an MLModel. INPROGRESS - The evaluation is underway. FAILED - The request to evaluate an MLModel did not run to completion. It is not usable. COMPLETED - The evaluation process completed successfully. DELETED - The Evaluation is marked as deleted. It is not usable. - */ - Status?: EntityStatus; - /** - * Measurements of how well the MLModel performed using observations referenced by the DataSource. One of the following metric is returned based on the type of the MLModel: BinaryAUC: A binary MLModel uses the Area Under the Curve (AUC) technique to measure performance. RegressionRMSE: A regression MLModel uses the Root Mean Square Error (RMSE) technique to measure performance. RMSE measures the difference between predicted and actual values for a single variable. MulticlassAvgFScore: A multiclass MLModel uses the F1 score technique to measure performance. For more information about performance metrics, please see the Amazon Machine Learning Developer Guide. - */ - PerformanceMetrics?: PerformanceMetrics; - /** - * A link to the file that contains logs of the CreateEvaluation operation. - */ - LogUri?: PresignedS3Url; - /** - * A description of the most recent details about evaluating the MLModel. - */ - Message?: Message; - /** - * The approximate CPU time in milliseconds that Amazon Machine Learning spent processing the Evaluation, normalized and scaled on computation resources. ComputeTime is only available if the Evaluation is in the COMPLETED state. - */ - ComputeTime?: LongType; - /** - * The epoch time when Amazon Machine Learning marked the Evaluation as COMPLETED or FAILED. FinishedAt is only available when the Evaluation is in the COMPLETED or FAILED state. - */ - FinishedAt?: EpochTime; - /** - * The epoch time when Amazon Machine Learning marked the Evaluation as INPROGRESS. StartedAt isn't available if the Evaluation is in the PENDING state. - */ - StartedAt?: EpochTime; - } - export interface GetMLModelInput { - /** - * The ID assigned to the MLModel at creation. - */ - MLModelId: EntityId; - /** - * Specifies whether the GetMLModel operation should return Recipe. If true, Recipe is returned. If false, Recipe is not returned. - */ - Verbose?: Verbose; - } - export interface GetMLModelOutput { - /** - * The MLModel ID, which is same as the MLModelId in the request. - */ - MLModelId?: EntityId; - /** - * The ID of the training DataSource. - */ - TrainingDataSourceId?: EntityId; - /** - * The AWS user account from which the MLModel was created. The account type can be either an AWS root account or an AWS Identity and Access Management (IAM) user account. - */ - CreatedByIamUser?: AwsUserArn; - /** - * The time that the MLModel was created. The time is expressed in epoch time. - */ - CreatedAt?: EpochTime; - /** - * The time of the most recent edit to the MLModel. The time is expressed in epoch time. - */ - LastUpdatedAt?: EpochTime; - /** - * A user-supplied name or description of the MLModel. - */ - Name?: MLModelName; - /** - * The current status of the MLModel. This element can have one of the following values: PENDING - Amazon Machine Learning (Amazon ML) submitted a request to describe a MLModel. INPROGRESS - The request is processing. FAILED - The request did not run to completion. The ML model isn't usable. COMPLETED - The request completed successfully. DELETED - The MLModel is marked as deleted. It isn't usable. - */ - Status?: EntityStatus; - SizeInBytes?: LongType; - /** - * The current endpoint of the MLModel - */ - EndpointInfo?: RealtimeEndpointInfo; - /** - * A list of the training parameters in the MLModel. The list is implemented as a map of key-value pairs. The following is the current set of training parameters: sgd.maxMLModelSizeInBytes - The maximum allowed size of the model. Depending on the input data, the size of the model might affect its performance. The value is an integer that ranges from 100000 to 2147483648. The default value is 33554432. sgd.maxPasses - The number of times that the training process traverses the observations to build the MLModel. The value is an integer that ranges from 1 to 10000. The default value is 10. sgd.shuffleType - Whether Amazon ML shuffles the training data. Shuffling data improves a model's ability to find the optimal solution for a variety of data types. The valid values are auto and none. The default value is none. We strongly recommend that you shuffle your data. sgd.l1RegularizationAmount - The coefficient regularization L1 norm. It controls overfitting the data by penalizing large coefficients. This tends to drive coefficients to zero, resulting in a sparse feature set. If you use this parameter, start by specifying a small value, such as 1.0E-08. The value is a double that ranges from 0 to MAX_DOUBLE. The default is to not use L1 normalization. This parameter can't be used when L2 is specified. Use this parameter sparingly. sgd.l2RegularizationAmount - The coefficient regularization L2 norm. It controls overfitting the data by penalizing large coefficients. This tends to drive coefficients to small, nonzero values. If you use this parameter, start by specifying a small value, such as 1.0E-08. The value is a double that ranges from 0 to MAX_DOUBLE. The default is to not use L2 normalization. This parameter can't be used when L1 is specified. Use this parameter sparingly. - */ - TrainingParameters?: TrainingParameters; - /** - * The location of the data file or directory in Amazon Simple Storage Service (Amazon S3). - */ - InputDataLocationS3?: S3Url; - /** - * Identifies the MLModel category. The following are the available types: REGRESSION -- Produces a numeric result. For example, "What price should a house be listed at?" BINARY -- Produces one of two possible results. For example, "Is this an e-commerce website?" MULTICLASS -- Produces one of several possible results. For example, "Is this a HIGH, LOW or MEDIUM risk trade?" - */ - MLModelType?: MLModelType; - /** - * The scoring threshold is used in binary classification MLModel models. It marks the boundary between a positive prediction and a negative prediction. Output values greater than or equal to the threshold receive a positive result from the MLModel, such as true. Output values less than the threshold receive a negative response from the MLModel, such as false. - */ - ScoreThreshold?: ScoreThreshold; - /** - * The time of the most recent edit to the ScoreThreshold. The time is expressed in epoch time. - */ - ScoreThresholdLastUpdatedAt?: EpochTime; - /** - * A link to the file that contains logs of the CreateMLModel operation. - */ - LogUri?: PresignedS3Url; - /** - * A description of the most recent details about accessing the MLModel. - */ - Message?: Message; - /** - * The approximate CPU time in milliseconds that Amazon Machine Learning spent processing the MLModel, normalized and scaled on computation resources. ComputeTime is only available if the MLModel is in the COMPLETED state. - */ - ComputeTime?: LongType; - /** - * The epoch time when Amazon Machine Learning marked the MLModel as COMPLETED or FAILED. FinishedAt is only available when the MLModel is in the COMPLETED or FAILED state. - */ - FinishedAt?: EpochTime; - /** - * The epoch time when Amazon Machine Learning marked the MLModel as INPROGRESS. StartedAt isn't available if the MLModel is in the PENDING state. - */ - StartedAt?: EpochTime; - /** - * The recipe to use when training the MLModel. The Recipe provides detailed information about the observation data to use during training, and manipulations to perform on the observation data during training. Note This parameter is provided as part of the verbose format. - */ - Recipe?: Recipe; - /** - * The schema used by all of the data files referenced by the DataSource. Note This parameter is provided as part of the verbose format. - */ - Schema?: DataSchema; - } - export type IntegerType = number; - export type Label = string; - export type LongType = number; - export interface MLModel { - /** - * The ID assigned to the MLModel at creation. - */ - MLModelId?: EntityId; - /** - * The ID of the training DataSource. The CreateMLModel operation uses the TrainingDataSourceId. - */ - TrainingDataSourceId?: EntityId; - /** - * The AWS user account from which the MLModel was created. The account type can be either an AWS root account or an AWS Identity and Access Management (IAM) user account. - */ - CreatedByIamUser?: AwsUserArn; - /** - * The time that the MLModel was created. The time is expressed in epoch time. - */ - CreatedAt?: EpochTime; - /** - * The time of the most recent edit to the MLModel. The time is expressed in epoch time. - */ - LastUpdatedAt?: EpochTime; - /** - * A user-supplied name or description of the MLModel. - */ - Name?: MLModelName; - /** - * The current status of an MLModel. This element can have one of the following values: PENDING - Amazon Machine Learning (Amazon ML) submitted a request to create an MLModel. INPROGRESS - The creation process is underway. FAILED - The request to create an MLModel didn't run to completion. The model isn't usable. COMPLETED - The creation process completed successfully. DELETED - The MLModel is marked as deleted. It isn't usable. - */ - Status?: EntityStatus; - SizeInBytes?: LongType; - /** - * The current endpoint of the MLModel. - */ - EndpointInfo?: RealtimeEndpointInfo; - /** - * A list of the training parameters in the MLModel. The list is implemented as a map of key-value pairs. The following is the current set of training parameters: sgd.maxMLModelSizeInBytes - The maximum allowed size of the model. Depending on the input data, the size of the model might affect its performance. The value is an integer that ranges from 100000 to 2147483648. The default value is 33554432. sgd.maxPasses - The number of times that the training process traverses the observations to build the MLModel. The value is an integer that ranges from 1 to 10000. The default value is 10. sgd.shuffleType - Whether Amazon ML shuffles the training data. Shuffling the data improves a model's ability to find the optimal solution for a variety of data types. The valid values are auto and none. The default value is none. sgd.l1RegularizationAmount - The coefficient regularization L1 norm, which controls overfitting the data by penalizing large coefficients. This parameter tends to drive coefficients to zero, resulting in sparse feature set. If you use this parameter, start by specifying a small value, such as 1.0E-08. The value is a double that ranges from 0 to MAX_DOUBLE. The default is to not use L1 normalization. This parameter can't be used when L2 is specified. Use this parameter sparingly. sgd.l2RegularizationAmount - The coefficient regularization L2 norm, which controls overfitting the data by penalizing large coefficients. This tends to drive coefficients to small, nonzero values. If you use this parameter, start by specifying a small value, such as 1.0E-08. The value is a double that ranges from 0 to MAX_DOUBLE. The default is to not use L2 normalization. This parameter can't be used when L1 is specified. Use this parameter sparingly. - */ - TrainingParameters?: TrainingParameters; - /** - * The location of the data file or directory in Amazon Simple Storage Service (Amazon S3). - */ - InputDataLocationS3?: S3Url; - /** - * The algorithm used to train the MLModel. The following algorithm is supported: SGD -- Stochastic gradient descent. The goal of SGD is to minimize the gradient of the loss function. - */ - Algorithm?: Algorithm; - /** - * Identifies the MLModel category. The following are the available types: REGRESSION - Produces a numeric result. For example, "What price should a house be listed at?" BINARY - Produces one of two possible results. For example, "Is this a child-friendly web site?". MULTICLASS - Produces one of several possible results. For example, "Is this a HIGH-, LOW-, or MEDIUM-risk trade?". - */ - MLModelType?: MLModelType; - ScoreThreshold?: ScoreThreshold; - /** - * The time of the most recent edit to the ScoreThreshold. The time is expressed in epoch time. - */ - ScoreThresholdLastUpdatedAt?: EpochTime; - /** - * A description of the most recent details about accessing the MLModel. - */ - Message?: Message; - ComputeTime?: LongType; - FinishedAt?: EpochTime; - StartedAt?: EpochTime; - } - export type MLModelFilterVariable = "CreatedAt"|"LastUpdatedAt"|"Status"|"Name"|"IAMUser"|"TrainingDataSourceId"|"RealtimeEndpointStatus"|"MLModelType"|"Algorithm"|"TrainingDataURI"|string; - export type MLModelName = string; - export type MLModelType = "REGRESSION"|"BINARY"|"MULTICLASS"|string; - export type MLModels = MLModel[]; - export type Message = string; - export type PageLimit = number; - export interface PerformanceMetrics { - Properties?: PerformanceMetricsProperties; - } - export type PerformanceMetricsProperties = {[key: string]: PerformanceMetricsPropertyValue}; - export type PerformanceMetricsPropertyKey = string; - export type PerformanceMetricsPropertyValue = string; - export interface PredictInput { - /** - * A unique identifier of the MLModel. - */ - MLModelId: EntityId; - Record: Record; - PredictEndpoint: VipURL; - } - export interface PredictOutput { - Prediction?: Prediction; - } - export interface Prediction { - /** - * The prediction label for either a BINARY or MULTICLASS MLModel. - */ - predictedLabel?: Label; - /** - * The prediction value for REGRESSION MLModel. - */ - predictedValue?: floatLabel; - predictedScores?: ScoreValuePerLabelMap; - details?: DetailsMap; - } - export type PresignedS3Url = string; - export interface RDSDataSpec { - /** - * Describes the DatabaseName and InstanceIdentifier of an Amazon RDS database. - */ - DatabaseInformation: RDSDatabase; - /** - * The query that is used to retrieve the observation data for the DataSource. - */ - SelectSqlQuery: RDSSelectSqlQuery; - /** - * The AWS Identity and Access Management (IAM) credentials that are used connect to the Amazon RDS database. - */ - DatabaseCredentials: RDSDatabaseCredentials; - /** - * The Amazon S3 location for staging Amazon RDS data. The data retrieved from Amazon RDS using SelectSqlQuery is stored in this location. - */ - S3StagingLocation: S3Url; - /** - * A JSON string that represents the splitting and rearrangement processing to be applied to a DataSource. If the DataRearrangement parameter is not provided, all of the input data is used to create the Datasource. There are multiple parameters that control what data is used to create a datasource: percentBegin Use percentBegin to indicate the beginning of the range of the data used to create the Datasource. If you do not include percentBegin and percentEnd, Amazon ML includes all of the data when creating the datasource. percentEnd Use percentEnd to indicate the end of the range of the data used to create the Datasource. If you do not include percentBegin and percentEnd, Amazon ML includes all of the data when creating the datasource. complement The complement parameter instructs Amazon ML to use the data that is not included in the range of percentBegin to percentEnd to create a datasource. The complement parameter is useful if you need to create complementary datasources for training and evaluation. To create a complementary datasource, use the same values for percentBegin and percentEnd, along with the complement parameter. For example, the following two datasources do not share any data, and can be used to train and evaluate a model. The first datasource has 25 percent of the data, and the second one has 75 percent of the data. Datasource for evaluation: {"splitting":{"percentBegin":0, "percentEnd":25}} Datasource for training: {"splitting":{"percentBegin":0, "percentEnd":25, "complement":"true"}} strategy To change how Amazon ML splits the data for a datasource, use the strategy parameter. The default value for the strategy parameter is sequential, meaning that Amazon ML takes all of the data records between the percentBegin and percentEnd parameters for the datasource, in the order that the records appear in the input data. The following two DataRearrangement lines are examples of sequentially ordered training and evaluation datasources: Datasource for evaluation: {"splitting":{"percentBegin":70, "percentEnd":100, "strategy":"sequential"}} Datasource for training: {"splitting":{"percentBegin":70, "percentEnd":100, "strategy":"sequential", "complement":"true"}} To randomly split the input data into the proportions indicated by the percentBegin and percentEnd parameters, set the strategy parameter to random and provide a string that is used as the seed value for the random data splitting (for example, you can use the S3 path to your data as the random seed string). If you choose the random split strategy, Amazon ML assigns each row of data a pseudo-random number between 0 and 100, and then selects the rows that have an assigned number between percentBegin and percentEnd. Pseudo-random numbers are assigned using both the input seed string value and the byte offset as a seed, so changing the data results in a different split. Any existing ordering is preserved. The random splitting strategy ensures that variables in the training and evaluation data are distributed similarly. It is useful in the cases where the input data may have an implicit sort order, which would otherwise result in training and evaluation datasources containing non-similar data records. The following two DataRearrangement lines are examples of non-sequentially ordered training and evaluation datasources: Datasource for evaluation: {"splitting":{"percentBegin":70, "percentEnd":100, "strategy":"random", "randomSeed"="s3://my_s3_path/bucket/file.csv"}} Datasource for training: {"splitting":{"percentBegin":70, "percentEnd":100, "strategy":"random", "randomSeed"="s3://my_s3_path/bucket/file.csv", "complement":"true"}} - */ - DataRearrangement?: DataRearrangement; - /** - * A JSON string that represents the schema for an Amazon RDS DataSource. The DataSchema defines the structure of the observation data in the data file(s) referenced in the DataSource. A DataSchema is not required if you specify a DataSchemaUri Define your DataSchema as a series of key-value pairs. attributes and excludedVariableNames have an array of key-value pairs for their value. Use the following format to define your DataSchema. { "version": "1.0", "recordAnnotationFieldName": "F1", "recordWeightFieldName": "F2", "targetFieldName": "F3", "dataFormat": "CSV", "dataFileContainsHeader": true, "attributes": [ { "fieldName": "F1", "fieldType": "TEXT" }, { "fieldName": "F2", "fieldType": "NUMERIC" }, { "fieldName": "F3", "fieldType": "CATEGORICAL" }, { "fieldName": "F4", "fieldType": "NUMERIC" }, { "fieldName": "F5", "fieldType": "CATEGORICAL" }, { "fieldName": "F6", "fieldType": "TEXT" }, { "fieldName": "F7", "fieldType": "WEIGHTED_INT_SEQUENCE" }, { "fieldName": "F8", "fieldType": "WEIGHTED_STRING_SEQUENCE" } ], "excludedVariableNames": [ "F6" ] } - */ - DataSchema?: DataSchema; - /** - * The Amazon S3 location of the DataSchema. - */ - DataSchemaUri?: S3Url; - /** - * The role (DataPipelineDefaultResourceRole) assumed by an Amazon Elastic Compute Cloud (Amazon EC2) instance to carry out the copy operation from Amazon RDS to an Amazon S3 task. For more information, see Role templates for data pipelines. - */ - ResourceRole: EDPResourceRole; - /** - * The role (DataPipelineDefaultRole) assumed by AWS Data Pipeline service to monitor the progress of the copy task from Amazon RDS to Amazon S3. For more information, see Role templates for data pipelines. - */ - ServiceRole: EDPServiceRole; - /** - * The subnet ID to be used to access a VPC-based RDS DB instance. This attribute is used by Data Pipeline to carry out the copy task from Amazon RDS to Amazon S3. - */ - SubnetId: EDPSubnetId; - /** - * The security group IDs to be used to access a VPC-based RDS DB instance. Ensure that there are appropriate ingress rules set up to allow access to the RDS DB instance. This attribute is used by Data Pipeline to carry out the copy operation from Amazon RDS to an Amazon S3 task. - */ - SecurityGroupIds: EDPSecurityGroupIds; - } - export interface RDSDatabase { - /** - * The ID of an RDS DB instance. - */ - InstanceIdentifier: RDSInstanceIdentifier; - DatabaseName: RDSDatabaseName; - } - export interface RDSDatabaseCredentials { - Username: RDSDatabaseUsername; - Password: RDSDatabasePassword; - } - export type RDSDatabaseName = string; - export type RDSDatabasePassword = string; - export type RDSDatabaseUsername = string; - export type RDSInstanceIdentifier = string; - export interface RDSMetadata { - /** - * The database details required to connect to an Amazon RDS. - */ - Database?: RDSDatabase; - DatabaseUserName?: RDSDatabaseUsername; - /** - * The SQL query that is supplied during CreateDataSourceFromRDS. Returns only if Verbose is true in GetDataSourceInput. - */ - SelectSqlQuery?: RDSSelectSqlQuery; - /** - * The role (DataPipelineDefaultResourceRole) assumed by an Amazon EC2 instance to carry out the copy task from Amazon RDS to Amazon S3. For more information, see Role templates for data pipelines. - */ - ResourceRole?: EDPResourceRole; - /** - * The role (DataPipelineDefaultRole) assumed by the Data Pipeline service to monitor the progress of the copy task from Amazon RDS to Amazon S3. For more information, see Role templates for data pipelines. - */ - ServiceRole?: EDPServiceRole; - /** - * The ID of the Data Pipeline instance that is used to carry to copy data from Amazon RDS to Amazon S3. You can use the ID to find details about the instance in the Data Pipeline console. - */ - DataPipelineId?: EDPPipelineId; - } - export type RDSSelectSqlQuery = string; - export interface RealtimeEndpointInfo { - /** - * The maximum processing rate for the real-time endpoint for MLModel, measured in incoming requests per second. - */ - PeakRequestsPerSecond?: IntegerType; - /** - * The time that the request to create the real-time endpoint for the MLModel was received. The time is expressed in epoch time. - */ - CreatedAt?: EpochTime; - /** - * The URI that specifies where to send real-time prediction requests for the MLModel. Note The application must wait until the real-time endpoint is ready before using this URI. - */ - EndpointUrl?: VipURL; - /** - * The current status of the real-time endpoint for the MLModel. This element can have one of the following values: NONE - Endpoint does not exist or was previously deleted. READY - Endpoint is ready to be used for real-time predictions. UPDATING - Updating/creating the endpoint. - */ - EndpointStatus?: RealtimeEndpointStatus; - } - export type RealtimeEndpointStatus = "NONE"|"READY"|"UPDATING"|"FAILED"|string; - export type Recipe = string; - export type Record = {[key: string]: VariableValue}; - export type RedshiftClusterIdentifier = string; - export interface RedshiftDataSpec { - /** - * Describes the DatabaseName and ClusterIdentifier for an Amazon Redshift DataSource. - */ - DatabaseInformation: RedshiftDatabase; - /** - * Describes the SQL Query to execute on an Amazon Redshift database for an Amazon Redshift DataSource. - */ - SelectSqlQuery: RedshiftSelectSqlQuery; - /** - * Describes AWS Identity and Access Management (IAM) credentials that are used connect to the Amazon Redshift database. - */ - DatabaseCredentials: RedshiftDatabaseCredentials; - /** - * Describes an Amazon S3 location to store the result set of the SelectSqlQuery query. - */ - S3StagingLocation: S3Url; - /** - * A JSON string that represents the splitting and rearrangement processing to be applied to a DataSource. If the DataRearrangement parameter is not provided, all of the input data is used to create the Datasource. There are multiple parameters that control what data is used to create a datasource: percentBegin Use percentBegin to indicate the beginning of the range of the data used to create the Datasource. If you do not include percentBegin and percentEnd, Amazon ML includes all of the data when creating the datasource. percentEnd Use percentEnd to indicate the end of the range of the data used to create the Datasource. If you do not include percentBegin and percentEnd, Amazon ML includes all of the data when creating the datasource. complement The complement parameter instructs Amazon ML to use the data that is not included in the range of percentBegin to percentEnd to create a datasource. The complement parameter is useful if you need to create complementary datasources for training and evaluation. To create a complementary datasource, use the same values for percentBegin and percentEnd, along with the complement parameter. For example, the following two datasources do not share any data, and can be used to train and evaluate a model. The first datasource has 25 percent of the data, and the second one has 75 percent of the data. Datasource for evaluation: {"splitting":{"percentBegin":0, "percentEnd":25}} Datasource for training: {"splitting":{"percentBegin":0, "percentEnd":25, "complement":"true"}} strategy To change how Amazon ML splits the data for a datasource, use the strategy parameter. The default value for the strategy parameter is sequential, meaning that Amazon ML takes all of the data records between the percentBegin and percentEnd parameters for the datasource, in the order that the records appear in the input data. The following two DataRearrangement lines are examples of sequentially ordered training and evaluation datasources: Datasource for evaluation: {"splitting":{"percentBegin":70, "percentEnd":100, "strategy":"sequential"}} Datasource for training: {"splitting":{"percentBegin":70, "percentEnd":100, "strategy":"sequential", "complement":"true"}} To randomly split the input data into the proportions indicated by the percentBegin and percentEnd parameters, set the strategy parameter to random and provide a string that is used as the seed value for the random data splitting (for example, you can use the S3 path to your data as the random seed string). If you choose the random split strategy, Amazon ML assigns each row of data a pseudo-random number between 0 and 100, and then selects the rows that have an assigned number between percentBegin and percentEnd. Pseudo-random numbers are assigned using both the input seed string value and the byte offset as a seed, so changing the data results in a different split. Any existing ordering is preserved. The random splitting strategy ensures that variables in the training and evaluation data are distributed similarly. It is useful in the cases where the input data may have an implicit sort order, which would otherwise result in training and evaluation datasources containing non-similar data records. The following two DataRearrangement lines are examples of non-sequentially ordered training and evaluation datasources: Datasource for evaluation: {"splitting":{"percentBegin":70, "percentEnd":100, "strategy":"random", "randomSeed"="s3://my_s3_path/bucket/file.csv"}} Datasource for training: {"splitting":{"percentBegin":70, "percentEnd":100, "strategy":"random", "randomSeed"="s3://my_s3_path/bucket/file.csv", "complement":"true"}} - */ - DataRearrangement?: DataRearrangement; - /** - * A JSON string that represents the schema for an Amazon Redshift DataSource. The DataSchema defines the structure of the observation data in the data file(s) referenced in the DataSource. A DataSchema is not required if you specify a DataSchemaUri. Define your DataSchema as a series of key-value pairs. attributes and excludedVariableNames have an array of key-value pairs for their value. Use the following format to define your DataSchema. { "version": "1.0", "recordAnnotationFieldName": "F1", "recordWeightFieldName": "F2", "targetFieldName": "F3", "dataFormat": "CSV", "dataFileContainsHeader": true, "attributes": [ { "fieldName": "F1", "fieldType": "TEXT" }, { "fieldName": "F2", "fieldType": "NUMERIC" }, { "fieldName": "F3", "fieldType": "CATEGORICAL" }, { "fieldName": "F4", "fieldType": "NUMERIC" }, { "fieldName": "F5", "fieldType": "CATEGORICAL" }, { "fieldName": "F6", "fieldType": "TEXT" }, { "fieldName": "F7", "fieldType": "WEIGHTED_INT_SEQUENCE" }, { "fieldName": "F8", "fieldType": "WEIGHTED_STRING_SEQUENCE" } ], "excludedVariableNames": [ "F6" ] } - */ - DataSchema?: DataSchema; - /** - * Describes the schema location for an Amazon Redshift DataSource. - */ - DataSchemaUri?: S3Url; - } - export interface RedshiftDatabase { - DatabaseName: RedshiftDatabaseName; - ClusterIdentifier: RedshiftClusterIdentifier; - } - export interface RedshiftDatabaseCredentials { - Username: RedshiftDatabaseUsername; - Password: RedshiftDatabasePassword; - } - export type RedshiftDatabaseName = string; - export type RedshiftDatabasePassword = string; - export type RedshiftDatabaseUsername = string; - export interface RedshiftMetadata { - RedshiftDatabase?: RedshiftDatabase; - DatabaseUserName?: RedshiftDatabaseUsername; - /** - * The SQL query that is specified during CreateDataSourceFromRedshift. Returns only if Verbose is true in GetDataSourceInput. - */ - SelectSqlQuery?: RedshiftSelectSqlQuery; - } - export type RedshiftSelectSqlQuery = string; - export type RoleARN = string; - export interface S3DataSpec { - /** - * The location of the data file(s) used by a DataSource. The URI specifies a data file or an Amazon Simple Storage Service (Amazon S3) directory or bucket containing data files. - */ - DataLocationS3: S3Url; - /** - * A JSON string that represents the splitting and rearrangement processing to be applied to a DataSource. If the DataRearrangement parameter is not provided, all of the input data is used to create the Datasource. There are multiple parameters that control what data is used to create a datasource: percentBegin Use percentBegin to indicate the beginning of the range of the data used to create the Datasource. If you do not include percentBegin and percentEnd, Amazon ML includes all of the data when creating the datasource. percentEnd Use percentEnd to indicate the end of the range of the data used to create the Datasource. If you do not include percentBegin and percentEnd, Amazon ML includes all of the data when creating the datasource. complement The complement parameter instructs Amazon ML to use the data that is not included in the range of percentBegin to percentEnd to create a datasource. The complement parameter is useful if you need to create complementary datasources for training and evaluation. To create a complementary datasource, use the same values for percentBegin and percentEnd, along with the complement parameter. For example, the following two datasources do not share any data, and can be used to train and evaluate a model. The first datasource has 25 percent of the data, and the second one has 75 percent of the data. Datasource for evaluation: {"splitting":{"percentBegin":0, "percentEnd":25}} Datasource for training: {"splitting":{"percentBegin":0, "percentEnd":25, "complement":"true"}} strategy To change how Amazon ML splits the data for a datasource, use the strategy parameter. The default value for the strategy parameter is sequential, meaning that Amazon ML takes all of the data records between the percentBegin and percentEnd parameters for the datasource, in the order that the records appear in the input data. The following two DataRearrangement lines are examples of sequentially ordered training and evaluation datasources: Datasource for evaluation: {"splitting":{"percentBegin":70, "percentEnd":100, "strategy":"sequential"}} Datasource for training: {"splitting":{"percentBegin":70, "percentEnd":100, "strategy":"sequential", "complement":"true"}} To randomly split the input data into the proportions indicated by the percentBegin and percentEnd parameters, set the strategy parameter to random and provide a string that is used as the seed value for the random data splitting (for example, you can use the S3 path to your data as the random seed string). If you choose the random split strategy, Amazon ML assigns each row of data a pseudo-random number between 0 and 100, and then selects the rows that have an assigned number between percentBegin and percentEnd. Pseudo-random numbers are assigned using both the input seed string value and the byte offset as a seed, so changing the data results in a different split. Any existing ordering is preserved. The random splitting strategy ensures that variables in the training and evaluation data are distributed similarly. It is useful in the cases where the input data may have an implicit sort order, which would otherwise result in training and evaluation datasources containing non-similar data records. The following two DataRearrangement lines are examples of non-sequentially ordered training and evaluation datasources: Datasource for evaluation: {"splitting":{"percentBegin":70, "percentEnd":100, "strategy":"random", "randomSeed"="s3://my_s3_path/bucket/file.csv"}} Datasource for training: {"splitting":{"percentBegin":70, "percentEnd":100, "strategy":"random", "randomSeed"="s3://my_s3_path/bucket/file.csv", "complement":"true"}} - */ - DataRearrangement?: DataRearrangement; - /** - * A JSON string that represents the schema for an Amazon S3 DataSource. The DataSchema defines the structure of the observation data in the data file(s) referenced in the DataSource. You must provide either the DataSchema or the DataSchemaLocationS3. Define your DataSchema as a series of key-value pairs. attributes and excludedVariableNames have an array of key-value pairs for their value. Use the following format to define your DataSchema. { "version": "1.0", "recordAnnotationFieldName": "F1", "recordWeightFieldName": "F2", "targetFieldName": "F3", "dataFormat": "CSV", "dataFileContainsHeader": true, "attributes": [ { "fieldName": "F1", "fieldType": "TEXT" }, { "fieldName": "F2", "fieldType": "NUMERIC" }, { "fieldName": "F3", "fieldType": "CATEGORICAL" }, { "fieldName": "F4", "fieldType": "NUMERIC" }, { "fieldName": "F5", "fieldType": "CATEGORICAL" }, { "fieldName": "F6", "fieldType": "TEXT" }, { "fieldName": "F7", "fieldType": "WEIGHTED_INT_SEQUENCE" }, { "fieldName": "F8", "fieldType": "WEIGHTED_STRING_SEQUENCE" } ], "excludedVariableNames": [ "F6" ] } - */ - DataSchema?: DataSchema; - /** - * Describes the schema location in Amazon S3. You must provide either the DataSchema or the DataSchemaLocationS3. - */ - DataSchemaLocationS3?: S3Url; - } - export type S3Url = string; - export type ScoreThreshold = number; - export type ScoreValue = number; - export type ScoreValuePerLabelMap = {[key: string]: ScoreValue}; - export type SortOrder = "asc"|"dsc"|string; - export type StringType = string; - export interface Tag { - /** - * A unique identifier for the tag. Valid characters include Unicode letters, digits, white space, _, ., /, =, +, -, %, and @. - */ - Key?: TagKey; - /** - * An optional string, typically used to describe or define the tag. Valid characters include Unicode letters, digits, white space, _, ., /, =, +, -, %, and @. - */ - Value?: TagValue; - } - export type TagKey = string; - export type TagKeyList = TagKey[]; - export type TagList = Tag[]; - export type TagValue = string; - export type TaggableResourceType = "BatchPrediction"|"DataSource"|"Evaluation"|"MLModel"|string; - export type TrainingParameters = {[key: string]: StringType}; - export interface UpdateBatchPredictionInput { - /** - * The ID assigned to the BatchPrediction during creation. - */ - BatchPredictionId: EntityId; - /** - * A new user-supplied name or description of the BatchPrediction. - */ - BatchPredictionName: EntityName; - } - export interface UpdateBatchPredictionOutput { - /** - * The ID assigned to the BatchPrediction during creation. This value should be identical to the value of the BatchPredictionId in the request. - */ - BatchPredictionId?: EntityId; - } - export interface UpdateDataSourceInput { - /** - * The ID assigned to the DataSource during creation. - */ - DataSourceId: EntityId; - /** - * A new user-supplied name or description of the DataSource that will replace the current description. - */ - DataSourceName: EntityName; - } - export interface UpdateDataSourceOutput { - /** - * The ID assigned to the DataSource during creation. This value should be identical to the value of the DataSourceID in the request. - */ - DataSourceId?: EntityId; - } - export interface UpdateEvaluationInput { - /** - * The ID assigned to the Evaluation during creation. - */ - EvaluationId: EntityId; - /** - * A new user-supplied name or description of the Evaluation that will replace the current content. - */ - EvaluationName: EntityName; - } - export interface UpdateEvaluationOutput { - /** - * The ID assigned to the Evaluation during creation. This value should be identical to the value of the Evaluation in the request. - */ - EvaluationId?: EntityId; - } - export interface UpdateMLModelInput { - /** - * The ID assigned to the MLModel during creation. - */ - MLModelId: EntityId; - /** - * A user-supplied name or description of the MLModel. - */ - MLModelName?: EntityName; - /** - * The ScoreThreshold used in binary classification MLModel that marks the boundary between a positive prediction and a negative prediction. Output values greater than or equal to the ScoreThreshold receive a positive result from the MLModel, such as true. Output values less than the ScoreThreshold receive a negative response from the MLModel, such as false. - */ - ScoreThreshold?: ScoreThreshold; - } - export interface UpdateMLModelOutput { - /** - * The ID assigned to the MLModel during creation. This value should be identical to the value of the MLModelID in the request. - */ - MLModelId?: EntityId; - } - export type VariableName = string; - export type VariableValue = string; - export type Verbose = boolean; - export type VipURL = string; - export type floatLabel = number; - /** - * A string in YYYY-MM-DD format that represents the latest possible API version that can be used in this service. Specify 'latest' to use the latest possible version. - */ - export type apiVersion = "2014-12-12"|"latest"|string; - export interface ClientApiVersions { - /** - * A string in YYYY-MM-DD format that represents the latest possible API version that can be used in this service. Specify 'latest' to use the latest possible version. - */ - apiVersion?: apiVersion; - } - export type ClientConfiguration = ServiceConfigurationOptions & ClientApiVersions; - /** - * Contains interfaces for use with the MachineLearning client. - */ - export import Types = MachineLearning; -} -export = MachineLearning; diff --git a/workshops/monte-carlo-on-ec2-spot-fleet/src/web/node_modules/aws-sdk/clients/machinelearning.js b/workshops/monte-carlo-on-ec2-spot-fleet/src/web/node_modules/aws-sdk/clients/machinelearning.js deleted file mode 100644 index 68011b60..00000000 --- a/workshops/monte-carlo-on-ec2-spot-fleet/src/web/node_modules/aws-sdk/clients/machinelearning.js +++ /dev/null @@ -1,20 +0,0 @@ -require('../lib/node_loader'); -var AWS = require('../lib/core'); -var Service = AWS.Service; -var apiLoader = AWS.apiLoader; - -apiLoader.services['machinelearning'] = {}; -AWS.MachineLearning = Service.defineService('machinelearning', ['2014-12-12']); -require('../lib/services/machinelearning'); -Object.defineProperty(apiLoader.services['machinelearning'], '2014-12-12', { - get: function get() { - var model = require('../apis/machinelearning-2014-12-12.min.json'); - model.paginators = require('../apis/machinelearning-2014-12-12.paginators.json').pagination; - model.waiters = require('../apis/machinelearning-2014-12-12.waiters2.json').waiters; - return model; - }, - enumerable: true, - configurable: true -}); - -module.exports = AWS.MachineLearning; diff --git a/workshops/monte-carlo-on-ec2-spot-fleet/src/web/node_modules/aws-sdk/clients/marketplacecommerceanalytics.d.ts b/workshops/monte-carlo-on-ec2-spot-fleet/src/web/node_modules/aws-sdk/clients/marketplacecommerceanalytics.d.ts deleted file mode 100644 index aa3652b7..00000000 --- a/workshops/monte-carlo-on-ec2-spot-fleet/src/web/node_modules/aws-sdk/clients/marketplacecommerceanalytics.d.ts +++ /dev/null @@ -1,133 +0,0 @@ -import {Request} from '../lib/request'; -import {Response} from '../lib/response'; -import {AWSError} from '../lib/error'; -import {Service} from '../lib/service'; -import {ServiceConfigurationOptions} from '../lib/service'; -import {ConfigBase as Config} from '../lib/config'; -interface Blob {} -declare class MarketplaceCommerceAnalytics extends Service { - /** - * Constructs a service object. This object has one method for each API operation. - */ - constructor(options?: MarketplaceCommerceAnalytics.Types.ClientConfiguration) - config: Config & MarketplaceCommerceAnalytics.Types.ClientConfiguration; - /** - * Given a data set type and data set publication date, asynchronously publishes the requested data set to the specified S3 bucket and notifies the specified SNS topic once the data is available. Returns a unique request identifier that can be used to correlate requests with notifications from the SNS topic. Data sets will be published in comma-separated values (CSV) format with the file name {data_set_type}_YYYY-MM-DD.csv. If a file with the same name already exists (e.g. if the same data set is requested twice), the original file will be overwritten by the new file. Requires a Role with an attached permissions policy providing Allow permissions for the following actions: s3:PutObject, s3:GetBucketLocation, sns:GetTopicAttributes, sns:Publish, iam:GetRolePolicy. - */ - generateDataSet(params: MarketplaceCommerceAnalytics.Types.GenerateDataSetRequest, callback?: (err: AWSError, data: MarketplaceCommerceAnalytics.Types.GenerateDataSetResult) => void): Request; - /** - * Given a data set type and data set publication date, asynchronously publishes the requested data set to the specified S3 bucket and notifies the specified SNS topic once the data is available. Returns a unique request identifier that can be used to correlate requests with notifications from the SNS topic. Data sets will be published in comma-separated values (CSV) format with the file name {data_set_type}_YYYY-MM-DD.csv. If a file with the same name already exists (e.g. if the same data set is requested twice), the original file will be overwritten by the new file. Requires a Role with an attached permissions policy providing Allow permissions for the following actions: s3:PutObject, s3:GetBucketLocation, sns:GetTopicAttributes, sns:Publish, iam:GetRolePolicy. - */ - generateDataSet(callback?: (err: AWSError, data: MarketplaceCommerceAnalytics.Types.GenerateDataSetResult) => void): Request; - /** - * Given a data set type and a from date, asynchronously publishes the requested customer support data to the specified S3 bucket and notifies the specified SNS topic once the data is available. Returns a unique request identifier that can be used to correlate requests with notifications from the SNS topic. Data sets will be published in comma-separated values (CSV) format with the file name {data_set_type}_YYYY-MM-DD'T'HH-mm-ss'Z'.csv. If a file with the same name already exists (e.g. if the same data set is requested twice), the original file will be overwritten by the new file. Requires a Role with an attached permissions policy providing Allow permissions for the following actions: s3:PutObject, s3:GetBucketLocation, sns:GetTopicAttributes, sns:Publish, iam:GetRolePolicy. - */ - startSupportDataExport(params: MarketplaceCommerceAnalytics.Types.StartSupportDataExportRequest, callback?: (err: AWSError, data: MarketplaceCommerceAnalytics.Types.StartSupportDataExportResult) => void): Request; - /** - * Given a data set type and a from date, asynchronously publishes the requested customer support data to the specified S3 bucket and notifies the specified SNS topic once the data is available. Returns a unique request identifier that can be used to correlate requests with notifications from the SNS topic. Data sets will be published in comma-separated values (CSV) format with the file name {data_set_type}_YYYY-MM-DD'T'HH-mm-ss'Z'.csv. If a file with the same name already exists (e.g. if the same data set is requested twice), the original file will be overwritten by the new file. Requires a Role with an attached permissions policy providing Allow permissions for the following actions: s3:PutObject, s3:GetBucketLocation, sns:GetTopicAttributes, sns:Publish, iam:GetRolePolicy. - */ - startSupportDataExport(callback?: (err: AWSError, data: MarketplaceCommerceAnalytics.Types.StartSupportDataExportResult) => void): Request; -} -declare namespace MarketplaceCommerceAnalytics { - export type CustomerDefinedValues = {[key: string]: OptionalValue}; - export type DataSetPublicationDate = Date; - export type DataSetRequestId = string; - export type DataSetType = "customer_subscriber_hourly_monthly_subscriptions"|"customer_subscriber_annual_subscriptions"|"daily_business_usage_by_instance_type"|"daily_business_fees"|"daily_business_free_trial_conversions"|"daily_business_new_instances"|"daily_business_new_product_subscribers"|"daily_business_canceled_product_subscribers"|"monthly_revenue_billing_and_revenue_data"|"monthly_revenue_annual_subscriptions"|"disbursed_amount_by_product"|"disbursed_amount_by_product_with_uncollected_funds"|"disbursed_amount_by_instance_hours"|"disbursed_amount_by_customer_geo"|"disbursed_amount_by_age_of_uncollected_funds"|"disbursed_amount_by_age_of_disbursed_funds"|"customer_profile_by_industry"|"customer_profile_by_revenue"|"customer_profile_by_geography"|"sales_compensation_billed_revenue"|"us_sales_and_use_tax_records"|string; - export type DestinationS3BucketName = string; - export type DestinationS3Prefix = string; - export type ExceptionMessage = string; - export type FromDate = Date; - export interface GenerateDataSetRequest { - /** - * The desired data set type. customer_subscriber_hourly_monthly_subscriptions From 2014-07-21 to present: Available daily by 5:00 PM Pacific Time. customer_subscriber_annual_subscriptions From 2014-07-21 to present: Available daily by 5:00 PM Pacific Time. daily_business_usage_by_instance_type From 2015-01-26 to present: Available daily by 5:00 PM Pacific Time. daily_business_fees From 2015-01-26 to present: Available daily by 5:00 PM Pacific Time. daily_business_free_trial_conversions From 2015-01-26 to present: Available daily by 5:00 PM Pacific Time. daily_business_new_instances From 2015-01-26 to present: Available daily by 5:00 PM Pacific Time. daily_business_new_product_subscribers From 2015-01-26 to present: Available daily by 5:00 PM Pacific Time. daily_business_canceled_product_subscribers From 2015-01-26 to present: Available daily by 5:00 PM Pacific Time. monthly_revenue_billing_and_revenue_data From 2015-02 to 2017-06: Available monthly on the 4th day of the month by 5:00pm Pacific Time. Data includes metered transactions (e.g. hourly) from two months prior. From 2017-07 to present: Available monthly on the 15th day of the month by 5:00pm Pacific Time. Data includes metered transactions (e.g. hourly) from one month prior. monthly_revenue_annual_subscriptions From 2015-02 to 2017-06: Available monthly on the 4th day of the month by 5:00pm Pacific Time. Data includes up-front software charges (e.g. annual) from one month prior. From 2017-07 to present: Available monthly on the 15th day of the month by 5:00pm Pacific Time. Data includes up-front software charges (e.g. annual) from one month prior. disbursed_amount_by_product From 2015-01-26 to present: Available every 30 days by 5:00 PM Pacific Time. disbursed_amount_by_product_with_uncollected_funds From 2012-04-19 to 2015-01-25: Available every 30 days by 5:00 PM Pacific Time. From 2015-01-26 to present: This data set was split into three data sets: disbursed_amount_by_product, disbursed_amount_by_age_of_uncollected_funds, and disbursed_amount_by_age_of_disbursed_funds. disbursed_amount_by_instance_hours From 2012-09-04 to present: Available every 30 days by 5:00 PM Pacific Time. disbursed_amount_by_customer_geo From 2012-04-19 to present: Available every 30 days by 5:00 PM Pacific Time. disbursed_amount_by_age_of_uncollected_funds From 2015-01-26 to present: Available every 30 days by 5:00 PM Pacific Time. disbursed_amount_by_age_of_disbursed_funds From 2015-01-26 to present: Available every 30 days by 5:00 PM Pacific Time. customer_profile_by_industry From 2015-10-01 to 2017-06-29: Available daily by 5:00 PM Pacific Time. From 2017-06-30 to present: This data set is no longer available. customer_profile_by_revenue From 2015-10-01 to 2017-06-29: Available daily by 5:00 PM Pacific Time. From 2017-06-30 to present: This data set is no longer available. customer_profile_by_geography From 2015-10-01 to 2017-06-29: Available daily by 5:00 PM Pacific Time. From 2017-06-30 to present: This data set is no longer available. sales_compensation_billed_revenue From 2016-12 to 2017-06: Available monthly on the 4th day of the month by 5:00pm Pacific Time. Data includes metered transactions (e.g. hourly) from two months prior, and up-front software charges (e.g. annual) from one month prior. From 2017-06 to present: Available monthly on the 15th day of the month by 5:00pm Pacific Time. Data includes metered transactions (e.g. hourly) from one month prior, and up-front software charges (e.g. annual) from one month prior. us_sales_and_use_tax_records From 2017-02-15 to present: Available monthly on the 15th day of the month by 5:00 PM Pacific Time. - */ - dataSetType: DataSetType; - /** - * The date a data set was published. For daily data sets, provide a date with day-level granularity for the desired day. For weekly data sets, provide a date with day-level granularity within the desired week (the day value will be ignored). For monthly data sets, provide a date with month-level granularity for the desired month (the day value will be ignored). - */ - dataSetPublicationDate: DataSetPublicationDate; - /** - * The Amazon Resource Name (ARN) of the Role with an attached permissions policy to interact with the provided AWS services. - */ - roleNameArn: RoleNameArn; - /** - * The name (friendly name, not ARN) of the destination S3 bucket. - */ - destinationS3BucketName: DestinationS3BucketName; - /** - * (Optional) The desired S3 prefix for the published data set, similar to a directory path in standard file systems. For example, if given the bucket name "mybucket" and the prefix "myprefix/mydatasets", the output file "outputfile" would be published to "s3://mybucket/myprefix/mydatasets/outputfile". If the prefix directory structure does not exist, it will be created. If no prefix is provided, the data set will be published to the S3 bucket root. - */ - destinationS3Prefix?: DestinationS3Prefix; - /** - * Amazon Resource Name (ARN) for the SNS Topic that will be notified when the data set has been published or if an error has occurred. - */ - snsTopicArn: SnsTopicArn; - /** - * (Optional) Key-value pairs which will be returned, unmodified, in the Amazon SNS notification message and the data set metadata file. These key-value pairs can be used to correlated responses with tracking information from other systems. - */ - customerDefinedValues?: CustomerDefinedValues; - } - export interface GenerateDataSetResult { - /** - * A unique identifier representing a specific request to the GenerateDataSet operation. This identifier can be used to correlate a request with notifications from the SNS topic. - */ - dataSetRequestId?: DataSetRequestId; - } - export type OptionalKey = string; - export type OptionalValue = string; - export type RoleNameArn = string; - export type SnsTopicArn = string; - export interface StartSupportDataExportRequest { - /** - * Specifies the data set type to be written to the output csv file. The data set types customer_support_contacts_data and test_customer_support_contacts_data both result in a csv file containing the following fields: Product Id, Product Code, Customer Guid, Subscription Guid, Subscription Start Date, Organization, AWS Account Id, Given Name, Surname, Telephone Number, Email, Title, Country Code, ZIP Code, Operation Type, and Operation Time. customer_support_contacts_data Customer support contact data. The data set will contain all changes (Creates, Updates, and Deletes) to customer support contact data from the date specified in the from_date parameter. test_customer_support_contacts_data An example data set containing static test data in the same format as customer_support_contacts_data - */ - dataSetType: SupportDataSetType; - /** - * The start date from which to retrieve the data set in UTC. This parameter only affects the customer_support_contacts_data data set type. - */ - fromDate: FromDate; - /** - * The Amazon Resource Name (ARN) of the Role with an attached permissions policy to interact with the provided AWS services. - */ - roleNameArn: RoleNameArn; - /** - * The name (friendly name, not ARN) of the destination S3 bucket. - */ - destinationS3BucketName: DestinationS3BucketName; - /** - * (Optional) The desired S3 prefix for the published data set, similar to a directory path in standard file systems. For example, if given the bucket name "mybucket" and the prefix "myprefix/mydatasets", the output file "outputfile" would be published to "s3://mybucket/myprefix/mydatasets/outputfile". If the prefix directory structure does not exist, it will be created. If no prefix is provided, the data set will be published to the S3 bucket root. - */ - destinationS3Prefix?: DestinationS3Prefix; - /** - * Amazon Resource Name (ARN) for the SNS Topic that will be notified when the data set has been published or if an error has occurred. - */ - snsTopicArn: SnsTopicArn; - /** - * (Optional) Key-value pairs which will be returned, unmodified, in the Amazon SNS notification message and the data set metadata file. - */ - customerDefinedValues?: CustomerDefinedValues; - } - export interface StartSupportDataExportResult { - /** - * A unique identifier representing a specific request to the StartSupportDataExport operation. This identifier can be used to correlate a request with notifications from the SNS topic. - */ - dataSetRequestId?: DataSetRequestId; - } - export type SupportDataSetType = "customer_support_contacts_data"|"test_customer_support_contacts_data"|string; - /** - * A string in YYYY-MM-DD format that represents the latest possible API version that can be used in this service. Specify 'latest' to use the latest possible version. - */ - export type apiVersion = "2015-07-01"|"latest"|string; - export interface ClientApiVersions { - /** - * A string in YYYY-MM-DD format that represents the latest possible API version that can be used in this service. Specify 'latest' to use the latest possible version. - */ - apiVersion?: apiVersion; - } - export type ClientConfiguration = ServiceConfigurationOptions & ClientApiVersions; - /** - * Contains interfaces for use with the MarketplaceCommerceAnalytics client. - */ - export import Types = MarketplaceCommerceAnalytics; -} -export = MarketplaceCommerceAnalytics; diff --git a/workshops/monte-carlo-on-ec2-spot-fleet/src/web/node_modules/aws-sdk/clients/marketplacecommerceanalytics.js b/workshops/monte-carlo-on-ec2-spot-fleet/src/web/node_modules/aws-sdk/clients/marketplacecommerceanalytics.js deleted file mode 100644 index 0161ec84..00000000 --- a/workshops/monte-carlo-on-ec2-spot-fleet/src/web/node_modules/aws-sdk/clients/marketplacecommerceanalytics.js +++ /dev/null @@ -1,18 +0,0 @@ -require('../lib/node_loader'); -var AWS = require('../lib/core'); -var Service = AWS.Service; -var apiLoader = AWS.apiLoader; - -apiLoader.services['marketplacecommerceanalytics'] = {}; -AWS.MarketplaceCommerceAnalytics = Service.defineService('marketplacecommerceanalytics', ['2015-07-01']); -Object.defineProperty(apiLoader.services['marketplacecommerceanalytics'], '2015-07-01', { - get: function get() { - var model = require('../apis/marketplacecommerceanalytics-2015-07-01.min.json'); - model.paginators = require('../apis/marketplacecommerceanalytics-2015-07-01.paginators.json').pagination; - return model; - }, - enumerable: true, - configurable: true -}); - -module.exports = AWS.MarketplaceCommerceAnalytics; diff --git a/workshops/monte-carlo-on-ec2-spot-fleet/src/web/node_modules/aws-sdk/clients/marketplaceentitlementservice.d.ts b/workshops/monte-carlo-on-ec2-spot-fleet/src/web/node_modules/aws-sdk/clients/marketplaceentitlementservice.d.ts deleted file mode 100644 index 17ce0acc..00000000 --- a/workshops/monte-carlo-on-ec2-spot-fleet/src/web/node_modules/aws-sdk/clients/marketplaceentitlementservice.d.ts +++ /dev/null @@ -1,121 +0,0 @@ -import {Request} from '../lib/request'; -import {Response} from '../lib/response'; -import {AWSError} from '../lib/error'; -import {Service} from '../lib/service'; -import {ServiceConfigurationOptions} from '../lib/service'; -import {ConfigBase as Config} from '../lib/config'; -interface Blob {} -declare class MarketplaceEntitlementService extends Service { - /** - * Constructs a service object. This object has one method for each API operation. - */ - constructor(options?: MarketplaceEntitlementService.Types.ClientConfiguration) - config: Config & MarketplaceEntitlementService.Types.ClientConfiguration; - /** - * GetEntitlements retrieves entitlement values for a given product. The results can be filtered based on customer identifier or product dimensions. - */ - getEntitlements(params: MarketplaceEntitlementService.Types.GetEntitlementsRequest, callback?: (err: AWSError, data: MarketplaceEntitlementService.Types.GetEntitlementsResult) => void): Request; - /** - * GetEntitlements retrieves entitlement values for a given product. The results can be filtered based on customer identifier or product dimensions. - */ - getEntitlements(callback?: (err: AWSError, data: MarketplaceEntitlementService.Types.GetEntitlementsResult) => void): Request; -} -declare namespace MarketplaceEntitlementService { - export type Boolean = boolean; - export type Double = number; - export interface Entitlement { - /** - * The product code for which the given entitlement applies. Product codes are provided by AWS Marketplace when the product listing is created. - */ - ProductCode?: ProductCode; - /** - * The dimension for which the given entitlement applies. Dimensions represent categories of capacity in a product and are specified when the product is listed in AWS Marketplace. - */ - Dimension?: NonEmptyString; - /** - * The customer identifier is a handle to each unique customer in an application. Customer identifiers are obtained through the ResolveCustomer operation in AWS Marketplace Metering Service. - */ - CustomerIdentifier?: NonEmptyString; - /** - * The EntitlementValue represents the amount of capacity that the customer is entitled to for the product. - */ - Value?: EntitlementValue; - /** - * The expiration date represents the minimum date through which this entitlement is expected to remain valid. For contractual products listed on AWS Marketplace, the expiration date is the date at which the customer will renew or cancel their contract. Customers who are opting to renew their contract will still have entitlements with an expiration date. - */ - ExpirationDate?: Timestamp; - } - export type EntitlementList = Entitlement[]; - export interface EntitlementValue { - /** - * The IntegerValue field will be populated with an integer value when the entitlement is an integer type. Otherwise, the field will not be set. - */ - IntegerValue?: Integer; - /** - * The DoubleValue field will be populated with a double value when the entitlement is a double type. Otherwise, the field will not be set. - */ - DoubleValue?: Double; - /** - * The BooleanValue field will be populated with a boolean value when the entitlement is a boolean type. Otherwise, the field will not be set. - */ - BooleanValue?: Boolean; - /** - * The StringValue field will be populated with a string value when the entitlement is a string type. Otherwise, the field will not be set. - */ - StringValue?: String; - } - export type ErrorMessage = string; - export type FilterValue = string; - export type FilterValueList = FilterValue[]; - export type GetEntitlementFilterName = "CUSTOMER_IDENTIFIER"|"DIMENSION"|string; - export type GetEntitlementFilters = {[key: string]: FilterValueList}; - export interface GetEntitlementsRequest { - /** - * Product code is used to uniquely identify a product in AWS Marketplace. The product code will be provided by AWS Marketplace when the product listing is created. - */ - ProductCode: ProductCode; - /** - * Filter is used to return entitlements for a specific customer or for a specific dimension. Filters are described as keys mapped to a lists of values. Filtered requests are unioned for each value in the value list, and then intersected for each filter key. - */ - Filter?: GetEntitlementFilters; - /** - * For paginated calls to GetEntitlements, pass the NextToken from the previous GetEntitlementsResult. - */ - NextToken?: NonEmptyString; - /** - * The maximum number of items to retrieve from the GetEntitlements operation. For pagination, use the NextToken field in subsequent calls to GetEntitlements. - */ - MaxResults?: Integer; - } - export interface GetEntitlementsResult { - /** - * The set of entitlements found through the GetEntitlements operation. If the result contains an empty set of entitlements, NextToken might still be present and should be used. - */ - Entitlements?: EntitlementList; - /** - * For paginated results, use NextToken in subsequent calls to GetEntitlements. If the result contains an empty set of entitlements, NextToken might still be present and should be used. - */ - NextToken?: NonEmptyString; - } - export type Integer = number; - export type NonEmptyString = string; - export type ProductCode = string; - export type String = string; - export type Timestamp = Date; - /** - * A string in YYYY-MM-DD format that represents the latest possible API version that can be used in this service. Specify 'latest' to use the latest possible version. - */ - export type apiVersion = "2017-01-11"|"latest"|string; - export interface ClientApiVersions { - /** - * A string in YYYY-MM-DD format that represents the latest possible API version that can be used in this service. Specify 'latest' to use the latest possible version. - */ - apiVersion?: apiVersion; - } - export type ClientConfiguration = ServiceConfigurationOptions & ClientApiVersions; - /** - * Contains interfaces for use with the MarketplaceEntitlementService client. - */ - export import Types = MarketplaceEntitlementService; -} -export = MarketplaceEntitlementService; diff --git a/workshops/monte-carlo-on-ec2-spot-fleet/src/web/node_modules/aws-sdk/clients/marketplaceentitlementservice.js b/workshops/monte-carlo-on-ec2-spot-fleet/src/web/node_modules/aws-sdk/clients/marketplaceentitlementservice.js deleted file mode 100644 index 6ba7de08..00000000 --- a/workshops/monte-carlo-on-ec2-spot-fleet/src/web/node_modules/aws-sdk/clients/marketplaceentitlementservice.js +++ /dev/null @@ -1,18 +0,0 @@ -require('../lib/node_loader'); -var AWS = require('../lib/core'); -var Service = AWS.Service; -var apiLoader = AWS.apiLoader; - -apiLoader.services['marketplaceentitlementservice'] = {}; -AWS.MarketplaceEntitlementService = Service.defineService('marketplaceentitlementservice', ['2017-01-11']); -Object.defineProperty(apiLoader.services['marketplaceentitlementservice'], '2017-01-11', { - get: function get() { - var model = require('../apis/entitlement.marketplace-2017-01-11.min.json'); - model.paginators = require('../apis/entitlement.marketplace-2017-01-11.paginators.json').pagination; - return model; - }, - enumerable: true, - configurable: true -}); - -module.exports = AWS.MarketplaceEntitlementService; diff --git a/workshops/monte-carlo-on-ec2-spot-fleet/src/web/node_modules/aws-sdk/clients/marketplacemetering.d.ts b/workshops/monte-carlo-on-ec2-spot-fleet/src/web/node_modules/aws-sdk/clients/marketplacemetering.d.ts deleted file mode 100644 index c49f10d2..00000000 --- a/workshops/monte-carlo-on-ec2-spot-fleet/src/web/node_modules/aws-sdk/clients/marketplacemetering.d.ts +++ /dev/null @@ -1,161 +0,0 @@ -import {Request} from '../lib/request'; -import {Response} from '../lib/response'; -import {AWSError} from '../lib/error'; -import {Service} from '../lib/service'; -import {ServiceConfigurationOptions} from '../lib/service'; -import {ConfigBase as Config} from '../lib/config'; -interface Blob {} -declare class MarketplaceMetering extends Service { - /** - * Constructs a service object. This object has one method for each API operation. - */ - constructor(options?: MarketplaceMetering.Types.ClientConfiguration) - config: Config & MarketplaceMetering.Types.ClientConfiguration; - /** - * BatchMeterUsage is called from a SaaS application listed on the AWS Marketplace to post metering records for a set of customers. For identical requests, the API is idempotent; requests can be retried with the same records or a subset of the input records. Every request to BatchMeterUsage is for one product. If you need to meter usage for multiple products, you must make multiple calls to BatchMeterUsage. BatchMeterUsage can process up to 25 UsageRecords at a time. - */ - batchMeterUsage(params: MarketplaceMetering.Types.BatchMeterUsageRequest, callback?: (err: AWSError, data: MarketplaceMetering.Types.BatchMeterUsageResult) => void): Request; - /** - * BatchMeterUsage is called from a SaaS application listed on the AWS Marketplace to post metering records for a set of customers. For identical requests, the API is idempotent; requests can be retried with the same records or a subset of the input records. Every request to BatchMeterUsage is for one product. If you need to meter usage for multiple products, you must make multiple calls to BatchMeterUsage. BatchMeterUsage can process up to 25 UsageRecords at a time. - */ - batchMeterUsage(callback?: (err: AWSError, data: MarketplaceMetering.Types.BatchMeterUsageResult) => void): Request; - /** - * API to emit metering records. For identical requests, the API is idempotent. It simply returns the metering record ID. MeterUsage is authenticated on the buyer's AWS account, generally when running from an EC2 instance on the AWS Marketplace. - */ - meterUsage(params: MarketplaceMetering.Types.MeterUsageRequest, callback?: (err: AWSError, data: MarketplaceMetering.Types.MeterUsageResult) => void): Request; - /** - * API to emit metering records. For identical requests, the API is idempotent. It simply returns the metering record ID. MeterUsage is authenticated on the buyer's AWS account, generally when running from an EC2 instance on the AWS Marketplace. - */ - meterUsage(callback?: (err: AWSError, data: MarketplaceMetering.Types.MeterUsageResult) => void): Request; - /** - * ResolveCustomer is called by a SaaS application during the registration process. When a buyer visits your website during the registration process, the buyer submits a registration token through their browser. The registration token is resolved through this API to obtain a CustomerIdentifier and product code. - */ - resolveCustomer(params: MarketplaceMetering.Types.ResolveCustomerRequest, callback?: (err: AWSError, data: MarketplaceMetering.Types.ResolveCustomerResult) => void): Request; - /** - * ResolveCustomer is called by a SaaS application during the registration process. When a buyer visits your website during the registration process, the buyer submits a registration token through their browser. The registration token is resolved through this API to obtain a CustomerIdentifier and product code. - */ - resolveCustomer(callback?: (err: AWSError, data: MarketplaceMetering.Types.ResolveCustomerResult) => void): Request; -} -declare namespace MarketplaceMetering { - export interface BatchMeterUsageRequest { - /** - * The set of UsageRecords to submit. BatchMeterUsage accepts up to 25 UsageRecords at a time. - */ - UsageRecords: UsageRecordList; - /** - * Product code is used to uniquely identify a product in AWS Marketplace. The product code should be the same as the one used during the publishing of a new product. - */ - ProductCode: ProductCode; - } - export interface BatchMeterUsageResult { - /** - * Contains all UsageRecords processed by BatchMeterUsage. These records were either honored by AWS Marketplace Metering Service or were invalid. - */ - Results?: UsageRecordResultList; - /** - * Contains all UsageRecords that were not processed by BatchMeterUsage. This is a list of UsageRecords. You can retry the failed request by making another BatchMeterUsage call with this list as input in the BatchMeterUsageRequest. - */ - UnprocessedRecords?: UsageRecordList; - } - export type Boolean = boolean; - export type CustomerIdentifier = string; - export interface MeterUsageRequest { - /** - * Product code is used to uniquely identify a product in AWS Marketplace. The product code should be the same as the one used during the publishing of a new product. - */ - ProductCode: ProductCode; - /** - * Timestamp of the hour, recorded in UTC. The seconds and milliseconds portions of the timestamp will be ignored. - */ - Timestamp: Timestamp; - /** - * It will be one of the fcp dimension name provided during the publishing of the product. - */ - UsageDimension: UsageDimension; - /** - * Consumption value for the hour. - */ - UsageQuantity: UsageQuantity; - /** - * Checks whether you have the permissions required for the action, but does not make the request. If you have the permissions, the request returns DryRunOperation; otherwise, it returns UnauthorizedException. - */ - DryRun: Boolean; - } - export interface MeterUsageResult { - MeteringRecordId?: String; - } - export type NonEmptyString = string; - export type ProductCode = string; - export interface ResolveCustomerRequest { - /** - * When a buyer visits your website during the registration process, the buyer submits a registration token through the browser. The registration token is resolved to obtain a CustomerIdentifier and product code. - */ - RegistrationToken: NonEmptyString; - } - export interface ResolveCustomerResult { - /** - * The CustomerIdentifier is used to identify an individual customer in your application. Calls to BatchMeterUsage require CustomerIdentifiers for each UsageRecord. - */ - CustomerIdentifier?: CustomerIdentifier; - /** - * The product code is returned to confirm that the buyer is registering for your product. Subsequent BatchMeterUsage calls should be made using this product code. - */ - ProductCode?: ProductCode; - } - export type String = string; - export type Timestamp = Date; - export type UsageDimension = string; - export type UsageQuantity = number; - export interface UsageRecord { - /** - * Timestamp of the hour, recorded in UTC. The seconds and milliseconds portions of the timestamp will be ignored. Your application can meter usage for up to one hour in the past. - */ - Timestamp: Timestamp; - /** - * The CustomerIdentifier is obtained through the ResolveCustomer operation and represents an individual buyer in your application. - */ - CustomerIdentifier: CustomerIdentifier; - /** - * During the process of registering a product on AWS Marketplace, up to eight dimensions are specified. These represent different units of value in your application. - */ - Dimension: UsageDimension; - /** - * The quantity of usage consumed by the customer for the given dimension and time. - */ - Quantity: UsageQuantity; - } - export type UsageRecordList = UsageRecord[]; - export interface UsageRecordResult { - /** - * The UsageRecord that was part of the BatchMeterUsage request. - */ - UsageRecord?: UsageRecord; - /** - * The MeteringRecordId is a unique identifier for this metering event. - */ - MeteringRecordId?: String; - /** - * The UsageRecordResult Status indicates the status of an individual UsageRecord processed by BatchMeterUsage. Success- The UsageRecord was accepted and honored by BatchMeterUsage. CustomerNotSubscribed- The CustomerIdentifier specified is not subscribed to your product. The UsageRecord was not honored. Future UsageRecords for this customer will fail until the customer subscribes to your product. DuplicateRecord- Indicates that the UsageRecord was invalid and not honored. A previously metered UsageRecord had the same customer, dimension, and time, but a different quantity. - */ - Status?: UsageRecordResultStatus; - } - export type UsageRecordResultList = UsageRecordResult[]; - export type UsageRecordResultStatus = "Success"|"CustomerNotSubscribed"|"DuplicateRecord"|string; - export type errorMessage = string; - /** - * A string in YYYY-MM-DD format that represents the latest possible API version that can be used in this service. Specify 'latest' to use the latest possible version. - */ - export type apiVersion = "2016-01-14"|"latest"|string; - export interface ClientApiVersions { - /** - * A string in YYYY-MM-DD format that represents the latest possible API version that can be used in this service. Specify 'latest' to use the latest possible version. - */ - apiVersion?: apiVersion; - } - export type ClientConfiguration = ServiceConfigurationOptions & ClientApiVersions; - /** - * Contains interfaces for use with the MarketplaceMetering client. - */ - export import Types = MarketplaceMetering; -} -export = MarketplaceMetering; diff --git a/workshops/monte-carlo-on-ec2-spot-fleet/src/web/node_modules/aws-sdk/clients/marketplacemetering.js b/workshops/monte-carlo-on-ec2-spot-fleet/src/web/node_modules/aws-sdk/clients/marketplacemetering.js deleted file mode 100644 index b72973d5..00000000 --- a/workshops/monte-carlo-on-ec2-spot-fleet/src/web/node_modules/aws-sdk/clients/marketplacemetering.js +++ /dev/null @@ -1,17 +0,0 @@ -require('../lib/node_loader'); -var AWS = require('../lib/core'); -var Service = AWS.Service; -var apiLoader = AWS.apiLoader; - -apiLoader.services['marketplacemetering'] = {}; -AWS.MarketplaceMetering = Service.defineService('marketplacemetering', ['2016-01-14']); -Object.defineProperty(apiLoader.services['marketplacemetering'], '2016-01-14', { - get: function get() { - var model = require('../apis/meteringmarketplace-2016-01-14.min.json'); - return model; - }, - enumerable: true, - configurable: true -}); - -module.exports = AWS.MarketplaceMetering; diff --git a/workshops/monte-carlo-on-ec2-spot-fleet/src/web/node_modules/aws-sdk/clients/migrationhub.d.ts b/workshops/monte-carlo-on-ec2-spot-fleet/src/web/node_modules/aws-sdk/clients/migrationhub.d.ts deleted file mode 100644 index 2b17cefe..00000000 --- a/workshops/monte-carlo-on-ec2-spot-fleet/src/web/node_modules/aws-sdk/clients/migrationhub.d.ts +++ /dev/null @@ -1,602 +0,0 @@ -import {Request} from '../lib/request'; -import {Response} from '../lib/response'; -import {AWSError} from '../lib/error'; -import {Service} from '../lib/service'; -import {ServiceConfigurationOptions} from '../lib/service'; -import {ConfigBase as Config} from '../lib/config'; -interface Blob {} -declare class MigrationHub extends Service { - /** - * Constructs a service object. This object has one method for each API operation. - */ - constructor(options?: MigrationHub.Types.ClientConfiguration) - config: Config & MigrationHub.Types.ClientConfiguration; - /** - * Associates a created artifact of an AWS cloud resource, the target receiving the migration, with the migration task performed by a migration tool. This API has the following traits: Migration tools can call the AssociateCreatedArtifact operation to indicate which AWS artifact is associated with a migration task. The created artifact name must be provided in ARN (Amazon Resource Name) format which will contain information about type and region; for example: arn:aws:ec2:us-east-1:488216288981:image/ami-6d0ba87b. Examples of the AWS resource behind the created artifact are, AMI's, EC2 instance, or DMS endpoint, etc. - */ - associateCreatedArtifact(params: MigrationHub.Types.AssociateCreatedArtifactRequest, callback?: (err: AWSError, data: MigrationHub.Types.AssociateCreatedArtifactResult) => void): Request; - /** - * Associates a created artifact of an AWS cloud resource, the target receiving the migration, with the migration task performed by a migration tool. This API has the following traits: Migration tools can call the AssociateCreatedArtifact operation to indicate which AWS artifact is associated with a migration task. The created artifact name must be provided in ARN (Amazon Resource Name) format which will contain information about type and region; for example: arn:aws:ec2:us-east-1:488216288981:image/ami-6d0ba87b. Examples of the AWS resource behind the created artifact are, AMI's, EC2 instance, or DMS endpoint, etc. - */ - associateCreatedArtifact(callback?: (err: AWSError, data: MigrationHub.Types.AssociateCreatedArtifactResult) => void): Request; - /** - * Associates a discovered resource ID from Application Discovery Service (ADS) with a migration task. - */ - associateDiscoveredResource(params: MigrationHub.Types.AssociateDiscoveredResourceRequest, callback?: (err: AWSError, data: MigrationHub.Types.AssociateDiscoveredResourceResult) => void): Request; - /** - * Associates a discovered resource ID from Application Discovery Service (ADS) with a migration task. - */ - associateDiscoveredResource(callback?: (err: AWSError, data: MigrationHub.Types.AssociateDiscoveredResourceResult) => void): Request; - /** - * Creates a progress update stream which is an AWS resource used for access control as well as a namespace for migration task names that is implicitly linked to your AWS account. It must uniquely identify the migration tool as it is used for all updates made by the tool; however, it does not need to be unique for each AWS account because it is scoped to the AWS account. - */ - createProgressUpdateStream(params: MigrationHub.Types.CreateProgressUpdateStreamRequest, callback?: (err: AWSError, data: MigrationHub.Types.CreateProgressUpdateStreamResult) => void): Request; - /** - * Creates a progress update stream which is an AWS resource used for access control as well as a namespace for migration task names that is implicitly linked to your AWS account. It must uniquely identify the migration tool as it is used for all updates made by the tool; however, it does not need to be unique for each AWS account because it is scoped to the AWS account. - */ - createProgressUpdateStream(callback?: (err: AWSError, data: MigrationHub.Types.CreateProgressUpdateStreamResult) => void): Request; - /** - * Deletes a progress update stream, including all of its tasks, which was previously created as an AWS resource used for access control. This API has the following traits: The only parameter needed for DeleteProgressUpdateStream is the stream name (same as a CreateProgressUpdateStream call). The call will return, and a background process will asynchronously be doing the actual delete of the stream and all of its resources (tasks, associated resources, resource attributes, created artifacts). If the stream takes time to be deleted, it might still show up on a ListProgressUpdateStreams call. CreateProgressUpdateStream, ImportMigrationTask, NotifyMigrationTaskState, and all Associate[*] APIs realted to the tasks belonging to the stream will throw "InvalidInputException" if the stream of the same name is in the process of being deleted. Once the stream and all of its resources are deleted, CreateProgressUpdateStream for a stream of the same name will succeed, and that stream will be an entirely new logical resource (without any resources associated with the old stream). - */ - deleteProgressUpdateStream(params: MigrationHub.Types.DeleteProgressUpdateStreamRequest, callback?: (err: AWSError, data: MigrationHub.Types.DeleteProgressUpdateStreamResult) => void): Request; - /** - * Deletes a progress update stream, including all of its tasks, which was previously created as an AWS resource used for access control. This API has the following traits: The only parameter needed for DeleteProgressUpdateStream is the stream name (same as a CreateProgressUpdateStream call). The call will return, and a background process will asynchronously be doing the actual delete of the stream and all of its resources (tasks, associated resources, resource attributes, created artifacts). If the stream takes time to be deleted, it might still show up on a ListProgressUpdateStreams call. CreateProgressUpdateStream, ImportMigrationTask, NotifyMigrationTaskState, and all Associate[*] APIs realted to the tasks belonging to the stream will throw "InvalidInputException" if the stream of the same name is in the process of being deleted. Once the stream and all of its resources are deleted, CreateProgressUpdateStream for a stream of the same name will succeed, and that stream will be an entirely new logical resource (without any resources associated with the old stream). - */ - deleteProgressUpdateStream(callback?: (err: AWSError, data: MigrationHub.Types.DeleteProgressUpdateStreamResult) => void): Request; - /** - * Gets the migration status of an application. - */ - describeApplicationState(params: MigrationHub.Types.DescribeApplicationStateRequest, callback?: (err: AWSError, data: MigrationHub.Types.DescribeApplicationStateResult) => void): Request; - /** - * Gets the migration status of an application. - */ - describeApplicationState(callback?: (err: AWSError, data: MigrationHub.Types.DescribeApplicationStateResult) => void): Request; - /** - * Retrieves a list of all attributes associated with a specific migration task. - */ - describeMigrationTask(params: MigrationHub.Types.DescribeMigrationTaskRequest, callback?: (err: AWSError, data: MigrationHub.Types.DescribeMigrationTaskResult) => void): Request; - /** - * Retrieves a list of all attributes associated with a specific migration task. - */ - describeMigrationTask(callback?: (err: AWSError, data: MigrationHub.Types.DescribeMigrationTaskResult) => void): Request; - /** - * Disassociates a created artifact of an AWS resource with a migration task performed by a migration tool that was previously associated. This API has the following traits: A migration user can call the DisassociateCreatedArtifacts operation to disassociate a created AWS Artifact from a migration task. The created artifact name must be provided in ARN (Amazon Resource Name) format which will contain information about type and region; for example: arn:aws:ec2:us-east-1:488216288981:image/ami-6d0ba87b. Examples of the AWS resource behind the created artifact are, AMI's, EC2 instance, or RDS instance, etc. - */ - disassociateCreatedArtifact(params: MigrationHub.Types.DisassociateCreatedArtifactRequest, callback?: (err: AWSError, data: MigrationHub.Types.DisassociateCreatedArtifactResult) => void): Request; - /** - * Disassociates a created artifact of an AWS resource with a migration task performed by a migration tool that was previously associated. This API has the following traits: A migration user can call the DisassociateCreatedArtifacts operation to disassociate a created AWS Artifact from a migration task. The created artifact name must be provided in ARN (Amazon Resource Name) format which will contain information about type and region; for example: arn:aws:ec2:us-east-1:488216288981:image/ami-6d0ba87b. Examples of the AWS resource behind the created artifact are, AMI's, EC2 instance, or RDS instance, etc. - */ - disassociateCreatedArtifact(callback?: (err: AWSError, data: MigrationHub.Types.DisassociateCreatedArtifactResult) => void): Request; - /** - * Disassociate an Application Discovery Service (ADS) discovered resource from a migration task. - */ - disassociateDiscoveredResource(params: MigrationHub.Types.DisassociateDiscoveredResourceRequest, callback?: (err: AWSError, data: MigrationHub.Types.DisassociateDiscoveredResourceResult) => void): Request; - /** - * Disassociate an Application Discovery Service (ADS) discovered resource from a migration task. - */ - disassociateDiscoveredResource(callback?: (err: AWSError, data: MigrationHub.Types.DisassociateDiscoveredResourceResult) => void): Request; - /** - * Registers a new migration task which represents a server, database, etc., being migrated to AWS by a migration tool. This API is a prerequisite to calling the NotifyMigrationTaskState API as the migration tool must first register the migration task with Migration Hub. - */ - importMigrationTask(params: MigrationHub.Types.ImportMigrationTaskRequest, callback?: (err: AWSError, data: MigrationHub.Types.ImportMigrationTaskResult) => void): Request; - /** - * Registers a new migration task which represents a server, database, etc., being migrated to AWS by a migration tool. This API is a prerequisite to calling the NotifyMigrationTaskState API as the migration tool must first register the migration task with Migration Hub. - */ - importMigrationTask(callback?: (err: AWSError, data: MigrationHub.Types.ImportMigrationTaskResult) => void): Request; - /** - * Lists the created artifacts attached to a given migration task in an update stream. This API has the following traits: Gets the list of the created artifacts while migration is taking place. Shows the artifacts created by the migration tool that was associated by the AssociateCreatedArtifact API. Lists created artifacts in a paginated interface. - */ - listCreatedArtifacts(params: MigrationHub.Types.ListCreatedArtifactsRequest, callback?: (err: AWSError, data: MigrationHub.Types.ListCreatedArtifactsResult) => void): Request; - /** - * Lists the created artifacts attached to a given migration task in an update stream. This API has the following traits: Gets the list of the created artifacts while migration is taking place. Shows the artifacts created by the migration tool that was associated by the AssociateCreatedArtifact API. Lists created artifacts in a paginated interface. - */ - listCreatedArtifacts(callback?: (err: AWSError, data: MigrationHub.Types.ListCreatedArtifactsResult) => void): Request; - /** - * Lists discovered resources associated with the given MigrationTask. - */ - listDiscoveredResources(params: MigrationHub.Types.ListDiscoveredResourcesRequest, callback?: (err: AWSError, data: MigrationHub.Types.ListDiscoveredResourcesResult) => void): Request; - /** - * Lists discovered resources associated with the given MigrationTask. - */ - listDiscoveredResources(callback?: (err: AWSError, data: MigrationHub.Types.ListDiscoveredResourcesResult) => void): Request; - /** - * Lists all, or filtered by resource name, migration tasks associated with the user account making this call. This API has the following traits: Can show a summary list of the most recent migration tasks. Can show a summary list of migration tasks associated with a given discovered resource. Lists migration tasks in a paginated interface. - */ - listMigrationTasks(params: MigrationHub.Types.ListMigrationTasksRequest, callback?: (err: AWSError, data: MigrationHub.Types.ListMigrationTasksResult) => void): Request; - /** - * Lists all, or filtered by resource name, migration tasks associated with the user account making this call. This API has the following traits: Can show a summary list of the most recent migration tasks. Can show a summary list of migration tasks associated with a given discovered resource. Lists migration tasks in a paginated interface. - */ - listMigrationTasks(callback?: (err: AWSError, data: MigrationHub.Types.ListMigrationTasksResult) => void): Request; - /** - * Lists progress update streams associated with the user account making this call. - */ - listProgressUpdateStreams(params: MigrationHub.Types.ListProgressUpdateStreamsRequest, callback?: (err: AWSError, data: MigrationHub.Types.ListProgressUpdateStreamsResult) => void): Request; - /** - * Lists progress update streams associated with the user account making this call. - */ - listProgressUpdateStreams(callback?: (err: AWSError, data: MigrationHub.Types.ListProgressUpdateStreamsResult) => void): Request; - /** - * Sets the migration state of an application. For a given application identified by the value passed to ApplicationId, its status is set or updated by passing one of three values to Status: NOT_STARTED | IN_PROGRESS | COMPLETED. - */ - notifyApplicationState(params: MigrationHub.Types.NotifyApplicationStateRequest, callback?: (err: AWSError, data: MigrationHub.Types.NotifyApplicationStateResult) => void): Request; - /** - * Sets the migration state of an application. For a given application identified by the value passed to ApplicationId, its status is set or updated by passing one of three values to Status: NOT_STARTED | IN_PROGRESS | COMPLETED. - */ - notifyApplicationState(callback?: (err: AWSError, data: MigrationHub.Types.NotifyApplicationStateResult) => void): Request; - /** - * Notifies Migration Hub of the current status, progress, or other detail regarding a migration task. This API has the following traits: Migration tools will call the NotifyMigrationTaskState API to share the latest progress and status. MigrationTaskName is used for addressing updates to the correct target. ProgressUpdateStream is used for access control and to provide a namespace for each migration tool. - */ - notifyMigrationTaskState(params: MigrationHub.Types.NotifyMigrationTaskStateRequest, callback?: (err: AWSError, data: MigrationHub.Types.NotifyMigrationTaskStateResult) => void): Request; - /** - * Notifies Migration Hub of the current status, progress, or other detail regarding a migration task. This API has the following traits: Migration tools will call the NotifyMigrationTaskState API to share the latest progress and status. MigrationTaskName is used for addressing updates to the correct target. ProgressUpdateStream is used for access control and to provide a namespace for each migration tool. - */ - notifyMigrationTaskState(callback?: (err: AWSError, data: MigrationHub.Types.NotifyMigrationTaskStateResult) => void): Request; - /** - * Provides identifying details of the resource being migrated so that it can be associated in the Application Discovery Service (ADS)'s repository. This association occurs asynchronously after PutResourceAttributes returns. Keep in mind that subsequent calls to PutResourceAttributes will override previously stored attributes. For example, if it is first called with a MAC address, but later, it is desired to add an IP address, it will then be required to call it with both the IP and MAC addresses to prevent overiding the MAC address. Because this is an asynchronous call, it will always return 200, whether an association occurs or not. To confirm if an association was found based on the provided details, call ListAssociatedResource. - */ - putResourceAttributes(params: MigrationHub.Types.PutResourceAttributesRequest, callback?: (err: AWSError, data: MigrationHub.Types.PutResourceAttributesResult) => void): Request; - /** - * Provides identifying details of the resource being migrated so that it can be associated in the Application Discovery Service (ADS)'s repository. This association occurs asynchronously after PutResourceAttributes returns. Keep in mind that subsequent calls to PutResourceAttributes will override previously stored attributes. For example, if it is first called with a MAC address, but later, it is desired to add an IP address, it will then be required to call it with both the IP and MAC addresses to prevent overiding the MAC address. Because this is an asynchronous call, it will always return 200, whether an association occurs or not. To confirm if an association was found based on the provided details, call ListAssociatedResource. - */ - putResourceAttributes(callback?: (err: AWSError, data: MigrationHub.Types.PutResourceAttributesResult) => void): Request; -} -declare namespace MigrationHub { - export type ApplicationId = string; - export type ApplicationStatus = "NOT_STARTED"|"IN_PROGRESS"|"COMPLETED"|string; - export interface AssociateCreatedArtifactRequest { - /** - * The name of the ProgressUpdateStream. - */ - ProgressUpdateStream: ProgressUpdateStream; - /** - * Unique identifier that references the migration task. - */ - MigrationTaskName: MigrationTaskName; - /** - * An ARN of the AWS resource related to the migration (e.g., AMI, EC2 instance, RDS instance, etc.) - */ - CreatedArtifact: CreatedArtifact; - /** - * Optional boolean flag to indicate whether any effect should take place. Used to test if the caller has permission to make the call. - */ - DryRun?: DryRun; - } - export interface AssociateCreatedArtifactResult { - } - export interface AssociateDiscoveredResourceRequest { - /** - * The name of the ProgressUpdateStream. - */ - ProgressUpdateStream: ProgressUpdateStream; - /** - * The identifier given to the MigrationTask. - */ - MigrationTaskName: MigrationTaskName; - /** - * Object representing a Resource. - */ - DiscoveredResource: DiscoveredResource; - /** - * Optional boolean flag to indicate whether any effect should take place. Used to test if the caller has permission to make the call. - */ - DryRun?: DryRun; - } - export interface AssociateDiscoveredResourceResult { - } - export type ConfigurationId = string; - export interface CreateProgressUpdateStreamRequest { - /** - * The name of the ProgressUpdateStream. - */ - ProgressUpdateStreamName: ProgressUpdateStream; - /** - * Optional boolean flag to indicate whether any effect should take place. Used to test if the caller has permission to make the call. - */ - DryRun?: DryRun; - } - export interface CreateProgressUpdateStreamResult { - } - export interface CreatedArtifact { - /** - * An ARN that uniquely identifies the result of a migration task. - */ - Name: CreatedArtifactName; - /** - * A description that can be free-form text to record additional detail about the artifact for clarity or for later reference. - */ - Description?: CreatedArtifactDescription; - } - export type CreatedArtifactDescription = string; - export type CreatedArtifactList = CreatedArtifact[]; - export type CreatedArtifactName = string; - export interface DeleteProgressUpdateStreamRequest { - /** - * The name of the ProgressUpdateStream. - */ - ProgressUpdateStreamName: ProgressUpdateStream; - /** - * Optional boolean flag to indicate whether any effect should take place. Used to test if the caller has permission to make the call. - */ - DryRun?: DryRun; - } - export interface DeleteProgressUpdateStreamResult { - } - export interface DescribeApplicationStateRequest { - /** - * The configurationId in ADS that uniquely identifies the grouped application. - */ - ApplicationId: ApplicationId; - } - export interface DescribeApplicationStateResult { - /** - * Status of the application - Not Started, In-Progress, Complete. - */ - ApplicationStatus?: ApplicationStatus; - /** - * The timestamp when the application status was last updated. - */ - LastUpdatedTime?: UpdateDateTime; - } - export interface DescribeMigrationTaskRequest { - /** - * The name of the ProgressUpdateStream. - */ - ProgressUpdateStream: ProgressUpdateStream; - /** - * The identifier given to the MigrationTask. - */ - MigrationTaskName: MigrationTaskName; - } - export interface DescribeMigrationTaskResult { - /** - * Object encapsulating information about the migration task. - */ - MigrationTask?: MigrationTask; - } - export interface DisassociateCreatedArtifactRequest { - /** - * The name of the ProgressUpdateStream. - */ - ProgressUpdateStream: ProgressUpdateStream; - /** - * Unique identifier that references the migration task to be disassociated with the artifact. - */ - MigrationTaskName: MigrationTaskName; - /** - * An ARN of the AWS resource related to the migration (e.g., AMI, EC2 instance, RDS instance, etc.) - */ - CreatedArtifactName: CreatedArtifactName; - /** - * Optional boolean flag to indicate whether any effect should take place. Used to test if the caller has permission to make the call. - */ - DryRun?: DryRun; - } - export interface DisassociateCreatedArtifactResult { - } - export interface DisassociateDiscoveredResourceRequest { - /** - * The name of the ProgressUpdateStream. - */ - ProgressUpdateStream: ProgressUpdateStream; - /** - * The identifier given to the MigrationTask. - */ - MigrationTaskName: MigrationTaskName; - /** - * ConfigurationId of the ADS resource to be disassociated. - */ - ConfigurationId: ConfigurationId; - /** - * Optional boolean flag to indicate whether any effect should take place. Used to test if the caller has permission to make the call. - */ - DryRun?: DryRun; - } - export interface DisassociateDiscoveredResourceResult { - } - export interface DiscoveredResource { - /** - * The configurationId in ADS that uniquely identifies the on-premise resource. - */ - ConfigurationId: ConfigurationId; - /** - * A description that can be free-form text to record additional detail about the discovered resource for clarity or later reference. - */ - Description?: DiscoveredResourceDescription; - } - export type DiscoveredResourceDescription = string; - export type DiscoveredResourceList = DiscoveredResource[]; - export type DryRun = boolean; - export type ErrorMessage = string; - export interface ImportMigrationTaskRequest { - /** - * The name of the ProgressUpdateStream. - */ - ProgressUpdateStream: ProgressUpdateStream; - /** - * Unique identifier that references the migration task. - */ - MigrationTaskName: MigrationTaskName; - /** - * Optional boolean flag to indicate whether any effect should take place. Used to test if the caller has permission to make the call. - */ - DryRun?: DryRun; - } - export interface ImportMigrationTaskResult { - } - export type LatestResourceAttributeList = ResourceAttribute[]; - export interface ListCreatedArtifactsRequest { - /** - * The name of the ProgressUpdateStream. - */ - ProgressUpdateStream: ProgressUpdateStream; - /** - * Unique identifier that references the migration task. - */ - MigrationTaskName: MigrationTaskName; - /** - * If a NextToken was returned by a previous call, there are more results available. To retrieve the next page of results, make the call again using the returned token in NextToken. - */ - NextToken?: Token; - /** - * Maximum number of results to be returned per page. - */ - MaxResults?: MaxResultsCreatedArtifacts; - } - export interface ListCreatedArtifactsResult { - /** - * If there are more created artifacts than the max result, return the next token to be passed to the next call as a bookmark of where to start from. - */ - NextToken?: Token; - /** - * List of created artifacts up to the maximum number of results specified in the request. - */ - CreatedArtifactList?: CreatedArtifactList; - } - export interface ListDiscoveredResourcesRequest { - /** - * The name of the ProgressUpdateStream. - */ - ProgressUpdateStream: ProgressUpdateStream; - /** - * The name of the MigrationTask. - */ - MigrationTaskName: MigrationTaskName; - /** - * If a NextToken was returned by a previous call, there are more results available. To retrieve the next page of results, make the call again using the returned token in NextToken. - */ - NextToken?: Token; - /** - * The maximum number of results returned per page. - */ - MaxResults?: MaxResultsResources; - } - export interface ListDiscoveredResourcesResult { - /** - * If there are more discovered resources than the max result, return the next token to be passed to the next call as a bookmark of where to start from. - */ - NextToken?: Token; - /** - * Returned list of discovered resources associated with the given MigrationTask. - */ - DiscoveredResourceList?: DiscoveredResourceList; - } - export interface ListMigrationTasksRequest { - /** - * If a NextToken was returned by a previous call, there are more results available. To retrieve the next page of results, make the call again using the returned token in NextToken. - */ - NextToken?: Token; - /** - * Value to specify how many results are returned per page. - */ - MaxResults?: MaxResults; - /** - * Filter migration tasks by discovered resource name. - */ - ResourceName?: ResourceName; - } - export interface ListMigrationTasksResult { - /** - * If there are more migration tasks than the max result, return the next token to be passed to the next call as a bookmark of where to start from. - */ - NextToken?: Token; - /** - * Lists the migration task's summary which includes: MigrationTaskName, ProgressPercent, ProgressUpdateStream, Status, and the UpdateDateTime for each task. - */ - MigrationTaskSummaryList?: MigrationTaskSummaryList; - } - export interface ListProgressUpdateStreamsRequest { - /** - * If a NextToken was returned by a previous call, there are more results available. To retrieve the next page of results, make the call again using the returned token in NextToken. - */ - NextToken?: Token; - /** - * Filter to limit the maximum number of results to list per page. - */ - MaxResults?: MaxResults; - } - export interface ListProgressUpdateStreamsResult { - /** - * List of progress update streams up to the max number of results passed in the input. - */ - ProgressUpdateStreamSummaryList?: ProgressUpdateStreamSummaryList; - /** - * If there are more streams created than the max result, return the next token to be passed to the next call as a bookmark of where to start from. - */ - NextToken?: Token; - } - export type MaxResults = number; - export type MaxResultsCreatedArtifacts = number; - export type MaxResultsResources = number; - export interface MigrationTask { - /** - * A name that identifies the vendor of the migration tool being used. - */ - ProgressUpdateStream?: ProgressUpdateStream; - /** - * Unique identifier that references the migration task. - */ - MigrationTaskName?: MigrationTaskName; - /** - * Task object encapsulating task information. - */ - Task?: Task; - /** - * The timestamp when the task was gathered. - */ - UpdateDateTime?: UpdateDateTime; - /** - * - */ - ResourceAttributeList?: LatestResourceAttributeList; - } - export type MigrationTaskName = string; - export interface MigrationTaskSummary { - /** - * An AWS resource used for access control. It should uniquely identify the migration tool as it is used for all updates made by the tool. - */ - ProgressUpdateStream?: ProgressUpdateStream; - /** - * Unique identifier that references the migration task. - */ - MigrationTaskName?: MigrationTaskName; - /** - * Status of the task. - */ - Status?: Status; - /** - * - */ - ProgressPercent?: ProgressPercent; - /** - * Detail information of what is being done within the overall status state. - */ - StatusDetail?: StatusDetail; - /** - * The timestamp when the task was gathered. - */ - UpdateDateTime?: UpdateDateTime; - } - export type MigrationTaskSummaryList = MigrationTaskSummary[]; - export type NextUpdateSeconds = number; - export interface NotifyApplicationStateRequest { - /** - * The configurationId in ADS that uniquely identifies the grouped application. - */ - ApplicationId: ApplicationId; - /** - * Status of the application - Not Started, In-Progress, Complete. - */ - Status: ApplicationStatus; - /** - * Optional boolean flag to indicate whether any effect should take place. Used to test if the caller has permission to make the call. - */ - DryRun?: DryRun; - } - export interface NotifyApplicationStateResult { - } - export interface NotifyMigrationTaskStateRequest { - /** - * The name of the ProgressUpdateStream. - */ - ProgressUpdateStream: ProgressUpdateStream; - /** - * Unique identifier that references the migration task. - */ - MigrationTaskName: MigrationTaskName; - /** - * Information about the task's progress and status. - */ - Task: Task; - /** - * The timestamp when the task was gathered. - */ - UpdateDateTime: UpdateDateTime; - /** - * Number of seconds after the UpdateDateTime within which the Migration Hub can expect an update. If Migration Hub does not receive an update within the specified interval, then the migration task will be considered stale. - */ - NextUpdateSeconds: NextUpdateSeconds; - /** - * Optional boolean flag to indicate whether any effect should take place. Used to test if the caller has permission to make the call. - */ - DryRun?: DryRun; - } - export interface NotifyMigrationTaskStateResult { - } - export type ProgressPercent = number; - export type ProgressUpdateStream = string; - export interface ProgressUpdateStreamSummary { - /** - * The name of the ProgressUpdateStream. - */ - ProgressUpdateStreamName?: ProgressUpdateStream; - } - export type ProgressUpdateStreamSummaryList = ProgressUpdateStreamSummary[]; - export interface PutResourceAttributesRequest { - /** - * The name of the ProgressUpdateStream. - */ - ProgressUpdateStream: ProgressUpdateStream; - /** - * Unique identifier that references the migration task. - */ - MigrationTaskName: MigrationTaskName; - /** - * Information about the resource that is being migrated. This data will be used to map the task to a resource in the Application Discovery Service (ADS)'s repository. - */ - ResourceAttributeList: ResourceAttributeList; - /** - * Optional boolean flag to indicate whether any effect should take place. Used to test if the caller has permission to make the call. - */ - DryRun?: DryRun; - } - export interface PutResourceAttributesResult { - } - export interface ResourceAttribute { - /** - * Type of resource. - */ - Type: ResourceAttributeType; - /** - * Value of the resource type. - */ - Value: ResourceAttributeValue; - } - export type ResourceAttributeList = ResourceAttribute[]; - export type ResourceAttributeType = "IPV4_ADDRESS"|"IPV6_ADDRESS"|"MAC_ADDRESS"|"FQDN"|"VM_MANAGER_ID"|"VM_MANAGED_OBJECT_REFERENCE"|"VM_NAME"|"VM_PATH"|"BIOS_ID"|"MOTHERBOARD_SERIAL_NUMBER"|"LABEL"|string; - export type ResourceAttributeValue = string; - export type ResourceName = string; - export type Status = "NOT_STARTED"|"IN_PROGRESS"|"FAILED"|"COMPLETED"|string; - export type StatusDetail = string; - export interface Task { - /** - * Status of the task - Not Started, In-Progress, Complete. - */ - Status: Status; - /** - * Details of task status as notified by a migration tool. A tool might use this field to provide clarifying information about the status that is unique to that tool or that explains an error state. - */ - StatusDetail?: StatusDetail; - /** - * Indication of the percentage completion of the task. - */ - ProgressPercent?: ProgressPercent; - } - export type Token = string; - export type UpdateDateTime = Date; - /** - * A string in YYYY-MM-DD format that represents the latest possible API version that can be used in this service. Specify 'latest' to use the latest possible version. - */ - export type apiVersion = "2017-05-31"|"latest"|string; - export interface ClientApiVersions { - /** - * A string in YYYY-MM-DD format that represents the latest possible API version that can be used in this service. Specify 'latest' to use the latest possible version. - */ - apiVersion?: apiVersion; - } - export type ClientConfiguration = ServiceConfigurationOptions & ClientApiVersions; - /** - * Contains interfaces for use with the MigrationHub client. - */ - export import Types = MigrationHub; -} -export = MigrationHub; diff --git a/workshops/monte-carlo-on-ec2-spot-fleet/src/web/node_modules/aws-sdk/clients/migrationhub.js b/workshops/monte-carlo-on-ec2-spot-fleet/src/web/node_modules/aws-sdk/clients/migrationhub.js deleted file mode 100644 index 0b9227a0..00000000 --- a/workshops/monte-carlo-on-ec2-spot-fleet/src/web/node_modules/aws-sdk/clients/migrationhub.js +++ /dev/null @@ -1,18 +0,0 @@ -require('../lib/node_loader'); -var AWS = require('../lib/core'); -var Service = AWS.Service; -var apiLoader = AWS.apiLoader; - -apiLoader.services['migrationhub'] = {}; -AWS.MigrationHub = Service.defineService('migrationhub', ['2017-05-31']); -Object.defineProperty(apiLoader.services['migrationhub'], '2017-05-31', { - get: function get() { - var model = require('../apis/AWSMigrationHub-2017-05-31.min.json'); - model.paginators = require('../apis/AWSMigrationHub-2017-05-31.paginators.json').pagination; - return model; - }, - enumerable: true, - configurable: true -}); - -module.exports = AWS.MigrationHub; diff --git a/workshops/monte-carlo-on-ec2-spot-fleet/src/web/node_modules/aws-sdk/clients/mobile.d.ts b/workshops/monte-carlo-on-ec2-spot-fleet/src/web/node_modules/aws-sdk/clients/mobile.d.ts deleted file mode 100644 index c0df359c..00000000 --- a/workshops/monte-carlo-on-ec2-spot-fleet/src/web/node_modules/aws-sdk/clients/mobile.d.ts +++ /dev/null @@ -1,334 +0,0 @@ -import {Request} from '../lib/request'; -import {Response} from '../lib/response'; -import {AWSError} from '../lib/error'; -import {Service} from '../lib/service'; -import {ServiceConfigurationOptions} from '../lib/service'; -import {ConfigBase as Config} from '../lib/config'; -interface Blob {} -declare class Mobile extends Service { - /** - * Constructs a service object. This object has one method for each API operation. - */ - constructor(options?: Mobile.Types.ClientConfiguration) - config: Config & Mobile.Types.ClientConfiguration; - /** - * Creates an AWS Mobile Hub project. - */ - createProject(params: Mobile.Types.CreateProjectRequest, callback?: (err: AWSError, data: Mobile.Types.CreateProjectResult) => void): Request; - /** - * Creates an AWS Mobile Hub project. - */ - createProject(callback?: (err: AWSError, data: Mobile.Types.CreateProjectResult) => void): Request; - /** - * Delets a project in AWS Mobile Hub. - */ - deleteProject(params: Mobile.Types.DeleteProjectRequest, callback?: (err: AWSError, data: Mobile.Types.DeleteProjectResult) => void): Request; - /** - * Delets a project in AWS Mobile Hub. - */ - deleteProject(callback?: (err: AWSError, data: Mobile.Types.DeleteProjectResult) => void): Request; - /** - * Get the bundle details for the requested bundle id. - */ - describeBundle(params: Mobile.Types.DescribeBundleRequest, callback?: (err: AWSError, data: Mobile.Types.DescribeBundleResult) => void): Request; - /** - * Get the bundle details for the requested bundle id. - */ - describeBundle(callback?: (err: AWSError, data: Mobile.Types.DescribeBundleResult) => void): Request; - /** - * Gets details about a project in AWS Mobile Hub. - */ - describeProject(params: Mobile.Types.DescribeProjectRequest, callback?: (err: AWSError, data: Mobile.Types.DescribeProjectResult) => void): Request; - /** - * Gets details about a project in AWS Mobile Hub. - */ - describeProject(callback?: (err: AWSError, data: Mobile.Types.DescribeProjectResult) => void): Request; - /** - * Generates customized software development kit (SDK) and or tool packages used to integrate mobile web or mobile app clients with backend AWS resources. - */ - exportBundle(params: Mobile.Types.ExportBundleRequest, callback?: (err: AWSError, data: Mobile.Types.ExportBundleResult) => void): Request; - /** - * Generates customized software development kit (SDK) and or tool packages used to integrate mobile web or mobile app clients with backend AWS resources. - */ - exportBundle(callback?: (err: AWSError, data: Mobile.Types.ExportBundleResult) => void): Request; - /** - * Exports project configuration to a snapshot which can be downloaded and shared. Note that mobile app push credentials are encrypted in exported projects, so they can only be shared successfully within the same AWS account. - */ - exportProject(params: Mobile.Types.ExportProjectRequest, callback?: (err: AWSError, data: Mobile.Types.ExportProjectResult) => void): Request; - /** - * Exports project configuration to a snapshot which can be downloaded and shared. Note that mobile app push credentials are encrypted in exported projects, so they can only be shared successfully within the same AWS account. - */ - exportProject(callback?: (err: AWSError, data: Mobile.Types.ExportProjectResult) => void): Request; - /** - * List all available bundles. - */ - listBundles(params: Mobile.Types.ListBundlesRequest, callback?: (err: AWSError, data: Mobile.Types.ListBundlesResult) => void): Request; - /** - * List all available bundles. - */ - listBundles(callback?: (err: AWSError, data: Mobile.Types.ListBundlesResult) => void): Request; - /** - * Lists projects in AWS Mobile Hub. - */ - listProjects(params: Mobile.Types.ListProjectsRequest, callback?: (err: AWSError, data: Mobile.Types.ListProjectsResult) => void): Request; - /** - * Lists projects in AWS Mobile Hub. - */ - listProjects(callback?: (err: AWSError, data: Mobile.Types.ListProjectsResult) => void): Request; - /** - * Update an existing project. - */ - updateProject(params: Mobile.Types.UpdateProjectRequest, callback?: (err: AWSError, data: Mobile.Types.UpdateProjectResult) => void): Request; - /** - * Update an existing project. - */ - updateProject(callback?: (err: AWSError, data: Mobile.Types.UpdateProjectResult) => void): Request; -} -declare namespace Mobile { - export type AttributeKey = string; - export type AttributeValue = string; - export type Attributes = {[key: string]: AttributeValue}; - export type Boolean = boolean; - export type BundleDescription = string; - export interface BundleDetails { - bundleId?: BundleId; - title?: BundleTitle; - version?: BundleVersion; - description?: BundleDescription; - iconUrl?: IconUrl; - availablePlatforms?: Platforms; - } - export type BundleId = string; - export type BundleList = BundleDetails[]; - export type BundleTitle = string; - export type BundleVersion = string; - export type ConsoleUrl = string; - export type Contents = Buffer|Uint8Array|Blob|string; - export interface CreateProjectRequest { - /** - * Name of the project. - */ - name?: ProjectName; - /** - * Default region where project resources should be created. - */ - region?: ProjectRegion; - /** - * ZIP or YAML file which contains configuration settings to be used when creating the project. This may be the contents of the file downloaded from the URL provided in an export project operation. - */ - contents?: Contents; - /** - * Unique identifier for an exported snapshot of project configuration. This snapshot identifier is included in the share URL when a project is exported. - */ - snapshotId?: SnapshotId; - } - export interface CreateProjectResult { - /** - * Detailed information about the created AWS Mobile Hub project. - */ - details?: ProjectDetails; - } - export type _Date = Date; - export interface DeleteProjectRequest { - /** - * Unique project identifier. - */ - projectId: ProjectId; - } - export interface DeleteProjectResult { - /** - * Resources which were deleted. - */ - deletedResources?: Resources; - /** - * Resources which were not deleted, due to a risk of losing potentially important data or files. - */ - orphanedResources?: Resources; - } - export interface DescribeBundleRequest { - /** - * Unique bundle identifier. - */ - bundleId: BundleId; - } - export interface DescribeBundleResult { - /** - * The details of the bundle. - */ - details?: BundleDetails; - } - export interface DescribeProjectRequest { - /** - * Unique project identifier. - */ - projectId: ProjectId; - /** - * If set to true, causes AWS Mobile Hub to synchronize information from other services, e.g., update state of AWS CloudFormation stacks in the AWS Mobile Hub project. - */ - syncFromResources?: Boolean; - } - export interface DescribeProjectResult { - details?: ProjectDetails; - } - export type DownloadUrl = string; - export type ErrorMessage = string; - export interface ExportBundleRequest { - /** - * Unique bundle identifier. - */ - bundleId: BundleId; - /** - * Unique project identifier. - */ - projectId?: ProjectId; - /** - * Developer desktop or target application platform. - */ - platform?: Platform; - } - export interface ExportBundleResult { - /** - * URL which contains the custom-generated SDK and tool packages used to integrate the client mobile app or web app with the AWS resources created by the AWS Mobile Hub project. - */ - downloadUrl?: DownloadUrl; - } - export interface ExportProjectRequest { - /** - * Unique project identifier. - */ - projectId: ProjectId; - } - export interface ExportProjectResult { - /** - * URL which can be used to download the exported project configuation file(s). - */ - downloadUrl?: DownloadUrl; - /** - * URL which can be shared to allow other AWS users to create their own project in AWS Mobile Hub with the same configuration as the specified project. This URL pertains to a snapshot in time of the project configuration that is created when this API is called. If you want to share additional changes to your project configuration, then you will need to create and share a new snapshot by calling this method again. - */ - shareUrl?: ShareUrl; - /** - * Unique identifier for the exported snapshot of the project configuration. This snapshot identifier is included in the share URL. - */ - snapshotId?: SnapshotId; - } - export type Feature = string; - export type IconUrl = string; - export interface ListBundlesRequest { - /** - * Maximum number of records to list in a single response. - */ - maxResults?: MaxResults; - /** - * Pagination token. Set to null to start listing bundles from start. If non-null pagination token is returned in a result, then pass its value in here in another request to list more bundles. - */ - nextToken?: NextToken; - } - export interface ListBundlesResult { - /** - * A list of bundles. - */ - bundleList?: BundleList; - /** - * Pagination token. If non-null pagination token is returned in a result, then pass its value in another request to fetch more entries. - */ - nextToken?: NextToken; - } - export interface ListProjectsRequest { - /** - * Maximum number of records to list in a single response. - */ - maxResults?: MaxResults; - /** - * Pagination token. Set to null to start listing projects from start. If non-null pagination token is returned in a result, then pass its value in here in another request to list more projects. - */ - nextToken?: NextToken; - } - export interface ListProjectsResult { - projects?: ProjectSummaries; - nextToken?: NextToken; - } - export type MaxResults = number; - export type NextToken = string; - export type Platform = "OSX"|"WINDOWS"|"LINUX"|"OBJC"|"SWIFT"|"ANDROID"|"JAVASCRIPT"|string; - export type Platforms = Platform[]; - export interface ProjectDetails { - name?: ProjectName; - projectId?: ProjectId; - region?: ProjectRegion; - state?: ProjectState; - /** - * Date the project was created. - */ - createdDate?: _Date; - /** - * Date of the last modification of the project. - */ - lastUpdatedDate?: _Date; - /** - * Website URL for this project in the AWS Mobile Hub console. - */ - consoleUrl?: ConsoleUrl; - resources?: Resources; - } - export type ProjectId = string; - export type ProjectName = string; - export type ProjectRegion = string; - export type ProjectState = "NORMAL"|"SYNCING"|"IMPORTING"|string; - export type ProjectSummaries = ProjectSummary[]; - export interface ProjectSummary { - /** - * Name of the project. - */ - name?: ProjectName; - /** - * Unique project identifier. - */ - projectId?: ProjectId; - } - export interface Resource { - type?: ResourceType; - name?: ResourceName; - arn?: ResourceArn; - feature?: Feature; - attributes?: Attributes; - } - export type ResourceArn = string; - export type ResourceName = string; - export type ResourceType = string; - export type Resources = Resource[]; - export type ShareUrl = string; - export type SnapshotId = string; - export interface UpdateProjectRequest { - /** - * ZIP or YAML file which contains project configuration to be updated. This should be the contents of the file downloaded from the URL provided in an export project operation. - */ - contents?: Contents; - /** - * Unique project identifier. - */ - projectId: ProjectId; - } - export interface UpdateProjectResult { - /** - * Detailed information about the updated AWS Mobile Hub project. - */ - details?: ProjectDetails; - } - /** - * A string in YYYY-MM-DD format that represents the latest possible API version that can be used in this service. Specify 'latest' to use the latest possible version. - */ - export type apiVersion = "2017-07-01"|"latest"|string; - export interface ClientApiVersions { - /** - * A string in YYYY-MM-DD format that represents the latest possible API version that can be used in this service. Specify 'latest' to use the latest possible version. - */ - apiVersion?: apiVersion; - } - export type ClientConfiguration = ServiceConfigurationOptions & ClientApiVersions; - /** - * Contains interfaces for use with the Mobile client. - */ - export import Types = Mobile; -} -export = Mobile; diff --git a/workshops/monte-carlo-on-ec2-spot-fleet/src/web/node_modules/aws-sdk/clients/mobile.js b/workshops/monte-carlo-on-ec2-spot-fleet/src/web/node_modules/aws-sdk/clients/mobile.js deleted file mode 100644 index 5ddfe474..00000000 --- a/workshops/monte-carlo-on-ec2-spot-fleet/src/web/node_modules/aws-sdk/clients/mobile.js +++ /dev/null @@ -1,18 +0,0 @@ -require('../lib/node_loader'); -var AWS = require('../lib/core'); -var Service = AWS.Service; -var apiLoader = AWS.apiLoader; - -apiLoader.services['mobile'] = {}; -AWS.Mobile = Service.defineService('mobile', ['2017-07-01']); -Object.defineProperty(apiLoader.services['mobile'], '2017-07-01', { - get: function get() { - var model = require('../apis/mobile-2017-07-01.min.json'); - model.paginators = require('../apis/mobile-2017-07-01.paginators.json').pagination; - return model; - }, - enumerable: true, - configurable: true -}); - -module.exports = AWS.Mobile; diff --git a/workshops/monte-carlo-on-ec2-spot-fleet/src/web/node_modules/aws-sdk/clients/mobileanalytics.d.ts b/workshops/monte-carlo-on-ec2-spot-fleet/src/web/node_modules/aws-sdk/clients/mobileanalytics.d.ts deleted file mode 100644 index b935e4ce..00000000 --- a/workshops/monte-carlo-on-ec2-spot-fleet/src/web/node_modules/aws-sdk/clients/mobileanalytics.d.ts +++ /dev/null @@ -1,108 +0,0 @@ -import {Request} from '../lib/request'; -import {Response} from '../lib/response'; -import {AWSError} from '../lib/error'; -import {Service} from '../lib/service'; -import {ServiceConfigurationOptions} from '../lib/service'; -import {ConfigBase as Config} from '../lib/config'; -interface Blob {} -declare class MobileAnalytics extends Service { - /** - * Constructs a service object. This object has one method for each API operation. - */ - constructor(options?: MobileAnalytics.Types.ClientConfiguration) - config: Config & MobileAnalytics.Types.ClientConfiguration; - /** - * The PutEvents operation records one or more events. You can have up to 1,500 unique custom events per app, any combination of up to 40 attributes and metrics per custom event, and any number of attribute or metric values. - */ - putEvents(params: MobileAnalytics.Types.PutEventsInput, callback?: (err: AWSError, data: {}) => void): Request<{}, AWSError>; - /** - * The PutEvents operation records one or more events. You can have up to 1,500 unique custom events per app, any combination of up to 40 attributes and metrics per custom event, and any number of attribute or metric values. - */ - putEvents(callback?: (err: AWSError, data: {}) => void): Request<{}, AWSError>; -} -declare namespace MobileAnalytics { - export type Double = number; - export interface Event { - /** - * A name signifying an event that occurred in your app. This is used for grouping and aggregating like events together for reporting purposes. - */ - eventType: String50Chars; - /** - * The time the event occurred in ISO 8601 standard date time format. For example, 2014-06-30T19:07:47.885Z - */ - timestamp: ISO8601Timestamp; - /** - * The session the event occured within. - */ - session?: Session; - /** - * The version of the event. - */ - version?: String10Chars; - /** - * A collection of key-value pairs that give additional context to the event. The key-value pairs are specified by the developer. This collection can be empty or the attribute object can be omitted. - */ - attributes?: MapOfStringToString; - /** - * A collection of key-value pairs that gives additional, measurable context to the event. The key-value pairs are specified by the developer. This collection can be empty or the attribute object can be omitted. - */ - metrics?: MapOfStringToNumber; - } - export type EventListDefinition = Event[]; - export type ISO8601Timestamp = string; - export type Long = number; - export type MapOfStringToNumber = {[key: string]: Double}; - export type MapOfStringToString = {[key: string]: String0to1000Chars}; - export interface PutEventsInput { - /** - * An array of Event JSON objects - */ - events: EventListDefinition; - /** - * The client context including the client ID, app title, app version and package name. - */ - clientContext: String; - /** - * The encoding used for the client context. - */ - clientContextEncoding?: String; - } - export interface Session { - /** - * A unique identifier for the session - */ - id?: String50Chars; - /** - * The duration of the session. - */ - duration?: Long; - /** - * The time the event started in ISO 8601 standard date time format. For example, 2014-06-30T19:07:47.885Z - */ - startTimestamp?: ISO8601Timestamp; - /** - * The time the event terminated in ISO 8601 standard date time format. For example, 2014-06-30T19:07:47.885Z - */ - stopTimestamp?: ISO8601Timestamp; - } - export type String = string; - export type String0to1000Chars = string; - export type String10Chars = string; - export type String50Chars = string; - /** - * A string in YYYY-MM-DD format that represents the latest possible API version that can be used in this service. Specify 'latest' to use the latest possible version. - */ - export type apiVersion = "2014-06-05"|"latest"|string; - export interface ClientApiVersions { - /** - * A string in YYYY-MM-DD format that represents the latest possible API version that can be used in this service. Specify 'latest' to use the latest possible version. - */ - apiVersion?: apiVersion; - } - export type ClientConfiguration = ServiceConfigurationOptions & ClientApiVersions; - /** - * Contains interfaces for use with the MobileAnalytics client. - */ - export import Types = MobileAnalytics; -} -export = MobileAnalytics; diff --git a/workshops/monte-carlo-on-ec2-spot-fleet/src/web/node_modules/aws-sdk/clients/mobileanalytics.js b/workshops/monte-carlo-on-ec2-spot-fleet/src/web/node_modules/aws-sdk/clients/mobileanalytics.js deleted file mode 100644 index 6994e19c..00000000 --- a/workshops/monte-carlo-on-ec2-spot-fleet/src/web/node_modules/aws-sdk/clients/mobileanalytics.js +++ /dev/null @@ -1,17 +0,0 @@ -require('../lib/node_loader'); -var AWS = require('../lib/core'); -var Service = AWS.Service; -var apiLoader = AWS.apiLoader; - -apiLoader.services['mobileanalytics'] = {}; -AWS.MobileAnalytics = Service.defineService('mobileanalytics', ['2014-06-05']); -Object.defineProperty(apiLoader.services['mobileanalytics'], '2014-06-05', { - get: function get() { - var model = require('../apis/mobileanalytics-2014-06-05.min.json'); - return model; - }, - enumerable: true, - configurable: true -}); - -module.exports = AWS.MobileAnalytics; diff --git a/workshops/monte-carlo-on-ec2-spot-fleet/src/web/node_modules/aws-sdk/clients/mturk.d.ts b/workshops/monte-carlo-on-ec2-spot-fleet/src/web/node_modules/aws-sdk/clients/mturk.d.ts deleted file mode 100644 index 42b086ec..00000000 --- a/workshops/monte-carlo-on-ec2-spot-fleet/src/web/node_modules/aws-sdk/clients/mturk.d.ts +++ /dev/null @@ -1,1684 +0,0 @@ -import {Request} from '../lib/request'; -import {Response} from '../lib/response'; -import {AWSError} from '../lib/error'; -import {Service} from '../lib/service'; -import {ServiceConfigurationOptions} from '../lib/service'; -import {ConfigBase as Config} from '../lib/config'; -interface Blob {} -declare class MTurk extends Service { - /** - * Constructs a service object. This object has one method for each API operation. - */ - constructor(options?: MTurk.Types.ClientConfiguration) - config: Config & MTurk.Types.ClientConfiguration; - /** - * The AcceptQualificationRequest operation approves a Worker's request for a Qualification. Only the owner of the Qualification type can grant a Qualification request for that type. A successful request for the AcceptQualificationRequest operation returns with no errors and an empty body. - */ - acceptQualificationRequest(params: MTurk.Types.AcceptQualificationRequestRequest, callback?: (err: AWSError, data: MTurk.Types.AcceptQualificationRequestResponse) => void): Request; - /** - * The AcceptQualificationRequest operation approves a Worker's request for a Qualification. Only the owner of the Qualification type can grant a Qualification request for that type. A successful request for the AcceptQualificationRequest operation returns with no errors and an empty body. - */ - acceptQualificationRequest(callback?: (err: AWSError, data: MTurk.Types.AcceptQualificationRequestResponse) => void): Request; - /** - * The ApproveAssignment operation approves the results of a completed assignment. Approving an assignment initiates two payments from the Requester's Amazon.com account The Worker who submitted the results is paid the reward specified in the HIT. Amazon Mechanical Turk fees are debited. If the Requester's account does not have adequate funds for these payments, the call to ApproveAssignment returns an exception, and the approval is not processed. You can include an optional feedback message with the approval, which the Worker can see in the Status section of the web site. You can also call this operation for assignments that were previous rejected and approve them by explicitly overriding the previous rejection. This only works on rejected assignments that were submitted within the previous 30 days and only if the assignment's related HIT has not been deleted. - */ - approveAssignment(params: MTurk.Types.ApproveAssignmentRequest, callback?: (err: AWSError, data: MTurk.Types.ApproveAssignmentResponse) => void): Request; - /** - * The ApproveAssignment operation approves the results of a completed assignment. Approving an assignment initiates two payments from the Requester's Amazon.com account The Worker who submitted the results is paid the reward specified in the HIT. Amazon Mechanical Turk fees are debited. If the Requester's account does not have adequate funds for these payments, the call to ApproveAssignment returns an exception, and the approval is not processed. You can include an optional feedback message with the approval, which the Worker can see in the Status section of the web site. You can also call this operation for assignments that were previous rejected and approve them by explicitly overriding the previous rejection. This only works on rejected assignments that were submitted within the previous 30 days and only if the assignment's related HIT has not been deleted. - */ - approveAssignment(callback?: (err: AWSError, data: MTurk.Types.ApproveAssignmentResponse) => void): Request; - /** - * The AssociateQualificationWithWorker operation gives a Worker a Qualification. AssociateQualificationWithWorker does not require that the Worker submit a Qualification request. It gives the Qualification directly to the Worker. You can only assign a Qualification of a Qualification type that you created (using the CreateQualificationType operation). Note: AssociateQualificationWithWorker does not affect any pending Qualification requests for the Qualification by the Worker. If you assign a Qualification to a Worker, then later grant a Qualification request made by the Worker, the granting of the request may modify the Qualification score. To resolve a pending Qualification request without affecting the Qualification the Worker already has, reject the request with the RejectQualificationRequest operation. - */ - associateQualificationWithWorker(params: MTurk.Types.AssociateQualificationWithWorkerRequest, callback?: (err: AWSError, data: MTurk.Types.AssociateQualificationWithWorkerResponse) => void): Request; - /** - * The AssociateQualificationWithWorker operation gives a Worker a Qualification. AssociateQualificationWithWorker does not require that the Worker submit a Qualification request. It gives the Qualification directly to the Worker. You can only assign a Qualification of a Qualification type that you created (using the CreateQualificationType operation). Note: AssociateQualificationWithWorker does not affect any pending Qualification requests for the Qualification by the Worker. If you assign a Qualification to a Worker, then later grant a Qualification request made by the Worker, the granting of the request may modify the Qualification score. To resolve a pending Qualification request without affecting the Qualification the Worker already has, reject the request with the RejectQualificationRequest operation. - */ - associateQualificationWithWorker(callback?: (err: AWSError, data: MTurk.Types.AssociateQualificationWithWorkerResponse) => void): Request; - /** - * The CreateAdditionalAssignmentsForHIT operation increases the maximum number of assignments of an existing HIT. To extend the maximum number of assignments, specify the number of additional assignments. HITs created with fewer than 10 assignments cannot be extended to have 10 or more assignments. Attempting to add assignments in a way that brings the total number of assignments for a HIT from fewer than 10 assignments to 10 or more assignments will result in an AWS.MechanicalTurk.InvalidMaximumAssignmentsIncrease exception. HITs that were created before July 22, 2015 cannot be extended. Attempting to extend HITs that were created before July 22, 2015 will result in an AWS.MechanicalTurk.HITTooOldForExtension exception. - */ - createAdditionalAssignmentsForHIT(params: MTurk.Types.CreateAdditionalAssignmentsForHITRequest, callback?: (err: AWSError, data: MTurk.Types.CreateAdditionalAssignmentsForHITResponse) => void): Request; - /** - * The CreateAdditionalAssignmentsForHIT operation increases the maximum number of assignments of an existing HIT. To extend the maximum number of assignments, specify the number of additional assignments. HITs created with fewer than 10 assignments cannot be extended to have 10 or more assignments. Attempting to add assignments in a way that brings the total number of assignments for a HIT from fewer than 10 assignments to 10 or more assignments will result in an AWS.MechanicalTurk.InvalidMaximumAssignmentsIncrease exception. HITs that were created before July 22, 2015 cannot be extended. Attempting to extend HITs that were created before July 22, 2015 will result in an AWS.MechanicalTurk.HITTooOldForExtension exception. - */ - createAdditionalAssignmentsForHIT(callback?: (err: AWSError, data: MTurk.Types.CreateAdditionalAssignmentsForHITResponse) => void): Request; - /** - * The CreateHIT operation creates a new Human Intelligence Task (HIT). The new HIT is made available for Workers to find and accept on the Amazon Mechanical Turk website. This operation allows you to specify a new HIT by passing in values for the properties of the HIT, such as its title, reward amount and number of assignments. When you pass these values to CreateHIT, a new HIT is created for you, with a new HITTypeID. The HITTypeID can be used to create additional HITs in the future without needing to specify common parameters such as the title, description and reward amount each time. An alternative way to create HITs is to first generate a HITTypeID using the CreateHITType operation and then call the CreateHITWithHITType operation. This is the recommended best practice for Requesters who are creating large numbers of HITs. CreateHIT also supports several ways to provide question data: by providing a value for the Question parameter that fully specifies the contents of the HIT, or by providing a HitLayoutId and associated HitLayoutParameters. If a HIT is created with 10 or more maximum assignments, there is an additional fee. For more information, see Amazon Mechanical Turk Pricing. - */ - createHIT(params: MTurk.Types.CreateHITRequest, callback?: (err: AWSError, data: MTurk.Types.CreateHITResponse) => void): Request; - /** - * The CreateHIT operation creates a new Human Intelligence Task (HIT). The new HIT is made available for Workers to find and accept on the Amazon Mechanical Turk website. This operation allows you to specify a new HIT by passing in values for the properties of the HIT, such as its title, reward amount and number of assignments. When you pass these values to CreateHIT, a new HIT is created for you, with a new HITTypeID. The HITTypeID can be used to create additional HITs in the future without needing to specify common parameters such as the title, description and reward amount each time. An alternative way to create HITs is to first generate a HITTypeID using the CreateHITType operation and then call the CreateHITWithHITType operation. This is the recommended best practice for Requesters who are creating large numbers of HITs. CreateHIT also supports several ways to provide question data: by providing a value for the Question parameter that fully specifies the contents of the HIT, or by providing a HitLayoutId and associated HitLayoutParameters. If a HIT is created with 10 or more maximum assignments, there is an additional fee. For more information, see Amazon Mechanical Turk Pricing. - */ - createHIT(callback?: (err: AWSError, data: MTurk.Types.CreateHITResponse) => void): Request; - /** - * The CreateHITType operation creates a new HIT type. This operation allows you to define a standard set of HIT properties to use when creating HITs. If you register a HIT type with values that match an existing HIT type, the HIT type ID of the existing type will be returned. - */ - createHITType(params: MTurk.Types.CreateHITTypeRequest, callback?: (err: AWSError, data: MTurk.Types.CreateHITTypeResponse) => void): Request; - /** - * The CreateHITType operation creates a new HIT type. This operation allows you to define a standard set of HIT properties to use when creating HITs. If you register a HIT type with values that match an existing HIT type, the HIT type ID of the existing type will be returned. - */ - createHITType(callback?: (err: AWSError, data: MTurk.Types.CreateHITTypeResponse) => void): Request; - /** - * The CreateHITWithHITType operation creates a new Human Intelligence Task (HIT) using an existing HITTypeID generated by the CreateHITType operation. This is an alternative way to create HITs from the CreateHIT operation. This is the recommended best practice for Requesters who are creating large numbers of HITs. CreateHITWithHITType also supports several ways to provide question data: by providing a value for the Question parameter that fully specifies the contents of the HIT, or by providing a HitLayoutId and associated HitLayoutParameters. If a HIT is created with 10 or more maximum assignments, there is an additional fee. For more information, see Amazon Mechanical Turk Pricing. - */ - createHITWithHITType(params: MTurk.Types.CreateHITWithHITTypeRequest, callback?: (err: AWSError, data: MTurk.Types.CreateHITWithHITTypeResponse) => void): Request; - /** - * The CreateHITWithHITType operation creates a new Human Intelligence Task (HIT) using an existing HITTypeID generated by the CreateHITType operation. This is an alternative way to create HITs from the CreateHIT operation. This is the recommended best practice for Requesters who are creating large numbers of HITs. CreateHITWithHITType also supports several ways to provide question data: by providing a value for the Question parameter that fully specifies the contents of the HIT, or by providing a HitLayoutId and associated HitLayoutParameters. If a HIT is created with 10 or more maximum assignments, there is an additional fee. For more information, see Amazon Mechanical Turk Pricing. - */ - createHITWithHITType(callback?: (err: AWSError, data: MTurk.Types.CreateHITWithHITTypeResponse) => void): Request; - /** - * The CreateQualificationType operation creates a new Qualification type, which is represented by a QualificationType data structure. - */ - createQualificationType(params: MTurk.Types.CreateQualificationTypeRequest, callback?: (err: AWSError, data: MTurk.Types.CreateQualificationTypeResponse) => void): Request; - /** - * The CreateQualificationType operation creates a new Qualification type, which is represented by a QualificationType data structure. - */ - createQualificationType(callback?: (err: AWSError, data: MTurk.Types.CreateQualificationTypeResponse) => void): Request; - /** - * The CreateWorkerBlock operation allows you to prevent a Worker from working on your HITs. For example, you can block a Worker who is producing poor quality work. You can block up to 100,000 Workers. - */ - createWorkerBlock(params: MTurk.Types.CreateWorkerBlockRequest, callback?: (err: AWSError, data: MTurk.Types.CreateWorkerBlockResponse) => void): Request; - /** - * The CreateWorkerBlock operation allows you to prevent a Worker from working on your HITs. For example, you can block a Worker who is producing poor quality work. You can block up to 100,000 Workers. - */ - createWorkerBlock(callback?: (err: AWSError, data: MTurk.Types.CreateWorkerBlockResponse) => void): Request; - /** - * The DeleteHIT operation is used to delete HIT that is no longer needed. Only the Requester who created the HIT can delete it. You can only dispose of HITs that are in the Reviewable state, with all of their submitted assignments already either approved or rejected. If you call the DeleteHIT operation on a HIT that is not in the Reviewable state (for example, that has not expired, or still has active assignments), or on a HIT that is Reviewable but without all of its submitted assignments already approved or rejected, the service will return an error. HITs are automatically disposed of after 120 days. After you dispose of a HIT, you can no longer approve the HIT's rejected assignments. Disposed HITs are not returned in results for the ListHITs operation. Disposing HITs can improve the performance of operations such as ListReviewableHITs and ListHITs. - */ - deleteHIT(params: MTurk.Types.DeleteHITRequest, callback?: (err: AWSError, data: MTurk.Types.DeleteHITResponse) => void): Request; - /** - * The DeleteHIT operation is used to delete HIT that is no longer needed. Only the Requester who created the HIT can delete it. You can only dispose of HITs that are in the Reviewable state, with all of their submitted assignments already either approved or rejected. If you call the DeleteHIT operation on a HIT that is not in the Reviewable state (for example, that has not expired, or still has active assignments), or on a HIT that is Reviewable but without all of its submitted assignments already approved or rejected, the service will return an error. HITs are automatically disposed of after 120 days. After you dispose of a HIT, you can no longer approve the HIT's rejected assignments. Disposed HITs are not returned in results for the ListHITs operation. Disposing HITs can improve the performance of operations such as ListReviewableHITs and ListHITs. - */ - deleteHIT(callback?: (err: AWSError, data: MTurk.Types.DeleteHITResponse) => void): Request; - /** - * The DeleteQualificationType deletes a Qualification type and deletes any HIT types that are associated with the Qualification type. This operation does not revoke Qualifications already assigned to Workers because the Qualifications might be needed for active HITs. If there are any pending requests for the Qualification type, Amazon Mechanical Turk rejects those requests. After you delete a Qualification type, you can no longer use it to create HITs or HIT types. DeleteQualificationType must wait for all the HITs that use the deleted Qualification type to be deleted before completing. It may take up to 48 hours before DeleteQualificationType completes and the unique name of the Qualification type is available for reuse with CreateQualificationType. - */ - deleteQualificationType(params: MTurk.Types.DeleteQualificationTypeRequest, callback?: (err: AWSError, data: MTurk.Types.DeleteQualificationTypeResponse) => void): Request; - /** - * The DeleteQualificationType deletes a Qualification type and deletes any HIT types that are associated with the Qualification type. This operation does not revoke Qualifications already assigned to Workers because the Qualifications might be needed for active HITs. If there are any pending requests for the Qualification type, Amazon Mechanical Turk rejects those requests. After you delete a Qualification type, you can no longer use it to create HITs or HIT types. DeleteQualificationType must wait for all the HITs that use the deleted Qualification type to be deleted before completing. It may take up to 48 hours before DeleteQualificationType completes and the unique name of the Qualification type is available for reuse with CreateQualificationType. - */ - deleteQualificationType(callback?: (err: AWSError, data: MTurk.Types.DeleteQualificationTypeResponse) => void): Request; - /** - * The DeleteWorkerBlock operation allows you to reinstate a blocked Worker to work on your HITs. This operation reverses the effects of the CreateWorkerBlock operation. You need the Worker ID to use this operation. If the Worker ID is missing or invalid, this operation fails and returns the message “WorkerId is invalid.” If the specified Worker is not blocked, this operation returns successfully. - */ - deleteWorkerBlock(params: MTurk.Types.DeleteWorkerBlockRequest, callback?: (err: AWSError, data: MTurk.Types.DeleteWorkerBlockResponse) => void): Request; - /** - * The DeleteWorkerBlock operation allows you to reinstate a blocked Worker to work on your HITs. This operation reverses the effects of the CreateWorkerBlock operation. You need the Worker ID to use this operation. If the Worker ID is missing or invalid, this operation fails and returns the message “WorkerId is invalid.” If the specified Worker is not blocked, this operation returns successfully. - */ - deleteWorkerBlock(callback?: (err: AWSError, data: MTurk.Types.DeleteWorkerBlockResponse) => void): Request; - /** - * The DisassociateQualificationFromWorker revokes a previously granted Qualification from a user. You can provide a text message explaining why the Qualification was revoked. The user who had the Qualification can see this message. - */ - disassociateQualificationFromWorker(params: MTurk.Types.DisassociateQualificationFromWorkerRequest, callback?: (err: AWSError, data: MTurk.Types.DisassociateQualificationFromWorkerResponse) => void): Request; - /** - * The DisassociateQualificationFromWorker revokes a previously granted Qualification from a user. You can provide a text message explaining why the Qualification was revoked. The user who had the Qualification can see this message. - */ - disassociateQualificationFromWorker(callback?: (err: AWSError, data: MTurk.Types.DisassociateQualificationFromWorkerResponse) => void): Request; - /** - * The GetAccountBalance operation retrieves the amount of money in your Amazon Mechanical Turk account. - */ - getAccountBalance(params: MTurk.Types.GetAccountBalanceRequest, callback?: (err: AWSError, data: MTurk.Types.GetAccountBalanceResponse) => void): Request; - /** - * The GetAccountBalance operation retrieves the amount of money in your Amazon Mechanical Turk account. - */ - getAccountBalance(callback?: (err: AWSError, data: MTurk.Types.GetAccountBalanceResponse) => void): Request; - /** - * The GetAssignment operation retrieves the details of the specified Assignment. - */ - getAssignment(params: MTurk.Types.GetAssignmentRequest, callback?: (err: AWSError, data: MTurk.Types.GetAssignmentResponse) => void): Request; - /** - * The GetAssignment operation retrieves the details of the specified Assignment. - */ - getAssignment(callback?: (err: AWSError, data: MTurk.Types.GetAssignmentResponse) => void): Request; - /** - * The GetFileUploadURL operation generates and returns a temporary URL. You use the temporary URL to retrieve a file uploaded by a Worker as an answer to a FileUploadAnswer question for a HIT. The temporary URL is generated the instant the GetFileUploadURL operation is called, and is valid for 60 seconds. You can get a temporary file upload URL any time until the HIT is disposed. After the HIT is disposed, any uploaded files are deleted, and cannot be retrieved. - */ - getFileUploadURL(params: MTurk.Types.GetFileUploadURLRequest, callback?: (err: AWSError, data: MTurk.Types.GetFileUploadURLResponse) => void): Request; - /** - * The GetFileUploadURL operation generates and returns a temporary URL. You use the temporary URL to retrieve a file uploaded by a Worker as an answer to a FileUploadAnswer question for a HIT. The temporary URL is generated the instant the GetFileUploadURL operation is called, and is valid for 60 seconds. You can get a temporary file upload URL any time until the HIT is disposed. After the HIT is disposed, any uploaded files are deleted, and cannot be retrieved. - */ - getFileUploadURL(callback?: (err: AWSError, data: MTurk.Types.GetFileUploadURLResponse) => void): Request; - /** - * The GetHIT operation retrieves the details of the specified HIT. - */ - getHIT(params: MTurk.Types.GetHITRequest, callback?: (err: AWSError, data: MTurk.Types.GetHITResponse) => void): Request; - /** - * The GetHIT operation retrieves the details of the specified HIT. - */ - getHIT(callback?: (err: AWSError, data: MTurk.Types.GetHITResponse) => void): Request; - /** - * The GetQualificationScore operation returns the value of a Worker's Qualification for a given Qualification type. To get a Worker's Qualification, you must know the Worker's ID. The Worker's ID is included in the assignment data returned by the ListAssignmentsForHIT operation. Only the owner of a Qualification type can query the value of a Worker's Qualification of that type. - */ - getQualificationScore(params: MTurk.Types.GetQualificationScoreRequest, callback?: (err: AWSError, data: MTurk.Types.GetQualificationScoreResponse) => void): Request; - /** - * The GetQualificationScore operation returns the value of a Worker's Qualification for a given Qualification type. To get a Worker's Qualification, you must know the Worker's ID. The Worker's ID is included in the assignment data returned by the ListAssignmentsForHIT operation. Only the owner of a Qualification type can query the value of a Worker's Qualification of that type. - */ - getQualificationScore(callback?: (err: AWSError, data: MTurk.Types.GetQualificationScoreResponse) => void): Request; - /** - * The GetQualificationTypeoperation retrieves information about a Qualification type using its ID. - */ - getQualificationType(params: MTurk.Types.GetQualificationTypeRequest, callback?: (err: AWSError, data: MTurk.Types.GetQualificationTypeResponse) => void): Request; - /** - * The GetQualificationTypeoperation retrieves information about a Qualification type using its ID. - */ - getQualificationType(callback?: (err: AWSError, data: MTurk.Types.GetQualificationTypeResponse) => void): Request; - /** - * The ListAssignmentsForHIT operation retrieves completed assignments for a HIT. You can use this operation to retrieve the results for a HIT. You can get assignments for a HIT at any time, even if the HIT is not yet Reviewable. If a HIT requested multiple assignments, and has received some results but has not yet become Reviewable, you can still retrieve the partial results with this operation. Use the AssignmentStatus parameter to control which set of assignments for a HIT are returned. The ListAssignmentsForHIT operation can return submitted assignments awaiting approval, or it can return assignments that have already been approved or rejected. You can set AssignmentStatus=Approved,Rejected to get assignments that have already been approved and rejected together in one result set. Only the Requester who created the HIT can retrieve the assignments for that HIT. Results are sorted and divided into numbered pages and the operation returns a single page of results. You can use the parameters of the operation to control sorting and pagination. - */ - listAssignmentsForHIT(params: MTurk.Types.ListAssignmentsForHITRequest, callback?: (err: AWSError, data: MTurk.Types.ListAssignmentsForHITResponse) => void): Request; - /** - * The ListAssignmentsForHIT operation retrieves completed assignments for a HIT. You can use this operation to retrieve the results for a HIT. You can get assignments for a HIT at any time, even if the HIT is not yet Reviewable. If a HIT requested multiple assignments, and has received some results but has not yet become Reviewable, you can still retrieve the partial results with this operation. Use the AssignmentStatus parameter to control which set of assignments for a HIT are returned. The ListAssignmentsForHIT operation can return submitted assignments awaiting approval, or it can return assignments that have already been approved or rejected. You can set AssignmentStatus=Approved,Rejected to get assignments that have already been approved and rejected together in one result set. Only the Requester who created the HIT can retrieve the assignments for that HIT. Results are sorted and divided into numbered pages and the operation returns a single page of results. You can use the parameters of the operation to control sorting and pagination. - */ - listAssignmentsForHIT(callback?: (err: AWSError, data: MTurk.Types.ListAssignmentsForHITResponse) => void): Request; - /** - * The ListBonusPayments operation retrieves the amounts of bonuses you have paid to Workers for a given HIT or assignment. - */ - listBonusPayments(params: MTurk.Types.ListBonusPaymentsRequest, callback?: (err: AWSError, data: MTurk.Types.ListBonusPaymentsResponse) => void): Request; - /** - * The ListBonusPayments operation retrieves the amounts of bonuses you have paid to Workers for a given HIT or assignment. - */ - listBonusPayments(callback?: (err: AWSError, data: MTurk.Types.ListBonusPaymentsResponse) => void): Request; - /** - * The ListHITs operation returns all of a Requester's HITs. The operation returns HITs of any status, except for HITs that have been deleted of with the DeleteHIT operation or that have been auto-deleted. - */ - listHITs(params: MTurk.Types.ListHITsRequest, callback?: (err: AWSError, data: MTurk.Types.ListHITsResponse) => void): Request; - /** - * The ListHITs operation returns all of a Requester's HITs. The operation returns HITs of any status, except for HITs that have been deleted of with the DeleteHIT operation or that have been auto-deleted. - */ - listHITs(callback?: (err: AWSError, data: MTurk.Types.ListHITsResponse) => void): Request; - /** - * The ListHITsForQualificationType operation returns the HITs that use the given Qualification type for a Qualification requirement. The operation returns HITs of any status, except for HITs that have been deleted with the DeleteHIT operation or that have been auto-deleted. - */ - listHITsForQualificationType(params: MTurk.Types.ListHITsForQualificationTypeRequest, callback?: (err: AWSError, data: MTurk.Types.ListHITsForQualificationTypeResponse) => void): Request; - /** - * The ListHITsForQualificationType operation returns the HITs that use the given Qualification type for a Qualification requirement. The operation returns HITs of any status, except for HITs that have been deleted with the DeleteHIT operation or that have been auto-deleted. - */ - listHITsForQualificationType(callback?: (err: AWSError, data: MTurk.Types.ListHITsForQualificationTypeResponse) => void): Request; - /** - * The ListQualificationRequests operation retrieves requests for Qualifications of a particular Qualification type. The owner of the Qualification type calls this operation to poll for pending requests, and accepts them using the AcceptQualification operation. - */ - listQualificationRequests(params: MTurk.Types.ListQualificationRequestsRequest, callback?: (err: AWSError, data: MTurk.Types.ListQualificationRequestsResponse) => void): Request; - /** - * The ListQualificationRequests operation retrieves requests for Qualifications of a particular Qualification type. The owner of the Qualification type calls this operation to poll for pending requests, and accepts them using the AcceptQualification operation. - */ - listQualificationRequests(callback?: (err: AWSError, data: MTurk.Types.ListQualificationRequestsResponse) => void): Request; - /** - * The ListQualificationRequests operation retrieves requests for Qualifications of a particular Qualification type. The owner of the Qualification type calls this operation to poll for pending requests, and accepts them using the AcceptQualification operation. - */ - listQualificationTypes(params: MTurk.Types.ListQualificationTypesRequest, callback?: (err: AWSError, data: MTurk.Types.ListQualificationTypesResponse) => void): Request; - /** - * The ListQualificationRequests operation retrieves requests for Qualifications of a particular Qualification type. The owner of the Qualification type calls this operation to poll for pending requests, and accepts them using the AcceptQualification operation. - */ - listQualificationTypes(callback?: (err: AWSError, data: MTurk.Types.ListQualificationTypesResponse) => void): Request; - /** - * The ListReviewPolicyResultsForHIT operation retrieves the computed results and the actions taken in the course of executing your Review Policies for a given HIT. For information about how to specify Review Policies when you call CreateHIT, see Review Policies. The ListReviewPolicyResultsForHIT operation can return results for both Assignment-level and HIT-level review results. - */ - listReviewPolicyResultsForHIT(params: MTurk.Types.ListReviewPolicyResultsForHITRequest, callback?: (err: AWSError, data: MTurk.Types.ListReviewPolicyResultsForHITResponse) => void): Request; - /** - * The ListReviewPolicyResultsForHIT operation retrieves the computed results and the actions taken in the course of executing your Review Policies for a given HIT. For information about how to specify Review Policies when you call CreateHIT, see Review Policies. The ListReviewPolicyResultsForHIT operation can return results for both Assignment-level and HIT-level review results. - */ - listReviewPolicyResultsForHIT(callback?: (err: AWSError, data: MTurk.Types.ListReviewPolicyResultsForHITResponse) => void): Request; - /** - * The ListReviewableHITs operation retrieves the HITs with Status equal to Reviewable or Status equal to Reviewing that belong to the Requester calling the operation. - */ - listReviewableHITs(params: MTurk.Types.ListReviewableHITsRequest, callback?: (err: AWSError, data: MTurk.Types.ListReviewableHITsResponse) => void): Request; - /** - * The ListReviewableHITs operation retrieves the HITs with Status equal to Reviewable or Status equal to Reviewing that belong to the Requester calling the operation. - */ - listReviewableHITs(callback?: (err: AWSError, data: MTurk.Types.ListReviewableHITsResponse) => void): Request; - /** - * The ListWorkersBlocks operation retrieves a list of Workers who are blocked from working on your HITs. - */ - listWorkerBlocks(params: MTurk.Types.ListWorkerBlocksRequest, callback?: (err: AWSError, data: MTurk.Types.ListWorkerBlocksResponse) => void): Request; - /** - * The ListWorkersBlocks operation retrieves a list of Workers who are blocked from working on your HITs. - */ - listWorkerBlocks(callback?: (err: AWSError, data: MTurk.Types.ListWorkerBlocksResponse) => void): Request; - /** - * The ListWorkersWithQualificationType operation returns all of the Workers that have been associated with a given Qualification type. - */ - listWorkersWithQualificationType(params: MTurk.Types.ListWorkersWithQualificationTypeRequest, callback?: (err: AWSError, data: MTurk.Types.ListWorkersWithQualificationTypeResponse) => void): Request; - /** - * The ListWorkersWithQualificationType operation returns all of the Workers that have been associated with a given Qualification type. - */ - listWorkersWithQualificationType(callback?: (err: AWSError, data: MTurk.Types.ListWorkersWithQualificationTypeResponse) => void): Request; - /** - * The NotifyWorkers operation sends an email to one or more Workers that you specify with the Worker ID. You can specify up to 100 Worker IDs to send the same message with a single call to the NotifyWorkers operation. The NotifyWorkers operation will send a notification email to a Worker only if you have previously approved or rejected work from the Worker. - */ - notifyWorkers(params: MTurk.Types.NotifyWorkersRequest, callback?: (err: AWSError, data: MTurk.Types.NotifyWorkersResponse) => void): Request; - /** - * The NotifyWorkers operation sends an email to one or more Workers that you specify with the Worker ID. You can specify up to 100 Worker IDs to send the same message with a single call to the NotifyWorkers operation. The NotifyWorkers operation will send a notification email to a Worker only if you have previously approved or rejected work from the Worker. - */ - notifyWorkers(callback?: (err: AWSError, data: MTurk.Types.NotifyWorkersResponse) => void): Request; - /** - * The RejectAssignment operation rejects the results of a completed assignment. You can include an optional feedback message with the rejection, which the Worker can see in the Status section of the web site. When you include a feedback message with the rejection, it helps the Worker understand why the assignment was rejected, and can improve the quality of the results the Worker submits in the future. Only the Requester who created the HIT can reject an assignment for the HIT. - */ - rejectAssignment(params: MTurk.Types.RejectAssignmentRequest, callback?: (err: AWSError, data: MTurk.Types.RejectAssignmentResponse) => void): Request; - /** - * The RejectAssignment operation rejects the results of a completed assignment. You can include an optional feedback message with the rejection, which the Worker can see in the Status section of the web site. When you include a feedback message with the rejection, it helps the Worker understand why the assignment was rejected, and can improve the quality of the results the Worker submits in the future. Only the Requester who created the HIT can reject an assignment for the HIT. - */ - rejectAssignment(callback?: (err: AWSError, data: MTurk.Types.RejectAssignmentResponse) => void): Request; - /** - * The RejectQualificationRequest operation rejects a user's request for a Qualification. You can provide a text message explaining why the request was rejected. The Worker who made the request can see this message. - */ - rejectQualificationRequest(params: MTurk.Types.RejectQualificationRequestRequest, callback?: (err: AWSError, data: MTurk.Types.RejectQualificationRequestResponse) => void): Request; - /** - * The RejectQualificationRequest operation rejects a user's request for a Qualification. You can provide a text message explaining why the request was rejected. The Worker who made the request can see this message. - */ - rejectQualificationRequest(callback?: (err: AWSError, data: MTurk.Types.RejectQualificationRequestResponse) => void): Request; - /** - * The SendBonus operation issues a payment of money from your account to a Worker. This payment happens separately from the reward you pay to the Worker when you approve the Worker's assignment. The SendBonus operation requires the Worker's ID and the assignment ID as parameters to initiate payment of the bonus. You must include a message that explains the reason for the bonus payment, as the Worker may not be expecting the payment. Amazon Mechanical Turk collects a fee for bonus payments, similar to the HIT listing fee. This operation fails if your account does not have enough funds to pay for both the bonus and the fees. - */ - sendBonus(params: MTurk.Types.SendBonusRequest, callback?: (err: AWSError, data: MTurk.Types.SendBonusResponse) => void): Request; - /** - * The SendBonus operation issues a payment of money from your account to a Worker. This payment happens separately from the reward you pay to the Worker when you approve the Worker's assignment. The SendBonus operation requires the Worker's ID and the assignment ID as parameters to initiate payment of the bonus. You must include a message that explains the reason for the bonus payment, as the Worker may not be expecting the payment. Amazon Mechanical Turk collects a fee for bonus payments, similar to the HIT listing fee. This operation fails if your account does not have enough funds to pay for both the bonus and the fees. - */ - sendBonus(callback?: (err: AWSError, data: MTurk.Types.SendBonusResponse) => void): Request; - /** - * The SendTestEventNotification operation causes Amazon Mechanical Turk to send a notification message as if a HIT event occurred, according to the provided notification specification. This allows you to test notifications without setting up notifications for a real HIT type and trying to trigger them using the website. When you call this operation, the service attempts to send the test notification immediately. - */ - sendTestEventNotification(params: MTurk.Types.SendTestEventNotificationRequest, callback?: (err: AWSError, data: MTurk.Types.SendTestEventNotificationResponse) => void): Request; - /** - * The SendTestEventNotification operation causes Amazon Mechanical Turk to send a notification message as if a HIT event occurred, according to the provided notification specification. This allows you to test notifications without setting up notifications for a real HIT type and trying to trigger them using the website. When you call this operation, the service attempts to send the test notification immediately. - */ - sendTestEventNotification(callback?: (err: AWSError, data: MTurk.Types.SendTestEventNotificationResponse) => void): Request; - /** - * The UpdateExpirationForHIT operation allows you update the expiration time of a HIT. If you update it to a time in the past, the HIT will be immediately expired. - */ - updateExpirationForHIT(params: MTurk.Types.UpdateExpirationForHITRequest, callback?: (err: AWSError, data: MTurk.Types.UpdateExpirationForHITResponse) => void): Request; - /** - * The UpdateExpirationForHIT operation allows you update the expiration time of a HIT. If you update it to a time in the past, the HIT will be immediately expired. - */ - updateExpirationForHIT(callback?: (err: AWSError, data: MTurk.Types.UpdateExpirationForHITResponse) => void): Request; - /** - * The UpdateHITReviewStatus operation updates the status of a HIT. If the status is Reviewable, this operation can update the status to Reviewing, or it can revert a Reviewing HIT back to the Reviewable status. - */ - updateHITReviewStatus(params: MTurk.Types.UpdateHITReviewStatusRequest, callback?: (err: AWSError, data: MTurk.Types.UpdateHITReviewStatusResponse) => void): Request; - /** - * The UpdateHITReviewStatus operation updates the status of a HIT. If the status is Reviewable, this operation can update the status to Reviewing, or it can revert a Reviewing HIT back to the Reviewable status. - */ - updateHITReviewStatus(callback?: (err: AWSError, data: MTurk.Types.UpdateHITReviewStatusResponse) => void): Request; - /** - * The UpdateHITTypeOfHIT operation allows you to change the HITType properties of a HIT. This operation disassociates the HIT from its old HITType properties and associates it with the new HITType properties. The HIT takes on the properties of the new HITType in place of the old ones. - */ - updateHITTypeOfHIT(params: MTurk.Types.UpdateHITTypeOfHITRequest, callback?: (err: AWSError, data: MTurk.Types.UpdateHITTypeOfHITResponse) => void): Request; - /** - * The UpdateHITTypeOfHIT operation allows you to change the HITType properties of a HIT. This operation disassociates the HIT from its old HITType properties and associates it with the new HITType properties. The HIT takes on the properties of the new HITType in place of the old ones. - */ - updateHITTypeOfHIT(callback?: (err: AWSError, data: MTurk.Types.UpdateHITTypeOfHITResponse) => void): Request; - /** - * The UpdateNotificationSettings operation creates, updates, disables or re-enables notifications for a HIT type. If you call the UpdateNotificationSettings operation for a HIT type that already has a notification specification, the operation replaces the old specification with a new one. You can call the UpdateNotificationSettings operation to enable or disable notifications for the HIT type, without having to modify the notification specification itself by providing updates to the Active status without specifying a new notification specification. To change the Active status of a HIT type's notifications, the HIT type must already have a notification specification, or one must be provided in the same call to UpdateNotificationSettings. - */ - updateNotificationSettings(params: MTurk.Types.UpdateNotificationSettingsRequest, callback?: (err: AWSError, data: MTurk.Types.UpdateNotificationSettingsResponse) => void): Request; - /** - * The UpdateNotificationSettings operation creates, updates, disables or re-enables notifications for a HIT type. If you call the UpdateNotificationSettings operation for a HIT type that already has a notification specification, the operation replaces the old specification with a new one. You can call the UpdateNotificationSettings operation to enable or disable notifications for the HIT type, without having to modify the notification specification itself by providing updates to the Active status without specifying a new notification specification. To change the Active status of a HIT type's notifications, the HIT type must already have a notification specification, or one must be provided in the same call to UpdateNotificationSettings. - */ - updateNotificationSettings(callback?: (err: AWSError, data: MTurk.Types.UpdateNotificationSettingsResponse) => void): Request; - /** - * The UpdateQualificationType operation modifies the attributes of an existing Qualification type, which is represented by a QualificationType data structure. Only the owner of a Qualification type can modify its attributes. Most attributes of a Qualification type can be changed after the type has been created. However, the Name and Keywords fields cannot be modified. The RetryDelayInSeconds parameter can be modified or added to change the delay or to enable retries, but RetryDelayInSeconds cannot be used to disable retries. You can use this operation to update the test for a Qualification type. The test is updated based on the values specified for the Test, TestDurationInSeconds and AnswerKey parameters. All three parameters specify the updated test. If you are updating the test for a type, you must specify the Test and TestDurationInSeconds parameters. The AnswerKey parameter is optional; omitting it specifies that the updated test does not have an answer key. If you omit the Test parameter, the test for the Qualification type is unchanged. There is no way to remove a test from a Qualification type that has one. If the type already has a test, you cannot update it to be AutoGranted. If the Qualification type does not have a test and one is provided by an update, the type will henceforth have a test. If you want to update the test duration or answer key for an existing test without changing the questions, you must specify a Test parameter with the original questions, along with the updated values. If you provide an updated Test but no AnswerKey, the new test will not have an answer key. Requests for such Qualifications must be granted manually. You can also update the AutoGranted and AutoGrantedValue attributes of the Qualification type. - */ - updateQualificationType(params: MTurk.Types.UpdateQualificationTypeRequest, callback?: (err: AWSError, data: MTurk.Types.UpdateQualificationTypeResponse) => void): Request; - /** - * The UpdateQualificationType operation modifies the attributes of an existing Qualification type, which is represented by a QualificationType data structure. Only the owner of a Qualification type can modify its attributes. Most attributes of a Qualification type can be changed after the type has been created. However, the Name and Keywords fields cannot be modified. The RetryDelayInSeconds parameter can be modified or added to change the delay or to enable retries, but RetryDelayInSeconds cannot be used to disable retries. You can use this operation to update the test for a Qualification type. The test is updated based on the values specified for the Test, TestDurationInSeconds and AnswerKey parameters. All three parameters specify the updated test. If you are updating the test for a type, you must specify the Test and TestDurationInSeconds parameters. The AnswerKey parameter is optional; omitting it specifies that the updated test does not have an answer key. If you omit the Test parameter, the test for the Qualification type is unchanged. There is no way to remove a test from a Qualification type that has one. If the type already has a test, you cannot update it to be AutoGranted. If the Qualification type does not have a test and one is provided by an update, the type will henceforth have a test. If you want to update the test duration or answer key for an existing test without changing the questions, you must specify a Test parameter with the original questions, along with the updated values. If you provide an updated Test but no AnswerKey, the new test will not have an answer key. Requests for such Qualifications must be granted manually. You can also update the AutoGranted and AutoGrantedValue attributes of the Qualification type. - */ - updateQualificationType(callback?: (err: AWSError, data: MTurk.Types.UpdateQualificationTypeResponse) => void): Request; -} -declare namespace MTurk { - export interface AcceptQualificationRequestRequest { - /** - * The ID of the Qualification request, as returned by the GetQualificationRequests operation. - */ - QualificationRequestId: String; - /** - * The value of the Qualification. You can omit this value if you are using the presence or absence of the Qualification as the basis for a HIT requirement. - */ - IntegerValue?: Integer; - } - export interface AcceptQualificationRequestResponse { - } - export interface ApproveAssignmentRequest { - /** - * The ID of the assignment. The assignment must correspond to a HIT created by the Requester. - */ - AssignmentId: EntityId; - /** - * A message for the Worker, which the Worker can see in the Status section of the web site. - */ - RequesterFeedback?: String; - /** - * A flag indicating that an assignment should be approved even if it was previously rejected. Defaults to False. - */ - OverrideRejection?: Boolean; - } - export interface ApproveAssignmentResponse { - } - export interface Assignment { - /** - * A unique identifier for the assignment. - */ - AssignmentId?: EntityId; - /** - * The ID of the Worker who accepted the HIT. - */ - WorkerId?: CustomerId; - /** - * The ID of the HIT. - */ - HITId?: EntityId; - /** - * The status of the assignment. - */ - AssignmentStatus?: AssignmentStatus; - /** - * If results have been submitted, AutoApprovalTime is the date and time the results of the assignment results are considered Approved automatically if they have not already been explicitly approved or rejected by the Requester. This value is derived from the auto-approval delay specified by the Requester in the HIT. This value is omitted from the assignment if the Worker has not yet submitted results. - */ - AutoApprovalTime?: Timestamp; - /** - * The date and time the Worker accepted the assignment. - */ - AcceptTime?: Timestamp; - /** - * If the Worker has submitted results, SubmitTime is the date and time the assignment was submitted. This value is omitted from the assignment if the Worker has not yet submitted results. - */ - SubmitTime?: Timestamp; - /** - * If the Worker has submitted results and the Requester has approved the results, ApprovalTime is the date and time the Requester approved the results. This value is omitted from the assignment if the Requester has not yet approved the results. - */ - ApprovalTime?: Timestamp; - /** - * If the Worker has submitted results and the Requester has rejected the results, RejectionTime is the date and time the Requester rejected the results. - */ - RejectionTime?: Timestamp; - /** - * The date and time of the deadline for the assignment. This value is derived from the deadline specification for the HIT and the date and time the Worker accepted the HIT. - */ - Deadline?: Timestamp; - /** - * The Worker's answers submitted for the HIT contained in a QuestionFormAnswers document, if the Worker provides an answer. If the Worker does not provide any answers, Answer may contain a QuestionFormAnswers document, or Answer may be empty. - */ - Answer?: String; - /** - * The feedback string included with the call to the ApproveAssignment operation or the RejectAssignment operation, if the Requester approved or rejected the assignment and specified feedback. - */ - RequesterFeedback?: String; - } - export type AssignmentList = Assignment[]; - export type AssignmentStatus = "Submitted"|"Approved"|"Rejected"|string; - export type AssignmentStatusList = AssignmentStatus[]; - export interface AssociateQualificationWithWorkerRequest { - /** - * The ID of the Qualification type to use for the assigned Qualification. - */ - QualificationTypeId: EntityId; - /** - * The ID of the Worker to whom the Qualification is being assigned. Worker IDs are included with submitted HIT assignments and Qualification requests. - */ - WorkerId: CustomerId; - /** - * The value of the Qualification to assign. - */ - IntegerValue?: Integer; - /** - * Specifies whether to send a notification email message to the Worker saying that the qualification was assigned to the Worker. Note: this is true by default. - */ - SendNotification?: Boolean; - } - export interface AssociateQualificationWithWorkerResponse { - } - export interface BonusPayment { - /** - * The ID of the Worker to whom the bonus was paid. - */ - WorkerId?: CustomerId; - BonusAmount?: CurrencyAmount; - /** - * The ID of the assignment associated with this bonus payment. - */ - AssignmentId?: EntityId; - /** - * The Reason text given when the bonus was granted, if any. - */ - Reason?: String; - /** - * The date and time of when the bonus was granted. - */ - GrantTime?: Timestamp; - } - export type BonusPaymentList = BonusPayment[]; - export type Boolean = boolean; - export type Comparator = "LessThan"|"LessThanOrEqualTo"|"GreaterThan"|"GreaterThanOrEqualTo"|"EqualTo"|"NotEqualTo"|"Exists"|"DoesNotExist"|"In"|"NotIn"|string; - export type CountryParameters = string; - export interface CreateAdditionalAssignmentsForHITRequest { - /** - * The ID of the HIT to extend. - */ - HITId: EntityId; - /** - * The number of additional assignments to request for this HIT. - */ - NumberOfAdditionalAssignments: Integer; - /** - * A unique identifier for this request, which allows you to retry the call on error without extending the HIT multiple times. This is useful in cases such as network timeouts where it is unclear whether or not the call succeeded on the server. If the extend HIT already exists in the system from a previous call using the same UniqueRequestToken, subsequent calls will return an error with a message containing the request ID. - */ - UniqueRequestToken?: IdempotencyToken; - } - export interface CreateAdditionalAssignmentsForHITResponse { - } - export interface CreateHITRequest { - /** - * The number of times the HIT can be accepted and completed before the HIT becomes unavailable. - */ - MaxAssignments?: Integer; - /** - * The number of seconds after an assignment for the HIT has been submitted, after which the assignment is considered Approved automatically unless the Requester explicitly rejects it. - */ - AutoApprovalDelayInSeconds?: Long; - /** - * An amount of time, in seconds, after which the HIT is no longer available for users to accept. After the lifetime of the HIT elapses, the HIT no longer appears in HIT searches, even if not all of the assignments for the HIT have been accepted. - */ - LifetimeInSeconds: Long; - /** - * The amount of time, in seconds, that a Worker has to complete the HIT after accepting it. If a Worker does not complete the assignment within the specified duration, the assignment is considered abandoned. If the HIT is still active (that is, its lifetime has not elapsed), the assignment becomes available for other users to find and accept. - */ - AssignmentDurationInSeconds: Long; - /** - * The amount of money the Requester will pay a Worker for successfully completing the HIT. - */ - Reward: CurrencyAmount; - /** - * The title of the HIT. A title should be short and descriptive about the kind of task the HIT contains. On the Amazon Mechanical Turk web site, the HIT title appears in search results, and everywhere the HIT is mentioned. - */ - Title: String; - /** - * One or more words or phrases that describe the HIT, separated by commas. These words are used in searches to find HITs. - */ - Keywords?: String; - /** - * A general description of the HIT. A description includes detailed information about the kind of task the HIT contains. On the Amazon Mechanical Turk web site, the HIT description appears in the expanded view of search results, and in the HIT and assignment screens. A good description gives the user enough information to evaluate the HIT before accepting it. - */ - Description: String; - /** - * The data the person completing the HIT uses to produce the results. Constraints: Must be a QuestionForm data structure, an ExternalQuestion data structure, or an HTMLQuestion data structure. The XML question data must not be larger than 64 kilobytes (65,535 bytes) in size, including whitespace. Either a Question parameter or a HITLayoutId parameter must be provided. - */ - Question?: String; - /** - * An arbitrary data field. The RequesterAnnotation parameter lets your application attach arbitrary data to the HIT for tracking purposes. For example, this parameter could be an identifier internal to the Requester's application that corresponds with the HIT. The RequesterAnnotation parameter for a HIT is only visible to the Requester who created the HIT. It is not shown to the Worker, or any other Requester. The RequesterAnnotation parameter may be different for each HIT you submit. It does not affect how your HITs are grouped. - */ - RequesterAnnotation?: String; - /** - * A condition that a Worker's Qualifications must meet before the Worker is allowed to accept and complete the HIT. - */ - QualificationRequirements?: QualificationRequirementList; - /** - * A unique identifier for this request which allows you to retry the call on error without creating duplicate HITs. This is useful in cases such as network timeouts where it is unclear whether or not the call succeeded on the server. If the HIT already exists in the system from a previous call using the same UniqueRequestToken, subsequent calls will return a AWS.MechanicalTurk.HitAlreadyExists error with a message containing the HITId. Note: It is your responsibility to ensure uniqueness of the token. The unique token expires after 24 hours. Subsequent calls using the same UniqueRequestToken made after the 24 hour limit could create duplicate HITs. - */ - UniqueRequestToken?: IdempotencyToken; - /** - * The Assignment-level Review Policy applies to the assignments under the HIT. You can specify for Mechanical Turk to take various actions based on the policy. - */ - AssignmentReviewPolicy?: ReviewPolicy; - /** - * The HIT-level Review Policy applies to the HIT. You can specify for Mechanical Turk to take various actions based on the policy. - */ - HITReviewPolicy?: ReviewPolicy; - /** - * The HITLayoutId allows you to use a pre-existing HIT design with placeholder values and create an additional HIT by providing those values as HITLayoutParameters. Constraints: Either a Question parameter or a HITLayoutId parameter must be provided. - */ - HITLayoutId?: EntityId; - /** - * If the HITLayoutId is provided, any placeholder values must be filled in with values using the HITLayoutParameter structure. For more information, see HITLayout. - */ - HITLayoutParameters?: HITLayoutParameterList; - } - export interface CreateHITResponse { - /** - * Contains the newly created HIT data. For a description of the HIT data structure as it appears in responses, see the HIT Data Structure documentation. - */ - HIT?: HIT; - } - export interface CreateHITTypeRequest { - /** - * The number of seconds after an assignment for the HIT has been submitted, after which the assignment is considered Approved automatically unless the Requester explicitly rejects it. - */ - AutoApprovalDelayInSeconds?: Long; - /** - * The amount of time, in seconds, that a Worker has to complete the HIT after accepting it. If a Worker does not complete the assignment within the specified duration, the assignment is considered abandoned. If the HIT is still active (that is, its lifetime has not elapsed), the assignment becomes available for other users to find and accept. - */ - AssignmentDurationInSeconds: Long; - /** - * The amount of money the Requester will pay a Worker for successfully completing the HIT. - */ - Reward: CurrencyAmount; - /** - * The title of the HIT. A title should be short and descriptive about the kind of task the HIT contains. On the Amazon Mechanical Turk web site, the HIT title appears in search results, and everywhere the HIT is mentioned. - */ - Title: String; - /** - * One or more words or phrases that describe the HIT, separated by commas. These words are used in searches to find HITs. - */ - Keywords?: String; - /** - * A general description of the HIT. A description includes detailed information about the kind of task the HIT contains. On the Amazon Mechanical Turk web site, the HIT description appears in the expanded view of search results, and in the HIT and assignment screens. A good description gives the user enough information to evaluate the HIT before accepting it. - */ - Description: String; - /** - * A condition that a Worker's Qualifications must meet before the Worker is allowed to accept and complete the HIT. - */ - QualificationRequirements?: QualificationRequirementList; - } - export interface CreateHITTypeResponse { - /** - * The ID of the newly registered HIT type. - */ - HITTypeId?: EntityId; - } - export interface CreateHITWithHITTypeRequest { - /** - * The HIT type ID you want to create this HIT with. - */ - HITTypeId: EntityId; - /** - * The number of times the HIT can be accepted and completed before the HIT becomes unavailable. - */ - MaxAssignments?: Integer; - /** - * An amount of time, in seconds, after which the HIT is no longer available for users to accept. After the lifetime of the HIT elapses, the HIT no longer appears in HIT searches, even if not all of the assignments for the HIT have been accepted. - */ - LifetimeInSeconds: Long; - /** - * The data the person completing the HIT uses to produce the results. Constraints: Must be a QuestionForm data structure, an ExternalQuestion data structure, or an HTMLQuestion data structure. The XML question data must not be larger than 64 kilobytes (65,535 bytes) in size, including whitespace. Either a Question parameter or a HITLayoutId parameter must be provided. - */ - Question?: String; - /** - * An arbitrary data field. The RequesterAnnotation parameter lets your application attach arbitrary data to the HIT for tracking purposes. For example, this parameter could be an identifier internal to the Requester's application that corresponds with the HIT. The RequesterAnnotation parameter for a HIT is only visible to the Requester who created the HIT. It is not shown to the Worker, or any other Requester. The RequesterAnnotation parameter may be different for each HIT you submit. It does not affect how your HITs are grouped. - */ - RequesterAnnotation?: String; - /** - * A unique identifier for this request which allows you to retry the call on error without creating duplicate HITs. This is useful in cases such as network timeouts where it is unclear whether or not the call succeeded on the server. If the HIT already exists in the system from a previous call using the same UniqueRequestToken, subsequent calls will return a AWS.MechanicalTurk.HitAlreadyExists error with a message containing the HITId. Note: It is your responsibility to ensure uniqueness of the token. The unique token expires after 24 hours. Subsequent calls using the same UniqueRequestToken made after the 24 hour limit could create duplicate HITs. - */ - UniqueRequestToken?: IdempotencyToken; - /** - * The Assignment-level Review Policy applies to the assignments under the HIT. You can specify for Mechanical Turk to take various actions based on the policy. - */ - AssignmentReviewPolicy?: ReviewPolicy; - /** - * The HIT-level Review Policy applies to the HIT. You can specify for Mechanical Turk to take various actions based on the policy. - */ - HITReviewPolicy?: ReviewPolicy; - /** - * The HITLayoutId allows you to use a pre-existing HIT design with placeholder values and create an additional HIT by providing those values as HITLayoutParameters. Constraints: Either a Question parameter or a HITLayoutId parameter must be provided. - */ - HITLayoutId?: EntityId; - /** - * If the HITLayoutId is provided, any placeholder values must be filled in with values using the HITLayoutParameter structure. For more information, see HITLayout. - */ - HITLayoutParameters?: HITLayoutParameterList; - } - export interface CreateHITWithHITTypeResponse { - /** - * Contains the newly created HIT data. For a description of the HIT data structure as it appears in responses, see the HIT Data Structure documentation. - */ - HIT?: HIT; - } - export interface CreateQualificationTypeRequest { - /** - * The name you give to the Qualification type. The type name is used to represent the Qualification to Workers, and to find the type using a Qualification type search. It must be unique across all of your Qualification types. - */ - Name: String; - /** - * One or more words or phrases that describe the Qualification type, separated by commas. The keywords of a type make the type easier to find during a search. - */ - Keywords?: String; - /** - * A long description for the Qualification type. On the Amazon Mechanical Turk website, the long description is displayed when a Worker examines a Qualification type. - */ - Description: String; - /** - * The initial status of the Qualification type. Constraints: Valid values are: Active | Inactive - */ - QualificationTypeStatus: QualificationTypeStatus; - /** - * The number of seconds that a Worker must wait after requesting a Qualification of the Qualification type before the worker can retry the Qualification request. Constraints: None. If not specified, retries are disabled and Workers can request a Qualification of this type only once, even if the Worker has not been granted the Qualification. It is not possible to disable retries for a Qualification type after it has been created with retries enabled. If you want to disable retries, you must delete existing retry-enabled Qualification type and then create a new Qualification type with retries disabled. - */ - RetryDelayInSeconds?: Long; - /** - * The questions for the Qualification test a Worker must answer correctly to obtain a Qualification of this type. If this parameter is specified, TestDurationInSeconds must also be specified. Constraints: Must not be longer than 65535 bytes. Must be a QuestionForm data structure. This parameter cannot be specified if AutoGranted is true. Constraints: None. If not specified, the Worker may request the Qualification without answering any questions. - */ - Test?: String; - /** - * The answers to the Qualification test specified in the Test parameter, in the form of an AnswerKey data structure. Constraints: Must not be longer than 65535 bytes. Constraints: None. If not specified, you must process Qualification requests manually. - */ - AnswerKey?: String; - /** - * The number of seconds the Worker has to complete the Qualification test, starting from the time the Worker requests the Qualification. - */ - TestDurationInSeconds?: Long; - /** - * Specifies whether requests for the Qualification type are granted immediately, without prompting the Worker with a Qualification test. Constraints: If the Test parameter is specified, this parameter cannot be true. - */ - AutoGranted?: Boolean; - /** - * The Qualification value to use for automatically granted Qualifications. This parameter is used only if the AutoGranted parameter is true. - */ - AutoGrantedValue?: Integer; - } - export interface CreateQualificationTypeResponse { - /** - * The created Qualification type, returned as a QualificationType data structure. - */ - QualificationType?: QualificationType; - } - export interface CreateWorkerBlockRequest { - /** - * The ID of the Worker to block. - */ - WorkerId: CustomerId; - /** - * A message explaining the reason for blocking the Worker. This parameter enables you to keep track of your Workers. The Worker does not see this message. - */ - Reason: String; - } - export interface CreateWorkerBlockResponse { - } - export type CurrencyAmount = string; - export type CustomerId = string; - export type CustomerIdList = CustomerId[]; - export interface DeleteHITRequest { - /** - * The ID of the HIT to be deleted. - */ - HITId: EntityId; - } - export interface DeleteHITResponse { - } - export interface DeleteQualificationTypeRequest { - /** - * The ID of the QualificationType to dispose. - */ - QualificationTypeId: EntityId; - } - export interface DeleteQualificationTypeResponse { - } - export interface DeleteWorkerBlockRequest { - /** - * The ID of the Worker to unblock. - */ - WorkerId: CustomerId; - /** - * A message that explains the reason for unblocking the Worker. The Worker does not see this message. - */ - Reason?: String; - } - export interface DeleteWorkerBlockResponse { - } - export interface DisassociateQualificationFromWorkerRequest { - /** - * The ID of the Worker who possesses the Qualification to be revoked. - */ - WorkerId: CustomerId; - /** - * The ID of the Qualification type of the Qualification to be revoked. - */ - QualificationTypeId: EntityId; - /** - * A text message that explains why the Qualification was revoked. The user who had the Qualification sees this message. - */ - Reason?: String; - } - export interface DisassociateQualificationFromWorkerResponse { - } - export type EntityId = string; - export type EventType = "AssignmentAccepted"|"AssignmentAbandoned"|"AssignmentReturned"|"AssignmentSubmitted"|"AssignmentRejected"|"AssignmentApproved"|"HITCreated"|"HITExpired"|"HITReviewable"|"HITExtended"|"HITDisposed"|"Ping"|string; - export type EventTypeList = EventType[]; - export type ExceptionMessage = string; - export interface GetAccountBalanceRequest { - } - export interface GetAccountBalanceResponse { - AvailableBalance?: CurrencyAmount; - OnHoldBalance?: CurrencyAmount; - } - export interface GetAssignmentRequest { - /** - * The ID of the Assignment to be retrieved. - */ - AssignmentId: EntityId; - } - export interface GetAssignmentResponse { - /** - * The assignment. The response includes one Assignment element. - */ - Assignment?: Assignment; - /** - * The HIT associated with this assignment. The response includes one HIT element. - */ - HIT?: HIT; - } - export interface GetFileUploadURLRequest { - /** - * The ID of the assignment that contains the question with a FileUploadAnswer. - */ - AssignmentId: EntityId; - /** - * The identifier of the question with a FileUploadAnswer, as specified in the QuestionForm of the HIT. - */ - QuestionIdentifier: String; - } - export interface GetFileUploadURLResponse { - /** - * A temporary URL for the file that the Worker uploaded for the answer. - */ - FileUploadURL?: String; - } - export interface GetHITRequest { - /** - * The ID of the HIT to be retrieved. - */ - HITId: EntityId; - } - export interface GetHITResponse { - /** - * Contains the requested HIT data. - */ - HIT?: HIT; - } - export interface GetQualificationScoreRequest { - /** - * The ID of the QualificationType. - */ - QualificationTypeId: EntityId; - /** - * The ID of the Worker whose Qualification is being updated. - */ - WorkerId: CustomerId; - } - export interface GetQualificationScoreResponse { - /** - * The Qualification data structure of the Qualification assigned to a user, including the Qualification type and the value (score). - */ - Qualification?: Qualification; - } - export interface GetQualificationTypeRequest { - /** - * The ID of the QualificationType. - */ - QualificationTypeId: EntityId; - } - export interface GetQualificationTypeResponse { - /** - * The returned Qualification Type - */ - QualificationType?: QualificationType; - } - export interface HIT { - /** - * A unique identifier for the HIT. - */ - HITId?: EntityId; - /** - * The ID of the HIT type of this HIT - */ - HITTypeId?: EntityId; - /** - * The ID of the HIT Group of this HIT. - */ - HITGroupId?: EntityId; - /** - * The ID of the HIT Layout of this HIT. - */ - HITLayoutId?: EntityId; - /** - * The date and time the HIT was created. - */ - CreationTime?: Timestamp; - /** - * The title of the HIT. - */ - Title?: String; - /** - * A general description of the HIT. - */ - Description?: String; - /** - * The data the Worker completing the HIT uses produce the results. This is either either a QuestionForm, HTMLQuestion or an ExternalQuestion data structure. - */ - Question?: String; - /** - * One or more words or phrases that describe the HIT, separated by commas. Search terms similar to the keywords of a HIT are more likely to have the HIT in the search results. - */ - Keywords?: String; - /** - * The status of the HIT and its assignments. Valid Values are Assignable | Unassignable | Reviewable | Reviewing | Disposed. - */ - HITStatus?: HITStatus; - /** - * The number of times the HIT can be accepted and completed before the HIT becomes unavailable. - */ - MaxAssignments?: Integer; - Reward?: CurrencyAmount; - /** - * The amount of time, in seconds, after the Worker submits an assignment for the HIT that the results are automatically approved by Amazon Mechanical Turk. This is the amount of time the Requester has to reject an assignment submitted by a Worker before the assignment is auto-approved and the Worker is paid. - */ - AutoApprovalDelayInSeconds?: Long; - /** - * The date and time the HIT expires. - */ - Expiration?: Timestamp; - /** - * The length of time, in seconds, that a Worker has to complete the HIT after accepting it. - */ - AssignmentDurationInSeconds?: Long; - /** - * An arbitrary data field the Requester who created the HIT can use. This field is visible only to the creator of the HIT. - */ - RequesterAnnotation?: String; - /** - * A condition that a Worker's Qualifications must meet in order to accept the HIT. A HIT can have between zero and ten Qualification requirements. All requirements must be met by a Worker's Qualifications for the Worker to accept the HIT. - */ - QualificationRequirements?: QualificationRequirementList; - /** - * Indicates the review status of the HIT. Valid Values are NotReviewed | MarkedForReview | ReviewedAppropriate | ReviewedInappropriate. - */ - HITReviewStatus?: HITReviewStatus; - /** - * The number of assignments for this HIT that are being previewed or have been accepted by Workers, but have not yet been submitted, returned, or abandoned. - */ - NumberOfAssignmentsPending?: Integer; - /** - * The number of assignments for this HIT that are available for Workers to accept. - */ - NumberOfAssignmentsAvailable?: Integer; - /** - * The number of assignments for this HIT that have been approved or rejected. - */ - NumberOfAssignmentsCompleted?: Integer; - } - export interface HITLayoutParameter { - /** - * The name of the parameter in the HITLayout. - */ - Name: String; - /** - * The value substituted for the parameter referenced in the HITLayout. - */ - Value: String; - } - export type HITLayoutParameterList = HITLayoutParameter[]; - export type HITList = HIT[]; - export type HITReviewStatus = "NotReviewed"|"MarkedForReview"|"ReviewedAppropriate"|"ReviewedInappropriate"|string; - export type HITStatus = "Assignable"|"Unassignable"|"Reviewable"|"Reviewing"|"Disposed"|string; - export type IdempotencyToken = string; - export type Integer = number; - export type IntegerList = Integer[]; - export interface ListAssignmentsForHITRequest { - /** - * The ID of the HIT. - */ - HITId: EntityId; - /** - * Pagination token - */ - NextToken?: PaginationToken; - MaxResults?: ResultSize; - /** - * The status of the assignments to return: Submitted | Approved | Rejected - */ - AssignmentStatuses?: AssignmentStatusList; - } - export interface ListAssignmentsForHITResponse { - NextToken?: PaginationToken; - /** - * The number of assignments on the page in the filtered results list, equivalent to the number of assignments returned by this call. - */ - NumResults?: Integer; - /** - * The collection of Assignment data structures returned by this call. - */ - Assignments?: AssignmentList; - } - export interface ListBonusPaymentsRequest { - /** - * The ID of the HIT associated with the bonus payments to retrieve. If not specified, all bonus payments for all assignments for the given HIT are returned. Either the HITId parameter or the AssignmentId parameter must be specified - */ - HITId?: EntityId; - /** - * The ID of the assignment associated with the bonus payments to retrieve. If specified, only bonus payments for the given assignment are returned. Either the HITId parameter or the AssignmentId parameter must be specified - */ - AssignmentId?: EntityId; - /** - * Pagination token - */ - NextToken?: PaginationToken; - MaxResults?: ResultSize; - } - export interface ListBonusPaymentsResponse { - /** - * The number of bonus payments on this page in the filtered results list, equivalent to the number of bonus payments being returned by this call. - */ - NumResults?: Integer; - NextToken?: PaginationToken; - /** - * A successful request to the ListBonusPayments operation returns a list of BonusPayment objects. - */ - BonusPayments?: BonusPaymentList; - } - export interface ListHITsForQualificationTypeRequest { - /** - * The ID of the Qualification type to use when querying HITs. - */ - QualificationTypeId: EntityId; - /** - * Pagination Token - */ - NextToken?: PaginationToken; - /** - * Limit the number of results returned. - */ - MaxResults?: ResultSize; - } - export interface ListHITsForQualificationTypeResponse { - NextToken?: PaginationToken; - /** - * The number of HITs on this page in the filtered results list, equivalent to the number of HITs being returned by this call. - */ - NumResults?: Integer; - /** - * The list of HIT elements returned by the query. - */ - HITs?: HITList; - } - export interface ListHITsRequest { - /** - * Pagination token - */ - NextToken?: PaginationToken; - MaxResults?: ResultSize; - } - export interface ListHITsResponse { - NextToken?: PaginationToken; - /** - * The number of HITs on this page in the filtered results list, equivalent to the number of HITs being returned by this call. - */ - NumResults?: Integer; - /** - * The list of HIT elements returned by the query. - */ - HITs?: HITList; - } - export interface ListQualificationRequestsRequest { - /** - * The ID of the QualificationType. - */ - QualificationTypeId?: EntityId; - NextToken?: PaginationToken; - /** - * The maximum number of results to return in a single call. - */ - MaxResults?: ResultSize; - } - export interface ListQualificationRequestsResponse { - /** - * The number of Qualification requests on this page in the filtered results list, equivalent to the number of Qualification requests being returned by this call. - */ - NumResults?: Integer; - NextToken?: PaginationToken; - /** - * The Qualification request. The response includes one QualificationRequest element for each Qualification request returned by the query. - */ - QualificationRequests?: QualificationRequestList; - } - export interface ListQualificationTypesRequest { - /** - * A text query against all of the searchable attributes of Qualification types. - */ - Query?: String; - /** - * Specifies that only Qualification types that a user can request through the Amazon Mechanical Turk web site, such as by taking a Qualification test, are returned as results of the search. Some Qualification types, such as those assigned automatically by the system, cannot be requested directly by users. If false, all Qualification types, including those managed by the system, are considered. Valid values are True | False. - */ - MustBeRequestable: Boolean; - /** - * Specifies that only Qualification types that the Requester created are returned. If false, the operation returns all Qualification types. - */ - MustBeOwnedByCaller?: Boolean; - NextToken?: PaginationToken; - /** - * The maximum number of results to return in a single call. - */ - MaxResults?: ResultSize; - } - export interface ListQualificationTypesResponse { - /** - * The number of Qualification types on this page in the filtered results list, equivalent to the number of types this operation returns. - */ - NumResults?: Integer; - NextToken?: PaginationToken; - /** - * The list of QualificationType elements returned by the query. - */ - QualificationTypes?: QualificationTypeList; - } - export interface ListReviewPolicyResultsForHITRequest { - /** - * The unique identifier of the HIT to retrieve review results for. - */ - HITId: EntityId; - /** - * The Policy Level(s) to retrieve review results for - HIT or Assignment. If omitted, the default behavior is to retrieve all data for both policy levels. For a list of all the described policies, see Review Policies. - */ - PolicyLevels?: ReviewPolicyLevelList; - /** - * Specify if the operation should retrieve a list of the actions taken executing the Review Policies and their outcomes. - */ - RetrieveActions?: Boolean; - /** - * Specify if the operation should retrieve a list of the results computed by the Review Policies. - */ - RetrieveResults?: Boolean; - /** - * Pagination token - */ - NextToken?: PaginationToken; - /** - * Limit the number of results returned. - */ - MaxResults?: ResultSize; - } - export interface ListReviewPolicyResultsForHITResponse { - /** - * The HITId of the HIT for which results have been returned. - */ - HITId?: EntityId; - /** - * The name of the Assignment-level Review Policy. This contains only the PolicyName element. - */ - AssignmentReviewPolicy?: ReviewPolicy; - /** - * The name of the HIT-level Review Policy. This contains only the PolicyName element. - */ - HITReviewPolicy?: ReviewPolicy; - /** - * Contains both ReviewResult and ReviewAction elements for an Assignment. - */ - AssignmentReviewReport?: ReviewReport; - /** - * Contains both ReviewResult and ReviewAction elements for a particular HIT. - */ - HITReviewReport?: ReviewReport; - NextToken?: PaginationToken; - } - export interface ListReviewableHITsRequest { - /** - * The ID of the HIT type of the HITs to consider for the query. If not specified, all HITs for the Reviewer are considered - */ - HITTypeId?: EntityId; - /** - * Can be either Reviewable or Reviewing. Reviewable is the default value. - */ - Status?: ReviewableHITStatus; - /** - * Pagination Token - */ - NextToken?: PaginationToken; - /** - * Limit the number of results returned. - */ - MaxResults?: ResultSize; - } - export interface ListReviewableHITsResponse { - NextToken?: PaginationToken; - /** - * The number of HITs on this page in the filtered results list, equivalent to the number of HITs being returned by this call. - */ - NumResults?: Integer; - /** - * The list of HIT elements returned by the query. - */ - HITs?: HITList; - } - export interface ListWorkerBlocksRequest { - /** - * Pagination token - */ - NextToken?: PaginationToken; - MaxResults?: ResultSize; - } - export interface ListWorkerBlocksResponse { - NextToken?: PaginationToken; - /** - * The number of assignments on the page in the filtered results list, equivalent to the number of assignments returned by this call. - */ - NumResults?: Integer; - /** - * The list of WorkerBlocks, containing the collection of Worker IDs and reasons for blocking. - */ - WorkerBlocks?: WorkerBlockList; - } - export interface ListWorkersWithQualificationTypeRequest { - /** - * The ID of the Qualification type of the Qualifications to return. - */ - QualificationTypeId: EntityId; - /** - * The status of the Qualifications to return. Can be Granted | Revoked. - */ - Status?: QualificationStatus; - /** - * Pagination Token - */ - NextToken?: PaginationToken; - /** - * Limit the number of results returned. - */ - MaxResults?: ResultSize; - } - export interface ListWorkersWithQualificationTypeResponse { - NextToken?: PaginationToken; - /** - * The number of Qualifications on this page in the filtered results list, equivalent to the number of Qualifications being returned by this call. - */ - NumResults?: Integer; - /** - * The list of Qualification elements returned by this call. - */ - Qualifications?: QualificationList; - } - export interface Locale { - /** - * The country of the locale. Must be a valid ISO 3166 country code. For example, the code US refers to the United States of America. - */ - Country: CountryParameters; - /** - * The state or subdivision of the locale. A valid ISO 3166-2 subdivision code. For example, the code WA refers to the state of Washington. - */ - Subdivision?: CountryParameters; - } - export type LocaleList = Locale[]; - export type Long = number; - export interface NotificationSpecification { - /** - * The target for notification messages. The Destination’s format is determined by the specified Transport: When Transport is Email, the Destination is your email address. When Transport is SQS, the Destination is your queue URL. When Transport is SNS, the Destination is the ARN of your topic. - */ - Destination: String; - /** - * The method Amazon Mechanical Turk uses to send the notification. Valid Values: Email | SQS | SNS. - */ - Transport: NotificationTransport; - /** - * The version of the Notification API to use. Valid value is 2006-05-05. - */ - Version: String; - /** - * The list of events that should cause notifications to be sent. Valid Values: AssignmentAccepted | AssignmentAbandoned | AssignmentReturned | AssignmentSubmitted | AssignmentRejected | AssignmentApproved | HITCreated | HITExtended | HITDisposed | HITReviewable | HITExpired | Ping. The Ping event is only valid for the SendTestEventNotification operation. - */ - EventTypes: EventTypeList; - } - export type NotificationTransport = "Email"|"SQS"|"SNS"|string; - export type NotifyWorkersFailureCode = "SoftFailure"|"HardFailure"|string; - export interface NotifyWorkersFailureStatus { - /** - * Encoded value for the failure type. - */ - NotifyWorkersFailureCode?: NotifyWorkersFailureCode; - /** - * A message detailing the reason the Worker could not be notified. - */ - NotifyWorkersFailureMessage?: String; - /** - * The ID of the Worker. - */ - WorkerId?: CustomerId; - } - export type NotifyWorkersFailureStatusList = NotifyWorkersFailureStatus[]; - export interface NotifyWorkersRequest { - /** - * The subject line of the email message to send. Can include up to 200 characters. - */ - Subject: String; - /** - * The text of the email message to send. Can include up to 4,096 characters - */ - MessageText: String; - /** - * A list of Worker IDs you wish to notify. You can notify upto 100 Workers at a time. - */ - WorkerIds: CustomerIdList; - } - export interface NotifyWorkersResponse { - /** - * When MTurk sends notifications to the list of Workers, it returns back any failures it encounters in this list of NotifyWorkersFailureStatus objects. - */ - NotifyWorkersFailureStatuses?: NotifyWorkersFailureStatusList; - } - export type PaginationToken = string; - export interface ParameterMapEntry { - /** - * The QuestionID from the HIT that is used to identify which question requires Mechanical Turk to score as part of the ScoreMyKnownAnswers/2011-09-01 Review Policy. - */ - Key?: String; - /** - * The list of answers to the question specified in the MapEntry Key element. The Worker must match all values in order for the answer to be scored correctly. - */ - Values?: StringList; - } - export type ParameterMapEntryList = ParameterMapEntry[]; - export interface PolicyParameter { - /** - * Name of the parameter from the list of Review Polices. - */ - Key?: String; - /** - * The list of values of the Parameter - */ - Values?: StringList; - /** - * List of ParameterMapEntry objects. - */ - MapEntries?: ParameterMapEntryList; - } - export type PolicyParameterList = PolicyParameter[]; - export interface Qualification { - /** - * The ID of the Qualification type for the Qualification. - */ - QualificationTypeId?: EntityId; - /** - * The ID of the Worker who possesses the Qualification. - */ - WorkerId?: CustomerId; - /** - * The date and time the Qualification was granted to the Worker. If the Worker's Qualification was revoked, and then re-granted based on a new Qualification request, GrantTime is the date and time of the last call to the AcceptQualificationRequest operation. - */ - GrantTime?: Timestamp; - /** - * The value (score) of the Qualification, if the Qualification has an integer value. - */ - IntegerValue?: Integer; - LocaleValue?: Locale; - /** - * The status of the Qualification. Valid values are Granted | Revoked. - */ - Status?: QualificationStatus; - } - export type QualificationList = Qualification[]; - export interface QualificationRequest { - /** - * The ID of the Qualification request, a unique identifier generated when the request was submitted. - */ - QualificationRequestId?: String; - /** - * The ID of the Qualification type the Worker is requesting, as returned by the CreateQualificationType operation. - */ - QualificationTypeId?: EntityId; - /** - * The ID of the Worker requesting the Qualification. - */ - WorkerId?: CustomerId; - /** - * The contents of the Qualification test that was presented to the Worker, if the type has a test and the Worker has submitted answers. This value is identical to the QuestionForm associated with the Qualification type at the time the Worker requests the Qualification. - */ - Test?: String; - /** - * The Worker's answers for the Qualification type's test contained in a QuestionFormAnswers document, if the type has a test and the Worker has submitted answers. If the Worker does not provide any answers, Answer may be empty. - */ - Answer?: String; - /** - * The date and time the Qualification request had a status of Submitted. This is either the time the Worker submitted answers for a Qualification test, or the time the Worker requested the Qualification if the Qualification type does not have a test. - */ - SubmitTime?: Timestamp; - } - export type QualificationRequestList = QualificationRequest[]; - export interface QualificationRequirement { - /** - * The ID of the Qualification type for the requirement. - */ - QualificationTypeId: String; - /** - * The kind of comparison to make against a Qualification's value. You can compare a Qualification's value to an IntegerValue to see if it is LessThan, LessThanOrEqualTo, GreaterThan, GreaterThanOrEqualTo, EqualTo, or NotEqualTo the IntegerValue. You can compare it to a LocaleValue to see if it is EqualTo, or NotEqualTo the LocaleValue. You can check to see if the value is In or NotIn a set of IntegerValue or LocaleValue values. Lastly, a Qualification requirement can also test if a Qualification Exists or DoesNotExist in the user's profile, regardless of its value. - */ - Comparator: Comparator; - /** - * The integer value to compare against the Qualification's value. IntegerValue must not be present if Comparator is Exists or DoesNotExist. IntegerValue can only be used if the Qualification type has an integer value; it cannot be used with the Worker_Locale QualificationType ID. When performing a set comparison by using the In or the NotIn comparator, you can use up to 15 IntegerValue elements in a QualificationRequirement data structure. - */ - IntegerValues?: IntegerList; - /** - * The locale value to compare against the Qualification's value. The local value must be a valid ISO 3166 country code or supports ISO 3166-2 subdivisions. LocaleValue can only be used with a Worker_Locale QualificationType ID. LocaleValue can only be used with the EqualTo, NotEqualTo, In, and NotIn comparators. You must only use a single LocaleValue element when using the EqualTo or NotEqualTo comparators. When performing a set comparison by using the In or the NotIn comparator, you can use up to 30 LocaleValue elements in a QualificationRequirement data structure. - */ - LocaleValues?: LocaleList; - /** - * If true, the question data for the HIT will not be shown when a Worker whose Qualifications do not meet this requirement tries to preview the HIT. That is, a Worker's Qualifications must meet all of the requirements for which RequiredToPreview is true in order to preview the HIT. If a Worker meets all of the requirements where RequiredToPreview is true (or if there are no such requirements), but does not meet all of the requirements for the HIT, the Worker will be allowed to preview the HIT's question data, but will not be allowed to accept and complete the HIT. The default is false. - */ - RequiredToPreview?: Boolean; - } - export type QualificationRequirementList = QualificationRequirement[]; - export type QualificationStatus = "Granted"|"Revoked"|string; - export interface QualificationType { - /** - * A unique identifier for the Qualification type. A Qualification type is given a Qualification type ID when you call the CreateQualificationType operation. - */ - QualificationTypeId?: EntityId; - /** - * The date and time the Qualification type was created. - */ - CreationTime?: Timestamp; - /** - * The name of the Qualification type. The type name is used to identify the type, and to find the type using a Qualification type search. - */ - Name?: String; - /** - * A long description for the Qualification type. - */ - Description?: String; - /** - * One or more words or phrases that describe theQualification type, separated by commas. The Keywords make the type easier to find using a search. - */ - Keywords?: String; - /** - * The status of the Qualification type. A Qualification type's status determines if users can apply to receive a Qualification of this type, and if HITs can be created with requirements based on this type. Valid values are Active | Inactive. - */ - QualificationTypeStatus?: QualificationTypeStatus; - /** - * The questions for a Qualification test associated with this Qualification type that a user can take to obtain a Qualification of this type. This parameter must be specified if AnswerKey is present. A Qualification type cannot have both a specified Test parameter and an AutoGranted value of true. - */ - Test?: String; - /** - * The amount of time, in seconds, given to a Worker to complete the Qualification test, beginning from the time the Worker requests the Qualification. - */ - TestDurationInSeconds?: Long; - /** - * The answers to the Qualification test specified in the Test parameter. - */ - AnswerKey?: String; - /** - * The amount of time, in seconds, Workers must wait after taking the Qualification test before they can take it again. Workers can take a Qualification test multiple times if they were not granted the Qualification from a previous attempt, or if the test offers a gradient score and they want a better score. If not specified, retries are disabled and Workers can request a Qualification only once. - */ - RetryDelayInSeconds?: Long; - /** - * Specifies whether the Qualification type is one that a user can request through the Amazon Mechanical Turk web site, such as by taking a Qualification test. This value is False for Qualifications assigned automatically by the system. Valid values are True | False. - */ - IsRequestable?: Boolean; - /** - * Specifies that requests for the Qualification type are granted immediately, without prompting the Worker with a Qualification test. Valid values are True | False. - */ - AutoGranted?: Boolean; - /** - * The Qualification integer value to use for automatically granted Qualifications, if AutoGranted is true. This is 1 by default. - */ - AutoGrantedValue?: Integer; - } - export type QualificationTypeList = QualificationType[]; - export type QualificationTypeStatus = "Active"|"Inactive"|string; - export interface RejectAssignmentRequest { - /** - * The ID of the assignment. The assignment must correspond to a HIT created by the Requester. - */ - AssignmentId: EntityId; - /** - * A message for the Worker, which the Worker can see in the Status section of the web site. - */ - RequesterFeedback: String; - } - export interface RejectAssignmentResponse { - } - export interface RejectQualificationRequestRequest { - /** - * The ID of the Qualification request, as returned by the ListQualificationRequests operation. - */ - QualificationRequestId: String; - /** - * A text message explaining why the request was rejected, to be shown to the Worker who made the request. - */ - Reason?: String; - } - export interface RejectQualificationRequestResponse { - } - export type ResultSize = number; - export interface ReviewActionDetail { - /** - * The unique identifier for the action. - */ - ActionId?: EntityId; - /** - * The nature of the action itself. The Review Policy is responsible for examining the HIT and Assignments, emitting results, and deciding which other actions will be necessary. - */ - ActionName?: String; - /** - * The specific HITId or AssignmentID targeted by the action. - */ - TargetId?: EntityId; - /** - * The type of object in TargetId. - */ - TargetType?: String; - /** - * The current disposition of the action: INTENDED, SUCCEEDED, FAILED, or CANCELLED. - */ - Status?: ReviewActionStatus; - /** - * The date when the action was completed. - */ - CompleteTime?: Timestamp; - /** - * A description of the outcome of the review. - */ - Result?: String; - /** - * Present only when the Results have a FAILED Status. - */ - ErrorCode?: String; - } - export type ReviewActionDetailList = ReviewActionDetail[]; - export type ReviewActionStatus = "Intended"|"Succeeded"|"Failed"|"Cancelled"|string; - export interface ReviewPolicy { - /** - * Name of a Review Policy: SimplePlurality/2011-09-01 or ScoreMyKnownAnswers/2011-09-01 - */ - PolicyName: String; - /** - * Name of the parameter from the Review policy. - */ - Parameters?: PolicyParameterList; - } - export type ReviewPolicyLevel = "Assignment"|"HIT"|string; - export type ReviewPolicyLevelList = ReviewPolicyLevel[]; - export interface ReviewReport { - /** - * A list of ReviewResults objects for each action specified in the Review Policy. - */ - ReviewResults?: ReviewResultDetailList; - /** - * A list of ReviewAction objects for each action specified in the Review Policy. - */ - ReviewActions?: ReviewActionDetailList; - } - export interface ReviewResultDetail { - /** - * A unique identifier of the Review action result. - */ - ActionId?: EntityId; - /** - * The HITID or AssignmentId about which this result was taken. Note that HIT-level Review Policies will often emit results about both the HIT itself and its Assignments, while Assignment-level review policies generally only emit results about the Assignment itself. - */ - SubjectId?: EntityId; - /** - * The type of the object from the SubjectId field. - */ - SubjectType?: String; - /** - * Specifies the QuestionId the result is describing. Depending on whether the TargetType is a HIT or Assignment this results could specify multiple values. If TargetType is HIT and QuestionId is absent, then the result describes results of the HIT, including the HIT agreement score. If ObjectType is Assignment and QuestionId is absent, then the result describes the Worker's performance on the HIT. - */ - QuestionId?: EntityId; - /** - * Key identifies the particular piece of reviewed information. - */ - Key?: String; - /** - * The values of Key provided by the review policies you have selected. - */ - Value?: String; - } - export type ReviewResultDetailList = ReviewResultDetail[]; - export type ReviewableHITStatus = "Reviewable"|"Reviewing"|string; - export interface SendBonusRequest { - /** - * The ID of the Worker being paid the bonus. - */ - WorkerId: CustomerId; - /** - * The Bonus amount is a US Dollar amount specified using a string (for example, "5" represents $5.00 USD and "101.42" represents $101.42 USD). Do not include currency symbols or currency codes. - */ - BonusAmount: CurrencyAmount; - /** - * The ID of the assignment for which this bonus is paid. - */ - AssignmentId: EntityId; - /** - * A message that explains the reason for the bonus payment. The Worker receiving the bonus can see this message. - */ - Reason: String; - /** - * A unique identifier for this request, which allows you to retry the call on error without granting multiple bonuses. This is useful in cases such as network timeouts where it is unclear whether or not the call succeeded on the server. If the bonus already exists in the system from a previous call using the same UniqueRequestToken, subsequent calls will return an error with a message containing the request ID. - */ - UniqueRequestToken?: IdempotencyToken; - } - export interface SendBonusResponse { - } - export interface SendTestEventNotificationRequest { - /** - * The notification specification to test. This value is identical to the value you would provide to the UpdateNotificationSettings operation when you establish the notification specification for a HIT type. - */ - Notification: NotificationSpecification; - /** - * The event to simulate to test the notification specification. This event is included in the test message even if the notification specification does not include the event type. The notification specification does not filter out the test event. - */ - TestEventType: EventType; - } - export interface SendTestEventNotificationResponse { - } - export type String = string; - export type StringList = String[]; - export type Timestamp = Date; - export type TurkErrorCode = string; - export interface UpdateExpirationForHITRequest { - /** - * The HIT to update. - */ - HITId: EntityId; - /** - * The date and time at which you want the HIT to expire - */ - ExpireAt: Timestamp; - } - export interface UpdateExpirationForHITResponse { - } - export interface UpdateHITReviewStatusRequest { - /** - * The ID of the HIT to update. - */ - HITId: EntityId; - /** - * Specifies how to update the HIT status. Default is False. Setting this to false will only transition a HIT from Reviewable to Reviewing Setting this to true will only transition a HIT from Reviewing to Reviewable - */ - Revert?: Boolean; - } - export interface UpdateHITReviewStatusResponse { - } - export interface UpdateHITTypeOfHITRequest { - /** - * The HIT to update. - */ - HITId: EntityId; - /** - * The ID of the new HIT type. - */ - HITTypeId: EntityId; - } - export interface UpdateHITTypeOfHITResponse { - } - export interface UpdateNotificationSettingsRequest { - /** - * The ID of the HIT type whose notification specification is being updated. - */ - HITTypeId: EntityId; - /** - * The notification specification for the HIT type. - */ - Notification?: NotificationSpecification; - /** - * Specifies whether notifications are sent for HITs of this HIT type, according to the notification specification. You must specify either the Notification parameter or the Active parameter for the call to UpdateNotificationSettings to succeed. - */ - Active?: Boolean; - } - export interface UpdateNotificationSettingsResponse { - } - export interface UpdateQualificationTypeRequest { - /** - * The ID of the Qualification type to update. - */ - QualificationTypeId: EntityId; - /** - * The new description of the Qualification type. - */ - Description?: String; - /** - * The new status of the Qualification type - Active | Inactive - */ - QualificationTypeStatus?: QualificationTypeStatus; - /** - * The questions for the Qualification test a Worker must answer correctly to obtain a Qualification of this type. If this parameter is specified, TestDurationInSeconds must also be specified. Constraints: Must not be longer than 65535 bytes. Must be a QuestionForm data structure. This parameter cannot be specified if AutoGranted is true. Constraints: None. If not specified, the Worker may request the Qualification without answering any questions. - */ - Test?: String; - /** - * The answers to the Qualification test specified in the Test parameter, in the form of an AnswerKey data structure. - */ - AnswerKey?: String; - /** - * The number of seconds the Worker has to complete the Qualification test, starting from the time the Worker requests the Qualification. - */ - TestDurationInSeconds?: Long; - /** - * The amount of time, in seconds, that Workers must wait after requesting a Qualification of the specified Qualification type before they can retry the Qualification request. It is not possible to disable retries for a Qualification type after it has been created with retries enabled. If you want to disable retries, you must dispose of the existing retry-enabled Qualification type using DisposeQualificationType and then create a new Qualification type with retries disabled using CreateQualificationType. - */ - RetryDelayInSeconds?: Long; - /** - * Specifies whether requests for the Qualification type are granted immediately, without prompting the Worker with a Qualification test. Constraints: If the Test parameter is specified, this parameter cannot be true. - */ - AutoGranted?: Boolean; - /** - * The Qualification value to use for automatically granted Qualifications. This parameter is used only if the AutoGranted parameter is true. - */ - AutoGrantedValue?: Integer; - } - export interface UpdateQualificationTypeResponse { - /** - * Contains a QualificationType data structure. - */ - QualificationType?: QualificationType; - } - export interface WorkerBlock { - /** - * The ID of the Worker who accepted the HIT. - */ - WorkerId?: CustomerId; - /** - * A message explaining the reason the Worker was blocked. - */ - Reason?: String; - } - export type WorkerBlockList = WorkerBlock[]; - /** - * A string in YYYY-MM-DD format that represents the latest possible API version that can be used in this service. Specify 'latest' to use the latest possible version. - */ - export type apiVersion = "2017-01-17"|"latest"|string; - export interface ClientApiVersions { - /** - * A string in YYYY-MM-DD format that represents the latest possible API version that can be used in this service. Specify 'latest' to use the latest possible version. - */ - apiVersion?: apiVersion; - } - export type ClientConfiguration = ServiceConfigurationOptions & ClientApiVersions; - /** - * Contains interfaces for use with the MTurk client. - */ - export import Types = MTurk; -} -export = MTurk; diff --git a/workshops/monte-carlo-on-ec2-spot-fleet/src/web/node_modules/aws-sdk/clients/mturk.js b/workshops/monte-carlo-on-ec2-spot-fleet/src/web/node_modules/aws-sdk/clients/mturk.js deleted file mode 100644 index 814c5ecd..00000000 --- a/workshops/monte-carlo-on-ec2-spot-fleet/src/web/node_modules/aws-sdk/clients/mturk.js +++ /dev/null @@ -1,18 +0,0 @@ -require('../lib/node_loader'); -var AWS = require('../lib/core'); -var Service = AWS.Service; -var apiLoader = AWS.apiLoader; - -apiLoader.services['mturk'] = {}; -AWS.MTurk = Service.defineService('mturk', ['2017-01-17']); -Object.defineProperty(apiLoader.services['mturk'], '2017-01-17', { - get: function get() { - var model = require('../apis/mturk-requester-2017-01-17.min.json'); - model.paginators = require('../apis/mturk-requester-2017-01-17.paginators.json').pagination; - return model; - }, - enumerable: true, - configurable: true -}); - -module.exports = AWS.MTurk; diff --git a/workshops/monte-carlo-on-ec2-spot-fleet/src/web/node_modules/aws-sdk/clients/opsworks.d.ts b/workshops/monte-carlo-on-ec2-spot-fleet/src/web/node_modules/aws-sdk/clients/opsworks.d.ts deleted file mode 100644 index 60ebf5e3..00000000 --- a/workshops/monte-carlo-on-ec2-spot-fleet/src/web/node_modules/aws-sdk/clients/opsworks.d.ts +++ /dev/null @@ -1,3513 +0,0 @@ -import {Request} from '../lib/request'; -import {Response} from '../lib/response'; -import {AWSError} from '../lib/error'; -import {Service} from '../lib/service'; -import {ServiceConfigurationOptions} from '../lib/service'; -import {ConfigBase as Config} from '../lib/config'; -interface Blob {} -declare class OpsWorks extends Service { - /** - * Constructs a service object. This object has one method for each API operation. - */ - constructor(options?: OpsWorks.Types.ClientConfiguration) - config: Config & OpsWorks.Types.ClientConfiguration; - /** - * Assign a registered instance to a layer. You can assign registered on-premises instances to any layer type. You can assign registered Amazon EC2 instances only to custom layers. You cannot use this action with instances that were created with AWS OpsWorks Stacks. Required Permissions: To use this action, an AWS Identity and Access Management (IAM) user must have a Manage permissions level for the stack or an attached policy that explicitly grants permissions. For more information on user permissions, see Managing User Permissions. - */ - assignInstance(params: OpsWorks.Types.AssignInstanceRequest, callback?: (err: AWSError, data: {}) => void): Request<{}, AWSError>; - /** - * Assign a registered instance to a layer. You can assign registered on-premises instances to any layer type. You can assign registered Amazon EC2 instances only to custom layers. You cannot use this action with instances that were created with AWS OpsWorks Stacks. Required Permissions: To use this action, an AWS Identity and Access Management (IAM) user must have a Manage permissions level for the stack or an attached policy that explicitly grants permissions. For more information on user permissions, see Managing User Permissions. - */ - assignInstance(callback?: (err: AWSError, data: {}) => void): Request<{}, AWSError>; - /** - * Assigns one of the stack's registered Amazon EBS volumes to a specified instance. The volume must first be registered with the stack by calling RegisterVolume. After you register the volume, you must call UpdateVolume to specify a mount point before calling AssignVolume. For more information, see Resource Management. Required Permissions: To use this action, an IAM user must have a Manage permissions level for the stack, or an attached policy that explicitly grants permissions. For more information on user permissions, see Managing User Permissions. - */ - assignVolume(params: OpsWorks.Types.AssignVolumeRequest, callback?: (err: AWSError, data: {}) => void): Request<{}, AWSError>; - /** - * Assigns one of the stack's registered Amazon EBS volumes to a specified instance. The volume must first be registered with the stack by calling RegisterVolume. After you register the volume, you must call UpdateVolume to specify a mount point before calling AssignVolume. For more information, see Resource Management. Required Permissions: To use this action, an IAM user must have a Manage permissions level for the stack, or an attached policy that explicitly grants permissions. For more information on user permissions, see Managing User Permissions. - */ - assignVolume(callback?: (err: AWSError, data: {}) => void): Request<{}, AWSError>; - /** - * Associates one of the stack's registered Elastic IP addresses with a specified instance. The address must first be registered with the stack by calling RegisterElasticIp. For more information, see Resource Management. Required Permissions: To use this action, an IAM user must have a Manage permissions level for the stack, or an attached policy that explicitly grants permissions. For more information on user permissions, see Managing User Permissions. - */ - associateElasticIp(params: OpsWorks.Types.AssociateElasticIpRequest, callback?: (err: AWSError, data: {}) => void): Request<{}, AWSError>; - /** - * Associates one of the stack's registered Elastic IP addresses with a specified instance. The address must first be registered with the stack by calling RegisterElasticIp. For more information, see Resource Management. Required Permissions: To use this action, an IAM user must have a Manage permissions level for the stack, or an attached policy that explicitly grants permissions. For more information on user permissions, see Managing User Permissions. - */ - associateElasticIp(callback?: (err: AWSError, data: {}) => void): Request<{}, AWSError>; - /** - * Attaches an Elastic Load Balancing load balancer to a specified layer. AWS OpsWorks Stacks does not support Application Load Balancer. You can only use Classic Load Balancer with AWS OpsWorks Stacks. For more information, see Elastic Load Balancing. You must create the Elastic Load Balancing instance separately, by using the Elastic Load Balancing console, API, or CLI. For more information, see Elastic Load Balancing Developer Guide. Required Permissions: To use this action, an IAM user must have a Manage permissions level for the stack, or an attached policy that explicitly grants permissions. For more information on user permissions, see Managing User Permissions. - */ - attachElasticLoadBalancer(params: OpsWorks.Types.AttachElasticLoadBalancerRequest, callback?: (err: AWSError, data: {}) => void): Request<{}, AWSError>; - /** - * Attaches an Elastic Load Balancing load balancer to a specified layer. AWS OpsWorks Stacks does not support Application Load Balancer. You can only use Classic Load Balancer with AWS OpsWorks Stacks. For more information, see Elastic Load Balancing. You must create the Elastic Load Balancing instance separately, by using the Elastic Load Balancing console, API, or CLI. For more information, see Elastic Load Balancing Developer Guide. Required Permissions: To use this action, an IAM user must have a Manage permissions level for the stack, or an attached policy that explicitly grants permissions. For more information on user permissions, see Managing User Permissions. - */ - attachElasticLoadBalancer(callback?: (err: AWSError, data: {}) => void): Request<{}, AWSError>; - /** - * Creates a clone of a specified stack. For more information, see Clone a Stack. By default, all parameters are set to the values used by the parent stack. Required Permissions: To use this action, an IAM user must have an attached policy that explicitly grants permissions. For more information on user permissions, see Managing User Permissions. - */ - cloneStack(params: OpsWorks.Types.CloneStackRequest, callback?: (err: AWSError, data: OpsWorks.Types.CloneStackResult) => void): Request; - /** - * Creates a clone of a specified stack. For more information, see Clone a Stack. By default, all parameters are set to the values used by the parent stack. Required Permissions: To use this action, an IAM user must have an attached policy that explicitly grants permissions. For more information on user permissions, see Managing User Permissions. - */ - cloneStack(callback?: (err: AWSError, data: OpsWorks.Types.CloneStackResult) => void): Request; - /** - * Creates an app for a specified stack. For more information, see Creating Apps. Required Permissions: To use this action, an IAM user must have a Manage permissions level for the stack, or an attached policy that explicitly grants permissions. For more information on user permissions, see Managing User Permissions. - */ - createApp(params: OpsWorks.Types.CreateAppRequest, callback?: (err: AWSError, data: OpsWorks.Types.CreateAppResult) => void): Request; - /** - * Creates an app for a specified stack. For more information, see Creating Apps. Required Permissions: To use this action, an IAM user must have a Manage permissions level for the stack, or an attached policy that explicitly grants permissions. For more information on user permissions, see Managing User Permissions. - */ - createApp(callback?: (err: AWSError, data: OpsWorks.Types.CreateAppResult) => void): Request; - /** - * Runs deployment or stack commands. For more information, see Deploying Apps and Run Stack Commands. Required Permissions: To use this action, an IAM user must have a Deploy or Manage permissions level for the stack, or an attached policy that explicitly grants permissions. For more information on user permissions, see Managing User Permissions. - */ - createDeployment(params: OpsWorks.Types.CreateDeploymentRequest, callback?: (err: AWSError, data: OpsWorks.Types.CreateDeploymentResult) => void): Request; - /** - * Runs deployment or stack commands. For more information, see Deploying Apps and Run Stack Commands. Required Permissions: To use this action, an IAM user must have a Deploy or Manage permissions level for the stack, or an attached policy that explicitly grants permissions. For more information on user permissions, see Managing User Permissions. - */ - createDeployment(callback?: (err: AWSError, data: OpsWorks.Types.CreateDeploymentResult) => void): Request; - /** - * Creates an instance in a specified stack. For more information, see Adding an Instance to a Layer. Required Permissions: To use this action, an IAM user must have a Manage permissions level for the stack, or an attached policy that explicitly grants permissions. For more information on user permissions, see Managing User Permissions. - */ - createInstance(params: OpsWorks.Types.CreateInstanceRequest, callback?: (err: AWSError, data: OpsWorks.Types.CreateInstanceResult) => void): Request; - /** - * Creates an instance in a specified stack. For more information, see Adding an Instance to a Layer. Required Permissions: To use this action, an IAM user must have a Manage permissions level for the stack, or an attached policy that explicitly grants permissions. For more information on user permissions, see Managing User Permissions. - */ - createInstance(callback?: (err: AWSError, data: OpsWorks.Types.CreateInstanceResult) => void): Request; - /** - * Creates a layer. For more information, see How to Create a Layer. You should use CreateLayer for noncustom layer types such as PHP App Server only if the stack does not have an existing layer of that type. A stack can have at most one instance of each noncustom layer; if you attempt to create a second instance, CreateLayer fails. A stack can have an arbitrary number of custom layers, so you can call CreateLayer as many times as you like for that layer type. Required Permissions: To use this action, an IAM user must have a Manage permissions level for the stack, or an attached policy that explicitly grants permissions. For more information on user permissions, see Managing User Permissions. - */ - createLayer(params: OpsWorks.Types.CreateLayerRequest, callback?: (err: AWSError, data: OpsWorks.Types.CreateLayerResult) => void): Request; - /** - * Creates a layer. For more information, see How to Create a Layer. You should use CreateLayer for noncustom layer types such as PHP App Server only if the stack does not have an existing layer of that type. A stack can have at most one instance of each noncustom layer; if you attempt to create a second instance, CreateLayer fails. A stack can have an arbitrary number of custom layers, so you can call CreateLayer as many times as you like for that layer type. Required Permissions: To use this action, an IAM user must have a Manage permissions level for the stack, or an attached policy that explicitly grants permissions. For more information on user permissions, see Managing User Permissions. - */ - createLayer(callback?: (err: AWSError, data: OpsWorks.Types.CreateLayerResult) => void): Request; - /** - * Creates a new stack. For more information, see Create a New Stack. Required Permissions: To use this action, an IAM user must have an attached policy that explicitly grants permissions. For more information on user permissions, see Managing User Permissions. - */ - createStack(params: OpsWorks.Types.CreateStackRequest, callback?: (err: AWSError, data: OpsWorks.Types.CreateStackResult) => void): Request; - /** - * Creates a new stack. For more information, see Create a New Stack. Required Permissions: To use this action, an IAM user must have an attached policy that explicitly grants permissions. For more information on user permissions, see Managing User Permissions. - */ - createStack(callback?: (err: AWSError, data: OpsWorks.Types.CreateStackResult) => void): Request; - /** - * Creates a new user profile. Required Permissions: To use this action, an IAM user must have an attached policy that explicitly grants permissions. For more information on user permissions, see Managing User Permissions. - */ - createUserProfile(params: OpsWorks.Types.CreateUserProfileRequest, callback?: (err: AWSError, data: OpsWorks.Types.CreateUserProfileResult) => void): Request; - /** - * Creates a new user profile. Required Permissions: To use this action, an IAM user must have an attached policy that explicitly grants permissions. For more information on user permissions, see Managing User Permissions. - */ - createUserProfile(callback?: (err: AWSError, data: OpsWorks.Types.CreateUserProfileResult) => void): Request; - /** - * Deletes a specified app. Required Permissions: To use this action, an IAM user must have a Manage permissions level for the stack, or an attached policy that explicitly grants permissions. For more information on user permissions, see Managing User Permissions. - */ - deleteApp(params: OpsWorks.Types.DeleteAppRequest, callback?: (err: AWSError, data: {}) => void): Request<{}, AWSError>; - /** - * Deletes a specified app. Required Permissions: To use this action, an IAM user must have a Manage permissions level for the stack, or an attached policy that explicitly grants permissions. For more information on user permissions, see Managing User Permissions. - */ - deleteApp(callback?: (err: AWSError, data: {}) => void): Request<{}, AWSError>; - /** - * Deletes a specified instance, which terminates the associated Amazon EC2 instance. You must stop an instance before you can delete it. For more information, see Deleting Instances. Required Permissions: To use this action, an IAM user must have a Manage permissions level for the stack, or an attached policy that explicitly grants permissions. For more information on user permissions, see Managing User Permissions. - */ - deleteInstance(params: OpsWorks.Types.DeleteInstanceRequest, callback?: (err: AWSError, data: {}) => void): Request<{}, AWSError>; - /** - * Deletes a specified instance, which terminates the associated Amazon EC2 instance. You must stop an instance before you can delete it. For more information, see Deleting Instances. Required Permissions: To use this action, an IAM user must have a Manage permissions level for the stack, or an attached policy that explicitly grants permissions. For more information on user permissions, see Managing User Permissions. - */ - deleteInstance(callback?: (err: AWSError, data: {}) => void): Request<{}, AWSError>; - /** - * Deletes a specified layer. You must first stop and then delete all associated instances or unassign registered instances. For more information, see How to Delete a Layer. Required Permissions: To use this action, an IAM user must have a Manage permissions level for the stack, or an attached policy that explicitly grants permissions. For more information on user permissions, see Managing User Permissions. - */ - deleteLayer(params: OpsWorks.Types.DeleteLayerRequest, callback?: (err: AWSError, data: {}) => void): Request<{}, AWSError>; - /** - * Deletes a specified layer. You must first stop and then delete all associated instances or unassign registered instances. For more information, see How to Delete a Layer. Required Permissions: To use this action, an IAM user must have a Manage permissions level for the stack, or an attached policy that explicitly grants permissions. For more information on user permissions, see Managing User Permissions. - */ - deleteLayer(callback?: (err: AWSError, data: {}) => void): Request<{}, AWSError>; - /** - * Deletes a specified stack. You must first delete all instances, layers, and apps or deregister registered instances. For more information, see Shut Down a Stack. Required Permissions: To use this action, an IAM user must have a Manage permissions level for the stack, or an attached policy that explicitly grants permissions. For more information on user permissions, see Managing User Permissions. - */ - deleteStack(params: OpsWorks.Types.DeleteStackRequest, callback?: (err: AWSError, data: {}) => void): Request<{}, AWSError>; - /** - * Deletes a specified stack. You must first delete all instances, layers, and apps or deregister registered instances. For more information, see Shut Down a Stack. Required Permissions: To use this action, an IAM user must have a Manage permissions level for the stack, or an attached policy that explicitly grants permissions. For more information on user permissions, see Managing User Permissions. - */ - deleteStack(callback?: (err: AWSError, data: {}) => void): Request<{}, AWSError>; - /** - * Deletes a user profile. Required Permissions: To use this action, an IAM user must have an attached policy that explicitly grants permissions. For more information on user permissions, see Managing User Permissions. - */ - deleteUserProfile(params: OpsWorks.Types.DeleteUserProfileRequest, callback?: (err: AWSError, data: {}) => void): Request<{}, AWSError>; - /** - * Deletes a user profile. Required Permissions: To use this action, an IAM user must have an attached policy that explicitly grants permissions. For more information on user permissions, see Managing User Permissions. - */ - deleteUserProfile(callback?: (err: AWSError, data: {}) => void): Request<{}, AWSError>; - /** - * Deregisters a specified Amazon ECS cluster from a stack. For more information, see Resource Management. Required Permissions: To use this action, an IAM user must have a Manage permissions level for the stack or an attached policy that explicitly grants permissions. For more information on user permissions, see http://docs.aws.amazon.com/opsworks/latest/userguide/opsworks-security-users.html. - */ - deregisterEcsCluster(params: OpsWorks.Types.DeregisterEcsClusterRequest, callback?: (err: AWSError, data: {}) => void): Request<{}, AWSError>; - /** - * Deregisters a specified Amazon ECS cluster from a stack. For more information, see Resource Management. Required Permissions: To use this action, an IAM user must have a Manage permissions level for the stack or an attached policy that explicitly grants permissions. For more information on user permissions, see http://docs.aws.amazon.com/opsworks/latest/userguide/opsworks-security-users.html. - */ - deregisterEcsCluster(callback?: (err: AWSError, data: {}) => void): Request<{}, AWSError>; - /** - * Deregisters a specified Elastic IP address. The address can then be registered by another stack. For more information, see Resource Management. Required Permissions: To use this action, an IAM user must have a Manage permissions level for the stack, or an attached policy that explicitly grants permissions. For more information on user permissions, see Managing User Permissions. - */ - deregisterElasticIp(params: OpsWorks.Types.DeregisterElasticIpRequest, callback?: (err: AWSError, data: {}) => void): Request<{}, AWSError>; - /** - * Deregisters a specified Elastic IP address. The address can then be registered by another stack. For more information, see Resource Management. Required Permissions: To use this action, an IAM user must have a Manage permissions level for the stack, or an attached policy that explicitly grants permissions. For more information on user permissions, see Managing User Permissions. - */ - deregisterElasticIp(callback?: (err: AWSError, data: {}) => void): Request<{}, AWSError>; - /** - * Deregister a registered Amazon EC2 or on-premises instance. This action removes the instance from the stack and returns it to your control. This action can not be used with instances that were created with AWS OpsWorks Stacks. Required Permissions: To use this action, an IAM user must have a Manage permissions level for the stack or an attached policy that explicitly grants permissions. For more information on user permissions, see Managing User Permissions. - */ - deregisterInstance(params: OpsWorks.Types.DeregisterInstanceRequest, callback?: (err: AWSError, data: {}) => void): Request<{}, AWSError>; - /** - * Deregister a registered Amazon EC2 or on-premises instance. This action removes the instance from the stack and returns it to your control. This action can not be used with instances that were created with AWS OpsWorks Stacks. Required Permissions: To use this action, an IAM user must have a Manage permissions level for the stack or an attached policy that explicitly grants permissions. For more information on user permissions, see Managing User Permissions. - */ - deregisterInstance(callback?: (err: AWSError, data: {}) => void): Request<{}, AWSError>; - /** - * Deregisters an Amazon RDS instance. Required Permissions: To use this action, an IAM user must have a Manage permissions level for the stack, or an attached policy that explicitly grants permissions. For more information on user permissions, see Managing User Permissions. - */ - deregisterRdsDbInstance(params: OpsWorks.Types.DeregisterRdsDbInstanceRequest, callback?: (err: AWSError, data: {}) => void): Request<{}, AWSError>; - /** - * Deregisters an Amazon RDS instance. Required Permissions: To use this action, an IAM user must have a Manage permissions level for the stack, or an attached policy that explicitly grants permissions. For more information on user permissions, see Managing User Permissions. - */ - deregisterRdsDbInstance(callback?: (err: AWSError, data: {}) => void): Request<{}, AWSError>; - /** - * Deregisters an Amazon EBS volume. The volume can then be registered by another stack. For more information, see Resource Management. Required Permissions: To use this action, an IAM user must have a Manage permissions level for the stack, or an attached policy that explicitly grants permissions. For more information on user permissions, see Managing User Permissions. - */ - deregisterVolume(params: OpsWorks.Types.DeregisterVolumeRequest, callback?: (err: AWSError, data: {}) => void): Request<{}, AWSError>; - /** - * Deregisters an Amazon EBS volume. The volume can then be registered by another stack. For more information, see Resource Management. Required Permissions: To use this action, an IAM user must have a Manage permissions level for the stack, or an attached policy that explicitly grants permissions. For more information on user permissions, see Managing User Permissions. - */ - deregisterVolume(callback?: (err: AWSError, data: {}) => void): Request<{}, AWSError>; - /** - * Describes the available AWS OpsWorks Stacks agent versions. You must specify a stack ID or a configuration manager. DescribeAgentVersions returns a list of available agent versions for the specified stack or configuration manager. - */ - describeAgentVersions(params: OpsWorks.Types.DescribeAgentVersionsRequest, callback?: (err: AWSError, data: OpsWorks.Types.DescribeAgentVersionsResult) => void): Request; - /** - * Describes the available AWS OpsWorks Stacks agent versions. You must specify a stack ID or a configuration manager. DescribeAgentVersions returns a list of available agent versions for the specified stack or configuration manager. - */ - describeAgentVersions(callback?: (err: AWSError, data: OpsWorks.Types.DescribeAgentVersionsResult) => void): Request; - /** - * Requests a description of a specified set of apps. This call accepts only one resource-identifying parameter. Required Permissions: To use this action, an IAM user must have a Show, Deploy, or Manage permissions level for the stack, or an attached policy that explicitly grants permissions. For more information on user permissions, see Managing User Permissions. - */ - describeApps(params: OpsWorks.Types.DescribeAppsRequest, callback?: (err: AWSError, data: OpsWorks.Types.DescribeAppsResult) => void): Request; - /** - * Requests a description of a specified set of apps. This call accepts only one resource-identifying parameter. Required Permissions: To use this action, an IAM user must have a Show, Deploy, or Manage permissions level for the stack, or an attached policy that explicitly grants permissions. For more information on user permissions, see Managing User Permissions. - */ - describeApps(callback?: (err: AWSError, data: OpsWorks.Types.DescribeAppsResult) => void): Request; - /** - * Describes the results of specified commands. This call accepts only one resource-identifying parameter. Required Permissions: To use this action, an IAM user must have a Show, Deploy, or Manage permissions level for the stack, or an attached policy that explicitly grants permissions. For more information on user permissions, see Managing User Permissions. - */ - describeCommands(params: OpsWorks.Types.DescribeCommandsRequest, callback?: (err: AWSError, data: OpsWorks.Types.DescribeCommandsResult) => void): Request; - /** - * Describes the results of specified commands. This call accepts only one resource-identifying parameter. Required Permissions: To use this action, an IAM user must have a Show, Deploy, or Manage permissions level for the stack, or an attached policy that explicitly grants permissions. For more information on user permissions, see Managing User Permissions. - */ - describeCommands(callback?: (err: AWSError, data: OpsWorks.Types.DescribeCommandsResult) => void): Request; - /** - * Requests a description of a specified set of deployments. This call accepts only one resource-identifying parameter. Required Permissions: To use this action, an IAM user must have a Show, Deploy, or Manage permissions level for the stack, or an attached policy that explicitly grants permissions. For more information on user permissions, see Managing User Permissions. - */ - describeDeployments(params: OpsWorks.Types.DescribeDeploymentsRequest, callback?: (err: AWSError, data: OpsWorks.Types.DescribeDeploymentsResult) => void): Request; - /** - * Requests a description of a specified set of deployments. This call accepts only one resource-identifying parameter. Required Permissions: To use this action, an IAM user must have a Show, Deploy, or Manage permissions level for the stack, or an attached policy that explicitly grants permissions. For more information on user permissions, see Managing User Permissions. - */ - describeDeployments(callback?: (err: AWSError, data: OpsWorks.Types.DescribeDeploymentsResult) => void): Request; - /** - * Describes Amazon ECS clusters that are registered with a stack. If you specify only a stack ID, you can use the MaxResults and NextToken parameters to paginate the response. However, AWS OpsWorks Stacks currently supports only one cluster per layer, so the result set has a maximum of one element. Required Permissions: To use this action, an IAM user must have a Show, Deploy, or Manage permissions level for the stack or an attached policy that explicitly grants permission. For more information on user permissions, see Managing User Permissions. This call accepts only one resource-identifying parameter. - */ - describeEcsClusters(params: OpsWorks.Types.DescribeEcsClustersRequest, callback?: (err: AWSError, data: OpsWorks.Types.DescribeEcsClustersResult) => void): Request; - /** - * Describes Amazon ECS clusters that are registered with a stack. If you specify only a stack ID, you can use the MaxResults and NextToken parameters to paginate the response. However, AWS OpsWorks Stacks currently supports only one cluster per layer, so the result set has a maximum of one element. Required Permissions: To use this action, an IAM user must have a Show, Deploy, or Manage permissions level for the stack or an attached policy that explicitly grants permission. For more information on user permissions, see Managing User Permissions. This call accepts only one resource-identifying parameter. - */ - describeEcsClusters(callback?: (err: AWSError, data: OpsWorks.Types.DescribeEcsClustersResult) => void): Request; - /** - * Describes Elastic IP addresses. This call accepts only one resource-identifying parameter. Required Permissions: To use this action, an IAM user must have a Show, Deploy, or Manage permissions level for the stack, or an attached policy that explicitly grants permissions. For more information on user permissions, see Managing User Permissions. - */ - describeElasticIps(params: OpsWorks.Types.DescribeElasticIpsRequest, callback?: (err: AWSError, data: OpsWorks.Types.DescribeElasticIpsResult) => void): Request; - /** - * Describes Elastic IP addresses. This call accepts only one resource-identifying parameter. Required Permissions: To use this action, an IAM user must have a Show, Deploy, or Manage permissions level for the stack, or an attached policy that explicitly grants permissions. For more information on user permissions, see Managing User Permissions. - */ - describeElasticIps(callback?: (err: AWSError, data: OpsWorks.Types.DescribeElasticIpsResult) => void): Request; - /** - * Describes a stack's Elastic Load Balancing instances. This call accepts only one resource-identifying parameter. Required Permissions: To use this action, an IAM user must have a Show, Deploy, or Manage permissions level for the stack, or an attached policy that explicitly grants permissions. For more information on user permissions, see Managing User Permissions. - */ - describeElasticLoadBalancers(params: OpsWorks.Types.DescribeElasticLoadBalancersRequest, callback?: (err: AWSError, data: OpsWorks.Types.DescribeElasticLoadBalancersResult) => void): Request; - /** - * Describes a stack's Elastic Load Balancing instances. This call accepts only one resource-identifying parameter. Required Permissions: To use this action, an IAM user must have a Show, Deploy, or Manage permissions level for the stack, or an attached policy that explicitly grants permissions. For more information on user permissions, see Managing User Permissions. - */ - describeElasticLoadBalancers(callback?: (err: AWSError, data: OpsWorks.Types.DescribeElasticLoadBalancersResult) => void): Request; - /** - * Requests a description of a set of instances. This call accepts only one resource-identifying parameter. Required Permissions: To use this action, an IAM user must have a Show, Deploy, or Manage permissions level for the stack, or an attached policy that explicitly grants permissions. For more information on user permissions, see Managing User Permissions. - */ - describeInstances(params: OpsWorks.Types.DescribeInstancesRequest, callback?: (err: AWSError, data: OpsWorks.Types.DescribeInstancesResult) => void): Request; - /** - * Requests a description of a set of instances. This call accepts only one resource-identifying parameter. Required Permissions: To use this action, an IAM user must have a Show, Deploy, or Manage permissions level for the stack, or an attached policy that explicitly grants permissions. For more information on user permissions, see Managing User Permissions. - */ - describeInstances(callback?: (err: AWSError, data: OpsWorks.Types.DescribeInstancesResult) => void): Request; - /** - * Requests a description of one or more layers in a specified stack. This call accepts only one resource-identifying parameter. Required Permissions: To use this action, an IAM user must have a Show, Deploy, or Manage permissions level for the stack, or an attached policy that explicitly grants permissions. For more information on user permissions, see Managing User Permissions. - */ - describeLayers(params: OpsWorks.Types.DescribeLayersRequest, callback?: (err: AWSError, data: OpsWorks.Types.DescribeLayersResult) => void): Request; - /** - * Requests a description of one or more layers in a specified stack. This call accepts only one resource-identifying parameter. Required Permissions: To use this action, an IAM user must have a Show, Deploy, or Manage permissions level for the stack, or an attached policy that explicitly grants permissions. For more information on user permissions, see Managing User Permissions. - */ - describeLayers(callback?: (err: AWSError, data: OpsWorks.Types.DescribeLayersResult) => void): Request; - /** - * Describes load-based auto scaling configurations for specified layers. You must specify at least one of the parameters. Required Permissions: To use this action, an IAM user must have a Show, Deploy, or Manage permissions level for the stack, or an attached policy that explicitly grants permissions. For more information on user permissions, see Managing User Permissions. - */ - describeLoadBasedAutoScaling(params: OpsWorks.Types.DescribeLoadBasedAutoScalingRequest, callback?: (err: AWSError, data: OpsWorks.Types.DescribeLoadBasedAutoScalingResult) => void): Request; - /** - * Describes load-based auto scaling configurations for specified layers. You must specify at least one of the parameters. Required Permissions: To use this action, an IAM user must have a Show, Deploy, or Manage permissions level for the stack, or an attached policy that explicitly grants permissions. For more information on user permissions, see Managing User Permissions. - */ - describeLoadBasedAutoScaling(callback?: (err: AWSError, data: OpsWorks.Types.DescribeLoadBasedAutoScalingResult) => void): Request; - /** - * Describes a user's SSH information. Required Permissions: To use this action, an IAM user must have self-management enabled or an attached policy that explicitly grants permissions. For more information on user permissions, see Managing User Permissions. - */ - describeMyUserProfile(callback?: (err: AWSError, data: OpsWorks.Types.DescribeMyUserProfileResult) => void): Request; - /** - * Describes the permissions for a specified stack. Required Permissions: To use this action, an IAM user must have a Manage permissions level for the stack, or an attached policy that explicitly grants permissions. For more information on user permissions, see Managing User Permissions. - */ - describePermissions(params: OpsWorks.Types.DescribePermissionsRequest, callback?: (err: AWSError, data: OpsWorks.Types.DescribePermissionsResult) => void): Request; - /** - * Describes the permissions for a specified stack. Required Permissions: To use this action, an IAM user must have a Manage permissions level for the stack, or an attached policy that explicitly grants permissions. For more information on user permissions, see Managing User Permissions. - */ - describePermissions(callback?: (err: AWSError, data: OpsWorks.Types.DescribePermissionsResult) => void): Request; - /** - * Describe an instance's RAID arrays. This call accepts only one resource-identifying parameter. Required Permissions: To use this action, an IAM user must have a Show, Deploy, or Manage permissions level for the stack, or an attached policy that explicitly grants permissions. For more information on user permissions, see Managing User Permissions. - */ - describeRaidArrays(params: OpsWorks.Types.DescribeRaidArraysRequest, callback?: (err: AWSError, data: OpsWorks.Types.DescribeRaidArraysResult) => void): Request; - /** - * Describe an instance's RAID arrays. This call accepts only one resource-identifying parameter. Required Permissions: To use this action, an IAM user must have a Show, Deploy, or Manage permissions level for the stack, or an attached policy that explicitly grants permissions. For more information on user permissions, see Managing User Permissions. - */ - describeRaidArrays(callback?: (err: AWSError, data: OpsWorks.Types.DescribeRaidArraysResult) => void): Request; - /** - * Describes Amazon RDS instances. Required Permissions: To use this action, an IAM user must have a Show, Deploy, or Manage permissions level for the stack, or an attached policy that explicitly grants permissions. For more information on user permissions, see Managing User Permissions. This call accepts only one resource-identifying parameter. - */ - describeRdsDbInstances(params: OpsWorks.Types.DescribeRdsDbInstancesRequest, callback?: (err: AWSError, data: OpsWorks.Types.DescribeRdsDbInstancesResult) => void): Request; - /** - * Describes Amazon RDS instances. Required Permissions: To use this action, an IAM user must have a Show, Deploy, or Manage permissions level for the stack, or an attached policy that explicitly grants permissions. For more information on user permissions, see Managing User Permissions. This call accepts only one resource-identifying parameter. - */ - describeRdsDbInstances(callback?: (err: AWSError, data: OpsWorks.Types.DescribeRdsDbInstancesResult) => void): Request; - /** - * Describes AWS OpsWorks Stacks service errors. Required Permissions: To use this action, an IAM user must have a Show, Deploy, or Manage permissions level for the stack, or an attached policy that explicitly grants permissions. For more information on user permissions, see Managing User Permissions. This call accepts only one resource-identifying parameter. - */ - describeServiceErrors(params: OpsWorks.Types.DescribeServiceErrorsRequest, callback?: (err: AWSError, data: OpsWorks.Types.DescribeServiceErrorsResult) => void): Request; - /** - * Describes AWS OpsWorks Stacks service errors. Required Permissions: To use this action, an IAM user must have a Show, Deploy, or Manage permissions level for the stack, or an attached policy that explicitly grants permissions. For more information on user permissions, see Managing User Permissions. This call accepts only one resource-identifying parameter. - */ - describeServiceErrors(callback?: (err: AWSError, data: OpsWorks.Types.DescribeServiceErrorsResult) => void): Request; - /** - * Requests a description of a stack's provisioning parameters. Required Permissions: To use this action, an IAM user must have a Show, Deploy, or Manage permissions level for the stack or an attached policy that explicitly grants permissions. For more information on user permissions, see Managing User Permissions. - */ - describeStackProvisioningParameters(params: OpsWorks.Types.DescribeStackProvisioningParametersRequest, callback?: (err: AWSError, data: OpsWorks.Types.DescribeStackProvisioningParametersResult) => void): Request; - /** - * Requests a description of a stack's provisioning parameters. Required Permissions: To use this action, an IAM user must have a Show, Deploy, or Manage permissions level for the stack or an attached policy that explicitly grants permissions. For more information on user permissions, see Managing User Permissions. - */ - describeStackProvisioningParameters(callback?: (err: AWSError, data: OpsWorks.Types.DescribeStackProvisioningParametersResult) => void): Request; - /** - * Describes the number of layers and apps in a specified stack, and the number of instances in each state, such as running_setup or online. Required Permissions: To use this action, an IAM user must have a Show, Deploy, or Manage permissions level for the stack, or an attached policy that explicitly grants permissions. For more information on user permissions, see Managing User Permissions. - */ - describeStackSummary(params: OpsWorks.Types.DescribeStackSummaryRequest, callback?: (err: AWSError, data: OpsWorks.Types.DescribeStackSummaryResult) => void): Request; - /** - * Describes the number of layers and apps in a specified stack, and the number of instances in each state, such as running_setup or online. Required Permissions: To use this action, an IAM user must have a Show, Deploy, or Manage permissions level for the stack, or an attached policy that explicitly grants permissions. For more information on user permissions, see Managing User Permissions. - */ - describeStackSummary(callback?: (err: AWSError, data: OpsWorks.Types.DescribeStackSummaryResult) => void): Request; - /** - * Requests a description of one or more stacks. Required Permissions: To use this action, an IAM user must have a Show, Deploy, or Manage permissions level for the stack, or an attached policy that explicitly grants permissions. For more information on user permissions, see Managing User Permissions. - */ - describeStacks(params: OpsWorks.Types.DescribeStacksRequest, callback?: (err: AWSError, data: OpsWorks.Types.DescribeStacksResult) => void): Request; - /** - * Requests a description of one or more stacks. Required Permissions: To use this action, an IAM user must have a Show, Deploy, or Manage permissions level for the stack, or an attached policy that explicitly grants permissions. For more information on user permissions, see Managing User Permissions. - */ - describeStacks(callback?: (err: AWSError, data: OpsWorks.Types.DescribeStacksResult) => void): Request; - /** - * Describes time-based auto scaling configurations for specified instances. You must specify at least one of the parameters. Required Permissions: To use this action, an IAM user must have a Show, Deploy, or Manage permissions level for the stack, or an attached policy that explicitly grants permissions. For more information on user permissions, see Managing User Permissions. - */ - describeTimeBasedAutoScaling(params: OpsWorks.Types.DescribeTimeBasedAutoScalingRequest, callback?: (err: AWSError, data: OpsWorks.Types.DescribeTimeBasedAutoScalingResult) => void): Request; - /** - * Describes time-based auto scaling configurations for specified instances. You must specify at least one of the parameters. Required Permissions: To use this action, an IAM user must have a Show, Deploy, or Manage permissions level for the stack, or an attached policy that explicitly grants permissions. For more information on user permissions, see Managing User Permissions. - */ - describeTimeBasedAutoScaling(callback?: (err: AWSError, data: OpsWorks.Types.DescribeTimeBasedAutoScalingResult) => void): Request; - /** - * Describe specified users. Required Permissions: To use this action, an IAM user must have an attached policy that explicitly grants permissions. For more information on user permissions, see Managing User Permissions. - */ - describeUserProfiles(params: OpsWorks.Types.DescribeUserProfilesRequest, callback?: (err: AWSError, data: OpsWorks.Types.DescribeUserProfilesResult) => void): Request; - /** - * Describe specified users. Required Permissions: To use this action, an IAM user must have an attached policy that explicitly grants permissions. For more information on user permissions, see Managing User Permissions. - */ - describeUserProfiles(callback?: (err: AWSError, data: OpsWorks.Types.DescribeUserProfilesResult) => void): Request; - /** - * Describes an instance's Amazon EBS volumes. This call accepts only one resource-identifying parameter. Required Permissions: To use this action, an IAM user must have a Show, Deploy, or Manage permissions level for the stack, or an attached policy that explicitly grants permissions. For more information on user permissions, see Managing User Permissions. - */ - describeVolumes(params: OpsWorks.Types.DescribeVolumesRequest, callback?: (err: AWSError, data: OpsWorks.Types.DescribeVolumesResult) => void): Request; - /** - * Describes an instance's Amazon EBS volumes. This call accepts only one resource-identifying parameter. Required Permissions: To use this action, an IAM user must have a Show, Deploy, or Manage permissions level for the stack, or an attached policy that explicitly grants permissions. For more information on user permissions, see Managing User Permissions. - */ - describeVolumes(callback?: (err: AWSError, data: OpsWorks.Types.DescribeVolumesResult) => void): Request; - /** - * Detaches a specified Elastic Load Balancing instance from its layer. Required Permissions: To use this action, an IAM user must have a Manage permissions level for the stack, or an attached policy that explicitly grants permissions. For more information on user permissions, see Managing User Permissions. - */ - detachElasticLoadBalancer(params: OpsWorks.Types.DetachElasticLoadBalancerRequest, callback?: (err: AWSError, data: {}) => void): Request<{}, AWSError>; - /** - * Detaches a specified Elastic Load Balancing instance from its layer. Required Permissions: To use this action, an IAM user must have a Manage permissions level for the stack, or an attached policy that explicitly grants permissions. For more information on user permissions, see Managing User Permissions. - */ - detachElasticLoadBalancer(callback?: (err: AWSError, data: {}) => void): Request<{}, AWSError>; - /** - * Disassociates an Elastic IP address from its instance. The address remains registered with the stack. For more information, see Resource Management. Required Permissions: To use this action, an IAM user must have a Manage permissions level for the stack, or an attached policy that explicitly grants permissions. For more information on user permissions, see Managing User Permissions. - */ - disassociateElasticIp(params: OpsWorks.Types.DisassociateElasticIpRequest, callback?: (err: AWSError, data: {}) => void): Request<{}, AWSError>; - /** - * Disassociates an Elastic IP address from its instance. The address remains registered with the stack. For more information, see Resource Management. Required Permissions: To use this action, an IAM user must have a Manage permissions level for the stack, or an attached policy that explicitly grants permissions. For more information on user permissions, see Managing User Permissions. - */ - disassociateElasticIp(callback?: (err: AWSError, data: {}) => void): Request<{}, AWSError>; - /** - * Gets a generated host name for the specified layer, based on the current host name theme. Required Permissions: To use this action, an IAM user must have a Manage permissions level for the stack, or an attached policy that explicitly grants permissions. For more information on user permissions, see Managing User Permissions. - */ - getHostnameSuggestion(params: OpsWorks.Types.GetHostnameSuggestionRequest, callback?: (err: AWSError, data: OpsWorks.Types.GetHostnameSuggestionResult) => void): Request; - /** - * Gets a generated host name for the specified layer, based on the current host name theme. Required Permissions: To use this action, an IAM user must have a Manage permissions level for the stack, or an attached policy that explicitly grants permissions. For more information on user permissions, see Managing User Permissions. - */ - getHostnameSuggestion(callback?: (err: AWSError, data: OpsWorks.Types.GetHostnameSuggestionResult) => void): Request; - /** - * This action can be used only with Windows stacks. Grants RDP access to a Windows instance for a specified time period. - */ - grantAccess(params: OpsWorks.Types.GrantAccessRequest, callback?: (err: AWSError, data: OpsWorks.Types.GrantAccessResult) => void): Request; - /** - * This action can be used only with Windows stacks. Grants RDP access to a Windows instance for a specified time period. - */ - grantAccess(callback?: (err: AWSError, data: OpsWorks.Types.GrantAccessResult) => void): Request; - /** - * Returns a list of tags that are applied to the specified stack or layer. - */ - listTags(params: OpsWorks.Types.ListTagsRequest, callback?: (err: AWSError, data: OpsWorks.Types.ListTagsResult) => void): Request; - /** - * Returns a list of tags that are applied to the specified stack or layer. - */ - listTags(callback?: (err: AWSError, data: OpsWorks.Types.ListTagsResult) => void): Request; - /** - * Reboots a specified instance. For more information, see Starting, Stopping, and Rebooting Instances. Required Permissions: To use this action, an IAM user must have a Manage permissions level for the stack, or an attached policy that explicitly grants permissions. For more information on user permissions, see Managing User Permissions. - */ - rebootInstance(params: OpsWorks.Types.RebootInstanceRequest, callback?: (err: AWSError, data: {}) => void): Request<{}, AWSError>; - /** - * Reboots a specified instance. For more information, see Starting, Stopping, and Rebooting Instances. Required Permissions: To use this action, an IAM user must have a Manage permissions level for the stack, or an attached policy that explicitly grants permissions. For more information on user permissions, see Managing User Permissions. - */ - rebootInstance(callback?: (err: AWSError, data: {}) => void): Request<{}, AWSError>; - /** - * Registers a specified Amazon ECS cluster with a stack. You can register only one cluster with a stack. A cluster can be registered with only one stack. For more information, see Resource Management. Required Permissions: To use this action, an IAM user must have a Manage permissions level for the stack or an attached policy that explicitly grants permissions. For more information on user permissions, see Managing User Permissions. - */ - registerEcsCluster(params: OpsWorks.Types.RegisterEcsClusterRequest, callback?: (err: AWSError, data: OpsWorks.Types.RegisterEcsClusterResult) => void): Request; - /** - * Registers a specified Amazon ECS cluster with a stack. You can register only one cluster with a stack. A cluster can be registered with only one stack. For more information, see Resource Management. Required Permissions: To use this action, an IAM user must have a Manage permissions level for the stack or an attached policy that explicitly grants permissions. For more information on user permissions, see Managing User Permissions. - */ - registerEcsCluster(callback?: (err: AWSError, data: OpsWorks.Types.RegisterEcsClusterResult) => void): Request; - /** - * Registers an Elastic IP address with a specified stack. An address can be registered with only one stack at a time. If the address is already registered, you must first deregister it by calling DeregisterElasticIp. For more information, see Resource Management. Required Permissions: To use this action, an IAM user must have a Manage permissions level for the stack, or an attached policy that explicitly grants permissions. For more information on user permissions, see Managing User Permissions. - */ - registerElasticIp(params: OpsWorks.Types.RegisterElasticIpRequest, callback?: (err: AWSError, data: OpsWorks.Types.RegisterElasticIpResult) => void): Request; - /** - * Registers an Elastic IP address with a specified stack. An address can be registered with only one stack at a time. If the address is already registered, you must first deregister it by calling DeregisterElasticIp. For more information, see Resource Management. Required Permissions: To use this action, an IAM user must have a Manage permissions level for the stack, or an attached policy that explicitly grants permissions. For more information on user permissions, see Managing User Permissions. - */ - registerElasticIp(callback?: (err: AWSError, data: OpsWorks.Types.RegisterElasticIpResult) => void): Request; - /** - * Registers instances that were created outside of AWS OpsWorks Stacks with a specified stack. We do not recommend using this action to register instances. The complete registration operation includes two tasks: installing the AWS OpsWorks Stacks agent on the instance, and registering the instance with the stack. RegisterInstance handles only the second step. You should instead use the AWS CLI register command, which performs the entire registration operation. For more information, see Registering an Instance with an AWS OpsWorks Stacks Stack. Registered instances have the same requirements as instances that are created by using the CreateInstance API. For example, registered instances must be running a supported Linux-based operating system, and they must have a supported instance type. For more information about requirements for instances that you want to register, see Preparing the Instance. Required Permissions: To use this action, an IAM user must have a Manage permissions level for the stack or an attached policy that explicitly grants permissions. For more information on user permissions, see Managing User Permissions. - */ - registerInstance(params: OpsWorks.Types.RegisterInstanceRequest, callback?: (err: AWSError, data: OpsWorks.Types.RegisterInstanceResult) => void): Request; - /** - * Registers instances that were created outside of AWS OpsWorks Stacks with a specified stack. We do not recommend using this action to register instances. The complete registration operation includes two tasks: installing the AWS OpsWorks Stacks agent on the instance, and registering the instance with the stack. RegisterInstance handles only the second step. You should instead use the AWS CLI register command, which performs the entire registration operation. For more information, see Registering an Instance with an AWS OpsWorks Stacks Stack. Registered instances have the same requirements as instances that are created by using the CreateInstance API. For example, registered instances must be running a supported Linux-based operating system, and they must have a supported instance type. For more information about requirements for instances that you want to register, see Preparing the Instance. Required Permissions: To use this action, an IAM user must have a Manage permissions level for the stack or an attached policy that explicitly grants permissions. For more information on user permissions, see Managing User Permissions. - */ - registerInstance(callback?: (err: AWSError, data: OpsWorks.Types.RegisterInstanceResult) => void): Request; - /** - * Registers an Amazon RDS instance with a stack. Required Permissions: To use this action, an IAM user must have a Manage permissions level for the stack, or an attached policy that explicitly grants permissions. For more information on user permissions, see Managing User Permissions. - */ - registerRdsDbInstance(params: OpsWorks.Types.RegisterRdsDbInstanceRequest, callback?: (err: AWSError, data: {}) => void): Request<{}, AWSError>; - /** - * Registers an Amazon RDS instance with a stack. Required Permissions: To use this action, an IAM user must have a Manage permissions level for the stack, or an attached policy that explicitly grants permissions. For more information on user permissions, see Managing User Permissions. - */ - registerRdsDbInstance(callback?: (err: AWSError, data: {}) => void): Request<{}, AWSError>; - /** - * Registers an Amazon EBS volume with a specified stack. A volume can be registered with only one stack at a time. If the volume is already registered, you must first deregister it by calling DeregisterVolume. For more information, see Resource Management. Required Permissions: To use this action, an IAM user must have a Manage permissions level for the stack, or an attached policy that explicitly grants permissions. For more information on user permissions, see Managing User Permissions. - */ - registerVolume(params: OpsWorks.Types.RegisterVolumeRequest, callback?: (err: AWSError, data: OpsWorks.Types.RegisterVolumeResult) => void): Request; - /** - * Registers an Amazon EBS volume with a specified stack. A volume can be registered with only one stack at a time. If the volume is already registered, you must first deregister it by calling DeregisterVolume. For more information, see Resource Management. Required Permissions: To use this action, an IAM user must have a Manage permissions level for the stack, or an attached policy that explicitly grants permissions. For more information on user permissions, see Managing User Permissions. - */ - registerVolume(callback?: (err: AWSError, data: OpsWorks.Types.RegisterVolumeResult) => void): Request; - /** - * Specify the load-based auto scaling configuration for a specified layer. For more information, see Managing Load with Time-based and Load-based Instances. To use load-based auto scaling, you must create a set of load-based auto scaling instances. Load-based auto scaling operates only on the instances from that set, so you must ensure that you have created enough instances to handle the maximum anticipated load. Required Permissions: To use this action, an IAM user must have a Manage permissions level for the stack, or an attached policy that explicitly grants permissions. For more information on user permissions, see Managing User Permissions. - */ - setLoadBasedAutoScaling(params: OpsWorks.Types.SetLoadBasedAutoScalingRequest, callback?: (err: AWSError, data: {}) => void): Request<{}, AWSError>; - /** - * Specify the load-based auto scaling configuration for a specified layer. For more information, see Managing Load with Time-based and Load-based Instances. To use load-based auto scaling, you must create a set of load-based auto scaling instances. Load-based auto scaling operates only on the instances from that set, so you must ensure that you have created enough instances to handle the maximum anticipated load. Required Permissions: To use this action, an IAM user must have a Manage permissions level for the stack, or an attached policy that explicitly grants permissions. For more information on user permissions, see Managing User Permissions. - */ - setLoadBasedAutoScaling(callback?: (err: AWSError, data: {}) => void): Request<{}, AWSError>; - /** - * Specifies a user's permissions. For more information, see Security and Permissions. Required Permissions: To use this action, an IAM user must have a Manage permissions level for the stack, or an attached policy that explicitly grants permissions. For more information on user permissions, see Managing User Permissions. - */ - setPermission(params: OpsWorks.Types.SetPermissionRequest, callback?: (err: AWSError, data: {}) => void): Request<{}, AWSError>; - /** - * Specifies a user's permissions. For more information, see Security and Permissions. Required Permissions: To use this action, an IAM user must have a Manage permissions level for the stack, or an attached policy that explicitly grants permissions. For more information on user permissions, see Managing User Permissions. - */ - setPermission(callback?: (err: AWSError, data: {}) => void): Request<{}, AWSError>; - /** - * Specify the time-based auto scaling configuration for a specified instance. For more information, see Managing Load with Time-based and Load-based Instances. Required Permissions: To use this action, an IAM user must have a Manage permissions level for the stack, or an attached policy that explicitly grants permissions. For more information on user permissions, see Managing User Permissions. - */ - setTimeBasedAutoScaling(params: OpsWorks.Types.SetTimeBasedAutoScalingRequest, callback?: (err: AWSError, data: {}) => void): Request<{}, AWSError>; - /** - * Specify the time-based auto scaling configuration for a specified instance. For more information, see Managing Load with Time-based and Load-based Instances. Required Permissions: To use this action, an IAM user must have a Manage permissions level for the stack, or an attached policy that explicitly grants permissions. For more information on user permissions, see Managing User Permissions. - */ - setTimeBasedAutoScaling(callback?: (err: AWSError, data: {}) => void): Request<{}, AWSError>; - /** - * Starts a specified instance. For more information, see Starting, Stopping, and Rebooting Instances. Required Permissions: To use this action, an IAM user must have a Manage permissions level for the stack, or an attached policy that explicitly grants permissions. For more information on user permissions, see Managing User Permissions. - */ - startInstance(params: OpsWorks.Types.StartInstanceRequest, callback?: (err: AWSError, data: {}) => void): Request<{}, AWSError>; - /** - * Starts a specified instance. For more information, see Starting, Stopping, and Rebooting Instances. Required Permissions: To use this action, an IAM user must have a Manage permissions level for the stack, or an attached policy that explicitly grants permissions. For more information on user permissions, see Managing User Permissions. - */ - startInstance(callback?: (err: AWSError, data: {}) => void): Request<{}, AWSError>; - /** - * Starts a stack's instances. Required Permissions: To use this action, an IAM user must have a Manage permissions level for the stack, or an attached policy that explicitly grants permissions. For more information on user permissions, see Managing User Permissions. - */ - startStack(params: OpsWorks.Types.StartStackRequest, callback?: (err: AWSError, data: {}) => void): Request<{}, AWSError>; - /** - * Starts a stack's instances. Required Permissions: To use this action, an IAM user must have a Manage permissions level for the stack, or an attached policy that explicitly grants permissions. For more information on user permissions, see Managing User Permissions. - */ - startStack(callback?: (err: AWSError, data: {}) => void): Request<{}, AWSError>; - /** - * Stops a specified instance. When you stop a standard instance, the data disappears and must be reinstalled when you restart the instance. You can stop an Amazon EBS-backed instance without losing data. For more information, see Starting, Stopping, and Rebooting Instances. Required Permissions: To use this action, an IAM user must have a Manage permissions level for the stack, or an attached policy that explicitly grants permissions. For more information on user permissions, see Managing User Permissions. - */ - stopInstance(params: OpsWorks.Types.StopInstanceRequest, callback?: (err: AWSError, data: {}) => void): Request<{}, AWSError>; - /** - * Stops a specified instance. When you stop a standard instance, the data disappears and must be reinstalled when you restart the instance. You can stop an Amazon EBS-backed instance without losing data. For more information, see Starting, Stopping, and Rebooting Instances. Required Permissions: To use this action, an IAM user must have a Manage permissions level for the stack, or an attached policy that explicitly grants permissions. For more information on user permissions, see Managing User Permissions. - */ - stopInstance(callback?: (err: AWSError, data: {}) => void): Request<{}, AWSError>; - /** - * Stops a specified stack. Required Permissions: To use this action, an IAM user must have a Manage permissions level for the stack, or an attached policy that explicitly grants permissions. For more information on user permissions, see Managing User Permissions. - */ - stopStack(params: OpsWorks.Types.StopStackRequest, callback?: (err: AWSError, data: {}) => void): Request<{}, AWSError>; - /** - * Stops a specified stack. Required Permissions: To use this action, an IAM user must have a Manage permissions level for the stack, or an attached policy that explicitly grants permissions. For more information on user permissions, see Managing User Permissions. - */ - stopStack(callback?: (err: AWSError, data: {}) => void): Request<{}, AWSError>; - /** - * Apply cost-allocation tags to a specified stack or layer in AWS OpsWorks Stacks. For more information about how tagging works, see Tags in the AWS OpsWorks User Guide. - */ - tagResource(params: OpsWorks.Types.TagResourceRequest, callback?: (err: AWSError, data: {}) => void): Request<{}, AWSError>; - /** - * Apply cost-allocation tags to a specified stack or layer in AWS OpsWorks Stacks. For more information about how tagging works, see Tags in the AWS OpsWorks User Guide. - */ - tagResource(callback?: (err: AWSError, data: {}) => void): Request<{}, AWSError>; - /** - * Unassigns a registered instance from all of it's layers. The instance remains in the stack as an unassigned instance and can be assigned to another layer, as needed. You cannot use this action with instances that were created with AWS OpsWorks Stacks. Required Permissions: To use this action, an IAM user must have a Manage permissions level for the stack or an attached policy that explicitly grants permissions. For more information on user permissions, see Managing User Permissions. - */ - unassignInstance(params: OpsWorks.Types.UnassignInstanceRequest, callback?: (err: AWSError, data: {}) => void): Request<{}, AWSError>; - /** - * Unassigns a registered instance from all of it's layers. The instance remains in the stack as an unassigned instance and can be assigned to another layer, as needed. You cannot use this action with instances that were created with AWS OpsWorks Stacks. Required Permissions: To use this action, an IAM user must have a Manage permissions level for the stack or an attached policy that explicitly grants permissions. For more information on user permissions, see Managing User Permissions. - */ - unassignInstance(callback?: (err: AWSError, data: {}) => void): Request<{}, AWSError>; - /** - * Unassigns an assigned Amazon EBS volume. The volume remains registered with the stack. For more information, see Resource Management. Required Permissions: To use this action, an IAM user must have a Manage permissions level for the stack, or an attached policy that explicitly grants permissions. For more information on user permissions, see Managing User Permissions. - */ - unassignVolume(params: OpsWorks.Types.UnassignVolumeRequest, callback?: (err: AWSError, data: {}) => void): Request<{}, AWSError>; - /** - * Unassigns an assigned Amazon EBS volume. The volume remains registered with the stack. For more information, see Resource Management. Required Permissions: To use this action, an IAM user must have a Manage permissions level for the stack, or an attached policy that explicitly grants permissions. For more information on user permissions, see Managing User Permissions. - */ - unassignVolume(callback?: (err: AWSError, data: {}) => void): Request<{}, AWSError>; - /** - * Removes tags from a specified stack or layer. - */ - untagResource(params: OpsWorks.Types.UntagResourceRequest, callback?: (err: AWSError, data: {}) => void): Request<{}, AWSError>; - /** - * Removes tags from a specified stack or layer. - */ - untagResource(callback?: (err: AWSError, data: {}) => void): Request<{}, AWSError>; - /** - * Updates a specified app. Required Permissions: To use this action, an IAM user must have a Deploy or Manage permissions level for the stack, or an attached policy that explicitly grants permissions. For more information on user permissions, see Managing User Permissions. - */ - updateApp(params: OpsWorks.Types.UpdateAppRequest, callback?: (err: AWSError, data: {}) => void): Request<{}, AWSError>; - /** - * Updates a specified app. Required Permissions: To use this action, an IAM user must have a Deploy or Manage permissions level for the stack, or an attached policy that explicitly grants permissions. For more information on user permissions, see Managing User Permissions. - */ - updateApp(callback?: (err: AWSError, data: {}) => void): Request<{}, AWSError>; - /** - * Updates a registered Elastic IP address's name. For more information, see Resource Management. Required Permissions: To use this action, an IAM user must have a Manage permissions level for the stack, or an attached policy that explicitly grants permissions. For more information on user permissions, see Managing User Permissions. - */ - updateElasticIp(params: OpsWorks.Types.UpdateElasticIpRequest, callback?: (err: AWSError, data: {}) => void): Request<{}, AWSError>; - /** - * Updates a registered Elastic IP address's name. For more information, see Resource Management. Required Permissions: To use this action, an IAM user must have a Manage permissions level for the stack, or an attached policy that explicitly grants permissions. For more information on user permissions, see Managing User Permissions. - */ - updateElasticIp(callback?: (err: AWSError, data: {}) => void): Request<{}, AWSError>; - /** - * Updates a specified instance. Required Permissions: To use this action, an IAM user must have a Manage permissions level for the stack, or an attached policy that explicitly grants permissions. For more information on user permissions, see Managing User Permissions. - */ - updateInstance(params: OpsWorks.Types.UpdateInstanceRequest, callback?: (err: AWSError, data: {}) => void): Request<{}, AWSError>; - /** - * Updates a specified instance. Required Permissions: To use this action, an IAM user must have a Manage permissions level for the stack, or an attached policy that explicitly grants permissions. For more information on user permissions, see Managing User Permissions. - */ - updateInstance(callback?: (err: AWSError, data: {}) => void): Request<{}, AWSError>; - /** - * Updates a specified layer. Required Permissions: To use this action, an IAM user must have a Manage permissions level for the stack, or an attached policy that explicitly grants permissions. For more information on user permissions, see Managing User Permissions. - */ - updateLayer(params: OpsWorks.Types.UpdateLayerRequest, callback?: (err: AWSError, data: {}) => void): Request<{}, AWSError>; - /** - * Updates a specified layer. Required Permissions: To use this action, an IAM user must have a Manage permissions level for the stack, or an attached policy that explicitly grants permissions. For more information on user permissions, see Managing User Permissions. - */ - updateLayer(callback?: (err: AWSError, data: {}) => void): Request<{}, AWSError>; - /** - * Updates a user's SSH public key. Required Permissions: To use this action, an IAM user must have self-management enabled or an attached policy that explicitly grants permissions. For more information on user permissions, see Managing User Permissions. - */ - updateMyUserProfile(params: OpsWorks.Types.UpdateMyUserProfileRequest, callback?: (err: AWSError, data: {}) => void): Request<{}, AWSError>; - /** - * Updates a user's SSH public key. Required Permissions: To use this action, an IAM user must have self-management enabled or an attached policy that explicitly grants permissions. For more information on user permissions, see Managing User Permissions. - */ - updateMyUserProfile(callback?: (err: AWSError, data: {}) => void): Request<{}, AWSError>; - /** - * Updates an Amazon RDS instance. Required Permissions: To use this action, an IAM user must have a Manage permissions level for the stack, or an attached policy that explicitly grants permissions. For more information on user permissions, see Managing User Permissions. - */ - updateRdsDbInstance(params: OpsWorks.Types.UpdateRdsDbInstanceRequest, callback?: (err: AWSError, data: {}) => void): Request<{}, AWSError>; - /** - * Updates an Amazon RDS instance. Required Permissions: To use this action, an IAM user must have a Manage permissions level for the stack, or an attached policy that explicitly grants permissions. For more information on user permissions, see Managing User Permissions. - */ - updateRdsDbInstance(callback?: (err: AWSError, data: {}) => void): Request<{}, AWSError>; - /** - * Updates a specified stack. Required Permissions: To use this action, an IAM user must have a Manage permissions level for the stack, or an attached policy that explicitly grants permissions. For more information on user permissions, see Managing User Permissions. - */ - updateStack(params: OpsWorks.Types.UpdateStackRequest, callback?: (err: AWSError, data: {}) => void): Request<{}, AWSError>; - /** - * Updates a specified stack. Required Permissions: To use this action, an IAM user must have a Manage permissions level for the stack, or an attached policy that explicitly grants permissions. For more information on user permissions, see Managing User Permissions. - */ - updateStack(callback?: (err: AWSError, data: {}) => void): Request<{}, AWSError>; - /** - * Updates a specified user profile. Required Permissions: To use this action, an IAM user must have an attached policy that explicitly grants permissions. For more information on user permissions, see Managing User Permissions. - */ - updateUserProfile(params: OpsWorks.Types.UpdateUserProfileRequest, callback?: (err: AWSError, data: {}) => void): Request<{}, AWSError>; - /** - * Updates a specified user profile. Required Permissions: To use this action, an IAM user must have an attached policy that explicitly grants permissions. For more information on user permissions, see Managing User Permissions. - */ - updateUserProfile(callback?: (err: AWSError, data: {}) => void): Request<{}, AWSError>; - /** - * Updates an Amazon EBS volume's name or mount point. For more information, see Resource Management. Required Permissions: To use this action, an IAM user must have a Manage permissions level for the stack, or an attached policy that explicitly grants permissions. For more information on user permissions, see Managing User Permissions. - */ - updateVolume(params: OpsWorks.Types.UpdateVolumeRequest, callback?: (err: AWSError, data: {}) => void): Request<{}, AWSError>; - /** - * Updates an Amazon EBS volume's name or mount point. For more information, see Resource Management. Required Permissions: To use this action, an IAM user must have a Manage permissions level for the stack, or an attached policy that explicitly grants permissions. For more information on user permissions, see Managing User Permissions. - */ - updateVolume(callback?: (err: AWSError, data: {}) => void): Request<{}, AWSError>; - /** - * Waits for the appExists state by periodically calling the underlying OpsWorks.describeAppsoperation every 1 seconds (at most 40 times). - */ - waitFor(state: "appExists", params: OpsWorks.Types.DescribeAppsRequest, callback?: (err: AWSError, data: OpsWorks.Types.DescribeAppsResult) => void): Request; - /** - * Waits for the appExists state by periodically calling the underlying OpsWorks.describeAppsoperation every 1 seconds (at most 40 times). - */ - waitFor(state: "appExists", callback?: (err: AWSError, data: OpsWorks.Types.DescribeAppsResult) => void): Request; - /** - * Waits for the deploymentSuccessful state by periodically calling the underlying OpsWorks.describeDeploymentsoperation every 15 seconds (at most 40 times). Wait until a deployment has completed successfully - */ - waitFor(state: "deploymentSuccessful", params: OpsWorks.Types.DescribeDeploymentsRequest, callback?: (err: AWSError, data: OpsWorks.Types.DescribeDeploymentsResult) => void): Request; - /** - * Waits for the deploymentSuccessful state by periodically calling the underlying OpsWorks.describeDeploymentsoperation every 15 seconds (at most 40 times). Wait until a deployment has completed successfully - */ - waitFor(state: "deploymentSuccessful", callback?: (err: AWSError, data: OpsWorks.Types.DescribeDeploymentsResult) => void): Request; - /** - * Waits for the instanceOnline state by periodically calling the underlying OpsWorks.describeInstancesoperation every 15 seconds (at most 40 times). Wait until OpsWorks instance is online. - */ - waitFor(state: "instanceOnline", params: OpsWorks.Types.DescribeInstancesRequest, callback?: (err: AWSError, data: OpsWorks.Types.DescribeInstancesResult) => void): Request; - /** - * Waits for the instanceOnline state by periodically calling the underlying OpsWorks.describeInstancesoperation every 15 seconds (at most 40 times). Wait until OpsWorks instance is online. - */ - waitFor(state: "instanceOnline", callback?: (err: AWSError, data: OpsWorks.Types.DescribeInstancesResult) => void): Request; - /** - * Waits for the instanceRegistered state by periodically calling the underlying OpsWorks.describeInstancesoperation every 15 seconds (at most 40 times). Wait until OpsWorks instance is registered. - */ - waitFor(state: "instanceRegistered", params: OpsWorks.Types.DescribeInstancesRequest, callback?: (err: AWSError, data: OpsWorks.Types.DescribeInstancesResult) => void): Request; - /** - * Waits for the instanceRegistered state by periodically calling the underlying OpsWorks.describeInstancesoperation every 15 seconds (at most 40 times). Wait until OpsWorks instance is registered. - */ - waitFor(state: "instanceRegistered", callback?: (err: AWSError, data: OpsWorks.Types.DescribeInstancesResult) => void): Request; - /** - * Waits for the instanceStopped state by periodically calling the underlying OpsWorks.describeInstancesoperation every 15 seconds (at most 40 times). Wait until OpsWorks instance is stopped. - */ - waitFor(state: "instanceStopped", params: OpsWorks.Types.DescribeInstancesRequest, callback?: (err: AWSError, data: OpsWorks.Types.DescribeInstancesResult) => void): Request; - /** - * Waits for the instanceStopped state by periodically calling the underlying OpsWorks.describeInstancesoperation every 15 seconds (at most 40 times). Wait until OpsWorks instance is stopped. - */ - waitFor(state: "instanceStopped", callback?: (err: AWSError, data: OpsWorks.Types.DescribeInstancesResult) => void): Request; - /** - * Waits for the instanceTerminated state by periodically calling the underlying OpsWorks.describeInstancesoperation every 15 seconds (at most 40 times). Wait until OpsWorks instance is terminated. - */ - waitFor(state: "instanceTerminated", params: OpsWorks.Types.DescribeInstancesRequest, callback?: (err: AWSError, data: OpsWorks.Types.DescribeInstancesResult) => void): Request; - /** - * Waits for the instanceTerminated state by periodically calling the underlying OpsWorks.describeInstancesoperation every 15 seconds (at most 40 times). Wait until OpsWorks instance is terminated. - */ - waitFor(state: "instanceTerminated", callback?: (err: AWSError, data: OpsWorks.Types.DescribeInstancesResult) => void): Request; -} -declare namespace OpsWorks { - export interface AgentVersion { - /** - * The agent version. - */ - Version?: String; - /** - * The configuration manager. - */ - ConfigurationManager?: StackConfigurationManager; - } - export type AgentVersions = AgentVersion[]; - export interface App { - /** - * The app ID. - */ - AppId?: String; - /** - * The app stack ID. - */ - StackId?: String; - /** - * The app's short name. - */ - Shortname?: String; - /** - * The app name. - */ - Name?: String; - /** - * A description of the app. - */ - Description?: String; - /** - * The app's data sources. - */ - DataSources?: DataSources; - /** - * The app type. - */ - Type?: AppType; - /** - * A Source object that describes the app repository. - */ - AppSource?: Source; - /** - * The app vhost settings with multiple domains separated by commas. For example: 'www.example.com, example.com' - */ - Domains?: Strings; - /** - * Whether to enable SSL for the app. - */ - EnableSsl?: Boolean; - /** - * An SslConfiguration object with the SSL configuration. - */ - SslConfiguration?: SslConfiguration; - /** - * The stack attributes. - */ - Attributes?: AppAttributes; - /** - * When the app was created. - */ - CreatedAt?: String; - /** - * An array of EnvironmentVariable objects that specify environment variables to be associated with the app. After you deploy the app, these variables are defined on the associated app server instances. For more information, see Environment Variables. There is no specific limit on the number of environment variables. However, the size of the associated data structure - which includes the variable names, values, and protected flag values - cannot exceed 10 KB (10240 Bytes). This limit should accommodate most if not all use cases, but if you do exceed it, you will cause an exception (API) with an "Environment: is too large (maximum is 10KB)" message. - */ - Environment?: EnvironmentVariables; - } - export type AppAttributes = {[key: string]: String}; - export type AppAttributesKeys = "DocumentRoot"|"RailsEnv"|"AutoBundleOnDeploy"|"AwsFlowRubySettings"|string; - export type AppType = "aws-flow-ruby"|"java"|"rails"|"php"|"nodejs"|"static"|"other"|string; - export type Apps = App[]; - export type Architecture = "x86_64"|"i386"|string; - export interface AssignInstanceRequest { - /** - * The instance ID. - */ - InstanceId: String; - /** - * The layer ID, which must correspond to a custom layer. You cannot assign a registered instance to a built-in layer. - */ - LayerIds: Strings; - } - export interface AssignVolumeRequest { - /** - * The volume ID. - */ - VolumeId: String; - /** - * The instance ID. - */ - InstanceId?: String; - } - export interface AssociateElasticIpRequest { - /** - * The Elastic IP address. - */ - ElasticIp: String; - /** - * The instance ID. - */ - InstanceId?: String; - } - export interface AttachElasticLoadBalancerRequest { - /** - * The Elastic Load Balancing instance's name. - */ - ElasticLoadBalancerName: String; - /** - * The ID of the layer that the Elastic Load Balancing instance is to be attached to. - */ - LayerId: String; - } - export interface AutoScalingThresholds { - /** - * The number of instances to add or remove when the load exceeds a threshold. - */ - InstanceCount?: Integer; - /** - * The amount of time, in minutes, that the load must exceed a threshold before more instances are added or removed. - */ - ThresholdsWaitTime?: Minute; - /** - * The amount of time (in minutes) after a scaling event occurs that AWS OpsWorks Stacks should ignore metrics and suppress additional scaling events. For example, AWS OpsWorks Stacks adds new instances following an upscaling event but the instances won't start reducing the load until they have been booted and configured. There is no point in raising additional scaling events during that operation, which typically takes several minutes. IgnoreMetricsTime allows you to direct AWS OpsWorks Stacks to suppress scaling events long enough to get the new instances online. - */ - IgnoreMetricsTime?: Minute; - /** - * The CPU utilization threshold, as a percent of the available CPU. A value of -1 disables the threshold. - */ - CpuThreshold?: Double; - /** - * The memory utilization threshold, as a percent of the available memory. A value of -1 disables the threshold. - */ - MemoryThreshold?: Double; - /** - * The load threshold. A value of -1 disables the threshold. For more information about how load is computed, see Load (computing). - */ - LoadThreshold?: Double; - /** - * Custom Cloudwatch auto scaling alarms, to be used as thresholds. This parameter takes a list of up to five alarm names, which are case sensitive and must be in the same region as the stack. To use custom alarms, you must update your service role to allow cloudwatch:DescribeAlarms. You can either have AWS OpsWorks Stacks update the role for you when you first use this feature or you can edit the role manually. For more information, see Allowing AWS OpsWorks Stacks to Act on Your Behalf. - */ - Alarms?: Strings; - } - export type AutoScalingType = "load"|"timer"|string; - export interface BlockDeviceMapping { - /** - * The device name that is exposed to the instance, such as /dev/sdh. For the root device, you can use the explicit device name or you can set this parameter to ROOT_DEVICE and AWS OpsWorks Stacks will provide the correct device name. - */ - DeviceName?: String; - /** - * Suppresses the specified device included in the AMI's block device mapping. - */ - NoDevice?: String; - /** - * The virtual device name. For more information, see BlockDeviceMapping. - */ - VirtualName?: String; - /** - * An EBSBlockDevice that defines how to configure an Amazon EBS volume when the instance is launched. - */ - Ebs?: EbsBlockDevice; - } - export type BlockDeviceMappings = BlockDeviceMapping[]; - export type Boolean = boolean; - export interface ChefConfiguration { - /** - * Whether to enable Berkshelf. - */ - ManageBerkshelf?: Boolean; - /** - * The Berkshelf version. - */ - BerkshelfVersion?: String; - } - export interface CloneStackRequest { - /** - * The source stack ID. - */ - SourceStackId: String; - /** - * The cloned stack name. - */ - Name?: String; - /** - * The cloned stack AWS region, such as "ap-northeast-2". For more information about AWS regions, see Regions and Endpoints. - */ - Region?: String; - /** - * The ID of the VPC that the cloned stack is to be launched into. It must be in the specified region. All instances are launched into this VPC, and you cannot change the ID later. If your account supports EC2 Classic, the default value is no VPC. If your account does not support EC2 Classic, the default value is the default VPC for the specified region. If the VPC ID corresponds to a default VPC and you have specified either the DefaultAvailabilityZone or the DefaultSubnetId parameter only, AWS OpsWorks Stacks infers the value of the other parameter. If you specify neither parameter, AWS OpsWorks Stacks sets these parameters to the first valid Availability Zone for the specified region and the corresponding default VPC subnet ID, respectively. If you specify a nondefault VPC ID, note the following: It must belong to a VPC in your account that is in the specified region. You must specify a value for DefaultSubnetId. For more information on how to use AWS OpsWorks Stacks with a VPC, see Running a Stack in a VPC. For more information on default VPC and EC2 Classic, see Supported Platforms. - */ - VpcId?: String; - /** - * A list of stack attributes and values as key/value pairs to be added to the cloned stack. - */ - Attributes?: StackAttributes; - /** - * The stack AWS Identity and Access Management (IAM) role, which allows AWS OpsWorks Stacks to work with AWS resources on your behalf. You must set this parameter to the Amazon Resource Name (ARN) for an existing IAM role. If you create a stack by using the AWS OpsWorks Stacks console, it creates the role for you. You can obtain an existing stack's IAM ARN programmatically by calling DescribePermissions. For more information about IAM ARNs, see Using Identifiers. You must set this parameter to a valid service role ARN or the action will fail; there is no default value. You can specify the source stack's service role ARN, if you prefer, but you must do so explicitly. - */ - ServiceRoleArn: String; - /** - * The Amazon Resource Name (ARN) of an IAM profile that is the default profile for all of the stack's EC2 instances. For more information about IAM ARNs, see Using Identifiers. - */ - DefaultInstanceProfileArn?: String; - /** - * The stack's operating system, which must be set to one of the following. A supported Linux operating system: An Amazon Linux version, such as Amazon Linux 2017.03, Amazon Linux 2016.09, Amazon Linux 2016.03, Amazon Linux 2015.09, or Amazon Linux 2015.03. A supported Ubuntu operating system, such as Ubuntu 16.04 LTS, Ubuntu 14.04 LTS, or Ubuntu 12.04 LTS. CentOS Linux 7 Red Hat Enterprise Linux 7 Microsoft Windows Server 2012 R2 Base, Microsoft Windows Server 2012 R2 with SQL Server Express, Microsoft Windows Server 2012 R2 with SQL Server Standard, or Microsoft Windows Server 2012 R2 with SQL Server Web. A custom AMI: Custom. You specify the custom AMI you want to use when you create instances. For more information on how to use custom AMIs with OpsWorks, see Using Custom AMIs. The default option is the parent stack's operating system. For more information on the supported operating systems, see AWS OpsWorks Stacks Operating Systems. You can specify a different Linux operating system for the cloned stack, but you cannot change from Linux to Windows or Windows to Linux. - */ - DefaultOs?: String; - /** - * The stack's host name theme, with spaces are replaced by underscores. The theme is used to generate host names for the stack's instances. By default, HostnameTheme is set to Layer_Dependent, which creates host names by appending integers to the layer's short name. The other themes are: Baked_Goods Clouds Europe_Cities Fruits Greek_Deities Legendary_creatures_from_Japan Planets_and_Moons Roman_Deities Scottish_Islands US_Cities Wild_Cats To obtain a generated host name, call GetHostNameSuggestion, which returns a host name based on the current theme. - */ - HostnameTheme?: String; - /** - * The cloned stack's default Availability Zone, which must be in the specified region. For more information, see Regions and Endpoints. If you also specify a value for DefaultSubnetId, the subnet must be in the same zone. For more information, see the VpcId parameter description. - */ - DefaultAvailabilityZone?: String; - /** - * The stack's default VPC subnet ID. This parameter is required if you specify a value for the VpcId parameter. All instances are launched into this subnet unless you specify otherwise when you create the instance. If you also specify a value for DefaultAvailabilityZone, the subnet must be in that zone. For information on default values and when this parameter is required, see the VpcId parameter description. - */ - DefaultSubnetId?: String; - /** - * A string that contains user-defined, custom JSON. It is used to override the corresponding default stack configuration JSON values. The string should be in the following format: "{\"key1\": \"value1\", \"key2\": \"value2\",...}" For more information on custom JSON, see Use Custom JSON to Modify the Stack Configuration Attributes - */ - CustomJson?: String; - /** - * The configuration manager. When you clone a stack we recommend that you use the configuration manager to specify the Chef version: 12, 11.10, or 11.4 for Linux stacks, or 12.2 for Windows stacks. The default value for Linux stacks is currently 12. - */ - ConfigurationManager?: StackConfigurationManager; - /** - * A ChefConfiguration object that specifies whether to enable Berkshelf and the Berkshelf version on Chef 11.10 stacks. For more information, see Create a New Stack. - */ - ChefConfiguration?: ChefConfiguration; - /** - * Whether to use custom cookbooks. - */ - UseCustomCookbooks?: Boolean; - /** - * Whether to associate the AWS OpsWorks Stacks built-in security groups with the stack's layers. AWS OpsWorks Stacks provides a standard set of built-in security groups, one for each layer, which are associated with layers by default. With UseOpsworksSecurityGroups you can instead provide your own custom security groups. UseOpsworksSecurityGroups has the following settings: True - AWS OpsWorks Stacks automatically associates the appropriate built-in security group with each layer (default setting). You can associate additional security groups with a layer after you create it but you cannot delete the built-in security group. False - AWS OpsWorks Stacks does not associate built-in security groups with layers. You must create appropriate Amazon Elastic Compute Cloud (Amazon EC2) security groups and associate a security group with each layer that you create. However, you can still manually associate a built-in security group with a layer on creation; custom security groups are required only for those layers that need custom settings. For more information, see Create a New Stack. - */ - UseOpsworksSecurityGroups?: Boolean; - CustomCookbooksSource?: Source; - /** - * A default Amazon EC2 key pair name. The default value is none. If you specify a key pair name, AWS OpsWorks installs the public key on the instance and you can use the private key with an SSH client to log in to the instance. For more information, see Using SSH to Communicate with an Instance and Managing SSH Access. You can override this setting by specifying a different key pair, or no key pair, when you create an instance. - */ - DefaultSshKeyName?: String; - /** - * Whether to clone the source stack's permissions. - */ - ClonePermissions?: Boolean; - /** - * A list of source stack app IDs to be included in the cloned stack. - */ - CloneAppIds?: Strings; - /** - * The default root device type. This value is used by default for all instances in the cloned stack, but you can override it when you create an instance. For more information, see Storage for the Root Device. - */ - DefaultRootDeviceType?: RootDeviceType; - /** - * The default AWS OpsWorks Stacks agent version. You have the following options: Auto-update - Set this parameter to LATEST. AWS OpsWorks Stacks automatically installs new agent versions on the stack's instances as soon as they are available. Fixed version - Set this parameter to your preferred agent version. To update the agent version, you must edit the stack configuration and specify a new version. AWS OpsWorks Stacks then automatically installs that version on the stack's instances. The default setting is LATEST. To specify an agent version, you must use the complete version number, not the abbreviated number shown on the console. For a list of available agent version numbers, call DescribeAgentVersions. AgentVersion cannot be set to Chef 12.2. You can also specify an agent version when you create or update an instance, which overrides the stack's default setting. - */ - AgentVersion?: String; - } - export interface CloneStackResult { - /** - * The cloned stack ID. - */ - StackId?: String; - } - export interface CloudWatchLogsConfiguration { - /** - * Whether CloudWatch Logs is enabled for a layer. - */ - Enabled?: Boolean; - /** - * A list of configuration options for CloudWatch Logs. - */ - LogStreams?: CloudWatchLogsLogStreams; - } - export type CloudWatchLogsEncoding = "ascii"|"big5"|"big5hkscs"|"cp037"|"cp424"|"cp437"|"cp500"|"cp720"|"cp737"|"cp775"|"cp850"|"cp852"|"cp855"|"cp856"|"cp857"|"cp858"|"cp860"|"cp861"|"cp862"|"cp863"|"cp864"|"cp865"|"cp866"|"cp869"|"cp874"|"cp875"|"cp932"|"cp949"|"cp950"|"cp1006"|"cp1026"|"cp1140"|"cp1250"|"cp1251"|"cp1252"|"cp1253"|"cp1254"|"cp1255"|"cp1256"|"cp1257"|"cp1258"|"euc_jp"|"euc_jis_2004"|"euc_jisx0213"|"euc_kr"|"gb2312"|"gbk"|"gb18030"|"hz"|"iso2022_jp"|"iso2022_jp_1"|"iso2022_jp_2"|"iso2022_jp_2004"|"iso2022_jp_3"|"iso2022_jp_ext"|"iso2022_kr"|"latin_1"|"iso8859_2"|"iso8859_3"|"iso8859_4"|"iso8859_5"|"iso8859_6"|"iso8859_7"|"iso8859_8"|"iso8859_9"|"iso8859_10"|"iso8859_13"|"iso8859_14"|"iso8859_15"|"iso8859_16"|"johab"|"koi8_r"|"koi8_u"|"mac_cyrillic"|"mac_greek"|"mac_iceland"|"mac_latin2"|"mac_roman"|"mac_turkish"|"ptcp154"|"shift_jis"|"shift_jis_2004"|"shift_jisx0213"|"utf_32"|"utf_32_be"|"utf_32_le"|"utf_16"|"utf_16_be"|"utf_16_le"|"utf_7"|"utf_8"|"utf_8_sig"|string; - export type CloudWatchLogsInitialPosition = "start_of_file"|"end_of_file"|string; - export interface CloudWatchLogsLogStream { - /** - * Specifies the destination log group. A log group is created automatically if it doesn't already exist. Log group names can be between 1 and 512 characters long. Allowed characters include a-z, A-Z, 0-9, '_' (underscore), '-' (hyphen), '/' (forward slash), and '.' (period). - */ - LogGroupName?: String; - /** - * Specifies how the time stamp is extracted from logs. For more information, see the CloudWatch Logs Agent Reference. - */ - DatetimeFormat?: String; - /** - * Specifies the time zone of log event time stamps. - */ - TimeZone?: CloudWatchLogsTimeZone; - /** - * Specifies log files that you want to push to CloudWatch Logs. File can point to a specific file or multiple files (by using wild card characters such as /var/log/system.log*). Only the latest file is pushed to CloudWatch Logs, based on file modification time. We recommend that you use wild card characters to specify a series of files of the same type, such as access_log.2014-06-01-01, access_log.2014-06-01-02, and so on by using a pattern like access_log.*. Don't use a wildcard to match multiple file types, such as access_log_80 and access_log_443. To specify multiple, different file types, add another log stream entry to the configuration file, so that each log file type is stored in a different log group. Zipped files are not supported. - */ - File?: String; - /** - * Specifies the range of lines for identifying a file. The valid values are one number, or two dash-delimited numbers, such as '1', '2-5'. The default value is '1', meaning the first line is used to calculate the fingerprint. Fingerprint lines are not sent to CloudWatch Logs unless all specified lines are available. - */ - FileFingerprintLines?: String; - /** - * Specifies the pattern for identifying the start of a log message. - */ - MultiLineStartPattern?: String; - /** - * Specifies where to start to read data (start_of_file or end_of_file). The default is start_of_file. This setting is only used if there is no state persisted for that log stream. - */ - InitialPosition?: CloudWatchLogsInitialPosition; - /** - * Specifies the encoding of the log file so that the file can be read correctly. The default is utf_8. Encodings supported by Python codecs.decode() can be used here. - */ - Encoding?: CloudWatchLogsEncoding; - /** - * Specifies the time duration for the batching of log events. The minimum value is 5000ms and default value is 5000ms. - */ - BufferDuration?: Integer; - /** - * Specifies the max number of log events in a batch, up to 10000. The default value is 1000. - */ - BatchCount?: Integer; - /** - * Specifies the maximum size of log events in a batch, in bytes, up to 1048576 bytes. The default value is 32768 bytes. This size is calculated as the sum of all event messages in UTF-8, plus 26 bytes for each log event. - */ - BatchSize?: Integer; - } - export type CloudWatchLogsLogStreams = CloudWatchLogsLogStream[]; - export type CloudWatchLogsTimeZone = "LOCAL"|"UTC"|string; - export interface Command { - /** - * The command ID. - */ - CommandId?: String; - /** - * The ID of the instance where the command was executed. - */ - InstanceId?: String; - /** - * The command deployment ID. - */ - DeploymentId?: String; - /** - * Date and time when the command was run. - */ - CreatedAt?: DateTime; - /** - * Date and time when the command was acknowledged. - */ - AcknowledgedAt?: DateTime; - /** - * Date when the command completed. - */ - CompletedAt?: DateTime; - /** - * The command status: failed successful skipped pending - */ - Status?: String; - /** - * The command exit code. - */ - ExitCode?: Integer; - /** - * The URL of the command log. - */ - LogUrl?: String; - /** - * The command type: configure deploy execute_recipes install_dependencies restart rollback setup start stop undeploy update_custom_cookbooks update_dependencies - */ - Type?: String; - } - export type Commands = Command[]; - export interface CreateAppRequest { - /** - * The stack ID. - */ - StackId: String; - /** - * The app's short name. - */ - Shortname?: String; - /** - * The app name. - */ - Name: String; - /** - * A description of the app. - */ - Description?: String; - /** - * The app's data source. - */ - DataSources?: DataSources; - /** - * The app type. Each supported type is associated with a particular layer. For example, PHP applications are associated with a PHP layer. AWS OpsWorks Stacks deploys an application to those instances that are members of the corresponding layer. If your app isn't one of the standard types, or you prefer to implement your own Deploy recipes, specify other. - */ - Type: AppType; - /** - * A Source object that specifies the app repository. - */ - AppSource?: Source; - /** - * The app virtual host settings, with multiple domains separated by commas. For example: 'www.example.com, example.com' - */ - Domains?: Strings; - /** - * Whether to enable SSL for the app. - */ - EnableSsl?: Boolean; - /** - * An SslConfiguration object with the SSL configuration. - */ - SslConfiguration?: SslConfiguration; - /** - * One or more user-defined key/value pairs to be added to the stack attributes. - */ - Attributes?: AppAttributes; - /** - * An array of EnvironmentVariable objects that specify environment variables to be associated with the app. After you deploy the app, these variables are defined on the associated app server instance. For more information, see Environment Variables. There is no specific limit on the number of environment variables. However, the size of the associated data structure - which includes the variables' names, values, and protected flag values - cannot exceed 10 KB (10240 Bytes). This limit should accommodate most if not all use cases. Exceeding it will cause an exception with the message, "Environment: is too large (maximum is 10KB)." This parameter is supported only by Chef 11.10 stacks. If you have specified one or more environment variables, you cannot modify the stack's Chef version. - */ - Environment?: EnvironmentVariables; - } - export interface CreateAppResult { - /** - * The app ID. - */ - AppId?: String; - } - export interface CreateDeploymentRequest { - /** - * The stack ID. - */ - StackId: String; - /** - * The app ID. This parameter is required for app deployments, but not for other deployment commands. - */ - AppId?: String; - /** - * The instance IDs for the deployment targets. - */ - InstanceIds?: Strings; - /** - * The layer IDs for the deployment targets. - */ - LayerIds?: Strings; - /** - * A DeploymentCommand object that specifies the deployment command and any associated arguments. - */ - Command: DeploymentCommand; - /** - * A user-defined comment. - */ - Comment?: String; - /** - * A string that contains user-defined, custom JSON. It is used to override the corresponding default stack configuration JSON values. The string should be in the following format: "{\"key1\": \"value1\", \"key2\": \"value2\",...}" For more information on custom JSON, see Use Custom JSON to Modify the Stack Configuration Attributes. - */ - CustomJson?: String; - } - export interface CreateDeploymentResult { - /** - * The deployment ID, which can be used with other requests to identify the deployment. - */ - DeploymentId?: String; - } - export interface CreateInstanceRequest { - /** - * The stack ID. - */ - StackId: String; - /** - * An array that contains the instance's layer IDs. - */ - LayerIds: Strings; - /** - * The instance type, such as t2.micro. For a list of supported instance types, open the stack in the console, choose Instances, and choose + Instance. The Size list contains the currently supported types. For more information, see Instance Families and Types. The parameter values that you use to specify the various types are in the API Name column of the Available Instance Types table. - */ - InstanceType: String; - /** - * For load-based or time-based instances, the type. Windows stacks can use only time-based instances. - */ - AutoScalingType?: AutoScalingType; - /** - * The instance host name. - */ - Hostname?: String; - /** - * The instance's operating system, which must be set to one of the following. A supported Linux operating system: An Amazon Linux version, such as Amazon Linux 2017.03, Amazon Linux 2016.09, Amazon Linux 2016.03, Amazon Linux 2015.09, or Amazon Linux 2015.03. A supported Ubuntu operating system, such as Ubuntu 16.04 LTS, Ubuntu 14.04 LTS, or Ubuntu 12.04 LTS. CentOS Linux 7 Red Hat Enterprise Linux 7 A supported Windows operating system, such as Microsoft Windows Server 2012 R2 Base, Microsoft Windows Server 2012 R2 with SQL Server Express, Microsoft Windows Server 2012 R2 with SQL Server Standard, or Microsoft Windows Server 2012 R2 with SQL Server Web. A custom AMI: Custom. For more information on the supported operating systems, see AWS OpsWorks Stacks Operating Systems. The default option is the current Amazon Linux version. If you set this parameter to Custom, you must use the CreateInstance action's AmiId parameter to specify the custom AMI that you want to use. Block device mappings are not supported if the value is Custom. For more information on the supported operating systems, see Operating SystemsFor more information on how to use custom AMIs with AWS OpsWorks Stacks, see Using Custom AMIs. - */ - Os?: String; - /** - * A custom AMI ID to be used to create the instance. The AMI should be based on one of the supported operating systems. For more information, see Using Custom AMIs. If you specify a custom AMI, you must set Os to Custom. - */ - AmiId?: String; - /** - * The instance's Amazon EC2 key-pair name. - */ - SshKeyName?: String; - /** - * The instance Availability Zone. For more information, see Regions and Endpoints. - */ - AvailabilityZone?: String; - /** - * The instance's virtualization type, paravirtual or hvm. - */ - VirtualizationType?: String; - /** - * The ID of the instance's subnet. If the stack is running in a VPC, you can use this parameter to override the stack's default subnet ID value and direct AWS OpsWorks Stacks to launch the instance in a different subnet. - */ - SubnetId?: String; - /** - * The instance architecture. The default option is x86_64. Instance types do not necessarily support both architectures. For a list of the architectures that are supported by the different instance types, see Instance Families and Types. - */ - Architecture?: Architecture; - /** - * The instance root device type. For more information, see Storage for the Root Device. - */ - RootDeviceType?: RootDeviceType; - /** - * An array of BlockDeviceMapping objects that specify the instance's block devices. For more information, see Block Device Mapping. Note that block device mappings are not supported for custom AMIs. - */ - BlockDeviceMappings?: BlockDeviceMappings; - /** - * Whether to install operating system and package updates when the instance boots. The default value is true. To control when updates are installed, set this value to false. You must then update your instances manually by using CreateDeployment to run the update_dependencies stack command or by manually running yum (Amazon Linux) or apt-get (Ubuntu) on the instances. We strongly recommend using the default value of true to ensure that your instances have the latest security updates. - */ - InstallUpdatesOnBoot?: Boolean; - /** - * Whether to create an Amazon EBS-optimized instance. - */ - EbsOptimized?: Boolean; - /** - * The default AWS OpsWorks Stacks agent version. You have the following options: INHERIT - Use the stack's default agent version setting. version_number - Use the specified agent version. This value overrides the stack's default setting. To update the agent version, edit the instance configuration and specify a new version. AWS OpsWorks Stacks then automatically installs that version on the instance. The default setting is INHERIT. To specify an agent version, you must use the complete version number, not the abbreviated number shown on the console. For a list of available agent version numbers, call DescribeAgentVersions. AgentVersion cannot be set to Chef 12.2. - */ - AgentVersion?: String; - /** - * The instance's tenancy option. The default option is no tenancy, or if the instance is running in a VPC, inherit tenancy settings from the VPC. The following are valid values for this parameter: dedicated, default, or host. Because there are costs associated with changes in tenancy options, we recommend that you research tenancy options before choosing them for your instances. For more information about dedicated hosts, see Dedicated Hosts Overview and Amazon EC2 Dedicated Hosts. For more information about dedicated instances, see Dedicated Instances and Amazon EC2 Dedicated Instances. - */ - Tenancy?: String; - } - export interface CreateInstanceResult { - /** - * The instance ID. - */ - InstanceId?: String; - } - export interface CreateLayerRequest { - /** - * The layer stack ID. - */ - StackId: String; - /** - * The layer type. A stack cannot have more than one built-in layer of the same type. It can have any number of custom layers. Built-in layers are not available in Chef 12 stacks. - */ - Type: LayerType; - /** - * The layer name, which is used by the console. - */ - Name: String; - /** - * For custom layers only, use this parameter to specify the layer's short name, which is used internally by AWS OpsWorks Stacks and by Chef recipes. The short name is also used as the name for the directory where your app files are installed. It can have a maximum of 200 characters, which are limited to the alphanumeric characters, '-', '_', and '.'. The built-in layers' short names are defined by AWS OpsWorks Stacks. For more information, see the Layer Reference. - */ - Shortname: String; - /** - * One or more user-defined key-value pairs to be added to the stack attributes. To create a cluster layer, set the EcsClusterArn attribute to the cluster's ARN. - */ - Attributes?: LayerAttributes; - /** - * Specifies CloudWatch Logs configuration options for the layer. For more information, see CloudWatchLogsLogStream. - */ - CloudWatchLogsConfiguration?: CloudWatchLogsConfiguration; - /** - * The ARN of an IAM profile to be used for the layer's EC2 instances. For more information about IAM ARNs, see Using Identifiers. - */ - CustomInstanceProfileArn?: String; - /** - * A JSON-formatted string containing custom stack configuration and deployment attributes to be installed on the layer's instances. For more information, see Using Custom JSON. This feature is supported as of version 1.7.42 of the AWS CLI. - */ - CustomJson?: String; - /** - * An array containing the layer custom security group IDs. - */ - CustomSecurityGroupIds?: Strings; - /** - * An array of Package objects that describes the layer packages. - */ - Packages?: Strings; - /** - * A VolumeConfigurations object that describes the layer's Amazon EBS volumes. - */ - VolumeConfigurations?: VolumeConfigurations; - /** - * Whether to disable auto healing for the layer. - */ - EnableAutoHealing?: Boolean; - /** - * Whether to automatically assign an Elastic IP address to the layer's instances. For more information, see How to Edit a Layer. - */ - AutoAssignElasticIps?: Boolean; - /** - * For stacks that are running in a VPC, whether to automatically assign a public IP address to the layer's instances. For more information, see How to Edit a Layer. - */ - AutoAssignPublicIps?: Boolean; - /** - * A LayerCustomRecipes object that specifies the layer custom recipes. - */ - CustomRecipes?: Recipes; - /** - * Whether to install operating system and package updates when the instance boots. The default value is true. To control when updates are installed, set this value to false. You must then update your instances manually by using CreateDeployment to run the update_dependencies stack command or by manually running yum (Amazon Linux) or apt-get (Ubuntu) on the instances. To ensure that your instances have the latest security updates, we strongly recommend using the default value of true. - */ - InstallUpdatesOnBoot?: Boolean; - /** - * Whether to use Amazon EBS-optimized instances. - */ - UseEbsOptimizedInstances?: Boolean; - /** - * A LifeCycleEventConfiguration object that you can use to configure the Shutdown event to specify an execution timeout and enable or disable Elastic Load Balancer connection draining. - */ - LifecycleEventConfiguration?: LifecycleEventConfiguration; - } - export interface CreateLayerResult { - /** - * The layer ID. - */ - LayerId?: String; - } - export interface CreateStackRequest { - /** - * The stack name. - */ - Name: String; - /** - * The stack's AWS region, such as "ap-south-1". For more information about Amazon regions, see Regions and Endpoints. - */ - Region: String; - /** - * The ID of the VPC that the stack is to be launched into. The VPC must be in the stack's region. All instances are launched into this VPC. You cannot change the ID later. If your account supports EC2-Classic, the default value is no VPC. If your account does not support EC2-Classic, the default value is the default VPC for the specified region. If the VPC ID corresponds to a default VPC and you have specified either the DefaultAvailabilityZone or the DefaultSubnetId parameter only, AWS OpsWorks Stacks infers the value of the other parameter. If you specify neither parameter, AWS OpsWorks Stacks sets these parameters to the first valid Availability Zone for the specified region and the corresponding default VPC subnet ID, respectively. If you specify a nondefault VPC ID, note the following: It must belong to a VPC in your account that is in the specified region. You must specify a value for DefaultSubnetId. For more information on how to use AWS OpsWorks Stacks with a VPC, see Running a Stack in a VPC. For more information on default VPC and EC2-Classic, see Supported Platforms. - */ - VpcId?: String; - /** - * One or more user-defined key-value pairs to be added to the stack attributes. - */ - Attributes?: StackAttributes; - /** - * The stack's AWS Identity and Access Management (IAM) role, which allows AWS OpsWorks Stacks to work with AWS resources on your behalf. You must set this parameter to the Amazon Resource Name (ARN) for an existing IAM role. For more information about IAM ARNs, see Using Identifiers. - */ - ServiceRoleArn: String; - /** - * The Amazon Resource Name (ARN) of an IAM profile that is the default profile for all of the stack's EC2 instances. For more information about IAM ARNs, see Using Identifiers. - */ - DefaultInstanceProfileArn: String; - /** - * The stack's default operating system, which is installed on every instance unless you specify a different operating system when you create the instance. You can specify one of the following. A supported Linux operating system: An Amazon Linux version, such as Amazon Linux 2017.03, Amazon Linux 2016.09, Amazon Linux 2016.03, Amazon Linux 2015.09, or Amazon Linux 2015.03. A supported Ubuntu operating system, such as Ubuntu 16.04 LTS, Ubuntu 14.04 LTS, or Ubuntu 12.04 LTS. CentOS Linux 7 Red Hat Enterprise Linux 7 A supported Windows operating system, such as Microsoft Windows Server 2012 R2 Base, Microsoft Windows Server 2012 R2 with SQL Server Express, Microsoft Windows Server 2012 R2 with SQL Server Standard, or Microsoft Windows Server 2012 R2 with SQL Server Web. A custom AMI: Custom. You specify the custom AMI you want to use when you create instances. For more information, see Using Custom AMIs. The default option is the current Amazon Linux version. For more information on the supported operating systems, see AWS OpsWorks Stacks Operating Systems. - */ - DefaultOs?: String; - /** - * The stack's host name theme, with spaces replaced by underscores. The theme is used to generate host names for the stack's instances. By default, HostnameTheme is set to Layer_Dependent, which creates host names by appending integers to the layer's short name. The other themes are: Baked_Goods Clouds Europe_Cities Fruits Greek_Deities Legendary_creatures_from_Japan Planets_and_Moons Roman_Deities Scottish_Islands US_Cities Wild_Cats To obtain a generated host name, call GetHostNameSuggestion, which returns a host name based on the current theme. - */ - HostnameTheme?: String; - /** - * The stack's default Availability Zone, which must be in the specified region. For more information, see Regions and Endpoints. If you also specify a value for DefaultSubnetId, the subnet must be in the same zone. For more information, see the VpcId parameter description. - */ - DefaultAvailabilityZone?: String; - /** - * The stack's default VPC subnet ID. This parameter is required if you specify a value for the VpcId parameter. All instances are launched into this subnet unless you specify otherwise when you create the instance. If you also specify a value for DefaultAvailabilityZone, the subnet must be in that zone. For information on default values and when this parameter is required, see the VpcId parameter description. - */ - DefaultSubnetId?: String; - /** - * A string that contains user-defined, custom JSON. It can be used to override the corresponding default stack configuration attribute values or to pass data to recipes. The string should be in the following format: "{\"key1\": \"value1\", \"key2\": \"value2\",...}" For more information on custom JSON, see Use Custom JSON to Modify the Stack Configuration Attributes. - */ - CustomJson?: String; - /** - * The configuration manager. When you create a stack we recommend that you use the configuration manager to specify the Chef version: 12, 11.10, or 11.4 for Linux stacks, or 12.2 for Windows stacks. The default value for Linux stacks is currently 11.4. - */ - ConfigurationManager?: StackConfigurationManager; - /** - * A ChefConfiguration object that specifies whether to enable Berkshelf and the Berkshelf version on Chef 11.10 stacks. For more information, see Create a New Stack. - */ - ChefConfiguration?: ChefConfiguration; - /** - * Whether the stack uses custom cookbooks. - */ - UseCustomCookbooks?: Boolean; - /** - * Whether to associate the AWS OpsWorks Stacks built-in security groups with the stack's layers. AWS OpsWorks Stacks provides a standard set of built-in security groups, one for each layer, which are associated with layers by default. With UseOpsworksSecurityGroups you can instead provide your own custom security groups. UseOpsworksSecurityGroups has the following settings: True - AWS OpsWorks Stacks automatically associates the appropriate built-in security group with each layer (default setting). You can associate additional security groups with a layer after you create it, but you cannot delete the built-in security group. False - AWS OpsWorks Stacks does not associate built-in security groups with layers. You must create appropriate EC2 security groups and associate a security group with each layer that you create. However, you can still manually associate a built-in security group with a layer on creation; custom security groups are required only for those layers that need custom settings. For more information, see Create a New Stack. - */ - UseOpsworksSecurityGroups?: Boolean; - CustomCookbooksSource?: Source; - /** - * A default Amazon EC2 key pair name. The default value is none. If you specify a key pair name, AWS OpsWorks installs the public key on the instance and you can use the private key with an SSH client to log in to the instance. For more information, see Using SSH to Communicate with an Instance and Managing SSH Access. You can override this setting by specifying a different key pair, or no key pair, when you create an instance. - */ - DefaultSshKeyName?: String; - /** - * The default root device type. This value is the default for all instances in the stack, but you can override it when you create an instance. The default option is instance-store. For more information, see Storage for the Root Device. - */ - DefaultRootDeviceType?: RootDeviceType; - /** - * The default AWS OpsWorks Stacks agent version. You have the following options: Auto-update - Set this parameter to LATEST. AWS OpsWorks Stacks automatically installs new agent versions on the stack's instances as soon as they are available. Fixed version - Set this parameter to your preferred agent version. To update the agent version, you must edit the stack configuration and specify a new version. AWS OpsWorks Stacks then automatically installs that version on the stack's instances. The default setting is the most recent release of the agent. To specify an agent version, you must use the complete version number, not the abbreviated number shown on the console. For a list of available agent version numbers, call DescribeAgentVersions. AgentVersion cannot be set to Chef 12.2. You can also specify an agent version when you create or update an instance, which overrides the stack's default setting. - */ - AgentVersion?: String; - } - export interface CreateStackResult { - /** - * The stack ID, which is an opaque string that you use to identify the stack when performing actions such as DescribeStacks. - */ - StackId?: String; - } - export interface CreateUserProfileRequest { - /** - * The user's IAM ARN; this can also be a federated user's ARN. - */ - IamUserArn: String; - /** - * The user's SSH user name. The allowable characters are [a-z], [A-Z], [0-9], '-', and '_'. If the specified name includes other punctuation marks, AWS OpsWorks Stacks removes them. For example, my.name will be changed to myname. If you do not specify an SSH user name, AWS OpsWorks Stacks generates one from the IAM user name. - */ - SshUsername?: String; - /** - * The user's public SSH key. - */ - SshPublicKey?: String; - /** - * Whether users can specify their own SSH public key through the My Settings page. For more information, see Setting an IAM User's Public SSH Key. - */ - AllowSelfManagement?: Boolean; - } - export interface CreateUserProfileResult { - /** - * The user's IAM ARN. - */ - IamUserArn?: String; - } - export type DailyAutoScalingSchedule = {[key: string]: Switch}; - export interface DataSource { - /** - * The data source's type, AutoSelectOpsworksMysqlInstance, OpsworksMysqlInstance, or RdsDbInstance. - */ - Type?: String; - /** - * The data source's ARN. - */ - Arn?: String; - /** - * The database name. - */ - DatabaseName?: String; - } - export type DataSources = DataSource[]; - export type DateTime = string; - export interface DeleteAppRequest { - /** - * The app ID. - */ - AppId: String; - } - export interface DeleteInstanceRequest { - /** - * The instance ID. - */ - InstanceId: String; - /** - * Whether to delete the instance Elastic IP address. - */ - DeleteElasticIp?: Boolean; - /** - * Whether to delete the instance's Amazon EBS volumes. - */ - DeleteVolumes?: Boolean; - } - export interface DeleteLayerRequest { - /** - * The layer ID. - */ - LayerId: String; - } - export interface DeleteStackRequest { - /** - * The stack ID. - */ - StackId: String; - } - export interface DeleteUserProfileRequest { - /** - * The user's IAM ARN. This can also be a federated user's ARN. - */ - IamUserArn: String; - } - export interface Deployment { - /** - * The deployment ID. - */ - DeploymentId?: String; - /** - * The stack ID. - */ - StackId?: String; - /** - * The app ID. - */ - AppId?: String; - /** - * Date when the deployment was created. - */ - CreatedAt?: DateTime; - /** - * Date when the deployment completed. - */ - CompletedAt?: DateTime; - /** - * The deployment duration. - */ - Duration?: Integer; - /** - * The user's IAM ARN. - */ - IamUserArn?: String; - /** - * A user-defined comment. - */ - Comment?: String; - Command?: DeploymentCommand; - /** - * The deployment status: running successful failed - */ - Status?: String; - /** - * A string that contains user-defined custom JSON. It can be used to override the corresponding default stack configuration attribute values for stack or to pass data to recipes. The string should be in the following format: "{\"key1\": \"value1\", \"key2\": \"value2\",...}" For more information on custom JSON, see Use Custom JSON to Modify the Stack Configuration Attributes. - */ - CustomJson?: String; - /** - * The IDs of the target instances. - */ - InstanceIds?: Strings; - } - export interface DeploymentCommand { - /** - * Specifies the operation. You can specify only one command. For stacks, the following commands are available: execute_recipes: Execute one or more recipes. To specify the recipes, set an Args parameter named recipes to the list of recipes to be executed. For example, to execute phpapp::appsetup, set Args to {"recipes":["phpapp::appsetup"]}. install_dependencies: Install the stack's dependencies. update_custom_cookbooks: Update the stack's custom cookbooks. update_dependencies: Update the stack's dependencies. The update_dependencies and install_dependencies commands are supported only for Linux instances. You can run the commands successfully on Windows instances, but they do nothing. For apps, the following commands are available: deploy: Deploy an app. Ruby on Rails apps have an optional Args parameter named migrate. Set Args to {"migrate":["true"]} to migrate the database. The default setting is {"migrate":["false"]}. rollback Roll the app back to the previous version. When you update an app, AWS OpsWorks Stacks stores the previous version, up to a maximum of five versions. You can use this command to roll an app back as many as four versions. start: Start the app's web or application server. stop: Stop the app's web or application server. restart: Restart the app's web or application server. undeploy: Undeploy the app. - */ - Name: DeploymentCommandName; - /** - * The arguments of those commands that take arguments. It should be set to a JSON object with the following format: {"arg_name1" : ["value1", "value2", ...], "arg_name2" : ["value1", "value2", ...], ...} The update_dependencies command takes two arguments: upgrade_os_to - Specifies the desired Amazon Linux version for instances whose OS you want to upgrade, such as Amazon Linux 2016.09. You must also set the allow_reboot argument to true. allow_reboot - Specifies whether to allow AWS OpsWorks Stacks to reboot the instances if necessary, after installing the updates. This argument can be set to either true or false. The default value is false. For example, to upgrade an instance to Amazon Linux 2016.09, set Args to the following. { "upgrade_os_to":["Amazon Linux 2016.09"], "allow_reboot":["true"] } - */ - Args?: DeploymentCommandArgs; - } - export type DeploymentCommandArgs = {[key: string]: Strings}; - export type DeploymentCommandName = "install_dependencies"|"update_dependencies"|"update_custom_cookbooks"|"execute_recipes"|"configure"|"setup"|"deploy"|"rollback"|"start"|"stop"|"restart"|"undeploy"|string; - export type Deployments = Deployment[]; - export interface DeregisterEcsClusterRequest { - /** - * The cluster's ARN. - */ - EcsClusterArn: String; - } - export interface DeregisterElasticIpRequest { - /** - * The Elastic IP address. - */ - ElasticIp: String; - } - export interface DeregisterInstanceRequest { - /** - * The instance ID. - */ - InstanceId: String; - } - export interface DeregisterRdsDbInstanceRequest { - /** - * The Amazon RDS instance's ARN. - */ - RdsDbInstanceArn: String; - } - export interface DeregisterVolumeRequest { - /** - * The AWS OpsWorks Stacks volume ID, which is the GUID that AWS OpsWorks Stacks assigned to the instance when you registered the volume with the stack, not the Amazon EC2 volume ID. - */ - VolumeId: String; - } - export interface DescribeAgentVersionsRequest { - /** - * The stack ID. - */ - StackId?: String; - /** - * The configuration manager. - */ - ConfigurationManager?: StackConfigurationManager; - } - export interface DescribeAgentVersionsResult { - /** - * The agent versions for the specified stack or configuration manager. Note that this value is the complete version number, not the abbreviated number used by the console. - */ - AgentVersions?: AgentVersions; - } - export interface DescribeAppsRequest { - /** - * The app stack ID. If you use this parameter, DescribeApps returns a description of the apps in the specified stack. - */ - StackId?: String; - /** - * An array of app IDs for the apps to be described. If you use this parameter, DescribeApps returns a description of the specified apps. Otherwise, it returns a description of every app. - */ - AppIds?: Strings; - } - export interface DescribeAppsResult { - /** - * An array of App objects that describe the specified apps. - */ - Apps?: Apps; - } - export interface DescribeCommandsRequest { - /** - * The deployment ID. If you include this parameter, DescribeCommands returns a description of the commands associated with the specified deployment. - */ - DeploymentId?: String; - /** - * The instance ID. If you include this parameter, DescribeCommands returns a description of the commands associated with the specified instance. - */ - InstanceId?: String; - /** - * An array of command IDs. If you include this parameter, DescribeCommands returns a description of the specified commands. Otherwise, it returns a description of every command. - */ - CommandIds?: Strings; - } - export interface DescribeCommandsResult { - /** - * An array of Command objects that describe each of the specified commands. - */ - Commands?: Commands; - } - export interface DescribeDeploymentsRequest { - /** - * The stack ID. If you include this parameter, DescribeDeployments returns a description of the commands associated with the specified stack. - */ - StackId?: String; - /** - * The app ID. If you include this parameter, DescribeDeployments returns a description of the commands associated with the specified app. - */ - AppId?: String; - /** - * An array of deployment IDs to be described. If you include this parameter, DescribeDeployments returns a description of the specified deployments. Otherwise, it returns a description of every deployment. - */ - DeploymentIds?: Strings; - } - export interface DescribeDeploymentsResult { - /** - * An array of Deployment objects that describe the deployments. - */ - Deployments?: Deployments; - } - export interface DescribeEcsClustersRequest { - /** - * A list of ARNs, one for each cluster to be described. - */ - EcsClusterArns?: Strings; - /** - * A stack ID. DescribeEcsClusters returns a description of the cluster that is registered with the stack. - */ - StackId?: String; - /** - * If the previous paginated request did not return all of the remaining results, the response object'sNextToken parameter value is set to a token. To retrieve the next set of results, call DescribeEcsClusters again and assign that token to the request object's NextToken parameter. If there are no remaining results, the previous response object's NextToken parameter is set to null. - */ - NextToken?: String; - /** - * To receive a paginated response, use this parameter to specify the maximum number of results to be returned with a single call. If the number of available results exceeds this maximum, the response includes a NextToken value that you can assign to the NextToken request parameter to get the next set of results. - */ - MaxResults?: Integer; - } - export interface DescribeEcsClustersResult { - /** - * A list of EcsCluster objects containing the cluster descriptions. - */ - EcsClusters?: EcsClusters; - /** - * If a paginated request does not return all of the remaining results, this parameter is set to a token that you can assign to the request object's NextToken parameter to retrieve the next set of results. If the previous paginated request returned all of the remaining results, this parameter is set to null. - */ - NextToken?: String; - } - export interface DescribeElasticIpsRequest { - /** - * The instance ID. If you include this parameter, DescribeElasticIps returns a description of the Elastic IP addresses associated with the specified instance. - */ - InstanceId?: String; - /** - * A stack ID. If you include this parameter, DescribeElasticIps returns a description of the Elastic IP addresses that are registered with the specified stack. - */ - StackId?: String; - /** - * An array of Elastic IP addresses to be described. If you include this parameter, DescribeElasticIps returns a description of the specified Elastic IP addresses. Otherwise, it returns a description of every Elastic IP address. - */ - Ips?: Strings; - } - export interface DescribeElasticIpsResult { - /** - * An ElasticIps object that describes the specified Elastic IP addresses. - */ - ElasticIps?: ElasticIps; - } - export interface DescribeElasticLoadBalancersRequest { - /** - * A stack ID. The action describes the stack's Elastic Load Balancing instances. - */ - StackId?: String; - /** - * A list of layer IDs. The action describes the Elastic Load Balancing instances for the specified layers. - */ - LayerIds?: Strings; - } - export interface DescribeElasticLoadBalancersResult { - /** - * A list of ElasticLoadBalancer objects that describe the specified Elastic Load Balancing instances. - */ - ElasticLoadBalancers?: ElasticLoadBalancers; - } - export interface DescribeInstancesRequest { - /** - * A stack ID. If you use this parameter, DescribeInstances returns descriptions of the instances associated with the specified stack. - */ - StackId?: String; - /** - * A layer ID. If you use this parameter, DescribeInstances returns descriptions of the instances associated with the specified layer. - */ - LayerId?: String; - /** - * An array of instance IDs to be described. If you use this parameter, DescribeInstances returns a description of the specified instances. Otherwise, it returns a description of every instance. - */ - InstanceIds?: Strings; - } - export interface DescribeInstancesResult { - /** - * An array of Instance objects that describe the instances. - */ - Instances?: Instances; - } - export interface DescribeLayersRequest { - /** - * The stack ID. - */ - StackId?: String; - /** - * An array of layer IDs that specify the layers to be described. If you omit this parameter, DescribeLayers returns a description of every layer in the specified stack. - */ - LayerIds?: Strings; - } - export interface DescribeLayersResult { - /** - * An array of Layer objects that describe the layers. - */ - Layers?: Layers; - } - export interface DescribeLoadBasedAutoScalingRequest { - /** - * An array of layer IDs. - */ - LayerIds: Strings; - } - export interface DescribeLoadBasedAutoScalingResult { - /** - * An array of LoadBasedAutoScalingConfiguration objects that describe each layer's configuration. - */ - LoadBasedAutoScalingConfigurations?: LoadBasedAutoScalingConfigurations; - } - export interface DescribeMyUserProfileResult { - /** - * A UserProfile object that describes the user's SSH information. - */ - UserProfile?: SelfUserProfile; - } - export interface DescribePermissionsRequest { - /** - * The user's IAM ARN. This can also be a federated user's ARN. For more information about IAM ARNs, see Using Identifiers. - */ - IamUserArn?: String; - /** - * The stack ID. - */ - StackId?: String; - } - export interface DescribePermissionsResult { - /** - * An array of Permission objects that describe the stack permissions. If the request object contains only a stack ID, the array contains a Permission object with permissions for each of the stack IAM ARNs. If the request object contains only an IAM ARN, the array contains a Permission object with permissions for each of the user's stack IDs. If the request contains a stack ID and an IAM ARN, the array contains a single Permission object with permissions for the specified stack and IAM ARN. - */ - Permissions?: Permissions; - } - export interface DescribeRaidArraysRequest { - /** - * The instance ID. If you use this parameter, DescribeRaidArrays returns descriptions of the RAID arrays associated with the specified instance. - */ - InstanceId?: String; - /** - * The stack ID. - */ - StackId?: String; - /** - * An array of RAID array IDs. If you use this parameter, DescribeRaidArrays returns descriptions of the specified arrays. Otherwise, it returns a description of every array. - */ - RaidArrayIds?: Strings; - } - export interface DescribeRaidArraysResult { - /** - * A RaidArrays object that describes the specified RAID arrays. - */ - RaidArrays?: RaidArrays; - } - export interface DescribeRdsDbInstancesRequest { - /** - * The stack ID that the instances are registered with. The operation returns descriptions of all registered Amazon RDS instances. - */ - StackId: String; - /** - * An array containing the ARNs of the instances to be described. - */ - RdsDbInstanceArns?: Strings; - } - export interface DescribeRdsDbInstancesResult { - /** - * An a array of RdsDbInstance objects that describe the instances. - */ - RdsDbInstances?: RdsDbInstances; - } - export interface DescribeServiceErrorsRequest { - /** - * The stack ID. If you use this parameter, DescribeServiceErrors returns descriptions of the errors associated with the specified stack. - */ - StackId?: String; - /** - * The instance ID. If you use this parameter, DescribeServiceErrors returns descriptions of the errors associated with the specified instance. - */ - InstanceId?: String; - /** - * An array of service error IDs. If you use this parameter, DescribeServiceErrors returns descriptions of the specified errors. Otherwise, it returns a description of every error. - */ - ServiceErrorIds?: Strings; - } - export interface DescribeServiceErrorsResult { - /** - * An array of ServiceError objects that describe the specified service errors. - */ - ServiceErrors?: ServiceErrors; - } - export interface DescribeStackProvisioningParametersRequest { - /** - * The stack ID - */ - StackId: String; - } - export interface DescribeStackProvisioningParametersResult { - /** - * The AWS OpsWorks Stacks agent installer's URL. - */ - AgentInstallerUrl?: String; - /** - * An embedded object that contains the provisioning parameters. - */ - Parameters?: Parameters; - } - export interface DescribeStackSummaryRequest { - /** - * The stack ID. - */ - StackId: String; - } - export interface DescribeStackSummaryResult { - /** - * A StackSummary object that contains the results. - */ - StackSummary?: StackSummary; - } - export interface DescribeStacksRequest { - /** - * An array of stack IDs that specify the stacks to be described. If you omit this parameter, DescribeStacks returns a description of every stack. - */ - StackIds?: Strings; - } - export interface DescribeStacksResult { - /** - * An array of Stack objects that describe the stacks. - */ - Stacks?: Stacks; - } - export interface DescribeTimeBasedAutoScalingRequest { - /** - * An array of instance IDs. - */ - InstanceIds: Strings; - } - export interface DescribeTimeBasedAutoScalingResult { - /** - * An array of TimeBasedAutoScalingConfiguration objects that describe the configuration for the specified instances. - */ - TimeBasedAutoScalingConfigurations?: TimeBasedAutoScalingConfigurations; - } - export interface DescribeUserProfilesRequest { - /** - * An array of IAM or federated user ARNs that identify the users to be described. - */ - IamUserArns?: Strings; - } - export interface DescribeUserProfilesResult { - /** - * A Users object that describes the specified users. - */ - UserProfiles?: UserProfiles; - } - export interface DescribeVolumesRequest { - /** - * The instance ID. If you use this parameter, DescribeVolumes returns descriptions of the volumes associated with the specified instance. - */ - InstanceId?: String; - /** - * A stack ID. The action describes the stack's registered Amazon EBS volumes. - */ - StackId?: String; - /** - * The RAID array ID. If you use this parameter, DescribeVolumes returns descriptions of the volumes associated with the specified RAID array. - */ - RaidArrayId?: String; - /** - * Am array of volume IDs. If you use this parameter, DescribeVolumes returns descriptions of the specified volumes. Otherwise, it returns a description of every volume. - */ - VolumeIds?: Strings; - } - export interface DescribeVolumesResult { - /** - * An array of volume IDs. - */ - Volumes?: Volumes; - } - export interface DetachElasticLoadBalancerRequest { - /** - * The Elastic Load Balancing instance's name. - */ - ElasticLoadBalancerName: String; - /** - * The ID of the layer that the Elastic Load Balancing instance is attached to. - */ - LayerId: String; - } - export interface DisassociateElasticIpRequest { - /** - * The Elastic IP address. - */ - ElasticIp: String; - } - export type Double = number; - export interface EbsBlockDevice { - /** - * The snapshot ID. - */ - SnapshotId?: String; - /** - * The number of I/O operations per second (IOPS) that the volume supports. For more information, see EbsBlockDevice. - */ - Iops?: Integer; - /** - * The volume size, in GiB. For more information, see EbsBlockDevice. - */ - VolumeSize?: Integer; - /** - * The volume type. gp2 for General Purpose (SSD) volumes, io1 for Provisioned IOPS (SSD) volumes, and standard for Magnetic volumes. - */ - VolumeType?: VolumeType; - /** - * Whether the volume is deleted on instance termination. - */ - DeleteOnTermination?: Boolean; - } - export interface EcsCluster { - /** - * The cluster's ARN. - */ - EcsClusterArn?: String; - /** - * The cluster name. - */ - EcsClusterName?: String; - /** - * The stack ID. - */ - StackId?: String; - /** - * The time and date that the cluster was registered with the stack. - */ - RegisteredAt?: DateTime; - } - export type EcsClusters = EcsCluster[]; - export interface ElasticIp { - /** - * The IP address. - */ - Ip?: String; - /** - * The name. - */ - Name?: String; - /** - * The domain. - */ - Domain?: String; - /** - * The AWS region. For more information, see Regions and Endpoints. - */ - Region?: String; - /** - * The ID of the instance that the address is attached to. - */ - InstanceId?: String; - } - export type ElasticIps = ElasticIp[]; - export interface ElasticLoadBalancer { - /** - * The Elastic Load Balancing instance's name. - */ - ElasticLoadBalancerName?: String; - /** - * The instance's AWS region. - */ - Region?: String; - /** - * The instance's public DNS name. - */ - DnsName?: String; - /** - * The ID of the stack that the instance is associated with. - */ - StackId?: String; - /** - * The ID of the layer that the instance is attached to. - */ - LayerId?: String; - /** - * The VPC ID. - */ - VpcId?: String; - /** - * A list of Availability Zones. - */ - AvailabilityZones?: Strings; - /** - * A list of subnet IDs, if the stack is running in a VPC. - */ - SubnetIds?: Strings; - /** - * A list of the EC2 instances that the Elastic Load Balancing instance is managing traffic for. - */ - Ec2InstanceIds?: Strings; - } - export type ElasticLoadBalancers = ElasticLoadBalancer[]; - export interface EnvironmentVariable { - /** - * (Required) The environment variable's name, which can consist of up to 64 characters and must be specified. The name can contain upper- and lowercase letters, numbers, and underscores (_), but it must start with a letter or underscore. - */ - Key: String; - /** - * (Optional) The environment variable's value, which can be left empty. If you specify a value, it can contain up to 256 characters, which must all be printable. - */ - Value: String; - /** - * (Optional) Whether the variable's value will be returned by the DescribeApps action. To conceal an environment variable's value, set Secure to true. DescribeApps then returns *****FILTERED***** instead of the actual value. The default value for Secure is false. - */ - Secure?: Boolean; - } - export type EnvironmentVariables = EnvironmentVariable[]; - export interface GetHostnameSuggestionRequest { - /** - * The layer ID. - */ - LayerId: String; - } - export interface GetHostnameSuggestionResult { - /** - * The layer ID. - */ - LayerId?: String; - /** - * The generated host name. - */ - Hostname?: String; - } - export interface GrantAccessRequest { - /** - * The instance's AWS OpsWorks Stacks ID. - */ - InstanceId: String; - /** - * The length of time (in minutes) that the grant is valid. When the grant expires at the end of this period, the user will no longer be able to use the credentials to log in. If the user is logged in at the time, he or she automatically will be logged out. - */ - ValidForInMinutes?: ValidForInMinutes; - } - export interface GrantAccessResult { - /** - * A TemporaryCredential object that contains the data needed to log in to the instance by RDP clients, such as the Microsoft Remote Desktop Connection. - */ - TemporaryCredential?: TemporaryCredential; - } - export type Hour = string; - export interface Instance { - /** - * The agent version. This parameter is set to INHERIT if the instance inherits the default stack setting or to a a version number for a fixed agent version. - */ - AgentVersion?: String; - /** - * A custom AMI ID to be used to create the instance. For more information, see Instances - */ - AmiId?: String; - /** - * The instance architecture: "i386" or "x86_64". - */ - Architecture?: Architecture; - Arn?: String; - /** - * For load-based or time-based instances, the type. - */ - AutoScalingType?: AutoScalingType; - /** - * The instance Availability Zone. For more information, see Regions and Endpoints. - */ - AvailabilityZone?: String; - /** - * An array of BlockDeviceMapping objects that specify the instance's block device mappings. - */ - BlockDeviceMappings?: BlockDeviceMappings; - /** - * The time that the instance was created. - */ - CreatedAt?: DateTime; - /** - * Whether this is an Amazon EBS-optimized instance. - */ - EbsOptimized?: Boolean; - /** - * The ID of the associated Amazon EC2 instance. - */ - Ec2InstanceId?: String; - /** - * For container instances, the Amazon ECS cluster's ARN. - */ - EcsClusterArn?: String; - /** - * For container instances, the instance's ARN. - */ - EcsContainerInstanceArn?: String; - /** - * The instance Elastic IP address . - */ - ElasticIp?: String; - /** - * The instance host name. - */ - Hostname?: String; - /** - * For registered instances, the infrastructure class: ec2 or on-premises. - */ - InfrastructureClass?: String; - /** - * Whether to install operating system and package updates when the instance boots. The default value is true. If this value is set to false, you must then update your instances manually by using CreateDeployment to run the update_dependencies stack command or by manually running yum (Amazon Linux) or apt-get (Ubuntu) on the instances. We strongly recommend using the default value of true, to ensure that your instances have the latest security updates. - */ - InstallUpdatesOnBoot?: Boolean; - /** - * The instance ID. - */ - InstanceId?: String; - /** - * The ARN of the instance's IAM profile. For more information about IAM ARNs, see Using Identifiers. - */ - InstanceProfileArn?: String; - /** - * The instance type, such as t2.micro. - */ - InstanceType?: String; - /** - * The ID of the last service error. For more information, call DescribeServiceErrors. - */ - LastServiceErrorId?: String; - /** - * An array containing the instance layer IDs. - */ - LayerIds?: Strings; - /** - * The instance's operating system. - */ - Os?: String; - /** - * The instance's platform. - */ - Platform?: String; - /** - * The instance's private DNS name. - */ - PrivateDns?: String; - /** - * The instance's private IP address. - */ - PrivateIp?: String; - /** - * The instance public DNS name. - */ - PublicDns?: String; - /** - * The instance public IP address. - */ - PublicIp?: String; - /** - * For registered instances, who performed the registration. - */ - RegisteredBy?: String; - /** - * The instance's reported AWS OpsWorks Stacks agent version. - */ - ReportedAgentVersion?: String; - /** - * For registered instances, the reported operating system. - */ - ReportedOs?: ReportedOs; - /** - * The instance's root device type. For more information, see Storage for the Root Device. - */ - RootDeviceType?: RootDeviceType; - /** - * The root device volume ID. - */ - RootDeviceVolumeId?: String; - /** - * An array containing the instance security group IDs. - */ - SecurityGroupIds?: Strings; - /** - * The SSH key's Deep Security Agent (DSA) fingerprint. - */ - SshHostDsaKeyFingerprint?: String; - /** - * The SSH key's RSA fingerprint. - */ - SshHostRsaKeyFingerprint?: String; - /** - * The instance's Amazon EC2 key-pair name. - */ - SshKeyName?: String; - /** - * The stack ID. - */ - StackId?: String; - /** - * The instance status: booting connection_lost online pending rebooting requested running_setup setup_failed shutting_down start_failed stop_failed stopped stopping terminated terminating - */ - Status?: String; - /** - * The instance's subnet ID; applicable only if the stack is running in a VPC. - */ - SubnetId?: String; - /** - * The instance's tenancy option, such as dedicated or host. - */ - Tenancy?: String; - /** - * The instance's virtualization type: paravirtual or hvm. - */ - VirtualizationType?: VirtualizationType; - } - export interface InstanceIdentity { - /** - * A JSON document that contains the metadata. - */ - Document?: String; - /** - * A signature that can be used to verify the document's accuracy and authenticity. - */ - Signature?: String; - } - export type Instances = Instance[]; - export interface InstancesCount { - /** - * The number of instances in the Assigning state. - */ - Assigning?: Integer; - /** - * The number of instances with booting status. - */ - Booting?: Integer; - /** - * The number of instances with connection_lost status. - */ - ConnectionLost?: Integer; - /** - * The number of instances in the Deregistering state. - */ - Deregistering?: Integer; - /** - * The number of instances with online status. - */ - Online?: Integer; - /** - * The number of instances with pending status. - */ - Pending?: Integer; - /** - * The number of instances with rebooting status. - */ - Rebooting?: Integer; - /** - * The number of instances in the Registered state. - */ - Registered?: Integer; - /** - * The number of instances in the Registering state. - */ - Registering?: Integer; - /** - * The number of instances with requested status. - */ - Requested?: Integer; - /** - * The number of instances with running_setup status. - */ - RunningSetup?: Integer; - /** - * The number of instances with setup_failed status. - */ - SetupFailed?: Integer; - /** - * The number of instances with shutting_down status. - */ - ShuttingDown?: Integer; - /** - * The number of instances with start_failed status. - */ - StartFailed?: Integer; - /** - * The number of instances with stopped status. - */ - Stopped?: Integer; - /** - * The number of instances with stopping status. - */ - Stopping?: Integer; - /** - * The number of instances with terminated status. - */ - Terminated?: Integer; - /** - * The number of instances with terminating status. - */ - Terminating?: Integer; - /** - * The number of instances in the Unassigning state. - */ - Unassigning?: Integer; - } - export type Integer = number; - export interface Layer { - Arn?: String; - /** - * The layer stack ID. - */ - StackId?: String; - /** - * The layer ID. - */ - LayerId?: String; - /** - * The layer type. - */ - Type?: LayerType; - /** - * The layer name. - */ - Name?: String; - /** - * The layer short name. - */ - Shortname?: String; - /** - * The layer attributes. For the HaproxyStatsPassword, MysqlRootPassword, and GangliaPassword attributes, AWS OpsWorks Stacks returns *****FILTERED***** instead of the actual value For an ECS Cluster layer, AWS OpsWorks Stacks the EcsClusterArn attribute is set to the cluster's ARN. - */ - Attributes?: LayerAttributes; - /** - * The Amazon CloudWatch Logs configuration settings for the layer. - */ - CloudWatchLogsConfiguration?: CloudWatchLogsConfiguration; - /** - * The ARN of the default IAM profile to be used for the layer's EC2 instances. For more information about IAM ARNs, see Using Identifiers. - */ - CustomInstanceProfileArn?: String; - /** - * A JSON formatted string containing the layer's custom stack configuration and deployment attributes. - */ - CustomJson?: String; - /** - * An array containing the layer's custom security group IDs. - */ - CustomSecurityGroupIds?: Strings; - /** - * An array containing the layer's security group names. - */ - DefaultSecurityGroupNames?: Strings; - /** - * An array of Package objects that describe the layer's packages. - */ - Packages?: Strings; - /** - * A VolumeConfigurations object that describes the layer's Amazon EBS volumes. - */ - VolumeConfigurations?: VolumeConfigurations; - /** - * Whether auto healing is disabled for the layer. - */ - EnableAutoHealing?: Boolean; - /** - * Whether to automatically assign an Elastic IP address to the layer's instances. For more information, see How to Edit a Layer. - */ - AutoAssignElasticIps?: Boolean; - /** - * For stacks that are running in a VPC, whether to automatically assign a public IP address to the layer's instances. For more information, see How to Edit a Layer. - */ - AutoAssignPublicIps?: Boolean; - DefaultRecipes?: Recipes; - /** - * A LayerCustomRecipes object that specifies the layer's custom recipes. - */ - CustomRecipes?: Recipes; - /** - * Date when the layer was created. - */ - CreatedAt?: DateTime; - /** - * Whether to install operating system and package updates when the instance boots. The default value is true. If this value is set to false, you must then update your instances manually by using CreateDeployment to run the update_dependencies stack command or manually running yum (Amazon Linux) or apt-get (Ubuntu) on the instances. We strongly recommend using the default value of true, to ensure that your instances have the latest security updates. - */ - InstallUpdatesOnBoot?: Boolean; - /** - * Whether the layer uses Amazon EBS-optimized instances. - */ - UseEbsOptimizedInstances?: Boolean; - /** - * A LifeCycleEventConfiguration object that specifies the Shutdown event configuration. - */ - LifecycleEventConfiguration?: LifecycleEventConfiguration; - } - export type LayerAttributes = {[key: string]: String}; - export type LayerAttributesKeys = "EcsClusterArn"|"EnableHaproxyStats"|"HaproxyStatsUrl"|"HaproxyStatsUser"|"HaproxyStatsPassword"|"HaproxyHealthCheckUrl"|"HaproxyHealthCheckMethod"|"MysqlRootPassword"|"MysqlRootPasswordUbiquitous"|"GangliaUrl"|"GangliaUser"|"GangliaPassword"|"MemcachedMemory"|"NodejsVersion"|"RubyVersion"|"RubygemsVersion"|"ManageBundler"|"BundlerVersion"|"RailsStack"|"PassengerVersion"|"Jvm"|"JvmVersion"|"JvmOptions"|"JavaAppServer"|"JavaAppServerVersion"|string; - export type LayerType = "aws-flow-ruby"|"ecs-cluster"|"java-app"|"lb"|"web"|"php-app"|"rails-app"|"nodejs-app"|"memcached"|"db-master"|"monitoring-master"|"custom"|string; - export type Layers = Layer[]; - export interface LifecycleEventConfiguration { - /** - * A ShutdownEventConfiguration object that specifies the Shutdown event configuration. - */ - Shutdown?: ShutdownEventConfiguration; - } - export interface ListTagsRequest { - /** - * The stack or layer's Amazon Resource Number (ARN). - */ - ResourceArn: ResourceArn; - /** - * Do not use. A validation exception occurs if you add a MaxResults parameter to a ListTagsRequest call. - */ - MaxResults?: MaxResults; - /** - * Do not use. A validation exception occurs if you add a NextToken parameter to a ListTagsRequest call. - */ - NextToken?: NextToken; - } - export interface ListTagsResult { - /** - * A set of key-value pairs that contain tag keys and tag values that are attached to a stack or layer. - */ - Tags?: Tags; - /** - * If a paginated request does not return all of the remaining results, this parameter is set to a token that you can assign to the request object's NextToken parameter to get the next set of results. If the previous paginated request returned all of the remaining results, this parameter is set to null. - */ - NextToken?: NextToken; - } - export interface LoadBasedAutoScalingConfiguration { - /** - * The layer ID. - */ - LayerId?: String; - /** - * Whether load-based auto scaling is enabled for the layer. - */ - Enable?: Boolean; - /** - * An AutoScalingThresholds object that describes the upscaling configuration, which defines how and when AWS OpsWorks Stacks increases the number of instances. - */ - UpScaling?: AutoScalingThresholds; - /** - * An AutoScalingThresholds object that describes the downscaling configuration, which defines how and when AWS OpsWorks Stacks reduces the number of instances. - */ - DownScaling?: AutoScalingThresholds; - } - export type LoadBasedAutoScalingConfigurations = LoadBasedAutoScalingConfiguration[]; - export type MaxResults = number; - export type Minute = number; - export type NextToken = string; - export type Parameters = {[key: string]: String}; - export interface Permission { - /** - * A stack ID. - */ - StackId?: String; - /** - * The Amazon Resource Name (ARN) for an AWS Identity and Access Management (IAM) role. For more information about IAM ARNs, see Using Identifiers. - */ - IamUserArn?: String; - /** - * Whether the user can use SSH. - */ - AllowSsh?: Boolean; - /** - * Whether the user can use sudo. - */ - AllowSudo?: Boolean; - /** - * The user's permission level, which must be the following: deny show deploy manage iam_only For more information on the permissions associated with these levels, see Managing User Permissions - */ - Level?: String; - } - export type Permissions = Permission[]; - export interface RaidArray { - /** - * The array ID. - */ - RaidArrayId?: String; - /** - * The instance ID. - */ - InstanceId?: String; - /** - * The array name. - */ - Name?: String; - /** - * The RAID level. - */ - RaidLevel?: Integer; - /** - * The number of disks in the array. - */ - NumberOfDisks?: Integer; - /** - * The array's size. - */ - Size?: Integer; - /** - * The array's Linux device. For example /dev/mdadm0. - */ - Device?: String; - /** - * The array's mount point. - */ - MountPoint?: String; - /** - * The array's Availability Zone. For more information, see Regions and Endpoints. - */ - AvailabilityZone?: String; - /** - * When the RAID array was created. - */ - CreatedAt?: DateTime; - /** - * The stack ID. - */ - StackId?: String; - /** - * The volume type, standard or PIOPS. - */ - VolumeType?: String; - /** - * For PIOPS volumes, the IOPS per disk. - */ - Iops?: Integer; - } - export type RaidArrays = RaidArray[]; - export interface RdsDbInstance { - /** - * The instance's ARN. - */ - RdsDbInstanceArn?: String; - /** - * The DB instance identifier. - */ - DbInstanceIdentifier?: String; - /** - * The master user name. - */ - DbUser?: String; - /** - * AWS OpsWorks Stacks returns *****FILTERED***** instead of the actual value. - */ - DbPassword?: String; - /** - * The instance's AWS region. - */ - Region?: String; - /** - * The instance's address. - */ - Address?: String; - /** - * The instance's database engine. - */ - Engine?: String; - /** - * The ID of the stack with which the instance is registered. - */ - StackId?: String; - /** - * Set to true if AWS OpsWorks Stacks is unable to discover the Amazon RDS instance. AWS OpsWorks Stacks attempts to discover the instance only once. If this value is set to true, you must deregister the instance, and then register it again. - */ - MissingOnRds?: Boolean; - } - export type RdsDbInstances = RdsDbInstance[]; - export interface RebootInstanceRequest { - /** - * The instance ID. - */ - InstanceId: String; - } - export interface Recipes { - /** - * An array of custom recipe names to be run following a setup event. - */ - Setup?: Strings; - /** - * An array of custom recipe names to be run following a configure event. - */ - Configure?: Strings; - /** - * An array of custom recipe names to be run following a deploy event. - */ - Deploy?: Strings; - /** - * An array of custom recipe names to be run following a undeploy event. - */ - Undeploy?: Strings; - /** - * An array of custom recipe names to be run following a shutdown event. - */ - Shutdown?: Strings; - } - export interface RegisterEcsClusterRequest { - /** - * The cluster's ARN. - */ - EcsClusterArn: String; - /** - * The stack ID. - */ - StackId: String; - } - export interface RegisterEcsClusterResult { - /** - * The cluster's ARN. - */ - EcsClusterArn?: String; - } - export interface RegisterElasticIpRequest { - /** - * The Elastic IP address. - */ - ElasticIp: String; - /** - * The stack ID. - */ - StackId: String; - } - export interface RegisterElasticIpResult { - /** - * The Elastic IP address. - */ - ElasticIp?: String; - } - export interface RegisterInstanceRequest { - /** - * The ID of the stack that the instance is to be registered with. - */ - StackId: String; - /** - * The instance's hostname. - */ - Hostname?: String; - /** - * The instance's public IP address. - */ - PublicIp?: String; - /** - * The instance's private IP address. - */ - PrivateIp?: String; - /** - * The instances public RSA key. This key is used to encrypt communication between the instance and the service. - */ - RsaPublicKey?: String; - /** - * The instances public RSA key fingerprint. - */ - RsaPublicKeyFingerprint?: String; - /** - * An InstanceIdentity object that contains the instance's identity. - */ - InstanceIdentity?: InstanceIdentity; - } - export interface RegisterInstanceResult { - /** - * The registered instance's AWS OpsWorks Stacks ID. - */ - InstanceId?: String; - } - export interface RegisterRdsDbInstanceRequest { - /** - * The stack ID. - */ - StackId: String; - /** - * The Amazon RDS instance's ARN. - */ - RdsDbInstanceArn: String; - /** - * The database's master user name. - */ - DbUser: String; - /** - * The database password. - */ - DbPassword: String; - } - export interface RegisterVolumeRequest { - /** - * The Amazon EBS volume ID. - */ - Ec2VolumeId?: String; - /** - * The stack ID. - */ - StackId: String; - } - export interface RegisterVolumeResult { - /** - * The volume ID. - */ - VolumeId?: String; - } - export interface ReportedOs { - /** - * The operating system family. - */ - Family?: String; - /** - * The operating system name. - */ - Name?: String; - /** - * The operating system version. - */ - Version?: String; - } - export type ResourceArn = string; - export type RootDeviceType = "ebs"|"instance-store"|string; - export interface SelfUserProfile { - /** - * The user's IAM ARN. - */ - IamUserArn?: String; - /** - * The user's name. - */ - Name?: String; - /** - * The user's SSH user name. - */ - SshUsername?: String; - /** - * The user's SSH public key. - */ - SshPublicKey?: String; - } - export interface ServiceError { - /** - * The error ID. - */ - ServiceErrorId?: String; - /** - * The stack ID. - */ - StackId?: String; - /** - * The instance ID. - */ - InstanceId?: String; - /** - * The error type. - */ - Type?: String; - /** - * A message that describes the error. - */ - Message?: String; - /** - * When the error occurred. - */ - CreatedAt?: DateTime; - } - export type ServiceErrors = ServiceError[]; - export interface SetLoadBasedAutoScalingRequest { - /** - * The layer ID. - */ - LayerId: String; - /** - * Enables load-based auto scaling for the layer. - */ - Enable?: Boolean; - /** - * An AutoScalingThresholds object with the upscaling threshold configuration. If the load exceeds these thresholds for a specified amount of time, AWS OpsWorks Stacks starts a specified number of instances. - */ - UpScaling?: AutoScalingThresholds; - /** - * An AutoScalingThresholds object with the downscaling threshold configuration. If the load falls below these thresholds for a specified amount of time, AWS OpsWorks Stacks stops a specified number of instances. - */ - DownScaling?: AutoScalingThresholds; - } - export interface SetPermissionRequest { - /** - * The stack ID. - */ - StackId: String; - /** - * The user's IAM ARN. This can also be a federated user's ARN. - */ - IamUserArn: String; - /** - * The user is allowed to use SSH to communicate with the instance. - */ - AllowSsh?: Boolean; - /** - * The user is allowed to use sudo to elevate privileges. - */ - AllowSudo?: Boolean; - /** - * The user's permission level, which must be set to one of the following strings. You cannot set your own permissions level. deny show deploy manage iam_only For more information on the permissions associated with these levels, see Managing User Permissions. - */ - Level?: String; - } - export interface SetTimeBasedAutoScalingRequest { - /** - * The instance ID. - */ - InstanceId: String; - /** - * An AutoScalingSchedule with the instance schedule. - */ - AutoScalingSchedule?: WeeklyAutoScalingSchedule; - } - export interface ShutdownEventConfiguration { - /** - * The time, in seconds, that AWS OpsWorks Stacks will wait after triggering a Shutdown event before shutting down an instance. - */ - ExecutionTimeout?: Integer; - /** - * Whether to enable Elastic Load Balancing connection draining. For more information, see Connection Draining - */ - DelayUntilElbConnectionsDrained?: Boolean; - } - export interface Source { - /** - * The repository type. - */ - Type?: SourceType; - /** - * The source URL. The following is an example of an Amazon S3 source URL: https://s3.amazonaws.com/opsworks-demo-bucket/opsworks_cookbook_demo.tar.gz. - */ - Url?: String; - /** - * This parameter depends on the repository type. For Amazon S3 bundles, set Username to the appropriate IAM access key ID. For HTTP bundles, Git repositories, and Subversion repositories, set Username to the user name. - */ - Username?: String; - /** - * When included in a request, the parameter depends on the repository type. For Amazon S3 bundles, set Password to the appropriate IAM secret access key. For HTTP bundles and Subversion repositories, set Password to the password. For more information on how to safely handle IAM credentials, see http://docs.aws.amazon.com/general/latest/gr/aws-access-keys-best-practices.html. In responses, AWS OpsWorks Stacks returns *****FILTERED***** instead of the actual value. - */ - Password?: String; - /** - * In requests, the repository's SSH key. In responses, AWS OpsWorks Stacks returns *****FILTERED***** instead of the actual value. - */ - SshKey?: String; - /** - * The application's version. AWS OpsWorks Stacks enables you to easily deploy new versions of an application. One of the simplest approaches is to have branches or revisions in your repository that represent different versions that can potentially be deployed. - */ - Revision?: String; - } - export type SourceType = "git"|"svn"|"archive"|"s3"|string; - export interface SslConfiguration { - /** - * The contents of the certificate's domain.crt file. - */ - Certificate: String; - /** - * The private key; the contents of the certificate's domain.kex file. - */ - PrivateKey: String; - /** - * Optional. Can be used to specify an intermediate certificate authority key or client authentication. - */ - Chain?: String; - } - export interface Stack { - /** - * The stack ID. - */ - StackId?: String; - /** - * The stack name. - */ - Name?: String; - /** - * The stack's ARN. - */ - Arn?: String; - /** - * The stack AWS region, such as "ap-northeast-2". For more information about AWS regions, see Regions and Endpoints. - */ - Region?: String; - /** - * The VPC ID; applicable only if the stack is running in a VPC. - */ - VpcId?: String; - /** - * The stack's attributes. - */ - Attributes?: StackAttributes; - /** - * The stack AWS Identity and Access Management (IAM) role. - */ - ServiceRoleArn?: String; - /** - * The ARN of an IAM profile that is the default profile for all of the stack's EC2 instances. For more information about IAM ARNs, see Using Identifiers. - */ - DefaultInstanceProfileArn?: String; - /** - * The stack's default operating system. - */ - DefaultOs?: String; - /** - * The stack host name theme, with spaces replaced by underscores. - */ - HostnameTheme?: String; - /** - * The stack's default Availability Zone. For more information, see Regions and Endpoints. - */ - DefaultAvailabilityZone?: String; - /** - * The default subnet ID; applicable only if the stack is running in a VPC. - */ - DefaultSubnetId?: String; - /** - * A JSON object that contains user-defined attributes to be added to the stack configuration and deployment attributes. You can use custom JSON to override the corresponding default stack configuration attribute values or to pass data to recipes. The string should be in the following format: "{\"key1\": \"value1\", \"key2\": \"value2\",...}" For more information on custom JSON, see Use Custom JSON to Modify the Stack Configuration Attributes. - */ - CustomJson?: String; - /** - * The configuration manager. - */ - ConfigurationManager?: StackConfigurationManager; - /** - * A ChefConfiguration object that specifies whether to enable Berkshelf and the Berkshelf version. For more information, see Create a New Stack. - */ - ChefConfiguration?: ChefConfiguration; - /** - * Whether the stack uses custom cookbooks. - */ - UseCustomCookbooks?: Boolean; - /** - * Whether the stack automatically associates the AWS OpsWorks Stacks built-in security groups with the stack's layers. - */ - UseOpsworksSecurityGroups?: Boolean; - CustomCookbooksSource?: Source; - /** - * A default Amazon EC2 key pair for the stack's instances. You can override this value when you create or update an instance. - */ - DefaultSshKeyName?: String; - /** - * The date when the stack was created. - */ - CreatedAt?: DateTime; - /** - * The default root device type. This value is used by default for all instances in the stack, but you can override it when you create an instance. For more information, see Storage for the Root Device. - */ - DefaultRootDeviceType?: RootDeviceType; - /** - * The agent version. This parameter is set to LATEST for auto-update. or a version number for a fixed agent version. - */ - AgentVersion?: String; - } - export type StackAttributes = {[key: string]: String}; - export type StackAttributesKeys = "Color"|string; - export interface StackConfigurationManager { - /** - * The name. This parameter must be set to "Chef". - */ - Name?: String; - /** - * The Chef version. This parameter must be set to 12, 11.10, or 11.4 for Linux stacks, and to 12.2 for Windows stacks. The default value for Linux stacks is 11.4. - */ - Version?: String; - } - export interface StackSummary { - /** - * The stack ID. - */ - StackId?: String; - /** - * The stack name. - */ - Name?: String; - /** - * The stack's ARN. - */ - Arn?: String; - /** - * The number of layers. - */ - LayersCount?: Integer; - /** - * The number of apps. - */ - AppsCount?: Integer; - /** - * An InstancesCount object with the number of instances in each status. - */ - InstancesCount?: InstancesCount; - } - export type Stacks = Stack[]; - export interface StartInstanceRequest { - /** - * The instance ID. - */ - InstanceId: String; - } - export interface StartStackRequest { - /** - * The stack ID. - */ - StackId: String; - } - export interface StopInstanceRequest { - /** - * The instance ID. - */ - InstanceId: String; - } - export interface StopStackRequest { - /** - * The stack ID. - */ - StackId: String; - } - export type String = string; - export type Strings = String[]; - export type Switch = string; - export type TagKey = string; - export type TagKeys = TagKey[]; - export interface TagResourceRequest { - /** - * The stack or layer's Amazon Resource Number (ARN). - */ - ResourceArn: ResourceArn; - /** - * A map that contains tag keys and tag values that are attached to a stack or layer. The key cannot be empty. The key can be a maximum of 127 characters, and can contain only Unicode letters, numbers, or separators, or the following special characters: + - = . _ : / The value can be a maximum 255 characters, and contain only Unicode letters, numbers, or separators, or the following special characters: + - = . _ : / Leading and trailing white spaces are trimmed from both the key and value. A maximum of 40 tags is allowed for any resource. - */ - Tags: Tags; - } - export type TagValue = string; - export type Tags = {[key: string]: TagValue}; - export interface TemporaryCredential { - /** - * The user name. - */ - Username?: String; - /** - * The password. - */ - Password?: String; - /** - * The length of time (in minutes) that the grant is valid. When the grant expires, at the end of this period, the user will no longer be able to use the credentials to log in. If they are logged in at the time, they will be automatically logged out. - */ - ValidForInMinutes?: Integer; - /** - * The instance's AWS OpsWorks Stacks ID. - */ - InstanceId?: String; - } - export interface TimeBasedAutoScalingConfiguration { - /** - * The instance ID. - */ - InstanceId?: String; - /** - * A WeeklyAutoScalingSchedule object with the instance schedule. - */ - AutoScalingSchedule?: WeeklyAutoScalingSchedule; - } - export type TimeBasedAutoScalingConfigurations = TimeBasedAutoScalingConfiguration[]; - export interface UnassignInstanceRequest { - /** - * The instance ID. - */ - InstanceId: String; - } - export interface UnassignVolumeRequest { - /** - * The volume ID. - */ - VolumeId: String; - } - export interface UntagResourceRequest { - /** - * The stack or layer's Amazon Resource Number (ARN). - */ - ResourceArn: ResourceArn; - /** - * A list of the keys of tags to be removed from a stack or layer. - */ - TagKeys: TagKeys; - } - export interface UpdateAppRequest { - /** - * The app ID. - */ - AppId: String; - /** - * The app name. - */ - Name?: String; - /** - * A description of the app. - */ - Description?: String; - /** - * The app's data sources. - */ - DataSources?: DataSources; - /** - * The app type. - */ - Type?: AppType; - /** - * A Source object that specifies the app repository. - */ - AppSource?: Source; - /** - * The app's virtual host settings, with multiple domains separated by commas. For example: 'www.example.com, example.com' - */ - Domains?: Strings; - /** - * Whether SSL is enabled for the app. - */ - EnableSsl?: Boolean; - /** - * An SslConfiguration object with the SSL configuration. - */ - SslConfiguration?: SslConfiguration; - /** - * One or more user-defined key/value pairs to be added to the stack attributes. - */ - Attributes?: AppAttributes; - /** - * An array of EnvironmentVariable objects that specify environment variables to be associated with the app. After you deploy the app, these variables are defined on the associated app server instances.For more information, see Environment Variables. There is no specific limit on the number of environment variables. However, the size of the associated data structure - which includes the variables' names, values, and protected flag values - cannot exceed 10 KB (10240 Bytes). This limit should accommodate most if not all use cases. Exceeding it will cause an exception with the message, "Environment: is too large (maximum is 10KB)." This parameter is supported only by Chef 11.10 stacks. If you have specified one or more environment variables, you cannot modify the stack's Chef version. - */ - Environment?: EnvironmentVariables; - } - export interface UpdateElasticIpRequest { - /** - * The address. - */ - ElasticIp: String; - /** - * The new name. - */ - Name?: String; - } - export interface UpdateInstanceRequest { - /** - * The instance ID. - */ - InstanceId: String; - /** - * The instance's layer IDs. - */ - LayerIds?: Strings; - /** - * The instance type, such as t2.micro. For a list of supported instance types, open the stack in the console, choose Instances, and choose + Instance. The Size list contains the currently supported types. For more information, see Instance Families and Types. The parameter values that you use to specify the various types are in the API Name column of the Available Instance Types table. - */ - InstanceType?: String; - /** - * For load-based or time-based instances, the type. Windows stacks can use only time-based instances. - */ - AutoScalingType?: AutoScalingType; - /** - * The instance host name. - */ - Hostname?: String; - /** - * The instance's operating system, which must be set to one of the following. You cannot update an instance that is using a custom AMI. A supported Linux operating system: An Amazon Linux version, such as Amazon Linux 2017.03, Amazon Linux 2016.09, Amazon Linux 2016.03, Amazon Linux 2015.09, or Amazon Linux 2015.03. A supported Ubuntu operating system, such as Ubuntu 16.04 LTS, Ubuntu 14.04 LTS, or Ubuntu 12.04 LTS. CentOS Linux 7 Red Hat Enterprise Linux 7 A supported Windows operating system, such as Microsoft Windows Server 2012 R2 Base, Microsoft Windows Server 2012 R2 with SQL Server Express, Microsoft Windows Server 2012 R2 with SQL Server Standard, or Microsoft Windows Server 2012 R2 with SQL Server Web. For more information on the supported operating systems, see AWS OpsWorks Stacks Operating Systems. The default option is the current Amazon Linux version. If you set this parameter to Custom, you must use the AmiId parameter to specify the custom AMI that you want to use. For more information on the supported operating systems, see Operating Systems. For more information on how to use custom AMIs with OpsWorks, see Using Custom AMIs. You can specify a different Linux operating system for the updated stack, but you cannot change from Linux to Windows or Windows to Linux. - */ - Os?: String; - /** - * The ID of the AMI that was used to create the instance. The value of this parameter must be the same AMI ID that the instance is already using. You cannot apply a new AMI to an instance by running UpdateInstance. UpdateInstance does not work on instances that are using custom AMIs. - */ - AmiId?: String; - /** - * The instance's Amazon EC2 key name. - */ - SshKeyName?: String; - /** - * The instance architecture. Instance types do not necessarily support both architectures. For a list of the architectures that are supported by the different instance types, see Instance Families and Types. - */ - Architecture?: Architecture; - /** - * Whether to install operating system and package updates when the instance boots. The default value is true. To control when updates are installed, set this value to false. You must then update your instances manually by using CreateDeployment to run the update_dependencies stack command or by manually running yum (Amazon Linux) or apt-get (Ubuntu) on the instances. We strongly recommend using the default value of true, to ensure that your instances have the latest security updates. - */ - InstallUpdatesOnBoot?: Boolean; - /** - * This property cannot be updated. - */ - EbsOptimized?: Boolean; - /** - * The default AWS OpsWorks Stacks agent version. You have the following options: INHERIT - Use the stack's default agent version setting. version_number - Use the specified agent version. This value overrides the stack's default setting. To update the agent version, you must edit the instance configuration and specify a new version. AWS OpsWorks Stacks then automatically installs that version on the instance. The default setting is INHERIT. To specify an agent version, you must use the complete version number, not the abbreviated number shown on the console. For a list of available agent version numbers, call DescribeAgentVersions. AgentVersion cannot be set to Chef 12.2. - */ - AgentVersion?: String; - } - export interface UpdateLayerRequest { - /** - * The layer ID. - */ - LayerId: String; - /** - * The layer name, which is used by the console. - */ - Name?: String; - /** - * For custom layers only, use this parameter to specify the layer's short name, which is used internally by AWS OpsWorks Stacks and by Chef. The short name is also used as the name for the directory where your app files are installed. It can have a maximum of 200 characters and must be in the following format: /\A[a-z0-9\-\_\.]+\Z/. The built-in layers' short names are defined by AWS OpsWorks Stacks. For more information, see the Layer Reference - */ - Shortname?: String; - /** - * One or more user-defined key/value pairs to be added to the stack attributes. - */ - Attributes?: LayerAttributes; - /** - * Specifies CloudWatch Logs configuration options for the layer. For more information, see CloudWatchLogsLogStream. - */ - CloudWatchLogsConfiguration?: CloudWatchLogsConfiguration; - /** - * The ARN of an IAM profile to be used for all of the layer's EC2 instances. For more information about IAM ARNs, see Using Identifiers. - */ - CustomInstanceProfileArn?: String; - /** - * A JSON-formatted string containing custom stack configuration and deployment attributes to be installed on the layer's instances. For more information, see Using Custom JSON. - */ - CustomJson?: String; - /** - * An array containing the layer's custom security group IDs. - */ - CustomSecurityGroupIds?: Strings; - /** - * An array of Package objects that describe the layer's packages. - */ - Packages?: Strings; - /** - * A VolumeConfigurations object that describes the layer's Amazon EBS volumes. - */ - VolumeConfigurations?: VolumeConfigurations; - /** - * Whether to disable auto healing for the layer. - */ - EnableAutoHealing?: Boolean; - /** - * Whether to automatically assign an Elastic IP address to the layer's instances. For more information, see How to Edit a Layer. - */ - AutoAssignElasticIps?: Boolean; - /** - * For stacks that are running in a VPC, whether to automatically assign a public IP address to the layer's instances. For more information, see How to Edit a Layer. - */ - AutoAssignPublicIps?: Boolean; - /** - * A LayerCustomRecipes object that specifies the layer's custom recipes. - */ - CustomRecipes?: Recipes; - /** - * Whether to install operating system and package updates when the instance boots. The default value is true. To control when updates are installed, set this value to false. You must then update your instances manually by using CreateDeployment to run the update_dependencies stack command or manually running yum (Amazon Linux) or apt-get (Ubuntu) on the instances. We strongly recommend using the default value of true, to ensure that your instances have the latest security updates. - */ - InstallUpdatesOnBoot?: Boolean; - /** - * Whether to use Amazon EBS-optimized instances. - */ - UseEbsOptimizedInstances?: Boolean; - /** - * - */ - LifecycleEventConfiguration?: LifecycleEventConfiguration; - } - export interface UpdateMyUserProfileRequest { - /** - * The user's SSH public key. - */ - SshPublicKey?: String; - } - export interface UpdateRdsDbInstanceRequest { - /** - * The Amazon RDS instance's ARN. - */ - RdsDbInstanceArn: String; - /** - * The master user name. - */ - DbUser?: String; - /** - * The database password. - */ - DbPassword?: String; - } - export interface UpdateStackRequest { - /** - * The stack ID. - */ - StackId: String; - /** - * The stack's new name. - */ - Name?: String; - /** - * One or more user-defined key-value pairs to be added to the stack attributes. - */ - Attributes?: StackAttributes; - /** - * Do not use this parameter. You cannot update a stack's service role. - */ - ServiceRoleArn?: String; - /** - * The ARN of an IAM profile that is the default profile for all of the stack's EC2 instances. For more information about IAM ARNs, see Using Identifiers. - */ - DefaultInstanceProfileArn?: String; - /** - * The stack's operating system, which must be set to one of the following: A supported Linux operating system: An Amazon Linux version, such as Amazon Linux 2017.03, Amazon Linux 2016.09, Amazon Linux 2016.03, Amazon Linux 2015.09, or Amazon Linux 2015.03. A supported Ubuntu operating system, such as Ubuntu 16.04 LTS, Ubuntu 14.04 LTS, or Ubuntu 12.04 LTS. CentOS Linux 7 Red Hat Enterprise Linux 7 A supported Windows operating system, such as Microsoft Windows Server 2012 R2 Base, Microsoft Windows Server 2012 R2 with SQL Server Express, Microsoft Windows Server 2012 R2 with SQL Server Standard, or Microsoft Windows Server 2012 R2 with SQL Server Web. A custom AMI: Custom. You specify the custom AMI you want to use when you create instances. For more information on how to use custom AMIs with OpsWorks, see Using Custom AMIs. The default option is the stack's current operating system. For more information on the supported operating systems, see AWS OpsWorks Stacks Operating Systems. - */ - DefaultOs?: String; - /** - * The stack's new host name theme, with spaces replaced by underscores. The theme is used to generate host names for the stack's instances. By default, HostnameTheme is set to Layer_Dependent, which creates host names by appending integers to the layer's short name. The other themes are: Baked_Goods Clouds Europe_Cities Fruits Greek_Deities Legendary_creatures_from_Japan Planets_and_Moons Roman_Deities Scottish_Islands US_Cities Wild_Cats To obtain a generated host name, call GetHostNameSuggestion, which returns a host name based on the current theme. - */ - HostnameTheme?: String; - /** - * The stack's default Availability Zone, which must be in the stack's region. For more information, see Regions and Endpoints. If you also specify a value for DefaultSubnetId, the subnet must be in the same zone. For more information, see CreateStack. - */ - DefaultAvailabilityZone?: String; - /** - * The stack's default VPC subnet ID. This parameter is required if you specify a value for the VpcId parameter. All instances are launched into this subnet unless you specify otherwise when you create the instance. If you also specify a value for DefaultAvailabilityZone, the subnet must be in that zone. For information on default values and when this parameter is required, see the VpcId parameter description. - */ - DefaultSubnetId?: String; - /** - * A string that contains user-defined, custom JSON. It can be used to override the corresponding default stack configuration JSON values or to pass data to recipes. The string should be in the following format: "{\"key1\": \"value1\", \"key2\": \"value2\",...}" For more information on custom JSON, see Use Custom JSON to Modify the Stack Configuration Attributes. - */ - CustomJson?: String; - /** - * The configuration manager. When you update a stack, we recommend that you use the configuration manager to specify the Chef version: 12, 11.10, or 11.4 for Linux stacks, or 12.2 for Windows stacks. The default value for Linux stacks is currently 11.4. - */ - ConfigurationManager?: StackConfigurationManager; - /** - * A ChefConfiguration object that specifies whether to enable Berkshelf and the Berkshelf version on Chef 11.10 stacks. For more information, see Create a New Stack. - */ - ChefConfiguration?: ChefConfiguration; - /** - * Whether the stack uses custom cookbooks. - */ - UseCustomCookbooks?: Boolean; - CustomCookbooksSource?: Source; - /** - * A default Amazon EC2 key-pair name. The default value is none. If you specify a key-pair name, AWS OpsWorks Stacks installs the public key on the instance and you can use the private key with an SSH client to log in to the instance. For more information, see Using SSH to Communicate with an Instance and Managing SSH Access. You can override this setting by specifying a different key pair, or no key pair, when you create an instance. - */ - DefaultSshKeyName?: String; - /** - * The default root device type. This value is used by default for all instances in the stack, but you can override it when you create an instance. For more information, see Storage for the Root Device. - */ - DefaultRootDeviceType?: RootDeviceType; - /** - * Whether to associate the AWS OpsWorks Stacks built-in security groups with the stack's layers. AWS OpsWorks Stacks provides a standard set of built-in security groups, one for each layer, which are associated with layers by default. UseOpsworksSecurityGroups allows you to provide your own custom security groups instead of using the built-in groups. UseOpsworksSecurityGroups has the following settings: True - AWS OpsWorks Stacks automatically associates the appropriate built-in security group with each layer (default setting). You can associate additional security groups with a layer after you create it, but you cannot delete the built-in security group. False - AWS OpsWorks Stacks does not associate built-in security groups with layers. You must create appropriate EC2 security groups and associate a security group with each layer that you create. However, you can still manually associate a built-in security group with a layer on. Custom security groups are required only for those layers that need custom settings. For more information, see Create a New Stack. - */ - UseOpsworksSecurityGroups?: Boolean; - /** - * The default AWS OpsWorks Stacks agent version. You have the following options: Auto-update - Set this parameter to LATEST. AWS OpsWorks Stacks automatically installs new agent versions on the stack's instances as soon as they are available. Fixed version - Set this parameter to your preferred agent version. To update the agent version, you must edit the stack configuration and specify a new version. AWS OpsWorks Stacks then automatically installs that version on the stack's instances. The default setting is LATEST. To specify an agent version, you must use the complete version number, not the abbreviated number shown on the console. For a list of available agent version numbers, call DescribeAgentVersions. AgentVersion cannot be set to Chef 12.2. You can also specify an agent version when you create or update an instance, which overrides the stack's default setting. - */ - AgentVersion?: String; - } - export interface UpdateUserProfileRequest { - /** - * The user IAM ARN. This can also be a federated user's ARN. - */ - IamUserArn: String; - /** - * The user's SSH user name. The allowable characters are [a-z], [A-Z], [0-9], '-', and '_'. If the specified name includes other punctuation marks, AWS OpsWorks Stacks removes them. For example, my.name will be changed to myname. If you do not specify an SSH user name, AWS OpsWorks Stacks generates one from the IAM user name. - */ - SshUsername?: String; - /** - * The user's new SSH public key. - */ - SshPublicKey?: String; - /** - * Whether users can specify their own SSH public key through the My Settings page. For more information, see Managing User Permissions. - */ - AllowSelfManagement?: Boolean; - } - export interface UpdateVolumeRequest { - /** - * The volume ID. - */ - VolumeId: String; - /** - * The new name. - */ - Name?: String; - /** - * The new mount point. - */ - MountPoint?: String; - } - export interface UserProfile { - /** - * The user's IAM ARN. - */ - IamUserArn?: String; - /** - * The user's name. - */ - Name?: String; - /** - * The user's SSH user name. - */ - SshUsername?: String; - /** - * The user's SSH public key. - */ - SshPublicKey?: String; - /** - * Whether users can specify their own SSH public key through the My Settings page. For more information, see Managing User Permissions. - */ - AllowSelfManagement?: Boolean; - } - export type UserProfiles = UserProfile[]; - export type ValidForInMinutes = number; - export type VirtualizationType = "paravirtual"|"hvm"|string; - export interface Volume { - /** - * The volume ID. - */ - VolumeId?: String; - /** - * The Amazon EC2 volume ID. - */ - Ec2VolumeId?: String; - /** - * The volume name. - */ - Name?: String; - /** - * The RAID array ID. - */ - RaidArrayId?: String; - /** - * The instance ID. - */ - InstanceId?: String; - /** - * The value returned by DescribeVolumes. - */ - Status?: String; - /** - * The volume size. - */ - Size?: Integer; - /** - * The device name. - */ - Device?: String; - /** - * The volume mount point. For example, "/mnt/disk1". - */ - MountPoint?: String; - /** - * The AWS region. For more information about AWS regions, see Regions and Endpoints. - */ - Region?: String; - /** - * The volume Availability Zone. For more information, see Regions and Endpoints. - */ - AvailabilityZone?: String; - /** - * The volume type, standard or PIOPS. - */ - VolumeType?: String; - /** - * For PIOPS volumes, the IOPS per disk. - */ - Iops?: Integer; - } - export interface VolumeConfiguration { - /** - * The volume mount point. For example "/dev/sdh". - */ - MountPoint: String; - /** - * The volume RAID level. - */ - RaidLevel?: Integer; - /** - * The number of disks in the volume. - */ - NumberOfDisks: Integer; - /** - * The volume size. - */ - Size: Integer; - /** - * The volume type: standard - Magnetic io1 - Provisioned IOPS (SSD) gp2 - General Purpose (SSD) - */ - VolumeType?: String; - /** - * For PIOPS volumes, the IOPS per disk. - */ - Iops?: Integer; - } - export type VolumeConfigurations = VolumeConfiguration[]; - export type VolumeType = "gp2"|"io1"|"standard"|string; - export type Volumes = Volume[]; - export interface WeeklyAutoScalingSchedule { - /** - * The schedule for Monday. - */ - Monday?: DailyAutoScalingSchedule; - /** - * The schedule for Tuesday. - */ - Tuesday?: DailyAutoScalingSchedule; - /** - * The schedule for Wednesday. - */ - Wednesday?: DailyAutoScalingSchedule; - /** - * The schedule for Thursday. - */ - Thursday?: DailyAutoScalingSchedule; - /** - * The schedule for Friday. - */ - Friday?: DailyAutoScalingSchedule; - /** - * The schedule for Saturday. - */ - Saturday?: DailyAutoScalingSchedule; - /** - * The schedule for Sunday. - */ - Sunday?: DailyAutoScalingSchedule; - } - /** - * A string in YYYY-MM-DD format that represents the latest possible API version that can be used in this service. Specify 'latest' to use the latest possible version. - */ - export type apiVersion = "2013-02-18"|"latest"|string; - export interface ClientApiVersions { - /** - * A string in YYYY-MM-DD format that represents the latest possible API version that can be used in this service. Specify 'latest' to use the latest possible version. - */ - apiVersion?: apiVersion; - } - export type ClientConfiguration = ServiceConfigurationOptions & ClientApiVersions; - /** - * Contains interfaces for use with the OpsWorks client. - */ - export import Types = OpsWorks; -} -export = OpsWorks; diff --git a/workshops/monte-carlo-on-ec2-spot-fleet/src/web/node_modules/aws-sdk/clients/opsworks.js b/workshops/monte-carlo-on-ec2-spot-fleet/src/web/node_modules/aws-sdk/clients/opsworks.js deleted file mode 100644 index 23ea631c..00000000 --- a/workshops/monte-carlo-on-ec2-spot-fleet/src/web/node_modules/aws-sdk/clients/opsworks.js +++ /dev/null @@ -1,19 +0,0 @@ -require('../lib/node_loader'); -var AWS = require('../lib/core'); -var Service = AWS.Service; -var apiLoader = AWS.apiLoader; - -apiLoader.services['opsworks'] = {}; -AWS.OpsWorks = Service.defineService('opsworks', ['2013-02-18']); -Object.defineProperty(apiLoader.services['opsworks'], '2013-02-18', { - get: function get() { - var model = require('../apis/opsworks-2013-02-18.min.json'); - model.paginators = require('../apis/opsworks-2013-02-18.paginators.json').pagination; - model.waiters = require('../apis/opsworks-2013-02-18.waiters2.json').waiters; - return model; - }, - enumerable: true, - configurable: true -}); - -module.exports = AWS.OpsWorks; diff --git a/workshops/monte-carlo-on-ec2-spot-fleet/src/web/node_modules/aws-sdk/clients/opsworkscm.d.ts b/workshops/monte-carlo-on-ec2-spot-fleet/src/web/node_modules/aws-sdk/clients/opsworkscm.d.ts deleted file mode 100644 index 732e8fda..00000000 --- a/workshops/monte-carlo-on-ec2-spot-fleet/src/web/node_modules/aws-sdk/clients/opsworkscm.d.ts +++ /dev/null @@ -1,746 +0,0 @@ -import {Request} from '../lib/request'; -import {Response} from '../lib/response'; -import {AWSError} from '../lib/error'; -import {Service} from '../lib/service'; -import {ServiceConfigurationOptions} from '../lib/service'; -import {ConfigBase as Config} from '../lib/config'; -interface Blob {} -declare class OpsWorksCM extends Service { - /** - * Constructs a service object. This object has one method for each API operation. - */ - constructor(options?: OpsWorksCM.Types.ClientConfiguration) - config: Config & OpsWorksCM.Types.ClientConfiguration; - /** - * Associates a new node with the Chef server. This command is an alternative to knife bootstrap. For more information about how to disassociate a node, see DisassociateNode. A node can can only be associated with servers that are in a HEALTHY state. Otherwise, an InvalidStateException is thrown. A ResourceNotFoundException is thrown when the server does not exist. A ValidationException is raised when parameters of the request are not valid. The AssociateNode API call can be integrated into Auto Scaling configurations, AWS Cloudformation templates, or the user data of a server's instance. Example: aws opsworks-cm associate-node --server-name MyServer --node-name MyManagedNode --engine-attributes "Name=MyOrganization,Value=default" "Name=Chef_node_public_key,Value=Public_key_contents" - */ - associateNode(params: OpsWorksCM.Types.AssociateNodeRequest, callback?: (err: AWSError, data: OpsWorksCM.Types.AssociateNodeResponse) => void): Request; - /** - * Associates a new node with the Chef server. This command is an alternative to knife bootstrap. For more information about how to disassociate a node, see DisassociateNode. A node can can only be associated with servers that are in a HEALTHY state. Otherwise, an InvalidStateException is thrown. A ResourceNotFoundException is thrown when the server does not exist. A ValidationException is raised when parameters of the request are not valid. The AssociateNode API call can be integrated into Auto Scaling configurations, AWS Cloudformation templates, or the user data of a server's instance. Example: aws opsworks-cm associate-node --server-name MyServer --node-name MyManagedNode --engine-attributes "Name=MyOrganization,Value=default" "Name=Chef_node_public_key,Value=Public_key_contents" - */ - associateNode(callback?: (err: AWSError, data: OpsWorksCM.Types.AssociateNodeResponse) => void): Request; - /** - * Creates an application-level backup of a server. While the server is in the BACKING_UP state, the server cannot be changed, and no additional backup can be created. Backups can be created for servers in RUNNING, HEALTHY, and UNHEALTHY states. By default, you can create a maximum of 50 manual backups. This operation is asynchronous. A LimitExceededException is thrown when the maximum number of manual backups is reached. An InvalidStateException is thrown when the server is not in any of the following states: RUNNING, HEALTHY, or UNHEALTHY. A ResourceNotFoundException is thrown when the server is not found. A ValidationException is thrown when parameters of the request are not valid. - */ - createBackup(params: OpsWorksCM.Types.CreateBackupRequest, callback?: (err: AWSError, data: OpsWorksCM.Types.CreateBackupResponse) => void): Request; - /** - * Creates an application-level backup of a server. While the server is in the BACKING_UP state, the server cannot be changed, and no additional backup can be created. Backups can be created for servers in RUNNING, HEALTHY, and UNHEALTHY states. By default, you can create a maximum of 50 manual backups. This operation is asynchronous. A LimitExceededException is thrown when the maximum number of manual backups is reached. An InvalidStateException is thrown when the server is not in any of the following states: RUNNING, HEALTHY, or UNHEALTHY. A ResourceNotFoundException is thrown when the server is not found. A ValidationException is thrown when parameters of the request are not valid. - */ - createBackup(callback?: (err: AWSError, data: OpsWorksCM.Types.CreateBackupResponse) => void): Request; - /** - * Creates and immedately starts a new server. The server is ready to use when it is in the HEALTHY state. By default, you can create a maximum of 10 servers. This operation is asynchronous. A LimitExceededException is thrown when you have created the maximum number of servers (10). A ResourceAlreadyExistsException is thrown when a server with the same name already exists in the account. A ResourceNotFoundException is thrown when you specify a backup ID that is not valid or is for a backup that does not exist. A ValidationException is thrown when parameters of the request are not valid. If you do not specify a security group by adding the SecurityGroupIds parameter, AWS OpsWorks creates a new security group. The default security group opens the Chef server to the world on TCP port 443. If a KeyName is present, AWS OpsWorks enables SSH access. SSH is also open to the world on TCP port 22. By default, the Chef Server is accessible from any IP address. We recommend that you update your security group rules to allow access from known IP addresses and address ranges only. To edit security group rules, open Security Groups in the navigation pane of the EC2 management console. - */ - createServer(params: OpsWorksCM.Types.CreateServerRequest, callback?: (err: AWSError, data: OpsWorksCM.Types.CreateServerResponse) => void): Request; - /** - * Creates and immedately starts a new server. The server is ready to use when it is in the HEALTHY state. By default, you can create a maximum of 10 servers. This operation is asynchronous. A LimitExceededException is thrown when you have created the maximum number of servers (10). A ResourceAlreadyExistsException is thrown when a server with the same name already exists in the account. A ResourceNotFoundException is thrown when you specify a backup ID that is not valid or is for a backup that does not exist. A ValidationException is thrown when parameters of the request are not valid. If you do not specify a security group by adding the SecurityGroupIds parameter, AWS OpsWorks creates a new security group. The default security group opens the Chef server to the world on TCP port 443. If a KeyName is present, AWS OpsWorks enables SSH access. SSH is also open to the world on TCP port 22. By default, the Chef Server is accessible from any IP address. We recommend that you update your security group rules to allow access from known IP addresses and address ranges only. To edit security group rules, open Security Groups in the navigation pane of the EC2 management console. - */ - createServer(callback?: (err: AWSError, data: OpsWorksCM.Types.CreateServerResponse) => void): Request; - /** - * Deletes a backup. You can delete both manual and automated backups. This operation is asynchronous. An InvalidStateException is thrown when a backup deletion is already in progress. A ResourceNotFoundException is thrown when the backup does not exist. A ValidationException is thrown when parameters of the request are not valid. - */ - deleteBackup(params: OpsWorksCM.Types.DeleteBackupRequest, callback?: (err: AWSError, data: OpsWorksCM.Types.DeleteBackupResponse) => void): Request; - /** - * Deletes a backup. You can delete both manual and automated backups. This operation is asynchronous. An InvalidStateException is thrown when a backup deletion is already in progress. A ResourceNotFoundException is thrown when the backup does not exist. A ValidationException is thrown when parameters of the request are not valid. - */ - deleteBackup(callback?: (err: AWSError, data: OpsWorksCM.Types.DeleteBackupResponse) => void): Request; - /** - * Deletes the server and the underlying AWS CloudFormation stack (including the server's EC2 instance). When you run this command, the server state is updated to DELETING. After the server is deleted, it is no longer returned by DescribeServer requests. If the AWS CloudFormation stack cannot be deleted, the server cannot be deleted. This operation is asynchronous. An InvalidStateException is thrown when a server deletion is already in progress. A ResourceNotFoundException is thrown when the server does not exist. A ValidationException is raised when parameters of the request are not valid. - */ - deleteServer(params: OpsWorksCM.Types.DeleteServerRequest, callback?: (err: AWSError, data: OpsWorksCM.Types.DeleteServerResponse) => void): Request; - /** - * Deletes the server and the underlying AWS CloudFormation stack (including the server's EC2 instance). When you run this command, the server state is updated to DELETING. After the server is deleted, it is no longer returned by DescribeServer requests. If the AWS CloudFormation stack cannot be deleted, the server cannot be deleted. This operation is asynchronous. An InvalidStateException is thrown when a server deletion is already in progress. A ResourceNotFoundException is thrown when the server does not exist. A ValidationException is raised when parameters of the request are not valid. - */ - deleteServer(callback?: (err: AWSError, data: OpsWorksCM.Types.DeleteServerResponse) => void): Request; - /** - * Describes your account attributes, and creates requests to increase limits before they are reached or exceeded. This operation is synchronous. - */ - describeAccountAttributes(params: OpsWorksCM.Types.DescribeAccountAttributesRequest, callback?: (err: AWSError, data: OpsWorksCM.Types.DescribeAccountAttributesResponse) => void): Request; - /** - * Describes your account attributes, and creates requests to increase limits before they are reached or exceeded. This operation is synchronous. - */ - describeAccountAttributes(callback?: (err: AWSError, data: OpsWorksCM.Types.DescribeAccountAttributesResponse) => void): Request; - /** - * Describes backups. The results are ordered by time, with newest backups first. If you do not specify a BackupId or ServerName, the command returns all backups. This operation is synchronous. A ResourceNotFoundException is thrown when the backup does not exist. A ValidationException is raised when parameters of the request are not valid. - */ - describeBackups(params: OpsWorksCM.Types.DescribeBackupsRequest, callback?: (err: AWSError, data: OpsWorksCM.Types.DescribeBackupsResponse) => void): Request; - /** - * Describes backups. The results are ordered by time, with newest backups first. If you do not specify a BackupId or ServerName, the command returns all backups. This operation is synchronous. A ResourceNotFoundException is thrown when the backup does not exist. A ValidationException is raised when parameters of the request are not valid. - */ - describeBackups(callback?: (err: AWSError, data: OpsWorksCM.Types.DescribeBackupsResponse) => void): Request; - /** - * Describes events for a specified server. Results are ordered by time, with newest events first. This operation is synchronous. A ResourceNotFoundException is thrown when the server does not exist. A ValidationException is raised when parameters of the request are not valid. - */ - describeEvents(params: OpsWorksCM.Types.DescribeEventsRequest, callback?: (err: AWSError, data: OpsWorksCM.Types.DescribeEventsResponse) => void): Request; - /** - * Describes events for a specified server. Results are ordered by time, with newest events first. This operation is synchronous. A ResourceNotFoundException is thrown when the server does not exist. A ValidationException is raised when parameters of the request are not valid. - */ - describeEvents(callback?: (err: AWSError, data: OpsWorksCM.Types.DescribeEventsResponse) => void): Request; - /** - * Returns the current status of an existing association or disassociation request. A ResourceNotFoundException is thrown when no recent association or disassociation request with the specified token is found, or when the server does not exist. A ValidationException is raised when parameters of the request are not valid. - */ - describeNodeAssociationStatus(params: OpsWorksCM.Types.DescribeNodeAssociationStatusRequest, callback?: (err: AWSError, data: OpsWorksCM.Types.DescribeNodeAssociationStatusResponse) => void): Request; - /** - * Returns the current status of an existing association or disassociation request. A ResourceNotFoundException is thrown when no recent association or disassociation request with the specified token is found, or when the server does not exist. A ValidationException is raised when parameters of the request are not valid. - */ - describeNodeAssociationStatus(callback?: (err: AWSError, data: OpsWorksCM.Types.DescribeNodeAssociationStatusResponse) => void): Request; - /** - * Lists all configuration management servers that are identified with your account. Only the stored results from Amazon DynamoDB are returned. AWS OpsWorks for Chef Automate does not query other services. This operation is synchronous. A ResourceNotFoundException is thrown when the server does not exist. A ValidationException is raised when parameters of the request are not valid. - */ - describeServers(params: OpsWorksCM.Types.DescribeServersRequest, callback?: (err: AWSError, data: OpsWorksCM.Types.DescribeServersResponse) => void): Request; - /** - * Lists all configuration management servers that are identified with your account. Only the stored results from Amazon DynamoDB are returned. AWS OpsWorks for Chef Automate does not query other services. This operation is synchronous. A ResourceNotFoundException is thrown when the server does not exist. A ValidationException is raised when parameters of the request are not valid. - */ - describeServers(callback?: (err: AWSError, data: OpsWorksCM.Types.DescribeServersResponse) => void): Request; - /** - * Disassociates a node from a Chef server, and removes the node from the Chef server's managed nodes. After a node is disassociated, the node key pair is no longer valid for accessing the Chef API. For more information about how to associate a node, see AssociateNode. A node can can only be disassociated from a server that is in a HEALTHY state. Otherwise, an InvalidStateException is thrown. A ResourceNotFoundException is thrown when the server does not exist. A ValidationException is raised when parameters of the request are not valid. - */ - disassociateNode(params: OpsWorksCM.Types.DisassociateNodeRequest, callback?: (err: AWSError, data: OpsWorksCM.Types.DisassociateNodeResponse) => void): Request; - /** - * Disassociates a node from a Chef server, and removes the node from the Chef server's managed nodes. After a node is disassociated, the node key pair is no longer valid for accessing the Chef API. For more information about how to associate a node, see AssociateNode. A node can can only be disassociated from a server that is in a HEALTHY state. Otherwise, an InvalidStateException is thrown. A ResourceNotFoundException is thrown when the server does not exist. A ValidationException is raised when parameters of the request are not valid. - */ - disassociateNode(callback?: (err: AWSError, data: OpsWorksCM.Types.DisassociateNodeResponse) => void): Request; - /** - * Restores a backup to a server that is in a CONNECTION_LOST, HEALTHY, RUNNING, UNHEALTHY, or TERMINATED state. When you run RestoreServer, the server's EC2 instance is deleted, and a new EC2 instance is configured. RestoreServer maintains the existing server endpoint, so configuration management of the server's client devices (nodes) should continue to work. This operation is asynchronous. An InvalidStateException is thrown when the server is not in a valid state. A ResourceNotFoundException is thrown when the server does not exist. A ValidationException is raised when parameters of the request are not valid. - */ - restoreServer(params: OpsWorksCM.Types.RestoreServerRequest, callback?: (err: AWSError, data: OpsWorksCM.Types.RestoreServerResponse) => void): Request; - /** - * Restores a backup to a server that is in a CONNECTION_LOST, HEALTHY, RUNNING, UNHEALTHY, or TERMINATED state. When you run RestoreServer, the server's EC2 instance is deleted, and a new EC2 instance is configured. RestoreServer maintains the existing server endpoint, so configuration management of the server's client devices (nodes) should continue to work. This operation is asynchronous. An InvalidStateException is thrown when the server is not in a valid state. A ResourceNotFoundException is thrown when the server does not exist. A ValidationException is raised when parameters of the request are not valid. - */ - restoreServer(callback?: (err: AWSError, data: OpsWorksCM.Types.RestoreServerResponse) => void): Request; - /** - * Manually starts server maintenance. This command can be useful if an earlier maintenance attempt failed, and the underlying cause of maintenance failure has been resolved. The server is in an UNDER_MAINTENANCE state while maintenance is in progress. Maintenance can only be started on servers in HEALTHY and UNHEALTHY states. Otherwise, an InvalidStateException is thrown. A ResourceNotFoundException is thrown when the server does not exist. A ValidationException is raised when parameters of the request are not valid. - */ - startMaintenance(params: OpsWorksCM.Types.StartMaintenanceRequest, callback?: (err: AWSError, data: OpsWorksCM.Types.StartMaintenanceResponse) => void): Request; - /** - * Manually starts server maintenance. This command can be useful if an earlier maintenance attempt failed, and the underlying cause of maintenance failure has been resolved. The server is in an UNDER_MAINTENANCE state while maintenance is in progress. Maintenance can only be started on servers in HEALTHY and UNHEALTHY states. Otherwise, an InvalidStateException is thrown. A ResourceNotFoundException is thrown when the server does not exist. A ValidationException is raised when parameters of the request are not valid. - */ - startMaintenance(callback?: (err: AWSError, data: OpsWorksCM.Types.StartMaintenanceResponse) => void): Request; - /** - * Updates settings for a server. This operation is synchronous. - */ - updateServer(params: OpsWorksCM.Types.UpdateServerRequest, callback?: (err: AWSError, data: OpsWorksCM.Types.UpdateServerResponse) => void): Request; - /** - * Updates settings for a server. This operation is synchronous. - */ - updateServer(callback?: (err: AWSError, data: OpsWorksCM.Types.UpdateServerResponse) => void): Request; - /** - * Updates engine-specific attributes on a specified server. The server enters the MODIFYING state when this operation is in progress. Only one update can occur at a time. You can use this command to reset the Chef server's private key (CHEF_PIVOTAL_KEY). This operation is asynchronous. This operation can only be called for servers in HEALTHY or UNHEALTHY states. Otherwise, an InvalidStateException is raised. A ResourceNotFoundException is thrown when the server does not exist. A ValidationException is raised when parameters of the request are not valid. - */ - updateServerEngineAttributes(params: OpsWorksCM.Types.UpdateServerEngineAttributesRequest, callback?: (err: AWSError, data: OpsWorksCM.Types.UpdateServerEngineAttributesResponse) => void): Request; - /** - * Updates engine-specific attributes on a specified server. The server enters the MODIFYING state when this operation is in progress. Only one update can occur at a time. You can use this command to reset the Chef server's private key (CHEF_PIVOTAL_KEY). This operation is asynchronous. This operation can only be called for servers in HEALTHY or UNHEALTHY states. Otherwise, an InvalidStateException is raised. A ResourceNotFoundException is thrown when the server does not exist. A ValidationException is raised when parameters of the request are not valid. - */ - updateServerEngineAttributes(callback?: (err: AWSError, data: OpsWorksCM.Types.UpdateServerEngineAttributesResponse) => void): Request; -} -declare namespace OpsWorksCM { - export interface AccountAttribute { - /** - * The attribute name. The following are supported attribute names. ServerLimit: The number of current servers/maximum number of servers allowed. By default, you can have a maximum of 10 servers. ManualBackupLimit: The number of current manual backups/maximum number of backups allowed. By default, you can have a maximum of 50 manual backups saved. - */ - Name?: String; - /** - * The maximum allowed value. - */ - Maximum?: Integer; - /** - * The current usage, such as the current number of servers that are associated with the account. - */ - Used?: Integer; - } - export type AccountAttributes = AccountAttribute[]; - export interface AssociateNodeRequest { - /** - * The name of the server with which to associate the node. - */ - ServerName: ServerName; - /** - * The name of the Chef client node. - */ - NodeName: NodeName; - /** - * Engine attributes used for associating the node. Attributes accepted in a AssociateNode request: CHEF_ORGANIZATION: The Chef organization with which the node is associated. By default only one organization named default can exist. CHEF_NODE_PUBLIC_KEY: A PEM-formatted public key. This key is required for the chef-client agent to access the Chef API. - */ - EngineAttributes: EngineAttributes; - } - export interface AssociateNodeResponse { - /** - * Contains a token which can be passed to the DescribeNodeAssociationStatus API call to get the status of the association request. - */ - NodeAssociationStatusToken?: NodeAssociationStatusToken; - } - export type AttributeName = string; - export type AttributeValue = string; - export interface Backup { - /** - * The ARN of the backup. - */ - BackupArn?: String; - /** - * The generated ID of the backup. Example: myServerName-yyyyMMddHHmmssSSS - */ - BackupId?: BackupId; - /** - * The backup type. Valid values are automated or manual. - */ - BackupType?: BackupType; - /** - * The time stamp when the backup was created in the database. Example: 2016-07-29T13:38:47.520Z - */ - CreatedAt?: Timestamp; - /** - * A user-provided description for a manual backup. This field is empty for automated backups. - */ - Description?: String; - /** - * The engine type that is obtained from the server when the backup is created. - */ - Engine?: String; - /** - * The engine model that is obtained from the server when the backup is created. - */ - EngineModel?: String; - /** - * The engine version that is obtained from the server when the backup is created. - */ - EngineVersion?: String; - /** - * The EC2 instance profile ARN that is obtained from the server when the backup is created. Because this value is stored, you are not required to provide the InstanceProfileArn again if you restore a backup. - */ - InstanceProfileArn?: String; - /** - * The instance type that is obtained from the server when the backup is created. - */ - InstanceType?: String; - /** - * The key pair that is obtained from the server when the backup is created. - */ - KeyPair?: String; - /** - * The preferred backup period that is obtained from the server when the backup is created. - */ - PreferredBackupWindow?: TimeWindowDefinition; - /** - * The preferred maintenance period that is obtained from the server when the backup is created. - */ - PreferredMaintenanceWindow?: TimeWindowDefinition; - /** - * This field is deprecated and is no longer used. - */ - S3DataSize?: Integer; - /** - * This field is deprecated and is no longer used. - */ - S3DataUrl?: String; - /** - * The Amazon S3 URL of the backup's log file. - */ - S3LogUrl?: String; - /** - * The security group IDs that are obtained from the server when the backup is created. - */ - SecurityGroupIds?: Strings; - /** - * The name of the server from which the backup was made. - */ - ServerName?: ServerName; - /** - * The service role ARN that is obtained from the server when the backup is created. - */ - ServiceRoleArn?: String; - /** - * The status of a backup while in progress. - */ - Status?: BackupStatus; - /** - * An informational message about backup status. - */ - StatusDescription?: String; - /** - * The subnet IDs that are obtained from the server when the backup is created. - */ - SubnetIds?: Strings; - /** - * The version of AWS OpsWorks for Chef Automate-specific tools that is obtained from the server when the backup is created. - */ - ToolsVersion?: String; - /** - * The IAM user ARN of the requester for manual backups. This field is empty for automated backups. - */ - UserArn?: String; - } - export type BackupId = string; - export type BackupRetentionCountDefinition = number; - export type BackupStatus = "IN_PROGRESS"|"OK"|"FAILED"|"DELETING"|string; - export type BackupType = "AUTOMATED"|"MANUAL"|string; - export type Backups = Backup[]; - export type Boolean = boolean; - export interface CreateBackupRequest { - /** - * The name of the server that you want to back up. - */ - ServerName: ServerName; - /** - * A user-defined description of the backup. - */ - Description?: String; - } - export interface CreateBackupResponse { - /** - * Backup created by request. - */ - Backup?: Backup; - } - export interface CreateServerRequest { - /** - * Associate a public IP address with a server that you are launching. Valid values are true or false. The default value is true. - */ - AssociatePublicIpAddress?: Boolean; - /** - * Enable or disable scheduled backups. Valid values are true or false. The default value is true. - */ - DisableAutomatedBackup?: Boolean; - /** - * The configuration management engine to use. Valid values include Chef. - */ - Engine?: String; - /** - * The engine model, or option. Valid values include Single. - */ - EngineModel?: String; - /** - * The major release version of the engine that you want to use. Values depend on the engine that you choose. - */ - EngineVersion?: String; - /** - * Optional engine attributes on a specified server. Attributes accepted in a createServer request: CHEF_PIVOTAL_KEY: A base64-encoded RSA private key that is not stored by AWS OpsWorks for Chef. This private key is required to access the Chef API. When no CHEF_PIVOTAL_KEY is set, one is generated and returned in the response. CHEF_DELIVERY_ADMIN_PASSWORD: The password for the administrative user in the Chef Automate GUI. The password length is a minimum of eight characters, and a maximum of 32. The password can contain letters, numbers, and special characters (!/@#$%^&+=_). The password must contain at least one lower case letter, one upper case letter, one number, and one special character. When no CHEF_DELIVERY_ADMIN_PASSWORD is set, one is generated and returned in the response. - */ - EngineAttributes?: EngineAttributes; - /** - * The number of automated backups that you want to keep. Whenever a new backup is created, AWS OpsWorks for Chef Automate deletes the oldest backups if this number is exceeded. The default value is 1. - */ - BackupRetentionCount?: BackupRetentionCountDefinition; - /** - * The name of the server. The server name must be unique within your AWS account, within each region. Server names must start with a letter; then letters, numbers, or hyphens (-) are allowed, up to a maximum of 40 characters. - */ - ServerName: ServerName; - /** - * The ARN of the instance profile that your Amazon EC2 instances use. Although the AWS OpsWorks console typically creates the instance profile for you, if you are using API commands instead, run the service-role-creation.yaml AWS CloudFormation template, located at https://s3.amazonaws.com/opsworks-cm-us-east-1-prod-default-assets/misc/opsworks-cm-roles.yaml. This template creates a CloudFormation stack that includes the instance profile you need. - */ - InstanceProfileArn: InstanceProfileArn; - /** - * The Amazon EC2 instance type to use. Valid values must be specified in the following format: ^([cm][34]|t2).* For example, m4.large. Valid values are t2.medium, m4.large, or m4.2xlarge. - */ - InstanceType: String; - /** - * The Amazon EC2 key pair to set for the instance. This parameter is optional; if desired, you may specify this parameter to connect to your instances by using SSH. - */ - KeyPair?: KeyPair; - /** - * The start time for a one-hour period each week during which AWS OpsWorks for Chef Automate performs maintenance on the instance. Valid values must be specified in the following format: DDD:HH:MM. The specified time is in coordinated universal time (UTC). The default value is a random one-hour period on Tuesday, Wednesday, or Friday. See TimeWindowDefinition for more information. Example: Mon:08:00, which represents a start time of every Monday at 08:00 UTC. (8:00 a.m.) - */ - PreferredMaintenanceWindow?: TimeWindowDefinition; - /** - * The start time for a one-hour period during which AWS OpsWorks for Chef Automate backs up application-level data on your server if automated backups are enabled. Valid values must be specified in one of the following formats: HH:MM for daily backups DDD:HH:MM for weekly backups The specified time is in coordinated universal time (UTC). The default value is a random, daily start time. Example: 08:00, which represents a daily start time of 08:00 UTC. Example: Mon:08:00, which represents a start time of every Monday at 08:00 UTC. (8:00 a.m.) - */ - PreferredBackupWindow?: TimeWindowDefinition; - /** - * A list of security group IDs to attach to the Amazon EC2 instance. If you add this parameter, the specified security groups must be within the VPC that is specified by SubnetIds. If you do not specify this parameter, AWS OpsWorks for Chef Automate creates one new security group that uses TCP ports 22 and 443, open to 0.0.0.0/0 (everyone). - */ - SecurityGroupIds?: Strings; - /** - * The service role that the AWS OpsWorks for Chef Automate service backend uses to work with your account. Although the AWS OpsWorks management console typically creates the service role for you, if you are using the AWS CLI or API commands, run the service-role-creation.yaml AWS CloudFormation template, located at https://s3.amazonaws.com/opsworks-cm-us-east-1-prod-default-assets/misc/opsworks-cm-roles.yaml. This template creates a CloudFormation stack that includes the service role that you need. - */ - ServiceRoleArn: ServiceRoleArn; - /** - * The IDs of subnets in which to launch the server EC2 instance. Amazon EC2-Classic customers: This field is required. All servers must run within a VPC. The VPC must have "Auto Assign Public IP" enabled. EC2-VPC customers: This field is optional. If you do not specify subnet IDs, your EC2 instances are created in a default subnet that is selected by Amazon EC2. If you specify subnet IDs, the VPC must have "Auto Assign Public IP" enabled. For more information about supported Amazon EC2 platforms, see Supported Platforms. - */ - SubnetIds?: Strings; - /** - * If you specify this field, AWS OpsWorks for Chef Automate creates the server by using the backup represented by BackupId. - */ - BackupId?: BackupId; - } - export interface CreateServerResponse { - /** - * The server that is created by the request. - */ - Server?: Server; - } - export interface DeleteBackupRequest { - /** - * The ID of the backup to delete. Run the DescribeBackups command to get a list of backup IDs. Backup IDs are in the format ServerName-yyyyMMddHHmmssSSS. - */ - BackupId: BackupId; - } - export interface DeleteBackupResponse { - } - export interface DeleteServerRequest { - /** - * The ID of the server to delete. - */ - ServerName: ServerName; - } - export interface DeleteServerResponse { - } - export interface DescribeAccountAttributesRequest { - } - export interface DescribeAccountAttributesResponse { - /** - * The attributes that are currently set for the account. - */ - Attributes?: AccountAttributes; - } - export interface DescribeBackupsRequest { - /** - * Describes a single backup. - */ - BackupId?: BackupId; - /** - * Returns backups for the server with the specified ServerName. - */ - ServerName?: ServerName; - /** - * NextToken is a string that is returned in some command responses. It indicates that not all entries have been returned, and that you must run at least one more request to get remaining items. To get remaining results, call DescribeBackups again, and assign the token from the previous results as the value of the nextToken parameter. If there are no more results, the response object's nextToken parameter value is null. Setting a nextToken value that was not returned in your previous results causes an InvalidNextTokenException to occur. - */ - NextToken?: NextToken; - /** - * To receive a paginated response, use this parameter to specify the maximum number of results to be returned with a single call. If the number of available results exceeds this maximum, the response includes a NextToken value that you can assign to the NextToken request parameter to get the next set of results. - */ - MaxResults?: MaxResults; - } - export interface DescribeBackupsResponse { - /** - * Contains the response to a DescribeBackups request. - */ - Backups?: Backups; - /** - * NextToken is a string that is returned in some command responses. It indicates that not all entries have been returned, and that you must run at least one more request to get remaining items. To get remaining results, call DescribeBackups again, and assign the token from the previous results as the value of the nextToken parameter. If there are no more results, the response object's nextToken parameter value is null. Setting a nextToken value that was not returned in your previous results causes an InvalidNextTokenException to occur. - */ - NextToken?: String; - } - export interface DescribeEventsRequest { - /** - * The name of the server for which you want to view events. - */ - ServerName: ServerName; - /** - * NextToken is a string that is returned in some command responses. It indicates that not all entries have been returned, and that you must run at least one more request to get remaining items. To get remaining results, call DescribeEvents again, and assign the token from the previous results as the value of the nextToken parameter. If there are no more results, the response object's nextToken parameter value is null. Setting a nextToken value that was not returned in your previous results causes an InvalidNextTokenException to occur. - */ - NextToken?: NextToken; - /** - * To receive a paginated response, use this parameter to specify the maximum number of results to be returned with a single call. If the number of available results exceeds this maximum, the response includes a NextToken value that you can assign to the NextToken request parameter to get the next set of results. - */ - MaxResults?: MaxResults; - } - export interface DescribeEventsResponse { - /** - * Contains the response to a DescribeEvents request. - */ - ServerEvents?: ServerEvents; - /** - * NextToken is a string that is returned in some command responses. It indicates that not all entries have been returned, and that you must run at least one more request to get remaining items. To get remaining results, call DescribeEvents again, and assign the token from the previous results as the value of the nextToken parameter. If there are no more results, the response object's nextToken parameter value is null. Setting a nextToken value that was not returned in your previous results causes an InvalidNextTokenException to occur. - */ - NextToken?: String; - } - export interface DescribeNodeAssociationStatusRequest { - /** - * The token returned in either the AssociateNodeResponse or the DisassociateNodeResponse. - */ - NodeAssociationStatusToken: NodeAssociationStatusToken; - /** - * The name of the server from which to disassociate the node. - */ - ServerName: ServerName; - } - export interface DescribeNodeAssociationStatusResponse { - /** - * The status of the association or disassociation request. Possible values: SUCCESS: The association or disassociation succeeded. FAILED: The association or disassociation failed. IN_PROGRESS: The association or disassociation is still in progress. - */ - NodeAssociationStatus?: NodeAssociationStatus; - /** - * Attributes specific to the node association. - */ - EngineAttributes?: EngineAttributes; - } - export interface DescribeServersRequest { - /** - * Describes the server with the specified ServerName. - */ - ServerName?: ServerName; - /** - * NextToken is a string that is returned in some command responses. It indicates that not all entries have been returned, and that you must run at least one more request to get remaining items. To get remaining results, call DescribeServers again, and assign the token from the previous results as the value of the nextToken parameter. If there are no more results, the response object's nextToken parameter value is null. Setting a nextToken value that was not returned in your previous results causes an InvalidNextTokenException to occur. - */ - NextToken?: NextToken; - /** - * To receive a paginated response, use this parameter to specify the maximum number of results to be returned with a single call. If the number of available results exceeds this maximum, the response includes a NextToken value that you can assign to the NextToken request parameter to get the next set of results. - */ - MaxResults?: MaxResults; - } - export interface DescribeServersResponse { - /** - * Contains the response to a DescribeServers request. - */ - Servers?: Servers; - /** - * NextToken is a string that is returned in some command responses. It indicates that not all entries have been returned, and that you must run at least one more request to get remaining items. To get remaining results, call DescribeServers again, and assign the token from the previous results as the value of the nextToken parameter. If there are no more results, the response object's nextToken parameter value is null. Setting a nextToken value that was not returned in your previous results causes an InvalidNextTokenException to occur. - */ - NextToken?: String; - } - export interface DisassociateNodeRequest { - /** - * The name of the server from which to disassociate the node. - */ - ServerName: ServerName; - /** - * The name of the Chef client node. - */ - NodeName: NodeName; - /** - * Engine attributes used for disassociating the node. Attributes accepted in a DisassociateNode request: CHEF_ORGANIZATION: The Chef organization with which the node was associated. By default only one organization named default can exist. - */ - EngineAttributes?: EngineAttributes; - } - export interface DisassociateNodeResponse { - /** - * Contains a token which can be passed to the DescribeNodeAssociationStatus API call to get the status of the disassociation request. - */ - NodeAssociationStatusToken?: NodeAssociationStatusToken; - } - export interface EngineAttribute { - /** - * The name of the engine attribute. - */ - Name?: EngineAttributeName; - /** - * The value of the engine attribute. - */ - Value?: EngineAttributeValue; - } - export type EngineAttributeName = string; - export type EngineAttributeValue = string; - export type EngineAttributes = EngineAttribute[]; - export type InstanceProfileArn = string; - export type Integer = number; - export type KeyPair = string; - export type MaintenanceStatus = "SUCCESS"|"FAILED"|string; - export type MaxResults = number; - export type NextToken = string; - export type NodeAssociationStatus = "SUCCESS"|"FAILED"|"IN_PROGRESS"|string; - export type NodeAssociationStatusToken = string; - export type NodeName = string; - export interface RestoreServerRequest { - /** - * The ID of the backup that you want to use to restore a server. - */ - BackupId: BackupId; - /** - * The name of the server that you want to restore. - */ - ServerName: ServerName; - /** - * The type of the instance to create. Valid values must be specified in the following format: ^([cm][34]|t2).* For example, m4.large. Valid values are t2.medium, m4.large, and m4.2xlarge. If you do not specify this parameter, RestoreServer uses the instance type from the specified backup. - */ - InstanceType?: String; - /** - * The name of the key pair to set on the new EC2 instance. This can be helpful if the administrator no longer has the SSH key. - */ - KeyPair?: KeyPair; - } - export interface RestoreServerResponse { - } - export interface Server { - /** - * Associate a public IP address with a server that you are launching. - */ - AssociatePublicIpAddress?: Boolean; - /** - * The number of automated backups to keep. - */ - BackupRetentionCount?: Integer; - /** - * The name of the server. - */ - ServerName?: String; - /** - * Time stamp of server creation. Example 2016-07-29T13:38:47.520Z - */ - CreatedAt?: Timestamp; - /** - * The ARN of the CloudFormation stack that was used to create the server. - */ - CloudFormationStackArn?: String; - /** - * Disables automated backups. The number of stored backups is dependent on the value of PreferredBackupCount. - */ - DisableAutomatedBackup?: Boolean; - /** - * A DNS name that can be used to access the engine. Example: myserver-asdfghjkl.us-east-1.opsworks.io - */ - Endpoint?: String; - /** - * The engine type of the server. The valid value in this release is Chef. - */ - Engine?: String; - /** - * The engine model of the server. The valid value in this release is Single. - */ - EngineModel?: String; - /** - * The response of a createServer() request returns the master credential to access the server in EngineAttributes. These credentials are not stored by AWS OpsWorks for Chef Automate; they are returned only as part of the result of createServer(). Attributes returned in a createServer response: CHEF_PIVOTAL_KEY: A base64-encoded RSA private key that is generated by AWS OpsWorks for Chef Automate. This private key is required to access the Chef API. CHEF_STARTER_KIT: A base64-encoded ZIP file. The ZIP file contains a Chef starter kit, which includes a README, a configuration file, and the required RSA private key. Save this file, unzip it, and then change to the directory where you've unzipped the file contents. From this directory, you can run Knife commands. - */ - EngineAttributes?: EngineAttributes; - /** - * The engine version of the server. Because Chef is the engine available in this release, the valid value for EngineVersion is 12. - */ - EngineVersion?: String; - /** - * The instance profile ARN of the server. - */ - InstanceProfileArn?: String; - /** - * The instance type for the server, as specified in the CloudFormation stack. This might not be the same instance type that is shown in the EC2 console. - */ - InstanceType?: String; - /** - * The key pair associated with the server. - */ - KeyPair?: String; - /** - * The status of the most recent server maintenance run. Shows SUCCESS or FAILED. - */ - MaintenanceStatus?: MaintenanceStatus; - /** - * The preferred maintenance period specified for the server. - */ - PreferredMaintenanceWindow?: TimeWindowDefinition; - /** - * The preferred backup period specified for the server. - */ - PreferredBackupWindow?: TimeWindowDefinition; - /** - * The security group IDs for the server, as specified in the CloudFormation stack. These might not be the same security groups that are shown in the EC2 console. - */ - SecurityGroupIds?: Strings; - /** - * The service role ARN used to create the server. - */ - ServiceRoleArn?: String; - /** - * The server's status. This field displays the states of actions in progress, such as creating, running, or backing up the server, as well as the server's health state. - */ - Status?: ServerStatus; - /** - * Depending on the server status, this field has either a human-readable message (such as a create or backup error), or an escaped block of JSON (used for health check results). - */ - StatusReason?: String; - /** - * The subnet IDs specified in a CreateServer request. - */ - SubnetIds?: Strings; - /** - * The ARN of the server. - */ - ServerArn?: String; - } - export interface ServerEvent { - /** - * The time when the event occurred. - */ - CreatedAt?: Timestamp; - /** - * The name of the server on or for which the event occurred. - */ - ServerName?: String; - /** - * A human-readable informational or status message. - */ - Message?: String; - /** - * The Amazon S3 URL of the event's log file. - */ - LogUrl?: String; - } - export type ServerEvents = ServerEvent[]; - export type ServerName = string; - export type ServerStatus = "BACKING_UP"|"CONNECTION_LOST"|"CREATING"|"DELETING"|"MODIFYING"|"FAILED"|"HEALTHY"|"RUNNING"|"RESTORING"|"SETUP"|"UNDER_MAINTENANCE"|"UNHEALTHY"|"TERMINATED"|string; - export type Servers = Server[]; - export type ServiceRoleArn = string; - export interface StartMaintenanceRequest { - /** - * The name of the server on which to run maintenance. - */ - ServerName: ServerName; - /** - * Engine attributes that are specific to the server on which you want to run maintenance. - */ - EngineAttributes?: EngineAttributes; - } - export interface StartMaintenanceResponse { - /** - * Contains the response to a StartMaintenance request. - */ - Server?: Server; - } - export type String = string; - export type Strings = String[]; - export type TimeWindowDefinition = string; - export type Timestamp = Date; - export interface UpdateServerEngineAttributesRequest { - /** - * The name of the server to update. - */ - ServerName: ServerName; - /** - * The name of the engine attribute to update. - */ - AttributeName: AttributeName; - /** - * The value to set for the attribute. - */ - AttributeValue?: AttributeValue; - } - export interface UpdateServerEngineAttributesResponse { - /** - * Contains the response to an UpdateServerEngineAttributes request. - */ - Server?: Server; - } - export interface UpdateServerRequest { - /** - * Setting DisableAutomatedBackup to true disables automated or scheduled backups. Automated backups are enabled by default. - */ - DisableAutomatedBackup?: Boolean; - /** - * Sets the number of automated backups that you want to keep. - */ - BackupRetentionCount?: Integer; - /** - * The name of the server to update. - */ - ServerName: ServerName; - PreferredMaintenanceWindow?: TimeWindowDefinition; - PreferredBackupWindow?: TimeWindowDefinition; - } - export interface UpdateServerResponse { - /** - * Contains the response to a UpdateServer request. - */ - Server?: Server; - } - /** - * A string in YYYY-MM-DD format that represents the latest possible API version that can be used in this service. Specify 'latest' to use the latest possible version. - */ - export type apiVersion = "2016-11-01"|"latest"|string; - export interface ClientApiVersions { - /** - * A string in YYYY-MM-DD format that represents the latest possible API version that can be used in this service. Specify 'latest' to use the latest possible version. - */ - apiVersion?: apiVersion; - } - export type ClientConfiguration = ServiceConfigurationOptions & ClientApiVersions; - /** - * Contains interfaces for use with the OpsWorksCM client. - */ - export import Types = OpsWorksCM; -} -export = OpsWorksCM; diff --git a/workshops/monte-carlo-on-ec2-spot-fleet/src/web/node_modules/aws-sdk/clients/opsworkscm.js b/workshops/monte-carlo-on-ec2-spot-fleet/src/web/node_modules/aws-sdk/clients/opsworkscm.js deleted file mode 100644 index 10cfd661..00000000 --- a/workshops/monte-carlo-on-ec2-spot-fleet/src/web/node_modules/aws-sdk/clients/opsworkscm.js +++ /dev/null @@ -1,18 +0,0 @@ -require('../lib/node_loader'); -var AWS = require('../lib/core'); -var Service = AWS.Service; -var apiLoader = AWS.apiLoader; - -apiLoader.services['opsworkscm'] = {}; -AWS.OpsWorksCM = Service.defineService('opsworkscm', ['2016-11-01']); -Object.defineProperty(apiLoader.services['opsworkscm'], '2016-11-01', { - get: function get() { - var model = require('../apis/opsworkscm-2016-11-01.min.json'); - model.paginators = require('../apis/opsworkscm-2016-11-01.paginators.json').pagination; - return model; - }, - enumerable: true, - configurable: true -}); - -module.exports = AWS.OpsWorksCM; diff --git a/workshops/monte-carlo-on-ec2-spot-fleet/src/web/node_modules/aws-sdk/clients/organizations.d.ts b/workshops/monte-carlo-on-ec2-spot-fleet/src/web/node_modules/aws-sdk/clients/organizations.d.ts deleted file mode 100644 index 3bba0ed5..00000000 --- a/workshops/monte-carlo-on-ec2-spot-fleet/src/web/node_modules/aws-sdk/clients/organizations.d.ts +++ /dev/null @@ -1,1286 +0,0 @@ -import {Request} from '../lib/request'; -import {Response} from '../lib/response'; -import {AWSError} from '../lib/error'; -import {Service} from '../lib/service'; -import {ServiceConfigurationOptions} from '../lib/service'; -import {ConfigBase as Config} from '../lib/config'; -interface Blob {} -declare class Organizations extends Service { - /** - * Constructs a service object. This object has one method for each API operation. - */ - constructor(options?: Organizations.Types.ClientConfiguration) - config: Config & Organizations.Types.ClientConfiguration; - /** - * Sends a response to the originator of a handshake agreeing to the action proposed by the handshake request. This operation can be called only by the following principals when they also have the relevant IAM permissions: Invitation to join or Approve all features request handshakes: only a principal from the member account. Enable all features final confirmation handshake: only a principal from the master account. For more information about invitations, see Inviting an AWS Account to Join Your Organization in the AWS Organizations User Guide. For more information about requests to enable all features in the organization, see Enabling All Features in Your Organization in the AWS Organizations User Guide. After you accept a handshake, it continues to appear in the results of relevant APIs for only 30 days. After that it is deleted. - */ - acceptHandshake(params: Organizations.Types.AcceptHandshakeRequest, callback?: (err: AWSError, data: Organizations.Types.AcceptHandshakeResponse) => void): Request; - /** - * Sends a response to the originator of a handshake agreeing to the action proposed by the handshake request. This operation can be called only by the following principals when they also have the relevant IAM permissions: Invitation to join or Approve all features request handshakes: only a principal from the member account. Enable all features final confirmation handshake: only a principal from the master account. For more information about invitations, see Inviting an AWS Account to Join Your Organization in the AWS Organizations User Guide. For more information about requests to enable all features in the organization, see Enabling All Features in Your Organization in the AWS Organizations User Guide. After you accept a handshake, it continues to appear in the results of relevant APIs for only 30 days. After that it is deleted. - */ - acceptHandshake(callback?: (err: AWSError, data: Organizations.Types.AcceptHandshakeResponse) => void): Request; - /** - * Attaches a policy to a root, an organizational unit, or an individual account. How the policy affects accounts depends on the type of policy: Service control policy (SCP) - An SCP specifies what permissions can be delegated to users in affected member accounts. The scope of influence for a policy depends on what you attach the policy to: If you attach an SCP to a root, it affects all accounts in the organization. If you attach an SCP to an OU, it affects all accounts in that OU and in any child OUs. If you attach the policy directly to an account, then it affects only that account. SCPs essentially are permission "filters". When you attach one SCP to a higher level root or OU, and you also attach a different SCP to a child OU or to an account, the child policy can further restrict only the permissions that pass through the parent filter and are available to the child. An SCP that is attached to a child cannot grant a permission that is not already granted by the parent. For example, imagine that the parent SCP allows permissions A, B, C, D, and E. The child SCP allows C, D, E, F, and G. The result is that the accounts affected by the child SCP are allowed to use only C, D, and E. They cannot use A or B because they were filtered out by the child OU. They also cannot use F and G because they were filtered out by the parent OU. They cannot be granted back by the child SCP; child SCPs can only filter the permissions they receive from the parent SCP. AWS Organizations attaches a default SCP named "FullAWSAccess to every root, OU, and account. This default SCP allows all services and actions, enabling any new child OU or account to inherit the permissions of the parent root or OU. If you detach the default policy, you must replace it with a policy that specifies the permissions that you want to allow in that OU or account. For more information about how Organizations policies permissions work, see Using Service Control Policies in the AWS Organizations User Guide. This operation can be called only from the organization's master account. - */ - attachPolicy(params: Organizations.Types.AttachPolicyRequest, callback?: (err: AWSError, data: {}) => void): Request<{}, AWSError>; - /** - * Attaches a policy to a root, an organizational unit, or an individual account. How the policy affects accounts depends on the type of policy: Service control policy (SCP) - An SCP specifies what permissions can be delegated to users in affected member accounts. The scope of influence for a policy depends on what you attach the policy to: If you attach an SCP to a root, it affects all accounts in the organization. If you attach an SCP to an OU, it affects all accounts in that OU and in any child OUs. If you attach the policy directly to an account, then it affects only that account. SCPs essentially are permission "filters". When you attach one SCP to a higher level root or OU, and you also attach a different SCP to a child OU or to an account, the child policy can further restrict only the permissions that pass through the parent filter and are available to the child. An SCP that is attached to a child cannot grant a permission that is not already granted by the parent. For example, imagine that the parent SCP allows permissions A, B, C, D, and E. The child SCP allows C, D, E, F, and G. The result is that the accounts affected by the child SCP are allowed to use only C, D, and E. They cannot use A or B because they were filtered out by the child OU. They also cannot use F and G because they were filtered out by the parent OU. They cannot be granted back by the child SCP; child SCPs can only filter the permissions they receive from the parent SCP. AWS Organizations attaches a default SCP named "FullAWSAccess to every root, OU, and account. This default SCP allows all services and actions, enabling any new child OU or account to inherit the permissions of the parent root or OU. If you detach the default policy, you must replace it with a policy that specifies the permissions that you want to allow in that OU or account. For more information about how Organizations policies permissions work, see Using Service Control Policies in the AWS Organizations User Guide. This operation can be called only from the organization's master account. - */ - attachPolicy(callback?: (err: AWSError, data: {}) => void): Request<{}, AWSError>; - /** - * Cancels a handshake. Canceling a handshake sets the handshake state to CANCELED. This operation can be called only from the account that originated the handshake. The recipient of the handshake can't cancel it, but can use DeclineHandshake instead. After a handshake is canceled, the recipient can no longer respond to that handshake. After you cancel a handshake, it continues to appear in the results of relevant APIs for only 30 days. After that it is deleted. - */ - cancelHandshake(params: Organizations.Types.CancelHandshakeRequest, callback?: (err: AWSError, data: Organizations.Types.CancelHandshakeResponse) => void): Request; - /** - * Cancels a handshake. Canceling a handshake sets the handshake state to CANCELED. This operation can be called only from the account that originated the handshake. The recipient of the handshake can't cancel it, but can use DeclineHandshake instead. After a handshake is canceled, the recipient can no longer respond to that handshake. After you cancel a handshake, it continues to appear in the results of relevant APIs for only 30 days. After that it is deleted. - */ - cancelHandshake(callback?: (err: AWSError, data: Organizations.Types.CancelHandshakeResponse) => void): Request; - /** - * Creates an AWS account that is automatically a member of the organization whose credentials made the request. This is an asynchronous request that AWS performs in the background. If you want to check the status of the request later, you need the OperationId response element from this operation to provide as a parameter to the DescribeCreateAccountStatus operation. AWS Organizations preconfigures the new member account with a role (named OrganizationAccountAccessRole by default) that grants administrator permissions to the new account. Principals in the master account can assume the role. AWS Organizations clones the company name and address information for the new account from the organization's master account. For more information about creating accounts, see Creating an AWS Account in Your Organization in the AWS Organizations User Guide. When you create an account in an organization using the AWS Organizations console, API, or CLI commands, the information required for the account to operate as a standalone account, such as a payment method and signing the End User Licence Agreement (EULA) is not automatically collected. If you must remove an account from your organization later, you can do so only after you provide the missing information. Follow the steps at To leave an organization when all required account information has not yet been provided in the AWS Organizations User Guide. When you create a member account with this operation, you can choose whether to create the account with the IAM User and Role Access to Billing Information switch enabled. If you enable it, IAM users and roles that have appropriate permissions can view billing information for the account. If you disable this, then only the account root user can access billing information. For information about how to disable this for an account, see Granting Access to Your Billing Information and Tools. This operation can be called only from the organization's master account. If you get an exception that indicates that you exceeded your account limits for the organization or that you can"t add an account because your organization is still initializing, please contact AWS Customer Support. - */ - createAccount(params: Organizations.Types.CreateAccountRequest, callback?: (err: AWSError, data: Organizations.Types.CreateAccountResponse) => void): Request; - /** - * Creates an AWS account that is automatically a member of the organization whose credentials made the request. This is an asynchronous request that AWS performs in the background. If you want to check the status of the request later, you need the OperationId response element from this operation to provide as a parameter to the DescribeCreateAccountStatus operation. AWS Organizations preconfigures the new member account with a role (named OrganizationAccountAccessRole by default) that grants administrator permissions to the new account. Principals in the master account can assume the role. AWS Organizations clones the company name and address information for the new account from the organization's master account. For more information about creating accounts, see Creating an AWS Account in Your Organization in the AWS Organizations User Guide. When you create an account in an organization using the AWS Organizations console, API, or CLI commands, the information required for the account to operate as a standalone account, such as a payment method and signing the End User Licence Agreement (EULA) is not automatically collected. If you must remove an account from your organization later, you can do so only after you provide the missing information. Follow the steps at To leave an organization when all required account information has not yet been provided in the AWS Organizations User Guide. When you create a member account with this operation, you can choose whether to create the account with the IAM User and Role Access to Billing Information switch enabled. If you enable it, IAM users and roles that have appropriate permissions can view billing information for the account. If you disable this, then only the account root user can access billing information. For information about how to disable this for an account, see Granting Access to Your Billing Information and Tools. This operation can be called only from the organization's master account. If you get an exception that indicates that you exceeded your account limits for the organization or that you can"t add an account because your organization is still initializing, please contact AWS Customer Support. - */ - createAccount(callback?: (err: AWSError, data: Organizations.Types.CreateAccountResponse) => void): Request; - /** - * Creates an AWS organization. The account whose user is calling the CreateOrganization operation automatically becomes the master account of the new organization. This operation must be called using credentials from the account that is to become the new organization's master account. The principal must also have the relevant IAM permissions. By default (or if you set the FeatureSet parameter to ALL), the new organization is created with all features enabled and service control policies automatically enabled in the root. If you instead choose to create the organization supporting only the consolidated billing features by setting the FeatureSet parameter to CONSOLIDATED_BILLING", then no policy types are enabled by default and you cannot use organization policies. - */ - createOrganization(params: Organizations.Types.CreateOrganizationRequest, callback?: (err: AWSError, data: Organizations.Types.CreateOrganizationResponse) => void): Request; - /** - * Creates an AWS organization. The account whose user is calling the CreateOrganization operation automatically becomes the master account of the new organization. This operation must be called using credentials from the account that is to become the new organization's master account. The principal must also have the relevant IAM permissions. By default (or if you set the FeatureSet parameter to ALL), the new organization is created with all features enabled and service control policies automatically enabled in the root. If you instead choose to create the organization supporting only the consolidated billing features by setting the FeatureSet parameter to CONSOLIDATED_BILLING", then no policy types are enabled by default and you cannot use organization policies. - */ - createOrganization(callback?: (err: AWSError, data: Organizations.Types.CreateOrganizationResponse) => void): Request; - /** - * Creates an organizational unit (OU) within a root or parent OU. An OU is a container for accounts that enables you to organize your accounts to apply policies according to your business requirements. The number of levels deep that you can nest OUs is dependent upon the policy types enabled for that root. For service control policies, the limit is five. For more information about OUs, see Managing Organizational Units in the AWS Organizations User Guide. This operation can be called only from the organization's master account. - */ - createOrganizationalUnit(params: Organizations.Types.CreateOrganizationalUnitRequest, callback?: (err: AWSError, data: Organizations.Types.CreateOrganizationalUnitResponse) => void): Request; - /** - * Creates an organizational unit (OU) within a root or parent OU. An OU is a container for accounts that enables you to organize your accounts to apply policies according to your business requirements. The number of levels deep that you can nest OUs is dependent upon the policy types enabled for that root. For service control policies, the limit is five. For more information about OUs, see Managing Organizational Units in the AWS Organizations User Guide. This operation can be called only from the organization's master account. - */ - createOrganizationalUnit(callback?: (err: AWSError, data: Organizations.Types.CreateOrganizationalUnitResponse) => void): Request; - /** - * Creates a policy of a specified type that you can attach to a root, an organizational unit (OU), or an individual AWS account. For more information about policies and their use, see Managing Organization Policies. This operation can be called only from the organization's master account. - */ - createPolicy(params: Organizations.Types.CreatePolicyRequest, callback?: (err: AWSError, data: Organizations.Types.CreatePolicyResponse) => void): Request; - /** - * Creates a policy of a specified type that you can attach to a root, an organizational unit (OU), or an individual AWS account. For more information about policies and their use, see Managing Organization Policies. This operation can be called only from the organization's master account. - */ - createPolicy(callback?: (err: AWSError, data: Organizations.Types.CreatePolicyResponse) => void): Request; - /** - * Declines a handshake request. This sets the handshake state to DECLINED and effectively deactivates the request. This operation can be called only from the account that received the handshake. The originator of the handshake can use CancelHandshake instead. The originator can't reactivate a declined request, but can re-initiate the process with a new handshake request. After you decline a handshake, it continues to appear in the results of relevant APIs for only 30 days. After that it is deleted. - */ - declineHandshake(params: Organizations.Types.DeclineHandshakeRequest, callback?: (err: AWSError, data: Organizations.Types.DeclineHandshakeResponse) => void): Request; - /** - * Declines a handshake request. This sets the handshake state to DECLINED and effectively deactivates the request. This operation can be called only from the account that received the handshake. The originator of the handshake can use CancelHandshake instead. The originator can't reactivate a declined request, but can re-initiate the process with a new handshake request. After you decline a handshake, it continues to appear in the results of relevant APIs for only 30 days. After that it is deleted. - */ - declineHandshake(callback?: (err: AWSError, data: Organizations.Types.DeclineHandshakeResponse) => void): Request; - /** - * Deletes the organization. You can delete an organization only by using credentials from the master account. The organization must be empty of member accounts, OUs, and policies. - */ - deleteOrganization(callback?: (err: AWSError, data: {}) => void): Request<{}, AWSError>; - /** - * Deletes an organizational unit from a root or another OU. You must first remove all accounts and child OUs from the OU that you want to delete. This operation can be called only from the organization's master account. - */ - deleteOrganizationalUnit(params: Organizations.Types.DeleteOrganizationalUnitRequest, callback?: (err: AWSError, data: {}) => void): Request<{}, AWSError>; - /** - * Deletes an organizational unit from a root or another OU. You must first remove all accounts and child OUs from the OU that you want to delete. This operation can be called only from the organization's master account. - */ - deleteOrganizationalUnit(callback?: (err: AWSError, data: {}) => void): Request<{}, AWSError>; - /** - * Deletes the specified policy from your organization. Before you perform this operation, you must first detach the policy from all OUs, roots, and accounts. This operation can be called only from the organization's master account. - */ - deletePolicy(params: Organizations.Types.DeletePolicyRequest, callback?: (err: AWSError, data: {}) => void): Request<{}, AWSError>; - /** - * Deletes the specified policy from your organization. Before you perform this operation, you must first detach the policy from all OUs, roots, and accounts. This operation can be called only from the organization's master account. - */ - deletePolicy(callback?: (err: AWSError, data: {}) => void): Request<{}, AWSError>; - /** - * Retrieves Organizations-related information about the specified account. This operation can be called only from the organization's master account. - */ - describeAccount(params: Organizations.Types.DescribeAccountRequest, callback?: (err: AWSError, data: Organizations.Types.DescribeAccountResponse) => void): Request; - /** - * Retrieves Organizations-related information about the specified account. This operation can be called only from the organization's master account. - */ - describeAccount(callback?: (err: AWSError, data: Organizations.Types.DescribeAccountResponse) => void): Request; - /** - * Retrieves the current status of an asynchronous request to create an account. This operation can be called only from the organization's master account. - */ - describeCreateAccountStatus(params: Organizations.Types.DescribeCreateAccountStatusRequest, callback?: (err: AWSError, data: Organizations.Types.DescribeCreateAccountStatusResponse) => void): Request; - /** - * Retrieves the current status of an asynchronous request to create an account. This operation can be called only from the organization's master account. - */ - describeCreateAccountStatus(callback?: (err: AWSError, data: Organizations.Types.DescribeCreateAccountStatusResponse) => void): Request; - /** - * Retrieves information about a previously requested handshake. The handshake ID comes from the response to the original InviteAccountToOrganization operation that generated the handshake. You can access handshakes that are ACCEPTED, DECLINED, or CANCELED for only 30 days after they change to that state. They are then deleted and no longer accessible. This operation can be called from any account in the organization. - */ - describeHandshake(params: Organizations.Types.DescribeHandshakeRequest, callback?: (err: AWSError, data: Organizations.Types.DescribeHandshakeResponse) => void): Request; - /** - * Retrieves information about a previously requested handshake. The handshake ID comes from the response to the original InviteAccountToOrganization operation that generated the handshake. You can access handshakes that are ACCEPTED, DECLINED, or CANCELED for only 30 days after they change to that state. They are then deleted and no longer accessible. This operation can be called from any account in the organization. - */ - describeHandshake(callback?: (err: AWSError, data: Organizations.Types.DescribeHandshakeResponse) => void): Request; - /** - * Retrieves information about the organization that the user's account belongs to. This operation can be called from any account in the organization. - */ - describeOrganization(callback?: (err: AWSError, data: Organizations.Types.DescribeOrganizationResponse) => void): Request; - /** - * Retrieves information about an organizational unit (OU). This operation can be called only from the organization's master account. - */ - describeOrganizationalUnit(params: Organizations.Types.DescribeOrganizationalUnitRequest, callback?: (err: AWSError, data: Organizations.Types.DescribeOrganizationalUnitResponse) => void): Request; - /** - * Retrieves information about an organizational unit (OU). This operation can be called only from the organization's master account. - */ - describeOrganizationalUnit(callback?: (err: AWSError, data: Organizations.Types.DescribeOrganizationalUnitResponse) => void): Request; - /** - * Retrieves information about a policy. This operation can be called only from the organization's master account. - */ - describePolicy(params: Organizations.Types.DescribePolicyRequest, callback?: (err: AWSError, data: Organizations.Types.DescribePolicyResponse) => void): Request; - /** - * Retrieves information about a policy. This operation can be called only from the organization's master account. - */ - describePolicy(callback?: (err: AWSError, data: Organizations.Types.DescribePolicyResponse) => void): Request; - /** - * Detaches a policy from a target root, organizational unit, or account. If the policy being detached is a service control policy (SCP), the changes to permissions for IAM users and roles in affected accounts are immediate. Note: Every root, OU, and account must have at least one SCP attached. If you want to replace the default FullAWSAccess policy with one that limits the permissions that can be delegated, then you must attach the replacement policy before you can remove the default one. This is the authorization strategy of whitelisting. If you instead attach a second SCP and leave the FullAWSAccess SCP still attached, and specify "Effect": "Deny" in the second SCP to override the "Effect": "Allow" in the FullAWSAccess policy (or any other attached SCP), then you are using the authorization strategy of blacklisting. This operation can be called only from the organization's master account. - */ - detachPolicy(params: Organizations.Types.DetachPolicyRequest, callback?: (err: AWSError, data: {}) => void): Request<{}, AWSError>; - /** - * Detaches a policy from a target root, organizational unit, or account. If the policy being detached is a service control policy (SCP), the changes to permissions for IAM users and roles in affected accounts are immediate. Note: Every root, OU, and account must have at least one SCP attached. If you want to replace the default FullAWSAccess policy with one that limits the permissions that can be delegated, then you must attach the replacement policy before you can remove the default one. This is the authorization strategy of whitelisting. If you instead attach a second SCP and leave the FullAWSAccess SCP still attached, and specify "Effect": "Deny" in the second SCP to override the "Effect": "Allow" in the FullAWSAccess policy (or any other attached SCP), then you are using the authorization strategy of blacklisting. This operation can be called only from the organization's master account. - */ - detachPolicy(callback?: (err: AWSError, data: {}) => void): Request<{}, AWSError>; - /** - * Disables an organizational control policy type in a root. A policy of a certain type can be attached to entities in a root only if that type is enabled in the root. After you perform this operation, you no longer can attach policies of the specified type to that root or to any OU or account in that root. You can undo this by using the EnablePolicyType operation. This operation can be called only from the organization's master account. - */ - disablePolicyType(params: Organizations.Types.DisablePolicyTypeRequest, callback?: (err: AWSError, data: Organizations.Types.DisablePolicyTypeResponse) => void): Request; - /** - * Disables an organizational control policy type in a root. A policy of a certain type can be attached to entities in a root only if that type is enabled in the root. After you perform this operation, you no longer can attach policies of the specified type to that root or to any OU or account in that root. You can undo this by using the EnablePolicyType operation. This operation can be called only from the organization's master account. - */ - disablePolicyType(callback?: (err: AWSError, data: Organizations.Types.DisablePolicyTypeResponse) => void): Request; - /** - * Enables all features in an organization. This enables the use of organization policies that can restrict the services and actions that can be called in each account. Until you enable all features, you have access only to consolidated billing, and you can't use any of the advanced account administration features that AWS Organizations supports. For more information, see Enabling All Features in Your Organization in the AWS Organizations User Guide. This operation is required only for organizations that were created explicitly with only the consolidated billing features enabled, or that were migrated from a Consolidated Billing account family to Organizations. Calling this operation sends a handshake to every invited account in the organization. The feature set change can be finalized and the additional features enabled only after all administrators in the invited accounts approve the change by accepting the handshake. After all invited member accounts accept the handshake, you finalize the feature set change by accepting the handshake that contains "Action": "ENABLE_ALL_FEATURES". This completes the change. After you enable all features in your organization, the master account in the organization can apply policies on all member accounts. These policies can restrict what users and even administrators in those accounts can do. The master account can apply policies that prevent accounts from leaving the organization. Ensure that your account administrators are aware of this. This operation can be called only from the organization's master account. - */ - enableAllFeatures(params: Organizations.Types.EnableAllFeaturesRequest, callback?: (err: AWSError, data: Organizations.Types.EnableAllFeaturesResponse) => void): Request; - /** - * Enables all features in an organization. This enables the use of organization policies that can restrict the services and actions that can be called in each account. Until you enable all features, you have access only to consolidated billing, and you can't use any of the advanced account administration features that AWS Organizations supports. For more information, see Enabling All Features in Your Organization in the AWS Organizations User Guide. This operation is required only for organizations that were created explicitly with only the consolidated billing features enabled, or that were migrated from a Consolidated Billing account family to Organizations. Calling this operation sends a handshake to every invited account in the organization. The feature set change can be finalized and the additional features enabled only after all administrators in the invited accounts approve the change by accepting the handshake. After all invited member accounts accept the handshake, you finalize the feature set change by accepting the handshake that contains "Action": "ENABLE_ALL_FEATURES". This completes the change. After you enable all features in your organization, the master account in the organization can apply policies on all member accounts. These policies can restrict what users and even administrators in those accounts can do. The master account can apply policies that prevent accounts from leaving the organization. Ensure that your account administrators are aware of this. This operation can be called only from the organization's master account. - */ - enableAllFeatures(callback?: (err: AWSError, data: Organizations.Types.EnableAllFeaturesResponse) => void): Request; - /** - * Enables a policy type in a root. After you enable a policy type in a root, you can attach policies of that type to the root, any OU, or account in that root. You can undo this by using the DisablePolicyType operation. This operation can be called only from the organization's master account. - */ - enablePolicyType(params: Organizations.Types.EnablePolicyTypeRequest, callback?: (err: AWSError, data: Organizations.Types.EnablePolicyTypeResponse) => void): Request; - /** - * Enables a policy type in a root. After you enable a policy type in a root, you can attach policies of that type to the root, any OU, or account in that root. You can undo this by using the DisablePolicyType operation. This operation can be called only from the organization's master account. - */ - enablePolicyType(callback?: (err: AWSError, data: Organizations.Types.EnablePolicyTypeResponse) => void): Request; - /** - * Sends an invitation to another account to join your organization as a member account. Organizations sends email on your behalf to the email address that is associated with the other account's owner. The invitation is implemented as a Handshake whose details are in the response. You can invite AWS accounts only from the same seller as the master account. For example, if your organization's master account was created by Amazon Internet Services Pvt. Ltd (AISPL), an AWS seller in India, then you can only invite other AISPL accounts to your organization. You can't combine accounts from AISPL and AWS, or any other AWS seller. For more information, see Consolidated Billing in India. This operation can be called only from the organization's master account. If you get an exception that indicates that you exceeded your account limits for the organization or that you can"t add an account because your organization is still initializing, please contact AWS Customer Support. - */ - inviteAccountToOrganization(params: Organizations.Types.InviteAccountToOrganizationRequest, callback?: (err: AWSError, data: Organizations.Types.InviteAccountToOrganizationResponse) => void): Request; - /** - * Sends an invitation to another account to join your organization as a member account. Organizations sends email on your behalf to the email address that is associated with the other account's owner. The invitation is implemented as a Handshake whose details are in the response. You can invite AWS accounts only from the same seller as the master account. For example, if your organization's master account was created by Amazon Internet Services Pvt. Ltd (AISPL), an AWS seller in India, then you can only invite other AISPL accounts to your organization. You can't combine accounts from AISPL and AWS, or any other AWS seller. For more information, see Consolidated Billing in India. This operation can be called only from the organization's master account. If you get an exception that indicates that you exceeded your account limits for the organization or that you can"t add an account because your organization is still initializing, please contact AWS Customer Support. - */ - inviteAccountToOrganization(callback?: (err: AWSError, data: Organizations.Types.InviteAccountToOrganizationResponse) => void): Request; - /** - * Removes a member account from its parent organization. This version of the operation is performed by the account that wants to leave. To remove a member account as a user in the master account, use RemoveAccountFromOrganization instead. This operation can be called only from a member account in the organization. The master account in an organization with all features enabled can set service control policies (SCPs) that can restrict what administrators of member accounts can do, including preventing them from successfully calling LeaveOrganization and leaving the organization. You can leave an organization as a member account only if the account is configured with the information required to operate as a standalone account. When you create an account in an organization using the AWS Organizations console, API, or CLI commands, the information required of standalone accounts is not automatically collected. For each account that you want to make standalone, you must accept the End User License Agreement (EULA), choose a support plan, provide and verify the required contact information, and provide a current payment method. AWS uses the payment method to charge for any billable (not free tier) AWS activity that occurs while the account is not attached to an organization. Follow the steps at To leave an organization when all required account information has not yet been provided in the AWS Organizations User Guide. You can leave an organization only after you enable IAM user access to billing in your account. For more information, see Activating Access to the Billing and Cost Management Console in the AWS Billing and Cost Management User Guide. - */ - leaveOrganization(callback?: (err: AWSError, data: {}) => void): Request<{}, AWSError>; - /** - * Lists all the accounts in the organization. To request only the accounts in a root or OU, use the ListAccountsForParent operation instead. This operation can be called only from the organization's master account. - */ - listAccounts(params: Organizations.Types.ListAccountsRequest, callback?: (err: AWSError, data: Organizations.Types.ListAccountsResponse) => void): Request; - /** - * Lists all the accounts in the organization. To request only the accounts in a root or OU, use the ListAccountsForParent operation instead. This operation can be called only from the organization's master account. - */ - listAccounts(callback?: (err: AWSError, data: Organizations.Types.ListAccountsResponse) => void): Request; - /** - * Lists the accounts in an organization that are contained by the specified target root or organizational unit (OU). If you specify the root, you get a list of all the accounts that are not in any OU. If you specify an OU, you get a list of all the accounts in only that OU, and not in any child OUs. To get a list of all accounts in the organization, use the ListAccounts operation. - */ - listAccountsForParent(params: Organizations.Types.ListAccountsForParentRequest, callback?: (err: AWSError, data: Organizations.Types.ListAccountsForParentResponse) => void): Request; - /** - * Lists the accounts in an organization that are contained by the specified target root or organizational unit (OU). If you specify the root, you get a list of all the accounts that are not in any OU. If you specify an OU, you get a list of all the accounts in only that OU, and not in any child OUs. To get a list of all accounts in the organization, use the ListAccounts operation. - */ - listAccountsForParent(callback?: (err: AWSError, data: Organizations.Types.ListAccountsForParentResponse) => void): Request; - /** - * Lists all of the OUs or accounts that are contained in the specified parent OU or root. This operation, along with ListParents enables you to traverse the tree structure that makes up this root. - */ - listChildren(params: Organizations.Types.ListChildrenRequest, callback?: (err: AWSError, data: Organizations.Types.ListChildrenResponse) => void): Request; - /** - * Lists all of the OUs or accounts that are contained in the specified parent OU or root. This operation, along with ListParents enables you to traverse the tree structure that makes up this root. - */ - listChildren(callback?: (err: AWSError, data: Organizations.Types.ListChildrenResponse) => void): Request; - /** - * Lists the account creation requests that match the specified status that is currently being tracked for the organization. This operation can be called only from the organization's master account. - */ - listCreateAccountStatus(params: Organizations.Types.ListCreateAccountStatusRequest, callback?: (err: AWSError, data: Organizations.Types.ListCreateAccountStatusResponse) => void): Request; - /** - * Lists the account creation requests that match the specified status that is currently being tracked for the organization. This operation can be called only from the organization's master account. - */ - listCreateAccountStatus(callback?: (err: AWSError, data: Organizations.Types.ListCreateAccountStatusResponse) => void): Request; - /** - * Lists the current handshakes that are associated with the account of the requesting user. Handshakes that are ACCEPTED, DECLINED, or CANCELED appear in the results of this API for only 30 days after changing to that state. After that they are deleted and no longer accessible. This operation can be called from any account in the organization. - */ - listHandshakesForAccount(params: Organizations.Types.ListHandshakesForAccountRequest, callback?: (err: AWSError, data: Organizations.Types.ListHandshakesForAccountResponse) => void): Request; - /** - * Lists the current handshakes that are associated with the account of the requesting user. Handshakes that are ACCEPTED, DECLINED, or CANCELED appear in the results of this API for only 30 days after changing to that state. After that they are deleted and no longer accessible. This operation can be called from any account in the organization. - */ - listHandshakesForAccount(callback?: (err: AWSError, data: Organizations.Types.ListHandshakesForAccountResponse) => void): Request; - /** - * Lists the handshakes that are associated with the organization that the requesting user is part of. The ListHandshakesForOrganization operation returns a list of handshake structures. Each structure contains details and status about a handshake. Handshakes that are ACCEPTED, DECLINED, or CANCELED appear in the results of this API for only 30 days after changing to that state. After that they are deleted and no longer accessible. This operation can be called only from the organization's master account. - */ - listHandshakesForOrganization(params: Organizations.Types.ListHandshakesForOrganizationRequest, callback?: (err: AWSError, data: Organizations.Types.ListHandshakesForOrganizationResponse) => void): Request; - /** - * Lists the handshakes that are associated with the organization that the requesting user is part of. The ListHandshakesForOrganization operation returns a list of handshake structures. Each structure contains details and status about a handshake. Handshakes that are ACCEPTED, DECLINED, or CANCELED appear in the results of this API for only 30 days after changing to that state. After that they are deleted and no longer accessible. This operation can be called only from the organization's master account. - */ - listHandshakesForOrganization(callback?: (err: AWSError, data: Organizations.Types.ListHandshakesForOrganizationResponse) => void): Request; - /** - * Lists the organizational units (OUs) in a parent organizational unit or root. This operation can be called only from the organization's master account. - */ - listOrganizationalUnitsForParent(params: Organizations.Types.ListOrganizationalUnitsForParentRequest, callback?: (err: AWSError, data: Organizations.Types.ListOrganizationalUnitsForParentResponse) => void): Request; - /** - * Lists the organizational units (OUs) in a parent organizational unit or root. This operation can be called only from the organization's master account. - */ - listOrganizationalUnitsForParent(callback?: (err: AWSError, data: Organizations.Types.ListOrganizationalUnitsForParentResponse) => void): Request; - /** - * Lists the root or organizational units (OUs) that serve as the immediate parent of the specified child OU or account. This operation, along with ListChildren enables you to traverse the tree structure that makes up this root. This operation can be called only from the organization's master account. In the current release, a child can have only a single parent. - */ - listParents(params: Organizations.Types.ListParentsRequest, callback?: (err: AWSError, data: Organizations.Types.ListParentsResponse) => void): Request; - /** - * Lists the root or organizational units (OUs) that serve as the immediate parent of the specified child OU or account. This operation, along with ListChildren enables you to traverse the tree structure that makes up this root. This operation can be called only from the organization's master account. In the current release, a child can have only a single parent. - */ - listParents(callback?: (err: AWSError, data: Organizations.Types.ListParentsResponse) => void): Request; - /** - * Retrieves the list of all policies in an organization of a specified type. This operation can be called only from the organization's master account. - */ - listPolicies(params: Organizations.Types.ListPoliciesRequest, callback?: (err: AWSError, data: Organizations.Types.ListPoliciesResponse) => void): Request; - /** - * Retrieves the list of all policies in an organization of a specified type. This operation can be called only from the organization's master account. - */ - listPolicies(callback?: (err: AWSError, data: Organizations.Types.ListPoliciesResponse) => void): Request; - /** - * Lists the policies that are directly attached to the specified target root, organizational unit (OU), or account. You must specify the policy type that you want included in the returned list. This operation can be called only from the organization's master account. - */ - listPoliciesForTarget(params: Organizations.Types.ListPoliciesForTargetRequest, callback?: (err: AWSError, data: Organizations.Types.ListPoliciesForTargetResponse) => void): Request; - /** - * Lists the policies that are directly attached to the specified target root, organizational unit (OU), or account. You must specify the policy type that you want included in the returned list. This operation can be called only from the organization's master account. - */ - listPoliciesForTarget(callback?: (err: AWSError, data: Organizations.Types.ListPoliciesForTargetResponse) => void): Request; - /** - * Lists the roots that are defined in the current organization. This operation can be called only from the organization's master account. - */ - listRoots(params: Organizations.Types.ListRootsRequest, callback?: (err: AWSError, data: Organizations.Types.ListRootsResponse) => void): Request; - /** - * Lists the roots that are defined in the current organization. This operation can be called only from the organization's master account. - */ - listRoots(callback?: (err: AWSError, data: Organizations.Types.ListRootsResponse) => void): Request; - /** - * Lists all the roots, OUs, and accounts to which the specified policy is attached. This operation can be called only from the organization's master account. - */ - listTargetsForPolicy(params: Organizations.Types.ListTargetsForPolicyRequest, callback?: (err: AWSError, data: Organizations.Types.ListTargetsForPolicyResponse) => void): Request; - /** - * Lists all the roots, OUs, and accounts to which the specified policy is attached. This operation can be called only from the organization's master account. - */ - listTargetsForPolicy(callback?: (err: AWSError, data: Organizations.Types.ListTargetsForPolicyResponse) => void): Request; - /** - * Moves an account from its current source parent root or OU to the specified destination parent root or OU. This operation can be called only from the organization's master account. - */ - moveAccount(params: Organizations.Types.MoveAccountRequest, callback?: (err: AWSError, data: {}) => void): Request<{}, AWSError>; - /** - * Moves an account from its current source parent root or OU to the specified destination parent root or OU. This operation can be called only from the organization's master account. - */ - moveAccount(callback?: (err: AWSError, data: {}) => void): Request<{}, AWSError>; - /** - * Removes the specified account from the organization. The removed account becomes a stand-alone account that is not a member of any organization. It is no longer subject to any policies and is responsible for its own bill payments. The organization's master account is no longer charged for any expenses accrued by the member account after it is removed from the organization. This operation can be called only from the organization's master account. Member accounts can remove themselves with LeaveOrganization instead. You can remove an account from your organization only if the account is configured with the information required to operate as a standalone account. When you create an account in an organization using the AWS Organizations console, API, or CLI commands, the information required of standalone accounts is not automatically collected. For an account that you want to make standalone, you must accept the End User License Agreement (EULA), choose a support plan, provide and verify the required contact information, and provide a current payment method. AWS uses the payment method to charge for any billable (not free tier) AWS activity that occurs while the account is not attached to an organization. To remove an account that does not yet have this information, you must sign in as the member account and follow the steps at To leave an organization when all required account information has not yet been provided in the AWS Organizations User Guide. You can remove a member account only after you enable IAM user access to billing in the member account. For more information, see Activating Access to the Billing and Cost Management Console in the AWS Billing and Cost Management User Guide. - */ - removeAccountFromOrganization(params: Organizations.Types.RemoveAccountFromOrganizationRequest, callback?: (err: AWSError, data: {}) => void): Request<{}, AWSError>; - /** - * Removes the specified account from the organization. The removed account becomes a stand-alone account that is not a member of any organization. It is no longer subject to any policies and is responsible for its own bill payments. The organization's master account is no longer charged for any expenses accrued by the member account after it is removed from the organization. This operation can be called only from the organization's master account. Member accounts can remove themselves with LeaveOrganization instead. You can remove an account from your organization only if the account is configured with the information required to operate as a standalone account. When you create an account in an organization using the AWS Organizations console, API, or CLI commands, the information required of standalone accounts is not automatically collected. For an account that you want to make standalone, you must accept the End User License Agreement (EULA), choose a support plan, provide and verify the required contact information, and provide a current payment method. AWS uses the payment method to charge for any billable (not free tier) AWS activity that occurs while the account is not attached to an organization. To remove an account that does not yet have this information, you must sign in as the member account and follow the steps at To leave an organization when all required account information has not yet been provided in the AWS Organizations User Guide. You can remove a member account only after you enable IAM user access to billing in the member account. For more information, see Activating Access to the Billing and Cost Management Console in the AWS Billing and Cost Management User Guide. - */ - removeAccountFromOrganization(callback?: (err: AWSError, data: {}) => void): Request<{}, AWSError>; - /** - * Renames the specified organizational unit (OU). The ID and ARN do not change. The child OUs and accounts remain in place, and any attached policies of the OU remain attached. This operation can be called only from the organization's master account. - */ - updateOrganizationalUnit(params: Organizations.Types.UpdateOrganizationalUnitRequest, callback?: (err: AWSError, data: Organizations.Types.UpdateOrganizationalUnitResponse) => void): Request; - /** - * Renames the specified organizational unit (OU). The ID and ARN do not change. The child OUs and accounts remain in place, and any attached policies of the OU remain attached. This operation can be called only from the organization's master account. - */ - updateOrganizationalUnit(callback?: (err: AWSError, data: Organizations.Types.UpdateOrganizationalUnitResponse) => void): Request; - /** - * Updates an existing policy with a new name, description, or content. If any parameter is not supplied, that value remains unchanged. Note that you cannot change a policy's type. This operation can be called only from the organization's master account. - */ - updatePolicy(params: Organizations.Types.UpdatePolicyRequest, callback?: (err: AWSError, data: Organizations.Types.UpdatePolicyResponse) => void): Request; - /** - * Updates an existing policy with a new name, description, or content. If any parameter is not supplied, that value remains unchanged. Note that you cannot change a policy's type. This operation can be called only from the organization's master account. - */ - updatePolicy(callback?: (err: AWSError, data: Organizations.Types.UpdatePolicyResponse) => void): Request; -} -declare namespace Organizations { - export interface AcceptHandshakeRequest { - /** - * The unique identifier (ID) of the handshake that you want to accept. The regex pattern for handshake ID string requires "h-" followed by from 8 to 32 lower-case letters or digits. - */ - HandshakeId: HandshakeId; - } - export interface AcceptHandshakeResponse { - /** - * A structure that contains details about the accepted handshake. - */ - Handshake?: Handshake; - } - export interface Account { - /** - * The unique identifier (ID) of the account. The regex pattern for an account ID string requires exactly 12 digits. - */ - Id?: AccountId; - /** - * The Amazon Resource Name (ARN) of the account. For more information about ARNs in Organizations, see ARN Formats Supported by Organizations in the AWS Organizations User Guide. - */ - Arn?: AccountArn; - /** - * The email address associated with the AWS account. The regex pattern for this parameter is a string of characters that represents a standard Internet email address. - */ - Email?: Email; - /** - * The friendly name of the account. The regex pattern that is used to validate this parameter is a string of any of the characters in the ASCII character range. - */ - Name?: AccountName; - /** - * The status of the account in the organization. - */ - Status?: AccountStatus; - /** - * The method by which the account joined the organization. - */ - JoinedMethod?: AccountJoinedMethod; - /** - * The date the account became a part of the organization. - */ - JoinedTimestamp?: Timestamp; - } - export type AccountArn = string; - export type AccountId = string; - export type AccountJoinedMethod = "INVITED"|"CREATED"|string; - export type AccountName = string; - export type AccountStatus = "ACTIVE"|"SUSPENDED"|string; - export type Accounts = Account[]; - export type ActionType = "INVITE"|"ENABLE_ALL_FEATURES"|"APPROVE_ALL_FEATURES"|string; - export interface AttachPolicyRequest { - /** - * The unique identifier (ID) of the policy that you want to attach to the target. You can get the ID for the policy by calling the ListPolicies operation. The regex pattern for a policy ID string requires "p-" followed by from 8 to 128 lower-case letters or digits. - */ - PolicyId: PolicyId; - /** - * The unique identifier (ID) of the root, OU, or account that you want to attach the policy to. You can get the ID by calling the ListRoots, ListOrganizationalUnitsForParent, or ListAccounts operations. The regex pattern for a target ID string requires one of the following: Root: a string that begins with "r-" followed by from 4 to 32 lower-case letters or digits. Account: a string that consists of exactly 12 digits. Organizational unit (OU): a string that begins with "ou-" followed by from 4 to 32 lower-case letters or digits (the ID of the root that the OU is in) followed by a second "-" dash and from 8 to 32 additional lower-case letters or digits. - */ - TargetId: PolicyTargetId; - } - export type AwsManagedPolicy = boolean; - export interface CancelHandshakeRequest { - /** - * The unique identifier (ID) of the handshake that you want to cancel. You can get the ID from the ListHandshakesForOrganization operation. The regex pattern for handshake ID string requires "h-" followed by from 8 to 32 lower-case letters or digits. - */ - HandshakeId: HandshakeId; - } - export interface CancelHandshakeResponse { - /** - * A structure that contains details about the handshake that you canceled. - */ - Handshake?: Handshake; - } - export interface Child { - /** - * The unique identifier (ID) of this child entity. The regex pattern for a child ID string requires one of the following: Account: a string that consists of exactly 12 digits. Organizational unit (OU): a string that begins with "ou-" followed by from 4 to 32 lower-case letters or digits (the ID of the root that contains the OU) followed by a second "-" dash and from 8 to 32 additional lower-case letters or digits. - */ - Id?: ChildId; - /** - * The type of this child entity. - */ - Type?: ChildType; - } - export type ChildId = string; - export type ChildType = "ACCOUNT"|"ORGANIZATIONAL_UNIT"|string; - export type Children = Child[]; - export type ConstraintViolationExceptionReason = "ACCOUNT_NUMBER_LIMIT_EXCEEDED"|"HANDSHAKE_RATE_LIMIT_EXCEEDED"|"OU_NUMBER_LIMIT_EXCEEDED"|"OU_DEPTH_LIMIT_EXCEEDED"|"POLICY_NUMBER_LIMIT_EXCEEDED"|"MAX_POLICY_TYPE_ATTACHMENT_LIMIT_EXCEEDED"|"MIN_POLICY_TYPE_ATTACHMENT_LIMIT_EXCEEDED"|"ACCOUNT_CANNOT_LEAVE_ORGANIZATION"|"ACCOUNT_CANNOT_LEAVE_WITHOUT_EULA"|"ACCOUNT_CANNOT_LEAVE_WITHOUT_PHONE_VERIFICATION"|"MASTER_ACCOUNT_PAYMENT_INSTRUMENT_REQUIRED"|"MEMBER_ACCOUNT_PAYMENT_INSTRUMENT_REQUIRED"|"ACCOUNT_CREATION_RATE_LIMIT_EXCEEDED"|"MASTER_ACCOUNT_ADDRESS_DOES_NOT_MATCH_MARKETPLACE"|"MASTER_ACCOUNT_MISSING_CONTACT_INFO"|string; - export type CreateAccountFailureReason = "ACCOUNT_LIMIT_EXCEEDED"|"EMAIL_ALREADY_EXISTS"|"INVALID_ADDRESS"|"INVALID_EMAIL"|"INTERNAL_FAILURE"|string; - export interface CreateAccountRequest { - /** - * The email address of the owner to assign to the new member account. This email address must not already be associated with another AWS account. You must use a valid email address to complete account creation. You cannot access the root user of the account or remove an account that was created with an invalid email address. - */ - Email: Email; - /** - * The friendly name of the member account. - */ - AccountName: AccountName; - /** - * (Optional) The name of an IAM role that Organizations automatically preconfigures in the new member account. This role trusts the master account, allowing users in the master account to assume the role, as permitted by the master account administrator. The role has administrator permissions in the new member account. If you do not specify this parameter, the role name defaults to OrganizationAccountAccessRole. For more information about how to use this role to access the member account, see Accessing and Administering the Member Accounts in Your Organization in the AWS Organizations User Guide, and steps 2 and 3 in Tutorial: Delegate Access Across AWS Accounts Using IAM Roles in the IAM User Guide. The regex pattern that is used to validate this parameter is a string of characters that can consist of uppercase letters, lowercase letters, digits with no spaces, and any of the following characters: =,.@- - */ - RoleName?: RoleName; - /** - * If set to ALLOW, the new account enables IAM users to access account billing information if they have the required permissions. If set to DENY, then only the root user of the new account can access account billing information. For more information, see Activating Access to the Billing and Cost Management Console in the AWS Billing and Cost Management User Guide. If you do not specify this parameter, the value defaults to ALLOW, and IAM users and roles with the required permissions can access billing information for the new account. - */ - IamUserAccessToBilling?: IAMUserAccessToBilling; - } - export type CreateAccountRequestId = string; - export interface CreateAccountResponse { - /** - * A structure that contains details about the request to create an account. This response structure might not be fully populated when you first receive it because account creation is an asynchronous process. You can pass the returned CreateAccountStatus ID as a parameter to DescribeCreateAccountStatus to get status about the progress of the request at later times. - */ - CreateAccountStatus?: CreateAccountStatus; - } - export type CreateAccountState = "IN_PROGRESS"|"SUCCEEDED"|"FAILED"|string; - export type CreateAccountStates = CreateAccountState[]; - export interface CreateAccountStatus { - /** - * The unique identifier (ID) that references this request. You get this value from the response of the initial CreateAccount request to create the account. The regex pattern for an create account request ID string requires "car-" followed by from 8 to 32 lower-case letters or digits. - */ - Id?: CreateAccountRequestId; - /** - * The account name given to the account when it was created. - */ - AccountName?: AccountName; - /** - * The status of the request. - */ - State?: CreateAccountState; - /** - * The date and time that the request was made for the account creation. - */ - RequestedTimestamp?: Timestamp; - /** - * The date and time that the account was created and the request completed. - */ - CompletedTimestamp?: Timestamp; - /** - * If the account was created successfully, the unique identifier (ID) of the new account. The regex pattern for an account ID string requires exactly 12 digits. - */ - AccountId?: AccountId; - /** - * If the request failed, a description of the reason for the failure. ACCOUNT_LIMIT_EXCEEDED: The account could not be created because you have reached the limit on the number of accounts in your organization. EMAIL_ALREADY_EXISTS: The account could not be created because another AWS account with that email address already exists. INVALID_ADDRESS: The account could not be created because the address you provided is not valid. INVALID_EMAIL: The account could not be created because the email address you provided is not valid. INTERNAL_FAILURE: The account could not be created because of an internal failure. Try again later. If the problem persists, contact Customer Support. - */ - FailureReason?: CreateAccountFailureReason; - } - export type CreateAccountStatuses = CreateAccountStatus[]; - export interface CreateOrganizationRequest { - /** - * Specifies the feature set supported by the new organization. Each feature set supports different levels of functionality. CONSOLIDATED_BILLING: All member accounts have their bills consolidated to and paid by the master account. For more information, see Consolidated Billing in the AWS Organizations User Guide. ALL: In addition to all the features supported by the consolidated billing feature set, the master account can also apply any type of policy to any member account in the organization. For more information, see All features in the AWS Organizations User Guide. - */ - FeatureSet?: OrganizationFeatureSet; - } - export interface CreateOrganizationResponse { - /** - * A structure that contains details about the newly created organization. - */ - Organization?: Organization; - } - export interface CreateOrganizationalUnitRequest { - /** - * The unique identifier (ID) of the parent root or OU in which you want to create the new OU. The regex pattern for a parent ID string requires one of the following: Root: a string that begins with "r-" followed by from 4 to 32 lower-case letters or digits. Organizational unit (OU): a string that begins with "ou-" followed by from 4 to 32 lower-case letters or digits (the ID of the root that the OU is in) followed by a second "-" dash and from 8 to 32 additional lower-case letters or digits. - */ - ParentId: ParentId; - /** - * The friendly name to assign to the new OU. - */ - Name: OrganizationalUnitName; - } - export interface CreateOrganizationalUnitResponse { - /** - * A structure that contains details about the newly created OU. - */ - OrganizationalUnit?: OrganizationalUnit; - } - export interface CreatePolicyRequest { - /** - * The policy content to add to the new policy. For example, if you create a service control policy (SCP), this string must be JSON text that specifies the permissions that admins in attached accounts can delegate to their users, groups, and roles. For more information about the SCP syntax, see Service Control Policy Syntax in the AWS Organizations User Guide. - */ - Content: PolicyContent; - /** - * An optional description to assign to the policy. - */ - Description: PolicyDescription; - /** - * The friendly name to assign to the policy. The regex pattern that is used to validate this parameter is a string of any of the characters in the ASCII character range. - */ - Name: PolicyName; - /** - * The type of policy to create. In the current release, the only type of policy that you can create is a service control policy (SCP). - */ - Type: PolicyType; - } - export interface CreatePolicyResponse { - /** - * A structure that contains details about the newly created policy. - */ - Policy?: Policy; - } - export interface DeclineHandshakeRequest { - /** - * The unique identifier (ID) of the handshake that you want to decline. You can get the ID from the ListHandshakesForAccount operation. The regex pattern for handshake ID string requires "h-" followed by from 8 to 32 lower-case letters or digits. - */ - HandshakeId: HandshakeId; - } - export interface DeclineHandshakeResponse { - /** - * A structure that contains details about the declined handshake. The state is updated to show the value DECLINED. - */ - Handshake?: Handshake; - } - export interface DeleteOrganizationalUnitRequest { - /** - * The unique identifier (ID) of the organizational unit that you want to delete. You can get the ID from the ListOrganizationalUnitsForParent operation. The regex pattern for an organizational unit ID string requires "ou-" followed by from 4 to 32 lower-case letters or digits (the ID of the root that contains the OU) followed by a second "-" dash and from 8 to 32 additional lower-case letters or digits. - */ - OrganizationalUnitId: OrganizationalUnitId; - } - export interface DeletePolicyRequest { - /** - * The unique identifier (ID) of the policy that you want to delete. You can get the ID from the ListPolicies or ListPoliciesForTarget operations. The regex pattern for a policy ID string requires "p-" followed by from 8 to 128 lower-case letters or digits. - */ - PolicyId: PolicyId; - } - export interface DescribeAccountRequest { - /** - * The unique identifier (ID) of the AWS account that you want information about. You can get the ID from the ListAccounts or ListAccountsForParent operations. The regex pattern for an account ID string requires exactly 12 digits. - */ - AccountId: AccountId; - } - export interface DescribeAccountResponse { - /** - * A structure that contains information about the requested account. - */ - Account?: Account; - } - export interface DescribeCreateAccountStatusRequest { - /** - * Specifies the operationId that uniquely identifies the request. You can get the ID from the response to an earlier CreateAccount request, or from the ListCreateAccountStatus operation. The regex pattern for an create account request ID string requires "car-" followed by from 8 to 32 lower-case letters or digits. - */ - CreateAccountRequestId: CreateAccountRequestId; - } - export interface DescribeCreateAccountStatusResponse { - /** - * A structure that contains the current status of an account creation request. - */ - CreateAccountStatus?: CreateAccountStatus; - } - export interface DescribeHandshakeRequest { - /** - * The unique identifier (ID) of the handshake that you want information about. You can get the ID from the original call to InviteAccountToOrganization, or from a call to ListHandshakesForAccount or ListHandshakesForOrganization. The regex pattern for handshake ID string requires "h-" followed by from 8 to 32 lower-case letters or digits. - */ - HandshakeId: HandshakeId; - } - export interface DescribeHandshakeResponse { - /** - * A structure that contains information about the specified handshake. - */ - Handshake?: Handshake; - } - export interface DescribeOrganizationResponse { - /** - * A structure that contains information about the organization. - */ - Organization?: Organization; - } - export interface DescribeOrganizationalUnitRequest { - /** - * The unique identifier (ID) of the organizational unit that you want details about. You can get the ID from the ListOrganizationalUnitsForParent operation. The regex pattern for an organizational unit ID string requires "ou-" followed by from 4 to 32 lower-case letters or digits (the ID of the root that contains the OU) followed by a second "-" dash and from 8 to 32 additional lower-case letters or digits. - */ - OrganizationalUnitId: OrganizationalUnitId; - } - export interface DescribeOrganizationalUnitResponse { - /** - * A structure that contains details about the specified OU. - */ - OrganizationalUnit?: OrganizationalUnit; - } - export interface DescribePolicyRequest { - /** - * The unique identifier (ID) of the policy that you want details about. You can get the ID from the ListPolicies or ListPoliciesForTarget operations. The regex pattern for a policy ID string requires "p-" followed by from 8 to 128 lower-case letters or digits. - */ - PolicyId: PolicyId; - } - export interface DescribePolicyResponse { - /** - * A structure that contains details about the specified policy. - */ - Policy?: Policy; - } - export interface DetachPolicyRequest { - /** - * The unique identifier (ID) of the policy you want to detach. You can get the ID from the ListPolicies or ListPoliciesForTarget operations. The regex pattern for a policy ID string requires "p-" followed by from 8 to 128 lower-case letters or digits. - */ - PolicyId: PolicyId; - /** - * The unique identifier (ID) of the root, OU, or account from which you want to detach the policy. You can get the ID from the ListRoots, ListOrganizationalUnitsForParent, or ListAccounts operations. The regex pattern for a target ID string requires one of the following: Root: a string that begins with "r-" followed by from 4 to 32 lower-case letters or digits. Account: a string that consists of exactly 12 digits. Organizational unit (OU): a string that begins with "ou-" followed by from 4 to 32 lower-case letters or digits (the ID of the root that the OU is in) followed by a second "-" dash and from 8 to 32 additional lower-case letters or digits. - */ - TargetId: PolicyTargetId; - } - export interface DisablePolicyTypeRequest { - /** - * The unique identifier (ID) of the root in which you want to disable a policy type. You can get the ID from the ListRoots operation. The regex pattern for a root ID string requires "r-" followed by from 4 to 32 lower-case letters or digits. - */ - RootId: RootId; - /** - * The policy type that you want to disable in this root. - */ - PolicyType: PolicyType; - } - export interface DisablePolicyTypeResponse { - /** - * A structure that shows the root with the updated list of enabled policy types. - */ - Root?: Root; - } - export type Email = string; - export interface EnableAllFeaturesRequest { - } - export interface EnableAllFeaturesResponse { - /** - * A structure that contains details about the handshake created to support this request to enable all features in the organization. - */ - Handshake?: Handshake; - } - export interface EnablePolicyTypeRequest { - /** - * The unique identifier (ID) of the root in which you want to enable a policy type. You can get the ID from the ListRoots operation. The regex pattern for a root ID string requires "r-" followed by from 4 to 32 lower-case letters or digits. - */ - RootId: RootId; - /** - * The policy type that you want to enable. - */ - PolicyType: PolicyType; - } - export interface EnablePolicyTypeResponse { - /** - * A structure that shows the root with the updated list of enabled policy types. - */ - Root?: Root; - } - export type ExceptionMessage = string; - export type ExceptionType = string; - export type GenericArn = string; - export interface Handshake { - /** - * The unique identifier (ID) of a handshake. The originating account creates the ID when it initiates the handshake. The regex pattern for handshake ID string requires "h-" followed by from 8 to 32 lower-case letters or digits. - */ - Id?: HandshakeId; - /** - * The Amazon Resource Name (ARN) of a handshake. For more information about ARNs in Organizations, see ARN Formats Supported by Organizations in the AWS Organizations User Guide. - */ - Arn?: HandshakeArn; - /** - * Information about the two accounts that are participating in the handshake. - */ - Parties?: HandshakeParties; - /** - * The current state of the handshake. Use the state to trace the flow of the handshake through the process from its creation to its acceptance. The meaning of each of the valid values is as follows: REQUESTED: This handshake was sent to multiple recipients (applicable to only some handshake types) and not all recipients have responded yet. The request stays in this state until all recipients respond. OPEN: This handshake was sent to multiple recipients (applicable to only some policy types) and all recipients have responded, allowing the originator to complete the handshake action. CANCELED: This handshake is no longer active because it was canceled by the originating account. ACCEPTED: This handshake is complete because it has been accepted by the recipient. DECLINED: This handshake is no longer active because it was declined by the recipient account. EXPIRED: This handshake is no longer active because the originator did not receive a response of any kind from the recipient before the expiration time (15 days). - */ - State?: HandshakeState; - /** - * The date and time that the handshake request was made. - */ - RequestedTimestamp?: Timestamp; - /** - * The date and time that the handshake expires. If the recipient of the handshake request fails to respond before the specified date and time, the handshake becomes inactive and is no longer valid. - */ - ExpirationTimestamp?: Timestamp; - /** - * The type of handshake, indicating what action occurs when the recipient accepts the handshake. - */ - Action?: ActionType; - /** - * Additional information that is needed to process the handshake. - */ - Resources?: HandshakeResources; - } - export type HandshakeArn = string; - export type HandshakeConstraintViolationExceptionReason = "ACCOUNT_NUMBER_LIMIT_EXCEEDED"|"HANDSHAKE_RATE_LIMIT_EXCEEDED"|"ALREADY_IN_AN_ORGANIZATION"|"ORGANIZATION_ALREADY_HAS_ALL_FEATURES"|"INVITE_DISABLED_DURING_ENABLE_ALL_FEATURES"|"PAYMENT_INSTRUMENT_REQUIRED"|"ORGANIZATION_FROM_DIFFERENT_SELLER_OF_RECORD"|"ORGANIZATION_MEMBERSHIP_CHANGE_RATE_LIMIT_EXCEEDED"|string; - export interface HandshakeFilter { - /** - * Specifies the type of handshake action. If you specify ActionType, you cannot also specify ParentHandshakeId. - */ - ActionType?: ActionType; - /** - * Specifies the parent handshake. Only used for handshake types that are a child of another type. If you specify ParentHandshakeId, you cannot also specify ActionType. The regex pattern for handshake ID string requires "h-" followed by from 8 to 32 lower-case letters or digits. - */ - ParentHandshakeId?: HandshakeId; - } - export type HandshakeId = string; - export type HandshakeNotes = string; - export type HandshakeParties = HandshakeParty[]; - export interface HandshakeParty { - /** - * The unique identifier (ID) for the party. The regex pattern for handshake ID string requires "h-" followed by from 8 to 32 lower-case letters or digits. - */ - Id: HandshakePartyId; - /** - * The type of party. - */ - Type: HandshakePartyType; - } - export type HandshakePartyId = string; - export type HandshakePartyType = "ACCOUNT"|"ORGANIZATION"|"EMAIL"|string; - export interface HandshakeResource { - /** - * The information that is passed to the other party in the handshake. The format of the value string must match the requirements of the specified type. - */ - Value?: HandshakeResourceValue; - /** - * The type of information being passed, specifying how the value is to be interpreted by the other party: ACCOUNT - Specifies an AWS account ID number. ORGANIZATION - Specifies an organization ID number. EMAIL - Specifies the email address that is associated with the account that receives the handshake. OWNER_EMAIL - Specifies the email address associated with the master account. Included as information about an organization. OWNER_NAME - Specifies the name associated with the master account. Included as information about an organization. NOTES - Additional text provided by the handshake initiator and intended for the recipient to read. - */ - Type?: HandshakeResourceType; - /** - * When needed, contains an additional array of HandshakeResource objects. - */ - Resources?: HandshakeResources; - } - export type HandshakeResourceType = "ACCOUNT"|"ORGANIZATION"|"ORGANIZATION_FEATURE_SET"|"EMAIL"|"MASTER_EMAIL"|"MASTER_NAME"|"NOTES"|"PARENT_HANDSHAKE"|string; - export type HandshakeResourceValue = string; - export type HandshakeResources = HandshakeResource[]; - export type HandshakeState = "REQUESTED"|"OPEN"|"CANCELED"|"ACCEPTED"|"DECLINED"|"EXPIRED"|string; - export type Handshakes = Handshake[]; - export type IAMUserAccessToBilling = "ALLOW"|"DENY"|string; - export type InvalidInputExceptionReason = "INVALID_PARTY_TYPE_TARGET"|"INVALID_SYNTAX_ORGANIZATION_ARN"|"INVALID_SYNTAX_POLICY_ID"|"INVALID_ENUM"|"INVALID_LIST_MEMBER"|"MAX_LENGTH_EXCEEDED"|"MAX_VALUE_EXCEEDED"|"MIN_LENGTH_EXCEEDED"|"MIN_VALUE_EXCEEDED"|"IMMUTABLE_POLICY"|"INVALID_PATTERN"|"INVALID_PATTERN_TARGET_ID"|"INPUT_REQUIRED"|"INVALID_NEXT_TOKEN"|"MAX_LIMIT_EXCEEDED_FILTER"|"MOVING_ACCOUNT_BETWEEN_DIFFERENT_ROOTS"|"INVALID_FULL_NAME_TARGET"|string; - export interface InviteAccountToOrganizationRequest { - /** - * The identifier (ID) of the AWS account that you want to invite to join your organization. This is a JSON object that contains the following elements: { "Type": "ACCOUNT", "Id": "< account id number >" } If you use the AWS CLI, you can submit this as a single string, similar to the following example: --target Id=123456789012,Type=ACCOUNT If you specify "Type": "ACCOUNT", then you must provide the AWS account ID number as the Id. If you specify "Type": "EMAIL", then you must specify the email address that is associated with the account. --target Id=bill@example.com,Type=EMAIL - */ - Target: HandshakeParty; - /** - * Additional information that you want to include in the generated email to the recipient account owner. - */ - Notes?: HandshakeNotes; - } - export interface InviteAccountToOrganizationResponse { - /** - * A structure that contains details about the handshake that is created to support this invitation request. - */ - Handshake?: Handshake; - } - export interface ListAccountsForParentRequest { - /** - * The unique identifier (ID) for the parent root or organization unit (OU) whose accounts you want to list. - */ - ParentId: ParentId; - /** - * Use this parameter if you receive a NextToken response in a previous request that indicates that there is more output available. Set it to the value of the previous call's NextToken response to indicate where the output should continue from. - */ - NextToken?: NextToken; - /** - * (Optional) Use this to limit the number of results you want included in the response. If you do not include this parameter, it defaults to a value that is specific to the operation. If additional items exist beyond the maximum you specify, the NextToken response element is present and has a value (is not null). Include that value as the NextToken request parameter in the next call to the operation to get the next part of the results. Note that Organizations might return fewer results than the maximum even when there are more results available. You should check NextToken after every operation to ensure that you receive all of the results. - */ - MaxResults?: MaxResults; - } - export interface ListAccountsForParentResponse { - /** - * A list of the accounts in the specified root or OU. - */ - Accounts?: Accounts; - /** - * If present, this value indicates that there is more output available than is included in the current response. Use this value in the NextToken request parameter in a subsequent call to the operation to get the next part of the output. You should repeat this until the NextToken response element comes back as null. - */ - NextToken?: NextToken; - } - export interface ListAccountsRequest { - /** - * Use this parameter if you receive a NextToken response in a previous request that indicates that there is more output available. Set it to the value of the previous call's NextToken response to indicate where the output should continue from. - */ - NextToken?: NextToken; - /** - * (Optional) Use this to limit the number of results you want included in the response. If you do not include this parameter, it defaults to a value that is specific to the operation. If additional items exist beyond the maximum you specify, the NextToken response element is present and has a value (is not null). Include that value as the NextToken request parameter in the next call to the operation to get the next part of the results. Note that Organizations might return fewer results than the maximum even when there are more results available. You should check NextToken after every operation to ensure that you receive all of the results. - */ - MaxResults?: MaxResults; - } - export interface ListAccountsResponse { - /** - * A list of objects in the organization. - */ - Accounts?: Accounts; - /** - * If present, this value indicates that there is more output available than is included in the current response. Use this value in the NextToken request parameter in a subsequent call to the operation to get the next part of the output. You should repeat this until the NextToken response element comes back as null. - */ - NextToken?: NextToken; - } - export interface ListChildrenRequest { - /** - * The unique identifier (ID) for the parent root or OU whose children you want to list. The regex pattern for a parent ID string requires one of the following: Root: a string that begins with "r-" followed by from 4 to 32 lower-case letters or digits. Organizational unit (OU): a string that begins with "ou-" followed by from 4 to 32 lower-case letters or digits (the ID of the root that the OU is in) followed by a second "-" dash and from 8 to 32 additional lower-case letters or digits. - */ - ParentId: ParentId; - /** - * Filters the output to include only the specified child type. - */ - ChildType: ChildType; - /** - * Use this parameter if you receive a NextToken response in a previous request that indicates that there is more output available. Set it to the value of the previous call's NextToken response to indicate where the output should continue from. - */ - NextToken?: NextToken; - /** - * (Optional) Use this to limit the number of results you want included in the response. If you do not include this parameter, it defaults to a value that is specific to the operation. If additional items exist beyond the maximum you specify, the NextToken response element is present and has a value (is not null). Include that value as the NextToken request parameter in the next call to the operation to get the next part of the results. Note that Organizations might return fewer results than the maximum even when there are more results available. You should check NextToken after every operation to ensure that you receive all of the results. - */ - MaxResults?: MaxResults; - } - export interface ListChildrenResponse { - /** - * The list of children of the specified parent container. - */ - Children?: Children; - /** - * If present, this value indicates that there is more output available than is included in the current response. Use this value in the NextToken request parameter in a subsequent call to the operation to get the next part of the output. You should repeat this until the NextToken response element comes back as null. - */ - NextToken?: NextToken; - } - export interface ListCreateAccountStatusRequest { - /** - * A list of one or more states that you want included in the response. If this parameter is not present, then all requests are included in the response. - */ - States?: CreateAccountStates; - /** - * Use this parameter if you receive a NextToken response in a previous request that indicates that there is more output available. Set it to the value of the previous call's NextToken response to indicate where the output should continue from. - */ - NextToken?: NextToken; - /** - * (Optional) Use this to limit the number of results you want included in the response. If you do not include this parameter, it defaults to a value that is specific to the operation. If additional items exist beyond the maximum you specify, the NextToken response element is present and has a value (is not null). Include that value as the NextToken request parameter in the next call to the operation to get the next part of the results. Note that Organizations might return fewer results than the maximum even when there are more results available. You should check NextToken after every operation to ensure that you receive all of the results. - */ - MaxResults?: MaxResults; - } - export interface ListCreateAccountStatusResponse { - /** - * A list of objects with details about the requests. Certain elements, such as the accountId number, are present in the output only after the account has been successfully created. - */ - CreateAccountStatuses?: CreateAccountStatuses; - /** - * If present, this value indicates that there is more output available than is included in the current response. Use this value in the NextToken request parameter in a subsequent call to the operation to get the next part of the output. You should repeat this until the NextToken response element comes back as null. - */ - NextToken?: NextToken; - } - export interface ListHandshakesForAccountRequest { - /** - * Filters the handshakes that you want included in the response. The default is all types. Use the ActionType element to limit the output to only a specified type, such as INVITE, ENABLE-FULL-CONTROL, or APPROVE-FULL-CONTROL. Alternatively, for the ENABLE-FULL-CONTROL handshake that generates a separate child handshake for each member account, you can specify ParentHandshakeId to see only the handshakes that were generated by that parent request. - */ - Filter?: HandshakeFilter; - /** - * Use this parameter if you receive a NextToken response in a previous request that indicates that there is more output available. Set it to the value of the previous call's NextToken response to indicate where the output should continue from. - */ - NextToken?: NextToken; - /** - * (Optional) Use this to limit the number of results you want included in the response. If you do not include this parameter, it defaults to a value that is specific to the operation. If additional items exist beyond the maximum you specify, the NextToken response element is present and has a value (is not null). Include that value as the NextToken request parameter in the next call to the operation to get the next part of the results. Note that Organizations might return fewer results than the maximum even when there are more results available. You should check NextToken after every operation to ensure that you receive all of the results. - */ - MaxResults?: MaxResults; - } - export interface ListHandshakesForAccountResponse { - /** - * A list of Handshake objects with details about each of the handshakes that is associated with the specified account. - */ - Handshakes?: Handshakes; - /** - * If present, this value indicates that there is more output available than is included in the current response. Use this value in the NextToken request parameter in a subsequent call to the operation to get the next part of the output. You should repeat this until the NextToken response element comes back as null. - */ - NextToken?: NextToken; - } - export interface ListHandshakesForOrganizationRequest { - /** - * A filter of the handshakes that you want included in the response. The default is all types. Use the ActionType element to limit the output to only a specified type, such as INVITE, ENABLE-ALL-FEATURES, or APPROVE-ALL-FEATURES. Alternatively, for the ENABLE-ALL-FEATURES handshake that generates a separate child handshake for each member account, you can specify the ParentHandshakeId to see only the handshakes that were generated by that parent request. - */ - Filter?: HandshakeFilter; - /** - * Use this parameter if you receive a NextToken response in a previous request that indicates that there is more output available. Set it to the value of the previous call's NextToken response to indicate where the output should continue from. - */ - NextToken?: NextToken; - /** - * (Optional) Use this to limit the number of results you want included in the response. If you do not include this parameter, it defaults to a value that is specific to the operation. If additional items exist beyond the maximum you specify, the NextToken response element is present and has a value (is not null). Include that value as the NextToken request parameter in the next call to the operation to get the next part of the results. Note that Organizations might return fewer results than the maximum even when there are more results available. You should check NextToken after every operation to ensure that you receive all of the results. - */ - MaxResults?: MaxResults; - } - export interface ListHandshakesForOrganizationResponse { - /** - * A list of Handshake objects with details about each of the handshakes that are associated with an organization. - */ - Handshakes?: Handshakes; - /** - * If present, this value indicates that there is more output available than is included in the current response. Use this value in the NextToken request parameter in a subsequent call to the operation to get the next part of the output. You should repeat this until the NextToken response element comes back as null. - */ - NextToken?: NextToken; - } - export interface ListOrganizationalUnitsForParentRequest { - /** - * The unique identifier (ID) of the root or OU whose child OUs you want to list. The regex pattern for a parent ID string requires one of the following: Root: a string that begins with "r-" followed by from 4 to 32 lower-case letters or digits. Organizational unit (OU): a string that begins with "ou-" followed by from 4 to 32 lower-case letters or digits (the ID of the root that the OU is in) followed by a second "-" dash and from 8 to 32 additional lower-case letters or digits. - */ - ParentId: ParentId; - /** - * Use this parameter if you receive a NextToken response in a previous request that indicates that there is more output available. Set it to the value of the previous call's NextToken response to indicate where the output should continue from. - */ - NextToken?: NextToken; - /** - * (Optional) Use this to limit the number of results you want included in the response. If you do not include this parameter, it defaults to a value that is specific to the operation. If additional items exist beyond the maximum you specify, the NextToken response element is present and has a value (is not null). Include that value as the NextToken request parameter in the next call to the operation to get the next part of the results. Note that Organizations might return fewer results than the maximum even when there are more results available. You should check NextToken after every operation to ensure that you receive all of the results. - */ - MaxResults?: MaxResults; - } - export interface ListOrganizationalUnitsForParentResponse { - /** - * A list of the OUs in the specified root or parent OU. - */ - OrganizationalUnits?: OrganizationalUnits; - /** - * If present, this value indicates that there is more output available than is included in the current response. Use this value in the NextToken request parameter in a subsequent call to the operation to get the next part of the output. You should repeat this until the NextToken response element comes back as null. - */ - NextToken?: NextToken; - } - export interface ListParentsRequest { - /** - * The unique identifier (ID) of the OU or account whose parent containers you want to list. Do not specify a root. The regex pattern for a child ID string requires one of the following: Account: a string that consists of exactly 12 digits. Organizational unit (OU): a string that begins with "ou-" followed by from 4 to 32 lower-case letters or digits (the ID of the root that contains the OU) followed by a second "-" dash and from 8 to 32 additional lower-case letters or digits. - */ - ChildId: ChildId; - /** - * Use this parameter if you receive a NextToken response in a previous request that indicates that there is more output available. Set it to the value of the previous call's NextToken response to indicate where the output should continue from. - */ - NextToken?: NextToken; - /** - * (Optional) Use this to limit the number of results you want included in the response. If you do not include this parameter, it defaults to a value that is specific to the operation. If additional items exist beyond the maximum you specify, the NextToken response element is present and has a value (is not null). Include that value as the NextToken request parameter in the next call to the operation to get the next part of the results. Note that Organizations might return fewer results than the maximum even when there are more results available. You should check NextToken after every operation to ensure that you receive all of the results. - */ - MaxResults?: MaxResults; - } - export interface ListParentsResponse { - /** - * A list of parents for the specified child account or OU. - */ - Parents?: Parents; - /** - * If present, this value indicates that there is more output available than is included in the current response. Use this value in the NextToken request parameter in a subsequent call to the operation to get the next part of the output. You should repeat this until the NextToken response element comes back as null. - */ - NextToken?: NextToken; - } - export interface ListPoliciesForTargetRequest { - /** - * The unique identifier (ID) of the root, organizational unit, or account whose policies you want to list. The regex pattern for a target ID string requires one of the following: Root: a string that begins with "r-" followed by from 4 to 32 lower-case letters or digits. Account: a string that consists of exactly 12 digits. Organizational unit (OU): a string that begins with "ou-" followed by from 4 to 32 lower-case letters or digits (the ID of the root that the OU is in) followed by a second "-" dash and from 8 to 32 additional lower-case letters or digits. - */ - TargetId: PolicyTargetId; - /** - * The type of policy that you want to include in the returned list. - */ - Filter: PolicyType; - /** - * Use this parameter if you receive a NextToken response in a previous request that indicates that there is more output available. Set it to the value of the previous call's NextToken response to indicate where the output should continue from. - */ - NextToken?: NextToken; - /** - * (Optional) Use this to limit the number of results you want included in the response. If you do not include this parameter, it defaults to a value that is specific to the operation. If additional items exist beyond the maximum you specify, the NextToken response element is present and has a value (is not null). Include that value as the NextToken request parameter in the next call to the operation to get the next part of the results. Note that Organizations might return fewer results than the maximum even when there are more results available. You should check NextToken after every operation to ensure that you receive all of the results. - */ - MaxResults?: MaxResults; - } - export interface ListPoliciesForTargetResponse { - /** - * The list of policies that match the criteria in the request. - */ - Policies?: Policies; - /** - * If present, this value indicates that there is more output available than is included in the current response. Use this value in the NextToken request parameter in a subsequent call to the operation to get the next part of the output. You should repeat this until the NextToken response element comes back as null. - */ - NextToken?: NextToken; - } - export interface ListPoliciesRequest { - /** - * Specifies the type of policy that you want to include in the response. - */ - Filter: PolicyType; - /** - * Use this parameter if you receive a NextToken response in a previous request that indicates that there is more output available. Set it to the value of the previous call's NextToken response to indicate where the output should continue from. - */ - NextToken?: NextToken; - /** - * (Optional) Use this to limit the number of results you want included in the response. If you do not include this parameter, it defaults to a value that is specific to the operation. If additional items exist beyond the maximum you specify, the NextToken response element is present and has a value (is not null). Include that value as the NextToken request parameter in the next call to the operation to get the next part of the results. Note that Organizations might return fewer results than the maximum even when there are more results available. You should check NextToken after every operation to ensure that you receive all of the results. - */ - MaxResults?: MaxResults; - } - export interface ListPoliciesResponse { - /** - * A list of policies that match the filter criteria in the request. The output list does not include the policy contents. To see the content for a policy, see DescribePolicy. - */ - Policies?: Policies; - /** - * If present, this value indicates that there is more output available than is included in the current response. Use this value in the NextToken request parameter in a subsequent call to the operation to get the next part of the output. You should repeat this until the NextToken response element comes back as null. - */ - NextToken?: NextToken; - } - export interface ListRootsRequest { - /** - * Use this parameter if you receive a NextToken response in a previous request that indicates that there is more output available. Set it to the value of the previous call's NextToken response to indicate where the output should continue from. - */ - NextToken?: NextToken; - /** - * (Optional) Use this to limit the number of results you want included in the response. If you do not include this parameter, it defaults to a value that is specific to the operation. If additional items exist beyond the maximum you specify, the NextToken response element is present and has a value (is not null). Include that value as the NextToken request parameter in the next call to the operation to get the next part of the results. Note that Organizations might return fewer results than the maximum even when there are more results available. You should check NextToken after every operation to ensure that you receive all of the results. - */ - MaxResults?: MaxResults; - } - export interface ListRootsResponse { - /** - * A list of roots that are defined in an organization. - */ - Roots?: Roots; - /** - * If present, this value indicates that there is more output available than is included in the current response. Use this value in the NextToken request parameter in a subsequent call to the operation to get the next part of the output. You should repeat this until the NextToken response element comes back as null. - */ - NextToken?: NextToken; - } - export interface ListTargetsForPolicyRequest { - /** - * The unique identifier (ID) of the policy for which you want to know its attachments. The regex pattern for a policy ID string requires "p-" followed by from 8 to 128 lower-case letters or digits. - */ - PolicyId: PolicyId; - /** - * Use this parameter if you receive a NextToken response in a previous request that indicates that there is more output available. Set it to the value of the previous call's NextToken response to indicate where the output should continue from. - */ - NextToken?: NextToken; - /** - * (Optional) Use this to limit the number of results you want included in the response. If you do not include this parameter, it defaults to a value that is specific to the operation. If additional items exist beyond the maximum you specify, the NextToken response element is present and has a value (is not null). Include that value as the NextToken request parameter in the next call to the operation to get the next part of the results. Note that Organizations might return fewer results than the maximum even when there are more results available. You should check NextToken after every operation to ensure that you receive all of the results. - */ - MaxResults?: MaxResults; - } - export interface ListTargetsForPolicyResponse { - /** - * A list of structures, each of which contains details about one of the entities to which the specified policy is attached. - */ - Targets?: PolicyTargets; - /** - * If present, this value indicates that there is more output available than is included in the current response. Use this value in the NextToken request parameter in a subsequent call to the operation to get the next part of the output. You should repeat this until the NextToken response element comes back as null. - */ - NextToken?: NextToken; - } - export type MaxResults = number; - export interface MoveAccountRequest { - /** - * The unique identifier (ID) of the account that you want to move. The regex pattern for an account ID string requires exactly 12 digits. - */ - AccountId: AccountId; - /** - * The unique identifier (ID) of the root or organizational unit that you want to move the account from. The regex pattern for a parent ID string requires one of the following: Root: a string that begins with "r-" followed by from 4 to 32 lower-case letters or digits. Organizational unit (OU): a string that begins with "ou-" followed by from 4 to 32 lower-case letters or digits (the ID of the root that the OU is in) followed by a second "-" dash and from 8 to 32 additional lower-case letters or digits. - */ - SourceParentId: ParentId; - /** - * The unique identifier (ID) of the root or organizational unit that you want to move the account to. The regex pattern for a parent ID string requires one of the following: Root: a string that begins with "r-" followed by from 4 to 32 lower-case letters or digits. Organizational unit (OU): a string that begins with "ou-" followed by from 4 to 32 lower-case letters or digits (the ID of the root that the OU is in) followed by a second "-" dash and from 8 to 32 additional lower-case letters or digits. - */ - DestinationParentId: ParentId; - } - export type NextToken = string; - export interface Organization { - /** - * The unique identifier (ID) of an organization. The regex pattern for an organization ID string requires "o-" followed by from 10 to 32 lower-case letters or digits. - */ - Id?: OrganizationId; - /** - * The Amazon Resource Name (ARN) of an organization. For more information about ARNs in Organizations, see ARN Formats Supported by Organizations in the AWS Organizations User Guide. - */ - Arn?: OrganizationArn; - /** - * Specifies the functionality that currently is available to the organization. If set to "ALL", then all features are enabled and policies can be applied to accounts in the organization. If set to "CONSOLIDATED_BILLING", then only consolidated billing functionality is available. For more information, see Enabling All Features in Your Organization in the AWS Organizations User Guide. - */ - FeatureSet?: OrganizationFeatureSet; - /** - * The Amazon Resource Name (ARN) of the account that is designated as the master account for the organization. For more information about ARNs in Organizations, see ARN Formats Supported by Organizations in the AWS Organizations User Guide. - */ - MasterAccountArn?: AccountArn; - /** - * The unique identifier (ID) of the master account of an organization. The regex pattern for an account ID string requires exactly 12 digits. - */ - MasterAccountId?: AccountId; - /** - * The email address that is associated with the AWS account that is designated as the master account for the organization. - */ - MasterAccountEmail?: Email; - /** - * A list of policy types that are enabled for this organization. For example, if your organization has all features enabled, then service control policies (SCPs) are included in the list. - */ - AvailablePolicyTypes?: PolicyTypes; - } - export type OrganizationArn = string; - export type OrganizationFeatureSet = "ALL"|"CONSOLIDATED_BILLING"|string; - export type OrganizationId = string; - export interface OrganizationalUnit { - /** - * The unique identifier (ID) associated with this OU. The regex pattern for an organizational unit ID string requires "ou-" followed by from 4 to 32 lower-case letters or digits (the ID of the root that contains the OU) followed by a second "-" dash and from 8 to 32 additional lower-case letters or digits. - */ - Id?: OrganizationalUnitId; - /** - * The Amazon Resource Name (ARN) of this OU. For more information about ARNs in Organizations, see ARN Formats Supported by Organizations in the AWS Organizations User Guide. - */ - Arn?: OrganizationalUnitArn; - /** - * The friendly name of this OU. The regex pattern that is used to validate this parameter is a string of any of the characters in the ASCII character range. - */ - Name?: OrganizationalUnitName; - } - export type OrganizationalUnitArn = string; - export type OrganizationalUnitId = string; - export type OrganizationalUnitName = string; - export type OrganizationalUnits = OrganizationalUnit[]; - export interface Parent { - /** - * The unique identifier (ID) of the parent entity. The regex pattern for a parent ID string requires one of the following: Root: a string that begins with "r-" followed by from 4 to 32 lower-case letters or digits. Organizational unit (OU): a string that begins with "ou-" followed by from 4 to 32 lower-case letters or digits (the ID of the root that the OU is in) followed by a second "-" dash and from 8 to 32 additional lower-case letters or digits. - */ - Id?: ParentId; - /** - * The type of the parent entity. - */ - Type?: ParentType; - } - export type ParentId = string; - export type ParentType = "ROOT"|"ORGANIZATIONAL_UNIT"|string; - export type Parents = Parent[]; - export type Policies = PolicySummary[]; - export interface Policy { - /** - * A structure that contains additional details about the policy. - */ - PolicySummary?: PolicySummary; - /** - * The text content of the policy. - */ - Content?: PolicyContent; - } - export type PolicyArn = string; - export type PolicyContent = string; - export type PolicyDescription = string; - export type PolicyId = string; - export type PolicyName = string; - export interface PolicySummary { - /** - * The unique identifier (ID) of the policy. The regex pattern for a policy ID string requires "p-" followed by from 8 to 128 lower-case letters or digits. - */ - Id?: PolicyId; - /** - * The Amazon Resource Name (ARN) of the policy. For more information about ARNs in Organizations, see ARN Formats Supported by Organizations in the AWS Organizations User Guide. - */ - Arn?: PolicyArn; - /** - * The friendly name of the policy. The regex pattern that is used to validate this parameter is a string of any of the characters in the ASCII character range. - */ - Name?: PolicyName; - /** - * The description of the policy. - */ - Description?: PolicyDescription; - /** - * The type of policy. - */ - Type?: PolicyType; - /** - * A boolean value that indicates whether the specified policy is an AWS managed policy. If true, then you can attach the policy to roots, OUs, or accounts, but you cannot edit it. - */ - AwsManaged?: AwsManagedPolicy; - } - export type PolicyTargetId = string; - export interface PolicyTargetSummary { - /** - * The unique identifier (ID) of the policy target. The regex pattern for a target ID string requires one of the following: Root: a string that begins with "r-" followed by from 4 to 32 lower-case letters or digits. Account: a string that consists of exactly 12 digits. Organizational unit (OU): a string that begins with "ou-" followed by from 4 to 32 lower-case letters or digits (the ID of the root that the OU is in) followed by a second "-" dash and from 8 to 32 additional lower-case letters or digits. - */ - TargetId?: PolicyTargetId; - /** - * The Amazon Resource Name (ARN) of the policy target. For more information about ARNs in Organizations, see ARN Formats Supported by Organizations in the AWS Organizations User Guide. - */ - Arn?: GenericArn; - /** - * The friendly name of the policy target. The regex pattern that is used to validate this parameter is a string of any of the characters in the ASCII character range. - */ - Name?: TargetName; - /** - * The type of the policy target. - */ - Type?: TargetType; - } - export type PolicyTargets = PolicyTargetSummary[]; - export type PolicyType = "SERVICE_CONTROL_POLICY"|string; - export type PolicyTypeStatus = "ENABLED"|"PENDING_ENABLE"|"PENDING_DISABLE"|string; - export interface PolicyTypeSummary { - /** - * The name of the policy type. - */ - Type?: PolicyType; - /** - * The status of the policy type as it relates to the associated root. To attach a policy of the specified type to a root or to an OU or account in that root, it must be available in the organization and enabled for that root. - */ - Status?: PolicyTypeStatus; - } - export type PolicyTypes = PolicyTypeSummary[]; - export interface RemoveAccountFromOrganizationRequest { - /** - * The unique identifier (ID) of the member account that you want to remove from the organization. The regex pattern for an account ID string requires exactly 12 digits. - */ - AccountId: AccountId; - } - export type RoleName = string; - export interface Root { - /** - * The unique identifier (ID) for the root. The regex pattern for a root ID string requires "r-" followed by from 4 to 32 lower-case letters or digits. - */ - Id?: RootId; - /** - * The Amazon Resource Name (ARN) of the root. For more information about ARNs in Organizations, see ARN Formats Supported by Organizations in the AWS Organizations User Guide. - */ - Arn?: RootArn; - /** - * The friendly name of the root. The regex pattern that is used to validate this parameter is a string of any of the characters in the ASCII character range. - */ - Name?: RootName; - /** - * The types of policies that are currently enabled for the root and therefore can be attached to the root or to its OUs or accounts. - */ - PolicyTypes?: PolicyTypes; - } - export type RootArn = string; - export type RootId = string; - export type RootName = string; - export type Roots = Root[]; - export type TargetName = string; - export type TargetType = "ACCOUNT"|"ORGANIZATIONAL_UNIT"|"ROOT"|string; - export type Timestamp = Date; - export interface UpdateOrganizationalUnitRequest { - /** - * The unique identifier (ID) of the OU that you want to rename. You can get the ID from the ListOrganizationalUnitsForParent operation. The regex pattern for an organizational unit ID string requires "ou-" followed by from 4 to 32 lower-case letters or digits (the ID of the root that contains the OU) followed by a second "-" dash and from 8 to 32 additional lower-case letters or digits. - */ - OrganizationalUnitId: OrganizationalUnitId; - /** - * The new name that you want to assign to the OU. The regex pattern that is used to validate this parameter is a string of any of the characters in the ASCII character range. - */ - Name?: OrganizationalUnitName; - } - export interface UpdateOrganizationalUnitResponse { - /** - * A structure that contains the details about the specified OU, including its new name. - */ - OrganizationalUnit?: OrganizationalUnit; - } - export interface UpdatePolicyRequest { - /** - * The unique identifier (ID) of the policy that you want to update. The regex pattern for a policy ID string requires "p-" followed by from 8 to 128 lower-case letters or digits. - */ - PolicyId: PolicyId; - /** - * If provided, the new name for the policy. The regex pattern that is used to validate this parameter is a string of any of the characters in the ASCII character range. - */ - Name?: PolicyName; - /** - * If provided, the new description for the policy. - */ - Description?: PolicyDescription; - /** - * If provided, the new content for the policy. The text must be correctly formatted JSON that complies with the syntax for the policy's type. For more information, see Service Control Policy Syntax in the AWS Organizations User Guide. - */ - Content?: PolicyContent; - } - export interface UpdatePolicyResponse { - /** - * A structure that contains details about the updated policy, showing the requested changes. - */ - Policy?: Policy; - } - /** - * A string in YYYY-MM-DD format that represents the latest possible API version that can be used in this service. Specify 'latest' to use the latest possible version. - */ - export type apiVersion = "2016-11-28"|"latest"|string; - export interface ClientApiVersions { - /** - * A string in YYYY-MM-DD format that represents the latest possible API version that can be used in this service. Specify 'latest' to use the latest possible version. - */ - apiVersion?: apiVersion; - } - export type ClientConfiguration = ServiceConfigurationOptions & ClientApiVersions; - /** - * Contains interfaces for use with the Organizations client. - */ - export import Types = Organizations; -} -export = Organizations; diff --git a/workshops/monte-carlo-on-ec2-spot-fleet/src/web/node_modules/aws-sdk/clients/organizations.js b/workshops/monte-carlo-on-ec2-spot-fleet/src/web/node_modules/aws-sdk/clients/organizations.js deleted file mode 100644 index be3c1dd8..00000000 --- a/workshops/monte-carlo-on-ec2-spot-fleet/src/web/node_modules/aws-sdk/clients/organizations.js +++ /dev/null @@ -1,18 +0,0 @@ -require('../lib/node_loader'); -var AWS = require('../lib/core'); -var Service = AWS.Service; -var apiLoader = AWS.apiLoader; - -apiLoader.services['organizations'] = {}; -AWS.Organizations = Service.defineService('organizations', ['2016-11-28']); -Object.defineProperty(apiLoader.services['organizations'], '2016-11-28', { - get: function get() { - var model = require('../apis/organizations-2016-11-28.min.json'); - model.paginators = require('../apis/organizations-2016-11-28.paginators.json').pagination; - return model; - }, - enumerable: true, - configurable: true -}); - -module.exports = AWS.Organizations; diff --git a/workshops/monte-carlo-on-ec2-spot-fleet/src/web/node_modules/aws-sdk/clients/pinpoint.d.ts b/workshops/monte-carlo-on-ec2-spot-fleet/src/web/node_modules/aws-sdk/clients/pinpoint.d.ts deleted file mode 100644 index f770c230..00000000 --- a/workshops/monte-carlo-on-ec2-spot-fleet/src/web/node_modules/aws-sdk/clients/pinpoint.d.ts +++ /dev/null @@ -1,3061 +0,0 @@ -import {Request} from '../lib/request'; -import {Response} from '../lib/response'; -import {AWSError} from '../lib/error'; -import {Service} from '../lib/service'; -import {ServiceConfigurationOptions} from '../lib/service'; -import {ConfigBase as Config} from '../lib/config'; -interface Blob {} -declare class Pinpoint extends Service { - /** - * Constructs a service object. This object has one method for each API operation. - */ - constructor(options?: Pinpoint.Types.ClientConfiguration) - config: Config & Pinpoint.Types.ClientConfiguration; - /** - * Creates or updates an app. - */ - createApp(params: Pinpoint.Types.CreateAppRequest, callback?: (err: AWSError, data: Pinpoint.Types.CreateAppResponse) => void): Request; - /** - * Creates or updates an app. - */ - createApp(callback?: (err: AWSError, data: Pinpoint.Types.CreateAppResponse) => void): Request; - /** - * Creates or updates a campaign. - */ - createCampaign(params: Pinpoint.Types.CreateCampaignRequest, callback?: (err: AWSError, data: Pinpoint.Types.CreateCampaignResponse) => void): Request; - /** - * Creates or updates a campaign. - */ - createCampaign(callback?: (err: AWSError, data: Pinpoint.Types.CreateCampaignResponse) => void): Request; - /** - * Creates or updates an import job. - */ - createImportJob(params: Pinpoint.Types.CreateImportJobRequest, callback?: (err: AWSError, data: Pinpoint.Types.CreateImportJobResponse) => void): Request; - /** - * Creates or updates an import job. - */ - createImportJob(callback?: (err: AWSError, data: Pinpoint.Types.CreateImportJobResponse) => void): Request; - /** - * Used to create or update a segment. - */ - createSegment(params: Pinpoint.Types.CreateSegmentRequest, callback?: (err: AWSError, data: Pinpoint.Types.CreateSegmentResponse) => void): Request; - /** - * Used to create or update a segment. - */ - createSegment(callback?: (err: AWSError, data: Pinpoint.Types.CreateSegmentResponse) => void): Request; - /** - * Delete an ADM channel - */ - deleteAdmChannel(params: Pinpoint.Types.DeleteAdmChannelRequest, callback?: (err: AWSError, data: Pinpoint.Types.DeleteAdmChannelResponse) => void): Request; - /** - * Delete an ADM channel - */ - deleteAdmChannel(callback?: (err: AWSError, data: Pinpoint.Types.DeleteAdmChannelResponse) => void): Request; - /** - * Deletes the APNs channel for an app. - */ - deleteApnsChannel(params: Pinpoint.Types.DeleteApnsChannelRequest, callback?: (err: AWSError, data: Pinpoint.Types.DeleteApnsChannelResponse) => void): Request; - /** - * Deletes the APNs channel for an app. - */ - deleteApnsChannel(callback?: (err: AWSError, data: Pinpoint.Types.DeleteApnsChannelResponse) => void): Request; - /** - * Delete an APNS sandbox channel - */ - deleteApnsSandboxChannel(params: Pinpoint.Types.DeleteApnsSandboxChannelRequest, callback?: (err: AWSError, data: Pinpoint.Types.DeleteApnsSandboxChannelResponse) => void): Request; - /** - * Delete an APNS sandbox channel - */ - deleteApnsSandboxChannel(callback?: (err: AWSError, data: Pinpoint.Types.DeleteApnsSandboxChannelResponse) => void): Request; - /** - * Deletes an app. - */ - deleteApp(params: Pinpoint.Types.DeleteAppRequest, callback?: (err: AWSError, data: Pinpoint.Types.DeleteAppResponse) => void): Request; - /** - * Deletes an app. - */ - deleteApp(callback?: (err: AWSError, data: Pinpoint.Types.DeleteAppResponse) => void): Request; - /** - * Delete a BAIDU GCM channel - */ - deleteBaiduChannel(params: Pinpoint.Types.DeleteBaiduChannelRequest, callback?: (err: AWSError, data: Pinpoint.Types.DeleteBaiduChannelResponse) => void): Request; - /** - * Delete a BAIDU GCM channel - */ - deleteBaiduChannel(callback?: (err: AWSError, data: Pinpoint.Types.DeleteBaiduChannelResponse) => void): Request; - /** - * Deletes a campaign. - */ - deleteCampaign(params: Pinpoint.Types.DeleteCampaignRequest, callback?: (err: AWSError, data: Pinpoint.Types.DeleteCampaignResponse) => void): Request; - /** - * Deletes a campaign. - */ - deleteCampaign(callback?: (err: AWSError, data: Pinpoint.Types.DeleteCampaignResponse) => void): Request; - /** - * Delete an email channel - */ - deleteEmailChannel(params: Pinpoint.Types.DeleteEmailChannelRequest, callback?: (err: AWSError, data: Pinpoint.Types.DeleteEmailChannelResponse) => void): Request; - /** - * Delete an email channel - */ - deleteEmailChannel(callback?: (err: AWSError, data: Pinpoint.Types.DeleteEmailChannelResponse) => void): Request; - /** - * Deletes the event stream for an app. - */ - deleteEventStream(params: Pinpoint.Types.DeleteEventStreamRequest, callback?: (err: AWSError, data: Pinpoint.Types.DeleteEventStreamResponse) => void): Request; - /** - * Deletes the event stream for an app. - */ - deleteEventStream(callback?: (err: AWSError, data: Pinpoint.Types.DeleteEventStreamResponse) => void): Request; - /** - * Deletes the GCM channel for an app. - */ - deleteGcmChannel(params: Pinpoint.Types.DeleteGcmChannelRequest, callback?: (err: AWSError, data: Pinpoint.Types.DeleteGcmChannelResponse) => void): Request; - /** - * Deletes the GCM channel for an app. - */ - deleteGcmChannel(callback?: (err: AWSError, data: Pinpoint.Types.DeleteGcmChannelResponse) => void): Request; - /** - * Deletes a segment. - */ - deleteSegment(params: Pinpoint.Types.DeleteSegmentRequest, callback?: (err: AWSError, data: Pinpoint.Types.DeleteSegmentResponse) => void): Request; - /** - * Deletes a segment. - */ - deleteSegment(callback?: (err: AWSError, data: Pinpoint.Types.DeleteSegmentResponse) => void): Request; - /** - * Delete an SMS channel - */ - deleteSmsChannel(params: Pinpoint.Types.DeleteSmsChannelRequest, callback?: (err: AWSError, data: Pinpoint.Types.DeleteSmsChannelResponse) => void): Request; - /** - * Delete an SMS channel - */ - deleteSmsChannel(callback?: (err: AWSError, data: Pinpoint.Types.DeleteSmsChannelResponse) => void): Request; - /** - * Get an ADM channel - */ - getAdmChannel(params: Pinpoint.Types.GetAdmChannelRequest, callback?: (err: AWSError, data: Pinpoint.Types.GetAdmChannelResponse) => void): Request; - /** - * Get an ADM channel - */ - getAdmChannel(callback?: (err: AWSError, data: Pinpoint.Types.GetAdmChannelResponse) => void): Request; - /** - * Returns information about the APNs channel for an app. - */ - getApnsChannel(params: Pinpoint.Types.GetApnsChannelRequest, callback?: (err: AWSError, data: Pinpoint.Types.GetApnsChannelResponse) => void): Request; - /** - * Returns information about the APNs channel for an app. - */ - getApnsChannel(callback?: (err: AWSError, data: Pinpoint.Types.GetApnsChannelResponse) => void): Request; - /** - * Get an APNS sandbox channel - */ - getApnsSandboxChannel(params: Pinpoint.Types.GetApnsSandboxChannelRequest, callback?: (err: AWSError, data: Pinpoint.Types.GetApnsSandboxChannelResponse) => void): Request; - /** - * Get an APNS sandbox channel - */ - getApnsSandboxChannel(callback?: (err: AWSError, data: Pinpoint.Types.GetApnsSandboxChannelResponse) => void): Request; - /** - * Returns information about an app. - */ - getApp(params: Pinpoint.Types.GetAppRequest, callback?: (err: AWSError, data: Pinpoint.Types.GetAppResponse) => void): Request; - /** - * Returns information about an app. - */ - getApp(callback?: (err: AWSError, data: Pinpoint.Types.GetAppResponse) => void): Request; - /** - * Used to request the settings for an app. - */ - getApplicationSettings(params: Pinpoint.Types.GetApplicationSettingsRequest, callback?: (err: AWSError, data: Pinpoint.Types.GetApplicationSettingsResponse) => void): Request; - /** - * Used to request the settings for an app. - */ - getApplicationSettings(callback?: (err: AWSError, data: Pinpoint.Types.GetApplicationSettingsResponse) => void): Request; - /** - * Returns information about your apps. - */ - getApps(params: Pinpoint.Types.GetAppsRequest, callback?: (err: AWSError, data: Pinpoint.Types.GetAppsResponse) => void): Request; - /** - * Returns information about your apps. - */ - getApps(callback?: (err: AWSError, data: Pinpoint.Types.GetAppsResponse) => void): Request; - /** - * Get a BAIDU GCM channel - */ - getBaiduChannel(params: Pinpoint.Types.GetBaiduChannelRequest, callback?: (err: AWSError, data: Pinpoint.Types.GetBaiduChannelResponse) => void): Request; - /** - * Get a BAIDU GCM channel - */ - getBaiduChannel(callback?: (err: AWSError, data: Pinpoint.Types.GetBaiduChannelResponse) => void): Request; - /** - * Returns information about a campaign. - */ - getCampaign(params: Pinpoint.Types.GetCampaignRequest, callback?: (err: AWSError, data: Pinpoint.Types.GetCampaignResponse) => void): Request; - /** - * Returns information about a campaign. - */ - getCampaign(callback?: (err: AWSError, data: Pinpoint.Types.GetCampaignResponse) => void): Request; - /** - * Returns information about the activity performed by a campaign. - */ - getCampaignActivities(params: Pinpoint.Types.GetCampaignActivitiesRequest, callback?: (err: AWSError, data: Pinpoint.Types.GetCampaignActivitiesResponse) => void): Request; - /** - * Returns information about the activity performed by a campaign. - */ - getCampaignActivities(callback?: (err: AWSError, data: Pinpoint.Types.GetCampaignActivitiesResponse) => void): Request; - /** - * Returns information about a specific version of a campaign. - */ - getCampaignVersion(params: Pinpoint.Types.GetCampaignVersionRequest, callback?: (err: AWSError, data: Pinpoint.Types.GetCampaignVersionResponse) => void): Request; - /** - * Returns information about a specific version of a campaign. - */ - getCampaignVersion(callback?: (err: AWSError, data: Pinpoint.Types.GetCampaignVersionResponse) => void): Request; - /** - * Returns information about your campaign versions. - */ - getCampaignVersions(params: Pinpoint.Types.GetCampaignVersionsRequest, callback?: (err: AWSError, data: Pinpoint.Types.GetCampaignVersionsResponse) => void): Request; - /** - * Returns information about your campaign versions. - */ - getCampaignVersions(callback?: (err: AWSError, data: Pinpoint.Types.GetCampaignVersionsResponse) => void): Request; - /** - * Returns information about your campaigns. - */ - getCampaigns(params: Pinpoint.Types.GetCampaignsRequest, callback?: (err: AWSError, data: Pinpoint.Types.GetCampaignsResponse) => void): Request; - /** - * Returns information about your campaigns. - */ - getCampaigns(callback?: (err: AWSError, data: Pinpoint.Types.GetCampaignsResponse) => void): Request; - /** - * Get an email channel - */ - getEmailChannel(params: Pinpoint.Types.GetEmailChannelRequest, callback?: (err: AWSError, data: Pinpoint.Types.GetEmailChannelResponse) => void): Request; - /** - * Get an email channel - */ - getEmailChannel(callback?: (err: AWSError, data: Pinpoint.Types.GetEmailChannelResponse) => void): Request; - /** - * Returns information about an endpoint. - */ - getEndpoint(params: Pinpoint.Types.GetEndpointRequest, callback?: (err: AWSError, data: Pinpoint.Types.GetEndpointResponse) => void): Request; - /** - * Returns information about an endpoint. - */ - getEndpoint(callback?: (err: AWSError, data: Pinpoint.Types.GetEndpointResponse) => void): Request; - /** - * Returns the event stream for an app. - */ - getEventStream(params: Pinpoint.Types.GetEventStreamRequest, callback?: (err: AWSError, data: Pinpoint.Types.GetEventStreamResponse) => void): Request; - /** - * Returns the event stream for an app. - */ - getEventStream(callback?: (err: AWSError, data: Pinpoint.Types.GetEventStreamResponse) => void): Request; - /** - * Returns information about the GCM channel for an app. - */ - getGcmChannel(params: Pinpoint.Types.GetGcmChannelRequest, callback?: (err: AWSError, data: Pinpoint.Types.GetGcmChannelResponse) => void): Request; - /** - * Returns information about the GCM channel for an app. - */ - getGcmChannel(callback?: (err: AWSError, data: Pinpoint.Types.GetGcmChannelResponse) => void): Request; - /** - * Returns information about an import job. - */ - getImportJob(params: Pinpoint.Types.GetImportJobRequest, callback?: (err: AWSError, data: Pinpoint.Types.GetImportJobResponse) => void): Request; - /** - * Returns information about an import job. - */ - getImportJob(callback?: (err: AWSError, data: Pinpoint.Types.GetImportJobResponse) => void): Request; - /** - * Returns information about your import jobs. - */ - getImportJobs(params: Pinpoint.Types.GetImportJobsRequest, callback?: (err: AWSError, data: Pinpoint.Types.GetImportJobsResponse) => void): Request; - /** - * Returns information about your import jobs. - */ - getImportJobs(callback?: (err: AWSError, data: Pinpoint.Types.GetImportJobsResponse) => void): Request; - /** - * Returns information about a segment. - */ - getSegment(params: Pinpoint.Types.GetSegmentRequest, callback?: (err: AWSError, data: Pinpoint.Types.GetSegmentResponse) => void): Request; - /** - * Returns information about a segment. - */ - getSegment(callback?: (err: AWSError, data: Pinpoint.Types.GetSegmentResponse) => void): Request; - /** - * Returns a list of import jobs for a specific segment. - */ - getSegmentImportJobs(params: Pinpoint.Types.GetSegmentImportJobsRequest, callback?: (err: AWSError, data: Pinpoint.Types.GetSegmentImportJobsResponse) => void): Request; - /** - * Returns a list of import jobs for a specific segment. - */ - getSegmentImportJobs(callback?: (err: AWSError, data: Pinpoint.Types.GetSegmentImportJobsResponse) => void): Request; - /** - * Returns information about a segment version. - */ - getSegmentVersion(params: Pinpoint.Types.GetSegmentVersionRequest, callback?: (err: AWSError, data: Pinpoint.Types.GetSegmentVersionResponse) => void): Request; - /** - * Returns information about a segment version. - */ - getSegmentVersion(callback?: (err: AWSError, data: Pinpoint.Types.GetSegmentVersionResponse) => void): Request; - /** - * Returns information about your segment versions. - */ - getSegmentVersions(params: Pinpoint.Types.GetSegmentVersionsRequest, callback?: (err: AWSError, data: Pinpoint.Types.GetSegmentVersionsResponse) => void): Request; - /** - * Returns information about your segment versions. - */ - getSegmentVersions(callback?: (err: AWSError, data: Pinpoint.Types.GetSegmentVersionsResponse) => void): Request; - /** - * Used to get information about your segments. - */ - getSegments(params: Pinpoint.Types.GetSegmentsRequest, callback?: (err: AWSError, data: Pinpoint.Types.GetSegmentsResponse) => void): Request; - /** - * Used to get information about your segments. - */ - getSegments(callback?: (err: AWSError, data: Pinpoint.Types.GetSegmentsResponse) => void): Request; - /** - * Get an SMS channel - */ - getSmsChannel(params: Pinpoint.Types.GetSmsChannelRequest, callback?: (err: AWSError, data: Pinpoint.Types.GetSmsChannelResponse) => void): Request; - /** - * Get an SMS channel - */ - getSmsChannel(callback?: (err: AWSError, data: Pinpoint.Types.GetSmsChannelResponse) => void): Request; - /** - * Use to create or update the event stream for an app. - */ - putEventStream(params: Pinpoint.Types.PutEventStreamRequest, callback?: (err: AWSError, data: Pinpoint.Types.PutEventStreamResponse) => void): Request; - /** - * Use to create or update the event stream for an app. - */ - putEventStream(callback?: (err: AWSError, data: Pinpoint.Types.PutEventStreamResponse) => void): Request; - /** - * Send a batch of messages - */ - sendMessages(params: Pinpoint.Types.SendMessagesRequest, callback?: (err: AWSError, data: Pinpoint.Types.SendMessagesResponse) => void): Request; - /** - * Send a batch of messages - */ - sendMessages(callback?: (err: AWSError, data: Pinpoint.Types.SendMessagesResponse) => void): Request; - /** - * Send a batch of messages to users - */ - sendUsersMessages(params: Pinpoint.Types.SendUsersMessagesRequest, callback?: (err: AWSError, data: Pinpoint.Types.SendUsersMessagesResponse) => void): Request; - /** - * Send a batch of messages to users - */ - sendUsersMessages(callback?: (err: AWSError, data: Pinpoint.Types.SendUsersMessagesResponse) => void): Request; - /** - * Update an ADM channel - */ - updateAdmChannel(params: Pinpoint.Types.UpdateAdmChannelRequest, callback?: (err: AWSError, data: Pinpoint.Types.UpdateAdmChannelResponse) => void): Request; - /** - * Update an ADM channel - */ - updateAdmChannel(callback?: (err: AWSError, data: Pinpoint.Types.UpdateAdmChannelResponse) => void): Request; - /** - * Use to update the APNs channel for an app. - */ - updateApnsChannel(params: Pinpoint.Types.UpdateApnsChannelRequest, callback?: (err: AWSError, data: Pinpoint.Types.UpdateApnsChannelResponse) => void): Request; - /** - * Use to update the APNs channel for an app. - */ - updateApnsChannel(callback?: (err: AWSError, data: Pinpoint.Types.UpdateApnsChannelResponse) => void): Request; - /** - * Update an APNS sandbox channel - */ - updateApnsSandboxChannel(params: Pinpoint.Types.UpdateApnsSandboxChannelRequest, callback?: (err: AWSError, data: Pinpoint.Types.UpdateApnsSandboxChannelResponse) => void): Request; - /** - * Update an APNS sandbox channel - */ - updateApnsSandboxChannel(callback?: (err: AWSError, data: Pinpoint.Types.UpdateApnsSandboxChannelResponse) => void): Request; - /** - * Used to update the settings for an app. - */ - updateApplicationSettings(params: Pinpoint.Types.UpdateApplicationSettingsRequest, callback?: (err: AWSError, data: Pinpoint.Types.UpdateApplicationSettingsResponse) => void): Request; - /** - * Used to update the settings for an app. - */ - updateApplicationSettings(callback?: (err: AWSError, data: Pinpoint.Types.UpdateApplicationSettingsResponse) => void): Request; - /** - * Update a BAIDU GCM channel - */ - updateBaiduChannel(params: Pinpoint.Types.UpdateBaiduChannelRequest, callback?: (err: AWSError, data: Pinpoint.Types.UpdateBaiduChannelResponse) => void): Request; - /** - * Update a BAIDU GCM channel - */ - updateBaiduChannel(callback?: (err: AWSError, data: Pinpoint.Types.UpdateBaiduChannelResponse) => void): Request; - /** - * Use to update a campaign. - */ - updateCampaign(params: Pinpoint.Types.UpdateCampaignRequest, callback?: (err: AWSError, data: Pinpoint.Types.UpdateCampaignResponse) => void): Request; - /** - * Use to update a campaign. - */ - updateCampaign(callback?: (err: AWSError, data: Pinpoint.Types.UpdateCampaignResponse) => void): Request; - /** - * Update an email channel - */ - updateEmailChannel(params: Pinpoint.Types.UpdateEmailChannelRequest, callback?: (err: AWSError, data: Pinpoint.Types.UpdateEmailChannelResponse) => void): Request; - /** - * Update an email channel - */ - updateEmailChannel(callback?: (err: AWSError, data: Pinpoint.Types.UpdateEmailChannelResponse) => void): Request; - /** - * Use to update an endpoint. - */ - updateEndpoint(params: Pinpoint.Types.UpdateEndpointRequest, callback?: (err: AWSError, data: Pinpoint.Types.UpdateEndpointResponse) => void): Request; - /** - * Use to update an endpoint. - */ - updateEndpoint(callback?: (err: AWSError, data: Pinpoint.Types.UpdateEndpointResponse) => void): Request; - /** - * Use to update a batch of endpoints. - */ - updateEndpointsBatch(params: Pinpoint.Types.UpdateEndpointsBatchRequest, callback?: (err: AWSError, data: Pinpoint.Types.UpdateEndpointsBatchResponse) => void): Request; - /** - * Use to update a batch of endpoints. - */ - updateEndpointsBatch(callback?: (err: AWSError, data: Pinpoint.Types.UpdateEndpointsBatchResponse) => void): Request; - /** - * Use to update the GCM channel for an app. - */ - updateGcmChannel(params: Pinpoint.Types.UpdateGcmChannelRequest, callback?: (err: AWSError, data: Pinpoint.Types.UpdateGcmChannelResponse) => void): Request; - /** - * Use to update the GCM channel for an app. - */ - updateGcmChannel(callback?: (err: AWSError, data: Pinpoint.Types.UpdateGcmChannelResponse) => void): Request; - /** - * Use to update a segment. - */ - updateSegment(params: Pinpoint.Types.UpdateSegmentRequest, callback?: (err: AWSError, data: Pinpoint.Types.UpdateSegmentResponse) => void): Request; - /** - * Use to update a segment. - */ - updateSegment(callback?: (err: AWSError, data: Pinpoint.Types.UpdateSegmentResponse) => void): Request; - /** - * Update an SMS channel - */ - updateSmsChannel(params: Pinpoint.Types.UpdateSmsChannelRequest, callback?: (err: AWSError, data: Pinpoint.Types.UpdateSmsChannelResponse) => void): Request; - /** - * Update an SMS channel - */ - updateSmsChannel(callback?: (err: AWSError, data: Pinpoint.Types.UpdateSmsChannelResponse) => void): Request; -} -declare namespace Pinpoint { - export interface ADMChannelRequest { - /** - * Client ID as gotten from Amazon - */ - ClientId?: __string; - /** - * Client secret as gotten from Amazon - */ - ClientSecret?: __string; - /** - * If the channel is enabled for sending messages. - */ - Enabled?: __boolean; - } - export interface ADMChannelResponse { - /** - * Application id - */ - ApplicationId?: __string; - /** - * When was this segment created - */ - CreationDate?: __string; - /** - * If the channel is enabled for sending messages. - */ - Enabled?: __boolean; - /** - * Channel ID. Not used, only for backwards compatibility. - */ - Id?: __string; - /** - * Is this channel archived - */ - IsArchived?: __boolean; - /** - * Who last updated this entry - */ - LastModifiedBy?: __string; - /** - * Last date this was updated - */ - LastModifiedDate?: __string; - /** - * Platform type. Will be "ADM" - */ - Platform?: __string; - /** - * Version of channel - */ - Version?: __integer; - } - export interface ADMMessage { - /** - * The action that occurs if the user taps a push notification delivered by the campaign: OPEN_APP - Your app launches, or it becomes the foreground app if it has been sent to the background. This is the default action. DEEP_LINK - Uses deep linking features in iOS and Android to open your app and display a designated user interface within the app. URL - The default mobile browser on the user's device launches and opens a web page at the URL you specify. Possible values include: OPEN_APP | DEEP_LINK | URL - */ - Action?: Action; - /** - * The message body of the notification, the email body or the text message. - */ - Body?: __string; - /** - * Optional. Arbitrary string used to indicate multiple messages are logically the same and that ADM is allowed to drop previously enqueued messages in favor of this one. - */ - ConsolidationKey?: __string; - /** - * The data payload used for a silent push. This payload is added to the notifications' data.pinpoint.jsonBody' object - */ - Data?: MapOf__string; - /** - * Optional. Number of seconds ADM should retain the message if the device is offline - */ - ExpiresAfter?: __string; - /** - * The icon image name of the asset saved in your application. - */ - IconReference?: __string; - /** - * The URL that points to an image used as the large icon to the notification content view. - */ - ImageIconUrl?: __string; - /** - * The URL that points to an image used in the push notification. - */ - ImageUrl?: __string; - /** - * The data payload used for a silent push. This payload is added to the notifications' data.pinpoint.jsonBody' object - */ - JsonData?: __string; - /** - * Optional. Base-64-encoded MD5 checksum of the data parameter. Used to verify data integrity - */ - MD5?: __string; - /** - * The Raw JSON formatted string to be used as the payload. This value overrides the message. - */ - RawContent?: __string; - /** - * Indicates if the message should display on the users device. Silent pushes can be used for Remote Configuration and Phone Home use cases. - */ - SilentPush?: __boolean; - /** - * The URL that points to an image used as the small icon for the notification which will be used to represent the notification in the status bar and content view - */ - SmallImageIconUrl?: __string; - /** - * Indicates a sound to play when the device receives the notification. Supports default, or the filename of a sound resource bundled in the app. Android sound files must reside in /res/raw/ - */ - Sound?: __string; - /** - * Default message substitutions. Can be overridden by individual address substitutions. - */ - Substitutions?: MapOfListOf__string; - /** - * The message title that displays above the message on the user's device. - */ - Title?: __string; - /** - * The URL to open in the user's mobile browser. Used if the value for Action is URL. - */ - Url?: __string; - } - export interface APNSChannelRequest { - /** - * The bundle id used for APNs Tokens. - */ - BundleId?: __string; - /** - * The distribution certificate from Apple. - */ - Certificate?: __string; - /** - * The default authentication method used for APNs. - */ - DefaultAuthenticationMethod?: __string; - /** - * If the channel is enabled for sending messages. - */ - Enabled?: __boolean; - /** - * The certificate private key. - */ - PrivateKey?: __string; - /** - * The team id used for APNs Tokens. - */ - TeamId?: __string; - /** - * The token key used for APNs Tokens. - */ - TokenKey?: __string; - /** - * The token key used for APNs Tokens. - */ - TokenKeyId?: __string; - } - export interface APNSChannelResponse { - /** - * The ID of the application to which the channel applies. - */ - ApplicationId?: __string; - /** - * When was this segment created - */ - CreationDate?: __string; - /** - * If the channel is enabled for sending messages. - */ - Enabled?: __boolean; - /** - * Channel ID. Not used. Present only for backwards compatibility. - */ - Id?: __string; - /** - * Is this channel archived - */ - IsArchived?: __boolean; - /** - * Who last updated this entry - */ - LastModifiedBy?: __string; - /** - * Last date this was updated - */ - LastModifiedDate?: __string; - /** - * The platform type. Will be APNS. - */ - Platform?: __string; - /** - * Version of channel - */ - Version?: __integer; - } - export interface APNSMessage { - /** - * The action that occurs if the user taps a push notification delivered by the campaign: OPEN_APP - Your app launches, or it becomes the foreground app if it has been sent to the background. This is the default action. DEEP_LINK - Uses deep linking features in iOS and Android to open your app and display a designated user interface within the app. URL - The default mobile browser on the user's device launches and opens a web page at the URL you specify. Possible values include: OPEN_APP | DEEP_LINK | URL - */ - Action?: Action; - /** - * Include this key when you want the system to modify the badge of your app icon. If this key is not included in the dictionary, the badge is not changed. To remove the badge, set the value of this key to 0. - */ - Badge?: __integer; - /** - * The message body of the notification, the email body or the text message. - */ - Body?: __string; - /** - * Provide this key with a string value that represents the notification's type. This value corresponds to the value in the identifier property of one of your app's registered categories. - */ - Category?: __string; - /** - * The data payload used for a silent push. This payload is added to the notifications' data.pinpoint.jsonBody' object - */ - Data?: MapOf__string; - /** - * The data payload used for a silent push. This payload is added to the notifications' data.pinpoint.jsonBody' object - */ - JsonData?: __string; - /** - * The URL that points to a video used in the push notification. - */ - MediaUrl?: __string; - /** - * The preferred authentication method, either "CERTIFICATE" or "TOKEN" - */ - PreferredAuthenticationMethod?: __string; - /** - * The Raw JSON formatted string to be used as the payload. This value overrides the message. - */ - RawContent?: __string; - /** - * Indicates if the message should display on the users device. Silent pushes can be used for Remote Configuration and Phone Home use cases. - */ - SilentPush?: __boolean; - /** - * Include this key when you want the system to play a sound. The value of this key is the name of a sound file in your app's main bundle or in the Library/Sounds folder of your app's data container. If the sound file cannot be found, or if you specify defaultfor the value, the system plays the default alert sound. - */ - Sound?: __string; - /** - * Default message substitutions. Can be overridden by individual address substitutions. - */ - Substitutions?: MapOfListOf__string; - /** - * Provide this key with a string value that represents the app-specific identifier for grouping notifications. If you provide a Notification Content app extension, you can use this value to group your notifications together. - */ - ThreadId?: __string; - /** - * The message title that displays above the message on the user's device. - */ - Title?: __string; - /** - * The URL to open in the user's mobile browser. Used if the value for Action is URL. - */ - Url?: __string; - } - export interface APNSSandboxChannelRequest { - /** - * The bundle id used for APNs Tokens. - */ - BundleId?: __string; - /** - * The distribution certificate from Apple. - */ - Certificate?: __string; - /** - * The default authentication method used for APNs. - */ - DefaultAuthenticationMethod?: __string; - /** - * If the channel is enabled for sending messages. - */ - Enabled?: __boolean; - /** - * The certificate private key. - */ - PrivateKey?: __string; - /** - * The team id used for APNs Tokens. - */ - TeamId?: __string; - /** - * The token key used for APNs Tokens. - */ - TokenKey?: __string; - /** - * The token key used for APNs Tokens. - */ - TokenKeyId?: __string; - } - export interface APNSSandboxChannelResponse { - /** - * Application id - */ - ApplicationId?: __string; - /** - * When was this segment created - */ - CreationDate?: __string; - /** - * If the channel is enabled for sending messages. - */ - Enabled?: __boolean; - /** - * Channel ID. Not used, only for backwards compatibility. - */ - Id?: __string; - /** - * Is this channel archived - */ - IsArchived?: __boolean; - /** - * Who last updated this entry - */ - LastModifiedBy?: __string; - /** - * Last date this was updated - */ - LastModifiedDate?: __string; - /** - * The platform type. Will be APNS_SANDBOX. - */ - Platform?: __string; - /** - * Version of channel - */ - Version?: __integer; - } - export type Action = "OPEN_APP"|"DEEP_LINK"|"URL"|string; - export interface ActivitiesResponse { - /** - * List of campaign activities - */ - Item?: ListOfActivityResponse; - } - export interface ActivityResponse { - /** - * The ID of the application to which the campaign applies. - */ - ApplicationId?: __string; - /** - * The ID of the campaign to which the activity applies. - */ - CampaignId?: __string; - /** - * The actual time the activity was marked CANCELLED or COMPLETED. Provided in ISO 8601 format. - */ - End?: __string; - /** - * The unique activity ID. - */ - Id?: __string; - /** - * Indicates whether the activity succeeded. - -Valid values: SUCCESS, FAIL - */ - Result?: __string; - /** - * The scheduled start time for the activity in ISO 8601 format. - */ - ScheduledStart?: __string; - /** - * The actual start time of the activity in ISO 8601 format. - */ - Start?: __string; - /** - * The state of the activity. - -Valid values: PENDING, INITIALIZING, RUNNING, PAUSED, CANCELLED, COMPLETED - */ - State?: __string; - /** - * The total number of endpoints to which the campaign successfully delivered messages. - */ - SuccessfulEndpointCount?: __integer; - /** - * The total number of timezones completed. - */ - TimezonesCompletedCount?: __integer; - /** - * The total number of unique timezones present in the segment. - */ - TimezonesTotalCount?: __integer; - /** - * The total number of endpoints to which the campaign attempts to deliver messages. - */ - TotalEndpointCount?: __integer; - /** - * The ID of a variation of the campaign used for A/B testing. - */ - TreatmentId?: __string; - } - export interface AddressConfiguration { - /** - * Body override. If specified will override default body. - */ - BodyOverride?: __string; - /** - * The channel type. - -Valid values: GCM | APNS | SMS | EMAIL - */ - ChannelType?: ChannelType; - /** - * A map of custom attributes to attributes to be attached to the message for this address. This payload is added to the push notification's 'data.pinpoint' object or added to the email/sms delivery receipt event attributes. - */ - Context?: MapOf__string; - /** - * The Raw JSON formatted string to be used as the payload. This value overrides the message. - */ - RawContent?: __string; - /** - * A map of substitution values for the message to be merged with the DefaultMessage's substitutions. Substitutions on this map take precedence over the all other substitutions. - */ - Substitutions?: MapOfListOf__string; - /** - * Title override. If specified will override default title if applicable. - */ - TitleOverride?: __string; - } - export interface ApplicationResponse { - /** - * The unique application ID. - */ - Id?: __string; - /** - * The display name of the application. - */ - Name?: __string; - } - export interface ApplicationSettingsResource { - /** - * The unique ID for the application. - */ - ApplicationId?: __string; - /** - * The date that the settings were last updated in ISO 8601 format. - */ - LastModifiedDate?: __string; - /** - * The default campaign limits for the app. These limits apply to each campaign for the app, unless the campaign overrides the default with limits of its own. - */ - Limits?: CampaignLimits; - /** - * The default quiet time for the app. Each campaign for this app sends no messages during this time unless the campaign overrides the default with a quiet time of its own. - */ - QuietTime?: QuietTime; - } - export interface ApplicationsResponse { - /** - * List of applications returned in this page. - */ - Item?: ListOfApplicationResponse; - /** - * The string that you use in a subsequent request to get the next page of results in a paginated response. - */ - NextToken?: __string; - } - export interface AttributeDimension { - /** - * The type of dimension: -INCLUSIVE - Endpoints that match the criteria are included in the segment. -EXCLUSIVE - Endpoints that match the criteria are excluded from the segment. - */ - AttributeType?: AttributeType; - /** - * The criteria values for the segment dimension. Endpoints with matching attribute values are included or excluded from the segment, depending on the setting for Type. - */ - Values?: ListOf__string; - } - export type AttributeType = "INCLUSIVE"|"EXCLUSIVE"|string; - export interface BaiduChannelRequest { - /** - * Platform credential API key from Baidu. - */ - ApiKey?: __string; - /** - * If the channel is enabled for sending messages. - */ - Enabled?: __boolean; - /** - * Platform credential Secret key from Baidu. - */ - SecretKey?: __string; - } - export interface BaiduChannelResponse { - /** - * Application id - */ - ApplicationId?: __string; - /** - * When was this segment created - */ - CreationDate?: __string; - /** - * The Baidu API key from Baidu. - */ - Credential?: __string; - /** - * If the channel is enabled for sending messages. - */ - Enabled?: __boolean; - /** - * Channel ID. Not used, only for backwards compatibility. - */ - Id?: __string; - /** - * Is this channel archived - */ - IsArchived?: __boolean; - /** - * Who made the last change - */ - LastModifiedBy?: __string; - /** - * Last date this was updated - */ - LastModifiedDate?: __string; - /** - * The platform type. Will be BAIDU - */ - Platform?: __string; - /** - * Version of channel - */ - Version?: __integer; - } - export interface BaiduMessage { - /** - * The action that occurs if the user taps a push notification delivered by the campaign: OPEN_APP - Your app launches, or it becomes the foreground app if it has been sent to the background. This is the default action. DEEP_LINK - Uses deep linking features in iOS and Android to open your app and display a designated user interface within the app. URL - The default mobile browser on the user's device launches and opens a web page at the URL you specify. Possible values include: OPEN_APP | DEEP_LINK | URL - */ - Action?: Action; - /** - * The message body of the notification, the email body or the text message. - */ - Body?: __string; - /** - * The data payload used for a silent push. This payload is added to the notifications' data.pinpoint.jsonBody' object - */ - Data?: MapOf__string; - /** - * The icon image name of the asset saved in your application. - */ - IconReference?: __string; - /** - * The URL that points to an image used as the large icon to the notification content view. - */ - ImageIconUrl?: __string; - /** - * The URL that points to an image used in the push notification. - */ - ImageUrl?: __string; - /** - * The data payload used for a silent push. This payload is added to the notifications' data.pinpoint.jsonBody' object - */ - JsonData?: __string; - /** - * The Raw JSON formatted string to be used as the payload. This value overrides the message. - */ - RawContent?: __string; - /** - * Indicates if the message should display on the users device. Silent pushes can be used for Remote Configuration and Phone Home use cases. - */ - SilentPush?: __boolean; - /** - * The URL that points to an image used as the small icon for the notification which will be used to represent the notification in the status bar and content view - */ - SmallImageIconUrl?: __string; - /** - * Indicates a sound to play when the device receives the notification. Supports default, or the filename of a sound resource bundled in the app. Android sound files must reside in /res/raw/ - */ - Sound?: __string; - /** - * Default message substitutions. Can be overridden by individual address substitutions. - */ - Substitutions?: MapOfListOf__string; - /** - * The message title that displays above the message on the user's device. - */ - Title?: __string; - /** - * The URL to open in the user's mobile browser. Used if the value for Action is URL. - */ - Url?: __string; - } - export interface CampaignEmailMessage { - /** - * The email text body. - */ - Body?: __string; - /** - * The email address used to send the email from. Defaults to use FromAddress specified in the Email Channel. - */ - FromAddress?: __string; - /** - * The email html body. - */ - HtmlBody?: __string; - /** - * The email title (Or subject). - */ - Title?: __string; - } - export interface CampaignLimits { - /** - * The maximum number of messages that the campaign can send daily. - */ - Daily?: __integer; - /** - * The maximum duration of a campaign from the scheduled start. Must be a minimum of 60 seconds. - */ - MaximumDuration?: __integer; - /** - * The maximum number of messages per second that the campaign will send. This is a best effort maximum cap and can go as high as 20000 and as low as 50 - */ - MessagesPerSecond?: __integer; - /** - * The maximum total number of messages that the campaign can send. - */ - Total?: __integer; - } - export interface CampaignResponse { - /** - * Treatments that are defined in addition to the default treatment. - */ - AdditionalTreatments?: ListOfTreatmentResource; - /** - * The ID of the application to which the campaign applies. - */ - ApplicationId?: __string; - /** - * The date the campaign was created in ISO 8601 format. - */ - CreationDate?: __string; - /** - * The status of the campaign's default treatment. Only present for A/B test campaigns. - */ - DefaultState?: CampaignState; - /** - * A description of the campaign. - */ - Description?: __string; - /** - * The allocated percentage of end users who will not receive messages from this campaign. - */ - HoldoutPercent?: __integer; - /** - * The unique campaign ID. - */ - Id?: __string; - /** - * Indicates whether the campaign is paused. A paused campaign does not send messages unless you resume it by setting IsPaused to false. - */ - IsPaused?: __boolean; - /** - * The date the campaign was last updated in ISO 8601 format. - */ - LastModifiedDate?: __string; - /** - * The campaign limits settings. - */ - Limits?: CampaignLimits; - /** - * The message configuration settings. - */ - MessageConfiguration?: MessageConfiguration; - /** - * The custom name of the campaign. - */ - Name?: __string; - /** - * The campaign schedule. - */ - Schedule?: Schedule; - /** - * The ID of the segment to which the campaign sends messages. - */ - SegmentId?: __string; - /** - * The version of the segment to which the campaign sends messages. - */ - SegmentVersion?: __integer; - /** - * The campaign status. - -An A/B test campaign will have a status of COMPLETED only when all treatments have a status of COMPLETED. - */ - State?: CampaignState; - /** - * A custom description for the treatment. - */ - TreatmentDescription?: __string; - /** - * The custom name of a variation of the campaign used for A/B testing. - */ - TreatmentName?: __string; - /** - * The campaign version number. - */ - Version?: __integer; - } - export interface CampaignSmsMessage { - /** - * The SMS text body. - */ - Body?: __string; - /** - * Is this is a transactional SMS message, otherwise a promotional message. - */ - MessageType?: MessageType; - /** - * Sender ID of sent message. - */ - SenderId?: __string; - } - export interface CampaignState { - /** - * The status of the campaign, or the status of a treatment that belongs to an A/B test campaign. - -Valid values: SCHEDULED, EXECUTING, PENDING_NEXT_RUN, COMPLETED, PAUSED - */ - CampaignStatus?: CampaignStatus; - } - export type CampaignStatus = "SCHEDULED"|"EXECUTING"|"PENDING_NEXT_RUN"|"COMPLETED"|"PAUSED"|string; - export interface CampaignsResponse { - /** - * A list of campaigns. - */ - Item?: ListOfCampaignResponse; - /** - * The string that you use in a subsequent request to get the next page of results in a paginated response. - */ - NextToken?: __string; - } - export type ChannelType = "GCM"|"APNS"|"APNS_SANDBOX"|"ADM"|"SMS"|"EMAIL"|"BAIDU"|string; - export interface CreateAppRequest { - CreateApplicationRequest: CreateApplicationRequest; - } - export interface CreateAppResponse { - ApplicationResponse: ApplicationResponse; - } - export interface CreateApplicationRequest { - /** - * The display name of the application. Used in the Amazon Pinpoint console. - */ - Name?: __string; - } - export interface CreateCampaignRequest { - ApplicationId: __string; - WriteCampaignRequest: WriteCampaignRequest; - } - export interface CreateCampaignResponse { - CampaignResponse: CampaignResponse; - } - export interface CreateImportJobRequest { - ApplicationId: __string; - ImportJobRequest: ImportJobRequest; - } - export interface CreateImportJobResponse { - ImportJobResponse: ImportJobResponse; - } - export interface CreateSegmentRequest { - ApplicationId: __string; - WriteSegmentRequest: WriteSegmentRequest; - } - export interface CreateSegmentResponse { - SegmentResponse: SegmentResponse; - } - export interface DefaultMessage { - /** - * The message body of the notification, the email body or the text message. - */ - Body?: __string; - /** - * Default message substitutions. Can be overridden by individual address substitutions. - */ - Substitutions?: MapOfListOf__string; - } - export interface DefaultPushNotificationMessage { - /** - * The action that occurs if the user taps a push notification delivered by the campaign: OPEN_APP - Your app launches, or it becomes the foreground app if it has been sent to the background. This is the default action. DEEP_LINK - Uses deep linking features in iOS and Android to open your app and display a designated user interface within the app. URL - The default mobile browser on the user's device launches and opens a web page at the URL you specify. Possible values include: OPEN_APP | DEEP_LINK | URL - */ - Action?: Action; - /** - * The message body of the notification, the email body or the text message. - */ - Body?: __string; - /** - * The data payload used for a silent push. This payload is added to the notifications' data.pinpoint.jsonBody' object - */ - Data?: MapOf__string; - /** - * The data payload used for a silent push. This payload is added to the notifications' data.pinpoint.jsonBody' object - */ - JsonData?: __string; - /** - * Indicates if the message should display on the users device. Silent pushes can be used for Remote Configuration and Phone Home use cases. - */ - SilentPush?: __boolean; - /** - * Default message substitutions. Can be overridden by individual address substitutions. - */ - Substitutions?: MapOfListOf__string; - /** - * The message title that displays above the message on the user's device. - */ - Title?: __string; - /** - * The URL to open in the user's mobile browser. Used if the value for Action is URL. - */ - Url?: __string; - } - export interface DeleteAdmChannelRequest { - ApplicationId: __string; - } - export interface DeleteAdmChannelResponse { - ADMChannelResponse: ADMChannelResponse; - } - export interface DeleteApnsChannelRequest { - ApplicationId: __string; - } - export interface DeleteApnsChannelResponse { - APNSChannelResponse: APNSChannelResponse; - } - export interface DeleteApnsSandboxChannelRequest { - ApplicationId: __string; - } - export interface DeleteApnsSandboxChannelResponse { - APNSSandboxChannelResponse: APNSSandboxChannelResponse; - } - export interface DeleteAppRequest { - ApplicationId: __string; - } - export interface DeleteAppResponse { - ApplicationResponse: ApplicationResponse; - } - export interface DeleteBaiduChannelRequest { - ApplicationId: __string; - } - export interface DeleteBaiduChannelResponse { - BaiduChannelResponse: BaiduChannelResponse; - } - export interface DeleteCampaignRequest { - ApplicationId: __string; - CampaignId: __string; - } - export interface DeleteCampaignResponse { - CampaignResponse: CampaignResponse; - } - export interface DeleteEmailChannelRequest { - ApplicationId: __string; - } - export interface DeleteEmailChannelResponse { - EmailChannelResponse: EmailChannelResponse; - } - export interface DeleteEventStreamRequest { - /** - * ApplicationId - */ - ApplicationId: __string; - } - export interface DeleteEventStreamResponse { - EventStream: EventStream; - } - export interface DeleteGcmChannelRequest { - ApplicationId: __string; - } - export interface DeleteGcmChannelResponse { - GCMChannelResponse: GCMChannelResponse; - } - export interface DeleteSegmentRequest { - ApplicationId: __string; - SegmentId: __string; - } - export interface DeleteSegmentResponse { - SegmentResponse: SegmentResponse; - } - export interface DeleteSmsChannelRequest { - ApplicationId: __string; - } - export interface DeleteSmsChannelResponse { - SMSChannelResponse: SMSChannelResponse; - } - export type DeliveryStatus = "SUCCESSFUL"|"THROTTLED"|"TEMPORARY_FAILURE"|"PERMANENT_FAILURE"|"UNKNOWN_FAILURE"|"OPT_OUT"|"DUPLICATE"|string; - export type DimensionType = "INCLUSIVE"|"EXCLUSIVE"|string; - export interface DirectMessageConfiguration { - /** - * The message to ADM channels. Overrides the default push notification message. - */ - ADMMessage?: ADMMessage; - /** - * The message to APNS channels. Overrides the default push notification message. - */ - APNSMessage?: APNSMessage; - /** - * The message to Baidu GCM channels. Overrides the default push notification message. - */ - BaiduMessage?: BaiduMessage; - /** - * The default message for all channels. - */ - DefaultMessage?: DefaultMessage; - /** - * The default push notification message for all push channels. - */ - DefaultPushNotificationMessage?: DefaultPushNotificationMessage; - /** - * The message to Email channels. Overrides the default message. - */ - EmailMessage?: EmailMessage; - /** - * The message to GCM channels. Overrides the default push notification message. - */ - GCMMessage?: GCMMessage; - /** - * The message to SMS channels. Overrides the default message. - */ - SMSMessage?: SMSMessage; - } - export type Duration = "HR_24"|"DAY_7"|"DAY_14"|"DAY_30"|string; - export interface EmailChannelRequest { - /** - * If the channel is enabled for sending messages. - */ - Enabled?: __boolean; - /** - * The email address used to send emails from. - */ - FromAddress?: __string; - /** - * The ARN of an identity verified with SES. - */ - Identity?: __string; - /** - * The ARN of an IAM Role used to submit events to Mobile Analytics' event ingestion service - */ - RoleArn?: __string; - } - export interface EmailChannelResponse { - /** - * The unique ID of the application to which the email channel belongs. - */ - ApplicationId?: __string; - /** - * The date that the settings were last updated in ISO 8601 format. - */ - CreationDate?: __string; - /** - * If the channel is enabled for sending messages. - */ - Enabled?: __boolean; - /** - * The email address used to send emails from. - */ - FromAddress?: __string; - /** - * Channel ID. Not used, only for backwards compatibility. - */ - Id?: __string; - /** - * The ARN of an identity verified with SES. - */ - Identity?: __string; - /** - * Is this channel archived - */ - IsArchived?: __boolean; - /** - * Who last updated this entry - */ - LastModifiedBy?: __string; - /** - * Last date this was updated - */ - LastModifiedDate?: __string; - /** - * Platform type. Will be "EMAIL" - */ - Platform?: __string; - /** - * The ARN of an IAM Role used to submit events to Mobile Analytics' event ingestion service - */ - RoleArn?: __string; - /** - * Version of channel - */ - Version?: __integer; - } - export interface EmailMessage { - /** - * The message body of the notification, the email body or the text message. - */ - Body?: __string; - /** - * The email address used to send the email from. Defaults to use FromAddress specified in the Email Channel. - */ - FromAddress?: __string; - /** - * The HTML part of the email. - */ - HtmlBody?: __string; - /** - * Default message substitutions. Can be overridden by individual address substitutions. - */ - Substitutions?: MapOfListOf__string; - /** - * The ARN of the template to use for the email. - */ - TemplateArn?: __string; - /** - * The subject of the email. - */ - Title?: __string; - } - export interface EndpointBatchItem { - /** - * The address or token of the endpoint as provided by your push provider (e.g. DeviceToken or RegistrationId). - */ - Address?: __string; - /** - * Custom attributes that your app reports to Amazon Pinpoint. You can use these attributes as selection criteria when you create a segment. - */ - Attributes?: MapOfListOf__string; - /** - * The channel type. - -Valid values: GCM | APNS | SMS | EMAIL - */ - ChannelType?: ChannelType; - /** - * The endpoint demographic attributes. - */ - Demographic?: EndpointDemographic; - /** - * The last time the endpoint was updated. Provided in ISO 8601 format. - */ - EffectiveDate?: __string; - /** - * The endpoint status. Can be either ACTIVE or INACTIVE. Will be set to INACTIVE if a delivery fails. Will be set to ACTIVE if the address is updated. - */ - EndpointStatus?: __string; - /** - * The unique Id for the Endpoint in the batch. - */ - Id?: __string; - /** - * The endpoint location attributes. - */ - Location?: EndpointLocation; - /** - * Custom metrics that your app reports to Amazon Pinpoint. - */ - Metrics?: MapOf__double; - /** - * Indicates whether a user has opted out of receiving messages with one of the following values: - -ALL - User has opted out of all messages. - -NONE - Users has not opted out and receives all messages. - */ - OptOut?: __string; - /** - * The unique ID for the most recent request to update the endpoint. - */ - RequestId?: __string; - /** - * Custom user-specific attributes that your app reports to Amazon Pinpoint. - */ - User?: EndpointUser; - } - export interface EndpointBatchRequest { - /** - * List of items to update. Maximum 100 items - */ - Item?: ListOfEndpointBatchItem; - } - export interface EndpointDemographic { - /** - * The version of the application associated with the endpoint. - */ - AppVersion?: __string; - /** - * The endpoint locale in the following format: The ISO 639-1 alpha-2 code, followed by an underscore, followed by an ISO 3166-1 alpha-2 value. - - */ - Locale?: __string; - /** - * The endpoint make, such as such as Apple or Samsung. - */ - Make?: __string; - /** - * The endpoint model, such as iPhone. - */ - Model?: __string; - /** - * The endpoint model version. - */ - ModelVersion?: __string; - /** - * The endpoint platform, such as ios or android. - */ - Platform?: __string; - /** - * The endpoint platform version. - */ - PlatformVersion?: __string; - /** - * The timezone of the endpoint. Specified as a tz database value, such as Americas/Los_Angeles. - */ - Timezone?: __string; - } - export interface EndpointLocation { - /** - * The city where the endpoint is located. - */ - City?: __string; - /** - * Country according to ISO 3166-1 Alpha-2 codes. For example, US. - */ - Country?: __string; - /** - * The latitude of the endpoint location. Rounded to one decimal (Roughly corresponding to a mile). - */ - Latitude?: __double; - /** - * The longitude of the endpoint location. Rounded to one decimal (Roughly corresponding to a mile). - */ - Longitude?: __double; - /** - * The postal code or zip code of the endpoint. - */ - PostalCode?: __string; - /** - * The region of the endpoint location. For example, corresponds to a state in US. - */ - Region?: __string; - } - export interface EndpointMessageResult { - /** - * Address that endpoint message was delivered to. - */ - Address?: __string; - /** - * Delivery status of message. - */ - DeliveryStatus?: DeliveryStatus; - /** - * Downstream service status code. - */ - StatusCode?: __integer; - /** - * Status message for message delivery. - */ - StatusMessage?: __string; - /** - * If token was updated as part of delivery. (This is GCM Specific) - */ - UpdatedToken?: __string; - } - export interface EndpointRequest { - /** - * The address or token of the endpoint as provided by your push provider (e.g. DeviceToken or RegistrationId). - */ - Address?: __string; - /** - * Custom attributes that your app reports to Amazon Pinpoint. You can use these attributes as selection criteria when you create a segment. - */ - Attributes?: MapOfListOf__string; - /** - * The channel type. - -Valid values: GCM | APNS | SMS | EMAIL - */ - ChannelType?: ChannelType; - /** - * The endpoint demographic attributes. - */ - Demographic?: EndpointDemographic; - /** - * The last time the endpoint was updated. Provided in ISO 8601 format. - */ - EffectiveDate?: __string; - /** - * The endpoint status. Can be either ACTIVE or INACTIVE. Will be set to INACTIVE if a delivery fails. Will be set to ACTIVE if the address is updated. - */ - EndpointStatus?: __string; - /** - * The endpoint location attributes. - */ - Location?: EndpointLocation; - /** - * Custom metrics that your app reports to Amazon Pinpoint. - */ - Metrics?: MapOf__double; - /** - * Indicates whether a user has opted out of receiving messages with one of the following values: - -ALL - User has opted out of all messages. - -NONE - Users has not opted out and receives all messages. - */ - OptOut?: __string; - /** - * The unique ID for the most recent request to update the endpoint. - */ - RequestId?: __string; - /** - * Custom user-specific attributes that your app reports to Amazon Pinpoint. - */ - User?: EndpointUser; - } - export interface EndpointResponse { - /** - * The address or token of the endpoint as provided by your push provider (e.g. DeviceToken or RegistrationId). - */ - Address?: __string; - /** - * The ID of the application associated with the endpoint. - */ - ApplicationId?: __string; - /** - * Custom attributes that your app reports to Amazon Pinpoint. You can use these attributes as selection criteria when you create a segment. - */ - Attributes?: MapOfListOf__string; - /** - * The channel type. - -Valid values: GCM | APNS | SMS | EMAIL - */ - ChannelType?: ChannelType; - /** - * A number from 0 - 99 that represents the cohort the endpoint is assigned to. Endpoints are grouped into cohorts randomly, and each cohort contains approximately 1 percent of the endpoints for an app. Amazon Pinpoint assigns cohorts to the holdout or treatment allocations for a campaign. - */ - CohortId?: __string; - /** - * The last time the endpoint was created. Provided in ISO 8601 format. - */ - CreationDate?: __string; - /** - * The endpoint demographic attributes. - */ - Demographic?: EndpointDemographic; - /** - * The last time the endpoint was updated. Provided in ISO 8601 format. - */ - EffectiveDate?: __string; - /** - * The endpoint status. Can be either ACTIVE or INACTIVE. Will be set to INACTIVE if a delivery fails. Will be set to ACTIVE if the address is updated. - */ - EndpointStatus?: __string; - /** - * The unique ID that you assigned to the endpoint. The ID should be a globally unique identifier (GUID) to ensure that it is unique compared to all other endpoints for the application. - */ - Id?: __string; - /** - * The endpoint location attributes. - */ - Location?: EndpointLocation; - /** - * Custom metrics that your app reports to Amazon Pinpoint. - */ - Metrics?: MapOf__double; - /** - * Indicates whether a user has opted out of receiving messages with one of the following values: - -ALL - User has opted out of all messages. - -NONE - Users has not opted out and receives all messages. - */ - OptOut?: __string; - /** - * The unique ID for the most recent request to update the endpoint. - */ - RequestId?: __string; - /** - * The ShardId of endpoint. - */ - ShardId?: __string; - /** - * Custom user-specific attributes that your app reports to Amazon Pinpoint. - */ - User?: EndpointUser; - } - export interface EndpointSendConfiguration { - /** - * Body override. If specified will override default body. - */ - BodyOverride?: __string; - /** - * A map of custom attributes to attributes to be attached to the message for this address. This payload is added to the push notification's 'data.pinpoint' object or added to the email/sms delivery receipt event attributes. - */ - Context?: MapOf__string; - /** - * The Raw JSON formatted string to be used as the payload. This value overrides the message. - */ - RawContent?: __string; - /** - * A map of substitution values for the message to be merged with the DefaultMessage's substitutions. Substitutions on this map take precedence over the all other substitutions. - */ - Substitutions?: MapOfListOf__string; - /** - * Title override. If specified will override default title if applicable. - */ - TitleOverride?: __string; - } - export interface EndpointUser { - /** - * Custom attributes specific to the user. - */ - UserAttributes?: MapOfListOf__string; - /** - * The unique ID of the user. - */ - UserId?: __string; - } - export interface EventStream { - /** - * The ID of the application from which events should be published. - */ - ApplicationId?: __string; - /** - * The Amazon Resource Name (ARN) of the Amazon Kinesis stream or Firehose delivery stream to which you want to publish events. - Firehose ARN: arn:aws:firehose:REGION:ACCOUNT_ID:deliverystream/STREAM_NAME - Kinesis ARN: arn:aws:kinesis:REGION:ACCOUNT_ID:stream/STREAM_NAME - */ - DestinationStreamArn?: __string; - /** - * The external ID assigned the IAM role that authorizes Amazon Pinpoint to publish to the stream. - */ - ExternalId?: __string; - /** - * The date the event stream was last updated in ISO 8601 format. - */ - LastModifiedDate?: __string; - /** - * The IAM user who last modified the event stream. - */ - LastUpdatedBy?: __string; - /** - * The IAM role that authorizes Amazon Pinpoint to publish events to the stream in your account. - */ - RoleArn?: __string; - } - export type Format = "CSV"|"JSON"|string; - export type Frequency = "ONCE"|"HOURLY"|"DAILY"|"WEEKLY"|"MONTHLY"|string; - export interface GCMChannelRequest { - /** - * Platform credential API key from Google. - */ - ApiKey?: __string; - /** - * If the channel is enabled for sending messages. - */ - Enabled?: __boolean; - } - export interface GCMChannelResponse { - /** - * The ID of the application to which the channel applies. - */ - ApplicationId?: __string; - /** - * When was this segment created - */ - CreationDate?: __string; - /** - * The GCM API key from Google. - */ - Credential?: __string; - /** - * If the channel is enabled for sending messages. - */ - Enabled?: __boolean; - /** - * Channel ID. Not used. Present only for backwards compatibility. - */ - Id?: __string; - /** - * Is this channel archived - */ - IsArchived?: __boolean; - /** - * Who last updated this entry - */ - LastModifiedBy?: __string; - /** - * Last date this was updated - */ - LastModifiedDate?: __string; - /** - * The platform type. Will be GCM - */ - Platform?: __string; - /** - * Version of channel - */ - Version?: __integer; - } - export interface GCMMessage { - /** - * The action that occurs if the user taps a push notification delivered by the campaign: OPEN_APP - Your app launches, or it becomes the foreground app if it has been sent to the background. This is the default action. DEEP_LINK - Uses deep linking features in iOS and Android to open your app and display a designated user interface within the app. URL - The default mobile browser on the user's device launches and opens a web page at the URL you specify. Possible values include: OPEN_APP | DEEP_LINK | URL - */ - Action?: Action; - /** - * The message body of the notification, the email body or the text message. - */ - Body?: __string; - /** - * This parameter identifies a group of messages (e.g., with collapse_key: "Updates Available") that can be collapsed, so that only the last message gets sent when delivery can be resumed. This is intended to avoid sending too many of the same messages when the device comes back online or becomes active. - */ - CollapseKey?: __string; - /** - * The data payload used for a silent push. This payload is added to the notifications' data.pinpoint.jsonBody' object - */ - Data?: MapOf__string; - /** - * The icon image name of the asset saved in your application. - */ - IconReference?: __string; - /** - * The URL that points to an image used as the large icon to the notification content view. - */ - ImageIconUrl?: __string; - /** - * The URL that points to an image used in the push notification. - */ - ImageUrl?: __string; - /** - * The data payload used for a silent push. This payload is added to the notifications' data.pinpoint.jsonBody' object - */ - JsonData?: __string; - /** - * The Raw JSON formatted string to be used as the payload. This value overrides the message. - */ - RawContent?: __string; - /** - * This parameter specifies the package name of the application where the registration tokens must match in order to receive the message. - */ - RestrictedPackageName?: __string; - /** - * Indicates if the message should display on the users device. Silent pushes can be used for Remote Configuration and Phone Home use cases. - */ - SilentPush?: __boolean; - /** - * The URL that points to an image used as the small icon for the notification which will be used to represent the notification in the status bar and content view - */ - SmallImageIconUrl?: __string; - /** - * Indicates a sound to play when the device receives the notification. Supports default, or the filename of a sound resource bundled in the app. Android sound files must reside in /res/raw/ - */ - Sound?: __string; - /** - * Default message substitutions. Can be overridden by individual address substitutions. - */ - Substitutions?: MapOfListOf__string; - /** - * The message title that displays above the message on the user's device. - */ - Title?: __string; - /** - * The URL to open in the user's mobile browser. Used if the value for Action is URL. - */ - Url?: __string; - } - export interface GetAdmChannelRequest { - ApplicationId: __string; - } - export interface GetAdmChannelResponse { - ADMChannelResponse: ADMChannelResponse; - } - export interface GetApnsChannelRequest { - ApplicationId: __string; - } - export interface GetApnsChannelResponse { - APNSChannelResponse: APNSChannelResponse; - } - export interface GetApnsSandboxChannelRequest { - ApplicationId: __string; - } - export interface GetApnsSandboxChannelResponse { - APNSSandboxChannelResponse: APNSSandboxChannelResponse; - } - export interface GetAppRequest { - ApplicationId: __string; - } - export interface GetAppResponse { - ApplicationResponse: ApplicationResponse; - } - export interface GetApplicationSettingsRequest { - ApplicationId: __string; - } - export interface GetApplicationSettingsResponse { - ApplicationSettingsResource: ApplicationSettingsResource; - } - export interface GetAppsRequest { - PageSize?: __string; - Token?: __string; - } - export interface GetAppsResponse { - ApplicationsResponse: ApplicationsResponse; - } - export interface GetBaiduChannelRequest { - ApplicationId: __string; - } - export interface GetBaiduChannelResponse { - BaiduChannelResponse: BaiduChannelResponse; - } - export interface GetCampaignActivitiesRequest { - ApplicationId: __string; - CampaignId: __string; - /** - * The number of entries you want on each page in the response. - */ - PageSize?: __string; - /** - * The NextToken string returned on a previous page that you use to get the next page of results in a paginated response. - */ - Token?: __string; - } - export interface GetCampaignActivitiesResponse { - ActivitiesResponse: ActivitiesResponse; - } - export interface GetCampaignRequest { - ApplicationId: __string; - CampaignId: __string; - } - export interface GetCampaignResponse { - CampaignResponse: CampaignResponse; - } - export interface GetCampaignVersionRequest { - ApplicationId: __string; - CampaignId: __string; - Version: __string; - } - export interface GetCampaignVersionResponse { - CampaignResponse: CampaignResponse; - } - export interface GetCampaignVersionsRequest { - ApplicationId: __string; - CampaignId: __string; - /** - * The number of entries you want on each page in the response. - */ - PageSize?: __string; - /** - * The NextToken string returned on a previous page that you use to get the next page of results in a paginated response. - */ - Token?: __string; - } - export interface GetCampaignVersionsResponse { - CampaignsResponse: CampaignsResponse; - } - export interface GetCampaignsRequest { - ApplicationId: __string; - /** - * The number of entries you want on each page in the response. - */ - PageSize?: __string; - /** - * The NextToken string returned on a previous page that you use to get the next page of results in a paginated response. - */ - Token?: __string; - } - export interface GetCampaignsResponse { - CampaignsResponse: CampaignsResponse; - } - export interface GetEmailChannelRequest { - ApplicationId: __string; - } - export interface GetEmailChannelResponse { - EmailChannelResponse: EmailChannelResponse; - } - export interface GetEndpointRequest { - ApplicationId: __string; - EndpointId: __string; - } - export interface GetEndpointResponse { - EndpointResponse: EndpointResponse; - } - export interface GetEventStreamRequest { - /** - * ApplicationId - */ - ApplicationId: __string; - } - export interface GetEventStreamResponse { - EventStream: EventStream; - } - export interface GetGcmChannelRequest { - ApplicationId: __string; - } - export interface GetGcmChannelResponse { - GCMChannelResponse: GCMChannelResponse; - } - export interface GetImportJobRequest { - ApplicationId: __string; - JobId: __string; - } - export interface GetImportJobResponse { - ImportJobResponse: ImportJobResponse; - } - export interface GetImportJobsRequest { - ApplicationId: __string; - /** - * The number of entries you want on each page in the response. - */ - PageSize?: __string; - /** - * The NextToken string returned on a previous page that you use to get the next page of results in a paginated response. - */ - Token?: __string; - } - export interface GetImportJobsResponse { - ImportJobsResponse: ImportJobsResponse; - } - export interface GetSegmentImportJobsRequest { - ApplicationId: __string; - /** - * The number of entries you want on each page in the response. - */ - PageSize?: __string; - SegmentId: __string; - /** - * The NextToken string returned on a previous page that you use to get the next page of results in a paginated response. - */ - Token?: __string; - } - export interface GetSegmentImportJobsResponse { - ImportJobsResponse: ImportJobsResponse; - } - export interface GetSegmentRequest { - ApplicationId: __string; - SegmentId: __string; - } - export interface GetSegmentResponse { - SegmentResponse: SegmentResponse; - } - export interface GetSegmentVersionRequest { - ApplicationId: __string; - SegmentId: __string; - Version: __string; - } - export interface GetSegmentVersionResponse { - SegmentResponse: SegmentResponse; - } - export interface GetSegmentVersionsRequest { - ApplicationId: __string; - /** - * The number of entries you want on each page in the response. - */ - PageSize?: __string; - SegmentId: __string; - /** - * The NextToken string returned on a previous page that you use to get the next page of results in a paginated response. - */ - Token?: __string; - } - export interface GetSegmentVersionsResponse { - SegmentsResponse: SegmentsResponse; - } - export interface GetSegmentsRequest { - ApplicationId: __string; - /** - * The number of entries you want on each page in the response. - */ - PageSize?: __string; - /** - * The NextToken string returned on a previous page that you use to get the next page of results in a paginated response. - */ - Token?: __string; - } - export interface GetSegmentsResponse { - SegmentsResponse: SegmentsResponse; - } - export interface GetSmsChannelRequest { - ApplicationId: __string; - } - export interface GetSmsChannelResponse { - SMSChannelResponse: SMSChannelResponse; - } - export interface ImportJobRequest { - /** - * Sets whether the endpoints create a segment when they are imported. - */ - DefineSegment?: __boolean; - /** - * A unique, custom ID assigned to the IAM role that restricts who can assume the role. - */ - ExternalId?: __string; - /** - * The format of the files that contain the endpoint definitions. -Valid values: CSV, JSON - */ - Format?: Format; - /** - * Sets whether the endpoints are registered with Amazon Pinpoint when they are imported. - */ - RegisterEndpoints?: __boolean; - /** - * The Amazon Resource Name (ARN) of an IAM role that grants Amazon Pinpoint access to the Amazon S3 location that contains the endpoints to import. - */ - RoleArn?: __string; - /** - * A URL that points to the location within an Amazon S3 bucket that contains the endpoints to import. The location can be a folder or a single file. -The URL should follow this format: s3://bucket-name/folder-name/file-name - -Amazon Pinpoint will import endpoints from this location and any subfolders it contains. - */ - S3Url?: __string; - /** - * The ID of the segment to update if the import job is meant to update an existing segment. - */ - SegmentId?: __string; - /** - * A custom name for the segment created by the import job. Use if DefineSegment is true. - */ - SegmentName?: __string; - } - export interface ImportJobResource { - /** - * Sets whether the endpoints create a segment when they are imported. - */ - DefineSegment?: __boolean; - /** - * A unique, custom ID assigned to the IAM role that restricts who can assume the role. - */ - ExternalId?: __string; - /** - * The format of the files that contain the endpoint definitions. -Valid values: CSV, JSON - */ - Format?: Format; - /** - * Sets whether the endpoints are registered with Amazon Pinpoint when they are imported. - */ - RegisterEndpoints?: __boolean; - /** - * The Amazon Resource Name (ARN) of an IAM role that grants Amazon Pinpoint access to the Amazon S3 location that contains the endpoints to import. - */ - RoleArn?: __string; - /** - * A URL that points to the location within an Amazon S3 bucket that contains the endpoints to import. The location can be a folder or a single file. -The URL should follow this format: s3://bucket-name/folder-name/file-name - -Amazon Pinpoint will import endpoints from this location and any subfolders it contains. - */ - S3Url?: __string; - /** - * The ID of the segment to update if the import job is meant to update an existing segment. - */ - SegmentId?: __string; - /** - * A custom name for the segment created by the import job. Use if DefineSegment is true. - */ - SegmentName?: __string; - } - export interface ImportJobResponse { - /** - * The unique ID of the application to which the import job applies. - */ - ApplicationId?: __string; - /** - * The number of pieces that have successfully imported as of the time of the request. - */ - CompletedPieces?: __integer; - /** - * The date the import job completed in ISO 8601 format. - */ - CompletionDate?: __string; - /** - * The date the import job was created in ISO 8601 format. - */ - CreationDate?: __string; - /** - * The import job settings. - */ - Definition?: ImportJobResource; - /** - * The number of pieces that have failed to import as of the time of the request. - */ - FailedPieces?: __integer; - /** - * Provides up to 100 of the first failed entries for the job, if any exist. - */ - Failures?: ListOf__string; - /** - * The unique ID of the import job. - */ - Id?: __string; - /** - * The status of the import job. -Valid values: CREATED, INITIALIZING, PROCESSING, COMPLETING, COMPLETED, FAILING, FAILED - -The job status is FAILED if one or more pieces failed to import. - */ - JobStatus?: JobStatus; - /** - * The number of endpoints that failed to import; for example, because of syntax errors. - */ - TotalFailures?: __integer; - /** - * The total number of pieces that must be imported to finish the job. Each piece is an approximately equal portion of the endpoints to import. - */ - TotalPieces?: __integer; - /** - * The number of endpoints that were processed by the import job. - */ - TotalProcessed?: __integer; - /** - * The job type. Will be Import. - */ - Type?: __string; - } - export interface ImportJobsResponse { - /** - * A list of import jobs for the application. - */ - Item?: ListOfImportJobResponse; - /** - * The string that you use in a subsequent request to get the next page of results in a paginated response. - */ - NextToken?: __string; - } - export type JobStatus = "CREATED"|"INITIALIZING"|"PROCESSING"|"COMPLETING"|"COMPLETED"|"FAILING"|"FAILED"|string; - export type ListOfActivityResponse = ActivityResponse[]; - export type ListOfApplicationResponse = ApplicationResponse[]; - export type ListOfCampaignResponse = CampaignResponse[]; - export type ListOfEndpointBatchItem = EndpointBatchItem[]; - export type ListOfImportJobResponse = ImportJobResponse[]; - export type ListOfSegmentResponse = SegmentResponse[]; - export type ListOfTreatmentResource = TreatmentResource[]; - export type ListOfWriteTreatmentResource = WriteTreatmentResource[]; - export type ListOf__string = __string[]; - export type MapOfAddressConfiguration = {[key: string]: AddressConfiguration}; - export type MapOfAttributeDimension = {[key: string]: AttributeDimension}; - export type MapOfEndpointMessageResult = {[key: string]: EndpointMessageResult}; - export type MapOfEndpointSendConfiguration = {[key: string]: EndpointSendConfiguration}; - export type MapOfListOf__string = {[key: string]: ListOf__string}; - export type MapOfMapOfEndpointMessageResult = {[key: string]: MapOfEndpointMessageResult}; - export type MapOfMessageResult = {[key: string]: MessageResult}; - export type MapOf__double = {[key: string]: __double}; - export type MapOf__integer = {[key: string]: __integer}; - export type MapOf__string = {[key: string]: __string}; - export interface Message { - /** - * The action that occurs if the user taps a push notification delivered by the campaign: -OPEN_APP - Your app launches, or it becomes the foreground app if it has been sent to the background. This is the default action. - -DEEP_LINK - Uses deep linking features in iOS and Android to open your app and display a designated user interface within the app. - -URL - The default mobile browser on the user's device launches and opens a web page at the URL you specify. - */ - Action?: Action; - /** - * The message body. Can include up to 140 characters. - */ - Body?: __string; - /** - * The URL that points to the icon image for the push notification icon, for example, the app icon. - */ - ImageIconUrl?: __string; - /** - * The URL that points to the small icon image for the push notification icon, for example, the app icon. - */ - ImageSmallIconUrl?: __string; - /** - * The URL that points to an image used in the push notification. - */ - ImageUrl?: __string; - /** - * The JSON payload used for a silent push. - */ - JsonBody?: __string; - /** - * The URL that points to the media resource, for example a .mp4 or .gif file. - */ - MediaUrl?: __string; - /** - * The Raw JSON formatted string to be used as the payload. This value overrides the message. - */ - RawContent?: __string; - /** - * Indicates if the message should display on the users device. - -Silent pushes can be used for Remote Configuration and Phone Home use cases. - */ - SilentPush?: __boolean; - /** - * The message title that displays above the message on the user's device. - */ - Title?: __string; - /** - * The URL to open in the user's mobile browser. Used if the value for Action is URL. - */ - Url?: __string; - } - export interface MessageBody { - /** - * The error message returned from the API. - */ - Message?: __string; - /** - * The unique message body ID. - */ - RequestID?: __string; - } - export interface MessageConfiguration { - /** - * The message that the campaign delivers to APNS channels. Overrides the default message. - */ - APNSMessage?: Message; - /** - * The default message for all channels. - */ - DefaultMessage?: Message; - /** - * The email message configuration. - */ - EmailMessage?: CampaignEmailMessage; - /** - * The message that the campaign delivers to GCM channels. Overrides the default message. - */ - GCMMessage?: Message; - /** - * The SMS message configuration. - */ - SMSMessage?: CampaignSmsMessage; - } - export interface MessageRequest { - /** - * A map of destination addresses, with the address as the key(Email address, phone number or push token) and the Address Configuration as the value. - */ - Addresses?: MapOfAddressConfiguration; - /** - * The JSON payload used for campaign attributes. This payload is added to the notifications' data->pinpoint->campaign' object in iOS and flattened to pinpoint.campaign.{AttributeName} keys in Android. Email will use the attribute campaign_id to save the templates. - */ - Campaign?: MapOf__string; - /** - * A map of custom attributes to attributes to be attached to the message. This payload is added to the push notification's 'data.pinpoint' object or added to the email/sms delivery receipt event attributes. - */ - Context?: MapOf__string; - /** - * A map of destination addresses, with the address as the key(Email address, phone number or push token) and the Address Configuration as the value. - */ - Endpoints?: MapOfEndpointSendConfiguration; - /** - * Message configuration. - */ - MessageConfiguration?: DirectMessageConfiguration; - /** - * Original request Id for which this message is delivered. - */ - RequestId?: __string; - } - export interface MessageResponse { - /** - * Application id of the message. - */ - ApplicationId?: __string; - /** - * A map containing a multi part response for each address, with the endpointId as the key and the result as the value. - */ - EndpointResult?: MapOfEndpointMessageResult; - /** - * Original request Id for which this message was delivered. - */ - RequestId?: __string; - /** - * A map containing a multi part response for each address, with the address as the key(Email address, phone number or push token) and the result as the value. - */ - Result?: MapOfMessageResult; - } - export interface MessageResult { - /** - * Delivery status of message. - */ - DeliveryStatus?: DeliveryStatus; - /** - * Downstream service status code. - */ - StatusCode?: __integer; - /** - * Status message for message delivery. - */ - StatusMessage?: __string; - /** - * If token was updated as part of delivery. (This is GCM Specific) - */ - UpdatedToken?: __string; - } - export type MessageType = "TRANSACTIONAL"|"PROMOTIONAL"|string; - export interface PutEventStreamRequest { - /** - * ApplicationId - */ - ApplicationId: __string; - /** - * EventStream to write. - */ - WriteEventStream: WriteEventStream; - } - export interface PutEventStreamResponse { - EventStream: EventStream; - } - export interface QuietTime { - /** - * The default end time for quiet time in ISO 8601 format. - */ - End?: __string; - /** - * The default start time for quiet time in ISO 8601 format. - */ - Start?: __string; - } - export interface RecencyDimension { - /** - * The length of time during which users have been active or inactive with your app. -Valid values: HR_24, DAY_7, DAY_14, DAY_30 - */ - Duration?: Duration; - /** - * The recency dimension type: -ACTIVE - Users who have used your app within the specified duration are included in the segment. -INACTIVE - Users who have not used your app within the specified duration are included in the segment. - */ - RecencyType?: RecencyType; - } - export type RecencyType = "ACTIVE"|"INACTIVE"|string; - export interface SMSChannelRequest { - /** - * If the channel is enabled for sending messages. - */ - Enabled?: __boolean; - /** - * Sender identifier of your messages. - */ - SenderId?: __string; - /** - * ShortCode registered with phone provider. - */ - ShortCode?: __string; - } - export interface SMSChannelResponse { - /** - * The unique ID of the application to which the SMS channel belongs. - */ - ApplicationId?: __string; - /** - * The date that the settings were last updated in ISO 8601 format. - */ - CreationDate?: __string; - /** - * If the channel is enabled for sending messages. - */ - Enabled?: __boolean; - /** - * Channel ID. Not used, only for backwards compatibility. - */ - Id?: __string; - /** - * Is this channel archived - */ - IsArchived?: __boolean; - /** - * Who last updated this entry - */ - LastModifiedBy?: __string; - /** - * Last date this was updated - */ - LastModifiedDate?: __string; - /** - * Platform type. Will be "SMS" - */ - Platform?: __string; - /** - * Sender identifier of your messages. - */ - SenderId?: __string; - /** - * The short code registered with the phone provider. - */ - ShortCode?: __string; - /** - * Version of channel - */ - Version?: __integer; - } - export interface SMSMessage { - /** - * The message body of the notification, the email body or the text message. - */ - Body?: __string; - /** - * Is this a transaction priority message or lower priority. - */ - MessageType?: MessageType; - /** - * Sender ID of sent message. - */ - SenderId?: __string; - /** - * Default message substitutions. Can be overridden by individual address substitutions. - */ - Substitutions?: MapOfListOf__string; - } - export interface Schedule { - /** - * The scheduled time that the campaign ends in ISO 8601 format. - */ - EndTime?: __string; - /** - * How often the campaign delivers messages. - -Valid values: ONCE, HOURLY, DAILY, WEEKLY, MONTHLY - */ - Frequency?: Frequency; - /** - * Indicates whether the campaign schedule takes effect according to each user's local time. - */ - IsLocalTime?: __boolean; - /** - * The time during which the campaign sends no messages. - */ - QuietTime?: QuietTime; - /** - * The scheduled time that the campaign begins in ISO 8601 format. - */ - StartTime?: __string; - /** - * The starting UTC offset for the schedule if the value for isLocalTime is true - -Valid values: -UTC -UTC+01 -UTC+02 -UTC+03 -UTC+03:30 -UTC+04 -UTC+04:30 -UTC+05 -UTC+05:30 -UTC+05:45 -UTC+06 -UTC+06:30 -UTC+07 -UTC+08 -UTC+09 -UTC+09:30 -UTC+10 -UTC+10:30 -UTC+11 -UTC+12 -UTC+13 -UTC-02 -UTC-03 -UTC-04 -UTC-05 -UTC-06 -UTC-07 -UTC-08 -UTC-09 -UTC-10 -UTC-11 - */ - Timezone?: __string; - } - export interface SegmentBehaviors { - /** - * The recency of use. - */ - Recency?: RecencyDimension; - } - export interface SegmentDemographics { - /** - * The app version criteria for the segment. - */ - AppVersion?: SetDimension; - /** - * The channel criteria for the segment. - */ - Channel?: SetDimension; - /** - * The device type criteria for the segment. - */ - DeviceType?: SetDimension; - /** - * The device make criteria for the segment. - */ - Make?: SetDimension; - /** - * The device model criteria for the segment. - */ - Model?: SetDimension; - /** - * The device platform criteria for the segment. - */ - Platform?: SetDimension; - } - export interface SegmentDimensions { - /** - * Custom segment attributes. - */ - Attributes?: MapOfAttributeDimension; - /** - * The segment behaviors attributes. - */ - Behavior?: SegmentBehaviors; - /** - * The segment demographics attributes. - */ - Demographic?: SegmentDemographics; - /** - * The segment location attributes. - */ - Location?: SegmentLocation; - /** - * Custom segment user attributes. - */ - UserAttributes?: MapOfAttributeDimension; - } - export interface SegmentImportResource { - /** - * Channel type counts - */ - ChannelCounts?: MapOf__integer; - /** - * A unique, custom ID assigned to the IAM role that restricts who can assume the role. - */ - ExternalId?: __string; - /** - * The format of the endpoint files that were imported to create this segment. -Valid values: CSV, JSON - */ - Format?: Format; - /** - * The Amazon Resource Name (ARN) of an IAM role that grants Amazon Pinpoint access to the endpoints in Amazon S3. - */ - RoleArn?: __string; - /** - * A URL that points to the Amazon S3 location from which the endpoints for this segment were imported. - */ - S3Url?: __string; - /** - * The number of endpoints that were successfully imported to create this segment. - */ - Size?: __integer; - } - export interface SegmentLocation { - /** - * The country filter according to ISO 3166-1 Alpha-2 codes. - */ - Country?: SetDimension; - } - export interface SegmentResponse { - /** - * The ID of the application to which the segment applies. - */ - ApplicationId?: __string; - /** - * The date the segment was created in ISO 8601 format. - */ - CreationDate?: __string; - /** - * The segment dimensions attributes. - */ - Dimensions?: SegmentDimensions; - /** - * The unique segment ID. - */ - Id?: __string; - /** - * The import job settings. - */ - ImportDefinition?: SegmentImportResource; - /** - * The date the segment was last updated in ISO 8601 format. - */ - LastModifiedDate?: __string; - /** - * The name of segment - */ - Name?: __string; - /** - * The segment type: -DIMENSIONAL - A dynamic segment built from selection criteria based on endpoint data reported by your app. You create this type of segment by using the segment builder in the Amazon Pinpoint console or by making a POST request to the segments resource. -IMPORT - A static segment built from an imported set of endpoint definitions. You create this type of segment by importing a segment in the Amazon Pinpoint console or by making a POST request to the jobs/import resource. - */ - SegmentType?: SegmentType; - /** - * The segment version number. - */ - Version?: __integer; - } - export type SegmentType = "DIMENSIONAL"|"IMPORT"|string; - export interface SegmentsResponse { - /** - * The list of segments. - */ - Item?: ListOfSegmentResponse; - /** - * An identifier used to retrieve the next page of results. The token is null if no additional pages exist. - */ - NextToken?: __string; - } - export interface SendMessagesRequest { - ApplicationId: __string; - MessageRequest: MessageRequest; - } - export interface SendMessagesResponse { - MessageResponse: MessageResponse; - } - export interface SendUsersMessageRequest { - /** - * A map of custom attributes to attributes to be attached to the message. This payload is added to the push notification's 'data.pinpoint' object or added to the email/sms delivery receipt event attributes. - */ - Context?: MapOf__string; - /** - * Message configuration. - */ - MessageConfiguration?: DirectMessageConfiguration; - /** - * Original request Id for which this message is delivered. - */ - RequestId?: __string; - /** - * A map of destination endpoints, with the EndpointId as the key Endpoint Message Configuration as the value. - */ - Users?: MapOfEndpointSendConfiguration; - } - export interface SendUsersMessageResponse { - /** - * Application id of the message. - */ - ApplicationId?: __string; - /** - * Original request Id for which this message was delivered. - */ - RequestId?: __string; - /** - * A map containing of UserId to Map of EndpointId to Endpoint Message Result. - */ - Result?: MapOfMapOfEndpointMessageResult; - } - export interface SendUsersMessagesRequest { - ApplicationId: __string; - SendUsersMessageRequest: SendUsersMessageRequest; - } - export interface SendUsersMessagesResponse { - SendUsersMessageResponse: SendUsersMessageResponse; - } - export interface SetDimension { - /** - * The type of dimension: -INCLUSIVE - Endpoints that match the criteria are included in the segment. -EXCLUSIVE - Endpoints that match the criteria are excluded from the segment. - */ - DimensionType?: DimensionType; - /** - * The criteria values for the segment dimension. Endpoints with matching attribute values are included or excluded from the segment, depending on the setting for Type. - */ - Values?: ListOf__string; - } - export interface TreatmentResource { - /** - * The unique treatment ID. - */ - Id?: __string; - /** - * The message configuration settings. - */ - MessageConfiguration?: MessageConfiguration; - /** - * The campaign schedule. - */ - Schedule?: Schedule; - /** - * The allocated percentage of users for this treatment. - */ - SizePercent?: __integer; - /** - * The treatment status. - */ - State?: CampaignState; - /** - * A custom description for the treatment. - */ - TreatmentDescription?: __string; - /** - * The custom name of a variation of the campaign used for A/B testing. - */ - TreatmentName?: __string; - } - export interface UpdateAdmChannelRequest { - ADMChannelRequest: ADMChannelRequest; - ApplicationId: __string; - } - export interface UpdateAdmChannelResponse { - ADMChannelResponse: ADMChannelResponse; - } - export interface UpdateApnsChannelRequest { - APNSChannelRequest: APNSChannelRequest; - ApplicationId: __string; - } - export interface UpdateApnsChannelResponse { - APNSChannelResponse: APNSChannelResponse; - } - export interface UpdateApnsSandboxChannelRequest { - APNSSandboxChannelRequest: APNSSandboxChannelRequest; - ApplicationId: __string; - } - export interface UpdateApnsSandboxChannelResponse { - APNSSandboxChannelResponse: APNSSandboxChannelResponse; - } - export interface UpdateApplicationSettingsRequest { - ApplicationId: __string; - WriteApplicationSettingsRequest: WriteApplicationSettingsRequest; - } - export interface UpdateApplicationSettingsResponse { - ApplicationSettingsResource: ApplicationSettingsResource; - } - export interface UpdateBaiduChannelRequest { - ApplicationId: __string; - BaiduChannelRequest: BaiduChannelRequest; - } - export interface UpdateBaiduChannelResponse { - BaiduChannelResponse: BaiduChannelResponse; - } - export interface UpdateCampaignRequest { - ApplicationId: __string; - CampaignId: __string; - WriteCampaignRequest: WriteCampaignRequest; - } - export interface UpdateCampaignResponse { - CampaignResponse: CampaignResponse; - } - export interface UpdateEmailChannelRequest { - ApplicationId: __string; - EmailChannelRequest: EmailChannelRequest; - } - export interface UpdateEmailChannelResponse { - EmailChannelResponse: EmailChannelResponse; - } - export interface UpdateEndpointRequest { - ApplicationId: __string; - EndpointId: __string; - EndpointRequest: EndpointRequest; - } - export interface UpdateEndpointResponse { - MessageBody: MessageBody; - } - export interface UpdateEndpointsBatchRequest { - ApplicationId: __string; - EndpointBatchRequest: EndpointBatchRequest; - } - export interface UpdateEndpointsBatchResponse { - MessageBody: MessageBody; - } - export interface UpdateGcmChannelRequest { - ApplicationId: __string; - GCMChannelRequest: GCMChannelRequest; - } - export interface UpdateGcmChannelResponse { - GCMChannelResponse: GCMChannelResponse; - } - export interface UpdateSegmentRequest { - ApplicationId: __string; - SegmentId: __string; - WriteSegmentRequest: WriteSegmentRequest; - } - export interface UpdateSegmentResponse { - SegmentResponse: SegmentResponse; - } - export interface UpdateSmsChannelRequest { - ApplicationId: __string; - SMSChannelRequest: SMSChannelRequest; - } - export interface UpdateSmsChannelResponse { - SMSChannelResponse: SMSChannelResponse; - } - export interface WriteApplicationSettingsRequest { - /** - * The default campaign limits for the app. These limits apply to each campaign for the app, unless the campaign overrides the default with limits of its own. - */ - Limits?: CampaignLimits; - /** - * The default quiet time for the app. Each campaign for this app sends no messages during this time unless the campaign overrides the default with a quiet time of its own. - */ - QuietTime?: QuietTime; - } - export interface WriteCampaignRequest { - /** - * Treatments that are defined in addition to the default treatment. - */ - AdditionalTreatments?: ListOfWriteTreatmentResource; - /** - * A description of the campaign. - */ - Description?: __string; - /** - * The allocated percentage of end users who will not receive messages from this campaign. - */ - HoldoutPercent?: __integer; - /** - * Indicates whether the campaign is paused. A paused campaign does not send messages unless you resume it by setting IsPaused to false. - */ - IsPaused?: __boolean; - /** - * The campaign limits settings. - */ - Limits?: CampaignLimits; - /** - * The message configuration settings. - */ - MessageConfiguration?: MessageConfiguration; - /** - * The custom name of the campaign. - */ - Name?: __string; - /** - * The campaign schedule. - */ - Schedule?: Schedule; - /** - * The ID of the segment to which the campaign sends messages. - */ - SegmentId?: __string; - /** - * The version of the segment to which the campaign sends messages. - */ - SegmentVersion?: __integer; - /** - * Whether or not to enable trace logging for the campaign. Undocumented - */ - Trace?: __boolean; - /** - * A custom description for the treatment. - */ - TreatmentDescription?: __string; - /** - * The custom name of a variation of the campaign used for A/B testing. - */ - TreatmentName?: __string; - } - export interface WriteEventStream { - /** - * The Amazon Resource Name (ARN) of the Amazon Kinesis stream or Firehose delivery stream to which you want to publish events. - Firehose ARN: arn:aws:firehose:REGION:ACCOUNT_ID:deliverystream/STREAM_NAME - Kinesis ARN: arn:aws:kinesis:REGION:ACCOUNT_ID:stream/STREAM_NAME - */ - DestinationStreamArn?: __string; - /** - * The external ID assigned the IAM role that authorizes Amazon Pinpoint to publish to the stream. - */ - ExternalId?: __string; - /** - * The IAM role that authorizes Amazon Pinpoint to publish events to the stream in your account. - */ - RoleArn?: __string; - } - export interface WriteSegmentRequest { - /** - * The segment dimensions attributes. - */ - Dimensions?: SegmentDimensions; - /** - * The name of segment - */ - Name?: __string; - } - export interface WriteTreatmentResource { - /** - * The message configuration settings. - */ - MessageConfiguration?: MessageConfiguration; - /** - * The campaign schedule. - */ - Schedule?: Schedule; - /** - * The allocated percentage of users for this treatment. - */ - SizePercent?: __integer; - /** - * A custom description for the treatment. - */ - TreatmentDescription?: __string; - /** - * The custom name of a variation of the campaign used for A/B testing. - */ - TreatmentName?: __string; - } - export type __boolean = boolean; - export type __double = number; - export type __integer = number; - export type __string = string; - export type __timestamp = Date; - /** - * A string in YYYY-MM-DD format that represents the latest possible API version that can be used in this service. Specify 'latest' to use the latest possible version. - */ - export type apiVersion = "2016-12-01"|"latest"|string; - export interface ClientApiVersions { - /** - * A string in YYYY-MM-DD format that represents the latest possible API version that can be used in this service. Specify 'latest' to use the latest possible version. - */ - apiVersion?: apiVersion; - } - export type ClientConfiguration = ServiceConfigurationOptions & ClientApiVersions; - /** - * Contains interfaces for use with the Pinpoint client. - */ - export import Types = Pinpoint; -} -export = Pinpoint; diff --git a/workshops/monte-carlo-on-ec2-spot-fleet/src/web/node_modules/aws-sdk/clients/pinpoint.js b/workshops/monte-carlo-on-ec2-spot-fleet/src/web/node_modules/aws-sdk/clients/pinpoint.js deleted file mode 100644 index 2996368a..00000000 --- a/workshops/monte-carlo-on-ec2-spot-fleet/src/web/node_modules/aws-sdk/clients/pinpoint.js +++ /dev/null @@ -1,17 +0,0 @@ -require('../lib/node_loader'); -var AWS = require('../lib/core'); -var Service = AWS.Service; -var apiLoader = AWS.apiLoader; - -apiLoader.services['pinpoint'] = {}; -AWS.Pinpoint = Service.defineService('pinpoint', ['2016-12-01']); -Object.defineProperty(apiLoader.services['pinpoint'], '2016-12-01', { - get: function get() { - var model = require('../apis/pinpoint-2016-12-01.min.json'); - return model; - }, - enumerable: true, - configurable: true -}); - -module.exports = AWS.Pinpoint; diff --git a/workshops/monte-carlo-on-ec2-spot-fleet/src/web/node_modules/aws-sdk/clients/polly.d.ts b/workshops/monte-carlo-on-ec2-spot-fleet/src/web/node_modules/aws-sdk/clients/polly.d.ts deleted file mode 100644 index e11b76f1..00000000 --- a/workshops/monte-carlo-on-ec2-spot-fleet/src/web/node_modules/aws-sdk/clients/polly.d.ts +++ /dev/null @@ -1,295 +0,0 @@ -import {Request} from '../lib/request'; -import {Response} from '../lib/response'; -import {AWSError} from '../lib/error'; -import {PollyCustomizations} from '../lib/services/polly'; -import {ServiceConfigurationOptions} from '../lib/service'; -import {ConfigBase as Config} from '../lib/config'; -import {Presigner as presigner} from '../lib/polly/presigner'; -import {Readable} from 'stream'; -interface Blob {} -declare class Polly extends PollyCustomizations { - /** - * Constructs a service object. This object has one method for each API operation. - */ - constructor(options?: Polly.Types.ClientConfiguration) - config: Config & Polly.Types.ClientConfiguration; - /** - * Deletes the specified pronunciation lexicon stored in an AWS Region. A lexicon which has been deleted is not available for speech synthesis, nor is it possible to retrieve it using either the GetLexicon or ListLexicon APIs. For more information, see Managing Lexicons. - */ - deleteLexicon(params: Polly.Types.DeleteLexiconInput, callback?: (err: AWSError, data: Polly.Types.DeleteLexiconOutput) => void): Request; - /** - * Deletes the specified pronunciation lexicon stored in an AWS Region. A lexicon which has been deleted is not available for speech synthesis, nor is it possible to retrieve it using either the GetLexicon or ListLexicon APIs. For more information, see Managing Lexicons. - */ - deleteLexicon(callback?: (err: AWSError, data: Polly.Types.DeleteLexiconOutput) => void): Request; - /** - * Returns the list of voices that are available for use when requesting speech synthesis. Each voice speaks a specified language, is either male or female, and is identified by an ID, which is the ASCII version of the voice name. When synthesizing speech ( SynthesizeSpeech ), you provide the voice ID for the voice you want from the list of voices returned by DescribeVoices. For example, you want your news reader application to read news in a specific language, but giving a user the option to choose the voice. Using the DescribeVoices operation you can provide the user with a list of available voices to select from. You can optionally specify a language code to filter the available voices. For example, if you specify en-US, the operation returns a list of all available US English voices. This operation requires permissions to perform the polly:DescribeVoices action. - */ - describeVoices(params: Polly.Types.DescribeVoicesInput, callback?: (err: AWSError, data: Polly.Types.DescribeVoicesOutput) => void): Request; - /** - * Returns the list of voices that are available for use when requesting speech synthesis. Each voice speaks a specified language, is either male or female, and is identified by an ID, which is the ASCII version of the voice name. When synthesizing speech ( SynthesizeSpeech ), you provide the voice ID for the voice you want from the list of voices returned by DescribeVoices. For example, you want your news reader application to read news in a specific language, but giving a user the option to choose the voice. Using the DescribeVoices operation you can provide the user with a list of available voices to select from. You can optionally specify a language code to filter the available voices. For example, if you specify en-US, the operation returns a list of all available US English voices. This operation requires permissions to perform the polly:DescribeVoices action. - */ - describeVoices(callback?: (err: AWSError, data: Polly.Types.DescribeVoicesOutput) => void): Request; - /** - * Returns the content of the specified pronunciation lexicon stored in an AWS Region. For more information, see Managing Lexicons. - */ - getLexicon(params: Polly.Types.GetLexiconInput, callback?: (err: AWSError, data: Polly.Types.GetLexiconOutput) => void): Request; - /** - * Returns the content of the specified pronunciation lexicon stored in an AWS Region. For more information, see Managing Lexicons. - */ - getLexicon(callback?: (err: AWSError, data: Polly.Types.GetLexiconOutput) => void): Request; - /** - * Returns a list of pronunciation lexicons stored in an AWS Region. For more information, see Managing Lexicons. - */ - listLexicons(params: Polly.Types.ListLexiconsInput, callback?: (err: AWSError, data: Polly.Types.ListLexiconsOutput) => void): Request; - /** - * Returns a list of pronunciation lexicons stored in an AWS Region. For more information, see Managing Lexicons. - */ - listLexicons(callback?: (err: AWSError, data: Polly.Types.ListLexiconsOutput) => void): Request; - /** - * Stores a pronunciation lexicon in an AWS Region. If a lexicon with the same name already exists in the region, it is overwritten by the new lexicon. Lexicon operations have eventual consistency, therefore, it might take some time before the lexicon is available to the SynthesizeSpeech operation. For more information, see Managing Lexicons. - */ - putLexicon(params: Polly.Types.PutLexiconInput, callback?: (err: AWSError, data: Polly.Types.PutLexiconOutput) => void): Request; - /** - * Stores a pronunciation lexicon in an AWS Region. If a lexicon with the same name already exists in the region, it is overwritten by the new lexicon. Lexicon operations have eventual consistency, therefore, it might take some time before the lexicon is available to the SynthesizeSpeech operation. For more information, see Managing Lexicons. - */ - putLexicon(callback?: (err: AWSError, data: Polly.Types.PutLexiconOutput) => void): Request; - /** - * Synthesizes UTF-8 input, plain text or SSML, to a stream of bytes. SSML input must be valid, well-formed SSML. Some alphabets might not be available with all the voices (for example, Cyrillic might not be read at all by English voices) unless phoneme mapping is used. For more information, see How it Works. - */ - synthesizeSpeech(params: Polly.Types.SynthesizeSpeechInput, callback?: (err: AWSError, data: Polly.Types.SynthesizeSpeechOutput) => void): Request; - /** - * Synthesizes UTF-8 input, plain text or SSML, to a stream of bytes. SSML input must be valid, well-formed SSML. Some alphabets might not be available with all the voices (for example, Cyrillic might not be read at all by English voices) unless phoneme mapping is used. For more information, see How it Works. - */ - synthesizeSpeech(callback?: (err: AWSError, data: Polly.Types.SynthesizeSpeechOutput) => void): Request; -} -declare namespace Polly { - export import Presigner = presigner; -} -declare namespace Polly { - export type Alphabet = string; - export type AudioStream = Buffer|Uint8Array|Blob|string|Readable; - export type ContentType = string; - export interface DeleteLexiconInput { - /** - * The name of the lexicon to delete. Must be an existing lexicon in the region. - */ - Name: LexiconName; - } - export interface DeleteLexiconOutput { - } - export interface DescribeVoicesInput { - /** - * The language identification tag (ISO 639 code for the language name-ISO 3166 country code) for filtering the list of voices returned. If you don't specify this optional parameter, all available voices are returned. - */ - LanguageCode?: LanguageCode; - /** - * An opaque pagination token returned from the previous DescribeVoices operation. If present, this indicates where to continue the listing. - */ - NextToken?: NextToken; - } - export interface DescribeVoicesOutput { - /** - * A list of voices with their properties. - */ - Voices?: VoiceList; - /** - * The pagination token to use in the next request to continue the listing of voices. NextToken is returned only if the response is truncated. - */ - NextToken?: NextToken; - } - export type ErrorMessage = string; - export type Gender = "Female"|"Male"|string; - export interface GetLexiconInput { - /** - * Name of the lexicon. - */ - Name: LexiconName; - } - export interface GetLexiconOutput { - /** - * Lexicon object that provides name and the string content of the lexicon. - */ - Lexicon?: Lexicon; - /** - * Metadata of the lexicon, including phonetic alphabetic used, language code, lexicon ARN, number of lexemes defined in the lexicon, and size of lexicon in bytes. - */ - LexiconAttributes?: LexiconAttributes; - } - export type LanguageCode = "cy-GB"|"da-DK"|"de-DE"|"en-AU"|"en-GB"|"en-GB-WLS"|"en-IN"|"en-US"|"es-ES"|"es-US"|"fr-CA"|"fr-FR"|"is-IS"|"it-IT"|"ja-JP"|"nb-NO"|"nl-NL"|"pl-PL"|"pt-BR"|"pt-PT"|"ro-RO"|"ru-RU"|"sv-SE"|"tr-TR"|string; - export type LanguageName = string; - export type LastModified = Date; - export type LexemesCount = number; - export interface Lexicon { - /** - * Lexicon content in string format. The content of a lexicon must be in PLS format. - */ - Content?: LexiconContent; - /** - * Name of the lexicon. - */ - Name?: LexiconName; - } - export type LexiconArn = string; - export interface LexiconAttributes { - /** - * Phonetic alphabet used in the lexicon. Valid values are ipa and x-sampa. - */ - Alphabet?: Alphabet; - /** - * Language code that the lexicon applies to. A lexicon with a language code such as "en" would be applied to all English languages (en-GB, en-US, en-AUS, en-WLS, and so on. - */ - LanguageCode?: LanguageCode; - /** - * Date lexicon was last modified (a timestamp value). - */ - LastModified?: LastModified; - /** - * Amazon Resource Name (ARN) of the lexicon. - */ - LexiconArn?: LexiconArn; - /** - * Number of lexemes in the lexicon. - */ - LexemesCount?: LexemesCount; - /** - * Total size of the lexicon, in characters. - */ - Size?: Size; - } - export type LexiconContent = string; - export interface LexiconDescription { - /** - * Name of the lexicon. - */ - Name?: LexiconName; - /** - * Provides lexicon metadata. - */ - Attributes?: LexiconAttributes; - } - export type LexiconDescriptionList = LexiconDescription[]; - export type LexiconName = string; - export type LexiconNameList = LexiconName[]; - export interface ListLexiconsInput { - /** - * An opaque pagination token returned from previous ListLexicons operation. If present, indicates where to continue the list of lexicons. - */ - NextToken?: NextToken; - } - export interface ListLexiconsOutput { - /** - * A list of lexicon names and attributes. - */ - Lexicons?: LexiconDescriptionList; - /** - * The pagination token to use in the next request to continue the listing of lexicons. NextToken is returned only if the response is truncated. - */ - NextToken?: NextToken; - } - export type NextToken = string; - export type OutputFormat = "json"|"mp3"|"ogg_vorbis"|"pcm"|string; - export interface PutLexiconInput { - /** - * Name of the lexicon. The name must follow the regular express format [0-9A-Za-z]{1,20}. That is, the name is a case-sensitive alphanumeric string up to 20 characters long. - */ - Name: LexiconName; - /** - * Content of the PLS lexicon as string data. - */ - Content: LexiconContent; - } - export interface PutLexiconOutput { - } - export type RequestCharacters = number; - export type SampleRate = string; - export type Size = number; - export type SpeechMarkType = "sentence"|"ssml"|"viseme"|"word"|string; - export type SpeechMarkTypeList = SpeechMarkType[]; - export interface SynthesizeSpeechInput { - /** - * List of one or more pronunciation lexicon names you want the service to apply during synthesis. Lexicons are applied only if the language of the lexicon is the same as the language of the voice. For information about storing lexicons, see PutLexicon. - */ - LexiconNames?: LexiconNameList; - /** - * The format in which the returned output will be encoded. For audio stream, this will be mp3, ogg_vorbis, or pcm. For speech marks, this will be json. - */ - OutputFormat: OutputFormat; - /** - * The audio frequency specified in Hz. The valid values for mp3 and ogg_vorbis are "8000", "16000", and "22050". The default value is "22050". Valid values for pcm are "8000" and "16000" The default value is "16000". - */ - SampleRate?: SampleRate; - /** - * The type of speech marks returned for the input text. - */ - SpeechMarkTypes?: SpeechMarkTypeList; - /** - * Input text to synthesize. If you specify ssml as the TextType, follow the SSML format for the input text. - */ - Text: Text; - /** - * Specifies whether the input text is plain text or SSML. The default value is plain text. For more information, see Using SSML. - */ - TextType?: TextType; - /** - * Voice ID to use for the synthesis. You can get a list of available voice IDs by calling the DescribeVoices operation. - */ - VoiceId: VoiceId; - } - export interface SynthesizeSpeechOutput { - /** - * Stream containing the synthesized speech. - */ - AudioStream?: AudioStream; - /** - * Specifies the type audio stream. This should reflect the OutputFormat parameter in your request. If you request mp3 as the OutputFormat, the ContentType returned is audio/mpeg. If you request ogg_vorbis as the OutputFormat, the ContentType returned is audio/ogg. If you request pcm as the OutputFormat, the ContentType returned is audio/pcm in a signed 16-bit, 1 channel (mono), little-endian format. If you request json as the OutputFormat, the ContentType returned is audio/json. - */ - ContentType?: ContentType; - /** - * Number of characters synthesized. - */ - RequestCharacters?: RequestCharacters; - } - export type Text = string; - export type TextType = "ssml"|"text"|string; - export interface Voice { - /** - * Gender of the voice. - */ - Gender?: Gender; - /** - * Amazon Polly assigned voice ID. This is the ID that you specify when calling the SynthesizeSpeech operation. - */ - Id?: VoiceId; - /** - * Language code of the voice. - */ - LanguageCode?: LanguageCode; - /** - * Human readable name of the language in English. - */ - LanguageName?: LanguageName; - /** - * Name of the voice (for example, Salli, Kendra, etc.). This provides a human readable voice name that you might display in your application. - */ - Name?: VoiceName; - } - export type VoiceId = "Geraint"|"Gwyneth"|"Mads"|"Naja"|"Hans"|"Marlene"|"Nicole"|"Russell"|"Amy"|"Brian"|"Emma"|"Raveena"|"Ivy"|"Joanna"|"Joey"|"Justin"|"Kendra"|"Kimberly"|"Matthew"|"Salli"|"Conchita"|"Enrique"|"Miguel"|"Penelope"|"Chantal"|"Celine"|"Mathieu"|"Dora"|"Karl"|"Carla"|"Giorgio"|"Mizuki"|"Liv"|"Lotte"|"Ruben"|"Ewa"|"Jacek"|"Jan"|"Maja"|"Ricardo"|"Vitoria"|"Cristiano"|"Ines"|"Carmen"|"Maxim"|"Tatyana"|"Astrid"|"Filiz"|"Vicki"|"Takumi"|string; - export type VoiceList = Voice[]; - export type VoiceName = string; - /** - * A string in YYYY-MM-DD format that represents the latest possible API version that can be used in this service. Specify 'latest' to use the latest possible version. - */ - export type apiVersion = "2016-06-10"|"latest"|string; - export interface ClientApiVersions { - /** - * A string in YYYY-MM-DD format that represents the latest possible API version that can be used in this service. Specify 'latest' to use the latest possible version. - */ - apiVersion?: apiVersion; - } - export type ClientConfiguration = ServiceConfigurationOptions & ClientApiVersions; - /** - * Contains interfaces for use with the Polly client. - */ - export import Types = Polly; -} -export = Polly; diff --git a/workshops/monte-carlo-on-ec2-spot-fleet/src/web/node_modules/aws-sdk/clients/polly.js b/workshops/monte-carlo-on-ec2-spot-fleet/src/web/node_modules/aws-sdk/clients/polly.js deleted file mode 100644 index 6bf4cf83..00000000 --- a/workshops/monte-carlo-on-ec2-spot-fleet/src/web/node_modules/aws-sdk/clients/polly.js +++ /dev/null @@ -1,19 +0,0 @@ -require('../lib/node_loader'); -var AWS = require('../lib/core'); -var Service = AWS.Service; -var apiLoader = AWS.apiLoader; - -apiLoader.services['polly'] = {}; -AWS.Polly = Service.defineService('polly', ['2016-06-10']); -require('../lib/services/polly'); -Object.defineProperty(apiLoader.services['polly'], '2016-06-10', { - get: function get() { - var model = require('../apis/polly-2016-06-10.min.json'); - model.paginators = require('../apis/polly-2016-06-10.paginators.json').pagination; - return model; - }, - enumerable: true, - configurable: true -}); - -module.exports = AWS.Polly; diff --git a/workshops/monte-carlo-on-ec2-spot-fleet/src/web/node_modules/aws-sdk/clients/rds.d.ts b/workshops/monte-carlo-on-ec2-spot-fleet/src/web/node_modules/aws-sdk/clients/rds.d.ts deleted file mode 100644 index 29c09eee..00000000 --- a/workshops/monte-carlo-on-ec2-spot-fleet/src/web/node_modules/aws-sdk/clients/rds.d.ts +++ /dev/null @@ -1,5137 +0,0 @@ -import {Request} from '../lib/request'; -import {Response} from '../lib/response'; -import {AWSError} from '../lib/error'; -import {Service} from '../lib/service'; -import {ServiceConfigurationOptions} from '../lib/service'; -import {ConfigBase as Config} from '../lib/config'; -import {Signer as signer} from '../lib/rds/signer'; -interface Blob {} -declare class RDS extends Service { - /** - * Constructs a service object. This object has one method for each API operation. - */ - constructor(options?: RDS.Types.ClientConfiguration) - config: Config & RDS.Types.ClientConfiguration; - /** - * Associates an Identity and Access Management (IAM) role from an Aurora DB cluster. For more information, see Authorizing Amazon Aurora to Access Other AWS Services On Your Behalf. - */ - addRoleToDBCluster(params: RDS.Types.AddRoleToDBClusterMessage, callback?: (err: AWSError, data: {}) => void): Request<{}, AWSError>; - /** - * Associates an Identity and Access Management (IAM) role from an Aurora DB cluster. For more information, see Authorizing Amazon Aurora to Access Other AWS Services On Your Behalf. - */ - addRoleToDBCluster(callback?: (err: AWSError, data: {}) => void): Request<{}, AWSError>; - /** - * Adds a source identifier to an existing RDS event notification subscription. - */ - addSourceIdentifierToSubscription(params: RDS.Types.AddSourceIdentifierToSubscriptionMessage, callback?: (err: AWSError, data: RDS.Types.AddSourceIdentifierToSubscriptionResult) => void): Request; - /** - * Adds a source identifier to an existing RDS event notification subscription. - */ - addSourceIdentifierToSubscription(callback?: (err: AWSError, data: RDS.Types.AddSourceIdentifierToSubscriptionResult) => void): Request; - /** - * Adds metadata tags to an Amazon RDS resource. These tags can also be used with cost allocation reporting to track cost associated with Amazon RDS resources, or used in a Condition statement in an IAM policy for Amazon RDS. For an overview on tagging Amazon RDS resources, see Tagging Amazon RDS Resources. - */ - addTagsToResource(params: RDS.Types.AddTagsToResourceMessage, callback?: (err: AWSError, data: {}) => void): Request<{}, AWSError>; - /** - * Adds metadata tags to an Amazon RDS resource. These tags can also be used with cost allocation reporting to track cost associated with Amazon RDS resources, or used in a Condition statement in an IAM policy for Amazon RDS. For an overview on tagging Amazon RDS resources, see Tagging Amazon RDS Resources. - */ - addTagsToResource(callback?: (err: AWSError, data: {}) => void): Request<{}, AWSError>; - /** - * Applies a pending maintenance action to a resource (for example, to a DB instance). - */ - applyPendingMaintenanceAction(params: RDS.Types.ApplyPendingMaintenanceActionMessage, callback?: (err: AWSError, data: RDS.Types.ApplyPendingMaintenanceActionResult) => void): Request; - /** - * Applies a pending maintenance action to a resource (for example, to a DB instance). - */ - applyPendingMaintenanceAction(callback?: (err: AWSError, data: RDS.Types.ApplyPendingMaintenanceActionResult) => void): Request; - /** - * Enables ingress to a DBSecurityGroup using one of two forms of authorization. First, EC2 or VPC security groups can be added to the DBSecurityGroup if the application using the database is running on EC2 or VPC instances. Second, IP ranges are available if the application accessing your database is running on the Internet. Required parameters for this API are one of CIDR range, EC2SecurityGroupId for VPC, or (EC2SecurityGroupOwnerId and either EC2SecurityGroupName or EC2SecurityGroupId for non-VPC). You cannot authorize ingress from an EC2 security group in one AWS Region to an Amazon RDS DB instance in another. You cannot authorize ingress from a VPC security group in one VPC to an Amazon RDS DB instance in another. For an overview of CIDR ranges, go to the Wikipedia Tutorial. - */ - authorizeDBSecurityGroupIngress(params: RDS.Types.AuthorizeDBSecurityGroupIngressMessage, callback?: (err: AWSError, data: RDS.Types.AuthorizeDBSecurityGroupIngressResult) => void): Request; - /** - * Enables ingress to a DBSecurityGroup using one of two forms of authorization. First, EC2 or VPC security groups can be added to the DBSecurityGroup if the application using the database is running on EC2 or VPC instances. Second, IP ranges are available if the application accessing your database is running on the Internet. Required parameters for this API are one of CIDR range, EC2SecurityGroupId for VPC, or (EC2SecurityGroupOwnerId and either EC2SecurityGroupName or EC2SecurityGroupId for non-VPC). You cannot authorize ingress from an EC2 security group in one AWS Region to an Amazon RDS DB instance in another. You cannot authorize ingress from a VPC security group in one VPC to an Amazon RDS DB instance in another. For an overview of CIDR ranges, go to the Wikipedia Tutorial. - */ - authorizeDBSecurityGroupIngress(callback?: (err: AWSError, data: RDS.Types.AuthorizeDBSecurityGroupIngressResult) => void): Request; - /** - * Copies the specified DB cluster parameter group. - */ - copyDBClusterParameterGroup(params: RDS.Types.CopyDBClusterParameterGroupMessage, callback?: (err: AWSError, data: RDS.Types.CopyDBClusterParameterGroupResult) => void): Request; - /** - * Copies the specified DB cluster parameter group. - */ - copyDBClusterParameterGroup(callback?: (err: AWSError, data: RDS.Types.CopyDBClusterParameterGroupResult) => void): Request; - /** - * Copies a snapshot of a DB cluster. To copy a DB cluster snapshot from a shared manual DB cluster snapshot, SourceDBClusterSnapshotIdentifier must be the Amazon Resource Name (ARN) of the shared DB cluster snapshot. You can copy an encrypted DB cluster snapshot from another AWS Region. In that case, the AWS Region where you call the CopyDBClusterSnapshot action is the destination AWS Region for the encrypted DB cluster snapshot to be copied to. To copy an encrypted DB cluster snapshot from another AWS Region, you must provide the following values: KmsKeyId - The AWS Key Management System (KMS) key identifier for the key to use to encrypt the copy of the DB cluster snapshot in the destination AWS Region. PreSignedUrl - A URL that contains a Signature Version 4 signed request for the CopyDBClusterSnapshot action to be called in the source AWS Region where the DB cluster snapshot will be copied from. The pre-signed URL must be a valid request for the CopyDBClusterSnapshot API action that can be executed in the source AWS Region that contains the encrypted DB cluster snapshot to be copied. The pre-signed URL request must contain the following parameter values: KmsKeyId - The KMS key identifier for the key to use to encrypt the copy of the DB cluster snapshot in the destination AWS Region. This is the same identifier for both the CopyDBClusterSnapshot action that is called in the destination AWS Region, and the action contained in the pre-signed URL. DestinationRegion - The name of the AWS Region that the DB cluster snapshot will be created in. SourceDBClusterSnapshotIdentifier - The DB cluster snapshot identifier for the encrypted DB cluster snapshot to be copied. This identifier must be in the Amazon Resource Name (ARN) format for the source AWS Region. For example, if you are copying an encrypted DB cluster snapshot from the us-west-2 region, then your SourceDBClusterSnapshotIdentifier looks like the following example: arn:aws:rds:us-west-2:123456789012:cluster-snapshot:aurora-cluster1-snapshot-20161115. To learn how to generate a Signature Version 4 signed request, see Authenticating Requests: Using Query Parameters (AWS Signature Version 4) and Signature Version 4 Signing Process. TargetDBClusterSnapshotIdentifier - The identifier for the new copy of the DB cluster snapshot in the destination AWS Region. SourceDBClusterSnapshotIdentifier - The DB cluster snapshot identifier for the encrypted DB cluster snapshot to be copied. This identifier must be in the ARN format for the source AWS Region and is the same value as the SourceDBClusterSnapshotIdentifier in the pre-signed URL. To cancel the copy operation once it is in progress, delete the target DB cluster snapshot identified by TargetDBClusterSnapshotIdentifier while that DB cluster snapshot is in "copying" status. For more information on copying encrypted DB cluster snapshots from one AWS Region to another, see Copying a DB Cluster Snapshot in the Same Account, Either in the Same Region or Across Regions in the Amazon RDS User Guide. For more information on Amazon Aurora, see Aurora on Amazon RDS in the Amazon RDS User Guide. - */ - copyDBClusterSnapshot(params: RDS.Types.CopyDBClusterSnapshotMessage, callback?: (err: AWSError, data: RDS.Types.CopyDBClusterSnapshotResult) => void): Request; - /** - * Copies a snapshot of a DB cluster. To copy a DB cluster snapshot from a shared manual DB cluster snapshot, SourceDBClusterSnapshotIdentifier must be the Amazon Resource Name (ARN) of the shared DB cluster snapshot. You can copy an encrypted DB cluster snapshot from another AWS Region. In that case, the AWS Region where you call the CopyDBClusterSnapshot action is the destination AWS Region for the encrypted DB cluster snapshot to be copied to. To copy an encrypted DB cluster snapshot from another AWS Region, you must provide the following values: KmsKeyId - The AWS Key Management System (KMS) key identifier for the key to use to encrypt the copy of the DB cluster snapshot in the destination AWS Region. PreSignedUrl - A URL that contains a Signature Version 4 signed request for the CopyDBClusterSnapshot action to be called in the source AWS Region where the DB cluster snapshot will be copied from. The pre-signed URL must be a valid request for the CopyDBClusterSnapshot API action that can be executed in the source AWS Region that contains the encrypted DB cluster snapshot to be copied. The pre-signed URL request must contain the following parameter values: KmsKeyId - The KMS key identifier for the key to use to encrypt the copy of the DB cluster snapshot in the destination AWS Region. This is the same identifier for both the CopyDBClusterSnapshot action that is called in the destination AWS Region, and the action contained in the pre-signed URL. DestinationRegion - The name of the AWS Region that the DB cluster snapshot will be created in. SourceDBClusterSnapshotIdentifier - The DB cluster snapshot identifier for the encrypted DB cluster snapshot to be copied. This identifier must be in the Amazon Resource Name (ARN) format for the source AWS Region. For example, if you are copying an encrypted DB cluster snapshot from the us-west-2 region, then your SourceDBClusterSnapshotIdentifier looks like the following example: arn:aws:rds:us-west-2:123456789012:cluster-snapshot:aurora-cluster1-snapshot-20161115. To learn how to generate a Signature Version 4 signed request, see Authenticating Requests: Using Query Parameters (AWS Signature Version 4) and Signature Version 4 Signing Process. TargetDBClusterSnapshotIdentifier - The identifier for the new copy of the DB cluster snapshot in the destination AWS Region. SourceDBClusterSnapshotIdentifier - The DB cluster snapshot identifier for the encrypted DB cluster snapshot to be copied. This identifier must be in the ARN format for the source AWS Region and is the same value as the SourceDBClusterSnapshotIdentifier in the pre-signed URL. To cancel the copy operation once it is in progress, delete the target DB cluster snapshot identified by TargetDBClusterSnapshotIdentifier while that DB cluster snapshot is in "copying" status. For more information on copying encrypted DB cluster snapshots from one AWS Region to another, see Copying a DB Cluster Snapshot in the Same Account, Either in the Same Region or Across Regions in the Amazon RDS User Guide. For more information on Amazon Aurora, see Aurora on Amazon RDS in the Amazon RDS User Guide. - */ - copyDBClusterSnapshot(callback?: (err: AWSError, data: RDS.Types.CopyDBClusterSnapshotResult) => void): Request; - /** - * Copies the specified DB parameter group. - */ - copyDBParameterGroup(params: RDS.Types.CopyDBParameterGroupMessage, callback?: (err: AWSError, data: RDS.Types.CopyDBParameterGroupResult) => void): Request; - /** - * Copies the specified DB parameter group. - */ - copyDBParameterGroup(callback?: (err: AWSError, data: RDS.Types.CopyDBParameterGroupResult) => void): Request; - /** - * Copies the specified DB snapshot. The source DB snapshot must be in the "available" state. You can copy a snapshot from one AWS Region to another. In that case, the AWS Region where you call the CopyDBSnapshot action is the destination AWS Region for the DB snapshot copy. You cannot copy an encrypted, shared DB snapshot from one AWS Region to another. For more information about copying snapshots, see Copying a DB Snapshot in the Amazon RDS User Guide. - */ - copyDBSnapshot(params: RDS.Types.CopyDBSnapshotMessage, callback?: (err: AWSError, data: RDS.Types.CopyDBSnapshotResult) => void): Request; - /** - * Copies the specified DB snapshot. The source DB snapshot must be in the "available" state. You can copy a snapshot from one AWS Region to another. In that case, the AWS Region where you call the CopyDBSnapshot action is the destination AWS Region for the DB snapshot copy. You cannot copy an encrypted, shared DB snapshot from one AWS Region to another. For more information about copying snapshots, see Copying a DB Snapshot in the Amazon RDS User Guide. - */ - copyDBSnapshot(callback?: (err: AWSError, data: RDS.Types.CopyDBSnapshotResult) => void): Request; - /** - * Copies the specified option group. - */ - copyOptionGroup(params: RDS.Types.CopyOptionGroupMessage, callback?: (err: AWSError, data: RDS.Types.CopyOptionGroupResult) => void): Request; - /** - * Copies the specified option group. - */ - copyOptionGroup(callback?: (err: AWSError, data: RDS.Types.CopyOptionGroupResult) => void): Request; - /** - * Creates a new Amazon Aurora DB cluster. You can use the ReplicationSourceIdentifier parameter to create the DB cluster as a Read Replica of another DB cluster or Amazon RDS MySQL DB instance. For cross-region replication where the DB cluster identified by ReplicationSourceIdentifier is encrypted, you must also specify the PreSignedUrl parameter. For more information on Amazon Aurora, see Aurora on Amazon RDS in the Amazon RDS User Guide. - */ - createDBCluster(params: RDS.Types.CreateDBClusterMessage, callback?: (err: AWSError, data: RDS.Types.CreateDBClusterResult) => void): Request; - /** - * Creates a new Amazon Aurora DB cluster. You can use the ReplicationSourceIdentifier parameter to create the DB cluster as a Read Replica of another DB cluster or Amazon RDS MySQL DB instance. For cross-region replication where the DB cluster identified by ReplicationSourceIdentifier is encrypted, you must also specify the PreSignedUrl parameter. For more information on Amazon Aurora, see Aurora on Amazon RDS in the Amazon RDS User Guide. - */ - createDBCluster(callback?: (err: AWSError, data: RDS.Types.CreateDBClusterResult) => void): Request; - /** - * Creates a new DB cluster parameter group. Parameters in a DB cluster parameter group apply to all of the instances in a DB cluster. A DB cluster parameter group is initially created with the default parameters for the database engine used by instances in the DB cluster. To provide custom values for any of the parameters, you must modify the group after creating it using ModifyDBClusterParameterGroup. Once you've created a DB cluster parameter group, you need to associate it with your DB cluster using ModifyDBCluster. When you associate a new DB cluster parameter group with a running DB cluster, you need to reboot the DB instances in the DB cluster without failover for the new DB cluster parameter group and associated settings to take effect. After you create a DB cluster parameter group, you should wait at least 5 minutes before creating your first DB cluster that uses that DB cluster parameter group as the default parameter group. This allows Amazon RDS to fully complete the create action before the DB cluster parameter group is used as the default for a new DB cluster. This is especially important for parameters that are critical when creating the default database for a DB cluster, such as the character set for the default database defined by the character_set_database parameter. You can use the Parameter Groups option of the Amazon RDS console or the DescribeDBClusterParameters command to verify that your DB cluster parameter group has been created or modified. For more information on Amazon Aurora, see Aurora on Amazon RDS in the Amazon RDS User Guide. - */ - createDBClusterParameterGroup(params: RDS.Types.CreateDBClusterParameterGroupMessage, callback?: (err: AWSError, data: RDS.Types.CreateDBClusterParameterGroupResult) => void): Request; - /** - * Creates a new DB cluster parameter group. Parameters in a DB cluster parameter group apply to all of the instances in a DB cluster. A DB cluster parameter group is initially created with the default parameters for the database engine used by instances in the DB cluster. To provide custom values for any of the parameters, you must modify the group after creating it using ModifyDBClusterParameterGroup. Once you've created a DB cluster parameter group, you need to associate it with your DB cluster using ModifyDBCluster. When you associate a new DB cluster parameter group with a running DB cluster, you need to reboot the DB instances in the DB cluster without failover for the new DB cluster parameter group and associated settings to take effect. After you create a DB cluster parameter group, you should wait at least 5 minutes before creating your first DB cluster that uses that DB cluster parameter group as the default parameter group. This allows Amazon RDS to fully complete the create action before the DB cluster parameter group is used as the default for a new DB cluster. This is especially important for parameters that are critical when creating the default database for a DB cluster, such as the character set for the default database defined by the character_set_database parameter. You can use the Parameter Groups option of the Amazon RDS console or the DescribeDBClusterParameters command to verify that your DB cluster parameter group has been created or modified. For more information on Amazon Aurora, see Aurora on Amazon RDS in the Amazon RDS User Guide. - */ - createDBClusterParameterGroup(callback?: (err: AWSError, data: RDS.Types.CreateDBClusterParameterGroupResult) => void): Request; - /** - * Creates a snapshot of a DB cluster. For more information on Amazon Aurora, see Aurora on Amazon RDS in the Amazon RDS User Guide. - */ - createDBClusterSnapshot(params: RDS.Types.CreateDBClusterSnapshotMessage, callback?: (err: AWSError, data: RDS.Types.CreateDBClusterSnapshotResult) => void): Request; - /** - * Creates a snapshot of a DB cluster. For more information on Amazon Aurora, see Aurora on Amazon RDS in the Amazon RDS User Guide. - */ - createDBClusterSnapshot(callback?: (err: AWSError, data: RDS.Types.CreateDBClusterSnapshotResult) => void): Request; - /** - * Creates a new DB instance. - */ - createDBInstance(params: RDS.Types.CreateDBInstanceMessage, callback?: (err: AWSError, data: RDS.Types.CreateDBInstanceResult) => void): Request; - /** - * Creates a new DB instance. - */ - createDBInstance(callback?: (err: AWSError, data: RDS.Types.CreateDBInstanceResult) => void): Request; - /** - * Creates a new DB instance that acts as a Read Replica for an existing source DB instance. You can create a Read Replica for a DB instance running MySQL, MariaDB, or PostgreSQL. Amazon Aurora does not support this action. You must call the CreateDBInstance action to create a DB instance for an Aurora DB cluster. All Read Replica DB instances are created as Single-AZ deployments with backups disabled. All other DB instance attributes (including DB security groups and DB parameter groups) are inherited from the source DB instance, except as specified below. The source DB instance must have backup retention enabled. For more information, see Working with PostgreSQL, MySQL, and MariaDB Read Replicas. - */ - createDBInstanceReadReplica(params: RDS.Types.CreateDBInstanceReadReplicaMessage, callback?: (err: AWSError, data: RDS.Types.CreateDBInstanceReadReplicaResult) => void): Request; - /** - * Creates a new DB instance that acts as a Read Replica for an existing source DB instance. You can create a Read Replica for a DB instance running MySQL, MariaDB, or PostgreSQL. Amazon Aurora does not support this action. You must call the CreateDBInstance action to create a DB instance for an Aurora DB cluster. All Read Replica DB instances are created as Single-AZ deployments with backups disabled. All other DB instance attributes (including DB security groups and DB parameter groups) are inherited from the source DB instance, except as specified below. The source DB instance must have backup retention enabled. For more information, see Working with PostgreSQL, MySQL, and MariaDB Read Replicas. - */ - createDBInstanceReadReplica(callback?: (err: AWSError, data: RDS.Types.CreateDBInstanceReadReplicaResult) => void): Request; - /** - * Creates a new DB parameter group. A DB parameter group is initially created with the default parameters for the database engine used by the DB instance. To provide custom values for any of the parameters, you must modify the group after creating it using ModifyDBParameterGroup. Once you've created a DB parameter group, you need to associate it with your DB instance using ModifyDBInstance. When you associate a new DB parameter group with a running DB instance, you need to reboot the DB instance without failover for the new DB parameter group and associated settings to take effect. After you create a DB parameter group, you should wait at least 5 minutes before creating your first DB instance that uses that DB parameter group as the default parameter group. This allows Amazon RDS to fully complete the create action before the parameter group is used as the default for a new DB instance. This is especially important for parameters that are critical when creating the default database for a DB instance, such as the character set for the default database defined by the character_set_database parameter. You can use the Parameter Groups option of the Amazon RDS console or the DescribeDBParameters command to verify that your DB parameter group has been created or modified. - */ - createDBParameterGroup(params: RDS.Types.CreateDBParameterGroupMessage, callback?: (err: AWSError, data: RDS.Types.CreateDBParameterGroupResult) => void): Request; - /** - * Creates a new DB parameter group. A DB parameter group is initially created with the default parameters for the database engine used by the DB instance. To provide custom values for any of the parameters, you must modify the group after creating it using ModifyDBParameterGroup. Once you've created a DB parameter group, you need to associate it with your DB instance using ModifyDBInstance. When you associate a new DB parameter group with a running DB instance, you need to reboot the DB instance without failover for the new DB parameter group and associated settings to take effect. After you create a DB parameter group, you should wait at least 5 minutes before creating your first DB instance that uses that DB parameter group as the default parameter group. This allows Amazon RDS to fully complete the create action before the parameter group is used as the default for a new DB instance. This is especially important for parameters that are critical when creating the default database for a DB instance, such as the character set for the default database defined by the character_set_database parameter. You can use the Parameter Groups option of the Amazon RDS console or the DescribeDBParameters command to verify that your DB parameter group has been created or modified. - */ - createDBParameterGroup(callback?: (err: AWSError, data: RDS.Types.CreateDBParameterGroupResult) => void): Request; - /** - * Creates a new DB security group. DB security groups control access to a DB instance. - */ - createDBSecurityGroup(params: RDS.Types.CreateDBSecurityGroupMessage, callback?: (err: AWSError, data: RDS.Types.CreateDBSecurityGroupResult) => void): Request; - /** - * Creates a new DB security group. DB security groups control access to a DB instance. - */ - createDBSecurityGroup(callback?: (err: AWSError, data: RDS.Types.CreateDBSecurityGroupResult) => void): Request; - /** - * Creates a DBSnapshot. The source DBInstance must be in "available" state. - */ - createDBSnapshot(params: RDS.Types.CreateDBSnapshotMessage, callback?: (err: AWSError, data: RDS.Types.CreateDBSnapshotResult) => void): Request; - /** - * Creates a DBSnapshot. The source DBInstance must be in "available" state. - */ - createDBSnapshot(callback?: (err: AWSError, data: RDS.Types.CreateDBSnapshotResult) => void): Request; - /** - * Creates a new DB subnet group. DB subnet groups must contain at least one subnet in at least two AZs in the AWS Region. - */ - createDBSubnetGroup(params: RDS.Types.CreateDBSubnetGroupMessage, callback?: (err: AWSError, data: RDS.Types.CreateDBSubnetGroupResult) => void): Request; - /** - * Creates a new DB subnet group. DB subnet groups must contain at least one subnet in at least two AZs in the AWS Region. - */ - createDBSubnetGroup(callback?: (err: AWSError, data: RDS.Types.CreateDBSubnetGroupResult) => void): Request; - /** - * Creates an RDS event notification subscription. This action requires a topic ARN (Amazon Resource Name) created by either the RDS console, the SNS console, or the SNS API. To obtain an ARN with SNS, you must create a topic in Amazon SNS and subscribe to the topic. The ARN is displayed in the SNS console. You can specify the type of source (SourceType) you want to be notified of, provide a list of RDS sources (SourceIds) that triggers the events, and provide a list of event categories (EventCategories) for events you want to be notified of. For example, you can specify SourceType = db-instance, SourceIds = mydbinstance1, mydbinstance2 and EventCategories = Availability, Backup. If you specify both the SourceType and SourceIds, such as SourceType = db-instance and SourceIdentifier = myDBInstance1, you will be notified of all the db-instance events for the specified source. If you specify a SourceType but do not specify a SourceIdentifier, you will receive notice of the events for that source type for all your RDS sources. If you do not specify either the SourceType nor the SourceIdentifier, you will be notified of events generated from all RDS sources belonging to your customer account. - */ - createEventSubscription(params: RDS.Types.CreateEventSubscriptionMessage, callback?: (err: AWSError, data: RDS.Types.CreateEventSubscriptionResult) => void): Request; - /** - * Creates an RDS event notification subscription. This action requires a topic ARN (Amazon Resource Name) created by either the RDS console, the SNS console, or the SNS API. To obtain an ARN with SNS, you must create a topic in Amazon SNS and subscribe to the topic. The ARN is displayed in the SNS console. You can specify the type of source (SourceType) you want to be notified of, provide a list of RDS sources (SourceIds) that triggers the events, and provide a list of event categories (EventCategories) for events you want to be notified of. For example, you can specify SourceType = db-instance, SourceIds = mydbinstance1, mydbinstance2 and EventCategories = Availability, Backup. If you specify both the SourceType and SourceIds, such as SourceType = db-instance and SourceIdentifier = myDBInstance1, you will be notified of all the db-instance events for the specified source. If you specify a SourceType but do not specify a SourceIdentifier, you will receive notice of the events for that source type for all your RDS sources. If you do not specify either the SourceType nor the SourceIdentifier, you will be notified of events generated from all RDS sources belonging to your customer account. - */ - createEventSubscription(callback?: (err: AWSError, data: RDS.Types.CreateEventSubscriptionResult) => void): Request; - /** - * Creates a new option group. You can create up to 20 option groups. - */ - createOptionGroup(params: RDS.Types.CreateOptionGroupMessage, callback?: (err: AWSError, data: RDS.Types.CreateOptionGroupResult) => void): Request; - /** - * Creates a new option group. You can create up to 20 option groups. - */ - createOptionGroup(callback?: (err: AWSError, data: RDS.Types.CreateOptionGroupResult) => void): Request; - /** - * The DeleteDBCluster action deletes a previously provisioned DB cluster. When you delete a DB cluster, all automated backups for that DB cluster are deleted and cannot be recovered. Manual DB cluster snapshots of the specified DB cluster are not deleted. For more information on Amazon Aurora, see Aurora on Amazon RDS in the Amazon RDS User Guide. - */ - deleteDBCluster(params: RDS.Types.DeleteDBClusterMessage, callback?: (err: AWSError, data: RDS.Types.DeleteDBClusterResult) => void): Request; - /** - * The DeleteDBCluster action deletes a previously provisioned DB cluster. When you delete a DB cluster, all automated backups for that DB cluster are deleted and cannot be recovered. Manual DB cluster snapshots of the specified DB cluster are not deleted. For more information on Amazon Aurora, see Aurora on Amazon RDS in the Amazon RDS User Guide. - */ - deleteDBCluster(callback?: (err: AWSError, data: RDS.Types.DeleteDBClusterResult) => void): Request; - /** - * Deletes a specified DB cluster parameter group. The DB cluster parameter group to be deleted cannot be associated with any DB clusters. For more information on Amazon Aurora, see Aurora on Amazon RDS in the Amazon RDS User Guide. - */ - deleteDBClusterParameterGroup(params: RDS.Types.DeleteDBClusterParameterGroupMessage, callback?: (err: AWSError, data: {}) => void): Request<{}, AWSError>; - /** - * Deletes a specified DB cluster parameter group. The DB cluster parameter group to be deleted cannot be associated with any DB clusters. For more information on Amazon Aurora, see Aurora on Amazon RDS in the Amazon RDS User Guide. - */ - deleteDBClusterParameterGroup(callback?: (err: AWSError, data: {}) => void): Request<{}, AWSError>; - /** - * Deletes a DB cluster snapshot. If the snapshot is being copied, the copy operation is terminated. The DB cluster snapshot must be in the available state to be deleted. For more information on Amazon Aurora, see Aurora on Amazon RDS in the Amazon RDS User Guide. - */ - deleteDBClusterSnapshot(params: RDS.Types.DeleteDBClusterSnapshotMessage, callback?: (err: AWSError, data: RDS.Types.DeleteDBClusterSnapshotResult) => void): Request; - /** - * Deletes a DB cluster snapshot. If the snapshot is being copied, the copy operation is terminated. The DB cluster snapshot must be in the available state to be deleted. For more information on Amazon Aurora, see Aurora on Amazon RDS in the Amazon RDS User Guide. - */ - deleteDBClusterSnapshot(callback?: (err: AWSError, data: RDS.Types.DeleteDBClusterSnapshotResult) => void): Request; - /** - * The DeleteDBInstance action deletes a previously provisioned DB instance. When you delete a DB instance, all automated backups for that instance are deleted and cannot be recovered. Manual DB snapshots of the DB instance to be deleted by DeleteDBInstance are not deleted. If you request a final DB snapshot the status of the Amazon RDS DB instance is deleting until the DB snapshot is created. The API action DescribeDBInstance is used to monitor the status of this operation. The action cannot be canceled or reverted once submitted. Note that when a DB instance is in a failure state and has a status of failed, incompatible-restore, or incompatible-network, you can only delete it when the SkipFinalSnapshot parameter is set to true. If the specified DB instance is part of an Amazon Aurora DB cluster, you cannot delete the DB instance if both of the following conditions are true: The DB cluster is a Read Replica of another Amazon Aurora DB cluster. The DB instance is the only instance in the DB cluster. To delete a DB instance in this case, first call the PromoteReadReplicaDBCluster API action to promote the DB cluster so it's no longer a Read Replica. After the promotion completes, then call the DeleteDBInstance API action to delete the final instance in the DB cluster. - */ - deleteDBInstance(params: RDS.Types.DeleteDBInstanceMessage, callback?: (err: AWSError, data: RDS.Types.DeleteDBInstanceResult) => void): Request; - /** - * The DeleteDBInstance action deletes a previously provisioned DB instance. When you delete a DB instance, all automated backups for that instance are deleted and cannot be recovered. Manual DB snapshots of the DB instance to be deleted by DeleteDBInstance are not deleted. If you request a final DB snapshot the status of the Amazon RDS DB instance is deleting until the DB snapshot is created. The API action DescribeDBInstance is used to monitor the status of this operation. The action cannot be canceled or reverted once submitted. Note that when a DB instance is in a failure state and has a status of failed, incompatible-restore, or incompatible-network, you can only delete it when the SkipFinalSnapshot parameter is set to true. If the specified DB instance is part of an Amazon Aurora DB cluster, you cannot delete the DB instance if both of the following conditions are true: The DB cluster is a Read Replica of another Amazon Aurora DB cluster. The DB instance is the only instance in the DB cluster. To delete a DB instance in this case, first call the PromoteReadReplicaDBCluster API action to promote the DB cluster so it's no longer a Read Replica. After the promotion completes, then call the DeleteDBInstance API action to delete the final instance in the DB cluster. - */ - deleteDBInstance(callback?: (err: AWSError, data: RDS.Types.DeleteDBInstanceResult) => void): Request; - /** - * Deletes a specified DBParameterGroup. The DBParameterGroup to be deleted cannot be associated with any DB instances. - */ - deleteDBParameterGroup(params: RDS.Types.DeleteDBParameterGroupMessage, callback?: (err: AWSError, data: {}) => void): Request<{}, AWSError>; - /** - * Deletes a specified DBParameterGroup. The DBParameterGroup to be deleted cannot be associated with any DB instances. - */ - deleteDBParameterGroup(callback?: (err: AWSError, data: {}) => void): Request<{}, AWSError>; - /** - * Deletes a DB security group. The specified DB security group must not be associated with any DB instances. - */ - deleteDBSecurityGroup(params: RDS.Types.DeleteDBSecurityGroupMessage, callback?: (err: AWSError, data: {}) => void): Request<{}, AWSError>; - /** - * Deletes a DB security group. The specified DB security group must not be associated with any DB instances. - */ - deleteDBSecurityGroup(callback?: (err: AWSError, data: {}) => void): Request<{}, AWSError>; - /** - * Deletes a DBSnapshot. If the snapshot is being copied, the copy operation is terminated. The DBSnapshot must be in the available state to be deleted. - */ - deleteDBSnapshot(params: RDS.Types.DeleteDBSnapshotMessage, callback?: (err: AWSError, data: RDS.Types.DeleteDBSnapshotResult) => void): Request; - /** - * Deletes a DBSnapshot. If the snapshot is being copied, the copy operation is terminated. The DBSnapshot must be in the available state to be deleted. - */ - deleteDBSnapshot(callback?: (err: AWSError, data: RDS.Types.DeleteDBSnapshotResult) => void): Request; - /** - * Deletes a DB subnet group. The specified database subnet group must not be associated with any DB instances. - */ - deleteDBSubnetGroup(params: RDS.Types.DeleteDBSubnetGroupMessage, callback?: (err: AWSError, data: {}) => void): Request<{}, AWSError>; - /** - * Deletes a DB subnet group. The specified database subnet group must not be associated with any DB instances. - */ - deleteDBSubnetGroup(callback?: (err: AWSError, data: {}) => void): Request<{}, AWSError>; - /** - * Deletes an RDS event notification subscription. - */ - deleteEventSubscription(params: RDS.Types.DeleteEventSubscriptionMessage, callback?: (err: AWSError, data: RDS.Types.DeleteEventSubscriptionResult) => void): Request; - /** - * Deletes an RDS event notification subscription. - */ - deleteEventSubscription(callback?: (err: AWSError, data: RDS.Types.DeleteEventSubscriptionResult) => void): Request; - /** - * Deletes an existing option group. - */ - deleteOptionGroup(params: RDS.Types.DeleteOptionGroupMessage, callback?: (err: AWSError, data: {}) => void): Request<{}, AWSError>; - /** - * Deletes an existing option group. - */ - deleteOptionGroup(callback?: (err: AWSError, data: {}) => void): Request<{}, AWSError>; - /** - * Lists all of the attributes for a customer account. The attributes include Amazon RDS quotas for the account, such as the number of DB instances allowed. The description for a quota includes the quota name, current usage toward that quota, and the quota's maximum value. This command does not take any parameters. - */ - describeAccountAttributes(params: RDS.Types.DescribeAccountAttributesMessage, callback?: (err: AWSError, data: RDS.Types.AccountAttributesMessage) => void): Request; - /** - * Lists all of the attributes for a customer account. The attributes include Amazon RDS quotas for the account, such as the number of DB instances allowed. The description for a quota includes the quota name, current usage toward that quota, and the quota's maximum value. This command does not take any parameters. - */ - describeAccountAttributes(callback?: (err: AWSError, data: RDS.Types.AccountAttributesMessage) => void): Request; - /** - * Lists the set of CA certificates provided by Amazon RDS for this AWS account. - */ - describeCertificates(params: RDS.Types.DescribeCertificatesMessage, callback?: (err: AWSError, data: RDS.Types.CertificateMessage) => void): Request; - /** - * Lists the set of CA certificates provided by Amazon RDS for this AWS account. - */ - describeCertificates(callback?: (err: AWSError, data: RDS.Types.CertificateMessage) => void): Request; - /** - * Returns a list of DBClusterParameterGroup descriptions. If a DBClusterParameterGroupName parameter is specified, the list will contain only the description of the specified DB cluster parameter group. For more information on Amazon Aurora, see Aurora on Amazon RDS in the Amazon RDS User Guide. - */ - describeDBClusterParameterGroups(params: RDS.Types.DescribeDBClusterParameterGroupsMessage, callback?: (err: AWSError, data: RDS.Types.DBClusterParameterGroupsMessage) => void): Request; - /** - * Returns a list of DBClusterParameterGroup descriptions. If a DBClusterParameterGroupName parameter is specified, the list will contain only the description of the specified DB cluster parameter group. For more information on Amazon Aurora, see Aurora on Amazon RDS in the Amazon RDS User Guide. - */ - describeDBClusterParameterGroups(callback?: (err: AWSError, data: RDS.Types.DBClusterParameterGroupsMessage) => void): Request; - /** - * Returns the detailed parameter list for a particular DB cluster parameter group. For more information on Amazon Aurora, see Aurora on Amazon RDS in the Amazon RDS User Guide. - */ - describeDBClusterParameters(params: RDS.Types.DescribeDBClusterParametersMessage, callback?: (err: AWSError, data: RDS.Types.DBClusterParameterGroupDetails) => void): Request; - /** - * Returns the detailed parameter list for a particular DB cluster parameter group. For more information on Amazon Aurora, see Aurora on Amazon RDS in the Amazon RDS User Guide. - */ - describeDBClusterParameters(callback?: (err: AWSError, data: RDS.Types.DBClusterParameterGroupDetails) => void): Request; - /** - * Returns a list of DB cluster snapshot attribute names and values for a manual DB cluster snapshot. When sharing snapshots with other AWS accounts, DescribeDBClusterSnapshotAttributes returns the restore attribute and a list of IDs for the AWS accounts that are authorized to copy or restore the manual DB cluster snapshot. If all is included in the list of values for the restore attribute, then the manual DB cluster snapshot is public and can be copied or restored by all AWS accounts. To add or remove access for an AWS account to copy or restore a manual DB cluster snapshot, or to make the manual DB cluster snapshot public or private, use the ModifyDBClusterSnapshotAttribute API action. - */ - describeDBClusterSnapshotAttributes(params: RDS.Types.DescribeDBClusterSnapshotAttributesMessage, callback?: (err: AWSError, data: RDS.Types.DescribeDBClusterSnapshotAttributesResult) => void): Request; - /** - * Returns a list of DB cluster snapshot attribute names and values for a manual DB cluster snapshot. When sharing snapshots with other AWS accounts, DescribeDBClusterSnapshotAttributes returns the restore attribute and a list of IDs for the AWS accounts that are authorized to copy or restore the manual DB cluster snapshot. If all is included in the list of values for the restore attribute, then the manual DB cluster snapshot is public and can be copied or restored by all AWS accounts. To add or remove access for an AWS account to copy or restore a manual DB cluster snapshot, or to make the manual DB cluster snapshot public or private, use the ModifyDBClusterSnapshotAttribute API action. - */ - describeDBClusterSnapshotAttributes(callback?: (err: AWSError, data: RDS.Types.DescribeDBClusterSnapshotAttributesResult) => void): Request; - /** - * Returns information about DB cluster snapshots. This API action supports pagination. For more information on Amazon Aurora, see Aurora on Amazon RDS in the Amazon RDS User Guide. - */ - describeDBClusterSnapshots(params: RDS.Types.DescribeDBClusterSnapshotsMessage, callback?: (err: AWSError, data: RDS.Types.DBClusterSnapshotMessage) => void): Request; - /** - * Returns information about DB cluster snapshots. This API action supports pagination. For more information on Amazon Aurora, see Aurora on Amazon RDS in the Amazon RDS User Guide. - */ - describeDBClusterSnapshots(callback?: (err: AWSError, data: RDS.Types.DBClusterSnapshotMessage) => void): Request; - /** - * Returns information about provisioned Aurora DB clusters. This API supports pagination. For more information on Amazon Aurora, see Aurora on Amazon RDS in the Amazon RDS User Guide. - */ - describeDBClusters(params: RDS.Types.DescribeDBClustersMessage, callback?: (err: AWSError, data: RDS.Types.DBClusterMessage) => void): Request; - /** - * Returns information about provisioned Aurora DB clusters. This API supports pagination. For more information on Amazon Aurora, see Aurora on Amazon RDS in the Amazon RDS User Guide. - */ - describeDBClusters(callback?: (err: AWSError, data: RDS.Types.DBClusterMessage) => void): Request; - /** - * Returns a list of the available DB engines. - */ - describeDBEngineVersions(params: RDS.Types.DescribeDBEngineVersionsMessage, callback?: (err: AWSError, data: RDS.Types.DBEngineVersionMessage) => void): Request; - /** - * Returns a list of the available DB engines. - */ - describeDBEngineVersions(callback?: (err: AWSError, data: RDS.Types.DBEngineVersionMessage) => void): Request; - /** - * Returns information about provisioned RDS instances. This API supports pagination. - */ - describeDBInstances(params: RDS.Types.DescribeDBInstancesMessage, callback?: (err: AWSError, data: RDS.Types.DBInstanceMessage) => void): Request; - /** - * Returns information about provisioned RDS instances. This API supports pagination. - */ - describeDBInstances(callback?: (err: AWSError, data: RDS.Types.DBInstanceMessage) => void): Request; - /** - * Returns a list of DB log files for the DB instance. - */ - describeDBLogFiles(params: RDS.Types.DescribeDBLogFilesMessage, callback?: (err: AWSError, data: RDS.Types.DescribeDBLogFilesResponse) => void): Request; - /** - * Returns a list of DB log files for the DB instance. - */ - describeDBLogFiles(callback?: (err: AWSError, data: RDS.Types.DescribeDBLogFilesResponse) => void): Request; - /** - * Returns a list of DBParameterGroup descriptions. If a DBParameterGroupName is specified, the list will contain only the description of the specified DB parameter group. - */ - describeDBParameterGroups(params: RDS.Types.DescribeDBParameterGroupsMessage, callback?: (err: AWSError, data: RDS.Types.DBParameterGroupsMessage) => void): Request; - /** - * Returns a list of DBParameterGroup descriptions. If a DBParameterGroupName is specified, the list will contain only the description of the specified DB parameter group. - */ - describeDBParameterGroups(callback?: (err: AWSError, data: RDS.Types.DBParameterGroupsMessage) => void): Request; - /** - * Returns the detailed parameter list for a particular DB parameter group. - */ - describeDBParameters(params: RDS.Types.DescribeDBParametersMessage, callback?: (err: AWSError, data: RDS.Types.DBParameterGroupDetails) => void): Request; - /** - * Returns the detailed parameter list for a particular DB parameter group. - */ - describeDBParameters(callback?: (err: AWSError, data: RDS.Types.DBParameterGroupDetails) => void): Request; - /** - * Returns a list of DBSecurityGroup descriptions. If a DBSecurityGroupName is specified, the list will contain only the descriptions of the specified DB security group. - */ - describeDBSecurityGroups(params: RDS.Types.DescribeDBSecurityGroupsMessage, callback?: (err: AWSError, data: RDS.Types.DBSecurityGroupMessage) => void): Request; - /** - * Returns a list of DBSecurityGroup descriptions. If a DBSecurityGroupName is specified, the list will contain only the descriptions of the specified DB security group. - */ - describeDBSecurityGroups(callback?: (err: AWSError, data: RDS.Types.DBSecurityGroupMessage) => void): Request; - /** - * Returns a list of DB snapshot attribute names and values for a manual DB snapshot. When sharing snapshots with other AWS accounts, DescribeDBSnapshotAttributes returns the restore attribute and a list of IDs for the AWS accounts that are authorized to copy or restore the manual DB snapshot. If all is included in the list of values for the restore attribute, then the manual DB snapshot is public and can be copied or restored by all AWS accounts. To add or remove access for an AWS account to copy or restore a manual DB snapshot, or to make the manual DB snapshot public or private, use the ModifyDBSnapshotAttribute API action. - */ - describeDBSnapshotAttributes(params: RDS.Types.DescribeDBSnapshotAttributesMessage, callback?: (err: AWSError, data: RDS.Types.DescribeDBSnapshotAttributesResult) => void): Request; - /** - * Returns a list of DB snapshot attribute names and values for a manual DB snapshot. When sharing snapshots with other AWS accounts, DescribeDBSnapshotAttributes returns the restore attribute and a list of IDs for the AWS accounts that are authorized to copy or restore the manual DB snapshot. If all is included in the list of values for the restore attribute, then the manual DB snapshot is public and can be copied or restored by all AWS accounts. To add or remove access for an AWS account to copy or restore a manual DB snapshot, or to make the manual DB snapshot public or private, use the ModifyDBSnapshotAttribute API action. - */ - describeDBSnapshotAttributes(callback?: (err: AWSError, data: RDS.Types.DescribeDBSnapshotAttributesResult) => void): Request; - /** - * Returns information about DB snapshots. This API action supports pagination. - */ - describeDBSnapshots(params: RDS.Types.DescribeDBSnapshotsMessage, callback?: (err: AWSError, data: RDS.Types.DBSnapshotMessage) => void): Request; - /** - * Returns information about DB snapshots. This API action supports pagination. - */ - describeDBSnapshots(callback?: (err: AWSError, data: RDS.Types.DBSnapshotMessage) => void): Request; - /** - * Returns a list of DBSubnetGroup descriptions. If a DBSubnetGroupName is specified, the list will contain only the descriptions of the specified DBSubnetGroup. For an overview of CIDR ranges, go to the Wikipedia Tutorial. - */ - describeDBSubnetGroups(params: RDS.Types.DescribeDBSubnetGroupsMessage, callback?: (err: AWSError, data: RDS.Types.DBSubnetGroupMessage) => void): Request; - /** - * Returns a list of DBSubnetGroup descriptions. If a DBSubnetGroupName is specified, the list will contain only the descriptions of the specified DBSubnetGroup. For an overview of CIDR ranges, go to the Wikipedia Tutorial. - */ - describeDBSubnetGroups(callback?: (err: AWSError, data: RDS.Types.DBSubnetGroupMessage) => void): Request; - /** - * Returns the default engine and system parameter information for the cluster database engine. For more information on Amazon Aurora, see Aurora on Amazon RDS in the Amazon RDS User Guide. - */ - describeEngineDefaultClusterParameters(params: RDS.Types.DescribeEngineDefaultClusterParametersMessage, callback?: (err: AWSError, data: RDS.Types.DescribeEngineDefaultClusterParametersResult) => void): Request; - /** - * Returns the default engine and system parameter information for the cluster database engine. For more information on Amazon Aurora, see Aurora on Amazon RDS in the Amazon RDS User Guide. - */ - describeEngineDefaultClusterParameters(callback?: (err: AWSError, data: RDS.Types.DescribeEngineDefaultClusterParametersResult) => void): Request; - /** - * Returns the default engine and system parameter information for the specified database engine. - */ - describeEngineDefaultParameters(params: RDS.Types.DescribeEngineDefaultParametersMessage, callback?: (err: AWSError, data: RDS.Types.DescribeEngineDefaultParametersResult) => void): Request; - /** - * Returns the default engine and system parameter information for the specified database engine. - */ - describeEngineDefaultParameters(callback?: (err: AWSError, data: RDS.Types.DescribeEngineDefaultParametersResult) => void): Request; - /** - * Displays a list of categories for all event source types, or, if specified, for a specified source type. You can see a list of the event categories and source types in the Events topic in the Amazon RDS User Guide. - */ - describeEventCategories(params: RDS.Types.DescribeEventCategoriesMessage, callback?: (err: AWSError, data: RDS.Types.EventCategoriesMessage) => void): Request; - /** - * Displays a list of categories for all event source types, or, if specified, for a specified source type. You can see a list of the event categories and source types in the Events topic in the Amazon RDS User Guide. - */ - describeEventCategories(callback?: (err: AWSError, data: RDS.Types.EventCategoriesMessage) => void): Request; - /** - * Lists all the subscription descriptions for a customer account. The description for a subscription includes SubscriptionName, SNSTopicARN, CustomerID, SourceType, SourceID, CreationTime, and Status. If you specify a SubscriptionName, lists the description for that subscription. - */ - describeEventSubscriptions(params: RDS.Types.DescribeEventSubscriptionsMessage, callback?: (err: AWSError, data: RDS.Types.EventSubscriptionsMessage) => void): Request; - /** - * Lists all the subscription descriptions for a customer account. The description for a subscription includes SubscriptionName, SNSTopicARN, CustomerID, SourceType, SourceID, CreationTime, and Status. If you specify a SubscriptionName, lists the description for that subscription. - */ - describeEventSubscriptions(callback?: (err: AWSError, data: RDS.Types.EventSubscriptionsMessage) => void): Request; - /** - * Returns events related to DB instances, DB security groups, DB snapshots, and DB parameter groups for the past 14 days. Events specific to a particular DB instance, DB security group, database snapshot, or DB parameter group can be obtained by providing the name as a parameter. By default, the past hour of events are returned. - */ - describeEvents(params: RDS.Types.DescribeEventsMessage, callback?: (err: AWSError, data: RDS.Types.EventsMessage) => void): Request; - /** - * Returns events related to DB instances, DB security groups, DB snapshots, and DB parameter groups for the past 14 days. Events specific to a particular DB instance, DB security group, database snapshot, or DB parameter group can be obtained by providing the name as a parameter. By default, the past hour of events are returned. - */ - describeEvents(callback?: (err: AWSError, data: RDS.Types.EventsMessage) => void): Request; - /** - * Describes all available options. - */ - describeOptionGroupOptions(params: RDS.Types.DescribeOptionGroupOptionsMessage, callback?: (err: AWSError, data: RDS.Types.OptionGroupOptionsMessage) => void): Request; - /** - * Describes all available options. - */ - describeOptionGroupOptions(callback?: (err: AWSError, data: RDS.Types.OptionGroupOptionsMessage) => void): Request; - /** - * Describes the available option groups. - */ - describeOptionGroups(params: RDS.Types.DescribeOptionGroupsMessage, callback?: (err: AWSError, data: RDS.Types.OptionGroups) => void): Request; - /** - * Describes the available option groups. - */ - describeOptionGroups(callback?: (err: AWSError, data: RDS.Types.OptionGroups) => void): Request; - /** - * Returns a list of orderable DB instance options for the specified engine. - */ - describeOrderableDBInstanceOptions(params: RDS.Types.DescribeOrderableDBInstanceOptionsMessage, callback?: (err: AWSError, data: RDS.Types.OrderableDBInstanceOptionsMessage) => void): Request; - /** - * Returns a list of orderable DB instance options for the specified engine. - */ - describeOrderableDBInstanceOptions(callback?: (err: AWSError, data: RDS.Types.OrderableDBInstanceOptionsMessage) => void): Request; - /** - * Returns a list of resources (for example, DB instances) that have at least one pending maintenance action. - */ - describePendingMaintenanceActions(params: RDS.Types.DescribePendingMaintenanceActionsMessage, callback?: (err: AWSError, data: RDS.Types.PendingMaintenanceActionsMessage) => void): Request; - /** - * Returns a list of resources (for example, DB instances) that have at least one pending maintenance action. - */ - describePendingMaintenanceActions(callback?: (err: AWSError, data: RDS.Types.PendingMaintenanceActionsMessage) => void): Request; - /** - * Returns information about reserved DB instances for this account, or about a specified reserved DB instance. - */ - describeReservedDBInstances(params: RDS.Types.DescribeReservedDBInstancesMessage, callback?: (err: AWSError, data: RDS.Types.ReservedDBInstanceMessage) => void): Request; - /** - * Returns information about reserved DB instances for this account, or about a specified reserved DB instance. - */ - describeReservedDBInstances(callback?: (err: AWSError, data: RDS.Types.ReservedDBInstanceMessage) => void): Request; - /** - * Lists available reserved DB instance offerings. - */ - describeReservedDBInstancesOfferings(params: RDS.Types.DescribeReservedDBInstancesOfferingsMessage, callback?: (err: AWSError, data: RDS.Types.ReservedDBInstancesOfferingMessage) => void): Request; - /** - * Lists available reserved DB instance offerings. - */ - describeReservedDBInstancesOfferings(callback?: (err: AWSError, data: RDS.Types.ReservedDBInstancesOfferingMessage) => void): Request; - /** - * Returns a list of the source AWS regions where the current AWS Region can create a Read Replica or copy a DB snapshot from. This API action supports pagination. - */ - describeSourceRegions(params: RDS.Types.DescribeSourceRegionsMessage, callback?: (err: AWSError, data: RDS.Types.SourceRegionMessage) => void): Request; - /** - * Returns a list of the source AWS regions where the current AWS Region can create a Read Replica or copy a DB snapshot from. This API action supports pagination. - */ - describeSourceRegions(callback?: (err: AWSError, data: RDS.Types.SourceRegionMessage) => void): Request; - /** - * You can call DescribeValidDBInstanceModifications to learn what modifications you can make to your DB instance. You can use this information when you call ModifyDBInstance. - */ - describeValidDBInstanceModifications(params: RDS.Types.DescribeValidDBInstanceModificationsMessage, callback?: (err: AWSError, data: RDS.Types.DescribeValidDBInstanceModificationsResult) => void): Request; - /** - * You can call DescribeValidDBInstanceModifications to learn what modifications you can make to your DB instance. You can use this information when you call ModifyDBInstance. - */ - describeValidDBInstanceModifications(callback?: (err: AWSError, data: RDS.Types.DescribeValidDBInstanceModificationsResult) => void): Request; - /** - * Downloads all or a portion of the specified log file, up to 1 MB in size. - */ - downloadDBLogFilePortion(params: RDS.Types.DownloadDBLogFilePortionMessage, callback?: (err: AWSError, data: RDS.Types.DownloadDBLogFilePortionDetails) => void): Request; - /** - * Downloads all or a portion of the specified log file, up to 1 MB in size. - */ - downloadDBLogFilePortion(callback?: (err: AWSError, data: RDS.Types.DownloadDBLogFilePortionDetails) => void): Request; - /** - * Forces a failover for a DB cluster. A failover for a DB cluster promotes one of the Aurora Replicas (read-only instances) in the DB cluster to be the primary instance (the cluster writer). Amazon Aurora will automatically fail over to an Aurora Replica, if one exists, when the primary instance fails. You can force a failover when you want to simulate a failure of a primary instance for testing. Because each instance in a DB cluster has its own endpoint address, you will need to clean up and re-establish any existing connections that use those endpoint addresses when the failover is complete. For more information on Amazon Aurora, see Aurora on Amazon RDS in the Amazon RDS User Guide. - */ - failoverDBCluster(params: RDS.Types.FailoverDBClusterMessage, callback?: (err: AWSError, data: RDS.Types.FailoverDBClusterResult) => void): Request; - /** - * Forces a failover for a DB cluster. A failover for a DB cluster promotes one of the Aurora Replicas (read-only instances) in the DB cluster to be the primary instance (the cluster writer). Amazon Aurora will automatically fail over to an Aurora Replica, if one exists, when the primary instance fails. You can force a failover when you want to simulate a failure of a primary instance for testing. Because each instance in a DB cluster has its own endpoint address, you will need to clean up and re-establish any existing connections that use those endpoint addresses when the failover is complete. For more information on Amazon Aurora, see Aurora on Amazon RDS in the Amazon RDS User Guide. - */ - failoverDBCluster(callback?: (err: AWSError, data: RDS.Types.FailoverDBClusterResult) => void): Request; - /** - * Lists all tags on an Amazon RDS resource. For an overview on tagging an Amazon RDS resource, see Tagging Amazon RDS Resources. - */ - listTagsForResource(params: RDS.Types.ListTagsForResourceMessage, callback?: (err: AWSError, data: RDS.Types.TagListMessage) => void): Request; - /** - * Lists all tags on an Amazon RDS resource. For an overview on tagging an Amazon RDS resource, see Tagging Amazon RDS Resources. - */ - listTagsForResource(callback?: (err: AWSError, data: RDS.Types.TagListMessage) => void): Request; - /** - * Modify a setting for an Amazon Aurora DB cluster. You can change one or more database configuration parameters by specifying these parameters and the new values in the request. For more information on Amazon Aurora, see Aurora on Amazon RDS in the Amazon RDS User Guide. - */ - modifyDBCluster(params: RDS.Types.ModifyDBClusterMessage, callback?: (err: AWSError, data: RDS.Types.ModifyDBClusterResult) => void): Request; - /** - * Modify a setting for an Amazon Aurora DB cluster. You can change one or more database configuration parameters by specifying these parameters and the new values in the request. For more information on Amazon Aurora, see Aurora on Amazon RDS in the Amazon RDS User Guide. - */ - modifyDBCluster(callback?: (err: AWSError, data: RDS.Types.ModifyDBClusterResult) => void): Request; - /** - * Modifies the parameters of a DB cluster parameter group. To modify more than one parameter, submit a list of the following: ParameterName, ParameterValue, and ApplyMethod. A maximum of 20 parameters can be modified in a single request. For more information on Amazon Aurora, see Aurora on Amazon RDS in the Amazon RDS User Guide. Changes to dynamic parameters are applied immediately. Changes to static parameters require a reboot without failover to the DB cluster associated with the parameter group before the change can take effect. After you create a DB cluster parameter group, you should wait at least 5 minutes before creating your first DB cluster that uses that DB cluster parameter group as the default parameter group. This allows Amazon RDS to fully complete the create action before the parameter group is used as the default for a new DB cluster. This is especially important for parameters that are critical when creating the default database for a DB cluster, such as the character set for the default database defined by the character_set_database parameter. You can use the Parameter Groups option of the Amazon RDS console or the DescribeDBClusterParameters command to verify that your DB cluster parameter group has been created or modified. - */ - modifyDBClusterParameterGroup(params: RDS.Types.ModifyDBClusterParameterGroupMessage, callback?: (err: AWSError, data: RDS.Types.DBClusterParameterGroupNameMessage) => void): Request; - /** - * Modifies the parameters of a DB cluster parameter group. To modify more than one parameter, submit a list of the following: ParameterName, ParameterValue, and ApplyMethod. A maximum of 20 parameters can be modified in a single request. For more information on Amazon Aurora, see Aurora on Amazon RDS in the Amazon RDS User Guide. Changes to dynamic parameters are applied immediately. Changes to static parameters require a reboot without failover to the DB cluster associated with the parameter group before the change can take effect. After you create a DB cluster parameter group, you should wait at least 5 minutes before creating your first DB cluster that uses that DB cluster parameter group as the default parameter group. This allows Amazon RDS to fully complete the create action before the parameter group is used as the default for a new DB cluster. This is especially important for parameters that are critical when creating the default database for a DB cluster, such as the character set for the default database defined by the character_set_database parameter. You can use the Parameter Groups option of the Amazon RDS console or the DescribeDBClusterParameters command to verify that your DB cluster parameter group has been created or modified. - */ - modifyDBClusterParameterGroup(callback?: (err: AWSError, data: RDS.Types.DBClusterParameterGroupNameMessage) => void): Request; - /** - * Adds an attribute and values to, or removes an attribute and values from, a manual DB cluster snapshot. To share a manual DB cluster snapshot with other AWS accounts, specify restore as the AttributeName and use the ValuesToAdd parameter to add a list of IDs of the AWS accounts that are authorized to restore the manual DB cluster snapshot. Use the value all to make the manual DB cluster snapshot public, which means that it can be copied or restored by all AWS accounts. Do not add the all value for any manual DB cluster snapshots that contain private information that you don't want available to all AWS accounts. If a manual DB cluster snapshot is encrypted, it can be shared, but only by specifying a list of authorized AWS account IDs for the ValuesToAdd parameter. You can't use all as a value for that parameter in this case. To view which AWS accounts have access to copy or restore a manual DB cluster snapshot, or whether a manual DB cluster snapshot public or private, use the DescribeDBClusterSnapshotAttributes API action. - */ - modifyDBClusterSnapshotAttribute(params: RDS.Types.ModifyDBClusterSnapshotAttributeMessage, callback?: (err: AWSError, data: RDS.Types.ModifyDBClusterSnapshotAttributeResult) => void): Request; - /** - * Adds an attribute and values to, or removes an attribute and values from, a manual DB cluster snapshot. To share a manual DB cluster snapshot with other AWS accounts, specify restore as the AttributeName and use the ValuesToAdd parameter to add a list of IDs of the AWS accounts that are authorized to restore the manual DB cluster snapshot. Use the value all to make the manual DB cluster snapshot public, which means that it can be copied or restored by all AWS accounts. Do not add the all value for any manual DB cluster snapshots that contain private information that you don't want available to all AWS accounts. If a manual DB cluster snapshot is encrypted, it can be shared, but only by specifying a list of authorized AWS account IDs for the ValuesToAdd parameter. You can't use all as a value for that parameter in this case. To view which AWS accounts have access to copy or restore a manual DB cluster snapshot, or whether a manual DB cluster snapshot public or private, use the DescribeDBClusterSnapshotAttributes API action. - */ - modifyDBClusterSnapshotAttribute(callback?: (err: AWSError, data: RDS.Types.ModifyDBClusterSnapshotAttributeResult) => void): Request; - /** - * Modifies settings for a DB instance. You can change one or more database configuration parameters by specifying these parameters and the new values in the request. To learn what modifications you can make to your DB instance, call DescribeValidDBInstanceModifications before you call ModifyDBInstance. - */ - modifyDBInstance(params: RDS.Types.ModifyDBInstanceMessage, callback?: (err: AWSError, data: RDS.Types.ModifyDBInstanceResult) => void): Request; - /** - * Modifies settings for a DB instance. You can change one or more database configuration parameters by specifying these parameters and the new values in the request. To learn what modifications you can make to your DB instance, call DescribeValidDBInstanceModifications before you call ModifyDBInstance. - */ - modifyDBInstance(callback?: (err: AWSError, data: RDS.Types.ModifyDBInstanceResult) => void): Request; - /** - * Modifies the parameters of a DB parameter group. To modify more than one parameter, submit a list of the following: ParameterName, ParameterValue, and ApplyMethod. A maximum of 20 parameters can be modified in a single request. Changes to dynamic parameters are applied immediately. Changes to static parameters require a reboot without failover to the DB instance associated with the parameter group before the change can take effect. After you modify a DB parameter group, you should wait at least 5 minutes before creating your first DB instance that uses that DB parameter group as the default parameter group. This allows Amazon RDS to fully complete the modify action before the parameter group is used as the default for a new DB instance. This is especially important for parameters that are critical when creating the default database for a DB instance, such as the character set for the default database defined by the character_set_database parameter. You can use the Parameter Groups option of the Amazon RDS console or the DescribeDBParameters command to verify that your DB parameter group has been created or modified. - */ - modifyDBParameterGroup(params: RDS.Types.ModifyDBParameterGroupMessage, callback?: (err: AWSError, data: RDS.Types.DBParameterGroupNameMessage) => void): Request; - /** - * Modifies the parameters of a DB parameter group. To modify more than one parameter, submit a list of the following: ParameterName, ParameterValue, and ApplyMethod. A maximum of 20 parameters can be modified in a single request. Changes to dynamic parameters are applied immediately. Changes to static parameters require a reboot without failover to the DB instance associated with the parameter group before the change can take effect. After you modify a DB parameter group, you should wait at least 5 minutes before creating your first DB instance that uses that DB parameter group as the default parameter group. This allows Amazon RDS to fully complete the modify action before the parameter group is used as the default for a new DB instance. This is especially important for parameters that are critical when creating the default database for a DB instance, such as the character set for the default database defined by the character_set_database parameter. You can use the Parameter Groups option of the Amazon RDS console or the DescribeDBParameters command to verify that your DB parameter group has been created or modified. - */ - modifyDBParameterGroup(callback?: (err: AWSError, data: RDS.Types.DBParameterGroupNameMessage) => void): Request; - /** - * Updates a manual DB snapshot, which can be encrypted or not encrypted, with a new engine version. Amazon RDS supports upgrading DB snapshots for MySQL and Oracle. - */ - modifyDBSnapshot(params: RDS.Types.ModifyDBSnapshotMessage, callback?: (err: AWSError, data: RDS.Types.ModifyDBSnapshotResult) => void): Request; - /** - * Updates a manual DB snapshot, which can be encrypted or not encrypted, with a new engine version. Amazon RDS supports upgrading DB snapshots for MySQL and Oracle. - */ - modifyDBSnapshot(callback?: (err: AWSError, data: RDS.Types.ModifyDBSnapshotResult) => void): Request; - /** - * Adds an attribute and values to, or removes an attribute and values from, a manual DB snapshot. To share a manual DB snapshot with other AWS accounts, specify restore as the AttributeName and use the ValuesToAdd parameter to add a list of IDs of the AWS accounts that are authorized to restore the manual DB snapshot. Uses the value all to make the manual DB snapshot public, which means it can be copied or restored by all AWS accounts. Do not add the all value for any manual DB snapshots that contain private information that you don't want available to all AWS accounts. If the manual DB snapshot is encrypted, it can be shared, but only by specifying a list of authorized AWS account IDs for the ValuesToAdd parameter. You can't use all as a value for that parameter in this case. To view which AWS accounts have access to copy or restore a manual DB snapshot, or whether a manual DB snapshot public or private, use the DescribeDBSnapshotAttributes API action. - */ - modifyDBSnapshotAttribute(params: RDS.Types.ModifyDBSnapshotAttributeMessage, callback?: (err: AWSError, data: RDS.Types.ModifyDBSnapshotAttributeResult) => void): Request; - /** - * Adds an attribute and values to, or removes an attribute and values from, a manual DB snapshot. To share a manual DB snapshot with other AWS accounts, specify restore as the AttributeName and use the ValuesToAdd parameter to add a list of IDs of the AWS accounts that are authorized to restore the manual DB snapshot. Uses the value all to make the manual DB snapshot public, which means it can be copied or restored by all AWS accounts. Do not add the all value for any manual DB snapshots that contain private information that you don't want available to all AWS accounts. If the manual DB snapshot is encrypted, it can be shared, but only by specifying a list of authorized AWS account IDs for the ValuesToAdd parameter. You can't use all as a value for that parameter in this case. To view which AWS accounts have access to copy or restore a manual DB snapshot, or whether a manual DB snapshot public or private, use the DescribeDBSnapshotAttributes API action. - */ - modifyDBSnapshotAttribute(callback?: (err: AWSError, data: RDS.Types.ModifyDBSnapshotAttributeResult) => void): Request; - /** - * Modifies an existing DB subnet group. DB subnet groups must contain at least one subnet in at least two AZs in the AWS Region. - */ - modifyDBSubnetGroup(params: RDS.Types.ModifyDBSubnetGroupMessage, callback?: (err: AWSError, data: RDS.Types.ModifyDBSubnetGroupResult) => void): Request; - /** - * Modifies an existing DB subnet group. DB subnet groups must contain at least one subnet in at least two AZs in the AWS Region. - */ - modifyDBSubnetGroup(callback?: (err: AWSError, data: RDS.Types.ModifyDBSubnetGroupResult) => void): Request; - /** - * Modifies an existing RDS event notification subscription. Note that you cannot modify the source identifiers using this call; to change source identifiers for a subscription, use the AddSourceIdentifierToSubscription and RemoveSourceIdentifierFromSubscription calls. You can see a list of the event categories for a given SourceType in the Events topic in the Amazon RDS User Guide or by using the DescribeEventCategories action. - */ - modifyEventSubscription(params: RDS.Types.ModifyEventSubscriptionMessage, callback?: (err: AWSError, data: RDS.Types.ModifyEventSubscriptionResult) => void): Request; - /** - * Modifies an existing RDS event notification subscription. Note that you cannot modify the source identifiers using this call; to change source identifiers for a subscription, use the AddSourceIdentifierToSubscription and RemoveSourceIdentifierFromSubscription calls. You can see a list of the event categories for a given SourceType in the Events topic in the Amazon RDS User Guide or by using the DescribeEventCategories action. - */ - modifyEventSubscription(callback?: (err: AWSError, data: RDS.Types.ModifyEventSubscriptionResult) => void): Request; - /** - * Modifies an existing option group. - */ - modifyOptionGroup(params: RDS.Types.ModifyOptionGroupMessage, callback?: (err: AWSError, data: RDS.Types.ModifyOptionGroupResult) => void): Request; - /** - * Modifies an existing option group. - */ - modifyOptionGroup(callback?: (err: AWSError, data: RDS.Types.ModifyOptionGroupResult) => void): Request; - /** - * Promotes a Read Replica DB instance to a standalone DB instance. We recommend that you enable automated backups on your Read Replica before promoting the Read Replica. This ensures that no backup is taken during the promotion process. Once the instance is promoted to a primary instance, backups are taken based on your backup settings. - */ - promoteReadReplica(params: RDS.Types.PromoteReadReplicaMessage, callback?: (err: AWSError, data: RDS.Types.PromoteReadReplicaResult) => void): Request; - /** - * Promotes a Read Replica DB instance to a standalone DB instance. We recommend that you enable automated backups on your Read Replica before promoting the Read Replica. This ensures that no backup is taken during the promotion process. Once the instance is promoted to a primary instance, backups are taken based on your backup settings. - */ - promoteReadReplica(callback?: (err: AWSError, data: RDS.Types.PromoteReadReplicaResult) => void): Request; - /** - * Promotes a Read Replica DB cluster to a standalone DB cluster. - */ - promoteReadReplicaDBCluster(params: RDS.Types.PromoteReadReplicaDBClusterMessage, callback?: (err: AWSError, data: RDS.Types.PromoteReadReplicaDBClusterResult) => void): Request; - /** - * Promotes a Read Replica DB cluster to a standalone DB cluster. - */ - promoteReadReplicaDBCluster(callback?: (err: AWSError, data: RDS.Types.PromoteReadReplicaDBClusterResult) => void): Request; - /** - * Purchases a reserved DB instance offering. - */ - purchaseReservedDBInstancesOffering(params: RDS.Types.PurchaseReservedDBInstancesOfferingMessage, callback?: (err: AWSError, data: RDS.Types.PurchaseReservedDBInstancesOfferingResult) => void): Request; - /** - * Purchases a reserved DB instance offering. - */ - purchaseReservedDBInstancesOffering(callback?: (err: AWSError, data: RDS.Types.PurchaseReservedDBInstancesOfferingResult) => void): Request; - /** - * Rebooting a DB instance restarts the database engine service. A reboot also applies to the DB instance any modifications to the associated DB parameter group that were pending. Rebooting a DB instance results in a momentary outage of the instance, during which the DB instance status is set to rebooting. If the RDS instance is configured for MultiAZ, it is possible that the reboot will be conducted through a failover. An Amazon RDS event is created when the reboot is completed. If your DB instance is deployed in multiple Availability Zones, you can force a failover from one AZ to the other during the reboot. You might force a failover to test the availability of your DB instance deployment or to restore operations to the original AZ after a failover occurs. The time required to reboot is a function of the specific database engine's crash recovery process. To improve the reboot time, we recommend that you reduce database activities as much as possible during the reboot process to reduce rollback activity for in-transit transactions. - */ - rebootDBInstance(params: RDS.Types.RebootDBInstanceMessage, callback?: (err: AWSError, data: RDS.Types.RebootDBInstanceResult) => void): Request; - /** - * Rebooting a DB instance restarts the database engine service. A reboot also applies to the DB instance any modifications to the associated DB parameter group that were pending. Rebooting a DB instance results in a momentary outage of the instance, during which the DB instance status is set to rebooting. If the RDS instance is configured for MultiAZ, it is possible that the reboot will be conducted through a failover. An Amazon RDS event is created when the reboot is completed. If your DB instance is deployed in multiple Availability Zones, you can force a failover from one AZ to the other during the reboot. You might force a failover to test the availability of your DB instance deployment or to restore operations to the original AZ after a failover occurs. The time required to reboot is a function of the specific database engine's crash recovery process. To improve the reboot time, we recommend that you reduce database activities as much as possible during the reboot process to reduce rollback activity for in-transit transactions. - */ - rebootDBInstance(callback?: (err: AWSError, data: RDS.Types.RebootDBInstanceResult) => void): Request; - /** - * Disassociates an Identity and Access Management (IAM) role from an Aurora DB cluster. For more information, see Authorizing Amazon Aurora to Access Other AWS Services On Your Behalf. - */ - removeRoleFromDBCluster(params: RDS.Types.RemoveRoleFromDBClusterMessage, callback?: (err: AWSError, data: {}) => void): Request<{}, AWSError>; - /** - * Disassociates an Identity and Access Management (IAM) role from an Aurora DB cluster. For more information, see Authorizing Amazon Aurora to Access Other AWS Services On Your Behalf. - */ - removeRoleFromDBCluster(callback?: (err: AWSError, data: {}) => void): Request<{}, AWSError>; - /** - * Removes a source identifier from an existing RDS event notification subscription. - */ - removeSourceIdentifierFromSubscription(params: RDS.Types.RemoveSourceIdentifierFromSubscriptionMessage, callback?: (err: AWSError, data: RDS.Types.RemoveSourceIdentifierFromSubscriptionResult) => void): Request; - /** - * Removes a source identifier from an existing RDS event notification subscription. - */ - removeSourceIdentifierFromSubscription(callback?: (err: AWSError, data: RDS.Types.RemoveSourceIdentifierFromSubscriptionResult) => void): Request; - /** - * Removes metadata tags from an Amazon RDS resource. For an overview on tagging an Amazon RDS resource, see Tagging Amazon RDS Resources. - */ - removeTagsFromResource(params: RDS.Types.RemoveTagsFromResourceMessage, callback?: (err: AWSError, data: {}) => void): Request<{}, AWSError>; - /** - * Removes metadata tags from an Amazon RDS resource. For an overview on tagging an Amazon RDS resource, see Tagging Amazon RDS Resources. - */ - removeTagsFromResource(callback?: (err: AWSError, data: {}) => void): Request<{}, AWSError>; - /** - * Modifies the parameters of a DB cluster parameter group to the default value. To reset specific parameters submit a list of the following: ParameterName and ApplyMethod. To reset the entire DB cluster parameter group, specify the DBClusterParameterGroupName and ResetAllParameters parameters. When resetting the entire group, dynamic parameters are updated immediately and static parameters are set to pending-reboot to take effect on the next DB instance restart or RebootDBInstance request. You must call RebootDBInstance for every DB instance in your DB cluster that you want the updated static parameter to apply to. For more information on Amazon Aurora, see Aurora on Amazon RDS in the Amazon RDS User Guide. - */ - resetDBClusterParameterGroup(params: RDS.Types.ResetDBClusterParameterGroupMessage, callback?: (err: AWSError, data: RDS.Types.DBClusterParameterGroupNameMessage) => void): Request; - /** - * Modifies the parameters of a DB cluster parameter group to the default value. To reset specific parameters submit a list of the following: ParameterName and ApplyMethod. To reset the entire DB cluster parameter group, specify the DBClusterParameterGroupName and ResetAllParameters parameters. When resetting the entire group, dynamic parameters are updated immediately and static parameters are set to pending-reboot to take effect on the next DB instance restart or RebootDBInstance request. You must call RebootDBInstance for every DB instance in your DB cluster that you want the updated static parameter to apply to. For more information on Amazon Aurora, see Aurora on Amazon RDS in the Amazon RDS User Guide. - */ - resetDBClusterParameterGroup(callback?: (err: AWSError, data: RDS.Types.DBClusterParameterGroupNameMessage) => void): Request; - /** - * Modifies the parameters of a DB parameter group to the engine/system default value. To reset specific parameters, provide a list of the following: ParameterName and ApplyMethod. To reset the entire DB parameter group, specify the DBParameterGroup name and ResetAllParameters parameters. When resetting the entire group, dynamic parameters are updated immediately and static parameters are set to pending-reboot to take effect on the next DB instance restart or RebootDBInstance request. - */ - resetDBParameterGroup(params: RDS.Types.ResetDBParameterGroupMessage, callback?: (err: AWSError, data: RDS.Types.DBParameterGroupNameMessage) => void): Request; - /** - * Modifies the parameters of a DB parameter group to the engine/system default value. To reset specific parameters, provide a list of the following: ParameterName and ApplyMethod. To reset the entire DB parameter group, specify the DBParameterGroup name and ResetAllParameters parameters. When resetting the entire group, dynamic parameters are updated immediately and static parameters are set to pending-reboot to take effect on the next DB instance restart or RebootDBInstance request. - */ - resetDBParameterGroup(callback?: (err: AWSError, data: RDS.Types.DBParameterGroupNameMessage) => void): Request; - /** - * Creates an Amazon Aurora DB cluster from data stored in an Amazon S3 bucket. Amazon RDS must be authorized to access the Amazon S3 bucket and the data must be created using the Percona XtraBackup utility as described in Migrating Data from MySQL by Using an Amazon S3 Bucket. - */ - restoreDBClusterFromS3(params: RDS.Types.RestoreDBClusterFromS3Message, callback?: (err: AWSError, data: RDS.Types.RestoreDBClusterFromS3Result) => void): Request; - /** - * Creates an Amazon Aurora DB cluster from data stored in an Amazon S3 bucket. Amazon RDS must be authorized to access the Amazon S3 bucket and the data must be created using the Percona XtraBackup utility as described in Migrating Data from MySQL by Using an Amazon S3 Bucket. - */ - restoreDBClusterFromS3(callback?: (err: AWSError, data: RDS.Types.RestoreDBClusterFromS3Result) => void): Request; - /** - * Creates a new DB cluster from a DB snapshot or DB cluster snapshot. If a DB snapshot is specified, the target DB cluster is created from the source DB snapshot with a default configuration and default security group. If a DB cluster snapshot is specified, the target DB cluster is created from the source DB cluster restore point with the same configuration as the original source DB cluster, except that the new DB cluster is created with the default security group. For more information on Amazon Aurora, see Aurora on Amazon RDS in the Amazon RDS User Guide. - */ - restoreDBClusterFromSnapshot(params: RDS.Types.RestoreDBClusterFromSnapshotMessage, callback?: (err: AWSError, data: RDS.Types.RestoreDBClusterFromSnapshotResult) => void): Request; - /** - * Creates a new DB cluster from a DB snapshot or DB cluster snapshot. If a DB snapshot is specified, the target DB cluster is created from the source DB snapshot with a default configuration and default security group. If a DB cluster snapshot is specified, the target DB cluster is created from the source DB cluster restore point with the same configuration as the original source DB cluster, except that the new DB cluster is created with the default security group. For more information on Amazon Aurora, see Aurora on Amazon RDS in the Amazon RDS User Guide. - */ - restoreDBClusterFromSnapshot(callback?: (err: AWSError, data: RDS.Types.RestoreDBClusterFromSnapshotResult) => void): Request; - /** - * Restores a DB cluster to an arbitrary point in time. Users can restore to any point in time before LatestRestorableTime for up to BackupRetentionPeriod days. The target DB cluster is created from the source DB cluster with the same configuration as the original DB cluster, except that the new DB cluster is created with the default DB security group. This action only restores the DB cluster, not the DB instances for that DB cluster. You must invoke the CreateDBInstance action to create DB instances for the restored DB cluster, specifying the identifier of the restored DB cluster in DBClusterIdentifier. You can create DB instances only after the RestoreDBClusterToPointInTime action has completed and the DB cluster is available. For more information on Amazon Aurora, see Aurora on Amazon RDS in the Amazon RDS User Guide. - */ - restoreDBClusterToPointInTime(params: RDS.Types.RestoreDBClusterToPointInTimeMessage, callback?: (err: AWSError, data: RDS.Types.RestoreDBClusterToPointInTimeResult) => void): Request; - /** - * Restores a DB cluster to an arbitrary point in time. Users can restore to any point in time before LatestRestorableTime for up to BackupRetentionPeriod days. The target DB cluster is created from the source DB cluster with the same configuration as the original DB cluster, except that the new DB cluster is created with the default DB security group. This action only restores the DB cluster, not the DB instances for that DB cluster. You must invoke the CreateDBInstance action to create DB instances for the restored DB cluster, specifying the identifier of the restored DB cluster in DBClusterIdentifier. You can create DB instances only after the RestoreDBClusterToPointInTime action has completed and the DB cluster is available. For more information on Amazon Aurora, see Aurora on Amazon RDS in the Amazon RDS User Guide. - */ - restoreDBClusterToPointInTime(callback?: (err: AWSError, data: RDS.Types.RestoreDBClusterToPointInTimeResult) => void): Request; - /** - * Creates a new DB instance from a DB snapshot. The target database is created from the source database restore point with the most of original configuration with the default security group and the default DB parameter group. By default, the new DB instance is created as a single-AZ deployment except when the instance is a SQL Server instance that has an option group that is associated with mirroring; in this case, the instance becomes a mirrored AZ deployment and not a single-AZ deployment. If your intent is to replace your original DB instance with the new, restored DB instance, then rename your original DB instance before you call the RestoreDBInstanceFromDBSnapshot action. RDS does not allow two DB instances with the same name. Once you have renamed your original DB instance with a different identifier, then you can pass the original name of the DB instance as the DBInstanceIdentifier in the call to the RestoreDBInstanceFromDBSnapshot action. The result is that you will replace the original DB instance with the DB instance created from the snapshot. If you are restoring from a shared manual DB snapshot, the DBSnapshotIdentifier must be the ARN of the shared DB snapshot. - */ - restoreDBInstanceFromDBSnapshot(params: RDS.Types.RestoreDBInstanceFromDBSnapshotMessage, callback?: (err: AWSError, data: RDS.Types.RestoreDBInstanceFromDBSnapshotResult) => void): Request; - /** - * Creates a new DB instance from a DB snapshot. The target database is created from the source database restore point with the most of original configuration with the default security group and the default DB parameter group. By default, the new DB instance is created as a single-AZ deployment except when the instance is a SQL Server instance that has an option group that is associated with mirroring; in this case, the instance becomes a mirrored AZ deployment and not a single-AZ deployment. If your intent is to replace your original DB instance with the new, restored DB instance, then rename your original DB instance before you call the RestoreDBInstanceFromDBSnapshot action. RDS does not allow two DB instances with the same name. Once you have renamed your original DB instance with a different identifier, then you can pass the original name of the DB instance as the DBInstanceIdentifier in the call to the RestoreDBInstanceFromDBSnapshot action. The result is that you will replace the original DB instance with the DB instance created from the snapshot. If you are restoring from a shared manual DB snapshot, the DBSnapshotIdentifier must be the ARN of the shared DB snapshot. - */ - restoreDBInstanceFromDBSnapshot(callback?: (err: AWSError, data: RDS.Types.RestoreDBInstanceFromDBSnapshotResult) => void): Request; - /** - * Restores a DB instance to an arbitrary point in time. You can restore to any point in time before the time identified by the LatestRestorableTime property. You can restore to a point up to the number of days specified by the BackupRetentionPeriod property. The target database is created with most of the original configuration, but in a system-selected availability zone, with the default security group, the default subnet group, and the default DB parameter group. By default, the new DB instance is created as a single-AZ deployment except when the instance is a SQL Server instance that has an option group that is associated with mirroring; in this case, the instance becomes a mirrored deployment and not a single-AZ deployment. - */ - restoreDBInstanceToPointInTime(params: RDS.Types.RestoreDBInstanceToPointInTimeMessage, callback?: (err: AWSError, data: RDS.Types.RestoreDBInstanceToPointInTimeResult) => void): Request; - /** - * Restores a DB instance to an arbitrary point in time. You can restore to any point in time before the time identified by the LatestRestorableTime property. You can restore to a point up to the number of days specified by the BackupRetentionPeriod property. The target database is created with most of the original configuration, but in a system-selected availability zone, with the default security group, the default subnet group, and the default DB parameter group. By default, the new DB instance is created as a single-AZ deployment except when the instance is a SQL Server instance that has an option group that is associated with mirroring; in this case, the instance becomes a mirrored deployment and not a single-AZ deployment. - */ - restoreDBInstanceToPointInTime(callback?: (err: AWSError, data: RDS.Types.RestoreDBInstanceToPointInTimeResult) => void): Request; - /** - * Revokes ingress from a DBSecurityGroup for previously authorized IP ranges or EC2 or VPC Security Groups. Required parameters for this API are one of CIDRIP, EC2SecurityGroupId for VPC, or (EC2SecurityGroupOwnerId and either EC2SecurityGroupName or EC2SecurityGroupId). - */ - revokeDBSecurityGroupIngress(params: RDS.Types.RevokeDBSecurityGroupIngressMessage, callback?: (err: AWSError, data: RDS.Types.RevokeDBSecurityGroupIngressResult) => void): Request; - /** - * Revokes ingress from a DBSecurityGroup for previously authorized IP ranges or EC2 or VPC Security Groups. Required parameters for this API are one of CIDRIP, EC2SecurityGroupId for VPC, or (EC2SecurityGroupOwnerId and either EC2SecurityGroupName or EC2SecurityGroupId). - */ - revokeDBSecurityGroupIngress(callback?: (err: AWSError, data: RDS.Types.RevokeDBSecurityGroupIngressResult) => void): Request; - /** - * Starts a DB instance that was stopped using the AWS console, the stop-db-instance AWS CLI command, or the StopDBInstance action. For more information, see Stopping and Starting a DB instance in the AWS RDS user guide. - */ - startDBInstance(params: RDS.Types.StartDBInstanceMessage, callback?: (err: AWSError, data: RDS.Types.StartDBInstanceResult) => void): Request; - /** - * Starts a DB instance that was stopped using the AWS console, the stop-db-instance AWS CLI command, or the StopDBInstance action. For more information, see Stopping and Starting a DB instance in the AWS RDS user guide. - */ - startDBInstance(callback?: (err: AWSError, data: RDS.Types.StartDBInstanceResult) => void): Request; - /** - * Stops a DB instance. When you stop a DB instance, Amazon RDS retains the DB instance's metadata, including its endpoint, DB parameter group, and option group membership. Amazon RDS also retains the transaction logs so you can do a point-in-time restore if necessary. For more information, see Stopping and Starting a DB instance in the AWS RDS user guide. - */ - stopDBInstance(params: RDS.Types.StopDBInstanceMessage, callback?: (err: AWSError, data: RDS.Types.StopDBInstanceResult) => void): Request; - /** - * Stops a DB instance. When you stop a DB instance, Amazon RDS retains the DB instance's metadata, including its endpoint, DB parameter group, and option group membership. Amazon RDS also retains the transaction logs so you can do a point-in-time restore if necessary. For more information, see Stopping and Starting a DB instance in the AWS RDS user guide. - */ - stopDBInstance(callback?: (err: AWSError, data: RDS.Types.StopDBInstanceResult) => void): Request; - /** - * Waits for the dBInstanceAvailable state by periodically calling the underlying RDS.describeDBInstancesoperation every 30 seconds (at most 60 times). - */ - waitFor(state: "dBInstanceAvailable", params: RDS.Types.DescribeDBInstancesMessage, callback?: (err: AWSError, data: RDS.Types.DBInstanceMessage) => void): Request; - /** - * Waits for the dBInstanceAvailable state by periodically calling the underlying RDS.describeDBInstancesoperation every 30 seconds (at most 60 times). - */ - waitFor(state: "dBInstanceAvailable", callback?: (err: AWSError, data: RDS.Types.DBInstanceMessage) => void): Request; - /** - * Waits for the dBInstanceDeleted state by periodically calling the underlying RDS.describeDBInstancesoperation every 30 seconds (at most 60 times). - */ - waitFor(state: "dBInstanceDeleted", params: RDS.Types.DescribeDBInstancesMessage, callback?: (err: AWSError, data: RDS.Types.DBInstanceMessage) => void): Request; - /** - * Waits for the dBInstanceDeleted state by periodically calling the underlying RDS.describeDBInstancesoperation every 30 seconds (at most 60 times). - */ - waitFor(state: "dBInstanceDeleted", callback?: (err: AWSError, data: RDS.Types.DBInstanceMessage) => void): Request; -} -declare namespace RDS { - export import Signer = signer; -} -declare namespace RDS { - export interface AccountAttributesMessage { - /** - * A list of AccountQuota objects. Within this list, each quota has a name, a count of usage toward the quota maximum, and a maximum value for the quota. - */ - AccountQuotas?: AccountQuotaList; - } - export interface AccountQuota { - /** - * The name of the Amazon RDS quota for this AWS account. - */ - AccountQuotaName?: String; - /** - * The amount currently used toward the quota maximum. - */ - Used?: Long; - /** - * The maximum allowed value for the quota. - */ - Max?: Long; - } - export type AccountQuotaList = AccountQuota[]; - export interface AddRoleToDBClusterMessage { - /** - * The name of the DB cluster to associate the IAM role with. - */ - DBClusterIdentifier: String; - /** - * The Amazon Resource Name (ARN) of the IAM role to associate with the Aurora DB cluster, for example arn:aws:iam::123456789012:role/AuroraAccessRole. - */ - RoleArn: String; - } - export interface AddSourceIdentifierToSubscriptionMessage { - /** - * The name of the RDS event notification subscription you want to add a source identifier to. - */ - SubscriptionName: String; - /** - * The identifier of the event source to be added. Constraints: If the source type is a DB instance, then a DBInstanceIdentifier must be supplied. If the source type is a DB security group, a DBSecurityGroupName must be supplied. If the source type is a DB parameter group, a DBParameterGroupName must be supplied. If the source type is a DB snapshot, a DBSnapshotIdentifier must be supplied. - */ - SourceIdentifier: String; - } - export interface AddSourceIdentifierToSubscriptionResult { - EventSubscription?: EventSubscription; - } - export interface AddTagsToResourceMessage { - /** - * The Amazon RDS resource the tags will be added to. This value is an Amazon Resource Name (ARN). For information about creating an ARN, see Constructing an RDS Amazon Resource Name (ARN). - */ - ResourceName: String; - /** - * The tags to be assigned to the Amazon RDS resource. - */ - Tags: TagList; - } - export type ApplyMethod = "immediate"|"pending-reboot"|string; - export interface ApplyPendingMaintenanceActionMessage { - /** - * The RDS Amazon Resource Name (ARN) of the resource that the pending maintenance action applies to. For information about creating an ARN, see Constructing an RDS Amazon Resource Name (ARN). - */ - ResourceIdentifier: String; - /** - * The pending maintenance action to apply to this resource. Valid values: system-update, db-upgrade - */ - ApplyAction: String; - /** - * A value that specifies the type of opt-in request, or undoes an opt-in request. An opt-in request of type immediate cannot be undone. Valid values: immediate - Apply the maintenance action immediately. next-maintenance - Apply the maintenance action during the next maintenance window for the resource. undo-opt-in - Cancel any existing next-maintenance opt-in requests. - */ - OptInType: String; - } - export interface ApplyPendingMaintenanceActionResult { - ResourcePendingMaintenanceActions?: ResourcePendingMaintenanceActions; - } - export type AttributeValueList = String[]; - export interface AuthorizeDBSecurityGroupIngressMessage { - /** - * The name of the DB security group to add authorization to. - */ - DBSecurityGroupName: String; - /** - * The IP range to authorize. - */ - CIDRIP?: String; - /** - * Name of the EC2 security group to authorize. For VPC DB security groups, EC2SecurityGroupId must be provided. Otherwise, EC2SecurityGroupOwnerId and either EC2SecurityGroupName or EC2SecurityGroupId must be provided. - */ - EC2SecurityGroupName?: String; - /** - * Id of the EC2 security group to authorize. For VPC DB security groups, EC2SecurityGroupId must be provided. Otherwise, EC2SecurityGroupOwnerId and either EC2SecurityGroupName or EC2SecurityGroupId must be provided. - */ - EC2SecurityGroupId?: String; - /** - * AWS account number of the owner of the EC2 security group specified in the EC2SecurityGroupName parameter. The AWS Access Key ID is not an acceptable value. For VPC DB security groups, EC2SecurityGroupId must be provided. Otherwise, EC2SecurityGroupOwnerId and either EC2SecurityGroupName or EC2SecurityGroupId must be provided. - */ - EC2SecurityGroupOwnerId?: String; - } - export interface AuthorizeDBSecurityGroupIngressResult { - DBSecurityGroup?: DBSecurityGroup; - } - export interface AvailabilityZone { - /** - * The name of the availability zone. - */ - Name?: String; - } - export type AvailabilityZoneList = AvailabilityZone[]; - export type AvailabilityZones = String[]; - export type Boolean = boolean; - export type BooleanOptional = boolean; - export interface Certificate { - /** - * The unique key that identifies a certificate. - */ - CertificateIdentifier?: String; - /** - * The type of the certificate. - */ - CertificateType?: String; - /** - * The thumbprint of the certificate. - */ - Thumbprint?: String; - /** - * The starting date from which the certificate is valid. - */ - ValidFrom?: TStamp; - /** - * The final date that the certificate continues to be valid. - */ - ValidTill?: TStamp; - /** - * The Amazon Resource Name (ARN) for the certificate. - */ - CertificateArn?: String; - } - export type CertificateList = Certificate[]; - export interface CertificateMessage { - /** - * The list of Certificate objects for the AWS account. - */ - Certificates?: CertificateList; - /** - * An optional pagination token provided by a previous DescribeCertificates request. If this parameter is specified, the response includes only records beyond the marker, up to the value specified by MaxRecords . - */ - Marker?: String; - } - export interface CharacterSet { - /** - * The name of the character set. - */ - CharacterSetName?: String; - /** - * The description of the character set. - */ - CharacterSetDescription?: String; - } - export interface CopyDBClusterParameterGroupMessage { - /** - * The identifier or Amazon Resource Name (ARN) for the source DB cluster parameter group. For information about creating an ARN, see Constructing an RDS Amazon Resource Name (ARN). Constraints: Must specify a valid DB cluster parameter group. If the source DB cluster parameter group is in the same AWS Region as the copy, specify a valid DB parameter group identifier, for example my-db-cluster-param-group, or a valid ARN. If the source DB parameter group is in a different AWS Region than the copy, specify a valid DB cluster parameter group ARN, for example arn:aws:rds:us-east-1:123456789012:cluster-pg:custom-cluster-group1. - */ - SourceDBClusterParameterGroupIdentifier: String; - /** - * The identifier for the copied DB cluster parameter group. Constraints: Cannot be null, empty, or blank Must contain from 1 to 255 letters, numbers, or hyphens First character must be a letter Cannot end with a hyphen or contain two consecutive hyphens Example: my-cluster-param-group1 - */ - TargetDBClusterParameterGroupIdentifier: String; - /** - * A description for the copied DB cluster parameter group. - */ - TargetDBClusterParameterGroupDescription: String; - Tags?: TagList; - } - export interface CopyDBClusterParameterGroupResult { - DBClusterParameterGroup?: DBClusterParameterGroup; - } - export interface CopyDBClusterSnapshotMessage { - /** - * The identifier of the DB cluster snapshot to copy. This parameter is not case-sensitive. You cannot copy an encrypted, shared DB cluster snapshot from one AWS Region to another. Constraints: Must specify a valid system snapshot in the "available" state. If the source snapshot is in the same AWS Region as the copy, specify a valid DB snapshot identifier. If the source snapshot is in a different AWS Region than the copy, specify a valid DB cluster snapshot ARN. For more information, go to Copying a DB Snapshot or DB Cluster Snapshot. Example: my-cluster-snapshot1 - */ - SourceDBClusterSnapshotIdentifier: String; - /** - * The identifier of the new DB cluster snapshot to create from the source DB cluster snapshot. This parameter is not case-sensitive. Constraints: Must contain from 1 to 63 letters, numbers, or hyphens. First character must be a letter. Cannot end with a hyphen or contain two consecutive hyphens. Example: my-cluster-snapshot2 - */ - TargetDBClusterSnapshotIdentifier: String; - /** - * The AWS KMS key ID for an encrypted DB cluster snapshot. The KMS key ID is the Amazon Resource Name (ARN), KMS key identifier, or the KMS key alias for the KMS encryption key. If you copy an unencrypted DB cluster snapshot and specify a value for the KmsKeyId parameter, Amazon RDS encrypts the target DB cluster snapshot using the specified KMS encryption key. If you copy an encrypted DB cluster snapshot from your AWS account, you can specify a value for KmsKeyId to encrypt the copy with a new KMS encryption key. If you don't specify a value for KmsKeyId, then the copy of the DB cluster snapshot is encrypted with the same KMS key as the source DB cluster snapshot. If you copy an encrypted DB cluster snapshot that is shared from another AWS account, then you must specify a value for KmsKeyId. To copy an encrypted DB cluster snapshot to another AWS Region, you must set KmsKeyId to the KMS key ID you want to use to encrypt the copy of the DB cluster snapshot in the destination AWS Region. KMS encryption keys are specific to the AWS Region that they are created in, and you cannot use encryption keys from one AWS Region in another AWS Region. - */ - KmsKeyId?: String; - /** - * The URL that contains a Signature Version 4 signed request for the CopyDBClusterSnapshot API action in the AWS Region that contains the source DB cluster snapshot to copy. The PreSignedUrl parameter must be used when copying an encrypted DB cluster snapshot from another AWS Region. The pre-signed URL must be a valid request for the CopyDBSClusterSnapshot API action that can be executed in the source AWS Region that contains the encrypted DB cluster snapshot to be copied. The pre-signed URL request must contain the following parameter values: KmsKeyId - The KMS key identifier for the key to use to encrypt the copy of the DB cluster snapshot in the destination AWS Region. This is the same identifier for both the CopyDBClusterSnapshot action that is called in the destination AWS Region, and the action contained in the pre-signed URL. DestinationRegion - The name of the AWS Region that the DB cluster snapshot will be created in. SourceDBClusterSnapshotIdentifier - The DB cluster snapshot identifier for the encrypted DB cluster snapshot to be copied. This identifier must be in the Amazon Resource Name (ARN) format for the source AWS Region. For example, if you are copying an encrypted DB cluster snapshot from the us-west-2 region, then your SourceDBClusterSnapshotIdentifier looks like the following example: arn:aws:rds:us-west-2:123456789012:cluster-snapshot:aurora-cluster1-snapshot-20161115. To learn how to generate a Signature Version 4 signed request, see Authenticating Requests: Using Query Parameters (AWS Signature Version 4) and Signature Version 4 Signing Process.If you supply a value for this operation's SourceRegion parameter, a pre-signed URL will be calculated on your behalf. - */ - PreSignedUrl?: String; - /** - * True to copy all tags from the source DB cluster snapshot to the target DB cluster snapshot; otherwise false. The default is false. - */ - CopyTags?: BooleanOptional; - Tags?: TagList; - /** - * The ID of the region that contains the snapshot to be copied. - */ - SourceRegion?: String; - } - export interface CopyDBClusterSnapshotResult { - DBClusterSnapshot?: DBClusterSnapshot; - } - export interface CopyDBParameterGroupMessage { - /** - * The identifier or ARN for the source DB parameter group. For information about creating an ARN, see Constructing an RDS Amazon Resource Name (ARN). Constraints: Must specify a valid DB parameter group. Must specify a valid DB parameter group identifier, for example my-db-param-group, or a valid ARN. - */ - SourceDBParameterGroupIdentifier: String; - /** - * The identifier for the copied DB parameter group. Constraints: Cannot be null, empty, or blank Must contain from 1 to 255 letters, numbers, or hyphens First character must be a letter Cannot end with a hyphen or contain two consecutive hyphens Example: my-db-parameter-group - */ - TargetDBParameterGroupIdentifier: String; - /** - * A description for the copied DB parameter group. - */ - TargetDBParameterGroupDescription: String; - Tags?: TagList; - } - export interface CopyDBParameterGroupResult { - DBParameterGroup?: DBParameterGroup; - } - export interface CopyDBSnapshotMessage { - /** - * The identifier for the source DB snapshot. If the source snapshot is in the same AWS Region as the copy, specify a valid DB snapshot identifier. For example, you might specify rds:mysql-instance1-snapshot-20130805. If the source snapshot is in a different AWS Region than the copy, specify a valid DB snapshot ARN. For example, you might specify arn:aws:rds:us-west-2:123456789012:snapshot:mysql-instance1-snapshot-20130805. If you are copying from a shared manual DB snapshot, this parameter must be the Amazon Resource Name (ARN) of the shared DB snapshot. If you are copying an encrypted snapshot this parameter must be in the ARN format for the source AWS Region, and must match the SourceDBSnapshotIdentifier in the PreSignedUrl parameter. Constraints: Must specify a valid system snapshot in the "available" state. Example: rds:mydb-2012-04-02-00-01 Example: arn:aws:rds:us-west-2:123456789012:snapshot:mysql-instance1-snapshot-20130805 - */ - SourceDBSnapshotIdentifier: String; - /** - * The identifier for the copy of the snapshot. Constraints: Cannot be null, empty, or blank Must contain from 1 to 255 letters, numbers, or hyphens First character must be a letter Cannot end with a hyphen or contain two consecutive hyphens Example: my-db-snapshot - */ - TargetDBSnapshotIdentifier: String; - /** - * The AWS KMS key ID for an encrypted DB snapshot. The KMS key ID is the Amazon Resource Name (ARN), KMS key identifier, or the KMS key alias for the KMS encryption key. If you copy an encrypted DB snapshot from your AWS account, you can specify a value for this parameter to encrypt the copy with a new KMS encryption key. If you don't specify a value for this parameter, then the copy of the DB snapshot is encrypted with the same KMS key as the source DB snapshot. If you copy an encrypted DB snapshot that is shared from another AWS account, then you must specify a value for this parameter. If you specify this parameter when you copy an unencrypted snapshot, the copy is encrypted. If you copy an encrypted snapshot to a different AWS Region, then you must specify a KMS key for the destination AWS Region. KMS encryption keys are specific to the AWS Region that they are created in, and you cannot use encryption keys from one AWS Region in another AWS Region. - */ - KmsKeyId?: String; - Tags?: TagList; - /** - * True to copy all tags from the source DB snapshot to the target DB snapshot; otherwise false. The default is false. - */ - CopyTags?: BooleanOptional; - /** - * The URL that contains a Signature Version 4 signed request for the CopyDBSnapshot API action in the source AWS Region that contains the source DB snapshot to copy. You must specify this parameter when you copy an encrypted DB snapshot from another AWS Region by using the Amazon RDS API. You can specify the source region option instead of this parameter when you copy an encrypted DB snapshot from another AWS Region by using the AWS CLI. The presigned URL must be a valid request for the CopyDBSnapshot API action that can be executed in the source AWS Region that contains the encrypted DB snapshot to be copied. The presigned URL request must contain the following parameter values: DestinationRegion - The AWS Region that the encrypted DB snapshot will be copied to. This AWS Region is the same one where the CopyDBSnapshot action is called that contains this presigned URL. For example, if you copy an encrypted DB snapshot from the us-west-2 region to the us-east-1 region, then you call the CopyDBSnapshot action in the us-east-1 region and provide a presigned URL that contains a call to the CopyDBSnapshot action in the us-west-2 region. For this example, the DestinationRegion in the presigned URL must be set to the us-east-1 region. KmsKeyId - The KMS key identifier for the key to use to encrypt the copy of the DB snapshot in the destination AWS Region. This is the same identifier for both the CopyDBSnapshot action that is called in the destination AWS Region, and the action contained in the presigned URL. SourceDBSnapshotIdentifier - The DB snapshot identifier for the encrypted snapshot to be copied. This identifier must be in the Amazon Resource Name (ARN) format for the source AWS Region. For example, if you are copying an encrypted DB snapshot from the us-west-2 region, then your SourceDBSnapshotIdentifier looks like the following example: arn:aws:rds:us-west-2:123456789012:snapshot:mysql-instance1-snapshot-20161115. To learn how to generate a Signature Version 4 signed request, see Authenticating Requests: Using Query Parameters (AWS Signature Version 4) and Signature Version 4 Signing Process. If you supply a value for this operation's SourceRegion parameter, a pre-signed URL will be calculated on your behalf. - */ - PreSignedUrl?: String; - /** - * The name of an option group to associate with the copy of the snapshot. Specify this option if you are copying a snapshot from one AWS Region to another, and your DB instance uses a nondefault option group. If your source DB instance uses Transparent Data Encryption for Oracle or Microsoft SQL Server, you must specify this option when copying across regions. For more information, see Option Group Considerations. - */ - OptionGroupName?: String; - /** - * The ID of the region that contains the snapshot to be copied. - */ - SourceRegion?: String; - } - export interface CopyDBSnapshotResult { - DBSnapshot?: DBSnapshot; - } - export interface CopyOptionGroupMessage { - /** - * The identifier or ARN for the source option group. For information about creating an ARN, see Constructing an RDS Amazon Resource Name (ARN). Constraints: Must specify a valid option group. If the source option group is in the same AWS Region as the copy, specify a valid option group identifier, for example my-option-group, or a valid ARN. If the source option group is in a different AWS Region than the copy, specify a valid option group ARN, for example arn:aws:rds:us-west-2:123456789012:og:special-options. - */ - SourceOptionGroupIdentifier: String; - /** - * The identifier for the copied option group. Constraints: Cannot be null, empty, or blank Must contain from 1 to 255 letters, numbers, or hyphens First character must be a letter Cannot end with a hyphen or contain two consecutive hyphens Example: my-option-group - */ - TargetOptionGroupIdentifier: String; - /** - * The description for the copied option group. - */ - TargetOptionGroupDescription: String; - Tags?: TagList; - } - export interface CopyOptionGroupResult { - OptionGroup?: OptionGroup; - } - export interface CreateDBClusterMessage { - /** - * A list of EC2 Availability Zones that instances in the DB cluster can be created in. For information on regions and Availability Zones, see Regions and Availability Zones. - */ - AvailabilityZones?: AvailabilityZones; - /** - * The number of days for which automated backups are retained. You must specify a minimum value of 1. Default: 1 Constraints: Must be a value from 1 to 35 - */ - BackupRetentionPeriod?: IntegerOptional; - /** - * A value that indicates that the DB cluster should be associated with the specified CharacterSet. - */ - CharacterSetName?: String; - /** - * The name for your database of up to 64 alpha-numeric characters. If you do not provide a name, Amazon RDS will not create a database in the DB cluster you are creating. - */ - DatabaseName?: String; - /** - * The DB cluster identifier. This parameter is stored as a lowercase string. Constraints: Must contain from 1 to 63 letters, numbers, or hyphens. First character must be a letter. Cannot end with a hyphen or contain two consecutive hyphens. Example: my-cluster1 - */ - DBClusterIdentifier: String; - /** - * The name of the DB cluster parameter group to associate with this DB cluster. If this argument is omitted, default.aurora5.6 will be used. Constraints: If supplied, must match the name of an existing DBClusterParameterGroup. - */ - DBClusterParameterGroupName?: String; - /** - * A list of EC2 VPC security groups to associate with this DB cluster. - */ - VpcSecurityGroupIds?: VpcSecurityGroupIdList; - /** - * A DB subnet group to associate with this DB cluster. Constraints: Must match the name of an existing DBSubnetGroup. Must not be default. Example: mySubnetgroup - */ - DBSubnetGroupName?: String; - /** - * The name of the database engine to be used for this DB cluster. Valid Values: aurora - */ - Engine: String; - /** - * The version number of the database engine to use. Aurora Example: 5.6.10a - */ - EngineVersion?: String; - /** - * The port number on which the instances in the DB cluster accept connections. Default: 3306 - */ - Port?: IntegerOptional; - /** - * The name of the master user for the DB cluster. Constraints: Must be 1 to 16 letters or numbers. First character must be a letter. Cannot be a reserved word for the chosen database engine. - */ - MasterUsername?: String; - /** - * The password for the master database user. This password can contain any printable ASCII character except "/", """, or "@". Constraints: Must contain from 8 to 41 characters. - */ - MasterUserPassword?: String; - /** - * A value that indicates that the DB cluster should be associated with the specified option group. Permanent options cannot be removed from an option group. The option group cannot be removed from a DB cluster once it is associated with a DB cluster. - */ - OptionGroupName?: String; - /** - * The daily time range during which automated backups are created if automated backups are enabled using the BackupRetentionPeriod parameter. Default: A 30-minute window selected at random from an 8-hour block of time per AWS Region. To see the time blocks available, see Adjusting the Preferred Maintenance Window in the Amazon RDS User Guide. Constraints: Must be in the format hh24:mi-hh24:mi. Times should be in Universal Coordinated Time (UTC). Must not conflict with the preferred maintenance window. Must be at least 30 minutes. - */ - PreferredBackupWindow?: String; - /** - * The weekly time range during which system maintenance can occur, in Universal Coordinated Time (UTC). Format: ddd:hh24:mi-ddd:hh24:mi Default: A 30-minute window selected at random from an 8-hour block of time per AWS Region, occurring on a random day of the week. To see the time blocks available, see Adjusting the Preferred Maintenance Window in the Amazon RDS User Guide. Valid Days: Mon, Tue, Wed, Thu, Fri, Sat, Sun Constraints: Minimum 30-minute window. - */ - PreferredMaintenanceWindow?: String; - /** - * The Amazon Resource Name (ARN) of the source DB instance or DB cluster if this DB cluster is created as a Read Replica. - */ - ReplicationSourceIdentifier?: String; - Tags?: TagList; - /** - * Specifies whether the DB cluster is encrypted. - */ - StorageEncrypted?: BooleanOptional; - /** - * The KMS key identifier for an encrypted DB cluster. The KMS key identifier is the Amazon Resource Name (ARN) for the KMS encryption key. If you are creating a DB cluster with the same AWS account that owns the KMS encryption key used to encrypt the new DB cluster, then you can use the KMS key alias instead of the ARN for the KMS encryption key. If an encryption key is not specified in KmsKeyId: If ReplicationSourceIdentifier identifies an encrypted source, then Amazon RDS will use the encryption key used to encrypt the source. Otherwise, Amazon RDS will use your default encryption key. If the StorageEncrypted parameter is true and ReplicationSourceIdentifier is not specified, then Amazon RDS will use your default encryption key. AWS KMS creates the default encryption key for your AWS account. Your AWS account has a different default encryption key for each AWS Region. If you create a Read Replica of an encrypted DB cluster in another AWS Region, you must set KmsKeyId to a KMS key ID that is valid in the destination AWS Region. This key is used to encrypt the Read Replica in that AWS Region. - */ - KmsKeyId?: String; - /** - * A URL that contains a Signature Version 4 signed request for the CreateDBCluster action to be called in the source AWS Region where the DB cluster will be replicated from. You only need to specify PreSignedUrl when you are performing cross-region replication from an encrypted DB cluster. The pre-signed URL must be a valid request for the CreateDBCluster API action that can be executed in the source AWS Region that contains the encrypted DB cluster to be copied. The pre-signed URL request must contain the following parameter values: KmsKeyId - The KMS key identifier for the key to use to encrypt the copy of the DB cluster in the destination AWS Region. This should refer to the same KMS key for both the CreateDBCluster action that is called in the destination AWS Region, and the action contained in the pre-signed URL. DestinationRegion - The name of the AWS Region that Aurora Read Replica will be created in. ReplicationSourceIdentifier - The DB cluster identifier for the encrypted DB cluster to be copied. This identifier must be in the Amazon Resource Name (ARN) format for the source AWS Region. For example, if you are copying an encrypted DB cluster from the us-west-2 region, then your ReplicationSourceIdentifier would look like Example: arn:aws:rds:us-west-2:123456789012:cluster:aurora-cluster1. To learn how to generate a Signature Version 4 signed request, see Authenticating Requests: Using Query Parameters (AWS Signature Version 4) and Signature Version 4 Signing Process.If you supply a value for this operation's SourceRegion parameter, a pre-signed URL will be calculated on your behalf. - */ - PreSignedUrl?: String; - /** - * A Boolean value that is true to enable mapping of AWS Identity and Access Management (IAM) accounts to database accounts, and otherwise false. Default: false - */ - EnableIAMDatabaseAuthentication?: BooleanOptional; - /** - * The ID of the region that contains the source for the read replica. - */ - SourceRegion?: String; - } - export interface CreateDBClusterParameterGroupMessage { - /** - * The name of the DB cluster parameter group. Constraints: Must match the name of an existing DBClusterParameterGroup. This value is stored as a lowercase string. - */ - DBClusterParameterGroupName: String; - /** - * The DB cluster parameter group family name. A DB cluster parameter group can be associated with one and only one DB cluster parameter group family, and can be applied only to a DB cluster running a database engine and engine version compatible with that DB cluster parameter group family. - */ - DBParameterGroupFamily: String; - /** - * The description for the DB cluster parameter group. - */ - Description: String; - Tags?: TagList; - } - export interface CreateDBClusterParameterGroupResult { - DBClusterParameterGroup?: DBClusterParameterGroup; - } - export interface CreateDBClusterResult { - DBCluster?: DBCluster; - } - export interface CreateDBClusterSnapshotMessage { - /** - * The identifier of the DB cluster snapshot. This parameter is stored as a lowercase string. Constraints: Must contain from 1 to 63 letters, numbers, or hyphens. First character must be a letter. Cannot end with a hyphen or contain two consecutive hyphens. Example: my-cluster1-snapshot1 - */ - DBClusterSnapshotIdentifier: String; - /** - * The identifier of the DB cluster to create a snapshot for. This parameter is not case-sensitive. Constraints: Must match the identifier of an existing DBCluster. Example: my-cluster1 - */ - DBClusterIdentifier: String; - /** - * The tags to be assigned to the DB cluster snapshot. - */ - Tags?: TagList; - } - export interface CreateDBClusterSnapshotResult { - DBClusterSnapshot?: DBClusterSnapshot; - } - export interface CreateDBInstanceMessage { - /** - * The meaning of this parameter differs according to the database engine you use. Type: String MySQL The name of the database to create when the DB instance is created. If this parameter is not specified, no database is created in the DB instance. Constraints: Must contain 1 to 64 letters or numbers. Cannot be a word reserved by the specified database engine MariaDB The name of the database to create when the DB instance is created. If this parameter is not specified, no database is created in the DB instance. Constraints: Must contain 1 to 64 letters or numbers. Cannot be a word reserved by the specified database engine PostgreSQL The name of the database to create when the DB instance is created. If this parameter is not specified, the default "postgres" database is created in the DB instance. Constraints: Must contain 1 to 63 letters, numbers, or underscores. Must begin with a letter or an underscore. Subsequent characters can be letters, underscores, or digits (0-9). Cannot be a word reserved by the specified database engine Oracle The Oracle System ID (SID) of the created DB instance. If you specify null, the default value ORCL is used. You can't specify the string NULL, or any other reserved word, for DBName. Default: ORCL Constraints: Cannot be longer than 8 characters SQL Server Not applicable. Must be null. Amazon Aurora The name of the database to create when the primary instance of the DB cluster is created. If this parameter is not specified, no database is created in the DB instance. Constraints: Must contain 1 to 64 letters or numbers. Cannot be a word reserved by the specified database engine - */ - DBName?: String; - /** - * The DB instance identifier. This parameter is stored as a lowercase string. Constraints: Must contain from 1 to 63 letters, numbers, or hyphens. First character must be a letter. Cannot end with a hyphen or contain two consecutive hyphens. Example: mydbinstance - */ - DBInstanceIdentifier: String; - /** - * The amount of storage (in gigabytes) to be initially allocated for the database instance. Type: Integer Amazon Aurora Not applicable. Aurora cluster volumes automatically grow as the amount of data in your database increases, though you are only charged for the space that you use in an Aurora cluster volume. MySQL Constraints to the amount of storage for each storage type are the following: General Purpose (SSD) storage (gp2): Must be an integer from 5 to 6144. Provisioned IOPS storage (io1): Must be an integer from 100 to 6144. Magnetic storage (standard): Must be an integer from 5 to 3072. MariaDB Constraints to the amount of storage for each storage type are the following: General Purpose (SSD) storage (gp2): Must be an integer from 5 to 6144. Provisioned IOPS storage (io1): Must be an integer from 100 to 6144. Magnetic storage (standard): Must be an integer from 5 to 3072. PostgreSQL Constraints to the amount of storage for each storage type are the following: General Purpose (SSD) storage (gp2): Must be an integer from 5 to 6144. Provisioned IOPS storage (io1): Must be an integer from 100 to 6144. Magnetic storage (standard): Must be an integer from 5 to 3072. Oracle Constraints to the amount of storage for each storage type are the following: General Purpose (SSD) storage (gp2): Must be an integer from 10 to 6144. Provisioned IOPS storage (io1): Must be an integer from 100 to 6144. Magnetic storage (standard): Must be an integer from 10 to 3072. SQL Server Constraints to the amount of storage for each storage type are the following: General Purpose (SSD) storage (gp2): Enterprise and Standard editions: Must be an integer from 200 to 16384. Web and Express editions: Must be an integer from 20 to 16384. Provisioned IOPS storage (io1): Enterprise and Standard editions: Must be an integer from 200 to 16384. Web and Express editions: Must be an integer from 100 to 16384. Magnetic storage (standard): Enterprise and Standard editions: Must be an integer from 200 to 1024. Web and Express editions: Must be an integer from 20 to 1024. - */ - AllocatedStorage?: IntegerOptional; - /** - * The compute and memory capacity of the DB instance. Note that not all instance classes are available in all regions for all DB engines. Valid Values: db.t1.micro | db.m1.small | db.m1.medium | db.m1.large | db.m1.xlarge | db.m2.xlarge |db.m2.2xlarge | db.m2.4xlarge | db.m3.medium | db.m3.large | db.m3.xlarge | db.m3.2xlarge | db.m4.large | db.m4.xlarge | db.m4.2xlarge | db.m4.4xlarge | db.m4.10xlarge | db.r3.large | db.r3.xlarge | db.r3.2xlarge | db.r3.4xlarge | db.r3.8xlarge | db.t2.micro | db.t2.small | db.t2.medium | db.t2.large - */ - DBInstanceClass: String; - /** - * The name of the database engine to be used for this instance. Not every database engine is available for every AWS Region. Valid Values: aurora mariadb mysql oracle-ee oracle-se2 oracle-se1 oracle-se postgres sqlserver-ee sqlserver-se sqlserver-ex sqlserver-web - */ - Engine: String; - /** - * The name for the master user. Amazon Aurora Not applicable. The name for the master user is managed by the DB cluster. For more information, see CreateDBCluster. MariaDB Constraints: Required for MariaDB. Must be 1 to 16 letters or numbers. Cannot be a reserved word for the chosen database engine. Microsoft SQL Server Constraints: Required for SQL Server. Must be 1 to 128 letters or numbers. The first character must be a letter. Cannot be a reserved word for the chosen database engine. MySQL Constraints: Required for MySQL. Must be 1 to 16 letters or numbers. First character must be a letter. Cannot be a reserved word for the chosen database engine. Oracle Constraints: Required for Oracle. Must be 1 to 30 letters or numbers. First character must be a letter. Cannot be a reserved word for the chosen database engine. PostgreSQL Constraints: Required for PostgreSQL. Must be 1 to 63 letters or numbers. First character must be a letter. Cannot be a reserved word for the chosen database engine. - */ - MasterUsername?: String; - /** - * The password for the master user. Can be any printable ASCII character except "/", """, or "@". Amazon Aurora Not applicable. The password for the master user is managed by the DB cluster. For more information, see CreateDBCluster. MariaDB Constraints: Must contain from 8 to 41 characters. Microsoft SQL Server Constraints: Must contain from 8 to 128 characters. MySQL Constraints: Must contain from 8 to 41 characters. Oracle Constraints: Must contain from 8 to 30 characters. PostgreSQL Constraints: Must contain from 8 to 128 characters. - */ - MasterUserPassword?: String; - /** - * A list of DB security groups to associate with this DB instance. Default: The default DB security group for the database engine. - */ - DBSecurityGroups?: DBSecurityGroupNameList; - /** - * A list of EC2 VPC security groups to associate with this DB instance. Amazon Aurora Not applicable. The associated list of EC2 VPC security groups is managed by the DB cluster. For more information, see CreateDBCluster. Default: The default EC2 VPC security group for the DB subnet group's VPC. - */ - VpcSecurityGroupIds?: VpcSecurityGroupIdList; - /** - * The EC2 Availability Zone that the database instance will be created in. For information on regions and Availability Zones, see Regions and Availability Zones. Default: A random, system-chosen Availability Zone in the endpoint's AWS Region. Example: us-east-1d Constraint: The AvailabilityZone parameter cannot be specified if the MultiAZ parameter is set to true. The specified Availability Zone must be in the same AWS Region as the current endpoint. - */ - AvailabilityZone?: String; - /** - * A DB subnet group to associate with this DB instance. If there is no DB subnet group, then it is a non-VPC DB instance. - */ - DBSubnetGroupName?: String; - /** - * The weekly time range during which system maintenance can occur, in Universal Coordinated Time (UTC). For more information, see DB Instance Maintenance. Format: ddd:hh24:mi-ddd:hh24:mi Default: A 30-minute window selected at random from an 8-hour block of time per AWS Region, occurring on a random day of the week. To see the time blocks available, see Adjusting the Preferred Maintenance Window in the Amazon RDS User Guide. Valid Days: Mon, Tue, Wed, Thu, Fri, Sat, Sun Constraints: Minimum 30-minute window. - */ - PreferredMaintenanceWindow?: String; - /** - * The name of the DB parameter group to associate with this DB instance. If this argument is omitted, the default DBParameterGroup for the specified engine will be used. Constraints: Must be 1 to 255 letters, numbers, or hyphens. First character must be a letter Cannot end with a hyphen or contain two consecutive hyphens - */ - DBParameterGroupName?: String; - /** - * The number of days for which automated backups are retained. Setting this parameter to a positive number enables backups. Setting this parameter to 0 disables automated backups. Amazon Aurora Not applicable. The retention period for automated backups is managed by the DB cluster. For more information, see CreateDBCluster. Default: 1 Constraints: Must be a value from 0 to 35 Cannot be set to 0 if the DB instance is a source to Read Replicas - */ - BackupRetentionPeriod?: IntegerOptional; - /** - * The daily time range during which automated backups are created if automated backups are enabled, using the BackupRetentionPeriod parameter. For more information, see DB Instance Backups. Amazon Aurora Not applicable. The daily time range for creating automated backups is managed by the DB cluster. For more information, see CreateDBCluster. Default: A 30-minute window selected at random from an 8-hour block of time per AWS Region. To see the time blocks available, see Adjusting the Preferred DB Instance Maintenance Window. Constraints: Must be in the format hh24:mi-hh24:mi. Times should be in Universal Coordinated Time (UTC). Must not conflict with the preferred maintenance window. Must be at least 30 minutes. - */ - PreferredBackupWindow?: String; - /** - * The port number on which the database accepts connections. MySQL Default: 3306 Valid Values: 1150-65535 Type: Integer MariaDB Default: 3306 Valid Values: 1150-65535 Type: Integer PostgreSQL Default: 5432 Valid Values: 1150-65535 Type: Integer Oracle Default: 1521 Valid Values: 1150-65535 SQL Server Default: 1433 Valid Values: 1150-65535 except for 1434, 3389, 47001, 49152, and 49152 through 49156. Amazon Aurora Default: 3306 Valid Values: 1150-65535 Type: Integer - */ - Port?: IntegerOptional; - /** - * Specifies if the DB instance is a Multi-AZ deployment. You cannot set the AvailabilityZone parameter if the MultiAZ parameter is set to true. - */ - MultiAZ?: BooleanOptional; - /** - * The version number of the database engine to use. The following are the database engines and major and minor versions that are available with Amazon RDS. Not every database engine is available for every AWS Region. Amazon Aurora Not applicable. The version number of the database engine to be used by the DB instance is managed by the DB cluster. For more information, see CreateDBCluster. MariaDB 10.1.23 (supported in all AWS regions) 10.1.19 (supported in all AWS regions) 10.1.14 (supported in all regions except us-east-2) 10.0.31 (supported in all AWS regions) 10.0.28 (supported in all AWS regions) 10.0.24 (supported in all AWS regions) 10.0.17 (supported in all regions except us-east-2, ca-central-1, eu-west-2) Microsoft SQL Server 2016 13.00.4422.0.v1 (supported for all editions, and all AWS regions) 13.00.2164.0.v1 (supported for all editions, and all AWS regions) Microsoft SQL Server 2014 12.00.5546.0.v1 (supported for all editions, and all AWS regions) 12.00.5000.0.v1 (supported for all editions, and all AWS regions) 12.00.4422.0.v1 (supported for all editions except Enterprise Edition, and all AWS regions except ca-central-1 and eu-west-2) Microsoft SQL Server 2012 11.00.6594.0.v1 (supported for all editions, and all AWS regions) 11.00.6020.0.v1 (supported for all editions, and all AWS regions) 11.00.5058.0.v1 (supported for all editions, and all AWS regions except us-east-2, ca-central-1, and eu-west-2) 11.00.2100.60.v1 (supported for all editions, and all AWS regions except us-east-2, ca-central-1, and eu-west-2) Microsoft SQL Server 2008 R2 10.50.6529.0.v1 (supported for all editions, and all AWS regions except us-east-2, ca-central-1, and eu-west-2) 10.50.6000.34.v1 (supported for all editions, and all AWS regions except us-east-2, ca-central-1, and eu-west-2) 10.50.2789.0.v1 (supported for all editions, and all AWS regions except us-east-2, ca-central-1, and eu-west-2) MySQL 5.7.17 (supported in all AWS regions) 5.7.16 (supported in all AWS regions) 5.7.11 (supported in all AWS regions) 5.6.35 (supported in all AWS regions) 5.6.34 (supported in all AWS regions) 5.6.29 (supported in all AWS regions) 5.6.27 (supported in all regions except us-east-2, ca-central-1, eu-west-2) 5.5.54 (supported in all AWS regions) 5.5.53 (supported in all AWS regions) 5.5.46 (supported in all AWS regions) Oracle 12c 12.1.0.2.v8 (supported for EE in all AWS regions, and SE2 in all AWS regions except us-gov-west-1) 12.1.0.2.v7 (supported for EE in all AWS regions, and SE2 in all AWS regions except us-gov-west-1) 12.1.0.2.v6 (supported for EE in all AWS regions, and SE2 in all AWS regions except us-gov-west-1) 12.1.0.2.v5 (supported for EE in all AWS regions, and SE2 in all AWS regions except us-gov-west-1) 12.1.0.2.v4 (supported for EE in all AWS regions, and SE2 in all AWS regions except us-gov-west-1) 12.1.0.2.v3 (supported for EE in all AWS regions, and SE2 in all AWS regions except us-gov-west-1) 12.1.0.2.v2 (supported for EE in all AWS regions, and SE2 in all AWS regions except us-gov-west-1) 12.1.0.2.v1 (supported for EE in all AWS regions, and SE2 in all AWS regions except us-gov-west-1) Oracle 11g 11.2.0.4.v12 (supported for EE, SE1, and SE, in all AWS regions) 11.2.0.4.v11 (supported for EE, SE1, and SE, in all AWS regions) 11.2.0.4.v10 (supported for EE, SE1, and SE, in all AWS regions) 11.2.0.4.v9 (supported for EE, SE1, and SE, in all AWS regions) 11.2.0.4.v8 (supported for EE, SE1, and SE, in all AWS regions) 11.2.0.4.v7 (supported for EE, SE1, and SE, in all AWS regions) 11.2.0.4.v6 (supported for EE, SE1, and SE, in all AWS regions) 11.2.0.4.v5 (supported for EE, SE1, and SE, in all AWS regions) 11.2.0.4.v4 (supported for EE, SE1, and SE, in all AWS regions) 11.2.0.4.v3 (supported for EE, SE1, and SE, in all AWS regions) 11.2.0.4.v1 (supported for EE, SE1, and SE, in all AWS regions) PostgreSQL Version 9.6.x: 9.6.1 | 9.6.2 | 9.6.3 Version 9.5.x: 9.5.6 | 9.5.4 | 9.5.2 Version 9.4.x: 9.4.11 | 9.4.9 | 9.4.7 Version 9.3.x: 9.3.16 | 9.3.14 | 9.3.12 - */ - EngineVersion?: String; - /** - * Indicates that minor engine upgrades will be applied automatically to the DB instance during the maintenance window. Default: true - */ - AutoMinorVersionUpgrade?: BooleanOptional; - /** - * License model information for this DB instance. Valid values: license-included | bring-your-own-license | general-public-license - */ - LicenseModel?: String; - /** - * The amount of Provisioned IOPS (input/output operations per second) to be initially allocated for the DB instance. Constraints: Must be a multiple between 3 and 10 of the storage amount for the DB instance. Must also be an integer multiple of 1000. For example, if the size of your DB instance is 500 GB, then your Iops value can be 2000, 3000, 4000, or 5000. - */ - Iops?: IntegerOptional; - /** - * Indicates that the DB instance should be associated with the specified option group. Permanent options, such as the TDE option for Oracle Advanced Security TDE, cannot be removed from an option group, and that option group cannot be removed from a DB instance once it is associated with a DB instance - */ - OptionGroupName?: String; - /** - * For supported engines, indicates that the DB instance should be associated with the specified CharacterSet. Amazon Aurora Not applicable. The character set is managed by the DB cluster. For more information, see CreateDBCluster. - */ - CharacterSetName?: String; - /** - * Specifies the accessibility options for the DB instance. A value of true specifies an Internet-facing instance with a publicly resolvable DNS name, which resolves to a public IP address. A value of false specifies an internal instance with a DNS name that resolves to a private IP address. Default: The default behavior varies depending on whether a VPC has been requested or not. The following list shows the default behavior in each case. Default VPC: true VPC: false If no DB subnet group has been specified as part of the request and the PubliclyAccessible value has not been set, the DB instance will be publicly accessible. If a specific DB subnet group has been specified as part of the request and the PubliclyAccessible value has not been set, the DB instance will be private. - */ - PubliclyAccessible?: BooleanOptional; - Tags?: TagList; - /** - * The identifier of the DB cluster that the instance will belong to. For information on creating a DB cluster, see CreateDBCluster. Type: String - */ - DBClusterIdentifier?: String; - /** - * Specifies the storage type to be associated with the DB instance. Valid values: standard | gp2 | io1 If you specify io1, you must also include a value for the Iops parameter. Default: io1 if the Iops parameter is specified; otherwise standard - */ - StorageType?: String; - /** - * The ARN from the Key Store with which to associate the instance for TDE encryption. - */ - TdeCredentialArn?: String; - /** - * The password for the given ARN from the Key Store in order to access the device. - */ - TdeCredentialPassword?: String; - /** - * Specifies whether the DB instance is encrypted. Amazon Aurora Not applicable. The encryption for DB instances is managed by the DB cluster. For more information, see CreateDBCluster. Default: false - */ - StorageEncrypted?: BooleanOptional; - /** - * The KMS key identifier for an encrypted DB instance. The KMS key identifier is the Amazon Resource Name (ARN) for the KMS encryption key. If you are creating a DB instance with the same AWS account that owns the KMS encryption key used to encrypt the new DB instance, then you can use the KMS key alias instead of the ARN for the KM encryption key. Amazon Aurora Not applicable. The KMS key identifier is managed by the DB cluster. For more information, see CreateDBCluster. If the StorageEncrypted parameter is true, and you do not specify a value for the KmsKeyId parameter, then Amazon RDS will use your default encryption key. AWS KMS creates the default encryption key for your AWS account. Your AWS account has a different default encryption key for each AWS Region. - */ - KmsKeyId?: String; - /** - * Specify the Active Directory Domain to create the instance in. - */ - Domain?: String; - /** - * True to copy all tags from the DB instance to snapshots of the DB instance; otherwise false. The default is false. - */ - CopyTagsToSnapshot?: BooleanOptional; - /** - * The interval, in seconds, between points when Enhanced Monitoring metrics are collected for the DB instance. To disable collecting Enhanced Monitoring metrics, specify 0. The default is 0. If MonitoringRoleArn is specified, then you must also set MonitoringInterval to a value other than 0. Valid Values: 0, 1, 5, 10, 15, 30, 60 - */ - MonitoringInterval?: IntegerOptional; - /** - * The ARN for the IAM role that permits RDS to send enhanced monitoring metrics to CloudWatch Logs. For example, arn:aws:iam:123456789012:role/emaccess. For information on creating a monitoring role, go to Setting Up and Enabling Enhanced Monitoring. If MonitoringInterval is set to a value other than 0, then you must supply a MonitoringRoleArn value. - */ - MonitoringRoleArn?: String; - /** - * Specify the name of the IAM role to be used when making API calls to the Directory Service. - */ - DomainIAMRoleName?: String; - /** - * A value that specifies the order in which an Aurora Replica is promoted to the primary instance after a failure of the existing primary instance. For more information, see Fault Tolerance for an Aurora DB Cluster. Default: 1 Valid Values: 0 - 15 - */ - PromotionTier?: IntegerOptional; - /** - * The time zone of the DB instance. The time zone parameter is currently supported only by Microsoft SQL Server. - */ - Timezone?: String; - /** - * True to enable mapping of AWS Identity and Access Management (IAM) accounts to database accounts; otherwise false. You can enable IAM database authentication for the following database engines: Amazon Aurora Not applicable. Mapping AWS IAM accounts to database accounts is managed by the DB cluster. For more information, see CreateDBCluster. MySQL For MySQL 5.6, minor version 5.6.34 or higher For MySQL 5.7, minor version 5.7.16 or higher Default: false - */ - EnableIAMDatabaseAuthentication?: BooleanOptional; - EnablePerformanceInsights?: BooleanOptional; - PerformanceInsightsKMSKeyId?: String; - } - export interface CreateDBInstanceReadReplicaMessage { - /** - * The DB instance identifier of the Read Replica. This identifier is the unique key that identifies a DB instance. This parameter is stored as a lowercase string. - */ - DBInstanceIdentifier: String; - /** - * The identifier of the DB instance that will act as the source for the Read Replica. Each DB instance can have up to five Read Replicas. Constraints: Must be the identifier of an existing MySQL, MariaDB, or PostgreSQL DB instance. Can specify a DB instance that is a MySQL Read Replica only if the source is running MySQL 5.6. Can specify a DB instance that is a PostgreSQL DB instance only if the source is running PostgreSQL 9.3.5 or later (9.4.7 and higher for cross region replication). The specified DB instance must have automatic backups enabled, its backup retention period must be greater than 0. If the source DB instance is in the same AWS Region as the Read Replica, specify a valid DB instance identifier. If the source DB instance is in a different AWS Region than the Read Replica, specify a valid DB instance ARN. For more information, go to Constructing a Amazon RDS Amazon Resource Name (ARN). - */ - SourceDBInstanceIdentifier: String; - /** - * The compute and memory capacity of the Read Replica. Note that not all instance classes are available in all regions for all DB engines. Valid Values: db.m1.small | db.m1.medium | db.m1.large | db.m1.xlarge | db.m2.xlarge |db.m2.2xlarge | db.m2.4xlarge | db.m3.medium | db.m3.large | db.m3.xlarge | db.m3.2xlarge | db.m4.large | db.m4.xlarge | db.m4.2xlarge | db.m4.4xlarge | db.m4.10xlarge | db.r3.large | db.r3.xlarge | db.r3.2xlarge | db.r3.4xlarge | db.r3.8xlarge | db.t2.micro | db.t2.small | db.t2.medium | db.t2.large Default: Inherits from the source DB instance. - */ - DBInstanceClass?: String; - /** - * The Amazon EC2 Availability Zone that the Read Replica will be created in. Default: A random, system-chosen Availability Zone in the endpoint's AWS Region. Example: us-east-1d - */ - AvailabilityZone?: String; - /** - * The port number that the DB instance uses for connections. Default: Inherits from the source DB instance Valid Values: 1150-65535 - */ - Port?: IntegerOptional; - /** - * Indicates that minor engine upgrades will be applied automatically to the Read Replica during the maintenance window. Default: Inherits from the source DB instance - */ - AutoMinorVersionUpgrade?: BooleanOptional; - /** - * The amount of Provisioned IOPS (input/output operations per second) to be initially allocated for the DB instance. - */ - Iops?: IntegerOptional; - /** - * The option group the DB instance will be associated with. If omitted, the default option group for the engine specified will be used. - */ - OptionGroupName?: String; - /** - * Specifies the accessibility options for the DB instance. A value of true specifies an Internet-facing instance with a publicly resolvable DNS name, which resolves to a public IP address. A value of false specifies an internal instance with a DNS name that resolves to a private IP address. Default: The default behavior varies depending on whether a VPC has been requested or not. The following list shows the default behavior in each case. Default VPC:true VPC:false If no DB subnet group has been specified as part of the request and the PubliclyAccessible value has not been set, the DB instance will be publicly accessible. If a specific DB subnet group has been specified as part of the request and the PubliclyAccessible value has not been set, the DB instance will be private. - */ - PubliclyAccessible?: BooleanOptional; - Tags?: TagList; - /** - * Specifies a DB subnet group for the DB instance. The new DB instance will be created in the VPC associated with the DB subnet group. If no DB subnet group is specified, then the new DB instance is not created in a VPC. Constraints: Can only be specified if the source DB instance identifier specifies a DB instance in another AWS Region. If supplied, must match the name of an existing DBSubnetGroup. The specified DB subnet group must be in the same AWS Region in which the operation is running. All Read Replicas in one AWS Region that are created from the same source DB instance must either:> Specify DB subnet groups from the same VPC. All these Read Replicas will be created in the same VPC. Not specify a DB subnet group. All these Read Replicas will be created outside of any VPC. Example: mySubnetgroup - */ - DBSubnetGroupName?: String; - /** - * Specifies the storage type to be associated with the Read Replica. Valid values: standard | gp2 | io1 If you specify io1, you must also include a value for the Iops parameter. Default: io1 if the Iops parameter is specified; otherwise standard - */ - StorageType?: String; - /** - * True to copy all tags from the Read Replica to snapshots of the Read Replica; otherwise false. The default is false. - */ - CopyTagsToSnapshot?: BooleanOptional; - /** - * The interval, in seconds, between points when Enhanced Monitoring metrics are collected for the Read Replica. To disable collecting Enhanced Monitoring metrics, specify 0. The default is 0. If MonitoringRoleArn is specified, then you must also set MonitoringInterval to a value other than 0. Valid Values: 0, 1, 5, 10, 15, 30, 60 - */ - MonitoringInterval?: IntegerOptional; - /** - * The ARN for the IAM role that permits RDS to send enhanced monitoring metrics to CloudWatch Logs. For example, arn:aws:iam:123456789012:role/emaccess. For information on creating a monitoring role, go to To create an IAM role for Amazon RDS Enhanced Monitoring. If MonitoringInterval is set to a value other than 0, then you must supply a MonitoringRoleArn value. - */ - MonitoringRoleArn?: String; - /** - * The AWS KMS key ID for an encrypted Read Replica. The KMS key ID is the Amazon Resource Name (ARN), KMS key identifier, or the KMS key alias for the KMS encryption key. If you specify this parameter when you create a Read Replica from an unencrypted DB instance, the Read Replica is encrypted. If you create an encrypted Read Replica in the same AWS Region as the source DB instance, then you do not have to specify a value for this parameter. The Read Replica is encrypted with the same KMS key as the source DB instance. If you create an encrypted Read Replica in a different AWS Region, then you must specify a KMS key for the destination AWS Region. KMS encryption keys are specific to the AWS Region that they are created in, and you cannot use encryption keys from one AWS Region in another AWS Region. - */ - KmsKeyId?: String; - /** - * The URL that contains a Signature Version 4 signed request for the CreateDBInstanceReadReplica API action in the source AWS Region that contains the source DB instance. You must specify this parameter when you create an encrypted Read Replica from another AWS Region by using the Amazon RDS API. You can specify the source region option instead of this parameter when you create an encrypted Read Replica from another AWS Region by using the AWS CLI. The presigned URL must be a valid request for the CreateDBInstanceReadReplica API action that can be executed in the source AWS Region that contains the encrypted source DB instance. The presigned URL request must contain the following parameter values: DestinationRegion - The AWS Region that the encrypted Read Replica will be created in. This AWS Region is the same one where the CreateDBInstanceReadReplica action is called that contains this presigned URL. For example, if you create an encrypted DB instance in the us-west-1 region, from a source DB instance in the us-east-2 region, then you call the CreateDBInstanceReadReplica action in the us-east-1 region and provide a presigned URL that contains a call to the CreateDBInstanceReadReplica action in the us-west-2 region. For this example, the DestinationRegion in the presigned URL must be set to the us-east-1 region. KmsKeyId - The KMS key identifier for the key to use to encrypt the Read Replica in the destination AWS Region. This is the same identifier for both the CreateDBInstanceReadReplica action that is called in the destination AWS Region, and the action contained in the presigned URL. SourceDBInstanceIdentifier - The DB instance identifier for the encrypted DB instance to be replicated. This identifier must be in the Amazon Resource Name (ARN) format for the source AWS Region. For example, if you are creating an encrypted Read Replica from a DB instance in the us-west-2 region, then your SourceDBInstanceIdentifier looks like the following example: arn:aws:rds:us-west-2:123456789012:instance:mysql-instance1-20161115. To learn how to generate a Signature Version 4 signed request, see Authenticating Requests: Using Query Parameters (AWS Signature Version 4) and Signature Version 4 Signing Process. If you supply a value for this operation's SourceRegion parameter, a pre-signed URL will be calculated on your behalf. - */ - PreSignedUrl?: String; - /** - * True to enable mapping of AWS Identity and Access Management (IAM) accounts to database accounts; otherwise false. You can enable IAM database authentication for the following database engines For MySQL 5.6, minor version 5.6.34 or higher For MySQL 5.7, minor version 5.7.16 or higher Aurora 5.6 or higher. Default: false - */ - EnableIAMDatabaseAuthentication?: BooleanOptional; - EnablePerformanceInsights?: BooleanOptional; - PerformanceInsightsKMSKeyId?: String; - /** - * The ID of the region that contains the source for the read replica. - */ - SourceRegion?: String; - } - export interface CreateDBInstanceReadReplicaResult { - DBInstance?: DBInstance; - } - export interface CreateDBInstanceResult { - DBInstance?: DBInstance; - } - export interface CreateDBParameterGroupMessage { - /** - * The name of the DB parameter group. Constraints: Must be 1 to 255 letters, numbers, or hyphens. First character must be a letter Cannot end with a hyphen or contain two consecutive hyphens This value is stored as a lowercase string. - */ - DBParameterGroupName: String; - /** - * The DB parameter group family name. A DB parameter group can be associated with one and only one DB parameter group family, and can be applied only to a DB instance running a database engine and engine version compatible with that DB parameter group family. - */ - DBParameterGroupFamily: String; - /** - * The description for the DB parameter group. - */ - Description: String; - Tags?: TagList; - } - export interface CreateDBParameterGroupResult { - DBParameterGroup?: DBParameterGroup; - } - export interface CreateDBSecurityGroupMessage { - /** - * The name for the DB security group. This value is stored as a lowercase string. Constraints: Must be 1 to 255 letters, numbers, or hyphens. First character must be a letter Cannot end with a hyphen or contain two consecutive hyphens Must not be "Default" Example: mysecuritygroup - */ - DBSecurityGroupName: String; - /** - * The description for the DB security group. - */ - DBSecurityGroupDescription: String; - Tags?: TagList; - } - export interface CreateDBSecurityGroupResult { - DBSecurityGroup?: DBSecurityGroup; - } - export interface CreateDBSnapshotMessage { - /** - * The identifier for the DB snapshot. Constraints: Cannot be null, empty, or blank Must contain from 1 to 255 letters, numbers, or hyphens First character must be a letter Cannot end with a hyphen or contain two consecutive hyphens Example: my-snapshot-id - */ - DBSnapshotIdentifier: String; - /** - * The identifier of the DB instance that you want to create the snapshot of. Constraints: Must match the identifier of an existing DBInstance. - */ - DBInstanceIdentifier: String; - Tags?: TagList; - } - export interface CreateDBSnapshotResult { - DBSnapshot?: DBSnapshot; - } - export interface CreateDBSubnetGroupMessage { - /** - * The name for the DB subnet group. This value is stored as a lowercase string. Constraints: Must contain no more than 255 letters, numbers, periods, underscores, spaces, or hyphens. Must not be default. Example: mySubnetgroup - */ - DBSubnetGroupName: String; - /** - * The description for the DB subnet group. - */ - DBSubnetGroupDescription: String; - /** - * The EC2 Subnet IDs for the DB subnet group. - */ - SubnetIds: SubnetIdentifierList; - Tags?: TagList; - } - export interface CreateDBSubnetGroupResult { - DBSubnetGroup?: DBSubnetGroup; - } - export interface CreateEventSubscriptionMessage { - /** - * The name of the subscription. Constraints: The name must be less than 255 characters. - */ - SubscriptionName: String; - /** - * The Amazon Resource Name (ARN) of the SNS topic created for event notification. The ARN is created by Amazon SNS when you create a topic and subscribe to it. - */ - SnsTopicArn: String; - /** - * The type of source that will be generating the events. For example, if you want to be notified of events generated by a DB instance, you would set this parameter to db-instance. if this value is not specified, all events are returned. Valid values: db-instance | db-cluster | db-parameter-group | db-security-group | db-snapshot | db-cluster-snapshot - */ - SourceType?: String; - /** - * A list of event categories for a SourceType that you want to subscribe to. You can see a list of the categories for a given SourceType in the Events topic in the Amazon RDS User Guide or by using the DescribeEventCategories action. - */ - EventCategories?: EventCategoriesList; - /** - * The list of identifiers of the event sources for which events will be returned. If not specified, then all sources are included in the response. An identifier must begin with a letter and must contain only ASCII letters, digits, and hyphens; it cannot end with a hyphen or contain two consecutive hyphens. Constraints: If SourceIds are supplied, SourceType must also be provided. If the source type is a DB instance, then a DBInstanceIdentifier must be supplied. If the source type is a DB security group, a DBSecurityGroupName must be supplied. If the source type is a DB parameter group, a DBParameterGroupName must be supplied. If the source type is a DB snapshot, a DBSnapshotIdentifier must be supplied. - */ - SourceIds?: SourceIdsList; - /** - * A Boolean value; set to true to activate the subscription, set to false to create the subscription but not active it. - */ - Enabled?: BooleanOptional; - Tags?: TagList; - } - export interface CreateEventSubscriptionResult { - EventSubscription?: EventSubscription; - } - export interface CreateOptionGroupMessage { - /** - * Specifies the name of the option group to be created. Constraints: Must be 1 to 255 letters, numbers, or hyphens First character must be a letter Cannot end with a hyphen or contain two consecutive hyphens Example: myoptiongroup - */ - OptionGroupName: String; - /** - * Specifies the name of the engine that this option group should be associated with. - */ - EngineName: String; - /** - * Specifies the major version of the engine that this option group should be associated with. - */ - MajorEngineVersion: String; - /** - * The description of the option group. - */ - OptionGroupDescription: String; - Tags?: TagList; - } - export interface CreateOptionGroupResult { - OptionGroup?: OptionGroup; - } - export interface DBCluster { - /** - * For all database engines except Amazon Aurora, AllocatedStorage specifies the allocated storage size in gigabytes (GB). For Aurora, AllocatedStorage always returns 1, because Aurora DB cluster storage size is not fixed, but instead automatically adjusts as needed. - */ - AllocatedStorage?: IntegerOptional; - /** - * Provides the list of EC2 Availability Zones that instances in the DB cluster can be created in. - */ - AvailabilityZones?: AvailabilityZones; - /** - * Specifies the number of days for which automatic DB snapshots are retained. - */ - BackupRetentionPeriod?: IntegerOptional; - /** - * If present, specifies the name of the character set that this cluster is associated with. - */ - CharacterSetName?: String; - /** - * Contains the name of the initial database of this DB cluster that was provided at create time, if one was specified when the DB cluster was created. This same name is returned for the life of the DB cluster. - */ - DatabaseName?: String; - /** - * Contains a user-supplied DB cluster identifier. This identifier is the unique key that identifies a DB cluster. - */ - DBClusterIdentifier?: String; - /** - * Specifies the name of the DB cluster parameter group for the DB cluster. - */ - DBClusterParameterGroup?: String; - /** - * Specifies information on the subnet group associated with the DB cluster, including the name, description, and subnets in the subnet group. - */ - DBSubnetGroup?: String; - /** - * Specifies the current state of this DB cluster. - */ - Status?: String; - /** - * Specifies the progress of the operation as a percentage. - */ - PercentProgress?: String; - /** - * Specifies the earliest time to which a database can be restored with point-in-time restore. - */ - EarliestRestorableTime?: TStamp; - /** - * Specifies the connection endpoint for the primary instance of the DB cluster. - */ - Endpoint?: String; - /** - * The reader endpoint for the DB cluster. The reader endpoint for a DB cluster load-balances connections across the Aurora Replicas that are available in a DB cluster. As clients request new connections to the reader endpoint, Aurora distributes the connection requests among the Aurora Replicas in the DB cluster. This functionality can help balance your read workload across multiple Aurora Replicas in your DB cluster. If a failover occurs, and the Aurora Replica that you are connected to is promoted to be the primary instance, your connection will be dropped. To continue sending your read workload to other Aurora Replicas in the cluster, you can then reconnect to the reader endpoint. - */ - ReaderEndpoint?: String; - /** - * Specifies whether the DB cluster has instances in multiple Availability Zones. - */ - MultiAZ?: Boolean; - /** - * Provides the name of the database engine to be used for this DB cluster. - */ - Engine?: String; - /** - * Indicates the database engine version. - */ - EngineVersion?: String; - /** - * Specifies the latest time to which a database can be restored with point-in-time restore. - */ - LatestRestorableTime?: TStamp; - /** - * Specifies the port that the database engine is listening on. - */ - Port?: IntegerOptional; - /** - * Contains the master username for the DB cluster. - */ - MasterUsername?: String; - /** - * Provides the list of option group memberships for this DB cluster. - */ - DBClusterOptionGroupMemberships?: DBClusterOptionGroupMemberships; - /** - * Specifies the daily time range during which automated backups are created if automated backups are enabled, as determined by the BackupRetentionPeriod. - */ - PreferredBackupWindow?: String; - /** - * Specifies the weekly time range during which system maintenance can occur, in Universal Coordinated Time (UTC). - */ - PreferredMaintenanceWindow?: String; - /** - * Contains the identifier of the source DB cluster if this DB cluster is a Read Replica. - */ - ReplicationSourceIdentifier?: String; - /** - * Contains one or more identifiers of the Read Replicas associated with this DB cluster. - */ - ReadReplicaIdentifiers?: ReadReplicaIdentifierList; - /** - * Provides the list of instances that make up the DB cluster. - */ - DBClusterMembers?: DBClusterMemberList; - /** - * Provides a list of VPC security groups that the DB cluster belongs to. - */ - VpcSecurityGroups?: VpcSecurityGroupMembershipList; - /** - * Specifies the ID that Amazon Route 53 assigns when you create a hosted zone. - */ - HostedZoneId?: String; - /** - * Specifies whether the DB cluster is encrypted. - */ - StorageEncrypted?: Boolean; - /** - * If StorageEncrypted is true, the KMS key identifier for the encrypted DB cluster. - */ - KmsKeyId?: String; - /** - * The region-unique, immutable identifier for the DB cluster. This identifier is found in AWS CloudTrail log entries whenever the KMS key for the DB cluster is accessed. - */ - DbClusterResourceId?: String; - /** - * The Amazon Resource Name (ARN) for the DB cluster. - */ - DBClusterArn?: String; - /** - * Provides a list of the AWS Identity and Access Management (IAM) roles that are associated with the DB cluster. IAM roles that are associated with a DB cluster grant permission for the DB cluster to access other AWS services on your behalf. - */ - AssociatedRoles?: DBClusterRoles; - /** - * True if mapping of AWS Identity and Access Management (IAM) accounts to database accounts is enabled; otherwise false. - */ - IAMDatabaseAuthenticationEnabled?: Boolean; - /** - * Identifies the clone group to which the DB cluster is associated. - */ - CloneGroupId?: String; - /** - * Specifies the time when the DB cluster was created, in Universal Coordinated Time (UTC). - */ - ClusterCreateTime?: TStamp; - } - export type DBClusterList = DBCluster[]; - export interface DBClusterMember { - /** - * Specifies the instance identifier for this member of the DB cluster. - */ - DBInstanceIdentifier?: String; - /** - * Value that is true if the cluster member is the primary instance for the DB cluster and false otherwise. - */ - IsClusterWriter?: Boolean; - /** - * Specifies the status of the DB cluster parameter group for this member of the DB cluster. - */ - DBClusterParameterGroupStatus?: String; - /** - * A value that specifies the order in which an Aurora Replica is promoted to the primary instance after a failure of the existing primary instance. For more information, see Fault Tolerance for an Aurora DB Cluster. - */ - PromotionTier?: IntegerOptional; - } - export type DBClusterMemberList = DBClusterMember[]; - export interface DBClusterMessage { - /** - * A pagination token that can be used in a subsequent DescribeDBClusters request. - */ - Marker?: String; - /** - * Contains a list of DB clusters for the user. - */ - DBClusters?: DBClusterList; - } - export type DBClusterOptionGroupMemberships = DBClusterOptionGroupStatus[]; - export interface DBClusterOptionGroupStatus { - /** - * Specifies the name of the DB cluster option group. - */ - DBClusterOptionGroupName?: String; - /** - * Specifies the status of the DB cluster option group. - */ - Status?: String; - } - export interface DBClusterParameterGroup { - /** - * Provides the name of the DB cluster parameter group. - */ - DBClusterParameterGroupName?: String; - /** - * Provides the name of the DB parameter group family that this DB cluster parameter group is compatible with. - */ - DBParameterGroupFamily?: String; - /** - * Provides the customer-specified description for this DB cluster parameter group. - */ - Description?: String; - /** - * The Amazon Resource Name (ARN) for the DB cluster parameter group. - */ - DBClusterParameterGroupArn?: String; - } - export interface DBClusterParameterGroupDetails { - /** - * Provides a list of parameters for the DB cluster parameter group. - */ - Parameters?: ParametersList; - /** - * An optional pagination token provided by a previous DescribeDBClusterParameters request. If this parameter is specified, the response includes only records beyond the marker, up to the value specified by MaxRecords . - */ - Marker?: String; - } - export type DBClusterParameterGroupList = DBClusterParameterGroup[]; - export interface DBClusterParameterGroupNameMessage { - /** - * The name of the DB cluster parameter group. Constraints: Must be 1 to 255 letters or numbers. First character must be a letter Cannot end with a hyphen or contain two consecutive hyphens This value is stored as a lowercase string. - */ - DBClusterParameterGroupName?: String; - } - export interface DBClusterParameterGroupsMessage { - /** - * An optional pagination token provided by a previous DescribeDBClusterParameterGroups request. If this parameter is specified, the response includes only records beyond the marker, up to the value specified by MaxRecords. - */ - Marker?: String; - /** - * A list of DB cluster parameter groups. - */ - DBClusterParameterGroups?: DBClusterParameterGroupList; - } - export interface DBClusterRole { - /** - * The Amazon Resource Name (ARN) of the IAM role that is associated with the DB cluster. - */ - RoleArn?: String; - /** - * Describes the state of association between the IAM role and the DB cluster. The Status property returns one of the following values: ACTIVE - the IAM role ARN is associated with the DB cluster and can be used to access other AWS services on your behalf. PENDING - the IAM role ARN is being associated with the DB cluster. INVALID - the IAM role ARN is associated with the DB cluster, but the DB cluster is unable to assume the IAM role in order to access other AWS services on your behalf. - */ - Status?: String; - } - export type DBClusterRoles = DBClusterRole[]; - export interface DBClusterSnapshot { - /** - * Provides the list of EC2 Availability Zones that instances in the DB cluster snapshot can be restored in. - */ - AvailabilityZones?: AvailabilityZones; - /** - * Specifies the identifier for the DB cluster snapshot. - */ - DBClusterSnapshotIdentifier?: String; - /** - * Specifies the DB cluster identifier of the DB cluster that this DB cluster snapshot was created from. - */ - DBClusterIdentifier?: String; - /** - * Provides the time when the snapshot was taken, in Universal Coordinated Time (UTC). - */ - SnapshotCreateTime?: TStamp; - /** - * Specifies the name of the database engine. - */ - Engine?: String; - /** - * Specifies the allocated storage size in gigabytes (GB). - */ - AllocatedStorage?: Integer; - /** - * Specifies the status of this DB cluster snapshot. - */ - Status?: String; - /** - * Specifies the port that the DB cluster was listening on at the time of the snapshot. - */ - Port?: Integer; - /** - * Provides the VPC ID associated with the DB cluster snapshot. - */ - VpcId?: String; - /** - * Specifies the time when the DB cluster was created, in Universal Coordinated Time (UTC). - */ - ClusterCreateTime?: TStamp; - /** - * Provides the master username for the DB cluster snapshot. - */ - MasterUsername?: String; - /** - * Provides the version of the database engine for this DB cluster snapshot. - */ - EngineVersion?: String; - /** - * Provides the license model information for this DB cluster snapshot. - */ - LicenseModel?: String; - /** - * Provides the type of the DB cluster snapshot. - */ - SnapshotType?: String; - /** - * Specifies the percentage of the estimated data that has been transferred. - */ - PercentProgress?: Integer; - /** - * Specifies whether the DB cluster snapshot is encrypted. - */ - StorageEncrypted?: Boolean; - /** - * If StorageEncrypted is true, the KMS key identifier for the encrypted DB cluster snapshot. - */ - KmsKeyId?: String; - /** - * The Amazon Resource Name (ARN) for the DB cluster snapshot. - */ - DBClusterSnapshotArn?: String; - /** - * If the DB cluster snapshot was copied from a source DB cluster snapshot, the Amazon Resource Name (ARN) for the source DB cluster snapshot; otherwise, a null value. - */ - SourceDBClusterSnapshotArn?: String; - /** - * True if mapping of AWS Identity and Access Management (IAM) accounts to database accounts is enabled; otherwise false. - */ - IAMDatabaseAuthenticationEnabled?: Boolean; - } - export interface DBClusterSnapshotAttribute { - /** - * The name of the manual DB cluster snapshot attribute. The attribute named restore refers to the list of AWS accounts that have permission to copy or restore the manual DB cluster snapshot. For more information, see the ModifyDBClusterSnapshotAttribute API action. - */ - AttributeName?: String; - /** - * The value(s) for the manual DB cluster snapshot attribute. If the AttributeName field is set to restore, then this element returns a list of IDs of the AWS accounts that are authorized to copy or restore the manual DB cluster snapshot. If a value of all is in the list, then the manual DB cluster snapshot is public and available for any AWS account to copy or restore. - */ - AttributeValues?: AttributeValueList; - } - export type DBClusterSnapshotAttributeList = DBClusterSnapshotAttribute[]; - export interface DBClusterSnapshotAttributesResult { - /** - * The identifier of the manual DB cluster snapshot that the attributes apply to. - */ - DBClusterSnapshotIdentifier?: String; - /** - * The list of attributes and values for the manual DB cluster snapshot. - */ - DBClusterSnapshotAttributes?: DBClusterSnapshotAttributeList; - } - export type DBClusterSnapshotList = DBClusterSnapshot[]; - export interface DBClusterSnapshotMessage { - /** - * An optional pagination token provided by a previous DescribeDBClusterSnapshots request. If this parameter is specified, the response includes only records beyond the marker, up to the value specified by MaxRecords. - */ - Marker?: String; - /** - * Provides a list of DB cluster snapshots for the user. - */ - DBClusterSnapshots?: DBClusterSnapshotList; - } - export interface DBEngineVersion { - /** - * The name of the database engine. - */ - Engine?: String; - /** - * The version number of the database engine. - */ - EngineVersion?: String; - /** - * The name of the DB parameter group family for the database engine. - */ - DBParameterGroupFamily?: String; - /** - * The description of the database engine. - */ - DBEngineDescription?: String; - /** - * The description of the database engine version. - */ - DBEngineVersionDescription?: String; - /** - * The default character set for new instances of this engine version, if the CharacterSetName parameter of the CreateDBInstance API is not specified. - */ - DefaultCharacterSet?: CharacterSet; - /** - * A list of the character sets supported by this engine for the CharacterSetName parameter of the CreateDBInstance action. - */ - SupportedCharacterSets?: SupportedCharacterSetsList; - /** - * A list of engine versions that this database engine version can be upgraded to. - */ - ValidUpgradeTarget?: ValidUpgradeTargetList; - /** - * A list of the time zones supported by this engine for the Timezone parameter of the CreateDBInstance action. - */ - SupportedTimezones?: SupportedTimezonesList; - } - export type DBEngineVersionList = DBEngineVersion[]; - export interface DBEngineVersionMessage { - /** - * An optional pagination token provided by a previous request. If this parameter is specified, the response includes only records beyond the marker, up to the value specified by MaxRecords. - */ - Marker?: String; - /** - * A list of DBEngineVersion elements. - */ - DBEngineVersions?: DBEngineVersionList; - } - export interface DBInstance { - /** - * Contains a user-supplied database identifier. This identifier is the unique key that identifies a DB instance. - */ - DBInstanceIdentifier?: String; - /** - * Contains the name of the compute and memory capacity class of the DB instance. - */ - DBInstanceClass?: String; - /** - * Provides the name of the database engine to be used for this DB instance. - */ - Engine?: String; - /** - * Specifies the current state of this database. - */ - DBInstanceStatus?: String; - /** - * Contains the master username for the DB instance. - */ - MasterUsername?: String; - /** - * The meaning of this parameter differs according to the database engine you use. For example, this value returns MySQL, MariaDB, or PostgreSQL information when returning values from CreateDBInstanceReadReplica since Read Replicas are only supported for these engines. MySQL, MariaDB, SQL Server, PostgreSQL Contains the name of the initial database of this instance that was provided at create time, if one was specified when the DB instance was created. This same name is returned for the life of the DB instance. Type: String Oracle Contains the Oracle System ID (SID) of the created DB instance. Not shown when the returned parameters do not apply to an Oracle DB instance. - */ - DBName?: String; - /** - * Specifies the connection endpoint. - */ - Endpoint?: Endpoint; - /** - * Specifies the allocated storage size specified in gigabytes. - */ - AllocatedStorage?: Integer; - /** - * Provides the date and time the DB instance was created. - */ - InstanceCreateTime?: TStamp; - /** - * Specifies the daily time range during which automated backups are created if automated backups are enabled, as determined by the BackupRetentionPeriod. - */ - PreferredBackupWindow?: String; - /** - * Specifies the number of days for which automatic DB snapshots are retained. - */ - BackupRetentionPeriod?: Integer; - /** - * Provides List of DB security group elements containing only DBSecurityGroup.Name and DBSecurityGroup.Status subelements. - */ - DBSecurityGroups?: DBSecurityGroupMembershipList; - /** - * Provides a list of VPC security group elements that the DB instance belongs to. - */ - VpcSecurityGroups?: VpcSecurityGroupMembershipList; - /** - * Provides the list of DB parameter groups applied to this DB instance. - */ - DBParameterGroups?: DBParameterGroupStatusList; - /** - * Specifies the name of the Availability Zone the DB instance is located in. - */ - AvailabilityZone?: String; - /** - * Specifies information on the subnet group associated with the DB instance, including the name, description, and subnets in the subnet group. - */ - DBSubnetGroup?: DBSubnetGroup; - /** - * Specifies the weekly time range during which system maintenance can occur, in Universal Coordinated Time (UTC). - */ - PreferredMaintenanceWindow?: String; - /** - * Specifies that changes to the DB instance are pending. This element is only included when changes are pending. Specific changes are identified by subelements. - */ - PendingModifiedValues?: PendingModifiedValues; - /** - * Specifies the latest time to which a database can be restored with point-in-time restore. - */ - LatestRestorableTime?: TStamp; - /** - * Specifies if the DB instance is a Multi-AZ deployment. - */ - MultiAZ?: Boolean; - /** - * Indicates the database engine version. - */ - EngineVersion?: String; - /** - * Indicates that minor version patches are applied automatically. - */ - AutoMinorVersionUpgrade?: Boolean; - /** - * Contains the identifier of the source DB instance if this DB instance is a Read Replica. - */ - ReadReplicaSourceDBInstanceIdentifier?: String; - /** - * Contains one or more identifiers of the Read Replicas associated with this DB instance. - */ - ReadReplicaDBInstanceIdentifiers?: ReadReplicaDBInstanceIdentifierList; - /** - * Contains one or more identifiers of Aurora DB clusters that are Read Replicas of this DB instance. - */ - ReadReplicaDBClusterIdentifiers?: ReadReplicaDBClusterIdentifierList; - /** - * License model information for this DB instance. - */ - LicenseModel?: String; - /** - * Specifies the Provisioned IOPS (I/O operations per second) value. - */ - Iops?: IntegerOptional; - /** - * Provides the list of option group memberships for this DB instance. - */ - OptionGroupMemberships?: OptionGroupMembershipList; - /** - * If present, specifies the name of the character set that this instance is associated with. - */ - CharacterSetName?: String; - /** - * If present, specifies the name of the secondary Availability Zone for a DB instance with multi-AZ support. - */ - SecondaryAvailabilityZone?: String; - /** - * Specifies the accessibility options for the DB instance. A value of true specifies an Internet-facing instance with a publicly resolvable DNS name, which resolves to a public IP address. A value of false specifies an internal instance with a DNS name that resolves to a private IP address. Default: The default behavior varies depending on whether a VPC has been requested or not. The following list shows the default behavior in each case. Default VPC:true VPC:false If no DB subnet group has been specified as part of the request and the PubliclyAccessible value has not been set, the DB instance will be publicly accessible. If a specific DB subnet group has been specified as part of the request and the PubliclyAccessible value has not been set, the DB instance will be private. - */ - PubliclyAccessible?: Boolean; - /** - * The status of a Read Replica. If the instance is not a Read Replica, this will be blank. - */ - StatusInfos?: DBInstanceStatusInfoList; - /** - * Specifies the storage type associated with DB instance. - */ - StorageType?: String; - /** - * The ARN from the key store with which the instance is associated for TDE encryption. - */ - TdeCredentialArn?: String; - /** - * Specifies the port that the DB instance listens on. If the DB instance is part of a DB cluster, this can be a different port than the DB cluster port. - */ - DbInstancePort?: Integer; - /** - * If the DB instance is a member of a DB cluster, contains the name of the DB cluster that the DB instance is a member of. - */ - DBClusterIdentifier?: String; - /** - * Specifies whether the DB instance is encrypted. - */ - StorageEncrypted?: Boolean; - /** - * If StorageEncrypted is true, the KMS key identifier for the encrypted DB instance. - */ - KmsKeyId?: String; - /** - * The region-unique, immutable identifier for the DB instance. This identifier is found in AWS CloudTrail log entries whenever the KMS key for the DB instance is accessed. - */ - DbiResourceId?: String; - /** - * The identifier of the CA certificate for this DB instance. - */ - CACertificateIdentifier?: String; - /** - * The Active Directory Domain membership records associated with the DB instance. - */ - DomainMemberships?: DomainMembershipList; - /** - * Specifies whether tags are copied from the DB instance to snapshots of the DB instance. - */ - CopyTagsToSnapshot?: Boolean; - /** - * The interval, in seconds, between points when Enhanced Monitoring metrics are collected for the DB instance. - */ - MonitoringInterval?: IntegerOptional; - /** - * The Amazon Resource Name (ARN) of the Amazon CloudWatch Logs log stream that receives the Enhanced Monitoring metrics data for the DB instance. - */ - EnhancedMonitoringResourceArn?: String; - /** - * The ARN for the IAM role that permits RDS to send Enhanced Monitoring metrics to CloudWatch Logs. - */ - MonitoringRoleArn?: String; - /** - * A value that specifies the order in which an Aurora Replica is promoted to the primary instance after a failure of the existing primary instance. For more information, see Fault Tolerance for an Aurora DB Cluster. - */ - PromotionTier?: IntegerOptional; - /** - * The Amazon Resource Name (ARN) for the DB instance. - */ - DBInstanceArn?: String; - /** - * The time zone of the DB instance. In most cases, the Timezone element is empty. Timezone content appears only for Microsoft SQL Server DB instances that were created with a time zone specified. - */ - Timezone?: String; - /** - * True if mapping of AWS Identity and Access Management (IAM) accounts to database accounts is enabled; otherwise false. IAM database authentication can be enabled for the following database engines For MySQL 5.6, minor version 5.6.34 or higher For MySQL 5.7, minor version 5.7.16 or higher Aurora 5.6 or higher. To enable IAM database authentication for Aurora, see DBCluster Type. - */ - IAMDatabaseAuthenticationEnabled?: Boolean; - PerformanceInsightsEnabled?: BooleanOptional; - PerformanceInsightsKMSKeyId?: String; - } - export type DBInstanceList = DBInstance[]; - export interface DBInstanceMessage { - /** - * An optional pagination token provided by a previous request. If this parameter is specified, the response includes only records beyond the marker, up to the value specified by MaxRecords . - */ - Marker?: String; - /** - * A list of DBInstance instances. - */ - DBInstances?: DBInstanceList; - } - export interface DBInstanceStatusInfo { - /** - * This value is currently "read replication." - */ - StatusType?: String; - /** - * Boolean value that is true if the instance is operating normally, or false if the instance is in an error state. - */ - Normal?: Boolean; - /** - * Status of the DB instance. For a StatusType of read replica, the values can be replicating, error, stopped, or terminated. - */ - Status?: String; - /** - * Details of the error if there is an error for the instance. If the instance is not in an error state, this value is blank. - */ - Message?: String; - } - export type DBInstanceStatusInfoList = DBInstanceStatusInfo[]; - export interface DBParameterGroup { - /** - * Provides the name of the DB parameter group. - */ - DBParameterGroupName?: String; - /** - * Provides the name of the DB parameter group family that this DB parameter group is compatible with. - */ - DBParameterGroupFamily?: String; - /** - * Provides the customer-specified description for this DB parameter group. - */ - Description?: String; - /** - * The Amazon Resource Name (ARN) for the DB parameter group. - */ - DBParameterGroupArn?: String; - } - export interface DBParameterGroupDetails { - /** - * A list of Parameter values. - */ - Parameters?: ParametersList; - /** - * An optional pagination token provided by a previous request. If this parameter is specified, the response includes only records beyond the marker, up to the value specified by MaxRecords. - */ - Marker?: String; - } - export type DBParameterGroupList = DBParameterGroup[]; - export interface DBParameterGroupNameMessage { - /** - * Provides the name of the DB parameter group. - */ - DBParameterGroupName?: String; - } - export interface DBParameterGroupStatus { - /** - * The name of the DP parameter group. - */ - DBParameterGroupName?: String; - /** - * The status of parameter updates. - */ - ParameterApplyStatus?: String; - } - export type DBParameterGroupStatusList = DBParameterGroupStatus[]; - export interface DBParameterGroupsMessage { - /** - * An optional pagination token provided by a previous request. If this parameter is specified, the response includes only records beyond the marker, up to the value specified by MaxRecords. - */ - Marker?: String; - /** - * A list of DBParameterGroup instances. - */ - DBParameterGroups?: DBParameterGroupList; - } - export interface DBSecurityGroup { - /** - * Provides the AWS ID of the owner of a specific DB security group. - */ - OwnerId?: String; - /** - * Specifies the name of the DB security group. - */ - DBSecurityGroupName?: String; - /** - * Provides the description of the DB security group. - */ - DBSecurityGroupDescription?: String; - /** - * Provides the VpcId of the DB security group. - */ - VpcId?: String; - /** - * Contains a list of EC2SecurityGroup elements. - */ - EC2SecurityGroups?: EC2SecurityGroupList; - /** - * Contains a list of IPRange elements. - */ - IPRanges?: IPRangeList; - /** - * The Amazon Resource Name (ARN) for the DB security group. - */ - DBSecurityGroupArn?: String; - } - export interface DBSecurityGroupMembership { - /** - * The name of the DB security group. - */ - DBSecurityGroupName?: String; - /** - * The status of the DB security group. - */ - Status?: String; - } - export type DBSecurityGroupMembershipList = DBSecurityGroupMembership[]; - export interface DBSecurityGroupMessage { - /** - * An optional pagination token provided by a previous request. If this parameter is specified, the response includes only records beyond the marker, up to the value specified by MaxRecords. - */ - Marker?: String; - /** - * A list of DBSecurityGroup instances. - */ - DBSecurityGroups?: DBSecurityGroups; - } - export type DBSecurityGroupNameList = String[]; - export type DBSecurityGroups = DBSecurityGroup[]; - export interface DBSnapshot { - /** - * Specifies the identifier for the DB snapshot. - */ - DBSnapshotIdentifier?: String; - /** - * Specifies the DB instance identifier of the DB instance this DB snapshot was created from. - */ - DBInstanceIdentifier?: String; - /** - * Provides the time when the snapshot was taken, in Universal Coordinated Time (UTC). - */ - SnapshotCreateTime?: TStamp; - /** - * Specifies the name of the database engine. - */ - Engine?: String; - /** - * Specifies the allocated storage size in gigabytes (GB). - */ - AllocatedStorage?: Integer; - /** - * Specifies the status of this DB snapshot. - */ - Status?: String; - /** - * Specifies the port that the database engine was listening on at the time of the snapshot. - */ - Port?: Integer; - /** - * Specifies the name of the Availability Zone the DB instance was located in at the time of the DB snapshot. - */ - AvailabilityZone?: String; - /** - * Provides the VPC ID associated with the DB snapshot. - */ - VpcId?: String; - /** - * Specifies the time when the snapshot was taken, in Universal Coordinated Time (UTC). - */ - InstanceCreateTime?: TStamp; - /** - * Provides the master username for the DB snapshot. - */ - MasterUsername?: String; - /** - * Specifies the version of the database engine. - */ - EngineVersion?: String; - /** - * License model information for the restored DB instance. - */ - LicenseModel?: String; - /** - * Provides the type of the DB snapshot. - */ - SnapshotType?: String; - /** - * Specifies the Provisioned IOPS (I/O operations per second) value of the DB instance at the time of the snapshot. - */ - Iops?: IntegerOptional; - /** - * Provides the option group name for the DB snapshot. - */ - OptionGroupName?: String; - /** - * The percentage of the estimated data that has been transferred. - */ - PercentProgress?: Integer; - /** - * The AWS Region that the DB snapshot was created in or copied from. - */ - SourceRegion?: String; - /** - * The DB snapshot Amazon Resource Name (ARN) that the DB snapshot was copied from. It only has value in case of cross-customer or cross-region copy. - */ - SourceDBSnapshotIdentifier?: String; - /** - * Specifies the storage type associated with DB snapshot. - */ - StorageType?: String; - /** - * The ARN from the key store with which to associate the instance for TDE encryption. - */ - TdeCredentialArn?: String; - /** - * Specifies whether the DB snapshot is encrypted. - */ - Encrypted?: Boolean; - /** - * If Encrypted is true, the KMS key identifier for the encrypted DB snapshot. - */ - KmsKeyId?: String; - /** - * The Amazon Resource Name (ARN) for the DB snapshot. - */ - DBSnapshotArn?: String; - /** - * The time zone of the DB snapshot. In most cases, the Timezone element is empty. Timezone content appears only for snapshots taken from Microsoft SQL Server DB instances that were created with a time zone specified. - */ - Timezone?: String; - /** - * True if mapping of AWS Identity and Access Management (IAM) accounts to database accounts is enabled; otherwise false. - */ - IAMDatabaseAuthenticationEnabled?: Boolean; - } - export interface DBSnapshotAttribute { - /** - * The name of the manual DB snapshot attribute. The attribute named restore refers to the list of AWS accounts that have permission to copy or restore the manual DB cluster snapshot. For more information, see the ModifyDBSnapshotAttribute API action. - */ - AttributeName?: String; - /** - * The value or values for the manual DB snapshot attribute. If the AttributeName field is set to restore, then this element returns a list of IDs of the AWS accounts that are authorized to copy or restore the manual DB snapshot. If a value of all is in the list, then the manual DB snapshot is public and available for any AWS account to copy or restore. - */ - AttributeValues?: AttributeValueList; - } - export type DBSnapshotAttributeList = DBSnapshotAttribute[]; - export interface DBSnapshotAttributesResult { - /** - * The identifier of the manual DB snapshot that the attributes apply to. - */ - DBSnapshotIdentifier?: String; - /** - * The list of attributes and values for the manual DB snapshot. - */ - DBSnapshotAttributes?: DBSnapshotAttributeList; - } - export type DBSnapshotList = DBSnapshot[]; - export interface DBSnapshotMessage { - /** - * An optional pagination token provided by a previous request. If this parameter is specified, the response includes only records beyond the marker, up to the value specified by MaxRecords. - */ - Marker?: String; - /** - * A list of DBSnapshot instances. - */ - DBSnapshots?: DBSnapshotList; - } - export interface DBSubnetGroup { - /** - * The name of the DB subnet group. - */ - DBSubnetGroupName?: String; - /** - * Provides the description of the DB subnet group. - */ - DBSubnetGroupDescription?: String; - /** - * Provides the VpcId of the DB subnet group. - */ - VpcId?: String; - /** - * Provides the status of the DB subnet group. - */ - SubnetGroupStatus?: String; - /** - * Contains a list of Subnet elements. - */ - Subnets?: SubnetList; - /** - * The Amazon Resource Name (ARN) for the DB subnet group. - */ - DBSubnetGroupArn?: String; - } - export interface DBSubnetGroupMessage { - /** - * An optional pagination token provided by a previous request. If this parameter is specified, the response includes only records beyond the marker, up to the value specified by MaxRecords. - */ - Marker?: String; - /** - * A list of DBSubnetGroup instances. - */ - DBSubnetGroups?: DBSubnetGroups; - } - export type DBSubnetGroups = DBSubnetGroup[]; - export interface DeleteDBClusterMessage { - /** - * The DB cluster identifier for the DB cluster to be deleted. This parameter isn't case-sensitive. Constraints: Must match an existing DBClusterIdentifier. - */ - DBClusterIdentifier: String; - /** - * Determines whether a final DB cluster snapshot is created before the DB cluster is deleted. If true is specified, no DB cluster snapshot is created. If false is specified, a DB cluster snapshot is created before the DB cluster is deleted. You must specify a FinalDBSnapshotIdentifier parameter if SkipFinalSnapshot is false. Default: false - */ - SkipFinalSnapshot?: Boolean; - /** - * The DB cluster snapshot identifier of the new DB cluster snapshot created when SkipFinalSnapshot is set to false. Specifying this parameter and also setting the SkipFinalShapshot parameter to true results in an error. Constraints: Must be 1 to 255 letters, numbers, or hyphens. First character must be a letter Cannot end with a hyphen or contain two consecutive hyphens - */ - FinalDBSnapshotIdentifier?: String; - } - export interface DeleteDBClusterParameterGroupMessage { - /** - * The name of the DB cluster parameter group. Constraints: Must be the name of an existing DB cluster parameter group. You cannot delete a default DB cluster parameter group. Cannot be associated with any DB clusters. - */ - DBClusterParameterGroupName: String; - } - export interface DeleteDBClusterResult { - DBCluster?: DBCluster; - } - export interface DeleteDBClusterSnapshotMessage { - /** - * The identifier of the DB cluster snapshot to delete. Constraints: Must be the name of an existing DB cluster snapshot in the available state. - */ - DBClusterSnapshotIdentifier: String; - } - export interface DeleteDBClusterSnapshotResult { - DBClusterSnapshot?: DBClusterSnapshot; - } - export interface DeleteDBInstanceMessage { - /** - * The DB instance identifier for the DB instance to be deleted. This parameter isn't case-sensitive. Constraints: Must match the name of an existing DB instance. - */ - DBInstanceIdentifier: String; - /** - * Determines whether a final DB snapshot is created before the DB instance is deleted. If true is specified, no DBSnapshot is created. If false is specified, a DB snapshot is created before the DB instance is deleted. Note that when a DB instance is in a failure state and has a status of 'failed', 'incompatible-restore', or 'incompatible-network', it can only be deleted when the SkipFinalSnapshot parameter is set to "true". Specify true when deleting a Read Replica. The FinalDBSnapshotIdentifier parameter must be specified if SkipFinalSnapshot is false. Default: false - */ - SkipFinalSnapshot?: Boolean; - /** - * The DBSnapshotIdentifier of the new DBSnapshot created when SkipFinalSnapshot is set to false. Specifying this parameter and also setting the SkipFinalShapshot parameter to true results in an error. Constraints: Must be 1 to 255 letters or numbers. First character must be a letter Cannot end with a hyphen or contain two consecutive hyphens Cannot be specified when deleting a Read Replica. - */ - FinalDBSnapshotIdentifier?: String; - } - export interface DeleteDBInstanceResult { - DBInstance?: DBInstance; - } - export interface DeleteDBParameterGroupMessage { - /** - * The name of the DB parameter group. Constraints: Must be the name of an existing DB parameter group You cannot delete a default DB parameter group Cannot be associated with any DB instances - */ - DBParameterGroupName: String; - } - export interface DeleteDBSecurityGroupMessage { - /** - * The name of the DB security group to delete. You cannot delete the default DB security group. Constraints: Must be 1 to 255 letters, numbers, or hyphens. First character must be a letter Cannot end with a hyphen or contain two consecutive hyphens Must not be "Default" - */ - DBSecurityGroupName: String; - } - export interface DeleteDBSnapshotMessage { - /** - * The DBSnapshot identifier. Constraints: Must be the name of an existing DB snapshot in the available state. - */ - DBSnapshotIdentifier: String; - } - export interface DeleteDBSnapshotResult { - DBSnapshot?: DBSnapshot; - } - export interface DeleteDBSubnetGroupMessage { - /** - * The name of the database subnet group to delete. You cannot delete the default subnet group. Constraints: Constraints: Must match the name of an existing DBSubnetGroup. Must not be default. Example: mySubnetgroup - */ - DBSubnetGroupName: String; - } - export interface DeleteEventSubscriptionMessage { - /** - * The name of the RDS event notification subscription you want to delete. - */ - SubscriptionName: String; - } - export interface DeleteEventSubscriptionResult { - EventSubscription?: EventSubscription; - } - export interface DeleteOptionGroupMessage { - /** - * The name of the option group to be deleted. You cannot delete default option groups. - */ - OptionGroupName: String; - } - export interface DescribeAccountAttributesMessage { - } - export interface DescribeCertificatesMessage { - /** - * The user-supplied certificate identifier. If this parameter is specified, information for only the identified certificate is returned. This parameter isn't case-sensitive. Constraints: Must match an existing CertificateIdentifier. - */ - CertificateIdentifier?: String; - /** - * This parameter is not currently supported. - */ - Filters?: FilterList; - /** - * The maximum number of records to include in the response. If more records exist than the specified MaxRecords value, a pagination token called a marker is included in the response so that the remaining results can be retrieved. Default: 100 Constraints: Minimum 20, maximum 100. - */ - MaxRecords?: IntegerOptional; - /** - * An optional pagination token provided by a previous DescribeCertificates request. If this parameter is specified, the response includes only records beyond the marker, up to the value specified by MaxRecords. - */ - Marker?: String; - } - export interface DescribeDBClusterParameterGroupsMessage { - /** - * The name of a specific DB cluster parameter group to return details for. Constraints: If supplied, must match the name of an existing DBClusterParameterGroup. - */ - DBClusterParameterGroupName?: String; - /** - * This parameter is not currently supported. - */ - Filters?: FilterList; - /** - * The maximum number of records to include in the response. If more records exist than the specified MaxRecords value, a pagination token called a marker is included in the response so that the remaining results can be retrieved. Default: 100 Constraints: Minimum 20, maximum 100. - */ - MaxRecords?: IntegerOptional; - /** - * An optional pagination token provided by a previous DescribeDBClusterParameterGroups request. If this parameter is specified, the response includes only records beyond the marker, up to the value specified by MaxRecords. - */ - Marker?: String; - } - export interface DescribeDBClusterParametersMessage { - /** - * The name of a specific DB cluster parameter group to return parameter details for. Constraints: If supplied, must match the name of an existing DBClusterParameterGroup. - */ - DBClusterParameterGroupName: String; - /** - * A value that indicates to return only parameters for a specific source. Parameter sources can be engine, service, or customer. - */ - Source?: String; - /** - * This parameter is not currently supported. - */ - Filters?: FilterList; - /** - * The maximum number of records to include in the response. If more records exist than the specified MaxRecords value, a pagination token called a marker is included in the response so that the remaining results can be retrieved. Default: 100 Constraints: Minimum 20, maximum 100. - */ - MaxRecords?: IntegerOptional; - /** - * An optional pagination token provided by a previous DescribeDBClusterParameters request. If this parameter is specified, the response includes only records beyond the marker, up to the value specified by MaxRecords. - */ - Marker?: String; - } - export interface DescribeDBClusterSnapshotAttributesMessage { - /** - * The identifier for the DB cluster snapshot to describe the attributes for. - */ - DBClusterSnapshotIdentifier: String; - } - export interface DescribeDBClusterSnapshotAttributesResult { - DBClusterSnapshotAttributesResult?: DBClusterSnapshotAttributesResult; - } - export interface DescribeDBClusterSnapshotsMessage { - /** - * The ID of the DB cluster to retrieve the list of DB cluster snapshots for. This parameter cannot be used in conjunction with the DBClusterSnapshotIdentifier parameter. This parameter is not case-sensitive. Constraints: If supplied, must match the identifier of an existing DBCluster. - */ - DBClusterIdentifier?: String; - /** - * A specific DB cluster snapshot identifier to describe. This parameter cannot be used in conjunction with the DBClusterIdentifier parameter. This value is stored as a lowercase string. Constraints: If supplied, must match the identifier of an existing DBClusterSnapshot. If this identifier is for an automated snapshot, the SnapshotType parameter must also be specified. - */ - DBClusterSnapshotIdentifier?: String; - /** - * The type of DB cluster snapshots to be returned. You can specify one of the following values: automated - Return all DB cluster snapshots that have been automatically taken by Amazon RDS for my AWS account. manual - Return all DB cluster snapshots that have been taken by my AWS account. shared - Return all manual DB cluster snapshots that have been shared to my AWS account. public - Return all DB cluster snapshots that have been marked as public. If you don't specify a SnapshotType value, then both automated and manual DB cluster snapshots are returned. You can include shared DB cluster snapshots with these results by setting the IncludeShared parameter to true. You can include public DB cluster snapshots with these results by setting the IncludePublic parameter to true. The IncludeShared and IncludePublic parameters don't apply for SnapshotType values of manual or automated. The IncludePublic parameter doesn't apply when SnapshotType is set to shared. The IncludeShared parameter doesn't apply when SnapshotType is set to public. - */ - SnapshotType?: String; - /** - * This parameter is not currently supported. - */ - Filters?: FilterList; - /** - * The maximum number of records to include in the response. If more records exist than the specified MaxRecords value, a pagination token called a marker is included in the response so that the remaining results can be retrieved. Default: 100 Constraints: Minimum 20, maximum 100. - */ - MaxRecords?: IntegerOptional; - /** - * An optional pagination token provided by a previous DescribeDBClusterSnapshots request. If this parameter is specified, the response includes only records beyond the marker, up to the value specified by MaxRecords. - */ - Marker?: String; - /** - * Set this value to true to include shared manual DB cluster snapshots from other AWS accounts that this AWS account has been given permission to copy or restore, otherwise set this value to false. The default is false. You can give an AWS account permission to restore a manual DB cluster snapshot from another AWS account by the ModifyDBClusterSnapshotAttribute API action. - */ - IncludeShared?: Boolean; - /** - * Set this value to true to include manual DB cluster snapshots that are public and can be copied or restored by any AWS account, otherwise set this value to false. The default is false. The default is false. You can share a manual DB cluster snapshot as public by using the ModifyDBClusterSnapshotAttribute API action. - */ - IncludePublic?: Boolean; - } - export interface DescribeDBClustersMessage { - /** - * The user-supplied DB cluster identifier. If this parameter is specified, information from only the specific DB cluster is returned. This parameter isn't case-sensitive. Constraints: If supplied, must match an existing DBClusterIdentifier. - */ - DBClusterIdentifier?: String; - /** - * A filter that specifies one or more DB clusters to describe. Supported filters: db-cluster-id - Accepts DB cluster identifiers and DB cluster Amazon Resource Names (ARNs). The results list will only include information about the DB clusters identified by these ARNs. - */ - Filters?: FilterList; - /** - * The maximum number of records to include in the response. If more records exist than the specified MaxRecords value, a pagination token called a marker is included in the response so that the remaining results can be retrieved. Default: 100 Constraints: Minimum 20, maximum 100. - */ - MaxRecords?: IntegerOptional; - /** - * An optional pagination token provided by a previous DescribeDBClusters request. If this parameter is specified, the response includes only records beyond the marker, up to the value specified by MaxRecords. - */ - Marker?: String; - } - export interface DescribeDBEngineVersionsMessage { - /** - * The database engine to return. - */ - Engine?: String; - /** - * The database engine version to return. Example: 5.1.49 - */ - EngineVersion?: String; - /** - * The name of a specific DB parameter group family to return details for. Constraints: If supplied, must match an existing DBParameterGroupFamily. - */ - DBParameterGroupFamily?: String; - /** - * Not currently supported. - */ - Filters?: FilterList; - /** - * The maximum number of records to include in the response. If more than the MaxRecords value is available, a pagination token called a marker is included in the response so that the following results can be retrieved. Default: 100 Constraints: Minimum 20, maximum 100. - */ - MaxRecords?: IntegerOptional; - /** - * An optional pagination token provided by a previous request. If this parameter is specified, the response includes only records beyond the marker, up to the value specified by MaxRecords. - */ - Marker?: String; - /** - * Indicates that only the default version of the specified engine or engine and major version combination is returned. - */ - DefaultOnly?: Boolean; - /** - * If this parameter is specified and the requested engine supports the CharacterSetName parameter for CreateDBInstance, the response includes a list of supported character sets for each engine version. - */ - ListSupportedCharacterSets?: BooleanOptional; - /** - * If this parameter is specified and the requested engine supports the TimeZone parameter for CreateDBInstance, the response includes a list of supported time zones for each engine version. - */ - ListSupportedTimezones?: BooleanOptional; - } - export interface DescribeDBInstancesMessage { - /** - * The user-supplied instance identifier. If this parameter is specified, information from only the specific DB instance is returned. This parameter isn't case-sensitive. Constraints: If supplied, must match the identifier of an existing DBInstance. - */ - DBInstanceIdentifier?: String; - /** - * A filter that specifies one or more DB instances to describe. Supported filters: db-cluster-id - Accepts DB cluster identifiers and DB cluster Amazon Resource Names (ARNs). The results list will only include information about the DB instances associated with the DB Clusters identified by these ARNs. db-instance-id - Accepts DB instance identifiers and DB instance Amazon Resource Names (ARNs). The results list will only include information about the DB instances identified by these ARNs. - */ - Filters?: FilterList; - /** - * The maximum number of records to include in the response. If more records exist than the specified MaxRecords value, a pagination token called a marker is included in the response so that the remaining results can be retrieved. Default: 100 Constraints: Minimum 20, maximum 100. - */ - MaxRecords?: IntegerOptional; - /** - * An optional pagination token provided by a previous DescribeDBInstances request. If this parameter is specified, the response includes only records beyond the marker, up to the value specified by MaxRecords. - */ - Marker?: String; - } - export interface DescribeDBLogFilesDetails { - /** - * The name of the log file for the specified DB instance. - */ - LogFileName?: String; - /** - * A POSIX timestamp when the last log entry was written. - */ - LastWritten?: Long; - /** - * The size, in bytes, of the log file for the specified DB instance. - */ - Size?: Long; - } - export type DescribeDBLogFilesList = DescribeDBLogFilesDetails[]; - export interface DescribeDBLogFilesMessage { - /** - * The customer-assigned name of the DB instance that contains the log files you want to list. Constraints: Must match the identifier of an existing DBInstance. - */ - DBInstanceIdentifier: String; - /** - * Filters the available log files for log file names that contain the specified string. - */ - FilenameContains?: String; - /** - * Filters the available log files for files written since the specified date, in POSIX timestamp format with milliseconds. - */ - FileLastWritten?: Long; - /** - * Filters the available log files for files larger than the specified size. - */ - FileSize?: Long; - /** - * This parameter is not currently supported. - */ - Filters?: FilterList; - /** - * The maximum number of records to include in the response. If more records exist than the specified MaxRecords value, a pagination token called a marker is included in the response so that the remaining results can be retrieved. - */ - MaxRecords?: IntegerOptional; - /** - * The pagination token provided in the previous request. If this parameter is specified the response includes only records beyond the marker, up to MaxRecords. - */ - Marker?: String; - } - export interface DescribeDBLogFilesResponse { - /** - * The DB log files returned. - */ - DescribeDBLogFiles?: DescribeDBLogFilesList; - /** - * A pagination token that can be used in a subsequent DescribeDBLogFiles request. - */ - Marker?: String; - } - export interface DescribeDBParameterGroupsMessage { - /** - * The name of a specific DB parameter group to return details for. Constraints: If supplied, must match the name of an existing DBClusterParameterGroup. - */ - DBParameterGroupName?: String; - /** - * This parameter is not currently supported. - */ - Filters?: FilterList; - /** - * The maximum number of records to include in the response. If more records exist than the specified MaxRecords value, a pagination token called a marker is included in the response so that the remaining results can be retrieved. Default: 100 Constraints: Minimum 20, maximum 100. - */ - MaxRecords?: IntegerOptional; - /** - * An optional pagination token provided by a previous DescribeDBParameterGroups request. If this parameter is specified, the response includes only records beyond the marker, up to the value specified by MaxRecords. - */ - Marker?: String; - } - export interface DescribeDBParametersMessage { - /** - * The name of a specific DB parameter group to return details for. Constraints: If supplied, must match the name of an existing DBParameterGroup. - */ - DBParameterGroupName: String; - /** - * The parameter types to return. Default: All parameter types returned Valid Values: user | system | engine-default - */ - Source?: String; - /** - * This parameter is not currently supported. - */ - Filters?: FilterList; - /** - * The maximum number of records to include in the response. If more records exist than the specified MaxRecords value, a pagination token called a marker is included in the response so that the remaining results can be retrieved. Default: 100 Constraints: Minimum 20, maximum 100. - */ - MaxRecords?: IntegerOptional; - /** - * An optional pagination token provided by a previous DescribeDBParameters request. If this parameter is specified, the response includes only records beyond the marker, up to the value specified by MaxRecords. - */ - Marker?: String; - } - export interface DescribeDBSecurityGroupsMessage { - /** - * The name of the DB security group to return details for. - */ - DBSecurityGroupName?: String; - /** - * This parameter is not currently supported. - */ - Filters?: FilterList; - /** - * The maximum number of records to include in the response. If more records exist than the specified MaxRecords value, a pagination token called a marker is included in the response so that the remaining results can be retrieved. Default: 100 Constraints: Minimum 20, maximum 100. - */ - MaxRecords?: IntegerOptional; - /** - * An optional pagination token provided by a previous DescribeDBSecurityGroups request. If this parameter is specified, the response includes only records beyond the marker, up to the value specified by MaxRecords. - */ - Marker?: String; - } - export interface DescribeDBSnapshotAttributesMessage { - /** - * The identifier for the DB snapshot to describe the attributes for. - */ - DBSnapshotIdentifier: String; - } - export interface DescribeDBSnapshotAttributesResult { - DBSnapshotAttributesResult?: DBSnapshotAttributesResult; - } - export interface DescribeDBSnapshotsMessage { - /** - * The ID of the DB instance to retrieve the list of DB snapshots for. This parameter cannot be used in conjunction with DBSnapshotIdentifier. This parameter is not case-sensitive. Constraints: If supplied, must match the identifier of an existing DBInstance. - */ - DBInstanceIdentifier?: String; - /** - * A specific DB snapshot identifier to describe. This parameter cannot be used in conjunction with DBInstanceIdentifier. This value is stored as a lowercase string. Constraints: If supplied, must match the identifier of an existing DBSnapshot. If this identifier is for an automated snapshot, the SnapshotType parameter must also be specified. - */ - DBSnapshotIdentifier?: String; - /** - * The type of snapshots to be returned. You can specify one of the following values: automated - Return all DB snapshots that have been automatically taken by Amazon RDS for my AWS account. manual - Return all DB snapshots that have been taken by my AWS account. shared - Return all manual DB snapshots that have been shared to my AWS account. public - Return all DB snapshots that have been marked as public. If you don't specify a SnapshotType value, then both automated and manual snapshots are returned. Shared and public DB snapshots are not included in the returned results by default. You can include shared snapshots with these results by setting the IncludeShared parameter to true. You can include public snapshots with these results by setting the IncludePublic parameter to true. The IncludeShared and IncludePublic parameters don't apply for SnapshotType values of manual or automated. The IncludePublic parameter doesn't apply when SnapshotType is set to shared. The IncludeShared parameter doesn't apply when SnapshotType is set to public. - */ - SnapshotType?: String; - /** - * This parameter is not currently supported. - */ - Filters?: FilterList; - /** - * The maximum number of records to include in the response. If more records exist than the specified MaxRecords value, a pagination token called a marker is included in the response so that the remaining results can be retrieved. Default: 100 Constraints: Minimum 20, maximum 100. - */ - MaxRecords?: IntegerOptional; - /** - * An optional pagination token provided by a previous DescribeDBSnapshots request. If this parameter is specified, the response includes only records beyond the marker, up to the value specified by MaxRecords. - */ - Marker?: String; - /** - * Set this value to true to include shared manual DB snapshots from other AWS accounts that this AWS account has been given permission to copy or restore, otherwise set this value to false. The default is false. You can give an AWS account permission to restore a manual DB snapshot from another AWS account by using the ModifyDBSnapshotAttribute API action. - */ - IncludeShared?: Boolean; - /** - * Set this value to true to include manual DB snapshots that are public and can be copied or restored by any AWS account, otherwise set this value to false. The default is false. You can share a manual DB snapshot as public by using the ModifyDBSnapshotAttribute API. - */ - IncludePublic?: Boolean; - } - export interface DescribeDBSubnetGroupsMessage { - /** - * The name of the DB subnet group to return details for. - */ - DBSubnetGroupName?: String; - /** - * This parameter is not currently supported. - */ - Filters?: FilterList; - /** - * The maximum number of records to include in the response. If more records exist than the specified MaxRecords value, a pagination token called a marker is included in the response so that the remaining results can be retrieved. Default: 100 Constraints: Minimum 20, maximum 100. - */ - MaxRecords?: IntegerOptional; - /** - * An optional pagination token provided by a previous DescribeDBSubnetGroups request. If this parameter is specified, the response includes only records beyond the marker, up to the value specified by MaxRecords. - */ - Marker?: String; - } - export interface DescribeEngineDefaultClusterParametersMessage { - /** - * The name of the DB cluster parameter group family to return engine parameter information for. - */ - DBParameterGroupFamily: String; - /** - * This parameter is not currently supported. - */ - Filters?: FilterList; - /** - * The maximum number of records to include in the response. If more records exist than the specified MaxRecords value, a pagination token called a marker is included in the response so that the remaining results can be retrieved. Default: 100 Constraints: Minimum 20, maximum 100. - */ - MaxRecords?: IntegerOptional; - /** - * An optional pagination token provided by a previous DescribeEngineDefaultClusterParameters request. If this parameter is specified, the response includes only records beyond the marker, up to the value specified by MaxRecords. - */ - Marker?: String; - } - export interface DescribeEngineDefaultClusterParametersResult { - EngineDefaults?: EngineDefaults; - } - export interface DescribeEngineDefaultParametersMessage { - /** - * The name of the DB parameter group family. - */ - DBParameterGroupFamily: String; - /** - * Not currently supported. - */ - Filters?: FilterList; - /** - * The maximum number of records to include in the response. If more records exist than the specified MaxRecords value, a pagination token called a marker is included in the response so that the remaining results can be retrieved. Default: 100 Constraints: Minimum 20, maximum 100. - */ - MaxRecords?: IntegerOptional; - /** - * An optional pagination token provided by a previous DescribeEngineDefaultParameters request. If this parameter is specified, the response includes only records beyond the marker, up to the value specified by MaxRecords. - */ - Marker?: String; - } - export interface DescribeEngineDefaultParametersResult { - EngineDefaults?: EngineDefaults; - } - export interface DescribeEventCategoriesMessage { - /** - * The type of source that will be generating the events. Valid values: db-instance | db-parameter-group | db-security-group | db-snapshot - */ - SourceType?: String; - /** - * This parameter is not currently supported. - */ - Filters?: FilterList; - } - export interface DescribeEventSubscriptionsMessage { - /** - * The name of the RDS event notification subscription you want to describe. - */ - SubscriptionName?: String; - /** - * This parameter is not currently supported. - */ - Filters?: FilterList; - /** - * The maximum number of records to include in the response. If more records exist than the specified MaxRecords value, a pagination token called a marker is included in the response so that the remaining results can be retrieved. Default: 100 Constraints: Minimum 20, maximum 100. - */ - MaxRecords?: IntegerOptional; - /** - * An optional pagination token provided by a previous DescribeOrderableDBInstanceOptions request. If this parameter is specified, the response includes only records beyond the marker, up to the value specified by MaxRecords . - */ - Marker?: String; - } - export interface DescribeEventsMessage { - /** - * The identifier of the event source for which events will be returned. If not specified, then all sources are included in the response. Constraints: If SourceIdentifier is supplied, SourceType must also be provided. If the source type is DBInstance, then a DBInstanceIdentifier must be supplied. If the source type is DBSecurityGroup, a DBSecurityGroupName must be supplied. If the source type is DBParameterGroup, a DBParameterGroupName must be supplied. If the source type is DBSnapshot, a DBSnapshotIdentifier must be supplied. Cannot end with a hyphen or contain two consecutive hyphens. - */ - SourceIdentifier?: String; - /** - * The event source to retrieve events for. If no value is specified, all events are returned. - */ - SourceType?: SourceType; - /** - * The beginning of the time interval to retrieve events for, specified in ISO 8601 format. For more information about ISO 8601, go to the ISO8601 Wikipedia page. Example: 2009-07-08T18:00Z - */ - StartTime?: TStamp; - /** - * The end of the time interval for which to retrieve events, specified in ISO 8601 format. For more information about ISO 8601, go to the ISO8601 Wikipedia page. Example: 2009-07-08T18:00Z - */ - EndTime?: TStamp; - /** - * The number of minutes to retrieve events for. Default: 60 - */ - Duration?: IntegerOptional; - /** - * A list of event categories that trigger notifications for a event notification subscription. - */ - EventCategories?: EventCategoriesList; - /** - * This parameter is not currently supported. - */ - Filters?: FilterList; - /** - * The maximum number of records to include in the response. If more records exist than the specified MaxRecords value, a pagination token called a marker is included in the response so that the remaining results can be retrieved. Default: 100 Constraints: Minimum 20, maximum 100. - */ - MaxRecords?: IntegerOptional; - /** - * An optional pagination token provided by a previous DescribeEvents request. If this parameter is specified, the response includes only records beyond the marker, up to the value specified by MaxRecords. - */ - Marker?: String; - } - export interface DescribeOptionGroupOptionsMessage { - /** - * A required parameter. Options available for the given engine name will be described. - */ - EngineName: String; - /** - * If specified, filters the results to include only options for the specified major engine version. - */ - MajorEngineVersion?: String; - /** - * This parameter is not currently supported. - */ - Filters?: FilterList; - /** - * The maximum number of records to include in the response. If more records exist than the specified MaxRecords value, a pagination token called a marker is included in the response so that the remaining results can be retrieved. Default: 100 Constraints: Minimum 20, maximum 100. - */ - MaxRecords?: IntegerOptional; - /** - * An optional pagination token provided by a previous request. If this parameter is specified, the response includes only records beyond the marker, up to the value specified by MaxRecords. - */ - Marker?: String; - } - export interface DescribeOptionGroupsMessage { - /** - * The name of the option group to describe. Cannot be supplied together with EngineName or MajorEngineVersion. - */ - OptionGroupName?: String; - /** - * This parameter is not currently supported. - */ - Filters?: FilterList; - /** - * An optional pagination token provided by a previous DescribeOptionGroups request. If this parameter is specified, the response includes only records beyond the marker, up to the value specified by MaxRecords. - */ - Marker?: String; - /** - * The maximum number of records to include in the response. If more records exist than the specified MaxRecords value, a pagination token called a marker is included in the response so that the remaining results can be retrieved. Default: 100 Constraints: Minimum 20, maximum 100. - */ - MaxRecords?: IntegerOptional; - /** - * Filters the list of option groups to only include groups associated with a specific database engine. - */ - EngineName?: String; - /** - * Filters the list of option groups to only include groups associated with a specific database engine version. If specified, then EngineName must also be specified. - */ - MajorEngineVersion?: String; - } - export interface DescribeOrderableDBInstanceOptionsMessage { - /** - * The name of the engine to retrieve DB instance options for. - */ - Engine: String; - /** - * The engine version filter value. Specify this parameter to show only the available offerings matching the specified engine version. - */ - EngineVersion?: String; - /** - * The DB instance class filter value. Specify this parameter to show only the available offerings matching the specified DB instance class. - */ - DBInstanceClass?: String; - /** - * The license model filter value. Specify this parameter to show only the available offerings matching the specified license model. - */ - LicenseModel?: String; - /** - * The VPC filter value. Specify this parameter to show only the available VPC or non-VPC offerings. - */ - Vpc?: BooleanOptional; - /** - * This parameter is not currently supported. - */ - Filters?: FilterList; - /** - * The maximum number of records to include in the response. If more records exist than the specified MaxRecords value, a pagination token called a marker is included in the response so that the remaining results can be retrieved. Default: 100 Constraints: Minimum 20, maximum 100. - */ - MaxRecords?: IntegerOptional; - /** - * An optional pagination token provided by a previous DescribeOrderableDBInstanceOptions request. If this parameter is specified, the response includes only records beyond the marker, up to the value specified by MaxRecords . - */ - Marker?: String; - } - export interface DescribePendingMaintenanceActionsMessage { - /** - * The ARN of a resource to return pending maintenance actions for. - */ - ResourceIdentifier?: String; - /** - * A filter that specifies one or more resources to return pending maintenance actions for. Supported filters: db-cluster-id - Accepts DB cluster identifiers and DB cluster Amazon Resource Names (ARNs). The results list will only include pending maintenance actions for the DB clusters identified by these ARNs. db-instance-id - Accepts DB instance identifiers and DB instance ARNs. The results list will only include pending maintenance actions for the DB instances identified by these ARNs. - */ - Filters?: FilterList; - /** - * An optional pagination token provided by a previous DescribePendingMaintenanceActions request. If this parameter is specified, the response includes only records beyond the marker, up to a number of records specified by MaxRecords. - */ - Marker?: String; - /** - * The maximum number of records to include in the response. If more records exist than the specified MaxRecords value, a pagination token called a marker is included in the response so that the remaining results can be retrieved. Default: 100 Constraints: Minimum 20, maximum 100. - */ - MaxRecords?: IntegerOptional; - } - export interface DescribeReservedDBInstancesMessage { - /** - * The reserved DB instance identifier filter value. Specify this parameter to show only the reservation that matches the specified reservation ID. - */ - ReservedDBInstanceId?: String; - /** - * The offering identifier filter value. Specify this parameter to show only purchased reservations matching the specified offering identifier. - */ - ReservedDBInstancesOfferingId?: String; - /** - * The DB instance class filter value. Specify this parameter to show only those reservations matching the specified DB instances class. - */ - DBInstanceClass?: String; - /** - * The duration filter value, specified in years or seconds. Specify this parameter to show only reservations for this duration. Valid Values: 1 | 3 | 31536000 | 94608000 - */ - Duration?: String; - /** - * The product description filter value. Specify this parameter to show only those reservations matching the specified product description. - */ - ProductDescription?: String; - /** - * The offering type filter value. Specify this parameter to show only the available offerings matching the specified offering type. Valid Values: "Partial Upfront" | "All Upfront" | "No Upfront" - */ - OfferingType?: String; - /** - * The Multi-AZ filter value. Specify this parameter to show only those reservations matching the specified Multi-AZ parameter. - */ - MultiAZ?: BooleanOptional; - /** - * This parameter is not currently supported. - */ - Filters?: FilterList; - /** - * The maximum number of records to include in the response. If more than the MaxRecords value is available, a pagination token called a marker is included in the response so that the following results can be retrieved. Default: 100 Constraints: Minimum 20, maximum 100. - */ - MaxRecords?: IntegerOptional; - /** - * An optional pagination token provided by a previous request. If this parameter is specified, the response includes only records beyond the marker, up to the value specified by MaxRecords. - */ - Marker?: String; - } - export interface DescribeReservedDBInstancesOfferingsMessage { - /** - * The offering identifier filter value. Specify this parameter to show only the available offering that matches the specified reservation identifier. Example: 438012d3-4052-4cc7-b2e3-8d3372e0e706 - */ - ReservedDBInstancesOfferingId?: String; - /** - * The DB instance class filter value. Specify this parameter to show only the available offerings matching the specified DB instance class. - */ - DBInstanceClass?: String; - /** - * Duration filter value, specified in years or seconds. Specify this parameter to show only reservations for this duration. Valid Values: 1 | 3 | 31536000 | 94608000 - */ - Duration?: String; - /** - * Product description filter value. Specify this parameter to show only the available offerings matching the specified product description. - */ - ProductDescription?: String; - /** - * The offering type filter value. Specify this parameter to show only the available offerings matching the specified offering type. Valid Values: "Partial Upfront" | "All Upfront" | "No Upfront" - */ - OfferingType?: String; - /** - * The Multi-AZ filter value. Specify this parameter to show only the available offerings matching the specified Multi-AZ parameter. - */ - MultiAZ?: BooleanOptional; - /** - * This parameter is not currently supported. - */ - Filters?: FilterList; - /** - * The maximum number of records to include in the response. If more than the MaxRecords value is available, a pagination token called a marker is included in the response so that the following results can be retrieved. Default: 100 Constraints: Minimum 20, maximum 100. - */ - MaxRecords?: IntegerOptional; - /** - * An optional pagination token provided by a previous request. If this parameter is specified, the response includes only records beyond the marker, up to the value specified by MaxRecords. - */ - Marker?: String; - } - export interface DescribeSourceRegionsMessage { - /** - * The source AWS Region name. For example, us-east-1. Constraints: Must specify a valid AWS Region name. - */ - RegionName?: String; - /** - * The maximum number of records to include in the response. If more records exist than the specified MaxRecords value, a pagination token called a marker is included in the response so that the remaining results can be retrieved. Default: 100 Constraints: Minimum 20, maximum 100. - */ - MaxRecords?: IntegerOptional; - /** - * An optional pagination token provided by a previous DescribeSourceRegions request. If this parameter is specified, the response includes only records beyond the marker, up to the value specified by MaxRecords. - */ - Marker?: String; - /** - * This parameter is not currently supported. - */ - Filters?: FilterList; - } - export interface DescribeValidDBInstanceModificationsMessage { - /** - * The customer identifier or the ARN of your DB instance. - */ - DBInstanceIdentifier: String; - } - export interface DescribeValidDBInstanceModificationsResult { - ValidDBInstanceModificationsMessage?: ValidDBInstanceModificationsMessage; - } - export interface DomainMembership { - /** - * The identifier of the Active Directory Domain. - */ - Domain?: String; - /** - * The status of the DB instance's Active Directory Domain membership, such as joined, pending-join, failed etc). - */ - Status?: String; - /** - * The fully qualified domain name of the Active Directory Domain. - */ - FQDN?: String; - /** - * The name of the IAM role to be used when making API calls to the Directory Service. - */ - IAMRoleName?: String; - } - export type DomainMembershipList = DomainMembership[]; - export type Double = number; - export interface DoubleRange { - /** - * The minimum value in the range. - */ - From?: Double; - /** - * The maximum value in the range. - */ - To?: Double; - } - export type DoubleRangeList = DoubleRange[]; - export interface DownloadDBLogFilePortionDetails { - /** - * Entries from the specified log file. - */ - LogFileData?: String; - /** - * A pagination token that can be used in a subsequent DownloadDBLogFilePortion request. - */ - Marker?: String; - /** - * Boolean value that if true, indicates there is more data to be downloaded. - */ - AdditionalDataPending?: Boolean; - } - export interface DownloadDBLogFilePortionMessage { - /** - * The customer-assigned name of the DB instance that contains the log files you want to list. Constraints: Must match the identifier of an existing DBInstance. - */ - DBInstanceIdentifier: String; - /** - * The name of the log file to be downloaded. - */ - LogFileName: String; - /** - * The pagination token provided in the previous request or "0". If the Marker parameter is specified the response includes only records beyond the marker until the end of the file or up to NumberOfLines. - */ - Marker?: String; - /** - * The number of lines to download. If the number of lines specified results in a file over 1 MB in size, the file will be truncated at 1 MB in size. If the NumberOfLines parameter is specified, then the block of lines returned can be from the beginning or the end of the log file, depending on the value of the Marker parameter. If neither Marker or NumberOfLines are specified, the entire log file is returned up to a maximum of 10000 lines, starting with the most recent log entries first. If NumberOfLines is specified and Marker is not specified, then the most recent lines from the end of the log file are returned. If Marker is specified as "0", then the specified number of lines from the beginning of the log file are returned. You can download the log file in blocks of lines by specifying the size of the block using the NumberOfLines parameter, and by specifying a value of "0" for the Marker parameter in your first request. Include the Marker value returned in the response as the Marker value for the next request, continuing until the AdditionalDataPending response element returns false. - */ - NumberOfLines?: Integer; - } - export interface EC2SecurityGroup { - /** - * Provides the status of the EC2 security group. Status can be "authorizing", "authorized", "revoking", and "revoked". - */ - Status?: String; - /** - * Specifies the name of the EC2 security group. - */ - EC2SecurityGroupName?: String; - /** - * Specifies the id of the EC2 security group. - */ - EC2SecurityGroupId?: String; - /** - * Specifies the AWS ID of the owner of the EC2 security group specified in the EC2SecurityGroupName field. - */ - EC2SecurityGroupOwnerId?: String; - } - export type EC2SecurityGroupList = EC2SecurityGroup[]; - export interface Endpoint { - /** - * Specifies the DNS address of the DB instance. - */ - Address?: String; - /** - * Specifies the port that the database engine is listening on. - */ - Port?: Integer; - /** - * Specifies the ID that Amazon Route 53 assigns when you create a hosted zone. - */ - HostedZoneId?: String; - } - export interface EngineDefaults { - /** - * Specifies the name of the DB parameter group family that the engine default parameters apply to. - */ - DBParameterGroupFamily?: String; - /** - * An optional pagination token provided by a previous EngineDefaults request. If this parameter is specified, the response includes only records beyond the marker, up to the value specified by MaxRecords . - */ - Marker?: String; - /** - * Contains a list of engine default parameters. - */ - Parameters?: ParametersList; - } - export interface Event { - /** - * Provides the identifier for the source of the event. - */ - SourceIdentifier?: String; - /** - * Specifies the source type for this event. - */ - SourceType?: SourceType; - /** - * Provides the text of this event. - */ - Message?: String; - /** - * Specifies the category for the event. - */ - EventCategories?: EventCategoriesList; - /** - * Specifies the date and time of the event. - */ - Date?: TStamp; - /** - * The Amazon Resource Name (ARN) for the event. - */ - SourceArn?: String; - } - export type EventCategoriesList = String[]; - export interface EventCategoriesMap { - /** - * The source type that the returned categories belong to - */ - SourceType?: String; - /** - * The event categories for the specified source type - */ - EventCategories?: EventCategoriesList; - } - export type EventCategoriesMapList = EventCategoriesMap[]; - export interface EventCategoriesMessage { - /** - * A list of EventCategoriesMap data types. - */ - EventCategoriesMapList?: EventCategoriesMapList; - } - export type EventList = Event[]; - export interface EventSubscription { - /** - * The AWS customer account associated with the RDS event notification subscription. - */ - CustomerAwsId?: String; - /** - * The RDS event notification subscription Id. - */ - CustSubscriptionId?: String; - /** - * The topic ARN of the RDS event notification subscription. - */ - SnsTopicArn?: String; - /** - * The status of the RDS event notification subscription. Constraints: Can be one of the following: creating | modifying | deleting | active | no-permission | topic-not-exist The status "no-permission" indicates that RDS no longer has permission to post to the SNS topic. The status "topic-not-exist" indicates that the topic was deleted after the subscription was created. - */ - Status?: String; - /** - * The time the RDS event notification subscription was created. - */ - SubscriptionCreationTime?: String; - /** - * The source type for the RDS event notification subscription. - */ - SourceType?: String; - /** - * A list of source IDs for the RDS event notification subscription. - */ - SourceIdsList?: SourceIdsList; - /** - * A list of event categories for the RDS event notification subscription. - */ - EventCategoriesList?: EventCategoriesList; - /** - * A Boolean value indicating if the subscription is enabled. True indicates the subscription is enabled. - */ - Enabled?: Boolean; - /** - * The Amazon Resource Name (ARN) for the event subscription. - */ - EventSubscriptionArn?: String; - } - export type EventSubscriptionsList = EventSubscription[]; - export interface EventSubscriptionsMessage { - /** - * An optional pagination token provided by a previous DescribeOrderableDBInstanceOptions request. If this parameter is specified, the response includes only records beyond the marker, up to the value specified by MaxRecords. - */ - Marker?: String; - /** - * A list of EventSubscriptions data types. - */ - EventSubscriptionsList?: EventSubscriptionsList; - } - export interface EventsMessage { - /** - * An optional pagination token provided by a previous Events request. If this parameter is specified, the response includes only records beyond the marker, up to the value specified by MaxRecords . - */ - Marker?: String; - /** - * A list of Event instances. - */ - Events?: EventList; - } - export interface FailoverDBClusterMessage { - /** - * A DB cluster identifier to force a failover for. This parameter is not case-sensitive. Constraints: Must match the identifier of an existing DBCluster. - */ - DBClusterIdentifier?: String; - /** - * The name of the instance to promote to the primary instance. You must specify the instance identifier for an Aurora Replica in the DB cluster. For example, mydbcluster-replica1. - */ - TargetDBInstanceIdentifier?: String; - } - export interface FailoverDBClusterResult { - DBCluster?: DBCluster; - } - export interface Filter { - /** - * This parameter is not currently supported. - */ - Name: String; - /** - * This parameter is not currently supported. - */ - Values: FilterValueList; - } - export type FilterList = Filter[]; - export type FilterValueList = String[]; - export interface IPRange { - /** - * Specifies the status of the IP range. Status can be "authorizing", "authorized", "revoking", and "revoked". - */ - Status?: String; - /** - * Specifies the IP range. - */ - CIDRIP?: String; - } - export type IPRangeList = IPRange[]; - export type Integer = number; - export type IntegerOptional = number; - export type KeyList = String[]; - export interface ListTagsForResourceMessage { - /** - * The Amazon RDS resource with tags to be listed. This value is an Amazon Resource Name (ARN). For information about creating an ARN, see Constructing an RDS Amazon Resource Name (ARN). - */ - ResourceName: String; - /** - * This parameter is not currently supported. - */ - Filters?: FilterList; - } - export type Long = number; - export interface ModifyDBClusterMessage { - /** - * The DB cluster identifier for the cluster being modified. This parameter is not case-sensitive. Constraints: Must match the identifier of an existing DBCluster. - */ - DBClusterIdentifier: String; - /** - * The new DB cluster identifier for the DB cluster when renaming a DB cluster. This value is stored as a lowercase string. Constraints: Must contain from 1 to 63 letters, numbers, or hyphens The first character must be a letter Cannot end with a hyphen or contain two consecutive hyphens Example: my-cluster2 - */ - NewDBClusterIdentifier?: String; - /** - * A value that specifies whether the modifications in this request and any pending modifications are asynchronously applied as soon as possible, regardless of the PreferredMaintenanceWindow setting for the DB cluster. If this parameter is set to false, changes to the DB cluster are applied during the next maintenance window. The ApplyImmediately parameter only affects the NewDBClusterIdentifier and MasterUserPassword values. If you set the ApplyImmediately parameter value to false, then changes to the NewDBClusterIdentifier and MasterUserPassword values are applied during the next maintenance window. All other changes are applied immediately, regardless of the value of the ApplyImmediately parameter. Default: false - */ - ApplyImmediately?: Boolean; - /** - * The number of days for which automated backups are retained. You must specify a minimum value of 1. Default: 1 Constraints: Must be a value from 1 to 35 - */ - BackupRetentionPeriod?: IntegerOptional; - /** - * The name of the DB cluster parameter group to use for the DB cluster. - */ - DBClusterParameterGroupName?: String; - /** - * A list of VPC security groups that the DB cluster will belong to. - */ - VpcSecurityGroupIds?: VpcSecurityGroupIdList; - /** - * The port number on which the DB cluster accepts connections. Constraints: Value must be 1150-65535 Default: The same port as the original DB cluster. - */ - Port?: IntegerOptional; - /** - * The new password for the master database user. This password can contain any printable ASCII character except "/", """, or "@". Constraints: Must contain from 8 to 41 characters. - */ - MasterUserPassword?: String; - /** - * A value that indicates that the DB cluster should be associated with the specified option group. Changing this parameter does not result in an outage except in the following case, and the change is applied during the next maintenance window unless the ApplyImmediately parameter is set to true for this request. If the parameter change results in an option group that enables OEM, this change can cause a brief (sub-second) period during which new connections are rejected but existing connections are not interrupted. Permanent options cannot be removed from an option group. The option group cannot be removed from a DB cluster once it is associated with a DB cluster. - */ - OptionGroupName?: String; - /** - * The daily time range during which automated backups are created if automated backups are enabled, using the BackupRetentionPeriod parameter. Default: A 30-minute window selected at random from an 8-hour block of time per AWS Region. To see the time blocks available, see Adjusting the Preferred Maintenance Window in the Amazon RDS User Guide. Constraints: Must be in the format hh24:mi-hh24:mi. Times should be in Universal Coordinated Time (UTC). Must not conflict with the preferred maintenance window. Must be at least 30 minutes. - */ - PreferredBackupWindow?: String; - /** - * The weekly time range during which system maintenance can occur, in Universal Coordinated Time (UTC). Format: ddd:hh24:mi-ddd:hh24:mi Default: A 30-minute window selected at random from an 8-hour block of time per AWS Region, occurring on a random day of the week. To see the time blocks available, see Adjusting the Preferred Maintenance Window in the Amazon RDS User Guide. Valid Days: Mon, Tue, Wed, Thu, Fri, Sat, Sun Constraints: Minimum 30-minute window. - */ - PreferredMaintenanceWindow?: String; - /** - * A Boolean value that is true to enable mapping of AWS Identity and Access Management (IAM) accounts to database accounts, and otherwise false. Default: false - */ - EnableIAMDatabaseAuthentication?: BooleanOptional; - } - export interface ModifyDBClusterParameterGroupMessage { - /** - * The name of the DB cluster parameter group to modify. - */ - DBClusterParameterGroupName: String; - /** - * A list of parameters in the DB cluster parameter group to modify. - */ - Parameters: ParametersList; - } - export interface ModifyDBClusterResult { - DBCluster?: DBCluster; - } - export interface ModifyDBClusterSnapshotAttributeMessage { - /** - * The identifier for the DB cluster snapshot to modify the attributes for. - */ - DBClusterSnapshotIdentifier: String; - /** - * The name of the DB cluster snapshot attribute to modify. To manage authorization for other AWS accounts to copy or restore a manual DB cluster snapshot, set this value to restore. - */ - AttributeName: String; - /** - * A list of DB cluster snapshot attributes to add to the attribute specified by AttributeName. To authorize other AWS accounts to copy or restore a manual DB cluster snapshot, set this list to include one or more AWS account IDs, or all to make the manual DB cluster snapshot restorable by any AWS account. Do not add the all value for any manual DB cluster snapshots that contain private information that you don't want available to all AWS accounts. - */ - ValuesToAdd?: AttributeValueList; - /** - * A list of DB cluster snapshot attributes to remove from the attribute specified by AttributeName. To remove authorization for other AWS accounts to copy or restore a manual DB cluster snapshot, set this list to include one or more AWS account identifiers, or all to remove authorization for any AWS account to copy or restore the DB cluster snapshot. If you specify all, an AWS account whose account ID is explicitly added to the restore attribute can still copy or restore a manual DB cluster snapshot. - */ - ValuesToRemove?: AttributeValueList; - } - export interface ModifyDBClusterSnapshotAttributeResult { - DBClusterSnapshotAttributesResult?: DBClusterSnapshotAttributesResult; - } - export interface ModifyDBInstanceMessage { - /** - * The DB instance identifier. This value is stored as a lowercase string. Constraints: Must match the identifier of an existing DBInstance. - */ - DBInstanceIdentifier: String; - /** - * The new storage capacity of the RDS instance. Changing this setting does not result in an outage and the change is applied during the next maintenance window unless ApplyImmediately is set to true for this request. MySQL Default: Uses existing setting Valid Values: 5-6144 Constraints: Value supplied must be at least 10% greater than the current value. Values that are not at least 10% greater than the existing value are rounded up so that they are 10% greater than the current value. Type: Integer MariaDB Default: Uses existing setting Valid Values: 5-6144 Constraints: Value supplied must be at least 10% greater than the current value. Values that are not at least 10% greater than the existing value are rounded up so that they are 10% greater than the current value. Type: Integer PostgreSQL Default: Uses existing setting Valid Values: 5-6144 Constraints: Value supplied must be at least 10% greater than the current value. Values that are not at least 10% greater than the existing value are rounded up so that they are 10% greater than the current value. Type: Integer Oracle Default: Uses existing setting Valid Values: 10-6144 Constraints: Value supplied must be at least 10% greater than the current value. Values that are not at least 10% greater than the existing value are rounded up so that they are 10% greater than the current value. SQL Server Cannot be modified. If you choose to migrate your DB instance from using standard storage to using Provisioned IOPS, or from using Provisioned IOPS to using standard storage, the process can take time. The duration of the migration depends on several factors such as database load, storage size, storage type (standard or Provisioned IOPS), amount of IOPS provisioned (if any), and the number of prior scale storage operations. Typical migration times are under 24 hours, but the process can take up to several days in some cases. During the migration, the DB instance will be available for use, but might experience performance degradation. While the migration takes place, nightly backups for the instance will be suspended. No other Amazon RDS operations can take place for the instance, including modifying the instance, rebooting the instance, deleting the instance, creating a Read Replica for the instance, and creating a DB snapshot of the instance. - */ - AllocatedStorage?: IntegerOptional; - /** - * The new compute and memory capacity of the DB instance. To determine the instance classes that are available for a particular DB engine, use the DescribeOrderableDBInstanceOptions action. Note that not all instance classes are available in all regions for all DB engines. Passing a value for this setting causes an outage during the change and is applied during the next maintenance window, unless ApplyImmediately is specified as true for this request. Default: Uses existing setting Valid Values: db.t1.micro | db.m1.small | db.m1.medium | db.m1.large | db.m1.xlarge | db.m2.xlarge | db.m2.2xlarge | db.m2.4xlarge | db.m3.medium | db.m3.large | db.m3.xlarge | db.m3.2xlarge | db.m4.large | db.m4.xlarge | db.m4.2xlarge | db.m4.4xlarge | db.m4.10xlarge | db.r3.large | db.r3.xlarge | db.r3.2xlarge | db.r3.4xlarge | db.r3.8xlarge | db.t2.micro | db.t2.small | db.t2.medium | db.t2.large - */ - DBInstanceClass?: String; - /** - * The new DB subnet group for the DB instance. You can use this parameter to move your DB instance to a different VPC. If your DB instance is not in a VPC, you can also use this parameter to move your DB instance into a VPC. For more information, see Updating the VPC for a DB Instance. Changing the subnet group causes an outage during the change. The change is applied during the next maintenance window, unless you specify true for the ApplyImmediately parameter. Constraints: If supplied, must match the name of an existing DBSubnetGroup. Example: mySubnetGroup - */ - DBSubnetGroupName?: String; - /** - * A list of DB security groups to authorize on this DB instance. Changing this setting does not result in an outage and the change is asynchronously applied as soon as possible. Constraints: If supplied, must match existing DBSecurityGroups. - */ - DBSecurityGroups?: DBSecurityGroupNameList; - /** - * A list of EC2 VPC security groups to authorize on this DB instance. This change is asynchronously applied as soon as possible. Amazon Aurora Not applicable. The associated list of EC2 VPC security groups is managed by the DB cluster. For more information, see ModifyDBCluster. Constraints: If supplied, must match existing VpcSecurityGroupIds. - */ - VpcSecurityGroupIds?: VpcSecurityGroupIdList; - /** - * Specifies whether the modifications in this request and any pending modifications are asynchronously applied as soon as possible, regardless of the PreferredMaintenanceWindow setting for the DB instance. If this parameter is set to false, changes to the DB instance are applied during the next maintenance window. Some parameter changes can cause an outage and will be applied on the next call to RebootDBInstance, or the next failure reboot. Review the table of parameters in Modifying a DB Instance and Using the Apply Immediately Parameter to see the impact that setting ApplyImmediately to true or false has for each modified parameter and to determine when the changes will be applied. Default: false - */ - ApplyImmediately?: Boolean; - /** - * The new password for the master user. Can be any printable ASCII character except "/", """, or "@". Changing this parameter does not result in an outage and the change is asynchronously applied as soon as possible. Between the time of the request and the completion of the request, the MasterUserPassword element exists in the PendingModifiedValues element of the operation response. Amazon Aurora Not applicable. The password for the master user is managed by the DB cluster. For more information, see ModifyDBCluster. Default: Uses existing setting MariaDB Constraints: Must contain from 8 to 41 characters. Microsoft SQL Server Constraints: Must contain from 8 to 128 characters. MySQL Constraints: Must contain from 8 to 41 characters. Oracle Constraints: Must contain from 8 to 30 characters. PostgreSQL Constraints: Must contain from 8 to 128 characters. Amazon RDS API actions never return the password, so this action provides a way to regain access to a primary instance user if the password is lost. This includes restoring privileges that might have been accidentally revoked. - */ - MasterUserPassword?: String; - /** - * The name of the DB parameter group to apply to the DB instance. Changing this setting does not result in an outage. The parameter group name itself is changed immediately, but the actual parameter changes are not applied until you reboot the instance without failover. The db instance will NOT be rebooted automatically and the parameter changes will NOT be applied during the next maintenance window. Default: Uses existing setting Constraints: The DB parameter group must be in the same DB parameter group family as this DB instance. - */ - DBParameterGroupName?: String; - /** - * The number of days to retain automated backups. Setting this parameter to a positive number enables backups. Setting this parameter to 0 disables automated backups. Changing this parameter can result in an outage if you change from 0 to a non-zero value or from a non-zero value to 0. These changes are applied during the next maintenance window unless the ApplyImmediately parameter is set to true for this request. If you change the parameter from one non-zero value to another non-zero value, the change is asynchronously applied as soon as possible. Amazon Aurora Not applicable. The retention period for automated backups is managed by the DB cluster. For more information, see ModifyDBCluster. Default: Uses existing setting Constraints: Must be a value from 0 to 35 Can be specified for a MySQL Read Replica only if the source is running MySQL 5.6 Can be specified for a PostgreSQL Read Replica only if the source is running PostgreSQL 9.3.5 Cannot be set to 0 if the DB instance is a source to Read Replicas - */ - BackupRetentionPeriod?: IntegerOptional; - /** - * The daily time range during which automated backups are created if automated backups are enabled, as determined by the BackupRetentionPeriod parameter. Changing this parameter does not result in an outage and the change is asynchronously applied as soon as possible. Amazon Aurora Not applicable. The daily time range for creating automated backups is managed by the DB cluster. For more information, see ModifyDBCluster. Constraints: Must be in the format hh24:mi-hh24:mi Times should be in Universal Time Coordinated (UTC) Must not conflict with the preferred maintenance window Must be at least 30 minutes - */ - PreferredBackupWindow?: String; - /** - * The weekly time range (in UTC) during which system maintenance can occur, which might result in an outage. Changing this parameter does not result in an outage, except in the following situation, and the change is asynchronously applied as soon as possible. If there are pending actions that cause a reboot, and the maintenance window is changed to include the current time, then changing this parameter will cause a reboot of the DB instance. If moving this window to the current time, there must be at least 30 minutes between the current time and end of the window to ensure pending changes are applied. Default: Uses existing setting Format: ddd:hh24:mi-ddd:hh24:mi Valid Days: Mon | Tue | Wed | Thu | Fri | Sat | Sun Constraints: Must be at least 30 minutes - */ - PreferredMaintenanceWindow?: String; - /** - * Specifies if the DB instance is a Multi-AZ deployment. Changing this parameter does not result in an outage and the change is applied during the next maintenance window unless the ApplyImmediately parameter is set to true for this request. Constraints: Cannot be specified if the DB instance is a Read Replica. - */ - MultiAZ?: BooleanOptional; - /** - * The version number of the database engine to upgrade to. Changing this parameter results in an outage and the change is applied during the next maintenance window unless the ApplyImmediately parameter is set to true for this request. For major version upgrades, if a nondefault DB parameter group is currently in use, a new DB parameter group in the DB parameter group family for the new engine version must be specified. The new DB parameter group can be the default for that DB parameter group family. For a list of valid engine versions, see CreateDBInstance. - */ - EngineVersion?: String; - /** - * Indicates that major version upgrades are allowed. Changing this parameter does not result in an outage and the change is asynchronously applied as soon as possible. Constraints: This parameter must be set to true when specifying a value for the EngineVersion parameter that is a different major version than the DB instance's current version. - */ - AllowMajorVersionUpgrade?: Boolean; - /** - * Indicates that minor version upgrades will be applied automatically to the DB instance during the maintenance window. Changing this parameter does not result in an outage except in the following case and the change is asynchronously applied as soon as possible. An outage will result if this parameter is set to true during the maintenance window, and a newer minor version is available, and RDS has enabled auto patching for that engine version. - */ - AutoMinorVersionUpgrade?: BooleanOptional; - /** - * The license model for the DB instance. Valid values: license-included | bring-your-own-license | general-public-license - */ - LicenseModel?: String; - /** - * The new Provisioned IOPS (I/O operations per second) value for the RDS instance. Changing this setting does not result in an outage and the change is applied during the next maintenance window unless the ApplyImmediately parameter is set to true for this request. Default: Uses existing setting Constraints: Value supplied must be at least 10% greater than the current value. Values that are not at least 10% greater than the existing value are rounded up so that they are 10% greater than the current value. If you are migrating from Provisioned IOPS to standard storage, set this value to 0. The DB instance will require a reboot for the change in storage type to take effect. SQL Server Setting the IOPS value for the SQL Server database engine is not supported. Type: Integer If you choose to migrate your DB instance from using standard storage to using Provisioned IOPS, or from using Provisioned IOPS to using standard storage, the process can take time. The duration of the migration depends on several factors such as database load, storage size, storage type (standard or Provisioned IOPS), amount of IOPS provisioned (if any), and the number of prior scale storage operations. Typical migration times are under 24 hours, but the process can take up to several days in some cases. During the migration, the DB instance will be available for use, but might experience performance degradation. While the migration takes place, nightly backups for the instance will be suspended. No other Amazon RDS operations can take place for the instance, including modifying the instance, rebooting the instance, deleting the instance, creating a Read Replica for the instance, and creating a DB snapshot of the instance. - */ - Iops?: IntegerOptional; - /** - * Indicates that the DB instance should be associated with the specified option group. Changing this parameter does not result in an outage except in the following case and the change is applied during the next maintenance window unless the ApplyImmediately parameter is set to true for this request. If the parameter change results in an option group that enables OEM, this change can cause a brief (sub-second) period during which new connections are rejected but existing connections are not interrupted. Permanent options, such as the TDE option for Oracle Advanced Security TDE, cannot be removed from an option group, and that option group cannot be removed from a DB instance once it is associated with a DB instance - */ - OptionGroupName?: String; - /** - * The new DB instance identifier for the DB instance when renaming a DB instance. When you change the DB instance identifier, an instance reboot will occur immediately if you set Apply Immediately to true, or will occur during the next maintenance window if Apply Immediately to false. This value is stored as a lowercase string. Constraints: Must contain from 1 to 63 letters, numbers, or hyphens. The first character must be a letter. Cannot end with a hyphen or contain two consecutive hyphens. Example: mydbinstance - */ - NewDBInstanceIdentifier?: String; - /** - * Specifies the storage type to be associated with the DB instance. Valid values: standard | gp2 | io1 If you specify io1, you must also include a value for the Iops parameter. Default: io1 if the Iops parameter is specified; otherwise standard - */ - StorageType?: String; - /** - * The ARN from the Key Store with which to associate the instance for TDE encryption. - */ - TdeCredentialArn?: String; - /** - * The password for the given ARN from the Key Store in order to access the device. - */ - TdeCredentialPassword?: String; - /** - * Indicates the certificate that needs to be associated with the instance. - */ - CACertificateIdentifier?: String; - /** - * The Active Directory Domain to move the instance to. Specify none to remove the instance from its current domain. The domain must be created prior to this operation. Currently only a Microsoft SQL Server instance can be created in a Active Directory Domain. - */ - Domain?: String; - /** - * True to copy all tags from the DB instance to snapshots of the DB instance; otherwise false. The default is false. - */ - CopyTagsToSnapshot?: BooleanOptional; - /** - * The interval, in seconds, between points when Enhanced Monitoring metrics are collected for the DB instance. To disable collecting Enhanced Monitoring metrics, specify 0. The default is 0. If MonitoringRoleArn is specified, then you must also set MonitoringInterval to a value other than 0. Valid Values: 0, 1, 5, 10, 15, 30, 60 - */ - MonitoringInterval?: IntegerOptional; - /** - * The port number on which the database accepts connections. The value of the DBPortNumber parameter must not match any of the port values specified for options in the option group for the DB instance. Your database will restart when you change the DBPortNumber value regardless of the value of the ApplyImmediately parameter. MySQL Default: 3306 Valid Values: 1150-65535 MariaDB Default: 3306 Valid Values: 1150-65535 PostgreSQL Default: 5432 Valid Values: 1150-65535 Type: Integer Oracle Default: 1521 Valid Values: 1150-65535 SQL Server Default: 1433 Valid Values: 1150-65535 except for 1434, 3389, 47001, 49152, and 49152 through 49156. Amazon Aurora Default: 3306 Valid Values: 1150-65535 - */ - DBPortNumber?: IntegerOptional; - /** - * Boolean value that indicates if the DB instance has a publicly resolvable DNS name. Set to True to make the DB instance Internet-facing with a publicly resolvable DNS name, which resolves to a public IP address. Set to False to make the DB instance internal with a DNS name that resolves to a private IP address. PubliclyAccessible only applies to DB instances in a VPC. The DB instance must be part of a public subnet and PubliclyAccessible must be true in order for it to be publicly accessible. Changes to the PubliclyAccessible parameter are applied immediately regardless of the value of the ApplyImmediately parameter. Default: false - */ - PubliclyAccessible?: BooleanOptional; - /** - * The ARN for the IAM role that permits RDS to send enhanced monitoring metrics to CloudWatch Logs. For example, arn:aws:iam:123456789012:role/emaccess. For information on creating a monitoring role, go to To create an IAM role for Amazon RDS Enhanced Monitoring. If MonitoringInterval is set to a value other than 0, then you must supply a MonitoringRoleArn value. - */ - MonitoringRoleArn?: String; - /** - * The name of the IAM role to use when making API calls to the Directory Service. - */ - DomainIAMRoleName?: String; - /** - * A value that specifies the order in which an Aurora Replica is promoted to the primary instance after a failure of the existing primary instance. For more information, see Fault Tolerance for an Aurora DB Cluster. Default: 1 Valid Values: 0 - 15 - */ - PromotionTier?: IntegerOptional; - /** - * True to enable mapping of AWS Identity and Access Management (IAM) accounts to database accounts; otherwise false. You can enable IAM database authentication for the following database engines Amazon Aurora Not applicable. Mapping AWS IAM accounts to database accounts is managed by the DB cluster. For more information, see ModifyDBCluster. MySQL For MySQL 5.6, minor version 5.6.34 or higher For MySQL 5.7, minor version 5.7.16 or higher Default: false - */ - EnableIAMDatabaseAuthentication?: BooleanOptional; - EnablePerformanceInsights?: BooleanOptional; - PerformanceInsightsKMSKeyId?: String; - } - export interface ModifyDBInstanceResult { - DBInstance?: DBInstance; - } - export interface ModifyDBParameterGroupMessage { - /** - * The name of the DB parameter group. Constraints: If supplied, must match the name of an existing DBParameterGroup. - */ - DBParameterGroupName: String; - /** - * An array of parameter names, values, and the apply method for the parameter update. At least one parameter name, value, and apply method must be supplied; subsequent arguments are optional. A maximum of 20 parameters can be modified in a single request. Valid Values (for the application method): immediate | pending-reboot You can use the immediate value with dynamic parameters only. You can use the pending-reboot value for both dynamic and static parameters, and changes are applied when you reboot the DB instance without failover. - */ - Parameters: ParametersList; - } - export interface ModifyDBSnapshotAttributeMessage { - /** - * The identifier for the DB snapshot to modify the attributes for. - */ - DBSnapshotIdentifier: String; - /** - * The name of the DB snapshot attribute to modify. To manage authorization for other AWS accounts to copy or restore a manual DB snapshot, set this value to restore. - */ - AttributeName: String; - /** - * A list of DB snapshot attributes to add to the attribute specified by AttributeName. To authorize other AWS accounts to copy or restore a manual snapshot, set this list to include one or more AWS account IDs, or all to make the manual DB snapshot restorable by any AWS account. Do not add the all value for any manual DB snapshots that contain private information that you don't want available to all AWS accounts. - */ - ValuesToAdd?: AttributeValueList; - /** - * A list of DB snapshot attributes to remove from the attribute specified by AttributeName. To remove authorization for other AWS accounts to copy or restore a manual snapshot, set this list to include one or more AWS account identifiers, or all to remove authorization for any AWS account to copy or restore the DB snapshot. If you specify all, an AWS account whose account ID is explicitly added to the restore attribute can still copy or restore the manual DB snapshot. - */ - ValuesToRemove?: AttributeValueList; - } - export interface ModifyDBSnapshotAttributeResult { - DBSnapshotAttributesResult?: DBSnapshotAttributesResult; - } - export interface ModifyDBSnapshotMessage { - /** - * The identifier of the DB snapshot to modify. - */ - DBSnapshotIdentifier: String; - /** - * The engine version to upgrade the DB snapshot to. The following are the database engines and engine versions that are available when you upgrade a DB snapshot. MySQL 5.5.46 (supported for 5.1 DB snapshots) Oracle 12.1.0.2.v8 (supported for 12.1.0.1 DB snapshots) 11.2.0.4.v12 (supported for 11.2.0.2 DB snapshots) 11.2.0.4.v11 (supported for 11.2.0.3 DB snapshots) - */ - EngineVersion?: String; - /** - * The option group to identify with the upgraded DB snapshot. You can specify this parameter when you upgrade an Oracle DB snapshot. The same option group considerations apply when upgrading a DB snapshot as when upgrading a DB instance. For more information, see Option Group Considerations. - */ - OptionGroupName?: String; - } - export interface ModifyDBSnapshotResult { - DBSnapshot?: DBSnapshot; - } - export interface ModifyDBSubnetGroupMessage { - /** - * The name for the DB subnet group. This value is stored as a lowercase string. You can't modify the default subnet group. Constraints: Must match the name of an existing DBSubnetGroup. Must not be default. Example: mySubnetgroup - */ - DBSubnetGroupName: String; - /** - * The description for the DB subnet group. - */ - DBSubnetGroupDescription?: String; - /** - * The EC2 subnet IDs for the DB subnet group. - */ - SubnetIds: SubnetIdentifierList; - } - export interface ModifyDBSubnetGroupResult { - DBSubnetGroup?: DBSubnetGroup; - } - export interface ModifyEventSubscriptionMessage { - /** - * The name of the RDS event notification subscription. - */ - SubscriptionName: String; - /** - * The Amazon Resource Name (ARN) of the SNS topic created for event notification. The ARN is created by Amazon SNS when you create a topic and subscribe to it. - */ - SnsTopicArn?: String; - /** - * The type of source that will be generating the events. For example, if you want to be notified of events generated by a DB instance, you would set this parameter to db-instance. if this value is not specified, all events are returned. Valid values: db-instance | db-parameter-group | db-security-group | db-snapshot - */ - SourceType?: String; - /** - * A list of event categories for a SourceType that you want to subscribe to. You can see a list of the categories for a given SourceType in the Events topic in the Amazon RDS User Guide or by using the DescribeEventCategories action. - */ - EventCategories?: EventCategoriesList; - /** - * A Boolean value; set to true to activate the subscription. - */ - Enabled?: BooleanOptional; - } - export interface ModifyEventSubscriptionResult { - EventSubscription?: EventSubscription; - } - export interface ModifyOptionGroupMessage { - /** - * The name of the option group to be modified. Permanent options, such as the TDE option for Oracle Advanced Security TDE, cannot be removed from an option group, and that option group cannot be removed from a DB instance once it is associated with a DB instance - */ - OptionGroupName: String; - /** - * Options in this list are added to the option group or, if already present, the specified configuration is used to update the existing configuration. - */ - OptionsToInclude?: OptionConfigurationList; - /** - * Options in this list are removed from the option group. - */ - OptionsToRemove?: OptionNamesList; - /** - * Indicates whether the changes should be applied immediately, or during the next maintenance window for each instance associated with the option group. - */ - ApplyImmediately?: Boolean; - } - export interface ModifyOptionGroupResult { - OptionGroup?: OptionGroup; - } - export interface Option { - /** - * The name of the option. - */ - OptionName?: String; - /** - * The description of the option. - */ - OptionDescription?: String; - /** - * Indicate if this option is persistent. - */ - Persistent?: Boolean; - /** - * Indicate if this option is permanent. - */ - Permanent?: Boolean; - /** - * If required, the port configured for this option to use. - */ - Port?: IntegerOptional; - /** - * The version of the option. - */ - OptionVersion?: String; - /** - * The option settings for this option. - */ - OptionSettings?: OptionSettingConfigurationList; - /** - * If the option requires access to a port, then this DB security group allows access to the port. - */ - DBSecurityGroupMemberships?: DBSecurityGroupMembershipList; - /** - * If the option requires access to a port, then this VPC security group allows access to the port. - */ - VpcSecurityGroupMemberships?: VpcSecurityGroupMembershipList; - } - export interface OptionConfiguration { - /** - * The configuration of options to include in a group. - */ - OptionName: String; - /** - * The optional port for the option. - */ - Port?: IntegerOptional; - /** - * The version for the option. - */ - OptionVersion?: String; - /** - * A list of DBSecurityGroupMemebrship name strings used for this option. - */ - DBSecurityGroupMemberships?: DBSecurityGroupNameList; - /** - * A list of VpcSecurityGroupMemebrship name strings used for this option. - */ - VpcSecurityGroupMemberships?: VpcSecurityGroupIdList; - /** - * The option settings to include in an option group. - */ - OptionSettings?: OptionSettingsList; - } - export type OptionConfigurationList = OptionConfiguration[]; - export interface OptionGroup { - /** - * Specifies the name of the option group. - */ - OptionGroupName?: String; - /** - * Provides a description of the option group. - */ - OptionGroupDescription?: String; - /** - * Indicates the name of the engine that this option group can be applied to. - */ - EngineName?: String; - /** - * Indicates the major engine version associated with this option group. - */ - MajorEngineVersion?: String; - /** - * Indicates what options are available in the option group. - */ - Options?: OptionsList; - /** - * Indicates whether this option group can be applied to both VPC and non-VPC instances. The value true indicates the option group can be applied to both VPC and non-VPC instances. - */ - AllowsVpcAndNonVpcInstanceMemberships?: Boolean; - /** - * If AllowsVpcAndNonVpcInstanceMemberships is false, this field is blank. If AllowsVpcAndNonVpcInstanceMemberships is true and this field is blank, then this option group can be applied to both VPC and non-VPC instances. If this field contains a value, then this option group can only be applied to instances that are in the VPC indicated by this field. - */ - VpcId?: String; - /** - * The Amazon Resource Name (ARN) for the option group. - */ - OptionGroupArn?: String; - } - export interface OptionGroupMembership { - /** - * The name of the option group that the instance belongs to. - */ - OptionGroupName?: String; - /** - * The status of the DB instance's option group membership. Valid values are: in-sync, pending-apply, pending-removal, pending-maintenance-apply, pending-maintenance-removal, applying, removing, and failed. - */ - Status?: String; - } - export type OptionGroupMembershipList = OptionGroupMembership[]; - export interface OptionGroupOption { - /** - * The name of the option. - */ - Name?: String; - /** - * The description of the option. - */ - Description?: String; - /** - * The name of the engine that this option can be applied to. - */ - EngineName?: String; - /** - * Indicates the major engine version that the option is available for. - */ - MajorEngineVersion?: String; - /** - * The minimum required engine version for the option to be applied. - */ - MinimumRequiredMinorEngineVersion?: String; - /** - * Specifies whether the option requires a port. - */ - PortRequired?: Boolean; - /** - * If the option requires a port, specifies the default port for the option. - */ - DefaultPort?: IntegerOptional; - /** - * The options that are prerequisites for this option. - */ - OptionsDependedOn?: OptionsDependedOn; - /** - * The options that conflict with this option. - */ - OptionsConflictsWith?: OptionsConflictsWith; - /** - * Persistent options can't be removed from an option group while DB instances are associated with the option group. If you disassociate all DB instances from the option group, your can remove the persistent option from the option group. - */ - Persistent?: Boolean; - /** - * Permanent options can never be removed from an option group. An option group containing a permanent option can't be removed from a DB instance. - */ - Permanent?: Boolean; - /** - * If true, you must enable the Auto Minor Version Upgrade setting for your DB instance before you can use this option. You can enable Auto Minor Version Upgrade when you first create your DB instance, or by modifying your DB instance later. - */ - RequiresAutoMinorEngineVersionUpgrade?: Boolean; - /** - * If true, you can only use this option with a DB instance that is in a VPC. - */ - VpcOnly?: Boolean; - /** - * If true, you can change the option to an earlier version of the option. This only applies to options that have different versions available. - */ - SupportsOptionVersionDowngrade?: BooleanOptional; - /** - * The option settings that are available (and the default value) for each option in an option group. - */ - OptionGroupOptionSettings?: OptionGroupOptionSettingsList; - /** - * The versions that are available for the option. - */ - OptionGroupOptionVersions?: OptionGroupOptionVersionsList; - } - export interface OptionGroupOptionSetting { - /** - * The name of the option group option. - */ - SettingName?: String; - /** - * The description of the option group option. - */ - SettingDescription?: String; - /** - * The default value for the option group option. - */ - DefaultValue?: String; - /** - * The DB engine specific parameter type for the option group option. - */ - ApplyType?: String; - /** - * Indicates the acceptable values for the option group option. - */ - AllowedValues?: String; - /** - * Boolean value where true indicates that this option group option can be changed from the default value. - */ - IsModifiable?: Boolean; - } - export type OptionGroupOptionSettingsList = OptionGroupOptionSetting[]; - export type OptionGroupOptionVersionsList = OptionVersion[]; - export type OptionGroupOptionsList = OptionGroupOption[]; - export interface OptionGroupOptionsMessage { - OptionGroupOptions?: OptionGroupOptionsList; - /** - * An optional pagination token provided by a previous request. If this parameter is specified, the response includes only records beyond the marker, up to the value specified by MaxRecords. - */ - Marker?: String; - } - export interface OptionGroups { - /** - * List of option groups. - */ - OptionGroupsList?: OptionGroupsList; - /** - * An optional pagination token provided by a previous request. If this parameter is specified, the response includes only records beyond the marker, up to the value specified by MaxRecords. - */ - Marker?: String; - } - export type OptionGroupsList = OptionGroup[]; - export type OptionNamesList = String[]; - export interface OptionSetting { - /** - * The name of the option that has settings that you can set. - */ - Name?: String; - /** - * The current value of the option setting. - */ - Value?: String; - /** - * The default value of the option setting. - */ - DefaultValue?: String; - /** - * The description of the option setting. - */ - Description?: String; - /** - * The DB engine specific parameter type. - */ - ApplyType?: String; - /** - * The data type of the option setting. - */ - DataType?: String; - /** - * The allowed values of the option setting. - */ - AllowedValues?: String; - /** - * A Boolean value that, when true, indicates the option setting can be modified from the default. - */ - IsModifiable?: Boolean; - /** - * Indicates if the option setting is part of a collection. - */ - IsCollection?: Boolean; - } - export type OptionSettingConfigurationList = OptionSetting[]; - export type OptionSettingsList = OptionSetting[]; - export interface OptionVersion { - /** - * The version of the option. - */ - Version?: String; - /** - * True if the version is the default version of the option; otherwise, false. - */ - IsDefault?: Boolean; - } - export type OptionsConflictsWith = String[]; - export type OptionsDependedOn = String[]; - export type OptionsList = Option[]; - export interface OrderableDBInstanceOption { - /** - * The engine type of the orderable DB instance. - */ - Engine?: String; - /** - * The engine version of the orderable DB instance. - */ - EngineVersion?: String; - /** - * The DB instance class for the orderable DB instance. - */ - DBInstanceClass?: String; - /** - * The license model for the orderable DB instance. - */ - LicenseModel?: String; - /** - * A list of Availability Zones for the orderable DB instance. - */ - AvailabilityZones?: AvailabilityZoneList; - /** - * Indicates whether this orderable DB instance is multi-AZ capable. - */ - MultiAZCapable?: Boolean; - /** - * Indicates whether this orderable DB instance can have a Read Replica. - */ - ReadReplicaCapable?: Boolean; - /** - * Indicates whether this is a VPC orderable DB instance. - */ - Vpc?: Boolean; - /** - * Indicates whether this orderable DB instance supports encrypted storage. - */ - SupportsStorageEncryption?: Boolean; - /** - * Indicates the storage type for this orderable DB instance. - */ - StorageType?: String; - /** - * Indicates whether this orderable DB instance supports provisioned IOPS. - */ - SupportsIops?: Boolean; - /** - * Indicates whether the DB instance supports enhanced monitoring at intervals from 1 to 60 seconds. - */ - SupportsEnhancedMonitoring?: Boolean; - /** - * Indicates whether this orderable DB instance supports IAM database authentication. - */ - SupportsIAMDatabaseAuthentication?: Boolean; - SupportsPerformanceInsights?: Boolean; - } - export type OrderableDBInstanceOptionsList = OrderableDBInstanceOption[]; - export interface OrderableDBInstanceOptionsMessage { - /** - * An OrderableDBInstanceOption structure containing information about orderable options for the DB instance. - */ - OrderableDBInstanceOptions?: OrderableDBInstanceOptionsList; - /** - * An optional pagination token provided by a previous OrderableDBInstanceOptions request. If this parameter is specified, the response includes only records beyond the marker, up to the value specified by MaxRecords . - */ - Marker?: String; - } - export interface Parameter { - /** - * Specifies the name of the parameter. - */ - ParameterName?: String; - /** - * Specifies the value of the parameter. - */ - ParameterValue?: String; - /** - * Provides a description of the parameter. - */ - Description?: String; - /** - * Indicates the source of the parameter value. - */ - Source?: String; - /** - * Specifies the engine specific parameters type. - */ - ApplyType?: String; - /** - * Specifies the valid data type for the parameter. - */ - DataType?: String; - /** - * Specifies the valid range of values for the parameter. - */ - AllowedValues?: String; - /** - * Indicates whether (true) or not (false) the parameter can be modified. Some parameters have security or operational implications that prevent them from being changed. - */ - IsModifiable?: Boolean; - /** - * The earliest engine version to which the parameter can apply. - */ - MinimumEngineVersion?: String; - /** - * Indicates when to apply parameter updates. - */ - ApplyMethod?: ApplyMethod; - } - export type ParametersList = Parameter[]; - export interface PendingMaintenanceAction { - /** - * The type of pending maintenance action that is available for the resource. - */ - Action?: String; - /** - * The date of the maintenance window when the action will be applied. The maintenance action will be applied to the resource during its first maintenance window after this date. If this date is specified, any next-maintenance opt-in requests are ignored. - */ - AutoAppliedAfterDate?: TStamp; - /** - * The date when the maintenance action will be automatically applied. The maintenance action will be applied to the resource on this date regardless of the maintenance window for the resource. If this date is specified, any immediate opt-in requests are ignored. - */ - ForcedApplyDate?: TStamp; - /** - * Indicates the type of opt-in request that has been received for the resource. - */ - OptInStatus?: String; - /** - * The effective date when the pending maintenance action will be applied to the resource. This date takes into account opt-in requests received from the ApplyPendingMaintenanceAction API, the AutoAppliedAfterDate, and the ForcedApplyDate. This value is blank if an opt-in request has not been received and nothing has been specified as AutoAppliedAfterDate or ForcedApplyDate. - */ - CurrentApplyDate?: TStamp; - /** - * A description providing more detail about the maintenance action. - */ - Description?: String; - } - export type PendingMaintenanceActionDetails = PendingMaintenanceAction[]; - export type PendingMaintenanceActions = ResourcePendingMaintenanceActions[]; - export interface PendingMaintenanceActionsMessage { - /** - * A list of the pending maintenance actions for the resource. - */ - PendingMaintenanceActions?: PendingMaintenanceActions; - /** - * An optional pagination token provided by a previous DescribePendingMaintenanceActions request. If this parameter is specified, the response includes only records beyond the marker, up to a number of records specified by MaxRecords. - */ - Marker?: String; - } - export interface PendingModifiedValues { - /** - * Contains the new DBInstanceClass for the DB instance that will be applied or is in progress. - */ - DBInstanceClass?: String; - /** - * Contains the new AllocatedStorage size for the DB instance that will be applied or is in progress. - */ - AllocatedStorage?: IntegerOptional; - /** - * Contains the pending or in-progress change of the master credentials for the DB instance. - */ - MasterUserPassword?: String; - /** - * Specifies the pending port for the DB instance. - */ - Port?: IntegerOptional; - /** - * Specifies the pending number of days for which automated backups are retained. - */ - BackupRetentionPeriod?: IntegerOptional; - /** - * Indicates that the Single-AZ DB instance is to change to a Multi-AZ deployment. - */ - MultiAZ?: BooleanOptional; - /** - * Indicates the database engine version. - */ - EngineVersion?: String; - /** - * The license model for the DB instance. Valid values: license-included | bring-your-own-license | general-public-license - */ - LicenseModel?: String; - /** - * Specifies the new Provisioned IOPS value for the DB instance that will be applied or is being applied. - */ - Iops?: IntegerOptional; - /** - * Contains the new DBInstanceIdentifier for the DB instance that will be applied or is in progress. - */ - DBInstanceIdentifier?: String; - /** - * Specifies the storage type to be associated with the DB instance. - */ - StorageType?: String; - /** - * Specifies the identifier of the CA certificate for the DB instance. - */ - CACertificateIdentifier?: String; - /** - * The new DB subnet group for the DB instance. - */ - DBSubnetGroupName?: String; - } - export interface PromoteReadReplicaDBClusterMessage { - /** - * The identifier of the DB cluster Read Replica to promote. This parameter is not case-sensitive. Constraints: Must match the identifier of an existing DBCluster Read Replica. Example: my-cluster-replica1 - */ - DBClusterIdentifier: String; - } - export interface PromoteReadReplicaDBClusterResult { - DBCluster?: DBCluster; - } - export interface PromoteReadReplicaMessage { - /** - * The DB instance identifier. This value is stored as a lowercase string. Constraints: Must match the identifier of an existing Read Replica DB instance. Example: mydbinstance - */ - DBInstanceIdentifier: String; - /** - * The number of days to retain automated backups. Setting this parameter to a positive number enables backups. Setting this parameter to 0 disables automated backups. Default: 1 Constraints: Must be a value from 0 to 8 - */ - BackupRetentionPeriod?: IntegerOptional; - /** - * The daily time range during which automated backups are created if automated backups are enabled, using the BackupRetentionPeriod parameter. Default: A 30-minute window selected at random from an 8-hour block of time per AWS Region. To see the time blocks available, see Adjusting the Preferred Maintenance Window in the Amazon RDS User Guide. Constraints: Must be in the format hh24:mi-hh24:mi. Times should be in Universal Coordinated Time (UTC). Must not conflict with the preferred maintenance window. Must be at least 30 minutes. - */ - PreferredBackupWindow?: String; - } - export interface PromoteReadReplicaResult { - DBInstance?: DBInstance; - } - export interface PurchaseReservedDBInstancesOfferingMessage { - /** - * The ID of the Reserved DB instance offering to purchase. Example: 438012d3-4052-4cc7-b2e3-8d3372e0e706 - */ - ReservedDBInstancesOfferingId: String; - /** - * Customer-specified identifier to track this reservation. Example: myreservationID - */ - ReservedDBInstanceId?: String; - /** - * The number of instances to reserve. Default: 1 - */ - DBInstanceCount?: IntegerOptional; - Tags?: TagList; - } - export interface PurchaseReservedDBInstancesOfferingResult { - ReservedDBInstance?: ReservedDBInstance; - } - export interface Range { - /** - * The minimum value in the range. - */ - From?: Integer; - /** - * The maximum value in the range. - */ - To?: Integer; - /** - * The step value for the range. For example, if you have a range of 5,000 to 10,000, with a step value of 1,000, the valid values start at 5,000 and step up by 1,000. Even though 7,500 is within the range, it isn't a valid value for the range. The valid values are 5,000, 6,000, 7,000, 8,000... - */ - Step?: IntegerOptional; - } - export type RangeList = Range[]; - export type ReadReplicaDBClusterIdentifierList = String[]; - export type ReadReplicaDBInstanceIdentifierList = String[]; - export type ReadReplicaIdentifierList = String[]; - export interface RebootDBInstanceMessage { - /** - * The DB instance identifier. This parameter is stored as a lowercase string. Constraints: Must match the identifier of an existing DBInstance. - */ - DBInstanceIdentifier: String; - /** - * When true, the reboot will be conducted through a MultiAZ failover. Constraint: You cannot specify true if the instance is not configured for MultiAZ. - */ - ForceFailover?: BooleanOptional; - } - export interface RebootDBInstanceResult { - DBInstance?: DBInstance; - } - export interface RecurringCharge { - /** - * The amount of the recurring charge. - */ - RecurringChargeAmount?: Double; - /** - * The frequency of the recurring charge. - */ - RecurringChargeFrequency?: String; - } - export type RecurringChargeList = RecurringCharge[]; - export interface RemoveRoleFromDBClusterMessage { - /** - * The name of the DB cluster to disassociate the IAM role from. - */ - DBClusterIdentifier: String; - /** - * The Amazon Resource Name (ARN) of the IAM role to disassociate from the Aurora DB cluster, for example arn:aws:iam::123456789012:role/AuroraAccessRole. - */ - RoleArn: String; - } - export interface RemoveSourceIdentifierFromSubscriptionMessage { - /** - * The name of the RDS event notification subscription you want to remove a source identifier from. - */ - SubscriptionName: String; - /** - * The source identifier to be removed from the subscription, such as the DB instance identifier for a DB instance or the name of a security group. - */ - SourceIdentifier: String; - } - export interface RemoveSourceIdentifierFromSubscriptionResult { - EventSubscription?: EventSubscription; - } - export interface RemoveTagsFromResourceMessage { - /** - * The Amazon RDS resource the tags will be removed from. This value is an Amazon Resource Name (ARN). For information about creating an ARN, see Constructing an RDS Amazon Resource Name (ARN). - */ - ResourceName: String; - /** - * The tag key (name) of the tag to be removed. - */ - TagKeys: KeyList; - } - export interface ReservedDBInstance { - /** - * The unique identifier for the reservation. - */ - ReservedDBInstanceId?: String; - /** - * The offering identifier. - */ - ReservedDBInstancesOfferingId?: String; - /** - * The DB instance class for the reserved DB instance. - */ - DBInstanceClass?: String; - /** - * The time the reservation started. - */ - StartTime?: TStamp; - /** - * The duration of the reservation in seconds. - */ - Duration?: Integer; - /** - * The fixed price charged for this reserved DB instance. - */ - FixedPrice?: Double; - /** - * The hourly price charged for this reserved DB instance. - */ - UsagePrice?: Double; - /** - * The currency code for the reserved DB instance. - */ - CurrencyCode?: String; - /** - * The number of reserved DB instances. - */ - DBInstanceCount?: Integer; - /** - * The description of the reserved DB instance. - */ - ProductDescription?: String; - /** - * The offering type of this reserved DB instance. - */ - OfferingType?: String; - /** - * Indicates if the reservation applies to Multi-AZ deployments. - */ - MultiAZ?: Boolean; - /** - * The state of the reserved DB instance. - */ - State?: String; - /** - * The recurring price charged to run this reserved DB instance. - */ - RecurringCharges?: RecurringChargeList; - /** - * The Amazon Resource Name (ARN) for the reserved DB instance. - */ - ReservedDBInstanceArn?: String; - } - export type ReservedDBInstanceList = ReservedDBInstance[]; - export interface ReservedDBInstanceMessage { - /** - * An optional pagination token provided by a previous request. If this parameter is specified, the response includes only records beyond the marker, up to the value specified by MaxRecords. - */ - Marker?: String; - /** - * A list of reserved DB instances. - */ - ReservedDBInstances?: ReservedDBInstanceList; - } - export interface ReservedDBInstancesOffering { - /** - * The offering identifier. - */ - ReservedDBInstancesOfferingId?: String; - /** - * The DB instance class for the reserved DB instance. - */ - DBInstanceClass?: String; - /** - * The duration of the offering in seconds. - */ - Duration?: Integer; - /** - * The fixed price charged for this offering. - */ - FixedPrice?: Double; - /** - * The hourly price charged for this offering. - */ - UsagePrice?: Double; - /** - * The currency code for the reserved DB instance offering. - */ - CurrencyCode?: String; - /** - * The database engine used by the offering. - */ - ProductDescription?: String; - /** - * The offering type. - */ - OfferingType?: String; - /** - * Indicates if the offering applies to Multi-AZ deployments. - */ - MultiAZ?: Boolean; - /** - * The recurring price charged to run this reserved DB instance. - */ - RecurringCharges?: RecurringChargeList; - } - export type ReservedDBInstancesOfferingList = ReservedDBInstancesOffering[]; - export interface ReservedDBInstancesOfferingMessage { - /** - * An optional pagination token provided by a previous request. If this parameter is specified, the response includes only records beyond the marker, up to the value specified by MaxRecords. - */ - Marker?: String; - /** - * A list of reserved DB instance offerings. - */ - ReservedDBInstancesOfferings?: ReservedDBInstancesOfferingList; - } - export interface ResetDBClusterParameterGroupMessage { - /** - * The name of the DB cluster parameter group to reset. - */ - DBClusterParameterGroupName: String; - /** - * A value that is set to true to reset all parameters in the DB cluster parameter group to their default values, and false otherwise. You cannot use this parameter if there is a list of parameter names specified for the Parameters parameter. - */ - ResetAllParameters?: Boolean; - /** - * A list of parameter names in the DB cluster parameter group to reset to the default values. You cannot use this parameter if the ResetAllParameters parameter is set to true. - */ - Parameters?: ParametersList; - } - export interface ResetDBParameterGroupMessage { - /** - * The name of the DB parameter group. Constraints: Must match the name of an existing DBParameterGroup. - */ - DBParameterGroupName: String; - /** - * Specifies whether (true) or not (false) to reset all parameters in the DB parameter group to default values. Default: true - */ - ResetAllParameters?: Boolean; - /** - * To reset the entire DB parameter group, specify the DBParameterGroup name and ResetAllParameters parameters. To reset specific parameters, provide a list of the following: ParameterName and ApplyMethod. A maximum of 20 parameters can be modified in a single request. MySQL Valid Values (for Apply method): immediate | pending-reboot You can use the immediate value with dynamic parameters only. You can use the pending-reboot value for both dynamic and static parameters, and changes are applied when DB instance reboots. MariaDB Valid Values (for Apply method): immediate | pending-reboot You can use the immediate value with dynamic parameters only. You can use the pending-reboot value for both dynamic and static parameters, and changes are applied when DB instance reboots. Oracle Valid Values (for Apply method): pending-reboot - */ - Parameters?: ParametersList; - } - export interface ResourcePendingMaintenanceActions { - /** - * The ARN of the resource that has pending maintenance actions. - */ - ResourceIdentifier?: String; - /** - * A list that provides details about the pending maintenance actions for the resource. - */ - PendingMaintenanceActionDetails?: PendingMaintenanceActionDetails; - } - export interface RestoreDBClusterFromS3Message { - /** - * A list of EC2 Availability Zones that instances in the restored DB cluster can be created in. - */ - AvailabilityZones?: AvailabilityZones; - /** - * The number of days for which automated backups of the restored DB cluster are retained. You must specify a minimum value of 1. Default: 1 Constraints: Must be a value from 1 to 35 - */ - BackupRetentionPeriod?: IntegerOptional; - /** - * A value that indicates that the restored DB cluster should be associated with the specified CharacterSet. - */ - CharacterSetName?: String; - /** - * The database name for the restored DB cluster. - */ - DatabaseName?: String; - /** - * The name of the DB cluster to create from the source data in the S3 bucket. This parameter is isn't case-sensitive. Constraints: Must contain from 1 to 63 letters, numbers, or hyphens. First character must be a letter. Cannot end with a hyphen or contain two consecutive hyphens. Example: my-cluster1 - */ - DBClusterIdentifier: String; - /** - * The name of the DB cluster parameter group to associate with the restored DB cluster. If this argument is omitted, default.aurora5.6 will be used. Constraints: If supplied, must match the name of an existing DBClusterParameterGroup. - */ - DBClusterParameterGroupName?: String; - /** - * A list of EC2 VPC security groups to associate with the restored DB cluster. - */ - VpcSecurityGroupIds?: VpcSecurityGroupIdList; - /** - * A DB subnet group to associate with the restored DB cluster. Constraints: If supplied, must match the name of an existing DBSubnetGroup. Example: mySubnetgroup - */ - DBSubnetGroupName?: String; - /** - * The name of the database engine to be used for the restored DB cluster. Valid Values: aurora - */ - Engine: String; - /** - * The version number of the database engine to use. Aurora Example: 5.6.10a - */ - EngineVersion?: String; - /** - * The port number on which the instances in the restored DB cluster accept connections. Default: 3306 - */ - Port?: IntegerOptional; - /** - * The name of the master user for the restored DB cluster. Constraints: Must be 1 to 16 letters or numbers. First character must be a letter. Cannot be a reserved word for the chosen database engine. - */ - MasterUsername: String; - /** - * The password for the master database user. This password can contain any printable ASCII character except "/", """, or "@". Constraints: Must contain from 8 to 41 characters. - */ - MasterUserPassword: String; - /** - * A value that indicates that the restored DB cluster should be associated with the specified option group. Permanent options cannot be removed from an option group. An option group cannot be removed from a DB cluster once it is associated with a DB cluster. - */ - OptionGroupName?: String; - /** - * The daily time range during which automated backups are created if automated backups are enabled using the BackupRetentionPeriod parameter. Default: A 30-minute window selected at random from an 8-hour block of time per AWS Region. To see the time blocks available, see Adjusting the Preferred Maintenance Window in the Amazon RDS User Guide. Constraints: Must be in the format hh24:mi-hh24:mi. Times should be in Universal Coordinated Time (UTC). Must not conflict with the preferred maintenance window. Must be at least 30 minutes. - */ - PreferredBackupWindow?: String; - /** - * The weekly time range during which system maintenance can occur, in Universal Coordinated Time (UTC). Format: ddd:hh24:mi-ddd:hh24:mi Default: A 30-minute window selected at random from an 8-hour block of time per AWS Region, occurring on a random day of the week. To see the time blocks available, see Adjusting the Preferred Maintenance Window in the Amazon RDS User Guide. Valid Days: Mon, Tue, Wed, Thu, Fri, Sat, Sun Constraints: Minimum 30-minute window. - */ - PreferredMaintenanceWindow?: String; - Tags?: TagList; - /** - * Specifies whether the restored DB cluster is encrypted. - */ - StorageEncrypted?: BooleanOptional; - /** - * The KMS key identifier for an encrypted DB cluster. The KMS key identifier is the Amazon Resource Name (ARN) for the KMS encryption key. If you are creating a DB cluster with the same AWS account that owns the KMS encryption key used to encrypt the new DB cluster, then you can use the KMS key alias instead of the ARN for the KM encryption key. If the StorageEncrypted parameter is true, and you do not specify a value for the KmsKeyId parameter, then Amazon RDS will use your default encryption key. AWS KMS creates the default encryption key for your AWS account. Your AWS account has a different default encryption key for each AWS Region. - */ - KmsKeyId?: String; - /** - * A Boolean value that is true to enable mapping of AWS Identity and Access Management (IAM) accounts to database accounts, and otherwise false. Default: false - */ - EnableIAMDatabaseAuthentication?: BooleanOptional; - /** - * The identifier for the database engine that was backed up to create the files stored in the Amazon S3 bucket. Valid values: mysql - */ - SourceEngine: String; - /** - * The version of the database that the backup files were created from. MySQL version 5.5 and 5.6 are supported. Example: 5.6.22 - */ - SourceEngineVersion: String; - /** - * The name of the Amazon S3 bucket that contains the data used to create the Amazon Aurora DB cluster. - */ - S3BucketName: String; - /** - * The prefix for all of the file names that contain the data used to create the Amazon Aurora DB cluster. If you do not specify a SourceS3Prefix value, then the Amazon Aurora DB cluster is created by using all of the files in the Amazon S3 bucket. - */ - S3Prefix?: String; - /** - * The Amazon Resource Name (ARN) of the AWS Identity and Access Management (IAM) role that authorizes Amazon RDS to access the Amazon S3 bucket on your behalf. - */ - S3IngestionRoleArn: String; - } - export interface RestoreDBClusterFromS3Result { - DBCluster?: DBCluster; - } - export interface RestoreDBClusterFromSnapshotMessage { - /** - * Provides the list of EC2 Availability Zones that instances in the restored DB cluster can be created in. - */ - AvailabilityZones?: AvailabilityZones; - /** - * The name of the DB cluster to create from the DB snapshot or DB cluster snapshot. This parameter isn't case-sensitive. Constraints: Must contain from 1 to 255 letters, numbers, or hyphens First character must be a letter Cannot end with a hyphen or contain two consecutive hyphens Example: my-snapshot-id - */ - DBClusterIdentifier: String; - /** - * The identifier for the DB snapshot or DB cluster snapshot to restore from. You can use either the name or the Amazon Resource Name (ARN) to specify a DB cluster snapshot. However, you can use only the ARN to specify a DB snapshot. Constraints: Must match the identifier of an existing Snapshot. - */ - SnapshotIdentifier: String; - /** - * The database engine to use for the new DB cluster. Default: The same as source Constraint: Must be compatible with the engine of the source - */ - Engine: String; - /** - * The version of the database engine to use for the new DB cluster. - */ - EngineVersion?: String; - /** - * The port number on which the new DB cluster accepts connections. Constraints: Value must be 1150-65535 Default: The same port as the original DB cluster. - */ - Port?: IntegerOptional; - /** - * The name of the DB subnet group to use for the new DB cluster. Constraints: If supplied, must match the name of an existing DBSubnetGroup. Example: mySubnetgroup - */ - DBSubnetGroupName?: String; - /** - * The database name for the restored DB cluster. - */ - DatabaseName?: String; - /** - * The name of the option group to use for the restored DB cluster. - */ - OptionGroupName?: String; - /** - * A list of VPC security groups that the new DB cluster will belong to. - */ - VpcSecurityGroupIds?: VpcSecurityGroupIdList; - /** - * The tags to be assigned to the restored DB cluster. - */ - Tags?: TagList; - /** - * The KMS key identifier to use when restoring an encrypted DB cluster from a DB snapshot or DB cluster snapshot. The KMS key identifier is the Amazon Resource Name (ARN) for the KMS encryption key. If you are restoring a DB cluster with the same AWS account that owns the KMS encryption key used to encrypt the new DB cluster, then you can use the KMS key alias instead of the ARN for the KMS encryption key. If you do not specify a value for the KmsKeyId parameter, then the following will occur: If the DB snapshot or DB cluster snapshot in SnapshotIdentifier is encrypted, then the restored DB cluster is encrypted using the KMS key that was used to encrypt the DB snapshot or DB cluster snapshot. If the DB snapshot or DB cluster snapshot in SnapshotIdentifier is not encrypted, then the restored DB cluster is not encrypted. - */ - KmsKeyId?: String; - /** - * A Boolean value that is true to enable mapping of AWS Identity and Access Management (IAM) accounts to database accounts, and otherwise false. Default: false - */ - EnableIAMDatabaseAuthentication?: BooleanOptional; - } - export interface RestoreDBClusterFromSnapshotResult { - DBCluster?: DBCluster; - } - export interface RestoreDBClusterToPointInTimeMessage { - /** - * The name of the new DB cluster to be created. Constraints: Must contain from 1 to 63 letters, numbers, or hyphens First character must be a letter Cannot end with a hyphen or contain two consecutive hyphens - */ - DBClusterIdentifier: String; - /** - * The type of restore to be performed. You can specify one of the following values: full-copy - The new DB cluster is restored as a full copy of the source DB cluster. copy-on-write - The new DB cluster is restored as a clone of the source DB cluster. Constraints: You cannot specify copy-on-write if the engine version of the source DB cluster is earlier than 1.11. If you don't specify a RestoreType value, then the new DB cluster is restored as a full copy of the source DB cluster. - */ - RestoreType?: String; - /** - * The identifier of the source DB cluster from which to restore. Constraints: Must match the identifier of an existing DBCluster. - */ - SourceDBClusterIdentifier: String; - /** - * The date and time to restore the DB cluster to. Valid Values: Value must be a time in Universal Coordinated Time (UTC) format Constraints: Must be before the latest restorable time for the DB instance Must be specified if UseLatestRestorableTime parameter is not provided Cannot be specified if UseLatestRestorableTime parameter is true Cannot be specified if RestoreType parameter is copy-on-write Example: 2015-03-07T23:45:00Z - */ - RestoreToTime?: TStamp; - /** - * A value that is set to true to restore the DB cluster to the latest restorable backup time, and false otherwise. Default: false Constraints: Cannot be specified if RestoreToTime parameter is provided. - */ - UseLatestRestorableTime?: Boolean; - /** - * The port number on which the new DB cluster accepts connections. Constraints: Value must be 1150-65535 Default: The same port as the original DB cluster. - */ - Port?: IntegerOptional; - /** - * The DB subnet group name to use for the new DB cluster. Constraints: If supplied, must match the name of an existing DBSubnetGroup. Example: mySubnetgroup - */ - DBSubnetGroupName?: String; - /** - * The name of the option group for the new DB cluster. - */ - OptionGroupName?: String; - /** - * A list of VPC security groups that the new DB cluster belongs to. - */ - VpcSecurityGroupIds?: VpcSecurityGroupIdList; - Tags?: TagList; - /** - * The KMS key identifier to use when restoring an encrypted DB cluster from an encrypted DB cluster. The KMS key identifier is the Amazon Resource Name (ARN) for the KMS encryption key. If you are restoring a DB cluster with the same AWS account that owns the KMS encryption key used to encrypt the new DB cluster, then you can use the KMS key alias instead of the ARN for the KMS encryption key. You can restore to a new DB cluster and encrypt the new DB cluster with a KMS key that is different than the KMS key used to encrypt the source DB cluster. The new DB cluster will be encrypted with the KMS key identified by the KmsKeyId parameter. If you do not specify a value for the KmsKeyId parameter, then the following will occur: If the DB cluster is encrypted, then the restored DB cluster is encrypted using the KMS key that was used to encrypt the source DB cluster. If the DB cluster is not encrypted, then the restored DB cluster is not encrypted. If DBClusterIdentifier refers to a DB cluster that is not encrypted, then the restore request is rejected. - */ - KmsKeyId?: String; - /** - * A Boolean value that is true to enable mapping of AWS Identity and Access Management (IAM) accounts to database accounts, and otherwise false. Default: false - */ - EnableIAMDatabaseAuthentication?: BooleanOptional; - } - export interface RestoreDBClusterToPointInTimeResult { - DBCluster?: DBCluster; - } - export interface RestoreDBInstanceFromDBSnapshotMessage { - /** - * Name of the DB instance to create from the DB snapshot. This parameter isn't case-sensitive. Constraints: Must contain from 1 to 63 numbers, letters, or hyphens First character must be a letter Cannot end with a hyphen or contain two consecutive hyphens Example: my-snapshot-id - */ - DBInstanceIdentifier: String; - /** - * The identifier for the DB snapshot to restore from. Constraints: Must match the identifier of an existing DBSnapshot. If you are restoring from a shared manual DB snapshot, the DBSnapshotIdentifier must be the ARN of the shared DB snapshot. - */ - DBSnapshotIdentifier: String; - /** - * The compute and memory capacity of the Amazon RDS DB instance. Valid Values: db.t1.micro | db.m1.small | db.m1.medium | db.m1.large | db.m1.xlarge | db.m2.2xlarge | db.m2.4xlarge | db.m3.medium | db.m3.large | db.m3.xlarge | db.m3.2xlarge | db.m4.large | db.m4.xlarge | db.m4.2xlarge | db.m4.4xlarge | db.m4.10xlarge | db.r3.large | db.r3.xlarge | db.r3.2xlarge | db.r3.4xlarge | db.r3.8xlarge | db.t2.micro | db.t2.small | db.t2.medium | db.t2.large - */ - DBInstanceClass?: String; - /** - * The port number on which the database accepts connections. Default: The same port as the original DB instance Constraints: Value must be 1150-65535 - */ - Port?: IntegerOptional; - /** - * The EC2 Availability Zone that the database instance will be created in. Default: A random, system-chosen Availability Zone. Constraint: You cannot specify the AvailabilityZone parameter if the MultiAZ parameter is set to true. Example: us-east-1a - */ - AvailabilityZone?: String; - /** - * The DB subnet group name to use for the new instance. Constraints: If supplied, must match the name of an existing DBSubnetGroup. Example: mySubnetgroup - */ - DBSubnetGroupName?: String; - /** - * Specifies if the DB instance is a Multi-AZ deployment. Constraint: You cannot specify the AvailabilityZone parameter if the MultiAZ parameter is set to true. - */ - MultiAZ?: BooleanOptional; - /** - * Specifies the accessibility options for the DB instance. A value of true specifies an Internet-facing instance with a publicly resolvable DNS name, which resolves to a public IP address. A value of false specifies an internal instance with a DNS name that resolves to a private IP address. Default: The default behavior varies depending on whether a VPC has been requested or not. The following list shows the default behavior in each case. Default VPC: true VPC: false If no DB subnet group has been specified as part of the request and the PubliclyAccessible value has not been set, the DB instance will be publicly accessible. If a specific DB subnet group has been specified as part of the request and the PubliclyAccessible value has not been set, the DB instance will be private. - */ - PubliclyAccessible?: BooleanOptional; - /** - * Indicates that minor version upgrades will be applied automatically to the DB instance during the maintenance window. - */ - AutoMinorVersionUpgrade?: BooleanOptional; - /** - * License model information for the restored DB instance. Default: Same as source. Valid values: license-included | bring-your-own-license | general-public-license - */ - LicenseModel?: String; - /** - * The database name for the restored DB instance. This parameter doesn't apply to the MySQL, PostgreSQL, or MariaDB engines. - */ - DBName?: String; - /** - * The database engine to use for the new instance. Default: The same as source Constraint: Must be compatible with the engine of the source. You can restore a MariaDB 10.1 DB instance from a MySQL 5.6 snapshot. Valid Values: aurora mariadb mysql oracle-ee oracle-se2 oracle-se1 oracle-se postgres sqlserver-ee sqlserver-se sqlserver-ex sqlserver-web - */ - Engine?: String; - /** - * Specifies the amount of provisioned IOPS for the DB instance, expressed in I/O operations per second. If this parameter is not specified, the IOPS value will be taken from the backup. If this parameter is set to 0, the new instance will be converted to a non-PIOPS instance, which will take additional time, though your DB instance will be available for connections before the conversion starts. Constraints: Must be an integer greater than 1000. SQL Server Setting the IOPS value for the SQL Server database engine is not supported. - */ - Iops?: IntegerOptional; - /** - * The name of the option group to be used for the restored DB instance. Permanent options, such as the TDE option for Oracle Advanced Security TDE, cannot be removed from an option group, and that option group cannot be removed from a DB instance once it is associated with a DB instance - */ - OptionGroupName?: String; - Tags?: TagList; - /** - * Specifies the storage type to be associated with the DB instance. Valid values: standard | gp2 | io1 If you specify io1, you must also include a value for the Iops parameter. Default: io1 if the Iops parameter is specified; otherwise standard - */ - StorageType?: String; - /** - * The ARN from the Key Store with which to associate the instance for TDE encryption. - */ - TdeCredentialArn?: String; - /** - * The password for the given ARN from the Key Store in order to access the device. - */ - TdeCredentialPassword?: String; - /** - * Specify the Active Directory Domain to restore the instance in. - */ - Domain?: String; - /** - * True to copy all tags from the restored DB instance to snapshots of the DB instance; otherwise false. The default is false. - */ - CopyTagsToSnapshot?: BooleanOptional; - /** - * Specify the name of the IAM role to be used when making API calls to the Directory Service. - */ - DomainIAMRoleName?: String; - /** - * True to enable mapping of AWS Identity and Access Management (IAM) accounts to database accounts; otherwise false. You can enable IAM database authentication for the following database engines For MySQL 5.6, minor version 5.6.34 or higher For MySQL 5.7, minor version 5.7.16 or higher Aurora 5.6 or higher. Default: false - */ - EnableIAMDatabaseAuthentication?: BooleanOptional; - } - export interface RestoreDBInstanceFromDBSnapshotResult { - DBInstance?: DBInstance; - } - export interface RestoreDBInstanceToPointInTimeMessage { - /** - * The identifier of the source DB instance from which to restore. Constraints: Must match the identifier of an existing DBInstance. - */ - SourceDBInstanceIdentifier: String; - /** - * The name of the new database instance to be created. Constraints: Must contain from 1 to 63 letters, numbers, or hyphens First character must be a letter Cannot end with a hyphen or contain two consecutive hyphens - */ - TargetDBInstanceIdentifier: String; - /** - * The date and time to restore from. Valid Values: Value must be a time in Universal Coordinated Time (UTC) format Constraints: Must be before the latest restorable time for the DB instance Cannot be specified if UseLatestRestorableTime parameter is true Example: 2009-09-07T23:45:00Z - */ - RestoreTime?: TStamp; - /** - * Specifies whether (true) or not (false) the DB instance is restored from the latest backup time. Default: false Constraints: Cannot be specified if RestoreTime parameter is provided. - */ - UseLatestRestorableTime?: Boolean; - /** - * The compute and memory capacity of the Amazon RDS DB instance. Valid Values: db.t1.micro | db.m1.small | db.m1.medium | db.m1.large | db.m1.xlarge | db.m2.2xlarge | db.m2.4xlarge | db.m3.medium | db.m3.large | db.m3.xlarge | db.m3.2xlarge | db.m4.large | db.m4.xlarge | db.m4.2xlarge | db.m4.4xlarge | db.m4.10xlarge | db.r3.large | db.r3.xlarge | db.r3.2xlarge | db.r3.4xlarge | db.r3.8xlarge | db.t2.micro | db.t2.small | db.t2.medium | db.t2.large Default: The same DBInstanceClass as the original DB instance. - */ - DBInstanceClass?: String; - /** - * The port number on which the database accepts connections. Constraints: Value must be 1150-65535 Default: The same port as the original DB instance. - */ - Port?: IntegerOptional; - /** - * The EC2 Availability Zone that the database instance will be created in. Default: A random, system-chosen Availability Zone. Constraint: You cannot specify the AvailabilityZone parameter if the MultiAZ parameter is set to true. Example: us-east-1a - */ - AvailabilityZone?: String; - /** - * The DB subnet group name to use for the new instance. Constraints: If supplied, must match the name of an existing DBSubnetGroup. Example: mySubnetgroup - */ - DBSubnetGroupName?: String; - /** - * Specifies if the DB instance is a Multi-AZ deployment. Constraint: You cannot specify the AvailabilityZone parameter if the MultiAZ parameter is set to true. - */ - MultiAZ?: BooleanOptional; - /** - * Specifies the accessibility options for the DB instance. A value of true specifies an Internet-facing instance with a publicly resolvable DNS name, which resolves to a public IP address. A value of false specifies an internal instance with a DNS name that resolves to a private IP address. Default: The default behavior varies depending on whether a VPC has been requested or not. The following list shows the default behavior in each case. Default VPC:true VPC:false If no DB subnet group has been specified as part of the request and the PubliclyAccessible value has not been set, the DB instance will be publicly accessible. If a specific DB subnet group has been specified as part of the request and the PubliclyAccessible value has not been set, the DB instance will be private. - */ - PubliclyAccessible?: BooleanOptional; - /** - * Indicates that minor version upgrades will be applied automatically to the DB instance during the maintenance window. - */ - AutoMinorVersionUpgrade?: BooleanOptional; - /** - * License model information for the restored DB instance. Default: Same as source. Valid values: license-included | bring-your-own-license | general-public-license - */ - LicenseModel?: String; - /** - * The database name for the restored DB instance. This parameter is not used for the MySQL or MariaDB engines. - */ - DBName?: String; - /** - * The database engine to use for the new instance. Default: The same as source Constraint: Must be compatible with the engine of the source Valid Values: aurora mariadb mysql oracle-ee oracle-se2 oracle-se1 oracle-se postgres sqlserver-ee sqlserver-se sqlserver-ex sqlserver-web - */ - Engine?: String; - /** - * The amount of Provisioned IOPS (input/output operations per second) to be initially allocated for the DB instance. Constraints: Must be an integer greater than 1000. SQL Server Setting the IOPS value for the SQL Server database engine is not supported. - */ - Iops?: IntegerOptional; - /** - * The name of the option group to be used for the restored DB instance. Permanent options, such as the TDE option for Oracle Advanced Security TDE, cannot be removed from an option group, and that option group cannot be removed from a DB instance once it is associated with a DB instance - */ - OptionGroupName?: String; - /** - * True to copy all tags from the restored DB instance to snapshots of the DB instance; otherwise false. The default is false. - */ - CopyTagsToSnapshot?: BooleanOptional; - Tags?: TagList; - /** - * Specifies the storage type to be associated with the DB instance. Valid values: standard | gp2 | io1 If you specify io1, you must also include a value for the Iops parameter. Default: io1 if the Iops parameter is specified; otherwise standard - */ - StorageType?: String; - /** - * The ARN from the Key Store with which to associate the instance for TDE encryption. - */ - TdeCredentialArn?: String; - /** - * The password for the given ARN from the Key Store in order to access the device. - */ - TdeCredentialPassword?: String; - /** - * Specify the Active Directory Domain to restore the instance in. - */ - Domain?: String; - /** - * Specify the name of the IAM role to be used when making API calls to the Directory Service. - */ - DomainIAMRoleName?: String; - /** - * True to enable mapping of AWS Identity and Access Management (IAM) accounts to database accounts; otherwise false. You can enable IAM database authentication for the following database engines For MySQL 5.6, minor version 5.6.34 or higher For MySQL 5.7, minor version 5.7.16 or higher Aurora 5.6 or higher. Default: false - */ - EnableIAMDatabaseAuthentication?: BooleanOptional; - } - export interface RestoreDBInstanceToPointInTimeResult { - DBInstance?: DBInstance; - } - export interface RevokeDBSecurityGroupIngressMessage { - /** - * The name of the DB security group to revoke ingress from. - */ - DBSecurityGroupName: String; - /** - * The IP range to revoke access from. Must be a valid CIDR range. If CIDRIP is specified, EC2SecurityGroupName, EC2SecurityGroupId and EC2SecurityGroupOwnerId cannot be provided. - */ - CIDRIP?: String; - /** - * The name of the EC2 security group to revoke access from. For VPC DB security groups, EC2SecurityGroupId must be provided. Otherwise, EC2SecurityGroupOwnerId and either EC2SecurityGroupName or EC2SecurityGroupId must be provided. - */ - EC2SecurityGroupName?: String; - /** - * The id of the EC2 security group to revoke access from. For VPC DB security groups, EC2SecurityGroupId must be provided. Otherwise, EC2SecurityGroupOwnerId and either EC2SecurityGroupName or EC2SecurityGroupId must be provided. - */ - EC2SecurityGroupId?: String; - /** - * The AWS Account Number of the owner of the EC2 security group specified in the EC2SecurityGroupName parameter. The AWS Access Key ID is not an acceptable value. For VPC DB security groups, EC2SecurityGroupId must be provided. Otherwise, EC2SecurityGroupOwnerId and either EC2SecurityGroupName or EC2SecurityGroupId must be provided. - */ - EC2SecurityGroupOwnerId?: String; - } - export interface RevokeDBSecurityGroupIngressResult { - DBSecurityGroup?: DBSecurityGroup; - } - export type SourceIdsList = String[]; - export interface SourceRegion { - /** - * The name of the source AWS Region. - */ - RegionName?: String; - /** - * The endpoint for the source AWS Region endpoint. - */ - Endpoint?: String; - /** - * The status of the source AWS Region. - */ - Status?: String; - } - export type SourceRegionList = SourceRegion[]; - export interface SourceRegionMessage { - /** - * An optional pagination token provided by a previous request. If this parameter is specified, the response includes only records beyond the marker, up to the value specified by MaxRecords. - */ - Marker?: String; - /** - * A list of SourceRegion instances that contains each source AWS Region that the current AWS Region can get a Read Replica or a DB snapshot from. - */ - SourceRegions?: SourceRegionList; - } - export type SourceType = "db-instance"|"db-parameter-group"|"db-security-group"|"db-snapshot"|"db-cluster"|"db-cluster-snapshot"|string; - export interface StartDBInstanceMessage { - /** - * The user-supplied instance identifier. - */ - DBInstanceIdentifier: String; - } - export interface StartDBInstanceResult { - DBInstance?: DBInstance; - } - export interface StopDBInstanceMessage { - /** - * The user-supplied instance identifier. - */ - DBInstanceIdentifier: String; - /** - * The user-supplied instance identifier of the DB Snapshot created immediately before the DB instance is stopped. - */ - DBSnapshotIdentifier?: String; - } - export interface StopDBInstanceResult { - DBInstance?: DBInstance; - } - export type String = string; - export interface Subnet { - /** - * Specifies the identifier of the subnet. - */ - SubnetIdentifier?: String; - SubnetAvailabilityZone?: AvailabilityZone; - /** - * Specifies the status of the subnet. - */ - SubnetStatus?: String; - } - export type SubnetIdentifierList = String[]; - export type SubnetList = Subnet[]; - export type SupportedCharacterSetsList = CharacterSet[]; - export type SupportedTimezonesList = Timezone[]; - export type TStamp = Date; - export interface Tag { - /** - * A key is the required name of the tag. The string value can be from 1 to 128 Unicode characters in length and cannot be prefixed with "aws:" or "rds:". The string can only contain only the set of Unicode letters, digits, white-space, '_', '.', '/', '=', '+', '-' (Java regex: "^([\\p{L}\\p{Z}\\p{N}_.:/=+\\-]*)$"). - */ - Key?: String; - /** - * A value is the optional value of the tag. The string value can be from 1 to 256 Unicode characters in length and cannot be prefixed with "aws:" or "rds:". The string can only contain only the set of Unicode letters, digits, white-space, '_', '.', '/', '=', '+', '-' (Java regex: "^([\\p{L}\\p{Z}\\p{N}_.:/=+\\-]*)$"). - */ - Value?: String; - } - export type TagList = Tag[]; - export interface TagListMessage { - /** - * List of tags returned by the ListTagsForResource operation. - */ - TagList?: TagList; - } - export interface Timezone { - /** - * The name of the time zone. - */ - TimezoneName?: String; - } - export interface UpgradeTarget { - /** - * The name of the upgrade target database engine. - */ - Engine?: String; - /** - * The version number of the upgrade target database engine. - */ - EngineVersion?: String; - /** - * The version of the database engine that a DB instance can be upgraded to. - */ - Description?: String; - /** - * A value that indicates whether the target version will be applied to any source DB instances that have AutoMinorVersionUpgrade set to true. - */ - AutoUpgrade?: Boolean; - /** - * A value that indicates whether a database engine will be upgraded to a major version. - */ - IsMajorVersionUpgrade?: Boolean; - } - export interface ValidDBInstanceModificationsMessage { - /** - * Valid storage options for your DB instance. - */ - Storage?: ValidStorageOptionsList; - } - export interface ValidStorageOptions { - /** - * The valid storage types for your DB instance. For example, gp2, io1. - */ - StorageType?: String; - /** - * The valid range of storage in gigabytes. For example, 100 to 6144. - */ - StorageSize?: RangeList; - /** - * The valid range of provisioned IOPS. For example, 1000-20000. - */ - ProvisionedIops?: RangeList; - /** - * The valid range of Provisioned IOPS to gigabytes of storage multiplier. For example, 3-10, which means that provisioned IOPS can be between 3 and 10 times storage. - */ - IopsToStorageRatio?: DoubleRangeList; - } - export type ValidStorageOptionsList = ValidStorageOptions[]; - export type ValidUpgradeTargetList = UpgradeTarget[]; - export type VpcSecurityGroupIdList = String[]; - export interface VpcSecurityGroupMembership { - /** - * The name of the VPC security group. - */ - VpcSecurityGroupId?: String; - /** - * The status of the VPC security group. - */ - Status?: String; - } - export type VpcSecurityGroupMembershipList = VpcSecurityGroupMembership[]; - /** - * A string in YYYY-MM-DD format that represents the latest possible API version that can be used in this service. Specify 'latest' to use the latest possible version. - */ - export type apiVersion = "2013-01-10"|"2013-02-12"|"2013-09-09"|"2014-09-01"|"2014-09-01"|"2014-10-31"|"latest"|string; - export interface ClientApiVersions { - /** - * A string in YYYY-MM-DD format that represents the latest possible API version that can be used in this service. Specify 'latest' to use the latest possible version. - */ - apiVersion?: apiVersion; - } - export type ClientConfiguration = ServiceConfigurationOptions & ClientApiVersions; - /** - * Contains interfaces for use with the RDS client. - */ - export import Types = RDS; -} -export = RDS; diff --git a/workshops/monte-carlo-on-ec2-spot-fleet/src/web/node_modules/aws-sdk/clients/rds.js b/workshops/monte-carlo-on-ec2-spot-fleet/src/web/node_modules/aws-sdk/clients/rds.js deleted file mode 100644 index f9876b28..00000000 --- a/workshops/monte-carlo-on-ec2-spot-fleet/src/web/node_modules/aws-sdk/clients/rds.js +++ /dev/null @@ -1,57 +0,0 @@ -require('../lib/node_loader'); -var AWS = require('../lib/core'); -var Service = AWS.Service; -var apiLoader = AWS.apiLoader; - -apiLoader.services['rds'] = {}; -AWS.RDS = Service.defineService('rds', ['2013-01-10', '2013-02-12', '2013-09-09', '2014-09-01', '2014-09-01*', '2014-10-31']); -require('../lib/services/rds'); -Object.defineProperty(apiLoader.services['rds'], '2013-01-10', { - get: function get() { - var model = require('../apis/rds-2013-01-10.min.json'); - model.paginators = require('../apis/rds-2013-01-10.paginators.json').pagination; - return model; - }, - enumerable: true, - configurable: true -}); -Object.defineProperty(apiLoader.services['rds'], '2013-02-12', { - get: function get() { - var model = require('../apis/rds-2013-02-12.min.json'); - model.paginators = require('../apis/rds-2013-02-12.paginators.json').pagination; - return model; - }, - enumerable: true, - configurable: true -}); -Object.defineProperty(apiLoader.services['rds'], '2013-09-09', { - get: function get() { - var model = require('../apis/rds-2013-09-09.min.json'); - model.paginators = require('../apis/rds-2013-09-09.paginators.json').pagination; - model.waiters = require('../apis/rds-2013-09-09.waiters2.json').waiters; - return model; - }, - enumerable: true, - configurable: true -}); -Object.defineProperty(apiLoader.services['rds'], '2014-09-01', { - get: function get() { - var model = require('../apis/rds-2014-09-01.min.json'); - model.paginators = require('../apis/rds-2014-09-01.paginators.json').pagination; - return model; - }, - enumerable: true, - configurable: true -}); -Object.defineProperty(apiLoader.services['rds'], '2014-10-31', { - get: function get() { - var model = require('../apis/rds-2014-10-31.min.json'); - model.paginators = require('../apis/rds-2014-10-31.paginators.json').pagination; - model.waiters = require('../apis/rds-2014-10-31.waiters2.json').waiters; - return model; - }, - enumerable: true, - configurable: true -}); - -module.exports = AWS.RDS; diff --git a/workshops/monte-carlo-on-ec2-spot-fleet/src/web/node_modules/aws-sdk/clients/redshift.d.ts b/workshops/monte-carlo-on-ec2-spot-fleet/src/web/node_modules/aws-sdk/clients/redshift.d.ts deleted file mode 100644 index bde900dc..00000000 --- a/workshops/monte-carlo-on-ec2-spot-fleet/src/web/node_modules/aws-sdk/clients/redshift.d.ts +++ /dev/null @@ -1,3179 +0,0 @@ -import {Request} from '../lib/request'; -import {Response} from '../lib/response'; -import {AWSError} from '../lib/error'; -import {Service} from '../lib/service'; -import {ServiceConfigurationOptions} from '../lib/service'; -import {ConfigBase as Config} from '../lib/config'; -interface Blob {} -declare class Redshift extends Service { - /** - * Constructs a service object. This object has one method for each API operation. - */ - constructor(options?: Redshift.Types.ClientConfiguration) - config: Config & Redshift.Types.ClientConfiguration; - /** - * Adds an inbound (ingress) rule to an Amazon Redshift security group. Depending on whether the application accessing your cluster is running on the Internet or an Amazon EC2 instance, you can authorize inbound access to either a Classless Interdomain Routing (CIDR)/Internet Protocol (IP) range or to an Amazon EC2 security group. You can add as many as 20 ingress rules to an Amazon Redshift security group. If you authorize access to an Amazon EC2 security group, specify EC2SecurityGroupName and EC2SecurityGroupOwnerId. The Amazon EC2 security group and Amazon Redshift cluster must be in the same AWS region. If you authorize access to a CIDR/IP address range, specify CIDRIP. For an overview of CIDR blocks, see the Wikipedia article on Classless Inter-Domain Routing. You must also associate the security group with a cluster so that clients running on these IP addresses or the EC2 instance are authorized to connect to the cluster. For information about managing security groups, go to Working with Security Groups in the Amazon Redshift Cluster Management Guide. - */ - authorizeClusterSecurityGroupIngress(params: Redshift.Types.AuthorizeClusterSecurityGroupIngressMessage, callback?: (err: AWSError, data: Redshift.Types.AuthorizeClusterSecurityGroupIngressResult) => void): Request; - /** - * Adds an inbound (ingress) rule to an Amazon Redshift security group. Depending on whether the application accessing your cluster is running on the Internet or an Amazon EC2 instance, you can authorize inbound access to either a Classless Interdomain Routing (CIDR)/Internet Protocol (IP) range or to an Amazon EC2 security group. You can add as many as 20 ingress rules to an Amazon Redshift security group. If you authorize access to an Amazon EC2 security group, specify EC2SecurityGroupName and EC2SecurityGroupOwnerId. The Amazon EC2 security group and Amazon Redshift cluster must be in the same AWS region. If you authorize access to a CIDR/IP address range, specify CIDRIP. For an overview of CIDR blocks, see the Wikipedia article on Classless Inter-Domain Routing. You must also associate the security group with a cluster so that clients running on these IP addresses or the EC2 instance are authorized to connect to the cluster. For information about managing security groups, go to Working with Security Groups in the Amazon Redshift Cluster Management Guide. - */ - authorizeClusterSecurityGroupIngress(callback?: (err: AWSError, data: Redshift.Types.AuthorizeClusterSecurityGroupIngressResult) => void): Request; - /** - * Authorizes the specified AWS customer account to restore the specified snapshot. For more information about working with snapshots, go to Amazon Redshift Snapshots in the Amazon Redshift Cluster Management Guide. - */ - authorizeSnapshotAccess(params: Redshift.Types.AuthorizeSnapshotAccessMessage, callback?: (err: AWSError, data: Redshift.Types.AuthorizeSnapshotAccessResult) => void): Request; - /** - * Authorizes the specified AWS customer account to restore the specified snapshot. For more information about working with snapshots, go to Amazon Redshift Snapshots in the Amazon Redshift Cluster Management Guide. - */ - authorizeSnapshotAccess(callback?: (err: AWSError, data: Redshift.Types.AuthorizeSnapshotAccessResult) => void): Request; - /** - * Copies the specified automated cluster snapshot to a new manual cluster snapshot. The source must be an automated snapshot and it must be in the available state. When you delete a cluster, Amazon Redshift deletes any automated snapshots of the cluster. Also, when the retention period of the snapshot expires, Amazon Redshift automatically deletes it. If you want to keep an automated snapshot for a longer period, you can make a manual copy of the snapshot. Manual snapshots are retained until you delete them. For more information about working with snapshots, go to Amazon Redshift Snapshots in the Amazon Redshift Cluster Management Guide. - */ - copyClusterSnapshot(params: Redshift.Types.CopyClusterSnapshotMessage, callback?: (err: AWSError, data: Redshift.Types.CopyClusterSnapshotResult) => void): Request; - /** - * Copies the specified automated cluster snapshot to a new manual cluster snapshot. The source must be an automated snapshot and it must be in the available state. When you delete a cluster, Amazon Redshift deletes any automated snapshots of the cluster. Also, when the retention period of the snapshot expires, Amazon Redshift automatically deletes it. If you want to keep an automated snapshot for a longer period, you can make a manual copy of the snapshot. Manual snapshots are retained until you delete them. For more information about working with snapshots, go to Amazon Redshift Snapshots in the Amazon Redshift Cluster Management Guide. - */ - copyClusterSnapshot(callback?: (err: AWSError, data: Redshift.Types.CopyClusterSnapshotResult) => void): Request; - /** - * Creates a new cluster. To create the cluster in Virtual Private Cloud (VPC), you must provide a cluster subnet group name. The cluster subnet group identifies the subnets of your VPC that Amazon Redshift uses when creating the cluster. For more information about managing clusters, go to Amazon Redshift Clusters in the Amazon Redshift Cluster Management Guide. - */ - createCluster(params: Redshift.Types.CreateClusterMessage, callback?: (err: AWSError, data: Redshift.Types.CreateClusterResult) => void): Request; - /** - * Creates a new cluster. To create the cluster in Virtual Private Cloud (VPC), you must provide a cluster subnet group name. The cluster subnet group identifies the subnets of your VPC that Amazon Redshift uses when creating the cluster. For more information about managing clusters, go to Amazon Redshift Clusters in the Amazon Redshift Cluster Management Guide. - */ - createCluster(callback?: (err: AWSError, data: Redshift.Types.CreateClusterResult) => void): Request; - /** - * Creates an Amazon Redshift parameter group. Creating parameter groups is independent of creating clusters. You can associate a cluster with a parameter group when you create the cluster. You can also associate an existing cluster with a parameter group after the cluster is created by using ModifyCluster. Parameters in the parameter group define specific behavior that applies to the databases you create on the cluster. For more information about parameters and parameter groups, go to Amazon Redshift Parameter Groups in the Amazon Redshift Cluster Management Guide. - */ - createClusterParameterGroup(params: Redshift.Types.CreateClusterParameterGroupMessage, callback?: (err: AWSError, data: Redshift.Types.CreateClusterParameterGroupResult) => void): Request; - /** - * Creates an Amazon Redshift parameter group. Creating parameter groups is independent of creating clusters. You can associate a cluster with a parameter group when you create the cluster. You can also associate an existing cluster with a parameter group after the cluster is created by using ModifyCluster. Parameters in the parameter group define specific behavior that applies to the databases you create on the cluster. For more information about parameters and parameter groups, go to Amazon Redshift Parameter Groups in the Amazon Redshift Cluster Management Guide. - */ - createClusterParameterGroup(callback?: (err: AWSError, data: Redshift.Types.CreateClusterParameterGroupResult) => void): Request; - /** - * Creates a new Amazon Redshift security group. You use security groups to control access to non-VPC clusters. For information about managing security groups, go to Amazon Redshift Cluster Security Groups in the Amazon Redshift Cluster Management Guide. - */ - createClusterSecurityGroup(params: Redshift.Types.CreateClusterSecurityGroupMessage, callback?: (err: AWSError, data: Redshift.Types.CreateClusterSecurityGroupResult) => void): Request; - /** - * Creates a new Amazon Redshift security group. You use security groups to control access to non-VPC clusters. For information about managing security groups, go to Amazon Redshift Cluster Security Groups in the Amazon Redshift Cluster Management Guide. - */ - createClusterSecurityGroup(callback?: (err: AWSError, data: Redshift.Types.CreateClusterSecurityGroupResult) => void): Request; - /** - * Creates a manual snapshot of the specified cluster. The cluster must be in the available state. For more information about working with snapshots, go to Amazon Redshift Snapshots in the Amazon Redshift Cluster Management Guide. - */ - createClusterSnapshot(params: Redshift.Types.CreateClusterSnapshotMessage, callback?: (err: AWSError, data: Redshift.Types.CreateClusterSnapshotResult) => void): Request; - /** - * Creates a manual snapshot of the specified cluster. The cluster must be in the available state. For more information about working with snapshots, go to Amazon Redshift Snapshots in the Amazon Redshift Cluster Management Guide. - */ - createClusterSnapshot(callback?: (err: AWSError, data: Redshift.Types.CreateClusterSnapshotResult) => void): Request; - /** - * Creates a new Amazon Redshift subnet group. You must provide a list of one or more subnets in your existing Amazon Virtual Private Cloud (Amazon VPC) when creating Amazon Redshift subnet group. For information about subnet groups, go to Amazon Redshift Cluster Subnet Groups in the Amazon Redshift Cluster Management Guide. - */ - createClusterSubnetGroup(params: Redshift.Types.CreateClusterSubnetGroupMessage, callback?: (err: AWSError, data: Redshift.Types.CreateClusterSubnetGroupResult) => void): Request; - /** - * Creates a new Amazon Redshift subnet group. You must provide a list of one or more subnets in your existing Amazon Virtual Private Cloud (Amazon VPC) when creating Amazon Redshift subnet group. For information about subnet groups, go to Amazon Redshift Cluster Subnet Groups in the Amazon Redshift Cluster Management Guide. - */ - createClusterSubnetGroup(callback?: (err: AWSError, data: Redshift.Types.CreateClusterSubnetGroupResult) => void): Request; - /** - * Creates an Amazon Redshift event notification subscription. This action requires an ARN (Amazon Resource Name) of an Amazon SNS topic created by either the Amazon Redshift console, the Amazon SNS console, or the Amazon SNS API. To obtain an ARN with Amazon SNS, you must create a topic in Amazon SNS and subscribe to the topic. The ARN is displayed in the SNS console. You can specify the source type, and lists of Amazon Redshift source IDs, event categories, and event severities. Notifications will be sent for all events you want that match those criteria. For example, you can specify source type = cluster, source ID = my-cluster-1 and mycluster2, event categories = Availability, Backup, and severity = ERROR. The subscription will only send notifications for those ERROR events in the Availability and Backup categories for the specified clusters. If you specify both the source type and source IDs, such as source type = cluster and source identifier = my-cluster-1, notifications will be sent for all the cluster events for my-cluster-1. If you specify a source type but do not specify a source identifier, you will receive notice of the events for the objects of that type in your AWS account. If you do not specify either the SourceType nor the SourceIdentifier, you will be notified of events generated from all Amazon Redshift sources belonging to your AWS account. You must specify a source type if you specify a source ID. - */ - createEventSubscription(params: Redshift.Types.CreateEventSubscriptionMessage, callback?: (err: AWSError, data: Redshift.Types.CreateEventSubscriptionResult) => void): Request; - /** - * Creates an Amazon Redshift event notification subscription. This action requires an ARN (Amazon Resource Name) of an Amazon SNS topic created by either the Amazon Redshift console, the Amazon SNS console, or the Amazon SNS API. To obtain an ARN with Amazon SNS, you must create a topic in Amazon SNS and subscribe to the topic. The ARN is displayed in the SNS console. You can specify the source type, and lists of Amazon Redshift source IDs, event categories, and event severities. Notifications will be sent for all events you want that match those criteria. For example, you can specify source type = cluster, source ID = my-cluster-1 and mycluster2, event categories = Availability, Backup, and severity = ERROR. The subscription will only send notifications for those ERROR events in the Availability and Backup categories for the specified clusters. If you specify both the source type and source IDs, such as source type = cluster and source identifier = my-cluster-1, notifications will be sent for all the cluster events for my-cluster-1. If you specify a source type but do not specify a source identifier, you will receive notice of the events for the objects of that type in your AWS account. If you do not specify either the SourceType nor the SourceIdentifier, you will be notified of events generated from all Amazon Redshift sources belonging to your AWS account. You must specify a source type if you specify a source ID. - */ - createEventSubscription(callback?: (err: AWSError, data: Redshift.Types.CreateEventSubscriptionResult) => void): Request; - /** - * Creates an HSM client certificate that an Amazon Redshift cluster will use to connect to the client's HSM in order to store and retrieve the keys used to encrypt the cluster databases. The command returns a public key, which you must store in the HSM. In addition to creating the HSM certificate, you must create an Amazon Redshift HSM configuration that provides a cluster the information needed to store and use encryption keys in the HSM. For more information, go to Hardware Security Modules in the Amazon Redshift Cluster Management Guide. - */ - createHsmClientCertificate(params: Redshift.Types.CreateHsmClientCertificateMessage, callback?: (err: AWSError, data: Redshift.Types.CreateHsmClientCertificateResult) => void): Request; - /** - * Creates an HSM client certificate that an Amazon Redshift cluster will use to connect to the client's HSM in order to store and retrieve the keys used to encrypt the cluster databases. The command returns a public key, which you must store in the HSM. In addition to creating the HSM certificate, you must create an Amazon Redshift HSM configuration that provides a cluster the information needed to store and use encryption keys in the HSM. For more information, go to Hardware Security Modules in the Amazon Redshift Cluster Management Guide. - */ - createHsmClientCertificate(callback?: (err: AWSError, data: Redshift.Types.CreateHsmClientCertificateResult) => void): Request; - /** - * Creates an HSM configuration that contains the information required by an Amazon Redshift cluster to store and use database encryption keys in a Hardware Security Module (HSM). After creating the HSM configuration, you can specify it as a parameter when creating a cluster. The cluster will then store its encryption keys in the HSM. In addition to creating an HSM configuration, you must also create an HSM client certificate. For more information, go to Hardware Security Modules in the Amazon Redshift Cluster Management Guide. - */ - createHsmConfiguration(params: Redshift.Types.CreateHsmConfigurationMessage, callback?: (err: AWSError, data: Redshift.Types.CreateHsmConfigurationResult) => void): Request; - /** - * Creates an HSM configuration that contains the information required by an Amazon Redshift cluster to store and use database encryption keys in a Hardware Security Module (HSM). After creating the HSM configuration, you can specify it as a parameter when creating a cluster. The cluster will then store its encryption keys in the HSM. In addition to creating an HSM configuration, you must also create an HSM client certificate. For more information, go to Hardware Security Modules in the Amazon Redshift Cluster Management Guide. - */ - createHsmConfiguration(callback?: (err: AWSError, data: Redshift.Types.CreateHsmConfigurationResult) => void): Request; - /** - * Creates a snapshot copy grant that permits Amazon Redshift to use a customer master key (CMK) from AWS Key Management Service (AWS KMS) to encrypt copied snapshots in a destination region. For more information about managing snapshot copy grants, go to Amazon Redshift Database Encryption in the Amazon Redshift Cluster Management Guide. - */ - createSnapshotCopyGrant(params: Redshift.Types.CreateSnapshotCopyGrantMessage, callback?: (err: AWSError, data: Redshift.Types.CreateSnapshotCopyGrantResult) => void): Request; - /** - * Creates a snapshot copy grant that permits Amazon Redshift to use a customer master key (CMK) from AWS Key Management Service (AWS KMS) to encrypt copied snapshots in a destination region. For more information about managing snapshot copy grants, go to Amazon Redshift Database Encryption in the Amazon Redshift Cluster Management Guide. - */ - createSnapshotCopyGrant(callback?: (err: AWSError, data: Redshift.Types.CreateSnapshotCopyGrantResult) => void): Request; - /** - * Adds one or more tags to a specified resource. A resource can have up to 10 tags. If you try to create more than 10 tags for a resource, you will receive an error and the attempt will fail. If you specify a key that already exists for the resource, the value for that key will be updated with the new value. - */ - createTags(params: Redshift.Types.CreateTagsMessage, callback?: (err: AWSError, data: {}) => void): Request<{}, AWSError>; - /** - * Adds one or more tags to a specified resource. A resource can have up to 10 tags. If you try to create more than 10 tags for a resource, you will receive an error and the attempt will fail. If you specify a key that already exists for the resource, the value for that key will be updated with the new value. - */ - createTags(callback?: (err: AWSError, data: {}) => void): Request<{}, AWSError>; - /** - * Deletes a previously provisioned cluster. A successful response from the web service indicates that the request was received correctly. Use DescribeClusters to monitor the status of the deletion. The delete operation cannot be canceled or reverted once submitted. For more information about managing clusters, go to Amazon Redshift Clusters in the Amazon Redshift Cluster Management Guide. If you want to shut down the cluster and retain it for future use, set SkipFinalClusterSnapshot to false and specify a name for FinalClusterSnapshotIdentifier. You can later restore this snapshot to resume using the cluster. If a final cluster snapshot is requested, the status of the cluster will be "final-snapshot" while the snapshot is being taken, then it's "deleting" once Amazon Redshift begins deleting the cluster. For more information about managing clusters, go to Amazon Redshift Clusters in the Amazon Redshift Cluster Management Guide. - */ - deleteCluster(params: Redshift.Types.DeleteClusterMessage, callback?: (err: AWSError, data: Redshift.Types.DeleteClusterResult) => void): Request; - /** - * Deletes a previously provisioned cluster. A successful response from the web service indicates that the request was received correctly. Use DescribeClusters to monitor the status of the deletion. The delete operation cannot be canceled or reverted once submitted. For more information about managing clusters, go to Amazon Redshift Clusters in the Amazon Redshift Cluster Management Guide. If you want to shut down the cluster and retain it for future use, set SkipFinalClusterSnapshot to false and specify a name for FinalClusterSnapshotIdentifier. You can later restore this snapshot to resume using the cluster. If a final cluster snapshot is requested, the status of the cluster will be "final-snapshot" while the snapshot is being taken, then it's "deleting" once Amazon Redshift begins deleting the cluster. For more information about managing clusters, go to Amazon Redshift Clusters in the Amazon Redshift Cluster Management Guide. - */ - deleteCluster(callback?: (err: AWSError, data: Redshift.Types.DeleteClusterResult) => void): Request; - /** - * Deletes a specified Amazon Redshift parameter group. You cannot delete a parameter group if it is associated with a cluster. - */ - deleteClusterParameterGroup(params: Redshift.Types.DeleteClusterParameterGroupMessage, callback?: (err: AWSError, data: {}) => void): Request<{}, AWSError>; - /** - * Deletes a specified Amazon Redshift parameter group. You cannot delete a parameter group if it is associated with a cluster. - */ - deleteClusterParameterGroup(callback?: (err: AWSError, data: {}) => void): Request<{}, AWSError>; - /** - * Deletes an Amazon Redshift security group. You cannot delete a security group that is associated with any clusters. You cannot delete the default security group. For information about managing security groups, go to Amazon Redshift Cluster Security Groups in the Amazon Redshift Cluster Management Guide. - */ - deleteClusterSecurityGroup(params: Redshift.Types.DeleteClusterSecurityGroupMessage, callback?: (err: AWSError, data: {}) => void): Request<{}, AWSError>; - /** - * Deletes an Amazon Redshift security group. You cannot delete a security group that is associated with any clusters. You cannot delete the default security group. For information about managing security groups, go to Amazon Redshift Cluster Security Groups in the Amazon Redshift Cluster Management Guide. - */ - deleteClusterSecurityGroup(callback?: (err: AWSError, data: {}) => void): Request<{}, AWSError>; - /** - * Deletes the specified manual snapshot. The snapshot must be in the available state, with no other users authorized to access the snapshot. Unlike automated snapshots, manual snapshots are retained even after you delete your cluster. Amazon Redshift does not delete your manual snapshots. You must delete manual snapshot explicitly to avoid getting charged. If other accounts are authorized to access the snapshot, you must revoke all of the authorizations before you can delete the snapshot. - */ - deleteClusterSnapshot(params: Redshift.Types.DeleteClusterSnapshotMessage, callback?: (err: AWSError, data: Redshift.Types.DeleteClusterSnapshotResult) => void): Request; - /** - * Deletes the specified manual snapshot. The snapshot must be in the available state, with no other users authorized to access the snapshot. Unlike automated snapshots, manual snapshots are retained even after you delete your cluster. Amazon Redshift does not delete your manual snapshots. You must delete manual snapshot explicitly to avoid getting charged. If other accounts are authorized to access the snapshot, you must revoke all of the authorizations before you can delete the snapshot. - */ - deleteClusterSnapshot(callback?: (err: AWSError, data: Redshift.Types.DeleteClusterSnapshotResult) => void): Request; - /** - * Deletes the specified cluster subnet group. - */ - deleteClusterSubnetGroup(params: Redshift.Types.DeleteClusterSubnetGroupMessage, callback?: (err: AWSError, data: {}) => void): Request<{}, AWSError>; - /** - * Deletes the specified cluster subnet group. - */ - deleteClusterSubnetGroup(callback?: (err: AWSError, data: {}) => void): Request<{}, AWSError>; - /** - * Deletes an Amazon Redshift event notification subscription. - */ - deleteEventSubscription(params: Redshift.Types.DeleteEventSubscriptionMessage, callback?: (err: AWSError, data: {}) => void): Request<{}, AWSError>; - /** - * Deletes an Amazon Redshift event notification subscription. - */ - deleteEventSubscription(callback?: (err: AWSError, data: {}) => void): Request<{}, AWSError>; - /** - * Deletes the specified HSM client certificate. - */ - deleteHsmClientCertificate(params: Redshift.Types.DeleteHsmClientCertificateMessage, callback?: (err: AWSError, data: {}) => void): Request<{}, AWSError>; - /** - * Deletes the specified HSM client certificate. - */ - deleteHsmClientCertificate(callback?: (err: AWSError, data: {}) => void): Request<{}, AWSError>; - /** - * Deletes the specified Amazon Redshift HSM configuration. - */ - deleteHsmConfiguration(params: Redshift.Types.DeleteHsmConfigurationMessage, callback?: (err: AWSError, data: {}) => void): Request<{}, AWSError>; - /** - * Deletes the specified Amazon Redshift HSM configuration. - */ - deleteHsmConfiguration(callback?: (err: AWSError, data: {}) => void): Request<{}, AWSError>; - /** - * Deletes the specified snapshot copy grant. - */ - deleteSnapshotCopyGrant(params: Redshift.Types.DeleteSnapshotCopyGrantMessage, callback?: (err: AWSError, data: {}) => void): Request<{}, AWSError>; - /** - * Deletes the specified snapshot copy grant. - */ - deleteSnapshotCopyGrant(callback?: (err: AWSError, data: {}) => void): Request<{}, AWSError>; - /** - * Deletes a tag or tags from a resource. You must provide the ARN of the resource from which you want to delete the tag or tags. - */ - deleteTags(params: Redshift.Types.DeleteTagsMessage, callback?: (err: AWSError, data: {}) => void): Request<{}, AWSError>; - /** - * Deletes a tag or tags from a resource. You must provide the ARN of the resource from which you want to delete the tag or tags. - */ - deleteTags(callback?: (err: AWSError, data: {}) => void): Request<{}, AWSError>; - /** - * Returns a list of Amazon Redshift parameter groups, including parameter groups you created and the default parameter group. For each parameter group, the response includes the parameter group name, description, and parameter group family name. You can optionally specify a name to retrieve the description of a specific parameter group. For more information about parameters and parameter groups, go to Amazon Redshift Parameter Groups in the Amazon Redshift Cluster Management Guide. If you specify both tag keys and tag values in the same request, Amazon Redshift returns all parameter groups that match any combination of the specified keys and values. For example, if you have owner and environment for tag keys, and admin and test for tag values, all parameter groups that have any combination of those values are returned. If both tag keys and values are omitted from the request, parameter groups are returned regardless of whether they have tag keys or values associated with them. - */ - describeClusterParameterGroups(params: Redshift.Types.DescribeClusterParameterGroupsMessage, callback?: (err: AWSError, data: Redshift.Types.ClusterParameterGroupsMessage) => void): Request; - /** - * Returns a list of Amazon Redshift parameter groups, including parameter groups you created and the default parameter group. For each parameter group, the response includes the parameter group name, description, and parameter group family name. You can optionally specify a name to retrieve the description of a specific parameter group. For more information about parameters and parameter groups, go to Amazon Redshift Parameter Groups in the Amazon Redshift Cluster Management Guide. If you specify both tag keys and tag values in the same request, Amazon Redshift returns all parameter groups that match any combination of the specified keys and values. For example, if you have owner and environment for tag keys, and admin and test for tag values, all parameter groups that have any combination of those values are returned. If both tag keys and values are omitted from the request, parameter groups are returned regardless of whether they have tag keys or values associated with them. - */ - describeClusterParameterGroups(callback?: (err: AWSError, data: Redshift.Types.ClusterParameterGroupsMessage) => void): Request; - /** - * Returns a detailed list of parameters contained within the specified Amazon Redshift parameter group. For each parameter the response includes information such as parameter name, description, data type, value, whether the parameter value is modifiable, and so on. You can specify source filter to retrieve parameters of only specific type. For example, to retrieve parameters that were modified by a user action such as from ModifyClusterParameterGroup, you can specify source equal to user. For more information about parameters and parameter groups, go to Amazon Redshift Parameter Groups in the Amazon Redshift Cluster Management Guide. - */ - describeClusterParameters(params: Redshift.Types.DescribeClusterParametersMessage, callback?: (err: AWSError, data: Redshift.Types.ClusterParameterGroupDetails) => void): Request; - /** - * Returns a detailed list of parameters contained within the specified Amazon Redshift parameter group. For each parameter the response includes information such as parameter name, description, data type, value, whether the parameter value is modifiable, and so on. You can specify source filter to retrieve parameters of only specific type. For example, to retrieve parameters that were modified by a user action such as from ModifyClusterParameterGroup, you can specify source equal to user. For more information about parameters and parameter groups, go to Amazon Redshift Parameter Groups in the Amazon Redshift Cluster Management Guide. - */ - describeClusterParameters(callback?: (err: AWSError, data: Redshift.Types.ClusterParameterGroupDetails) => void): Request; - /** - * Returns information about Amazon Redshift security groups. If the name of a security group is specified, the response will contain only information about only that security group. For information about managing security groups, go to Amazon Redshift Cluster Security Groups in the Amazon Redshift Cluster Management Guide. If you specify both tag keys and tag values in the same request, Amazon Redshift returns all security groups that match any combination of the specified keys and values. For example, if you have owner and environment for tag keys, and admin and test for tag values, all security groups that have any combination of those values are returned. If both tag keys and values are omitted from the request, security groups are returned regardless of whether they have tag keys or values associated with them. - */ - describeClusterSecurityGroups(params: Redshift.Types.DescribeClusterSecurityGroupsMessage, callback?: (err: AWSError, data: Redshift.Types.ClusterSecurityGroupMessage) => void): Request; - /** - * Returns information about Amazon Redshift security groups. If the name of a security group is specified, the response will contain only information about only that security group. For information about managing security groups, go to Amazon Redshift Cluster Security Groups in the Amazon Redshift Cluster Management Guide. If you specify both tag keys and tag values in the same request, Amazon Redshift returns all security groups that match any combination of the specified keys and values. For example, if you have owner and environment for tag keys, and admin and test for tag values, all security groups that have any combination of those values are returned. If both tag keys and values are omitted from the request, security groups are returned regardless of whether they have tag keys or values associated with them. - */ - describeClusterSecurityGroups(callback?: (err: AWSError, data: Redshift.Types.ClusterSecurityGroupMessage) => void): Request; - /** - * Returns one or more snapshot objects, which contain metadata about your cluster snapshots. By default, this operation returns information about all snapshots of all clusters that are owned by you AWS customer account. No information is returned for snapshots owned by inactive AWS customer accounts. If you specify both tag keys and tag values in the same request, Amazon Redshift returns all snapshots that match any combination of the specified keys and values. For example, if you have owner and environment for tag keys, and admin and test for tag values, all snapshots that have any combination of those values are returned. Only snapshots that you own are returned in the response; shared snapshots are not returned with the tag key and tag value request parameters. If both tag keys and values are omitted from the request, snapshots are returned regardless of whether they have tag keys or values associated with them. - */ - describeClusterSnapshots(params: Redshift.Types.DescribeClusterSnapshotsMessage, callback?: (err: AWSError, data: Redshift.Types.SnapshotMessage) => void): Request; - /** - * Returns one or more snapshot objects, which contain metadata about your cluster snapshots. By default, this operation returns information about all snapshots of all clusters that are owned by you AWS customer account. No information is returned for snapshots owned by inactive AWS customer accounts. If you specify both tag keys and tag values in the same request, Amazon Redshift returns all snapshots that match any combination of the specified keys and values. For example, if you have owner and environment for tag keys, and admin and test for tag values, all snapshots that have any combination of those values are returned. Only snapshots that you own are returned in the response; shared snapshots are not returned with the tag key and tag value request parameters. If both tag keys and values are omitted from the request, snapshots are returned regardless of whether they have tag keys or values associated with them. - */ - describeClusterSnapshots(callback?: (err: AWSError, data: Redshift.Types.SnapshotMessage) => void): Request; - /** - * Returns one or more cluster subnet group objects, which contain metadata about your cluster subnet groups. By default, this operation returns information about all cluster subnet groups that are defined in you AWS account. If you specify both tag keys and tag values in the same request, Amazon Redshift returns all subnet groups that match any combination of the specified keys and values. For example, if you have owner and environment for tag keys, and admin and test for tag values, all subnet groups that have any combination of those values are returned. If both tag keys and values are omitted from the request, subnet groups are returned regardless of whether they have tag keys or values associated with them. - */ - describeClusterSubnetGroups(params: Redshift.Types.DescribeClusterSubnetGroupsMessage, callback?: (err: AWSError, data: Redshift.Types.ClusterSubnetGroupMessage) => void): Request; - /** - * Returns one or more cluster subnet group objects, which contain metadata about your cluster subnet groups. By default, this operation returns information about all cluster subnet groups that are defined in you AWS account. If you specify both tag keys and tag values in the same request, Amazon Redshift returns all subnet groups that match any combination of the specified keys and values. For example, if you have owner and environment for tag keys, and admin and test for tag values, all subnet groups that have any combination of those values are returned. If both tag keys and values are omitted from the request, subnet groups are returned regardless of whether they have tag keys or values associated with them. - */ - describeClusterSubnetGroups(callback?: (err: AWSError, data: Redshift.Types.ClusterSubnetGroupMessage) => void): Request; - /** - * Returns descriptions of the available Amazon Redshift cluster versions. You can call this operation even before creating any clusters to learn more about the Amazon Redshift versions. For more information about managing clusters, go to Amazon Redshift Clusters in the Amazon Redshift Cluster Management Guide. - */ - describeClusterVersions(params: Redshift.Types.DescribeClusterVersionsMessage, callback?: (err: AWSError, data: Redshift.Types.ClusterVersionsMessage) => void): Request; - /** - * Returns descriptions of the available Amazon Redshift cluster versions. You can call this operation even before creating any clusters to learn more about the Amazon Redshift versions. For more information about managing clusters, go to Amazon Redshift Clusters in the Amazon Redshift Cluster Management Guide. - */ - describeClusterVersions(callback?: (err: AWSError, data: Redshift.Types.ClusterVersionsMessage) => void): Request; - /** - * Returns properties of provisioned clusters including general cluster properties, cluster database properties, maintenance and backup properties, and security and access properties. This operation supports pagination. For more information about managing clusters, go to Amazon Redshift Clusters in the Amazon Redshift Cluster Management Guide. If you specify both tag keys and tag values in the same request, Amazon Redshift returns all clusters that match any combination of the specified keys and values. For example, if you have owner and environment for tag keys, and admin and test for tag values, all clusters that have any combination of those values are returned. If both tag keys and values are omitted from the request, clusters are returned regardless of whether they have tag keys or values associated with them. - */ - describeClusters(params: Redshift.Types.DescribeClustersMessage, callback?: (err: AWSError, data: Redshift.Types.ClustersMessage) => void): Request; - /** - * Returns properties of provisioned clusters including general cluster properties, cluster database properties, maintenance and backup properties, and security and access properties. This operation supports pagination. For more information about managing clusters, go to Amazon Redshift Clusters in the Amazon Redshift Cluster Management Guide. If you specify both tag keys and tag values in the same request, Amazon Redshift returns all clusters that match any combination of the specified keys and values. For example, if you have owner and environment for tag keys, and admin and test for tag values, all clusters that have any combination of those values are returned. If both tag keys and values are omitted from the request, clusters are returned regardless of whether they have tag keys or values associated with them. - */ - describeClusters(callback?: (err: AWSError, data: Redshift.Types.ClustersMessage) => void): Request; - /** - * Returns a list of parameter settings for the specified parameter group family. For more information about parameters and parameter groups, go to Amazon Redshift Parameter Groups in the Amazon Redshift Cluster Management Guide. - */ - describeDefaultClusterParameters(params: Redshift.Types.DescribeDefaultClusterParametersMessage, callback?: (err: AWSError, data: Redshift.Types.DescribeDefaultClusterParametersResult) => void): Request; - /** - * Returns a list of parameter settings for the specified parameter group family. For more information about parameters and parameter groups, go to Amazon Redshift Parameter Groups in the Amazon Redshift Cluster Management Guide. - */ - describeDefaultClusterParameters(callback?: (err: AWSError, data: Redshift.Types.DescribeDefaultClusterParametersResult) => void): Request; - /** - * Displays a list of event categories for all event source types, or for a specified source type. For a list of the event categories and source types, go to Amazon Redshift Event Notifications. - */ - describeEventCategories(params: Redshift.Types.DescribeEventCategoriesMessage, callback?: (err: AWSError, data: Redshift.Types.EventCategoriesMessage) => void): Request; - /** - * Displays a list of event categories for all event source types, or for a specified source type. For a list of the event categories and source types, go to Amazon Redshift Event Notifications. - */ - describeEventCategories(callback?: (err: AWSError, data: Redshift.Types.EventCategoriesMessage) => void): Request; - /** - * Lists descriptions of all the Amazon Redshift event notification subscriptions for a customer account. If you specify a subscription name, lists the description for that subscription. If you specify both tag keys and tag values in the same request, Amazon Redshift returns all event notification subscriptions that match any combination of the specified keys and values. For example, if you have owner and environment for tag keys, and admin and test for tag values, all subscriptions that have any combination of those values are returned. If both tag keys and values are omitted from the request, subscriptions are returned regardless of whether they have tag keys or values associated with them. - */ - describeEventSubscriptions(params: Redshift.Types.DescribeEventSubscriptionsMessage, callback?: (err: AWSError, data: Redshift.Types.EventSubscriptionsMessage) => void): Request; - /** - * Lists descriptions of all the Amazon Redshift event notification subscriptions for a customer account. If you specify a subscription name, lists the description for that subscription. If you specify both tag keys and tag values in the same request, Amazon Redshift returns all event notification subscriptions that match any combination of the specified keys and values. For example, if you have owner and environment for tag keys, and admin and test for tag values, all subscriptions that have any combination of those values are returned. If both tag keys and values are omitted from the request, subscriptions are returned regardless of whether they have tag keys or values associated with them. - */ - describeEventSubscriptions(callback?: (err: AWSError, data: Redshift.Types.EventSubscriptionsMessage) => void): Request; - /** - * Returns events related to clusters, security groups, snapshots, and parameter groups for the past 14 days. Events specific to a particular cluster, security group, snapshot or parameter group can be obtained by providing the name as a parameter. By default, the past hour of events are returned. - */ - describeEvents(params: Redshift.Types.DescribeEventsMessage, callback?: (err: AWSError, data: Redshift.Types.EventsMessage) => void): Request; - /** - * Returns events related to clusters, security groups, snapshots, and parameter groups for the past 14 days. Events specific to a particular cluster, security group, snapshot or parameter group can be obtained by providing the name as a parameter. By default, the past hour of events are returned. - */ - describeEvents(callback?: (err: AWSError, data: Redshift.Types.EventsMessage) => void): Request; - /** - * Returns information about the specified HSM client certificate. If no certificate ID is specified, returns information about all the HSM certificates owned by your AWS customer account. If you specify both tag keys and tag values in the same request, Amazon Redshift returns all HSM client certificates that match any combination of the specified keys and values. For example, if you have owner and environment for tag keys, and admin and test for tag values, all HSM client certificates that have any combination of those values are returned. If both tag keys and values are omitted from the request, HSM client certificates are returned regardless of whether they have tag keys or values associated with them. - */ - describeHsmClientCertificates(params: Redshift.Types.DescribeHsmClientCertificatesMessage, callback?: (err: AWSError, data: Redshift.Types.HsmClientCertificateMessage) => void): Request; - /** - * Returns information about the specified HSM client certificate. If no certificate ID is specified, returns information about all the HSM certificates owned by your AWS customer account. If you specify both tag keys and tag values in the same request, Amazon Redshift returns all HSM client certificates that match any combination of the specified keys and values. For example, if you have owner and environment for tag keys, and admin and test for tag values, all HSM client certificates that have any combination of those values are returned. If both tag keys and values are omitted from the request, HSM client certificates are returned regardless of whether they have tag keys or values associated with them. - */ - describeHsmClientCertificates(callback?: (err: AWSError, data: Redshift.Types.HsmClientCertificateMessage) => void): Request; - /** - * Returns information about the specified Amazon Redshift HSM configuration. If no configuration ID is specified, returns information about all the HSM configurations owned by your AWS customer account. If you specify both tag keys and tag values in the same request, Amazon Redshift returns all HSM connections that match any combination of the specified keys and values. For example, if you have owner and environment for tag keys, and admin and test for tag values, all HSM connections that have any combination of those values are returned. If both tag keys and values are omitted from the request, HSM connections are returned regardless of whether they have tag keys or values associated with them. - */ - describeHsmConfigurations(params: Redshift.Types.DescribeHsmConfigurationsMessage, callback?: (err: AWSError, data: Redshift.Types.HsmConfigurationMessage) => void): Request; - /** - * Returns information about the specified Amazon Redshift HSM configuration. If no configuration ID is specified, returns information about all the HSM configurations owned by your AWS customer account. If you specify both tag keys and tag values in the same request, Amazon Redshift returns all HSM connections that match any combination of the specified keys and values. For example, if you have owner and environment for tag keys, and admin and test for tag values, all HSM connections that have any combination of those values are returned. If both tag keys and values are omitted from the request, HSM connections are returned regardless of whether they have tag keys or values associated with them. - */ - describeHsmConfigurations(callback?: (err: AWSError, data: Redshift.Types.HsmConfigurationMessage) => void): Request; - /** - * Describes whether information, such as queries and connection attempts, is being logged for the specified Amazon Redshift cluster. - */ - describeLoggingStatus(params: Redshift.Types.DescribeLoggingStatusMessage, callback?: (err: AWSError, data: Redshift.Types.LoggingStatus) => void): Request; - /** - * Describes whether information, such as queries and connection attempts, is being logged for the specified Amazon Redshift cluster. - */ - describeLoggingStatus(callback?: (err: AWSError, data: Redshift.Types.LoggingStatus) => void): Request; - /** - * Returns a list of orderable cluster options. Before you create a new cluster you can use this operation to find what options are available, such as the EC2 Availability Zones (AZ) in the specific AWS region that you can specify, and the node types you can request. The node types differ by available storage, memory, CPU and price. With the cost involved you might want to obtain a list of cluster options in the specific region and specify values when creating a cluster. For more information about managing clusters, go to Amazon Redshift Clusters in the Amazon Redshift Cluster Management Guide. - */ - describeOrderableClusterOptions(params: Redshift.Types.DescribeOrderableClusterOptionsMessage, callback?: (err: AWSError, data: Redshift.Types.OrderableClusterOptionsMessage) => void): Request; - /** - * Returns a list of orderable cluster options. Before you create a new cluster you can use this operation to find what options are available, such as the EC2 Availability Zones (AZ) in the specific AWS region that you can specify, and the node types you can request. The node types differ by available storage, memory, CPU and price. With the cost involved you might want to obtain a list of cluster options in the specific region and specify values when creating a cluster. For more information about managing clusters, go to Amazon Redshift Clusters in the Amazon Redshift Cluster Management Guide. - */ - describeOrderableClusterOptions(callback?: (err: AWSError, data: Redshift.Types.OrderableClusterOptionsMessage) => void): Request; - /** - * Returns a list of the available reserved node offerings by Amazon Redshift with their descriptions including the node type, the fixed and recurring costs of reserving the node and duration the node will be reserved for you. These descriptions help you determine which reserve node offering you want to purchase. You then use the unique offering ID in you call to PurchaseReservedNodeOffering to reserve one or more nodes for your Amazon Redshift cluster. For more information about reserved node offerings, go to Purchasing Reserved Nodes in the Amazon Redshift Cluster Management Guide. - */ - describeReservedNodeOfferings(params: Redshift.Types.DescribeReservedNodeOfferingsMessage, callback?: (err: AWSError, data: Redshift.Types.ReservedNodeOfferingsMessage) => void): Request; - /** - * Returns a list of the available reserved node offerings by Amazon Redshift with their descriptions including the node type, the fixed and recurring costs of reserving the node and duration the node will be reserved for you. These descriptions help you determine which reserve node offering you want to purchase. You then use the unique offering ID in you call to PurchaseReservedNodeOffering to reserve one or more nodes for your Amazon Redshift cluster. For more information about reserved node offerings, go to Purchasing Reserved Nodes in the Amazon Redshift Cluster Management Guide. - */ - describeReservedNodeOfferings(callback?: (err: AWSError, data: Redshift.Types.ReservedNodeOfferingsMessage) => void): Request; - /** - * Returns the descriptions of the reserved nodes. - */ - describeReservedNodes(params: Redshift.Types.DescribeReservedNodesMessage, callback?: (err: AWSError, data: Redshift.Types.ReservedNodesMessage) => void): Request; - /** - * Returns the descriptions of the reserved nodes. - */ - describeReservedNodes(callback?: (err: AWSError, data: Redshift.Types.ReservedNodesMessage) => void): Request; - /** - * Returns information about the last resize operation for the specified cluster. If no resize operation has ever been initiated for the specified cluster, a HTTP 404 error is returned. If a resize operation was initiated and completed, the status of the resize remains as SUCCEEDED until the next resize. A resize operation can be requested using ModifyCluster and specifying a different number or type of nodes for the cluster. - */ - describeResize(params: Redshift.Types.DescribeResizeMessage, callback?: (err: AWSError, data: Redshift.Types.ResizeProgressMessage) => void): Request; - /** - * Returns information about the last resize operation for the specified cluster. If no resize operation has ever been initiated for the specified cluster, a HTTP 404 error is returned. If a resize operation was initiated and completed, the status of the resize remains as SUCCEEDED until the next resize. A resize operation can be requested using ModifyCluster and specifying a different number or type of nodes for the cluster. - */ - describeResize(callback?: (err: AWSError, data: Redshift.Types.ResizeProgressMessage) => void): Request; - /** - * Returns a list of snapshot copy grants owned by the AWS account in the destination region. For more information about managing snapshot copy grants, go to Amazon Redshift Database Encryption in the Amazon Redshift Cluster Management Guide. - */ - describeSnapshotCopyGrants(params: Redshift.Types.DescribeSnapshotCopyGrantsMessage, callback?: (err: AWSError, data: Redshift.Types.SnapshotCopyGrantMessage) => void): Request; - /** - * Returns a list of snapshot copy grants owned by the AWS account in the destination region. For more information about managing snapshot copy grants, go to Amazon Redshift Database Encryption in the Amazon Redshift Cluster Management Guide. - */ - describeSnapshotCopyGrants(callback?: (err: AWSError, data: Redshift.Types.SnapshotCopyGrantMessage) => void): Request; - /** - * Lists the status of one or more table restore requests made using the RestoreTableFromClusterSnapshot API action. If you don't specify a value for the TableRestoreRequestId parameter, then DescribeTableRestoreStatus returns the status of all table restore requests ordered by the date and time of the request in ascending order. Otherwise DescribeTableRestoreStatus returns the status of the table specified by TableRestoreRequestId. - */ - describeTableRestoreStatus(params: Redshift.Types.DescribeTableRestoreStatusMessage, callback?: (err: AWSError, data: Redshift.Types.TableRestoreStatusMessage) => void): Request; - /** - * Lists the status of one or more table restore requests made using the RestoreTableFromClusterSnapshot API action. If you don't specify a value for the TableRestoreRequestId parameter, then DescribeTableRestoreStatus returns the status of all table restore requests ordered by the date and time of the request in ascending order. Otherwise DescribeTableRestoreStatus returns the status of the table specified by TableRestoreRequestId. - */ - describeTableRestoreStatus(callback?: (err: AWSError, data: Redshift.Types.TableRestoreStatusMessage) => void): Request; - /** - * Returns a list of tags. You can return tags from a specific resource by specifying an ARN, or you can return all tags for a given type of resource, such as clusters, snapshots, and so on. The following are limitations for DescribeTags: You cannot specify an ARN and a resource-type value together in the same request. You cannot use the MaxRecords and Marker parameters together with the ARN parameter. The MaxRecords parameter can be a range from 10 to 50 results to return in a request. If you specify both tag keys and tag values in the same request, Amazon Redshift returns all resources that match any combination of the specified keys and values. For example, if you have owner and environment for tag keys, and admin and test for tag values, all resources that have any combination of those values are returned. If both tag keys and values are omitted from the request, resources are returned regardless of whether they have tag keys or values associated with them. - */ - describeTags(params: Redshift.Types.DescribeTagsMessage, callback?: (err: AWSError, data: Redshift.Types.TaggedResourceListMessage) => void): Request; - /** - * Returns a list of tags. You can return tags from a specific resource by specifying an ARN, or you can return all tags for a given type of resource, such as clusters, snapshots, and so on. The following are limitations for DescribeTags: You cannot specify an ARN and a resource-type value together in the same request. You cannot use the MaxRecords and Marker parameters together with the ARN parameter. The MaxRecords parameter can be a range from 10 to 50 results to return in a request. If you specify both tag keys and tag values in the same request, Amazon Redshift returns all resources that match any combination of the specified keys and values. For example, if you have owner and environment for tag keys, and admin and test for tag values, all resources that have any combination of those values are returned. If both tag keys and values are omitted from the request, resources are returned regardless of whether they have tag keys or values associated with them. - */ - describeTags(callback?: (err: AWSError, data: Redshift.Types.TaggedResourceListMessage) => void): Request; - /** - * Stops logging information, such as queries and connection attempts, for the specified Amazon Redshift cluster. - */ - disableLogging(params: Redshift.Types.DisableLoggingMessage, callback?: (err: AWSError, data: Redshift.Types.LoggingStatus) => void): Request; - /** - * Stops logging information, such as queries and connection attempts, for the specified Amazon Redshift cluster. - */ - disableLogging(callback?: (err: AWSError, data: Redshift.Types.LoggingStatus) => void): Request; - /** - * Disables the automatic copying of snapshots from one region to another region for a specified cluster. If your cluster and its snapshots are encrypted using a customer master key (CMK) from AWS KMS, use DeleteSnapshotCopyGrant to delete the grant that grants Amazon Redshift permission to the CMK in the destination region. - */ - disableSnapshotCopy(params: Redshift.Types.DisableSnapshotCopyMessage, callback?: (err: AWSError, data: Redshift.Types.DisableSnapshotCopyResult) => void): Request; - /** - * Disables the automatic copying of snapshots from one region to another region for a specified cluster. If your cluster and its snapshots are encrypted using a customer master key (CMK) from AWS KMS, use DeleteSnapshotCopyGrant to delete the grant that grants Amazon Redshift permission to the CMK in the destination region. - */ - disableSnapshotCopy(callback?: (err: AWSError, data: Redshift.Types.DisableSnapshotCopyResult) => void): Request; - /** - * Starts logging information, such as queries and connection attempts, for the specified Amazon Redshift cluster. - */ - enableLogging(params: Redshift.Types.EnableLoggingMessage, callback?: (err: AWSError, data: Redshift.Types.LoggingStatus) => void): Request; - /** - * Starts logging information, such as queries and connection attempts, for the specified Amazon Redshift cluster. - */ - enableLogging(callback?: (err: AWSError, data: Redshift.Types.LoggingStatus) => void): Request; - /** - * Enables the automatic copy of snapshots from one region to another region for a specified cluster. - */ - enableSnapshotCopy(params: Redshift.Types.EnableSnapshotCopyMessage, callback?: (err: AWSError, data: Redshift.Types.EnableSnapshotCopyResult) => void): Request; - /** - * Enables the automatic copy of snapshots from one region to another region for a specified cluster. - */ - enableSnapshotCopy(callback?: (err: AWSError, data: Redshift.Types.EnableSnapshotCopyResult) => void): Request; - /** - * Returns a database user name and temporary password with temporary authorization to log on to an Amazon Redshift database. The action returns the database user name prefixed with IAM: if AutoCreate is False or IAMA: if AutoCreate is True. You can optionally specify one or more database user groups that the user will join at log on. By default, the temporary credentials expire in 900 seconds. You can optionally specify a duration between 900 seconds (15 minutes) and 3600 seconds (60 minutes). For more information, see Using IAM Authentication to Generate Database User Credentials in the Amazon Redshift Cluster Management Guide. The AWS Identity and Access Management (IAM)user or role that executes GetClusterCredentials must have an IAM policy attached that allows access to all necessary actions and resources. For more information about permissions, see Resource Policies for GetClusterCredentials in the Amazon Redshift Cluster Management Guide. If the DbGroups parameter is specified, the IAM policy must allow the redshift:JoinGroup action with access to the listed dbgroups. In addition, if the AutoCreate parameter is set to True, then the policy must include the redshift:CreateClusterUser privilege. If the DbName parameter is specified, the IAM policy must allow access to the resource dbname for the specified database name. - */ - getClusterCredentials(params: Redshift.Types.GetClusterCredentialsMessage, callback?: (err: AWSError, data: Redshift.Types.ClusterCredentials) => void): Request; - /** - * Returns a database user name and temporary password with temporary authorization to log on to an Amazon Redshift database. The action returns the database user name prefixed with IAM: if AutoCreate is False or IAMA: if AutoCreate is True. You can optionally specify one or more database user groups that the user will join at log on. By default, the temporary credentials expire in 900 seconds. You can optionally specify a duration between 900 seconds (15 minutes) and 3600 seconds (60 minutes). For more information, see Using IAM Authentication to Generate Database User Credentials in the Amazon Redshift Cluster Management Guide. The AWS Identity and Access Management (IAM)user or role that executes GetClusterCredentials must have an IAM policy attached that allows access to all necessary actions and resources. For more information about permissions, see Resource Policies for GetClusterCredentials in the Amazon Redshift Cluster Management Guide. If the DbGroups parameter is specified, the IAM policy must allow the redshift:JoinGroup action with access to the listed dbgroups. In addition, if the AutoCreate parameter is set to True, then the policy must include the redshift:CreateClusterUser privilege. If the DbName parameter is specified, the IAM policy must allow access to the resource dbname for the specified database name. - */ - getClusterCredentials(callback?: (err: AWSError, data: Redshift.Types.ClusterCredentials) => void): Request; - /** - * Modifies the settings for a cluster. For example, you can add another security or parameter group, update the preferred maintenance window, or change the master user password. Resetting a cluster password or modifying the security groups associated with a cluster do not need a reboot. However, modifying a parameter group requires a reboot for parameters to take effect. For more information about managing clusters, go to Amazon Redshift Clusters in the Amazon Redshift Cluster Management Guide. You can also change node type and the number of nodes to scale up or down the cluster. When resizing a cluster, you must specify both the number of nodes and the node type even if one of the parameters does not change. - */ - modifyCluster(params: Redshift.Types.ModifyClusterMessage, callback?: (err: AWSError, data: Redshift.Types.ModifyClusterResult) => void): Request; - /** - * Modifies the settings for a cluster. For example, you can add another security or parameter group, update the preferred maintenance window, or change the master user password. Resetting a cluster password or modifying the security groups associated with a cluster do not need a reboot. However, modifying a parameter group requires a reboot for parameters to take effect. For more information about managing clusters, go to Amazon Redshift Clusters in the Amazon Redshift Cluster Management Guide. You can also change node type and the number of nodes to scale up or down the cluster. When resizing a cluster, you must specify both the number of nodes and the node type even if one of the parameters does not change. - */ - modifyCluster(callback?: (err: AWSError, data: Redshift.Types.ModifyClusterResult) => void): Request; - /** - * Modifies the list of AWS Identity and Access Management (IAM) roles that can be used by the cluster to access other AWS services. A cluster can have up to 10 IAM roles associated at any time. - */ - modifyClusterIamRoles(params: Redshift.Types.ModifyClusterIamRolesMessage, callback?: (err: AWSError, data: Redshift.Types.ModifyClusterIamRolesResult) => void): Request; - /** - * Modifies the list of AWS Identity and Access Management (IAM) roles that can be used by the cluster to access other AWS services. A cluster can have up to 10 IAM roles associated at any time. - */ - modifyClusterIamRoles(callback?: (err: AWSError, data: Redshift.Types.ModifyClusterIamRolesResult) => void): Request; - /** - * Modifies the parameters of a parameter group. For more information about parameters and parameter groups, go to Amazon Redshift Parameter Groups in the Amazon Redshift Cluster Management Guide. - */ - modifyClusterParameterGroup(params: Redshift.Types.ModifyClusterParameterGroupMessage, callback?: (err: AWSError, data: Redshift.Types.ClusterParameterGroupNameMessage) => void): Request; - /** - * Modifies the parameters of a parameter group. For more information about parameters and parameter groups, go to Amazon Redshift Parameter Groups in the Amazon Redshift Cluster Management Guide. - */ - modifyClusterParameterGroup(callback?: (err: AWSError, data: Redshift.Types.ClusterParameterGroupNameMessage) => void): Request; - /** - * Modifies a cluster subnet group to include the specified list of VPC subnets. The operation replaces the existing list of subnets with the new list of subnets. - */ - modifyClusterSubnetGroup(params: Redshift.Types.ModifyClusterSubnetGroupMessage, callback?: (err: AWSError, data: Redshift.Types.ModifyClusterSubnetGroupResult) => void): Request; - /** - * Modifies a cluster subnet group to include the specified list of VPC subnets. The operation replaces the existing list of subnets with the new list of subnets. - */ - modifyClusterSubnetGroup(callback?: (err: AWSError, data: Redshift.Types.ModifyClusterSubnetGroupResult) => void): Request; - /** - * Modifies an existing Amazon Redshift event notification subscription. - */ - modifyEventSubscription(params: Redshift.Types.ModifyEventSubscriptionMessage, callback?: (err: AWSError, data: Redshift.Types.ModifyEventSubscriptionResult) => void): Request; - /** - * Modifies an existing Amazon Redshift event notification subscription. - */ - modifyEventSubscription(callback?: (err: AWSError, data: Redshift.Types.ModifyEventSubscriptionResult) => void): Request; - /** - * Modifies the number of days to retain automated snapshots in the destination region after they are copied from the source region. - */ - modifySnapshotCopyRetentionPeriod(params: Redshift.Types.ModifySnapshotCopyRetentionPeriodMessage, callback?: (err: AWSError, data: Redshift.Types.ModifySnapshotCopyRetentionPeriodResult) => void): Request; - /** - * Modifies the number of days to retain automated snapshots in the destination region after they are copied from the source region. - */ - modifySnapshotCopyRetentionPeriod(callback?: (err: AWSError, data: Redshift.Types.ModifySnapshotCopyRetentionPeriodResult) => void): Request; - /** - * Allows you to purchase reserved nodes. Amazon Redshift offers a predefined set of reserved node offerings. You can purchase one or more of the offerings. You can call the DescribeReservedNodeOfferings API to obtain the available reserved node offerings. You can call this API by providing a specific reserved node offering and the number of nodes you want to reserve. For more information about reserved node offerings, go to Purchasing Reserved Nodes in the Amazon Redshift Cluster Management Guide. - */ - purchaseReservedNodeOffering(params: Redshift.Types.PurchaseReservedNodeOfferingMessage, callback?: (err: AWSError, data: Redshift.Types.PurchaseReservedNodeOfferingResult) => void): Request; - /** - * Allows you to purchase reserved nodes. Amazon Redshift offers a predefined set of reserved node offerings. You can purchase one or more of the offerings. You can call the DescribeReservedNodeOfferings API to obtain the available reserved node offerings. You can call this API by providing a specific reserved node offering and the number of nodes you want to reserve. For more information about reserved node offerings, go to Purchasing Reserved Nodes in the Amazon Redshift Cluster Management Guide. - */ - purchaseReservedNodeOffering(callback?: (err: AWSError, data: Redshift.Types.PurchaseReservedNodeOfferingResult) => void): Request; - /** - * Reboots a cluster. This action is taken as soon as possible. It results in a momentary outage to the cluster, during which the cluster status is set to rebooting. A cluster event is created when the reboot is completed. Any pending cluster modifications (see ModifyCluster) are applied at this reboot. For more information about managing clusters, go to Amazon Redshift Clusters in the Amazon Redshift Cluster Management Guide. - */ - rebootCluster(params: Redshift.Types.RebootClusterMessage, callback?: (err: AWSError, data: Redshift.Types.RebootClusterResult) => void): Request; - /** - * Reboots a cluster. This action is taken as soon as possible. It results in a momentary outage to the cluster, during which the cluster status is set to rebooting. A cluster event is created when the reboot is completed. Any pending cluster modifications (see ModifyCluster) are applied at this reboot. For more information about managing clusters, go to Amazon Redshift Clusters in the Amazon Redshift Cluster Management Guide. - */ - rebootCluster(callback?: (err: AWSError, data: Redshift.Types.RebootClusterResult) => void): Request; - /** - * Sets one or more parameters of the specified parameter group to their default values and sets the source values of the parameters to "engine-default". To reset the entire parameter group specify the ResetAllParameters parameter. For parameter changes to take effect you must reboot any associated clusters. - */ - resetClusterParameterGroup(params: Redshift.Types.ResetClusterParameterGroupMessage, callback?: (err: AWSError, data: Redshift.Types.ClusterParameterGroupNameMessage) => void): Request; - /** - * Sets one or more parameters of the specified parameter group to their default values and sets the source values of the parameters to "engine-default". To reset the entire parameter group specify the ResetAllParameters parameter. For parameter changes to take effect you must reboot any associated clusters. - */ - resetClusterParameterGroup(callback?: (err: AWSError, data: Redshift.Types.ClusterParameterGroupNameMessage) => void): Request; - /** - * Creates a new cluster from a snapshot. By default, Amazon Redshift creates the resulting cluster with the same configuration as the original cluster from which the snapshot was created, except that the new cluster is created with the default cluster security and parameter groups. After Amazon Redshift creates the cluster, you can use the ModifyCluster API to associate a different security group and different parameter group with the restored cluster. If you are using a DS node type, you can also choose to change to another DS node type of the same size during restore. If you restore a cluster into a VPC, you must provide a cluster subnet group where you want the cluster restored. For more information about working with snapshots, go to Amazon Redshift Snapshots in the Amazon Redshift Cluster Management Guide. - */ - restoreFromClusterSnapshot(params: Redshift.Types.RestoreFromClusterSnapshotMessage, callback?: (err: AWSError, data: Redshift.Types.RestoreFromClusterSnapshotResult) => void): Request; - /** - * Creates a new cluster from a snapshot. By default, Amazon Redshift creates the resulting cluster with the same configuration as the original cluster from which the snapshot was created, except that the new cluster is created with the default cluster security and parameter groups. After Amazon Redshift creates the cluster, you can use the ModifyCluster API to associate a different security group and different parameter group with the restored cluster. If you are using a DS node type, you can also choose to change to another DS node type of the same size during restore. If you restore a cluster into a VPC, you must provide a cluster subnet group where you want the cluster restored. For more information about working with snapshots, go to Amazon Redshift Snapshots in the Amazon Redshift Cluster Management Guide. - */ - restoreFromClusterSnapshot(callback?: (err: AWSError, data: Redshift.Types.RestoreFromClusterSnapshotResult) => void): Request; - /** - * Creates a new table from a table in an Amazon Redshift cluster snapshot. You must create the new table within the Amazon Redshift cluster that the snapshot was taken from. You cannot use RestoreTableFromClusterSnapshot to restore a table with the same name as an existing table in an Amazon Redshift cluster. That is, you cannot overwrite an existing table in a cluster with a restored table. If you want to replace your original table with a new, restored table, then rename or drop your original table before you call RestoreTableFromClusterSnapshot. When you have renamed your original table, then you can pass the original name of the table as the NewTableName parameter value in the call to RestoreTableFromClusterSnapshot. This way, you can replace the original table with the table created from the snapshot. - */ - restoreTableFromClusterSnapshot(params: Redshift.Types.RestoreTableFromClusterSnapshotMessage, callback?: (err: AWSError, data: Redshift.Types.RestoreTableFromClusterSnapshotResult) => void): Request; - /** - * Creates a new table from a table in an Amazon Redshift cluster snapshot. You must create the new table within the Amazon Redshift cluster that the snapshot was taken from. You cannot use RestoreTableFromClusterSnapshot to restore a table with the same name as an existing table in an Amazon Redshift cluster. That is, you cannot overwrite an existing table in a cluster with a restored table. If you want to replace your original table with a new, restored table, then rename or drop your original table before you call RestoreTableFromClusterSnapshot. When you have renamed your original table, then you can pass the original name of the table as the NewTableName parameter value in the call to RestoreTableFromClusterSnapshot. This way, you can replace the original table with the table created from the snapshot. - */ - restoreTableFromClusterSnapshot(callback?: (err: AWSError, data: Redshift.Types.RestoreTableFromClusterSnapshotResult) => void): Request; - /** - * Revokes an ingress rule in an Amazon Redshift security group for a previously authorized IP range or Amazon EC2 security group. To add an ingress rule, see AuthorizeClusterSecurityGroupIngress. For information about managing security groups, go to Amazon Redshift Cluster Security Groups in the Amazon Redshift Cluster Management Guide. - */ - revokeClusterSecurityGroupIngress(params: Redshift.Types.RevokeClusterSecurityGroupIngressMessage, callback?: (err: AWSError, data: Redshift.Types.RevokeClusterSecurityGroupIngressResult) => void): Request; - /** - * Revokes an ingress rule in an Amazon Redshift security group for a previously authorized IP range or Amazon EC2 security group. To add an ingress rule, see AuthorizeClusterSecurityGroupIngress. For information about managing security groups, go to Amazon Redshift Cluster Security Groups in the Amazon Redshift Cluster Management Guide. - */ - revokeClusterSecurityGroupIngress(callback?: (err: AWSError, data: Redshift.Types.RevokeClusterSecurityGroupIngressResult) => void): Request; - /** - * Removes the ability of the specified AWS customer account to restore the specified snapshot. If the account is currently restoring the snapshot, the restore will run to completion. For more information about working with snapshots, go to Amazon Redshift Snapshots in the Amazon Redshift Cluster Management Guide. - */ - revokeSnapshotAccess(params: Redshift.Types.RevokeSnapshotAccessMessage, callback?: (err: AWSError, data: Redshift.Types.RevokeSnapshotAccessResult) => void): Request; - /** - * Removes the ability of the specified AWS customer account to restore the specified snapshot. If the account is currently restoring the snapshot, the restore will run to completion. For more information about working with snapshots, go to Amazon Redshift Snapshots in the Amazon Redshift Cluster Management Guide. - */ - revokeSnapshotAccess(callback?: (err: AWSError, data: Redshift.Types.RevokeSnapshotAccessResult) => void): Request; - /** - * Rotates the encryption keys for a cluster. - */ - rotateEncryptionKey(params: Redshift.Types.RotateEncryptionKeyMessage, callback?: (err: AWSError, data: Redshift.Types.RotateEncryptionKeyResult) => void): Request; - /** - * Rotates the encryption keys for a cluster. - */ - rotateEncryptionKey(callback?: (err: AWSError, data: Redshift.Types.RotateEncryptionKeyResult) => void): Request; - /** - * Waits for the clusterAvailable state by periodically calling the underlying Redshift.describeClustersoperation every 60 seconds (at most 30 times). - */ - waitFor(state: "clusterAvailable", params: Redshift.Types.DescribeClustersMessage, callback?: (err: AWSError, data: Redshift.Types.ClustersMessage) => void): Request; - /** - * Waits for the clusterAvailable state by periodically calling the underlying Redshift.describeClustersoperation every 60 seconds (at most 30 times). - */ - waitFor(state: "clusterAvailable", callback?: (err: AWSError, data: Redshift.Types.ClustersMessage) => void): Request; - /** - * Waits for the clusterDeleted state by periodically calling the underlying Redshift.describeClustersoperation every 60 seconds (at most 30 times). - */ - waitFor(state: "clusterDeleted", params: Redshift.Types.DescribeClustersMessage, callback?: (err: AWSError, data: Redshift.Types.ClustersMessage) => void): Request; - /** - * Waits for the clusterDeleted state by periodically calling the underlying Redshift.describeClustersoperation every 60 seconds (at most 30 times). - */ - waitFor(state: "clusterDeleted", callback?: (err: AWSError, data: Redshift.Types.ClustersMessage) => void): Request; - /** - * Waits for the clusterRestored state by periodically calling the underlying Redshift.describeClustersoperation every 60 seconds (at most 30 times). - */ - waitFor(state: "clusterRestored", params: Redshift.Types.DescribeClustersMessage, callback?: (err: AWSError, data: Redshift.Types.ClustersMessage) => void): Request; - /** - * Waits for the clusterRestored state by periodically calling the underlying Redshift.describeClustersoperation every 60 seconds (at most 30 times). - */ - waitFor(state: "clusterRestored", callback?: (err: AWSError, data: Redshift.Types.ClustersMessage) => void): Request; - /** - * Waits for the snapshotAvailable state by periodically calling the underlying Redshift.describeClusterSnapshotsoperation every 15 seconds (at most 20 times). - */ - waitFor(state: "snapshotAvailable", params: Redshift.Types.DescribeClusterSnapshotsMessage, callback?: (err: AWSError, data: Redshift.Types.SnapshotMessage) => void): Request; - /** - * Waits for the snapshotAvailable state by periodically calling the underlying Redshift.describeClusterSnapshotsoperation every 15 seconds (at most 20 times). - */ - waitFor(state: "snapshotAvailable", callback?: (err: AWSError, data: Redshift.Types.SnapshotMessage) => void): Request; -} -declare namespace Redshift { - export interface AccountWithRestoreAccess { - /** - * The identifier of an AWS customer account authorized to restore a snapshot. - */ - AccountId?: String; - /** - * The identifier of an AWS support account authorized to restore a snapshot. For AWS support, the identifier is amazon-redshift-support. - */ - AccountAlias?: String; - } - export type AccountsWithRestoreAccessList = AccountWithRestoreAccess[]; - export interface AuthorizeClusterSecurityGroupIngressMessage { - /** - * The name of the security group to which the ingress rule is added. - */ - ClusterSecurityGroupName: String; - /** - * The IP range to be added the Amazon Redshift security group. - */ - CIDRIP?: String; - /** - * The EC2 security group to be added the Amazon Redshift security group. - */ - EC2SecurityGroupName?: String; - /** - * The AWS account number of the owner of the security group specified by the EC2SecurityGroupName parameter. The AWS Access Key ID is not an acceptable value. Example: 111122223333 - */ - EC2SecurityGroupOwnerId?: String; - } - export interface AuthorizeClusterSecurityGroupIngressResult { - ClusterSecurityGroup?: ClusterSecurityGroup; - } - export interface AuthorizeSnapshotAccessMessage { - /** - * The identifier of the snapshot the account is authorized to restore. - */ - SnapshotIdentifier: String; - /** - * The identifier of the cluster the snapshot was created from. This parameter is required if your IAM user has a policy containing a snapshot resource element that specifies anything other than * for the cluster name. - */ - SnapshotClusterIdentifier?: String; - /** - * The identifier of the AWS customer account authorized to restore the specified snapshot. To share a snapshot with AWS support, specify amazon-redshift-support. - */ - AccountWithRestoreAccess: String; - } - export interface AuthorizeSnapshotAccessResult { - Snapshot?: Snapshot; - } - export interface AvailabilityZone { - /** - * The name of the availability zone. - */ - Name?: String; - } - export type AvailabilityZoneList = AvailabilityZone[]; - export type Boolean = boolean; - export type BooleanOptional = boolean; - export interface Cluster { - /** - * The unique identifier of the cluster. - */ - ClusterIdentifier?: String; - /** - * The node type for the nodes in the cluster. - */ - NodeType?: String; - /** - * The current state of the cluster. Possible values are the following: available creating deleting final-snapshot hardware-failure incompatible-hsm incompatible-network incompatible-parameters incompatible-restore modifying rebooting renaming resizing rotating-keys storage-full updating-hsm - */ - ClusterStatus?: String; - /** - * The status of a modify operation, if any, initiated for the cluster. - */ - ModifyStatus?: String; - /** - * The master user name for the cluster. This name is used to connect to the database that is specified in the DBName parameter. - */ - MasterUsername?: String; - /** - * The name of the initial database that was created when the cluster was created. This same name is returned for the life of the cluster. If an initial database was not specified, a database named devdev was created by default. - */ - DBName?: String; - /** - * The connection endpoint. - */ - Endpoint?: Endpoint; - /** - * The date and time that the cluster was created. - */ - ClusterCreateTime?: TStamp; - /** - * The number of days that automatic cluster snapshots are retained. - */ - AutomatedSnapshotRetentionPeriod?: Integer; - /** - * A list of cluster security group that are associated with the cluster. Each security group is represented by an element that contains ClusterSecurityGroup.Name and ClusterSecurityGroup.Status subelements. Cluster security groups are used when the cluster is not created in an Amazon Virtual Private Cloud (VPC). Clusters that are created in a VPC use VPC security groups, which are listed by the VpcSecurityGroups parameter. - */ - ClusterSecurityGroups?: ClusterSecurityGroupMembershipList; - /** - * A list of Amazon Virtual Private Cloud (Amazon VPC) security groups that are associated with the cluster. This parameter is returned only if the cluster is in a VPC. - */ - VpcSecurityGroups?: VpcSecurityGroupMembershipList; - /** - * The list of cluster parameter groups that are associated with this cluster. Each parameter group in the list is returned with its status. - */ - ClusterParameterGroups?: ClusterParameterGroupStatusList; - /** - * The name of the subnet group that is associated with the cluster. This parameter is valid only when the cluster is in a VPC. - */ - ClusterSubnetGroupName?: String; - /** - * The identifier of the VPC the cluster is in, if the cluster is in a VPC. - */ - VpcId?: String; - /** - * The name of the Availability Zone in which the cluster is located. - */ - AvailabilityZone?: String; - /** - * The weekly time range, in Universal Coordinated Time (UTC), during which system maintenance can occur. - */ - PreferredMaintenanceWindow?: String; - /** - * A value that, if present, indicates that changes to the cluster are pending. Specific pending changes are identified by subelements. - */ - PendingModifiedValues?: PendingModifiedValues; - /** - * The version ID of the Amazon Redshift engine that is running on the cluster. - */ - ClusterVersion?: String; - /** - * A Boolean value that, if true, indicates that major version upgrades will be applied automatically to the cluster during the maintenance window. - */ - AllowVersionUpgrade?: Boolean; - /** - * The number of compute nodes in the cluster. - */ - NumberOfNodes?: Integer; - /** - * A Boolean value that, if true, indicates that the cluster can be accessed from a public network. - */ - PubliclyAccessible?: Boolean; - /** - * A Boolean value that, if true, indicates that data in the cluster is encrypted at rest. - */ - Encrypted?: Boolean; - /** - * A value that describes the status of a cluster restore action. This parameter returns null if the cluster was not created by restoring a snapshot. - */ - RestoreStatus?: RestoreStatus; - /** - * A value that reports whether the Amazon Redshift cluster has finished applying any hardware security module (HSM) settings changes specified in a modify cluster command. Values: active, applying - */ - HsmStatus?: HsmStatus; - /** - * A value that returns the destination region and retention period that are configured for cross-region snapshot copy. - */ - ClusterSnapshotCopyStatus?: ClusterSnapshotCopyStatus; - /** - * The public key for the cluster. - */ - ClusterPublicKey?: String; - /** - * The nodes in the cluster. - */ - ClusterNodes?: ClusterNodesList; - /** - * The status of the elastic IP (EIP) address. - */ - ElasticIpStatus?: ElasticIpStatus; - /** - * The specific revision number of the database in the cluster. - */ - ClusterRevisionNumber?: String; - /** - * The list of tags for the cluster. - */ - Tags?: TagList; - /** - * The AWS Key Management Service (AWS KMS) key ID of the encryption key used to encrypt data in the cluster. - */ - KmsKeyId?: String; - /** - * An option that specifies whether to create the cluster with enhanced VPC routing enabled. To create a cluster that uses enhanced VPC routing, the cluster must be in a VPC. For more information, see Enhanced VPC Routing in the Amazon Redshift Cluster Management Guide. If this option is true, enhanced VPC routing is enabled. Default: false - */ - EnhancedVpcRouting?: Boolean; - /** - * A list of AWS Identity and Access Management (IAM) roles that can be used by the cluster to access other AWS services. - */ - IamRoles?: ClusterIamRoleList; - } - export interface ClusterCredentials { - /** - * A database user name that is authorized to log on to the database DbName using the password DbPassword. If the specified DbUser exists in the database, the new user name has the same database privileges as the the user named in DbUser. By default, the user is added to PUBLIC. If the DbGroups parameter is specifed, DbUser is added to the listed groups for any sessions created using these credentials. - */ - DbUser?: String; - /** - * A temporary password that authorizes the user name returned by DbUser to log on to the database DbName. - */ - DbPassword?: SensitiveString; - /** - * The date and time the password in DbPassword expires. - */ - Expiration?: TStamp; - } - export interface ClusterIamRole { - /** - * The Amazon Resource Name (ARN) of the IAM role, for example, arn:aws:iam::123456789012:role/RedshiftCopyUnload. - */ - IamRoleArn?: String; - /** - * A value that describes the status of the IAM role's association with an Amazon Redshift cluster. The following are possible statuses and descriptions. in-sync: The role is available for use by the cluster. adding: The role is in the process of being associated with the cluster. removing: The role is in the process of being disassociated with the cluster. - */ - ApplyStatus?: String; - } - export type ClusterIamRoleList = ClusterIamRole[]; - export type ClusterList = Cluster[]; - export interface ClusterNode { - /** - * Whether the node is a leader node or a compute node. - */ - NodeRole?: String; - /** - * The private IP address of a node within a cluster. - */ - PrivateIPAddress?: String; - /** - * The public IP address of a node within a cluster. - */ - PublicIPAddress?: String; - } - export type ClusterNodesList = ClusterNode[]; - export interface ClusterParameterGroup { - /** - * The name of the cluster parameter group. - */ - ParameterGroupName?: String; - /** - * The name of the cluster parameter group family that this cluster parameter group is compatible with. - */ - ParameterGroupFamily?: String; - /** - * The description of the parameter group. - */ - Description?: String; - /** - * The list of tags for the cluster parameter group. - */ - Tags?: TagList; - } - export interface ClusterParameterGroupDetails { - /** - * A list of Parameter instances. Each instance lists the parameters of one cluster parameter group. - */ - Parameters?: ParametersList; - /** - * A value that indicates the starting point for the next set of response records in a subsequent request. If a value is returned in a response, you can retrieve the next set of records by providing this returned marker value in the Marker parameter and retrying the command. If the Marker field is empty, all response records have been retrieved for the request. - */ - Marker?: String; - } - export interface ClusterParameterGroupNameMessage { - /** - * The name of the cluster parameter group. - */ - ParameterGroupName?: String; - /** - * The status of the parameter group. For example, if you made a change to a parameter group name-value pair, then the change could be pending a reboot of an associated cluster. - */ - ParameterGroupStatus?: String; - } - export interface ClusterParameterGroupStatus { - /** - * The name of the cluster parameter group. - */ - ParameterGroupName?: String; - /** - * The status of parameter updates. - */ - ParameterApplyStatus?: String; - /** - * The list of parameter statuses. For more information about parameters and parameter groups, go to Amazon Redshift Parameter Groups in the Amazon Redshift Cluster Management Guide. - */ - ClusterParameterStatusList?: ClusterParameterStatusList; - } - export type ClusterParameterGroupStatusList = ClusterParameterGroupStatus[]; - export interface ClusterParameterGroupsMessage { - /** - * A value that indicates the starting point for the next set of response records in a subsequent request. If a value is returned in a response, you can retrieve the next set of records by providing this returned marker value in the Marker parameter and retrying the command. If the Marker field is empty, all response records have been retrieved for the request. - */ - Marker?: String; - /** - * A list of ClusterParameterGroup instances. Each instance describes one cluster parameter group. - */ - ParameterGroups?: ParameterGroupList; - } - export interface ClusterParameterStatus { - /** - * The name of the parameter. - */ - ParameterName?: String; - /** - * The status of the parameter that indicates whether the parameter is in sync with the database, waiting for a cluster reboot, or encountered an error when being applied. The following are possible statuses and descriptions. in-sync: The parameter value is in sync with the database. pending-reboot: The parameter value will be applied after the cluster reboots. applying: The parameter value is being applied to the database. invalid-parameter: Cannot apply the parameter value because it has an invalid value or syntax. apply-deferred: The parameter contains static property changes. The changes are deferred until the cluster reboots. apply-error: Cannot connect to the cluster. The parameter change will be applied after the cluster reboots. unknown-error: Cannot apply the parameter change right now. The change will be applied after the cluster reboots. - */ - ParameterApplyStatus?: String; - /** - * The error that prevented the parameter from being applied to the database. - */ - ParameterApplyErrorDescription?: String; - } - export type ClusterParameterStatusList = ClusterParameterStatus[]; - export interface ClusterSecurityGroup { - /** - * The name of the cluster security group to which the operation was applied. - */ - ClusterSecurityGroupName?: String; - /** - * A description of the security group. - */ - Description?: String; - /** - * A list of EC2 security groups that are permitted to access clusters associated with this cluster security group. - */ - EC2SecurityGroups?: EC2SecurityGroupList; - /** - * A list of IP ranges (CIDR blocks) that are permitted to access clusters associated with this cluster security group. - */ - IPRanges?: IPRangeList; - /** - * The list of tags for the cluster security group. - */ - Tags?: TagList; - } - export interface ClusterSecurityGroupMembership { - /** - * The name of the cluster security group. - */ - ClusterSecurityGroupName?: String; - /** - * The status of the cluster security group. - */ - Status?: String; - } - export type ClusterSecurityGroupMembershipList = ClusterSecurityGroupMembership[]; - export interface ClusterSecurityGroupMessage { - /** - * A value that indicates the starting point for the next set of response records in a subsequent request. If a value is returned in a response, you can retrieve the next set of records by providing this returned marker value in the Marker parameter and retrying the command. If the Marker field is empty, all response records have been retrieved for the request. - */ - Marker?: String; - /** - * A list of ClusterSecurityGroup instances. - */ - ClusterSecurityGroups?: ClusterSecurityGroups; - } - export type ClusterSecurityGroupNameList = String[]; - export type ClusterSecurityGroups = ClusterSecurityGroup[]; - export interface ClusterSnapshotCopyStatus { - /** - * The destination region that snapshots are automatically copied to when cross-region snapshot copy is enabled. - */ - DestinationRegion?: String; - /** - * The number of days that automated snapshots are retained in the destination region after they are copied from a source region. - */ - RetentionPeriod?: Long; - /** - * The name of the snapshot copy grant. - */ - SnapshotCopyGrantName?: String; - } - export interface ClusterSubnetGroup { - /** - * The name of the cluster subnet group. - */ - ClusterSubnetGroupName?: String; - /** - * The description of the cluster subnet group. - */ - Description?: String; - /** - * The VPC ID of the cluster subnet group. - */ - VpcId?: String; - /** - * The status of the cluster subnet group. Possible values are Complete, Incomplete and Invalid. - */ - SubnetGroupStatus?: String; - /** - * A list of the VPC Subnet elements. - */ - Subnets?: SubnetList; - /** - * The list of tags for the cluster subnet group. - */ - Tags?: TagList; - } - export interface ClusterSubnetGroupMessage { - /** - * A value that indicates the starting point for the next set of response records in a subsequent request. If a value is returned in a response, you can retrieve the next set of records by providing this returned marker value in the Marker parameter and retrying the command. If the Marker field is empty, all response records have been retrieved for the request. - */ - Marker?: String; - /** - * A list of ClusterSubnetGroup instances. - */ - ClusterSubnetGroups?: ClusterSubnetGroups; - } - export type ClusterSubnetGroups = ClusterSubnetGroup[]; - export interface ClusterVersion { - /** - * The version number used by the cluster. - */ - ClusterVersion?: String; - /** - * The name of the cluster parameter group family for the cluster. - */ - ClusterParameterGroupFamily?: String; - /** - * The description of the cluster version. - */ - Description?: String; - } - export type ClusterVersionList = ClusterVersion[]; - export interface ClusterVersionsMessage { - /** - * A value that indicates the starting point for the next set of response records in a subsequent request. If a value is returned in a response, you can retrieve the next set of records by providing this returned marker value in the Marker parameter and retrying the command. If the Marker field is empty, all response records have been retrieved for the request. - */ - Marker?: String; - /** - * A list of Version elements. - */ - ClusterVersions?: ClusterVersionList; - } - export interface ClustersMessage { - /** - * A value that indicates the starting point for the next set of response records in a subsequent request. If a value is returned in a response, you can retrieve the next set of records by providing this returned marker value in the Marker parameter and retrying the command. If the Marker field is empty, all response records have been retrieved for the request. - */ - Marker?: String; - /** - * A list of Cluster objects, where each object describes one cluster. - */ - Clusters?: ClusterList; - } - export interface CopyClusterSnapshotMessage { - /** - * The identifier for the source snapshot. Constraints: Must be the identifier for a valid automated snapshot whose state is available. - */ - SourceSnapshotIdentifier: String; - /** - * The identifier of the cluster the source snapshot was created from. This parameter is required if your IAM user has a policy containing a snapshot resource element that specifies anything other than * for the cluster name. Constraints: Must be the identifier for a valid cluster. - */ - SourceSnapshotClusterIdentifier?: String; - /** - * The identifier given to the new manual snapshot. Constraints: Cannot be null, empty, or blank. Must contain from 1 to 255 alphanumeric characters or hyphens. First character must be a letter. Cannot end with a hyphen or contain two consecutive hyphens. Must be unique for the AWS account that is making the request. - */ - TargetSnapshotIdentifier: String; - } - export interface CopyClusterSnapshotResult { - Snapshot?: Snapshot; - } - export interface CreateClusterMessage { - /** - * The name of the first database to be created when the cluster is created. To create additional databases after the cluster is created, connect to the cluster with a SQL client and use SQL commands to create a database. For more information, go to Create a Database in the Amazon Redshift Database Developer Guide. Default: dev Constraints: Must contain 1 to 64 alphanumeric characters. Must contain only lowercase letters. Cannot be a word that is reserved by the service. A list of reserved words can be found in Reserved Words in the Amazon Redshift Database Developer Guide. - */ - DBName?: String; - /** - * A unique identifier for the cluster. You use this identifier to refer to the cluster for any subsequent cluster operations such as deleting or modifying. The identifier also appears in the Amazon Redshift console. Constraints: Must contain from 1 to 63 alphanumeric characters or hyphens. Alphabetic characters must be lowercase. First character must be a letter. Cannot end with a hyphen or contain two consecutive hyphens. Must be unique for all clusters within an AWS account. Example: myexamplecluster - */ - ClusterIdentifier: String; - /** - * The type of the cluster. When cluster type is specified as single-node, the NumberOfNodes parameter is not required. multi-node, the NumberOfNodes parameter is required. Valid Values: multi-node | single-node Default: multi-node - */ - ClusterType?: String; - /** - * The node type to be provisioned for the cluster. For information about node types, go to Working with Clusters in the Amazon Redshift Cluster Management Guide. Valid Values: ds1.xlarge | ds1.8xlarge | ds2.xlarge | ds2.8xlarge | dc1.large | dc1.8xlarge. - */ - NodeType: String; - /** - * The user name associated with the master user account for the cluster that is being created. Constraints: Must be 1 - 128 alphanumeric characters. First character must be a letter. Cannot be a reserved word. A list of reserved words can be found in Reserved Words in the Amazon Redshift Database Developer Guide. - */ - MasterUsername: String; - /** - * The password associated with the master user account for the cluster that is being created. Constraints: Must be between 8 and 64 characters in length. Must contain at least one uppercase letter. Must contain at least one lowercase letter. Must contain one number. Can be any printable ASCII character (ASCII code 33 to 126) except ' (single quote), " (double quote), \, /, @, or space. - */ - MasterUserPassword: String; - /** - * A list of security groups to be associated with this cluster. Default: The default cluster security group for Amazon Redshift. - */ - ClusterSecurityGroups?: ClusterSecurityGroupNameList; - /** - * A list of Virtual Private Cloud (VPC) security groups to be associated with the cluster. Default: The default VPC security group is associated with the cluster. - */ - VpcSecurityGroupIds?: VpcSecurityGroupIdList; - /** - * The name of a cluster subnet group to be associated with this cluster. If this parameter is not provided the resulting cluster will be deployed outside virtual private cloud (VPC). - */ - ClusterSubnetGroupName?: String; - /** - * The EC2 Availability Zone (AZ) in which you want Amazon Redshift to provision the cluster. For example, if you have several EC2 instances running in a specific Availability Zone, then you might want the cluster to be provisioned in the same zone in order to decrease network latency. Default: A random, system-chosen Availability Zone in the region that is specified by the endpoint. Example: us-east-1d Constraint: The specified Availability Zone must be in the same region as the current endpoint. - */ - AvailabilityZone?: String; - /** - * The weekly time range (in UTC) during which automated cluster maintenance can occur. Format: ddd:hh24:mi-ddd:hh24:mi Default: A 30-minute window selected at random from an 8-hour block of time per region, occurring on a random day of the week. For more information about the time blocks for each region, see Maintenance Windows in Amazon Redshift Cluster Management Guide. Valid Days: Mon | Tue | Wed | Thu | Fri | Sat | Sun Constraints: Minimum 30-minute window. - */ - PreferredMaintenanceWindow?: String; - /** - * The name of the parameter group to be associated with this cluster. Default: The default Amazon Redshift cluster parameter group. For information about the default parameter group, go to Working with Amazon Redshift Parameter Groups Constraints: Must be 1 to 255 alphanumeric characters or hyphens. First character must be a letter. Cannot end with a hyphen or contain two consecutive hyphens. - */ - ClusterParameterGroupName?: String; - /** - * The number of days that automated snapshots are retained. If the value is 0, automated snapshots are disabled. Even if automated snapshots are disabled, you can still create manual snapshots when you want with CreateClusterSnapshot. Default: 1 Constraints: Must be a value from 0 to 35. - */ - AutomatedSnapshotRetentionPeriod?: IntegerOptional; - /** - * The port number on which the cluster accepts incoming connections. The cluster is accessible only via the JDBC and ODBC connection strings. Part of the connection string requires the port on which the cluster will listen for incoming connections. Default: 5439 Valid Values: 1150-65535 - */ - Port?: IntegerOptional; - /** - * The version of the Amazon Redshift engine software that you want to deploy on the cluster. The version selected runs on all the nodes in the cluster. Constraints: Only version 1.0 is currently available. Example: 1.0 - */ - ClusterVersion?: String; - /** - * If true, major version upgrades can be applied during the maintenance window to the Amazon Redshift engine that is running on the cluster. When a new major version of the Amazon Redshift engine is released, you can request that the service automatically apply upgrades during the maintenance window to the Amazon Redshift engine that is running on your cluster. Default: true - */ - AllowVersionUpgrade?: BooleanOptional; - /** - * The number of compute nodes in the cluster. This parameter is required when the ClusterType parameter is specified as multi-node. For information about determining how many nodes you need, go to Working with Clusters in the Amazon Redshift Cluster Management Guide. If you don't specify this parameter, you get a single-node cluster. When requesting a multi-node cluster, you must specify the number of nodes that you want in the cluster. Default: 1 Constraints: Value must be at least 1 and no more than 100. - */ - NumberOfNodes?: IntegerOptional; - /** - * If true, the cluster can be accessed from a public network. - */ - PubliclyAccessible?: BooleanOptional; - /** - * If true, the data in the cluster is encrypted at rest. Default: false - */ - Encrypted?: BooleanOptional; - /** - * Specifies the name of the HSM client certificate the Amazon Redshift cluster uses to retrieve the data encryption keys stored in an HSM. - */ - HsmClientCertificateIdentifier?: String; - /** - * Specifies the name of the HSM configuration that contains the information the Amazon Redshift cluster can use to retrieve and store keys in an HSM. - */ - HsmConfigurationIdentifier?: String; - /** - * The Elastic IP (EIP) address for the cluster. Constraints: The cluster must be provisioned in EC2-VPC and publicly-accessible through an Internet gateway. For more information about provisioning clusters in EC2-VPC, go to Supported Platforms to Launch Your Cluster in the Amazon Redshift Cluster Management Guide. - */ - ElasticIp?: String; - /** - * A list of tag instances. - */ - Tags?: TagList; - /** - * The AWS Key Management Service (KMS) key ID of the encryption key that you want to use to encrypt data in the cluster. - */ - KmsKeyId?: String; - /** - * An option that specifies whether to create the cluster with enhanced VPC routing enabled. To create a cluster that uses enhanced VPC routing, the cluster must be in a VPC. For more information, see Enhanced VPC Routing in the Amazon Redshift Cluster Management Guide. If this option is true, enhanced VPC routing is enabled. Default: false - */ - EnhancedVpcRouting?: BooleanOptional; - /** - * Reserved. - */ - AdditionalInfo?: String; - /** - * A list of AWS Identity and Access Management (IAM) roles that can be used by the cluster to access other AWS services. You must supply the IAM roles in their Amazon Resource Name (ARN) format. You can supply up to 10 IAM roles in a single request. A cluster can have up to 10 IAM roles associated with it at any time. - */ - IamRoles?: IamRoleArnList; - } - export interface CreateClusterParameterGroupMessage { - /** - * The name of the cluster parameter group. Constraints: Must be 1 to 255 alphanumeric characters or hyphens First character must be a letter. Cannot end with a hyphen or contain two consecutive hyphens. Must be unique withing your AWS account. This value is stored as a lower-case string. - */ - ParameterGroupName: String; - /** - * The Amazon Redshift engine version to which the cluster parameter group applies. The cluster engine version determines the set of parameters. To get a list of valid parameter group family names, you can call DescribeClusterParameterGroups. By default, Amazon Redshift returns a list of all the parameter groups that are owned by your AWS account, including the default parameter groups for each Amazon Redshift engine version. The parameter group family names associated with the default parameter groups provide you the valid values. For example, a valid family name is "redshift-1.0". - */ - ParameterGroupFamily: String; - /** - * A description of the parameter group. - */ - Description: String; - /** - * A list of tag instances. - */ - Tags?: TagList; - } - export interface CreateClusterParameterGroupResult { - ClusterParameterGroup?: ClusterParameterGroup; - } - export interface CreateClusterResult { - Cluster?: Cluster; - } - export interface CreateClusterSecurityGroupMessage { - /** - * The name for the security group. Amazon Redshift stores the value as a lowercase string. Constraints: Must contain no more than 255 alphanumeric characters or hyphens. Must not be "Default". Must be unique for all security groups that are created by your AWS account. Example: examplesecuritygroup - */ - ClusterSecurityGroupName: String; - /** - * A description for the security group. - */ - Description: String; - /** - * A list of tag instances. - */ - Tags?: TagList; - } - export interface CreateClusterSecurityGroupResult { - ClusterSecurityGroup?: ClusterSecurityGroup; - } - export interface CreateClusterSnapshotMessage { - /** - * A unique identifier for the snapshot that you are requesting. This identifier must be unique for all snapshots within the AWS account. Constraints: Cannot be null, empty, or blank Must contain from 1 to 255 alphanumeric characters or hyphens First character must be a letter Cannot end with a hyphen or contain two consecutive hyphens Example: my-snapshot-id - */ - SnapshotIdentifier: String; - /** - * The cluster identifier for which you want a snapshot. - */ - ClusterIdentifier: String; - /** - * A list of tag instances. - */ - Tags?: TagList; - } - export interface CreateClusterSnapshotResult { - Snapshot?: Snapshot; - } - export interface CreateClusterSubnetGroupMessage { - /** - * The name for the subnet group. Amazon Redshift stores the value as a lowercase string. Constraints: Must contain no more than 255 alphanumeric characters or hyphens. Must not be "Default". Must be unique for all subnet groups that are created by your AWS account. Example: examplesubnetgroup - */ - ClusterSubnetGroupName: String; - /** - * A description for the subnet group. - */ - Description: String; - /** - * An array of VPC subnet IDs. A maximum of 20 subnets can be modified in a single request. - */ - SubnetIds: SubnetIdentifierList; - /** - * A list of tag instances. - */ - Tags?: TagList; - } - export interface CreateClusterSubnetGroupResult { - ClusterSubnetGroup?: ClusterSubnetGroup; - } - export interface CreateEventSubscriptionMessage { - /** - * The name of the event subscription to be created. Constraints: Cannot be null, empty, or blank. Must contain from 1 to 255 alphanumeric characters or hyphens. First character must be a letter. Cannot end with a hyphen or contain two consecutive hyphens. - */ - SubscriptionName: String; - /** - * The Amazon Resource Name (ARN) of the Amazon SNS topic used to transmit the event notifications. The ARN is created by Amazon SNS when you create a topic and subscribe to it. - */ - SnsTopicArn: String; - /** - * The type of source that will be generating the events. For example, if you want to be notified of events generated by a cluster, you would set this parameter to cluster. If this value is not specified, events are returned for all Amazon Redshift objects in your AWS account. You must specify a source type in order to specify source IDs. Valid values: cluster, cluster-parameter-group, cluster-security-group, and cluster-snapshot. - */ - SourceType?: String; - /** - * A list of one or more identifiers of Amazon Redshift source objects. All of the objects must be of the same type as was specified in the source type parameter. The event subscription will return only events generated by the specified objects. If not specified, then events are returned for all objects within the source type specified. Example: my-cluster-1, my-cluster-2 Example: my-snapshot-20131010 - */ - SourceIds?: SourceIdsList; - /** - * Specifies the Amazon Redshift event categories to be published by the event notification subscription. Values: Configuration, Management, Monitoring, Security - */ - EventCategories?: EventCategoriesList; - /** - * Specifies the Amazon Redshift event severity to be published by the event notification subscription. Values: ERROR, INFO - */ - Severity?: String; - /** - * A Boolean value; set to true to activate the subscription, set to false to create the subscription but not active it. - */ - Enabled?: BooleanOptional; - /** - * A list of tag instances. - */ - Tags?: TagList; - } - export interface CreateEventSubscriptionResult { - EventSubscription?: EventSubscription; - } - export interface CreateHsmClientCertificateMessage { - /** - * The identifier to be assigned to the new HSM client certificate that the cluster will use to connect to the HSM to use the database encryption keys. - */ - HsmClientCertificateIdentifier: String; - /** - * A list of tag instances. - */ - Tags?: TagList; - } - export interface CreateHsmClientCertificateResult { - HsmClientCertificate?: HsmClientCertificate; - } - export interface CreateHsmConfigurationMessage { - /** - * The identifier to be assigned to the new Amazon Redshift HSM configuration. - */ - HsmConfigurationIdentifier: String; - /** - * A text description of the HSM configuration to be created. - */ - Description: String; - /** - * The IP address that the Amazon Redshift cluster must use to access the HSM. - */ - HsmIpAddress: String; - /** - * The name of the partition in the HSM where the Amazon Redshift clusters will store their database encryption keys. - */ - HsmPartitionName: String; - /** - * The password required to access the HSM partition. - */ - HsmPartitionPassword: String; - /** - * The HSMs public certificate file. When using Cloud HSM, the file name is server.pem. - */ - HsmServerPublicCertificate: String; - /** - * A list of tag instances. - */ - Tags?: TagList; - } - export interface CreateHsmConfigurationResult { - HsmConfiguration?: HsmConfiguration; - } - export interface CreateSnapshotCopyGrantMessage { - /** - * The name of the snapshot copy grant. This name must be unique in the region for the AWS account. Constraints: Must contain from 1 to 63 alphanumeric characters or hyphens. Alphabetic characters must be lowercase. First character must be a letter. Cannot end with a hyphen or contain two consecutive hyphens. Must be unique for all clusters within an AWS account. - */ - SnapshotCopyGrantName: String; - /** - * The unique identifier of the customer master key (CMK) to which to grant Amazon Redshift permission. If no key is specified, the default key is used. - */ - KmsKeyId?: String; - /** - * A list of tag instances. - */ - Tags?: TagList; - } - export interface CreateSnapshotCopyGrantResult { - SnapshotCopyGrant?: SnapshotCopyGrant; - } - export interface CreateTagsMessage { - /** - * The Amazon Resource Name (ARN) to which you want to add the tag or tags. For example, arn:aws:redshift:us-east-1:123456789:cluster:t1. - */ - ResourceName: String; - /** - * One or more name/value pairs to add as tags to the specified resource. Each tag name is passed in with the parameter Key and the corresponding value is passed in with the parameter Value. The Key and Value parameters are separated by a comma (,). Separate multiple tags with a space. For example, --tags "Key"="owner","Value"="admin" "Key"="environment","Value"="test" "Key"="version","Value"="1.0". - */ - Tags: TagList; - } - export type DbGroupList = String[]; - export interface DefaultClusterParameters { - /** - * The name of the cluster parameter group family to which the engine default parameters apply. - */ - ParameterGroupFamily?: String; - /** - * A value that indicates the starting point for the next set of response records in a subsequent request. If a value is returned in a response, you can retrieve the next set of records by providing this returned marker value in the Marker parameter and retrying the command. If the Marker field is empty, all response records have been retrieved for the request. - */ - Marker?: String; - /** - * The list of cluster default parameters. - */ - Parameters?: ParametersList; - } - export interface DeleteClusterMessage { - /** - * The identifier of the cluster to be deleted. Constraints: Must contain lowercase characters. Must contain from 1 to 63 alphanumeric characters or hyphens. First character must be a letter. Cannot end with a hyphen or contain two consecutive hyphens. - */ - ClusterIdentifier: String; - /** - * Determines whether a final snapshot of the cluster is created before Amazon Redshift deletes the cluster. If true, a final cluster snapshot is not created. If false, a final cluster snapshot is created before the cluster is deleted. The FinalClusterSnapshotIdentifier parameter must be specified if SkipFinalClusterSnapshot is false. Default: false - */ - SkipFinalClusterSnapshot?: Boolean; - /** - * The identifier of the final snapshot that is to be created immediately before deleting the cluster. If this parameter is provided, SkipFinalClusterSnapshot must be false. Constraints: Must be 1 to 255 alphanumeric characters. First character must be a letter. Cannot end with a hyphen or contain two consecutive hyphens. - */ - FinalClusterSnapshotIdentifier?: String; - } - export interface DeleteClusterParameterGroupMessage { - /** - * The name of the parameter group to be deleted. Constraints: Must be the name of an existing cluster parameter group. Cannot delete a default cluster parameter group. - */ - ParameterGroupName: String; - } - export interface DeleteClusterResult { - Cluster?: Cluster; - } - export interface DeleteClusterSecurityGroupMessage { - /** - * The name of the cluster security group to be deleted. - */ - ClusterSecurityGroupName: String; - } - export interface DeleteClusterSnapshotMessage { - /** - * The unique identifier of the manual snapshot to be deleted. Constraints: Must be the name of an existing snapshot that is in the available state. - */ - SnapshotIdentifier: String; - /** - * The unique identifier of the cluster the snapshot was created from. This parameter is required if your IAM user has a policy containing a snapshot resource element that specifies anything other than * for the cluster name. Constraints: Must be the name of valid cluster. - */ - SnapshotClusterIdentifier?: String; - } - export interface DeleteClusterSnapshotResult { - Snapshot?: Snapshot; - } - export interface DeleteClusterSubnetGroupMessage { - /** - * The name of the cluster subnet group name to be deleted. - */ - ClusterSubnetGroupName: String; - } - export interface DeleteEventSubscriptionMessage { - /** - * The name of the Amazon Redshift event notification subscription to be deleted. - */ - SubscriptionName: String; - } - export interface DeleteHsmClientCertificateMessage { - /** - * The identifier of the HSM client certificate to be deleted. - */ - HsmClientCertificateIdentifier: String; - } - export interface DeleteHsmConfigurationMessage { - /** - * The identifier of the Amazon Redshift HSM configuration to be deleted. - */ - HsmConfigurationIdentifier: String; - } - export interface DeleteSnapshotCopyGrantMessage { - /** - * The name of the snapshot copy grant to delete. - */ - SnapshotCopyGrantName: String; - } - export interface DeleteTagsMessage { - /** - * The Amazon Resource Name (ARN) from which you want to remove the tag or tags. For example, arn:aws:redshift:us-east-1:123456789:cluster:t1. - */ - ResourceName: String; - /** - * The tag key that you want to delete. - */ - TagKeys: TagKeyList; - } - export interface DescribeClusterParameterGroupsMessage { - /** - * The name of a specific parameter group for which to return details. By default, details about all parameter groups and the default parameter group are returned. - */ - ParameterGroupName?: String; - /** - * The maximum number of response records to return in each call. If the number of remaining response records exceeds the specified MaxRecords value, a value is returned in a marker field of the response. You can retrieve the next set of records by retrying the command with the returned marker value. Default: 100 Constraints: minimum 20, maximum 100. - */ - MaxRecords?: IntegerOptional; - /** - * An optional parameter that specifies the starting point to return a set of response records. When the results of a DescribeClusterParameterGroups request exceed the value specified in MaxRecords, AWS returns a value in the Marker field of the response. You can retrieve the next set of response records by providing the returned marker value in the Marker parameter and retrying the request. - */ - Marker?: String; - /** - * A tag key or keys for which you want to return all matching cluster parameter groups that are associated with the specified key or keys. For example, suppose that you have parameter groups that are tagged with keys called owner and environment. If you specify both of these tag keys in the request, Amazon Redshift returns a response with the parameter groups that have either or both of these tag keys associated with them. - */ - TagKeys?: TagKeyList; - /** - * A tag value or values for which you want to return all matching cluster parameter groups that are associated with the specified tag value or values. For example, suppose that you have parameter groups that are tagged with values called admin and test. If you specify both of these tag values in the request, Amazon Redshift returns a response with the parameter groups that have either or both of these tag values associated with them. - */ - TagValues?: TagValueList; - } - export interface DescribeClusterParametersMessage { - /** - * The name of a cluster parameter group for which to return details. - */ - ParameterGroupName: String; - /** - * The parameter types to return. Specify user to show parameters that are different form the default. Similarly, specify engine-default to show parameters that are the same as the default parameter group. Default: All parameter types returned. Valid Values: user | engine-default - */ - Source?: String; - /** - * The maximum number of response records to return in each call. If the number of remaining response records exceeds the specified MaxRecords value, a value is returned in a marker field of the response. You can retrieve the next set of records by retrying the command with the returned marker value. Default: 100 Constraints: minimum 20, maximum 100. - */ - MaxRecords?: IntegerOptional; - /** - * An optional parameter that specifies the starting point to return a set of response records. When the results of a DescribeClusterParameters request exceed the value specified in MaxRecords, AWS returns a value in the Marker field of the response. You can retrieve the next set of response records by providing the returned marker value in the Marker parameter and retrying the request. - */ - Marker?: String; - } - export interface DescribeClusterSecurityGroupsMessage { - /** - * The name of a cluster security group for which you are requesting details. You can specify either the Marker parameter or a ClusterSecurityGroupName parameter, but not both. Example: securitygroup1 - */ - ClusterSecurityGroupName?: String; - /** - * The maximum number of response records to return in each call. If the number of remaining response records exceeds the specified MaxRecords value, a value is returned in a marker field of the response. You can retrieve the next set of records by retrying the command with the returned marker value. Default: 100 Constraints: minimum 20, maximum 100. - */ - MaxRecords?: IntegerOptional; - /** - * An optional parameter that specifies the starting point to return a set of response records. When the results of a DescribeClusterSecurityGroups request exceed the value specified in MaxRecords, AWS returns a value in the Marker field of the response. You can retrieve the next set of response records by providing the returned marker value in the Marker parameter and retrying the request. Constraints: You can specify either the ClusterSecurityGroupName parameter or the Marker parameter, but not both. - */ - Marker?: String; - /** - * A tag key or keys for which you want to return all matching cluster security groups that are associated with the specified key or keys. For example, suppose that you have security groups that are tagged with keys called owner and environment. If you specify both of these tag keys in the request, Amazon Redshift returns a response with the security groups that have either or both of these tag keys associated with them. - */ - TagKeys?: TagKeyList; - /** - * A tag value or values for which you want to return all matching cluster security groups that are associated with the specified tag value or values. For example, suppose that you have security groups that are tagged with values called admin and test. If you specify both of these tag values in the request, Amazon Redshift returns a response with the security groups that have either or both of these tag values associated with them. - */ - TagValues?: TagValueList; - } - export interface DescribeClusterSnapshotsMessage { - /** - * The identifier of the cluster for which information about snapshots is requested. - */ - ClusterIdentifier?: String; - /** - * The snapshot identifier of the snapshot about which to return information. - */ - SnapshotIdentifier?: String; - /** - * The type of snapshots for which you are requesting information. By default, snapshots of all types are returned. Valid Values: automated | manual - */ - SnapshotType?: String; - /** - * A value that requests only snapshots created at or after the specified time. The time value is specified in ISO 8601 format. For more information about ISO 8601, go to the ISO8601 Wikipedia page. Example: 2012-07-16T18:00:00Z - */ - StartTime?: TStamp; - /** - * A time value that requests only snapshots created at or before the specified time. The time value is specified in ISO 8601 format. For more information about ISO 8601, go to the ISO8601 Wikipedia page. Example: 2012-07-16T18:00:00Z - */ - EndTime?: TStamp; - /** - * The maximum number of response records to return in each call. If the number of remaining response records exceeds the specified MaxRecords value, a value is returned in a marker field of the response. You can retrieve the next set of records by retrying the command with the returned marker value. Default: 100 Constraints: minimum 20, maximum 100. - */ - MaxRecords?: IntegerOptional; - /** - * An optional parameter that specifies the starting point to return a set of response records. When the results of a DescribeClusterSnapshots request exceed the value specified in MaxRecords, AWS returns a value in the Marker field of the response. You can retrieve the next set of response records by providing the returned marker value in the Marker parameter and retrying the request. - */ - Marker?: String; - /** - * The AWS customer account used to create or copy the snapshot. Use this field to filter the results to snapshots owned by a particular account. To describe snapshots you own, either specify your AWS customer account, or do not specify the parameter. - */ - OwnerAccount?: String; - /** - * A tag key or keys for which you want to return all matching cluster snapshots that are associated with the specified key or keys. For example, suppose that you have snapshots that are tagged with keys called owner and environment. If you specify both of these tag keys in the request, Amazon Redshift returns a response with the snapshots that have either or both of these tag keys associated with them. - */ - TagKeys?: TagKeyList; - /** - * A tag value or values for which you want to return all matching cluster snapshots that are associated with the specified tag value or values. For example, suppose that you have snapshots that are tagged with values called admin and test. If you specify both of these tag values in the request, Amazon Redshift returns a response with the snapshots that have either or both of these tag values associated with them. - */ - TagValues?: TagValueList; - } - export interface DescribeClusterSubnetGroupsMessage { - /** - * The name of the cluster subnet group for which information is requested. - */ - ClusterSubnetGroupName?: String; - /** - * The maximum number of response records to return in each call. If the number of remaining response records exceeds the specified MaxRecords value, a value is returned in a marker field of the response. You can retrieve the next set of records by retrying the command with the returned marker value. Default: 100 Constraints: minimum 20, maximum 100. - */ - MaxRecords?: IntegerOptional; - /** - * An optional parameter that specifies the starting point to return a set of response records. When the results of a DescribeClusterSubnetGroups request exceed the value specified in MaxRecords, AWS returns a value in the Marker field of the response. You can retrieve the next set of response records by providing the returned marker value in the Marker parameter and retrying the request. - */ - Marker?: String; - /** - * A tag key or keys for which you want to return all matching cluster subnet groups that are associated with the specified key or keys. For example, suppose that you have subnet groups that are tagged with keys called owner and environment. If you specify both of these tag keys in the request, Amazon Redshift returns a response with the subnet groups that have either or both of these tag keys associated with them. - */ - TagKeys?: TagKeyList; - /** - * A tag value or values for which you want to return all matching cluster subnet groups that are associated with the specified tag value or values. For example, suppose that you have subnet groups that are tagged with values called admin and test. If you specify both of these tag values in the request, Amazon Redshift returns a response with the subnet groups that have either or both of these tag values associated with them. - */ - TagValues?: TagValueList; - } - export interface DescribeClusterVersionsMessage { - /** - * The specific cluster version to return. Example: 1.0 - */ - ClusterVersion?: String; - /** - * The name of a specific cluster parameter group family to return details for. Constraints: Must be 1 to 255 alphanumeric characters First character must be a letter Cannot end with a hyphen or contain two consecutive hyphens - */ - ClusterParameterGroupFamily?: String; - /** - * The maximum number of response records to return in each call. If the number of remaining response records exceeds the specified MaxRecords value, a value is returned in a marker field of the response. You can retrieve the next set of records by retrying the command with the returned marker value. Default: 100 Constraints: minimum 20, maximum 100. - */ - MaxRecords?: IntegerOptional; - /** - * An optional parameter that specifies the starting point to return a set of response records. When the results of a DescribeClusterVersions request exceed the value specified in MaxRecords, AWS returns a value in the Marker field of the response. You can retrieve the next set of response records by providing the returned marker value in the Marker parameter and retrying the request. - */ - Marker?: String; - } - export interface DescribeClustersMessage { - /** - * The unique identifier of a cluster whose properties you are requesting. This parameter is case sensitive. The default is that all clusters defined for an account are returned. - */ - ClusterIdentifier?: String; - /** - * The maximum number of response records to return in each call. If the number of remaining response records exceeds the specified MaxRecords value, a value is returned in a marker field of the response. You can retrieve the next set of records by retrying the command with the returned marker value. Default: 100 Constraints: minimum 20, maximum 100. - */ - MaxRecords?: IntegerOptional; - /** - * An optional parameter that specifies the starting point to return a set of response records. When the results of a DescribeClusters request exceed the value specified in MaxRecords, AWS returns a value in the Marker field of the response. You can retrieve the next set of response records by providing the returned marker value in the Marker parameter and retrying the request. Constraints: You can specify either the ClusterIdentifier parameter or the Marker parameter, but not both. - */ - Marker?: String; - /** - * A tag key or keys for which you want to return all matching clusters that are associated with the specified key or keys. For example, suppose that you have clusters that are tagged with keys called owner and environment. If you specify both of these tag keys in the request, Amazon Redshift returns a response with the clusters that have either or both of these tag keys associated with them. - */ - TagKeys?: TagKeyList; - /** - * A tag value or values for which you want to return all matching clusters that are associated with the specified tag value or values. For example, suppose that you have clusters that are tagged with values called admin and test. If you specify both of these tag values in the request, Amazon Redshift returns a response with the clusters that have either or both of these tag values associated with them. - */ - TagValues?: TagValueList; - } - export interface DescribeDefaultClusterParametersMessage { - /** - * The name of the cluster parameter group family. - */ - ParameterGroupFamily: String; - /** - * The maximum number of response records to return in each call. If the number of remaining response records exceeds the specified MaxRecords value, a value is returned in a marker field of the response. You can retrieve the next set of records by retrying the command with the returned marker value. Default: 100 Constraints: minimum 20, maximum 100. - */ - MaxRecords?: IntegerOptional; - /** - * An optional parameter that specifies the starting point to return a set of response records. When the results of a DescribeDefaultClusterParameters request exceed the value specified in MaxRecords, AWS returns a value in the Marker field of the response. You can retrieve the next set of response records by providing the returned marker value in the Marker parameter and retrying the request. - */ - Marker?: String; - } - export interface DescribeDefaultClusterParametersResult { - DefaultClusterParameters?: DefaultClusterParameters; - } - export interface DescribeEventCategoriesMessage { - /** - * The source type, such as cluster or parameter group, to which the described event categories apply. Valid values: cluster, cluster-snapshot, cluster-parameter-group, and cluster-security-group. - */ - SourceType?: String; - } - export interface DescribeEventSubscriptionsMessage { - /** - * The name of the Amazon Redshift event notification subscription to be described. - */ - SubscriptionName?: String; - /** - * The maximum number of response records to return in each call. If the number of remaining response records exceeds the specified MaxRecords value, a value is returned in a marker field of the response. You can retrieve the next set of records by retrying the command with the returned marker value. Default: 100 Constraints: minimum 20, maximum 100. - */ - MaxRecords?: IntegerOptional; - /** - * An optional parameter that specifies the starting point to return a set of response records. When the results of a DescribeEventSubscriptions request exceed the value specified in MaxRecords, AWS returns a value in the Marker field of the response. You can retrieve the next set of response records by providing the returned marker value in the Marker parameter and retrying the request. - */ - Marker?: String; - /** - * A tag key or keys for which you want to return all matching event notification subscriptions that are associated with the specified key or keys. For example, suppose that you have subscriptions that are tagged with keys called owner and environment. If you specify both of these tag keys in the request, Amazon Redshift returns a response with the subscriptions that have either or both of these tag keys associated with them. - */ - TagKeys?: TagKeyList; - /** - * A tag value or values for which you want to return all matching event notification subscriptions that are associated with the specified tag value or values. For example, suppose that you have subscriptions that are tagged with values called admin and test. If you specify both of these tag values in the request, Amazon Redshift returns a response with the subscriptions that have either or both of these tag values associated with them. - */ - TagValues?: TagValueList; - } - export interface DescribeEventsMessage { - /** - * The identifier of the event source for which events will be returned. If this parameter is not specified, then all sources are included in the response. Constraints: If SourceIdentifier is supplied, SourceType must also be provided. Specify a cluster identifier when SourceType is cluster. Specify a cluster security group name when SourceType is cluster-security-group. Specify a cluster parameter group name when SourceType is cluster-parameter-group. Specify a cluster snapshot identifier when SourceType is cluster-snapshot. - */ - SourceIdentifier?: String; - /** - * The event source to retrieve events for. If no value is specified, all events are returned. Constraints: If SourceType is supplied, SourceIdentifier must also be provided. Specify cluster when SourceIdentifier is a cluster identifier. Specify cluster-security-group when SourceIdentifier is a cluster security group name. Specify cluster-parameter-group when SourceIdentifier is a cluster parameter group name. Specify cluster-snapshot when SourceIdentifier is a cluster snapshot identifier. - */ - SourceType?: SourceType; - /** - * The beginning of the time interval to retrieve events for, specified in ISO 8601 format. For more information about ISO 8601, go to the ISO8601 Wikipedia page. Example: 2009-07-08T18:00Z - */ - StartTime?: TStamp; - /** - * The end of the time interval for which to retrieve events, specified in ISO 8601 format. For more information about ISO 8601, go to the ISO8601 Wikipedia page. Example: 2009-07-08T18:00Z - */ - EndTime?: TStamp; - /** - * The number of minutes prior to the time of the request for which to retrieve events. For example, if the request is sent at 18:00 and you specify a duration of 60, then only events which have occurred after 17:00 will be returned. Default: 60 - */ - Duration?: IntegerOptional; - /** - * The maximum number of response records to return in each call. If the number of remaining response records exceeds the specified MaxRecords value, a value is returned in a marker field of the response. You can retrieve the next set of records by retrying the command with the returned marker value. Default: 100 Constraints: minimum 20, maximum 100. - */ - MaxRecords?: IntegerOptional; - /** - * An optional parameter that specifies the starting point to return a set of response records. When the results of a DescribeEvents request exceed the value specified in MaxRecords, AWS returns a value in the Marker field of the response. You can retrieve the next set of response records by providing the returned marker value in the Marker parameter and retrying the request. - */ - Marker?: String; - } - export interface DescribeHsmClientCertificatesMessage { - /** - * The identifier of a specific HSM client certificate for which you want information. If no identifier is specified, information is returned for all HSM client certificates owned by your AWS customer account. - */ - HsmClientCertificateIdentifier?: String; - /** - * The maximum number of response records to return in each call. If the number of remaining response records exceeds the specified MaxRecords value, a value is returned in a marker field of the response. You can retrieve the next set of records by retrying the command with the returned marker value. Default: 100 Constraints: minimum 20, maximum 100. - */ - MaxRecords?: IntegerOptional; - /** - * An optional parameter that specifies the starting point to return a set of response records. When the results of a DescribeHsmClientCertificates request exceed the value specified in MaxRecords, AWS returns a value in the Marker field of the response. You can retrieve the next set of response records by providing the returned marker value in the Marker parameter and retrying the request. - */ - Marker?: String; - /** - * A tag key or keys for which you want to return all matching HSM client certificates that are associated with the specified key or keys. For example, suppose that you have HSM client certificates that are tagged with keys called owner and environment. If you specify both of these tag keys in the request, Amazon Redshift returns a response with the HSM client certificates that have either or both of these tag keys associated with them. - */ - TagKeys?: TagKeyList; - /** - * A tag value or values for which you want to return all matching HSM client certificates that are associated with the specified tag value or values. For example, suppose that you have HSM client certificates that are tagged with values called admin and test. If you specify both of these tag values in the request, Amazon Redshift returns a response with the HSM client certificates that have either or both of these tag values associated with them. - */ - TagValues?: TagValueList; - } - export interface DescribeHsmConfigurationsMessage { - /** - * The identifier of a specific Amazon Redshift HSM configuration to be described. If no identifier is specified, information is returned for all HSM configurations owned by your AWS customer account. - */ - HsmConfigurationIdentifier?: String; - /** - * The maximum number of response records to return in each call. If the number of remaining response records exceeds the specified MaxRecords value, a value is returned in a marker field of the response. You can retrieve the next set of records by retrying the command with the returned marker value. Default: 100 Constraints: minimum 20, maximum 100. - */ - MaxRecords?: IntegerOptional; - /** - * An optional parameter that specifies the starting point to return a set of response records. When the results of a DescribeHsmConfigurations request exceed the value specified in MaxRecords, AWS returns a value in the Marker field of the response. You can retrieve the next set of response records by providing the returned marker value in the Marker parameter and retrying the request. - */ - Marker?: String; - /** - * A tag key or keys for which you want to return all matching HSM configurations that are associated with the specified key or keys. For example, suppose that you have HSM configurations that are tagged with keys called owner and environment. If you specify both of these tag keys in the request, Amazon Redshift returns a response with the HSM configurations that have either or both of these tag keys associated with them. - */ - TagKeys?: TagKeyList; - /** - * A tag value or values for which you want to return all matching HSM configurations that are associated with the specified tag value or values. For example, suppose that you have HSM configurations that are tagged with values called admin and test. If you specify both of these tag values in the request, Amazon Redshift returns a response with the HSM configurations that have either or both of these tag values associated with them. - */ - TagValues?: TagValueList; - } - export interface DescribeLoggingStatusMessage { - /** - * The identifier of the cluster from which to get the logging status. Example: examplecluster - */ - ClusterIdentifier: String; - } - export interface DescribeOrderableClusterOptionsMessage { - /** - * The version filter value. Specify this parameter to show only the available offerings matching the specified version. Default: All versions. Constraints: Must be one of the version returned from DescribeClusterVersions. - */ - ClusterVersion?: String; - /** - * The node type filter value. Specify this parameter to show only the available offerings matching the specified node type. - */ - NodeType?: String; - /** - * The maximum number of response records to return in each call. If the number of remaining response records exceeds the specified MaxRecords value, a value is returned in a marker field of the response. You can retrieve the next set of records by retrying the command with the returned marker value. Default: 100 Constraints: minimum 20, maximum 100. - */ - MaxRecords?: IntegerOptional; - /** - * An optional parameter that specifies the starting point to return a set of response records. When the results of a DescribeOrderableClusterOptions request exceed the value specified in MaxRecords, AWS returns a value in the Marker field of the response. You can retrieve the next set of response records by providing the returned marker value in the Marker parameter and retrying the request. - */ - Marker?: String; - } - export interface DescribeReservedNodeOfferingsMessage { - /** - * The unique identifier for the offering. - */ - ReservedNodeOfferingId?: String; - /** - * The maximum number of response records to return in each call. If the number of remaining response records exceeds the specified MaxRecords value, a value is returned in a marker field of the response. You can retrieve the next set of records by retrying the command with the returned marker value. Default: 100 Constraints: minimum 20, maximum 100. - */ - MaxRecords?: IntegerOptional; - /** - * An optional parameter that specifies the starting point to return a set of response records. When the results of a DescribeReservedNodeOfferings request exceed the value specified in MaxRecords, AWS returns a value in the Marker field of the response. You can retrieve the next set of response records by providing the returned marker value in the Marker parameter and retrying the request. - */ - Marker?: String; - } - export interface DescribeReservedNodesMessage { - /** - * Identifier for the node reservation. - */ - ReservedNodeId?: String; - /** - * The maximum number of response records to return in each call. If the number of remaining response records exceeds the specified MaxRecords value, a value is returned in a marker field of the response. You can retrieve the next set of records by retrying the command with the returned marker value. Default: 100 Constraints: minimum 20, maximum 100. - */ - MaxRecords?: IntegerOptional; - /** - * An optional parameter that specifies the starting point to return a set of response records. When the results of a DescribeReservedNodes request exceed the value specified in MaxRecords, AWS returns a value in the Marker field of the response. You can retrieve the next set of response records by providing the returned marker value in the Marker parameter and retrying the request. - */ - Marker?: String; - } - export interface DescribeResizeMessage { - /** - * The unique identifier of a cluster whose resize progress you are requesting. This parameter is case-sensitive. By default, resize operations for all clusters defined for an AWS account are returned. - */ - ClusterIdentifier: String; - } - export interface DescribeSnapshotCopyGrantsMessage { - /** - * The name of the snapshot copy grant. - */ - SnapshotCopyGrantName?: String; - /** - * The maximum number of response records to return in each call. If the number of remaining response records exceeds the specified MaxRecords value, a value is returned in a marker field of the response. You can retrieve the next set of records by retrying the command with the returned marker value. Default: 100 Constraints: minimum 20, maximum 100. - */ - MaxRecords?: IntegerOptional; - /** - * An optional parameter that specifies the starting point to return a set of response records. When the results of a DescribeSnapshotCopyGrant request exceed the value specified in MaxRecords, AWS returns a value in the Marker field of the response. You can retrieve the next set of response records by providing the returned marker value in the Marker parameter and retrying the request. Constraints: You can specify either the SnapshotCopyGrantName parameter or the Marker parameter, but not both. - */ - Marker?: String; - /** - * A tag key or keys for which you want to return all matching resources that are associated with the specified key or keys. For example, suppose that you have resources tagged with keys called owner and environment. If you specify both of these tag keys in the request, Amazon Redshift returns a response with all resources that have either or both of these tag keys associated with them. - */ - TagKeys?: TagKeyList; - /** - * A tag value or values for which you want to return all matching resources that are associated with the specified value or values. For example, suppose that you have resources tagged with values called admin and test. If you specify both of these tag values in the request, Amazon Redshift returns a response with all resources that have either or both of these tag values associated with them. - */ - TagValues?: TagValueList; - } - export interface DescribeTableRestoreStatusMessage { - /** - * The Amazon Redshift cluster that the table is being restored to. - */ - ClusterIdentifier?: String; - /** - * The identifier of the table restore request to return status for. If you don't specify a TableRestoreRequestId value, then DescribeTableRestoreStatus returns the status of all in-progress table restore requests. - */ - TableRestoreRequestId?: String; - /** - * The maximum number of records to include in the response. If more records exist than the specified MaxRecords value, a pagination token called a marker is included in the response so that the remaining results can be retrieved. - */ - MaxRecords?: IntegerOptional; - /** - * An optional pagination token provided by a previous DescribeTableRestoreStatus request. If this parameter is specified, the response includes only records beyond the marker, up to the value specified by the MaxRecords parameter. - */ - Marker?: String; - } - export interface DescribeTagsMessage { - /** - * The Amazon Resource Name (ARN) for which you want to describe the tag or tags. For example, arn:aws:redshift:us-east-1:123456789:cluster:t1. - */ - ResourceName?: String; - /** - * The type of resource with which you want to view tags. Valid resource types are: Cluster CIDR/IP EC2 security group Snapshot Cluster security group Subnet group HSM connection HSM certificate Parameter group Snapshot copy grant For more information about Amazon Redshift resource types and constructing ARNs, go to Specifying Policy Elements: Actions, Effects, Resources, and Principals in the Amazon Redshift Cluster Management Guide. - */ - ResourceType?: String; - /** - * The maximum number or response records to return in each call. If the number of remaining response records exceeds the specified MaxRecords value, a value is returned in a marker field of the response. You can retrieve the next set of records by retrying the command with the returned marker value. - */ - MaxRecords?: IntegerOptional; - /** - * A value that indicates the starting point for the next set of response records in a subsequent request. If a value is returned in a response, you can retrieve the next set of records by providing this returned marker value in the marker parameter and retrying the command. If the marker field is empty, all response records have been retrieved for the request. - */ - Marker?: String; - /** - * A tag key or keys for which you want to return all matching resources that are associated with the specified key or keys. For example, suppose that you have resources tagged with keys called owner and environment. If you specify both of these tag keys in the request, Amazon Redshift returns a response with all resources that have either or both of these tag keys associated with them. - */ - TagKeys?: TagKeyList; - /** - * A tag value or values for which you want to return all matching resources that are associated with the specified value or values. For example, suppose that you have resources tagged with values called admin and test. If you specify both of these tag values in the request, Amazon Redshift returns a response with all resources that have either or both of these tag values associated with them. - */ - TagValues?: TagValueList; - } - export interface DisableLoggingMessage { - /** - * The identifier of the cluster on which logging is to be stopped. Example: examplecluster - */ - ClusterIdentifier: String; - } - export interface DisableSnapshotCopyMessage { - /** - * The unique identifier of the source cluster that you want to disable copying of snapshots to a destination region. Constraints: Must be the valid name of an existing cluster that has cross-region snapshot copy enabled. - */ - ClusterIdentifier: String; - } - export interface DisableSnapshotCopyResult { - Cluster?: Cluster; - } - export type Double = number; - export type DoubleOptional = number; - export interface EC2SecurityGroup { - /** - * The status of the EC2 security group. - */ - Status?: String; - /** - * The name of the EC2 Security Group. - */ - EC2SecurityGroupName?: String; - /** - * The AWS ID of the owner of the EC2 security group specified in the EC2SecurityGroupName field. - */ - EC2SecurityGroupOwnerId?: String; - /** - * The list of tags for the EC2 security group. - */ - Tags?: TagList; - } - export type EC2SecurityGroupList = EC2SecurityGroup[]; - export interface ElasticIpStatus { - /** - * The elastic IP (EIP) address for the cluster. - */ - ElasticIp?: String; - /** - * The status of the elastic IP (EIP) address. - */ - Status?: String; - } - export interface EnableLoggingMessage { - /** - * The identifier of the cluster on which logging is to be started. Example: examplecluster - */ - ClusterIdentifier: String; - /** - * The name of an existing S3 bucket where the log files are to be stored. Constraints: Must be in the same region as the cluster The cluster must have read bucket and put object permissions - */ - BucketName: String; - /** - * The prefix applied to the log file names. Constraints: Cannot exceed 512 characters Cannot contain spaces( ), double quotes ("), single quotes ('), a backslash (\), or control characters. The hexadecimal codes for invalid characters are: x00 to x20 x22 x27 x5c x7f or larger - */ - S3KeyPrefix?: String; - } - export interface EnableSnapshotCopyMessage { - /** - * The unique identifier of the source cluster to copy snapshots from. Constraints: Must be the valid name of an existing cluster that does not already have cross-region snapshot copy enabled. - */ - ClusterIdentifier: String; - /** - * The destination region that you want to copy snapshots to. Constraints: Must be the name of a valid region. For more information, see Regions and Endpoints in the Amazon Web Services General Reference. - */ - DestinationRegion: String; - /** - * The number of days to retain automated snapshots in the destination region after they are copied from the source region. Default: 7. Constraints: Must be at least 1 and no more than 35. - */ - RetentionPeriod?: IntegerOptional; - /** - * The name of the snapshot copy grant to use when snapshots of an AWS KMS-encrypted cluster are copied to the destination region. - */ - SnapshotCopyGrantName?: String; - } - export interface EnableSnapshotCopyResult { - Cluster?: Cluster; - } - export interface Endpoint { - /** - * The DNS address of the Cluster. - */ - Address?: String; - /** - * The port that the database engine is listening on. - */ - Port?: Integer; - } - export interface Event { - /** - * The identifier for the source of the event. - */ - SourceIdentifier?: String; - /** - * The source type for this event. - */ - SourceType?: SourceType; - /** - * The text of this event. - */ - Message?: String; - /** - * A list of the event categories. Values: Configuration, Management, Monitoring, Security - */ - EventCategories?: EventCategoriesList; - /** - * The severity of the event. Values: ERROR, INFO - */ - Severity?: String; - /** - * The date and time of the event. - */ - Date?: TStamp; - /** - * The identifier of the event. - */ - EventId?: String; - } - export type EventCategoriesList = String[]; - export interface EventCategoriesMap { - /** - * The source type, such as cluster or cluster-snapshot, that the returned categories belong to. - */ - SourceType?: String; - /** - * The events in the event category. - */ - Events?: EventInfoMapList; - } - export type EventCategoriesMapList = EventCategoriesMap[]; - export interface EventCategoriesMessage { - /** - * A list of event categories descriptions. - */ - EventCategoriesMapList?: EventCategoriesMapList; - } - export interface EventInfoMap { - /** - * The identifier of an Amazon Redshift event. - */ - EventId?: String; - /** - * The category of an Amazon Redshift event. - */ - EventCategories?: EventCategoriesList; - /** - * The description of an Amazon Redshift event. - */ - EventDescription?: String; - /** - * The severity of the event. Values: ERROR, INFO - */ - Severity?: String; - } - export type EventInfoMapList = EventInfoMap[]; - export type EventList = Event[]; - export interface EventSubscription { - /** - * The AWS customer account associated with the Amazon Redshift event notification subscription. - */ - CustomerAwsId?: String; - /** - * The name of the Amazon Redshift event notification subscription. - */ - CustSubscriptionId?: String; - /** - * The Amazon Resource Name (ARN) of the Amazon SNS topic used by the event notification subscription. - */ - SnsTopicArn?: String; - /** - * The status of the Amazon Redshift event notification subscription. Constraints: Can be one of the following: active | no-permission | topic-not-exist The status "no-permission" indicates that Amazon Redshift no longer has permission to post to the Amazon SNS topic. The status "topic-not-exist" indicates that the topic was deleted after the subscription was created. - */ - Status?: String; - /** - * The date and time the Amazon Redshift event notification subscription was created. - */ - SubscriptionCreationTime?: TStamp; - /** - * The source type of the events returned the Amazon Redshift event notification, such as cluster, or cluster-snapshot. - */ - SourceType?: String; - /** - * A list of the sources that publish events to the Amazon Redshift event notification subscription. - */ - SourceIdsList?: SourceIdsList; - /** - * The list of Amazon Redshift event categories specified in the event notification subscription. Values: Configuration, Management, Monitoring, Security - */ - EventCategoriesList?: EventCategoriesList; - /** - * The event severity specified in the Amazon Redshift event notification subscription. Values: ERROR, INFO - */ - Severity?: String; - /** - * A Boolean value indicating whether the subscription is enabled. true indicates the subscription is enabled. - */ - Enabled?: Boolean; - /** - * The list of tags for the event subscription. - */ - Tags?: TagList; - } - export type EventSubscriptionsList = EventSubscription[]; - export interface EventSubscriptionsMessage { - /** - * A value that indicates the starting point for the next set of response records in a subsequent request. If a value is returned in a response, you can retrieve the next set of records by providing this returned marker value in the Marker parameter and retrying the command. If the Marker field is empty, all response records have been retrieved for the request. - */ - Marker?: String; - /** - * A list of event subscriptions. - */ - EventSubscriptionsList?: EventSubscriptionsList; - } - export interface EventsMessage { - /** - * A value that indicates the starting point for the next set of response records in a subsequent request. If a value is returned in a response, you can retrieve the next set of records by providing this returned marker value in the Marker parameter and retrying the command. If the Marker field is empty, all response records have been retrieved for the request. - */ - Marker?: String; - /** - * A list of Event instances. - */ - Events?: EventList; - } - export interface GetClusterCredentialsMessage { - /** - * The name of a database user. If a user name matching DbUser exists in the database, the temporary user credentials have the same permissions as the existing user. If DbUser doesn't exist in the database and Autocreate is True, a new user is created using the value for DbUser with PUBLIC permissions. If a database user matching the value for DbUser doesn't exist and Autocreate is False, then the command succeeds but the connection attempt will fail because the user doesn't exist in the database. For more information, see CREATE USER in the Amazon Redshift Database Developer Guide. Constraints: Must be 1 to 64 alphanumeric characters or hyphens Must contain only lowercase letters, numbers, underscore, plus sign, period (dot), at symbol (@), or hyphen. First character must be a letter. Must not contain a colon ( : ) or slash ( / ). Cannot be a reserved word. A list of reserved words can be found in Reserved Words in the Amazon Redshift Database Developer Guide. - */ - DbUser: String; - /** - * The name of a database that DbUser is authorized to log on to. If DbName is not specified, DbUser can log on to any existing database. Constraints: Must be 1 to 64 alphanumeric characters or hyphens Must contain only lowercase letters, numbers, underscore, plus sign, period (dot), at symbol (@), or hyphen. First character must be a letter. Must not contain a colon ( : ) or slash ( / ). Cannot be a reserved word. A list of reserved words can be found in Reserved Words in the Amazon Redshift Database Developer Guide. - */ - DbName?: String; - /** - * The unique identifier of the cluster that contains the database for which your are requesting credentials. This parameter is case sensitive. - */ - ClusterIdentifier: String; - /** - * The number of seconds until the returned temporary password expires. Constraint: minimum 900, maximum 3600. Default: 900 - */ - DurationSeconds?: IntegerOptional; - /** - * Create a database user with the name specified for the user named in DbUser if one does not exist. - */ - AutoCreate?: BooleanOptional; - /** - * A list of the names of existing database groups that the user named in DbUser will join for the current session, in addition to any group memberships for an existing user. If not specified, a new user is added only to PUBLIC. Database group name constraints Must be 1 to 64 alphanumeric characters or hyphens Must contain only lowercase letters, numbers, underscore, plus sign, period (dot), at symbol (@), or hyphen. First character must be a letter. Must not contain a colon ( : ) or slash ( / ). Cannot be a reserved word. A list of reserved words can be found in Reserved Words in the Amazon Redshift Database Developer Guide. - */ - DbGroups?: DbGroupList; - } - export interface HsmClientCertificate { - /** - * The identifier of the HSM client certificate. - */ - HsmClientCertificateIdentifier?: String; - /** - * The public key that the Amazon Redshift cluster will use to connect to the HSM. You must register the public key in the HSM. - */ - HsmClientCertificatePublicKey?: String; - /** - * The list of tags for the HSM client certificate. - */ - Tags?: TagList; - } - export type HsmClientCertificateList = HsmClientCertificate[]; - export interface HsmClientCertificateMessage { - /** - * A value that indicates the starting point for the next set of response records in a subsequent request. If a value is returned in a response, you can retrieve the next set of records by providing this returned marker value in the Marker parameter and retrying the command. If the Marker field is empty, all response records have been retrieved for the request. - */ - Marker?: String; - /** - * A list of the identifiers for one or more HSM client certificates used by Amazon Redshift clusters to store and retrieve database encryption keys in an HSM. - */ - HsmClientCertificates?: HsmClientCertificateList; - } - export interface HsmConfiguration { - /** - * The name of the Amazon Redshift HSM configuration. - */ - HsmConfigurationIdentifier?: String; - /** - * A text description of the HSM configuration. - */ - Description?: String; - /** - * The IP address that the Amazon Redshift cluster must use to access the HSM. - */ - HsmIpAddress?: String; - /** - * The name of the partition in the HSM where the Amazon Redshift clusters will store their database encryption keys. - */ - HsmPartitionName?: String; - /** - * The list of tags for the HSM configuration. - */ - Tags?: TagList; - } - export type HsmConfigurationList = HsmConfiguration[]; - export interface HsmConfigurationMessage { - /** - * A value that indicates the starting point for the next set of response records in a subsequent request. If a value is returned in a response, you can retrieve the next set of records by providing this returned marker value in the Marker parameter and retrying the command. If the Marker field is empty, all response records have been retrieved for the request. - */ - Marker?: String; - /** - * A list of HsmConfiguration objects. - */ - HsmConfigurations?: HsmConfigurationList; - } - export interface HsmStatus { - /** - * Specifies the name of the HSM client certificate the Amazon Redshift cluster uses to retrieve the data encryption keys stored in an HSM. - */ - HsmClientCertificateIdentifier?: String; - /** - * Specifies the name of the HSM configuration that contains the information the Amazon Redshift cluster can use to retrieve and store keys in an HSM. - */ - HsmConfigurationIdentifier?: String; - /** - * Reports whether the Amazon Redshift cluster has finished applying any HSM settings changes specified in a modify cluster command. Values: active, applying - */ - Status?: String; - } - export interface IPRange { - /** - * The status of the IP range, for example, "authorized". - */ - Status?: String; - /** - * The IP range in Classless Inter-Domain Routing (CIDR) notation. - */ - CIDRIP?: String; - /** - * The list of tags for the IP range. - */ - Tags?: TagList; - } - export type IPRangeList = IPRange[]; - export type IamRoleArnList = String[]; - export type ImportTablesCompleted = String[]; - export type ImportTablesInProgress = String[]; - export type ImportTablesNotStarted = String[]; - export type Integer = number; - export type IntegerOptional = number; - export interface LoggingStatus { - /** - * true if logging is on, false if logging is off. - */ - LoggingEnabled?: Boolean; - /** - * The name of the S3 bucket where the log files are stored. - */ - BucketName?: String; - /** - * The prefix applied to the log file names. - */ - S3KeyPrefix?: String; - /** - * The last time that logs were delivered. - */ - LastSuccessfulDeliveryTime?: TStamp; - /** - * The last time when logs failed to be delivered. - */ - LastFailureTime?: TStamp; - /** - * The message indicating that logs failed to be delivered. - */ - LastFailureMessage?: String; - } - export type Long = number; - export type LongOptional = number; - export interface ModifyClusterIamRolesMessage { - /** - * The unique identifier of the cluster for which you want to associate or disassociate IAM roles. - */ - ClusterIdentifier: String; - /** - * Zero or more IAM roles to associate with the cluster. The roles must be in their Amazon Resource Name (ARN) format. You can associate up to 10 IAM roles with a single cluster in a single request. - */ - AddIamRoles?: IamRoleArnList; - /** - * Zero or more IAM roles in ARN format to disassociate from the cluster. You can disassociate up to 10 IAM roles from a single cluster in a single request. - */ - RemoveIamRoles?: IamRoleArnList; - } - export interface ModifyClusterIamRolesResult { - Cluster?: Cluster; - } - export interface ModifyClusterMessage { - /** - * The unique identifier of the cluster to be modified. Example: examplecluster - */ - ClusterIdentifier: String; - /** - * The new cluster type. When you submit your cluster resize request, your existing cluster goes into a read-only mode. After Amazon Redshift provisions a new cluster based on your resize requirements, there will be outage for a period while the old cluster is deleted and your connection is switched to the new cluster. You can use DescribeResize to track the progress of the resize request. Valid Values: multi-node | single-node - */ - ClusterType?: String; - /** - * The new node type of the cluster. If you specify a new node type, you must also specify the number of nodes parameter. When you submit your request to resize a cluster, Amazon Redshift sets access permissions for the cluster to read-only. After Amazon Redshift provisions a new cluster according to your resize requirements, there will be a temporary outage while the old cluster is deleted and your connection is switched to the new cluster. When the new connection is complete, the original access permissions for the cluster are restored. You can use DescribeResize to track the progress of the resize request. Valid Values: ds1.xlarge | ds1.8xlarge | ds2.xlarge | ds2.8xlarge | dc1.large | dc1.8xlarge. - */ - NodeType?: String; - /** - * The new number of nodes of the cluster. If you specify a new number of nodes, you must also specify the node type parameter. When you submit your request to resize a cluster, Amazon Redshift sets access permissions for the cluster to read-only. After Amazon Redshift provisions a new cluster according to your resize requirements, there will be a temporary outage while the old cluster is deleted and your connection is switched to the new cluster. When the new connection is complete, the original access permissions for the cluster are restored. You can use DescribeResize to track the progress of the resize request. Valid Values: Integer greater than 0. - */ - NumberOfNodes?: IntegerOptional; - /** - * A list of cluster security groups to be authorized on this cluster. This change is asynchronously applied as soon as possible. Security groups currently associated with the cluster, and not in the list of groups to apply, will be revoked from the cluster. Constraints: Must be 1 to 255 alphanumeric characters or hyphens First character must be a letter Cannot end with a hyphen or contain two consecutive hyphens - */ - ClusterSecurityGroups?: ClusterSecurityGroupNameList; - /** - * A list of virtual private cloud (VPC) security groups to be associated with the cluster. - */ - VpcSecurityGroupIds?: VpcSecurityGroupIdList; - /** - * The new password for the cluster master user. This change is asynchronously applied as soon as possible. Between the time of the request and the completion of the request, the MasterUserPassword element exists in the PendingModifiedValues element of the operation response. Operations never return the password, so this operation provides a way to regain access to the master user account for a cluster if the password is lost. Default: Uses existing setting. Constraints: Must be between 8 and 64 characters in length. Must contain at least one uppercase letter. Must contain at least one lowercase letter. Must contain one number. Can be any printable ASCII character (ASCII code 33 to 126) except ' (single quote), " (double quote), \, /, @, or space. - */ - MasterUserPassword?: String; - /** - * The name of the cluster parameter group to apply to this cluster. This change is applied only after the cluster is rebooted. To reboot a cluster use RebootCluster. Default: Uses existing setting. Constraints: The cluster parameter group must be in the same parameter group family that matches the cluster version. - */ - ClusterParameterGroupName?: String; - /** - * The number of days that automated snapshots are retained. If the value is 0, automated snapshots are disabled. Even if automated snapshots are disabled, you can still create manual snapshots when you want with CreateClusterSnapshot. If you decrease the automated snapshot retention period from its current value, existing automated snapshots that fall outside of the new retention period will be immediately deleted. Default: Uses existing setting. Constraints: Must be a value from 0 to 35. - */ - AutomatedSnapshotRetentionPeriod?: IntegerOptional; - /** - * The weekly time range (in UTC) during which system maintenance can occur, if necessary. If system maintenance is necessary during the window, it may result in an outage. This maintenance window change is made immediately. If the new maintenance window indicates the current time, there must be at least 120 minutes between the current time and end of the window in order to ensure that pending changes are applied. Default: Uses existing setting. Format: ddd:hh24:mi-ddd:hh24:mi, for example wed:07:30-wed:08:00. Valid Days: Mon | Tue | Wed | Thu | Fri | Sat | Sun Constraints: Must be at least 30 minutes. - */ - PreferredMaintenanceWindow?: String; - /** - * The new version number of the Amazon Redshift engine to upgrade to. For major version upgrades, if a non-default cluster parameter group is currently in use, a new cluster parameter group in the cluster parameter group family for the new version must be specified. The new cluster parameter group can be the default for that cluster parameter group family. For more information about parameters and parameter groups, go to Amazon Redshift Parameter Groups in the Amazon Redshift Cluster Management Guide. Example: 1.0 - */ - ClusterVersion?: String; - /** - * If true, major version upgrades will be applied automatically to the cluster during the maintenance window. Default: false - */ - AllowVersionUpgrade?: BooleanOptional; - /** - * Specifies the name of the HSM client certificate the Amazon Redshift cluster uses to retrieve the data encryption keys stored in an HSM. - */ - HsmClientCertificateIdentifier?: String; - /** - * Specifies the name of the HSM configuration that contains the information the Amazon Redshift cluster can use to retrieve and store keys in an HSM. - */ - HsmConfigurationIdentifier?: String; - /** - * The new identifier for the cluster. Constraints: Must contain from 1 to 63 alphanumeric characters or hyphens. Alphabetic characters must be lowercase. First character must be a letter. Cannot end with a hyphen or contain two consecutive hyphens. Must be unique for all clusters within an AWS account. Example: examplecluster - */ - NewClusterIdentifier?: String; - /** - * If true, the cluster can be accessed from a public network. Only clusters in VPCs can be set to be publicly available. - */ - PubliclyAccessible?: BooleanOptional; - /** - * The Elastic IP (EIP) address for the cluster. Constraints: The cluster must be provisioned in EC2-VPC and publicly-accessible through an Internet gateway. For more information about provisioning clusters in EC2-VPC, go to Supported Platforms to Launch Your Cluster in the Amazon Redshift Cluster Management Guide. - */ - ElasticIp?: String; - /** - * An option that specifies whether to create the cluster with enhanced VPC routing enabled. To create a cluster that uses enhanced VPC routing, the cluster must be in a VPC. For more information, see Enhanced VPC Routing in the Amazon Redshift Cluster Management Guide. If this option is true, enhanced VPC routing is enabled. Default: false - */ - EnhancedVpcRouting?: BooleanOptional; - } - export interface ModifyClusterParameterGroupMessage { - /** - * The name of the parameter group to be modified. - */ - ParameterGroupName: String; - /** - * An array of parameters to be modified. A maximum of 20 parameters can be modified in a single request. For each parameter to be modified, you must supply at least the parameter name and parameter value; other name-value pairs of the parameter are optional. For the workload management (WLM) configuration, you must supply all the name-value pairs in the wlm_json_configuration parameter. - */ - Parameters: ParametersList; - } - export interface ModifyClusterResult { - Cluster?: Cluster; - } - export interface ModifyClusterSubnetGroupMessage { - /** - * The name of the subnet group to be modified. - */ - ClusterSubnetGroupName: String; - /** - * A text description of the subnet group to be modified. - */ - Description?: String; - /** - * An array of VPC subnet IDs. A maximum of 20 subnets can be modified in a single request. - */ - SubnetIds: SubnetIdentifierList; - } - export interface ModifyClusterSubnetGroupResult { - ClusterSubnetGroup?: ClusterSubnetGroup; - } - export interface ModifyEventSubscriptionMessage { - /** - * The name of the modified Amazon Redshift event notification subscription. - */ - SubscriptionName: String; - /** - * The Amazon Resource Name (ARN) of the SNS topic to be used by the event notification subscription. - */ - SnsTopicArn?: String; - /** - * The type of source that will be generating the events. For example, if you want to be notified of events generated by a cluster, you would set this parameter to cluster. If this value is not specified, events are returned for all Amazon Redshift objects in your AWS account. You must specify a source type in order to specify source IDs. Valid values: cluster, cluster-parameter-group, cluster-security-group, and cluster-snapshot. - */ - SourceType?: String; - /** - * A list of one or more identifiers of Amazon Redshift source objects. All of the objects must be of the same type as was specified in the source type parameter. The event subscription will return only events generated by the specified objects. If not specified, then events are returned for all objects within the source type specified. Example: my-cluster-1, my-cluster-2 Example: my-snapshot-20131010 - */ - SourceIds?: SourceIdsList; - /** - * Specifies the Amazon Redshift event categories to be published by the event notification subscription. Values: Configuration, Management, Monitoring, Security - */ - EventCategories?: EventCategoriesList; - /** - * Specifies the Amazon Redshift event severity to be published by the event notification subscription. Values: ERROR, INFO - */ - Severity?: String; - /** - * A Boolean value indicating if the subscription is enabled. true indicates the subscription is enabled - */ - Enabled?: BooleanOptional; - } - export interface ModifyEventSubscriptionResult { - EventSubscription?: EventSubscription; - } - export interface ModifySnapshotCopyRetentionPeriodMessage { - /** - * The unique identifier of the cluster for which you want to change the retention period for automated snapshots that are copied to a destination region. Constraints: Must be the valid name of an existing cluster that has cross-region snapshot copy enabled. - */ - ClusterIdentifier: String; - /** - * The number of days to retain automated snapshots in the destination region after they are copied from the source region. If you decrease the retention period for automated snapshots that are copied to a destination region, Amazon Redshift will delete any existing automated snapshots that were copied to the destination region and that fall outside of the new retention period. Constraints: Must be at least 1 and no more than 35. - */ - RetentionPeriod: Integer; - } - export interface ModifySnapshotCopyRetentionPeriodResult { - Cluster?: Cluster; - } - export interface OrderableClusterOption { - /** - * The version of the orderable cluster. - */ - ClusterVersion?: String; - /** - * The cluster type, for example multi-node. - */ - ClusterType?: String; - /** - * The node type for the orderable cluster. - */ - NodeType?: String; - /** - * A list of availability zones for the orderable cluster. - */ - AvailabilityZones?: AvailabilityZoneList; - } - export type OrderableClusterOptionsList = OrderableClusterOption[]; - export interface OrderableClusterOptionsMessage { - /** - * An OrderableClusterOption structure containing information about orderable options for the cluster. - */ - OrderableClusterOptions?: OrderableClusterOptionsList; - /** - * A value that indicates the starting point for the next set of response records in a subsequent request. If a value is returned in a response, you can retrieve the next set of records by providing this returned marker value in the Marker parameter and retrying the command. If the Marker field is empty, all response records have been retrieved for the request. - */ - Marker?: String; - } - export interface Parameter { - /** - * The name of the parameter. - */ - ParameterName?: String; - /** - * The value of the parameter. - */ - ParameterValue?: String; - /** - * A description of the parameter. - */ - Description?: String; - /** - * The source of the parameter value, such as "engine-default" or "user". - */ - Source?: String; - /** - * The data type of the parameter. - */ - DataType?: String; - /** - * The valid range of values for the parameter. - */ - AllowedValues?: String; - /** - * Specifies how to apply the WLM configuration parameter. Some properties can be applied dynamically, while other properties require that any associated clusters be rebooted for the configuration changes to be applied. For more information about parameters and parameter groups, go to Amazon Redshift Parameter Groups in the Amazon Redshift Cluster Management Guide. - */ - ApplyType?: ParameterApplyType; - /** - * If true, the parameter can be modified. Some parameters have security or operational implications that prevent them from being changed. - */ - IsModifiable?: Boolean; - /** - * The earliest engine version to which the parameter can apply. - */ - MinimumEngineVersion?: String; - } - export type ParameterApplyType = "static"|"dynamic"|string; - export type ParameterGroupList = ClusterParameterGroup[]; - export type ParametersList = Parameter[]; - export interface PendingModifiedValues { - /** - * The pending or in-progress change of the master user password for the cluster. - */ - MasterUserPassword?: String; - /** - * The pending or in-progress change of the cluster's node type. - */ - NodeType?: String; - /** - * The pending or in-progress change of the number of nodes in the cluster. - */ - NumberOfNodes?: IntegerOptional; - /** - * The pending or in-progress change of the cluster type. - */ - ClusterType?: String; - /** - * The pending or in-progress change of the service version. - */ - ClusterVersion?: String; - /** - * The pending or in-progress change of the automated snapshot retention period. - */ - AutomatedSnapshotRetentionPeriod?: IntegerOptional; - /** - * The pending or in-progress change of the new identifier for the cluster. - */ - ClusterIdentifier?: String; - /** - * The pending or in-progress change of the ability to connect to the cluster from the public network. - */ - PubliclyAccessible?: BooleanOptional; - /** - * An option that specifies whether to create the cluster with enhanced VPC routing enabled. To create a cluster that uses enhanced VPC routing, the cluster must be in a VPC. For more information, see Enhanced VPC Routing in the Amazon Redshift Cluster Management Guide. If this option is true, enhanced VPC routing is enabled. Default: false - */ - EnhancedVpcRouting?: BooleanOptional; - } - export interface PurchaseReservedNodeOfferingMessage { - /** - * The unique identifier of the reserved node offering you want to purchase. - */ - ReservedNodeOfferingId: String; - /** - * The number of reserved nodes that you want to purchase. Default: 1 - */ - NodeCount?: IntegerOptional; - } - export interface PurchaseReservedNodeOfferingResult { - ReservedNode?: ReservedNode; - } - export interface RebootClusterMessage { - /** - * The cluster identifier. - */ - ClusterIdentifier: String; - } - export interface RebootClusterResult { - Cluster?: Cluster; - } - export interface RecurringCharge { - /** - * The amount charged per the period of time specified by the recurring charge frequency. - */ - RecurringChargeAmount?: Double; - /** - * The frequency at which the recurring charge amount is applied. - */ - RecurringChargeFrequency?: String; - } - export type RecurringChargeList = RecurringCharge[]; - export interface ReservedNode { - /** - * The unique identifier for the reservation. - */ - ReservedNodeId?: String; - /** - * The identifier for the reserved node offering. - */ - ReservedNodeOfferingId?: String; - /** - * The node type of the reserved node. - */ - NodeType?: String; - /** - * The time the reservation started. You purchase a reserved node offering for a duration. This is the start time of that duration. - */ - StartTime?: TStamp; - /** - * The duration of the node reservation in seconds. - */ - Duration?: Integer; - /** - * The fixed cost Amazon Redshift charges you for this reserved node. - */ - FixedPrice?: Double; - /** - * The hourly rate Amazon Redshift charges you for this reserved node. - */ - UsagePrice?: Double; - /** - * The currency code for the reserved cluster. - */ - CurrencyCode?: String; - /** - * The number of reserved compute nodes. - */ - NodeCount?: Integer; - /** - * The state of the reserved compute node. Possible Values: pending-payment-This reserved node has recently been purchased, and the sale has been approved, but payment has not yet been confirmed. active-This reserved node is owned by the caller and is available for use. payment-failed-Payment failed for the purchase attempt. - */ - State?: String; - /** - * The anticipated utilization of the reserved node, as defined in the reserved node offering. - */ - OfferingType?: String; - /** - * The recurring charges for the reserved node. - */ - RecurringCharges?: RecurringChargeList; - } - export type ReservedNodeList = ReservedNode[]; - export interface ReservedNodeOffering { - /** - * The offering identifier. - */ - ReservedNodeOfferingId?: String; - /** - * The node type offered by the reserved node offering. - */ - NodeType?: String; - /** - * The duration, in seconds, for which the offering will reserve the node. - */ - Duration?: Integer; - /** - * The upfront fixed charge you will pay to purchase the specific reserved node offering. - */ - FixedPrice?: Double; - /** - * The rate you are charged for each hour the cluster that is using the offering is running. - */ - UsagePrice?: Double; - /** - * The currency code for the compute nodes offering. - */ - CurrencyCode?: String; - /** - * The anticipated utilization of the reserved node, as defined in the reserved node offering. - */ - OfferingType?: String; - /** - * The charge to your account regardless of whether you are creating any clusters using the node offering. Recurring charges are only in effect for heavy-utilization reserved nodes. - */ - RecurringCharges?: RecurringChargeList; - } - export type ReservedNodeOfferingList = ReservedNodeOffering[]; - export interface ReservedNodeOfferingsMessage { - /** - * A value that indicates the starting point for the next set of response records in a subsequent request. If a value is returned in a response, you can retrieve the next set of records by providing this returned marker value in the Marker parameter and retrying the command. If the Marker field is empty, all response records have been retrieved for the request. - */ - Marker?: String; - /** - * A list of ReservedNodeOffering objects. - */ - ReservedNodeOfferings?: ReservedNodeOfferingList; - } - export interface ReservedNodesMessage { - /** - * A value that indicates the starting point for the next set of response records in a subsequent request. If a value is returned in a response, you can retrieve the next set of records by providing this returned marker value in the Marker parameter and retrying the command. If the Marker field is empty, all response records have been retrieved for the request. - */ - Marker?: String; - /** - * The list of ReservedNode objects. - */ - ReservedNodes?: ReservedNodeList; - } - export interface ResetClusterParameterGroupMessage { - /** - * The name of the cluster parameter group to be reset. - */ - ParameterGroupName: String; - /** - * If true, all parameters in the specified parameter group will be reset to their default values. Default: true - */ - ResetAllParameters?: Boolean; - /** - * An array of names of parameters to be reset. If ResetAllParameters option is not used, then at least one parameter name must be supplied. Constraints: A maximum of 20 parameters can be reset in a single request. - */ - Parameters?: ParametersList; - } - export interface ResizeProgressMessage { - /** - * The node type that the cluster will have after the resize operation is complete. - */ - TargetNodeType?: String; - /** - * The number of nodes that the cluster will have after the resize operation is complete. - */ - TargetNumberOfNodes?: IntegerOptional; - /** - * The cluster type after the resize operation is complete. Valid Values: multi-node | single-node - */ - TargetClusterType?: String; - /** - * The status of the resize operation. Valid Values: NONE | IN_PROGRESS | FAILED | SUCCEEDED - */ - Status?: String; - /** - * The names of tables that have been completely imported . Valid Values: List of table names. - */ - ImportTablesCompleted?: ImportTablesCompleted; - /** - * The names of tables that are being currently imported. Valid Values: List of table names. - */ - ImportTablesInProgress?: ImportTablesInProgress; - /** - * The names of tables that have not been yet imported. Valid Values: List of table names - */ - ImportTablesNotStarted?: ImportTablesNotStarted; - /** - * The average rate of the resize operation over the last few minutes, measured in megabytes per second. After the resize operation completes, this value shows the average rate of the entire resize operation. - */ - AvgResizeRateInMegaBytesPerSecond?: DoubleOptional; - /** - * The estimated total amount of data, in megabytes, on the cluster before the resize operation began. - */ - TotalResizeDataInMegaBytes?: LongOptional; - /** - * While the resize operation is in progress, this value shows the current amount of data, in megabytes, that has been processed so far. When the resize operation is complete, this value shows the total amount of data, in megabytes, on the cluster, which may be more or less than TotalResizeDataInMegaBytes (the estimated total amount of data before resize). - */ - ProgressInMegaBytes?: LongOptional; - /** - * The amount of seconds that have elapsed since the resize operation began. After the resize operation completes, this value shows the total actual time, in seconds, for the resize operation. - */ - ElapsedTimeInSeconds?: LongOptional; - /** - * The estimated time remaining, in seconds, until the resize operation is complete. This value is calculated based on the average resize rate and the estimated amount of data remaining to be processed. Once the resize operation is complete, this value will be 0. - */ - EstimatedTimeToCompletionInSeconds?: LongOptional; - } - export type RestorableNodeTypeList = String[]; - export interface RestoreFromClusterSnapshotMessage { - /** - * The identifier of the cluster that will be created from restoring the snapshot. Constraints: Must contain from 1 to 63 alphanumeric characters or hyphens. Alphabetic characters must be lowercase. First character must be a letter. Cannot end with a hyphen or contain two consecutive hyphens. Must be unique for all clusters within an AWS account. - */ - ClusterIdentifier: String; - /** - * The name of the snapshot from which to create the new cluster. This parameter isn't case sensitive. Example: my-snapshot-id - */ - SnapshotIdentifier: String; - /** - * The name of the cluster the source snapshot was created from. This parameter is required if your IAM user has a policy containing a snapshot resource element that specifies anything other than * for the cluster name. - */ - SnapshotClusterIdentifier?: String; - /** - * The port number on which the cluster accepts connections. Default: The same port as the original cluster. Constraints: Must be between 1115 and 65535. - */ - Port?: IntegerOptional; - /** - * The Amazon EC2 Availability Zone in which to restore the cluster. Default: A random, system-chosen Availability Zone. Example: us-east-1a - */ - AvailabilityZone?: String; - /** - * If true, major version upgrades can be applied during the maintenance window to the Amazon Redshift engine that is running on the cluster. Default: true - */ - AllowVersionUpgrade?: BooleanOptional; - /** - * The name of the subnet group where you want to cluster restored. A snapshot of cluster in VPC can be restored only in VPC. Therefore, you must provide subnet group name where you want the cluster restored. - */ - ClusterSubnetGroupName?: String; - /** - * If true, the cluster can be accessed from a public network. - */ - PubliclyAccessible?: BooleanOptional; - /** - * The AWS customer account used to create or copy the snapshot. Required if you are restoring a snapshot you do not own, optional if you own the snapshot. - */ - OwnerAccount?: String; - /** - * Specifies the name of the HSM client certificate the Amazon Redshift cluster uses to retrieve the data encryption keys stored in an HSM. - */ - HsmClientCertificateIdentifier?: String; - /** - * Specifies the name of the HSM configuration that contains the information the Amazon Redshift cluster can use to retrieve and store keys in an HSM. - */ - HsmConfigurationIdentifier?: String; - /** - * The elastic IP (EIP) address for the cluster. - */ - ElasticIp?: String; - /** - * The name of the parameter group to be associated with this cluster. Default: The default Amazon Redshift cluster parameter group. For information about the default parameter group, go to Working with Amazon Redshift Parameter Groups. Constraints: Must be 1 to 255 alphanumeric characters or hyphens. First character must be a letter. Cannot end with a hyphen or contain two consecutive hyphens. - */ - ClusterParameterGroupName?: String; - /** - * A list of security groups to be associated with this cluster. Default: The default cluster security group for Amazon Redshift. Cluster security groups only apply to clusters outside of VPCs. - */ - ClusterSecurityGroups?: ClusterSecurityGroupNameList; - /** - * A list of Virtual Private Cloud (VPC) security groups to be associated with the cluster. Default: The default VPC security group is associated with the cluster. VPC security groups only apply to clusters in VPCs. - */ - VpcSecurityGroupIds?: VpcSecurityGroupIdList; - /** - * The weekly time range (in UTC) during which automated cluster maintenance can occur. Format: ddd:hh24:mi-ddd:hh24:mi Default: The value selected for the cluster from which the snapshot was taken. For more information about the time blocks for each region, see Maintenance Windows in Amazon Redshift Cluster Management Guide. Valid Days: Mon | Tue | Wed | Thu | Fri | Sat | Sun Constraints: Minimum 30-minute window. - */ - PreferredMaintenanceWindow?: String; - /** - * The number of days that automated snapshots are retained. If the value is 0, automated snapshots are disabled. Even if automated snapshots are disabled, you can still create manual snapshots when you want with CreateClusterSnapshot. Default: The value selected for the cluster from which the snapshot was taken. Constraints: Must be a value from 0 to 35. - */ - AutomatedSnapshotRetentionPeriod?: IntegerOptional; - /** - * The AWS Key Management Service (KMS) key ID of the encryption key that you want to use to encrypt data in the cluster that you restore from a shared snapshot. - */ - KmsKeyId?: String; - /** - * The node type that the restored cluster will be provisioned with. Default: The node type of the cluster from which the snapshot was taken. You can modify this if you are using any DS node type. In that case, you can choose to restore into another DS node type of the same size. For example, you can restore ds1.8xlarge into ds2.8xlarge, or ds2.xlarge into ds1.xlarge. If you have a DC instance type, you must restore into that same instance type and size. In other words, you can only restore a dc1.large instance type into another dc1.large instance type. For more information about node types, see About Clusters and Nodes in the Amazon Redshift Cluster Management Guide - */ - NodeType?: String; - /** - * An option that specifies whether to create the cluster with enhanced VPC routing enabled. To create a cluster that uses enhanced VPC routing, the cluster must be in a VPC. For more information, see Enhanced VPC Routing in the Amazon Redshift Cluster Management Guide. If this option is true, enhanced VPC routing is enabled. Default: false - */ - EnhancedVpcRouting?: BooleanOptional; - /** - * Reserved. - */ - AdditionalInfo?: String; - /** - * A list of AWS Identity and Access Management (IAM) roles that can be used by the cluster to access other AWS services. You must supply the IAM roles in their Amazon Resource Name (ARN) format. You can supply up to 10 IAM roles in a single request. A cluster can have up to 10 IAM roles associated at any time. - */ - IamRoles?: IamRoleArnList; - } - export interface RestoreFromClusterSnapshotResult { - Cluster?: Cluster; - } - export interface RestoreStatus { - /** - * The status of the restore action. Returns starting, restoring, completed, or failed. - */ - Status?: String; - /** - * The number of megabytes per second being transferred from the backup storage. Returns the average rate for a completed backup. - */ - CurrentRestoreRateInMegaBytesPerSecond?: Double; - /** - * The size of the set of snapshot data used to restore the cluster. - */ - SnapshotSizeInMegaBytes?: Long; - /** - * The number of megabytes that have been transferred from snapshot storage. - */ - ProgressInMegaBytes?: Long; - /** - * The amount of time an in-progress restore has been running, or the amount of time it took a completed restore to finish. - */ - ElapsedTimeInSeconds?: Long; - /** - * The estimate of the time remaining before the restore will complete. Returns 0 for a completed restore. - */ - EstimatedTimeToCompletionInSeconds?: Long; - } - export interface RestoreTableFromClusterSnapshotMessage { - /** - * The identifier of the Amazon Redshift cluster to restore the table to. - */ - ClusterIdentifier: String; - /** - * The identifier of the snapshot to restore the table from. This snapshot must have been created from the Amazon Redshift cluster specified by the ClusterIdentifier parameter. - */ - SnapshotIdentifier: String; - /** - * The name of the source database that contains the table to restore from. - */ - SourceDatabaseName: String; - /** - * The name of the source schema that contains the table to restore from. If you do not specify a SourceSchemaName value, the default is public. - */ - SourceSchemaName?: String; - /** - * The name of the source table to restore from. - */ - SourceTableName: String; - /** - * The name of the database to restore the table to. - */ - TargetDatabaseName?: String; - /** - * The name of the schema to restore the table to. - */ - TargetSchemaName?: String; - /** - * The name of the table to create as a result of the current request. - */ - NewTableName: String; - } - export interface RestoreTableFromClusterSnapshotResult { - TableRestoreStatus?: TableRestoreStatus; - } - export interface RevokeClusterSecurityGroupIngressMessage { - /** - * The name of the security Group from which to revoke the ingress rule. - */ - ClusterSecurityGroupName: String; - /** - * The IP range for which to revoke access. This range must be a valid Classless Inter-Domain Routing (CIDR) block of IP addresses. If CIDRIP is specified, EC2SecurityGroupName and EC2SecurityGroupOwnerId cannot be provided. - */ - CIDRIP?: String; - /** - * The name of the EC2 Security Group whose access is to be revoked. If EC2SecurityGroupName is specified, EC2SecurityGroupOwnerId must also be provided and CIDRIP cannot be provided. - */ - EC2SecurityGroupName?: String; - /** - * The AWS account number of the owner of the security group specified in the EC2SecurityGroupName parameter. The AWS access key ID is not an acceptable value. If EC2SecurityGroupOwnerId is specified, EC2SecurityGroupName must also be provided. and CIDRIP cannot be provided. Example: 111122223333 - */ - EC2SecurityGroupOwnerId?: String; - } - export interface RevokeClusterSecurityGroupIngressResult { - ClusterSecurityGroup?: ClusterSecurityGroup; - } - export interface RevokeSnapshotAccessMessage { - /** - * The identifier of the snapshot that the account can no longer access. - */ - SnapshotIdentifier: String; - /** - * The identifier of the cluster the snapshot was created from. This parameter is required if your IAM user has a policy containing a snapshot resource element that specifies anything other than * for the cluster name. - */ - SnapshotClusterIdentifier?: String; - /** - * The identifier of the AWS customer account that can no longer restore the specified snapshot. - */ - AccountWithRestoreAccess: String; - } - export interface RevokeSnapshotAccessResult { - Snapshot?: Snapshot; - } - export interface RotateEncryptionKeyMessage { - /** - * The unique identifier of the cluster that you want to rotate the encryption keys for. Constraints: Must be the name of valid cluster that has encryption enabled. - */ - ClusterIdentifier: String; - } - export interface RotateEncryptionKeyResult { - Cluster?: Cluster; - } - export type SensitiveString = string; - export interface Snapshot { - /** - * The snapshot identifier that is provided in the request. - */ - SnapshotIdentifier?: String; - /** - * The identifier of the cluster for which the snapshot was taken. - */ - ClusterIdentifier?: String; - /** - * The time (UTC) when Amazon Redshift began the snapshot. A snapshot contains a copy of the cluster data as of this exact time. - */ - SnapshotCreateTime?: TStamp; - /** - * The snapshot status. The value of the status depends on the API operation used. CreateClusterSnapshot and CopyClusterSnapshot returns status as "creating". DescribeClusterSnapshots returns status as "creating", "available", "final snapshot", or "failed". DeleteClusterSnapshot returns status as "deleted". - */ - Status?: String; - /** - * The port that the cluster is listening on. - */ - Port?: Integer; - /** - * The Availability Zone in which the cluster was created. - */ - AvailabilityZone?: String; - /** - * The time (UTC) when the cluster was originally created. - */ - ClusterCreateTime?: TStamp; - /** - * The master user name for the cluster. - */ - MasterUsername?: String; - /** - * The version ID of the Amazon Redshift engine that is running on the cluster. - */ - ClusterVersion?: String; - /** - * The snapshot type. Snapshots created using CreateClusterSnapshot and CopyClusterSnapshot will be of type "manual". - */ - SnapshotType?: String; - /** - * The node type of the nodes in the cluster. - */ - NodeType?: String; - /** - * The number of nodes in the cluster. - */ - NumberOfNodes?: Integer; - /** - * The name of the database that was created when the cluster was created. - */ - DBName?: String; - /** - * The VPC identifier of the cluster if the snapshot is from a cluster in a VPC. Otherwise, this field is not in the output. - */ - VpcId?: String; - /** - * If true, the data in the snapshot is encrypted at rest. - */ - Encrypted?: Boolean; - /** - * The AWS Key Management Service (KMS) key ID of the encryption key that was used to encrypt data in the cluster from which the snapshot was taken. - */ - KmsKeyId?: String; - /** - * A boolean that indicates whether the snapshot data is encrypted using the HSM keys of the source cluster. true indicates that the data is encrypted using HSM keys. - */ - EncryptedWithHSM?: Boolean; - /** - * A list of the AWS customer accounts authorized to restore the snapshot. Returns null if no accounts are authorized. Visible only to the snapshot owner. - */ - AccountsWithRestoreAccess?: AccountsWithRestoreAccessList; - /** - * For manual snapshots, the AWS customer account used to create or copy the snapshot. For automatic snapshots, the owner of the cluster. The owner can perform all snapshot actions, such as sharing a manual snapshot. - */ - OwnerAccount?: String; - /** - * The size of the complete set of backup data that would be used to restore the cluster. - */ - TotalBackupSizeInMegaBytes?: Double; - /** - * The size of the incremental backup. - */ - ActualIncrementalBackupSizeInMegaBytes?: Double; - /** - * The number of megabytes that have been transferred to the snapshot backup. - */ - BackupProgressInMegaBytes?: Double; - /** - * The number of megabytes per second being transferred to the snapshot backup. Returns 0 for a completed backup. - */ - CurrentBackupRateInMegaBytesPerSecond?: Double; - /** - * The estimate of the time remaining before the snapshot backup will complete. Returns 0 for a completed backup. - */ - EstimatedSecondsToCompletion?: Long; - /** - * The amount of time an in-progress snapshot backup has been running, or the amount of time it took a completed backup to finish. - */ - ElapsedTimeInSeconds?: Long; - /** - * The source region from which the snapshot was copied. - */ - SourceRegion?: String; - /** - * The list of tags for the cluster snapshot. - */ - Tags?: TagList; - /** - * The list of node types that this cluster snapshot is able to restore into. - */ - RestorableNodeTypes?: RestorableNodeTypeList; - /** - * An option that specifies whether to create the cluster with enhanced VPC routing enabled. To create a cluster that uses enhanced VPC routing, the cluster must be in a VPC. For more information, see Enhanced VPC Routing in the Amazon Redshift Cluster Management Guide. If this option is true, enhanced VPC routing is enabled. Default: false - */ - EnhancedVpcRouting?: Boolean; - } - export interface SnapshotCopyGrant { - /** - * The name of the snapshot copy grant. - */ - SnapshotCopyGrantName?: String; - /** - * The unique identifier of the customer master key (CMK) in AWS KMS to which Amazon Redshift is granted permission. - */ - KmsKeyId?: String; - /** - * A list of tag instances. - */ - Tags?: TagList; - } - export type SnapshotCopyGrantList = SnapshotCopyGrant[]; - export interface SnapshotCopyGrantMessage { - /** - * An optional parameter that specifies the starting point to return a set of response records. When the results of a DescribeSnapshotCopyGrant request exceed the value specified in MaxRecords, AWS returns a value in the Marker field of the response. You can retrieve the next set of response records by providing the returned marker value in the Marker parameter and retrying the request. Constraints: You can specify either the SnapshotCopyGrantName parameter or the Marker parameter, but not both. - */ - Marker?: String; - /** - * The list of SnapshotCopyGrant objects. - */ - SnapshotCopyGrants?: SnapshotCopyGrantList; - } - export type SnapshotList = Snapshot[]; - export interface SnapshotMessage { - /** - * A value that indicates the starting point for the next set of response records in a subsequent request. If a value is returned in a response, you can retrieve the next set of records by providing this returned marker value in the Marker parameter and retrying the command. If the Marker field is empty, all response records have been retrieved for the request. - */ - Marker?: String; - /** - * A list of Snapshot instances. - */ - Snapshots?: SnapshotList; - } - export type SourceIdsList = String[]; - export type SourceType = "cluster"|"cluster-parameter-group"|"cluster-security-group"|"cluster-snapshot"|string; - export type String = string; - export interface Subnet { - /** - * The identifier of the subnet. - */ - SubnetIdentifier?: String; - SubnetAvailabilityZone?: AvailabilityZone; - /** - * The status of the subnet. - */ - SubnetStatus?: String; - } - export type SubnetIdentifierList = String[]; - export type SubnetList = Subnet[]; - export type TStamp = Date; - export interface TableRestoreStatus { - /** - * The unique identifier for the table restore request. - */ - TableRestoreRequestId?: String; - /** - * A value that describes the current state of the table restore request. Valid Values: SUCCEEDED, FAILED, CANCELED, PENDING, IN_PROGRESS - */ - Status?: TableRestoreStatusType; - /** - * A description of the status of the table restore request. Status values include SUCCEEDED, FAILED, CANCELED, PENDING, IN_PROGRESS. - */ - Message?: String; - /** - * The time that the table restore request was made, in Universal Coordinated Time (UTC). - */ - RequestTime?: TStamp; - /** - * The amount of data restored to the new table so far, in megabytes (MB). - */ - ProgressInMegaBytes?: LongOptional; - /** - * The total amount of data to restore to the new table, in megabytes (MB). - */ - TotalDataInMegaBytes?: LongOptional; - /** - * The identifier of the Amazon Redshift cluster that the table is being restored to. - */ - ClusterIdentifier?: String; - /** - * The identifier of the snapshot that the table is being restored from. - */ - SnapshotIdentifier?: String; - /** - * The name of the source database that contains the table being restored. - */ - SourceDatabaseName?: String; - /** - * The name of the source schema that contains the table being restored. - */ - SourceSchemaName?: String; - /** - * The name of the source table being restored. - */ - SourceTableName?: String; - /** - * The name of the database to restore the table to. - */ - TargetDatabaseName?: String; - /** - * The name of the schema to restore the table to. - */ - TargetSchemaName?: String; - /** - * The name of the table to create as a result of the table restore request. - */ - NewTableName?: String; - } - export type TableRestoreStatusList = TableRestoreStatus[]; - export interface TableRestoreStatusMessage { - /** - * A list of status details for one or more table restore requests. - */ - TableRestoreStatusDetails?: TableRestoreStatusList; - /** - * A pagination token that can be used in a subsequent DescribeTableRestoreStatus request. - */ - Marker?: String; - } - export type TableRestoreStatusType = "PENDING"|"IN_PROGRESS"|"SUCCEEDED"|"FAILED"|"CANCELED"|string; - export interface Tag { - /** - * The key, or name, for the resource tag. - */ - Key?: String; - /** - * The value for the resource tag. - */ - Value?: String; - } - export type TagKeyList = String[]; - export type TagList = Tag[]; - export type TagValueList = String[]; - export interface TaggedResource { - /** - * The tag for the resource. - */ - Tag?: Tag; - /** - * The Amazon Resource Name (ARN) with which the tag is associated. For example, arn:aws:redshift:us-east-1:123456789:cluster:t1. - */ - ResourceName?: String; - /** - * The type of resource with which the tag is associated. Valid resource types are: Cluster CIDR/IP EC2 security group Snapshot Cluster security group Subnet group HSM connection HSM certificate Parameter group For more information about Amazon Redshift resource types and constructing ARNs, go to Constructing an Amazon Redshift Amazon Resource Name (ARN) in the Amazon Redshift Cluster Management Guide. - */ - ResourceType?: String; - } - export type TaggedResourceList = TaggedResource[]; - export interface TaggedResourceListMessage { - /** - * A list of tags with their associated resources. - */ - TaggedResources?: TaggedResourceList; - /** - * A value that indicates the starting point for the next set of response records in a subsequent request. If a value is returned in a response, you can retrieve the next set of records by providing this returned marker value in the Marker parameter and retrying the command. If the Marker field is empty, all response records have been retrieved for the request. - */ - Marker?: String; - } - export type VpcSecurityGroupIdList = String[]; - export interface VpcSecurityGroupMembership { - /** - * The identifier of the VPC security group. - */ - VpcSecurityGroupId?: String; - /** - * The status of the VPC security group. - */ - Status?: String; - } - export type VpcSecurityGroupMembershipList = VpcSecurityGroupMembership[]; - /** - * A string in YYYY-MM-DD format that represents the latest possible API version that can be used in this service. Specify 'latest' to use the latest possible version. - */ - export type apiVersion = "2012-12-01"|"latest"|string; - export interface ClientApiVersions { - /** - * A string in YYYY-MM-DD format that represents the latest possible API version that can be used in this service. Specify 'latest' to use the latest possible version. - */ - apiVersion?: apiVersion; - } - export type ClientConfiguration = ServiceConfigurationOptions & ClientApiVersions; - /** - * Contains interfaces for use with the Redshift client. - */ - export import Types = Redshift; -} -export = Redshift; diff --git a/workshops/monte-carlo-on-ec2-spot-fleet/src/web/node_modules/aws-sdk/clients/redshift.js b/workshops/monte-carlo-on-ec2-spot-fleet/src/web/node_modules/aws-sdk/clients/redshift.js deleted file mode 100644 index f26f394f..00000000 --- a/workshops/monte-carlo-on-ec2-spot-fleet/src/web/node_modules/aws-sdk/clients/redshift.js +++ /dev/null @@ -1,19 +0,0 @@ -require('../lib/node_loader'); -var AWS = require('../lib/core'); -var Service = AWS.Service; -var apiLoader = AWS.apiLoader; - -apiLoader.services['redshift'] = {}; -AWS.Redshift = Service.defineService('redshift', ['2012-12-01']); -Object.defineProperty(apiLoader.services['redshift'], '2012-12-01', { - get: function get() { - var model = require('../apis/redshift-2012-12-01.min.json'); - model.paginators = require('../apis/redshift-2012-12-01.paginators.json').pagination; - model.waiters = require('../apis/redshift-2012-12-01.waiters2.json').waiters; - return model; - }, - enumerable: true, - configurable: true -}); - -module.exports = AWS.Redshift; diff --git a/workshops/monte-carlo-on-ec2-spot-fleet/src/web/node_modules/aws-sdk/clients/rekognition.d.ts b/workshops/monte-carlo-on-ec2-spot-fleet/src/web/node_modules/aws-sdk/clients/rekognition.d.ts deleted file mode 100644 index 068b7c01..00000000 --- a/workshops/monte-carlo-on-ec2-spot-fleet/src/web/node_modules/aws-sdk/clients/rekognition.d.ts +++ /dev/null @@ -1,864 +0,0 @@ -import {Request} from '../lib/request'; -import {Response} from '../lib/response'; -import {AWSError} from '../lib/error'; -import {Service} from '../lib/service'; -import {ServiceConfigurationOptions} from '../lib/service'; -import {ConfigBase as Config} from '../lib/config'; -interface Blob {} -declare class Rekognition extends Service { - /** - * Constructs a service object. This object has one method for each API operation. - */ - constructor(options?: Rekognition.Types.ClientConfiguration) - config: Config & Rekognition.Types.ClientConfiguration; - /** - * Compares a face in the source input image with each face detected in the target input image. If the source image contains multiple faces, the service detects the largest face and compares it with each face detected in the target image. In response, the operation returns an array of face matches ordered by similarity score in descending order. For each face match, the response provides a bounding box of the face, facial landmarks, pose details (pitch, role, and yaw), quality (brightness and sharpness), and confidence value (indicating the level of confidence that the bounding box contains a face). The response also provides a similarity score, which indicates how closely the faces match. By default, only faces with a similarity score of greater than or equal to 80% are returned in the response. You can change this value by specifying the SimilarityThreshold parameter. CompareFaces also returns an array of faces that don't match the source image. For each face, it returns a bounding box, confidence value, landmarks, pose details, and quality. The response also returns information about the face in the source image, including the bounding box of the face and confidence value. If the image doesn't contain Exif metadata, CompareFaces returns orientation information for the source and target images. Use these values to display the images with the correct image orientation. This is a stateless API operation. That is, data returned by this operation doesn't persist. For an example, see get-started-exercise-compare-faces. This operation requires permissions to perform the rekognition:CompareFaces action. - */ - compareFaces(params: Rekognition.Types.CompareFacesRequest, callback?: (err: AWSError, data: Rekognition.Types.CompareFacesResponse) => void): Request; - /** - * Compares a face in the source input image with each face detected in the target input image. If the source image contains multiple faces, the service detects the largest face and compares it with each face detected in the target image. In response, the operation returns an array of face matches ordered by similarity score in descending order. For each face match, the response provides a bounding box of the face, facial landmarks, pose details (pitch, role, and yaw), quality (brightness and sharpness), and confidence value (indicating the level of confidence that the bounding box contains a face). The response also provides a similarity score, which indicates how closely the faces match. By default, only faces with a similarity score of greater than or equal to 80% are returned in the response. You can change this value by specifying the SimilarityThreshold parameter. CompareFaces also returns an array of faces that don't match the source image. For each face, it returns a bounding box, confidence value, landmarks, pose details, and quality. The response also returns information about the face in the source image, including the bounding box of the face and confidence value. If the image doesn't contain Exif metadata, CompareFaces returns orientation information for the source and target images. Use these values to display the images with the correct image orientation. This is a stateless API operation. That is, data returned by this operation doesn't persist. For an example, see get-started-exercise-compare-faces. This operation requires permissions to perform the rekognition:CompareFaces action. - */ - compareFaces(callback?: (err: AWSError, data: Rekognition.Types.CompareFacesResponse) => void): Request; - /** - * Creates a collection in an AWS Region. You can add faces to the collection using the operation. For example, you might create collections, one for each of your application users. A user can then index faces using the IndexFaces operation and persist results in a specific collection. Then, a user can search the collection for faces in the user-specific container. Collection names are case-sensitive. For an example, see example1. This operation requires permissions to perform the rekognition:CreateCollection action. - */ - createCollection(params: Rekognition.Types.CreateCollectionRequest, callback?: (err: AWSError, data: Rekognition.Types.CreateCollectionResponse) => void): Request; - /** - * Creates a collection in an AWS Region. You can add faces to the collection using the operation. For example, you might create collections, one for each of your application users. A user can then index faces using the IndexFaces operation and persist results in a specific collection. Then, a user can search the collection for faces in the user-specific container. Collection names are case-sensitive. For an example, see example1. This operation requires permissions to perform the rekognition:CreateCollection action. - */ - createCollection(callback?: (err: AWSError, data: Rekognition.Types.CreateCollectionResponse) => void): Request; - /** - * Deletes the specified collection. Note that this operation removes all faces in the collection. For an example, see example1. This operation requires permissions to perform the rekognition:DeleteCollection action. - */ - deleteCollection(params: Rekognition.Types.DeleteCollectionRequest, callback?: (err: AWSError, data: Rekognition.Types.DeleteCollectionResponse) => void): Request; - /** - * Deletes the specified collection. Note that this operation removes all faces in the collection. For an example, see example1. This operation requires permissions to perform the rekognition:DeleteCollection action. - */ - deleteCollection(callback?: (err: AWSError, data: Rekognition.Types.DeleteCollectionResponse) => void): Request; - /** - * Deletes faces from a collection. You specify a collection ID and an array of face IDs to remove from the collection. This operation requires permissions to perform the rekognition:DeleteFaces action. - */ - deleteFaces(params: Rekognition.Types.DeleteFacesRequest, callback?: (err: AWSError, data: Rekognition.Types.DeleteFacesResponse) => void): Request; - /** - * Deletes faces from a collection. You specify a collection ID and an array of face IDs to remove from the collection. This operation requires permissions to perform the rekognition:DeleteFaces action. - */ - deleteFaces(callback?: (err: AWSError, data: Rekognition.Types.DeleteFacesResponse) => void): Request; - /** - * Detects faces within an image (JPEG or PNG) that is provided as input. For each face detected, the operation returns face details including a bounding box of the face, a confidence value (that the bounding box contains a face), and a fixed set of attributes such as facial landmarks (for example, coordinates of eye and mouth), gender, presence of beard, sunglasses, etc. The face-detection algorithm is most effective on frontal faces. For non-frontal or obscured faces, the algorithm may not detect the faces or might detect faces with lower confidence. This is a stateless API operation. That is, the operation does not persist any data. For an example, see get-started-exercise-detect-faces. This operation requires permissions to perform the rekognition:DetectFaces action. - */ - detectFaces(params: Rekognition.Types.DetectFacesRequest, callback?: (err: AWSError, data: Rekognition.Types.DetectFacesResponse) => void): Request; - /** - * Detects faces within an image (JPEG or PNG) that is provided as input. For each face detected, the operation returns face details including a bounding box of the face, a confidence value (that the bounding box contains a face), and a fixed set of attributes such as facial landmarks (for example, coordinates of eye and mouth), gender, presence of beard, sunglasses, etc. The face-detection algorithm is most effective on frontal faces. For non-frontal or obscured faces, the algorithm may not detect the faces or might detect faces with lower confidence. This is a stateless API operation. That is, the operation does not persist any data. For an example, see get-started-exercise-detect-faces. This operation requires permissions to perform the rekognition:DetectFaces action. - */ - detectFaces(callback?: (err: AWSError, data: Rekognition.Types.DetectFacesResponse) => void): Request; - /** - * Detects instances of real-world labels within an image (JPEG or PNG) provided as input. This includes objects like flower, tree, and table; events like wedding, graduation, and birthday party; and concepts like landscape, evening, and nature. For an example, see get-started-exercise-detect-labels. For each object, scene, and concept the API returns one or more labels. Each label provides the object name, and the level of confidence that the image contains the object. For example, suppose the input image has a lighthouse, the sea, and a rock. The response will include all three labels, one for each object. {Name: lighthouse, Confidence: 98.4629} {Name: rock,Confidence: 79.2097} {Name: sea,Confidence: 75.061} In the preceding example, the operation returns one label for each of the three objects. The operation can also return multiple labels for the same object in the image. For example, if the input image shows a flower (for example, a tulip), the operation might return the following three labels. {Name: flower,Confidence: 99.0562} {Name: plant,Confidence: 99.0562} {Name: tulip,Confidence: 99.0562} In this example, the detection algorithm more precisely identifies the flower as a tulip. You can provide the input image as an S3 object or as base64-encoded bytes. In response, the API returns an array of labels. In addition, the response also includes the orientation correction. Optionally, you can specify MinConfidence to control the confidence threshold for the labels returned. The default is 50%. You can also add the MaxLabels parameter to limit the number of labels returned. If the object detected is a person, the operation doesn't provide the same facial details that the DetectFaces operation provides. This is a stateless API operation. That is, the operation does not persist any data. This operation requires permissions to perform the rekognition:DetectLabels action. - */ - detectLabels(params: Rekognition.Types.DetectLabelsRequest, callback?: (err: AWSError, data: Rekognition.Types.DetectLabelsResponse) => void): Request; - /** - * Detects instances of real-world labels within an image (JPEG or PNG) provided as input. This includes objects like flower, tree, and table; events like wedding, graduation, and birthday party; and concepts like landscape, evening, and nature. For an example, see get-started-exercise-detect-labels. For each object, scene, and concept the API returns one or more labels. Each label provides the object name, and the level of confidence that the image contains the object. For example, suppose the input image has a lighthouse, the sea, and a rock. The response will include all three labels, one for each object. {Name: lighthouse, Confidence: 98.4629} {Name: rock,Confidence: 79.2097} {Name: sea,Confidence: 75.061} In the preceding example, the operation returns one label for each of the three objects. The operation can also return multiple labels for the same object in the image. For example, if the input image shows a flower (for example, a tulip), the operation might return the following three labels. {Name: flower,Confidence: 99.0562} {Name: plant,Confidence: 99.0562} {Name: tulip,Confidence: 99.0562} In this example, the detection algorithm more precisely identifies the flower as a tulip. You can provide the input image as an S3 object or as base64-encoded bytes. In response, the API returns an array of labels. In addition, the response also includes the orientation correction. Optionally, you can specify MinConfidence to control the confidence threshold for the labels returned. The default is 50%. You can also add the MaxLabels parameter to limit the number of labels returned. If the object detected is a person, the operation doesn't provide the same facial details that the DetectFaces operation provides. This is a stateless API operation. That is, the operation does not persist any data. This operation requires permissions to perform the rekognition:DetectLabels action. - */ - detectLabels(callback?: (err: AWSError, data: Rekognition.Types.DetectLabelsResponse) => void): Request; - /** - * Detects explicit or suggestive adult content in a specified JPEG or PNG format image. Use DetectModerationLabels to moderate images depending on your requirements. For example, you might want to filter images that contain nudity, but not images containing suggestive content. To filter images, use the labels returned by DetectModerationLabels to determine which types of content are appropriate. For information about moderation labels, see image-moderation. - */ - detectModerationLabels(params: Rekognition.Types.DetectModerationLabelsRequest, callback?: (err: AWSError, data: Rekognition.Types.DetectModerationLabelsResponse) => void): Request; - /** - * Detects explicit or suggestive adult content in a specified JPEG or PNG format image. Use DetectModerationLabels to moderate images depending on your requirements. For example, you might want to filter images that contain nudity, but not images containing suggestive content. To filter images, use the labels returned by DetectModerationLabels to determine which types of content are appropriate. For information about moderation labels, see image-moderation. - */ - detectModerationLabels(callback?: (err: AWSError, data: Rekognition.Types.DetectModerationLabelsResponse) => void): Request; - /** - * Gets the name and additional information about a celebrity based on his or her Rekognition ID. The additional information is returned as an array of URLs. If there is no additional information about the celebrity, this list is empty. For more information, see celebrity-recognition. This operation requires permissions to perform the rekognition:GetCelebrityInfo action. - */ - getCelebrityInfo(params: Rekognition.Types.GetCelebrityInfoRequest, callback?: (err: AWSError, data: Rekognition.Types.GetCelebrityInfoResponse) => void): Request; - /** - * Gets the name and additional information about a celebrity based on his or her Rekognition ID. The additional information is returned as an array of URLs. If there is no additional information about the celebrity, this list is empty. For more information, see celebrity-recognition. This operation requires permissions to perform the rekognition:GetCelebrityInfo action. - */ - getCelebrityInfo(callback?: (err: AWSError, data: Rekognition.Types.GetCelebrityInfoResponse) => void): Request; - /** - * Detects faces in the input image and adds them to the specified collection. Amazon Rekognition does not save the actual faces detected. Instead, the underlying detection algorithm first detects the faces in the input image, and for each face extracts facial features into a feature vector, and stores it in the back-end database. Amazon Rekognition uses feature vectors when performing face match and search operations using the and operations. If you provide the optional externalImageID for the input image you provided, Amazon Rekognition associates this ID with all faces that it detects. When you call the operation, the response returns the external ID. You can use this external image ID to create a client-side index to associate the faces with each image. You can then use the index to find all faces in an image. In response, the operation returns an array of metadata for all detected faces. This includes, the bounding box of the detected face, confidence value (indicating the bounding box contains a face), a face ID assigned by the service for each face that is detected and stored, and an image ID assigned by the service for the input image. If you request all facial attributes (using the detectionAttributes parameter, Amazon Rekognition returns detailed facial attributes such as facial landmarks (for example, location of eye and mount) and other facial attributes such gender. If you provide the same image, specify the same collection, and use the same external ID in the IndexFaces operation, Amazon Rekognition doesn't save duplicate face metadata. For an example, see example2. This operation requires permissions to perform the rekognition:IndexFaces action. - */ - indexFaces(params: Rekognition.Types.IndexFacesRequest, callback?: (err: AWSError, data: Rekognition.Types.IndexFacesResponse) => void): Request; - /** - * Detects faces in the input image and adds them to the specified collection. Amazon Rekognition does not save the actual faces detected. Instead, the underlying detection algorithm first detects the faces in the input image, and for each face extracts facial features into a feature vector, and stores it in the back-end database. Amazon Rekognition uses feature vectors when performing face match and search operations using the and operations. If you provide the optional externalImageID for the input image you provided, Amazon Rekognition associates this ID with all faces that it detects. When you call the operation, the response returns the external ID. You can use this external image ID to create a client-side index to associate the faces with each image. You can then use the index to find all faces in an image. In response, the operation returns an array of metadata for all detected faces. This includes, the bounding box of the detected face, confidence value (indicating the bounding box contains a face), a face ID assigned by the service for each face that is detected and stored, and an image ID assigned by the service for the input image. If you request all facial attributes (using the detectionAttributes parameter, Amazon Rekognition returns detailed facial attributes such as facial landmarks (for example, location of eye and mount) and other facial attributes such gender. If you provide the same image, specify the same collection, and use the same external ID in the IndexFaces operation, Amazon Rekognition doesn't save duplicate face metadata. For an example, see example2. This operation requires permissions to perform the rekognition:IndexFaces action. - */ - indexFaces(callback?: (err: AWSError, data: Rekognition.Types.IndexFacesResponse) => void): Request; - /** - * Returns list of collection IDs in your account. If the result is truncated, the response also provides a NextToken that you can use in the subsequent request to fetch the next set of collection IDs. For an example, see example1. This operation requires permissions to perform the rekognition:ListCollections action. - */ - listCollections(params: Rekognition.Types.ListCollectionsRequest, callback?: (err: AWSError, data: Rekognition.Types.ListCollectionsResponse) => void): Request; - /** - * Returns list of collection IDs in your account. If the result is truncated, the response also provides a NextToken that you can use in the subsequent request to fetch the next set of collection IDs. For an example, see example1. This operation requires permissions to perform the rekognition:ListCollections action. - */ - listCollections(callback?: (err: AWSError, data: Rekognition.Types.ListCollectionsResponse) => void): Request; - /** - * Returns metadata for faces in the specified collection. This metadata includes information such as the bounding box coordinates, the confidence (that the bounding box contains a face), and face ID. For an example, see example3. This operation requires permissions to perform the rekognition:ListFaces action. - */ - listFaces(params: Rekognition.Types.ListFacesRequest, callback?: (err: AWSError, data: Rekognition.Types.ListFacesResponse) => void): Request; - /** - * Returns metadata for faces in the specified collection. This metadata includes information such as the bounding box coordinates, the confidence (that the bounding box contains a face), and face ID. For an example, see example3. This operation requires permissions to perform the rekognition:ListFaces action. - */ - listFaces(callback?: (err: AWSError, data: Rekognition.Types.ListFacesResponse) => void): Request; - /** - * Returns an array of celebrities recognized in the input image. The image is passed either as base64-encoded image bytes or as a reference to an image in an Amazon S3 bucket. The image must be either a PNG or JPEG formatted file. For more information, see celebrity-recognition. RecognizeCelebrities returns the 15 largest faces in the image. It lists recognized celebrities in the CelebrityFaces list and unrecognized faces in the UnrecognizedFaces list. The operation doesn't return celebrities whose face sizes are smaller than the largest 15 faces in the image. For each celebrity recognized, the API returns a Celebrity object. The Celebrity object contains the celebrity name, ID, URL links to additional information, match confidence, and a ComparedFace object that you can use to locate the celebrity's face on the image. Rekognition does not retain information about which images a celebrity has been recognized in. Your application must store this information and use the Celebrity ID property as a unique identifier for the celebrity. If you don't store the celebrity name or additional information URLs returned by RecognizeCelebrities, you will need the ID to identify the celebrity in a call to the operation. For an example, see recognize-celebrities-tutorial. This operation requires permissions to perform the rekognition:RecognizeCelebrities operation. - */ - recognizeCelebrities(params: Rekognition.Types.RecognizeCelebritiesRequest, callback?: (err: AWSError, data: Rekognition.Types.RecognizeCelebritiesResponse) => void): Request; - /** - * Returns an array of celebrities recognized in the input image. The image is passed either as base64-encoded image bytes or as a reference to an image in an Amazon S3 bucket. The image must be either a PNG or JPEG formatted file. For more information, see celebrity-recognition. RecognizeCelebrities returns the 15 largest faces in the image. It lists recognized celebrities in the CelebrityFaces list and unrecognized faces in the UnrecognizedFaces list. The operation doesn't return celebrities whose face sizes are smaller than the largest 15 faces in the image. For each celebrity recognized, the API returns a Celebrity object. The Celebrity object contains the celebrity name, ID, URL links to additional information, match confidence, and a ComparedFace object that you can use to locate the celebrity's face on the image. Rekognition does not retain information about which images a celebrity has been recognized in. Your application must store this information and use the Celebrity ID property as a unique identifier for the celebrity. If you don't store the celebrity name or additional information URLs returned by RecognizeCelebrities, you will need the ID to identify the celebrity in a call to the operation. For an example, see recognize-celebrities-tutorial. This operation requires permissions to perform the rekognition:RecognizeCelebrities operation. - */ - recognizeCelebrities(callback?: (err: AWSError, data: Rekognition.Types.RecognizeCelebritiesResponse) => void): Request; - /** - * For a given input face ID, searches for matching faces in the collection the face belongs to. You get a face ID when you add a face to the collection using the IndexFaces operation. The operation compares the features of the input face with faces in the specified collection. You can also search faces without indexing faces by using the SearchFacesByImage operation. The operation response returns an array of faces that match, ordered by similarity score with the highest similarity first. More specifically, it is an array of metadata for each face match that is found. Along with the metadata, the response also includes a confidence value for each face match, indicating the confidence that the specific face matches the input face. For an example, see example3. This operation requires permissions to perform the rekognition:SearchFaces action. - */ - searchFaces(params: Rekognition.Types.SearchFacesRequest, callback?: (err: AWSError, data: Rekognition.Types.SearchFacesResponse) => void): Request; - /** - * For a given input face ID, searches for matching faces in the collection the face belongs to. You get a face ID when you add a face to the collection using the IndexFaces operation. The operation compares the features of the input face with faces in the specified collection. You can also search faces without indexing faces by using the SearchFacesByImage operation. The operation response returns an array of faces that match, ordered by similarity score with the highest similarity first. More specifically, it is an array of metadata for each face match that is found. Along with the metadata, the response also includes a confidence value for each face match, indicating the confidence that the specific face matches the input face. For an example, see example3. This operation requires permissions to perform the rekognition:SearchFaces action. - */ - searchFaces(callback?: (err: AWSError, data: Rekognition.Types.SearchFacesResponse) => void): Request; - /** - * For a given input image, first detects the largest face in the image, and then searches the specified collection for matching faces. The operation compares the features of the input face with faces in the specified collection. To search for all faces in an input image, you might first call the operation, and then use the face IDs returned in subsequent calls to the operation. You can also call the DetectFaces operation and use the bounding boxes in the response to make face crops, which then you can pass in to the SearchFacesByImage operation. The response returns an array of faces that match, ordered by similarity score with the highest similarity first. More specifically, it is an array of metadata for each face match found. Along with the metadata, the response also includes a similarity indicating how similar the face is to the input face. In the response, the operation also returns the bounding box (and a confidence level that the bounding box contains a face) of the face that Amazon Rekognition used for the input image. For an example, see example3. This operation requires permissions to perform the rekognition:SearchFacesByImage action. - */ - searchFacesByImage(params: Rekognition.Types.SearchFacesByImageRequest, callback?: (err: AWSError, data: Rekognition.Types.SearchFacesByImageResponse) => void): Request; - /** - * For a given input image, first detects the largest face in the image, and then searches the specified collection for matching faces. The operation compares the features of the input face with faces in the specified collection. To search for all faces in an input image, you might first call the operation, and then use the face IDs returned in subsequent calls to the operation. You can also call the DetectFaces operation and use the bounding boxes in the response to make face crops, which then you can pass in to the SearchFacesByImage operation. The response returns an array of faces that match, ordered by similarity score with the highest similarity first. More specifically, it is an array of metadata for each face match found. Along with the metadata, the response also includes a similarity indicating how similar the face is to the input face. In the response, the operation also returns the bounding box (and a confidence level that the bounding box contains a face) of the face that Amazon Rekognition used for the input image. For an example, see example3. This operation requires permissions to perform the rekognition:SearchFacesByImage action. - */ - searchFacesByImage(callback?: (err: AWSError, data: Rekognition.Types.SearchFacesByImageResponse) => void): Request; -} -declare namespace Rekognition { - export interface AgeRange { - /** - * The lowest estimated age. - */ - Low?: UInteger; - /** - * The highest estimated age. - */ - High?: UInteger; - } - export type Attribute = "DEFAULT"|"ALL"|string; - export type Attributes = Attribute[]; - export interface Beard { - /** - * Boolean value that indicates whether the face has beard or not. - */ - Value?: Boolean; - /** - * Level of confidence in the determination. - */ - Confidence?: Percent; - } - export type Boolean = boolean; - export interface BoundingBox { - /** - * Width of the bounding box as a ratio of the overall image width. - */ - Width?: Float; - /** - * Height of the bounding box as a ratio of the overall image height. - */ - Height?: Float; - /** - * Left coordinate of the bounding box as a ratio of overall image width. - */ - Left?: Float; - /** - * Top coordinate of the bounding box as a ratio of overall image height. - */ - Top?: Float; - } - export interface Celebrity { - /** - * An array of URLs pointing to additional information about the celebrity. If there is no additional information about the celebrity, this list is empty. - */ - Urls?: Urls; - /** - * The name of the celebrity. - */ - Name?: String; - /** - * A unique identifier for the celebrity. - */ - Id?: RekognitionUniqueId; - /** - * Provides information about the celebrity's face, such as its location on the image. - */ - Face?: ComparedFace; - /** - * The confidence, in percentage, that Rekognition has that the recognized face is the celebrity. - */ - MatchConfidence?: Percent; - } - export type CelebrityList = Celebrity[]; - export type CollectionId = string; - export type CollectionIdList = CollectionId[]; - export interface CompareFacesMatch { - /** - * Level of confidence that the faces match. - */ - Similarity?: Percent; - /** - * Provides face metadata (bounding box and confidence that the bounding box actually contains a face). - */ - Face?: ComparedFace; - } - export type CompareFacesMatchList = CompareFacesMatch[]; - export interface CompareFacesRequest { - /** - * The source image, either as bytes or as an S3 object. - */ - SourceImage: Image; - /** - * The target image, either as bytes or as an S3 object. - */ - TargetImage: Image; - /** - * The minimum level of confidence in the face matches that a match must meet to be included in the FaceMatches array. - */ - SimilarityThreshold?: Percent; - } - export interface CompareFacesResponse { - /** - * The face in the source image that was used for comparison. - */ - SourceImageFace?: ComparedSourceImageFace; - /** - * An array of faces in the target image that match the source image face. Each CompareFacesMatch object provides the bounding box, the confidence level that the bounding box contains a face, and the similarity score for the face in the bounding box and the face in the source image. - */ - FaceMatches?: CompareFacesMatchList; - /** - * An array of faces in the target image that did not match the source image face. - */ - UnmatchedFaces?: CompareFacesUnmatchList; - /** - * The orientation of the source image (counterclockwise direction). If your application displays the source image, you can use this value to correct image orientation. The bounding box coordinates returned in SourceImageFace represent the location of the face before the image orientation is corrected. If the source image is in .jpeg format, it might contain exchangeable image (Exif) metadata that includes the image's orientation. If the Exif metadata for the source image populates the orientation field, the value of OrientationCorrection is null and the SourceImageFace bounding box coordinates represent the location of the face after Exif metadata is used to correct the orientation. Images in .png format don't contain Exif metadata. - */ - SourceImageOrientationCorrection?: OrientationCorrection; - /** - * The orientation of the target image (in counterclockwise direction). If your application displays the target image, you can use this value to correct the orientation of the image. The bounding box coordinates returned in FaceMatches and UnmatchedFaces represent face locations before the image orientation is corrected. If the target image is in .jpg format, it might contain Exif metadata that includes the orientation of the image. If the Exif metadata for the target image populates the orientation field, the value of OrientationCorrection is null and the bounding box coordinates in FaceMatches and UnmatchedFaces represent the location of the face after Exif metadata is used to correct the orientation. Images in .png format don't contain Exif metadata. - */ - TargetImageOrientationCorrection?: OrientationCorrection; - } - export type CompareFacesUnmatchList = ComparedFace[]; - export interface ComparedFace { - /** - * Bounding box of the face. - */ - BoundingBox?: BoundingBox; - /** - * Level of confidence that what the bounding box contains is a face. - */ - Confidence?: Percent; - /** - * An array of facial landmarks. - */ - Landmarks?: Landmarks; - /** - * Indicates the pose of the face as determined by its pitch, roll, and yaw. - */ - Pose?: Pose; - /** - * Identifies face image brightness and sharpness. - */ - Quality?: ImageQuality; - } - export type ComparedFaceList = ComparedFace[]; - export interface ComparedSourceImageFace { - /** - * Bounding box of the face. - */ - BoundingBox?: BoundingBox; - /** - * Confidence level that the selected bounding box contains a face. - */ - Confidence?: Percent; - } - export interface CreateCollectionRequest { - /** - * ID for the collection that you are creating. - */ - CollectionId: CollectionId; - } - export interface CreateCollectionResponse { - /** - * HTTP status code indicating the result of the operation. - */ - StatusCode?: UInteger; - /** - * Amazon Resource Name (ARN) of the collection. You can use this to manage permissions on your resources. - */ - CollectionArn?: String; - } - export type Degree = number; - export interface DeleteCollectionRequest { - /** - * ID of the collection to delete. - */ - CollectionId: CollectionId; - } - export interface DeleteCollectionResponse { - /** - * HTTP status code that indicates the result of the operation. - */ - StatusCode?: UInteger; - } - export interface DeleteFacesRequest { - /** - * Collection from which to remove the specific faces. - */ - CollectionId: CollectionId; - /** - * An array of face IDs to delete. - */ - FaceIds: FaceIdList; - } - export interface DeleteFacesResponse { - /** - * An array of strings (face IDs) of the faces that were deleted. - */ - DeletedFaces?: FaceIdList; - } - export interface DetectFacesRequest { - /** - * The image in which you want to detect faces. You can specify a blob or an S3 object. - */ - Image: Image; - /** - * An array of facial attributes you want to be returned. This can be the default list of attributes or all attributes. If you don't specify a value for Attributes or if you specify ["DEFAULT"], the API returns the following subset of facial attributes: BoundingBox, Confidence, Pose, Quality and Landmarks. If you provide ["ALL"], all facial attributes are returned but the operation will take longer to complete. If you provide both, ["ALL", "DEFAULT"], the service uses a logical AND operator to determine which attributes to return (in this case, all attributes). - */ - Attributes?: Attributes; - } - export interface DetectFacesResponse { - /** - * Details of each face found in the image. - */ - FaceDetails?: FaceDetailList; - /** - * The orientation of the input image (counter-clockwise direction). If your application displays the image, you can use this value to correct image orientation. The bounding box coordinates returned in FaceDetails represent face locations before the image orientation is corrected. If the input image is in .jpeg format, it might contain exchangeable image (Exif) metadata that includes the image's orientation. If so, and the Exif metadata for the input image populates the orientation field, the value of OrientationCorrection is null and the FaceDetails bounding box coordinates represent face locations after Exif metadata is used to correct the image orientation. Images in .png format don't contain Exif metadata. - */ - OrientationCorrection?: OrientationCorrection; - } - export interface DetectLabelsRequest { - /** - * The input image. You can provide a blob of image bytes or an S3 object. - */ - Image: Image; - /** - * Maximum number of labels you want the service to return in the response. The service returns the specified number of highest confidence labels. - */ - MaxLabels?: UInteger; - /** - * Specifies the minimum confidence level for the labels to return. Amazon Rekognition doesn't return any labels with confidence lower than this specified value. If MinConfidence is not specified, the operation returns labels with a confidence values greater than or equal to 50 percent. - */ - MinConfidence?: Percent; - } - export interface DetectLabelsResponse { - /** - * An array of labels for the real-world objects detected. - */ - Labels?: Labels; - /** - * The orientation of the input image (counter-clockwise direction). If your application displays the image, you can use this value to correct the orientation. If Amazon Rekognition detects that the input image was rotated (for example, by 90 degrees), it first corrects the orientation before detecting the labels. If the input image Exif metadata populates the orientation field, Amazon Rekognition does not perform orientation correction and the value of OrientationCorrection will be null. - */ - OrientationCorrection?: OrientationCorrection; - } - export interface DetectModerationLabelsRequest { - /** - * The input image as bytes or an S3 object. - */ - Image: Image; - /** - * Specifies the minimum confidence level for the labels to return. Amazon Rekognition doesn't return any labels with a confidence level lower than this specified value. If you don't specify MinConfidence, the operation returns labels with confidence values greater than or equal to 50 percent. - */ - MinConfidence?: Percent; - } - export interface DetectModerationLabelsResponse { - /** - * An array of labels for explicit or suggestive adult content found in the image. The list includes the top-level label and each child label detected in the image. This is useful for filtering specific categories of content. - */ - ModerationLabels?: ModerationLabels; - } - export interface Emotion { - /** - * Type of emotion detected. - */ - Type?: EmotionName; - /** - * Level of confidence in the determination. - */ - Confidence?: Percent; - } - export type EmotionName = "HAPPY"|"SAD"|"ANGRY"|"CONFUSED"|"DISGUSTED"|"SURPRISED"|"CALM"|"UNKNOWN"|string; - export type Emotions = Emotion[]; - export type ExternalImageId = string; - export interface EyeOpen { - /** - * Boolean value that indicates whether the eyes on the face are open. - */ - Value?: Boolean; - /** - * Level of confidence in the determination. - */ - Confidence?: Percent; - } - export interface Eyeglasses { - /** - * Boolean value that indicates whether the face is wearing eye glasses or not. - */ - Value?: Boolean; - /** - * Level of confidence in the determination. - */ - Confidence?: Percent; - } - export interface Face { - /** - * Unique identifier that Amazon Rekognition assigns to the face. - */ - FaceId?: FaceId; - /** - * Bounding box of the face. - */ - BoundingBox?: BoundingBox; - /** - * Unique identifier that Amazon Rekognition assigns to the input image. - */ - ImageId?: ImageId; - /** - * Identifier that you assign to all the faces in the input image. - */ - ExternalImageId?: ExternalImageId; - /** - * Confidence level that the bounding box contains a face (and not a different object such as a tree). - */ - Confidence?: Percent; - } - export interface FaceDetail { - /** - * Bounding box of the face. - */ - BoundingBox?: BoundingBox; - /** - * The estimated age range, in years, for the face. Low represents the lowest estimated age and High represents the highest estimated age. - */ - AgeRange?: AgeRange; - /** - * Indicates whether or not the face is smiling, and the confidence level in the determination. - */ - Smile?: Smile; - /** - * Indicates whether or not the face is wearing eye glasses, and the confidence level in the determination. - */ - Eyeglasses?: Eyeglasses; - /** - * Indicates whether or not the face is wearing sunglasses, and the confidence level in the determination. - */ - Sunglasses?: Sunglasses; - /** - * Gender of the face and the confidence level in the determination. - */ - Gender?: Gender; - /** - * Indicates whether or not the face has a beard, and the confidence level in the determination. - */ - Beard?: Beard; - /** - * Indicates whether or not the face has a mustache, and the confidence level in the determination. - */ - Mustache?: Mustache; - /** - * Indicates whether or not the eyes on the face are open, and the confidence level in the determination. - */ - EyesOpen?: EyeOpen; - /** - * Indicates whether or not the mouth on the face is open, and the confidence level in the determination. - */ - MouthOpen?: MouthOpen; - /** - * The emotions detected on the face, and the confidence level in the determination. For example, HAPPY, SAD, and ANGRY. - */ - Emotions?: Emotions; - /** - * Indicates the location of landmarks on the face. - */ - Landmarks?: Landmarks; - /** - * Indicates the pose of the face as determined by its pitch, roll, and yaw. - */ - Pose?: Pose; - /** - * Identifies image brightness and sharpness. - */ - Quality?: ImageQuality; - /** - * Confidence level that the bounding box contains a face (and not a different object such as a tree). - */ - Confidence?: Percent; - } - export type FaceDetailList = FaceDetail[]; - export type FaceId = string; - export type FaceIdList = FaceId[]; - export type FaceList = Face[]; - export interface FaceMatch { - /** - * Confidence in the match of this face with the input face. - */ - Similarity?: Percent; - /** - * Describes the face properties such as the bounding box, face ID, image ID of the source image, and external image ID that you assigned. - */ - Face?: Face; - } - export type FaceMatchList = FaceMatch[]; - export interface FaceRecord { - /** - * Describes the face properties such as the bounding box, face ID, image ID of the input image, and external image ID that you assigned. - */ - Face?: Face; - /** - * Structure containing attributes of the face that the algorithm detected. - */ - FaceDetail?: FaceDetail; - } - export type FaceRecordList = FaceRecord[]; - export type Float = number; - export interface Gender { - /** - * Gender of the face. - */ - Value?: GenderType; - /** - * Level of confidence in the determination. - */ - Confidence?: Percent; - } - export type GenderType = "Male"|"Female"|string; - export interface GetCelebrityInfoRequest { - /** - * The ID for the celebrity. You get the celebrity ID from a call to the operation, which recognizes celebrities in an image. - */ - Id: RekognitionUniqueId; - } - export interface GetCelebrityInfoResponse { - /** - * An array of URLs pointing to additional celebrity information. - */ - Urls?: Urls; - /** - * The name of the celebrity. - */ - Name?: String; - } - export interface Image { - /** - * Blob of image bytes up to 5 MBs. - */ - Bytes?: ImageBlob; - /** - * Identifies an S3 object as the image source. - */ - S3Object?: S3Object; - } - export type ImageBlob = Buffer|Uint8Array|Blob|string; - export type ImageId = string; - export interface ImageQuality { - /** - * Value representing brightness of the face. The service returns a value between 0 and 100 (inclusive). A higher value indicates a brighter face image. - */ - Brightness?: Float; - /** - * Value representing sharpness of the face. The service returns a value between 0 and 100 (inclusive). A higher value indicates a sharper face image. - */ - Sharpness?: Float; - } - export interface IndexFacesRequest { - /** - * The ID of an existing collection to which you want to add the faces that are detected in the input images. - */ - CollectionId: CollectionId; - /** - * The input image as bytes or an S3 object. - */ - Image: Image; - /** - * ID you want to assign to all the faces detected in the image. - */ - ExternalImageId?: ExternalImageId; - /** - * An array of facial attributes that you want to be returned. This can be the default list of attributes or all attributes. If you don't specify a value for Attributes or if you specify ["DEFAULT"], the API returns the following subset of facial attributes: BoundingBox, Confidence, Pose, Quality and Landmarks. If you provide ["ALL"], all facial attributes are returned but the operation will take longer to complete. If you provide both, ["ALL", "DEFAULT"], the service uses a logical AND operator to determine which attributes to return (in this case, all attributes). - */ - DetectionAttributes?: Attributes; - } - export interface IndexFacesResponse { - /** - * An array of faces detected and added to the collection. For more information, see howitworks-index-faces. - */ - FaceRecords?: FaceRecordList; - /** - * The orientation of the input image (counterclockwise direction). If your application displays the image, you can use this value to correct image orientation. The bounding box coordinates returned in FaceRecords represent face locations before the image orientation is corrected. If the input image is in jpeg format, it might contain exchangeable image (Exif) metadata. If so, and the Exif metadata populates the orientation field, the value of OrientationCorrection is null and the bounding box coordinates in FaceRecords represent face locations after Exif metadata is used to correct the image orientation. Images in .png format don't contain Exif metadata. - */ - OrientationCorrection?: OrientationCorrection; - } - export interface Label { - /** - * The name (label) of the object. - */ - Name?: String; - /** - * Level of confidence. - */ - Confidence?: Percent; - } - export type Labels = Label[]; - export interface Landmark { - /** - * Type of the landmark. - */ - Type?: LandmarkType; - /** - * x-coordinate from the top left of the landmark expressed as the ratio of the width of the image. For example, if the images is 700x200 and the x-coordinate of the landmark is at 350 pixels, this value is 0.5. - */ - X?: Float; - /** - * y-coordinate from the top left of the landmark expressed as the ratio of the height of the image. For example, if the images is 700x200 and the y-coordinate of the landmark is at 100 pixels, this value is 0.5. - */ - Y?: Float; - } - export type LandmarkType = "eyeLeft"|"eyeRight"|"nose"|"mouthLeft"|"mouthRight"|"leftEyeBrowLeft"|"leftEyeBrowRight"|"leftEyeBrowUp"|"rightEyeBrowLeft"|"rightEyeBrowRight"|"rightEyeBrowUp"|"leftEyeLeft"|"leftEyeRight"|"leftEyeUp"|"leftEyeDown"|"rightEyeLeft"|"rightEyeRight"|"rightEyeUp"|"rightEyeDown"|"noseLeft"|"noseRight"|"mouthUp"|"mouthDown"|"leftPupil"|"rightPupil"|string; - export type Landmarks = Landmark[]; - export interface ListCollectionsRequest { - /** - * Pagination token from the previous response. - */ - NextToken?: PaginationToken; - /** - * Maximum number of collection IDs to return. - */ - MaxResults?: PageSize; - } - export interface ListCollectionsResponse { - /** - * An array of collection IDs. - */ - CollectionIds?: CollectionIdList; - /** - * If the result is truncated, the response provides a NextToken that you can use in the subsequent request to fetch the next set of collection IDs. - */ - NextToken?: PaginationToken; - } - export interface ListFacesRequest { - /** - * ID of the collection from which to list the faces. - */ - CollectionId: CollectionId; - /** - * If the previous response was incomplete (because there is more data to retrieve), Amazon Rekognition returns a pagination token in the response. You can use this pagination token to retrieve the next set of faces. - */ - NextToken?: PaginationToken; - /** - * Maximum number of faces to return. - */ - MaxResults?: PageSize; - } - export interface ListFacesResponse { - /** - * An array of Face objects. - */ - Faces?: FaceList; - /** - * If the response is truncated, Amazon Rekognition returns this token that you can use in the subsequent request to retrieve the next set of faces. - */ - NextToken?: String; - } - export type MaxFaces = number; - export interface ModerationLabel { - /** - * Specifies the confidence that Amazon Rekognition has that the label has been correctly identified. If you don't specify the MinConfidence parameter in the call to DetectModerationLabels, the operation returns labels with a confidence value greater than or equal to 50 percent. - */ - Confidence?: Percent; - /** - * The label name for the type of content detected in the image. - */ - Name?: String; - /** - * The name for the parent label. Labels at the top-level of the hierarchy have the parent label "". - */ - ParentName?: String; - } - export type ModerationLabels = ModerationLabel[]; - export interface MouthOpen { - /** - * Boolean value that indicates whether the mouth on the face is open or not. - */ - Value?: Boolean; - /** - * Level of confidence in the determination. - */ - Confidence?: Percent; - } - export interface Mustache { - /** - * Boolean value that indicates whether the face has mustache or not. - */ - Value?: Boolean; - /** - * Level of confidence in the determination. - */ - Confidence?: Percent; - } - export type OrientationCorrection = "ROTATE_0"|"ROTATE_90"|"ROTATE_180"|"ROTATE_270"|string; - export type PageSize = number; - export type PaginationToken = string; - export type Percent = number; - export interface Pose { - /** - * Value representing the face rotation on the roll axis. - */ - Roll?: Degree; - /** - * Value representing the face rotation on the yaw axis. - */ - Yaw?: Degree; - /** - * Value representing the face rotation on the pitch axis. - */ - Pitch?: Degree; - } - export interface RecognizeCelebritiesRequest { - /** - * The input image to use for celebrity recognition. - */ - Image: Image; - } - export interface RecognizeCelebritiesResponse { - /** - * Details about each celebrity found in the image. Amazon Rekognition can detect a maximum of 15 celebrities in an image. - */ - CelebrityFaces?: CelebrityList; - /** - * Details about each unrecognized face in the image. - */ - UnrecognizedFaces?: ComparedFaceList; - /** - * The orientation of the input image (counterclockwise direction). If your application displays the image, you can use this value to correct the orientation. The bounding box coordinates returned in CelebrityFaces and UnrecognizedFaces represent face locations before the image orientation is corrected. If the input image is in .jpeg format, it might contain exchangeable image (Exif) metadata that includes the image's orientation. If so, and the Exif metadata for the input image populates the orientation field, the value of OrientationCorrection is null and the CelebrityFaces and UnrecognizedFaces bounding box coordinates represent face locations after Exif metadata is used to correct the image orientation. Images in .png format don't contain Exif metadata. - */ - OrientationCorrection?: OrientationCorrection; - } - export type RekognitionUniqueId = string; - export type S3Bucket = string; - export interface S3Object { - /** - * Name of the S3 bucket. - */ - Bucket?: S3Bucket; - /** - * S3 object key name. - */ - Name?: S3ObjectName; - /** - * If the bucket is versioning enabled, you can specify the object version. - */ - Version?: S3ObjectVersion; - } - export type S3ObjectName = string; - export type S3ObjectVersion = string; - export interface SearchFacesByImageRequest { - /** - * ID of the collection to search. - */ - CollectionId: CollectionId; - /** - * The input image as bytes or an S3 object. - */ - Image: Image; - /** - * Maximum number of faces to return. The operation returns the maximum number of faces with the highest confidence in the match. - */ - MaxFaces?: MaxFaces; - /** - * (Optional) Specifies the minimum confidence in the face match to return. For example, don't return any matches where confidence in matches is less than 70%. - */ - FaceMatchThreshold?: Percent; - } - export interface SearchFacesByImageResponse { - /** - * The bounding box around the face in the input image that Amazon Rekognition used for the search. - */ - SearchedFaceBoundingBox?: BoundingBox; - /** - * The level of confidence that the searchedFaceBoundingBox, contains a face. - */ - SearchedFaceConfidence?: Percent; - /** - * An array of faces that match the input face, along with the confidence in the match. - */ - FaceMatches?: FaceMatchList; - } - export interface SearchFacesRequest { - /** - * ID of the collection the face belongs to. - */ - CollectionId: CollectionId; - /** - * ID of a face to find matches for in the collection. - */ - FaceId: FaceId; - /** - * Maximum number of faces to return. The operation returns the maximum number of faces with the highest confidence in the match. - */ - MaxFaces?: MaxFaces; - /** - * Optional value specifying the minimum confidence in the face match to return. For example, don't return any matches where confidence in matches is less than 70%. - */ - FaceMatchThreshold?: Percent; - } - export interface SearchFacesResponse { - /** - * ID of the face that was searched for matches in a collection. - */ - SearchedFaceId?: FaceId; - /** - * An array of faces that matched the input face, along with the confidence in the match. - */ - FaceMatches?: FaceMatchList; - } - export interface Smile { - /** - * Boolean value that indicates whether the face is smiling or not. - */ - Value?: Boolean; - /** - * Level of confidence in the determination. - */ - Confidence?: Percent; - } - export type String = string; - export interface Sunglasses { - /** - * Boolean value that indicates whether the face is wearing sunglasses or not. - */ - Value?: Boolean; - /** - * Level of confidence in the determination. - */ - Confidence?: Percent; - } - export type UInteger = number; - export type Url = string; - export type Urls = Url[]; - /** - * A string in YYYY-MM-DD format that represents the latest possible API version that can be used in this service. Specify 'latest' to use the latest possible version. - */ - export type apiVersion = "2016-06-27"|"latest"|string; - export interface ClientApiVersions { - /** - * A string in YYYY-MM-DD format that represents the latest possible API version that can be used in this service. Specify 'latest' to use the latest possible version. - */ - apiVersion?: apiVersion; - } - export type ClientConfiguration = ServiceConfigurationOptions & ClientApiVersions; - /** - * Contains interfaces for use with the Rekognition client. - */ - export import Types = Rekognition; -} -export = Rekognition; diff --git a/workshops/monte-carlo-on-ec2-spot-fleet/src/web/node_modules/aws-sdk/clients/rekognition.js b/workshops/monte-carlo-on-ec2-spot-fleet/src/web/node_modules/aws-sdk/clients/rekognition.js deleted file mode 100644 index 93bea6e8..00000000 --- a/workshops/monte-carlo-on-ec2-spot-fleet/src/web/node_modules/aws-sdk/clients/rekognition.js +++ /dev/null @@ -1,18 +0,0 @@ -require('../lib/node_loader'); -var AWS = require('../lib/core'); -var Service = AWS.Service; -var apiLoader = AWS.apiLoader; - -apiLoader.services['rekognition'] = {}; -AWS.Rekognition = Service.defineService('rekognition', ['2016-06-27']); -Object.defineProperty(apiLoader.services['rekognition'], '2016-06-27', { - get: function get() { - var model = require('../apis/rekognition-2016-06-27.min.json'); - model.paginators = require('../apis/rekognition-2016-06-27.paginators.json').pagination; - return model; - }, - enumerable: true, - configurable: true -}); - -module.exports = AWS.Rekognition; diff --git a/workshops/monte-carlo-on-ec2-spot-fleet/src/web/node_modules/aws-sdk/clients/resourcegroupstaggingapi.d.ts b/workshops/monte-carlo-on-ec2-spot-fleet/src/web/node_modules/aws-sdk/clients/resourcegroupstaggingapi.d.ts deleted file mode 100644 index 36477ab0..00000000 --- a/workshops/monte-carlo-on-ec2-spot-fleet/src/web/node_modules/aws-sdk/clients/resourcegroupstaggingapi.d.ts +++ /dev/null @@ -1,238 +0,0 @@ -import {Request} from '../lib/request'; -import {Response} from '../lib/response'; -import {AWSError} from '../lib/error'; -import {Service} from '../lib/service'; -import {ServiceConfigurationOptions} from '../lib/service'; -import {ConfigBase as Config} from '../lib/config'; -interface Blob {} -declare class ResourceGroupsTaggingAPI extends Service { - /** - * Constructs a service object. This object has one method for each API operation. - */ - constructor(options?: ResourceGroupsTaggingAPI.Types.ClientConfiguration) - config: Config & ResourceGroupsTaggingAPI.Types.ClientConfiguration; - /** - * Returns all the tagged resources that are associated with the specified tags (keys and values) located in the specified region for the AWS account. The tags and the resource types that you specify in the request are known as filters. The response includes all tags that are associated with the requested resources. If no filter is provided, this action returns a paginated resource list with the associated tags. - */ - getResources(params: ResourceGroupsTaggingAPI.Types.GetResourcesInput, callback?: (err: AWSError, data: ResourceGroupsTaggingAPI.Types.GetResourcesOutput) => void): Request; - /** - * Returns all the tagged resources that are associated with the specified tags (keys and values) located in the specified region for the AWS account. The tags and the resource types that you specify in the request are known as filters. The response includes all tags that are associated with the requested resources. If no filter is provided, this action returns a paginated resource list with the associated tags. - */ - getResources(callback?: (err: AWSError, data: ResourceGroupsTaggingAPI.Types.GetResourcesOutput) => void): Request; - /** - * Returns all tag keys in the specified region for the AWS account. - */ - getTagKeys(params: ResourceGroupsTaggingAPI.Types.GetTagKeysInput, callback?: (err: AWSError, data: ResourceGroupsTaggingAPI.Types.GetTagKeysOutput) => void): Request; - /** - * Returns all tag keys in the specified region for the AWS account. - */ - getTagKeys(callback?: (err: AWSError, data: ResourceGroupsTaggingAPI.Types.GetTagKeysOutput) => void): Request; - /** - * Returns all tag values for the specified key in the specified region for the AWS account. - */ - getTagValues(params: ResourceGroupsTaggingAPI.Types.GetTagValuesInput, callback?: (err: AWSError, data: ResourceGroupsTaggingAPI.Types.GetTagValuesOutput) => void): Request; - /** - * Returns all tag values for the specified key in the specified region for the AWS account. - */ - getTagValues(callback?: (err: AWSError, data: ResourceGroupsTaggingAPI.Types.GetTagValuesOutput) => void): Request; - /** - * Applies one or more tags to the specified resources. Note the following: Not all resources can have tags. For a list of resources that support tagging, see Supported Resources in the AWS Resource Groups and Tag Editor User Guide. Each resource can have up to 50 tags. For other limits, see Tag Restrictions in the Amazon EC2 User Guide for Linux Instances. You can only tag resources that are located in the specified region for the AWS account. To add tags to a resource, you need the necessary permissions for the service that the resource belongs to as well as permissions for adding tags. For more information, see Obtaining Permissions for Tagging in the AWS Resource Groups and Tag Editor User Guide. - */ - tagResources(params: ResourceGroupsTaggingAPI.Types.TagResourcesInput, callback?: (err: AWSError, data: ResourceGroupsTaggingAPI.Types.TagResourcesOutput) => void): Request; - /** - * Applies one or more tags to the specified resources. Note the following: Not all resources can have tags. For a list of resources that support tagging, see Supported Resources in the AWS Resource Groups and Tag Editor User Guide. Each resource can have up to 50 tags. For other limits, see Tag Restrictions in the Amazon EC2 User Guide for Linux Instances. You can only tag resources that are located in the specified region for the AWS account. To add tags to a resource, you need the necessary permissions for the service that the resource belongs to as well as permissions for adding tags. For more information, see Obtaining Permissions for Tagging in the AWS Resource Groups and Tag Editor User Guide. - */ - tagResources(callback?: (err: AWSError, data: ResourceGroupsTaggingAPI.Types.TagResourcesOutput) => void): Request; - /** - * Removes the specified tags from the specified resources. When you specify a tag key, the action removes both that key and its associated value. The operation succeeds even if you attempt to remove tags from a resource that were already removed. Note the following: To remove tags from a resource, you need the necessary permissions for the service that the resource belongs to as well as permissions for removing tags. For more information, see Obtaining Permissions for Tagging in the AWS Resource Groups and Tag Editor User Guide. You can only tag resources that are located in the specified region for the AWS account. - */ - untagResources(params: ResourceGroupsTaggingAPI.Types.UntagResourcesInput, callback?: (err: AWSError, data: ResourceGroupsTaggingAPI.Types.UntagResourcesOutput) => void): Request; - /** - * Removes the specified tags from the specified resources. When you specify a tag key, the action removes both that key and its associated value. The operation succeeds even if you attempt to remove tags from a resource that were already removed. Note the following: To remove tags from a resource, you need the necessary permissions for the service that the resource belongs to as well as permissions for removing tags. For more information, see Obtaining Permissions for Tagging in the AWS Resource Groups and Tag Editor User Guide. You can only tag resources that are located in the specified region for the AWS account. - */ - untagResources(callback?: (err: AWSError, data: ResourceGroupsTaggingAPI.Types.UntagResourcesOutput) => void): Request; -} -declare namespace ResourceGroupsTaggingAPI { - export type AmazonResourceType = string; - export type ErrorCode = "InternalServiceException"|"InvalidParameterException"|string; - export type ErrorMessage = string; - export type ExceptionMessage = string; - export type FailedResourcesMap = {[key: string]: FailureInfo}; - export interface FailureInfo { - /** - * The HTTP status code of the common error. - */ - StatusCode?: StatusCode; - /** - * The code of the common error. Valid values include InternalServiceException, InvalidParameterException, and any valid error code returned by the AWS service that hosts the resource that you want to tag. - */ - ErrorCode?: ErrorCode; - /** - * The message of the common error. - */ - ErrorMessage?: ErrorMessage; - } - export interface GetResourcesInput { - /** - * A string that indicates that additional data is available. Leave this value empty for your initial request. If the response includes a PaginationToken, use that string for this value to request an additional page of data. - */ - PaginationToken?: PaginationToken; - /** - * A list of tags (keys and values). A request can include up to 50 keys, and each key can include up to 20 values. If you specify multiple filters connected by an AND operator in a single request, the response returns only those resources that are associated with every specified filter. If you specify multiple filters connected by an OR operator in a single request, the response returns all resources that are associated with at least one or possibly more of the specified filters. - */ - TagFilters?: TagFilterList; - /** - * A limit that restricts the number of resources returned by GetResources in paginated output. You can set ResourcesPerPage to a minimum of 1 item and the maximum of 50 items. - */ - ResourcesPerPage?: ResourcesPerPage; - /** - * A limit that restricts the number of tags (key and value pairs) returned by GetResources in paginated output. A resource with no tags is counted as having one tag (one key and value pair). GetResources does not split a resource and its associated tags across pages. If the specified TagsPerPage would cause such a break, a PaginationToken is returned in place of the affected resource and its tags. Use that token in another request to get the remaining data. For example, if you specify a TagsPerPage of 100 and the account has 22 resources with 10 tags each (meaning that each resource has 10 key and value pairs), the output will consist of 3 pages, with the first page displaying the first 10 resources, each with its 10 tags, the second page displaying the next 10 resources each with its 10 tags, and the third page displaying the remaining 2 resources, each with its 10 tags. You can set TagsPerPage to a minimum of 100 items and the maximum of 500 items. - */ - TagsPerPage?: TagsPerPage; - /** - * The constraints on the resources that you want returned. The format of each resource type is service[:resourceType]. For example, specifying a resource type of ec2 returns all tagged Amazon EC2 resources (which includes tagged EC2 instances). Specifying a resource type of ec2:instance returns only EC2 instances. The string for each service name and resource type is the same as that embedded in a resource's Amazon Resource Name (ARN). Consult the AWS General Reference for the following: For a list of service name strings, see AWS Service Namespaces. For resource type strings, see Example ARNs. For more information about ARNs, see Amazon Resource Names (ARNs) and AWS Service Namespaces. - */ - ResourceTypeFilters?: ResourceTypeFilterList; - } - export interface GetResourcesOutput { - /** - * A string that indicates that the response contains more data than can be returned in a single response. To receive additional data, specify this string for the PaginationToken value in a subsequent request. - */ - PaginationToken?: PaginationToken; - /** - * A list of resource ARNs and the tags (keys and values) associated with each. - */ - ResourceTagMappingList?: ResourceTagMappingList; - } - export interface GetTagKeysInput { - /** - * A string that indicates that additional data is available. Leave this value empty for your initial request. If the response includes a PaginationToken, use that string for this value to request an additional page of data. - */ - PaginationToken?: PaginationToken; - } - export interface GetTagKeysOutput { - /** - * A string that indicates that the response contains more data than can be returned in a single response. To receive additional data, specify this string for the PaginationToken value in a subsequent request. - */ - PaginationToken?: PaginationToken; - /** - * A list of all tag keys in the AWS account. - */ - TagKeys?: TagKeyList; - } - export interface GetTagValuesInput { - /** - * A string that indicates that additional data is available. Leave this value empty for your initial request. If the response includes a PaginationToken, use that string for this value to request an additional page of data. - */ - PaginationToken?: PaginationToken; - /** - * The key for which you want to list all existing values in the specified region for the AWS account. - */ - Key: TagKey; - } - export interface GetTagValuesOutput { - /** - * A string that indicates that the response contains more data than can be returned in a single response. To receive additional data, specify this string for the PaginationToken value in a subsequent request. - */ - PaginationToken?: PaginationToken; - /** - * A list of all tag values for the specified key in the AWS account. - */ - TagValues?: TagValuesOutputList; - } - export type PaginationToken = string; - export type ResourceARN = string; - export type ResourceARNList = ResourceARN[]; - export interface ResourceTagMapping { - /** - * An array of resource ARN(s). - */ - ResourceARN?: ResourceARN; - /** - * The tags that have been applied to one or more AWS resources. - */ - Tags?: TagList; - } - export type ResourceTagMappingList = ResourceTagMapping[]; - export type ResourceTypeFilterList = AmazonResourceType[]; - export type ResourcesPerPage = number; - export type StatusCode = number; - export interface Tag { - /** - * One part of a key-value pair that make up a tag. A key is a general label that acts like a category for more specific tag values. - */ - Key: TagKey; - /** - * The optional part of a key-value pair that make up a tag. A value acts as a descriptor within a tag category (key). - */ - Value: TagValue; - } - export interface TagFilter { - /** - * One part of a key-value pair that make up a tag. A key is a general label that acts like a category for more specific tag values. - */ - Key?: TagKey; - /** - * The optional part of a key-value pair that make up a tag. A value acts as a descriptor within a tag category (key). - */ - Values?: TagValueList; - } - export type TagFilterList = TagFilter[]; - export type TagKey = string; - export type TagKeyList = TagKey[]; - export type TagKeyListForUntag = TagKey[]; - export type TagList = Tag[]; - export type TagMap = {[key: string]: TagValue}; - export interface TagResourcesInput { - /** - * A list of ARNs. An ARN (Amazon Resource Name) uniquely identifies a resource. You can specify a minimum of 1 and a maximum of 20 ARNs (resources) to tag. An ARN can be set to a maximum of 1600 characters. For more information, see Amazon Resource Names (ARNs) and AWS Service Namespaces in the AWS General Reference. - */ - ResourceARNList: ResourceARNList; - /** - * The tags that you want to add to the specified resources. A tag consists of a key and a value that you define. - */ - Tags: TagMap; - } - export interface TagResourcesOutput { - /** - * Details of resources that could not be tagged. An error code, status code, and error message are returned for each failed item. - */ - FailedResourcesMap?: FailedResourcesMap; - } - export type TagValue = string; - export type TagValueList = TagValue[]; - export type TagValuesOutputList = TagValue[]; - export type TagsPerPage = number; - export interface UntagResourcesInput { - /** - * A list of ARNs. An ARN (Amazon Resource Name) uniquely identifies a resource. You can specify a minimum of 1 and a maximum of 20 ARNs (resources) to untag. An ARN can be set to a maximum of 1600 characters. For more information, see Amazon Resource Names (ARNs) and AWS Service Namespaces in the AWS General Reference. - */ - ResourceARNList: ResourceARNList; - /** - * A list of the tag keys that you want to remove from the specified resources. - */ - TagKeys: TagKeyListForUntag; - } - export interface UntagResourcesOutput { - /** - * Details of resources that could not be untagged. An error code, status code, and error message are returned for each failed item. - */ - FailedResourcesMap?: FailedResourcesMap; - } - /** - * A string in YYYY-MM-DD format that represents the latest possible API version that can be used in this service. Specify 'latest' to use the latest possible version. - */ - export type apiVersion = "2017-01-26"|"latest"|string; - export interface ClientApiVersions { - /** - * A string in YYYY-MM-DD format that represents the latest possible API version that can be used in this service. Specify 'latest' to use the latest possible version. - */ - apiVersion?: apiVersion; - } - export type ClientConfiguration = ServiceConfigurationOptions & ClientApiVersions; - /** - * Contains interfaces for use with the ResourceGroupsTaggingAPI client. - */ - export import Types = ResourceGroupsTaggingAPI; -} -export = ResourceGroupsTaggingAPI; diff --git a/workshops/monte-carlo-on-ec2-spot-fleet/src/web/node_modules/aws-sdk/clients/resourcegroupstaggingapi.js b/workshops/monte-carlo-on-ec2-spot-fleet/src/web/node_modules/aws-sdk/clients/resourcegroupstaggingapi.js deleted file mode 100644 index e5bdbb05..00000000 --- a/workshops/monte-carlo-on-ec2-spot-fleet/src/web/node_modules/aws-sdk/clients/resourcegroupstaggingapi.js +++ /dev/null @@ -1,18 +0,0 @@ -require('../lib/node_loader'); -var AWS = require('../lib/core'); -var Service = AWS.Service; -var apiLoader = AWS.apiLoader; - -apiLoader.services['resourcegroupstaggingapi'] = {}; -AWS.ResourceGroupsTaggingAPI = Service.defineService('resourcegroupstaggingapi', ['2017-01-26']); -Object.defineProperty(apiLoader.services['resourcegroupstaggingapi'], '2017-01-26', { - get: function get() { - var model = require('../apis/resourcegroupstaggingapi-2017-01-26.min.json'); - model.paginators = require('../apis/resourcegroupstaggingapi-2017-01-26.paginators.json').pagination; - return model; - }, - enumerable: true, - configurable: true -}); - -module.exports = AWS.ResourceGroupsTaggingAPI; diff --git a/workshops/monte-carlo-on-ec2-spot-fleet/src/web/node_modules/aws-sdk/clients/route53.d.ts b/workshops/monte-carlo-on-ec2-spot-fleet/src/web/node_modules/aws-sdk/clients/route53.d.ts deleted file mode 100644 index f2318ae8..00000000 --- a/workshops/monte-carlo-on-ec2-spot-fleet/src/web/node_modules/aws-sdk/clients/route53.d.ts +++ /dev/null @@ -1,2280 +0,0 @@ -import {Request} from '../lib/request'; -import {Response} from '../lib/response'; -import {AWSError} from '../lib/error'; -import {Service} from '../lib/service'; -import {ServiceConfigurationOptions} from '../lib/service'; -import {ConfigBase as Config} from '../lib/config'; -interface Blob {} -declare class Route53 extends Service { - /** - * Constructs a service object. This object has one method for each API operation. - */ - constructor(options?: Route53.Types.ClientConfiguration) - config: Config & Route53.Types.ClientConfiguration; - /** - * Associates an Amazon VPC with a private hosted zone. To perform the association, the VPC and the private hosted zone must already exist. You can't convert a public hosted zone into a private hosted zone. If you want to associate a VPC that was created by using one AWS account with a private hosted zone that was created by using a different account, the AWS account that created the private hosted zone must first submit a CreateVPCAssociationAuthorization request. Then the account that created the VPC must submit an AssociateVPCWithHostedZone request. - */ - associateVPCWithHostedZone(params: Route53.Types.AssociateVPCWithHostedZoneRequest, callback?: (err: AWSError, data: Route53.Types.AssociateVPCWithHostedZoneResponse) => void): Request; - /** - * Associates an Amazon VPC with a private hosted zone. To perform the association, the VPC and the private hosted zone must already exist. You can't convert a public hosted zone into a private hosted zone. If you want to associate a VPC that was created by using one AWS account with a private hosted zone that was created by using a different account, the AWS account that created the private hosted zone must first submit a CreateVPCAssociationAuthorization request. Then the account that created the VPC must submit an AssociateVPCWithHostedZone request. - */ - associateVPCWithHostedZone(callback?: (err: AWSError, data: Route53.Types.AssociateVPCWithHostedZoneResponse) => void): Request; - /** - * Creates, changes, or deletes a resource record set, which contains authoritative DNS information for a specified domain name or subdomain name. For example, you can use ChangeResourceRecordSets to create a resource record set that routes traffic for test.example.com to a web server that has an IP address of 192.0.2.44. Change Batches and Transactional Changes The request body must include a document with a ChangeResourceRecordSetsRequest element. The request body contains a list of change items, known as a change batch. Change batches are considered transactional changes. When using the Amazon Route 53 API to change resource record sets, Amazon Route 53 either makes all or none of the changes in a change batch request. This ensures that Amazon Route 53 never partially implements the intended changes to the resource record sets in a hosted zone. For example, a change batch request that deletes the CNAME record for www.example.com and creates an alias resource record set for www.example.com. Amazon Route 53 deletes the first resource record set and creates the second resource record set in a single operation. If either the DELETE or the CREATE action fails, then both changes (plus any other changes in the batch) fail, and the original CNAME record continues to exist. Due to the nature of transactional changes, you can't delete the same resource record set more than once in a single change batch. If you attempt to delete the same change batch more than once, Amazon Route 53 returns an InvalidChangeBatch error. Traffic Flow To create resource record sets for complex routing configurations, use either the traffic flow visual editor in the Amazon Route 53 console or the API actions for traffic policies and traffic policy instances. Save the configuration as a traffic policy, then associate the traffic policy with one or more domain names (such as example.com) or subdomain names (such as www.example.com), in the same hosted zone or in multiple hosted zones. You can roll back the updates if the new configuration isn't performing as expected. For more information, see Using Traffic Flow to Route DNS Traffic in the Amazon Route 53 Developer Guide. Create, Delete, and Upsert Use ChangeResourceRecordsSetsRequest to perform the following actions: CREATE: Creates a resource record set that has the specified values. DELETE: Deletes an existing resource record set that has the specified values. UPSERT: If a resource record set does not already exist, AWS creates it. If a resource set does exist, Amazon Route 53 updates it with the values in the request. Syntaxes for Creating, Updating, and Deleting Resource Record Sets The syntax for a request depends on the type of resource record set that you want to create, delete, or update, such as weighted, alias, or failover. The XML elements in your request must appear in the order listed in the syntax. For an example for each type of resource record set, see "Examples." Don't refer to the syntax in the "Parameter Syntax" section, which includes all of the elements for every kind of resource record set that you can create, delete, or update by using ChangeResourceRecordSets. Change Propagation to Amazon Route 53 DNS Servers When you submit a ChangeResourceRecordSets request, Amazon Route 53 propagates your changes to all of the Amazon Route 53 authoritative DNS servers. While your changes are propagating, GetChange returns a status of PENDING. When propagation is complete, GetChange returns a status of INSYNC. Changes generally propagate to all Amazon Route 53 name servers within 60 seconds. For more information, see GetChange. Limits on ChangeResourceRecordSets Requests For information about the limits on a ChangeResourceRecordSets request, see Limits in the Amazon Route 53 Developer Guide. - */ - changeResourceRecordSets(params: Route53.Types.ChangeResourceRecordSetsRequest, callback?: (err: AWSError, data: Route53.Types.ChangeResourceRecordSetsResponse) => void): Request; - /** - * Creates, changes, or deletes a resource record set, which contains authoritative DNS information for a specified domain name or subdomain name. For example, you can use ChangeResourceRecordSets to create a resource record set that routes traffic for test.example.com to a web server that has an IP address of 192.0.2.44. Change Batches and Transactional Changes The request body must include a document with a ChangeResourceRecordSetsRequest element. The request body contains a list of change items, known as a change batch. Change batches are considered transactional changes. When using the Amazon Route 53 API to change resource record sets, Amazon Route 53 either makes all or none of the changes in a change batch request. This ensures that Amazon Route 53 never partially implements the intended changes to the resource record sets in a hosted zone. For example, a change batch request that deletes the CNAME record for www.example.com and creates an alias resource record set for www.example.com. Amazon Route 53 deletes the first resource record set and creates the second resource record set in a single operation. If either the DELETE or the CREATE action fails, then both changes (plus any other changes in the batch) fail, and the original CNAME record continues to exist. Due to the nature of transactional changes, you can't delete the same resource record set more than once in a single change batch. If you attempt to delete the same change batch more than once, Amazon Route 53 returns an InvalidChangeBatch error. Traffic Flow To create resource record sets for complex routing configurations, use either the traffic flow visual editor in the Amazon Route 53 console or the API actions for traffic policies and traffic policy instances. Save the configuration as a traffic policy, then associate the traffic policy with one or more domain names (such as example.com) or subdomain names (such as www.example.com), in the same hosted zone or in multiple hosted zones. You can roll back the updates if the new configuration isn't performing as expected. For more information, see Using Traffic Flow to Route DNS Traffic in the Amazon Route 53 Developer Guide. Create, Delete, and Upsert Use ChangeResourceRecordsSetsRequest to perform the following actions: CREATE: Creates a resource record set that has the specified values. DELETE: Deletes an existing resource record set that has the specified values. UPSERT: If a resource record set does not already exist, AWS creates it. If a resource set does exist, Amazon Route 53 updates it with the values in the request. Syntaxes for Creating, Updating, and Deleting Resource Record Sets The syntax for a request depends on the type of resource record set that you want to create, delete, or update, such as weighted, alias, or failover. The XML elements in your request must appear in the order listed in the syntax. For an example for each type of resource record set, see "Examples." Don't refer to the syntax in the "Parameter Syntax" section, which includes all of the elements for every kind of resource record set that you can create, delete, or update by using ChangeResourceRecordSets. Change Propagation to Amazon Route 53 DNS Servers When you submit a ChangeResourceRecordSets request, Amazon Route 53 propagates your changes to all of the Amazon Route 53 authoritative DNS servers. While your changes are propagating, GetChange returns a status of PENDING. When propagation is complete, GetChange returns a status of INSYNC. Changes generally propagate to all Amazon Route 53 name servers within 60 seconds. For more information, see GetChange. Limits on ChangeResourceRecordSets Requests For information about the limits on a ChangeResourceRecordSets request, see Limits in the Amazon Route 53 Developer Guide. - */ - changeResourceRecordSets(callback?: (err: AWSError, data: Route53.Types.ChangeResourceRecordSetsResponse) => void): Request; - /** - * Adds, edits, or deletes tags for a health check or a hosted zone. For information about using tags for cost allocation, see Using Cost Allocation Tags in the AWS Billing and Cost Management User Guide. - */ - changeTagsForResource(params: Route53.Types.ChangeTagsForResourceRequest, callback?: (err: AWSError, data: Route53.Types.ChangeTagsForResourceResponse) => void): Request; - /** - * Adds, edits, or deletes tags for a health check or a hosted zone. For information about using tags for cost allocation, see Using Cost Allocation Tags in the AWS Billing and Cost Management User Guide. - */ - changeTagsForResource(callback?: (err: AWSError, data: Route53.Types.ChangeTagsForResourceResponse) => void): Request; - /** - * Creates a new health check. For information about adding health checks to resource record sets, see ResourceRecordSet$HealthCheckId in ChangeResourceRecordSets. ELB Load Balancers If you're registering EC2 instances with an Elastic Load Balancing (ELB) load balancer, do not create Amazon Route 53 health checks for the EC2 instances. When you register an EC2 instance with a load balancer, you configure settings for an ELB health check, which performs a similar function to an Amazon Route 53 health check. Private Hosted Zones You can associate health checks with failover resource record sets in a private hosted zone. Note the following: Amazon Route 53 health checkers are outside the VPC. To check the health of an endpoint within a VPC by IP address, you must assign a public IP address to the instance in the VPC. You can configure a health checker to check the health of an external resource that the instance relies on, such as a database server. You can create a CloudWatch metric, associate an alarm with the metric, and then create a health check that is based on the state of the alarm. For example, you might create a CloudWatch metric that checks the status of the Amazon EC2 StatusCheckFailed metric, add an alarm to the metric, and then create a health check that is based on the state of the alarm. For information about creating CloudWatch metrics and alarms by using the CloudWatch console, see the Amazon CloudWatch User Guide. - */ - createHealthCheck(params: Route53.Types.CreateHealthCheckRequest, callback?: (err: AWSError, data: Route53.Types.CreateHealthCheckResponse) => void): Request; - /** - * Creates a new health check. For information about adding health checks to resource record sets, see ResourceRecordSet$HealthCheckId in ChangeResourceRecordSets. ELB Load Balancers If you're registering EC2 instances with an Elastic Load Balancing (ELB) load balancer, do not create Amazon Route 53 health checks for the EC2 instances. When you register an EC2 instance with a load balancer, you configure settings for an ELB health check, which performs a similar function to an Amazon Route 53 health check. Private Hosted Zones You can associate health checks with failover resource record sets in a private hosted zone. Note the following: Amazon Route 53 health checkers are outside the VPC. To check the health of an endpoint within a VPC by IP address, you must assign a public IP address to the instance in the VPC. You can configure a health checker to check the health of an external resource that the instance relies on, such as a database server. You can create a CloudWatch metric, associate an alarm with the metric, and then create a health check that is based on the state of the alarm. For example, you might create a CloudWatch metric that checks the status of the Amazon EC2 StatusCheckFailed metric, add an alarm to the metric, and then create a health check that is based on the state of the alarm. For information about creating CloudWatch metrics and alarms by using the CloudWatch console, see the Amazon CloudWatch User Guide. - */ - createHealthCheck(callback?: (err: AWSError, data: Route53.Types.CreateHealthCheckResponse) => void): Request; - /** - * Creates a new public hosted zone, which you use to specify how the Domain Name System (DNS) routes traffic on the Internet for a domain, such as example.com, and its subdomains. You can't convert a public hosted zones to a private hosted zone or vice versa. Instead, you must create a new hosted zone with the same name and create new resource record sets. For more information about charges for hosted zones, see Amazon Route 53 Pricing. Note the following: You can't create a hosted zone for a top-level domain (TLD). Amazon Route 53 automatically creates a default SOA record and four NS records for the zone. For more information about SOA and NS records, see NS and SOA Records that Amazon Route 53 Creates for a Hosted Zone in the Amazon Route 53 Developer Guide. If you want to use the same name servers for multiple hosted zones, you can optionally associate a reusable delegation set with the hosted zone. See the DelegationSetId element. If your domain is registered with a registrar other than Amazon Route 53, you must update the name servers with your registrar to make Amazon Route 53 your DNS service. For more information, see Configuring Amazon Route 53 as your DNS Service in the Amazon Route 53 Developer Guide. When you submit a CreateHostedZone request, the initial status of the hosted zone is PENDING. This means that the NS and SOA records are not yet available on all Amazon Route 53 DNS servers. When the NS and SOA records are available, the status of the zone changes to INSYNC. - */ - createHostedZone(params: Route53.Types.CreateHostedZoneRequest, callback?: (err: AWSError, data: Route53.Types.CreateHostedZoneResponse) => void): Request; - /** - * Creates a new public hosted zone, which you use to specify how the Domain Name System (DNS) routes traffic on the Internet for a domain, such as example.com, and its subdomains. You can't convert a public hosted zones to a private hosted zone or vice versa. Instead, you must create a new hosted zone with the same name and create new resource record sets. For more information about charges for hosted zones, see Amazon Route 53 Pricing. Note the following: You can't create a hosted zone for a top-level domain (TLD). Amazon Route 53 automatically creates a default SOA record and four NS records for the zone. For more information about SOA and NS records, see NS and SOA Records that Amazon Route 53 Creates for a Hosted Zone in the Amazon Route 53 Developer Guide. If you want to use the same name servers for multiple hosted zones, you can optionally associate a reusable delegation set with the hosted zone. See the DelegationSetId element. If your domain is registered with a registrar other than Amazon Route 53, you must update the name servers with your registrar to make Amazon Route 53 your DNS service. For more information, see Configuring Amazon Route 53 as your DNS Service in the Amazon Route 53 Developer Guide. When you submit a CreateHostedZone request, the initial status of the hosted zone is PENDING. This means that the NS and SOA records are not yet available on all Amazon Route 53 DNS servers. When the NS and SOA records are available, the status of the zone changes to INSYNC. - */ - createHostedZone(callback?: (err: AWSError, data: Route53.Types.CreateHostedZoneResponse) => void): Request; - /** - * Creates a configuration for DNS query logging. After you create a query logging configuration, Amazon Route 53 begins to publish log data to an Amazon CloudWatch Logs log group. DNS query logs contain information about the queries that Amazon Route 53 receives for a specified public hosted zone, such as the following: Amazon Route 53 edge location that responded to the DNS query Domain or subdomain that was requested DNS record type, such as A or AAAA DNS response code, such as NoError or ServFail Log Group and Resource Policy Before you create a query logging configuration, perform the following operations. If you create a query logging configuration using the Amazon Route 53 console, Amazon Route 53 performs these operations automatically. Create a CloudWatch Logs log group, and make note of the ARN, which you specify when you create a query logging configuration. Note the following: You must create the log group in the us-east-1 region. You must use the same AWS account to create the log group and the hosted zone that you want to configure query logging for. When you create log groups for query logging, we recommend that you use a consistent prefix, for example: /aws/route53/hosted zone name In the next step, you'll create a resource policy, which controls access to one or more log groups and the associated AWS resources, such as Amazon Route 53 hosted zones. There's a limit on the number of resource policies that you can create, so we recommend that you use a consistent prefix so you can use the same resource policy for all the log groups that you create for query logging. Create a CloudWatch Logs resource policy, and give it the permissions that Amazon Route 53 needs to create log streams and to to send query logs to log streams. For the value of Resource, specify the ARN for the log group that you created in the previous step. To use the same resource policy for all the CloudWatch Logs log groups that you created for query logging configurations, replace the hosted zone name with *, for example: arn:aws:logs:us-east-1:123412341234:log-group:/aws/route53/* You can't use the CloudWatch console to create or edit a resource policy. You must use the CloudWatch API, one of the AWS SDKs, or the AWS CLI. Log Streams and Edge Locations When Amazon Route 53 finishes creating the configuration for DNS query logging, it does the following: Creates a log stream for an edge location the first time that the edge location responds to DNS queries for the specified hosted zone. That log stream is used to log all queries that Amazon Route 53 responds to for that edge location. Begins to send query logs to the applicable log stream. The name of each log stream is in the following format: hosted zone ID/edge location code The edge location code is a three-letter code and an arbitrarily assigned number, for example, DFW3. The three-letter code typically corresponds with the International Air Transport Association airport code for an airport near the edge location. (These abbreviations might change in the future.) For a list of edge locations, see "The Amazon Route 53 Global Network" on the Amazon Route 53 Product Details page. Queries That Are Logged Query logs contain only the queries that DNS resolvers forward to Amazon Route 53. If a DNS resolver has already cached the response to a query (such as the IP address for a load balancer for example.com), the resolver will continue to return the cached response. It doesn't forward another query to Amazon Route 53 until the TTL for the corresponding resource record set expires. Depending on how many DNS queries are submitted for a resource record set, and depending on the TTL for that resource record set, query logs might contain information about only one query out of every several thousand queries that are submitted to DNS. For more information about how DNS works, see Routing Internet Traffic to Your Website or Web Application in the Amazon Route 53 Developer Guide. Log File Format For a list of the values in each query log and the format of each value, see Logging DNS Queries in the Amazon Route 53 Developer Guide. Pricing For information about charges for query logs, see Amazon CloudWatch Pricing. How to Stop Logging If you want Amazon Route 53 to stop sending query logs to CloudWatch Logs, delete the query logging configuration. For more information, see DeleteQueryLoggingConfig. - */ - createQueryLoggingConfig(params: Route53.Types.CreateQueryLoggingConfigRequest, callback?: (err: AWSError, data: Route53.Types.CreateQueryLoggingConfigResponse) => void): Request; - /** - * Creates a configuration for DNS query logging. After you create a query logging configuration, Amazon Route 53 begins to publish log data to an Amazon CloudWatch Logs log group. DNS query logs contain information about the queries that Amazon Route 53 receives for a specified public hosted zone, such as the following: Amazon Route 53 edge location that responded to the DNS query Domain or subdomain that was requested DNS record type, such as A or AAAA DNS response code, such as NoError or ServFail Log Group and Resource Policy Before you create a query logging configuration, perform the following operations. If you create a query logging configuration using the Amazon Route 53 console, Amazon Route 53 performs these operations automatically. Create a CloudWatch Logs log group, and make note of the ARN, which you specify when you create a query logging configuration. Note the following: You must create the log group in the us-east-1 region. You must use the same AWS account to create the log group and the hosted zone that you want to configure query logging for. When you create log groups for query logging, we recommend that you use a consistent prefix, for example: /aws/route53/hosted zone name In the next step, you'll create a resource policy, which controls access to one or more log groups and the associated AWS resources, such as Amazon Route 53 hosted zones. There's a limit on the number of resource policies that you can create, so we recommend that you use a consistent prefix so you can use the same resource policy for all the log groups that you create for query logging. Create a CloudWatch Logs resource policy, and give it the permissions that Amazon Route 53 needs to create log streams and to to send query logs to log streams. For the value of Resource, specify the ARN for the log group that you created in the previous step. To use the same resource policy for all the CloudWatch Logs log groups that you created for query logging configurations, replace the hosted zone name with *, for example: arn:aws:logs:us-east-1:123412341234:log-group:/aws/route53/* You can't use the CloudWatch console to create or edit a resource policy. You must use the CloudWatch API, one of the AWS SDKs, or the AWS CLI. Log Streams and Edge Locations When Amazon Route 53 finishes creating the configuration for DNS query logging, it does the following: Creates a log stream for an edge location the first time that the edge location responds to DNS queries for the specified hosted zone. That log stream is used to log all queries that Amazon Route 53 responds to for that edge location. Begins to send query logs to the applicable log stream. The name of each log stream is in the following format: hosted zone ID/edge location code The edge location code is a three-letter code and an arbitrarily assigned number, for example, DFW3. The three-letter code typically corresponds with the International Air Transport Association airport code for an airport near the edge location. (These abbreviations might change in the future.) For a list of edge locations, see "The Amazon Route 53 Global Network" on the Amazon Route 53 Product Details page. Queries That Are Logged Query logs contain only the queries that DNS resolvers forward to Amazon Route 53. If a DNS resolver has already cached the response to a query (such as the IP address for a load balancer for example.com), the resolver will continue to return the cached response. It doesn't forward another query to Amazon Route 53 until the TTL for the corresponding resource record set expires. Depending on how many DNS queries are submitted for a resource record set, and depending on the TTL for that resource record set, query logs might contain information about only one query out of every several thousand queries that are submitted to DNS. For more information about how DNS works, see Routing Internet Traffic to Your Website or Web Application in the Amazon Route 53 Developer Guide. Log File Format For a list of the values in each query log and the format of each value, see Logging DNS Queries in the Amazon Route 53 Developer Guide. Pricing For information about charges for query logs, see Amazon CloudWatch Pricing. How to Stop Logging If you want Amazon Route 53 to stop sending query logs to CloudWatch Logs, delete the query logging configuration. For more information, see DeleteQueryLoggingConfig. - */ - createQueryLoggingConfig(callback?: (err: AWSError, data: Route53.Types.CreateQueryLoggingConfigResponse) => void): Request; - /** - * Creates a delegation set (a group of four name servers) that can be reused by multiple hosted zones. If a hosted zoned ID is specified, CreateReusableDelegationSet marks the delegation set associated with that zone as reusable A reusable delegation set can't be associated with a private hosted zone. For information on how to use a reusable delegation set to configure white label name servers, see Configuring White Label Name Servers. - */ - createReusableDelegationSet(params: Route53.Types.CreateReusableDelegationSetRequest, callback?: (err: AWSError, data: Route53.Types.CreateReusableDelegationSetResponse) => void): Request; - /** - * Creates a delegation set (a group of four name servers) that can be reused by multiple hosted zones. If a hosted zoned ID is specified, CreateReusableDelegationSet marks the delegation set associated with that zone as reusable A reusable delegation set can't be associated with a private hosted zone. For information on how to use a reusable delegation set to configure white label name servers, see Configuring White Label Name Servers. - */ - createReusableDelegationSet(callback?: (err: AWSError, data: Route53.Types.CreateReusableDelegationSetResponse) => void): Request; - /** - * Creates a traffic policy, which you use to create multiple DNS resource record sets for one domain name (such as example.com) or one subdomain name (such as www.example.com). - */ - createTrafficPolicy(params: Route53.Types.CreateTrafficPolicyRequest, callback?: (err: AWSError, data: Route53.Types.CreateTrafficPolicyResponse) => void): Request; - /** - * Creates a traffic policy, which you use to create multiple DNS resource record sets for one domain name (such as example.com) or one subdomain name (such as www.example.com). - */ - createTrafficPolicy(callback?: (err: AWSError, data: Route53.Types.CreateTrafficPolicyResponse) => void): Request; - /** - * Creates resource record sets in a specified hosted zone based on the settings in a specified traffic policy version. In addition, CreateTrafficPolicyInstance associates the resource record sets with a specified domain name (such as example.com) or subdomain name (such as www.example.com). Amazon Route 53 responds to DNS queries for the domain or subdomain name by using the resource record sets that CreateTrafficPolicyInstance created. - */ - createTrafficPolicyInstance(params: Route53.Types.CreateTrafficPolicyInstanceRequest, callback?: (err: AWSError, data: Route53.Types.CreateTrafficPolicyInstanceResponse) => void): Request; - /** - * Creates resource record sets in a specified hosted zone based on the settings in a specified traffic policy version. In addition, CreateTrafficPolicyInstance associates the resource record sets with a specified domain name (such as example.com) or subdomain name (such as www.example.com). Amazon Route 53 responds to DNS queries for the domain or subdomain name by using the resource record sets that CreateTrafficPolicyInstance created. - */ - createTrafficPolicyInstance(callback?: (err: AWSError, data: Route53.Types.CreateTrafficPolicyInstanceResponse) => void): Request; - /** - * Creates a new version of an existing traffic policy. When you create a new version of a traffic policy, you specify the ID of the traffic policy that you want to update and a JSON-formatted document that describes the new version. You use traffic policies to create multiple DNS resource record sets for one domain name (such as example.com) or one subdomain name (such as www.example.com). You can create a maximum of 1000 versions of a traffic policy. If you reach the limit and need to create another version, you'll need to start a new traffic policy. - */ - createTrafficPolicyVersion(params: Route53.Types.CreateTrafficPolicyVersionRequest, callback?: (err: AWSError, data: Route53.Types.CreateTrafficPolicyVersionResponse) => void): Request; - /** - * Creates a new version of an existing traffic policy. When you create a new version of a traffic policy, you specify the ID of the traffic policy that you want to update and a JSON-formatted document that describes the new version. You use traffic policies to create multiple DNS resource record sets for one domain name (such as example.com) or one subdomain name (such as www.example.com). You can create a maximum of 1000 versions of a traffic policy. If you reach the limit and need to create another version, you'll need to start a new traffic policy. - */ - createTrafficPolicyVersion(callback?: (err: AWSError, data: Route53.Types.CreateTrafficPolicyVersionResponse) => void): Request; - /** - * Authorizes the AWS account that created a specified VPC to submit an AssociateVPCWithHostedZone request to associate the VPC with a specified hosted zone that was created by a different account. To submit a CreateVPCAssociationAuthorization request, you must use the account that created the hosted zone. After you authorize the association, use the account that created the VPC to submit an AssociateVPCWithHostedZone request. If you want to associate multiple VPCs that you created by using one account with a hosted zone that you created by using a different account, you must submit one authorization request for each VPC. - */ - createVPCAssociationAuthorization(params: Route53.Types.CreateVPCAssociationAuthorizationRequest, callback?: (err: AWSError, data: Route53.Types.CreateVPCAssociationAuthorizationResponse) => void): Request; - /** - * Authorizes the AWS account that created a specified VPC to submit an AssociateVPCWithHostedZone request to associate the VPC with a specified hosted zone that was created by a different account. To submit a CreateVPCAssociationAuthorization request, you must use the account that created the hosted zone. After you authorize the association, use the account that created the VPC to submit an AssociateVPCWithHostedZone request. If you want to associate multiple VPCs that you created by using one account with a hosted zone that you created by using a different account, you must submit one authorization request for each VPC. - */ - createVPCAssociationAuthorization(callback?: (err: AWSError, data: Route53.Types.CreateVPCAssociationAuthorizationResponse) => void): Request; - /** - * Deletes a health check. Amazon Route 53 does not prevent you from deleting a health check even if the health check is associated with one or more resource record sets. If you delete a health check and you don't update the associated resource record sets, the future status of the health check can't be predicted and may change. This will affect the routing of DNS queries for your DNS failover configuration. For more information, see Replacing and Deleting Health Checks in the Amazon Route 53 Developer Guide. - */ - deleteHealthCheck(params: Route53.Types.DeleteHealthCheckRequest, callback?: (err: AWSError, data: Route53.Types.DeleteHealthCheckResponse) => void): Request; - /** - * Deletes a health check. Amazon Route 53 does not prevent you from deleting a health check even if the health check is associated with one or more resource record sets. If you delete a health check and you don't update the associated resource record sets, the future status of the health check can't be predicted and may change. This will affect the routing of DNS queries for your DNS failover configuration. For more information, see Replacing and Deleting Health Checks in the Amazon Route 53 Developer Guide. - */ - deleteHealthCheck(callback?: (err: AWSError, data: Route53.Types.DeleteHealthCheckResponse) => void): Request; - /** - * Deletes a hosted zone. If the name servers for the hosted zone are associated with a domain and if you want to make the domain unavailable on the Internet, we recommend that you delete the name servers from the domain to prevent future DNS queries from possibly being misrouted. If the domain is registered with Amazon Route 53, see UpdateDomainNameservers. If the domain is registered with another registrar, use the method provided by the registrar to delete name servers for the domain. Some domain registries don't allow you to remove all of the name servers for a domain. If the registry for your domain requires one or more name servers, we recommend that you delete the hosted zone only if you transfer DNS service to another service provider, and you replace the name servers for the domain with name servers from the new provider. You can delete a hosted zone only if it contains only the default SOA record and NS resource record sets. If the hosted zone contains other resource record sets, you must delete them before you can delete the hosted zone. If you try to delete a hosted zone that contains other resource record sets, the request fails, and Amazon Route 53 returns a HostedZoneNotEmpty error. For information about deleting records from your hosted zone, see ChangeResourceRecordSets. To verify that the hosted zone has been deleted, do one of the following: Use the GetHostedZone action to request information about the hosted zone. Use the ListHostedZones action to get a list of the hosted zones associated with the current AWS account. - */ - deleteHostedZone(params: Route53.Types.DeleteHostedZoneRequest, callback?: (err: AWSError, data: Route53.Types.DeleteHostedZoneResponse) => void): Request; - /** - * Deletes a hosted zone. If the name servers for the hosted zone are associated with a domain and if you want to make the domain unavailable on the Internet, we recommend that you delete the name servers from the domain to prevent future DNS queries from possibly being misrouted. If the domain is registered with Amazon Route 53, see UpdateDomainNameservers. If the domain is registered with another registrar, use the method provided by the registrar to delete name servers for the domain. Some domain registries don't allow you to remove all of the name servers for a domain. If the registry for your domain requires one or more name servers, we recommend that you delete the hosted zone only if you transfer DNS service to another service provider, and you replace the name servers for the domain with name servers from the new provider. You can delete a hosted zone only if it contains only the default SOA record and NS resource record sets. If the hosted zone contains other resource record sets, you must delete them before you can delete the hosted zone. If you try to delete a hosted zone that contains other resource record sets, the request fails, and Amazon Route 53 returns a HostedZoneNotEmpty error. For information about deleting records from your hosted zone, see ChangeResourceRecordSets. To verify that the hosted zone has been deleted, do one of the following: Use the GetHostedZone action to request information about the hosted zone. Use the ListHostedZones action to get a list of the hosted zones associated with the current AWS account. - */ - deleteHostedZone(callback?: (err: AWSError, data: Route53.Types.DeleteHostedZoneResponse) => void): Request; - /** - * Deletes a configuration for DNS query logging. If you delete a configuration, Amazon Route 53 stops sending query logs to CloudWatch Logs. Amazon Route 53 doesn't delete any logs that are already in CloudWatch Logs. For more information about DNS query logs, see CreateQueryLoggingConfig. - */ - deleteQueryLoggingConfig(params: Route53.Types.DeleteQueryLoggingConfigRequest, callback?: (err: AWSError, data: Route53.Types.DeleteQueryLoggingConfigResponse) => void): Request; - /** - * Deletes a configuration for DNS query logging. If you delete a configuration, Amazon Route 53 stops sending query logs to CloudWatch Logs. Amazon Route 53 doesn't delete any logs that are already in CloudWatch Logs. For more information about DNS query logs, see CreateQueryLoggingConfig. - */ - deleteQueryLoggingConfig(callback?: (err: AWSError, data: Route53.Types.DeleteQueryLoggingConfigResponse) => void): Request; - /** - * Deletes a reusable delegation set. You can delete a reusable delegation set only if it isn't associated with any hosted zones. To verify that the reusable delegation set is not associated with any hosted zones, submit a GetReusableDelegationSet request and specify the ID of the reusable delegation set that you want to delete. - */ - deleteReusableDelegationSet(params: Route53.Types.DeleteReusableDelegationSetRequest, callback?: (err: AWSError, data: Route53.Types.DeleteReusableDelegationSetResponse) => void): Request; - /** - * Deletes a reusable delegation set. You can delete a reusable delegation set only if it isn't associated with any hosted zones. To verify that the reusable delegation set is not associated with any hosted zones, submit a GetReusableDelegationSet request and specify the ID of the reusable delegation set that you want to delete. - */ - deleteReusableDelegationSet(callback?: (err: AWSError, data: Route53.Types.DeleteReusableDelegationSetResponse) => void): Request; - /** - * Deletes a traffic policy. - */ - deleteTrafficPolicy(params: Route53.Types.DeleteTrafficPolicyRequest, callback?: (err: AWSError, data: Route53.Types.DeleteTrafficPolicyResponse) => void): Request; - /** - * Deletes a traffic policy. - */ - deleteTrafficPolicy(callback?: (err: AWSError, data: Route53.Types.DeleteTrafficPolicyResponse) => void): Request; - /** - * Deletes a traffic policy instance and all of the resource record sets that Amazon Route 53 created when you created the instance. In the Amazon Route 53 console, traffic policy instances are known as policy records. - */ - deleteTrafficPolicyInstance(params: Route53.Types.DeleteTrafficPolicyInstanceRequest, callback?: (err: AWSError, data: Route53.Types.DeleteTrafficPolicyInstanceResponse) => void): Request; - /** - * Deletes a traffic policy instance and all of the resource record sets that Amazon Route 53 created when you created the instance. In the Amazon Route 53 console, traffic policy instances are known as policy records. - */ - deleteTrafficPolicyInstance(callback?: (err: AWSError, data: Route53.Types.DeleteTrafficPolicyInstanceResponse) => void): Request; - /** - * Removes authorization to submit an AssociateVPCWithHostedZone request to associate a specified VPC with a hosted zone that was created by a different account. You must use the account that created the hosted zone to submit a DeleteVPCAssociationAuthorization request. Sending this request only prevents the AWS account that created the VPC from associating the VPC with the Amazon Route 53 hosted zone in the future. If the VPC is already associated with the hosted zone, DeleteVPCAssociationAuthorization won't disassociate the VPC from the hosted zone. If you want to delete an existing association, use DisassociateVPCFromHostedZone. - */ - deleteVPCAssociationAuthorization(params: Route53.Types.DeleteVPCAssociationAuthorizationRequest, callback?: (err: AWSError, data: Route53.Types.DeleteVPCAssociationAuthorizationResponse) => void): Request; - /** - * Removes authorization to submit an AssociateVPCWithHostedZone request to associate a specified VPC with a hosted zone that was created by a different account. You must use the account that created the hosted zone to submit a DeleteVPCAssociationAuthorization request. Sending this request only prevents the AWS account that created the VPC from associating the VPC with the Amazon Route 53 hosted zone in the future. If the VPC is already associated with the hosted zone, DeleteVPCAssociationAuthorization won't disassociate the VPC from the hosted zone. If you want to delete an existing association, use DisassociateVPCFromHostedZone. - */ - deleteVPCAssociationAuthorization(callback?: (err: AWSError, data: Route53.Types.DeleteVPCAssociationAuthorizationResponse) => void): Request; - /** - * Disassociates a VPC from a Amazon Route 53 private hosted zone. You can't disassociate the last VPC from a private hosted zone. You can't disassociate a VPC from a private hosted zone when only one VPC is associated with the hosted zone. You also can't convert a private hosted zone into a public hosted zone. - */ - disassociateVPCFromHostedZone(params: Route53.Types.DisassociateVPCFromHostedZoneRequest, callback?: (err: AWSError, data: Route53.Types.DisassociateVPCFromHostedZoneResponse) => void): Request; - /** - * Disassociates a VPC from a Amazon Route 53 private hosted zone. You can't disassociate the last VPC from a private hosted zone. You can't disassociate a VPC from a private hosted zone when only one VPC is associated with the hosted zone. You also can't convert a private hosted zone into a public hosted zone. - */ - disassociateVPCFromHostedZone(callback?: (err: AWSError, data: Route53.Types.DisassociateVPCFromHostedZoneResponse) => void): Request; - /** - * Returns the current status of a change batch request. The status is one of the following values: PENDING indicates that the changes in this request have not propagated to all Amazon Route 53 DNS servers. This is the initial status of all change batch requests. INSYNC indicates that the changes have propagated to all Amazon Route 53 DNS servers. - */ - getChange(params: Route53.Types.GetChangeRequest, callback?: (err: AWSError, data: Route53.Types.GetChangeResponse) => void): Request; - /** - * Returns the current status of a change batch request. The status is one of the following values: PENDING indicates that the changes in this request have not propagated to all Amazon Route 53 DNS servers. This is the initial status of all change batch requests. INSYNC indicates that the changes have propagated to all Amazon Route 53 DNS servers. - */ - getChange(callback?: (err: AWSError, data: Route53.Types.GetChangeResponse) => void): Request; - /** - * GetCheckerIpRanges still works, but we recommend that you download ip-ranges.json, which includes IP address ranges for all AWS services. For more information, see IP Address Ranges of Amazon Route 53 Servers in the Amazon Route 53 Developer Guide. - */ - getCheckerIpRanges(params: Route53.Types.GetCheckerIpRangesRequest, callback?: (err: AWSError, data: Route53.Types.GetCheckerIpRangesResponse) => void): Request; - /** - * GetCheckerIpRanges still works, but we recommend that you download ip-ranges.json, which includes IP address ranges for all AWS services. For more information, see IP Address Ranges of Amazon Route 53 Servers in the Amazon Route 53 Developer Guide. - */ - getCheckerIpRanges(callback?: (err: AWSError, data: Route53.Types.GetCheckerIpRangesResponse) => void): Request; - /** - * Gets information about whether a specified geographic location is supported for Amazon Route 53 geolocation resource record sets. Use the following syntax to determine whether a continent is supported for geolocation: GET /2013-04-01/geolocation?ContinentCode=two-letter abbreviation for a continent Use the following syntax to determine whether a country is supported for geolocation: GET /2013-04-01/geolocation?CountryCode=two-character country code Use the following syntax to determine whether a subdivision of a country is supported for geolocation: GET /2013-04-01/geolocation?CountryCode=two-character country code&SubdivisionCode=subdivision code - */ - getGeoLocation(params: Route53.Types.GetGeoLocationRequest, callback?: (err: AWSError, data: Route53.Types.GetGeoLocationResponse) => void): Request; - /** - * Gets information about whether a specified geographic location is supported for Amazon Route 53 geolocation resource record sets. Use the following syntax to determine whether a continent is supported for geolocation: GET /2013-04-01/geolocation?ContinentCode=two-letter abbreviation for a continent Use the following syntax to determine whether a country is supported for geolocation: GET /2013-04-01/geolocation?CountryCode=two-character country code Use the following syntax to determine whether a subdivision of a country is supported for geolocation: GET /2013-04-01/geolocation?CountryCode=two-character country code&SubdivisionCode=subdivision code - */ - getGeoLocation(callback?: (err: AWSError, data: Route53.Types.GetGeoLocationResponse) => void): Request; - /** - * Gets information about a specified health check. - */ - getHealthCheck(params: Route53.Types.GetHealthCheckRequest, callback?: (err: AWSError, data: Route53.Types.GetHealthCheckResponse) => void): Request; - /** - * Gets information about a specified health check. - */ - getHealthCheck(callback?: (err: AWSError, data: Route53.Types.GetHealthCheckResponse) => void): Request; - /** - * Retrieves the number of health checks that are associated with the current AWS account. - */ - getHealthCheckCount(params: Route53.Types.GetHealthCheckCountRequest, callback?: (err: AWSError, data: Route53.Types.GetHealthCheckCountResponse) => void): Request; - /** - * Retrieves the number of health checks that are associated with the current AWS account. - */ - getHealthCheckCount(callback?: (err: AWSError, data: Route53.Types.GetHealthCheckCountResponse) => void): Request; - /** - * Gets the reason that a specified health check failed most recently. - */ - getHealthCheckLastFailureReason(params: Route53.Types.GetHealthCheckLastFailureReasonRequest, callback?: (err: AWSError, data: Route53.Types.GetHealthCheckLastFailureReasonResponse) => void): Request; - /** - * Gets the reason that a specified health check failed most recently. - */ - getHealthCheckLastFailureReason(callback?: (err: AWSError, data: Route53.Types.GetHealthCheckLastFailureReasonResponse) => void): Request; - /** - * Gets status of a specified health check. - */ - getHealthCheckStatus(params: Route53.Types.GetHealthCheckStatusRequest, callback?: (err: AWSError, data: Route53.Types.GetHealthCheckStatusResponse) => void): Request; - /** - * Gets status of a specified health check. - */ - getHealthCheckStatus(callback?: (err: AWSError, data: Route53.Types.GetHealthCheckStatusResponse) => void): Request; - /** - * Gets information about a specified hosted zone including the four name servers assigned to the hosted zone. - */ - getHostedZone(params: Route53.Types.GetHostedZoneRequest, callback?: (err: AWSError, data: Route53.Types.GetHostedZoneResponse) => void): Request; - /** - * Gets information about a specified hosted zone including the four name servers assigned to the hosted zone. - */ - getHostedZone(callback?: (err: AWSError, data: Route53.Types.GetHostedZoneResponse) => void): Request; - /** - * Retrieves the number of hosted zones that are associated with the current AWS account. - */ - getHostedZoneCount(params: Route53.Types.GetHostedZoneCountRequest, callback?: (err: AWSError, data: Route53.Types.GetHostedZoneCountResponse) => void): Request; - /** - * Retrieves the number of hosted zones that are associated with the current AWS account. - */ - getHostedZoneCount(callback?: (err: AWSError, data: Route53.Types.GetHostedZoneCountResponse) => void): Request; - /** - * Gets information about a specified configuration for DNS query logging. For more information about DNS query logs, see CreateQueryLoggingConfig and Logging DNS Queries. - */ - getQueryLoggingConfig(params: Route53.Types.GetQueryLoggingConfigRequest, callback?: (err: AWSError, data: Route53.Types.GetQueryLoggingConfigResponse) => void): Request; - /** - * Gets information about a specified configuration for DNS query logging. For more information about DNS query logs, see CreateQueryLoggingConfig and Logging DNS Queries. - */ - getQueryLoggingConfig(callback?: (err: AWSError, data: Route53.Types.GetQueryLoggingConfigResponse) => void): Request; - /** - * Retrieves information about a specified reusable delegation set, including the four name servers that are assigned to the delegation set. - */ - getReusableDelegationSet(params: Route53.Types.GetReusableDelegationSetRequest, callback?: (err: AWSError, data: Route53.Types.GetReusableDelegationSetResponse) => void): Request; - /** - * Retrieves information about a specified reusable delegation set, including the four name servers that are assigned to the delegation set. - */ - getReusableDelegationSet(callback?: (err: AWSError, data: Route53.Types.GetReusableDelegationSetResponse) => void): Request; - /** - * Gets information about a specific traffic policy version. - */ - getTrafficPolicy(params: Route53.Types.GetTrafficPolicyRequest, callback?: (err: AWSError, data: Route53.Types.GetTrafficPolicyResponse) => void): Request; - /** - * Gets information about a specific traffic policy version. - */ - getTrafficPolicy(callback?: (err: AWSError, data: Route53.Types.GetTrafficPolicyResponse) => void): Request; - /** - * Gets information about a specified traffic policy instance. After you submit a CreateTrafficPolicyInstance or an UpdateTrafficPolicyInstance request, there's a brief delay while Amazon Route 53 creates the resource record sets that are specified in the traffic policy definition. For more information, see the State response element. In the Amazon Route 53 console, traffic policy instances are known as policy records. - */ - getTrafficPolicyInstance(params: Route53.Types.GetTrafficPolicyInstanceRequest, callback?: (err: AWSError, data: Route53.Types.GetTrafficPolicyInstanceResponse) => void): Request; - /** - * Gets information about a specified traffic policy instance. After you submit a CreateTrafficPolicyInstance or an UpdateTrafficPolicyInstance request, there's a brief delay while Amazon Route 53 creates the resource record sets that are specified in the traffic policy definition. For more information, see the State response element. In the Amazon Route 53 console, traffic policy instances are known as policy records. - */ - getTrafficPolicyInstance(callback?: (err: AWSError, data: Route53.Types.GetTrafficPolicyInstanceResponse) => void): Request; - /** - * Gets the number of traffic policy instances that are associated with the current AWS account. - */ - getTrafficPolicyInstanceCount(params: Route53.Types.GetTrafficPolicyInstanceCountRequest, callback?: (err: AWSError, data: Route53.Types.GetTrafficPolicyInstanceCountResponse) => void): Request; - /** - * Gets the number of traffic policy instances that are associated with the current AWS account. - */ - getTrafficPolicyInstanceCount(callback?: (err: AWSError, data: Route53.Types.GetTrafficPolicyInstanceCountResponse) => void): Request; - /** - * Retrieves a list of supported geo locations. Countries are listed first, and continents are listed last. If Amazon Route 53 supports subdivisions for a country (for example, states or provinces), the subdivisions for that country are listed in alphabetical order immediately after the corresponding country. - */ - listGeoLocations(params: Route53.Types.ListGeoLocationsRequest, callback?: (err: AWSError, data: Route53.Types.ListGeoLocationsResponse) => void): Request; - /** - * Retrieves a list of supported geo locations. Countries are listed first, and continents are listed last. If Amazon Route 53 supports subdivisions for a country (for example, states or provinces), the subdivisions for that country are listed in alphabetical order immediately after the corresponding country. - */ - listGeoLocations(callback?: (err: AWSError, data: Route53.Types.ListGeoLocationsResponse) => void): Request; - /** - * Retrieve a list of the health checks that are associated with the current AWS account. - */ - listHealthChecks(params: Route53.Types.ListHealthChecksRequest, callback?: (err: AWSError, data: Route53.Types.ListHealthChecksResponse) => void): Request; - /** - * Retrieve a list of the health checks that are associated with the current AWS account. - */ - listHealthChecks(callback?: (err: AWSError, data: Route53.Types.ListHealthChecksResponse) => void): Request; - /** - * Retrieves a list of the public and private hosted zones that are associated with the current AWS account. The response includes a HostedZones child element for each hosted zone. Amazon Route 53 returns a maximum of 100 items in each response. If you have a lot of hosted zones, you can use the maxitems parameter to list them in groups of up to 100. - */ - listHostedZones(params: Route53.Types.ListHostedZonesRequest, callback?: (err: AWSError, data: Route53.Types.ListHostedZonesResponse) => void): Request; - /** - * Retrieves a list of the public and private hosted zones that are associated with the current AWS account. The response includes a HostedZones child element for each hosted zone. Amazon Route 53 returns a maximum of 100 items in each response. If you have a lot of hosted zones, you can use the maxitems parameter to list them in groups of up to 100. - */ - listHostedZones(callback?: (err: AWSError, data: Route53.Types.ListHostedZonesResponse) => void): Request; - /** - * Retrieves a list of your hosted zones in lexicographic order. The response includes a HostedZones child element for each hosted zone created by the current AWS account. ListHostedZonesByName sorts hosted zones by name with the labels reversed. For example: com.example.www. Note the trailing dot, which can change the sort order in some circumstances. If the domain name includes escape characters or Punycode, ListHostedZonesByName alphabetizes the domain name using the escaped or Punycoded value, which is the format that Amazon Route 53 saves in its database. For example, to create a hosted zone for exämple.com, you specify ex\344mple.com for the domain name. ListHostedZonesByName alphabetizes it as: com.ex\344mple. The labels are reversed and alphabetized using the escaped value. For more information about valid domain name formats, including internationalized domain names, see DNS Domain Name Format in the Amazon Route 53 Developer Guide. Amazon Route 53 returns up to 100 items in each response. If you have a lot of hosted zones, use the MaxItems parameter to list them in groups of up to 100. The response includes values that help navigate from one group of MaxItems hosted zones to the next: The DNSName and HostedZoneId elements in the response contain the values, if any, specified for the dnsname and hostedzoneid parameters in the request that produced the current response. The MaxItems element in the response contains the value, if any, that you specified for the maxitems parameter in the request that produced the current response. If the value of IsTruncated in the response is true, there are more hosted zones associated with the current AWS account. If IsTruncated is false, this response includes the last hosted zone that is associated with the current account. The NextDNSName element and NextHostedZoneId elements are omitted from the response. The NextDNSName and NextHostedZoneId elements in the response contain the domain name and the hosted zone ID of the next hosted zone that is associated with the current AWS account. If you want to list more hosted zones, make another call to ListHostedZonesByName, and specify the value of NextDNSName and NextHostedZoneId in the dnsname and hostedzoneid parameters, respectively. - */ - listHostedZonesByName(params: Route53.Types.ListHostedZonesByNameRequest, callback?: (err: AWSError, data: Route53.Types.ListHostedZonesByNameResponse) => void): Request; - /** - * Retrieves a list of your hosted zones in lexicographic order. The response includes a HostedZones child element for each hosted zone created by the current AWS account. ListHostedZonesByName sorts hosted zones by name with the labels reversed. For example: com.example.www. Note the trailing dot, which can change the sort order in some circumstances. If the domain name includes escape characters or Punycode, ListHostedZonesByName alphabetizes the domain name using the escaped or Punycoded value, which is the format that Amazon Route 53 saves in its database. For example, to create a hosted zone for exämple.com, you specify ex\344mple.com for the domain name. ListHostedZonesByName alphabetizes it as: com.ex\344mple. The labels are reversed and alphabetized using the escaped value. For more information about valid domain name formats, including internationalized domain names, see DNS Domain Name Format in the Amazon Route 53 Developer Guide. Amazon Route 53 returns up to 100 items in each response. If you have a lot of hosted zones, use the MaxItems parameter to list them in groups of up to 100. The response includes values that help navigate from one group of MaxItems hosted zones to the next: The DNSName and HostedZoneId elements in the response contain the values, if any, specified for the dnsname and hostedzoneid parameters in the request that produced the current response. The MaxItems element in the response contains the value, if any, that you specified for the maxitems parameter in the request that produced the current response. If the value of IsTruncated in the response is true, there are more hosted zones associated with the current AWS account. If IsTruncated is false, this response includes the last hosted zone that is associated with the current account. The NextDNSName element and NextHostedZoneId elements are omitted from the response. The NextDNSName and NextHostedZoneId elements in the response contain the domain name and the hosted zone ID of the next hosted zone that is associated with the current AWS account. If you want to list more hosted zones, make another call to ListHostedZonesByName, and specify the value of NextDNSName and NextHostedZoneId in the dnsname and hostedzoneid parameters, respectively. - */ - listHostedZonesByName(callback?: (err: AWSError, data: Route53.Types.ListHostedZonesByNameResponse) => void): Request; - /** - * Lists the configurations for DNS query logging that are associated with the current AWS account or the configuration that is associated with a specified hosted zone. For more information about DNS query logs, see CreateQueryLoggingConfig. Additional information, including the format of DNS query logs, appears in Logging DNS Queries in the Amazon Route 53 Developer Guide. - */ - listQueryLoggingConfigs(params: Route53.Types.ListQueryLoggingConfigsRequest, callback?: (err: AWSError, data: Route53.Types.ListQueryLoggingConfigsResponse) => void): Request; - /** - * Lists the configurations for DNS query logging that are associated with the current AWS account or the configuration that is associated with a specified hosted zone. For more information about DNS query logs, see CreateQueryLoggingConfig. Additional information, including the format of DNS query logs, appears in Logging DNS Queries in the Amazon Route 53 Developer Guide. - */ - listQueryLoggingConfigs(callback?: (err: AWSError, data: Route53.Types.ListQueryLoggingConfigsResponse) => void): Request; - /** - * Lists the resource record sets in a specified hosted zone. ListResourceRecordSets returns up to 100 resource record sets at a time in ASCII order, beginning at a position specified by the name and type elements. The action sorts results first by DNS name with the labels reversed, for example: com.example.www. Note the trailing dot, which can change the sort order in some circumstances. When multiple records have the same DNS name, the action sorts results by the record type. You can use the name and type elements to adjust the beginning position of the list of resource record sets returned: If you do not specify Name or Type The results begin with the first resource record set that the hosted zone contains. If you specify Name but not Type The results begin with the first resource record set in the list whose name is greater than or equal to Name. If you specify Type but not Name Amazon Route 53 returns the InvalidInput error. If you specify both Name and Type The results begin with the first resource record set in the list whose name is greater than or equal to Name, and whose type is greater than or equal to Type. This action returns the most current version of the records. This includes records that are PENDING, and that are not yet available on all Amazon Route 53 DNS servers. To ensure that you get an accurate listing of the resource record sets for a hosted zone at a point in time, do not submit a ChangeResourceRecordSets request while you're paging through the results of a ListResourceRecordSets request. If you do, some pages may display results without the latest changes while other pages display results with the latest changes. - */ - listResourceRecordSets(params: Route53.Types.ListResourceRecordSetsRequest, callback?: (err: AWSError, data: Route53.Types.ListResourceRecordSetsResponse) => void): Request; - /** - * Lists the resource record sets in a specified hosted zone. ListResourceRecordSets returns up to 100 resource record sets at a time in ASCII order, beginning at a position specified by the name and type elements. The action sorts results first by DNS name with the labels reversed, for example: com.example.www. Note the trailing dot, which can change the sort order in some circumstances. When multiple records have the same DNS name, the action sorts results by the record type. You can use the name and type elements to adjust the beginning position of the list of resource record sets returned: If you do not specify Name or Type The results begin with the first resource record set that the hosted zone contains. If you specify Name but not Type The results begin with the first resource record set in the list whose name is greater than or equal to Name. If you specify Type but not Name Amazon Route 53 returns the InvalidInput error. If you specify both Name and Type The results begin with the first resource record set in the list whose name is greater than or equal to Name, and whose type is greater than or equal to Type. This action returns the most current version of the records. This includes records that are PENDING, and that are not yet available on all Amazon Route 53 DNS servers. To ensure that you get an accurate listing of the resource record sets for a hosted zone at a point in time, do not submit a ChangeResourceRecordSets request while you're paging through the results of a ListResourceRecordSets request. If you do, some pages may display results without the latest changes while other pages display results with the latest changes. - */ - listResourceRecordSets(callback?: (err: AWSError, data: Route53.Types.ListResourceRecordSetsResponse) => void): Request; - /** - * Retrieves a list of the reusable delegation sets that are associated with the current AWS account. - */ - listReusableDelegationSets(params: Route53.Types.ListReusableDelegationSetsRequest, callback?: (err: AWSError, data: Route53.Types.ListReusableDelegationSetsResponse) => void): Request; - /** - * Retrieves a list of the reusable delegation sets that are associated with the current AWS account. - */ - listReusableDelegationSets(callback?: (err: AWSError, data: Route53.Types.ListReusableDelegationSetsResponse) => void): Request; - /** - * Lists tags for one health check or hosted zone. For information about using tags for cost allocation, see Using Cost Allocation Tags in the AWS Billing and Cost Management User Guide. - */ - listTagsForResource(params: Route53.Types.ListTagsForResourceRequest, callback?: (err: AWSError, data: Route53.Types.ListTagsForResourceResponse) => void): Request; - /** - * Lists tags for one health check or hosted zone. For information about using tags for cost allocation, see Using Cost Allocation Tags in the AWS Billing and Cost Management User Guide. - */ - listTagsForResource(callback?: (err: AWSError, data: Route53.Types.ListTagsForResourceResponse) => void): Request; - /** - * Lists tags for up to 10 health checks or hosted zones. For information about using tags for cost allocation, see Using Cost Allocation Tags in the AWS Billing and Cost Management User Guide. - */ - listTagsForResources(params: Route53.Types.ListTagsForResourcesRequest, callback?: (err: AWSError, data: Route53.Types.ListTagsForResourcesResponse) => void): Request; - /** - * Lists tags for up to 10 health checks or hosted zones. For information about using tags for cost allocation, see Using Cost Allocation Tags in the AWS Billing and Cost Management User Guide. - */ - listTagsForResources(callback?: (err: AWSError, data: Route53.Types.ListTagsForResourcesResponse) => void): Request; - /** - * Gets information about the latest version for every traffic policy that is associated with the current AWS account. Policies are listed in the order in which they were created. - */ - listTrafficPolicies(params: Route53.Types.ListTrafficPoliciesRequest, callback?: (err: AWSError, data: Route53.Types.ListTrafficPoliciesResponse) => void): Request; - /** - * Gets information about the latest version for every traffic policy that is associated with the current AWS account. Policies are listed in the order in which they were created. - */ - listTrafficPolicies(callback?: (err: AWSError, data: Route53.Types.ListTrafficPoliciesResponse) => void): Request; - /** - * Gets information about the traffic policy instances that you created by using the current AWS account. After you submit an UpdateTrafficPolicyInstance request, there's a brief delay while Amazon Route 53 creates the resource record sets that are specified in the traffic policy definition. For more information, see the State response element. Amazon Route 53 returns a maximum of 100 items in each response. If you have a lot of traffic policy instances, you can use the MaxItems parameter to list them in groups of up to 100. - */ - listTrafficPolicyInstances(params: Route53.Types.ListTrafficPolicyInstancesRequest, callback?: (err: AWSError, data: Route53.Types.ListTrafficPolicyInstancesResponse) => void): Request; - /** - * Gets information about the traffic policy instances that you created by using the current AWS account. After you submit an UpdateTrafficPolicyInstance request, there's a brief delay while Amazon Route 53 creates the resource record sets that are specified in the traffic policy definition. For more information, see the State response element. Amazon Route 53 returns a maximum of 100 items in each response. If you have a lot of traffic policy instances, you can use the MaxItems parameter to list them in groups of up to 100. - */ - listTrafficPolicyInstances(callback?: (err: AWSError, data: Route53.Types.ListTrafficPolicyInstancesResponse) => void): Request; - /** - * Gets information about the traffic policy instances that you created in a specified hosted zone. After you submit a CreateTrafficPolicyInstance or an UpdateTrafficPolicyInstance request, there's a brief delay while Amazon Route 53 creates the resource record sets that are specified in the traffic policy definition. For more information, see the State response element. Amazon Route 53 returns a maximum of 100 items in each response. If you have a lot of traffic policy instances, you can use the MaxItems parameter to list them in groups of up to 100. - */ - listTrafficPolicyInstancesByHostedZone(params: Route53.Types.ListTrafficPolicyInstancesByHostedZoneRequest, callback?: (err: AWSError, data: Route53.Types.ListTrafficPolicyInstancesByHostedZoneResponse) => void): Request; - /** - * Gets information about the traffic policy instances that you created in a specified hosted zone. After you submit a CreateTrafficPolicyInstance or an UpdateTrafficPolicyInstance request, there's a brief delay while Amazon Route 53 creates the resource record sets that are specified in the traffic policy definition. For more information, see the State response element. Amazon Route 53 returns a maximum of 100 items in each response. If you have a lot of traffic policy instances, you can use the MaxItems parameter to list them in groups of up to 100. - */ - listTrafficPolicyInstancesByHostedZone(callback?: (err: AWSError, data: Route53.Types.ListTrafficPolicyInstancesByHostedZoneResponse) => void): Request; - /** - * Gets information about the traffic policy instances that you created by using a specify traffic policy version. After you submit a CreateTrafficPolicyInstance or an UpdateTrafficPolicyInstance request, there's a brief delay while Amazon Route 53 creates the resource record sets that are specified in the traffic policy definition. For more information, see the State response element. Amazon Route 53 returns a maximum of 100 items in each response. If you have a lot of traffic policy instances, you can use the MaxItems parameter to list them in groups of up to 100. - */ - listTrafficPolicyInstancesByPolicy(params: Route53.Types.ListTrafficPolicyInstancesByPolicyRequest, callback?: (err: AWSError, data: Route53.Types.ListTrafficPolicyInstancesByPolicyResponse) => void): Request; - /** - * Gets information about the traffic policy instances that you created by using a specify traffic policy version. After you submit a CreateTrafficPolicyInstance or an UpdateTrafficPolicyInstance request, there's a brief delay while Amazon Route 53 creates the resource record sets that are specified in the traffic policy definition. For more information, see the State response element. Amazon Route 53 returns a maximum of 100 items in each response. If you have a lot of traffic policy instances, you can use the MaxItems parameter to list them in groups of up to 100. - */ - listTrafficPolicyInstancesByPolicy(callback?: (err: AWSError, data: Route53.Types.ListTrafficPolicyInstancesByPolicyResponse) => void): Request; - /** - * Gets information about all of the versions for a specified traffic policy. Traffic policy versions are listed in numerical order by VersionNumber. - */ - listTrafficPolicyVersions(params: Route53.Types.ListTrafficPolicyVersionsRequest, callback?: (err: AWSError, data: Route53.Types.ListTrafficPolicyVersionsResponse) => void): Request; - /** - * Gets information about all of the versions for a specified traffic policy. Traffic policy versions are listed in numerical order by VersionNumber. - */ - listTrafficPolicyVersions(callback?: (err: AWSError, data: Route53.Types.ListTrafficPolicyVersionsResponse) => void): Request; - /** - * Gets a list of the VPCs that were created by other accounts and that can be associated with a specified hosted zone because you've submitted one or more CreateVPCAssociationAuthorization requests. The response includes a VPCs element with a VPC child element for each VPC that can be associated with the hosted zone. - */ - listVPCAssociationAuthorizations(params: Route53.Types.ListVPCAssociationAuthorizationsRequest, callback?: (err: AWSError, data: Route53.Types.ListVPCAssociationAuthorizationsResponse) => void): Request; - /** - * Gets a list of the VPCs that were created by other accounts and that can be associated with a specified hosted zone because you've submitted one or more CreateVPCAssociationAuthorization requests. The response includes a VPCs element with a VPC child element for each VPC that can be associated with the hosted zone. - */ - listVPCAssociationAuthorizations(callback?: (err: AWSError, data: Route53.Types.ListVPCAssociationAuthorizationsResponse) => void): Request; - /** - * Gets the value that Amazon Route 53 returns in response to a DNS request for a specified record name and type. You can optionally specify the IP address of a DNS resolver, an EDNS0 client subnet IP address, and a subnet mask. - */ - testDNSAnswer(params: Route53.Types.TestDNSAnswerRequest, callback?: (err: AWSError, data: Route53.Types.TestDNSAnswerResponse) => void): Request; - /** - * Gets the value that Amazon Route 53 returns in response to a DNS request for a specified record name and type. You can optionally specify the IP address of a DNS resolver, an EDNS0 client subnet IP address, and a subnet mask. - */ - testDNSAnswer(callback?: (err: AWSError, data: Route53.Types.TestDNSAnswerResponse) => void): Request; - /** - * Updates an existing health check. Note that some values can't be updated. For more information about updating health checks, see Creating, Updating, and Deleting Health Checks in the Amazon Route 53 Developer Guide. - */ - updateHealthCheck(params: Route53.Types.UpdateHealthCheckRequest, callback?: (err: AWSError, data: Route53.Types.UpdateHealthCheckResponse) => void): Request; - /** - * Updates an existing health check. Note that some values can't be updated. For more information about updating health checks, see Creating, Updating, and Deleting Health Checks in the Amazon Route 53 Developer Guide. - */ - updateHealthCheck(callback?: (err: AWSError, data: Route53.Types.UpdateHealthCheckResponse) => void): Request; - /** - * Updates the comment for a specified hosted zone. - */ - updateHostedZoneComment(params: Route53.Types.UpdateHostedZoneCommentRequest, callback?: (err: AWSError, data: Route53.Types.UpdateHostedZoneCommentResponse) => void): Request; - /** - * Updates the comment for a specified hosted zone. - */ - updateHostedZoneComment(callback?: (err: AWSError, data: Route53.Types.UpdateHostedZoneCommentResponse) => void): Request; - /** - * Updates the comment for a specified traffic policy version. - */ - updateTrafficPolicyComment(params: Route53.Types.UpdateTrafficPolicyCommentRequest, callback?: (err: AWSError, data: Route53.Types.UpdateTrafficPolicyCommentResponse) => void): Request; - /** - * Updates the comment for a specified traffic policy version. - */ - updateTrafficPolicyComment(callback?: (err: AWSError, data: Route53.Types.UpdateTrafficPolicyCommentResponse) => void): Request; - /** - * Updates the resource record sets in a specified hosted zone that were created based on the settings in a specified traffic policy version. When you update a traffic policy instance, Amazon Route 53 continues to respond to DNS queries for the root resource record set name (such as example.com) while it replaces one group of resource record sets with another. Amazon Route 53 performs the following operations: Amazon Route 53 creates a new group of resource record sets based on the specified traffic policy. This is true regardless of how significant the differences are between the existing resource record sets and the new resource record sets. When all of the new resource record sets have been created, Amazon Route 53 starts to respond to DNS queries for the root resource record set name (such as example.com) by using the new resource record sets. Amazon Route 53 deletes the old group of resource record sets that are associated with the root resource record set name. - */ - updateTrafficPolicyInstance(params: Route53.Types.UpdateTrafficPolicyInstanceRequest, callback?: (err: AWSError, data: Route53.Types.UpdateTrafficPolicyInstanceResponse) => void): Request; - /** - * Updates the resource record sets in a specified hosted zone that were created based on the settings in a specified traffic policy version. When you update a traffic policy instance, Amazon Route 53 continues to respond to DNS queries for the root resource record set name (such as example.com) while it replaces one group of resource record sets with another. Amazon Route 53 performs the following operations: Amazon Route 53 creates a new group of resource record sets based on the specified traffic policy. This is true regardless of how significant the differences are between the existing resource record sets and the new resource record sets. When all of the new resource record sets have been created, Amazon Route 53 starts to respond to DNS queries for the root resource record set name (such as example.com) by using the new resource record sets. Amazon Route 53 deletes the old group of resource record sets that are associated with the root resource record set name. - */ - updateTrafficPolicyInstance(callback?: (err: AWSError, data: Route53.Types.UpdateTrafficPolicyInstanceResponse) => void): Request; - /** - * Waits for the resourceRecordSetsChanged state by periodically calling the underlying Route53.getChangeoperation every 30 seconds (at most 60 times). - */ - waitFor(state: "resourceRecordSetsChanged", params: Route53.Types.GetChangeRequest, callback?: (err: AWSError, data: Route53.Types.GetChangeResponse) => void): Request; - /** - * Waits for the resourceRecordSetsChanged state by periodically calling the underlying Route53.getChangeoperation every 30 seconds (at most 60 times). - */ - waitFor(state: "resourceRecordSetsChanged", callback?: (err: AWSError, data: Route53.Types.GetChangeResponse) => void): Request; -} -declare namespace Route53 { - export interface AlarmIdentifier { - /** - * A complex type that identifies the CloudWatch alarm that you want Amazon Route 53 health checkers to use to determine whether this health check is healthy. For the current list of CloudWatch regions, see Amazon CloudWatch in the AWS Regions and Endpoints chapter of the Amazon Web Services General Reference. - */ - Region: CloudWatchRegion; - /** - * The name of the CloudWatch alarm that you want Amazon Route 53 health checkers to use to determine whether this health check is healthy. - */ - Name: AlarmName; - } - export type AlarmName = string; - export type AliasHealthEnabled = boolean; - export interface AliasTarget { - /** - * Alias resource records sets only: The value used depends on where you want to route traffic: CloudFront distribution Specify Z2FDTNDATAQYW2. Alias resource record sets for CloudFront can't be created in a private zone. Elastic Beanstalk environment Specify the hosted zone ID for the region in which you created the environment. The environment must have a regionalized subdomain. For a list of regions and the corresponding hosted zone IDs, see AWS Elastic Beanstalk in the "AWS Regions and Endpoints" chapter of the Amazon Web Services General Reference. ELB load balancer Specify the value of the hosted zone ID for the load balancer. Use the following methods to get the hosted zone ID: Elastic Load Balancing table in the "AWS Regions and Endpoints" chapter of the Amazon Web Services General Reference: Use the value that corresponds with the region that you created your load balancer in. Note that there are separate columns for Application and Classic Load Balancers and for Network Load Balancers. AWS Management Console: Go to the Amazon EC2 page, choose Load Balancers in the navigation pane, select the load balancer, and get the value of the Hosted zone field on the Description tab. Elastic Load Balancing API: Use DescribeLoadBalancers to get the value of CanonicalHostedZoneNameId. For more information, see the applicable guide: Classic Load Balancers: DescribeLoadBalancers Application and Network Load Balancers: DescribeLoadBalancers AWS CLI: Use describe-load-balancers to get the value of CanonicalHostedZoneNameID (for Classic Load Balancers) or CanonicalHostedZoneNameID (for Application and Network Load Balancers). For more information, see the applicable guide: Classic Load Balancers: describe-load-balancers Application and Network Load Balancers: describe-load-balancers An Amazon S3 bucket configured as a static website Specify the hosted zone ID for the region that you created the bucket in. For more information about valid values, see the Amazon Simple Storage Service Website Endpoints table in the "AWS Regions and Endpoints" chapter of the Amazon Web Services General Reference. Another Amazon Route 53 resource record set in your hosted zone Specify the hosted zone ID of your hosted zone. (An alias resource record set can't reference a resource record set in a different hosted zone.) - */ - HostedZoneId: ResourceId; - /** - * Alias resource record sets only: The value that you specify depends on where you want to route queries: CloudFront distribution Specify the domain name that CloudFront assigned when you created your distribution. Your CloudFront distribution must include an alternate domain name that matches the name of the resource record set. For example, if the name of the resource record set is acme.example.com, your CloudFront distribution must include acme.example.com as one of the alternate domain names. For more information, see Using Alternate Domain Names (CNAMEs) in the Amazon CloudFront Developer Guide. Elastic Beanstalk environment Specify the CNAME attribute for the environment. (The environment must have a regionalized domain name.) You can use the following methods to get the value of the CNAME attribute: AWS Management Console: For information about how to get the value by using the console, see Using Custom Domains with AWS Elastic Beanstalk in the AWS Elastic Beanstalk Developer Guide. Elastic Beanstalk API: Use the DescribeEnvironments action to get the value of the CNAME attribute. For more information, see DescribeEnvironments in the AWS Elastic Beanstalk API Reference. AWS CLI: Use the describe-environments command to get the value of the CNAME attribute. For more information, see describe-environments in the AWS Command Line Interface Reference. ELB load balancer Specify the DNS name that is associated with the load balancer. Get the DNS name by using the AWS Management Console, the ELB API, or the AWS CLI. AWS Management Console: Go to the EC2 page, choose Load Balancers in the navigation pane, choose the load balancer, choose the Description tab, and get the value of the DNS name field. (If you're routing traffic to a Classic Load Balancer, get the value that begins with dualstack.) Elastic Load Balancing API: Use DescribeLoadBalancers to get the value of DNSName. For more information, see the applicable guide: Classic Load Balancers: DescribeLoadBalancers Application and Network Load Balancers: DescribeLoadBalancers AWS CLI: Use describe-load-balancers to get the value of DNSName. For more information, see the applicable guide: Classic Load Balancers: describe-load-balancers Application and Network Load Balancers: describe-load-balancers Amazon S3 bucket that is configured as a static website Specify the domain name of the Amazon S3 website endpoint in which you created the bucket, for example, s3-website-us-east-2.amazonaws.com. For more information about valid values, see the table Amazon Simple Storage Service (S3) Website Endpoints in the Amazon Web Services General Reference. For more information about using S3 buckets for websites, see Getting Started with Amazon Route 53 in the Amazon Route 53 Developer Guide. Another Amazon Route 53 resource record set Specify the value of the Name element for a resource record set in the current hosted zone. - */ - DNSName: DNSName; - /** - * Applies only to alias, failover alias, geolocation alias, latency alias, and weighted alias resource record sets: When EvaluateTargetHealth is true, an alias resource record set inherits the health of the referenced AWS resource, such as an ELB load balancer, or the referenced resource record set. Note the following: You can't set EvaluateTargetHealth to true when the alias target is a CloudFront distribution. If the AWS resource that you specify in AliasTarget is a resource record set or a group of resource record sets (for example, a group of weighted resource record sets), but it is not another alias resource record set, we recommend that you associate a health check with all of the resource record sets in the alias target. For more information, see What Happens When You Omit Health Checks? in the Amazon Route 53 Developer Guide. If you specify an Elastic Beanstalk environment in HostedZoneId and DNSName, and if the environment contains an ELB load balancer, Elastic Load Balancing routes queries only to the healthy Amazon EC2 instances that are registered with the load balancer. (An environment automatically contains an ELB load balancer if it includes more than one EC2 instance.) If you set EvaluateTargetHealth to true and either no EC2 instances are healthy or the load balancer itself is unhealthy, Amazon Route 53 routes queries to other available resources that are healthy, if any. If the environment contains a single EC2 instance, there are no special requirements. If you specify an ELB load balancer in AliasTarget , ELB routes queries only to the healthy EC2 instances that are registered with the load balancer. If no EC2 instances are healthy or if the load balancer itself is unhealthy, and if EvaluateTargetHealth is true for the corresponding alias resource record set, Amazon Route 53 routes queries to other resources. When you create a load balancer, you configure settings for ELB health checks; they're not Amazon Route 53 health checks, but they perform a similar function. Do not create Amazon Route 53 health checks for the EC2 instances that you register with an ELB load balancer. For more information, see How Health Checks Work in More Complex Amazon Route 53 Configurations in the Amazon Route 53 Developer Guide. We recommend that you set EvaluateTargetHealth to true only when you have enough idle capacity to handle the failure of one or more endpoints. For more information and examples, see Amazon Route 53 Health Checks and DNS Failover in the Amazon Route 53 Developer Guide. - */ - EvaluateTargetHealth: AliasHealthEnabled; - } - export type AssociateVPCComment = string; - export interface AssociateVPCWithHostedZoneRequest { - /** - * The ID of the private hosted zone that you want to associate an Amazon VPC with. Note that you can't associate a VPC with a hosted zone that doesn't have an existing VPC association. - */ - HostedZoneId: ResourceId; - /** - * A complex type that contains information about the VPC that you want to associate with a private hosted zone. - */ - VPC: VPC; - /** - * Optional: A comment about the association request. - */ - Comment?: AssociateVPCComment; - } - export interface AssociateVPCWithHostedZoneResponse { - /** - * A complex type that describes the changes made to your hosted zone. - */ - ChangeInfo: ChangeInfo; - } - export interface Change { - /** - * The action to perform: CREATE: Creates a resource record set that has the specified values. DELETE: Deletes a existing resource record set. To delete the resource record set that is associated with a traffic policy instance, use DeleteTrafficPolicyInstance . Amazon Route 53 will delete the resource record set automatically. If you delete the resource record set by using ChangeResourceRecordSets, Amazon Route 53 doesn't automatically delete the traffic policy instance, and you'll continue to be charged for it even though it's no longer in use. UPSERT: If a resource record set doesn't already exist, Amazon Route 53 creates it. If a resource record set does exist, Amazon Route 53 updates it with the values in the request. The values that you need to include in the request depend on the type of resource record set that you're creating, deleting, or updating: Basic resource record sets (excluding alias, failover, geolocation, latency, and weighted resource record sets) Name Type TTL Failover, geolocation, latency, or weighted resource record sets (excluding alias resource record sets) Name Type TTL SetIdentifier Alias resource record sets (including failover alias, geolocation alias, latency alias, and weighted alias resource record sets) Name Type AliasTarget (includes DNSName, EvaluateTargetHealth, and HostedZoneId) SetIdentifier (for failover, geolocation, latency, and weighted resource record sets) - */ - Action: ChangeAction; - /** - * Information about the resource record set to create, delete, or update. - */ - ResourceRecordSet: ResourceRecordSet; - } - export type ChangeAction = "CREATE"|"DELETE"|"UPSERT"|string; - export interface ChangeBatch { - /** - * Optional: Any comments you want to include about a change batch request. - */ - Comment?: ResourceDescription; - /** - * Information about the changes to make to the record sets. - */ - Changes: Changes; - } - export interface ChangeInfo { - /** - * The ID of the request. - */ - Id: ResourceId; - /** - * The current state of the request. PENDING indicates that this request has not yet been applied to all Amazon Route 53 DNS servers. - */ - Status: ChangeStatus; - /** - * The date and time that the change request was submitted in ISO 8601 format and Coordinated Universal Time (UTC). For example, the value 2017-03-27T17:48:16.751Z represents March 27, 2017 at 17:48:16.751 UTC. - */ - SubmittedAt: TimeStamp; - /** - * A complex type that describes change information about changes made to your hosted zone. This element contains an ID that you use when performing a GetChange action to get detailed information about the change. - */ - Comment?: ResourceDescription; - } - export interface ChangeResourceRecordSetsRequest { - /** - * The ID of the hosted zone that contains the resource record sets that you want to change. - */ - HostedZoneId: ResourceId; - /** - * A complex type that contains an optional comment and the Changes element. - */ - ChangeBatch: ChangeBatch; - } - export interface ChangeResourceRecordSetsResponse { - /** - * A complex type that contains information about changes made to your hosted zone. This element contains an ID that you use when performing a GetChange action to get detailed information about the change. - */ - ChangeInfo: ChangeInfo; - } - export type ChangeStatus = "PENDING"|"INSYNC"|string; - export interface ChangeTagsForResourceRequest { - /** - * The type of the resource. The resource type for health checks is healthcheck. The resource type for hosted zones is hostedzone. - */ - ResourceType: TagResourceType; - /** - * The ID of the resource for which you want to add, change, or delete tags. - */ - ResourceId: TagResourceId; - /** - * A complex type that contains a list of the tags that you want to add to the specified health check or hosted zone and/or the tags that you want to edit Value for. You can add a maximum of 10 tags to a health check or a hosted zone. - */ - AddTags?: TagList; - /** - * A complex type that contains a list of the tags that you want to delete from the specified health check or hosted zone. You can specify up to 10 keys. - */ - RemoveTagKeys?: TagKeyList; - } - export interface ChangeTagsForResourceResponse { - } - export type Changes = Change[]; - export type CheckerIpRanges = IPAddressCidr[]; - export type ChildHealthCheckList = HealthCheckId[]; - export interface CloudWatchAlarmConfiguration { - /** - * For the metric that the CloudWatch alarm is associated with, the number of periods that the metric is compared to the threshold. - */ - EvaluationPeriods: EvaluationPeriods; - /** - * For the metric that the CloudWatch alarm is associated with, the value the metric is compared with. - */ - Threshold: Threshold; - /** - * For the metric that the CloudWatch alarm is associated with, the arithmetic operation that is used for the comparison. - */ - ComparisonOperator: ComparisonOperator; - /** - * For the metric that the CloudWatch alarm is associated with, the duration of one evaluation period in seconds. - */ - Period: Period; - /** - * The name of the CloudWatch metric that the alarm is associated with. - */ - MetricName: MetricName; - /** - * The namespace of the metric that the alarm is associated with. For more information, see Amazon CloudWatch Namespaces, Dimensions, and Metrics Reference in the Amazon CloudWatch User Guide. - */ - Namespace: Namespace; - /** - * For the metric that the CloudWatch alarm is associated with, the statistic that is applied to the metric. - */ - Statistic: Statistic; - /** - * For the metric that the CloudWatch alarm is associated with, a complex type that contains information about the dimensions for the metric. For information, see Amazon CloudWatch Namespaces, Dimensions, and Metrics Reference in the Amazon CloudWatch User Guide. - */ - Dimensions?: DimensionList; - } - export type CloudWatchLogsLogGroupArn = string; - export type CloudWatchRegion = "us-east-1"|"us-east-2"|"us-west-1"|"us-west-2"|"ca-central-1"|"eu-central-1"|"eu-west-1"|"eu-west-2"|"ap-south-1"|"ap-southeast-1"|"ap-southeast-2"|"ap-northeast-1"|"ap-northeast-2"|"sa-east-1"|string; - export type ComparisonOperator = "GreaterThanOrEqualToThreshold"|"GreaterThanThreshold"|"LessThanThreshold"|"LessThanOrEqualToThreshold"|string; - export interface CreateHealthCheckRequest { - /** - * A unique string that identifies the request and that allows you to retry a failed CreateHealthCheck request without the risk of creating two identical health checks: If you send a CreateHealthCheck request with the same CallerReference and settings as a previous request, and if the health check doesn't exist, Amazon Route 53 creates the health check. If the health check does exist, Amazon Route 53 returns the settings for the existing health check. If you send a CreateHealthCheck request with the same CallerReference as a deleted health check, regardless of the settings, Amazon Route 53 returns a HealthCheckAlreadyExists error. If you send a CreateHealthCheck request with the same CallerReference as an existing health check but with different settings, Amazon Route 53 returns a HealthCheckAlreadyExists error. If you send a CreateHealthCheck request with a unique CallerReference but settings identical to an existing health check, Amazon Route 53 creates the health check. - */ - CallerReference: HealthCheckNonce; - /** - * A complex type that contains the response to a CreateHealthCheck request. - */ - HealthCheckConfig: HealthCheckConfig; - } - export interface CreateHealthCheckResponse { - /** - * A complex type that contains identifying information about the health check. - */ - HealthCheck: HealthCheck; - /** - * The unique URL representing the new health check. - */ - Location: ResourceURI; - } - export interface CreateHostedZoneRequest { - /** - * The name of the domain. For resource record types that include a domain name, specify a fully qualified domain name, for example, www.example.com. The trailing dot is optional; Amazon Route 53 assumes that the domain name is fully qualified. This means that Amazon Route 53 treats www.example.com (without a trailing dot) and www.example.com. (with a trailing dot) as identical. If you're creating a public hosted zone, this is the name you have registered with your DNS registrar. If your domain name is registered with a registrar other than Amazon Route 53, change the name servers for your domain to the set of NameServers that CreateHostedZone returns in DelegationSet. - */ - Name: DNSName; - /** - * (Private hosted zones only) A complex type that contains information about the Amazon VPC that you're associating with this hosted zone. You can specify only one Amazon VPC when you create a private hosted zone. To associate additional Amazon VPCs with the hosted zone, use AssociateVPCWithHostedZone after you create a hosted zone. - */ - VPC?: VPC; - /** - * A unique string that identifies the request and that allows failed CreateHostedZone requests to be retried without the risk of executing the operation twice. You must use a unique CallerReference string every time you submit a CreateHostedZone request. CallerReference can be any unique string, for example, a date/time stamp. - */ - CallerReference: Nonce; - /** - * (Optional) A complex type that contains the following optional values: For public and private hosted zones, an optional comment For private hosted zones, an optional PrivateZone element If you don't specify a comment or the PrivateZone element, omit HostedZoneConfig and the other elements. - */ - HostedZoneConfig?: HostedZoneConfig; - /** - * If you want to associate a reusable delegation set with this hosted zone, the ID that Amazon Route 53 assigned to the reusable delegation set when you created it. For more information about reusable delegation sets, see CreateReusableDelegationSet. - */ - DelegationSetId?: ResourceId; - } - export interface CreateHostedZoneResponse { - /** - * A complex type that contains general information about the hosted zone. - */ - HostedZone: HostedZone; - /** - * A complex type that contains information about the CreateHostedZone request. - */ - ChangeInfo: ChangeInfo; - /** - * A complex type that describes the name servers for this hosted zone. - */ - DelegationSet: DelegationSet; - /** - * A complex type that contains information about an Amazon VPC that you associated with this hosted zone. - */ - VPC?: VPC; - /** - * The unique URL representing the new hosted zone. - */ - Location: ResourceURI; - } - export interface CreateQueryLoggingConfigRequest { - /** - * The ID of the hosted zone that you want to log queries for. You can log queries only for public hosted zones. - */ - HostedZoneId: ResourceId; - /** - * The Amazon Resource Name (ARN) for the log group that you want to Amazon Route 53 to send query logs to. This is the format of the ARN: arn:aws:logs:region:account-id:log-group:log_group_name To get the ARN for a log group, you can use the CloudWatch console, the DescribeLogGroups API action, the describe-log-groups command, or the applicable command in one of the AWS SDKs. - */ - CloudWatchLogsLogGroupArn: CloudWatchLogsLogGroupArn; - } - export interface CreateQueryLoggingConfigResponse { - /** - * A complex type that contains the ID for a query logging configuration, the ID of the hosted zone that you want to log queries for, and the ARN for the log group that you want Amazon Route 53 to send query logs to. - */ - QueryLoggingConfig: QueryLoggingConfig; - /** - * The unique URL representing the new query logging configuration. - */ - Location: ResourceURI; - } - export interface CreateReusableDelegationSetRequest { - /** - * A unique string that identifies the request, and that allows you to retry failed CreateReusableDelegationSet requests without the risk of executing the operation twice. You must use a unique CallerReference string every time you submit a CreateReusableDelegationSet request. CallerReference can be any unique string, for example a date/time stamp. - */ - CallerReference: Nonce; - /** - * If you want to mark the delegation set for an existing hosted zone as reusable, the ID for that hosted zone. - */ - HostedZoneId?: ResourceId; - } - export interface CreateReusableDelegationSetResponse { - /** - * A complex type that contains name server information. - */ - DelegationSet: DelegationSet; - /** - * The unique URL representing the new reusable delegation set. - */ - Location: ResourceURI; - } - export interface CreateTrafficPolicyInstanceRequest { - /** - * The ID of the hosted zone in which you want Amazon Route 53 to create resource record sets by using the configuration in a traffic policy. - */ - HostedZoneId: ResourceId; - /** - * The domain name (such as example.com) or subdomain name (such as www.example.com) for which Amazon Route 53 responds to DNS queries by using the resource record sets that Amazon Route 53 creates for this traffic policy instance. - */ - Name: DNSName; - /** - * (Optional) The TTL that you want Amazon Route 53 to assign to all of the resource record sets that it creates in the specified hosted zone. - */ - TTL: TTL; - /** - * The ID of the traffic policy that you want to use to create resource record sets in the specified hosted zone. - */ - TrafficPolicyId: TrafficPolicyId; - /** - * The version of the traffic policy that you want to use to create resource record sets in the specified hosted zone. - */ - TrafficPolicyVersion: TrafficPolicyVersion; - } - export interface CreateTrafficPolicyInstanceResponse { - /** - * A complex type that contains settings for the new traffic policy instance. - */ - TrafficPolicyInstance: TrafficPolicyInstance; - /** - * A unique URL that represents a new traffic policy instance. - */ - Location: ResourceURI; - } - export interface CreateTrafficPolicyRequest { - /** - * The name of the traffic policy. - */ - Name: TrafficPolicyName; - /** - * The definition of this traffic policy in JSON format. For more information, see Traffic Policy Document Format. - */ - Document: TrafficPolicyDocument; - /** - * (Optional) Any comments that you want to include about the traffic policy. - */ - Comment?: TrafficPolicyComment; - } - export interface CreateTrafficPolicyResponse { - /** - * A complex type that contains settings for the new traffic policy. - */ - TrafficPolicy: TrafficPolicy; - /** - * A unique URL that represents a new traffic policy. - */ - Location: ResourceURI; - } - export interface CreateTrafficPolicyVersionRequest { - /** - * The ID of the traffic policy for which you want to create a new version. - */ - Id: TrafficPolicyId; - /** - * The definition of this version of the traffic policy, in JSON format. You specified the JSON in the CreateTrafficPolicyVersion request. For more information about the JSON format, see CreateTrafficPolicy. - */ - Document: TrafficPolicyDocument; - /** - * The comment that you specified in the CreateTrafficPolicyVersion request, if any. - */ - Comment?: TrafficPolicyComment; - } - export interface CreateTrafficPolicyVersionResponse { - /** - * A complex type that contains settings for the new version of the traffic policy. - */ - TrafficPolicy: TrafficPolicy; - /** - * A unique URL that represents a new traffic policy version. - */ - Location: ResourceURI; - } - export interface CreateVPCAssociationAuthorizationRequest { - /** - * The ID of the private hosted zone that you want to authorize associating a VPC with. - */ - HostedZoneId: ResourceId; - /** - * A complex type that contains the VPC ID and region for the VPC that you want to authorize associating with your hosted zone. - */ - VPC: VPC; - } - export interface CreateVPCAssociationAuthorizationResponse { - /** - * The ID of the hosted zone that you authorized associating a VPC with. - */ - HostedZoneId: ResourceId; - /** - * The VPC that you authorized associating with a hosted zone. - */ - VPC: VPC; - } - export type DNSName = string; - export type DNSRCode = string; - export interface DelegationSet { - /** - * The ID that Amazon Route 53 assigns to a reusable delegation set. - */ - Id?: ResourceId; - /** - * The value that you specified for CallerReference when you created the reusable delegation set. - */ - CallerReference?: Nonce; - /** - * A complex type that contains a list of the authoritative name servers for a hosted zone or for a reusable delegation set. - */ - NameServers: DelegationSetNameServers; - } - export type DelegationSetNameServers = DNSName[]; - export type DelegationSets = DelegationSet[]; - export interface DeleteHealthCheckRequest { - /** - * The ID of the health check that you want to delete. - */ - HealthCheckId: HealthCheckId; - } - export interface DeleteHealthCheckResponse { - } - export interface DeleteHostedZoneRequest { - /** - * The ID of the hosted zone you want to delete. - */ - Id: ResourceId; - } - export interface DeleteHostedZoneResponse { - /** - * A complex type that contains the ID, the status, and the date and time of a request to delete a hosted zone. - */ - ChangeInfo: ChangeInfo; - } - export interface DeleteQueryLoggingConfigRequest { - /** - * The ID of the configuration that you want to delete. - */ - Id: QueryLoggingConfigId; - } - export interface DeleteQueryLoggingConfigResponse { - } - export interface DeleteReusableDelegationSetRequest { - /** - * The ID of the reusable delegation set that you want to delete. - */ - Id: ResourceId; - } - export interface DeleteReusableDelegationSetResponse { - } - export interface DeleteTrafficPolicyInstanceRequest { - /** - * The ID of the traffic policy instance that you want to delete. When you delete a traffic policy instance, Amazon Route 53 also deletes all of the resource record sets that were created when you created the traffic policy instance. - */ - Id: TrafficPolicyInstanceId; - } - export interface DeleteTrafficPolicyInstanceResponse { - } - export interface DeleteTrafficPolicyRequest { - /** - * The ID of the traffic policy that you want to delete. - */ - Id: TrafficPolicyId; - /** - * The version number of the traffic policy that you want to delete. - */ - Version: TrafficPolicyVersion; - } - export interface DeleteTrafficPolicyResponse { - } - export interface DeleteVPCAssociationAuthorizationRequest { - /** - * When removing authorization to associate a VPC that was created by one AWS account with a hosted zone that was created with a different AWS account, the ID of the hosted zone. - */ - HostedZoneId: ResourceId; - /** - * When removing authorization to associate a VPC that was created by one AWS account with a hosted zone that was created with a different AWS account, a complex type that includes the ID and region of the VPC. - */ - VPC: VPC; - } - export interface DeleteVPCAssociationAuthorizationResponse { - } - export interface Dimension { - /** - * For the metric that the CloudWatch alarm is associated with, the name of one dimension. - */ - Name: DimensionField; - /** - * For the metric that the CloudWatch alarm is associated with, the value of one dimension. - */ - Value: DimensionField; - } - export type DimensionField = string; - export type DimensionList = Dimension[]; - export type DisassociateVPCComment = string; - export interface DisassociateVPCFromHostedZoneRequest { - /** - * The ID of the private hosted zone that you want to disassociate a VPC from. - */ - HostedZoneId: ResourceId; - /** - * A complex type that contains information about the VPC that you're disassociating from the specified hosted zone. - */ - VPC: VPC; - /** - * Optional: A comment about the disassociation request. - */ - Comment?: DisassociateVPCComment; - } - export interface DisassociateVPCFromHostedZoneResponse { - /** - * A complex type that describes the changes made to the specified private hosted zone. - */ - ChangeInfo: ChangeInfo; - } - export type EnableSNI = boolean; - export type ErrorMessage = string; - export type ErrorMessages = ErrorMessage[]; - export type EvaluationPeriods = number; - export type FailureThreshold = number; - export type FullyQualifiedDomainName = string; - export interface GeoLocation { - /** - * The two-letter code for the continent. Valid values: AF | AN | AS | EU | OC | NA | SA Constraint: Specifying ContinentCode with either CountryCode or SubdivisionCode returns an InvalidInput error. - */ - ContinentCode?: GeoLocationContinentCode; - /** - * The two-letter code for the country. - */ - CountryCode?: GeoLocationCountryCode; - /** - * The code for the subdivision, for example, a state in the United States or a province in Canada. - */ - SubdivisionCode?: GeoLocationSubdivisionCode; - } - export type GeoLocationContinentCode = string; - export type GeoLocationContinentName = string; - export type GeoLocationCountryCode = string; - export type GeoLocationCountryName = string; - export interface GeoLocationDetails { - /** - * The two-letter code for the continent. - */ - ContinentCode?: GeoLocationContinentCode; - /** - * The full name of the continent. - */ - ContinentName?: GeoLocationContinentName; - /** - * The two-letter code for the country. - */ - CountryCode?: GeoLocationCountryCode; - /** - * The name of the country. - */ - CountryName?: GeoLocationCountryName; - /** - * The code for the subdivision, for example, a state in the United States or a province in Canada. - */ - SubdivisionCode?: GeoLocationSubdivisionCode; - /** - * The full name of the subdivision, for example, a state in the United States or a province in Canada. - */ - SubdivisionName?: GeoLocationSubdivisionName; - } - export type GeoLocationDetailsList = GeoLocationDetails[]; - export type GeoLocationSubdivisionCode = string; - export type GeoLocationSubdivisionName = string; - export interface GetChangeRequest { - /** - * The ID of the change batch request. The value that you specify here is the value that ChangeResourceRecordSets returned in the Id element when you submitted the request. - */ - Id: ResourceId; - } - export interface GetChangeResponse { - /** - * A complex type that contains information about the specified change batch. - */ - ChangeInfo: ChangeInfo; - } - export interface GetCheckerIpRangesRequest { - } - export interface GetCheckerIpRangesResponse { - CheckerIpRanges: CheckerIpRanges; - } - export interface GetGeoLocationRequest { - /** - * Amazon Route 53 supports the following continent codes: AF: Africa AN: Antarctica AS: Asia EU: Europe OC: Oceania NA: North America SA: South America - */ - ContinentCode?: GeoLocationContinentCode; - /** - * Amazon Route 53 uses the two-letter country codes that are specified in ISO standard 3166-1 alpha-2. - */ - CountryCode?: GeoLocationCountryCode; - /** - * Amazon Route 53 uses the one- to three-letter subdivision codes that are specified in ISO standard 3166-1 alpha-2. Amazon Route 53 doesn't support subdivision codes for all countries. If you specify SubdivisionCode, you must also specify CountryCode. - */ - SubdivisionCode?: GeoLocationSubdivisionCode; - } - export interface GetGeoLocationResponse { - /** - * A complex type that contains the codes and full continent, country, and subdivision names for the specified geolocation code. - */ - GeoLocationDetails: GeoLocationDetails; - } - export interface GetHealthCheckCountRequest { - } - export interface GetHealthCheckCountResponse { - /** - * The number of health checks associated with the current AWS account. - */ - HealthCheckCount: HealthCheckCount; - } - export interface GetHealthCheckLastFailureReasonRequest { - /** - * The ID for the health check for which you want the last failure reason. When you created the health check, CreateHealthCheck returned the ID in the response, in the HealthCheckId element. - */ - HealthCheckId: HealthCheckId; - } - export interface GetHealthCheckLastFailureReasonResponse { - /** - * A list that contains one Observation element for each Amazon Route 53 health checker that is reporting a last failure reason. - */ - HealthCheckObservations: HealthCheckObservations; - } - export interface GetHealthCheckRequest { - /** - * The identifier that Amazon Route 53 assigned to the health check when you created it. When you add or update a resource record set, you use this value to specify which health check to use. The value can be up to 64 characters long. - */ - HealthCheckId: HealthCheckId; - } - export interface GetHealthCheckResponse { - /** - * A complex type that contains information about one health check that is associated with the current AWS account. - */ - HealthCheck: HealthCheck; - } - export interface GetHealthCheckStatusRequest { - /** - * The ID for the health check that you want the current status for. When you created the health check, CreateHealthCheck returned the ID in the response, in the HealthCheckId element. If you want to check the status of a calculated health check, you must use the Amazon Route 53 console or the CloudWatch console. You can't use GetHealthCheckStatus to get the status of a calculated health check. - */ - HealthCheckId: HealthCheckId; - } - export interface GetHealthCheckStatusResponse { - /** - * A list that contains one HealthCheckObservation element for each Amazon Route 53 health checker that is reporting a status about the health check endpoint. - */ - HealthCheckObservations: HealthCheckObservations; - } - export interface GetHostedZoneCountRequest { - } - export interface GetHostedZoneCountResponse { - /** - * The total number of public and private hosted zones that are associated with the current AWS account. - */ - HostedZoneCount: HostedZoneCount; - } - export interface GetHostedZoneRequest { - /** - * The ID of the hosted zone that you want to get information about. - */ - Id: ResourceId; - } - export interface GetHostedZoneResponse { - /** - * A complex type that contains general information about the specified hosted zone. - */ - HostedZone: HostedZone; - /** - * A complex type that lists the Amazon Route 53 name servers for the specified hosted zone. - */ - DelegationSet?: DelegationSet; - /** - * A complex type that contains information about the VPCs that are associated with the specified hosted zone. - */ - VPCs?: VPCs; - } - export interface GetQueryLoggingConfigRequest { - /** - * The ID of the configuration for DNS query logging that you want to get information about. - */ - Id: QueryLoggingConfigId; - } - export interface GetQueryLoggingConfigResponse { - /** - * A complex type that contains information about the query logging configuration that you specified in a GetQueryLoggingConfig request. - */ - QueryLoggingConfig: QueryLoggingConfig; - } - export interface GetReusableDelegationSetRequest { - /** - * The ID of the reusable delegation set that you want to get a list of name servers for. - */ - Id: ResourceId; - } - export interface GetReusableDelegationSetResponse { - /** - * A complex type that contains information about the reusable delegation set. - */ - DelegationSet: DelegationSet; - } - export interface GetTrafficPolicyInstanceCountRequest { - } - export interface GetTrafficPolicyInstanceCountResponse { - /** - * The number of traffic policy instances that are associated with the current AWS account. - */ - TrafficPolicyInstanceCount: TrafficPolicyInstanceCount; - } - export interface GetTrafficPolicyInstanceRequest { - /** - * The ID of the traffic policy instance that you want to get information about. - */ - Id: TrafficPolicyInstanceId; - } - export interface GetTrafficPolicyInstanceResponse { - /** - * A complex type that contains settings for the traffic policy instance. - */ - TrafficPolicyInstance: TrafficPolicyInstance; - } - export interface GetTrafficPolicyRequest { - /** - * The ID of the traffic policy that you want to get information about. - */ - Id: TrafficPolicyId; - /** - * The version number of the traffic policy that you want to get information about. - */ - Version: TrafficPolicyVersion; - } - export interface GetTrafficPolicyResponse { - /** - * A complex type that contains settings for the specified traffic policy. - */ - TrafficPolicy: TrafficPolicy; - } - export interface HealthCheck { - /** - * The identifier that Amazon Route 53assigned to the health check when you created it. When you add or update a resource record set, you use this value to specify which health check to use. The value can be up to 64 characters long. - */ - Id: HealthCheckId; - /** - * A unique string that you specified when you created the health check. - */ - CallerReference: HealthCheckNonce; - /** - * A complex type that contains detailed information about one health check. - */ - HealthCheckConfig: HealthCheckConfig; - /** - * The version of the health check. You can optionally pass this value in a call to UpdateHealthCheck to prevent overwriting another change to the health check. - */ - HealthCheckVersion: HealthCheckVersion; - /** - * A complex type that contains information about the CloudWatch alarm that Amazon Route 53 is monitoring for this health check. - */ - CloudWatchAlarmConfiguration?: CloudWatchAlarmConfiguration; - } - export interface HealthCheckConfig { - /** - * The IPv4 or IPv6 IP address of the endpoint that you want Amazon Route 53 to perform health checks on. If you don't specify a value for IPAddress, Amazon Route 53 sends a DNS request to resolve the domain name that you specify in FullyQualifiedDomainName at the interval that you specify in RequestInterval. Using an IP address returned by DNS, Amazon Route 53 then checks the health of the endpoint. Use one of the following formats for the value of IPAddress: IPv4 address: four values between 0 and 255, separated by periods (.), for example, 192.0.2.44. IPv6 address: eight groups of four hexadecimal values, separated by colons (:), for example, 2001:0db8:85a3:0000:0000:abcd:0001:2345. You can also shorten IPv6 addresses as described in RFC 5952, for example, 2001:db8:85a3::abcd:1:2345. If the endpoint is an EC2 instance, we recommend that you create an Elastic IP address, associate it with your EC2 instance, and specify the Elastic IP address for IPAddress. This ensures that the IP address of your instance will never change. For more information, see HealthCheckConfig$FullyQualifiedDomainName. Constraints: Amazon Route 53 can't check the health of endpoints for which the IP address is in local, private, non-routable, or multicast ranges. For more information about IP addresses for which you can't create health checks, see the following documents: RFC 5735, Special Use IPv4 Addresses RFC 6598, IANA-Reserved IPv4 Prefix for Shared Address Space RFC 5156, Special-Use IPv6 Addresses When the value of Type is CALCULATED or CLOUDWATCH_METRIC, omit IPAddress. - */ - IPAddress?: IPAddress; - /** - * The port on the endpoint on which you want Amazon Route 53 to perform health checks. Specify a value for Port only when you specify a value for IPAddress. - */ - Port?: Port; - /** - * The type of health check that you want to create, which indicates how Amazon Route 53 determines whether an endpoint is healthy. You can't change the value of Type after you create a health check. You can create the following types of health checks: HTTP: Amazon Route 53 tries to establish a TCP connection. If successful, Amazon Route 53 submits an HTTP request and waits for an HTTP status code of 200 or greater and less than 400. HTTPS: Amazon Route 53 tries to establish a TCP connection. If successful, Amazon Route 53 submits an HTTPS request and waits for an HTTP status code of 200 or greater and less than 400. If you specify HTTPS for the value of Type, the endpoint must support TLS v1.0 or later. HTTP_STR_MATCH: Amazon Route 53 tries to establish a TCP connection. If successful, Amazon Route 53 submits an HTTP request and searches the first 5,120 bytes of the response body for the string that you specify in SearchString. HTTPS_STR_MATCH: Amazon Route 53 tries to establish a TCP connection. If successful, Amazon Route 53 submits an HTTPS request and searches the first 5,120 bytes of the response body for the string that you specify in SearchString. TCP: Amazon Route 53 tries to establish a TCP connection. CLOUDWATCH_METRIC: The health check is associated with a CloudWatch alarm. If the state of the alarm is OK, the health check is considered healthy. If the state is ALARM, the health check is considered unhealthy. If CloudWatch doesn't have sufficient data to determine whether the state is OK or ALARM, the health check status depends on the setting for InsufficientDataHealthStatus: Healthy, Unhealthy, or LastKnownStatus. CALCULATED: For health checks that monitor the status of other health checks, Amazon Route 53 adds up the number of health checks that Amazon Route 53 health checkers consider to be healthy and compares that number with the value of HealthThreshold. For more information, see How Amazon Route 53 Determines Whether an Endpoint Is Healthy in the Amazon Route 53 Developer Guide. - */ - Type: HealthCheckType; - /** - * The path, if any, that you want Amazon Route 53 to request when performing health checks. The path can be any value for which your endpoint will return an HTTP status code of 2xx or 3xx when the endpoint is healthy, for example, the file /docs/route53-health-check.html. - */ - ResourcePath?: ResourcePath; - /** - * Amazon Route 53 behavior depends on whether you specify a value for IPAddress. If you specify a value for IPAddress: Amazon Route 53 sends health check requests to the specified IPv4 or IPv6 address and passes the value of FullyQualifiedDomainName in the Host header for all health checks except TCP health checks. This is typically the fully qualified DNS name of the endpoint on which you want Amazon Route 53 to perform health checks. When Amazon Route 53 checks the health of an endpoint, here is how it constructs the Host header: If you specify a value of 80 for Port and HTTP or HTTP_STR_MATCH for Type, Amazon Route 53 passes the value of FullyQualifiedDomainName to the endpoint in the Host header. If you specify a value of 443 for Port and HTTPS or HTTPS_STR_MATCH for Type, Amazon Route 53 passes the value of FullyQualifiedDomainName to the endpoint in the Host header. If you specify another value for Port and any value except TCP for Type, Amazon Route 53 passes FullyQualifiedDomainName:Port to the endpoint in the Host header. If you don't specify a value for FullyQualifiedDomainName, Amazon Route 53 substitutes the value of IPAddress in the Host header in each of the preceding cases. If you don't specify a value for IPAddress : Amazon Route 53 sends a DNS request to the domain that you specify for FullyQualifiedDomainName at the interval that you specify for RequestInterval. Using an IPv4 address that DNS returns, Amazon Route 53 then checks the health of the endpoint. If you don't specify a value for IPAddress, Amazon Route 53 uses only IPv4 to send health checks to the endpoint. If there's no resource record set with a type of A for the name that you specify for FullyQualifiedDomainName, the health check fails with a "DNS resolution failed" error. If you want to check the health of weighted, latency, or failover resource record sets and you choose to specify the endpoint only by FullyQualifiedDomainName, we recommend that you create a separate health check for each endpoint. For example, create a health check for each HTTP server that is serving content for www.example.com. For the value of FullyQualifiedDomainName, specify the domain name of the server (such as us-east-2-www.example.com), not the name of the resource record sets (www.example.com). In this configuration, if you create a health check for which the value of FullyQualifiedDomainName matches the name of the resource record sets and you then associate the health check with those resource record sets, health check results will be unpredictable. In addition, if the value that you specify for Type is HTTP, HTTPS, HTTP_STR_MATCH, or HTTPS_STR_MATCH, Amazon Route 53 passes the value of FullyQualifiedDomainName in the Host header, as it does when you specify a value for IPAddress. If the value of Type is TCP, Amazon Route 53 doesn't pass a Host header. - */ - FullyQualifiedDomainName?: FullyQualifiedDomainName; - /** - * If the value of Type is HTTP_STR_MATCH or HTTP_STR_MATCH, the string that you want Amazon Route 53 to search for in the response body from the specified resource. If the string appears in the response body, Amazon Route 53 considers the resource healthy. Amazon Route 53 considers case when searching for SearchString in the response body. - */ - SearchString?: SearchString; - /** - * The number of seconds between the time that Amazon Route 53 gets a response from your endpoint and the time that it sends the next health check request. Each Amazon Route 53 health checker makes requests at this interval. You can't change the value of RequestInterval after you create a health check. If you don't specify a value for RequestInterval, the default value is 30 seconds. - */ - RequestInterval?: RequestInterval; - /** - * The number of consecutive health checks that an endpoint must pass or fail for Amazon Route 53 to change the current status of the endpoint from unhealthy to healthy or vice versa. For more information, see How Amazon Route 53 Determines Whether an Endpoint Is Healthy in the Amazon Route 53 Developer Guide. If you don't specify a value for FailureThreshold, the default value is three health checks. - */ - FailureThreshold?: FailureThreshold; - /** - * Specify whether you want Amazon Route 53 to measure the latency between health checkers in multiple AWS regions and your endpoint, and to display CloudWatch latency graphs on the Health Checks page in the Amazon Route 53 console. You can't change the value of MeasureLatency after you create a health check. - */ - MeasureLatency?: MeasureLatency; - /** - * Specify whether you want Amazon Route 53 to invert the status of a health check, for example, to consider a health check unhealthy when it otherwise would be considered healthy. - */ - Inverted?: Inverted; - /** - * The number of child health checks that are associated with a CALCULATED health that Amazon Route 53 must consider healthy for the CALCULATED health check to be considered healthy. To specify the child health checks that you want to associate with a CALCULATED health check, use the HealthCheckConfig$ChildHealthChecks and HealthCheckConfig$ChildHealthChecks elements. Note the following: If you specify a number greater than the number of child health checks, Amazon Route 53 always considers this health check to be unhealthy. If you specify 0, Amazon Route 53 always considers this health check to be healthy. - */ - HealthThreshold?: HealthThreshold; - /** - * (CALCULATED Health Checks Only) A complex type that contains one ChildHealthCheck element for each health check that you want to associate with a CALCULATED health check. - */ - ChildHealthChecks?: ChildHealthCheckList; - /** - * Specify whether you want Amazon Route 53 to send the value of FullyQualifiedDomainName to the endpoint in the client_hello message during TLS negotiation. This allows the endpoint to respond to HTTPS health check requests with the applicable SSL/TLS certificate. Some endpoints require that HTTPS requests include the host name in the client_hello message. If you don't enable SNI, the status of the health check will be SSL alert handshake_failure. A health check can also have that status for other reasons. If SNI is enabled and you're still getting the error, check the SSL/TLS configuration on your endpoint and confirm that your certificate is valid. The SSL/TLS certificate on your endpoint includes a domain name in the Common Name field and possibly several more in the Subject Alternative Names field. One of the domain names in the certificate should match the value that you specify for FullyQualifiedDomainName. If the endpoint responds to the client_hello message with a certificate that does not include the domain name that you specified in FullyQualifiedDomainName, a health checker will retry the handshake. In the second attempt, the health checker will omit FullyQualifiedDomainName from the client_hello message. - */ - EnableSNI?: EnableSNI; - /** - * A complex type that contains one Region element for each region from which you want Amazon Route 53 health checkers to check the specified endpoint. If you don't specify any regions, Amazon Route 53 health checkers automatically performs checks from all of the regions that are listed under Valid Values. If you update a health check to remove a region that has been performing health checks, Amazon Route 53 will briefly continue to perform checks from that region to ensure that some health checkers are always checking the endpoint (for example, if you replace three regions with four different regions). - */ - Regions?: HealthCheckRegionList; - /** - * A complex type that identifies the CloudWatch alarm that you want Amazon Route 53 health checkers to use to determine whether this health check is healthy. - */ - AlarmIdentifier?: AlarmIdentifier; - /** - * When CloudWatch has insufficient data about the metric to determine the alarm state, the status that you want Amazon Route 53 to assign to the health check: Healthy: Amazon Route 53 considers the health check to be healthy. Unhealthy: Amazon Route 53 considers the health check to be unhealthy. LastKnownStatus: Amazon Route 53 uses the status of the health check from the last time that CloudWatch had sufficient data to determine the alarm state. For new health checks that have no last known status, the default status for the health check is healthy. - */ - InsufficientDataHealthStatus?: InsufficientDataHealthStatus; - } - export type HealthCheckCount = number; - export type HealthCheckId = string; - export type HealthCheckNonce = string; - export interface HealthCheckObservation { - /** - * The region of the Amazon Route 53 health checker that provided the status in StatusReport. - */ - Region?: HealthCheckRegion; - /** - * The IP address of the Amazon Route 53 health checker that provided the failure reason in StatusReport. - */ - IPAddress?: IPAddress; - /** - * A complex type that contains the last failure reason as reported by one Amazon Route 53 health checker and the time of the failed health check. - */ - StatusReport?: StatusReport; - } - export type HealthCheckObservations = HealthCheckObservation[]; - export type HealthCheckRegion = "us-east-1"|"us-west-1"|"us-west-2"|"eu-west-1"|"ap-southeast-1"|"ap-southeast-2"|"ap-northeast-1"|"sa-east-1"|string; - export type HealthCheckRegionList = HealthCheckRegion[]; - export type HealthCheckType = "HTTP"|"HTTPS"|"HTTP_STR_MATCH"|"HTTPS_STR_MATCH"|"TCP"|"CALCULATED"|"CLOUDWATCH_METRIC"|string; - export type HealthCheckVersion = number; - export type HealthChecks = HealthCheck[]; - export type HealthThreshold = number; - export interface HostedZone { - /** - * The ID that Amazon Route 53 assigned to the hosted zone when you created it. - */ - Id: ResourceId; - /** - * The name of the domain. For public hosted zones, this is the name that you have registered with your DNS registrar. For information about how to specify characters other than a-z, 0-9, and - (hyphen) and how to specify internationalized domain names, see CreateHostedZone. - */ - Name: DNSName; - /** - * The value that you specified for CallerReference when you created the hosted zone. - */ - CallerReference: Nonce; - /** - * A complex type that includes the Comment and PrivateZone elements. If you omitted the HostedZoneConfig and Comment elements from the request, the Config and Comment elements don't appear in the response. - */ - Config?: HostedZoneConfig; - /** - * The number of resource record sets in the hosted zone. - */ - ResourceRecordSetCount?: HostedZoneRRSetCount; - } - export interface HostedZoneConfig { - /** - * Any comments that you want to include about the hosted zone. - */ - Comment?: ResourceDescription; - /** - * A value that indicates whether this is a private hosted zone. - */ - PrivateZone?: IsPrivateZone; - } - export type HostedZoneCount = number; - export type HostedZoneRRSetCount = number; - export type HostedZones = HostedZone[]; - export type IPAddress = string; - export type IPAddressCidr = string; - export type InsufficientDataHealthStatus = "Healthy"|"Unhealthy"|"LastKnownStatus"|string; - export type Inverted = boolean; - export type IsPrivateZone = boolean; - export interface ListGeoLocationsRequest { - /** - * The code for the continent with which you want to start listing locations that Amazon Route 53 supports for geolocation. If Amazon Route 53 has already returned a page or more of results, if IsTruncated is true, and if NextContinentCode from the previous response has a value, enter that value in StartContinentCode to return the next page of results. Include StartContinentCode only if you want to list continents. Don't include StartContinentCode when you're listing countries or countries with their subdivisions. - */ - StartContinentCode?: GeoLocationContinentCode; - /** - * The code for the country with which you want to start listing locations that Amazon Route 53 supports for geolocation. If Amazon Route 53 has already returned a page or more of results, if IsTruncated is true, and if NextCountryCode from the previous response has a value, enter that value in StartCountryCode to return the next page of results. Amazon Route 53 uses the two-letter country codes that are specified in ISO standard 3166-1 alpha-2. - */ - StartCountryCode?: GeoLocationCountryCode; - /** - * The code for the subdivision (for example, state or province) with which you want to start listing locations that Amazon Route 53 supports for geolocation. If Amazon Route 53 has already returned a page or more of results, if IsTruncated is true, and if NextSubdivisionCode from the previous response has a value, enter that value in StartSubdivisionCode to return the next page of results. To list subdivisions of a country, you must include both StartCountryCode and StartSubdivisionCode. - */ - StartSubdivisionCode?: GeoLocationSubdivisionCode; - /** - * (Optional) The maximum number of geolocations to be included in the response body for this request. If more than MaxItems geolocations remain to be listed, then the value of the IsTruncated element in the response is true. - */ - MaxItems?: PageMaxItems; - } - export interface ListGeoLocationsResponse { - /** - * A complex type that contains one GeoLocationDetails element for each location that Amazon Route 53 supports for geolocation. - */ - GeoLocationDetailsList: GeoLocationDetailsList; - /** - * A value that indicates whether more locations remain to be listed after the last location in this response. If so, the value of IsTruncated is true. To get more values, submit another request and include the values of NextContinentCode, NextCountryCode, and NextSubdivisionCode in the StartContinentCode, StartCountryCode, and StartSubdivisionCode, as applicable. - */ - IsTruncated: PageTruncated; - /** - * If IsTruncated is true, you can make a follow-up request to display more locations. Enter the value of NextContinentCode in the StartContinentCode parameter in another ListGeoLocations request. - */ - NextContinentCode?: GeoLocationContinentCode; - /** - * If IsTruncated is true, you can make a follow-up request to display more locations. Enter the value of NextCountryCode in the StartCountryCode parameter in another ListGeoLocations request. - */ - NextCountryCode?: GeoLocationCountryCode; - /** - * If IsTruncated is true, you can make a follow-up request to display more locations. Enter the value of NextSubdivisionCode in the StartSubdivisionCode parameter in another ListGeoLocations request. - */ - NextSubdivisionCode?: GeoLocationSubdivisionCode; - /** - * The value that you specified for MaxItems in the request. - */ - MaxItems: PageMaxItems; - } - export interface ListHealthChecksRequest { - /** - * If the value of IsTruncated in the previous response was true, you have more health checks. To get another group, submit another ListHealthChecks request. For the value of marker, specify the value of NextMarker from the previous response, which is the ID of the first health check that Amazon Route 53 will return if you submit another request. If the value of IsTruncated in the previous response was false, there are no more health checks to get. - */ - Marker?: PageMarker; - /** - * The maximum number of health checks that you want ListHealthChecks to return in response to the current request. Amazon Route 53 returns a maximum of 100 items. If you set MaxItems to a value greater than 100, Amazon Route 53 returns only the first 100 health checks. - */ - MaxItems?: PageMaxItems; - } - export interface ListHealthChecksResponse { - /** - * A complex type that contains one HealthCheck element for each health check that is associated with the current AWS account. - */ - HealthChecks: HealthChecks; - /** - * For the second and subsequent calls to ListHealthChecks, Marker is the value that you specified for the marker parameter in the previous request. - */ - Marker: PageMarker; - /** - * A flag that indicates whether there are more health checks to be listed. If the response was truncated, you can get the next group of health checks by submitting another ListHealthChecks request and specifying the value of NextMarker in the marker parameter. - */ - IsTruncated: PageTruncated; - /** - * If IsTruncated is true, the value of NextMarker identifies the first health check that Amazon Route 53 returns if you submit another ListHealthChecks request and specify the value of NextMarker in the marker parameter. - */ - NextMarker?: PageMarker; - /** - * The value that you specified for the maxitems parameter in the call to ListHealthChecks that produced the current response. - */ - MaxItems: PageMaxItems; - } - export interface ListHostedZonesByNameRequest { - /** - * (Optional) For your first request to ListHostedZonesByName, include the dnsname parameter only if you want to specify the name of the first hosted zone in the response. If you don't include the dnsname parameter, Amazon Route 53 returns all of the hosted zones that were created by the current AWS account, in ASCII order. For subsequent requests, include both dnsname and hostedzoneid parameters. For dnsname, specify the value of NextDNSName from the previous response. - */ - DNSName?: DNSName; - /** - * (Optional) For your first request to ListHostedZonesByName, do not include the hostedzoneid parameter. If you have more hosted zones than the value of maxitems, ListHostedZonesByName returns only the first maxitems hosted zones. To get the next group of maxitems hosted zones, submit another request to ListHostedZonesByName and include both dnsname and hostedzoneid parameters. For the value of hostedzoneid, specify the value of the NextHostedZoneId element from the previous response. - */ - HostedZoneId?: ResourceId; - /** - * The maximum number of hosted zones to be included in the response body for this request. If you have more than maxitems hosted zones, then the value of the IsTruncated element in the response is true, and the values of NextDNSName and NextHostedZoneId specify the first hosted zone in the next group of maxitems hosted zones. - */ - MaxItems?: PageMaxItems; - } - export interface ListHostedZonesByNameResponse { - /** - * A complex type that contains general information about the hosted zone. - */ - HostedZones: HostedZones; - /** - * For the second and subsequent calls to ListHostedZonesByName, DNSName is the value that you specified for the dnsname parameter in the request that produced the current response. - */ - DNSName?: DNSName; - /** - * The ID that Amazon Route 53 assigned to the hosted zone when you created it. - */ - HostedZoneId?: ResourceId; - /** - * A flag that indicates whether there are more hosted zones to be listed. If the response was truncated, you can get the next group of maxitems hosted zones by calling ListHostedZonesByName again and specifying the values of NextDNSName and NextHostedZoneId elements in the dnsname and hostedzoneid parameters. - */ - IsTruncated: PageTruncated; - /** - * If IsTruncated is true, the value of NextDNSName is the name of the first hosted zone in the next group of maxitems hosted zones. Call ListHostedZonesByName again and specify the value of NextDNSName and NextHostedZoneId in the dnsname and hostedzoneid parameters, respectively. This element is present only if IsTruncated is true. - */ - NextDNSName?: DNSName; - /** - * If IsTruncated is true, the value of NextHostedZoneId identifies the first hosted zone in the next group of maxitems hosted zones. Call ListHostedZonesByName again and specify the value of NextDNSName and NextHostedZoneId in the dnsname and hostedzoneid parameters, respectively. This element is present only if IsTruncated is true. - */ - NextHostedZoneId?: ResourceId; - /** - * The value that you specified for the maxitems parameter in the call to ListHostedZonesByName that produced the current response. - */ - MaxItems: PageMaxItems; - } - export interface ListHostedZonesRequest { - /** - * If the value of IsTruncated in the previous response was true, you have more hosted zones. To get more hosted zones, submit another ListHostedZones request. For the value of marker, specify the value of NextMarker from the previous response, which is the ID of the first hosted zone that Amazon Route 53 will return if you submit another request. If the value of IsTruncated in the previous response was false, there are no more hosted zones to get. - */ - Marker?: PageMarker; - /** - * (Optional) The maximum number of hosted zones that you want Amazon Route 53 to return. If you have more than maxitems hosted zones, the value of IsTruncated in the response is true, and the value of NextMarker is the hosted zone ID of the first hosted zone that Amazon Route 53 will return if you submit another request. - */ - MaxItems?: PageMaxItems; - /** - * If you're using reusable delegation sets and you want to list all of the hosted zones that are associated with a reusable delegation set, specify the ID of that reusable delegation set. - */ - DelegationSetId?: ResourceId; - } - export interface ListHostedZonesResponse { - /** - * A complex type that contains general information about the hosted zone. - */ - HostedZones: HostedZones; - /** - * For the second and subsequent calls to ListHostedZones, Marker is the value that you specified for the marker parameter in the request that produced the current response. - */ - Marker: PageMarker; - /** - * A flag indicating whether there are more hosted zones to be listed. If the response was truncated, you can get more hosted zones by submitting another ListHostedZones request and specifying the value of NextMarker in the marker parameter. - */ - IsTruncated: PageTruncated; - /** - * If IsTruncated is true, the value of NextMarker identifies the first hosted zone in the next group of hosted zones. Submit another ListHostedZones request, and specify the value of NextMarker from the response in the marker parameter. This element is present only if IsTruncated is true. - */ - NextMarker?: PageMarker; - /** - * The value that you specified for the maxitems parameter in the call to ListHostedZones that produced the current response. - */ - MaxItems: PageMaxItems; - } - export interface ListQueryLoggingConfigsRequest { - /** - * (Optional) If you want to list the query logging configuration that is associated with a hosted zone, specify the ID in HostedZoneId. If you don't specify a hosted zone ID, ListQueryLoggingConfigs returns all of the configurations that are associated with the current AWS account. - */ - HostedZoneId?: ResourceId; - /** - * (Optional) If the current AWS account has more than MaxResults query logging configurations, use NextToken to get the second and subsequent pages of results. For the first ListQueryLoggingConfigs request, omit this value. For the second and subsequent requests, get the value of NextToken from the previous response and specify that value for NextToken in the request. - */ - NextToken?: PaginationToken; - /** - * (Optional) The maximum number of query logging configurations that you want Amazon Route 53 to return in response to the current request. If the current AWS account has more than MaxResults configurations, use the value of ListQueryLoggingConfigsResponse$NextToken in the response to get the next page of results. If you don't specify a value for MaxResults, Amazon Route 53 returns up to 100 configurations. - */ - MaxResults?: MaxResults; - } - export interface ListQueryLoggingConfigsResponse { - /** - * An array that contains one QueryLoggingConfig element for each configuration for DNS query logging that is associated with the current AWS account. - */ - QueryLoggingConfigs: QueryLoggingConfigs; - /** - * If a response includes the last of the query logging configurations that are associated with the current AWS account, NextToken doesn't appear in the response. If a response doesn't include the last of the configurations, you can get more configurations by submitting another ListQueryLoggingConfigs request. Get the value of NextToken that Amazon Route 53 returned in the previous response and include it in NextToken in the next request. - */ - NextToken?: PaginationToken; - } - export interface ListResourceRecordSetsRequest { - /** - * The ID of the hosted zone that contains the resource record sets that you want to list. - */ - HostedZoneId: ResourceId; - /** - * The first name in the lexicographic ordering of resource record sets that you want to list. - */ - StartRecordName?: DNSName; - /** - * The type of resource record set to begin the record listing from. Valid values for basic resource record sets: A | AAAA | CAA | CNAME | MX | NAPTR | NS | PTR | SOA | SPF | SRV | TXT Values for weighted, latency, geo, and failover resource record sets: A | AAAA | CAA | CNAME | MX | NAPTR | PTR | SPF | SRV | TXT Values for alias resource record sets: CloudFront distribution: A or AAAA Elastic Beanstalk environment that has a regionalized subdomain: A ELB load balancer: A | AAAA Amazon S3 bucket: A Another resource record set in this hosted zone: The type of the resource record set that the alias references. Constraint: Specifying type without specifying name returns an InvalidInput error. - */ - StartRecordType?: RRType; - /** - * Weighted resource record sets only: If results were truncated for a given DNS name and type, specify the value of NextRecordIdentifier from the previous response to get the next resource record set that has the current DNS name and type. - */ - StartRecordIdentifier?: ResourceRecordSetIdentifier; - /** - * (Optional) The maximum number of resource records sets to include in the response body for this request. If the response includes more than maxitems resource record sets, the value of the IsTruncated element in the response is true, and the values of the NextRecordName and NextRecordType elements in the response identify the first resource record set in the next group of maxitems resource record sets. - */ - MaxItems?: PageMaxItems; - } - export interface ListResourceRecordSetsResponse { - /** - * Information about multiple resource record sets. - */ - ResourceRecordSets: ResourceRecordSets; - /** - * A flag that indicates whether more resource record sets remain to be listed. If your results were truncated, you can make a follow-up pagination request by using the NextRecordName element. - */ - IsTruncated: PageTruncated; - /** - * If the results were truncated, the name of the next record in the list. This element is present only if IsTruncated is true. - */ - NextRecordName?: DNSName; - /** - * If the results were truncated, the type of the next record in the list. This element is present only if IsTruncated is true. - */ - NextRecordType?: RRType; - /** - * Weighted, latency, geolocation, and failover resource record sets only: If results were truncated for a given DNS name and type, the value of SetIdentifier for the next resource record set that has the current DNS name and type. - */ - NextRecordIdentifier?: ResourceRecordSetIdentifier; - /** - * The maximum number of records you requested. - */ - MaxItems: PageMaxItems; - } - export interface ListReusableDelegationSetsRequest { - /** - * If the value of IsTruncated in the previous response was true, you have more reusable delegation sets. To get another group, submit another ListReusableDelegationSets request. For the value of marker, specify the value of NextMarker from the previous response, which is the ID of the first reusable delegation set that Amazon Route 53 will return if you submit another request. If the value of IsTruncated in the previous response was false, there are no more reusable delegation sets to get. - */ - Marker?: PageMarker; - /** - * The number of reusable delegation sets that you want Amazon Route 53 to return in the response to this request. If you specify a value greater than 100, Amazon Route 53 returns only the first 100 reusable delegation sets. - */ - MaxItems?: PageMaxItems; - } - export interface ListReusableDelegationSetsResponse { - /** - * A complex type that contains one DelegationSet element for each reusable delegation set that was created by the current AWS account. - */ - DelegationSets: DelegationSets; - /** - * For the second and subsequent calls to ListReusableDelegationSets, Marker is the value that you specified for the marker parameter in the request that produced the current response. - */ - Marker: PageMarker; - /** - * A flag that indicates whether there are more reusable delegation sets to be listed. - */ - IsTruncated: PageTruncated; - /** - * If IsTruncated is true, the value of NextMarker identifies the next reusable delegation set that Amazon Route 53 will return if you submit another ListReusableDelegationSets request and specify the value of NextMarker in the marker parameter. - */ - NextMarker?: PageMarker; - /** - * The value that you specified for the maxitems parameter in the call to ListReusableDelegationSets that produced the current response. - */ - MaxItems: PageMaxItems; - } - export interface ListTagsForResourceRequest { - /** - * The type of the resource. The resource type for health checks is healthcheck. The resource type for hosted zones is hostedzone. - */ - ResourceType: TagResourceType; - /** - * The ID of the resource for which you want to retrieve tags. - */ - ResourceId: TagResourceId; - } - export interface ListTagsForResourceResponse { - /** - * A ResourceTagSet containing tags associated with the specified resource. - */ - ResourceTagSet: ResourceTagSet; - } - export interface ListTagsForResourcesRequest { - /** - * The type of the resources. The resource type for health checks is healthcheck. The resource type for hosted zones is hostedzone. - */ - ResourceType: TagResourceType; - /** - * A complex type that contains the ResourceId element for each resource for which you want to get a list of tags. - */ - ResourceIds: TagResourceIdList; - } - export interface ListTagsForResourcesResponse { - /** - * A list of ResourceTagSets containing tags associated with the specified resources. - */ - ResourceTagSets: ResourceTagSetList; - } - export interface ListTrafficPoliciesRequest { - /** - * (Conditional) For your first request to ListTrafficPolicies, don't include the TrafficPolicyIdMarker parameter. If you have more traffic policies than the value of MaxItems, ListTrafficPolicies returns only the first MaxItems traffic policies. To get the next group of policies, submit another request to ListTrafficPolicies. For the value of TrafficPolicyIdMarker, specify the value of TrafficPolicyIdMarker that was returned in the previous response. - */ - TrafficPolicyIdMarker?: TrafficPolicyId; - /** - * (Optional) The maximum number of traffic policies that you want Amazon Route 53 to return in response to this request. If you have more than MaxItems traffic policies, the value of IsTruncated in the response is true, and the value of TrafficPolicyIdMarker is the ID of the first traffic policy that Amazon Route 53 will return if you submit another request. - */ - MaxItems?: PageMaxItems; - } - export interface ListTrafficPoliciesResponse { - /** - * A list that contains one TrafficPolicySummary element for each traffic policy that was created by the current AWS account. - */ - TrafficPolicySummaries: TrafficPolicySummaries; - /** - * A flag that indicates whether there are more traffic policies to be listed. If the response was truncated, you can get the next group of traffic policies by submitting another ListTrafficPolicies request and specifying the value of TrafficPolicyIdMarker in the TrafficPolicyIdMarker request parameter. - */ - IsTruncated: PageTruncated; - /** - * If the value of IsTruncated is true, TrafficPolicyIdMarker is the ID of the first traffic policy in the next group of MaxItems traffic policies. - */ - TrafficPolicyIdMarker: TrafficPolicyId; - /** - * The value that you specified for the MaxItems parameter in the ListTrafficPolicies request that produced the current response. - */ - MaxItems: PageMaxItems; - } - export interface ListTrafficPolicyInstancesByHostedZoneRequest { - /** - * The ID of the hosted zone that you want to list traffic policy instances for. - */ - HostedZoneId: ResourceId; - /** - * If the value of IsTruncated in the previous response is true, you have more traffic policy instances. To get more traffic policy instances, submit another ListTrafficPolicyInstances request. For the value of trafficpolicyinstancename, specify the value of TrafficPolicyInstanceNameMarker from the previous response, which is the name of the first traffic policy instance in the next group of traffic policy instances. If the value of IsTruncated in the previous response was false, there are no more traffic policy instances to get. - */ - TrafficPolicyInstanceNameMarker?: DNSName; - /** - * If the value of IsTruncated in the previous response is true, you have more traffic policy instances. To get more traffic policy instances, submit another ListTrafficPolicyInstances request. For the value of trafficpolicyinstancetype, specify the value of TrafficPolicyInstanceTypeMarker from the previous response, which is the type of the first traffic policy instance in the next group of traffic policy instances. If the value of IsTruncated in the previous response was false, there are no more traffic policy instances to get. - */ - TrafficPolicyInstanceTypeMarker?: RRType; - /** - * The maximum number of traffic policy instances to be included in the response body for this request. If you have more than MaxItems traffic policy instances, the value of the IsTruncated element in the response is true, and the values of HostedZoneIdMarker, TrafficPolicyInstanceNameMarker, and TrafficPolicyInstanceTypeMarker represent the first traffic policy instance that Amazon Route 53 will return if you submit another request. - */ - MaxItems?: PageMaxItems; - } - export interface ListTrafficPolicyInstancesByHostedZoneResponse { - /** - * A list that contains one TrafficPolicyInstance element for each traffic policy instance that matches the elements in the request. - */ - TrafficPolicyInstances: TrafficPolicyInstances; - /** - * If IsTruncated is true, TrafficPolicyInstanceNameMarker is the name of the first traffic policy instance in the next group of traffic policy instances. - */ - TrafficPolicyInstanceNameMarker?: DNSName; - /** - * If IsTruncated is true, TrafficPolicyInstanceTypeMarker is the DNS type of the resource record sets that are associated with the first traffic policy instance in the next group of traffic policy instances. - */ - TrafficPolicyInstanceTypeMarker?: RRType; - /** - * A flag that indicates whether there are more traffic policy instances to be listed. If the response was truncated, you can get the next group of traffic policy instances by submitting another ListTrafficPolicyInstancesByHostedZone request and specifying the values of HostedZoneIdMarker, TrafficPolicyInstanceNameMarker, and TrafficPolicyInstanceTypeMarker in the corresponding request parameters. - */ - IsTruncated: PageTruncated; - /** - * The value that you specified for the MaxItems parameter in the ListTrafficPolicyInstancesByHostedZone request that produced the current response. - */ - MaxItems: PageMaxItems; - } - export interface ListTrafficPolicyInstancesByPolicyRequest { - /** - * The ID of the traffic policy for which you want to list traffic policy instances. - */ - TrafficPolicyId: TrafficPolicyId; - /** - * The version of the traffic policy for which you want to list traffic policy instances. The version must be associated with the traffic policy that is specified by TrafficPolicyId. - */ - TrafficPolicyVersion: TrafficPolicyVersion; - /** - * If the value of IsTruncated in the previous response was true, you have more traffic policy instances. To get more traffic policy instances, submit another ListTrafficPolicyInstancesByPolicy request. For the value of hostedzoneid, specify the value of HostedZoneIdMarker from the previous response, which is the hosted zone ID of the first traffic policy instance that Amazon Route 53 will return if you submit another request. If the value of IsTruncated in the previous response was false, there are no more traffic policy instances to get. - */ - HostedZoneIdMarker?: ResourceId; - /** - * If the value of IsTruncated in the previous response was true, you have more traffic policy instances. To get more traffic policy instances, submit another ListTrafficPolicyInstancesByPolicy request. For the value of trafficpolicyinstancename, specify the value of TrafficPolicyInstanceNameMarker from the previous response, which is the name of the first traffic policy instance that Amazon Route 53 will return if you submit another request. If the value of IsTruncated in the previous response was false, there are no more traffic policy instances to get. - */ - TrafficPolicyInstanceNameMarker?: DNSName; - /** - * If the value of IsTruncated in the previous response was true, you have more traffic policy instances. To get more traffic policy instances, submit another ListTrafficPolicyInstancesByPolicy request. For the value of trafficpolicyinstancetype, specify the value of TrafficPolicyInstanceTypeMarker from the previous response, which is the name of the first traffic policy instance that Amazon Route 53 will return if you submit another request. If the value of IsTruncated in the previous response was false, there are no more traffic policy instances to get. - */ - TrafficPolicyInstanceTypeMarker?: RRType; - /** - * The maximum number of traffic policy instances to be included in the response body for this request. If you have more than MaxItems traffic policy instances, the value of the IsTruncated element in the response is true, and the values of HostedZoneIdMarker, TrafficPolicyInstanceNameMarker, and TrafficPolicyInstanceTypeMarker represent the first traffic policy instance that Amazon Route 53 will return if you submit another request. - */ - MaxItems?: PageMaxItems; - } - export interface ListTrafficPolicyInstancesByPolicyResponse { - /** - * A list that contains one TrafficPolicyInstance element for each traffic policy instance that matches the elements in the request. - */ - TrafficPolicyInstances: TrafficPolicyInstances; - /** - * If IsTruncated is true, HostedZoneIdMarker is the ID of the hosted zone of the first traffic policy instance in the next group of traffic policy instances. - */ - HostedZoneIdMarker?: ResourceId; - /** - * If IsTruncated is true, TrafficPolicyInstanceNameMarker is the name of the first traffic policy instance in the next group of MaxItems traffic policy instances. - */ - TrafficPolicyInstanceNameMarker?: DNSName; - /** - * If IsTruncated is true, TrafficPolicyInstanceTypeMarker is the DNS type of the resource record sets that are associated with the first traffic policy instance in the next group of MaxItems traffic policy instances. - */ - TrafficPolicyInstanceTypeMarker?: RRType; - /** - * A flag that indicates whether there are more traffic policy instances to be listed. If the response was truncated, you can get the next group of traffic policy instances by calling ListTrafficPolicyInstancesByPolicy again and specifying the values of the HostedZoneIdMarker, TrafficPolicyInstanceNameMarker, and TrafficPolicyInstanceTypeMarker elements in the corresponding request parameters. - */ - IsTruncated: PageTruncated; - /** - * The value that you specified for the MaxItems parameter in the call to ListTrafficPolicyInstancesByPolicy that produced the current response. - */ - MaxItems: PageMaxItems; - } - export interface ListTrafficPolicyInstancesRequest { - /** - * If the value of IsTruncated in the previous response was true, you have more traffic policy instances. To get more traffic policy instances, submit another ListTrafficPolicyInstances request. For the value of HostedZoneId, specify the value of HostedZoneIdMarker from the previous response, which is the hosted zone ID of the first traffic policy instance in the next group of traffic policy instances. If the value of IsTruncated in the previous response was false, there are no more traffic policy instances to get. - */ - HostedZoneIdMarker?: ResourceId; - /** - * If the value of IsTruncated in the previous response was true, you have more traffic policy instances. To get more traffic policy instances, submit another ListTrafficPolicyInstances request. For the value of trafficpolicyinstancename, specify the value of TrafficPolicyInstanceNameMarker from the previous response, which is the name of the first traffic policy instance in the next group of traffic policy instances. If the value of IsTruncated in the previous response was false, there are no more traffic policy instances to get. - */ - TrafficPolicyInstanceNameMarker?: DNSName; - /** - * If the value of IsTruncated in the previous response was true, you have more traffic policy instances. To get more traffic policy instances, submit another ListTrafficPolicyInstances request. For the value of trafficpolicyinstancetype, specify the value of TrafficPolicyInstanceTypeMarker from the previous response, which is the type of the first traffic policy instance in the next group of traffic policy instances. If the value of IsTruncated in the previous response was false, there are no more traffic policy instances to get. - */ - TrafficPolicyInstanceTypeMarker?: RRType; - /** - * The maximum number of traffic policy instances that you want Amazon Route 53 to return in response to a ListTrafficPolicyInstances request. If you have more than MaxItems traffic policy instances, the value of the IsTruncated element in the response is true, and the values of HostedZoneIdMarker, TrafficPolicyInstanceNameMarker, and TrafficPolicyInstanceTypeMarker represent the first traffic policy instance in the next group of MaxItems traffic policy instances. - */ - MaxItems?: PageMaxItems; - } - export interface ListTrafficPolicyInstancesResponse { - /** - * A list that contains one TrafficPolicyInstance element for each traffic policy instance that matches the elements in the request. - */ - TrafficPolicyInstances: TrafficPolicyInstances; - /** - * If IsTruncated is true, HostedZoneIdMarker is the ID of the hosted zone of the first traffic policy instance that Amazon Route 53 will return if you submit another ListTrafficPolicyInstances request. - */ - HostedZoneIdMarker?: ResourceId; - /** - * If IsTruncated is true, TrafficPolicyInstanceNameMarker is the name of the first traffic policy instance that Amazon Route 53 will return if you submit another ListTrafficPolicyInstances request. - */ - TrafficPolicyInstanceNameMarker?: DNSName; - /** - * If IsTruncated is true, TrafficPolicyInstanceTypeMarker is the DNS type of the resource record sets that are associated with the first traffic policy instance that Amazon Route 53 will return if you submit another ListTrafficPolicyInstances request. - */ - TrafficPolicyInstanceTypeMarker?: RRType; - /** - * A flag that indicates whether there are more traffic policy instances to be listed. If the response was truncated, you can get more traffic policy instances by calling ListTrafficPolicyInstances again and specifying the values of the HostedZoneIdMarker, TrafficPolicyInstanceNameMarker, and TrafficPolicyInstanceTypeMarker in the corresponding request parameters. - */ - IsTruncated: PageTruncated; - /** - * The value that you specified for the MaxItems parameter in the call to ListTrafficPolicyInstances that produced the current response. - */ - MaxItems: PageMaxItems; - } - export interface ListTrafficPolicyVersionsRequest { - /** - * Specify the value of Id of the traffic policy for which you want to list all versions. - */ - Id: TrafficPolicyId; - /** - * For your first request to ListTrafficPolicyVersions, don't include the TrafficPolicyVersionMarker parameter. If you have more traffic policy versions than the value of MaxItems, ListTrafficPolicyVersions returns only the first group of MaxItems versions. To get more traffic policy versions, submit another ListTrafficPolicyVersions request. For the value of TrafficPolicyVersionMarker, specify the value of TrafficPolicyVersionMarker in the previous response. - */ - TrafficPolicyVersionMarker?: TrafficPolicyVersionMarker; - /** - * The maximum number of traffic policy versions that you want Amazon Route 53 to include in the response body for this request. If the specified traffic policy has more than MaxItems versions, the value of IsTruncated in the response is true, and the value of the TrafficPolicyVersionMarker element is the ID of the first version that Amazon Route 53 will return if you submit another request. - */ - MaxItems?: PageMaxItems; - } - export interface ListTrafficPolicyVersionsResponse { - /** - * A list that contains one TrafficPolicy element for each traffic policy version that is associated with the specified traffic policy. - */ - TrafficPolicies: TrafficPolicies; - /** - * A flag that indicates whether there are more traffic policies to be listed. If the response was truncated, you can get the next group of traffic policies by submitting another ListTrafficPolicyVersions request and specifying the value of NextMarker in the marker parameter. - */ - IsTruncated: PageTruncated; - /** - * If IsTruncated is true, the value of TrafficPolicyVersionMarker identifies the first traffic policy that Amazon Route 53 will return if you submit another request. Call ListTrafficPolicyVersions again and specify the value of TrafficPolicyVersionMarker in the TrafficPolicyVersionMarker request parameter. This element is present only if IsTruncated is true. - */ - TrafficPolicyVersionMarker: TrafficPolicyVersionMarker; - /** - * The value that you specified for the maxitems parameter in the ListTrafficPolicyVersions request that produced the current response. - */ - MaxItems: PageMaxItems; - } - export interface ListVPCAssociationAuthorizationsRequest { - /** - * The ID of the hosted zone for which you want a list of VPCs that can be associated with the hosted zone. - */ - HostedZoneId: ResourceId; - /** - * Optional: If a response includes a NextToken element, there are more VPCs that can be associated with the specified hosted zone. To get the next page of results, submit another request, and include the value of NextToken from the response in the nexttoken parameter in another ListVPCAssociationAuthorizations request. - */ - NextToken?: PaginationToken; - /** - * Optional: An integer that specifies the maximum number of VPCs that you want Amazon Route 53 to return. If you don't specify a value for MaxResults, Amazon Route 53 returns up to 50 VPCs per page. - */ - MaxResults?: MaxResults; - } - export interface ListVPCAssociationAuthorizationsResponse { - /** - * The ID of the hosted zone that you can associate the listed VPCs with. - */ - HostedZoneId: ResourceId; - /** - * When the response includes a NextToken element, there are more VPCs that can be associated with the specified hosted zone. To get the next page of VPCs, submit another ListVPCAssociationAuthorizations request, and include the value of the NextToken element from the response in the nexttoken request parameter. - */ - NextToken?: PaginationToken; - /** - * The list of VPCs that are authorized to be associated with the specified hosted zone. - */ - VPCs: VPCs; - } - export type MaxResults = string; - export type MeasureLatency = boolean; - export type Message = string; - export type MetricName = string; - export type Nameserver = string; - export type Namespace = string; - export type Nonce = string; - export type PageMarker = string; - export type PageMaxItems = string; - export type PageTruncated = boolean; - export type PaginationToken = string; - export type Period = number; - export type Port = number; - export interface QueryLoggingConfig { - /** - * The ID for a configuration for DNS query logging. - */ - Id: QueryLoggingConfigId; - /** - * The ID of the hosted zone that CloudWatch Logs is logging queries for. - */ - HostedZoneId: ResourceId; - /** - * The Amazon Resource Name (ARN) of the CloudWatch Logs log group that Amazon Route 53 is publishing logs to. - */ - CloudWatchLogsLogGroupArn: CloudWatchLogsLogGroupArn; - } - export type QueryLoggingConfigId = string; - export type QueryLoggingConfigs = QueryLoggingConfig[]; - export type RData = string; - export type RRType = "SOA"|"A"|"TXT"|"NS"|"CNAME"|"MX"|"NAPTR"|"PTR"|"SRV"|"SPF"|"AAAA"|"CAA"|string; - export type RecordData = RecordDataEntry[]; - export type RecordDataEntry = string; - export type RequestInterval = number; - export type ResettableElementName = "FullyQualifiedDomainName"|"Regions"|"ResourcePath"|"ChildHealthChecks"|string; - export type ResettableElementNameList = ResettableElementName[]; - export type ResourceDescription = string; - export type ResourceId = string; - export type ResourcePath = string; - export interface ResourceRecord { - /** - * The current or new DNS record value, not to exceed 4,000 characters. In the case of a DELETE action, if the current value does not match the actual value, an error is returned. For descriptions about how to format Value for different record types, see Supported DNS Resource Record Types in the Amazon Route 53 Developer Guide. You can specify more than one value for all record types except CNAME and SOA. If you're creating an alias resource record set, omit Value. - */ - Value: RData; - } - export interface ResourceRecordSet { - /** - * The name of the domain you want to perform the action on. Enter a fully qualified domain name, for example, www.example.com. You can optionally include a trailing dot. If you omit the trailing dot, Amazon Route 53 still assumes that the domain name that you specify is fully qualified. This means that Amazon Route 53 treats www.example.com (without a trailing dot) and www.example.com. (with a trailing dot) as identical. For information about how to specify characters other than a-z, 0-9, and - (hyphen) and how to specify internationalized domain names, see DNS Domain Name Format in the Amazon Route 53 Developer Guide. You can use the asterisk (*) wildcard to replace the leftmost label in a domain name, for example, *.example.com. Note the following: The * must replace the entire label. For example, you can't specify *prod.example.com or prod*.example.com. The * can't replace any of the middle labels, for example, marketing.*.example.com. If you include * in any position other than the leftmost label in a domain name, DNS treats it as an * character (ASCII 42), not as a wildcard. You can't use the * wildcard for resource records sets that have a type of NS. You can use the * wildcard as the leftmost label in a domain name, for example, *.example.com. You can't use an * for one of the middle labels, for example, marketing.*.example.com. In addition, the * must replace the entire label; for example, you can't specify prod*.example.com. - */ - Name: DNSName; - /** - * The DNS record type. For information about different record types and how data is encoded for them, see Supported DNS Resource Record Types in the Amazon Route 53 Developer Guide. Valid values for basic resource record sets: A | AAAA | CAA | CNAME | MX | NAPTR | NS | PTR | SOA | SPF | SRV | TXT Values for weighted, latency, geolocation, and failover resource record sets: A | AAAA | CAA | CNAME | MX | NAPTR | PTR | SPF | SRV | TXT. When creating a group of weighted, latency, geolocation, or failover resource record sets, specify the same value for all of the resource record sets in the group. Valid values for multivalue answer resource record sets: A | AAAA | MX | NAPTR | PTR | SPF | SRV | TXT SPF records were formerly used to verify the identity of the sender of email messages. However, we no longer recommend that you create resource record sets for which the value of Type is SPF. RFC 7208, Sender Policy Framework (SPF) for Authorizing Use of Domains in Email, Version 1, has been updated to say, "...[I]ts existence and mechanism defined in [RFC4408] have led to some interoperability issues. Accordingly, its use is no longer appropriate for SPF version 1; implementations are not to use it." In RFC 7208, see section 14.1, The SPF DNS Record Type. Values for alias resource record sets: CloudFront distributions: A If IPv6 is enabled for the distribution, create two resource record sets to route traffic to your distribution, one with a value of A and one with a value of AAAA. AWS Elastic Beanstalk environment that has a regionalized subdomain: A ELB load balancers: A | AAAA Amazon S3 buckets: A Another resource record set in this hosted zone: Specify the type of the resource record set that you're creating the alias for. All values are supported except NS and SOA. - */ - Type: RRType; - /** - * Weighted, Latency, Geo, and Failover resource record sets only: An identifier that differentiates among multiple resource record sets that have the same combination of DNS name and type. The value of SetIdentifier must be unique for each resource record set that has the same combination of DNS name and type. Omit SetIdentifier for any other types of record sets. - */ - SetIdentifier?: ResourceRecordSetIdentifier; - /** - * Weighted resource record sets only: Among resource record sets that have the same combination of DNS name and type, a value that determines the proportion of DNS queries that Amazon Route 53 responds to using the current resource record set. Amazon Route 53 calculates the sum of the weights for the resource record sets that have the same combination of DNS name and type. Amazon Route 53 then responds to queries based on the ratio of a resource's weight to the total. Note the following: You must specify a value for the Weight element for every weighted resource record set. You can only specify one ResourceRecord per weighted resource record set. You can't create latency, failover, or geolocation resource record sets that have the same values for the Name and Type elements as weighted resource record sets. You can create a maximum of 100 weighted resource record sets that have the same values for the Name and Type elements. For weighted (but not weighted alias) resource record sets, if you set Weight to 0 for a resource record set, Amazon Route 53 never responds to queries with the applicable value for that resource record set. However, if you set Weight to 0 for all resource record sets that have the same combination of DNS name and type, traffic is routed to all resources with equal probability. The effect of setting Weight to 0 is different when you associate health checks with weighted resource record sets. For more information, see Options for Configuring Amazon Route 53 Active-Active and Active-Passive Failover in the Amazon Route 53 Developer Guide. - */ - Weight?: ResourceRecordSetWeight; - /** - * Latency-based resource record sets only: The Amazon EC2 Region where you created the resource that this resource record set refers to. The resource typically is an AWS resource, such as an EC2 instance or an ELB load balancer, and is referred to by an IP address or a DNS domain name, depending on the record type. Creating latency and latency alias resource record sets in private hosted zones is not supported. When Amazon Route 53 receives a DNS query for a domain name and type for which you have created latency resource record sets, Amazon Route 53 selects the latency resource record set that has the lowest latency between the end user and the associated Amazon EC2 Region. Amazon Route 53 then returns the value that is associated with the selected resource record set. Note the following: You can only specify one ResourceRecord per latency resource record set. You can only create one latency resource record set for each Amazon EC2 Region. You aren't required to create latency resource record sets for all Amazon EC2 Regions. Amazon Route 53 will choose the region with the best latency from among the regions that you create latency resource record sets for. You can't create non-latency resource record sets that have the same values for the Name and Type elements as latency resource record sets. - */ - Region?: ResourceRecordSetRegion; - /** - * Geo location resource record sets only: A complex type that lets you control how Amazon Route 53 responds to DNS queries based on the geographic origin of the query. For example, if you want all queries from Africa to be routed to a web server with an IP address of 192.0.2.111, create a resource record set with a Type of A and a ContinentCode of AF. Creating geolocation and geolocation alias resource record sets in private hosted zones is not supported. If you create separate resource record sets for overlapping geographic regions (for example, one resource record set for a continent and one for a country on the same continent), priority goes to the smallest geographic region. This allows you to route most queries for a continent to one resource and to route queries for a country on that continent to a different resource. You can't create two geolocation resource record sets that specify the same geographic location. The value * in the CountryCode element matches all geographic locations that aren't specified in other geolocation resource record sets that have the same values for the Name and Type elements. Geolocation works by mapping IP addresses to locations. However, some IP addresses aren't mapped to geographic locations, so even if you create geolocation resource record sets that cover all seven continents, Amazon Route 53 will receive some DNS queries from locations that it can't identify. We recommend that you create a resource record set for which the value of CountryCode is *, which handles both queries that come from locations for which you haven't created geolocation resource record sets and queries from IP addresses that aren't mapped to a location. If you don't create a * resource record set, Amazon Route 53 returns a "no answer" response for queries from those locations. You can't create non-geolocation resource record sets that have the same values for the Name and Type elements as geolocation resource record sets. - */ - GeoLocation?: GeoLocation; - /** - * Failover resource record sets only: To configure failover, you add the Failover element to two resource record sets. For one resource record set, you specify PRIMARY as the value for Failover; for the other resource record set, you specify SECONDARY. In addition, you include the HealthCheckId element and specify the health check that you want Amazon Route 53 to perform for each resource record set. Except where noted, the following failover behaviors assume that you have included the HealthCheckId element in both resource record sets: When the primary resource record set is healthy, Amazon Route 53 responds to DNS queries with the applicable value from the primary resource record set regardless of the health of the secondary resource record set. When the primary resource record set is unhealthy and the secondary resource record set is healthy, Amazon Route 53 responds to DNS queries with the applicable value from the secondary resource record set. When the secondary resource record set is unhealthy, Amazon Route 53 responds to DNS queries with the applicable value from the primary resource record set regardless of the health of the primary resource record set. If you omit the HealthCheckId element for the secondary resource record set, and if the primary resource record set is unhealthy, Amazon Route 53 always responds to DNS queries with the applicable value from the secondary resource record set. This is true regardless of the health of the associated endpoint. You can't create non-failover resource record sets that have the same values for the Name and Type elements as failover resource record sets. For failover alias resource record sets, you must also include the EvaluateTargetHealth element and set the value to true. For more information about configuring failover for Amazon Route 53, see the following topics in the Amazon Route 53 Developer Guide: Amazon Route 53 Health Checks and DNS Failover Configuring Failover in a Private Hosted Zone - */ - Failover?: ResourceRecordSetFailover; - /** - * Multivalue answer resource record sets only: To route traffic approximately randomly to multiple resources, such as web servers, create one multivalue answer record for each resource and specify true for MultiValueAnswer. Note the following: If you associate a health check with a multivalue answer resource record set, Amazon Route 53 responds to DNS queries with the corresponding IP address only when the health check is healthy. If you don't associate a health check with a multivalue answer record, Amazon Route 53 always considers the record to be healthy. Amazon Route 53 responds to DNS queries with up to eight healthy records; if you have eight or fewer healthy records, Amazon Route 53 responds to all DNS queries with all the healthy records. If you have more than eight healthy records, Amazon Route 53 responds to different DNS resolvers with different combinations of healthy records. When all records are unhealthy, Amazon Route 53 responds to DNS queries with up to eight unhealthy records. If a resource becomes unavailable after a resolver caches a response, client software typically tries another of the IP addresses in the response. You can't create multivalue answer alias records. - */ - MultiValueAnswer?: ResourceRecordSetMultiValueAnswer; - /** - * The resource record cache time to live (TTL), in seconds. Note the following: If you're creating or updating an alias resource record set, omit TTL. Amazon Route 53 uses the value of TTL for the alias target. If you're associating this resource record set with a health check (if you're adding a HealthCheckId element), we recommend that you specify a TTL of 60 seconds or less so clients respond quickly to changes in health status. All of the resource record sets in a group of weighted resource record sets must have the same value for TTL. If a group of weighted resource record sets includes one or more weighted alias resource record sets for which the alias target is an ELB load balancer, we recommend that you specify a TTL of 60 seconds for all of the non-alias weighted resource record sets that have the same name and type. Values other than 60 seconds (the TTL for load balancers) will change the effect of the values that you specify for Weight. - */ - TTL?: TTL; - /** - * Information about the resource records to act upon. If you're creating an alias resource record set, omit ResourceRecords. - */ - ResourceRecords?: ResourceRecords; - /** - * Alias resource record sets only: Information about the CloudFront distribution, AWS Elastic Beanstalk environment, ELB load balancer, Amazon S3 bucket, or Amazon Route 53 resource record set to which you're redirecting queries. The AWS Elastic Beanstalk environment must have a regionalized subdomain. If you're creating resource records sets for a private hosted zone, note the following: You can't create alias resource record sets for CloudFront distributions in a private hosted zone. Creating geolocation alias resource record sets or latency alias resource record sets in a private hosted zone is unsupported. For information about creating failover resource record sets in a private hosted zone, see Configuring Failover in a Private Hosted Zone in the Amazon Route 53 Developer Guide. - */ - AliasTarget?: AliasTarget; - /** - * If you want Amazon Route 53 to return this resource record set in response to a DNS query only when a health check is passing, include the HealthCheckId element and specify the ID of the applicable health check. Amazon Route 53 determines whether a resource record set is healthy based on one of the following: By periodically sending a request to the endpoint that is specified in the health check By aggregating the status of a specified group of health checks (calculated health checks) By determining the current state of a CloudWatch alarm (CloudWatch metric health checks) For more information, see How Amazon Route 53 Determines Whether an Endpoint Is Healthy. The HealthCheckId element is only useful when Amazon Route 53 is choosing between two or more resource record sets to respond to a DNS query, and you want Amazon Route 53 to base the choice in part on the status of a health check. Configuring health checks only makes sense in the following configurations: You're checking the health of the resource record sets in a group of weighted, latency, geolocation, or failover resource record sets, and you specify health check IDs for all of the resource record sets. If the health check for one resource record set specifies an endpoint that is not healthy, Amazon Route 53 stops responding to queries using the value for that resource record set. You set EvaluateTargetHealth to true for the resource record sets in a group of alias, weighted alias, latency alias, geolocation alias, or failover alias resource record sets, and you specify health check IDs for all of the resource record sets that are referenced by the alias resource record sets. Amazon Route 53 doesn't check the health of the endpoint specified in the resource record set, for example, the endpoint specified by the IP address in the Value element. When you add a HealthCheckId element to a resource record set, Amazon Route 53 checks the health of the endpoint that you specified in the health check. For geolocation resource record sets, if an endpoint is unhealthy, Amazon Route 53 looks for a resource record set for the larger, associated geographic region. For example, suppose you have resource record sets for a state in the United States, for the United States, for North America, and for all locations. If the endpoint for the state resource record set is unhealthy, Amazon Route 53 checks the resource record sets for the United States, for North America, and for all locations (a resource record set for which the value of CountryCode is *), in that order, until it finds a resource record set for which the endpoint is healthy. If your health checks specify the endpoint only by domain name, we recommend that you create a separate health check for each endpoint. For example, create a health check for each HTTP server that is serving content for www.example.com. For the value of FullyQualifiedDomainName, specify the domain name of the server (such as us-east-2-www.example.com), not the name of the resource record sets (example.com). n this configuration, if you create a health check for which the value of FullyQualifiedDomainName matches the name of the resource record sets and then associate the health check with those resource record sets, health check results will be unpredictable. For more information, see the following topics in the Amazon Route 53 Developer Guide: Amazon Route 53 Health Checks and DNS Failover Configuring Failover in a Private Hosted Zone - */ - HealthCheckId?: HealthCheckId; - /** - * When you create a traffic policy instance, Amazon Route 53 automatically creates a resource record set. TrafficPolicyInstanceId is the ID of the traffic policy instance that Amazon Route 53 created this resource record set for. To delete the resource record set that is associated with a traffic policy instance, use DeleteTrafficPolicyInstance. Amazon Route 53 will delete the resource record set automatically. If you delete the resource record set by using ChangeResourceRecordSets, Amazon Route 53 doesn't automatically delete the traffic policy instance, and you'll continue to be charged for it even though it's no longer in use. - */ - TrafficPolicyInstanceId?: TrafficPolicyInstanceId; - } - export type ResourceRecordSetFailover = "PRIMARY"|"SECONDARY"|string; - export type ResourceRecordSetIdentifier = string; - export type ResourceRecordSetMultiValueAnswer = boolean; - export type ResourceRecordSetRegion = "us-east-1"|"us-east-2"|"us-west-1"|"us-west-2"|"ca-central-1"|"eu-west-1"|"eu-west-2"|"eu-central-1"|"ap-southeast-1"|"ap-southeast-2"|"ap-northeast-1"|"ap-northeast-2"|"sa-east-1"|"cn-north-1"|"ap-south-1"|string; - export type ResourceRecordSetWeight = number; - export type ResourceRecordSets = ResourceRecordSet[]; - export type ResourceRecords = ResourceRecord[]; - export interface ResourceTagSet { - /** - * The type of the resource. The resource type for health checks is healthcheck. The resource type for hosted zones is hostedzone. - */ - ResourceType?: TagResourceType; - /** - * The ID for the specified resource. - */ - ResourceId?: TagResourceId; - /** - * The tags associated with the specified resource. - */ - Tags?: TagList; - } - export type ResourceTagSetList = ResourceTagSet[]; - export type ResourceURI = string; - export type SearchString = string; - export type Statistic = "Average"|"Sum"|"SampleCount"|"Maximum"|"Minimum"|string; - export type Status = string; - export interface StatusReport { - /** - * A description of the status of the health check endpoint as reported by one of the Amazon Route 53 health checkers. - */ - Status?: Status; - /** - * The date and time that the health checker performed the health check in ISO 8601 format and Coordinated Universal Time (UTC). For example, the value 2017-03-27T17:48:16.751Z represents March 27, 2017 at 17:48:16.751 UTC. - */ - CheckedTime?: TimeStamp; - } - export type SubnetMask = string; - export type TTL = number; - export interface Tag { - /** - * The value of Key depends on the operation that you want to perform: Add a tag to a health check or hosted zone: Key is the name that you want to give the new tag. Edit a tag: Key is the name of the tag that you want to change the Value for. Delete a key: Key is the name of the tag you want to remove. Give a name to a health check: Edit the default Name tag. In the Amazon Route 53 console, the list of your health checks includes a Name column that lets you see the name that you've given to each health check. - */ - Key?: TagKey; - /** - * The value of Value depends on the operation that you want to perform: Add a tag to a health check or hosted zone: Value is the value that you want to give the new tag. Edit a tag: Value is the new value that you want to assign the tag. - */ - Value?: TagValue; - } - export type TagKey = string; - export type TagKeyList = TagKey[]; - export type TagList = Tag[]; - export type TagResourceId = string; - export type TagResourceIdList = TagResourceId[]; - export type TagResourceType = "healthcheck"|"hostedzone"|string; - export type TagValue = string; - export interface TestDNSAnswerRequest { - /** - * The ID of the hosted zone that you want Amazon Route 53 to simulate a query for. - */ - HostedZoneId: ResourceId; - /** - * The name of the resource record set that you want Amazon Route 53 to simulate a query for. - */ - RecordName: DNSName; - /** - * The type of the resource record set. - */ - RecordType: RRType; - /** - * If you want to simulate a request from a specific DNS resolver, specify the IP address for that resolver. If you omit this value, TestDnsAnswer uses the IP address of a DNS resolver in the AWS US East (N. Virginia) Region (us-east-1). - */ - ResolverIP?: IPAddress; - /** - * If the resolver that you specified for resolverip supports EDNS0, specify the IPv4 or IPv6 address of a client in the applicable location, for example, 192.0.2.44 or 2001:db8:85a3::8a2e:370:7334. - */ - EDNS0ClientSubnetIP?: IPAddress; - /** - * If you specify an IP address for edns0clientsubnetip, you can optionally specify the number of bits of the IP address that you want the checking tool to include in the DNS query. For example, if you specify 192.0.2.44 for edns0clientsubnetip and 24 for edns0clientsubnetmask, the checking tool will simulate a request from 192.0.2.0/24. The default value is 24 bits for IPv4 addresses and 64 bits for IPv6 addresses. - */ - EDNS0ClientSubnetMask?: SubnetMask; - } - export interface TestDNSAnswerResponse { - /** - * The Amazon Route 53 name server used to respond to the request. - */ - Nameserver: Nameserver; - /** - * The name of the resource record set that you submitted a request for. - */ - RecordName: DNSName; - /** - * The type of the resource record set that you submitted a request for. - */ - RecordType: RRType; - /** - * A list that contains values that Amazon Route 53 returned for this resource record set. - */ - RecordData: RecordData; - /** - * A code that indicates whether the request is valid or not. The most common response code is NOERROR, meaning that the request is valid. If the response is not valid, Amazon Route 53 returns a response code that describes the error. For a list of possible response codes, see DNS RCODES on the IANA website. - */ - ResponseCode: DNSRCode; - /** - * The protocol that Amazon Route 53 used to respond to the request, either UDP or TCP. - */ - Protocol: TransportProtocol; - } - export type Threshold = number; - export type TimeStamp = Date; - export type TrafficPolicies = TrafficPolicy[]; - export interface TrafficPolicy { - /** - * The ID that Amazon Route 53 assigned to a traffic policy when you created it. - */ - Id: TrafficPolicyId; - /** - * The version number that Amazon Route 53 assigns to a traffic policy. For a new traffic policy, the value of Version is always 1. - */ - Version: TrafficPolicyVersion; - /** - * The name that you specified when you created the traffic policy. - */ - Name: TrafficPolicyName; - /** - * The DNS type of the resource record sets that Amazon Route 53 creates when you use a traffic policy to create a traffic policy instance. - */ - Type: RRType; - /** - * The definition of a traffic policy in JSON format. You specify the JSON document to use for a new traffic policy in the CreateTrafficPolicy request. For more information about the JSON format, see Traffic Policy Document Format. - */ - Document: TrafficPolicyDocument; - /** - * The comment that you specify in the CreateTrafficPolicy request, if any. - */ - Comment?: TrafficPolicyComment; - } - export type TrafficPolicyComment = string; - export type TrafficPolicyDocument = string; - export type TrafficPolicyId = string; - export interface TrafficPolicyInstance { - /** - * The ID that Amazon Route 53 assigned to the new traffic policy instance. - */ - Id: TrafficPolicyInstanceId; - /** - * The ID of the hosted zone that Amazon Route 53 created resource record sets in. - */ - HostedZoneId: ResourceId; - /** - * The DNS name, such as www.example.com, for which Amazon Route 53 responds to queries by using the resource record sets that are associated with this traffic policy instance. - */ - Name: DNSName; - /** - * The TTL that Amazon Route 53 assigned to all of the resource record sets that it created in the specified hosted zone. - */ - TTL: TTL; - /** - * The value of State is one of the following values: Applied Amazon Route 53 has finished creating resource record sets, and changes have propagated to all Amazon Route 53 edge locations. Creating Amazon Route 53 is creating the resource record sets. Use GetTrafficPolicyInstance to confirm that the CreateTrafficPolicyInstance request completed successfully. Failed Amazon Route 53 wasn't able to create or update the resource record sets. When the value of State is Failed, see Message for an explanation of what caused the request to fail. - */ - State: TrafficPolicyInstanceState; - /** - * If State is Failed, an explanation of the reason for the failure. If State is another value, Message is empty. - */ - Message: Message; - /** - * The ID of the traffic policy that Amazon Route 53 used to create resource record sets in the specified hosted zone. - */ - TrafficPolicyId: TrafficPolicyId; - /** - * The version of the traffic policy that Amazon Route 53 used to create resource record sets in the specified hosted zone. - */ - TrafficPolicyVersion: TrafficPolicyVersion; - /** - * The DNS type that Amazon Route 53 assigned to all of the resource record sets that it created for this traffic policy instance. - */ - TrafficPolicyType: RRType; - } - export type TrafficPolicyInstanceCount = number; - export type TrafficPolicyInstanceId = string; - export type TrafficPolicyInstanceState = string; - export type TrafficPolicyInstances = TrafficPolicyInstance[]; - export type TrafficPolicyName = string; - export type TrafficPolicySummaries = TrafficPolicySummary[]; - export interface TrafficPolicySummary { - /** - * The ID that Amazon Route 53 assigned to the traffic policy when you created it. - */ - Id: TrafficPolicyId; - /** - * The name that you specified for the traffic policy when you created it. - */ - Name: TrafficPolicyName; - /** - * The DNS type of the resource record sets that Amazon Route 53 creates when you use a traffic policy to create a traffic policy instance. - */ - Type: RRType; - /** - * The version number of the latest version of the traffic policy. - */ - LatestVersion: TrafficPolicyVersion; - /** - * The number of traffic policies that are associated with the current AWS account. - */ - TrafficPolicyCount: TrafficPolicyVersion; - } - export type TrafficPolicyVersion = number; - export type TrafficPolicyVersionMarker = string; - export type TransportProtocol = string; - export interface UpdateHealthCheckRequest { - /** - * The ID for the health check for which you want detailed information. When you created the health check, CreateHealthCheck returned the ID in the response, in the HealthCheckId element. - */ - HealthCheckId: HealthCheckId; - /** - * A sequential counter that Amazon Route 53 sets to 1 when you create a health check and increments by 1 each time you update settings for the health check. We recommend that you use GetHealthCheck or ListHealthChecks to get the current value of HealthCheckVersion for the health check that you want to update, and that you include that value in your UpdateHealthCheck request. This prevents Amazon Route 53 from overwriting an intervening update: If the value in the UpdateHealthCheck request matches the value of HealthCheckVersion in the health check, Amazon Route 53 updates the health check with the new settings. If the value of HealthCheckVersion in the health check is greater, the health check was changed after you got the version number. Amazon Route 53 does not update the health check, and it returns a HealthCheckVersionMismatch error. - */ - HealthCheckVersion?: HealthCheckVersion; - /** - * The IPv4 or IPv6 IP address for the endpoint that you want Amazon Route 53 to perform health checks on. If you don't specify a value for IPAddress, Amazon Route 53 sends a DNS request to resolve the domain name that you specify in FullyQualifiedDomainName at the interval that you specify in RequestInterval. Using an IP address that is returned by DNS, Amazon Route 53 then checks the health of the endpoint. Use one of the following formats for the value of IPAddress: IPv4 address: four values between 0 and 255, separated by periods (.), for example, 192.0.2.44. IPv6 address: eight groups of four hexadecimal values, separated by colons (:), for example, 2001:0db8:85a3:0000:0000:abcd:0001:2345. You can also shorten IPv6 addresses as described in RFC 5952, for example, 2001:db8:85a3::abcd:1:2345. If the endpoint is an EC2 instance, we recommend that you create an Elastic IP address, associate it with your EC2 instance, and specify the Elastic IP address for IPAddress. This ensures that the IP address of your instance never changes. For more information, see the applicable documentation: Linux: Elastic IP Addresses (EIP) in the Amazon EC2 User Guide for Linux Instances Windows: Elastic IP Addresses (EIP) in the Amazon EC2 User Guide for Windows Instances If a health check already has a value for IPAddress, you can change the value. However, you can't update an existing health check to add or remove the value of IPAddress. For more information, see UpdateHealthCheckRequest$FullyQualifiedDomainName. Constraints: Amazon Route 53 can't check the health of endpoints for which the IP address is in local, private, non-routable, or multicast ranges. For more information about IP addresses for which you can't create health checks, see the following documents: RFC 5735, Special Use IPv4 Addresses RFC 6598, IANA-Reserved IPv4 Prefix for Shared Address Space RFC 5156, Special-Use IPv6 Addresses - */ - IPAddress?: IPAddress; - /** - * The port on the endpoint on which you want Amazon Route 53 to perform health checks. - */ - Port?: Port; - /** - * The path that you want Amazon Route 53 to request when performing health checks. The path can be any value for which your endpoint will return an HTTP status code of 2xx or 3xx when the endpoint is healthy, for example the file /docs/route53-health-check.html. Specify this value only if you want to change it. - */ - ResourcePath?: ResourcePath; - /** - * Amazon Route 53 behavior depends on whether you specify a value for IPAddress. If a health check already has a value for IPAddress, you can change the value. However, you can't update an existing health check to add or remove the value of IPAddress. If you specify a value for IPAddress: Amazon Route 53 sends health check requests to the specified IPv4 or IPv6 address and passes the value of FullyQualifiedDomainName in the Host header for all health checks except TCP health checks. This is typically the fully qualified DNS name of the endpoint on which you want Amazon Route 53 to perform health checks. When Amazon Route 53 checks the health of an endpoint, here is how it constructs the Host header: If you specify a value of 80 for Port and HTTP or HTTP_STR_MATCH for Type, Amazon Route 53 passes the value of FullyQualifiedDomainName to the endpoint in the Host header. If you specify a value of 443 for Port and HTTPS or HTTPS_STR_MATCH for Type, Amazon Route 53 passes the value of FullyQualifiedDomainName to the endpoint in the Host header. If you specify another value for Port and any value except TCP for Type, Amazon Route 53 passes FullyQualifiedDomainName:Port to the endpoint in the Host header. If you don't specify a value for FullyQualifiedDomainName, Amazon Route 53 substitutes the value of IPAddress in the Host header in each of the above cases. If you don't specify a value for IPAddress: If you don't specify a value for IPAddress, Amazon Route 53 sends a DNS request to the domain that you specify in FullyQualifiedDomainName at the interval you specify in RequestInterval. Using an IPv4 address that is returned by DNS, Amazon Route 53 then checks the health of the endpoint. If you don't specify a value for IPAddress, Amazon Route 53 uses only IPv4 to send health checks to the endpoint. If there's no resource record set with a type of A for the name that you specify for FullyQualifiedDomainName, the health check fails with a "DNS resolution failed" error. If you want to check the health of weighted, latency, or failover resource record sets and you choose to specify the endpoint only by FullyQualifiedDomainName, we recommend that you create a separate health check for each endpoint. For example, create a health check for each HTTP server that is serving content for www.example.com. For the value of FullyQualifiedDomainName, specify the domain name of the server (such as us-east-2-www.example.com), not the name of the resource record sets (www.example.com). In this configuration, if the value of FullyQualifiedDomainName matches the name of the resource record sets and you then associate the health check with those resource record sets, health check results will be unpredictable. In addition, if the value of Type is HTTP, HTTPS, HTTP_STR_MATCH, or HTTPS_STR_MATCH, Amazon Route 53 passes the value of FullyQualifiedDomainName in the Host header, as it does when you specify a value for IPAddress. If the value of Type is TCP, Amazon Route 53 doesn't pass a Host header. - */ - FullyQualifiedDomainName?: FullyQualifiedDomainName; - /** - * If the value of Type is HTTP_STR_MATCH or HTTP_STR_MATCH, the string that you want Amazon Route 53 to search for in the response body from the specified resource. If the string appears in the response body, Amazon Route 53 considers the resource healthy. (You can't change the value of Type when you update a health check.) - */ - SearchString?: SearchString; - /** - * The number of consecutive health checks that an endpoint must pass or fail for Amazon Route 53 to change the current status of the endpoint from unhealthy to healthy or vice versa. For more information, see How Amazon Route 53 Determines Whether an Endpoint Is Healthy in the Amazon Route 53 Developer Guide. If you don't specify a value for FailureThreshold, the default value is three health checks. - */ - FailureThreshold?: FailureThreshold; - /** - * Specify whether you want Amazon Route 53 to invert the status of a health check, for example, to consider a health check unhealthy when it otherwise would be considered healthy. - */ - Inverted?: Inverted; - /** - * The number of child health checks that are associated with a CALCULATED health that Amazon Route 53 must consider healthy for the CALCULATED health check to be considered healthy. To specify the child health checks that you want to associate with a CALCULATED health check, use the ChildHealthChecks and ChildHealthCheck elements. Note the following: If you specify a number greater than the number of child health checks, Amazon Route 53 always considers this health check to be unhealthy. If you specify 0, Amazon Route 53 always considers this health check to be healthy. - */ - HealthThreshold?: HealthThreshold; - /** - * A complex type that contains one ChildHealthCheck element for each health check that you want to associate with a CALCULATED health check. - */ - ChildHealthChecks?: ChildHealthCheckList; - /** - * Specify whether you want Amazon Route 53 to send the value of FullyQualifiedDomainName to the endpoint in the client_hello message during TLS negotiation. This allows the endpoint to respond to HTTPS health check requests with the applicable SSL/TLS certificate. Some endpoints require that HTTPS requests include the host name in the client_hello message. If you don't enable SNI, the status of the health check will be SSL alert handshake_failure. A health check can also have that status for other reasons. If SNI is enabled and you're still getting the error, check the SSL/TLS configuration on your endpoint and confirm that your certificate is valid. The SSL/TLS certificate on your endpoint includes a domain name in the Common Name field and possibly several more in the Subject Alternative Names field. One of the domain names in the certificate should match the value that you specify for FullyQualifiedDomainName. If the endpoint responds to the client_hello message with a certificate that does not include the domain name that you specified in FullyQualifiedDomainName, a health checker will retry the handshake. In the second attempt, the health checker will omit FullyQualifiedDomainName from the client_hello message. - */ - EnableSNI?: EnableSNI; - /** - * A complex type that contains one Region element for each region that you want Amazon Route 53 health checkers to check the specified endpoint from. - */ - Regions?: HealthCheckRegionList; - AlarmIdentifier?: AlarmIdentifier; - /** - * When CloudWatch has insufficient data about the metric to determine the alarm state, the status that you want Amazon Route 53 to assign to the health check: Healthy: Amazon Route 53 considers the health check to be healthy. Unhealthy: Amazon Route 53 considers the health check to be unhealthy. LastKnownStatus: Amazon Route 53 uses the status of the health check from the last time CloudWatch had sufficient data to determine the alarm state. For new health checks that have no last known status, the default status for the health check is healthy. - */ - InsufficientDataHealthStatus?: InsufficientDataHealthStatus; - /** - * A complex type that contains one ResetElement element for each element that you want to reset to the default value. Valid values for ResetElement include the following: ChildHealthChecks: Amazon Route 53 resets HealthCheckConfig$ChildHealthChecks to null. FullyQualifiedDomainName: Amazon Route 53 resets HealthCheckConfig$FullyQualifiedDomainName to null. Regions: Amazon Route 53 resets the HealthCheckConfig$Regions list to the default set of regions. ResourcePath: Amazon Route 53 resets HealthCheckConfig$ResourcePath to null. - */ - ResetElements?: ResettableElementNameList; - } - export interface UpdateHealthCheckResponse { - HealthCheck: HealthCheck; - } - export interface UpdateHostedZoneCommentRequest { - /** - * The ID for the hosted zone that you want to update the comment for. - */ - Id: ResourceId; - /** - * The new comment for the hosted zone. If you don't specify a value for Comment, Amazon Route 53 deletes the existing value of the Comment element, if any. - */ - Comment?: ResourceDescription; - } - export interface UpdateHostedZoneCommentResponse { - HostedZone: HostedZone; - } - export interface UpdateTrafficPolicyCommentRequest { - /** - * The value of Id for the traffic policy that you want to update the comment for. - */ - Id: TrafficPolicyId; - /** - * The value of Version for the traffic policy that you want to update the comment for. - */ - Version: TrafficPolicyVersion; - /** - * The new comment for the specified traffic policy and version. - */ - Comment: TrafficPolicyComment; - } - export interface UpdateTrafficPolicyCommentResponse { - /** - * A complex type that contains settings for the specified traffic policy. - */ - TrafficPolicy: TrafficPolicy; - } - export interface UpdateTrafficPolicyInstanceRequest { - /** - * The ID of the traffic policy instance that you want to update. - */ - Id: TrafficPolicyInstanceId; - /** - * The TTL that you want Amazon Route 53 to assign to all of the updated resource record sets. - */ - TTL: TTL; - /** - * The ID of the traffic policy that you want Amazon Route 53 to use to update resource record sets for the specified traffic policy instance. - */ - TrafficPolicyId: TrafficPolicyId; - /** - * The version of the traffic policy that you want Amazon Route 53 to use to update resource record sets for the specified traffic policy instance. - */ - TrafficPolicyVersion: TrafficPolicyVersion; - } - export interface UpdateTrafficPolicyInstanceResponse { - /** - * A complex type that contains settings for the updated traffic policy instance. - */ - TrafficPolicyInstance: TrafficPolicyInstance; - } - export interface VPC { - /** - * (Private hosted zones only) The region in which you created an Amazon VPC. - */ - VPCRegion?: VPCRegion; - VPCId?: VPCId; - } - export type VPCId = string; - export type VPCRegion = "us-east-1"|"us-east-2"|"us-west-1"|"us-west-2"|"eu-west-1"|"eu-west-2"|"eu-central-1"|"ap-southeast-1"|"ap-southeast-2"|"ap-south-1"|"ap-northeast-1"|"ap-northeast-2"|"sa-east-1"|"ca-central-1"|"cn-north-1"|string; - export type VPCs = VPC[]; - /** - * A string in YYYY-MM-DD format that represents the latest possible API version that can be used in this service. Specify 'latest' to use the latest possible version. - */ - export type apiVersion = "2013-04-01"|"latest"|string; - export interface ClientApiVersions { - /** - * A string in YYYY-MM-DD format that represents the latest possible API version that can be used in this service. Specify 'latest' to use the latest possible version. - */ - apiVersion?: apiVersion; - } - export type ClientConfiguration = ServiceConfigurationOptions & ClientApiVersions; - /** - * Contains interfaces for use with the Route53 client. - */ - export import Types = Route53; -} -export = Route53; diff --git a/workshops/monte-carlo-on-ec2-spot-fleet/src/web/node_modules/aws-sdk/clients/route53.js b/workshops/monte-carlo-on-ec2-spot-fleet/src/web/node_modules/aws-sdk/clients/route53.js deleted file mode 100644 index 41ef174a..00000000 --- a/workshops/monte-carlo-on-ec2-spot-fleet/src/web/node_modules/aws-sdk/clients/route53.js +++ /dev/null @@ -1,20 +0,0 @@ -require('../lib/node_loader'); -var AWS = require('../lib/core'); -var Service = AWS.Service; -var apiLoader = AWS.apiLoader; - -apiLoader.services['route53'] = {}; -AWS.Route53 = Service.defineService('route53', ['2013-04-01']); -require('../lib/services/route53'); -Object.defineProperty(apiLoader.services['route53'], '2013-04-01', { - get: function get() { - var model = require('../apis/route53-2013-04-01.min.json'); - model.paginators = require('../apis/route53-2013-04-01.paginators.json').pagination; - model.waiters = require('../apis/route53-2013-04-01.waiters2.json').waiters; - return model; - }, - enumerable: true, - configurable: true -}); - -module.exports = AWS.Route53; diff --git a/workshops/monte-carlo-on-ec2-spot-fleet/src/web/node_modules/aws-sdk/clients/route53domains.d.ts b/workshops/monte-carlo-on-ec2-spot-fleet/src/web/node_modules/aws-sdk/clients/route53domains.d.ts deleted file mode 100644 index e110ab43..00000000 --- a/workshops/monte-carlo-on-ec2-spot-fleet/src/web/node_modules/aws-sdk/clients/route53domains.d.ts +++ /dev/null @@ -1,996 +0,0 @@ -import {Request} from '../lib/request'; -import {Response} from '../lib/response'; -import {AWSError} from '../lib/error'; -import {Service} from '../lib/service'; -import {ServiceConfigurationOptions} from '../lib/service'; -import {ConfigBase as Config} from '../lib/config'; -interface Blob {} -declare class Route53Domains extends Service { - /** - * Constructs a service object. This object has one method for each API operation. - */ - constructor(options?: Route53Domains.Types.ClientConfiguration) - config: Config & Route53Domains.Types.ClientConfiguration; - /** - * This operation checks the availability of one domain name. Note that if the availability status of a domain is pending, you must submit another request to determine the availability of the domain name. - */ - checkDomainAvailability(params: Route53Domains.Types.CheckDomainAvailabilityRequest, callback?: (err: AWSError, data: Route53Domains.Types.CheckDomainAvailabilityResponse) => void): Request; - /** - * This operation checks the availability of one domain name. Note that if the availability status of a domain is pending, you must submit another request to determine the availability of the domain name. - */ - checkDomainAvailability(callback?: (err: AWSError, data: Route53Domains.Types.CheckDomainAvailabilityResponse) => void): Request; - /** - * Checks whether a domain name can be transferred to Amazon Route 53. - */ - checkDomainTransferability(params: Route53Domains.Types.CheckDomainTransferabilityRequest, callback?: (err: AWSError, data: Route53Domains.Types.CheckDomainTransferabilityResponse) => void): Request; - /** - * Checks whether a domain name can be transferred to Amazon Route 53. - */ - checkDomainTransferability(callback?: (err: AWSError, data: Route53Domains.Types.CheckDomainTransferabilityResponse) => void): Request; - /** - * This operation deletes the specified tags for a domain. All tag operations are eventually consistent; subsequent operations might not immediately represent all issued operations. - */ - deleteTagsForDomain(params: Route53Domains.Types.DeleteTagsForDomainRequest, callback?: (err: AWSError, data: Route53Domains.Types.DeleteTagsForDomainResponse) => void): Request; - /** - * This operation deletes the specified tags for a domain. All tag operations are eventually consistent; subsequent operations might not immediately represent all issued operations. - */ - deleteTagsForDomain(callback?: (err: AWSError, data: Route53Domains.Types.DeleteTagsForDomainResponse) => void): Request; - /** - * This operation disables automatic renewal of domain registration for the specified domain. - */ - disableDomainAutoRenew(params: Route53Domains.Types.DisableDomainAutoRenewRequest, callback?: (err: AWSError, data: Route53Domains.Types.DisableDomainAutoRenewResponse) => void): Request; - /** - * This operation disables automatic renewal of domain registration for the specified domain. - */ - disableDomainAutoRenew(callback?: (err: AWSError, data: Route53Domains.Types.DisableDomainAutoRenewResponse) => void): Request; - /** - * This operation removes the transfer lock on the domain (specifically the clientTransferProhibited status) to allow domain transfers. We recommend you refrain from performing this action unless you intend to transfer the domain to a different registrar. Successful submission returns an operation ID that you can use to track the progress and completion of the action. If the request is not completed successfully, the domain registrant will be notified by email. - */ - disableDomainTransferLock(params: Route53Domains.Types.DisableDomainTransferLockRequest, callback?: (err: AWSError, data: Route53Domains.Types.DisableDomainTransferLockResponse) => void): Request; - /** - * This operation removes the transfer lock on the domain (specifically the clientTransferProhibited status) to allow domain transfers. We recommend you refrain from performing this action unless you intend to transfer the domain to a different registrar. Successful submission returns an operation ID that you can use to track the progress and completion of the action. If the request is not completed successfully, the domain registrant will be notified by email. - */ - disableDomainTransferLock(callback?: (err: AWSError, data: Route53Domains.Types.DisableDomainTransferLockResponse) => void): Request; - /** - * This operation configures Amazon Route 53 to automatically renew the specified domain before the domain registration expires. The cost of renewing your domain registration is billed to your AWS account. The period during which you can renew a domain name varies by TLD. For a list of TLDs and their renewal policies, see "Renewal, restoration, and deletion times" on the website for our registrar partner, Gandi. Route 53 requires that you renew before the end of the renewal period that is listed on the Gandi website so we can complete processing before the deadline. - */ - enableDomainAutoRenew(params: Route53Domains.Types.EnableDomainAutoRenewRequest, callback?: (err: AWSError, data: Route53Domains.Types.EnableDomainAutoRenewResponse) => void): Request; - /** - * This operation configures Amazon Route 53 to automatically renew the specified domain before the domain registration expires. The cost of renewing your domain registration is billed to your AWS account. The period during which you can renew a domain name varies by TLD. For a list of TLDs and their renewal policies, see "Renewal, restoration, and deletion times" on the website for our registrar partner, Gandi. Route 53 requires that you renew before the end of the renewal period that is listed on the Gandi website so we can complete processing before the deadline. - */ - enableDomainAutoRenew(callback?: (err: AWSError, data: Route53Domains.Types.EnableDomainAutoRenewResponse) => void): Request; - /** - * This operation sets the transfer lock on the domain (specifically the clientTransferProhibited status) to prevent domain transfers. Successful submission returns an operation ID that you can use to track the progress and completion of the action. If the request is not completed successfully, the domain registrant will be notified by email. - */ - enableDomainTransferLock(params: Route53Domains.Types.EnableDomainTransferLockRequest, callback?: (err: AWSError, data: Route53Domains.Types.EnableDomainTransferLockResponse) => void): Request; - /** - * This operation sets the transfer lock on the domain (specifically the clientTransferProhibited status) to prevent domain transfers. Successful submission returns an operation ID that you can use to track the progress and completion of the action. If the request is not completed successfully, the domain registrant will be notified by email. - */ - enableDomainTransferLock(callback?: (err: AWSError, data: Route53Domains.Types.EnableDomainTransferLockResponse) => void): Request; - /** - * For operations that require confirmation that the email address for the registrant contact is valid, such as registering a new domain, this operation returns information about whether the registrant contact has responded. If you want us to resend the email, use the ResendContactReachabilityEmail operation. - */ - getContactReachabilityStatus(params: Route53Domains.Types.GetContactReachabilityStatusRequest, callback?: (err: AWSError, data: Route53Domains.Types.GetContactReachabilityStatusResponse) => void): Request; - /** - * For operations that require confirmation that the email address for the registrant contact is valid, such as registering a new domain, this operation returns information about whether the registrant contact has responded. If you want us to resend the email, use the ResendContactReachabilityEmail operation. - */ - getContactReachabilityStatus(callback?: (err: AWSError, data: Route53Domains.Types.GetContactReachabilityStatusResponse) => void): Request; - /** - * This operation returns detailed information about a specified domain that is associated with the current AWS account. Contact information for the domain is also returned as part of the output. - */ - getDomainDetail(params: Route53Domains.Types.GetDomainDetailRequest, callback?: (err: AWSError, data: Route53Domains.Types.GetDomainDetailResponse) => void): Request; - /** - * This operation returns detailed information about a specified domain that is associated with the current AWS account. Contact information for the domain is also returned as part of the output. - */ - getDomainDetail(callback?: (err: AWSError, data: Route53Domains.Types.GetDomainDetailResponse) => void): Request; - /** - * The GetDomainSuggestions operation returns a list of suggested domain names given a string, which can either be a domain name or simply a word or phrase (without spaces). - */ - getDomainSuggestions(params: Route53Domains.Types.GetDomainSuggestionsRequest, callback?: (err: AWSError, data: Route53Domains.Types.GetDomainSuggestionsResponse) => void): Request; - /** - * The GetDomainSuggestions operation returns a list of suggested domain names given a string, which can either be a domain name or simply a word or phrase (without spaces). - */ - getDomainSuggestions(callback?: (err: AWSError, data: Route53Domains.Types.GetDomainSuggestionsResponse) => void): Request; - /** - * This operation returns the current status of an operation that is not completed. - */ - getOperationDetail(params: Route53Domains.Types.GetOperationDetailRequest, callback?: (err: AWSError, data: Route53Domains.Types.GetOperationDetailResponse) => void): Request; - /** - * This operation returns the current status of an operation that is not completed. - */ - getOperationDetail(callback?: (err: AWSError, data: Route53Domains.Types.GetOperationDetailResponse) => void): Request; - /** - * This operation returns all the domain names registered with Amazon Route 53 for the current AWS account. - */ - listDomains(params: Route53Domains.Types.ListDomainsRequest, callback?: (err: AWSError, data: Route53Domains.Types.ListDomainsResponse) => void): Request; - /** - * This operation returns all the domain names registered with Amazon Route 53 for the current AWS account. - */ - listDomains(callback?: (err: AWSError, data: Route53Domains.Types.ListDomainsResponse) => void): Request; - /** - * This operation returns the operation IDs of operations that are not yet complete. - */ - listOperations(params: Route53Domains.Types.ListOperationsRequest, callback?: (err: AWSError, data: Route53Domains.Types.ListOperationsResponse) => void): Request; - /** - * This operation returns the operation IDs of operations that are not yet complete. - */ - listOperations(callback?: (err: AWSError, data: Route53Domains.Types.ListOperationsResponse) => void): Request; - /** - * This operation returns all of the tags that are associated with the specified domain. All tag operations are eventually consistent; subsequent operations might not immediately represent all issued operations. - */ - listTagsForDomain(params: Route53Domains.Types.ListTagsForDomainRequest, callback?: (err: AWSError, data: Route53Domains.Types.ListTagsForDomainResponse) => void): Request; - /** - * This operation returns all of the tags that are associated with the specified domain. All tag operations are eventually consistent; subsequent operations might not immediately represent all issued operations. - */ - listTagsForDomain(callback?: (err: AWSError, data: Route53Domains.Types.ListTagsForDomainResponse) => void): Request; - /** - * This operation registers a domain. Domains are registered by the AWS registrar partner, Gandi. For some top-level domains (TLDs), this operation requires extra parameters. When you register a domain, Amazon Route 53 does the following: Creates a Amazon Route 53 hosted zone that has the same name as the domain. Amazon Route 53 assigns four name servers to your hosted zone and automatically updates your domain registration with the names of these name servers. Enables autorenew, so your domain registration will renew automatically each year. We'll notify you in advance of the renewal date so you can choose whether to renew the registration. Optionally enables privacy protection, so WHOIS queries return contact information for our registrar partner, Gandi, instead of the information you entered for registrant, admin, and tech contacts. If registration is successful, returns an operation ID that you can use to track the progress and completion of the action. If the request is not completed successfully, the domain registrant is notified by email. Charges your AWS account an amount based on the top-level domain. For more information, see Amazon Route 53 Pricing. - */ - registerDomain(params: Route53Domains.Types.RegisterDomainRequest, callback?: (err: AWSError, data: Route53Domains.Types.RegisterDomainResponse) => void): Request; - /** - * This operation registers a domain. Domains are registered by the AWS registrar partner, Gandi. For some top-level domains (TLDs), this operation requires extra parameters. When you register a domain, Amazon Route 53 does the following: Creates a Amazon Route 53 hosted zone that has the same name as the domain. Amazon Route 53 assigns four name servers to your hosted zone and automatically updates your domain registration with the names of these name servers. Enables autorenew, so your domain registration will renew automatically each year. We'll notify you in advance of the renewal date so you can choose whether to renew the registration. Optionally enables privacy protection, so WHOIS queries return contact information for our registrar partner, Gandi, instead of the information you entered for registrant, admin, and tech contacts. If registration is successful, returns an operation ID that you can use to track the progress and completion of the action. If the request is not completed successfully, the domain registrant is notified by email. Charges your AWS account an amount based on the top-level domain. For more information, see Amazon Route 53 Pricing. - */ - registerDomain(callback?: (err: AWSError, data: Route53Domains.Types.RegisterDomainResponse) => void): Request; - /** - * This operation renews a domain for the specified number of years. The cost of renewing your domain is billed to your AWS account. We recommend that you renew your domain several weeks before the expiration date. Some TLD registries delete domains before the expiration date if you haven't renewed far enough in advance. For more information about renewing domain registration, see Renewing Registration for a Domain in the Amazon Route 53 Developer Guide. - */ - renewDomain(params: Route53Domains.Types.RenewDomainRequest, callback?: (err: AWSError, data: Route53Domains.Types.RenewDomainResponse) => void): Request; - /** - * This operation renews a domain for the specified number of years. The cost of renewing your domain is billed to your AWS account. We recommend that you renew your domain several weeks before the expiration date. Some TLD registries delete domains before the expiration date if you haven't renewed far enough in advance. For more information about renewing domain registration, see Renewing Registration for a Domain in the Amazon Route 53 Developer Guide. - */ - renewDomain(callback?: (err: AWSError, data: Route53Domains.Types.RenewDomainResponse) => void): Request; - /** - * For operations that require confirmation that the email address for the registrant contact is valid, such as registering a new domain, this operation resends the confirmation email to the current email address for the registrant contact. - */ - resendContactReachabilityEmail(params: Route53Domains.Types.ResendContactReachabilityEmailRequest, callback?: (err: AWSError, data: Route53Domains.Types.ResendContactReachabilityEmailResponse) => void): Request; - /** - * For operations that require confirmation that the email address for the registrant contact is valid, such as registering a new domain, this operation resends the confirmation email to the current email address for the registrant contact. - */ - resendContactReachabilityEmail(callback?: (err: AWSError, data: Route53Domains.Types.ResendContactReachabilityEmailResponse) => void): Request; - /** - * This operation returns the AuthCode for the domain. To transfer a domain to another registrar, you provide this value to the new registrar. - */ - retrieveDomainAuthCode(params: Route53Domains.Types.RetrieveDomainAuthCodeRequest, callback?: (err: AWSError, data: Route53Domains.Types.RetrieveDomainAuthCodeResponse) => void): Request; - /** - * This operation returns the AuthCode for the domain. To transfer a domain to another registrar, you provide this value to the new registrar. - */ - retrieveDomainAuthCode(callback?: (err: AWSError, data: Route53Domains.Types.RetrieveDomainAuthCodeResponse) => void): Request; - /** - * This operation transfers a domain from another registrar to Amazon Route 53. When the transfer is complete, the domain is registered with the AWS registrar partner, Gandi. For transfer requirements, a detailed procedure, and information about viewing the status of a domain transfer, see Transferring Registration for a Domain to Amazon Route 53 in the Amazon Route 53 Developer Guide. If the registrar for your domain is also the DNS service provider for the domain, we highly recommend that you consider transferring your DNS service to Amazon Route 53 or to another DNS service provider before you transfer your registration. Some registrars provide free DNS service when you purchase a domain registration. When you transfer the registration, the previous registrar will not renew your domain registration and could end your DNS service at any time. If the registrar for your domain is also the DNS service provider for the domain and you don't transfer DNS service to another provider, your website, email, and the web applications associated with the domain might become unavailable. If the transfer is successful, this method returns an operation ID that you can use to track the progress and completion of the action. If the transfer doesn't complete successfully, the domain registrant will be notified by email. - */ - transferDomain(params: Route53Domains.Types.TransferDomainRequest, callback?: (err: AWSError, data: Route53Domains.Types.TransferDomainResponse) => void): Request; - /** - * This operation transfers a domain from another registrar to Amazon Route 53. When the transfer is complete, the domain is registered with the AWS registrar partner, Gandi. For transfer requirements, a detailed procedure, and information about viewing the status of a domain transfer, see Transferring Registration for a Domain to Amazon Route 53 in the Amazon Route 53 Developer Guide. If the registrar for your domain is also the DNS service provider for the domain, we highly recommend that you consider transferring your DNS service to Amazon Route 53 or to another DNS service provider before you transfer your registration. Some registrars provide free DNS service when you purchase a domain registration. When you transfer the registration, the previous registrar will not renew your domain registration and could end your DNS service at any time. If the registrar for your domain is also the DNS service provider for the domain and you don't transfer DNS service to another provider, your website, email, and the web applications associated with the domain might become unavailable. If the transfer is successful, this method returns an operation ID that you can use to track the progress and completion of the action. If the transfer doesn't complete successfully, the domain registrant will be notified by email. - */ - transferDomain(callback?: (err: AWSError, data: Route53Domains.Types.TransferDomainResponse) => void): Request; - /** - * This operation updates the contact information for a particular domain. Information for at least one contact (registrant, administrator, or technical) must be supplied for update. If the update is successful, this method returns an operation ID that you can use to track the progress and completion of the action. If the request is not completed successfully, the domain registrant will be notified by email. - */ - updateDomainContact(params: Route53Domains.Types.UpdateDomainContactRequest, callback?: (err: AWSError, data: Route53Domains.Types.UpdateDomainContactResponse) => void): Request; - /** - * This operation updates the contact information for a particular domain. Information for at least one contact (registrant, administrator, or technical) must be supplied for update. If the update is successful, this method returns an operation ID that you can use to track the progress and completion of the action. If the request is not completed successfully, the domain registrant will be notified by email. - */ - updateDomainContact(callback?: (err: AWSError, data: Route53Domains.Types.UpdateDomainContactResponse) => void): Request; - /** - * This operation updates the specified domain contact's privacy setting. When the privacy option is enabled, personal information such as postal or email address is hidden from the results of a public WHOIS query. The privacy services are provided by the AWS registrar, Gandi. For more information, see the Gandi privacy features. This operation only affects the privacy of the specified contact type (registrant, administrator, or tech). Successful acceptance returns an operation ID that you can use with GetOperationDetail to track the progress and completion of the action. If the request is not completed successfully, the domain registrant will be notified by email. - */ - updateDomainContactPrivacy(params: Route53Domains.Types.UpdateDomainContactPrivacyRequest, callback?: (err: AWSError, data: Route53Domains.Types.UpdateDomainContactPrivacyResponse) => void): Request; - /** - * This operation updates the specified domain contact's privacy setting. When the privacy option is enabled, personal information such as postal or email address is hidden from the results of a public WHOIS query. The privacy services are provided by the AWS registrar, Gandi. For more information, see the Gandi privacy features. This operation only affects the privacy of the specified contact type (registrant, administrator, or tech). Successful acceptance returns an operation ID that you can use with GetOperationDetail to track the progress and completion of the action. If the request is not completed successfully, the domain registrant will be notified by email. - */ - updateDomainContactPrivacy(callback?: (err: AWSError, data: Route53Domains.Types.UpdateDomainContactPrivacyResponse) => void): Request; - /** - * This operation replaces the current set of name servers for the domain with the specified set of name servers. If you use Amazon Route 53 as your DNS service, specify the four name servers in the delegation set for the hosted zone for the domain. If successful, this operation returns an operation ID that you can use to track the progress and completion of the action. If the request is not completed successfully, the domain registrant will be notified by email. - */ - updateDomainNameservers(params: Route53Domains.Types.UpdateDomainNameserversRequest, callback?: (err: AWSError, data: Route53Domains.Types.UpdateDomainNameserversResponse) => void): Request; - /** - * This operation replaces the current set of name servers for the domain with the specified set of name servers. If you use Amazon Route 53 as your DNS service, specify the four name servers in the delegation set for the hosted zone for the domain. If successful, this operation returns an operation ID that you can use to track the progress and completion of the action. If the request is not completed successfully, the domain registrant will be notified by email. - */ - updateDomainNameservers(callback?: (err: AWSError, data: Route53Domains.Types.UpdateDomainNameserversResponse) => void): Request; - /** - * This operation adds or updates tags for a specified domain. All tag operations are eventually consistent; subsequent operations might not immediately represent all issued operations. - */ - updateTagsForDomain(params: Route53Domains.Types.UpdateTagsForDomainRequest, callback?: (err: AWSError, data: Route53Domains.Types.UpdateTagsForDomainResponse) => void): Request; - /** - * This operation adds or updates tags for a specified domain. All tag operations are eventually consistent; subsequent operations might not immediately represent all issued operations. - */ - updateTagsForDomain(callback?: (err: AWSError, data: Route53Domains.Types.UpdateTagsForDomainResponse) => void): Request; - /** - * Returns all the domain-related billing records for the current AWS account for a specified period - */ - viewBilling(params: Route53Domains.Types.ViewBillingRequest, callback?: (err: AWSError, data: Route53Domains.Types.ViewBillingResponse) => void): Request; - /** - * Returns all the domain-related billing records for the current AWS account for a specified period - */ - viewBilling(callback?: (err: AWSError, data: Route53Domains.Types.ViewBillingResponse) => void): Request; -} -declare namespace Route53Domains { - export type AddressLine = string; - export interface BillingRecord { - /** - * The name of the domain that the billing record applies to. If the domain name contains characters other than a-z, 0-9, and - (hyphen), such as an internationalized domain name, then this value is in Punycode. For more information, see DNS Domain Name Format in the Amazon Route 53 Developer Guidezzz. - */ - DomainName?: DomainName; - /** - * The operation that you were charged for. - */ - Operation?: OperationType; - /** - * The ID of the invoice that is associated with the billing record. - */ - InvoiceId?: InvoiceId; - /** - * The date that the operation was billed, in Unix format. - */ - BillDate?: Timestamp; - /** - * The price that you were charged for the operation, in US dollars. Example value: 12.0 - */ - Price?: Price; - } - export type BillingRecords = BillingRecord[]; - export type Boolean = boolean; - export interface CheckDomainAvailabilityRequest { - /** - * The name of the domain that you want to get availability for. Constraints: The domain name can contain only the letters a through z, the numbers 0 through 9, and hyphen (-). Internationalized Domain Names are not supported. - */ - DomainName: DomainName; - /** - * Reserved for future use. - */ - IdnLangCode?: LangCode; - } - export interface CheckDomainAvailabilityResponse { - /** - * Whether the domain name is available for registering. You can register only domains designated as AVAILABLE. Valid values: AVAILABLE The domain name is available. AVAILABLE_RESERVED The domain name is reserved under specific conditions. AVAILABLE_PREORDER The domain name is available and can be preordered. DONT_KNOW The TLD registry didn't reply with a definitive answer about whether the domain name is available. Amazon Route 53 can return this response for a variety of reasons, for example, the registry is performing maintenance. Try again later. PENDING The TLD registry didn't return a response in the expected amount of time. When the response is delayed, it usually takes just a few extra seconds. You can resubmit the request immediately. RESERVED The domain name has been reserved for another person or organization. UNAVAILABLE The domain name is not available. UNAVAILABLE_PREMIUM The domain name is not available. UNAVAILABLE_RESTRICTED The domain name is forbidden. - */ - Availability: DomainAvailability; - } - export interface CheckDomainTransferabilityRequest { - /** - * The name of the domain that you want to transfer to Amazon Route 53. Constraints: The domain name can contain only the letters a through z, the numbers 0 through 9, and hyphen (-). Internationalized Domain Names are not supported. - */ - DomainName: DomainName; - /** - * If the registrar for the top-level domain (TLD) requires an authorization code to transfer the domain, the code that you got from the current registrar for the domain. - */ - AuthCode?: DomainAuthCode; - } - export interface CheckDomainTransferabilityResponse { - /** - * A complex type that contains information about whether the specified domain can be transferred to Amazon Route 53. - */ - Transferability: DomainTransferability; - } - export type City = string; - export interface ContactDetail { - /** - * First name of contact. - */ - FirstName?: ContactName; - /** - * Last name of contact. - */ - LastName?: ContactName; - /** - * Indicates whether the contact is a person, company, association, or public organization. If you choose an option other than PERSON, you must enter an organization name, and you can't enable privacy protection for the contact. - */ - ContactType?: ContactType; - /** - * Name of the organization for contact types other than PERSON. - */ - OrganizationName?: ContactName; - /** - * First line of the contact's address. - */ - AddressLine1?: AddressLine; - /** - * Second line of contact's address, if any. - */ - AddressLine2?: AddressLine; - /** - * The city of the contact's address. - */ - City?: City; - /** - * The state or province of the contact's city. - */ - State?: State; - /** - * Code for the country of the contact's address. - */ - CountryCode?: CountryCode; - /** - * The zip or postal code of the contact's address. - */ - ZipCode?: ZipCode; - /** - * The phone number of the contact. Constraints: Phone number must be specified in the format "+[country dialing code].[number including any area code>]". For example, a US phone number might appear as "+1.1234567890". - */ - PhoneNumber?: ContactNumber; - /** - * Email address of the contact. - */ - Email?: Email; - /** - * Fax number of the contact. Constraints: Phone number must be specified in the format "+[country dialing code].[number including any area code]". For example, a US phone number might appear as "+1.1234567890". - */ - Fax?: ContactNumber; - /** - * A list of name-value pairs for parameters required by certain top-level domains. - */ - ExtraParams?: ExtraParamList; - } - export type ContactName = string; - export type ContactNumber = string; - export type ContactType = "PERSON"|"COMPANY"|"ASSOCIATION"|"PUBLIC_BODY"|"RESELLER"|string; - export type CountryCode = "AD"|"AE"|"AF"|"AG"|"AI"|"AL"|"AM"|"AN"|"AO"|"AQ"|"AR"|"AS"|"AT"|"AU"|"AW"|"AZ"|"BA"|"BB"|"BD"|"BE"|"BF"|"BG"|"BH"|"BI"|"BJ"|"BL"|"BM"|"BN"|"BO"|"BR"|"BS"|"BT"|"BW"|"BY"|"BZ"|"CA"|"CC"|"CD"|"CF"|"CG"|"CH"|"CI"|"CK"|"CL"|"CM"|"CN"|"CO"|"CR"|"CU"|"CV"|"CX"|"CY"|"CZ"|"DE"|"DJ"|"DK"|"DM"|"DO"|"DZ"|"EC"|"EE"|"EG"|"ER"|"ES"|"ET"|"FI"|"FJ"|"FK"|"FM"|"FO"|"FR"|"GA"|"GB"|"GD"|"GE"|"GH"|"GI"|"GL"|"GM"|"GN"|"GQ"|"GR"|"GT"|"GU"|"GW"|"GY"|"HK"|"HN"|"HR"|"HT"|"HU"|"ID"|"IE"|"IL"|"IM"|"IN"|"IQ"|"IR"|"IS"|"IT"|"JM"|"JO"|"JP"|"KE"|"KG"|"KH"|"KI"|"KM"|"KN"|"KP"|"KR"|"KW"|"KY"|"KZ"|"LA"|"LB"|"LC"|"LI"|"LK"|"LR"|"LS"|"LT"|"LU"|"LV"|"LY"|"MA"|"MC"|"MD"|"ME"|"MF"|"MG"|"MH"|"MK"|"ML"|"MM"|"MN"|"MO"|"MP"|"MR"|"MS"|"MT"|"MU"|"MV"|"MW"|"MX"|"MY"|"MZ"|"NA"|"NC"|"NE"|"NG"|"NI"|"NL"|"NO"|"NP"|"NR"|"NU"|"NZ"|"OM"|"PA"|"PE"|"PF"|"PG"|"PH"|"PK"|"PL"|"PM"|"PN"|"PR"|"PT"|"PW"|"PY"|"QA"|"RO"|"RS"|"RU"|"RW"|"SA"|"SB"|"SC"|"SD"|"SE"|"SG"|"SH"|"SI"|"SK"|"SL"|"SM"|"SN"|"SO"|"SR"|"ST"|"SV"|"SY"|"SZ"|"TC"|"TD"|"TG"|"TH"|"TJ"|"TK"|"TL"|"TM"|"TN"|"TO"|"TR"|"TT"|"TV"|"TW"|"TZ"|"UA"|"UG"|"US"|"UY"|"UZ"|"VA"|"VC"|"VE"|"VG"|"VI"|"VN"|"VU"|"WF"|"WS"|"YE"|"YT"|"ZA"|"ZM"|"ZW"|string; - export type CurrentExpiryYear = number; - export type DNSSec = string; - export interface DeleteTagsForDomainRequest { - /** - * The domain for which you want to delete one or more tags. - */ - DomainName: DomainName; - /** - * A list of tag keys to delete. - */ - TagsToDelete: TagKeyList; - } - export interface DeleteTagsForDomainResponse { - } - export interface DisableDomainAutoRenewRequest { - /** - * The name of the domain that you want to disable automatic renewal for. - */ - DomainName: DomainName; - } - export interface DisableDomainAutoRenewResponse { - } - export interface DisableDomainTransferLockRequest { - /** - * The name of the domain that you want to remove the transfer lock for. - */ - DomainName: DomainName; - } - export interface DisableDomainTransferLockResponse { - /** - * Identifier for tracking the progress of the request. To use this ID to query the operation status, use GetOperationDetail. - */ - OperationId: OperationId; - } - export type DomainAuthCode = string; - export type DomainAvailability = "AVAILABLE"|"AVAILABLE_RESERVED"|"AVAILABLE_PREORDER"|"UNAVAILABLE"|"UNAVAILABLE_PREMIUM"|"UNAVAILABLE_RESTRICTED"|"RESERVED"|"DONT_KNOW"|string; - export type DomainName = string; - export type DomainStatus = string; - export type DomainStatusList = DomainStatus[]; - export interface DomainSuggestion { - /** - * A suggested domain name. - */ - DomainName?: DomainName; - /** - * Whether the domain name is available for registering. You can register only the domains that are designated as AVAILABLE. Valid values: AVAILABLE The domain name is available. AVAILABLE_RESERVED The domain name is reserved under specific conditions. AVAILABLE_PREORDER The domain name is available and can be preordered. DONT_KNOW The TLD registry didn't reply with a definitive answer about whether the domain name is available. Amazon Route 53 can return this response for a variety of reasons, for example, the registry is performing maintenance. Try again later. PENDING The TLD registry didn't return a response in the expected amount of time. When the response is delayed, it usually takes just a few extra seconds. You can resubmit the request immediately. RESERVED The domain name has been reserved for another person or organization. UNAVAILABLE The domain name is not available. UNAVAILABLE_PREMIUM The domain name is not available. UNAVAILABLE_RESTRICTED The domain name is forbidden. - */ - Availability?: String; - } - export type DomainSuggestionsList = DomainSuggestion[]; - export interface DomainSummary { - /** - * The name of the domain that the summary information applies to. - */ - DomainName: DomainName; - /** - * Indicates whether the domain is automatically renewed upon expiration. - */ - AutoRenew?: Boolean; - /** - * Indicates whether a domain is locked from unauthorized transfer to another party. - */ - TransferLock?: Boolean; - /** - * Expiration date of the domain in Coordinated Universal Time (UTC). - */ - Expiry?: Timestamp; - } - export type DomainSummaryList = DomainSummary[]; - export interface DomainTransferability { - Transferable?: Transferable; - } - export type DurationInYears = number; - export type Email = string; - export interface EnableDomainAutoRenewRequest { - /** - * The name of the domain that you want to enable automatic renewal for. - */ - DomainName: DomainName; - } - export interface EnableDomainAutoRenewResponse { - } - export interface EnableDomainTransferLockRequest { - /** - * The name of the domain that you want to set the transfer lock for. - */ - DomainName: DomainName; - } - export interface EnableDomainTransferLockResponse { - /** - * Identifier for tracking the progress of the request. To use this ID to query the operation status, use GetOperationDetail. - */ - OperationId: OperationId; - } - export type ErrorMessage = string; - export interface ExtraParam { - /** - * Name of the additional parameter required by the top-level domain. - */ - Name: ExtraParamName; - /** - * Values corresponding to the additional parameter names required by some top-level domains. - */ - Value: ExtraParamValue; - } - export type ExtraParamList = ExtraParam[]; - export type ExtraParamName = "DUNS_NUMBER"|"BRAND_NUMBER"|"BIRTH_DEPARTMENT"|"BIRTH_DATE_IN_YYYY_MM_DD"|"BIRTH_COUNTRY"|"BIRTH_CITY"|"DOCUMENT_NUMBER"|"AU_ID_NUMBER"|"AU_ID_TYPE"|"CA_LEGAL_TYPE"|"CA_BUSINESS_ENTITY_TYPE"|"ES_IDENTIFICATION"|"ES_IDENTIFICATION_TYPE"|"ES_LEGAL_FORM"|"FI_BUSINESS_NUMBER"|"FI_ID_NUMBER"|"FI_NATIONALITY"|"FI_ORGANIZATION_TYPE"|"IT_PIN"|"IT_REGISTRANT_ENTITY_TYPE"|"RU_PASSPORT_DATA"|"SE_ID_NUMBER"|"SG_ID_NUMBER"|"VAT_NUMBER"|"UK_CONTACT_TYPE"|"UK_COMPANY_NUMBER"|string; - export type ExtraParamValue = string; - export type FIAuthKey = string; - export interface GetContactReachabilityStatusRequest { - /** - * The name of the domain for which you want to know whether the registrant contact has confirmed that the email address is valid. - */ - domainName?: DomainName; - } - export interface GetContactReachabilityStatusResponse { - /** - * The domain name for which you requested the reachability status. - */ - domainName?: DomainName; - /** - * Whether the registrant contact has responded. Values include the following: PENDING We sent the confirmation email and haven't received a response yet. DONE We sent the email and got confirmation from the registrant contact. EXPIRED The time limit expired before the registrant contact responded. - */ - status?: ReachabilityStatus; - } - export interface GetDomainDetailRequest { - /** - * The name of the domain that you want to get detailed information about. - */ - DomainName: DomainName; - } - export interface GetDomainDetailResponse { - /** - * The name of a domain. - */ - DomainName: DomainName; - /** - * The name of the domain. - */ - Nameservers: NameserverList; - /** - * Specifies whether the domain registration is set to renew automatically. - */ - AutoRenew?: Boolean; - /** - * Provides details about the domain administrative contact. - */ - AdminContact: ContactDetail; - /** - * Provides details about the domain registrant. - */ - RegistrantContact: ContactDetail; - /** - * Provides details about the domain technical contact. - */ - TechContact: ContactDetail; - /** - * Specifies whether contact information for the admin contact is concealed from WHOIS queries. If the value is true, WHOIS ("who is") queries will return contact information for our registrar partner, Gandi, instead of the contact information that you enter. - */ - AdminPrivacy?: Boolean; - /** - * Specifies whether contact information for the registrant contact is concealed from WHOIS queries. If the value is true, WHOIS ("who is") queries will return contact information for our registrar partner, Gandi, instead of the contact information that you enter. - */ - RegistrantPrivacy?: Boolean; - /** - * Specifies whether contact information for the tech contact is concealed from WHOIS queries. If the value is true, WHOIS ("who is") queries will return contact information for our registrar partner, Gandi, instead of the contact information that you enter. - */ - TechPrivacy?: Boolean; - /** - * Name of the registrar of the domain as identified in the registry. Amazon Route 53 domains are registered by registrar Gandi. The value is "GANDI SAS". - */ - RegistrarName?: RegistrarName; - /** - * The fully qualified name of the WHOIS server that can answer the WHOIS query for the domain. - */ - WhoIsServer?: RegistrarWhoIsServer; - /** - * Web address of the registrar. - */ - RegistrarUrl?: RegistrarUrl; - /** - * Email address to contact to report incorrect contact information for a domain, to report that the domain is being used to send spam, to report that someone is cybersquatting on a domain name, or report some other type of abuse. - */ - AbuseContactEmail?: Email; - /** - * Phone number for reporting abuse. - */ - AbuseContactPhone?: ContactNumber; - /** - * Reserved for future use. - */ - RegistryDomainId?: RegistryDomainId; - /** - * The date when the domain was created as found in the response to a WHOIS query. The date format is Unix time. - */ - CreationDate?: Timestamp; - /** - * The last updated date of the domain as found in the response to a WHOIS query. The date format is Unix time. - */ - UpdatedDate?: Timestamp; - /** - * The date when the registration for the domain is set to expire. The date format is Unix time. - */ - ExpirationDate?: Timestamp; - /** - * Reseller of the domain. Domains registered or transferred using Amazon Route 53 domains will have "Amazon" as the reseller. - */ - Reseller?: Reseller; - /** - * Reserved for future use. - */ - DnsSec?: DNSSec; - /** - * An array of domain name status codes, also known as Extensible Provisioning Protocol (EPP) status codes. ICANN, the organization that maintains a central database of domain names, has developed a set of domain name status codes that tell you the status of a variety of operations on a domain name, for example, registering a domain name, transferring a domain name to another registrar, renewing the registration for a domain name, and so on. All registrars use this same set of status codes. For a current list of domain name status codes and an explanation of what each code means, go to the ICANN website and search for epp status codes. (Search on the ICANN website; web searches sometimes return an old version of the document.) - */ - StatusList?: DomainStatusList; - } - export interface GetDomainSuggestionsRequest { - /** - * A domain name that you want to use as the basis for a list of possible domain names. The domain name must contain a top-level domain (TLD), such as .com, that Amazon Route 53 supports. For a list of TLDs, see Domains that You Can Register with Amazon Route 53 in the Amazon Route 53 Developer Guide. - */ - DomainName: DomainName; - /** - * The number of suggested domain names that you want Amazon Route 53 to return. - */ - SuggestionCount: Integer; - /** - * If OnlyAvailable is true, Amazon Route 53 returns only domain names that are available. If OnlyAvailable is false, Amazon Route 53 returns domain names without checking whether they're available to be registered. To determine whether the domain is available, you can call checkDomainAvailability for each suggestion. - */ - OnlyAvailable: Boolean; - } - export interface GetDomainSuggestionsResponse { - /** - * A list of possible domain names. If you specified true for OnlyAvailable in the request, the list contains only domains that are available for registration. - */ - SuggestionsList?: DomainSuggestionsList; - } - export interface GetOperationDetailRequest { - /** - * The identifier for the operation for which you want to get the status. Amazon Route 53 returned the identifier in the response to the original request. - */ - OperationId: OperationId; - } - export interface GetOperationDetailResponse { - /** - * The identifier for the operation. - */ - OperationId?: OperationId; - /** - * The current status of the requested operation in the system. - */ - Status?: OperationStatus; - /** - * Detailed information on the status including possible errors. - */ - Message?: ErrorMessage; - /** - * The name of a domain. - */ - DomainName?: DomainName; - /** - * The type of operation that was requested. - */ - Type?: OperationType; - /** - * The date when the request was submitted. - */ - SubmittedDate?: Timestamp; - } - export type GlueIp = string; - export type GlueIpList = GlueIp[]; - export type HostName = string; - export type Integer = number; - export type InvoiceId = string; - export type LangCode = string; - export interface ListDomainsRequest { - /** - * For an initial request for a list of domains, omit this element. If the number of domains that are associated with the current AWS account is greater than the value that you specified for MaxItems, you can use Marker to return additional domains. Get the value of NextPageMarker from the previous response, and submit another request that includes the value of NextPageMarker in the Marker element. Constraints: The marker must match the value specified in the previous request. - */ - Marker?: PageMarker; - /** - * Number of domains to be returned. Default: 20 - */ - MaxItems?: PageMaxItems; - } - export interface ListDomainsResponse { - /** - * A summary of domains. - */ - Domains: DomainSummaryList; - /** - * If there are more domains than you specified for MaxItems in the request, submit another request and include the value of NextPageMarker in the value of Marker. - */ - NextPageMarker?: PageMarker; - } - export interface ListOperationsRequest { - /** - * For an initial request for a list of operations, omit this element. If the number of operations that are not yet complete is greater than the value that you specified for MaxItems, you can use Marker to return additional operations. Get the value of NextPageMarker from the previous response, and submit another request that includes the value of NextPageMarker in the Marker element. - */ - Marker?: PageMarker; - /** - * Number of domains to be returned. Default: 20 - */ - MaxItems?: PageMaxItems; - } - export interface ListOperationsResponse { - /** - * Lists summaries of the operations. - */ - Operations: OperationSummaryList; - /** - * If there are more operations than you specified for MaxItems in the request, submit another request and include the value of NextPageMarker in the value of Marker. - */ - NextPageMarker?: PageMarker; - } - export interface ListTagsForDomainRequest { - /** - * The domain for which you want to get a list of tags. - */ - DomainName: DomainName; - } - export interface ListTagsForDomainResponse { - /** - * A list of the tags that are associated with the specified domain. - */ - TagList: TagList; - } - export interface Nameserver { - /** - * The fully qualified host name of the name server. Constraint: Maximum 255 characters - */ - Name: HostName; - /** - * Glue IP address of a name server entry. Glue IP addresses are required only when the name of the name server is a subdomain of the domain. For example, if your domain is example.com and the name server for the domain is ns.example.com, you need to specify the IP address for ns.example.com. Constraints: The list can contain only one IPv4 and one IPv6 address. - */ - GlueIps?: GlueIpList; - } - export type NameserverList = Nameserver[]; - export type OperationId = string; - export type OperationStatus = "SUBMITTED"|"IN_PROGRESS"|"ERROR"|"SUCCESSFUL"|"FAILED"|string; - export interface OperationSummary { - /** - * Identifier returned to track the requested action. - */ - OperationId: OperationId; - /** - * The current status of the requested operation in the system. - */ - Status: OperationStatus; - /** - * Type of the action requested. - */ - Type: OperationType; - /** - * The date when the request was submitted. - */ - SubmittedDate: Timestamp; - } - export type OperationSummaryList = OperationSummary[]; - export type OperationType = "REGISTER_DOMAIN"|"DELETE_DOMAIN"|"TRANSFER_IN_DOMAIN"|"UPDATE_DOMAIN_CONTACT"|"UPDATE_NAMESERVER"|"CHANGE_PRIVACY_PROTECTION"|"DOMAIN_LOCK"|"ENABLE_AUTORENEW"|"DISABLE_AUTORENEW"|"ADD_DNSSEC"|"REMOVE_DNSSEC"|"EXPIRE_DOMAIN"|"TRANSFER_OUT_DOMAIN"|"CHANGE_DOMAIN_OWNER"|"RENEW_DOMAIN"|"PUSH_DOMAIN"|string; - export type PageMarker = string; - export type PageMaxItems = number; - export type Price = number; - export type ReachabilityStatus = "PENDING"|"DONE"|"EXPIRED"|string; - export interface RegisterDomainRequest { - /** - * The domain name that you want to register. Constraints: The domain name can contain only the letters a through z, the numbers 0 through 9, and hyphen (-). Internationalized Domain Names are not supported. - */ - DomainName: DomainName; - /** - * Reserved for future use. - */ - IdnLangCode?: LangCode; - /** - * The number of years that you want to register the domain for. Domains are registered for a minimum of one year. The maximum period depends on the top-level domain. For the range of valid values for your domain, see Domains that You Can Register with Amazon Route 53 in the Amazon Route 53 Developer Guide. Default: 1 - */ - DurationInYears: DurationInYears; - /** - * Indicates whether the domain will be automatically renewed (true) or not (false). Autorenewal only takes effect after the account is charged. Default: true - */ - AutoRenew?: Boolean; - /** - * Provides detailed contact information. - */ - AdminContact: ContactDetail; - /** - * Provides detailed contact information. - */ - RegistrantContact: ContactDetail; - /** - * Provides detailed contact information. - */ - TechContact: ContactDetail; - /** - * Whether you want to conceal contact information from WHOIS queries. If you specify true, WHOIS ("who is") queries will return contact information for our registrar partner, Gandi, instead of the contact information that you enter. Default: true - */ - PrivacyProtectAdminContact?: Boolean; - /** - * Whether you want to conceal contact information from WHOIS queries. If you specify true, WHOIS ("who is") queries will return contact information for our registrar partner, Gandi, instead of the contact information that you enter. Default: true - */ - PrivacyProtectRegistrantContact?: Boolean; - /** - * Whether you want to conceal contact information from WHOIS queries. If you specify true, WHOIS ("who is") queries will return contact information for our registrar partner, Gandi, instead of the contact information that you enter. Default: true - */ - PrivacyProtectTechContact?: Boolean; - } - export interface RegisterDomainResponse { - /** - * Identifier for tracking the progress of the request. To use this ID to query the operation status, use GetOperationDetail. - */ - OperationId: OperationId; - } - export type RegistrarName = string; - export type RegistrarUrl = string; - export type RegistrarWhoIsServer = string; - export type RegistryDomainId = string; - export interface RenewDomainRequest { - /** - * The name of the domain that you want to renew. - */ - DomainName: DomainName; - /** - * The number of years that you want to renew the domain for. The maximum number of years depends on the top-level domain. For the range of valid values for your domain, see Domains that You Can Register with Amazon Route 53 in the Amazon Route 53 Developer Guide. Default: 1 - */ - DurationInYears?: DurationInYears; - /** - * The year when the registration for the domain is set to expire. This value must match the current expiration date for the domain. - */ - CurrentExpiryYear: CurrentExpiryYear; - } - export interface RenewDomainResponse { - /** - * The identifier for tracking the progress of the request. To use this ID to query the operation status, use GetOperationDetail. - */ - OperationId: OperationId; - } - export type Reseller = string; - export interface ResendContactReachabilityEmailRequest { - /** - * The name of the domain for which you want Amazon Route 53 to resend a confirmation email to the registrant contact. - */ - domainName?: DomainName; - } - export interface ResendContactReachabilityEmailResponse { - /** - * The domain name for which you requested a confirmation email. - */ - domainName?: DomainName; - /** - * The email address for the registrant contact at the time that we sent the verification email. - */ - emailAddress?: Email; - /** - * True if the email address for the registrant contact has already been verified, and false otherwise. If the email address has already been verified, we don't send another confirmation email. - */ - isAlreadyVerified?: Boolean; - } - export interface RetrieveDomainAuthCodeRequest { - /** - * The name of the domain that you want to get an authorization code for. - */ - DomainName: DomainName; - } - export interface RetrieveDomainAuthCodeResponse { - /** - * The authorization code for the domain. - */ - AuthCode: DomainAuthCode; - } - export type State = string; - export type String = string; - export interface Tag { - /** - * The key (name) of a tag. Valid values: A-Z, a-z, 0-9, space, ".:/=+\-@" Constraints: Each key can be 1-128 characters long. - */ - Key?: TagKey; - /** - * The value of a tag. Valid values: A-Z, a-z, 0-9, space, ".:/=+\-@" Constraints: Each value can be 0-256 characters long. - */ - Value?: TagValue; - } - export type TagKey = string; - export type TagKeyList = TagKey[]; - export type TagList = Tag[]; - export type TagValue = string; - export type Timestamp = Date; - export interface TransferDomainRequest { - /** - * The name of the domain that you want to transfer to Amazon Route 53. Constraints: The domain name can contain only the letters a through z, the numbers 0 through 9, and hyphen (-). Internationalized Domain Names are not supported. - */ - DomainName: DomainName; - /** - * Reserved for future use. - */ - IdnLangCode?: LangCode; - /** - * The number of years that you want to register the domain for. Domains are registered for a minimum of one year. The maximum period depends on the top-level domain. Default: 1 - */ - DurationInYears: DurationInYears; - /** - * Contains details for the host and glue IP addresses. - */ - Nameservers?: NameserverList; - /** - * The authorization code for the domain. You get this value from the current registrar. - */ - AuthCode?: DomainAuthCode; - /** - * Indicates whether the domain will be automatically renewed (true) or not (false). Autorenewal only takes effect after the account is charged. Default: true - */ - AutoRenew?: Boolean; - /** - * Provides detailed contact information. - */ - AdminContact: ContactDetail; - /** - * Provides detailed contact information. - */ - RegistrantContact: ContactDetail; - /** - * Provides detailed contact information. - */ - TechContact: ContactDetail; - /** - * Whether you want to conceal contact information from WHOIS queries. If you specify true, WHOIS ("who is") queries will return contact information for our registrar partner, Gandi, instead of the contact information that you enter. Default: true - */ - PrivacyProtectAdminContact?: Boolean; - /** - * Whether you want to conceal contact information from WHOIS queries. If you specify true, WHOIS ("who is") queries will return contact information for our registrar partner, Gandi, instead of the contact information that you enter. Default: true - */ - PrivacyProtectRegistrantContact?: Boolean; - /** - * Whether you want to conceal contact information from WHOIS queries. If you specify true, WHOIS ("who is") queries will return contact information for our registrar partner, Gandi, instead of the contact information that you enter. Default: true - */ - PrivacyProtectTechContact?: Boolean; - } - export interface TransferDomainResponse { - /** - * Identifier for tracking the progress of the request. To use this ID to query the operation status, use GetOperationDetail. - */ - OperationId: OperationId; - } - export type Transferable = "TRANSFERABLE"|"UNTRANSFERABLE"|"DONT_KNOW"|string; - export interface UpdateDomainContactPrivacyRequest { - /** - * The name of the domain that you want to update the privacy setting for. - */ - DomainName: DomainName; - /** - * Whether you want to conceal contact information from WHOIS queries. If you specify true, WHOIS ("who is") queries will return contact information for our registrar partner, Gandi, instead of the contact information that you enter. - */ - AdminPrivacy?: Boolean; - /** - * Whether you want to conceal contact information from WHOIS queries. If you specify true, WHOIS ("who is") queries will return contact information for our registrar partner, Gandi, instead of the contact information that you enter. - */ - RegistrantPrivacy?: Boolean; - /** - * Whether you want to conceal contact information from WHOIS queries. If you specify true, WHOIS ("who is") queries will return contact information for our registrar partner, Gandi, instead of the contact information that you enter. - */ - TechPrivacy?: Boolean; - } - export interface UpdateDomainContactPrivacyResponse { - /** - * Identifier for tracking the progress of the request. To use this ID to query the operation status, use GetOperationDetail. - */ - OperationId: OperationId; - } - export interface UpdateDomainContactRequest { - /** - * The name of the domain that you want to update contact information for. - */ - DomainName: DomainName; - /** - * Provides detailed contact information. - */ - AdminContact?: ContactDetail; - /** - * Provides detailed contact information. - */ - RegistrantContact?: ContactDetail; - /** - * Provides detailed contact information. - */ - TechContact?: ContactDetail; - } - export interface UpdateDomainContactResponse { - /** - * Identifier for tracking the progress of the request. To use this ID to query the operation status, use GetOperationDetail. - */ - OperationId: OperationId; - } - export interface UpdateDomainNameserversRequest { - /** - * The name of the domain that you want to change name servers for. - */ - DomainName: DomainName; - /** - * The authorization key for .fi domains - */ - FIAuthKey?: FIAuthKey; - /** - * A list of new name servers for the domain. - */ - Nameservers: NameserverList; - } - export interface UpdateDomainNameserversResponse { - /** - * Identifier for tracking the progress of the request. To use this ID to query the operation status, use GetOperationDetail. - */ - OperationId: OperationId; - } - export interface UpdateTagsForDomainRequest { - /** - * The domain for which you want to add or update tags. - */ - DomainName: DomainName; - /** - * A list of the tag keys and values that you want to add or update. If you specify a key that already exists, the corresponding value will be replaced. - */ - TagsToUpdate?: TagList; - } - export interface UpdateTagsForDomainResponse { - } - export interface ViewBillingRequest { - /** - * The beginning date and time for the time period for which you want a list of billing records. Specify the date in Unix time format. - */ - Start?: Timestamp; - /** - * The end date and time for the time period for which you want a list of billing records. Specify the date in Unix time format. - */ - End?: Timestamp; - /** - * For an initial request for a list of billing records, omit this element. If the number of billing records that are associated with the current AWS account during the specified period is greater than the value that you specified for MaxItems, you can use Marker to return additional billing records. Get the value of NextPageMarker from the previous response, and submit another request that includes the value of NextPageMarker in the Marker element. Constraints: The marker must match the value of NextPageMarker that was returned in the previous response. - */ - Marker?: PageMarker; - /** - * The number of billing records to be returned. Default: 20 - */ - MaxItems?: PageMaxItems; - } - export interface ViewBillingResponse { - /** - * If there are more billing records than you specified for MaxItems in the request, submit another request and include the value of NextPageMarker in the value of Marker. - */ - NextPageMarker?: PageMarker; - /** - * A summary of billing records. - */ - BillingRecords?: BillingRecords; - } - export type ZipCode = string; - /** - * A string in YYYY-MM-DD format that represents the latest possible API version that can be used in this service. Specify 'latest' to use the latest possible version. - */ - export type apiVersion = "2014-05-15"|"latest"|string; - export interface ClientApiVersions { - /** - * A string in YYYY-MM-DD format that represents the latest possible API version that can be used in this service. Specify 'latest' to use the latest possible version. - */ - apiVersion?: apiVersion; - } - export type ClientConfiguration = ServiceConfigurationOptions & ClientApiVersions; - /** - * Contains interfaces for use with the Route53Domains client. - */ - export import Types = Route53Domains; -} -export = Route53Domains; diff --git a/workshops/monte-carlo-on-ec2-spot-fleet/src/web/node_modules/aws-sdk/clients/route53domains.js b/workshops/monte-carlo-on-ec2-spot-fleet/src/web/node_modules/aws-sdk/clients/route53domains.js deleted file mode 100644 index 3020d775..00000000 --- a/workshops/monte-carlo-on-ec2-spot-fleet/src/web/node_modules/aws-sdk/clients/route53domains.js +++ /dev/null @@ -1,18 +0,0 @@ -require('../lib/node_loader'); -var AWS = require('../lib/core'); -var Service = AWS.Service; -var apiLoader = AWS.apiLoader; - -apiLoader.services['route53domains'] = {}; -AWS.Route53Domains = Service.defineService('route53domains', ['2014-05-15']); -Object.defineProperty(apiLoader.services['route53domains'], '2014-05-15', { - get: function get() { - var model = require('../apis/route53domains-2014-05-15.min.json'); - model.paginators = require('../apis/route53domains-2014-05-15.paginators.json').pagination; - return model; - }, - enumerable: true, - configurable: true -}); - -module.exports = AWS.Route53Domains; diff --git a/workshops/monte-carlo-on-ec2-spot-fleet/src/web/node_modules/aws-sdk/clients/s3.d.ts b/workshops/monte-carlo-on-ec2-spot-fleet/src/web/node_modules/aws-sdk/clients/s3.d.ts deleted file mode 100644 index a5eed204..00000000 --- a/workshops/monte-carlo-on-ec2-spot-fleet/src/web/node_modules/aws-sdk/clients/s3.d.ts +++ /dev/null @@ -1,3500 +0,0 @@ -import {Request} from '../lib/request'; -import {Response} from '../lib/response'; -import {AWSError} from '../lib/error'; -import {S3Customizations} from '../lib/services/s3'; -import {ServiceConfigurationOptions} from '../lib/service'; -import {ConfigBase as Config} from '../lib/config'; -import {UseDualstackConfigOptions} from '../lib/config_use_dualstack'; -import {ManagedUpload as managed_upload} from '../lib/s3/managed_upload'; -import {PresignedPost as presigned_post} from '../lib/s3/presigned_post'; -import {Readable} from 'stream'; -interface Blob {} -declare class S3 extends S3Customizations { - /** - * Constructs a service object. This object has one method for each API operation. - */ - constructor(options?: S3.Types.ClientConfiguration) - config: Config & S3.Types.ClientConfiguration; - /** - * Aborts a multipart upload.To verify that all parts have been removed, so you don't get charged for the part storage, you should call the List Parts operation and ensure the parts list is empty. - */ - abortMultipartUpload(params: S3.Types.AbortMultipartUploadRequest, callback?: (err: AWSError, data: S3.Types.AbortMultipartUploadOutput) => void): Request; - /** - * Aborts a multipart upload.To verify that all parts have been removed, so you don't get charged for the part storage, you should call the List Parts operation and ensure the parts list is empty. - */ - abortMultipartUpload(callback?: (err: AWSError, data: S3.Types.AbortMultipartUploadOutput) => void): Request; - /** - * Completes a multipart upload by assembling previously uploaded parts. - */ - completeMultipartUpload(params: S3.Types.CompleteMultipartUploadRequest, callback?: (err: AWSError, data: S3.Types.CompleteMultipartUploadOutput) => void): Request; - /** - * Completes a multipart upload by assembling previously uploaded parts. - */ - completeMultipartUpload(callback?: (err: AWSError, data: S3.Types.CompleteMultipartUploadOutput) => void): Request; - /** - * Creates a copy of an object that is already stored in Amazon S3. - */ - copyObject(params: S3.Types.CopyObjectRequest, callback?: (err: AWSError, data: S3.Types.CopyObjectOutput) => void): Request; - /** - * Creates a copy of an object that is already stored in Amazon S3. - */ - copyObject(callback?: (err: AWSError, data: S3.Types.CopyObjectOutput) => void): Request; - /** - * Creates a new bucket. - */ - createBucket(params: S3.Types.CreateBucketRequest, callback?: (err: AWSError, data: S3.Types.CreateBucketOutput) => void): Request; - /** - * Creates a new bucket. - */ - createBucket(callback?: (err: AWSError, data: S3.Types.CreateBucketOutput) => void): Request; - /** - * Initiates a multipart upload and returns an upload ID.Note: After you initiate multipart upload and upload one or more parts, you must either complete or abort multipart upload in order to stop getting charged for storage of the uploaded parts. Only after you either complete or abort multipart upload, Amazon S3 frees up the parts storage and stops charging you for the parts storage. - */ - createMultipartUpload(params: S3.Types.CreateMultipartUploadRequest, callback?: (err: AWSError, data: S3.Types.CreateMultipartUploadOutput) => void): Request; - /** - * Initiates a multipart upload and returns an upload ID.Note: After you initiate multipart upload and upload one or more parts, you must either complete or abort multipart upload in order to stop getting charged for storage of the uploaded parts. Only after you either complete or abort multipart upload, Amazon S3 frees up the parts storage and stops charging you for the parts storage. - */ - createMultipartUpload(callback?: (err: AWSError, data: S3.Types.CreateMultipartUploadOutput) => void): Request; - /** - * Deletes the bucket. All objects (including all object versions and Delete Markers) in the bucket must be deleted before the bucket itself can be deleted. - */ - deleteBucket(params: S3.Types.DeleteBucketRequest, callback?: (err: AWSError, data: {}) => void): Request<{}, AWSError>; - /** - * Deletes the bucket. All objects (including all object versions and Delete Markers) in the bucket must be deleted before the bucket itself can be deleted. - */ - deleteBucket(callback?: (err: AWSError, data: {}) => void): Request<{}, AWSError>; - /** - * Deletes an analytics configuration for the bucket (specified by the analytics configuration ID). - */ - deleteBucketAnalyticsConfiguration(params: S3.Types.DeleteBucketAnalyticsConfigurationRequest, callback?: (err: AWSError, data: {}) => void): Request<{}, AWSError>; - /** - * Deletes an analytics configuration for the bucket (specified by the analytics configuration ID). - */ - deleteBucketAnalyticsConfiguration(callback?: (err: AWSError, data: {}) => void): Request<{}, AWSError>; - /** - * Deletes the cors configuration information set for the bucket. - */ - deleteBucketCors(params: S3.Types.DeleteBucketCorsRequest, callback?: (err: AWSError, data: {}) => void): Request<{}, AWSError>; - /** - * Deletes the cors configuration information set for the bucket. - */ - deleteBucketCors(callback?: (err: AWSError, data: {}) => void): Request<{}, AWSError>; - /** - * Deletes an inventory configuration (identified by the inventory ID) from the bucket. - */ - deleteBucketInventoryConfiguration(params: S3.Types.DeleteBucketInventoryConfigurationRequest, callback?: (err: AWSError, data: {}) => void): Request<{}, AWSError>; - /** - * Deletes an inventory configuration (identified by the inventory ID) from the bucket. - */ - deleteBucketInventoryConfiguration(callback?: (err: AWSError, data: {}) => void): Request<{}, AWSError>; - /** - * Deletes the lifecycle configuration from the bucket. - */ - deleteBucketLifecycle(params: S3.Types.DeleteBucketLifecycleRequest, callback?: (err: AWSError, data: {}) => void): Request<{}, AWSError>; - /** - * Deletes the lifecycle configuration from the bucket. - */ - deleteBucketLifecycle(callback?: (err: AWSError, data: {}) => void): Request<{}, AWSError>; - /** - * Deletes a metrics configuration (specified by the metrics configuration ID) from the bucket. - */ - deleteBucketMetricsConfiguration(params: S3.Types.DeleteBucketMetricsConfigurationRequest, callback?: (err: AWSError, data: {}) => void): Request<{}, AWSError>; - /** - * Deletes a metrics configuration (specified by the metrics configuration ID) from the bucket. - */ - deleteBucketMetricsConfiguration(callback?: (err: AWSError, data: {}) => void): Request<{}, AWSError>; - /** - * Deletes the policy from the bucket. - */ - deleteBucketPolicy(params: S3.Types.DeleteBucketPolicyRequest, callback?: (err: AWSError, data: {}) => void): Request<{}, AWSError>; - /** - * Deletes the policy from the bucket. - */ - deleteBucketPolicy(callback?: (err: AWSError, data: {}) => void): Request<{}, AWSError>; - /** - * Deletes the replication configuration from the bucket. - */ - deleteBucketReplication(params: S3.Types.DeleteBucketReplicationRequest, callback?: (err: AWSError, data: {}) => void): Request<{}, AWSError>; - /** - * Deletes the replication configuration from the bucket. - */ - deleteBucketReplication(callback?: (err: AWSError, data: {}) => void): Request<{}, AWSError>; - /** - * Deletes the tags from the bucket. - */ - deleteBucketTagging(params: S3.Types.DeleteBucketTaggingRequest, callback?: (err: AWSError, data: {}) => void): Request<{}, AWSError>; - /** - * Deletes the tags from the bucket. - */ - deleteBucketTagging(callback?: (err: AWSError, data: {}) => void): Request<{}, AWSError>; - /** - * This operation removes the website configuration from the bucket. - */ - deleteBucketWebsite(params: S3.Types.DeleteBucketWebsiteRequest, callback?: (err: AWSError, data: {}) => void): Request<{}, AWSError>; - /** - * This operation removes the website configuration from the bucket. - */ - deleteBucketWebsite(callback?: (err: AWSError, data: {}) => void): Request<{}, AWSError>; - /** - * Removes the null version (if there is one) of an object and inserts a delete marker, which becomes the latest version of the object. If there isn't a null version, Amazon S3 does not remove any objects. - */ - deleteObject(params: S3.Types.DeleteObjectRequest, callback?: (err: AWSError, data: S3.Types.DeleteObjectOutput) => void): Request; - /** - * Removes the null version (if there is one) of an object and inserts a delete marker, which becomes the latest version of the object. If there isn't a null version, Amazon S3 does not remove any objects. - */ - deleteObject(callback?: (err: AWSError, data: S3.Types.DeleteObjectOutput) => void): Request; - /** - * Removes the tag-set from an existing object. - */ - deleteObjectTagging(params: S3.Types.DeleteObjectTaggingRequest, callback?: (err: AWSError, data: S3.Types.DeleteObjectTaggingOutput) => void): Request; - /** - * Removes the tag-set from an existing object. - */ - deleteObjectTagging(callback?: (err: AWSError, data: S3.Types.DeleteObjectTaggingOutput) => void): Request; - /** - * This operation enables you to delete multiple objects from a bucket using a single HTTP request. You may specify up to 1000 keys. - */ - deleteObjects(params: S3.Types.DeleteObjectsRequest, callback?: (err: AWSError, data: S3.Types.DeleteObjectsOutput) => void): Request; - /** - * This operation enables you to delete multiple objects from a bucket using a single HTTP request. You may specify up to 1000 keys. - */ - deleteObjects(callback?: (err: AWSError, data: S3.Types.DeleteObjectsOutput) => void): Request; - /** - * Returns the accelerate configuration of a bucket. - */ - getBucketAccelerateConfiguration(params: S3.Types.GetBucketAccelerateConfigurationRequest, callback?: (err: AWSError, data: S3.Types.GetBucketAccelerateConfigurationOutput) => void): Request; - /** - * Returns the accelerate configuration of a bucket. - */ - getBucketAccelerateConfiguration(callback?: (err: AWSError, data: S3.Types.GetBucketAccelerateConfigurationOutput) => void): Request; - /** - * Gets the access control policy for the bucket. - */ - getBucketAcl(params: S3.Types.GetBucketAclRequest, callback?: (err: AWSError, data: S3.Types.GetBucketAclOutput) => void): Request; - /** - * Gets the access control policy for the bucket. - */ - getBucketAcl(callback?: (err: AWSError, data: S3.Types.GetBucketAclOutput) => void): Request; - /** - * Gets an analytics configuration for the bucket (specified by the analytics configuration ID). - */ - getBucketAnalyticsConfiguration(params: S3.Types.GetBucketAnalyticsConfigurationRequest, callback?: (err: AWSError, data: S3.Types.GetBucketAnalyticsConfigurationOutput) => void): Request; - /** - * Gets an analytics configuration for the bucket (specified by the analytics configuration ID). - */ - getBucketAnalyticsConfiguration(callback?: (err: AWSError, data: S3.Types.GetBucketAnalyticsConfigurationOutput) => void): Request; - /** - * Returns the cors configuration for the bucket. - */ - getBucketCors(params: S3.Types.GetBucketCorsRequest, callback?: (err: AWSError, data: S3.Types.GetBucketCorsOutput) => void): Request; - /** - * Returns the cors configuration for the bucket. - */ - getBucketCors(callback?: (err: AWSError, data: S3.Types.GetBucketCorsOutput) => void): Request; - /** - * Returns an inventory configuration (identified by the inventory ID) from the bucket. - */ - getBucketInventoryConfiguration(params: S3.Types.GetBucketInventoryConfigurationRequest, callback?: (err: AWSError, data: S3.Types.GetBucketInventoryConfigurationOutput) => void): Request; - /** - * Returns an inventory configuration (identified by the inventory ID) from the bucket. - */ - getBucketInventoryConfiguration(callback?: (err: AWSError, data: S3.Types.GetBucketInventoryConfigurationOutput) => void): Request; - /** - * Deprecated, see the GetBucketLifecycleConfiguration operation. - */ - getBucketLifecycle(params: S3.Types.GetBucketLifecycleRequest, callback?: (err: AWSError, data: S3.Types.GetBucketLifecycleOutput) => void): Request; - /** - * Deprecated, see the GetBucketLifecycleConfiguration operation. - */ - getBucketLifecycle(callback?: (err: AWSError, data: S3.Types.GetBucketLifecycleOutput) => void): Request; - /** - * Returns the lifecycle configuration information set on the bucket. - */ - getBucketLifecycleConfiguration(params: S3.Types.GetBucketLifecycleConfigurationRequest, callback?: (err: AWSError, data: S3.Types.GetBucketLifecycleConfigurationOutput) => void): Request; - /** - * Returns the lifecycle configuration information set on the bucket. - */ - getBucketLifecycleConfiguration(callback?: (err: AWSError, data: S3.Types.GetBucketLifecycleConfigurationOutput) => void): Request; - /** - * Returns the region the bucket resides in. - */ - getBucketLocation(params: S3.Types.GetBucketLocationRequest, callback?: (err: AWSError, data: S3.Types.GetBucketLocationOutput) => void): Request; - /** - * Returns the region the bucket resides in. - */ - getBucketLocation(callback?: (err: AWSError, data: S3.Types.GetBucketLocationOutput) => void): Request; - /** - * Returns the logging status of a bucket and the permissions users have to view and modify that status. To use GET, you must be the bucket owner. - */ - getBucketLogging(params: S3.Types.GetBucketLoggingRequest, callback?: (err: AWSError, data: S3.Types.GetBucketLoggingOutput) => void): Request; - /** - * Returns the logging status of a bucket and the permissions users have to view and modify that status. To use GET, you must be the bucket owner. - */ - getBucketLogging(callback?: (err: AWSError, data: S3.Types.GetBucketLoggingOutput) => void): Request; - /** - * Gets a metrics configuration (specified by the metrics configuration ID) from the bucket. - */ - getBucketMetricsConfiguration(params: S3.Types.GetBucketMetricsConfigurationRequest, callback?: (err: AWSError, data: S3.Types.GetBucketMetricsConfigurationOutput) => void): Request; - /** - * Gets a metrics configuration (specified by the metrics configuration ID) from the bucket. - */ - getBucketMetricsConfiguration(callback?: (err: AWSError, data: S3.Types.GetBucketMetricsConfigurationOutput) => void): Request; - /** - * Deprecated, see the GetBucketNotificationConfiguration operation. - */ - getBucketNotification(params: S3.Types.GetBucketNotificationConfigurationRequest, callback?: (err: AWSError, data: S3.Types.NotificationConfigurationDeprecated) => void): Request; - /** - * Deprecated, see the GetBucketNotificationConfiguration operation. - */ - getBucketNotification(callback?: (err: AWSError, data: S3.Types.NotificationConfigurationDeprecated) => void): Request; - /** - * Returns the notification configuration of a bucket. - */ - getBucketNotificationConfiguration(params: S3.Types.GetBucketNotificationConfigurationRequest, callback?: (err: AWSError, data: S3.Types.NotificationConfiguration) => void): Request; - /** - * Returns the notification configuration of a bucket. - */ - getBucketNotificationConfiguration(callback?: (err: AWSError, data: S3.Types.NotificationConfiguration) => void): Request; - /** - * Returns the policy of a specified bucket. - */ - getBucketPolicy(params: S3.Types.GetBucketPolicyRequest, callback?: (err: AWSError, data: S3.Types.GetBucketPolicyOutput) => void): Request; - /** - * Returns the policy of a specified bucket. - */ - getBucketPolicy(callback?: (err: AWSError, data: S3.Types.GetBucketPolicyOutput) => void): Request; - /** - * Returns the replication configuration of a bucket. - */ - getBucketReplication(params: S3.Types.GetBucketReplicationRequest, callback?: (err: AWSError, data: S3.Types.GetBucketReplicationOutput) => void): Request; - /** - * Returns the replication configuration of a bucket. - */ - getBucketReplication(callback?: (err: AWSError, data: S3.Types.GetBucketReplicationOutput) => void): Request; - /** - * Returns the request payment configuration of a bucket. - */ - getBucketRequestPayment(params: S3.Types.GetBucketRequestPaymentRequest, callback?: (err: AWSError, data: S3.Types.GetBucketRequestPaymentOutput) => void): Request; - /** - * Returns the request payment configuration of a bucket. - */ - getBucketRequestPayment(callback?: (err: AWSError, data: S3.Types.GetBucketRequestPaymentOutput) => void): Request; - /** - * Returns the tag set associated with the bucket. - */ - getBucketTagging(params: S3.Types.GetBucketTaggingRequest, callback?: (err: AWSError, data: S3.Types.GetBucketTaggingOutput) => void): Request; - /** - * Returns the tag set associated with the bucket. - */ - getBucketTagging(callback?: (err: AWSError, data: S3.Types.GetBucketTaggingOutput) => void): Request; - /** - * Returns the versioning state of a bucket. - */ - getBucketVersioning(params: S3.Types.GetBucketVersioningRequest, callback?: (err: AWSError, data: S3.Types.GetBucketVersioningOutput) => void): Request; - /** - * Returns the versioning state of a bucket. - */ - getBucketVersioning(callback?: (err: AWSError, data: S3.Types.GetBucketVersioningOutput) => void): Request; - /** - * Returns the website configuration for a bucket. - */ - getBucketWebsite(params: S3.Types.GetBucketWebsiteRequest, callback?: (err: AWSError, data: S3.Types.GetBucketWebsiteOutput) => void): Request; - /** - * Returns the website configuration for a bucket. - */ - getBucketWebsite(callback?: (err: AWSError, data: S3.Types.GetBucketWebsiteOutput) => void): Request; - /** - * Retrieves objects from Amazon S3. - */ - getObject(params: S3.Types.GetObjectRequest, callback?: (err: AWSError, data: S3.Types.GetObjectOutput) => void): Request; - /** - * Retrieves objects from Amazon S3. - */ - getObject(callback?: (err: AWSError, data: S3.Types.GetObjectOutput) => void): Request; - /** - * Returns the access control list (ACL) of an object. - */ - getObjectAcl(params: S3.Types.GetObjectAclRequest, callback?: (err: AWSError, data: S3.Types.GetObjectAclOutput) => void): Request; - /** - * Returns the access control list (ACL) of an object. - */ - getObjectAcl(callback?: (err: AWSError, data: S3.Types.GetObjectAclOutput) => void): Request; - /** - * Returns the tag-set of an object. - */ - getObjectTagging(params: S3.Types.GetObjectTaggingRequest, callback?: (err: AWSError, data: S3.Types.GetObjectTaggingOutput) => void): Request; - /** - * Returns the tag-set of an object. - */ - getObjectTagging(callback?: (err: AWSError, data: S3.Types.GetObjectTaggingOutput) => void): Request; - /** - * Return torrent files from a bucket. - */ - getObjectTorrent(params: S3.Types.GetObjectTorrentRequest, callback?: (err: AWSError, data: S3.Types.GetObjectTorrentOutput) => void): Request; - /** - * Return torrent files from a bucket. - */ - getObjectTorrent(callback?: (err: AWSError, data: S3.Types.GetObjectTorrentOutput) => void): Request; - /** - * This operation is useful to determine if a bucket exists and you have permission to access it. - */ - headBucket(params: S3.Types.HeadBucketRequest, callback?: (err: AWSError, data: {}) => void): Request<{}, AWSError>; - /** - * This operation is useful to determine if a bucket exists and you have permission to access it. - */ - headBucket(callback?: (err: AWSError, data: {}) => void): Request<{}, AWSError>; - /** - * The HEAD operation retrieves metadata from an object without returning the object itself. This operation is useful if you're only interested in an object's metadata. To use HEAD, you must have READ access to the object. - */ - headObject(params: S3.Types.HeadObjectRequest, callback?: (err: AWSError, data: S3.Types.HeadObjectOutput) => void): Request; - /** - * The HEAD operation retrieves metadata from an object without returning the object itself. This operation is useful if you're only interested in an object's metadata. To use HEAD, you must have READ access to the object. - */ - headObject(callback?: (err: AWSError, data: S3.Types.HeadObjectOutput) => void): Request; - /** - * Lists the analytics configurations for the bucket. - */ - listBucketAnalyticsConfigurations(params: S3.Types.ListBucketAnalyticsConfigurationsRequest, callback?: (err: AWSError, data: S3.Types.ListBucketAnalyticsConfigurationsOutput) => void): Request; - /** - * Lists the analytics configurations for the bucket. - */ - listBucketAnalyticsConfigurations(callback?: (err: AWSError, data: S3.Types.ListBucketAnalyticsConfigurationsOutput) => void): Request; - /** - * Returns a list of inventory configurations for the bucket. - */ - listBucketInventoryConfigurations(params: S3.Types.ListBucketInventoryConfigurationsRequest, callback?: (err: AWSError, data: S3.Types.ListBucketInventoryConfigurationsOutput) => void): Request; - /** - * Returns a list of inventory configurations for the bucket. - */ - listBucketInventoryConfigurations(callback?: (err: AWSError, data: S3.Types.ListBucketInventoryConfigurationsOutput) => void): Request; - /** - * Lists the metrics configurations for the bucket. - */ - listBucketMetricsConfigurations(params: S3.Types.ListBucketMetricsConfigurationsRequest, callback?: (err: AWSError, data: S3.Types.ListBucketMetricsConfigurationsOutput) => void): Request; - /** - * Lists the metrics configurations for the bucket. - */ - listBucketMetricsConfigurations(callback?: (err: AWSError, data: S3.Types.ListBucketMetricsConfigurationsOutput) => void): Request; - /** - * Returns a list of all buckets owned by the authenticated sender of the request. - */ - listBuckets(callback?: (err: AWSError, data: S3.Types.ListBucketsOutput) => void): Request; - /** - * This operation lists in-progress multipart uploads. - */ - listMultipartUploads(params: S3.Types.ListMultipartUploadsRequest, callback?: (err: AWSError, data: S3.Types.ListMultipartUploadsOutput) => void): Request; - /** - * This operation lists in-progress multipart uploads. - */ - listMultipartUploads(callback?: (err: AWSError, data: S3.Types.ListMultipartUploadsOutput) => void): Request; - /** - * Returns metadata about all of the versions of objects in a bucket. - */ - listObjectVersions(params: S3.Types.ListObjectVersionsRequest, callback?: (err: AWSError, data: S3.Types.ListObjectVersionsOutput) => void): Request; - /** - * Returns metadata about all of the versions of objects in a bucket. - */ - listObjectVersions(callback?: (err: AWSError, data: S3.Types.ListObjectVersionsOutput) => void): Request; - /** - * Returns some or all (up to 1000) of the objects in a bucket. You can use the request parameters as selection criteria to return a subset of the objects in a bucket. - */ - listObjects(params: S3.Types.ListObjectsRequest, callback?: (err: AWSError, data: S3.Types.ListObjectsOutput) => void): Request; - /** - * Returns some or all (up to 1000) of the objects in a bucket. You can use the request parameters as selection criteria to return a subset of the objects in a bucket. - */ - listObjects(callback?: (err: AWSError, data: S3.Types.ListObjectsOutput) => void): Request; - /** - * Returns some or all (up to 1000) of the objects in a bucket. You can use the request parameters as selection criteria to return a subset of the objects in a bucket. Note: ListObjectsV2 is the revised List Objects API and we recommend you use this revised API for new application development. - */ - listObjectsV2(params: S3.Types.ListObjectsV2Request, callback?: (err: AWSError, data: S3.Types.ListObjectsV2Output) => void): Request; - /** - * Returns some or all (up to 1000) of the objects in a bucket. You can use the request parameters as selection criteria to return a subset of the objects in a bucket. Note: ListObjectsV2 is the revised List Objects API and we recommend you use this revised API for new application development. - */ - listObjectsV2(callback?: (err: AWSError, data: S3.Types.ListObjectsV2Output) => void): Request; - /** - * Lists the parts that have been uploaded for a specific multipart upload. - */ - listParts(params: S3.Types.ListPartsRequest, callback?: (err: AWSError, data: S3.Types.ListPartsOutput) => void): Request; - /** - * Lists the parts that have been uploaded for a specific multipart upload. - */ - listParts(callback?: (err: AWSError, data: S3.Types.ListPartsOutput) => void): Request; - /** - * Sets the accelerate configuration of an existing bucket. - */ - putBucketAccelerateConfiguration(params: S3.Types.PutBucketAccelerateConfigurationRequest, callback?: (err: AWSError, data: {}) => void): Request<{}, AWSError>; - /** - * Sets the accelerate configuration of an existing bucket. - */ - putBucketAccelerateConfiguration(callback?: (err: AWSError, data: {}) => void): Request<{}, AWSError>; - /** - * Sets the permissions on a bucket using access control lists (ACL). - */ - putBucketAcl(params: S3.Types.PutBucketAclRequest, callback?: (err: AWSError, data: {}) => void): Request<{}, AWSError>; - /** - * Sets the permissions on a bucket using access control lists (ACL). - */ - putBucketAcl(callback?: (err: AWSError, data: {}) => void): Request<{}, AWSError>; - /** - * Sets an analytics configuration for the bucket (specified by the analytics configuration ID). - */ - putBucketAnalyticsConfiguration(params: S3.Types.PutBucketAnalyticsConfigurationRequest, callback?: (err: AWSError, data: {}) => void): Request<{}, AWSError>; - /** - * Sets an analytics configuration for the bucket (specified by the analytics configuration ID). - */ - putBucketAnalyticsConfiguration(callback?: (err: AWSError, data: {}) => void): Request<{}, AWSError>; - /** - * Sets the cors configuration for a bucket. - */ - putBucketCors(params: S3.Types.PutBucketCorsRequest, callback?: (err: AWSError, data: {}) => void): Request<{}, AWSError>; - /** - * Sets the cors configuration for a bucket. - */ - putBucketCors(callback?: (err: AWSError, data: {}) => void): Request<{}, AWSError>; - /** - * Adds an inventory configuration (identified by the inventory ID) from the bucket. - */ - putBucketInventoryConfiguration(params: S3.Types.PutBucketInventoryConfigurationRequest, callback?: (err: AWSError, data: {}) => void): Request<{}, AWSError>; - /** - * Adds an inventory configuration (identified by the inventory ID) from the bucket. - */ - putBucketInventoryConfiguration(callback?: (err: AWSError, data: {}) => void): Request<{}, AWSError>; - /** - * Deprecated, see the PutBucketLifecycleConfiguration operation. - */ - putBucketLifecycle(params: S3.Types.PutBucketLifecycleRequest, callback?: (err: AWSError, data: {}) => void): Request<{}, AWSError>; - /** - * Deprecated, see the PutBucketLifecycleConfiguration operation. - */ - putBucketLifecycle(callback?: (err: AWSError, data: {}) => void): Request<{}, AWSError>; - /** - * Sets lifecycle configuration for your bucket. If a lifecycle configuration exists, it replaces it. - */ - putBucketLifecycleConfiguration(params: S3.Types.PutBucketLifecycleConfigurationRequest, callback?: (err: AWSError, data: {}) => void): Request<{}, AWSError>; - /** - * Sets lifecycle configuration for your bucket. If a lifecycle configuration exists, it replaces it. - */ - putBucketLifecycleConfiguration(callback?: (err: AWSError, data: {}) => void): Request<{}, AWSError>; - /** - * Set the logging parameters for a bucket and to specify permissions for who can view and modify the logging parameters. To set the logging status of a bucket, you must be the bucket owner. - */ - putBucketLogging(params: S3.Types.PutBucketLoggingRequest, callback?: (err: AWSError, data: {}) => void): Request<{}, AWSError>; - /** - * Set the logging parameters for a bucket and to specify permissions for who can view and modify the logging parameters. To set the logging status of a bucket, you must be the bucket owner. - */ - putBucketLogging(callback?: (err: AWSError, data: {}) => void): Request<{}, AWSError>; - /** - * Sets a metrics configuration (specified by the metrics configuration ID) for the bucket. - */ - putBucketMetricsConfiguration(params: S3.Types.PutBucketMetricsConfigurationRequest, callback?: (err: AWSError, data: {}) => void): Request<{}, AWSError>; - /** - * Sets a metrics configuration (specified by the metrics configuration ID) for the bucket. - */ - putBucketMetricsConfiguration(callback?: (err: AWSError, data: {}) => void): Request<{}, AWSError>; - /** - * Deprecated, see the PutBucketNotificationConfiguraiton operation. - */ - putBucketNotification(params: S3.Types.PutBucketNotificationRequest, callback?: (err: AWSError, data: {}) => void): Request<{}, AWSError>; - /** - * Deprecated, see the PutBucketNotificationConfiguraiton operation. - */ - putBucketNotification(callback?: (err: AWSError, data: {}) => void): Request<{}, AWSError>; - /** - * Enables notifications of specified events for a bucket. - */ - putBucketNotificationConfiguration(params: S3.Types.PutBucketNotificationConfigurationRequest, callback?: (err: AWSError, data: {}) => void): Request<{}, AWSError>; - /** - * Enables notifications of specified events for a bucket. - */ - putBucketNotificationConfiguration(callback?: (err: AWSError, data: {}) => void): Request<{}, AWSError>; - /** - * Replaces a policy on a bucket. If the bucket already has a policy, the one in this request completely replaces it. - */ - putBucketPolicy(params: S3.Types.PutBucketPolicyRequest, callback?: (err: AWSError, data: {}) => void): Request<{}, AWSError>; - /** - * Replaces a policy on a bucket. If the bucket already has a policy, the one in this request completely replaces it. - */ - putBucketPolicy(callback?: (err: AWSError, data: {}) => void): Request<{}, AWSError>; - /** - * Creates a new replication configuration (or replaces an existing one, if present). - */ - putBucketReplication(params: S3.Types.PutBucketReplicationRequest, callback?: (err: AWSError, data: {}) => void): Request<{}, AWSError>; - /** - * Creates a new replication configuration (or replaces an existing one, if present). - */ - putBucketReplication(callback?: (err: AWSError, data: {}) => void): Request<{}, AWSError>; - /** - * Sets the request payment configuration for a bucket. By default, the bucket owner pays for downloads from the bucket. This configuration parameter enables the bucket owner (only) to specify that the person requesting the download will be charged for the download. Documentation on requester pays buckets can be found at http://docs.aws.amazon.com/AmazonS3/latest/dev/RequesterPaysBuckets.html - */ - putBucketRequestPayment(params: S3.Types.PutBucketRequestPaymentRequest, callback?: (err: AWSError, data: {}) => void): Request<{}, AWSError>; - /** - * Sets the request payment configuration for a bucket. By default, the bucket owner pays for downloads from the bucket. This configuration parameter enables the bucket owner (only) to specify that the person requesting the download will be charged for the download. Documentation on requester pays buckets can be found at http://docs.aws.amazon.com/AmazonS3/latest/dev/RequesterPaysBuckets.html - */ - putBucketRequestPayment(callback?: (err: AWSError, data: {}) => void): Request<{}, AWSError>; - /** - * Sets the tags for a bucket. - */ - putBucketTagging(params: S3.Types.PutBucketTaggingRequest, callback?: (err: AWSError, data: {}) => void): Request<{}, AWSError>; - /** - * Sets the tags for a bucket. - */ - putBucketTagging(callback?: (err: AWSError, data: {}) => void): Request<{}, AWSError>; - /** - * Sets the versioning state of an existing bucket. To set the versioning state, you must be the bucket owner. - */ - putBucketVersioning(params: S3.Types.PutBucketVersioningRequest, callback?: (err: AWSError, data: {}) => void): Request<{}, AWSError>; - /** - * Sets the versioning state of an existing bucket. To set the versioning state, you must be the bucket owner. - */ - putBucketVersioning(callback?: (err: AWSError, data: {}) => void): Request<{}, AWSError>; - /** - * Set the website configuration for a bucket. - */ - putBucketWebsite(params: S3.Types.PutBucketWebsiteRequest, callback?: (err: AWSError, data: {}) => void): Request<{}, AWSError>; - /** - * Set the website configuration for a bucket. - */ - putBucketWebsite(callback?: (err: AWSError, data: {}) => void): Request<{}, AWSError>; - /** - * Adds an object to a bucket. - */ - putObject(params: S3.Types.PutObjectRequest, callback?: (err: AWSError, data: S3.Types.PutObjectOutput) => void): Request; - /** - * Adds an object to a bucket. - */ - putObject(callback?: (err: AWSError, data: S3.Types.PutObjectOutput) => void): Request; - /** - * uses the acl subresource to set the access control list (ACL) permissions for an object that already exists in a bucket - */ - putObjectAcl(params: S3.Types.PutObjectAclRequest, callback?: (err: AWSError, data: S3.Types.PutObjectAclOutput) => void): Request; - /** - * uses the acl subresource to set the access control list (ACL) permissions for an object that already exists in a bucket - */ - putObjectAcl(callback?: (err: AWSError, data: S3.Types.PutObjectAclOutput) => void): Request; - /** - * Sets the supplied tag-set to an object that already exists in a bucket - */ - putObjectTagging(params: S3.Types.PutObjectTaggingRequest, callback?: (err: AWSError, data: S3.Types.PutObjectTaggingOutput) => void): Request; - /** - * Sets the supplied tag-set to an object that already exists in a bucket - */ - putObjectTagging(callback?: (err: AWSError, data: S3.Types.PutObjectTaggingOutput) => void): Request; - /** - * Restores an archived copy of an object back into Amazon S3 - */ - restoreObject(params: S3.Types.RestoreObjectRequest, callback?: (err: AWSError, data: S3.Types.RestoreObjectOutput) => void): Request; - /** - * Restores an archived copy of an object back into Amazon S3 - */ - restoreObject(callback?: (err: AWSError, data: S3.Types.RestoreObjectOutput) => void): Request; - /** - * Uploads a part in a multipart upload.Note: After you initiate multipart upload and upload one or more parts, you must either complete or abort multipart upload in order to stop getting charged for storage of the uploaded parts. Only after you either complete or abort multipart upload, Amazon S3 frees up the parts storage and stops charging you for the parts storage. - */ - uploadPart(params: S3.Types.UploadPartRequest, callback?: (err: AWSError, data: S3.Types.UploadPartOutput) => void): Request; - /** - * Uploads a part in a multipart upload.Note: After you initiate multipart upload and upload one or more parts, you must either complete or abort multipart upload in order to stop getting charged for storage of the uploaded parts. Only after you either complete or abort multipart upload, Amazon S3 frees up the parts storage and stops charging you for the parts storage. - */ - uploadPart(callback?: (err: AWSError, data: S3.Types.UploadPartOutput) => void): Request; - /** - * Uploads a part by copying data from an existing object as data source. - */ - uploadPartCopy(params: S3.Types.UploadPartCopyRequest, callback?: (err: AWSError, data: S3.Types.UploadPartCopyOutput) => void): Request; - /** - * Uploads a part by copying data from an existing object as data source. - */ - uploadPartCopy(callback?: (err: AWSError, data: S3.Types.UploadPartCopyOutput) => void): Request; - /** - * Waits for the bucketExists state by periodically calling the underlying S3.headBucketoperation every 5 seconds (at most 20 times). - */ - waitFor(state: "bucketExists", params: S3.Types.HeadBucketRequest, callback?: (err: AWSError, data: {}) => void): Request<{}, AWSError>; - /** - * Waits for the bucketExists state by periodically calling the underlying S3.headBucketoperation every 5 seconds (at most 20 times). - */ - waitFor(state: "bucketExists", callback?: (err: AWSError, data: {}) => void): Request<{}, AWSError>; - /** - * Waits for the bucketNotExists state by periodically calling the underlying S3.headBucketoperation every 5 seconds (at most 20 times). - */ - waitFor(state: "bucketNotExists", params: S3.Types.HeadBucketRequest, callback?: (err: AWSError, data: {}) => void): Request<{}, AWSError>; - /** - * Waits for the bucketNotExists state by periodically calling the underlying S3.headBucketoperation every 5 seconds (at most 20 times). - */ - waitFor(state: "bucketNotExists", callback?: (err: AWSError, data: {}) => void): Request<{}, AWSError>; - /** - * Waits for the objectExists state by periodically calling the underlying S3.headObjectoperation every 5 seconds (at most 20 times). - */ - waitFor(state: "objectExists", params: S3.Types.HeadObjectRequest, callback?: (err: AWSError, data: S3.Types.HeadObjectOutput) => void): Request; - /** - * Waits for the objectExists state by periodically calling the underlying S3.headObjectoperation every 5 seconds (at most 20 times). - */ - waitFor(state: "objectExists", callback?: (err: AWSError, data: S3.Types.HeadObjectOutput) => void): Request; - /** - * Waits for the objectNotExists state by periodically calling the underlying S3.headObjectoperation every 5 seconds (at most 20 times). - */ - waitFor(state: "objectNotExists", params: S3.Types.HeadObjectRequest, callback?: (err: AWSError, data: S3.Types.HeadObjectOutput) => void): Request; - /** - * Waits for the objectNotExists state by periodically calling the underlying S3.headObjectoperation every 5 seconds (at most 20 times). - */ - waitFor(state: "objectNotExists", callback?: (err: AWSError, data: S3.Types.HeadObjectOutput) => void): Request; -} -declare namespace S3 { - export import ManagedUpload = managed_upload; - export import PresignedPost = presigned_post; -} -declare namespace S3 { - export type AbortDate = Date; - export interface AbortIncompleteMultipartUpload { - /** - * Indicates the number of days that must pass since initiation for Lifecycle to abort an Incomplete Multipart Upload. - */ - DaysAfterInitiation?: DaysAfterInitiation; - } - export interface AbortMultipartUploadOutput { - RequestCharged?: RequestCharged; - } - export interface AbortMultipartUploadRequest { - Bucket: BucketName; - Key: ObjectKey; - UploadId: MultipartUploadId; - RequestPayer?: RequestPayer; - } - export type AbortRuleId = string; - export interface AccelerateConfiguration { - /** - * The accelerate configuration of the bucket. - */ - Status?: BucketAccelerateStatus; - } - export type AcceptRanges = string; - export interface AccessControlPolicy { - /** - * A list of grants. - */ - Grants?: Grants; - Owner?: Owner; - } - export type AccountId = string; - export type AllowedHeader = string; - export type AllowedHeaders = AllowedHeader[]; - export type AllowedMethod = string; - export type AllowedMethods = AllowedMethod[]; - export type AllowedOrigin = string; - export type AllowedOrigins = AllowedOrigin[]; - export interface AnalyticsAndOperator { - /** - * The prefix to use when evaluating an AND predicate. - */ - Prefix?: Prefix; - /** - * The list of tags to use when evaluating an AND predicate. - */ - Tags?: TagSet; - } - export interface AnalyticsConfiguration { - /** - * The identifier used to represent an analytics configuration. - */ - Id: AnalyticsId; - /** - * The filter used to describe a set of objects for analyses. A filter must have exactly one prefix, one tag, or one conjunction (AnalyticsAndOperator). If no filter is provided, all objects will be considered in any analysis. - */ - Filter?: AnalyticsFilter; - /** - * If present, it indicates that data related to access patterns will be collected and made available to analyze the tradeoffs between different storage classes. - */ - StorageClassAnalysis: StorageClassAnalysis; - } - export type AnalyticsConfigurationList = AnalyticsConfiguration[]; - export interface AnalyticsExportDestination { - /** - * A destination signifying output to an S3 bucket. - */ - S3BucketDestination: AnalyticsS3BucketDestination; - } - export interface AnalyticsFilter { - /** - * The prefix to use when evaluating an analytics filter. - */ - Prefix?: Prefix; - /** - * The tag to use when evaluating an analytics filter. - */ - Tag?: Tag; - /** - * A conjunction (logical AND) of predicates, which is used in evaluating an analytics filter. The operator must have at least two predicates. - */ - And?: AnalyticsAndOperator; - } - export type AnalyticsId = string; - export interface AnalyticsS3BucketDestination { - /** - * The file format used when exporting data to Amazon S3. - */ - Format: AnalyticsS3ExportFileFormat; - /** - * The account ID that owns the destination bucket. If no account ID is provided, the owner will not be validated prior to exporting data. - */ - BucketAccountId?: AccountId; - /** - * The Amazon resource name (ARN) of the bucket to which data is exported. - */ - Bucket: BucketName; - /** - * The prefix to use when exporting data. The exported data begins with this prefix. - */ - Prefix?: Prefix; - } - export type AnalyticsS3ExportFileFormat = "CSV"|string; - export type Body = Buffer|Uint8Array|Blob|string|Readable; - export interface Bucket { - /** - * The name of the bucket. - */ - Name?: BucketName; - /** - * Date the bucket was created. - */ - CreationDate?: CreationDate; - } - export type BucketAccelerateStatus = "Enabled"|"Suspended"|string; - export type BucketCannedACL = "private"|"public-read"|"public-read-write"|"authenticated-read"|string; - export interface BucketLifecycleConfiguration { - Rules: LifecycleRules; - } - export type BucketLocationConstraint = "EU"|"eu-west-1"|"us-west-1"|"us-west-2"|"ap-south-1"|"ap-southeast-1"|"ap-southeast-2"|"ap-northeast-1"|"sa-east-1"|"cn-north-1"|"eu-central-1"|string; - export interface BucketLoggingStatus { - LoggingEnabled?: LoggingEnabled; - } - export type BucketLogsPermission = "FULL_CONTROL"|"READ"|"WRITE"|string; - export type BucketName = string; - export type BucketVersioningStatus = "Enabled"|"Suspended"|string; - export type Buckets = Bucket[]; - export interface CORSConfiguration { - CORSRules: CORSRules; - } - export interface CORSRule { - /** - * Specifies which headers are allowed in a pre-flight OPTIONS request. - */ - AllowedHeaders?: AllowedHeaders; - /** - * Identifies HTTP methods that the domain/origin specified in the rule is allowed to execute. - */ - AllowedMethods: AllowedMethods; - /** - * One or more origins you want customers to be able to access the bucket from. - */ - AllowedOrigins: AllowedOrigins; - /** - * One or more headers in the response that you want customers to be able to access from their applications (for example, from a JavaScript XMLHttpRequest object). - */ - ExposeHeaders?: ExposeHeaders; - /** - * The time in seconds that your browser is to cache the preflight response for the specified resource. - */ - MaxAgeSeconds?: MaxAgeSeconds; - } - export type CORSRules = CORSRule[]; - export type CacheControl = string; - export type CloudFunction = string; - export interface CloudFunctionConfiguration { - Id?: NotificationId; - Event?: Event; - Events?: EventList; - CloudFunction?: CloudFunction; - InvocationRole?: CloudFunctionInvocationRole; - } - export type CloudFunctionInvocationRole = string; - export type Code = string; - export interface CommonPrefix { - Prefix?: Prefix; - } - export type CommonPrefixList = CommonPrefix[]; - export interface CompleteMultipartUploadOutput { - Location?: Location; - Bucket?: BucketName; - Key?: ObjectKey; - /** - * If the object expiration is configured, this will contain the expiration date (expiry-date) and rule ID (rule-id). The value of rule-id is URL encoded. - */ - Expiration?: Expiration; - /** - * Entity tag of the object. - */ - ETag?: ETag; - /** - * The Server-side encryption algorithm used when storing this object in S3 (e.g., AES256, aws:kms). - */ - ServerSideEncryption?: ServerSideEncryption; - /** - * Version of the object. - */ - VersionId?: ObjectVersionId; - /** - * If present, specifies the ID of the AWS Key Management Service (KMS) master encryption key that was used for the object. - */ - SSEKMSKeyId?: SSEKMSKeyId; - RequestCharged?: RequestCharged; - } - export interface CompleteMultipartUploadRequest { - Bucket: BucketName; - Key: ObjectKey; - MultipartUpload?: CompletedMultipartUpload; - UploadId: MultipartUploadId; - RequestPayer?: RequestPayer; - } - export interface CompletedMultipartUpload { - Parts?: CompletedPartList; - } - export interface CompletedPart { - /** - * Entity tag returned when the part was uploaded. - */ - ETag?: ETag; - /** - * Part number that identifies the part. This is a positive integer between 1 and 10,000. - */ - PartNumber?: PartNumber; - } - export type CompletedPartList = CompletedPart[]; - export interface Condition { - /** - * The HTTP error code when the redirect is applied. In the event of an error, if the error code equals this value, then the specified redirect is applied. Required when parent element Condition is specified and sibling KeyPrefixEquals is not specified. If both are specified, then both must be true for the redirect to be applied. - */ - HttpErrorCodeReturnedEquals?: HttpErrorCodeReturnedEquals; - /** - * The object key name prefix when the redirect is applied. For example, to redirect requests for ExamplePage.html, the key prefix will be ExamplePage.html. To redirect request for all pages with the prefix docs/, the key prefix will be /docs, which identifies all objects in the docs/ folder. Required when the parent element Condition is specified and sibling HttpErrorCodeReturnedEquals is not specified. If both conditions are specified, both must be true for the redirect to be applied. - */ - KeyPrefixEquals?: KeyPrefixEquals; - } - export type ContentDisposition = string; - export type ContentEncoding = string; - export type ContentLanguage = string; - export type ContentLength = number; - export type ContentMD5 = string; - export type ContentRange = string; - export type ContentType = string; - export interface CopyObjectOutput { - CopyObjectResult?: CopyObjectResult; - /** - * If the object expiration is configured, the response includes this header. - */ - Expiration?: Expiration; - CopySourceVersionId?: CopySourceVersionId; - /** - * Version ID of the newly created copy. - */ - VersionId?: ObjectVersionId; - /** - * The Server-side encryption algorithm used when storing this object in S3 (e.g., AES256, aws:kms). - */ - ServerSideEncryption?: ServerSideEncryption; - /** - * If server-side encryption with a customer-provided encryption key was requested, the response will include this header confirming the encryption algorithm used. - */ - SSECustomerAlgorithm?: SSECustomerAlgorithm; - /** - * If server-side encryption with a customer-provided encryption key was requested, the response will include this header to provide round trip message integrity verification of the customer-provided encryption key. - */ - SSECustomerKeyMD5?: SSECustomerKeyMD5; - /** - * If present, specifies the ID of the AWS Key Management Service (KMS) master encryption key that was used for the object. - */ - SSEKMSKeyId?: SSEKMSKeyId; - RequestCharged?: RequestCharged; - } - export interface CopyObjectRequest { - /** - * The canned ACL to apply to the object. - */ - ACL?: ObjectCannedACL; - Bucket: BucketName; - /** - * Specifies caching behavior along the request/reply chain. - */ - CacheControl?: CacheControl; - /** - * Specifies presentational information for the object. - */ - ContentDisposition?: ContentDisposition; - /** - * Specifies what content encodings have been applied to the object and thus what decoding mechanisms must be applied to obtain the media-type referenced by the Content-Type header field. - */ - ContentEncoding?: ContentEncoding; - /** - * The language the content is in. - */ - ContentLanguage?: ContentLanguage; - /** - * A standard MIME type describing the format of the object data. - */ - ContentType?: ContentType; - /** - * The name of the source bucket and key name of the source object, separated by a slash (/). Must be URL-encoded. - */ - CopySource: CopySource; - /** - * Copies the object if its entity tag (ETag) matches the specified tag. - */ - CopySourceIfMatch?: CopySourceIfMatch; - /** - * Copies the object if it has been modified since the specified time. - */ - CopySourceIfModifiedSince?: CopySourceIfModifiedSince; - /** - * Copies the object if its entity tag (ETag) is different than the specified ETag. - */ - CopySourceIfNoneMatch?: CopySourceIfNoneMatch; - /** - * Copies the object if it hasn't been modified since the specified time. - */ - CopySourceIfUnmodifiedSince?: CopySourceIfUnmodifiedSince; - /** - * The date and time at which the object is no longer cacheable. - */ - Expires?: Expires; - /** - * Gives the grantee READ, READ_ACP, and WRITE_ACP permissions on the object. - */ - GrantFullControl?: GrantFullControl; - /** - * Allows grantee to read the object data and its metadata. - */ - GrantRead?: GrantRead; - /** - * Allows grantee to read the object ACL. - */ - GrantReadACP?: GrantReadACP; - /** - * Allows grantee to write the ACL for the applicable object. - */ - GrantWriteACP?: GrantWriteACP; - Key: ObjectKey; - /** - * A map of metadata to store with the object in S3. - */ - Metadata?: Metadata; - /** - * Specifies whether the metadata is copied from the source object or replaced with metadata provided in the request. - */ - MetadataDirective?: MetadataDirective; - /** - * Specifies whether the object tag-set are copied from the source object or replaced with tag-set provided in the request. - */ - TaggingDirective?: TaggingDirective; - /** - * The Server-side encryption algorithm used when storing this object in S3 (e.g., AES256, aws:kms). - */ - ServerSideEncryption?: ServerSideEncryption; - /** - * The type of storage to use for the object. Defaults to 'STANDARD'. - */ - StorageClass?: StorageClass; - /** - * If the bucket is configured as a website, redirects requests for this object to another object in the same bucket or to an external URL. Amazon S3 stores the value of this header in the object metadata. - */ - WebsiteRedirectLocation?: WebsiteRedirectLocation; - /** - * Specifies the algorithm to use to when encrypting the object (e.g., AES256). - */ - SSECustomerAlgorithm?: SSECustomerAlgorithm; - /** - * Specifies the customer-provided encryption key for Amazon S3 to use in encrypting data. This value is used to store the object and then it is discarded; Amazon does not store the encryption key. The key must be appropriate for use with the algorithm specified in the x-amz-server-side​-encryption​-customer-algorithm header. - */ - SSECustomerKey?: SSECustomerKey; - /** - * Specifies the 128-bit MD5 digest of the encryption key according to RFC 1321. Amazon S3 uses this header for a message integrity check to ensure the encryption key was transmitted without error. - */ - SSECustomerKeyMD5?: SSECustomerKeyMD5; - /** - * Specifies the AWS KMS key ID to use for object encryption. All GET and PUT requests for an object protected by AWS KMS will fail if not made via SSL or using SigV4. Documentation on configuring any of the officially supported AWS SDKs and CLI can be found at http://docs.aws.amazon.com/AmazonS3/latest/dev/UsingAWSSDK.html#specify-signature-version - */ - SSEKMSKeyId?: SSEKMSKeyId; - /** - * Specifies the algorithm to use when decrypting the source object (e.g., AES256). - */ - CopySourceSSECustomerAlgorithm?: CopySourceSSECustomerAlgorithm; - /** - * Specifies the customer-provided encryption key for Amazon S3 to use to decrypt the source object. The encryption key provided in this header must be one that was used when the source object was created. - */ - CopySourceSSECustomerKey?: CopySourceSSECustomerKey; - /** - * Specifies the 128-bit MD5 digest of the encryption key according to RFC 1321. Amazon S3 uses this header for a message integrity check to ensure the encryption key was transmitted without error. - */ - CopySourceSSECustomerKeyMD5?: CopySourceSSECustomerKeyMD5; - RequestPayer?: RequestPayer; - /** - * The tag-set for the object destination object this value must be used in conjunction with the TaggingDirective. The tag-set must be encoded as URL Query parameters - */ - Tagging?: TaggingHeader; - } - export interface CopyObjectResult { - ETag?: ETag; - LastModified?: LastModified; - } - export interface CopyPartResult { - /** - * Entity tag of the object. - */ - ETag?: ETag; - /** - * Date and time at which the object was uploaded. - */ - LastModified?: LastModified; - } - export type CopySource = string; - export type CopySourceIfMatch = string; - export type CopySourceIfModifiedSince = Date; - export type CopySourceIfNoneMatch = string; - export type CopySourceIfUnmodifiedSince = Date; - export type CopySourceRange = string; - export type CopySourceSSECustomerAlgorithm = string; - export type CopySourceSSECustomerKey = Buffer|Uint8Array|Blob|string; - export type CopySourceSSECustomerKeyMD5 = string; - export type CopySourceVersionId = string; - export interface CreateBucketConfiguration { - /** - * Specifies the region where the bucket will be created. If you don't specify a region, the bucket will be created in US Standard. - */ - LocationConstraint?: BucketLocationConstraint; - } - export interface CreateBucketOutput { - Location?: Location; - } - export interface CreateBucketRequest { - /** - * The canned ACL to apply to the bucket. - */ - ACL?: BucketCannedACL; - Bucket: BucketName; - CreateBucketConfiguration?: CreateBucketConfiguration; - /** - * Allows grantee the read, write, read ACP, and write ACP permissions on the bucket. - */ - GrantFullControl?: GrantFullControl; - /** - * Allows grantee to list the objects in the bucket. - */ - GrantRead?: GrantRead; - /** - * Allows grantee to read the bucket ACL. - */ - GrantReadACP?: GrantReadACP; - /** - * Allows grantee to create, overwrite, and delete any object in the bucket. - */ - GrantWrite?: GrantWrite; - /** - * Allows grantee to write the ACL for the applicable bucket. - */ - GrantWriteACP?: GrantWriteACP; - } - export interface CreateMultipartUploadOutput { - /** - * Date when multipart upload will become eligible for abort operation by lifecycle. - */ - AbortDate?: AbortDate; - /** - * Id of the lifecycle rule that makes a multipart upload eligible for abort operation. - */ - AbortRuleId?: AbortRuleId; - /** - * Name of the bucket to which the multipart upload was initiated. - */ - Bucket?: BucketName; - /** - * Object key for which the multipart upload was initiated. - */ - Key?: ObjectKey; - /** - * ID for the initiated multipart upload. - */ - UploadId?: MultipartUploadId; - /** - * The Server-side encryption algorithm used when storing this object in S3 (e.g., AES256, aws:kms). - */ - ServerSideEncryption?: ServerSideEncryption; - /** - * If server-side encryption with a customer-provided encryption key was requested, the response will include this header confirming the encryption algorithm used. - */ - SSECustomerAlgorithm?: SSECustomerAlgorithm; - /** - * If server-side encryption with a customer-provided encryption key was requested, the response will include this header to provide round trip message integrity verification of the customer-provided encryption key. - */ - SSECustomerKeyMD5?: SSECustomerKeyMD5; - /** - * If present, specifies the ID of the AWS Key Management Service (KMS) master encryption key that was used for the object. - */ - SSEKMSKeyId?: SSEKMSKeyId; - RequestCharged?: RequestCharged; - } - export interface CreateMultipartUploadRequest { - /** - * The canned ACL to apply to the object. - */ - ACL?: ObjectCannedACL; - Bucket: BucketName; - /** - * Specifies caching behavior along the request/reply chain. - */ - CacheControl?: CacheControl; - /** - * Specifies presentational information for the object. - */ - ContentDisposition?: ContentDisposition; - /** - * Specifies what content encodings have been applied to the object and thus what decoding mechanisms must be applied to obtain the media-type referenced by the Content-Type header field. - */ - ContentEncoding?: ContentEncoding; - /** - * The language the content is in. - */ - ContentLanguage?: ContentLanguage; - /** - * A standard MIME type describing the format of the object data. - */ - ContentType?: ContentType; - /** - * The date and time at which the object is no longer cacheable. - */ - Expires?: Expires; - /** - * Gives the grantee READ, READ_ACP, and WRITE_ACP permissions on the object. - */ - GrantFullControl?: GrantFullControl; - /** - * Allows grantee to read the object data and its metadata. - */ - GrantRead?: GrantRead; - /** - * Allows grantee to read the object ACL. - */ - GrantReadACP?: GrantReadACP; - /** - * Allows grantee to write the ACL for the applicable object. - */ - GrantWriteACP?: GrantWriteACP; - Key: ObjectKey; - /** - * A map of metadata to store with the object in S3. - */ - Metadata?: Metadata; - /** - * The Server-side encryption algorithm used when storing this object in S3 (e.g., AES256, aws:kms). - */ - ServerSideEncryption?: ServerSideEncryption; - /** - * The type of storage to use for the object. Defaults to 'STANDARD'. - */ - StorageClass?: StorageClass; - /** - * If the bucket is configured as a website, redirects requests for this object to another object in the same bucket or to an external URL. Amazon S3 stores the value of this header in the object metadata. - */ - WebsiteRedirectLocation?: WebsiteRedirectLocation; - /** - * Specifies the algorithm to use to when encrypting the object (e.g., AES256). - */ - SSECustomerAlgorithm?: SSECustomerAlgorithm; - /** - * Specifies the customer-provided encryption key for Amazon S3 to use in encrypting data. This value is used to store the object and then it is discarded; Amazon does not store the encryption key. The key must be appropriate for use with the algorithm specified in the x-amz-server-side​-encryption​-customer-algorithm header. - */ - SSECustomerKey?: SSECustomerKey; - /** - * Specifies the 128-bit MD5 digest of the encryption key according to RFC 1321. Amazon S3 uses this header for a message integrity check to ensure the encryption key was transmitted without error. - */ - SSECustomerKeyMD5?: SSECustomerKeyMD5; - /** - * Specifies the AWS KMS key ID to use for object encryption. All GET and PUT requests for an object protected by AWS KMS will fail if not made via SSL or using SigV4. Documentation on configuring any of the officially supported AWS SDKs and CLI can be found at http://docs.aws.amazon.com/AmazonS3/latest/dev/UsingAWSSDK.html#specify-signature-version - */ - SSEKMSKeyId?: SSEKMSKeyId; - RequestPayer?: RequestPayer; - /** - * The tag-set for the object. The tag-set must be encoded as URL Query parameters - */ - Tagging?: TaggingHeader; - } - export type CreationDate = Date; - export type _Date = Date; - export type Days = number; - export type DaysAfterInitiation = number; - export interface Delete { - Objects: ObjectIdentifierList; - /** - * Element to enable quiet mode for the request. When you add this element, you must set its value to true. - */ - Quiet?: Quiet; - } - export interface DeleteBucketAnalyticsConfigurationRequest { - /** - * The name of the bucket from which an analytics configuration is deleted. - */ - Bucket: BucketName; - /** - * The identifier used to represent an analytics configuration. - */ - Id: AnalyticsId; - } - export interface DeleteBucketCorsRequest { - Bucket: BucketName; - } - export interface DeleteBucketInventoryConfigurationRequest { - /** - * The name of the bucket containing the inventory configuration to delete. - */ - Bucket: BucketName; - /** - * The ID used to identify the inventory configuration. - */ - Id: InventoryId; - } - export interface DeleteBucketLifecycleRequest { - Bucket: BucketName; - } - export interface DeleteBucketMetricsConfigurationRequest { - /** - * The name of the bucket containing the metrics configuration to delete. - */ - Bucket: BucketName; - /** - * The ID used to identify the metrics configuration. - */ - Id: MetricsId; - } - export interface DeleteBucketPolicyRequest { - Bucket: BucketName; - } - export interface DeleteBucketReplicationRequest { - Bucket: BucketName; - } - export interface DeleteBucketRequest { - Bucket: BucketName; - } - export interface DeleteBucketTaggingRequest { - Bucket: BucketName; - } - export interface DeleteBucketWebsiteRequest { - Bucket: BucketName; - } - export type DeleteMarker = boolean; - export interface DeleteMarkerEntry { - Owner?: Owner; - /** - * The object key. - */ - Key?: ObjectKey; - /** - * Version ID of an object. - */ - VersionId?: ObjectVersionId; - /** - * Specifies whether the object is (true) or is not (false) the latest version of an object. - */ - IsLatest?: IsLatest; - /** - * Date and time the object was last modified. - */ - LastModified?: LastModified; - } - export type DeleteMarkerVersionId = string; - export type DeleteMarkers = DeleteMarkerEntry[]; - export interface DeleteObjectOutput { - /** - * Specifies whether the versioned object that was permanently deleted was (true) or was not (false) a delete marker. - */ - DeleteMarker?: DeleteMarker; - /** - * Returns the version ID of the delete marker created as a result of the DELETE operation. - */ - VersionId?: ObjectVersionId; - RequestCharged?: RequestCharged; - } - export interface DeleteObjectRequest { - Bucket: BucketName; - Key: ObjectKey; - /** - * The concatenation of the authentication device's serial number, a space, and the value that is displayed on your authentication device. - */ - MFA?: MFA; - /** - * VersionId used to reference a specific version of the object. - */ - VersionId?: ObjectVersionId; - RequestPayer?: RequestPayer; - } - export interface DeleteObjectTaggingOutput { - /** - * The versionId of the object the tag-set was removed from. - */ - VersionId?: ObjectVersionId; - } - export interface DeleteObjectTaggingRequest { - Bucket: BucketName; - Key: ObjectKey; - /** - * The versionId of the object that the tag-set will be removed from. - */ - VersionId?: ObjectVersionId; - } - export interface DeleteObjectsOutput { - Deleted?: DeletedObjects; - RequestCharged?: RequestCharged; - Errors?: Errors; - } - export interface DeleteObjectsRequest { - Bucket: BucketName; - Delete: Delete; - /** - * The concatenation of the authentication device's serial number, a space, and the value that is displayed on your authentication device. - */ - MFA?: MFA; - RequestPayer?: RequestPayer; - } - export interface DeletedObject { - Key?: ObjectKey; - VersionId?: ObjectVersionId; - DeleteMarker?: DeleteMarker; - DeleteMarkerVersionId?: DeleteMarkerVersionId; - } - export type DeletedObjects = DeletedObject[]; - export type Delimiter = string; - export interface Destination { - /** - * Amazon resource name (ARN) of the bucket where you want Amazon S3 to store replicas of the object identified by the rule. - */ - Bucket: BucketName; - /** - * The class of storage used to store the object. - */ - StorageClass?: StorageClass; - } - export type DisplayName = string; - export type ETag = string; - export type EmailAddress = string; - export type EncodingType = "url"|string; - export interface Error { - Key?: ObjectKey; - VersionId?: ObjectVersionId; - Code?: Code; - Message?: Message; - } - export interface ErrorDocument { - /** - * The object key name to use when a 4XX class error occurs. - */ - Key: ObjectKey; - } - export type Errors = Error[]; - export type Event = "s3:ReducedRedundancyLostObject"|"s3:ObjectCreated:*"|"s3:ObjectCreated:Put"|"s3:ObjectCreated:Post"|"s3:ObjectCreated:Copy"|"s3:ObjectCreated:CompleteMultipartUpload"|"s3:ObjectRemoved:*"|"s3:ObjectRemoved:Delete"|"s3:ObjectRemoved:DeleteMarkerCreated"|string; - export type EventList = Event[]; - export type Expiration = string; - export type ExpirationStatus = "Enabled"|"Disabled"|string; - export type ExpiredObjectDeleteMarker = boolean; - export type Expires = Date; - export type ExposeHeader = string; - export type ExposeHeaders = ExposeHeader[]; - export type FetchOwner = boolean; - export interface FilterRule { - /** - * Object key name prefix or suffix identifying one or more objects to which the filtering rule applies. Maximum prefix length can be up to 1,024 characters. Overlapping prefixes and suffixes are not supported. For more information, go to Configuring Event Notifications in the Amazon Simple Storage Service Developer Guide. - */ - Name?: FilterRuleName; - Value?: FilterRuleValue; - } - export type FilterRuleList = FilterRule[]; - export type FilterRuleName = "prefix"|"suffix"|string; - export type FilterRuleValue = string; - export interface GetBucketAccelerateConfigurationOutput { - /** - * The accelerate configuration of the bucket. - */ - Status?: BucketAccelerateStatus; - } - export interface GetBucketAccelerateConfigurationRequest { - /** - * Name of the bucket for which the accelerate configuration is retrieved. - */ - Bucket: BucketName; - } - export interface GetBucketAclOutput { - Owner?: Owner; - /** - * A list of grants. - */ - Grants?: Grants; - } - export interface GetBucketAclRequest { - Bucket: BucketName; - } - export interface GetBucketAnalyticsConfigurationOutput { - /** - * The configuration and any analyses for the analytics filter. - */ - AnalyticsConfiguration?: AnalyticsConfiguration; - } - export interface GetBucketAnalyticsConfigurationRequest { - /** - * The name of the bucket from which an analytics configuration is retrieved. - */ - Bucket: BucketName; - /** - * The identifier used to represent an analytics configuration. - */ - Id: AnalyticsId; - } - export interface GetBucketCorsOutput { - CORSRules?: CORSRules; - } - export interface GetBucketCorsRequest { - Bucket: BucketName; - } - export interface GetBucketInventoryConfigurationOutput { - /** - * Specifies the inventory configuration. - */ - InventoryConfiguration?: InventoryConfiguration; - } - export interface GetBucketInventoryConfigurationRequest { - /** - * The name of the bucket containing the inventory configuration to retrieve. - */ - Bucket: BucketName; - /** - * The ID used to identify the inventory configuration. - */ - Id: InventoryId; - } - export interface GetBucketLifecycleConfigurationOutput { - Rules?: LifecycleRules; - } - export interface GetBucketLifecycleConfigurationRequest { - Bucket: BucketName; - } - export interface GetBucketLifecycleOutput { - Rules?: Rules; - } - export interface GetBucketLifecycleRequest { - Bucket: BucketName; - } - export interface GetBucketLocationOutput { - LocationConstraint?: BucketLocationConstraint; - } - export interface GetBucketLocationRequest { - Bucket: BucketName; - } - export interface GetBucketLoggingOutput { - LoggingEnabled?: LoggingEnabled; - } - export interface GetBucketLoggingRequest { - Bucket: BucketName; - } - export interface GetBucketMetricsConfigurationOutput { - /** - * Specifies the metrics configuration. - */ - MetricsConfiguration?: MetricsConfiguration; - } - export interface GetBucketMetricsConfigurationRequest { - /** - * The name of the bucket containing the metrics configuration to retrieve. - */ - Bucket: BucketName; - /** - * The ID used to identify the metrics configuration. - */ - Id: MetricsId; - } - export interface GetBucketNotificationConfigurationRequest { - /** - * Name of the bucket to get the notification configuration for. - */ - Bucket: BucketName; - } - export interface GetBucketPolicyOutput { - /** - * The bucket policy as a JSON document. - */ - Policy?: Policy; - } - export interface GetBucketPolicyRequest { - Bucket: BucketName; - } - export interface GetBucketReplicationOutput { - ReplicationConfiguration?: ReplicationConfiguration; - } - export interface GetBucketReplicationRequest { - Bucket: BucketName; - } - export interface GetBucketRequestPaymentOutput { - /** - * Specifies who pays for the download and request fees. - */ - Payer?: Payer; - } - export interface GetBucketRequestPaymentRequest { - Bucket: BucketName; - } - export interface GetBucketTaggingOutput { - TagSet: TagSet; - } - export interface GetBucketTaggingRequest { - Bucket: BucketName; - } - export interface GetBucketVersioningOutput { - /** - * The versioning state of the bucket. - */ - Status?: BucketVersioningStatus; - /** - * Specifies whether MFA delete is enabled in the bucket versioning configuration. This element is only returned if the bucket has been configured with MFA delete. If the bucket has never been so configured, this element is not returned. - */ - MFADelete?: MFADeleteStatus; - } - export interface GetBucketVersioningRequest { - Bucket: BucketName; - } - export interface GetBucketWebsiteOutput { - RedirectAllRequestsTo?: RedirectAllRequestsTo; - IndexDocument?: IndexDocument; - ErrorDocument?: ErrorDocument; - RoutingRules?: RoutingRules; - } - export interface GetBucketWebsiteRequest { - Bucket: BucketName; - } - export interface GetObjectAclOutput { - Owner?: Owner; - /** - * A list of grants. - */ - Grants?: Grants; - RequestCharged?: RequestCharged; - } - export interface GetObjectAclRequest { - Bucket: BucketName; - Key: ObjectKey; - /** - * VersionId used to reference a specific version of the object. - */ - VersionId?: ObjectVersionId; - RequestPayer?: RequestPayer; - } - export interface GetObjectOutput { - /** - * Object data. - */ - Body?: Body; - /** - * Specifies whether the object retrieved was (true) or was not (false) a Delete Marker. If false, this response header does not appear in the response. - */ - DeleteMarker?: DeleteMarker; - AcceptRanges?: AcceptRanges; - /** - * If the object expiration is configured (see PUT Bucket lifecycle), the response includes this header. It includes the expiry-date and rule-id key value pairs providing object expiration information. The value of the rule-id is URL encoded. - */ - Expiration?: Expiration; - /** - * Provides information about object restoration operation and expiration time of the restored object copy. - */ - Restore?: Restore; - /** - * Last modified date of the object - */ - LastModified?: LastModified; - /** - * Size of the body in bytes. - */ - ContentLength?: ContentLength; - /** - * An ETag is an opaque identifier assigned by a web server to a specific version of a resource found at a URL - */ - ETag?: ETag; - /** - * This is set to the number of metadata entries not returned in x-amz-meta headers. This can happen if you create metadata using an API like SOAP that supports more flexible metadata than the REST API. For example, using SOAP, you can create metadata whose values are not legal HTTP headers. - */ - MissingMeta?: MissingMeta; - /** - * Version of the object. - */ - VersionId?: ObjectVersionId; - /** - * Specifies caching behavior along the request/reply chain. - */ - CacheControl?: CacheControl; - /** - * Specifies presentational information for the object. - */ - ContentDisposition?: ContentDisposition; - /** - * Specifies what content encodings have been applied to the object and thus what decoding mechanisms must be applied to obtain the media-type referenced by the Content-Type header field. - */ - ContentEncoding?: ContentEncoding; - /** - * The language the content is in. - */ - ContentLanguage?: ContentLanguage; - /** - * The portion of the object returned in the response. - */ - ContentRange?: ContentRange; - /** - * A standard MIME type describing the format of the object data. - */ - ContentType?: ContentType; - /** - * The date and time at which the object is no longer cacheable. - */ - Expires?: Expires; - /** - * If the bucket is configured as a website, redirects requests for this object to another object in the same bucket or to an external URL. Amazon S3 stores the value of this header in the object metadata. - */ - WebsiteRedirectLocation?: WebsiteRedirectLocation; - /** - * The Server-side encryption algorithm used when storing this object in S3 (e.g., AES256, aws:kms). - */ - ServerSideEncryption?: ServerSideEncryption; - /** - * A map of metadata to store with the object in S3. - */ - Metadata?: Metadata; - /** - * If server-side encryption with a customer-provided encryption key was requested, the response will include this header confirming the encryption algorithm used. - */ - SSECustomerAlgorithm?: SSECustomerAlgorithm; - /** - * If server-side encryption with a customer-provided encryption key was requested, the response will include this header to provide round trip message integrity verification of the customer-provided encryption key. - */ - SSECustomerKeyMD5?: SSECustomerKeyMD5; - /** - * If present, specifies the ID of the AWS Key Management Service (KMS) master encryption key that was used for the object. - */ - SSEKMSKeyId?: SSEKMSKeyId; - StorageClass?: StorageClass; - RequestCharged?: RequestCharged; - ReplicationStatus?: ReplicationStatus; - /** - * The count of parts this object has. - */ - PartsCount?: PartsCount; - /** - * The number of tags, if any, on the object. - */ - TagCount?: TagCount; - } - export interface GetObjectRequest { - Bucket: BucketName; - /** - * Return the object only if its entity tag (ETag) is the same as the one specified, otherwise return a 412 (precondition failed). - */ - IfMatch?: IfMatch; - /** - * Return the object only if it has been modified since the specified time, otherwise return a 304 (not modified). - */ - IfModifiedSince?: IfModifiedSince; - /** - * Return the object only if its entity tag (ETag) is different from the one specified, otherwise return a 304 (not modified). - */ - IfNoneMatch?: IfNoneMatch; - /** - * Return the object only if it has not been modified since the specified time, otherwise return a 412 (precondition failed). - */ - IfUnmodifiedSince?: IfUnmodifiedSince; - Key: ObjectKey; - /** - * Downloads the specified range bytes of an object. For more information about the HTTP Range header, go to http://www.w3.org/Protocols/rfc2616/rfc2616-sec14.html#sec14.35. - */ - Range?: Range; - /** - * Sets the Cache-Control header of the response. - */ - ResponseCacheControl?: ResponseCacheControl; - /** - * Sets the Content-Disposition header of the response - */ - ResponseContentDisposition?: ResponseContentDisposition; - /** - * Sets the Content-Encoding header of the response. - */ - ResponseContentEncoding?: ResponseContentEncoding; - /** - * Sets the Content-Language header of the response. - */ - ResponseContentLanguage?: ResponseContentLanguage; - /** - * Sets the Content-Type header of the response. - */ - ResponseContentType?: ResponseContentType; - /** - * Sets the Expires header of the response. - */ - ResponseExpires?: ResponseExpires; - /** - * VersionId used to reference a specific version of the object. - */ - VersionId?: ObjectVersionId; - /** - * Specifies the algorithm to use to when encrypting the object (e.g., AES256). - */ - SSECustomerAlgorithm?: SSECustomerAlgorithm; - /** - * Specifies the customer-provided encryption key for Amazon S3 to use in encrypting data. This value is used to store the object and then it is discarded; Amazon does not store the encryption key. The key must be appropriate for use with the algorithm specified in the x-amz-server-side​-encryption​-customer-algorithm header. - */ - SSECustomerKey?: SSECustomerKey; - /** - * Specifies the 128-bit MD5 digest of the encryption key according to RFC 1321. Amazon S3 uses this header for a message integrity check to ensure the encryption key was transmitted without error. - */ - SSECustomerKeyMD5?: SSECustomerKeyMD5; - RequestPayer?: RequestPayer; - /** - * Part number of the object being read. This is a positive integer between 1 and 10,000. Effectively performs a 'ranged' GET request for the part specified. Useful for downloading just a part of an object. - */ - PartNumber?: PartNumber; - } - export interface GetObjectTaggingOutput { - VersionId?: ObjectVersionId; - TagSet: TagSet; - } - export interface GetObjectTaggingRequest { - Bucket: BucketName; - Key: ObjectKey; - VersionId?: ObjectVersionId; - } - export interface GetObjectTorrentOutput { - Body?: Body; - RequestCharged?: RequestCharged; - } - export interface GetObjectTorrentRequest { - Bucket: BucketName; - Key: ObjectKey; - RequestPayer?: RequestPayer; - } - export interface GlacierJobParameters { - /** - * Glacier retrieval tier at which the restore will be processed. - */ - Tier: Tier; - } - export interface Grant { - Grantee?: Grantee; - /** - * Specifies the permission given to the grantee. - */ - Permission?: Permission; - } - export type GrantFullControl = string; - export type GrantRead = string; - export type GrantReadACP = string; - export type GrantWrite = string; - export type GrantWriteACP = string; - export interface Grantee { - /** - * Screen name of the grantee. - */ - DisplayName?: DisplayName; - /** - * Email address of the grantee. - */ - EmailAddress?: EmailAddress; - /** - * The canonical user ID of the grantee. - */ - ID?: ID; - /** - * Type of grantee - */ - Type: Type; - /** - * URI of the grantee group. - */ - URI?: URI; - } - export type Grants = Grant[]; - export interface HeadBucketRequest { - Bucket: BucketName; - } - export interface HeadObjectOutput { - /** - * Specifies whether the object retrieved was (true) or was not (false) a Delete Marker. If false, this response header does not appear in the response. - */ - DeleteMarker?: DeleteMarker; - AcceptRanges?: AcceptRanges; - /** - * If the object expiration is configured (see PUT Bucket lifecycle), the response includes this header. It includes the expiry-date and rule-id key value pairs providing object expiration information. The value of the rule-id is URL encoded. - */ - Expiration?: Expiration; - /** - * Provides information about object restoration operation and expiration time of the restored object copy. - */ - Restore?: Restore; - /** - * Last modified date of the object - */ - LastModified?: LastModified; - /** - * Size of the body in bytes. - */ - ContentLength?: ContentLength; - /** - * An ETag is an opaque identifier assigned by a web server to a specific version of a resource found at a URL - */ - ETag?: ETag; - /** - * This is set to the number of metadata entries not returned in x-amz-meta headers. This can happen if you create metadata using an API like SOAP that supports more flexible metadata than the REST API. For example, using SOAP, you can create metadata whose values are not legal HTTP headers. - */ - MissingMeta?: MissingMeta; - /** - * Version of the object. - */ - VersionId?: ObjectVersionId; - /** - * Specifies caching behavior along the request/reply chain. - */ - CacheControl?: CacheControl; - /** - * Specifies presentational information for the object. - */ - ContentDisposition?: ContentDisposition; - /** - * Specifies what content encodings have been applied to the object and thus what decoding mechanisms must be applied to obtain the media-type referenced by the Content-Type header field. - */ - ContentEncoding?: ContentEncoding; - /** - * The language the content is in. - */ - ContentLanguage?: ContentLanguage; - /** - * A standard MIME type describing the format of the object data. - */ - ContentType?: ContentType; - /** - * The date and time at which the object is no longer cacheable. - */ - Expires?: Expires; - /** - * If the bucket is configured as a website, redirects requests for this object to another object in the same bucket or to an external URL. Amazon S3 stores the value of this header in the object metadata. - */ - WebsiteRedirectLocation?: WebsiteRedirectLocation; - /** - * The Server-side encryption algorithm used when storing this object in S3 (e.g., AES256, aws:kms). - */ - ServerSideEncryption?: ServerSideEncryption; - /** - * A map of metadata to store with the object in S3. - */ - Metadata?: Metadata; - /** - * If server-side encryption with a customer-provided encryption key was requested, the response will include this header confirming the encryption algorithm used. - */ - SSECustomerAlgorithm?: SSECustomerAlgorithm; - /** - * If server-side encryption with a customer-provided encryption key was requested, the response will include this header to provide round trip message integrity verification of the customer-provided encryption key. - */ - SSECustomerKeyMD5?: SSECustomerKeyMD5; - /** - * If present, specifies the ID of the AWS Key Management Service (KMS) master encryption key that was used for the object. - */ - SSEKMSKeyId?: SSEKMSKeyId; - StorageClass?: StorageClass; - RequestCharged?: RequestCharged; - ReplicationStatus?: ReplicationStatus; - /** - * The count of parts this object has. - */ - PartsCount?: PartsCount; - } - export interface HeadObjectRequest { - Bucket: BucketName; - /** - * Return the object only if its entity tag (ETag) is the same as the one specified, otherwise return a 412 (precondition failed). - */ - IfMatch?: IfMatch; - /** - * Return the object only if it has been modified since the specified time, otherwise return a 304 (not modified). - */ - IfModifiedSince?: IfModifiedSince; - /** - * Return the object only if its entity tag (ETag) is different from the one specified, otherwise return a 304 (not modified). - */ - IfNoneMatch?: IfNoneMatch; - /** - * Return the object only if it has not been modified since the specified time, otherwise return a 412 (precondition failed). - */ - IfUnmodifiedSince?: IfUnmodifiedSince; - Key: ObjectKey; - /** - * Downloads the specified range bytes of an object. For more information about the HTTP Range header, go to http://www.w3.org/Protocols/rfc2616/rfc2616-sec14.html#sec14.35. - */ - Range?: Range; - /** - * VersionId used to reference a specific version of the object. - */ - VersionId?: ObjectVersionId; - /** - * Specifies the algorithm to use to when encrypting the object (e.g., AES256). - */ - SSECustomerAlgorithm?: SSECustomerAlgorithm; - /** - * Specifies the customer-provided encryption key for Amazon S3 to use in encrypting data. This value is used to store the object and then it is discarded; Amazon does not store the encryption key. The key must be appropriate for use with the algorithm specified in the x-amz-server-side​-encryption​-customer-algorithm header. - */ - SSECustomerKey?: SSECustomerKey; - /** - * Specifies the 128-bit MD5 digest of the encryption key according to RFC 1321. Amazon S3 uses this header for a message integrity check to ensure the encryption key was transmitted without error. - */ - SSECustomerKeyMD5?: SSECustomerKeyMD5; - RequestPayer?: RequestPayer; - /** - * Part number of the object being read. This is a positive integer between 1 and 10,000. Effectively performs a 'ranged' HEAD request for the part specified. Useful querying about the size of the part and the number of parts in this object. - */ - PartNumber?: PartNumber; - } - export type HostName = string; - export type HttpErrorCodeReturnedEquals = string; - export type HttpRedirectCode = string; - export type ID = string; - export type IfMatch = string; - export type IfModifiedSince = Date; - export type IfNoneMatch = string; - export type IfUnmodifiedSince = Date; - export interface IndexDocument { - /** - * A suffix that is appended to a request that is for a directory on the website endpoint (e.g. if the suffix is index.html and you make a request to samplebucket/images/ the data that is returned will be for the object with the key name images/index.html) The suffix must not be empty and must not include a slash character. - */ - Suffix: Suffix; - } - export type Initiated = Date; - export interface Initiator { - /** - * If the principal is an AWS account, it provides the Canonical User ID. If the principal is an IAM User, it provides a user ARN value. - */ - ID?: ID; - /** - * Name of the Principal. - */ - DisplayName?: DisplayName; - } - export interface InventoryConfiguration { - /** - * Contains information about where to publish the inventory results. - */ - Destination: InventoryDestination; - /** - * Specifies whether the inventory is enabled or disabled. - */ - IsEnabled: IsEnabled; - /** - * Specifies an inventory filter. The inventory only includes objects that meet the filter's criteria. - */ - Filter?: InventoryFilter; - /** - * The ID used to identify the inventory configuration. - */ - Id: InventoryId; - /** - * Specifies which object version(s) to included in the inventory results. - */ - IncludedObjectVersions: InventoryIncludedObjectVersions; - /** - * Contains the optional fields that are included in the inventory results. - */ - OptionalFields?: InventoryOptionalFields; - /** - * Specifies the schedule for generating inventory results. - */ - Schedule: InventorySchedule; - } - export type InventoryConfigurationList = InventoryConfiguration[]; - export interface InventoryDestination { - /** - * Contains the bucket name, file format, bucket owner (optional), and prefix (optional) where inventory results are published. - */ - S3BucketDestination: InventoryS3BucketDestination; - } - export interface InventoryFilter { - /** - * The prefix that an object must have to be included in the inventory results. - */ - Prefix: Prefix; - } - export type InventoryFormat = "CSV"|string; - export type InventoryFrequency = "Daily"|"Weekly"|string; - export type InventoryId = string; - export type InventoryIncludedObjectVersions = "All"|"Current"|string; - export type InventoryOptionalField = "Size"|"LastModifiedDate"|"StorageClass"|"ETag"|"IsMultipartUploaded"|"ReplicationStatus"|string; - export type InventoryOptionalFields = InventoryOptionalField[]; - export interface InventoryS3BucketDestination { - /** - * The ID of the account that owns the destination bucket. - */ - AccountId?: AccountId; - /** - * The Amazon resource name (ARN) of the bucket where inventory results will be published. - */ - Bucket: BucketName; - /** - * Specifies the output format of the inventory results. - */ - Format: InventoryFormat; - /** - * The prefix that is prepended to all inventory results. - */ - Prefix?: Prefix; - } - export interface InventorySchedule { - /** - * Specifies how frequently inventory results are produced. - */ - Frequency: InventoryFrequency; - } - export type IsEnabled = boolean; - export type IsLatest = boolean; - export type IsTruncated = boolean; - export type KeyCount = number; - export type KeyMarker = string; - export type KeyPrefixEquals = string; - export type LambdaFunctionArn = string; - export interface LambdaFunctionConfiguration { - Id?: NotificationId; - /** - * Lambda cloud function ARN that Amazon S3 can invoke when it detects events of the specified type. - */ - LambdaFunctionArn: LambdaFunctionArn; - Events: EventList; - Filter?: NotificationConfigurationFilter; - } - export type LambdaFunctionConfigurationList = LambdaFunctionConfiguration[]; - export type LastModified = Date; - export interface LifecycleConfiguration { - Rules: Rules; - } - export interface LifecycleExpiration { - /** - * Indicates at what date the object is to be moved or deleted. Should be in GMT ISO 8601 Format. - */ - Date?: _Date; - /** - * Indicates the lifetime, in days, of the objects that are subject to the rule. The value must be a non-zero positive integer. - */ - Days?: Days; - /** - * Indicates whether Amazon S3 will remove a delete marker with no noncurrent versions. If set to true, the delete marker will be expired; if set to false the policy takes no action. This cannot be specified with Days or Date in a Lifecycle Expiration Policy. - */ - ExpiredObjectDeleteMarker?: ExpiredObjectDeleteMarker; - } - export interface LifecycleRule { - Expiration?: LifecycleExpiration; - /** - * Unique identifier for the rule. The value cannot be longer than 255 characters. - */ - ID?: ID; - /** - * Prefix identifying one or more objects to which the rule applies. This is deprecated; use Filter instead. - */ - Prefix?: Prefix; - Filter?: LifecycleRuleFilter; - /** - * If 'Enabled', the rule is currently being applied. If 'Disabled', the rule is not currently being applied. - */ - Status: ExpirationStatus; - Transitions?: TransitionList; - NoncurrentVersionTransitions?: NoncurrentVersionTransitionList; - NoncurrentVersionExpiration?: NoncurrentVersionExpiration; - AbortIncompleteMultipartUpload?: AbortIncompleteMultipartUpload; - } - export interface LifecycleRuleAndOperator { - Prefix?: Prefix; - /** - * All of these tags must exist in the object's tag set in order for the rule to apply. - */ - Tags?: TagSet; - } - export interface LifecycleRuleFilter { - /** - * Prefix identifying one or more objects to which the rule applies. - */ - Prefix?: Prefix; - /** - * This tag must exist in the object's tag set in order for the rule to apply. - */ - Tag?: Tag; - And?: LifecycleRuleAndOperator; - } - export type LifecycleRules = LifecycleRule[]; - export interface ListBucketAnalyticsConfigurationsOutput { - /** - * Indicates whether the returned list of analytics configurations is complete. A value of true indicates that the list is not complete and the NextContinuationToken will be provided for a subsequent request. - */ - IsTruncated?: IsTruncated; - /** - * The ContinuationToken that represents where this request began. - */ - ContinuationToken?: Token; - /** - * NextContinuationToken is sent when isTruncated is true, which indicates that there are more analytics configurations to list. The next request must include this NextContinuationToken. The token is obfuscated and is not a usable value. - */ - NextContinuationToken?: NextToken; - /** - * The list of analytics configurations for a bucket. - */ - AnalyticsConfigurationList?: AnalyticsConfigurationList; - } - export interface ListBucketAnalyticsConfigurationsRequest { - /** - * The name of the bucket from which analytics configurations are retrieved. - */ - Bucket: BucketName; - /** - * The ContinuationToken that represents a placeholder from where this request should begin. - */ - ContinuationToken?: Token; - } - export interface ListBucketInventoryConfigurationsOutput { - /** - * If sent in the request, the marker that is used as a starting point for this inventory configuration list response. - */ - ContinuationToken?: Token; - /** - * The list of inventory configurations for a bucket. - */ - InventoryConfigurationList?: InventoryConfigurationList; - /** - * Indicates whether the returned list of inventory configurations is truncated in this response. A value of true indicates that the list is truncated. - */ - IsTruncated?: IsTruncated; - /** - * The marker used to continue this inventory configuration listing. Use the NextContinuationToken from this response to continue the listing in a subsequent request. The continuation token is an opaque value that Amazon S3 understands. - */ - NextContinuationToken?: NextToken; - } - export interface ListBucketInventoryConfigurationsRequest { - /** - * The name of the bucket containing the inventory configurations to retrieve. - */ - Bucket: BucketName; - /** - * The marker used to continue an inventory configuration listing that has been truncated. Use the NextContinuationToken from a previously truncated list response to continue the listing. The continuation token is an opaque value that Amazon S3 understands. - */ - ContinuationToken?: Token; - } - export interface ListBucketMetricsConfigurationsOutput { - /** - * Indicates whether the returned list of metrics configurations is complete. A value of true indicates that the list is not complete and the NextContinuationToken will be provided for a subsequent request. - */ - IsTruncated?: IsTruncated; - /** - * The marker that is used as a starting point for this metrics configuration list response. This value is present if it was sent in the request. - */ - ContinuationToken?: Token; - /** - * The marker used to continue a metrics configuration listing that has been truncated. Use the NextContinuationToken from a previously truncated list response to continue the listing. The continuation token is an opaque value that Amazon S3 understands. - */ - NextContinuationToken?: NextToken; - /** - * The list of metrics configurations for a bucket. - */ - MetricsConfigurationList?: MetricsConfigurationList; - } - export interface ListBucketMetricsConfigurationsRequest { - /** - * The name of the bucket containing the metrics configurations to retrieve. - */ - Bucket: BucketName; - /** - * The marker that is used to continue a metrics configuration listing that has been truncated. Use the NextContinuationToken from a previously truncated list response to continue the listing. The continuation token is an opaque value that Amazon S3 understands. - */ - ContinuationToken?: Token; - } - export interface ListBucketsOutput { - Buckets?: Buckets; - Owner?: Owner; - } - export interface ListMultipartUploadsOutput { - /** - * Name of the bucket to which the multipart upload was initiated. - */ - Bucket?: BucketName; - /** - * The key at or after which the listing began. - */ - KeyMarker?: KeyMarker; - /** - * Upload ID after which listing began. - */ - UploadIdMarker?: UploadIdMarker; - /** - * When a list is truncated, this element specifies the value that should be used for the key-marker request parameter in a subsequent request. - */ - NextKeyMarker?: NextKeyMarker; - /** - * When a prefix is provided in the request, this field contains the specified prefix. The result contains only keys starting with the specified prefix. - */ - Prefix?: Prefix; - Delimiter?: Delimiter; - /** - * When a list is truncated, this element specifies the value that should be used for the upload-id-marker request parameter in a subsequent request. - */ - NextUploadIdMarker?: NextUploadIdMarker; - /** - * Maximum number of multipart uploads that could have been included in the response. - */ - MaxUploads?: MaxUploads; - /** - * Indicates whether the returned list of multipart uploads is truncated. A value of true indicates that the list was truncated. The list can be truncated if the number of multipart uploads exceeds the limit allowed or specified by max uploads. - */ - IsTruncated?: IsTruncated; - Uploads?: MultipartUploadList; - CommonPrefixes?: CommonPrefixList; - /** - * Encoding type used by Amazon S3 to encode object keys in the response. - */ - EncodingType?: EncodingType; - } - export interface ListMultipartUploadsRequest { - Bucket: BucketName; - /** - * Character you use to group keys. - */ - Delimiter?: Delimiter; - EncodingType?: EncodingType; - /** - * Together with upload-id-marker, this parameter specifies the multipart upload after which listing should begin. - */ - KeyMarker?: KeyMarker; - /** - * Sets the maximum number of multipart uploads, from 1 to 1,000, to return in the response body. 1,000 is the maximum number of uploads that can be returned in a response. - */ - MaxUploads?: MaxUploads; - /** - * Lists in-progress uploads only for those keys that begin with the specified prefix. - */ - Prefix?: Prefix; - /** - * Together with key-marker, specifies the multipart upload after which listing should begin. If key-marker is not specified, the upload-id-marker parameter is ignored. - */ - UploadIdMarker?: UploadIdMarker; - } - export interface ListObjectVersionsOutput { - /** - * A flag that indicates whether or not Amazon S3 returned all of the results that satisfied the search criteria. If your results were truncated, you can make a follow-up paginated request using the NextKeyMarker and NextVersionIdMarker response parameters as a starting place in another request to return the rest of the results. - */ - IsTruncated?: IsTruncated; - /** - * Marks the last Key returned in a truncated response. - */ - KeyMarker?: KeyMarker; - VersionIdMarker?: VersionIdMarker; - /** - * Use this value for the key marker request parameter in a subsequent request. - */ - NextKeyMarker?: NextKeyMarker; - /** - * Use this value for the next version id marker parameter in a subsequent request. - */ - NextVersionIdMarker?: NextVersionIdMarker; - Versions?: ObjectVersionList; - DeleteMarkers?: DeleteMarkers; - Name?: BucketName; - Prefix?: Prefix; - Delimiter?: Delimiter; - MaxKeys?: MaxKeys; - CommonPrefixes?: CommonPrefixList; - /** - * Encoding type used by Amazon S3 to encode object keys in the response. - */ - EncodingType?: EncodingType; - } - export interface ListObjectVersionsRequest { - Bucket: BucketName; - /** - * A delimiter is a character you use to group keys. - */ - Delimiter?: Delimiter; - EncodingType?: EncodingType; - /** - * Specifies the key to start with when listing objects in a bucket. - */ - KeyMarker?: KeyMarker; - /** - * Sets the maximum number of keys returned in the response. The response might contain fewer keys but will never contain more. - */ - MaxKeys?: MaxKeys; - /** - * Limits the response to keys that begin with the specified prefix. - */ - Prefix?: Prefix; - /** - * Specifies the object version you want to start listing from. - */ - VersionIdMarker?: VersionIdMarker; - } - export interface ListObjectsOutput { - /** - * A flag that indicates whether or not Amazon S3 returned all of the results that satisfied the search criteria. - */ - IsTruncated?: IsTruncated; - Marker?: Marker; - /** - * When response is truncated (the IsTruncated element value in the response is true), you can use the key name in this field as marker in the subsequent request to get next set of objects. Amazon S3 lists objects in alphabetical order Note: This element is returned only if you have delimiter request parameter specified. If response does not include the NextMaker and it is truncated, you can use the value of the last Key in the response as the marker in the subsequent request to get the next set of object keys. - */ - NextMarker?: NextMarker; - Contents?: ObjectList; - Name?: BucketName; - Prefix?: Prefix; - Delimiter?: Delimiter; - MaxKeys?: MaxKeys; - CommonPrefixes?: CommonPrefixList; - /** - * Encoding type used by Amazon S3 to encode object keys in the response. - */ - EncodingType?: EncodingType; - } - export interface ListObjectsRequest { - Bucket: BucketName; - /** - * A delimiter is a character you use to group keys. - */ - Delimiter?: Delimiter; - EncodingType?: EncodingType; - /** - * Specifies the key to start with when listing objects in a bucket. - */ - Marker?: Marker; - /** - * Sets the maximum number of keys returned in the response. The response might contain fewer keys but will never contain more. - */ - MaxKeys?: MaxKeys; - /** - * Limits the response to keys that begin with the specified prefix. - */ - Prefix?: Prefix; - /** - * Confirms that the requester knows that she or he will be charged for the list objects request. Bucket owners need not specify this parameter in their requests. - */ - RequestPayer?: RequestPayer; - } - export interface ListObjectsV2Output { - /** - * A flag that indicates whether or not Amazon S3 returned all of the results that satisfied the search criteria. - */ - IsTruncated?: IsTruncated; - /** - * Metadata about each object returned. - */ - Contents?: ObjectList; - /** - * Name of the bucket to list. - */ - Name?: BucketName; - /** - * Limits the response to keys that begin with the specified prefix. - */ - Prefix?: Prefix; - /** - * A delimiter is a character you use to group keys. - */ - Delimiter?: Delimiter; - /** - * Sets the maximum number of keys returned in the response. The response might contain fewer keys but will never contain more. - */ - MaxKeys?: MaxKeys; - /** - * CommonPrefixes contains all (if there are any) keys between Prefix and the next occurrence of the string specified by delimiter - */ - CommonPrefixes?: CommonPrefixList; - /** - * Encoding type used by Amazon S3 to encode object keys in the response. - */ - EncodingType?: EncodingType; - /** - * KeyCount is the number of keys returned with this request. KeyCount will always be less than equals to MaxKeys field. Say you ask for 50 keys, your result will include less than equals 50 keys - */ - KeyCount?: KeyCount; - /** - * ContinuationToken indicates Amazon S3 that the list is being continued on this bucket with a token. ContinuationToken is obfuscated and is not a real key - */ - ContinuationToken?: Token; - /** - * NextContinuationToken is sent when isTruncated is true which means there are more keys in the bucket that can be listed. The next list requests to Amazon S3 can be continued with this NextContinuationToken. NextContinuationToken is obfuscated and is not a real key - */ - NextContinuationToken?: NextToken; - /** - * StartAfter is where you want Amazon S3 to start listing from. Amazon S3 starts listing after this specified key. StartAfter can be any key in the bucket - */ - StartAfter?: StartAfter; - } - export interface ListObjectsV2Request { - /** - * Name of the bucket to list. - */ - Bucket: BucketName; - /** - * A delimiter is a character you use to group keys. - */ - Delimiter?: Delimiter; - /** - * Encoding type used by Amazon S3 to encode object keys in the response. - */ - EncodingType?: EncodingType; - /** - * Sets the maximum number of keys returned in the response. The response might contain fewer keys but will never contain more. - */ - MaxKeys?: MaxKeys; - /** - * Limits the response to keys that begin with the specified prefix. - */ - Prefix?: Prefix; - /** - * ContinuationToken indicates Amazon S3 that the list is being continued on this bucket with a token. ContinuationToken is obfuscated and is not a real key - */ - ContinuationToken?: Token; - /** - * The owner field is not present in listV2 by default, if you want to return owner field with each key in the result then set the fetch owner field to true - */ - FetchOwner?: FetchOwner; - /** - * StartAfter is where you want Amazon S3 to start listing from. Amazon S3 starts listing after this specified key. StartAfter can be any key in the bucket - */ - StartAfter?: StartAfter; - /** - * Confirms that the requester knows that she or he will be charged for the list objects request in V2 style. Bucket owners need not specify this parameter in their requests. - */ - RequestPayer?: RequestPayer; - } - export interface ListPartsOutput { - /** - * Date when multipart upload will become eligible for abort operation by lifecycle. - */ - AbortDate?: AbortDate; - /** - * Id of the lifecycle rule that makes a multipart upload eligible for abort operation. - */ - AbortRuleId?: AbortRuleId; - /** - * Name of the bucket to which the multipart upload was initiated. - */ - Bucket?: BucketName; - /** - * Object key for which the multipart upload was initiated. - */ - Key?: ObjectKey; - /** - * Upload ID identifying the multipart upload whose parts are being listed. - */ - UploadId?: MultipartUploadId; - /** - * Part number after which listing begins. - */ - PartNumberMarker?: PartNumberMarker; - /** - * When a list is truncated, this element specifies the last part in the list, as well as the value to use for the part-number-marker request parameter in a subsequent request. - */ - NextPartNumberMarker?: NextPartNumberMarker; - /** - * Maximum number of parts that were allowed in the response. - */ - MaxParts?: MaxParts; - /** - * Indicates whether the returned list of parts is truncated. - */ - IsTruncated?: IsTruncated; - Parts?: Parts; - /** - * Identifies who initiated the multipart upload. - */ - Initiator?: Initiator; - Owner?: Owner; - /** - * The class of storage used to store the object. - */ - StorageClass?: StorageClass; - RequestCharged?: RequestCharged; - } - export interface ListPartsRequest { - Bucket: BucketName; - Key: ObjectKey; - /** - * Sets the maximum number of parts to return. - */ - MaxParts?: MaxParts; - /** - * Specifies the part after which listing should begin. Only parts with higher part numbers will be listed. - */ - PartNumberMarker?: PartNumberMarker; - /** - * Upload ID identifying the multipart upload whose parts are being listed. - */ - UploadId: MultipartUploadId; - RequestPayer?: RequestPayer; - } - export type Location = string; - export interface LoggingEnabled { - /** - * Specifies the bucket where you want Amazon S3 to store server access logs. You can have your logs delivered to any bucket that you own, including the same bucket that is being logged. You can also configure multiple buckets to deliver their logs to the same target bucket. In this case you should choose a different TargetPrefix for each source bucket so that the delivered log files can be distinguished by key. - */ - TargetBucket?: TargetBucket; - TargetGrants?: TargetGrants; - /** - * This element lets you specify a prefix for the keys that the log files will be stored under. - */ - TargetPrefix?: TargetPrefix; - } - export type MFA = string; - export type MFADelete = "Enabled"|"Disabled"|string; - export type MFADeleteStatus = "Enabled"|"Disabled"|string; - export type Marker = string; - export type MaxAgeSeconds = number; - export type MaxKeys = number; - export type MaxParts = number; - export type MaxUploads = number; - export type Message = string; - export type Metadata = {[key: string]: MetadataValue}; - export type MetadataDirective = "COPY"|"REPLACE"|string; - export type MetadataKey = string; - export type MetadataValue = string; - export interface MetricsAndOperator { - /** - * The prefix used when evaluating an AND predicate. - */ - Prefix?: Prefix; - /** - * The list of tags used when evaluating an AND predicate. - */ - Tags?: TagSet; - } - export interface MetricsConfiguration { - /** - * The ID used to identify the metrics configuration. - */ - Id: MetricsId; - /** - * Specifies a metrics configuration filter. The metrics configuration will only include objects that meet the filter's criteria. A filter must be a prefix, a tag, or a conjunction (MetricsAndOperator). - */ - Filter?: MetricsFilter; - } - export type MetricsConfigurationList = MetricsConfiguration[]; - export interface MetricsFilter { - /** - * The prefix used when evaluating a metrics filter. - */ - Prefix?: Prefix; - /** - * The tag used when evaluating a metrics filter. - */ - Tag?: Tag; - /** - * A conjunction (logical AND) of predicates, which is used in evaluating a metrics filter. The operator must have at least two predicates, and an object must match all of the predicates in order for the filter to apply. - */ - And?: MetricsAndOperator; - } - export type MetricsId = string; - export type MissingMeta = number; - export interface MultipartUpload { - /** - * Upload ID that identifies the multipart upload. - */ - UploadId?: MultipartUploadId; - /** - * Key of the object for which the multipart upload was initiated. - */ - Key?: ObjectKey; - /** - * Date and time at which the multipart upload was initiated. - */ - Initiated?: Initiated; - /** - * The class of storage used to store the object. - */ - StorageClass?: StorageClass; - Owner?: Owner; - /** - * Identifies who initiated the multipart upload. - */ - Initiator?: Initiator; - } - export type MultipartUploadId = string; - export type MultipartUploadList = MultipartUpload[]; - export type NextKeyMarker = string; - export type NextMarker = string; - export type NextPartNumberMarker = number; - export type NextToken = string; - export type NextUploadIdMarker = string; - export type NextVersionIdMarker = string; - export interface NoncurrentVersionExpiration { - /** - * Specifies the number of days an object is noncurrent before Amazon S3 can perform the associated action. For information about the noncurrent days calculations, see How Amazon S3 Calculates When an Object Became Noncurrent in the Amazon Simple Storage Service Developer Guide. - */ - NoncurrentDays?: Days; - } - export interface NoncurrentVersionTransition { - /** - * Specifies the number of days an object is noncurrent before Amazon S3 can perform the associated action. For information about the noncurrent days calculations, see How Amazon S3 Calculates When an Object Became Noncurrent in the Amazon Simple Storage Service Developer Guide. - */ - NoncurrentDays?: Days; - /** - * The class of storage used to store the object. - */ - StorageClass?: TransitionStorageClass; - } - export type NoncurrentVersionTransitionList = NoncurrentVersionTransition[]; - export interface NotificationConfiguration { - TopicConfigurations?: TopicConfigurationList; - QueueConfigurations?: QueueConfigurationList; - LambdaFunctionConfigurations?: LambdaFunctionConfigurationList; - } - export interface NotificationConfigurationDeprecated { - TopicConfiguration?: TopicConfigurationDeprecated; - QueueConfiguration?: QueueConfigurationDeprecated; - CloudFunctionConfiguration?: CloudFunctionConfiguration; - } - export interface NotificationConfigurationFilter { - Key?: S3KeyFilter; - } - export type NotificationId = string; - export interface Object { - Key?: ObjectKey; - LastModified?: LastModified; - ETag?: ETag; - Size?: Size; - /** - * The class of storage used to store the object. - */ - StorageClass?: ObjectStorageClass; - Owner?: Owner; - } - export type ObjectCannedACL = "private"|"public-read"|"public-read-write"|"authenticated-read"|"aws-exec-read"|"bucket-owner-read"|"bucket-owner-full-control"|string; - export interface ObjectIdentifier { - /** - * Key name of the object to delete. - */ - Key: ObjectKey; - /** - * VersionId for the specific version of the object to delete. - */ - VersionId?: ObjectVersionId; - } - export type ObjectIdentifierList = ObjectIdentifier[]; - export type ObjectKey = string; - export type ObjectList = Object[]; - export type ObjectStorageClass = "STANDARD"|"REDUCED_REDUNDANCY"|"GLACIER"|string; - export interface ObjectVersion { - ETag?: ETag; - /** - * Size in bytes of the object. - */ - Size?: Size; - /** - * The class of storage used to store the object. - */ - StorageClass?: ObjectVersionStorageClass; - /** - * The object key. - */ - Key?: ObjectKey; - /** - * Version ID of an object. - */ - VersionId?: ObjectVersionId; - /** - * Specifies whether the object is (true) or is not (false) the latest version of an object. - */ - IsLatest?: IsLatest; - /** - * Date and time the object was last modified. - */ - LastModified?: LastModified; - Owner?: Owner; - } - export type ObjectVersionId = string; - export type ObjectVersionList = ObjectVersion[]; - export type ObjectVersionStorageClass = "STANDARD"|string; - export interface Owner { - DisplayName?: DisplayName; - ID?: ID; - } - export interface Part { - /** - * Part number identifying the part. This is a positive integer between 1 and 10,000. - */ - PartNumber?: PartNumber; - /** - * Date and time at which the part was uploaded. - */ - LastModified?: LastModified; - /** - * Entity tag returned when the part was uploaded. - */ - ETag?: ETag; - /** - * Size of the uploaded part data. - */ - Size?: Size; - } - export type PartNumber = number; - export type PartNumberMarker = number; - export type Parts = Part[]; - export type PartsCount = number; - export type Payer = "Requester"|"BucketOwner"|string; - export type Permission = "FULL_CONTROL"|"WRITE"|"WRITE_ACP"|"READ"|"READ_ACP"|string; - export type Policy = string; - export type Prefix = string; - export type Protocol = "http"|"https"|string; - export interface PutBucketAccelerateConfigurationRequest { - /** - * Name of the bucket for which the accelerate configuration is set. - */ - Bucket: BucketName; - /** - * Specifies the Accelerate Configuration you want to set for the bucket. - */ - AccelerateConfiguration: AccelerateConfiguration; - } - export interface PutBucketAclRequest { - /** - * The canned ACL to apply to the bucket. - */ - ACL?: BucketCannedACL; - AccessControlPolicy?: AccessControlPolicy; - Bucket: BucketName; - ContentMD5?: ContentMD5; - /** - * Allows grantee the read, write, read ACP, and write ACP permissions on the bucket. - */ - GrantFullControl?: GrantFullControl; - /** - * Allows grantee to list the objects in the bucket. - */ - GrantRead?: GrantRead; - /** - * Allows grantee to read the bucket ACL. - */ - GrantReadACP?: GrantReadACP; - /** - * Allows grantee to create, overwrite, and delete any object in the bucket. - */ - GrantWrite?: GrantWrite; - /** - * Allows grantee to write the ACL for the applicable bucket. - */ - GrantWriteACP?: GrantWriteACP; - } - export interface PutBucketAnalyticsConfigurationRequest { - /** - * The name of the bucket to which an analytics configuration is stored. - */ - Bucket: BucketName; - /** - * The identifier used to represent an analytics configuration. - */ - Id: AnalyticsId; - /** - * The configuration and any analyses for the analytics filter. - */ - AnalyticsConfiguration: AnalyticsConfiguration; - } - export interface PutBucketCorsRequest { - Bucket: BucketName; - CORSConfiguration: CORSConfiguration; - ContentMD5?: ContentMD5; - } - export interface PutBucketInventoryConfigurationRequest { - /** - * The name of the bucket where the inventory configuration will be stored. - */ - Bucket: BucketName; - /** - * The ID used to identify the inventory configuration. - */ - Id: InventoryId; - /** - * Specifies the inventory configuration. - */ - InventoryConfiguration: InventoryConfiguration; - } - export interface PutBucketLifecycleConfigurationRequest { - Bucket: BucketName; - LifecycleConfiguration?: BucketLifecycleConfiguration; - } - export interface PutBucketLifecycleRequest { - Bucket: BucketName; - ContentMD5?: ContentMD5; - LifecycleConfiguration?: LifecycleConfiguration; - } - export interface PutBucketLoggingRequest { - Bucket: BucketName; - BucketLoggingStatus: BucketLoggingStatus; - ContentMD5?: ContentMD5; - } - export interface PutBucketMetricsConfigurationRequest { - /** - * The name of the bucket for which the metrics configuration is set. - */ - Bucket: BucketName; - /** - * The ID used to identify the metrics configuration. - */ - Id: MetricsId; - /** - * Specifies the metrics configuration. - */ - MetricsConfiguration: MetricsConfiguration; - } - export interface PutBucketNotificationConfigurationRequest { - Bucket: BucketName; - NotificationConfiguration: NotificationConfiguration; - } - export interface PutBucketNotificationRequest { - Bucket: BucketName; - ContentMD5?: ContentMD5; - NotificationConfiguration: NotificationConfigurationDeprecated; - } - export interface PutBucketPolicyRequest { - Bucket: BucketName; - ContentMD5?: ContentMD5; - /** - * The bucket policy as a JSON document. - */ - Policy: Policy; - } - export interface PutBucketReplicationRequest { - Bucket: BucketName; - ContentMD5?: ContentMD5; - ReplicationConfiguration: ReplicationConfiguration; - } - export interface PutBucketRequestPaymentRequest { - Bucket: BucketName; - ContentMD5?: ContentMD5; - RequestPaymentConfiguration: RequestPaymentConfiguration; - } - export interface PutBucketTaggingRequest { - Bucket: BucketName; - ContentMD5?: ContentMD5; - Tagging: Tagging; - } - export interface PutBucketVersioningRequest { - Bucket: BucketName; - ContentMD5?: ContentMD5; - /** - * The concatenation of the authentication device's serial number, a space, and the value that is displayed on your authentication device. - */ - MFA?: MFA; - VersioningConfiguration: VersioningConfiguration; - } - export interface PutBucketWebsiteRequest { - Bucket: BucketName; - ContentMD5?: ContentMD5; - WebsiteConfiguration: WebsiteConfiguration; - } - export interface PutObjectAclOutput { - RequestCharged?: RequestCharged; - } - export interface PutObjectAclRequest { - /** - * The canned ACL to apply to the object. - */ - ACL?: ObjectCannedACL; - AccessControlPolicy?: AccessControlPolicy; - Bucket: BucketName; - ContentMD5?: ContentMD5; - /** - * Allows grantee the read, write, read ACP, and write ACP permissions on the bucket. - */ - GrantFullControl?: GrantFullControl; - /** - * Allows grantee to list the objects in the bucket. - */ - GrantRead?: GrantRead; - /** - * Allows grantee to read the bucket ACL. - */ - GrantReadACP?: GrantReadACP; - /** - * Allows grantee to create, overwrite, and delete any object in the bucket. - */ - GrantWrite?: GrantWrite; - /** - * Allows grantee to write the ACL for the applicable bucket. - */ - GrantWriteACP?: GrantWriteACP; - Key: ObjectKey; - RequestPayer?: RequestPayer; - /** - * VersionId used to reference a specific version of the object. - */ - VersionId?: ObjectVersionId; - } - export interface PutObjectOutput { - /** - * If the object expiration is configured, this will contain the expiration date (expiry-date) and rule ID (rule-id). The value of rule-id is URL encoded. - */ - Expiration?: Expiration; - /** - * Entity tag for the uploaded object. - */ - ETag?: ETag; - /** - * The Server-side encryption algorithm used when storing this object in S3 (e.g., AES256, aws:kms). - */ - ServerSideEncryption?: ServerSideEncryption; - /** - * Version of the object. - */ - VersionId?: ObjectVersionId; - /** - * If server-side encryption with a customer-provided encryption key was requested, the response will include this header confirming the encryption algorithm used. - */ - SSECustomerAlgorithm?: SSECustomerAlgorithm; - /** - * If server-side encryption with a customer-provided encryption key was requested, the response will include this header to provide round trip message integrity verification of the customer-provided encryption key. - */ - SSECustomerKeyMD5?: SSECustomerKeyMD5; - /** - * If present, specifies the ID of the AWS Key Management Service (KMS) master encryption key that was used for the object. - */ - SSEKMSKeyId?: SSEKMSKeyId; - RequestCharged?: RequestCharged; - } - export interface PutObjectRequest { - /** - * The canned ACL to apply to the object. - */ - ACL?: ObjectCannedACL; - /** - * Object data. - */ - Body?: Body; - /** - * Name of the bucket to which the PUT operation was initiated. - */ - Bucket: BucketName; - /** - * Specifies caching behavior along the request/reply chain. - */ - CacheControl?: CacheControl; - /** - * Specifies presentational information for the object. - */ - ContentDisposition?: ContentDisposition; - /** - * Specifies what content encodings have been applied to the object and thus what decoding mechanisms must be applied to obtain the media-type referenced by the Content-Type header field. - */ - ContentEncoding?: ContentEncoding; - /** - * The language the content is in. - */ - ContentLanguage?: ContentLanguage; - /** - * Size of the body in bytes. This parameter is useful when the size of the body cannot be determined automatically. - */ - ContentLength?: ContentLength; - /** - * The base64-encoded 128-bit MD5 digest of the part data. - */ - ContentMD5?: ContentMD5; - /** - * A standard MIME type describing the format of the object data. - */ - ContentType?: ContentType; - /** - * The date and time at which the object is no longer cacheable. - */ - Expires?: Expires; - /** - * Gives the grantee READ, READ_ACP, and WRITE_ACP permissions on the object. - */ - GrantFullControl?: GrantFullControl; - /** - * Allows grantee to read the object data and its metadata. - */ - GrantRead?: GrantRead; - /** - * Allows grantee to read the object ACL. - */ - GrantReadACP?: GrantReadACP; - /** - * Allows grantee to write the ACL for the applicable object. - */ - GrantWriteACP?: GrantWriteACP; - /** - * Object key for which the PUT operation was initiated. - */ - Key: ObjectKey; - /** - * A map of metadata to store with the object in S3. - */ - Metadata?: Metadata; - /** - * The Server-side encryption algorithm used when storing this object in S3 (e.g., AES256, aws:kms). - */ - ServerSideEncryption?: ServerSideEncryption; - /** - * The type of storage to use for the object. Defaults to 'STANDARD'. - */ - StorageClass?: StorageClass; - /** - * If the bucket is configured as a website, redirects requests for this object to another object in the same bucket or to an external URL. Amazon S3 stores the value of this header in the object metadata. - */ - WebsiteRedirectLocation?: WebsiteRedirectLocation; - /** - * Specifies the algorithm to use to when encrypting the object (e.g., AES256). - */ - SSECustomerAlgorithm?: SSECustomerAlgorithm; - /** - * Specifies the customer-provided encryption key for Amazon S3 to use in encrypting data. This value is used to store the object and then it is discarded; Amazon does not store the encryption key. The key must be appropriate for use with the algorithm specified in the x-amz-server-side​-encryption​-customer-algorithm header. - */ - SSECustomerKey?: SSECustomerKey; - /** - * Specifies the 128-bit MD5 digest of the encryption key according to RFC 1321. Amazon S3 uses this header for a message integrity check to ensure the encryption key was transmitted without error. - */ - SSECustomerKeyMD5?: SSECustomerKeyMD5; - /** - * Specifies the AWS KMS key ID to use for object encryption. All GET and PUT requests for an object protected by AWS KMS will fail if not made via SSL or using SigV4. Documentation on configuring any of the officially supported AWS SDKs and CLI can be found at http://docs.aws.amazon.com/AmazonS3/latest/dev/UsingAWSSDK.html#specify-signature-version - */ - SSEKMSKeyId?: SSEKMSKeyId; - RequestPayer?: RequestPayer; - /** - * The tag-set for the object. The tag-set must be encoded as URL Query parameters - */ - Tagging?: TaggingHeader; - } - export interface PutObjectTaggingOutput { - VersionId?: ObjectVersionId; - } - export interface PutObjectTaggingRequest { - Bucket: BucketName; - Key: ObjectKey; - VersionId?: ObjectVersionId; - ContentMD5?: ContentMD5; - Tagging: Tagging; - } - export type QueueArn = string; - export interface QueueConfiguration { - Id?: NotificationId; - /** - * Amazon SQS queue ARN to which Amazon S3 will publish a message when it detects events of specified type. - */ - QueueArn: QueueArn; - Events: EventList; - Filter?: NotificationConfigurationFilter; - } - export interface QueueConfigurationDeprecated { - Id?: NotificationId; - Event?: Event; - Events?: EventList; - Queue?: QueueArn; - } - export type QueueConfigurationList = QueueConfiguration[]; - export type Quiet = boolean; - export type Range = string; - export interface Redirect { - /** - * The host name to use in the redirect request. - */ - HostName?: HostName; - /** - * The HTTP redirect code to use on the response. Not required if one of the siblings is present. - */ - HttpRedirectCode?: HttpRedirectCode; - /** - * Protocol to use (http, https) when redirecting requests. The default is the protocol that is used in the original request. - */ - Protocol?: Protocol; - /** - * The object key prefix to use in the redirect request. For example, to redirect requests for all pages with prefix docs/ (objects in the docs/ folder) to documents/, you can set a condition block with KeyPrefixEquals set to docs/ and in the Redirect set ReplaceKeyPrefixWith to /documents. Not required if one of the siblings is present. Can be present only if ReplaceKeyWith is not provided. - */ - ReplaceKeyPrefixWith?: ReplaceKeyPrefixWith; - /** - * The specific object key to use in the redirect request. For example, redirect request to error.html. Not required if one of the sibling is present. Can be present only if ReplaceKeyPrefixWith is not provided. - */ - ReplaceKeyWith?: ReplaceKeyWith; - } - export interface RedirectAllRequestsTo { - /** - * Name of the host where requests will be redirected. - */ - HostName: HostName; - /** - * Protocol to use (http, https) when redirecting requests. The default is the protocol that is used in the original request. - */ - Protocol?: Protocol; - } - export type ReplaceKeyPrefixWith = string; - export type ReplaceKeyWith = string; - export interface ReplicationConfiguration { - /** - * Amazon Resource Name (ARN) of an IAM role for Amazon S3 to assume when replicating the objects. - */ - Role: Role; - /** - * Container for information about a particular replication rule. Replication configuration must have at least one rule and can contain up to 1,000 rules. - */ - Rules: ReplicationRules; - } - export interface ReplicationRule { - /** - * Unique identifier for the rule. The value cannot be longer than 255 characters. - */ - ID?: ID; - /** - * Object keyname prefix identifying one or more objects to which the rule applies. Maximum prefix length can be up to 1,024 characters. Overlapping prefixes are not supported. - */ - Prefix: Prefix; - /** - * The rule is ignored if status is not Enabled. - */ - Status: ReplicationRuleStatus; - Destination: Destination; - } - export type ReplicationRuleStatus = "Enabled"|"Disabled"|string; - export type ReplicationRules = ReplicationRule[]; - export type ReplicationStatus = "COMPLETE"|"PENDING"|"FAILED"|"REPLICA"|string; - export type RequestCharged = "requester"|string; - export type RequestPayer = "requester"|string; - export interface RequestPaymentConfiguration { - /** - * Specifies who pays for the download and request fees. - */ - Payer: Payer; - } - export type ResponseCacheControl = string; - export type ResponseContentDisposition = string; - export type ResponseContentEncoding = string; - export type ResponseContentLanguage = string; - export type ResponseContentType = string; - export type ResponseExpires = Date; - export type Restore = string; - export interface RestoreObjectOutput { - RequestCharged?: RequestCharged; - } - export interface RestoreObjectRequest { - Bucket: BucketName; - Key: ObjectKey; - VersionId?: ObjectVersionId; - RestoreRequest?: RestoreRequest; - RequestPayer?: RequestPayer; - } - export interface RestoreRequest { - /** - * Lifetime of the active copy in days - */ - Days: Days; - /** - * Glacier related prameters pertaining to this job. - */ - GlacierJobParameters?: GlacierJobParameters; - } - export type Role = string; - export interface RoutingRule { - /** - * A container for describing a condition that must be met for the specified redirect to apply. For example, 1. If request is for pages in the /docs folder, redirect to the /documents folder. 2. If request results in HTTP error 4xx, redirect request to another host where you might process the error. - */ - Condition?: Condition; - /** - * Container for redirect information. You can redirect requests to another host, to another page, or with another protocol. In the event of an error, you can can specify a different error code to return. - */ - Redirect: Redirect; - } - export type RoutingRules = RoutingRule[]; - export interface Rule { - Expiration?: LifecycleExpiration; - /** - * Unique identifier for the rule. The value cannot be longer than 255 characters. - */ - ID?: ID; - /** - * Prefix identifying one or more objects to which the rule applies. - */ - Prefix: Prefix; - /** - * If 'Enabled', the rule is currently being applied. If 'Disabled', the rule is not currently being applied. - */ - Status: ExpirationStatus; - Transition?: Transition; - NoncurrentVersionTransition?: NoncurrentVersionTransition; - NoncurrentVersionExpiration?: NoncurrentVersionExpiration; - AbortIncompleteMultipartUpload?: AbortIncompleteMultipartUpload; - } - export type Rules = Rule[]; - export interface S3KeyFilter { - FilterRules?: FilterRuleList; - } - export type SSECustomerAlgorithm = string; - export type SSECustomerKey = Buffer|Uint8Array|Blob|string; - export type SSECustomerKeyMD5 = string; - export type SSEKMSKeyId = string; - export type ServerSideEncryption = "AES256"|"aws:kms"|string; - export type Size = number; - export type StartAfter = string; - export type StorageClass = "STANDARD"|"REDUCED_REDUNDANCY"|"STANDARD_IA"|string; - export interface StorageClassAnalysis { - /** - * A container used to describe how data related to the storage class analysis should be exported. - */ - DataExport?: StorageClassAnalysisDataExport; - } - export interface StorageClassAnalysisDataExport { - /** - * The version of the output schema to use when exporting data. Must be V_1. - */ - OutputSchemaVersion: StorageClassAnalysisSchemaVersion; - /** - * The place to store the data for an analysis. - */ - Destination: AnalyticsExportDestination; - } - export type StorageClassAnalysisSchemaVersion = "V_1"|string; - export type Suffix = string; - export interface Tag { - /** - * Name of the tag. - */ - Key: ObjectKey; - /** - * Value of the tag. - */ - Value: Value; - } - export type TagCount = number; - export type TagSet = Tag[]; - export interface Tagging { - TagSet: TagSet; - } - export type TaggingDirective = "COPY"|"REPLACE"|string; - export type TaggingHeader = string; - export type TargetBucket = string; - export interface TargetGrant { - Grantee?: Grantee; - /** - * Logging permissions assigned to the Grantee for the bucket. - */ - Permission?: BucketLogsPermission; - } - export type TargetGrants = TargetGrant[]; - export type TargetPrefix = string; - export type Tier = "Standard"|"Bulk"|"Expedited"|string; - export type Token = string; - export type TopicArn = string; - export interface TopicConfiguration { - Id?: NotificationId; - /** - * Amazon SNS topic ARN to which Amazon S3 will publish a message when it detects events of specified type. - */ - TopicArn: TopicArn; - Events: EventList; - Filter?: NotificationConfigurationFilter; - } - export interface TopicConfigurationDeprecated { - Id?: NotificationId; - Events?: EventList; - /** - * Bucket event for which to send notifications. - */ - Event?: Event; - /** - * Amazon SNS topic to which Amazon S3 will publish a message to report the specified events for the bucket. - */ - Topic?: TopicArn; - } - export type TopicConfigurationList = TopicConfiguration[]; - export interface Transition { - /** - * Indicates at what date the object is to be moved or deleted. Should be in GMT ISO 8601 Format. - */ - Date?: _Date; - /** - * Indicates the lifetime, in days, of the objects that are subject to the rule. The value must be a non-zero positive integer. - */ - Days?: Days; - /** - * The class of storage used to store the object. - */ - StorageClass?: TransitionStorageClass; - } - export type TransitionList = Transition[]; - export type TransitionStorageClass = "GLACIER"|"STANDARD_IA"|string; - export type Type = "CanonicalUser"|"AmazonCustomerByEmail"|"Group"|string; - export type URI = string; - export type UploadIdMarker = string; - export interface UploadPartCopyOutput { - /** - * The version of the source object that was copied, if you have enabled versioning on the source bucket. - */ - CopySourceVersionId?: CopySourceVersionId; - CopyPartResult?: CopyPartResult; - /** - * The Server-side encryption algorithm used when storing this object in S3 (e.g., AES256, aws:kms). - */ - ServerSideEncryption?: ServerSideEncryption; - /** - * If server-side encryption with a customer-provided encryption key was requested, the response will include this header confirming the encryption algorithm used. - */ - SSECustomerAlgorithm?: SSECustomerAlgorithm; - /** - * If server-side encryption with a customer-provided encryption key was requested, the response will include this header to provide round trip message integrity verification of the customer-provided encryption key. - */ - SSECustomerKeyMD5?: SSECustomerKeyMD5; - /** - * If present, specifies the ID of the AWS Key Management Service (KMS) master encryption key that was used for the object. - */ - SSEKMSKeyId?: SSEKMSKeyId; - RequestCharged?: RequestCharged; - } - export interface UploadPartCopyRequest { - Bucket: BucketName; - /** - * The name of the source bucket and key name of the source object, separated by a slash (/). Must be URL-encoded. - */ - CopySource: CopySource; - /** - * Copies the object if its entity tag (ETag) matches the specified tag. - */ - CopySourceIfMatch?: CopySourceIfMatch; - /** - * Copies the object if it has been modified since the specified time. - */ - CopySourceIfModifiedSince?: CopySourceIfModifiedSince; - /** - * Copies the object if its entity tag (ETag) is different than the specified ETag. - */ - CopySourceIfNoneMatch?: CopySourceIfNoneMatch; - /** - * Copies the object if it hasn't been modified since the specified time. - */ - CopySourceIfUnmodifiedSince?: CopySourceIfUnmodifiedSince; - /** - * The range of bytes to copy from the source object. The range value must use the form bytes=first-last, where the first and last are the zero-based byte offsets to copy. For example, bytes=0-9 indicates that you want to copy the first ten bytes of the source. You can copy a range only if the source object is greater than 5 GB. - */ - CopySourceRange?: CopySourceRange; - Key: ObjectKey; - /** - * Part number of part being copied. This is a positive integer between 1 and 10,000. - */ - PartNumber: PartNumber; - /** - * Upload ID identifying the multipart upload whose part is being copied. - */ - UploadId: MultipartUploadId; - /** - * Specifies the algorithm to use to when encrypting the object (e.g., AES256). - */ - SSECustomerAlgorithm?: SSECustomerAlgorithm; - /** - * Specifies the customer-provided encryption key for Amazon S3 to use in encrypting data. This value is used to store the object and then it is discarded; Amazon does not store the encryption key. The key must be appropriate for use with the algorithm specified in the x-amz-server-side​-encryption​-customer-algorithm header. This must be the same encryption key specified in the initiate multipart upload request. - */ - SSECustomerKey?: SSECustomerKey; - /** - * Specifies the 128-bit MD5 digest of the encryption key according to RFC 1321. Amazon S3 uses this header for a message integrity check to ensure the encryption key was transmitted without error. - */ - SSECustomerKeyMD5?: SSECustomerKeyMD5; - /** - * Specifies the algorithm to use when decrypting the source object (e.g., AES256). - */ - CopySourceSSECustomerAlgorithm?: CopySourceSSECustomerAlgorithm; - /** - * Specifies the customer-provided encryption key for Amazon S3 to use to decrypt the source object. The encryption key provided in this header must be one that was used when the source object was created. - */ - CopySourceSSECustomerKey?: CopySourceSSECustomerKey; - /** - * Specifies the 128-bit MD5 digest of the encryption key according to RFC 1321. Amazon S3 uses this header for a message integrity check to ensure the encryption key was transmitted without error. - */ - CopySourceSSECustomerKeyMD5?: CopySourceSSECustomerKeyMD5; - RequestPayer?: RequestPayer; - } - export interface UploadPartOutput { - /** - * The Server-side encryption algorithm used when storing this object in S3 (e.g., AES256, aws:kms). - */ - ServerSideEncryption?: ServerSideEncryption; - /** - * Entity tag for the uploaded object. - */ - ETag?: ETag; - /** - * If server-side encryption with a customer-provided encryption key was requested, the response will include this header confirming the encryption algorithm used. - */ - SSECustomerAlgorithm?: SSECustomerAlgorithm; - /** - * If server-side encryption with a customer-provided encryption key was requested, the response will include this header to provide round trip message integrity verification of the customer-provided encryption key. - */ - SSECustomerKeyMD5?: SSECustomerKeyMD5; - /** - * If present, specifies the ID of the AWS Key Management Service (KMS) master encryption key that was used for the object. - */ - SSEKMSKeyId?: SSEKMSKeyId; - RequestCharged?: RequestCharged; - } - export interface UploadPartRequest { - /** - * Object data. - */ - Body?: Body; - /** - * Name of the bucket to which the multipart upload was initiated. - */ - Bucket: BucketName; - /** - * Size of the body in bytes. This parameter is useful when the size of the body cannot be determined automatically. - */ - ContentLength?: ContentLength; - /** - * The base64-encoded 128-bit MD5 digest of the part data. - */ - ContentMD5?: ContentMD5; - /** - * Object key for which the multipart upload was initiated. - */ - Key: ObjectKey; - /** - * Part number of part being uploaded. This is a positive integer between 1 and 10,000. - */ - PartNumber: PartNumber; - /** - * Upload ID identifying the multipart upload whose part is being uploaded. - */ - UploadId: MultipartUploadId; - /** - * Specifies the algorithm to use to when encrypting the object (e.g., AES256). - */ - SSECustomerAlgorithm?: SSECustomerAlgorithm; - /** - * Specifies the customer-provided encryption key for Amazon S3 to use in encrypting data. This value is used to store the object and then it is discarded; Amazon does not store the encryption key. The key must be appropriate for use with the algorithm specified in the x-amz-server-side​-encryption​-customer-algorithm header. This must be the same encryption key specified in the initiate multipart upload request. - */ - SSECustomerKey?: SSECustomerKey; - /** - * Specifies the 128-bit MD5 digest of the encryption key according to RFC 1321. Amazon S3 uses this header for a message integrity check to ensure the encryption key was transmitted without error. - */ - SSECustomerKeyMD5?: SSECustomerKeyMD5; - RequestPayer?: RequestPayer; - } - export type Value = string; - export type VersionIdMarker = string; - export interface VersioningConfiguration { - /** - * Specifies whether MFA delete is enabled in the bucket versioning configuration. This element is only returned if the bucket has been configured with MFA delete. If the bucket has never been so configured, this element is not returned. - */ - MFADelete?: MFADelete; - /** - * The versioning state of the bucket. - */ - Status?: BucketVersioningStatus; - } - export interface WebsiteConfiguration { - ErrorDocument?: ErrorDocument; - IndexDocument?: IndexDocument; - RedirectAllRequestsTo?: RedirectAllRequestsTo; - RoutingRules?: RoutingRules; - } - export type WebsiteRedirectLocation = string; - /** - * A string in YYYY-MM-DD format that represents the latest possible API version that can be used in this service. Specify 'latest' to use the latest possible version. - */ - export type apiVersion = "2006-03-01"|"latest"|string; - export interface ClientApiVersions { - /** - * A string in YYYY-MM-DD format that represents the latest possible API version that can be used in this service. Specify 'latest' to use the latest possible version. - */ - apiVersion?: apiVersion; - } - export type ClientConfiguration = ServiceConfigurationOptions & UseDualstackConfigOptions & ClientApiVersions; - /** - * Contains interfaces for use with the S3 client. - */ - export import Types = S3; -} -export = S3; diff --git a/workshops/monte-carlo-on-ec2-spot-fleet/src/web/node_modules/aws-sdk/clients/s3.js b/workshops/monte-carlo-on-ec2-spot-fleet/src/web/node_modules/aws-sdk/clients/s3.js deleted file mode 100644 index 7ad15078..00000000 --- a/workshops/monte-carlo-on-ec2-spot-fleet/src/web/node_modules/aws-sdk/clients/s3.js +++ /dev/null @@ -1,20 +0,0 @@ -require('../lib/node_loader'); -var AWS = require('../lib/core'); -var Service = AWS.Service; -var apiLoader = AWS.apiLoader; - -apiLoader.services['s3'] = {}; -AWS.S3 = Service.defineService('s3', ['2006-03-01']); -require('../lib/services/s3'); -Object.defineProperty(apiLoader.services['s3'], '2006-03-01', { - get: function get() { - var model = require('../apis/s3-2006-03-01.min.json'); - model.paginators = require('../apis/s3-2006-03-01.paginators.json').pagination; - model.waiters = require('../apis/s3-2006-03-01.waiters2.json').waiters; - return model; - }, - enumerable: true, - configurable: true -}); - -module.exports = AWS.S3; diff --git a/workshops/monte-carlo-on-ec2-spot-fleet/src/web/node_modules/aws-sdk/clients/servicecatalog.d.ts b/workshops/monte-carlo-on-ec2-spot-fleet/src/web/node_modules/aws-sdk/clients/servicecatalog.d.ts deleted file mode 100644 index efa82f14..00000000 --- a/workshops/monte-carlo-on-ec2-spot-fleet/src/web/node_modules/aws-sdk/clients/servicecatalog.d.ts +++ /dev/null @@ -1,2501 +0,0 @@ -import {Request} from '../lib/request'; -import {Response} from '../lib/response'; -import {AWSError} from '../lib/error'; -import {Service} from '../lib/service'; -import {ServiceConfigurationOptions} from '../lib/service'; -import {ConfigBase as Config} from '../lib/config'; -interface Blob {} -declare class ServiceCatalog extends Service { - /** - * Constructs a service object. This object has one method for each API operation. - */ - constructor(options?: ServiceCatalog.Types.ClientConfiguration) - config: Config & ServiceCatalog.Types.ClientConfiguration; - /** - * Accepts an offer to share a portfolio. - */ - acceptPortfolioShare(params: ServiceCatalog.Types.AcceptPortfolioShareInput, callback?: (err: AWSError, data: ServiceCatalog.Types.AcceptPortfolioShareOutput) => void): Request; - /** - * Accepts an offer to share a portfolio. - */ - acceptPortfolioShare(callback?: (err: AWSError, data: ServiceCatalog.Types.AcceptPortfolioShareOutput) => void): Request; - /** - * Associates the specified principal ARN with the specified portfolio. - */ - associatePrincipalWithPortfolio(params: ServiceCatalog.Types.AssociatePrincipalWithPortfolioInput, callback?: (err: AWSError, data: ServiceCatalog.Types.AssociatePrincipalWithPortfolioOutput) => void): Request; - /** - * Associates the specified principal ARN with the specified portfolio. - */ - associatePrincipalWithPortfolio(callback?: (err: AWSError, data: ServiceCatalog.Types.AssociatePrincipalWithPortfolioOutput) => void): Request; - /** - * Associates a product with a portfolio. - */ - associateProductWithPortfolio(params: ServiceCatalog.Types.AssociateProductWithPortfolioInput, callback?: (err: AWSError, data: ServiceCatalog.Types.AssociateProductWithPortfolioOutput) => void): Request; - /** - * Associates a product with a portfolio. - */ - associateProductWithPortfolio(callback?: (err: AWSError, data: ServiceCatalog.Types.AssociateProductWithPortfolioOutput) => void): Request; - /** - * Associate a TagOption identifier with a resource identifier. - */ - associateTagOptionWithResource(params: ServiceCatalog.Types.AssociateTagOptionWithResourceInput, callback?: (err: AWSError, data: ServiceCatalog.Types.AssociateTagOptionWithResourceOutput) => void): Request; - /** - * Associate a TagOption identifier with a resource identifier. - */ - associateTagOptionWithResource(callback?: (err: AWSError, data: ServiceCatalog.Types.AssociateTagOptionWithResourceOutput) => void): Request; - /** - * Copies the specified source product to the specified target product or a new product. You can copy the product to the same account or another account. You can copy the product to the same region or another region. This operation is performed asynchronously. To track the progress of the operation, use DescribeCopyProductStatus. - */ - copyProduct(params: ServiceCatalog.Types.CopyProductInput, callback?: (err: AWSError, data: ServiceCatalog.Types.CopyProductOutput) => void): Request; - /** - * Copies the specified source product to the specified target product or a new product. You can copy the product to the same account or another account. You can copy the product to the same region or another region. This operation is performed asynchronously. To track the progress of the operation, use DescribeCopyProductStatus. - */ - copyProduct(callback?: (err: AWSError, data: ServiceCatalog.Types.CopyProductOutput) => void): Request; - /** - * Creates a new constraint. For more information, see Using Constraints. - */ - createConstraint(params: ServiceCatalog.Types.CreateConstraintInput, callback?: (err: AWSError, data: ServiceCatalog.Types.CreateConstraintOutput) => void): Request; - /** - * Creates a new constraint. For more information, see Using Constraints. - */ - createConstraint(callback?: (err: AWSError, data: ServiceCatalog.Types.CreateConstraintOutput) => void): Request; - /** - * Creates a new portfolio. - */ - createPortfolio(params: ServiceCatalog.Types.CreatePortfolioInput, callback?: (err: AWSError, data: ServiceCatalog.Types.CreatePortfolioOutput) => void): Request; - /** - * Creates a new portfolio. - */ - createPortfolio(callback?: (err: AWSError, data: ServiceCatalog.Types.CreatePortfolioOutput) => void): Request; - /** - * Creates a new portfolio share. - */ - createPortfolioShare(params: ServiceCatalog.Types.CreatePortfolioShareInput, callback?: (err: AWSError, data: ServiceCatalog.Types.CreatePortfolioShareOutput) => void): Request; - /** - * Creates a new portfolio share. - */ - createPortfolioShare(callback?: (err: AWSError, data: ServiceCatalog.Types.CreatePortfolioShareOutput) => void): Request; - /** - * Creates a new product. - */ - createProduct(params: ServiceCatalog.Types.CreateProductInput, callback?: (err: AWSError, data: ServiceCatalog.Types.CreateProductOutput) => void): Request; - /** - * Creates a new product. - */ - createProduct(callback?: (err: AWSError, data: ServiceCatalog.Types.CreateProductOutput) => void): Request; - /** - * Create a new provisioning artifact for the specified product. This operation does not work with a product that has been shared with you. - */ - createProvisioningArtifact(params: ServiceCatalog.Types.CreateProvisioningArtifactInput, callback?: (err: AWSError, data: ServiceCatalog.Types.CreateProvisioningArtifactOutput) => void): Request; - /** - * Create a new provisioning artifact for the specified product. This operation does not work with a product that has been shared with you. - */ - createProvisioningArtifact(callback?: (err: AWSError, data: ServiceCatalog.Types.CreateProvisioningArtifactOutput) => void): Request; - /** - * Create a new TagOption. - */ - createTagOption(params: ServiceCatalog.Types.CreateTagOptionInput, callback?: (err: AWSError, data: ServiceCatalog.Types.CreateTagOptionOutput) => void): Request; - /** - * Create a new TagOption. - */ - createTagOption(callback?: (err: AWSError, data: ServiceCatalog.Types.CreateTagOptionOutput) => void): Request; - /** - * Deletes the specified constraint. - */ - deleteConstraint(params: ServiceCatalog.Types.DeleteConstraintInput, callback?: (err: AWSError, data: ServiceCatalog.Types.DeleteConstraintOutput) => void): Request; - /** - * Deletes the specified constraint. - */ - deleteConstraint(callback?: (err: AWSError, data: ServiceCatalog.Types.DeleteConstraintOutput) => void): Request; - /** - * Deletes the specified portfolio. This operation does not work with a portfolio that has been shared with you or if it has products, users, constraints, or shared accounts associated with it. - */ - deletePortfolio(params: ServiceCatalog.Types.DeletePortfolioInput, callback?: (err: AWSError, data: ServiceCatalog.Types.DeletePortfolioOutput) => void): Request; - /** - * Deletes the specified portfolio. This operation does not work with a portfolio that has been shared with you or if it has products, users, constraints, or shared accounts associated with it. - */ - deletePortfolio(callback?: (err: AWSError, data: ServiceCatalog.Types.DeletePortfolioOutput) => void): Request; - /** - * Deletes the specified portfolio share. - */ - deletePortfolioShare(params: ServiceCatalog.Types.DeletePortfolioShareInput, callback?: (err: AWSError, data: ServiceCatalog.Types.DeletePortfolioShareOutput) => void): Request; - /** - * Deletes the specified portfolio share. - */ - deletePortfolioShare(callback?: (err: AWSError, data: ServiceCatalog.Types.DeletePortfolioShareOutput) => void): Request; - /** - * Deletes the specified product. This operation does not work with a product that has been shared with you or is associated with a portfolio. - */ - deleteProduct(params: ServiceCatalog.Types.DeleteProductInput, callback?: (err: AWSError, data: ServiceCatalog.Types.DeleteProductOutput) => void): Request; - /** - * Deletes the specified product. This operation does not work with a product that has been shared with you or is associated with a portfolio. - */ - deleteProduct(callback?: (err: AWSError, data: ServiceCatalog.Types.DeleteProductOutput) => void): Request; - /** - * Deletes the specified provisioning artifact. This operation does not work on a provisioning artifact associated with a product that has been shared with you, or on the last provisioning artifact associated with a product (a product must have at least one provisioning artifact). - */ - deleteProvisioningArtifact(params: ServiceCatalog.Types.DeleteProvisioningArtifactInput, callback?: (err: AWSError, data: ServiceCatalog.Types.DeleteProvisioningArtifactOutput) => void): Request; - /** - * Deletes the specified provisioning artifact. This operation does not work on a provisioning artifact associated with a product that has been shared with you, or on the last provisioning artifact associated with a product (a product must have at least one provisioning artifact). - */ - deleteProvisioningArtifact(callback?: (err: AWSError, data: ServiceCatalog.Types.DeleteProvisioningArtifactOutput) => void): Request; - /** - * Retrieves detailed information for a specified constraint. - */ - describeConstraint(params: ServiceCatalog.Types.DescribeConstraintInput, callback?: (err: AWSError, data: ServiceCatalog.Types.DescribeConstraintOutput) => void): Request; - /** - * Retrieves detailed information for a specified constraint. - */ - describeConstraint(callback?: (err: AWSError, data: ServiceCatalog.Types.DescribeConstraintOutput) => void): Request; - /** - * Describes the status of the specified copy product operation. - */ - describeCopyProductStatus(params: ServiceCatalog.Types.DescribeCopyProductStatusInput, callback?: (err: AWSError, data: ServiceCatalog.Types.DescribeCopyProductStatusOutput) => void): Request; - /** - * Describes the status of the specified copy product operation. - */ - describeCopyProductStatus(callback?: (err: AWSError, data: ServiceCatalog.Types.DescribeCopyProductStatusOutput) => void): Request; - /** - * Retrieves detailed information and any tags associated with the specified portfolio. - */ - describePortfolio(params: ServiceCatalog.Types.DescribePortfolioInput, callback?: (err: AWSError, data: ServiceCatalog.Types.DescribePortfolioOutput) => void): Request; - /** - * Retrieves detailed information and any tags associated with the specified portfolio. - */ - describePortfolio(callback?: (err: AWSError, data: ServiceCatalog.Types.DescribePortfolioOutput) => void): Request; - /** - * Retrieves information about a specified product. This operation is functionally identical to DescribeProductView except that it takes as input ProductId instead of ProductViewId. - */ - describeProduct(params: ServiceCatalog.Types.DescribeProductInput, callback?: (err: AWSError, data: ServiceCatalog.Types.DescribeProductOutput) => void): Request; - /** - * Retrieves information about a specified product. This operation is functionally identical to DescribeProductView except that it takes as input ProductId instead of ProductViewId. - */ - describeProduct(callback?: (err: AWSError, data: ServiceCatalog.Types.DescribeProductOutput) => void): Request; - /** - * Retrieves information about a specified product, run with administrator access. - */ - describeProductAsAdmin(params: ServiceCatalog.Types.DescribeProductAsAdminInput, callback?: (err: AWSError, data: ServiceCatalog.Types.DescribeProductAsAdminOutput) => void): Request; - /** - * Retrieves information about a specified product, run with administrator access. - */ - describeProductAsAdmin(callback?: (err: AWSError, data: ServiceCatalog.Types.DescribeProductAsAdminOutput) => void): Request; - /** - * Retrieves information about a specified product. This operation is functionally identical to DescribeProduct except that it takes as input ProductViewId instead of ProductId. - */ - describeProductView(params: ServiceCatalog.Types.DescribeProductViewInput, callback?: (err: AWSError, data: ServiceCatalog.Types.DescribeProductViewOutput) => void): Request; - /** - * Retrieves information about a specified product. This operation is functionally identical to DescribeProduct except that it takes as input ProductViewId instead of ProductId. - */ - describeProductView(callback?: (err: AWSError, data: ServiceCatalog.Types.DescribeProductViewOutput) => void): Request; - /** - * Retrieve detailed information about the provisioned product. - */ - describeProvisionedProduct(params: ServiceCatalog.Types.DescribeProvisionedProductInput, callback?: (err: AWSError, data: ServiceCatalog.Types.DescribeProvisionedProductOutput) => void): Request; - /** - * Retrieve detailed information about the provisioned product. - */ - describeProvisionedProduct(callback?: (err: AWSError, data: ServiceCatalog.Types.DescribeProvisionedProductOutput) => void): Request; - /** - * Retrieves detailed information about the specified provisioning artifact. - */ - describeProvisioningArtifact(params: ServiceCatalog.Types.DescribeProvisioningArtifactInput, callback?: (err: AWSError, data: ServiceCatalog.Types.DescribeProvisioningArtifactOutput) => void): Request; - /** - * Retrieves detailed information about the specified provisioning artifact. - */ - describeProvisioningArtifact(callback?: (err: AWSError, data: ServiceCatalog.Types.DescribeProvisioningArtifactOutput) => void): Request; - /** - * Provides information about parameters required to provision a specified product in a specified manner. Use this operation to obtain the list of ProvisioningArtifactParameters parameters available to call the ProvisionProduct operation for the specified product. If the output contains a TagOption key with an empty list of values, there is a TagOption conflict for that key. The end user cannot take action to fix the conflict, and launch is not blocked. In subsequent calls to the ProvisionProduct operation, do not include conflicted TagOption keys as tags. Calls to ProvisionProduct with empty TagOption values cause the error "Parameter validation failed: Missing required parameter in Tags[N]:Value ". Calls to ProvisionProduct with conflicted TagOption keys automatically tag the provisioned product with the conflicted keys with the value "sc-tagoption-conflict-portfolioId-productId". - */ - describeProvisioningParameters(params: ServiceCatalog.Types.DescribeProvisioningParametersInput, callback?: (err: AWSError, data: ServiceCatalog.Types.DescribeProvisioningParametersOutput) => void): Request; - /** - * Provides information about parameters required to provision a specified product in a specified manner. Use this operation to obtain the list of ProvisioningArtifactParameters parameters available to call the ProvisionProduct operation for the specified product. If the output contains a TagOption key with an empty list of values, there is a TagOption conflict for that key. The end user cannot take action to fix the conflict, and launch is not blocked. In subsequent calls to the ProvisionProduct operation, do not include conflicted TagOption keys as tags. Calls to ProvisionProduct with empty TagOption values cause the error "Parameter validation failed: Missing required parameter in Tags[N]:Value ". Calls to ProvisionProduct with conflicted TagOption keys automatically tag the provisioned product with the conflicted keys with the value "sc-tagoption-conflict-portfolioId-productId". - */ - describeProvisioningParameters(callback?: (err: AWSError, data: ServiceCatalog.Types.DescribeProvisioningParametersOutput) => void): Request; - /** - * Retrieves a paginated list of the full details of a specific request. Use this operation after calling a request operation (ProvisionProduct, TerminateProvisionedProduct, or UpdateProvisionedProduct). - */ - describeRecord(params: ServiceCatalog.Types.DescribeRecordInput, callback?: (err: AWSError, data: ServiceCatalog.Types.DescribeRecordOutput) => void): Request; - /** - * Retrieves a paginated list of the full details of a specific request. Use this operation after calling a request operation (ProvisionProduct, TerminateProvisionedProduct, or UpdateProvisionedProduct). - */ - describeRecord(callback?: (err: AWSError, data: ServiceCatalog.Types.DescribeRecordOutput) => void): Request; - /** - * Describes a TagOption. - */ - describeTagOption(params: ServiceCatalog.Types.DescribeTagOptionInput, callback?: (err: AWSError, data: ServiceCatalog.Types.DescribeTagOptionOutput) => void): Request; - /** - * Describes a TagOption. - */ - describeTagOption(callback?: (err: AWSError, data: ServiceCatalog.Types.DescribeTagOptionOutput) => void): Request; - /** - * Disassociates a previously associated principal ARN from a specified portfolio. - */ - disassociatePrincipalFromPortfolio(params: ServiceCatalog.Types.DisassociatePrincipalFromPortfolioInput, callback?: (err: AWSError, data: ServiceCatalog.Types.DisassociatePrincipalFromPortfolioOutput) => void): Request; - /** - * Disassociates a previously associated principal ARN from a specified portfolio. - */ - disassociatePrincipalFromPortfolio(callback?: (err: AWSError, data: ServiceCatalog.Types.DisassociatePrincipalFromPortfolioOutput) => void): Request; - /** - * Disassociates the specified product from the specified portfolio. - */ - disassociateProductFromPortfolio(params: ServiceCatalog.Types.DisassociateProductFromPortfolioInput, callback?: (err: AWSError, data: ServiceCatalog.Types.DisassociateProductFromPortfolioOutput) => void): Request; - /** - * Disassociates the specified product from the specified portfolio. - */ - disassociateProductFromPortfolio(callback?: (err: AWSError, data: ServiceCatalog.Types.DisassociateProductFromPortfolioOutput) => void): Request; - /** - * Disassociates a TagOption from a resource. - */ - disassociateTagOptionFromResource(params: ServiceCatalog.Types.DisassociateTagOptionFromResourceInput, callback?: (err: AWSError, data: ServiceCatalog.Types.DisassociateTagOptionFromResourceOutput) => void): Request; - /** - * Disassociates a TagOption from a resource. - */ - disassociateTagOptionFromResource(callback?: (err: AWSError, data: ServiceCatalog.Types.DisassociateTagOptionFromResourceOutput) => void): Request; - /** - * Lists details of all portfolios for which sharing was accepted by this account. - */ - listAcceptedPortfolioShares(params: ServiceCatalog.Types.ListAcceptedPortfolioSharesInput, callback?: (err: AWSError, data: ServiceCatalog.Types.ListAcceptedPortfolioSharesOutput) => void): Request; - /** - * Lists details of all portfolios for which sharing was accepted by this account. - */ - listAcceptedPortfolioShares(callback?: (err: AWSError, data: ServiceCatalog.Types.ListAcceptedPortfolioSharesOutput) => void): Request; - /** - * Retrieves detailed constraint information for the specified portfolio and product. - */ - listConstraintsForPortfolio(params: ServiceCatalog.Types.ListConstraintsForPortfolioInput, callback?: (err: AWSError, data: ServiceCatalog.Types.ListConstraintsForPortfolioOutput) => void): Request; - /** - * Retrieves detailed constraint information for the specified portfolio and product. - */ - listConstraintsForPortfolio(callback?: (err: AWSError, data: ServiceCatalog.Types.ListConstraintsForPortfolioOutput) => void): Request; - /** - * Returns a paginated list of all paths to a specified product. A path is how the user has access to a specified product, and is necessary when provisioning a product. A path also determines the constraints put on the product. - */ - listLaunchPaths(params: ServiceCatalog.Types.ListLaunchPathsInput, callback?: (err: AWSError, data: ServiceCatalog.Types.ListLaunchPathsOutput) => void): Request; - /** - * Returns a paginated list of all paths to a specified product. A path is how the user has access to a specified product, and is necessary when provisioning a product. A path also determines the constraints put on the product. - */ - listLaunchPaths(callback?: (err: AWSError, data: ServiceCatalog.Types.ListLaunchPathsOutput) => void): Request; - /** - * Lists the account IDs that have been authorized sharing of the specified portfolio. - */ - listPortfolioAccess(params: ServiceCatalog.Types.ListPortfolioAccessInput, callback?: (err: AWSError, data: ServiceCatalog.Types.ListPortfolioAccessOutput) => void): Request; - /** - * Lists the account IDs that have been authorized sharing of the specified portfolio. - */ - listPortfolioAccess(callback?: (err: AWSError, data: ServiceCatalog.Types.ListPortfolioAccessOutput) => void): Request; - /** - * Lists all portfolios in the catalog. - */ - listPortfolios(params: ServiceCatalog.Types.ListPortfoliosInput, callback?: (err: AWSError, data: ServiceCatalog.Types.ListPortfoliosOutput) => void): Request; - /** - * Lists all portfolios in the catalog. - */ - listPortfolios(callback?: (err: AWSError, data: ServiceCatalog.Types.ListPortfoliosOutput) => void): Request; - /** - * Lists all portfolios that the specified product is associated with. - */ - listPortfoliosForProduct(params: ServiceCatalog.Types.ListPortfoliosForProductInput, callback?: (err: AWSError, data: ServiceCatalog.Types.ListPortfoliosForProductOutput) => void): Request; - /** - * Lists all portfolios that the specified product is associated with. - */ - listPortfoliosForProduct(callback?: (err: AWSError, data: ServiceCatalog.Types.ListPortfoliosForProductOutput) => void): Request; - /** - * Lists all principal ARNs associated with the specified portfolio. - */ - listPrincipalsForPortfolio(params: ServiceCatalog.Types.ListPrincipalsForPortfolioInput, callback?: (err: AWSError, data: ServiceCatalog.Types.ListPrincipalsForPortfolioOutput) => void): Request; - /** - * Lists all principal ARNs associated with the specified portfolio. - */ - listPrincipalsForPortfolio(callback?: (err: AWSError, data: ServiceCatalog.Types.ListPrincipalsForPortfolioOutput) => void): Request; - /** - * Lists all provisioning artifacts associated with the specified product. - */ - listProvisioningArtifacts(params: ServiceCatalog.Types.ListProvisioningArtifactsInput, callback?: (err: AWSError, data: ServiceCatalog.Types.ListProvisioningArtifactsOutput) => void): Request; - /** - * Lists all provisioning artifacts associated with the specified product. - */ - listProvisioningArtifacts(callback?: (err: AWSError, data: ServiceCatalog.Types.ListProvisioningArtifactsOutput) => void): Request; - /** - * Returns a paginated list of all performed requests, in the form of RecordDetails objects that are filtered as specified. - */ - listRecordHistory(params: ServiceCatalog.Types.ListRecordHistoryInput, callback?: (err: AWSError, data: ServiceCatalog.Types.ListRecordHistoryOutput) => void): Request; - /** - * Returns a paginated list of all performed requests, in the form of RecordDetails objects that are filtered as specified. - */ - listRecordHistory(callback?: (err: AWSError, data: ServiceCatalog.Types.ListRecordHistoryOutput) => void): Request; - /** - * Lists resources associated with a TagOption. - */ - listResourcesForTagOption(params: ServiceCatalog.Types.ListResourcesForTagOptionInput, callback?: (err: AWSError, data: ServiceCatalog.Types.ListResourcesForTagOptionOutput) => void): Request; - /** - * Lists resources associated with a TagOption. - */ - listResourcesForTagOption(callback?: (err: AWSError, data: ServiceCatalog.Types.ListResourcesForTagOptionOutput) => void): Request; - /** - * Lists detailed TagOptions information. - */ - listTagOptions(params: ServiceCatalog.Types.ListTagOptionsInput, callback?: (err: AWSError, data: ServiceCatalog.Types.ListTagOptionsOutput) => void): Request; - /** - * Lists detailed TagOptions information. - */ - listTagOptions(callback?: (err: AWSError, data: ServiceCatalog.Types.ListTagOptionsOutput) => void): Request; - /** - * Requests a provision of a specified product. A provisioned product is a resourced instance for a product. For example, provisioning a CloudFormation-template-backed product results in launching a CloudFormation stack and all the underlying resources that come with it. You can check the status of this request using the DescribeRecord operation. The error "Parameter validation failed: Missing required parameter in Tags[N]:Value" indicates that your request contains a tag which has a tag key but no corresponding tag value (value is empty or null). Your call may have included values returned from a DescribeProvisioningParameters call that resulted in a TagOption key with an empty list. This happens when TagOption keys are in conflict. For more information, see DescribeProvisioningParameters. - */ - provisionProduct(params: ServiceCatalog.Types.ProvisionProductInput, callback?: (err: AWSError, data: ServiceCatalog.Types.ProvisionProductOutput) => void): Request; - /** - * Requests a provision of a specified product. A provisioned product is a resourced instance for a product. For example, provisioning a CloudFormation-template-backed product results in launching a CloudFormation stack and all the underlying resources that come with it. You can check the status of this request using the DescribeRecord operation. The error "Parameter validation failed: Missing required parameter in Tags[N]:Value" indicates that your request contains a tag which has a tag key but no corresponding tag value (value is empty or null). Your call may have included values returned from a DescribeProvisioningParameters call that resulted in a TagOption key with an empty list. This happens when TagOption keys are in conflict. For more information, see DescribeProvisioningParameters. - */ - provisionProduct(callback?: (err: AWSError, data: ServiceCatalog.Types.ProvisionProductOutput) => void): Request; - /** - * Rejects an offer to share a portfolio. - */ - rejectPortfolioShare(params: ServiceCatalog.Types.RejectPortfolioShareInput, callback?: (err: AWSError, data: ServiceCatalog.Types.RejectPortfolioShareOutput) => void): Request; - /** - * Rejects an offer to share a portfolio. - */ - rejectPortfolioShare(callback?: (err: AWSError, data: ServiceCatalog.Types.RejectPortfolioShareOutput) => void): Request; - /** - * Returns a paginated list of all the ProvisionedProduct objects that are currently available (not terminated). - */ - scanProvisionedProducts(params: ServiceCatalog.Types.ScanProvisionedProductsInput, callback?: (err: AWSError, data: ServiceCatalog.Types.ScanProvisionedProductsOutput) => void): Request; - /** - * Returns a paginated list of all the ProvisionedProduct objects that are currently available (not terminated). - */ - scanProvisionedProducts(callback?: (err: AWSError, data: ServiceCatalog.Types.ScanProvisionedProductsOutput) => void): Request; - /** - * Returns a paginated list all of the Products objects to which the caller has access. The output of this operation can be used as input for other operations, such as DescribeProductView. - */ - searchProducts(params: ServiceCatalog.Types.SearchProductsInput, callback?: (err: AWSError, data: ServiceCatalog.Types.SearchProductsOutput) => void): Request; - /** - * Returns a paginated list all of the Products objects to which the caller has access. The output of this operation can be used as input for other operations, such as DescribeProductView. - */ - searchProducts(callback?: (err: AWSError, data: ServiceCatalog.Types.SearchProductsOutput) => void): Request; - /** - * Retrieves summary and status information about all products created within the caller's account. If a portfolio ID is provided, this operation retrieves information for only those products that are associated with the specified portfolio. - */ - searchProductsAsAdmin(params: ServiceCatalog.Types.SearchProductsAsAdminInput, callback?: (err: AWSError, data: ServiceCatalog.Types.SearchProductsAsAdminOutput) => void): Request; - /** - * Retrieves summary and status information about all products created within the caller's account. If a portfolio ID is provided, this operation retrieves information for only those products that are associated with the specified portfolio. - */ - searchProductsAsAdmin(callback?: (err: AWSError, data: ServiceCatalog.Types.SearchProductsAsAdminOutput) => void): Request; - /** - * Requests termination of an existing ProvisionedProduct object. If there are Tags associated with the object, they are terminated when the ProvisionedProduct object is terminated. This operation does not delete any records associated with the ProvisionedProduct object. You can check the status of this request using the DescribeRecord operation. - */ - terminateProvisionedProduct(params: ServiceCatalog.Types.TerminateProvisionedProductInput, callback?: (err: AWSError, data: ServiceCatalog.Types.TerminateProvisionedProductOutput) => void): Request; - /** - * Requests termination of an existing ProvisionedProduct object. If there are Tags associated with the object, they are terminated when the ProvisionedProduct object is terminated. This operation does not delete any records associated with the ProvisionedProduct object. You can check the status of this request using the DescribeRecord operation. - */ - terminateProvisionedProduct(callback?: (err: AWSError, data: ServiceCatalog.Types.TerminateProvisionedProductOutput) => void): Request; - /** - * Updates an existing constraint. - */ - updateConstraint(params: ServiceCatalog.Types.UpdateConstraintInput, callback?: (err: AWSError, data: ServiceCatalog.Types.UpdateConstraintOutput) => void): Request; - /** - * Updates an existing constraint. - */ - updateConstraint(callback?: (err: AWSError, data: ServiceCatalog.Types.UpdateConstraintOutput) => void): Request; - /** - * Updates the specified portfolio's details. This operation does not work with a product that has been shared with you. - */ - updatePortfolio(params: ServiceCatalog.Types.UpdatePortfolioInput, callback?: (err: AWSError, data: ServiceCatalog.Types.UpdatePortfolioOutput) => void): Request; - /** - * Updates the specified portfolio's details. This operation does not work with a product that has been shared with you. - */ - updatePortfolio(callback?: (err: AWSError, data: ServiceCatalog.Types.UpdatePortfolioOutput) => void): Request; - /** - * Updates an existing product. - */ - updateProduct(params: ServiceCatalog.Types.UpdateProductInput, callback?: (err: AWSError, data: ServiceCatalog.Types.UpdateProductOutput) => void): Request; - /** - * Updates an existing product. - */ - updateProduct(callback?: (err: AWSError, data: ServiceCatalog.Types.UpdateProductOutput) => void): Request; - /** - * Requests updates to the configuration of an existing ProvisionedProduct object. If there are tags associated with the object, they cannot be updated or added with this operation. Depending on the specific updates requested, this operation may update with no interruption, with some interruption, or replace the ProvisionedProduct object entirely. You can check the status of this request using the DescribeRecord operation. - */ - updateProvisionedProduct(params: ServiceCatalog.Types.UpdateProvisionedProductInput, callback?: (err: AWSError, data: ServiceCatalog.Types.UpdateProvisionedProductOutput) => void): Request; - /** - * Requests updates to the configuration of an existing ProvisionedProduct object. If there are tags associated with the object, they cannot be updated or added with this operation. Depending on the specific updates requested, this operation may update with no interruption, with some interruption, or replace the ProvisionedProduct object entirely. You can check the status of this request using the DescribeRecord operation. - */ - updateProvisionedProduct(callback?: (err: AWSError, data: ServiceCatalog.Types.UpdateProvisionedProductOutput) => void): Request; - /** - * Updates an existing provisioning artifact's information. This operation does not work on a provisioning artifact associated with a product that has been shared with you. - */ - updateProvisioningArtifact(params: ServiceCatalog.Types.UpdateProvisioningArtifactInput, callback?: (err: AWSError, data: ServiceCatalog.Types.UpdateProvisioningArtifactOutput) => void): Request; - /** - * Updates an existing provisioning artifact's information. This operation does not work on a provisioning artifact associated with a product that has been shared with you. - */ - updateProvisioningArtifact(callback?: (err: AWSError, data: ServiceCatalog.Types.UpdateProvisioningArtifactOutput) => void): Request; - /** - * Updates an existing TagOption. - */ - updateTagOption(params: ServiceCatalog.Types.UpdateTagOptionInput, callback?: (err: AWSError, data: ServiceCatalog.Types.UpdateTagOptionOutput) => void): Request; - /** - * Updates an existing TagOption. - */ - updateTagOption(callback?: (err: AWSError, data: ServiceCatalog.Types.UpdateTagOptionOutput) => void): Request; -} -declare namespace ServiceCatalog { - export type AcceptLanguage = string; - export interface AcceptPortfolioShareInput { - /** - * The language code. en - English (default) jp - Japanese zh - Chinese - */ - AcceptLanguage?: AcceptLanguage; - /** - * The portfolio identifier. - */ - PortfolioId: Id; - } - export interface AcceptPortfolioShareOutput { - } - export interface AccessLevelFilter { - /** - * Specifies the access level. Account allows results at the account level. Role allows results based on the federated role of the specified user. User allows results limited to the specified user. - */ - Key?: AccessLevelFilterKey; - /** - * Specifies the user to which the access level applies. A value of Self is currently supported. - */ - Value?: AccessLevelFilterValue; - } - export type AccessLevelFilterKey = "Account"|"Role"|"User"|string; - export type AccessLevelFilterValue = string; - export type AccountId = string; - export type AccountIds = AccountId[]; - export type AddTags = Tag[]; - export type AllowedValue = string; - export type AllowedValues = AllowedValue[]; - export type ApproximateCount = number; - export interface AssociatePrincipalWithPortfolioInput { - /** - * The language code. en - English (default) jp - Japanese zh - Chinese - */ - AcceptLanguage?: AcceptLanguage; - /** - * The portfolio identifier. - */ - PortfolioId: Id; - /** - * The ARN representing the principal (IAM user, role, or group). - */ - PrincipalARN: PrincipalARN; - /** - * The principal type. Must be IAM - */ - PrincipalType: PrincipalType; - } - export interface AssociatePrincipalWithPortfolioOutput { - } - export interface AssociateProductWithPortfolioInput { - /** - * The language code. en - English (default) jp - Japanese zh - Chinese - */ - AcceptLanguage?: AcceptLanguage; - /** - * The product identifier. - */ - ProductId: Id; - /** - * The portfolio identifier. - */ - PortfolioId: Id; - /** - * The identifier of the source portfolio to use with this association. - */ - SourcePortfolioId?: Id; - } - export interface AssociateProductWithPortfolioOutput { - } - export interface AssociateTagOptionWithResourceInput { - /** - * The resource identifier. - */ - ResourceId: ResourceId; - /** - * The TagOption identifier. - */ - TagOptionId: TagOptionId; - } - export interface AssociateTagOptionWithResourceOutput { - } - export type AttributeValue = string; - export type ConstraintDescription = string; - export interface ConstraintDetail { - /** - * The identifier of the constraint. - */ - ConstraintId?: Id; - /** - * The type of the constraint. - */ - Type?: ConstraintType; - /** - * The text description of the constraint. - */ - Description?: ConstraintDescription; - /** - * The owner of the constraint. - */ - Owner?: AccountId; - } - export type ConstraintDetails = ConstraintDetail[]; - export type ConstraintParameters = string; - export type ConstraintSummaries = ConstraintSummary[]; - export interface ConstraintSummary { - /** - * The type of the constraint. - */ - Type?: ConstraintType; - /** - * The text description of the constraint. - */ - Description?: ConstraintDescription; - } - export type ConstraintType = string; - export type CopyOption = "CopyTags"|string; - export type CopyOptions = CopyOption[]; - export interface CopyProductInput { - /** - * The language code. en - English (default) jp - Japanese zh - Chinese - */ - AcceptLanguage?: AcceptLanguage; - /** - * The Amazon Resource Name (ARN) of the source product. - */ - SourceProductArn: ProductArn; - /** - * The ID of the target product. By default, a new product is created. - */ - TargetProductId?: Id; - /** - * A name for the target product. The default is the name of the source product. - */ - TargetProductName?: ProductViewName; - /** - * The IDs of the product versions to copy. By default, all provisioning artifacts are copied. - */ - SourceProvisioningArtifactIdentifiers?: SourceProvisioningArtifactProperties; - /** - * The copy options. If the value is CopyTags, the tags from the source product are copied to the target product. - */ - CopyOptions?: CopyOptions; - /** - * A token to disambiguate duplicate requests. You can use the same input in multiple requests, provided that you also specify a different idempotency token for each request. - */ - IdempotencyToken: IdempotencyToken; - } - export interface CopyProductOutput { - /** - * A unique token to pass to DescribeCopyProductStatus to track the progress of the operation. - */ - CopyProductToken?: Id; - } - export type CopyProductStatus = "SUCCEEDED"|"IN_PROGRESS"|"FAILED"|string; - export interface CreateConstraintInput { - /** - * The language code. en - English (default) jp - Japanese zh - Chinese - */ - AcceptLanguage?: AcceptLanguage; - /** - * The portfolio identifier. - */ - PortfolioId: Id; - /** - * The product identifier. - */ - ProductId: Id; - /** - * The constraint parameters. Expected values vary depending on which Type is specified. For more information, see the Examples section. For Type LAUNCH, the RoleArn property is required. For Type NOTIFICATION, the NotificationArns property is required. For Type TEMPLATE, the Rules property is required. - */ - Parameters: ConstraintParameters; - /** - * The type of the constraint. Case-sensitive valid values are: LAUNCH, NOTIFICATION, or TEMPLATE. - */ - Type: ConstraintType; - /** - * The text description of the constraint. - */ - Description?: ConstraintDescription; - /** - * A token to disambiguate duplicate requests. You can use the same input in multiple requests, provided that you also specify a different idempotency token for each request. - */ - IdempotencyToken: IdempotencyToken; - } - export interface CreateConstraintOutput { - /** - * The resulting detailed constraint information. - */ - ConstraintDetail?: ConstraintDetail; - /** - * The resulting constraint parameters. - */ - ConstraintParameters?: ConstraintParameters; - /** - * The status of the current request. - */ - Status?: Status; - } - export interface CreatePortfolioInput { - /** - * The language code. en - English (default) jp - Japanese zh - Chinese - */ - AcceptLanguage?: AcceptLanguage; - /** - * The name to use for display purposes. - */ - DisplayName: PortfolioDisplayName; - /** - * The text description of the portfolio. - */ - Description?: PortfolioDescription; - /** - * The name of the portfolio provider. - */ - ProviderName: ProviderName; - /** - * Tags to associate with the new portfolio. - */ - Tags?: AddTags; - /** - * A token to disambiguate duplicate requests. You can use the same input in multiple requests, provided that you also specify a different idempotency token for each request. - */ - IdempotencyToken: IdempotencyToken; - } - export interface CreatePortfolioOutput { - /** - * The resulting detailed portfolio information. - */ - PortfolioDetail?: PortfolioDetail; - /** - * Tags successfully associated with the new portfolio. - */ - Tags?: Tags; - } - export interface CreatePortfolioShareInput { - /** - * The language code. en - English (default) jp - Japanese zh - Chinese - */ - AcceptLanguage?: AcceptLanguage; - /** - * The portfolio identifier. - */ - PortfolioId: Id; - /** - * The account ID with which to share the portfolio. - */ - AccountId: AccountId; - } - export interface CreatePortfolioShareOutput { - } - export interface CreateProductInput { - /** - * The language code. en - English (default) jp - Japanese zh - Chinese - */ - AcceptLanguage?: AcceptLanguage; - /** - * The name of the product. - */ - Name: ProductViewName; - /** - * The owner of the product. - */ - Owner: ProductViewOwner; - /** - * The text description of the product. - */ - Description?: ProductViewShortDescription; - /** - * The distributor of the product. - */ - Distributor?: ProductViewOwner; - /** - * Support information about the product. - */ - SupportDescription?: SupportDescription; - /** - * Contact email for product support. - */ - SupportEmail?: SupportEmail; - /** - * Contact URL for product support. - */ - SupportUrl?: SupportUrl; - /** - * The type of the product to create. - */ - ProductType: ProductType; - /** - * Tags to associate with the new product. - */ - Tags?: AddTags; - /** - * Parameters for the provisioning artifact. - */ - ProvisioningArtifactParameters: ProvisioningArtifactProperties; - /** - * A token to disambiguate duplicate requests. You can use the same input in multiple requests, provided that you also specify a different idempotency token for each request. - */ - IdempotencyToken: IdempotencyToken; - } - export interface CreateProductOutput { - /** - * The resulting detailed product view information. - */ - ProductViewDetail?: ProductViewDetail; - /** - * The resulting detailed provisioning artifact information. - */ - ProvisioningArtifactDetail?: ProvisioningArtifactDetail; - /** - * Tags successfully associated with the new product. - */ - Tags?: Tags; - } - export interface CreateProvisioningArtifactInput { - /** - * The language code. en - English (default) jp - Japanese zh - Chinese - */ - AcceptLanguage?: AcceptLanguage; - /** - * The product identifier. - */ - ProductId: Id; - /** - * The parameters to use when creating the new provisioning artifact. - */ - Parameters: ProvisioningArtifactProperties; - /** - * A token to disambiguate duplicate requests. You can use the same input in multiple requests, provided that you also specify a different idempotency token for each request. - */ - IdempotencyToken: IdempotencyToken; - } - export interface CreateProvisioningArtifactOutput { - /** - * The resulting detailed provisioning artifact information. - */ - ProvisioningArtifactDetail?: ProvisioningArtifactDetail; - /** - * Additional information about the creation request for the provisioning artifact. - */ - Info?: ProvisioningArtifactInfo; - /** - * The status of the current request. - */ - Status?: Status; - } - export interface CreateTagOptionInput { - /** - * The TagOption key. - */ - Key: TagOptionKey; - /** - * The TagOption value. - */ - Value: TagOptionValue; - } - export interface CreateTagOptionOutput { - /** - * The resulting detailed TagOption information. - */ - TagOptionDetail?: TagOptionDetail; - } - export type CreatedTime = Date; - export type CreationTime = Date; - export type DefaultValue = string; - export interface DeleteConstraintInput { - /** - * The language code. en - English (default) jp - Japanese zh - Chinese - */ - AcceptLanguage?: AcceptLanguage; - /** - * The identifier of the constraint to delete. - */ - Id: Id; - } - export interface DeleteConstraintOutput { - } - export interface DeletePortfolioInput { - /** - * The language code. en - English (default) jp - Japanese zh - Chinese - */ - AcceptLanguage?: AcceptLanguage; - /** - * The identifier of the portfolio for the delete request. - */ - Id: Id; - } - export interface DeletePortfolioOutput { - } - export interface DeletePortfolioShareInput { - /** - * The language code. en - English (default) jp - Japanese zh - Chinese - */ - AcceptLanguage?: AcceptLanguage; - /** - * The portfolio identifier. - */ - PortfolioId: Id; - /** - * The account ID associated with the share to delete. - */ - AccountId: AccountId; - } - export interface DeletePortfolioShareOutput { - } - export interface DeleteProductInput { - /** - * The language code. en - English (default) jp - Japanese zh - Chinese - */ - AcceptLanguage?: AcceptLanguage; - /** - * The identifier of the product for the delete request. - */ - Id: Id; - } - export interface DeleteProductOutput { - } - export interface DeleteProvisioningArtifactInput { - /** - * The language code. en - English (default) jp - Japanese zh - Chinese - */ - AcceptLanguage?: AcceptLanguage; - /** - * The product identifier. - */ - ProductId: Id; - /** - * The identifier of the provisioning artifact for the delete request. This is sometimes referred to as the product version. - */ - ProvisioningArtifactId: Id; - } - export interface DeleteProvisioningArtifactOutput { - } - export interface DescribeConstraintInput { - /** - * The language code. en - English (default) jp - Japanese zh - Chinese - */ - AcceptLanguage?: AcceptLanguage; - /** - * The identifier of the constraint. - */ - Id: Id; - } - export interface DescribeConstraintOutput { - /** - * Detailed constraint information. - */ - ConstraintDetail?: ConstraintDetail; - /** - * The current parameters associated with the specified constraint. - */ - ConstraintParameters?: ConstraintParameters; - /** - * The status of the current request. - */ - Status?: Status; - } - export interface DescribeCopyProductStatusInput { - /** - * The language code. en - English (default) jp - Japanese zh - Chinese - */ - AcceptLanguage?: AcceptLanguage; - /** - * The token returned from the call to CopyProduct that initiated the operation. - */ - CopyProductToken: Id; - } - export interface DescribeCopyProductStatusOutput { - /** - * The status of the copy product operation. - */ - CopyProductStatus?: CopyProductStatus; - /** - * The ID of the copied product. - */ - TargetProductId?: Id; - /** - * The status message. - */ - StatusDetail?: StatusDetail; - } - export interface DescribePortfolioInput { - /** - * The language code. en - English (default) jp - Japanese zh - Chinese - */ - AcceptLanguage?: AcceptLanguage; - /** - * The identifier of the portfolio for which to retrieve information. - */ - Id: Id; - } - export interface DescribePortfolioOutput { - /** - * Detailed portfolio information. - */ - PortfolioDetail?: PortfolioDetail; - /** - * Tags associated with the portfolio. - */ - Tags?: Tags; - /** - * TagOptions associated with the portfolio. - */ - TagOptions?: TagOptionDetails; - } - export interface DescribeProductAsAdminInput { - /** - * The language code. en - English (default) jp - Japanese zh - Chinese - */ - AcceptLanguage?: AcceptLanguage; - /** - * The identifier of the product for which to retrieve information. - */ - Id: Id; - } - export interface DescribeProductAsAdminOutput { - /** - * Detailed product view information. - */ - ProductViewDetail?: ProductViewDetail; - /** - * A list of provisioning artifact summaries for the product. - */ - ProvisioningArtifactSummaries?: ProvisioningArtifactSummaries; - /** - * Tags associated with the product. - */ - Tags?: Tags; - /** - * List of TagOptions associated with the product. - */ - TagOptions?: TagOptionDetails; - } - export interface DescribeProductInput { - /** - * The language code. en - English (default) jp - Japanese zh - Chinese - */ - AcceptLanguage?: AcceptLanguage; - /** - * The ProductId of the product to describe. - */ - Id: Id; - } - export interface DescribeProductOutput { - /** - * The summary metadata about the specified product. - */ - ProductViewSummary?: ProductViewSummary; - /** - * A list of provisioning artifact objects for the specified product. The ProvisioningArtifacts parameter represent the ways the specified product can be provisioned. - */ - ProvisioningArtifacts?: ProvisioningArtifacts; - } - export interface DescribeProductViewInput { - /** - * The language code. en - English (default) jp - Japanese zh - Chinese - */ - AcceptLanguage?: AcceptLanguage; - /** - * The ProductViewId of the product to describe. - */ - Id: Id; - } - export interface DescribeProductViewOutput { - /** - * The summary metadata about the specified product. - */ - ProductViewSummary?: ProductViewSummary; - /** - * A list of provisioning artifact objects for the specified product. The ProvisioningArtifacts represent the ways in which the specified product can be provisioned. - */ - ProvisioningArtifacts?: ProvisioningArtifacts; - } - export interface DescribeProvisionedProductInput { - /** - * The language code. en - English (default) jp - Japanese zh - Chinese - */ - AcceptLanguage?: AcceptLanguage; - /** - * The provisioned product identifier. - */ - Id: Id; - } - export interface DescribeProvisionedProductOutput { - /** - * Detailed provisioned product information. - */ - ProvisionedProductDetail?: ProvisionedProductDetail; - } - export interface DescribeProvisioningArtifactInput { - /** - * The language code. en - English (default) jp - Japanese zh - Chinese - */ - AcceptLanguage?: AcceptLanguage; - /** - * The identifier of the provisioning artifact. This is sometimes referred to as the product version. - */ - ProvisioningArtifactId: Id; - /** - * The product identifier. - */ - ProductId: Id; - /** - * Enable a verbose level of details for the provisioning artifact. - */ - Verbose?: Verbose; - } - export interface DescribeProvisioningArtifactOutput { - /** - * Detailed provisioning artifact information. - */ - ProvisioningArtifactDetail?: ProvisioningArtifactDetail; - /** - * Additional information about the provisioning artifact. - */ - Info?: ProvisioningArtifactInfo; - /** - * The status of the current request. - */ - Status?: Status; - } - export interface DescribeProvisioningParametersInput { - /** - * The language code. en - English (default) jp - Japanese zh - Chinese - */ - AcceptLanguage?: AcceptLanguage; - /** - * The product identifier. - */ - ProductId: Id; - /** - * The provisioning artifact identifier for this product. This is sometimes referred to as the product version. - */ - ProvisioningArtifactId: Id; - /** - * The identifier of the path for this product's provisioning. This value is optional if the product has a default path, and is required if there is more than one path for the specified product. - */ - PathId?: Id; - } - export interface DescribeProvisioningParametersOutput { - /** - * The list of parameters used to successfully provision the product. Each parameter includes a list of allowable values and additional metadata about each parameter. - */ - ProvisioningArtifactParameters?: ProvisioningArtifactParameters; - /** - * The list of constraint summaries that apply to provisioning this product. - */ - ConstraintSummaries?: ConstraintSummaries; - /** - * Any additional metadata specifically related to the provisioning of the product. For example, see the Version field of the CloudFormation template. - */ - UsageInstructions?: UsageInstructions; - /** - * List of TagOptions associated with the provisioned provisioning parameters. - */ - TagOptions?: TagOptionSummaries; - } - export interface DescribeRecordInput { - /** - * The language code. en - English (default) jp - Japanese zh - Chinese - */ - AcceptLanguage?: AcceptLanguage; - /** - * The record identifier of the ProvisionedProduct object for which to retrieve output information. This is the RecordDetail.RecordId obtained from the request operation's response. - */ - Id: Id; - /** - * The page token of the first page retrieved. If null, this retrieves the first page of size PageSize. - */ - PageToken?: PageToken; - /** - * The maximum number of items to return in the results. If more results exist than fit in the specified PageSize, the value of NextPageToken in the response is non-null. - */ - PageSize?: PageSize; - } - export interface DescribeRecordOutput { - /** - * Detailed record information for the specified product. - */ - RecordDetail?: RecordDetail; - /** - * A list of outputs for the specified Product object created as the result of a request. For example, a CloudFormation-backed product that creates an S3 bucket would have an output for the S3 bucket URL. - */ - RecordOutputs?: RecordOutputs; - /** - * The page token to use to retrieve the next page of results for this operation. If there are no more pages, this value is null. - */ - NextPageToken?: PageToken; - } - export interface DescribeTagOptionInput { - /** - * The identifier of the TagOption. - */ - Id: TagOptionId; - } - export interface DescribeTagOptionOutput { - /** - * The resulting detailed TagOption information. - */ - TagOptionDetail?: TagOptionDetail; - } - export type Description = string; - export interface DisassociatePrincipalFromPortfolioInput { - /** - * The language code. en - English (default) jp - Japanese zh - Chinese - */ - AcceptLanguage?: AcceptLanguage; - /** - * The portfolio identifier. - */ - PortfolioId: Id; - /** - * The ARN representing the principal (IAM user, role, or group). - */ - PrincipalARN: PrincipalARN; - } - export interface DisassociatePrincipalFromPortfolioOutput { - } - export interface DisassociateProductFromPortfolioInput { - /** - * The language code. en - English (default) jp - Japanese zh - Chinese - */ - AcceptLanguage?: AcceptLanguage; - /** - * The product identifier. - */ - ProductId: Id; - /** - * The portfolio identifier. - */ - PortfolioId: Id; - } - export interface DisassociateProductFromPortfolioOutput { - } - export interface DisassociateTagOptionFromResourceInput { - /** - * Identifier of the resource from which to disassociate the TagOption. - */ - ResourceId: ResourceId; - /** - * Identifier of the TagOption to disassociate from the resource. - */ - TagOptionId: TagOptionId; - } - export interface DisassociateTagOptionFromResourceOutput { - } - export type ErrorCode = string; - export type ErrorDescription = string; - export type HasDefaultPath = boolean; - export type Id = string; - export type IdempotencyToken = string; - export type IgnoreErrors = boolean; - export type InstructionType = string; - export type InstructionValue = string; - export type LastRequestId = string; - export type LaunchPathSummaries = LaunchPathSummary[]; - export interface LaunchPathSummary { - /** - * The unique identifier of the product path. - */ - Id?: Id; - /** - * List of constraints on the portfolio-product relationship. - */ - ConstraintSummaries?: ConstraintSummaries; - /** - * List of tags used by this launch path. - */ - Tags?: Tags; - /** - * Corresponds to the name of the portfolio to which the user was assigned. - */ - Name?: PortfolioName; - } - export interface ListAcceptedPortfolioSharesInput { - /** - * The language code. en - English (default) jp - Japanese zh - Chinese - */ - AcceptLanguage?: AcceptLanguage; - /** - * The page token of the first page retrieved. If null, this retrieves the first page of size PageSize. - */ - PageToken?: PageToken; - /** - * The maximum number of items to return in the results. If more results exist than fit in the specified PageSize, the value of NextPageToken in the response is non-null. - */ - PageSize?: PageSize; - } - export interface ListAcceptedPortfolioSharesOutput { - /** - * List of detailed portfolio information objects. - */ - PortfolioDetails?: PortfolioDetails; - /** - * The page token to use to retrieve the next page of results for this operation. If there are no more pages, this value is null. - */ - NextPageToken?: PageToken; - } - export interface ListConstraintsForPortfolioInput { - /** - * The language code. en - English (default) jp - Japanese zh - Chinese - */ - AcceptLanguage?: AcceptLanguage; - /** - * The portfolio identifier. - */ - PortfolioId: Id; - /** - * The product identifier. - */ - ProductId?: Id; - /** - * The maximum number of items to return in the results. If more results exist than fit in the specified PageSize, the value of NextPageToken in the response is non-null. - */ - PageSize?: PageSize; - /** - * The page token of the first page retrieved. If null, this retrieves the first page of size PageSize. - */ - PageToken?: PageToken; - } - export interface ListConstraintsForPortfolioOutput { - /** - * List of detailed constraint information objects. - */ - ConstraintDetails?: ConstraintDetails; - /** - * The page token to use to retrieve the next page of results for this operation. If there are no more pages, this value is null. - */ - NextPageToken?: PageToken; - } - export interface ListLaunchPathsInput { - /** - * The language code. en - English (default) jp - Japanese zh - Chinese - */ - AcceptLanguage?: AcceptLanguage; - /** - * The product identifier. Identifies the product for which to retrieve LaunchPathSummaries information. - */ - ProductId: Id; - /** - * The maximum number of items to return in the results. If more results exist than fit in the specified PageSize, the value of NextPageToken in the response is non-null. - */ - PageSize?: PageSize; - /** - * The page token of the first page retrieved. If null, this retrieves the first page of size PageSize. - */ - PageToken?: PageToken; - } - export interface ListLaunchPathsOutput { - /** - * List of launch path information summaries for the specified PageToken. - */ - LaunchPathSummaries?: LaunchPathSummaries; - /** - * The page token to use to retrieve the next page of results for this operation. If there are no more pages, this value is null. - */ - NextPageToken?: PageToken; - } - export interface ListPortfolioAccessInput { - /** - * The language code. en - English (default) jp - Japanese zh - Chinese - */ - AcceptLanguage?: AcceptLanguage; - /** - * The portfolio identifier. - */ - PortfolioId: Id; - } - export interface ListPortfolioAccessOutput { - /** - * List of account IDs associated with access to the portfolio. - */ - AccountIds?: AccountIds; - /** - * The page token to use to retrieve the next page of results for this operation. If there are no more pages, this value is null. - */ - NextPageToken?: PageToken; - } - export interface ListPortfoliosForProductInput { - /** - * The language code. en - English (default) jp - Japanese zh - Chinese - */ - AcceptLanguage?: AcceptLanguage; - /** - * The product identifier. - */ - ProductId: Id; - /** - * The page token of the first page retrieved. If null, this retrieves the first page of size PageSize. - */ - PageToken?: PageToken; - /** - * The maximum number of items to return in the results. If more results exist than fit in the specified PageSize, the value of NextPageToken in the response is non-null. - */ - PageSize?: PageSize; - } - export interface ListPortfoliosForProductOutput { - /** - * List of detailed portfolio information objects. - */ - PortfolioDetails?: PortfolioDetails; - /** - * The page token to use to retrieve the next page of results for this operation. If there are no more pages, this value is null. - */ - NextPageToken?: PageToken; - } - export interface ListPortfoliosInput { - /** - * The language code. en - English (default) jp - Japanese zh - Chinese - */ - AcceptLanguage?: AcceptLanguage; - /** - * The page token of the first page retrieved. If null, this retrieves the first page of size PageSize. - */ - PageToken?: PageToken; - /** - * The maximum number of items to return in the results. If more results exist than fit in the specified PageSize, the value of NextPageToken in the response is non-null. - */ - PageSize?: PageSize; - } - export interface ListPortfoliosOutput { - /** - * List of detailed portfolio information objects. - */ - PortfolioDetails?: PortfolioDetails; - /** - * The page token to use to retrieve the next page of results for this operation. If there are no more pages, this value is null. - */ - NextPageToken?: PageToken; - } - export interface ListPrincipalsForPortfolioInput { - /** - * The language code. en - English (default) jp - Japanese zh - Chinese - */ - AcceptLanguage?: AcceptLanguage; - /** - * The portfolio identifier. - */ - PortfolioId: Id; - /** - * The maximum number of items to return in the results. If more results exist than fit in the specified PageSize, the value of NextPageToken in the response is non-null. - */ - PageSize?: PageSize; - /** - * The page token of the first page retrieved. If null, this retrieves the first page of size PageSize. - */ - PageToken?: PageToken; - } - export interface ListPrincipalsForPortfolioOutput { - /** - * The IAM principals (users or roles) associated with the portfolio. - */ - Principals?: Principals; - /** - * The page token to use to retrieve the next page of results for this operation. If there are no more pages, this value is null. - */ - NextPageToken?: PageToken; - } - export interface ListProvisioningArtifactsInput { - /** - * The language code. en - English (default) jp - Japanese zh - Chinese - */ - AcceptLanguage?: AcceptLanguage; - /** - * The product identifier. - */ - ProductId: Id; - } - export interface ListProvisioningArtifactsOutput { - /** - * List of detailed provisioning artifact information objects. - */ - ProvisioningArtifactDetails?: ProvisioningArtifactDetails; - /** - * The page token to use to retrieve the next page of results for this operation. If there are no more pages, this value is null. - */ - NextPageToken?: PageToken; - } - export interface ListRecordHistoryInput { - /** - * The language code. en - English (default) jp - Japanese zh - Chinese - */ - AcceptLanguage?: AcceptLanguage; - /** - * The access level for obtaining results. If left unspecified, User level access is used. - */ - AccessLevelFilter?: AccessLevelFilter; - /** - * The filter to limit search results. - */ - SearchFilter?: ListRecordHistorySearchFilter; - /** - * The maximum number of items to return in the results. If more results exist than fit in the specified PageSize, the value of NextPageToken in the response is non-null. - */ - PageSize?: PageSize; - /** - * The page token of the first page retrieved. If null, this retrieves the first page of size PageSize. - */ - PageToken?: PageToken; - } - export interface ListRecordHistoryOutput { - /** - * A list of record detail objects, listed in reverse chronological order. - */ - RecordDetails?: RecordDetails; - /** - * The page token to use to retrieve the next page of results for this operation. If there are no more pages, this value is null. - */ - NextPageToken?: PageToken; - } - export interface ListRecordHistorySearchFilter { - /** - * The filter key. - */ - Key?: SearchFilterKey; - /** - * The filter value for Key. - */ - Value?: SearchFilterValue; - } - export interface ListResourcesForTagOptionInput { - /** - * Identifier of the TagOption. - */ - TagOptionId: TagOptionId; - /** - * Resource type. - */ - ResourceType?: ResourceType; - /** - * The maximum number of items to return in the results. If more results exist than fit in the specified PageSize, the value of NextPageToken in the response is non-null. - */ - PageSize?: PageSize; - /** - * The page token of the first page retrieved. If null, this retrieves the first page of size PageSize. - */ - PageToken?: PageToken; - } - export interface ListResourcesForTagOptionOutput { - /** - * The resulting detailed resource information. - */ - ResourceDetails?: ResourceDetails; - /** - * The page token of the first page retrieved. If null, this retrieves the first page of size PageSize. - */ - PageToken?: PageToken; - } - export interface ListTagOptionsFilters { - /** - * The ListTagOptionsFilters key. - */ - Key?: TagOptionKey; - /** - * The ListTagOptionsFilters value. - */ - Value?: TagOptionValue; - /** - * The ListTagOptionsFilters active state. - */ - Active?: TagOptionActive; - } - export interface ListTagOptionsInput { - /** - * The list of filters with which to limit search results. If no search filters are specified, the output is all TagOptions. - */ - Filters?: ListTagOptionsFilters; - /** - * The maximum number of items to return in the results. If more results exist than fit in the specified PageSize, the value of NextPageToken in the response is non-null. - */ - PageSize?: PageSize; - /** - * The page token of the first page retrieved. If null, this retrieves the first page of size PageSize. - */ - PageToken?: PageToken; - } - export interface ListTagOptionsOutput { - /** - * The resulting detailed TagOption information. - */ - TagOptionDetails?: TagOptionDetails; - /** - * The page token of the first page retrieved. If null, this retrieves the first page of size PageSize. - */ - PageToken?: PageToken; - } - export type NoEcho = boolean; - export type NotificationArn = string; - export type NotificationArns = NotificationArn[]; - export type OutputKey = string; - export type OutputValue = string; - export type PageSize = number; - export type PageToken = string; - export interface ParameterConstraints { - /** - * The values that the administrator has allowed for the parameter. - */ - AllowedValues?: AllowedValues; - } - export type ParameterKey = string; - export type ParameterType = string; - export type ParameterValue = string; - export type PortfolioDescription = string; - export interface PortfolioDetail { - /** - * The identifier for the portfolio. - */ - Id?: Id; - /** - * The ARN assigned to the portfolio. - */ - ARN?: ResourceARN; - /** - * The name to use for display purposes. - */ - DisplayName?: PortfolioDisplayName; - /** - * The text description of the portfolio. - */ - Description?: PortfolioDescription; - /** - * The UTC timestamp of the creation time. - */ - CreatedTime?: CreationTime; - /** - * The name of the portfolio provider. - */ - ProviderName?: ProviderName; - } - export type PortfolioDetails = PortfolioDetail[]; - export type PortfolioDisplayName = string; - export type PortfolioName = string; - export interface Principal { - /** - * The ARN representing the principal (IAM user, role, or group). - */ - PrincipalARN?: PrincipalARN; - /** - * The principal type. Must be IAM - */ - PrincipalType?: PrincipalType; - } - export type PrincipalARN = string; - export type PrincipalType = "IAM"|string; - export type Principals = Principal[]; - export type ProductArn = string; - export type ProductSource = "ACCOUNT"|string; - export type ProductType = "CLOUD_FORMATION_TEMPLATE"|"MARKETPLACE"|string; - export type ProductViewAggregationType = string; - export interface ProductViewAggregationValue { - /** - * The value of the product view aggregation. - */ - Value?: AttributeValue; - /** - * An approximate count of the products that match the value. - */ - ApproximateCount?: ApproximateCount; - } - export type ProductViewAggregationValues = ProductViewAggregationValue[]; - export type ProductViewAggregations = {[key: string]: ProductViewAggregationValues}; - export interface ProductViewDetail { - /** - * The summary metadata about the specified product view. - */ - ProductViewSummary?: ProductViewSummary; - /** - * Current status of the product. AVAILABLE - Product is available for use. CREATING - Creation of product started, not ready for use. FAILED - Action on product failed. - */ - Status?: Status; - /** - * The ARN associated with the product. - */ - ProductARN?: ResourceARN; - /** - * The UTC timestamp of the creation time. - */ - CreatedTime?: CreatedTime; - } - export type ProductViewDetails = ProductViewDetail[]; - export type ProductViewDistributor = string; - export type ProductViewFilterBy = "FullTextSearch"|"Owner"|"ProductType"|"SourceProductId"|string; - export type ProductViewFilterValue = string; - export type ProductViewFilterValues = ProductViewFilterValue[]; - export type ProductViewFilters = {[key: string]: ProductViewFilterValues}; - export type ProductViewName = string; - export type ProductViewOwner = string; - export type ProductViewShortDescription = string; - export type ProductViewSortBy = "Title"|"VersionCount"|"CreationDate"|string; - export type ProductViewSummaries = ProductViewSummary[]; - export interface ProductViewSummary { - /** - * The product view identifier. - */ - Id?: Id; - /** - * The product identifier. - */ - ProductId?: Id; - /** - * The name of the product. - */ - Name?: ProductViewName; - /** - * The owner of the product. Contact the product administrator for the significance of this value. - */ - Owner?: ProductViewOwner; - /** - * Short description of the product. - */ - ShortDescription?: ProductViewShortDescription; - /** - * The product type. Contact the product administrator for the significance of this value. If this value is MARKETPLACE, the product was created by AWS Marketplace. - */ - Type?: ProductType; - /** - * The distributor of the product. Contact the product administrator for the significance of this value. - */ - Distributor?: ProductViewDistributor; - /** - * A value of false indicates that the product does not have a default path, while a value of true indicates that it does. If it's false, call ListLaunchPaths to disambiguate between paths. If true, ListLaunchPaths is not required, and the output of the ProductViewSummary operation can be used directly with DescribeProvisioningParameters. - */ - HasDefaultPath?: HasDefaultPath; - /** - * The email contact information to obtain support for this Product. - */ - SupportEmail?: SupportEmail; - /** - * The description of the support for this Product. - */ - SupportDescription?: SupportDescription; - /** - * The URL information to obtain support for this Product. - */ - SupportUrl?: SupportUrl; - } - export type ProviderName = string; - export interface ProvisionProductInput { - /** - * The language code. en - English (default) jp - Japanese zh - Chinese - */ - AcceptLanguage?: AcceptLanguage; - /** - * The product identifier. - */ - ProductId: Id; - /** - * The provisioning artifact identifier for this product. This is sometimes referred to as the product version. - */ - ProvisioningArtifactId: Id; - /** - * The identifier of the path for this product's provisioning. This value is optional if the product has a default path, and is required if there is more than one path for the specified product. - */ - PathId?: Id; - /** - * A user-friendly name to identify the ProvisionedProduct object. This value must be unique for the AWS account and cannot be updated after the product is provisioned. - */ - ProvisionedProductName: ProvisionedProductName; - /** - * Parameters specified by the administrator that are required for provisioning the product. - */ - ProvisioningParameters?: ProvisioningParameters; - /** - * A list of tags to use as provisioning options. - */ - Tags?: Tags; - /** - * Passed to CloudFormation. The SNS topic ARNs to which to publish stack-related events. - */ - NotificationArns?: NotificationArns; - /** - * An idempotency token that uniquely identifies the provisioning request. - */ - ProvisionToken: IdempotencyToken; - } - export interface ProvisionProductOutput { - /** - * The detailed result of the ProvisionProduct request, containing the inputs made to that request, the current state of the request, a pointer to the ProvisionedProduct object of the request, and a list of any errors that the request encountered. - */ - RecordDetail?: RecordDetail; - } - export interface ProvisionedProductDetail { - /** - * The user-friendly name of the ProvisionedProduct object. - */ - Name?: ProvisionedProductNameOrArn; - /** - * The ARN associated with the ProvisionedProduct object. - */ - Arn?: ProvisionedProductNameOrArn; - /** - * The type of the ProvisionedProduct object. - */ - Type?: ProvisionedProductType; - /** - * The identifier of the ProvisionedProduct object. - */ - Id?: ProvisionedProductId; - /** - * The current status of the ProvisionedProduct. AVAILABLE - Stable state, ready to perform any operation. The most recent action request succeeded and completed. UNDER_CHANGE - Transitive state, operations performed may or may not have valid results. Wait for an AVAILABLE status before performing operations. TAINTED - Stable state, ready to perform any operation. The stack has completed the requested operation but is not exactly what was requested. For example, a request to update to a new version failed and the stack rolled back to the current version. ERROR - Something unexpected happened such that the provisioned product exists but the stack is not running. For example, CloudFormation received an invalid parameter value and could not launch the stack. - */ - Status?: ProvisionedProductStatus; - /** - * The current status message of the ProvisionedProduct. - */ - StatusMessage?: ProvisionedProductStatusMessage; - /** - * The UTC timestamp of the creation time. - */ - CreatedTime?: CreatedTime; - /** - * A token to disambiguate duplicate requests. You can use the same input in multiple requests, provided that you also specify a different idempotency token for each request. - */ - IdempotencyToken?: IdempotencyToken; - /** - * The record identifier of the last request performed on this ProvisionedProduct object. - */ - LastRecordId?: LastRequestId; - } - export type ProvisionedProductDetails = ProvisionedProductDetail[]; - export type ProvisionedProductId = string; - export type ProvisionedProductName = string; - export type ProvisionedProductNameOrArn = string; - export type ProvisionedProductStatus = "AVAILABLE"|"UNDER_CHANGE"|"TAINTED"|"ERROR"|string; - export type ProvisionedProductStatusMessage = string; - export type ProvisionedProductType = string; - export interface ProvisioningArtifact { - /** - * The identifier for the artifact. This is sometimes referred to as the product version. - */ - Id?: Id; - /** - * The name of the artifact. - */ - Name?: ProvisioningArtifactName; - /** - * The text description of the artifact. - */ - Description?: ProvisioningArtifactDescription; - /** - * The UTC timestamp of the creation time. - */ - CreatedTime?: ProvisioningArtifactCreatedTime; - } - export type ProvisioningArtifactCreatedTime = Date; - export type ProvisioningArtifactDescription = string; - export interface ProvisioningArtifactDetail { - /** - * The identifier of the provisioning artifact. This is sometimes referred to as the product version. - */ - Id?: Id; - /** - * The name assigned to the provisioning artifact. - */ - Name?: ProvisioningArtifactName; - /** - * The text description of the provisioning artifact. - */ - Description?: ProvisioningArtifactName; - /** - * The type of the provisioning artifact. The following provisioning artifact types are used by AWS Marketplace products: MARKETPLACE_AMI - AMI products. MARKETPLACE_CAR - CAR (Cluster and AWS Resources) products. - */ - Type?: ProvisioningArtifactType; - /** - * The UTC timestamp of the creation time. - */ - CreatedTime?: CreationTime; - } - export type ProvisioningArtifactDetails = ProvisioningArtifactDetail[]; - export type ProvisioningArtifactInfo = {[key: string]: ProvisioningArtifactInfoValue}; - export type ProvisioningArtifactInfoKey = string; - export type ProvisioningArtifactInfoValue = string; - export type ProvisioningArtifactName = string; - export interface ProvisioningArtifactParameter { - /** - * The parameter key. - */ - ParameterKey?: ParameterKey; - /** - * The default value for this parameter. - */ - DefaultValue?: DefaultValue; - /** - * The parameter type. - */ - ParameterType?: ParameterType; - /** - * If this value is true, the value for this parameter is obfuscated from view when the parameter is retrieved. This parameter is used to hide sensitive information. - */ - IsNoEcho?: NoEcho; - /** - * The text description of the parameter. - */ - Description?: Description; - /** - * The list of constraints that the administrator has put on the parameter. - */ - ParameterConstraints?: ParameterConstraints; - } - export type ProvisioningArtifactParameters = ProvisioningArtifactParameter[]; - export interface ProvisioningArtifactProperties { - /** - * The name assigned to the provisioning artifact properties. - */ - Name?: ProvisioningArtifactName; - /** - * The text description of the provisioning artifact properties. - */ - Description?: ProvisioningArtifactDescription; - /** - * Additional information about the provisioning artifact properties. When using this element in a request, you must specify LoadTemplateFromURL. For more information, see CreateProvisioningArtifact. - */ - Info: ProvisioningArtifactInfo; - /** - * The type of the provisioning artifact properties. The following provisioning artifact property types are used by AWS Marketplace products: MARKETPLACE_AMI - AMI products. MARKETPLACE_CAR - CAR (Cluster and AWS Resources) products. - */ - Type?: ProvisioningArtifactType; - } - export type ProvisioningArtifactPropertyName = "Id"|string; - export type ProvisioningArtifactPropertyValue = string; - export type ProvisioningArtifactSummaries = ProvisioningArtifactSummary[]; - export interface ProvisioningArtifactSummary { - /** - * The identifier of the provisioning artifact. - */ - Id?: Id; - /** - * The name of the provisioning artifact. - */ - Name?: ProvisioningArtifactName; - /** - * The description of the provisioning artifact. - */ - Description?: ProvisioningArtifactDescription; - /** - * The UTC timestamp of the creation time. - */ - CreatedTime?: ProvisioningArtifactCreatedTime; - /** - * The provisioning artifact metadata. This data is used with products created by AWS Marketplace. - */ - ProvisioningArtifactMetadata?: ProvisioningArtifactInfo; - } - export type ProvisioningArtifactType = "CLOUD_FORMATION_TEMPLATE"|"MARKETPLACE_AMI"|"MARKETPLACE_CAR"|string; - export type ProvisioningArtifacts = ProvisioningArtifact[]; - export interface ProvisioningParameter { - /** - * The ProvisioningArtifactParameter.ParameterKey parameter from DescribeProvisioningParameters. - */ - Key?: ParameterKey; - /** - * The value to use for provisioning. Any constraints on this value can be found in ProvisioningArtifactParameter for Key. - */ - Value?: ParameterValue; - } - export type ProvisioningParameters = ProvisioningParameter[]; - export interface RecordDetail { - /** - * The identifier of the ProvisionedProduct object record. - */ - RecordId?: Id; - /** - * The user-friendly name of the ProvisionedProduct object. - */ - ProvisionedProductName?: ProvisionedProductName; - /** - * The status of the ProvisionedProduct object. CREATED - Request created but the operation has not yet started. IN_PROGRESS - The requested operation is in-progress. IN_PROGRESS_IN_ERROR - The provisioned product is under change but the requested operation failed and some remediation is occurring. For example, a rollback. SUCCEEDED - The requested operation has successfully completed. FAILED - The requested operation has completed but has failed. Investigate using the error messages returned. - */ - Status?: RecordStatus; - /** - * The UTC timestamp of the creation time. - */ - CreatedTime?: CreatedTime; - /** - * The time when the record for the ProvisionedProduct object was last updated. - */ - UpdatedTime?: UpdatedTime; - /** - * The type of the ProvisionedProduct object. - */ - ProvisionedProductType?: ProvisionedProductType; - /** - * The record type for this record. - */ - RecordType?: RecordType; - /** - * The identifier of the ProvisionedProduct object. - */ - ProvisionedProductId?: Id; - /** - * The product identifier. - */ - ProductId?: Id; - /** - * The provisioning artifact identifier for this product. This is sometimes referred to as the product version. - */ - ProvisioningArtifactId?: Id; - /** - * The identifier of the path for this product's provisioning. - */ - PathId?: Id; - /** - * A list of errors that occurred while processing the request. - */ - RecordErrors?: RecordErrors; - /** - * List of tags associated with this record. - */ - RecordTags?: RecordTags; - } - export type RecordDetails = RecordDetail[]; - export interface RecordError { - /** - * The numeric value of the error. - */ - Code?: ErrorCode; - /** - * The text description of the error. - */ - Description?: ErrorDescription; - } - export type RecordErrors = RecordError[]; - export interface RecordOutput { - /** - * The output key. - */ - OutputKey?: OutputKey; - /** - * The output value. - */ - OutputValue?: OutputValue; - /** - * The text description of the output. - */ - Description?: Description; - } - export type RecordOutputs = RecordOutput[]; - export type RecordStatus = "CREATED"|"IN_PROGRESS"|"IN_PROGRESS_IN_ERROR"|"SUCCEEDED"|"FAILED"|string; - export interface RecordTag { - /** - * The key for this tag. - */ - Key?: RecordTagKey; - /** - * The value for this tag. - */ - Value?: RecordTagValue; - } - export type RecordTagKey = string; - export type RecordTagValue = string; - export type RecordTags = RecordTag[]; - export type RecordType = string; - export interface RejectPortfolioShareInput { - /** - * The language code. en - English (default) jp - Japanese zh - Chinese - */ - AcceptLanguage?: AcceptLanguage; - /** - * The portfolio identifier. - */ - PortfolioId: Id; - } - export interface RejectPortfolioShareOutput { - } - export type ResourceARN = string; - export interface ResourceDetail { - /** - * Identifier of the resource. - */ - Id?: ResourceDetailId; - /** - * ARN of the resource. - */ - ARN?: ResourceDetailARN; - /** - * Name of the resource. - */ - Name?: ResourceDetailName; - /** - * Description of the resource. - */ - Description?: ResourceDetailDescription; - /** - * Creation time of the resource. - */ - CreatedTime?: ResourceDetailCreatedTime; - } - export type ResourceDetailARN = string; - export type ResourceDetailCreatedTime = Date; - export type ResourceDetailDescription = string; - export type ResourceDetailId = string; - export type ResourceDetailName = string; - export type ResourceDetails = ResourceDetail[]; - export type ResourceId = string; - export type ResourceType = string; - export interface ScanProvisionedProductsInput { - /** - * The language code. en - English (default) jp - Japanese zh - Chinese - */ - AcceptLanguage?: AcceptLanguage; - /** - * The access level for obtaining results. If left unspecified, User level access is used. - */ - AccessLevelFilter?: AccessLevelFilter; - /** - * The maximum number of items to return in the results. If more results exist than fit in the specified PageSize, the value of NextPageToken in the response is non-null. - */ - PageSize?: PageSize; - /** - * The page token of the first page retrieved. If null, this retrieves the first page of size PageSize. - */ - PageToken?: PageToken; - } - export interface ScanProvisionedProductsOutput { - /** - * A list of ProvisionedProduct detail objects. - */ - ProvisionedProducts?: ProvisionedProductDetails; - /** - * The page token to use to retrieve the next page of results for this operation. If there are no more pages, this value is null. - */ - NextPageToken?: PageToken; - } - export type SearchFilterKey = string; - export type SearchFilterValue = string; - export interface SearchProductsAsAdminInput { - /** - * The language code. en - English (default) jp - Japanese zh - Chinese - */ - AcceptLanguage?: AcceptLanguage; - /** - * The portfolio identifier. - */ - PortfolioId?: Id; - /** - * The list of filters with which to limit search results. If no search filters are specified, the output is all the products to which the administrator has access. - */ - Filters?: ProductViewFilters; - /** - * The sort field specifier. If no value is specified, results are not sorted. - */ - SortBy?: ProductViewSortBy; - /** - * The sort order specifier. If no value is specified, results are not sorted. - */ - SortOrder?: SortOrder; - /** - * The page token of the first page retrieved. If null, this retrieves the first page of size PageSize. - */ - PageToken?: PageToken; - /** - * The maximum number of items to return in the results. If more results exist than fit in the specified PageSize, the value of NextPageToken in the response is non-null. - */ - PageSize?: PageSize; - /** - * Access level of the source of the product. - */ - ProductSource?: ProductSource; - } - export interface SearchProductsAsAdminOutput { - /** - * List of detailed product view information objects. - */ - ProductViewDetails?: ProductViewDetails; - /** - * The page token to use to retrieve the next page of results for this operation. If there are no more pages, this value is null. - */ - NextPageToken?: PageToken; - } - export interface SearchProductsInput { - /** - * The language code. en - English (default) jp - Japanese zh - Chinese - */ - AcceptLanguage?: AcceptLanguage; - /** - * The list of filters with which to limit search results. If no search filters are specified, the output is all the products to which the calling user has access. - */ - Filters?: ProductViewFilters; - /** - * The maximum number of items to return in the results. If more results exist than fit in the specified PageSize, the value of NextPageToken in the response is non-null. - */ - PageSize?: PageSize; - /** - * The sort field specifier. If no value is specified, results are not sorted. - */ - SortBy?: ProductViewSortBy; - /** - * The sort order specifier. If no value is specified, results are not sorted. - */ - SortOrder?: SortOrder; - /** - * The page token of the first page retrieved. If null, this retrieves the first page of size PageSize. - */ - PageToken?: PageToken; - } - export interface SearchProductsOutput { - /** - * A list of the product view summary objects. - */ - ProductViewSummaries?: ProductViewSummaries; - /** - * A list of the product view aggregation value objects. - */ - ProductViewAggregations?: ProductViewAggregations; - /** - * The page token to use to retrieve the next page of results for this operation. If there are no more pages, this value is null. - */ - NextPageToken?: PageToken; - } - export type SortOrder = "ASCENDING"|"DESCENDING"|string; - export type SourceProvisioningArtifactProperties = SourceProvisioningArtifactPropertiesMap[]; - export type SourceProvisioningArtifactPropertiesMap = {[key: string]: ProvisioningArtifactPropertyValue}; - export type Status = "AVAILABLE"|"CREATING"|"FAILED"|string; - export type StatusDetail = string; - export type SupportDescription = string; - export type SupportEmail = string; - export type SupportUrl = string; - export interface Tag { - /** - * The ProvisioningArtifactParameter.TagKey parameter from DescribeProvisioningParameters. - */ - Key: TagKey; - /** - * The desired value for this key. - */ - Value: TagValue; - } - export type TagKey = string; - export type TagKeys = TagKey[]; - export type TagOptionActive = boolean; - export interface TagOptionDetail { - /** - * The TagOptionDetail key. - */ - Key?: TagOptionKey; - /** - * The TagOptionDetail value. - */ - Value?: TagOptionValue; - /** - * The TagOptionDetail active state. - */ - Active?: TagOptionActive; - /** - * The TagOptionDetail identifier. - */ - Id?: TagOptionId; - } - export type TagOptionDetails = TagOptionDetail[]; - export type TagOptionId = string; - export type TagOptionKey = string; - export type TagOptionSummaries = TagOptionSummary[]; - export interface TagOptionSummary { - /** - * The TagOptionSummary key. - */ - Key?: TagOptionKey; - /** - * The TagOptionSummary value. - */ - Values?: TagOptionValues; - } - export type TagOptionValue = string; - export type TagOptionValues = TagOptionValue[]; - export type TagValue = string; - export type Tags = Tag[]; - export interface TerminateProvisionedProductInput { - /** - * The name of the ProvisionedProduct object to terminate. Specify either ProvisionedProductName or ProvisionedProductId, but not both. - */ - ProvisionedProductName?: ProvisionedProductNameOrArn; - /** - * The identifier of the ProvisionedProduct object to terminate. Specify either ProvisionedProductName or ProvisionedProductId, but not both. - */ - ProvisionedProductId?: Id; - /** - * An idempotency token that uniquely identifies the termination request. This token is only valid during the termination process. After the ProvisionedProduct object is terminated, further requests to terminate the same ProvisionedProduct object always return ResourceNotFound regardless of the value of TerminateToken. - */ - TerminateToken: IdempotencyToken; - /** - * If set to true, AWS Service Catalog stops managing the specified ProvisionedProduct object even if it cannot delete the underlying resources. - */ - IgnoreErrors?: IgnoreErrors; - /** - * The language code. en - English (default) jp - Japanese zh - Chinese - */ - AcceptLanguage?: AcceptLanguage; - } - export interface TerminateProvisionedProductOutput { - /** - * The detailed result of the TerminateProvisionedProduct request, containing the inputs made to that request, the current state of the request, a pointer to the ProvisionedProduct object that the request is modifying, and a list of any errors that the request encountered. - */ - RecordDetail?: RecordDetail; - } - export interface UpdateConstraintInput { - /** - * The language code. en - English (default) jp - Japanese zh - Chinese - */ - AcceptLanguage?: AcceptLanguage; - /** - * The identifier of the constraint to update. - */ - Id: Id; - /** - * The updated text description of the constraint. - */ - Description?: ConstraintDescription; - } - export interface UpdateConstraintOutput { - /** - * The resulting detailed constraint information. - */ - ConstraintDetail?: ConstraintDetail; - /** - * The resulting updated constraint parameters. - */ - ConstraintParameters?: ConstraintParameters; - /** - * The status of the current request. - */ - Status?: Status; - } - export interface UpdatePortfolioInput { - /** - * The language code. en - English (default) jp - Japanese zh - Chinese - */ - AcceptLanguage?: AcceptLanguage; - /** - * The identifier of the portfolio for the update request. - */ - Id: Id; - /** - * The name to use for display purposes. - */ - DisplayName?: PortfolioDisplayName; - /** - * The updated text description of the portfolio. - */ - Description?: PortfolioDescription; - /** - * The updated name of the portfolio provider. - */ - ProviderName?: ProviderName; - /** - * Tags to add to the existing list of tags associated with the portfolio. - */ - AddTags?: AddTags; - /** - * Tags to remove from the existing list of tags associated with the portfolio. - */ - RemoveTags?: TagKeys; - } - export interface UpdatePortfolioOutput { - /** - * The resulting detailed portfolio information. - */ - PortfolioDetail?: PortfolioDetail; - /** - * Tags associated with the portfolio. - */ - Tags?: Tags; - } - export interface UpdateProductInput { - /** - * The language code. en - English (default) jp - Japanese zh - Chinese - */ - AcceptLanguage?: AcceptLanguage; - /** - * The identifier of the product for the update request. - */ - Id: Id; - /** - * The updated product name. - */ - Name?: ProductViewName; - /** - * The updated owner of the product. - */ - Owner?: ProductViewOwner; - /** - * The updated text description of the product. - */ - Description?: ProductViewShortDescription; - /** - * The updated distributor of the product. - */ - Distributor?: ProductViewOwner; - /** - * The updated support description for the product. - */ - SupportDescription?: SupportDescription; - /** - * The updated support email for the product. - */ - SupportEmail?: SupportEmail; - /** - * The updated support URL for the product. - */ - SupportUrl?: SupportUrl; - /** - * Tags to add to the existing list of tags associated with the product. - */ - AddTags?: AddTags; - /** - * Tags to remove from the existing list of tags associated with the product. - */ - RemoveTags?: TagKeys; - } - export interface UpdateProductOutput { - /** - * The resulting detailed product view information. - */ - ProductViewDetail?: ProductViewDetail; - /** - * Tags associated with the product. - */ - Tags?: Tags; - } - export interface UpdateProvisionedProductInput { - /** - * The language code. en - English (default) jp - Japanese zh - Chinese - */ - AcceptLanguage?: AcceptLanguage; - /** - * The updated name of the ProvisionedProduct object. Specify either ProvisionedProductName or ProvisionedProductId, but not both. - */ - ProvisionedProductName?: ProvisionedProductNameOrArn; - /** - * The identifier of the ProvisionedProduct object to update. Specify either ProvisionedProductName or ProvisionedProductId, but not both. - */ - ProvisionedProductId?: Id; - /** - * The identifier of the ProvisionedProduct object. - */ - ProductId?: Id; - /** - * The provisioning artifact identifier for this product. This is sometimes referred to as the product version. - */ - ProvisioningArtifactId?: Id; - /** - * The identifier of the path to use in the updated ProvisionedProduct object. This value is optional if the product has a default path, and is required if there is more than one path for the specified product. - */ - PathId?: Id; - /** - * A list of ProvisioningParameter objects used to update the ProvisionedProduct object. - */ - ProvisioningParameters?: UpdateProvisioningParameters; - /** - * The idempotency token that uniquely identifies the provisioning update request. - */ - UpdateToken: IdempotencyToken; - } - export interface UpdateProvisionedProductOutput { - /** - * The detailed result of the UpdateProvisionedProduct request, containing the inputs made to that request, the current state of the request, a pointer to the ProvisionedProduct object that the request is modifying, and a list of any errors that the request encountered. - */ - RecordDetail?: RecordDetail; - } - export interface UpdateProvisioningArtifactInput { - /** - * The language code. en - English (default) jp - Japanese zh - Chinese - */ - AcceptLanguage?: AcceptLanguage; - /** - * The product identifier. - */ - ProductId: Id; - /** - * The identifier of the provisioning artifact for the update request. This is sometimes referred to as the product version. - */ - ProvisioningArtifactId: Id; - /** - * The updated name of the provisioning artifact. - */ - Name?: ProvisioningArtifactName; - /** - * The updated text description of the provisioning artifact. - */ - Description?: ProvisioningArtifactDescription; - } - export interface UpdateProvisioningArtifactOutput { - /** - * The resulting detailed provisioning artifact information. - */ - ProvisioningArtifactDetail?: ProvisioningArtifactDetail; - /** - * Additional information about the provisioning artifact update request. - */ - Info?: ProvisioningArtifactInfo; - /** - * The status of the current request. - */ - Status?: Status; - } - export interface UpdateProvisioningParameter { - /** - * The ProvisioningArtifactParameter.ParameterKey parameter from DescribeProvisioningParameters. - */ - Key?: ParameterKey; - /** - * The value to use for updating the product provisioning. Any constraints on this value can be found in the ProvisioningArtifactParameter parameter for Key. - */ - Value?: ParameterValue; - /** - * If true, uses the currently set value for Key, ignoring UpdateProvisioningParameter.Value. - */ - UsePreviousValue?: UsePreviousValue; - } - export type UpdateProvisioningParameters = UpdateProvisioningParameter[]; - export interface UpdateTagOptionInput { - /** - * The identifier of the constraint to update. - */ - Id: TagOptionId; - /** - * The updated value. - */ - Value?: TagOptionValue; - /** - * The updated active state. - */ - Active?: TagOptionActive; - } - export interface UpdateTagOptionOutput { - /** - * The resulting detailed TagOption information. - */ - TagOptionDetail?: TagOptionDetail; - } - export type UpdatedTime = Date; - export interface UsageInstruction { - /** - * The usage instruction type for the value. - */ - Type?: InstructionType; - /** - * The usage instruction value for this type. - */ - Value?: InstructionValue; - } - export type UsageInstructions = UsageInstruction[]; - export type UsePreviousValue = boolean; - export type Verbose = boolean; - /** - * A string in YYYY-MM-DD format that represents the latest possible API version that can be used in this service. Specify 'latest' to use the latest possible version. - */ - export type apiVersion = "2015-12-10"|"latest"|string; - export interface ClientApiVersions { - /** - * A string in YYYY-MM-DD format that represents the latest possible API version that can be used in this service. Specify 'latest' to use the latest possible version. - */ - apiVersion?: apiVersion; - } - export type ClientConfiguration = ServiceConfigurationOptions & ClientApiVersions; - /** - * Contains interfaces for use with the ServiceCatalog client. - */ - export import Types = ServiceCatalog; -} -export = ServiceCatalog; diff --git a/workshops/monte-carlo-on-ec2-spot-fleet/src/web/node_modules/aws-sdk/clients/servicecatalog.js b/workshops/monte-carlo-on-ec2-spot-fleet/src/web/node_modules/aws-sdk/clients/servicecatalog.js deleted file mode 100644 index d005048c..00000000 --- a/workshops/monte-carlo-on-ec2-spot-fleet/src/web/node_modules/aws-sdk/clients/servicecatalog.js +++ /dev/null @@ -1,18 +0,0 @@ -require('../lib/node_loader'); -var AWS = require('../lib/core'); -var Service = AWS.Service; -var apiLoader = AWS.apiLoader; - -apiLoader.services['servicecatalog'] = {}; -AWS.ServiceCatalog = Service.defineService('servicecatalog', ['2015-12-10']); -Object.defineProperty(apiLoader.services['servicecatalog'], '2015-12-10', { - get: function get() { - var model = require('../apis/servicecatalog-2015-12-10.min.json'); - model.paginators = require('../apis/servicecatalog-2015-12-10.paginators.json').pagination; - return model; - }, - enumerable: true, - configurable: true -}); - -module.exports = AWS.ServiceCatalog; diff --git a/workshops/monte-carlo-on-ec2-spot-fleet/src/web/node_modules/aws-sdk/clients/ses.d.ts b/workshops/monte-carlo-on-ec2-spot-fleet/src/web/node_modules/aws-sdk/clients/ses.d.ts deleted file mode 100644 index 5be32d28..00000000 --- a/workshops/monte-carlo-on-ec2-spot-fleet/src/web/node_modules/aws-sdk/clients/ses.d.ts +++ /dev/null @@ -1,2011 +0,0 @@ -import {Request} from '../lib/request'; -import {Response} from '../lib/response'; -import {AWSError} from '../lib/error'; -import {Service} from '../lib/service'; -import {ServiceConfigurationOptions} from '../lib/service'; -import {ConfigBase as Config} from '../lib/config'; -interface Blob {} -declare class SES extends Service { - /** - * Constructs a service object. This object has one method for each API operation. - */ - constructor(options?: SES.Types.ClientConfiguration) - config: Config & SES.Types.ClientConfiguration; - /** - * Creates a receipt rule set by cloning an existing one. All receipt rules and configurations are copied to the new receipt rule set and are completely independent of the source rule set. For information about setting up rule sets, see the Amazon SES Developer Guide. You can execute this operation no more than once per second. - */ - cloneReceiptRuleSet(params: SES.Types.CloneReceiptRuleSetRequest, callback?: (err: AWSError, data: SES.Types.CloneReceiptRuleSetResponse) => void): Request; - /** - * Creates a receipt rule set by cloning an existing one. All receipt rules and configurations are copied to the new receipt rule set and are completely independent of the source rule set. For information about setting up rule sets, see the Amazon SES Developer Guide. You can execute this operation no more than once per second. - */ - cloneReceiptRuleSet(callback?: (err: AWSError, data: SES.Types.CloneReceiptRuleSetResponse) => void): Request; - /** - * Creates a configuration set. Configuration sets enable you to publish email sending events. For information about using configuration sets, see the Amazon SES Developer Guide. You can execute this operation no more than once per second. - */ - createConfigurationSet(params: SES.Types.CreateConfigurationSetRequest, callback?: (err: AWSError, data: SES.Types.CreateConfigurationSetResponse) => void): Request; - /** - * Creates a configuration set. Configuration sets enable you to publish email sending events. For information about using configuration sets, see the Amazon SES Developer Guide. You can execute this operation no more than once per second. - */ - createConfigurationSet(callback?: (err: AWSError, data: SES.Types.CreateConfigurationSetResponse) => void): Request; - /** - * Creates a configuration set event destination. When you create or update an event destination, you must provide one, and only one, destination. The destination can be Amazon CloudWatch, Amazon Kinesis Firehose, or Amazon Simple Notification Service (Amazon SNS). An event destination is the AWS service to which Amazon SES publishes the email sending events associated with a configuration set. For information about using configuration sets, see the Amazon SES Developer Guide. You can execute this operation no more than once per second. - */ - createConfigurationSetEventDestination(params: SES.Types.CreateConfigurationSetEventDestinationRequest, callback?: (err: AWSError, data: SES.Types.CreateConfigurationSetEventDestinationResponse) => void): Request; - /** - * Creates a configuration set event destination. When you create or update an event destination, you must provide one, and only one, destination. The destination can be Amazon CloudWatch, Amazon Kinesis Firehose, or Amazon Simple Notification Service (Amazon SNS). An event destination is the AWS service to which Amazon SES publishes the email sending events associated with a configuration set. For information about using configuration sets, see the Amazon SES Developer Guide. You can execute this operation no more than once per second. - */ - createConfigurationSetEventDestination(callback?: (err: AWSError, data: SES.Types.CreateConfigurationSetEventDestinationResponse) => void): Request; - /** - * Creates an association between a configuration set and a custom domain for open and click event tracking. By default, images and links used for tracking open and click events are hosted on domains operated by Amazon SES. You can configure a subdomain of your own to handle these events. For information about using configuration sets, see Configuring Custom Domains to Handle Open and Click Tracking in the Amazon SES Developer Guide. - */ - createConfigurationSetTrackingOptions(params: SES.Types.CreateConfigurationSetTrackingOptionsRequest, callback?: (err: AWSError, data: SES.Types.CreateConfigurationSetTrackingOptionsResponse) => void): Request; - /** - * Creates an association between a configuration set and a custom domain for open and click event tracking. By default, images and links used for tracking open and click events are hosted on domains operated by Amazon SES. You can configure a subdomain of your own to handle these events. For information about using configuration sets, see Configuring Custom Domains to Handle Open and Click Tracking in the Amazon SES Developer Guide. - */ - createConfigurationSetTrackingOptions(callback?: (err: AWSError, data: SES.Types.CreateConfigurationSetTrackingOptionsResponse) => void): Request; - /** - * Creates a new IP address filter. For information about setting up IP address filters, see the Amazon SES Developer Guide. You can execute this operation no more than once per second. - */ - createReceiptFilter(params: SES.Types.CreateReceiptFilterRequest, callback?: (err: AWSError, data: SES.Types.CreateReceiptFilterResponse) => void): Request; - /** - * Creates a new IP address filter. For information about setting up IP address filters, see the Amazon SES Developer Guide. You can execute this operation no more than once per second. - */ - createReceiptFilter(callback?: (err: AWSError, data: SES.Types.CreateReceiptFilterResponse) => void): Request; - /** - * Creates a receipt rule. For information about setting up receipt rules, see the Amazon SES Developer Guide. You can execute this operation no more than once per second. - */ - createReceiptRule(params: SES.Types.CreateReceiptRuleRequest, callback?: (err: AWSError, data: SES.Types.CreateReceiptRuleResponse) => void): Request; - /** - * Creates a receipt rule. For information about setting up receipt rules, see the Amazon SES Developer Guide. You can execute this operation no more than once per second. - */ - createReceiptRule(callback?: (err: AWSError, data: SES.Types.CreateReceiptRuleResponse) => void): Request; - /** - * Creates an empty receipt rule set. For information about setting up receipt rule sets, see the Amazon SES Developer Guide. You can execute this operation no more than once per second. - */ - createReceiptRuleSet(params: SES.Types.CreateReceiptRuleSetRequest, callback?: (err: AWSError, data: SES.Types.CreateReceiptRuleSetResponse) => void): Request; - /** - * Creates an empty receipt rule set. For information about setting up receipt rule sets, see the Amazon SES Developer Guide. You can execute this operation no more than once per second. - */ - createReceiptRuleSet(callback?: (err: AWSError, data: SES.Types.CreateReceiptRuleSetResponse) => void): Request; - /** - * Creates an email template. Email templates enable you to send personalized email to one or more destinations in a single API operation. For more information, see the Amazon SES Developer Guide. You can execute this operation no more than once per second. - */ - createTemplate(params: SES.Types.CreateTemplateRequest, callback?: (err: AWSError, data: SES.Types.CreateTemplateResponse) => void): Request; - /** - * Creates an email template. Email templates enable you to send personalized email to one or more destinations in a single API operation. For more information, see the Amazon SES Developer Guide. You can execute this operation no more than once per second. - */ - createTemplate(callback?: (err: AWSError, data: SES.Types.CreateTemplateResponse) => void): Request; - /** - * Deletes a configuration set. Configuration sets enable you to publish email sending events. For information about using configuration sets, see the Amazon SES Developer Guide. You can execute this operation no more than once per second. - */ - deleteConfigurationSet(params: SES.Types.DeleteConfigurationSetRequest, callback?: (err: AWSError, data: SES.Types.DeleteConfigurationSetResponse) => void): Request; - /** - * Deletes a configuration set. Configuration sets enable you to publish email sending events. For information about using configuration sets, see the Amazon SES Developer Guide. You can execute this operation no more than once per second. - */ - deleteConfigurationSet(callback?: (err: AWSError, data: SES.Types.DeleteConfigurationSetResponse) => void): Request; - /** - * Deletes a configuration set event destination. Configuration set event destinations are associated with configuration sets, which enable you to publish email sending events. For information about using configuration sets, see the Amazon SES Developer Guide. You can execute this operation no more than once per second. - */ - deleteConfigurationSetEventDestination(params: SES.Types.DeleteConfigurationSetEventDestinationRequest, callback?: (err: AWSError, data: SES.Types.DeleteConfigurationSetEventDestinationResponse) => void): Request; - /** - * Deletes a configuration set event destination. Configuration set event destinations are associated with configuration sets, which enable you to publish email sending events. For information about using configuration sets, see the Amazon SES Developer Guide. You can execute this operation no more than once per second. - */ - deleteConfigurationSetEventDestination(callback?: (err: AWSError, data: SES.Types.DeleteConfigurationSetEventDestinationResponse) => void): Request; - /** - * Deletes an association between a configuration set and a custom domain for open and click event tracking. By default, images and links used for tracking open and click events are hosted on domains operated by Amazon SES. You can configure a subdomain of your own to handle these events. For information about using configuration sets, see Configuring Custom Domains to Handle Open and Click Tracking in the Amazon SES Developer Guide. Deleting this kind of association will result in emails sent using the specified configuration set to capture open and click events using the standard, Amazon SES-operated domains. - */ - deleteConfigurationSetTrackingOptions(params: SES.Types.DeleteConfigurationSetTrackingOptionsRequest, callback?: (err: AWSError, data: SES.Types.DeleteConfigurationSetTrackingOptionsResponse) => void): Request; - /** - * Deletes an association between a configuration set and a custom domain for open and click event tracking. By default, images and links used for tracking open and click events are hosted on domains operated by Amazon SES. You can configure a subdomain of your own to handle these events. For information about using configuration sets, see Configuring Custom Domains to Handle Open and Click Tracking in the Amazon SES Developer Guide. Deleting this kind of association will result in emails sent using the specified configuration set to capture open and click events using the standard, Amazon SES-operated domains. - */ - deleteConfigurationSetTrackingOptions(callback?: (err: AWSError, data: SES.Types.DeleteConfigurationSetTrackingOptionsResponse) => void): Request; - /** - * Deletes the specified identity (an email address or a domain) from the list of verified identities. You can execute this operation no more than once per second. - */ - deleteIdentity(params: SES.Types.DeleteIdentityRequest, callback?: (err: AWSError, data: SES.Types.DeleteIdentityResponse) => void): Request; - /** - * Deletes the specified identity (an email address or a domain) from the list of verified identities. You can execute this operation no more than once per second. - */ - deleteIdentity(callback?: (err: AWSError, data: SES.Types.DeleteIdentityResponse) => void): Request; - /** - * Deletes the specified sending authorization policy for the given identity (an email address or a domain). This API returns successfully even if a policy with the specified name does not exist. This API is for the identity owner only. If you have not verified the identity, this API will return an error. Sending authorization is a feature that enables an identity owner to authorize other senders to use its identities. For information about using sending authorization, see the Amazon SES Developer Guide. You can execute this operation no more than once per second. - */ - deleteIdentityPolicy(params: SES.Types.DeleteIdentityPolicyRequest, callback?: (err: AWSError, data: SES.Types.DeleteIdentityPolicyResponse) => void): Request; - /** - * Deletes the specified sending authorization policy for the given identity (an email address or a domain). This API returns successfully even if a policy with the specified name does not exist. This API is for the identity owner only. If you have not verified the identity, this API will return an error. Sending authorization is a feature that enables an identity owner to authorize other senders to use its identities. For information about using sending authorization, see the Amazon SES Developer Guide. You can execute this operation no more than once per second. - */ - deleteIdentityPolicy(callback?: (err: AWSError, data: SES.Types.DeleteIdentityPolicyResponse) => void): Request; - /** - * Deletes the specified IP address filter. For information about managing IP address filters, see the Amazon SES Developer Guide. You can execute this operation no more than once per second. - */ - deleteReceiptFilter(params: SES.Types.DeleteReceiptFilterRequest, callback?: (err: AWSError, data: SES.Types.DeleteReceiptFilterResponse) => void): Request; - /** - * Deletes the specified IP address filter. For information about managing IP address filters, see the Amazon SES Developer Guide. You can execute this operation no more than once per second. - */ - deleteReceiptFilter(callback?: (err: AWSError, data: SES.Types.DeleteReceiptFilterResponse) => void): Request; - /** - * Deletes the specified receipt rule. For information about managing receipt rules, see the Amazon SES Developer Guide. You can execute this operation no more than once per second. - */ - deleteReceiptRule(params: SES.Types.DeleteReceiptRuleRequest, callback?: (err: AWSError, data: SES.Types.DeleteReceiptRuleResponse) => void): Request; - /** - * Deletes the specified receipt rule. For information about managing receipt rules, see the Amazon SES Developer Guide. You can execute this operation no more than once per second. - */ - deleteReceiptRule(callback?: (err: AWSError, data: SES.Types.DeleteReceiptRuleResponse) => void): Request; - /** - * Deletes the specified receipt rule set and all of the receipt rules it contains. The currently active rule set cannot be deleted. For information about managing receipt rule sets, see the Amazon SES Developer Guide. You can execute this operation no more than once per second. - */ - deleteReceiptRuleSet(params: SES.Types.DeleteReceiptRuleSetRequest, callback?: (err: AWSError, data: SES.Types.DeleteReceiptRuleSetResponse) => void): Request; - /** - * Deletes the specified receipt rule set and all of the receipt rules it contains. The currently active rule set cannot be deleted. For information about managing receipt rule sets, see the Amazon SES Developer Guide. You can execute this operation no more than once per second. - */ - deleteReceiptRuleSet(callback?: (err: AWSError, data: SES.Types.DeleteReceiptRuleSetResponse) => void): Request; - /** - * Deletes an email template. You can execute this operation no more than once per second. - */ - deleteTemplate(params: SES.Types.DeleteTemplateRequest, callback?: (err: AWSError, data: SES.Types.DeleteTemplateResponse) => void): Request; - /** - * Deletes an email template. You can execute this operation no more than once per second. - */ - deleteTemplate(callback?: (err: AWSError, data: SES.Types.DeleteTemplateResponse) => void): Request; - /** - * Deprecated. Use the DeleteIdentity operation to delete email addresses and domains. - */ - deleteVerifiedEmailAddress(params: SES.Types.DeleteVerifiedEmailAddressRequest, callback?: (err: AWSError, data: {}) => void): Request<{}, AWSError>; - /** - * Deprecated. Use the DeleteIdentity operation to delete email addresses and domains. - */ - deleteVerifiedEmailAddress(callback?: (err: AWSError, data: {}) => void): Request<{}, AWSError>; - /** - * Returns the metadata and receipt rules for the receipt rule set that is currently active. For information about setting up receipt rule sets, see the Amazon SES Developer Guide. You can execute this operation no more than once per second. - */ - describeActiveReceiptRuleSet(params: SES.Types.DescribeActiveReceiptRuleSetRequest, callback?: (err: AWSError, data: SES.Types.DescribeActiveReceiptRuleSetResponse) => void): Request; - /** - * Returns the metadata and receipt rules for the receipt rule set that is currently active. For information about setting up receipt rule sets, see the Amazon SES Developer Guide. You can execute this operation no more than once per second. - */ - describeActiveReceiptRuleSet(callback?: (err: AWSError, data: SES.Types.DescribeActiveReceiptRuleSetResponse) => void): Request; - /** - * Returns the details of the specified configuration set. For information about using configuration sets, see the Amazon SES Developer Guide. You can execute this operation no more than once per second. - */ - describeConfigurationSet(params: SES.Types.DescribeConfigurationSetRequest, callback?: (err: AWSError, data: SES.Types.DescribeConfigurationSetResponse) => void): Request; - /** - * Returns the details of the specified configuration set. For information about using configuration sets, see the Amazon SES Developer Guide. You can execute this operation no more than once per second. - */ - describeConfigurationSet(callback?: (err: AWSError, data: SES.Types.DescribeConfigurationSetResponse) => void): Request; - /** - * Returns the details of the specified receipt rule. For information about setting up receipt rules, see the Amazon SES Developer Guide. You can execute this operation no more than once per second. - */ - describeReceiptRule(params: SES.Types.DescribeReceiptRuleRequest, callback?: (err: AWSError, data: SES.Types.DescribeReceiptRuleResponse) => void): Request; - /** - * Returns the details of the specified receipt rule. For information about setting up receipt rules, see the Amazon SES Developer Guide. You can execute this operation no more than once per second. - */ - describeReceiptRule(callback?: (err: AWSError, data: SES.Types.DescribeReceiptRuleResponse) => void): Request; - /** - * Returns the details of the specified receipt rule set. For information about managing receipt rule sets, see the Amazon SES Developer Guide. You can execute this operation no more than once per second. - */ - describeReceiptRuleSet(params: SES.Types.DescribeReceiptRuleSetRequest, callback?: (err: AWSError, data: SES.Types.DescribeReceiptRuleSetResponse) => void): Request; - /** - * Returns the details of the specified receipt rule set. For information about managing receipt rule sets, see the Amazon SES Developer Guide. You can execute this operation no more than once per second. - */ - describeReceiptRuleSet(callback?: (err: AWSError, data: SES.Types.DescribeReceiptRuleSetResponse) => void): Request; - /** - * Returns the current status of Easy DKIM signing for an entity. For domain name identities, this operation also returns the DKIM tokens that are required for Easy DKIM signing, and whether Amazon SES has successfully verified that these tokens have been published. This operation takes a list of identities as input and returns the following information for each: Whether Easy DKIM signing is enabled or disabled. A set of DKIM tokens that represent the identity. If the identity is an email address, the tokens represent the domain of that address. Whether Amazon SES has successfully verified the DKIM tokens published in the domain's DNS. This information is only returned for domain name identities, not for email addresses. This operation is throttled at one request per second and can only get DKIM attributes for up to 100 identities at a time. For more information about creating DNS records using DKIM tokens, go to the Amazon SES Developer Guide. - */ - getIdentityDkimAttributes(params: SES.Types.GetIdentityDkimAttributesRequest, callback?: (err: AWSError, data: SES.Types.GetIdentityDkimAttributesResponse) => void): Request; - /** - * Returns the current status of Easy DKIM signing for an entity. For domain name identities, this operation also returns the DKIM tokens that are required for Easy DKIM signing, and whether Amazon SES has successfully verified that these tokens have been published. This operation takes a list of identities as input and returns the following information for each: Whether Easy DKIM signing is enabled or disabled. A set of DKIM tokens that represent the identity. If the identity is an email address, the tokens represent the domain of that address. Whether Amazon SES has successfully verified the DKIM tokens published in the domain's DNS. This information is only returned for domain name identities, not for email addresses. This operation is throttled at one request per second and can only get DKIM attributes for up to 100 identities at a time. For more information about creating DNS records using DKIM tokens, go to the Amazon SES Developer Guide. - */ - getIdentityDkimAttributes(callback?: (err: AWSError, data: SES.Types.GetIdentityDkimAttributesResponse) => void): Request; - /** - * Returns the custom MAIL FROM attributes for a list of identities (email addresses : domains). This operation is throttled at one request per second and can only get custom MAIL FROM attributes for up to 100 identities at a time. - */ - getIdentityMailFromDomainAttributes(params: SES.Types.GetIdentityMailFromDomainAttributesRequest, callback?: (err: AWSError, data: SES.Types.GetIdentityMailFromDomainAttributesResponse) => void): Request; - /** - * Returns the custom MAIL FROM attributes for a list of identities (email addresses : domains). This operation is throttled at one request per second and can only get custom MAIL FROM attributes for up to 100 identities at a time. - */ - getIdentityMailFromDomainAttributes(callback?: (err: AWSError, data: SES.Types.GetIdentityMailFromDomainAttributesResponse) => void): Request; - /** - * Given a list of verified identities (email addresses and/or domains), returns a structure describing identity notification attributes. This operation is throttled at one request per second and can only get notification attributes for up to 100 identities at a time. For more information about using notifications with Amazon SES, see the Amazon SES Developer Guide. - */ - getIdentityNotificationAttributes(params: SES.Types.GetIdentityNotificationAttributesRequest, callback?: (err: AWSError, data: SES.Types.GetIdentityNotificationAttributesResponse) => void): Request; - /** - * Given a list of verified identities (email addresses and/or domains), returns a structure describing identity notification attributes. This operation is throttled at one request per second and can only get notification attributes for up to 100 identities at a time. For more information about using notifications with Amazon SES, see the Amazon SES Developer Guide. - */ - getIdentityNotificationAttributes(callback?: (err: AWSError, data: SES.Types.GetIdentityNotificationAttributesResponse) => void): Request; - /** - * Returns the requested sending authorization policies for the given identity (an email address or a domain). The policies are returned as a map of policy names to policy contents. You can retrieve a maximum of 20 policies at a time. This API is for the identity owner only. If you have not verified the identity, this API will return an error. Sending authorization is a feature that enables an identity owner to authorize other senders to use its identities. For information about using sending authorization, see the Amazon SES Developer Guide. You can execute this operation no more than once per second. - */ - getIdentityPolicies(params: SES.Types.GetIdentityPoliciesRequest, callback?: (err: AWSError, data: SES.Types.GetIdentityPoliciesResponse) => void): Request; - /** - * Returns the requested sending authorization policies for the given identity (an email address or a domain). The policies are returned as a map of policy names to policy contents. You can retrieve a maximum of 20 policies at a time. This API is for the identity owner only. If you have not verified the identity, this API will return an error. Sending authorization is a feature that enables an identity owner to authorize other senders to use its identities. For information about using sending authorization, see the Amazon SES Developer Guide. You can execute this operation no more than once per second. - */ - getIdentityPolicies(callback?: (err: AWSError, data: SES.Types.GetIdentityPoliciesResponse) => void): Request; - /** - * Given a list of identities (email addresses and/or domains), returns the verification status and (for domain identities) the verification token for each identity. The verification status of an email address is "Pending" until the email address owner clicks the link within the verification email that Amazon SES sent to that address. If the email address owner clicks the link within 24 hours, the verification status of the email address changes to "Success". If the link is not clicked within 24 hours, the verification status changes to "Failed." In that case, if you still want to verify the email address, you must restart the verification process from the beginning. For domain identities, the domain's verification status is "Pending" as Amazon SES searches for the required TXT record in the DNS settings of the domain. When Amazon SES detects the record, the domain's verification status changes to "Success". If Amazon SES is unable to detect the record within 72 hours, the domain's verification status changes to "Failed." In that case, if you still want to verify the domain, you must restart the verification process from the beginning. This operation is throttled at one request per second and can only get verification attributes for up to 100 identities at a time. - */ - getIdentityVerificationAttributes(params: SES.Types.GetIdentityVerificationAttributesRequest, callback?: (err: AWSError, data: SES.Types.GetIdentityVerificationAttributesResponse) => void): Request; - /** - * Given a list of identities (email addresses and/or domains), returns the verification status and (for domain identities) the verification token for each identity. The verification status of an email address is "Pending" until the email address owner clicks the link within the verification email that Amazon SES sent to that address. If the email address owner clicks the link within 24 hours, the verification status of the email address changes to "Success". If the link is not clicked within 24 hours, the verification status changes to "Failed." In that case, if you still want to verify the email address, you must restart the verification process from the beginning. For domain identities, the domain's verification status is "Pending" as Amazon SES searches for the required TXT record in the DNS settings of the domain. When Amazon SES detects the record, the domain's verification status changes to "Success". If Amazon SES is unable to detect the record within 72 hours, the domain's verification status changes to "Failed." In that case, if you still want to verify the domain, you must restart the verification process from the beginning. This operation is throttled at one request per second and can only get verification attributes for up to 100 identities at a time. - */ - getIdentityVerificationAttributes(callback?: (err: AWSError, data: SES.Types.GetIdentityVerificationAttributesResponse) => void): Request; - /** - * Provides the sending limits for the Amazon SES account. You can execute this operation no more than once per second. - */ - getSendQuota(callback?: (err: AWSError, data: SES.Types.GetSendQuotaResponse) => void): Request; - /** - * Provides sending statistics for the Amazon SES account. The result is a list of data points, representing the last two weeks of sending activity. Each data point in the list contains statistics for a 15-minute period of time. You can execute this operation no more than once per second. - */ - getSendStatistics(callback?: (err: AWSError, data: SES.Types.GetSendStatisticsResponse) => void): Request; - /** - * Displays the template object (which includes the Subject line, HTML part and text part) for the template you specify. You can execute this operation no more than once per second. - */ - getTemplate(params: SES.Types.GetTemplateRequest, callback?: (err: AWSError, data: SES.Types.GetTemplateResponse) => void): Request; - /** - * Displays the template object (which includes the Subject line, HTML part and text part) for the template you specify. You can execute this operation no more than once per second. - */ - getTemplate(callback?: (err: AWSError, data: SES.Types.GetTemplateResponse) => void): Request; - /** - * Provides a list of the configuration sets associated with your Amazon SES account. For information about using configuration sets, see Monitoring Your Amazon SES Sending Activity in the Amazon SES Developer Guide. You can execute this operation no more than once per second. This operation will return up to 1,000 configuration sets each time it is run. If your Amazon SES account has more than 1,000 configuration sets, this operation will also return a NextToken element. You can then execute the ListConfigurationSets operation again, passing the NextToken parameter and the value of the NextToken element to retrieve additional results. - */ - listConfigurationSets(params: SES.Types.ListConfigurationSetsRequest, callback?: (err: AWSError, data: SES.Types.ListConfigurationSetsResponse) => void): Request; - /** - * Provides a list of the configuration sets associated with your Amazon SES account. For information about using configuration sets, see Monitoring Your Amazon SES Sending Activity in the Amazon SES Developer Guide. You can execute this operation no more than once per second. This operation will return up to 1,000 configuration sets each time it is run. If your Amazon SES account has more than 1,000 configuration sets, this operation will also return a NextToken element. You can then execute the ListConfigurationSets operation again, passing the NextToken parameter and the value of the NextToken element to retrieve additional results. - */ - listConfigurationSets(callback?: (err: AWSError, data: SES.Types.ListConfigurationSetsResponse) => void): Request; - /** - * Returns a list containing all of the identities (email addresses and domains) for your AWS account, regardless of verification status. You can execute this operation no more than once per second. - */ - listIdentities(params: SES.Types.ListIdentitiesRequest, callback?: (err: AWSError, data: SES.Types.ListIdentitiesResponse) => void): Request; - /** - * Returns a list containing all of the identities (email addresses and domains) for your AWS account, regardless of verification status. You can execute this operation no more than once per second. - */ - listIdentities(callback?: (err: AWSError, data: SES.Types.ListIdentitiesResponse) => void): Request; - /** - * Returns a list of sending authorization policies that are attached to the given identity (an email address or a domain). This API returns only a list. If you want the actual policy content, you can use GetIdentityPolicies. This API is for the identity owner only. If you have not verified the identity, this API will return an error. Sending authorization is a feature that enables an identity owner to authorize other senders to use its identities. For information about using sending authorization, see the Amazon SES Developer Guide. You can execute this operation no more than once per second. - */ - listIdentityPolicies(params: SES.Types.ListIdentityPoliciesRequest, callback?: (err: AWSError, data: SES.Types.ListIdentityPoliciesResponse) => void): Request; - /** - * Returns a list of sending authorization policies that are attached to the given identity (an email address or a domain). This API returns only a list. If you want the actual policy content, you can use GetIdentityPolicies. This API is for the identity owner only. If you have not verified the identity, this API will return an error. Sending authorization is a feature that enables an identity owner to authorize other senders to use its identities. For information about using sending authorization, see the Amazon SES Developer Guide. You can execute this operation no more than once per second. - */ - listIdentityPolicies(callback?: (err: AWSError, data: SES.Types.ListIdentityPoliciesResponse) => void): Request; - /** - * Lists the IP address filters associated with your AWS account. For information about managing IP address filters, see the Amazon SES Developer Guide. You can execute this operation no more than once per second. - */ - listReceiptFilters(params: SES.Types.ListReceiptFiltersRequest, callback?: (err: AWSError, data: SES.Types.ListReceiptFiltersResponse) => void): Request; - /** - * Lists the IP address filters associated with your AWS account. For information about managing IP address filters, see the Amazon SES Developer Guide. You can execute this operation no more than once per second. - */ - listReceiptFilters(callback?: (err: AWSError, data: SES.Types.ListReceiptFiltersResponse) => void): Request; - /** - * Lists the receipt rule sets that exist under your AWS account. If there are additional receipt rule sets to be retrieved, you will receive a NextToken that you can provide to the next call to ListReceiptRuleSets to retrieve the additional entries. For information about managing receipt rule sets, see the Amazon SES Developer Guide. You can execute this operation no more than once per second. - */ - listReceiptRuleSets(params: SES.Types.ListReceiptRuleSetsRequest, callback?: (err: AWSError, data: SES.Types.ListReceiptRuleSetsResponse) => void): Request; - /** - * Lists the receipt rule sets that exist under your AWS account. If there are additional receipt rule sets to be retrieved, you will receive a NextToken that you can provide to the next call to ListReceiptRuleSets to retrieve the additional entries. For information about managing receipt rule sets, see the Amazon SES Developer Guide. You can execute this operation no more than once per second. - */ - listReceiptRuleSets(callback?: (err: AWSError, data: SES.Types.ListReceiptRuleSetsResponse) => void): Request; - /** - * Lists the email templates present in your Amazon SES account. You can execute this operation no more than once per second. - */ - listTemplates(params: SES.Types.ListTemplatesRequest, callback?: (err: AWSError, data: SES.Types.ListTemplatesResponse) => void): Request; - /** - * Lists the email templates present in your Amazon SES account. You can execute this operation no more than once per second. - */ - listTemplates(callback?: (err: AWSError, data: SES.Types.ListTemplatesResponse) => void): Request; - /** - * Deprecated. Use the ListIdentities operation to list the email addresses and domains associated with your account. - */ - listVerifiedEmailAddresses(callback?: (err: AWSError, data: SES.Types.ListVerifiedEmailAddressesResponse) => void): Request; - /** - * Adds or updates a sending authorization policy for the specified identity (an email address or a domain). This API is for the identity owner only. If you have not verified the identity, this API will return an error. Sending authorization is a feature that enables an identity owner to authorize other senders to use its identities. For information about using sending authorization, see the Amazon SES Developer Guide. You can execute this operation no more than once per second. - */ - putIdentityPolicy(params: SES.Types.PutIdentityPolicyRequest, callback?: (err: AWSError, data: SES.Types.PutIdentityPolicyResponse) => void): Request; - /** - * Adds or updates a sending authorization policy for the specified identity (an email address or a domain). This API is for the identity owner only. If you have not verified the identity, this API will return an error. Sending authorization is a feature that enables an identity owner to authorize other senders to use its identities. For information about using sending authorization, see the Amazon SES Developer Guide. You can execute this operation no more than once per second. - */ - putIdentityPolicy(callback?: (err: AWSError, data: SES.Types.PutIdentityPolicyResponse) => void): Request; - /** - * Reorders the receipt rules within a receipt rule set. All of the rules in the rule set must be represented in this request. That is, this API will return an error if the reorder request doesn't explicitly position all of the rules. For information about managing receipt rule sets, see the Amazon SES Developer Guide. You can execute this operation no more than once per second. - */ - reorderReceiptRuleSet(params: SES.Types.ReorderReceiptRuleSetRequest, callback?: (err: AWSError, data: SES.Types.ReorderReceiptRuleSetResponse) => void): Request; - /** - * Reorders the receipt rules within a receipt rule set. All of the rules in the rule set must be represented in this request. That is, this API will return an error if the reorder request doesn't explicitly position all of the rules. For information about managing receipt rule sets, see the Amazon SES Developer Guide. You can execute this operation no more than once per second. - */ - reorderReceiptRuleSet(callback?: (err: AWSError, data: SES.Types.ReorderReceiptRuleSetResponse) => void): Request; - /** - * Generates and sends a bounce message to the sender of an email you received through Amazon SES. You can only use this API on an email up to 24 hours after you receive it. You cannot use this API to send generic bounces for mail that was not received by Amazon SES. For information about receiving email through Amazon SES, see the Amazon SES Developer Guide. You can execute this operation no more than once per second. - */ - sendBounce(params: SES.Types.SendBounceRequest, callback?: (err: AWSError, data: SES.Types.SendBounceResponse) => void): Request; - /** - * Generates and sends a bounce message to the sender of an email you received through Amazon SES. You can only use this API on an email up to 24 hours after you receive it. You cannot use this API to send generic bounces for mail that was not received by Amazon SES. For information about receiving email through Amazon SES, see the Amazon SES Developer Guide. You can execute this operation no more than once per second. - */ - sendBounce(callback?: (err: AWSError, data: SES.Types.SendBounceResponse) => void): Request; - /** - * Composes an email message to multiple destinations. The message body is created using an email template. In order to send email using the SendBulkTemplatedEmail operation, your call to the API must meet the following requirements: The call must refer to an existing email template. You can create email templates using the CreateTemplate operation. The message must be sent from a verified email address or domain. If your account is still in the Amazon SES sandbox, you may only send to verified addresses or domains, or to email addresses associated with the Amazon SES Mailbox Simulator. For more information, see Verifying Email Addresses and Domains in the Amazon SES Developer Guide. The total size of the message, including attachments, must be less than 10 MB. Each Destination parameter must include at least one recipient email address. The recipient address can be a To: address, a CC: address, or a BCC: address. If a recipient email address is invalid (that is, it is not in the format UserName@[SubDomain.]Domain.TopLevelDomain), the entire message will be rejected, even if the message contains other recipients that are valid. - */ - sendBulkTemplatedEmail(params: SES.Types.SendBulkTemplatedEmailRequest, callback?: (err: AWSError, data: SES.Types.SendBulkTemplatedEmailResponse) => void): Request; - /** - * Composes an email message to multiple destinations. The message body is created using an email template. In order to send email using the SendBulkTemplatedEmail operation, your call to the API must meet the following requirements: The call must refer to an existing email template. You can create email templates using the CreateTemplate operation. The message must be sent from a verified email address or domain. If your account is still in the Amazon SES sandbox, you may only send to verified addresses or domains, or to email addresses associated with the Amazon SES Mailbox Simulator. For more information, see Verifying Email Addresses and Domains in the Amazon SES Developer Guide. The total size of the message, including attachments, must be less than 10 MB. Each Destination parameter must include at least one recipient email address. The recipient address can be a To: address, a CC: address, or a BCC: address. If a recipient email address is invalid (that is, it is not in the format UserName@[SubDomain.]Domain.TopLevelDomain), the entire message will be rejected, even if the message contains other recipients that are valid. - */ - sendBulkTemplatedEmail(callback?: (err: AWSError, data: SES.Types.SendBulkTemplatedEmailResponse) => void): Request; - /** - * Composes an email message and immediately queues it for sending. In order to send email using the SendEmail operation, your message must meet the following requirements: The message must be sent from a verified email address or domain. If you attempt to send email using a non-verified address or domain, the operation will result in an "Email address not verified" error. If your account is still in the Amazon SES sandbox, you may only send to verified addresses or domains, or to email addresses associated with the Amazon SES Mailbox Simulator. For more information, see Verifying Email Addresses and Domains in the Amazon SES Developer Guide. The total size of the message, including attachments, must be smaller than 10 MB. The message must include at least one recipient email address. The recipient address can be a To: address, a CC: address, or a BCC: address. If a recipient email address is invalid (that is, it is not in the format UserName@[SubDomain.]Domain.TopLevelDomain), the entire message will be rejected, even if the message contains other recipients that are valid. The message may not include more than 50 recipients, across the To:, CC: and BCC: fields. If you need to send an email message to a larger audience, you can divide your recipient list into groups of 50 or fewer, and then call the SendEmail operation several times to send the message to each group. For every message that you send, the total number of recipients (including each recipient in the To:, CC: and BCC: fields) is counted against the maximum number of emails you can send in a 24-hour period (your sending quota). For more information about sending quotas in Amazon SES, see Managing Your Amazon SES Sending Limits in the Amazon SES Developer Guide. - */ - sendEmail(params: SES.Types.SendEmailRequest, callback?: (err: AWSError, data: SES.Types.SendEmailResponse) => void): Request; - /** - * Composes an email message and immediately queues it for sending. In order to send email using the SendEmail operation, your message must meet the following requirements: The message must be sent from a verified email address or domain. If you attempt to send email using a non-verified address or domain, the operation will result in an "Email address not verified" error. If your account is still in the Amazon SES sandbox, you may only send to verified addresses or domains, or to email addresses associated with the Amazon SES Mailbox Simulator. For more information, see Verifying Email Addresses and Domains in the Amazon SES Developer Guide. The total size of the message, including attachments, must be smaller than 10 MB. The message must include at least one recipient email address. The recipient address can be a To: address, a CC: address, or a BCC: address. If a recipient email address is invalid (that is, it is not in the format UserName@[SubDomain.]Domain.TopLevelDomain), the entire message will be rejected, even if the message contains other recipients that are valid. The message may not include more than 50 recipients, across the To:, CC: and BCC: fields. If you need to send an email message to a larger audience, you can divide your recipient list into groups of 50 or fewer, and then call the SendEmail operation several times to send the message to each group. For every message that you send, the total number of recipients (including each recipient in the To:, CC: and BCC: fields) is counted against the maximum number of emails you can send in a 24-hour period (your sending quota). For more information about sending quotas in Amazon SES, see Managing Your Amazon SES Sending Limits in the Amazon SES Developer Guide. - */ - sendEmail(callback?: (err: AWSError, data: SES.Types.SendEmailResponse) => void): Request; - /** - * Composes an email message and immediately queues it for sending. When calling this operation, you may specify the message headers as well as the content. The SendRawEmail operation is particularly useful for sending multipart MIME emails (such as those that contain both a plain-text and an HTML version). In order to send email using the SendRawEmail operation, your message must meet the following requirements: The message must be sent from a verified email address or domain. If you attempt to send email using a non-verified address or domain, the operation will result in an "Email address not verified" error. If your account is still in the Amazon SES sandbox, you may only send to verified addresses or domains, or to email addresses associated with the Amazon SES Mailbox Simulator. For more information, see Verifying Email Addresses and Domains in the Amazon SES Developer Guide. The total size of the message, including attachments, must be smaller than 10 MB. The message must include at least one recipient email address. The recipient address can be a To: address, a CC: address, or a BCC: address. If a recipient email address is invalid (that is, it is not in the format UserName@[SubDomain.]Domain.TopLevelDomain), the entire message will be rejected, even if the message contains other recipients that are valid. The message may not include more than 50 recipients, across the To:, CC: and BCC: fields. If you need to send an email message to a larger audience, you can divide your recipient list into groups of 50 or fewer, and then call the SendRawEmail operation several times to send the message to each group. For every message that you send, the total number of recipients (including each recipient in the To:, CC: and BCC: fields) is counted against the maximum number of emails you can send in a 24-hour period (your sending quota). For more information about sending quotas in Amazon SES, see Managing Your Amazon SES Sending Limits in the Amazon SES Developer Guide. Additionally, keep the following considerations in mind when using the SendRawEmail operation: Although you can customize the message headers when using the SendRawEmail operation, Amazon SES will automatically apply its own Message-ID and Date headers; if you passed these headers when creating the message, they will be overwritten by the values that Amazon SES provides. If you are using sending authorization to send on behalf of another user, SendRawEmail enables you to specify the cross-account identity for the email's Source, From, and Return-Path parameters in one of two ways: you can pass optional parameters SourceArn, FromArn, and/or ReturnPathArn to the API, or you can include the following X-headers in the header of your raw email: X-SES-SOURCE-ARN X-SES-FROM-ARN X-SES-RETURN-PATH-ARN Do not include these X-headers in the DKIM signature; Amazon SES will remove them before sending the email. For most common sending authorization scenarios, we recommend that you specify the SourceIdentityArn parameter and not the FromIdentityArn or ReturnPathIdentityArn parameters. If you only specify the SourceIdentityArn parameter, Amazon SES will set the From and Return Path addresses to the identity specified in SourceIdentityArn. For more information about sending authorization, see the Using Sending Authorization with Amazon SES in the Amazon SES Developer Guide. - */ - sendRawEmail(params: SES.Types.SendRawEmailRequest, callback?: (err: AWSError, data: SES.Types.SendRawEmailResponse) => void): Request; - /** - * Composes an email message and immediately queues it for sending. When calling this operation, you may specify the message headers as well as the content. The SendRawEmail operation is particularly useful for sending multipart MIME emails (such as those that contain both a plain-text and an HTML version). In order to send email using the SendRawEmail operation, your message must meet the following requirements: The message must be sent from a verified email address or domain. If you attempt to send email using a non-verified address or domain, the operation will result in an "Email address not verified" error. If your account is still in the Amazon SES sandbox, you may only send to verified addresses or domains, or to email addresses associated with the Amazon SES Mailbox Simulator. For more information, see Verifying Email Addresses and Domains in the Amazon SES Developer Guide. The total size of the message, including attachments, must be smaller than 10 MB. The message must include at least one recipient email address. The recipient address can be a To: address, a CC: address, or a BCC: address. If a recipient email address is invalid (that is, it is not in the format UserName@[SubDomain.]Domain.TopLevelDomain), the entire message will be rejected, even if the message contains other recipients that are valid. The message may not include more than 50 recipients, across the To:, CC: and BCC: fields. If you need to send an email message to a larger audience, you can divide your recipient list into groups of 50 or fewer, and then call the SendRawEmail operation several times to send the message to each group. For every message that you send, the total number of recipients (including each recipient in the To:, CC: and BCC: fields) is counted against the maximum number of emails you can send in a 24-hour period (your sending quota). For more information about sending quotas in Amazon SES, see Managing Your Amazon SES Sending Limits in the Amazon SES Developer Guide. Additionally, keep the following considerations in mind when using the SendRawEmail operation: Although you can customize the message headers when using the SendRawEmail operation, Amazon SES will automatically apply its own Message-ID and Date headers; if you passed these headers when creating the message, they will be overwritten by the values that Amazon SES provides. If you are using sending authorization to send on behalf of another user, SendRawEmail enables you to specify the cross-account identity for the email's Source, From, and Return-Path parameters in one of two ways: you can pass optional parameters SourceArn, FromArn, and/or ReturnPathArn to the API, or you can include the following X-headers in the header of your raw email: X-SES-SOURCE-ARN X-SES-FROM-ARN X-SES-RETURN-PATH-ARN Do not include these X-headers in the DKIM signature; Amazon SES will remove them before sending the email. For most common sending authorization scenarios, we recommend that you specify the SourceIdentityArn parameter and not the FromIdentityArn or ReturnPathIdentityArn parameters. If you only specify the SourceIdentityArn parameter, Amazon SES will set the From and Return Path addresses to the identity specified in SourceIdentityArn. For more information about sending authorization, see the Using Sending Authorization with Amazon SES in the Amazon SES Developer Guide. - */ - sendRawEmail(callback?: (err: AWSError, data: SES.Types.SendRawEmailResponse) => void): Request; - /** - * Composes an email message using an email template and immediately queues it for sending. In order to send email using the SendTemplatedEmail operation, your call to the API must meet the following requirements: The call must refer to an existing email template. You can create email templates using the CreateTemplate operation. The message must be sent from a verified email address or domain. If your account is still in the Amazon SES sandbox, you may only send to verified addresses or domains, or to email addresses associated with the Amazon SES Mailbox Simulator. For more information, see Verifying Email Addresses and Domains in the Amazon SES Developer Guide. The total size of the message, including attachments, must be less than 10 MB. Calls to the SendTemplatedEmail operation may only include one Destination parameter. A destination is a set of recipients who will receive the same version of the email. The Destination parameter can include up to 50 recipients, across the To:, CC: and BCC: fields. The Destination parameter must include at least one recipient email address. The recipient address can be a To: address, a CC: address, or a BCC: address. If a recipient email address is invalid (that is, it is not in the format UserName@[SubDomain.]Domain.TopLevelDomain), the entire message will be rejected, even if the message contains other recipients that are valid. - */ - sendTemplatedEmail(params: SES.Types.SendTemplatedEmailRequest, callback?: (err: AWSError, data: SES.Types.SendTemplatedEmailResponse) => void): Request; - /** - * Composes an email message using an email template and immediately queues it for sending. In order to send email using the SendTemplatedEmail operation, your call to the API must meet the following requirements: The call must refer to an existing email template. You can create email templates using the CreateTemplate operation. The message must be sent from a verified email address or domain. If your account is still in the Amazon SES sandbox, you may only send to verified addresses or domains, or to email addresses associated with the Amazon SES Mailbox Simulator. For more information, see Verifying Email Addresses and Domains in the Amazon SES Developer Guide. The total size of the message, including attachments, must be less than 10 MB. Calls to the SendTemplatedEmail operation may only include one Destination parameter. A destination is a set of recipients who will receive the same version of the email. The Destination parameter can include up to 50 recipients, across the To:, CC: and BCC: fields. The Destination parameter must include at least one recipient email address. The recipient address can be a To: address, a CC: address, or a BCC: address. If a recipient email address is invalid (that is, it is not in the format UserName@[SubDomain.]Domain.TopLevelDomain), the entire message will be rejected, even if the message contains other recipients that are valid. - */ - sendTemplatedEmail(callback?: (err: AWSError, data: SES.Types.SendTemplatedEmailResponse) => void): Request; - /** - * Sets the specified receipt rule set as the active receipt rule set. To disable your email-receiving through Amazon SES completely, you can call this API with RuleSetName set to null. For information about managing receipt rule sets, see the Amazon SES Developer Guide. You can execute this operation no more than once per second. - */ - setActiveReceiptRuleSet(params: SES.Types.SetActiveReceiptRuleSetRequest, callback?: (err: AWSError, data: SES.Types.SetActiveReceiptRuleSetResponse) => void): Request; - /** - * Sets the specified receipt rule set as the active receipt rule set. To disable your email-receiving through Amazon SES completely, you can call this API with RuleSetName set to null. For information about managing receipt rule sets, see the Amazon SES Developer Guide. You can execute this operation no more than once per second. - */ - setActiveReceiptRuleSet(callback?: (err: AWSError, data: SES.Types.SetActiveReceiptRuleSetResponse) => void): Request; - /** - * Enables or disables Easy DKIM signing of email sent from an identity: If Easy DKIM signing is enabled for a domain name identity (such as example.com), then Amazon SES will DKIM-sign all email sent by addresses under that domain name (for example, user@example.com). If Easy DKIM signing is enabled for an email address, then Amazon SES will DKIM-sign all email sent by that email address. For email addresses (for example, user@example.com), you can only enable Easy DKIM signing if the corresponding domain (in this case, example.com) has been set up for Easy DKIM using the AWS Console or the VerifyDomainDkim operation. You can execute this operation no more than once per second. For more information about Easy DKIM signing, go to the Amazon SES Developer Guide. - */ - setIdentityDkimEnabled(params: SES.Types.SetIdentityDkimEnabledRequest, callback?: (err: AWSError, data: SES.Types.SetIdentityDkimEnabledResponse) => void): Request; - /** - * Enables or disables Easy DKIM signing of email sent from an identity: If Easy DKIM signing is enabled for a domain name identity (such as example.com), then Amazon SES will DKIM-sign all email sent by addresses under that domain name (for example, user@example.com). If Easy DKIM signing is enabled for an email address, then Amazon SES will DKIM-sign all email sent by that email address. For email addresses (for example, user@example.com), you can only enable Easy DKIM signing if the corresponding domain (in this case, example.com) has been set up for Easy DKIM using the AWS Console or the VerifyDomainDkim operation. You can execute this operation no more than once per second. For more information about Easy DKIM signing, go to the Amazon SES Developer Guide. - */ - setIdentityDkimEnabled(callback?: (err: AWSError, data: SES.Types.SetIdentityDkimEnabledResponse) => void): Request; - /** - * Given an identity (an email address or a domain), enables or disables whether Amazon SES forwards bounce and complaint notifications as email. Feedback forwarding can only be disabled when Amazon Simple Notification Service (Amazon SNS) topics are specified for both bounces and complaints. Feedback forwarding does not apply to delivery notifications. Delivery notifications are only available through Amazon SNS. You can execute this operation no more than once per second. For more information about using notifications with Amazon SES, see the Amazon SES Developer Guide. - */ - setIdentityFeedbackForwardingEnabled(params: SES.Types.SetIdentityFeedbackForwardingEnabledRequest, callback?: (err: AWSError, data: SES.Types.SetIdentityFeedbackForwardingEnabledResponse) => void): Request; - /** - * Given an identity (an email address or a domain), enables or disables whether Amazon SES forwards bounce and complaint notifications as email. Feedback forwarding can only be disabled when Amazon Simple Notification Service (Amazon SNS) topics are specified for both bounces and complaints. Feedback forwarding does not apply to delivery notifications. Delivery notifications are only available through Amazon SNS. You can execute this operation no more than once per second. For more information about using notifications with Amazon SES, see the Amazon SES Developer Guide. - */ - setIdentityFeedbackForwardingEnabled(callback?: (err: AWSError, data: SES.Types.SetIdentityFeedbackForwardingEnabledResponse) => void): Request; - /** - * Given an identity (an email address or a domain), sets whether Amazon SES includes the original email headers in the Amazon Simple Notification Service (Amazon SNS) notifications of a specified type. You can execute this operation no more than once per second. For more information about using notifications with Amazon SES, see the Amazon SES Developer Guide. - */ - setIdentityHeadersInNotificationsEnabled(params: SES.Types.SetIdentityHeadersInNotificationsEnabledRequest, callback?: (err: AWSError, data: SES.Types.SetIdentityHeadersInNotificationsEnabledResponse) => void): Request; - /** - * Given an identity (an email address or a domain), sets whether Amazon SES includes the original email headers in the Amazon Simple Notification Service (Amazon SNS) notifications of a specified type. You can execute this operation no more than once per second. For more information about using notifications with Amazon SES, see the Amazon SES Developer Guide. - */ - setIdentityHeadersInNotificationsEnabled(callback?: (err: AWSError, data: SES.Types.SetIdentityHeadersInNotificationsEnabledResponse) => void): Request; - /** - * Enables or disables the custom MAIL FROM domain setup for a verified identity (an email address or a domain). To send emails using the specified MAIL FROM domain, you must add an MX record to your MAIL FROM domain's DNS settings. If you want your emails to pass Sender Policy Framework (SPF) checks, you must also add or update an SPF record. For more information, see the Amazon SES Developer Guide. You can execute this operation no more than once per second. - */ - setIdentityMailFromDomain(params: SES.Types.SetIdentityMailFromDomainRequest, callback?: (err: AWSError, data: SES.Types.SetIdentityMailFromDomainResponse) => void): Request; - /** - * Enables or disables the custom MAIL FROM domain setup for a verified identity (an email address or a domain). To send emails using the specified MAIL FROM domain, you must add an MX record to your MAIL FROM domain's DNS settings. If you want your emails to pass Sender Policy Framework (SPF) checks, you must also add or update an SPF record. For more information, see the Amazon SES Developer Guide. You can execute this operation no more than once per second. - */ - setIdentityMailFromDomain(callback?: (err: AWSError, data: SES.Types.SetIdentityMailFromDomainResponse) => void): Request; - /** - * Given an identity (an email address or a domain), sets the Amazon Simple Notification Service (Amazon SNS) topic to which Amazon SES will publish bounce, complaint, and/or delivery notifications for emails sent with that identity as the Source. Unless feedback forwarding is enabled, you must specify Amazon SNS topics for bounce and complaint notifications. For more information, see SetIdentityFeedbackForwardingEnabled. You can execute this operation no more than once per second. For more information about feedback notification, see the Amazon SES Developer Guide. - */ - setIdentityNotificationTopic(params: SES.Types.SetIdentityNotificationTopicRequest, callback?: (err: AWSError, data: SES.Types.SetIdentityNotificationTopicResponse) => void): Request; - /** - * Given an identity (an email address or a domain), sets the Amazon Simple Notification Service (Amazon SNS) topic to which Amazon SES will publish bounce, complaint, and/or delivery notifications for emails sent with that identity as the Source. Unless feedback forwarding is enabled, you must specify Amazon SNS topics for bounce and complaint notifications. For more information, see SetIdentityFeedbackForwardingEnabled. You can execute this operation no more than once per second. For more information about feedback notification, see the Amazon SES Developer Guide. - */ - setIdentityNotificationTopic(callback?: (err: AWSError, data: SES.Types.SetIdentityNotificationTopicResponse) => void): Request; - /** - * Sets the position of the specified receipt rule in the receipt rule set. For information about managing receipt rules, see the Amazon SES Developer Guide. You can execute this operation no more than once per second. - */ - setReceiptRulePosition(params: SES.Types.SetReceiptRulePositionRequest, callback?: (err: AWSError, data: SES.Types.SetReceiptRulePositionResponse) => void): Request; - /** - * Sets the position of the specified receipt rule in the receipt rule set. For information about managing receipt rules, see the Amazon SES Developer Guide. You can execute this operation no more than once per second. - */ - setReceiptRulePosition(callback?: (err: AWSError, data: SES.Types.SetReceiptRulePositionResponse) => void): Request; - /** - * Creates a preview of the MIME content of an email when provided with a template and a set of replacement data. You can execute this operation no more than once per second. - */ - testRenderTemplate(params: SES.Types.TestRenderTemplateRequest, callback?: (err: AWSError, data: SES.Types.TestRenderTemplateResponse) => void): Request; - /** - * Creates a preview of the MIME content of an email when provided with a template and a set of replacement data. You can execute this operation no more than once per second. - */ - testRenderTemplate(callback?: (err: AWSError, data: SES.Types.TestRenderTemplateResponse) => void): Request; - /** - * Updates the event destination of a configuration set. Event destinations are associated with configuration sets, which enable you to publish email sending events to Amazon CloudWatch, Amazon Kinesis Firehose, or Amazon Simple Notification Service (Amazon SNS). For information about using configuration sets, see Monitoring Your Amazon SES Sending Activity in the Amazon SES Developer Guide. When you create or update an event destination, you must provide one, and only one, destination. The destination can be Amazon CloudWatch, Amazon Kinesis Firehose, or Amazon Simple Notification Service (Amazon SNS). You can execute this operation no more than once per second. - */ - updateConfigurationSetEventDestination(params: SES.Types.UpdateConfigurationSetEventDestinationRequest, callback?: (err: AWSError, data: SES.Types.UpdateConfigurationSetEventDestinationResponse) => void): Request; - /** - * Updates the event destination of a configuration set. Event destinations are associated with configuration sets, which enable you to publish email sending events to Amazon CloudWatch, Amazon Kinesis Firehose, or Amazon Simple Notification Service (Amazon SNS). For information about using configuration sets, see Monitoring Your Amazon SES Sending Activity in the Amazon SES Developer Guide. When you create or update an event destination, you must provide one, and only one, destination. The destination can be Amazon CloudWatch, Amazon Kinesis Firehose, or Amazon Simple Notification Service (Amazon SNS). You can execute this operation no more than once per second. - */ - updateConfigurationSetEventDestination(callback?: (err: AWSError, data: SES.Types.UpdateConfigurationSetEventDestinationResponse) => void): Request; - /** - * Modifies an association between a configuration set and a custom domain for open and click event tracking. By default, images and links used for tracking open and click events are hosted on domains operated by Amazon SES. You can configure a subdomain of your own to handle these events. For information about using configuration sets, see Configuring Custom Domains to Handle Open and Click Tracking in the Amazon SES Developer Guide. - */ - updateConfigurationSetTrackingOptions(params: SES.Types.UpdateConfigurationSetTrackingOptionsRequest, callback?: (err: AWSError, data: SES.Types.UpdateConfigurationSetTrackingOptionsResponse) => void): Request; - /** - * Modifies an association between a configuration set and a custom domain for open and click event tracking. By default, images and links used for tracking open and click events are hosted on domains operated by Amazon SES. You can configure a subdomain of your own to handle these events. For information about using configuration sets, see Configuring Custom Domains to Handle Open and Click Tracking in the Amazon SES Developer Guide. - */ - updateConfigurationSetTrackingOptions(callback?: (err: AWSError, data: SES.Types.UpdateConfigurationSetTrackingOptionsResponse) => void): Request; - /** - * Updates a receipt rule. For information about managing receipt rules, see the Amazon SES Developer Guide. You can execute this operation no more than once per second. - */ - updateReceiptRule(params: SES.Types.UpdateReceiptRuleRequest, callback?: (err: AWSError, data: SES.Types.UpdateReceiptRuleResponse) => void): Request; - /** - * Updates a receipt rule. For information about managing receipt rules, see the Amazon SES Developer Guide. You can execute this operation no more than once per second. - */ - updateReceiptRule(callback?: (err: AWSError, data: SES.Types.UpdateReceiptRuleResponse) => void): Request; - /** - * Updates an email template. Email templates enable you to send personalized email to one or more destinations in a single API operation. For more information, see the Amazon SES Developer Guide. You can execute this operation no more than once per second. - */ - updateTemplate(params: SES.Types.UpdateTemplateRequest, callback?: (err: AWSError, data: SES.Types.UpdateTemplateResponse) => void): Request; - /** - * Updates an email template. Email templates enable you to send personalized email to one or more destinations in a single API operation. For more information, see the Amazon SES Developer Guide. You can execute this operation no more than once per second. - */ - updateTemplate(callback?: (err: AWSError, data: SES.Types.UpdateTemplateResponse) => void): Request; - /** - * Returns a set of DKIM tokens for a domain. DKIM tokens are character strings that represent your domain's identity. Using these tokens, you will need to create DNS CNAME records that point to DKIM public keys hosted by Amazon SES. Amazon Web Services will eventually detect that you have updated your DNS records; this detection process may take up to 72 hours. Upon successful detection, Amazon SES will be able to DKIM-sign email originating from that domain. You can execute this operation no more than once per second. To enable or disable Easy DKIM signing for a domain, use the SetIdentityDkimEnabled operation. For more information about creating DNS records using DKIM tokens, go to the Amazon SES Developer Guide. - */ - verifyDomainDkim(params: SES.Types.VerifyDomainDkimRequest, callback?: (err: AWSError, data: SES.Types.VerifyDomainDkimResponse) => void): Request; - /** - * Returns a set of DKIM tokens for a domain. DKIM tokens are character strings that represent your domain's identity. Using these tokens, you will need to create DNS CNAME records that point to DKIM public keys hosted by Amazon SES. Amazon Web Services will eventually detect that you have updated your DNS records; this detection process may take up to 72 hours. Upon successful detection, Amazon SES will be able to DKIM-sign email originating from that domain. You can execute this operation no more than once per second. To enable or disable Easy DKIM signing for a domain, use the SetIdentityDkimEnabled operation. For more information about creating DNS records using DKIM tokens, go to the Amazon SES Developer Guide. - */ - verifyDomainDkim(callback?: (err: AWSError, data: SES.Types.VerifyDomainDkimResponse) => void): Request; - /** - * Adds a domain to the list of identities for your Amazon SES account and attempts to verify it. For more information about verifying domains, see Verifying Email Addresses and Domains in the Amazon SES Developer Guide. You can execute this operation no more than once per second. - */ - verifyDomainIdentity(params: SES.Types.VerifyDomainIdentityRequest, callback?: (err: AWSError, data: SES.Types.VerifyDomainIdentityResponse) => void): Request; - /** - * Adds a domain to the list of identities for your Amazon SES account and attempts to verify it. For more information about verifying domains, see Verifying Email Addresses and Domains in the Amazon SES Developer Guide. You can execute this operation no more than once per second. - */ - verifyDomainIdentity(callback?: (err: AWSError, data: SES.Types.VerifyDomainIdentityResponse) => void): Request; - /** - * Deprecated. Use the VerifyEmailIdentity operation to verify a new email address. - */ - verifyEmailAddress(params: SES.Types.VerifyEmailAddressRequest, callback?: (err: AWSError, data: {}) => void): Request<{}, AWSError>; - /** - * Deprecated. Use the VerifyEmailIdentity operation to verify a new email address. - */ - verifyEmailAddress(callback?: (err: AWSError, data: {}) => void): Request<{}, AWSError>; - /** - * Adds an email address to the list of identities for your Amazon SES account and attempts to verify it. This operation causes a confirmation email message to be sent to the specified address. You can execute this operation no more than once per second. - */ - verifyEmailIdentity(params: SES.Types.VerifyEmailIdentityRequest, callback?: (err: AWSError, data: SES.Types.VerifyEmailIdentityResponse) => void): Request; - /** - * Adds an email address to the list of identities for your Amazon SES account and attempts to verify it. This operation causes a confirmation email message to be sent to the specified address. You can execute this operation no more than once per second. - */ - verifyEmailIdentity(callback?: (err: AWSError, data: SES.Types.VerifyEmailIdentityResponse) => void): Request; - /** - * Waits for the identityExists state by periodically calling the underlying SES.getIdentityVerificationAttributesoperation every 3 seconds (at most 20 times). - */ - waitFor(state: "identityExists", params: SES.Types.GetIdentityVerificationAttributesRequest, callback?: (err: AWSError, data: SES.Types.GetIdentityVerificationAttributesResponse) => void): Request; - /** - * Waits for the identityExists state by periodically calling the underlying SES.getIdentityVerificationAttributesoperation every 3 seconds (at most 20 times). - */ - waitFor(state: "identityExists", callback?: (err: AWSError, data: SES.Types.GetIdentityVerificationAttributesResponse) => void): Request; -} -declare namespace SES { - export interface AddHeaderAction { - /** - * The name of the header to add. Must be between 1 and 50 characters, inclusive, and consist of alphanumeric (a-z, A-Z, 0-9) characters and dashes only. - */ - HeaderName: HeaderName; - /** - * Must be less than 2048 characters, and must not contain newline characters ("\r" or "\n"). - */ - HeaderValue: HeaderValue; - } - export type Address = string; - export type AddressList = Address[]; - export type AmazonResourceName = string; - export type ArrivalDate = Date; - export type BehaviorOnMXFailure = "UseDefaultValue"|"RejectMessage"|string; - export interface Body { - /** - * The content of the message, in text format. Use this for text-based email clients, or clients on high-latency networks (such as mobile devices). - */ - Text?: Content; - /** - * The content of the message, in HTML format. Use this for email clients that can process HTML. You can include clickable links, formatted text, and much more in an HTML message. - */ - Html?: Content; - } - export interface BounceAction { - /** - * The Amazon Resource Name (ARN) of the Amazon SNS topic to notify when the bounce action is taken. An example of an Amazon SNS topic ARN is arn:aws:sns:us-west-2:123456789012:MyTopic. For more information about Amazon SNS topics, see the Amazon SNS Developer Guide. - */ - TopicArn?: AmazonResourceName; - /** - * The SMTP reply code, as defined by RFC 5321. - */ - SmtpReplyCode: BounceSmtpReplyCode; - /** - * The SMTP enhanced status code, as defined by RFC 3463. - */ - StatusCode?: BounceStatusCode; - /** - * Human-readable text to include in the bounce message. - */ - Message: BounceMessage; - /** - * The email address of the sender of the bounced email. This is the address from which the bounce message will be sent. - */ - Sender: Address; - } - export type BounceMessage = string; - export type BounceSmtpReplyCode = string; - export type BounceStatusCode = string; - export type BounceType = "DoesNotExist"|"MessageTooLarge"|"ExceededQuota"|"ContentRejected"|"Undefined"|"TemporaryFailure"|string; - export interface BouncedRecipientInfo { - /** - * The email address of the recipient of the bounced email. - */ - Recipient: Address; - /** - * This parameter is used only for sending authorization. It is the ARN of the identity that is associated with the sending authorization policy that permits you to receive email for the recipient of the bounced email. For more information about sending authorization, see the Amazon SES Developer Guide. - */ - RecipientArn?: AmazonResourceName; - /** - * The reason for the bounce. You must provide either this parameter or RecipientDsnFields. - */ - BounceType?: BounceType; - /** - * Recipient-related DSN fields, most of which would normally be filled in automatically when provided with a BounceType. You must provide either this parameter or BounceType. - */ - RecipientDsnFields?: RecipientDsnFields; - } - export type BouncedRecipientInfoList = BouncedRecipientInfo[]; - export interface BulkEmailDestination { - Destination: Destination; - /** - * A list of tags, in the form of name/value pairs, to apply to an email that you send using SendBulkTemplatedEmail. Tags correspond to characteristics of the email that you define, so that you can publish email sending events. - */ - ReplacementTags?: MessageTagList; - /** - * A list of replacement values to apply to the template. This parameter is a JSON object, typically consisting of key-value pairs in which the keys correspond to replacement tags in the email template. - */ - ReplacementTemplateData?: TemplateData; - } - export type BulkEmailDestinationList = BulkEmailDestination[]; - export interface BulkEmailDestinationStatus { - /** - * The status of a message sent using the SendBulkTemplatedEmail operation. Possible values for this parameter include: Success: Amazon SES accepted the message, and will attempt to deliver it to the recipients. MessageRejected: The message was rejected because it contained a virus. MailFromDomainNotVerified: The sender's email address or domain was not verified. ConfigurationSetDoesNotExist: The configuration set you specified does not exist. TemplateDoesNotExist: The template you specified does not exist. AccountSuspended: Your account has been shut down because of issues related to your email sending practices. AccountThrottled: The number of emails you can send has been reduced because your account has exceeded its allocated sending limit. AccountDailyQuotaExceeded: You have reached or exceeded the maximum number of emails you can send from your account in a 24-hour period. InvalidSendingPoolName: The configuration set you specified refers to an IP pool that does not exist. InvalidParameterValue: One or more of the parameters you specified when calling this operation was invalid. See the error message for additional information. TransientFailure: Amazon SES was unable to process your request because of a temporary issue. Failed: Amazon SES was unable to process your request. See the error message for additional information. - */ - Status?: BulkEmailStatus; - /** - * A description of an error that prevented a message being sent using the SendBulkTemplatedEmail operation. - */ - Error?: Error; - /** - * The unique message identifier returned from the SendBulkTemplatedEmail operation. - */ - MessageId?: MessageId; - } - export type BulkEmailDestinationStatusList = BulkEmailDestinationStatus[]; - export type BulkEmailStatus = "Success"|"MessageRejected"|"MailFromDomainNotVerified"|"ConfigurationSetDoesNotExist"|"TemplateDoesNotExist"|"AccountSuspended"|"AccountThrottled"|"AccountDailyQuotaExceeded"|"InvalidSendingPoolName"|"InvalidParameterValue"|"TransientFailure"|"Failed"|string; - export type Charset = string; - export type Cidr = string; - export interface CloneReceiptRuleSetRequest { - /** - * The name of the rule set to create. The name must: Contain only ASCII letters (a-z, A-Z), numbers (0-9), periods (.), underscores (_), or dashes (-). Start and end with a letter or number. Contain less than 64 characters. - */ - RuleSetName: ReceiptRuleSetName; - /** - * The name of the rule set to clone. - */ - OriginalRuleSetName: ReceiptRuleSetName; - } - export interface CloneReceiptRuleSetResponse { - } - export interface CloudWatchDestination { - /** - * A list of dimensions upon which to categorize your emails when you publish email sending events to Amazon CloudWatch. - */ - DimensionConfigurations: CloudWatchDimensionConfigurations; - } - export interface CloudWatchDimensionConfiguration { - /** - * The name of an Amazon CloudWatch dimension associated with an email sending metric. The name must: Contain only ASCII letters (a-z, A-Z), numbers (0-9), underscores (_), or dashes (-). Contain less than 256 characters. - */ - DimensionName: DimensionName; - /** - * The place where Amazon SES finds the value of a dimension to publish to Amazon CloudWatch. If you want Amazon SES to use the message tags that you specify using an X-SES-MESSAGE-TAGS header or a parameter to the SendEmail/SendRawEmail API, choose messageTag. If you want Amazon SES to use your own email headers, choose emailHeader. - */ - DimensionValueSource: DimensionValueSource; - /** - * The default value of the dimension that is published to Amazon CloudWatch if you do not provide the value of the dimension when you send an email. The default value must: Contain only ASCII letters (a-z, A-Z), numbers (0-9), underscores (_), or dashes (-). Contain less than 256 characters. - */ - DefaultDimensionValue: DefaultDimensionValue; - } - export type CloudWatchDimensionConfigurations = CloudWatchDimensionConfiguration[]; - export interface ConfigurationSet { - /** - * The name of the configuration set. The name must meet the following requirements: Contain only letters (a-z, A-Z), numbers (0-9), underscores (_), or dashes (-). Contain 64 characters or fewer. - */ - Name: ConfigurationSetName; - } - export type ConfigurationSetAttribute = "eventDestinations"|"trackingOptions"|string; - export type ConfigurationSetAttributeList = ConfigurationSetAttribute[]; - export type ConfigurationSetName = string; - export type ConfigurationSets = ConfigurationSet[]; - export interface Content { - /** - * The textual data of the content. - */ - Data: MessageData; - /** - * The character set of the content. - */ - Charset?: Charset; - } - export type Counter = number; - export interface CreateConfigurationSetEventDestinationRequest { - /** - * The name of the configuration set that the event destination should be associated with. - */ - ConfigurationSetName: ConfigurationSetName; - /** - * An object that describes the AWS service that email sending event information will be published to. - */ - EventDestination: EventDestination; - } - export interface CreateConfigurationSetEventDestinationResponse { - } - export interface CreateConfigurationSetRequest { - /** - * A data structure that contains the name of the configuration set. - */ - ConfigurationSet: ConfigurationSet; - } - export interface CreateConfigurationSetResponse { - } - export interface CreateConfigurationSetTrackingOptionsRequest { - /** - * The name of the configuration set that the tracking options should be associated with. - */ - ConfigurationSetName: ConfigurationSetName; - TrackingOptions: TrackingOptions; - } - export interface CreateConfigurationSetTrackingOptionsResponse { - } - export interface CreateReceiptFilterRequest { - /** - * A data structure that describes the IP address filter to create, which consists of a name, an IP address range, and whether to allow or block mail from it. - */ - Filter: ReceiptFilter; - } - export interface CreateReceiptFilterResponse { - } - export interface CreateReceiptRuleRequest { - /** - * The name of the rule set that the receipt rule will be added to. - */ - RuleSetName: ReceiptRuleSetName; - /** - * The name of an existing rule after which the new rule will be placed. If this parameter is null, the new rule will be inserted at the beginning of the rule list. - */ - After?: ReceiptRuleName; - /** - * A data structure that contains the specified rule's name, actions, recipients, domains, enabled status, scan status, and TLS policy. - */ - Rule: ReceiptRule; - } - export interface CreateReceiptRuleResponse { - } - export interface CreateReceiptRuleSetRequest { - /** - * The name of the rule set to create. The name must: Contain only ASCII letters (a-z, A-Z), numbers (0-9), periods (.), underscores (_), or dashes (-). Start and end with a letter or number. Contain less than 64 characters. - */ - RuleSetName: ReceiptRuleSetName; - } - export interface CreateReceiptRuleSetResponse { - } - export interface CreateTemplateRequest { - /** - * The content of the email, composed of a subject line, an HTML part, and a text-only part. - */ - Template: Template; - } - export interface CreateTemplateResponse { - } - export type CustomMailFromStatus = "Pending"|"Success"|"Failed"|"TemporaryFailure"|string; - export type CustomRedirectDomain = string; - export type DefaultDimensionValue = string; - export interface DeleteConfigurationSetEventDestinationRequest { - /** - * The name of the configuration set from which to delete the event destination. - */ - ConfigurationSetName: ConfigurationSetName; - /** - * The name of the event destination to delete. - */ - EventDestinationName: EventDestinationName; - } - export interface DeleteConfigurationSetEventDestinationResponse { - } - export interface DeleteConfigurationSetRequest { - /** - * The name of the configuration set to delete. - */ - ConfigurationSetName: ConfigurationSetName; - } - export interface DeleteConfigurationSetResponse { - } - export interface DeleteConfigurationSetTrackingOptionsRequest { - /** - * The name of the configuration set from which you want to delete the tracking options. - */ - ConfigurationSetName: ConfigurationSetName; - } - export interface DeleteConfigurationSetTrackingOptionsResponse { - } - export interface DeleteIdentityPolicyRequest { - /** - * The identity that is associated with the policy that you want to delete. You can specify the identity by using its name or by using its Amazon Resource Name (ARN). Examples: user@example.com, example.com, arn:aws:ses:us-east-1:123456789012:identity/example.com. To successfully call this API, you must own the identity. - */ - Identity: Identity; - /** - * The name of the policy to be deleted. - */ - PolicyName: PolicyName; - } - export interface DeleteIdentityPolicyResponse { - } - export interface DeleteIdentityRequest { - /** - * The identity to be removed from the list of identities for the AWS Account. - */ - Identity: Identity; - } - export interface DeleteIdentityResponse { - } - export interface DeleteReceiptFilterRequest { - /** - * The name of the IP address filter to delete. - */ - FilterName: ReceiptFilterName; - } - export interface DeleteReceiptFilterResponse { - } - export interface DeleteReceiptRuleRequest { - /** - * The name of the receipt rule set that contains the receipt rule to delete. - */ - RuleSetName: ReceiptRuleSetName; - /** - * The name of the receipt rule to delete. - */ - RuleName: ReceiptRuleName; - } - export interface DeleteReceiptRuleResponse { - } - export interface DeleteReceiptRuleSetRequest { - /** - * The name of the receipt rule set to delete. - */ - RuleSetName: ReceiptRuleSetName; - } - export interface DeleteReceiptRuleSetResponse { - } - export interface DeleteTemplateRequest { - /** - * The name of the template to be deleted. - */ - TemplateName: TemplateName; - } - export interface DeleteTemplateResponse { - } - export interface DeleteVerifiedEmailAddressRequest { - /** - * An email address to be removed from the list of verified addresses. - */ - EmailAddress: Address; - } - export interface DescribeActiveReceiptRuleSetRequest { - } - export interface DescribeActiveReceiptRuleSetResponse { - /** - * The metadata for the currently active receipt rule set. The metadata consists of the rule set name and a timestamp of when the rule set was created. - */ - Metadata?: ReceiptRuleSetMetadata; - /** - * The receipt rules that belong to the active rule set. - */ - Rules?: ReceiptRulesList; - } - export interface DescribeConfigurationSetRequest { - /** - * The name of the configuration set to describe. - */ - ConfigurationSetName: ConfigurationSetName; - /** - * A list of configuration set attributes to return. - */ - ConfigurationSetAttributeNames?: ConfigurationSetAttributeList; - } - export interface DescribeConfigurationSetResponse { - /** - * The configuration set object associated with the specified configuration set. - */ - ConfigurationSet?: ConfigurationSet; - /** - * A list of event destinations associated with the configuration set. - */ - EventDestinations?: EventDestinations; - /** - * The name of the custom open and click tracking domain associated with the configuration set. - */ - TrackingOptions?: TrackingOptions; - } - export interface DescribeReceiptRuleRequest { - /** - * The name of the receipt rule set that the receipt rule belongs to. - */ - RuleSetName: ReceiptRuleSetName; - /** - * The name of the receipt rule. - */ - RuleName: ReceiptRuleName; - } - export interface DescribeReceiptRuleResponse { - /** - * A data structure that contains the specified receipt rule's name, actions, recipients, domains, enabled status, scan status, and Transport Layer Security (TLS) policy. - */ - Rule?: ReceiptRule; - } - export interface DescribeReceiptRuleSetRequest { - /** - * The name of the receipt rule set to describe. - */ - RuleSetName: ReceiptRuleSetName; - } - export interface DescribeReceiptRuleSetResponse { - /** - * The metadata for the receipt rule set, which consists of the rule set name and the timestamp of when the rule set was created. - */ - Metadata?: ReceiptRuleSetMetadata; - /** - * A list of the receipt rules that belong to the specified receipt rule set. - */ - Rules?: ReceiptRulesList; - } - export interface Destination { - /** - * The To: field(s) of the message. - */ - ToAddresses?: AddressList; - /** - * The CC: field(s) of the message. - */ - CcAddresses?: AddressList; - /** - * The BCC: field(s) of the message. - */ - BccAddresses?: AddressList; - } - export type DiagnosticCode = string; - export type DimensionName = string; - export type DimensionValueSource = "messageTag"|"emailHeader"|"linkTag"|string; - export type DkimAttributes = {[key: string]: IdentityDkimAttributes}; - export type Domain = string; - export type DsnAction = "failed"|"delayed"|"delivered"|"relayed"|"expanded"|string; - export type DsnStatus = string; - export type Enabled = boolean; - export type Error = string; - export interface EventDestination { - /** - * The name of the event destination. The name must: Contain only ASCII letters (a-z, A-Z), numbers (0-9), underscores (_), or dashes (-). Contain less than 64 characters. - */ - Name: EventDestinationName; - /** - * Sets whether Amazon SES publishes events to this destination when you send an email with the associated configuration set. Set to true to enable publishing to this destination; set to false to prevent publishing to this destination. The default value is false. - */ - Enabled?: Enabled; - /** - * The type of email sending events to publish to the event destination. - */ - MatchingEventTypes: EventTypes; - /** - * An object that contains the delivery stream ARN and the IAM role ARN associated with an Amazon Kinesis Firehose event destination. - */ - KinesisFirehoseDestination?: KinesisFirehoseDestination; - /** - * An object that contains the names, default values, and sources of the dimensions associated with an Amazon CloudWatch event destination. - */ - CloudWatchDestination?: CloudWatchDestination; - /** - * An object that contains the topic ARN associated with an Amazon Simple Notification Service (Amazon SNS) event destination. - */ - SNSDestination?: SNSDestination; - } - export type EventDestinationName = string; - export type EventDestinations = EventDestination[]; - export type EventType = "send"|"reject"|"bounce"|"complaint"|"delivery"|"open"|"click"|"renderingFailure"|string; - export type EventTypes = EventType[]; - export type Explanation = string; - export interface ExtensionField { - /** - * The name of the header to add. Must be between 1 and 50 characters, inclusive, and consist of alphanumeric (a-z, A-Z, 0-9) characters and dashes only. - */ - Name: ExtensionFieldName; - /** - * The value of the header to add. Must be less than 2048 characters, and must not contain newline characters ("\r" or "\n"). - */ - Value: ExtensionFieldValue; - } - export type ExtensionFieldList = ExtensionField[]; - export type ExtensionFieldName = string; - export type ExtensionFieldValue = string; - export interface GetIdentityDkimAttributesRequest { - /** - * A list of one or more verified identities - email addresses, domains, or both. - */ - Identities: IdentityList; - } - export interface GetIdentityDkimAttributesResponse { - /** - * The DKIM attributes for an email address or a domain. - */ - DkimAttributes: DkimAttributes; - } - export interface GetIdentityMailFromDomainAttributesRequest { - /** - * A list of one or more identities. - */ - Identities: IdentityList; - } - export interface GetIdentityMailFromDomainAttributesResponse { - /** - * A map of identities to custom MAIL FROM attributes. - */ - MailFromDomainAttributes: MailFromDomainAttributes; - } - export interface GetIdentityNotificationAttributesRequest { - /** - * A list of one or more identities. You can specify an identity by using its name or by using its Amazon Resource Name (ARN). Examples: user@example.com, example.com, arn:aws:ses:us-east-1:123456789012:identity/example.com. - */ - Identities: IdentityList; - } - export interface GetIdentityNotificationAttributesResponse { - /** - * A map of Identity to IdentityNotificationAttributes. - */ - NotificationAttributes: NotificationAttributes; - } - export interface GetIdentityPoliciesRequest { - /** - * The identity for which the policies will be retrieved. You can specify an identity by using its name or by using its Amazon Resource Name (ARN). Examples: user@example.com, example.com, arn:aws:ses:us-east-1:123456789012:identity/example.com. To successfully call this API, you must own the identity. - */ - Identity: Identity; - /** - * A list of the names of policies to be retrieved. You can retrieve a maximum of 20 policies at a time. If you do not know the names of the policies that are attached to the identity, you can use ListIdentityPolicies. - */ - PolicyNames: PolicyNameList; - } - export interface GetIdentityPoliciesResponse { - /** - * A map of policy names to policies. - */ - Policies: PolicyMap; - } - export interface GetIdentityVerificationAttributesRequest { - /** - * A list of identities. - */ - Identities: IdentityList; - } - export interface GetIdentityVerificationAttributesResponse { - /** - * A map of Identities to IdentityVerificationAttributes objects. - */ - VerificationAttributes: VerificationAttributes; - } - export interface GetSendQuotaResponse { - /** - * The maximum number of emails the user is allowed to send in a 24-hour interval. A value of -1 signifies an unlimited quota. - */ - Max24HourSend?: Max24HourSend; - /** - * The maximum number of emails that Amazon SES can accept from the user's account per second. The rate at which Amazon SES accepts the user's messages might be less than the maximum send rate. - */ - MaxSendRate?: MaxSendRate; - /** - * The number of emails sent during the previous 24 hours. - */ - SentLast24Hours?: SentLast24Hours; - } - export interface GetSendStatisticsResponse { - /** - * A list of data points, each of which represents 15 minutes of activity. - */ - SendDataPoints?: SendDataPointList; - } - export interface GetTemplateRequest { - /** - * The name of the template you want to retrieve. - */ - TemplateName: TemplateName; - } - export interface GetTemplateResponse { - Template?: Template; - } - export type HeaderName = string; - export type HeaderValue = string; - export type HtmlPart = string; - export type Identity = string; - export interface IdentityDkimAttributes { - /** - * True if DKIM signing is enabled for email sent from the identity; false otherwise. The default value is true. - */ - DkimEnabled: Enabled; - /** - * Describes whether Amazon SES has successfully verified the DKIM DNS records (tokens) published in the domain name's DNS. (This only applies to domain identities, not email address identities.) - */ - DkimVerificationStatus: VerificationStatus; - /** - * A set of character strings that represent the domain's identity. Using these tokens, you will need to create DNS CNAME records that point to DKIM public keys hosted by Amazon SES. Amazon Web Services will eventually detect that you have updated your DNS records; this detection process may take up to 72 hours. Upon successful detection, Amazon SES will be able to DKIM-sign email originating from that domain. (This only applies to domain identities, not email address identities.) For more information about creating DNS records using DKIM tokens, go to the Amazon SES Developer Guide. - */ - DkimTokens?: VerificationTokenList; - } - export type IdentityList = Identity[]; - export interface IdentityMailFromDomainAttributes { - /** - * The custom MAIL FROM domain that the identity is configured to use. - */ - MailFromDomain: MailFromDomainName; - /** - * The state that indicates whether Amazon SES has successfully read the MX record required for custom MAIL FROM domain setup. If the state is Success, Amazon SES uses the specified custom MAIL FROM domain when the verified identity sends an email. All other states indicate that Amazon SES takes the action described by BehaviorOnMXFailure. - */ - MailFromDomainStatus: CustomMailFromStatus; - /** - * The action that Amazon SES takes if it cannot successfully read the required MX record when you send an email. A value of UseDefaultValue indicates that if Amazon SES cannot read the required MX record, it uses amazonses.com (or a subdomain of that) as the MAIL FROM domain. A value of RejectMessage indicates that if Amazon SES cannot read the required MX record, Amazon SES returns a MailFromDomainNotVerified error and does not send the email. The custom MAIL FROM setup states that result in this behavior are Pending, Failed, and TemporaryFailure. - */ - BehaviorOnMXFailure: BehaviorOnMXFailure; - } - export interface IdentityNotificationAttributes { - /** - * The Amazon Resource Name (ARN) of the Amazon SNS topic where Amazon SES will publish bounce notifications. - */ - BounceTopic: NotificationTopic; - /** - * The Amazon Resource Name (ARN) of the Amazon SNS topic where Amazon SES will publish complaint notifications. - */ - ComplaintTopic: NotificationTopic; - /** - * The Amazon Resource Name (ARN) of the Amazon SNS topic where Amazon SES will publish delivery notifications. - */ - DeliveryTopic: NotificationTopic; - /** - * Describes whether Amazon SES will forward bounce and complaint notifications as email. true indicates that Amazon SES will forward bounce and complaint notifications as email, while false indicates that bounce and complaint notifications will be published only to the specified bounce and complaint Amazon SNS topics. - */ - ForwardingEnabled: Enabled; - /** - * Describes whether Amazon SES includes the original email headers in Amazon SNS notifications of type Bounce. A value of true specifies that Amazon SES will include headers in bounce notifications, and a value of false specifies that Amazon SES will not include headers in bounce notifications. - */ - HeadersInBounceNotificationsEnabled?: Enabled; - /** - * Describes whether Amazon SES includes the original email headers in Amazon SNS notifications of type Complaint. A value of true specifies that Amazon SES will include headers in complaint notifications, and a value of false specifies that Amazon SES will not include headers in complaint notifications. - */ - HeadersInComplaintNotificationsEnabled?: Enabled; - /** - * Describes whether Amazon SES includes the original email headers in Amazon SNS notifications of type Delivery. A value of true specifies that Amazon SES will include headers in delivery notifications, and a value of false specifies that Amazon SES will not include headers in delivery notifications. - */ - HeadersInDeliveryNotificationsEnabled?: Enabled; - } - export type IdentityType = "EmailAddress"|"Domain"|string; - export interface IdentityVerificationAttributes { - /** - * The verification status of the identity: "Pending", "Success", "Failed", or "TemporaryFailure". - */ - VerificationStatus: VerificationStatus; - /** - * The verification token for a domain identity. Null for email address identities. - */ - VerificationToken?: VerificationToken; - } - export type InvocationType = "Event"|"RequestResponse"|string; - export interface KinesisFirehoseDestination { - /** - * The ARN of the IAM role under which Amazon SES publishes email sending events to the Amazon Kinesis Firehose stream. - */ - IAMRoleARN: AmazonResourceName; - /** - * The ARN of the Amazon Kinesis Firehose stream that email sending events should be published to. - */ - DeliveryStreamARN: AmazonResourceName; - } - export interface LambdaAction { - /** - * The Amazon Resource Name (ARN) of the Amazon SNS topic to notify when the Lambda action is taken. An example of an Amazon SNS topic ARN is arn:aws:sns:us-west-2:123456789012:MyTopic. For more information about Amazon SNS topics, see the Amazon SNS Developer Guide. - */ - TopicArn?: AmazonResourceName; - /** - * The Amazon Resource Name (ARN) of the AWS Lambda function. An example of an AWS Lambda function ARN is arn:aws:lambda:us-west-2:account-id:function:MyFunction. For more information about AWS Lambda, see the AWS Lambda Developer Guide. - */ - FunctionArn: AmazonResourceName; - /** - * The invocation type of the AWS Lambda function. An invocation type of RequestResponse means that the execution of the function will immediately result in a response, and a value of Event means that the function will be invoked asynchronously. The default value is Event. For information about AWS Lambda invocation types, see the AWS Lambda Developer Guide. There is a 30-second timeout on RequestResponse invocations. You should use Event invocation in most cases. Use RequestResponse only when you want to make a mail flow decision, such as whether to stop the receipt rule or the receipt rule set. - */ - InvocationType?: InvocationType; - } - export type LastAttemptDate = Date; - export interface ListConfigurationSetsRequest { - /** - * A token returned from a previous call to ListConfigurationSets to indicate the position of the configuration set in the configuration set list. - */ - NextToken?: NextToken; - /** - * The number of configuration sets to return. - */ - MaxItems?: MaxItems; - } - export interface ListConfigurationSetsResponse { - /** - * A list of configuration sets. - */ - ConfigurationSets?: ConfigurationSets; - /** - * A token indicating that there are additional configuration sets available to be listed. Pass this token to successive calls of ListConfigurationSets. - */ - NextToken?: NextToken; - } - export interface ListIdentitiesRequest { - /** - * The type of the identities to list. Possible values are "EmailAddress" and "Domain". If this parameter is omitted, then all identities will be listed. - */ - IdentityType?: IdentityType; - /** - * The token to use for pagination. - */ - NextToken?: NextToken; - /** - * The maximum number of identities per page. Possible values are 1-1000 inclusive. - */ - MaxItems?: MaxItems; - } - export interface ListIdentitiesResponse { - /** - * A list of identities. - */ - Identities: IdentityList; - /** - * The token used for pagination. - */ - NextToken?: NextToken; - } - export interface ListIdentityPoliciesRequest { - /** - * The identity that is associated with the policy for which the policies will be listed. You can specify an identity by using its name or by using its Amazon Resource Name (ARN). Examples: user@example.com, example.com, arn:aws:ses:us-east-1:123456789012:identity/example.com. To successfully call this API, you must own the identity. - */ - Identity: Identity; - } - export interface ListIdentityPoliciesResponse { - /** - * A list of names of policies that apply to the specified identity. - */ - PolicyNames: PolicyNameList; - } - export interface ListReceiptFiltersRequest { - } - export interface ListReceiptFiltersResponse { - /** - * A list of IP address filter data structures, which each consist of a name, an IP address range, and whether to allow or block mail from it. - */ - Filters?: ReceiptFilterList; - } - export interface ListReceiptRuleSetsRequest { - /** - * A token returned from a previous call to ListReceiptRuleSets to indicate the position in the receipt rule set list. - */ - NextToken?: NextToken; - } - export interface ListReceiptRuleSetsResponse { - /** - * The metadata for the currently active receipt rule set. The metadata consists of the rule set name and the timestamp of when the rule set was created. - */ - RuleSets?: ReceiptRuleSetsLists; - /** - * A token indicating that there are additional receipt rule sets available to be listed. Pass this token to successive calls of ListReceiptRuleSets to retrieve up to 100 receipt rule sets at a time. - */ - NextToken?: NextToken; - } - export interface ListTemplatesRequest { - /** - * The token to use for pagination. - */ - NextToken?: NextToken; - /** - * The maximum number of templates to return. This value must be at least 1 and less than or equal to 10. If you do not specify a value, or if you specify a value less than 1 or greater than 10, the operation will return up to 10 results. - */ - MaxItems?: MaxItems; - } - export interface ListTemplatesResponse { - /** - * An array the contains the name of creation time stamp for each template in your Amazon SES account. - */ - TemplatesMetadata?: TemplateMetadataList; - /** - * The token to use for pagination. - */ - NextToken?: NextToken; - } - export interface ListVerifiedEmailAddressesResponse { - /** - * A list of email addresses that have been verified. - */ - VerifiedEmailAddresses?: AddressList; - } - export type MailFromDomainAttributes = {[key: string]: IdentityMailFromDomainAttributes}; - export type MailFromDomainName = string; - export type Max24HourSend = number; - export type MaxItems = number; - export type MaxSendRate = number; - export interface Message { - /** - * The subject of the message: A short summary of the content, which will appear in the recipient's inbox. - */ - Subject: Content; - /** - * The message body. - */ - Body: Body; - } - export type MessageData = string; - export interface MessageDsn { - /** - * The reporting MTA that attempted to deliver the message, formatted as specified in RFC 3464 (mta-name-type; mta-name). The default value is dns; inbound-smtp.[region].amazonaws.com. - */ - ReportingMta: ReportingMta; - /** - * When the message was received by the reporting mail transfer agent (MTA), in RFC 822 date-time format. - */ - ArrivalDate?: ArrivalDate; - /** - * Additional X-headers to include in the DSN. - */ - ExtensionFields?: ExtensionFieldList; - } - export type MessageId = string; - export interface MessageTag { - /** - * The name of the tag. The name must: Contain only ASCII letters (a-z, A-Z), numbers (0-9), underscores (_), or dashes (-). Contain less than 256 characters. - */ - Name: MessageTagName; - /** - * The value of the tag. The value must: Contain only ASCII letters (a-z, A-Z), numbers (0-9), underscores (_), or dashes (-). Contain less than 256 characters. - */ - Value: MessageTagValue; - } - export type MessageTagList = MessageTag[]; - export type MessageTagName = string; - export type MessageTagValue = string; - export type NextToken = string; - export type NotificationAttributes = {[key: string]: IdentityNotificationAttributes}; - export type NotificationTopic = string; - export type NotificationType = "Bounce"|"Complaint"|"Delivery"|string; - export type Policy = string; - export type PolicyMap = {[key: string]: Policy}; - export type PolicyName = string; - export type PolicyNameList = PolicyName[]; - export interface PutIdentityPolicyRequest { - /** - * The identity that the policy will apply to. You can specify an identity by using its name or by using its Amazon Resource Name (ARN). Examples: user@example.com, example.com, arn:aws:ses:us-east-1:123456789012:identity/example.com. To successfully call this API, you must own the identity. - */ - Identity: Identity; - /** - * The name of the policy. The policy name cannot exceed 64 characters and can only include alphanumeric characters, dashes, and underscores. - */ - PolicyName: PolicyName; - /** - * The text of the policy in JSON format. The policy cannot exceed 4 KB. For information about the syntax of sending authorization policies, see the Amazon SES Developer Guide. - */ - Policy: Policy; - } - export interface PutIdentityPolicyResponse { - } - export interface RawMessage { - /** - * The raw data of the message. This data needs to base64-encoded if you are accessing Amazon SES directly through the HTTPS interface. If you are accessing Amazon SES using an AWS SDK, the SDK takes care of the base 64-encoding for you. In all cases, the client must ensure that the message format complies with Internet email standards regarding email header fields, MIME types, and MIME encoding. The To:, CC:, and BCC: headers in the raw message can contain a group list. If you are using SendRawEmail with sending authorization, you can include X-headers in the raw message to specify the "Source," "From," and "Return-Path" addresses. For more information, see the documentation for SendRawEmail. Do not include these X-headers in the DKIM signature, because they are removed by Amazon SES before sending the email. For more information, go to the Amazon SES Developer Guide. - */ - Data: RawMessageData; - } - export type RawMessageData = Buffer|Uint8Array|Blob|string; - export interface ReceiptAction { - /** - * Saves the received message to an Amazon Simple Storage Service (Amazon S3) bucket and, optionally, publishes a notification to Amazon SNS. - */ - S3Action?: S3Action; - /** - * Rejects the received email by returning a bounce response to the sender and, optionally, publishes a notification to Amazon Simple Notification Service (Amazon SNS). - */ - BounceAction?: BounceAction; - /** - * Calls Amazon WorkMail and, optionally, publishes a notification to Amazon SNS. - */ - WorkmailAction?: WorkmailAction; - /** - * Calls an AWS Lambda function, and optionally, publishes a notification to Amazon SNS. - */ - LambdaAction?: LambdaAction; - /** - * Terminates the evaluation of the receipt rule set and optionally publishes a notification to Amazon SNS. - */ - StopAction?: StopAction; - /** - * Adds a header to the received email. - */ - AddHeaderAction?: AddHeaderAction; - /** - * Publishes the email content within a notification to Amazon SNS. - */ - SNSAction?: SNSAction; - } - export type ReceiptActionsList = ReceiptAction[]; - export interface ReceiptFilter { - /** - * The name of the IP address filter. The name must: Contain only ASCII letters (a-z, A-Z), numbers (0-9), periods (.), underscores (_), or dashes (-). Start and end with a letter or number. Contain less than 64 characters. - */ - Name: ReceiptFilterName; - /** - * A structure that provides the IP addresses to block or allow, and whether to block or allow incoming mail from them. - */ - IpFilter: ReceiptIpFilter; - } - export type ReceiptFilterList = ReceiptFilter[]; - export type ReceiptFilterName = string; - export type ReceiptFilterPolicy = "Block"|"Allow"|string; - export interface ReceiptIpFilter { - /** - * Indicates whether to block or allow incoming mail from the specified IP addresses. - */ - Policy: ReceiptFilterPolicy; - /** - * A single IP address or a range of IP addresses that you want to block or allow, specified in Classless Inter-Domain Routing (CIDR) notation. An example of a single email address is 10.0.0.1. An example of a range of IP addresses is 10.0.0.1/24. For more information about CIDR notation, see RFC 2317. - */ - Cidr: Cidr; - } - export interface ReceiptRule { - /** - * The name of the receipt rule. The name must: Contain only ASCII letters (a-z, A-Z), numbers (0-9), periods (.), underscores (_), or dashes (-). Start and end with a letter or number. Contain less than 64 characters. - */ - Name: ReceiptRuleName; - /** - * If true, the receipt rule is active. The default value is false. - */ - Enabled?: Enabled; - /** - * Specifies whether Amazon SES should require that incoming email is delivered over a connection encrypted with Transport Layer Security (TLS). If this parameter is set to Require, Amazon SES will bounce emails that are not received over TLS. The default is Optional. - */ - TlsPolicy?: TlsPolicy; - /** - * The recipient domains and email addresses that the receipt rule applies to. If this field is not specified, this rule will match all recipients under all verified domains. - */ - Recipients?: RecipientsList; - /** - * An ordered list of actions to perform on messages that match at least one of the recipient email addresses or domains specified in the receipt rule. - */ - Actions?: ReceiptActionsList; - /** - * If true, then messages that this receipt rule applies to are scanned for spam and viruses. The default value is false. - */ - ScanEnabled?: Enabled; - } - export type ReceiptRuleName = string; - export type ReceiptRuleNamesList = ReceiptRuleName[]; - export interface ReceiptRuleSetMetadata { - /** - * The name of the receipt rule set. The name must: Contain only ASCII letters (a-z, A-Z), numbers (0-9), periods (.), underscores (_), or dashes (-). Start and end with a letter or number. Contain less than 64 characters. - */ - Name?: ReceiptRuleSetName; - /** - * The date and time the receipt rule set was created. - */ - CreatedTimestamp?: Timestamp; - } - export type ReceiptRuleSetName = string; - export type ReceiptRuleSetsLists = ReceiptRuleSetMetadata[]; - export type ReceiptRulesList = ReceiptRule[]; - export type Recipient = string; - export interface RecipientDsnFields { - /** - * The email address that the message was ultimately delivered to. This corresponds to the Final-Recipient in the DSN. If not specified, FinalRecipient will be set to the Recipient specified in the BouncedRecipientInfo structure. Either FinalRecipient or the recipient in BouncedRecipientInfo must be a recipient of the original bounced message. Do not prepend the FinalRecipient email address with rfc 822;, as described in RFC 3798. - */ - FinalRecipient?: Address; - /** - * The action performed by the reporting mail transfer agent (MTA) as a result of its attempt to deliver the message to the recipient address. This is required by RFC 3464. - */ - Action: DsnAction; - /** - * The MTA to which the remote MTA attempted to deliver the message, formatted as specified in RFC 3464 (mta-name-type; mta-name). This parameter typically applies only to propagating synchronous bounces. - */ - RemoteMta?: RemoteMta; - /** - * The status code that indicates what went wrong. This is required by RFC 3464. - */ - Status: DsnStatus; - /** - * An extended explanation of what went wrong; this is usually an SMTP response. See RFC 3463 for the correct formatting of this parameter. - */ - DiagnosticCode?: DiagnosticCode; - /** - * The time the final delivery attempt was made, in RFC 822 date-time format. - */ - LastAttemptDate?: LastAttemptDate; - /** - * Additional X-headers to include in the DSN. - */ - ExtensionFields?: ExtensionFieldList; - } - export type RecipientsList = Recipient[]; - export type RemoteMta = string; - export type RenderedTemplate = string; - export interface ReorderReceiptRuleSetRequest { - /** - * The name of the receipt rule set to reorder. - */ - RuleSetName: ReceiptRuleSetName; - /** - * A list of the specified receipt rule set's receipt rules in the order that you want to put them. - */ - RuleNames: ReceiptRuleNamesList; - } - export interface ReorderReceiptRuleSetResponse { - } - export type ReportingMta = string; - export type RuleOrRuleSetName = string; - export interface S3Action { - /** - * The ARN of the Amazon SNS topic to notify when the message is saved to the Amazon S3 bucket. An example of an Amazon SNS topic ARN is arn:aws:sns:us-west-2:123456789012:MyTopic. For more information about Amazon SNS topics, see the Amazon SNS Developer Guide. - */ - TopicArn?: AmazonResourceName; - /** - * The name of the Amazon S3 bucket that incoming email will be saved to. - */ - BucketName: S3BucketName; - /** - * The key prefix of the Amazon S3 bucket. The key prefix is similar to a directory name that enables you to store similar data under the same directory in a bucket. - */ - ObjectKeyPrefix?: S3KeyPrefix; - /** - * The customer master key that Amazon SES should use to encrypt your emails before saving them to the Amazon S3 bucket. You can use the default master key or a custom master key you created in AWS KMS as follows: To use the default master key, provide an ARN in the form of arn:aws:kms:REGION:ACCOUNT-ID-WITHOUT-HYPHENS:alias/aws/ses. For example, if your AWS account ID is 123456789012 and you want to use the default master key in the US West (Oregon) region, the ARN of the default master key would be arn:aws:kms:us-west-2:123456789012:alias/aws/ses. If you use the default master key, you don't need to perform any extra steps to give Amazon SES permission to use the key. To use a custom master key you created in AWS KMS, provide the ARN of the master key and ensure that you add a statement to your key's policy to give Amazon SES permission to use it. For more information about giving permissions, see the Amazon SES Developer Guide. For more information about key policies, see the AWS KMS Developer Guide. If you do not specify a master key, Amazon SES will not encrypt your emails. Your mail is encrypted by Amazon SES using the Amazon S3 encryption client before the mail is submitted to Amazon S3 for storage. It is not encrypted using Amazon S3 server-side encryption. This means that you must use the Amazon S3 encryption client to decrypt the email after retrieving it from Amazon S3, as the service has no access to use your AWS KMS keys for decryption. This encryption client is currently available with the AWS Java SDK and AWS Ruby SDK only. For more information about client-side encryption using AWS KMS master keys, see the Amazon S3 Developer Guide. - */ - KmsKeyArn?: AmazonResourceName; - } - export type S3BucketName = string; - export type S3KeyPrefix = string; - export interface SNSAction { - /** - * The Amazon Resource Name (ARN) of the Amazon SNS topic to notify. An example of an Amazon SNS topic ARN is arn:aws:sns:us-west-2:123456789012:MyTopic. For more information about Amazon SNS topics, see the Amazon SNS Developer Guide. - */ - TopicArn: AmazonResourceName; - /** - * The encoding to use for the email within the Amazon SNS notification. UTF-8 is easier to use, but may not preserve all special characters when a message was encoded with a different encoding format. Base64 preserves all special characters. The default value is UTF-8. - */ - Encoding?: SNSActionEncoding; - } - export type SNSActionEncoding = "UTF-8"|"Base64"|string; - export interface SNSDestination { - /** - * The ARN of the Amazon SNS topic that email sending events will be published to. An example of an Amazon SNS topic ARN is arn:aws:sns:us-west-2:123456789012:MyTopic. For more information about Amazon SNS topics, see the Amazon SNS Developer Guide. - */ - TopicARN: AmazonResourceName; - } - export interface SendBounceRequest { - /** - * The message ID of the message to be bounced. - */ - OriginalMessageId: MessageId; - /** - * The address to use in the "From" header of the bounce message. This must be an identity that you have verified with Amazon SES. - */ - BounceSender: Address; - /** - * Human-readable text for the bounce message to explain the failure. If not specified, the text will be auto-generated based on the bounced recipient information. - */ - Explanation?: Explanation; - /** - * Message-related DSN fields. If not specified, Amazon SES will choose the values. - */ - MessageDsn?: MessageDsn; - /** - * A list of recipients of the bounced message, including the information required to create the Delivery Status Notifications (DSNs) for the recipients. You must specify at least one BouncedRecipientInfo in the list. - */ - BouncedRecipientInfoList: BouncedRecipientInfoList; - /** - * This parameter is used only for sending authorization. It is the ARN of the identity that is associated with the sending authorization policy that permits you to use the address in the "From" header of the bounce. For more information about sending authorization, see the Amazon SES Developer Guide. - */ - BounceSenderArn?: AmazonResourceName; - } - export interface SendBounceResponse { - /** - * The message ID of the bounce message. - */ - MessageId?: MessageId; - } - export interface SendBulkTemplatedEmailRequest { - /** - * The email address that is sending the email. This email address must be either individually verified with Amazon SES, or from a domain that has been verified with Amazon SES. For information about verifying identities, see the Amazon SES Developer Guide. If you are sending on behalf of another user and have been permitted to do so by a sending authorization policy, then you must also specify the SourceArn parameter. For more information about sending authorization, see the Amazon SES Developer Guide. In all cases, the email address must be 7-bit ASCII. If the text must contain any other characters, then you must use MIME encoded-word syntax (RFC 2047) instead of a literal string. MIME encoded-word syntax uses the following form: =?charset?encoding?encoded-text?=. For more information, see RFC 2047. - */ - Source: Address; - /** - * This parameter is used only for sending authorization. It is the ARN of the identity that is associated with the sending authorization policy that permits you to send for the email address specified in the Source parameter. For example, if the owner of example.com (which has ARN arn:aws:ses:us-east-1:123456789012:identity/example.com) attaches a policy to it that authorizes you to send from user@example.com, then you would specify the SourceArn to be arn:aws:ses:us-east-1:123456789012:identity/example.com, and the Source to be user@example.com. For more information about sending authorization, see the Amazon SES Developer Guide. - */ - SourceArn?: AmazonResourceName; - /** - * The reply-to email address(es) for the message. If the recipient replies to the message, each reply-to address will receive the reply. - */ - ReplyToAddresses?: AddressList; - /** - * The email address that bounces and complaints will be forwarded to when feedback forwarding is enabled. If the message cannot be delivered to the recipient, then an error message will be returned from the recipient's ISP; this message will then be forwarded to the email address specified by the ReturnPath parameter. The ReturnPath parameter is never overwritten. This email address must be either individually verified with Amazon SES, or from a domain that has been verified with Amazon SES. - */ - ReturnPath?: Address; - /** - * This parameter is used only for sending authorization. It is the ARN of the identity that is associated with the sending authorization policy that permits you to use the email address specified in the ReturnPath parameter. For example, if the owner of example.com (which has ARN arn:aws:ses:us-east-1:123456789012:identity/example.com) attaches a policy to it that authorizes you to use feedback@example.com, then you would specify the ReturnPathArn to be arn:aws:ses:us-east-1:123456789012:identity/example.com, and the ReturnPath to be feedback@example.com. For more information about sending authorization, see the Amazon SES Developer Guide. - */ - ReturnPathArn?: AmazonResourceName; - /** - * The name of the configuration set to use when you send an email using SendBulkTemplatedEmail. - */ - ConfigurationSetName?: ConfigurationSetName; - /** - * A list of tags, in the form of name/value pairs, to apply to an email that you send to a destination using SendBulkTemplatedEmail. - */ - DefaultTags?: MessageTagList; - /** - * The template to use when sending this email. - */ - Template: TemplateName; - /** - * The ARN of the template to use when sending this email. - */ - TemplateArn?: AmazonResourceName; - /** - * A list of replacement values to apply to the template when replacement data is not specified in a Destination object. These values act as a default or fallback option when no other data is available. The template data is a JSON object, typically consisting of key-value pairs in which the keys correspond to replacement tags in the email template. - */ - DefaultTemplateData?: TemplateData; - /** - * One or more Destination objects. All of the recipients in a Destination will receive the same version of the email. You can specify up to 50 Destination objects within a Destinations array. - */ - Destinations: BulkEmailDestinationList; - } - export interface SendBulkTemplatedEmailResponse { - /** - * The unique message identifier returned from the SendBulkTemplatedEmail action. - */ - Status: BulkEmailDestinationStatusList; - } - export interface SendDataPoint { - /** - * Time of the data point. - */ - Timestamp?: Timestamp; - /** - * Number of emails that have been sent. - */ - DeliveryAttempts?: Counter; - /** - * Number of emails that have bounced. - */ - Bounces?: Counter; - /** - * Number of unwanted emails that were rejected by recipients. - */ - Complaints?: Counter; - /** - * Number of emails rejected by Amazon SES. - */ - Rejects?: Counter; - } - export type SendDataPointList = SendDataPoint[]; - export interface SendEmailRequest { - /** - * The email address that is sending the email. This email address must be either individually verified with Amazon SES, or from a domain that has been verified with Amazon SES. For information about verifying identities, see the Amazon SES Developer Guide. If you are sending on behalf of another user and have been permitted to do so by a sending authorization policy, then you must also specify the SourceArn parameter. For more information about sending authorization, see the Amazon SES Developer Guide. In all cases, the email address must be 7-bit ASCII. If the text must contain any other characters, then you must use MIME encoded-word syntax (RFC 2047) instead of a literal string. MIME encoded-word syntax uses the following form: =?charset?encoding?encoded-text?=. For more information, see RFC 2047. - */ - Source: Address; - /** - * The destination for this email, composed of To:, CC:, and BCC: fields. - */ - Destination: Destination; - /** - * The message to be sent. - */ - Message: Message; - /** - * The reply-to email address(es) for the message. If the recipient replies to the message, each reply-to address will receive the reply. - */ - ReplyToAddresses?: AddressList; - /** - * The email address that bounces and complaints will be forwarded to when feedback forwarding is enabled. If the message cannot be delivered to the recipient, then an error message will be returned from the recipient's ISP; this message will then be forwarded to the email address specified by the ReturnPath parameter. The ReturnPath parameter is never overwritten. This email address must be either individually verified with Amazon SES, or from a domain that has been verified with Amazon SES. - */ - ReturnPath?: Address; - /** - * This parameter is used only for sending authorization. It is the ARN of the identity that is associated with the sending authorization policy that permits you to send for the email address specified in the Source parameter. For example, if the owner of example.com (which has ARN arn:aws:ses:us-east-1:123456789012:identity/example.com) attaches a policy to it that authorizes you to send from user@example.com, then you would specify the SourceArn to be arn:aws:ses:us-east-1:123456789012:identity/example.com, and the Source to be user@example.com. For more information about sending authorization, see the Amazon SES Developer Guide. - */ - SourceArn?: AmazonResourceName; - /** - * This parameter is used only for sending authorization. It is the ARN of the identity that is associated with the sending authorization policy that permits you to use the email address specified in the ReturnPath parameter. For example, if the owner of example.com (which has ARN arn:aws:ses:us-east-1:123456789012:identity/example.com) attaches a policy to it that authorizes you to use feedback@example.com, then you would specify the ReturnPathArn to be arn:aws:ses:us-east-1:123456789012:identity/example.com, and the ReturnPath to be feedback@example.com. For more information about sending authorization, see the Amazon SES Developer Guide. - */ - ReturnPathArn?: AmazonResourceName; - /** - * A list of tags, in the form of name/value pairs, to apply to an email that you send using SendEmail. Tags correspond to characteristics of the email that you define, so that you can publish email sending events. - */ - Tags?: MessageTagList; - /** - * The name of the configuration set to use when you send an email using SendEmail. - */ - ConfigurationSetName?: ConfigurationSetName; - } - export interface SendEmailResponse { - /** - * The unique message identifier returned from the SendEmail action. - */ - MessageId: MessageId; - } - export interface SendRawEmailRequest { - /** - * The identity's email address. If you do not provide a value for this parameter, you must specify a "From" address in the raw text of the message. (You can also specify both.) By default, the string must be 7-bit ASCII. If the text must contain any other characters, then you must use MIME encoded-word syntax (RFC 2047) instead of a literal string. MIME encoded-word syntax uses the following form: =?charset?encoding?encoded-text?=. For more information, see RFC 2047. If you specify the Source parameter and have feedback forwarding enabled, then bounces and complaints will be sent to this email address. This takes precedence over any Return-Path header that you might include in the raw text of the message. - */ - Source?: Address; - /** - * A list of destinations for the message, consisting of To:, CC:, and BCC: addresses. - */ - Destinations?: AddressList; - /** - * The raw text of the message. The client is responsible for ensuring the following: Message must contain a header and a body, separated by a blank line. All required header fields must be present. Each part of a multipart MIME message must be formatted properly. MIME content types must be among those supported by Amazon SES. For more information, go to the Amazon SES Developer Guide. Must be base64-encoded. Per RFC 5321, the maximum length of each line of text, including the <CRLF>, must not exceed 1,000 characters. - */ - RawMessage: RawMessage; - /** - * This parameter is used only for sending authorization. It is the ARN of the identity that is associated with the sending authorization policy that permits you to specify a particular "From" address in the header of the raw email. Instead of using this parameter, you can use the X-header X-SES-FROM-ARN in the raw message of the email. If you use both the FromArn parameter and the corresponding X-header, Amazon SES uses the value of the FromArn parameter. For information about when to use this parameter, see the description of SendRawEmail in this guide, or see the Amazon SES Developer Guide. - */ - FromArn?: AmazonResourceName; - /** - * This parameter is used only for sending authorization. It is the ARN of the identity that is associated with the sending authorization policy that permits you to send for the email address specified in the Source parameter. For example, if the owner of example.com (which has ARN arn:aws:ses:us-east-1:123456789012:identity/example.com) attaches a policy to it that authorizes you to send from user@example.com, then you would specify the SourceArn to be arn:aws:ses:us-east-1:123456789012:identity/example.com, and the Source to be user@example.com. Instead of using this parameter, you can use the X-header X-SES-SOURCE-ARN in the raw message of the email. If you use both the SourceArn parameter and the corresponding X-header, Amazon SES uses the value of the SourceArn parameter. For information about when to use this parameter, see the description of SendRawEmail in this guide, or see the Amazon SES Developer Guide. - */ - SourceArn?: AmazonResourceName; - /** - * This parameter is used only for sending authorization. It is the ARN of the identity that is associated with the sending authorization policy that permits you to use the email address specified in the ReturnPath parameter. For example, if the owner of example.com (which has ARN arn:aws:ses:us-east-1:123456789012:identity/example.com) attaches a policy to it that authorizes you to use feedback@example.com, then you would specify the ReturnPathArn to be arn:aws:ses:us-east-1:123456789012:identity/example.com, and the ReturnPath to be feedback@example.com. Instead of using this parameter, you can use the X-header X-SES-RETURN-PATH-ARN in the raw message of the email. If you use both the ReturnPathArn parameter and the corresponding X-header, Amazon SES uses the value of the ReturnPathArn parameter. For information about when to use this parameter, see the description of SendRawEmail in this guide, or see the Amazon SES Developer Guide. - */ - ReturnPathArn?: AmazonResourceName; - /** - * A list of tags, in the form of name/value pairs, to apply to an email that you send using SendRawEmail. Tags correspond to characteristics of the email that you define, so that you can publish email sending events. - */ - Tags?: MessageTagList; - /** - * The name of the configuration set to use when you send an email using SendRawEmail. - */ - ConfigurationSetName?: ConfigurationSetName; - } - export interface SendRawEmailResponse { - /** - * The unique message identifier returned from the SendRawEmail action. - */ - MessageId: MessageId; - } - export interface SendTemplatedEmailRequest { - /** - * The email address that is sending the email. This email address must be either individually verified with Amazon SES, or from a domain that has been verified with Amazon SES. For information about verifying identities, see the Amazon SES Developer Guide. If you are sending on behalf of another user and have been permitted to do so by a sending authorization policy, then you must also specify the SourceArn parameter. For more information about sending authorization, see the Amazon SES Developer Guide. In all cases, the email address must be 7-bit ASCII. If the text must contain any other characters, then you must use MIME encoded-word syntax (RFC 2047) instead of a literal string. MIME encoded-word syntax uses the following form: =?charset?encoding?encoded-text?=. For more information, see RFC 2047. - */ - Source: Address; - /** - * The destination for this email, composed of To:, CC:, and BCC: fields. A Destination can include up to 50 recipients across these three fields. - */ - Destination: Destination; - /** - * The reply-to email address(es) for the message. If the recipient replies to the message, each reply-to address will receive the reply. - */ - ReplyToAddresses?: AddressList; - /** - * The email address that bounces and complaints will be forwarded to when feedback forwarding is enabled. If the message cannot be delivered to the recipient, then an error message will be returned from the recipient's ISP; this message will then be forwarded to the email address specified by the ReturnPath parameter. The ReturnPath parameter is never overwritten. This email address must be either individually verified with Amazon SES, or from a domain that has been verified with Amazon SES. - */ - ReturnPath?: Address; - /** - * This parameter is used only for sending authorization. It is the ARN of the identity that is associated with the sending authorization policy that permits you to send for the email address specified in the Source parameter. For example, if the owner of example.com (which has ARN arn:aws:ses:us-east-1:123456789012:identity/example.com) attaches a policy to it that authorizes you to send from user@example.com, then you would specify the SourceArn to be arn:aws:ses:us-east-1:123456789012:identity/example.com, and the Source to be user@example.com. For more information about sending authorization, see the Amazon SES Developer Guide. - */ - SourceArn?: AmazonResourceName; - /** - * This parameter is used only for sending authorization. It is the ARN of the identity that is associated with the sending authorization policy that permits you to use the email address specified in the ReturnPath parameter. For example, if the owner of example.com (which has ARN arn:aws:ses:us-east-1:123456789012:identity/example.com) attaches a policy to it that authorizes you to use feedback@example.com, then you would specify the ReturnPathArn to be arn:aws:ses:us-east-1:123456789012:identity/example.com, and the ReturnPath to be feedback@example.com. For more information about sending authorization, see the Amazon SES Developer Guide. - */ - ReturnPathArn?: AmazonResourceName; - /** - * A list of tags, in the form of name/value pairs, to apply to an email that you send using SendTemplatedEmail. Tags correspond to characteristics of the email that you define, so that you can publish email sending events. - */ - Tags?: MessageTagList; - /** - * The name of the configuration set to use when you send an email using SendTemplatedEmail. - */ - ConfigurationSetName?: ConfigurationSetName; - /** - * The template to use when sending this email. - */ - Template: TemplateName; - /** - * The ARN of the template to use when sending this email. - */ - TemplateArn?: AmazonResourceName; - /** - * A list of replacement values to apply to the template. This parameter is a JSON object, typically consisting of key-value pairs in which the keys correspond to replacement tags in the email template. - */ - TemplateData: TemplateData; - } - export interface SendTemplatedEmailResponse { - /** - * The unique message identifier returned from the SendTemplatedEmail action. - */ - MessageId: MessageId; - } - export type SentLast24Hours = number; - export interface SetActiveReceiptRuleSetRequest { - /** - * The name of the receipt rule set to make active. Setting this value to null disables all email receiving. - */ - RuleSetName?: ReceiptRuleSetName; - } - export interface SetActiveReceiptRuleSetResponse { - } - export interface SetIdentityDkimEnabledRequest { - /** - * The identity for which DKIM signing should be enabled or disabled. - */ - Identity: Identity; - /** - * Sets whether DKIM signing is enabled for an identity. Set to true to enable DKIM signing for this identity; false to disable it. - */ - DkimEnabled: Enabled; - } - export interface SetIdentityDkimEnabledResponse { - } - export interface SetIdentityFeedbackForwardingEnabledRequest { - /** - * The identity for which to set bounce and complaint notification forwarding. Examples: user@example.com, example.com. - */ - Identity: Identity; - /** - * Sets whether Amazon SES will forward bounce and complaint notifications as email. true specifies that Amazon SES will forward bounce and complaint notifications as email, in addition to any Amazon SNS topic publishing otherwise specified. false specifies that Amazon SES will publish bounce and complaint notifications only through Amazon SNS. This value can only be set to false when Amazon SNS topics are set for both Bounce and Complaint notification types. - */ - ForwardingEnabled: Enabled; - } - export interface SetIdentityFeedbackForwardingEnabledResponse { - } - export interface SetIdentityHeadersInNotificationsEnabledRequest { - /** - * The identity for which to enable or disable headers in notifications. Examples: user@example.com, example.com. - */ - Identity: Identity; - /** - * The notification type for which to enable or disable headers in notifications. - */ - NotificationType: NotificationType; - /** - * Sets whether Amazon SES includes the original email headers in Amazon SNS notifications of the specified notification type. A value of true specifies that Amazon SES will include headers in notifications, and a value of false specifies that Amazon SES will not include headers in notifications. This value can only be set when NotificationType is already set to use a particular Amazon SNS topic. - */ - Enabled: Enabled; - } - export interface SetIdentityHeadersInNotificationsEnabledResponse { - } - export interface SetIdentityMailFromDomainRequest { - /** - * The verified identity for which you want to enable or disable the specified custom MAIL FROM domain. - */ - Identity: Identity; - /** - * The custom MAIL FROM domain that you want the verified identity to use. The MAIL FROM domain must 1) be a subdomain of the verified identity, 2) not be used in a "From" address if the MAIL FROM domain is the destination of email feedback forwarding (for more information, see the Amazon SES Developer Guide), and 3) not be used to receive emails. A value of null disables the custom MAIL FROM setting for the identity. - */ - MailFromDomain?: MailFromDomainName; - /** - * The action that you want Amazon SES to take if it cannot successfully read the required MX record when you send an email. If you choose UseDefaultValue, Amazon SES will use amazonses.com (or a subdomain of that) as the MAIL FROM domain. If you choose RejectMessage, Amazon SES will return a MailFromDomainNotVerified error and not send the email. The action specified in BehaviorOnMXFailure is taken when the custom MAIL FROM domain setup is in the Pending, Failed, and TemporaryFailure states. - */ - BehaviorOnMXFailure?: BehaviorOnMXFailure; - } - export interface SetIdentityMailFromDomainResponse { - } - export interface SetIdentityNotificationTopicRequest { - /** - * The identity for which the Amazon SNS topic will be set. You can specify an identity by using its name or by using its Amazon Resource Name (ARN). Examples: user@example.com, example.com, arn:aws:ses:us-east-1:123456789012:identity/example.com. - */ - Identity: Identity; - /** - * The type of notifications that will be published to the specified Amazon SNS topic. - */ - NotificationType: NotificationType; - /** - * The Amazon Resource Name (ARN) of the Amazon SNS topic. If the parameter is omitted from the request or a null value is passed, SnsTopic is cleared and publishing is disabled. - */ - SnsTopic?: NotificationTopic; - } - export interface SetIdentityNotificationTopicResponse { - } - export interface SetReceiptRulePositionRequest { - /** - * The name of the receipt rule set that contains the receipt rule to reposition. - */ - RuleSetName: ReceiptRuleSetName; - /** - * The name of the receipt rule to reposition. - */ - RuleName: ReceiptRuleName; - /** - * The name of the receipt rule after which to place the specified receipt rule. - */ - After?: ReceiptRuleName; - } - export interface SetReceiptRulePositionResponse { - } - export interface StopAction { - /** - * The name of the RuleSet that is being stopped. - */ - Scope: StopScope; - /** - * The Amazon Resource Name (ARN) of the Amazon SNS topic to notify when the stop action is taken. An example of an Amazon SNS topic ARN is arn:aws:sns:us-west-2:123456789012:MyTopic. For more information about Amazon SNS topics, see the Amazon SNS Developer Guide. - */ - TopicArn?: AmazonResourceName; - } - export type StopScope = "RuleSet"|string; - export type SubjectPart = string; - export interface Template { - /** - * The name of the template. You will refer to this name when you send email using the SendTemplatedEmail or SendBulkTemplatedEmail operations. - */ - TemplateName: TemplateName; - /** - * The subject line of the email. - */ - SubjectPart?: SubjectPart; - /** - * The email body that will be visible to recipients whose email clients do not display HTML. - */ - TextPart?: TextPart; - /** - * The HTML body of the email. - */ - HtmlPart?: HtmlPart; - } - export type TemplateData = string; - export interface TemplateMetadata { - /** - * The name of the template. - */ - Name?: TemplateName; - /** - * The time and date the template was created. - */ - CreatedTimestamp?: Timestamp; - } - export type TemplateMetadataList = TemplateMetadata[]; - export type TemplateName = string; - export interface TestRenderTemplateRequest { - /** - * The name of the template that you want to render. - */ - TemplateName: TemplateName; - /** - * A list of replacement values to apply to the template. This parameter is a JSON object, typically consisting of key-value pairs in which the keys correspond to replacement tags in the email template. - */ - TemplateData: TemplateData; - } - export interface TestRenderTemplateResponse { - /** - * The complete MIME message rendered by applying the data in the TemplateData parameter to the template specified in the TemplateName parameter. - */ - RenderedTemplate?: RenderedTemplate; - } - export type TextPart = string; - export type Timestamp = Date; - export type TlsPolicy = "Require"|"Optional"|string; - export interface TrackingOptions { - /** - * The custom subdomain that will be used to redirect email recipients to the Amazon SES event tracking domain. - */ - CustomRedirectDomain?: CustomRedirectDomain; - } - export interface UpdateConfigurationSetEventDestinationRequest { - /** - * The name of the configuration set that contains the event destination that you want to update. - */ - ConfigurationSetName: ConfigurationSetName; - /** - * The event destination object that you want to apply to the specified configuration set. - */ - EventDestination: EventDestination; - } - export interface UpdateConfigurationSetEventDestinationResponse { - } - export interface UpdateConfigurationSetTrackingOptionsRequest { - /** - * The name of the configuration set for which you want to update the custom tracking domain. - */ - ConfigurationSetName: ConfigurationSetName; - TrackingOptions: TrackingOptions; - } - export interface UpdateConfigurationSetTrackingOptionsResponse { - } - export interface UpdateReceiptRuleRequest { - /** - * The name of the receipt rule set that the receipt rule belongs to. - */ - RuleSetName: ReceiptRuleSetName; - /** - * A data structure that contains the updated receipt rule information. - */ - Rule: ReceiptRule; - } - export interface UpdateReceiptRuleResponse { - } - export interface UpdateTemplateRequest { - Template: Template; - } - export interface UpdateTemplateResponse { - } - export type VerificationAttributes = {[key: string]: IdentityVerificationAttributes}; - export type VerificationStatus = "Pending"|"Success"|"Failed"|"TemporaryFailure"|"NotStarted"|string; - export type VerificationToken = string; - export type VerificationTokenList = VerificationToken[]; - export interface VerifyDomainDkimRequest { - /** - * The name of the domain to be verified for Easy DKIM signing. - */ - Domain: Domain; - } - export interface VerifyDomainDkimResponse { - /** - * A set of character strings that represent the domain's identity. If the identity is an email address, the tokens represent the domain of that address. Using these tokens, you will need to create DNS CNAME records that point to DKIM public keys hosted by Amazon SES. Amazon Web Services will eventually detect that you have updated your DNS records; this detection process may take up to 72 hours. Upon successful detection, Amazon SES will be able to DKIM-sign emails originating from that domain. For more information about creating DNS records using DKIM tokens, go to the Amazon SES Developer Guide. - */ - DkimTokens: VerificationTokenList; - } - export interface VerifyDomainIdentityRequest { - /** - * The domain to be verified. - */ - Domain: Domain; - } - export interface VerifyDomainIdentityResponse { - /** - * A TXT record that you must place in the DNS settings of the domain to complete domain verification with Amazon SES. As Amazon SES searches for the TXT record, the domain's verification status is "Pending". When Amazon SES detects the record, the domain's verification status changes to "Success". If Amazon SES is unable to detect the record within 72 hours, the domain's verification status changes to "Failed." In that case, if you still want to verify the domain, you must restart the verification process from the beginning. - */ - VerificationToken: VerificationToken; - } - export interface VerifyEmailAddressRequest { - /** - * The email address to be verified. - */ - EmailAddress: Address; - } - export interface VerifyEmailIdentityRequest { - /** - * The email address to be verified. - */ - EmailAddress: Address; - } - export interface VerifyEmailIdentityResponse { - } - export interface WorkmailAction { - /** - * The Amazon Resource Name (ARN) of the Amazon SNS topic to notify when the WorkMail action is called. An example of an Amazon SNS topic ARN is arn:aws:sns:us-west-2:123456789012:MyTopic. For more information about Amazon SNS topics, see the Amazon SNS Developer Guide. - */ - TopicArn?: AmazonResourceName; - /** - * The ARN of the Amazon WorkMail organization. An example of an Amazon WorkMail organization ARN is arn:aws:workmail:us-west-2:123456789012:organization/m-68755160c4cb4e29a2b2f8fb58f359d7. For information about Amazon WorkMail organizations, see the Amazon WorkMail Administrator Guide. - */ - OrganizationArn: AmazonResourceName; - } - /** - * A string in YYYY-MM-DD format that represents the latest possible API version that can be used in this service. Specify 'latest' to use the latest possible version. - */ - export type apiVersion = "2010-12-01"|"latest"|string; - export interface ClientApiVersions { - /** - * A string in YYYY-MM-DD format that represents the latest possible API version that can be used in this service. Specify 'latest' to use the latest possible version. - */ - apiVersion?: apiVersion; - } - export type ClientConfiguration = ServiceConfigurationOptions & ClientApiVersions; - /** - * Contains interfaces for use with the SES client. - */ - export import Types = SES; -} -export = SES; diff --git a/workshops/monte-carlo-on-ec2-spot-fleet/src/web/node_modules/aws-sdk/clients/ses.js b/workshops/monte-carlo-on-ec2-spot-fleet/src/web/node_modules/aws-sdk/clients/ses.js deleted file mode 100644 index 3bb74794..00000000 --- a/workshops/monte-carlo-on-ec2-spot-fleet/src/web/node_modules/aws-sdk/clients/ses.js +++ /dev/null @@ -1,19 +0,0 @@ -require('../lib/node_loader'); -var AWS = require('../lib/core'); -var Service = AWS.Service; -var apiLoader = AWS.apiLoader; - -apiLoader.services['ses'] = {}; -AWS.SES = Service.defineService('ses', ['2010-12-01']); -Object.defineProperty(apiLoader.services['ses'], '2010-12-01', { - get: function get() { - var model = require('../apis/email-2010-12-01.min.json'); - model.paginators = require('../apis/email-2010-12-01.paginators.json').pagination; - model.waiters = require('../apis/email-2010-12-01.waiters2.json').waiters; - return model; - }, - enumerable: true, - configurable: true -}); - -module.exports = AWS.SES; diff --git a/workshops/monte-carlo-on-ec2-spot-fleet/src/web/node_modules/aws-sdk/clients/shield.d.ts b/workshops/monte-carlo-on-ec2-spot-fleet/src/web/node_modules/aws-sdk/clients/shield.d.ts deleted file mode 100644 index a181d3b8..00000000 --- a/workshops/monte-carlo-on-ec2-spot-fleet/src/web/node_modules/aws-sdk/clients/shield.d.ts +++ /dev/null @@ -1,396 +0,0 @@ -import {Request} from '../lib/request'; -import {Response} from '../lib/response'; -import {AWSError} from '../lib/error'; -import {Service} from '../lib/service'; -import {ServiceConfigurationOptions} from '../lib/service'; -import {ConfigBase as Config} from '../lib/config'; -interface Blob {} -declare class Shield extends Service { - /** - * Constructs a service object. This object has one method for each API operation. - */ - constructor(options?: Shield.Types.ClientConfiguration) - config: Config & Shield.Types.ClientConfiguration; - /** - * Enables AWS Shield Advanced for a specific AWS resource. The resource can be an Amazon CloudFront distribution, Elastic Load Balancing load balancer, or an Amazon Route 53 hosted zone. - */ - createProtection(params: Shield.Types.CreateProtectionRequest, callback?: (err: AWSError, data: Shield.Types.CreateProtectionResponse) => void): Request; - /** - * Enables AWS Shield Advanced for a specific AWS resource. The resource can be an Amazon CloudFront distribution, Elastic Load Balancing load balancer, or an Amazon Route 53 hosted zone. - */ - createProtection(callback?: (err: AWSError, data: Shield.Types.CreateProtectionResponse) => void): Request; - /** - * Activates AWS Shield Advanced for an account. - */ - createSubscription(params: Shield.Types.CreateSubscriptionRequest, callback?: (err: AWSError, data: Shield.Types.CreateSubscriptionResponse) => void): Request; - /** - * Activates AWS Shield Advanced for an account. - */ - createSubscription(callback?: (err: AWSError, data: Shield.Types.CreateSubscriptionResponse) => void): Request; - /** - * Deletes an AWS Shield Advanced Protection. - */ - deleteProtection(params: Shield.Types.DeleteProtectionRequest, callback?: (err: AWSError, data: Shield.Types.DeleteProtectionResponse) => void): Request; - /** - * Deletes an AWS Shield Advanced Protection. - */ - deleteProtection(callback?: (err: AWSError, data: Shield.Types.DeleteProtectionResponse) => void): Request; - /** - * Removes AWS Shield Advanced from an account. - */ - deleteSubscription(params: Shield.Types.DeleteSubscriptionRequest, callback?: (err: AWSError, data: Shield.Types.DeleteSubscriptionResponse) => void): Request; - /** - * Removes AWS Shield Advanced from an account. - */ - deleteSubscription(callback?: (err: AWSError, data: Shield.Types.DeleteSubscriptionResponse) => void): Request; - /** - * Describes the details of a DDoS attack. - */ - describeAttack(params: Shield.Types.DescribeAttackRequest, callback?: (err: AWSError, data: Shield.Types.DescribeAttackResponse) => void): Request; - /** - * Describes the details of a DDoS attack. - */ - describeAttack(callback?: (err: AWSError, data: Shield.Types.DescribeAttackResponse) => void): Request; - /** - * Lists the details of a Protection object. - */ - describeProtection(params: Shield.Types.DescribeProtectionRequest, callback?: (err: AWSError, data: Shield.Types.DescribeProtectionResponse) => void): Request; - /** - * Lists the details of a Protection object. - */ - describeProtection(callback?: (err: AWSError, data: Shield.Types.DescribeProtectionResponse) => void): Request; - /** - * Provides details about the AWS Shield Advanced subscription for an account. - */ - describeSubscription(params: Shield.Types.DescribeSubscriptionRequest, callback?: (err: AWSError, data: Shield.Types.DescribeSubscriptionResponse) => void): Request; - /** - * Provides details about the AWS Shield Advanced subscription for an account. - */ - describeSubscription(callback?: (err: AWSError, data: Shield.Types.DescribeSubscriptionResponse) => void): Request; - /** - * Returns all ongoing DDoS attacks or all DDoS attacks during a specified time period. - */ - listAttacks(params: Shield.Types.ListAttacksRequest, callback?: (err: AWSError, data: Shield.Types.ListAttacksResponse) => void): Request; - /** - * Returns all ongoing DDoS attacks or all DDoS attacks during a specified time period. - */ - listAttacks(callback?: (err: AWSError, data: Shield.Types.ListAttacksResponse) => void): Request; - /** - * Lists all Protection objects for the account. - */ - listProtections(params: Shield.Types.ListProtectionsRequest, callback?: (err: AWSError, data: Shield.Types.ListProtectionsResponse) => void): Request; - /** - * Lists all Protection objects for the account. - */ - listProtections(callback?: (err: AWSError, data: Shield.Types.ListProtectionsResponse) => void): Request; -} -declare namespace Shield { - export interface AttackDetail { - /** - * The unique identifier (ID) of the attack. - */ - AttackId?: AttackId; - /** - * The ARN (Amazon Resource Name) of the resource that was attacked. - */ - ResourceArn?: ResourceArn; - /** - * If applicable, additional detail about the resource being attacked, for example, IP address or URL. - */ - SubResources?: SubResourceSummaryList; - /** - * The time the attack started, in the format 2016-12-16T13:50Z. - */ - StartTime?: AttackTimestamp; - /** - * The time the attack ended, in the format 2016-12-16T13:50Z. - */ - EndTime?: AttackTimestamp; - /** - * List of counters that describe the attack for the specified time period. - */ - AttackCounters?: SummarizedCounterList; - /** - * List of mitigation actions taken for the attack. - */ - Mitigations?: MitigationList; - } - export type AttackId = string; - export type AttackSummaries = AttackSummary[]; - export interface AttackSummary { - /** - * The unique identifier (ID) of the attack. - */ - AttackId?: String; - /** - * The ARN (Amazon Resource Name) of the resource that was attacked. - */ - ResourceArn?: String; - /** - * The start time of the attack, in the format 2016-12-16T13:50Z. - */ - StartTime?: AttackTimestamp; - /** - * The end time of the attack, in the format 2016-12-16T13:50Z. - */ - EndTime?: AttackTimestamp; - /** - * The list of attacks for a specified time period. - */ - AttackVectors?: AttackVectorDescriptionList; - } - export type AttackTimestamp = Date; - export interface AttackVectorDescription { - /** - * The attack type, for example, SNMP reflection or SYN flood. - */ - VectorType: String; - } - export type AttackVectorDescriptionList = AttackVectorDescription[]; - export interface CreateProtectionRequest { - /** - * Friendly name for the Protection you are creating. - */ - Name: ProtectionName; - /** - * The ARN (Amazon Resource Name) of the resource to be protected. - */ - ResourceArn: ResourceArn; - } - export interface CreateProtectionResponse { - /** - * The unique identifier (ID) for the Protection object that is created. - */ - ProtectionId?: ProtectionId; - } - export interface CreateSubscriptionRequest { - } - export interface CreateSubscriptionResponse { - } - export interface DeleteProtectionRequest { - /** - * The unique identifier (ID) for the Protection object to be deleted. - */ - ProtectionId: ProtectionId; - } - export interface DeleteProtectionResponse { - } - export interface DeleteSubscriptionRequest { - } - export interface DeleteSubscriptionResponse { - } - export interface DescribeAttackRequest { - /** - * The unique identifier (ID) for the attack that to be described. - */ - AttackId: AttackId; - } - export interface DescribeAttackResponse { - /** - * The attack that is described. - */ - Attack?: AttackDetail; - } - export interface DescribeProtectionRequest { - /** - * The unique identifier (ID) for the Protection object that is described. - */ - ProtectionId: ProtectionId; - } - export interface DescribeProtectionResponse { - /** - * The Protection object that is described. - */ - Protection?: Protection; - } - export interface DescribeSubscriptionRequest { - } - export interface DescribeSubscriptionResponse { - /** - * The AWS Shield Advanced subscription details for an account. - */ - Subscription?: Subscription; - } - export type Double = number; - export type DurationInSeconds = number; - export type Integer = number; - export type LimitNumber = number; - export type LimitType = string; - export interface ListAttacksRequest { - /** - * The ARN (Amazon Resource Name) of the resource that was attacked. If this is left blank, all applicable resources for this account will be included. - */ - ResourceArns?: ResourceArnFilterList; - /** - * The time period for the attacks. - */ - StartTime?: TimeRange; - /** - * The end of the time period for the attacks. - */ - EndTime?: TimeRange; - /** - * The ListAttacksRequest.NextMarker value from a previous call to ListAttacksRequest. Pass null if this is the first call. - */ - NextToken?: Token; - /** - * The maximum number of AttackSummary objects to be returned. If this is left blank, the first 20 results will be returned. - */ - MaxResults?: MaxResults; - } - export interface ListAttacksResponse { - /** - * The attack information for the specified time range. - */ - AttackSummaries?: AttackSummaries; - /** - * The token returned by a previous call to indicate that there is more data available. If not null, more results are available. Pass this value for the NextMarker parameter in a subsequent call to ListAttacks to retrieve the next set of items. - */ - NextToken?: Token; - } - export interface ListProtectionsRequest { - /** - * The ListProtectionsRequest.NextToken value from a previous call to ListProtections. Pass null if this is the first call. - */ - NextToken?: Token; - /** - * The maximum number of Protection objects to be returned. If this is left blank the first 20 results will be returned. - */ - MaxResults?: MaxResults; - } - export interface ListProtectionsResponse { - /** - * The array of enabled Protection objects. - */ - Protections?: Protections; - /** - * If you specify a value for MaxResults and you have more Protections than the value of MaxResults, AWS Shield Advanced returns a NextToken value in the response that allows you to list another group of Protections. For the second and subsequent ListProtections requests, specify the value of NextToken from the previous response to get information about another batch of Protections. - */ - NextToken?: Token; - } - export type MaxResults = number; - export interface Mitigation { - /** - * The name of the mitigation taken for this attack. - */ - MitigationName?: String; - } - export type MitigationList = Mitigation[]; - export interface Protection { - /** - * The unique identifier (ID) of the protection. - */ - Id?: ProtectionId; - /** - * The friendly name of the protection. For example, My CloudFront distributions. - */ - Name?: ProtectionName; - /** - * The ARN (Amazon Resource Name) of the AWS resource that is protected. - */ - ResourceArn?: ResourceArn; - } - export type ProtectionId = string; - export type ProtectionName = string; - export type Protections = Protection[]; - export type ResourceArn = string; - export type ResourceArnFilterList = ResourceArn[]; - export type String = string; - export interface SubResourceSummary { - /** - * The SubResource type. - */ - Type?: SubResourceType; - /** - * The unique identifier (ID) of the SubResource. - */ - Id?: String; - /** - * The list of attack types and associated counters. - */ - AttackVectors?: SummarizedAttackVectorList; - /** - * The counters that describe the details of the attack. - */ - Counters?: SummarizedCounterList; - } - export type SubResourceSummaryList = SubResourceSummary[]; - export type SubResourceType = "IP"|"URL"|string; - export interface Subscription { - /** - * The start time of the subscription, in the format "2016-12-16T13:50Z". - */ - StartTime?: Timestamp; - /** - * The length, in seconds, of the AWS Shield Advanced subscription for the account. - */ - TimeCommitmentInSeconds?: DurationInSeconds; - } - export interface SummarizedAttackVector { - /** - * The attack type, for example, SNMP reflection or SYN flood. - */ - VectorType: String; - /** - * The list of counters that describe the details of the attack. - */ - VectorCounters?: SummarizedCounterList; - } - export type SummarizedAttackVectorList = SummarizedAttackVector[]; - export interface SummarizedCounter { - /** - * The counter name. - */ - Name?: String; - /** - * The maximum value of the counter for a specified time period. - */ - Max?: Double; - /** - * The average value of the counter for a specified time period. - */ - Average?: Double; - /** - * The total of counter values for a specified time period. - */ - Sum?: Double; - /** - * The number of counters for a specified time period. - */ - N?: Integer; - /** - * The unit of the counters. - */ - Unit?: String; - } - export type SummarizedCounterList = SummarizedCounter[]; - export interface TimeRange { - /** - * The start time, in the format 2016-12-16T13:50Z. - */ - FromInclusive?: AttackTimestamp; - /** - * The end time, in the format 2016-12-16T15:50Z. - */ - ToExclusive?: AttackTimestamp; - } - export type Timestamp = Date; - export type Token = string; - export type errorMessage = string; - /** - * A string in YYYY-MM-DD format that represents the latest possible API version that can be used in this service. Specify 'latest' to use the latest possible version. - */ - export type apiVersion = "2016-06-02"|"latest"|string; - export interface ClientApiVersions { - /** - * A string in YYYY-MM-DD format that represents the latest possible API version that can be used in this service. Specify 'latest' to use the latest possible version. - */ - apiVersion?: apiVersion; - } - export type ClientConfiguration = ServiceConfigurationOptions & ClientApiVersions; - /** - * Contains interfaces for use with the Shield client. - */ - export import Types = Shield; -} -export = Shield; diff --git a/workshops/monte-carlo-on-ec2-spot-fleet/src/web/node_modules/aws-sdk/clients/shield.js b/workshops/monte-carlo-on-ec2-spot-fleet/src/web/node_modules/aws-sdk/clients/shield.js deleted file mode 100644 index 64757e38..00000000 --- a/workshops/monte-carlo-on-ec2-spot-fleet/src/web/node_modules/aws-sdk/clients/shield.js +++ /dev/null @@ -1,17 +0,0 @@ -require('../lib/node_loader'); -var AWS = require('../lib/core'); -var Service = AWS.Service; -var apiLoader = AWS.apiLoader; - -apiLoader.services['shield'] = {}; -AWS.Shield = Service.defineService('shield', ['2016-06-02']); -Object.defineProperty(apiLoader.services['shield'], '2016-06-02', { - get: function get() { - var model = require('../apis/shield-2016-06-02.min.json'); - return model; - }, - enumerable: true, - configurable: true -}); - -module.exports = AWS.Shield; diff --git a/workshops/monte-carlo-on-ec2-spot-fleet/src/web/node_modules/aws-sdk/clients/simpledb.d.ts b/workshops/monte-carlo-on-ec2-spot-fleet/src/web/node_modules/aws-sdk/clients/simpledb.d.ts deleted file mode 100644 index ce09b913..00000000 --- a/workshops/monte-carlo-on-ec2-spot-fleet/src/web/node_modules/aws-sdk/clients/simpledb.d.ts +++ /dev/null @@ -1,381 +0,0 @@ -import {Request} from '../lib/request'; -import {Response} from '../lib/response'; -import {AWSError} from '../lib/error'; -import {Service} from '../lib/service'; -import {ServiceConfigurationOptions} from '../lib/service'; -import {ConfigBase as Config} from '../lib/config'; -interface Blob {} -declare class SimpleDB extends Service { - /** - * Constructs a service object. This object has one method for each API operation. - */ - constructor(options?: SimpleDB.Types.ClientConfiguration) - config: Config & SimpleDB.Types.ClientConfiguration; - /** - * Performs multiple DeleteAttributes operations in a single call, which reduces round trips and latencies. This enables Amazon SimpleDB to optimize requests, which generally yields better throughput. If you specify BatchDeleteAttributes without attributes or values, all the attributes for the item are deleted. BatchDeleteAttributes is an idempotent operation; running it multiple times on the same item or attribute doesn't result in an error. The BatchDeleteAttributes operation succeeds or fails in its entirety. There are no partial deletes. You can execute multiple BatchDeleteAttributes operations and other operations in parallel. However, large numbers of concurrent BatchDeleteAttributes calls can result in Service Unavailable (503) responses. This operation is vulnerable to exceeding the maximum URL size when making a REST request using the HTTP GET method. This operation does not support conditions using Expected.X.Name, Expected.X.Value, or Expected.X.Exists. The following limitations are enforced for this operation: 1 MB request size 25 item limit per BatchDeleteAttributes operation - */ - batchDeleteAttributes(params: SimpleDB.Types.BatchDeleteAttributesRequest, callback?: (err: AWSError, data: {}) => void): Request<{}, AWSError>; - /** - * Performs multiple DeleteAttributes operations in a single call, which reduces round trips and latencies. This enables Amazon SimpleDB to optimize requests, which generally yields better throughput. If you specify BatchDeleteAttributes without attributes or values, all the attributes for the item are deleted. BatchDeleteAttributes is an idempotent operation; running it multiple times on the same item or attribute doesn't result in an error. The BatchDeleteAttributes operation succeeds or fails in its entirety. There are no partial deletes. You can execute multiple BatchDeleteAttributes operations and other operations in parallel. However, large numbers of concurrent BatchDeleteAttributes calls can result in Service Unavailable (503) responses. This operation is vulnerable to exceeding the maximum URL size when making a REST request using the HTTP GET method. This operation does not support conditions using Expected.X.Name, Expected.X.Value, or Expected.X.Exists. The following limitations are enforced for this operation: 1 MB request size 25 item limit per BatchDeleteAttributes operation - */ - batchDeleteAttributes(callback?: (err: AWSError, data: {}) => void): Request<{}, AWSError>; - /** - * The BatchPutAttributes operation creates or replaces attributes within one or more items. By using this operation, the client can perform multiple PutAttribute operation with a single call. This helps yield savings in round trips and latencies, enabling Amazon SimpleDB to optimize requests and generally produce better throughput. The client may specify the item name with the Item.X.ItemName parameter. The client may specify new attributes using a combination of the Item.X.Attribute.Y.Name and Item.X.Attribute.Y.Value parameters. The client may specify the first attribute for the first item using the parameters Item.0.Attribute.0.Name and Item.0.Attribute.0.Value, and for the second attribute for the first item by the parameters Item.0.Attribute.1.Name and Item.0.Attribute.1.Value, and so on. Attributes are uniquely identified within an item by their name/value combination. For example, a single item can have the attributes { "first_name", "first_value" } and { "first_name", "second_value" }. However, it cannot have two attribute instances where both the Item.X.Attribute.Y.Name and Item.X.Attribute.Y.Value are the same. Optionally, the requester can supply the Replace parameter for each individual value. Setting this value to true will cause the new attribute values to replace the existing attribute values. For example, if an item I has the attributes { 'a', '1' }, { 'b', '2'} and { 'b', '3' } and the requester does a BatchPutAttributes of {'I', 'b', '4' } with the Replace parameter set to true, the final attributes of the item will be { 'a', '1' } and { 'b', '4' }, replacing the previous values of the 'b' attribute with the new value. You cannot specify an empty string as an item or as an attribute name. The BatchPutAttributes operation succeeds or fails in its entirety. There are no partial puts. This operation is vulnerable to exceeding the maximum URL size when making a REST request using the HTTP GET method. This operation does not support conditions using Expected.X.Name, Expected.X.Value, or Expected.X.Exists. You can execute multiple BatchPutAttributes operations and other operations in parallel. However, large numbers of concurrent BatchPutAttributes calls can result in Service Unavailable (503) responses. The following limitations are enforced for this operation: 256 attribute name-value pairs per item 1 MB request size 1 billion attributes per domain 10 GB of total user data storage per domain 25 item limit per BatchPutAttributes operation - */ - batchPutAttributes(params: SimpleDB.Types.BatchPutAttributesRequest, callback?: (err: AWSError, data: {}) => void): Request<{}, AWSError>; - /** - * The BatchPutAttributes operation creates or replaces attributes within one or more items. By using this operation, the client can perform multiple PutAttribute operation with a single call. This helps yield savings in round trips and latencies, enabling Amazon SimpleDB to optimize requests and generally produce better throughput. The client may specify the item name with the Item.X.ItemName parameter. The client may specify new attributes using a combination of the Item.X.Attribute.Y.Name and Item.X.Attribute.Y.Value parameters. The client may specify the first attribute for the first item using the parameters Item.0.Attribute.0.Name and Item.0.Attribute.0.Value, and for the second attribute for the first item by the parameters Item.0.Attribute.1.Name and Item.0.Attribute.1.Value, and so on. Attributes are uniquely identified within an item by their name/value combination. For example, a single item can have the attributes { "first_name", "first_value" } and { "first_name", "second_value" }. However, it cannot have two attribute instances where both the Item.X.Attribute.Y.Name and Item.X.Attribute.Y.Value are the same. Optionally, the requester can supply the Replace parameter for each individual value. Setting this value to true will cause the new attribute values to replace the existing attribute values. For example, if an item I has the attributes { 'a', '1' }, { 'b', '2'} and { 'b', '3' } and the requester does a BatchPutAttributes of {'I', 'b', '4' } with the Replace parameter set to true, the final attributes of the item will be { 'a', '1' } and { 'b', '4' }, replacing the previous values of the 'b' attribute with the new value. You cannot specify an empty string as an item or as an attribute name. The BatchPutAttributes operation succeeds or fails in its entirety. There are no partial puts. This operation is vulnerable to exceeding the maximum URL size when making a REST request using the HTTP GET method. This operation does not support conditions using Expected.X.Name, Expected.X.Value, or Expected.X.Exists. You can execute multiple BatchPutAttributes operations and other operations in parallel. However, large numbers of concurrent BatchPutAttributes calls can result in Service Unavailable (503) responses. The following limitations are enforced for this operation: 256 attribute name-value pairs per item 1 MB request size 1 billion attributes per domain 10 GB of total user data storage per domain 25 item limit per BatchPutAttributes operation - */ - batchPutAttributes(callback?: (err: AWSError, data: {}) => void): Request<{}, AWSError>; - /** - * The CreateDomain operation creates a new domain. The domain name should be unique among the domains associated with the Access Key ID provided in the request. The CreateDomain operation may take 10 or more seconds to complete. CreateDomain is an idempotent operation; running it multiple times using the same domain name will not result in an error response. The client can create up to 100 domains per account. If the client requires additional domains, go to http://aws.amazon.com/contact-us/simpledb-limit-request/. - */ - createDomain(params: SimpleDB.Types.CreateDomainRequest, callback?: (err: AWSError, data: {}) => void): Request<{}, AWSError>; - /** - * The CreateDomain operation creates a new domain. The domain name should be unique among the domains associated with the Access Key ID provided in the request. The CreateDomain operation may take 10 or more seconds to complete. CreateDomain is an idempotent operation; running it multiple times using the same domain name will not result in an error response. The client can create up to 100 domains per account. If the client requires additional domains, go to http://aws.amazon.com/contact-us/simpledb-limit-request/. - */ - createDomain(callback?: (err: AWSError, data: {}) => void): Request<{}, AWSError>; - /** - * Deletes one or more attributes associated with an item. If all attributes of the item are deleted, the item is deleted. If DeleteAttributes is called without being passed any attributes or values specified, all the attributes for the item are deleted. DeleteAttributes is an idempotent operation; running it multiple times on the same item or attribute does not result in an error response. Because Amazon SimpleDB makes multiple copies of item data and uses an eventual consistency update model, performing a GetAttributes or Select operation (read) immediately after a DeleteAttributes or PutAttributes operation (write) might not return updated item data. - */ - deleteAttributes(params: SimpleDB.Types.DeleteAttributesRequest, callback?: (err: AWSError, data: {}) => void): Request<{}, AWSError>; - /** - * Deletes one or more attributes associated with an item. If all attributes of the item are deleted, the item is deleted. If DeleteAttributes is called without being passed any attributes or values specified, all the attributes for the item are deleted. DeleteAttributes is an idempotent operation; running it multiple times on the same item or attribute does not result in an error response. Because Amazon SimpleDB makes multiple copies of item data and uses an eventual consistency update model, performing a GetAttributes or Select operation (read) immediately after a DeleteAttributes or PutAttributes operation (write) might not return updated item data. - */ - deleteAttributes(callback?: (err: AWSError, data: {}) => void): Request<{}, AWSError>; - /** - * The DeleteDomain operation deletes a domain. Any items (and their attributes) in the domain are deleted as well. The DeleteDomain operation might take 10 or more seconds to complete. Running DeleteDomain on a domain that does not exist or running the function multiple times using the same domain name will not result in an error response. - */ - deleteDomain(params: SimpleDB.Types.DeleteDomainRequest, callback?: (err: AWSError, data: {}) => void): Request<{}, AWSError>; - /** - * The DeleteDomain operation deletes a domain. Any items (and their attributes) in the domain are deleted as well. The DeleteDomain operation might take 10 or more seconds to complete. Running DeleteDomain on a domain that does not exist or running the function multiple times using the same domain name will not result in an error response. - */ - deleteDomain(callback?: (err: AWSError, data: {}) => void): Request<{}, AWSError>; - /** - * Returns information about the domain, including when the domain was created, the number of items and attributes in the domain, and the size of the attribute names and values. - */ - domainMetadata(params: SimpleDB.Types.DomainMetadataRequest, callback?: (err: AWSError, data: SimpleDB.Types.DomainMetadataResult) => void): Request; - /** - * Returns information about the domain, including when the domain was created, the number of items and attributes in the domain, and the size of the attribute names and values. - */ - domainMetadata(callback?: (err: AWSError, data: SimpleDB.Types.DomainMetadataResult) => void): Request; - /** - * Returns all of the attributes associated with the specified item. Optionally, the attributes returned can be limited to one or more attributes by specifying an attribute name parameter. If the item does not exist on the replica that was accessed for this operation, an empty set is returned. The system does not return an error as it cannot guarantee the item does not exist on other replicas. If GetAttributes is called without being passed any attribute names, all the attributes for the item are returned. - */ - getAttributes(params: SimpleDB.Types.GetAttributesRequest, callback?: (err: AWSError, data: SimpleDB.Types.GetAttributesResult) => void): Request; - /** - * Returns all of the attributes associated with the specified item. Optionally, the attributes returned can be limited to one or more attributes by specifying an attribute name parameter. If the item does not exist on the replica that was accessed for this operation, an empty set is returned. The system does not return an error as it cannot guarantee the item does not exist on other replicas. If GetAttributes is called without being passed any attribute names, all the attributes for the item are returned. - */ - getAttributes(callback?: (err: AWSError, data: SimpleDB.Types.GetAttributesResult) => void): Request; - /** - * The ListDomains operation lists all domains associated with the Access Key ID. It returns domain names up to the limit set by MaxNumberOfDomains. A NextToken is returned if there are more than MaxNumberOfDomains domains. Calling ListDomains successive times with the NextToken provided by the operation returns up to MaxNumberOfDomains more domain names with each successive operation call. - */ - listDomains(params: SimpleDB.Types.ListDomainsRequest, callback?: (err: AWSError, data: SimpleDB.Types.ListDomainsResult) => void): Request; - /** - * The ListDomains operation lists all domains associated with the Access Key ID. It returns domain names up to the limit set by MaxNumberOfDomains. A NextToken is returned if there are more than MaxNumberOfDomains domains. Calling ListDomains successive times with the NextToken provided by the operation returns up to MaxNumberOfDomains more domain names with each successive operation call. - */ - listDomains(callback?: (err: AWSError, data: SimpleDB.Types.ListDomainsResult) => void): Request; - /** - * The PutAttributes operation creates or replaces attributes in an item. The client may specify new attributes using a combination of the Attribute.X.Name and Attribute.X.Value parameters. The client specifies the first attribute by the parameters Attribute.0.Name and Attribute.0.Value, the second attribute by the parameters Attribute.1.Name and Attribute.1.Value, and so on. Attributes are uniquely identified in an item by their name/value combination. For example, a single item can have the attributes { "first_name", "first_value" } and { "first_name", second_value" }. However, it cannot have two attribute instances where both the Attribute.X.Name and Attribute.X.Value are the same. Optionally, the requestor can supply the Replace parameter for each individual attribute. Setting this value to true causes the new attribute value to replace the existing attribute value(s). For example, if an item has the attributes { 'a', '1' }, { 'b', '2'} and { 'b', '3' } and the requestor calls PutAttributes using the attributes { 'b', '4' } with the Replace parameter set to true, the final attributes of the item are changed to { 'a', '1' } and { 'b', '4' }, which replaces the previous values of the 'b' attribute with the new value. Using PutAttributes to replace attribute values that do not exist will not result in an error response. You cannot specify an empty string as an attribute name. Because Amazon SimpleDB makes multiple copies of client data and uses an eventual consistency update model, an immediate GetAttributes or Select operation (read) immediately after a PutAttributes or DeleteAttributes operation (write) might not return the updated data. The following limitations are enforced for this operation: 256 total attribute name-value pairs per item One billion attributes per domain 10 GB of total user data storage per domain - */ - putAttributes(params: SimpleDB.Types.PutAttributesRequest, callback?: (err: AWSError, data: {}) => void): Request<{}, AWSError>; - /** - * The PutAttributes operation creates or replaces attributes in an item. The client may specify new attributes using a combination of the Attribute.X.Name and Attribute.X.Value parameters. The client specifies the first attribute by the parameters Attribute.0.Name and Attribute.0.Value, the second attribute by the parameters Attribute.1.Name and Attribute.1.Value, and so on. Attributes are uniquely identified in an item by their name/value combination. For example, a single item can have the attributes { "first_name", "first_value" } and { "first_name", second_value" }. However, it cannot have two attribute instances where both the Attribute.X.Name and Attribute.X.Value are the same. Optionally, the requestor can supply the Replace parameter for each individual attribute. Setting this value to true causes the new attribute value to replace the existing attribute value(s). For example, if an item has the attributes { 'a', '1' }, { 'b', '2'} and { 'b', '3' } and the requestor calls PutAttributes using the attributes { 'b', '4' } with the Replace parameter set to true, the final attributes of the item are changed to { 'a', '1' } and { 'b', '4' }, which replaces the previous values of the 'b' attribute with the new value. Using PutAttributes to replace attribute values that do not exist will not result in an error response. You cannot specify an empty string as an attribute name. Because Amazon SimpleDB makes multiple copies of client data and uses an eventual consistency update model, an immediate GetAttributes or Select operation (read) immediately after a PutAttributes or DeleteAttributes operation (write) might not return the updated data. The following limitations are enforced for this operation: 256 total attribute name-value pairs per item One billion attributes per domain 10 GB of total user data storage per domain - */ - putAttributes(callback?: (err: AWSError, data: {}) => void): Request<{}, AWSError>; - /** - * The Select operation returns a set of attributes for ItemNames that match the select expression. Select is similar to the standard SQL SELECT statement. The total size of the response cannot exceed 1 MB in total size. Amazon SimpleDB automatically adjusts the number of items returned per page to enforce this limit. For example, if the client asks to retrieve 2500 items, but each individual item is 10 kB in size, the system returns 100 items and an appropriate NextToken so the client can access the next page of results. For information on how to construct select expressions, see Using Select to Create Amazon SimpleDB Queries in the Developer Guide. - */ - select(params: SimpleDB.Types.SelectRequest, callback?: (err: AWSError, data: SimpleDB.Types.SelectResult) => void): Request; - /** - * The Select operation returns a set of attributes for ItemNames that match the select expression. Select is similar to the standard SQL SELECT statement. The total size of the response cannot exceed 1 MB in total size. Amazon SimpleDB automatically adjusts the number of items returned per page to enforce this limit. For example, if the client asks to retrieve 2500 items, but each individual item is 10 kB in size, the system returns 100 items and an appropriate NextToken so the client can access the next page of results. For information on how to construct select expressions, see Using Select to Create Amazon SimpleDB Queries in the Developer Guide. - */ - select(callback?: (err: AWSError, data: SimpleDB.Types.SelectResult) => void): Request; -} -declare namespace SimpleDB { - export interface Attribute { - /** - * The name of the attribute. - */ - Name: String; - /** - * - */ - AlternateNameEncoding?: String; - /** - * The value of the attribute. - */ - Value: String; - /** - * - */ - AlternateValueEncoding?: String; - } - export type AttributeList = Attribute[]; - export type AttributeNameList = String[]; - export interface BatchDeleteAttributesRequest { - /** - * The name of the domain in which the attributes are being deleted. - */ - DomainName: String; - /** - * A list of items on which to perform the operation. - */ - Items: DeletableItemList; - } - export interface BatchPutAttributesRequest { - /** - * The name of the domain in which the attributes are being stored. - */ - DomainName: String; - /** - * A list of items on which to perform the operation. - */ - Items: ReplaceableItemList; - } - export type Boolean = boolean; - export interface CreateDomainRequest { - /** - * The name of the domain to create. The name can range between 3 and 255 characters and can contain the following characters: a-z, A-Z, 0-9, '_', '-', and '.'. - */ - DomainName: String; - } - export interface DeletableAttribute { - /** - * The name of the attribute. - */ - Name: String; - /** - * The value of the attribute. - */ - Value?: String; - } - export type DeletableAttributeList = DeletableAttribute[]; - export interface DeletableItem { - Name: String; - Attributes?: DeletableAttributeList; - } - export type DeletableItemList = DeletableItem[]; - export interface DeleteAttributesRequest { - /** - * The name of the domain in which to perform the operation. - */ - DomainName: String; - /** - * The name of the item. Similar to rows on a spreadsheet, items represent individual objects that contain one or more value-attribute pairs. - */ - ItemName: String; - /** - * A list of Attributes. Similar to columns on a spreadsheet, attributes represent categories of data that can be assigned to items. - */ - Attributes?: DeletableAttributeList; - /** - * The update condition which, if specified, determines whether the specified attributes will be deleted or not. The update condition must be satisfied in order for this request to be processed and the attributes to be deleted. - */ - Expected?: UpdateCondition; - } - export interface DeleteDomainRequest { - /** - * The name of the domain to delete. - */ - DomainName: String; - } - export interface DomainMetadataRequest { - /** - * The name of the domain for which to display the metadata of. - */ - DomainName: String; - } - export interface DomainMetadataResult { - /** - * The number of all items in the domain. - */ - ItemCount?: Integer; - /** - * The total size of all item names in the domain, in bytes. - */ - ItemNamesSizeBytes?: Long; - /** - * The number of unique attribute names in the domain. - */ - AttributeNameCount?: Integer; - /** - * The total size of all unique attribute names in the domain, in bytes. - */ - AttributeNamesSizeBytes?: Long; - /** - * The number of all attribute name/value pairs in the domain. - */ - AttributeValueCount?: Integer; - /** - * The total size of all attribute values in the domain, in bytes. - */ - AttributeValuesSizeBytes?: Long; - /** - * The data and time when metadata was calculated, in Epoch (UNIX) seconds. - */ - Timestamp?: Integer; - } - export type DomainNameList = String[]; - export type Float = number; - export interface GetAttributesRequest { - /** - * The name of the domain in which to perform the operation. - */ - DomainName: String; - /** - * The name of the item. - */ - ItemName: String; - /** - * The names of the attributes. - */ - AttributeNames?: AttributeNameList; - /** - * Determines whether or not strong consistency should be enforced when data is read from SimpleDB. If true, any data previously written to SimpleDB will be returned. Otherwise, results will be consistent eventually, and the client may not see data that was written immediately before your read. - */ - ConsistentRead?: Boolean; - } - export interface GetAttributesResult { - /** - * The list of attributes returned by the operation. - */ - Attributes?: AttributeList; - } - export type Integer = number; - export interface Item { - /** - * The name of the item. - */ - Name: String; - /** - * - */ - AlternateNameEncoding?: String; - /** - * A list of attributes. - */ - Attributes: AttributeList; - } - export type ItemList = Item[]; - export interface ListDomainsRequest { - /** - * The maximum number of domain names you want returned. The range is 1 to 100. The default setting is 100. - */ - MaxNumberOfDomains?: Integer; - /** - * A string informing Amazon SimpleDB where to start the next list of domain names. - */ - NextToken?: String; - } - export interface ListDomainsResult { - /** - * A list of domain names that match the expression. - */ - DomainNames?: DomainNameList; - /** - * An opaque token indicating that there are more domains than the specified MaxNumberOfDomains still available. - */ - NextToken?: String; - } - export type Long = number; - export interface PutAttributesRequest { - /** - * The name of the domain in which to perform the operation. - */ - DomainName: String; - /** - * The name of the item. - */ - ItemName: String; - /** - * The list of attributes. - */ - Attributes: ReplaceableAttributeList; - /** - * The update condition which, if specified, determines whether the specified attributes will be updated or not. The update condition must be satisfied in order for this request to be processed and the attributes to be updated. - */ - Expected?: UpdateCondition; - } - export interface ReplaceableAttribute { - /** - * The name of the replaceable attribute. - */ - Name: String; - /** - * The value of the replaceable attribute. - */ - Value: String; - /** - * A flag specifying whether or not to replace the attribute/value pair or to add a new attribute/value pair. The default setting is false. - */ - Replace?: Boolean; - } - export type ReplaceableAttributeList = ReplaceableAttribute[]; - export interface ReplaceableItem { - /** - * The name of the replaceable item. - */ - Name: String; - /** - * The list of attributes for a replaceable item. - */ - Attributes: ReplaceableAttributeList; - } - export type ReplaceableItemList = ReplaceableItem[]; - export interface SelectRequest { - /** - * The expression used to query the domain. - */ - SelectExpression: String; - /** - * A string informing Amazon SimpleDB where to start the next list of ItemNames. - */ - NextToken?: String; - /** - * Determines whether or not strong consistency should be enforced when data is read from SimpleDB. If true, any data previously written to SimpleDB will be returned. Otherwise, results will be consistent eventually, and the client may not see data that was written immediately before your read. - */ - ConsistentRead?: Boolean; - } - export interface SelectResult { - /** - * A list of items that match the select expression. - */ - Items?: ItemList; - /** - * An opaque token indicating that more items than MaxNumberOfItems were matched, the response size exceeded 1 megabyte, or the execution time exceeded 5 seconds. - */ - NextToken?: String; - } - export type String = string; - export interface UpdateCondition { - /** - * The name of the attribute involved in the condition. - */ - Name?: String; - /** - * The value of an attribute. This value can only be specified when the Exists parameter is equal to true. - */ - Value?: String; - /** - * A value specifying whether or not the specified attribute must exist with the specified value in order for the update condition to be satisfied. Specify true if the attribute must exist for the update condition to be satisfied. Specify false if the attribute should not exist in order for the update condition to be satisfied. - */ - Exists?: Boolean; - } - /** - * A string in YYYY-MM-DD format that represents the latest possible API version that can be used in this service. Specify 'latest' to use the latest possible version. - */ - export type apiVersion = "2009-04-15"|"latest"|string; - export interface ClientApiVersions { - /** - * A string in YYYY-MM-DD format that represents the latest possible API version that can be used in this service. Specify 'latest' to use the latest possible version. - */ - apiVersion?: apiVersion; - } - export type ClientConfiguration = ServiceConfigurationOptions & ClientApiVersions; - /** - * Contains interfaces for use with the SimpleDB client. - */ - export import Types = SimpleDB; -} -export = SimpleDB; diff --git a/workshops/monte-carlo-on-ec2-spot-fleet/src/web/node_modules/aws-sdk/clients/simpledb.js b/workshops/monte-carlo-on-ec2-spot-fleet/src/web/node_modules/aws-sdk/clients/simpledb.js deleted file mode 100644 index 2baa3a40..00000000 --- a/workshops/monte-carlo-on-ec2-spot-fleet/src/web/node_modules/aws-sdk/clients/simpledb.js +++ /dev/null @@ -1,18 +0,0 @@ -require('../lib/node_loader'); -var AWS = require('../lib/core'); -var Service = AWS.Service; -var apiLoader = AWS.apiLoader; - -apiLoader.services['simpledb'] = {}; -AWS.SimpleDB = Service.defineService('simpledb', ['2009-04-15']); -Object.defineProperty(apiLoader.services['simpledb'], '2009-04-15', { - get: function get() { - var model = require('../apis/sdb-2009-04-15.min.json'); - model.paginators = require('../apis/sdb-2009-04-15.paginators.json').pagination; - return model; - }, - enumerable: true, - configurable: true -}); - -module.exports = AWS.SimpleDB; diff --git a/workshops/monte-carlo-on-ec2-spot-fleet/src/web/node_modules/aws-sdk/clients/sms.d.ts b/workshops/monte-carlo-on-ec2-spot-fleet/src/web/node_modules/aws-sdk/clients/sms.d.ts deleted file mode 100644 index ac20f188..00000000 --- a/workshops/monte-carlo-on-ec2-spot-fleet/src/web/node_modules/aws-sdk/clients/sms.d.ts +++ /dev/null @@ -1,296 +0,0 @@ -import {Request} from '../lib/request'; -import {Response} from '../lib/response'; -import {AWSError} from '../lib/error'; -import {Service} from '../lib/service'; -import {ServiceConfigurationOptions} from '../lib/service'; -import {ConfigBase as Config} from '../lib/config'; -interface Blob {} -declare class SMS extends Service { - /** - * Constructs a service object. This object has one method for each API operation. - */ - constructor(options?: SMS.Types.ClientConfiguration) - config: Config & SMS.Types.ClientConfiguration; - /** - * The CreateReplicationJob API is used to create a ReplicationJob to replicate a server on AWS. Call this API to first create a ReplicationJob, which will then schedule periodic ReplicationRuns to replicate your server to AWS. Each ReplicationRun will result in the creation of an AWS AMI. - */ - createReplicationJob(params: SMS.Types.CreateReplicationJobRequest, callback?: (err: AWSError, data: SMS.Types.CreateReplicationJobResponse) => void): Request; - /** - * The CreateReplicationJob API is used to create a ReplicationJob to replicate a server on AWS. Call this API to first create a ReplicationJob, which will then schedule periodic ReplicationRuns to replicate your server to AWS. Each ReplicationRun will result in the creation of an AWS AMI. - */ - createReplicationJob(callback?: (err: AWSError, data: SMS.Types.CreateReplicationJobResponse) => void): Request; - /** - * The DeleteReplicationJob API is used to delete a ReplicationJob, resulting in no further ReplicationRuns. This will delete the contents of the S3 bucket used to store SMS artifacts, but will not delete any AMIs created by the SMS service. - */ - deleteReplicationJob(params: SMS.Types.DeleteReplicationJobRequest, callback?: (err: AWSError, data: SMS.Types.DeleteReplicationJobResponse) => void): Request; - /** - * The DeleteReplicationJob API is used to delete a ReplicationJob, resulting in no further ReplicationRuns. This will delete the contents of the S3 bucket used to store SMS artifacts, but will not delete any AMIs created by the SMS service. - */ - deleteReplicationJob(callback?: (err: AWSError, data: SMS.Types.DeleteReplicationJobResponse) => void): Request; - /** - * The DeleteServerCatalog API clears all servers from your server catalog. This means that these servers will no longer be accessible to the Server Migration Service. - */ - deleteServerCatalog(params: SMS.Types.DeleteServerCatalogRequest, callback?: (err: AWSError, data: SMS.Types.DeleteServerCatalogResponse) => void): Request; - /** - * The DeleteServerCatalog API clears all servers from your server catalog. This means that these servers will no longer be accessible to the Server Migration Service. - */ - deleteServerCatalog(callback?: (err: AWSError, data: SMS.Types.DeleteServerCatalogResponse) => void): Request; - /** - * The DisassociateConnector API will disassociate a connector from the Server Migration Service, rendering it unavailable to support replication jobs. - */ - disassociateConnector(params: SMS.Types.DisassociateConnectorRequest, callback?: (err: AWSError, data: SMS.Types.DisassociateConnectorResponse) => void): Request; - /** - * The DisassociateConnector API will disassociate a connector from the Server Migration Service, rendering it unavailable to support replication jobs. - */ - disassociateConnector(callback?: (err: AWSError, data: SMS.Types.DisassociateConnectorResponse) => void): Request; - /** - * The GetConnectors API returns a list of connectors that are registered with the Server Migration Service. - */ - getConnectors(params: SMS.Types.GetConnectorsRequest, callback?: (err: AWSError, data: SMS.Types.GetConnectorsResponse) => void): Request; - /** - * The GetConnectors API returns a list of connectors that are registered with the Server Migration Service. - */ - getConnectors(callback?: (err: AWSError, data: SMS.Types.GetConnectorsResponse) => void): Request; - /** - * The GetReplicationJobs API will return all of your ReplicationJobs and their details. This API returns a paginated list, that may be consecutively called with nextToken to retrieve all ReplicationJobs. - */ - getReplicationJobs(params: SMS.Types.GetReplicationJobsRequest, callback?: (err: AWSError, data: SMS.Types.GetReplicationJobsResponse) => void): Request; - /** - * The GetReplicationJobs API will return all of your ReplicationJobs and their details. This API returns a paginated list, that may be consecutively called with nextToken to retrieve all ReplicationJobs. - */ - getReplicationJobs(callback?: (err: AWSError, data: SMS.Types.GetReplicationJobsResponse) => void): Request; - /** - * The GetReplicationRuns API will return all ReplicationRuns for a given ReplicationJob. This API returns a paginated list, that may be consecutively called with nextToken to retrieve all ReplicationRuns for a ReplicationJob. - */ - getReplicationRuns(params: SMS.Types.GetReplicationRunsRequest, callback?: (err: AWSError, data: SMS.Types.GetReplicationRunsResponse) => void): Request; - /** - * The GetReplicationRuns API will return all ReplicationRuns for a given ReplicationJob. This API returns a paginated list, that may be consecutively called with nextToken to retrieve all ReplicationRuns for a ReplicationJob. - */ - getReplicationRuns(callback?: (err: AWSError, data: SMS.Types.GetReplicationRunsResponse) => void): Request; - /** - * The GetServers API returns a list of all servers in your server catalog. For this call to succeed, you must previously have called ImportServerCatalog. - */ - getServers(params: SMS.Types.GetServersRequest, callback?: (err: AWSError, data: SMS.Types.GetServersResponse) => void): Request; - /** - * The GetServers API returns a list of all servers in your server catalog. For this call to succeed, you must previously have called ImportServerCatalog. - */ - getServers(callback?: (err: AWSError, data: SMS.Types.GetServersResponse) => void): Request; - /** - * The ImportServerCatalog API is used to gather the complete list of on-premises servers on your premises. This API call requires connectors to be installed and monitoring all servers you would like imported. This API call returns immediately, but may take some time to retrieve all of the servers. - */ - importServerCatalog(params: SMS.Types.ImportServerCatalogRequest, callback?: (err: AWSError, data: SMS.Types.ImportServerCatalogResponse) => void): Request; - /** - * The ImportServerCatalog API is used to gather the complete list of on-premises servers on your premises. This API call requires connectors to be installed and monitoring all servers you would like imported. This API call returns immediately, but may take some time to retrieve all of the servers. - */ - importServerCatalog(callback?: (err: AWSError, data: SMS.Types.ImportServerCatalogResponse) => void): Request; - /** - * The StartOnDemandReplicationRun API is used to start a ReplicationRun on demand (in addition to those that are scheduled based on your frequency). This ReplicationRun will start immediately. StartOnDemandReplicationRun is subject to limits on how many on demand ReplicationRuns you may call per 24-hour period. - */ - startOnDemandReplicationRun(params: SMS.Types.StartOnDemandReplicationRunRequest, callback?: (err: AWSError, data: SMS.Types.StartOnDemandReplicationRunResponse) => void): Request; - /** - * The StartOnDemandReplicationRun API is used to start a ReplicationRun on demand (in addition to those that are scheduled based on your frequency). This ReplicationRun will start immediately. StartOnDemandReplicationRun is subject to limits on how many on demand ReplicationRuns you may call per 24-hour period. - */ - startOnDemandReplicationRun(callback?: (err: AWSError, data: SMS.Types.StartOnDemandReplicationRunResponse) => void): Request; - /** - * The UpdateReplicationJob API is used to change the settings of your existing ReplicationJob created using CreateReplicationJob. Calling this API will affect the next scheduled ReplicationRun. - */ - updateReplicationJob(params: SMS.Types.UpdateReplicationJobRequest, callback?: (err: AWSError, data: SMS.Types.UpdateReplicationJobResponse) => void): Request; - /** - * The UpdateReplicationJob API is used to change the settings of your existing ReplicationJob created using CreateReplicationJob. Calling this API will affect the next scheduled ReplicationRun. - */ - updateReplicationJob(callback?: (err: AWSError, data: SMS.Types.UpdateReplicationJobResponse) => void): Request; -} -declare namespace SMS { - export type AmiId = string; - export interface Connector { - connectorId?: ConnectorId; - version?: ConnectorVersion; - status?: ConnectorStatus; - capabilityList?: ConnectorCapabilityList; - vmManagerName?: VmManagerName; - vmManagerType?: VmManagerType; - vmManagerId?: VmManagerId; - ipAddress?: IpAddress; - macAddress?: MacAddress; - associatedOn?: Timestamp; - } - export type ConnectorCapability = "VSPHERE"|string; - export type ConnectorCapabilityList = ConnectorCapability[]; - export type ConnectorId = string; - export type ConnectorList = Connector[]; - export type ConnectorStatus = "HEALTHY"|"UNHEALTHY"|string; - export type ConnectorVersion = string; - export interface CreateReplicationJobRequest { - serverId: ServerId; - seedReplicationTime: Timestamp; - frequency: Frequency; - licenseType?: LicenseType; - roleName?: RoleName; - description?: Description; - } - export interface CreateReplicationJobResponse { - replicationJobId?: ReplicationJobId; - } - export interface DeleteReplicationJobRequest { - replicationJobId: ReplicationJobId; - } - export interface DeleteReplicationJobResponse { - } - export interface DeleteServerCatalogRequest { - } - export interface DeleteServerCatalogResponse { - } - export type Description = string; - export interface DisassociateConnectorRequest { - connectorId: ConnectorId; - } - export interface DisassociateConnectorResponse { - } - export type ErrorMessage = string; - export type Frequency = number; - export interface GetConnectorsRequest { - nextToken?: NextToken; - maxResults?: MaxResults; - } - export interface GetConnectorsResponse { - connectorList?: ConnectorList; - nextToken?: NextToken; - } - export interface GetReplicationJobsRequest { - replicationJobId?: ReplicationJobId; - nextToken?: NextToken; - maxResults?: MaxResults; - } - export interface GetReplicationJobsResponse { - replicationJobList?: ReplicationJobList; - nextToken?: NextToken; - } - export interface GetReplicationRunsRequest { - replicationJobId: ReplicationJobId; - nextToken?: NextToken; - maxResults?: MaxResults; - } - export interface GetReplicationRunsResponse { - replicationJob?: ReplicationJob; - replicationRunList?: ReplicationRunList; - nextToken?: NextToken; - } - export interface GetServersRequest { - nextToken?: NextToken; - maxResults?: MaxResults; - } - export interface GetServersResponse { - lastModifiedOn?: Timestamp; - serverCatalogStatus?: ServerCatalogStatus; - serverList?: ServerList; - nextToken?: NextToken; - } - export interface ImportServerCatalogRequest { - } - export interface ImportServerCatalogResponse { - } - export type IpAddress = string; - export type LicenseType = "AWS"|"BYOL"|string; - export type MacAddress = string; - export type MaxResults = number; - export type NextToken = string; - export interface ReplicationJob { - replicationJobId?: ReplicationJobId; - serverId?: ServerId; - serverType?: ServerType; - vmServer?: VmServer; - seedReplicationTime?: Timestamp; - frequency?: Frequency; - nextReplicationRunStartTime?: Timestamp; - licenseType?: LicenseType; - roleName?: RoleName; - latestAmiId?: AmiId; - state?: ReplicationJobState; - statusMessage?: ReplicationJobStatusMessage; - description?: Description; - replicationRunList?: ReplicationRunList; - } - export type ReplicationJobId = string; - export type ReplicationJobList = ReplicationJob[]; - export type ReplicationJobState = "PENDING"|"ACTIVE"|"FAILED"|"DELETING"|"DELETED"|string; - export type ReplicationJobStatusMessage = string; - export type ReplicationJobTerminated = boolean; - export interface ReplicationRun { - replicationRunId?: ReplicationRunId; - state?: ReplicationRunState; - type?: ReplicationRunType; - statusMessage?: ReplicationRunStatusMessage; - amiId?: AmiId; - scheduledStartTime?: Timestamp; - completedTime?: Timestamp; - description?: Description; - } - export type ReplicationRunId = string; - export type ReplicationRunList = ReplicationRun[]; - export type ReplicationRunState = "PENDING"|"MISSED"|"ACTIVE"|"FAILED"|"COMPLETED"|"DELETING"|"DELETED"|string; - export type ReplicationRunStatusMessage = string; - export type ReplicationRunType = "ON_DEMAND"|"AUTOMATIC"|string; - export type RoleName = string; - export interface Server { - serverId?: ServerId; - serverType?: ServerType; - vmServer?: VmServer; - replicationJobId?: ReplicationJobId; - replicationJobTerminated?: ReplicationJobTerminated; - } - export type ServerCatalogStatus = "NOT_IMPORTED"|"IMPORTING"|"AVAILABLE"|"DELETED"|"EXPIRED"|string; - export type ServerId = string; - export type ServerList = Server[]; - export type ServerType = "VIRTUAL_MACHINE"|string; - export interface StartOnDemandReplicationRunRequest { - replicationJobId: ReplicationJobId; - description?: Description; - } - export interface StartOnDemandReplicationRunResponse { - replicationRunId?: ReplicationRunId; - } - export type Timestamp = Date; - export interface UpdateReplicationJobRequest { - replicationJobId: ReplicationJobId; - frequency?: Frequency; - nextReplicationRunStartTime?: Timestamp; - licenseType?: LicenseType; - roleName?: RoleName; - description?: Description; - } - export interface UpdateReplicationJobResponse { - } - export type VmId = string; - export type VmManagerId = string; - export type VmManagerName = string; - export type VmManagerType = "VSPHERE"|string; - export type VmName = string; - export type VmPath = string; - export interface VmServer { - vmServerAddress?: VmServerAddress; - vmName?: VmName; - vmManagerName?: VmManagerName; - vmManagerType?: VmManagerType; - vmPath?: VmPath; - } - export interface VmServerAddress { - vmManagerId?: VmManagerId; - vmId?: VmId; - } - /** - * A string in YYYY-MM-DD format that represents the latest possible API version that can be used in this service. Specify 'latest' to use the latest possible version. - */ - export type apiVersion = "2016-10-24"|"latest"|string; - export interface ClientApiVersions { - /** - * A string in YYYY-MM-DD format that represents the latest possible API version that can be used in this service. Specify 'latest' to use the latest possible version. - */ - apiVersion?: apiVersion; - } - export type ClientConfiguration = ServiceConfigurationOptions & ClientApiVersions; - /** - * Contains interfaces for use with the SMS client. - */ - export import Types = SMS; -} -export = SMS; diff --git a/workshops/monte-carlo-on-ec2-spot-fleet/src/web/node_modules/aws-sdk/clients/sms.js b/workshops/monte-carlo-on-ec2-spot-fleet/src/web/node_modules/aws-sdk/clients/sms.js deleted file mode 100644 index 9dc4ba9b..00000000 --- a/workshops/monte-carlo-on-ec2-spot-fleet/src/web/node_modules/aws-sdk/clients/sms.js +++ /dev/null @@ -1,18 +0,0 @@ -require('../lib/node_loader'); -var AWS = require('../lib/core'); -var Service = AWS.Service; -var apiLoader = AWS.apiLoader; - -apiLoader.services['sms'] = {}; -AWS.SMS = Service.defineService('sms', ['2016-10-24']); -Object.defineProperty(apiLoader.services['sms'], '2016-10-24', { - get: function get() { - var model = require('../apis/sms-2016-10-24.min.json'); - model.paginators = require('../apis/sms-2016-10-24.paginators.json').pagination; - return model; - }, - enumerable: true, - configurable: true -}); - -module.exports = AWS.SMS; diff --git a/workshops/monte-carlo-on-ec2-spot-fleet/src/web/node_modules/aws-sdk/clients/snowball.d.ts b/workshops/monte-carlo-on-ec2-spot-fleet/src/web/node_modules/aws-sdk/clients/snowball.d.ts deleted file mode 100644 index 1dc84840..00000000 --- a/workshops/monte-carlo-on-ec2-spot-fleet/src/web/node_modules/aws-sdk/clients/snowball.d.ts +++ /dev/null @@ -1,909 +0,0 @@ -import {Request} from '../lib/request'; -import {Response} from '../lib/response'; -import {AWSError} from '../lib/error'; -import {Service} from '../lib/service'; -import {ServiceConfigurationOptions} from '../lib/service'; -import {ConfigBase as Config} from '../lib/config'; -interface Blob {} -declare class Snowball extends Service { - /** - * Constructs a service object. This object has one method for each API operation. - */ - constructor(options?: Snowball.Types.ClientConfiguration) - config: Config & Snowball.Types.ClientConfiguration; - /** - * Cancels a cluster job. You can only cancel a cluster job while it's in the AwaitingQuorum status. You'll have at least an hour after creating a cluster job to cancel it. - */ - cancelCluster(params: Snowball.Types.CancelClusterRequest, callback?: (err: AWSError, data: Snowball.Types.CancelClusterResult) => void): Request; - /** - * Cancels a cluster job. You can only cancel a cluster job while it's in the AwaitingQuorum status. You'll have at least an hour after creating a cluster job to cancel it. - */ - cancelCluster(callback?: (err: AWSError, data: Snowball.Types.CancelClusterResult) => void): Request; - /** - * Cancels the specified job. You can only cancel a job before its JobState value changes to PreparingAppliance. Requesting the ListJobs or DescribeJob action will return a job's JobState as part of the response element data returned. - */ - cancelJob(params: Snowball.Types.CancelJobRequest, callback?: (err: AWSError, data: Snowball.Types.CancelJobResult) => void): Request; - /** - * Cancels the specified job. You can only cancel a job before its JobState value changes to PreparingAppliance. Requesting the ListJobs or DescribeJob action will return a job's JobState as part of the response element data returned. - */ - cancelJob(callback?: (err: AWSError, data: Snowball.Types.CancelJobResult) => void): Request; - /** - * Creates an address for a Snowball to be shipped to. In most regions, addresses are validated at the time of creation. The address you provide must be located within the serviceable area of your region. If the address is invalid or unsupported, then an exception is thrown. - */ - createAddress(params: Snowball.Types.CreateAddressRequest, callback?: (err: AWSError, data: Snowball.Types.CreateAddressResult) => void): Request; - /** - * Creates an address for a Snowball to be shipped to. In most regions, addresses are validated at the time of creation. The address you provide must be located within the serviceable area of your region. If the address is invalid or unsupported, then an exception is thrown. - */ - createAddress(callback?: (err: AWSError, data: Snowball.Types.CreateAddressResult) => void): Request; - /** - * Creates an empty cluster. Each cluster supports five nodes. You use the CreateJob action separately to create the jobs for each of these nodes. The cluster does not ship until these five node jobs have been created. - */ - createCluster(params: Snowball.Types.CreateClusterRequest, callback?: (err: AWSError, data: Snowball.Types.CreateClusterResult) => void): Request; - /** - * Creates an empty cluster. Each cluster supports five nodes. You use the CreateJob action separately to create the jobs for each of these nodes. The cluster does not ship until these five node jobs have been created. - */ - createCluster(callback?: (err: AWSError, data: Snowball.Types.CreateClusterResult) => void): Request; - /** - * Creates a job to import or export data between Amazon S3 and your on-premises data center. Your AWS account must have the right trust policies and permissions in place to create a job for Snowball. If you're creating a job for a node in a cluster, you only need to provide the clusterId value; the other job attributes are inherited from the cluster. - */ - createJob(params: Snowball.Types.CreateJobRequest, callback?: (err: AWSError, data: Snowball.Types.CreateJobResult) => void): Request; - /** - * Creates a job to import or export data between Amazon S3 and your on-premises data center. Your AWS account must have the right trust policies and permissions in place to create a job for Snowball. If you're creating a job for a node in a cluster, you only need to provide the clusterId value; the other job attributes are inherited from the cluster. - */ - createJob(callback?: (err: AWSError, data: Snowball.Types.CreateJobResult) => void): Request; - /** - * Takes an AddressId and returns specific details about that address in the form of an Address object. - */ - describeAddress(params: Snowball.Types.DescribeAddressRequest, callback?: (err: AWSError, data: Snowball.Types.DescribeAddressResult) => void): Request; - /** - * Takes an AddressId and returns specific details about that address in the form of an Address object. - */ - describeAddress(callback?: (err: AWSError, data: Snowball.Types.DescribeAddressResult) => void): Request; - /** - * Returns a specified number of ADDRESS objects. Calling this API in one of the US regions will return addresses from the list of all addresses associated with this account in all US regions. - */ - describeAddresses(params: Snowball.Types.DescribeAddressesRequest, callback?: (err: AWSError, data: Snowball.Types.DescribeAddressesResult) => void): Request; - /** - * Returns a specified number of ADDRESS objects. Calling this API in one of the US regions will return addresses from the list of all addresses associated with this account in all US regions. - */ - describeAddresses(callback?: (err: AWSError, data: Snowball.Types.DescribeAddressesResult) => void): Request; - /** - * Returns information about a specific cluster including shipping information, cluster status, and other important metadata. - */ - describeCluster(params: Snowball.Types.DescribeClusterRequest, callback?: (err: AWSError, data: Snowball.Types.DescribeClusterResult) => void): Request; - /** - * Returns information about a specific cluster including shipping information, cluster status, and other important metadata. - */ - describeCluster(callback?: (err: AWSError, data: Snowball.Types.DescribeClusterResult) => void): Request; - /** - * Returns information about a specific job including shipping information, job status, and other important metadata. - */ - describeJob(params: Snowball.Types.DescribeJobRequest, callback?: (err: AWSError, data: Snowball.Types.DescribeJobResult) => void): Request; - /** - * Returns information about a specific job including shipping information, job status, and other important metadata. - */ - describeJob(callback?: (err: AWSError, data: Snowball.Types.DescribeJobResult) => void): Request; - /** - * Returns a link to an Amazon S3 presigned URL for the manifest file associated with the specified JobId value. You can access the manifest file for up to 60 minutes after this request has been made. To access the manifest file after 60 minutes have passed, you'll have to make another call to the GetJobManifest action. The manifest is an encrypted file that you can download after your job enters the WithCustomer status. The manifest is decrypted by using the UnlockCode code value, when you pass both values to the Snowball through the Snowball client when the client is started for the first time. As a best practice, we recommend that you don't save a copy of an UnlockCode value in the same location as the manifest file for that job. Saving these separately helps prevent unauthorized parties from gaining access to the Snowball associated with that job. The credentials of a given job, including its manifest file and unlock code, expire 90 days after the job is created. - */ - getJobManifest(params: Snowball.Types.GetJobManifestRequest, callback?: (err: AWSError, data: Snowball.Types.GetJobManifestResult) => void): Request; - /** - * Returns a link to an Amazon S3 presigned URL for the manifest file associated with the specified JobId value. You can access the manifest file for up to 60 minutes after this request has been made. To access the manifest file after 60 minutes have passed, you'll have to make another call to the GetJobManifest action. The manifest is an encrypted file that you can download after your job enters the WithCustomer status. The manifest is decrypted by using the UnlockCode code value, when you pass both values to the Snowball through the Snowball client when the client is started for the first time. As a best practice, we recommend that you don't save a copy of an UnlockCode value in the same location as the manifest file for that job. Saving these separately helps prevent unauthorized parties from gaining access to the Snowball associated with that job. The credentials of a given job, including its manifest file and unlock code, expire 90 days after the job is created. - */ - getJobManifest(callback?: (err: AWSError, data: Snowball.Types.GetJobManifestResult) => void): Request; - /** - * Returns the UnlockCode code value for the specified job. A particular UnlockCode value can be accessed for up to 90 days after the associated job has been created. The UnlockCode value is a 29-character code with 25 alphanumeric characters and 4 hyphens. This code is used to decrypt the manifest file when it is passed along with the manifest to the Snowball through the Snowball client when the client is started for the first time. As a best practice, we recommend that you don't save a copy of the UnlockCode in the same location as the manifest file for that job. Saving these separately helps prevent unauthorized parties from gaining access to the Snowball associated with that job. - */ - getJobUnlockCode(params: Snowball.Types.GetJobUnlockCodeRequest, callback?: (err: AWSError, data: Snowball.Types.GetJobUnlockCodeResult) => void): Request; - /** - * Returns the UnlockCode code value for the specified job. A particular UnlockCode value can be accessed for up to 90 days after the associated job has been created. The UnlockCode value is a 29-character code with 25 alphanumeric characters and 4 hyphens. This code is used to decrypt the manifest file when it is passed along with the manifest to the Snowball through the Snowball client when the client is started for the first time. As a best practice, we recommend that you don't save a copy of the UnlockCode in the same location as the manifest file for that job. Saving these separately helps prevent unauthorized parties from gaining access to the Snowball associated with that job. - */ - getJobUnlockCode(callback?: (err: AWSError, data: Snowball.Types.GetJobUnlockCodeResult) => void): Request; - /** - * Returns information about the Snowball service limit for your account, and also the number of Snowballs your account has in use. The default service limit for the number of Snowballs that you can have at one time is 1. If you want to increase your service limit, contact AWS Support. - */ - getSnowballUsage(params: Snowball.Types.GetSnowballUsageRequest, callback?: (err: AWSError, data: Snowball.Types.GetSnowballUsageResult) => void): Request; - /** - * Returns information about the Snowball service limit for your account, and also the number of Snowballs your account has in use. The default service limit for the number of Snowballs that you can have at one time is 1. If you want to increase your service limit, contact AWS Support. - */ - getSnowballUsage(callback?: (err: AWSError, data: Snowball.Types.GetSnowballUsageResult) => void): Request; - /** - * Returns an array of JobListEntry objects of the specified length. Each JobListEntry object is for a job in the specified cluster and contains a job's state, a job's ID, and other information. - */ - listClusterJobs(params: Snowball.Types.ListClusterJobsRequest, callback?: (err: AWSError, data: Snowball.Types.ListClusterJobsResult) => void): Request; - /** - * Returns an array of JobListEntry objects of the specified length. Each JobListEntry object is for a job in the specified cluster and contains a job's state, a job's ID, and other information. - */ - listClusterJobs(callback?: (err: AWSError, data: Snowball.Types.ListClusterJobsResult) => void): Request; - /** - * Returns an array of ClusterListEntry objects of the specified length. Each ClusterListEntry object contains a cluster's state, a cluster's ID, and other important status information. - */ - listClusters(params: Snowball.Types.ListClustersRequest, callback?: (err: AWSError, data: Snowball.Types.ListClustersResult) => void): Request; - /** - * Returns an array of ClusterListEntry objects of the specified length. Each ClusterListEntry object contains a cluster's state, a cluster's ID, and other important status information. - */ - listClusters(callback?: (err: AWSError, data: Snowball.Types.ListClustersResult) => void): Request; - /** - * Returns an array of JobListEntry objects of the specified length. Each JobListEntry object contains a job's state, a job's ID, and a value that indicates whether the job is a job part, in the case of export jobs. Calling this API action in one of the US regions will return jobs from the list of all jobs associated with this account in all US regions. - */ - listJobs(params: Snowball.Types.ListJobsRequest, callback?: (err: AWSError, data: Snowball.Types.ListJobsResult) => void): Request; - /** - * Returns an array of JobListEntry objects of the specified length. Each JobListEntry object contains a job's state, a job's ID, and a value that indicates whether the job is a job part, in the case of export jobs. Calling this API action in one of the US regions will return jobs from the list of all jobs associated with this account in all US regions. - */ - listJobs(callback?: (err: AWSError, data: Snowball.Types.ListJobsResult) => void): Request; - /** - * While a cluster's ClusterState value is in the AwaitingQuorum state, you can update some of the information associated with a cluster. Once the cluster changes to a different job state, usually 60 minutes after the cluster being created, this action is no longer available. - */ - updateCluster(params: Snowball.Types.UpdateClusterRequest, callback?: (err: AWSError, data: Snowball.Types.UpdateClusterResult) => void): Request; - /** - * While a cluster's ClusterState value is in the AwaitingQuorum state, you can update some of the information associated with a cluster. Once the cluster changes to a different job state, usually 60 minutes after the cluster being created, this action is no longer available. - */ - updateCluster(callback?: (err: AWSError, data: Snowball.Types.UpdateClusterResult) => void): Request; - /** - * While a job's JobState value is New, you can update some of the information associated with a job. Once the job changes to a different job state, usually within 60 minutes of the job being created, this action is no longer available. - */ - updateJob(params: Snowball.Types.UpdateJobRequest, callback?: (err: AWSError, data: Snowball.Types.UpdateJobResult) => void): Request; - /** - * While a job's JobState value is New, you can update some of the information associated with a job. Once the job changes to a different job state, usually within 60 minutes of the job being created, this action is no longer available. - */ - updateJob(callback?: (err: AWSError, data: Snowball.Types.UpdateJobResult) => void): Request; -} -declare namespace Snowball { - export interface Address { - /** - * The unique ID for an address. - */ - AddressId?: AddressId; - /** - * The name of a person to receive a Snowball at an address. - */ - Name?: String; - /** - * The name of the company to receive a Snowball at an address. - */ - Company?: String; - /** - * The first line in a street address that a Snowball is to be delivered to. - */ - Street1?: String; - /** - * The second line in a street address that a Snowball is to be delivered to. - */ - Street2?: String; - /** - * The third line in a street address that a Snowball is to be delivered to. - */ - Street3?: String; - /** - * The city in an address that a Snowball is to be delivered to. - */ - City?: String; - /** - * The state or province in an address that a Snowball is to be delivered to. - */ - StateOrProvince?: String; - /** - * This field is no longer used and the value is ignored. - */ - PrefectureOrDistrict?: String; - /** - * This field is no longer used and the value is ignored. - */ - Landmark?: String; - /** - * The country in an address that a Snowball is to be delivered to. - */ - Country?: String; - /** - * The postal code in an address that a Snowball is to be delivered to. - */ - PostalCode?: String; - /** - * The phone number associated with an address that a Snowball is to be delivered to. - */ - PhoneNumber?: String; - /** - * If the address you are creating is a primary address, then set this option to true. This field is not supported in most regions. - */ - IsRestricted?: Boolean; - } - export type AddressId = string; - export type AddressList = Address[]; - export type Boolean = boolean; - export interface CancelClusterRequest { - /** - * The 39-character ID for the cluster that you want to cancel, for example CID123e4567-e89b-12d3-a456-426655440000. - */ - ClusterId: ClusterId; - } - export interface CancelClusterResult { - } - export interface CancelJobRequest { - /** - * The 39-character job ID for the job that you want to cancel, for example JID123e4567-e89b-12d3-a456-426655440000. - */ - JobId: JobId; - } - export interface CancelJobResult { - } - export type ClusterId = string; - export interface ClusterListEntry { - /** - * The 39-character ID for the cluster that you want to list, for example CID123e4567-e89b-12d3-a456-426655440000. - */ - ClusterId?: String; - /** - * The current state of this cluster. For information about the state of a specific node, see JobListEntry$JobState. - */ - ClusterState?: ClusterState; - /** - * The creation date for this cluster. - */ - CreationDate?: Timestamp; - /** - * Defines an optional description of the cluster, for example Environmental Data Cluster-01. - */ - Description?: String; - } - export type ClusterListEntryList = ClusterListEntry[]; - export interface ClusterMetadata { - /** - * The automatically generated ID for a cluster. - */ - ClusterId?: String; - /** - * The optional description of the cluster. - */ - Description?: String; - /** - * The KmsKeyARN Amazon Resource Name (ARN) associated with this cluster. This ARN was created using the CreateKey API action in AWS Key Management Service (AWS KMS). - */ - KmsKeyARN?: KmsKeyARN; - /** - * The role ARN associated with this cluster. This ARN was created using the CreateRole API action in AWS Identity and Access Management (IAM). - */ - RoleARN?: RoleARN; - /** - * The current status of the cluster. - */ - ClusterState?: ClusterState; - /** - * The type of job for this cluster. Currently, the only job type supported for clusters is LOCAL_USE. - */ - JobType?: JobType; - /** - * The type of AWS Snowball appliance to use for this cluster. Currently, the only supported appliance type for cluster jobs is EDGE. - */ - SnowballType?: SnowballType; - /** - * The creation date for this cluster. - */ - CreationDate?: Timestamp; - /** - * The arrays of JobResource objects that can include updated S3Resource objects or LambdaResource objects. - */ - Resources?: JobResource; - /** - * The automatically generated ID for a specific address. - */ - AddressId?: AddressId; - /** - * The shipping speed for each node in this cluster. This speed doesn't dictate how soon you'll get each Snowball Edge appliance, rather it represents how quickly each appliance moves to its destination while in transit. Regional shipping speeds are as follows: In Australia, you have access to express shipping. Typically, appliances shipped express are delivered in about a day. In the European Union (EU), you have access to express shipping. Typically, Snowball Edges shipped express are delivered in about a day. In addition, most countries in the EU have access to standard shipping, which typically takes less than a week, one way. In India, Snowball Edges are delivered in one to seven days. In the US, you have access to one-day shipping and two-day shipping. - */ - ShippingOption?: ShippingOption; - /** - * The Amazon Simple Notification Service (Amazon SNS) notification settings for this cluster. - */ - Notification?: Notification; - /** - * The ID of the address that you want a cluster shipped to, after it will be shipped to its primary address. This field is not supported in most regions. - */ - ForwardingAddressId?: AddressId; - } - export type ClusterState = "AwaitingQuorum"|"Pending"|"InUse"|"Complete"|"Cancelled"|string; - export interface CreateAddressRequest { - /** - * The address that you want the Snowball shipped to. - */ - Address: Address; - } - export interface CreateAddressResult { - /** - * The automatically generated ID for a specific address. You'll use this ID when you create a job to specify which address you want the Snowball for that job shipped to. - */ - AddressId?: String; - } - export interface CreateClusterRequest { - /** - * The type of job for this cluster. Currently, the only job type supported for clusters is LOCAL_USE. - */ - JobType: JobType; - /** - * The resources associated with the cluster job. These resources include Amazon S3 buckets and optional AWS Lambda functions written in the Python language. - */ - Resources: JobResource; - /** - * An optional description of this specific cluster, for example Environmental Data Cluster-01. - */ - Description?: String; - /** - * The ID for the address that you want the cluster shipped to.> - */ - AddressId: AddressId; - /** - * The KmsKeyARN value that you want to associate with this cluster. KmsKeyARN values are created by using the CreateKey API action in AWS Key Management Service (AWS KMS). - */ - KmsKeyARN?: KmsKeyARN; - /** - * The RoleARN that you want to associate with this cluster. RoleArn values are created by using the CreateRole API action in AWS Identity and Access Management (IAM). - */ - RoleARN: RoleARN; - /** - * The type of AWS Snowball appliance to use for this cluster. Currently, the only supported appliance type for cluster jobs is EDGE. - */ - SnowballType?: SnowballType; - /** - * The shipping speed for each node in this cluster. This speed doesn't dictate how soon you'll get each Snowball Edge appliance, rather it represents how quickly each appliance moves to its destination while in transit. Regional shipping speeds are as follows: In Australia, you have access to express shipping. Typically, appliances shipped express are delivered in about a day. In the European Union (EU), you have access to express shipping. Typically, Snowball Edges shipped express are delivered in about a day. In addition, most countries in the EU have access to standard shipping, which typically takes less than a week, one way. In India, Snowball Edges are delivered in one to seven days. In the US, you have access to one-day shipping and two-day shipping. - */ - ShippingOption: ShippingOption; - /** - * The Amazon Simple Notification Service (Amazon SNS) notification settings for this cluster. - */ - Notification?: Notification; - /** - * The forwarding address ID for a cluster. This field is not supported in most regions. - */ - ForwardingAddressId?: AddressId; - } - export interface CreateClusterResult { - /** - * The automatically generated ID for a cluster. - */ - ClusterId?: ClusterId; - } - export interface CreateJobRequest { - /** - * Defines the type of job that you're creating. - */ - JobType?: JobType; - /** - * Defines the Amazon S3 buckets associated with this job. With IMPORT jobs, you specify the bucket or buckets that your transferred data will be imported into. With EXPORT jobs, you specify the bucket or buckets that your transferred data will be exported from. Optionally, you can also specify a KeyRange value. If you choose to export a range, you define the length of the range by providing either an inclusive BeginMarker value, an inclusive EndMarker value, or both. Ranges are UTF-8 binary sorted. - */ - Resources?: JobResource; - /** - * Defines an optional description of this specific job, for example Important Photos 2016-08-11. - */ - Description?: String; - /** - * The ID for the address that you want the Snowball shipped to. - */ - AddressId?: AddressId; - /** - * The KmsKeyARN that you want to associate with this job. KmsKeyARNs are created using the CreateKey AWS Key Management Service (KMS) API action. - */ - KmsKeyARN?: KmsKeyARN; - /** - * The RoleARN that you want to associate with this job. RoleArns are created using the CreateRole AWS Identity and Access Management (IAM) API action. - */ - RoleARN?: RoleARN; - /** - * If your job is being created in one of the US regions, you have the option of specifying what size Snowball you'd like for this job. In all other regions, Snowballs come with 80 TB in storage capacity. - */ - SnowballCapacityPreference?: SnowballCapacity; - /** - * The shipping speed for this job. This speed doesn't dictate how soon you'll get the Snowball, rather it represents how quickly the Snowball moves to its destination while in transit. Regional shipping speeds are as follows: In Australia, you have access to express shipping. Typically, Snowballs shipped express are delivered in about a day. In the European Union (EU), you have access to express shipping. Typically, Snowballs shipped express are delivered in about a day. In addition, most countries in the EU have access to standard shipping, which typically takes less than a week, one way. In India, Snowballs are delivered in one to seven days. In the US, you have access to one-day shipping and two-day shipping. - */ - ShippingOption?: ShippingOption; - /** - * Defines the Amazon Simple Notification Service (Amazon SNS) notification settings for this job. - */ - Notification?: Notification; - /** - * The ID of a cluster. If you're creating a job for a node in a cluster, you need to provide only this clusterId value. The other job attributes are inherited from the cluster. - */ - ClusterId?: ClusterId; - /** - * The type of AWS Snowball appliance to use for this job. Currently, the only supported appliance type for cluster jobs is EDGE. - */ - SnowballType?: SnowballType; - /** - * The forwarding address ID for a job. This field is not supported in most regions. - */ - ForwardingAddressId?: AddressId; - } - export interface CreateJobResult { - /** - * The automatically generated ID for a job, for example JID123e4567-e89b-12d3-a456-426655440000. - */ - JobId?: JobId; - } - export interface DataTransfer { - /** - * The number of bytes transferred between a Snowball and Amazon S3. - */ - BytesTransferred?: Long; - /** - * The number of objects transferred between a Snowball and Amazon S3. - */ - ObjectsTransferred?: Long; - /** - * The total bytes of data for a transfer between a Snowball and Amazon S3. This value is set to 0 (zero) until all the keys that will be transferred have been listed. - */ - TotalBytes?: Long; - /** - * The total number of objects for a transfer between a Snowball and Amazon S3. This value is set to 0 (zero) until all the keys that will be transferred have been listed. - */ - TotalObjects?: Long; - } - export interface DescribeAddressRequest { - /** - * The automatically generated ID for a specific address. - */ - AddressId: AddressId; - } - export interface DescribeAddressResult { - /** - * The address that you want the Snowball or Snowballs associated with a specific job to be shipped to. - */ - Address?: Address; - } - export interface DescribeAddressesRequest { - /** - * The number of ADDRESS objects to return. - */ - MaxResults?: ListLimit; - /** - * HTTP requests are stateless. To identify what object comes "next" in the list of ADDRESS objects, you have the option of specifying a value for NextToken as the starting point for your list of returned addresses. - */ - NextToken?: String; - } - export interface DescribeAddressesResult { - /** - * The Snowball shipping addresses that were created for this account. - */ - Addresses?: AddressList; - /** - * HTTP requests are stateless. If you use the automatically generated NextToken value in your next DescribeAddresses call, your list of returned addresses will start from this point in the array. - */ - NextToken?: String; - } - export interface DescribeClusterRequest { - /** - * The automatically generated ID for a cluster. - */ - ClusterId: ClusterId; - } - export interface DescribeClusterResult { - /** - * Information about a specific cluster, including shipping information, cluster status, and other important metadata. - */ - ClusterMetadata?: ClusterMetadata; - } - export interface DescribeJobRequest { - /** - * The automatically generated ID for a job, for example JID123e4567-e89b-12d3-a456-426655440000. - */ - JobId: JobId; - } - export interface DescribeJobResult { - /** - * Information about a specific job, including shipping information, job status, and other important metadata. - */ - JobMetadata?: JobMetadata; - /** - * Information about a specific job part (in the case of an export job), including shipping information, job status, and other important metadata. - */ - SubJobMetadata?: JobMetadataList; - } - export interface EventTriggerDefinition { - /** - * The Amazon Resource Name (ARN) for any local Amazon S3 resource that is an AWS Lambda function's event trigger associated with this job. - */ - EventResourceARN?: ResourceARN; - } - export type EventTriggerDefinitionList = EventTriggerDefinition[]; - export interface GetJobManifestRequest { - /** - * The ID for a job that you want to get the manifest file for, for example JID123e4567-e89b-12d3-a456-426655440000. - */ - JobId: JobId; - } - export interface GetJobManifestResult { - /** - * The Amazon S3 presigned URL for the manifest file associated with the specified JobId value. - */ - ManifestURI?: String; - } - export interface GetJobUnlockCodeRequest { - /** - * The ID for the job that you want to get the UnlockCode value for, for example JID123e4567-e89b-12d3-a456-426655440000. - */ - JobId: JobId; - } - export interface GetJobUnlockCodeResult { - /** - * The UnlockCode value for the specified job. The UnlockCode value can be accessed for up to 90 days after the job has been created. - */ - UnlockCode?: String; - } - export interface GetSnowballUsageRequest { - } - export interface GetSnowballUsageResult { - /** - * The service limit for number of Snowballs this account can have at once. The default service limit is 1 (one). - */ - SnowballLimit?: Integer; - /** - * The number of Snowballs that this account is currently using. - */ - SnowballsInUse?: Integer; - } - export type Integer = number; - export type JobId = string; - export interface JobListEntry { - /** - * The automatically generated ID for a job, for example JID123e4567-e89b-12d3-a456-426655440000. - */ - JobId?: String; - /** - * The current state of this job. - */ - JobState?: JobState; - /** - * A value that indicates that this job is a master job. A master job represents a successful request to create an export job. Master jobs aren't associated with any Snowballs. Instead, each master job will have at least one job part, and each job part is associated with a Snowball. It might take some time before the job parts associated with a particular master job are listed, because they are created after the master job is created. - */ - IsMaster?: Boolean; - /** - * The type of job. - */ - JobType?: JobType; - /** - * The type of appliance used with this job. - */ - SnowballType?: SnowballType; - /** - * The creation date for this job. - */ - CreationDate?: Timestamp; - /** - * The optional description of this specific job, for example Important Photos 2016-08-11. - */ - Description?: String; - } - export type JobListEntryList = JobListEntry[]; - export interface JobLogs { - /** - * A link to an Amazon S3 presigned URL where the job completion report is located. - */ - JobCompletionReportURI?: String; - /** - * A link to an Amazon S3 presigned URL where the job success log is located. - */ - JobSuccessLogURI?: String; - /** - * A link to an Amazon S3 presigned URL where the job failure log is located. - */ - JobFailureLogURI?: String; - } - export interface JobMetadata { - /** - * The automatically generated ID for a job, for example JID123e4567-e89b-12d3-a456-426655440000. - */ - JobId?: String; - /** - * The current status of the jobs. - */ - JobState?: JobState; - /** - * The type of job. - */ - JobType?: JobType; - /** - * The type of appliance used with this job. - */ - SnowballType?: SnowballType; - /** - * The creation date for this job. - */ - CreationDate?: Timestamp; - /** - * An array of S3Resource objects. Each S3Resource object represents an Amazon S3 bucket that your transferred data will be exported from or imported into. - */ - Resources?: JobResource; - /** - * The description of the job, provided at job creation. - */ - Description?: String; - /** - * The Amazon Resource Name (ARN) for the AWS Key Management Service (AWS KMS) key associated with this job. This ARN was created using the CreateKey API action in AWS KMS. - */ - KmsKeyARN?: KmsKeyARN; - /** - * The role ARN associated with this job. This ARN was created using the CreateRole API action in AWS Identity and Access Management (IAM). - */ - RoleARN?: RoleARN; - /** - * The ID for the address that you want the Snowball shipped to. - */ - AddressId?: AddressId; - /** - * A job's shipping information, including inbound and outbound tracking numbers and shipping speed options. - */ - ShippingDetails?: ShippingDetails; - /** - * The Snowball capacity preference for this job, specified at job creation. In US regions, you can choose between 50 TB and 80 TB Snowballs. All other regions use 80 TB capacity Snowballs. - */ - SnowballCapacityPreference?: SnowballCapacity; - /** - * The Amazon Simple Notification Service (Amazon SNS) notification settings associated with a specific job. The Notification object is returned as a part of the response syntax of the DescribeJob action in the JobMetadata data type. - */ - Notification?: Notification; - /** - * A value that defines the real-time status of a Snowball's data transfer while the appliance is at AWS. This data is only available while a job has a JobState value of InProgress, for both import and export jobs. - */ - DataTransferProgress?: DataTransfer; - /** - * Links to Amazon S3 presigned URLs for the job report and logs. For import jobs, the PDF job report becomes available at the end of the import process. For export jobs, your job report typically becomes available while the Snowball for your job part is being delivered to you. - */ - JobLogInfo?: JobLogs; - /** - * The 39-character ID for the cluster, for example CID123e4567-e89b-12d3-a456-426655440000. - */ - ClusterId?: String; - /** - * The ID of the address that you want a job shipped to, after it will be shipped to its primary address. This field is not supported in most regions. - */ - ForwardingAddressId?: AddressId; - } - export type JobMetadataList = JobMetadata[]; - export interface JobResource { - /** - * An array of S3Resource objects. - */ - S3Resources?: S3ResourceList; - /** - * The Python-language Lambda functions for this job. - */ - LambdaResources?: LambdaResourceList; - } - export type JobState = "New"|"PreparingAppliance"|"PreparingShipment"|"InTransitToCustomer"|"WithCustomer"|"InTransitToAWS"|"WithAWS"|"InProgress"|"Complete"|"Cancelled"|"Listing"|"Pending"|string; - export type JobStateList = JobState[]; - export type JobType = "IMPORT"|"EXPORT"|"LOCAL_USE"|string; - export interface KeyRange { - /** - * The key that starts an optional key range for an export job. Ranges are inclusive and UTF-8 binary sorted. - */ - BeginMarker?: String; - /** - * The key that ends an optional key range for an export job. Ranges are inclusive and UTF-8 binary sorted. - */ - EndMarker?: String; - } - export type KmsKeyARN = string; - export interface LambdaResource { - /** - * An Amazon Resource Name (ARN) that represents an AWS Lambda function to be triggered by PUT object actions on the associated local Amazon S3 resource. - */ - LambdaArn?: ResourceARN; - /** - * The array of ARNs for S3Resource objects to trigger the LambdaResource objects associated with this job. - */ - EventTriggers?: EventTriggerDefinitionList; - } - export type LambdaResourceList = LambdaResource[]; - export interface ListClusterJobsRequest { - /** - * The 39-character ID for the cluster that you want to list, for example CID123e4567-e89b-12d3-a456-426655440000. - */ - ClusterId: ClusterId; - /** - * The number of JobListEntry objects to return. - */ - MaxResults?: ListLimit; - /** - * HTTP requests are stateless. To identify what object comes "next" in the list of JobListEntry objects, you have the option of specifying NextToken as the starting point for your returned list. - */ - NextToken?: String; - } - export interface ListClusterJobsResult { - /** - * Each JobListEntry object contains a job's state, a job's ID, and a value that indicates whether the job is a job part, in the case of export jobs. - */ - JobListEntries?: JobListEntryList; - /** - * HTTP requests are stateless. If you use the automatically generated NextToken value in your next ListClusterJobsResult call, your list of returned jobs will start from this point in the array. - */ - NextToken?: String; - } - export interface ListClustersRequest { - /** - * The number of ClusterListEntry objects to return. - */ - MaxResults?: ListLimit; - /** - * HTTP requests are stateless. To identify what object comes "next" in the list of ClusterListEntry objects, you have the option of specifying NextToken as the starting point for your returned list. - */ - NextToken?: String; - } - export interface ListClustersResult { - /** - * Each ClusterListEntry object contains a cluster's state, a cluster's ID, and other important status information. - */ - ClusterListEntries?: ClusterListEntryList; - /** - * HTTP requests are stateless. If you use the automatically generated NextToken value in your next ClusterListEntry call, your list of returned clusters will start from this point in the array. - */ - NextToken?: String; - } - export interface ListJobsRequest { - /** - * The number of JobListEntry objects to return. - */ - MaxResults?: ListLimit; - /** - * HTTP requests are stateless. To identify what object comes "next" in the list of JobListEntry objects, you have the option of specifying NextToken as the starting point for your returned list. - */ - NextToken?: String; - } - export interface ListJobsResult { - /** - * Each JobListEntry object contains a job's state, a job's ID, and a value that indicates whether the job is a job part, in the case of export jobs. - */ - JobListEntries?: JobListEntryList; - /** - * HTTP requests are stateless. If you use this automatically generated NextToken value in your next ListJobs call, your returned JobListEntry objects will start from this point in the array. - */ - NextToken?: String; - } - export type ListLimit = number; - export type Long = number; - export interface Notification { - /** - * The new SNS TopicArn that you want to associate with this job. You can create Amazon Resource Names (ARNs) for topics by using the CreateTopic Amazon SNS API action. You can subscribe email addresses to an Amazon SNS topic through the AWS Management Console, or by using the Subscribe AWS Simple Notification Service (SNS) API action. - */ - SnsTopicARN?: SnsTopicARN; - /** - * The list of job states that will trigger a notification for this job. - */ - JobStatesToNotify?: JobStateList; - /** - * Any change in job state will trigger a notification for this job. - */ - NotifyAll?: Boolean; - } - export type ResourceARN = string; - export type RoleARN = string; - export interface S3Resource { - /** - * The Amazon Resource Name (ARN) of an Amazon S3 bucket. - */ - BucketArn?: ResourceARN; - /** - * For export jobs, you can provide an optional KeyRange within a specific Amazon S3 bucket. The length of the range is defined at job creation, and has either an inclusive BeginMarker, an inclusive EndMarker, or both. Ranges are UTF-8 binary sorted. - */ - KeyRange?: KeyRange; - } - export type S3ResourceList = S3Resource[]; - export interface Shipment { - /** - * Status information for a shipment. - */ - Status?: String; - /** - * The tracking number for this job. Using this tracking number with your region's carrier's website, you can track a Snowball as the carrier transports it. For India, the carrier is Amazon Logistics. For all other regions, UPS is the carrier. - */ - TrackingNumber?: String; - } - export interface ShippingDetails { - /** - * The shipping speed for a particular job. This speed doesn't dictate how soon you'll get the Snowball from the job's creation date. This speed represents how quickly it moves to its destination while in transit. Regional shipping speeds are as follows: In Australia, you have access to express shipping. Typically, Snowballs shipped express are delivered in about a day. In the European Union (EU), you have access to express shipping. Typically, Snowballs shipped express are delivered in about a day. In addition, most countries in the EU have access to standard shipping, which typically takes less than a week, one way. In India, Snowballs are delivered in one to seven days. In the United States of America (US), you have access to one-day shipping and two-day shipping. - */ - ShippingOption?: ShippingOption; - /** - * The Status and TrackingNumber values for a Snowball being delivered to the address that you specified for a particular job. - */ - InboundShipment?: Shipment; - /** - * The Status and TrackingNumber values for a Snowball being returned to AWS for a particular job. - */ - OutboundShipment?: Shipment; - } - export type ShippingOption = "SECOND_DAY"|"NEXT_DAY"|"EXPRESS"|"STANDARD"|string; - export type SnowballCapacity = "T50"|"T80"|"T100"|"NoPreference"|string; - export type SnowballType = "STANDARD"|"EDGE"|string; - export type SnsTopicARN = string; - export type String = string; - export type Timestamp = Date; - export interface UpdateClusterRequest { - /** - * The cluster ID of the cluster that you want to update, for example CID123e4567-e89b-12d3-a456-426655440000. - */ - ClusterId: ClusterId; - /** - * The new role Amazon Resource Name (ARN) that you want to associate with this cluster. To create a role ARN, use the CreateRole API action in AWS Identity and Access Management (IAM). - */ - RoleARN?: RoleARN; - /** - * The updated description of this cluster. - */ - Description?: String; - /** - * The updated arrays of JobResource objects that can include updated S3Resource objects or LambdaResource objects. - */ - Resources?: JobResource; - /** - * The ID of the updated Address object. - */ - AddressId?: AddressId; - /** - * The updated shipping option value of this cluster's ShippingDetails object. - */ - ShippingOption?: ShippingOption; - /** - * The new or updated Notification object. - */ - Notification?: Notification; - /** - * The updated ID for the forwarding address for a cluster. This field is not supported in most regions. - */ - ForwardingAddressId?: AddressId; - } - export interface UpdateClusterResult { - } - export interface UpdateJobRequest { - /** - * The job ID of the job that you want to update, for example JID123e4567-e89b-12d3-a456-426655440000. - */ - JobId: JobId; - /** - * The new role Amazon Resource Name (ARN) that you want to associate with this job. To create a role ARN, use the CreateRoleAWS Identity and Access Management (IAM) API action. - */ - RoleARN?: RoleARN; - /** - * The new or updated Notification object. - */ - Notification?: Notification; - /** - * The updated S3Resource object (for a single Amazon S3 bucket or key range), or the updated JobResource object (for multiple buckets or key ranges). - */ - Resources?: JobResource; - /** - * The ID of the updated Address object. - */ - AddressId?: AddressId; - /** - * The updated shipping option value of this job's ShippingDetails object. - */ - ShippingOption?: ShippingOption; - /** - * The updated description of this job's JobMetadata object. - */ - Description?: String; - /** - * The updated SnowballCapacityPreference of this job's JobMetadata object. The 50 TB Snowballs are only available in the US regions. - */ - SnowballCapacityPreference?: SnowballCapacity; - /** - * The updated ID for the forwarding address for a job. This field is not supported in most regions. - */ - ForwardingAddressId?: AddressId; - } - export interface UpdateJobResult { - } - /** - * A string in YYYY-MM-DD format that represents the latest possible API version that can be used in this service. Specify 'latest' to use the latest possible version. - */ - export type apiVersion = "2016-06-30"|"latest"|string; - export interface ClientApiVersions { - /** - * A string in YYYY-MM-DD format that represents the latest possible API version that can be used in this service. Specify 'latest' to use the latest possible version. - */ - apiVersion?: apiVersion; - } - export type ClientConfiguration = ServiceConfigurationOptions & ClientApiVersions; - /** - * Contains interfaces for use with the Snowball client. - */ - export import Types = Snowball; -} -export = Snowball; diff --git a/workshops/monte-carlo-on-ec2-spot-fleet/src/web/node_modules/aws-sdk/clients/snowball.js b/workshops/monte-carlo-on-ec2-spot-fleet/src/web/node_modules/aws-sdk/clients/snowball.js deleted file mode 100644 index 25892ecd..00000000 --- a/workshops/monte-carlo-on-ec2-spot-fleet/src/web/node_modules/aws-sdk/clients/snowball.js +++ /dev/null @@ -1,18 +0,0 @@ -require('../lib/node_loader'); -var AWS = require('../lib/core'); -var Service = AWS.Service; -var apiLoader = AWS.apiLoader; - -apiLoader.services['snowball'] = {}; -AWS.Snowball = Service.defineService('snowball', ['2016-06-30']); -Object.defineProperty(apiLoader.services['snowball'], '2016-06-30', { - get: function get() { - var model = require('../apis/snowball-2016-06-30.min.json'); - model.paginators = require('../apis/snowball-2016-06-30.paginators.json').pagination; - return model; - }, - enumerable: true, - configurable: true -}); - -module.exports = AWS.Snowball; diff --git a/workshops/monte-carlo-on-ec2-spot-fleet/src/web/node_modules/aws-sdk/clients/sns.d.ts b/workshops/monte-carlo-on-ec2-spot-fleet/src/web/node_modules/aws-sdk/clients/sns.d.ts deleted file mode 100644 index b14ebfbe..00000000 --- a/workshops/monte-carlo-on-ec2-spot-fleet/src/web/node_modules/aws-sdk/clients/sns.d.ts +++ /dev/null @@ -1,791 +0,0 @@ -import {Request} from '../lib/request'; -import {Response} from '../lib/response'; -import {AWSError} from '../lib/error'; -import {Service} from '../lib/service'; -import {ServiceConfigurationOptions} from '../lib/service'; -import {ConfigBase as Config} from '../lib/config'; -interface Blob {} -declare class SNS extends Service { - /** - * Constructs a service object. This object has one method for each API operation. - */ - constructor(options?: SNS.Types.ClientConfiguration) - config: Config & SNS.Types.ClientConfiguration; - /** - * Adds a statement to a topic's access control policy, granting access for the specified AWS accounts to the specified actions. - */ - addPermission(params: SNS.Types.AddPermissionInput, callback?: (err: AWSError, data: {}) => void): Request<{}, AWSError>; - /** - * Adds a statement to a topic's access control policy, granting access for the specified AWS accounts to the specified actions. - */ - addPermission(callback?: (err: AWSError, data: {}) => void): Request<{}, AWSError>; - /** - * Accepts a phone number and indicates whether the phone holder has opted out of receiving SMS messages from your account. You cannot send SMS messages to a number that is opted out. To resume sending messages, you can opt in the number by using the OptInPhoneNumber action. - */ - checkIfPhoneNumberIsOptedOut(params: SNS.Types.CheckIfPhoneNumberIsOptedOutInput, callback?: (err: AWSError, data: SNS.Types.CheckIfPhoneNumberIsOptedOutResponse) => void): Request; - /** - * Accepts a phone number and indicates whether the phone holder has opted out of receiving SMS messages from your account. You cannot send SMS messages to a number that is opted out. To resume sending messages, you can opt in the number by using the OptInPhoneNumber action. - */ - checkIfPhoneNumberIsOptedOut(callback?: (err: AWSError, data: SNS.Types.CheckIfPhoneNumberIsOptedOutResponse) => void): Request; - /** - * Verifies an endpoint owner's intent to receive messages by validating the token sent to the endpoint by an earlier Subscribe action. If the token is valid, the action creates a new subscription and returns its Amazon Resource Name (ARN). This call requires an AWS signature only when the AuthenticateOnUnsubscribe flag is set to "true". - */ - confirmSubscription(params: SNS.Types.ConfirmSubscriptionInput, callback?: (err: AWSError, data: SNS.Types.ConfirmSubscriptionResponse) => void): Request; - /** - * Verifies an endpoint owner's intent to receive messages by validating the token sent to the endpoint by an earlier Subscribe action. If the token is valid, the action creates a new subscription and returns its Amazon Resource Name (ARN). This call requires an AWS signature only when the AuthenticateOnUnsubscribe flag is set to "true". - */ - confirmSubscription(callback?: (err: AWSError, data: SNS.Types.ConfirmSubscriptionResponse) => void): Request; - /** - * Creates a platform application object for one of the supported push notification services, such as APNS and GCM, to which devices and mobile apps may register. You must specify PlatformPrincipal and PlatformCredential attributes when using the CreatePlatformApplication action. The PlatformPrincipal is received from the notification service. For APNS/APNS_SANDBOX, PlatformPrincipal is "SSL certificate". For GCM, PlatformPrincipal is not applicable. For ADM, PlatformPrincipal is "client id". The PlatformCredential is also received from the notification service. For WNS, PlatformPrincipal is "Package Security Identifier". For MPNS, PlatformPrincipal is "TLS certificate". For Baidu, PlatformPrincipal is "API key". For APNS/APNS_SANDBOX, PlatformCredential is "private key". For GCM, PlatformCredential is "API key". For ADM, PlatformCredential is "client secret". For WNS, PlatformCredential is "secret key". For MPNS, PlatformCredential is "private key". For Baidu, PlatformCredential is "secret key". The PlatformApplicationArn that is returned when using CreatePlatformApplication is then used as an attribute for the CreatePlatformEndpoint action. For more information, see Using Amazon SNS Mobile Push Notifications. For more information about obtaining the PlatformPrincipal and PlatformCredential for each of the supported push notification services, see Getting Started with Apple Push Notification Service, Getting Started with Amazon Device Messaging, Getting Started with Baidu Cloud Push, Getting Started with Google Cloud Messaging for Android, Getting Started with MPNS, or Getting Started with WNS. - */ - createPlatformApplication(params: SNS.Types.CreatePlatformApplicationInput, callback?: (err: AWSError, data: SNS.Types.CreatePlatformApplicationResponse) => void): Request; - /** - * Creates a platform application object for one of the supported push notification services, such as APNS and GCM, to which devices and mobile apps may register. You must specify PlatformPrincipal and PlatformCredential attributes when using the CreatePlatformApplication action. The PlatformPrincipal is received from the notification service. For APNS/APNS_SANDBOX, PlatformPrincipal is "SSL certificate". For GCM, PlatformPrincipal is not applicable. For ADM, PlatformPrincipal is "client id". The PlatformCredential is also received from the notification service. For WNS, PlatformPrincipal is "Package Security Identifier". For MPNS, PlatformPrincipal is "TLS certificate". For Baidu, PlatformPrincipal is "API key". For APNS/APNS_SANDBOX, PlatformCredential is "private key". For GCM, PlatformCredential is "API key". For ADM, PlatformCredential is "client secret". For WNS, PlatformCredential is "secret key". For MPNS, PlatformCredential is "private key". For Baidu, PlatformCredential is "secret key". The PlatformApplicationArn that is returned when using CreatePlatformApplication is then used as an attribute for the CreatePlatformEndpoint action. For more information, see Using Amazon SNS Mobile Push Notifications. For more information about obtaining the PlatformPrincipal and PlatformCredential for each of the supported push notification services, see Getting Started with Apple Push Notification Service, Getting Started with Amazon Device Messaging, Getting Started with Baidu Cloud Push, Getting Started with Google Cloud Messaging for Android, Getting Started with MPNS, or Getting Started with WNS. - */ - createPlatformApplication(callback?: (err: AWSError, data: SNS.Types.CreatePlatformApplicationResponse) => void): Request; - /** - * Creates an endpoint for a device and mobile app on one of the supported push notification services, such as GCM and APNS. CreatePlatformEndpoint requires the PlatformApplicationArn that is returned from CreatePlatformApplication. The EndpointArn that is returned when using CreatePlatformEndpoint can then be used by the Publish action to send a message to a mobile app or by the Subscribe action for subscription to a topic. The CreatePlatformEndpoint action is idempotent, so if the requester already owns an endpoint with the same device token and attributes, that endpoint's ARN is returned without creating a new endpoint. For more information, see Using Amazon SNS Mobile Push Notifications. When using CreatePlatformEndpoint with Baidu, two attributes must be provided: ChannelId and UserId. The token field must also contain the ChannelId. For more information, see Creating an Amazon SNS Endpoint for Baidu. - */ - createPlatformEndpoint(params: SNS.Types.CreatePlatformEndpointInput, callback?: (err: AWSError, data: SNS.Types.CreateEndpointResponse) => void): Request; - /** - * Creates an endpoint for a device and mobile app on one of the supported push notification services, such as GCM and APNS. CreatePlatformEndpoint requires the PlatformApplicationArn that is returned from CreatePlatformApplication. The EndpointArn that is returned when using CreatePlatformEndpoint can then be used by the Publish action to send a message to a mobile app or by the Subscribe action for subscription to a topic. The CreatePlatformEndpoint action is idempotent, so if the requester already owns an endpoint with the same device token and attributes, that endpoint's ARN is returned without creating a new endpoint. For more information, see Using Amazon SNS Mobile Push Notifications. When using CreatePlatformEndpoint with Baidu, two attributes must be provided: ChannelId and UserId. The token field must also contain the ChannelId. For more information, see Creating an Amazon SNS Endpoint for Baidu. - */ - createPlatformEndpoint(callback?: (err: AWSError, data: SNS.Types.CreateEndpointResponse) => void): Request; - /** - * Creates a topic to which notifications can be published. Users can create at most 100,000 topics. For more information, see http://aws.amazon.com/sns. This action is idempotent, so if the requester already owns a topic with the specified name, that topic's ARN is returned without creating a new topic. - */ - createTopic(params: SNS.Types.CreateTopicInput, callback?: (err: AWSError, data: SNS.Types.CreateTopicResponse) => void): Request; - /** - * Creates a topic to which notifications can be published. Users can create at most 100,000 topics. For more information, see http://aws.amazon.com/sns. This action is idempotent, so if the requester already owns a topic with the specified name, that topic's ARN is returned without creating a new topic. - */ - createTopic(callback?: (err: AWSError, data: SNS.Types.CreateTopicResponse) => void): Request; - /** - * Deletes the endpoint for a device and mobile app from Amazon SNS. This action is idempotent. For more information, see Using Amazon SNS Mobile Push Notifications. When you delete an endpoint that is also subscribed to a topic, then you must also unsubscribe the endpoint from the topic. - */ - deleteEndpoint(params: SNS.Types.DeleteEndpointInput, callback?: (err: AWSError, data: {}) => void): Request<{}, AWSError>; - /** - * Deletes the endpoint for a device and mobile app from Amazon SNS. This action is idempotent. For more information, see Using Amazon SNS Mobile Push Notifications. When you delete an endpoint that is also subscribed to a topic, then you must also unsubscribe the endpoint from the topic. - */ - deleteEndpoint(callback?: (err: AWSError, data: {}) => void): Request<{}, AWSError>; - /** - * Deletes a platform application object for one of the supported push notification services, such as APNS and GCM. For more information, see Using Amazon SNS Mobile Push Notifications. - */ - deletePlatformApplication(params: SNS.Types.DeletePlatformApplicationInput, callback?: (err: AWSError, data: {}) => void): Request<{}, AWSError>; - /** - * Deletes a platform application object for one of the supported push notification services, such as APNS and GCM. For more information, see Using Amazon SNS Mobile Push Notifications. - */ - deletePlatformApplication(callback?: (err: AWSError, data: {}) => void): Request<{}, AWSError>; - /** - * Deletes a topic and all its subscriptions. Deleting a topic might prevent some messages previously sent to the topic from being delivered to subscribers. This action is idempotent, so deleting a topic that does not exist does not result in an error. - */ - deleteTopic(params: SNS.Types.DeleteTopicInput, callback?: (err: AWSError, data: {}) => void): Request<{}, AWSError>; - /** - * Deletes a topic and all its subscriptions. Deleting a topic might prevent some messages previously sent to the topic from being delivered to subscribers. This action is idempotent, so deleting a topic that does not exist does not result in an error. - */ - deleteTopic(callback?: (err: AWSError, data: {}) => void): Request<{}, AWSError>; - /** - * Retrieves the endpoint attributes for a device on one of the supported push notification services, such as GCM and APNS. For more information, see Using Amazon SNS Mobile Push Notifications. - */ - getEndpointAttributes(params: SNS.Types.GetEndpointAttributesInput, callback?: (err: AWSError, data: SNS.Types.GetEndpointAttributesResponse) => void): Request; - /** - * Retrieves the endpoint attributes for a device on one of the supported push notification services, such as GCM and APNS. For more information, see Using Amazon SNS Mobile Push Notifications. - */ - getEndpointAttributes(callback?: (err: AWSError, data: SNS.Types.GetEndpointAttributesResponse) => void): Request; - /** - * Retrieves the attributes of the platform application object for the supported push notification services, such as APNS and GCM. For more information, see Using Amazon SNS Mobile Push Notifications. - */ - getPlatformApplicationAttributes(params: SNS.Types.GetPlatformApplicationAttributesInput, callback?: (err: AWSError, data: SNS.Types.GetPlatformApplicationAttributesResponse) => void): Request; - /** - * Retrieves the attributes of the platform application object for the supported push notification services, such as APNS and GCM. For more information, see Using Amazon SNS Mobile Push Notifications. - */ - getPlatformApplicationAttributes(callback?: (err: AWSError, data: SNS.Types.GetPlatformApplicationAttributesResponse) => void): Request; - /** - * Returns the settings for sending SMS messages from your account. These settings are set with the SetSMSAttributes action. - */ - getSMSAttributes(params: SNS.Types.GetSMSAttributesInput, callback?: (err: AWSError, data: SNS.Types.GetSMSAttributesResponse) => void): Request; - /** - * Returns the settings for sending SMS messages from your account. These settings are set with the SetSMSAttributes action. - */ - getSMSAttributes(callback?: (err: AWSError, data: SNS.Types.GetSMSAttributesResponse) => void): Request; - /** - * Returns all of the properties of a subscription. - */ - getSubscriptionAttributes(params: SNS.Types.GetSubscriptionAttributesInput, callback?: (err: AWSError, data: SNS.Types.GetSubscriptionAttributesResponse) => void): Request; - /** - * Returns all of the properties of a subscription. - */ - getSubscriptionAttributes(callback?: (err: AWSError, data: SNS.Types.GetSubscriptionAttributesResponse) => void): Request; - /** - * Returns all of the properties of a topic. Topic properties returned might differ based on the authorization of the user. - */ - getTopicAttributes(params: SNS.Types.GetTopicAttributesInput, callback?: (err: AWSError, data: SNS.Types.GetTopicAttributesResponse) => void): Request; - /** - * Returns all of the properties of a topic. Topic properties returned might differ based on the authorization of the user. - */ - getTopicAttributes(callback?: (err: AWSError, data: SNS.Types.GetTopicAttributesResponse) => void): Request; - /** - * Lists the endpoints and endpoint attributes for devices in a supported push notification service, such as GCM and APNS. The results for ListEndpointsByPlatformApplication are paginated and return a limited list of endpoints, up to 100. If additional records are available after the first page results, then a NextToken string will be returned. To receive the next page, you call ListEndpointsByPlatformApplication again using the NextToken string received from the previous call. When there are no more records to return, NextToken will be null. For more information, see Using Amazon SNS Mobile Push Notifications. - */ - listEndpointsByPlatformApplication(params: SNS.Types.ListEndpointsByPlatformApplicationInput, callback?: (err: AWSError, data: SNS.Types.ListEndpointsByPlatformApplicationResponse) => void): Request; - /** - * Lists the endpoints and endpoint attributes for devices in a supported push notification service, such as GCM and APNS. The results for ListEndpointsByPlatformApplication are paginated and return a limited list of endpoints, up to 100. If additional records are available after the first page results, then a NextToken string will be returned. To receive the next page, you call ListEndpointsByPlatformApplication again using the NextToken string received from the previous call. When there are no more records to return, NextToken will be null. For more information, see Using Amazon SNS Mobile Push Notifications. - */ - listEndpointsByPlatformApplication(callback?: (err: AWSError, data: SNS.Types.ListEndpointsByPlatformApplicationResponse) => void): Request; - /** - * Returns a list of phone numbers that are opted out, meaning you cannot send SMS messages to them. The results for ListPhoneNumbersOptedOut are paginated, and each page returns up to 100 phone numbers. If additional phone numbers are available after the first page of results, then a NextToken string will be returned. To receive the next page, you call ListPhoneNumbersOptedOut again using the NextToken string received from the previous call. When there are no more records to return, NextToken will be null. - */ - listPhoneNumbersOptedOut(params: SNS.Types.ListPhoneNumbersOptedOutInput, callback?: (err: AWSError, data: SNS.Types.ListPhoneNumbersOptedOutResponse) => void): Request; - /** - * Returns a list of phone numbers that are opted out, meaning you cannot send SMS messages to them. The results for ListPhoneNumbersOptedOut are paginated, and each page returns up to 100 phone numbers. If additional phone numbers are available after the first page of results, then a NextToken string will be returned. To receive the next page, you call ListPhoneNumbersOptedOut again using the NextToken string received from the previous call. When there are no more records to return, NextToken will be null. - */ - listPhoneNumbersOptedOut(callback?: (err: AWSError, data: SNS.Types.ListPhoneNumbersOptedOutResponse) => void): Request; - /** - * Lists the platform application objects for the supported push notification services, such as APNS and GCM. The results for ListPlatformApplications are paginated and return a limited list of applications, up to 100. If additional records are available after the first page results, then a NextToken string will be returned. To receive the next page, you call ListPlatformApplications using the NextToken string received from the previous call. When there are no more records to return, NextToken will be null. For more information, see Using Amazon SNS Mobile Push Notifications. - */ - listPlatformApplications(params: SNS.Types.ListPlatformApplicationsInput, callback?: (err: AWSError, data: SNS.Types.ListPlatformApplicationsResponse) => void): Request; - /** - * Lists the platform application objects for the supported push notification services, such as APNS and GCM. The results for ListPlatformApplications are paginated and return a limited list of applications, up to 100. If additional records are available after the first page results, then a NextToken string will be returned. To receive the next page, you call ListPlatformApplications using the NextToken string received from the previous call. When there are no more records to return, NextToken will be null. For more information, see Using Amazon SNS Mobile Push Notifications. - */ - listPlatformApplications(callback?: (err: AWSError, data: SNS.Types.ListPlatformApplicationsResponse) => void): Request; - /** - * Returns a list of the requester's subscriptions. Each call returns a limited list of subscriptions, up to 100. If there are more subscriptions, a NextToken is also returned. Use the NextToken parameter in a new ListSubscriptions call to get further results. - */ - listSubscriptions(params: SNS.Types.ListSubscriptionsInput, callback?: (err: AWSError, data: SNS.Types.ListSubscriptionsResponse) => void): Request; - /** - * Returns a list of the requester's subscriptions. Each call returns a limited list of subscriptions, up to 100. If there are more subscriptions, a NextToken is also returned. Use the NextToken parameter in a new ListSubscriptions call to get further results. - */ - listSubscriptions(callback?: (err: AWSError, data: SNS.Types.ListSubscriptionsResponse) => void): Request; - /** - * Returns a list of the subscriptions to a specific topic. Each call returns a limited list of subscriptions, up to 100. If there are more subscriptions, a NextToken is also returned. Use the NextToken parameter in a new ListSubscriptionsByTopic call to get further results. - */ - listSubscriptionsByTopic(params: SNS.Types.ListSubscriptionsByTopicInput, callback?: (err: AWSError, data: SNS.Types.ListSubscriptionsByTopicResponse) => void): Request; - /** - * Returns a list of the subscriptions to a specific topic. Each call returns a limited list of subscriptions, up to 100. If there are more subscriptions, a NextToken is also returned. Use the NextToken parameter in a new ListSubscriptionsByTopic call to get further results. - */ - listSubscriptionsByTopic(callback?: (err: AWSError, data: SNS.Types.ListSubscriptionsByTopicResponse) => void): Request; - /** - * Returns a list of the requester's topics. Each call returns a limited list of topics, up to 100. If there are more topics, a NextToken is also returned. Use the NextToken parameter in a new ListTopics call to get further results. - */ - listTopics(params: SNS.Types.ListTopicsInput, callback?: (err: AWSError, data: SNS.Types.ListTopicsResponse) => void): Request; - /** - * Returns a list of the requester's topics. Each call returns a limited list of topics, up to 100. If there are more topics, a NextToken is also returned. Use the NextToken parameter in a new ListTopics call to get further results. - */ - listTopics(callback?: (err: AWSError, data: SNS.Types.ListTopicsResponse) => void): Request; - /** - * Use this request to opt in a phone number that is opted out, which enables you to resume sending SMS messages to the number. You can opt in a phone number only once every 30 days. - */ - optInPhoneNumber(params: SNS.Types.OptInPhoneNumberInput, callback?: (err: AWSError, data: SNS.Types.OptInPhoneNumberResponse) => void): Request; - /** - * Use this request to opt in a phone number that is opted out, which enables you to resume sending SMS messages to the number. You can opt in a phone number only once every 30 days. - */ - optInPhoneNumber(callback?: (err: AWSError, data: SNS.Types.OptInPhoneNumberResponse) => void): Request; - /** - * Sends a message to all of a topic's subscribed endpoints. When a messageId is returned, the message has been saved and Amazon SNS will attempt to deliver it to the topic's subscribers shortly. The format of the outgoing message to each subscribed endpoint depends on the notification protocol. To use the Publish action for sending a message to a mobile endpoint, such as an app on a Kindle device or mobile phone, you must specify the EndpointArn for the TargetArn parameter. The EndpointArn is returned when making a call with the CreatePlatformEndpoint action. For more information about formatting messages, see Send Custom Platform-Specific Payloads in Messages to Mobile Devices. - */ - publish(params: SNS.Types.PublishInput, callback?: (err: AWSError, data: SNS.Types.PublishResponse) => void): Request; - /** - * Sends a message to all of a topic's subscribed endpoints. When a messageId is returned, the message has been saved and Amazon SNS will attempt to deliver it to the topic's subscribers shortly. The format of the outgoing message to each subscribed endpoint depends on the notification protocol. To use the Publish action for sending a message to a mobile endpoint, such as an app on a Kindle device or mobile phone, you must specify the EndpointArn for the TargetArn parameter. The EndpointArn is returned when making a call with the CreatePlatformEndpoint action. For more information about formatting messages, see Send Custom Platform-Specific Payloads in Messages to Mobile Devices. - */ - publish(callback?: (err: AWSError, data: SNS.Types.PublishResponse) => void): Request; - /** - * Removes a statement from a topic's access control policy. - */ - removePermission(params: SNS.Types.RemovePermissionInput, callback?: (err: AWSError, data: {}) => void): Request<{}, AWSError>; - /** - * Removes a statement from a topic's access control policy. - */ - removePermission(callback?: (err: AWSError, data: {}) => void): Request<{}, AWSError>; - /** - * Sets the attributes for an endpoint for a device on one of the supported push notification services, such as GCM and APNS. For more information, see Using Amazon SNS Mobile Push Notifications. - */ - setEndpointAttributes(params: SNS.Types.SetEndpointAttributesInput, callback?: (err: AWSError, data: {}) => void): Request<{}, AWSError>; - /** - * Sets the attributes for an endpoint for a device on one of the supported push notification services, such as GCM and APNS. For more information, see Using Amazon SNS Mobile Push Notifications. - */ - setEndpointAttributes(callback?: (err: AWSError, data: {}) => void): Request<{}, AWSError>; - /** - * Sets the attributes of the platform application object for the supported push notification services, such as APNS and GCM. For more information, see Using Amazon SNS Mobile Push Notifications. For information on configuring attributes for message delivery status, see Using Amazon SNS Application Attributes for Message Delivery Status. - */ - setPlatformApplicationAttributes(params: SNS.Types.SetPlatformApplicationAttributesInput, callback?: (err: AWSError, data: {}) => void): Request<{}, AWSError>; - /** - * Sets the attributes of the platform application object for the supported push notification services, such as APNS and GCM. For more information, see Using Amazon SNS Mobile Push Notifications. For information on configuring attributes for message delivery status, see Using Amazon SNS Application Attributes for Message Delivery Status. - */ - setPlatformApplicationAttributes(callback?: (err: AWSError, data: {}) => void): Request<{}, AWSError>; - /** - * Use this request to set the default settings for sending SMS messages and receiving daily SMS usage reports. You can override some of these settings for a single message when you use the Publish action with the MessageAttributes.entry.N parameter. For more information, see Sending an SMS Message in the Amazon SNS Developer Guide. - */ - setSMSAttributes(params: SNS.Types.SetSMSAttributesInput, callback?: (err: AWSError, data: SNS.Types.SetSMSAttributesResponse) => void): Request; - /** - * Use this request to set the default settings for sending SMS messages and receiving daily SMS usage reports. You can override some of these settings for a single message when you use the Publish action with the MessageAttributes.entry.N parameter. For more information, see Sending an SMS Message in the Amazon SNS Developer Guide. - */ - setSMSAttributes(callback?: (err: AWSError, data: SNS.Types.SetSMSAttributesResponse) => void): Request; - /** - * Allows a subscription owner to set an attribute of the topic to a new value. - */ - setSubscriptionAttributes(params: SNS.Types.SetSubscriptionAttributesInput, callback?: (err: AWSError, data: {}) => void): Request<{}, AWSError>; - /** - * Allows a subscription owner to set an attribute of the topic to a new value. - */ - setSubscriptionAttributes(callback?: (err: AWSError, data: {}) => void): Request<{}, AWSError>; - /** - * Allows a topic owner to set an attribute of the topic to a new value. - */ - setTopicAttributes(params: SNS.Types.SetTopicAttributesInput, callback?: (err: AWSError, data: {}) => void): Request<{}, AWSError>; - /** - * Allows a topic owner to set an attribute of the topic to a new value. - */ - setTopicAttributes(callback?: (err: AWSError, data: {}) => void): Request<{}, AWSError>; - /** - * Prepares to subscribe an endpoint by sending the endpoint a confirmation message. To actually create a subscription, the endpoint owner must call the ConfirmSubscription action with the token from the confirmation message. Confirmation tokens are valid for three days. - */ - subscribe(params: SNS.Types.SubscribeInput, callback?: (err: AWSError, data: SNS.Types.SubscribeResponse) => void): Request; - /** - * Prepares to subscribe an endpoint by sending the endpoint a confirmation message. To actually create a subscription, the endpoint owner must call the ConfirmSubscription action with the token from the confirmation message. Confirmation tokens are valid for three days. - */ - subscribe(callback?: (err: AWSError, data: SNS.Types.SubscribeResponse) => void): Request; - /** - * Deletes a subscription. If the subscription requires authentication for deletion, only the owner of the subscription or the topic's owner can unsubscribe, and an AWS signature is required. If the Unsubscribe call does not require authentication and the requester is not the subscription owner, a final cancellation message is delivered to the endpoint, so that the endpoint owner can easily resubscribe to the topic if the Unsubscribe request was unintended. - */ - unsubscribe(params: SNS.Types.UnsubscribeInput, callback?: (err: AWSError, data: {}) => void): Request<{}, AWSError>; - /** - * Deletes a subscription. If the subscription requires authentication for deletion, only the owner of the subscription or the topic's owner can unsubscribe, and an AWS signature is required. If the Unsubscribe call does not require authentication and the requester is not the subscription owner, a final cancellation message is delivered to the endpoint, so that the endpoint owner can easily resubscribe to the topic if the Unsubscribe request was unintended. - */ - unsubscribe(callback?: (err: AWSError, data: {}) => void): Request<{}, AWSError>; -} -declare namespace SNS { - export type ActionsList = action[]; - export interface AddPermissionInput { - /** - * The ARN of the topic whose access control policy you wish to modify. - */ - TopicArn: topicARN; - /** - * A unique identifier for the new policy statement. - */ - Label: label; - /** - * The AWS account IDs of the users (principals) who will be given access to the specified actions. The users must have AWS accounts, but do not need to be signed up for this service. - */ - AWSAccountId: DelegatesList; - /** - * The action you want to allow for the specified principal(s). Valid values: any Amazon SNS action name. - */ - ActionName: ActionsList; - } - export type Binary = Buffer|Uint8Array|Blob|string; - export interface CheckIfPhoneNumberIsOptedOutInput { - /** - * The phone number for which you want to check the opt out status. - */ - phoneNumber: PhoneNumber; - } - export interface CheckIfPhoneNumberIsOptedOutResponse { - /** - * Indicates whether the phone number is opted out: true – The phone number is opted out, meaning you cannot publish SMS messages to it. false – The phone number is opted in, meaning you can publish SMS messages to it. - */ - isOptedOut?: boolean; - } - export interface ConfirmSubscriptionInput { - /** - * The ARN of the topic for which you wish to confirm a subscription. - */ - TopicArn: topicARN; - /** - * Short-lived token sent to an endpoint during the Subscribe action. - */ - Token: token; - /** - * Disallows unauthenticated unsubscribes of the subscription. If the value of this parameter is true and the request has an AWS signature, then only the topic owner and the subscription owner can unsubscribe the endpoint. The unsubscribe action requires AWS authentication. - */ - AuthenticateOnUnsubscribe?: authenticateOnUnsubscribe; - } - export interface ConfirmSubscriptionResponse { - /** - * The ARN of the created subscription. - */ - SubscriptionArn?: subscriptionARN; - } - export interface CreateEndpointResponse { - /** - * EndpointArn returned from CreateEndpoint action. - */ - EndpointArn?: String; - } - export interface CreatePlatformApplicationInput { - /** - * Application names must be made up of only uppercase and lowercase ASCII letters, numbers, underscores, hyphens, and periods, and must be between 1 and 256 characters long. - */ - Name: String; - /** - * The following platforms are supported: ADM (Amazon Device Messaging), APNS (Apple Push Notification Service), APNS_SANDBOX, and GCM (Google Cloud Messaging). - */ - Platform: String; - /** - * For a list of attributes, see SetPlatformApplicationAttributes - */ - Attributes: MapStringToString; - } - export interface CreatePlatformApplicationResponse { - /** - * PlatformApplicationArn is returned. - */ - PlatformApplicationArn?: String; - } - export interface CreatePlatformEndpointInput { - /** - * PlatformApplicationArn returned from CreatePlatformApplication is used to create a an endpoint. - */ - PlatformApplicationArn: String; - /** - * Unique identifier created by the notification service for an app on a device. The specific name for Token will vary, depending on which notification service is being used. For example, when using APNS as the notification service, you need the device token. Alternatively, when using GCM or ADM, the device token equivalent is called the registration ID. - */ - Token: String; - /** - * Arbitrary user data to associate with the endpoint. Amazon SNS does not use this data. The data must be in UTF-8 format and less than 2KB. - */ - CustomUserData?: String; - /** - * For a list of attributes, see SetEndpointAttributes. - */ - Attributes?: MapStringToString; - } - export interface CreateTopicInput { - /** - * The name of the topic you want to create. Constraints: Topic names must be made up of only uppercase and lowercase ASCII letters, numbers, underscores, and hyphens, and must be between 1 and 256 characters long. - */ - Name: topicName; - } - export interface CreateTopicResponse { - /** - * The Amazon Resource Name (ARN) assigned to the created topic. - */ - TopicArn?: topicARN; - } - export type DelegatesList = delegate[]; - export interface DeleteEndpointInput { - /** - * EndpointArn of endpoint to delete. - */ - EndpointArn: String; - } - export interface DeletePlatformApplicationInput { - /** - * PlatformApplicationArn of platform application object to delete. - */ - PlatformApplicationArn: String; - } - export interface DeleteTopicInput { - /** - * The ARN of the topic you want to delete. - */ - TopicArn: topicARN; - } - export interface Endpoint { - /** - * EndpointArn for mobile app and device. - */ - EndpointArn?: String; - /** - * Attributes for endpoint. - */ - Attributes?: MapStringToString; - } - export interface GetEndpointAttributesInput { - /** - * EndpointArn for GetEndpointAttributes input. - */ - EndpointArn: String; - } - export interface GetEndpointAttributesResponse { - /** - * Attributes include the following: CustomUserData -- arbitrary user data to associate with the endpoint. Amazon SNS does not use this data. The data must be in UTF-8 format and less than 2KB. Enabled -- flag that enables/disables delivery to the endpoint. Amazon SNS will set this to false when a notification service indicates to Amazon SNS that the endpoint is invalid. Users can set it back to true, typically after updating Token. Token -- device token, also referred to as a registration id, for an app and mobile device. This is returned from the notification service when an app and mobile device are registered with the notification service. - */ - Attributes?: MapStringToString; - } - export interface GetPlatformApplicationAttributesInput { - /** - * PlatformApplicationArn for GetPlatformApplicationAttributesInput. - */ - PlatformApplicationArn: String; - } - export interface GetPlatformApplicationAttributesResponse { - /** - * Attributes include the following: EventEndpointCreated -- Topic ARN to which EndpointCreated event notifications should be sent. EventEndpointDeleted -- Topic ARN to which EndpointDeleted event notifications should be sent. EventEndpointUpdated -- Topic ARN to which EndpointUpdate event notifications should be sent. EventDeliveryFailure -- Topic ARN to which DeliveryFailure event notifications should be sent upon Direct Publish delivery failure (permanent) to one of the application's endpoints. - */ - Attributes?: MapStringToString; - } - export interface GetSMSAttributesInput { - /** - * A list of the individual attribute names, such as MonthlySpendLimit, for which you want values. For all attribute names, see SetSMSAttributes. If you don't use this parameter, Amazon SNS returns all SMS attributes. - */ - attributes?: ListString; - } - export interface GetSMSAttributesResponse { - /** - * The SMS attribute names and their values. - */ - attributes?: MapStringToString; - } - export interface GetSubscriptionAttributesInput { - /** - * The ARN of the subscription whose properties you want to get. - */ - SubscriptionArn: subscriptionARN; - } - export interface GetSubscriptionAttributesResponse { - /** - * A map of the subscription's attributes. Attributes in this map include the following: SubscriptionArn -- the subscription's ARN TopicArn -- the topic ARN that the subscription is associated with Owner -- the AWS account ID of the subscription's owner ConfirmationWasAuthenticated -- true if the subscription confirmation request was authenticated DeliveryPolicy -- the JSON serialization of the subscription's delivery policy EffectiveDeliveryPolicy -- the JSON serialization of the effective delivery policy that takes into account the topic delivery policy and account system defaults - */ - Attributes?: SubscriptionAttributesMap; - } - export interface GetTopicAttributesInput { - /** - * The ARN of the topic whose properties you want to get. - */ - TopicArn: topicARN; - } - export interface GetTopicAttributesResponse { - /** - * A map of the topic's attributes. Attributes in this map include the following: TopicArn -- the topic's ARN Owner -- the AWS account ID of the topic's owner Policy -- the JSON serialization of the topic's access control policy DisplayName -- the human-readable name used in the "From" field for notifications to email and email-json endpoints SubscriptionsPending -- the number of subscriptions pending confirmation on this topic SubscriptionsConfirmed -- the number of confirmed subscriptions on this topic SubscriptionsDeleted -- the number of deleted subscriptions on this topic DeliveryPolicy -- the JSON serialization of the topic's delivery policy EffectiveDeliveryPolicy -- the JSON serialization of the effective delivery policy that takes into account system defaults - */ - Attributes?: TopicAttributesMap; - } - export interface ListEndpointsByPlatformApplicationInput { - /** - * PlatformApplicationArn for ListEndpointsByPlatformApplicationInput action. - */ - PlatformApplicationArn: String; - /** - * NextToken string is used when calling ListEndpointsByPlatformApplication action to retrieve additional records that are available after the first page results. - */ - NextToken?: String; - } - export interface ListEndpointsByPlatformApplicationResponse { - /** - * Endpoints returned for ListEndpointsByPlatformApplication action. - */ - Endpoints?: ListOfEndpoints; - /** - * NextToken string is returned when calling ListEndpointsByPlatformApplication action if additional records are available after the first page results. - */ - NextToken?: String; - } - export type ListOfEndpoints = Endpoint[]; - export type ListOfPlatformApplications = PlatformApplication[]; - export interface ListPhoneNumbersOptedOutInput { - /** - * A NextToken string is used when you call the ListPhoneNumbersOptedOut action to retrieve additional records that are available after the first page of results. - */ - nextToken?: string; - } - export interface ListPhoneNumbersOptedOutResponse { - /** - * A list of phone numbers that are opted out of receiving SMS messages. The list is paginated, and each page can contain up to 100 phone numbers. - */ - phoneNumbers?: PhoneNumberList; - /** - * A NextToken string is returned when you call the ListPhoneNumbersOptedOut action if additional records are available after the first page of results. - */ - nextToken?: string; - } - export interface ListPlatformApplicationsInput { - /** - * NextToken string is used when calling ListPlatformApplications action to retrieve additional records that are available after the first page results. - */ - NextToken?: String; - } - export interface ListPlatformApplicationsResponse { - /** - * Platform applications returned when calling ListPlatformApplications action. - */ - PlatformApplications?: ListOfPlatformApplications; - /** - * NextToken string is returned when calling ListPlatformApplications action if additional records are available after the first page results. - */ - NextToken?: String; - } - export type ListString = String[]; - export interface ListSubscriptionsByTopicInput { - /** - * The ARN of the topic for which you wish to find subscriptions. - */ - TopicArn: topicARN; - /** - * Token returned by the previous ListSubscriptionsByTopic request. - */ - NextToken?: nextToken; - } - export interface ListSubscriptionsByTopicResponse { - /** - * A list of subscriptions. - */ - Subscriptions?: SubscriptionsList; - /** - * Token to pass along to the next ListSubscriptionsByTopic request. This element is returned if there are more subscriptions to retrieve. - */ - NextToken?: nextToken; - } - export interface ListSubscriptionsInput { - /** - * Token returned by the previous ListSubscriptions request. - */ - NextToken?: nextToken; - } - export interface ListSubscriptionsResponse { - /** - * A list of subscriptions. - */ - Subscriptions?: SubscriptionsList; - /** - * Token to pass along to the next ListSubscriptions request. This element is returned if there are more subscriptions to retrieve. - */ - NextToken?: nextToken; - } - export interface ListTopicsInput { - /** - * Token returned by the previous ListTopics request. - */ - NextToken?: nextToken; - } - export interface ListTopicsResponse { - /** - * A list of topic ARNs. - */ - Topics?: TopicsList; - /** - * Token to pass along to the next ListTopics request. This element is returned if there are additional topics to retrieve. - */ - NextToken?: nextToken; - } - export type MapStringToString = {[key: string]: String}; - export type MessageAttributeMap = {[key: string]: MessageAttributeValue}; - export interface MessageAttributeValue { - /** - * Amazon SNS supports the following logical data types: String, Number, and Binary. For more information, see Message Attribute Data Types. - */ - DataType: String; - /** - * Strings are Unicode with UTF8 binary encoding. For a list of code values, see http://en.wikipedia.org/wiki/ASCII#ASCII_printable_characters. - */ - StringValue?: String; - /** - * Binary type attributes can store any binary data, for example, compressed data, encrypted data, or images. - */ - BinaryValue?: Binary; - } - export interface OptInPhoneNumberInput { - /** - * The phone number to opt in. - */ - phoneNumber: PhoneNumber; - } - export interface OptInPhoneNumberResponse { - } - export type PhoneNumber = string; - export type PhoneNumberList = PhoneNumber[]; - export interface PlatformApplication { - /** - * PlatformApplicationArn for platform application object. - */ - PlatformApplicationArn?: String; - /** - * Attributes for platform application object. - */ - Attributes?: MapStringToString; - } - export interface PublishInput { - /** - * The topic you want to publish to. If you don't specify a value for the TopicArn parameter, you must specify a value for the PhoneNumber or TargetArn parameters. - */ - TopicArn?: topicARN; - /** - * Either TopicArn or EndpointArn, but not both. If you don't specify a value for the TargetArn parameter, you must specify a value for the PhoneNumber or TopicArn parameters. - */ - TargetArn?: String; - /** - * The phone number to which you want to deliver an SMS message. Use E.164 format. If you don't specify a value for the PhoneNumber parameter, you must specify a value for the TargetArn or TopicArn parameters. - */ - PhoneNumber?: String; - /** - * The message you want to send to the topic. If you want to send the same message to all transport protocols, include the text of the message as a String value. If you want to send different messages for each transport protocol, set the value of the MessageStructure parameter to json and use a JSON object for the Message parameter. Constraints: Messages must be UTF-8 encoded strings at most 256 KB in size (262144 bytes, not 262144 characters). JSON-specific constraints: Keys in the JSON object that correspond to supported transport protocols must have simple JSON string values. The values will be parsed (unescaped) before they are used in outgoing messages. Outbound notifications are JSON encoded (meaning that the characters will be reescaped for sending). Values have a minimum length of 0 (the empty string, "", is allowed). Values have a maximum length bounded by the overall message size (so, including multiple protocols may limit message sizes). Non-string values will cause the key to be ignored. Keys that do not correspond to supported transport protocols are ignored. Duplicate keys are not allowed. Failure to parse or validate any key or value in the message will cause the Publish call to return an error (no partial delivery). - */ - Message: message; - /** - * Optional parameter to be used as the "Subject" line when the message is delivered to email endpoints. This field will also be included, if present, in the standard JSON messages delivered to other endpoints. Constraints: Subjects must be ASCII text that begins with a letter, number, or punctuation mark; must not include line breaks or control characters; and must be less than 100 characters long. - */ - Subject?: subject; - /** - * Set MessageStructure to json if you want to send a different message for each protocol. For example, using one publish action, you can send a short message to your SMS subscribers and a longer message to your email subscribers. If you set MessageStructure to json, the value of the Message parameter must: be a syntactically valid JSON object; and contain at least a top-level JSON key of "default" with a value that is a string. You can define other top-level keys that define the message you want to send to a specific transport protocol (e.g., "http"). For information about sending different messages for each protocol using the AWS Management Console, go to Create Different Messages for Each Protocol in the Amazon Simple Notification Service Getting Started Guide. Valid value: json - */ - MessageStructure?: messageStructure; - /** - * Message attributes for Publish action. - */ - MessageAttributes?: MessageAttributeMap; - } - export interface PublishResponse { - /** - * Unique identifier assigned to the published message. Length Constraint: Maximum 100 characters - */ - MessageId?: messageId; - } - export interface RemovePermissionInput { - /** - * The ARN of the topic whose access control policy you wish to modify. - */ - TopicArn: topicARN; - /** - * The unique label of the statement you want to remove. - */ - Label: label; - } - export interface SetEndpointAttributesInput { - /** - * EndpointArn used for SetEndpointAttributes action. - */ - EndpointArn: String; - /** - * A map of the endpoint attributes. Attributes in this map include the following: CustomUserData -- arbitrary user data to associate with the endpoint. Amazon SNS does not use this data. The data must be in UTF-8 format and less than 2KB. Enabled -- flag that enables/disables delivery to the endpoint. Amazon SNS will set this to false when a notification service indicates to Amazon SNS that the endpoint is invalid. Users can set it back to true, typically after updating Token. Token -- device token, also referred to as a registration id, for an app and mobile device. This is returned from the notification service when an app and mobile device are registered with the notification service. - */ - Attributes: MapStringToString; - } - export interface SetPlatformApplicationAttributesInput { - /** - * PlatformApplicationArn for SetPlatformApplicationAttributes action. - */ - PlatformApplicationArn: String; - /** - * A map of the platform application attributes. Attributes in this map include the following: PlatformCredential -- The credential received from the notification service. For APNS/APNS_SANDBOX, PlatformCredential is private key. For GCM, PlatformCredential is "API key". For ADM, PlatformCredential is "client secret". PlatformPrincipal -- The principal received from the notification service. For APNS/APNS_SANDBOX, PlatformPrincipal is SSL certificate. For GCM, PlatformPrincipal is not applicable. For ADM, PlatformPrincipal is "client id". EventEndpointCreated -- Topic ARN to which EndpointCreated event notifications should be sent. EventEndpointDeleted -- Topic ARN to which EndpointDeleted event notifications should be sent. EventEndpointUpdated -- Topic ARN to which EndpointUpdate event notifications should be sent. EventDeliveryFailure -- Topic ARN to which DeliveryFailure event notifications should be sent upon Direct Publish delivery failure (permanent) to one of the application's endpoints. SuccessFeedbackRoleArn -- IAM role ARN used to give Amazon SNS write access to use CloudWatch Logs on your behalf. FailureFeedbackRoleArn -- IAM role ARN used to give Amazon SNS write access to use CloudWatch Logs on your behalf. SuccessFeedbackSampleRate -- Sample rate percentage (0-100) of successfully delivered messages. - */ - Attributes: MapStringToString; - } - export interface SetSMSAttributesInput { - /** - * The default settings for sending SMS messages from your account. You can set values for the following attribute names: MonthlySpendLimit – The maximum amount in USD that you are willing to spend each month to send SMS messages. When Amazon SNS determines that sending an SMS message would incur a cost that exceeds this limit, it stops sending SMS messages within minutes. Amazon SNS stops sending SMS messages within minutes of the limit being crossed. During that interval, if you continue to send SMS messages, you will incur costs that exceed your limit. By default, the spend limit is set to the maximum allowed by Amazon SNS. If you want to exceed the maximum, contact AWS Support or your AWS sales representative for a service limit increase. DeliveryStatusIAMRole – The ARN of the IAM role that allows Amazon SNS to write logs about SMS deliveries in CloudWatch Logs. For each SMS message that you send, Amazon SNS writes a log that includes the message price, the success or failure status, the reason for failure (if the message failed), the message dwell time, and other information. DeliveryStatusSuccessSamplingRate – The percentage of successful SMS deliveries for which Amazon SNS will write logs in CloudWatch Logs. The value can be an integer from 0 - 100. For example, to write logs only for failed deliveries, set this value to 0. To write logs for 10% of your successful deliveries, set it to 10. DefaultSenderID – A string, such as your business brand, that is displayed as the sender on the receiving device. Support for sender IDs varies by country. The sender ID can be 1 - 11 alphanumeric characters, and it must contain at least one letter. DefaultSMSType – The type of SMS message that you will send by default. You can assign the following values: Promotional – (Default) Noncritical messages, such as marketing messages. Amazon SNS optimizes the message delivery to incur the lowest cost. Transactional – Critical messages that support customer transactions, such as one-time passcodes for multi-factor authentication. Amazon SNS optimizes the message delivery to achieve the highest reliability. UsageReportS3Bucket – The name of the Amazon S3 bucket to receive daily SMS usage reports from Amazon SNS. Each day, Amazon SNS will deliver a usage report as a CSV file to the bucket. The report includes the following information for each SMS message that was successfully delivered by your account: Time that the message was published (in UTC) Message ID Destination phone number Message type Delivery status Message price (in USD) Part number (a message is split into multiple parts if it is too long for a single message) Total number of parts To receive the report, the bucket must have a policy that allows the Amazon SNS service principle to perform the s3:PutObject and s3:GetBucketLocation actions. For an example bucket policy and usage report, see Monitoring SMS Activity in the Amazon SNS Developer Guide. - */ - attributes: MapStringToString; - } - export interface SetSMSAttributesResponse { - } - export interface SetSubscriptionAttributesInput { - /** - * The ARN of the subscription to modify. - */ - SubscriptionArn: subscriptionARN; - /** - * The name of the attribute you want to set. Only a subset of the subscriptions attributes are mutable. Valid values: DeliveryPolicy | RawMessageDelivery - */ - AttributeName: attributeName; - /** - * The new value for the attribute in JSON format. - */ - AttributeValue?: attributeValue; - } - export interface SetTopicAttributesInput { - /** - * The ARN of the topic to modify. - */ - TopicArn: topicARN; - /** - * The name of the attribute you want to set. Only a subset of the topic's attributes are mutable. Valid values: Policy | DisplayName | DeliveryPolicy - */ - AttributeName: attributeName; - /** - * The new value for the attribute. - */ - AttributeValue?: attributeValue; - } - export type String = string; - export interface SubscribeInput { - /** - * The ARN of the topic you want to subscribe to. - */ - TopicArn: topicARN; - /** - * The protocol you want to use. Supported protocols include: http -- delivery of JSON-encoded message via HTTP POST https -- delivery of JSON-encoded message via HTTPS POST email -- delivery of message via SMTP email-json -- delivery of JSON-encoded message via SMTP sms -- delivery of message via SMS sqs -- delivery of JSON-encoded message to an Amazon SQS queue application -- delivery of JSON-encoded message to an EndpointArn for a mobile app and device. lambda -- delivery of JSON-encoded message to an AWS Lambda function. - */ - Protocol: protocol; - /** - * The endpoint that you want to receive notifications. Endpoints vary by protocol: For the http protocol, the endpoint is an URL beginning with "http://" For the https protocol, the endpoint is a URL beginning with "https://" For the email protocol, the endpoint is an email address For the email-json protocol, the endpoint is an email address For the sms protocol, the endpoint is a phone number of an SMS-enabled device For the sqs protocol, the endpoint is the ARN of an Amazon SQS queue For the application protocol, the endpoint is the EndpointArn of a mobile app and device. For the lambda protocol, the endpoint is the ARN of an AWS Lambda function. - */ - Endpoint?: endpoint; - } - export interface SubscribeResponse { - /** - * The ARN of the subscription, if the service was able to create a subscription immediately (without requiring endpoint owner confirmation). - */ - SubscriptionArn?: subscriptionARN; - } - export interface Subscription { - /** - * The subscription's ARN. - */ - SubscriptionArn?: subscriptionARN; - /** - * The subscription's owner. - */ - Owner?: account; - /** - * The subscription's protocol. - */ - Protocol?: protocol; - /** - * The subscription's endpoint (format depends on the protocol). - */ - Endpoint?: endpoint; - /** - * The ARN of the subscription's topic. - */ - TopicArn?: topicARN; - } - export type SubscriptionAttributesMap = {[key: string]: attributeValue}; - export type SubscriptionsList = Subscription[]; - export interface Topic { - /** - * The topic's ARN. - */ - TopicArn?: topicARN; - } - export type TopicAttributesMap = {[key: string]: attributeValue}; - export type TopicsList = Topic[]; - export interface UnsubscribeInput { - /** - * The ARN of the subscription to be deleted. - */ - SubscriptionArn: subscriptionARN; - } - export type account = string; - export type action = string; - export type attributeName = string; - export type attributeValue = string; - export type authenticateOnUnsubscribe = string; - export type delegate = string; - export type endpoint = string; - export type label = string; - export type message = string; - export type messageId = string; - export type messageStructure = string; - export type nextToken = string; - export type protocol = string; - export type subject = string; - export type subscriptionARN = string; - export type token = string; - export type topicARN = string; - export type topicName = string; - /** - * A string in YYYY-MM-DD format that represents the latest possible API version that can be used in this service. Specify 'latest' to use the latest possible version. - */ - export type apiVersion = "2010-03-31"|"latest"|string; - export interface ClientApiVersions { - /** - * A string in YYYY-MM-DD format that represents the latest possible API version that can be used in this service. Specify 'latest' to use the latest possible version. - */ - apiVersion?: apiVersion; - } - export type ClientConfiguration = ServiceConfigurationOptions & ClientApiVersions; - /** - * Contains interfaces for use with the SNS client. - */ - export import Types = SNS; -} -export = SNS; diff --git a/workshops/monte-carlo-on-ec2-spot-fleet/src/web/node_modules/aws-sdk/clients/sns.js b/workshops/monte-carlo-on-ec2-spot-fleet/src/web/node_modules/aws-sdk/clients/sns.js deleted file mode 100644 index 716d9480..00000000 --- a/workshops/monte-carlo-on-ec2-spot-fleet/src/web/node_modules/aws-sdk/clients/sns.js +++ /dev/null @@ -1,18 +0,0 @@ -require('../lib/node_loader'); -var AWS = require('../lib/core'); -var Service = AWS.Service; -var apiLoader = AWS.apiLoader; - -apiLoader.services['sns'] = {}; -AWS.SNS = Service.defineService('sns', ['2010-03-31']); -Object.defineProperty(apiLoader.services['sns'], '2010-03-31', { - get: function get() { - var model = require('../apis/sns-2010-03-31.min.json'); - model.paginators = require('../apis/sns-2010-03-31.paginators.json').pagination; - return model; - }, - enumerable: true, - configurable: true -}); - -module.exports = AWS.SNS; diff --git a/workshops/monte-carlo-on-ec2-spot-fleet/src/web/node_modules/aws-sdk/clients/sqs.d.ts b/workshops/monte-carlo-on-ec2-spot-fleet/src/web/node_modules/aws-sdk/clients/sqs.d.ts deleted file mode 100644 index d02aee8d..00000000 --- a/workshops/monte-carlo-on-ec2-spot-fleet/src/web/node_modules/aws-sdk/clients/sqs.d.ts +++ /dev/null @@ -1,633 +0,0 @@ -import {Request} from '../lib/request'; -import {Response} from '../lib/response'; -import {AWSError} from '../lib/error'; -import {Service} from '../lib/service'; -import {ServiceConfigurationOptions} from '../lib/service'; -import {ConfigBase as Config} from '../lib/config'; -interface Blob {} -declare class SQS extends Service { - /** - * Constructs a service object. This object has one method for each API operation. - */ - constructor(options?: SQS.Types.ClientConfiguration) - config: Config & SQS.Types.ClientConfiguration; - /** - * Adds a permission to a queue for a specific principal. This allows sharing access to the queue. When you create a queue, you have full control access rights for the queue. Only you, the owner of the queue, can grant or deny permissions to the queue. For more information about these permissions, see Shared Queues in the Amazon SQS Developer Guide. AddPermission writes an Amazon-SQS-generated policy. If you want to write your own policy, use SetQueueAttributes to upload your policy. For more information about writing your own policy, see Using The Access Policy Language in the Amazon SQS Developer Guide. Some actions take lists of parameters. These lists are specified using the param.n notation. Values of n are integers starting from 1. For example, a parameter list with two elements looks like this: &Attribute.1=this &Attribute.2=that - */ - addPermission(params: SQS.Types.AddPermissionRequest, callback?: (err: AWSError, data: {}) => void): Request<{}, AWSError>; - /** - * Adds a permission to a queue for a specific principal. This allows sharing access to the queue. When you create a queue, you have full control access rights for the queue. Only you, the owner of the queue, can grant or deny permissions to the queue. For more information about these permissions, see Shared Queues in the Amazon SQS Developer Guide. AddPermission writes an Amazon-SQS-generated policy. If you want to write your own policy, use SetQueueAttributes to upload your policy. For more information about writing your own policy, see Using The Access Policy Language in the Amazon SQS Developer Guide. Some actions take lists of parameters. These lists are specified using the param.n notation. Values of n are integers starting from 1. For example, a parameter list with two elements looks like this: &Attribute.1=this &Attribute.2=that - */ - addPermission(callback?: (err: AWSError, data: {}) => void): Request<{}, AWSError>; - /** - * Changes the visibility timeout of a specified message in a queue to a new value. The maximum allowed timeout value is 12 hours. Thus, you can't extend the timeout of a message in an existing queue to more than a total visibility timeout of 12 hours. For more information, see Visibility Timeout in the Amazon SQS Developer Guide. For example, you have a message with a visibility timeout of 5 minutes. After 3 minutes, you call ChangeMessageVisiblity with a timeout of 10 minutes. At that time, the timeout for the message is extended by 10 minutes beyond the time of the ChangeMessageVisibility action. This results in a total visibility timeout of 13 minutes. You can continue to call the ChangeMessageVisibility to extend the visibility timeout to a maximum of 12 hours. If you try to extend the visibility timeout beyond 12 hours, your request is rejected. A message is considered to be in flight after it's received from a queue by a consumer, but not yet deleted from the queue. For standard queues, there can be a maximum of 120,000 inflight messages per queue. If you reach this limit, Amazon SQS returns the OverLimit error message. To avoid reaching the limit, you should delete messages from the queue after they're processed. You can also increase the number of queues you use to process your messages. For FIFO queues, there can be a maximum of 20,000 inflight messages per queue. If you reach this limit, Amazon SQS returns no error messages. If you attempt to set the VisibilityTimeout to a value greater than the maximum time left, Amazon SQS returns an error. Amazon SQS doesn't automatically recalculate and increase the timeout to the maximum remaining time. Unlike with a queue, when you change the visibility timeout for a specific message the timeout value is applied immediately but isn't saved in memory for that message. If you don't delete a message after it is received, the visibility timeout for the message reverts to the original timeout value (not to the value you set using the ChangeMessageVisibility action) the next time the message is received. - */ - changeMessageVisibility(params: SQS.Types.ChangeMessageVisibilityRequest, callback?: (err: AWSError, data: {}) => void): Request<{}, AWSError>; - /** - * Changes the visibility timeout of a specified message in a queue to a new value. The maximum allowed timeout value is 12 hours. Thus, you can't extend the timeout of a message in an existing queue to more than a total visibility timeout of 12 hours. For more information, see Visibility Timeout in the Amazon SQS Developer Guide. For example, you have a message with a visibility timeout of 5 minutes. After 3 minutes, you call ChangeMessageVisiblity with a timeout of 10 minutes. At that time, the timeout for the message is extended by 10 minutes beyond the time of the ChangeMessageVisibility action. This results in a total visibility timeout of 13 minutes. You can continue to call the ChangeMessageVisibility to extend the visibility timeout to a maximum of 12 hours. If you try to extend the visibility timeout beyond 12 hours, your request is rejected. A message is considered to be in flight after it's received from a queue by a consumer, but not yet deleted from the queue. For standard queues, there can be a maximum of 120,000 inflight messages per queue. If you reach this limit, Amazon SQS returns the OverLimit error message. To avoid reaching the limit, you should delete messages from the queue after they're processed. You can also increase the number of queues you use to process your messages. For FIFO queues, there can be a maximum of 20,000 inflight messages per queue. If you reach this limit, Amazon SQS returns no error messages. If you attempt to set the VisibilityTimeout to a value greater than the maximum time left, Amazon SQS returns an error. Amazon SQS doesn't automatically recalculate and increase the timeout to the maximum remaining time. Unlike with a queue, when you change the visibility timeout for a specific message the timeout value is applied immediately but isn't saved in memory for that message. If you don't delete a message after it is received, the visibility timeout for the message reverts to the original timeout value (not to the value you set using the ChangeMessageVisibility action) the next time the message is received. - */ - changeMessageVisibility(callback?: (err: AWSError, data: {}) => void): Request<{}, AWSError>; - /** - * Changes the visibility timeout of multiple messages. This is a batch version of ChangeMessageVisibility. The result of the action on each message is reported individually in the response. You can send up to 10 ChangeMessageVisibility requests with each ChangeMessageVisibilityBatch action. Because the batch request can result in a combination of successful and unsuccessful actions, you should check for batch errors even when the call returns an HTTP status code of 200. Some actions take lists of parameters. These lists are specified using the param.n notation. Values of n are integers starting from 1. For example, a parameter list with two elements looks like this: &Attribute.1=this &Attribute.2=that - */ - changeMessageVisibilityBatch(params: SQS.Types.ChangeMessageVisibilityBatchRequest, callback?: (err: AWSError, data: SQS.Types.ChangeMessageVisibilityBatchResult) => void): Request; - /** - * Changes the visibility timeout of multiple messages. This is a batch version of ChangeMessageVisibility. The result of the action on each message is reported individually in the response. You can send up to 10 ChangeMessageVisibility requests with each ChangeMessageVisibilityBatch action. Because the batch request can result in a combination of successful and unsuccessful actions, you should check for batch errors even when the call returns an HTTP status code of 200. Some actions take lists of parameters. These lists are specified using the param.n notation. Values of n are integers starting from 1. For example, a parameter list with two elements looks like this: &Attribute.1=this &Attribute.2=that - */ - changeMessageVisibilityBatch(callback?: (err: AWSError, data: SQS.Types.ChangeMessageVisibilityBatchResult) => void): Request; - /** - * Creates a new standard or FIFO queue. You can pass one or more attributes in the request. Keep the following caveats in mind: If you don't specify the FifoQueue attribute, Amazon SQS creates a standard queue. You can't change the queue type after you create it and you can't convert an existing standard queue into a FIFO queue. You must either create a new FIFO queue for your application or delete your existing standard queue and recreate it as a FIFO queue. For more information, see Moving From a Standard Queue to a FIFO Queue in the Amazon SQS Developer Guide. If you don't provide a value for an attribute, the queue is created with the default value for the attribute. If you delete a queue, you must wait at least 60 seconds before creating a queue with the same name. To successfully create a new queue, you must provide a queue name that adheres to the limits related to queues and is unique within the scope of your queues. To get the queue URL, use the GetQueueUrl action. GetQueueUrl requires only the QueueName parameter. be aware of existing queue names: If you provide the name of an existing queue along with the exact names and values of all the queue's attributes, CreateQueue returns the queue URL for the existing queue. If the queue name, attribute names, or attribute values don't match an existing queue, CreateQueue returns an error. Some actions take lists of parameters. These lists are specified using the param.n notation. Values of n are integers starting from 1. For example, a parameter list with two elements looks like this: &Attribute.1=this &Attribute.2=that - */ - createQueue(params: SQS.Types.CreateQueueRequest, callback?: (err: AWSError, data: SQS.Types.CreateQueueResult) => void): Request; - /** - * Creates a new standard or FIFO queue. You can pass one or more attributes in the request. Keep the following caveats in mind: If you don't specify the FifoQueue attribute, Amazon SQS creates a standard queue. You can't change the queue type after you create it and you can't convert an existing standard queue into a FIFO queue. You must either create a new FIFO queue for your application or delete your existing standard queue and recreate it as a FIFO queue. For more information, see Moving From a Standard Queue to a FIFO Queue in the Amazon SQS Developer Guide. If you don't provide a value for an attribute, the queue is created with the default value for the attribute. If you delete a queue, you must wait at least 60 seconds before creating a queue with the same name. To successfully create a new queue, you must provide a queue name that adheres to the limits related to queues and is unique within the scope of your queues. To get the queue URL, use the GetQueueUrl action. GetQueueUrl requires only the QueueName parameter. be aware of existing queue names: If you provide the name of an existing queue along with the exact names and values of all the queue's attributes, CreateQueue returns the queue URL for the existing queue. If the queue name, attribute names, or attribute values don't match an existing queue, CreateQueue returns an error. Some actions take lists of parameters. These lists are specified using the param.n notation. Values of n are integers starting from 1. For example, a parameter list with two elements looks like this: &Attribute.1=this &Attribute.2=that - */ - createQueue(callback?: (err: AWSError, data: SQS.Types.CreateQueueResult) => void): Request; - /** - * Deletes the specified message from the specified queue. You specify the message by using the message's receipt handle and not the MessageId you receive when you send the message. Even if the message is locked by another reader due to the visibility timeout setting, it is still deleted from the queue. If you leave a message in the queue for longer than the queue's configured retention period, Amazon SQS automatically deletes the message. The receipt handle is associated with a specific instance of receiving the message. If you receive a message more than once, the receipt handle you get each time you receive the message is different. If you don't provide the most recently received receipt handle for the message when you use the DeleteMessage action, the request succeeds, but the message might not be deleted. For standard queues, it is possible to receive a message even after you delete it. This might happen on rare occasions if one of the servers storing a copy of the message is unavailable when you send the request to delete the message. The copy remains on the server and might be returned to you on a subsequent receive request. You should ensure that your application is idempotent, so that receiving a message more than once does not cause issues. - */ - deleteMessage(params: SQS.Types.DeleteMessageRequest, callback?: (err: AWSError, data: {}) => void): Request<{}, AWSError>; - /** - * Deletes the specified message from the specified queue. You specify the message by using the message's receipt handle and not the MessageId you receive when you send the message. Even if the message is locked by another reader due to the visibility timeout setting, it is still deleted from the queue. If you leave a message in the queue for longer than the queue's configured retention period, Amazon SQS automatically deletes the message. The receipt handle is associated with a specific instance of receiving the message. If you receive a message more than once, the receipt handle you get each time you receive the message is different. If you don't provide the most recently received receipt handle for the message when you use the DeleteMessage action, the request succeeds, but the message might not be deleted. For standard queues, it is possible to receive a message even after you delete it. This might happen on rare occasions if one of the servers storing a copy of the message is unavailable when you send the request to delete the message. The copy remains on the server and might be returned to you on a subsequent receive request. You should ensure that your application is idempotent, so that receiving a message more than once does not cause issues. - */ - deleteMessage(callback?: (err: AWSError, data: {}) => void): Request<{}, AWSError>; - /** - * Deletes up to ten messages from the specified queue. This is a batch version of DeleteMessage. The result of the action on each message is reported individually in the response. Because the batch request can result in a combination of successful and unsuccessful actions, you should check for batch errors even when the call returns an HTTP status code of 200. Some actions take lists of parameters. These lists are specified using the param.n notation. Values of n are integers starting from 1. For example, a parameter list with two elements looks like this: &Attribute.1=this &Attribute.2=that - */ - deleteMessageBatch(params: SQS.Types.DeleteMessageBatchRequest, callback?: (err: AWSError, data: SQS.Types.DeleteMessageBatchResult) => void): Request; - /** - * Deletes up to ten messages from the specified queue. This is a batch version of DeleteMessage. The result of the action on each message is reported individually in the response. Because the batch request can result in a combination of successful and unsuccessful actions, you should check for batch errors even when the call returns an HTTP status code of 200. Some actions take lists of parameters. These lists are specified using the param.n notation. Values of n are integers starting from 1. For example, a parameter list with two elements looks like this: &Attribute.1=this &Attribute.2=that - */ - deleteMessageBatch(callback?: (err: AWSError, data: SQS.Types.DeleteMessageBatchResult) => void): Request; - /** - * Deletes the queue specified by the QueueUrl, regardless of the queue's contents. If the specified queue doesn't exist, Amazon SQS returns a successful response. Be careful with the DeleteQueue action: When you delete a queue, any messages in the queue are no longer available. When you delete a queue, the deletion process takes up to 60 seconds. Requests you send involving that queue during the 60 seconds might succeed. For example, a SendMessage request might succeed, but after 60 seconds the queue and the message you sent no longer exist. When you delete a queue, you must wait at least 60 seconds before creating a queue with the same name. - */ - deleteQueue(params: SQS.Types.DeleteQueueRequest, callback?: (err: AWSError, data: {}) => void): Request<{}, AWSError>; - /** - * Deletes the queue specified by the QueueUrl, regardless of the queue's contents. If the specified queue doesn't exist, Amazon SQS returns a successful response. Be careful with the DeleteQueue action: When you delete a queue, any messages in the queue are no longer available. When you delete a queue, the deletion process takes up to 60 seconds. Requests you send involving that queue during the 60 seconds might succeed. For example, a SendMessage request might succeed, but after 60 seconds the queue and the message you sent no longer exist. When you delete a queue, you must wait at least 60 seconds before creating a queue with the same name. - */ - deleteQueue(callback?: (err: AWSError, data: {}) => void): Request<{}, AWSError>; - /** - * Gets attributes for the specified queue. To determine whether a queue is FIFO, you can check whether QueueName ends with the .fifo suffix. Some actions take lists of parameters. These lists are specified using the param.n notation. Values of n are integers starting from 1. For example, a parameter list with two elements looks like this: &Attribute.1=this &Attribute.2=that - */ - getQueueAttributes(params: SQS.Types.GetQueueAttributesRequest, callback?: (err: AWSError, data: SQS.Types.GetQueueAttributesResult) => void): Request; - /** - * Gets attributes for the specified queue. To determine whether a queue is FIFO, you can check whether QueueName ends with the .fifo suffix. Some actions take lists of parameters. These lists are specified using the param.n notation. Values of n are integers starting from 1. For example, a parameter list with two elements looks like this: &Attribute.1=this &Attribute.2=that - */ - getQueueAttributes(callback?: (err: AWSError, data: SQS.Types.GetQueueAttributesResult) => void): Request; - /** - * Returns the URL of an existing queue. This action provides a simple way to retrieve the URL of an Amazon SQS queue. To access a queue that belongs to another AWS account, use the QueueOwnerAWSAccountId parameter to specify the account ID of the queue's owner. The queue's owner must grant you permission to access the queue. For more information about shared queue access, see AddPermission or see Shared Queues in the Amazon SQS Developer Guide. - */ - getQueueUrl(params: SQS.Types.GetQueueUrlRequest, callback?: (err: AWSError, data: SQS.Types.GetQueueUrlResult) => void): Request; - /** - * Returns the URL of an existing queue. This action provides a simple way to retrieve the URL of an Amazon SQS queue. To access a queue that belongs to another AWS account, use the QueueOwnerAWSAccountId parameter to specify the account ID of the queue's owner. The queue's owner must grant you permission to access the queue. For more information about shared queue access, see AddPermission or see Shared Queues in the Amazon SQS Developer Guide. - */ - getQueueUrl(callback?: (err: AWSError, data: SQS.Types.GetQueueUrlResult) => void): Request; - /** - * Returns a list of your queues that have the RedrivePolicy queue attribute configured with a dead-letter queue. For more information about using dead-letter queues, see Using Amazon SQS Dead-Letter Queues in the Amazon SQS Developer Guide. - */ - listDeadLetterSourceQueues(params: SQS.Types.ListDeadLetterSourceQueuesRequest, callback?: (err: AWSError, data: SQS.Types.ListDeadLetterSourceQueuesResult) => void): Request; - /** - * Returns a list of your queues that have the RedrivePolicy queue attribute configured with a dead-letter queue. For more information about using dead-letter queues, see Using Amazon SQS Dead-Letter Queues in the Amazon SQS Developer Guide. - */ - listDeadLetterSourceQueues(callback?: (err: AWSError, data: SQS.Types.ListDeadLetterSourceQueuesResult) => void): Request; - /** - * Returns a list of your queues. The maximum number of queues that can be returned is 1,000. If you specify a value for the optional QueueNamePrefix parameter, only queues with a name that begins with the specified value are returned. - */ - listQueues(params: SQS.Types.ListQueuesRequest, callback?: (err: AWSError, data: SQS.Types.ListQueuesResult) => void): Request; - /** - * Returns a list of your queues. The maximum number of queues that can be returned is 1,000. If you specify a value for the optional QueueNamePrefix parameter, only queues with a name that begins with the specified value are returned. - */ - listQueues(callback?: (err: AWSError, data: SQS.Types.ListQueuesResult) => void): Request; - /** - * Deletes the messages in a queue specified by the QueueURL parameter. When you use the PurgeQueue action, you can't retrieve a message deleted from a queue. When you purge a queue, the message deletion process takes up to 60 seconds. All messages sent to the queue before calling the PurgeQueue action are deleted. Messages sent to the queue while it is being purged might be deleted. While the queue is being purged, messages sent to the queue before PurgeQueue is called might be received, but are deleted within the next minute. - */ - purgeQueue(params: SQS.Types.PurgeQueueRequest, callback?: (err: AWSError, data: {}) => void): Request<{}, AWSError>; - /** - * Deletes the messages in a queue specified by the QueueURL parameter. When you use the PurgeQueue action, you can't retrieve a message deleted from a queue. When you purge a queue, the message deletion process takes up to 60 seconds. All messages sent to the queue before calling the PurgeQueue action are deleted. Messages sent to the queue while it is being purged might be deleted. While the queue is being purged, messages sent to the queue before PurgeQueue is called might be received, but are deleted within the next minute. - */ - purgeQueue(callback?: (err: AWSError, data: {}) => void): Request<{}, AWSError>; - /** - * Retrieves one or more messages (up to 10), from the specified queue. Using the WaitTimeSeconds parameter enables long-poll support. For more information, see Amazon SQS Long Polling in the Amazon SQS Developer Guide. Short poll is the default behavior where a weighted random set of machines is sampled on a ReceiveMessage call. Thus, only the messages on the sampled machines are returned. If the number of messages in the queue is small (fewer than 1,000), you most likely get fewer messages than you requested per ReceiveMessage call. If the number of messages in the queue is extremely small, you might not receive any messages in a particular ReceiveMessage response. If this happens, repeat the request. For each message returned, the response includes the following: The message body. An MD5 digest of the message body. For information about MD5, see RFC1321. The MessageId you received when you sent the message to the queue. The receipt handle. The message attributes. An MD5 digest of the message attributes. The receipt handle is the identifier you must provide when deleting the message. For more information, see Queue and Message Identifiers in the Amazon SQS Developer Guide. You can provide the VisibilityTimeout parameter in your request. The parameter is applied to the messages that Amazon SQS returns in the response. If you don't include the parameter, the overall visibility timeout for the queue is used for the returned messages. For more information, see Visibility Timeout in the Amazon SQS Developer Guide. A message that isn't deleted or a message whose visibility isn't extended before the visibility timeout expires counts as a failed receive. Depending on the configuration of the queue, the message might be sent to the dead-letter queue. In the future, new attributes might be added. If you write code that calls this action, we recommend that you structure your code so that it can handle new attributes gracefully. - */ - receiveMessage(params: SQS.Types.ReceiveMessageRequest, callback?: (err: AWSError, data: SQS.Types.ReceiveMessageResult) => void): Request; - /** - * Retrieves one or more messages (up to 10), from the specified queue. Using the WaitTimeSeconds parameter enables long-poll support. For more information, see Amazon SQS Long Polling in the Amazon SQS Developer Guide. Short poll is the default behavior where a weighted random set of machines is sampled on a ReceiveMessage call. Thus, only the messages on the sampled machines are returned. If the number of messages in the queue is small (fewer than 1,000), you most likely get fewer messages than you requested per ReceiveMessage call. If the number of messages in the queue is extremely small, you might not receive any messages in a particular ReceiveMessage response. If this happens, repeat the request. For each message returned, the response includes the following: The message body. An MD5 digest of the message body. For information about MD5, see RFC1321. The MessageId you received when you sent the message to the queue. The receipt handle. The message attributes. An MD5 digest of the message attributes. The receipt handle is the identifier you must provide when deleting the message. For more information, see Queue and Message Identifiers in the Amazon SQS Developer Guide. You can provide the VisibilityTimeout parameter in your request. The parameter is applied to the messages that Amazon SQS returns in the response. If you don't include the parameter, the overall visibility timeout for the queue is used for the returned messages. For more information, see Visibility Timeout in the Amazon SQS Developer Guide. A message that isn't deleted or a message whose visibility isn't extended before the visibility timeout expires counts as a failed receive. Depending on the configuration of the queue, the message might be sent to the dead-letter queue. In the future, new attributes might be added. If you write code that calls this action, we recommend that you structure your code so that it can handle new attributes gracefully. - */ - receiveMessage(callback?: (err: AWSError, data: SQS.Types.ReceiveMessageResult) => void): Request; - /** - * Revokes any permissions in the queue policy that matches the specified Label parameter. Only the owner of the queue can remove permissions. - */ - removePermission(params: SQS.Types.RemovePermissionRequest, callback?: (err: AWSError, data: {}) => void): Request<{}, AWSError>; - /** - * Revokes any permissions in the queue policy that matches the specified Label parameter. Only the owner of the queue can remove permissions. - */ - removePermission(callback?: (err: AWSError, data: {}) => void): Request<{}, AWSError>; - /** - * Delivers a message to the specified queue. A message can include only XML, JSON, and unformatted text. The following Unicode characters are allowed: #x9 | #xA | #xD | #x20 to #xD7FF | #xE000 to #xFFFD | #x10000 to #x10FFFF Any characters not included in this list will be rejected. For more information, see the W3C specification for characters. - */ - sendMessage(params: SQS.Types.SendMessageRequest, callback?: (err: AWSError, data: SQS.Types.SendMessageResult) => void): Request; - /** - * Delivers a message to the specified queue. A message can include only XML, JSON, and unformatted text. The following Unicode characters are allowed: #x9 | #xA | #xD | #x20 to #xD7FF | #xE000 to #xFFFD | #x10000 to #x10FFFF Any characters not included in this list will be rejected. For more information, see the W3C specification for characters. - */ - sendMessage(callback?: (err: AWSError, data: SQS.Types.SendMessageResult) => void): Request; - /** - * Delivers up to ten messages to the specified queue. This is a batch version of SendMessage. For a FIFO queue, multiple messages within a single batch are enqueued in the order they are sent. The result of sending each message is reported individually in the response. Because the batch request can result in a combination of successful and unsuccessful actions, you should check for batch errors even when the call returns an HTTP status code of 200. The maximum allowed individual message size and the maximum total payload size (the sum of the individual lengths of all of the batched messages) are both 256 KB (262,144 bytes). A message can include only XML, JSON, and unformatted text. The following Unicode characters are allowed: #x9 | #xA | #xD | #x20 to #xD7FF | #xE000 to #xFFFD | #x10000 to #x10FFFF Any characters not included in this list will be rejected. For more information, see the W3C specification for characters. If you don't specify the DelaySeconds parameter for an entry, Amazon SQS uses the default value for the queue. Some actions take lists of parameters. These lists are specified using the param.n notation. Values of n are integers starting from 1. For example, a parameter list with two elements looks like this: &Attribute.1=this &Attribute.2=that - */ - sendMessageBatch(params: SQS.Types.SendMessageBatchRequest, callback?: (err: AWSError, data: SQS.Types.SendMessageBatchResult) => void): Request; - /** - * Delivers up to ten messages to the specified queue. This is a batch version of SendMessage. For a FIFO queue, multiple messages within a single batch are enqueued in the order they are sent. The result of sending each message is reported individually in the response. Because the batch request can result in a combination of successful and unsuccessful actions, you should check for batch errors even when the call returns an HTTP status code of 200. The maximum allowed individual message size and the maximum total payload size (the sum of the individual lengths of all of the batched messages) are both 256 KB (262,144 bytes). A message can include only XML, JSON, and unformatted text. The following Unicode characters are allowed: #x9 | #xA | #xD | #x20 to #xD7FF | #xE000 to #xFFFD | #x10000 to #x10FFFF Any characters not included in this list will be rejected. For more information, see the W3C specification for characters. If you don't specify the DelaySeconds parameter for an entry, Amazon SQS uses the default value for the queue. Some actions take lists of parameters. These lists are specified using the param.n notation. Values of n are integers starting from 1. For example, a parameter list with two elements looks like this: &Attribute.1=this &Attribute.2=that - */ - sendMessageBatch(callback?: (err: AWSError, data: SQS.Types.SendMessageBatchResult) => void): Request; - /** - * Sets the value of one or more queue attributes. When you change a queue's attributes, the change can take up to 60 seconds for most of the attributes to propagate throughout the Amazon SQS system. Changes made to the MessageRetentionPeriod attribute can take up to 15 minutes. In the future, new attributes might be added. If you write code that calls this action, we recommend that you structure your code so that it can handle new attributes gracefully. - */ - setQueueAttributes(params: SQS.Types.SetQueueAttributesRequest, callback?: (err: AWSError, data: {}) => void): Request<{}, AWSError>; - /** - * Sets the value of one or more queue attributes. When you change a queue's attributes, the change can take up to 60 seconds for most of the attributes to propagate throughout the Amazon SQS system. Changes made to the MessageRetentionPeriod attribute can take up to 15 minutes. In the future, new attributes might be added. If you write code that calls this action, we recommend that you structure your code so that it can handle new attributes gracefully. - */ - setQueueAttributes(callback?: (err: AWSError, data: {}) => void): Request<{}, AWSError>; -} -declare namespace SQS { - export type AWSAccountIdList = String[]; - export type ActionNameList = String[]; - export interface AddPermissionRequest { - /** - * The URL of the Amazon SQS queue to which permissions are added. Queue URLs are case-sensitive. - */ - QueueUrl: String; - /** - * The unique identification of the permission you're setting (for example, AliceSendMessage). Maximum 80 characters. Allowed characters include alphanumeric characters, hyphens (-), and underscores (_). - */ - Label: String; - /** - * The AWS account number of the principal who is given permission. The principal must have an AWS account, but does not need to be signed up for Amazon SQS. For information about locating the AWS account identification, see Your AWS Identifiers in the Amazon SQS Developer Guide. - */ - AWSAccountIds: AWSAccountIdList; - /** - * The action the client wants to allow for the specified principal. The following values are valid: * ChangeMessageVisibility DeleteMessage GetQueueAttributes GetQueueUrl ReceiveMessage SendMessage For more information about these actions, see Understanding Permissions in the Amazon SQS Developer Guide. Specifying SendMessage, DeleteMessage, or ChangeMessageVisibility for ActionName.n also grants permissions for the corresponding batch versions of those actions: SendMessageBatch, DeleteMessageBatch, and ChangeMessageVisibilityBatch. - */ - Actions: ActionNameList; - } - export type AttributeNameList = QueueAttributeName[]; - export interface BatchResultErrorEntry { - /** - * The Id of an entry in a batch request. - */ - Id: String; - /** - * Specifies whether the error happened due to the sender's fault. - */ - SenderFault: Boolean; - /** - * An error code representing why the action failed on this entry. - */ - Code: String; - /** - * A message explaining why the action failed on this entry. - */ - Message?: String; - } - export type BatchResultErrorEntryList = BatchResultErrorEntry[]; - export type Binary = Buffer|Uint8Array|Blob|string; - export type BinaryList = Binary[]; - export type Boolean = boolean; - export interface ChangeMessageVisibilityBatchRequest { - /** - * The URL of the Amazon SQS queue whose messages' visibility is changed. Queue URLs are case-sensitive. - */ - QueueUrl: String; - /** - * A list of receipt handles of the messages for which the visibility timeout must be changed. - */ - Entries: ChangeMessageVisibilityBatchRequestEntryList; - } - export interface ChangeMessageVisibilityBatchRequestEntry { - /** - * An identifier for this particular receipt handle used to communicate the result. The Ids of a batch request need to be unique within a request - */ - Id: String; - /** - * A receipt handle. - */ - ReceiptHandle: String; - /** - * The new value (in seconds) for the message's visibility timeout. - */ - VisibilityTimeout?: Integer; - } - export type ChangeMessageVisibilityBatchRequestEntryList = ChangeMessageVisibilityBatchRequestEntry[]; - export interface ChangeMessageVisibilityBatchResult { - /** - * A list of ChangeMessageVisibilityBatchResultEntry items. - */ - Successful: ChangeMessageVisibilityBatchResultEntryList; - /** - * A list of BatchResultErrorEntry items. - */ - Failed: BatchResultErrorEntryList; - } - export interface ChangeMessageVisibilityBatchResultEntry { - /** - * Represents a message whose visibility timeout has been changed successfully. - */ - Id: String; - } - export type ChangeMessageVisibilityBatchResultEntryList = ChangeMessageVisibilityBatchResultEntry[]; - export interface ChangeMessageVisibilityRequest { - /** - * The URL of the Amazon SQS queue whose message's visibility is changed. Queue URLs are case-sensitive. - */ - QueueUrl: String; - /** - * The receipt handle associated with the message whose visibility timeout is changed. This parameter is returned by the ReceiveMessage action. - */ - ReceiptHandle: String; - /** - * The new value for the message's visibility timeout (in seconds). Values values: 0 to 43200. Maximum: 12 hours. - */ - VisibilityTimeout: Integer; - } - export interface CreateQueueRequest { - /** - * The name of the new queue. The following limits apply to this name: A queue name can have up to 80 characters. Valid values: alphanumeric characters, hyphens (-), and underscores (_). A FIFO queue name must end with the .fifo suffix. Queue names are case-sensitive. - */ - QueueName: String; - /** - * A map of attributes with their corresponding values. The following lists the names, descriptions, and values of the special request parameters that the CreateQueue action uses: DelaySeconds - The length of time, in seconds, for which the delivery of all messages in the queue is delayed. Valid values: An integer from 0 to 900 seconds (15 minutes). The default is 0 (zero). MaximumMessageSize - The limit of how many bytes a message can contain before Amazon SQS rejects it. Valid values: An integer from 1,024 bytes (1 KiB) to 262,144 bytes (256 KiB). The default is 262,144 (256 KiB). MessageRetentionPeriod - The length of time, in seconds, for which Amazon SQS retains a message. Valid values: An integer from 60 seconds (1 minute) to 1,209,600 seconds (14 days). The default is 345,600 (4 days). Policy - The queue's policy. A valid AWS policy. For more information about policy structure, see Overview of AWS IAM Policies in the Amazon IAM User Guide. ReceiveMessageWaitTimeSeconds - The length of time, in seconds, for which a ReceiveMessage action waits for a message to arrive. Valid values: An integer from 0 to 20 (seconds). The default is 0 (zero). RedrivePolicy - The string that includes the parameters for the dead-letter queue functionality of the source queue. For more information about the redrive policy and dead-letter queues, see Using Amazon SQS Dead-Letter Queues in the Amazon SQS Developer Guide. deadLetterTargetArn - The Amazon Resource Name (ARN) of the dead-letter queue to which Amazon SQS moves messages after the value of maxReceiveCount is exceeded. maxReceiveCount - The number of times a message is delivered to the source queue before being moved to the dead-letter queue. The dead-letter queue of a FIFO queue must also be a FIFO queue. Similarly, the dead-letter queue of a standard queue must also be a standard queue. VisibilityTimeout - The visibility timeout for the queue. Valid values: An integer from 0 to 43,200 (12 hours). The default is 30. For more information about the visibility timeout, see Visibility Timeout in the Amazon SQS Developer Guide. The following attributes apply only to server-side-encryption: KmsMasterKeyId - The ID of an AWS-managed customer master key (CMK) for Amazon SQS or a custom CMK. For more information, see Key Terms. While the alias of the AWS-managed CMK for Amazon SQS is always alias/aws/sqs, the alias of a custom CMK can, for example, be alias/MyAlias . For more examples, see KeyId in the AWS Key Management Service API Reference. KmsDataKeyReusePeriodSeconds - The length of time, in seconds, for which Amazon SQS can reuse a data key to encrypt or decrypt messages before calling AWS KMS again. An integer representing seconds, between 60 seconds (1 minute) and 86,400 seconds (24 hours). The default is 300 (5 minutes). A shorter time period provides better security but results in more calls to KMS which might incur charges after Free Tier. For more information, see How Does the Data Key Reuse Period Work?. The following attributes apply only to FIFO (first-in-first-out) queues: FifoQueue - Designates a queue as FIFO. Valid values: true, false. You can provide this attribute only during queue creation. You can't change it for an existing queue. When you set this attribute, you must also provide the MessageGroupId for your messages explicitly. For more information, see FIFO Queue Logic in the Amazon SQS Developer Guide. ContentBasedDeduplication - Enables content-based deduplication. Valid values: true, false. For more information, see Exactly-Once Processing in the Amazon SQS Developer Guide. Every message must have a unique MessageDeduplicationId, You may provide a MessageDeduplicationId explicitly. If you aren't able to provide a MessageDeduplicationId and you enable ContentBasedDeduplication for your queue, Amazon SQS uses a SHA-256 hash to generate the MessageDeduplicationId using the body of the message (but not the attributes of the message). If you don't provide a MessageDeduplicationId and the queue doesn't have ContentBasedDeduplication set, the action fails with an error. If the queue has ContentBasedDeduplication set, your MessageDeduplicationId overrides the generated one. When ContentBasedDeduplication is in effect, messages with identical content sent within the deduplication interval are treated as duplicates and only one copy of the message is delivered. If you send one message with ContentBasedDeduplication enabled and then another message with a MessageDeduplicationId that is the same as the one generated for the first MessageDeduplicationId, the two messages are treated as duplicates and only one copy of the message is delivered. Any other valid special request parameters (such as the following) are ignored: ApproximateNumberOfMessages ApproximateNumberOfMessagesDelayed ApproximateNumberOfMessagesNotVisible CreatedTimestamp LastModifiedTimestamp QueueArn - */ - Attributes?: QueueAttributeMap; - } - export interface CreateQueueResult { - /** - * The URL of the created Amazon SQS queue. - */ - QueueUrl?: String; - } - export interface DeleteMessageBatchRequest { - /** - * The URL of the Amazon SQS queue from which messages are deleted. Queue URLs are case-sensitive. - */ - QueueUrl: String; - /** - * A list of receipt handles for the messages to be deleted. - */ - Entries: DeleteMessageBatchRequestEntryList; - } - export interface DeleteMessageBatchRequestEntry { - /** - * An identifier for this particular receipt handle. This is used to communicate the result. The Ids of a batch request need to be unique within a request - */ - Id: String; - /** - * A receipt handle. - */ - ReceiptHandle: String; - } - export type DeleteMessageBatchRequestEntryList = DeleteMessageBatchRequestEntry[]; - export interface DeleteMessageBatchResult { - /** - * A list of DeleteMessageBatchResultEntry items. - */ - Successful: DeleteMessageBatchResultEntryList; - /** - * A list of BatchResultErrorEntry items. - */ - Failed: BatchResultErrorEntryList; - } - export interface DeleteMessageBatchResultEntry { - /** - * Represents a successfully deleted message. - */ - Id: String; - } - export type DeleteMessageBatchResultEntryList = DeleteMessageBatchResultEntry[]; - export interface DeleteMessageRequest { - /** - * The URL of the Amazon SQS queue from which messages are deleted. Queue URLs are case-sensitive. - */ - QueueUrl: String; - /** - * The receipt handle associated with the message to delete. - */ - ReceiptHandle: String; - } - export interface DeleteQueueRequest { - /** - * The URL of the Amazon SQS queue to delete. Queue URLs are case-sensitive. - */ - QueueUrl: String; - } - export interface GetQueueAttributesRequest { - /** - * The URL of the Amazon SQS queue whose attribute information is retrieved. Queue URLs are case-sensitive. - */ - QueueUrl: String; - /** - * A list of attributes for which to retrieve information. In the future, new attributes might be added. If you write code that calls this action, we recommend that you structure your code so that it can handle new attributes gracefully. The following attributes are supported: All - Returns all values. ApproximateNumberOfMessages - Returns the approximate number of visible messages in a queue. For more information, see Resources Required to Process Messages in the Amazon SQS Developer Guide. ApproximateNumberOfMessagesDelayed - Returns the approximate number of messages that are waiting to be added to the queue. ApproximateNumberOfMessagesNotVisible - Returns the approximate number of messages that have not timed-out and aren't deleted. For more information, see Resources Required to Process Messages in the Amazon SQS Developer Guide. CreatedTimestamp - Returns the time when the queue was created in seconds (epoch time). DelaySeconds - Returns the default delay on the queue in seconds. LastModifiedTimestamp - Returns the time when the queue was last changed in seconds (epoch time). MaximumMessageSize - Returns the limit of how many bytes a message can contain before Amazon SQS rejects it. MessageRetentionPeriod - Returns the length of time, in seconds, for which Amazon SQS retains a message. Policy - Returns the policy of the queue. QueueArn - Returns the Amazon resource name (ARN) of the queue. ReceiveMessageWaitTimeSeconds - Returns the length of time, in seconds, for which the ReceiveMessage action waits for a message to arrive. RedrivePolicy - Returns the string that includes the parameters for dead-letter queue functionality of the source queue. For more information about the redrive policy and dead-letter queues, see Using Amazon SQS Dead-Letter Queues in the Amazon SQS Developer Guide. deadLetterTargetArn - The Amazon Resource Name (ARN) of the dead-letter queue to which Amazon SQS moves messages after the value of maxReceiveCount is exceeded. maxReceiveCount - The number of times a message is delivered to the source queue before being moved to the dead-letter queue. VisibilityTimeout - Returns the visibility timeout for the queue. For more information about the visibility timeout, see Visibility Timeout in the Amazon SQS Developer Guide. The following attributes apply only to server-side-encryption: KmsMasterKeyId - Returns the ID of an AWS-managed customer master key (CMK) for Amazon SQS or a custom CMK. For more information, see Key Terms. KmsDataKeyReusePeriodSeconds - Returns the length of time, in seconds, for which Amazon SQS can reuse a data key to encrypt or decrypt messages before calling AWS KMS again. For more information, see How Does the Data Key Reuse Period Work?. The following attributes apply only to FIFO (first-in-first-out) queues: FifoQueue - Returns whether the queue is FIFO. For more information, see FIFO Queue Logic in the Amazon SQS Developer Guide. To determine whether a queue is FIFO, you can check whether QueueName ends with the .fifo suffix. ContentBasedDeduplication - Returns whether content-based deduplication is enabled for the queue. For more information, see Exactly-Once Processing in the Amazon SQS Developer Guide. - */ - AttributeNames?: AttributeNameList; - } - export interface GetQueueAttributesResult { - /** - * A map of attributes to their respective values. - */ - Attributes?: QueueAttributeMap; - } - export interface GetQueueUrlRequest { - /** - * The name of the queue whose URL must be fetched. Maximum 80 characters. Valid values: alphanumeric characters, hyphens (-), and underscores (_). Queue names are case-sensitive. - */ - QueueName: String; - /** - * The AWS account ID of the account that created the queue. - */ - QueueOwnerAWSAccountId?: String; - } - export interface GetQueueUrlResult { - /** - * The URL of the queue. - */ - QueueUrl?: String; - } - export type Integer = number; - export interface ListDeadLetterSourceQueuesRequest { - /** - * The URL of a dead-letter queue. Queue URLs are case-sensitive. - */ - QueueUrl: String; - } - export interface ListDeadLetterSourceQueuesResult { - /** - * A list of source queue URLs that have the RedrivePolicy queue attribute configured with a dead-letter queue. - */ - queueUrls: QueueUrlList; - } - export interface ListQueuesRequest { - /** - * A string to use for filtering the list results. Only those queues whose name begins with the specified string are returned. Queue names are case-sensitive. - */ - QueueNamePrefix?: String; - } - export interface ListQueuesResult { - /** - * A list of queue URLs, up to 1,000 entries. - */ - QueueUrls?: QueueUrlList; - } - export interface Message { - /** - * A unique identifier for the message. A MessageIdis considered unique across all AWS accounts for an extended period of time. - */ - MessageId?: String; - /** - * An identifier associated with the act of receiving the message. A new receipt handle is returned every time you receive a message. When deleting a message, you provide the last received receipt handle to delete the message. - */ - ReceiptHandle?: String; - /** - * An MD5 digest of the non-URL-encoded message body string. - */ - MD5OfBody?: String; - /** - * The message's contents (not URL-encoded). - */ - Body?: String; - /** - * SenderId, SentTimestamp, ApproximateReceiveCount, and/or ApproximateFirstReceiveTimestamp. SentTimestamp and ApproximateFirstReceiveTimestamp are each returned as an integer representing the epoch time in milliseconds. - */ - Attributes?: MessageSystemAttributeMap; - /** - * An MD5 digest of the non-URL-encoded message attribute string. You can use this attribute to verify that Amazon SQS received the message correctly. Amazon SQS URL-decodes the message before creating the MD5 digest. For information about MD5, see RFC1321. - */ - MD5OfMessageAttributes?: String; - /** - * Each message attribute consists of a Name, Type, and Value. For more information, see Message Attribute Items and Validation in the Amazon SQS Developer Guide. - */ - MessageAttributes?: MessageBodyAttributeMap; - } - export type MessageAttributeName = string; - export type MessageAttributeNameList = MessageAttributeName[]; - export interface MessageAttributeValue { - /** - * Strings are Unicode with UTF-8 binary encoding. For a list of code values, see ASCII Printable Characters. - */ - StringValue?: String; - /** - * Binary type attributes can store any binary data, such as compressed data, encrypted data, or images. - */ - BinaryValue?: Binary; - /** - * Not implemented. Reserved for future use. - */ - StringListValues?: StringList; - /** - * Not implemented. Reserved for future use. - */ - BinaryListValues?: BinaryList; - /** - * Amazon SQS supports the following logical data types: String, Number, and Binary. For the Number data type, you must use StringValue. You can also append custom labels. For more information, see Message Attribute Data Types and Validation in the Amazon SQS Developer Guide. - */ - DataType: String; - } - export type MessageBodyAttributeMap = {[key: string]: MessageAttributeValue}; - export type MessageList = Message[]; - export type MessageSystemAttributeMap = {[key: string]: String}; - export type MessageSystemAttributeName = "SenderId"|"SentTimestamp"|"ApproximateReceiveCount"|"ApproximateFirstReceiveTimestamp"|"SequenceNumber"|"MessageDeduplicationId"|"MessageGroupId"|string; - export interface PurgeQueueRequest { - /** - * The URL of the queue from which the PurgeQueue action deletes messages. Queue URLs are case-sensitive. - */ - QueueUrl: String; - } - export type QueueAttributeMap = {[key: string]: String}; - export type QueueAttributeName = "All"|"Policy"|"VisibilityTimeout"|"MaximumMessageSize"|"MessageRetentionPeriod"|"ApproximateNumberOfMessages"|"ApproximateNumberOfMessagesNotVisible"|"CreatedTimestamp"|"LastModifiedTimestamp"|"QueueArn"|"ApproximateNumberOfMessagesDelayed"|"DelaySeconds"|"ReceiveMessageWaitTimeSeconds"|"RedrivePolicy"|"FifoQueue"|"ContentBasedDeduplication"|"KmsMasterKeyId"|"KmsDataKeyReusePeriodSeconds"|string; - export type QueueUrlList = String[]; - export interface ReceiveMessageRequest { - /** - * The URL of the Amazon SQS queue from which messages are received. Queue URLs are case-sensitive. - */ - QueueUrl: String; - /** - * A list of attributes that need to be returned along with each message. These attributes include: All - Returns all values. ApproximateFirstReceiveTimestamp - Returns the time the message was first received from the queue (epoch time in milliseconds). ApproximateReceiveCount - Returns the number of times a message has been received from the queue but not deleted. SenderId For an IAM user, returns the IAM user ID, for example ABCDEFGHI1JKLMNOPQ23R. For an IAM role, returns the IAM role ID, for example ABCDE1F2GH3I4JK5LMNOP:i-a123b456. SentTimestamp - Returns the time the message was sent to the queue (epoch time in milliseconds). MessageDeduplicationId - Returns the value provided by the sender that calls the SendMessage action. MessageGroupId - Returns the value provided by the sender that calls the SendMessage action. Messages with the same MessageGroupId are returned in sequence. SequenceNumber - Returns the value provided by Amazon SQS. Any other valid special request parameters (such as the following) are ignored: ApproximateNumberOfMessages ApproximateNumberOfMessagesDelayed ApproximateNumberOfMessagesNotVisible CreatedTimestamp ContentBasedDeduplication DelaySeconds FifoQueue LastModifiedTimestamp MaximumMessageSize MessageRetentionPeriod Policy QueueArn, ReceiveMessageWaitTimeSeconds RedrivePolicy VisibilityTimeout - */ - AttributeNames?: AttributeNameList; - /** - * The name of the message attribute, where N is the index. The name can contain alphanumeric characters and the underscore (_), hyphen (-), and period (.). The name is case-sensitive and must be unique among all attribute names for the message. The name must not start with AWS-reserved prefixes such as AWS. or Amazon. (or any casing variants). The name must not start or end with a period (.), and it should not have periods in succession (..). The name can be up to 256 characters long. When using ReceiveMessage, you can send a list of attribute names to receive, or you can return all of the attributes by specifying All or .* in your request. You can also use all message attributes starting with a prefix, for example bar.*. - */ - MessageAttributeNames?: MessageAttributeNameList; - /** - * The maximum number of messages to return. Amazon SQS never returns more messages than this value (however, fewer messages might be returned). Valid values are 1 to 10. Default is 1. - */ - MaxNumberOfMessages?: Integer; - /** - * The duration (in seconds) that the received messages are hidden from subsequent retrieve requests after being retrieved by a ReceiveMessage request. - */ - VisibilityTimeout?: Integer; - /** - * The duration (in seconds) for which the call waits for a message to arrive in the queue before returning. If a message is available, the call returns sooner than WaitTimeSeconds. If no messages are available and the wait time expires, the call returns successfully with an empty list of messages. - */ - WaitTimeSeconds?: Integer; - /** - * This parameter applies only to FIFO (first-in-first-out) queues. The token used for deduplication of ReceiveMessage calls. If a networking issue occurs after a ReceiveMessage action, and instead of a response you receive a generic error, you can retry the same action with an identical ReceiveRequestAttemptId to retrieve the same set of messages, even if their visibility timeout has not yet expired. You can use ReceiveRequestAttemptId only for 5 minutes after a ReceiveMessage action. When you set FifoQueue, a caller of the ReceiveMessage action can provide a ReceiveRequestAttemptId explicitly. If a caller of the ReceiveMessage action doesn't provide a ReceiveRequestAttemptId, Amazon SQS generates a ReceiveRequestAttemptId. You can retry the ReceiveMessage action with the same ReceiveRequestAttemptId if none of the messages have been modified (deleted or had their visibility changes). During a visibility timeout, subsequent calls with the same ReceiveRequestAttemptId return the same messages and receipt handles. If a retry occurs within the deduplication interval, it resets the visibility timeout. For more information, see Visibility Timeout in the Amazon Simple Queue Service Developer Guide. If a caller of the ReceiveMessage action is still processing messages when the visibility timeout expires and messages become visible, another worker reading from the same queue can receive the same messages and therefore process duplicates. Also, if a reader whose message processing time is longer than the visibility timeout tries to delete the processed messages, the action fails with an error. To mitigate this effect, ensure that your application observes a safe threshold before the visibility timeout expires and extend the visibility timeout as necessary. While messages with a particular MessageGroupId are invisible, no more messages belonging to the same MessageGroupId are returned until the visibility timeout expires. You can still receive messages with another MessageGroupId as long as it is also visible. If a caller of ReceiveMessage can't track the ReceiveRequestAttemptId, no retries work until the original visibility timeout expires. As a result, delays might occur but the messages in the queue remain in a strict order. The length of ReceiveRequestAttemptId is 128 characters. ReceiveRequestAttemptId can contain alphanumeric characters (a-z, A-Z, 0-9) and punctuation (!"#$%&'()*+,-./:;<=>?@[\]^_`{|}~). For best practices of using ReceiveRequestAttemptId, see Using the ReceiveRequestAttemptId Request Parameter in the Amazon Simple Queue Service Developer Guide. - */ - ReceiveRequestAttemptId?: String; - } - export interface ReceiveMessageResult { - /** - * A list of messages. - */ - Messages?: MessageList; - } - export interface RemovePermissionRequest { - /** - * The URL of the Amazon SQS queue from which permissions are removed. Queue URLs are case-sensitive. - */ - QueueUrl: String; - /** - * The identification of the permission to remove. This is the label added using the AddPermission action. - */ - Label: String; - } - export interface SendMessageBatchRequest { - /** - * The URL of the Amazon SQS queue to which batched messages are sent. Queue URLs are case-sensitive. - */ - QueueUrl: String; - /** - * A list of SendMessageBatchRequestEntry items. - */ - Entries: SendMessageBatchRequestEntryList; - } - export interface SendMessageBatchRequestEntry { - /** - * An identifier for a message in this batch used to communicate the result. The Ids of a batch request need to be unique within a request - */ - Id: String; - /** - * The body of the message. - */ - MessageBody: String; - /** - * The length of time, in seconds, for which a specific message is delayed. Valid values: 0 to 900. Maximum: 15 minutes. Messages with a positive DelaySeconds value become available for processing after the delay period is finished. If you don't specify a value, the default value for the queue is applied. When you set FifoQueue, you can't set DelaySeconds per message. You can set this parameter only on a queue level. - */ - DelaySeconds?: Integer; - /** - * Each message attribute consists of a Name, Type, and Value. For more information, see Message Attribute Items and Validation in the Amazon SQS Developer Guide. - */ - MessageAttributes?: MessageBodyAttributeMap; - /** - * This parameter applies only to FIFO (first-in-first-out) queues. The token used for deduplication of messages within a 5-minute minimum deduplication interval. If a message with a particular MessageDeduplicationId is sent successfully, subsequent messages with the same MessageDeduplicationId are accepted successfully but aren't delivered. For more information, see Exactly-Once Processing in the Amazon SQS Developer Guide. Every message must have a unique MessageDeduplicationId, You may provide a MessageDeduplicationId explicitly. If you aren't able to provide a MessageDeduplicationId and you enable ContentBasedDeduplication for your queue, Amazon SQS uses a SHA-256 hash to generate the MessageDeduplicationId using the body of the message (but not the attributes of the message). If you don't provide a MessageDeduplicationId and the queue doesn't have ContentBasedDeduplication set, the action fails with an error. If the queue has ContentBasedDeduplication set, your MessageDeduplicationId overrides the generated one. When ContentBasedDeduplication is in effect, messages with identical content sent within the deduplication interval are treated as duplicates and only one copy of the message is delivered. If you send one message with ContentBasedDeduplication enabled and then another message with a MessageDeduplicationId that is the same as the one generated for the first MessageDeduplicationId, the two messages are treated as duplicates and only one copy of the message is delivered. The MessageDeduplicationId is available to the recipient of the message (this can be useful for troubleshooting delivery issues). If a message is sent successfully but the acknowledgement is lost and the message is resent with the same MessageDeduplicationId after the deduplication interval, Amazon SQS can't detect duplicate messages. The length of MessageDeduplicationId is 128 characters. MessageDeduplicationId can contain alphanumeric characters (a-z, A-Z, 0-9) and punctuation (!"#$%&'()*+,-./:;<=>?@[\]^_`{|}~). For best practices of using MessageDeduplicationId, see Using the MessageDeduplicationId Property in the Amazon Simple Queue Service Developer Guide. - */ - MessageDeduplicationId?: String; - /** - * This parameter applies only to FIFO (first-in-first-out) queues. The tag that specifies that a message belongs to a specific message group. Messages that belong to the same message group are processed in a FIFO manner (however, messages in different message groups might be processed out of order). To interleave multiple ordered streams within a single queue, use MessageGroupId values (for example, session data for multiple users). In this scenario, multiple readers can process the queue, but the session data of each user is processed in a FIFO fashion. You must associate a non-empty MessageGroupId with a message. If you don't provide a MessageGroupId, the action fails. ReceiveMessage might return messages with multiple MessageGroupId values. For each MessageGroupId, the messages are sorted by time sent. The caller can't specify a MessageGroupId. The length of MessageGroupId is 128 characters. Valid values are alphanumeric characters and punctuation (!"#$%&'()*+,-./:;<=>?@[\]^_`{|}~). For best practices of using MessageGroupId, see Using the MessageGroupId Property in the Amazon Simple Queue Service Developer Guide. MessageGroupId is required for FIFO queues. You can't use it for Standard queues. - */ - MessageGroupId?: String; - } - export type SendMessageBatchRequestEntryList = SendMessageBatchRequestEntry[]; - export interface SendMessageBatchResult { - /** - * A list of SendMessageBatchResultEntry items. - */ - Successful: SendMessageBatchResultEntryList; - /** - * A list of BatchResultErrorEntry items with error details about each message that can't be enqueued. - */ - Failed: BatchResultErrorEntryList; - } - export interface SendMessageBatchResultEntry { - /** - * An identifier for the message in this batch. - */ - Id: String; - /** - * An identifier for the message. - */ - MessageId: String; - /** - * An MD5 digest of the non-URL-encoded message attribute string. You can use this attribute to verify that Amazon SQS received the message correctly. Amazon SQS URL-decodes the message before creating the MD5 digest. For information about MD5, see RFC1321. - */ - MD5OfMessageBody: String; - /** - * An MD5 digest of the non-URL-encoded message attribute string. You can use this attribute to verify that Amazon SQS received the message correctly. Amazon SQS URL-decodes the message before creating the MD5 digest. For information about MD5, see RFC1321. - */ - MD5OfMessageAttributes?: String; - /** - * This parameter applies only to FIFO (first-in-first-out) queues. The large, non-consecutive number that Amazon SQS assigns to each message. The length of SequenceNumber is 128 bits. As SequenceNumber continues to increase for a particular MessageGroupId. - */ - SequenceNumber?: String; - } - export type SendMessageBatchResultEntryList = SendMessageBatchResultEntry[]; - export interface SendMessageRequest { - /** - * The URL of the Amazon SQS queue to which a message is sent. Queue URLs are case-sensitive. - */ - QueueUrl: String; - /** - * The message to send. The maximum string size is 256 KB. A message can include only XML, JSON, and unformatted text. The following Unicode characters are allowed: #x9 | #xA | #xD | #x20 to #xD7FF | #xE000 to #xFFFD | #x10000 to #x10FFFF Any characters not included in this list will be rejected. For more information, see the W3C specification for characters. - */ - MessageBody: String; - /** - * The length of time, in seconds, for which to delay a specific message. Valid values: 0 to 900. Maximum: 15 minutes. Messages with a positive DelaySeconds value become available for processing after the delay period is finished. If you don't specify a value, the default value for the queue applies. When you set FifoQueue, you can't set DelaySeconds per message. You can set this parameter only on a queue level. - */ - DelaySeconds?: Integer; - /** - * Each message attribute consists of a Name, Type, and Value. For more information, see Message Attribute Items and Validation in the Amazon SQS Developer Guide. - */ - MessageAttributes?: MessageBodyAttributeMap; - /** - * This parameter applies only to FIFO (first-in-first-out) queues. The token used for deduplication of sent messages. If a message with a particular MessageDeduplicationId is sent successfully, any messages sent with the same MessageDeduplicationId are accepted successfully but aren't delivered during the 5-minute deduplication interval. For more information, see Exactly-Once Processing in the Amazon SQS Developer Guide. Every message must have a unique MessageDeduplicationId, You may provide a MessageDeduplicationId explicitly. If you aren't able to provide a MessageDeduplicationId and you enable ContentBasedDeduplication for your queue, Amazon SQS uses a SHA-256 hash to generate the MessageDeduplicationId using the body of the message (but not the attributes of the message). If you don't provide a MessageDeduplicationId and the queue doesn't have ContentBasedDeduplication set, the action fails with an error. If the queue has ContentBasedDeduplication set, your MessageDeduplicationId overrides the generated one. When ContentBasedDeduplication is in effect, messages with identical content sent within the deduplication interval are treated as duplicates and only one copy of the message is delivered. If you send one message with ContentBasedDeduplication enabled and then another message with a MessageDeduplicationId that is the same as the one generated for the first MessageDeduplicationId, the two messages are treated as duplicates and only one copy of the message is delivered. The MessageDeduplicationId is available to the recipient of the message (this can be useful for troubleshooting delivery issues). If a message is sent successfully but the acknowledgement is lost and the message is resent with the same MessageDeduplicationId after the deduplication interval, Amazon SQS can't detect duplicate messages. The length of MessageDeduplicationId is 128 characters. MessageDeduplicationId can contain alphanumeric characters (a-z, A-Z, 0-9) and punctuation (!"#$%&'()*+,-./:;<=>?@[\]^_`{|}~). For best practices of using MessageDeduplicationId, see Using the MessageDeduplicationId Property in the Amazon Simple Queue Service Developer Guide. - */ - MessageDeduplicationId?: String; - /** - * This parameter applies only to FIFO (first-in-first-out) queues. The tag that specifies that a message belongs to a specific message group. Messages that belong to the same message group are processed in a FIFO manner (however, messages in different message groups might be processed out of order). To interleave multiple ordered streams within a single queue, use MessageGroupId values (for example, session data for multiple users). In this scenario, multiple readers can process the queue, but the session data of each user is processed in a FIFO fashion. You must associate a non-empty MessageGroupId with a message. If you don't provide a MessageGroupId, the action fails. ReceiveMessage might return messages with multiple MessageGroupId values. For each MessageGroupId, the messages are sorted by time sent. The caller can't specify a MessageGroupId. The length of MessageGroupId is 128 characters. Valid values are alphanumeric characters and punctuation (!"#$%&'()*+,-./:;<=>?@[\]^_`{|}~). For best practices of using MessageGroupId, see Using the MessageGroupId Property in the Amazon Simple Queue Service Developer Guide. MessageGroupId is required for FIFO queues. You can't use it for Standard queues. - */ - MessageGroupId?: String; - } - export interface SendMessageResult { - /** - * An MD5 digest of the non-URL-encoded message attribute string. You can use this attribute to verify that Amazon SQS received the message correctly. Amazon SQS URL-decodes the message before creating the MD5 digest. For information about MD5, see RFC1321. - */ - MD5OfMessageBody?: String; - /** - * An MD5 digest of the non-URL-encoded message attribute string. You can use this attribute to verify that Amazon SQS received the message correctly. Amazon SQS URL-decodes the message before creating the MD5 digest. For information about MD5, see RFC1321. - */ - MD5OfMessageAttributes?: String; - /** - * An attribute containing the MessageId of the message sent to the queue. For more information, see Queue and Message Identifiers in the Amazon SQS Developer Guide. - */ - MessageId?: String; - /** - * This parameter applies only to FIFO (first-in-first-out) queues. The large, non-consecutive number that Amazon SQS assigns to each message. The length of SequenceNumber is 128 bits. SequenceNumber continues to increase for a particular MessageGroupId. - */ - SequenceNumber?: String; - } - export interface SetQueueAttributesRequest { - /** - * The URL of the Amazon SQS queue whose attributes are set. Queue URLs are case-sensitive. - */ - QueueUrl: String; - /** - * A map of attributes to set. The following lists the names, descriptions, and values of the special request parameters that the SetQueueAttributes action uses: DelaySeconds - The length of time, in seconds, for which the delivery of all messages in the queue is delayed. Valid values: An integer from 0 to 900 (15 minutes). The default is 0 (zero). MaximumMessageSize - The limit of how many bytes a message can contain before Amazon SQS rejects it. Valid values: An integer from 1,024 bytes (1 KiB) up to 262,144 bytes (256 KiB). The default is 262,144 (256 KiB). MessageRetentionPeriod - The length of time, in seconds, for which Amazon SQS retains a message. Valid values: An integer representing seconds, from 60 (1 minute) to 1,209,600 (14 days). The default is 345,600 (4 days). Policy - The queue's policy. A valid AWS policy. For more information about policy structure, see Overview of AWS IAM Policies in the Amazon IAM User Guide. ReceiveMessageWaitTimeSeconds - The length of time, in seconds, for which a ReceiveMessage action waits for a message to arrive. Valid values: an integer from 0 to 20 (seconds). The default is 0. RedrivePolicy - The string that includes the parameters for the dead-letter queue functionality of the source queue. For more information about the redrive policy and dead-letter queues, see Using Amazon SQS Dead-Letter Queues in the Amazon SQS Developer Guide. deadLetterTargetArn - The Amazon Resource Name (ARN) of the dead-letter queue to which Amazon SQS moves messages after the value of maxReceiveCount is exceeded. maxReceiveCount - The number of times a message is delivered to the source queue before being moved to the dead-letter queue. The dead-letter queue of a FIFO queue must also be a FIFO queue. Similarly, the dead-letter queue of a standard queue must also be a standard queue. VisibilityTimeout - The visibility timeout for the queue. Valid values: an integer from 0 to 43,200 (12 hours). The default is 30. For more information about the visibility timeout, see Visibility Timeout in the Amazon SQS Developer Guide. The following attributes apply only to server-side-encryption: KmsMasterKeyId - The ID of an AWS-managed customer master key (CMK) for Amazon SQS or a custom CMK. For more information, see Key Terms. While the alias of the AWS-managed CMK for Amazon SQS is always alias/aws/sqs, the alias of a custom CMK can, for example, be alias/MyAlias . For more examples, see KeyId in the AWS Key Management Service API Reference. KmsDataKeyReusePeriodSeconds - The length of time, in seconds, for which Amazon SQS can reuse a data key to encrypt or decrypt messages before calling AWS KMS again. An integer representing seconds, between 60 seconds (1 minute) and 86,400 seconds (24 hours). The default is 300 (5 minutes). A shorter time period provides better security but results in more calls to KMS which might incur charges after Free Tier. For more information, see How Does the Data Key Reuse Period Work?. The following attribute applies only to FIFO (first-in-first-out) queues: ContentBasedDeduplication - Enables content-based deduplication. For more information, see Exactly-Once Processing in the Amazon SQS Developer Guide. Every message must have a unique MessageDeduplicationId, You may provide a MessageDeduplicationId explicitly. If you aren't able to provide a MessageDeduplicationId and you enable ContentBasedDeduplication for your queue, Amazon SQS uses a SHA-256 hash to generate the MessageDeduplicationId using the body of the message (but not the attributes of the message). If you don't provide a MessageDeduplicationId and the queue doesn't have ContentBasedDeduplication set, the action fails with an error. If the queue has ContentBasedDeduplication set, your MessageDeduplicationId overrides the generated one. When ContentBasedDeduplication is in effect, messages with identical content sent within the deduplication interval are treated as duplicates and only one copy of the message is delivered. If you send one message with ContentBasedDeduplication enabled and then another message with a MessageDeduplicationId that is the same as the one generated for the first MessageDeduplicationId, the two messages are treated as duplicates and only one copy of the message is delivered. Any other valid special request parameters (such as the following) are ignored: ApproximateNumberOfMessages ApproximateNumberOfMessagesDelayed ApproximateNumberOfMessagesNotVisible CreatedTimestamp LastModifiedTimestamp QueueArn - */ - Attributes: QueueAttributeMap; - } - export type String = string; - export type StringList = String[]; - /** - * A string in YYYY-MM-DD format that represents the latest possible API version that can be used in this service. Specify 'latest' to use the latest possible version. - */ - export type apiVersion = "2012-11-05"|"latest"|string; - export interface ClientApiVersions { - /** - * A string in YYYY-MM-DD format that represents the latest possible API version that can be used in this service. Specify 'latest' to use the latest possible version. - */ - apiVersion?: apiVersion; - } - export type ClientConfiguration = ServiceConfigurationOptions & ClientApiVersions; - /** - * Contains interfaces for use with the SQS client. - */ - export import Types = SQS; -} -export = SQS; diff --git a/workshops/monte-carlo-on-ec2-spot-fleet/src/web/node_modules/aws-sdk/clients/sqs.js b/workshops/monte-carlo-on-ec2-spot-fleet/src/web/node_modules/aws-sdk/clients/sqs.js deleted file mode 100644 index a9d0e16c..00000000 --- a/workshops/monte-carlo-on-ec2-spot-fleet/src/web/node_modules/aws-sdk/clients/sqs.js +++ /dev/null @@ -1,19 +0,0 @@ -require('../lib/node_loader'); -var AWS = require('../lib/core'); -var Service = AWS.Service; -var apiLoader = AWS.apiLoader; - -apiLoader.services['sqs'] = {}; -AWS.SQS = Service.defineService('sqs', ['2012-11-05']); -require('../lib/services/sqs'); -Object.defineProperty(apiLoader.services['sqs'], '2012-11-05', { - get: function get() { - var model = require('../apis/sqs-2012-11-05.min.json'); - model.paginators = require('../apis/sqs-2012-11-05.paginators.json').pagination; - return model; - }, - enumerable: true, - configurable: true -}); - -module.exports = AWS.SQS; diff --git a/workshops/monte-carlo-on-ec2-spot-fleet/src/web/node_modules/aws-sdk/clients/ssm.d.ts b/workshops/monte-carlo-on-ec2-spot-fleet/src/web/node_modules/aws-sdk/clients/ssm.d.ts deleted file mode 100644 index f14b4d20..00000000 --- a/workshops/monte-carlo-on-ec2-spot-fleet/src/web/node_modules/aws-sdk/clients/ssm.d.ts +++ /dev/null @@ -1,5970 +0,0 @@ -import {Request} from '../lib/request'; -import {Response} from '../lib/response'; -import {AWSError} from '../lib/error'; -import {Service} from '../lib/service'; -import {ServiceConfigurationOptions} from '../lib/service'; -import {ConfigBase as Config} from '../lib/config'; -interface Blob {} -declare class SSM extends Service { - /** - * Constructs a service object. This object has one method for each API operation. - */ - constructor(options?: SSM.Types.ClientConfiguration) - config: Config & SSM.Types.ClientConfiguration; - /** - * Adds or overwrites one or more tags for the specified resource. Tags are metadata that you can assign to your documents, managed instances, Maintenance Windows, Parameter Store parameters, and patch baselines. Tags enable you to categorize your resources in different ways, for example, by purpose, owner, or environment. Each tag consists of a key and an optional value, both of which you define. For example, you could define a set of tags for your account's managed instances that helps you track each instance's owner and stack level. For example: Key=Owner and Value=DbAdmin, SysAdmin, or Dev. Or Key=Stack and Value=Production, Pre-Production, or Test. Each resource can have a maximum of 10 tags. We recommend that you devise a set of tag keys that meets your needs for each resource type. Using a consistent set of tag keys makes it easier for you to manage your resources. You can search and filter the resources based on the tags you add. Tags don't have any semantic meaning to Amazon EC2 and are interpreted strictly as a string of characters. For more information about tags, see Tagging Your Amazon EC2 Resources in the Amazon EC2 User Guide. - */ - addTagsToResource(params: SSM.Types.AddTagsToResourceRequest, callback?: (err: AWSError, data: SSM.Types.AddTagsToResourceResult) => void): Request; - /** - * Adds or overwrites one or more tags for the specified resource. Tags are metadata that you can assign to your documents, managed instances, Maintenance Windows, Parameter Store parameters, and patch baselines. Tags enable you to categorize your resources in different ways, for example, by purpose, owner, or environment. Each tag consists of a key and an optional value, both of which you define. For example, you could define a set of tags for your account's managed instances that helps you track each instance's owner and stack level. For example: Key=Owner and Value=DbAdmin, SysAdmin, or Dev. Or Key=Stack and Value=Production, Pre-Production, or Test. Each resource can have a maximum of 10 tags. We recommend that you devise a set of tag keys that meets your needs for each resource type. Using a consistent set of tag keys makes it easier for you to manage your resources. You can search and filter the resources based on the tags you add. Tags don't have any semantic meaning to Amazon EC2 and are interpreted strictly as a string of characters. For more information about tags, see Tagging Your Amazon EC2 Resources in the Amazon EC2 User Guide. - */ - addTagsToResource(callback?: (err: AWSError, data: SSM.Types.AddTagsToResourceResult) => void): Request; - /** - * Attempts to cancel the command specified by the Command ID. There is no guarantee that the command will be terminated and the underlying process stopped. - */ - cancelCommand(params: SSM.Types.CancelCommandRequest, callback?: (err: AWSError, data: SSM.Types.CancelCommandResult) => void): Request; - /** - * Attempts to cancel the command specified by the Command ID. There is no guarantee that the command will be terminated and the underlying process stopped. - */ - cancelCommand(callback?: (err: AWSError, data: SSM.Types.CancelCommandResult) => void): Request; - /** - * Registers your on-premises server or virtual machine with Amazon EC2 so that you can manage these resources using Run Command. An on-premises server or virtual machine that has been registered with EC2 is called a managed instance. For more information about activations, see Setting Up Systems Manager in Hybrid Environments. - */ - createActivation(params: SSM.Types.CreateActivationRequest, callback?: (err: AWSError, data: SSM.Types.CreateActivationResult) => void): Request; - /** - * Registers your on-premises server or virtual machine with Amazon EC2 so that you can manage these resources using Run Command. An on-premises server or virtual machine that has been registered with EC2 is called a managed instance. For more information about activations, see Setting Up Systems Manager in Hybrid Environments. - */ - createActivation(callback?: (err: AWSError, data: SSM.Types.CreateActivationResult) => void): Request; - /** - * Associates the specified Systems Manager document with the specified instances or targets. When you associate a document with one or more instances using instance IDs or tags, the SSM Agent running on the instance processes the document and configures the instance as specified. If you associate a document with an instance that already has an associated document, the system throws the AssociationAlreadyExists exception. - */ - createAssociation(params: SSM.Types.CreateAssociationRequest, callback?: (err: AWSError, data: SSM.Types.CreateAssociationResult) => void): Request; - /** - * Associates the specified Systems Manager document with the specified instances or targets. When you associate a document with one or more instances using instance IDs or tags, the SSM Agent running on the instance processes the document and configures the instance as specified. If you associate a document with an instance that already has an associated document, the system throws the AssociationAlreadyExists exception. - */ - createAssociation(callback?: (err: AWSError, data: SSM.Types.CreateAssociationResult) => void): Request; - /** - * Associates the specified Systems Manager document with the specified instances or targets. When you associate a document with one or more instances using instance IDs or tags, the SSM Agent running on the instance processes the document and configures the instance as specified. If you associate a document with an instance that already has an associated document, the system throws the AssociationAlreadyExists exception. - */ - createAssociationBatch(params: SSM.Types.CreateAssociationBatchRequest, callback?: (err: AWSError, data: SSM.Types.CreateAssociationBatchResult) => void): Request; - /** - * Associates the specified Systems Manager document with the specified instances or targets. When you associate a document with one or more instances using instance IDs or tags, the SSM Agent running on the instance processes the document and configures the instance as specified. If you associate a document with an instance that already has an associated document, the system throws the AssociationAlreadyExists exception. - */ - createAssociationBatch(callback?: (err: AWSError, data: SSM.Types.CreateAssociationBatchResult) => void): Request; - /** - * Creates a Systems Manager document. After you create a document, you can use CreateAssociation to associate it with one or more running instances. - */ - createDocument(params: SSM.Types.CreateDocumentRequest, callback?: (err: AWSError, data: SSM.Types.CreateDocumentResult) => void): Request; - /** - * Creates a Systems Manager document. After you create a document, you can use CreateAssociation to associate it with one or more running instances. - */ - createDocument(callback?: (err: AWSError, data: SSM.Types.CreateDocumentResult) => void): Request; - /** - * Creates a new Maintenance Window. - */ - createMaintenanceWindow(params: SSM.Types.CreateMaintenanceWindowRequest, callback?: (err: AWSError, data: SSM.Types.CreateMaintenanceWindowResult) => void): Request; - /** - * Creates a new Maintenance Window. - */ - createMaintenanceWindow(callback?: (err: AWSError, data: SSM.Types.CreateMaintenanceWindowResult) => void): Request; - /** - * Creates a patch baseline. - */ - createPatchBaseline(params: SSM.Types.CreatePatchBaselineRequest, callback?: (err: AWSError, data: SSM.Types.CreatePatchBaselineResult) => void): Request; - /** - * Creates a patch baseline. - */ - createPatchBaseline(callback?: (err: AWSError, data: SSM.Types.CreatePatchBaselineResult) => void): Request; - /** - * Creates a resource data sync configuration to a single bucket in Amazon S3. This is an asynchronous operation that returns immediately. After a successful initial sync is completed, the system continuously syncs data to the Amazon S3 bucket. To check the status of the sync, use the ListResourceDataSync operation. By default, data is not encrypted in Amazon S3. We strongly recommend that you enable encryption in Amazon S3 to ensure secure data storage. We also recommend that you secure access to the Amazon S3 bucket by creating a restrictive bucket policy. To view an example of a restrictive Amazon S3 bucket policy for Resource Data Sync, see Configuring Resource Data Sync for Inventory. - */ - createResourceDataSync(params: SSM.Types.CreateResourceDataSyncRequest, callback?: (err: AWSError, data: SSM.Types.CreateResourceDataSyncResult) => void): Request; - /** - * Creates a resource data sync configuration to a single bucket in Amazon S3. This is an asynchronous operation that returns immediately. After a successful initial sync is completed, the system continuously syncs data to the Amazon S3 bucket. To check the status of the sync, use the ListResourceDataSync operation. By default, data is not encrypted in Amazon S3. We strongly recommend that you enable encryption in Amazon S3 to ensure secure data storage. We also recommend that you secure access to the Amazon S3 bucket by creating a restrictive bucket policy. To view an example of a restrictive Amazon S3 bucket policy for Resource Data Sync, see Configuring Resource Data Sync for Inventory. - */ - createResourceDataSync(callback?: (err: AWSError, data: SSM.Types.CreateResourceDataSyncResult) => void): Request; - /** - * Deletes an activation. You are not required to delete an activation. If you delete an activation, you can no longer use it to register additional managed instances. Deleting an activation does not de-register managed instances. You must manually de-register managed instances. - */ - deleteActivation(params: SSM.Types.DeleteActivationRequest, callback?: (err: AWSError, data: SSM.Types.DeleteActivationResult) => void): Request; - /** - * Deletes an activation. You are not required to delete an activation. If you delete an activation, you can no longer use it to register additional managed instances. Deleting an activation does not de-register managed instances. You must manually de-register managed instances. - */ - deleteActivation(callback?: (err: AWSError, data: SSM.Types.DeleteActivationResult) => void): Request; - /** - * Disassociates the specified Systems Manager document from the specified instance. When you disassociate a document from an instance, it does not change the configuration of the instance. To change the configuration state of an instance after you disassociate a document, you must create a new document with the desired configuration and associate it with the instance. - */ - deleteAssociation(params: SSM.Types.DeleteAssociationRequest, callback?: (err: AWSError, data: SSM.Types.DeleteAssociationResult) => void): Request; - /** - * Disassociates the specified Systems Manager document from the specified instance. When you disassociate a document from an instance, it does not change the configuration of the instance. To change the configuration state of an instance after you disassociate a document, you must create a new document with the desired configuration and associate it with the instance. - */ - deleteAssociation(callback?: (err: AWSError, data: SSM.Types.DeleteAssociationResult) => void): Request; - /** - * Deletes the Systems Manager document and all instance associations to the document. Before you delete the document, we recommend that you use DeleteAssociation to disassociate all instances that are associated with the document. - */ - deleteDocument(params: SSM.Types.DeleteDocumentRequest, callback?: (err: AWSError, data: SSM.Types.DeleteDocumentResult) => void): Request; - /** - * Deletes the Systems Manager document and all instance associations to the document. Before you delete the document, we recommend that you use DeleteAssociation to disassociate all instances that are associated with the document. - */ - deleteDocument(callback?: (err: AWSError, data: SSM.Types.DeleteDocumentResult) => void): Request; - /** - * Deletes a Maintenance Window. - */ - deleteMaintenanceWindow(params: SSM.Types.DeleteMaintenanceWindowRequest, callback?: (err: AWSError, data: SSM.Types.DeleteMaintenanceWindowResult) => void): Request; - /** - * Deletes a Maintenance Window. - */ - deleteMaintenanceWindow(callback?: (err: AWSError, data: SSM.Types.DeleteMaintenanceWindowResult) => void): Request; - /** - * Delete a parameter from the system. - */ - deleteParameter(params: SSM.Types.DeleteParameterRequest, callback?: (err: AWSError, data: SSM.Types.DeleteParameterResult) => void): Request; - /** - * Delete a parameter from the system. - */ - deleteParameter(callback?: (err: AWSError, data: SSM.Types.DeleteParameterResult) => void): Request; - /** - * Delete a list of parameters. This API is used to delete parameters by using the Amazon EC2 console. - */ - deleteParameters(params: SSM.Types.DeleteParametersRequest, callback?: (err: AWSError, data: SSM.Types.DeleteParametersResult) => void): Request; - /** - * Delete a list of parameters. This API is used to delete parameters by using the Amazon EC2 console. - */ - deleteParameters(callback?: (err: AWSError, data: SSM.Types.DeleteParametersResult) => void): Request; - /** - * Deletes a patch baseline. - */ - deletePatchBaseline(params: SSM.Types.DeletePatchBaselineRequest, callback?: (err: AWSError, data: SSM.Types.DeletePatchBaselineResult) => void): Request; - /** - * Deletes a patch baseline. - */ - deletePatchBaseline(callback?: (err: AWSError, data: SSM.Types.DeletePatchBaselineResult) => void): Request; - /** - * Deletes a Resource Data Sync configuration. After the configuration is deleted, changes to inventory data on managed instances are no longer synced with the target Amazon S3 bucket. Deleting a sync configuration does not delete data in the target Amazon S3 bucket. - */ - deleteResourceDataSync(params: SSM.Types.DeleteResourceDataSyncRequest, callback?: (err: AWSError, data: SSM.Types.DeleteResourceDataSyncResult) => void): Request; - /** - * Deletes a Resource Data Sync configuration. After the configuration is deleted, changes to inventory data on managed instances are no longer synced with the target Amazon S3 bucket. Deleting a sync configuration does not delete data in the target Amazon S3 bucket. - */ - deleteResourceDataSync(callback?: (err: AWSError, data: SSM.Types.DeleteResourceDataSyncResult) => void): Request; - /** - * Removes the server or virtual machine from the list of registered servers. You can reregister the instance again at any time. If you don't plan to use Run Command on the server, we suggest uninstalling the SSM Agent first. - */ - deregisterManagedInstance(params: SSM.Types.DeregisterManagedInstanceRequest, callback?: (err: AWSError, data: SSM.Types.DeregisterManagedInstanceResult) => void): Request; - /** - * Removes the server or virtual machine from the list of registered servers. You can reregister the instance again at any time. If you don't plan to use Run Command on the server, we suggest uninstalling the SSM Agent first. - */ - deregisterManagedInstance(callback?: (err: AWSError, data: SSM.Types.DeregisterManagedInstanceResult) => void): Request; - /** - * Removes a patch group from a patch baseline. - */ - deregisterPatchBaselineForPatchGroup(params: SSM.Types.DeregisterPatchBaselineForPatchGroupRequest, callback?: (err: AWSError, data: SSM.Types.DeregisterPatchBaselineForPatchGroupResult) => void): Request; - /** - * Removes a patch group from a patch baseline. - */ - deregisterPatchBaselineForPatchGroup(callback?: (err: AWSError, data: SSM.Types.DeregisterPatchBaselineForPatchGroupResult) => void): Request; - /** - * Removes a target from a Maintenance Window. - */ - deregisterTargetFromMaintenanceWindow(params: SSM.Types.DeregisterTargetFromMaintenanceWindowRequest, callback?: (err: AWSError, data: SSM.Types.DeregisterTargetFromMaintenanceWindowResult) => void): Request; - /** - * Removes a target from a Maintenance Window. - */ - deregisterTargetFromMaintenanceWindow(callback?: (err: AWSError, data: SSM.Types.DeregisterTargetFromMaintenanceWindowResult) => void): Request; - /** - * Removes a task from a Maintenance Window. - */ - deregisterTaskFromMaintenanceWindow(params: SSM.Types.DeregisterTaskFromMaintenanceWindowRequest, callback?: (err: AWSError, data: SSM.Types.DeregisterTaskFromMaintenanceWindowResult) => void): Request; - /** - * Removes a task from a Maintenance Window. - */ - deregisterTaskFromMaintenanceWindow(callback?: (err: AWSError, data: SSM.Types.DeregisterTaskFromMaintenanceWindowResult) => void): Request; - /** - * Details about the activation, including: the date and time the activation was created, the expiration date, the IAM role assigned to the instances in the activation, and the number of instances activated by this registration. - */ - describeActivations(params: SSM.Types.DescribeActivationsRequest, callback?: (err: AWSError, data: SSM.Types.DescribeActivationsResult) => void): Request; - /** - * Details about the activation, including: the date and time the activation was created, the expiration date, the IAM role assigned to the instances in the activation, and the number of instances activated by this registration. - */ - describeActivations(callback?: (err: AWSError, data: SSM.Types.DescribeActivationsResult) => void): Request; - /** - * Describes the associations for the specified Systems Manager document or instance. - */ - describeAssociation(params: SSM.Types.DescribeAssociationRequest, callback?: (err: AWSError, data: SSM.Types.DescribeAssociationResult) => void): Request; - /** - * Describes the associations for the specified Systems Manager document or instance. - */ - describeAssociation(callback?: (err: AWSError, data: SSM.Types.DescribeAssociationResult) => void): Request; - /** - * Provides details about all active and terminated Automation executions. - */ - describeAutomationExecutions(params: SSM.Types.DescribeAutomationExecutionsRequest, callback?: (err: AWSError, data: SSM.Types.DescribeAutomationExecutionsResult) => void): Request; - /** - * Provides details about all active and terminated Automation executions. - */ - describeAutomationExecutions(callback?: (err: AWSError, data: SSM.Types.DescribeAutomationExecutionsResult) => void): Request; - /** - * Lists all patches that could possibly be included in a patch baseline. - */ - describeAvailablePatches(params: SSM.Types.DescribeAvailablePatchesRequest, callback?: (err: AWSError, data: SSM.Types.DescribeAvailablePatchesResult) => void): Request; - /** - * Lists all patches that could possibly be included in a patch baseline. - */ - describeAvailablePatches(callback?: (err: AWSError, data: SSM.Types.DescribeAvailablePatchesResult) => void): Request; - /** - * Describes the specified Systems Manager document. - */ - describeDocument(params: SSM.Types.DescribeDocumentRequest, callback?: (err: AWSError, data: SSM.Types.DescribeDocumentResult) => void): Request; - /** - * Describes the specified Systems Manager document. - */ - describeDocument(callback?: (err: AWSError, data: SSM.Types.DescribeDocumentResult) => void): Request; - /** - * Describes the permissions for a Systems Manager document. If you created the document, you are the owner. If a document is shared, it can either be shared privately (by specifying a user's AWS account ID) or publicly (All). - */ - describeDocumentPermission(params: SSM.Types.DescribeDocumentPermissionRequest, callback?: (err: AWSError, data: SSM.Types.DescribeDocumentPermissionResponse) => void): Request; - /** - * Describes the permissions for a Systems Manager document. If you created the document, you are the owner. If a document is shared, it can either be shared privately (by specifying a user's AWS account ID) or publicly (All). - */ - describeDocumentPermission(callback?: (err: AWSError, data: SSM.Types.DescribeDocumentPermissionResponse) => void): Request; - /** - * All associations for the instance(s). - */ - describeEffectiveInstanceAssociations(params: SSM.Types.DescribeEffectiveInstanceAssociationsRequest, callback?: (err: AWSError, data: SSM.Types.DescribeEffectiveInstanceAssociationsResult) => void): Request; - /** - * All associations for the instance(s). - */ - describeEffectiveInstanceAssociations(callback?: (err: AWSError, data: SSM.Types.DescribeEffectiveInstanceAssociationsResult) => void): Request; - /** - * Retrieves the current effective patches (the patch and the approval state) for the specified patch baseline. Note that this API applies only to Windows patch baselines. - */ - describeEffectivePatchesForPatchBaseline(params: SSM.Types.DescribeEffectivePatchesForPatchBaselineRequest, callback?: (err: AWSError, data: SSM.Types.DescribeEffectivePatchesForPatchBaselineResult) => void): Request; - /** - * Retrieves the current effective patches (the patch and the approval state) for the specified patch baseline. Note that this API applies only to Windows patch baselines. - */ - describeEffectivePatchesForPatchBaseline(callback?: (err: AWSError, data: SSM.Types.DescribeEffectivePatchesForPatchBaselineResult) => void): Request; - /** - * The status of the associations for the instance(s). - */ - describeInstanceAssociationsStatus(params: SSM.Types.DescribeInstanceAssociationsStatusRequest, callback?: (err: AWSError, data: SSM.Types.DescribeInstanceAssociationsStatusResult) => void): Request; - /** - * The status of the associations for the instance(s). - */ - describeInstanceAssociationsStatus(callback?: (err: AWSError, data: SSM.Types.DescribeInstanceAssociationsStatusResult) => void): Request; - /** - * Describes one or more of your instances. You can use this to get information about instances like the operating system platform, the SSM Agent version (Linux), status etc. If you specify one or more instance IDs, it returns information for those instances. If you do not specify instance IDs, it returns information for all your instances. If you specify an instance ID that is not valid or an instance that you do not own, you receive an error. - */ - describeInstanceInformation(params: SSM.Types.DescribeInstanceInformationRequest, callback?: (err: AWSError, data: SSM.Types.DescribeInstanceInformationResult) => void): Request; - /** - * Describes one or more of your instances. You can use this to get information about instances like the operating system platform, the SSM Agent version (Linux), status etc. If you specify one or more instance IDs, it returns information for those instances. If you do not specify instance IDs, it returns information for all your instances. If you specify an instance ID that is not valid or an instance that you do not own, you receive an error. - */ - describeInstanceInformation(callback?: (err: AWSError, data: SSM.Types.DescribeInstanceInformationResult) => void): Request; - /** - * Retrieves the high-level patch state of one or more instances. - */ - describeInstancePatchStates(params: SSM.Types.DescribeInstancePatchStatesRequest, callback?: (err: AWSError, data: SSM.Types.DescribeInstancePatchStatesResult) => void): Request; - /** - * Retrieves the high-level patch state of one or more instances. - */ - describeInstancePatchStates(callback?: (err: AWSError, data: SSM.Types.DescribeInstancePatchStatesResult) => void): Request; - /** - * Retrieves the high-level patch state for the instances in the specified patch group. - */ - describeInstancePatchStatesForPatchGroup(params: SSM.Types.DescribeInstancePatchStatesForPatchGroupRequest, callback?: (err: AWSError, data: SSM.Types.DescribeInstancePatchStatesForPatchGroupResult) => void): Request; - /** - * Retrieves the high-level patch state for the instances in the specified patch group. - */ - describeInstancePatchStatesForPatchGroup(callback?: (err: AWSError, data: SSM.Types.DescribeInstancePatchStatesForPatchGroupResult) => void): Request; - /** - * Retrieves information about the patches on the specified instance and their state relative to the patch baseline being used for the instance. - */ - describeInstancePatches(params: SSM.Types.DescribeInstancePatchesRequest, callback?: (err: AWSError, data: SSM.Types.DescribeInstancePatchesResult) => void): Request; - /** - * Retrieves information about the patches on the specified instance and their state relative to the patch baseline being used for the instance. - */ - describeInstancePatches(callback?: (err: AWSError, data: SSM.Types.DescribeInstancePatchesResult) => void): Request; - /** - * Retrieves the individual task executions (one per target) for a particular task executed as part of a Maintenance Window execution. - */ - describeMaintenanceWindowExecutionTaskInvocations(params: SSM.Types.DescribeMaintenanceWindowExecutionTaskInvocationsRequest, callback?: (err: AWSError, data: SSM.Types.DescribeMaintenanceWindowExecutionTaskInvocationsResult) => void): Request; - /** - * Retrieves the individual task executions (one per target) for a particular task executed as part of a Maintenance Window execution. - */ - describeMaintenanceWindowExecutionTaskInvocations(callback?: (err: AWSError, data: SSM.Types.DescribeMaintenanceWindowExecutionTaskInvocationsResult) => void): Request; - /** - * For a given Maintenance Window execution, lists the tasks that were executed. - */ - describeMaintenanceWindowExecutionTasks(params: SSM.Types.DescribeMaintenanceWindowExecutionTasksRequest, callback?: (err: AWSError, data: SSM.Types.DescribeMaintenanceWindowExecutionTasksResult) => void): Request; - /** - * For a given Maintenance Window execution, lists the tasks that were executed. - */ - describeMaintenanceWindowExecutionTasks(callback?: (err: AWSError, data: SSM.Types.DescribeMaintenanceWindowExecutionTasksResult) => void): Request; - /** - * Lists the executions of a Maintenance Window. This includes information about when the Maintenance Window was scheduled to be active, and information about tasks registered and run with the Maintenance Window. - */ - describeMaintenanceWindowExecutions(params: SSM.Types.DescribeMaintenanceWindowExecutionsRequest, callback?: (err: AWSError, data: SSM.Types.DescribeMaintenanceWindowExecutionsResult) => void): Request; - /** - * Lists the executions of a Maintenance Window. This includes information about when the Maintenance Window was scheduled to be active, and information about tasks registered and run with the Maintenance Window. - */ - describeMaintenanceWindowExecutions(callback?: (err: AWSError, data: SSM.Types.DescribeMaintenanceWindowExecutionsResult) => void): Request; - /** - * Lists the targets registered with the Maintenance Window. - */ - describeMaintenanceWindowTargets(params: SSM.Types.DescribeMaintenanceWindowTargetsRequest, callback?: (err: AWSError, data: SSM.Types.DescribeMaintenanceWindowTargetsResult) => void): Request; - /** - * Lists the targets registered with the Maintenance Window. - */ - describeMaintenanceWindowTargets(callback?: (err: AWSError, data: SSM.Types.DescribeMaintenanceWindowTargetsResult) => void): Request; - /** - * Lists the tasks in a Maintenance Window. - */ - describeMaintenanceWindowTasks(params: SSM.Types.DescribeMaintenanceWindowTasksRequest, callback?: (err: AWSError, data: SSM.Types.DescribeMaintenanceWindowTasksResult) => void): Request; - /** - * Lists the tasks in a Maintenance Window. - */ - describeMaintenanceWindowTasks(callback?: (err: AWSError, data: SSM.Types.DescribeMaintenanceWindowTasksResult) => void): Request; - /** - * Retrieves the Maintenance Windows in an AWS account. - */ - describeMaintenanceWindows(params: SSM.Types.DescribeMaintenanceWindowsRequest, callback?: (err: AWSError, data: SSM.Types.DescribeMaintenanceWindowsResult) => void): Request; - /** - * Retrieves the Maintenance Windows in an AWS account. - */ - describeMaintenanceWindows(callback?: (err: AWSError, data: SSM.Types.DescribeMaintenanceWindowsResult) => void): Request; - /** - * Get information about a parameter. Request results are returned on a best-effort basis. If you specify MaxResults in the request, the response includes information up to the limit specified. The number of items returned, however, can be between zero and the value of MaxResults. If the service reaches an internal limit while processing the results, it stops the operation and returns the matching values up to that point and a NextToken. You can specify the NextToken in a subsequent call to get the next set of results. - */ - describeParameters(params: SSM.Types.DescribeParametersRequest, callback?: (err: AWSError, data: SSM.Types.DescribeParametersResult) => void): Request; - /** - * Get information about a parameter. Request results are returned on a best-effort basis. If you specify MaxResults in the request, the response includes information up to the limit specified. The number of items returned, however, can be between zero and the value of MaxResults. If the service reaches an internal limit while processing the results, it stops the operation and returns the matching values up to that point and a NextToken. You can specify the NextToken in a subsequent call to get the next set of results. - */ - describeParameters(callback?: (err: AWSError, data: SSM.Types.DescribeParametersResult) => void): Request; - /** - * Lists the patch baselines in your AWS account. - */ - describePatchBaselines(params: SSM.Types.DescribePatchBaselinesRequest, callback?: (err: AWSError, data: SSM.Types.DescribePatchBaselinesResult) => void): Request; - /** - * Lists the patch baselines in your AWS account. - */ - describePatchBaselines(callback?: (err: AWSError, data: SSM.Types.DescribePatchBaselinesResult) => void): Request; - /** - * Returns high-level aggregated patch compliance state for a patch group. - */ - describePatchGroupState(params: SSM.Types.DescribePatchGroupStateRequest, callback?: (err: AWSError, data: SSM.Types.DescribePatchGroupStateResult) => void): Request; - /** - * Returns high-level aggregated patch compliance state for a patch group. - */ - describePatchGroupState(callback?: (err: AWSError, data: SSM.Types.DescribePatchGroupStateResult) => void): Request; - /** - * Lists all patch groups that have been registered with patch baselines. - */ - describePatchGroups(params: SSM.Types.DescribePatchGroupsRequest, callback?: (err: AWSError, data: SSM.Types.DescribePatchGroupsResult) => void): Request; - /** - * Lists all patch groups that have been registered with patch baselines. - */ - describePatchGroups(callback?: (err: AWSError, data: SSM.Types.DescribePatchGroupsResult) => void): Request; - /** - * Get detailed information about a particular Automation execution. - */ - getAutomationExecution(params: SSM.Types.GetAutomationExecutionRequest, callback?: (err: AWSError, data: SSM.Types.GetAutomationExecutionResult) => void): Request; - /** - * Get detailed information about a particular Automation execution. - */ - getAutomationExecution(callback?: (err: AWSError, data: SSM.Types.GetAutomationExecutionResult) => void): Request; - /** - * Returns detailed information about command execution for an invocation or plugin. - */ - getCommandInvocation(params: SSM.Types.GetCommandInvocationRequest, callback?: (err: AWSError, data: SSM.Types.GetCommandInvocationResult) => void): Request; - /** - * Returns detailed information about command execution for an invocation or plugin. - */ - getCommandInvocation(callback?: (err: AWSError, data: SSM.Types.GetCommandInvocationResult) => void): Request; - /** - * Retrieves the default patch baseline. Note that Systems Manager supports creating multiple default patch baselines. For example, you can create a default patch baseline for each operating system. - */ - getDefaultPatchBaseline(params: SSM.Types.GetDefaultPatchBaselineRequest, callback?: (err: AWSError, data: SSM.Types.GetDefaultPatchBaselineResult) => void): Request; - /** - * Retrieves the default patch baseline. Note that Systems Manager supports creating multiple default patch baselines. For example, you can create a default patch baseline for each operating system. - */ - getDefaultPatchBaseline(callback?: (err: AWSError, data: SSM.Types.GetDefaultPatchBaselineResult) => void): Request; - /** - * Retrieves the current snapshot for the patch baseline the instance uses. This API is primarily used by the AWS-RunPatchBaseline Systems Manager document. - */ - getDeployablePatchSnapshotForInstance(params: SSM.Types.GetDeployablePatchSnapshotForInstanceRequest, callback?: (err: AWSError, data: SSM.Types.GetDeployablePatchSnapshotForInstanceResult) => void): Request; - /** - * Retrieves the current snapshot for the patch baseline the instance uses. This API is primarily used by the AWS-RunPatchBaseline Systems Manager document. - */ - getDeployablePatchSnapshotForInstance(callback?: (err: AWSError, data: SSM.Types.GetDeployablePatchSnapshotForInstanceResult) => void): Request; - /** - * Gets the contents of the specified Systems Manager document. - */ - getDocument(params: SSM.Types.GetDocumentRequest, callback?: (err: AWSError, data: SSM.Types.GetDocumentResult) => void): Request; - /** - * Gets the contents of the specified Systems Manager document. - */ - getDocument(callback?: (err: AWSError, data: SSM.Types.GetDocumentResult) => void): Request; - /** - * Query inventory information. - */ - getInventory(params: SSM.Types.GetInventoryRequest, callback?: (err: AWSError, data: SSM.Types.GetInventoryResult) => void): Request; - /** - * Query inventory information. - */ - getInventory(callback?: (err: AWSError, data: SSM.Types.GetInventoryResult) => void): Request; - /** - * Return a list of inventory type names for the account, or return a list of attribute names for a specific Inventory item type. - */ - getInventorySchema(params: SSM.Types.GetInventorySchemaRequest, callback?: (err: AWSError, data: SSM.Types.GetInventorySchemaResult) => void): Request; - /** - * Return a list of inventory type names for the account, or return a list of attribute names for a specific Inventory item type. - */ - getInventorySchema(callback?: (err: AWSError, data: SSM.Types.GetInventorySchemaResult) => void): Request; - /** - * Retrieves a Maintenance Window. - */ - getMaintenanceWindow(params: SSM.Types.GetMaintenanceWindowRequest, callback?: (err: AWSError, data: SSM.Types.GetMaintenanceWindowResult) => void): Request; - /** - * Retrieves a Maintenance Window. - */ - getMaintenanceWindow(callback?: (err: AWSError, data: SSM.Types.GetMaintenanceWindowResult) => void): Request; - /** - * Retrieves details about a specific task executed as part of a Maintenance Window execution. - */ - getMaintenanceWindowExecution(params: SSM.Types.GetMaintenanceWindowExecutionRequest, callback?: (err: AWSError, data: SSM.Types.GetMaintenanceWindowExecutionResult) => void): Request; - /** - * Retrieves details about a specific task executed as part of a Maintenance Window execution. - */ - getMaintenanceWindowExecution(callback?: (err: AWSError, data: SSM.Types.GetMaintenanceWindowExecutionResult) => void): Request; - /** - * Retrieves the details about a specific task executed as part of a Maintenance Window execution. - */ - getMaintenanceWindowExecutionTask(params: SSM.Types.GetMaintenanceWindowExecutionTaskRequest, callback?: (err: AWSError, data: SSM.Types.GetMaintenanceWindowExecutionTaskResult) => void): Request; - /** - * Retrieves the details about a specific task executed as part of a Maintenance Window execution. - */ - getMaintenanceWindowExecutionTask(callback?: (err: AWSError, data: SSM.Types.GetMaintenanceWindowExecutionTaskResult) => void): Request; - /** - * Retrieves a task invocation. A task invocation is a specific task executing on a specific target. Maintenance Windows report status for all invocations. - */ - getMaintenanceWindowExecutionTaskInvocation(params: SSM.Types.GetMaintenanceWindowExecutionTaskInvocationRequest, callback?: (err: AWSError, data: SSM.Types.GetMaintenanceWindowExecutionTaskInvocationResult) => void): Request; - /** - * Retrieves a task invocation. A task invocation is a specific task executing on a specific target. Maintenance Windows report status for all invocations. - */ - getMaintenanceWindowExecutionTaskInvocation(callback?: (err: AWSError, data: SSM.Types.GetMaintenanceWindowExecutionTaskInvocationResult) => void): Request; - /** - * Lists the tasks in a Maintenance Window. - */ - getMaintenanceWindowTask(params: SSM.Types.GetMaintenanceWindowTaskRequest, callback?: (err: AWSError, data: SSM.Types.GetMaintenanceWindowTaskResult) => void): Request; - /** - * Lists the tasks in a Maintenance Window. - */ - getMaintenanceWindowTask(callback?: (err: AWSError, data: SSM.Types.GetMaintenanceWindowTaskResult) => void): Request; - /** - * Get information about a parameter by using the parameter name. - */ - getParameter(params: SSM.Types.GetParameterRequest, callback?: (err: AWSError, data: SSM.Types.GetParameterResult) => void): Request; - /** - * Get information about a parameter by using the parameter name. - */ - getParameter(callback?: (err: AWSError, data: SSM.Types.GetParameterResult) => void): Request; - /** - * Query a list of all parameters used by the AWS account. - */ - getParameterHistory(params: SSM.Types.GetParameterHistoryRequest, callback?: (err: AWSError, data: SSM.Types.GetParameterHistoryResult) => void): Request; - /** - * Query a list of all parameters used by the AWS account. - */ - getParameterHistory(callback?: (err: AWSError, data: SSM.Types.GetParameterHistoryResult) => void): Request; - /** - * Get details of a parameter. - */ - getParameters(params: SSM.Types.GetParametersRequest, callback?: (err: AWSError, data: SSM.Types.GetParametersResult) => void): Request; - /** - * Get details of a parameter. - */ - getParameters(callback?: (err: AWSError, data: SSM.Types.GetParametersResult) => void): Request; - /** - * Retrieve parameters in a specific hierarchy. For more information, see Working with Systems Manager Parameters. Request results are returned on a best-effort basis. If you specify MaxResults in the request, the response includes information up to the limit specified. The number of items returned, however, can be between zero and the value of MaxResults. If the service reaches an internal limit while processing the results, it stops the operation and returns the matching values up to that point and a NextToken. You can specify the NextToken in a subsequent call to get the next set of results. - */ - getParametersByPath(params: SSM.Types.GetParametersByPathRequest, callback?: (err: AWSError, data: SSM.Types.GetParametersByPathResult) => void): Request; - /** - * Retrieve parameters in a specific hierarchy. For more information, see Working with Systems Manager Parameters. Request results are returned on a best-effort basis. If you specify MaxResults in the request, the response includes information up to the limit specified. The number of items returned, however, can be between zero and the value of MaxResults. If the service reaches an internal limit while processing the results, it stops the operation and returns the matching values up to that point and a NextToken. You can specify the NextToken in a subsequent call to get the next set of results. - */ - getParametersByPath(callback?: (err: AWSError, data: SSM.Types.GetParametersByPathResult) => void): Request; - /** - * Retrieves information about a patch baseline. - */ - getPatchBaseline(params: SSM.Types.GetPatchBaselineRequest, callback?: (err: AWSError, data: SSM.Types.GetPatchBaselineResult) => void): Request; - /** - * Retrieves information about a patch baseline. - */ - getPatchBaseline(callback?: (err: AWSError, data: SSM.Types.GetPatchBaselineResult) => void): Request; - /** - * Retrieves the patch baseline that should be used for the specified patch group. - */ - getPatchBaselineForPatchGroup(params: SSM.Types.GetPatchBaselineForPatchGroupRequest, callback?: (err: AWSError, data: SSM.Types.GetPatchBaselineForPatchGroupResult) => void): Request; - /** - * Retrieves the patch baseline that should be used for the specified patch group. - */ - getPatchBaselineForPatchGroup(callback?: (err: AWSError, data: SSM.Types.GetPatchBaselineForPatchGroupResult) => void): Request; - /** - * Retrieves all versions of an association for a specific association ID. - */ - listAssociationVersions(params: SSM.Types.ListAssociationVersionsRequest, callback?: (err: AWSError, data: SSM.Types.ListAssociationVersionsResult) => void): Request; - /** - * Retrieves all versions of an association for a specific association ID. - */ - listAssociationVersions(callback?: (err: AWSError, data: SSM.Types.ListAssociationVersionsResult) => void): Request; - /** - * Lists the associations for the specified Systems Manager document or instance. - */ - listAssociations(params: SSM.Types.ListAssociationsRequest, callback?: (err: AWSError, data: SSM.Types.ListAssociationsResult) => void): Request; - /** - * Lists the associations for the specified Systems Manager document or instance. - */ - listAssociations(callback?: (err: AWSError, data: SSM.Types.ListAssociationsResult) => void): Request; - /** - * An invocation is copy of a command sent to a specific instance. A command can apply to one or more instances. A command invocation applies to one instance. For example, if a user executes SendCommand against three instances, then a command invocation is created for each requested instance ID. ListCommandInvocations provide status about command execution. - */ - listCommandInvocations(params: SSM.Types.ListCommandInvocationsRequest, callback?: (err: AWSError, data: SSM.Types.ListCommandInvocationsResult) => void): Request; - /** - * An invocation is copy of a command sent to a specific instance. A command can apply to one or more instances. A command invocation applies to one instance. For example, if a user executes SendCommand against three instances, then a command invocation is created for each requested instance ID. ListCommandInvocations provide status about command execution. - */ - listCommandInvocations(callback?: (err: AWSError, data: SSM.Types.ListCommandInvocationsResult) => void): Request; - /** - * Lists the commands requested by users of the AWS account. - */ - listCommands(params: SSM.Types.ListCommandsRequest, callback?: (err: AWSError, data: SSM.Types.ListCommandsResult) => void): Request; - /** - * Lists the commands requested by users of the AWS account. - */ - listCommands(callback?: (err: AWSError, data: SSM.Types.ListCommandsResult) => void): Request; - /** - * For a specified resource ID, this API action returns a list of compliance statuses for different resource types. Currently, you can only specify one resource ID per call. List results depend on the criteria specified in the filter. - */ - listComplianceItems(params: SSM.Types.ListComplianceItemsRequest, callback?: (err: AWSError, data: SSM.Types.ListComplianceItemsResult) => void): Request; - /** - * For a specified resource ID, this API action returns a list of compliance statuses for different resource types. Currently, you can only specify one resource ID per call. List results depend on the criteria specified in the filter. - */ - listComplianceItems(callback?: (err: AWSError, data: SSM.Types.ListComplianceItemsResult) => void): Request; - /** - * Returns a summary count of compliant and non-compliant resources for a compliance type. For example, this call can return State Manager associations, patches, or custom compliance types according to the filter criteria that you specify. - */ - listComplianceSummaries(params: SSM.Types.ListComplianceSummariesRequest, callback?: (err: AWSError, data: SSM.Types.ListComplianceSummariesResult) => void): Request; - /** - * Returns a summary count of compliant and non-compliant resources for a compliance type. For example, this call can return State Manager associations, patches, or custom compliance types according to the filter criteria that you specify. - */ - listComplianceSummaries(callback?: (err: AWSError, data: SSM.Types.ListComplianceSummariesResult) => void): Request; - /** - * List all versions for a document. - */ - listDocumentVersions(params: SSM.Types.ListDocumentVersionsRequest, callback?: (err: AWSError, data: SSM.Types.ListDocumentVersionsResult) => void): Request; - /** - * List all versions for a document. - */ - listDocumentVersions(callback?: (err: AWSError, data: SSM.Types.ListDocumentVersionsResult) => void): Request; - /** - * Describes one or more of your Systems Manager documents. - */ - listDocuments(params: SSM.Types.ListDocumentsRequest, callback?: (err: AWSError, data: SSM.Types.ListDocumentsResult) => void): Request; - /** - * Describes one or more of your Systems Manager documents. - */ - listDocuments(callback?: (err: AWSError, data: SSM.Types.ListDocumentsResult) => void): Request; - /** - * A list of inventory items returned by the request. - */ - listInventoryEntries(params: SSM.Types.ListInventoryEntriesRequest, callback?: (err: AWSError, data: SSM.Types.ListInventoryEntriesResult) => void): Request; - /** - * A list of inventory items returned by the request. - */ - listInventoryEntries(callback?: (err: AWSError, data: SSM.Types.ListInventoryEntriesResult) => void): Request; - /** - * Returns a resource-level summary count. The summary includes information about compliant and non-compliant statuses and detailed compliance-item severity counts, according to the filter criteria you specify. - */ - listResourceComplianceSummaries(params: SSM.Types.ListResourceComplianceSummariesRequest, callback?: (err: AWSError, data: SSM.Types.ListResourceComplianceSummariesResult) => void): Request; - /** - * Returns a resource-level summary count. The summary includes information about compliant and non-compliant statuses and detailed compliance-item severity counts, according to the filter criteria you specify. - */ - listResourceComplianceSummaries(callback?: (err: AWSError, data: SSM.Types.ListResourceComplianceSummariesResult) => void): Request; - /** - * Lists your resource data sync configurations. Includes information about the last time a sync attempted to start, the last sync status, and the last time a sync successfully completed. The number of sync configurations might be too large to return using a single call to ListResourceDataSync. You can limit the number of sync configurations returned by using the MaxResults parameter. To determine whether there are more sync configurations to list, check the value of NextToken in the output. If there are more sync configurations to list, you can request them by specifying the NextToken returned in the call to the parameter of a subsequent call. - */ - listResourceDataSync(params: SSM.Types.ListResourceDataSyncRequest, callback?: (err: AWSError, data: SSM.Types.ListResourceDataSyncResult) => void): Request; - /** - * Lists your resource data sync configurations. Includes information about the last time a sync attempted to start, the last sync status, and the last time a sync successfully completed. The number of sync configurations might be too large to return using a single call to ListResourceDataSync. You can limit the number of sync configurations returned by using the MaxResults parameter. To determine whether there are more sync configurations to list, check the value of NextToken in the output. If there are more sync configurations to list, you can request them by specifying the NextToken returned in the call to the parameter of a subsequent call. - */ - listResourceDataSync(callback?: (err: AWSError, data: SSM.Types.ListResourceDataSyncResult) => void): Request; - /** - * Returns a list of the tags assigned to the specified resource. - */ - listTagsForResource(params: SSM.Types.ListTagsForResourceRequest, callback?: (err: AWSError, data: SSM.Types.ListTagsForResourceResult) => void): Request; - /** - * Returns a list of the tags assigned to the specified resource. - */ - listTagsForResource(callback?: (err: AWSError, data: SSM.Types.ListTagsForResourceResult) => void): Request; - /** - * Shares a Systems Manager document publicly or privately. If you share a document privately, you must specify the AWS user account IDs for those people who can use the document. If you share a document publicly, you must specify All as the account ID. - */ - modifyDocumentPermission(params: SSM.Types.ModifyDocumentPermissionRequest, callback?: (err: AWSError, data: SSM.Types.ModifyDocumentPermissionResponse) => void): Request; - /** - * Shares a Systems Manager document publicly or privately. If you share a document privately, you must specify the AWS user account IDs for those people who can use the document. If you share a document publicly, you must specify All as the account ID. - */ - modifyDocumentPermission(callback?: (err: AWSError, data: SSM.Types.ModifyDocumentPermissionResponse) => void): Request; - /** - * Registers a compliance type and other compliance details on a designated resource. This action lets you register custom compliance details with a resource. This call overwrites existing compliance information on the resource, so you must provide a full list of compliance items each time that you send the request. - */ - putComplianceItems(params: SSM.Types.PutComplianceItemsRequest, callback?: (err: AWSError, data: SSM.Types.PutComplianceItemsResult) => void): Request; - /** - * Registers a compliance type and other compliance details on a designated resource. This action lets you register custom compliance details with a resource. This call overwrites existing compliance information on the resource, so you must provide a full list of compliance items each time that you send the request. - */ - putComplianceItems(callback?: (err: AWSError, data: SSM.Types.PutComplianceItemsResult) => void): Request; - /** - * Bulk update custom inventory items on one more instance. The request adds an inventory item, if it doesn't already exist, or updates an inventory item, if it does exist. - */ - putInventory(params: SSM.Types.PutInventoryRequest, callback?: (err: AWSError, data: SSM.Types.PutInventoryResult) => void): Request; - /** - * Bulk update custom inventory items on one more instance. The request adds an inventory item, if it doesn't already exist, or updates an inventory item, if it does exist. - */ - putInventory(callback?: (err: AWSError, data: SSM.Types.PutInventoryResult) => void): Request; - /** - * Add one or more parameters to the system. - */ - putParameter(params: SSM.Types.PutParameterRequest, callback?: (err: AWSError, data: SSM.Types.PutParameterResult) => void): Request; - /** - * Add one or more parameters to the system. - */ - putParameter(callback?: (err: AWSError, data: SSM.Types.PutParameterResult) => void): Request; - /** - * Defines the default patch baseline. - */ - registerDefaultPatchBaseline(params: SSM.Types.RegisterDefaultPatchBaselineRequest, callback?: (err: AWSError, data: SSM.Types.RegisterDefaultPatchBaselineResult) => void): Request; - /** - * Defines the default patch baseline. - */ - registerDefaultPatchBaseline(callback?: (err: AWSError, data: SSM.Types.RegisterDefaultPatchBaselineResult) => void): Request; - /** - * Registers a patch baseline for a patch group. - */ - registerPatchBaselineForPatchGroup(params: SSM.Types.RegisterPatchBaselineForPatchGroupRequest, callback?: (err: AWSError, data: SSM.Types.RegisterPatchBaselineForPatchGroupResult) => void): Request; - /** - * Registers a patch baseline for a patch group. - */ - registerPatchBaselineForPatchGroup(callback?: (err: AWSError, data: SSM.Types.RegisterPatchBaselineForPatchGroupResult) => void): Request; - /** - * Registers a target with a Maintenance Window. - */ - registerTargetWithMaintenanceWindow(params: SSM.Types.RegisterTargetWithMaintenanceWindowRequest, callback?: (err: AWSError, data: SSM.Types.RegisterTargetWithMaintenanceWindowResult) => void): Request; - /** - * Registers a target with a Maintenance Window. - */ - registerTargetWithMaintenanceWindow(callback?: (err: AWSError, data: SSM.Types.RegisterTargetWithMaintenanceWindowResult) => void): Request; - /** - * Adds a new task to a Maintenance Window. - */ - registerTaskWithMaintenanceWindow(params: SSM.Types.RegisterTaskWithMaintenanceWindowRequest, callback?: (err: AWSError, data: SSM.Types.RegisterTaskWithMaintenanceWindowResult) => void): Request; - /** - * Adds a new task to a Maintenance Window. - */ - registerTaskWithMaintenanceWindow(callback?: (err: AWSError, data: SSM.Types.RegisterTaskWithMaintenanceWindowResult) => void): Request; - /** - * Removes all tags from the specified resource. - */ - removeTagsFromResource(params: SSM.Types.RemoveTagsFromResourceRequest, callback?: (err: AWSError, data: SSM.Types.RemoveTagsFromResourceResult) => void): Request; - /** - * Removes all tags from the specified resource. - */ - removeTagsFromResource(callback?: (err: AWSError, data: SSM.Types.RemoveTagsFromResourceResult) => void): Request; - /** - * Sends a signal to an Automation execution to change the current behavior or status of the execution. - */ - sendAutomationSignal(params: SSM.Types.SendAutomationSignalRequest, callback?: (err: AWSError, data: SSM.Types.SendAutomationSignalResult) => void): Request; - /** - * Sends a signal to an Automation execution to change the current behavior or status of the execution. - */ - sendAutomationSignal(callback?: (err: AWSError, data: SSM.Types.SendAutomationSignalResult) => void): Request; - /** - * Executes commands on one or more managed instances. - */ - sendCommand(params: SSM.Types.SendCommandRequest, callback?: (err: AWSError, data: SSM.Types.SendCommandResult) => void): Request; - /** - * Executes commands on one or more managed instances. - */ - sendCommand(callback?: (err: AWSError, data: SSM.Types.SendCommandResult) => void): Request; - /** - * Initiates execution of an Automation document. - */ - startAutomationExecution(params: SSM.Types.StartAutomationExecutionRequest, callback?: (err: AWSError, data: SSM.Types.StartAutomationExecutionResult) => void): Request; - /** - * Initiates execution of an Automation document. - */ - startAutomationExecution(callback?: (err: AWSError, data: SSM.Types.StartAutomationExecutionResult) => void): Request; - /** - * Stop an Automation that is currently executing. - */ - stopAutomationExecution(params: SSM.Types.StopAutomationExecutionRequest, callback?: (err: AWSError, data: SSM.Types.StopAutomationExecutionResult) => void): Request; - /** - * Stop an Automation that is currently executing. - */ - stopAutomationExecution(callback?: (err: AWSError, data: SSM.Types.StopAutomationExecutionResult) => void): Request; - /** - * Updates an association. You can update the association name and version, the document version, schedule, parameters, and Amazon S3 output. - */ - updateAssociation(params: SSM.Types.UpdateAssociationRequest, callback?: (err: AWSError, data: SSM.Types.UpdateAssociationResult) => void): Request; - /** - * Updates an association. You can update the association name and version, the document version, schedule, parameters, and Amazon S3 output. - */ - updateAssociation(callback?: (err: AWSError, data: SSM.Types.UpdateAssociationResult) => void): Request; - /** - * Updates the status of the Systems Manager document associated with the specified instance. - */ - updateAssociationStatus(params: SSM.Types.UpdateAssociationStatusRequest, callback?: (err: AWSError, data: SSM.Types.UpdateAssociationStatusResult) => void): Request; - /** - * Updates the status of the Systems Manager document associated with the specified instance. - */ - updateAssociationStatus(callback?: (err: AWSError, data: SSM.Types.UpdateAssociationStatusResult) => void): Request; - /** - * The document you want to update. - */ - updateDocument(params: SSM.Types.UpdateDocumentRequest, callback?: (err: AWSError, data: SSM.Types.UpdateDocumentResult) => void): Request; - /** - * The document you want to update. - */ - updateDocument(callback?: (err: AWSError, data: SSM.Types.UpdateDocumentResult) => void): Request; - /** - * Set the default version of a document. - */ - updateDocumentDefaultVersion(params: SSM.Types.UpdateDocumentDefaultVersionRequest, callback?: (err: AWSError, data: SSM.Types.UpdateDocumentDefaultVersionResult) => void): Request; - /** - * Set the default version of a document. - */ - updateDocumentDefaultVersion(callback?: (err: AWSError, data: SSM.Types.UpdateDocumentDefaultVersionResult) => void): Request; - /** - * Updates an existing Maintenance Window. Only specified parameters are modified. - */ - updateMaintenanceWindow(params: SSM.Types.UpdateMaintenanceWindowRequest, callback?: (err: AWSError, data: SSM.Types.UpdateMaintenanceWindowResult) => void): Request; - /** - * Updates an existing Maintenance Window. Only specified parameters are modified. - */ - updateMaintenanceWindow(callback?: (err: AWSError, data: SSM.Types.UpdateMaintenanceWindowResult) => void): Request; - /** - * Modifies the target of an existing Maintenance Window. You can't change the target type, but you can change the following: The target from being an ID target to a Tag target, or a Tag target to an ID target. IDs for an ID target. Tags for a Tag target. Owner. Name. Description. If a parameter is null, then the corresponding field is not modified. - */ - updateMaintenanceWindowTarget(params: SSM.Types.UpdateMaintenanceWindowTargetRequest, callback?: (err: AWSError, data: SSM.Types.UpdateMaintenanceWindowTargetResult) => void): Request; - /** - * Modifies the target of an existing Maintenance Window. You can't change the target type, but you can change the following: The target from being an ID target to a Tag target, or a Tag target to an ID target. IDs for an ID target. Tags for a Tag target. Owner. Name. Description. If a parameter is null, then the corresponding field is not modified. - */ - updateMaintenanceWindowTarget(callback?: (err: AWSError, data: SSM.Types.UpdateMaintenanceWindowTargetResult) => void): Request; - /** - * Modifies a task assigned to a Maintenance Window. You can't change the task type, but you can change the following values: Task ARN. For example, you can change a RUN_COMMAND task from AWS-RunPowerShellScript to AWS-RunShellScript. Service role ARN. Task parameters. Task priority. Task MaxConcurrency and MaxErrors. Log location. If a parameter is null, then the corresponding field is not modified. Also, if you set Replace to true, then all fields required by the RegisterTaskWithMaintenanceWindow action are required for this request. Optional fields that aren't specified are set to null. - */ - updateMaintenanceWindowTask(params: SSM.Types.UpdateMaintenanceWindowTaskRequest, callback?: (err: AWSError, data: SSM.Types.UpdateMaintenanceWindowTaskResult) => void): Request; - /** - * Modifies a task assigned to a Maintenance Window. You can't change the task type, but you can change the following values: Task ARN. For example, you can change a RUN_COMMAND task from AWS-RunPowerShellScript to AWS-RunShellScript. Service role ARN. Task parameters. Task priority. Task MaxConcurrency and MaxErrors. Log location. If a parameter is null, then the corresponding field is not modified. Also, if you set Replace to true, then all fields required by the RegisterTaskWithMaintenanceWindow action are required for this request. Optional fields that aren't specified are set to null. - */ - updateMaintenanceWindowTask(callback?: (err: AWSError, data: SSM.Types.UpdateMaintenanceWindowTaskResult) => void): Request; - /** - * Assigns or changes an Amazon Identity and Access Management (IAM) role to the managed instance. - */ - updateManagedInstanceRole(params: SSM.Types.UpdateManagedInstanceRoleRequest, callback?: (err: AWSError, data: SSM.Types.UpdateManagedInstanceRoleResult) => void): Request; - /** - * Assigns or changes an Amazon Identity and Access Management (IAM) role to the managed instance. - */ - updateManagedInstanceRole(callback?: (err: AWSError, data: SSM.Types.UpdateManagedInstanceRoleResult) => void): Request; - /** - * Modifies an existing patch baseline. Fields not specified in the request are left unchanged. - */ - updatePatchBaseline(params: SSM.Types.UpdatePatchBaselineRequest, callback?: (err: AWSError, data: SSM.Types.UpdatePatchBaselineResult) => void): Request; - /** - * Modifies an existing patch baseline. Fields not specified in the request are left unchanged. - */ - updatePatchBaseline(callback?: (err: AWSError, data: SSM.Types.UpdatePatchBaselineResult) => void): Request; -} -declare namespace SSM { - export type AccountId = string; - export type AccountIdList = AccountId[]; - export interface Activation { - /** - * The ID created by Systems Manager when you submitted the activation. - */ - ActivationId?: ActivationId; - /** - * A user defined description of the activation. - */ - Description?: ActivationDescription; - /** - * A name for the managed instance when it is created. - */ - DefaultInstanceName?: DefaultInstanceName; - /** - * The Amazon Identity and Access Management (IAM) role to assign to the managed instance. - */ - IamRole?: IamRole; - /** - * The maximum number of managed instances that can be registered using this activation. - */ - RegistrationLimit?: RegistrationLimit; - /** - * The number of managed instances already registered with this activation. - */ - RegistrationsCount?: RegistrationsCount; - /** - * The date when this activation can no longer be used to register managed instances. - */ - ExpirationDate?: ExpirationDate; - /** - * Whether or not the activation is expired. - */ - Expired?: Boolean; - /** - * The date the activation was created. - */ - CreatedDate?: CreatedDate; - } - export type ActivationCode = string; - export type ActivationDescription = string; - export type ActivationId = string; - export type ActivationList = Activation[]; - export interface AddTagsToResourceRequest { - /** - * Specifies the type of resource you are tagging. - */ - ResourceType: ResourceTypeForTagging; - /** - * The resource ID you want to tag. - */ - ResourceId: ResourceId; - /** - * One or more tags. The value parameter is required, but if you don't want the tag to have a value, specify the parameter with no value, and we set the value to an empty string. - */ - Tags: TagList; - } - export interface AddTagsToResourceResult { - } - export type AgentErrorCode = string; - export type AllowedPattern = string; - export type ApproveAfterDays = number; - export interface Association { - /** - * The name of the Systems Manager document. - */ - Name?: DocumentName; - /** - * The ID of the instance. - */ - InstanceId?: InstanceId; - /** - * The ID created by the system when you create an association. An association is a binding between a document and a set of targets with a schedule. - */ - AssociationId?: AssociationId; - /** - * The association version. - */ - AssociationVersion?: AssociationVersion; - /** - * The version of the document used in the association. - */ - DocumentVersion?: DocumentVersion; - /** - * The instances targeted by the request to create an association. - */ - Targets?: Targets; - /** - * The date on which the association was last run. - */ - LastExecutionDate?: DateTime; - /** - * Information about the association. - */ - Overview?: AssociationOverview; - /** - * A cron expression that specifies a schedule when the association runs. - */ - ScheduleExpression?: ScheduleExpression; - /** - * The association name. - */ - AssociationName?: AssociationName; - } - export interface AssociationDescription { - /** - * The name of the Systems Manager document. - */ - Name?: DocumentName; - /** - * The ID of the instance. - */ - InstanceId?: InstanceId; - /** - * The association version. - */ - AssociationVersion?: AssociationVersion; - /** - * The date when the association was made. - */ - Date?: DateTime; - /** - * The date when the association was last updated. - */ - LastUpdateAssociationDate?: DateTime; - /** - * The association status. - */ - Status?: AssociationStatus; - /** - * Information about the association. - */ - Overview?: AssociationOverview; - /** - * The document version. - */ - DocumentVersion?: DocumentVersion; - /** - * A description of the parameters for a document. - */ - Parameters?: Parameters; - /** - * The association ID. - */ - AssociationId?: AssociationId; - /** - * The instances targeted by the request. - */ - Targets?: Targets; - /** - * A cron expression that specifies a schedule when the association runs. - */ - ScheduleExpression?: ScheduleExpression; - /** - * An Amazon S3 bucket where you want to store the output details of the request. - */ - OutputLocation?: InstanceAssociationOutputLocation; - /** - * The date on which the association was last run. - */ - LastExecutionDate?: DateTime; - /** - * The last date on which the association was successfully run. - */ - LastSuccessfulExecutionDate?: DateTime; - /** - * The association name. - */ - AssociationName?: AssociationName; - } - export type AssociationDescriptionList = AssociationDescription[]; - export interface AssociationFilter { - /** - * The name of the filter. - */ - key: AssociationFilterKey; - /** - * The filter value. - */ - value: AssociationFilterValue; - } - export type AssociationFilterKey = "InstanceId"|"Name"|"AssociationId"|"AssociationStatusName"|"LastExecutedBefore"|"LastExecutedAfter"|"AssociationName"|string; - export type AssociationFilterList = AssociationFilter[]; - export type AssociationFilterValue = string; - export type AssociationId = string; - export type AssociationList = Association[]; - export type AssociationName = string; - export interface AssociationOverview { - /** - * The status of the association. Status can be: Pending, Success, or Failed. - */ - Status?: StatusName; - /** - * A detailed status of the association. - */ - DetailedStatus?: StatusName; - /** - * Returns the number of targets for the association status. For example, if you created an association with two instances, and one of them was successful, this would return the count of instances by status. - */ - AssociationStatusAggregatedCount?: AssociationStatusAggregatedCount; - } - export interface AssociationStatus { - /** - * The date when the status changed. - */ - Date: DateTime; - /** - * The status. - */ - Name: AssociationStatusName; - /** - * The reason for the status. - */ - Message: StatusMessage; - /** - * A user-defined string. - */ - AdditionalInfo?: StatusAdditionalInfo; - } - export type AssociationStatusAggregatedCount = {[key: string]: InstanceCount}; - export type AssociationStatusName = "Pending"|"Success"|"Failed"|string; - export type AssociationVersion = string; - export interface AssociationVersionInfo { - /** - * The ID created by the system when the association was created. - */ - AssociationId?: AssociationId; - /** - * The association version. - */ - AssociationVersion?: AssociationVersion; - /** - * The date the association version was created. - */ - CreatedDate?: DateTime; - /** - * The name specified when the association was created. - */ - Name?: DocumentName; - /** - * The version of a Systems Manager document used when the association version was created. - */ - DocumentVersion?: DocumentVersion; - /** - * Parameters specified when the association version was created. - */ - Parameters?: Parameters; - /** - * The targets specified for the association when the association version was created. - */ - Targets?: Targets; - /** - * The cron or rate schedule specified for the association when the association version was created. - */ - ScheduleExpression?: ScheduleExpression; - /** - * The location in Amazon S3 specified for the association when the association version was created. - */ - OutputLocation?: InstanceAssociationOutputLocation; - /** - * The name specified for the association version when the association version was created. - */ - AssociationName?: AssociationName; - } - export type AssociationVersionList = AssociationVersionInfo[]; - export type AttributeName = string; - export type AttributeValue = string; - export type AutomationActionName = string; - export interface AutomationExecution { - /** - * The execution ID. - */ - AutomationExecutionId?: AutomationExecutionId; - /** - * The name of the Automation document used during the execution. - */ - DocumentName?: DocumentName; - /** - * The version of the document to use during execution. - */ - DocumentVersion?: DocumentVersion; - /** - * The time the execution started. - */ - ExecutionStartTime?: DateTime; - /** - * The time the execution finished. - */ - ExecutionEndTime?: DateTime; - /** - * The execution status of the Automation. - */ - AutomationExecutionStatus?: AutomationExecutionStatus; - /** - * A list of details about the current state of all steps that comprise an execution. An Automation document contains a list of steps that are executed in order. - */ - StepExecutions?: StepExecutionList; - /** - * The key-value map of execution parameters, which were supplied when calling StartAutomationExecution. - */ - Parameters?: AutomationParameterMap; - /** - * The list of execution outputs as defined in the automation document. - */ - Outputs?: AutomationParameterMap; - /** - * A message describing why an execution has failed, if the status is set to Failed. - */ - FailureMessage?: String; - } - export interface AutomationExecutionFilter { - /** - * The aspect of the Automation execution information that should be limited. - */ - Key: AutomationExecutionFilterKey; - /** - * The values used to limit the execution information associated with the filter's key. - */ - Values: AutomationExecutionFilterValueList; - } - export type AutomationExecutionFilterKey = "DocumentNamePrefix"|"ExecutionStatus"|string; - export type AutomationExecutionFilterList = AutomationExecutionFilter[]; - export type AutomationExecutionFilterValue = string; - export type AutomationExecutionFilterValueList = AutomationExecutionFilterValue[]; - export type AutomationExecutionId = string; - export interface AutomationExecutionMetadata { - /** - * The execution ID. - */ - AutomationExecutionId?: AutomationExecutionId; - /** - * The name of the Automation document used during execution. - */ - DocumentName?: DocumentName; - /** - * The document version used during the execution. - */ - DocumentVersion?: DocumentVersion; - /** - * The status of the execution. Valid values include: Running, Succeeded, Failed, Timed out, or Cancelled. - */ - AutomationExecutionStatus?: AutomationExecutionStatus; - /** - * The time the execution started.> - */ - ExecutionStartTime?: DateTime; - /** - * The time the execution finished. This is not populated if the execution is still in progress. - */ - ExecutionEndTime?: DateTime; - /** - * The IAM role ARN of the user who executed the Automation. - */ - ExecutedBy?: String; - /** - * An Amazon S3 bucket where execution information is stored. - */ - LogFile?: String; - /** - * The list of execution outputs as defined in the Automation document. - */ - Outputs?: AutomationParameterMap; - } - export type AutomationExecutionMetadataList = AutomationExecutionMetadata[]; - export type AutomationExecutionStatus = "Pending"|"InProgress"|"Waiting"|"Success"|"TimedOut"|"Cancelled"|"Failed"|string; - export type AutomationParameterKey = string; - export type AutomationParameterMap = {[key: string]: AutomationParameterValueList}; - export type AutomationParameterValue = string; - export type AutomationParameterValueList = AutomationParameterValue[]; - export type BaselineDescription = string; - export type BaselineId = string; - export type BaselineName = string; - export type BatchErrorMessage = string; - export type Boolean = boolean; - export interface CancelCommandRequest { - /** - * The ID of the command you want to cancel. - */ - CommandId: CommandId; - /** - * (Optional) A list of instance IDs on which you want to cancel the command. If not provided, the command is canceled on every instance on which it was requested. - */ - InstanceIds?: InstanceIdList; - } - export interface CancelCommandResult { - } - export type ClientToken = string; - export interface Command { - /** - * A unique identifier for this command. - */ - CommandId?: CommandId; - /** - * The name of the document requested for execution. - */ - DocumentName?: DocumentName; - /** - * User-specified information about the command, such as a brief description of what the command should do. - */ - Comment?: Comment; - /** - * If this time is reached and the command has not already started executing, it will not execute. Calculated based on the ExpiresAfter user input provided as part of the SendCommand API. - */ - ExpiresAfter?: DateTime; - /** - * The parameter values to be inserted in the document when executing the command. - */ - Parameters?: Parameters; - /** - * The instance IDs against which this command was requested. - */ - InstanceIds?: InstanceIdList; - /** - * An array of search criteria that targets instances using a Key,Value combination that you specify. Targets is required if you don't provide one or more instance IDs in the call. - */ - Targets?: Targets; - /** - * The date and time the command was requested. - */ - RequestedDateTime?: DateTime; - /** - * The status of the command. - */ - Status?: CommandStatus; - /** - * A detailed status of the command execution. StatusDetails includes more information than Status because it includes states resulting from error and concurrency control parameters. StatusDetails can show different results than Status. For more information about these statuses, see Run Command Status. StatusDetails can be one of the following values: Pending: The command has not been sent to any instances. In Progress: The command has been sent to at least one instance but has not reached a final state on all instances. Success: The command successfully executed on all invocations. This is a terminal state. Delivery Timed Out: The value of MaxErrors or more command invocations shows a status of Delivery Timed Out. This is a terminal state. Execution Timed Out: The value of MaxErrors or more command invocations shows a status of Execution Timed Out. This is a terminal state. Failed: The value of MaxErrors or more command invocations shows a status of Failed. This is a terminal state. Incomplete: The command was attempted on all instances and one or more invocations does not have a value of Success but not enough invocations failed for the status to be Failed. This is a terminal state. Canceled: The command was terminated before it was completed. This is a terminal state. Rate Exceeded: The number of instances targeted by the command exceeded the account limit for pending invocations. The system has canceled the command before executing it on any instance. This is a terminal state. - */ - StatusDetails?: StatusDetails; - /** - * (Deprecated) You can no longer specify this parameter. The system ignores it. Instead, Systems Manager automatically determines the Amazon S3 bucket region. - */ - OutputS3Region?: S3Region; - /** - * The S3 bucket where the responses to the command executions should be stored. This was requested when issuing the command. - */ - OutputS3BucketName?: S3BucketName; - /** - * The S3 directory path inside the bucket where the responses to the command executions should be stored. This was requested when issuing the command. - */ - OutputS3KeyPrefix?: S3KeyPrefix; - /** - * The maximum number of instances that are allowed to execute the command at the same time. You can specify a number of instances, such as 10, or a percentage of instances, such as 10%. The default value is 50. For more information about how to use MaxConcurrency, see Executing a Command Using Systems Manager Run Command. - */ - MaxConcurrency?: MaxConcurrency; - /** - * The maximum number of errors allowed before the system stops sending the command to additional targets. You can specify a number of errors, such as 10, or a percentage or errors, such as 10%. The default value is 50. For more information about how to use MaxErrors, see Executing a Command Using Systems Manager Run Command. - */ - MaxErrors?: MaxErrors; - /** - * The number of targets for the command. - */ - TargetCount?: TargetCount; - /** - * The number of targets for which the command invocation reached a terminal state. Terminal states include the following: Success, Failed, Execution Timed Out, Delivery Timed Out, Canceled, Terminated, or Undeliverable. - */ - CompletedCount?: CompletedCount; - /** - * The number of targets for which the status is Failed or Execution Timed Out. - */ - ErrorCount?: ErrorCount; - /** - * The IAM service role that Run Command uses to act on your behalf when sending notifications about command status changes. - */ - ServiceRole?: ServiceRole; - /** - * Configurations for sending notifications about command status changes. - */ - NotificationConfig?: NotificationConfig; - } - export interface CommandFilter { - /** - * The name of the filter. - */ - key: CommandFilterKey; - /** - * The filter value. - */ - value: CommandFilterValue; - } - export type CommandFilterKey = "InvokedAfter"|"InvokedBefore"|"Status"|string; - export type CommandFilterList = CommandFilter[]; - export type CommandFilterValue = string; - export type CommandId = string; - export interface CommandInvocation { - /** - * The command against which this invocation was requested. - */ - CommandId?: CommandId; - /** - * The instance ID in which this invocation was requested. - */ - InstanceId?: InstanceId; - /** - * The name of the invocation target. For Amazon EC2 instances this is the value for the aws:Name tag. For on-premises instances, this is the name of the instance. - */ - InstanceName?: InstanceTagName; - /** - * User-specified information about the command, such as a brief description of what the command should do. - */ - Comment?: Comment; - /** - * The document name that was requested for execution. - */ - DocumentName?: DocumentName; - /** - * The time and date the request was sent to this instance. - */ - RequestedDateTime?: DateTime; - /** - * Whether or not the invocation succeeded, failed, or is pending. - */ - Status?: CommandInvocationStatus; - /** - * A detailed status of the command execution for each invocation (each instance targeted by the command). StatusDetails includes more information than Status because it includes states resulting from error and concurrency control parameters. StatusDetails can show different results than Status. For more information about these statuses, see Run Command Status. StatusDetails can be one of the following values: Pending: The command has not been sent to the instance. In Progress: The command has been sent to the instance but has not reached a terminal state. Success: The execution of the command or plugin was successfully completed. This is a terminal state. Delivery Timed Out: The command was not delivered to the instance before the delivery timeout expired. Delivery timeouts do not count against the parent command's MaxErrors limit, but they do contribute to whether the parent command status is Success or Incomplete. This is a terminal state. Execution Timed Out: Command execution started on the instance, but the execution was not complete before the execution timeout expired. Execution timeouts count against the MaxErrors limit of the parent command. This is a terminal state. Failed: The command was not successful on the instance. For a plugin, this indicates that the result code was not zero. For a command invocation, this indicates that the result code for one or more plugins was not zero. Invocation failures count against the MaxErrors limit of the parent command. This is a terminal state. Canceled: The command was terminated before it was completed. This is a terminal state. Undeliverable: The command can't be delivered to the instance. The instance might not exist or might not be responding. Undeliverable invocations don't count against the parent command's MaxErrors limit and don't contribute to whether the parent command status is Success or Incomplete. This is a terminal state. Terminated: The parent command exceeded its MaxErrors limit and subsequent command invocations were canceled by the system. This is a terminal state. - */ - StatusDetails?: StatusDetails; - /** - * Gets the trace output sent by the agent. - */ - TraceOutput?: InvocationTraceOutput; - /** - * The URL to the plugin's StdOut file in Amazon S3, if the Amazon S3 bucket was defined for the parent command. For an invocation, StandardOutputUrl is populated if there is just one plugin defined for the command, and the Amazon S3 bucket was defined for the command. - */ - StandardOutputUrl?: Url; - /** - * The URL to the plugin's StdErr file in Amazon S3, if the Amazon S3 bucket was defined for the parent command. For an invocation, StandardErrorUrl is populated if there is just one plugin defined for the command, and the Amazon S3 bucket was defined for the command. - */ - StandardErrorUrl?: Url; - CommandPlugins?: CommandPluginList; - /** - * The IAM service role that Run Command uses to act on your behalf when sending notifications about command status changes on a per instance basis. - */ - ServiceRole?: ServiceRole; - /** - * Configurations for sending notifications about command status changes on a per instance basis. - */ - NotificationConfig?: NotificationConfig; - } - export type CommandInvocationList = CommandInvocation[]; - export type CommandInvocationStatus = "Pending"|"InProgress"|"Delayed"|"Success"|"Cancelled"|"TimedOut"|"Failed"|"Cancelling"|string; - export type CommandList = Command[]; - export type CommandMaxResults = number; - export interface CommandPlugin { - /** - * The name of the plugin. Must be one of the following: aws:updateAgent, aws:domainjoin, aws:applications, aws:runPowerShellScript, aws:psmodule, aws:cloudWatch, aws:runShellScript, or aws:updateSSMAgent. - */ - Name?: CommandPluginName; - /** - * The status of this plugin. You can execute a document with multiple plugins. - */ - Status?: CommandPluginStatus; - /** - * A detailed status of the plugin execution. StatusDetails includes more information than Status because it includes states resulting from error and concurrency control parameters. StatusDetails can show different results than Status. For more information about these statuses, see Run Command Status. StatusDetails can be one of the following values: Pending: The command has not been sent to the instance. In Progress: The command has been sent to the instance but has not reached a terminal state. Success: The execution of the command or plugin was successfully completed. This is a terminal state. Delivery Timed Out: The command was not delivered to the instance before the delivery timeout expired. Delivery timeouts do not count against the parent command's MaxErrors limit, but they do contribute to whether the parent command status is Success or Incomplete. This is a terminal state. Execution Timed Out: Command execution started on the instance, but the execution was not complete before the execution timeout expired. Execution timeouts count against the MaxErrors limit of the parent command. This is a terminal state. Failed: The command was not successful on the instance. For a plugin, this indicates that the result code was not zero. For a command invocation, this indicates that the result code for one or more plugins was not zero. Invocation failures count against the MaxErrors limit of the parent command. This is a terminal state. Canceled: The command was terminated before it was completed. This is a terminal state. Undeliverable: The command can't be delivered to the instance. The instance might not exist, or it might not be responding. Undeliverable invocations don't count against the parent command's MaxErrors limit, and they don't contribute to whether the parent command status is Success or Incomplete. This is a terminal state. Terminated: The parent command exceeded its MaxErrors limit and subsequent command invocations were canceled by the system. This is a terminal state. - */ - StatusDetails?: StatusDetails; - /** - * A numeric response code generated after executing the plugin. - */ - ResponseCode?: ResponseCode; - /** - * The time the plugin started executing. - */ - ResponseStartDateTime?: DateTime; - /** - * The time the plugin stopped executing. Could stop prematurely if, for example, a cancel command was sent. - */ - ResponseFinishDateTime?: DateTime; - /** - * Output of the plugin execution. - */ - Output?: CommandPluginOutput; - /** - * The URL for the complete text written by the plugin to stdout in Amazon S3. If the Amazon S3 bucket for the command was not specified, then this string is empty. - */ - StandardOutputUrl?: Url; - /** - * The URL for the complete text written by the plugin to stderr. If execution is not yet complete, then this string is empty. - */ - StandardErrorUrl?: Url; - /** - * (Deprecated) You can no longer specify this parameter. The system ignores it. Instead, Systems Manager automatically determines the Amazon S3 bucket region. - */ - OutputS3Region?: S3Region; - /** - * The S3 bucket where the responses to the command executions should be stored. This was requested when issuing the command. For example, in the following response: test_folder/ab19cb99-a030-46dd-9dfc-8eSAMPLEPre-Fix/i-1234567876543/awsrunShellScript test_folder is the name of the Amazon S3 bucket; ab19cb99-a030-46dd-9dfc-8eSAMPLEPre-Fix is the name of the S3 prefix; i-1234567876543 is the instance ID; awsrunShellScript is the name of the plugin. - */ - OutputS3BucketName?: S3BucketName; - /** - * The S3 directory path inside the bucket where the responses to the command executions should be stored. This was requested when issuing the command. For example, in the following response: test_folder/ab19cb99-a030-46dd-9dfc-8eSAMPLEPre-Fix/i-1234567876543/awsrunShellScript test_folder is the name of the Amazon S3 bucket; ab19cb99-a030-46dd-9dfc-8eSAMPLEPre-Fix is the name of the S3 prefix; i-1234567876543 is the instance ID; awsrunShellScript is the name of the plugin. - */ - OutputS3KeyPrefix?: S3KeyPrefix; - } - export type CommandPluginList = CommandPlugin[]; - export type CommandPluginName = string; - export type CommandPluginOutput = string; - export type CommandPluginStatus = "Pending"|"InProgress"|"Success"|"TimedOut"|"Cancelled"|"Failed"|string; - export type CommandStatus = "Pending"|"InProgress"|"Success"|"Cancelled"|"Failed"|"TimedOut"|"Cancelling"|string; - export type Comment = string; - export type CompletedCount = number; - export type ComplianceExecutionId = string; - export interface ComplianceExecutionSummary { - /** - * The time the execution ran as a datetime object that is saved in the following format: yyyy-MM-dd'T'HH:mm:ss'Z'. - */ - ExecutionTime: DateTime; - /** - * An ID created by the system when PutComplianceItems was called. For example, CommandID is a valid execution ID. You can use this ID in subsequent calls. - */ - ExecutionId?: ComplianceExecutionId; - /** - * The type of execution. For example, Command is a valid execution type. - */ - ExecutionType?: ComplianceExecutionType; - } - export type ComplianceExecutionType = string; - export type ComplianceFilterValue = string; - export interface ComplianceItem { - /** - * The compliance type. For example, Association (for a State Manager association), Patch, or Custom:string are all valid compliance types. - */ - ComplianceType?: ComplianceTypeName; - /** - * The type of resource. ManagedInstance is currently the only supported resource type. - */ - ResourceType?: ComplianceResourceType; - /** - * An ID for the resource. For a managed instance, this is the instance ID. - */ - ResourceId?: ComplianceResourceId; - /** - * An ID for the compliance item. For example, if the compliance item is a Windows patch, the ID could be the number of the KB article. Here's an example: KB4010320. - */ - Id?: ComplianceItemId; - /** - * A title for the compliance item. For example, if the compliance item is a Windows patch, the title could be the title of the KB article for the patch. Here's an example: Security Update for Active Directory Federation Services. - */ - Title?: ComplianceItemTitle; - /** - * The status of the compliance item. An item is either COMPLIANT or NON_COMPLIANT. - */ - Status?: ComplianceStatus; - /** - * The severity of the compliance status. Severity can be one of the following: Critical, High, Medium, Low, Informational, Unspecified. - */ - Severity?: ComplianceSeverity; - /** - * A summary for the compliance item. The summary includes an execution ID, the execution type (for example, command), and the execution time. - */ - ExecutionSummary?: ComplianceExecutionSummary; - /** - * A "Key": "Value" tag combination for the compliance item. - */ - Details?: ComplianceItemDetails; - } - export type ComplianceItemContentHash = string; - export type ComplianceItemDetails = {[key: string]: AttributeValue}; - export interface ComplianceItemEntry { - /** - * The compliance item ID. For example, if the compliance item is a Windows patch, the ID could be the number of the KB article. - */ - Id?: ComplianceItemId; - /** - * The title of the compliance item. For example, if the compliance item is a Windows patch, the title could be the title of the KB article for the patch. Here's an example: Security Update for Active Directory Federation Services. - */ - Title?: ComplianceItemTitle; - /** - * The severity of the compliance status. Severity can be one of the following: Critical, High, Medium, Low, Informational, Unspecified. - */ - Severity: ComplianceSeverity; - /** - * The status of the compliance item. An item is either COMPLIANT or NON_COMPLIANT. - */ - Status: ComplianceStatus; - /** - * A "Key": "Value" tag combination for the compliance item. - */ - Details?: ComplianceItemDetails; - } - export type ComplianceItemEntryList = ComplianceItemEntry[]; - export type ComplianceItemId = string; - export type ComplianceItemList = ComplianceItem[]; - export type ComplianceItemTitle = string; - export type ComplianceQueryOperatorType = "EQUAL"|"NOT_EQUAL"|"BEGIN_WITH"|"LESS_THAN"|"GREATER_THAN"|string; - export type ComplianceResourceId = string; - export type ComplianceResourceIdList = ComplianceResourceId[]; - export type ComplianceResourceType = string; - export type ComplianceResourceTypeList = ComplianceResourceType[]; - export type ComplianceSeverity = "CRITICAL"|"HIGH"|"MEDIUM"|"LOW"|"INFORMATIONAL"|"UNSPECIFIED"|string; - export type ComplianceStatus = "COMPLIANT"|"NON_COMPLIANT"|string; - export interface ComplianceStringFilter { - /** - * The name of the filter. - */ - Key?: ComplianceStringFilterKey; - /** - * The value for which to search. - */ - Values?: ComplianceStringFilterValueList; - /** - * The type of comparison that should be performed for the value: Equal, NotEqual, BeginWith, LessThan, or GreaterThan. - */ - Type?: ComplianceQueryOperatorType; - } - export type ComplianceStringFilterKey = string; - export type ComplianceStringFilterList = ComplianceStringFilter[]; - export type ComplianceStringFilterValueList = ComplianceFilterValue[]; - export type ComplianceSummaryCount = number; - export interface ComplianceSummaryItem { - /** - * The type of compliance item. For example, the compliance type can be Association, Patch, or Custom:string. - */ - ComplianceType?: ComplianceTypeName; - /** - * A list of COMPLIANT items for the specified compliance type. - */ - CompliantSummary?: CompliantSummary; - /** - * A list of NON_COMPLIANT items for the specified compliance type. - */ - NonCompliantSummary?: NonCompliantSummary; - } - export type ComplianceSummaryItemList = ComplianceSummaryItem[]; - export type ComplianceTypeName = string; - export interface CompliantSummary { - /** - * The total number of resources that are compliant. - */ - CompliantCount?: ComplianceSummaryCount; - /** - * A summary of the compliance severity by compliance type. - */ - SeveritySummary?: SeveritySummary; - } - export type ComputerName = string; - export interface CreateActivationRequest { - /** - * A userdefined description of the resource that you want to register with Amazon EC2. - */ - Description?: ActivationDescription; - /** - * The name of the registered, managed instance as it will appear in the Amazon EC2 console or when you use the AWS command line tools to list EC2 resources. - */ - DefaultInstanceName?: DefaultInstanceName; - /** - * The Amazon Identity and Access Management (IAM) role that you want to assign to the managed instance. - */ - IamRole: IamRole; - /** - * Specify the maximum number of managed instances you want to register. The default value is 1 instance. - */ - RegistrationLimit?: RegistrationLimit; - /** - * The date by which this activation request should expire. The default value is 24 hours. - */ - ExpirationDate?: ExpirationDate; - } - export interface CreateActivationResult { - /** - * The ID number generated by the system when it processed the activation. The activation ID functions like a user name. - */ - ActivationId?: ActivationId; - /** - * The code the system generates when it processes the activation. The activation code functions like a password to validate the activation ID. - */ - ActivationCode?: ActivationCode; - } - export interface CreateAssociationBatchRequest { - /** - * One or more associations. - */ - Entries: CreateAssociationBatchRequestEntries; - } - export type CreateAssociationBatchRequestEntries = CreateAssociationBatchRequestEntry[]; - export interface CreateAssociationBatchRequestEntry { - /** - * The name of the configuration document. - */ - Name: DocumentName; - /** - * The ID of the instance. - */ - InstanceId?: InstanceId; - /** - * A description of the parameters for a document. - */ - Parameters?: Parameters; - /** - * The document version. - */ - DocumentVersion?: DocumentVersion; - /** - * The instances targeted by the request. - */ - Targets?: Targets; - /** - * A cron expression that specifies a schedule when the association runs. - */ - ScheduleExpression?: ScheduleExpression; - /** - * An Amazon S3 bucket where you want to store the results of this request. - */ - OutputLocation?: InstanceAssociationOutputLocation; - /** - * Specify a descriptive name for the association. - */ - AssociationName?: AssociationName; - } - export interface CreateAssociationBatchResult { - /** - * Information about the associations that succeeded. - */ - Successful?: AssociationDescriptionList; - /** - * Information about the associations that failed. - */ - Failed?: FailedCreateAssociationList; - } - export interface CreateAssociationRequest { - /** - * The name of the Systems Manager document. - */ - Name: DocumentName; - /** - * The document version you want to associate with the target(s). Can be a specific version or the default version. - */ - DocumentVersion?: DocumentVersion; - /** - * The instance ID. - */ - InstanceId?: InstanceId; - /** - * The parameters for the documents runtime configuration. - */ - Parameters?: Parameters; - /** - * The targets (either instances or tags) for the association. - */ - Targets?: Targets; - /** - * A cron expression when the association will be applied to the target(s). - */ - ScheduleExpression?: ScheduleExpression; - /** - * An Amazon S3 bucket where you want to store the output details of the request. - */ - OutputLocation?: InstanceAssociationOutputLocation; - /** - * Specify a descriptive name for the association. - */ - AssociationName?: AssociationName; - } - export interface CreateAssociationResult { - /** - * Information about the association. - */ - AssociationDescription?: AssociationDescription; - } - export interface CreateDocumentRequest { - /** - * A valid JSON string. - */ - Content: DocumentContent; - /** - * A name for the Systems Manager document. - */ - Name: DocumentName; - /** - * The type of document to create. Valid document types include: Policy, Automation, and Command. - */ - DocumentType?: DocumentType; - } - export interface CreateDocumentResult { - /** - * Information about the Systems Manager document. - */ - DocumentDescription?: DocumentDescription; - } - export interface CreateMaintenanceWindowRequest { - /** - * The name of the Maintenance Window. - */ - Name: MaintenanceWindowName; - /** - * An optional description for the Maintenance Window. We recommend specifying a description to help you organize your Maintenance Windows. - */ - Description?: MaintenanceWindowDescription; - /** - * The schedule of the Maintenance Window in the form of a cron or rate expression. - */ - Schedule: MaintenanceWindowSchedule; - /** - * The duration of the Maintenance Window in hours. - */ - Duration: MaintenanceWindowDurationHours; - /** - * The number of hours before the end of the Maintenance Window that Systems Manager stops scheduling new tasks for execution. - */ - Cutoff: MaintenanceWindowCutoff; - /** - * Enables a Maintenance Window task to execute on managed instances, even if you have not registered those instances as targets. If enabled, then you must specify the unregistered instances (by instance ID) when you register a task with the Maintenance Window If you don't enable this option, then you must specify previously-registered targets when you register a task with the Maintenance Window. - */ - AllowUnassociatedTargets: MaintenanceWindowAllowUnassociatedTargets; - /** - * User-provided idempotency token. - */ - ClientToken?: ClientToken; - } - export interface CreateMaintenanceWindowResult { - /** - * The ID of the created Maintenance Window. - */ - WindowId?: MaintenanceWindowId; - } - export interface CreatePatchBaselineRequest { - /** - * Defines the operating system the patch baseline applies to. Supported operating systems include WINDOWS, AMAZON_LINUX, UBUNTU and REDHAT_ENTERPRISE_LINUX. The Default value is WINDOWS. - */ - OperatingSystem?: OperatingSystem; - /** - * The name of the patch baseline. - */ - Name: BaselineName; - /** - * A set of global filters used to exclude patches from the baseline. - */ - GlobalFilters?: PatchFilterGroup; - /** - * A set of rules used to include patches in the baseline. - */ - ApprovalRules?: PatchRuleGroup; - /** - * A list of explicitly approved patches for the baseline. - */ - ApprovedPatches?: PatchIdList; - /** - * Defines the compliance level for approved patches. This means that if an approved patch is reported as missing, this is the severity of the compliance violation. Valid compliance severity levels include the following: CRITICAL, HIGH, MEDIUM, LOW, INFORMATIONAL, UNSPECIFIED. The default value is UNSPECIFIED. - */ - ApprovedPatchesComplianceLevel?: PatchComplianceLevel; - /** - * A list of explicitly rejected patches for the baseline. - */ - RejectedPatches?: PatchIdList; - /** - * A description of the patch baseline. - */ - Description?: BaselineDescription; - /** - * User-provided idempotency token. - */ - ClientToken?: ClientToken; - } - export interface CreatePatchBaselineResult { - /** - * The ID of the created patch baseline. - */ - BaselineId?: BaselineId; - } - export interface CreateResourceDataSyncRequest { - /** - * A name for the configuration. - */ - SyncName: ResourceDataSyncName; - /** - * Amazon S3 configuration details for the sync. - */ - S3Destination: ResourceDataSyncS3Destination; - } - export interface CreateResourceDataSyncResult { - } - export type CreatedDate = Date; - export type DateTime = Date; - export type DefaultBaseline = boolean; - export type DefaultInstanceName = string; - export interface DeleteActivationRequest { - /** - * The ID of the activation that you want to delete. - */ - ActivationId: ActivationId; - } - export interface DeleteActivationResult { - } - export interface DeleteAssociationRequest { - /** - * The name of the Systems Manager document. - */ - Name?: DocumentName; - /** - * The ID of the instance. - */ - InstanceId?: InstanceId; - /** - * The association ID that you want to delete. - */ - AssociationId?: AssociationId; - } - export interface DeleteAssociationResult { - } - export interface DeleteDocumentRequest { - /** - * The name of the document. - */ - Name: DocumentName; - } - export interface DeleteDocumentResult { - } - export interface DeleteMaintenanceWindowRequest { - /** - * The ID of the Maintenance Window to delete. - */ - WindowId: MaintenanceWindowId; - } - export interface DeleteMaintenanceWindowResult { - /** - * The ID of the deleted Maintenance Window. - */ - WindowId?: MaintenanceWindowId; - } - export interface DeleteParameterRequest { - /** - * The name of the parameter to delete. - */ - Name: PSParameterName; - } - export interface DeleteParameterResult { - } - export interface DeleteParametersRequest { - /** - * The names of the parameters to delete. - */ - Names: ParameterNameList; - } - export interface DeleteParametersResult { - /** - * The names of the deleted parameters. - */ - DeletedParameters?: ParameterNameList; - /** - * The names of parameters that weren't deleted because the parameters are not valid. - */ - InvalidParameters?: ParameterNameList; - } - export interface DeletePatchBaselineRequest { - /** - * The ID of the patch baseline to delete. - */ - BaselineId: BaselineId; - } - export interface DeletePatchBaselineResult { - /** - * The ID of the deleted patch baseline. - */ - BaselineId?: BaselineId; - } - export interface DeleteResourceDataSyncRequest { - /** - * The name of the configuration to delete. - */ - SyncName: ResourceDataSyncName; - } - export interface DeleteResourceDataSyncResult { - } - export interface DeregisterManagedInstanceRequest { - /** - * The ID assigned to the managed instance when you registered it using the activation process. - */ - InstanceId: ManagedInstanceId; - } - export interface DeregisterManagedInstanceResult { - } - export interface DeregisterPatchBaselineForPatchGroupRequest { - /** - * The ID of the patch baseline to deregister the patch group from. - */ - BaselineId: BaselineId; - /** - * The name of the patch group that should be deregistered from the patch baseline. - */ - PatchGroup: PatchGroup; - } - export interface DeregisterPatchBaselineForPatchGroupResult { - /** - * The ID of the patch baseline the patch group was deregistered from. - */ - BaselineId?: BaselineId; - /** - * The name of the patch group deregistered from the patch baseline. - */ - PatchGroup?: PatchGroup; - } - export interface DeregisterTargetFromMaintenanceWindowRequest { - /** - * The ID of the Maintenance Window the target should be removed from. - */ - WindowId: MaintenanceWindowId; - /** - * The ID of the target definition to remove. - */ - WindowTargetId: MaintenanceWindowTargetId; - /** - * The system checks if the target is being referenced by a task. If the target is being referenced, the system returns an error and does not deregister the target from the Maintenance Window. - */ - Safe?: Boolean; - } - export interface DeregisterTargetFromMaintenanceWindowResult { - /** - * The ID of the Maintenance Window the target was removed from. - */ - WindowId?: MaintenanceWindowId; - /** - * The ID of the removed target definition. - */ - WindowTargetId?: MaintenanceWindowTargetId; - } - export interface DeregisterTaskFromMaintenanceWindowRequest { - /** - * The ID of the Maintenance Window the task should be removed from. - */ - WindowId: MaintenanceWindowId; - /** - * The ID of the task to remove from the Maintenance Window. - */ - WindowTaskId: MaintenanceWindowTaskId; - } - export interface DeregisterTaskFromMaintenanceWindowResult { - /** - * The ID of the Maintenance Window the task was removed from. - */ - WindowId?: MaintenanceWindowId; - /** - * The ID of the task removed from the Maintenance Window. - */ - WindowTaskId?: MaintenanceWindowTaskId; - } - export interface DescribeActivationsFilter { - /** - * The name of the filter. - */ - FilterKey?: DescribeActivationsFilterKeys; - /** - * The filter values. - */ - FilterValues?: StringList; - } - export type DescribeActivationsFilterKeys = "ActivationIds"|"DefaultInstanceName"|"IamRole"|string; - export type DescribeActivationsFilterList = DescribeActivationsFilter[]; - export interface DescribeActivationsRequest { - /** - * A filter to view information about your activations. - */ - Filters?: DescribeActivationsFilterList; - /** - * The maximum number of items to return for this call. The call also returns a token that you can specify in a subsequent call to get the next set of results. - */ - MaxResults?: MaxResults; - /** - * A token to start the list. Use this token to get the next set of results. - */ - NextToken?: NextToken; - } - export interface DescribeActivationsResult { - /** - * A list of activations for your AWS account. - */ - ActivationList?: ActivationList; - /** - * The token for the next set of items to return. Use this token to get the next set of results. - */ - NextToken?: NextToken; - } - export interface DescribeAssociationRequest { - /** - * The name of the Systems Manager document. - */ - Name?: DocumentName; - /** - * The instance ID. - */ - InstanceId?: InstanceId; - /** - * The association ID for which you want information. - */ - AssociationId?: AssociationId; - /** - * Specify the association version to retrieve. To view the latest version, either specify $LATEST for this parameter, or omit this parameter. To view a list of all associations for an instance, use ListInstanceAssociations. To get a list of versions for a specific association, use ListAssociationVersions. - */ - AssociationVersion?: AssociationVersion; - } - export interface DescribeAssociationResult { - /** - * Information about the association. - */ - AssociationDescription?: AssociationDescription; - } - export interface DescribeAutomationExecutionsRequest { - /** - * Filters used to limit the scope of executions that are requested. - */ - Filters?: AutomationExecutionFilterList; - /** - * The maximum number of items to return for this call. The call also returns a token that you can specify in a subsequent call to get the next set of results. - */ - MaxResults?: MaxResults; - /** - * The token for the next set of items to return. (You received this token from a previous call.) - */ - NextToken?: NextToken; - } - export interface DescribeAutomationExecutionsResult { - /** - * The list of details about each automation execution which has occurred which matches the filter specification, if any. - */ - AutomationExecutionMetadataList?: AutomationExecutionMetadataList; - /** - * The token to use when requesting the next set of items. If there are no additional items to return, the string is empty. - */ - NextToken?: NextToken; - } - export interface DescribeAvailablePatchesRequest { - /** - * Filters used to scope down the returned patches. - */ - Filters?: PatchOrchestratorFilterList; - /** - * The maximum number of patches to return (per page). - */ - MaxResults?: PatchBaselineMaxResults; - /** - * The token for the next set of items to return. (You received this token from a previous call.) - */ - NextToken?: NextToken; - } - export interface DescribeAvailablePatchesResult { - /** - * An array of patches. Each entry in the array is a patch structure. - */ - Patches?: PatchList; - /** - * The token to use when requesting the next set of items. If there are no additional items to return, the string is empty. - */ - NextToken?: NextToken; - } - export interface DescribeDocumentPermissionRequest { - /** - * The name of the document for which you are the owner. - */ - Name: DocumentName; - /** - * The permission type for the document. The permission type can be Share. - */ - PermissionType: DocumentPermissionType; - } - export interface DescribeDocumentPermissionResponse { - /** - * The account IDs that have permission to use this document. The ID can be either an AWS account or All. - */ - AccountIds?: AccountIdList; - } - export interface DescribeDocumentRequest { - /** - * The name of the Systems Manager document. - */ - Name: DocumentARN; - /** - * The document version for which you want information. Can be a specific version or the default version. - */ - DocumentVersion?: DocumentVersion; - } - export interface DescribeDocumentResult { - /** - * Information about the Systems Manager document. - */ - Document?: DocumentDescription; - } - export interface DescribeEffectiveInstanceAssociationsRequest { - /** - * The instance ID for which you want to view all associations. - */ - InstanceId: InstanceId; - /** - * The maximum number of items to return for this call. The call also returns a token that you can specify in a subsequent call to get the next set of results. - */ - MaxResults?: EffectiveInstanceAssociationMaxResults; - /** - * The token for the next set of items to return. (You received this token from a previous call.) - */ - NextToken?: NextToken; - } - export interface DescribeEffectiveInstanceAssociationsResult { - /** - * The associations for the requested instance. - */ - Associations?: InstanceAssociationList; - /** - * The token to use when requesting the next set of items. If there are no additional items to return, the string is empty. - */ - NextToken?: NextToken; - } - export interface DescribeEffectivePatchesForPatchBaselineRequest { - /** - * The ID of the patch baseline to retrieve the effective patches for. - */ - BaselineId: BaselineId; - /** - * The maximum number of patches to return (per page). - */ - MaxResults?: PatchBaselineMaxResults; - /** - * The token for the next set of items to return. (You received this token from a previous call.) - */ - NextToken?: NextToken; - } - export interface DescribeEffectivePatchesForPatchBaselineResult { - /** - * An array of patches and patch status. - */ - EffectivePatches?: EffectivePatchList; - /** - * The token to use when requesting the next set of items. If there are no additional items to return, the string is empty. - */ - NextToken?: NextToken; - } - export interface DescribeInstanceAssociationsStatusRequest { - /** - * The instance IDs for which you want association status information. - */ - InstanceId: InstanceId; - /** - * The maximum number of items to return for this call. The call also returns a token that you can specify in a subsequent call to get the next set of results. - */ - MaxResults?: MaxResults; - /** - * The token for the next set of items to return. (You received this token from a previous call.) - */ - NextToken?: NextToken; - } - export interface DescribeInstanceAssociationsStatusResult { - /** - * Status information about the association. - */ - InstanceAssociationStatusInfos?: InstanceAssociationStatusInfos; - /** - * The token to use when requesting the next set of items. If there are no additional items to return, the string is empty. - */ - NextToken?: NextToken; - } - export interface DescribeInstanceInformationRequest { - /** - * One or more filters. Use a filter to return a more specific list of instances. - */ - InstanceInformationFilterList?: InstanceInformationFilterList; - /** - * One or more filters. Use a filter to return a more specific list of instances. - */ - Filters?: InstanceInformationStringFilterList; - /** - * The maximum number of items to return for this call. The call also returns a token that you can specify in a subsequent call to get the next set of results. - */ - MaxResults?: MaxResultsEC2Compatible; - /** - * The token for the next set of items to return. (You received this token from a previous call.) - */ - NextToken?: NextToken; - } - export interface DescribeInstanceInformationResult { - /** - * The instance information list. - */ - InstanceInformationList?: InstanceInformationList; - /** - * The token to use when requesting the next set of items. If there are no additional items to return, the string is empty. - */ - NextToken?: NextToken; - } - export interface DescribeInstancePatchStatesForPatchGroupRequest { - /** - * The name of the patch group for which the patch state information should be retrieved. - */ - PatchGroup: PatchGroup; - /** - * Each entry in the array is a structure containing: Key (string between 1 and 200 characters) Values (array containing a single string) Type (string "Equal", "NotEqual", "LessThan", "GreaterThan") - */ - Filters?: InstancePatchStateFilterList; - /** - * The token for the next set of items to return. (You received this token from a previous call.) - */ - NextToken?: NextToken; - /** - * The maximum number of patches to return (per page). - */ - MaxResults?: PatchComplianceMaxResults; - } - export interface DescribeInstancePatchStatesForPatchGroupResult { - /** - * The high-level patch state for the requested instances. - */ - InstancePatchStates?: InstancePatchStatesList; - /** - * The token to use when requesting the next set of items. If there are no additional items to return, the string is empty. - */ - NextToken?: NextToken; - } - export interface DescribeInstancePatchStatesRequest { - /** - * The ID of the instance whose patch state information should be retrieved. - */ - InstanceIds: InstanceIdList; - /** - * The token for the next set of items to return. (You received this token from a previous call.) - */ - NextToken?: NextToken; - /** - * The maximum number of instances to return (per page). - */ - MaxResults?: PatchComplianceMaxResults; - } - export interface DescribeInstancePatchStatesResult { - /** - * The high-level patch state for the requested instances. - */ - InstancePatchStates?: InstancePatchStateList; - /** - * The token to use when requesting the next set of items. If there are no additional items to return, the string is empty. - */ - NextToken?: NextToken; - } - export interface DescribeInstancePatchesRequest { - /** - * The ID of the instance whose patch state information should be retrieved. - */ - InstanceId: InstanceId; - /** - * Each entry in the array is a structure containing: Key (string, between 1 and 128 characters) Values (array of strings, each string between 1 and 256 characters) - */ - Filters?: PatchOrchestratorFilterList; - /** - * The token for the next set of items to return. (You received this token from a previous call.) - */ - NextToken?: NextToken; - /** - * The maximum number of patches to return (per page). - */ - MaxResults?: PatchComplianceMaxResults; - } - export interface DescribeInstancePatchesResult { - /** - * Each entry in the array is a structure containing: Title (string) KBId (string) Classification (string) Severity (string) State (string: "INSTALLED", "INSTALLED OTHER", "MISSING", "NOT APPLICABLE", "FAILED") InstalledTime (DateTime) InstalledBy (string) - */ - Patches?: PatchComplianceDataList; - /** - * The token to use when requesting the next set of items. If there are no additional items to return, the string is empty. - */ - NextToken?: NextToken; - } - export interface DescribeMaintenanceWindowExecutionTaskInvocationsRequest { - /** - * The ID of the Maintenance Window execution the task is part of. - */ - WindowExecutionId: MaintenanceWindowExecutionId; - /** - * The ID of the specific task in the Maintenance Window task that should be retrieved. - */ - TaskId: MaintenanceWindowExecutionTaskId; - /** - * Optional filters used to scope down the returned task invocations. The supported filter key is STATUS with the corresponding values PENDING, IN_PROGRESS, SUCCESS, FAILED, TIMED_OUT, CANCELLING, and CANCELLED. - */ - Filters?: MaintenanceWindowFilterList; - /** - * The maximum number of items to return for this call. The call also returns a token that you can specify in a subsequent call to get the next set of results. - */ - MaxResults?: MaintenanceWindowMaxResults; - /** - * The token for the next set of items to return. (You received this token from a previous call.) - */ - NextToken?: NextToken; - } - export interface DescribeMaintenanceWindowExecutionTaskInvocationsResult { - /** - * Information about the task invocation results per invocation. - */ - WindowExecutionTaskInvocationIdentities?: MaintenanceWindowExecutionTaskInvocationIdentityList; - /** - * The token to use when requesting the next set of items. If there are no additional items to return, the string is empty. - */ - NextToken?: NextToken; - } - export interface DescribeMaintenanceWindowExecutionTasksRequest { - /** - * The ID of the Maintenance Window execution whose task executions should be retrieved. - */ - WindowExecutionId: MaintenanceWindowExecutionId; - /** - * Optional filters used to scope down the returned tasks. The supported filter key is STATUS with the corresponding values PENDING, IN_PROGRESS, SUCCESS, FAILED, TIMED_OUT, CANCELLING, and CANCELLED. - */ - Filters?: MaintenanceWindowFilterList; - /** - * The maximum number of items to return for this call. The call also returns a token that you can specify in a subsequent call to get the next set of results. - */ - MaxResults?: MaintenanceWindowMaxResults; - /** - * The token for the next set of items to return. (You received this token from a previous call.) - */ - NextToken?: NextToken; - } - export interface DescribeMaintenanceWindowExecutionTasksResult { - /** - * Information about the task executions. - */ - WindowExecutionTaskIdentities?: MaintenanceWindowExecutionTaskIdentityList; - /** - * The token to use when requesting the next set of items. If there are no additional items to return, the string is empty. - */ - NextToken?: NextToken; - } - export interface DescribeMaintenanceWindowExecutionsRequest { - /** - * The ID of the Maintenance Window whose executions should be retrieved. - */ - WindowId: MaintenanceWindowId; - /** - * Each entry in the array is a structure containing: Key (string, between 1 and 128 characters) Values (array of strings, each string is between 1 and 256 characters) The supported Keys are ExecutedBefore and ExecutedAfter with the value being a date/time string such as 2016-11-04T05:00:00Z. - */ - Filters?: MaintenanceWindowFilterList; - /** - * The maximum number of items to return for this call. The call also returns a token that you can specify in a subsequent call to get the next set of results. - */ - MaxResults?: MaintenanceWindowMaxResults; - /** - * The token for the next set of items to return. (You received this token from a previous call.) - */ - NextToken?: NextToken; - } - export interface DescribeMaintenanceWindowExecutionsResult { - /** - * Information about the Maintenance Windows execution. - */ - WindowExecutions?: MaintenanceWindowExecutionList; - /** - * The token to use when requesting the next set of items. If there are no additional items to return, the string is empty. - */ - NextToken?: NextToken; - } - export interface DescribeMaintenanceWindowTargetsRequest { - /** - * The ID of the Maintenance Window whose targets should be retrieved. - */ - WindowId: MaintenanceWindowId; - /** - * Optional filters that can be used to narrow down the scope of the returned window targets. The supported filter keys are Type, WindowTargetId and OwnerInformation. - */ - Filters?: MaintenanceWindowFilterList; - /** - * The maximum number of items to return for this call. The call also returns a token that you can specify in a subsequent call to get the next set of results. - */ - MaxResults?: MaintenanceWindowMaxResults; - /** - * The token for the next set of items to return. (You received this token from a previous call.) - */ - NextToken?: NextToken; - } - export interface DescribeMaintenanceWindowTargetsResult { - /** - * Information about the targets in the Maintenance Window. - */ - Targets?: MaintenanceWindowTargetList; - /** - * The token to use when requesting the next set of items. If there are no additional items to return, the string is empty. - */ - NextToken?: NextToken; - } - export interface DescribeMaintenanceWindowTasksRequest { - /** - * The ID of the Maintenance Window whose tasks should be retrieved. - */ - WindowId: MaintenanceWindowId; - /** - * Optional filters used to narrow down the scope of the returned tasks. The supported filter keys are WindowTaskId, TaskArn, Priority, and TaskType. - */ - Filters?: MaintenanceWindowFilterList; - /** - * The maximum number of items to return for this call. The call also returns a token that you can specify in a subsequent call to get the next set of results. - */ - MaxResults?: MaintenanceWindowMaxResults; - /** - * The token for the next set of items to return. (You received this token from a previous call.) - */ - NextToken?: NextToken; - } - export interface DescribeMaintenanceWindowTasksResult { - /** - * Information about the tasks in the Maintenance Window. - */ - Tasks?: MaintenanceWindowTaskList; - /** - * The token to use when requesting the next set of items. If there are no additional items to return, the string is empty. - */ - NextToken?: NextToken; - } - export interface DescribeMaintenanceWindowsRequest { - /** - * Optional filters used to narrow down the scope of the returned Maintenance Windows. Supported filter keys are Name and Enabled. - */ - Filters?: MaintenanceWindowFilterList; - /** - * The maximum number of items to return for this call. The call also returns a token that you can specify in a subsequent call to get the next set of results. - */ - MaxResults?: MaintenanceWindowMaxResults; - /** - * The token for the next set of items to return. (You received this token from a previous call.) - */ - NextToken?: NextToken; - } - export interface DescribeMaintenanceWindowsResult { - /** - * Information about the Maintenance Windows. - */ - WindowIdentities?: MaintenanceWindowIdentityList; - /** - * The token to use when requesting the next set of items. If there are no additional items to return, the string is empty. - */ - NextToken?: NextToken; - } - export interface DescribeParametersRequest { - /** - * One or more filters. Use a filter to return a more specific list of results. - */ - Filters?: ParametersFilterList; - /** - * Filters to limit the request results. - */ - ParameterFilters?: ParameterStringFilterList; - /** - * The maximum number of items to return for this call. The call also returns a token that you can specify in a subsequent call to get the next set of results. - */ - MaxResults?: MaxResults; - /** - * The token for the next set of items to return. (You received this token from a previous call.) - */ - NextToken?: NextToken; - } - export interface DescribeParametersResult { - /** - * Parameters returned by the request. - */ - Parameters?: ParameterMetadataList; - /** - * The token to use when requesting the next set of items. If there are no additional items to return, the string is empty. - */ - NextToken?: NextToken; - } - export interface DescribePatchBaselinesRequest { - /** - * Each element in the array is a structure containing: Key: (string, "NAME_PREFIX" or "OWNER") Value: (array of strings, exactly 1 entry, between 1 and 255 characters) - */ - Filters?: PatchOrchestratorFilterList; - /** - * The maximum number of patch baselines to return (per page). - */ - MaxResults?: PatchBaselineMaxResults; - /** - * The token for the next set of items to return. (You received this token from a previous call.) - */ - NextToken?: NextToken; - } - export interface DescribePatchBaselinesResult { - /** - * An array of PatchBaselineIdentity elements. - */ - BaselineIdentities?: PatchBaselineIdentityList; - /** - * The token to use when requesting the next set of items. If there are no additional items to return, the string is empty. - */ - NextToken?: NextToken; - } - export interface DescribePatchGroupStateRequest { - /** - * The name of the patch group whose patch snapshot should be retrieved. - */ - PatchGroup: PatchGroup; - } - export interface DescribePatchGroupStateResult { - /** - * The number of instances in the patch group. - */ - Instances?: Integer; - /** - * The number of instances with installed patches. - */ - InstancesWithInstalledPatches?: Integer; - /** - * The number of instances with patches installed that aren't defined in the patch baseline. - */ - InstancesWithInstalledOtherPatches?: Integer; - /** - * The number of instances with missing patches from the patch baseline. - */ - InstancesWithMissingPatches?: Integer; - /** - * The number of instances with patches from the patch baseline that failed to install. - */ - InstancesWithFailedPatches?: Integer; - /** - * The number of instances with patches that aren't applicable. - */ - InstancesWithNotApplicablePatches?: Integer; - } - export interface DescribePatchGroupsRequest { - /** - * The maximum number of patch groups to return (per page). - */ - MaxResults?: PatchBaselineMaxResults; - /** - * One or more filters. Use a filter to return a more specific list of results. - */ - Filters?: PatchOrchestratorFilterList; - /** - * The token for the next set of items to return. (You received this token from a previous call.) - */ - NextToken?: NextToken; - } - export interface DescribePatchGroupsResult { - /** - * Each entry in the array contains: PatchGroup: string (between 1 and 256 characters, Regex: ^([\p{L}\p{Z}\p{N}_.:/=+\-@]*)$) PatchBaselineIdentity: A PatchBaselineIdentity element. - */ - Mappings?: PatchGroupPatchBaselineMappingList; - /** - * The token to use when requesting the next set of items. If there are no additional items to return, the string is empty. - */ - NextToken?: NextToken; - } - export type DescriptionInDocument = string; - export type DocumentARN = string; - export type DocumentContent = string; - export interface DocumentDefaultVersionDescription { - /** - * The name of the document. - */ - Name?: DocumentName; - /** - * The default version of the document. - */ - DefaultVersion?: DocumentVersion; - } - export interface DocumentDescription { - /** - * The SHA1 hash of the document, which you can use for verification. - */ - Sha1?: DocumentSha1; - /** - * The Sha256 or Sha1 hash created by the system when the document was created. Sha1 hashes have been deprecated. - */ - Hash?: DocumentHash; - /** - * Sha256 or Sha1. Sha1 hashes have been deprecated. - */ - HashType?: DocumentHashType; - /** - * The name of the Systems Manager document. - */ - Name?: DocumentARN; - /** - * The AWS user account that created the document. - */ - Owner?: DocumentOwner; - /** - * The date when the document was created. - */ - CreatedDate?: DateTime; - /** - * The status of the Systems Manager document. - */ - Status?: DocumentStatus; - /** - * The document version. - */ - DocumentVersion?: DocumentVersion; - /** - * A description of the document. - */ - Description?: DescriptionInDocument; - /** - * A description of the parameters for a document. - */ - Parameters?: DocumentParameterList; - /** - * The list of OS platforms compatible with this Systems Manager document. - */ - PlatformTypes?: PlatformTypeList; - /** - * The type of document. - */ - DocumentType?: DocumentType; - /** - * The schema version. - */ - SchemaVersion?: DocumentSchemaVersion; - /** - * The latest version of the document. - */ - LatestVersion?: DocumentVersion; - /** - * The default version. - */ - DefaultVersion?: DocumentVersion; - /** - * The tags, or metadata, that have been applied to the document. - */ - Tags?: TagList; - } - export interface DocumentFilter { - /** - * The name of the filter. - */ - key: DocumentFilterKey; - /** - * The value of the filter. - */ - value: DocumentFilterValue; - } - export type DocumentFilterKey = "Name"|"Owner"|"PlatformTypes"|"DocumentType"|string; - export type DocumentFilterList = DocumentFilter[]; - export type DocumentFilterValue = string; - export type DocumentHash = string; - export type DocumentHashType = "Sha256"|"Sha1"|string; - export interface DocumentIdentifier { - /** - * The name of the Systems Manager document. - */ - Name?: DocumentARN; - /** - * The AWS user account that created the document. - */ - Owner?: DocumentOwner; - /** - * The operating system platform. - */ - PlatformTypes?: PlatformTypeList; - /** - * The document version. - */ - DocumentVersion?: DocumentVersion; - /** - * The document type. - */ - DocumentType?: DocumentType; - /** - * The schema version. - */ - SchemaVersion?: DocumentSchemaVersion; - /** - * The tags, or metadata, that have been applied to the document. - */ - Tags?: TagList; - } - export type DocumentIdentifierList = DocumentIdentifier[]; - export interface DocumentKeyValuesFilter { - /** - * The name of the filter key. - */ - Key?: DocumentKeyValuesFilterKey; - /** - * The value for the filter key. - */ - Values?: DocumentKeyValuesFilterValues; - } - export type DocumentKeyValuesFilterKey = string; - export type DocumentKeyValuesFilterList = DocumentKeyValuesFilter[]; - export type DocumentKeyValuesFilterValue = string; - export type DocumentKeyValuesFilterValues = DocumentKeyValuesFilterValue[]; - export type DocumentName = string; - export type DocumentOwner = string; - export interface DocumentParameter { - /** - * The name of the parameter. - */ - Name?: DocumentParameterName; - /** - * The type of parameter. The type can be either String or StringList. - */ - Type?: DocumentParameterType; - /** - * A description of what the parameter does, how to use it, the default value, and whether or not the parameter is optional. - */ - Description?: DocumentParameterDescrption; - /** - * If specified, the default values for the parameters. Parameters without a default value are required. Parameters with a default value are optional. - */ - DefaultValue?: DocumentParameterDefaultValue; - } - export type DocumentParameterDefaultValue = string; - export type DocumentParameterDescrption = string; - export type DocumentParameterList = DocumentParameter[]; - export type DocumentParameterName = string; - export type DocumentParameterType = "String"|"StringList"|string; - export type DocumentPermissionType = "Share"|string; - export type DocumentSchemaVersion = string; - export type DocumentSha1 = string; - export type DocumentStatus = "Creating"|"Active"|"Updating"|"Deleting"|string; - export type DocumentType = "Command"|"Policy"|"Automation"|string; - export type DocumentVersion = string; - export interface DocumentVersionInfo { - /** - * The document name. - */ - Name?: DocumentName; - /** - * The document version. - */ - DocumentVersion?: DocumentVersion; - /** - * The date the document was created. - */ - CreatedDate?: DateTime; - /** - * An identifier for the default version of the document. - */ - IsDefaultVersion?: Boolean; - } - export type DocumentVersionList = DocumentVersionInfo[]; - export type DocumentVersionNumber = string; - export type EffectiveInstanceAssociationMaxResults = number; - export interface EffectivePatch { - /** - * Provides metadata for a patch, including information such as the KB ID, severity, classification and a URL for where more information can be obtained about the patch. - */ - Patch?: Patch; - /** - * The status of the patch in a patch baseline. This includes information about whether the patch is currently approved, due to be approved by a rule, explicitly approved, or explicitly rejected and the date the patch was or will be approved. - */ - PatchStatus?: PatchStatus; - } - export type EffectivePatchList = EffectivePatch[]; - export type ErrorCount = number; - export type ExpirationDate = Date; - export interface FailedCreateAssociation { - /** - * The association. - */ - Entry?: CreateAssociationBatchRequestEntry; - /** - * A description of the failure. - */ - Message?: BatchErrorMessage; - /** - * The source of the failure. - */ - Fault?: Fault; - } - export type FailedCreateAssociationList = FailedCreateAssociation[]; - export interface FailureDetails { - /** - * The stage of the Automation execution when the failure occurred. The stages include the following: InputValidation, PreVerification, Invocation, PostVerification. - */ - FailureStage?: String; - /** - * The type of Automation failure. Failure types include the following: Action, Permission, Throttling, Verification, Internal. - */ - FailureType?: String; - /** - * Detailed information about the Automation step failure. - */ - Details?: AutomationParameterMap; - } - export type Fault = "Client"|"Server"|"Unknown"|string; - export interface GetAutomationExecutionRequest { - /** - * The unique identifier for an existing automation execution to examine. The execution ID is returned by StartAutomationExecution when the execution of an Automation document is initiated. - */ - AutomationExecutionId: AutomationExecutionId; - } - export interface GetAutomationExecutionResult { - /** - * Detailed information about the current state of an automation execution. - */ - AutomationExecution?: AutomationExecution; - } - export interface GetCommandInvocationRequest { - /** - * (Required) The parent command ID of the invocation plugin. - */ - CommandId: CommandId; - /** - * (Required) The ID of the managed instance targeted by the command. A managed instance can be an Amazon EC2 instance or an instance in your hybrid environment that is configured for Systems Manager. - */ - InstanceId: InstanceId; - /** - * (Optional) The name of the plugin for which you want detailed results. If the document contains only one plugin, the name can be omitted and the details will be returned. - */ - PluginName?: CommandPluginName; - } - export interface GetCommandInvocationResult { - /** - * The parent command ID of the invocation plugin. - */ - CommandId?: CommandId; - /** - * The ID of the managed instance targeted by the command. A managed instance can be an Amazon EC2 instance or an instance in your hybrid environment that is configured for Systems Manager. - */ - InstanceId?: InstanceId; - /** - * The comment text for the command. - */ - Comment?: Comment; - /** - * The name of the document that was executed. For example, AWS-RunShellScript. - */ - DocumentName?: DocumentName; - /** - * The name of the plugin for which you want detailed results. For example, aws:RunShellScript is a plugin. - */ - PluginName?: CommandPluginName; - /** - * The error level response code for the plugin script. If the response code is -1, then the command has not started executing on the instance, or it was not received by the instance. - */ - ResponseCode?: ResponseCode; - /** - * The date and time the plugin started executing. Date and time are written in ISO 8601 format. For example, June 7, 2017 is represented as 2017-06-7. The following sample AWS CLI command uses the InvokedBefore filter. aws ssm list-commands --filters key=InvokedBefore,value=2017-06-07T00:00:00Z If the plugin has not started to execute, the string is empty. - */ - ExecutionStartDateTime?: StringDateTime; - /** - * Duration since ExecutionStartDateTime. - */ - ExecutionElapsedTime?: StringDateTime; - /** - * The date and time the plugin was finished executing. Date and time are written in ISO 8601 format. For example, June 7, 2017 is represented as 2017-06-7. The following sample AWS CLI command uses the InvokedAfter filter. aws ssm list-commands --filters key=InvokedAfter,value=2017-06-07T00:00:00Z If the plugin has not started to execute, the string is empty. - */ - ExecutionEndDateTime?: StringDateTime; - /** - * The status of the parent command for this invocation. This status can be different than StatusDetails. - */ - Status?: CommandInvocationStatus; - /** - * A detailed status of the command execution for an invocation. StatusDetails includes more information than Status because it includes states resulting from error and concurrency control parameters. StatusDetails can show different results than Status. For more information about these statuses, see Run Command Status. StatusDetails can be one of the following values: Pending: The command has not been sent to the instance. In Progress: The command has been sent to the instance but has not reached a terminal state. Delayed: The system attempted to send the command to the target, but the target was not available. The instance might not be available because of network issues, the instance was stopped, etc. The system will try to deliver the command again. Success: The command or plugin was executed successfully. This is a terminal state. Delivery Timed Out: The command was not delivered to the instance before the delivery timeout expired. Delivery timeouts do not count against the parent command's MaxErrors limit, but they do contribute to whether the parent command status is Success or Incomplete. This is a terminal state. Execution Timed Out: The command started to execute on the instance, but the execution was not complete before the timeout expired. Execution timeouts count against the MaxErrors limit of the parent command. This is a terminal state. Failed: The command wasn't executed successfully on the instance. For a plugin, this indicates that the result code was not zero. For a command invocation, this indicates that the result code for one or more plugins was not zero. Invocation failures count against the MaxErrors limit of the parent command. This is a terminal state. Canceled: The command was terminated before it was completed. This is a terminal state. Undeliverable: The command can't be delivered to the instance. The instance might not exist or might not be responding. Undeliverable invocations don't count against the parent command's MaxErrors limit and don't contribute to whether the parent command status is Success or Incomplete. This is a terminal state. Terminated: The parent command exceeded its MaxErrors limit and subsequent command invocations were canceled by the system. This is a terminal state. - */ - StatusDetails?: StatusDetails; - /** - * The first 24,000 characters written by the plugin to stdout. If the command has not finished executing, if ExecutionStatus is neither Succeeded nor Failed, then this string is empty. - */ - StandardOutputContent?: StandardOutputContent; - /** - * The URL for the complete text written by the plugin to stdout in Amazon S3. If an Amazon S3 bucket was not specified, then this string is empty. - */ - StandardOutputUrl?: Url; - /** - * The first 8,000 characters written by the plugin to stderr. If the command has not finished executing, then this string is empty. - */ - StandardErrorContent?: StandardErrorContent; - /** - * The URL for the complete text written by the plugin to stderr. If the command has not finished executing, then this string is empty. - */ - StandardErrorUrl?: Url; - } - export interface GetDefaultPatchBaselineRequest { - /** - * Returns the default patch baseline for the specified operating system. - */ - OperatingSystem?: OperatingSystem; - } - export interface GetDefaultPatchBaselineResult { - /** - * The ID of the default patch baseline. - */ - BaselineId?: BaselineId; - /** - * The operating system for the returned patch baseline. - */ - OperatingSystem?: OperatingSystem; - } - export interface GetDeployablePatchSnapshotForInstanceRequest { - /** - * The ID of the instance for which the appropriate patch snapshot should be retrieved. - */ - InstanceId: InstanceId; - /** - * The user-defined snapshot ID. - */ - SnapshotId: SnapshotId; - } - export interface GetDeployablePatchSnapshotForInstanceResult { - /** - * The ID of the instance. - */ - InstanceId?: InstanceId; - /** - * The user-defined snapshot ID. - */ - SnapshotId?: SnapshotId; - /** - * A pre-signed Amazon S3 URL that can be used to download the patch snapshot. - */ - SnapshotDownloadUrl?: SnapshotDownloadUrl; - /** - * Returns the specific operating system (for example Windows Server 2012 or Amazon Linux 2015.09) on the instance for the specified patch snapshot. - */ - Product?: Product; - } - export interface GetDocumentRequest { - /** - * The name of the Systems Manager document. - */ - Name: DocumentARN; - /** - * The document version for which you want information. - */ - DocumentVersion?: DocumentVersion; - } - export interface GetDocumentResult { - /** - * The name of the Systems Manager document. - */ - Name?: DocumentARN; - /** - * The document version. - */ - DocumentVersion?: DocumentVersion; - /** - * The contents of the Systems Manager document. - */ - Content?: DocumentContent; - /** - * The document type. - */ - DocumentType?: DocumentType; - } - export interface GetInventoryRequest { - /** - * One or more filters. Use a filter to return a more specific list of results. - */ - Filters?: InventoryFilterList; - /** - * The list of inventory item types to return. - */ - ResultAttributes?: ResultAttributeList; - /** - * The token for the next set of items to return. (You received this token from a previous call.) - */ - NextToken?: NextToken; - /** - * The maximum number of items to return for this call. The call also returns a token that you can specify in a subsequent call to get the next set of results. - */ - MaxResults?: MaxResults; - } - export interface GetInventoryResult { - /** - * Collection of inventory entities such as a collection of instance inventory. - */ - Entities?: InventoryResultEntityList; - /** - * The token to use when requesting the next set of items. If there are no additional items to return, the string is empty. - */ - NextToken?: NextToken; - } - export type GetInventorySchemaMaxResults = number; - export interface GetInventorySchemaRequest { - /** - * The type of inventory item to return. - */ - TypeName?: InventoryItemTypeNameFilter; - /** - * The token for the next set of items to return. (You received this token from a previous call.) - */ - NextToken?: NextToken; - /** - * The maximum number of items to return for this call. The call also returns a token that you can specify in a subsequent call to get the next set of results. - */ - MaxResults?: GetInventorySchemaMaxResults; - /** - * Returns the sub-type schema for a specified inventory type. - */ - SubType?: IsSubTypeSchema; - } - export interface GetInventorySchemaResult { - /** - * Inventory schemas returned by the request. - */ - Schemas?: InventoryItemSchemaResultList; - /** - * The token to use when requesting the next set of items. If there are no additional items to return, the string is empty. - */ - NextToken?: NextToken; - } - export interface GetMaintenanceWindowExecutionRequest { - /** - * The ID of the Maintenance Window execution that includes the task. - */ - WindowExecutionId: MaintenanceWindowExecutionId; - } - export interface GetMaintenanceWindowExecutionResult { - /** - * The ID of the Maintenance Window execution. - */ - WindowExecutionId?: MaintenanceWindowExecutionId; - /** - * The ID of the task executions from the Maintenance Window execution. - */ - TaskIds?: MaintenanceWindowExecutionTaskIdList; - /** - * The status of the Maintenance Window execution. - */ - Status?: MaintenanceWindowExecutionStatus; - /** - * The details explaining the Status. Only available for certain status values. - */ - StatusDetails?: MaintenanceWindowExecutionStatusDetails; - /** - * The time the Maintenance Window started executing. - */ - StartTime?: DateTime; - /** - * The time the Maintenance Window finished executing. - */ - EndTime?: DateTime; - } - export interface GetMaintenanceWindowExecutionTaskInvocationRequest { - /** - * The ID of the Maintenance Window execution for which the task is a part. - */ - WindowExecutionId: MaintenanceWindowExecutionId; - /** - * The ID of the specific task in the Maintenance Window task that should be retrieved. - */ - TaskId: MaintenanceWindowExecutionTaskId; - /** - * The invocation ID to retrieve. - */ - InvocationId: MaintenanceWindowExecutionTaskInvocationId; - } - export interface GetMaintenanceWindowExecutionTaskInvocationResult { - /** - * The Maintenance Window execution ID. - */ - WindowExecutionId?: MaintenanceWindowExecutionId; - /** - * The task execution ID. - */ - TaskExecutionId?: MaintenanceWindowExecutionTaskId; - /** - * The invocation ID. - */ - InvocationId?: MaintenanceWindowExecutionTaskInvocationId; - /** - * The execution ID. - */ - ExecutionId?: MaintenanceWindowExecutionTaskExecutionId; - /** - * Retrieves the task type for a Maintenance Window. Task types include the following: LAMBDA, STEP_FUNCTION, AUTOMATION, RUN_COMMAND. - */ - TaskType?: MaintenanceWindowTaskType; - /** - * The parameters used at the time that the task executed. - */ - Parameters?: MaintenanceWindowExecutionTaskInvocationParameters; - /** - * The task status for an invocation. - */ - Status?: MaintenanceWindowExecutionStatus; - /** - * The details explaining the status. Details are only available for certain status values. - */ - StatusDetails?: MaintenanceWindowExecutionStatusDetails; - /** - * The time that the task started executing on the target. - */ - StartTime?: DateTime; - /** - * The time that the task finished executing on the target. - */ - EndTime?: DateTime; - /** - * User-provided value to be included in any CloudWatch events raised while running tasks for these targets in this Maintenance Window. - */ - OwnerInformation?: OwnerInformation; - /** - * The Maintenance Window target ID. - */ - WindowTargetId?: MaintenanceWindowTaskTargetId; - } - export interface GetMaintenanceWindowExecutionTaskRequest { - /** - * The ID of the Maintenance Window execution that includes the task. - */ - WindowExecutionId: MaintenanceWindowExecutionId; - /** - * The ID of the specific task execution in the Maintenance Window task that should be retrieved. - */ - TaskId: MaintenanceWindowExecutionTaskId; - } - export interface GetMaintenanceWindowExecutionTaskResult { - /** - * The ID of the Maintenance Window execution that includes the task. - */ - WindowExecutionId?: MaintenanceWindowExecutionId; - /** - * The ID of the specific task execution in the Maintenance Window task that was retrieved. - */ - TaskExecutionId?: MaintenanceWindowExecutionTaskId; - /** - * The ARN of the executed task. - */ - TaskArn?: MaintenanceWindowTaskArn; - /** - * The role that was assumed when executing the task. - */ - ServiceRole?: ServiceRole; - /** - * The type of task executed. - */ - Type?: MaintenanceWindowTaskType; - /** - * The parameters passed to the task when it was executed. The map has the following format: Key: string, between 1 and 255 characters Value: an array of strings, each string is between 1 and 255 characters - */ - TaskParameters?: MaintenanceWindowTaskParametersList; - /** - * The priority of the task. - */ - Priority?: MaintenanceWindowTaskPriority; - /** - * The defined maximum number of task executions that could be run in parallel. - */ - MaxConcurrency?: MaxConcurrency; - /** - * The defined maximum number of task execution errors allowed before scheduling of the task execution would have been stopped. - */ - MaxErrors?: MaxErrors; - /** - * The status of the task. - */ - Status?: MaintenanceWindowExecutionStatus; - /** - * The details explaining the Status. Only available for certain status values. - */ - StatusDetails?: MaintenanceWindowExecutionStatusDetails; - /** - * The time the task execution started. - */ - StartTime?: DateTime; - /** - * The time the task execution completed. - */ - EndTime?: DateTime; - } - export interface GetMaintenanceWindowRequest { - /** - * The ID of the desired Maintenance Window. - */ - WindowId: MaintenanceWindowId; - } - export interface GetMaintenanceWindowResult { - /** - * The ID of the created Maintenance Window. - */ - WindowId?: MaintenanceWindowId; - /** - * The name of the Maintenance Window. - */ - Name?: MaintenanceWindowName; - /** - * The description of the Maintenance Window. - */ - Description?: MaintenanceWindowDescription; - /** - * The schedule of the Maintenance Window in the form of a cron or rate expression. - */ - Schedule?: MaintenanceWindowSchedule; - /** - * The duration of the Maintenance Window in hours. - */ - Duration?: MaintenanceWindowDurationHours; - /** - * The number of hours before the end of the Maintenance Window that Systems Manager stops scheduling new tasks for execution. - */ - Cutoff?: MaintenanceWindowCutoff; - /** - * Whether targets must be registered with the Maintenance Window before tasks can be defined for those targets. - */ - AllowUnassociatedTargets?: MaintenanceWindowAllowUnassociatedTargets; - /** - * Whether the Maintenance Windows is enabled. - */ - Enabled?: MaintenanceWindowEnabled; - /** - * The date the Maintenance Window was created. - */ - CreatedDate?: DateTime; - /** - * The date the Maintenance Window was last modified. - */ - ModifiedDate?: DateTime; - } - export interface GetMaintenanceWindowTaskRequest { - /** - * The Maintenance Window ID that includes the task to retrieve. - */ - WindowId: MaintenanceWindowId; - /** - * The Maintenance Window task ID to retrieve. - */ - WindowTaskId: MaintenanceWindowTaskId; - } - export interface GetMaintenanceWindowTaskResult { - /** - * The retrieved Maintenance Window ID. - */ - WindowId?: MaintenanceWindowId; - /** - * The retrieved Maintenance Window task ID. - */ - WindowTaskId?: MaintenanceWindowTaskId; - /** - * The targets where the task should execute. - */ - Targets?: Targets; - /** - * The resource that the task used during execution. For RUN_COMMAND and AUTOMATION task types, the TaskArn is the Systems Manager Document name/ARN. For LAMBDA tasks, the value is the function name/ARN. For STEP_FUNCTION tasks, the value is the state machine ARN. - */ - TaskArn?: MaintenanceWindowTaskArn; - /** - * The IAM service role to assume during task execution. - */ - ServiceRoleArn?: ServiceRole; - /** - * The type of task to execute. - */ - TaskType?: MaintenanceWindowTaskType; - /** - * The parameters to pass to the task when it executes. - */ - TaskParameters?: MaintenanceWindowTaskParameters; - /** - * The parameters to pass to the task when it executes. - */ - TaskInvocationParameters?: MaintenanceWindowTaskInvocationParameters; - /** - * The priority of the task when it executes. The lower the number, the higher the priority. Tasks that have the same priority are scheduled in parallel. - */ - Priority?: MaintenanceWindowTaskPriority; - /** - * The maximum number of targets allowed to run this task in parallel. - */ - MaxConcurrency?: MaxConcurrency; - /** - * The maximum number of errors allowed before the task stops being scheduled. - */ - MaxErrors?: MaxErrors; - /** - * The location in Amazon S3 where the task results are logged. - */ - LoggingInfo?: LoggingInfo; - /** - * The retrieved task name. - */ - Name?: MaintenanceWindowName; - /** - * The retrieved task description. - */ - Description?: MaintenanceWindowDescription; - } - export interface GetParameterHistoryRequest { - /** - * The name of a parameter you want to query. - */ - Name: PSParameterName; - /** - * Return decrypted values for secure string parameters. This flag is ignored for String and StringList parameter types. - */ - WithDecryption?: Boolean; - /** - * The maximum number of items to return for this call. The call also returns a token that you can specify in a subsequent call to get the next set of results. - */ - MaxResults?: MaxResults; - /** - * The token for the next set of items to return. (You received this token from a previous call.) - */ - NextToken?: NextToken; - } - export interface GetParameterHistoryResult { - /** - * A list of parameters returned by the request. - */ - Parameters?: ParameterHistoryList; - /** - * The token to use when requesting the next set of items. If there are no additional items to return, the string is empty. - */ - NextToken?: NextToken; - } - export interface GetParameterRequest { - /** - * The name of the parameter you want to query. - */ - Name: PSParameterName; - /** - * Return decrypted values for secure string parameters. This flag is ignored for String and StringList parameter types. - */ - WithDecryption?: Boolean; - } - export interface GetParameterResult { - /** - * Information about a parameter. - */ - Parameter?: Parameter; - } - export type GetParametersByPathMaxResults = number; - export interface GetParametersByPathRequest { - /** - * The hierarchy for the parameter. Hierarchies start with a forward slash (/) and end with the parameter name. A hierarchy can have a maximum of five levels. Examples: /Environment/Test/DBString003 /Finance/Prod/IAD/OS/WinServ2016/license15 - */ - Path: PSParameterName; - /** - * Retrieve all parameters within a hierarchy. - */ - Recursive?: Boolean; - /** - * Filters to limit the request results. - */ - ParameterFilters?: ParameterStringFilterList; - /** - * Retrieve all parameters in a hierarchy with their value decrypted. - */ - WithDecryption?: Boolean; - /** - * The maximum number of items to return for this call. The call also returns a token that you can specify in a subsequent call to get the next set of results. - */ - MaxResults?: GetParametersByPathMaxResults; - /** - * A token to start the list. Use this token to get the next set of results. - */ - NextToken?: NextToken; - } - export interface GetParametersByPathResult { - /** - * A list of parameters found in the specified hierarchy. - */ - Parameters?: ParameterList; - /** - * The token for the next set of items to return. Use this token to get the next set of results. - */ - NextToken?: NextToken; - } - export interface GetParametersRequest { - /** - * Names of the parameters for which you want to query information. - */ - Names: ParameterNameList; - /** - * Return decrypted secure string value. Return decrypted values for secure string parameters. This flag is ignored for String and StringList parameter types. - */ - WithDecryption?: Boolean; - } - export interface GetParametersResult { - /** - * A list of details for a parameter. - */ - Parameters?: ParameterList; - /** - * A list of parameters that are not formatted correctly or do not run when executed. - */ - InvalidParameters?: ParameterNameList; - } - export interface GetPatchBaselineForPatchGroupRequest { - /** - * The name of the patch group whose patch baseline should be retrieved. - */ - PatchGroup: PatchGroup; - /** - * Returns he operating system rule specified for patch groups using the patch baseline. - */ - OperatingSystem?: OperatingSystem; - } - export interface GetPatchBaselineForPatchGroupResult { - /** - * The ID of the patch baseline that should be used for the patch group. - */ - BaselineId?: BaselineId; - /** - * The name of the patch group. - */ - PatchGroup?: PatchGroup; - /** - * The operating system rule specified for patch groups using the patch baseline. - */ - OperatingSystem?: OperatingSystem; - } - export interface GetPatchBaselineRequest { - /** - * The ID of the patch baseline to retrieve. - */ - BaselineId: BaselineId; - } - export interface GetPatchBaselineResult { - /** - * The ID of the retrieved patch baseline. - */ - BaselineId?: BaselineId; - /** - * The name of the patch baseline. - */ - Name?: BaselineName; - /** - * Returns the operating system specified for the patch baseline. - */ - OperatingSystem?: OperatingSystem; - /** - * A set of global filters used to exclude patches from the baseline. - */ - GlobalFilters?: PatchFilterGroup; - /** - * A set of rules used to include patches in the baseline. - */ - ApprovalRules?: PatchRuleGroup; - /** - * A list of explicitly approved patches for the baseline. - */ - ApprovedPatches?: PatchIdList; - /** - * Returns the specified compliance severity level for approved patches in the patch baseline. - */ - ApprovedPatchesComplianceLevel?: PatchComplianceLevel; - /** - * A list of explicitly rejected patches for the baseline. - */ - RejectedPatches?: PatchIdList; - /** - * Patch groups included in the patch baseline. - */ - PatchGroups?: PatchGroupList; - /** - * The date the patch baseline was created. - */ - CreatedDate?: DateTime; - /** - * The date the patch baseline was last modified. - */ - ModifiedDate?: DateTime; - /** - * A description of the patch baseline. - */ - Description?: BaselineDescription; - } - export type IPAddress = string; - export type IamRole = string; - export type IdempotencyToken = string; - export interface InstanceAggregatedAssociationOverview { - /** - * Detailed status information about the aggregated associations. - */ - DetailedStatus?: StatusName; - /** - * The number of associations for the instance(s). - */ - InstanceAssociationStatusAggregatedCount?: InstanceAssociationStatusAggregatedCount; - } - export interface InstanceAssociation { - /** - * The association ID. - */ - AssociationId?: AssociationId; - /** - * The instance ID. - */ - InstanceId?: InstanceId; - /** - * The content of the association document for the instance(s). - */ - Content?: DocumentContent; - /** - * Version information for the association on the instance. - */ - AssociationVersion?: AssociationVersion; - } - export type InstanceAssociationExecutionSummary = string; - export type InstanceAssociationList = InstanceAssociation[]; - export interface InstanceAssociationOutputLocation { - /** - * An Amazon S3 bucket where you want to store the results of this request. - */ - S3Location?: S3OutputLocation; - } - export interface InstanceAssociationOutputUrl { - /** - * The URL of Amazon S3 bucket where you want to store the results of this request. - */ - S3OutputUrl?: S3OutputUrl; - } - export type InstanceAssociationStatusAggregatedCount = {[key: string]: InstanceCount}; - export interface InstanceAssociationStatusInfo { - /** - * The association ID. - */ - AssociationId?: AssociationId; - /** - * The name of the association. - */ - Name?: DocumentName; - /** - * The association document verions. - */ - DocumentVersion?: DocumentVersion; - /** - * The version of the association applied to the instance. - */ - AssociationVersion?: AssociationVersion; - /** - * The instance ID where the association was created. - */ - InstanceId?: InstanceId; - /** - * The date the instance association executed. - */ - ExecutionDate?: DateTime; - /** - * Status information about the instance association. - */ - Status?: StatusName; - /** - * Detailed status information about the instance association. - */ - DetailedStatus?: StatusName; - /** - * Summary information about association execution. - */ - ExecutionSummary?: InstanceAssociationExecutionSummary; - /** - * An error code returned by the request to create the association. - */ - ErrorCode?: AgentErrorCode; - /** - * A URL for an Amazon S3 bucket where you want to store the results of this request. - */ - OutputUrl?: InstanceAssociationOutputUrl; - /** - * The name of the association applied to the instance. - */ - AssociationName?: AssociationName; - } - export type InstanceAssociationStatusInfos = InstanceAssociationStatusInfo[]; - export type InstanceCount = number; - export type InstanceId = string; - export type InstanceIdList = InstanceId[]; - export interface InstanceInformation { - /** - * The instance ID. - */ - InstanceId?: InstanceId; - /** - * Connection status of the SSM Agent. - */ - PingStatus?: PingStatus; - /** - * The date and time when agent last pinged Systems Manager service. - */ - LastPingDateTime?: DateTime; - /** - * The version of the SSM Agent running on your Linux instance. - */ - AgentVersion?: Version; - /** - * Indicates whether latest version of the SSM Agent is running on your instance. - */ - IsLatestVersion?: Boolean; - /** - * The operating system platform type. - */ - PlatformType?: PlatformType; - /** - * The name of the operating system platform running on your instance. - */ - PlatformName?: String; - /** - * The version of the OS platform running on your instance. - */ - PlatformVersion?: String; - /** - * The activation ID created by Systems Manager when the server or VM was registered. - */ - ActivationId?: ActivationId; - /** - * The Amazon Identity and Access Management (IAM) role assigned to EC2 instances or managed instances. - */ - IamRole?: IamRole; - /** - * The date the server or VM was registered with AWS as a managed instance. - */ - RegistrationDate?: DateTime; - /** - * The type of instance. Instances are either EC2 instances or managed instances. - */ - ResourceType?: ResourceType; - /** - * The name of the managed instance. - */ - Name?: String; - /** - * The IP address of the managed instance. - */ - IPAddress?: IPAddress; - /** - * The fully qualified host name of the managed instance. - */ - ComputerName?: ComputerName; - /** - * The status of the association. - */ - AssociationStatus?: StatusName; - /** - * The date the association was last executed. - */ - LastAssociationExecutionDate?: DateTime; - /** - * The last date the association was successfully run. - */ - LastSuccessfulAssociationExecutionDate?: DateTime; - /** - * Information about the association. - */ - AssociationOverview?: InstanceAggregatedAssociationOverview; - } - export interface InstanceInformationFilter { - /** - * The name of the filter. - */ - key: InstanceInformationFilterKey; - /** - * The filter values. - */ - valueSet: InstanceInformationFilterValueSet; - } - export type InstanceInformationFilterKey = "InstanceIds"|"AgentVersion"|"PingStatus"|"PlatformTypes"|"ActivationIds"|"IamRole"|"ResourceType"|"AssociationStatus"|string; - export type InstanceInformationFilterList = InstanceInformationFilter[]; - export type InstanceInformationFilterValue = string; - export type InstanceInformationFilterValueSet = InstanceInformationFilterValue[]; - export type InstanceInformationList = InstanceInformation[]; - export interface InstanceInformationStringFilter { - /** - * The filter key name to describe your instances. For example: "InstanceIds"|"AgentVersion"|"PingStatus"|"PlatformTypes"|"ActivationIds"|"IamRole"|"ResourceType"|"AssociationStatus"|"Tag Key" - */ - Key: InstanceInformationStringFilterKey; - /** - * The filter values. - */ - Values: InstanceInformationFilterValueSet; - } - export type InstanceInformationStringFilterKey = string; - export type InstanceInformationStringFilterList = InstanceInformationStringFilter[]; - export interface InstancePatchState { - /** - * The ID of the managed instance the high-level patch compliance information was collected for. - */ - InstanceId: InstanceId; - /** - * The name of the patch group the managed instance belongs to. - */ - PatchGroup: PatchGroup; - /** - * The ID of the patch baseline used to patch the instance. - */ - BaselineId: BaselineId; - /** - * The ID of the patch baseline snapshot used during the patching operation when this compliance data was collected. - */ - SnapshotId?: SnapshotId; - /** - * Placeholder information, this field will always be empty in the current release of the service. - */ - OwnerInformation?: OwnerInformation; - /** - * The number of patches from the patch baseline that are installed on the instance. - */ - InstalledCount?: PatchInstalledCount; - /** - * The number of patches not specified in the patch baseline that are installed on the instance. - */ - InstalledOtherCount?: PatchInstalledOtherCount; - /** - * The number of patches from the patch baseline that are applicable for the instance but aren't currently installed. - */ - MissingCount?: PatchMissingCount; - /** - * The number of patches from the patch baseline that were attempted to be installed during the last patching operation, but failed to install. - */ - FailedCount?: PatchFailedCount; - /** - * The number of patches from the patch baseline that aren't applicable for the instance and hence aren't installed on the instance. - */ - NotApplicableCount?: PatchNotApplicableCount; - /** - * The time the most recent patching operation was started on the instance. - */ - OperationStartTime: DateTime; - /** - * The time the most recent patching operation completed on the instance. - */ - OperationEndTime: DateTime; - /** - * The type of patching operation that was performed: SCAN (assess patch compliance state) or INSTALL (install missing patches). - */ - Operation: PatchOperationType; - } - export interface InstancePatchStateFilter { - /** - * The key for the filter. Supported values are FailedCount, InstalledCount, InstalledOtherCount, MissingCount and NotApplicableCount. - */ - Key: InstancePatchStateFilterKey; - /** - * The value for the filter, must be an integer greater than or equal to 0. - */ - Values: InstancePatchStateFilterValues; - /** - * The type of comparison that should be performed for the value: Equal, NotEqual, LessThan or GreaterThan. - */ - Type: InstancePatchStateOperatorType; - } - export type InstancePatchStateFilterKey = string; - export type InstancePatchStateFilterList = InstancePatchStateFilter[]; - export type InstancePatchStateFilterValue = string; - export type InstancePatchStateFilterValues = InstancePatchStateFilterValue[]; - export type InstancePatchStateList = InstancePatchState[]; - export type InstancePatchStateOperatorType = "Equal"|"NotEqual"|"LessThan"|"GreaterThan"|string; - export type InstancePatchStatesList = InstancePatchState[]; - export type InstanceTagName = string; - export type Integer = number; - export type InventoryAttributeDataType = "string"|"number"|string; - export interface InventoryFilter { - /** - * The name of the filter key. - */ - Key: InventoryFilterKey; - /** - * Inventory filter values. Example: inventory filter where instance IDs are specified as values Key=AWS:InstanceInformation.InstanceId,Values= i-a12b3c4d5e6g, i-1a2b3c4d5e6,Type=Equal - */ - Values: InventoryFilterValueList; - /** - * The type of filter. Valid values include the following: "Equal"|"NotEqual"|"BeginWith"|"LessThan"|"GreaterThan" - */ - Type?: InventoryQueryOperatorType; - } - export type InventoryFilterKey = string; - export type InventoryFilterList = InventoryFilter[]; - export type InventoryFilterValue = string; - export type InventoryFilterValueList = InventoryFilterValue[]; - export interface InventoryItem { - /** - * The name of the inventory type. Default inventory item type names start with AWS. Custom inventory type names will start with Custom. Default inventory item types include the following: AWS:AWSComponent, AWS:Application, AWS:InstanceInformation, AWS:Network, and AWS:WindowsUpdate. - */ - TypeName: InventoryItemTypeName; - /** - * The schema version for the inventory item. - */ - SchemaVersion: InventoryItemSchemaVersion; - /** - * The time the inventory information was collected. - */ - CaptureTime: InventoryItemCaptureTime; - /** - * MD5 hash of the inventory item type contents. The content hash is used to determine whether to update inventory information. The PutInventory API does not update the inventory item type contents if the MD5 hash has not changed since last update. - */ - ContentHash?: InventoryItemContentHash; - /** - * The inventory data of the inventory type. - */ - Content?: InventoryItemEntryList; - /** - * A map of associated properties for a specified inventory type. For example, with this attribute, you can specify the ExecutionId, ExecutionType, ComplianceType properties of the AWS:ComplianceItem type. - */ - Context?: InventoryItemContentContext; - } - export interface InventoryItemAttribute { - /** - * Name of the inventory item attribute. - */ - Name: InventoryItemAttributeName; - /** - * The data type of the inventory item attribute. - */ - DataType: InventoryAttributeDataType; - } - export type InventoryItemAttributeList = InventoryItemAttribute[]; - export type InventoryItemAttributeName = string; - export type InventoryItemCaptureTime = string; - export type InventoryItemContentContext = {[key: string]: AttributeValue}; - export type InventoryItemContentHash = string; - export type InventoryItemEntry = {[key: string]: AttributeValue}; - export type InventoryItemEntryList = InventoryItemEntry[]; - export type InventoryItemList = InventoryItem[]; - export interface InventoryItemSchema { - /** - * The name of the inventory type. Default inventory item type names start with AWS. Custom inventory type names will start with Custom. Default inventory item types include the following: AWS:AWSComponent, AWS:Application, AWS:InstanceInformation, AWS:Network, and AWS:WindowsUpdate. - */ - TypeName: InventoryItemTypeName; - /** - * The schema version for the inventory item. - */ - Version?: InventoryItemSchemaVersion; - /** - * The schema attributes for inventory. This contains data type and attribute name. - */ - Attributes: InventoryItemAttributeList; - } - export type InventoryItemSchemaResultList = InventoryItemSchema[]; - export type InventoryItemSchemaVersion = string; - export type InventoryItemTypeName = string; - export type InventoryItemTypeNameFilter = string; - export type InventoryQueryOperatorType = "Equal"|"NotEqual"|"BeginWith"|"LessThan"|"GreaterThan"|string; - export interface InventoryResultEntity { - /** - * ID of the inventory result entity. For example, for managed instance inventory the result will be the managed instance ID. For EC2 instance inventory, the result will be the instance ID. - */ - Id?: InventoryResultEntityId; - /** - * The data section in the inventory result entity json. - */ - Data?: InventoryResultItemMap; - } - export type InventoryResultEntityId = string; - export type InventoryResultEntityList = InventoryResultEntity[]; - export interface InventoryResultItem { - /** - * The name of the inventory result item type. - */ - TypeName: InventoryItemTypeName; - /** - * The schema version for the inventory result item/ - */ - SchemaVersion: InventoryItemSchemaVersion; - /** - * The time inventory item data was captured. - */ - CaptureTime?: InventoryItemCaptureTime; - /** - * MD5 hash of the inventory item type contents. The content hash is used to determine whether to update inventory information. The PutInventory API does not update the inventory item type contents if the MD5 hash has not changed since last update. - */ - ContentHash?: InventoryItemContentHash; - /** - * Contains all the inventory data of the item type. Results include attribute names and values. - */ - Content: InventoryItemEntryList; - } - export type InventoryResultItemKey = string; - export type InventoryResultItemMap = {[key: string]: InventoryResultItem}; - export type InvocationTraceOutput = string; - export type IsSubTypeSchema = boolean; - export type KeyList = TagKey[]; - export type LastResourceDataSyncStatus = "Successful"|"Failed"|"InProgress"|string; - export type LastResourceDataSyncTime = Date; - export type LastSuccessfulResourceDataSyncTime = Date; - export interface ListAssociationVersionsRequest { - /** - * The association ID for which you want to view all versions. - */ - AssociationId: AssociationId; - /** - * The maximum number of items to return for this call. The call also returns a token that you can specify in a subsequent call to get the next set of results. - */ - MaxResults?: MaxResults; - /** - * A token to start the list. Use this token to get the next set of results. - */ - NextToken?: NextToken; - } - export interface ListAssociationVersionsResult { - /** - * Information about all versions of the association for the specified association ID. - */ - AssociationVersions?: AssociationVersionList; - /** - * The token for the next set of items to return. Use this token to get the next set of results. - */ - NextToken?: NextToken; - } - export interface ListAssociationsRequest { - /** - * One or more filters. Use a filter to return a more specific list of results. - */ - AssociationFilterList?: AssociationFilterList; - /** - * The maximum number of items to return for this call. The call also returns a token that you can specify in a subsequent call to get the next set of results. - */ - MaxResults?: MaxResults; - /** - * The token for the next set of items to return. (You received this token from a previous call.) - */ - NextToken?: NextToken; - } - export interface ListAssociationsResult { - /** - * The associations. - */ - Associations?: AssociationList; - /** - * The token to use when requesting the next set of items. If there are no additional items to return, the string is empty. - */ - NextToken?: NextToken; - } - export interface ListCommandInvocationsRequest { - /** - * (Optional) The invocations for a specific command ID. - */ - CommandId?: CommandId; - /** - * (Optional) The command execution details for a specific instance ID. - */ - InstanceId?: InstanceId; - /** - * (Optional) The maximum number of items to return for this call. The call also returns a token that you can specify in a subsequent call to get the next set of results. - */ - MaxResults?: CommandMaxResults; - /** - * (Optional) The token for the next set of items to return. (You received this token from a previous call.) - */ - NextToken?: NextToken; - /** - * (Optional) One or more filters. Use a filter to return a more specific list of results. - */ - Filters?: CommandFilterList; - /** - * (Optional) If set this returns the response of the command executions and any command output. By default this is set to False. - */ - Details?: Boolean; - } - export interface ListCommandInvocationsResult { - /** - * (Optional) A list of all invocations. - */ - CommandInvocations?: CommandInvocationList; - /** - * (Optional) The token for the next set of items to return. (You received this token from a previous call.) - */ - NextToken?: NextToken; - } - export interface ListCommandsRequest { - /** - * (Optional) If provided, lists only the specified command. - */ - CommandId?: CommandId; - /** - * (Optional) Lists commands issued against this instance ID. - */ - InstanceId?: InstanceId; - /** - * (Optional) The maximum number of items to return for this call. The call also returns a token that you can specify in a subsequent call to get the next set of results. - */ - MaxResults?: CommandMaxResults; - /** - * (Optional) The token for the next set of items to return. (You received this token from a previous call.) - */ - NextToken?: NextToken; - /** - * (Optional) One or more filters. Use a filter to return a more specific list of results. - */ - Filters?: CommandFilterList; - } - export interface ListCommandsResult { - /** - * (Optional) The list of commands requested by the user. - */ - Commands?: CommandList; - /** - * (Optional) The token for the next set of items to return. (You received this token from a previous call.) - */ - NextToken?: NextToken; - } - export interface ListComplianceItemsRequest { - /** - * One or more compliance filters. Use a filter to return a more specific list of results. - */ - Filters?: ComplianceStringFilterList; - /** - * The ID for the resources from which to get compliance information. Currently, you can only specify one resource ID. - */ - ResourceIds?: ComplianceResourceIdList; - /** - * The type of resource from which to get compliance information. Currently, the only supported resource type is ManagedInstance. - */ - ResourceTypes?: ComplianceResourceTypeList; - /** - * A token to start the list. Use this token to get the next set of results. - */ - NextToken?: NextToken; - /** - * The maximum number of items to return for this call. The call also returns a token that you can specify in a subsequent call to get the next set of results. - */ - MaxResults?: MaxResults; - } - export interface ListComplianceItemsResult { - /** - * A list of compliance information for the specified resource ID. - */ - ComplianceItems?: ComplianceItemList; - /** - * The token for the next set of items to return. Use this token to get the next set of results. - */ - NextToken?: NextToken; - } - export interface ListComplianceSummariesRequest { - /** - * One or more compliance or inventory filters. Use a filter to return a more specific list of results. - */ - Filters?: ComplianceStringFilterList; - /** - * A token to start the list. Use this token to get the next set of results. - */ - NextToken?: NextToken; - /** - * The maximum number of items to return for this call. Currently, you can specify null or 50. The call also returns a token that you can specify in a subsequent call to get the next set of results. - */ - MaxResults?: MaxResults; - } - export interface ListComplianceSummariesResult { - /** - * A list of compliant and non-compliant summary counts based on compliance types. For example, this call returns State Manager associations, patches, or custom compliance types according to the filter criteria that you specified. - */ - ComplianceSummaryItems?: ComplianceSummaryItemList; - /** - * The token for the next set of items to return. Use this token to get the next set of results. - */ - NextToken?: NextToken; - } - export interface ListDocumentVersionsRequest { - /** - * The name of the document about which you want version information. - */ - Name: DocumentName; - /** - * The maximum number of items to return for this call. The call also returns a token that you can specify in a subsequent call to get the next set of results. - */ - MaxResults?: MaxResults; - /** - * The token for the next set of items to return. (You received this token from a previous call.) - */ - NextToken?: NextToken; - } - export interface ListDocumentVersionsResult { - /** - * The document versions. - */ - DocumentVersions?: DocumentVersionList; - /** - * The token to use when requesting the next set of items. If there are no additional items to return, the string is empty. - */ - NextToken?: NextToken; - } - export interface ListDocumentsRequest { - /** - * One or more filters. Use a filter to return a more specific list of results. - */ - DocumentFilterList?: DocumentFilterList; - /** - * One or more filters. Use a filter to return a more specific list of results. - */ - Filters?: DocumentKeyValuesFilterList; - /** - * The maximum number of items to return for this call. The call also returns a token that you can specify in a subsequent call to get the next set of results. - */ - MaxResults?: MaxResults; - /** - * The token for the next set of items to return. (You received this token from a previous call.) - */ - NextToken?: NextToken; - } - export interface ListDocumentsResult { - /** - * The names of the Systems Manager documents. - */ - DocumentIdentifiers?: DocumentIdentifierList; - /** - * The token to use when requesting the next set of items. If there are no additional items to return, the string is empty. - */ - NextToken?: NextToken; - } - export interface ListInventoryEntriesRequest { - /** - * The instance ID for which you want inventory information. - */ - InstanceId: InstanceId; - /** - * The type of inventory item for which you want information. - */ - TypeName: InventoryItemTypeName; - /** - * One or more filters. Use a filter to return a more specific list of results. - */ - Filters?: InventoryFilterList; - /** - * The token for the next set of items to return. (You received this token from a previous call.) - */ - NextToken?: NextToken; - /** - * The maximum number of items to return for this call. The call also returns a token that you can specify in a subsequent call to get the next set of results. - */ - MaxResults?: MaxResults; - } - export interface ListInventoryEntriesResult { - /** - * The type of inventory item returned by the request. - */ - TypeName?: InventoryItemTypeName; - /** - * The instance ID targeted by the request to query inventory information. - */ - InstanceId?: InstanceId; - /** - * The inventory schema version used by the instance(s). - */ - SchemaVersion?: InventoryItemSchemaVersion; - /** - * The time that inventory information was collected for the instance(s). - */ - CaptureTime?: InventoryItemCaptureTime; - /** - * A list of inventory items on the instance(s). - */ - Entries?: InventoryItemEntryList; - /** - * The token to use when requesting the next set of items. If there are no additional items to return, the string is empty. - */ - NextToken?: NextToken; - } - export interface ListResourceComplianceSummariesRequest { - /** - * One or more filters. Use a filter to return a more specific list of results. - */ - Filters?: ComplianceStringFilterList; - /** - * A token to start the list. Use this token to get the next set of results. - */ - NextToken?: NextToken; - /** - * The maximum number of items to return for this call. The call also returns a token that you can specify in a subsequent call to get the next set of results. - */ - MaxResults?: MaxResults; - } - export interface ListResourceComplianceSummariesResult { - /** - * A summary count for specified or targeted managed instances. Summary count includes information about compliant and non-compliant State Manager associations, patch status, or custom items according to the filter criteria that you specify. - */ - ResourceComplianceSummaryItems?: ResourceComplianceSummaryItemList; - /** - * The token for the next set of items to return. Use this token to get the next set of results. - */ - NextToken?: NextToken; - } - export interface ListResourceDataSyncRequest { - /** - * A token to start the list. Use this token to get the next set of results. - */ - NextToken?: NextToken; - /** - * The maximum number of items to return for this call. The call also returns a token that you can specify in a subsequent call to get the next set of results. - */ - MaxResults?: MaxResults; - } - export interface ListResourceDataSyncResult { - /** - * A list of your current Resource Data Sync configurations and their statuses. - */ - ResourceDataSyncItems?: ResourceDataSyncItemList; - /** - * The token for the next set of items to return. Use this token to get the next set of results. - */ - NextToken?: NextToken; - } - export interface ListTagsForResourceRequest { - /** - * Returns a list of tags for a specific resource type. - */ - ResourceType: ResourceTypeForTagging; - /** - * The resource ID for which you want to see a list of tags. - */ - ResourceId: ResourceId; - } - export interface ListTagsForResourceResult { - /** - * A list of tags. - */ - TagList?: TagList; - } - export interface LoggingInfo { - /** - * The name of an Amazon S3 bucket where execution logs are stored . - */ - S3BucketName: S3BucketName; - /** - * (Optional) The Amazon S3 bucket subfolder. - */ - S3KeyPrefix?: S3KeyPrefix; - /** - * The region where the Amazon S3 bucket is located. - */ - S3Region: S3Region; - } - export type MaintenanceWindowAllowUnassociatedTargets = boolean; - export interface MaintenanceWindowAutomationParameters { - /** - * The version of an Automation document to use during task execution. - */ - DocumentVersion?: DocumentVersion; - /** - * The parameters for the AUTOMATION task. - */ - Parameters?: AutomationParameterMap; - } - export type MaintenanceWindowCutoff = number; - export type MaintenanceWindowDescription = string; - export type MaintenanceWindowDurationHours = number; - export type MaintenanceWindowEnabled = boolean; - export interface MaintenanceWindowExecution { - /** - * The ID of the Maintenance Window. - */ - WindowId?: MaintenanceWindowId; - /** - * The ID of the Maintenance Window execution. - */ - WindowExecutionId?: MaintenanceWindowExecutionId; - /** - * The status of the execution. - */ - Status?: MaintenanceWindowExecutionStatus; - /** - * The details explaining the Status. Only available for certain status values. - */ - StatusDetails?: MaintenanceWindowExecutionStatusDetails; - /** - * The time the execution started. - */ - StartTime?: DateTime; - /** - * The time the execution finished. - */ - EndTime?: DateTime; - } - export type MaintenanceWindowExecutionId = string; - export type MaintenanceWindowExecutionList = MaintenanceWindowExecution[]; - export type MaintenanceWindowExecutionStatus = "PENDING"|"IN_PROGRESS"|"SUCCESS"|"FAILED"|"TIMED_OUT"|"CANCELLING"|"CANCELLED"|"SKIPPED_OVERLAPPING"|string; - export type MaintenanceWindowExecutionStatusDetails = string; - export type MaintenanceWindowExecutionTaskExecutionId = string; - export type MaintenanceWindowExecutionTaskId = string; - export type MaintenanceWindowExecutionTaskIdList = MaintenanceWindowExecutionTaskId[]; - export interface MaintenanceWindowExecutionTaskIdentity { - /** - * The ID of the Maintenance Window execution that ran the task. - */ - WindowExecutionId?: MaintenanceWindowExecutionId; - /** - * The ID of the specific task execution in the Maintenance Window execution. - */ - TaskExecutionId?: MaintenanceWindowExecutionTaskId; - /** - * The status of the task execution. - */ - Status?: MaintenanceWindowExecutionStatus; - /** - * The details explaining the status of the task execution. Only available for certain status values. - */ - StatusDetails?: MaintenanceWindowExecutionStatusDetails; - /** - * The time the task execution started. - */ - StartTime?: DateTime; - /** - * The time the task execution finished. - */ - EndTime?: DateTime; - /** - * The ARN of the executed task. - */ - TaskArn?: MaintenanceWindowTaskArn; - /** - * The type of executed task. - */ - TaskType?: MaintenanceWindowTaskType; - } - export type MaintenanceWindowExecutionTaskIdentityList = MaintenanceWindowExecutionTaskIdentity[]; - export type MaintenanceWindowExecutionTaskInvocationId = string; - export interface MaintenanceWindowExecutionTaskInvocationIdentity { - /** - * The ID of the Maintenance Window execution that ran the task. - */ - WindowExecutionId?: MaintenanceWindowExecutionId; - /** - * The ID of the specific task execution in the Maintenance Window execution. - */ - TaskExecutionId?: MaintenanceWindowExecutionTaskId; - /** - * The ID of the task invocation. - */ - InvocationId?: MaintenanceWindowExecutionTaskInvocationId; - /** - * The ID of the action performed in the service that actually handled the task invocation. If the task type is RUN_COMMAND, this value is the command ID. - */ - ExecutionId?: MaintenanceWindowExecutionTaskExecutionId; - /** - * The task type. - */ - TaskType?: MaintenanceWindowTaskType; - /** - * The parameters that were provided for the invocation when it was executed. - */ - Parameters?: MaintenanceWindowExecutionTaskInvocationParameters; - /** - * The status of the task invocation. - */ - Status?: MaintenanceWindowExecutionStatus; - /** - * The details explaining the status of the task invocation. Only available for certain Status values. - */ - StatusDetails?: MaintenanceWindowExecutionStatusDetails; - /** - * The time the invocation started. - */ - StartTime?: DateTime; - /** - * The time the invocation finished. - */ - EndTime?: DateTime; - /** - * User-provided value that was specified when the target was registered with the Maintenance Window. This was also included in any CloudWatch events raised during the task invocation. - */ - OwnerInformation?: OwnerInformation; - /** - * The ID of the target definition in this Maintenance Window the invocation was performed for. - */ - WindowTargetId?: MaintenanceWindowTaskTargetId; - } - export type MaintenanceWindowExecutionTaskInvocationIdentityList = MaintenanceWindowExecutionTaskInvocationIdentity[]; - export type MaintenanceWindowExecutionTaskInvocationParameters = string; - export interface MaintenanceWindowFilter { - /** - * The name of the filter. - */ - Key?: MaintenanceWindowFilterKey; - /** - * The filter values. - */ - Values?: MaintenanceWindowFilterValues; - } - export type MaintenanceWindowFilterKey = string; - export type MaintenanceWindowFilterList = MaintenanceWindowFilter[]; - export type MaintenanceWindowFilterValue = string; - export type MaintenanceWindowFilterValues = MaintenanceWindowFilterValue[]; - export type MaintenanceWindowId = string; - export interface MaintenanceWindowIdentity { - /** - * The ID of the Maintenance Window. - */ - WindowId?: MaintenanceWindowId; - /** - * The name of the Maintenance Window. - */ - Name?: MaintenanceWindowName; - /** - * A description of the Maintenance Window. - */ - Description?: MaintenanceWindowDescription; - /** - * Whether the Maintenance Window is enabled. - */ - Enabled?: MaintenanceWindowEnabled; - /** - * The duration of the Maintenance Window in hours. - */ - Duration?: MaintenanceWindowDurationHours; - /** - * The number of hours before the end of the Maintenance Window that Systems Manager stops scheduling new tasks for execution. - */ - Cutoff?: MaintenanceWindowCutoff; - } - export type MaintenanceWindowIdentityList = MaintenanceWindowIdentity[]; - export type MaintenanceWindowLambdaClientContext = string; - export interface MaintenanceWindowLambdaParameters { - /** - * Pass client-specific information to the Lambda function that you are invoking. You can then process the client information in your Lambda function as you choose through the context variable. - */ - ClientContext?: MaintenanceWindowLambdaClientContext; - /** - * (Optional) Specify a Lambda function version or alias name. If you specify a function version, the action uses the qualified function ARN to invoke a specific Lambda function. If you specify an alias name, the action uses the alias ARN to invoke the Lambda function version to which the alias points. - */ - Qualifier?: MaintenanceWindowLambdaQualifier; - /** - * JSON to provide to your Lambda function as input. - */ - Payload?: MaintenanceWindowLambdaPayload; - } - export type MaintenanceWindowLambdaPayload = Buffer|Uint8Array|Blob|string; - export type MaintenanceWindowLambdaQualifier = string; - export type MaintenanceWindowMaxResults = number; - export type MaintenanceWindowName = string; - export type MaintenanceWindowResourceType = "INSTANCE"|string; - export interface MaintenanceWindowRunCommandParameters { - /** - * Information about the command(s) to execute. - */ - Comment?: Comment; - /** - * The SHA-256 or SHA-1 hash created by the system when the document was created. SHA-1 hashes have been deprecated. - */ - DocumentHash?: DocumentHash; - /** - * SHA-256 or SHA-1. SHA-1 hashes have been deprecated. - */ - DocumentHashType?: DocumentHashType; - /** - * Configurations for sending notifications about command status changes on a per-instance basis. - */ - NotificationConfig?: NotificationConfig; - /** - * The name of the Amazon S3 bucket. - */ - OutputS3BucketName?: S3BucketName; - /** - * The Amazon S3 bucket subfolder. - */ - OutputS3KeyPrefix?: S3KeyPrefix; - /** - * The parameters for the RUN_COMMAND task execution. - */ - Parameters?: Parameters; - /** - * The IAM service role to assume during task execution. - */ - ServiceRoleArn?: ServiceRole; - /** - * If this time is reached and the command has not already started executing, it doesn not execute. - */ - TimeoutSeconds?: TimeoutSeconds; - } - export type MaintenanceWindowSchedule = string; - export type MaintenanceWindowStepFunctionsInput = string; - export type MaintenanceWindowStepFunctionsName = string; - export interface MaintenanceWindowStepFunctionsParameters { - /** - * The inputs for the STEP_FUNCTION task. - */ - Input?: MaintenanceWindowStepFunctionsInput; - /** - * The name of the STEP_FUNCTION task. - */ - Name?: MaintenanceWindowStepFunctionsName; - } - export interface MaintenanceWindowTarget { - /** - * The Maintenance Window ID where the target is registered. - */ - WindowId?: MaintenanceWindowId; - /** - * The ID of the target. - */ - WindowTargetId?: MaintenanceWindowTargetId; - /** - * The type of target. - */ - ResourceType?: MaintenanceWindowResourceType; - /** - * The targets (either instances or tags). Instances are specified using Key=instanceids,Values=<instanceid1>,<instanceid2>. Tags are specified using Key=<tag name>,Values=<tag value>. - */ - Targets?: Targets; - /** - * User-provided value that will be included in any CloudWatch events raised while running tasks for these targets in this Maintenance Window. - */ - OwnerInformation?: OwnerInformation; - /** - * The target name. - */ - Name?: MaintenanceWindowName; - /** - * A description of the target. - */ - Description?: MaintenanceWindowDescription; - } - export type MaintenanceWindowTargetId = string; - export type MaintenanceWindowTargetList = MaintenanceWindowTarget[]; - export interface MaintenanceWindowTask { - /** - * The Maintenance Window ID where the task is registered. - */ - WindowId?: MaintenanceWindowId; - /** - * The task ID. - */ - WindowTaskId?: MaintenanceWindowTaskId; - /** - * The resource that the task uses during execution. For RUN_COMMAND and AUTOMATION task types, TaskArn is the Systems Manager document name or ARN. For LAMBDA tasks, it's the function name or ARN. For STEP_FUNCTION tasks, it's the state machine ARN. - */ - TaskArn?: MaintenanceWindowTaskArn; - /** - * The type of task. The type can be one of the following: RUN_COMMAND, AUTOMATION, LAMBDA, or STEP_FUNCTION. - */ - Type?: MaintenanceWindowTaskType; - /** - * The targets (either instances or tags). Instances are specified using Key=instanceids,Values=<instanceid1>,<instanceid2>. Tags are specified using Key=<tag name>,Values=<tag value>. - */ - Targets?: Targets; - /** - * The parameters that should be passed to the task when it is executed. - */ - TaskParameters?: MaintenanceWindowTaskParameters; - /** - * The priority of the task in the Maintenance Window. The lower the number, the higher the priority. Tasks that have the same priority are scheduled in parallel. - */ - Priority?: MaintenanceWindowTaskPriority; - /** - * Information about an Amazon S3 bucket to write task-level logs to. - */ - LoggingInfo?: LoggingInfo; - /** - * The role that should be assumed when executing the task - */ - ServiceRoleArn?: ServiceRole; - /** - * The maximum number of targets this task can be run for in parallel. - */ - MaxConcurrency?: MaxConcurrency; - /** - * The maximum number of errors allowed before this task stops being scheduled. - */ - MaxErrors?: MaxErrors; - /** - * The task name. - */ - Name?: MaintenanceWindowName; - /** - * A description of the task. - */ - Description?: MaintenanceWindowDescription; - } - export type MaintenanceWindowTaskArn = string; - export type MaintenanceWindowTaskId = string; - export interface MaintenanceWindowTaskInvocationParameters { - /** - * The parameters for a RUN_COMMAND task type. - */ - RunCommand?: MaintenanceWindowRunCommandParameters; - /** - * The parameters for a AUTOMATION task type. - */ - Automation?: MaintenanceWindowAutomationParameters; - /** - * The parameters for a STEP_FUNCTION task type. - */ - StepFunctions?: MaintenanceWindowStepFunctionsParameters; - /** - * The parameters for a LAMBDA task type. - */ - Lambda?: MaintenanceWindowLambdaParameters; - } - export type MaintenanceWindowTaskList = MaintenanceWindowTask[]; - export type MaintenanceWindowTaskParameterName = string; - export type MaintenanceWindowTaskParameterValue = string; - export interface MaintenanceWindowTaskParameterValueExpression { - /** - * This field contains an array of 0 or more strings, each 1 to 255 characters in length. - */ - Values?: MaintenanceWindowTaskParameterValueList; - } - export type MaintenanceWindowTaskParameterValueList = MaintenanceWindowTaskParameterValue[]; - export type MaintenanceWindowTaskParameters = {[key: string]: MaintenanceWindowTaskParameterValueExpression}; - export type MaintenanceWindowTaskParametersList = MaintenanceWindowTaskParameters[]; - export type MaintenanceWindowTaskPriority = number; - export type MaintenanceWindowTaskTargetId = string; - export type MaintenanceWindowTaskType = "RUN_COMMAND"|"AUTOMATION"|"STEP_FUNCTIONS"|"LAMBDA"|string; - export type ManagedInstanceId = string; - export type MaxConcurrency = string; - export type MaxErrors = string; - export type MaxResults = number; - export type MaxResultsEC2Compatible = number; - export interface ModifyDocumentPermissionRequest { - /** - * The name of the document that you want to share. - */ - Name: DocumentName; - /** - * The permission type for the document. The permission type can be Share. - */ - PermissionType: DocumentPermissionType; - /** - * The AWS user accounts that should have access to the document. The account IDs can either be a group of account IDs or All. - */ - AccountIdsToAdd?: AccountIdList; - /** - * The AWS user accounts that should no longer have access to the document. The AWS user account can either be a group of account IDs or All. This action has a higher priority than AccountIdsToAdd. If you specify an account ID to add and the same ID to remove, the system removes access to the document. - */ - AccountIdsToRemove?: AccountIdList; - } - export interface ModifyDocumentPermissionResponse { - } - export type NextToken = string; - export interface NonCompliantSummary { - /** - * The total number of compliance items that are not compliant. - */ - NonCompliantCount?: ComplianceSummaryCount; - /** - * A summary of the non-compliance severity by compliance type - */ - SeveritySummary?: SeveritySummary; - } - export type NormalStringMap = {[key: string]: String}; - export type NotificationArn = string; - export interface NotificationConfig { - /** - * An Amazon Resource Name (ARN) for a Simple Notification Service (SNS) topic. Run Command pushes notifications about command status changes to this topic. - */ - NotificationArn?: NotificationArn; - /** - * The different events for which you can receive notifications. These events include the following: All (events), InProgress, Success, TimedOut, Cancelled, Failed. To learn more about these events, see Setting Up Events and Notifications in the Amazon EC2 Systems Manager User Guide. - */ - NotificationEvents?: NotificationEventList; - /** - * Command: Receive notification when the status of a command changes. Invocation: For commands sent to multiple instances, receive notification on a per-instance basis when the status of a command changes. - */ - NotificationType?: NotificationType; - } - export type NotificationEvent = "All"|"InProgress"|"Success"|"TimedOut"|"Cancelled"|"Failed"|string; - export type NotificationEventList = NotificationEvent[]; - export type NotificationType = "Command"|"Invocation"|string; - export type OperatingSystem = "WINDOWS"|"AMAZON_LINUX"|"UBUNTU"|"REDHAT_ENTERPRISE_LINUX"|string; - export type OwnerInformation = string; - export type PSParameterName = string; - export type PSParameterValue = string; - export interface Parameter { - /** - * The name of the parameter. - */ - Name?: PSParameterName; - /** - * The type of parameter. Valid values include the following: String, String list, Secure string. - */ - Type?: ParameterType; - /** - * The parameter value. - */ - Value?: PSParameterValue; - } - export type ParameterDescription = string; - export interface ParameterHistory { - /** - * The name of the parameter. - */ - Name?: PSParameterName; - /** - * The type of parameter used. - */ - Type?: ParameterType; - /** - * The ID of the query key used for this parameter. - */ - KeyId?: ParameterKeyId; - /** - * Date the parameter was last changed or updated. - */ - LastModifiedDate?: DateTime; - /** - * Amazon Resource Name (ARN) of the AWS user who last changed the parameter. - */ - LastModifiedUser?: String; - /** - * Information about the parameter. - */ - Description?: ParameterDescription; - /** - * The parameter value. - */ - Value?: PSParameterValue; - /** - * Parameter names can include the following letters and symbols. a-zA-Z0-9_.- - */ - AllowedPattern?: AllowedPattern; - } - export type ParameterHistoryList = ParameterHistory[]; - export type ParameterKeyId = string; - export type ParameterList = Parameter[]; - export interface ParameterMetadata { - /** - * The parameter name. - */ - Name?: PSParameterName; - /** - * The type of parameter. Valid parameter types include the following: String, String list, Secure string. - */ - Type?: ParameterType; - /** - * The ID of the query key used for this parameter. - */ - KeyId?: ParameterKeyId; - /** - * Date the parameter was last changed or updated. - */ - LastModifiedDate?: DateTime; - /** - * Amazon Resource Name (ARN) of the AWS user who last changed the parameter. - */ - LastModifiedUser?: String; - /** - * Description of the parameter actions. - */ - Description?: ParameterDescription; - /** - * A parameter name can include only the following letters and symbols. a-zA-Z0-9_.- - */ - AllowedPattern?: AllowedPattern; - } - export type ParameterMetadataList = ParameterMetadata[]; - export type ParameterName = string; - export type ParameterNameList = PSParameterName[]; - export interface ParameterStringFilter { - /** - * The name of the filter. - */ - Key: ParameterStringFilterKey; - /** - * Valid options are Equals and BeginsWith. For Path filter, valid options are Recursive and OneLevel. - */ - Option?: ParameterStringQueryOption; - /** - * The value you want to search for. - */ - Values?: ParameterStringFilterValueList; - } - export type ParameterStringFilterKey = string; - export type ParameterStringFilterList = ParameterStringFilter[]; - export type ParameterStringFilterValue = string; - export type ParameterStringFilterValueList = ParameterStringFilterValue[]; - export type ParameterStringQueryOption = string; - export type ParameterType = "String"|"StringList"|"SecureString"|string; - export type ParameterValue = string; - export type ParameterValueList = ParameterValue[]; - export type Parameters = {[key: string]: ParameterValueList}; - export interface ParametersFilter { - /** - * The name of the filter. - */ - Key: ParametersFilterKey; - /** - * The filter values. - */ - Values: ParametersFilterValueList; - } - export type ParametersFilterKey = "Name"|"Type"|"KeyId"|string; - export type ParametersFilterList = ParametersFilter[]; - export type ParametersFilterValue = string; - export type ParametersFilterValueList = ParametersFilterValue[]; - export interface Patch { - /** - * The ID of the patch (this is different than the Microsoft Knowledge Base ID). - */ - Id?: PatchId; - /** - * The date the patch was released. - */ - ReleaseDate?: DateTime; - /** - * The title of the patch. - */ - Title?: PatchTitle; - /** - * The description of the patch. - */ - Description?: PatchDescription; - /** - * The URL where more information can be obtained about the patch. - */ - ContentUrl?: PatchContentUrl; - /** - * The name of the vendor providing the patch. - */ - Vendor?: PatchVendor; - /** - * The product family the patch is applicable for (for example, Windows). - */ - ProductFamily?: PatchProductFamily; - /** - * The specific product the patch is applicable for (for example, WindowsServer2016). - */ - Product?: PatchProduct; - /** - * The classification of the patch (for example, SecurityUpdates, Updates, CriticalUpdates). - */ - Classification?: PatchClassification; - /** - * The severity of the patch (for example Critical, Important, Moderate). - */ - MsrcSeverity?: PatchMsrcSeverity; - /** - * The Microsoft Knowledge Base ID of the patch. - */ - KbNumber?: PatchKbNumber; - /** - * The ID of the MSRC bulletin the patch is related to. - */ - MsrcNumber?: PatchMsrcNumber; - /** - * The language of the patch if it's language-specific. - */ - Language?: PatchLanguage; - } - export interface PatchBaselineIdentity { - /** - * The ID of the patch baseline. - */ - BaselineId?: BaselineId; - /** - * The name of the patch baseline. - */ - BaselineName?: BaselineName; - /** - * Defines the operating system the patch baseline applies to. Supported operating systems include WINDOWS, AMAZON_LINUX, UBUNTU and REDHAT_ENTERPRISE_LINUX. The Default value is WINDOWS. - */ - OperatingSystem?: OperatingSystem; - /** - * The description of the patch baseline. - */ - BaselineDescription?: BaselineDescription; - /** - * Whether this is the default baseline. Note that Systems Manager supports creating multiple default patch baselines. For example, you can create a default patch baseline for each operating system. - */ - DefaultBaseline?: DefaultBaseline; - } - export type PatchBaselineIdentityList = PatchBaselineIdentity[]; - export type PatchBaselineMaxResults = number; - export type PatchClassification = string; - export interface PatchComplianceData { - /** - * The title of the patch. - */ - Title: PatchTitle; - /** - * The operating system-specific ID of the patch. - */ - KBId: PatchKbNumber; - /** - * The classification of the patch (for example, SecurityUpdates, Updates, CriticalUpdates). - */ - Classification: PatchClassification; - /** - * The severity of the patch (for example, Critical, Important, Moderate). - */ - Severity: PatchSeverity; - /** - * The state of the patch on the instance (INSTALLED, INSTALLED_OTHER, MISSING, NOT_APPLICABLE or FAILED). - */ - State: PatchComplianceDataState; - /** - * The date/time the patch was installed on the instance. Note that not all operating systems provide this level of information. - */ - InstalledTime: DateTime; - } - export type PatchComplianceDataList = PatchComplianceData[]; - export type PatchComplianceDataState = "INSTALLED"|"INSTALLED_OTHER"|"MISSING"|"NOT_APPLICABLE"|"FAILED"|string; - export type PatchComplianceLevel = "CRITICAL"|"HIGH"|"MEDIUM"|"LOW"|"INFORMATIONAL"|"UNSPECIFIED"|string; - export type PatchComplianceMaxResults = number; - export type PatchContentUrl = string; - export type PatchDeploymentStatus = "APPROVED"|"PENDING_APPROVAL"|"EXPLICIT_APPROVED"|"EXPLICIT_REJECTED"|string; - export type PatchDescription = string; - export type PatchFailedCount = number; - export interface PatchFilter { - /** - * The key for the filter (PRODUCT, CLASSIFICATION, MSRC_SEVERITY, PATCH_ID) - */ - Key: PatchFilterKey; - /** - * The value for the filter key. - */ - Values: PatchFilterValueList; - } - export interface PatchFilterGroup { - /** - * The set of patch filters that make up the group. - */ - PatchFilters: PatchFilterList; - } - export type PatchFilterKey = "PRODUCT"|"CLASSIFICATION"|"MSRC_SEVERITY"|"PATCH_ID"|"SECTION"|"PRIORITY"|"SEVERITY"|string; - export type PatchFilterList = PatchFilter[]; - export type PatchFilterValue = string; - export type PatchFilterValueList = PatchFilterValue[]; - export type PatchGroup = string; - export type PatchGroupList = PatchGroup[]; - export interface PatchGroupPatchBaselineMapping { - /** - * The name of the patch group registered with the patch baseline. - */ - PatchGroup?: PatchGroup; - /** - * The patch baseline the patch group is registered with. - */ - BaselineIdentity?: PatchBaselineIdentity; - } - export type PatchGroupPatchBaselineMappingList = PatchGroupPatchBaselineMapping[]; - export type PatchId = string; - export type PatchIdList = PatchId[]; - export type PatchInstalledCount = number; - export type PatchInstalledOtherCount = number; - export type PatchKbNumber = string; - export type PatchLanguage = string; - export type PatchList = Patch[]; - export type PatchMissingCount = number; - export type PatchMsrcNumber = string; - export type PatchMsrcSeverity = string; - export type PatchNotApplicableCount = number; - export type PatchOperationType = "Scan"|"Install"|string; - export interface PatchOrchestratorFilter { - /** - * The key for the filter. - */ - Key?: PatchOrchestratorFilterKey; - /** - * The value for the filter. - */ - Values?: PatchOrchestratorFilterValues; - } - export type PatchOrchestratorFilterKey = string; - export type PatchOrchestratorFilterList = PatchOrchestratorFilter[]; - export type PatchOrchestratorFilterValue = string; - export type PatchOrchestratorFilterValues = PatchOrchestratorFilterValue[]; - export type PatchProduct = string; - export type PatchProductFamily = string; - export interface PatchRule { - /** - * The patch filter group that defines the criteria for the rule. - */ - PatchFilterGroup: PatchFilterGroup; - /** - * A compliance severity level for all approved patches in a patch baseline. Valid compliance severity levels include the following: Unspecified, Critical, High, Medium, Low, and Informational. - */ - ComplianceLevel?: PatchComplianceLevel; - /** - * The number of days after the release date of each patch matched by the rule the patch is marked as approved in the patch baseline. - */ - ApproveAfterDays: ApproveAfterDays; - } - export interface PatchRuleGroup { - /** - * The rules that make up the rule group. - */ - PatchRules: PatchRuleList; - } - export type PatchRuleList = PatchRule[]; - export type PatchSeverity = string; - export interface PatchStatus { - /** - * The approval status of a patch (APPROVED, PENDING_APPROVAL, EXPLICIT_APPROVED, EXPLICIT_REJECTED). - */ - DeploymentStatus?: PatchDeploymentStatus; - /** - * The compliance severity level for a patch. - */ - ComplianceLevel?: PatchComplianceLevel; - /** - * The date the patch was approved (or will be approved if the status is PENDING_APPROVAL). - */ - ApprovalDate?: DateTime; - } - export type PatchTitle = string; - export type PatchVendor = string; - export type PingStatus = "Online"|"ConnectionLost"|"Inactive"|string; - export type PlatformType = "Windows"|"Linux"|string; - export type PlatformTypeList = PlatformType[]; - export type Product = string; - export interface PutComplianceItemsRequest { - /** - * Specify an ID for this resource. For a managed instance, this is the instance ID. - */ - ResourceId: ComplianceResourceId; - /** - * Specify the type of resource. ManagedInstance is currently the only supported resource type. - */ - ResourceType: ComplianceResourceType; - /** - * Specify the compliance type. For example, specify Association (for a State Manager association), Patch, or Custom:string. - */ - ComplianceType: ComplianceTypeName; - /** - * A summary of the call execution that includes an execution ID, the type of execution (for example, Command), and the date/time of the execution using a datetime object that is saved in the following format: yyyy-MM-dd'T'HH:mm:ss'Z'. - */ - ExecutionSummary: ComplianceExecutionSummary; - /** - * Information about the compliance as defined by the resource type. For example, for a patch compliance type, Items includes information about the PatchSeverity, Classification, etc. - */ - Items: ComplianceItemEntryList; - /** - * MD5 or SHA-256 content hash. The content hash is used to determine if existing information should be overwritten or ignored. If the content hashes match, the request to put compliance information is ignored. - */ - ItemContentHash?: ComplianceItemContentHash; - } - export interface PutComplianceItemsResult { - } - export interface PutInventoryRequest { - /** - * One or more instance IDs where you want to add or update inventory items. - */ - InstanceId: InstanceId; - /** - * The inventory items that you want to add or update on instances. - */ - Items: InventoryItemList; - } - export interface PutInventoryResult { - } - export interface PutParameterRequest { - /** - * The name of the parameter that you want to add to the system. - */ - Name: PSParameterName; - /** - * Information about the parameter that you want to add to the system - */ - Description?: ParameterDescription; - /** - * The parameter value that you want to add to the system. - */ - Value: PSParameterValue; - /** - * The type of parameter that you want to add to the system. - */ - Type: ParameterType; - /** - * The KMS Key ID that you want to use to encrypt a parameter when you choose the SecureString data type. If you don't specify a key ID, the system uses the default key associated with your AWS account. - */ - KeyId?: ParameterKeyId; - /** - * Overwrite an existing parameter. If not specified, will default to "false". - */ - Overwrite?: Boolean; - /** - * A regular expression used to validate the parameter value. For example, for String types with values restricted to numbers, you can specify the following: AllowedPattern=^\d+$ - */ - AllowedPattern?: AllowedPattern; - } - export interface PutParameterResult { - } - export interface RegisterDefaultPatchBaselineRequest { - /** - * The ID of the patch baseline that should be the default patch baseline. - */ - BaselineId: BaselineId; - } - export interface RegisterDefaultPatchBaselineResult { - /** - * The ID of the default patch baseline. - */ - BaselineId?: BaselineId; - } - export interface RegisterPatchBaselineForPatchGroupRequest { - /** - * The ID of the patch baseline to register the patch group with. - */ - BaselineId: BaselineId; - /** - * The name of the patch group that should be registered with the patch baseline. - */ - PatchGroup: PatchGroup; - } - export interface RegisterPatchBaselineForPatchGroupResult { - /** - * The ID of the patch baseline the patch group was registered with. - */ - BaselineId?: BaselineId; - /** - * The name of the patch group registered with the patch baseline. - */ - PatchGroup?: PatchGroup; - } - export interface RegisterTargetWithMaintenanceWindowRequest { - /** - * The ID of the Maintenance Window the target should be registered with. - */ - WindowId: MaintenanceWindowId; - /** - * The type of target being registered with the Maintenance Window. - */ - ResourceType: MaintenanceWindowResourceType; - /** - * The targets (either instances or tags). Instances are specified using Key=instanceids,Values=<instanceid1>,<instanceid2>. Tags are specified using Key=<tag name>,Values=<tag value>. - */ - Targets: Targets; - /** - * User-provided value that will be included in any CloudWatch events raised while running tasks for these targets in this Maintenance Window. - */ - OwnerInformation?: OwnerInformation; - /** - * An optional name for the target. - */ - Name?: MaintenanceWindowName; - /** - * An optional description for the target. - */ - Description?: MaintenanceWindowDescription; - /** - * User-provided idempotency token. - */ - ClientToken?: ClientToken; - } - export interface RegisterTargetWithMaintenanceWindowResult { - /** - * The ID of the target definition in this Maintenance Window. - */ - WindowTargetId?: MaintenanceWindowTargetId; - } - export interface RegisterTaskWithMaintenanceWindowRequest { - /** - * The id of the Maintenance Window the task should be added to. - */ - WindowId: MaintenanceWindowId; - /** - * The targets (either instances or tags). Instances are specified using Key=instanceids,Values=<instanceid1>,<instanceid2>. Tags are specified using Key=<tag name>,Values=<tag value>. - */ - Targets: Targets; - /** - * The ARN of the task to execute - */ - TaskArn: MaintenanceWindowTaskArn; - /** - * The role that should be assumed when executing the task. - */ - ServiceRoleArn: ServiceRole; - /** - * The type of task being registered. - */ - TaskType: MaintenanceWindowTaskType; - /** - * The parameters that should be passed to the task when it is executed. - */ - TaskParameters?: MaintenanceWindowTaskParameters; - /** - * The parameters that the task should use during execution. Populate only the fields that match the task type. All other fields should be empty. - */ - TaskInvocationParameters?: MaintenanceWindowTaskInvocationParameters; - /** - * The priority of the task in the Maintenance Window, the lower the number the higher the priority. Tasks in a Maintenance Window are scheduled in priority order with tasks that have the same priority scheduled in parallel. - */ - Priority?: MaintenanceWindowTaskPriority; - /** - * The maximum number of targets this task can be run for in parallel. - */ - MaxConcurrency: MaxConcurrency; - /** - * The maximum number of errors allowed before this task stops being scheduled. - */ - MaxErrors: MaxErrors; - /** - * A structure containing information about an Amazon S3 bucket to write instance-level logs to. - */ - LoggingInfo?: LoggingInfo; - /** - * An optional name for the task. - */ - Name?: MaintenanceWindowName; - /** - * An optional description for the task. - */ - Description?: MaintenanceWindowDescription; - /** - * User-provided idempotency token. - */ - ClientToken?: ClientToken; - } - export interface RegisterTaskWithMaintenanceWindowResult { - /** - * The id of the task in the Maintenance Window. - */ - WindowTaskId?: MaintenanceWindowTaskId; - } - export type RegistrationLimit = number; - export type RegistrationsCount = number; - export interface RemoveTagsFromResourceRequest { - /** - * The type of resource of which you want to remove a tag. - */ - ResourceType: ResourceTypeForTagging; - /** - * The resource ID for which you want to remove tags. - */ - ResourceId: ResourceId; - /** - * Tag keys that you want to remove from the specified resource. - */ - TagKeys: KeyList; - } - export interface RemoveTagsFromResourceResult { - } - export interface ResourceComplianceSummaryItem { - /** - * The compliance type. - */ - ComplianceType?: ComplianceTypeName; - /** - * The resource type. - */ - ResourceType?: ComplianceResourceType; - /** - * The resource ID. - */ - ResourceId?: ComplianceResourceId; - /** - * The compliance status for the resource. - */ - Status?: ComplianceStatus; - /** - * The highest severity item found for the resource. The resource is compliant for this item. - */ - OverallSeverity?: ComplianceSeverity; - /** - * Information about the execution. - */ - ExecutionSummary?: ComplianceExecutionSummary; - /** - * A list of items that are compliant for the resource. - */ - CompliantSummary?: CompliantSummary; - /** - * A list of items that aren't compliant for the resource. - */ - NonCompliantSummary?: NonCompliantSummary; - } - export type ResourceComplianceSummaryItemList = ResourceComplianceSummaryItem[]; - export type ResourceDataSyncAWSKMSKeyARN = string; - export type ResourceDataSyncCreatedTime = Date; - export interface ResourceDataSyncItem { - /** - * The name of the Resource Data Sync. - */ - SyncName?: ResourceDataSyncName; - /** - * Configuration information for the target Amazon S3 bucket. - */ - S3Destination?: ResourceDataSyncS3Destination; - /** - * The last time the configuration attempted to sync (UTC). - */ - LastSyncTime?: LastResourceDataSyncTime; - /** - * The last time the sync operations returned a status of SUCCESSFUL (UTC). - */ - LastSuccessfulSyncTime?: LastSuccessfulResourceDataSyncTime; - /** - * The status reported by the last sync. - */ - LastStatus?: LastResourceDataSyncStatus; - /** - * The date and time the configuration was created (UTC). - */ - SyncCreatedTime?: ResourceDataSyncCreatedTime; - } - export type ResourceDataSyncItemList = ResourceDataSyncItem[]; - export type ResourceDataSyncName = string; - export type ResourceDataSyncS3BucketName = string; - export interface ResourceDataSyncS3Destination { - /** - * The name of the Amazon S3 bucket where the aggregated data is stored. - */ - BucketName: ResourceDataSyncS3BucketName; - /** - * An Amazon S3 prefix for the bucket. - */ - Prefix?: ResourceDataSyncS3Prefix; - /** - * A supported sync format. The following format is currently supported: JsonSerDe - */ - SyncFormat: ResourceDataSyncS3Format; - /** - * The AWS Region with the Amazon S3 bucket targeted by the Resource Data Sync. - */ - Region: ResourceDataSyncS3Region; - /** - * The ARN of an encryption key for a destination in Amazon S3. Must belong to the same region as the destination Amazon S3 bucket. - */ - AWSKMSKeyARN?: ResourceDataSyncAWSKMSKeyARN; - } - export type ResourceDataSyncS3Format = "JsonSerDe"|string; - export type ResourceDataSyncS3Prefix = string; - export type ResourceDataSyncS3Region = string; - export type ResourceId = string; - export type ResourceType = "ManagedInstance"|"Document"|"EC2Instance"|string; - export type ResourceTypeForTagging = "Document"|"ManagedInstance"|"MaintenanceWindow"|"Parameter"|"PatchBaseline"|string; - export type ResponseCode = number; - export interface ResultAttribute { - /** - * Name of the inventory item type. Valid value: AWS:InstanceInformation. Default Value: AWS:InstanceInformation. - */ - TypeName: InventoryItemTypeName; - } - export type ResultAttributeList = ResultAttribute[]; - export type S3BucketName = string; - export type S3KeyPrefix = string; - export interface S3OutputLocation { - /** - * (Deprecated) You can no longer specify this parameter. The system ignores it. Instead, Systems Manager automatically determines the Amazon S3 bucket region. - */ - OutputS3Region?: S3Region; - /** - * The name of the Amazon S3 bucket. - */ - OutputS3BucketName?: S3BucketName; - /** - * The Amazon S3 bucket subfolder. - */ - OutputS3KeyPrefix?: S3KeyPrefix; - } - export interface S3OutputUrl { - /** - * A URL for an Amazon S3 bucket where you want to store the results of this request. - */ - OutputUrl?: Url; - } - export type S3Region = string; - export type ScheduleExpression = string; - export interface SendAutomationSignalRequest { - /** - * The unique identifier for an existing Automation execution that you want to send the signal to. - */ - AutomationExecutionId: AutomationExecutionId; - /** - * The type of signal. Valid signal types include the following: Approve and Reject - */ - SignalType: SignalType; - /** - * The data sent with the signal. The data schema depends on the type of signal used in the request. - */ - Payload?: AutomationParameterMap; - } - export interface SendAutomationSignalResult { - } - export interface SendCommandRequest { - /** - * The instance IDs where the command should execute. You can specify a maximum of 50 IDs. If you prefer not to list individual instance IDs, you can instead send commands to a fleet of instances using the Targets parameter, which accepts EC2 tags. For more information about how to use Targets, see Sending Commands to a Fleet. - */ - InstanceIds?: InstanceIdList; - /** - * (Optional) An array of search criteria that targets instances using a Key,Value combination that you specify. Targets is required if you don't provide one or more instance IDs in the call. For more information about how to use Targets, see Sending Commands to a Fleet. - */ - Targets?: Targets; - /** - * Required. The name of the Systems Manager document to execute. This can be a public document or a custom document. - */ - DocumentName: DocumentARN; - /** - * The Sha256 or Sha1 hash created by the system when the document was created. Sha1 hashes have been deprecated. - */ - DocumentHash?: DocumentHash; - /** - * Sha256 or Sha1. Sha1 hashes have been deprecated. - */ - DocumentHashType?: DocumentHashType; - /** - * If this time is reached and the command has not already started executing, it will not execute. - */ - TimeoutSeconds?: TimeoutSeconds; - /** - * User-specified information about the command, such as a brief description of what the command should do. - */ - Comment?: Comment; - /** - * The required and optional parameters specified in the document being executed. - */ - Parameters?: Parameters; - /** - * (Deprecated) You can no longer specify this parameter. The system ignores it. Instead, Systems Manager automatically determines the Amazon S3 bucket region. - */ - OutputS3Region?: S3Region; - /** - * The name of the S3 bucket where command execution responses should be stored. - */ - OutputS3BucketName?: S3BucketName; - /** - * The directory structure within the S3 bucket where the responses should be stored. - */ - OutputS3KeyPrefix?: S3KeyPrefix; - /** - * (Optional) The maximum number of instances that are allowed to execute the command at the same time. You can specify a number such as 10 or a percentage such as 10%. The default value is 50. For more information about how to use MaxConcurrency, see Using Concurrency Controls. - */ - MaxConcurrency?: MaxConcurrency; - /** - * The maximum number of errors allowed without the command failing. When the command fails one more time beyond the value of MaxErrors, the systems stops sending the command to additional targets. You can specify a number like 10 or a percentage like 10%. The default value is 50. For more information about how to use MaxErrors, see Using Error Controls. - */ - MaxErrors?: MaxErrors; - /** - * The IAM role that Systems Manager uses to send notifications. - */ - ServiceRoleArn?: ServiceRole; - /** - * Configurations for sending notifications. - */ - NotificationConfig?: NotificationConfig; - } - export interface SendCommandResult { - /** - * The request as it was received by Systems Manager. Also provides the command ID which can be used future references to this request. - */ - Command?: Command; - } - export type ServiceRole = string; - export interface SeveritySummary { - /** - * The total number of resources or compliance items that have a severity level of critical. Critical severity is determined by the organization that published the compliance items. - */ - CriticalCount?: ComplianceSummaryCount; - /** - * The total number of resources or compliance items that have a severity level of high. High severity is determined by the organization that published the compliance items. - */ - HighCount?: ComplianceSummaryCount; - /** - * The total number of resources or compliance items that have a severity level of medium. Medium severity is determined by the organization that published the compliance items. - */ - MediumCount?: ComplianceSummaryCount; - /** - * The total number of resources or compliance items that have a severity level of low. Low severity is determined by the organization that published the compliance items. - */ - LowCount?: ComplianceSummaryCount; - /** - * The total number of resources or compliance items that have a severity level of informational. Informational severity is determined by the organization that published the compliance items. - */ - InformationalCount?: ComplianceSummaryCount; - /** - * The total number of resources or compliance items that have a severity level of unspecified. Unspecified severity is determined by the organization that published the compliance items. - */ - UnspecifiedCount?: ComplianceSummaryCount; - } - export type SignalType = "Approve"|"Reject"|string; - export type SnapshotDownloadUrl = string; - export type SnapshotId = string; - export type StandardErrorContent = string; - export type StandardOutputContent = string; - export interface StartAutomationExecutionRequest { - /** - * The name of the Automation document to use for this execution. - */ - DocumentName: DocumentARN; - /** - * The version of the Automation document to use for this execution. - */ - DocumentVersion?: DocumentVersion; - /** - * A key-value map of execution parameters, which match the declared parameters in the Automation document. - */ - Parameters?: AutomationParameterMap; - /** - * User-provided idempotency token. The token must be unique, is case insensitive, enforces the UUID format, and can't be reused. - */ - ClientToken?: IdempotencyToken; - } - export interface StartAutomationExecutionResult { - /** - * The unique ID of a newly scheduled automation execution. - */ - AutomationExecutionId?: AutomationExecutionId; - } - export type StatusAdditionalInfo = string; - export type StatusDetails = string; - export type StatusMessage = string; - export type StatusName = string; - export interface StepExecution { - /** - * The name of this execution step. - */ - StepName?: String; - /** - * The action this step performs. The action determines the behavior of the step. - */ - Action?: AutomationActionName; - /** - * If a step has begun execution, this contains the time the step started. If the step is in Pending status, this field is not populated. - */ - ExecutionStartTime?: DateTime; - /** - * If a step has finished execution, this contains the time the execution ended. If the step has not yet concluded, this field is not populated. - */ - ExecutionEndTime?: DateTime; - /** - * The execution status for this step. Valid values include: Pending, InProgress, Success, Cancelled, Failed, and TimedOut. - */ - StepStatus?: AutomationExecutionStatus; - /** - * The response code returned by the execution of the step. - */ - ResponseCode?: String; - /** - * Fully-resolved values passed into the step before execution. - */ - Inputs?: NormalStringMap; - /** - * Returned values from the execution of the step. - */ - Outputs?: AutomationParameterMap; - /** - * A message associated with the response code for an execution. - */ - Response?: String; - /** - * If a step failed, this message explains why the execution failed. - */ - FailureMessage?: String; - /** - * Information about the Automation failure. - */ - FailureDetails?: FailureDetails; - } - export type StepExecutionList = StepExecution[]; - export interface StopAutomationExecutionRequest { - /** - * The execution ID of the Automation to stop. - */ - AutomationExecutionId: AutomationExecutionId; - } - export interface StopAutomationExecutionResult { - } - export type String = string; - export type StringDateTime = string; - export type StringList = String[]; - export interface Tag { - /** - * The name of the tag. - */ - Key: TagKey; - /** - * The value of the tag. - */ - Value: TagValue; - } - export type TagKey = string; - export type TagList = Tag[]; - export type TagValue = string; - export interface Target { - /** - * User-defined criteria for sending commands that target instances that meet the criteria. Key can be tag:<Amazon EC2 tag> or InstanceIds. For more information about how to send commands that target instances using Key,Value parameters, see Executing a Command Using Systems Manager Run Command. - */ - Key?: TargetKey; - /** - * User-defined criteria that maps to Key. For example, if you specified tag:ServerRole, you could specify value:WebServer to execute a command on instances that include Amazon EC2 tags of ServerRole,WebServer. For more information about how to send commands that target instances using Key,Value parameters, see Executing a Command Using Systems Manager Run Command. - */ - Values?: TargetValues; - } - export type TargetCount = number; - export type TargetKey = string; - export type TargetValue = string; - export type TargetValues = TargetValue[]; - export type Targets = Target[]; - export type TimeoutSeconds = number; - export interface UpdateAssociationRequest { - /** - * The ID of the association you want to update. - */ - AssociationId: AssociationId; - /** - * The parameters you want to update for the association. If you create a parameter using Parameter Store, you can reference the parameter using {{ssm:parameter-name}} - */ - Parameters?: Parameters; - /** - * The document version you want update for the association. - */ - DocumentVersion?: DocumentVersion; - /** - * The cron expression used to schedule the association that you want to update. - */ - ScheduleExpression?: ScheduleExpression; - /** - * An Amazon S3 bucket where you want to store the results of this request. - */ - OutputLocation?: InstanceAssociationOutputLocation; - /** - * The name of the association document. - */ - Name?: DocumentName; - /** - * The targets of the association. - */ - Targets?: Targets; - /** - * The name of the association that you want to update. - */ - AssociationName?: AssociationName; - /** - * This parameter is provided for concurrency control purposes. You must specify the latest association version in the service. If you want to ensure that this request succeeds, either specify $LATEST, or omit this parameter. - */ - AssociationVersion?: AssociationVersion; - } - export interface UpdateAssociationResult { - /** - * The description of the association that was updated. - */ - AssociationDescription?: AssociationDescription; - } - export interface UpdateAssociationStatusRequest { - /** - * The name of the Systems Manager document. - */ - Name: DocumentName; - /** - * The ID of the instance. - */ - InstanceId: InstanceId; - /** - * The association status. - */ - AssociationStatus: AssociationStatus; - } - export interface UpdateAssociationStatusResult { - /** - * Information about the association. - */ - AssociationDescription?: AssociationDescription; - } - export interface UpdateDocumentDefaultVersionRequest { - /** - * The name of a custom document that you want to set as the default version. - */ - Name: DocumentName; - /** - * The version of a custom document that you want to set as the default version. - */ - DocumentVersion: DocumentVersionNumber; - } - export interface UpdateDocumentDefaultVersionResult { - /** - * The description of a custom document that you want to set as the default version. - */ - Description?: DocumentDefaultVersionDescription; - } - export interface UpdateDocumentRequest { - /** - * The content in a document that you want to update. - */ - Content: DocumentContent; - /** - * The name of the document that you want to update. - */ - Name: DocumentName; - /** - * The version of the document that you want to update. - */ - DocumentVersion?: DocumentVersion; - } - export interface UpdateDocumentResult { - /** - * A description of the document that was updated. - */ - DocumentDescription?: DocumentDescription; - } - export interface UpdateMaintenanceWindowRequest { - /** - * The ID of the Maintenance Window to update. - */ - WindowId: MaintenanceWindowId; - /** - * The name of the Maintenance Window. - */ - Name?: MaintenanceWindowName; - /** - * An optional description for the update request. - */ - Description?: MaintenanceWindowDescription; - /** - * The schedule of the Maintenance Window in the form of a cron or rate expression. - */ - Schedule?: MaintenanceWindowSchedule; - /** - * The duration of the Maintenance Window in hours. - */ - Duration?: MaintenanceWindowDurationHours; - /** - * The number of hours before the end of the Maintenance Window that Systems Manager stops scheduling new tasks for execution. - */ - Cutoff?: MaintenanceWindowCutoff; - /** - * Whether targets must be registered with the Maintenance Window before tasks can be defined for those targets. - */ - AllowUnassociatedTargets?: MaintenanceWindowAllowUnassociatedTargets; - /** - * Whether the Maintenance Window is enabled. - */ - Enabled?: MaintenanceWindowEnabled; - /** - * If True, then all fields that are required by the CreateMaintenanceWindow action are also required for this API request. Optional fields that are not specified are set to null. - */ - Replace?: Boolean; - } - export interface UpdateMaintenanceWindowResult { - /** - * The ID of the created Maintenance Window. - */ - WindowId?: MaintenanceWindowId; - /** - * The name of the Maintenance Window. - */ - Name?: MaintenanceWindowName; - /** - * An optional description of the update. - */ - Description?: MaintenanceWindowDescription; - /** - * The schedule of the Maintenance Window in the form of a cron or rate expression. - */ - Schedule?: MaintenanceWindowSchedule; - /** - * The duration of the Maintenance Window in hours. - */ - Duration?: MaintenanceWindowDurationHours; - /** - * The number of hours before the end of the Maintenance Window that Systems Manager stops scheduling new tasks for execution. - */ - Cutoff?: MaintenanceWindowCutoff; - /** - * Whether targets must be registered with the Maintenance Window before tasks can be defined for those targets. - */ - AllowUnassociatedTargets?: MaintenanceWindowAllowUnassociatedTargets; - /** - * Whether the Maintenance Window is enabled. - */ - Enabled?: MaintenanceWindowEnabled; - } - export interface UpdateMaintenanceWindowTargetRequest { - /** - * The Maintenance Window ID with which to modify the target. - */ - WindowId: MaintenanceWindowId; - /** - * The target ID to modify. - */ - WindowTargetId: MaintenanceWindowTargetId; - /** - * The targets to add or replace. - */ - Targets?: Targets; - /** - * User-provided value that will be included in any CloudWatch events raised while running tasks for these targets in this Maintenance Window. - */ - OwnerInformation?: OwnerInformation; - /** - * A name for the update. - */ - Name?: MaintenanceWindowName; - /** - * An optional description for the update. - */ - Description?: MaintenanceWindowDescription; - /** - * If True, then all fields that are required by the RegisterTargetWithMaintenanceWindow action are also required for this API request. Optional fields that are not specified are set to null. - */ - Replace?: Boolean; - } - export interface UpdateMaintenanceWindowTargetResult { - /** - * The Maintenance Window ID specified in the update request. - */ - WindowId?: MaintenanceWindowId; - /** - * The target ID specified in the update request. - */ - WindowTargetId?: MaintenanceWindowTargetId; - /** - * The updated targets. - */ - Targets?: Targets; - /** - * The updated owner. - */ - OwnerInformation?: OwnerInformation; - /** - * The updated name. - */ - Name?: MaintenanceWindowName; - /** - * The updated description. - */ - Description?: MaintenanceWindowDescription; - } - export interface UpdateMaintenanceWindowTaskRequest { - /** - * The Maintenance Window ID that contains the task to modify. - */ - WindowId: MaintenanceWindowId; - /** - * The task ID to modify. - */ - WindowTaskId: MaintenanceWindowTaskId; - /** - * The targets (either instances or tags) to modify. Instances are specified using Key=instanceids,Values=instanceID_1,instanceID_2. Tags are specified using Key=tag_name,Values=tag_value. - */ - Targets?: Targets; - /** - * The task ARN to modify. - */ - TaskArn?: MaintenanceWindowTaskArn; - /** - * The IAM service role ARN to modify. The system assumes this role during task execution. - */ - ServiceRoleArn?: ServiceRole; - /** - * The parameters to modify. The map has the following format: Key: string, between 1 and 255 characters Value: an array of strings, each string is between 1 and 255 characters - */ - TaskParameters?: MaintenanceWindowTaskParameters; - /** - * The parameters that the task should use during execution. Populate only the fields that match the task type. All other fields should be empty. - */ - TaskInvocationParameters?: MaintenanceWindowTaskInvocationParameters; - /** - * The new task priority to specify. The lower the number, the higher the priority. Tasks that have the same priority are scheduled in parallel. - */ - Priority?: MaintenanceWindowTaskPriority; - /** - * The new MaxConcurrency value you want to specify. MaxConcurrency is the number of targets that are allowed to run this task in parallel. - */ - MaxConcurrency?: MaxConcurrency; - /** - * The new MaxErrors value to specify. MaxErrors is the maximum number of errors that are allowed before the task stops being scheduled. - */ - MaxErrors?: MaxErrors; - /** - * The new logging location in Amazon S3 to specify. - */ - LoggingInfo?: LoggingInfo; - /** - * The new task name to specify. - */ - Name?: MaintenanceWindowName; - /** - * The new task description to specify. - */ - Description?: MaintenanceWindowDescription; - /** - * If True, then all fields that are required by the RegisterTaskWithMaintenanceWndow action are also required for this API request. Optional fields that are not specified are set to null. - */ - Replace?: Boolean; - } - export interface UpdateMaintenanceWindowTaskResult { - /** - * The ID of the Maintenance Window that was updated. - */ - WindowId?: MaintenanceWindowId; - /** - * The task ID of the Maintenance Window that was updated. - */ - WindowTaskId?: MaintenanceWindowTaskId; - /** - * The updated target values. - */ - Targets?: Targets; - /** - * The updated task ARN value. - */ - TaskArn?: MaintenanceWindowTaskArn; - /** - * The updated service role ARN value. - */ - ServiceRoleArn?: ServiceRole; - /** - * The updated parameter values. - */ - TaskParameters?: MaintenanceWindowTaskParameters; - /** - * The updated parameter values. - */ - TaskInvocationParameters?: MaintenanceWindowTaskInvocationParameters; - /** - * The updated priority value. - */ - Priority?: MaintenanceWindowTaskPriority; - /** - * The updated MaxConcurrency value. - */ - MaxConcurrency?: MaxConcurrency; - /** - * The updated MaxErrors value. - */ - MaxErrors?: MaxErrors; - /** - * The updated logging information in Amazon S3. - */ - LoggingInfo?: LoggingInfo; - /** - * The updated task name. - */ - Name?: MaintenanceWindowName; - /** - * The updated task description. - */ - Description?: MaintenanceWindowDescription; - } - export interface UpdateManagedInstanceRoleRequest { - /** - * The ID of the managed instance where you want to update the role. - */ - InstanceId: ManagedInstanceId; - /** - * The IAM role you want to assign or change. - */ - IamRole: IamRole; - } - export interface UpdateManagedInstanceRoleResult { - } - export interface UpdatePatchBaselineRequest { - /** - * The ID of the patch baseline to update. - */ - BaselineId: BaselineId; - /** - * The name of the patch baseline. - */ - Name?: BaselineName; - /** - * A set of global filters used to exclude patches from the baseline. - */ - GlobalFilters?: PatchFilterGroup; - /** - * A set of rules used to include patches in the baseline. - */ - ApprovalRules?: PatchRuleGroup; - /** - * A list of explicitly approved patches for the baseline. - */ - ApprovedPatches?: PatchIdList; - /** - * Assigns a new compliance severity level to an existing patch baseline. - */ - ApprovedPatchesComplianceLevel?: PatchComplianceLevel; - /** - * A list of explicitly rejected patches for the baseline. - */ - RejectedPatches?: PatchIdList; - /** - * A description of the patch baseline. - */ - Description?: BaselineDescription; - } - export interface UpdatePatchBaselineResult { - /** - * The ID of the deleted patch baseline. - */ - BaselineId?: BaselineId; - /** - * The name of the patch baseline. - */ - Name?: BaselineName; - /** - * The operating system rule used by the updated patch baseline. - */ - OperatingSystem?: OperatingSystem; - /** - * A set of global filters used to exclude patches from the baseline. - */ - GlobalFilters?: PatchFilterGroup; - /** - * A set of rules used to include patches in the baseline. - */ - ApprovalRules?: PatchRuleGroup; - /** - * A list of explicitly approved patches for the baseline. - */ - ApprovedPatches?: PatchIdList; - /** - * The compliance severity level assigned to the patch baseline after the update completed. - */ - ApprovedPatchesComplianceLevel?: PatchComplianceLevel; - /** - * A list of explicitly rejected patches for the baseline. - */ - RejectedPatches?: PatchIdList; - /** - * The date when the patch baseline was created. - */ - CreatedDate?: DateTime; - /** - * The date when the patch baseline was last modified. - */ - ModifiedDate?: DateTime; - /** - * A description of the Patch Baseline. - */ - Description?: BaselineDescription; - } - export type Url = string; - export type Version = string; - /** - * A string in YYYY-MM-DD format that represents the latest possible API version that can be used in this service. Specify 'latest' to use the latest possible version. - */ - export type apiVersion = "2014-11-06"|"latest"|string; - export interface ClientApiVersions { - /** - * A string in YYYY-MM-DD format that represents the latest possible API version that can be used in this service. Specify 'latest' to use the latest possible version. - */ - apiVersion?: apiVersion; - } - export type ClientConfiguration = ServiceConfigurationOptions & ClientApiVersions; - /** - * Contains interfaces for use with the SSM client. - */ - export import Types = SSM; -} -export = SSM; diff --git a/workshops/monte-carlo-on-ec2-spot-fleet/src/web/node_modules/aws-sdk/clients/ssm.js b/workshops/monte-carlo-on-ec2-spot-fleet/src/web/node_modules/aws-sdk/clients/ssm.js deleted file mode 100644 index 84b33d24..00000000 --- a/workshops/monte-carlo-on-ec2-spot-fleet/src/web/node_modules/aws-sdk/clients/ssm.js +++ /dev/null @@ -1,18 +0,0 @@ -require('../lib/node_loader'); -var AWS = require('../lib/core'); -var Service = AWS.Service; -var apiLoader = AWS.apiLoader; - -apiLoader.services['ssm'] = {}; -AWS.SSM = Service.defineService('ssm', ['2014-11-06']); -Object.defineProperty(apiLoader.services['ssm'], '2014-11-06', { - get: function get() { - var model = require('../apis/ssm-2014-11-06.min.json'); - model.paginators = require('../apis/ssm-2014-11-06.paginators.json').pagination; - return model; - }, - enumerable: true, - configurable: true -}); - -module.exports = AWS.SSM; diff --git a/workshops/monte-carlo-on-ec2-spot-fleet/src/web/node_modules/aws-sdk/clients/stepfunctions.d.ts b/workshops/monte-carlo-on-ec2-spot-fleet/src/web/node_modules/aws-sdk/clients/stepfunctions.d.ts deleted file mode 100644 index 410c5934..00000000 --- a/workshops/monte-carlo-on-ec2-spot-fleet/src/web/node_modules/aws-sdk/clients/stepfunctions.d.ts +++ /dev/null @@ -1,808 +0,0 @@ -import {Request} from '../lib/request'; -import {Response} from '../lib/response'; -import {AWSError} from '../lib/error'; -import {Service} from '../lib/service'; -import {ServiceConfigurationOptions} from '../lib/service'; -import {ConfigBase as Config} from '../lib/config'; -interface Blob {} -declare class StepFunctions extends Service { - /** - * Constructs a service object. This object has one method for each API operation. - */ - constructor(options?: StepFunctions.Types.ClientConfiguration) - config: Config & StepFunctions.Types.ClientConfiguration; - /** - * Creates an activity. - */ - createActivity(params: StepFunctions.Types.CreateActivityInput, callback?: (err: AWSError, data: StepFunctions.Types.CreateActivityOutput) => void): Request; - /** - * Creates an activity. - */ - createActivity(callback?: (err: AWSError, data: StepFunctions.Types.CreateActivityOutput) => void): Request; - /** - * Creates a state machine. - */ - createStateMachine(params: StepFunctions.Types.CreateStateMachineInput, callback?: (err: AWSError, data: StepFunctions.Types.CreateStateMachineOutput) => void): Request; - /** - * Creates a state machine. - */ - createStateMachine(callback?: (err: AWSError, data: StepFunctions.Types.CreateStateMachineOutput) => void): Request; - /** - * Deletes an activity. - */ - deleteActivity(params: StepFunctions.Types.DeleteActivityInput, callback?: (err: AWSError, data: StepFunctions.Types.DeleteActivityOutput) => void): Request; - /** - * Deletes an activity. - */ - deleteActivity(callback?: (err: AWSError, data: StepFunctions.Types.DeleteActivityOutput) => void): Request; - /** - * Deletes a state machine. This is an asynchronous operation-- it sets the state machine's status to "DELETING" and begins the delete process. - */ - deleteStateMachine(params: StepFunctions.Types.DeleteStateMachineInput, callback?: (err: AWSError, data: StepFunctions.Types.DeleteStateMachineOutput) => void): Request; - /** - * Deletes a state machine. This is an asynchronous operation-- it sets the state machine's status to "DELETING" and begins the delete process. - */ - deleteStateMachine(callback?: (err: AWSError, data: StepFunctions.Types.DeleteStateMachineOutput) => void): Request; - /** - * Describes an activity. - */ - describeActivity(params: StepFunctions.Types.DescribeActivityInput, callback?: (err: AWSError, data: StepFunctions.Types.DescribeActivityOutput) => void): Request; - /** - * Describes an activity. - */ - describeActivity(callback?: (err: AWSError, data: StepFunctions.Types.DescribeActivityOutput) => void): Request; - /** - * Describes an execution. - */ - describeExecution(params: StepFunctions.Types.DescribeExecutionInput, callback?: (err: AWSError, data: StepFunctions.Types.DescribeExecutionOutput) => void): Request; - /** - * Describes an execution. - */ - describeExecution(callback?: (err: AWSError, data: StepFunctions.Types.DescribeExecutionOutput) => void): Request; - /** - * Describes a state machine. - */ - describeStateMachine(params: StepFunctions.Types.DescribeStateMachineInput, callback?: (err: AWSError, data: StepFunctions.Types.DescribeStateMachineOutput) => void): Request; - /** - * Describes a state machine. - */ - describeStateMachine(callback?: (err: AWSError, data: StepFunctions.Types.DescribeStateMachineOutput) => void): Request; - /** - * Used by workers to retrieve a task (with the specified activity ARN) scheduled for execution by a running state machine. This initiates a long poll, where the service holds the HTTP connection open and responds as soon as a task becomes available (i.e. an execution of a task of this type is needed.) The maximum time the service holds on to the request before responding is 60 seconds. If no task is available within 60 seconds, the poll will return an empty result, that is, the taskToken returned is an empty string. Workers should set their client side socket timeout to at least 65 seconds (5 seconds higher than the maximum time the service may hold the poll request). - */ - getActivityTask(params: StepFunctions.Types.GetActivityTaskInput, callback?: (err: AWSError, data: StepFunctions.Types.GetActivityTaskOutput) => void): Request; - /** - * Used by workers to retrieve a task (with the specified activity ARN) scheduled for execution by a running state machine. This initiates a long poll, where the service holds the HTTP connection open and responds as soon as a task becomes available (i.e. an execution of a task of this type is needed.) The maximum time the service holds on to the request before responding is 60 seconds. If no task is available within 60 seconds, the poll will return an empty result, that is, the taskToken returned is an empty string. Workers should set their client side socket timeout to at least 65 seconds (5 seconds higher than the maximum time the service may hold the poll request). - */ - getActivityTask(callback?: (err: AWSError, data: StepFunctions.Types.GetActivityTaskOutput) => void): Request; - /** - * Returns the history of the specified execution as a list of events. By default, the results are returned in ascending order of the timeStamp of the events. Use the reverseOrder parameter to get the latest events first. The results may be split into multiple pages. To retrieve subsequent pages, make the call again using the nextToken returned by the previous call. - */ - getExecutionHistory(params: StepFunctions.Types.GetExecutionHistoryInput, callback?: (err: AWSError, data: StepFunctions.Types.GetExecutionHistoryOutput) => void): Request; - /** - * Returns the history of the specified execution as a list of events. By default, the results are returned in ascending order of the timeStamp of the events. Use the reverseOrder parameter to get the latest events first. The results may be split into multiple pages. To retrieve subsequent pages, make the call again using the nextToken returned by the previous call. - */ - getExecutionHistory(callback?: (err: AWSError, data: StepFunctions.Types.GetExecutionHistoryOutput) => void): Request; - /** - * Lists the existing activities. The results may be split into multiple pages. To retrieve subsequent pages, make the call again using the nextToken returned by the previous call. - */ - listActivities(params: StepFunctions.Types.ListActivitiesInput, callback?: (err: AWSError, data: StepFunctions.Types.ListActivitiesOutput) => void): Request; - /** - * Lists the existing activities. The results may be split into multiple pages. To retrieve subsequent pages, make the call again using the nextToken returned by the previous call. - */ - listActivities(callback?: (err: AWSError, data: StepFunctions.Types.ListActivitiesOutput) => void): Request; - /** - * Lists the executions of a state machine that meet the filtering criteria. The results may be split into multiple pages. To retrieve subsequent pages, make the call again using the nextToken returned by the previous call. - */ - listExecutions(params: StepFunctions.Types.ListExecutionsInput, callback?: (err: AWSError, data: StepFunctions.Types.ListExecutionsOutput) => void): Request; - /** - * Lists the executions of a state machine that meet the filtering criteria. The results may be split into multiple pages. To retrieve subsequent pages, make the call again using the nextToken returned by the previous call. - */ - listExecutions(callback?: (err: AWSError, data: StepFunctions.Types.ListExecutionsOutput) => void): Request; - /** - * Lists the existing state machines. The results may be split into multiple pages. To retrieve subsequent pages, make the call again using the nextToken returned by the previous call. - */ - listStateMachines(params: StepFunctions.Types.ListStateMachinesInput, callback?: (err: AWSError, data: StepFunctions.Types.ListStateMachinesOutput) => void): Request; - /** - * Lists the existing state machines. The results may be split into multiple pages. To retrieve subsequent pages, make the call again using the nextToken returned by the previous call. - */ - listStateMachines(callback?: (err: AWSError, data: StepFunctions.Types.ListStateMachinesOutput) => void): Request; - /** - * Used by workers to report that the task identified by the taskToken failed. - */ - sendTaskFailure(params: StepFunctions.Types.SendTaskFailureInput, callback?: (err: AWSError, data: StepFunctions.Types.SendTaskFailureOutput) => void): Request; - /** - * Used by workers to report that the task identified by the taskToken failed. - */ - sendTaskFailure(callback?: (err: AWSError, data: StepFunctions.Types.SendTaskFailureOutput) => void): Request; - /** - * Used by workers to report to the service that the task represented by the specified taskToken is still making progress. This action resets the Heartbeat clock. The Heartbeat threshold is specified in the state machine's Amazon States Language definition. This action does not in itself create an event in the execution history. However, if the task times out, the execution history will contain an ActivityTimedOut event. The Timeout of a task, defined in the state machine's Amazon States Language definition, is its maximum allowed duration, regardless of the number of SendTaskHeartbeat requests received. This operation is only useful for long-lived tasks to report the liveliness of the task. - */ - sendTaskHeartbeat(params: StepFunctions.Types.SendTaskHeartbeatInput, callback?: (err: AWSError, data: StepFunctions.Types.SendTaskHeartbeatOutput) => void): Request; - /** - * Used by workers to report to the service that the task represented by the specified taskToken is still making progress. This action resets the Heartbeat clock. The Heartbeat threshold is specified in the state machine's Amazon States Language definition. This action does not in itself create an event in the execution history. However, if the task times out, the execution history will contain an ActivityTimedOut event. The Timeout of a task, defined in the state machine's Amazon States Language definition, is its maximum allowed duration, regardless of the number of SendTaskHeartbeat requests received. This operation is only useful for long-lived tasks to report the liveliness of the task. - */ - sendTaskHeartbeat(callback?: (err: AWSError, data: StepFunctions.Types.SendTaskHeartbeatOutput) => void): Request; - /** - * Used by workers to report that the task identified by the taskToken completed successfully. - */ - sendTaskSuccess(params: StepFunctions.Types.SendTaskSuccessInput, callback?: (err: AWSError, data: StepFunctions.Types.SendTaskSuccessOutput) => void): Request; - /** - * Used by workers to report that the task identified by the taskToken completed successfully. - */ - sendTaskSuccess(callback?: (err: AWSError, data: StepFunctions.Types.SendTaskSuccessOutput) => void): Request; - /** - * Starts a state machine execution. - */ - startExecution(params: StepFunctions.Types.StartExecutionInput, callback?: (err: AWSError, data: StepFunctions.Types.StartExecutionOutput) => void): Request; - /** - * Starts a state machine execution. - */ - startExecution(callback?: (err: AWSError, data: StepFunctions.Types.StartExecutionOutput) => void): Request; - /** - * Stops an execution. - */ - stopExecution(params: StepFunctions.Types.StopExecutionInput, callback?: (err: AWSError, data: StepFunctions.Types.StopExecutionOutput) => void): Request; - /** - * Stops an execution. - */ - stopExecution(callback?: (err: AWSError, data: StepFunctions.Types.StopExecutionOutput) => void): Request; -} -declare namespace StepFunctions { - export interface ActivityFailedEventDetails { - /** - * The error code of the failure. - */ - error?: Error; - /** - * A more detailed explanation of the cause of the failure. - */ - cause?: Cause; - } - export type ActivityList = ActivityListItem[]; - export interface ActivityListItem { - /** - * The Amazon Resource Name (ARN) that identifies the activity. - */ - activityArn: Arn; - /** - * The name of the activity. - */ - name: Name; - /** - * The date the activity was created. - */ - creationDate: Timestamp; - } - export interface ActivityScheduleFailedEventDetails { - /** - * The error code of the failure. - */ - error?: Error; - /** - * A more detailed explanation of the cause of the failure. - */ - cause?: Cause; - } - export interface ActivityScheduledEventDetails { - /** - * The Amazon Resource Name (ARN) of the scheduled activity. - */ - resource: Arn; - /** - * The JSON data input to the activity task. - */ - input?: Data; - /** - * The maximum allowed duration of the activity task. - */ - timeoutInSeconds?: TimeoutInSeconds; - /** - * The maximum allowed duration between two heartbeats for the activity task. - */ - heartbeatInSeconds?: TimeoutInSeconds; - } - export interface ActivityStartedEventDetails { - /** - * The name of the worker that the task was assigned to. These names are provided by the workers when calling GetActivityTask. - */ - workerName?: Identity; - } - export interface ActivitySucceededEventDetails { - /** - * The JSON data output by the activity task. - */ - output?: Data; - } - export interface ActivityTimedOutEventDetails { - /** - * The error code of the failure. - */ - error?: Error; - /** - * A more detailed explanation of the cause of the timeout. - */ - cause?: Cause; - } - export type Arn = string; - export type Cause = string; - export interface CreateActivityInput { - /** - * The name of the activity to create. This name must be unique for your AWS account and region. - */ - name: Name; - } - export interface CreateActivityOutput { - /** - * The Amazon Resource Name (ARN) that identifies the created activity. - */ - activityArn: Arn; - /** - * The date the activity was created. - */ - creationDate: Timestamp; - } - export interface CreateStateMachineInput { - /** - * The name of the state machine. This name must be unique for your AWS account and region. - */ - name: Name; - /** - * The Amazon States Language definition of the state machine. - */ - definition: Definition; - /** - * The Amazon Resource Name (ARN) of the IAM role to use for this state machine. - */ - roleArn: Arn; - } - export interface CreateStateMachineOutput { - /** - * The Amazon Resource Name (ARN) that identifies the created state machine. - */ - stateMachineArn: Arn; - /** - * The date the state machine was created. - */ - creationDate: Timestamp; - } - export type Data = string; - export type Definition = string; - export interface DeleteActivityInput { - /** - * The Amazon Resource Name (ARN) of the activity to delete. - */ - activityArn: Arn; - } - export interface DeleteActivityOutput { - } - export interface DeleteStateMachineInput { - /** - * The Amazon Resource Name (ARN) of the state machine to delete. - */ - stateMachineArn: Arn; - } - export interface DeleteStateMachineOutput { - } - export interface DescribeActivityInput { - /** - * The Amazon Resource Name (ARN) of the activity to describe. - */ - activityArn: Arn; - } - export interface DescribeActivityOutput { - /** - * The Amazon Resource Name (ARN) that identifies the activity. - */ - activityArn: Arn; - /** - * The name of the activity. - */ - name: Name; - /** - * The date the activity was created. - */ - creationDate: Timestamp; - } - export interface DescribeExecutionInput { - /** - * The Amazon Resource Name (ARN) of the execution to describe. - */ - executionArn: Arn; - } - export interface DescribeExecutionOutput { - /** - * The Amazon Resource Name (ARN) that identifies the execution. - */ - executionArn: Arn; - /** - * The Amazon Resource Name (ARN) of the executed stated machine. - */ - stateMachineArn: Arn; - /** - * The name of the execution. - */ - name?: Name; - /** - * The current status of the execution. - */ - status: ExecutionStatus; - /** - * The date the execution was started. - */ - startDate: Timestamp; - /** - * If the execution has already ended, the date the execution stopped. - */ - stopDate?: Timestamp; - /** - * The JSON input data of the execution. - */ - input: Data; - /** - * The JSON output data of the execution. - */ - output?: Data; - } - export interface DescribeStateMachineInput { - /** - * The Amazon Resource Name (ARN) of the state machine to describe. - */ - stateMachineArn: Arn; - } - export interface DescribeStateMachineOutput { - /** - * The Amazon Resource Name (ARN) that identifies the state machine. - */ - stateMachineArn: Arn; - /** - * The name of the state machine. - */ - name: Name; - /** - * The current status of the state machine. - */ - status?: StateMachineStatus; - /** - * The Amazon States Language definition of the state machine. - */ - definition: Definition; - /** - * The Amazon Resource Name (ARN) of the IAM role used for executing this state machine. - */ - roleArn: Arn; - /** - * The date the state machine was created. - */ - creationDate: Timestamp; - } - export type Error = string; - export type ErrorMessage = string; - export type EventId = number; - export interface ExecutionAbortedEventDetails { - /** - * The error code of the failure. - */ - error?: Error; - /** - * A more detailed explanation of the cause of the failure. - */ - cause?: Cause; - } - export interface ExecutionFailedEventDetails { - /** - * The error code of the failure. - */ - error?: Error; - /** - * A more detailed explanation of the cause of the failure. - */ - cause?: Cause; - } - export type ExecutionList = ExecutionListItem[]; - export interface ExecutionListItem { - /** - * The Amazon Resource Name (ARN) that identifies the execution. - */ - executionArn: Arn; - /** - * The Amazon Resource Name (ARN) of the executed state machine. - */ - stateMachineArn: Arn; - /** - * The name of the execution. - */ - name: Name; - /** - * The current status of the execution. - */ - status: ExecutionStatus; - /** - * The date the execution started. - */ - startDate: Timestamp; - /** - * If the execution already ended, the date the execution stopped. - */ - stopDate?: Timestamp; - } - export interface ExecutionStartedEventDetails { - /** - * The JSON data input to the execution. - */ - input?: Data; - /** - * The Amazon Resource Name (ARN) of the IAM role used for executing AWS Lambda tasks. - */ - roleArn?: Arn; - } - export type ExecutionStatus = "RUNNING"|"SUCCEEDED"|"FAILED"|"TIMED_OUT"|"ABORTED"|string; - export interface ExecutionSucceededEventDetails { - /** - * The JSON data output by the execution. - */ - output?: Data; - } - export interface ExecutionTimedOutEventDetails { - /** - * The error code of the failure. - */ - error?: Error; - /** - * A more detailed explanation of the cause of the timeout. - */ - cause?: Cause; - } - export interface GetActivityTaskInput { - /** - * The Amazon Resource Name (ARN) of the activity to retrieve tasks from. - */ - activityArn: Arn; - /** - * An arbitrary name may be provided in order to identify the worker that the task is assigned to. This name will be used when it is logged in the execution history. - */ - workerName?: Name; - } - export interface GetActivityTaskOutput { - /** - * A token that identifies the scheduled task. This token must be copied and included in subsequent calls to SendTaskHeartbeat, SendTaskSuccess or SendTaskFailure in order to report the progress or completion of the task. - */ - taskToken?: TaskToken; - /** - * The JSON input data for the task. - */ - input?: Data; - } - export interface GetExecutionHistoryInput { - /** - * The Amazon Resource Name (ARN) of the execution. - */ - executionArn: Arn; - /** - * The maximum number of results that will be returned per call. nextToken can be used to obtain further pages of results. The default is 100 and the maximum allowed page size is 1000. This is an upper limit only; the actual number of results returned per call may be fewer than the specified maximum. - */ - maxResults?: PageSize; - /** - * Lists events in descending order of their timeStamp. - */ - reverseOrder?: ReverseOrder; - /** - * If a nextToken was returned by a previous call, there are more results available. To retrieve the next page of results, make the call again using the returned token in nextToken. Keep all other arguments unchanged. The configured maxResults determines how many results can be returned in a single call. - */ - nextToken?: PageToken; - } - export interface GetExecutionHistoryOutput { - /** - * The list of events that occurred in the execution. - */ - events: HistoryEventList; - /** - * If a nextToken is returned, there are more results available. To retrieve the next page of results, make the call again using the returned token in nextToken. Keep all other arguments unchanged. The configured maxResults determines how many results can be returned in a single call. - */ - nextToken?: PageToken; - } - export interface HistoryEvent { - /** - * The date the event occured. - */ - timestamp: Timestamp; - /** - * The type of the event. - */ - type: HistoryEventType; - /** - * The id of the event. Events are numbered sequentially, starting at one. - */ - id: EventId; - /** - * The id of the previous event. - */ - previousEventId?: EventId; - activityFailedEventDetails?: ActivityFailedEventDetails; - activityScheduleFailedEventDetails?: ActivityScheduleFailedEventDetails; - activityScheduledEventDetails?: ActivityScheduledEventDetails; - activityStartedEventDetails?: ActivityStartedEventDetails; - activitySucceededEventDetails?: ActivitySucceededEventDetails; - activityTimedOutEventDetails?: ActivityTimedOutEventDetails; - executionFailedEventDetails?: ExecutionFailedEventDetails; - executionStartedEventDetails?: ExecutionStartedEventDetails; - executionSucceededEventDetails?: ExecutionSucceededEventDetails; - executionAbortedEventDetails?: ExecutionAbortedEventDetails; - executionTimedOutEventDetails?: ExecutionTimedOutEventDetails; - lambdaFunctionFailedEventDetails?: LambdaFunctionFailedEventDetails; - lambdaFunctionScheduleFailedEventDetails?: LambdaFunctionScheduleFailedEventDetails; - lambdaFunctionScheduledEventDetails?: LambdaFunctionScheduledEventDetails; - lambdaFunctionStartFailedEventDetails?: LambdaFunctionStartFailedEventDetails; - lambdaFunctionSucceededEventDetails?: LambdaFunctionSucceededEventDetails; - lambdaFunctionTimedOutEventDetails?: LambdaFunctionTimedOutEventDetails; - stateEnteredEventDetails?: StateEnteredEventDetails; - stateExitedEventDetails?: StateExitedEventDetails; - } - export type HistoryEventList = HistoryEvent[]; - export type HistoryEventType = "ActivityFailed"|"ActivityScheduleFailed"|"ActivityScheduled"|"ActivityStarted"|"ActivitySucceeded"|"ActivityTimedOut"|"ChoiceStateEntered"|"ChoiceStateExited"|"ExecutionFailed"|"ExecutionStarted"|"ExecutionSucceeded"|"ExecutionAborted"|"ExecutionTimedOut"|"FailStateEntered"|"LambdaFunctionFailed"|"LambdaFunctionScheduleFailed"|"LambdaFunctionScheduled"|"LambdaFunctionStartFailed"|"LambdaFunctionStarted"|"LambdaFunctionSucceeded"|"LambdaFunctionTimedOut"|"SucceedStateEntered"|"SucceedStateExited"|"TaskStateEntered"|"TaskStateExited"|"PassStateEntered"|"PassStateExited"|"ParallelStateEntered"|"ParallelStateExited"|"WaitStateEntered"|"WaitStateExited"|string; - export type Identity = string; - export interface LambdaFunctionFailedEventDetails { - /** - * The error code of the failure. - */ - error?: Error; - /** - * A more detailed explanation of the cause of the failure. - */ - cause?: Cause; - } - export interface LambdaFunctionScheduleFailedEventDetails { - /** - * The error code of the failure. - */ - error?: Error; - /** - * A more detailed explanation of the cause of the failure. - */ - cause?: Cause; - } - export interface LambdaFunctionScheduledEventDetails { - /** - * The Amazon Resource Name (ARN) of the scheduled lambda function. - */ - resource: Arn; - /** - * The JSON data input to the lambda function. - */ - input?: Data; - /** - * The maximum allowed duration of the lambda function. - */ - timeoutInSeconds?: TimeoutInSeconds; - } - export interface LambdaFunctionStartFailedEventDetails { - /** - * The error code of the failure. - */ - error?: Error; - /** - * A more detailed explanation of the cause of the failure. - */ - cause?: Cause; - } - export interface LambdaFunctionSucceededEventDetails { - /** - * The JSON data output by the lambda function. - */ - output?: Data; - } - export interface LambdaFunctionTimedOutEventDetails { - /** - * The error code of the failure. - */ - error?: Error; - /** - * A more detailed explanation of the cause of the timeout. - */ - cause?: Cause; - } - export interface ListActivitiesInput { - /** - * The maximum number of results that will be returned per call. nextToken can be used to obtain further pages of results. The default is 100 and the maximum allowed page size is 1000. This is an upper limit only; the actual number of results returned per call may be fewer than the specified maximum. - */ - maxResults?: PageSize; - /** - * If a nextToken was returned by a previous call, there are more results available. To retrieve the next page of results, make the call again using the returned token in nextToken. Keep all other arguments unchanged. The configured maxResults determines how many results can be returned in a single call. - */ - nextToken?: PageToken; - } - export interface ListActivitiesOutput { - /** - * The list of activities. - */ - activities: ActivityList; - /** - * If a nextToken is returned, there are more results available. To retrieve the next page of results, make the call again using the returned token in nextToken. Keep all other arguments unchanged. The configured maxResults determines how many results can be returned in a single call. - */ - nextToken?: PageToken; - } - export interface ListExecutionsInput { - /** - * The Amazon Resource Name (ARN) of the state machine whose executions will be listed. - */ - stateMachineArn: Arn; - /** - * If specified, only list the executions whose current execution status matches the given filter. - */ - statusFilter?: ExecutionStatus; - /** - * The maximum number of results that will be returned per call. nextToken can be used to obtain further pages of results. The default is 100 and the maximum allowed page size is 1000. This is an upper limit only; the actual number of results returned per call may be fewer than the specified maximum. - */ - maxResults?: PageSize; - /** - * If a nextToken was returned by a previous call, there are more results available. To retrieve the next page of results, make the call again using the returned token in nextToken. Keep all other arguments unchanged. The configured maxResults determines how many results can be returned in a single call. - */ - nextToken?: PageToken; - } - export interface ListExecutionsOutput { - /** - * The list of matching executions. - */ - executions: ExecutionList; - /** - * If a nextToken is returned, there are more results available. To retrieve the next page of results, make the call again using the returned token in nextToken. Keep all other arguments unchanged. The configured maxResults determines how many results can be returned in a single call. - */ - nextToken?: PageToken; - } - export interface ListStateMachinesInput { - /** - * The maximum number of results that will be returned per call. nextToken can be used to obtain further pages of results. The default is 100 and the maximum allowed page size is 1000. This is an upper limit only; the actual number of results returned per call may be fewer than the specified maximum. - */ - maxResults?: PageSize; - /** - * If a nextToken was returned by a previous call, there are more results available. To retrieve the next page of results, make the call again using the returned token in nextToken. Keep all other arguments unchanged. The configured maxResults determines how many results can be returned in a single call. - */ - nextToken?: PageToken; - } - export interface ListStateMachinesOutput { - stateMachines: StateMachineList; - /** - * If a nextToken is returned, there are more results available. To retrieve the next page of results, make the call again using the returned token in nextToken. Keep all other arguments unchanged. The configured maxResults determines how many results can be returned in a single call. - */ - nextToken?: PageToken; - } - export type Name = string; - export type PageSize = number; - export type PageToken = string; - export type ReverseOrder = boolean; - export interface SendTaskFailureInput { - /** - * The token that represents this task. Task tokens are generated by the service when the tasks are assigned to a worker (see GetActivityTask::taskToken). - */ - taskToken: TaskToken; - /** - * An arbitrary error code that identifies the cause of the failure. - */ - error?: Error; - /** - * A more detailed explanation of the cause of the failure. - */ - cause?: Cause; - } - export interface SendTaskFailureOutput { - } - export interface SendTaskHeartbeatInput { - /** - * The token that represents this task. Task tokens are generated by the service when the tasks are assigned to a worker (see GetActivityTask::taskToken). - */ - taskToken: TaskToken; - } - export interface SendTaskHeartbeatOutput { - } - export interface SendTaskSuccessInput { - /** - * The token that represents this task. Task tokens are generated by the service when the tasks are assigned to a worker (see GetActivityTask::taskToken). - */ - taskToken: TaskToken; - /** - * The JSON output of the task. - */ - output: Data; - } - export interface SendTaskSuccessOutput { - } - export interface StartExecutionInput { - /** - * The Amazon Resource Name (ARN) of the state machine to execute. - */ - stateMachineArn: Arn; - /** - * The name of the execution. This name must be unique for your AWS account and region. - */ - name?: Name; - /** - * The JSON input data for the execution. - */ - input?: Data; - } - export interface StartExecutionOutput { - /** - * The Amazon Resource Name (ARN) that identifies the execution. - */ - executionArn: Arn; - /** - * The date the execution was started. - */ - startDate: Timestamp; - } - export interface StateEnteredEventDetails { - /** - * The name of the state. - */ - name: Name; - /** - * The JSON input data to the state. - */ - input?: Data; - } - export interface StateExitedEventDetails { - /** - * The name of the state. - */ - name: Name; - /** - * The JSON output data of the state. - */ - output?: Data; - } - export type StateMachineList = StateMachineListItem[]; - export interface StateMachineListItem { - /** - * The Amazon Resource Name (ARN) that identifies the state machine. - */ - stateMachineArn: Arn; - /** - * The name of the state machine. - */ - name: Name; - /** - * The date the state machine was created. - */ - creationDate: Timestamp; - } - export type StateMachineStatus = "ACTIVE"|"DELETING"|string; - export interface StopExecutionInput { - /** - * The Amazon Resource Name (ARN) of the execution to stop. - */ - executionArn: Arn; - /** - * An arbitrary error code that identifies the cause of the termination. - */ - error?: Error; - /** - * A more detailed explanation of the cause of the termination. - */ - cause?: Cause; - } - export interface StopExecutionOutput { - /** - * The date the execution was stopped. - */ - stopDate: Timestamp; - } - export type TaskToken = string; - export type TimeoutInSeconds = number; - export type Timestamp = Date; - /** - * A string in YYYY-MM-DD format that represents the latest possible API version that can be used in this service. Specify 'latest' to use the latest possible version. - */ - export type apiVersion = "2016-11-23"|"latest"|string; - export interface ClientApiVersions { - /** - * A string in YYYY-MM-DD format that represents the latest possible API version that can be used in this service. Specify 'latest' to use the latest possible version. - */ - apiVersion?: apiVersion; - } - export type ClientConfiguration = ServiceConfigurationOptions & ClientApiVersions; - /** - * Contains interfaces for use with the StepFunctions client. - */ - export import Types = StepFunctions; -} -export = StepFunctions; diff --git a/workshops/monte-carlo-on-ec2-spot-fleet/src/web/node_modules/aws-sdk/clients/stepfunctions.js b/workshops/monte-carlo-on-ec2-spot-fleet/src/web/node_modules/aws-sdk/clients/stepfunctions.js deleted file mode 100644 index dd55bae6..00000000 --- a/workshops/monte-carlo-on-ec2-spot-fleet/src/web/node_modules/aws-sdk/clients/stepfunctions.js +++ /dev/null @@ -1,18 +0,0 @@ -require('../lib/node_loader'); -var AWS = require('../lib/core'); -var Service = AWS.Service; -var apiLoader = AWS.apiLoader; - -apiLoader.services['stepfunctions'] = {}; -AWS.StepFunctions = Service.defineService('stepfunctions', ['2016-11-23']); -Object.defineProperty(apiLoader.services['stepfunctions'], '2016-11-23', { - get: function get() { - var model = require('../apis/states-2016-11-23.min.json'); - model.paginators = require('../apis/states-2016-11-23.paginators.json').pagination; - return model; - }, - enumerable: true, - configurable: true -}); - -module.exports = AWS.StepFunctions; diff --git a/workshops/monte-carlo-on-ec2-spot-fleet/src/web/node_modules/aws-sdk/clients/storagegateway.d.ts b/workshops/monte-carlo-on-ec2-spot-fleet/src/web/node_modules/aws-sdk/clients/storagegateway.d.ts deleted file mode 100644 index 257e59b6..00000000 --- a/workshops/monte-carlo-on-ec2-spot-fleet/src/web/node_modules/aws-sdk/clients/storagegateway.d.ts +++ /dev/null @@ -1,2031 +0,0 @@ -import {Request} from '../lib/request'; -import {Response} from '../lib/response'; -import {AWSError} from '../lib/error'; -import {Service} from '../lib/service'; -import {ServiceConfigurationOptions} from '../lib/service'; -import {ConfigBase as Config} from '../lib/config'; -interface Blob {} -declare class StorageGateway extends Service { - /** - * Constructs a service object. This object has one method for each API operation. - */ - constructor(options?: StorageGateway.Types.ClientConfiguration) - config: Config & StorageGateway.Types.ClientConfiguration; - /** - * Activates the gateway you previously deployed on your host. For more information, see Activate the AWS Storage Gateway. In the activation process, you specify information such as the region you want to use for storing snapshots or tapes, the time zone for scheduled snapshots the gateway snapshot schedule window, an activation key, and a name for your gateway. The activation process also associates your gateway with your account; for more information, see UpdateGatewayInformation. You must turn on the gateway VM before you can activate your gateway. - */ - activateGateway(params: StorageGateway.Types.ActivateGatewayInput, callback?: (err: AWSError, data: StorageGateway.Types.ActivateGatewayOutput) => void): Request; - /** - * Activates the gateway you previously deployed on your host. For more information, see Activate the AWS Storage Gateway. In the activation process, you specify information such as the region you want to use for storing snapshots or tapes, the time zone for scheduled snapshots the gateway snapshot schedule window, an activation key, and a name for your gateway. The activation process also associates your gateway with your account; for more information, see UpdateGatewayInformation. You must turn on the gateway VM before you can activate your gateway. - */ - activateGateway(callback?: (err: AWSError, data: StorageGateway.Types.ActivateGatewayOutput) => void): Request; - /** - * Configures one or more gateway local disks as cache for a gateway. This operation is only supported in the cached volume, tape and file gateway architectures (see Storage Gateway Concepts). In the request, you specify the gateway Amazon Resource Name (ARN) to which you want to add cache, and one or more disk IDs that you want to configure as cache. - */ - addCache(params: StorageGateway.Types.AddCacheInput, callback?: (err: AWSError, data: StorageGateway.Types.AddCacheOutput) => void): Request; - /** - * Configures one or more gateway local disks as cache for a gateway. This operation is only supported in the cached volume, tape and file gateway architectures (see Storage Gateway Concepts). In the request, you specify the gateway Amazon Resource Name (ARN) to which you want to add cache, and one or more disk IDs that you want to configure as cache. - */ - addCache(callback?: (err: AWSError, data: StorageGateway.Types.AddCacheOutput) => void): Request; - /** - * Adds one or more tags to the specified resource. You use tags to add metadata to resources, which you can use to categorize these resources. For example, you can categorize resources by purpose, owner, environment, or team. Each tag consists of a key and a value, which you define. You can add tags to the following AWS Storage Gateway resources: Storage gateways of all types Storage Volumes Virtual Tapes You can create a maximum of 10 tags for each resource. Virtual tapes and storage volumes that are recovered to a new gateway maintain their tags. - */ - addTagsToResource(params: StorageGateway.Types.AddTagsToResourceInput, callback?: (err: AWSError, data: StorageGateway.Types.AddTagsToResourceOutput) => void): Request; - /** - * Adds one or more tags to the specified resource. You use tags to add metadata to resources, which you can use to categorize these resources. For example, you can categorize resources by purpose, owner, environment, or team. Each tag consists of a key and a value, which you define. You can add tags to the following AWS Storage Gateway resources: Storage gateways of all types Storage Volumes Virtual Tapes You can create a maximum of 10 tags for each resource. Virtual tapes and storage volumes that are recovered to a new gateway maintain their tags. - */ - addTagsToResource(callback?: (err: AWSError, data: StorageGateway.Types.AddTagsToResourceOutput) => void): Request; - /** - * Configures one or more gateway local disks as upload buffer for a specified gateway. This operation is supported for the stored volume, cached volume and tape gateway architectures. In the request, you specify the gateway Amazon Resource Name (ARN) to which you want to add upload buffer, and one or more disk IDs that you want to configure as upload buffer. - */ - addUploadBuffer(params: StorageGateway.Types.AddUploadBufferInput, callback?: (err: AWSError, data: StorageGateway.Types.AddUploadBufferOutput) => void): Request; - /** - * Configures one or more gateway local disks as upload buffer for a specified gateway. This operation is supported for the stored volume, cached volume and tape gateway architectures. In the request, you specify the gateway Amazon Resource Name (ARN) to which you want to add upload buffer, and one or more disk IDs that you want to configure as upload buffer. - */ - addUploadBuffer(callback?: (err: AWSError, data: StorageGateway.Types.AddUploadBufferOutput) => void): Request; - /** - * Configures one or more gateway local disks as working storage for a gateway. This operation is only supported in the stored volume gateway architecture. This operation is deprecated in cached volume API version 20120630. Use AddUploadBuffer instead. Working storage is also referred to as upload buffer. You can also use the AddUploadBuffer operation to add upload buffer to a stored volume gateway. In the request, you specify the gateway Amazon Resource Name (ARN) to which you want to add working storage, and one or more disk IDs that you want to configure as working storage. - */ - addWorkingStorage(params: StorageGateway.Types.AddWorkingStorageInput, callback?: (err: AWSError, data: StorageGateway.Types.AddWorkingStorageOutput) => void): Request; - /** - * Configures one or more gateway local disks as working storage for a gateway. This operation is only supported in the stored volume gateway architecture. This operation is deprecated in cached volume API version 20120630. Use AddUploadBuffer instead. Working storage is also referred to as upload buffer. You can also use the AddUploadBuffer operation to add upload buffer to a stored volume gateway. In the request, you specify the gateway Amazon Resource Name (ARN) to which you want to add working storage, and one or more disk IDs that you want to configure as working storage. - */ - addWorkingStorage(callback?: (err: AWSError, data: StorageGateway.Types.AddWorkingStorageOutput) => void): Request; - /** - * Cancels archiving of a virtual tape to the virtual tape shelf (VTS) after the archiving process is initiated. This operation is only supported in the tape gateway architecture. - */ - cancelArchival(params: StorageGateway.Types.CancelArchivalInput, callback?: (err: AWSError, data: StorageGateway.Types.CancelArchivalOutput) => void): Request; - /** - * Cancels archiving of a virtual tape to the virtual tape shelf (VTS) after the archiving process is initiated. This operation is only supported in the tape gateway architecture. - */ - cancelArchival(callback?: (err: AWSError, data: StorageGateway.Types.CancelArchivalOutput) => void): Request; - /** - * Cancels retrieval of a virtual tape from the virtual tape shelf (VTS) to a gateway after the retrieval process is initiated. The virtual tape is returned to the VTS. - */ - cancelRetrieval(params: StorageGateway.Types.CancelRetrievalInput, callback?: (err: AWSError, data: StorageGateway.Types.CancelRetrievalOutput) => void): Request; - /** - * Cancels retrieval of a virtual tape from the virtual tape shelf (VTS) to a gateway after the retrieval process is initiated. The virtual tape is returned to the VTS. - */ - cancelRetrieval(callback?: (err: AWSError, data: StorageGateway.Types.CancelRetrievalOutput) => void): Request; - /** - * Creates a cached volume on a specified cached volume gateway. This operation is only supported in the cached volume gateway architecture. Cache storage must be allocated to the gateway before you can create a cached volume. Use the AddCache operation to add cache storage to a gateway. In the request, you must specify the gateway, size of the volume in bytes, the iSCSI target name, an IP address on which to expose the target, and a unique client token. In response, the gateway creates the volume and returns information about it. This information includes the volume Amazon Resource Name (ARN), its size, and the iSCSI target ARN that initiators can use to connect to the volume target. Optionally, you can provide the ARN for an existing volume as the SourceVolumeARN for this cached volume, which creates an exact copy of the existing volume’s latest recovery point. The VolumeSizeInBytes value must be equal to or larger than the size of the copied volume, in bytes. - */ - createCachediSCSIVolume(params: StorageGateway.Types.CreateCachediSCSIVolumeInput, callback?: (err: AWSError, data: StorageGateway.Types.CreateCachediSCSIVolumeOutput) => void): Request; - /** - * Creates a cached volume on a specified cached volume gateway. This operation is only supported in the cached volume gateway architecture. Cache storage must be allocated to the gateway before you can create a cached volume. Use the AddCache operation to add cache storage to a gateway. In the request, you must specify the gateway, size of the volume in bytes, the iSCSI target name, an IP address on which to expose the target, and a unique client token. In response, the gateway creates the volume and returns information about it. This information includes the volume Amazon Resource Name (ARN), its size, and the iSCSI target ARN that initiators can use to connect to the volume target. Optionally, you can provide the ARN for an existing volume as the SourceVolumeARN for this cached volume, which creates an exact copy of the existing volume’s latest recovery point. The VolumeSizeInBytes value must be equal to or larger than the size of the copied volume, in bytes. - */ - createCachediSCSIVolume(callback?: (err: AWSError, data: StorageGateway.Types.CreateCachediSCSIVolumeOutput) => void): Request; - /** - * Creates a file share on an existing file gateway. In Storage Gateway, a file share is a file system mount point backed by Amazon S3 cloud storage. Storage Gateway exposes file shares using a Network File System (NFS) interface. This operation is only supported in the file gateway architecture. File gateway requires AWS Security Token Service (AWS STS) to be activated to enable you create a file share. Make sure AWS STS is activated in the region you are creating your file gateway in. If AWS STS is not activated in the region, activate it. For information about how to activate AWS STS, see Activating and Deactivating AWS STS in an AWS Region in the AWS Identity and Access Management User Guide. File gateway does not support creating hard or symbolic links on a file share. - */ - createNFSFileShare(params: StorageGateway.Types.CreateNFSFileShareInput, callback?: (err: AWSError, data: StorageGateway.Types.CreateNFSFileShareOutput) => void): Request; - /** - * Creates a file share on an existing file gateway. In Storage Gateway, a file share is a file system mount point backed by Amazon S3 cloud storage. Storage Gateway exposes file shares using a Network File System (NFS) interface. This operation is only supported in the file gateway architecture. File gateway requires AWS Security Token Service (AWS STS) to be activated to enable you create a file share. Make sure AWS STS is activated in the region you are creating your file gateway in. If AWS STS is not activated in the region, activate it. For information about how to activate AWS STS, see Activating and Deactivating AWS STS in an AWS Region in the AWS Identity and Access Management User Guide. File gateway does not support creating hard or symbolic links on a file share. - */ - createNFSFileShare(callback?: (err: AWSError, data: StorageGateway.Types.CreateNFSFileShareOutput) => void): Request; - /** - * Initiates a snapshot of a volume. AWS Storage Gateway provides the ability to back up point-in-time snapshots of your data to Amazon Simple Storage (S3) for durable off-site recovery, as well as import the data to an Amazon Elastic Block Store (EBS) volume in Amazon Elastic Compute Cloud (EC2). You can take snapshots of your gateway volume on a scheduled or ad-hoc basis. This API enables you to take ad-hoc snapshot. For more information, see Editing a Snapshot Schedule. In the CreateSnapshot request you identify the volume by providing its Amazon Resource Name (ARN). You must also provide description for the snapshot. When AWS Storage Gateway takes the snapshot of specified volume, the snapshot and description appears in the AWS Storage Gateway Console. In response, AWS Storage Gateway returns you a snapshot ID. You can use this snapshot ID to check the snapshot progress or later use it when you want to create a volume from a snapshot. This operation is only supported in stored and cached volume gateway architecture. To list or delete a snapshot, you must use the Amazon EC2 API. For more information, see DescribeSnapshots or DeleteSnapshot in the EC2 API reference. Volume and snapshot IDs are changing to a longer length ID format. For more information, see the important note on the Welcome page. - */ - createSnapshot(params: StorageGateway.Types.CreateSnapshotInput, callback?: (err: AWSError, data: StorageGateway.Types.CreateSnapshotOutput) => void): Request; - /** - * Initiates a snapshot of a volume. AWS Storage Gateway provides the ability to back up point-in-time snapshots of your data to Amazon Simple Storage (S3) for durable off-site recovery, as well as import the data to an Amazon Elastic Block Store (EBS) volume in Amazon Elastic Compute Cloud (EC2). You can take snapshots of your gateway volume on a scheduled or ad-hoc basis. This API enables you to take ad-hoc snapshot. For more information, see Editing a Snapshot Schedule. In the CreateSnapshot request you identify the volume by providing its Amazon Resource Name (ARN). You must also provide description for the snapshot. When AWS Storage Gateway takes the snapshot of specified volume, the snapshot and description appears in the AWS Storage Gateway Console. In response, AWS Storage Gateway returns you a snapshot ID. You can use this snapshot ID to check the snapshot progress or later use it when you want to create a volume from a snapshot. This operation is only supported in stored and cached volume gateway architecture. To list or delete a snapshot, you must use the Amazon EC2 API. For more information, see DescribeSnapshots or DeleteSnapshot in the EC2 API reference. Volume and snapshot IDs are changing to a longer length ID format. For more information, see the important note on the Welcome page. - */ - createSnapshot(callback?: (err: AWSError, data: StorageGateway.Types.CreateSnapshotOutput) => void): Request; - /** - * Initiates a snapshot of a gateway from a volume recovery point. This operation is only supported in the cached volume gateway architecture. A volume recovery point is a point in time at which all data of the volume is consistent and from which you can create a snapshot. To get a list of volume recovery point for cached volume gateway, use ListVolumeRecoveryPoints. In the CreateSnapshotFromVolumeRecoveryPoint request, you identify the volume by providing its Amazon Resource Name (ARN). You must also provide a description for the snapshot. When the gateway takes a snapshot of the specified volume, the snapshot and its description appear in the AWS Storage Gateway console. In response, the gateway returns you a snapshot ID. You can use this snapshot ID to check the snapshot progress or later use it when you want to create a volume from a snapshot. To list or delete a snapshot, you must use the Amazon EC2 API. For more information, in Amazon Elastic Compute Cloud API Reference. - */ - createSnapshotFromVolumeRecoveryPoint(params: StorageGateway.Types.CreateSnapshotFromVolumeRecoveryPointInput, callback?: (err: AWSError, data: StorageGateway.Types.CreateSnapshotFromVolumeRecoveryPointOutput) => void): Request; - /** - * Initiates a snapshot of a gateway from a volume recovery point. This operation is only supported in the cached volume gateway architecture. A volume recovery point is a point in time at which all data of the volume is consistent and from which you can create a snapshot. To get a list of volume recovery point for cached volume gateway, use ListVolumeRecoveryPoints. In the CreateSnapshotFromVolumeRecoveryPoint request, you identify the volume by providing its Amazon Resource Name (ARN). You must also provide a description for the snapshot. When the gateway takes a snapshot of the specified volume, the snapshot and its description appear in the AWS Storage Gateway console. In response, the gateway returns you a snapshot ID. You can use this snapshot ID to check the snapshot progress or later use it when you want to create a volume from a snapshot. To list or delete a snapshot, you must use the Amazon EC2 API. For more information, in Amazon Elastic Compute Cloud API Reference. - */ - createSnapshotFromVolumeRecoveryPoint(callback?: (err: AWSError, data: StorageGateway.Types.CreateSnapshotFromVolumeRecoveryPointOutput) => void): Request; - /** - * Creates a volume on a specified gateway. This operation is only supported in the stored volume gateway architecture. The size of the volume to create is inferred from the disk size. You can choose to preserve existing data on the disk, create volume from an existing snapshot, or create an empty volume. If you choose to create an empty gateway volume, then any existing data on the disk is erased. In the request you must specify the gateway and the disk information on which you are creating the volume. In response, the gateway creates the volume and returns volume information such as the volume Amazon Resource Name (ARN), its size, and the iSCSI target ARN that initiators can use to connect to the volume target. - */ - createStorediSCSIVolume(params: StorageGateway.Types.CreateStorediSCSIVolumeInput, callback?: (err: AWSError, data: StorageGateway.Types.CreateStorediSCSIVolumeOutput) => void): Request; - /** - * Creates a volume on a specified gateway. This operation is only supported in the stored volume gateway architecture. The size of the volume to create is inferred from the disk size. You can choose to preserve existing data on the disk, create volume from an existing snapshot, or create an empty volume. If you choose to create an empty gateway volume, then any existing data on the disk is erased. In the request you must specify the gateway and the disk information on which you are creating the volume. In response, the gateway creates the volume and returns volume information such as the volume Amazon Resource Name (ARN), its size, and the iSCSI target ARN that initiators can use to connect to the volume target. - */ - createStorediSCSIVolume(callback?: (err: AWSError, data: StorageGateway.Types.CreateStorediSCSIVolumeOutput) => void): Request; - /** - * Creates a virtual tape by using your own barcode. You write data to the virtual tape and then archive the tape. A barcode is unique and can not be reused if it has already been used on a tape . This applies to barcodes used on deleted tapes. This operation is only supported in the tape gateway. architecture. Cache storage must be allocated to the gateway before you can create a virtual tape. Use the AddCache operation to add cache storage to a gateway. - */ - createTapeWithBarcode(params: StorageGateway.Types.CreateTapeWithBarcodeInput, callback?: (err: AWSError, data: StorageGateway.Types.CreateTapeWithBarcodeOutput) => void): Request; - /** - * Creates a virtual tape by using your own barcode. You write data to the virtual tape and then archive the tape. A barcode is unique and can not be reused if it has already been used on a tape . This applies to barcodes used on deleted tapes. This operation is only supported in the tape gateway. architecture. Cache storage must be allocated to the gateway before you can create a virtual tape. Use the AddCache operation to add cache storage to a gateway. - */ - createTapeWithBarcode(callback?: (err: AWSError, data: StorageGateway.Types.CreateTapeWithBarcodeOutput) => void): Request; - /** - * Creates one or more virtual tapes. You write data to the virtual tapes and then archive the tapes. This operation is only supported in the tape gateway architecture. Cache storage must be allocated to the gateway before you can create virtual tapes. Use the AddCache operation to add cache storage to a gateway. - */ - createTapes(params: StorageGateway.Types.CreateTapesInput, callback?: (err: AWSError, data: StorageGateway.Types.CreateTapesOutput) => void): Request; - /** - * Creates one or more virtual tapes. You write data to the virtual tapes and then archive the tapes. This operation is only supported in the tape gateway architecture. Cache storage must be allocated to the gateway before you can create virtual tapes. Use the AddCache operation to add cache storage to a gateway. - */ - createTapes(callback?: (err: AWSError, data: StorageGateway.Types.CreateTapesOutput) => void): Request; - /** - * Deletes the bandwidth rate limits of a gateway. You can delete either the upload and download bandwidth rate limit, or you can delete both. If you delete only one of the limits, the other limit remains unchanged. To specify which gateway to work with, use the Amazon Resource Name (ARN) of the gateway in your request. - */ - deleteBandwidthRateLimit(params: StorageGateway.Types.DeleteBandwidthRateLimitInput, callback?: (err: AWSError, data: StorageGateway.Types.DeleteBandwidthRateLimitOutput) => void): Request; - /** - * Deletes the bandwidth rate limits of a gateway. You can delete either the upload and download bandwidth rate limit, or you can delete both. If you delete only one of the limits, the other limit remains unchanged. To specify which gateway to work with, use the Amazon Resource Name (ARN) of the gateway in your request. - */ - deleteBandwidthRateLimit(callback?: (err: AWSError, data: StorageGateway.Types.DeleteBandwidthRateLimitOutput) => void): Request; - /** - * Deletes Challenge-Handshake Authentication Protocol (CHAP) credentials for a specified iSCSI target and initiator pair. - */ - deleteChapCredentials(params: StorageGateway.Types.DeleteChapCredentialsInput, callback?: (err: AWSError, data: StorageGateway.Types.DeleteChapCredentialsOutput) => void): Request; - /** - * Deletes Challenge-Handshake Authentication Protocol (CHAP) credentials for a specified iSCSI target and initiator pair. - */ - deleteChapCredentials(callback?: (err: AWSError, data: StorageGateway.Types.DeleteChapCredentialsOutput) => void): Request; - /** - * Deletes a file share from a file gateway. This operation is only supported in the file gateway architecture. - */ - deleteFileShare(params: StorageGateway.Types.DeleteFileShareInput, callback?: (err: AWSError, data: StorageGateway.Types.DeleteFileShareOutput) => void): Request; - /** - * Deletes a file share from a file gateway. This operation is only supported in the file gateway architecture. - */ - deleteFileShare(callback?: (err: AWSError, data: StorageGateway.Types.DeleteFileShareOutput) => void): Request; - /** - * Deletes a gateway. To specify which gateway to delete, use the Amazon Resource Name (ARN) of the gateway in your request. The operation deletes the gateway; however, it does not delete the gateway virtual machine (VM) from your host computer. After you delete a gateway, you cannot reactivate it. Completed snapshots of the gateway volumes are not deleted upon deleting the gateway, however, pending snapshots will not complete. After you delete a gateway, your next step is to remove it from your environment. You no longer pay software charges after the gateway is deleted; however, your existing Amazon EBS snapshots persist and you will continue to be billed for these snapshots. You can choose to remove all remaining Amazon EBS snapshots by canceling your Amazon EC2 subscription.  If you prefer not to cancel your Amazon EC2 subscription, you can delete your snapshots using the Amazon EC2 console. For more information, see the AWS Storage Gateway Detail Page. - */ - deleteGateway(params: StorageGateway.Types.DeleteGatewayInput, callback?: (err: AWSError, data: StorageGateway.Types.DeleteGatewayOutput) => void): Request; - /** - * Deletes a gateway. To specify which gateway to delete, use the Amazon Resource Name (ARN) of the gateway in your request. The operation deletes the gateway; however, it does not delete the gateway virtual machine (VM) from your host computer. After you delete a gateway, you cannot reactivate it. Completed snapshots of the gateway volumes are not deleted upon deleting the gateway, however, pending snapshots will not complete. After you delete a gateway, your next step is to remove it from your environment. You no longer pay software charges after the gateway is deleted; however, your existing Amazon EBS snapshots persist and you will continue to be billed for these snapshots. You can choose to remove all remaining Amazon EBS snapshots by canceling your Amazon EC2 subscription.  If you prefer not to cancel your Amazon EC2 subscription, you can delete your snapshots using the Amazon EC2 console. For more information, see the AWS Storage Gateway Detail Page. - */ - deleteGateway(callback?: (err: AWSError, data: StorageGateway.Types.DeleteGatewayOutput) => void): Request; - /** - * Deletes a snapshot of a volume. You can take snapshots of your gateway volumes on a scheduled or ad hoc basis. This API action enables you to delete a snapshot schedule for a volume. For more information, see Working with Snapshots. In the DeleteSnapshotSchedule request, you identify the volume by providing its Amazon Resource Name (ARN). To list or delete a snapshot, you must use the Amazon EC2 API. in Amazon Elastic Compute Cloud API Reference. - */ - deleteSnapshotSchedule(params: StorageGateway.Types.DeleteSnapshotScheduleInput, callback?: (err: AWSError, data: StorageGateway.Types.DeleteSnapshotScheduleOutput) => void): Request; - /** - * Deletes a snapshot of a volume. You can take snapshots of your gateway volumes on a scheduled or ad hoc basis. This API action enables you to delete a snapshot schedule for a volume. For more information, see Working with Snapshots. In the DeleteSnapshotSchedule request, you identify the volume by providing its Amazon Resource Name (ARN). To list or delete a snapshot, you must use the Amazon EC2 API. in Amazon Elastic Compute Cloud API Reference. - */ - deleteSnapshotSchedule(callback?: (err: AWSError, data: StorageGateway.Types.DeleteSnapshotScheduleOutput) => void): Request; - /** - * Deletes the specified virtual tape. This operation is only supported in the tape gateway architecture. - */ - deleteTape(params: StorageGateway.Types.DeleteTapeInput, callback?: (err: AWSError, data: StorageGateway.Types.DeleteTapeOutput) => void): Request; - /** - * Deletes the specified virtual tape. This operation is only supported in the tape gateway architecture. - */ - deleteTape(callback?: (err: AWSError, data: StorageGateway.Types.DeleteTapeOutput) => void): Request; - /** - * Deletes the specified virtual tape from the virtual tape shelf (VTS). This operation is only supported in the tape gateway architecture. - */ - deleteTapeArchive(params: StorageGateway.Types.DeleteTapeArchiveInput, callback?: (err: AWSError, data: StorageGateway.Types.DeleteTapeArchiveOutput) => void): Request; - /** - * Deletes the specified virtual tape from the virtual tape shelf (VTS). This operation is only supported in the tape gateway architecture. - */ - deleteTapeArchive(callback?: (err: AWSError, data: StorageGateway.Types.DeleteTapeArchiveOutput) => void): Request; - /** - * Deletes the specified storage volume that you previously created using the CreateCachediSCSIVolume or CreateStorediSCSIVolume API. This operation is only supported in the cached volume and stored volume architectures. For stored volume gateways, the local disk that was configured as the storage volume is not deleted. You can reuse the local disk to create another storage volume. Before you delete a volume, make sure there are no iSCSI connections to the volume you are deleting. You should also make sure there is no snapshot in progress. You can use the Amazon Elastic Compute Cloud (Amazon EC2) API to query snapshots on the volume you are deleting and check the snapshot status. For more information, go to DescribeSnapshots in the Amazon Elastic Compute Cloud API Reference. In the request, you must provide the Amazon Resource Name (ARN) of the storage volume you want to delete. - */ - deleteVolume(params: StorageGateway.Types.DeleteVolumeInput, callback?: (err: AWSError, data: StorageGateway.Types.DeleteVolumeOutput) => void): Request; - /** - * Deletes the specified storage volume that you previously created using the CreateCachediSCSIVolume or CreateStorediSCSIVolume API. This operation is only supported in the cached volume and stored volume architectures. For stored volume gateways, the local disk that was configured as the storage volume is not deleted. You can reuse the local disk to create another storage volume. Before you delete a volume, make sure there are no iSCSI connections to the volume you are deleting. You should also make sure there is no snapshot in progress. You can use the Amazon Elastic Compute Cloud (Amazon EC2) API to query snapshots on the volume you are deleting and check the snapshot status. For more information, go to DescribeSnapshots in the Amazon Elastic Compute Cloud API Reference. In the request, you must provide the Amazon Resource Name (ARN) of the storage volume you want to delete. - */ - deleteVolume(callback?: (err: AWSError, data: StorageGateway.Types.DeleteVolumeOutput) => void): Request; - /** - * Returns the bandwidth rate limits of a gateway. By default, these limits are not set, which means no bandwidth rate limiting is in effect. This operation only returns a value for a bandwidth rate limit only if the limit is set. If no limits are set for the gateway, then this operation returns only the gateway ARN in the response body. To specify which gateway to describe, use the Amazon Resource Name (ARN) of the gateway in your request. - */ - describeBandwidthRateLimit(params: StorageGateway.Types.DescribeBandwidthRateLimitInput, callback?: (err: AWSError, data: StorageGateway.Types.DescribeBandwidthRateLimitOutput) => void): Request; - /** - * Returns the bandwidth rate limits of a gateway. By default, these limits are not set, which means no bandwidth rate limiting is in effect. This operation only returns a value for a bandwidth rate limit only if the limit is set. If no limits are set for the gateway, then this operation returns only the gateway ARN in the response body. To specify which gateway to describe, use the Amazon Resource Name (ARN) of the gateway in your request. - */ - describeBandwidthRateLimit(callback?: (err: AWSError, data: StorageGateway.Types.DescribeBandwidthRateLimitOutput) => void): Request; - /** - * Returns information about the cache of a gateway. This operation is only supported in the cached volume,tape and file gateway architectures. The response includes disk IDs that are configured as cache, and it includes the amount of cache allocated and used. - */ - describeCache(params: StorageGateway.Types.DescribeCacheInput, callback?: (err: AWSError, data: StorageGateway.Types.DescribeCacheOutput) => void): Request; - /** - * Returns information about the cache of a gateway. This operation is only supported in the cached volume,tape and file gateway architectures. The response includes disk IDs that are configured as cache, and it includes the amount of cache allocated and used. - */ - describeCache(callback?: (err: AWSError, data: StorageGateway.Types.DescribeCacheOutput) => void): Request; - /** - * Returns a description of the gateway volumes specified in the request. This operation is only supported in the cached volume gateway architecture. The list of gateway volumes in the request must be from one gateway. In the response Amazon Storage Gateway returns volume information sorted by volume Amazon Resource Name (ARN). - */ - describeCachediSCSIVolumes(params: StorageGateway.Types.DescribeCachediSCSIVolumesInput, callback?: (err: AWSError, data: StorageGateway.Types.DescribeCachediSCSIVolumesOutput) => void): Request; - /** - * Returns a description of the gateway volumes specified in the request. This operation is only supported in the cached volume gateway architecture. The list of gateway volumes in the request must be from one gateway. In the response Amazon Storage Gateway returns volume information sorted by volume Amazon Resource Name (ARN). - */ - describeCachediSCSIVolumes(callback?: (err: AWSError, data: StorageGateway.Types.DescribeCachediSCSIVolumesOutput) => void): Request; - /** - * Returns an array of Challenge-Handshake Authentication Protocol (CHAP) credentials information for a specified iSCSI target, one for each target-initiator pair. - */ - describeChapCredentials(params: StorageGateway.Types.DescribeChapCredentialsInput, callback?: (err: AWSError, data: StorageGateway.Types.DescribeChapCredentialsOutput) => void): Request; - /** - * Returns an array of Challenge-Handshake Authentication Protocol (CHAP) credentials information for a specified iSCSI target, one for each target-initiator pair. - */ - describeChapCredentials(callback?: (err: AWSError, data: StorageGateway.Types.DescribeChapCredentialsOutput) => void): Request; - /** - * Returns metadata about a gateway such as its name, network interfaces, configured time zone, and the state (whether the gateway is running or not). To specify which gateway to describe, use the Amazon Resource Name (ARN) of the gateway in your request. - */ - describeGatewayInformation(params: StorageGateway.Types.DescribeGatewayInformationInput, callback?: (err: AWSError, data: StorageGateway.Types.DescribeGatewayInformationOutput) => void): Request; - /** - * Returns metadata about a gateway such as its name, network interfaces, configured time zone, and the state (whether the gateway is running or not). To specify which gateway to describe, use the Amazon Resource Name (ARN) of the gateway in your request. - */ - describeGatewayInformation(callback?: (err: AWSError, data: StorageGateway.Types.DescribeGatewayInformationOutput) => void): Request; - /** - * Returns your gateway's weekly maintenance start time including the day and time of the week. Note that values are in terms of the gateway's time zone. - */ - describeMaintenanceStartTime(params: StorageGateway.Types.DescribeMaintenanceStartTimeInput, callback?: (err: AWSError, data: StorageGateway.Types.DescribeMaintenanceStartTimeOutput) => void): Request; - /** - * Returns your gateway's weekly maintenance start time including the day and time of the week. Note that values are in terms of the gateway's time zone. - */ - describeMaintenanceStartTime(callback?: (err: AWSError, data: StorageGateway.Types.DescribeMaintenanceStartTimeOutput) => void): Request; - /** - * Gets a description for one or more file shares from a file gateway. This operation is only supported in file gateways. - */ - describeNFSFileShares(params: StorageGateway.Types.DescribeNFSFileSharesInput, callback?: (err: AWSError, data: StorageGateway.Types.DescribeNFSFileSharesOutput) => void): Request; - /** - * Gets a description for one or more file shares from a file gateway. This operation is only supported in file gateways. - */ - describeNFSFileShares(callback?: (err: AWSError, data: StorageGateway.Types.DescribeNFSFileSharesOutput) => void): Request; - /** - * Describes the snapshot schedule for the specified gateway volume. The snapshot schedule information includes intervals at which snapshots are automatically initiated on the volume. This operation is only supported in the cached volume and stored volume architectures. - */ - describeSnapshotSchedule(params: StorageGateway.Types.DescribeSnapshotScheduleInput, callback?: (err: AWSError, data: StorageGateway.Types.DescribeSnapshotScheduleOutput) => void): Request; - /** - * Describes the snapshot schedule for the specified gateway volume. The snapshot schedule information includes intervals at which snapshots are automatically initiated on the volume. This operation is only supported in the cached volume and stored volume architectures. - */ - describeSnapshotSchedule(callback?: (err: AWSError, data: StorageGateway.Types.DescribeSnapshotScheduleOutput) => void): Request; - /** - * Returns the description of the gateway volumes specified in the request. The list of gateway volumes in the request must be from one gateway. In the response Amazon Storage Gateway returns volume information sorted by volume ARNs. This operation is only supported in stored volume gateway architecture. - */ - describeStorediSCSIVolumes(params: StorageGateway.Types.DescribeStorediSCSIVolumesInput, callback?: (err: AWSError, data: StorageGateway.Types.DescribeStorediSCSIVolumesOutput) => void): Request; - /** - * Returns the description of the gateway volumes specified in the request. The list of gateway volumes in the request must be from one gateway. In the response Amazon Storage Gateway returns volume information sorted by volume ARNs. This operation is only supported in stored volume gateway architecture. - */ - describeStorediSCSIVolumes(callback?: (err: AWSError, data: StorageGateway.Types.DescribeStorediSCSIVolumesOutput) => void): Request; - /** - * Returns a description of specified virtual tapes in the virtual tape shelf (VTS). This operation is only supported in the tape gateway architecture. If a specific TapeARN is not specified, AWS Storage Gateway returns a description of all virtual tapes found in the VTS associated with your account. - */ - describeTapeArchives(params: StorageGateway.Types.DescribeTapeArchivesInput, callback?: (err: AWSError, data: StorageGateway.Types.DescribeTapeArchivesOutput) => void): Request; - /** - * Returns a description of specified virtual tapes in the virtual tape shelf (VTS). This operation is only supported in the tape gateway architecture. If a specific TapeARN is not specified, AWS Storage Gateway returns a description of all virtual tapes found in the VTS associated with your account. - */ - describeTapeArchives(callback?: (err: AWSError, data: StorageGateway.Types.DescribeTapeArchivesOutput) => void): Request; - /** - * Returns a list of virtual tape recovery points that are available for the specified tape gateway. A recovery point is a point-in-time view of a virtual tape at which all the data on the virtual tape is consistent. If your gateway crashes, virtual tapes that have recovery points can be recovered to a new gateway. This operation is only supported in the tape gateway architecture. - */ - describeTapeRecoveryPoints(params: StorageGateway.Types.DescribeTapeRecoveryPointsInput, callback?: (err: AWSError, data: StorageGateway.Types.DescribeTapeRecoveryPointsOutput) => void): Request; - /** - * Returns a list of virtual tape recovery points that are available for the specified tape gateway. A recovery point is a point-in-time view of a virtual tape at which all the data on the virtual tape is consistent. If your gateway crashes, virtual tapes that have recovery points can be recovered to a new gateway. This operation is only supported in the tape gateway architecture. - */ - describeTapeRecoveryPoints(callback?: (err: AWSError, data: StorageGateway.Types.DescribeTapeRecoveryPointsOutput) => void): Request; - /** - * Returns a description of the specified Amazon Resource Name (ARN) of virtual tapes. If a TapeARN is not specified, returns a description of all virtual tapes associated with the specified gateway. This operation is only supported in the tape gateway architecture. - */ - describeTapes(params: StorageGateway.Types.DescribeTapesInput, callback?: (err: AWSError, data: StorageGateway.Types.DescribeTapesOutput) => void): Request; - /** - * Returns a description of the specified Amazon Resource Name (ARN) of virtual tapes. If a TapeARN is not specified, returns a description of all virtual tapes associated with the specified gateway. This operation is only supported in the tape gateway architecture. - */ - describeTapes(callback?: (err: AWSError, data: StorageGateway.Types.DescribeTapesOutput) => void): Request; - /** - * Returns information about the upload buffer of a gateway. This operation is supported for the stored volume, cached volume and tape gateway architectures. The response includes disk IDs that are configured as upload buffer space, and it includes the amount of upload buffer space allocated and used. - */ - describeUploadBuffer(params: StorageGateway.Types.DescribeUploadBufferInput, callback?: (err: AWSError, data: StorageGateway.Types.DescribeUploadBufferOutput) => void): Request; - /** - * Returns information about the upload buffer of a gateway. This operation is supported for the stored volume, cached volume and tape gateway architectures. The response includes disk IDs that are configured as upload buffer space, and it includes the amount of upload buffer space allocated and used. - */ - describeUploadBuffer(callback?: (err: AWSError, data: StorageGateway.Types.DescribeUploadBufferOutput) => void): Request; - /** - * Returns a description of virtual tape library (VTL) devices for the specified tape gateway. In the response, AWS Storage Gateway returns VTL device information. This operation is only supported in the tape gateway architecture. - */ - describeVTLDevices(params: StorageGateway.Types.DescribeVTLDevicesInput, callback?: (err: AWSError, data: StorageGateway.Types.DescribeVTLDevicesOutput) => void): Request; - /** - * Returns a description of virtual tape library (VTL) devices for the specified tape gateway. In the response, AWS Storage Gateway returns VTL device information. This operation is only supported in the tape gateway architecture. - */ - describeVTLDevices(callback?: (err: AWSError, data: StorageGateway.Types.DescribeVTLDevicesOutput) => void): Request; - /** - * Returns information about the working storage of a gateway. This operation is only supported in the stored volumes gateway architecture. This operation is deprecated in cached volumes API version (20120630). Use DescribeUploadBuffer instead. Working storage is also referred to as upload buffer. You can also use the DescribeUploadBuffer operation to add upload buffer to a stored volume gateway. The response includes disk IDs that are configured as working storage, and it includes the amount of working storage allocated and used. - */ - describeWorkingStorage(params: StorageGateway.Types.DescribeWorkingStorageInput, callback?: (err: AWSError, data: StorageGateway.Types.DescribeWorkingStorageOutput) => void): Request; - /** - * Returns information about the working storage of a gateway. This operation is only supported in the stored volumes gateway architecture. This operation is deprecated in cached volumes API version (20120630). Use DescribeUploadBuffer instead. Working storage is also referred to as upload buffer. You can also use the DescribeUploadBuffer operation to add upload buffer to a stored volume gateway. The response includes disk IDs that are configured as working storage, and it includes the amount of working storage allocated and used. - */ - describeWorkingStorage(callback?: (err: AWSError, data: StorageGateway.Types.DescribeWorkingStorageOutput) => void): Request; - /** - * Disables a tape gateway when the gateway is no longer functioning. For example, if your gateway VM is damaged, you can disable the gateway so you can recover virtual tapes. Use this operation for a tape gateway that is not reachable or not functioning. This operation is only supported in the tape gateway architectures. Once a gateway is disabled it cannot be enabled. - */ - disableGateway(params: StorageGateway.Types.DisableGatewayInput, callback?: (err: AWSError, data: StorageGateway.Types.DisableGatewayOutput) => void): Request; - /** - * Disables a tape gateway when the gateway is no longer functioning. For example, if your gateway VM is damaged, you can disable the gateway so you can recover virtual tapes. Use this operation for a tape gateway that is not reachable or not functioning. This operation is only supported in the tape gateway architectures. Once a gateway is disabled it cannot be enabled. - */ - disableGateway(callback?: (err: AWSError, data: StorageGateway.Types.DisableGatewayOutput) => void): Request; - /** - * Gets a list of the file shares for a specific file gateway, or the list of file shares that belong to the calling user account. This operation is only supported in the file gateway architecture. - */ - listFileShares(params: StorageGateway.Types.ListFileSharesInput, callback?: (err: AWSError, data: StorageGateway.Types.ListFileSharesOutput) => void): Request; - /** - * Gets a list of the file shares for a specific file gateway, or the list of file shares that belong to the calling user account. This operation is only supported in the file gateway architecture. - */ - listFileShares(callback?: (err: AWSError, data: StorageGateway.Types.ListFileSharesOutput) => void): Request; - /** - * Lists gateways owned by an AWS account in a region specified in the request. The returned list is ordered by gateway Amazon Resource Name (ARN). By default, the operation returns a maximum of 100 gateways. This operation supports pagination that allows you to optionally reduce the number of gateways returned in a response. If you have more gateways than are returned in a response (that is, the response returns only a truncated list of your gateways), the response contains a marker that you can specify in your next request to fetch the next page of gateways. - */ - listGateways(params: StorageGateway.Types.ListGatewaysInput, callback?: (err: AWSError, data: StorageGateway.Types.ListGatewaysOutput) => void): Request; - /** - * Lists gateways owned by an AWS account in a region specified in the request. The returned list is ordered by gateway Amazon Resource Name (ARN). By default, the operation returns a maximum of 100 gateways. This operation supports pagination that allows you to optionally reduce the number of gateways returned in a response. If you have more gateways than are returned in a response (that is, the response returns only a truncated list of your gateways), the response contains a marker that you can specify in your next request to fetch the next page of gateways. - */ - listGateways(callback?: (err: AWSError, data: StorageGateway.Types.ListGatewaysOutput) => void): Request; - /** - * Returns a list of the gateway's local disks. To specify which gateway to describe, you use the Amazon Resource Name (ARN) of the gateway in the body of the request. The request returns a list of all disks, specifying which are configured as working storage, cache storage, or stored volume or not configured at all. The response includes a DiskStatus field. This field can have a value of present (the disk is available to use), missing (the disk is no longer connected to the gateway), or mismatch (the disk node is occupied by a disk that has incorrect metadata or the disk content is corrupted). - */ - listLocalDisks(params: StorageGateway.Types.ListLocalDisksInput, callback?: (err: AWSError, data: StorageGateway.Types.ListLocalDisksOutput) => void): Request; - /** - * Returns a list of the gateway's local disks. To specify which gateway to describe, you use the Amazon Resource Name (ARN) of the gateway in the body of the request. The request returns a list of all disks, specifying which are configured as working storage, cache storage, or stored volume or not configured at all. The response includes a DiskStatus field. This field can have a value of present (the disk is available to use), missing (the disk is no longer connected to the gateway), or mismatch (the disk node is occupied by a disk that has incorrect metadata or the disk content is corrupted). - */ - listLocalDisks(callback?: (err: AWSError, data: StorageGateway.Types.ListLocalDisksOutput) => void): Request; - /** - * Lists the tags that have been added to the specified resource. This operation is only supported in the cached volume, stored volume and tape gateway architecture. - */ - listTagsForResource(params: StorageGateway.Types.ListTagsForResourceInput, callback?: (err: AWSError, data: StorageGateway.Types.ListTagsForResourceOutput) => void): Request; - /** - * Lists the tags that have been added to the specified resource. This operation is only supported in the cached volume, stored volume and tape gateway architecture. - */ - listTagsForResource(callback?: (err: AWSError, data: StorageGateway.Types.ListTagsForResourceOutput) => void): Request; - /** - * Lists virtual tapes in your virtual tape library (VTL) and your virtual tape shelf (VTS). You specify the tapes to list by specifying one or more tape Amazon Resource Names (ARNs). If you don't specify a tape ARN, the operation lists all virtual tapes in both your VTL and VTS. This operation supports pagination. By default, the operation returns a maximum of up to 100 tapes. You can optionally specify the Limit parameter in the body to limit the number of tapes in the response. If the number of tapes returned in the response is truncated, the response includes a Marker element that you can use in your subsequent request to retrieve the next set of tapes. This operation is only supported in the tape gateway architecture. - */ - listTapes(params: StorageGateway.Types.ListTapesInput, callback?: (err: AWSError, data: StorageGateway.Types.ListTapesOutput) => void): Request; - /** - * Lists virtual tapes in your virtual tape library (VTL) and your virtual tape shelf (VTS). You specify the tapes to list by specifying one or more tape Amazon Resource Names (ARNs). If you don't specify a tape ARN, the operation lists all virtual tapes in both your VTL and VTS. This operation supports pagination. By default, the operation returns a maximum of up to 100 tapes. You can optionally specify the Limit parameter in the body to limit the number of tapes in the response. If the number of tapes returned in the response is truncated, the response includes a Marker element that you can use in your subsequent request to retrieve the next set of tapes. This operation is only supported in the tape gateway architecture. - */ - listTapes(callback?: (err: AWSError, data: StorageGateway.Types.ListTapesOutput) => void): Request; - /** - * Lists iSCSI initiators that are connected to a volume. You can use this operation to determine whether a volume is being used or not. This operation is only supported in the cached volume and stored volume gateway architecture. - */ - listVolumeInitiators(params: StorageGateway.Types.ListVolumeInitiatorsInput, callback?: (err: AWSError, data: StorageGateway.Types.ListVolumeInitiatorsOutput) => void): Request; - /** - * Lists iSCSI initiators that are connected to a volume. You can use this operation to determine whether a volume is being used or not. This operation is only supported in the cached volume and stored volume gateway architecture. - */ - listVolumeInitiators(callback?: (err: AWSError, data: StorageGateway.Types.ListVolumeInitiatorsOutput) => void): Request; - /** - * Lists the recovery points for a specified gateway. This operation is only supported in the cached volume gateway architecture. Each cache volume has one recovery point. A volume recovery point is a point in time at which all data of the volume is consistent and from which you can create a snapshot or clone a new cached volume from a source volume. To create a snapshot from a volume recovery point use the CreateSnapshotFromVolumeRecoveryPoint operation. - */ - listVolumeRecoveryPoints(params: StorageGateway.Types.ListVolumeRecoveryPointsInput, callback?: (err: AWSError, data: StorageGateway.Types.ListVolumeRecoveryPointsOutput) => void): Request; - /** - * Lists the recovery points for a specified gateway. This operation is only supported in the cached volume gateway architecture. Each cache volume has one recovery point. A volume recovery point is a point in time at which all data of the volume is consistent and from which you can create a snapshot or clone a new cached volume from a source volume. To create a snapshot from a volume recovery point use the CreateSnapshotFromVolumeRecoveryPoint operation. - */ - listVolumeRecoveryPoints(callback?: (err: AWSError, data: StorageGateway.Types.ListVolumeRecoveryPointsOutput) => void): Request; - /** - * Lists the iSCSI stored volumes of a gateway. Results are sorted by volume ARN. The response includes only the volume ARNs. If you want additional volume information, use the DescribeStorediSCSIVolumes or the DescribeCachediSCSIVolumes API. The operation supports pagination. By default, the operation returns a maximum of up to 100 volumes. You can optionally specify the Limit field in the body to limit the number of volumes in the response. If the number of volumes returned in the response is truncated, the response includes a Marker field. You can use this Marker value in your subsequent request to retrieve the next set of volumes. This operation is only supported in the cached volume and stored volume gateway architectures. - */ - listVolumes(params: StorageGateway.Types.ListVolumesInput, callback?: (err: AWSError, data: StorageGateway.Types.ListVolumesOutput) => void): Request; - /** - * Lists the iSCSI stored volumes of a gateway. Results are sorted by volume ARN. The response includes only the volume ARNs. If you want additional volume information, use the DescribeStorediSCSIVolumes or the DescribeCachediSCSIVolumes API. The operation supports pagination. By default, the operation returns a maximum of up to 100 volumes. You can optionally specify the Limit field in the body to limit the number of volumes in the response. If the number of volumes returned in the response is truncated, the response includes a Marker field. You can use this Marker value in your subsequent request to retrieve the next set of volumes. This operation is only supported in the cached volume and stored volume gateway architectures. - */ - listVolumes(callback?: (err: AWSError, data: StorageGateway.Types.ListVolumesOutput) => void): Request; - /** - * Refreshes the cache for the specified file share. This operation finds objects in the Amazon S3 bucket that were added, removed or replaced since the gateway last listed the bucket's contents and cached the results. - */ - refreshCache(params: StorageGateway.Types.RefreshCacheInput, callback?: (err: AWSError, data: StorageGateway.Types.RefreshCacheOutput) => void): Request; - /** - * Refreshes the cache for the specified file share. This operation finds objects in the Amazon S3 bucket that were added, removed or replaced since the gateway last listed the bucket's contents and cached the results. - */ - refreshCache(callback?: (err: AWSError, data: StorageGateway.Types.RefreshCacheOutput) => void): Request; - /** - * Removes one or more tags from the specified resource. This operation is only supported in the cached volume, stored volume and tape gateway architectures. - */ - removeTagsFromResource(params: StorageGateway.Types.RemoveTagsFromResourceInput, callback?: (err: AWSError, data: StorageGateway.Types.RemoveTagsFromResourceOutput) => void): Request; - /** - * Removes one or more tags from the specified resource. This operation is only supported in the cached volume, stored volume and tape gateway architectures. - */ - removeTagsFromResource(callback?: (err: AWSError, data: StorageGateway.Types.RemoveTagsFromResourceOutput) => void): Request; - /** - * Resets all cache disks that have encountered a error and makes the disks available for reconfiguration as cache storage. If your cache disk encounters a error, the gateway prevents read and write operations on virtual tapes in the gateway. For example, an error can occur when a disk is corrupted or removed from the gateway. When a cache is reset, the gateway loses its cache storage. At this point you can reconfigure the disks as cache disks. This operation is only supported in the cached volume,tape and file gateway architectures. If the cache disk you are resetting contains data that has not been uploaded to Amazon S3 yet, that data can be lost. After you reset cache disks, there will be no configured cache disks left in the gateway, so you must configure at least one new cache disk for your gateway to function properly. - */ - resetCache(params: StorageGateway.Types.ResetCacheInput, callback?: (err: AWSError, data: StorageGateway.Types.ResetCacheOutput) => void): Request; - /** - * Resets all cache disks that have encountered a error and makes the disks available for reconfiguration as cache storage. If your cache disk encounters a error, the gateway prevents read and write operations on virtual tapes in the gateway. For example, an error can occur when a disk is corrupted or removed from the gateway. When a cache is reset, the gateway loses its cache storage. At this point you can reconfigure the disks as cache disks. This operation is only supported in the cached volume,tape and file gateway architectures. If the cache disk you are resetting contains data that has not been uploaded to Amazon S3 yet, that data can be lost. After you reset cache disks, there will be no configured cache disks left in the gateway, so you must configure at least one new cache disk for your gateway to function properly. - */ - resetCache(callback?: (err: AWSError, data: StorageGateway.Types.ResetCacheOutput) => void): Request; - /** - * Retrieves an archived virtual tape from the virtual tape shelf (VTS) to a tape gateway. Virtual tapes archived in the VTS are not associated with any gateway. However after a tape is retrieved, it is associated with a gateway, even though it is also listed in the VTS, that is, archive. This operation is only supported in the tape gateway architecture. Once a tape is successfully retrieved to a gateway, it cannot be retrieved again to another gateway. You must archive the tape again before you can retrieve it to another gateway. This operation is only supported in the tape gateway architecture. - */ - retrieveTapeArchive(params: StorageGateway.Types.RetrieveTapeArchiveInput, callback?: (err: AWSError, data: StorageGateway.Types.RetrieveTapeArchiveOutput) => void): Request; - /** - * Retrieves an archived virtual tape from the virtual tape shelf (VTS) to a tape gateway. Virtual tapes archived in the VTS are not associated with any gateway. However after a tape is retrieved, it is associated with a gateway, even though it is also listed in the VTS, that is, archive. This operation is only supported in the tape gateway architecture. Once a tape is successfully retrieved to a gateway, it cannot be retrieved again to another gateway. You must archive the tape again before you can retrieve it to another gateway. This operation is only supported in the tape gateway architecture. - */ - retrieveTapeArchive(callback?: (err: AWSError, data: StorageGateway.Types.RetrieveTapeArchiveOutput) => void): Request; - /** - * Retrieves the recovery point for the specified virtual tape. This operation is only supported in the tape gateway architecture. A recovery point is a point in time view of a virtual tape at which all the data on the tape is consistent. If your gateway crashes, virtual tapes that have recovery points can be recovered to a new gateway. The virtual tape can be retrieved to only one gateway. The retrieved tape is read-only. The virtual tape can be retrieved to only a tape gateway. There is no charge for retrieving recovery points. - */ - retrieveTapeRecoveryPoint(params: StorageGateway.Types.RetrieveTapeRecoveryPointInput, callback?: (err: AWSError, data: StorageGateway.Types.RetrieveTapeRecoveryPointOutput) => void): Request; - /** - * Retrieves the recovery point for the specified virtual tape. This operation is only supported in the tape gateway architecture. A recovery point is a point in time view of a virtual tape at which all the data on the tape is consistent. If your gateway crashes, virtual tapes that have recovery points can be recovered to a new gateway. The virtual tape can be retrieved to only one gateway. The retrieved tape is read-only. The virtual tape can be retrieved to only a tape gateway. There is no charge for retrieving recovery points. - */ - retrieveTapeRecoveryPoint(callback?: (err: AWSError, data: StorageGateway.Types.RetrieveTapeRecoveryPointOutput) => void): Request; - /** - * Sets the password for your VM local console. When you log in to the local console for the first time, you log in to the VM with the default credentials. We recommend that you set a new password. You don't need to know the default password to set a new password. - */ - setLocalConsolePassword(params: StorageGateway.Types.SetLocalConsolePasswordInput, callback?: (err: AWSError, data: StorageGateway.Types.SetLocalConsolePasswordOutput) => void): Request; - /** - * Sets the password for your VM local console. When you log in to the local console for the first time, you log in to the VM with the default credentials. We recommend that you set a new password. You don't need to know the default password to set a new password. - */ - setLocalConsolePassword(callback?: (err: AWSError, data: StorageGateway.Types.SetLocalConsolePasswordOutput) => void): Request; - /** - * Shuts down a gateway. To specify which gateway to shut down, use the Amazon Resource Name (ARN) of the gateway in the body of your request. The operation shuts down the gateway service component running in the gateway's virtual machine (VM) and not the host VM. If you want to shut down the VM, it is recommended that you first shut down the gateway component in the VM to avoid unpredictable conditions. After the gateway is shutdown, you cannot call any other API except StartGateway, DescribeGatewayInformation, and ListGateways. For more information, see ActivateGateway. Your applications cannot read from or write to the gateway's storage volumes, and there are no snapshots taken. When you make a shutdown request, you will get a 200 OK success response immediately. However, it might take some time for the gateway to shut down. You can call the DescribeGatewayInformation API to check the status. For more information, see ActivateGateway. If do not intend to use the gateway again, you must delete the gateway (using DeleteGateway) to no longer pay software charges associated with the gateway. - */ - shutdownGateway(params: StorageGateway.Types.ShutdownGatewayInput, callback?: (err: AWSError, data: StorageGateway.Types.ShutdownGatewayOutput) => void): Request; - /** - * Shuts down a gateway. To specify which gateway to shut down, use the Amazon Resource Name (ARN) of the gateway in the body of your request. The operation shuts down the gateway service component running in the gateway's virtual machine (VM) and not the host VM. If you want to shut down the VM, it is recommended that you first shut down the gateway component in the VM to avoid unpredictable conditions. After the gateway is shutdown, you cannot call any other API except StartGateway, DescribeGatewayInformation, and ListGateways. For more information, see ActivateGateway. Your applications cannot read from or write to the gateway's storage volumes, and there are no snapshots taken. When you make a shutdown request, you will get a 200 OK success response immediately. However, it might take some time for the gateway to shut down. You can call the DescribeGatewayInformation API to check the status. For more information, see ActivateGateway. If do not intend to use the gateway again, you must delete the gateway (using DeleteGateway) to no longer pay software charges associated with the gateway. - */ - shutdownGateway(callback?: (err: AWSError, data: StorageGateway.Types.ShutdownGatewayOutput) => void): Request; - /** - * Starts a gateway that you previously shut down (see ShutdownGateway). After the gateway starts, you can then make other API calls, your applications can read from or write to the gateway's storage volumes and you will be able to take snapshot backups. When you make a request, you will get a 200 OK success response immediately. However, it might take some time for the gateway to be ready. You should call DescribeGatewayInformation and check the status before making any additional API calls. For more information, see ActivateGateway. To specify which gateway to start, use the Amazon Resource Name (ARN) of the gateway in your request. - */ - startGateway(params: StorageGateway.Types.StartGatewayInput, callback?: (err: AWSError, data: StorageGateway.Types.StartGatewayOutput) => void): Request; - /** - * Starts a gateway that you previously shut down (see ShutdownGateway). After the gateway starts, you can then make other API calls, your applications can read from or write to the gateway's storage volumes and you will be able to take snapshot backups. When you make a request, you will get a 200 OK success response immediately. However, it might take some time for the gateway to be ready. You should call DescribeGatewayInformation and check the status before making any additional API calls. For more information, see ActivateGateway. To specify which gateway to start, use the Amazon Resource Name (ARN) of the gateway in your request. - */ - startGateway(callback?: (err: AWSError, data: StorageGateway.Types.StartGatewayOutput) => void): Request; - /** - * Updates the bandwidth rate limits of a gateway. You can update both the upload and download bandwidth rate limit or specify only one of the two. If you don't set a bandwidth rate limit, the existing rate limit remains. By default, a gateway's bandwidth rate limits are not set. If you don't set any limit, the gateway does not have any limitations on its bandwidth usage and could potentially use the maximum available bandwidth. To specify which gateway to update, use the Amazon Resource Name (ARN) of the gateway in your request. - */ - updateBandwidthRateLimit(params: StorageGateway.Types.UpdateBandwidthRateLimitInput, callback?: (err: AWSError, data: StorageGateway.Types.UpdateBandwidthRateLimitOutput) => void): Request; - /** - * Updates the bandwidth rate limits of a gateway. You can update both the upload and download bandwidth rate limit or specify only one of the two. If you don't set a bandwidth rate limit, the existing rate limit remains. By default, a gateway's bandwidth rate limits are not set. If you don't set any limit, the gateway does not have any limitations on its bandwidth usage and could potentially use the maximum available bandwidth. To specify which gateway to update, use the Amazon Resource Name (ARN) of the gateway in your request. - */ - updateBandwidthRateLimit(callback?: (err: AWSError, data: StorageGateway.Types.UpdateBandwidthRateLimitOutput) => void): Request; - /** - * Updates the Challenge-Handshake Authentication Protocol (CHAP) credentials for a specified iSCSI target. By default, a gateway does not have CHAP enabled; however, for added security, you might use it. When you update CHAP credentials, all existing connections on the target are closed and initiators must reconnect with the new credentials. - */ - updateChapCredentials(params: StorageGateway.Types.UpdateChapCredentialsInput, callback?: (err: AWSError, data: StorageGateway.Types.UpdateChapCredentialsOutput) => void): Request; - /** - * Updates the Challenge-Handshake Authentication Protocol (CHAP) credentials for a specified iSCSI target. By default, a gateway does not have CHAP enabled; however, for added security, you might use it. When you update CHAP credentials, all existing connections on the target are closed and initiators must reconnect with the new credentials. - */ - updateChapCredentials(callback?: (err: AWSError, data: StorageGateway.Types.UpdateChapCredentialsOutput) => void): Request; - /** - * Updates a gateway's metadata, which includes the gateway's name and time zone. To specify which gateway to update, use the Amazon Resource Name (ARN) of the gateway in your request. For Gateways activated after September 2, 2015, the gateway's ARN contains the gateway ID rather than the gateway name. However, changing the name of the gateway has no effect on the gateway's ARN. - */ - updateGatewayInformation(params: StorageGateway.Types.UpdateGatewayInformationInput, callback?: (err: AWSError, data: StorageGateway.Types.UpdateGatewayInformationOutput) => void): Request; - /** - * Updates a gateway's metadata, which includes the gateway's name and time zone. To specify which gateway to update, use the Amazon Resource Name (ARN) of the gateway in your request. For Gateways activated after September 2, 2015, the gateway's ARN contains the gateway ID rather than the gateway name. However, changing the name of the gateway has no effect on the gateway's ARN. - */ - updateGatewayInformation(callback?: (err: AWSError, data: StorageGateway.Types.UpdateGatewayInformationOutput) => void): Request; - /** - * Updates the gateway virtual machine (VM) software. The request immediately triggers the software update. When you make this request, you get a 200 OK success response immediately. However, it might take some time for the update to complete. You can call DescribeGatewayInformation to verify the gateway is in the STATE_RUNNING state. A software update forces a system restart of your gateway. You can minimize the chance of any disruption to your applications by increasing your iSCSI Initiators' timeouts. For more information about increasing iSCSI Initiator timeouts for Windows and Linux, see Customizing Your Windows iSCSI Settings and Customizing Your Linux iSCSI Settings, respectively. - */ - updateGatewaySoftwareNow(params: StorageGateway.Types.UpdateGatewaySoftwareNowInput, callback?: (err: AWSError, data: StorageGateway.Types.UpdateGatewaySoftwareNowOutput) => void): Request; - /** - * Updates the gateway virtual machine (VM) software. The request immediately triggers the software update. When you make this request, you get a 200 OK success response immediately. However, it might take some time for the update to complete. You can call DescribeGatewayInformation to verify the gateway is in the STATE_RUNNING state. A software update forces a system restart of your gateway. You can minimize the chance of any disruption to your applications by increasing your iSCSI Initiators' timeouts. For more information about increasing iSCSI Initiator timeouts for Windows and Linux, see Customizing Your Windows iSCSI Settings and Customizing Your Linux iSCSI Settings, respectively. - */ - updateGatewaySoftwareNow(callback?: (err: AWSError, data: StorageGateway.Types.UpdateGatewaySoftwareNowOutput) => void): Request; - /** - * Updates a gateway's weekly maintenance start time information, including day and time of the week. The maintenance time is the time in your gateway's time zone. - */ - updateMaintenanceStartTime(params: StorageGateway.Types.UpdateMaintenanceStartTimeInput, callback?: (err: AWSError, data: StorageGateway.Types.UpdateMaintenanceStartTimeOutput) => void): Request; - /** - * Updates a gateway's weekly maintenance start time information, including day and time of the week. The maintenance time is the time in your gateway's time zone. - */ - updateMaintenanceStartTime(callback?: (err: AWSError, data: StorageGateway.Types.UpdateMaintenanceStartTimeOutput) => void): Request; - /** - * Updates a file share. This operation is only supported in the file gateway architecture. To leave a file share field unchanged, set the corresponding input field to null. Updates the following file share setting: Default storage class for your S3 bucket Metadata defaults for your S3 bucket Allowed NFS clients for your file share Squash settings Write status of your file share To leave a file share field unchanged, set the corresponding input field to null. This operation is only supported in file gateways. - */ - updateNFSFileShare(params: StorageGateway.Types.UpdateNFSFileShareInput, callback?: (err: AWSError, data: StorageGateway.Types.UpdateNFSFileShareOutput) => void): Request; - /** - * Updates a file share. This operation is only supported in the file gateway architecture. To leave a file share field unchanged, set the corresponding input field to null. Updates the following file share setting: Default storage class for your S3 bucket Metadata defaults for your S3 bucket Allowed NFS clients for your file share Squash settings Write status of your file share To leave a file share field unchanged, set the corresponding input field to null. This operation is only supported in file gateways. - */ - updateNFSFileShare(callback?: (err: AWSError, data: StorageGateway.Types.UpdateNFSFileShareOutput) => void): Request; - /** - * Updates a snapshot schedule configured for a gateway volume. This operation is only supported in the cached volume and stored volume gateway architectures. The default snapshot schedule for volume is once every 24 hours, starting at the creation time of the volume. You can use this API to change the snapshot schedule configured for the volume. In the request you must identify the gateway volume whose snapshot schedule you want to update, and the schedule information, including when you want the snapshot to begin on a day and the frequency (in hours) of snapshots. - */ - updateSnapshotSchedule(params: StorageGateway.Types.UpdateSnapshotScheduleInput, callback?: (err: AWSError, data: StorageGateway.Types.UpdateSnapshotScheduleOutput) => void): Request; - /** - * Updates a snapshot schedule configured for a gateway volume. This operation is only supported in the cached volume and stored volume gateway architectures. The default snapshot schedule for volume is once every 24 hours, starting at the creation time of the volume. You can use this API to change the snapshot schedule configured for the volume. In the request you must identify the gateway volume whose snapshot schedule you want to update, and the schedule information, including when you want the snapshot to begin on a day and the frequency (in hours) of snapshots. - */ - updateSnapshotSchedule(callback?: (err: AWSError, data: StorageGateway.Types.UpdateSnapshotScheduleOutput) => void): Request; - /** - * Updates the type of medium changer in a tape gateway. When you activate a tape gateway, you select a medium changer type for the tape gateway. This operation enables you to select a different type of medium changer after a tape gateway is activated. This operation is only supported in the tape gateway architecture. - */ - updateVTLDeviceType(params: StorageGateway.Types.UpdateVTLDeviceTypeInput, callback?: (err: AWSError, data: StorageGateway.Types.UpdateVTLDeviceTypeOutput) => void): Request; - /** - * Updates the type of medium changer in a tape gateway. When you activate a tape gateway, you select a medium changer type for the tape gateway. This operation enables you to select a different type of medium changer after a tape gateway is activated. This operation is only supported in the tape gateway architecture. - */ - updateVTLDeviceType(callback?: (err: AWSError, data: StorageGateway.Types.UpdateVTLDeviceTypeOutput) => void): Request; -} -declare namespace StorageGateway { - export interface ActivateGatewayInput { - /** - * Your gateway activation key. You can obtain the activation key by sending an HTTP GET request with redirects enabled to the gateway IP address (port 80). The redirect URL returned in the response provides you the activation key for your gateway in the query string parameter activationKey. It may also include other activation-related parameters, however, these are merely defaults -- the arguments you pass to the ActivateGateway API call determine the actual configuration of your gateway. - */ - ActivationKey: ActivationKey; - /** - * The name you configured for your gateway. - */ - GatewayName: GatewayName; - /** - * A value that indicates the time zone you want to set for the gateway. The time zone is of the format "GMT-hr:mm" or "GMT+hr:mm". For example, GMT-4:00 indicates the time is 4 hours behind GMT. GMT+2:00 indicates the time is 2 hours ahead of GMT. The time zone is used, for example, for scheduling snapshots and your gateway's maintenance schedule. - */ - GatewayTimezone: GatewayTimezone; - /** - * A value that indicates the region where you want to store your data. The gateway region specified must be the same region as the region in your Host header in the request. For more information about available regions and endpoints for AWS Storage Gateway, see Regions and Endpoints in the Amazon Web Services Glossary. Valid Values: "us-east-1", "us-east-2", "us-west-1", "us-west-2", "ca-central-1", "eu-west-1", "eu-central-1", "eu-west-2", "ap-northeast-1", "ap-northeast-2", "ap-southeast-1", "ap-southeast-2", "ap-south-1", "sa-east-1" - */ - GatewayRegion: RegionId; - /** - * A value that defines the type of gateway to activate. The type specified is critical to all later functions of the gateway and cannot be changed after activation. The default value is STORED. Valid Values: "STORED", "CACHED", "VTL", "FILE_S3" - */ - GatewayType?: GatewayType; - /** - * The value that indicates the type of tape drive to use for tape gateway. This field is optional. Valid Values: "IBM-ULT3580-TD5" - */ - TapeDriveType?: TapeDriveType; - /** - * The value that indicates the type of medium changer to use for tape gateway. This field is optional. Valid Values: "STK-L700", "AWS-Gateway-VTL" - */ - MediumChangerType?: MediumChangerType; - } - export interface ActivateGatewayOutput { - GatewayARN?: GatewayARN; - } - export type ActivationKey = string; - export interface AddCacheInput { - GatewayARN: GatewayARN; - DiskIds: DiskIds; - } - export interface AddCacheOutput { - GatewayARN?: GatewayARN; - } - export interface AddTagsToResourceInput { - /** - * The Amazon Resource Name (ARN) of the resource you want to add tags to. - */ - ResourceARN: ResourceARN; - /** - * The key-value pair that represents the tag you want to add to the resource. The value can be an empty string. Valid characters for key and value are letters, spaces, and numbers representable in UTF-8 format, and the following special characters: + - = . _ : / @. - */ - Tags: Tags; - } - export interface AddTagsToResourceOutput { - /** - * The Amazon Resource Name (ARN) of the resource you want to add tags to. - */ - ResourceARN?: ResourceARN; - } - export interface AddUploadBufferInput { - GatewayARN: GatewayARN; - DiskIds: DiskIds; - } - export interface AddUploadBufferOutput { - GatewayARN?: GatewayARN; - } - export interface AddWorkingStorageInput { - GatewayARN: GatewayARN; - /** - * An array of strings that identify disks that are to be configured as working storage. Each string have a minimum length of 1 and maximum length of 300. You can get the disk IDs from the ListLocalDisks API. - */ - DiskIds: DiskIds; - } - export interface AddWorkingStorageOutput { - GatewayARN?: GatewayARN; - } - export type BandwidthDownloadRateLimit = number; - export type BandwidthType = string; - export type BandwidthUploadRateLimit = number; - export type Boolean = boolean; - export interface CachediSCSIVolume { - /** - * The Amazon Resource Name (ARN) of the storage volume. - */ - VolumeARN?: VolumeARN; - /** - * The unique identifier of the volume, e.g. vol-AE4B946D. - */ - VolumeId?: VolumeId; - /** - * One of the VolumeType enumeration values that describes the type of the volume. - */ - VolumeType?: VolumeType; - /** - * One of the VolumeStatus values that indicates the state of the storage volume. - */ - VolumeStatus?: VolumeStatus; - /** - * The size, in bytes, of the volume capacity. - */ - VolumeSizeInBytes?: long; - /** - * Represents the percentage complete if the volume is restoring or bootstrapping that represents the percent of data transferred. This field does not appear in the response if the cached volume is not restoring or bootstrapping. - */ - VolumeProgress?: DoubleObject; - /** - * If the cached volume was created from a snapshot, this field contains the snapshot ID used, e.g. snap-78e22663. Otherwise, this field is not included. - */ - SourceSnapshotId?: SnapshotId; - /** - * An VolumeiSCSIAttributes object that represents a collection of iSCSI attributes for one stored volume. - */ - VolumeiSCSIAttributes?: VolumeiSCSIAttributes; - /** - * The date the volume was created. Volumes created prior to March 28, 2017 don’t have this time stamp. - */ - CreatedDate?: CreatedDate; - } - export type CachediSCSIVolumes = CachediSCSIVolume[]; - export interface CancelArchivalInput { - GatewayARN: GatewayARN; - /** - * The Amazon Resource Name (ARN) of the virtual tape you want to cancel archiving for. - */ - TapeARN: TapeARN; - } - export interface CancelArchivalOutput { - /** - * The Amazon Resource Name (ARN) of the virtual tape for which archiving was canceled. - */ - TapeARN?: TapeARN; - } - export interface CancelRetrievalInput { - GatewayARN: GatewayARN; - /** - * The Amazon Resource Name (ARN) of the virtual tape you want to cancel retrieval for. - */ - TapeARN: TapeARN; - } - export interface CancelRetrievalOutput { - /** - * The Amazon Resource Name (ARN) of the virtual tape for which retrieval was canceled. - */ - TapeARN?: TapeARN; - } - export type ChapCredentials = ChapInfo[]; - export interface ChapInfo { - /** - * The Amazon Resource Name (ARN) of the volume. Valid Values: 50 to 500 lowercase letters, numbers, periods (.), and hyphens (-). - */ - TargetARN?: TargetARN; - /** - * The secret key that the initiator (for example, the Windows client) must provide to participate in mutual CHAP with the target. - */ - SecretToAuthenticateInitiator?: ChapSecret; - /** - * The iSCSI initiator that connects to the target. - */ - InitiatorName?: IqnName; - /** - * The secret key that the target must provide to participate in mutual CHAP with the initiator (e.g. Windows client). - */ - SecretToAuthenticateTarget?: ChapSecret; - } - export type ChapSecret = string; - export type ClientToken = string; - export interface CreateCachediSCSIVolumeInput { - GatewayARN: GatewayARN; - VolumeSizeInBytes: long; - SnapshotId?: SnapshotId; - TargetName: TargetName; - /** - * The ARN for an existing volume. Specifying this ARN makes the new volume into an exact copy of the specified existing volume's latest recovery point. The VolumeSizeInBytes value for this new volume must be equal to or larger than the size of the existing volume, in bytes. - */ - SourceVolumeARN?: VolumeARN; - NetworkInterfaceId: NetworkInterfaceId; - ClientToken: ClientToken; - } - export interface CreateCachediSCSIVolumeOutput { - VolumeARN?: VolumeARN; - TargetARN?: TargetARN; - } - export interface CreateNFSFileShareInput { - /** - * A unique string value that you supply that is used by file gateway to ensure idempotent file share creation. - */ - ClientToken: ClientToken; - /** - * File share default values. Optional. - */ - NFSFileShareDefaults?: NFSFileShareDefaults; - /** - * The Amazon Resource Name (ARN) of the file gateway on which you want to create a file share. - */ - GatewayARN: GatewayARN; - /** - * True to use Amazon S3 server side encryption with your own AWS KMS key, or false to use a key managed by Amazon S3. Optional. - */ - KMSEncrypted?: Boolean; - /** - * The KMS key used for Amazon S3 server side encryption. This value can only be set when KmsEncrypted is true. Optional. - */ - KMSKey?: KMSKey; - /** - * The ARN of the AWS Identity and Access Management (IAM) role that a file gateway assumes when it accesses the underlying storage. - */ - Role: Role; - /** - * The ARN of the backed storage used for storing file data. - */ - LocationARN: LocationARN; - /** - * The default storage class for objects put into an Amazon S3 bucket by file gateway. Possible values are S3_STANDARD or S3_STANDARD_IA. If this field is not populated, the default value S3_STANDARD is used. Optional. - */ - DefaultStorageClass?: StorageClass; - /** - * The list of clients that are allowed to access the file gateway. The list must contain either valid IP addresses or valid CIDR blocks. - */ - ClientList?: FileShareClientList; - /** - * Maps a user to anonymous user. Valid options are the following: "RootSquash" - Only root is mapped to anonymous user. "NoSquash" - No one is mapped to anonymous user. "AllSquash" - Everyone is mapped to anonymous user. - */ - Squash?: Squash; - /** - * Sets the write status of a file share: "true" if the write status is read-only, and otherwise "false". - */ - ReadOnly?: Boolean; - } - export interface CreateNFSFileShareOutput { - /** - * The Amazon Resource Name (ARN) of the newly created file share. - */ - FileShareARN?: FileShareARN; - } - export interface CreateSnapshotFromVolumeRecoveryPointInput { - VolumeARN: VolumeARN; - SnapshotDescription: SnapshotDescription; - } - export interface CreateSnapshotFromVolumeRecoveryPointOutput { - SnapshotId?: SnapshotId; - VolumeARN?: VolumeARN; - VolumeRecoveryPointTime?: string; - } - export interface CreateSnapshotInput { - /** - * The Amazon Resource Name (ARN) of the volume. Use the ListVolumes operation to return a list of gateway volumes. - */ - VolumeARN: VolumeARN; - /** - * Textual description of the snapshot that appears in the Amazon EC2 console, Elastic Block Store snapshots panel in the Description field, and in the AWS Storage Gateway snapshot Details pane, Description field - */ - SnapshotDescription: SnapshotDescription; - } - export interface CreateSnapshotOutput { - /** - * The Amazon Resource Name (ARN) of the volume of which the snapshot was taken. - */ - VolumeARN?: VolumeARN; - /** - * The snapshot ID that is used to refer to the snapshot in future operations such as describing snapshots (Amazon Elastic Compute Cloud API DescribeSnapshots) or creating a volume from a snapshot (CreateStorediSCSIVolume). - */ - SnapshotId?: SnapshotId; - } - export interface CreateStorediSCSIVolumeInput { - GatewayARN: GatewayARN; - /** - * The unique identifier for the gateway local disk that is configured as a stored volume. Use ListLocalDisks to list disk IDs for a gateway. - */ - DiskId: DiskId; - /** - * The snapshot ID (e.g. "snap-1122aabb") of the snapshot to restore as the new stored volume. Specify this field if you want to create the iSCSI storage volume from a snapshot otherwise do not include this field. To list snapshots for your account use DescribeSnapshots in the Amazon Elastic Compute Cloud API Reference. - */ - SnapshotId?: SnapshotId; - /** - * Specify this field as true if you want to preserve the data on the local disk. Otherwise, specifying this field as false creates an empty volume. Valid Values: true, false - */ - PreserveExistingData: boolean; - /** - * The name of the iSCSI target used by initiators to connect to the target and as a suffix for the target ARN. For example, specifying TargetName as myvolume results in the target ARN of arn:aws:storagegateway:us-east-2:111122223333:gateway/sgw-12A3456B/target/iqn.1997-05.com.amazon:myvolume. The target name must be unique across all volumes of a gateway. - */ - TargetName: TargetName; - /** - * The network interface of the gateway on which to expose the iSCSI target. Only IPv4 addresses are accepted. Use DescribeGatewayInformation to get a list of the network interfaces available on a gateway. Valid Values: A valid IP address. - */ - NetworkInterfaceId: NetworkInterfaceId; - } - export interface CreateStorediSCSIVolumeOutput { - /** - * The Amazon Resource Name (ARN) of the configured volume. - */ - VolumeARN?: VolumeARN; - /** - * The size of the volume in bytes. - */ - VolumeSizeInBytes?: long; - /** - * he Amazon Resource Name (ARN) of the volume target that includes the iSCSI name that initiators can use to connect to the target. - */ - TargetARN?: TargetARN; - } - export interface CreateTapeWithBarcodeInput { - /** - * The unique Amazon Resource Name (ARN) that represents the gateway to associate the virtual tape with. Use the ListGateways operation to return a list of gateways for your account and region. - */ - GatewayARN: GatewayARN; - /** - * The size, in bytes, of the virtual tape that you want to create. The size must be aligned by gigabyte (1024*1024*1024 byte). - */ - TapeSizeInBytes: TapeSize; - /** - * The barcode that you want to assign to the tape. Barcodes cannot be reused. This includes barcodes used for tapes that have been deleted. - */ - TapeBarcode: TapeBarcode; - } - export interface CreateTapeWithBarcodeOutput { - /** - * A unique Amazon Resource Name (ARN) that represents the virtual tape that was created. - */ - TapeARN?: TapeARN; - } - export interface CreateTapesInput { - /** - * The unique Amazon Resource Name (ARN) that represents the gateway to associate the virtual tapes with. Use the ListGateways operation to return a list of gateways for your account and region. - */ - GatewayARN: GatewayARN; - /** - * The size, in bytes, of the virtual tapes that you want to create. The size must be aligned by gigabyte (1024*1024*1024 byte). - */ - TapeSizeInBytes: TapeSize; - /** - * A unique identifier that you use to retry a request. If you retry a request, use the same ClientToken you specified in the initial request. Using the same ClientToken prevents creating the tape multiple times. - */ - ClientToken: ClientToken; - /** - * The number of virtual tapes that you want to create. - */ - NumTapesToCreate: NumTapesToCreate; - /** - * A prefix that you append to the barcode of the virtual tape you are creating. This prefix makes the barcode unique. The prefix must be 1 to 4 characters in length and must be one of the uppercase letters from A to Z. - */ - TapeBarcodePrefix: TapeBarcodePrefix; - } - export interface CreateTapesOutput { - /** - * A list of unique Amazon Resource Names (ARNs) that represents the virtual tapes that were created. - */ - TapeARNs?: TapeARNs; - } - export type CreatedDate = Date; - export type DayOfWeek = number; - export interface DeleteBandwidthRateLimitInput { - GatewayARN: GatewayARN; - /** - * One of the BandwidthType values that indicates the gateway bandwidth rate limit to delete. Valid Values: Upload, Download, All. - */ - BandwidthType: BandwidthType; - } - export interface DeleteBandwidthRateLimitOutput { - GatewayARN?: GatewayARN; - } - export interface DeleteChapCredentialsInput { - /** - * The Amazon Resource Name (ARN) of the iSCSI volume target. Use the DescribeStorediSCSIVolumes operation to return to retrieve the TargetARN for specified VolumeARN. - */ - TargetARN: TargetARN; - /** - * The iSCSI initiator that connects to the target. - */ - InitiatorName: IqnName; - } - export interface DeleteChapCredentialsOutput { - /** - * The Amazon Resource Name (ARN) of the target. - */ - TargetARN?: TargetARN; - /** - * The iSCSI initiator that connects to the target. - */ - InitiatorName?: IqnName; - } - export interface DeleteFileShareInput { - /** - * The Amazon Resource Name (ARN) of the file share to be deleted. - */ - FileShareARN: FileShareARN; - /** - * If set to true, deletes a file share immediately and aborts all data uploads to AWS. Otherwise the file share is not deleted until all data is uploaded to AWS. This process aborts the data upload process and the file share enters the FORCE_DELETING status. - */ - ForceDelete?: boolean; - } - export interface DeleteFileShareOutput { - /** - * The Amazon Resource Name (ARN) of the deleted file share. - */ - FileShareARN?: FileShareARN; - } - export interface DeleteGatewayInput { - GatewayARN: GatewayARN; - } - export interface DeleteGatewayOutput { - GatewayARN?: GatewayARN; - } - export interface DeleteSnapshotScheduleInput { - VolumeARN: VolumeARN; - } - export interface DeleteSnapshotScheduleOutput { - VolumeARN?: VolumeARN; - } - export interface DeleteTapeArchiveInput { - /** - * The Amazon Resource Name (ARN) of the virtual tape to delete from the virtual tape shelf (VTS). - */ - TapeARN: TapeARN; - } - export interface DeleteTapeArchiveOutput { - /** - * The Amazon Resource Name (ARN) of the virtual tape that was deleted from the virtual tape shelf (VTS). - */ - TapeARN?: TapeARN; - } - export interface DeleteTapeInput { - /** - * The unique Amazon Resource Name (ARN) of the gateway that the virtual tape to delete is associated with. Use the ListGateways operation to return a list of gateways for your account and region. - */ - GatewayARN: GatewayARN; - /** - * The Amazon Resource Name (ARN) of the virtual tape to delete. - */ - TapeARN: TapeARN; - } - export interface DeleteTapeOutput { - /** - * The Amazon Resource Name (ARN) of the deleted virtual tape. - */ - TapeARN?: TapeARN; - } - export interface DeleteVolumeInput { - /** - * The Amazon Resource Name (ARN) of the volume. Use the ListVolumes operation to return a list of gateway volumes. - */ - VolumeARN: VolumeARN; - } - export interface DeleteVolumeOutput { - /** - * The Amazon Resource Name (ARN) of the storage volume that was deleted. It is the same ARN you provided in the request. - */ - VolumeARN?: VolumeARN; - } - export interface DescribeBandwidthRateLimitInput { - GatewayARN: GatewayARN; - } - export interface DescribeBandwidthRateLimitOutput { - GatewayARN?: GatewayARN; - /** - * The average upload bandwidth rate limit in bits per second. This field does not appear in the response if the upload rate limit is not set. - */ - AverageUploadRateLimitInBitsPerSec?: BandwidthUploadRateLimit; - /** - * The average download bandwidth rate limit in bits per second. This field does not appear in the response if the download rate limit is not set. - */ - AverageDownloadRateLimitInBitsPerSec?: BandwidthDownloadRateLimit; - } - export interface DescribeCacheInput { - GatewayARN: GatewayARN; - } - export interface DescribeCacheOutput { - GatewayARN?: GatewayARN; - DiskIds?: DiskIds; - CacheAllocatedInBytes?: long; - CacheUsedPercentage?: double; - CacheDirtyPercentage?: double; - CacheHitPercentage?: double; - CacheMissPercentage?: double; - } - export interface DescribeCachediSCSIVolumesInput { - VolumeARNs: VolumeARNs; - } - export interface DescribeCachediSCSIVolumesOutput { - /** - * An array of objects where each object contains metadata about one cached volume. - */ - CachediSCSIVolumes?: CachediSCSIVolumes; - } - export interface DescribeChapCredentialsInput { - /** - * The Amazon Resource Name (ARN) of the iSCSI volume target. Use the DescribeStorediSCSIVolumes operation to return to retrieve the TargetARN for specified VolumeARN. - */ - TargetARN: TargetARN; - } - export interface DescribeChapCredentialsOutput { - /** - * An array of ChapInfo objects that represent CHAP credentials. Each object in the array contains CHAP credential information for one target-initiator pair. If no CHAP credentials are set, an empty array is returned. CHAP credential information is provided in a JSON object with the following fields: InitiatorName: The iSCSI initiator that connects to the target. SecretToAuthenticateInitiator: The secret key that the initiator (for example, the Windows client) must provide to participate in mutual CHAP with the target. SecretToAuthenticateTarget: The secret key that the target must provide to participate in mutual CHAP with the initiator (e.g. Windows client). TargetARN: The Amazon Resource Name (ARN) of the storage volume. - */ - ChapCredentials?: ChapCredentials; - } - export interface DescribeGatewayInformationInput { - GatewayARN: GatewayARN; - } - export interface DescribeGatewayInformationOutput { - GatewayARN?: GatewayARN; - /** - * The unique identifier assigned to your gateway during activation. This ID becomes part of the gateway Amazon Resource Name (ARN), which you use as input for other operations. - */ - GatewayId?: GatewayId; - /** - * The name you configured for your gateway. - */ - GatewayName?: string; - /** - * A value that indicates the time zone configured for the gateway. - */ - GatewayTimezone?: GatewayTimezone; - /** - * A value that indicates the operating state of the gateway. - */ - GatewayState?: GatewayState; - /** - * A NetworkInterface array that contains descriptions of the gateway network interfaces. - */ - GatewayNetworkInterfaces?: GatewayNetworkInterfaces; - /** - * The type of the gateway. - */ - GatewayType?: GatewayType; - /** - * The date on which an update to the gateway is available. This date is in the time zone of the gateway. If the gateway is not available for an update this field is not returned in the response. - */ - NextUpdateAvailabilityDate?: NextUpdateAvailabilityDate; - /** - * The date on which the last software update was applied to the gateway. If the gateway has never been updated, this field does not return a value in the response. - */ - LastSoftwareUpdate?: LastSoftwareUpdate; - } - export interface DescribeMaintenanceStartTimeInput { - GatewayARN: GatewayARN; - } - export interface DescribeMaintenanceStartTimeOutput { - GatewayARN?: GatewayARN; - /** - * The hour component of the maintenance start time represented as hh, where hh is the hour (0 to 23). The hour of the day is in the time zone of the gateway. - */ - HourOfDay?: HourOfDay; - /** - * The minute component of the maintenance start time represented as mm, where mm is the minute (0 to 59). The minute of the hour is in the time zone of the gateway. - */ - MinuteOfHour?: MinuteOfHour; - /** - * An ordinal number between 0 and 6 that represents the day of the week, where 0 represents Sunday and 6 represents Saturday. The day of week is in the time zone of the gateway. - */ - DayOfWeek?: DayOfWeek; - Timezone?: GatewayTimezone; - } - export interface DescribeNFSFileSharesInput { - /** - * An array containing the Amazon Resource Name (ARN) of each file share to be described. - */ - FileShareARNList: FileShareARNList; - } - export interface DescribeNFSFileSharesOutput { - /** - * An array containing a description for each requested file share. - */ - NFSFileShareInfoList?: NFSFileShareInfoList; - } - export interface DescribeSnapshotScheduleInput { - /** - * The Amazon Resource Name (ARN) of the volume. Use the ListVolumes operation to return a list of gateway volumes. - */ - VolumeARN: VolumeARN; - } - export interface DescribeSnapshotScheduleOutput { - VolumeARN?: VolumeARN; - StartAt?: HourOfDay; - RecurrenceInHours?: RecurrenceInHours; - Description?: Description; - Timezone?: GatewayTimezone; - } - export interface DescribeStorediSCSIVolumesInput { - /** - * An array of strings where each string represents the Amazon Resource Name (ARN) of a stored volume. All of the specified stored volumes must from the same gateway. Use ListVolumes to get volume ARNs for a gateway. - */ - VolumeARNs: VolumeARNs; - } - export interface DescribeStorediSCSIVolumesOutput { - StorediSCSIVolumes?: StorediSCSIVolumes; - } - export interface DescribeTapeArchivesInput { - /** - * Specifies one or more unique Amazon Resource Names (ARNs) that represent the virtual tapes you want to describe. - */ - TapeARNs?: TapeARNs; - /** - * An opaque string that indicates the position at which to begin describing virtual tapes. - */ - Marker?: Marker; - /** - * Specifies that the number of virtual tapes descried be limited to the specified number. - */ - Limit?: PositiveIntObject; - } - export interface DescribeTapeArchivesOutput { - /** - * An array of virtual tape objects in the virtual tape shelf (VTS). The description includes of the Amazon Resource Name(ARN) of the virtual tapes. The information returned includes the Amazon Resource Names (ARNs) of the tapes, size of the tapes, status of the tapes, progress of the description and tape barcode. - */ - TapeArchives?: TapeArchives; - /** - * An opaque string that indicates the position at which the virtual tapes that were fetched for description ended. Use this marker in your next request to fetch the next set of virtual tapes in the virtual tape shelf (VTS). If there are no more virtual tapes to describe, this field does not appear in the response. - */ - Marker?: Marker; - } - export interface DescribeTapeRecoveryPointsInput { - GatewayARN: GatewayARN; - /** - * An opaque string that indicates the position at which to begin describing the virtual tape recovery points. - */ - Marker?: Marker; - /** - * Specifies that the number of virtual tape recovery points that are described be limited to the specified number. - */ - Limit?: PositiveIntObject; - } - export interface DescribeTapeRecoveryPointsOutput { - GatewayARN?: GatewayARN; - /** - * An array of TapeRecoveryPointInfos that are available for the specified gateway. - */ - TapeRecoveryPointInfos?: TapeRecoveryPointInfos; - /** - * An opaque string that indicates the position at which the virtual tape recovery points that were listed for description ended. Use this marker in your next request to list the next set of virtual tape recovery points in the list. If there are no more recovery points to describe, this field does not appear in the response. - */ - Marker?: Marker; - } - export interface DescribeTapesInput { - GatewayARN: GatewayARN; - /** - * Specifies one or more unique Amazon Resource Names (ARNs) that represent the virtual tapes you want to describe. If this parameter is not specified, Tape gateway returns a description of all virtual tapes associated with the specified gateway. - */ - TapeARNs?: TapeARNs; - /** - * A marker value, obtained in a previous call to DescribeTapes. This marker indicates which page of results to retrieve. If not specified, the first page of results is retrieved. - */ - Marker?: Marker; - /** - * Specifies that the number of virtual tapes described be limited to the specified number. Amazon Web Services may impose its own limit, if this field is not set. - */ - Limit?: PositiveIntObject; - } - export interface DescribeTapesOutput { - /** - * An array of virtual tape descriptions. - */ - Tapes?: Tapes; - /** - * An opaque string which can be used as part of a subsequent DescribeTapes call to retrieve the next page of results. If a response does not contain a marker, then there are no more results to be retrieved. - */ - Marker?: Marker; - } - export interface DescribeUploadBufferInput { - GatewayARN: GatewayARN; - } - export interface DescribeUploadBufferOutput { - GatewayARN?: GatewayARN; - DiskIds?: DiskIds; - UploadBufferUsedInBytes?: long; - UploadBufferAllocatedInBytes?: long; - } - export interface DescribeVTLDevicesInput { - GatewayARN: GatewayARN; - /** - * An array of strings, where each string represents the Amazon Resource Name (ARN) of a VTL device. All of the specified VTL devices must be from the same gateway. If no VTL devices are specified, the result will contain all devices on the specified gateway. - */ - VTLDeviceARNs?: VTLDeviceARNs; - /** - * An opaque string that indicates the position at which to begin describing the VTL devices. - */ - Marker?: Marker; - /** - * Specifies that the number of VTL devices described be limited to the specified number. - */ - Limit?: PositiveIntObject; - } - export interface DescribeVTLDevicesOutput { - GatewayARN?: GatewayARN; - /** - * An array of VTL device objects composed of the Amazon Resource Name(ARN) of the VTL devices. - */ - VTLDevices?: VTLDevices; - /** - * An opaque string that indicates the position at which the VTL devices that were fetched for description ended. Use the marker in your next request to fetch the next set of VTL devices in the list. If there are no more VTL devices to describe, this field does not appear in the response. - */ - Marker?: Marker; - } - export interface DescribeWorkingStorageInput { - GatewayARN: GatewayARN; - } - export interface DescribeWorkingStorageOutput { - GatewayARN?: GatewayARN; - /** - * An array of the gateway's local disk IDs that are configured as working storage. Each local disk ID is specified as a string (minimum length of 1 and maximum length of 300). If no local disks are configured as working storage, then the DiskIds array is empty. - */ - DiskIds?: DiskIds; - /** - * The total working storage in bytes in use by the gateway. If no working storage is configured for the gateway, this field returns 0. - */ - WorkingStorageUsedInBytes?: long; - /** - * The total working storage in bytes allocated for the gateway. If no working storage is configured for the gateway, this field returns 0. - */ - WorkingStorageAllocatedInBytes?: long; - } - export type Description = string; - export type DeviceType = string; - export interface DeviceiSCSIAttributes { - /** - * Specifies the unique Amazon Resource Name(ARN) that encodes the iSCSI qualified name(iqn) of a tape drive or media changer target. - */ - TargetARN?: TargetARN; - /** - * The network interface identifier of the VTL device. - */ - NetworkInterfaceId?: NetworkInterfaceId; - /** - * The port used to communicate with iSCSI VTL device targets. - */ - NetworkInterfacePort?: integer; - /** - * Indicates whether mutual CHAP is enabled for the iSCSI target. - */ - ChapEnabled?: boolean; - } - export interface DisableGatewayInput { - GatewayARN: GatewayARN; - } - export interface DisableGatewayOutput { - /** - * The unique Amazon Resource Name of the disabled gateway. - */ - GatewayARN?: GatewayARN; - } - export interface Disk { - DiskId?: DiskId; - DiskPath?: string; - DiskNode?: string; - DiskStatus?: string; - DiskSizeInBytes?: long; - DiskAllocationType?: DiskAllocationType; - DiskAllocationResource?: string; - } - export type DiskAllocationType = string; - export type DiskId = string; - export type DiskIds = DiskId[]; - export type Disks = Disk[]; - export type DoubleObject = number; - export type ErrorCode = "ActivationKeyExpired"|"ActivationKeyInvalid"|"ActivationKeyNotFound"|"GatewayInternalError"|"GatewayNotConnected"|"GatewayNotFound"|"GatewayProxyNetworkConnectionBusy"|"AuthenticationFailure"|"BandwidthThrottleScheduleNotFound"|"Blocked"|"CannotExportSnapshot"|"ChapCredentialNotFound"|"DiskAlreadyAllocated"|"DiskDoesNotExist"|"DiskSizeGreaterThanVolumeMaxSize"|"DiskSizeLessThanVolumeSize"|"DiskSizeNotGigAligned"|"DuplicateCertificateInfo"|"DuplicateSchedule"|"EndpointNotFound"|"IAMNotSupported"|"InitiatorInvalid"|"InitiatorNotFound"|"InternalError"|"InvalidGateway"|"InvalidEndpoint"|"InvalidParameters"|"InvalidSchedule"|"LocalStorageLimitExceeded"|"LunAlreadyAllocated "|"LunInvalid"|"MaximumContentLengthExceeded"|"MaximumTapeCartridgeCountExceeded"|"MaximumVolumeCountExceeded"|"NetworkConfigurationChanged"|"NoDisksAvailable"|"NotImplemented"|"NotSupported"|"OperationAborted"|"OutdatedGateway"|"ParametersNotImplemented"|"RegionInvalid"|"RequestTimeout"|"ServiceUnavailable"|"SnapshotDeleted"|"SnapshotIdInvalid"|"SnapshotInProgress"|"SnapshotNotFound"|"SnapshotScheduleNotFound"|"StagingAreaFull"|"StorageFailure"|"TapeCartridgeNotFound"|"TargetAlreadyExists"|"TargetInvalid"|"TargetNotFound"|"UnauthorizedOperation"|"VolumeAlreadyExists"|"VolumeIdInvalid"|"VolumeInUse"|"VolumeNotFound"|"VolumeNotReady"|string; - export type FileShareARN = string; - export type FileShareARNList = FileShareARN[]; - export type FileShareClientList = IPV4AddressCIDR[]; - export type FileShareId = string; - export interface FileShareInfo { - FileShareARN?: FileShareARN; - FileShareId?: FileShareId; - FileShareStatus?: FileShareStatus; - GatewayARN?: GatewayARN; - } - export type FileShareInfoList = FileShareInfo[]; - export type FileShareStatus = string; - export type GatewayARN = string; - export type GatewayId = string; - export interface GatewayInfo { - /** - * The unique identifier assigned to your gateway during activation. This ID becomes part of the gateway Amazon Resource Name (ARN), which you use as input for other operations. - */ - GatewayId?: GatewayId; - /** - * The Amazon Resource Name (ARN) of the gateway. Use the ListGateways operation to return a list of gateways for your account and region. - */ - GatewayARN?: GatewayARN; - /** - * The type of the gateway. - */ - GatewayType?: GatewayType; - /** - * The state of the gateway. Valid Values: DISABLED or ACTIVE - */ - GatewayOperationalState?: GatewayOperationalState; - /** - * The name of the gateway. - */ - GatewayName?: string; - } - export type GatewayName = string; - export type GatewayNetworkInterfaces = NetworkInterface[]; - export type GatewayOperationalState = string; - export type GatewayState = string; - export type GatewayTimezone = string; - export type GatewayType = string; - export type Gateways = GatewayInfo[]; - export type HourOfDay = number; - export type IPV4AddressCIDR = string; - export type Initiator = string; - export type Initiators = Initiator[]; - export type IqnName = string; - export type KMSKey = string; - export type LastSoftwareUpdate = string; - export interface ListFileSharesInput { - /** - * The Amazon resource Name (ARN) of the gateway whose file shares you want to list. If this field is not present, all file shares under your account are listed. - */ - GatewayARN?: GatewayARN; - /** - * The maximum number of file shares to return in the response. The value must be an integer with a value greater than zero. Optional. - */ - Limit?: PositiveIntObject; - /** - * Opaque pagination token returned from a previous ListFileShares operation. If present, Marker specifies where to continue the list from after a previous call to ListFileShares. Optional. - */ - Marker?: Marker; - } - export interface ListFileSharesOutput { - /** - * If the request includes Marker, the response returns that value in this field. - */ - Marker?: Marker; - /** - * If a value is present, there are more file shares to return. In a subsequent request, use NextMarker as the value for Marker to retrieve the next set of file shares. - */ - NextMarker?: Marker; - /** - * An array of information about the file gateway's file shares. - */ - FileShareInfoList?: FileShareInfoList; - } - export interface ListGatewaysInput { - /** - * An opaque string that indicates the position at which to begin the returned list of gateways. - */ - Marker?: Marker; - /** - * Specifies that the list of gateways returned be limited to the specified number of items. - */ - Limit?: PositiveIntObject; - } - export interface ListGatewaysOutput { - Gateways?: Gateways; - Marker?: Marker; - } - export interface ListLocalDisksInput { - GatewayARN: GatewayARN; - } - export interface ListLocalDisksOutput { - GatewayARN?: GatewayARN; - Disks?: Disks; - } - export interface ListTagsForResourceInput { - /** - * The Amazon Resource Name (ARN) of the resource for which you want to list tags. - */ - ResourceARN: ResourceARN; - /** - * An opaque string that indicates the position at which to begin returning the list of tags. - */ - Marker?: Marker; - /** - * Specifies that the list of tags returned be limited to the specified number of items. - */ - Limit?: PositiveIntObject; - } - export interface ListTagsForResourceOutput { - /** - * he Amazon Resource Name (ARN) of the resource for which you want to list tags. - */ - ResourceARN?: ResourceARN; - /** - * An opaque string that indicates the position at which to stop returning the list of tags. - */ - Marker?: Marker; - /** - * An array that contains the tags for the specified resource. - */ - Tags?: Tags; - } - export interface ListTapesInput { - TapeARNs?: TapeARNs; - /** - * A string that indicates the position at which to begin the returned list of tapes. - */ - Marker?: Marker; - /** - * An optional number limit for the tapes in the list returned by this call. - */ - Limit?: PositiveIntObject; - } - export interface ListTapesOutput { - TapeInfos?: TapeInfos; - /** - * A string that indicates the position at which to begin returning the next list of tapes. Use the marker in your next request to continue pagination of tapes. If there are no more tapes to list, this element does not appear in the response body. - */ - Marker?: Marker; - } - export interface ListVolumeInitiatorsInput { - /** - * The Amazon Resource Name (ARN) of the volume. Use the ListVolumes operation to return a list of gateway volumes for the gateway. - */ - VolumeARN: VolumeARN; - } - export interface ListVolumeInitiatorsOutput { - /** - * The host names and port numbers of all iSCSI initiators that are connected to the gateway. - */ - Initiators?: Initiators; - } - export interface ListVolumeRecoveryPointsInput { - GatewayARN: GatewayARN; - } - export interface ListVolumeRecoveryPointsOutput { - GatewayARN?: GatewayARN; - VolumeRecoveryPointInfos?: VolumeRecoveryPointInfos; - } - export interface ListVolumesInput { - GatewayARN?: GatewayARN; - /** - * A string that indicates the position at which to begin the returned list of volumes. Obtain the marker from the response of a previous List iSCSI Volumes request. - */ - Marker?: Marker; - /** - * Specifies that the list of volumes returned be limited to the specified number of items. - */ - Limit?: PositiveIntObject; - } - export interface ListVolumesOutput { - GatewayARN?: GatewayARN; - Marker?: Marker; - VolumeInfos?: VolumeInfos; - } - export type LocalConsolePassword = string; - export type LocationARN = string; - export type Marker = string; - export type MediumChangerType = string; - export type MinuteOfHour = number; - export interface NFSFileShareDefaults { - /** - * The Unix file mode in the form "nnnn". For example, "0666" represents the default file mode inside the file share. The default value is 0666. - */ - FileMode?: PermissionMode; - /** - * The Unix directory mode in the form "nnnn". For example, "0666" represents the default access mode for all directories inside the file share. The default value is 0777. - */ - DirectoryMode?: PermissionMode; - /** - * The default group ID for the file share (unless the files have another group ID specified). The default value is nfsnobody. - */ - GroupId?: PermissionId; - /** - * The default owner ID for files in the file share (unless the files have another owner ID specified). The default value is nfsnobody. - */ - OwnerId?: PermissionId; - } - export interface NFSFileShareInfo { - NFSFileShareDefaults?: NFSFileShareDefaults; - FileShareARN?: FileShareARN; - FileShareId?: FileShareId; - FileShareStatus?: FileShareStatus; - GatewayARN?: GatewayARN; - /** - * True to use Amazon S3 server side encryption with your own KMS key, or false to use a key managed by Amazon S3. Optional. - */ - KMSEncrypted?: boolean; - KMSKey?: KMSKey; - Path?: Path; - Role?: Role; - LocationARN?: LocationARN; - /** - * The default storage class for objects put into an Amazon S3 bucket by file gateway. Possible values are S3_STANDARD or S3_STANDARD_IA. If this field is not populated, the default value S3_STANDARD is used. Optional. - */ - DefaultStorageClass?: StorageClass; - ClientList?: FileShareClientList; - Squash?: Squash; - ReadOnly?: Boolean; - } - export type NFSFileShareInfoList = NFSFileShareInfo[]; - export interface NetworkInterface { - /** - * The Internet Protocol version 4 (IPv4) address of the interface. - */ - Ipv4Address?: string; - /** - * The Media Access Control (MAC) address of the interface. This is currently unsupported and will not be returned in output. - */ - MacAddress?: string; - /** - * The Internet Protocol version 6 (IPv6) address of the interface. Currently not supported. - */ - Ipv6Address?: string; - } - export type NetworkInterfaceId = string; - export type NextUpdateAvailabilityDate = string; - export type NumTapesToCreate = number; - export type Path = string; - export type PermissionId = number; - export type PermissionMode = string; - export type PositiveIntObject = number; - export type RecurrenceInHours = number; - export interface RefreshCacheInput { - FileShareARN: FileShareARN; - } - export interface RefreshCacheOutput { - FileShareARN?: FileShareARN; - } - export type RegionId = string; - export interface RemoveTagsFromResourceInput { - /** - * The Amazon Resource Name (ARN) of the resource you want to remove the tags from. - */ - ResourceARN: ResourceARN; - /** - * The keys of the tags you want to remove from the specified resource. A tag is composed of a key/value pair. - */ - TagKeys: TagKeys; - } - export interface RemoveTagsFromResourceOutput { - /** - * The Amazon Resource Name (ARN) of the resource that the tags were removed from. - */ - ResourceARN?: ResourceARN; - } - export interface ResetCacheInput { - GatewayARN: GatewayARN; - } - export interface ResetCacheOutput { - GatewayARN?: GatewayARN; - } - export type ResourceARN = string; - export interface RetrieveTapeArchiveInput { - /** - * The Amazon Resource Name (ARN) of the virtual tape you want to retrieve from the virtual tape shelf (VTS). - */ - TapeARN: TapeARN; - /** - * The Amazon Resource Name (ARN) of the gateway you want to retrieve the virtual tape to. Use the ListGateways operation to return a list of gateways for your account and region. You retrieve archived virtual tapes to only one gateway and the gateway must be a tape gateway. - */ - GatewayARN: GatewayARN; - } - export interface RetrieveTapeArchiveOutput { - /** - * The Amazon Resource Name (ARN) of the retrieved virtual tape. - */ - TapeARN?: TapeARN; - } - export interface RetrieveTapeRecoveryPointInput { - /** - * The Amazon Resource Name (ARN) of the virtual tape for which you want to retrieve the recovery point. - */ - TapeARN: TapeARN; - GatewayARN: GatewayARN; - } - export interface RetrieveTapeRecoveryPointOutput { - /** - * The Amazon Resource Name (ARN) of the virtual tape for which the recovery point was retrieved. - */ - TapeARN?: TapeARN; - } - export type Role = string; - export interface SetLocalConsolePasswordInput { - GatewayARN: GatewayARN; - /** - * The password you want to set for your VM local console. - */ - LocalConsolePassword: LocalConsolePassword; - } - export interface SetLocalConsolePasswordOutput { - GatewayARN?: GatewayARN; - } - export interface ShutdownGatewayInput { - GatewayARN: GatewayARN; - } - export interface ShutdownGatewayOutput { - GatewayARN?: GatewayARN; - } - export type SnapshotDescription = string; - export type SnapshotId = string; - export type Squash = string; - export interface StartGatewayInput { - GatewayARN: GatewayARN; - } - export interface StartGatewayOutput { - GatewayARN?: GatewayARN; - } - export type StorageClass = string; - export interface StorageGatewayError { - /** - * Additional information about the error. - */ - errorCode?: ErrorCode; - /** - * Human-readable text that provides detail about the error that occurred. - */ - errorDetails?: errorDetails; - } - export interface StorediSCSIVolume { - /** - * The Amazon Resource Name (ARN) of the storage volume. - */ - VolumeARN?: VolumeARN; - /** - * The unique identifier of the volume, e.g. vol-AE4B946D. - */ - VolumeId?: VolumeId; - /** - * One of the VolumeType enumeration values describing the type of the volume. - */ - VolumeType?: VolumeType; - /** - * One of the VolumeStatus values that indicates the state of the storage volume. - */ - VolumeStatus?: VolumeStatus; - /** - * The size of the volume in bytes. - */ - VolumeSizeInBytes?: long; - /** - * Represents the percentage complete if the volume is restoring or bootstrapping that represents the percent of data transferred. This field does not appear in the response if the stored volume is not restoring or bootstrapping. - */ - VolumeProgress?: DoubleObject; - /** - * The ID of the local disk that was specified in the CreateStorediSCSIVolume operation. - */ - VolumeDiskId?: DiskId; - /** - * If the stored volume was created from a snapshot, this field contains the snapshot ID used, e.g. snap-78e22663. Otherwise, this field is not included. - */ - SourceSnapshotId?: SnapshotId; - /** - * Indicates if when the stored volume was created, existing data on the underlying local disk was preserved. Valid Values: true, false - */ - PreservedExistingData?: boolean; - /** - * An VolumeiSCSIAttributes object that represents a collection of iSCSI attributes for one stored volume. - */ - VolumeiSCSIAttributes?: VolumeiSCSIAttributes; - /** - * The date the volume was created. Volumes created prior to March 28, 2017 don’t have this time stamp. - */ - CreatedDate?: CreatedDate; - } - export type StorediSCSIVolumes = StorediSCSIVolume[]; - export interface Tag { - Key: TagKey; - Value: TagValue; - } - export type TagKey = string; - export type TagKeys = TagKey[]; - export type TagValue = string; - export type Tags = Tag[]; - export interface Tape { - /** - * The Amazon Resource Name (ARN) of the virtual tape. - */ - TapeARN?: TapeARN; - /** - * The barcode that identifies a specific virtual tape. - */ - TapeBarcode?: TapeBarcode; - /** - * The date the virtual tape was created. - */ - TapeCreatedDate?: Time; - /** - * The size, in bytes, of the virtual tape capacity. - */ - TapeSizeInBytes?: TapeSize; - /** - * The current state of the virtual tape. - */ - TapeStatus?: TapeStatus; - /** - * The virtual tape library (VTL) device that the virtual tape is associated with. - */ - VTLDevice?: VTLDeviceARN; - /** - * For archiving virtual tapes, indicates how much data remains to be uploaded before archiving is complete. Range: 0 (not started) to 100 (complete). - */ - Progress?: DoubleObject; - /** - * The size, in bytes, of data written to the virtual tape. This value is not available for tapes created prior to May 13, 2015. - */ - TapeUsedInBytes?: TapeUsage; - } - export type TapeARN = string; - export type TapeARNs = TapeARN[]; - export interface TapeArchive { - /** - * The Amazon Resource Name (ARN) of an archived virtual tape. - */ - TapeARN?: TapeARN; - /** - * The barcode that identifies the archived virtual tape. - */ - TapeBarcode?: TapeBarcode; - TapeCreatedDate?: Time; - /** - * The size, in bytes, of the archived virtual tape. - */ - TapeSizeInBytes?: TapeSize; - /** - * The time that the archiving of the virtual tape was completed. The string format of the completion time is in the ISO8601 extended YYYY-MM-DD'T'HH:MM:SS'Z' format. - */ - CompletionTime?: Time; - /** - * The Amazon Resource Name (ARN) of the tape gateway that the virtual tape is being retrieved to. The virtual tape is retrieved from the virtual tape shelf (VTS). - */ - RetrievedTo?: GatewayARN; - /** - * The current state of the archived virtual tape. - */ - TapeStatus?: TapeArchiveStatus; - /** - * The size, in bytes, of data written to the virtual tape. This value is not available for tapes created prior to May 13, 2015. - */ - TapeUsedInBytes?: TapeUsage; - } - export type TapeArchiveStatus = string; - export type TapeArchives = TapeArchive[]; - export type TapeBarcode = string; - export type TapeBarcodePrefix = string; - export type TapeDriveType = string; - export interface TapeInfo { - /** - * The Amazon Resource Name (ARN) of a virtual tape. - */ - TapeARN?: TapeARN; - /** - * The barcode that identifies a specific virtual tape. - */ - TapeBarcode?: TapeBarcode; - /** - * The size, in bytes, of a virtual tape. - */ - TapeSizeInBytes?: TapeSize; - /** - * The status of the tape. - */ - TapeStatus?: TapeStatus; - /** - * The Amazon Resource Name (ARN) of the gateway. Use the ListGateways operation to return a list of gateways for your account and region. - */ - GatewayARN?: GatewayARN; - } - export type TapeInfos = TapeInfo[]; - export interface TapeRecoveryPointInfo { - /** - * The Amazon Resource Name (ARN) of the virtual tape. - */ - TapeARN?: TapeARN; - /** - * The time when the point-in-time view of the virtual tape was replicated for later recovery. The string format of the tape recovery point time is in the ISO8601 extended YYYY-MM-DD'T'HH:MM:SS'Z' format. - */ - TapeRecoveryPointTime?: Time; - /** - * The size, in bytes, of the virtual tapes to recover. - */ - TapeSizeInBytes?: TapeSize; - TapeStatus?: TapeRecoveryPointStatus; - } - export type TapeRecoveryPointInfos = TapeRecoveryPointInfo[]; - export type TapeRecoveryPointStatus = string; - export type TapeSize = number; - export type TapeStatus = string; - export type TapeUsage = number; - export type Tapes = Tape[]; - export type TargetARN = string; - export type TargetName = string; - export type Time = Date; - export interface UpdateBandwidthRateLimitInput { - GatewayARN: GatewayARN; - /** - * The average upload bandwidth rate limit in bits per second. - */ - AverageUploadRateLimitInBitsPerSec?: BandwidthUploadRateLimit; - /** - * The average download bandwidth rate limit in bits per second. - */ - AverageDownloadRateLimitInBitsPerSec?: BandwidthDownloadRateLimit; - } - export interface UpdateBandwidthRateLimitOutput { - GatewayARN?: GatewayARN; - } - export interface UpdateChapCredentialsInput { - /** - * The Amazon Resource Name (ARN) of the iSCSI volume target. Use the DescribeStorediSCSIVolumes operation to return the TargetARN for specified VolumeARN. - */ - TargetARN: TargetARN; - /** - * The secret key that the initiator (for example, the Windows client) must provide to participate in mutual CHAP with the target. The secret key must be between 12 and 16 bytes when encoded in UTF-8. - */ - SecretToAuthenticateInitiator: ChapSecret; - /** - * The iSCSI initiator that connects to the target. - */ - InitiatorName: IqnName; - /** - * The secret key that the target must provide to participate in mutual CHAP with the initiator (e.g. Windows client). Byte constraints: Minimum bytes of 12. Maximum bytes of 16. The secret key must be between 12 and 16 bytes when encoded in UTF-8. - */ - SecretToAuthenticateTarget?: ChapSecret; - } - export interface UpdateChapCredentialsOutput { - /** - * The Amazon Resource Name (ARN) of the target. This is the same target specified in the request. - */ - TargetARN?: TargetARN; - /** - * The iSCSI initiator that connects to the target. This is the same initiator name specified in the request. - */ - InitiatorName?: IqnName; - } - export interface UpdateGatewayInformationInput { - GatewayARN: GatewayARN; - GatewayName?: GatewayName; - GatewayTimezone?: GatewayTimezone; - } - export interface UpdateGatewayInformationOutput { - GatewayARN?: GatewayARN; - GatewayName?: string; - } - export interface UpdateGatewaySoftwareNowInput { - GatewayARN: GatewayARN; - } - export interface UpdateGatewaySoftwareNowOutput { - GatewayARN?: GatewayARN; - } - export interface UpdateMaintenanceStartTimeInput { - GatewayARN: GatewayARN; - /** - * The hour component of the maintenance start time represented as hh, where hh is the hour (00 to 23). The hour of the day is in the time zone of the gateway. - */ - HourOfDay: HourOfDay; - /** - * The minute component of the maintenance start time represented as mm, where mm is the minute (00 to 59). The minute of the hour is in the time zone of the gateway. - */ - MinuteOfHour: MinuteOfHour; - /** - * The maintenance start time day of the week represented as an ordinal number from 0 to 6, where 0 represents Sunday and 6 Saturday. - */ - DayOfWeek: DayOfWeek; - } - export interface UpdateMaintenanceStartTimeOutput { - GatewayARN?: GatewayARN; - } - export interface UpdateNFSFileShareInput { - /** - * The Amazon Resource Name (ARN) of the file share to be updated. - */ - FileShareARN: FileShareARN; - /** - * True to use Amazon S3 server side encryption with your own AWS KMS key, or false to use a key managed by Amazon S3. Optional. - */ - KMSEncrypted?: Boolean; - /** - * The KMS key used for Amazon S3 server side encryption. This value can only be set when KmsEncrypted is true. Optional. - */ - KMSKey?: KMSKey; - /** - * The default values for the file share. Optional. - */ - NFSFileShareDefaults?: NFSFileShareDefaults; - /** - * The default storage class for objects put into an Amazon S3 bucket by a file gateway. Possible values are S3_STANDARD or S3_STANDARD_IA. If this field is not populated, the default value S3_STANDARD is used. Optional. - */ - DefaultStorageClass?: StorageClass; - /** - * The list of clients that are allowed to access the file gateway. The list must contain either valid IP addresses or valid CIDR blocks. - */ - ClientList?: FileShareClientList; - /** - * The user mapped to anonymous user. Valid options are the following: "RootSquash" - Only root is mapped to anonymous user. "NoSquash" - No one is mapped to anonymous user "AllSquash" - Everyone is mapped to anonymous user. - */ - Squash?: Squash; - /** - * Sets the write status of a file share: "true" if the write status is read-only, otherwise "false". - */ - ReadOnly?: Boolean; - } - export interface UpdateNFSFileShareOutput { - /** - * The Amazon Resource Name (ARN) of the updated file share. - */ - FileShareARN?: FileShareARN; - } - export interface UpdateSnapshotScheduleInput { - /** - * The Amazon Resource Name (ARN) of the volume. Use the ListVolumes operation to return a list of gateway volumes. - */ - VolumeARN: VolumeARN; - /** - * The hour of the day at which the snapshot schedule begins represented as hh, where hh is the hour (0 to 23). The hour of the day is in the time zone of the gateway. - */ - StartAt: HourOfDay; - /** - * Frequency of snapshots. Specify the number of hours between snapshots. - */ - RecurrenceInHours: RecurrenceInHours; - /** - * Optional description of the snapshot that overwrites the existing description. - */ - Description?: Description; - } - export interface UpdateSnapshotScheduleOutput { - /** - * - */ - VolumeARN?: VolumeARN; - } - export interface UpdateVTLDeviceTypeInput { - /** - * The Amazon Resource Name (ARN) of the medium changer you want to select. - */ - VTLDeviceARN: VTLDeviceARN; - /** - * The type of medium changer you want to select. Valid Values: "STK-L700", "AWS-Gateway-VTL" - */ - DeviceType: DeviceType; - } - export interface UpdateVTLDeviceTypeOutput { - /** - * The Amazon Resource Name (ARN) of the medium changer you have selected. - */ - VTLDeviceARN?: VTLDeviceARN; - } - export interface VTLDevice { - /** - * Specifies the unique Amazon Resource Name (ARN) of the device (tape drive or media changer). - */ - VTLDeviceARN?: VTLDeviceARN; - VTLDeviceType?: VTLDeviceType; - VTLDeviceVendor?: VTLDeviceVendor; - VTLDeviceProductIdentifier?: VTLDeviceProductIdentifier; - /** - * A list of iSCSI information about a VTL device. - */ - DeviceiSCSIAttributes?: DeviceiSCSIAttributes; - } - export type VTLDeviceARN = string; - export type VTLDeviceARNs = VTLDeviceARN[]; - export type VTLDeviceProductIdentifier = string; - export type VTLDeviceType = string; - export type VTLDeviceVendor = string; - export type VTLDevices = VTLDevice[]; - export type VolumeARN = string; - export type VolumeARNs = VolumeARN[]; - export type VolumeId = string; - export interface VolumeInfo { - /** - * The Amazon Resource Name (ARN) for the storage volume. For example, the following is a valid ARN: arn:aws:storagegateway:us-east-2:111122223333:gateway/sgw-12A3456B/volume/vol-1122AABB Valid Values: 50 to 500 lowercase letters, numbers, periods (.), and hyphens (-). - */ - VolumeARN?: VolumeARN; - /** - * The unique identifier assigned to the volume. This ID becomes part of the volume Amazon Resource Name (ARN), which you use as input for other operations. Valid Values: 50 to 500 lowercase letters, numbers, periods (.), and hyphens (-). - */ - VolumeId?: VolumeId; - GatewayARN?: GatewayARN; - /** - * The unique identifier assigned to your gateway during activation. This ID becomes part of the gateway Amazon Resource Name (ARN), which you use as input for other operations. Valid Values: 50 to 500 lowercase letters, numbers, periods (.), and hyphens (-). - */ - GatewayId?: GatewayId; - VolumeType?: VolumeType; - /** - * The size of the volume in bytes. Valid Values: 50 to 500 lowercase letters, numbers, periods (.), and hyphens (-). - */ - VolumeSizeInBytes?: long; - } - export type VolumeInfos = VolumeInfo[]; - export interface VolumeRecoveryPointInfo { - VolumeARN?: VolumeARN; - VolumeSizeInBytes?: long; - VolumeUsageInBytes?: long; - VolumeRecoveryPointTime?: string; - } - export type VolumeRecoveryPointInfos = VolumeRecoveryPointInfo[]; - export type VolumeStatus = string; - export type VolumeType = string; - export interface VolumeiSCSIAttributes { - /** - * The Amazon Resource Name (ARN) of the volume target. - */ - TargetARN?: TargetARN; - /** - * The network interface identifier. - */ - NetworkInterfaceId?: NetworkInterfaceId; - /** - * The port used to communicate with iSCSI targets. - */ - NetworkInterfacePort?: integer; - /** - * The logical disk number. - */ - LunNumber?: PositiveIntObject; - /** - * Indicates whether mutual CHAP is enabled for the iSCSI target. - */ - ChapEnabled?: boolean; - } - export type double = number; - export type errorDetails = {[key: string]: string}; - export type integer = number; - export type long = number; - /** - * A string in YYYY-MM-DD format that represents the latest possible API version that can be used in this service. Specify 'latest' to use the latest possible version. - */ - export type apiVersion = "2013-06-30"|"latest"|string; - export interface ClientApiVersions { - /** - * A string in YYYY-MM-DD format that represents the latest possible API version that can be used in this service. Specify 'latest' to use the latest possible version. - */ - apiVersion?: apiVersion; - } - export type ClientConfiguration = ServiceConfigurationOptions & ClientApiVersions; - /** - * Contains interfaces for use with the StorageGateway client. - */ - export import Types = StorageGateway; -} -export = StorageGateway; diff --git a/workshops/monte-carlo-on-ec2-spot-fleet/src/web/node_modules/aws-sdk/clients/storagegateway.js b/workshops/monte-carlo-on-ec2-spot-fleet/src/web/node_modules/aws-sdk/clients/storagegateway.js deleted file mode 100644 index 62168c08..00000000 --- a/workshops/monte-carlo-on-ec2-spot-fleet/src/web/node_modules/aws-sdk/clients/storagegateway.js +++ /dev/null @@ -1,18 +0,0 @@ -require('../lib/node_loader'); -var AWS = require('../lib/core'); -var Service = AWS.Service; -var apiLoader = AWS.apiLoader; - -apiLoader.services['storagegateway'] = {}; -AWS.StorageGateway = Service.defineService('storagegateway', ['2013-06-30']); -Object.defineProperty(apiLoader.services['storagegateway'], '2013-06-30', { - get: function get() { - var model = require('../apis/storagegateway-2013-06-30.min.json'); - model.paginators = require('../apis/storagegateway-2013-06-30.paginators.json').pagination; - return model; - }, - enumerable: true, - configurable: true -}); - -module.exports = AWS.StorageGateway; diff --git a/workshops/monte-carlo-on-ec2-spot-fleet/src/web/node_modules/aws-sdk/clients/sts.d.ts b/workshops/monte-carlo-on-ec2-spot-fleet/src/web/node_modules/aws-sdk/clients/sts.d.ts deleted file mode 100644 index cdddcf35..00000000 --- a/workshops/monte-carlo-on-ec2-spot-fleet/src/web/node_modules/aws-sdk/clients/sts.d.ts +++ /dev/null @@ -1,391 +0,0 @@ -import {Request} from '../lib/request'; -import {Response} from '../lib/response'; -import {AWSError} from '../lib/error'; -import {Service} from '../lib/service'; -import {ServiceConfigurationOptions} from '../lib/service'; -import {ConfigBase as Config} from '../lib/config'; -interface Blob {} -declare class STS extends Service { - /** - * Constructs a service object. This object has one method for each API operation. - */ - constructor(options?: STS.Types.ClientConfiguration) - config: Config & STS.Types.ClientConfiguration; - /** - * Returns a set of temporary security credentials (consisting of an access key ID, a secret access key, and a security token) that you can use to access AWS resources that you might not normally have access to. Typically, you use AssumeRole for cross-account access or federation. For a comparison of AssumeRole with the other APIs that produce temporary credentials, see Requesting Temporary Security Credentials and Comparing the AWS STS APIs in the IAM User Guide. Important: You cannot call AssumeRole by using AWS root account credentials; access is denied. You must use credentials for an IAM user or an IAM role to call AssumeRole. For cross-account access, imagine that you own multiple accounts and need to access resources in each account. You could create long-term credentials in each account to access those resources. However, managing all those credentials and remembering which one can access which account can be time consuming. Instead, you can create one set of long-term credentials in one account and then use temporary security credentials to access all the other accounts by assuming roles in those accounts. For more information about roles, see IAM Roles (Delegation and Federation) in the IAM User Guide. For federation, you can, for example, grant single sign-on access to the AWS Management Console. If you already have an identity and authentication system in your corporate network, you don't have to recreate user identities in AWS in order to grant those user identities access to AWS. Instead, after a user has been authenticated, you call AssumeRole (and specify the role with the appropriate permissions) to get temporary security credentials for that user. With those temporary security credentials, you construct a sign-in URL that users can use to access the console. For more information, see Common Scenarios for Temporary Credentials in the IAM User Guide. The temporary security credentials are valid for the duration that you specified when calling AssumeRole, which can be from 900 seconds (15 minutes) to a maximum of 3600 seconds (1 hour). The default is 1 hour. The temporary security credentials created by AssumeRole can be used to make API calls to any AWS service with the following exception: you cannot call the STS service's GetFederationToken or GetSessionToken APIs. Optionally, you can pass an IAM access policy to this operation. If you choose not to pass a policy, the temporary security credentials that are returned by the operation have the permissions that are defined in the access policy of the role that is being assumed. If you pass a policy to this operation, the temporary security credentials that are returned by the operation have the permissions that are allowed by both the access policy of the role that is being assumed, and the policy that you pass. This gives you a way to further restrict the permissions for the resulting temporary security credentials. You cannot use the passed policy to grant permissions that are in excess of those allowed by the access policy of the role that is being assumed. For more information, see Permissions for AssumeRole, AssumeRoleWithSAML, and AssumeRoleWithWebIdentity in the IAM User Guide. To assume a role, your AWS account must be trusted by the role. The trust relationship is defined in the role's trust policy when the role is created. That trust policy states which accounts are allowed to delegate access to this account's role. The user who wants to access the role must also have permissions delegated from the role's administrator. If the user is in a different account than the role, then the user's administrator must attach a policy that allows the user to call AssumeRole on the ARN of the role in the other account. If the user is in the same account as the role, then you can either attach a policy to the user (identical to the previous different account user), or you can add the user as a principal directly in the role's trust policy Using MFA with AssumeRole You can optionally include multi-factor authentication (MFA) information when you call AssumeRole. This is useful for cross-account scenarios in which you want to make sure that the user who is assuming the role has been authenticated using an AWS MFA device. In that scenario, the trust policy of the role being assumed includes a condition that tests for MFA authentication; if the caller does not include valid MFA information, the request to assume the role is denied. The condition in a trust policy that tests for MFA authentication might look like the following example. "Condition": {"Bool": {"aws:MultiFactorAuthPresent": true}} For more information, see Configuring MFA-Protected API Access in the IAM User Guide guide. To use MFA with AssumeRole, you pass values for the SerialNumber and TokenCode parameters. The SerialNumber value identifies the user's hardware or virtual MFA device. The TokenCode is the time-based one-time password (TOTP) that the MFA devices produces. - */ - assumeRole(params: STS.Types.AssumeRoleRequest, callback?: (err: AWSError, data: STS.Types.AssumeRoleResponse) => void): Request; - /** - * Returns a set of temporary security credentials (consisting of an access key ID, a secret access key, and a security token) that you can use to access AWS resources that you might not normally have access to. Typically, you use AssumeRole for cross-account access or federation. For a comparison of AssumeRole with the other APIs that produce temporary credentials, see Requesting Temporary Security Credentials and Comparing the AWS STS APIs in the IAM User Guide. Important: You cannot call AssumeRole by using AWS root account credentials; access is denied. You must use credentials for an IAM user or an IAM role to call AssumeRole. For cross-account access, imagine that you own multiple accounts and need to access resources in each account. You could create long-term credentials in each account to access those resources. However, managing all those credentials and remembering which one can access which account can be time consuming. Instead, you can create one set of long-term credentials in one account and then use temporary security credentials to access all the other accounts by assuming roles in those accounts. For more information about roles, see IAM Roles (Delegation and Federation) in the IAM User Guide. For federation, you can, for example, grant single sign-on access to the AWS Management Console. If you already have an identity and authentication system in your corporate network, you don't have to recreate user identities in AWS in order to grant those user identities access to AWS. Instead, after a user has been authenticated, you call AssumeRole (and specify the role with the appropriate permissions) to get temporary security credentials for that user. With those temporary security credentials, you construct a sign-in URL that users can use to access the console. For more information, see Common Scenarios for Temporary Credentials in the IAM User Guide. The temporary security credentials are valid for the duration that you specified when calling AssumeRole, which can be from 900 seconds (15 minutes) to a maximum of 3600 seconds (1 hour). The default is 1 hour. The temporary security credentials created by AssumeRole can be used to make API calls to any AWS service with the following exception: you cannot call the STS service's GetFederationToken or GetSessionToken APIs. Optionally, you can pass an IAM access policy to this operation. If you choose not to pass a policy, the temporary security credentials that are returned by the operation have the permissions that are defined in the access policy of the role that is being assumed. If you pass a policy to this operation, the temporary security credentials that are returned by the operation have the permissions that are allowed by both the access policy of the role that is being assumed, and the policy that you pass. This gives you a way to further restrict the permissions for the resulting temporary security credentials. You cannot use the passed policy to grant permissions that are in excess of those allowed by the access policy of the role that is being assumed. For more information, see Permissions for AssumeRole, AssumeRoleWithSAML, and AssumeRoleWithWebIdentity in the IAM User Guide. To assume a role, your AWS account must be trusted by the role. The trust relationship is defined in the role's trust policy when the role is created. That trust policy states which accounts are allowed to delegate access to this account's role. The user who wants to access the role must also have permissions delegated from the role's administrator. If the user is in a different account than the role, then the user's administrator must attach a policy that allows the user to call AssumeRole on the ARN of the role in the other account. If the user is in the same account as the role, then you can either attach a policy to the user (identical to the previous different account user), or you can add the user as a principal directly in the role's trust policy Using MFA with AssumeRole You can optionally include multi-factor authentication (MFA) information when you call AssumeRole. This is useful for cross-account scenarios in which you want to make sure that the user who is assuming the role has been authenticated using an AWS MFA device. In that scenario, the trust policy of the role being assumed includes a condition that tests for MFA authentication; if the caller does not include valid MFA information, the request to assume the role is denied. The condition in a trust policy that tests for MFA authentication might look like the following example. "Condition": {"Bool": {"aws:MultiFactorAuthPresent": true}} For more information, see Configuring MFA-Protected API Access in the IAM User Guide guide. To use MFA with AssumeRole, you pass values for the SerialNumber and TokenCode parameters. The SerialNumber value identifies the user's hardware or virtual MFA device. The TokenCode is the time-based one-time password (TOTP) that the MFA devices produces. - */ - assumeRole(callback?: (err: AWSError, data: STS.Types.AssumeRoleResponse) => void): Request; - /** - * Returns a set of temporary security credentials for users who have been authenticated via a SAML authentication response. This operation provides a mechanism for tying an enterprise identity store or directory to role-based AWS access without user-specific credentials or configuration. For a comparison of AssumeRoleWithSAML with the other APIs that produce temporary credentials, see Requesting Temporary Security Credentials and Comparing the AWS STS APIs in the IAM User Guide. The temporary security credentials returned by this operation consist of an access key ID, a secret access key, and a security token. Applications can use these temporary security credentials to sign calls to AWS services. The temporary security credentials are valid for the duration that you specified when calling AssumeRole, or until the time specified in the SAML authentication response's SessionNotOnOrAfter value, whichever is shorter. The duration can be from 900 seconds (15 minutes) to a maximum of 3600 seconds (1 hour). The default is 1 hour. The temporary security credentials created by AssumeRoleWithSAML can be used to make API calls to any AWS service with the following exception: you cannot call the STS service's GetFederationToken or GetSessionToken APIs. Optionally, you can pass an IAM access policy to this operation. If you choose not to pass a policy, the temporary security credentials that are returned by the operation have the permissions that are defined in the access policy of the role that is being assumed. If you pass a policy to this operation, the temporary security credentials that are returned by the operation have the permissions that are allowed by the intersection of both the access policy of the role that is being assumed, and the policy that you pass. This means that both policies must grant the permission for the action to be allowed. This gives you a way to further restrict the permissions for the resulting temporary security credentials. You cannot use the passed policy to grant permissions that are in excess of those allowed by the access policy of the role that is being assumed. For more information, see Permissions for AssumeRole, AssumeRoleWithSAML, and AssumeRoleWithWebIdentity in the IAM User Guide. Before your application can call AssumeRoleWithSAML, you must configure your SAML identity provider (IdP) to issue the claims required by AWS. Additionally, you must use AWS Identity and Access Management (IAM) to create a SAML provider entity in your AWS account that represents your identity provider, and create an IAM role that specifies this SAML provider in its trust policy. Calling AssumeRoleWithSAML does not require the use of AWS security credentials. The identity of the caller is validated by using keys in the metadata document that is uploaded for the SAML provider entity for your identity provider. Calling AssumeRoleWithSAML can result in an entry in your AWS CloudTrail logs. The entry includes the value in the NameID element of the SAML assertion. We recommend that you use a NameIDType that is not associated with any personally identifiable information (PII). For example, you could instead use the Persistent Identifier (urn:oasis:names:tc:SAML:2.0:nameid-format:persistent). For more information, see the following resources: About SAML 2.0-based Federation in the IAM User Guide. Creating SAML Identity Providers in the IAM User Guide. Configuring a Relying Party and Claims in the IAM User Guide. Creating a Role for SAML 2.0 Federation in the IAM User Guide. - */ - assumeRoleWithSAML(params: STS.Types.AssumeRoleWithSAMLRequest, callback?: (err: AWSError, data: STS.Types.AssumeRoleWithSAMLResponse) => void): Request; - /** - * Returns a set of temporary security credentials for users who have been authenticated via a SAML authentication response. This operation provides a mechanism for tying an enterprise identity store or directory to role-based AWS access without user-specific credentials or configuration. For a comparison of AssumeRoleWithSAML with the other APIs that produce temporary credentials, see Requesting Temporary Security Credentials and Comparing the AWS STS APIs in the IAM User Guide. The temporary security credentials returned by this operation consist of an access key ID, a secret access key, and a security token. Applications can use these temporary security credentials to sign calls to AWS services. The temporary security credentials are valid for the duration that you specified when calling AssumeRole, or until the time specified in the SAML authentication response's SessionNotOnOrAfter value, whichever is shorter. The duration can be from 900 seconds (15 minutes) to a maximum of 3600 seconds (1 hour). The default is 1 hour. The temporary security credentials created by AssumeRoleWithSAML can be used to make API calls to any AWS service with the following exception: you cannot call the STS service's GetFederationToken or GetSessionToken APIs. Optionally, you can pass an IAM access policy to this operation. If you choose not to pass a policy, the temporary security credentials that are returned by the operation have the permissions that are defined in the access policy of the role that is being assumed. If you pass a policy to this operation, the temporary security credentials that are returned by the operation have the permissions that are allowed by the intersection of both the access policy of the role that is being assumed, and the policy that you pass. This means that both policies must grant the permission for the action to be allowed. This gives you a way to further restrict the permissions for the resulting temporary security credentials. You cannot use the passed policy to grant permissions that are in excess of those allowed by the access policy of the role that is being assumed. For more information, see Permissions for AssumeRole, AssumeRoleWithSAML, and AssumeRoleWithWebIdentity in the IAM User Guide. Before your application can call AssumeRoleWithSAML, you must configure your SAML identity provider (IdP) to issue the claims required by AWS. Additionally, you must use AWS Identity and Access Management (IAM) to create a SAML provider entity in your AWS account that represents your identity provider, and create an IAM role that specifies this SAML provider in its trust policy. Calling AssumeRoleWithSAML does not require the use of AWS security credentials. The identity of the caller is validated by using keys in the metadata document that is uploaded for the SAML provider entity for your identity provider. Calling AssumeRoleWithSAML can result in an entry in your AWS CloudTrail logs. The entry includes the value in the NameID element of the SAML assertion. We recommend that you use a NameIDType that is not associated with any personally identifiable information (PII). For example, you could instead use the Persistent Identifier (urn:oasis:names:tc:SAML:2.0:nameid-format:persistent). For more information, see the following resources: About SAML 2.0-based Federation in the IAM User Guide. Creating SAML Identity Providers in the IAM User Guide. Configuring a Relying Party and Claims in the IAM User Guide. Creating a Role for SAML 2.0 Federation in the IAM User Guide. - */ - assumeRoleWithSAML(callback?: (err: AWSError, data: STS.Types.AssumeRoleWithSAMLResponse) => void): Request; - /** - * Returns a set of temporary security credentials for users who have been authenticated in a mobile or web application with a web identity provider, such as Amazon Cognito, Login with Amazon, Facebook, Google, or any OpenID Connect-compatible identity provider. For mobile applications, we recommend that you use Amazon Cognito. You can use Amazon Cognito with the AWS SDK for iOS and the AWS SDK for Android to uniquely identify a user and supply the user with a consistent identity throughout the lifetime of an application. To learn more about Amazon Cognito, see Amazon Cognito Overview in the AWS SDK for Android Developer Guide guide and Amazon Cognito Overview in the AWS SDK for iOS Developer Guide. Calling AssumeRoleWithWebIdentity does not require the use of AWS security credentials. Therefore, you can distribute an application (for example, on mobile devices) that requests temporary security credentials without including long-term AWS credentials in the application, and without deploying server-based proxy services that use long-term AWS credentials. Instead, the identity of the caller is validated by using a token from the web identity provider. For a comparison of AssumeRoleWithWebIdentity with the other APIs that produce temporary credentials, see Requesting Temporary Security Credentials and Comparing the AWS STS APIs in the IAM User Guide. The temporary security credentials returned by this API consist of an access key ID, a secret access key, and a security token. Applications can use these temporary security credentials to sign calls to AWS service APIs. The credentials are valid for the duration that you specified when calling AssumeRoleWithWebIdentity, which can be from 900 seconds (15 minutes) to a maximum of 3600 seconds (1 hour). The default is 1 hour. The temporary security credentials created by AssumeRoleWithWebIdentity can be used to make API calls to any AWS service with the following exception: you cannot call the STS service's GetFederationToken or GetSessionToken APIs. Optionally, you can pass an IAM access policy to this operation. If you choose not to pass a policy, the temporary security credentials that are returned by the operation have the permissions that are defined in the access policy of the role that is being assumed. If you pass a policy to this operation, the temporary security credentials that are returned by the operation have the permissions that are allowed by both the access policy of the role that is being assumed, and the policy that you pass. This gives you a way to further restrict the permissions for the resulting temporary security credentials. You cannot use the passed policy to grant permissions that are in excess of those allowed by the access policy of the role that is being assumed. For more information, see Permissions for AssumeRole, AssumeRoleWithSAML, and AssumeRoleWithWebIdentity in the IAM User Guide. Before your application can call AssumeRoleWithWebIdentity, you must have an identity token from a supported identity provider and create a role that the application can assume. The role that your application assumes must trust the identity provider that is associated with the identity token. In other words, the identity provider must be specified in the role's trust policy. Calling AssumeRoleWithWebIdentity can result in an entry in your AWS CloudTrail logs. The entry includes the Subject of the provided Web Identity Token. We recommend that you avoid using any personally identifiable information (PII) in this field. For example, you could instead use a GUID or a pairwise identifier, as suggested in the OIDC specification. For more information about how to use web identity federation and the AssumeRoleWithWebIdentity API, see the following resources: Using Web Identity Federation APIs for Mobile Apps and Federation Through a Web-based Identity Provider. Web Identity Federation Playground. This interactive website lets you walk through the process of authenticating via Login with Amazon, Facebook, or Google, getting temporary security credentials, and then using those credentials to make a request to AWS. AWS SDK for iOS and AWS SDK for Android. These toolkits contain sample apps that show how to invoke the identity providers, and then how to use the information from these providers to get and use temporary security credentials. Web Identity Federation with Mobile Applications. This article discusses web identity federation and shows an example of how to use web identity federation to get access to content in Amazon S3. - */ - assumeRoleWithWebIdentity(params: STS.Types.AssumeRoleWithWebIdentityRequest, callback?: (err: AWSError, data: STS.Types.AssumeRoleWithWebIdentityResponse) => void): Request; - /** - * Returns a set of temporary security credentials for users who have been authenticated in a mobile or web application with a web identity provider, such as Amazon Cognito, Login with Amazon, Facebook, Google, or any OpenID Connect-compatible identity provider. For mobile applications, we recommend that you use Amazon Cognito. You can use Amazon Cognito with the AWS SDK for iOS and the AWS SDK for Android to uniquely identify a user and supply the user with a consistent identity throughout the lifetime of an application. To learn more about Amazon Cognito, see Amazon Cognito Overview in the AWS SDK for Android Developer Guide guide and Amazon Cognito Overview in the AWS SDK for iOS Developer Guide. Calling AssumeRoleWithWebIdentity does not require the use of AWS security credentials. Therefore, you can distribute an application (for example, on mobile devices) that requests temporary security credentials without including long-term AWS credentials in the application, and without deploying server-based proxy services that use long-term AWS credentials. Instead, the identity of the caller is validated by using a token from the web identity provider. For a comparison of AssumeRoleWithWebIdentity with the other APIs that produce temporary credentials, see Requesting Temporary Security Credentials and Comparing the AWS STS APIs in the IAM User Guide. The temporary security credentials returned by this API consist of an access key ID, a secret access key, and a security token. Applications can use these temporary security credentials to sign calls to AWS service APIs. The credentials are valid for the duration that you specified when calling AssumeRoleWithWebIdentity, which can be from 900 seconds (15 minutes) to a maximum of 3600 seconds (1 hour). The default is 1 hour. The temporary security credentials created by AssumeRoleWithWebIdentity can be used to make API calls to any AWS service with the following exception: you cannot call the STS service's GetFederationToken or GetSessionToken APIs. Optionally, you can pass an IAM access policy to this operation. If you choose not to pass a policy, the temporary security credentials that are returned by the operation have the permissions that are defined in the access policy of the role that is being assumed. If you pass a policy to this operation, the temporary security credentials that are returned by the operation have the permissions that are allowed by both the access policy of the role that is being assumed, and the policy that you pass. This gives you a way to further restrict the permissions for the resulting temporary security credentials. You cannot use the passed policy to grant permissions that are in excess of those allowed by the access policy of the role that is being assumed. For more information, see Permissions for AssumeRole, AssumeRoleWithSAML, and AssumeRoleWithWebIdentity in the IAM User Guide. Before your application can call AssumeRoleWithWebIdentity, you must have an identity token from a supported identity provider and create a role that the application can assume. The role that your application assumes must trust the identity provider that is associated with the identity token. In other words, the identity provider must be specified in the role's trust policy. Calling AssumeRoleWithWebIdentity can result in an entry in your AWS CloudTrail logs. The entry includes the Subject of the provided Web Identity Token. We recommend that you avoid using any personally identifiable information (PII) in this field. For example, you could instead use a GUID or a pairwise identifier, as suggested in the OIDC specification. For more information about how to use web identity federation and the AssumeRoleWithWebIdentity API, see the following resources: Using Web Identity Federation APIs for Mobile Apps and Federation Through a Web-based Identity Provider. Web Identity Federation Playground. This interactive website lets you walk through the process of authenticating via Login with Amazon, Facebook, or Google, getting temporary security credentials, and then using those credentials to make a request to AWS. AWS SDK for iOS and AWS SDK for Android. These toolkits contain sample apps that show how to invoke the identity providers, and then how to use the information from these providers to get and use temporary security credentials. Web Identity Federation with Mobile Applications. This article discusses web identity federation and shows an example of how to use web identity federation to get access to content in Amazon S3. - */ - assumeRoleWithWebIdentity(callback?: (err: AWSError, data: STS.Types.AssumeRoleWithWebIdentityResponse) => void): Request; - /** - * Decodes additional information about the authorization status of a request from an encoded message returned in response to an AWS request. For example, if a user is not authorized to perform an action that he or she has requested, the request returns a Client.UnauthorizedOperation response (an HTTP 403 response). Some AWS actions additionally return an encoded message that can provide details about this authorization failure. Only certain AWS actions return an encoded authorization message. The documentation for an individual action indicates whether that action returns an encoded message in addition to returning an HTTP code. The message is encoded because the details of the authorization status can constitute privileged information that the user who requested the action should not see. To decode an authorization status message, a user must be granted permissions via an IAM policy to request the DecodeAuthorizationMessage (sts:DecodeAuthorizationMessage) action. The decoded message includes the following type of information: Whether the request was denied due to an explicit deny or due to the absence of an explicit allow. For more information, see Determining Whether a Request is Allowed or Denied in the IAM User Guide. The principal who made the request. The requested action. The requested resource. The values of condition keys in the context of the user's request. - */ - decodeAuthorizationMessage(params: STS.Types.DecodeAuthorizationMessageRequest, callback?: (err: AWSError, data: STS.Types.DecodeAuthorizationMessageResponse) => void): Request; - /** - * Decodes additional information about the authorization status of a request from an encoded message returned in response to an AWS request. For example, if a user is not authorized to perform an action that he or she has requested, the request returns a Client.UnauthorizedOperation response (an HTTP 403 response). Some AWS actions additionally return an encoded message that can provide details about this authorization failure. Only certain AWS actions return an encoded authorization message. The documentation for an individual action indicates whether that action returns an encoded message in addition to returning an HTTP code. The message is encoded because the details of the authorization status can constitute privileged information that the user who requested the action should not see. To decode an authorization status message, a user must be granted permissions via an IAM policy to request the DecodeAuthorizationMessage (sts:DecodeAuthorizationMessage) action. The decoded message includes the following type of information: Whether the request was denied due to an explicit deny or due to the absence of an explicit allow. For more information, see Determining Whether a Request is Allowed or Denied in the IAM User Guide. The principal who made the request. The requested action. The requested resource. The values of condition keys in the context of the user's request. - */ - decodeAuthorizationMessage(callback?: (err: AWSError, data: STS.Types.DecodeAuthorizationMessageResponse) => void): Request; - /** - * Returns details about the IAM identity whose credentials are used to call the API. - */ - getCallerIdentity(params: STS.Types.GetCallerIdentityRequest, callback?: (err: AWSError, data: STS.Types.GetCallerIdentityResponse) => void): Request; - /** - * Returns details about the IAM identity whose credentials are used to call the API. - */ - getCallerIdentity(callback?: (err: AWSError, data: STS.Types.GetCallerIdentityResponse) => void): Request; - /** - * Returns a set of temporary security credentials (consisting of an access key ID, a secret access key, and a security token) for a federated user. A typical use is in a proxy application that gets temporary security credentials on behalf of distributed applications inside a corporate network. Because you must call the GetFederationToken action using the long-term security credentials of an IAM user, this call is appropriate in contexts where those credentials can be safely stored, usually in a server-based application. For a comparison of GetFederationToken with the other APIs that produce temporary credentials, see Requesting Temporary Security Credentials and Comparing the AWS STS APIs in the IAM User Guide. If you are creating a mobile-based or browser-based app that can authenticate users using a web identity provider like Login with Amazon, Facebook, Google, or an OpenID Connect-compatible identity provider, we recommend that you use Amazon Cognito or AssumeRoleWithWebIdentity. For more information, see Federation Through a Web-based Identity Provider. The GetFederationToken action must be called by using the long-term AWS security credentials of an IAM user. You can also call GetFederationToken using the security credentials of an AWS root account, but we do not recommended it. Instead, we recommend that you create an IAM user for the purpose of the proxy application and then attach a policy to the IAM user that limits federated users to only the actions and resources that they need access to. For more information, see IAM Best Practices in the IAM User Guide. The temporary security credentials that are obtained by using the long-term credentials of an IAM user are valid for the specified duration, from 900 seconds (15 minutes) up to a maximium of 129600 seconds (36 hours). The default is 43200 seconds (12 hours). Temporary credentials that are obtained by using AWS root account credentials have a maximum duration of 3600 seconds (1 hour). The temporary security credentials created by GetFederationToken can be used to make API calls to any AWS service with the following exceptions: You cannot use these credentials to call any IAM APIs. You cannot call any STS APIs except GetCallerIdentity. Permissions The permissions for the temporary security credentials returned by GetFederationToken are determined by a combination of the following: The policy or policies that are attached to the IAM user whose credentials are used to call GetFederationToken. The policy that is passed as a parameter in the call. The passed policy is attached to the temporary security credentials that result from the GetFederationToken API call--that is, to the federated user. When the federated user makes an AWS request, AWS evaluates the policy attached to the federated user in combination with the policy or policies attached to the IAM user whose credentials were used to call GetFederationToken. AWS allows the federated user's request only when both the federated user and the IAM user are explicitly allowed to perform the requested action. The passed policy cannot grant more permissions than those that are defined in the IAM user policy. A typical use case is that the permissions of the IAM user whose credentials are used to call GetFederationToken are designed to allow access to all the actions and resources that any federated user will need. Then, for individual users, you pass a policy to the operation that scopes down the permissions to a level that's appropriate to that individual user, using a policy that allows only a subset of permissions that are granted to the IAM user. If you do not pass a policy, the resulting temporary security credentials have no effective permissions. The only exception is when the temporary security credentials are used to access a resource that has a resource-based policy that specifically allows the federated user to access the resource. For more information about how permissions work, see Permissions for GetFederationToken. For information about using GetFederationToken to create temporary security credentials, see GetFederationToken—Federation Through a Custom Identity Broker. - */ - getFederationToken(params: STS.Types.GetFederationTokenRequest, callback?: (err: AWSError, data: STS.Types.GetFederationTokenResponse) => void): Request; - /** - * Returns a set of temporary security credentials (consisting of an access key ID, a secret access key, and a security token) for a federated user. A typical use is in a proxy application that gets temporary security credentials on behalf of distributed applications inside a corporate network. Because you must call the GetFederationToken action using the long-term security credentials of an IAM user, this call is appropriate in contexts where those credentials can be safely stored, usually in a server-based application. For a comparison of GetFederationToken with the other APIs that produce temporary credentials, see Requesting Temporary Security Credentials and Comparing the AWS STS APIs in the IAM User Guide. If you are creating a mobile-based or browser-based app that can authenticate users using a web identity provider like Login with Amazon, Facebook, Google, or an OpenID Connect-compatible identity provider, we recommend that you use Amazon Cognito or AssumeRoleWithWebIdentity. For more information, see Federation Through a Web-based Identity Provider. The GetFederationToken action must be called by using the long-term AWS security credentials of an IAM user. You can also call GetFederationToken using the security credentials of an AWS root account, but we do not recommended it. Instead, we recommend that you create an IAM user for the purpose of the proxy application and then attach a policy to the IAM user that limits federated users to only the actions and resources that they need access to. For more information, see IAM Best Practices in the IAM User Guide. The temporary security credentials that are obtained by using the long-term credentials of an IAM user are valid for the specified duration, from 900 seconds (15 minutes) up to a maximium of 129600 seconds (36 hours). The default is 43200 seconds (12 hours). Temporary credentials that are obtained by using AWS root account credentials have a maximum duration of 3600 seconds (1 hour). The temporary security credentials created by GetFederationToken can be used to make API calls to any AWS service with the following exceptions: You cannot use these credentials to call any IAM APIs. You cannot call any STS APIs except GetCallerIdentity. Permissions The permissions for the temporary security credentials returned by GetFederationToken are determined by a combination of the following: The policy or policies that are attached to the IAM user whose credentials are used to call GetFederationToken. The policy that is passed as a parameter in the call. The passed policy is attached to the temporary security credentials that result from the GetFederationToken API call--that is, to the federated user. When the federated user makes an AWS request, AWS evaluates the policy attached to the federated user in combination with the policy or policies attached to the IAM user whose credentials were used to call GetFederationToken. AWS allows the federated user's request only when both the federated user and the IAM user are explicitly allowed to perform the requested action. The passed policy cannot grant more permissions than those that are defined in the IAM user policy. A typical use case is that the permissions of the IAM user whose credentials are used to call GetFederationToken are designed to allow access to all the actions and resources that any federated user will need. Then, for individual users, you pass a policy to the operation that scopes down the permissions to a level that's appropriate to that individual user, using a policy that allows only a subset of permissions that are granted to the IAM user. If you do not pass a policy, the resulting temporary security credentials have no effective permissions. The only exception is when the temporary security credentials are used to access a resource that has a resource-based policy that specifically allows the federated user to access the resource. For more information about how permissions work, see Permissions for GetFederationToken. For information about using GetFederationToken to create temporary security credentials, see GetFederationToken—Federation Through a Custom Identity Broker. - */ - getFederationToken(callback?: (err: AWSError, data: STS.Types.GetFederationTokenResponse) => void): Request; - /** - * Returns a set of temporary credentials for an AWS account or IAM user. The credentials consist of an access key ID, a secret access key, and a security token. Typically, you use GetSessionToken if you want to use MFA to protect programmatic calls to specific AWS APIs like Amazon EC2 StopInstances. MFA-enabled IAM users would need to call GetSessionToken and submit an MFA code that is associated with their MFA device. Using the temporary security credentials that are returned from the call, IAM users can then make programmatic calls to APIs that require MFA authentication. If you do not supply a correct MFA code, then the API returns an access denied error. For a comparison of GetSessionToken with the other APIs that produce temporary credentials, see Requesting Temporary Security Credentials and Comparing the AWS STS APIs in the IAM User Guide. The GetSessionToken action must be called by using the long-term AWS security credentials of the AWS account or an IAM user. Credentials that are created by IAM users are valid for the duration that you specify, from 900 seconds (15 minutes) up to a maximum of 129600 seconds (36 hours), with a default of 43200 seconds (12 hours); credentials that are created by using account credentials can range from 900 seconds (15 minutes) up to a maximum of 3600 seconds (1 hour), with a default of 1 hour. The temporary security credentials created by GetSessionToken can be used to make API calls to any AWS service with the following exceptions: You cannot call any IAM APIs unless MFA authentication information is included in the request. You cannot call any STS API except AssumeRole or GetCallerIdentity. We recommend that you do not call GetSessionToken with root account credentials. Instead, follow our best practices by creating one or more IAM users, giving them the necessary permissions, and using IAM users for everyday interaction with AWS. The permissions associated with the temporary security credentials returned by GetSessionToken are based on the permissions associated with account or IAM user whose credentials are used to call the action. If GetSessionToken is called using root account credentials, the temporary credentials have root account permissions. Similarly, if GetSessionToken is called using the credentials of an IAM user, the temporary credentials have the same permissions as the IAM user. For more information about using GetSessionToken to create temporary credentials, go to Temporary Credentials for Users in Untrusted Environments in the IAM User Guide. - */ - getSessionToken(params: STS.Types.GetSessionTokenRequest, callback?: (err: AWSError, data: STS.Types.GetSessionTokenResponse) => void): Request; - /** - * Returns a set of temporary credentials for an AWS account or IAM user. The credentials consist of an access key ID, a secret access key, and a security token. Typically, you use GetSessionToken if you want to use MFA to protect programmatic calls to specific AWS APIs like Amazon EC2 StopInstances. MFA-enabled IAM users would need to call GetSessionToken and submit an MFA code that is associated with their MFA device. Using the temporary security credentials that are returned from the call, IAM users can then make programmatic calls to APIs that require MFA authentication. If you do not supply a correct MFA code, then the API returns an access denied error. For a comparison of GetSessionToken with the other APIs that produce temporary credentials, see Requesting Temporary Security Credentials and Comparing the AWS STS APIs in the IAM User Guide. The GetSessionToken action must be called by using the long-term AWS security credentials of the AWS account or an IAM user. Credentials that are created by IAM users are valid for the duration that you specify, from 900 seconds (15 minutes) up to a maximum of 129600 seconds (36 hours), with a default of 43200 seconds (12 hours); credentials that are created by using account credentials can range from 900 seconds (15 minutes) up to a maximum of 3600 seconds (1 hour), with a default of 1 hour. The temporary security credentials created by GetSessionToken can be used to make API calls to any AWS service with the following exceptions: You cannot call any IAM APIs unless MFA authentication information is included in the request. You cannot call any STS API except AssumeRole or GetCallerIdentity. We recommend that you do not call GetSessionToken with root account credentials. Instead, follow our best practices by creating one or more IAM users, giving them the necessary permissions, and using IAM users for everyday interaction with AWS. The permissions associated with the temporary security credentials returned by GetSessionToken are based on the permissions associated with account or IAM user whose credentials are used to call the action. If GetSessionToken is called using root account credentials, the temporary credentials have root account permissions. Similarly, if GetSessionToken is called using the credentials of an IAM user, the temporary credentials have the same permissions as the IAM user. For more information about using GetSessionToken to create temporary credentials, go to Temporary Credentials for Users in Untrusted Environments in the IAM User Guide. - */ - getSessionToken(callback?: (err: AWSError, data: STS.Types.GetSessionTokenResponse) => void): Request; -} -declare namespace STS { - export interface AssumeRoleRequest { - /** - * The Amazon Resource Name (ARN) of the role to assume. - */ - RoleArn: arnType; - /** - * An identifier for the assumed role session. Use the role session name to uniquely identify a session when the same role is assumed by different principals or for different reasons. In cross-account scenarios, the role session name is visible to, and can be logged by the account that owns the role. The role session name is also used in the ARN of the assumed role principal. This means that subsequent cross-account API requests using the temporary security credentials will expose the role session name to the external account in their CloudTrail logs. The regex used to validate this parameter is a string of characters consisting of upper- and lower-case alphanumeric characters with no spaces. You can also include underscores or any of the following characters: =,.@- - */ - RoleSessionName: roleSessionNameType; - /** - * An IAM policy in JSON format. This parameter is optional. If you pass a policy, the temporary security credentials that are returned by the operation have the permissions that are allowed by both (the intersection of) the access policy of the role that is being assumed, and the policy that you pass. This gives you a way to further restrict the permissions for the resulting temporary security credentials. You cannot use the passed policy to grant permissions that are in excess of those allowed by the access policy of the role that is being assumed. For more information, see Permissions for AssumeRole, AssumeRoleWithSAML, and AssumeRoleWithWebIdentity in the IAM User Guide. The format for this parameter, as described by its regex pattern, is a string of characters up to 2048 characters in length. The characters can be any ASCII character from the space character to the end of the valid character list (\u0020-\u00FF). It can also include the tab (\u0009), linefeed (\u000A), and carriage return (\u000D) characters. The policy plain text must be 2048 bytes or shorter. However, an internal conversion compresses it into a packed binary format with a separate limit. The PackedPolicySize response element indicates by percentage how close to the upper size limit the policy is, with 100% equaling the maximum allowed size. - */ - Policy?: sessionPolicyDocumentType; - /** - * The duration, in seconds, of the role session. The value can range from 900 seconds (15 minutes) to 3600 seconds (1 hour). By default, the value is set to 3600 seconds. This is separate from the duration of a console session that you might request using the returned credentials. The request to the federation endpoint for a console sign-in token takes a SessionDuration parameter that specifies the maximum length of the console session, separately from the DurationSeconds parameter on this API. For more information, see Creating a URL that Enables Federated Users to Access the AWS Management Console in the IAM User Guide. - */ - DurationSeconds?: roleDurationSecondsType; - /** - * A unique identifier that is used by third parties when assuming roles in their customers' accounts. For each role that the third party can assume, they should instruct their customers to ensure the role's trust policy checks for the external ID that the third party generated. Each time the third party assumes the role, they should pass the customer's external ID. The external ID is useful in order to help third parties bind a role to the customer who created it. For more information about the external ID, see How to Use an External ID When Granting Access to Your AWS Resources to a Third Party in the IAM User Guide. The regex used to validated this parameter is a string of characters consisting of upper- and lower-case alphanumeric characters with no spaces. You can also include underscores or any of the following characters: =,.@:/- - */ - ExternalId?: externalIdType; - /** - * The identification number of the MFA device that is associated with the user who is making the AssumeRole call. Specify this value if the trust policy of the role being assumed includes a condition that requires MFA authentication. The value is either the serial number for a hardware device (such as GAHT12345678) or an Amazon Resource Name (ARN) for a virtual device (such as arn:aws:iam::123456789012:mfa/user). The regex used to validate this parameter is a string of characters consisting of upper- and lower-case alphanumeric characters with no spaces. You can also include underscores or any of the following characters: =,.@- - */ - SerialNumber?: serialNumberType; - /** - * The value provided by the MFA device, if the trust policy of the role being assumed requires MFA (that is, if the policy includes a condition that tests for MFA). If the role being assumed requires MFA and if the TokenCode value is missing or expired, the AssumeRole call returns an "access denied" error. The format for this parameter, as described by its regex pattern, is a sequence of six numeric digits. - */ - TokenCode?: tokenCodeType; - } - export interface AssumeRoleResponse { - /** - * The temporary security credentials, which include an access key ID, a secret access key, and a security (or session) token. Note: The size of the security token that STS APIs return is not fixed. We strongly recommend that you make no assumptions about the maximum size. As of this writing, the typical size is less than 4096 bytes, but that can vary. Also, future updates to AWS might require larger sizes. - */ - Credentials?: Credentials; - /** - * The Amazon Resource Name (ARN) and the assumed role ID, which are identifiers that you can use to refer to the resulting temporary security credentials. For example, you can reference these credentials as a principal in a resource-based policy by using the ARN or assumed role ID. The ARN and ID include the RoleSessionName that you specified when you called AssumeRole. - */ - AssumedRoleUser?: AssumedRoleUser; - /** - * A percentage value that indicates the size of the policy in packed form. The service rejects any policy with a packed size greater than 100 percent, which means the policy exceeded the allowed space. - */ - PackedPolicySize?: nonNegativeIntegerType; - } - export interface AssumeRoleWithSAMLRequest { - /** - * The Amazon Resource Name (ARN) of the role that the caller is assuming. - */ - RoleArn: arnType; - /** - * The Amazon Resource Name (ARN) of the SAML provider in IAM that describes the IdP. - */ - PrincipalArn: arnType; - /** - * The base-64 encoded SAML authentication response provided by the IdP. For more information, see Configuring a Relying Party and Adding Claims in the Using IAM guide. - */ - SAMLAssertion: SAMLAssertionType; - /** - * An IAM policy in JSON format. The policy parameter is optional. If you pass a policy, the temporary security credentials that are returned by the operation have the permissions that are allowed by both the access policy of the role that is being assumed, and the policy that you pass. This gives you a way to further restrict the permissions for the resulting temporary security credentials. You cannot use the passed policy to grant permissions that are in excess of those allowed by the access policy of the role that is being assumed. For more information, Permissions for AssumeRole, AssumeRoleWithSAML, and AssumeRoleWithWebIdentity in the IAM User Guide. The format for this parameter, as described by its regex pattern, is a string of characters up to 2048 characters in length. The characters can be any ASCII character from the space character to the end of the valid character list (\u0020-\u00FF). It can also include the tab (\u0009), linefeed (\u000A), and carriage return (\u000D) characters. The policy plain text must be 2048 bytes or shorter. However, an internal conversion compresses it into a packed binary format with a separate limit. The PackedPolicySize response element indicates by percentage how close to the upper size limit the policy is, with 100% equaling the maximum allowed size. - */ - Policy?: sessionPolicyDocumentType; - /** - * The duration, in seconds, of the role session. The value can range from 900 seconds (15 minutes) to 3600 seconds (1 hour). By default, the value is set to 3600 seconds. An expiration can also be specified in the SAML authentication response's SessionNotOnOrAfter value. The actual expiration time is whichever value is shorter. This is separate from the duration of a console session that you might request using the returned credentials. The request to the federation endpoint for a console sign-in token takes a SessionDuration parameter that specifies the maximum length of the console session, separately from the DurationSeconds parameter on this API. For more information, see Enabling SAML 2.0 Federated Users to Access the AWS Management Console in the IAM User Guide. - */ - DurationSeconds?: roleDurationSecondsType; - } - export interface AssumeRoleWithSAMLResponse { - /** - * The temporary security credentials, which include an access key ID, a secret access key, and a security (or session) token. Note: The size of the security token that STS APIs return is not fixed. We strongly recommend that you make no assumptions about the maximum size. As of this writing, the typical size is less than 4096 bytes, but that can vary. Also, future updates to AWS might require larger sizes. - */ - Credentials?: Credentials; - /** - * The identifiers for the temporary security credentials that the operation returns. - */ - AssumedRoleUser?: AssumedRoleUser; - /** - * A percentage value that indicates the size of the policy in packed form. The service rejects any policy with a packed size greater than 100 percent, which means the policy exceeded the allowed space. - */ - PackedPolicySize?: nonNegativeIntegerType; - /** - * The value of the NameID element in the Subject element of the SAML assertion. - */ - Subject?: Subject; - /** - * The format of the name ID, as defined by the Format attribute in the NameID element of the SAML assertion. Typical examples of the format are transient or persistent. If the format includes the prefix urn:oasis:names:tc:SAML:2.0:nameid-format, that prefix is removed. For example, urn:oasis:names:tc:SAML:2.0:nameid-format:transient is returned as transient. If the format includes any other prefix, the format is returned with no modifications. - */ - SubjectType?: SubjectType; - /** - * The value of the Issuer element of the SAML assertion. - */ - Issuer?: Issuer; - /** - * The value of the Recipient attribute of the SubjectConfirmationData element of the SAML assertion. - */ - Audience?: Audience; - /** - * A hash value based on the concatenation of the Issuer response value, the AWS account ID, and the friendly name (the last part of the ARN) of the SAML provider in IAM. The combination of NameQualifier and Subject can be used to uniquely identify a federated user. The following pseudocode shows how the hash value is calculated: BASE64 ( SHA1 ( "https://example.com/saml" + "123456789012" + "/MySAMLIdP" ) ) - */ - NameQualifier?: NameQualifier; - } - export interface AssumeRoleWithWebIdentityRequest { - /** - * The Amazon Resource Name (ARN) of the role that the caller is assuming. - */ - RoleArn: arnType; - /** - * An identifier for the assumed role session. Typically, you pass the name or identifier that is associated with the user who is using your application. That way, the temporary security credentials that your application will use are associated with that user. This session name is included as part of the ARN and assumed role ID in the AssumedRoleUser response element. The regex used to validate this parameter is a string of characters consisting of upper- and lower-case alphanumeric characters with no spaces. You can also include underscores or any of the following characters: =,.@- - */ - RoleSessionName: roleSessionNameType; - /** - * The OAuth 2.0 access token or OpenID Connect ID token that is provided by the identity provider. Your application must get this token by authenticating the user who is using your application with a web identity provider before the application makes an AssumeRoleWithWebIdentity call. - */ - WebIdentityToken: clientTokenType; - /** - * The fully qualified host component of the domain name of the identity provider. Specify this value only for OAuth 2.0 access tokens. Currently www.amazon.com and graph.facebook.com are the only supported identity providers for OAuth 2.0 access tokens. Do not include URL schemes and port numbers. Do not specify this value for OpenID Connect ID tokens. - */ - ProviderId?: urlType; - /** - * An IAM policy in JSON format. The policy parameter is optional. If you pass a policy, the temporary security credentials that are returned by the operation have the permissions that are allowed by both the access policy of the role that is being assumed, and the policy that you pass. This gives you a way to further restrict the permissions for the resulting temporary security credentials. You cannot use the passed policy to grant permissions that are in excess of those allowed by the access policy of the role that is being assumed. For more information, see Permissions for AssumeRoleWithWebIdentity in the IAM User Guide. The format for this parameter, as described by its regex pattern, is a string of characters up to 2048 characters in length. The characters can be any ASCII character from the space character to the end of the valid character list (\u0020-\u00FF). It can also include the tab (\u0009), linefeed (\u000A), and carriage return (\u000D) characters. The policy plain text must be 2048 bytes or shorter. However, an internal conversion compresses it into a packed binary format with a separate limit. The PackedPolicySize response element indicates by percentage how close to the upper size limit the policy is, with 100% equaling the maximum allowed size. - */ - Policy?: sessionPolicyDocumentType; - /** - * The duration, in seconds, of the role session. The value can range from 900 seconds (15 minutes) to 3600 seconds (1 hour). By default, the value is set to 3600 seconds. This is separate from the duration of a console session that you might request using the returned credentials. The request to the federation endpoint for a console sign-in token takes a SessionDuration parameter that specifies the maximum length of the console session, separately from the DurationSeconds parameter on this API. For more information, see Creating a URL that Enables Federated Users to Access the AWS Management Console in the IAM User Guide. - */ - DurationSeconds?: roleDurationSecondsType; - } - export interface AssumeRoleWithWebIdentityResponse { - /** - * The temporary security credentials, which include an access key ID, a secret access key, and a security token. Note: The size of the security token that STS APIs return is not fixed. We strongly recommend that you make no assumptions about the maximum size. As of this writing, the typical size is less than 4096 bytes, but that can vary. Also, future updates to AWS might require larger sizes. - */ - Credentials?: Credentials; - /** - * The unique user identifier that is returned by the identity provider. This identifier is associated with the WebIdentityToken that was submitted with the AssumeRoleWithWebIdentity call. The identifier is typically unique to the user and the application that acquired the WebIdentityToken (pairwise identifier). For OpenID Connect ID tokens, this field contains the value returned by the identity provider as the token's sub (Subject) claim. - */ - SubjectFromWebIdentityToken?: webIdentitySubjectType; - /** - * The Amazon Resource Name (ARN) and the assumed role ID, which are identifiers that you can use to refer to the resulting temporary security credentials. For example, you can reference these credentials as a principal in a resource-based policy by using the ARN or assumed role ID. The ARN and ID include the RoleSessionName that you specified when you called AssumeRole. - */ - AssumedRoleUser?: AssumedRoleUser; - /** - * A percentage value that indicates the size of the policy in packed form. The service rejects any policy with a packed size greater than 100 percent, which means the policy exceeded the allowed space. - */ - PackedPolicySize?: nonNegativeIntegerType; - /** - * The issuing authority of the web identity token presented. For OpenID Connect ID Tokens this contains the value of the iss field. For OAuth 2.0 access tokens, this contains the value of the ProviderId parameter that was passed in the AssumeRoleWithWebIdentity request. - */ - Provider?: Issuer; - /** - * The intended audience (also known as client ID) of the web identity token. This is traditionally the client identifier issued to the application that requested the web identity token. - */ - Audience?: Audience; - } - export interface AssumedRoleUser { - /** - * A unique identifier that contains the role ID and the role session name of the role that is being assumed. The role ID is generated by AWS when the role is created. - */ - AssumedRoleId: assumedRoleIdType; - /** - * The ARN of the temporary security credentials that are returned from the AssumeRole action. For more information about ARNs and how to use them in policies, see IAM Identifiers in Using IAM. - */ - Arn: arnType; - } - export type Audience = string; - export interface Credentials { - /** - * The access key ID that identifies the temporary security credentials. - */ - AccessKeyId: accessKeyIdType; - /** - * The secret access key that can be used to sign requests. - */ - SecretAccessKey: accessKeySecretType; - /** - * The token that users must pass to the service API to use the temporary credentials. - */ - SessionToken: tokenType; - /** - * The date on which the current credentials expire. - */ - Expiration: dateType; - } - export interface DecodeAuthorizationMessageRequest { - /** - * The encoded message that was returned with the response. - */ - EncodedMessage: encodedMessageType; - } - export interface DecodeAuthorizationMessageResponse { - /** - * An XML document that contains the decoded message. - */ - DecodedMessage?: decodedMessageType; - } - export interface FederatedUser { - /** - * The string that identifies the federated user associated with the credentials, similar to the unique ID of an IAM user. - */ - FederatedUserId: federatedIdType; - /** - * The ARN that specifies the federated user that is associated with the credentials. For more information about ARNs and how to use them in policies, see IAM Identifiers in Using IAM. - */ - Arn: arnType; - } - export interface GetCallerIdentityRequest { - } - export interface GetCallerIdentityResponse { - /** - * The unique identifier of the calling entity. The exact value depends on the type of entity making the call. The values returned are those listed in the aws:userid column in the Principal table found on the Policy Variables reference page in the IAM User Guide. - */ - UserId?: userIdType; - /** - * The AWS account ID number of the account that owns or contains the calling entity. - */ - Account?: accountType; - /** - * The AWS ARN associated with the calling entity. - */ - Arn?: arnType; - } - export interface GetFederationTokenRequest { - /** - * The name of the federated user. The name is used as an identifier for the temporary security credentials (such as Bob). For example, you can reference the federated user name in a resource-based policy, such as in an Amazon S3 bucket policy. The regex used to validate this parameter is a string of characters consisting of upper- and lower-case alphanumeric characters with no spaces. You can also include underscores or any of the following characters: =,.@- - */ - Name: userNameType; - /** - * An IAM policy in JSON format that is passed with the GetFederationToken call and evaluated along with the policy or policies that are attached to the IAM user whose credentials are used to call GetFederationToken. The passed policy is used to scope down the permissions that are available to the IAM user, by allowing only a subset of the permissions that are granted to the IAM user. The passed policy cannot grant more permissions than those granted to the IAM user. The final permissions for the federated user are the most restrictive set based on the intersection of the passed policy and the IAM user policy. If you do not pass a policy, the resulting temporary security credentials have no effective permissions. The only exception is when the temporary security credentials are used to access a resource that has a resource-based policy that specifically allows the federated user to access the resource. The format for this parameter, as described by its regex pattern, is a string of characters up to 2048 characters in length. The characters can be any ASCII character from the space character to the end of the valid character list (\u0020-\u00FF). It can also include the tab (\u0009), linefeed (\u000A), and carriage return (\u000D) characters. The policy plain text must be 2048 bytes or shorter. However, an internal conversion compresses it into a packed binary format with a separate limit. The PackedPolicySize response element indicates by percentage how close to the upper size limit the policy is, with 100% equaling the maximum allowed size. For more information about how permissions work, see Permissions for GetFederationToken. - */ - Policy?: sessionPolicyDocumentType; - /** - * The duration, in seconds, that the session should last. Acceptable durations for federation sessions range from 900 seconds (15 minutes) to 129600 seconds (36 hours), with 43200 seconds (12 hours) as the default. Sessions obtained using AWS account (root) credentials are restricted to a maximum of 3600 seconds (one hour). If the specified duration is longer than one hour, the session obtained by using AWS account (root) credentials defaults to one hour. - */ - DurationSeconds?: durationSecondsType; - } - export interface GetFederationTokenResponse { - /** - * The temporary security credentials, which include an access key ID, a secret access key, and a security (or session) token. Note: The size of the security token that STS APIs return is not fixed. We strongly recommend that you make no assumptions about the maximum size. As of this writing, the typical size is less than 4096 bytes, but that can vary. Also, future updates to AWS might require larger sizes. - */ - Credentials?: Credentials; - /** - * Identifiers for the federated user associated with the credentials (such as arn:aws:sts::123456789012:federated-user/Bob or 123456789012:Bob). You can use the federated user's ARN in your resource-based policies, such as an Amazon S3 bucket policy. - */ - FederatedUser?: FederatedUser; - /** - * A percentage value indicating the size of the policy in packed form. The service rejects policies for which the packed size is greater than 100 percent of the allowed value. - */ - PackedPolicySize?: nonNegativeIntegerType; - } - export interface GetSessionTokenRequest { - /** - * The duration, in seconds, that the credentials should remain valid. Acceptable durations for IAM user sessions range from 900 seconds (15 minutes) to 129600 seconds (36 hours), with 43200 seconds (12 hours) as the default. Sessions for AWS account owners are restricted to a maximum of 3600 seconds (one hour). If the duration is longer than one hour, the session for AWS account owners defaults to one hour. - */ - DurationSeconds?: durationSecondsType; - /** - * The identification number of the MFA device that is associated with the IAM user who is making the GetSessionToken call. Specify this value if the IAM user has a policy that requires MFA authentication. The value is either the serial number for a hardware device (such as GAHT12345678) or an Amazon Resource Name (ARN) for a virtual device (such as arn:aws:iam::123456789012:mfa/user). You can find the device for an IAM user by going to the AWS Management Console and viewing the user's security credentials. The regex used to validated this parameter is a string of characters consisting of upper- and lower-case alphanumeric characters with no spaces. You can also include underscores or any of the following characters: =,.@:/- - */ - SerialNumber?: serialNumberType; - /** - * The value provided by the MFA device, if MFA is required. If any policy requires the IAM user to submit an MFA code, specify this value. If MFA authentication is required, and the user does not provide a code when requesting a set of temporary security credentials, the user will receive an "access denied" response when requesting resources that require MFA authentication. The format for this parameter, as described by its regex pattern, is a sequence of six numeric digits. - */ - TokenCode?: tokenCodeType; - } - export interface GetSessionTokenResponse { - /** - * The temporary security credentials, which include an access key ID, a secret access key, and a security (or session) token. Note: The size of the security token that STS APIs return is not fixed. We strongly recommend that you make no assumptions about the maximum size. As of this writing, the typical size is less than 4096 bytes, but that can vary. Also, future updates to AWS might require larger sizes. - */ - Credentials?: Credentials; - } - export type Issuer = string; - export type NameQualifier = string; - export type SAMLAssertionType = string; - export type Subject = string; - export type SubjectType = string; - export type accessKeyIdType = string; - export type accessKeySecretType = string; - export type accountType = string; - export type arnType = string; - export type assumedRoleIdType = string; - export type clientTokenType = string; - export type dateType = Date; - export type decodedMessageType = string; - export type durationSecondsType = number; - export type encodedMessageType = string; - export type expiredIdentityTokenMessage = string; - export type externalIdType = string; - export type federatedIdType = string; - export type idpCommunicationErrorMessage = string; - export type idpRejectedClaimMessage = string; - export type invalidAuthorizationMessage = string; - export type invalidIdentityTokenMessage = string; - export type malformedPolicyDocumentMessage = string; - export type nonNegativeIntegerType = number; - export type packedPolicyTooLargeMessage = string; - export type regionDisabledMessage = string; - export type roleDurationSecondsType = number; - export type roleSessionNameType = string; - export type serialNumberType = string; - export type sessionPolicyDocumentType = string; - export type tokenCodeType = string; - export type tokenType = string; - export type urlType = string; - export type userIdType = string; - export type userNameType = string; - export type webIdentitySubjectType = string; - /** - * A string in YYYY-MM-DD format that represents the latest possible API version that can be used in this service. Specify 'latest' to use the latest possible version. - */ - export type apiVersion = "2011-06-15"|"latest"|string; - export interface ClientApiVersions { - /** - * A string in YYYY-MM-DD format that represents the latest possible API version that can be used in this service. Specify 'latest' to use the latest possible version. - */ - apiVersion?: apiVersion; - } - export type ClientConfiguration = ServiceConfigurationOptions & ClientApiVersions; - /** - * Contains interfaces for use with the STS client. - */ - export import Types = STS; -} -export = STS; diff --git a/workshops/monte-carlo-on-ec2-spot-fleet/src/web/node_modules/aws-sdk/clients/sts.js b/workshops/monte-carlo-on-ec2-spot-fleet/src/web/node_modules/aws-sdk/clients/sts.js deleted file mode 100644 index b1d9cd77..00000000 --- a/workshops/monte-carlo-on-ec2-spot-fleet/src/web/node_modules/aws-sdk/clients/sts.js +++ /dev/null @@ -1,19 +0,0 @@ -require('../lib/node_loader'); -var AWS = require('../lib/core'); -var Service = AWS.Service; -var apiLoader = AWS.apiLoader; - -apiLoader.services['sts'] = {}; -AWS.STS = Service.defineService('sts', ['2011-06-15']); -require('../lib/services/sts'); -Object.defineProperty(apiLoader.services['sts'], '2011-06-15', { - get: function get() { - var model = require('../apis/sts-2011-06-15.min.json'); - model.paginators = require('../apis/sts-2011-06-15.paginators.json').pagination; - return model; - }, - enumerable: true, - configurable: true -}); - -module.exports = AWS.STS; diff --git a/workshops/monte-carlo-on-ec2-spot-fleet/src/web/node_modules/aws-sdk/clients/support.d.ts b/workshops/monte-carlo-on-ec2-spot-fleet/src/web/node_modules/aws-sdk/clients/support.d.ts deleted file mode 100644 index dbc334c4..00000000 --- a/workshops/monte-carlo-on-ec2-spot-fleet/src/web/node_modules/aws-sdk/clients/support.d.ts +++ /dev/null @@ -1,756 +0,0 @@ -import {Request} from '../lib/request'; -import {Response} from '../lib/response'; -import {AWSError} from '../lib/error'; -import {Service} from '../lib/service'; -import {ServiceConfigurationOptions} from '../lib/service'; -import {ConfigBase as Config} from '../lib/config'; -interface Blob {} -declare class Support extends Service { - /** - * Constructs a service object. This object has one method for each API operation. - */ - constructor(options?: Support.Types.ClientConfiguration) - config: Config & Support.Types.ClientConfiguration; - /** - * Adds one or more attachments to an attachment set. If an attachmentSetId is not specified, a new attachment set is created, and the ID of the set is returned in the response. If an attachmentSetId is specified, the attachments are added to the specified set, if it exists. An attachment set is a temporary container for attachments that are to be added to a case or case communication. The set is available for one hour after it is created; the expiryTime returned in the response indicates when the set expires. The maximum number of attachments in a set is 3, and the maximum size of any attachment in the set is 5 MB. - */ - addAttachmentsToSet(params: Support.Types.AddAttachmentsToSetRequest, callback?: (err: AWSError, data: Support.Types.AddAttachmentsToSetResponse) => void): Request; - /** - * Adds one or more attachments to an attachment set. If an attachmentSetId is not specified, a new attachment set is created, and the ID of the set is returned in the response. If an attachmentSetId is specified, the attachments are added to the specified set, if it exists. An attachment set is a temporary container for attachments that are to be added to a case or case communication. The set is available for one hour after it is created; the expiryTime returned in the response indicates when the set expires. The maximum number of attachments in a set is 3, and the maximum size of any attachment in the set is 5 MB. - */ - addAttachmentsToSet(callback?: (err: AWSError, data: Support.Types.AddAttachmentsToSetResponse) => void): Request; - /** - * Adds additional customer communication to an AWS Support case. You use the caseId value to identify the case to add communication to. You can list a set of email addresses to copy on the communication using the ccEmailAddresses value. The communicationBody value contains the text of the communication. The response indicates the success or failure of the request. This operation implements a subset of the features of the AWS Support Center. - */ - addCommunicationToCase(params: Support.Types.AddCommunicationToCaseRequest, callback?: (err: AWSError, data: Support.Types.AddCommunicationToCaseResponse) => void): Request; - /** - * Adds additional customer communication to an AWS Support case. You use the caseId value to identify the case to add communication to. You can list a set of email addresses to copy on the communication using the ccEmailAddresses value. The communicationBody value contains the text of the communication. The response indicates the success or failure of the request. This operation implements a subset of the features of the AWS Support Center. - */ - addCommunicationToCase(callback?: (err: AWSError, data: Support.Types.AddCommunicationToCaseResponse) => void): Request; - /** - * Creates a new case in the AWS Support Center. This operation is modeled on the behavior of the AWS Support Center Create Case page. Its parameters require you to specify the following information: issueType. The type of issue for the case. You can specify either "customer-service" or "technical." If you do not indicate a value, the default is "technical." serviceCode. The code for an AWS service. You obtain the serviceCode by calling DescribeServices. categoryCode. The category for the service defined for the serviceCode value. You also obtain the category code for a service by calling DescribeServices. Each AWS service defines its own set of category codes. severityCode. A value that indicates the urgency of the case, which in turn determines the response time according to your service level agreement with AWS Support. You obtain the SeverityCode by calling DescribeSeverityLevels. subject. The Subject field on the AWS Support Center Create Case page. communicationBody. The Description field on the AWS Support Center Create Case page. attachmentSetId. The ID of a set of attachments that has been created by using AddAttachmentsToSet. language. The human language in which AWS Support handles the case. English and Japanese are currently supported. ccEmailAddresses. The AWS Support Center CC field on the Create Case page. You can list email addresses to be copied on any correspondence about the case. The account that opens the case is already identified by passing the AWS Credentials in the HTTP POST method or in a method or function call from one of the programming languages supported by an AWS SDK. To add additional communication or attachments to an existing case, use AddCommunicationToCase. A successful CreateCase request returns an AWS Support case number. Case numbers are used by the DescribeCases operation to retrieve existing AWS Support cases. - */ - createCase(params: Support.Types.CreateCaseRequest, callback?: (err: AWSError, data: Support.Types.CreateCaseResponse) => void): Request; - /** - * Creates a new case in the AWS Support Center. This operation is modeled on the behavior of the AWS Support Center Create Case page. Its parameters require you to specify the following information: issueType. The type of issue for the case. You can specify either "customer-service" or "technical." If you do not indicate a value, the default is "technical." serviceCode. The code for an AWS service. You obtain the serviceCode by calling DescribeServices. categoryCode. The category for the service defined for the serviceCode value. You also obtain the category code for a service by calling DescribeServices. Each AWS service defines its own set of category codes. severityCode. A value that indicates the urgency of the case, which in turn determines the response time according to your service level agreement with AWS Support. You obtain the SeverityCode by calling DescribeSeverityLevels. subject. The Subject field on the AWS Support Center Create Case page. communicationBody. The Description field on the AWS Support Center Create Case page. attachmentSetId. The ID of a set of attachments that has been created by using AddAttachmentsToSet. language. The human language in which AWS Support handles the case. English and Japanese are currently supported. ccEmailAddresses. The AWS Support Center CC field on the Create Case page. You can list email addresses to be copied on any correspondence about the case. The account that opens the case is already identified by passing the AWS Credentials in the HTTP POST method or in a method or function call from one of the programming languages supported by an AWS SDK. To add additional communication or attachments to an existing case, use AddCommunicationToCase. A successful CreateCase request returns an AWS Support case number. Case numbers are used by the DescribeCases operation to retrieve existing AWS Support cases. - */ - createCase(callback?: (err: AWSError, data: Support.Types.CreateCaseResponse) => void): Request; - /** - * Returns the attachment that has the specified ID. Attachment IDs are generated by the case management system when you add an attachment to a case or case communication. Attachment IDs are returned in the AttachmentDetails objects that are returned by the DescribeCommunications operation. - */ - describeAttachment(params: Support.Types.DescribeAttachmentRequest, callback?: (err: AWSError, data: Support.Types.DescribeAttachmentResponse) => void): Request; - /** - * Returns the attachment that has the specified ID. Attachment IDs are generated by the case management system when you add an attachment to a case or case communication. Attachment IDs are returned in the AttachmentDetails objects that are returned by the DescribeCommunications operation. - */ - describeAttachment(callback?: (err: AWSError, data: Support.Types.DescribeAttachmentResponse) => void): Request; - /** - * Returns a list of cases that you specify by passing one or more case IDs. In addition, you can filter the cases by date by setting values for the afterTime and beforeTime request parameters. You can set values for the includeResolvedCases and includeCommunications request parameters to control how much information is returned. Case data is available for 12 months after creation. If a case was created more than 12 months ago, a request for data might cause an error. The response returns the following in JSON format: One or more CaseDetails data types. One or more nextToken values, which specify where to paginate the returned records represented by the CaseDetails objects. - */ - describeCases(params: Support.Types.DescribeCasesRequest, callback?: (err: AWSError, data: Support.Types.DescribeCasesResponse) => void): Request; - /** - * Returns a list of cases that you specify by passing one or more case IDs. In addition, you can filter the cases by date by setting values for the afterTime and beforeTime request parameters. You can set values for the includeResolvedCases and includeCommunications request parameters to control how much information is returned. Case data is available for 12 months after creation. If a case was created more than 12 months ago, a request for data might cause an error. The response returns the following in JSON format: One or more CaseDetails data types. One or more nextToken values, which specify where to paginate the returned records represented by the CaseDetails objects. - */ - describeCases(callback?: (err: AWSError, data: Support.Types.DescribeCasesResponse) => void): Request; - /** - * Returns communications (and attachments) for one or more support cases. You can use the afterTime and beforeTime parameters to filter by date. You can use the caseId parameter to restrict the results to a particular case. Case data is available for 12 months after creation. If a case was created more than 12 months ago, a request for data might cause an error. You can use the maxResults and nextToken parameters to control the pagination of the result set. Set maxResults to the number of cases you want displayed on each page, and use nextToken to specify the resumption of pagination. - */ - describeCommunications(params: Support.Types.DescribeCommunicationsRequest, callback?: (err: AWSError, data: Support.Types.DescribeCommunicationsResponse) => void): Request; - /** - * Returns communications (and attachments) for one or more support cases. You can use the afterTime and beforeTime parameters to filter by date. You can use the caseId parameter to restrict the results to a particular case. Case data is available for 12 months after creation. If a case was created more than 12 months ago, a request for data might cause an error. You can use the maxResults and nextToken parameters to control the pagination of the result set. Set maxResults to the number of cases you want displayed on each page, and use nextToken to specify the resumption of pagination. - */ - describeCommunications(callback?: (err: AWSError, data: Support.Types.DescribeCommunicationsResponse) => void): Request; - /** - * Returns the current list of AWS services and a list of service categories that applies to each one. You then use service names and categories in your CreateCase requests. Each AWS service has its own set of categories. The service codes and category codes correspond to the values that are displayed in the Service and Category drop-down lists on the AWS Support Center Create Case page. The values in those fields, however, do not necessarily match the service codes and categories returned by the DescribeServices request. Always use the service codes and categories obtained programmatically. This practice ensures that you always have the most recent set of service and category codes. - */ - describeServices(params: Support.Types.DescribeServicesRequest, callback?: (err: AWSError, data: Support.Types.DescribeServicesResponse) => void): Request; - /** - * Returns the current list of AWS services and a list of service categories that applies to each one. You then use service names and categories in your CreateCase requests. Each AWS service has its own set of categories. The service codes and category codes correspond to the values that are displayed in the Service and Category drop-down lists on the AWS Support Center Create Case page. The values in those fields, however, do not necessarily match the service codes and categories returned by the DescribeServices request. Always use the service codes and categories obtained programmatically. This practice ensures that you always have the most recent set of service and category codes. - */ - describeServices(callback?: (err: AWSError, data: Support.Types.DescribeServicesResponse) => void): Request; - /** - * Returns the list of severity levels that you can assign to an AWS Support case. The severity level for a case is also a field in the CaseDetails data type included in any CreateCase request. - */ - describeSeverityLevels(params: Support.Types.DescribeSeverityLevelsRequest, callback?: (err: AWSError, data: Support.Types.DescribeSeverityLevelsResponse) => void): Request; - /** - * Returns the list of severity levels that you can assign to an AWS Support case. The severity level for a case is also a field in the CaseDetails data type included in any CreateCase request. - */ - describeSeverityLevels(callback?: (err: AWSError, data: Support.Types.DescribeSeverityLevelsResponse) => void): Request; - /** - * Returns the refresh status of the Trusted Advisor checks that have the specified check IDs. Check IDs can be obtained by calling DescribeTrustedAdvisorChecks. Some checks are refreshed automatically, and their refresh statuses cannot be retrieved by using this operation. Use of the DescribeTrustedAdvisorCheckRefreshStatuses operation for these checks causes an InvalidParameterValue error. - */ - describeTrustedAdvisorCheckRefreshStatuses(params: Support.Types.DescribeTrustedAdvisorCheckRefreshStatusesRequest, callback?: (err: AWSError, data: Support.Types.DescribeTrustedAdvisorCheckRefreshStatusesResponse) => void): Request; - /** - * Returns the refresh status of the Trusted Advisor checks that have the specified check IDs. Check IDs can be obtained by calling DescribeTrustedAdvisorChecks. Some checks are refreshed automatically, and their refresh statuses cannot be retrieved by using this operation. Use of the DescribeTrustedAdvisorCheckRefreshStatuses operation for these checks causes an InvalidParameterValue error. - */ - describeTrustedAdvisorCheckRefreshStatuses(callback?: (err: AWSError, data: Support.Types.DescribeTrustedAdvisorCheckRefreshStatusesResponse) => void): Request; - /** - * Returns the results of the Trusted Advisor check that has the specified check ID. Check IDs can be obtained by calling DescribeTrustedAdvisorChecks. The response contains a TrustedAdvisorCheckResult object, which contains these three objects: TrustedAdvisorCategorySpecificSummary TrustedAdvisorResourceDetail TrustedAdvisorResourcesSummary In addition, the response contains these fields: status. The alert status of the check: "ok" (green), "warning" (yellow), "error" (red), or "not_available". timestamp. The time of the last refresh of the check. checkId. The unique identifier for the check. - */ - describeTrustedAdvisorCheckResult(params: Support.Types.DescribeTrustedAdvisorCheckResultRequest, callback?: (err: AWSError, data: Support.Types.DescribeTrustedAdvisorCheckResultResponse) => void): Request; - /** - * Returns the results of the Trusted Advisor check that has the specified check ID. Check IDs can be obtained by calling DescribeTrustedAdvisorChecks. The response contains a TrustedAdvisorCheckResult object, which contains these three objects: TrustedAdvisorCategorySpecificSummary TrustedAdvisorResourceDetail TrustedAdvisorResourcesSummary In addition, the response contains these fields: status. The alert status of the check: "ok" (green), "warning" (yellow), "error" (red), or "not_available". timestamp. The time of the last refresh of the check. checkId. The unique identifier for the check. - */ - describeTrustedAdvisorCheckResult(callback?: (err: AWSError, data: Support.Types.DescribeTrustedAdvisorCheckResultResponse) => void): Request; - /** - * Returns the summaries of the results of the Trusted Advisor checks that have the specified check IDs. Check IDs can be obtained by calling DescribeTrustedAdvisorChecks. The response contains an array of TrustedAdvisorCheckSummary objects. - */ - describeTrustedAdvisorCheckSummaries(params: Support.Types.DescribeTrustedAdvisorCheckSummariesRequest, callback?: (err: AWSError, data: Support.Types.DescribeTrustedAdvisorCheckSummariesResponse) => void): Request; - /** - * Returns the summaries of the results of the Trusted Advisor checks that have the specified check IDs. Check IDs can be obtained by calling DescribeTrustedAdvisorChecks. The response contains an array of TrustedAdvisorCheckSummary objects. - */ - describeTrustedAdvisorCheckSummaries(callback?: (err: AWSError, data: Support.Types.DescribeTrustedAdvisorCheckSummariesResponse) => void): Request; - /** - * Returns information about all available Trusted Advisor checks, including name, ID, category, description, and metadata. You must specify a language code; English ("en") and Japanese ("ja") are currently supported. The response contains a TrustedAdvisorCheckDescription for each check. - */ - describeTrustedAdvisorChecks(params: Support.Types.DescribeTrustedAdvisorChecksRequest, callback?: (err: AWSError, data: Support.Types.DescribeTrustedAdvisorChecksResponse) => void): Request; - /** - * Returns information about all available Trusted Advisor checks, including name, ID, category, description, and metadata. You must specify a language code; English ("en") and Japanese ("ja") are currently supported. The response contains a TrustedAdvisorCheckDescription for each check. - */ - describeTrustedAdvisorChecks(callback?: (err: AWSError, data: Support.Types.DescribeTrustedAdvisorChecksResponse) => void): Request; - /** - * Requests a refresh of the Trusted Advisor check that has the specified check ID. Check IDs can be obtained by calling DescribeTrustedAdvisorChecks. Some checks are refreshed automatically, and they cannot be refreshed by using this operation. Use of the RefreshTrustedAdvisorCheck operation for these checks causes an InvalidParameterValue error. The response contains a TrustedAdvisorCheckRefreshStatus object, which contains these fields: status. The refresh status of the check: "none", "enqueued", "processing", "success", or "abandoned". millisUntilNextRefreshable. The amount of time, in milliseconds, until the check is eligible for refresh. checkId. The unique identifier for the check. - */ - refreshTrustedAdvisorCheck(params: Support.Types.RefreshTrustedAdvisorCheckRequest, callback?: (err: AWSError, data: Support.Types.RefreshTrustedAdvisorCheckResponse) => void): Request; - /** - * Requests a refresh of the Trusted Advisor check that has the specified check ID. Check IDs can be obtained by calling DescribeTrustedAdvisorChecks. Some checks are refreshed automatically, and they cannot be refreshed by using this operation. Use of the RefreshTrustedAdvisorCheck operation for these checks causes an InvalidParameterValue error. The response contains a TrustedAdvisorCheckRefreshStatus object, which contains these fields: status. The refresh status of the check: "none", "enqueued", "processing", "success", or "abandoned". millisUntilNextRefreshable. The amount of time, in milliseconds, until the check is eligible for refresh. checkId. The unique identifier for the check. - */ - refreshTrustedAdvisorCheck(callback?: (err: AWSError, data: Support.Types.RefreshTrustedAdvisorCheckResponse) => void): Request; - /** - * Takes a caseId and returns the initial state of the case along with the state of the case after the call to ResolveCase completed. - */ - resolveCase(params: Support.Types.ResolveCaseRequest, callback?: (err: AWSError, data: Support.Types.ResolveCaseResponse) => void): Request; - /** - * Takes a caseId and returns the initial state of the case along with the state of the case after the call to ResolveCase completed. - */ - resolveCase(callback?: (err: AWSError, data: Support.Types.ResolveCaseResponse) => void): Request; -} -declare namespace Support { - export interface AddAttachmentsToSetRequest { - /** - * The ID of the attachment set. If an attachmentSetId is not specified, a new attachment set is created, and the ID of the set is returned in the response. If an attachmentSetId is specified, the attachments are added to the specified set, if it exists. - */ - attachmentSetId?: AttachmentSetId; - /** - * One or more attachments to add to the set. The limit is 3 attachments per set, and the size limit is 5 MB per attachment. - */ - attachments: Attachments; - } - export interface AddAttachmentsToSetResponse { - /** - * The ID of the attachment set. If an attachmentSetId was not specified, a new attachment set is created, and the ID of the set is returned in the response. If an attachmentSetId was specified, the attachments are added to the specified set, if it exists. - */ - attachmentSetId?: AttachmentSetId; - /** - * The time and date when the attachment set expires. - */ - expiryTime?: ExpiryTime; - } - export interface AddCommunicationToCaseRequest { - /** - * The AWS Support case ID requested or returned in the call. The case ID is an alphanumeric string formatted as shown in this example: case-12345678910-2013-c4c1d2bf33c5cf47 - */ - caseId?: CaseId; - /** - * The body of an email communication to add to the support case. - */ - communicationBody: CommunicationBody; - /** - * The email addresses in the CC line of an email to be added to the support case. - */ - ccEmailAddresses?: CcEmailAddressList; - /** - * The ID of a set of one or more attachments for the communication to add to the case. Create the set by calling AddAttachmentsToSet - */ - attachmentSetId?: AttachmentSetId; - } - export interface AddCommunicationToCaseResponse { - /** - * True if AddCommunicationToCase succeeds. Otherwise, returns an error. - */ - result?: Result; - } - export type AfterTime = string; - export interface Attachment { - /** - * The name of the attachment file. - */ - fileName?: FileName; - /** - * The content of the attachment file. - */ - data?: Data; - } - export interface AttachmentDetails { - /** - * The ID of the attachment. - */ - attachmentId?: AttachmentId; - /** - * The file name of the attachment. - */ - fileName?: FileName; - } - export type AttachmentId = string; - export type AttachmentSet = AttachmentDetails[]; - export type AttachmentSetId = string; - export type Attachments = Attachment[]; - export type BeforeTime = string; - export type Boolean = boolean; - export interface CaseDetails { - /** - * The AWS Support case ID requested or returned in the call. The case ID is an alphanumeric string formatted as shown in this example: case-12345678910-2013-c4c1d2bf33c5cf47 - */ - caseId?: CaseId; - /** - * The ID displayed for the case in the AWS Support Center. This is a numeric string. - */ - displayId?: DisplayId; - /** - * The subject line for the case in the AWS Support Center. - */ - subject?: Subject; - /** - * The status of the case. - */ - status?: Status; - /** - * The code for the AWS service returned by the call to DescribeServices. - */ - serviceCode?: ServiceCode; - /** - * The category of problem for the AWS Support case. - */ - categoryCode?: CategoryCode; - /** - * The code for the severity level returned by the call to DescribeSeverityLevels. - */ - severityCode?: SeverityCode; - /** - * The email address of the account that submitted the case. - */ - submittedBy?: SubmittedBy; - /** - * The time that the case was case created in the AWS Support Center. - */ - timeCreated?: TimeCreated; - /** - * The five most recent communications between you and AWS Support Center, including the IDs of any attachments to the communications. Also includes a nextToken that you can use to retrieve earlier communications. - */ - recentCommunications?: RecentCaseCommunications; - /** - * The email addresses that receive copies of communication about the case. - */ - ccEmailAddresses?: CcEmailAddressList; - /** - * The ISO 639-1 code for the language in which AWS provides support. AWS Support currently supports English ("en") and Japanese ("ja"). Language parameters must be passed explicitly for operations that take them. - */ - language?: Language; - } - export type CaseId = string; - export type CaseIdList = CaseId[]; - export type CaseList = CaseDetails[]; - export type CaseStatus = string; - export interface Category { - /** - * The category code for the support case. - */ - code?: CategoryCode; - /** - * The category name for the support case. - */ - name?: CategoryName; - } - export type CategoryCode = string; - export type CategoryList = Category[]; - export type CategoryName = string; - export type CcEmailAddress = string; - export type CcEmailAddressList = CcEmailAddress[]; - export interface Communication { - /** - * The AWS Support case ID requested or returned in the call. The case ID is an alphanumeric string formatted as shown in this example: case-12345678910-2013-c4c1d2bf33c5cf47 - */ - caseId?: CaseId; - /** - * The text of the communication between the customer and AWS Support. - */ - body?: CommunicationBody; - /** - * The email address of the account that submitted the AWS Support case. - */ - submittedBy?: SubmittedBy; - /** - * The time the communication was created. - */ - timeCreated?: TimeCreated; - /** - * Information about the attachments to the case communication. - */ - attachmentSet?: AttachmentSet; - } - export type CommunicationBody = string; - export type CommunicationList = Communication[]; - export interface CreateCaseRequest { - /** - * The title of the AWS Support case. - */ - subject: Subject; - /** - * The code for the AWS service returned by the call to DescribeServices. - */ - serviceCode?: ServiceCode; - /** - * The code for the severity level returned by the call to DescribeSeverityLevels. The availability of severity levels depends on each customer's support subscription. In other words, your subscription may not necessarily require the urgent level of response time. - */ - severityCode?: SeverityCode; - /** - * The category of problem for the AWS Support case. - */ - categoryCode?: CategoryCode; - /** - * The communication body text when you create an AWS Support case by calling CreateCase. - */ - communicationBody: CommunicationBody; - /** - * A list of email addresses that AWS Support copies on case correspondence. - */ - ccEmailAddresses?: CcEmailAddressList; - /** - * The ISO 639-1 code for the language in which AWS provides support. AWS Support currently supports English ("en") and Japanese ("ja"). Language parameters must be passed explicitly for operations that take them. - */ - language?: Language; - /** - * The type of issue for the case. You can specify either "customer-service" or "technical." If you do not indicate a value, the default is "technical." - */ - issueType?: IssueType; - /** - * The ID of a set of one or more attachments for the case. Create the set by using AddAttachmentsToSet. - */ - attachmentSetId?: AttachmentSetId; - } - export interface CreateCaseResponse { - /** - * The AWS Support case ID requested or returned in the call. The case ID is an alphanumeric string formatted as shown in this example: case-12345678910-2013-c4c1d2bf33c5cf47 - */ - caseId?: CaseId; - } - export type Data = Buffer|Uint8Array|Blob|string; - export interface DescribeAttachmentRequest { - /** - * The ID of the attachment to return. Attachment IDs are returned by the DescribeCommunications operation. - */ - attachmentId: AttachmentId; - } - export interface DescribeAttachmentResponse { - /** - * The attachment content and file name. - */ - attachment?: Attachment; - } - export interface DescribeCasesRequest { - /** - * A list of ID numbers of the support cases you want returned. The maximum number of cases is 100. - */ - caseIdList?: CaseIdList; - /** - * The ID displayed for a case in the AWS Support Center user interface. - */ - displayId?: DisplayId; - /** - * The start date for a filtered date search on support case communications. Case communications are available for 12 months after creation. - */ - afterTime?: AfterTime; - /** - * The end date for a filtered date search on support case communications. Case communications are available for 12 months after creation. - */ - beforeTime?: BeforeTime; - /** - * Specifies whether resolved support cases should be included in the DescribeCases results. The default is false. - */ - includeResolvedCases?: IncludeResolvedCases; - /** - * A resumption point for pagination. - */ - nextToken?: NextToken; - /** - * The maximum number of results to return before paginating. - */ - maxResults?: MaxResults; - /** - * The ISO 639-1 code for the language in which AWS provides support. AWS Support currently supports English ("en") and Japanese ("ja"). Language parameters must be passed explicitly for operations that take them. - */ - language?: Language; - /** - * Specifies whether communications should be included in the DescribeCases results. The default is true. - */ - includeCommunications?: IncludeCommunications; - } - export interface DescribeCasesResponse { - /** - * The details for the cases that match the request. - */ - cases?: CaseList; - /** - * A resumption point for pagination. - */ - nextToken?: NextToken; - } - export interface DescribeCommunicationsRequest { - /** - * The AWS Support case ID requested or returned in the call. The case ID is an alphanumeric string formatted as shown in this example: case-12345678910-2013-c4c1d2bf33c5cf47 - */ - caseId: CaseId; - /** - * The end date for a filtered date search on support case communications. Case communications are available for 12 months after creation. - */ - beforeTime?: BeforeTime; - /** - * The start date for a filtered date search on support case communications. Case communications are available for 12 months after creation. - */ - afterTime?: AfterTime; - /** - * A resumption point for pagination. - */ - nextToken?: NextToken; - /** - * The maximum number of results to return before paginating. - */ - maxResults?: MaxResults; - } - export interface DescribeCommunicationsResponse { - /** - * The communications for the case. - */ - communications?: CommunicationList; - /** - * A resumption point for pagination. - */ - nextToken?: NextToken; - } - export interface DescribeServicesRequest { - /** - * A JSON-formatted list of service codes available for AWS services. - */ - serviceCodeList?: ServiceCodeList; - /** - * The ISO 639-1 code for the language in which AWS provides support. AWS Support currently supports English ("en") and Japanese ("ja"). Language parameters must be passed explicitly for operations that take them. - */ - language?: Language; - } - export interface DescribeServicesResponse { - /** - * A JSON-formatted list of AWS services. - */ - services?: ServiceList; - } - export interface DescribeSeverityLevelsRequest { - /** - * The ISO 639-1 code for the language in which AWS provides support. AWS Support currently supports English ("en") and Japanese ("ja"). Language parameters must be passed explicitly for operations that take them. - */ - language?: Language; - } - export interface DescribeSeverityLevelsResponse { - /** - * The available severity levels for the support case. Available severity levels are defined by your service level agreement with AWS. - */ - severityLevels?: SeverityLevelsList; - } - export interface DescribeTrustedAdvisorCheckRefreshStatusesRequest { - /** - * The IDs of the Trusted Advisor checks to get the status of. Note: Specifying the check ID of a check that is automatically refreshed causes an InvalidParameterValue error. - */ - checkIds: StringList; - } - export interface DescribeTrustedAdvisorCheckRefreshStatusesResponse { - /** - * The refresh status of the specified Trusted Advisor checks. - */ - statuses: TrustedAdvisorCheckRefreshStatusList; - } - export interface DescribeTrustedAdvisorCheckResultRequest { - /** - * The unique identifier for the Trusted Advisor check. - */ - checkId: String; - /** - * The ISO 639-1 code for the language in which AWS provides support. AWS Support currently supports English ("en") and Japanese ("ja"). Language parameters must be passed explicitly for operations that take them. - */ - language?: String; - } - export interface DescribeTrustedAdvisorCheckResultResponse { - /** - * The detailed results of the Trusted Advisor check. - */ - result?: TrustedAdvisorCheckResult; - } - export interface DescribeTrustedAdvisorCheckSummariesRequest { - /** - * The IDs of the Trusted Advisor checks. - */ - checkIds: StringList; - } - export interface DescribeTrustedAdvisorCheckSummariesResponse { - /** - * The summary information for the requested Trusted Advisor checks. - */ - summaries: TrustedAdvisorCheckSummaryList; - } - export interface DescribeTrustedAdvisorChecksRequest { - /** - * The ISO 639-1 code for the language in which AWS provides support. AWS Support currently supports English ("en") and Japanese ("ja"). Language parameters must be passed explicitly for operations that take them. - */ - language: String; - } - export interface DescribeTrustedAdvisorChecksResponse { - /** - * Information about all available Trusted Advisor checks. - */ - checks: TrustedAdvisorCheckList; - } - export type DisplayId = string; - export type Double = number; - export type ErrorMessage = string; - export type ExpiryTime = string; - export type FileName = string; - export type IncludeCommunications = boolean; - export type IncludeResolvedCases = boolean; - export type IssueType = string; - export type Language = string; - export type Long = number; - export type MaxResults = number; - export type NextToken = string; - export interface RecentCaseCommunications { - /** - * The five most recent communications associated with the case. - */ - communications?: CommunicationList; - /** - * A resumption point for pagination. - */ - nextToken?: NextToken; - } - export interface RefreshTrustedAdvisorCheckRequest { - /** - * The unique identifier for the Trusted Advisor check to refresh. Note: Specifying the check ID of a check that is automatically refreshed causes an InvalidParameterValue error. - */ - checkId: String; - } - export interface RefreshTrustedAdvisorCheckResponse { - /** - * The current refresh status for a check, including the amount of time until the check is eligible for refresh. - */ - status: TrustedAdvisorCheckRefreshStatus; - } - export interface ResolveCaseRequest { - /** - * The AWS Support case ID requested or returned in the call. The case ID is an alphanumeric string formatted as shown in this example: case-12345678910-2013-c4c1d2bf33c5cf47 - */ - caseId?: CaseId; - } - export interface ResolveCaseResponse { - /** - * The status of the case when the ResolveCase request was sent. - */ - initialCaseStatus?: CaseStatus; - /** - * The status of the case after the ResolveCase request was processed. - */ - finalCaseStatus?: CaseStatus; - } - export type Result = boolean; - export interface Service { - /** - * The code for an AWS service returned by the DescribeServices response. The name element contains the corresponding friendly name. - */ - code?: ServiceCode; - /** - * The friendly name for an AWS service. The code element contains the corresponding code. - */ - name?: ServiceName; - /** - * A list of categories that describe the type of support issue a case describes. Categories consist of a category name and a category code. Category names and codes are passed to AWS Support when you call CreateCase. - */ - categories?: CategoryList; - } - export type ServiceCode = string; - export type ServiceCodeList = ServiceCode[]; - export type ServiceList = Service[]; - export type ServiceName = string; - export type SeverityCode = string; - export interface SeverityLevel { - /** - * One of four values: "low," "medium," "high," and "urgent". These values correspond to response times returned to the caller in severityLevel.name. - */ - code?: SeverityLevelCode; - /** - * The name of the severity level that corresponds to the severity level code. - */ - name?: SeverityLevelName; - } - export type SeverityLevelCode = string; - export type SeverityLevelName = string; - export type SeverityLevelsList = SeverityLevel[]; - export type Status = string; - export type String = string; - export type StringList = String[]; - export type Subject = string; - export type SubmittedBy = string; - export type TimeCreated = string; - export interface TrustedAdvisorCategorySpecificSummary { - /** - * The summary information about cost savings for a Trusted Advisor check that is in the Cost Optimizing category. - */ - costOptimizing?: TrustedAdvisorCostOptimizingSummary; - } - export interface TrustedAdvisorCheckDescription { - /** - * The unique identifier for the Trusted Advisor check. - */ - id: String; - /** - * The display name for the Trusted Advisor check. - */ - name: String; - /** - * The description of the Trusted Advisor check, which includes the alert criteria and recommended actions (contains HTML markup). - */ - description: String; - /** - * The category of the Trusted Advisor check. - */ - category: String; - /** - * The column headings for the data returned by the Trusted Advisor check. The order of the headings corresponds to the order of the data in the Metadata element of the TrustedAdvisorResourceDetail for the check. Metadata contains all the data that is shown in the Excel download, even in those cases where the UI shows just summary data. - */ - metadata: StringList; - } - export type TrustedAdvisorCheckList = TrustedAdvisorCheckDescription[]; - export interface TrustedAdvisorCheckRefreshStatus { - /** - * The unique identifier for the Trusted Advisor check. - */ - checkId: String; - /** - * The status of the Trusted Advisor check for which a refresh has been requested: "none", "enqueued", "processing", "success", or "abandoned". - */ - status: String; - /** - * The amount of time, in milliseconds, until the Trusted Advisor check is eligible for refresh. - */ - millisUntilNextRefreshable: Long; - } - export type TrustedAdvisorCheckRefreshStatusList = TrustedAdvisorCheckRefreshStatus[]; - export interface TrustedAdvisorCheckResult { - /** - * The unique identifier for the Trusted Advisor check. - */ - checkId: String; - /** - * The time of the last refresh of the check. - */ - timestamp: String; - /** - * The alert status of the check: "ok" (green), "warning" (yellow), "error" (red), or "not_available". - */ - status: String; - resourcesSummary: TrustedAdvisorResourcesSummary; - /** - * Summary information that relates to the category of the check. Cost Optimizing is the only category that is currently supported. - */ - categorySpecificSummary: TrustedAdvisorCategorySpecificSummary; - /** - * The details about each resource listed in the check result. - */ - flaggedResources: TrustedAdvisorResourceDetailList; - } - export interface TrustedAdvisorCheckSummary { - /** - * The unique identifier for the Trusted Advisor check. - */ - checkId: String; - /** - * The time of the last refresh of the check. - */ - timestamp: String; - /** - * The alert status of the check: "ok" (green), "warning" (yellow), "error" (red), or "not_available". - */ - status: String; - /** - * Specifies whether the Trusted Advisor check has flagged resources. - */ - hasFlaggedResources?: Boolean; - resourcesSummary: TrustedAdvisorResourcesSummary; - /** - * Summary information that relates to the category of the check. Cost Optimizing is the only category that is currently supported. - */ - categorySpecificSummary: TrustedAdvisorCategorySpecificSummary; - } - export type TrustedAdvisorCheckSummaryList = TrustedAdvisorCheckSummary[]; - export interface TrustedAdvisorCostOptimizingSummary { - /** - * The estimated monthly savings that might be realized if the recommended actions are taken. - */ - estimatedMonthlySavings: Double; - /** - * The estimated percentage of savings that might be realized if the recommended actions are taken. - */ - estimatedPercentMonthlySavings: Double; - } - export interface TrustedAdvisorResourceDetail { - /** - * The status code for the resource identified in the Trusted Advisor check. - */ - status: String; - /** - * The AWS region in which the identified resource is located. - */ - region?: String; - /** - * The unique identifier for the identified resource. - */ - resourceId: String; - /** - * Specifies whether the AWS resource was ignored by Trusted Advisor because it was marked as suppressed by the user. - */ - isSuppressed?: Boolean; - /** - * Additional information about the identified resource. The exact metadata and its order can be obtained by inspecting the TrustedAdvisorCheckDescription object returned by the call to DescribeTrustedAdvisorChecks. Metadata contains all the data that is shown in the Excel download, even in those cases where the UI shows just summary data. - */ - metadata: StringList; - } - export type TrustedAdvisorResourceDetailList = TrustedAdvisorResourceDetail[]; - export interface TrustedAdvisorResourcesSummary { - /** - * The number of AWS resources that were analyzed by the Trusted Advisor check. - */ - resourcesProcessed: Long; - /** - * The number of AWS resources that were flagged (listed) by the Trusted Advisor check. - */ - resourcesFlagged: Long; - /** - * The number of AWS resources ignored by Trusted Advisor because information was unavailable. - */ - resourcesIgnored: Long; - /** - * The number of AWS resources ignored by Trusted Advisor because they were marked as suppressed by the user. - */ - resourcesSuppressed: Long; - } - /** - * A string in YYYY-MM-DD format that represents the latest possible API version that can be used in this service. Specify 'latest' to use the latest possible version. - */ - export type apiVersion = "2013-04-15"|"latest"|string; - export interface ClientApiVersions { - /** - * A string in YYYY-MM-DD format that represents the latest possible API version that can be used in this service. Specify 'latest' to use the latest possible version. - */ - apiVersion?: apiVersion; - } - export type ClientConfiguration = ServiceConfigurationOptions & ClientApiVersions; - /** - * Contains interfaces for use with the Support client. - */ - export import Types = Support; -} -export = Support; diff --git a/workshops/monte-carlo-on-ec2-spot-fleet/src/web/node_modules/aws-sdk/clients/support.js b/workshops/monte-carlo-on-ec2-spot-fleet/src/web/node_modules/aws-sdk/clients/support.js deleted file mode 100644 index 2b032ef6..00000000 --- a/workshops/monte-carlo-on-ec2-spot-fleet/src/web/node_modules/aws-sdk/clients/support.js +++ /dev/null @@ -1,18 +0,0 @@ -require('../lib/node_loader'); -var AWS = require('../lib/core'); -var Service = AWS.Service; -var apiLoader = AWS.apiLoader; - -apiLoader.services['support'] = {}; -AWS.Support = Service.defineService('support', ['2013-04-15']); -Object.defineProperty(apiLoader.services['support'], '2013-04-15', { - get: function get() { - var model = require('../apis/support-2013-04-15.min.json'); - model.paginators = require('../apis/support-2013-04-15.paginators.json').pagination; - return model; - }, - enumerable: true, - configurable: true -}); - -module.exports = AWS.Support; diff --git a/workshops/monte-carlo-on-ec2-spot-fleet/src/web/node_modules/aws-sdk/clients/swf.d.ts b/workshops/monte-carlo-on-ec2-spot-fleet/src/web/node_modules/aws-sdk/clients/swf.d.ts deleted file mode 100644 index d577090b..00000000 --- a/workshops/monte-carlo-on-ec2-spot-fleet/src/web/node_modules/aws-sdk/clients/swf.d.ts +++ /dev/null @@ -1,2925 +0,0 @@ -import {Request} from '../lib/request'; -import {Response} from '../lib/response'; -import {AWSError} from '../lib/error'; -import {Service} from '../lib/service'; -import {ServiceConfigurationOptions} from '../lib/service'; -import {ConfigBase as Config} from '../lib/config'; -interface Blob {} -declare class SWF extends Service { - /** - * Constructs a service object. This object has one method for each API operation. - */ - constructor(options?: SWF.Types.ClientConfiguration) - config: Config & SWF.Types.ClientConfiguration; - /** - * Returns the number of closed workflow executions within the given domain that meet the specified filtering criteria. This operation is eventually consistent. The results are best effort and may not exactly reflect recent updates and changes. Access Control You can use IAM policies to control this action's access to Amazon SWF resources as follows: Use a Resource element with the domain name to limit the action to only specified domains. Use an Action element to allow or deny permission to call this action. Constrain the following parameters by using a Condition element with the appropriate keys. tagFilter.tag: String constraint. The key is swf:tagFilter.tag. typeFilter.name: String constraint. The key is swf:typeFilter.name. typeFilter.version: String constraint. The key is swf:typeFilter.version. If the caller doesn't have sufficient permissions to invoke the action, or the parameter values fall outside the specified constraints, the action fails. The associated event attribute's cause parameter is set to OPERATION_NOT_PERMITTED. For details and example IAM policies, see Using IAM to Manage Access to Amazon SWF Workflows in the Amazon SWF Developer Guide. - */ - countClosedWorkflowExecutions(params: SWF.Types.CountClosedWorkflowExecutionsInput, callback?: (err: AWSError, data: SWF.Types.WorkflowExecutionCount) => void): Request; - /** - * Returns the number of closed workflow executions within the given domain that meet the specified filtering criteria. This operation is eventually consistent. The results are best effort and may not exactly reflect recent updates and changes. Access Control You can use IAM policies to control this action's access to Amazon SWF resources as follows: Use a Resource element with the domain name to limit the action to only specified domains. Use an Action element to allow or deny permission to call this action. Constrain the following parameters by using a Condition element with the appropriate keys. tagFilter.tag: String constraint. The key is swf:tagFilter.tag. typeFilter.name: String constraint. The key is swf:typeFilter.name. typeFilter.version: String constraint. The key is swf:typeFilter.version. If the caller doesn't have sufficient permissions to invoke the action, or the parameter values fall outside the specified constraints, the action fails. The associated event attribute's cause parameter is set to OPERATION_NOT_PERMITTED. For details and example IAM policies, see Using IAM to Manage Access to Amazon SWF Workflows in the Amazon SWF Developer Guide. - */ - countClosedWorkflowExecutions(callback?: (err: AWSError, data: SWF.Types.WorkflowExecutionCount) => void): Request; - /** - * Returns the number of open workflow executions within the given domain that meet the specified filtering criteria. This operation is eventually consistent. The results are best effort and may not exactly reflect recent updates and changes. Access Control You can use IAM policies to control this action's access to Amazon SWF resources as follows: Use a Resource element with the domain name to limit the action to only specified domains. Use an Action element to allow or deny permission to call this action. Constrain the following parameters by using a Condition element with the appropriate keys. tagFilter.tag: String constraint. The key is swf:tagFilter.tag. typeFilter.name: String constraint. The key is swf:typeFilter.name. typeFilter.version: String constraint. The key is swf:typeFilter.version. If the caller doesn't have sufficient permissions to invoke the action, or the parameter values fall outside the specified constraints, the action fails. The associated event attribute's cause parameter is set to OPERATION_NOT_PERMITTED. For details and example IAM policies, see Using IAM to Manage Access to Amazon SWF Workflows in the Amazon SWF Developer Guide. - */ - countOpenWorkflowExecutions(params: SWF.Types.CountOpenWorkflowExecutionsInput, callback?: (err: AWSError, data: SWF.Types.WorkflowExecutionCount) => void): Request; - /** - * Returns the number of open workflow executions within the given domain that meet the specified filtering criteria. This operation is eventually consistent. The results are best effort and may not exactly reflect recent updates and changes. Access Control You can use IAM policies to control this action's access to Amazon SWF resources as follows: Use a Resource element with the domain name to limit the action to only specified domains. Use an Action element to allow or deny permission to call this action. Constrain the following parameters by using a Condition element with the appropriate keys. tagFilter.tag: String constraint. The key is swf:tagFilter.tag. typeFilter.name: String constraint. The key is swf:typeFilter.name. typeFilter.version: String constraint. The key is swf:typeFilter.version. If the caller doesn't have sufficient permissions to invoke the action, or the parameter values fall outside the specified constraints, the action fails. The associated event attribute's cause parameter is set to OPERATION_NOT_PERMITTED. For details and example IAM policies, see Using IAM to Manage Access to Amazon SWF Workflows in the Amazon SWF Developer Guide. - */ - countOpenWorkflowExecutions(callback?: (err: AWSError, data: SWF.Types.WorkflowExecutionCount) => void): Request; - /** - * Returns the estimated number of activity tasks in the specified task list. The count returned is an approximation and isn't guaranteed to be exact. If you specify a task list that no activity task was ever scheduled in then 0 is returned. Access Control You can use IAM policies to control this action's access to Amazon SWF resources as follows: Use a Resource element with the domain name to limit the action to only specified domains. Use an Action element to allow or deny permission to call this action. Constrain the taskList.name parameter by using a Condition element with the swf:taskList.name key to allow the action to access only certain task lists. If the caller doesn't have sufficient permissions to invoke the action, or the parameter values fall outside the specified constraints, the action fails. The associated event attribute's cause parameter is set to OPERATION_NOT_PERMITTED. For details and example IAM policies, see Using IAM to Manage Access to Amazon SWF Workflows in the Amazon SWF Developer Guide. - */ - countPendingActivityTasks(params: SWF.Types.CountPendingActivityTasksInput, callback?: (err: AWSError, data: SWF.Types.PendingTaskCount) => void): Request; - /** - * Returns the estimated number of activity tasks in the specified task list. The count returned is an approximation and isn't guaranteed to be exact. If you specify a task list that no activity task was ever scheduled in then 0 is returned. Access Control You can use IAM policies to control this action's access to Amazon SWF resources as follows: Use a Resource element with the domain name to limit the action to only specified domains. Use an Action element to allow or deny permission to call this action. Constrain the taskList.name parameter by using a Condition element with the swf:taskList.name key to allow the action to access only certain task lists. If the caller doesn't have sufficient permissions to invoke the action, or the parameter values fall outside the specified constraints, the action fails. The associated event attribute's cause parameter is set to OPERATION_NOT_PERMITTED. For details and example IAM policies, see Using IAM to Manage Access to Amazon SWF Workflows in the Amazon SWF Developer Guide. - */ - countPendingActivityTasks(callback?: (err: AWSError, data: SWF.Types.PendingTaskCount) => void): Request; - /** - * Returns the estimated number of decision tasks in the specified task list. The count returned is an approximation and isn't guaranteed to be exact. If you specify a task list that no decision task was ever scheduled in then 0 is returned. Access Control You can use IAM policies to control this action's access to Amazon SWF resources as follows: Use a Resource element with the domain name to limit the action to only specified domains. Use an Action element to allow or deny permission to call this action. Constrain the taskList.name parameter by using a Condition element with the swf:taskList.name key to allow the action to access only certain task lists. If the caller doesn't have sufficient permissions to invoke the action, or the parameter values fall outside the specified constraints, the action fails. The associated event attribute's cause parameter is set to OPERATION_NOT_PERMITTED. For details and example IAM policies, see Using IAM to Manage Access to Amazon SWF Workflows in the Amazon SWF Developer Guide. - */ - countPendingDecisionTasks(params: SWF.Types.CountPendingDecisionTasksInput, callback?: (err: AWSError, data: SWF.Types.PendingTaskCount) => void): Request; - /** - * Returns the estimated number of decision tasks in the specified task list. The count returned is an approximation and isn't guaranteed to be exact. If you specify a task list that no decision task was ever scheduled in then 0 is returned. Access Control You can use IAM policies to control this action's access to Amazon SWF resources as follows: Use a Resource element with the domain name to limit the action to only specified domains. Use an Action element to allow or deny permission to call this action. Constrain the taskList.name parameter by using a Condition element with the swf:taskList.name key to allow the action to access only certain task lists. If the caller doesn't have sufficient permissions to invoke the action, or the parameter values fall outside the specified constraints, the action fails. The associated event attribute's cause parameter is set to OPERATION_NOT_PERMITTED. For details and example IAM policies, see Using IAM to Manage Access to Amazon SWF Workflows in the Amazon SWF Developer Guide. - */ - countPendingDecisionTasks(callback?: (err: AWSError, data: SWF.Types.PendingTaskCount) => void): Request; - /** - * Deprecates the specified activity type. After an activity type has been deprecated, you cannot create new tasks of that activity type. Tasks of this type that were scheduled before the type was deprecated continue to run. This operation is eventually consistent. The results are best effort and may not exactly reflect recent updates and changes. Access Control You can use IAM policies to control this action's access to Amazon SWF resources as follows: Use a Resource element with the domain name to limit the action to only specified domains. Use an Action element to allow or deny permission to call this action. Constrain the following parameters by using a Condition element with the appropriate keys. activityType.name: String constraint. The key is swf:activityType.name. activityType.version: String constraint. The key is swf:activityType.version. If the caller doesn't have sufficient permissions to invoke the action, or the parameter values fall outside the specified constraints, the action fails. The associated event attribute's cause parameter is set to OPERATION_NOT_PERMITTED. For details and example IAM policies, see Using IAM to Manage Access to Amazon SWF Workflows in the Amazon SWF Developer Guide. - */ - deprecateActivityType(params: SWF.Types.DeprecateActivityTypeInput, callback?: (err: AWSError, data: {}) => void): Request<{}, AWSError>; - /** - * Deprecates the specified activity type. After an activity type has been deprecated, you cannot create new tasks of that activity type. Tasks of this type that were scheduled before the type was deprecated continue to run. This operation is eventually consistent. The results are best effort and may not exactly reflect recent updates and changes. Access Control You can use IAM policies to control this action's access to Amazon SWF resources as follows: Use a Resource element with the domain name to limit the action to only specified domains. Use an Action element to allow or deny permission to call this action. Constrain the following parameters by using a Condition element with the appropriate keys. activityType.name: String constraint. The key is swf:activityType.name. activityType.version: String constraint. The key is swf:activityType.version. If the caller doesn't have sufficient permissions to invoke the action, or the parameter values fall outside the specified constraints, the action fails. The associated event attribute's cause parameter is set to OPERATION_NOT_PERMITTED. For details and example IAM policies, see Using IAM to Manage Access to Amazon SWF Workflows in the Amazon SWF Developer Guide. - */ - deprecateActivityType(callback?: (err: AWSError, data: {}) => void): Request<{}, AWSError>; - /** - * Deprecates the specified domain. After a domain has been deprecated it cannot be used to create new workflow executions or register new types. However, you can still use visibility actions on this domain. Deprecating a domain also deprecates all activity and workflow types registered in the domain. Executions that were started before the domain was deprecated continues to run. This operation is eventually consistent. The results are best effort and may not exactly reflect recent updates and changes. Access Control You can use IAM policies to control this action's access to Amazon SWF resources as follows: Use a Resource element with the domain name to limit the action to only specified domains. Use an Action element to allow or deny permission to call this action. You cannot use an IAM policy to constrain this action's parameters. If the caller doesn't have sufficient permissions to invoke the action, or the parameter values fall outside the specified constraints, the action fails. The associated event attribute's cause parameter is set to OPERATION_NOT_PERMITTED. For details and example IAM policies, see Using IAM to Manage Access to Amazon SWF Workflows in the Amazon SWF Developer Guide. - */ - deprecateDomain(params: SWF.Types.DeprecateDomainInput, callback?: (err: AWSError, data: {}) => void): Request<{}, AWSError>; - /** - * Deprecates the specified domain. After a domain has been deprecated it cannot be used to create new workflow executions or register new types. However, you can still use visibility actions on this domain. Deprecating a domain also deprecates all activity and workflow types registered in the domain. Executions that were started before the domain was deprecated continues to run. This operation is eventually consistent. The results are best effort and may not exactly reflect recent updates and changes. Access Control You can use IAM policies to control this action's access to Amazon SWF resources as follows: Use a Resource element with the domain name to limit the action to only specified domains. Use an Action element to allow or deny permission to call this action. You cannot use an IAM policy to constrain this action's parameters. If the caller doesn't have sufficient permissions to invoke the action, or the parameter values fall outside the specified constraints, the action fails. The associated event attribute's cause parameter is set to OPERATION_NOT_PERMITTED. For details and example IAM policies, see Using IAM to Manage Access to Amazon SWF Workflows in the Amazon SWF Developer Guide. - */ - deprecateDomain(callback?: (err: AWSError, data: {}) => void): Request<{}, AWSError>; - /** - * Deprecates the specified workflow type. After a workflow type has been deprecated, you cannot create new executions of that type. Executions that were started before the type was deprecated continues to run. A deprecated workflow type may still be used when calling visibility actions. This operation is eventually consistent. The results are best effort and may not exactly reflect recent updates and changes. Access Control You can use IAM policies to control this action's access to Amazon SWF resources as follows: Use a Resource element with the domain name to limit the action to only specified domains. Use an Action element to allow or deny permission to call this action. Constrain the following parameters by using a Condition element with the appropriate keys. workflowType.name: String constraint. The key is swf:workflowType.name. workflowType.version: String constraint. The key is swf:workflowType.version. If the caller doesn't have sufficient permissions to invoke the action, or the parameter values fall outside the specified constraints, the action fails. The associated event attribute's cause parameter is set to OPERATION_NOT_PERMITTED. For details and example IAM policies, see Using IAM to Manage Access to Amazon SWF Workflows in the Amazon SWF Developer Guide. - */ - deprecateWorkflowType(params: SWF.Types.DeprecateWorkflowTypeInput, callback?: (err: AWSError, data: {}) => void): Request<{}, AWSError>; - /** - * Deprecates the specified workflow type. After a workflow type has been deprecated, you cannot create new executions of that type. Executions that were started before the type was deprecated continues to run. A deprecated workflow type may still be used when calling visibility actions. This operation is eventually consistent. The results are best effort and may not exactly reflect recent updates and changes. Access Control You can use IAM policies to control this action's access to Amazon SWF resources as follows: Use a Resource element with the domain name to limit the action to only specified domains. Use an Action element to allow or deny permission to call this action. Constrain the following parameters by using a Condition element with the appropriate keys. workflowType.name: String constraint. The key is swf:workflowType.name. workflowType.version: String constraint. The key is swf:workflowType.version. If the caller doesn't have sufficient permissions to invoke the action, or the parameter values fall outside the specified constraints, the action fails. The associated event attribute's cause parameter is set to OPERATION_NOT_PERMITTED. For details and example IAM policies, see Using IAM to Manage Access to Amazon SWF Workflows in the Amazon SWF Developer Guide. - */ - deprecateWorkflowType(callback?: (err: AWSError, data: {}) => void): Request<{}, AWSError>; - /** - * Returns information about the specified activity type. This includes configuration settings provided when the type was registered and other general information about the type. Access Control You can use IAM policies to control this action's access to Amazon SWF resources as follows: Use a Resource element with the domain name to limit the action to only specified domains. Use an Action element to allow or deny permission to call this action. Constrain the following parameters by using a Condition element with the appropriate keys. activityType.name: String constraint. The key is swf:activityType.name. activityType.version: String constraint. The key is swf:activityType.version. If the caller doesn't have sufficient permissions to invoke the action, or the parameter values fall outside the specified constraints, the action fails. The associated event attribute's cause parameter is set to OPERATION_NOT_PERMITTED. For details and example IAM policies, see Using IAM to Manage Access to Amazon SWF Workflows in the Amazon SWF Developer Guide. - */ - describeActivityType(params: SWF.Types.DescribeActivityTypeInput, callback?: (err: AWSError, data: SWF.Types.ActivityTypeDetail) => void): Request; - /** - * Returns information about the specified activity type. This includes configuration settings provided when the type was registered and other general information about the type. Access Control You can use IAM policies to control this action's access to Amazon SWF resources as follows: Use a Resource element with the domain name to limit the action to only specified domains. Use an Action element to allow or deny permission to call this action. Constrain the following parameters by using a Condition element with the appropriate keys. activityType.name: String constraint. The key is swf:activityType.name. activityType.version: String constraint. The key is swf:activityType.version. If the caller doesn't have sufficient permissions to invoke the action, or the parameter values fall outside the specified constraints, the action fails. The associated event attribute's cause parameter is set to OPERATION_NOT_PERMITTED. For details and example IAM policies, see Using IAM to Manage Access to Amazon SWF Workflows in the Amazon SWF Developer Guide. - */ - describeActivityType(callback?: (err: AWSError, data: SWF.Types.ActivityTypeDetail) => void): Request; - /** - * Returns information about the specified domain, including description and status. Access Control You can use IAM policies to control this action's access to Amazon SWF resources as follows: Use a Resource element with the domain name to limit the action to only specified domains. Use an Action element to allow or deny permission to call this action. You cannot use an IAM policy to constrain this action's parameters. If the caller doesn't have sufficient permissions to invoke the action, or the parameter values fall outside the specified constraints, the action fails. The associated event attribute's cause parameter is set to OPERATION_NOT_PERMITTED. For details and example IAM policies, see Using IAM to Manage Access to Amazon SWF Workflows in the Amazon SWF Developer Guide. - */ - describeDomain(params: SWF.Types.DescribeDomainInput, callback?: (err: AWSError, data: SWF.Types.DomainDetail) => void): Request; - /** - * Returns information about the specified domain, including description and status. Access Control You can use IAM policies to control this action's access to Amazon SWF resources as follows: Use a Resource element with the domain name to limit the action to only specified domains. Use an Action element to allow or deny permission to call this action. You cannot use an IAM policy to constrain this action's parameters. If the caller doesn't have sufficient permissions to invoke the action, or the parameter values fall outside the specified constraints, the action fails. The associated event attribute's cause parameter is set to OPERATION_NOT_PERMITTED. For details and example IAM policies, see Using IAM to Manage Access to Amazon SWF Workflows in the Amazon SWF Developer Guide. - */ - describeDomain(callback?: (err: AWSError, data: SWF.Types.DomainDetail) => void): Request; - /** - * Returns information about the specified workflow execution including its type and some statistics. This operation is eventually consistent. The results are best effort and may not exactly reflect recent updates and changes. Access Control You can use IAM policies to control this action's access to Amazon SWF resources as follows: Use a Resource element with the domain name to limit the action to only specified domains. Use an Action element to allow or deny permission to call this action. You cannot use an IAM policy to constrain this action's parameters. If the caller doesn't have sufficient permissions to invoke the action, or the parameter values fall outside the specified constraints, the action fails. The associated event attribute's cause parameter is set to OPERATION_NOT_PERMITTED. For details and example IAM policies, see Using IAM to Manage Access to Amazon SWF Workflows in the Amazon SWF Developer Guide. - */ - describeWorkflowExecution(params: SWF.Types.DescribeWorkflowExecutionInput, callback?: (err: AWSError, data: SWF.Types.WorkflowExecutionDetail) => void): Request; - /** - * Returns information about the specified workflow execution including its type and some statistics. This operation is eventually consistent. The results are best effort and may not exactly reflect recent updates and changes. Access Control You can use IAM policies to control this action's access to Amazon SWF resources as follows: Use a Resource element with the domain name to limit the action to only specified domains. Use an Action element to allow or deny permission to call this action. You cannot use an IAM policy to constrain this action's parameters. If the caller doesn't have sufficient permissions to invoke the action, or the parameter values fall outside the specified constraints, the action fails. The associated event attribute's cause parameter is set to OPERATION_NOT_PERMITTED. For details and example IAM policies, see Using IAM to Manage Access to Amazon SWF Workflows in the Amazon SWF Developer Guide. - */ - describeWorkflowExecution(callback?: (err: AWSError, data: SWF.Types.WorkflowExecutionDetail) => void): Request; - /** - * Returns information about the specified workflow type. This includes configuration settings specified when the type was registered and other information such as creation date, current status, etc. Access Control You can use IAM policies to control this action's access to Amazon SWF resources as follows: Use a Resource element with the domain name to limit the action to only specified domains. Use an Action element to allow or deny permission to call this action. Constrain the following parameters by using a Condition element with the appropriate keys. workflowType.name: String constraint. The key is swf:workflowType.name. workflowType.version: String constraint. The key is swf:workflowType.version. If the caller doesn't have sufficient permissions to invoke the action, or the parameter values fall outside the specified constraints, the action fails. The associated event attribute's cause parameter is set to OPERATION_NOT_PERMITTED. For details and example IAM policies, see Using IAM to Manage Access to Amazon SWF Workflows in the Amazon SWF Developer Guide. - */ - describeWorkflowType(params: SWF.Types.DescribeWorkflowTypeInput, callback?: (err: AWSError, data: SWF.Types.WorkflowTypeDetail) => void): Request; - /** - * Returns information about the specified workflow type. This includes configuration settings specified when the type was registered and other information such as creation date, current status, etc. Access Control You can use IAM policies to control this action's access to Amazon SWF resources as follows: Use a Resource element with the domain name to limit the action to only specified domains. Use an Action element to allow or deny permission to call this action. Constrain the following parameters by using a Condition element with the appropriate keys. workflowType.name: String constraint. The key is swf:workflowType.name. workflowType.version: String constraint. The key is swf:workflowType.version. If the caller doesn't have sufficient permissions to invoke the action, or the parameter values fall outside the specified constraints, the action fails. The associated event attribute's cause parameter is set to OPERATION_NOT_PERMITTED. For details and example IAM policies, see Using IAM to Manage Access to Amazon SWF Workflows in the Amazon SWF Developer Guide. - */ - describeWorkflowType(callback?: (err: AWSError, data: SWF.Types.WorkflowTypeDetail) => void): Request; - /** - * Returns the history of the specified workflow execution. The results may be split into multiple pages. To retrieve subsequent pages, make the call again using the nextPageToken returned by the initial call. This operation is eventually consistent. The results are best effort and may not exactly reflect recent updates and changes. Access Control You can use IAM policies to control this action's access to Amazon SWF resources as follows: Use a Resource element with the domain name to limit the action to only specified domains. Use an Action element to allow or deny permission to call this action. You cannot use an IAM policy to constrain this action's parameters. If the caller doesn't have sufficient permissions to invoke the action, or the parameter values fall outside the specified constraints, the action fails. The associated event attribute's cause parameter is set to OPERATION_NOT_PERMITTED. For details and example IAM policies, see Using IAM to Manage Access to Amazon SWF Workflows in the Amazon SWF Developer Guide. - */ - getWorkflowExecutionHistory(params: SWF.Types.GetWorkflowExecutionHistoryInput, callback?: (err: AWSError, data: SWF.Types.History) => void): Request; - /** - * Returns the history of the specified workflow execution. The results may be split into multiple pages. To retrieve subsequent pages, make the call again using the nextPageToken returned by the initial call. This operation is eventually consistent. The results are best effort and may not exactly reflect recent updates and changes. Access Control You can use IAM policies to control this action's access to Amazon SWF resources as follows: Use a Resource element with the domain name to limit the action to only specified domains. Use an Action element to allow or deny permission to call this action. You cannot use an IAM policy to constrain this action's parameters. If the caller doesn't have sufficient permissions to invoke the action, or the parameter values fall outside the specified constraints, the action fails. The associated event attribute's cause parameter is set to OPERATION_NOT_PERMITTED. For details and example IAM policies, see Using IAM to Manage Access to Amazon SWF Workflows in the Amazon SWF Developer Guide. - */ - getWorkflowExecutionHistory(callback?: (err: AWSError, data: SWF.Types.History) => void): Request; - /** - * Returns information about all activities registered in the specified domain that match the specified name and registration status. The result includes information like creation date, current status of the activity, etc. The results may be split into multiple pages. To retrieve subsequent pages, make the call again using the nextPageToken returned by the initial call. Access Control You can use IAM policies to control this action's access to Amazon SWF resources as follows: Use a Resource element with the domain name to limit the action to only specified domains. Use an Action element to allow or deny permission to call this action. You cannot use an IAM policy to constrain this action's parameters. If the caller doesn't have sufficient permissions to invoke the action, or the parameter values fall outside the specified constraints, the action fails. The associated event attribute's cause parameter is set to OPERATION_NOT_PERMITTED. For details and example IAM policies, see Using IAM to Manage Access to Amazon SWF Workflows in the Amazon SWF Developer Guide. - */ - listActivityTypes(params: SWF.Types.ListActivityTypesInput, callback?: (err: AWSError, data: SWF.Types.ActivityTypeInfos) => void): Request; - /** - * Returns information about all activities registered in the specified domain that match the specified name and registration status. The result includes information like creation date, current status of the activity, etc. The results may be split into multiple pages. To retrieve subsequent pages, make the call again using the nextPageToken returned by the initial call. Access Control You can use IAM policies to control this action's access to Amazon SWF resources as follows: Use a Resource element with the domain name to limit the action to only specified domains. Use an Action element to allow or deny permission to call this action. You cannot use an IAM policy to constrain this action's parameters. If the caller doesn't have sufficient permissions to invoke the action, or the parameter values fall outside the specified constraints, the action fails. The associated event attribute's cause parameter is set to OPERATION_NOT_PERMITTED. For details and example IAM policies, see Using IAM to Manage Access to Amazon SWF Workflows in the Amazon SWF Developer Guide. - */ - listActivityTypes(callback?: (err: AWSError, data: SWF.Types.ActivityTypeInfos) => void): Request; - /** - * Returns a list of closed workflow executions in the specified domain that meet the filtering criteria. The results may be split into multiple pages. To retrieve subsequent pages, make the call again using the nextPageToken returned by the initial call. This operation is eventually consistent. The results are best effort and may not exactly reflect recent updates and changes. Access Control You can use IAM policies to control this action's access to Amazon SWF resources as follows: Use a Resource element with the domain name to limit the action to only specified domains. Use an Action element to allow or deny permission to call this action. Constrain the following parameters by using a Condition element with the appropriate keys. tagFilter.tag: String constraint. The key is swf:tagFilter.tag. typeFilter.name: String constraint. The key is swf:typeFilter.name. typeFilter.version: String constraint. The key is swf:typeFilter.version. If the caller doesn't have sufficient permissions to invoke the action, or the parameter values fall outside the specified constraints, the action fails. The associated event attribute's cause parameter is set to OPERATION_NOT_PERMITTED. For details and example IAM policies, see Using IAM to Manage Access to Amazon SWF Workflows in the Amazon SWF Developer Guide. - */ - listClosedWorkflowExecutions(params: SWF.Types.ListClosedWorkflowExecutionsInput, callback?: (err: AWSError, data: SWF.Types.WorkflowExecutionInfos) => void): Request; - /** - * Returns a list of closed workflow executions in the specified domain that meet the filtering criteria. The results may be split into multiple pages. To retrieve subsequent pages, make the call again using the nextPageToken returned by the initial call. This operation is eventually consistent. The results are best effort and may not exactly reflect recent updates and changes. Access Control You can use IAM policies to control this action's access to Amazon SWF resources as follows: Use a Resource element with the domain name to limit the action to only specified domains. Use an Action element to allow or deny permission to call this action. Constrain the following parameters by using a Condition element with the appropriate keys. tagFilter.tag: String constraint. The key is swf:tagFilter.tag. typeFilter.name: String constraint. The key is swf:typeFilter.name. typeFilter.version: String constraint. The key is swf:typeFilter.version. If the caller doesn't have sufficient permissions to invoke the action, or the parameter values fall outside the specified constraints, the action fails. The associated event attribute's cause parameter is set to OPERATION_NOT_PERMITTED. For details and example IAM policies, see Using IAM to Manage Access to Amazon SWF Workflows in the Amazon SWF Developer Guide. - */ - listClosedWorkflowExecutions(callback?: (err: AWSError, data: SWF.Types.WorkflowExecutionInfos) => void): Request; - /** - * Returns the list of domains registered in the account. The results may be split into multiple pages. To retrieve subsequent pages, make the call again using the nextPageToken returned by the initial call. This operation is eventually consistent. The results are best effort and may not exactly reflect recent updates and changes. Access Control You can use IAM policies to control this action's access to Amazon SWF resources as follows: Use a Resource element with the domain name to limit the action to only specified domains. The element must be set to arn:aws:swf::AccountID:domain/*, where AccountID is the account ID, with no dashes. Use an Action element to allow or deny permission to call this action. You cannot use an IAM policy to constrain this action's parameters. If the caller doesn't have sufficient permissions to invoke the action, or the parameter values fall outside the specified constraints, the action fails. The associated event attribute's cause parameter is set to OPERATION_NOT_PERMITTED. For details and example IAM policies, see Using IAM to Manage Access to Amazon SWF Workflows in the Amazon SWF Developer Guide. - */ - listDomains(params: SWF.Types.ListDomainsInput, callback?: (err: AWSError, data: SWF.Types.DomainInfos) => void): Request; - /** - * Returns the list of domains registered in the account. The results may be split into multiple pages. To retrieve subsequent pages, make the call again using the nextPageToken returned by the initial call. This operation is eventually consistent. The results are best effort and may not exactly reflect recent updates and changes. Access Control You can use IAM policies to control this action's access to Amazon SWF resources as follows: Use a Resource element with the domain name to limit the action to only specified domains. The element must be set to arn:aws:swf::AccountID:domain/*, where AccountID is the account ID, with no dashes. Use an Action element to allow or deny permission to call this action. You cannot use an IAM policy to constrain this action's parameters. If the caller doesn't have sufficient permissions to invoke the action, or the parameter values fall outside the specified constraints, the action fails. The associated event attribute's cause parameter is set to OPERATION_NOT_PERMITTED. For details and example IAM policies, see Using IAM to Manage Access to Amazon SWF Workflows in the Amazon SWF Developer Guide. - */ - listDomains(callback?: (err: AWSError, data: SWF.Types.DomainInfos) => void): Request; - /** - * Returns a list of open workflow executions in the specified domain that meet the filtering criteria. The results may be split into multiple pages. To retrieve subsequent pages, make the call again using the nextPageToken returned by the initial call. This operation is eventually consistent. The results are best effort and may not exactly reflect recent updates and changes. Access Control You can use IAM policies to control this action's access to Amazon SWF resources as follows: Use a Resource element with the domain name to limit the action to only specified domains. Use an Action element to allow or deny permission to call this action. Constrain the following parameters by using a Condition element with the appropriate keys. tagFilter.tag: String constraint. The key is swf:tagFilter.tag. typeFilter.name: String constraint. The key is swf:typeFilter.name. typeFilter.version: String constraint. The key is swf:typeFilter.version. If the caller doesn't have sufficient permissions to invoke the action, or the parameter values fall outside the specified constraints, the action fails. The associated event attribute's cause parameter is set to OPERATION_NOT_PERMITTED. For details and example IAM policies, see Using IAM to Manage Access to Amazon SWF Workflows in the Amazon SWF Developer Guide. - */ - listOpenWorkflowExecutions(params: SWF.Types.ListOpenWorkflowExecutionsInput, callback?: (err: AWSError, data: SWF.Types.WorkflowExecutionInfos) => void): Request; - /** - * Returns a list of open workflow executions in the specified domain that meet the filtering criteria. The results may be split into multiple pages. To retrieve subsequent pages, make the call again using the nextPageToken returned by the initial call. This operation is eventually consistent. The results are best effort and may not exactly reflect recent updates and changes. Access Control You can use IAM policies to control this action's access to Amazon SWF resources as follows: Use a Resource element with the domain name to limit the action to only specified domains. Use an Action element to allow or deny permission to call this action. Constrain the following parameters by using a Condition element with the appropriate keys. tagFilter.tag: String constraint. The key is swf:tagFilter.tag. typeFilter.name: String constraint. The key is swf:typeFilter.name. typeFilter.version: String constraint. The key is swf:typeFilter.version. If the caller doesn't have sufficient permissions to invoke the action, or the parameter values fall outside the specified constraints, the action fails. The associated event attribute's cause parameter is set to OPERATION_NOT_PERMITTED. For details and example IAM policies, see Using IAM to Manage Access to Amazon SWF Workflows in the Amazon SWF Developer Guide. - */ - listOpenWorkflowExecutions(callback?: (err: AWSError, data: SWF.Types.WorkflowExecutionInfos) => void): Request; - /** - * Returns information about workflow types in the specified domain. The results may be split into multiple pages that can be retrieved by making the call repeatedly. Access Control You can use IAM policies to control this action's access to Amazon SWF resources as follows: Use a Resource element with the domain name to limit the action to only specified domains. Use an Action element to allow or deny permission to call this action. You cannot use an IAM policy to constrain this action's parameters. If the caller doesn't have sufficient permissions to invoke the action, or the parameter values fall outside the specified constraints, the action fails. The associated event attribute's cause parameter is set to OPERATION_NOT_PERMITTED. For details and example IAM policies, see Using IAM to Manage Access to Amazon SWF Workflows in the Amazon SWF Developer Guide. - */ - listWorkflowTypes(params: SWF.Types.ListWorkflowTypesInput, callback?: (err: AWSError, data: SWF.Types.WorkflowTypeInfos) => void): Request; - /** - * Returns information about workflow types in the specified domain. The results may be split into multiple pages that can be retrieved by making the call repeatedly. Access Control You can use IAM policies to control this action's access to Amazon SWF resources as follows: Use a Resource element with the domain name to limit the action to only specified domains. Use an Action element to allow or deny permission to call this action. You cannot use an IAM policy to constrain this action's parameters. If the caller doesn't have sufficient permissions to invoke the action, or the parameter values fall outside the specified constraints, the action fails. The associated event attribute's cause parameter is set to OPERATION_NOT_PERMITTED. For details and example IAM policies, see Using IAM to Manage Access to Amazon SWF Workflows in the Amazon SWF Developer Guide. - */ - listWorkflowTypes(callback?: (err: AWSError, data: SWF.Types.WorkflowTypeInfos) => void): Request; - /** - * Used by workers to get an ActivityTask from the specified activity taskList. This initiates a long poll, where the service holds the HTTP connection open and responds as soon as a task becomes available. The maximum time the service holds on to the request before responding is 60 seconds. If no task is available within 60 seconds, the poll returns an empty result. An empty result, in this context, means that an ActivityTask is returned, but that the value of taskToken is an empty string. If a task is returned, the worker should use its type to identify and process it correctly. Workers should set their client side socket timeout to at least 70 seconds (10 seconds higher than the maximum time service may hold the poll request). Access Control You can use IAM policies to control this action's access to Amazon SWF resources as follows: Use a Resource element with the domain name to limit the action to only specified domains. Use an Action element to allow or deny permission to call this action. Constrain the taskList.name parameter by using a Condition element with the swf:taskList.name key to allow the action to access only certain task lists. If the caller doesn't have sufficient permissions to invoke the action, or the parameter values fall outside the specified constraints, the action fails. The associated event attribute's cause parameter is set to OPERATION_NOT_PERMITTED. For details and example IAM policies, see Using IAM to Manage Access to Amazon SWF Workflows in the Amazon SWF Developer Guide. - */ - pollForActivityTask(params: SWF.Types.PollForActivityTaskInput, callback?: (err: AWSError, data: SWF.Types.ActivityTask) => void): Request; - /** - * Used by workers to get an ActivityTask from the specified activity taskList. This initiates a long poll, where the service holds the HTTP connection open and responds as soon as a task becomes available. The maximum time the service holds on to the request before responding is 60 seconds. If no task is available within 60 seconds, the poll returns an empty result. An empty result, in this context, means that an ActivityTask is returned, but that the value of taskToken is an empty string. If a task is returned, the worker should use its type to identify and process it correctly. Workers should set their client side socket timeout to at least 70 seconds (10 seconds higher than the maximum time service may hold the poll request). Access Control You can use IAM policies to control this action's access to Amazon SWF resources as follows: Use a Resource element with the domain name to limit the action to only specified domains. Use an Action element to allow or deny permission to call this action. Constrain the taskList.name parameter by using a Condition element with the swf:taskList.name key to allow the action to access only certain task lists. If the caller doesn't have sufficient permissions to invoke the action, or the parameter values fall outside the specified constraints, the action fails. The associated event attribute's cause parameter is set to OPERATION_NOT_PERMITTED. For details and example IAM policies, see Using IAM to Manage Access to Amazon SWF Workflows in the Amazon SWF Developer Guide. - */ - pollForActivityTask(callback?: (err: AWSError, data: SWF.Types.ActivityTask) => void): Request; - /** - * Used by deciders to get a DecisionTask from the specified decision taskList. A decision task may be returned for any open workflow execution that is using the specified task list. The task includes a paginated view of the history of the workflow execution. The decider should use the workflow type and the history to determine how to properly handle the task. This action initiates a long poll, where the service holds the HTTP connection open and responds as soon a task becomes available. If no decision task is available in the specified task list before the timeout of 60 seconds expires, an empty result is returned. An empty result, in this context, means that a DecisionTask is returned, but that the value of taskToken is an empty string. Deciders should set their client side socket timeout to at least 70 seconds (10 seconds higher than the timeout). Because the number of workflow history events for a single workflow execution might be very large, the result returned might be split up across a number of pages. To retrieve subsequent pages, make additional calls to PollForDecisionTask using the nextPageToken returned by the initial call. Note that you do not call GetWorkflowExecutionHistory with this nextPageToken. Instead, call PollForDecisionTask again. Access Control You can use IAM policies to control this action's access to Amazon SWF resources as follows: Use a Resource element with the domain name to limit the action to only specified domains. Use an Action element to allow or deny permission to call this action. Constrain the taskList.name parameter by using a Condition element with the swf:taskList.name key to allow the action to access only certain task lists. If the caller doesn't have sufficient permissions to invoke the action, or the parameter values fall outside the specified constraints, the action fails. The associated event attribute's cause parameter is set to OPERATION_NOT_PERMITTED. For details and example IAM policies, see Using IAM to Manage Access to Amazon SWF Workflows in the Amazon SWF Developer Guide. - */ - pollForDecisionTask(params: SWF.Types.PollForDecisionTaskInput, callback?: (err: AWSError, data: SWF.Types.DecisionTask) => void): Request; - /** - * Used by deciders to get a DecisionTask from the specified decision taskList. A decision task may be returned for any open workflow execution that is using the specified task list. The task includes a paginated view of the history of the workflow execution. The decider should use the workflow type and the history to determine how to properly handle the task. This action initiates a long poll, where the service holds the HTTP connection open and responds as soon a task becomes available. If no decision task is available in the specified task list before the timeout of 60 seconds expires, an empty result is returned. An empty result, in this context, means that a DecisionTask is returned, but that the value of taskToken is an empty string. Deciders should set their client side socket timeout to at least 70 seconds (10 seconds higher than the timeout). Because the number of workflow history events for a single workflow execution might be very large, the result returned might be split up across a number of pages. To retrieve subsequent pages, make additional calls to PollForDecisionTask using the nextPageToken returned by the initial call. Note that you do not call GetWorkflowExecutionHistory with this nextPageToken. Instead, call PollForDecisionTask again. Access Control You can use IAM policies to control this action's access to Amazon SWF resources as follows: Use a Resource element with the domain name to limit the action to only specified domains. Use an Action element to allow or deny permission to call this action. Constrain the taskList.name parameter by using a Condition element with the swf:taskList.name key to allow the action to access only certain task lists. If the caller doesn't have sufficient permissions to invoke the action, or the parameter values fall outside the specified constraints, the action fails. The associated event attribute's cause parameter is set to OPERATION_NOT_PERMITTED. For details and example IAM policies, see Using IAM to Manage Access to Amazon SWF Workflows in the Amazon SWF Developer Guide. - */ - pollForDecisionTask(callback?: (err: AWSError, data: SWF.Types.DecisionTask) => void): Request; - /** - * Used by activity workers to report to the service that the ActivityTask represented by the specified taskToken is still making progress. The worker can also specify details of the progress, for example percent complete, using the details parameter. This action can also be used by the worker as a mechanism to check if cancellation is being requested for the activity task. If a cancellation is being attempted for the specified task, then the boolean cancelRequested flag returned by the service is set to true. This action resets the taskHeartbeatTimeout clock. The taskHeartbeatTimeout is specified in RegisterActivityType. This action doesn't in itself create an event in the workflow execution history. However, if the task times out, the workflow execution history contains a ActivityTaskTimedOut event that contains the information from the last heartbeat generated by the activity worker. The taskStartToCloseTimeout of an activity type is the maximum duration of an activity task, regardless of the number of RecordActivityTaskHeartbeat requests received. The taskStartToCloseTimeout is also specified in RegisterActivityType. This operation is only useful for long-lived activities to report liveliness of the task and to determine if a cancellation is being attempted. If the cancelRequested flag returns true, a cancellation is being attempted. If the worker can cancel the activity, it should respond with RespondActivityTaskCanceled. Otherwise, it should ignore the cancellation request. Access Control You can use IAM policies to control this action's access to Amazon SWF resources as follows: Use a Resource element with the domain name to limit the action to only specified domains. Use an Action element to allow or deny permission to call this action. You cannot use an IAM policy to constrain this action's parameters. If the caller doesn't have sufficient permissions to invoke the action, or the parameter values fall outside the specified constraints, the action fails. The associated event attribute's cause parameter is set to OPERATION_NOT_PERMITTED. For details and example IAM policies, see Using IAM to Manage Access to Amazon SWF Workflows in the Amazon SWF Developer Guide. - */ - recordActivityTaskHeartbeat(params: SWF.Types.RecordActivityTaskHeartbeatInput, callback?: (err: AWSError, data: SWF.Types.ActivityTaskStatus) => void): Request; - /** - * Used by activity workers to report to the service that the ActivityTask represented by the specified taskToken is still making progress. The worker can also specify details of the progress, for example percent complete, using the details parameter. This action can also be used by the worker as a mechanism to check if cancellation is being requested for the activity task. If a cancellation is being attempted for the specified task, then the boolean cancelRequested flag returned by the service is set to true. This action resets the taskHeartbeatTimeout clock. The taskHeartbeatTimeout is specified in RegisterActivityType. This action doesn't in itself create an event in the workflow execution history. However, if the task times out, the workflow execution history contains a ActivityTaskTimedOut event that contains the information from the last heartbeat generated by the activity worker. The taskStartToCloseTimeout of an activity type is the maximum duration of an activity task, regardless of the number of RecordActivityTaskHeartbeat requests received. The taskStartToCloseTimeout is also specified in RegisterActivityType. This operation is only useful for long-lived activities to report liveliness of the task and to determine if a cancellation is being attempted. If the cancelRequested flag returns true, a cancellation is being attempted. If the worker can cancel the activity, it should respond with RespondActivityTaskCanceled. Otherwise, it should ignore the cancellation request. Access Control You can use IAM policies to control this action's access to Amazon SWF resources as follows: Use a Resource element with the domain name to limit the action to only specified domains. Use an Action element to allow or deny permission to call this action. You cannot use an IAM policy to constrain this action's parameters. If the caller doesn't have sufficient permissions to invoke the action, or the parameter values fall outside the specified constraints, the action fails. The associated event attribute's cause parameter is set to OPERATION_NOT_PERMITTED. For details and example IAM policies, see Using IAM to Manage Access to Amazon SWF Workflows in the Amazon SWF Developer Guide. - */ - recordActivityTaskHeartbeat(callback?: (err: AWSError, data: SWF.Types.ActivityTaskStatus) => void): Request; - /** - * Registers a new activity type along with its configuration settings in the specified domain. A TypeAlreadyExists fault is returned if the type already exists in the domain. You cannot change any configuration settings of the type after its registration, and it must be registered as a new version. Access Control You can use IAM policies to control this action's access to Amazon SWF resources as follows: Use a Resource element with the domain name to limit the action to only specified domains. Use an Action element to allow or deny permission to call this action. Constrain the following parameters by using a Condition element with the appropriate keys. defaultTaskList.name: String constraint. The key is swf:defaultTaskList.name. name: String constraint. The key is swf:name. version: String constraint. The key is swf:version. If the caller doesn't have sufficient permissions to invoke the action, or the parameter values fall outside the specified constraints, the action fails. The associated event attribute's cause parameter is set to OPERATION_NOT_PERMITTED. For details and example IAM policies, see Using IAM to Manage Access to Amazon SWF Workflows in the Amazon SWF Developer Guide. - */ - registerActivityType(params: SWF.Types.RegisterActivityTypeInput, callback?: (err: AWSError, data: {}) => void): Request<{}, AWSError>; - /** - * Registers a new activity type along with its configuration settings in the specified domain. A TypeAlreadyExists fault is returned if the type already exists in the domain. You cannot change any configuration settings of the type after its registration, and it must be registered as a new version. Access Control You can use IAM policies to control this action's access to Amazon SWF resources as follows: Use a Resource element with the domain name to limit the action to only specified domains. Use an Action element to allow or deny permission to call this action. Constrain the following parameters by using a Condition element with the appropriate keys. defaultTaskList.name: String constraint. The key is swf:defaultTaskList.name. name: String constraint. The key is swf:name. version: String constraint. The key is swf:version. If the caller doesn't have sufficient permissions to invoke the action, or the parameter values fall outside the specified constraints, the action fails. The associated event attribute's cause parameter is set to OPERATION_NOT_PERMITTED. For details and example IAM policies, see Using IAM to Manage Access to Amazon SWF Workflows in the Amazon SWF Developer Guide. - */ - registerActivityType(callback?: (err: AWSError, data: {}) => void): Request<{}, AWSError>; - /** - * Registers a new domain. Access Control You can use IAM policies to control this action's access to Amazon SWF resources as follows: You cannot use an IAM policy to control domain access for this action. The name of the domain being registered is available as the resource of this action. Use an Action element to allow or deny permission to call this action. You cannot use an IAM policy to constrain this action's parameters. If the caller doesn't have sufficient permissions to invoke the action, or the parameter values fall outside the specified constraints, the action fails. The associated event attribute's cause parameter is set to OPERATION_NOT_PERMITTED. For details and example IAM policies, see Using IAM to Manage Access to Amazon SWF Workflows in the Amazon SWF Developer Guide. - */ - registerDomain(params: SWF.Types.RegisterDomainInput, callback?: (err: AWSError, data: {}) => void): Request<{}, AWSError>; - /** - * Registers a new domain. Access Control You can use IAM policies to control this action's access to Amazon SWF resources as follows: You cannot use an IAM policy to control domain access for this action. The name of the domain being registered is available as the resource of this action. Use an Action element to allow or deny permission to call this action. You cannot use an IAM policy to constrain this action's parameters. If the caller doesn't have sufficient permissions to invoke the action, or the parameter values fall outside the specified constraints, the action fails. The associated event attribute's cause parameter is set to OPERATION_NOT_PERMITTED. For details and example IAM policies, see Using IAM to Manage Access to Amazon SWF Workflows in the Amazon SWF Developer Guide. - */ - registerDomain(callback?: (err: AWSError, data: {}) => void): Request<{}, AWSError>; - /** - * Registers a new workflow type and its configuration settings in the specified domain. The retention period for the workflow history is set by the RegisterDomain action. If the type already exists, then a TypeAlreadyExists fault is returned. You cannot change the configuration settings of a workflow type once it is registered and it must be registered as a new version. Access Control You can use IAM policies to control this action's access to Amazon SWF resources as follows: Use a Resource element with the domain name to limit the action to only specified domains. Use an Action element to allow or deny permission to call this action. Constrain the following parameters by using a Condition element with the appropriate keys. defaultTaskList.name: String constraint. The key is swf:defaultTaskList.name. name: String constraint. The key is swf:name. version: String constraint. The key is swf:version. If the caller doesn't have sufficient permissions to invoke the action, or the parameter values fall outside the specified constraints, the action fails. The associated event attribute's cause parameter is set to OPERATION_NOT_PERMITTED. For details and example IAM policies, see Using IAM to Manage Access to Amazon SWF Workflows in the Amazon SWF Developer Guide. - */ - registerWorkflowType(params: SWF.Types.RegisterWorkflowTypeInput, callback?: (err: AWSError, data: {}) => void): Request<{}, AWSError>; - /** - * Registers a new workflow type and its configuration settings in the specified domain. The retention period for the workflow history is set by the RegisterDomain action. If the type already exists, then a TypeAlreadyExists fault is returned. You cannot change the configuration settings of a workflow type once it is registered and it must be registered as a new version. Access Control You can use IAM policies to control this action's access to Amazon SWF resources as follows: Use a Resource element with the domain name to limit the action to only specified domains. Use an Action element to allow or deny permission to call this action. Constrain the following parameters by using a Condition element with the appropriate keys. defaultTaskList.name: String constraint. The key is swf:defaultTaskList.name. name: String constraint. The key is swf:name. version: String constraint. The key is swf:version. If the caller doesn't have sufficient permissions to invoke the action, or the parameter values fall outside the specified constraints, the action fails. The associated event attribute's cause parameter is set to OPERATION_NOT_PERMITTED. For details and example IAM policies, see Using IAM to Manage Access to Amazon SWF Workflows in the Amazon SWF Developer Guide. - */ - registerWorkflowType(callback?: (err: AWSError, data: {}) => void): Request<{}, AWSError>; - /** - * Records a WorkflowExecutionCancelRequested event in the currently running workflow execution identified by the given domain, workflowId, and runId. This logically requests the cancellation of the workflow execution as a whole. It is up to the decider to take appropriate actions when it receives an execution history with this event. If the runId isn't specified, the WorkflowExecutionCancelRequested event is recorded in the history of the current open workflow execution with the specified workflowId in the domain. Because this action allows the workflow to properly clean up and gracefully close, it should be used instead of TerminateWorkflowExecution when possible. Access Control You can use IAM policies to control this action's access to Amazon SWF resources as follows: Use a Resource element with the domain name to limit the action to only specified domains. Use an Action element to allow or deny permission to call this action. You cannot use an IAM policy to constrain this action's parameters. If the caller doesn't have sufficient permissions to invoke the action, or the parameter values fall outside the specified constraints, the action fails. The associated event attribute's cause parameter is set to OPERATION_NOT_PERMITTED. For details and example IAM policies, see Using IAM to Manage Access to Amazon SWF Workflows in the Amazon SWF Developer Guide. - */ - requestCancelWorkflowExecution(params: SWF.Types.RequestCancelWorkflowExecutionInput, callback?: (err: AWSError, data: {}) => void): Request<{}, AWSError>; - /** - * Records a WorkflowExecutionCancelRequested event in the currently running workflow execution identified by the given domain, workflowId, and runId. This logically requests the cancellation of the workflow execution as a whole. It is up to the decider to take appropriate actions when it receives an execution history with this event. If the runId isn't specified, the WorkflowExecutionCancelRequested event is recorded in the history of the current open workflow execution with the specified workflowId in the domain. Because this action allows the workflow to properly clean up and gracefully close, it should be used instead of TerminateWorkflowExecution when possible. Access Control You can use IAM policies to control this action's access to Amazon SWF resources as follows: Use a Resource element with the domain name to limit the action to only specified domains. Use an Action element to allow or deny permission to call this action. You cannot use an IAM policy to constrain this action's parameters. If the caller doesn't have sufficient permissions to invoke the action, or the parameter values fall outside the specified constraints, the action fails. The associated event attribute's cause parameter is set to OPERATION_NOT_PERMITTED. For details and example IAM policies, see Using IAM to Manage Access to Amazon SWF Workflows in the Amazon SWF Developer Guide. - */ - requestCancelWorkflowExecution(callback?: (err: AWSError, data: {}) => void): Request<{}, AWSError>; - /** - * Used by workers to tell the service that the ActivityTask identified by the taskToken was successfully canceled. Additional details can be provided using the details argument. These details (if provided) appear in the ActivityTaskCanceled event added to the workflow history. Only use this operation if the canceled flag of a RecordActivityTaskHeartbeat request returns true and if the activity can be safely undone or abandoned. A task is considered open from the time that it is scheduled until it is closed. Therefore a task is reported as open while a worker is processing it. A task is closed after it has been specified in a call to RespondActivityTaskCompleted, RespondActivityTaskCanceled, RespondActivityTaskFailed, or the task has timed out. Access Control You can use IAM policies to control this action's access to Amazon SWF resources as follows: Use a Resource element with the domain name to limit the action to only specified domains. Use an Action element to allow or deny permission to call this action. You cannot use an IAM policy to constrain this action's parameters. If the caller doesn't have sufficient permissions to invoke the action, or the parameter values fall outside the specified constraints, the action fails. The associated event attribute's cause parameter is set to OPERATION_NOT_PERMITTED. For details and example IAM policies, see Using IAM to Manage Access to Amazon SWF Workflows in the Amazon SWF Developer Guide. - */ - respondActivityTaskCanceled(params: SWF.Types.RespondActivityTaskCanceledInput, callback?: (err: AWSError, data: {}) => void): Request<{}, AWSError>; - /** - * Used by workers to tell the service that the ActivityTask identified by the taskToken was successfully canceled. Additional details can be provided using the details argument. These details (if provided) appear in the ActivityTaskCanceled event added to the workflow history. Only use this operation if the canceled flag of a RecordActivityTaskHeartbeat request returns true and if the activity can be safely undone or abandoned. A task is considered open from the time that it is scheduled until it is closed. Therefore a task is reported as open while a worker is processing it. A task is closed after it has been specified in a call to RespondActivityTaskCompleted, RespondActivityTaskCanceled, RespondActivityTaskFailed, or the task has timed out. Access Control You can use IAM policies to control this action's access to Amazon SWF resources as follows: Use a Resource element with the domain name to limit the action to only specified domains. Use an Action element to allow or deny permission to call this action. You cannot use an IAM policy to constrain this action's parameters. If the caller doesn't have sufficient permissions to invoke the action, or the parameter values fall outside the specified constraints, the action fails. The associated event attribute's cause parameter is set to OPERATION_NOT_PERMITTED. For details and example IAM policies, see Using IAM to Manage Access to Amazon SWF Workflows in the Amazon SWF Developer Guide. - */ - respondActivityTaskCanceled(callback?: (err: AWSError, data: {}) => void): Request<{}, AWSError>; - /** - * Used by workers to tell the service that the ActivityTask identified by the taskToken completed successfully with a result (if provided). The result appears in the ActivityTaskCompleted event in the workflow history. If the requested task doesn't complete successfully, use RespondActivityTaskFailed instead. If the worker finds that the task is canceled through the canceled flag returned by RecordActivityTaskHeartbeat, it should cancel the task, clean up and then call RespondActivityTaskCanceled. A task is considered open from the time that it is scheduled until it is closed. Therefore a task is reported as open while a worker is processing it. A task is closed after it has been specified in a call to RespondActivityTaskCompleted, RespondActivityTaskCanceled, RespondActivityTaskFailed, or the task has timed out. Access Control You can use IAM policies to control this action's access to Amazon SWF resources as follows: Use a Resource element with the domain name to limit the action to only specified domains. Use an Action element to allow or deny permission to call this action. You cannot use an IAM policy to constrain this action's parameters. If the caller doesn't have sufficient permissions to invoke the action, or the parameter values fall outside the specified constraints, the action fails. The associated event attribute's cause parameter is set to OPERATION_NOT_PERMITTED. For details and example IAM policies, see Using IAM to Manage Access to Amazon SWF Workflows in the Amazon SWF Developer Guide. - */ - respondActivityTaskCompleted(params: SWF.Types.RespondActivityTaskCompletedInput, callback?: (err: AWSError, data: {}) => void): Request<{}, AWSError>; - /** - * Used by workers to tell the service that the ActivityTask identified by the taskToken completed successfully with a result (if provided). The result appears in the ActivityTaskCompleted event in the workflow history. If the requested task doesn't complete successfully, use RespondActivityTaskFailed instead. If the worker finds that the task is canceled through the canceled flag returned by RecordActivityTaskHeartbeat, it should cancel the task, clean up and then call RespondActivityTaskCanceled. A task is considered open from the time that it is scheduled until it is closed. Therefore a task is reported as open while a worker is processing it. A task is closed after it has been specified in a call to RespondActivityTaskCompleted, RespondActivityTaskCanceled, RespondActivityTaskFailed, or the task has timed out. Access Control You can use IAM policies to control this action's access to Amazon SWF resources as follows: Use a Resource element with the domain name to limit the action to only specified domains. Use an Action element to allow or deny permission to call this action. You cannot use an IAM policy to constrain this action's parameters. If the caller doesn't have sufficient permissions to invoke the action, or the parameter values fall outside the specified constraints, the action fails. The associated event attribute's cause parameter is set to OPERATION_NOT_PERMITTED. For details and example IAM policies, see Using IAM to Manage Access to Amazon SWF Workflows in the Amazon SWF Developer Guide. - */ - respondActivityTaskCompleted(callback?: (err: AWSError, data: {}) => void): Request<{}, AWSError>; - /** - * Used by workers to tell the service that the ActivityTask identified by the taskToken has failed with reason (if specified). The reason and details appear in the ActivityTaskFailed event added to the workflow history. A task is considered open from the time that it is scheduled until it is closed. Therefore a task is reported as open while a worker is processing it. A task is closed after it has been specified in a call to RespondActivityTaskCompleted, RespondActivityTaskCanceled, RespondActivityTaskFailed, or the task has timed out. Access Control You can use IAM policies to control this action's access to Amazon SWF resources as follows: Use a Resource element with the domain name to limit the action to only specified domains. Use an Action element to allow or deny permission to call this action. You cannot use an IAM policy to constrain this action's parameters. If the caller doesn't have sufficient permissions to invoke the action, or the parameter values fall outside the specified constraints, the action fails. The associated event attribute's cause parameter is set to OPERATION_NOT_PERMITTED. For details and example IAM policies, see Using IAM to Manage Access to Amazon SWF Workflows in the Amazon SWF Developer Guide. - */ - respondActivityTaskFailed(params: SWF.Types.RespondActivityTaskFailedInput, callback?: (err: AWSError, data: {}) => void): Request<{}, AWSError>; - /** - * Used by workers to tell the service that the ActivityTask identified by the taskToken has failed with reason (if specified). The reason and details appear in the ActivityTaskFailed event added to the workflow history. A task is considered open from the time that it is scheduled until it is closed. Therefore a task is reported as open while a worker is processing it. A task is closed after it has been specified in a call to RespondActivityTaskCompleted, RespondActivityTaskCanceled, RespondActivityTaskFailed, or the task has timed out. Access Control You can use IAM policies to control this action's access to Amazon SWF resources as follows: Use a Resource element with the domain name to limit the action to only specified domains. Use an Action element to allow or deny permission to call this action. You cannot use an IAM policy to constrain this action's parameters. If the caller doesn't have sufficient permissions to invoke the action, or the parameter values fall outside the specified constraints, the action fails. The associated event attribute's cause parameter is set to OPERATION_NOT_PERMITTED. For details and example IAM policies, see Using IAM to Manage Access to Amazon SWF Workflows in the Amazon SWF Developer Guide. - */ - respondActivityTaskFailed(callback?: (err: AWSError, data: {}) => void): Request<{}, AWSError>; - /** - * Used by deciders to tell the service that the DecisionTask identified by the taskToken has successfully completed. The decisions argument specifies the list of decisions made while processing the task. A DecisionTaskCompleted event is added to the workflow history. The executionContext specified is attached to the event in the workflow execution history. Access Control If an IAM policy grants permission to use RespondDecisionTaskCompleted, it can express permissions for the list of decisions in the decisions parameter. Each of the decisions has one or more parameters, much like a regular API call. To allow for policies to be as readable as possible, you can express permissions on decisions as if they were actual API calls, including applying conditions to some parameters. For more information, see Using IAM to Manage Access to Amazon SWF Workflows in the Amazon SWF Developer Guide. - */ - respondDecisionTaskCompleted(params: SWF.Types.RespondDecisionTaskCompletedInput, callback?: (err: AWSError, data: {}) => void): Request<{}, AWSError>; - /** - * Used by deciders to tell the service that the DecisionTask identified by the taskToken has successfully completed. The decisions argument specifies the list of decisions made while processing the task. A DecisionTaskCompleted event is added to the workflow history. The executionContext specified is attached to the event in the workflow execution history. Access Control If an IAM policy grants permission to use RespondDecisionTaskCompleted, it can express permissions for the list of decisions in the decisions parameter. Each of the decisions has one or more parameters, much like a regular API call. To allow for policies to be as readable as possible, you can express permissions on decisions as if they were actual API calls, including applying conditions to some parameters. For more information, see Using IAM to Manage Access to Amazon SWF Workflows in the Amazon SWF Developer Guide. - */ - respondDecisionTaskCompleted(callback?: (err: AWSError, data: {}) => void): Request<{}, AWSError>; - /** - * Records a WorkflowExecutionSignaled event in the workflow execution history and creates a decision task for the workflow execution identified by the given domain, workflowId and runId. The event is recorded with the specified user defined signalName and input (if provided). If a runId isn't specified, then the WorkflowExecutionSignaled event is recorded in the history of the current open workflow with the matching workflowId in the domain. If the specified workflow execution isn't open, this method fails with UnknownResource. Access Control You can use IAM policies to control this action's access to Amazon SWF resources as follows: Use a Resource element with the domain name to limit the action to only specified domains. Use an Action element to allow or deny permission to call this action. You cannot use an IAM policy to constrain this action's parameters. If the caller doesn't have sufficient permissions to invoke the action, or the parameter values fall outside the specified constraints, the action fails. The associated event attribute's cause parameter is set to OPERATION_NOT_PERMITTED. For details and example IAM policies, see Using IAM to Manage Access to Amazon SWF Workflows in the Amazon SWF Developer Guide. - */ - signalWorkflowExecution(params: SWF.Types.SignalWorkflowExecutionInput, callback?: (err: AWSError, data: {}) => void): Request<{}, AWSError>; - /** - * Records a WorkflowExecutionSignaled event in the workflow execution history and creates a decision task for the workflow execution identified by the given domain, workflowId and runId. The event is recorded with the specified user defined signalName and input (if provided). If a runId isn't specified, then the WorkflowExecutionSignaled event is recorded in the history of the current open workflow with the matching workflowId in the domain. If the specified workflow execution isn't open, this method fails with UnknownResource. Access Control You can use IAM policies to control this action's access to Amazon SWF resources as follows: Use a Resource element with the domain name to limit the action to only specified domains. Use an Action element to allow or deny permission to call this action. You cannot use an IAM policy to constrain this action's parameters. If the caller doesn't have sufficient permissions to invoke the action, or the parameter values fall outside the specified constraints, the action fails. The associated event attribute's cause parameter is set to OPERATION_NOT_PERMITTED. For details and example IAM policies, see Using IAM to Manage Access to Amazon SWF Workflows in the Amazon SWF Developer Guide. - */ - signalWorkflowExecution(callback?: (err: AWSError, data: {}) => void): Request<{}, AWSError>; - /** - * Starts an execution of the workflow type in the specified domain using the provided workflowId and input data. This action returns the newly started workflow execution. Access Control You can use IAM policies to control this action's access to Amazon SWF resources as follows: Use a Resource element with the domain name to limit the action to only specified domains. Use an Action element to allow or deny permission to call this action. Constrain the following parameters by using a Condition element with the appropriate keys. tagList.member.0: The key is swf:tagList.member.0. tagList.member.1: The key is swf:tagList.member.1. tagList.member.2: The key is swf:tagList.member.2. tagList.member.3: The key is swf:tagList.member.3. tagList.member.4: The key is swf:tagList.member.4. taskList: String constraint. The key is swf:taskList.name. workflowType.name: String constraint. The key is swf:workflowType.name. workflowType.version: String constraint. The key is swf:workflowType.version. If the caller doesn't have sufficient permissions to invoke the action, or the parameter values fall outside the specified constraints, the action fails. The associated event attribute's cause parameter is set to OPERATION_NOT_PERMITTED. For details and example IAM policies, see Using IAM to Manage Access to Amazon SWF Workflows in the Amazon SWF Developer Guide. - */ - startWorkflowExecution(params: SWF.Types.StartWorkflowExecutionInput, callback?: (err: AWSError, data: SWF.Types.Run) => void): Request; - /** - * Starts an execution of the workflow type in the specified domain using the provided workflowId and input data. This action returns the newly started workflow execution. Access Control You can use IAM policies to control this action's access to Amazon SWF resources as follows: Use a Resource element with the domain name to limit the action to only specified domains. Use an Action element to allow or deny permission to call this action. Constrain the following parameters by using a Condition element with the appropriate keys. tagList.member.0: The key is swf:tagList.member.0. tagList.member.1: The key is swf:tagList.member.1. tagList.member.2: The key is swf:tagList.member.2. tagList.member.3: The key is swf:tagList.member.3. tagList.member.4: The key is swf:tagList.member.4. taskList: String constraint. The key is swf:taskList.name. workflowType.name: String constraint. The key is swf:workflowType.name. workflowType.version: String constraint. The key is swf:workflowType.version. If the caller doesn't have sufficient permissions to invoke the action, or the parameter values fall outside the specified constraints, the action fails. The associated event attribute's cause parameter is set to OPERATION_NOT_PERMITTED. For details and example IAM policies, see Using IAM to Manage Access to Amazon SWF Workflows in the Amazon SWF Developer Guide. - */ - startWorkflowExecution(callback?: (err: AWSError, data: SWF.Types.Run) => void): Request; - /** - * Records a WorkflowExecutionTerminated event and forces closure of the workflow execution identified by the given domain, runId, and workflowId. The child policy, registered with the workflow type or specified when starting this execution, is applied to any open child workflow executions of this workflow execution. If the identified workflow execution was in progress, it is terminated immediately. If a runId isn't specified, then the WorkflowExecutionTerminated event is recorded in the history of the current open workflow with the matching workflowId in the domain. You should consider using RequestCancelWorkflowExecution action instead because it allows the workflow to gracefully close while TerminateWorkflowExecution doesn't. Access Control You can use IAM policies to control this action's access to Amazon SWF resources as follows: Use a Resource element with the domain name to limit the action to only specified domains. Use an Action element to allow or deny permission to call this action. You cannot use an IAM policy to constrain this action's parameters. If the caller doesn't have sufficient permissions to invoke the action, or the parameter values fall outside the specified constraints, the action fails. The associated event attribute's cause parameter is set to OPERATION_NOT_PERMITTED. For details and example IAM policies, see Using IAM to Manage Access to Amazon SWF Workflows in the Amazon SWF Developer Guide. - */ - terminateWorkflowExecution(params: SWF.Types.TerminateWorkflowExecutionInput, callback?: (err: AWSError, data: {}) => void): Request<{}, AWSError>; - /** - * Records a WorkflowExecutionTerminated event and forces closure of the workflow execution identified by the given domain, runId, and workflowId. The child policy, registered with the workflow type or specified when starting this execution, is applied to any open child workflow executions of this workflow execution. If the identified workflow execution was in progress, it is terminated immediately. If a runId isn't specified, then the WorkflowExecutionTerminated event is recorded in the history of the current open workflow with the matching workflowId in the domain. You should consider using RequestCancelWorkflowExecution action instead because it allows the workflow to gracefully close while TerminateWorkflowExecution doesn't. Access Control You can use IAM policies to control this action's access to Amazon SWF resources as follows: Use a Resource element with the domain name to limit the action to only specified domains. Use an Action element to allow or deny permission to call this action. You cannot use an IAM policy to constrain this action's parameters. If the caller doesn't have sufficient permissions to invoke the action, or the parameter values fall outside the specified constraints, the action fails. The associated event attribute's cause parameter is set to OPERATION_NOT_PERMITTED. For details and example IAM policies, see Using IAM to Manage Access to Amazon SWF Workflows in the Amazon SWF Developer Guide. - */ - terminateWorkflowExecution(callback?: (err: AWSError, data: {}) => void): Request<{}, AWSError>; -} -declare namespace SWF { - export type ActivityId = string; - export interface ActivityTask { - /** - * The opaque string used as a handle on the task. This token is used by workers to communicate progress and response information back to the system about the task. - */ - taskToken: TaskToken; - /** - * The unique ID of the task. - */ - activityId: ActivityId; - /** - * The ID of the ActivityTaskStarted event recorded in the history. - */ - startedEventId: EventId; - /** - * The workflow execution that started this activity task. - */ - workflowExecution: WorkflowExecution; - /** - * The type of this activity task. - */ - activityType: ActivityType; - /** - * The inputs provided when the activity task was scheduled. The form of the input is user defined and should be meaningful to the activity implementation. - */ - input?: Data; - } - export interface ActivityTaskCancelRequestedEventAttributes { - /** - * The ID of the DecisionTaskCompleted event corresponding to the decision task that resulted in the RequestCancelActivityTask decision for this cancellation request. This information can be useful for diagnosing problems by tracing back the chain of events leading up to this event. - */ - decisionTaskCompletedEventId: EventId; - /** - * The unique ID of the task. - */ - activityId: ActivityId; - } - export interface ActivityTaskCanceledEventAttributes { - /** - * Details of the cancellation. - */ - details?: Data; - /** - * The ID of the ActivityTaskScheduled event that was recorded when this activity task was scheduled. This information can be useful for diagnosing problems by tracing back the chain of events leading up to this event. - */ - scheduledEventId: EventId; - /** - * The ID of the ActivityTaskStarted event recorded when this activity task was started. This information can be useful for diagnosing problems by tracing back the chain of events leading up to this event. - */ - startedEventId: EventId; - /** - * If set, contains the ID of the last ActivityTaskCancelRequested event recorded for this activity task. This information can be useful for diagnosing problems by tracing back the chain of events leading up to this event. - */ - latestCancelRequestedEventId?: EventId; - } - export interface ActivityTaskCompletedEventAttributes { - /** - * The results of the activity task. - */ - result?: Data; - /** - * The ID of the ActivityTaskScheduled event that was recorded when this activity task was scheduled. This information can be useful for diagnosing problems by tracing back the chain of events leading up to this event. - */ - scheduledEventId: EventId; - /** - * The ID of the ActivityTaskStarted event recorded when this activity task was started. This information can be useful for diagnosing problems by tracing back the chain of events leading up to this event. - */ - startedEventId: EventId; - } - export interface ActivityTaskFailedEventAttributes { - /** - * The reason provided for the failure. - */ - reason?: FailureReason; - /** - * The details of the failure. - */ - details?: Data; - /** - * The ID of the ActivityTaskScheduled event that was recorded when this activity task was scheduled. This information can be useful for diagnosing problems by tracing back the chain of events leading up to this event. - */ - scheduledEventId: EventId; - /** - * The ID of the ActivityTaskStarted event recorded when this activity task was started. This information can be useful for diagnosing problems by tracing back the chain of events leading up to this event. - */ - startedEventId: EventId; - } - export interface ActivityTaskScheduledEventAttributes { - /** - * The type of the activity task. - */ - activityType: ActivityType; - /** - * The unique ID of the activity task. - */ - activityId: ActivityId; - /** - * The input provided to the activity task. - */ - input?: Data; - /** - * Data attached to the event that can be used by the decider in subsequent workflow tasks. This data isn't sent to the activity. - */ - control?: Data; - /** - * The maximum amount of time the activity task can wait to be assigned to a worker. - */ - scheduleToStartTimeout?: DurationInSecondsOptional; - /** - * The maximum amount of time for this activity task. - */ - scheduleToCloseTimeout?: DurationInSecondsOptional; - /** - * The maximum amount of time a worker may take to process the activity task. - */ - startToCloseTimeout?: DurationInSecondsOptional; - /** - * The task list in which the activity task has been scheduled. - */ - taskList: TaskList; - /** - * The priority to assign to the scheduled activity task. If set, this overrides any default priority value that was assigned when the activity type was registered. Valid values are integers that range from Java's Integer.MIN_VALUE (-2147483648) to Integer.MAX_VALUE (2147483647). Higher numbers indicate higher priority. For more information about setting task priority, see Setting Task Priority in the Amazon SWF Developer Guide. - */ - taskPriority?: TaskPriority; - /** - * The ID of the DecisionTaskCompleted event corresponding to the decision that resulted in the scheduling of this activity task. This information can be useful for diagnosing problems by tracing back the chain of events leading up to this event. - */ - decisionTaskCompletedEventId: EventId; - /** - * The maximum time before which the worker processing this task must report progress by calling RecordActivityTaskHeartbeat. If the timeout is exceeded, the activity task is automatically timed out. If the worker subsequently attempts to record a heartbeat or return a result, it is ignored. - */ - heartbeatTimeout?: DurationInSecondsOptional; - } - export interface ActivityTaskStartedEventAttributes { - /** - * Identity of the worker that was assigned this task. This aids diagnostics when problems arise. The form of this identity is user defined. - */ - identity?: Identity; - /** - * The ID of the ActivityTaskScheduled event that was recorded when this activity task was scheduled. This information can be useful for diagnosing problems by tracing back the chain of events leading up to this event. - */ - scheduledEventId: EventId; - } - export interface ActivityTaskStatus { - /** - * Set to true if cancellation of the task is requested. - */ - cancelRequested: Canceled; - } - export interface ActivityTaskTimedOutEventAttributes { - /** - * The type of the timeout that caused this event. - */ - timeoutType: ActivityTaskTimeoutType; - /** - * The ID of the ActivityTaskScheduled event that was recorded when this activity task was scheduled. This information can be useful for diagnosing problems by tracing back the chain of events leading up to this event. - */ - scheduledEventId: EventId; - /** - * The ID of the ActivityTaskStarted event recorded when this activity task was started. This information can be useful for diagnosing problems by tracing back the chain of events leading up to this event. - */ - startedEventId: EventId; - /** - * Contains the content of the details parameter for the last call made by the activity to RecordActivityTaskHeartbeat. - */ - details?: LimitedData; - } - export type ActivityTaskTimeoutType = "START_TO_CLOSE"|"SCHEDULE_TO_START"|"SCHEDULE_TO_CLOSE"|"HEARTBEAT"|string; - export interface ActivityType { - /** - * The name of this activity. The combination of activity type name and version must be unique within a domain. - */ - name: Name; - /** - * The version of this activity. The combination of activity type name and version must be unique with in a domain. - */ - version: Version; - } - export interface ActivityTypeConfiguration { - /** - * The default maximum duration for tasks of an activity type specified when registering the activity type. You can override this default when scheduling a task through the ScheduleActivityTask Decision. The duration is specified in seconds, an integer greater than or equal to 0. You can use NONE to specify unlimited duration. - */ - defaultTaskStartToCloseTimeout?: DurationInSecondsOptional; - /** - * The default maximum time, in seconds, before which a worker processing a task must report progress by calling RecordActivityTaskHeartbeat. You can specify this value only when registering an activity type. The registered default value can be overridden when you schedule a task through the ScheduleActivityTask Decision. If the activity worker subsequently attempts to record a heartbeat or returns a result, the activity worker receives an UnknownResource fault. In this case, Amazon SWF no longer considers the activity task to be valid; the activity worker should clean up the activity task. The duration is specified in seconds, an integer greater than or equal to 0. You can use NONE to specify unlimited duration. - */ - defaultTaskHeartbeatTimeout?: DurationInSecondsOptional; - /** - * The default task list specified for this activity type at registration. This default is used if a task list isn't provided when a task is scheduled through the ScheduleActivityTask Decision. You can override the default registered task list when scheduling a task through the ScheduleActivityTask Decision. - */ - defaultTaskList?: TaskList; - /** - * The default task priority for tasks of this activity type, specified at registration. If not set, then 0 is used as the default priority. This default can be overridden when scheduling an activity task. Valid values are integers that range from Java's Integer.MIN_VALUE (-2147483648) to Integer.MAX_VALUE (2147483647). Higher numbers indicate higher priority. For more information about setting task priority, see Setting Task Priority in the Amazon SWF Developer Guide. - */ - defaultTaskPriority?: TaskPriority; - /** - * The default maximum duration, specified when registering the activity type, that a task of an activity type can wait before being assigned to a worker. You can override this default when scheduling a task through the ScheduleActivityTask Decision. The duration is specified in seconds, an integer greater than or equal to 0. You can use NONE to specify unlimited duration. - */ - defaultTaskScheduleToStartTimeout?: DurationInSecondsOptional; - /** - * The default maximum duration, specified when registering the activity type, for tasks of this activity type. You can override this default when scheduling a task through the ScheduleActivityTask Decision. The duration is specified in seconds, an integer greater than or equal to 0. You can use NONE to specify unlimited duration. - */ - defaultTaskScheduleToCloseTimeout?: DurationInSecondsOptional; - } - export interface ActivityTypeDetail { - /** - * General information about the activity type. The status of activity type (returned in the ActivityTypeInfo structure) can be one of the following. REGISTERED – The type is registered and available. Workers supporting this type should be running. DEPRECATED – The type was deprecated using DeprecateActivityType, but is still in use. You should keep workers supporting this type running. You cannot create new tasks of this type. - */ - typeInfo: ActivityTypeInfo; - /** - * The configuration settings registered with the activity type. - */ - configuration: ActivityTypeConfiguration; - } - export interface ActivityTypeInfo { - /** - * The ActivityType type structure representing the activity type. - */ - activityType: ActivityType; - /** - * The current status of the activity type. - */ - status: RegistrationStatus; - /** - * The description of the activity type provided in RegisterActivityType. - */ - description?: Description; - /** - * The date and time this activity type was created through RegisterActivityType. - */ - creationDate: Timestamp; - /** - * If DEPRECATED, the date and time DeprecateActivityType was called. - */ - deprecationDate?: Timestamp; - } - export type ActivityTypeInfoList = ActivityTypeInfo[]; - export interface ActivityTypeInfos { - /** - * List of activity type information. - */ - typeInfos: ActivityTypeInfoList; - /** - * If a NextPageToken was returned by a previous call, there are more results available. To retrieve the next page of results, make the call again using the returned token in nextPageToken. Keep all other arguments unchanged. The configured maximumPageSize determines how many results can be returned in a single call. - */ - nextPageToken?: PageToken; - } - export type Arn = string; - export interface CancelTimerDecisionAttributes { - /** - * The unique ID of the timer to cancel. - */ - timerId: TimerId; - } - export type CancelTimerFailedCause = "TIMER_ID_UNKNOWN"|"OPERATION_NOT_PERMITTED"|string; - export interface CancelTimerFailedEventAttributes { - /** - * The timerId provided in the CancelTimer decision that failed. - */ - timerId: TimerId; - /** - * The cause of the failure. This information is generated by the system and can be useful for diagnostic purposes. If cause is set to OPERATION_NOT_PERMITTED, the decision failed because it lacked sufficient permissions. For details and example IAM policies, see Using IAM to Manage Access to Amazon SWF Workflows in the Amazon SWF Developer Guide. - */ - cause: CancelTimerFailedCause; - /** - * The ID of the DecisionTaskCompleted event corresponding to the decision task that resulted in the CancelTimer decision to cancel this timer. This information can be useful for diagnosing problems by tracing back the chain of events leading up to this event. - */ - decisionTaskCompletedEventId: EventId; - } - export interface CancelWorkflowExecutionDecisionAttributes { - /** - * Details of the cancellation. - */ - details?: Data; - } - export type CancelWorkflowExecutionFailedCause = "UNHANDLED_DECISION"|"OPERATION_NOT_PERMITTED"|string; - export interface CancelWorkflowExecutionFailedEventAttributes { - /** - * The cause of the failure. This information is generated by the system and can be useful for diagnostic purposes. If cause is set to OPERATION_NOT_PERMITTED, the decision failed because it lacked sufficient permissions. For details and example IAM policies, see Using IAM to Manage Access to Amazon SWF Workflows in the Amazon SWF Developer Guide. - */ - cause: CancelWorkflowExecutionFailedCause; - /** - * The ID of the DecisionTaskCompleted event corresponding to the decision task that resulted in the CancelWorkflowExecution decision for this cancellation request. This information can be useful for diagnosing problems by tracing back the chain of events leading up to this event. - */ - decisionTaskCompletedEventId: EventId; - } - export type Canceled = boolean; - export type CauseMessage = string; - export type ChildPolicy = "TERMINATE"|"REQUEST_CANCEL"|"ABANDON"|string; - export interface ChildWorkflowExecutionCanceledEventAttributes { - /** - * The child workflow execution that was canceled. - */ - workflowExecution: WorkflowExecution; - /** - * The type of the child workflow execution. - */ - workflowType: WorkflowType; - /** - * Details of the cancellation (if provided). - */ - details?: Data; - /** - * The ID of the StartChildWorkflowExecutionInitiated event corresponding to the StartChildWorkflowExecution Decision to start this child workflow execution. This information can be useful for diagnosing problems by tracing back the chain of events leading up to this event. - */ - initiatedEventId: EventId; - /** - * The ID of the ChildWorkflowExecutionStarted event recorded when this child workflow execution was started. This information can be useful for diagnosing problems by tracing back the chain of events leading up to this event. - */ - startedEventId: EventId; - } - export interface ChildWorkflowExecutionCompletedEventAttributes { - /** - * The child workflow execution that was completed. - */ - workflowExecution: WorkflowExecution; - /** - * The type of the child workflow execution. - */ - workflowType: WorkflowType; - /** - * The result of the child workflow execution. - */ - result?: Data; - /** - * The ID of the StartChildWorkflowExecutionInitiated event corresponding to the StartChildWorkflowExecution Decision to start this child workflow execution. This information can be useful for diagnosing problems by tracing back the chain of events leading up to this event. - */ - initiatedEventId: EventId; - /** - * The ID of the ChildWorkflowExecutionStarted event recorded when this child workflow execution was started. This information can be useful for diagnosing problems by tracing back the chain of events leading up to this event. - */ - startedEventId: EventId; - } - export interface ChildWorkflowExecutionFailedEventAttributes { - /** - * The child workflow execution that failed. - */ - workflowExecution: WorkflowExecution; - /** - * The type of the child workflow execution. - */ - workflowType: WorkflowType; - /** - * The reason for the failure (if provided). - */ - reason?: FailureReason; - /** - * The details of the failure (if provided). - */ - details?: Data; - /** - * The ID of the StartChildWorkflowExecutionInitiated event corresponding to the StartChildWorkflowExecution Decision to start this child workflow execution. This information can be useful for diagnosing problems by tracing back the chain of events leading up to this event. - */ - initiatedEventId: EventId; - /** - * The ID of the ChildWorkflowExecutionStarted event recorded when this child workflow execution was started. This information can be useful for diagnosing problems by tracing back the chain of events leading up to this event. - */ - startedEventId: EventId; - } - export interface ChildWorkflowExecutionStartedEventAttributes { - /** - * The child workflow execution that was started. - */ - workflowExecution: WorkflowExecution; - /** - * The type of the child workflow execution. - */ - workflowType: WorkflowType; - /** - * The ID of the StartChildWorkflowExecutionInitiated event corresponding to the StartChildWorkflowExecution Decision to start this child workflow execution. This information can be useful for diagnosing problems by tracing back the chain of events leading up to this event. - */ - initiatedEventId: EventId; - } - export interface ChildWorkflowExecutionTerminatedEventAttributes { - /** - * The child workflow execution that was terminated. - */ - workflowExecution: WorkflowExecution; - /** - * The type of the child workflow execution. - */ - workflowType: WorkflowType; - /** - * The ID of the StartChildWorkflowExecutionInitiated event corresponding to the StartChildWorkflowExecution Decision to start this child workflow execution. This information can be useful for diagnosing problems by tracing back the chain of events leading up to this event. - */ - initiatedEventId: EventId; - /** - * The ID of the ChildWorkflowExecutionStarted event recorded when this child workflow execution was started. This information can be useful for diagnosing problems by tracing back the chain of events leading up to this event. - */ - startedEventId: EventId; - } - export interface ChildWorkflowExecutionTimedOutEventAttributes { - /** - * The child workflow execution that timed out. - */ - workflowExecution: WorkflowExecution; - /** - * The type of the child workflow execution. - */ - workflowType: WorkflowType; - /** - * The type of the timeout that caused the child workflow execution to time out. - */ - timeoutType: WorkflowExecutionTimeoutType; - /** - * The ID of the StartChildWorkflowExecutionInitiated event corresponding to the StartChildWorkflowExecution Decision to start this child workflow execution. This information can be useful for diagnosing problems by tracing back the chain of events leading up to this event. - */ - initiatedEventId: EventId; - /** - * The ID of the ChildWorkflowExecutionStarted event recorded when this child workflow execution was started. This information can be useful for diagnosing problems by tracing back the chain of events leading up to this event. - */ - startedEventId: EventId; - } - export type CloseStatus = "COMPLETED"|"FAILED"|"CANCELED"|"TERMINATED"|"CONTINUED_AS_NEW"|"TIMED_OUT"|string; - export interface CloseStatusFilter { - /** - * The close status that must match the close status of an execution for it to meet the criteria of this filter. - */ - status: CloseStatus; - } - export interface CompleteWorkflowExecutionDecisionAttributes { - /** - * The result of the workflow execution. The form of the result is implementation defined. - */ - result?: Data; - } - export type CompleteWorkflowExecutionFailedCause = "UNHANDLED_DECISION"|"OPERATION_NOT_PERMITTED"|string; - export interface CompleteWorkflowExecutionFailedEventAttributes { - /** - * The cause of the failure. This information is generated by the system and can be useful for diagnostic purposes. If cause is set to OPERATION_NOT_PERMITTED, the decision failed because it lacked sufficient permissions. For details and example IAM policies, see Using IAM to Manage Access to Amazon SWF Workflows in the Amazon SWF Developer Guide. - */ - cause: CompleteWorkflowExecutionFailedCause; - /** - * The ID of the DecisionTaskCompleted event corresponding to the decision task that resulted in the CompleteWorkflowExecution decision to complete this execution. This information can be useful for diagnosing problems by tracing back the chain of events leading up to this event. - */ - decisionTaskCompletedEventId: EventId; - } - export interface ContinueAsNewWorkflowExecutionDecisionAttributes { - /** - * The input provided to the new workflow execution. - */ - input?: Data; - /** - * If set, specifies the total duration for this workflow execution. This overrides the defaultExecutionStartToCloseTimeout specified when registering the workflow type. The duration is specified in seconds, an integer greater than or equal to 0. You can use NONE to specify unlimited duration. An execution start-to-close timeout for this workflow execution must be specified either as a default for the workflow type or through this field. If neither this field is set nor a default execution start-to-close timeout was specified at registration time then a fault is returned. - */ - executionStartToCloseTimeout?: DurationInSecondsOptional; - /** - * The task list to use for the decisions of the new (continued) workflow execution. - */ - taskList?: TaskList; - /** - * The task priority that, if set, specifies the priority for the decision tasks for this workflow execution. This overrides the defaultTaskPriority specified when registering the workflow type. Valid values are integers that range from Java's Integer.MIN_VALUE (-2147483648) to Integer.MAX_VALUE (2147483647). Higher numbers indicate higher priority. For more information about setting task priority, see Setting Task Priority in the Amazon SWF Developer Guide. - */ - taskPriority?: TaskPriority; - /** - * Specifies the maximum duration of decision tasks for the new workflow execution. This parameter overrides the defaultTaskStartToCloseTimout specified when registering the workflow type using RegisterWorkflowType. The duration is specified in seconds, an integer greater than or equal to 0. You can use NONE to specify unlimited duration. A task start-to-close timeout for the new workflow execution must be specified either as a default for the workflow type or through this parameter. If neither this parameter is set nor a default task start-to-close timeout was specified at registration time then a fault is returned. - */ - taskStartToCloseTimeout?: DurationInSecondsOptional; - /** - * If set, specifies the policy to use for the child workflow executions of the new execution if it is terminated by calling the TerminateWorkflowExecution action explicitly or due to an expired timeout. This policy overrides the default child policy specified when registering the workflow type using RegisterWorkflowType. The supported child policies are: TERMINATE – The child executions are terminated. REQUEST_CANCEL – A request to cancel is attempted for each child execution by recording a WorkflowExecutionCancelRequested event in its history. It is up to the decider to take appropriate actions when it receives an execution history with this event. ABANDON – No action is taken. The child executions continue to run. A child policy for this workflow execution must be specified either as a default for the workflow type or through this parameter. If neither this parameter is set nor a default child policy was specified at registration time then a fault is returned. - */ - childPolicy?: ChildPolicy; - /** - * The list of tags to associate with the new workflow execution. A maximum of 5 tags can be specified. You can list workflow executions with a specific tag by calling ListOpenWorkflowExecutions or ListClosedWorkflowExecutions and specifying a TagFilter. - */ - tagList?: TagList; - /** - * The version of the workflow to start. - */ - workflowTypeVersion?: Version; - /** - * The IAM role to attach to the new (continued) execution. - */ - lambdaRole?: Arn; - } - export type ContinueAsNewWorkflowExecutionFailedCause = "UNHANDLED_DECISION"|"WORKFLOW_TYPE_DEPRECATED"|"WORKFLOW_TYPE_DOES_NOT_EXIST"|"DEFAULT_EXECUTION_START_TO_CLOSE_TIMEOUT_UNDEFINED"|"DEFAULT_TASK_START_TO_CLOSE_TIMEOUT_UNDEFINED"|"DEFAULT_TASK_LIST_UNDEFINED"|"DEFAULT_CHILD_POLICY_UNDEFINED"|"CONTINUE_AS_NEW_WORKFLOW_EXECUTION_RATE_EXCEEDED"|"OPERATION_NOT_PERMITTED"|string; - export interface ContinueAsNewWorkflowExecutionFailedEventAttributes { - /** - * The cause of the failure. This information is generated by the system and can be useful for diagnostic purposes. If cause is set to OPERATION_NOT_PERMITTED, the decision failed because it lacked sufficient permissions. For details and example IAM policies, see Using IAM to Manage Access to Amazon SWF Workflows in the Amazon SWF Developer Guide. - */ - cause: ContinueAsNewWorkflowExecutionFailedCause; - /** - * The ID of the DecisionTaskCompleted event corresponding to the decision task that resulted in the ContinueAsNewWorkflowExecution decision that started this execution. This information can be useful for diagnosing problems by tracing back the chain of events leading up to this event. - */ - decisionTaskCompletedEventId: EventId; - } - export type Count = number; - export interface CountClosedWorkflowExecutionsInput { - /** - * The name of the domain containing the workflow executions to count. - */ - domain: DomainName; - /** - * If specified, only workflow executions that meet the start time criteria of the filter are counted. startTimeFilter and closeTimeFilter are mutually exclusive. You must specify one of these in a request but not both. - */ - startTimeFilter?: ExecutionTimeFilter; - /** - * If specified, only workflow executions that meet the close time criteria of the filter are counted. startTimeFilter and closeTimeFilter are mutually exclusive. You must specify one of these in a request but not both. - */ - closeTimeFilter?: ExecutionTimeFilter; - /** - * If specified, only workflow executions matching the WorkflowId in the filter are counted. closeStatusFilter, executionFilter, typeFilter and tagFilter are mutually exclusive. You can specify at most one of these in a request. - */ - executionFilter?: WorkflowExecutionFilter; - /** - * If specified, indicates the type of the workflow executions to be counted. closeStatusFilter, executionFilter, typeFilter and tagFilter are mutually exclusive. You can specify at most one of these in a request. - */ - typeFilter?: WorkflowTypeFilter; - /** - * If specified, only executions that have a tag that matches the filter are counted. closeStatusFilter, executionFilter, typeFilter and tagFilter are mutually exclusive. You can specify at most one of these in a request. - */ - tagFilter?: TagFilter; - /** - * If specified, only workflow executions that match this close status are counted. This filter has an affect only if executionStatus is specified as CLOSED. closeStatusFilter, executionFilter, typeFilter and tagFilter are mutually exclusive. You can specify at most one of these in a request. - */ - closeStatusFilter?: CloseStatusFilter; - } - export interface CountOpenWorkflowExecutionsInput { - /** - * The name of the domain containing the workflow executions to count. - */ - domain: DomainName; - /** - * Specifies the start time criteria that workflow executions must meet in order to be counted. - */ - startTimeFilter: ExecutionTimeFilter; - /** - * Specifies the type of the workflow executions to be counted. executionFilter, typeFilter and tagFilter are mutually exclusive. You can specify at most one of these in a request. - */ - typeFilter?: WorkflowTypeFilter; - /** - * If specified, only executions that have a tag that matches the filter are counted. executionFilter, typeFilter and tagFilter are mutually exclusive. You can specify at most one of these in a request. - */ - tagFilter?: TagFilter; - /** - * If specified, only workflow executions matching the WorkflowId in the filter are counted. executionFilter, typeFilter and tagFilter are mutually exclusive. You can specify at most one of these in a request. - */ - executionFilter?: WorkflowExecutionFilter; - } - export interface CountPendingActivityTasksInput { - /** - * The name of the domain that contains the task list. - */ - domain: DomainName; - /** - * The name of the task list. - */ - taskList: TaskList; - } - export interface CountPendingDecisionTasksInput { - /** - * The name of the domain that contains the task list. - */ - domain: DomainName; - /** - * The name of the task list. - */ - taskList: TaskList; - } - export type Data = string; - export interface Decision { - /** - * Specifies the type of the decision. - */ - decisionType: DecisionType; - /** - * Provides the details of the ScheduleActivityTask decision. It isn't set for other decision types. - */ - scheduleActivityTaskDecisionAttributes?: ScheduleActivityTaskDecisionAttributes; - /** - * Provides the details of the RequestCancelActivityTask decision. It isn't set for other decision types. - */ - requestCancelActivityTaskDecisionAttributes?: RequestCancelActivityTaskDecisionAttributes; - /** - * Provides the details of the CompleteWorkflowExecution decision. It isn't set for other decision types. - */ - completeWorkflowExecutionDecisionAttributes?: CompleteWorkflowExecutionDecisionAttributes; - /** - * Provides the details of the FailWorkflowExecution decision. It isn't set for other decision types. - */ - failWorkflowExecutionDecisionAttributes?: FailWorkflowExecutionDecisionAttributes; - /** - * Provides the details of the CancelWorkflowExecution decision. It isn't set for other decision types. - */ - cancelWorkflowExecutionDecisionAttributes?: CancelWorkflowExecutionDecisionAttributes; - /** - * Provides the details of the ContinueAsNewWorkflowExecution decision. It isn't set for other decision types. - */ - continueAsNewWorkflowExecutionDecisionAttributes?: ContinueAsNewWorkflowExecutionDecisionAttributes; - /** - * Provides the details of the RecordMarker decision. It isn't set for other decision types. - */ - recordMarkerDecisionAttributes?: RecordMarkerDecisionAttributes; - /** - * Provides the details of the StartTimer decision. It isn't set for other decision types. - */ - startTimerDecisionAttributes?: StartTimerDecisionAttributes; - /** - * Provides the details of the CancelTimer decision. It isn't set for other decision types. - */ - cancelTimerDecisionAttributes?: CancelTimerDecisionAttributes; - /** - * Provides the details of the SignalExternalWorkflowExecution decision. It isn't set for other decision types. - */ - signalExternalWorkflowExecutionDecisionAttributes?: SignalExternalWorkflowExecutionDecisionAttributes; - /** - * Provides the details of the RequestCancelExternalWorkflowExecution decision. It isn't set for other decision types. - */ - requestCancelExternalWorkflowExecutionDecisionAttributes?: RequestCancelExternalWorkflowExecutionDecisionAttributes; - /** - * Provides the details of the StartChildWorkflowExecution decision. It isn't set for other decision types. - */ - startChildWorkflowExecutionDecisionAttributes?: StartChildWorkflowExecutionDecisionAttributes; - /** - * Provides the details of the ScheduleLambdaFunction decision. It isn't set for other decision types. - */ - scheduleLambdaFunctionDecisionAttributes?: ScheduleLambdaFunctionDecisionAttributes; - } - export type DecisionList = Decision[]; - export interface DecisionTask { - /** - * The opaque string used as a handle on the task. This token is used by workers to communicate progress and response information back to the system about the task. - */ - taskToken: TaskToken; - /** - * The ID of the DecisionTaskStarted event recorded in the history. - */ - startedEventId: EventId; - /** - * The workflow execution for which this decision task was created. - */ - workflowExecution: WorkflowExecution; - /** - * The type of the workflow execution for which this decision task was created. - */ - workflowType: WorkflowType; - /** - * A paginated list of history events of the workflow execution. The decider uses this during the processing of the decision task. - */ - events: HistoryEventList; - /** - * If a NextPageToken was returned by a previous call, there are more results available. To retrieve the next page of results, make the call again using the returned token in nextPageToken. Keep all other arguments unchanged. The configured maximumPageSize determines how many results can be returned in a single call. - */ - nextPageToken?: PageToken; - /** - * The ID of the DecisionTaskStarted event of the previous decision task of this workflow execution that was processed by the decider. This can be used to determine the events in the history new since the last decision task received by the decider. - */ - previousStartedEventId?: EventId; - } - export interface DecisionTaskCompletedEventAttributes { - /** - * User defined context for the workflow execution. - */ - executionContext?: Data; - /** - * The ID of the DecisionTaskScheduled event that was recorded when this decision task was scheduled. This information can be useful for diagnosing problems by tracing back the chain of events leading up to this event. - */ - scheduledEventId: EventId; - /** - * The ID of the DecisionTaskStarted event recorded when this decision task was started. This information can be useful for diagnosing problems by tracing back the chain of events leading up to this event. - */ - startedEventId: EventId; - } - export interface DecisionTaskScheduledEventAttributes { - /** - * The name of the task list in which the decision task was scheduled. - */ - taskList: TaskList; - /** - * A task priority that, if set, specifies the priority for this decision task. Valid values are integers that range from Java's Integer.MIN_VALUE (-2147483648) to Integer.MAX_VALUE (2147483647). Higher numbers indicate higher priority. For more information about setting task priority, see Setting Task Priority in the Amazon SWF Developer Guide. - */ - taskPriority?: TaskPriority; - /** - * The maximum duration for this decision task. The task is considered timed out if it doesn't completed within this duration. The duration is specified in seconds, an integer greater than or equal to 0. You can use NONE to specify unlimited duration. - */ - startToCloseTimeout?: DurationInSecondsOptional; - } - export interface DecisionTaskStartedEventAttributes { - /** - * Identity of the decider making the request. This enables diagnostic tracing when problems arise. The form of this identity is user defined. - */ - identity?: Identity; - /** - * The ID of the DecisionTaskScheduled event that was recorded when this decision task was scheduled. This information can be useful for diagnosing problems by tracing back the chain of events leading up to this event. - */ - scheduledEventId: EventId; - } - export interface DecisionTaskTimedOutEventAttributes { - /** - * The type of timeout that expired before the decision task could be completed. - */ - timeoutType: DecisionTaskTimeoutType; - /** - * The ID of the DecisionTaskScheduled event that was recorded when this decision task was scheduled. This information can be useful for diagnosing problems by tracing back the chain of events leading up to this event. - */ - scheduledEventId: EventId; - /** - * The ID of the DecisionTaskStarted event recorded when this decision task was started. This information can be useful for diagnosing problems by tracing back the chain of events leading up to this event. - */ - startedEventId: EventId; - } - export type DecisionTaskTimeoutType = "START_TO_CLOSE"|string; - export type DecisionType = "ScheduleActivityTask"|"RequestCancelActivityTask"|"CompleteWorkflowExecution"|"FailWorkflowExecution"|"CancelWorkflowExecution"|"ContinueAsNewWorkflowExecution"|"RecordMarker"|"StartTimer"|"CancelTimer"|"SignalExternalWorkflowExecution"|"RequestCancelExternalWorkflowExecution"|"StartChildWorkflowExecution"|"ScheduleLambdaFunction"|string; - export interface DeprecateActivityTypeInput { - /** - * The name of the domain in which the activity type is registered. - */ - domain: DomainName; - /** - * The activity type to deprecate. - */ - activityType: ActivityType; - } - export interface DeprecateDomainInput { - /** - * The name of the domain to deprecate. - */ - name: DomainName; - } - export interface DeprecateWorkflowTypeInput { - /** - * The name of the domain in which the workflow type is registered. - */ - domain: DomainName; - /** - * The workflow type to deprecate. - */ - workflowType: WorkflowType; - } - export interface DescribeActivityTypeInput { - /** - * The name of the domain in which the activity type is registered. - */ - domain: DomainName; - /** - * The activity type to get information about. Activity types are identified by the name and version that were supplied when the activity was registered. - */ - activityType: ActivityType; - } - export interface DescribeDomainInput { - /** - * The name of the domain to describe. - */ - name: DomainName; - } - export interface DescribeWorkflowExecutionInput { - /** - * The name of the domain containing the workflow execution. - */ - domain: DomainName; - /** - * The workflow execution to describe. - */ - execution: WorkflowExecution; - } - export interface DescribeWorkflowTypeInput { - /** - * The name of the domain in which this workflow type is registered. - */ - domain: DomainName; - /** - * The workflow type to describe. - */ - workflowType: WorkflowType; - } - export type Description = string; - export interface DomainConfiguration { - /** - * The retention period for workflow executions in this domain. - */ - workflowExecutionRetentionPeriodInDays: DurationInDays; - } - export interface DomainDetail { - /** - * The basic information about a domain, such as its name, status, and description. - */ - domainInfo: DomainInfo; - /** - * The domain configuration. Currently, this includes only the domain's retention period. - */ - configuration: DomainConfiguration; - } - export interface DomainInfo { - /** - * The name of the domain. This name is unique within the account. - */ - name: DomainName; - /** - * The status of the domain: REGISTERED – The domain is properly registered and available. You can use this domain for registering types and creating new workflow executions. DEPRECATED – The domain was deprecated using DeprecateDomain, but is still in use. You should not create new workflow executions in this domain. - */ - status: RegistrationStatus; - /** - * The description of the domain provided through RegisterDomain. - */ - description?: Description; - } - export type DomainInfoList = DomainInfo[]; - export interface DomainInfos { - /** - * A list of DomainInfo structures. - */ - domainInfos: DomainInfoList; - /** - * If a NextPageToken was returned by a previous call, there are more results available. To retrieve the next page of results, make the call again using the returned token in nextPageToken. Keep all other arguments unchanged. The configured maximumPageSize determines how many results can be returned in a single call. - */ - nextPageToken?: PageToken; - } - export type DomainName = string; - export type DurationInDays = string; - export type DurationInSeconds = string; - export type DurationInSecondsOptional = string; - export type ErrorMessage = string; - export type EventId = number; - export type EventType = "WorkflowExecutionStarted"|"WorkflowExecutionCancelRequested"|"WorkflowExecutionCompleted"|"CompleteWorkflowExecutionFailed"|"WorkflowExecutionFailed"|"FailWorkflowExecutionFailed"|"WorkflowExecutionTimedOut"|"WorkflowExecutionCanceled"|"CancelWorkflowExecutionFailed"|"WorkflowExecutionContinuedAsNew"|"ContinueAsNewWorkflowExecutionFailed"|"WorkflowExecutionTerminated"|"DecisionTaskScheduled"|"DecisionTaskStarted"|"DecisionTaskCompleted"|"DecisionTaskTimedOut"|"ActivityTaskScheduled"|"ScheduleActivityTaskFailed"|"ActivityTaskStarted"|"ActivityTaskCompleted"|"ActivityTaskFailed"|"ActivityTaskTimedOut"|"ActivityTaskCanceled"|"ActivityTaskCancelRequested"|"RequestCancelActivityTaskFailed"|"WorkflowExecutionSignaled"|"MarkerRecorded"|"RecordMarkerFailed"|"TimerStarted"|"StartTimerFailed"|"TimerFired"|"TimerCanceled"|"CancelTimerFailed"|"StartChildWorkflowExecutionInitiated"|"StartChildWorkflowExecutionFailed"|"ChildWorkflowExecutionStarted"|"ChildWorkflowExecutionCompleted"|"ChildWorkflowExecutionFailed"|"ChildWorkflowExecutionTimedOut"|"ChildWorkflowExecutionCanceled"|"ChildWorkflowExecutionTerminated"|"SignalExternalWorkflowExecutionInitiated"|"SignalExternalWorkflowExecutionFailed"|"ExternalWorkflowExecutionSignaled"|"RequestCancelExternalWorkflowExecutionInitiated"|"RequestCancelExternalWorkflowExecutionFailed"|"ExternalWorkflowExecutionCancelRequested"|"LambdaFunctionScheduled"|"LambdaFunctionStarted"|"LambdaFunctionCompleted"|"LambdaFunctionFailed"|"LambdaFunctionTimedOut"|"ScheduleLambdaFunctionFailed"|"StartLambdaFunctionFailed"|string; - export type ExecutionStatus = "OPEN"|"CLOSED"|string; - export interface ExecutionTimeFilter { - /** - * Specifies the oldest start or close date and time to return. - */ - oldestDate: Timestamp; - /** - * Specifies the latest start or close date and time to return. - */ - latestDate?: Timestamp; - } - export interface ExternalWorkflowExecutionCancelRequestedEventAttributes { - /** - * The external workflow execution to which the cancellation request was delivered. - */ - workflowExecution: WorkflowExecution; - /** - * The ID of the RequestCancelExternalWorkflowExecutionInitiated event corresponding to the RequestCancelExternalWorkflowExecution decision to cancel this external workflow execution. This information can be useful for diagnosing problems by tracing back the chain of events leading up to this event. - */ - initiatedEventId: EventId; - } - export interface ExternalWorkflowExecutionSignaledEventAttributes { - /** - * The external workflow execution that the signal was delivered to. - */ - workflowExecution: WorkflowExecution; - /** - * The ID of the SignalExternalWorkflowExecutionInitiated event corresponding to the SignalExternalWorkflowExecution decision to request this signal. This information can be useful for diagnosing problems by tracing back the chain of events leading up to this event. - */ - initiatedEventId: EventId; - } - export interface FailWorkflowExecutionDecisionAttributes { - /** - * A descriptive reason for the failure that may help in diagnostics. - */ - reason?: FailureReason; - /** - * Details of the failure. - */ - details?: Data; - } - export type FailWorkflowExecutionFailedCause = "UNHANDLED_DECISION"|"OPERATION_NOT_PERMITTED"|string; - export interface FailWorkflowExecutionFailedEventAttributes { - /** - * The cause of the failure. This information is generated by the system and can be useful for diagnostic purposes. If cause is set to OPERATION_NOT_PERMITTED, the decision failed because it lacked sufficient permissions. For details and example IAM policies, see Using IAM to Manage Access to Amazon SWF Workflows in the Amazon SWF Developer Guide. - */ - cause: FailWorkflowExecutionFailedCause; - /** - * The ID of the DecisionTaskCompleted event corresponding to the decision task that resulted in the FailWorkflowExecution decision to fail this execution. This information can be useful for diagnosing problems by tracing back the chain of events leading up to this event. - */ - decisionTaskCompletedEventId: EventId; - } - export type FailureReason = string; - export type FunctionId = string; - export type FunctionInput = string; - export type FunctionName = string; - export interface GetWorkflowExecutionHistoryInput { - /** - * The name of the domain containing the workflow execution. - */ - domain: DomainName; - /** - * Specifies the workflow execution for which to return the history. - */ - execution: WorkflowExecution; - /** - * If a NextPageToken was returned by a previous call, there are more results available. To retrieve the next page of results, make the call again using the returned token in nextPageToken. Keep all other arguments unchanged. The configured maximumPageSize determines how many results can be returned in a single call. - */ - nextPageToken?: PageToken; - /** - * The maximum number of results that are returned per call. nextPageToken can be used to obtain futher pages of results. The default is 1000, which is the maximum allowed page size. You can, however, specify a page size smaller than the maximum. This is an upper limit only; the actual number of results returned per call may be fewer than the specified maximum. - */ - maximumPageSize?: PageSize; - /** - * When set to true, returns the events in reverse order. By default the results are returned in ascending order of the eventTimeStamp of the events. - */ - reverseOrder?: ReverseOrder; - } - export interface History { - /** - * The list of history events. - */ - events: HistoryEventList; - /** - * If a NextPageToken was returned by a previous call, there are more results available. To retrieve the next page of results, make the call again using the returned token in nextPageToken. Keep all other arguments unchanged. The configured maximumPageSize determines how many results can be returned in a single call. - */ - nextPageToken?: PageToken; - } - export interface HistoryEvent { - /** - * The date and time when the event occurred. - */ - eventTimestamp: Timestamp; - /** - * The type of the history event. - */ - eventType: EventType; - /** - * The system generated ID of the event. This ID uniquely identifies the event with in the workflow execution history. - */ - eventId: EventId; - /** - * If the event is of type WorkflowExecutionStarted then this member is set and provides detailed information about the event. It isn't set for other event types. - */ - workflowExecutionStartedEventAttributes?: WorkflowExecutionStartedEventAttributes; - /** - * If the event is of type WorkflowExecutionCompleted then this member is set and provides detailed information about the event. It isn't set for other event types. - */ - workflowExecutionCompletedEventAttributes?: WorkflowExecutionCompletedEventAttributes; - /** - * If the event is of type CompleteWorkflowExecutionFailed then this member is set and provides detailed information about the event. It isn't set for other event types. - */ - completeWorkflowExecutionFailedEventAttributes?: CompleteWorkflowExecutionFailedEventAttributes; - /** - * If the event is of type WorkflowExecutionFailed then this member is set and provides detailed information about the event. It isn't set for other event types. - */ - workflowExecutionFailedEventAttributes?: WorkflowExecutionFailedEventAttributes; - /** - * If the event is of type FailWorkflowExecutionFailed then this member is set and provides detailed information about the event. It isn't set for other event types. - */ - failWorkflowExecutionFailedEventAttributes?: FailWorkflowExecutionFailedEventAttributes; - /** - * If the event is of type WorkflowExecutionTimedOut then this member is set and provides detailed information about the event. It isn't set for other event types. - */ - workflowExecutionTimedOutEventAttributes?: WorkflowExecutionTimedOutEventAttributes; - /** - * If the event is of type WorkflowExecutionCanceled then this member is set and provides detailed information about the event. It isn't set for other event types. - */ - workflowExecutionCanceledEventAttributes?: WorkflowExecutionCanceledEventAttributes; - /** - * If the event is of type CancelWorkflowExecutionFailed then this member is set and provides detailed information about the event. It isn't set for other event types. - */ - cancelWorkflowExecutionFailedEventAttributes?: CancelWorkflowExecutionFailedEventAttributes; - /** - * If the event is of type WorkflowExecutionContinuedAsNew then this member is set and provides detailed information about the event. It isn't set for other event types. - */ - workflowExecutionContinuedAsNewEventAttributes?: WorkflowExecutionContinuedAsNewEventAttributes; - /** - * If the event is of type ContinueAsNewWorkflowExecutionFailed then this member is set and provides detailed information about the event. It isn't set for other event types. - */ - continueAsNewWorkflowExecutionFailedEventAttributes?: ContinueAsNewWorkflowExecutionFailedEventAttributes; - /** - * If the event is of type WorkflowExecutionTerminated then this member is set and provides detailed information about the event. It isn't set for other event types. - */ - workflowExecutionTerminatedEventAttributes?: WorkflowExecutionTerminatedEventAttributes; - /** - * If the event is of type WorkflowExecutionCancelRequested then this member is set and provides detailed information about the event. It isn't set for other event types. - */ - workflowExecutionCancelRequestedEventAttributes?: WorkflowExecutionCancelRequestedEventAttributes; - /** - * If the event is of type DecisionTaskScheduled then this member is set and provides detailed information about the event. It isn't set for other event types. - */ - decisionTaskScheduledEventAttributes?: DecisionTaskScheduledEventAttributes; - /** - * If the event is of type DecisionTaskStarted then this member is set and provides detailed information about the event. It isn't set for other event types. - */ - decisionTaskStartedEventAttributes?: DecisionTaskStartedEventAttributes; - /** - * If the event is of type DecisionTaskCompleted then this member is set and provides detailed information about the event. It isn't set for other event types. - */ - decisionTaskCompletedEventAttributes?: DecisionTaskCompletedEventAttributes; - /** - * If the event is of type DecisionTaskTimedOut then this member is set and provides detailed information about the event. It isn't set for other event types. - */ - decisionTaskTimedOutEventAttributes?: DecisionTaskTimedOutEventAttributes; - /** - * If the event is of type ActivityTaskScheduled then this member is set and provides detailed information about the event. It isn't set for other event types. - */ - activityTaskScheduledEventAttributes?: ActivityTaskScheduledEventAttributes; - /** - * If the event is of type ActivityTaskStarted then this member is set and provides detailed information about the event. It isn't set for other event types. - */ - activityTaskStartedEventAttributes?: ActivityTaskStartedEventAttributes; - /** - * If the event is of type ActivityTaskCompleted then this member is set and provides detailed information about the event. It isn't set for other event types. - */ - activityTaskCompletedEventAttributes?: ActivityTaskCompletedEventAttributes; - /** - * If the event is of type ActivityTaskFailed then this member is set and provides detailed information about the event. It isn't set for other event types. - */ - activityTaskFailedEventAttributes?: ActivityTaskFailedEventAttributes; - /** - * If the event is of type ActivityTaskTimedOut then this member is set and provides detailed information about the event. It isn't set for other event types. - */ - activityTaskTimedOutEventAttributes?: ActivityTaskTimedOutEventAttributes; - /** - * If the event is of type ActivityTaskCanceled then this member is set and provides detailed information about the event. It isn't set for other event types. - */ - activityTaskCanceledEventAttributes?: ActivityTaskCanceledEventAttributes; - /** - * If the event is of type ActivityTaskcancelRequested then this member is set and provides detailed information about the event. It isn't set for other event types. - */ - activityTaskCancelRequestedEventAttributes?: ActivityTaskCancelRequestedEventAttributes; - /** - * If the event is of type WorkflowExecutionSignaled then this member is set and provides detailed information about the event. It isn't set for other event types. - */ - workflowExecutionSignaledEventAttributes?: WorkflowExecutionSignaledEventAttributes; - /** - * If the event is of type MarkerRecorded then this member is set and provides detailed information about the event. It isn't set for other event types. - */ - markerRecordedEventAttributes?: MarkerRecordedEventAttributes; - /** - * If the event is of type DecisionTaskFailed then this member is set and provides detailed information about the event. It isn't set for other event types. - */ - recordMarkerFailedEventAttributes?: RecordMarkerFailedEventAttributes; - /** - * If the event is of type TimerStarted then this member is set and provides detailed information about the event. It isn't set for other event types. - */ - timerStartedEventAttributes?: TimerStartedEventAttributes; - /** - * If the event is of type TimerFired then this member is set and provides detailed information about the event. It isn't set for other event types. - */ - timerFiredEventAttributes?: TimerFiredEventAttributes; - /** - * If the event is of type TimerCanceled then this member is set and provides detailed information about the event. It isn't set for other event types. - */ - timerCanceledEventAttributes?: TimerCanceledEventAttributes; - /** - * If the event is of type StartChildWorkflowExecutionInitiated then this member is set and provides detailed information about the event. It isn't set for other event types. - */ - startChildWorkflowExecutionInitiatedEventAttributes?: StartChildWorkflowExecutionInitiatedEventAttributes; - /** - * If the event is of type ChildWorkflowExecutionStarted then this member is set and provides detailed information about the event. It isn't set for other event types. - */ - childWorkflowExecutionStartedEventAttributes?: ChildWorkflowExecutionStartedEventAttributes; - /** - * If the event is of type ChildWorkflowExecutionCompleted then this member is set and provides detailed information about the event. It isn't set for other event types. - */ - childWorkflowExecutionCompletedEventAttributes?: ChildWorkflowExecutionCompletedEventAttributes; - /** - * If the event is of type ChildWorkflowExecutionFailed then this member is set and provides detailed information about the event. It isn't set for other event types. - */ - childWorkflowExecutionFailedEventAttributes?: ChildWorkflowExecutionFailedEventAttributes; - /** - * If the event is of type ChildWorkflowExecutionTimedOut then this member is set and provides detailed information about the event. It isn't set for other event types. - */ - childWorkflowExecutionTimedOutEventAttributes?: ChildWorkflowExecutionTimedOutEventAttributes; - /** - * If the event is of type ChildWorkflowExecutionCanceled then this member is set and provides detailed information about the event. It isn't set for other event types. - */ - childWorkflowExecutionCanceledEventAttributes?: ChildWorkflowExecutionCanceledEventAttributes; - /** - * If the event is of type ChildWorkflowExecutionTerminated then this member is set and provides detailed information about the event. It isn't set for other event types. - */ - childWorkflowExecutionTerminatedEventAttributes?: ChildWorkflowExecutionTerminatedEventAttributes; - /** - * If the event is of type SignalExternalWorkflowExecutionInitiated then this member is set and provides detailed information about the event. It isn't set for other event types. - */ - signalExternalWorkflowExecutionInitiatedEventAttributes?: SignalExternalWorkflowExecutionInitiatedEventAttributes; - /** - * If the event is of type ExternalWorkflowExecutionSignaled then this member is set and provides detailed information about the event. It isn't set for other event types. - */ - externalWorkflowExecutionSignaledEventAttributes?: ExternalWorkflowExecutionSignaledEventAttributes; - /** - * If the event is of type SignalExternalWorkflowExecutionFailed then this member is set and provides detailed information about the event. It isn't set for other event types. - */ - signalExternalWorkflowExecutionFailedEventAttributes?: SignalExternalWorkflowExecutionFailedEventAttributes; - /** - * If the event is of type ExternalWorkflowExecutionCancelRequested then this member is set and provides detailed information about the event. It isn't set for other event types. - */ - externalWorkflowExecutionCancelRequestedEventAttributes?: ExternalWorkflowExecutionCancelRequestedEventAttributes; - /** - * If the event is of type RequestCancelExternalWorkflowExecutionInitiated then this member is set and provides detailed information about the event. It isn't set for other event types. - */ - requestCancelExternalWorkflowExecutionInitiatedEventAttributes?: RequestCancelExternalWorkflowExecutionInitiatedEventAttributes; - /** - * If the event is of type RequestCancelExternalWorkflowExecutionFailed then this member is set and provides detailed information about the event. It isn't set for other event types. - */ - requestCancelExternalWorkflowExecutionFailedEventAttributes?: RequestCancelExternalWorkflowExecutionFailedEventAttributes; - /** - * If the event is of type ScheduleActivityTaskFailed then this member is set and provides detailed information about the event. It isn't set for other event types. - */ - scheduleActivityTaskFailedEventAttributes?: ScheduleActivityTaskFailedEventAttributes; - /** - * If the event is of type RequestCancelActivityTaskFailed then this member is set and provides detailed information about the event. It isn't set for other event types. - */ - requestCancelActivityTaskFailedEventAttributes?: RequestCancelActivityTaskFailedEventAttributes; - /** - * If the event is of type StartTimerFailed then this member is set and provides detailed information about the event. It isn't set for other event types. - */ - startTimerFailedEventAttributes?: StartTimerFailedEventAttributes; - /** - * If the event is of type CancelTimerFailed then this member is set and provides detailed information about the event. It isn't set for other event types. - */ - cancelTimerFailedEventAttributes?: CancelTimerFailedEventAttributes; - /** - * If the event is of type StartChildWorkflowExecutionFailed then this member is set and provides detailed information about the event. It isn't set for other event types. - */ - startChildWorkflowExecutionFailedEventAttributes?: StartChildWorkflowExecutionFailedEventAttributes; - /** - * Provides the details of the LambdaFunctionScheduled event. It isn't set for other event types. - */ - lambdaFunctionScheduledEventAttributes?: LambdaFunctionScheduledEventAttributes; - /** - * Provides the details of the LambdaFunctionStarted event. It isn't set for other event types. - */ - lambdaFunctionStartedEventAttributes?: LambdaFunctionStartedEventAttributes; - /** - * Provides the details of the LambdaFunctionCompleted event. It isn't set for other event types. - */ - lambdaFunctionCompletedEventAttributes?: LambdaFunctionCompletedEventAttributes; - /** - * Provides the details of the LambdaFunctionFailed event. It isn't set for other event types. - */ - lambdaFunctionFailedEventAttributes?: LambdaFunctionFailedEventAttributes; - /** - * Provides the details of the LambdaFunctionTimedOut event. It isn't set for other event types. - */ - lambdaFunctionTimedOutEventAttributes?: LambdaFunctionTimedOutEventAttributes; - /** - * Provides the details of the ScheduleLambdaFunctionFailed event. It isn't set for other event types. - */ - scheduleLambdaFunctionFailedEventAttributes?: ScheduleLambdaFunctionFailedEventAttributes; - /** - * Provides the details of the StartLambdaFunctionFailed event. It isn't set for other event types. - */ - startLambdaFunctionFailedEventAttributes?: StartLambdaFunctionFailedEventAttributes; - } - export type HistoryEventList = HistoryEvent[]; - export type Identity = string; - export interface LambdaFunctionCompletedEventAttributes { - /** - * The ID of the LambdaFunctionScheduled event that was recorded when this Lambda task was scheduled. To help diagnose issues, use this information to trace back the chain of events leading up to this event. - */ - scheduledEventId: EventId; - /** - * The ID of the LambdaFunctionStarted event recorded when this activity task started. To help diagnose issues, use this information to trace back the chain of events leading up to this event. - */ - startedEventId: EventId; - /** - * The results of the Lambda task. - */ - result?: Data; - } - export interface LambdaFunctionFailedEventAttributes { - /** - * The ID of the LambdaFunctionScheduled event that was recorded when this activity task was scheduled. To help diagnose issues, use this information to trace back the chain of events leading up to this event. - */ - scheduledEventId: EventId; - /** - * The ID of the LambdaFunctionStarted event recorded when this activity task started. To help diagnose issues, use this information to trace back the chain of events leading up to this event. - */ - startedEventId: EventId; - /** - * The reason provided for the failure. - */ - reason?: FailureReason; - /** - * The details of the failure. - */ - details?: Data; - } - export interface LambdaFunctionScheduledEventAttributes { - /** - * The unique ID of the Lambda task. - */ - id: FunctionId; - /** - * The name of the Lambda function. - */ - name: FunctionName; - /** - * Data attached to the event that the decider can use in subsequent workflow tasks. This data isn't sent to the Lambda task. - */ - control?: Data; - /** - * The input provided to the Lambda task. - */ - input?: FunctionInput; - /** - * The maximum amount of time a worker can take to process the Lambda task. - */ - startToCloseTimeout?: DurationInSecondsOptional; - /** - * The ID of the LambdaFunctionCompleted event corresponding to the decision that resulted in scheduling this activity task. To help diagnose issues, use this information to trace back the chain of events leading up to this event. - */ - decisionTaskCompletedEventId: EventId; - } - export interface LambdaFunctionStartedEventAttributes { - /** - * The ID of the LambdaFunctionScheduled event that was recorded when this activity task was scheduled. To help diagnose issues, use this information to trace back the chain of events leading up to this event. - */ - scheduledEventId: EventId; - } - export interface LambdaFunctionTimedOutEventAttributes { - /** - * The ID of the LambdaFunctionScheduled event that was recorded when this activity task was scheduled. To help diagnose issues, use this information to trace back the chain of events leading up to this event. - */ - scheduledEventId: EventId; - /** - * The ID of the ActivityTaskStarted event that was recorded when this activity task started. To help diagnose issues, use this information to trace back the chain of events leading up to this event. - */ - startedEventId: EventId; - /** - * The type of the timeout that caused this event. - */ - timeoutType?: LambdaFunctionTimeoutType; - } - export type LambdaFunctionTimeoutType = "START_TO_CLOSE"|string; - export type LimitedData = string; - export interface ListActivityTypesInput { - /** - * The name of the domain in which the activity types have been registered. - */ - domain: DomainName; - /** - * If specified, only lists the activity types that have this name. - */ - name?: Name; - /** - * Specifies the registration status of the activity types to list. - */ - registrationStatus: RegistrationStatus; - /** - * If a NextPageToken was returned by a previous call, there are more results available. To retrieve the next page of results, make the call again using the returned token in nextPageToken. Keep all other arguments unchanged. The configured maximumPageSize determines how many results can be returned in a single call. - */ - nextPageToken?: PageToken; - /** - * The maximum number of results that are returned per call. nextPageToken can be used to obtain futher pages of results. The default is 1000, which is the maximum allowed page size. You can, however, specify a page size smaller than the maximum. This is an upper limit only; the actual number of results returned per call may be fewer than the specified maximum. - */ - maximumPageSize?: PageSize; - /** - * When set to true, returns the results in reverse order. By default, the results are returned in ascending alphabetical order by name of the activity types. - */ - reverseOrder?: ReverseOrder; - } - export interface ListClosedWorkflowExecutionsInput { - /** - * The name of the domain that contains the workflow executions to list. - */ - domain: DomainName; - /** - * If specified, the workflow executions are included in the returned results based on whether their start times are within the range specified by this filter. Also, if this parameter is specified, the returned results are ordered by their start times. startTimeFilter and closeTimeFilter are mutually exclusive. You must specify one of these in a request but not both. - */ - startTimeFilter?: ExecutionTimeFilter; - /** - * If specified, the workflow executions are included in the returned results based on whether their close times are within the range specified by this filter. Also, if this parameter is specified, the returned results are ordered by their close times. startTimeFilter and closeTimeFilter are mutually exclusive. You must specify one of these in a request but not both. - */ - closeTimeFilter?: ExecutionTimeFilter; - /** - * If specified, only workflow executions matching the workflow ID specified in the filter are returned. closeStatusFilter, executionFilter, typeFilter and tagFilter are mutually exclusive. You can specify at most one of these in a request. - */ - executionFilter?: WorkflowExecutionFilter; - /** - * If specified, only workflow executions that match this close status are listed. For example, if TERMINATED is specified, then only TERMINATED workflow executions are listed. closeStatusFilter, executionFilter, typeFilter and tagFilter are mutually exclusive. You can specify at most one of these in a request. - */ - closeStatusFilter?: CloseStatusFilter; - /** - * If specified, only executions of the type specified in the filter are returned. closeStatusFilter, executionFilter, typeFilter and tagFilter are mutually exclusive. You can specify at most one of these in a request. - */ - typeFilter?: WorkflowTypeFilter; - /** - * If specified, only executions that have the matching tag are listed. closeStatusFilter, executionFilter, typeFilter and tagFilter are mutually exclusive. You can specify at most one of these in a request. - */ - tagFilter?: TagFilter; - /** - * If a NextPageToken was returned by a previous call, there are more results available. To retrieve the next page of results, make the call again using the returned token in nextPageToken. Keep all other arguments unchanged. The configured maximumPageSize determines how many results can be returned in a single call. - */ - nextPageToken?: PageToken; - /** - * The maximum number of results that are returned per call. nextPageToken can be used to obtain futher pages of results. The default is 1000, which is the maximum allowed page size. You can, however, specify a page size smaller than the maximum. This is an upper limit only; the actual number of results returned per call may be fewer than the specified maximum. - */ - maximumPageSize?: PageSize; - /** - * When set to true, returns the results in reverse order. By default the results are returned in descending order of the start or the close time of the executions. - */ - reverseOrder?: ReverseOrder; - } - export interface ListDomainsInput { - /** - * If a NextPageToken was returned by a previous call, there are more results available. To retrieve the next page of results, make the call again using the returned token in nextPageToken. Keep all other arguments unchanged. The configured maximumPageSize determines how many results can be returned in a single call. - */ - nextPageToken?: PageToken; - /** - * Specifies the registration status of the domains to list. - */ - registrationStatus: RegistrationStatus; - /** - * The maximum number of results that are returned per call. nextPageToken can be used to obtain futher pages of results. The default is 1000, which is the maximum allowed page size. You can, however, specify a page size smaller than the maximum. This is an upper limit only; the actual number of results returned per call may be fewer than the specified maximum. - */ - maximumPageSize?: PageSize; - /** - * When set to true, returns the results in reverse order. By default, the results are returned in ascending alphabetical order by name of the domains. - */ - reverseOrder?: ReverseOrder; - } - export interface ListOpenWorkflowExecutionsInput { - /** - * The name of the domain that contains the workflow executions to list. - */ - domain: DomainName; - /** - * Workflow executions are included in the returned results based on whether their start times are within the range specified by this filter. - */ - startTimeFilter: ExecutionTimeFilter; - /** - * If specified, only executions of the type specified in the filter are returned. executionFilter, typeFilter and tagFilter are mutually exclusive. You can specify at most one of these in a request. - */ - typeFilter?: WorkflowTypeFilter; - /** - * If specified, only executions that have the matching tag are listed. executionFilter, typeFilter and tagFilter are mutually exclusive. You can specify at most one of these in a request. - */ - tagFilter?: TagFilter; - /** - * If a NextPageToken was returned by a previous call, there are more results available. To retrieve the next page of results, make the call again using the returned token in nextPageToken. Keep all other arguments unchanged. The configured maximumPageSize determines how many results can be returned in a single call. - */ - nextPageToken?: PageToken; - /** - * The maximum number of results that are returned per call. nextPageToken can be used to obtain futher pages of results. The default is 1000, which is the maximum allowed page size. You can, however, specify a page size smaller than the maximum. This is an upper limit only; the actual number of results returned per call may be fewer than the specified maximum. - */ - maximumPageSize?: PageSize; - /** - * When set to true, returns the results in reverse order. By default the results are returned in descending order of the start time of the executions. - */ - reverseOrder?: ReverseOrder; - /** - * If specified, only workflow executions matching the workflow ID specified in the filter are returned. executionFilter, typeFilter and tagFilter are mutually exclusive. You can specify at most one of these in a request. - */ - executionFilter?: WorkflowExecutionFilter; - } - export interface ListWorkflowTypesInput { - /** - * The name of the domain in which the workflow types have been registered. - */ - domain: DomainName; - /** - * If specified, lists the workflow type with this name. - */ - name?: Name; - /** - * Specifies the registration status of the workflow types to list. - */ - registrationStatus: RegistrationStatus; - /** - * If a NextPageToken was returned by a previous call, there are more results available. To retrieve the next page of results, make the call again using the returned token in nextPageToken. Keep all other arguments unchanged. The configured maximumPageSize determines how many results can be returned in a single call. - */ - nextPageToken?: PageToken; - /** - * The maximum number of results that are returned per call. nextPageToken can be used to obtain futher pages of results. The default is 1000, which is the maximum allowed page size. You can, however, specify a page size smaller than the maximum. This is an upper limit only; the actual number of results returned per call may be fewer than the specified maximum. - */ - maximumPageSize?: PageSize; - /** - * When set to true, returns the results in reverse order. By default the results are returned in ascending alphabetical order of the name of the workflow types. - */ - reverseOrder?: ReverseOrder; - } - export type MarkerName = string; - export interface MarkerRecordedEventAttributes { - /** - * The name of the marker. - */ - markerName: MarkerName; - /** - * The details of the marker. - */ - details?: Data; - /** - * The ID of the DecisionTaskCompleted event corresponding to the decision task that resulted in the RecordMarker decision that requested this marker. This information can be useful for diagnosing problems by tracing back the chain of events leading up to this event. - */ - decisionTaskCompletedEventId: EventId; - } - export type Name = string; - export type OpenDecisionTasksCount = number; - export type PageSize = number; - export type PageToken = string; - export interface PendingTaskCount { - /** - * The number of tasks in the task list. - */ - count: Count; - /** - * If set to true, indicates that the actual count was more than the maximum supported by this API and the count returned is the truncated value. - */ - truncated?: Truncated; - } - export interface PollForActivityTaskInput { - /** - * The name of the domain that contains the task lists being polled. - */ - domain: DomainName; - /** - * Specifies the task list to poll for activity tasks. The specified string must not start or end with whitespace. It must not contain a : (colon), / (slash), | (vertical bar), or any control characters (\u0000-\u001f | \u007f-\u009f). Also, it must not contain the literal string arn. - */ - taskList: TaskList; - /** - * Identity of the worker making the request, recorded in the ActivityTaskStarted event in the workflow history. This enables diagnostic tracing when problems arise. The form of this identity is user defined. - */ - identity?: Identity; - } - export interface PollForDecisionTaskInput { - /** - * The name of the domain containing the task lists to poll. - */ - domain: DomainName; - /** - * Specifies the task list to poll for decision tasks. The specified string must not start or end with whitespace. It must not contain a : (colon), / (slash), | (vertical bar), or any control characters (\u0000-\u001f | \u007f-\u009f). Also, it must not contain the literal string arn. - */ - taskList: TaskList; - /** - * Identity of the decider making the request, which is recorded in the DecisionTaskStarted event in the workflow history. This enables diagnostic tracing when problems arise. The form of this identity is user defined. - */ - identity?: Identity; - /** - * If a NextPageToken was returned by a previous call, there are more results available. To retrieve the next page of results, make the call again using the returned token in nextPageToken. Keep all other arguments unchanged. The configured maximumPageSize determines how many results can be returned in a single call. The nextPageToken returned by this action cannot be used with GetWorkflowExecutionHistory to get the next page. You must call PollForDecisionTask again (with the nextPageToken) to retrieve the next page of history records. Calling PollForDecisionTask with a nextPageToken doesn't return a new decision task. - */ - nextPageToken?: PageToken; - /** - * The maximum number of results that are returned per call. nextPageToken can be used to obtain futher pages of results. The default is 1000, which is the maximum allowed page size. You can, however, specify a page size smaller than the maximum. This is an upper limit only; the actual number of results returned per call may be fewer than the specified maximum. - */ - maximumPageSize?: PageSize; - /** - * When set to true, returns the events in reverse order. By default the results are returned in ascending order of the eventTimestamp of the events. - */ - reverseOrder?: ReverseOrder; - } - export interface RecordActivityTaskHeartbeatInput { - /** - * The taskToken of the ActivityTask. taskToken is generated by the service and should be treated as an opaque value. If the task is passed to another process, its taskToken must also be passed. This enables it to provide its progress and respond with results. - */ - taskToken: TaskToken; - /** - * If specified, contains details about the progress of the task. - */ - details?: LimitedData; - } - export interface RecordMarkerDecisionAttributes { - /** - * The name of the marker. - */ - markerName: MarkerName; - /** - * The details of the marker. - */ - details?: Data; - } - export type RecordMarkerFailedCause = "OPERATION_NOT_PERMITTED"|string; - export interface RecordMarkerFailedEventAttributes { - /** - * The marker's name. - */ - markerName: MarkerName; - /** - * The cause of the failure. This information is generated by the system and can be useful for diagnostic purposes. If cause is set to OPERATION_NOT_PERMITTED, the decision failed because it lacked sufficient permissions. For details and example IAM policies, see Using IAM to Manage Access to Amazon SWF Workflows in the Amazon SWF Developer Guide. - */ - cause: RecordMarkerFailedCause; - /** - * The ID of the DecisionTaskCompleted event corresponding to the decision task that resulted in the RecordMarkerFailed decision for this cancellation request. This information can be useful for diagnosing problems by tracing back the chain of events leading up to this event. - */ - decisionTaskCompletedEventId: EventId; - } - export interface RegisterActivityTypeInput { - /** - * The name of the domain in which this activity is to be registered. - */ - domain: DomainName; - /** - * The name of the activity type within the domain. The specified string must not start or end with whitespace. It must not contain a : (colon), / (slash), | (vertical bar), or any control characters (\u0000-\u001f | \u007f-\u009f). Also, it must not contain the literal string arn. - */ - name: Name; - /** - * The version of the activity type. The activity type consists of the name and version, the combination of which must be unique within the domain. The specified string must not start or end with whitespace. It must not contain a : (colon), / (slash), | (vertical bar), or any control characters (\u0000-\u001f | \u007f-\u009f). Also, it must not contain the literal string arn. - */ - version: Version; - /** - * A textual description of the activity type. - */ - description?: Description; - /** - * If set, specifies the default maximum duration that a worker can take to process tasks of this activity type. This default can be overridden when scheduling an activity task using the ScheduleActivityTask Decision. The duration is specified in seconds, an integer greater than or equal to 0. You can use NONE to specify unlimited duration. - */ - defaultTaskStartToCloseTimeout?: DurationInSecondsOptional; - /** - * If set, specifies the default maximum time before which a worker processing a task of this type must report progress by calling RecordActivityTaskHeartbeat. If the timeout is exceeded, the activity task is automatically timed out. This default can be overridden when scheduling an activity task using the ScheduleActivityTask Decision. If the activity worker subsequently attempts to record a heartbeat or returns a result, the activity worker receives an UnknownResource fault. In this case, Amazon SWF no longer considers the activity task to be valid; the activity worker should clean up the activity task. The duration is specified in seconds, an integer greater than or equal to 0. You can use NONE to specify unlimited duration. - */ - defaultTaskHeartbeatTimeout?: DurationInSecondsOptional; - /** - * If set, specifies the default task list to use for scheduling tasks of this activity type. This default task list is used if a task list isn't provided when a task is scheduled through the ScheduleActivityTask Decision. - */ - defaultTaskList?: TaskList; - /** - * The default task priority to assign to the activity type. If not assigned, then 0 is used. Valid values are integers that range from Java's Integer.MIN_VALUE (-2147483648) to Integer.MAX_VALUE (2147483647). Higher numbers indicate higher priority. For more information about setting task priority, see Setting Task Priority in the in the Amazon SWF Developer Guide.. - */ - defaultTaskPriority?: TaskPriority; - /** - * If set, specifies the default maximum duration that a task of this activity type can wait before being assigned to a worker. This default can be overridden when scheduling an activity task using the ScheduleActivityTask Decision. The duration is specified in seconds, an integer greater than or equal to 0. You can use NONE to specify unlimited duration. - */ - defaultTaskScheduleToStartTimeout?: DurationInSecondsOptional; - /** - * If set, specifies the default maximum duration for a task of this activity type. This default can be overridden when scheduling an activity task using the ScheduleActivityTask Decision. The duration is specified in seconds, an integer greater than or equal to 0. You can use NONE to specify unlimited duration. - */ - defaultTaskScheduleToCloseTimeout?: DurationInSecondsOptional; - } - export interface RegisterDomainInput { - /** - * Name of the domain to register. The name must be unique in the region that the domain is registered in. The specified string must not start or end with whitespace. It must not contain a : (colon), / (slash), | (vertical bar), or any control characters (\u0000-\u001f | \u007f-\u009f). Also, it must not contain the literal string arn. - */ - name: DomainName; - /** - * A text description of the domain. - */ - description?: Description; - /** - * The duration (in days) that records and histories of workflow executions on the domain should be kept by the service. After the retention period, the workflow execution isn't available in the results of visibility calls. If you pass the value NONE or 0 (zero), then the workflow execution history isn't retained. As soon as the workflow execution completes, the execution record and its history are deleted. The maximum workflow execution retention period is 90 days. For more information about Amazon SWF service limits, see: Amazon SWF Service Limits in the Amazon SWF Developer Guide. - */ - workflowExecutionRetentionPeriodInDays: DurationInDays; - } - export interface RegisterWorkflowTypeInput { - /** - * The name of the domain in which to register the workflow type. - */ - domain: DomainName; - /** - * The name of the workflow type. The specified string must not start or end with whitespace. It must not contain a : (colon), / (slash), | (vertical bar), or any control characters (\u0000-\u001f | \u007f-\u009f). Also, it must not contain the literal string arn. - */ - name: Name; - /** - * The version of the workflow type. The workflow type consists of the name and version, the combination of which must be unique within the domain. To get a list of all currently registered workflow types, use the ListWorkflowTypes action. The specified string must not start or end with whitespace. It must not contain a : (colon), / (slash), | (vertical bar), or any control characters (\u0000-\u001f | \u007f-\u009f). Also, it must not contain the literal string arn. - */ - version: Version; - /** - * Textual description of the workflow type. - */ - description?: Description; - /** - * If set, specifies the default maximum duration of decision tasks for this workflow type. This default can be overridden when starting a workflow execution using the StartWorkflowExecution action or the StartChildWorkflowExecution Decision. The duration is specified in seconds, an integer greater than or equal to 0. You can use NONE to specify unlimited duration. - */ - defaultTaskStartToCloseTimeout?: DurationInSecondsOptional; - /** - * If set, specifies the default maximum duration for executions of this workflow type. You can override this default when starting an execution through the StartWorkflowExecution Action or StartChildWorkflowExecution Decision. The duration is specified in seconds; an integer greater than or equal to 0. Unlike some of the other timeout parameters in Amazon SWF, you cannot specify a value of "NONE" for defaultExecutionStartToCloseTimeout; there is a one-year max limit on the time that a workflow execution can run. Exceeding this limit always causes the workflow execution to time out. - */ - defaultExecutionStartToCloseTimeout?: DurationInSecondsOptional; - /** - * If set, specifies the default task list to use for scheduling decision tasks for executions of this workflow type. This default is used only if a task list isn't provided when starting the execution through the StartWorkflowExecution Action or StartChildWorkflowExecution Decision. - */ - defaultTaskList?: TaskList; - /** - * The default task priority to assign to the workflow type. If not assigned, then 0 is used. Valid values are integers that range from Java's Integer.MIN_VALUE (-2147483648) to Integer.MAX_VALUE (2147483647). Higher numbers indicate higher priority. For more information about setting task priority, see Setting Task Priority in the Amazon SWF Developer Guide. - */ - defaultTaskPriority?: TaskPriority; - /** - * If set, specifies the default policy to use for the child workflow executions when a workflow execution of this type is terminated, by calling the TerminateWorkflowExecution action explicitly or due to an expired timeout. This default can be overridden when starting a workflow execution using the StartWorkflowExecution action or the StartChildWorkflowExecution Decision. The supported child policies are: TERMINATE – The child executions are terminated. REQUEST_CANCEL – A request to cancel is attempted for each child execution by recording a WorkflowExecutionCancelRequested event in its history. It is up to the decider to take appropriate actions when it receives an execution history with this event. ABANDON – No action is taken. The child executions continue to run. - */ - defaultChildPolicy?: ChildPolicy; - /** - * The default IAM role attached to this workflow type. Executions of this workflow type need IAM roles to invoke Lambda functions. If you don't specify an IAM role when you start this workflow type, the default Lambda role is attached to the execution. For more information, see http://docs.aws.amazon.com/amazonswf/latest/developerguide/lambda-task.html in the Amazon SWF Developer Guide. - */ - defaultLambdaRole?: Arn; - } - export type RegistrationStatus = "REGISTERED"|"DEPRECATED"|string; - export interface RequestCancelActivityTaskDecisionAttributes { - /** - * The activityId of the activity task to be canceled. - */ - activityId: ActivityId; - } - export type RequestCancelActivityTaskFailedCause = "ACTIVITY_ID_UNKNOWN"|"OPERATION_NOT_PERMITTED"|string; - export interface RequestCancelActivityTaskFailedEventAttributes { - /** - * The activityId provided in the RequestCancelActivityTask decision that failed. - */ - activityId: ActivityId; - /** - * The cause of the failure. This information is generated by the system and can be useful for diagnostic purposes. If cause is set to OPERATION_NOT_PERMITTED, the decision failed because it lacked sufficient permissions. For details and example IAM policies, see Using IAM to Manage Access to Amazon SWF Workflows in the Amazon SWF Developer Guide. - */ - cause: RequestCancelActivityTaskFailedCause; - /** - * The ID of the DecisionTaskCompleted event corresponding to the decision task that resulted in the RequestCancelActivityTask decision for this cancellation request. This information can be useful for diagnosing problems by tracing back the chain of events leading up to this event. - */ - decisionTaskCompletedEventId: EventId; - } - export interface RequestCancelExternalWorkflowExecutionDecisionAttributes { - /** - * The workflowId of the external workflow execution to cancel. - */ - workflowId: WorkflowId; - /** - * The runId of the external workflow execution to cancel. - */ - runId?: WorkflowRunIdOptional; - /** - * The data attached to the event that can be used by the decider in subsequent workflow tasks. - */ - control?: Data; - } - export type RequestCancelExternalWorkflowExecutionFailedCause = "UNKNOWN_EXTERNAL_WORKFLOW_EXECUTION"|"REQUEST_CANCEL_EXTERNAL_WORKFLOW_EXECUTION_RATE_EXCEEDED"|"OPERATION_NOT_PERMITTED"|string; - export interface RequestCancelExternalWorkflowExecutionFailedEventAttributes { - /** - * The workflowId of the external workflow to which the cancel request was to be delivered. - */ - workflowId: WorkflowId; - /** - * The runId of the external workflow execution. - */ - runId?: WorkflowRunIdOptional; - /** - * The cause of the failure. This information is generated by the system and can be useful for diagnostic purposes. If cause is set to OPERATION_NOT_PERMITTED, the decision failed because it lacked sufficient permissions. For details and example IAM policies, see Using IAM to Manage Access to Amazon SWF Workflows in the Amazon SWF Developer Guide. - */ - cause: RequestCancelExternalWorkflowExecutionFailedCause; - /** - * The ID of the RequestCancelExternalWorkflowExecutionInitiated event corresponding to the RequestCancelExternalWorkflowExecution decision to cancel this external workflow execution. This information can be useful for diagnosing problems by tracing back the chain of events leading up to this event. - */ - initiatedEventId: EventId; - /** - * The ID of the DecisionTaskCompleted event corresponding to the decision task that resulted in the RequestCancelExternalWorkflowExecution decision for this cancellation request. This information can be useful for diagnosing problems by tracing back the chain of events leading up to this event. - */ - decisionTaskCompletedEventId: EventId; - /** - * The data attached to the event that the decider can use in subsequent workflow tasks. This data isn't sent to the workflow execution. - */ - control?: Data; - } - export interface RequestCancelExternalWorkflowExecutionInitiatedEventAttributes { - /** - * The workflowId of the external workflow execution to be canceled. - */ - workflowId: WorkflowId; - /** - * The runId of the external workflow execution to be canceled. - */ - runId?: WorkflowRunIdOptional; - /** - * The ID of the DecisionTaskCompleted event corresponding to the decision task that resulted in the RequestCancelExternalWorkflowExecution decision for this cancellation request. This information can be useful for diagnosing problems by tracing back the chain of events leading up to this event. - */ - decisionTaskCompletedEventId: EventId; - /** - * Data attached to the event that can be used by the decider in subsequent workflow tasks. - */ - control?: Data; - } - export interface RequestCancelWorkflowExecutionInput { - /** - * The name of the domain containing the workflow execution to cancel. - */ - domain: DomainName; - /** - * The workflowId of the workflow execution to cancel. - */ - workflowId: WorkflowId; - /** - * The runId of the workflow execution to cancel. - */ - runId?: WorkflowRunIdOptional; - } - export interface RespondActivityTaskCanceledInput { - /** - * The taskToken of the ActivityTask. taskToken is generated by the service and should be treated as an opaque value. If the task is passed to another process, its taskToken must also be passed. This enables it to provide its progress and respond with results. - */ - taskToken: TaskToken; - /** - * Information about the cancellation. - */ - details?: Data; - } - export interface RespondActivityTaskCompletedInput { - /** - * The taskToken of the ActivityTask. taskToken is generated by the service and should be treated as an opaque value. If the task is passed to another process, its taskToken must also be passed. This enables it to provide its progress and respond with results. - */ - taskToken: TaskToken; - /** - * The result of the activity task. It is a free form string that is implementation specific. - */ - result?: Data; - } - export interface RespondActivityTaskFailedInput { - /** - * The taskToken of the ActivityTask. taskToken is generated by the service and should be treated as an opaque value. If the task is passed to another process, its taskToken must also be passed. This enables it to provide its progress and respond with results. - */ - taskToken: TaskToken; - /** - * Description of the error that may assist in diagnostics. - */ - reason?: FailureReason; - /** - * Detailed information about the failure. - */ - details?: Data; - } - export interface RespondDecisionTaskCompletedInput { - /** - * The taskToken from the DecisionTask. taskToken is generated by the service and should be treated as an opaque value. If the task is passed to another process, its taskToken must also be passed. This enables it to provide its progress and respond with results. - */ - taskToken: TaskToken; - /** - * The list of decisions (possibly empty) made by the decider while processing this decision task. See the docs for the Decision structure for details. - */ - decisions?: DecisionList; - /** - * User defined context to add to workflow execution. - */ - executionContext?: Data; - } - export type ReverseOrder = boolean; - export interface Run { - /** - * The runId of a workflow execution. This ID is generated by the service and can be used to uniquely identify the workflow execution within a domain. - */ - runId?: WorkflowRunId; - } - export interface ScheduleActivityTaskDecisionAttributes { - /** - * The type of the activity task to schedule. - */ - activityType: ActivityType; - /** - * The activityId of the activity task. The specified string must not start or end with whitespace. It must not contain a : (colon), / (slash), | (vertical bar), or any control characters (\u0000-\u001f | \u007f-\u009f). Also, it must not contain the literal string arn. - */ - activityId: ActivityId; - /** - * Data attached to the event that can be used by the decider in subsequent workflow tasks. This data isn't sent to the activity. - */ - control?: Data; - /** - * The input provided to the activity task. - */ - input?: Data; - /** - * The maximum duration for this activity task. The duration is specified in seconds, an integer greater than or equal to 0. You can use NONE to specify unlimited duration. A schedule-to-close timeout for this activity task must be specified either as a default for the activity type or through this field. If neither this field is set nor a default schedule-to-close timeout was specified at registration time then a fault is returned. - */ - scheduleToCloseTimeout?: DurationInSecondsOptional; - /** - * If set, specifies the name of the task list in which to schedule the activity task. If not specified, the defaultTaskList registered with the activity type is used. A task list for this activity task must be specified either as a default for the activity type or through this field. If neither this field is set nor a default task list was specified at registration time then a fault is returned. The specified string must not start or end with whitespace. It must not contain a : (colon), / (slash), | (vertical bar), or any control characters (\u0000-\u001f | \u007f-\u009f). Also, it must not contain the literal string arn. - */ - taskList?: TaskList; - /** - * If set, specifies the priority with which the activity task is to be assigned to a worker. This overrides the defaultTaskPriority specified when registering the activity type using RegisterActivityType. Valid values are integers that range from Java's Integer.MIN_VALUE (-2147483648) to Integer.MAX_VALUE (2147483647). Higher numbers indicate higher priority. For more information about setting task priority, see Setting Task Priority in the Amazon SWF Developer Guide. - */ - taskPriority?: TaskPriority; - /** - * If set, specifies the maximum duration the activity task can wait to be assigned to a worker. This overrides the default schedule-to-start timeout specified when registering the activity type using RegisterActivityType. The duration is specified in seconds, an integer greater than or equal to 0. You can use NONE to specify unlimited duration. A schedule-to-start timeout for this activity task must be specified either as a default for the activity type or through this field. If neither this field is set nor a default schedule-to-start timeout was specified at registration time then a fault is returned. - */ - scheduleToStartTimeout?: DurationInSecondsOptional; - /** - * If set, specifies the maximum duration a worker may take to process this activity task. This overrides the default start-to-close timeout specified when registering the activity type using RegisterActivityType. The duration is specified in seconds, an integer greater than or equal to 0. You can use NONE to specify unlimited duration. A start-to-close timeout for this activity task must be specified either as a default for the activity type or through this field. If neither this field is set nor a default start-to-close timeout was specified at registration time then a fault is returned. - */ - startToCloseTimeout?: DurationInSecondsOptional; - /** - * If set, specifies the maximum time before which a worker processing a task of this type must report progress by calling RecordActivityTaskHeartbeat. If the timeout is exceeded, the activity task is automatically timed out. If the worker subsequently attempts to record a heartbeat or returns a result, it is ignored. This overrides the default heartbeat timeout specified when registering the activity type using RegisterActivityType. The duration is specified in seconds, an integer greater than or equal to 0. You can use NONE to specify unlimited duration. - */ - heartbeatTimeout?: DurationInSecondsOptional; - } - export type ScheduleActivityTaskFailedCause = "ACTIVITY_TYPE_DEPRECATED"|"ACTIVITY_TYPE_DOES_NOT_EXIST"|"ACTIVITY_ID_ALREADY_IN_USE"|"OPEN_ACTIVITIES_LIMIT_EXCEEDED"|"ACTIVITY_CREATION_RATE_EXCEEDED"|"DEFAULT_SCHEDULE_TO_CLOSE_TIMEOUT_UNDEFINED"|"DEFAULT_TASK_LIST_UNDEFINED"|"DEFAULT_SCHEDULE_TO_START_TIMEOUT_UNDEFINED"|"DEFAULT_START_TO_CLOSE_TIMEOUT_UNDEFINED"|"DEFAULT_HEARTBEAT_TIMEOUT_UNDEFINED"|"OPERATION_NOT_PERMITTED"|string; - export interface ScheduleActivityTaskFailedEventAttributes { - /** - * The activity type provided in the ScheduleActivityTask decision that failed. - */ - activityType: ActivityType; - /** - * The activityId provided in the ScheduleActivityTask decision that failed. - */ - activityId: ActivityId; - /** - * The cause of the failure. This information is generated by the system and can be useful for diagnostic purposes. If cause is set to OPERATION_NOT_PERMITTED, the decision failed because it lacked sufficient permissions. For details and example IAM policies, see Using IAM to Manage Access to Amazon SWF Workflows in the Amazon SWF Developer Guide. - */ - cause: ScheduleActivityTaskFailedCause; - /** - * The ID of the DecisionTaskCompleted event corresponding to the decision that resulted in the scheduling of this activity task. This information can be useful for diagnosing problems by tracing back the chain of events leading up to this event. - */ - decisionTaskCompletedEventId: EventId; - } - export interface ScheduleLambdaFunctionDecisionAttributes { - /** - * A string that identifies the Lambda function execution in the event history. - */ - id: FunctionId; - /** - * The name, or ARN, of the Lambda function to schedule. - */ - name: FunctionName; - /** - * The data attached to the event that the decider can use in subsequent workflow tasks. This data isn't sent to the Lambda task. - */ - control?: Data; - /** - * The optional input data to be supplied to the Lambda function. - */ - input?: FunctionInput; - /** - * The timeout value, in seconds, after which the Lambda function is considered to be failed once it has started. This can be any integer from 1-300 (1s-5m). If no value is supplied, than a default value of 300s is assumed. - */ - startToCloseTimeout?: DurationInSecondsOptional; - } - export type ScheduleLambdaFunctionFailedCause = "ID_ALREADY_IN_USE"|"OPEN_LAMBDA_FUNCTIONS_LIMIT_EXCEEDED"|"LAMBDA_FUNCTION_CREATION_RATE_EXCEEDED"|"LAMBDA_SERVICE_NOT_AVAILABLE_IN_REGION"|string; - export interface ScheduleLambdaFunctionFailedEventAttributes { - /** - * The ID provided in the ScheduleLambdaFunction decision that failed. - */ - id: FunctionId; - /** - * The name of the Lambda function. - */ - name: FunctionName; - /** - * The cause of the failure. To help diagnose issues, use this information to trace back the chain of events leading up to this event. If cause is set to OPERATION_NOT_PERMITTED, the decision failed because it lacked sufficient permissions. For details and example IAM policies, see Using IAM to Manage Access to Amazon SWF Workflows in the Amazon SWF Developer Guide. - */ - cause: ScheduleLambdaFunctionFailedCause; - /** - * The ID of the LambdaFunctionCompleted event corresponding to the decision that resulted in scheduling this Lambda task. To help diagnose issues, use this information to trace back the chain of events leading up to this event. - */ - decisionTaskCompletedEventId: EventId; - } - export interface SignalExternalWorkflowExecutionDecisionAttributes { - /** - * The workflowId of the workflow execution to be signaled. - */ - workflowId: WorkflowId; - /** - * The runId of the workflow execution to be signaled. - */ - runId?: WorkflowRunIdOptional; - /** - * The name of the signal.The target workflow execution uses the signal name and input to process the signal. - */ - signalName: SignalName; - /** - * The input data to be provided with the signal. The target workflow execution uses the signal name and input data to process the signal. - */ - input?: Data; - /** - * The data attached to the event that can be used by the decider in subsequent decision tasks. - */ - control?: Data; - } - export type SignalExternalWorkflowExecutionFailedCause = "UNKNOWN_EXTERNAL_WORKFLOW_EXECUTION"|"SIGNAL_EXTERNAL_WORKFLOW_EXECUTION_RATE_EXCEEDED"|"OPERATION_NOT_PERMITTED"|string; - export interface SignalExternalWorkflowExecutionFailedEventAttributes { - /** - * The workflowId of the external workflow execution that the signal was being delivered to. - */ - workflowId: WorkflowId; - /** - * The runId of the external workflow execution that the signal was being delivered to. - */ - runId?: WorkflowRunIdOptional; - /** - * The cause of the failure. This information is generated by the system and can be useful for diagnostic purposes. If cause is set to OPERATION_NOT_PERMITTED, the decision failed because it lacked sufficient permissions. For details and example IAM policies, see Using IAM to Manage Access to Amazon SWF Workflows in the Amazon SWF Developer Guide. - */ - cause: SignalExternalWorkflowExecutionFailedCause; - /** - * The ID of the SignalExternalWorkflowExecutionInitiated event corresponding to the SignalExternalWorkflowExecution decision to request this signal. This information can be useful for diagnosing problems by tracing back the chain of events leading up to this event. - */ - initiatedEventId: EventId; - /** - * The ID of the DecisionTaskCompleted event corresponding to the decision task that resulted in the SignalExternalWorkflowExecution decision for this signal. This information can be useful for diagnosing problems by tracing back the chain of events leading up to this event. - */ - decisionTaskCompletedEventId: EventId; - /** - * The data attached to the event that the decider can use in subsequent workflow tasks. This data isn't sent to the workflow execution. - */ - control?: Data; - } - export interface SignalExternalWorkflowExecutionInitiatedEventAttributes { - /** - * The workflowId of the external workflow execution. - */ - workflowId: WorkflowId; - /** - * The runId of the external workflow execution to send the signal to. - */ - runId?: WorkflowRunIdOptional; - /** - * The name of the signal. - */ - signalName: SignalName; - /** - * The input provided to the signal. - */ - input?: Data; - /** - * The ID of the DecisionTaskCompleted event corresponding to the decision task that resulted in the SignalExternalWorkflowExecution decision for this signal. This information can be useful for diagnosing problems by tracing back the chain of events leading up to this event. - */ - decisionTaskCompletedEventId: EventId; - /** - * Data attached to the event that can be used by the decider in subsequent decision tasks. - */ - control?: Data; - } - export type SignalName = string; - export interface SignalWorkflowExecutionInput { - /** - * The name of the domain containing the workflow execution to signal. - */ - domain: DomainName; - /** - * The workflowId of the workflow execution to signal. - */ - workflowId: WorkflowId; - /** - * The runId of the workflow execution to signal. - */ - runId?: WorkflowRunIdOptional; - /** - * The name of the signal. This name must be meaningful to the target workflow. - */ - signalName: SignalName; - /** - * Data to attach to the WorkflowExecutionSignaled event in the target workflow execution's history. - */ - input?: Data; - } - export interface StartChildWorkflowExecutionDecisionAttributes { - /** - * The type of the workflow execution to be started. - */ - workflowType: WorkflowType; - /** - * The workflowId of the workflow execution. The specified string must not start or end with whitespace. It must not contain a : (colon), / (slash), | (vertical bar), or any control characters (\u0000-\u001f | \u007f-\u009f). Also, it must not contain the literal string arn. - */ - workflowId: WorkflowId; - /** - * The data attached to the event that can be used by the decider in subsequent workflow tasks. This data isn't sent to the child workflow execution. - */ - control?: Data; - /** - * The input to be provided to the workflow execution. - */ - input?: Data; - /** - * The total duration for this workflow execution. This overrides the defaultExecutionStartToCloseTimeout specified when registering the workflow type. The duration is specified in seconds, an integer greater than or equal to 0. You can use NONE to specify unlimited duration. An execution start-to-close timeout for this workflow execution must be specified either as a default for the workflow type or through this parameter. If neither this parameter is set nor a default execution start-to-close timeout was specified at registration time then a fault is returned. - */ - executionStartToCloseTimeout?: DurationInSecondsOptional; - /** - * The name of the task list to be used for decision tasks of the child workflow execution. A task list for this workflow execution must be specified either as a default for the workflow type or through this parameter. If neither this parameter is set nor a default task list was specified at registration time then a fault is returned. The specified string must not start or end with whitespace. It must not contain a : (colon), / (slash), | (vertical bar), or any control characters (\u0000-\u001f | \u007f-\u009f). Also, it must not contain the literal string arn. - */ - taskList?: TaskList; - /** - * A task priority that, if set, specifies the priority for a decision task of this workflow execution. This overrides the defaultTaskPriority specified when registering the workflow type. Valid values are integers that range from Java's Integer.MIN_VALUE (-2147483648) to Integer.MAX_VALUE (2147483647). Higher numbers indicate higher priority. For more information about setting task priority, see Setting Task Priority in the Amazon SWF Developer Guide. - */ - taskPriority?: TaskPriority; - /** - * Specifies the maximum duration of decision tasks for this workflow execution. This parameter overrides the defaultTaskStartToCloseTimout specified when registering the workflow type using RegisterWorkflowType. The duration is specified in seconds, an integer greater than or equal to 0. You can use NONE to specify unlimited duration. A task start-to-close timeout for this workflow execution must be specified either as a default for the workflow type or through this parameter. If neither this parameter is set nor a default task start-to-close timeout was specified at registration time then a fault is returned. - */ - taskStartToCloseTimeout?: DurationInSecondsOptional; - /** - * If set, specifies the policy to use for the child workflow executions if the workflow execution being started is terminated by calling the TerminateWorkflowExecution action explicitly or due to an expired timeout. This policy overrides the default child policy specified when registering the workflow type using RegisterWorkflowType. The supported child policies are: TERMINATE – The child executions are terminated. REQUEST_CANCEL – A request to cancel is attempted for each child execution by recording a WorkflowExecutionCancelRequested event in its history. It is up to the decider to take appropriate actions when it receives an execution history with this event. ABANDON – No action is taken. The child executions continue to run. A child policy for this workflow execution must be specified either as a default for the workflow type or through this parameter. If neither this parameter is set nor a default child policy was specified at registration time then a fault is returned. - */ - childPolicy?: ChildPolicy; - /** - * The list of tags to associate with the child workflow execution. A maximum of 5 tags can be specified. You can list workflow executions with a specific tag by calling ListOpenWorkflowExecutions or ListClosedWorkflowExecutions and specifying a TagFilter. - */ - tagList?: TagList; - /** - * The IAM role attached to the child workflow execution. - */ - lambdaRole?: Arn; - } - export type StartChildWorkflowExecutionFailedCause = "WORKFLOW_TYPE_DOES_NOT_EXIST"|"WORKFLOW_TYPE_DEPRECATED"|"OPEN_CHILDREN_LIMIT_EXCEEDED"|"OPEN_WORKFLOWS_LIMIT_EXCEEDED"|"CHILD_CREATION_RATE_EXCEEDED"|"WORKFLOW_ALREADY_RUNNING"|"DEFAULT_EXECUTION_START_TO_CLOSE_TIMEOUT_UNDEFINED"|"DEFAULT_TASK_LIST_UNDEFINED"|"DEFAULT_TASK_START_TO_CLOSE_TIMEOUT_UNDEFINED"|"DEFAULT_CHILD_POLICY_UNDEFINED"|"OPERATION_NOT_PERMITTED"|string; - export interface StartChildWorkflowExecutionFailedEventAttributes { - /** - * The workflow type provided in the StartChildWorkflowExecution Decision that failed. - */ - workflowType: WorkflowType; - /** - * The cause of the failure. This information is generated by the system and can be useful for diagnostic purposes. When cause is set to OPERATION_NOT_PERMITTED, the decision fails because it lacks sufficient permissions. For details and example IAM policies, see Using IAM to Manage Access to Amazon SWF Workflows in the Amazon SWF Developer Guide. - */ - cause: StartChildWorkflowExecutionFailedCause; - /** - * The workflowId of the child workflow execution. - */ - workflowId: WorkflowId; - /** - * When the cause is WORKFLOW_ALREADY_RUNNING, initiatedEventId is the ID of the StartChildWorkflowExecutionInitiated event that corresponds to the StartChildWorkflowExecution Decision to start the workflow execution. You can use this information to diagnose problems by tracing back the chain of events leading up to this event. When the cause isn't WORKFLOW_ALREADY_RUNNING, initiatedEventId is set to 0 because the StartChildWorkflowExecutionInitiated event doesn't exist. - */ - initiatedEventId: EventId; - /** - * The ID of the DecisionTaskCompleted event corresponding to the decision task that resulted in the StartChildWorkflowExecution Decision to request this child workflow execution. This information can be useful for diagnosing problems by tracing back the chain of events. - */ - decisionTaskCompletedEventId: EventId; - /** - * The data attached to the event that the decider can use in subsequent workflow tasks. This data isn't sent to the child workflow execution. - */ - control?: Data; - } - export interface StartChildWorkflowExecutionInitiatedEventAttributes { - /** - * The workflowId of the child workflow execution. - */ - workflowId: WorkflowId; - /** - * The type of the child workflow execution. - */ - workflowType: WorkflowType; - /** - * Data attached to the event that can be used by the decider in subsequent decision tasks. This data isn't sent to the activity. - */ - control?: Data; - /** - * The inputs provided to the child workflow execution. - */ - input?: Data; - /** - * The maximum duration for the child workflow execution. If the workflow execution isn't closed within this duration, it is timed out and force-terminated. The duration is specified in seconds, an integer greater than or equal to 0. You can use NONE to specify unlimited duration. - */ - executionStartToCloseTimeout?: DurationInSecondsOptional; - /** - * The name of the task list used for the decision tasks of the child workflow execution. - */ - taskList: TaskList; - /** - * The priority assigned for the decision tasks for this workflow execution. Valid values are integers that range from Java's Integer.MIN_VALUE (-2147483648) to Integer.MAX_VALUE (2147483647). Higher numbers indicate higher priority. For more information about setting task priority, see Setting Task Priority in the Amazon SWF Developer Guide. - */ - taskPriority?: TaskPriority; - /** - * The ID of the DecisionTaskCompleted event corresponding to the decision task that resulted in the StartChildWorkflowExecution Decision to request this child workflow execution. This information can be useful for diagnosing problems by tracing back the cause of events. - */ - decisionTaskCompletedEventId: EventId; - /** - * The policy to use for the child workflow executions if this execution gets terminated by explicitly calling the TerminateWorkflowExecution action or due to an expired timeout. The supported child policies are: TERMINATE – The child executions are terminated. REQUEST_CANCEL – A request to cancel is attempted for each child execution by recording a WorkflowExecutionCancelRequested event in its history. It is up to the decider to take appropriate actions when it receives an execution history with this event. ABANDON – No action is taken. The child executions continue to run. - */ - childPolicy: ChildPolicy; - /** - * The maximum duration allowed for the decision tasks for this workflow execution. The duration is specified in seconds, an integer greater than or equal to 0. You can use NONE to specify unlimited duration. - */ - taskStartToCloseTimeout?: DurationInSecondsOptional; - /** - * The list of tags to associated with the child workflow execution. - */ - tagList?: TagList; - /** - * The IAM role to attach to the child workflow execution. - */ - lambdaRole?: Arn; - } - export type StartLambdaFunctionFailedCause = "ASSUME_ROLE_FAILED"|string; - export interface StartLambdaFunctionFailedEventAttributes { - /** - * The ID of the ActivityTaskScheduled event that was recorded when this activity task was scheduled. To help diagnose issues, use this information to trace back the chain of events leading up to this event. - */ - scheduledEventId?: EventId; - /** - * The cause of the failure. To help diagnose issues, use this information to trace back the chain of events leading up to this event. If cause is set to OPERATION_NOT_PERMITTED, the decision failed because the IAM role attached to the execution lacked sufficient permissions. For details and example IAM policies, see Lambda Tasks in the Amazon SWF Developer Guide. - */ - cause?: StartLambdaFunctionFailedCause; - /** - * A description that can help diagnose the cause of the fault. - */ - message?: CauseMessage; - } - export interface StartTimerDecisionAttributes { - /** - * The unique ID of the timer. The specified string must not start or end with whitespace. It must not contain a : (colon), / (slash), | (vertical bar), or any control characters (\u0000-\u001f | \u007f-\u009f). Also, it must not contain the literal string arn. - */ - timerId: TimerId; - /** - * The data attached to the event that can be used by the decider in subsequent workflow tasks. - */ - control?: Data; - /** - * The duration to wait before firing the timer. The duration is specified in seconds, an integer greater than or equal to 0. - */ - startToFireTimeout: DurationInSeconds; - } - export type StartTimerFailedCause = "TIMER_ID_ALREADY_IN_USE"|"OPEN_TIMERS_LIMIT_EXCEEDED"|"TIMER_CREATION_RATE_EXCEEDED"|"OPERATION_NOT_PERMITTED"|string; - export interface StartTimerFailedEventAttributes { - /** - * The timerId provided in the StartTimer decision that failed. - */ - timerId: TimerId; - /** - * The cause of the failure. This information is generated by the system and can be useful for diagnostic purposes. If cause is set to OPERATION_NOT_PERMITTED, the decision failed because it lacked sufficient permissions. For details and example IAM policies, see Using IAM to Manage Access to Amazon SWF Workflows in the Amazon SWF Developer Guide. - */ - cause: StartTimerFailedCause; - /** - * The ID of the DecisionTaskCompleted event corresponding to the decision task that resulted in the StartTimer decision for this activity task. This information can be useful for diagnosing problems by tracing back the chain of events leading up to this event. - */ - decisionTaskCompletedEventId: EventId; - } - export interface StartWorkflowExecutionInput { - /** - * The name of the domain in which the workflow execution is created. - */ - domain: DomainName; - /** - * The user defined identifier associated with the workflow execution. You can use this to associate a custom identifier with the workflow execution. You may specify the same identifier if a workflow execution is logically a restart of a previous execution. You cannot have two open workflow executions with the same workflowId at the same time. The specified string must not start or end with whitespace. It must not contain a : (colon), / (slash), | (vertical bar), or any control characters (\u0000-\u001f | \u007f-\u009f). Also, it must not contain the literal string arn. - */ - workflowId: WorkflowId; - /** - * The type of the workflow to start. - */ - workflowType: WorkflowType; - /** - * The task list to use for the decision tasks generated for this workflow execution. This overrides the defaultTaskList specified when registering the workflow type. A task list for this workflow execution must be specified either as a default for the workflow type or through this parameter. If neither this parameter is set nor a default task list was specified at registration time then a fault is returned. The specified string must not start or end with whitespace. It must not contain a : (colon), / (slash), | (vertical bar), or any control characters (\u0000-\u001f | \u007f-\u009f). Also, it must not contain the literal string arn. - */ - taskList?: TaskList; - /** - * The task priority to use for this workflow execution. This overrides any default priority that was assigned when the workflow type was registered. If not set, then the default task priority for the workflow type is used. Valid values are integers that range from Java's Integer.MIN_VALUE (-2147483648) to Integer.MAX_VALUE (2147483647). Higher numbers indicate higher priority. For more information about setting task priority, see Setting Task Priority in the Amazon SWF Developer Guide. - */ - taskPriority?: TaskPriority; - /** - * The input for the workflow execution. This is a free form string which should be meaningful to the workflow you are starting. This input is made available to the new workflow execution in the WorkflowExecutionStarted history event. - */ - input?: Data; - /** - * The total duration for this workflow execution. This overrides the defaultExecutionStartToCloseTimeout specified when registering the workflow type. The duration is specified in seconds; an integer greater than or equal to 0. Exceeding this limit causes the workflow execution to time out. Unlike some of the other timeout parameters in Amazon SWF, you cannot specify a value of "NONE" for this timeout; there is a one-year max limit on the time that a workflow execution can run. An execution start-to-close timeout must be specified either through this parameter or as a default when the workflow type is registered. If neither this parameter nor a default execution start-to-close timeout is specified, a fault is returned. - */ - executionStartToCloseTimeout?: DurationInSecondsOptional; - /** - * The list of tags to associate with the workflow execution. You can specify a maximum of 5 tags. You can list workflow executions with a specific tag by calling ListOpenWorkflowExecutions or ListClosedWorkflowExecutions and specifying a TagFilter. - */ - tagList?: TagList; - /** - * Specifies the maximum duration of decision tasks for this workflow execution. This parameter overrides the defaultTaskStartToCloseTimout specified when registering the workflow type using RegisterWorkflowType. The duration is specified in seconds, an integer greater than or equal to 0. You can use NONE to specify unlimited duration. A task start-to-close timeout for this workflow execution must be specified either as a default for the workflow type or through this parameter. If neither this parameter is set nor a default task start-to-close timeout was specified at registration time then a fault is returned. - */ - taskStartToCloseTimeout?: DurationInSecondsOptional; - /** - * If set, specifies the policy to use for the child workflow executions of this workflow execution if it is terminated, by calling the TerminateWorkflowExecution action explicitly or due to an expired timeout. This policy overrides the default child policy specified when registering the workflow type using RegisterWorkflowType. The supported child policies are: TERMINATE – The child executions are terminated. REQUEST_CANCEL – A request to cancel is attempted for each child execution by recording a WorkflowExecutionCancelRequested event in its history. It is up to the decider to take appropriate actions when it receives an execution history with this event. ABANDON – No action is taken. The child executions continue to run. A child policy for this workflow execution must be specified either as a default for the workflow type or through this parameter. If neither this parameter is set nor a default child policy was specified at registration time then a fault is returned. - */ - childPolicy?: ChildPolicy; - /** - * The IAM role to attach to this workflow execution. Executions of this workflow type need IAM roles to invoke Lambda functions. If you don't attach an IAM role, any attempt to schedule a Lambda task fails. This results in a ScheduleLambdaFunctionFailed history event. For more information, see http://docs.aws.amazon.com/amazonswf/latest/developerguide/lambda-task.html in the Amazon SWF Developer Guide. - */ - lambdaRole?: Arn; - } - export type Tag = string; - export interface TagFilter { - /** - * Specifies the tag that must be associated with the execution for it to meet the filter criteria. - */ - tag: Tag; - } - export type TagList = Tag[]; - export interface TaskList { - /** - * The name of the task list. - */ - name: Name; - } - export type TaskPriority = string; - export type TaskToken = string; - export type TerminateReason = string; - export interface TerminateWorkflowExecutionInput { - /** - * The domain of the workflow execution to terminate. - */ - domain: DomainName; - /** - * The workflowId of the workflow execution to terminate. - */ - workflowId: WorkflowId; - /** - * The runId of the workflow execution to terminate. - */ - runId?: WorkflowRunIdOptional; - /** - * A descriptive reason for terminating the workflow execution. - */ - reason?: TerminateReason; - /** - * Details for terminating the workflow execution. - */ - details?: Data; - /** - * If set, specifies the policy to use for the child workflow executions of the workflow execution being terminated. This policy overrides the child policy specified for the workflow execution at registration time or when starting the execution. The supported child policies are: TERMINATE – The child executions are terminated. REQUEST_CANCEL – A request to cancel is attempted for each child execution by recording a WorkflowExecutionCancelRequested event in its history. It is up to the decider to take appropriate actions when it receives an execution history with this event. ABANDON – No action is taken. The child executions continue to run. A child policy for this workflow execution must be specified either as a default for the workflow type or through this parameter. If neither this parameter is set nor a default child policy was specified at registration time then a fault is returned. - */ - childPolicy?: ChildPolicy; - } - export interface TimerCanceledEventAttributes { - /** - * The unique ID of the timer that was canceled. - */ - timerId: TimerId; - /** - * The ID of the TimerStarted event that was recorded when this timer was started. This information can be useful for diagnosing problems by tracing back the chain of events leading up to this event. - */ - startedEventId: EventId; - /** - * The ID of the DecisionTaskCompleted event corresponding to the decision task that resulted in the CancelTimer decision to cancel this timer. This information can be useful for diagnosing problems by tracing back the chain of events leading up to this event. - */ - decisionTaskCompletedEventId: EventId; - } - export interface TimerFiredEventAttributes { - /** - * The unique ID of the timer that fired. - */ - timerId: TimerId; - /** - * The ID of the TimerStarted event that was recorded when this timer was started. This information can be useful for diagnosing problems by tracing back the chain of events leading up to this event. - */ - startedEventId: EventId; - } - export type TimerId = string; - export interface TimerStartedEventAttributes { - /** - * The unique ID of the timer that was started. - */ - timerId: TimerId; - /** - * Data attached to the event that can be used by the decider in subsequent workflow tasks. - */ - control?: Data; - /** - * The duration of time after which the timer fires. The duration is specified in seconds, an integer greater than or equal to 0. - */ - startToFireTimeout: DurationInSeconds; - /** - * The ID of the DecisionTaskCompleted event corresponding to the decision task that resulted in the StartTimer decision for this activity task. This information can be useful for diagnosing problems by tracing back the chain of events leading up to this event. - */ - decisionTaskCompletedEventId: EventId; - } - export type Timestamp = Date; - export type Truncated = boolean; - export type Version = string; - export type VersionOptional = string; - export interface WorkflowExecution { - /** - * The user defined identifier associated with the workflow execution. - */ - workflowId: WorkflowId; - /** - * A system-generated unique identifier for the workflow execution. - */ - runId: WorkflowRunId; - } - export type WorkflowExecutionCancelRequestedCause = "CHILD_POLICY_APPLIED"|string; - export interface WorkflowExecutionCancelRequestedEventAttributes { - /** - * The external workflow execution for which the cancellation was requested. - */ - externalWorkflowExecution?: WorkflowExecution; - /** - * The ID of the RequestCancelExternalWorkflowExecutionInitiated event corresponding to the RequestCancelExternalWorkflowExecution decision to cancel this workflow execution.The source event with this ID can be found in the history of the source workflow execution. This information can be useful for diagnosing problems by tracing back the chain of events leading up to this event. - */ - externalInitiatedEventId?: EventId; - /** - * If set, indicates that the request to cancel the workflow execution was automatically generated, and specifies the cause. This happens if the parent workflow execution times out or is terminated, and the child policy is set to cancel child executions. - */ - cause?: WorkflowExecutionCancelRequestedCause; - } - export interface WorkflowExecutionCanceledEventAttributes { - /** - * The details of the cancellation. - */ - details?: Data; - /** - * The ID of the DecisionTaskCompleted event corresponding to the decision task that resulted in the CancelWorkflowExecution decision for this cancellation request. This information can be useful for diagnosing problems by tracing back the chain of events leading up to this event. - */ - decisionTaskCompletedEventId: EventId; - } - export interface WorkflowExecutionCompletedEventAttributes { - /** - * The result produced by the workflow execution upon successful completion. - */ - result?: Data; - /** - * The ID of the DecisionTaskCompleted event corresponding to the decision task that resulted in the CompleteWorkflowExecution decision to complete this execution. This information can be useful for diagnosing problems by tracing back the chain of events leading up to this event. - */ - decisionTaskCompletedEventId: EventId; - } - export interface WorkflowExecutionConfiguration { - /** - * The maximum duration allowed for decision tasks for this workflow execution. The duration is specified in seconds, an integer greater than or equal to 0. You can use NONE to specify unlimited duration. - */ - taskStartToCloseTimeout: DurationInSeconds; - /** - * The total duration for this workflow execution. The duration is specified in seconds, an integer greater than or equal to 0. You can use NONE to specify unlimited duration. - */ - executionStartToCloseTimeout: DurationInSeconds; - /** - * The task list used for the decision tasks generated for this workflow execution. - */ - taskList: TaskList; - /** - * The priority assigned to decision tasks for this workflow execution. Valid values are integers that range from Java's Integer.MIN_VALUE (-2147483648) to Integer.MAX_VALUE (2147483647). Higher numbers indicate higher priority. For more information about setting task priority, see Setting Task Priority in the Amazon SWF Developer Guide. - */ - taskPriority?: TaskPriority; - /** - * The policy to use for the child workflow executions if this workflow execution is terminated, by calling the TerminateWorkflowExecution action explicitly or due to an expired timeout. The supported child policies are: TERMINATE – The child executions are terminated. REQUEST_CANCEL – A request to cancel is attempted for each child execution by recording a WorkflowExecutionCancelRequested event in its history. It is up to the decider to take appropriate actions when it receives an execution history with this event. ABANDON – No action is taken. The child executions continue to run. - */ - childPolicy: ChildPolicy; - /** - * The IAM role attached to the child workflow execution. - */ - lambdaRole?: Arn; - } - export interface WorkflowExecutionContinuedAsNewEventAttributes { - /** - * The input provided to the new workflow execution. - */ - input?: Data; - /** - * The ID of the DecisionTaskCompleted event corresponding to the decision task that resulted in the ContinueAsNewWorkflowExecution decision that started this execution. This information can be useful for diagnosing problems by tracing back the chain of events leading up to this event. - */ - decisionTaskCompletedEventId: EventId; - /** - * The runId of the new workflow execution. - */ - newExecutionRunId: WorkflowRunId; - /** - * The total duration allowed for the new workflow execution. The duration is specified in seconds, an integer greater than or equal to 0. You can use NONE to specify unlimited duration. - */ - executionStartToCloseTimeout?: DurationInSecondsOptional; - /** - * The task list to use for the decisions of the new (continued) workflow execution. - */ - taskList: TaskList; - /** - * The priority of the task to use for the decisions of the new (continued) workflow execution. - */ - taskPriority?: TaskPriority; - /** - * The maximum duration of decision tasks for the new workflow execution. The duration is specified in seconds, an integer greater than or equal to 0. You can use NONE to specify unlimited duration. - */ - taskStartToCloseTimeout?: DurationInSecondsOptional; - /** - * The policy to use for the child workflow executions of the new execution if it is terminated by calling the TerminateWorkflowExecution action explicitly or due to an expired timeout. The supported child policies are: TERMINATE – The child executions are terminated. REQUEST_CANCEL – A request to cancel is attempted for each child execution by recording a WorkflowExecutionCancelRequested event in its history. It is up to the decider to take appropriate actions when it receives an execution history with this event. ABANDON – No action is taken. The child executions continue to run. - */ - childPolicy: ChildPolicy; - /** - * The list of tags associated with the new workflow execution. - */ - tagList?: TagList; - /** - * The workflow type of this execution. - */ - workflowType: WorkflowType; - /** - * The IAM role to attach to the new (continued) workflow execution. - */ - lambdaRole?: Arn; - } - export interface WorkflowExecutionCount { - /** - * The number of workflow executions. - */ - count: Count; - /** - * If set to true, indicates that the actual count was more than the maximum supported by this API and the count returned is the truncated value. - */ - truncated?: Truncated; - } - export interface WorkflowExecutionDetail { - /** - * Information about the workflow execution. - */ - executionInfo: WorkflowExecutionInfo; - /** - * The configuration settings for this workflow execution including timeout values, tasklist etc. - */ - executionConfiguration: WorkflowExecutionConfiguration; - /** - * The number of tasks for this workflow execution. This includes open and closed tasks of all types. - */ - openCounts: WorkflowExecutionOpenCounts; - /** - * The time when the last activity task was scheduled for this workflow execution. You can use this information to determine if the workflow has not made progress for an unusually long period of time and might require a corrective action. - */ - latestActivityTaskTimestamp?: Timestamp; - /** - * The latest executionContext provided by the decider for this workflow execution. A decider can provide an executionContext (a free-form string) when closing a decision task using RespondDecisionTaskCompleted. - */ - latestExecutionContext?: Data; - } - export interface WorkflowExecutionFailedEventAttributes { - /** - * The descriptive reason provided for the failure. - */ - reason?: FailureReason; - /** - * The details of the failure. - */ - details?: Data; - /** - * The ID of the DecisionTaskCompleted event corresponding to the decision task that resulted in the FailWorkflowExecution decision to fail this execution. This information can be useful for diagnosing problems by tracing back the chain of events leading up to this event. - */ - decisionTaskCompletedEventId: EventId; - } - export interface WorkflowExecutionFilter { - /** - * The workflowId to pass of match the criteria of this filter. - */ - workflowId: WorkflowId; - } - export interface WorkflowExecutionInfo { - /** - * The workflow execution this information is about. - */ - execution: WorkflowExecution; - /** - * The type of the workflow execution. - */ - workflowType: WorkflowType; - /** - * The time when the execution was started. - */ - startTimestamp: Timestamp; - /** - * The time when the workflow execution was closed. Set only if the execution status is CLOSED. - */ - closeTimestamp?: Timestamp; - /** - * The current status of the execution. - */ - executionStatus: ExecutionStatus; - /** - * If the execution status is closed then this specifies how the execution was closed: COMPLETED – the execution was successfully completed. CANCELED – the execution was canceled.Cancellation allows the implementation to gracefully clean up before the execution is closed. TERMINATED – the execution was force terminated. FAILED – the execution failed to complete. TIMED_OUT – the execution did not complete in the alloted time and was automatically timed out. CONTINUED_AS_NEW – the execution is logically continued. This means the current execution was completed and a new execution was started to carry on the workflow. - */ - closeStatus?: CloseStatus; - /** - * If this workflow execution is a child of another execution then contains the workflow execution that started this execution. - */ - parent?: WorkflowExecution; - /** - * The list of tags associated with the workflow execution. Tags can be used to identify and list workflow executions of interest through the visibility APIs. A workflow execution can have a maximum of 5 tags. - */ - tagList?: TagList; - /** - * Set to true if a cancellation is requested for this workflow execution. - */ - cancelRequested?: Canceled; - } - export type WorkflowExecutionInfoList = WorkflowExecutionInfo[]; - export interface WorkflowExecutionInfos { - /** - * The list of workflow information structures. - */ - executionInfos: WorkflowExecutionInfoList; - /** - * If a NextPageToken was returned by a previous call, there are more results available. To retrieve the next page of results, make the call again using the returned token in nextPageToken. Keep all other arguments unchanged. The configured maximumPageSize determines how many results can be returned in a single call. - */ - nextPageToken?: PageToken; - } - export interface WorkflowExecutionOpenCounts { - /** - * The count of activity tasks whose status is OPEN. - */ - openActivityTasks: Count; - /** - * The count of decision tasks whose status is OPEN. A workflow execution can have at most one open decision task. - */ - openDecisionTasks: OpenDecisionTasksCount; - /** - * The count of timers started by this workflow execution that have not fired yet. - */ - openTimers: Count; - /** - * The count of child workflow executions whose status is OPEN. - */ - openChildWorkflowExecutions: Count; - /** - * The count of Lambda tasks whose status is OPEN. - */ - openLambdaFunctions?: Count; - } - export interface WorkflowExecutionSignaledEventAttributes { - /** - * The name of the signal received. The decider can use the signal name and inputs to determine how to the process the signal. - */ - signalName: SignalName; - /** - * The inputs provided with the signal. The decider can use the signal name and inputs to determine how to process the signal. - */ - input?: Data; - /** - * The workflow execution that sent the signal. This is set only of the signal was sent by another workflow execution. - */ - externalWorkflowExecution?: WorkflowExecution; - /** - * The ID of the SignalExternalWorkflowExecutionInitiated event corresponding to the SignalExternalWorkflow decision to signal this workflow execution.The source event with this ID can be found in the history of the source workflow execution. This information can be useful for diagnosing problems by tracing back the chain of events leading up to this event. This field is set only if the signal was initiated by another workflow execution. - */ - externalInitiatedEventId?: EventId; - } - export interface WorkflowExecutionStartedEventAttributes { - /** - * The input provided to the workflow execution. - */ - input?: Data; - /** - * The maximum duration for this workflow execution. The duration is specified in seconds, an integer greater than or equal to 0. You can use NONE to specify unlimited duration. - */ - executionStartToCloseTimeout?: DurationInSecondsOptional; - /** - * The maximum duration of decision tasks for this workflow type. The duration is specified in seconds, an integer greater than or equal to 0. You can use NONE to specify unlimited duration. - */ - taskStartToCloseTimeout?: DurationInSecondsOptional; - /** - * The policy to use for the child workflow executions if this workflow execution is terminated, by calling the TerminateWorkflowExecution action explicitly or due to an expired timeout. The supported child policies are: TERMINATE – The child executions are terminated. REQUEST_CANCEL – A request to cancel is attempted for each child execution by recording a WorkflowExecutionCancelRequested event in its history. It is up to the decider to take appropriate actions when it receives an execution history with this event. ABANDON – No action is taken. The child executions continue to run. - */ - childPolicy: ChildPolicy; - /** - * The name of the task list for scheduling the decision tasks for this workflow execution. - */ - taskList: TaskList; - /** - * The priority of the decision tasks in the workflow execution. - */ - taskPriority?: TaskPriority; - /** - * The workflow type of this execution. - */ - workflowType: WorkflowType; - /** - * The list of tags associated with this workflow execution. An execution can have up to 5 tags. - */ - tagList?: TagList; - /** - * If this workflow execution was started due to a ContinueAsNewWorkflowExecution decision, then it contains the runId of the previous workflow execution that was closed and continued as this execution. - */ - continuedExecutionRunId?: WorkflowRunIdOptional; - /** - * The source workflow execution that started this workflow execution. The member isn't set if the workflow execution was not started by a workflow. - */ - parentWorkflowExecution?: WorkflowExecution; - /** - * The ID of the StartChildWorkflowExecutionInitiated event corresponding to the StartChildWorkflowExecution Decision to start this workflow execution. The source event with this ID can be found in the history of the source workflow execution. This information can be useful for diagnosing problems by tracing back the chain of events leading up to this event. - */ - parentInitiatedEventId?: EventId; - /** - * The IAM role attached to the workflow execution. - */ - lambdaRole?: Arn; - } - export type WorkflowExecutionTerminatedCause = "CHILD_POLICY_APPLIED"|"EVENT_LIMIT_EXCEEDED"|"OPERATOR_INITIATED"|string; - export interface WorkflowExecutionTerminatedEventAttributes { - /** - * The reason provided for the termination. - */ - reason?: TerminateReason; - /** - * The details provided for the termination. - */ - details?: Data; - /** - * The policy used for the child workflow executions of this workflow execution. The supported child policies are: TERMINATE – The child executions are terminated. REQUEST_CANCEL – A request to cancel is attempted for each child execution by recording a WorkflowExecutionCancelRequested event in its history. It is up to the decider to take appropriate actions when it receives an execution history with this event. ABANDON – No action is taken. The child executions continue to run. - */ - childPolicy: ChildPolicy; - /** - * If set, indicates that the workflow execution was automatically terminated, and specifies the cause. This happens if the parent workflow execution times out or is terminated and the child policy is set to terminate child executions. - */ - cause?: WorkflowExecutionTerminatedCause; - } - export interface WorkflowExecutionTimedOutEventAttributes { - /** - * The type of timeout that caused this event. - */ - timeoutType: WorkflowExecutionTimeoutType; - /** - * The policy used for the child workflow executions of this workflow execution. The supported child policies are: TERMINATE – The child executions are terminated. REQUEST_CANCEL – A request to cancel is attempted for each child execution by recording a WorkflowExecutionCancelRequested event in its history. It is up to the decider to take appropriate actions when it receives an execution history with this event. ABANDON – No action is taken. The child executions continue to run. - */ - childPolicy: ChildPolicy; - } - export type WorkflowExecutionTimeoutType = "START_TO_CLOSE"|string; - export type WorkflowId = string; - export type WorkflowRunId = string; - export type WorkflowRunIdOptional = string; - export interface WorkflowType { - /** - * The name of the workflow type. The combination of workflow type name and version must be unique with in a domain. - */ - name: Name; - /** - * The version of the workflow type. The combination of workflow type name and version must be unique with in a domain. - */ - version: Version; - } - export interface WorkflowTypeConfiguration { - /** - * The default maximum duration, specified when registering the workflow type, that a decision task for executions of this workflow type might take before returning completion or failure. If the task doesn'tdo close in the specified time then the task is automatically timed out and rescheduled. If the decider eventually reports a completion or failure, it is ignored. This default can be overridden when starting a workflow execution using the StartWorkflowExecution action or the StartChildWorkflowExecution Decision. The duration is specified in seconds, an integer greater than or equal to 0. You can use NONE to specify unlimited duration. - */ - defaultTaskStartToCloseTimeout?: DurationInSecondsOptional; - /** - * The default maximum duration, specified when registering the workflow type, for executions of this workflow type. This default can be overridden when starting a workflow execution using the StartWorkflowExecution action or the StartChildWorkflowExecution Decision. The duration is specified in seconds, an integer greater than or equal to 0. You can use NONE to specify unlimited duration. - */ - defaultExecutionStartToCloseTimeout?: DurationInSecondsOptional; - /** - * The default task list, specified when registering the workflow type, for decisions tasks scheduled for workflow executions of this type. This default can be overridden when starting a workflow execution using the StartWorkflowExecution action or the StartChildWorkflowExecution Decision. - */ - defaultTaskList?: TaskList; - /** - * The default task priority, specified when registering the workflow type, for all decision tasks of this workflow type. This default can be overridden when starting a workflow execution using the StartWorkflowExecution action or the StartChildWorkflowExecution decision. Valid values are integers that range from Java's Integer.MIN_VALUE (-2147483648) to Integer.MAX_VALUE (2147483647). Higher numbers indicate higher priority. For more information about setting task priority, see Setting Task Priority in the Amazon SWF Developer Guide. - */ - defaultTaskPriority?: TaskPriority; - /** - * The default policy to use for the child workflow executions when a workflow execution of this type is terminated, by calling the TerminateWorkflowExecution action explicitly or due to an expired timeout. This default can be overridden when starting a workflow execution using the StartWorkflowExecution action or the StartChildWorkflowExecution Decision. The supported child policies are: TERMINATE – The child executions are terminated. REQUEST_CANCEL – A request to cancel is attempted for each child execution by recording a WorkflowExecutionCancelRequested event in its history. It is up to the decider to take appropriate actions when it receives an execution history with this event. ABANDON – No action is taken. The child executions continue to run. - */ - defaultChildPolicy?: ChildPolicy; - /** - * The default IAM role attached to this workflow type. Executions of this workflow type need IAM roles to invoke Lambda functions. If you don't specify an IAM role when starting this workflow type, the default Lambda role is attached to the execution. For more information, see http://docs.aws.amazon.com/amazonswf/latest/developerguide/lambda-task.html in the Amazon SWF Developer Guide. - */ - defaultLambdaRole?: Arn; - } - export interface WorkflowTypeDetail { - /** - * General information about the workflow type. The status of the workflow type (returned in the WorkflowTypeInfo structure) can be one of the following. REGISTERED – The type is registered and available. Workers supporting this type should be running. DEPRECATED – The type was deprecated using DeprecateWorkflowType, but is still in use. You should keep workers supporting this type running. You cannot create new workflow executions of this type. - */ - typeInfo: WorkflowTypeInfo; - /** - * Configuration settings of the workflow type registered through RegisterWorkflowType - */ - configuration: WorkflowTypeConfiguration; - } - export interface WorkflowTypeFilter { - /** - * Name of the workflow type. - */ - name: Name; - /** - * Version of the workflow type. - */ - version?: VersionOptional; - } - export interface WorkflowTypeInfo { - /** - * The workflow type this information is about. - */ - workflowType: WorkflowType; - /** - * The current status of the workflow type. - */ - status: RegistrationStatus; - /** - * The description of the type registered through RegisterWorkflowType. - */ - description?: Description; - /** - * The date when this type was registered. - */ - creationDate: Timestamp; - /** - * If the type is in deprecated state, then it is set to the date when the type was deprecated. - */ - deprecationDate?: Timestamp; - } - export type WorkflowTypeInfoList = WorkflowTypeInfo[]; - export interface WorkflowTypeInfos { - /** - * The list of workflow type information. - */ - typeInfos: WorkflowTypeInfoList; - /** - * If a NextPageToken was returned by a previous call, there are more results available. To retrieve the next page of results, make the call again using the returned token in nextPageToken. Keep all other arguments unchanged. The configured maximumPageSize determines how many results can be returned in a single call. - */ - nextPageToken?: PageToken; - } - /** - * A string in YYYY-MM-DD format that represents the latest possible API version that can be used in this service. Specify 'latest' to use the latest possible version. - */ - export type apiVersion = "2012-01-25"|"latest"|string; - export interface ClientApiVersions { - /** - * A string in YYYY-MM-DD format that represents the latest possible API version that can be used in this service. Specify 'latest' to use the latest possible version. - */ - apiVersion?: apiVersion; - } - export type ClientConfiguration = ServiceConfigurationOptions & ClientApiVersions; - /** - * Contains interfaces for use with the SWF client. - */ - export import Types = SWF; -} -export = SWF; diff --git a/workshops/monte-carlo-on-ec2-spot-fleet/src/web/node_modules/aws-sdk/clients/swf.js b/workshops/monte-carlo-on-ec2-spot-fleet/src/web/node_modules/aws-sdk/clients/swf.js deleted file mode 100644 index b9cd99e9..00000000 --- a/workshops/monte-carlo-on-ec2-spot-fleet/src/web/node_modules/aws-sdk/clients/swf.js +++ /dev/null @@ -1,19 +0,0 @@ -require('../lib/node_loader'); -var AWS = require('../lib/core'); -var Service = AWS.Service; -var apiLoader = AWS.apiLoader; - -apiLoader.services['swf'] = {}; -AWS.SWF = Service.defineService('swf', ['2012-01-25']); -require('../lib/services/swf'); -Object.defineProperty(apiLoader.services['swf'], '2012-01-25', { - get: function get() { - var model = require('../apis/swf-2012-01-25.min.json'); - model.paginators = require('../apis/swf-2012-01-25.paginators.json').pagination; - return model; - }, - enumerable: true, - configurable: true -}); - -module.exports = AWS.SWF; diff --git a/workshops/monte-carlo-on-ec2-spot-fleet/src/web/node_modules/aws-sdk/clients/waf.d.ts b/workshops/monte-carlo-on-ec2-spot-fleet/src/web/node_modules/aws-sdk/clients/waf.d.ts deleted file mode 100644 index e17e7c79..00000000 --- a/workshops/monte-carlo-on-ec2-spot-fleet/src/web/node_modules/aws-sdk/clients/waf.d.ts +++ /dev/null @@ -1,1711 +0,0 @@ -import {Request} from '../lib/request'; -import {Response} from '../lib/response'; -import {AWSError} from '../lib/error'; -import {Service} from '../lib/service'; -import {ServiceConfigurationOptions} from '../lib/service'; -import {ConfigBase as Config} from '../lib/config'; -interface Blob {} -declare class WAF extends Service { - /** - * Constructs a service object. This object has one method for each API operation. - */ - constructor(options?: WAF.Types.ClientConfiguration) - config: Config & WAF.Types.ClientConfiguration; - /** - * Creates a ByteMatchSet. You then use UpdateByteMatchSet to identify the part of a web request that you want AWS WAF to inspect, such as the values of the User-Agent header or the query string. For example, you can create a ByteMatchSet that matches any requests with User-Agent headers that contain the string BadBot. You can then configure AWS WAF to reject those requests. To create and configure a ByteMatchSet, perform the following steps: Use GetChangeToken to get the change token that you provide in the ChangeToken parameter of a CreateByteMatchSet request. Submit a CreateByteMatchSet request. Use GetChangeToken to get the change token that you provide in the ChangeToken parameter of an UpdateByteMatchSet request. Submit an UpdateByteMatchSet request to specify the part of the request that you want AWS WAF to inspect (for example, the header or the URI) and the value that you want AWS WAF to watch for. For more information about how to use the AWS WAF API to allow or block HTTP requests, see the AWS WAF Developer Guide. - */ - createByteMatchSet(params: WAF.Types.CreateByteMatchSetRequest, callback?: (err: AWSError, data: WAF.Types.CreateByteMatchSetResponse) => void): Request; - /** - * Creates a ByteMatchSet. You then use UpdateByteMatchSet to identify the part of a web request that you want AWS WAF to inspect, such as the values of the User-Agent header or the query string. For example, you can create a ByteMatchSet that matches any requests with User-Agent headers that contain the string BadBot. You can then configure AWS WAF to reject those requests. To create and configure a ByteMatchSet, perform the following steps: Use GetChangeToken to get the change token that you provide in the ChangeToken parameter of a CreateByteMatchSet request. Submit a CreateByteMatchSet request. Use GetChangeToken to get the change token that you provide in the ChangeToken parameter of an UpdateByteMatchSet request. Submit an UpdateByteMatchSet request to specify the part of the request that you want AWS WAF to inspect (for example, the header or the URI) and the value that you want AWS WAF to watch for. For more information about how to use the AWS WAF API to allow or block HTTP requests, see the AWS WAF Developer Guide. - */ - createByteMatchSet(callback?: (err: AWSError, data: WAF.Types.CreateByteMatchSetResponse) => void): Request; - /** - * Creates an IPSet, which you use to specify which web requests you want to allow or block based on the IP addresses that the requests originate from. For example, if you're receiving a lot of requests from one or more individual IP addresses or one or more ranges of IP addresses and you want to block the requests, you can create an IPSet that contains those IP addresses and then configure AWS WAF to block the requests. To create and configure an IPSet, perform the following steps: Use GetChangeToken to get the change token that you provide in the ChangeToken parameter of a CreateIPSet request. Submit a CreateIPSet request. Use GetChangeToken to get the change token that you provide in the ChangeToken parameter of an UpdateIPSet request. Submit an UpdateIPSet request to specify the IP addresses that you want AWS WAF to watch for. For more information about how to use the AWS WAF API to allow or block HTTP requests, see the AWS WAF Developer Guide. - */ - createIPSet(params: WAF.Types.CreateIPSetRequest, callback?: (err: AWSError, data: WAF.Types.CreateIPSetResponse) => void): Request; - /** - * Creates an IPSet, which you use to specify which web requests you want to allow or block based on the IP addresses that the requests originate from. For example, if you're receiving a lot of requests from one or more individual IP addresses or one or more ranges of IP addresses and you want to block the requests, you can create an IPSet that contains those IP addresses and then configure AWS WAF to block the requests. To create and configure an IPSet, perform the following steps: Use GetChangeToken to get the change token that you provide in the ChangeToken parameter of a CreateIPSet request. Submit a CreateIPSet request. Use GetChangeToken to get the change token that you provide in the ChangeToken parameter of an UpdateIPSet request. Submit an UpdateIPSet request to specify the IP addresses that you want AWS WAF to watch for. For more information about how to use the AWS WAF API to allow or block HTTP requests, see the AWS WAF Developer Guide. - */ - createIPSet(callback?: (err: AWSError, data: WAF.Types.CreateIPSetResponse) => void): Request; - /** - * Creates a RateBasedRule. The RateBasedRule contains a RateLimit, which specifies the maximum number of requests that AWS WAF allows from a specified IP address in a five-minute period. The RateBasedRule also contains the IPSet objects, ByteMatchSet objects, and other predicates that identify the requests that you want to count or block if these requests exceed the RateLimit. If you add more than one predicate to a RateBasedRule, a request not only must exceed the RateLimit, but it also must match all the specifications to be counted or blocked. For example, suppose you add the following to a RateBasedRule: An IPSet that matches the IP address 192.0.2.44/32 A ByteMatchSet that matches BadBot in the User-Agent header Further, you specify a RateLimit of 15,000. You then add the RateBasedRule to a WebACL and specify that you want to block requests that meet the conditions in the rule. For a request to be blocked, it must come from the IP address 192.0.2.44 and the User-Agent header in the request must contain the value BadBot. Further, requests that match these two conditions must be received at a rate of more than 15,000 requests every five minutes. If both conditions are met and the rate is exceeded, AWS WAF blocks the requests. If the rate drops below 15,000 for a five-minute period, AWS WAF no longer blocks the requests. As a second example, suppose you want to limit requests to a particular page on your site. To do this, you could add the following to a RateBasedRule: A ByteMatchSet with FieldToMatch of URI A PositionalConstraint of STARTS_WITH A TargetString of login Further, you specify a RateLimit of 15,000. By adding this RateBasedRule to a WebACL, you could limit requests to your login page without affecting the rest of your site. To create and configure a RateBasedRule, perform the following steps: Create and update the predicates that you want to include in the rule. For more information, see CreateByteMatchSet, CreateIPSet, and CreateSqlInjectionMatchSet. Use GetChangeToken to get the change token that you provide in the ChangeToken parameter of a CreateRule request. Submit a CreateRateBasedRule request. Use GetChangeToken to get the change token that you provide in the ChangeToken parameter of an UpdateRule request. Submit an UpdateRateBasedRule request to specify the predicates that you want to include in the rule. Create and update a WebACL that contains the RateBasedRule. For more information, see CreateWebACL. For more information about how to use the AWS WAF API to allow or block HTTP requests, see the AWS WAF Developer Guide. - */ - createRateBasedRule(params: WAF.Types.CreateRateBasedRuleRequest, callback?: (err: AWSError, data: WAF.Types.CreateRateBasedRuleResponse) => void): Request; - /** - * Creates a RateBasedRule. The RateBasedRule contains a RateLimit, which specifies the maximum number of requests that AWS WAF allows from a specified IP address in a five-minute period. The RateBasedRule also contains the IPSet objects, ByteMatchSet objects, and other predicates that identify the requests that you want to count or block if these requests exceed the RateLimit. If you add more than one predicate to a RateBasedRule, a request not only must exceed the RateLimit, but it also must match all the specifications to be counted or blocked. For example, suppose you add the following to a RateBasedRule: An IPSet that matches the IP address 192.0.2.44/32 A ByteMatchSet that matches BadBot in the User-Agent header Further, you specify a RateLimit of 15,000. You then add the RateBasedRule to a WebACL and specify that you want to block requests that meet the conditions in the rule. For a request to be blocked, it must come from the IP address 192.0.2.44 and the User-Agent header in the request must contain the value BadBot. Further, requests that match these two conditions must be received at a rate of more than 15,000 requests every five minutes. If both conditions are met and the rate is exceeded, AWS WAF blocks the requests. If the rate drops below 15,000 for a five-minute period, AWS WAF no longer blocks the requests. As a second example, suppose you want to limit requests to a particular page on your site. To do this, you could add the following to a RateBasedRule: A ByteMatchSet with FieldToMatch of URI A PositionalConstraint of STARTS_WITH A TargetString of login Further, you specify a RateLimit of 15,000. By adding this RateBasedRule to a WebACL, you could limit requests to your login page without affecting the rest of your site. To create and configure a RateBasedRule, perform the following steps: Create and update the predicates that you want to include in the rule. For more information, see CreateByteMatchSet, CreateIPSet, and CreateSqlInjectionMatchSet. Use GetChangeToken to get the change token that you provide in the ChangeToken parameter of a CreateRule request. Submit a CreateRateBasedRule request. Use GetChangeToken to get the change token that you provide in the ChangeToken parameter of an UpdateRule request. Submit an UpdateRateBasedRule request to specify the predicates that you want to include in the rule. Create and update a WebACL that contains the RateBasedRule. For more information, see CreateWebACL. For more information about how to use the AWS WAF API to allow or block HTTP requests, see the AWS WAF Developer Guide. - */ - createRateBasedRule(callback?: (err: AWSError, data: WAF.Types.CreateRateBasedRuleResponse) => void): Request; - /** - * Creates a Rule, which contains the IPSet objects, ByteMatchSet objects, and other predicates that identify the requests that you want to block. If you add more than one predicate to a Rule, a request must match all of the specifications to be allowed or blocked. For example, suppose you add the following to a Rule: An IPSet that matches the IP address 192.0.2.44/32 A ByteMatchSet that matches BadBot in the User-Agent header You then add the Rule to a WebACL and specify that you want to blocks requests that satisfy the Rule. For a request to be blocked, it must come from the IP address 192.0.2.44 and the User-Agent header in the request must contain the value BadBot. To create and configure a Rule, perform the following steps: Create and update the predicates that you want to include in the Rule. For more information, see CreateByteMatchSet, CreateIPSet, and CreateSqlInjectionMatchSet. Use GetChangeToken to get the change token that you provide in the ChangeToken parameter of a CreateRule request. Submit a CreateRule request. Use GetChangeToken to get the change token that you provide in the ChangeToken parameter of an UpdateRule request. Submit an UpdateRule request to specify the predicates that you want to include in the Rule. Create and update a WebACL that contains the Rule. For more information, see CreateWebACL. For more information about how to use the AWS WAF API to allow or block HTTP requests, see the AWS WAF Developer Guide. - */ - createRule(params: WAF.Types.CreateRuleRequest, callback?: (err: AWSError, data: WAF.Types.CreateRuleResponse) => void): Request; - /** - * Creates a Rule, which contains the IPSet objects, ByteMatchSet objects, and other predicates that identify the requests that you want to block. If you add more than one predicate to a Rule, a request must match all of the specifications to be allowed or blocked. For example, suppose you add the following to a Rule: An IPSet that matches the IP address 192.0.2.44/32 A ByteMatchSet that matches BadBot in the User-Agent header You then add the Rule to a WebACL and specify that you want to blocks requests that satisfy the Rule. For a request to be blocked, it must come from the IP address 192.0.2.44 and the User-Agent header in the request must contain the value BadBot. To create and configure a Rule, perform the following steps: Create and update the predicates that you want to include in the Rule. For more information, see CreateByteMatchSet, CreateIPSet, and CreateSqlInjectionMatchSet. Use GetChangeToken to get the change token that you provide in the ChangeToken parameter of a CreateRule request. Submit a CreateRule request. Use GetChangeToken to get the change token that you provide in the ChangeToken parameter of an UpdateRule request. Submit an UpdateRule request to specify the predicates that you want to include in the Rule. Create and update a WebACL that contains the Rule. For more information, see CreateWebACL. For more information about how to use the AWS WAF API to allow or block HTTP requests, see the AWS WAF Developer Guide. - */ - createRule(callback?: (err: AWSError, data: WAF.Types.CreateRuleResponse) => void): Request; - /** - * Creates a SizeConstraintSet. You then use UpdateSizeConstraintSet to identify the part of a web request that you want AWS WAF to check for length, such as the length of the User-Agent header or the length of the query string. For example, you can create a SizeConstraintSet that matches any requests that have a query string that is longer than 100 bytes. You can then configure AWS WAF to reject those requests. To create and configure a SizeConstraintSet, perform the following steps: Use GetChangeToken to get the change token that you provide in the ChangeToken parameter of a CreateSizeConstraintSet request. Submit a CreateSizeConstraintSet request. Use GetChangeToken to get the change token that you provide in the ChangeToken parameter of an UpdateSizeConstraintSet request. Submit an UpdateSizeConstraintSet request to specify the part of the request that you want AWS WAF to inspect (for example, the header or the URI) and the value that you want AWS WAF to watch for. For more information about how to use the AWS WAF API to allow or block HTTP requests, see the AWS WAF Developer Guide. - */ - createSizeConstraintSet(params: WAF.Types.CreateSizeConstraintSetRequest, callback?: (err: AWSError, data: WAF.Types.CreateSizeConstraintSetResponse) => void): Request; - /** - * Creates a SizeConstraintSet. You then use UpdateSizeConstraintSet to identify the part of a web request that you want AWS WAF to check for length, such as the length of the User-Agent header or the length of the query string. For example, you can create a SizeConstraintSet that matches any requests that have a query string that is longer than 100 bytes. You can then configure AWS WAF to reject those requests. To create and configure a SizeConstraintSet, perform the following steps: Use GetChangeToken to get the change token that you provide in the ChangeToken parameter of a CreateSizeConstraintSet request. Submit a CreateSizeConstraintSet request. Use GetChangeToken to get the change token that you provide in the ChangeToken parameter of an UpdateSizeConstraintSet request. Submit an UpdateSizeConstraintSet request to specify the part of the request that you want AWS WAF to inspect (for example, the header or the URI) and the value that you want AWS WAF to watch for. For more information about how to use the AWS WAF API to allow or block HTTP requests, see the AWS WAF Developer Guide. - */ - createSizeConstraintSet(callback?: (err: AWSError, data: WAF.Types.CreateSizeConstraintSetResponse) => void): Request; - /** - * Creates a SqlInjectionMatchSet, which you use to allow, block, or count requests that contain snippets of SQL code in a specified part of web requests. AWS WAF searches for character sequences that are likely to be malicious strings. To create and configure a SqlInjectionMatchSet, perform the following steps: Use GetChangeToken to get the change token that you provide in the ChangeToken parameter of a CreateSqlInjectionMatchSet request. Submit a CreateSqlInjectionMatchSet request. Use GetChangeToken to get the change token that you provide in the ChangeToken parameter of an UpdateSqlInjectionMatchSet request. Submit an UpdateSqlInjectionMatchSet request to specify the parts of web requests in which you want to allow, block, or count malicious SQL code. For more information about how to use the AWS WAF API to allow or block HTTP requests, see the AWS WAF Developer Guide. - */ - createSqlInjectionMatchSet(params: WAF.Types.CreateSqlInjectionMatchSetRequest, callback?: (err: AWSError, data: WAF.Types.CreateSqlInjectionMatchSetResponse) => void): Request; - /** - * Creates a SqlInjectionMatchSet, which you use to allow, block, or count requests that contain snippets of SQL code in a specified part of web requests. AWS WAF searches for character sequences that are likely to be malicious strings. To create and configure a SqlInjectionMatchSet, perform the following steps: Use GetChangeToken to get the change token that you provide in the ChangeToken parameter of a CreateSqlInjectionMatchSet request. Submit a CreateSqlInjectionMatchSet request. Use GetChangeToken to get the change token that you provide in the ChangeToken parameter of an UpdateSqlInjectionMatchSet request. Submit an UpdateSqlInjectionMatchSet request to specify the parts of web requests in which you want to allow, block, or count malicious SQL code. For more information about how to use the AWS WAF API to allow or block HTTP requests, see the AWS WAF Developer Guide. - */ - createSqlInjectionMatchSet(callback?: (err: AWSError, data: WAF.Types.CreateSqlInjectionMatchSetResponse) => void): Request; - /** - * Creates a WebACL, which contains the Rules that identify the CloudFront web requests that you want to allow, block, or count. AWS WAF evaluates Rules in order based on the value of Priority for each Rule. You also specify a default action, either ALLOW or BLOCK. If a web request doesn't match any of the Rules in a WebACL, AWS WAF responds to the request with the default action. To create and configure a WebACL, perform the following steps: Create and update the ByteMatchSet objects and other predicates that you want to include in Rules. For more information, see CreateByteMatchSet, UpdateByteMatchSet, CreateIPSet, UpdateIPSet, CreateSqlInjectionMatchSet, and UpdateSqlInjectionMatchSet. Create and update the Rules that you want to include in the WebACL. For more information, see CreateRule and UpdateRule. Use GetChangeToken to get the change token that you provide in the ChangeToken parameter of a CreateWebACL request. Submit a CreateWebACL request. Use GetChangeToken to get the change token that you provide in the ChangeToken parameter of an UpdateWebACL request. Submit an UpdateWebACL request to specify the Rules that you want to include in the WebACL, to specify the default action, and to associate the WebACL with a CloudFront distribution. For more information about how to use the AWS WAF API, see the AWS WAF Developer Guide. - */ - createWebACL(params: WAF.Types.CreateWebACLRequest, callback?: (err: AWSError, data: WAF.Types.CreateWebACLResponse) => void): Request; - /** - * Creates a WebACL, which contains the Rules that identify the CloudFront web requests that you want to allow, block, or count. AWS WAF evaluates Rules in order based on the value of Priority for each Rule. You also specify a default action, either ALLOW or BLOCK. If a web request doesn't match any of the Rules in a WebACL, AWS WAF responds to the request with the default action. To create and configure a WebACL, perform the following steps: Create and update the ByteMatchSet objects and other predicates that you want to include in Rules. For more information, see CreateByteMatchSet, UpdateByteMatchSet, CreateIPSet, UpdateIPSet, CreateSqlInjectionMatchSet, and UpdateSqlInjectionMatchSet. Create and update the Rules that you want to include in the WebACL. For more information, see CreateRule and UpdateRule. Use GetChangeToken to get the change token that you provide in the ChangeToken parameter of a CreateWebACL request. Submit a CreateWebACL request. Use GetChangeToken to get the change token that you provide in the ChangeToken parameter of an UpdateWebACL request. Submit an UpdateWebACL request to specify the Rules that you want to include in the WebACL, to specify the default action, and to associate the WebACL with a CloudFront distribution. For more information about how to use the AWS WAF API, see the AWS WAF Developer Guide. - */ - createWebACL(callback?: (err: AWSError, data: WAF.Types.CreateWebACLResponse) => void): Request; - /** - * Creates an XssMatchSet, which you use to allow, block, or count requests that contain cross-site scripting attacks in the specified part of web requests. AWS WAF searches for character sequences that are likely to be malicious strings. To create and configure an XssMatchSet, perform the following steps: Use GetChangeToken to get the change token that you provide in the ChangeToken parameter of a CreateXssMatchSet request. Submit a CreateXssMatchSet request. Use GetChangeToken to get the change token that you provide in the ChangeToken parameter of an UpdateXssMatchSet request. Submit an UpdateXssMatchSet request to specify the parts of web requests in which you want to allow, block, or count cross-site scripting attacks. For more information about how to use the AWS WAF API to allow or block HTTP requests, see the AWS WAF Developer Guide. - */ - createXssMatchSet(params: WAF.Types.CreateXssMatchSetRequest, callback?: (err: AWSError, data: WAF.Types.CreateXssMatchSetResponse) => void): Request; - /** - * Creates an XssMatchSet, which you use to allow, block, or count requests that contain cross-site scripting attacks in the specified part of web requests. AWS WAF searches for character sequences that are likely to be malicious strings. To create and configure an XssMatchSet, perform the following steps: Use GetChangeToken to get the change token that you provide in the ChangeToken parameter of a CreateXssMatchSet request. Submit a CreateXssMatchSet request. Use GetChangeToken to get the change token that you provide in the ChangeToken parameter of an UpdateXssMatchSet request. Submit an UpdateXssMatchSet request to specify the parts of web requests in which you want to allow, block, or count cross-site scripting attacks. For more information about how to use the AWS WAF API to allow or block HTTP requests, see the AWS WAF Developer Guide. - */ - createXssMatchSet(callback?: (err: AWSError, data: WAF.Types.CreateXssMatchSetResponse) => void): Request; - /** - * Permanently deletes a ByteMatchSet. You can't delete a ByteMatchSet if it's still used in any Rules or if it still includes any ByteMatchTuple objects (any filters). If you just want to remove a ByteMatchSet from a Rule, use UpdateRule. To permanently delete a ByteMatchSet, perform the following steps: Update the ByteMatchSet to remove filters, if any. For more information, see UpdateByteMatchSet. Use GetChangeToken to get the change token that you provide in the ChangeToken parameter of a DeleteByteMatchSet request. Submit a DeleteByteMatchSet request. - */ - deleteByteMatchSet(params: WAF.Types.DeleteByteMatchSetRequest, callback?: (err: AWSError, data: WAF.Types.DeleteByteMatchSetResponse) => void): Request; - /** - * Permanently deletes a ByteMatchSet. You can't delete a ByteMatchSet if it's still used in any Rules or if it still includes any ByteMatchTuple objects (any filters). If you just want to remove a ByteMatchSet from a Rule, use UpdateRule. To permanently delete a ByteMatchSet, perform the following steps: Update the ByteMatchSet to remove filters, if any. For more information, see UpdateByteMatchSet. Use GetChangeToken to get the change token that you provide in the ChangeToken parameter of a DeleteByteMatchSet request. Submit a DeleteByteMatchSet request. - */ - deleteByteMatchSet(callback?: (err: AWSError, data: WAF.Types.DeleteByteMatchSetResponse) => void): Request; - /** - * Permanently deletes an IPSet. You can't delete an IPSet if it's still used in any Rules or if it still includes any IP addresses. If you just want to remove an IPSet from a Rule, use UpdateRule. To permanently delete an IPSet from AWS WAF, perform the following steps: Update the IPSet to remove IP address ranges, if any. For more information, see UpdateIPSet. Use GetChangeToken to get the change token that you provide in the ChangeToken parameter of a DeleteIPSet request. Submit a DeleteIPSet request. - */ - deleteIPSet(params: WAF.Types.DeleteIPSetRequest, callback?: (err: AWSError, data: WAF.Types.DeleteIPSetResponse) => void): Request; - /** - * Permanently deletes an IPSet. You can't delete an IPSet if it's still used in any Rules or if it still includes any IP addresses. If you just want to remove an IPSet from a Rule, use UpdateRule. To permanently delete an IPSet from AWS WAF, perform the following steps: Update the IPSet to remove IP address ranges, if any. For more information, see UpdateIPSet. Use GetChangeToken to get the change token that you provide in the ChangeToken parameter of a DeleteIPSet request. Submit a DeleteIPSet request. - */ - deleteIPSet(callback?: (err: AWSError, data: WAF.Types.DeleteIPSetResponse) => void): Request; - /** - * Permanently deletes a RateBasedRule. You can't delete a rule if it's still used in any WebACL objects or if it still includes any predicates, such as ByteMatchSet objects. If you just want to remove a rule from a WebACL, use UpdateWebACL. To permanently delete a RateBasedRule from AWS WAF, perform the following steps: Update the RateBasedRule to remove predicates, if any. For more information, see UpdateRateBasedRule. Use GetChangeToken to get the change token that you provide in the ChangeToken parameter of a DeleteRateBasedRule request. Submit a DeleteRateBasedRule request. - */ - deleteRateBasedRule(params: WAF.Types.DeleteRateBasedRuleRequest, callback?: (err: AWSError, data: WAF.Types.DeleteRateBasedRuleResponse) => void): Request; - /** - * Permanently deletes a RateBasedRule. You can't delete a rule if it's still used in any WebACL objects or if it still includes any predicates, such as ByteMatchSet objects. If you just want to remove a rule from a WebACL, use UpdateWebACL. To permanently delete a RateBasedRule from AWS WAF, perform the following steps: Update the RateBasedRule to remove predicates, if any. For more information, see UpdateRateBasedRule. Use GetChangeToken to get the change token that you provide in the ChangeToken parameter of a DeleteRateBasedRule request. Submit a DeleteRateBasedRule request. - */ - deleteRateBasedRule(callback?: (err: AWSError, data: WAF.Types.DeleteRateBasedRuleResponse) => void): Request; - /** - * Permanently deletes a Rule. You can't delete a Rule if it's still used in any WebACL objects or if it still includes any predicates, such as ByteMatchSet objects. If you just want to remove a Rule from a WebACL, use UpdateWebACL. To permanently delete a Rule from AWS WAF, perform the following steps: Update the Rule to remove predicates, if any. For more information, see UpdateRule. Use GetChangeToken to get the change token that you provide in the ChangeToken parameter of a DeleteRule request. Submit a DeleteRule request. - */ - deleteRule(params: WAF.Types.DeleteRuleRequest, callback?: (err: AWSError, data: WAF.Types.DeleteRuleResponse) => void): Request; - /** - * Permanently deletes a Rule. You can't delete a Rule if it's still used in any WebACL objects or if it still includes any predicates, such as ByteMatchSet objects. If you just want to remove a Rule from a WebACL, use UpdateWebACL. To permanently delete a Rule from AWS WAF, perform the following steps: Update the Rule to remove predicates, if any. For more information, see UpdateRule. Use GetChangeToken to get the change token that you provide in the ChangeToken parameter of a DeleteRule request. Submit a DeleteRule request. - */ - deleteRule(callback?: (err: AWSError, data: WAF.Types.DeleteRuleResponse) => void): Request; - /** - * Permanently deletes a SizeConstraintSet. You can't delete a SizeConstraintSet if it's still used in any Rules or if it still includes any SizeConstraint objects (any filters). If you just want to remove a SizeConstraintSet from a Rule, use UpdateRule. To permanently delete a SizeConstraintSet, perform the following steps: Update the SizeConstraintSet to remove filters, if any. For more information, see UpdateSizeConstraintSet. Use GetChangeToken to get the change token that you provide in the ChangeToken parameter of a DeleteSizeConstraintSet request. Submit a DeleteSizeConstraintSet request. - */ - deleteSizeConstraintSet(params: WAF.Types.DeleteSizeConstraintSetRequest, callback?: (err: AWSError, data: WAF.Types.DeleteSizeConstraintSetResponse) => void): Request; - /** - * Permanently deletes a SizeConstraintSet. You can't delete a SizeConstraintSet if it's still used in any Rules or if it still includes any SizeConstraint objects (any filters). If you just want to remove a SizeConstraintSet from a Rule, use UpdateRule. To permanently delete a SizeConstraintSet, perform the following steps: Update the SizeConstraintSet to remove filters, if any. For more information, see UpdateSizeConstraintSet. Use GetChangeToken to get the change token that you provide in the ChangeToken parameter of a DeleteSizeConstraintSet request. Submit a DeleteSizeConstraintSet request. - */ - deleteSizeConstraintSet(callback?: (err: AWSError, data: WAF.Types.DeleteSizeConstraintSetResponse) => void): Request; - /** - * Permanently deletes a SqlInjectionMatchSet. You can't delete a SqlInjectionMatchSet if it's still used in any Rules or if it still contains any SqlInjectionMatchTuple objects. If you just want to remove a SqlInjectionMatchSet from a Rule, use UpdateRule. To permanently delete a SqlInjectionMatchSet from AWS WAF, perform the following steps: Update the SqlInjectionMatchSet to remove filters, if any. For more information, see UpdateSqlInjectionMatchSet. Use GetChangeToken to get the change token that you provide in the ChangeToken parameter of a DeleteSqlInjectionMatchSet request. Submit a DeleteSqlInjectionMatchSet request. - */ - deleteSqlInjectionMatchSet(params: WAF.Types.DeleteSqlInjectionMatchSetRequest, callback?: (err: AWSError, data: WAF.Types.DeleteSqlInjectionMatchSetResponse) => void): Request; - /** - * Permanently deletes a SqlInjectionMatchSet. You can't delete a SqlInjectionMatchSet if it's still used in any Rules or if it still contains any SqlInjectionMatchTuple objects. If you just want to remove a SqlInjectionMatchSet from a Rule, use UpdateRule. To permanently delete a SqlInjectionMatchSet from AWS WAF, perform the following steps: Update the SqlInjectionMatchSet to remove filters, if any. For more information, see UpdateSqlInjectionMatchSet. Use GetChangeToken to get the change token that you provide in the ChangeToken parameter of a DeleteSqlInjectionMatchSet request. Submit a DeleteSqlInjectionMatchSet request. - */ - deleteSqlInjectionMatchSet(callback?: (err: AWSError, data: WAF.Types.DeleteSqlInjectionMatchSetResponse) => void): Request; - /** - * Permanently deletes a WebACL. You can't delete a WebACL if it still contains any Rules. To delete a WebACL, perform the following steps: Update the WebACL to remove Rules, if any. For more information, see UpdateWebACL. Use GetChangeToken to get the change token that you provide in the ChangeToken parameter of a DeleteWebACL request. Submit a DeleteWebACL request. - */ - deleteWebACL(params: WAF.Types.DeleteWebACLRequest, callback?: (err: AWSError, data: WAF.Types.DeleteWebACLResponse) => void): Request; - /** - * Permanently deletes a WebACL. You can't delete a WebACL if it still contains any Rules. To delete a WebACL, perform the following steps: Update the WebACL to remove Rules, if any. For more information, see UpdateWebACL. Use GetChangeToken to get the change token that you provide in the ChangeToken parameter of a DeleteWebACL request. Submit a DeleteWebACL request. - */ - deleteWebACL(callback?: (err: AWSError, data: WAF.Types.DeleteWebACLResponse) => void): Request; - /** - * Permanently deletes an XssMatchSet. You can't delete an XssMatchSet if it's still used in any Rules or if it still contains any XssMatchTuple objects. If you just want to remove an XssMatchSet from a Rule, use UpdateRule. To permanently delete an XssMatchSet from AWS WAF, perform the following steps: Update the XssMatchSet to remove filters, if any. For more information, see UpdateXssMatchSet. Use GetChangeToken to get the change token that you provide in the ChangeToken parameter of a DeleteXssMatchSet request. Submit a DeleteXssMatchSet request. - */ - deleteXssMatchSet(params: WAF.Types.DeleteXssMatchSetRequest, callback?: (err: AWSError, data: WAF.Types.DeleteXssMatchSetResponse) => void): Request; - /** - * Permanently deletes an XssMatchSet. You can't delete an XssMatchSet if it's still used in any Rules or if it still contains any XssMatchTuple objects. If you just want to remove an XssMatchSet from a Rule, use UpdateRule. To permanently delete an XssMatchSet from AWS WAF, perform the following steps: Update the XssMatchSet to remove filters, if any. For more information, see UpdateXssMatchSet. Use GetChangeToken to get the change token that you provide in the ChangeToken parameter of a DeleteXssMatchSet request. Submit a DeleteXssMatchSet request. - */ - deleteXssMatchSet(callback?: (err: AWSError, data: WAF.Types.DeleteXssMatchSetResponse) => void): Request; - /** - * Returns the ByteMatchSet specified by ByteMatchSetId. - */ - getByteMatchSet(params: WAF.Types.GetByteMatchSetRequest, callback?: (err: AWSError, data: WAF.Types.GetByteMatchSetResponse) => void): Request; - /** - * Returns the ByteMatchSet specified by ByteMatchSetId. - */ - getByteMatchSet(callback?: (err: AWSError, data: WAF.Types.GetByteMatchSetResponse) => void): Request; - /** - * When you want to create, update, or delete AWS WAF objects, get a change token and include the change token in the create, update, or delete request. Change tokens ensure that your application doesn't submit conflicting requests to AWS WAF. Each create, update, or delete request must use a unique change token. If your application submits a GetChangeToken request and then submits a second GetChangeToken request before submitting a create, update, or delete request, the second GetChangeToken request returns the same value as the first GetChangeToken request. When you use a change token in a create, update, or delete request, the status of the change token changes to PENDING, which indicates that AWS WAF is propagating the change to all AWS WAF servers. Use GetChangeTokenStatus to determine the status of your change token. - */ - getChangeToken(params: WAF.Types.GetChangeTokenRequest, callback?: (err: AWSError, data: WAF.Types.GetChangeTokenResponse) => void): Request; - /** - * When you want to create, update, or delete AWS WAF objects, get a change token and include the change token in the create, update, or delete request. Change tokens ensure that your application doesn't submit conflicting requests to AWS WAF. Each create, update, or delete request must use a unique change token. If your application submits a GetChangeToken request and then submits a second GetChangeToken request before submitting a create, update, or delete request, the second GetChangeToken request returns the same value as the first GetChangeToken request. When you use a change token in a create, update, or delete request, the status of the change token changes to PENDING, which indicates that AWS WAF is propagating the change to all AWS WAF servers. Use GetChangeTokenStatus to determine the status of your change token. - */ - getChangeToken(callback?: (err: AWSError, data: WAF.Types.GetChangeTokenResponse) => void): Request; - /** - * Returns the status of a ChangeToken that you got by calling GetChangeToken. ChangeTokenStatus is one of the following values: PROVISIONED: You requested the change token by calling GetChangeToken, but you haven't used it yet in a call to create, update, or delete an AWS WAF object. PENDING: AWS WAF is propagating the create, update, or delete request to all AWS WAF servers. IN_SYNC: Propagation is complete. - */ - getChangeTokenStatus(params: WAF.Types.GetChangeTokenStatusRequest, callback?: (err: AWSError, data: WAF.Types.GetChangeTokenStatusResponse) => void): Request; - /** - * Returns the status of a ChangeToken that you got by calling GetChangeToken. ChangeTokenStatus is one of the following values: PROVISIONED: You requested the change token by calling GetChangeToken, but you haven't used it yet in a call to create, update, or delete an AWS WAF object. PENDING: AWS WAF is propagating the create, update, or delete request to all AWS WAF servers. IN_SYNC: Propagation is complete. - */ - getChangeTokenStatus(callback?: (err: AWSError, data: WAF.Types.GetChangeTokenStatusResponse) => void): Request; - /** - * Returns the IPSet that is specified by IPSetId. - */ - getIPSet(params: WAF.Types.GetIPSetRequest, callback?: (err: AWSError, data: WAF.Types.GetIPSetResponse) => void): Request; - /** - * Returns the IPSet that is specified by IPSetId. - */ - getIPSet(callback?: (err: AWSError, data: WAF.Types.GetIPSetResponse) => void): Request; - /** - * Returns the RateBasedRule that is specified by the RuleId that you included in the GetRateBasedRule request. - */ - getRateBasedRule(params: WAF.Types.GetRateBasedRuleRequest, callback?: (err: AWSError, data: WAF.Types.GetRateBasedRuleResponse) => void): Request; - /** - * Returns the RateBasedRule that is specified by the RuleId that you included in the GetRateBasedRule request. - */ - getRateBasedRule(callback?: (err: AWSError, data: WAF.Types.GetRateBasedRuleResponse) => void): Request; - /** - * Returns an array of IP addresses currently being blocked by the RateBasedRule that is specified by the RuleId. The maximum number of managed keys that will be blocked is 10,000. If more than 10,000 addresses exceed the rate limit, the 10,000 addresses with the highest rates will be blocked. - */ - getRateBasedRuleManagedKeys(params: WAF.Types.GetRateBasedRuleManagedKeysRequest, callback?: (err: AWSError, data: WAF.Types.GetRateBasedRuleManagedKeysResponse) => void): Request; - /** - * Returns an array of IP addresses currently being blocked by the RateBasedRule that is specified by the RuleId. The maximum number of managed keys that will be blocked is 10,000. If more than 10,000 addresses exceed the rate limit, the 10,000 addresses with the highest rates will be blocked. - */ - getRateBasedRuleManagedKeys(callback?: (err: AWSError, data: WAF.Types.GetRateBasedRuleManagedKeysResponse) => void): Request; - /** - * Returns the Rule that is specified by the RuleId that you included in the GetRule request. - */ - getRule(params: WAF.Types.GetRuleRequest, callback?: (err: AWSError, data: WAF.Types.GetRuleResponse) => void): Request; - /** - * Returns the Rule that is specified by the RuleId that you included in the GetRule request. - */ - getRule(callback?: (err: AWSError, data: WAF.Types.GetRuleResponse) => void): Request; - /** - * Gets detailed information about a specified number of requests--a sample--that AWS WAF randomly selects from among the first 5,000 requests that your AWS resource received during a time range that you choose. You can specify a sample size of up to 500 requests, and you can specify any time range in the previous three hours. GetSampledRequests returns a time range, which is usually the time range that you specified. However, if your resource (such as a CloudFront distribution) received 5,000 requests before the specified time range elapsed, GetSampledRequests returns an updated time range. This new time range indicates the actual period during which AWS WAF selected the requests in the sample. - */ - getSampledRequests(params: WAF.Types.GetSampledRequestsRequest, callback?: (err: AWSError, data: WAF.Types.GetSampledRequestsResponse) => void): Request; - /** - * Gets detailed information about a specified number of requests--a sample--that AWS WAF randomly selects from among the first 5,000 requests that your AWS resource received during a time range that you choose. You can specify a sample size of up to 500 requests, and you can specify any time range in the previous three hours. GetSampledRequests returns a time range, which is usually the time range that you specified. However, if your resource (such as a CloudFront distribution) received 5,000 requests before the specified time range elapsed, GetSampledRequests returns an updated time range. This new time range indicates the actual period during which AWS WAF selected the requests in the sample. - */ - getSampledRequests(callback?: (err: AWSError, data: WAF.Types.GetSampledRequestsResponse) => void): Request; - /** - * Returns the SizeConstraintSet specified by SizeConstraintSetId. - */ - getSizeConstraintSet(params: WAF.Types.GetSizeConstraintSetRequest, callback?: (err: AWSError, data: WAF.Types.GetSizeConstraintSetResponse) => void): Request; - /** - * Returns the SizeConstraintSet specified by SizeConstraintSetId. - */ - getSizeConstraintSet(callback?: (err: AWSError, data: WAF.Types.GetSizeConstraintSetResponse) => void): Request; - /** - * Returns the SqlInjectionMatchSet that is specified by SqlInjectionMatchSetId. - */ - getSqlInjectionMatchSet(params: WAF.Types.GetSqlInjectionMatchSetRequest, callback?: (err: AWSError, data: WAF.Types.GetSqlInjectionMatchSetResponse) => void): Request; - /** - * Returns the SqlInjectionMatchSet that is specified by SqlInjectionMatchSetId. - */ - getSqlInjectionMatchSet(callback?: (err: AWSError, data: WAF.Types.GetSqlInjectionMatchSetResponse) => void): Request; - /** - * Returns the WebACL that is specified by WebACLId. - */ - getWebACL(params: WAF.Types.GetWebACLRequest, callback?: (err: AWSError, data: WAF.Types.GetWebACLResponse) => void): Request; - /** - * Returns the WebACL that is specified by WebACLId. - */ - getWebACL(callback?: (err: AWSError, data: WAF.Types.GetWebACLResponse) => void): Request; - /** - * Returns the XssMatchSet that is specified by XssMatchSetId. - */ - getXssMatchSet(params: WAF.Types.GetXssMatchSetRequest, callback?: (err: AWSError, data: WAF.Types.GetXssMatchSetResponse) => void): Request; - /** - * Returns the XssMatchSet that is specified by XssMatchSetId. - */ - getXssMatchSet(callback?: (err: AWSError, data: WAF.Types.GetXssMatchSetResponse) => void): Request; - /** - * Returns an array of ByteMatchSetSummary objects. - */ - listByteMatchSets(params: WAF.Types.ListByteMatchSetsRequest, callback?: (err: AWSError, data: WAF.Types.ListByteMatchSetsResponse) => void): Request; - /** - * Returns an array of ByteMatchSetSummary objects. - */ - listByteMatchSets(callback?: (err: AWSError, data: WAF.Types.ListByteMatchSetsResponse) => void): Request; - /** - * Returns an array of IPSetSummary objects in the response. - */ - listIPSets(params: WAF.Types.ListIPSetsRequest, callback?: (err: AWSError, data: WAF.Types.ListIPSetsResponse) => void): Request; - /** - * Returns an array of IPSetSummary objects in the response. - */ - listIPSets(callback?: (err: AWSError, data: WAF.Types.ListIPSetsResponse) => void): Request; - /** - * Returns an array of RuleSummary objects. - */ - listRateBasedRules(params: WAF.Types.ListRateBasedRulesRequest, callback?: (err: AWSError, data: WAF.Types.ListRateBasedRulesResponse) => void): Request; - /** - * Returns an array of RuleSummary objects. - */ - listRateBasedRules(callback?: (err: AWSError, data: WAF.Types.ListRateBasedRulesResponse) => void): Request; - /** - * Returns an array of RuleSummary objects. - */ - listRules(params: WAF.Types.ListRulesRequest, callback?: (err: AWSError, data: WAF.Types.ListRulesResponse) => void): Request; - /** - * Returns an array of RuleSummary objects. - */ - listRules(callback?: (err: AWSError, data: WAF.Types.ListRulesResponse) => void): Request; - /** - * Returns an array of SizeConstraintSetSummary objects. - */ - listSizeConstraintSets(params: WAF.Types.ListSizeConstraintSetsRequest, callback?: (err: AWSError, data: WAF.Types.ListSizeConstraintSetsResponse) => void): Request; - /** - * Returns an array of SizeConstraintSetSummary objects. - */ - listSizeConstraintSets(callback?: (err: AWSError, data: WAF.Types.ListSizeConstraintSetsResponse) => void): Request; - /** - * Returns an array of SqlInjectionMatchSet objects. - */ - listSqlInjectionMatchSets(params: WAF.Types.ListSqlInjectionMatchSetsRequest, callback?: (err: AWSError, data: WAF.Types.ListSqlInjectionMatchSetsResponse) => void): Request; - /** - * Returns an array of SqlInjectionMatchSet objects. - */ - listSqlInjectionMatchSets(callback?: (err: AWSError, data: WAF.Types.ListSqlInjectionMatchSetsResponse) => void): Request; - /** - * Returns an array of WebACLSummary objects in the response. - */ - listWebACLs(params: WAF.Types.ListWebACLsRequest, callback?: (err: AWSError, data: WAF.Types.ListWebACLsResponse) => void): Request; - /** - * Returns an array of WebACLSummary objects in the response. - */ - listWebACLs(callback?: (err: AWSError, data: WAF.Types.ListWebACLsResponse) => void): Request; - /** - * Returns an array of XssMatchSet objects. - */ - listXssMatchSets(params: WAF.Types.ListXssMatchSetsRequest, callback?: (err: AWSError, data: WAF.Types.ListXssMatchSetsResponse) => void): Request; - /** - * Returns an array of XssMatchSet objects. - */ - listXssMatchSets(callback?: (err: AWSError, data: WAF.Types.ListXssMatchSetsResponse) => void): Request; - /** - * Inserts or deletes ByteMatchTuple objects (filters) in a ByteMatchSet. For each ByteMatchTuple object, you specify the following values: Whether to insert or delete the object from the array. If you want to change a ByteMatchSetUpdate object, you delete the existing object and add a new one. The part of a web request that you want AWS WAF to inspect, such as a query string or the value of the User-Agent header. The bytes (typically a string that corresponds with ASCII characters) that you want AWS WAF to look for. For more information, including how you specify the values for the AWS WAF API and the AWS CLI or SDKs, see TargetString in the ByteMatchTuple data type. Where to look, such as at the beginning or the end of a query string. Whether to perform any conversions on the request, such as converting it to lowercase, before inspecting it for the specified string. For example, you can add a ByteMatchSetUpdate object that matches web requests in which User-Agent headers contain the string BadBot. You can then configure AWS WAF to block those requests. To create and configure a ByteMatchSet, perform the following steps: Create a ByteMatchSet. For more information, see CreateByteMatchSet. Use GetChangeToken to get the change token that you provide in the ChangeToken parameter of an UpdateByteMatchSet request. Submit an UpdateByteMatchSet request to specify the part of the request that you want AWS WAF to inspect (for example, the header or the URI) and the value that you want AWS WAF to watch for. For more information about how to use the AWS WAF API to allow or block HTTP requests, see the AWS WAF Developer Guide. - */ - updateByteMatchSet(params: WAF.Types.UpdateByteMatchSetRequest, callback?: (err: AWSError, data: WAF.Types.UpdateByteMatchSetResponse) => void): Request; - /** - * Inserts or deletes ByteMatchTuple objects (filters) in a ByteMatchSet. For each ByteMatchTuple object, you specify the following values: Whether to insert or delete the object from the array. If you want to change a ByteMatchSetUpdate object, you delete the existing object and add a new one. The part of a web request that you want AWS WAF to inspect, such as a query string or the value of the User-Agent header. The bytes (typically a string that corresponds with ASCII characters) that you want AWS WAF to look for. For more information, including how you specify the values for the AWS WAF API and the AWS CLI or SDKs, see TargetString in the ByteMatchTuple data type. Where to look, such as at the beginning or the end of a query string. Whether to perform any conversions on the request, such as converting it to lowercase, before inspecting it for the specified string. For example, you can add a ByteMatchSetUpdate object that matches web requests in which User-Agent headers contain the string BadBot. You can then configure AWS WAF to block those requests. To create and configure a ByteMatchSet, perform the following steps: Create a ByteMatchSet. For more information, see CreateByteMatchSet. Use GetChangeToken to get the change token that you provide in the ChangeToken parameter of an UpdateByteMatchSet request. Submit an UpdateByteMatchSet request to specify the part of the request that you want AWS WAF to inspect (for example, the header or the URI) and the value that you want AWS WAF to watch for. For more information about how to use the AWS WAF API to allow or block HTTP requests, see the AWS WAF Developer Guide. - */ - updateByteMatchSet(callback?: (err: AWSError, data: WAF.Types.UpdateByteMatchSetResponse) => void): Request; - /** - * Inserts or deletes IPSetDescriptor objects in an IPSet. For each IPSetDescriptor object, you specify the following values: Whether to insert or delete the object from the array. If you want to change an IPSetDescriptor object, you delete the existing object and add a new one. The IP address version, IPv4 or IPv6. The IP address in CIDR notation, for example, 192.0.2.0/24 (for the range of IP addresses from 192.0.2.0 to 192.0.2.255) or 192.0.2.44/32 (for the individual IP address 192.0.2.44). AWS WAF supports /8, /16, /24, and /32 IP address ranges for IPv4, and /24, /32, /48, /56, /64 and /128 for IPv6. For more information about CIDR notation, see the Wikipedia entry Classless Inter-Domain Routing. IPv6 addresses can be represented using any of the following formats: 1111:0000:0000:0000:0000:0000:0000:0111/128 1111:0:0:0:0:0:0:0111/128 1111::0111/128 1111::111/128 You use an IPSet to specify which web requests you want to allow or block based on the IP addresses that the requests originated from. For example, if you're receiving a lot of requests from one or a small number of IP addresses and you want to block the requests, you can create an IPSet that specifies those IP addresses, and then configure AWS WAF to block the requests. To create and configure an IPSet, perform the following steps: Submit a CreateIPSet request. Use GetChangeToken to get the change token that you provide in the ChangeToken parameter of an UpdateIPSet request. Submit an UpdateIPSet request to specify the IP addresses that you want AWS WAF to watch for. When you update an IPSet, you specify the IP addresses that you want to add and/or the IP addresses that you want to delete. If you want to change an IP address, you delete the existing IP address and add the new one. For more information about how to use the AWS WAF API to allow or block HTTP requests, see the AWS WAF Developer Guide. - */ - updateIPSet(params: WAF.Types.UpdateIPSetRequest, callback?: (err: AWSError, data: WAF.Types.UpdateIPSetResponse) => void): Request; - /** - * Inserts or deletes IPSetDescriptor objects in an IPSet. For each IPSetDescriptor object, you specify the following values: Whether to insert or delete the object from the array. If you want to change an IPSetDescriptor object, you delete the existing object and add a new one. The IP address version, IPv4 or IPv6. The IP address in CIDR notation, for example, 192.0.2.0/24 (for the range of IP addresses from 192.0.2.0 to 192.0.2.255) or 192.0.2.44/32 (for the individual IP address 192.0.2.44). AWS WAF supports /8, /16, /24, and /32 IP address ranges for IPv4, and /24, /32, /48, /56, /64 and /128 for IPv6. For more information about CIDR notation, see the Wikipedia entry Classless Inter-Domain Routing. IPv6 addresses can be represented using any of the following formats: 1111:0000:0000:0000:0000:0000:0000:0111/128 1111:0:0:0:0:0:0:0111/128 1111::0111/128 1111::111/128 You use an IPSet to specify which web requests you want to allow or block based on the IP addresses that the requests originated from. For example, if you're receiving a lot of requests from one or a small number of IP addresses and you want to block the requests, you can create an IPSet that specifies those IP addresses, and then configure AWS WAF to block the requests. To create and configure an IPSet, perform the following steps: Submit a CreateIPSet request. Use GetChangeToken to get the change token that you provide in the ChangeToken parameter of an UpdateIPSet request. Submit an UpdateIPSet request to specify the IP addresses that you want AWS WAF to watch for. When you update an IPSet, you specify the IP addresses that you want to add and/or the IP addresses that you want to delete. If you want to change an IP address, you delete the existing IP address and add the new one. For more information about how to use the AWS WAF API to allow or block HTTP requests, see the AWS WAF Developer Guide. - */ - updateIPSet(callback?: (err: AWSError, data: WAF.Types.UpdateIPSetResponse) => void): Request; - /** - * Inserts or deletes Predicate objects in a rule and updates the RateLimit in the rule. Each Predicate object identifies a predicate, such as a ByteMatchSet or an IPSet, that specifies the web requests that you want to block or count. The RateLimit specifies the number of requests every five minutes that triggers the rule. If you add more than one predicate to a RateBasedRule, a request must match all the predicates and exceed the RateLimit to be counted or blocked. For example, suppose you add the following to a RateBasedRule: An IPSet that matches the IP address 192.0.2.44/32 A ByteMatchSet that matches BadBot in the User-Agent header Further, you specify a RateLimit of 15,000. You then add the RateBasedRule to a WebACL and specify that you want to block requests that satisfy the rule. For a request to be blocked, it must come from the IP address 192.0.2.44 and the User-Agent header in the request must contain the value BadBot. Further, requests that match these two conditions much be received at a rate of more than 15,000 every five minutes. If the rate drops below this limit, AWS WAF no longer blocks the requests. As a second example, suppose you want to limit requests to a particular page on your site. To do this, you could add the following to a RateBasedRule: A ByteMatchSet with FieldToMatch of URI A PositionalConstraint of STARTS_WITH A TargetString of login Further, you specify a RateLimit of 15,000. By adding this RateBasedRule to a WebACL, you could limit requests to your login page without affecting the rest of your site. - */ - updateRateBasedRule(params: WAF.Types.UpdateRateBasedRuleRequest, callback?: (err: AWSError, data: WAF.Types.UpdateRateBasedRuleResponse) => void): Request; - /** - * Inserts or deletes Predicate objects in a rule and updates the RateLimit in the rule. Each Predicate object identifies a predicate, such as a ByteMatchSet or an IPSet, that specifies the web requests that you want to block or count. The RateLimit specifies the number of requests every five minutes that triggers the rule. If you add more than one predicate to a RateBasedRule, a request must match all the predicates and exceed the RateLimit to be counted or blocked. For example, suppose you add the following to a RateBasedRule: An IPSet that matches the IP address 192.0.2.44/32 A ByteMatchSet that matches BadBot in the User-Agent header Further, you specify a RateLimit of 15,000. You then add the RateBasedRule to a WebACL and specify that you want to block requests that satisfy the rule. For a request to be blocked, it must come from the IP address 192.0.2.44 and the User-Agent header in the request must contain the value BadBot. Further, requests that match these two conditions much be received at a rate of more than 15,000 every five minutes. If the rate drops below this limit, AWS WAF no longer blocks the requests. As a second example, suppose you want to limit requests to a particular page on your site. To do this, you could add the following to a RateBasedRule: A ByteMatchSet with FieldToMatch of URI A PositionalConstraint of STARTS_WITH A TargetString of login Further, you specify a RateLimit of 15,000. By adding this RateBasedRule to a WebACL, you could limit requests to your login page without affecting the rest of your site. - */ - updateRateBasedRule(callback?: (err: AWSError, data: WAF.Types.UpdateRateBasedRuleResponse) => void): Request; - /** - * Inserts or deletes Predicate objects in a Rule. Each Predicate object identifies a predicate, such as a ByteMatchSet or an IPSet, that specifies the web requests that you want to allow, block, or count. If you add more than one predicate to a Rule, a request must match all of the specifications to be allowed, blocked, or counted. For example, suppose you add the following to a Rule: A ByteMatchSet that matches the value BadBot in the User-Agent header An IPSet that matches the IP address 192.0.2.44 You then add the Rule to a WebACL and specify that you want to block requests that satisfy the Rule. For a request to be blocked, the User-Agent header in the request must contain the value BadBot and the request must originate from the IP address 192.0.2.44. To create and configure a Rule, perform the following steps: Create and update the predicates that you want to include in the Rule. Create the Rule. See CreateRule. Use GetChangeToken to get the change token that you provide in the ChangeToken parameter of an UpdateRule request. Submit an UpdateRule request to add predicates to the Rule. Create and update a WebACL that contains the Rule. See CreateWebACL. If you want to replace one ByteMatchSet or IPSet with another, you delete the existing one and add the new one. For more information about how to use the AWS WAF API to allow or block HTTP requests, see the AWS WAF Developer Guide. - */ - updateRule(params: WAF.Types.UpdateRuleRequest, callback?: (err: AWSError, data: WAF.Types.UpdateRuleResponse) => void): Request; - /** - * Inserts or deletes Predicate objects in a Rule. Each Predicate object identifies a predicate, such as a ByteMatchSet or an IPSet, that specifies the web requests that you want to allow, block, or count. If you add more than one predicate to a Rule, a request must match all of the specifications to be allowed, blocked, or counted. For example, suppose you add the following to a Rule: A ByteMatchSet that matches the value BadBot in the User-Agent header An IPSet that matches the IP address 192.0.2.44 You then add the Rule to a WebACL and specify that you want to block requests that satisfy the Rule. For a request to be blocked, the User-Agent header in the request must contain the value BadBot and the request must originate from the IP address 192.0.2.44. To create and configure a Rule, perform the following steps: Create and update the predicates that you want to include in the Rule. Create the Rule. See CreateRule. Use GetChangeToken to get the change token that you provide in the ChangeToken parameter of an UpdateRule request. Submit an UpdateRule request to add predicates to the Rule. Create and update a WebACL that contains the Rule. See CreateWebACL. If you want to replace one ByteMatchSet or IPSet with another, you delete the existing one and add the new one. For more information about how to use the AWS WAF API to allow or block HTTP requests, see the AWS WAF Developer Guide. - */ - updateRule(callback?: (err: AWSError, data: WAF.Types.UpdateRuleResponse) => void): Request; - /** - * Inserts or deletes SizeConstraint objects (filters) in a SizeConstraintSet. For each SizeConstraint object, you specify the following values: Whether to insert or delete the object from the array. If you want to change a SizeConstraintSetUpdate object, you delete the existing object and add a new one. The part of a web request that you want AWS WAF to evaluate, such as the length of a query string or the length of the User-Agent header. Whether to perform any transformations on the request, such as converting it to lowercase, before checking its length. Note that transformations of the request body are not supported because the AWS resource forwards only the first 8192 bytes of your request to AWS WAF. A ComparisonOperator used for evaluating the selected part of the request against the specified Size, such as equals, greater than, less than, and so on. The length, in bytes, that you want AWS WAF to watch for in selected part of the request. The length is computed after applying the transformation. For example, you can add a SizeConstraintSetUpdate object that matches web requests in which the length of the User-Agent header is greater than 100 bytes. You can then configure AWS WAF to block those requests. To create and configure a SizeConstraintSet, perform the following steps: Create a SizeConstraintSet. For more information, see CreateSizeConstraintSet. Use GetChangeToken to get the change token that you provide in the ChangeToken parameter of an UpdateSizeConstraintSet request. Submit an UpdateSizeConstraintSet request to specify the part of the request that you want AWS WAF to inspect (for example, the header or the URI) and the value that you want AWS WAF to watch for. For more information about how to use the AWS WAF API to allow or block HTTP requests, see the AWS WAF Developer Guide. - */ - updateSizeConstraintSet(params: WAF.Types.UpdateSizeConstraintSetRequest, callback?: (err: AWSError, data: WAF.Types.UpdateSizeConstraintSetResponse) => void): Request; - /** - * Inserts or deletes SizeConstraint objects (filters) in a SizeConstraintSet. For each SizeConstraint object, you specify the following values: Whether to insert or delete the object from the array. If you want to change a SizeConstraintSetUpdate object, you delete the existing object and add a new one. The part of a web request that you want AWS WAF to evaluate, such as the length of a query string or the length of the User-Agent header. Whether to perform any transformations on the request, such as converting it to lowercase, before checking its length. Note that transformations of the request body are not supported because the AWS resource forwards only the first 8192 bytes of your request to AWS WAF. A ComparisonOperator used for evaluating the selected part of the request against the specified Size, such as equals, greater than, less than, and so on. The length, in bytes, that you want AWS WAF to watch for in selected part of the request. The length is computed after applying the transformation. For example, you can add a SizeConstraintSetUpdate object that matches web requests in which the length of the User-Agent header is greater than 100 bytes. You can then configure AWS WAF to block those requests. To create and configure a SizeConstraintSet, perform the following steps: Create a SizeConstraintSet. For more information, see CreateSizeConstraintSet. Use GetChangeToken to get the change token that you provide in the ChangeToken parameter of an UpdateSizeConstraintSet request. Submit an UpdateSizeConstraintSet request to specify the part of the request that you want AWS WAF to inspect (for example, the header or the URI) and the value that you want AWS WAF to watch for. For more information about how to use the AWS WAF API to allow or block HTTP requests, see the AWS WAF Developer Guide. - */ - updateSizeConstraintSet(callback?: (err: AWSError, data: WAF.Types.UpdateSizeConstraintSetResponse) => void): Request; - /** - * Inserts or deletes SqlInjectionMatchTuple objects (filters) in a SqlInjectionMatchSet. For each SqlInjectionMatchTuple object, you specify the following values: Action: Whether to insert the object into or delete the object from the array. To change a SqlInjectionMatchTuple, you delete the existing object and add a new one. FieldToMatch: The part of web requests that you want AWS WAF to inspect and, if you want AWS WAF to inspect a header, the name of the header. TextTransformation: Which text transformation, if any, to perform on the web request before inspecting the request for snippets of malicious SQL code. You use SqlInjectionMatchSet objects to specify which CloudFront requests you want to allow, block, or count. For example, if you're receiving requests that contain snippets of SQL code in the query string and you want to block the requests, you can create a SqlInjectionMatchSet with the applicable settings, and then configure AWS WAF to block the requests. To create and configure a SqlInjectionMatchSet, perform the following steps: Submit a CreateSqlInjectionMatchSet request. Use GetChangeToken to get the change token that you provide in the ChangeToken parameter of an UpdateIPSet request. Submit an UpdateSqlInjectionMatchSet request to specify the parts of web requests that you want AWS WAF to inspect for snippets of SQL code. For more information about how to use the AWS WAF API to allow or block HTTP requests, see the AWS WAF Developer Guide. - */ - updateSqlInjectionMatchSet(params: WAF.Types.UpdateSqlInjectionMatchSetRequest, callback?: (err: AWSError, data: WAF.Types.UpdateSqlInjectionMatchSetResponse) => void): Request; - /** - * Inserts or deletes SqlInjectionMatchTuple objects (filters) in a SqlInjectionMatchSet. For each SqlInjectionMatchTuple object, you specify the following values: Action: Whether to insert the object into or delete the object from the array. To change a SqlInjectionMatchTuple, you delete the existing object and add a new one. FieldToMatch: The part of web requests that you want AWS WAF to inspect and, if you want AWS WAF to inspect a header, the name of the header. TextTransformation: Which text transformation, if any, to perform on the web request before inspecting the request for snippets of malicious SQL code. You use SqlInjectionMatchSet objects to specify which CloudFront requests you want to allow, block, or count. For example, if you're receiving requests that contain snippets of SQL code in the query string and you want to block the requests, you can create a SqlInjectionMatchSet with the applicable settings, and then configure AWS WAF to block the requests. To create and configure a SqlInjectionMatchSet, perform the following steps: Submit a CreateSqlInjectionMatchSet request. Use GetChangeToken to get the change token that you provide in the ChangeToken parameter of an UpdateIPSet request. Submit an UpdateSqlInjectionMatchSet request to specify the parts of web requests that you want AWS WAF to inspect for snippets of SQL code. For more information about how to use the AWS WAF API to allow or block HTTP requests, see the AWS WAF Developer Guide. - */ - updateSqlInjectionMatchSet(callback?: (err: AWSError, data: WAF.Types.UpdateSqlInjectionMatchSetResponse) => void): Request; - /** - * Inserts or deletes ActivatedRule objects in a WebACL. Each Rule identifies web requests that you want to allow, block, or count. When you update a WebACL, you specify the following values: A default action for the WebACL, either ALLOW or BLOCK. AWS WAF performs the default action if a request doesn't match the criteria in any of the Rules in a WebACL. The Rules that you want to add and/or delete. If you want to replace one Rule with another, you delete the existing Rule and add the new one. For each Rule, whether you want AWS WAF to allow requests, block requests, or count requests that match the conditions in the Rule. The order in which you want AWS WAF to evaluate the Rules in a WebACL. If you add more than one Rule to a WebACL, AWS WAF evaluates each request against the Rules in order based on the value of Priority. (The Rule that has the lowest value for Priority is evaluated first.) When a web request matches all of the predicates (such as ByteMatchSets and IPSets) in a Rule, AWS WAF immediately takes the corresponding action, allow or block, and doesn't evaluate the request against the remaining Rules in the WebACL, if any. To create and configure a WebACL, perform the following steps: Create and update the predicates that you want to include in Rules. For more information, see CreateByteMatchSet, UpdateByteMatchSet, CreateIPSet, UpdateIPSet, CreateSqlInjectionMatchSet, and UpdateSqlInjectionMatchSet. Create and update the Rules that you want to include in the WebACL. For more information, see CreateRule and UpdateRule. Create a WebACL. See CreateWebACL. Use GetChangeToken to get the change token that you provide in the ChangeToken parameter of an UpdateWebACL request. Submit an UpdateWebACL request to specify the Rules that you want to include in the WebACL, to specify the default action, and to associate the WebACL with a CloudFront distribution. Be aware that if you try to add a RATE_BASED rule to a web ACL without setting the rule type when first creating the rule, the UpdateWebACL request will fail because the request tries to add a REGULAR rule (the default rule type) with the specified ID, which does not exist. For more information about how to use the AWS WAF API to allow or block HTTP requests, see the AWS WAF Developer Guide. - */ - updateWebACL(params: WAF.Types.UpdateWebACLRequest, callback?: (err: AWSError, data: WAF.Types.UpdateWebACLResponse) => void): Request; - /** - * Inserts or deletes ActivatedRule objects in a WebACL. Each Rule identifies web requests that you want to allow, block, or count. When you update a WebACL, you specify the following values: A default action for the WebACL, either ALLOW or BLOCK. AWS WAF performs the default action if a request doesn't match the criteria in any of the Rules in a WebACL. The Rules that you want to add and/or delete. If you want to replace one Rule with another, you delete the existing Rule and add the new one. For each Rule, whether you want AWS WAF to allow requests, block requests, or count requests that match the conditions in the Rule. The order in which you want AWS WAF to evaluate the Rules in a WebACL. If you add more than one Rule to a WebACL, AWS WAF evaluates each request against the Rules in order based on the value of Priority. (The Rule that has the lowest value for Priority is evaluated first.) When a web request matches all of the predicates (such as ByteMatchSets and IPSets) in a Rule, AWS WAF immediately takes the corresponding action, allow or block, and doesn't evaluate the request against the remaining Rules in the WebACL, if any. To create and configure a WebACL, perform the following steps: Create and update the predicates that you want to include in Rules. For more information, see CreateByteMatchSet, UpdateByteMatchSet, CreateIPSet, UpdateIPSet, CreateSqlInjectionMatchSet, and UpdateSqlInjectionMatchSet. Create and update the Rules that you want to include in the WebACL. For more information, see CreateRule and UpdateRule. Create a WebACL. See CreateWebACL. Use GetChangeToken to get the change token that you provide in the ChangeToken parameter of an UpdateWebACL request. Submit an UpdateWebACL request to specify the Rules that you want to include in the WebACL, to specify the default action, and to associate the WebACL with a CloudFront distribution. Be aware that if you try to add a RATE_BASED rule to a web ACL without setting the rule type when first creating the rule, the UpdateWebACL request will fail because the request tries to add a REGULAR rule (the default rule type) with the specified ID, which does not exist. For more information about how to use the AWS WAF API to allow or block HTTP requests, see the AWS WAF Developer Guide. - */ - updateWebACL(callback?: (err: AWSError, data: WAF.Types.UpdateWebACLResponse) => void): Request; - /** - * Inserts or deletes XssMatchTuple objects (filters) in an XssMatchSet. For each XssMatchTuple object, you specify the following values: Action: Whether to insert the object into or delete the object from the array. To change a XssMatchTuple, you delete the existing object and add a new one. FieldToMatch: The part of web requests that you want AWS WAF to inspect and, if you want AWS WAF to inspect a header, the name of the header. TextTransformation: Which text transformation, if any, to perform on the web request before inspecting the request for cross-site scripting attacks. You use XssMatchSet objects to specify which CloudFront requests you want to allow, block, or count. For example, if you're receiving requests that contain cross-site scripting attacks in the request body and you want to block the requests, you can create an XssMatchSet with the applicable settings, and then configure AWS WAF to block the requests. To create and configure an XssMatchSet, perform the following steps: Submit a CreateXssMatchSet request. Use GetChangeToken to get the change token that you provide in the ChangeToken parameter of an UpdateIPSet request. Submit an UpdateXssMatchSet request to specify the parts of web requests that you want AWS WAF to inspect for cross-site scripting attacks. For more information about how to use the AWS WAF API to allow or block HTTP requests, see the AWS WAF Developer Guide. - */ - updateXssMatchSet(params: WAF.Types.UpdateXssMatchSetRequest, callback?: (err: AWSError, data: WAF.Types.UpdateXssMatchSetResponse) => void): Request; - /** - * Inserts or deletes XssMatchTuple objects (filters) in an XssMatchSet. For each XssMatchTuple object, you specify the following values: Action: Whether to insert the object into or delete the object from the array. To change a XssMatchTuple, you delete the existing object and add a new one. FieldToMatch: The part of web requests that you want AWS WAF to inspect and, if you want AWS WAF to inspect a header, the name of the header. TextTransformation: Which text transformation, if any, to perform on the web request before inspecting the request for cross-site scripting attacks. You use XssMatchSet objects to specify which CloudFront requests you want to allow, block, or count. For example, if you're receiving requests that contain cross-site scripting attacks in the request body and you want to block the requests, you can create an XssMatchSet with the applicable settings, and then configure AWS WAF to block the requests. To create and configure an XssMatchSet, perform the following steps: Submit a CreateXssMatchSet request. Use GetChangeToken to get the change token that you provide in the ChangeToken parameter of an UpdateIPSet request. Submit an UpdateXssMatchSet request to specify the parts of web requests that you want AWS WAF to inspect for cross-site scripting attacks. For more information about how to use the AWS WAF API to allow or block HTTP requests, see the AWS WAF Developer Guide. - */ - updateXssMatchSet(callback?: (err: AWSError, data: WAF.Types.UpdateXssMatchSetResponse) => void): Request; -} -declare namespace WAF { - export type Action = string; - export interface ActivatedRule { - /** - * Specifies the order in which the Rules in a WebACL are evaluated. Rules with a lower value for Priority are evaluated before Rules with a higher value. The value must be a unique integer. If you add multiple Rules to a WebACL, the values don't need to be consecutive. - */ - Priority: RulePriority; - /** - * The RuleId for a Rule. You use RuleId to get more information about a Rule (see GetRule), update a Rule (see UpdateRule), insert a Rule into a WebACL or delete a one from a WebACL (see UpdateWebACL), or delete a Rule from AWS WAF (see DeleteRule). RuleId is returned by CreateRule and by ListRules. - */ - RuleId: ResourceId; - /** - * Specifies the action that CloudFront or AWS WAF takes when a web request matches the conditions in the Rule. Valid values for Action include the following: ALLOW: CloudFront responds with the requested object. BLOCK: CloudFront responds with an HTTP 403 (Forbidden) status code. COUNT: AWS WAF increments a counter of requests that match the conditions in the rule and then continues to inspect the web request based on the remaining rules in the web ACL. - */ - Action: WafAction; - /** - * The rule type, either REGULAR, as defined by Rule, or RATE_BASED, as defined by RateBasedRule. The default is REGULAR. Although this field is optional, be aware that if you try to add a RATE_BASED rule to a web ACL without setting the type, the UpdateWebACL request will fail because the request tries to add a REGULAR rule with the specified ID, which does not exist. - */ - Type?: WafRuleType; - } - export type ActivatedRules = ActivatedRule[]; - export interface ByteMatchSet { - /** - * The ByteMatchSetId for a ByteMatchSet. You use ByteMatchSetId to get information about a ByteMatchSet (see GetByteMatchSet), update a ByteMatchSet (see UpdateByteMatchSet), insert a ByteMatchSet into a Rule or delete one from a Rule (see UpdateRule), and delete a ByteMatchSet from AWS WAF (see DeleteByteMatchSet). ByteMatchSetId is returned by CreateByteMatchSet and by ListByteMatchSets. - */ - ByteMatchSetId: ResourceId; - /** - * A friendly name or description of the ByteMatchSet. You can't change Name after you create a ByteMatchSet. - */ - Name?: ResourceName; - /** - * Specifies the bytes (typically a string that corresponds with ASCII characters) that you want AWS WAF to search for in web requests, the location in requests that you want AWS WAF to search, and other settings. - */ - ByteMatchTuples: ByteMatchTuples; - } - export type ByteMatchSetSummaries = ByteMatchSetSummary[]; - export interface ByteMatchSetSummary { - /** - * The ByteMatchSetId for a ByteMatchSet. You use ByteMatchSetId to get information about a ByteMatchSet, update a ByteMatchSet, remove a ByteMatchSet from a Rule, and delete a ByteMatchSet from AWS WAF. ByteMatchSetId is returned by CreateByteMatchSet and by ListByteMatchSets. - */ - ByteMatchSetId: ResourceId; - /** - * A friendly name or description of the ByteMatchSet. You can't change Name after you create a ByteMatchSet. - */ - Name: ResourceName; - } - export interface ByteMatchSetUpdate { - /** - * Specifies whether to insert or delete a ByteMatchTuple. - */ - Action: ChangeAction; - /** - * Information about the part of a web request that you want AWS WAF to inspect and the value that you want AWS WAF to search for. If you specify DELETE for the value of Action, the ByteMatchTuple values must exactly match the values in the ByteMatchTuple that you want to delete from the ByteMatchSet. - */ - ByteMatchTuple: ByteMatchTuple; - } - export type ByteMatchSetUpdates = ByteMatchSetUpdate[]; - export type ByteMatchTargetString = Buffer|Uint8Array|Blob|string; - export interface ByteMatchTuple { - /** - * The part of a web request that you want AWS WAF to search, such as a specified header or a query string. For more information, see FieldToMatch. - */ - FieldToMatch: FieldToMatch; - /** - * The value that you want AWS WAF to search for. AWS WAF searches for the specified string in the part of web requests that you specified in FieldToMatch. The maximum length of the value is 50 bytes. Valid values depend on the values that you specified for FieldToMatch: HEADER: The value that you want AWS WAF to search for in the request header that you specified in FieldToMatch, for example, the value of the User-Agent or Referer header. METHOD: The HTTP method, which indicates the type of operation specified in the request. CloudFront supports the following methods: DELETE, GET, HEAD, OPTIONS, PATCH, POST, and PUT. QUERY_STRING: The value that you want AWS WAF to search for in the query string, which is the part of a URL that appears after a ? character. URI: The value that you want AWS WAF to search for in the part of a URL that identifies a resource, for example, /images/daily-ad.jpg. BODY: The part of a request that contains any additional data that you want to send to your web server as the HTTP request body, such as data from a form. The request body immediately follows the request headers. Note that only the first 8192 bytes of the request body are forwarded to AWS WAF for inspection. To allow or block requests based on the length of the body, you can create a size constraint set. For more information, see CreateSizeConstraintSet. If TargetString includes alphabetic characters A-Z and a-z, note that the value is case sensitive. If you're using the AWS WAF API Specify a base64-encoded version of the value. The maximum length of the value before you base64-encode it is 50 bytes. For example, suppose the value of Type is HEADER and the value of Data is User-Agent. If you want to search the User-Agent header for the value BadBot, you base64-encode BadBot using MIME base64 encoding and include the resulting value, QmFkQm90, in the value of TargetString. If you're using the AWS CLI or one of the AWS SDKs The value that you want AWS WAF to search for. The SDK automatically base64 encodes the value. - */ - TargetString: ByteMatchTargetString; - /** - * Text transformations eliminate some of the unusual formatting that attackers use in web requests in an effort to bypass AWS WAF. If you specify a transformation, AWS WAF performs the transformation on TargetString before inspecting a request for a match. CMD_LINE When you're concerned that attackers are injecting an operating system commandline command and using unusual formatting to disguise some or all of the command, use this option to perform the following transformations: Delete the following characters: \ " ' ^ Delete spaces before the following characters: / ( Replace the following characters with a space: , ; Replace multiple spaces with one space Convert uppercase letters (A-Z) to lowercase (a-z) COMPRESS_WHITE_SPACE Use this option to replace the following characters with a space character (decimal 32): \f, formfeed, decimal 12 \t, tab, decimal 9 \n, newline, decimal 10 \r, carriage return, decimal 13 \v, vertical tab, decimal 11 non-breaking space, decimal 160 COMPRESS_WHITE_SPACE also replaces multiple spaces with one space. HTML_ENTITY_DECODE Use this option to replace HTML-encoded characters with unencoded characters. HTML_ENTITY_DECODE performs the following operations: Replaces (ampersand)quot; with " Replaces (ampersand)nbsp; with a non-breaking space, decimal 160 Replaces (ampersand)lt; with a "less than" symbol Replaces (ampersand)gt; with > Replaces characters that are represented in hexadecimal format, (ampersand)#xhhhh;, with the corresponding characters Replaces characters that are represented in decimal format, (ampersand)#nnnn;, with the corresponding characters LOWERCASE Use this option to convert uppercase letters (A-Z) to lowercase (a-z). URL_DECODE Use this option to decode a URL-encoded value. NONE Specify NONE if you don't want to perform any text transformations. - */ - TextTransformation: TextTransformation; - /** - * Within the portion of a web request that you want to search (for example, in the query string, if any), specify where you want AWS WAF to search. Valid values include the following: CONTAINS The specified part of the web request must include the value of TargetString, but the location doesn't matter. CONTAINS_WORD The specified part of the web request must include the value of TargetString, and TargetString must contain only alphanumeric characters or underscore (A-Z, a-z, 0-9, or _). In addition, TargetString must be a word, which means one of the following: TargetString exactly matches the value of the specified part of the web request, such as the value of a header. TargetString is at the beginning of the specified part of the web request and is followed by a character other than an alphanumeric character or underscore (_), for example, BadBot;. TargetString is at the end of the specified part of the web request and is preceded by a character other than an alphanumeric character or underscore (_), for example, ;BadBot. TargetString is in the middle of the specified part of the web request and is preceded and followed by characters other than alphanumeric characters or underscore (_), for example, -BadBot;. EXACTLY The value of the specified part of the web request must exactly match the value of TargetString. STARTS_WITH The value of TargetString must appear at the beginning of the specified part of the web request. ENDS_WITH The value of TargetString must appear at the end of the specified part of the web request. - */ - PositionalConstraint: PositionalConstraint; - } - export type ByteMatchTuples = ByteMatchTuple[]; - export type ChangeAction = "INSERT"|"DELETE"|string; - export type ChangeToken = string; - export type ChangeTokenStatus = "PROVISIONED"|"PENDING"|"INSYNC"|string; - export type ComparisonOperator = "EQ"|"NE"|"LE"|"LT"|"GE"|"GT"|string; - export type Country = string; - export interface CreateByteMatchSetRequest { - /** - * A friendly name or description of the ByteMatchSet. You can't change Name after you create a ByteMatchSet. - */ - Name: ResourceName; - /** - * The value returned by the most recent call to GetChangeToken. - */ - ChangeToken: ChangeToken; - } - export interface CreateByteMatchSetResponse { - /** - * A ByteMatchSet that contains no ByteMatchTuple objects. - */ - ByteMatchSet?: ByteMatchSet; - /** - * The ChangeToken that you used to submit the CreateByteMatchSet request. You can also use this value to query the status of the request. For more information, see GetChangeTokenStatus. - */ - ChangeToken?: ChangeToken; - } - export interface CreateIPSetRequest { - /** - * A friendly name or description of the IPSet. You can't change Name after you create the IPSet. - */ - Name: ResourceName; - /** - * The value returned by the most recent call to GetChangeToken. - */ - ChangeToken: ChangeToken; - } - export interface CreateIPSetResponse { - /** - * The IPSet returned in the CreateIPSet response. - */ - IPSet?: IPSet; - /** - * The ChangeToken that you used to submit the CreateIPSet request. You can also use this value to query the status of the request. For more information, see GetChangeTokenStatus. - */ - ChangeToken?: ChangeToken; - } - export interface CreateRateBasedRuleRequest { - /** - * A friendly name or description of the RateBasedRule. You can't change the name of a RateBasedRule after you create it. - */ - Name: ResourceName; - /** - * A friendly name or description for the metrics for this RateBasedRule. The name can contain only alphanumeric characters (A-Z, a-z, 0-9); the name can't contain whitespace. You can't change the name of the metric after you create the RateBasedRule. - */ - MetricName: MetricName; - /** - * The field that AWS WAF uses to determine if requests are likely arriving from a single source and thus subject to rate monitoring. The only valid value for RateKey is IP. IP indicates that requests that arrive from the same IP address are subject to the RateLimit that is specified in the RateBasedRule. - */ - RateKey: RateKey; - /** - * The maximum number of requests, which have an identical value in the field that is specified by RateKey, allowed in a five-minute period. If the number of requests exceeds the RateLimit and the other predicates specified in the rule are also met, AWS WAF triggers the action that is specified for this rule. - */ - RateLimit: RateLimit; - /** - * The ChangeToken that you used to submit the CreateRateBasedRule request. You can also use this value to query the status of the request. For more information, see GetChangeTokenStatus. - */ - ChangeToken: ChangeToken; - } - export interface CreateRateBasedRuleResponse { - /** - * The RateBasedRule that is returned in the CreateRateBasedRule response. - */ - Rule?: RateBasedRule; - /** - * The ChangeToken that you used to submit the CreateRateBasedRule request. You can also use this value to query the status of the request. For more information, see GetChangeTokenStatus. - */ - ChangeToken?: ChangeToken; - } - export interface CreateRuleRequest { - /** - * A friendly name or description of the Rule. You can't change the name of a Rule after you create it. - */ - Name: ResourceName; - /** - * A friendly name or description for the metrics for this Rule. The name can contain only alphanumeric characters (A-Z, a-z, 0-9); the name can't contain whitespace. You can't change the name of the metric after you create the Rule. - */ - MetricName: MetricName; - /** - * The value returned by the most recent call to GetChangeToken. - */ - ChangeToken: ChangeToken; - } - export interface CreateRuleResponse { - /** - * The Rule returned in the CreateRule response. - */ - Rule?: Rule; - /** - * The ChangeToken that you used to submit the CreateRule request. You can also use this value to query the status of the request. For more information, see GetChangeTokenStatus. - */ - ChangeToken?: ChangeToken; - } - export interface CreateSizeConstraintSetRequest { - /** - * A friendly name or description of the SizeConstraintSet. You can't change Name after you create a SizeConstraintSet. - */ - Name: ResourceName; - /** - * The value returned by the most recent call to GetChangeToken. - */ - ChangeToken: ChangeToken; - } - export interface CreateSizeConstraintSetResponse { - /** - * A SizeConstraintSet that contains no SizeConstraint objects. - */ - SizeConstraintSet?: SizeConstraintSet; - /** - * The ChangeToken that you used to submit the CreateSizeConstraintSet request. You can also use this value to query the status of the request. For more information, see GetChangeTokenStatus. - */ - ChangeToken?: ChangeToken; - } - export interface CreateSqlInjectionMatchSetRequest { - /** - * A friendly name or description for the SqlInjectionMatchSet that you're creating. You can't change Name after you create the SqlInjectionMatchSet. - */ - Name: ResourceName; - /** - * The value returned by the most recent call to GetChangeToken. - */ - ChangeToken: ChangeToken; - } - export interface CreateSqlInjectionMatchSetResponse { - /** - * A SqlInjectionMatchSet. - */ - SqlInjectionMatchSet?: SqlInjectionMatchSet; - /** - * The ChangeToken that you used to submit the CreateSqlInjectionMatchSet request. You can also use this value to query the status of the request. For more information, see GetChangeTokenStatus. - */ - ChangeToken?: ChangeToken; - } - export interface CreateWebACLRequest { - /** - * A friendly name or description of the WebACL. You can't change Name after you create the WebACL. - */ - Name: ResourceName; - /** - * A friendly name or description for the metrics for this WebACL. The name can contain only alphanumeric characters (A-Z, a-z, 0-9); the name can't contain whitespace. You can't change MetricName after you create the WebACL. - */ - MetricName: MetricName; - /** - * The action that you want AWS WAF to take when a request doesn't match the criteria specified in any of the Rule objects that are associated with the WebACL. - */ - DefaultAction: WafAction; - /** - * The value returned by the most recent call to GetChangeToken. - */ - ChangeToken: ChangeToken; - } - export interface CreateWebACLResponse { - /** - * The WebACL returned in the CreateWebACL response. - */ - WebACL?: WebACL; - /** - * The ChangeToken that you used to submit the CreateWebACL request. You can also use this value to query the status of the request. For more information, see GetChangeTokenStatus. - */ - ChangeToken?: ChangeToken; - } - export interface CreateXssMatchSetRequest { - /** - * A friendly name or description for the XssMatchSet that you're creating. You can't change Name after you create the XssMatchSet. - */ - Name: ResourceName; - /** - * The value returned by the most recent call to GetChangeToken. - */ - ChangeToken: ChangeToken; - } - export interface CreateXssMatchSetResponse { - /** - * An XssMatchSet. - */ - XssMatchSet?: XssMatchSet; - /** - * The ChangeToken that you used to submit the CreateXssMatchSet request. You can also use this value to query the status of the request. For more information, see GetChangeTokenStatus. - */ - ChangeToken?: ChangeToken; - } - export interface DeleteByteMatchSetRequest { - /** - * The ByteMatchSetId of the ByteMatchSet that you want to delete. ByteMatchSetId is returned by CreateByteMatchSet and by ListByteMatchSets. - */ - ByteMatchSetId: ResourceId; - /** - * The value returned by the most recent call to GetChangeToken. - */ - ChangeToken: ChangeToken; - } - export interface DeleteByteMatchSetResponse { - /** - * The ChangeToken that you used to submit the DeleteByteMatchSet request. You can also use this value to query the status of the request. For more information, see GetChangeTokenStatus. - */ - ChangeToken?: ChangeToken; - } - export interface DeleteIPSetRequest { - /** - * The IPSetId of the IPSet that you want to delete. IPSetId is returned by CreateIPSet and by ListIPSets. - */ - IPSetId: ResourceId; - /** - * The value returned by the most recent call to GetChangeToken. - */ - ChangeToken: ChangeToken; - } - export interface DeleteIPSetResponse { - /** - * The ChangeToken that you used to submit the DeleteIPSet request. You can also use this value to query the status of the request. For more information, see GetChangeTokenStatus. - */ - ChangeToken?: ChangeToken; - } - export interface DeleteRateBasedRuleRequest { - /** - * The RuleId of the RateBasedRule that you want to delete. RuleId is returned by CreateRateBasedRule and by ListRateBasedRules. - */ - RuleId: ResourceId; - /** - * The value returned by the most recent call to GetChangeToken. - */ - ChangeToken: ChangeToken; - } - export interface DeleteRateBasedRuleResponse { - /** - * The ChangeToken that you used to submit the DeleteRateBasedRule request. You can also use this value to query the status of the request. For more information, see GetChangeTokenStatus. - */ - ChangeToken?: ChangeToken; - } - export interface DeleteRuleRequest { - /** - * The RuleId of the Rule that you want to delete. RuleId is returned by CreateRule and by ListRules. - */ - RuleId: ResourceId; - /** - * The value returned by the most recent call to GetChangeToken. - */ - ChangeToken: ChangeToken; - } - export interface DeleteRuleResponse { - /** - * The ChangeToken that you used to submit the DeleteRule request. You can also use this value to query the status of the request. For more information, see GetChangeTokenStatus. - */ - ChangeToken?: ChangeToken; - } - export interface DeleteSizeConstraintSetRequest { - /** - * The SizeConstraintSetId of the SizeConstraintSet that you want to delete. SizeConstraintSetId is returned by CreateSizeConstraintSet and by ListSizeConstraintSets. - */ - SizeConstraintSetId: ResourceId; - /** - * The value returned by the most recent call to GetChangeToken. - */ - ChangeToken: ChangeToken; - } - export interface DeleteSizeConstraintSetResponse { - /** - * The ChangeToken that you used to submit the DeleteSizeConstraintSet request. You can also use this value to query the status of the request. For more information, see GetChangeTokenStatus. - */ - ChangeToken?: ChangeToken; - } - export interface DeleteSqlInjectionMatchSetRequest { - /** - * The SqlInjectionMatchSetId of the SqlInjectionMatchSet that you want to delete. SqlInjectionMatchSetId is returned by CreateSqlInjectionMatchSet and by ListSqlInjectionMatchSets. - */ - SqlInjectionMatchSetId: ResourceId; - /** - * The value returned by the most recent call to GetChangeToken. - */ - ChangeToken: ChangeToken; - } - export interface DeleteSqlInjectionMatchSetResponse { - /** - * The ChangeToken that you used to submit the DeleteSqlInjectionMatchSet request. You can also use this value to query the status of the request. For more information, see GetChangeTokenStatus. - */ - ChangeToken?: ChangeToken; - } - export interface DeleteWebACLRequest { - /** - * The WebACLId of the WebACL that you want to delete. WebACLId is returned by CreateWebACL and by ListWebACLs. - */ - WebACLId: ResourceId; - /** - * The value returned by the most recent call to GetChangeToken. - */ - ChangeToken: ChangeToken; - } - export interface DeleteWebACLResponse { - /** - * The ChangeToken that you used to submit the DeleteWebACL request. You can also use this value to query the status of the request. For more information, see GetChangeTokenStatus. - */ - ChangeToken?: ChangeToken; - } - export interface DeleteXssMatchSetRequest { - /** - * The XssMatchSetId of the XssMatchSet that you want to delete. XssMatchSetId is returned by CreateXssMatchSet and by ListXssMatchSets. - */ - XssMatchSetId: ResourceId; - /** - * The value returned by the most recent call to GetChangeToken. - */ - ChangeToken: ChangeToken; - } - export interface DeleteXssMatchSetResponse { - /** - * The ChangeToken that you used to submit the DeleteXssMatchSet request. You can also use this value to query the status of the request. For more information, see GetChangeTokenStatus. - */ - ChangeToken?: ChangeToken; - } - export interface FieldToMatch { - /** - * The part of the web request that you want AWS WAF to search for a specified string. Parts of a request that you can search include the following: HEADER: A specified request header, for example, the value of the User-Agent or Referer header. If you choose HEADER for the type, specify the name of the header in Data. METHOD: The HTTP method, which indicated the type of operation that the request is asking the origin to perform. Amazon CloudFront supports the following methods: DELETE, GET, HEAD, OPTIONS, PATCH, POST, and PUT. QUERY_STRING: A query string, which is the part of a URL that appears after a ? character, if any. URI: The part of a web request that identifies a resource, for example, /images/daily-ad.jpg. BODY: The part of a request that contains any additional data that you want to send to your web server as the HTTP request body, such as data from a form. The request body immediately follows the request headers. Note that only the first 8192 bytes of the request body are forwarded to AWS WAF for inspection. To allow or block requests based on the length of the body, you can create a size constraint set. For more information, see CreateSizeConstraintSet. - */ - Type: MatchFieldType; - /** - * When the value of Type is HEADER, enter the name of the header that you want AWS WAF to search, for example, User-Agent or Referer. If the value of Type is any other value, omit Data. The name of the header is not case sensitive. - */ - Data?: MatchFieldData; - } - export interface GetByteMatchSetRequest { - /** - * The ByteMatchSetId of the ByteMatchSet that you want to get. ByteMatchSetId is returned by CreateByteMatchSet and by ListByteMatchSets. - */ - ByteMatchSetId: ResourceId; - } - export interface GetByteMatchSetResponse { - /** - * Information about the ByteMatchSet that you specified in the GetByteMatchSet request. For more information, see the following topics: ByteMatchSet: Contains ByteMatchSetId, ByteMatchTuples, and Name ByteMatchTuples: Contains an array of ByteMatchTuple objects. Each ByteMatchTuple object contains FieldToMatch, PositionalConstraint, TargetString, and TextTransformation FieldToMatch: Contains Data and Type - */ - ByteMatchSet?: ByteMatchSet; - } - export interface GetChangeTokenRequest { - } - export interface GetChangeTokenResponse { - /** - * The ChangeToken that you used in the request. Use this value in a GetChangeTokenStatus request to get the current status of the request. - */ - ChangeToken?: ChangeToken; - } - export interface GetChangeTokenStatusRequest { - /** - * The change token for which you want to get the status. This change token was previously returned in the GetChangeToken response. - */ - ChangeToken: ChangeToken; - } - export interface GetChangeTokenStatusResponse { - /** - * The status of the change token. - */ - ChangeTokenStatus?: ChangeTokenStatus; - } - export interface GetIPSetRequest { - /** - * The IPSetId of the IPSet that you want to get. IPSetId is returned by CreateIPSet and by ListIPSets. - */ - IPSetId: ResourceId; - } - export interface GetIPSetResponse { - /** - * Information about the IPSet that you specified in the GetIPSet request. For more information, see the following topics: IPSet: Contains IPSetDescriptors, IPSetId, and Name IPSetDescriptors: Contains an array of IPSetDescriptor objects. Each IPSetDescriptor object contains Type and Value - */ - IPSet?: IPSet; - } - export interface GetRateBasedRuleManagedKeysRequest { - /** - * The RuleId of the RateBasedRule for which you want to get a list of ManagedKeys. RuleId is returned by CreateRateBasedRule and by ListRateBasedRules. - */ - RuleId: ResourceId; - /** - * A null value and not currently used. Do not include this in your request. - */ - NextMarker?: NextMarker; - } - export interface GetRateBasedRuleManagedKeysResponse { - /** - * An array of IP addresses that currently are blocked by the specified RateBasedRule. - */ - ManagedKeys?: ManagedKeys; - /** - * A null value and not currently used. - */ - NextMarker?: NextMarker; - } - export interface GetRateBasedRuleRequest { - /** - * The RuleId of the RateBasedRule that you want to get. RuleId is returned by CreateRateBasedRule and by ListRateBasedRules. - */ - RuleId: ResourceId; - } - export interface GetRateBasedRuleResponse { - /** - * Information about the RateBasedRule that you specified in the GetRateBasedRule request. - */ - Rule?: RateBasedRule; - } - export interface GetRuleRequest { - /** - * The RuleId of the Rule that you want to get. RuleId is returned by CreateRule and by ListRules. - */ - RuleId: ResourceId; - } - export interface GetRuleResponse { - /** - * Information about the Rule that you specified in the GetRule request. For more information, see the following topics: Rule: Contains MetricName, Name, an array of Predicate objects, and RuleId Predicate: Each Predicate object contains DataId, Negated, and Type - */ - Rule?: Rule; - } - export type GetSampledRequestsMaxItems = number; - export interface GetSampledRequestsRequest { - /** - * The WebACLId of the WebACL for which you want GetSampledRequests to return a sample of requests. - */ - WebAclId: ResourceId; - /** - * RuleId is one of two values: The RuleId of the Rule for which you want GetSampledRequests to return a sample of requests. Default_Action, which causes GetSampledRequests to return a sample of the requests that didn't match any of the rules in the specified WebACL. - */ - RuleId: ResourceId; - /** - * The start date and time and the end date and time of the range for which you want GetSampledRequests to return a sample of requests. Specify the date and time in the following format: "2016-09-27T14:50Z". You can specify any time range in the previous three hours. - */ - TimeWindow: TimeWindow; - /** - * The number of requests that you want AWS WAF to return from among the first 5,000 requests that your AWS resource received during the time range. If your resource received fewer requests than the value of MaxItems, GetSampledRequests returns information about all of them. - */ - MaxItems: GetSampledRequestsMaxItems; - } - export interface GetSampledRequestsResponse { - /** - * A complex type that contains detailed information about each of the requests in the sample. - */ - SampledRequests?: SampledHTTPRequests; - /** - * The total number of requests from which GetSampledRequests got a sample of MaxItems requests. If PopulationSize is less than MaxItems, the sample includes every request that your AWS resource received during the specified time range. - */ - PopulationSize?: PopulationSize; - /** - * Usually, TimeWindow is the time range that you specified in the GetSampledRequests request. However, if your AWS resource received more than 5,000 requests during the time range that you specified in the request, GetSampledRequests returns the time range for the first 5,000 requests. - */ - TimeWindow?: TimeWindow; - } - export interface GetSizeConstraintSetRequest { - /** - * The SizeConstraintSetId of the SizeConstraintSet that you want to get. SizeConstraintSetId is returned by CreateSizeConstraintSet and by ListSizeConstraintSets. - */ - SizeConstraintSetId: ResourceId; - } - export interface GetSizeConstraintSetResponse { - /** - * Information about the SizeConstraintSet that you specified in the GetSizeConstraintSet request. For more information, see the following topics: SizeConstraintSet: Contains SizeConstraintSetId, SizeConstraints, and Name SizeConstraints: Contains an array of SizeConstraint objects. Each SizeConstraint object contains FieldToMatch, TextTransformation, ComparisonOperator, and Size FieldToMatch: Contains Data and Type - */ - SizeConstraintSet?: SizeConstraintSet; - } - export interface GetSqlInjectionMatchSetRequest { - /** - * The SqlInjectionMatchSetId of the SqlInjectionMatchSet that you want to get. SqlInjectionMatchSetId is returned by CreateSqlInjectionMatchSet and by ListSqlInjectionMatchSets. - */ - SqlInjectionMatchSetId: ResourceId; - } - export interface GetSqlInjectionMatchSetResponse { - /** - * Information about the SqlInjectionMatchSet that you specified in the GetSqlInjectionMatchSet request. For more information, see the following topics: SqlInjectionMatchSet: Contains Name, SqlInjectionMatchSetId, and an array of SqlInjectionMatchTuple objects SqlInjectionMatchTuple: Each SqlInjectionMatchTuple object contains FieldToMatch and TextTransformation FieldToMatch: Contains Data and Type - */ - SqlInjectionMatchSet?: SqlInjectionMatchSet; - } - export interface GetWebACLRequest { - /** - * The WebACLId of the WebACL that you want to get. WebACLId is returned by CreateWebACL and by ListWebACLs. - */ - WebACLId: ResourceId; - } - export interface GetWebACLResponse { - /** - * Information about the WebACL that you specified in the GetWebACL request. For more information, see the following topics: WebACL: Contains DefaultAction, MetricName, Name, an array of Rule objects, and WebACLId DefaultAction (Data type is WafAction): Contains Type Rules: Contains an array of ActivatedRule objects, which contain Action, Priority, and RuleId Action: Contains Type - */ - WebACL?: WebACL; - } - export interface GetXssMatchSetRequest { - /** - * The XssMatchSetId of the XssMatchSet that you want to get. XssMatchSetId is returned by CreateXssMatchSet and by ListXssMatchSets. - */ - XssMatchSetId: ResourceId; - } - export interface GetXssMatchSetResponse { - /** - * Information about the XssMatchSet that you specified in the GetXssMatchSet request. For more information, see the following topics: XssMatchSet: Contains Name, XssMatchSetId, and an array of XssMatchTuple objects XssMatchTuple: Each XssMatchTuple object contains FieldToMatch and TextTransformation FieldToMatch: Contains Data and Type - */ - XssMatchSet?: XssMatchSet; - } - export interface HTTPHeader { - /** - * The name of one of the headers in the sampled web request. - */ - Name?: HeaderName; - /** - * The value of one of the headers in the sampled web request. - */ - Value?: HeaderValue; - } - export type HTTPHeaders = HTTPHeader[]; - export type HTTPMethod = string; - export interface HTTPRequest { - /** - * The IP address that the request originated from. If the WebACL is associated with a CloudFront distribution, this is the value of one of the following fields in CloudFront access logs: c-ip, if the viewer did not use an HTTP proxy or a load balancer to send the request x-forwarded-for, if the viewer did use an HTTP proxy or a load balancer to send the request - */ - ClientIP?: IPString; - /** - * The two-letter country code for the country that the request originated from. For a current list of country codes, see the Wikipedia entry ISO 3166-1 alpha-2. - */ - Country?: Country; - /** - * The part of a web request that identifies the resource, for example, /images/daily-ad.jpg. - */ - URI?: URIString; - /** - * The HTTP method specified in the sampled web request. CloudFront supports the following methods: DELETE, GET, HEAD, OPTIONS, PATCH, POST, and PUT. - */ - Method?: HTTPMethod; - /** - * The HTTP version specified in the sampled web request, for example, HTTP/1.1. - */ - HTTPVersion?: HTTPVersion; - /** - * A complex type that contains two values for each header in the sampled web request: the name of the header and the value of the header. - */ - Headers?: HTTPHeaders; - } - export type HTTPVersion = string; - export type HeaderName = string; - export type HeaderValue = string; - export interface IPSet { - /** - * The IPSetId for an IPSet. You use IPSetId to get information about an IPSet (see GetIPSet), update an IPSet (see UpdateIPSet), insert an IPSet into a Rule or delete one from a Rule (see UpdateRule), and delete an IPSet from AWS WAF (see DeleteIPSet). IPSetId is returned by CreateIPSet and by ListIPSets. - */ - IPSetId: ResourceId; - /** - * A friendly name or description of the IPSet. You can't change the name of an IPSet after you create it. - */ - Name?: ResourceName; - /** - * The IP address type (IPV4 or IPV6) and the IP address range (in CIDR notation) that web requests originate from. If the WebACL is associated with a CloudFront distribution and the viewer did not use an HTTP proxy or a load balancer to send the request, this is the value of the c-ip field in the CloudFront access logs. - */ - IPSetDescriptors: IPSetDescriptors; - } - export interface IPSetDescriptor { - /** - * Specify IPV4 or IPV6. - */ - Type: IPSetDescriptorType; - /** - * Specify an IPv4 address by using CIDR notation. For example: To configure AWS WAF to allow, block, or count requests that originated from the IP address 192.0.2.44, specify 192.0.2.44/32. To configure AWS WAF to allow, block, or count requests that originated from IP addresses from 192.0.2.0 to 192.0.2.255, specify 192.0.2.0/24. For more information about CIDR notation, see the Wikipedia entry Classless Inter-Domain Routing. Specify an IPv6 address by using CIDR notation. For example: To configure AWS WAF to allow, block, or count requests that originated from the IP address 1111:0000:0000:0000:0000:0000:0000:0111, specify 1111:0000:0000:0000:0000:0000:0000:0111/128. To configure AWS WAF to allow, block, or count requests that originated from IP addresses 1111:0000:0000:0000:0000:0000:0000:0000 to 1111:0000:0000:0000:ffff:ffff:ffff:ffff, specify 1111:0000:0000:0000:0000:0000:0000:0000/64. - */ - Value: IPSetDescriptorValue; - } - export type IPSetDescriptorType = "IPV4"|"IPV6"|string; - export type IPSetDescriptorValue = string; - export type IPSetDescriptors = IPSetDescriptor[]; - export type IPSetSummaries = IPSetSummary[]; - export interface IPSetSummary { - /** - * The IPSetId for an IPSet. You can use IPSetId in a GetIPSet request to get detailed information about an IPSet. - */ - IPSetId: ResourceId; - /** - * A friendly name or description of the IPSet. You can't change the name of an IPSet after you create it. - */ - Name: ResourceName; - } - export interface IPSetUpdate { - /** - * Specifies whether to insert or delete an IP address with UpdateIPSet. - */ - Action: ChangeAction; - /** - * The IP address type (IPV4 or IPV6) and the IP address range (in CIDR notation) that web requests originate from. - */ - IPSetDescriptor: IPSetDescriptor; - } - export type IPSetUpdates = IPSetUpdate[]; - export type IPString = string; - export interface ListByteMatchSetsRequest { - /** - * If you specify a value for Limit and you have more ByteMatchSets than the value of Limit, AWS WAF returns a NextMarker value in the response that allows you to list another group of ByteMatchSets. For the second and subsequent ListByteMatchSets requests, specify the value of NextMarker from the previous response to get information about another batch of ByteMatchSets. - */ - NextMarker?: NextMarker; - /** - * Specifies the number of ByteMatchSet objects that you want AWS WAF to return for this request. If you have more ByteMatchSets objects than the number you specify for Limit, the response includes a NextMarker value that you can use to get another batch of ByteMatchSet objects. - */ - Limit?: PaginationLimit; - } - export interface ListByteMatchSetsResponse { - /** - * If you have more ByteMatchSet objects than the number that you specified for Limit in the request, the response includes a NextMarker value. To list more ByteMatchSet objects, submit another ListByteMatchSets request, and specify the NextMarker value from the response in the NextMarker value in the next request. - */ - NextMarker?: NextMarker; - /** - * An array of ByteMatchSetSummary objects. - */ - ByteMatchSets?: ByteMatchSetSummaries; - } - export interface ListIPSetsRequest { - /** - * If you specify a value for Limit and you have more IPSets than the value of Limit, AWS WAF returns a NextMarker value in the response that allows you to list another group of IPSets. For the second and subsequent ListIPSets requests, specify the value of NextMarker from the previous response to get information about another batch of ByteMatchSets. - */ - NextMarker?: NextMarker; - /** - * Specifies the number of IPSet objects that you want AWS WAF to return for this request. If you have more IPSet objects than the number you specify for Limit, the response includes a NextMarker value that you can use to get another batch of IPSet objects. - */ - Limit?: PaginationLimit; - } - export interface ListIPSetsResponse { - /** - * If you have more IPSet objects than the number that you specified for Limit in the request, the response includes a NextMarker value. To list more IPSet objects, submit another ListIPSets request, and specify the NextMarker value from the response in the NextMarker value in the next request. - */ - NextMarker?: NextMarker; - /** - * An array of IPSetSummary objects. - */ - IPSets?: IPSetSummaries; - } - export interface ListRateBasedRulesRequest { - /** - * If you specify a value for Limit and you have more Rules than the value of Limit, AWS WAF returns a NextMarker value in the response that allows you to list another group of Rules. For the second and subsequent ListRateBasedRules requests, specify the value of NextMarker from the previous response to get information about another batch of Rules. - */ - NextMarker?: NextMarker; - /** - * Specifies the number of Rules that you want AWS WAF to return for this request. If you have more Rules than the number that you specify for Limit, the response includes a NextMarker value that you can use to get another batch of Rules. - */ - Limit?: PaginationLimit; - } - export interface ListRateBasedRulesResponse { - /** - * If you have more Rules than the number that you specified for Limit in the request, the response includes a NextMarker value. To list more Rules, submit another ListRateBasedRules request, and specify the NextMarker value from the response in the NextMarker value in the next request. - */ - NextMarker?: NextMarker; - /** - * An array of RuleSummary objects. - */ - Rules?: RuleSummaries; - } - export interface ListRulesRequest { - /** - * If you specify a value for Limit and you have more Rules than the value of Limit, AWS WAF returns a NextMarker value in the response that allows you to list another group of Rules. For the second and subsequent ListRules requests, specify the value of NextMarker from the previous response to get information about another batch of Rules. - */ - NextMarker?: NextMarker; - /** - * Specifies the number of Rules that you want AWS WAF to return for this request. If you have more Rules than the number that you specify for Limit, the response includes a NextMarker value that you can use to get another batch of Rules. - */ - Limit?: PaginationLimit; - } - export interface ListRulesResponse { - /** - * If you have more Rules than the number that you specified for Limit in the request, the response includes a NextMarker value. To list more Rules, submit another ListRules request, and specify the NextMarker value from the response in the NextMarker value in the next request. - */ - NextMarker?: NextMarker; - /** - * An array of RuleSummary objects. - */ - Rules?: RuleSummaries; - } - export interface ListSizeConstraintSetsRequest { - /** - * If you specify a value for Limit and you have more SizeConstraintSets than the value of Limit, AWS WAF returns a NextMarker value in the response that allows you to list another group of SizeConstraintSets. For the second and subsequent ListSizeConstraintSets requests, specify the value of NextMarker from the previous response to get information about another batch of SizeConstraintSets. - */ - NextMarker?: NextMarker; - /** - * Specifies the number of SizeConstraintSet objects that you want AWS WAF to return for this request. If you have more SizeConstraintSets objects than the number you specify for Limit, the response includes a NextMarker value that you can use to get another batch of SizeConstraintSet objects. - */ - Limit?: PaginationLimit; - } - export interface ListSizeConstraintSetsResponse { - /** - * If you have more SizeConstraintSet objects than the number that you specified for Limit in the request, the response includes a NextMarker value. To list more SizeConstraintSet objects, submit another ListSizeConstraintSets request, and specify the NextMarker value from the response in the NextMarker value in the next request. - */ - NextMarker?: NextMarker; - /** - * An array of SizeConstraintSetSummary objects. - */ - SizeConstraintSets?: SizeConstraintSetSummaries; - } - export interface ListSqlInjectionMatchSetsRequest { - /** - * If you specify a value for Limit and you have more SqlInjectionMatchSet objects than the value of Limit, AWS WAF returns a NextMarker value in the response that allows you to list another group of SqlInjectionMatchSets. For the second and subsequent ListSqlInjectionMatchSets requests, specify the value of NextMarker from the previous response to get information about another batch of SqlInjectionMatchSets. - */ - NextMarker?: NextMarker; - /** - * Specifies the number of SqlInjectionMatchSet objects that you want AWS WAF to return for this request. If you have more SqlInjectionMatchSet objects than the number you specify for Limit, the response includes a NextMarker value that you can use to get another batch of Rules. - */ - Limit?: PaginationLimit; - } - export interface ListSqlInjectionMatchSetsResponse { - /** - * If you have more SqlInjectionMatchSet objects than the number that you specified for Limit in the request, the response includes a NextMarker value. To list more SqlInjectionMatchSet objects, submit another ListSqlInjectionMatchSets request, and specify the NextMarker value from the response in the NextMarker value in the next request. - */ - NextMarker?: NextMarker; - /** - * An array of SqlInjectionMatchSetSummary objects. - */ - SqlInjectionMatchSets?: SqlInjectionMatchSetSummaries; - } - export interface ListWebACLsRequest { - /** - * If you specify a value for Limit and you have more WebACL objects than the number that you specify for Limit, AWS WAF returns a NextMarker value in the response that allows you to list another group of WebACL objects. For the second and subsequent ListWebACLs requests, specify the value of NextMarker from the previous response to get information about another batch of WebACL objects. - */ - NextMarker?: NextMarker; - /** - * Specifies the number of WebACL objects that you want AWS WAF to return for this request. If you have more WebACL objects than the number that you specify for Limit, the response includes a NextMarker value that you can use to get another batch of WebACL objects. - */ - Limit?: PaginationLimit; - } - export interface ListWebACLsResponse { - /** - * If you have more WebACL objects than the number that you specified for Limit in the request, the response includes a NextMarker value. To list more WebACL objects, submit another ListWebACLs request, and specify the NextMarker value from the response in the NextMarker value in the next request. - */ - NextMarker?: NextMarker; - /** - * An array of WebACLSummary objects. - */ - WebACLs?: WebACLSummaries; - } - export interface ListXssMatchSetsRequest { - /** - * If you specify a value for Limit and you have more XssMatchSet objects than the value of Limit, AWS WAF returns a NextMarker value in the response that allows you to list another group of XssMatchSets. For the second and subsequent ListXssMatchSets requests, specify the value of NextMarker from the previous response to get information about another batch of XssMatchSets. - */ - NextMarker?: NextMarker; - /** - * Specifies the number of XssMatchSet objects that you want AWS WAF to return for this request. If you have more XssMatchSet objects than the number you specify for Limit, the response includes a NextMarker value that you can use to get another batch of Rules. - */ - Limit?: PaginationLimit; - } - export interface ListXssMatchSetsResponse { - /** - * If you have more XssMatchSet objects than the number that you specified for Limit in the request, the response includes a NextMarker value. To list more XssMatchSet objects, submit another ListXssMatchSets request, and specify the NextMarker value from the response in the NextMarker value in the next request. - */ - NextMarker?: NextMarker; - /** - * An array of XssMatchSetSummary objects. - */ - XssMatchSets?: XssMatchSetSummaries; - } - export type ManagedKey = string; - export type ManagedKeys = ManagedKey[]; - export type MatchFieldData = string; - export type MatchFieldType = "URI"|"QUERY_STRING"|"HEADER"|"METHOD"|"BODY"|string; - export type MetricName = string; - export type Negated = boolean; - export type NextMarker = string; - export type PaginationLimit = number; - export type ParameterExceptionField = "CHANGE_ACTION"|"WAF_ACTION"|"PREDICATE_TYPE"|"IPSET_TYPE"|"BYTE_MATCH_FIELD_TYPE"|"SQL_INJECTION_MATCH_FIELD_TYPE"|"BYTE_MATCH_TEXT_TRANSFORMATION"|"BYTE_MATCH_POSITIONAL_CONSTRAINT"|"SIZE_CONSTRAINT_COMPARISON_OPERATOR"|"RATE_KEY"|"RULE_TYPE"|"NEXT_MARKER"|string; - export type ParameterExceptionParameter = string; - export type ParameterExceptionReason = "INVALID_OPTION"|"ILLEGAL_COMBINATION"|string; - export type PopulationSize = number; - export type PositionalConstraint = "EXACTLY"|"STARTS_WITH"|"ENDS_WITH"|"CONTAINS"|"CONTAINS_WORD"|string; - export interface Predicate { - /** - * Set Negated to False if you want AWS WAF to allow, block, or count requests based on the settings in the specified ByteMatchSet, IPSet, SqlInjectionMatchSet, XssMatchSet, or SizeConstraintSet. For example, if an IPSet includes the IP address 192.0.2.44, AWS WAF will allow or block requests based on that IP address. Set Negated to True if you want AWS WAF to allow or block a request based on the negation of the settings in the ByteMatchSet, IPSet, SqlInjectionMatchSet, XssMatchSet, or SizeConstraintSet. For example, if an IPSet includes the IP address 192.0.2.44, AWS WAF will allow, block, or count requests based on all IP addresses except 192.0.2.44. - */ - Negated: Negated; - /** - * The type of predicate in a Rule, such as ByteMatchSet or IPSet. - */ - Type: PredicateType; - /** - * A unique identifier for a predicate in a Rule, such as ByteMatchSetId or IPSetId. The ID is returned by the corresponding Create or List command. - */ - DataId: ResourceId; - } - export type PredicateType = "IPMatch"|"ByteMatch"|"SqlInjectionMatch"|"SizeConstraint"|"XssMatch"|string; - export type Predicates = Predicate[]; - export interface RateBasedRule { - /** - * A unique identifier for a RateBasedRule. You use RuleId to get more information about a RateBasedRule (see GetRateBasedRule), update a RateBasedRule (see UpdateRateBasedRule), insert a RateBasedRule into a WebACL or delete one from a WebACL (see UpdateWebACL), or delete a RateBasedRule from AWS WAF (see DeleteRateBasedRule). - */ - RuleId: ResourceId; - /** - * A friendly name or description for a RateBasedRule. You can't change the name of a RateBasedRule after you create it. - */ - Name?: ResourceName; - /** - * A friendly name or description for the metrics for a RateBasedRule. The name can contain only alphanumeric characters (A-Z, a-z, 0-9); the name can't contain whitespace. You can't change the name of the metric after you create the RateBasedRule. - */ - MetricName?: MetricName; - /** - * The Predicates object contains one Predicate element for each ByteMatchSet, IPSet, or SqlInjectionMatchSet object that you want to include in a RateBasedRule. - */ - MatchPredicates: Predicates; - /** - * The field that AWS WAF uses to determine if requests are likely arriving from single source and thus subject to rate monitoring. The only valid value for RateKey is IP. IP indicates that requests arriving from the same IP address are subject to the RateLimit that is specified in the RateBasedRule. - */ - RateKey: RateKey; - /** - * The maximum number of requests, which have an identical value in the field specified by the RateKey, allowed in a five-minute period. If the number of requests exceeds the RateLimit and the other predicates specified in the rule are also met, AWS WAF triggers the action that is specified for this rule. - */ - RateLimit: RateLimit; - } - export type RateKey = "IP"|string; - export type RateLimit = number; - export type ResourceId = string; - export type ResourceName = string; - export interface Rule { - /** - * A unique identifier for a Rule. You use RuleId to get more information about a Rule (see GetRule), update a Rule (see UpdateRule), insert a Rule into a WebACL or delete a one from a WebACL (see UpdateWebACL), or delete a Rule from AWS WAF (see DeleteRule). RuleId is returned by CreateRule and by ListRules. - */ - RuleId: ResourceId; - /** - * The friendly name or description for the Rule. You can't change the name of a Rule after you create it. - */ - Name?: ResourceName; - /** - * A friendly name or description for the metrics for this Rule. The name can contain only alphanumeric characters (A-Z, a-z, 0-9); the name can't contain whitespace. You can't change MetricName after you create the Rule. - */ - MetricName?: MetricName; - /** - * The Predicates object contains one Predicate element for each ByteMatchSet, IPSet, or SqlInjectionMatchSet object that you want to include in a Rule. - */ - Predicates: Predicates; - } - export type RulePriority = number; - export type RuleSummaries = RuleSummary[]; - export interface RuleSummary { - /** - * A unique identifier for a Rule. You use RuleId to get more information about a Rule (see GetRule), update a Rule (see UpdateRule), insert a Rule into a WebACL or delete one from a WebACL (see UpdateWebACL), or delete a Rule from AWS WAF (see DeleteRule). RuleId is returned by CreateRule and by ListRules. - */ - RuleId: ResourceId; - /** - * A friendly name or description of the Rule. You can't change the name of a Rule after you create it. - */ - Name: ResourceName; - } - export interface RuleUpdate { - /** - * Specify INSERT to add a Predicate to a Rule. Use DELETE to remove a Predicate from a Rule. - */ - Action: ChangeAction; - /** - * The ID of the Predicate (such as an IPSet) that you want to add to a Rule. - */ - Predicate: Predicate; - } - export type RuleUpdates = RuleUpdate[]; - export type SampleWeight = number; - export interface SampledHTTPRequest { - /** - * A complex type that contains detailed information about the request. - */ - Request: HTTPRequest; - /** - * A value that indicates how one result in the response relates proportionally to other results in the response. A result that has a weight of 2 represents roughly twice as many CloudFront web requests as a result that has a weight of 1. - */ - Weight: SampleWeight; - /** - * The time at which AWS WAF received the request from your AWS resource, in Unix time format (in seconds). - */ - Timestamp?: Timestamp; - /** - * The action for the Rule that the request matched: ALLOW, BLOCK, or COUNT. - */ - Action?: Action; - } - export type SampledHTTPRequests = SampledHTTPRequest[]; - export type Size = number; - export interface SizeConstraint { - /** - * Specifies where in a web request to look for the size constraint. - */ - FieldToMatch: FieldToMatch; - /** - * Text transformations eliminate some of the unusual formatting that attackers use in web requests in an effort to bypass AWS WAF. If you specify a transformation, AWS WAF performs the transformation on FieldToMatch before inspecting a request for a match. Note that if you choose BODY for the value of Type, you must choose NONE for TextTransformation because CloudFront forwards only the first 8192 bytes for inspection. NONE Specify NONE if you don't want to perform any text transformations. CMD_LINE When you're concerned that attackers are injecting an operating system command line command and using unusual formatting to disguise some or all of the command, use this option to perform the following transformations: Delete the following characters: \ " ' ^ Delete spaces before the following characters: / ( Replace the following characters with a space: , ; Replace multiple spaces with one space Convert uppercase letters (A-Z) to lowercase (a-z) COMPRESS_WHITE_SPACE Use this option to replace the following characters with a space character (decimal 32): \f, formfeed, decimal 12 \t, tab, decimal 9 \n, newline, decimal 10 \r, carriage return, decimal 13 \v, vertical tab, decimal 11 non-breaking space, decimal 160 COMPRESS_WHITE_SPACE also replaces multiple spaces with one space. HTML_ENTITY_DECODE Use this option to replace HTML-encoded characters with unencoded characters. HTML_ENTITY_DECODE performs the following operations: Replaces (ampersand)quot; with " Replaces (ampersand)nbsp; with a non-breaking space, decimal 160 Replaces (ampersand)lt; with a "less than" symbol Replaces (ampersand)gt; with > Replaces characters that are represented in hexadecimal format, (ampersand)#xhhhh;, with the corresponding characters Replaces characters that are represented in decimal format, (ampersand)#nnnn;, with the corresponding characters LOWERCASE Use this option to convert uppercase letters (A-Z) to lowercase (a-z). URL_DECODE Use this option to decode a URL-encoded value. - */ - TextTransformation: TextTransformation; - /** - * The type of comparison you want AWS WAF to perform. AWS WAF uses this in combination with the provided Size and FieldToMatch to build an expression in the form of "Size ComparisonOperator size in bytes of FieldToMatch". If that expression is true, the SizeConstraint is considered to match. EQ: Used to test if the Size is equal to the size of the FieldToMatch NE: Used to test if the Size is not equal to the size of the FieldToMatch LE: Used to test if the Size is less than or equal to the size of the FieldToMatch LT: Used to test if the Size is strictly less than the size of the FieldToMatch GE: Used to test if the Size is greater than or equal to the size of the FieldToMatch GT: Used to test if the Size is strictly greater than the size of the FieldToMatch - */ - ComparisonOperator: ComparisonOperator; - /** - * The size in bytes that you want AWS WAF to compare against the size of the specified FieldToMatch. AWS WAF uses this in combination with ComparisonOperator and FieldToMatch to build an expression in the form of "Size ComparisonOperator size in bytes of FieldToMatch". If that expression is true, the SizeConstraint is considered to match. Valid values for size are 0 - 21474836480 bytes (0 - 20 GB). If you specify URI for the value of Type, the / in the URI counts as one character. For example, the URI /logo.jpg is nine characters long. - */ - Size: Size; - } - export interface SizeConstraintSet { - /** - * A unique identifier for a SizeConstraintSet. You use SizeConstraintSetId to get information about a SizeConstraintSet (see GetSizeConstraintSet), update a SizeConstraintSet (see UpdateSizeConstraintSet), insert a SizeConstraintSet into a Rule or delete one from a Rule (see UpdateRule), and delete a SizeConstraintSet from AWS WAF (see DeleteSizeConstraintSet). SizeConstraintSetId is returned by CreateSizeConstraintSet and by ListSizeConstraintSets. - */ - SizeConstraintSetId: ResourceId; - /** - * The name, if any, of the SizeConstraintSet. - */ - Name?: ResourceName; - /** - * Specifies the parts of web requests that you want to inspect the size of. - */ - SizeConstraints: SizeConstraints; - } - export type SizeConstraintSetSummaries = SizeConstraintSetSummary[]; - export interface SizeConstraintSetSummary { - /** - * A unique identifier for a SizeConstraintSet. You use SizeConstraintSetId to get information about a SizeConstraintSet (see GetSizeConstraintSet), update a SizeConstraintSet (see UpdateSizeConstraintSet), insert a SizeConstraintSet into a Rule or delete one from a Rule (see UpdateRule), and delete a SizeConstraintSet from AWS WAF (see DeleteSizeConstraintSet). SizeConstraintSetId is returned by CreateSizeConstraintSet and by ListSizeConstraintSets. - */ - SizeConstraintSetId: ResourceId; - /** - * The name of the SizeConstraintSet, if any. - */ - Name: ResourceName; - } - export interface SizeConstraintSetUpdate { - /** - * Specify INSERT to add a SizeConstraintSetUpdate to a SizeConstraintSet. Use DELETE to remove a SizeConstraintSetUpdate from a SizeConstraintSet. - */ - Action: ChangeAction; - /** - * Specifies a constraint on the size of a part of the web request. AWS WAF uses the Size, ComparisonOperator, and FieldToMatch to build an expression in the form of "Size ComparisonOperator size in bytes of FieldToMatch". If that expression is true, the SizeConstraint is considered to match. - */ - SizeConstraint: SizeConstraint; - } - export type SizeConstraintSetUpdates = SizeConstraintSetUpdate[]; - export type SizeConstraints = SizeConstraint[]; - export interface SqlInjectionMatchSet { - /** - * A unique identifier for a SqlInjectionMatchSet. You use SqlInjectionMatchSetId to get information about a SqlInjectionMatchSet (see GetSqlInjectionMatchSet), update a SqlInjectionMatchSet (see UpdateSqlInjectionMatchSet), insert a SqlInjectionMatchSet into a Rule or delete one from a Rule (see UpdateRule), and delete a SqlInjectionMatchSet from AWS WAF (see DeleteSqlInjectionMatchSet). SqlInjectionMatchSetId is returned by CreateSqlInjectionMatchSet and by ListSqlInjectionMatchSets. - */ - SqlInjectionMatchSetId: ResourceId; - /** - * The name, if any, of the SqlInjectionMatchSet. - */ - Name?: ResourceName; - /** - * Specifies the parts of web requests that you want to inspect for snippets of malicious SQL code. - */ - SqlInjectionMatchTuples: SqlInjectionMatchTuples; - } - export type SqlInjectionMatchSetSummaries = SqlInjectionMatchSetSummary[]; - export interface SqlInjectionMatchSetSummary { - /** - * A unique identifier for a SqlInjectionMatchSet. You use SqlInjectionMatchSetId to get information about a SqlInjectionMatchSet (see GetSqlInjectionMatchSet), update a SqlInjectionMatchSet (see UpdateSqlInjectionMatchSet), insert a SqlInjectionMatchSet into a Rule or delete one from a Rule (see UpdateRule), and delete a SqlInjectionMatchSet from AWS WAF (see DeleteSqlInjectionMatchSet). SqlInjectionMatchSetId is returned by CreateSqlInjectionMatchSet and by ListSqlInjectionMatchSets. - */ - SqlInjectionMatchSetId: ResourceId; - /** - * The name of the SqlInjectionMatchSet, if any, specified by Id. - */ - Name: ResourceName; - } - export interface SqlInjectionMatchSetUpdate { - /** - * Specify INSERT to add a SqlInjectionMatchSetUpdate to a SqlInjectionMatchSet. Use DELETE to remove a SqlInjectionMatchSetUpdate from a SqlInjectionMatchSet. - */ - Action: ChangeAction; - /** - * Specifies the part of a web request that you want AWS WAF to inspect for snippets of malicious SQL code and, if you want AWS WAF to inspect a header, the name of the header. - */ - SqlInjectionMatchTuple: SqlInjectionMatchTuple; - } - export type SqlInjectionMatchSetUpdates = SqlInjectionMatchSetUpdate[]; - export interface SqlInjectionMatchTuple { - /** - * Specifies where in a web request to look for snippets of malicious SQL code. - */ - FieldToMatch: FieldToMatch; - /** - * Text transformations eliminate some of the unusual formatting that attackers use in web requests in an effort to bypass AWS WAF. If you specify a transformation, AWS WAF performs the transformation on FieldToMatch before inspecting a request for a match. CMD_LINE When you're concerned that attackers are injecting an operating system commandline command and using unusual formatting to disguise some or all of the command, use this option to perform the following transformations: Delete the following characters: \ " ' ^ Delete spaces before the following characters: / ( Replace the following characters with a space: , ; Replace multiple spaces with one space Convert uppercase letters (A-Z) to lowercase (a-z) COMPRESS_WHITE_SPACE Use this option to replace the following characters with a space character (decimal 32): \f, formfeed, decimal 12 \t, tab, decimal 9 \n, newline, decimal 10 \r, carriage return, decimal 13 \v, vertical tab, decimal 11 non-breaking space, decimal 160 COMPRESS_WHITE_SPACE also replaces multiple spaces with one space. HTML_ENTITY_DECODE Use this option to replace HTML-encoded characters with unencoded characters. HTML_ENTITY_DECODE performs the following operations: Replaces (ampersand)quot; with " Replaces (ampersand)nbsp; with a non-breaking space, decimal 160 Replaces (ampersand)lt; with a "less than" symbol Replaces (ampersand)gt; with > Replaces characters that are represented in hexadecimal format, (ampersand)#xhhhh;, with the corresponding characters Replaces characters that are represented in decimal format, (ampersand)#nnnn;, with the corresponding characters LOWERCASE Use this option to convert uppercase letters (A-Z) to lowercase (a-z). URL_DECODE Use this option to decode a URL-encoded value. NONE Specify NONE if you don't want to perform any text transformations. - */ - TextTransformation: TextTransformation; - } - export type SqlInjectionMatchTuples = SqlInjectionMatchTuple[]; - export type TextTransformation = "NONE"|"COMPRESS_WHITE_SPACE"|"HTML_ENTITY_DECODE"|"LOWERCASE"|"CMD_LINE"|"URL_DECODE"|string; - export interface TimeWindow { - /** - * The beginning of the time range from which you want GetSampledRequests to return a sample of the requests that your AWS resource received. Specify the date and time in the following format: "2016-09-27T14:50Z". You can specify any time range in the previous three hours. - */ - StartTime: Timestamp; - /** - * The end of the time range from which you want GetSampledRequests to return a sample of the requests that your AWS resource received. Specify the date and time in the following format: "2016-09-27T14:50Z". You can specify any time range in the previous three hours. - */ - EndTime: Timestamp; - } - export type Timestamp = Date; - export type URIString = string; - export interface UpdateByteMatchSetRequest { - /** - * The ByteMatchSetId of the ByteMatchSet that you want to update. ByteMatchSetId is returned by CreateByteMatchSet and by ListByteMatchSets. - */ - ByteMatchSetId: ResourceId; - /** - * The value returned by the most recent call to GetChangeToken. - */ - ChangeToken: ChangeToken; - /** - * An array of ByteMatchSetUpdate objects that you want to insert into or delete from a ByteMatchSet. For more information, see the applicable data types: ByteMatchSetUpdate: Contains Action and ByteMatchTuple ByteMatchTuple: Contains FieldToMatch, PositionalConstraint, TargetString, and TextTransformation FieldToMatch: Contains Data and Type - */ - Updates: ByteMatchSetUpdates; - } - export interface UpdateByteMatchSetResponse { - /** - * The ChangeToken that you used to submit the UpdateByteMatchSet request. You can also use this value to query the status of the request. For more information, see GetChangeTokenStatus. - */ - ChangeToken?: ChangeToken; - } - export interface UpdateIPSetRequest { - /** - * The IPSetId of the IPSet that you want to update. IPSetId is returned by CreateIPSet and by ListIPSets. - */ - IPSetId: ResourceId; - /** - * The value returned by the most recent call to GetChangeToken. - */ - ChangeToken: ChangeToken; - /** - * An array of IPSetUpdate objects that you want to insert into or delete from an IPSet. For more information, see the applicable data types: IPSetUpdate: Contains Action and IPSetDescriptor IPSetDescriptor: Contains Type and Value - */ - Updates: IPSetUpdates; - } - export interface UpdateIPSetResponse { - /** - * The ChangeToken that you used to submit the UpdateIPSet request. You can also use this value to query the status of the request. For more information, see GetChangeTokenStatus. - */ - ChangeToken?: ChangeToken; - } - export interface UpdateRateBasedRuleRequest { - /** - * The RuleId of the RateBasedRule that you want to update. RuleId is returned by CreateRateBasedRule and by ListRateBasedRules. - */ - RuleId: ResourceId; - /** - * The value returned by the most recent call to GetChangeToken. - */ - ChangeToken: ChangeToken; - /** - * An array of RuleUpdate objects that you want to insert into or delete from a RateBasedRule. - */ - Updates: RuleUpdates; - /** - * The maximum number of requests, which have an identical value in the field specified by the RateKey, allowed in a five-minute period. If the number of requests exceeds the RateLimit and the other predicates specified in the rule are also met, AWS WAF triggers the action that is specified for this rule. - */ - RateLimit: RateLimit; - } - export interface UpdateRateBasedRuleResponse { - /** - * The ChangeToken that you used to submit the UpdateRateBasedRule request. You can also use this value to query the status of the request. For more information, see GetChangeTokenStatus. - */ - ChangeToken?: ChangeToken; - } - export interface UpdateRuleRequest { - /** - * The RuleId of the Rule that you want to update. RuleId is returned by CreateRule and by ListRules. - */ - RuleId: ResourceId; - /** - * The value returned by the most recent call to GetChangeToken. - */ - ChangeToken: ChangeToken; - /** - * An array of RuleUpdate objects that you want to insert into or delete from a Rule. For more information, see the applicable data types: RuleUpdate: Contains Action and Predicate Predicate: Contains DataId, Negated, and Type FieldToMatch: Contains Data and Type - */ - Updates: RuleUpdates; - } - export interface UpdateRuleResponse { - /** - * The ChangeToken that you used to submit the UpdateRule request. You can also use this value to query the status of the request. For more information, see GetChangeTokenStatus. - */ - ChangeToken?: ChangeToken; - } - export interface UpdateSizeConstraintSetRequest { - /** - * The SizeConstraintSetId of the SizeConstraintSet that you want to update. SizeConstraintSetId is returned by CreateSizeConstraintSet and by ListSizeConstraintSets. - */ - SizeConstraintSetId: ResourceId; - /** - * The value returned by the most recent call to GetChangeToken. - */ - ChangeToken: ChangeToken; - /** - * An array of SizeConstraintSetUpdate objects that you want to insert into or delete from a SizeConstraintSet. For more information, see the applicable data types: SizeConstraintSetUpdate: Contains Action and SizeConstraint SizeConstraint: Contains FieldToMatch, TextTransformation, ComparisonOperator, and Size FieldToMatch: Contains Data and Type - */ - Updates: SizeConstraintSetUpdates; - } - export interface UpdateSizeConstraintSetResponse { - /** - * The ChangeToken that you used to submit the UpdateSizeConstraintSet request. You can also use this value to query the status of the request. For more information, see GetChangeTokenStatus. - */ - ChangeToken?: ChangeToken; - } - export interface UpdateSqlInjectionMatchSetRequest { - /** - * The SqlInjectionMatchSetId of the SqlInjectionMatchSet that you want to update. SqlInjectionMatchSetId is returned by CreateSqlInjectionMatchSet and by ListSqlInjectionMatchSets. - */ - SqlInjectionMatchSetId: ResourceId; - /** - * The value returned by the most recent call to GetChangeToken. - */ - ChangeToken: ChangeToken; - /** - * An array of SqlInjectionMatchSetUpdate objects that you want to insert into or delete from a SqlInjectionMatchSet. For more information, see the applicable data types: SqlInjectionMatchSetUpdate: Contains Action and SqlInjectionMatchTuple SqlInjectionMatchTuple: Contains FieldToMatch and TextTransformation FieldToMatch: Contains Data and Type - */ - Updates: SqlInjectionMatchSetUpdates; - } - export interface UpdateSqlInjectionMatchSetResponse { - /** - * The ChangeToken that you used to submit the UpdateSqlInjectionMatchSet request. You can also use this value to query the status of the request. For more information, see GetChangeTokenStatus. - */ - ChangeToken?: ChangeToken; - } - export interface UpdateWebACLRequest { - /** - * The WebACLId of the WebACL that you want to update. WebACLId is returned by CreateWebACL and by ListWebACLs. - */ - WebACLId: ResourceId; - /** - * The value returned by the most recent call to GetChangeToken. - */ - ChangeToken: ChangeToken; - /** - * An array of updates to make to the WebACL. An array of WebACLUpdate objects that you want to insert into or delete from a WebACL. For more information, see the applicable data types: WebACLUpdate: Contains Action and ActivatedRule ActivatedRule: Contains Action, Priority, RuleId, and Type WafAction: Contains Type - */ - Updates?: WebACLUpdates; - /** - * A default action for the web ACL, either ALLOW or BLOCK. AWS WAF performs the default action if a request doesn't match the criteria in any of the rules in a web ACL. - */ - DefaultAction?: WafAction; - } - export interface UpdateWebACLResponse { - /** - * The ChangeToken that you used to submit the UpdateWebACL request. You can also use this value to query the status of the request. For more information, see GetChangeTokenStatus. - */ - ChangeToken?: ChangeToken; - } - export interface UpdateXssMatchSetRequest { - /** - * The XssMatchSetId of the XssMatchSet that you want to update. XssMatchSetId is returned by CreateXssMatchSet and by ListXssMatchSets. - */ - XssMatchSetId: ResourceId; - /** - * The value returned by the most recent call to GetChangeToken. - */ - ChangeToken: ChangeToken; - /** - * An array of XssMatchSetUpdate objects that you want to insert into or delete from a XssMatchSet. For more information, see the applicable data types: XssMatchSetUpdate: Contains Action and XssMatchTuple XssMatchTuple: Contains FieldToMatch and TextTransformation FieldToMatch: Contains Data and Type - */ - Updates: XssMatchSetUpdates; - } - export interface UpdateXssMatchSetResponse { - /** - * The ChangeToken that you used to submit the UpdateXssMatchSet request. You can also use this value to query the status of the request. For more information, see GetChangeTokenStatus. - */ - ChangeToken?: ChangeToken; - } - export interface WafAction { - /** - * Specifies how you want AWS WAF to respond to requests that match the settings in a Rule. Valid settings include the following: ALLOW: AWS WAF allows requests BLOCK: AWS WAF blocks requests COUNT: AWS WAF increments a counter of the requests that match all of the conditions in the rule. AWS WAF then continues to inspect the web request based on the remaining rules in the web ACL. You can't specify COUNT for the default action for a WebACL. - */ - Type: WafActionType; - } - export type WafActionType = "BLOCK"|"ALLOW"|"COUNT"|string; - export type WafRuleType = "REGULAR"|"RATE_BASED"|string; - export interface WebACL { - /** - * A unique identifier for a WebACL. You use WebACLId to get information about a WebACL (see GetWebACL), update a WebACL (see UpdateWebACL), and delete a WebACL from AWS WAF (see DeleteWebACL). WebACLId is returned by CreateWebACL and by ListWebACLs. - */ - WebACLId: ResourceId; - /** - * A friendly name or description of the WebACL. You can't change the name of a WebACL after you create it. - */ - Name?: ResourceName; - /** - * A friendly name or description for the metrics for this WebACL. The name can contain only alphanumeric characters (A-Z, a-z, 0-9); the name can't contain whitespace. You can't change MetricName after you create the WebACL. - */ - MetricName?: MetricName; - /** - * The action to perform if none of the Rules contained in the WebACL match. The action is specified by the WafAction object. - */ - DefaultAction: WafAction; - /** - * An array that contains the action for each Rule in a WebACL, the priority of the Rule, and the ID of the Rule. - */ - Rules: ActivatedRules; - } - export type WebACLSummaries = WebACLSummary[]; - export interface WebACLSummary { - /** - * A unique identifier for a WebACL. You use WebACLId to get information about a WebACL (see GetWebACL), update a WebACL (see UpdateWebACL), and delete a WebACL from AWS WAF (see DeleteWebACL). WebACLId is returned by CreateWebACL and by ListWebACLs. - */ - WebACLId: ResourceId; - /** - * A friendly name or description of the WebACL. You can't change the name of a WebACL after you create it. - */ - Name: ResourceName; - } - export interface WebACLUpdate { - /** - * Specifies whether to insert a Rule into or delete a Rule from a WebACL. - */ - Action: ChangeAction; - /** - * The ActivatedRule object in an UpdateWebACL request specifies a Rule that you want to insert or delete, the priority of the Rule in the WebACL, and the action that you want AWS WAF to take when a web request matches the Rule (ALLOW, BLOCK, or COUNT). - */ - ActivatedRule: ActivatedRule; - } - export type WebACLUpdates = WebACLUpdate[]; - export interface XssMatchSet { - /** - * A unique identifier for an XssMatchSet. You use XssMatchSetId to get information about an XssMatchSet (see GetXssMatchSet), update an XssMatchSet (see UpdateXssMatchSet), insert an XssMatchSet into a Rule or delete one from a Rule (see UpdateRule), and delete an XssMatchSet from AWS WAF (see DeleteXssMatchSet). XssMatchSetId is returned by CreateXssMatchSet and by ListXssMatchSets. - */ - XssMatchSetId: ResourceId; - /** - * The name, if any, of the XssMatchSet. - */ - Name?: ResourceName; - /** - * Specifies the parts of web requests that you want to inspect for cross-site scripting attacks. - */ - XssMatchTuples: XssMatchTuples; - } - export type XssMatchSetSummaries = XssMatchSetSummary[]; - export interface XssMatchSetSummary { - /** - * A unique identifier for an XssMatchSet. You use XssMatchSetId to get information about a XssMatchSet (see GetXssMatchSet), update an XssMatchSet (see UpdateXssMatchSet), insert an XssMatchSet into a Rule or delete one from a Rule (see UpdateRule), and delete an XssMatchSet from AWS WAF (see DeleteXssMatchSet). XssMatchSetId is returned by CreateXssMatchSet and by ListXssMatchSets. - */ - XssMatchSetId: ResourceId; - /** - * The name of the XssMatchSet, if any, specified by Id. - */ - Name: ResourceName; - } - export interface XssMatchSetUpdate { - /** - * Specify INSERT to add a XssMatchSetUpdate to an XssMatchSet. Use DELETE to remove a XssMatchSetUpdate from an XssMatchSet. - */ - Action: ChangeAction; - /** - * Specifies the part of a web request that you want AWS WAF to inspect for cross-site scripting attacks and, if you want AWS WAF to inspect a header, the name of the header. - */ - XssMatchTuple: XssMatchTuple; - } - export type XssMatchSetUpdates = XssMatchSetUpdate[]; - export interface XssMatchTuple { - /** - * Specifies where in a web request to look for cross-site scripting attacks. - */ - FieldToMatch: FieldToMatch; - /** - * Text transformations eliminate some of the unusual formatting that attackers use in web requests in an effort to bypass AWS WAF. If you specify a transformation, AWS WAF performs the transformation on FieldToMatch before inspecting a request for a match. CMD_LINE When you're concerned that attackers are injecting an operating system commandline command and using unusual formatting to disguise some or all of the command, use this option to perform the following transformations: Delete the following characters: \ " ' ^ Delete spaces before the following characters: / ( Replace the following characters with a space: , ; Replace multiple spaces with one space Convert uppercase letters (A-Z) to lowercase (a-z) COMPRESS_WHITE_SPACE Use this option to replace the following characters with a space character (decimal 32): \f, formfeed, decimal 12 \t, tab, decimal 9 \n, newline, decimal 10 \r, carriage return, decimal 13 \v, vertical tab, decimal 11 non-breaking space, decimal 160 COMPRESS_WHITE_SPACE also replaces multiple spaces with one space. HTML_ENTITY_DECODE Use this option to replace HTML-encoded characters with unencoded characters. HTML_ENTITY_DECODE performs the following operations: Replaces (ampersand)quot; with " Replaces (ampersand)nbsp; with a non-breaking space, decimal 160 Replaces (ampersand)lt; with a "less than" symbol Replaces (ampersand)gt; with > Replaces characters that are represented in hexadecimal format, (ampersand)#xhhhh;, with the corresponding characters Replaces characters that are represented in decimal format, (ampersand)#nnnn;, with the corresponding characters LOWERCASE Use this option to convert uppercase letters (A-Z) to lowercase (a-z). URL_DECODE Use this option to decode a URL-encoded value. NONE Specify NONE if you don't want to perform any text transformations. - */ - TextTransformation: TextTransformation; - } - export type XssMatchTuples = XssMatchTuple[]; - export type errorMessage = string; - /** - * A string in YYYY-MM-DD format that represents the latest possible API version that can be used in this service. Specify 'latest' to use the latest possible version. - */ - export type apiVersion = "2015-08-24"|"latest"|string; - export interface ClientApiVersions { - /** - * A string in YYYY-MM-DD format that represents the latest possible API version that can be used in this service. Specify 'latest' to use the latest possible version. - */ - apiVersion?: apiVersion; - } - export type ClientConfiguration = ServiceConfigurationOptions & ClientApiVersions; - /** - * Contains interfaces for use with the WAF client. - */ - export import Types = WAF; -} -export = WAF; diff --git a/workshops/monte-carlo-on-ec2-spot-fleet/src/web/node_modules/aws-sdk/clients/waf.js b/workshops/monte-carlo-on-ec2-spot-fleet/src/web/node_modules/aws-sdk/clients/waf.js deleted file mode 100644 index b31040a3..00000000 --- a/workshops/monte-carlo-on-ec2-spot-fleet/src/web/node_modules/aws-sdk/clients/waf.js +++ /dev/null @@ -1,18 +0,0 @@ -require('../lib/node_loader'); -var AWS = require('../lib/core'); -var Service = AWS.Service; -var apiLoader = AWS.apiLoader; - -apiLoader.services['waf'] = {}; -AWS.WAF = Service.defineService('waf', ['2015-08-24']); -Object.defineProperty(apiLoader.services['waf'], '2015-08-24', { - get: function get() { - var model = require('../apis/waf-2015-08-24.min.json'); - model.paginators = require('../apis/waf-2015-08-24.paginators.json').pagination; - return model; - }, - enumerable: true, - configurable: true -}); - -module.exports = AWS.WAF; diff --git a/workshops/monte-carlo-on-ec2-spot-fleet/src/web/node_modules/aws-sdk/clients/wafregional.d.ts b/workshops/monte-carlo-on-ec2-spot-fleet/src/web/node_modules/aws-sdk/clients/wafregional.d.ts deleted file mode 100644 index 295100db..00000000 --- a/workshops/monte-carlo-on-ec2-spot-fleet/src/web/node_modules/aws-sdk/clients/wafregional.d.ts +++ /dev/null @@ -1,1789 +0,0 @@ -import {Request} from '../lib/request'; -import {Response} from '../lib/response'; -import {AWSError} from '../lib/error'; -import {Service} from '../lib/service'; -import {ServiceConfigurationOptions} from '../lib/service'; -import {ConfigBase as Config} from '../lib/config'; -interface Blob {} -declare class WAFRegional extends Service { - /** - * Constructs a service object. This object has one method for each API operation. - */ - constructor(options?: WAFRegional.Types.ClientConfiguration) - config: Config & WAFRegional.Types.ClientConfiguration; - /** - * Associates a web ACL with a resource. - */ - associateWebACL(params: WAFRegional.Types.AssociateWebACLRequest, callback?: (err: AWSError, data: WAFRegional.Types.AssociateWebACLResponse) => void): Request; - /** - * Associates a web ACL with a resource. - */ - associateWebACL(callback?: (err: AWSError, data: WAFRegional.Types.AssociateWebACLResponse) => void): Request; - /** - * Creates a ByteMatchSet. You then use UpdateByteMatchSet to identify the part of a web request that you want AWS WAF to inspect, such as the values of the User-Agent header or the query string. For example, you can create a ByteMatchSet that matches any requests with User-Agent headers that contain the string BadBot. You can then configure AWS WAF to reject those requests. To create and configure a ByteMatchSet, perform the following steps: Use GetChangeToken to get the change token that you provide in the ChangeToken parameter of a CreateByteMatchSet request. Submit a CreateByteMatchSet request. Use GetChangeToken to get the change token that you provide in the ChangeToken parameter of an UpdateByteMatchSet request. Submit an UpdateByteMatchSet request to specify the part of the request that you want AWS WAF to inspect (for example, the header or the URI) and the value that you want AWS WAF to watch for. For more information about how to use the AWS WAF API to allow or block HTTP requests, see the AWS WAF Developer Guide. - */ - createByteMatchSet(params: WAFRegional.Types.CreateByteMatchSetRequest, callback?: (err: AWSError, data: WAFRegional.Types.CreateByteMatchSetResponse) => void): Request; - /** - * Creates a ByteMatchSet. You then use UpdateByteMatchSet to identify the part of a web request that you want AWS WAF to inspect, such as the values of the User-Agent header or the query string. For example, you can create a ByteMatchSet that matches any requests with User-Agent headers that contain the string BadBot. You can then configure AWS WAF to reject those requests. To create and configure a ByteMatchSet, perform the following steps: Use GetChangeToken to get the change token that you provide in the ChangeToken parameter of a CreateByteMatchSet request. Submit a CreateByteMatchSet request. Use GetChangeToken to get the change token that you provide in the ChangeToken parameter of an UpdateByteMatchSet request. Submit an UpdateByteMatchSet request to specify the part of the request that you want AWS WAF to inspect (for example, the header or the URI) and the value that you want AWS WAF to watch for. For more information about how to use the AWS WAF API to allow or block HTTP requests, see the AWS WAF Developer Guide. - */ - createByteMatchSet(callback?: (err: AWSError, data: WAFRegional.Types.CreateByteMatchSetResponse) => void): Request; - /** - * Creates an IPSet, which you use to specify which web requests you want to allow or block based on the IP addresses that the requests originate from. For example, if you're receiving a lot of requests from one or more individual IP addresses or one or more ranges of IP addresses and you want to block the requests, you can create an IPSet that contains those IP addresses and then configure AWS WAF to block the requests. To create and configure an IPSet, perform the following steps: Use GetChangeToken to get the change token that you provide in the ChangeToken parameter of a CreateIPSet request. Submit a CreateIPSet request. Use GetChangeToken to get the change token that you provide in the ChangeToken parameter of an UpdateIPSet request. Submit an UpdateIPSet request to specify the IP addresses that you want AWS WAF to watch for. For more information about how to use the AWS WAF API to allow or block HTTP requests, see the AWS WAF Developer Guide. - */ - createIPSet(params: WAFRegional.Types.CreateIPSetRequest, callback?: (err: AWSError, data: WAFRegional.Types.CreateIPSetResponse) => void): Request; - /** - * Creates an IPSet, which you use to specify which web requests you want to allow or block based on the IP addresses that the requests originate from. For example, if you're receiving a lot of requests from one or more individual IP addresses or one or more ranges of IP addresses and you want to block the requests, you can create an IPSet that contains those IP addresses and then configure AWS WAF to block the requests. To create and configure an IPSet, perform the following steps: Use GetChangeToken to get the change token that you provide in the ChangeToken parameter of a CreateIPSet request. Submit a CreateIPSet request. Use GetChangeToken to get the change token that you provide in the ChangeToken parameter of an UpdateIPSet request. Submit an UpdateIPSet request to specify the IP addresses that you want AWS WAF to watch for. For more information about how to use the AWS WAF API to allow or block HTTP requests, see the AWS WAF Developer Guide. - */ - createIPSet(callback?: (err: AWSError, data: WAFRegional.Types.CreateIPSetResponse) => void): Request; - /** - * Creates a RateBasedRule. The RateBasedRule contains a RateLimit, which specifies the maximum number of requests that AWS WAF allows from a specified IP address in a five-minute period. The RateBasedRule also contains the IPSet objects, ByteMatchSet objects, and other predicates that identify the requests that you want to count or block if these requests exceed the RateLimit. If you add more than one predicate to a RateBasedRule, a request not only must exceed the RateLimit, but it also must match all the specifications to be counted or blocked. For example, suppose you add the following to a RateBasedRule: An IPSet that matches the IP address 192.0.2.44/32 A ByteMatchSet that matches BadBot in the User-Agent header Further, you specify a RateLimit of 15,000. You then add the RateBasedRule to a WebACL and specify that you want to block requests that meet the conditions in the rule. For a request to be blocked, it must come from the IP address 192.0.2.44 and the User-Agent header in the request must contain the value BadBot. Further, requests that match these two conditions must be received at a rate of more than 15,000 requests every five minutes. If both conditions are met and the rate is exceeded, AWS WAF blocks the requests. If the rate drops below 15,000 for a five-minute period, AWS WAF no longer blocks the requests. As a second example, suppose you want to limit requests to a particular page on your site. To do this, you could add the following to a RateBasedRule: A ByteMatchSet with FieldToMatch of URI A PositionalConstraint of STARTS_WITH A TargetString of login Further, you specify a RateLimit of 15,000. By adding this RateBasedRule to a WebACL, you could limit requests to your login page without affecting the rest of your site. To create and configure a RateBasedRule, perform the following steps: Create and update the predicates that you want to include in the rule. For more information, see CreateByteMatchSet, CreateIPSet, and CreateSqlInjectionMatchSet. Use GetChangeToken to get the change token that you provide in the ChangeToken parameter of a CreateRule request. Submit a CreateRateBasedRule request. Use GetChangeToken to get the change token that you provide in the ChangeToken parameter of an UpdateRule request. Submit an UpdateRateBasedRule request to specify the predicates that you want to include in the rule. Create and update a WebACL that contains the RateBasedRule. For more information, see CreateWebACL. For more information about how to use the AWS WAF API to allow or block HTTP requests, see the AWS WAF Developer Guide. - */ - createRateBasedRule(params: WAFRegional.Types.CreateRateBasedRuleRequest, callback?: (err: AWSError, data: WAFRegional.Types.CreateRateBasedRuleResponse) => void): Request; - /** - * Creates a RateBasedRule. The RateBasedRule contains a RateLimit, which specifies the maximum number of requests that AWS WAF allows from a specified IP address in a five-minute period. The RateBasedRule also contains the IPSet objects, ByteMatchSet objects, and other predicates that identify the requests that you want to count or block if these requests exceed the RateLimit. If you add more than one predicate to a RateBasedRule, a request not only must exceed the RateLimit, but it also must match all the specifications to be counted or blocked. For example, suppose you add the following to a RateBasedRule: An IPSet that matches the IP address 192.0.2.44/32 A ByteMatchSet that matches BadBot in the User-Agent header Further, you specify a RateLimit of 15,000. You then add the RateBasedRule to a WebACL and specify that you want to block requests that meet the conditions in the rule. For a request to be blocked, it must come from the IP address 192.0.2.44 and the User-Agent header in the request must contain the value BadBot. Further, requests that match these two conditions must be received at a rate of more than 15,000 requests every five minutes. If both conditions are met and the rate is exceeded, AWS WAF blocks the requests. If the rate drops below 15,000 for a five-minute period, AWS WAF no longer blocks the requests. As a second example, suppose you want to limit requests to a particular page on your site. To do this, you could add the following to a RateBasedRule: A ByteMatchSet with FieldToMatch of URI A PositionalConstraint of STARTS_WITH A TargetString of login Further, you specify a RateLimit of 15,000. By adding this RateBasedRule to a WebACL, you could limit requests to your login page without affecting the rest of your site. To create and configure a RateBasedRule, perform the following steps: Create and update the predicates that you want to include in the rule. For more information, see CreateByteMatchSet, CreateIPSet, and CreateSqlInjectionMatchSet. Use GetChangeToken to get the change token that you provide in the ChangeToken parameter of a CreateRule request. Submit a CreateRateBasedRule request. Use GetChangeToken to get the change token that you provide in the ChangeToken parameter of an UpdateRule request. Submit an UpdateRateBasedRule request to specify the predicates that you want to include in the rule. Create and update a WebACL that contains the RateBasedRule. For more information, see CreateWebACL. For more information about how to use the AWS WAF API to allow or block HTTP requests, see the AWS WAF Developer Guide. - */ - createRateBasedRule(callback?: (err: AWSError, data: WAFRegional.Types.CreateRateBasedRuleResponse) => void): Request; - /** - * Creates a Rule, which contains the IPSet objects, ByteMatchSet objects, and other predicates that identify the requests that you want to block. If you add more than one predicate to a Rule, a request must match all of the specifications to be allowed or blocked. For example, suppose you add the following to a Rule: An IPSet that matches the IP address 192.0.2.44/32 A ByteMatchSet that matches BadBot in the User-Agent header You then add the Rule to a WebACL and specify that you want to blocks requests that satisfy the Rule. For a request to be blocked, it must come from the IP address 192.0.2.44 and the User-Agent header in the request must contain the value BadBot. To create and configure a Rule, perform the following steps: Create and update the predicates that you want to include in the Rule. For more information, see CreateByteMatchSet, CreateIPSet, and CreateSqlInjectionMatchSet. Use GetChangeToken to get the change token that you provide in the ChangeToken parameter of a CreateRule request. Submit a CreateRule request. Use GetChangeToken to get the change token that you provide in the ChangeToken parameter of an UpdateRule request. Submit an UpdateRule request to specify the predicates that you want to include in the Rule. Create and update a WebACL that contains the Rule. For more information, see CreateWebACL. For more information about how to use the AWS WAF API to allow or block HTTP requests, see the AWS WAF Developer Guide. - */ - createRule(params: WAFRegional.Types.CreateRuleRequest, callback?: (err: AWSError, data: WAFRegional.Types.CreateRuleResponse) => void): Request; - /** - * Creates a Rule, which contains the IPSet objects, ByteMatchSet objects, and other predicates that identify the requests that you want to block. If you add more than one predicate to a Rule, a request must match all of the specifications to be allowed or blocked. For example, suppose you add the following to a Rule: An IPSet that matches the IP address 192.0.2.44/32 A ByteMatchSet that matches BadBot in the User-Agent header You then add the Rule to a WebACL and specify that you want to blocks requests that satisfy the Rule. For a request to be blocked, it must come from the IP address 192.0.2.44 and the User-Agent header in the request must contain the value BadBot. To create and configure a Rule, perform the following steps: Create and update the predicates that you want to include in the Rule. For more information, see CreateByteMatchSet, CreateIPSet, and CreateSqlInjectionMatchSet. Use GetChangeToken to get the change token that you provide in the ChangeToken parameter of a CreateRule request. Submit a CreateRule request. Use GetChangeToken to get the change token that you provide in the ChangeToken parameter of an UpdateRule request. Submit an UpdateRule request to specify the predicates that you want to include in the Rule. Create and update a WebACL that contains the Rule. For more information, see CreateWebACL. For more information about how to use the AWS WAF API to allow or block HTTP requests, see the AWS WAF Developer Guide. - */ - createRule(callback?: (err: AWSError, data: WAFRegional.Types.CreateRuleResponse) => void): Request; - /** - * Creates a SizeConstraintSet. You then use UpdateSizeConstraintSet to identify the part of a web request that you want AWS WAF to check for length, such as the length of the User-Agent header or the length of the query string. For example, you can create a SizeConstraintSet that matches any requests that have a query string that is longer than 100 bytes. You can then configure AWS WAF to reject those requests. To create and configure a SizeConstraintSet, perform the following steps: Use GetChangeToken to get the change token that you provide in the ChangeToken parameter of a CreateSizeConstraintSet request. Submit a CreateSizeConstraintSet request. Use GetChangeToken to get the change token that you provide in the ChangeToken parameter of an UpdateSizeConstraintSet request. Submit an UpdateSizeConstraintSet request to specify the part of the request that you want AWS WAF to inspect (for example, the header or the URI) and the value that you want AWS WAF to watch for. For more information about how to use the AWS WAF API to allow or block HTTP requests, see the AWS WAF Developer Guide. - */ - createSizeConstraintSet(params: WAFRegional.Types.CreateSizeConstraintSetRequest, callback?: (err: AWSError, data: WAFRegional.Types.CreateSizeConstraintSetResponse) => void): Request; - /** - * Creates a SizeConstraintSet. You then use UpdateSizeConstraintSet to identify the part of a web request that you want AWS WAF to check for length, such as the length of the User-Agent header or the length of the query string. For example, you can create a SizeConstraintSet that matches any requests that have a query string that is longer than 100 bytes. You can then configure AWS WAF to reject those requests. To create and configure a SizeConstraintSet, perform the following steps: Use GetChangeToken to get the change token that you provide in the ChangeToken parameter of a CreateSizeConstraintSet request. Submit a CreateSizeConstraintSet request. Use GetChangeToken to get the change token that you provide in the ChangeToken parameter of an UpdateSizeConstraintSet request. Submit an UpdateSizeConstraintSet request to specify the part of the request that you want AWS WAF to inspect (for example, the header or the URI) and the value that you want AWS WAF to watch for. For more information about how to use the AWS WAF API to allow or block HTTP requests, see the AWS WAF Developer Guide. - */ - createSizeConstraintSet(callback?: (err: AWSError, data: WAFRegional.Types.CreateSizeConstraintSetResponse) => void): Request; - /** - * Creates a SqlInjectionMatchSet, which you use to allow, block, or count requests that contain snippets of SQL code in a specified part of web requests. AWS WAF searches for character sequences that are likely to be malicious strings. To create and configure a SqlInjectionMatchSet, perform the following steps: Use GetChangeToken to get the change token that you provide in the ChangeToken parameter of a CreateSqlInjectionMatchSet request. Submit a CreateSqlInjectionMatchSet request. Use GetChangeToken to get the change token that you provide in the ChangeToken parameter of an UpdateSqlInjectionMatchSet request. Submit an UpdateSqlInjectionMatchSet request to specify the parts of web requests in which you want to allow, block, or count malicious SQL code. For more information about how to use the AWS WAF API to allow or block HTTP requests, see the AWS WAF Developer Guide. - */ - createSqlInjectionMatchSet(params: WAFRegional.Types.CreateSqlInjectionMatchSetRequest, callback?: (err: AWSError, data: WAFRegional.Types.CreateSqlInjectionMatchSetResponse) => void): Request; - /** - * Creates a SqlInjectionMatchSet, which you use to allow, block, or count requests that contain snippets of SQL code in a specified part of web requests. AWS WAF searches for character sequences that are likely to be malicious strings. To create and configure a SqlInjectionMatchSet, perform the following steps: Use GetChangeToken to get the change token that you provide in the ChangeToken parameter of a CreateSqlInjectionMatchSet request. Submit a CreateSqlInjectionMatchSet request. Use GetChangeToken to get the change token that you provide in the ChangeToken parameter of an UpdateSqlInjectionMatchSet request. Submit an UpdateSqlInjectionMatchSet request to specify the parts of web requests in which you want to allow, block, or count malicious SQL code. For more information about how to use the AWS WAF API to allow or block HTTP requests, see the AWS WAF Developer Guide. - */ - createSqlInjectionMatchSet(callback?: (err: AWSError, data: WAFRegional.Types.CreateSqlInjectionMatchSetResponse) => void): Request; - /** - * Creates a WebACL, which contains the Rules that identify the CloudFront web requests that you want to allow, block, or count. AWS WAF evaluates Rules in order based on the value of Priority for each Rule. You also specify a default action, either ALLOW or BLOCK. If a web request doesn't match any of the Rules in a WebACL, AWS WAF responds to the request with the default action. To create and configure a WebACL, perform the following steps: Create and update the ByteMatchSet objects and other predicates that you want to include in Rules. For more information, see CreateByteMatchSet, UpdateByteMatchSet, CreateIPSet, UpdateIPSet, CreateSqlInjectionMatchSet, and UpdateSqlInjectionMatchSet. Create and update the Rules that you want to include in the WebACL. For more information, see CreateRule and UpdateRule. Use GetChangeToken to get the change token that you provide in the ChangeToken parameter of a CreateWebACL request. Submit a CreateWebACL request. Use GetChangeToken to get the change token that you provide in the ChangeToken parameter of an UpdateWebACL request. Submit an UpdateWebACL request to specify the Rules that you want to include in the WebACL, to specify the default action, and to associate the WebACL with a CloudFront distribution. For more information about how to use the AWS WAF API, see the AWS WAF Developer Guide. - */ - createWebACL(params: WAFRegional.Types.CreateWebACLRequest, callback?: (err: AWSError, data: WAFRegional.Types.CreateWebACLResponse) => void): Request; - /** - * Creates a WebACL, which contains the Rules that identify the CloudFront web requests that you want to allow, block, or count. AWS WAF evaluates Rules in order based on the value of Priority for each Rule. You also specify a default action, either ALLOW or BLOCK. If a web request doesn't match any of the Rules in a WebACL, AWS WAF responds to the request with the default action. To create and configure a WebACL, perform the following steps: Create and update the ByteMatchSet objects and other predicates that you want to include in Rules. For more information, see CreateByteMatchSet, UpdateByteMatchSet, CreateIPSet, UpdateIPSet, CreateSqlInjectionMatchSet, and UpdateSqlInjectionMatchSet. Create and update the Rules that you want to include in the WebACL. For more information, see CreateRule and UpdateRule. Use GetChangeToken to get the change token that you provide in the ChangeToken parameter of a CreateWebACL request. Submit a CreateWebACL request. Use GetChangeToken to get the change token that you provide in the ChangeToken parameter of an UpdateWebACL request. Submit an UpdateWebACL request to specify the Rules that you want to include in the WebACL, to specify the default action, and to associate the WebACL with a CloudFront distribution. For more information about how to use the AWS WAF API, see the AWS WAF Developer Guide. - */ - createWebACL(callback?: (err: AWSError, data: WAFRegional.Types.CreateWebACLResponse) => void): Request; - /** - * Creates an XssMatchSet, which you use to allow, block, or count requests that contain cross-site scripting attacks in the specified part of web requests. AWS WAF searches for character sequences that are likely to be malicious strings. To create and configure an XssMatchSet, perform the following steps: Use GetChangeToken to get the change token that you provide in the ChangeToken parameter of a CreateXssMatchSet request. Submit a CreateXssMatchSet request. Use GetChangeToken to get the change token that you provide in the ChangeToken parameter of an UpdateXssMatchSet request. Submit an UpdateXssMatchSet request to specify the parts of web requests in which you want to allow, block, or count cross-site scripting attacks. For more information about how to use the AWS WAF API to allow or block HTTP requests, see the AWS WAF Developer Guide. - */ - createXssMatchSet(params: WAFRegional.Types.CreateXssMatchSetRequest, callback?: (err: AWSError, data: WAFRegional.Types.CreateXssMatchSetResponse) => void): Request; - /** - * Creates an XssMatchSet, which you use to allow, block, or count requests that contain cross-site scripting attacks in the specified part of web requests. AWS WAF searches for character sequences that are likely to be malicious strings. To create and configure an XssMatchSet, perform the following steps: Use GetChangeToken to get the change token that you provide in the ChangeToken parameter of a CreateXssMatchSet request. Submit a CreateXssMatchSet request. Use GetChangeToken to get the change token that you provide in the ChangeToken parameter of an UpdateXssMatchSet request. Submit an UpdateXssMatchSet request to specify the parts of web requests in which you want to allow, block, or count cross-site scripting attacks. For more information about how to use the AWS WAF API to allow or block HTTP requests, see the AWS WAF Developer Guide. - */ - createXssMatchSet(callback?: (err: AWSError, data: WAFRegional.Types.CreateXssMatchSetResponse) => void): Request; - /** - * Permanently deletes a ByteMatchSet. You can't delete a ByteMatchSet if it's still used in any Rules or if it still includes any ByteMatchTuple objects (any filters). If you just want to remove a ByteMatchSet from a Rule, use UpdateRule. To permanently delete a ByteMatchSet, perform the following steps: Update the ByteMatchSet to remove filters, if any. For more information, see UpdateByteMatchSet. Use GetChangeToken to get the change token that you provide in the ChangeToken parameter of a DeleteByteMatchSet request. Submit a DeleteByteMatchSet request. - */ - deleteByteMatchSet(params: WAFRegional.Types.DeleteByteMatchSetRequest, callback?: (err: AWSError, data: WAFRegional.Types.DeleteByteMatchSetResponse) => void): Request; - /** - * Permanently deletes a ByteMatchSet. You can't delete a ByteMatchSet if it's still used in any Rules or if it still includes any ByteMatchTuple objects (any filters). If you just want to remove a ByteMatchSet from a Rule, use UpdateRule. To permanently delete a ByteMatchSet, perform the following steps: Update the ByteMatchSet to remove filters, if any. For more information, see UpdateByteMatchSet. Use GetChangeToken to get the change token that you provide in the ChangeToken parameter of a DeleteByteMatchSet request. Submit a DeleteByteMatchSet request. - */ - deleteByteMatchSet(callback?: (err: AWSError, data: WAFRegional.Types.DeleteByteMatchSetResponse) => void): Request; - /** - * Permanently deletes an IPSet. You can't delete an IPSet if it's still used in any Rules or if it still includes any IP addresses. If you just want to remove an IPSet from a Rule, use UpdateRule. To permanently delete an IPSet from AWS WAF, perform the following steps: Update the IPSet to remove IP address ranges, if any. For more information, see UpdateIPSet. Use GetChangeToken to get the change token that you provide in the ChangeToken parameter of a DeleteIPSet request. Submit a DeleteIPSet request. - */ - deleteIPSet(params: WAFRegional.Types.DeleteIPSetRequest, callback?: (err: AWSError, data: WAFRegional.Types.DeleteIPSetResponse) => void): Request; - /** - * Permanently deletes an IPSet. You can't delete an IPSet if it's still used in any Rules or if it still includes any IP addresses. If you just want to remove an IPSet from a Rule, use UpdateRule. To permanently delete an IPSet from AWS WAF, perform the following steps: Update the IPSet to remove IP address ranges, if any. For more information, see UpdateIPSet. Use GetChangeToken to get the change token that you provide in the ChangeToken parameter of a DeleteIPSet request. Submit a DeleteIPSet request. - */ - deleteIPSet(callback?: (err: AWSError, data: WAFRegional.Types.DeleteIPSetResponse) => void): Request; - /** - * Permanently deletes a RateBasedRule. You can't delete a rule if it's still used in any WebACL objects or if it still includes any predicates, such as ByteMatchSet objects. If you just want to remove a rule from a WebACL, use UpdateWebACL. To permanently delete a RateBasedRule from AWS WAF, perform the following steps: Update the RateBasedRule to remove predicates, if any. For more information, see UpdateRateBasedRule. Use GetChangeToken to get the change token that you provide in the ChangeToken parameter of a DeleteRateBasedRule request. Submit a DeleteRateBasedRule request. - */ - deleteRateBasedRule(params: WAFRegional.Types.DeleteRateBasedRuleRequest, callback?: (err: AWSError, data: WAFRegional.Types.DeleteRateBasedRuleResponse) => void): Request; - /** - * Permanently deletes a RateBasedRule. You can't delete a rule if it's still used in any WebACL objects or if it still includes any predicates, such as ByteMatchSet objects. If you just want to remove a rule from a WebACL, use UpdateWebACL. To permanently delete a RateBasedRule from AWS WAF, perform the following steps: Update the RateBasedRule to remove predicates, if any. For more information, see UpdateRateBasedRule. Use GetChangeToken to get the change token that you provide in the ChangeToken parameter of a DeleteRateBasedRule request. Submit a DeleteRateBasedRule request. - */ - deleteRateBasedRule(callback?: (err: AWSError, data: WAFRegional.Types.DeleteRateBasedRuleResponse) => void): Request; - /** - * Permanently deletes a Rule. You can't delete a Rule if it's still used in any WebACL objects or if it still includes any predicates, such as ByteMatchSet objects. If you just want to remove a Rule from a WebACL, use UpdateWebACL. To permanently delete a Rule from AWS WAF, perform the following steps: Update the Rule to remove predicates, if any. For more information, see UpdateRule. Use GetChangeToken to get the change token that you provide in the ChangeToken parameter of a DeleteRule request. Submit a DeleteRule request. - */ - deleteRule(params: WAFRegional.Types.DeleteRuleRequest, callback?: (err: AWSError, data: WAFRegional.Types.DeleteRuleResponse) => void): Request; - /** - * Permanently deletes a Rule. You can't delete a Rule if it's still used in any WebACL objects or if it still includes any predicates, such as ByteMatchSet objects. If you just want to remove a Rule from a WebACL, use UpdateWebACL. To permanently delete a Rule from AWS WAF, perform the following steps: Update the Rule to remove predicates, if any. For more information, see UpdateRule. Use GetChangeToken to get the change token that you provide in the ChangeToken parameter of a DeleteRule request. Submit a DeleteRule request. - */ - deleteRule(callback?: (err: AWSError, data: WAFRegional.Types.DeleteRuleResponse) => void): Request; - /** - * Permanently deletes a SizeConstraintSet. You can't delete a SizeConstraintSet if it's still used in any Rules or if it still includes any SizeConstraint objects (any filters). If you just want to remove a SizeConstraintSet from a Rule, use UpdateRule. To permanently delete a SizeConstraintSet, perform the following steps: Update the SizeConstraintSet to remove filters, if any. For more information, see UpdateSizeConstraintSet. Use GetChangeToken to get the change token that you provide in the ChangeToken parameter of a DeleteSizeConstraintSet request. Submit a DeleteSizeConstraintSet request. - */ - deleteSizeConstraintSet(params: WAFRegional.Types.DeleteSizeConstraintSetRequest, callback?: (err: AWSError, data: WAFRegional.Types.DeleteSizeConstraintSetResponse) => void): Request; - /** - * Permanently deletes a SizeConstraintSet. You can't delete a SizeConstraintSet if it's still used in any Rules or if it still includes any SizeConstraint objects (any filters). If you just want to remove a SizeConstraintSet from a Rule, use UpdateRule. To permanently delete a SizeConstraintSet, perform the following steps: Update the SizeConstraintSet to remove filters, if any. For more information, see UpdateSizeConstraintSet. Use GetChangeToken to get the change token that you provide in the ChangeToken parameter of a DeleteSizeConstraintSet request. Submit a DeleteSizeConstraintSet request. - */ - deleteSizeConstraintSet(callback?: (err: AWSError, data: WAFRegional.Types.DeleteSizeConstraintSetResponse) => void): Request; - /** - * Permanently deletes a SqlInjectionMatchSet. You can't delete a SqlInjectionMatchSet if it's still used in any Rules or if it still contains any SqlInjectionMatchTuple objects. If you just want to remove a SqlInjectionMatchSet from a Rule, use UpdateRule. To permanently delete a SqlInjectionMatchSet from AWS WAF, perform the following steps: Update the SqlInjectionMatchSet to remove filters, if any. For more information, see UpdateSqlInjectionMatchSet. Use GetChangeToken to get the change token that you provide in the ChangeToken parameter of a DeleteSqlInjectionMatchSet request. Submit a DeleteSqlInjectionMatchSet request. - */ - deleteSqlInjectionMatchSet(params: WAFRegional.Types.DeleteSqlInjectionMatchSetRequest, callback?: (err: AWSError, data: WAFRegional.Types.DeleteSqlInjectionMatchSetResponse) => void): Request; - /** - * Permanently deletes a SqlInjectionMatchSet. You can't delete a SqlInjectionMatchSet if it's still used in any Rules or if it still contains any SqlInjectionMatchTuple objects. If you just want to remove a SqlInjectionMatchSet from a Rule, use UpdateRule. To permanently delete a SqlInjectionMatchSet from AWS WAF, perform the following steps: Update the SqlInjectionMatchSet to remove filters, if any. For more information, see UpdateSqlInjectionMatchSet. Use GetChangeToken to get the change token that you provide in the ChangeToken parameter of a DeleteSqlInjectionMatchSet request. Submit a DeleteSqlInjectionMatchSet request. - */ - deleteSqlInjectionMatchSet(callback?: (err: AWSError, data: WAFRegional.Types.DeleteSqlInjectionMatchSetResponse) => void): Request; - /** - * Permanently deletes a WebACL. You can't delete a WebACL if it still contains any Rules. To delete a WebACL, perform the following steps: Update the WebACL to remove Rules, if any. For more information, see UpdateWebACL. Use GetChangeToken to get the change token that you provide in the ChangeToken parameter of a DeleteWebACL request. Submit a DeleteWebACL request. - */ - deleteWebACL(params: WAFRegional.Types.DeleteWebACLRequest, callback?: (err: AWSError, data: WAFRegional.Types.DeleteWebACLResponse) => void): Request; - /** - * Permanently deletes a WebACL. You can't delete a WebACL if it still contains any Rules. To delete a WebACL, perform the following steps: Update the WebACL to remove Rules, if any. For more information, see UpdateWebACL. Use GetChangeToken to get the change token that you provide in the ChangeToken parameter of a DeleteWebACL request. Submit a DeleteWebACL request. - */ - deleteWebACL(callback?: (err: AWSError, data: WAFRegional.Types.DeleteWebACLResponse) => void): Request; - /** - * Permanently deletes an XssMatchSet. You can't delete an XssMatchSet if it's still used in any Rules or if it still contains any XssMatchTuple objects. If you just want to remove an XssMatchSet from a Rule, use UpdateRule. To permanently delete an XssMatchSet from AWS WAF, perform the following steps: Update the XssMatchSet to remove filters, if any. For more information, see UpdateXssMatchSet. Use GetChangeToken to get the change token that you provide in the ChangeToken parameter of a DeleteXssMatchSet request. Submit a DeleteXssMatchSet request. - */ - deleteXssMatchSet(params: WAFRegional.Types.DeleteXssMatchSetRequest, callback?: (err: AWSError, data: WAFRegional.Types.DeleteXssMatchSetResponse) => void): Request; - /** - * Permanently deletes an XssMatchSet. You can't delete an XssMatchSet if it's still used in any Rules or if it still contains any XssMatchTuple objects. If you just want to remove an XssMatchSet from a Rule, use UpdateRule. To permanently delete an XssMatchSet from AWS WAF, perform the following steps: Update the XssMatchSet to remove filters, if any. For more information, see UpdateXssMatchSet. Use GetChangeToken to get the change token that you provide in the ChangeToken parameter of a DeleteXssMatchSet request. Submit a DeleteXssMatchSet request. - */ - deleteXssMatchSet(callback?: (err: AWSError, data: WAFRegional.Types.DeleteXssMatchSetResponse) => void): Request; - /** - * Removes a web ACL from the specified resource. - */ - disassociateWebACL(params: WAFRegional.Types.DisassociateWebACLRequest, callback?: (err: AWSError, data: WAFRegional.Types.DisassociateWebACLResponse) => void): Request; - /** - * Removes a web ACL from the specified resource. - */ - disassociateWebACL(callback?: (err: AWSError, data: WAFRegional.Types.DisassociateWebACLResponse) => void): Request; - /** - * Returns the ByteMatchSet specified by ByteMatchSetId. - */ - getByteMatchSet(params: WAFRegional.Types.GetByteMatchSetRequest, callback?: (err: AWSError, data: WAFRegional.Types.GetByteMatchSetResponse) => void): Request; - /** - * Returns the ByteMatchSet specified by ByteMatchSetId. - */ - getByteMatchSet(callback?: (err: AWSError, data: WAFRegional.Types.GetByteMatchSetResponse) => void): Request; - /** - * When you want to create, update, or delete AWS WAF objects, get a change token and include the change token in the create, update, or delete request. Change tokens ensure that your application doesn't submit conflicting requests to AWS WAF. Each create, update, or delete request must use a unique change token. If your application submits a GetChangeToken request and then submits a second GetChangeToken request before submitting a create, update, or delete request, the second GetChangeToken request returns the same value as the first GetChangeToken request. When you use a change token in a create, update, or delete request, the status of the change token changes to PENDING, which indicates that AWS WAF is propagating the change to all AWS WAF servers. Use GetChangeTokenStatus to determine the status of your change token. - */ - getChangeToken(params: WAFRegional.Types.GetChangeTokenRequest, callback?: (err: AWSError, data: WAFRegional.Types.GetChangeTokenResponse) => void): Request; - /** - * When you want to create, update, or delete AWS WAF objects, get a change token and include the change token in the create, update, or delete request. Change tokens ensure that your application doesn't submit conflicting requests to AWS WAF. Each create, update, or delete request must use a unique change token. If your application submits a GetChangeToken request and then submits a second GetChangeToken request before submitting a create, update, or delete request, the second GetChangeToken request returns the same value as the first GetChangeToken request. When you use a change token in a create, update, or delete request, the status of the change token changes to PENDING, which indicates that AWS WAF is propagating the change to all AWS WAF servers. Use GetChangeTokenStatus to determine the status of your change token. - */ - getChangeToken(callback?: (err: AWSError, data: WAFRegional.Types.GetChangeTokenResponse) => void): Request; - /** - * Returns the status of a ChangeToken that you got by calling GetChangeToken. ChangeTokenStatus is one of the following values: PROVISIONED: You requested the change token by calling GetChangeToken, but you haven't used it yet in a call to create, update, or delete an AWS WAF object. PENDING: AWS WAF is propagating the create, update, or delete request to all AWS WAF servers. IN_SYNC: Propagation is complete. - */ - getChangeTokenStatus(params: WAFRegional.Types.GetChangeTokenStatusRequest, callback?: (err: AWSError, data: WAFRegional.Types.GetChangeTokenStatusResponse) => void): Request; - /** - * Returns the status of a ChangeToken that you got by calling GetChangeToken. ChangeTokenStatus is one of the following values: PROVISIONED: You requested the change token by calling GetChangeToken, but you haven't used it yet in a call to create, update, or delete an AWS WAF object. PENDING: AWS WAF is propagating the create, update, or delete request to all AWS WAF servers. IN_SYNC: Propagation is complete. - */ - getChangeTokenStatus(callback?: (err: AWSError, data: WAFRegional.Types.GetChangeTokenStatusResponse) => void): Request; - /** - * Returns the IPSet that is specified by IPSetId. - */ - getIPSet(params: WAFRegional.Types.GetIPSetRequest, callback?: (err: AWSError, data: WAFRegional.Types.GetIPSetResponse) => void): Request; - /** - * Returns the IPSet that is specified by IPSetId. - */ - getIPSet(callback?: (err: AWSError, data: WAFRegional.Types.GetIPSetResponse) => void): Request; - /** - * Returns the RateBasedRule that is specified by the RuleId that you included in the GetRateBasedRule request. - */ - getRateBasedRule(params: WAFRegional.Types.GetRateBasedRuleRequest, callback?: (err: AWSError, data: WAFRegional.Types.GetRateBasedRuleResponse) => void): Request; - /** - * Returns the RateBasedRule that is specified by the RuleId that you included in the GetRateBasedRule request. - */ - getRateBasedRule(callback?: (err: AWSError, data: WAFRegional.Types.GetRateBasedRuleResponse) => void): Request; - /** - * Returns an array of IP addresses currently being blocked by the RateBasedRule that is specified by the RuleId. The maximum number of managed keys that will be blocked is 10,000. If more than 10,000 addresses exceed the rate limit, the 10,000 addresses with the highest rates will be blocked. - */ - getRateBasedRuleManagedKeys(params: WAFRegional.Types.GetRateBasedRuleManagedKeysRequest, callback?: (err: AWSError, data: WAFRegional.Types.GetRateBasedRuleManagedKeysResponse) => void): Request; - /** - * Returns an array of IP addresses currently being blocked by the RateBasedRule that is specified by the RuleId. The maximum number of managed keys that will be blocked is 10,000. If more than 10,000 addresses exceed the rate limit, the 10,000 addresses with the highest rates will be blocked. - */ - getRateBasedRuleManagedKeys(callback?: (err: AWSError, data: WAFRegional.Types.GetRateBasedRuleManagedKeysResponse) => void): Request; - /** - * Returns the Rule that is specified by the RuleId that you included in the GetRule request. - */ - getRule(params: WAFRegional.Types.GetRuleRequest, callback?: (err: AWSError, data: WAFRegional.Types.GetRuleResponse) => void): Request; - /** - * Returns the Rule that is specified by the RuleId that you included in the GetRule request. - */ - getRule(callback?: (err: AWSError, data: WAFRegional.Types.GetRuleResponse) => void): Request; - /** - * Gets detailed information about a specified number of requests--a sample--that AWS WAF randomly selects from among the first 5,000 requests that your AWS resource received during a time range that you choose. You can specify a sample size of up to 500 requests, and you can specify any time range in the previous three hours. GetSampledRequests returns a time range, which is usually the time range that you specified. However, if your resource (such as a CloudFront distribution) received 5,000 requests before the specified time range elapsed, GetSampledRequests returns an updated time range. This new time range indicates the actual period during which AWS WAF selected the requests in the sample. - */ - getSampledRequests(params: WAFRegional.Types.GetSampledRequestsRequest, callback?: (err: AWSError, data: WAFRegional.Types.GetSampledRequestsResponse) => void): Request; - /** - * Gets detailed information about a specified number of requests--a sample--that AWS WAF randomly selects from among the first 5,000 requests that your AWS resource received during a time range that you choose. You can specify a sample size of up to 500 requests, and you can specify any time range in the previous three hours. GetSampledRequests returns a time range, which is usually the time range that you specified. However, if your resource (such as a CloudFront distribution) received 5,000 requests before the specified time range elapsed, GetSampledRequests returns an updated time range. This new time range indicates the actual period during which AWS WAF selected the requests in the sample. - */ - getSampledRequests(callback?: (err: AWSError, data: WAFRegional.Types.GetSampledRequestsResponse) => void): Request; - /** - * Returns the SizeConstraintSet specified by SizeConstraintSetId. - */ - getSizeConstraintSet(params: WAFRegional.Types.GetSizeConstraintSetRequest, callback?: (err: AWSError, data: WAFRegional.Types.GetSizeConstraintSetResponse) => void): Request; - /** - * Returns the SizeConstraintSet specified by SizeConstraintSetId. - */ - getSizeConstraintSet(callback?: (err: AWSError, data: WAFRegional.Types.GetSizeConstraintSetResponse) => void): Request; - /** - * Returns the SqlInjectionMatchSet that is specified by SqlInjectionMatchSetId. - */ - getSqlInjectionMatchSet(params: WAFRegional.Types.GetSqlInjectionMatchSetRequest, callback?: (err: AWSError, data: WAFRegional.Types.GetSqlInjectionMatchSetResponse) => void): Request; - /** - * Returns the SqlInjectionMatchSet that is specified by SqlInjectionMatchSetId. - */ - getSqlInjectionMatchSet(callback?: (err: AWSError, data: WAFRegional.Types.GetSqlInjectionMatchSetResponse) => void): Request; - /** - * Returns the WebACL that is specified by WebACLId. - */ - getWebACL(params: WAFRegional.Types.GetWebACLRequest, callback?: (err: AWSError, data: WAFRegional.Types.GetWebACLResponse) => void): Request; - /** - * Returns the WebACL that is specified by WebACLId. - */ - getWebACL(callback?: (err: AWSError, data: WAFRegional.Types.GetWebACLResponse) => void): Request; - /** - * Returns the web ACL for the specified resource. - */ - getWebACLForResource(params: WAFRegional.Types.GetWebACLForResourceRequest, callback?: (err: AWSError, data: WAFRegional.Types.GetWebACLForResourceResponse) => void): Request; - /** - * Returns the web ACL for the specified resource. - */ - getWebACLForResource(callback?: (err: AWSError, data: WAFRegional.Types.GetWebACLForResourceResponse) => void): Request; - /** - * Returns the XssMatchSet that is specified by XssMatchSetId. - */ - getXssMatchSet(params: WAFRegional.Types.GetXssMatchSetRequest, callback?: (err: AWSError, data: WAFRegional.Types.GetXssMatchSetResponse) => void): Request; - /** - * Returns the XssMatchSet that is specified by XssMatchSetId. - */ - getXssMatchSet(callback?: (err: AWSError, data: WAFRegional.Types.GetXssMatchSetResponse) => void): Request; - /** - * Returns an array of ByteMatchSetSummary objects. - */ - listByteMatchSets(params: WAFRegional.Types.ListByteMatchSetsRequest, callback?: (err: AWSError, data: WAFRegional.Types.ListByteMatchSetsResponse) => void): Request; - /** - * Returns an array of ByteMatchSetSummary objects. - */ - listByteMatchSets(callback?: (err: AWSError, data: WAFRegional.Types.ListByteMatchSetsResponse) => void): Request; - /** - * Returns an array of IPSetSummary objects in the response. - */ - listIPSets(params: WAFRegional.Types.ListIPSetsRequest, callback?: (err: AWSError, data: WAFRegional.Types.ListIPSetsResponse) => void): Request; - /** - * Returns an array of IPSetSummary objects in the response. - */ - listIPSets(callback?: (err: AWSError, data: WAFRegional.Types.ListIPSetsResponse) => void): Request; - /** - * Returns an array of RuleSummary objects. - */ - listRateBasedRules(params: WAFRegional.Types.ListRateBasedRulesRequest, callback?: (err: AWSError, data: WAFRegional.Types.ListRateBasedRulesResponse) => void): Request; - /** - * Returns an array of RuleSummary objects. - */ - listRateBasedRules(callback?: (err: AWSError, data: WAFRegional.Types.ListRateBasedRulesResponse) => void): Request; - /** - * Returns an array of resources associated with the specified web ACL. - */ - listResourcesForWebACL(params: WAFRegional.Types.ListResourcesForWebACLRequest, callback?: (err: AWSError, data: WAFRegional.Types.ListResourcesForWebACLResponse) => void): Request; - /** - * Returns an array of resources associated with the specified web ACL. - */ - listResourcesForWebACL(callback?: (err: AWSError, data: WAFRegional.Types.ListResourcesForWebACLResponse) => void): Request; - /** - * Returns an array of RuleSummary objects. - */ - listRules(params: WAFRegional.Types.ListRulesRequest, callback?: (err: AWSError, data: WAFRegional.Types.ListRulesResponse) => void): Request; - /** - * Returns an array of RuleSummary objects. - */ - listRules(callback?: (err: AWSError, data: WAFRegional.Types.ListRulesResponse) => void): Request; - /** - * Returns an array of SizeConstraintSetSummary objects. - */ - listSizeConstraintSets(params: WAFRegional.Types.ListSizeConstraintSetsRequest, callback?: (err: AWSError, data: WAFRegional.Types.ListSizeConstraintSetsResponse) => void): Request; - /** - * Returns an array of SizeConstraintSetSummary objects. - */ - listSizeConstraintSets(callback?: (err: AWSError, data: WAFRegional.Types.ListSizeConstraintSetsResponse) => void): Request; - /** - * Returns an array of SqlInjectionMatchSet objects. - */ - listSqlInjectionMatchSets(params: WAFRegional.Types.ListSqlInjectionMatchSetsRequest, callback?: (err: AWSError, data: WAFRegional.Types.ListSqlInjectionMatchSetsResponse) => void): Request; - /** - * Returns an array of SqlInjectionMatchSet objects. - */ - listSqlInjectionMatchSets(callback?: (err: AWSError, data: WAFRegional.Types.ListSqlInjectionMatchSetsResponse) => void): Request; - /** - * Returns an array of WebACLSummary objects in the response. - */ - listWebACLs(params: WAFRegional.Types.ListWebACLsRequest, callback?: (err: AWSError, data: WAFRegional.Types.ListWebACLsResponse) => void): Request; - /** - * Returns an array of WebACLSummary objects in the response. - */ - listWebACLs(callback?: (err: AWSError, data: WAFRegional.Types.ListWebACLsResponse) => void): Request; - /** - * Returns an array of XssMatchSet objects. - */ - listXssMatchSets(params: WAFRegional.Types.ListXssMatchSetsRequest, callback?: (err: AWSError, data: WAFRegional.Types.ListXssMatchSetsResponse) => void): Request; - /** - * Returns an array of XssMatchSet objects. - */ - listXssMatchSets(callback?: (err: AWSError, data: WAFRegional.Types.ListXssMatchSetsResponse) => void): Request; - /** - * Inserts or deletes ByteMatchTuple objects (filters) in a ByteMatchSet. For each ByteMatchTuple object, you specify the following values: Whether to insert or delete the object from the array. If you want to change a ByteMatchSetUpdate object, you delete the existing object and add a new one. The part of a web request that you want AWS WAF to inspect, such as a query string or the value of the User-Agent header. The bytes (typically a string that corresponds with ASCII characters) that you want AWS WAF to look for. For more information, including how you specify the values for the AWS WAF API and the AWS CLI or SDKs, see TargetString in the ByteMatchTuple data type. Where to look, such as at the beginning or the end of a query string. Whether to perform any conversions on the request, such as converting it to lowercase, before inspecting it for the specified string. For example, you can add a ByteMatchSetUpdate object that matches web requests in which User-Agent headers contain the string BadBot. You can then configure AWS WAF to block those requests. To create and configure a ByteMatchSet, perform the following steps: Create a ByteMatchSet. For more information, see CreateByteMatchSet. Use GetChangeToken to get the change token that you provide in the ChangeToken parameter of an UpdateByteMatchSet request. Submit an UpdateByteMatchSet request to specify the part of the request that you want AWS WAF to inspect (for example, the header or the URI) and the value that you want AWS WAF to watch for. For more information about how to use the AWS WAF API to allow or block HTTP requests, see the AWS WAF Developer Guide. - */ - updateByteMatchSet(params: WAFRegional.Types.UpdateByteMatchSetRequest, callback?: (err: AWSError, data: WAFRegional.Types.UpdateByteMatchSetResponse) => void): Request; - /** - * Inserts or deletes ByteMatchTuple objects (filters) in a ByteMatchSet. For each ByteMatchTuple object, you specify the following values: Whether to insert or delete the object from the array. If you want to change a ByteMatchSetUpdate object, you delete the existing object and add a new one. The part of a web request that you want AWS WAF to inspect, such as a query string or the value of the User-Agent header. The bytes (typically a string that corresponds with ASCII characters) that you want AWS WAF to look for. For more information, including how you specify the values for the AWS WAF API and the AWS CLI or SDKs, see TargetString in the ByteMatchTuple data type. Where to look, such as at the beginning or the end of a query string. Whether to perform any conversions on the request, such as converting it to lowercase, before inspecting it for the specified string. For example, you can add a ByteMatchSetUpdate object that matches web requests in which User-Agent headers contain the string BadBot. You can then configure AWS WAF to block those requests. To create and configure a ByteMatchSet, perform the following steps: Create a ByteMatchSet. For more information, see CreateByteMatchSet. Use GetChangeToken to get the change token that you provide in the ChangeToken parameter of an UpdateByteMatchSet request. Submit an UpdateByteMatchSet request to specify the part of the request that you want AWS WAF to inspect (for example, the header or the URI) and the value that you want AWS WAF to watch for. For more information about how to use the AWS WAF API to allow or block HTTP requests, see the AWS WAF Developer Guide. - */ - updateByteMatchSet(callback?: (err: AWSError, data: WAFRegional.Types.UpdateByteMatchSetResponse) => void): Request; - /** - * Inserts or deletes IPSetDescriptor objects in an IPSet. For each IPSetDescriptor object, you specify the following values: Whether to insert or delete the object from the array. If you want to change an IPSetDescriptor object, you delete the existing object and add a new one. The IP address version, IPv4 or IPv6. The IP address in CIDR notation, for example, 192.0.2.0/24 (for the range of IP addresses from 192.0.2.0 to 192.0.2.255) or 192.0.2.44/32 (for the individual IP address 192.0.2.44). AWS WAF supports /8, /16, /24, and /32 IP address ranges for IPv4, and /24, /32, /48, /56, /64 and /128 for IPv6. For more information about CIDR notation, see the Wikipedia entry Classless Inter-Domain Routing. IPv6 addresses can be represented using any of the following formats: 1111:0000:0000:0000:0000:0000:0000:0111/128 1111:0:0:0:0:0:0:0111/128 1111::0111/128 1111::111/128 You use an IPSet to specify which web requests you want to allow or block based on the IP addresses that the requests originated from. For example, if you're receiving a lot of requests from one or a small number of IP addresses and you want to block the requests, you can create an IPSet that specifies those IP addresses, and then configure AWS WAF to block the requests. To create and configure an IPSet, perform the following steps: Submit a CreateIPSet request. Use GetChangeToken to get the change token that you provide in the ChangeToken parameter of an UpdateIPSet request. Submit an UpdateIPSet request to specify the IP addresses that you want AWS WAF to watch for. When you update an IPSet, you specify the IP addresses that you want to add and/or the IP addresses that you want to delete. If you want to change an IP address, you delete the existing IP address and add the new one. For more information about how to use the AWS WAF API to allow or block HTTP requests, see the AWS WAF Developer Guide. - */ - updateIPSet(params: WAFRegional.Types.UpdateIPSetRequest, callback?: (err: AWSError, data: WAFRegional.Types.UpdateIPSetResponse) => void): Request; - /** - * Inserts or deletes IPSetDescriptor objects in an IPSet. For each IPSetDescriptor object, you specify the following values: Whether to insert or delete the object from the array. If you want to change an IPSetDescriptor object, you delete the existing object and add a new one. The IP address version, IPv4 or IPv6. The IP address in CIDR notation, for example, 192.0.2.0/24 (for the range of IP addresses from 192.0.2.0 to 192.0.2.255) or 192.0.2.44/32 (for the individual IP address 192.0.2.44). AWS WAF supports /8, /16, /24, and /32 IP address ranges for IPv4, and /24, /32, /48, /56, /64 and /128 for IPv6. For more information about CIDR notation, see the Wikipedia entry Classless Inter-Domain Routing. IPv6 addresses can be represented using any of the following formats: 1111:0000:0000:0000:0000:0000:0000:0111/128 1111:0:0:0:0:0:0:0111/128 1111::0111/128 1111::111/128 You use an IPSet to specify which web requests you want to allow or block based on the IP addresses that the requests originated from. For example, if you're receiving a lot of requests from one or a small number of IP addresses and you want to block the requests, you can create an IPSet that specifies those IP addresses, and then configure AWS WAF to block the requests. To create and configure an IPSet, perform the following steps: Submit a CreateIPSet request. Use GetChangeToken to get the change token that you provide in the ChangeToken parameter of an UpdateIPSet request. Submit an UpdateIPSet request to specify the IP addresses that you want AWS WAF to watch for. When you update an IPSet, you specify the IP addresses that you want to add and/or the IP addresses that you want to delete. If you want to change an IP address, you delete the existing IP address and add the new one. For more information about how to use the AWS WAF API to allow or block HTTP requests, see the AWS WAF Developer Guide. - */ - updateIPSet(callback?: (err: AWSError, data: WAFRegional.Types.UpdateIPSetResponse) => void): Request; - /** - * Inserts or deletes Predicate objects in a rule and updates the RateLimit in the rule. Each Predicate object identifies a predicate, such as a ByteMatchSet or an IPSet, that specifies the web requests that you want to block or count. The RateLimit specifies the number of requests every five minutes that triggers the rule. If you add more than one predicate to a RateBasedRule, a request must match all the predicates and exceed the RateLimit to be counted or blocked. For example, suppose you add the following to a RateBasedRule: An IPSet that matches the IP address 192.0.2.44/32 A ByteMatchSet that matches BadBot in the User-Agent header Further, you specify a RateLimit of 15,000. You then add the RateBasedRule to a WebACL and specify that you want to block requests that satisfy the rule. For a request to be blocked, it must come from the IP address 192.0.2.44 and the User-Agent header in the request must contain the value BadBot. Further, requests that match these two conditions much be received at a rate of more than 15,000 every five minutes. If the rate drops below this limit, AWS WAF no longer blocks the requests. As a second example, suppose you want to limit requests to a particular page on your site. To do this, you could add the following to a RateBasedRule: A ByteMatchSet with FieldToMatch of URI A PositionalConstraint of STARTS_WITH A TargetString of login Further, you specify a RateLimit of 15,000. By adding this RateBasedRule to a WebACL, you could limit requests to your login page without affecting the rest of your site. - */ - updateRateBasedRule(params: WAFRegional.Types.UpdateRateBasedRuleRequest, callback?: (err: AWSError, data: WAFRegional.Types.UpdateRateBasedRuleResponse) => void): Request; - /** - * Inserts or deletes Predicate objects in a rule and updates the RateLimit in the rule. Each Predicate object identifies a predicate, such as a ByteMatchSet or an IPSet, that specifies the web requests that you want to block or count. The RateLimit specifies the number of requests every five minutes that triggers the rule. If you add more than one predicate to a RateBasedRule, a request must match all the predicates and exceed the RateLimit to be counted or blocked. For example, suppose you add the following to a RateBasedRule: An IPSet that matches the IP address 192.0.2.44/32 A ByteMatchSet that matches BadBot in the User-Agent header Further, you specify a RateLimit of 15,000. You then add the RateBasedRule to a WebACL and specify that you want to block requests that satisfy the rule. For a request to be blocked, it must come from the IP address 192.0.2.44 and the User-Agent header in the request must contain the value BadBot. Further, requests that match these two conditions much be received at a rate of more than 15,000 every five minutes. If the rate drops below this limit, AWS WAF no longer blocks the requests. As a second example, suppose you want to limit requests to a particular page on your site. To do this, you could add the following to a RateBasedRule: A ByteMatchSet with FieldToMatch of URI A PositionalConstraint of STARTS_WITH A TargetString of login Further, you specify a RateLimit of 15,000. By adding this RateBasedRule to a WebACL, you could limit requests to your login page without affecting the rest of your site. - */ - updateRateBasedRule(callback?: (err: AWSError, data: WAFRegional.Types.UpdateRateBasedRuleResponse) => void): Request; - /** - * Inserts or deletes Predicate objects in a Rule. Each Predicate object identifies a predicate, such as a ByteMatchSet or an IPSet, that specifies the web requests that you want to allow, block, or count. If you add more than one predicate to a Rule, a request must match all of the specifications to be allowed, blocked, or counted. For example, suppose you add the following to a Rule: A ByteMatchSet that matches the value BadBot in the User-Agent header An IPSet that matches the IP address 192.0.2.44 You then add the Rule to a WebACL and specify that you want to block requests that satisfy the Rule. For a request to be blocked, the User-Agent header in the request must contain the value BadBot and the request must originate from the IP address 192.0.2.44. To create and configure a Rule, perform the following steps: Create and update the predicates that you want to include in the Rule. Create the Rule. See CreateRule. Use GetChangeToken to get the change token that you provide in the ChangeToken parameter of an UpdateRule request. Submit an UpdateRule request to add predicates to the Rule. Create and update a WebACL that contains the Rule. See CreateWebACL. If you want to replace one ByteMatchSet or IPSet with another, you delete the existing one and add the new one. For more information about how to use the AWS WAF API to allow or block HTTP requests, see the AWS WAF Developer Guide. - */ - updateRule(params: WAFRegional.Types.UpdateRuleRequest, callback?: (err: AWSError, data: WAFRegional.Types.UpdateRuleResponse) => void): Request; - /** - * Inserts or deletes Predicate objects in a Rule. Each Predicate object identifies a predicate, such as a ByteMatchSet or an IPSet, that specifies the web requests that you want to allow, block, or count. If you add more than one predicate to a Rule, a request must match all of the specifications to be allowed, blocked, or counted. For example, suppose you add the following to a Rule: A ByteMatchSet that matches the value BadBot in the User-Agent header An IPSet that matches the IP address 192.0.2.44 You then add the Rule to a WebACL and specify that you want to block requests that satisfy the Rule. For a request to be blocked, the User-Agent header in the request must contain the value BadBot and the request must originate from the IP address 192.0.2.44. To create and configure a Rule, perform the following steps: Create and update the predicates that you want to include in the Rule. Create the Rule. See CreateRule. Use GetChangeToken to get the change token that you provide in the ChangeToken parameter of an UpdateRule request. Submit an UpdateRule request to add predicates to the Rule. Create and update a WebACL that contains the Rule. See CreateWebACL. If you want to replace one ByteMatchSet or IPSet with another, you delete the existing one and add the new one. For more information about how to use the AWS WAF API to allow or block HTTP requests, see the AWS WAF Developer Guide. - */ - updateRule(callback?: (err: AWSError, data: WAFRegional.Types.UpdateRuleResponse) => void): Request; - /** - * Inserts or deletes SizeConstraint objects (filters) in a SizeConstraintSet. For each SizeConstraint object, you specify the following values: Whether to insert or delete the object from the array. If you want to change a SizeConstraintSetUpdate object, you delete the existing object and add a new one. The part of a web request that you want AWS WAF to evaluate, such as the length of a query string or the length of the User-Agent header. Whether to perform any transformations on the request, such as converting it to lowercase, before checking its length. Note that transformations of the request body are not supported because the AWS resource forwards only the first 8192 bytes of your request to AWS WAF. A ComparisonOperator used for evaluating the selected part of the request against the specified Size, such as equals, greater than, less than, and so on. The length, in bytes, that you want AWS WAF to watch for in selected part of the request. The length is computed after applying the transformation. For example, you can add a SizeConstraintSetUpdate object that matches web requests in which the length of the User-Agent header is greater than 100 bytes. You can then configure AWS WAF to block those requests. To create and configure a SizeConstraintSet, perform the following steps: Create a SizeConstraintSet. For more information, see CreateSizeConstraintSet. Use GetChangeToken to get the change token that you provide in the ChangeToken parameter of an UpdateSizeConstraintSet request. Submit an UpdateSizeConstraintSet request to specify the part of the request that you want AWS WAF to inspect (for example, the header or the URI) and the value that you want AWS WAF to watch for. For more information about how to use the AWS WAF API to allow or block HTTP requests, see the AWS WAF Developer Guide. - */ - updateSizeConstraintSet(params: WAFRegional.Types.UpdateSizeConstraintSetRequest, callback?: (err: AWSError, data: WAFRegional.Types.UpdateSizeConstraintSetResponse) => void): Request; - /** - * Inserts or deletes SizeConstraint objects (filters) in a SizeConstraintSet. For each SizeConstraint object, you specify the following values: Whether to insert or delete the object from the array. If you want to change a SizeConstraintSetUpdate object, you delete the existing object and add a new one. The part of a web request that you want AWS WAF to evaluate, such as the length of a query string or the length of the User-Agent header. Whether to perform any transformations on the request, such as converting it to lowercase, before checking its length. Note that transformations of the request body are not supported because the AWS resource forwards only the first 8192 bytes of your request to AWS WAF. A ComparisonOperator used for evaluating the selected part of the request against the specified Size, such as equals, greater than, less than, and so on. The length, in bytes, that you want AWS WAF to watch for in selected part of the request. The length is computed after applying the transformation. For example, you can add a SizeConstraintSetUpdate object that matches web requests in which the length of the User-Agent header is greater than 100 bytes. You can then configure AWS WAF to block those requests. To create and configure a SizeConstraintSet, perform the following steps: Create a SizeConstraintSet. For more information, see CreateSizeConstraintSet. Use GetChangeToken to get the change token that you provide in the ChangeToken parameter of an UpdateSizeConstraintSet request. Submit an UpdateSizeConstraintSet request to specify the part of the request that you want AWS WAF to inspect (for example, the header or the URI) and the value that you want AWS WAF to watch for. For more information about how to use the AWS WAF API to allow or block HTTP requests, see the AWS WAF Developer Guide. - */ - updateSizeConstraintSet(callback?: (err: AWSError, data: WAFRegional.Types.UpdateSizeConstraintSetResponse) => void): Request; - /** - * Inserts or deletes SqlInjectionMatchTuple objects (filters) in a SqlInjectionMatchSet. For each SqlInjectionMatchTuple object, you specify the following values: Action: Whether to insert the object into or delete the object from the array. To change a SqlInjectionMatchTuple, you delete the existing object and add a new one. FieldToMatch: The part of web requests that you want AWS WAF to inspect and, if you want AWS WAF to inspect a header, the name of the header. TextTransformation: Which text transformation, if any, to perform on the web request before inspecting the request for snippets of malicious SQL code. You use SqlInjectionMatchSet objects to specify which CloudFront requests you want to allow, block, or count. For example, if you're receiving requests that contain snippets of SQL code in the query string and you want to block the requests, you can create a SqlInjectionMatchSet with the applicable settings, and then configure AWS WAF to block the requests. To create and configure a SqlInjectionMatchSet, perform the following steps: Submit a CreateSqlInjectionMatchSet request. Use GetChangeToken to get the change token that you provide in the ChangeToken parameter of an UpdateIPSet request. Submit an UpdateSqlInjectionMatchSet request to specify the parts of web requests that you want AWS WAF to inspect for snippets of SQL code. For more information about how to use the AWS WAF API to allow or block HTTP requests, see the AWS WAF Developer Guide. - */ - updateSqlInjectionMatchSet(params: WAFRegional.Types.UpdateSqlInjectionMatchSetRequest, callback?: (err: AWSError, data: WAFRegional.Types.UpdateSqlInjectionMatchSetResponse) => void): Request; - /** - * Inserts or deletes SqlInjectionMatchTuple objects (filters) in a SqlInjectionMatchSet. For each SqlInjectionMatchTuple object, you specify the following values: Action: Whether to insert the object into or delete the object from the array. To change a SqlInjectionMatchTuple, you delete the existing object and add a new one. FieldToMatch: The part of web requests that you want AWS WAF to inspect and, if you want AWS WAF to inspect a header, the name of the header. TextTransformation: Which text transformation, if any, to perform on the web request before inspecting the request for snippets of malicious SQL code. You use SqlInjectionMatchSet objects to specify which CloudFront requests you want to allow, block, or count. For example, if you're receiving requests that contain snippets of SQL code in the query string and you want to block the requests, you can create a SqlInjectionMatchSet with the applicable settings, and then configure AWS WAF to block the requests. To create and configure a SqlInjectionMatchSet, perform the following steps: Submit a CreateSqlInjectionMatchSet request. Use GetChangeToken to get the change token that you provide in the ChangeToken parameter of an UpdateIPSet request. Submit an UpdateSqlInjectionMatchSet request to specify the parts of web requests that you want AWS WAF to inspect for snippets of SQL code. For more information about how to use the AWS WAF API to allow or block HTTP requests, see the AWS WAF Developer Guide. - */ - updateSqlInjectionMatchSet(callback?: (err: AWSError, data: WAFRegional.Types.UpdateSqlInjectionMatchSetResponse) => void): Request; - /** - * Inserts or deletes ActivatedRule objects in a WebACL. Each Rule identifies web requests that you want to allow, block, or count. When you update a WebACL, you specify the following values: A default action for the WebACL, either ALLOW or BLOCK. AWS WAF performs the default action if a request doesn't match the criteria in any of the Rules in a WebACL. The Rules that you want to add and/or delete. If you want to replace one Rule with another, you delete the existing Rule and add the new one. For each Rule, whether you want AWS WAF to allow requests, block requests, or count requests that match the conditions in the Rule. The order in which you want AWS WAF to evaluate the Rules in a WebACL. If you add more than one Rule to a WebACL, AWS WAF evaluates each request against the Rules in order based on the value of Priority. (The Rule that has the lowest value for Priority is evaluated first.) When a web request matches all of the predicates (such as ByteMatchSets and IPSets) in a Rule, AWS WAF immediately takes the corresponding action, allow or block, and doesn't evaluate the request against the remaining Rules in the WebACL, if any. To create and configure a WebACL, perform the following steps: Create and update the predicates that you want to include in Rules. For more information, see CreateByteMatchSet, UpdateByteMatchSet, CreateIPSet, UpdateIPSet, CreateSqlInjectionMatchSet, and UpdateSqlInjectionMatchSet. Create and update the Rules that you want to include in the WebACL. For more information, see CreateRule and UpdateRule. Create a WebACL. See CreateWebACL. Use GetChangeToken to get the change token that you provide in the ChangeToken parameter of an UpdateWebACL request. Submit an UpdateWebACL request to specify the Rules that you want to include in the WebACL, to specify the default action, and to associate the WebACL with a CloudFront distribution. Be aware that if you try to add a RATE_BASED rule to a web ACL without setting the rule type when first creating the rule, the UpdateWebACL request will fail because the request tries to add a REGULAR rule (the default rule type) with the specified ID, which does not exist. For more information about how to use the AWS WAF API to allow or block HTTP requests, see the AWS WAF Developer Guide. - */ - updateWebACL(params: WAFRegional.Types.UpdateWebACLRequest, callback?: (err: AWSError, data: WAFRegional.Types.UpdateWebACLResponse) => void): Request; - /** - * Inserts or deletes ActivatedRule objects in a WebACL. Each Rule identifies web requests that you want to allow, block, or count. When you update a WebACL, you specify the following values: A default action for the WebACL, either ALLOW or BLOCK. AWS WAF performs the default action if a request doesn't match the criteria in any of the Rules in a WebACL. The Rules that you want to add and/or delete. If you want to replace one Rule with another, you delete the existing Rule and add the new one. For each Rule, whether you want AWS WAF to allow requests, block requests, or count requests that match the conditions in the Rule. The order in which you want AWS WAF to evaluate the Rules in a WebACL. If you add more than one Rule to a WebACL, AWS WAF evaluates each request against the Rules in order based on the value of Priority. (The Rule that has the lowest value for Priority is evaluated first.) When a web request matches all of the predicates (such as ByteMatchSets and IPSets) in a Rule, AWS WAF immediately takes the corresponding action, allow or block, and doesn't evaluate the request against the remaining Rules in the WebACL, if any. To create and configure a WebACL, perform the following steps: Create and update the predicates that you want to include in Rules. For more information, see CreateByteMatchSet, UpdateByteMatchSet, CreateIPSet, UpdateIPSet, CreateSqlInjectionMatchSet, and UpdateSqlInjectionMatchSet. Create and update the Rules that you want to include in the WebACL. For more information, see CreateRule and UpdateRule. Create a WebACL. See CreateWebACL. Use GetChangeToken to get the change token that you provide in the ChangeToken parameter of an UpdateWebACL request. Submit an UpdateWebACL request to specify the Rules that you want to include in the WebACL, to specify the default action, and to associate the WebACL with a CloudFront distribution. Be aware that if you try to add a RATE_BASED rule to a web ACL without setting the rule type when first creating the rule, the UpdateWebACL request will fail because the request tries to add a REGULAR rule (the default rule type) with the specified ID, which does not exist. For more information about how to use the AWS WAF API to allow or block HTTP requests, see the AWS WAF Developer Guide. - */ - updateWebACL(callback?: (err: AWSError, data: WAFRegional.Types.UpdateWebACLResponse) => void): Request; - /** - * Inserts or deletes XssMatchTuple objects (filters) in an XssMatchSet. For each XssMatchTuple object, you specify the following values: Action: Whether to insert the object into or delete the object from the array. To change a XssMatchTuple, you delete the existing object and add a new one. FieldToMatch: The part of web requests that you want AWS WAF to inspect and, if you want AWS WAF to inspect a header, the name of the header. TextTransformation: Which text transformation, if any, to perform on the web request before inspecting the request for cross-site scripting attacks. You use XssMatchSet objects to specify which CloudFront requests you want to allow, block, or count. For example, if you're receiving requests that contain cross-site scripting attacks in the request body and you want to block the requests, you can create an XssMatchSet with the applicable settings, and then configure AWS WAF to block the requests. To create and configure an XssMatchSet, perform the following steps: Submit a CreateXssMatchSet request. Use GetChangeToken to get the change token that you provide in the ChangeToken parameter of an UpdateIPSet request. Submit an UpdateXssMatchSet request to specify the parts of web requests that you want AWS WAF to inspect for cross-site scripting attacks. For more information about how to use the AWS WAF API to allow or block HTTP requests, see the AWS WAF Developer Guide. - */ - updateXssMatchSet(params: WAFRegional.Types.UpdateXssMatchSetRequest, callback?: (err: AWSError, data: WAFRegional.Types.UpdateXssMatchSetResponse) => void): Request; - /** - * Inserts or deletes XssMatchTuple objects (filters) in an XssMatchSet. For each XssMatchTuple object, you specify the following values: Action: Whether to insert the object into or delete the object from the array. To change a XssMatchTuple, you delete the existing object and add a new one. FieldToMatch: The part of web requests that you want AWS WAF to inspect and, if you want AWS WAF to inspect a header, the name of the header. TextTransformation: Which text transformation, if any, to perform on the web request before inspecting the request for cross-site scripting attacks. You use XssMatchSet objects to specify which CloudFront requests you want to allow, block, or count. For example, if you're receiving requests that contain cross-site scripting attacks in the request body and you want to block the requests, you can create an XssMatchSet with the applicable settings, and then configure AWS WAF to block the requests. To create and configure an XssMatchSet, perform the following steps: Submit a CreateXssMatchSet request. Use GetChangeToken to get the change token that you provide in the ChangeToken parameter of an UpdateIPSet request. Submit an UpdateXssMatchSet request to specify the parts of web requests that you want AWS WAF to inspect for cross-site scripting attacks. For more information about how to use the AWS WAF API to allow or block HTTP requests, see the AWS WAF Developer Guide. - */ - updateXssMatchSet(callback?: (err: AWSError, data: WAFRegional.Types.UpdateXssMatchSetResponse) => void): Request; -} -declare namespace WAFRegional { - export type Action = string; - export interface ActivatedRule { - /** - * Specifies the order in which the Rules in a WebACL are evaluated. Rules with a lower value for Priority are evaluated before Rules with a higher value. The value must be a unique integer. If you add multiple Rules to a WebACL, the values don't need to be consecutive. - */ - Priority: RulePriority; - /** - * The RuleId for a Rule. You use RuleId to get more information about a Rule (see GetRule), update a Rule (see UpdateRule), insert a Rule into a WebACL or delete a one from a WebACL (see UpdateWebACL), or delete a Rule from AWS WAF (see DeleteRule). RuleId is returned by CreateRule and by ListRules. - */ - RuleId: ResourceId; - /** - * Specifies the action that CloudFront or AWS WAF takes when a web request matches the conditions in the Rule. Valid values for Action include the following: ALLOW: CloudFront responds with the requested object. BLOCK: CloudFront responds with an HTTP 403 (Forbidden) status code. COUNT: AWS WAF increments a counter of requests that match the conditions in the rule and then continues to inspect the web request based on the remaining rules in the web ACL. - */ - Action: WafAction; - /** - * The rule type, either REGULAR, as defined by Rule, or RATE_BASED, as defined by RateBasedRule. The default is REGULAR. Although this field is optional, be aware that if you try to add a RATE_BASED rule to a web ACL without setting the type, the UpdateWebACL request will fail because the request tries to add a REGULAR rule with the specified ID, which does not exist. - */ - Type?: WafRuleType; - } - export type ActivatedRules = ActivatedRule[]; - export interface AssociateWebACLRequest { - /** - * A unique identifier (ID) for the web ACL. - */ - WebACLId: ResourceId; - /** - * The ARN (Amazon Resource Name) of the resource to be protected. - */ - ResourceArn: ResourceArn; - } - export interface AssociateWebACLResponse { - } - export interface ByteMatchSet { - /** - * The ByteMatchSetId for a ByteMatchSet. You use ByteMatchSetId to get information about a ByteMatchSet (see GetByteMatchSet), update a ByteMatchSet (see UpdateByteMatchSet), insert a ByteMatchSet into a Rule or delete one from a Rule (see UpdateRule), and delete a ByteMatchSet from AWS WAF (see DeleteByteMatchSet). ByteMatchSetId is returned by CreateByteMatchSet and by ListByteMatchSets. - */ - ByteMatchSetId: ResourceId; - /** - * A friendly name or description of the ByteMatchSet. You can't change Name after you create a ByteMatchSet. - */ - Name?: ResourceName; - /** - * Specifies the bytes (typically a string that corresponds with ASCII characters) that you want AWS WAF to search for in web requests, the location in requests that you want AWS WAF to search, and other settings. - */ - ByteMatchTuples: ByteMatchTuples; - } - export type ByteMatchSetSummaries = ByteMatchSetSummary[]; - export interface ByteMatchSetSummary { - /** - * The ByteMatchSetId for a ByteMatchSet. You use ByteMatchSetId to get information about a ByteMatchSet, update a ByteMatchSet, remove a ByteMatchSet from a Rule, and delete a ByteMatchSet from AWS WAF. ByteMatchSetId is returned by CreateByteMatchSet and by ListByteMatchSets. - */ - ByteMatchSetId: ResourceId; - /** - * A friendly name or description of the ByteMatchSet. You can't change Name after you create a ByteMatchSet. - */ - Name: ResourceName; - } - export interface ByteMatchSetUpdate { - /** - * Specifies whether to insert or delete a ByteMatchTuple. - */ - Action: ChangeAction; - /** - * Information about the part of a web request that you want AWS WAF to inspect and the value that you want AWS WAF to search for. If you specify DELETE for the value of Action, the ByteMatchTuple values must exactly match the values in the ByteMatchTuple that you want to delete from the ByteMatchSet. - */ - ByteMatchTuple: ByteMatchTuple; - } - export type ByteMatchSetUpdates = ByteMatchSetUpdate[]; - export type ByteMatchTargetString = Buffer|Uint8Array|Blob|string; - export interface ByteMatchTuple { - /** - * The part of a web request that you want AWS WAF to search, such as a specified header or a query string. For more information, see FieldToMatch. - */ - FieldToMatch: FieldToMatch; - /** - * The value that you want AWS WAF to search for. AWS WAF searches for the specified string in the part of web requests that you specified in FieldToMatch. The maximum length of the value is 50 bytes. Valid values depend on the values that you specified for FieldToMatch: HEADER: The value that you want AWS WAF to search for in the request header that you specified in FieldToMatch, for example, the value of the User-Agent or Referer header. METHOD: The HTTP method, which indicates the type of operation specified in the request. CloudFront supports the following methods: DELETE, GET, HEAD, OPTIONS, PATCH, POST, and PUT. QUERY_STRING: The value that you want AWS WAF to search for in the query string, which is the part of a URL that appears after a ? character. URI: The value that you want AWS WAF to search for in the part of a URL that identifies a resource, for example, /images/daily-ad.jpg. BODY: The part of a request that contains any additional data that you want to send to your web server as the HTTP request body, such as data from a form. The request body immediately follows the request headers. Note that only the first 8192 bytes of the request body are forwarded to AWS WAF for inspection. To allow or block requests based on the length of the body, you can create a size constraint set. For more information, see CreateSizeConstraintSet. If TargetString includes alphabetic characters A-Z and a-z, note that the value is case sensitive. If you're using the AWS WAF API Specify a base64-encoded version of the value. The maximum length of the value before you base64-encode it is 50 bytes. For example, suppose the value of Type is HEADER and the value of Data is User-Agent. If you want to search the User-Agent header for the value BadBot, you base64-encode BadBot using MIME base64 encoding and include the resulting value, QmFkQm90, in the value of TargetString. If you're using the AWS CLI or one of the AWS SDKs The value that you want AWS WAF to search for. The SDK automatically base64 encodes the value. - */ - TargetString: ByteMatchTargetString; - /** - * Text transformations eliminate some of the unusual formatting that attackers use in web requests in an effort to bypass AWS WAF. If you specify a transformation, AWS WAF performs the transformation on TargetString before inspecting a request for a match. CMD_LINE When you're concerned that attackers are injecting an operating system commandline command and using unusual formatting to disguise some or all of the command, use this option to perform the following transformations: Delete the following characters: \ " ' ^ Delete spaces before the following characters: / ( Replace the following characters with a space: , ; Replace multiple spaces with one space Convert uppercase letters (A-Z) to lowercase (a-z) COMPRESS_WHITE_SPACE Use this option to replace the following characters with a space character (decimal 32): \f, formfeed, decimal 12 \t, tab, decimal 9 \n, newline, decimal 10 \r, carriage return, decimal 13 \v, vertical tab, decimal 11 non-breaking space, decimal 160 COMPRESS_WHITE_SPACE also replaces multiple spaces with one space. HTML_ENTITY_DECODE Use this option to replace HTML-encoded characters with unencoded characters. HTML_ENTITY_DECODE performs the following operations: Replaces (ampersand)quot; with " Replaces (ampersand)nbsp; with a non-breaking space, decimal 160 Replaces (ampersand)lt; with a "less than" symbol Replaces (ampersand)gt; with > Replaces characters that are represented in hexadecimal format, (ampersand)#xhhhh;, with the corresponding characters Replaces characters that are represented in decimal format, (ampersand)#nnnn;, with the corresponding characters LOWERCASE Use this option to convert uppercase letters (A-Z) to lowercase (a-z). URL_DECODE Use this option to decode a URL-encoded value. NONE Specify NONE if you don't want to perform any text transformations. - */ - TextTransformation: TextTransformation; - /** - * Within the portion of a web request that you want to search (for example, in the query string, if any), specify where you want AWS WAF to search. Valid values include the following: CONTAINS The specified part of the web request must include the value of TargetString, but the location doesn't matter. CONTAINS_WORD The specified part of the web request must include the value of TargetString, and TargetString must contain only alphanumeric characters or underscore (A-Z, a-z, 0-9, or _). In addition, TargetString must be a word, which means one of the following: TargetString exactly matches the value of the specified part of the web request, such as the value of a header. TargetString is at the beginning of the specified part of the web request and is followed by a character other than an alphanumeric character or underscore (_), for example, BadBot;. TargetString is at the end of the specified part of the web request and is preceded by a character other than an alphanumeric character or underscore (_), for example, ;BadBot. TargetString is in the middle of the specified part of the web request and is preceded and followed by characters other than alphanumeric characters or underscore (_), for example, -BadBot;. EXACTLY The value of the specified part of the web request must exactly match the value of TargetString. STARTS_WITH The value of TargetString must appear at the beginning of the specified part of the web request. ENDS_WITH The value of TargetString must appear at the end of the specified part of the web request. - */ - PositionalConstraint: PositionalConstraint; - } - export type ByteMatchTuples = ByteMatchTuple[]; - export type ChangeAction = "INSERT"|"DELETE"|string; - export type ChangeToken = string; - export type ChangeTokenStatus = "PROVISIONED"|"PENDING"|"INSYNC"|string; - export type ComparisonOperator = "EQ"|"NE"|"LE"|"LT"|"GE"|"GT"|string; - export type Country = string; - export interface CreateByteMatchSetRequest { - /** - * A friendly name or description of the ByteMatchSet. You can't change Name after you create a ByteMatchSet. - */ - Name: ResourceName; - /** - * The value returned by the most recent call to GetChangeToken. - */ - ChangeToken: ChangeToken; - } - export interface CreateByteMatchSetResponse { - /** - * A ByteMatchSet that contains no ByteMatchTuple objects. - */ - ByteMatchSet?: ByteMatchSet; - /** - * The ChangeToken that you used to submit the CreateByteMatchSet request. You can also use this value to query the status of the request. For more information, see GetChangeTokenStatus. - */ - ChangeToken?: ChangeToken; - } - export interface CreateIPSetRequest { - /** - * A friendly name or description of the IPSet. You can't change Name after you create the IPSet. - */ - Name: ResourceName; - /** - * The value returned by the most recent call to GetChangeToken. - */ - ChangeToken: ChangeToken; - } - export interface CreateIPSetResponse { - /** - * The IPSet returned in the CreateIPSet response. - */ - IPSet?: IPSet; - /** - * The ChangeToken that you used to submit the CreateIPSet request. You can also use this value to query the status of the request. For more information, see GetChangeTokenStatus. - */ - ChangeToken?: ChangeToken; - } - export interface CreateRateBasedRuleRequest { - /** - * A friendly name or description of the RateBasedRule. You can't change the name of a RateBasedRule after you create it. - */ - Name: ResourceName; - /** - * A friendly name or description for the metrics for this RateBasedRule. The name can contain only alphanumeric characters (A-Z, a-z, 0-9); the name can't contain whitespace. You can't change the name of the metric after you create the RateBasedRule. - */ - MetricName: MetricName; - /** - * The field that AWS WAF uses to determine if requests are likely arriving from a single source and thus subject to rate monitoring. The only valid value for RateKey is IP. IP indicates that requests that arrive from the same IP address are subject to the RateLimit that is specified in the RateBasedRule. - */ - RateKey: RateKey; - /** - * The maximum number of requests, which have an identical value in the field that is specified by RateKey, allowed in a five-minute period. If the number of requests exceeds the RateLimit and the other predicates specified in the rule are also met, AWS WAF triggers the action that is specified for this rule. - */ - RateLimit: RateLimit; - /** - * The ChangeToken that you used to submit the CreateRateBasedRule request. You can also use this value to query the status of the request. For more information, see GetChangeTokenStatus. - */ - ChangeToken: ChangeToken; - } - export interface CreateRateBasedRuleResponse { - /** - * The RateBasedRule that is returned in the CreateRateBasedRule response. - */ - Rule?: RateBasedRule; - /** - * The ChangeToken that you used to submit the CreateRateBasedRule request. You can also use this value to query the status of the request. For more information, see GetChangeTokenStatus. - */ - ChangeToken?: ChangeToken; - } - export interface CreateRuleRequest { - /** - * A friendly name or description of the Rule. You can't change the name of a Rule after you create it. - */ - Name: ResourceName; - /** - * A friendly name or description for the metrics for this Rule. The name can contain only alphanumeric characters (A-Z, a-z, 0-9); the name can't contain whitespace. You can't change the name of the metric after you create the Rule. - */ - MetricName: MetricName; - /** - * The value returned by the most recent call to GetChangeToken. - */ - ChangeToken: ChangeToken; - } - export interface CreateRuleResponse { - /** - * The Rule returned in the CreateRule response. - */ - Rule?: Rule; - /** - * The ChangeToken that you used to submit the CreateRule request. You can also use this value to query the status of the request. For more information, see GetChangeTokenStatus. - */ - ChangeToken?: ChangeToken; - } - export interface CreateSizeConstraintSetRequest { - /** - * A friendly name or description of the SizeConstraintSet. You can't change Name after you create a SizeConstraintSet. - */ - Name: ResourceName; - /** - * The value returned by the most recent call to GetChangeToken. - */ - ChangeToken: ChangeToken; - } - export interface CreateSizeConstraintSetResponse { - /** - * A SizeConstraintSet that contains no SizeConstraint objects. - */ - SizeConstraintSet?: SizeConstraintSet; - /** - * The ChangeToken that you used to submit the CreateSizeConstraintSet request. You can also use this value to query the status of the request. For more information, see GetChangeTokenStatus. - */ - ChangeToken?: ChangeToken; - } - export interface CreateSqlInjectionMatchSetRequest { - /** - * A friendly name or description for the SqlInjectionMatchSet that you're creating. You can't change Name after you create the SqlInjectionMatchSet. - */ - Name: ResourceName; - /** - * The value returned by the most recent call to GetChangeToken. - */ - ChangeToken: ChangeToken; - } - export interface CreateSqlInjectionMatchSetResponse { - /** - * A SqlInjectionMatchSet. - */ - SqlInjectionMatchSet?: SqlInjectionMatchSet; - /** - * The ChangeToken that you used to submit the CreateSqlInjectionMatchSet request. You can also use this value to query the status of the request. For more information, see GetChangeTokenStatus. - */ - ChangeToken?: ChangeToken; - } - export interface CreateWebACLRequest { - /** - * A friendly name or description of the WebACL. You can't change Name after you create the WebACL. - */ - Name: ResourceName; - /** - * A friendly name or description for the metrics for this WebACL. The name can contain only alphanumeric characters (A-Z, a-z, 0-9); the name can't contain whitespace. You can't change MetricName after you create the WebACL. - */ - MetricName: MetricName; - /** - * The action that you want AWS WAF to take when a request doesn't match the criteria specified in any of the Rule objects that are associated with the WebACL. - */ - DefaultAction: WafAction; - /** - * The value returned by the most recent call to GetChangeToken. - */ - ChangeToken: ChangeToken; - } - export interface CreateWebACLResponse { - /** - * The WebACL returned in the CreateWebACL response. - */ - WebACL?: WebACL; - /** - * The ChangeToken that you used to submit the CreateWebACL request. You can also use this value to query the status of the request. For more information, see GetChangeTokenStatus. - */ - ChangeToken?: ChangeToken; - } - export interface CreateXssMatchSetRequest { - /** - * A friendly name or description for the XssMatchSet that you're creating. You can't change Name after you create the XssMatchSet. - */ - Name: ResourceName; - /** - * The value returned by the most recent call to GetChangeToken. - */ - ChangeToken: ChangeToken; - } - export interface CreateXssMatchSetResponse { - /** - * An XssMatchSet. - */ - XssMatchSet?: XssMatchSet; - /** - * The ChangeToken that you used to submit the CreateXssMatchSet request. You can also use this value to query the status of the request. For more information, see GetChangeTokenStatus. - */ - ChangeToken?: ChangeToken; - } - export interface DeleteByteMatchSetRequest { - /** - * The ByteMatchSetId of the ByteMatchSet that you want to delete. ByteMatchSetId is returned by CreateByteMatchSet and by ListByteMatchSets. - */ - ByteMatchSetId: ResourceId; - /** - * The value returned by the most recent call to GetChangeToken. - */ - ChangeToken: ChangeToken; - } - export interface DeleteByteMatchSetResponse { - /** - * The ChangeToken that you used to submit the DeleteByteMatchSet request. You can also use this value to query the status of the request. For more information, see GetChangeTokenStatus. - */ - ChangeToken?: ChangeToken; - } - export interface DeleteIPSetRequest { - /** - * The IPSetId of the IPSet that you want to delete. IPSetId is returned by CreateIPSet and by ListIPSets. - */ - IPSetId: ResourceId; - /** - * The value returned by the most recent call to GetChangeToken. - */ - ChangeToken: ChangeToken; - } - export interface DeleteIPSetResponse { - /** - * The ChangeToken that you used to submit the DeleteIPSet request. You can also use this value to query the status of the request. For more information, see GetChangeTokenStatus. - */ - ChangeToken?: ChangeToken; - } - export interface DeleteRateBasedRuleRequest { - /** - * The RuleId of the RateBasedRule that you want to delete. RuleId is returned by CreateRateBasedRule and by ListRateBasedRules. - */ - RuleId: ResourceId; - /** - * The value returned by the most recent call to GetChangeToken. - */ - ChangeToken: ChangeToken; - } - export interface DeleteRateBasedRuleResponse { - /** - * The ChangeToken that you used to submit the DeleteRateBasedRule request. You can also use this value to query the status of the request. For more information, see GetChangeTokenStatus. - */ - ChangeToken?: ChangeToken; - } - export interface DeleteRuleRequest { - /** - * The RuleId of the Rule that you want to delete. RuleId is returned by CreateRule and by ListRules. - */ - RuleId: ResourceId; - /** - * The value returned by the most recent call to GetChangeToken. - */ - ChangeToken: ChangeToken; - } - export interface DeleteRuleResponse { - /** - * The ChangeToken that you used to submit the DeleteRule request. You can also use this value to query the status of the request. For more information, see GetChangeTokenStatus. - */ - ChangeToken?: ChangeToken; - } - export interface DeleteSizeConstraintSetRequest { - /** - * The SizeConstraintSetId of the SizeConstraintSet that you want to delete. SizeConstraintSetId is returned by CreateSizeConstraintSet and by ListSizeConstraintSets. - */ - SizeConstraintSetId: ResourceId; - /** - * The value returned by the most recent call to GetChangeToken. - */ - ChangeToken: ChangeToken; - } - export interface DeleteSizeConstraintSetResponse { - /** - * The ChangeToken that you used to submit the DeleteSizeConstraintSet request. You can also use this value to query the status of the request. For more information, see GetChangeTokenStatus. - */ - ChangeToken?: ChangeToken; - } - export interface DeleteSqlInjectionMatchSetRequest { - /** - * The SqlInjectionMatchSetId of the SqlInjectionMatchSet that you want to delete. SqlInjectionMatchSetId is returned by CreateSqlInjectionMatchSet and by ListSqlInjectionMatchSets. - */ - SqlInjectionMatchSetId: ResourceId; - /** - * The value returned by the most recent call to GetChangeToken. - */ - ChangeToken: ChangeToken; - } - export interface DeleteSqlInjectionMatchSetResponse { - /** - * The ChangeToken that you used to submit the DeleteSqlInjectionMatchSet request. You can also use this value to query the status of the request. For more information, see GetChangeTokenStatus. - */ - ChangeToken?: ChangeToken; - } - export interface DeleteWebACLRequest { - /** - * The WebACLId of the WebACL that you want to delete. WebACLId is returned by CreateWebACL and by ListWebACLs. - */ - WebACLId: ResourceId; - /** - * The value returned by the most recent call to GetChangeToken. - */ - ChangeToken: ChangeToken; - } - export interface DeleteWebACLResponse { - /** - * The ChangeToken that you used to submit the DeleteWebACL request. You can also use this value to query the status of the request. For more information, see GetChangeTokenStatus. - */ - ChangeToken?: ChangeToken; - } - export interface DeleteXssMatchSetRequest { - /** - * The XssMatchSetId of the XssMatchSet that you want to delete. XssMatchSetId is returned by CreateXssMatchSet and by ListXssMatchSets. - */ - XssMatchSetId: ResourceId; - /** - * The value returned by the most recent call to GetChangeToken. - */ - ChangeToken: ChangeToken; - } - export interface DeleteXssMatchSetResponse { - /** - * The ChangeToken that you used to submit the DeleteXssMatchSet request. You can also use this value to query the status of the request. For more information, see GetChangeTokenStatus. - */ - ChangeToken?: ChangeToken; - } - export interface DisassociateWebACLRequest { - /** - * The ARN (Amazon Resource Name) of the resource from which the web ACL is being removed. - */ - ResourceArn: ResourceArn; - } - export interface DisassociateWebACLResponse { - } - export interface FieldToMatch { - /** - * The part of the web request that you want AWS WAF to search for a specified string. Parts of a request that you can search include the following: HEADER: A specified request header, for example, the value of the User-Agent or Referer header. If you choose HEADER for the type, specify the name of the header in Data. METHOD: The HTTP method, which indicated the type of operation that the request is asking the origin to perform. Amazon CloudFront supports the following methods: DELETE, GET, HEAD, OPTIONS, PATCH, POST, and PUT. QUERY_STRING: A query string, which is the part of a URL that appears after a ? character, if any. URI: The part of a web request that identifies a resource, for example, /images/daily-ad.jpg. BODY: The part of a request that contains any additional data that you want to send to your web server as the HTTP request body, such as data from a form. The request body immediately follows the request headers. Note that only the first 8192 bytes of the request body are forwarded to AWS WAF for inspection. To allow or block requests based on the length of the body, you can create a size constraint set. For more information, see CreateSizeConstraintSet. - */ - Type: MatchFieldType; - /** - * When the value of Type is HEADER, enter the name of the header that you want AWS WAF to search, for example, User-Agent or Referer. If the value of Type is any other value, omit Data. The name of the header is not case sensitive. - */ - Data?: MatchFieldData; - } - export interface GetByteMatchSetRequest { - /** - * The ByteMatchSetId of the ByteMatchSet that you want to get. ByteMatchSetId is returned by CreateByteMatchSet and by ListByteMatchSets. - */ - ByteMatchSetId: ResourceId; - } - export interface GetByteMatchSetResponse { - /** - * Information about the ByteMatchSet that you specified in the GetByteMatchSet request. For more information, see the following topics: ByteMatchSet: Contains ByteMatchSetId, ByteMatchTuples, and Name ByteMatchTuples: Contains an array of ByteMatchTuple objects. Each ByteMatchTuple object contains FieldToMatch, PositionalConstraint, TargetString, and TextTransformation FieldToMatch: Contains Data and Type - */ - ByteMatchSet?: ByteMatchSet; - } - export interface GetChangeTokenRequest { - } - export interface GetChangeTokenResponse { - /** - * The ChangeToken that you used in the request. Use this value in a GetChangeTokenStatus request to get the current status of the request. - */ - ChangeToken?: ChangeToken; - } - export interface GetChangeTokenStatusRequest { - /** - * The change token for which you want to get the status. This change token was previously returned in the GetChangeToken response. - */ - ChangeToken: ChangeToken; - } - export interface GetChangeTokenStatusResponse { - /** - * The status of the change token. - */ - ChangeTokenStatus?: ChangeTokenStatus; - } - export interface GetIPSetRequest { - /** - * The IPSetId of the IPSet that you want to get. IPSetId is returned by CreateIPSet and by ListIPSets. - */ - IPSetId: ResourceId; - } - export interface GetIPSetResponse { - /** - * Information about the IPSet that you specified in the GetIPSet request. For more information, see the following topics: IPSet: Contains IPSetDescriptors, IPSetId, and Name IPSetDescriptors: Contains an array of IPSetDescriptor objects. Each IPSetDescriptor object contains Type and Value - */ - IPSet?: IPSet; - } - export interface GetRateBasedRuleManagedKeysRequest { - /** - * The RuleId of the RateBasedRule for which you want to get a list of ManagedKeys. RuleId is returned by CreateRateBasedRule and by ListRateBasedRules. - */ - RuleId: ResourceId; - /** - * A null value and not currently used. Do not include this in your request. - */ - NextMarker?: NextMarker; - } - export interface GetRateBasedRuleManagedKeysResponse { - /** - * An array of IP addresses that currently are blocked by the specified RateBasedRule. - */ - ManagedKeys?: ManagedKeys; - /** - * A null value and not currently used. - */ - NextMarker?: NextMarker; - } - export interface GetRateBasedRuleRequest { - /** - * The RuleId of the RateBasedRule that you want to get. RuleId is returned by CreateRateBasedRule and by ListRateBasedRules. - */ - RuleId: ResourceId; - } - export interface GetRateBasedRuleResponse { - /** - * Information about the RateBasedRule that you specified in the GetRateBasedRule request. - */ - Rule?: RateBasedRule; - } - export interface GetRuleRequest { - /** - * The RuleId of the Rule that you want to get. RuleId is returned by CreateRule and by ListRules. - */ - RuleId: ResourceId; - } - export interface GetRuleResponse { - /** - * Information about the Rule that you specified in the GetRule request. For more information, see the following topics: Rule: Contains MetricName, Name, an array of Predicate objects, and RuleId Predicate: Each Predicate object contains DataId, Negated, and Type - */ - Rule?: Rule; - } - export type GetSampledRequestsMaxItems = number; - export interface GetSampledRequestsRequest { - /** - * The WebACLId of the WebACL for which you want GetSampledRequests to return a sample of requests. - */ - WebAclId: ResourceId; - /** - * RuleId is one of two values: The RuleId of the Rule for which you want GetSampledRequests to return a sample of requests. Default_Action, which causes GetSampledRequests to return a sample of the requests that didn't match any of the rules in the specified WebACL. - */ - RuleId: ResourceId; - /** - * The start date and time and the end date and time of the range for which you want GetSampledRequests to return a sample of requests. Specify the date and time in the following format: "2016-09-27T14:50Z". You can specify any time range in the previous three hours. - */ - TimeWindow: TimeWindow; - /** - * The number of requests that you want AWS WAF to return from among the first 5,000 requests that your AWS resource received during the time range. If your resource received fewer requests than the value of MaxItems, GetSampledRequests returns information about all of them. - */ - MaxItems: GetSampledRequestsMaxItems; - } - export interface GetSampledRequestsResponse { - /** - * A complex type that contains detailed information about each of the requests in the sample. - */ - SampledRequests?: SampledHTTPRequests; - /** - * The total number of requests from which GetSampledRequests got a sample of MaxItems requests. If PopulationSize is less than MaxItems, the sample includes every request that your AWS resource received during the specified time range. - */ - PopulationSize?: PopulationSize; - /** - * Usually, TimeWindow is the time range that you specified in the GetSampledRequests request. However, if your AWS resource received more than 5,000 requests during the time range that you specified in the request, GetSampledRequests returns the time range for the first 5,000 requests. - */ - TimeWindow?: TimeWindow; - } - export interface GetSizeConstraintSetRequest { - /** - * The SizeConstraintSetId of the SizeConstraintSet that you want to get. SizeConstraintSetId is returned by CreateSizeConstraintSet and by ListSizeConstraintSets. - */ - SizeConstraintSetId: ResourceId; - } - export interface GetSizeConstraintSetResponse { - /** - * Information about the SizeConstraintSet that you specified in the GetSizeConstraintSet request. For more information, see the following topics: SizeConstraintSet: Contains SizeConstraintSetId, SizeConstraints, and Name SizeConstraints: Contains an array of SizeConstraint objects. Each SizeConstraint object contains FieldToMatch, TextTransformation, ComparisonOperator, and Size FieldToMatch: Contains Data and Type - */ - SizeConstraintSet?: SizeConstraintSet; - } - export interface GetSqlInjectionMatchSetRequest { - /** - * The SqlInjectionMatchSetId of the SqlInjectionMatchSet that you want to get. SqlInjectionMatchSetId is returned by CreateSqlInjectionMatchSet and by ListSqlInjectionMatchSets. - */ - SqlInjectionMatchSetId: ResourceId; - } - export interface GetSqlInjectionMatchSetResponse { - /** - * Information about the SqlInjectionMatchSet that you specified in the GetSqlInjectionMatchSet request. For more information, see the following topics: SqlInjectionMatchSet: Contains Name, SqlInjectionMatchSetId, and an array of SqlInjectionMatchTuple objects SqlInjectionMatchTuple: Each SqlInjectionMatchTuple object contains FieldToMatch and TextTransformation FieldToMatch: Contains Data and Type - */ - SqlInjectionMatchSet?: SqlInjectionMatchSet; - } - export interface GetWebACLForResourceRequest { - /** - * The ARN (Amazon Resource Name) of the resource for which to get the web ACL. - */ - ResourceArn: ResourceArn; - } - export interface GetWebACLForResourceResponse { - /** - * Information about the web ACL that you specified in the GetWebACLForResource request. If there is no associated resource, a null WebACLSummary is returned. - */ - WebACLSummary?: WebACLSummary; - } - export interface GetWebACLRequest { - /** - * The WebACLId of the WebACL that you want to get. WebACLId is returned by CreateWebACL and by ListWebACLs. - */ - WebACLId: ResourceId; - } - export interface GetWebACLResponse { - /** - * Information about the WebACL that you specified in the GetWebACL request. For more information, see the following topics: WebACL: Contains DefaultAction, MetricName, Name, an array of Rule objects, and WebACLId DefaultAction (Data type is WafAction): Contains Type Rules: Contains an array of ActivatedRule objects, which contain Action, Priority, and RuleId Action: Contains Type - */ - WebACL?: WebACL; - } - export interface GetXssMatchSetRequest { - /** - * The XssMatchSetId of the XssMatchSet that you want to get. XssMatchSetId is returned by CreateXssMatchSet and by ListXssMatchSets. - */ - XssMatchSetId: ResourceId; - } - export interface GetXssMatchSetResponse { - /** - * Information about the XssMatchSet that you specified in the GetXssMatchSet request. For more information, see the following topics: XssMatchSet: Contains Name, XssMatchSetId, and an array of XssMatchTuple objects XssMatchTuple: Each XssMatchTuple object contains FieldToMatch and TextTransformation FieldToMatch: Contains Data and Type - */ - XssMatchSet?: XssMatchSet; - } - export interface HTTPHeader { - /** - * The name of one of the headers in the sampled web request. - */ - Name?: HeaderName; - /** - * The value of one of the headers in the sampled web request. - */ - Value?: HeaderValue; - } - export type HTTPHeaders = HTTPHeader[]; - export type HTTPMethod = string; - export interface HTTPRequest { - /** - * The IP address that the request originated from. If the WebACL is associated with a CloudFront distribution, this is the value of one of the following fields in CloudFront access logs: c-ip, if the viewer did not use an HTTP proxy or a load balancer to send the request x-forwarded-for, if the viewer did use an HTTP proxy or a load balancer to send the request - */ - ClientIP?: IPString; - /** - * The two-letter country code for the country that the request originated from. For a current list of country codes, see the Wikipedia entry ISO 3166-1 alpha-2. - */ - Country?: Country; - /** - * The part of a web request that identifies the resource, for example, /images/daily-ad.jpg. - */ - URI?: URIString; - /** - * The HTTP method specified in the sampled web request. CloudFront supports the following methods: DELETE, GET, HEAD, OPTIONS, PATCH, POST, and PUT. - */ - Method?: HTTPMethod; - /** - * The HTTP version specified in the sampled web request, for example, HTTP/1.1. - */ - HTTPVersion?: HTTPVersion; - /** - * A complex type that contains two values for each header in the sampled web request: the name of the header and the value of the header. - */ - Headers?: HTTPHeaders; - } - export type HTTPVersion = string; - export type HeaderName = string; - export type HeaderValue = string; - export interface IPSet { - /** - * The IPSetId for an IPSet. You use IPSetId to get information about an IPSet (see GetIPSet), update an IPSet (see UpdateIPSet), insert an IPSet into a Rule or delete one from a Rule (see UpdateRule), and delete an IPSet from AWS WAF (see DeleteIPSet). IPSetId is returned by CreateIPSet and by ListIPSets. - */ - IPSetId: ResourceId; - /** - * A friendly name or description of the IPSet. You can't change the name of an IPSet after you create it. - */ - Name?: ResourceName; - /** - * The IP address type (IPV4 or IPV6) and the IP address range (in CIDR notation) that web requests originate from. If the WebACL is associated with a CloudFront distribution and the viewer did not use an HTTP proxy or a load balancer to send the request, this is the value of the c-ip field in the CloudFront access logs. - */ - IPSetDescriptors: IPSetDescriptors; - } - export interface IPSetDescriptor { - /** - * Specify IPV4 or IPV6. - */ - Type: IPSetDescriptorType; - /** - * Specify an IPv4 address by using CIDR notation. For example: To configure AWS WAF to allow, block, or count requests that originated from the IP address 192.0.2.44, specify 192.0.2.44/32. To configure AWS WAF to allow, block, or count requests that originated from IP addresses from 192.0.2.0 to 192.0.2.255, specify 192.0.2.0/24. For more information about CIDR notation, see the Wikipedia entry Classless Inter-Domain Routing. Specify an IPv6 address by using CIDR notation. For example: To configure AWS WAF to allow, block, or count requests that originated from the IP address 1111:0000:0000:0000:0000:0000:0000:0111, specify 1111:0000:0000:0000:0000:0000:0000:0111/128. To configure AWS WAF to allow, block, or count requests that originated from IP addresses 1111:0000:0000:0000:0000:0000:0000:0000 to 1111:0000:0000:0000:ffff:ffff:ffff:ffff, specify 1111:0000:0000:0000:0000:0000:0000:0000/64. - */ - Value: IPSetDescriptorValue; - } - export type IPSetDescriptorType = "IPV4"|"IPV6"|string; - export type IPSetDescriptorValue = string; - export type IPSetDescriptors = IPSetDescriptor[]; - export type IPSetSummaries = IPSetSummary[]; - export interface IPSetSummary { - /** - * The IPSetId for an IPSet. You can use IPSetId in a GetIPSet request to get detailed information about an IPSet. - */ - IPSetId: ResourceId; - /** - * A friendly name or description of the IPSet. You can't change the name of an IPSet after you create it. - */ - Name: ResourceName; - } - export interface IPSetUpdate { - /** - * Specifies whether to insert or delete an IP address with UpdateIPSet. - */ - Action: ChangeAction; - /** - * The IP address type (IPV4 or IPV6) and the IP address range (in CIDR notation) that web requests originate from. - */ - IPSetDescriptor: IPSetDescriptor; - } - export type IPSetUpdates = IPSetUpdate[]; - export type IPString = string; - export interface ListByteMatchSetsRequest { - /** - * If you specify a value for Limit and you have more ByteMatchSets than the value of Limit, AWS WAF returns a NextMarker value in the response that allows you to list another group of ByteMatchSets. For the second and subsequent ListByteMatchSets requests, specify the value of NextMarker from the previous response to get information about another batch of ByteMatchSets. - */ - NextMarker?: NextMarker; - /** - * Specifies the number of ByteMatchSet objects that you want AWS WAF to return for this request. If you have more ByteMatchSets objects than the number you specify for Limit, the response includes a NextMarker value that you can use to get another batch of ByteMatchSet objects. - */ - Limit?: PaginationLimit; - } - export interface ListByteMatchSetsResponse { - /** - * If you have more ByteMatchSet objects than the number that you specified for Limit in the request, the response includes a NextMarker value. To list more ByteMatchSet objects, submit another ListByteMatchSets request, and specify the NextMarker value from the response in the NextMarker value in the next request. - */ - NextMarker?: NextMarker; - /** - * An array of ByteMatchSetSummary objects. - */ - ByteMatchSets?: ByteMatchSetSummaries; - } - export interface ListIPSetsRequest { - /** - * If you specify a value for Limit and you have more IPSets than the value of Limit, AWS WAF returns a NextMarker value in the response that allows you to list another group of IPSets. For the second and subsequent ListIPSets requests, specify the value of NextMarker from the previous response to get information about another batch of ByteMatchSets. - */ - NextMarker?: NextMarker; - /** - * Specifies the number of IPSet objects that you want AWS WAF to return for this request. If you have more IPSet objects than the number you specify for Limit, the response includes a NextMarker value that you can use to get another batch of IPSet objects. - */ - Limit?: PaginationLimit; - } - export interface ListIPSetsResponse { - /** - * If you have more IPSet objects than the number that you specified for Limit in the request, the response includes a NextMarker value. To list more IPSet objects, submit another ListIPSets request, and specify the NextMarker value from the response in the NextMarker value in the next request. - */ - NextMarker?: NextMarker; - /** - * An array of IPSetSummary objects. - */ - IPSets?: IPSetSummaries; - } - export interface ListRateBasedRulesRequest { - /** - * If you specify a value for Limit and you have more Rules than the value of Limit, AWS WAF returns a NextMarker value in the response that allows you to list another group of Rules. For the second and subsequent ListRateBasedRules requests, specify the value of NextMarker from the previous response to get information about another batch of Rules. - */ - NextMarker?: NextMarker; - /** - * Specifies the number of Rules that you want AWS WAF to return for this request. If you have more Rules than the number that you specify for Limit, the response includes a NextMarker value that you can use to get another batch of Rules. - */ - Limit?: PaginationLimit; - } - export interface ListRateBasedRulesResponse { - /** - * If you have more Rules than the number that you specified for Limit in the request, the response includes a NextMarker value. To list more Rules, submit another ListRateBasedRules request, and specify the NextMarker value from the response in the NextMarker value in the next request. - */ - NextMarker?: NextMarker; - /** - * An array of RuleSummary objects. - */ - Rules?: RuleSummaries; - } - export interface ListResourcesForWebACLRequest { - /** - * The unique identifier (ID) of the web ACL for which to list the associated resources. - */ - WebACLId: ResourceId; - } - export interface ListResourcesForWebACLResponse { - /** - * An array of ARNs (Amazon Resource Names) of the resources associated with the specified web ACL. An array with zero elements is returned if there are no resources associated with the web ACL. - */ - ResourceArns?: ResourceArns; - } - export interface ListRulesRequest { - /** - * If you specify a value for Limit and you have more Rules than the value of Limit, AWS WAF returns a NextMarker value in the response that allows you to list another group of Rules. For the second and subsequent ListRules requests, specify the value of NextMarker from the previous response to get information about another batch of Rules. - */ - NextMarker?: NextMarker; - /** - * Specifies the number of Rules that you want AWS WAF to return for this request. If you have more Rules than the number that you specify for Limit, the response includes a NextMarker value that you can use to get another batch of Rules. - */ - Limit?: PaginationLimit; - } - export interface ListRulesResponse { - /** - * If you have more Rules than the number that you specified for Limit in the request, the response includes a NextMarker value. To list more Rules, submit another ListRules request, and specify the NextMarker value from the response in the NextMarker value in the next request. - */ - NextMarker?: NextMarker; - /** - * An array of RuleSummary objects. - */ - Rules?: RuleSummaries; - } - export interface ListSizeConstraintSetsRequest { - /** - * If you specify a value for Limit and you have more SizeConstraintSets than the value of Limit, AWS WAF returns a NextMarker value in the response that allows you to list another group of SizeConstraintSets. For the second and subsequent ListSizeConstraintSets requests, specify the value of NextMarker from the previous response to get information about another batch of SizeConstraintSets. - */ - NextMarker?: NextMarker; - /** - * Specifies the number of SizeConstraintSet objects that you want AWS WAF to return for this request. If you have more SizeConstraintSets objects than the number you specify for Limit, the response includes a NextMarker value that you can use to get another batch of SizeConstraintSet objects. - */ - Limit?: PaginationLimit; - } - export interface ListSizeConstraintSetsResponse { - /** - * If you have more SizeConstraintSet objects than the number that you specified for Limit in the request, the response includes a NextMarker value. To list more SizeConstraintSet objects, submit another ListSizeConstraintSets request, and specify the NextMarker value from the response in the NextMarker value in the next request. - */ - NextMarker?: NextMarker; - /** - * An array of SizeConstraintSetSummary objects. - */ - SizeConstraintSets?: SizeConstraintSetSummaries; - } - export interface ListSqlInjectionMatchSetsRequest { - /** - * If you specify a value for Limit and you have more SqlInjectionMatchSet objects than the value of Limit, AWS WAF returns a NextMarker value in the response that allows you to list another group of SqlInjectionMatchSets. For the second and subsequent ListSqlInjectionMatchSets requests, specify the value of NextMarker from the previous response to get information about another batch of SqlInjectionMatchSets. - */ - NextMarker?: NextMarker; - /** - * Specifies the number of SqlInjectionMatchSet objects that you want AWS WAF to return for this request. If you have more SqlInjectionMatchSet objects than the number you specify for Limit, the response includes a NextMarker value that you can use to get another batch of Rules. - */ - Limit?: PaginationLimit; - } - export interface ListSqlInjectionMatchSetsResponse { - /** - * If you have more SqlInjectionMatchSet objects than the number that you specified for Limit in the request, the response includes a NextMarker value. To list more SqlInjectionMatchSet objects, submit another ListSqlInjectionMatchSets request, and specify the NextMarker value from the response in the NextMarker value in the next request. - */ - NextMarker?: NextMarker; - /** - * An array of SqlInjectionMatchSetSummary objects. - */ - SqlInjectionMatchSets?: SqlInjectionMatchSetSummaries; - } - export interface ListWebACLsRequest { - /** - * If you specify a value for Limit and you have more WebACL objects than the number that you specify for Limit, AWS WAF returns a NextMarker value in the response that allows you to list another group of WebACL objects. For the second and subsequent ListWebACLs requests, specify the value of NextMarker from the previous response to get information about another batch of WebACL objects. - */ - NextMarker?: NextMarker; - /** - * Specifies the number of WebACL objects that you want AWS WAF to return for this request. If you have more WebACL objects than the number that you specify for Limit, the response includes a NextMarker value that you can use to get another batch of WebACL objects. - */ - Limit?: PaginationLimit; - } - export interface ListWebACLsResponse { - /** - * If you have more WebACL objects than the number that you specified for Limit in the request, the response includes a NextMarker value. To list more WebACL objects, submit another ListWebACLs request, and specify the NextMarker value from the response in the NextMarker value in the next request. - */ - NextMarker?: NextMarker; - /** - * An array of WebACLSummary objects. - */ - WebACLs?: WebACLSummaries; - } - export interface ListXssMatchSetsRequest { - /** - * If you specify a value for Limit and you have more XssMatchSet objects than the value of Limit, AWS WAF returns a NextMarker value in the response that allows you to list another group of XssMatchSets. For the second and subsequent ListXssMatchSets requests, specify the value of NextMarker from the previous response to get information about another batch of XssMatchSets. - */ - NextMarker?: NextMarker; - /** - * Specifies the number of XssMatchSet objects that you want AWS WAF to return for this request. If you have more XssMatchSet objects than the number you specify for Limit, the response includes a NextMarker value that you can use to get another batch of Rules. - */ - Limit?: PaginationLimit; - } - export interface ListXssMatchSetsResponse { - /** - * If you have more XssMatchSet objects than the number that you specified for Limit in the request, the response includes a NextMarker value. To list more XssMatchSet objects, submit another ListXssMatchSets request, and specify the NextMarker value from the response in the NextMarker value in the next request. - */ - NextMarker?: NextMarker; - /** - * An array of XssMatchSetSummary objects. - */ - XssMatchSets?: XssMatchSetSummaries; - } - export type ManagedKey = string; - export type ManagedKeys = ManagedKey[]; - export type MatchFieldData = string; - export type MatchFieldType = "URI"|"QUERY_STRING"|"HEADER"|"METHOD"|"BODY"|string; - export type MetricName = string; - export type Negated = boolean; - export type NextMarker = string; - export type PaginationLimit = number; - export type ParameterExceptionField = "CHANGE_ACTION"|"WAF_ACTION"|"PREDICATE_TYPE"|"IPSET_TYPE"|"BYTE_MATCH_FIELD_TYPE"|"SQL_INJECTION_MATCH_FIELD_TYPE"|"BYTE_MATCH_TEXT_TRANSFORMATION"|"BYTE_MATCH_POSITIONAL_CONSTRAINT"|"SIZE_CONSTRAINT_COMPARISON_OPERATOR"|"RATE_KEY"|"RULE_TYPE"|"NEXT_MARKER"|string; - export type ParameterExceptionParameter = string; - export type ParameterExceptionReason = "INVALID_OPTION"|"ILLEGAL_COMBINATION"|string; - export type PopulationSize = number; - export type PositionalConstraint = "EXACTLY"|"STARTS_WITH"|"ENDS_WITH"|"CONTAINS"|"CONTAINS_WORD"|string; - export interface Predicate { - /** - * Set Negated to False if you want AWS WAF to allow, block, or count requests based on the settings in the specified ByteMatchSet, IPSet, SqlInjectionMatchSet, XssMatchSet, or SizeConstraintSet. For example, if an IPSet includes the IP address 192.0.2.44, AWS WAF will allow or block requests based on that IP address. Set Negated to True if you want AWS WAF to allow or block a request based on the negation of the settings in the ByteMatchSet, IPSet, SqlInjectionMatchSet, XssMatchSet, or SizeConstraintSet. For example, if an IPSet includes the IP address 192.0.2.44, AWS WAF will allow, block, or count requests based on all IP addresses except 192.0.2.44. - */ - Negated: Negated; - /** - * The type of predicate in a Rule, such as ByteMatchSet or IPSet. - */ - Type: PredicateType; - /** - * A unique identifier for a predicate in a Rule, such as ByteMatchSetId or IPSetId. The ID is returned by the corresponding Create or List command. - */ - DataId: ResourceId; - } - export type PredicateType = "IPMatch"|"ByteMatch"|"SqlInjectionMatch"|"SizeConstraint"|"XssMatch"|string; - export type Predicates = Predicate[]; - export interface RateBasedRule { - /** - * A unique identifier for a RateBasedRule. You use RuleId to get more information about a RateBasedRule (see GetRateBasedRule), update a RateBasedRule (see UpdateRateBasedRule), insert a RateBasedRule into a WebACL or delete one from a WebACL (see UpdateWebACL), or delete a RateBasedRule from AWS WAF (see DeleteRateBasedRule). - */ - RuleId: ResourceId; - /** - * A friendly name or description for a RateBasedRule. You can't change the name of a RateBasedRule after you create it. - */ - Name?: ResourceName; - /** - * A friendly name or description for the metrics for a RateBasedRule. The name can contain only alphanumeric characters (A-Z, a-z, 0-9); the name can't contain whitespace. You can't change the name of the metric after you create the RateBasedRule. - */ - MetricName?: MetricName; - /** - * The Predicates object contains one Predicate element for each ByteMatchSet, IPSet, or SqlInjectionMatchSet object that you want to include in a RateBasedRule. - */ - MatchPredicates: Predicates; - /** - * The field that AWS WAF uses to determine if requests are likely arriving from single source and thus subject to rate monitoring. The only valid value for RateKey is IP. IP indicates that requests arriving from the same IP address are subject to the RateLimit that is specified in the RateBasedRule. - */ - RateKey: RateKey; - /** - * The maximum number of requests, which have an identical value in the field specified by the RateKey, allowed in a five-minute period. If the number of requests exceeds the RateLimit and the other predicates specified in the rule are also met, AWS WAF triggers the action that is specified for this rule. - */ - RateLimit: RateLimit; - } - export type RateKey = "IP"|string; - export type RateLimit = number; - export type ResourceArn = string; - export type ResourceArns = ResourceArn[]; - export type ResourceId = string; - export type ResourceName = string; - export interface Rule { - /** - * A unique identifier for a Rule. You use RuleId to get more information about a Rule (see GetRule), update a Rule (see UpdateRule), insert a Rule into a WebACL or delete a one from a WebACL (see UpdateWebACL), or delete a Rule from AWS WAF (see DeleteRule). RuleId is returned by CreateRule and by ListRules. - */ - RuleId: ResourceId; - /** - * The friendly name or description for the Rule. You can't change the name of a Rule after you create it. - */ - Name?: ResourceName; - /** - * A friendly name or description for the metrics for this Rule. The name can contain only alphanumeric characters (A-Z, a-z, 0-9); the name can't contain whitespace. You can't change MetricName after you create the Rule. - */ - MetricName?: MetricName; - /** - * The Predicates object contains one Predicate element for each ByteMatchSet, IPSet, or SqlInjectionMatchSet object that you want to include in a Rule. - */ - Predicates: Predicates; - } - export type RulePriority = number; - export type RuleSummaries = RuleSummary[]; - export interface RuleSummary { - /** - * A unique identifier for a Rule. You use RuleId to get more information about a Rule (see GetRule), update a Rule (see UpdateRule), insert a Rule into a WebACL or delete one from a WebACL (see UpdateWebACL), or delete a Rule from AWS WAF (see DeleteRule). RuleId is returned by CreateRule and by ListRules. - */ - RuleId: ResourceId; - /** - * A friendly name or description of the Rule. You can't change the name of a Rule after you create it. - */ - Name: ResourceName; - } - export interface RuleUpdate { - /** - * Specify INSERT to add a Predicate to a Rule. Use DELETE to remove a Predicate from a Rule. - */ - Action: ChangeAction; - /** - * The ID of the Predicate (such as an IPSet) that you want to add to a Rule. - */ - Predicate: Predicate; - } - export type RuleUpdates = RuleUpdate[]; - export type SampleWeight = number; - export interface SampledHTTPRequest { - /** - * A complex type that contains detailed information about the request. - */ - Request: HTTPRequest; - /** - * A value that indicates how one result in the response relates proportionally to other results in the response. A result that has a weight of 2 represents roughly twice as many CloudFront web requests as a result that has a weight of 1. - */ - Weight: SampleWeight; - /** - * The time at which AWS WAF received the request from your AWS resource, in Unix time format (in seconds). - */ - Timestamp?: Timestamp; - /** - * The action for the Rule that the request matched: ALLOW, BLOCK, or COUNT. - */ - Action?: Action; - } - export type SampledHTTPRequests = SampledHTTPRequest[]; - export type Size = number; - export interface SizeConstraint { - /** - * Specifies where in a web request to look for the size constraint. - */ - FieldToMatch: FieldToMatch; - /** - * Text transformations eliminate some of the unusual formatting that attackers use in web requests in an effort to bypass AWS WAF. If you specify a transformation, AWS WAF performs the transformation on FieldToMatch before inspecting a request for a match. Note that if you choose BODY for the value of Type, you must choose NONE for TextTransformation because CloudFront forwards only the first 8192 bytes for inspection. NONE Specify NONE if you don't want to perform any text transformations. CMD_LINE When you're concerned that attackers are injecting an operating system command line command and using unusual formatting to disguise some or all of the command, use this option to perform the following transformations: Delete the following characters: \ " ' ^ Delete spaces before the following characters: / ( Replace the following characters with a space: , ; Replace multiple spaces with one space Convert uppercase letters (A-Z) to lowercase (a-z) COMPRESS_WHITE_SPACE Use this option to replace the following characters with a space character (decimal 32): \f, formfeed, decimal 12 \t, tab, decimal 9 \n, newline, decimal 10 \r, carriage return, decimal 13 \v, vertical tab, decimal 11 non-breaking space, decimal 160 COMPRESS_WHITE_SPACE also replaces multiple spaces with one space. HTML_ENTITY_DECODE Use this option to replace HTML-encoded characters with unencoded characters. HTML_ENTITY_DECODE performs the following operations: Replaces (ampersand)quot; with " Replaces (ampersand)nbsp; with a non-breaking space, decimal 160 Replaces (ampersand)lt; with a "less than" symbol Replaces (ampersand)gt; with > Replaces characters that are represented in hexadecimal format, (ampersand)#xhhhh;, with the corresponding characters Replaces characters that are represented in decimal format, (ampersand)#nnnn;, with the corresponding characters LOWERCASE Use this option to convert uppercase letters (A-Z) to lowercase (a-z). URL_DECODE Use this option to decode a URL-encoded value. - */ - TextTransformation: TextTransformation; - /** - * The type of comparison you want AWS WAF to perform. AWS WAF uses this in combination with the provided Size and FieldToMatch to build an expression in the form of "Size ComparisonOperator size in bytes of FieldToMatch". If that expression is true, the SizeConstraint is considered to match. EQ: Used to test if the Size is equal to the size of the FieldToMatch NE: Used to test if the Size is not equal to the size of the FieldToMatch LE: Used to test if the Size is less than or equal to the size of the FieldToMatch LT: Used to test if the Size is strictly less than the size of the FieldToMatch GE: Used to test if the Size is greater than or equal to the size of the FieldToMatch GT: Used to test if the Size is strictly greater than the size of the FieldToMatch - */ - ComparisonOperator: ComparisonOperator; - /** - * The size in bytes that you want AWS WAF to compare against the size of the specified FieldToMatch. AWS WAF uses this in combination with ComparisonOperator and FieldToMatch to build an expression in the form of "Size ComparisonOperator size in bytes of FieldToMatch". If that expression is true, the SizeConstraint is considered to match. Valid values for size are 0 - 21474836480 bytes (0 - 20 GB). If you specify URI for the value of Type, the / in the URI counts as one character. For example, the URI /logo.jpg is nine characters long. - */ - Size: Size; - } - export interface SizeConstraintSet { - /** - * A unique identifier for a SizeConstraintSet. You use SizeConstraintSetId to get information about a SizeConstraintSet (see GetSizeConstraintSet), update a SizeConstraintSet (see UpdateSizeConstraintSet), insert a SizeConstraintSet into a Rule or delete one from a Rule (see UpdateRule), and delete a SizeConstraintSet from AWS WAF (see DeleteSizeConstraintSet). SizeConstraintSetId is returned by CreateSizeConstraintSet and by ListSizeConstraintSets. - */ - SizeConstraintSetId: ResourceId; - /** - * The name, if any, of the SizeConstraintSet. - */ - Name?: ResourceName; - /** - * Specifies the parts of web requests that you want to inspect the size of. - */ - SizeConstraints: SizeConstraints; - } - export type SizeConstraintSetSummaries = SizeConstraintSetSummary[]; - export interface SizeConstraintSetSummary { - /** - * A unique identifier for a SizeConstraintSet. You use SizeConstraintSetId to get information about a SizeConstraintSet (see GetSizeConstraintSet), update a SizeConstraintSet (see UpdateSizeConstraintSet), insert a SizeConstraintSet into a Rule or delete one from a Rule (see UpdateRule), and delete a SizeConstraintSet from AWS WAF (see DeleteSizeConstraintSet). SizeConstraintSetId is returned by CreateSizeConstraintSet and by ListSizeConstraintSets. - */ - SizeConstraintSetId: ResourceId; - /** - * The name of the SizeConstraintSet, if any. - */ - Name: ResourceName; - } - export interface SizeConstraintSetUpdate { - /** - * Specify INSERT to add a SizeConstraintSetUpdate to a SizeConstraintSet. Use DELETE to remove a SizeConstraintSetUpdate from a SizeConstraintSet. - */ - Action: ChangeAction; - /** - * Specifies a constraint on the size of a part of the web request. AWS WAF uses the Size, ComparisonOperator, and FieldToMatch to build an expression in the form of "Size ComparisonOperator size in bytes of FieldToMatch". If that expression is true, the SizeConstraint is considered to match. - */ - SizeConstraint: SizeConstraint; - } - export type SizeConstraintSetUpdates = SizeConstraintSetUpdate[]; - export type SizeConstraints = SizeConstraint[]; - export interface SqlInjectionMatchSet { - /** - * A unique identifier for a SqlInjectionMatchSet. You use SqlInjectionMatchSetId to get information about a SqlInjectionMatchSet (see GetSqlInjectionMatchSet), update a SqlInjectionMatchSet (see UpdateSqlInjectionMatchSet), insert a SqlInjectionMatchSet into a Rule or delete one from a Rule (see UpdateRule), and delete a SqlInjectionMatchSet from AWS WAF (see DeleteSqlInjectionMatchSet). SqlInjectionMatchSetId is returned by CreateSqlInjectionMatchSet and by ListSqlInjectionMatchSets. - */ - SqlInjectionMatchSetId: ResourceId; - /** - * The name, if any, of the SqlInjectionMatchSet. - */ - Name?: ResourceName; - /** - * Specifies the parts of web requests that you want to inspect for snippets of malicious SQL code. - */ - SqlInjectionMatchTuples: SqlInjectionMatchTuples; - } - export type SqlInjectionMatchSetSummaries = SqlInjectionMatchSetSummary[]; - export interface SqlInjectionMatchSetSummary { - /** - * A unique identifier for a SqlInjectionMatchSet. You use SqlInjectionMatchSetId to get information about a SqlInjectionMatchSet (see GetSqlInjectionMatchSet), update a SqlInjectionMatchSet (see UpdateSqlInjectionMatchSet), insert a SqlInjectionMatchSet into a Rule or delete one from a Rule (see UpdateRule), and delete a SqlInjectionMatchSet from AWS WAF (see DeleteSqlInjectionMatchSet). SqlInjectionMatchSetId is returned by CreateSqlInjectionMatchSet and by ListSqlInjectionMatchSets. - */ - SqlInjectionMatchSetId: ResourceId; - /** - * The name of the SqlInjectionMatchSet, if any, specified by Id. - */ - Name: ResourceName; - } - export interface SqlInjectionMatchSetUpdate { - /** - * Specify INSERT to add a SqlInjectionMatchSetUpdate to a SqlInjectionMatchSet. Use DELETE to remove a SqlInjectionMatchSetUpdate from a SqlInjectionMatchSet. - */ - Action: ChangeAction; - /** - * Specifies the part of a web request that you want AWS WAF to inspect for snippets of malicious SQL code and, if you want AWS WAF to inspect a header, the name of the header. - */ - SqlInjectionMatchTuple: SqlInjectionMatchTuple; - } - export type SqlInjectionMatchSetUpdates = SqlInjectionMatchSetUpdate[]; - export interface SqlInjectionMatchTuple { - /** - * Specifies where in a web request to look for snippets of malicious SQL code. - */ - FieldToMatch: FieldToMatch; - /** - * Text transformations eliminate some of the unusual formatting that attackers use in web requests in an effort to bypass AWS WAF. If you specify a transformation, AWS WAF performs the transformation on FieldToMatch before inspecting a request for a match. CMD_LINE When you're concerned that attackers are injecting an operating system commandline command and using unusual formatting to disguise some or all of the command, use this option to perform the following transformations: Delete the following characters: \ " ' ^ Delete spaces before the following characters: / ( Replace the following characters with a space: , ; Replace multiple spaces with one space Convert uppercase letters (A-Z) to lowercase (a-z) COMPRESS_WHITE_SPACE Use this option to replace the following characters with a space character (decimal 32): \f, formfeed, decimal 12 \t, tab, decimal 9 \n, newline, decimal 10 \r, carriage return, decimal 13 \v, vertical tab, decimal 11 non-breaking space, decimal 160 COMPRESS_WHITE_SPACE also replaces multiple spaces with one space. HTML_ENTITY_DECODE Use this option to replace HTML-encoded characters with unencoded characters. HTML_ENTITY_DECODE performs the following operations: Replaces (ampersand)quot; with " Replaces (ampersand)nbsp; with a non-breaking space, decimal 160 Replaces (ampersand)lt; with a "less than" symbol Replaces (ampersand)gt; with > Replaces characters that are represented in hexadecimal format, (ampersand)#xhhhh;, with the corresponding characters Replaces characters that are represented in decimal format, (ampersand)#nnnn;, with the corresponding characters LOWERCASE Use this option to convert uppercase letters (A-Z) to lowercase (a-z). URL_DECODE Use this option to decode a URL-encoded value. NONE Specify NONE if you don't want to perform any text transformations. - */ - TextTransformation: TextTransformation; - } - export type SqlInjectionMatchTuples = SqlInjectionMatchTuple[]; - export type TextTransformation = "NONE"|"COMPRESS_WHITE_SPACE"|"HTML_ENTITY_DECODE"|"LOWERCASE"|"CMD_LINE"|"URL_DECODE"|string; - export interface TimeWindow { - /** - * The beginning of the time range from which you want GetSampledRequests to return a sample of the requests that your AWS resource received. Specify the date and time in the following format: "2016-09-27T14:50Z". You can specify any time range in the previous three hours. - */ - StartTime: Timestamp; - /** - * The end of the time range from which you want GetSampledRequests to return a sample of the requests that your AWS resource received. Specify the date and time in the following format: "2016-09-27T14:50Z". You can specify any time range in the previous three hours. - */ - EndTime: Timestamp; - } - export type Timestamp = Date; - export type URIString = string; - export interface UpdateByteMatchSetRequest { - /** - * The ByteMatchSetId of the ByteMatchSet that you want to update. ByteMatchSetId is returned by CreateByteMatchSet and by ListByteMatchSets. - */ - ByteMatchSetId: ResourceId; - /** - * The value returned by the most recent call to GetChangeToken. - */ - ChangeToken: ChangeToken; - /** - * An array of ByteMatchSetUpdate objects that you want to insert into or delete from a ByteMatchSet. For more information, see the applicable data types: ByteMatchSetUpdate: Contains Action and ByteMatchTuple ByteMatchTuple: Contains FieldToMatch, PositionalConstraint, TargetString, and TextTransformation FieldToMatch: Contains Data and Type - */ - Updates: ByteMatchSetUpdates; - } - export interface UpdateByteMatchSetResponse { - /** - * The ChangeToken that you used to submit the UpdateByteMatchSet request. You can also use this value to query the status of the request. For more information, see GetChangeTokenStatus. - */ - ChangeToken?: ChangeToken; - } - export interface UpdateIPSetRequest { - /** - * The IPSetId of the IPSet that you want to update. IPSetId is returned by CreateIPSet and by ListIPSets. - */ - IPSetId: ResourceId; - /** - * The value returned by the most recent call to GetChangeToken. - */ - ChangeToken: ChangeToken; - /** - * An array of IPSetUpdate objects that you want to insert into or delete from an IPSet. For more information, see the applicable data types: IPSetUpdate: Contains Action and IPSetDescriptor IPSetDescriptor: Contains Type and Value - */ - Updates: IPSetUpdates; - } - export interface UpdateIPSetResponse { - /** - * The ChangeToken that you used to submit the UpdateIPSet request. You can also use this value to query the status of the request. For more information, see GetChangeTokenStatus. - */ - ChangeToken?: ChangeToken; - } - export interface UpdateRateBasedRuleRequest { - /** - * The RuleId of the RateBasedRule that you want to update. RuleId is returned by CreateRateBasedRule and by ListRateBasedRules. - */ - RuleId: ResourceId; - /** - * The value returned by the most recent call to GetChangeToken. - */ - ChangeToken: ChangeToken; - /** - * An array of RuleUpdate objects that you want to insert into or delete from a RateBasedRule. - */ - Updates: RuleUpdates; - /** - * The maximum number of requests, which have an identical value in the field specified by the RateKey, allowed in a five-minute period. If the number of requests exceeds the RateLimit and the other predicates specified in the rule are also met, AWS WAF triggers the action that is specified for this rule. - */ - RateLimit: RateLimit; - } - export interface UpdateRateBasedRuleResponse { - /** - * The ChangeToken that you used to submit the UpdateRateBasedRule request. You can also use this value to query the status of the request. For more information, see GetChangeTokenStatus. - */ - ChangeToken?: ChangeToken; - } - export interface UpdateRuleRequest { - /** - * The RuleId of the Rule that you want to update. RuleId is returned by CreateRule and by ListRules. - */ - RuleId: ResourceId; - /** - * The value returned by the most recent call to GetChangeToken. - */ - ChangeToken: ChangeToken; - /** - * An array of RuleUpdate objects that you want to insert into or delete from a Rule. For more information, see the applicable data types: RuleUpdate: Contains Action and Predicate Predicate: Contains DataId, Negated, and Type FieldToMatch: Contains Data and Type - */ - Updates: RuleUpdates; - } - export interface UpdateRuleResponse { - /** - * The ChangeToken that you used to submit the UpdateRule request. You can also use this value to query the status of the request. For more information, see GetChangeTokenStatus. - */ - ChangeToken?: ChangeToken; - } - export interface UpdateSizeConstraintSetRequest { - /** - * The SizeConstraintSetId of the SizeConstraintSet that you want to update. SizeConstraintSetId is returned by CreateSizeConstraintSet and by ListSizeConstraintSets. - */ - SizeConstraintSetId: ResourceId; - /** - * The value returned by the most recent call to GetChangeToken. - */ - ChangeToken: ChangeToken; - /** - * An array of SizeConstraintSetUpdate objects that you want to insert into or delete from a SizeConstraintSet. For more information, see the applicable data types: SizeConstraintSetUpdate: Contains Action and SizeConstraint SizeConstraint: Contains FieldToMatch, TextTransformation, ComparisonOperator, and Size FieldToMatch: Contains Data and Type - */ - Updates: SizeConstraintSetUpdates; - } - export interface UpdateSizeConstraintSetResponse { - /** - * The ChangeToken that you used to submit the UpdateSizeConstraintSet request. You can also use this value to query the status of the request. For more information, see GetChangeTokenStatus. - */ - ChangeToken?: ChangeToken; - } - export interface UpdateSqlInjectionMatchSetRequest { - /** - * The SqlInjectionMatchSetId of the SqlInjectionMatchSet that you want to update. SqlInjectionMatchSetId is returned by CreateSqlInjectionMatchSet and by ListSqlInjectionMatchSets. - */ - SqlInjectionMatchSetId: ResourceId; - /** - * The value returned by the most recent call to GetChangeToken. - */ - ChangeToken: ChangeToken; - /** - * An array of SqlInjectionMatchSetUpdate objects that you want to insert into or delete from a SqlInjectionMatchSet. For more information, see the applicable data types: SqlInjectionMatchSetUpdate: Contains Action and SqlInjectionMatchTuple SqlInjectionMatchTuple: Contains FieldToMatch and TextTransformation FieldToMatch: Contains Data and Type - */ - Updates: SqlInjectionMatchSetUpdates; - } - export interface UpdateSqlInjectionMatchSetResponse { - /** - * The ChangeToken that you used to submit the UpdateSqlInjectionMatchSet request. You can also use this value to query the status of the request. For more information, see GetChangeTokenStatus. - */ - ChangeToken?: ChangeToken; - } - export interface UpdateWebACLRequest { - /** - * The WebACLId of the WebACL that you want to update. WebACLId is returned by CreateWebACL and by ListWebACLs. - */ - WebACLId: ResourceId; - /** - * The value returned by the most recent call to GetChangeToken. - */ - ChangeToken: ChangeToken; - /** - * An array of updates to make to the WebACL. An array of WebACLUpdate objects that you want to insert into or delete from a WebACL. For more information, see the applicable data types: WebACLUpdate: Contains Action and ActivatedRule ActivatedRule: Contains Action, Priority, RuleId, and Type WafAction: Contains Type - */ - Updates?: WebACLUpdates; - /** - * A default action for the web ACL, either ALLOW or BLOCK. AWS WAF performs the default action if a request doesn't match the criteria in any of the rules in a web ACL. - */ - DefaultAction?: WafAction; - } - export interface UpdateWebACLResponse { - /** - * The ChangeToken that you used to submit the UpdateWebACL request. You can also use this value to query the status of the request. For more information, see GetChangeTokenStatus. - */ - ChangeToken?: ChangeToken; - } - export interface UpdateXssMatchSetRequest { - /** - * The XssMatchSetId of the XssMatchSet that you want to update. XssMatchSetId is returned by CreateXssMatchSet and by ListXssMatchSets. - */ - XssMatchSetId: ResourceId; - /** - * The value returned by the most recent call to GetChangeToken. - */ - ChangeToken: ChangeToken; - /** - * An array of XssMatchSetUpdate objects that you want to insert into or delete from a XssMatchSet. For more information, see the applicable data types: XssMatchSetUpdate: Contains Action and XssMatchTuple XssMatchTuple: Contains FieldToMatch and TextTransformation FieldToMatch: Contains Data and Type - */ - Updates: XssMatchSetUpdates; - } - export interface UpdateXssMatchSetResponse { - /** - * The ChangeToken that you used to submit the UpdateXssMatchSet request. You can also use this value to query the status of the request. For more information, see GetChangeTokenStatus. - */ - ChangeToken?: ChangeToken; - } - export interface WafAction { - /** - * Specifies how you want AWS WAF to respond to requests that match the settings in a Rule. Valid settings include the following: ALLOW: AWS WAF allows requests BLOCK: AWS WAF blocks requests COUNT: AWS WAF increments a counter of the requests that match all of the conditions in the rule. AWS WAF then continues to inspect the web request based on the remaining rules in the web ACL. You can't specify COUNT for the default action for a WebACL. - */ - Type: WafActionType; - } - export type WafActionType = "BLOCK"|"ALLOW"|"COUNT"|string; - export type WafRuleType = "REGULAR"|"RATE_BASED"|string; - export interface WebACL { - /** - * A unique identifier for a WebACL. You use WebACLId to get information about a WebACL (see GetWebACL), update a WebACL (see UpdateWebACL), and delete a WebACL from AWS WAF (see DeleteWebACL). WebACLId is returned by CreateWebACL and by ListWebACLs. - */ - WebACLId: ResourceId; - /** - * A friendly name or description of the WebACL. You can't change the name of a WebACL after you create it. - */ - Name?: ResourceName; - /** - * A friendly name or description for the metrics for this WebACL. The name can contain only alphanumeric characters (A-Z, a-z, 0-9); the name can't contain whitespace. You can't change MetricName after you create the WebACL. - */ - MetricName?: MetricName; - /** - * The action to perform if none of the Rules contained in the WebACL match. The action is specified by the WafAction object. - */ - DefaultAction: WafAction; - /** - * An array that contains the action for each Rule in a WebACL, the priority of the Rule, and the ID of the Rule. - */ - Rules: ActivatedRules; - } - export type WebACLSummaries = WebACLSummary[]; - export interface WebACLSummary { - /** - * A unique identifier for a WebACL. You use WebACLId to get information about a WebACL (see GetWebACL), update a WebACL (see UpdateWebACL), and delete a WebACL from AWS WAF (see DeleteWebACL). WebACLId is returned by CreateWebACL and by ListWebACLs. - */ - WebACLId: ResourceId; - /** - * A friendly name or description of the WebACL. You can't change the name of a WebACL after you create it. - */ - Name: ResourceName; - } - export interface WebACLUpdate { - /** - * Specifies whether to insert a Rule into or delete a Rule from a WebACL. - */ - Action: ChangeAction; - /** - * The ActivatedRule object in an UpdateWebACL request specifies a Rule that you want to insert or delete, the priority of the Rule in the WebACL, and the action that you want AWS WAF to take when a web request matches the Rule (ALLOW, BLOCK, or COUNT). - */ - ActivatedRule: ActivatedRule; - } - export type WebACLUpdates = WebACLUpdate[]; - export interface XssMatchSet { - /** - * A unique identifier for an XssMatchSet. You use XssMatchSetId to get information about an XssMatchSet (see GetXssMatchSet), update an XssMatchSet (see UpdateXssMatchSet), insert an XssMatchSet into a Rule or delete one from a Rule (see UpdateRule), and delete an XssMatchSet from AWS WAF (see DeleteXssMatchSet). XssMatchSetId is returned by CreateXssMatchSet and by ListXssMatchSets. - */ - XssMatchSetId: ResourceId; - /** - * The name, if any, of the XssMatchSet. - */ - Name?: ResourceName; - /** - * Specifies the parts of web requests that you want to inspect for cross-site scripting attacks. - */ - XssMatchTuples: XssMatchTuples; - } - export type XssMatchSetSummaries = XssMatchSetSummary[]; - export interface XssMatchSetSummary { - /** - * A unique identifier for an XssMatchSet. You use XssMatchSetId to get information about a XssMatchSet (see GetXssMatchSet), update an XssMatchSet (see UpdateXssMatchSet), insert an XssMatchSet into a Rule or delete one from a Rule (see UpdateRule), and delete an XssMatchSet from AWS WAF (see DeleteXssMatchSet). XssMatchSetId is returned by CreateXssMatchSet and by ListXssMatchSets. - */ - XssMatchSetId: ResourceId; - /** - * The name of the XssMatchSet, if any, specified by Id. - */ - Name: ResourceName; - } - export interface XssMatchSetUpdate { - /** - * Specify INSERT to add a XssMatchSetUpdate to an XssMatchSet. Use DELETE to remove a XssMatchSetUpdate from an XssMatchSet. - */ - Action: ChangeAction; - /** - * Specifies the part of a web request that you want AWS WAF to inspect for cross-site scripting attacks and, if you want AWS WAF to inspect a header, the name of the header. - */ - XssMatchTuple: XssMatchTuple; - } - export type XssMatchSetUpdates = XssMatchSetUpdate[]; - export interface XssMatchTuple { - /** - * Specifies where in a web request to look for cross-site scripting attacks. - */ - FieldToMatch: FieldToMatch; - /** - * Text transformations eliminate some of the unusual formatting that attackers use in web requests in an effort to bypass AWS WAF. If you specify a transformation, AWS WAF performs the transformation on FieldToMatch before inspecting a request for a match. CMD_LINE When you're concerned that attackers are injecting an operating system commandline command and using unusual formatting to disguise some or all of the command, use this option to perform the following transformations: Delete the following characters: \ " ' ^ Delete spaces before the following characters: / ( Replace the following characters with a space: , ; Replace multiple spaces with one space Convert uppercase letters (A-Z) to lowercase (a-z) COMPRESS_WHITE_SPACE Use this option to replace the following characters with a space character (decimal 32): \f, formfeed, decimal 12 \t, tab, decimal 9 \n, newline, decimal 10 \r, carriage return, decimal 13 \v, vertical tab, decimal 11 non-breaking space, decimal 160 COMPRESS_WHITE_SPACE also replaces multiple spaces with one space. HTML_ENTITY_DECODE Use this option to replace HTML-encoded characters with unencoded characters. HTML_ENTITY_DECODE performs the following operations: Replaces (ampersand)quot; with " Replaces (ampersand)nbsp; with a non-breaking space, decimal 160 Replaces (ampersand)lt; with a "less than" symbol Replaces (ampersand)gt; with > Replaces characters that are represented in hexadecimal format, (ampersand)#xhhhh;, with the corresponding characters Replaces characters that are represented in decimal format, (ampersand)#nnnn;, with the corresponding characters LOWERCASE Use this option to convert uppercase letters (A-Z) to lowercase (a-z). URL_DECODE Use this option to decode a URL-encoded value. NONE Specify NONE if you don't want to perform any text transformations. - */ - TextTransformation: TextTransformation; - } - export type XssMatchTuples = XssMatchTuple[]; - export type errorMessage = string; - /** - * A string in YYYY-MM-DD format that represents the latest possible API version that can be used in this service. Specify 'latest' to use the latest possible version. - */ - export type apiVersion = "2016-11-28"|"latest"|string; - export interface ClientApiVersions { - /** - * A string in YYYY-MM-DD format that represents the latest possible API version that can be used in this service. Specify 'latest' to use the latest possible version. - */ - apiVersion?: apiVersion; - } - export type ClientConfiguration = ServiceConfigurationOptions & ClientApiVersions; - /** - * Contains interfaces for use with the WAFRegional client. - */ - export import Types = WAFRegional; -} -export = WAFRegional; diff --git a/workshops/monte-carlo-on-ec2-spot-fleet/src/web/node_modules/aws-sdk/clients/wafregional.js b/workshops/monte-carlo-on-ec2-spot-fleet/src/web/node_modules/aws-sdk/clients/wafregional.js deleted file mode 100644 index 8e806aa6..00000000 --- a/workshops/monte-carlo-on-ec2-spot-fleet/src/web/node_modules/aws-sdk/clients/wafregional.js +++ /dev/null @@ -1,18 +0,0 @@ -require('../lib/node_loader'); -var AWS = require('../lib/core'); -var Service = AWS.Service; -var apiLoader = AWS.apiLoader; - -apiLoader.services['wafregional'] = {}; -AWS.WAFRegional = Service.defineService('wafregional', ['2016-11-28']); -Object.defineProperty(apiLoader.services['wafregional'], '2016-11-28', { - get: function get() { - var model = require('../apis/waf-regional-2016-11-28.min.json'); - model.paginators = require('../apis/waf-regional-2016-11-28.paginators.json').pagination; - return model; - }, - enumerable: true, - configurable: true -}); - -module.exports = AWS.WAFRegional; diff --git a/workshops/monte-carlo-on-ec2-spot-fleet/src/web/node_modules/aws-sdk/clients/workdocs.d.ts b/workshops/monte-carlo-on-ec2-spot-fleet/src/web/node_modules/aws-sdk/clients/workdocs.d.ts deleted file mode 100644 index 8a2d9ffb..00000000 --- a/workshops/monte-carlo-on-ec2-spot-fleet/src/web/node_modules/aws-sdk/clients/workdocs.d.ts +++ /dev/null @@ -1,1845 +0,0 @@ -import {Request} from '../lib/request'; -import {Response} from '../lib/response'; -import {AWSError} from '../lib/error'; -import {Service} from '../lib/service'; -import {ServiceConfigurationOptions} from '../lib/service'; -import {ConfigBase as Config} from '../lib/config'; -interface Blob {} -declare class WorkDocs extends Service { - /** - * Constructs a service object. This object has one method for each API operation. - */ - constructor(options?: WorkDocs.Types.ClientConfiguration) - config: Config & WorkDocs.Types.ClientConfiguration; - /** - * Aborts the upload of the specified document version that was previously initiated by InitiateDocumentVersionUpload. The client should make this call only when it no longer intends to upload the document version, or fails to do so. - */ - abortDocumentVersionUpload(params: WorkDocs.Types.AbortDocumentVersionUploadRequest, callback?: (err: AWSError, data: {}) => void): Request<{}, AWSError>; - /** - * Aborts the upload of the specified document version that was previously initiated by InitiateDocumentVersionUpload. The client should make this call only when it no longer intends to upload the document version, or fails to do so. - */ - abortDocumentVersionUpload(callback?: (err: AWSError, data: {}) => void): Request<{}, AWSError>; - /** - * Activates the specified user. Only active users can access Amazon WorkDocs. - */ - activateUser(params: WorkDocs.Types.ActivateUserRequest, callback?: (err: AWSError, data: WorkDocs.Types.ActivateUserResponse) => void): Request; - /** - * Activates the specified user. Only active users can access Amazon WorkDocs. - */ - activateUser(callback?: (err: AWSError, data: WorkDocs.Types.ActivateUserResponse) => void): Request; - /** - * Creates a set of permissions for the specified folder or document. The resource permissions are overwritten if the principals already have different permissions. - */ - addResourcePermissions(params: WorkDocs.Types.AddResourcePermissionsRequest, callback?: (err: AWSError, data: WorkDocs.Types.AddResourcePermissionsResponse) => void): Request; - /** - * Creates a set of permissions for the specified folder or document. The resource permissions are overwritten if the principals already have different permissions. - */ - addResourcePermissions(callback?: (err: AWSError, data: WorkDocs.Types.AddResourcePermissionsResponse) => void): Request; - /** - * Adds a new comment to the specified document version. - */ - createComment(params: WorkDocs.Types.CreateCommentRequest, callback?: (err: AWSError, data: WorkDocs.Types.CreateCommentResponse) => void): Request; - /** - * Adds a new comment to the specified document version. - */ - createComment(callback?: (err: AWSError, data: WorkDocs.Types.CreateCommentResponse) => void): Request; - /** - * Adds one or more custom properties to the specified resource (a folder, document, or version). - */ - createCustomMetadata(params: WorkDocs.Types.CreateCustomMetadataRequest, callback?: (err: AWSError, data: WorkDocs.Types.CreateCustomMetadataResponse) => void): Request; - /** - * Adds one or more custom properties to the specified resource (a folder, document, or version). - */ - createCustomMetadata(callback?: (err: AWSError, data: WorkDocs.Types.CreateCustomMetadataResponse) => void): Request; - /** - * Creates a folder with the specified name and parent folder. - */ - createFolder(params: WorkDocs.Types.CreateFolderRequest, callback?: (err: AWSError, data: WorkDocs.Types.CreateFolderResponse) => void): Request; - /** - * Creates a folder with the specified name and parent folder. - */ - createFolder(callback?: (err: AWSError, data: WorkDocs.Types.CreateFolderResponse) => void): Request; - /** - * Adds the specified list of labels to the given resource (a document or folder) - */ - createLabels(params: WorkDocs.Types.CreateLabelsRequest, callback?: (err: AWSError, data: WorkDocs.Types.CreateLabelsResponse) => void): Request; - /** - * Adds the specified list of labels to the given resource (a document or folder) - */ - createLabels(callback?: (err: AWSError, data: WorkDocs.Types.CreateLabelsResponse) => void): Request; - /** - * Configure WorkDocs to use Amazon SNS notifications. The endpoint receives a confirmation message, and must confirm the subscription. For more information, see Confirm the Subscription in the Amazon Simple Notification Service Developer Guide. - */ - createNotificationSubscription(params: WorkDocs.Types.CreateNotificationSubscriptionRequest, callback?: (err: AWSError, data: WorkDocs.Types.CreateNotificationSubscriptionResponse) => void): Request; - /** - * Configure WorkDocs to use Amazon SNS notifications. The endpoint receives a confirmation message, and must confirm the subscription. For more information, see Confirm the Subscription in the Amazon Simple Notification Service Developer Guide. - */ - createNotificationSubscription(callback?: (err: AWSError, data: WorkDocs.Types.CreateNotificationSubscriptionResponse) => void): Request; - /** - * Creates a user in a Simple AD or Microsoft AD directory. The status of a newly created user is "ACTIVE". New users can access Amazon WorkDocs. - */ - createUser(params: WorkDocs.Types.CreateUserRequest, callback?: (err: AWSError, data: WorkDocs.Types.CreateUserResponse) => void): Request; - /** - * Creates a user in a Simple AD or Microsoft AD directory. The status of a newly created user is "ACTIVE". New users can access Amazon WorkDocs. - */ - createUser(callback?: (err: AWSError, data: WorkDocs.Types.CreateUserResponse) => void): Request; - /** - * Deactivates the specified user, which revokes the user's access to Amazon WorkDocs. - */ - deactivateUser(params: WorkDocs.Types.DeactivateUserRequest, callback?: (err: AWSError, data: {}) => void): Request<{}, AWSError>; - /** - * Deactivates the specified user, which revokes the user's access to Amazon WorkDocs. - */ - deactivateUser(callback?: (err: AWSError, data: {}) => void): Request<{}, AWSError>; - /** - * Deletes the specified comment from the document version. - */ - deleteComment(params: WorkDocs.Types.DeleteCommentRequest, callback?: (err: AWSError, data: {}) => void): Request<{}, AWSError>; - /** - * Deletes the specified comment from the document version. - */ - deleteComment(callback?: (err: AWSError, data: {}) => void): Request<{}, AWSError>; - /** - * Deletes custom metadata from the specified resource. - */ - deleteCustomMetadata(params: WorkDocs.Types.DeleteCustomMetadataRequest, callback?: (err: AWSError, data: WorkDocs.Types.DeleteCustomMetadataResponse) => void): Request; - /** - * Deletes custom metadata from the specified resource. - */ - deleteCustomMetadata(callback?: (err: AWSError, data: WorkDocs.Types.DeleteCustomMetadataResponse) => void): Request; - /** - * Permanently deletes the specified document and its associated metadata. - */ - deleteDocument(params: WorkDocs.Types.DeleteDocumentRequest, callback?: (err: AWSError, data: {}) => void): Request<{}, AWSError>; - /** - * Permanently deletes the specified document and its associated metadata. - */ - deleteDocument(callback?: (err: AWSError, data: {}) => void): Request<{}, AWSError>; - /** - * Permanently deletes the specified folder and its contents. - */ - deleteFolder(params: WorkDocs.Types.DeleteFolderRequest, callback?: (err: AWSError, data: {}) => void): Request<{}, AWSError>; - /** - * Permanently deletes the specified folder and its contents. - */ - deleteFolder(callback?: (err: AWSError, data: {}) => void): Request<{}, AWSError>; - /** - * Deletes the contents of the specified folder. - */ - deleteFolderContents(params: WorkDocs.Types.DeleteFolderContentsRequest, callback?: (err: AWSError, data: {}) => void): Request<{}, AWSError>; - /** - * Deletes the contents of the specified folder. - */ - deleteFolderContents(callback?: (err: AWSError, data: {}) => void): Request<{}, AWSError>; - /** - * Deletes the specified list of labels from a resource. - */ - deleteLabels(params: WorkDocs.Types.DeleteLabelsRequest, callback?: (err: AWSError, data: WorkDocs.Types.DeleteLabelsResponse) => void): Request; - /** - * Deletes the specified list of labels from a resource. - */ - deleteLabels(callback?: (err: AWSError, data: WorkDocs.Types.DeleteLabelsResponse) => void): Request; - /** - * Deletes the specified subscription from the specified organization. - */ - deleteNotificationSubscription(params: WorkDocs.Types.DeleteNotificationSubscriptionRequest, callback?: (err: AWSError, data: {}) => void): Request<{}, AWSError>; - /** - * Deletes the specified subscription from the specified organization. - */ - deleteNotificationSubscription(callback?: (err: AWSError, data: {}) => void): Request<{}, AWSError>; - /** - * Deletes the specified user from a Simple AD or Microsoft AD directory. - */ - deleteUser(params: WorkDocs.Types.DeleteUserRequest, callback?: (err: AWSError, data: {}) => void): Request<{}, AWSError>; - /** - * Deletes the specified user from a Simple AD or Microsoft AD directory. - */ - deleteUser(callback?: (err: AWSError, data: {}) => void): Request<{}, AWSError>; - /** - * Describes the user activities in a specified time period. - */ - describeActivities(params: WorkDocs.Types.DescribeActivitiesRequest, callback?: (err: AWSError, data: WorkDocs.Types.DescribeActivitiesResponse) => void): Request; - /** - * Describes the user activities in a specified time period. - */ - describeActivities(callback?: (err: AWSError, data: WorkDocs.Types.DescribeActivitiesResponse) => void): Request; - /** - * List all the comments for the specified document version. - */ - describeComments(params: WorkDocs.Types.DescribeCommentsRequest, callback?: (err: AWSError, data: WorkDocs.Types.DescribeCommentsResponse) => void): Request; - /** - * List all the comments for the specified document version. - */ - describeComments(callback?: (err: AWSError, data: WorkDocs.Types.DescribeCommentsResponse) => void): Request; - /** - * Retrieves the document versions for the specified document. By default, only active versions are returned. - */ - describeDocumentVersions(params: WorkDocs.Types.DescribeDocumentVersionsRequest, callback?: (err: AWSError, data: WorkDocs.Types.DescribeDocumentVersionsResponse) => void): Request; - /** - * Retrieves the document versions for the specified document. By default, only active versions are returned. - */ - describeDocumentVersions(callback?: (err: AWSError, data: WorkDocs.Types.DescribeDocumentVersionsResponse) => void): Request; - /** - * Describes the contents of the specified folder, including its documents and subfolders. By default, Amazon WorkDocs returns the first 100 active document and folder metadata items. If there are more results, the response includes a marker that you can use to request the next set of results. You can also request initialized documents. - */ - describeFolderContents(params: WorkDocs.Types.DescribeFolderContentsRequest, callback?: (err: AWSError, data: WorkDocs.Types.DescribeFolderContentsResponse) => void): Request; - /** - * Describes the contents of the specified folder, including its documents and subfolders. By default, Amazon WorkDocs returns the first 100 active document and folder metadata items. If there are more results, the response includes a marker that you can use to request the next set of results. You can also request initialized documents. - */ - describeFolderContents(callback?: (err: AWSError, data: WorkDocs.Types.DescribeFolderContentsResponse) => void): Request; - /** - * Lists the specified notification subscriptions. - */ - describeNotificationSubscriptions(params: WorkDocs.Types.DescribeNotificationSubscriptionsRequest, callback?: (err: AWSError, data: WorkDocs.Types.DescribeNotificationSubscriptionsResponse) => void): Request; - /** - * Lists the specified notification subscriptions. - */ - describeNotificationSubscriptions(callback?: (err: AWSError, data: WorkDocs.Types.DescribeNotificationSubscriptionsResponse) => void): Request; - /** - * Describes the permissions of a specified resource. - */ - describeResourcePermissions(params: WorkDocs.Types.DescribeResourcePermissionsRequest, callback?: (err: AWSError, data: WorkDocs.Types.DescribeResourcePermissionsResponse) => void): Request; - /** - * Describes the permissions of a specified resource. - */ - describeResourcePermissions(callback?: (err: AWSError, data: WorkDocs.Types.DescribeResourcePermissionsResponse) => void): Request; - /** - * Describes the current user's special folders; the RootFolder and the RecyleBin. RootFolder is the root of user's files and folders and RecyleBin is the root of recycled items. This is not a valid action for SigV4 (administrative API) clients. - */ - describeRootFolders(params: WorkDocs.Types.DescribeRootFoldersRequest, callback?: (err: AWSError, data: WorkDocs.Types.DescribeRootFoldersResponse) => void): Request; - /** - * Describes the current user's special folders; the RootFolder and the RecyleBin. RootFolder is the root of user's files and folders and RecyleBin is the root of recycled items. This is not a valid action for SigV4 (administrative API) clients. - */ - describeRootFolders(callback?: (err: AWSError, data: WorkDocs.Types.DescribeRootFoldersResponse) => void): Request; - /** - * Describes the specified users. You can describe all users or filter the results (for example, by status or organization). By default, Amazon WorkDocs returns the first 24 active or pending users. If there are more results, the response includes a marker that you can use to request the next set of results. - */ - describeUsers(params: WorkDocs.Types.DescribeUsersRequest, callback?: (err: AWSError, data: WorkDocs.Types.DescribeUsersResponse) => void): Request; - /** - * Describes the specified users. You can describe all users or filter the results (for example, by status or organization). By default, Amazon WorkDocs returns the first 24 active or pending users. If there are more results, the response includes a marker that you can use to request the next set of results. - */ - describeUsers(callback?: (err: AWSError, data: WorkDocs.Types.DescribeUsersResponse) => void): Request; - /** - * Retrieves details of the current user for whom the authentication token was generated. This is not a valid action for SigV4 (administrative API) clients. - */ - getCurrentUser(params: WorkDocs.Types.GetCurrentUserRequest, callback?: (err: AWSError, data: WorkDocs.Types.GetCurrentUserResponse) => void): Request; - /** - * Retrieves details of the current user for whom the authentication token was generated. This is not a valid action for SigV4 (administrative API) clients. - */ - getCurrentUser(callback?: (err: AWSError, data: WorkDocs.Types.GetCurrentUserResponse) => void): Request; - /** - * Retrieves details of a document. - */ - getDocument(params: WorkDocs.Types.GetDocumentRequest, callback?: (err: AWSError, data: WorkDocs.Types.GetDocumentResponse) => void): Request; - /** - * Retrieves details of a document. - */ - getDocument(callback?: (err: AWSError, data: WorkDocs.Types.GetDocumentResponse) => void): Request; - /** - * Retrieves the path information (the hierarchy from the root folder) for the requested document. By default, Amazon WorkDocs returns a maximum of 100 levels upwards from the requested document and only includes the IDs of the parent folders in the path. You can limit the maximum number of levels. You can also request the names of the parent folders. - */ - getDocumentPath(params: WorkDocs.Types.GetDocumentPathRequest, callback?: (err: AWSError, data: WorkDocs.Types.GetDocumentPathResponse) => void): Request; - /** - * Retrieves the path information (the hierarchy from the root folder) for the requested document. By default, Amazon WorkDocs returns a maximum of 100 levels upwards from the requested document and only includes the IDs of the parent folders in the path. You can limit the maximum number of levels. You can also request the names of the parent folders. - */ - getDocumentPath(callback?: (err: AWSError, data: WorkDocs.Types.GetDocumentPathResponse) => void): Request; - /** - * Retrieves version metadata for the specified document. - */ - getDocumentVersion(params: WorkDocs.Types.GetDocumentVersionRequest, callback?: (err: AWSError, data: WorkDocs.Types.GetDocumentVersionResponse) => void): Request; - /** - * Retrieves version metadata for the specified document. - */ - getDocumentVersion(callback?: (err: AWSError, data: WorkDocs.Types.GetDocumentVersionResponse) => void): Request; - /** - * Retrieves the metadata of the specified folder. - */ - getFolder(params: WorkDocs.Types.GetFolderRequest, callback?: (err: AWSError, data: WorkDocs.Types.GetFolderResponse) => void): Request; - /** - * Retrieves the metadata of the specified folder. - */ - getFolder(callback?: (err: AWSError, data: WorkDocs.Types.GetFolderResponse) => void): Request; - /** - * Retrieves the path information (the hierarchy from the root folder) for the specified folder. By default, Amazon WorkDocs returns a maximum of 100 levels upwards from the requested folder and only includes the IDs of the parent folders in the path. You can limit the maximum number of levels. You can also request the parent folder names. - */ - getFolderPath(params: WorkDocs.Types.GetFolderPathRequest, callback?: (err: AWSError, data: WorkDocs.Types.GetFolderPathResponse) => void): Request; - /** - * Retrieves the path information (the hierarchy from the root folder) for the specified folder. By default, Amazon WorkDocs returns a maximum of 100 levels upwards from the requested folder and only includes the IDs of the parent folders in the path. You can limit the maximum number of levels. You can also request the parent folder names. - */ - getFolderPath(callback?: (err: AWSError, data: WorkDocs.Types.GetFolderPathResponse) => void): Request; - /** - * Creates a new document object and version object. The client specifies the parent folder ID and name of the document to upload. The ID is optionally specified when creating a new version of an existing document. This is the first step to upload a document. Next, upload the document to the URL returned from the call, and then call UpdateDocumentVersion. To cancel the document upload, call AbortDocumentVersionUpload. - */ - initiateDocumentVersionUpload(params: WorkDocs.Types.InitiateDocumentVersionUploadRequest, callback?: (err: AWSError, data: WorkDocs.Types.InitiateDocumentVersionUploadResponse) => void): Request; - /** - * Creates a new document object and version object. The client specifies the parent folder ID and name of the document to upload. The ID is optionally specified when creating a new version of an existing document. This is the first step to upload a document. Next, upload the document to the URL returned from the call, and then call UpdateDocumentVersion. To cancel the document upload, call AbortDocumentVersionUpload. - */ - initiateDocumentVersionUpload(callback?: (err: AWSError, data: WorkDocs.Types.InitiateDocumentVersionUploadResponse) => void): Request; - /** - * Removes all the permissions from the specified resource. - */ - removeAllResourcePermissions(params: WorkDocs.Types.RemoveAllResourcePermissionsRequest, callback?: (err: AWSError, data: {}) => void): Request<{}, AWSError>; - /** - * Removes all the permissions from the specified resource. - */ - removeAllResourcePermissions(callback?: (err: AWSError, data: {}) => void): Request<{}, AWSError>; - /** - * Removes the permission for the specified principal from the specified resource. - */ - removeResourcePermission(params: WorkDocs.Types.RemoveResourcePermissionRequest, callback?: (err: AWSError, data: {}) => void): Request<{}, AWSError>; - /** - * Removes the permission for the specified principal from the specified resource. - */ - removeResourcePermission(callback?: (err: AWSError, data: {}) => void): Request<{}, AWSError>; - /** - * Updates the specified attributes of a document. The user must have access to both the document and its parent folder, if applicable. - */ - updateDocument(params: WorkDocs.Types.UpdateDocumentRequest, callback?: (err: AWSError, data: {}) => void): Request<{}, AWSError>; - /** - * Updates the specified attributes of a document. The user must have access to both the document and its parent folder, if applicable. - */ - updateDocument(callback?: (err: AWSError, data: {}) => void): Request<{}, AWSError>; - /** - * Changes the status of the document version to ACTIVE. Amazon WorkDocs also sets its document container to ACTIVE. This is the last step in a document upload, after the client uploads the document to an S3-presigned URL returned by InitiateDocumentVersionUpload. - */ - updateDocumentVersion(params: WorkDocs.Types.UpdateDocumentVersionRequest, callback?: (err: AWSError, data: {}) => void): Request<{}, AWSError>; - /** - * Changes the status of the document version to ACTIVE. Amazon WorkDocs also sets its document container to ACTIVE. This is the last step in a document upload, after the client uploads the document to an S3-presigned URL returned by InitiateDocumentVersionUpload. - */ - updateDocumentVersion(callback?: (err: AWSError, data: {}) => void): Request<{}, AWSError>; - /** - * Updates the specified attributes of the specified folder. The user must have access to both the folder and its parent folder, if applicable. - */ - updateFolder(params: WorkDocs.Types.UpdateFolderRequest, callback?: (err: AWSError, data: {}) => void): Request<{}, AWSError>; - /** - * Updates the specified attributes of the specified folder. The user must have access to both the folder and its parent folder, if applicable. - */ - updateFolder(callback?: (err: AWSError, data: {}) => void): Request<{}, AWSError>; - /** - * Updates the specified attributes of the specified user, and grants or revokes administrative privileges to the Amazon WorkDocs site. - */ - updateUser(params: WorkDocs.Types.UpdateUserRequest, callback?: (err: AWSError, data: WorkDocs.Types.UpdateUserResponse) => void): Request; - /** - * Updates the specified attributes of the specified user, and grants or revokes administrative privileges to the Amazon WorkDocs site. - */ - updateUser(callback?: (err: AWSError, data: WorkDocs.Types.UpdateUserResponse) => void): Request; -} -declare namespace WorkDocs { - export interface AbortDocumentVersionUploadRequest { - /** - * Amazon WorkDocs authentication token. This field should not be set when using administrative API actions, as in accessing the API using AWS credentials. - */ - AuthenticationToken?: AuthenticationHeaderType; - /** - * The ID of the document. - */ - DocumentId: ResourceIdType; - /** - * The ID of the version. - */ - VersionId: DocumentVersionIdType; - } - export interface ActivateUserRequest { - /** - * The ID of the user. - */ - UserId: IdType; - /** - * Amazon WorkDocs authentication token. This field should not be set when using administrative API actions, as in accessing the API using AWS credentials. - */ - AuthenticationToken?: AuthenticationHeaderType; - } - export interface ActivateUserResponse { - /** - * The user information. - */ - User?: User; - } - export interface Activity { - /** - * The activity type. - */ - Type?: ActivityType; - /** - * The timestamp when the action was performed. - */ - TimeStamp?: TimestampType; - /** - * The ID of the organization. - */ - OrganizationId?: IdType; - /** - * The user who performed the action. - */ - Initiator?: UserMetadata; - /** - * The list of users or groups impacted by this action. This is an optional field and is filled for the following sharing activities: DOCUMENT_SHARED, DOCUMENT_SHARED, DOCUMENT_UNSHARED, FOLDER_SHARED, FOLDER_UNSHARED. - */ - Participants?: Participants; - /** - * The metadata of the resource involved in the user action. - */ - ResourceMetadata?: ResourceMetadata; - /** - * The original parent of the resource. This is an optional field and is filled for move activities. - */ - OriginalParent?: ResourceMetadata; - /** - * Metadata of the commenting activity. This is an optional field and is filled for commenting activities. - */ - CommentMetadata?: CommentMetadata; - } - export type ActivityType = "DOCUMENT_CHECKED_IN"|"DOCUMENT_CHECKED_OUT"|"DOCUMENT_RENAMED"|"DOCUMENT_VERSION_UPLOADED"|"DOCUMENT_VERSION_DELETED"|"DOCUMENT_RECYCLED"|"DOCUMENT_RESTORED"|"DOCUMENT_REVERTED"|"DOCUMENT_SHARED"|"DOCUMENT_UNSHARED"|"DOCUMENT_SHARE_PERMISSION_CHANGED"|"DOCUMENT_SHAREABLE_LINK_CREATED"|"DOCUMENT_SHAREABLE_LINK_REMOVED"|"DOCUMENT_SHAREABLE_LINK_PERMISSION_CHANGED"|"DOCUMENT_MOVED"|"DOCUMENT_COMMENT_ADDED"|"DOCUMENT_COMMENT_DELETED"|"DOCUMENT_ANNOTATION_ADDED"|"DOCUMENT_ANNOTATION_DELETED"|"FOLDER_CREATED"|"FOLDER_DELETED"|"FOLDER_RENAMED"|"FOLDER_RECYCLED"|"FOLDER_RESTORED"|"FOLDER_SHARED"|"FOLDER_UNSHARED"|"FOLDER_SHARE_PERMISSION_CHANGED"|"FOLDER_SHAREABLE_LINK_CREATED"|"FOLDER_SHAREABLE_LINK_REMOVED"|"FOLDER_SHAREABLE_LINK_PERMISSION_CHANGED"|"FOLDER_MOVED"|string; - export interface AddResourcePermissionsRequest { - /** - * Amazon WorkDocs authentication token. This field should not be set when using administrative API actions, as in accessing the API using AWS credentials. - */ - AuthenticationToken?: AuthenticationHeaderType; - /** - * The ID of the resource. - */ - ResourceId: ResourceIdType; - /** - * The users, groups, or organization being granted permission. - */ - Principals: SharePrincipalList; - } - export interface AddResourcePermissionsResponse { - /** - * The share results. - */ - ShareResults?: ShareResultsList; - } - export type AuthenticationHeaderType = string; - export type BooleanType = boolean; - export interface Comment { - /** - * The ID of the comment. - */ - CommentId: CommentIdType; - /** - * The ID of the parent comment. - */ - ParentId?: CommentIdType; - /** - * The ID of the root comment in the thread. - */ - ThreadId?: CommentIdType; - /** - * The text of the comment. - */ - Text?: CommentTextType; - /** - * The details of the user who made the comment. - */ - Contributor?: User; - /** - * The time that the comment was created. - */ - CreatedTimestamp?: TimestampType; - /** - * The status of the comment. - */ - Status?: CommentStatusType; - /** - * The visibility of the comment. Options are either PRIVATE, where the comment is visible only to the comment author and document owner and co-owners, or PUBLIC, where the comment is visible to document owners, co-owners, and contributors. - */ - Visibility?: CommentVisibilityType; - /** - * If the comment is a reply to another user's comment, this field contains the user ID of the user being replied to. - */ - RecipientId?: IdType; - } - export type CommentIdType = string; - export type CommentList = Comment[]; - export interface CommentMetadata { - /** - * The ID of the comment. - */ - CommentId?: CommentIdType; - /** - * The user who made the comment. - */ - Contributor?: User; - CreatedTimestamp?: TimestampType; - CommentStatus?: CommentStatusType; - /** - * The ID of the user being replied to. - */ - RecipientId?: IdType; - } - export type CommentStatusType = "DRAFT"|"PUBLISHED"|"DELETED"|string; - export type CommentTextType = string; - export type CommentVisibilityType = "PUBLIC"|"PRIVATE"|string; - export interface CreateCommentRequest { - /** - * Amazon WorkDocs authentication token. This field should not be set when using administrative API actions, as in accessing the API using AWS credentials. - */ - AuthenticationToken?: AuthenticationHeaderType; - /** - * The ID of the document. - */ - DocumentId: ResourceIdType; - /** - * The ID of the document version. - */ - VersionId: DocumentVersionIdType; - /** - * The ID of the parent comment. - */ - ParentId?: CommentIdType; - /** - * The ID of the root comment in the thread. - */ - ThreadId?: CommentIdType; - /** - * The text of the comment. - */ - Text: CommentTextType; - /** - * The visibility of the comment. Options are either PRIVATE, where the comment is visible only to the comment author and document owner and co-owners, or PUBLIC, where the comment is visible to document owners, co-owners, and contributors. - */ - Visibility?: CommentVisibilityType; - /** - * Set this parameter to TRUE to send an email out to the document collaborators after the comment is created. - */ - NotifyCollaborators?: BooleanType; - } - export interface CreateCommentResponse { - /** - * The comment that has been created. - */ - Comment?: Comment; - } - export interface CreateCustomMetadataRequest { - /** - * Amazon WorkDocs authentication token. This field should not be set when using administrative API actions, as in accessing the API using AWS credentials. - */ - AuthenticationToken?: AuthenticationHeaderType; - /** - * The ID of the resource. - */ - ResourceId: ResourceIdType; - /** - * The ID of the version, if the custom metadata is being added to a document version. - */ - VersionId?: DocumentVersionIdType; - /** - * Custom metadata in the form of name-value pairs. - */ - CustomMetadata: CustomMetadataMap; - } - export interface CreateCustomMetadataResponse { - } - export interface CreateFolderRequest { - /** - * Amazon WorkDocs authentication token. This field should not be set when using administrative API actions, as in accessing the API using AWS credentials. - */ - AuthenticationToken?: AuthenticationHeaderType; - /** - * The name of the new folder. - */ - Name?: ResourceNameType; - /** - * The ID of the parent folder. - */ - ParentFolderId: ResourceIdType; - } - export interface CreateFolderResponse { - /** - * The metadata of the folder. - */ - Metadata?: FolderMetadata; - } - export interface CreateLabelsRequest { - /** - * The ID of the resource. - */ - ResourceId: ResourceIdType; - /** - * List of labels to add to the resource. - */ - Labels: Labels; - /** - * Amazon WorkDocs authentication token. This field should not be set when using administrative API actions, as in accessing the API using AWS credentials. - */ - AuthenticationToken?: AuthenticationHeaderType; - } - export interface CreateLabelsResponse { - } - export interface CreateNotificationSubscriptionRequest { - /** - * The ID of the organization. - */ - OrganizationId: IdType; - /** - * The endpoint to receive the notifications. If the protocol is HTTPS, the endpoint is a URL that begins with "https://". - */ - Endpoint: SubscriptionEndPointType; - /** - * The protocol to use. The supported value is https, which delivers JSON-encoded messasges using HTTPS POST. - */ - Protocol: SubscriptionProtocolType; - /** - * The notification type. - */ - SubscriptionType: SubscriptionType; - } - export interface CreateNotificationSubscriptionResponse { - /** - * The subscription. - */ - Subscription?: Subscription; - } - export interface CreateUserRequest { - /** - * The ID of the organization. - */ - OrganizationId?: IdType; - /** - * The login name of the user. - */ - Username: UsernameType; - /** - * The email address of the user. - */ - EmailAddress?: EmailAddressType; - /** - * The given name of the user. - */ - GivenName: UserAttributeValueType; - /** - * The surname of the user. - */ - Surname: UserAttributeValueType; - /** - * The password of the user. - */ - Password: PasswordType; - /** - * The time zone ID of the user. - */ - TimeZoneId?: TimeZoneIdType; - /** - * The amount of storage for the user. - */ - StorageRule?: StorageRuleType; - /** - * Amazon WorkDocs authentication token. This field should not be set when using administrative API actions, as in accessing the API using AWS credentials. - */ - AuthenticationToken?: AuthenticationHeaderType; - } - export interface CreateUserResponse { - /** - * The user information. - */ - User?: User; - } - export type CustomMetadataKeyList = CustomMetadataKeyType[]; - export type CustomMetadataKeyType = string; - export type CustomMetadataMap = {[key: string]: CustomMetadataValueType}; - export type CustomMetadataValueType = string; - export interface DeactivateUserRequest { - /** - * The ID of the user. - */ - UserId: IdType; - /** - * Amazon WorkDocs authentication token. This field should not be set when using administrative API actions, as in accessing the API using AWS credentials. - */ - AuthenticationToken?: AuthenticationHeaderType; - } - export interface DeleteCommentRequest { - /** - * Amazon WorkDocs authentication token. This field should not be set when using administrative API actions, as in accessing the API using AWS credentials. - */ - AuthenticationToken?: AuthenticationHeaderType; - /** - * The ID of the document. - */ - DocumentId: ResourceIdType; - /** - * The ID of the document version. - */ - VersionId: DocumentVersionIdType; - /** - * The ID of the comment. - */ - CommentId: CommentIdType; - } - export interface DeleteCustomMetadataRequest { - /** - * Amazon WorkDocs authentication token. This field should not be set when using administrative API actions, as in accessing the API using AWS credentials. - */ - AuthenticationToken?: AuthenticationHeaderType; - /** - * The ID of the resource, either a document or folder. - */ - ResourceId: ResourceIdType; - /** - * The ID of the version, if the custom metadata is being deleted from a document version. - */ - VersionId?: DocumentVersionIdType; - /** - * List of properties to remove. - */ - Keys?: CustomMetadataKeyList; - /** - * Flag to indicate removal of all custom metadata properties from the specified resource. - */ - DeleteAll?: BooleanType; - } - export interface DeleteCustomMetadataResponse { - } - export interface DeleteDocumentRequest { - /** - * Amazon WorkDocs authentication token. This field should not be set when using administrative API actions, as in accessing the API using AWS credentials. - */ - AuthenticationToken?: AuthenticationHeaderType; - /** - * The ID of the document. - */ - DocumentId: ResourceIdType; - } - export interface DeleteFolderContentsRequest { - /** - * Amazon WorkDocs authentication token. This field should not be set when using administrative API actions, as in accessing the API using AWS credentials. - */ - AuthenticationToken?: AuthenticationHeaderType; - /** - * The ID of the folder. - */ - FolderId: ResourceIdType; - } - export interface DeleteFolderRequest { - /** - * Amazon WorkDocs authentication token. This field should not be set when using administrative API actions, as in accessing the API using AWS credentials. - */ - AuthenticationToken?: AuthenticationHeaderType; - /** - * The ID of the folder. - */ - FolderId: ResourceIdType; - } - export interface DeleteLabelsRequest { - /** - * The ID of the resource. - */ - ResourceId: ResourceIdType; - /** - * Amazon WorkDocs authentication token. This field should not be set when using administrative API actions, as in accessing the API using AWS credentials. - */ - AuthenticationToken?: AuthenticationHeaderType; - /** - * List of labels to delete from the resource. - */ - Labels?: Labels; - /** - * Flag to request removal of all labels from the specified resource. - */ - DeleteAll?: BooleanType; - } - export interface DeleteLabelsResponse { - } - export interface DeleteNotificationSubscriptionRequest { - /** - * The ID of the subscription. - */ - SubscriptionId: IdType; - /** - * The ID of the organization. - */ - OrganizationId: IdType; - } - export interface DeleteUserRequest { - /** - * Amazon WorkDocs authentication token. This field should not be set when using administrative API actions, as in accessing the API using AWS credentials. - */ - AuthenticationToken?: AuthenticationHeaderType; - /** - * The ID of the user. - */ - UserId: IdType; - } - export interface DescribeActivitiesRequest { - /** - * Amazon WorkDocs authentication token. This field should not be set when using administrative API actions, as in accessing the API using AWS credentials. - */ - AuthenticationToken?: AuthenticationHeaderType; - /** - * The timestamp that determines the starting time of the activities; the response includes the activities performed after the specified timestamp. - */ - StartTime?: TimestampType; - /** - * The timestamp that determines the end time of the activities; the response includes the activities performed before the specified timestamp. - */ - EndTime?: TimestampType; - /** - * The ID of the organization. This is a mandatory parameter when using administrative API (SigV4) requests. - */ - OrganizationId?: IdType; - /** - * The ID of the user who performed the action. The response includes activities pertaining to this user. This is an optional parameter and is only applicable for administrative API (SigV4) requests. - */ - UserId?: IdType; - /** - * The maximum number of items to return. - */ - Limit?: LimitType; - /** - * The marker for the next set of results. (You received this marker from a previous call.) - */ - Marker?: MarkerType; - } - export interface DescribeActivitiesResponse { - /** - * The list of activities for the specified user and time period. - */ - UserActivities?: UserActivities; - /** - * The marker for the next set of results. - */ - Marker?: MarkerType; - } - export interface DescribeCommentsRequest { - /** - * Amazon WorkDocs authentication token. This field should not be set when using administrative API actions, as in accessing the API using AWS credentials. - */ - AuthenticationToken?: AuthenticationHeaderType; - /** - * The ID of the document. - */ - DocumentId: ResourceIdType; - /** - * The ID of the document version. - */ - VersionId: DocumentVersionIdType; - /** - * The maximum number of items to return. - */ - Limit?: LimitType; - /** - * The marker for the next set of results. This marker was received from a previous call. - */ - Marker?: MarkerType; - } - export interface DescribeCommentsResponse { - /** - * The list of comments for the specified document version. - */ - Comments?: CommentList; - /** - * The marker for the next set of results. This marker was received from a previous call. - */ - Marker?: MarkerType; - } - export interface DescribeDocumentVersionsRequest { - /** - * Amazon WorkDocs authentication token. This field should not be set when using administrative API actions, as in accessing the API using AWS credentials. - */ - AuthenticationToken?: AuthenticationHeaderType; - /** - * The ID of the document. - */ - DocumentId: ResourceIdType; - /** - * The marker for the next set of results. (You received this marker from a previous call.) - */ - Marker?: PageMarkerType; - /** - * The maximum number of versions to return with this call. - */ - Limit?: LimitType; - /** - * A comma-separated list of values. Specify "INITIALIZED" to include incomplete versions. - */ - Include?: FieldNamesType; - /** - * Specify "SOURCE" to include initialized versions and a URL for the source document. - */ - Fields?: FieldNamesType; - } - export interface DescribeDocumentVersionsResponse { - /** - * The document versions. - */ - DocumentVersions?: DocumentVersionMetadataList; - /** - * The marker to use when requesting the next set of results. If there are no additional results, the string is empty. - */ - Marker?: PageMarkerType; - } - export interface DescribeFolderContentsRequest { - /** - * Amazon WorkDocs authentication token. This field should not be set when using administrative API actions, as in accessing the API using AWS credentials. - */ - AuthenticationToken?: AuthenticationHeaderType; - /** - * The ID of the folder. - */ - FolderId: ResourceIdType; - /** - * The sorting criteria. - */ - Sort?: ResourceSortType; - /** - * The order for the contents of the folder. - */ - Order?: OrderType; - /** - * The maximum number of items to return with this call. - */ - Limit?: LimitType; - /** - * The marker for the next set of results. This marker was received from a previous call. - */ - Marker?: PageMarkerType; - /** - * The type of items. - */ - Type?: FolderContentType; - /** - * The contents to include. Specify "INITIALIZED" to include initialized documents. - */ - Include?: FieldNamesType; - } - export interface DescribeFolderContentsResponse { - /** - * The subfolders in the specified folder. - */ - Folders?: FolderMetadataList; - /** - * The documents in the specified folder. - */ - Documents?: DocumentMetadataList; - /** - * The marker to use when requesting the next set of results. If there are no additional results, the string is empty. - */ - Marker?: PageMarkerType; - } - export interface DescribeNotificationSubscriptionsRequest { - /** - * The ID of the organization. - */ - OrganizationId: IdType; - /** - * The marker for the next set of results. (You received this marker from a previous call.) - */ - Marker?: PageMarkerType; - /** - * The maximum number of items to return with this call. - */ - Limit?: LimitType; - } - export interface DescribeNotificationSubscriptionsResponse { - /** - * The subscriptions. - */ - Subscriptions?: SubscriptionList; - /** - * The marker to use when requesting the next set of results. If there are no additional results, the string is empty. - */ - Marker?: PageMarkerType; - } - export interface DescribeResourcePermissionsRequest { - /** - * Amazon WorkDocs authentication token. This field should not be set when using administrative API actions, as in accessing the API using AWS credentials. - */ - AuthenticationToken?: AuthenticationHeaderType; - /** - * The ID of the resource. - */ - ResourceId: ResourceIdType; - /** - * The maximum number of items to return with this call. - */ - Limit?: LimitType; - /** - * The marker for the next set of results. (You received this marker from a previous call) - */ - Marker?: PageMarkerType; - } - export interface DescribeResourcePermissionsResponse { - /** - * The principals. - */ - Principals?: PrincipalList; - /** - * The marker to use when requesting the next set of results. If there are no additional results, the string is empty. - */ - Marker?: PageMarkerType; - } - export interface DescribeRootFoldersRequest { - /** - * Amazon WorkDocs authentication token. This field should not be set when using administrative API actions, as in accessing the API using AWS credentials. - */ - AuthenticationToken: AuthenticationHeaderType; - /** - * The maximum number of items to return. - */ - Limit?: LimitType; - /** - * The marker for the next set of results. (You received this marker from a previous call.) - */ - Marker?: PageMarkerType; - } - export interface DescribeRootFoldersResponse { - /** - * The user's special folders. - */ - Folders?: FolderMetadataList; - /** - * The marker for the next set of results. - */ - Marker?: PageMarkerType; - } - export interface DescribeUsersRequest { - /** - * Amazon WorkDocs authentication token. This field should not be set when using administrative API actions, as in accessing the API using AWS credentials. - */ - AuthenticationToken?: AuthenticationHeaderType; - /** - * The ID of the organization. - */ - OrganizationId?: IdType; - /** - * The IDs of the users. - */ - UserIds?: UserIdsType; - /** - * A query to filter users by user name. - */ - Query?: SearchQueryType; - /** - * The state of the users. Specify "ALL" to include inactive users. - */ - Include?: UserFilterType; - /** - * The order for the results. - */ - Order?: OrderType; - /** - * The sorting criteria. - */ - Sort?: UserSortType; - /** - * The marker for the next set of results. (You received this marker from a previous call.) - */ - Marker?: PageMarkerType; - /** - * The maximum number of items to return. - */ - Limit?: LimitType; - /** - * A comma-separated list of values. Specify "STORAGE_METADATA" to include the user storage quota and utilization information. - */ - Fields?: FieldNamesType; - } - export interface DescribeUsersResponse { - /** - * The users. - */ - Users?: OrganizationUserList; - /** - * The total number of users included in the results. - */ - TotalNumberOfUsers?: SizeType; - /** - * The marker to use when requesting the next set of results. If there are no additional results, the string is empty. - */ - Marker?: PageMarkerType; - } - export type DocumentContentType = string; - export interface DocumentMetadata { - /** - * The ID of the document. - */ - Id?: ResourceIdType; - /** - * The ID of the creator. - */ - CreatorId?: IdType; - /** - * The ID of the parent folder. - */ - ParentFolderId?: ResourceIdType; - /** - * The time when the document was created. - */ - CreatedTimestamp?: TimestampType; - /** - * The time when the document was updated. - */ - ModifiedTimestamp?: TimestampType; - /** - * The latest version of the document. - */ - LatestVersionMetadata?: DocumentVersionMetadata; - /** - * The resource state. - */ - ResourceState?: ResourceStateType; - /** - * List of labels on the document. - */ - Labels?: Labels; - } - export type DocumentMetadataList = DocumentMetadata[]; - export type DocumentSourceType = "ORIGINAL"|"WITH_COMMENTS"|string; - export type DocumentSourceUrlMap = {[key: string]: UrlType}; - export type DocumentStatusType = "INITIALIZED"|"ACTIVE"|string; - export type DocumentThumbnailType = "SMALL"|"SMALL_HQ"|"LARGE"|string; - export type DocumentThumbnailUrlMap = {[key: string]: UrlType}; - export type DocumentVersionIdType = string; - export interface DocumentVersionMetadata { - /** - * The ID of the version. - */ - Id?: DocumentVersionIdType; - /** - * The name of the version. - */ - Name?: ResourceNameType; - /** - * The content type of the document. - */ - ContentType?: DocumentContentType; - /** - * The size of the document, in bytes. - */ - Size?: SizeType; - /** - * The signature of the document. - */ - Signature?: HashType; - /** - * The status of the document. - */ - Status?: DocumentStatusType; - /** - * The time stamp when the document was first uploaded. - */ - CreatedTimestamp?: TimestampType; - /** - * The time stamp when the document was last uploaded. - */ - ModifiedTimestamp?: TimestampType; - /** - * The time stamp when the content of the document was originally created. - */ - ContentCreatedTimestamp?: TimestampType; - /** - * The time stamp when the content of the document was modified. - */ - ContentModifiedTimestamp?: TimestampType; - /** - * The ID of the creator. - */ - CreatorId?: IdType; - /** - * The thumbnail of the document. - */ - Thumbnail?: DocumentThumbnailUrlMap; - /** - * The source of the document. - */ - Source?: DocumentSourceUrlMap; - } - export type DocumentVersionMetadataList = DocumentVersionMetadata[]; - export type DocumentVersionStatus = "ACTIVE"|string; - export type EmailAddressType = string; - export type EntityIdList = IdType[]; - export type ErrorMessageType = string; - export type FieldNamesType = string; - export type FolderContentType = "ALL"|"DOCUMENT"|"FOLDER"|string; - export interface FolderMetadata { - /** - * The ID of the folder. - */ - Id?: ResourceIdType; - /** - * The name of the folder. - */ - Name?: ResourceNameType; - /** - * The ID of the creator. - */ - CreatorId?: IdType; - /** - * The ID of the parent folder. - */ - ParentFolderId?: ResourceIdType; - /** - * The time when the folder was created. - */ - CreatedTimestamp?: TimestampType; - /** - * The time when the folder was updated. - */ - ModifiedTimestamp?: TimestampType; - /** - * The resource state of the folder. - */ - ResourceState?: ResourceStateType; - /** - * The unique identifier created from the subfolders and documents of the folder. - */ - Signature?: HashType; - /** - * List of labels on the folder. - */ - Labels?: Labels; - /** - * The size of the folder metadata. - */ - Size?: SizeType; - /** - * The size of the latest version of the folder metadata. - */ - LatestVersionSize?: SizeType; - } - export type FolderMetadataList = FolderMetadata[]; - export interface GetCurrentUserRequest { - /** - * Amazon WorkDocs authentication token. - */ - AuthenticationToken: AuthenticationHeaderType; - } - export interface GetCurrentUserResponse { - /** - * Metadata of the user. - */ - User?: User; - } - export interface GetDocumentPathRequest { - /** - * Amazon WorkDocs authentication token. This field should not be set when using administrative API actions, as in accessing the API using AWS credentials. - */ - AuthenticationToken?: AuthenticationHeaderType; - /** - * The ID of the document. - */ - DocumentId: IdType; - /** - * The maximum number of levels in the hierarchy to return. - */ - Limit?: LimitType; - /** - * A comma-separated list of values. Specify NAME to include the names of the parent folders. - */ - Fields?: FieldNamesType; - /** - * This value is not supported. - */ - Marker?: PageMarkerType; - } - export interface GetDocumentPathResponse { - /** - * The path information. - */ - Path?: ResourcePath; - } - export interface GetDocumentRequest { - /** - * Amazon WorkDocs authentication token. This field should not be set when using administrative API actions, as in accessing the API using AWS credentials. - */ - AuthenticationToken?: AuthenticationHeaderType; - /** - * The ID of the document. - */ - DocumentId: ResourceIdType; - /** - * Set this to TRUE to include custom metadata in the response. - */ - IncludeCustomMetadata?: BooleanType; - } - export interface GetDocumentResponse { - /** - * The metadata details of the document. - */ - Metadata?: DocumentMetadata; - /** - * The custom metadata on the document. - */ - CustomMetadata?: CustomMetadataMap; - } - export interface GetDocumentVersionRequest { - /** - * Amazon WorkDocs authentication token. This field should not be set when using administrative API actions, as in accessing the API using AWS credentials. - */ - AuthenticationToken?: AuthenticationHeaderType; - /** - * The ID of the document. - */ - DocumentId: ResourceIdType; - /** - * The version ID of the document. - */ - VersionId: DocumentVersionIdType; - /** - * A comma-separated list of values. Specify "SOURCE" to include a URL for the source document. - */ - Fields?: FieldNamesType; - /** - * Set this to TRUE to include custom metadata in the response. - */ - IncludeCustomMetadata?: BooleanType; - } - export interface GetDocumentVersionResponse { - /** - * The version metadata. - */ - Metadata?: DocumentVersionMetadata; - /** - * The custom metadata on the document version. - */ - CustomMetadata?: CustomMetadataMap; - } - export interface GetFolderPathRequest { - /** - * Amazon WorkDocs authentication token. This field should not be set when using administrative API actions, as in accessing the API using AWS credentials. - */ - AuthenticationToken?: AuthenticationHeaderType; - /** - * The ID of the folder. - */ - FolderId: IdType; - /** - * The maximum number of levels in the hierarchy to return. - */ - Limit?: LimitType; - /** - * A comma-separated list of values. Specify "NAME" to include the names of the parent folders. - */ - Fields?: FieldNamesType; - /** - * This value is not supported. - */ - Marker?: PageMarkerType; - } - export interface GetFolderPathResponse { - /** - * The path information. - */ - Path?: ResourcePath; - } - export interface GetFolderRequest { - /** - * Amazon WorkDocs authentication token. This field should not be set when using administrative API actions, as in accessing the API using AWS credentials. - */ - AuthenticationToken?: AuthenticationHeaderType; - /** - * The ID of the folder. - */ - FolderId: ResourceIdType; - /** - * Set to TRUE to include custom metadata in the response. - */ - IncludeCustomMetadata?: BooleanType; - } - export interface GetFolderResponse { - /** - * The metadata of the folder. - */ - Metadata?: FolderMetadata; - /** - * The custom metadata on the folder. - */ - CustomMetadata?: CustomMetadataMap; - } - export interface GroupMetadata { - /** - * The ID of the user group. - */ - Id?: IdType; - /** - * The name of the group. - */ - Name?: GroupNameType; - } - export type GroupMetadataList = GroupMetadata[]; - export type GroupNameType = string; - export type HashType = string; - export type HeaderNameType = string; - export type HeaderValueType = string; - export type IdType = string; - export interface InitiateDocumentVersionUploadRequest { - /** - * Amazon WorkDocs authentication token. This field should not be set when using administrative API actions, as in accessing the API using AWS credentials. - */ - AuthenticationToken?: AuthenticationHeaderType; - /** - * The ID of the document. - */ - Id?: ResourceIdType; - /** - * The name of the document. - */ - Name?: ResourceNameType; - /** - * The time stamp when the content of the document was originally created. - */ - ContentCreatedTimestamp?: TimestampType; - /** - * The time stamp when the content of the document was modified. - */ - ContentModifiedTimestamp?: TimestampType; - /** - * The content type of the document. - */ - ContentType?: DocumentContentType; - /** - * The size of the document, in bytes. - */ - DocumentSizeInBytes?: SizeType; - /** - * The ID of the parent folder. - */ - ParentFolderId: ResourceIdType; - } - export interface InitiateDocumentVersionUploadResponse { - /** - * The document metadata. - */ - Metadata?: DocumentMetadata; - /** - * The upload metadata. - */ - UploadMetadata?: UploadMetadata; - } - export type Label = string; - export type Labels = Label[]; - export type LimitType = number; - export type LocaleType = "en"|"fr"|"ko"|"de"|"es"|"ja"|"ru"|"zh_CN"|"zh_TW"|"pt_BR"|"default"|string; - export type MarkerType = string; - export type MessageType = string; - export type OrderType = "ASCENDING"|"DESCENDING"|string; - export type OrganizationUserList = User[]; - export type PageMarkerType = string; - export interface Participants { - /** - * The list of users. - */ - Users?: UserMetadataList; - /** - * The list of user groups. - */ - Groups?: GroupMetadataList; - } - export type PasswordType = string; - export interface PermissionInfo { - /** - * The role of the user. - */ - Role?: RoleType; - /** - * The type of permissions. - */ - Type?: RolePermissionType; - } - export type PermissionInfoList = PermissionInfo[]; - export type PositiveSizeType = number; - export interface Principal { - /** - * The ID of the resource. - */ - Id?: IdType; - /** - * The type of resource. - */ - Type?: PrincipalType; - /** - * The permission information for the resource. - */ - Roles?: PermissionInfoList; - } - export type PrincipalList = Principal[]; - export type PrincipalType = "USER"|"GROUP"|"INVITE"|"ANONYMOUS"|"ORGANIZATION"|string; - export interface RemoveAllResourcePermissionsRequest { - /** - * Amazon WorkDocs authentication token. This field should not be set when using administrative API actions, as in accessing the API using AWS credentials. - */ - AuthenticationToken?: AuthenticationHeaderType; - /** - * The ID of the resource. - */ - ResourceId: ResourceIdType; - } - export interface RemoveResourcePermissionRequest { - /** - * Amazon WorkDocs authentication token. This field should not be set when using administrative API actions, as in accessing the API using AWS credentials. - */ - AuthenticationToken?: AuthenticationHeaderType; - /** - * The ID of the resource. - */ - ResourceId: ResourceIdType; - /** - * The principal ID of the resource. - */ - PrincipalId: IdType; - /** - * The principal type of the resource. - */ - PrincipalType?: PrincipalType; - } - export type ResourceIdType = string; - export interface ResourceMetadata { - /** - * The type of resource. - */ - Type?: ResourceType; - /** - * The name of the resource. - */ - Name?: ResourceNameType; - /** - * The original name of the resource prior to a rename operation. - */ - OriginalName?: ResourceNameType; - /** - * The ID of the resource. - */ - Id?: ResourceIdType; - /** - * The version ID of the resource. This is an optional field and is filled for action on document version. - */ - VersionId?: DocumentVersionIdType; - /** - * The owner of the resource. - */ - Owner?: UserMetadata; - /** - * The parent ID of the resource before a rename operation. - */ - ParentId?: ResourceIdType; - } - export type ResourceNameType = string; - export interface ResourcePath { - /** - * The components of the resource path. - */ - Components?: ResourcePathComponentList; - } - export interface ResourcePathComponent { - /** - * The ID of the resource path. - */ - Id?: IdType; - /** - * The name of the resource path. - */ - Name?: ResourceNameType; - } - export type ResourcePathComponentList = ResourcePathComponent[]; - export type ResourceSortType = "DATE"|"NAME"|string; - export type ResourceStateType = "ACTIVE"|"RESTORING"|"RECYCLING"|"RECYCLED"|string; - export type ResourceType = "FOLDER"|"DOCUMENT"|string; - export type RolePermissionType = "DIRECT"|"INHERITED"|string; - export type RoleType = "VIEWER"|"CONTRIBUTOR"|"OWNER"|"COOWNER"|string; - export type SearchQueryType = string; - export interface SharePrincipal { - /** - * The ID of the recipient. - */ - Id: IdType; - /** - * The type of the recipient. - */ - Type: PrincipalType; - /** - * The role of the recipient. - */ - Role: RoleType; - } - export type SharePrincipalList = SharePrincipal[]; - export interface ShareResult { - /** - * The ID of the principal. - */ - PrincipalId?: IdType; - /** - * The role. - */ - Role?: RoleType; - /** - * The status. - */ - Status?: ShareStatusType; - /** - * The ID of the resource that was shared. - */ - ShareId?: ResourceIdType; - /** - * The status message. - */ - StatusMessage?: MessageType; - } - export type ShareResultsList = ShareResult[]; - export type ShareStatusType = "SUCCESS"|"FAILURE"|string; - export type SignedHeaderMap = {[key: string]: HeaderValueType}; - export type SizeType = number; - export interface StorageRuleType { - /** - * The amount of storage allocated, in bytes. - */ - StorageAllocatedInBytes?: PositiveSizeType; - /** - * The type of storage. - */ - StorageType?: StorageType; - } - export type StorageType = "UNLIMITED"|"QUOTA"|string; - export interface Subscription { - /** - * The ID of the subscription. - */ - SubscriptionId?: IdType; - /** - * The endpoint of the subscription. - */ - EndPoint?: SubscriptionEndPointType; - /** - * The protocol of the subscription. - */ - Protocol?: SubscriptionProtocolType; - } - export type SubscriptionEndPointType = string; - export type SubscriptionList = Subscription[]; - export type SubscriptionProtocolType = "HTTPS"|string; - export type SubscriptionType = "ALL"|string; - export type TimeZoneIdType = string; - export type TimestampType = Date; - export interface UpdateDocumentRequest { - /** - * Amazon WorkDocs authentication token. This field should not be set when using administrative API actions, as in accessing the API using AWS credentials. - */ - AuthenticationToken?: AuthenticationHeaderType; - /** - * The ID of the document. - */ - DocumentId: ResourceIdType; - /** - * The name of the document. - */ - Name?: ResourceNameType; - /** - * The ID of the parent folder. - */ - ParentFolderId?: ResourceIdType; - /** - * The resource state of the document. Note that only ACTIVE and RECYCLED are supported. - */ - ResourceState?: ResourceStateType; - } - export interface UpdateDocumentVersionRequest { - /** - * Amazon WorkDocs authentication token. This field should not be set when using administrative API actions, as in accessing the API using AWS credentials. - */ - AuthenticationToken?: AuthenticationHeaderType; - /** - * The ID of the document. - */ - DocumentId: ResourceIdType; - /** - * The version ID of the document. - */ - VersionId: DocumentVersionIdType; - /** - * The status of the version. - */ - VersionStatus?: DocumentVersionStatus; - } - export interface UpdateFolderRequest { - /** - * Amazon WorkDocs authentication token. This field should not be set when using administrative API actions, as in accessing the API using AWS credentials. - */ - AuthenticationToken?: AuthenticationHeaderType; - /** - * The ID of the folder. - */ - FolderId: ResourceIdType; - /** - * The name of the folder. - */ - Name?: ResourceNameType; - /** - * The ID of the parent folder. - */ - ParentFolderId?: ResourceIdType; - /** - * The resource state of the folder. Note that only ACTIVE and RECYCLED are accepted values from the API. - */ - ResourceState?: ResourceStateType; - } - export interface UpdateUserRequest { - /** - * Amazon WorkDocs authentication token. This field should not be set when using administrative API actions, as in accessing the API using AWS credentials. - */ - AuthenticationToken?: AuthenticationHeaderType; - /** - * The ID of the user. - */ - UserId: IdType; - /** - * The given name of the user. - */ - GivenName?: UserAttributeValueType; - /** - * The surname of the user. - */ - Surname?: UserAttributeValueType; - /** - * The type of the user. - */ - Type?: UserType; - /** - * The amount of storage for the user. - */ - StorageRule?: StorageRuleType; - /** - * The time zone ID of the user. - */ - TimeZoneId?: TimeZoneIdType; - /** - * The locale of the user. - */ - Locale?: LocaleType; - } - export interface UpdateUserResponse { - /** - * The user information. - */ - User?: User; - } - export interface UploadMetadata { - /** - * The URL of the upload. - */ - UploadUrl?: UrlType; - /** - * The signed headers. - */ - SignedHeaders?: SignedHeaderMap; - } - export type UrlType = string; - export interface User { - /** - * The ID of the user. - */ - Id?: IdType; - /** - * The login name of the user. - */ - Username?: UsernameType; - /** - * The email address of the user. - */ - EmailAddress?: EmailAddressType; - /** - * The given name of the user. - */ - GivenName?: UserAttributeValueType; - /** - * The surname of the user. - */ - Surname?: UserAttributeValueType; - /** - * The ID of the organization. - */ - OrganizationId?: IdType; - /** - * The ID of the root folder. - */ - RootFolderId?: ResourceIdType; - /** - * The ID of the recycle bin folder. - */ - RecycleBinFolderId?: ResourceIdType; - /** - * The status of the user. - */ - Status?: UserStatusType; - /** - * The type of user. - */ - Type?: UserType; - /** - * The time when the user was created. - */ - CreatedTimestamp?: TimestampType; - /** - * The time when the user was modified. - */ - ModifiedTimestamp?: TimestampType; - /** - * The time zone ID of the user. - */ - TimeZoneId?: TimeZoneIdType; - /** - * The locale of the user. - */ - Locale?: LocaleType; - /** - * The storage for the user. - */ - Storage?: UserStorageMetadata; - } - export type UserActivities = Activity[]; - export type UserAttributeValueType = string; - export type UserFilterType = "ALL"|"ACTIVE_PENDING"|string; - export type UserIdsType = string; - export interface UserMetadata { - /** - * The ID of the user. - */ - Id?: IdType; - /** - * The username of the user. - */ - Username?: UsernameType; - /** - * The given name of the user before a rename operation. - */ - GivenName?: UserAttributeValueType; - /** - * The surname of the user. - */ - Surname?: UserAttributeValueType; - /** - * The email address of the user. - */ - EmailAddress?: EmailAddressType; - } - export type UserMetadataList = UserMetadata[]; - export type UserSortType = "USER_NAME"|"FULL_NAME"|"STORAGE_LIMIT"|"USER_STATUS"|"STORAGE_USED"|string; - export type UserStatusType = "ACTIVE"|"INACTIVE"|"PENDING"|string; - export interface UserStorageMetadata { - /** - * The amount of storage utilized, in bytes. - */ - StorageUtilizedInBytes?: SizeType; - /** - * The storage for a user. - */ - StorageRule?: StorageRuleType; - } - export type UserType = "USER"|"ADMIN"|string; - export type UsernameType = string; - /** - * A string in YYYY-MM-DD format that represents the latest possible API version that can be used in this service. Specify 'latest' to use the latest possible version. - */ - export type apiVersion = "2016-05-01"|"latest"|string; - export interface ClientApiVersions { - /** - * A string in YYYY-MM-DD format that represents the latest possible API version that can be used in this service. Specify 'latest' to use the latest possible version. - */ - apiVersion?: apiVersion; - } - export type ClientConfiguration = ServiceConfigurationOptions & ClientApiVersions; - /** - * Contains interfaces for use with the WorkDocs client. - */ - export import Types = WorkDocs; -} -export = WorkDocs; diff --git a/workshops/monte-carlo-on-ec2-spot-fleet/src/web/node_modules/aws-sdk/clients/workdocs.js b/workshops/monte-carlo-on-ec2-spot-fleet/src/web/node_modules/aws-sdk/clients/workdocs.js deleted file mode 100644 index 4ac56f8a..00000000 --- a/workshops/monte-carlo-on-ec2-spot-fleet/src/web/node_modules/aws-sdk/clients/workdocs.js +++ /dev/null @@ -1,18 +0,0 @@ -require('../lib/node_loader'); -var AWS = require('../lib/core'); -var Service = AWS.Service; -var apiLoader = AWS.apiLoader; - -apiLoader.services['workdocs'] = {}; -AWS.WorkDocs = Service.defineService('workdocs', ['2016-05-01']); -Object.defineProperty(apiLoader.services['workdocs'], '2016-05-01', { - get: function get() { - var model = require('../apis/workdocs-2016-05-01.min.json'); - model.paginators = require('../apis/workdocs-2016-05-01.paginators.json').pagination; - return model; - }, - enumerable: true, - configurable: true -}); - -module.exports = AWS.WorkDocs; diff --git a/workshops/monte-carlo-on-ec2-spot-fleet/src/web/node_modules/aws-sdk/clients/workspaces.d.ts b/workshops/monte-carlo-on-ec2-spot-fleet/src/web/node_modules/aws-sdk/clients/workspaces.d.ts deleted file mode 100644 index 1e6b5879..00000000 --- a/workshops/monte-carlo-on-ec2-spot-fleet/src/web/node_modules/aws-sdk/clients/workspaces.d.ts +++ /dev/null @@ -1,716 +0,0 @@ -import {Request} from '../lib/request'; -import {Response} from '../lib/response'; -import {AWSError} from '../lib/error'; -import {Service} from '../lib/service'; -import {ServiceConfigurationOptions} from '../lib/service'; -import {ConfigBase as Config} from '../lib/config'; -interface Blob {} -declare class WorkSpaces extends Service { - /** - * Constructs a service object. This object has one method for each API operation. - */ - constructor(options?: WorkSpaces.Types.ClientConfiguration) - config: Config & WorkSpaces.Types.ClientConfiguration; - /** - * Creates tags for a WorkSpace. - */ - createTags(params: WorkSpaces.Types.CreateTagsRequest, callback?: (err: AWSError, data: WorkSpaces.Types.CreateTagsResult) => void): Request; - /** - * Creates tags for a WorkSpace. - */ - createTags(callback?: (err: AWSError, data: WorkSpaces.Types.CreateTagsResult) => void): Request; - /** - * Creates one or more WorkSpaces. This operation is asynchronous and returns before the WorkSpaces are created. - */ - createWorkspaces(params: WorkSpaces.Types.CreateWorkspacesRequest, callback?: (err: AWSError, data: WorkSpaces.Types.CreateWorkspacesResult) => void): Request; - /** - * Creates one or more WorkSpaces. This operation is asynchronous and returns before the WorkSpaces are created. - */ - createWorkspaces(callback?: (err: AWSError, data: WorkSpaces.Types.CreateWorkspacesResult) => void): Request; - /** - * Deletes tags from a WorkSpace. - */ - deleteTags(params: WorkSpaces.Types.DeleteTagsRequest, callback?: (err: AWSError, data: WorkSpaces.Types.DeleteTagsResult) => void): Request; - /** - * Deletes tags from a WorkSpace. - */ - deleteTags(callback?: (err: AWSError, data: WorkSpaces.Types.DeleteTagsResult) => void): Request; - /** - * Describes tags for a WorkSpace. - */ - describeTags(params: WorkSpaces.Types.DescribeTagsRequest, callback?: (err: AWSError, data: WorkSpaces.Types.DescribeTagsResult) => void): Request; - /** - * Describes tags for a WorkSpace. - */ - describeTags(callback?: (err: AWSError, data: WorkSpaces.Types.DescribeTagsResult) => void): Request; - /** - * Obtains information about the WorkSpace bundles that are available to your account in the specified region. You can filter the results with either the BundleIds parameter, or the Owner parameter, but not both. This operation supports pagination with the use of the NextToken request and response parameters. If more results are available, the NextToken response member contains a token that you pass in the next call to this operation to retrieve the next set of items. - */ - describeWorkspaceBundles(params: WorkSpaces.Types.DescribeWorkspaceBundlesRequest, callback?: (err: AWSError, data: WorkSpaces.Types.DescribeWorkspaceBundlesResult) => void): Request; - /** - * Obtains information about the WorkSpace bundles that are available to your account in the specified region. You can filter the results with either the BundleIds parameter, or the Owner parameter, but not both. This operation supports pagination with the use of the NextToken request and response parameters. If more results are available, the NextToken response member contains a token that you pass in the next call to this operation to retrieve the next set of items. - */ - describeWorkspaceBundles(callback?: (err: AWSError, data: WorkSpaces.Types.DescribeWorkspaceBundlesResult) => void): Request; - /** - * Retrieves information about the AWS Directory Service directories in the region that are registered with Amazon WorkSpaces and are available to your account. This operation supports pagination with the use of the NextToken request and response parameters. If more results are available, the NextToken response member contains a token that you pass in the next call to this operation to retrieve the next set of items. - */ - describeWorkspaceDirectories(params: WorkSpaces.Types.DescribeWorkspaceDirectoriesRequest, callback?: (err: AWSError, data: WorkSpaces.Types.DescribeWorkspaceDirectoriesResult) => void): Request; - /** - * Retrieves information about the AWS Directory Service directories in the region that are registered with Amazon WorkSpaces and are available to your account. This operation supports pagination with the use of the NextToken request and response parameters. If more results are available, the NextToken response member contains a token that you pass in the next call to this operation to retrieve the next set of items. - */ - describeWorkspaceDirectories(callback?: (err: AWSError, data: WorkSpaces.Types.DescribeWorkspaceDirectoriesResult) => void): Request; - /** - * Obtains information about the specified WorkSpaces. Only one of the filter parameters, such as BundleId, DirectoryId, or WorkspaceIds, can be specified at a time. This operation supports pagination with the use of the NextToken request and response parameters. If more results are available, the NextToken response member contains a token that you pass in the next call to this operation to retrieve the next set of items. - */ - describeWorkspaces(params: WorkSpaces.Types.DescribeWorkspacesRequest, callback?: (err: AWSError, data: WorkSpaces.Types.DescribeWorkspacesResult) => void): Request; - /** - * Obtains information about the specified WorkSpaces. Only one of the filter parameters, such as BundleId, DirectoryId, or WorkspaceIds, can be specified at a time. This operation supports pagination with the use of the NextToken request and response parameters. If more results are available, the NextToken response member contains a token that you pass in the next call to this operation to retrieve the next set of items. - */ - describeWorkspaces(callback?: (err: AWSError, data: WorkSpaces.Types.DescribeWorkspacesResult) => void): Request; - /** - * Describes the connection status of a specified WorkSpace. - */ - describeWorkspacesConnectionStatus(params: WorkSpaces.Types.DescribeWorkspacesConnectionStatusRequest, callback?: (err: AWSError, data: WorkSpaces.Types.DescribeWorkspacesConnectionStatusResult) => void): Request; - /** - * Describes the connection status of a specified WorkSpace. - */ - describeWorkspacesConnectionStatus(callback?: (err: AWSError, data: WorkSpaces.Types.DescribeWorkspacesConnectionStatusResult) => void): Request; - /** - * Modifies the WorkSpace properties, including the running mode and AutoStop time. - */ - modifyWorkspaceProperties(params: WorkSpaces.Types.ModifyWorkspacePropertiesRequest, callback?: (err: AWSError, data: WorkSpaces.Types.ModifyWorkspacePropertiesResult) => void): Request; - /** - * Modifies the WorkSpace properties, including the running mode and AutoStop time. - */ - modifyWorkspaceProperties(callback?: (err: AWSError, data: WorkSpaces.Types.ModifyWorkspacePropertiesResult) => void): Request; - /** - * Reboots the specified WorkSpaces. To be able to reboot a WorkSpace, the WorkSpace must have a State of AVAILABLE, IMPAIRED, or INOPERABLE. This operation is asynchronous and returns before the WorkSpaces have rebooted. - */ - rebootWorkspaces(params: WorkSpaces.Types.RebootWorkspacesRequest, callback?: (err: AWSError, data: WorkSpaces.Types.RebootWorkspacesResult) => void): Request; - /** - * Reboots the specified WorkSpaces. To be able to reboot a WorkSpace, the WorkSpace must have a State of AVAILABLE, IMPAIRED, or INOPERABLE. This operation is asynchronous and returns before the WorkSpaces have rebooted. - */ - rebootWorkspaces(callback?: (err: AWSError, data: WorkSpaces.Types.RebootWorkspacesResult) => void): Request; - /** - * Rebuilds the specified WorkSpaces. Rebuilding a WorkSpace is a potentially destructive action that can result in the loss of data. Rebuilding a WorkSpace causes the following to occur: The system is restored to the image of the bundle that the WorkSpace is created from. Any applications that have been installed, or system settings that have been made since the WorkSpace was created will be lost. The data drive (D drive) is re-created from the last automatic snapshot taken of the data drive. The current contents of the data drive are overwritten. Automatic snapshots of the data drive are taken every 12 hours, so the snapshot can be as much as 12 hours old. To be able to rebuild a WorkSpace, the WorkSpace must have a State of AVAILABLE or ERROR. This operation is asynchronous and returns before the WorkSpaces have been completely rebuilt. - */ - rebuildWorkspaces(params: WorkSpaces.Types.RebuildWorkspacesRequest, callback?: (err: AWSError, data: WorkSpaces.Types.RebuildWorkspacesResult) => void): Request; - /** - * Rebuilds the specified WorkSpaces. Rebuilding a WorkSpace is a potentially destructive action that can result in the loss of data. Rebuilding a WorkSpace causes the following to occur: The system is restored to the image of the bundle that the WorkSpace is created from. Any applications that have been installed, or system settings that have been made since the WorkSpace was created will be lost. The data drive (D drive) is re-created from the last automatic snapshot taken of the data drive. The current contents of the data drive are overwritten. Automatic snapshots of the data drive are taken every 12 hours, so the snapshot can be as much as 12 hours old. To be able to rebuild a WorkSpace, the WorkSpace must have a State of AVAILABLE or ERROR. This operation is asynchronous and returns before the WorkSpaces have been completely rebuilt. - */ - rebuildWorkspaces(callback?: (err: AWSError, data: WorkSpaces.Types.RebuildWorkspacesResult) => void): Request; - /** - * Starts the specified WorkSpaces. The WorkSpaces must have a running mode of AutoStop and a state of STOPPED. - */ - startWorkspaces(params: WorkSpaces.Types.StartWorkspacesRequest, callback?: (err: AWSError, data: WorkSpaces.Types.StartWorkspacesResult) => void): Request; - /** - * Starts the specified WorkSpaces. The WorkSpaces must have a running mode of AutoStop and a state of STOPPED. - */ - startWorkspaces(callback?: (err: AWSError, data: WorkSpaces.Types.StartWorkspacesResult) => void): Request; - /** - * Stops the specified WorkSpaces. The WorkSpaces must have a running mode of AutoStop and a state of AVAILABLE, IMPAIRED, UNHEALTHY, or ERROR. - */ - stopWorkspaces(params: WorkSpaces.Types.StopWorkspacesRequest, callback?: (err: AWSError, data: WorkSpaces.Types.StopWorkspacesResult) => void): Request; - /** - * Stops the specified WorkSpaces. The WorkSpaces must have a running mode of AutoStop and a state of AVAILABLE, IMPAIRED, UNHEALTHY, or ERROR. - */ - stopWorkspaces(callback?: (err: AWSError, data: WorkSpaces.Types.StopWorkspacesResult) => void): Request; - /** - * Terminates the specified WorkSpaces. Terminating a WorkSpace is a permanent action and cannot be undone. The user's data is not maintained and will be destroyed. If you need to archive any user data, contact Amazon Web Services before terminating the WorkSpace. You can terminate a WorkSpace that is in any state except SUSPENDED. This operation is asynchronous and returns before the WorkSpaces have been completely terminated. - */ - terminateWorkspaces(params: WorkSpaces.Types.TerminateWorkspacesRequest, callback?: (err: AWSError, data: WorkSpaces.Types.TerminateWorkspacesResult) => void): Request; - /** - * Terminates the specified WorkSpaces. Terminating a WorkSpace is a permanent action and cannot be undone. The user's data is not maintained and will be destroyed. If you need to archive any user data, contact Amazon Web Services before terminating the WorkSpace. You can terminate a WorkSpace that is in any state except SUSPENDED. This operation is asynchronous and returns before the WorkSpaces have been completely terminated. - */ - terminateWorkspaces(callback?: (err: AWSError, data: WorkSpaces.Types.TerminateWorkspacesResult) => void): Request; -} -declare namespace WorkSpaces { - export type ARN = string; - export type Alias = string; - export type BooleanObject = boolean; - export type BundleId = string; - export type BundleIdList = BundleId[]; - export type BundleList = WorkspaceBundle[]; - export type BundleOwner = string; - export type Compute = "VALUE"|"STANDARD"|"PERFORMANCE"|string; - export interface ComputeType { - /** - * The name of the compute type for the bundle. - */ - Name?: Compute; - } - export type ComputerName = string; - export type ConnectionState = "CONNECTED"|"DISCONNECTED"|"UNKNOWN"|string; - export interface CreateTagsRequest { - /** - * The resource ID of the request. - */ - ResourceId: NonEmptyString; - /** - * The tags of the request. - */ - Tags: TagList; - } - export interface CreateTagsResult { - } - export interface CreateWorkspacesRequest { - /** - * An array of structures that specify the WorkSpaces to create. - */ - Workspaces: WorkspaceRequestList; - } - export interface CreateWorkspacesResult { - /** - * An array of structures that represent the WorkSpaces that could not be created. - */ - FailedRequests?: FailedCreateWorkspaceRequests; - /** - * An array of structures that represent the WorkSpaces that were created. Because this operation is asynchronous, the identifier in WorkspaceId is not immediately available. If you immediately call DescribeWorkspaces with this identifier, no information will be returned. - */ - PendingRequests?: WorkspaceList; - } - export type DefaultOu = string; - export interface DefaultWorkspaceCreationProperties { - /** - * Specifies if the directory is enabled for Amazon WorkDocs. - */ - EnableWorkDocs?: BooleanObject; - /** - * A public IP address will be attached to all WorkSpaces that are created or rebuilt. - */ - EnableInternetAccess?: BooleanObject; - /** - * The organizational unit (OU) in the directory that the WorkSpace machine accounts are placed in. - */ - DefaultOu?: DefaultOu; - /** - * The identifier of any custom security groups that are applied to the WorkSpaces when they are created. - */ - CustomSecurityGroupId?: SecurityGroupId; - /** - * The WorkSpace user is an administrator on the WorkSpace. - */ - UserEnabledAsLocalAdministrator?: BooleanObject; - } - export interface DeleteTagsRequest { - /** - * The resource ID of the request. - */ - ResourceId: NonEmptyString; - /** - * The tag keys of the request. - */ - TagKeys: TagKeyList; - } - export interface DeleteTagsResult { - } - export interface DescribeTagsRequest { - /** - * The resource ID of the request. - */ - ResourceId: NonEmptyString; - } - export interface DescribeTagsResult { - /** - * The list of tags. - */ - TagList?: TagList; - } - export interface DescribeWorkspaceBundlesRequest { - /** - * An array of strings that contains the identifiers of the bundles to retrieve. This parameter cannot be combined with any other filter parameter. - */ - BundleIds?: BundleIdList; - /** - * The owner of the bundles to retrieve. This parameter cannot be combined with any other filter parameter. This contains one of the following values: null- Retrieves the bundles that belong to the account making the call. AMAZON- Retrieves the bundles that are provided by AWS. - */ - Owner?: BundleOwner; - /** - * The NextToken value from a previous call to this operation. Pass null if this is the first call. - */ - NextToken?: PaginationToken; - } - export interface DescribeWorkspaceBundlesResult { - /** - * An array of structures that contain information about the bundles. - */ - Bundles?: BundleList; - /** - * If not null, more results are available. Pass this value for the NextToken parameter in a subsequent call to this operation to retrieve the next set of items. This token is valid for one day and must be used within that time frame. - */ - NextToken?: PaginationToken; - } - export interface DescribeWorkspaceDirectoriesRequest { - /** - * An array of strings that contains the directory identifiers to retrieve information for. If this member is null, all directories are retrieved. - */ - DirectoryIds?: DirectoryIdList; - /** - * The NextToken value from a previous call to this operation. Pass null if this is the first call. - */ - NextToken?: PaginationToken; - } - export interface DescribeWorkspaceDirectoriesResult { - /** - * An array of structures that contain information about the directories. - */ - Directories?: DirectoryList; - /** - * If not null, more results are available. Pass this value for the NextToken parameter in a subsequent call to this operation to retrieve the next set of items. This token is valid for one day and must be used within that time frame. - */ - NextToken?: PaginationToken; - } - export interface DescribeWorkspacesConnectionStatusRequest { - /** - * An array of strings that contain the identifiers of the WorkSpaces. - */ - WorkspaceIds?: WorkspaceIdList; - /** - * The next token of the request. - */ - NextToken?: PaginationToken; - } - export interface DescribeWorkspacesConnectionStatusResult { - /** - * The connection status of the WorkSpace. - */ - WorkspacesConnectionStatus?: WorkspaceConnectionStatusList; - /** - * The next token of the result. - */ - NextToken?: PaginationToken; - } - export interface DescribeWorkspacesRequest { - /** - * An array of strings that contain the identifiers of the WorkSpaces for which to retrieve information. This parameter cannot be combined with any other filter parameter. Because the CreateWorkspaces operation is asynchronous, the identifier it returns is not immediately available. If you immediately call DescribeWorkspaces with this identifier, no information is returned. - */ - WorkspaceIds?: WorkspaceIdList; - /** - * Specifies the directory identifier to which to limit the WorkSpaces. Optionally, you can specify a specific directory user with the UserName parameter. This parameter cannot be combined with any other filter parameter. - */ - DirectoryId?: DirectoryId; - /** - * Used with the DirectoryId parameter to specify the directory user for whom to obtain the WorkSpace. - */ - UserName?: UserName; - /** - * The identifier of a bundle to obtain the WorkSpaces for. All WorkSpaces that are created from this bundle will be retrieved. This parameter cannot be combined with any other filter parameter. - */ - BundleId?: BundleId; - /** - * The maximum number of items to return. - */ - Limit?: Limit; - /** - * The NextToken value from a previous call to this operation. Pass null if this is the first call. - */ - NextToken?: PaginationToken; - } - export interface DescribeWorkspacesResult { - /** - * An array of structures that contain the information about the WorkSpaces. Because the CreateWorkspaces operation is asynchronous, some of this information may be incomplete for a newly-created WorkSpace. - */ - Workspaces?: WorkspaceList; - /** - * If not null, more results are available. Pass this value for the NextToken parameter in a subsequent call to this operation to retrieve the next set of items. This token is valid for one day and must be used within that time frame. - */ - NextToken?: PaginationToken; - } - export type Description = string; - export type DirectoryId = string; - export type DirectoryIdList = DirectoryId[]; - export type DirectoryList = WorkspaceDirectory[]; - export type DirectoryName = string; - export type DnsIpAddresses = IpAddress[]; - export type ErrorType = string; - export type ExceptionMessage = string; - export interface FailedCreateWorkspaceRequest { - /** - * A FailedCreateWorkspaceRequest$WorkspaceRequest object that contains the information about the WorkSpace that could not be created. - */ - WorkspaceRequest?: WorkspaceRequest; - /** - * The error code. - */ - ErrorCode?: ErrorType; - /** - * The textual error message. - */ - ErrorMessage?: Description; - } - export type FailedCreateWorkspaceRequests = FailedCreateWorkspaceRequest[]; - export type FailedRebootWorkspaceRequests = FailedWorkspaceChangeRequest[]; - export type FailedRebuildWorkspaceRequests = FailedWorkspaceChangeRequest[]; - export type FailedStartWorkspaceRequests = FailedWorkspaceChangeRequest[]; - export type FailedStopWorkspaceRequests = FailedWorkspaceChangeRequest[]; - export type FailedTerminateWorkspaceRequests = FailedWorkspaceChangeRequest[]; - export interface FailedWorkspaceChangeRequest { - /** - * The identifier of the WorkSpace. - */ - WorkspaceId?: WorkspaceId; - /** - * The error code. - */ - ErrorCode?: ErrorType; - /** - * The textual error message. - */ - ErrorMessage?: Description; - } - export type IpAddress = string; - export type Limit = number; - export interface ModifyWorkspacePropertiesRequest { - /** - * The ID of the WorkSpace. - */ - WorkspaceId: WorkspaceId; - /** - * The WorkSpace properties of the request. - */ - WorkspaceProperties: WorkspaceProperties; - } - export interface ModifyWorkspacePropertiesResult { - } - export type NonEmptyString = string; - export type PaginationToken = string; - export interface RebootRequest { - /** - * The identifier of the WorkSpace to reboot. - */ - WorkspaceId: WorkspaceId; - } - export type RebootWorkspaceRequests = RebootRequest[]; - export interface RebootWorkspacesRequest { - /** - * An array of structures that specify the WorkSpaces to reboot. - */ - RebootWorkspaceRequests: RebootWorkspaceRequests; - } - export interface RebootWorkspacesResult { - /** - * An array of structures representing any WorkSpaces that could not be rebooted. - */ - FailedRequests?: FailedRebootWorkspaceRequests; - } - export interface RebuildRequest { - /** - * The identifier of the WorkSpace to rebuild. - */ - WorkspaceId: WorkspaceId; - } - export type RebuildWorkspaceRequests = RebuildRequest[]; - export interface RebuildWorkspacesRequest { - /** - * An array of structures that specify the WorkSpaces to rebuild. - */ - RebuildWorkspaceRequests: RebuildWorkspaceRequests; - } - export interface RebuildWorkspacesResult { - /** - * An array of structures representing any WorkSpaces that could not be rebuilt. - */ - FailedRequests?: FailedRebuildWorkspaceRequests; - } - export type RegistrationCode = string; - export type RunningMode = "AUTO_STOP"|"ALWAYS_ON"|string; - export type RunningModeAutoStopTimeoutInMinutes = number; - export type SecurityGroupId = string; - export interface StartRequest { - /** - * The ID of the WorkSpace. - */ - WorkspaceId?: WorkspaceId; - } - export type StartWorkspaceRequests = StartRequest[]; - export interface StartWorkspacesRequest { - /** - * The requests. - */ - StartWorkspaceRequests: StartWorkspaceRequests; - } - export interface StartWorkspacesResult { - /** - * The failed requests. - */ - FailedRequests?: FailedStartWorkspaceRequests; - } - export interface StopRequest { - /** - * The ID of the WorkSpace. - */ - WorkspaceId?: WorkspaceId; - } - export type StopWorkspaceRequests = StopRequest[]; - export interface StopWorkspacesRequest { - /** - * The requests. - */ - StopWorkspaceRequests: StopWorkspaceRequests; - } - export interface StopWorkspacesResult { - /** - * The failed requests. - */ - FailedRequests?: FailedStopWorkspaceRequests; - } - export type SubnetId = string; - export type SubnetIds = SubnetId[]; - export interface Tag { - /** - * The key of the tag. - */ - Key: TagKey; - /** - * The value of the tag. - */ - Value?: TagValue; - } - export type TagKey = string; - export type TagKeyList = NonEmptyString[]; - export type TagList = Tag[]; - export type TagValue = string; - export interface TerminateRequest { - /** - * The identifier of the WorkSpace to terminate. - */ - WorkspaceId: WorkspaceId; - } - export type TerminateWorkspaceRequests = TerminateRequest[]; - export interface TerminateWorkspacesRequest { - /** - * An array of structures that specify the WorkSpaces to terminate. - */ - TerminateWorkspaceRequests: TerminateWorkspaceRequests; - } - export interface TerminateWorkspacesResult { - /** - * An array of structures representing any WorkSpaces that could not be terminated. - */ - FailedRequests?: FailedTerminateWorkspaceRequests; - } - export type Timestamp = Date; - export type UserName = string; - export interface UserStorage { - /** - * The amount of user storage for the bundle. - */ - Capacity?: NonEmptyString; - } - export type VolumeEncryptionKey = string; - export interface Workspace { - /** - * The identifier of the WorkSpace. - */ - WorkspaceId?: WorkspaceId; - /** - * The identifier of the AWS Directory Service directory that the WorkSpace belongs to. - */ - DirectoryId?: DirectoryId; - /** - * The user that the WorkSpace is assigned to. - */ - UserName?: UserName; - /** - * The IP address of the WorkSpace. - */ - IpAddress?: IpAddress; - /** - * The operational state of the WorkSpace. - */ - State?: WorkspaceState; - /** - * The identifier of the bundle that the WorkSpace was created from. - */ - BundleId?: BundleId; - /** - * The identifier of the subnet that the WorkSpace is in. - */ - SubnetId?: SubnetId; - /** - * If the WorkSpace could not be created, this contains a textual error message that describes the failure. - */ - ErrorMessage?: Description; - /** - * If the WorkSpace could not be created, this contains the error code. - */ - ErrorCode?: WorkspaceErrorCode; - /** - * The name of the WorkSpace as seen by the operating system. - */ - ComputerName?: ComputerName; - /** - * The KMS key used to encrypt data stored on your WorkSpace. - */ - VolumeEncryptionKey?: VolumeEncryptionKey; - /** - * Specifies whether the data stored on the user volume, or D: drive, is encrypted. - */ - UserVolumeEncryptionEnabled?: BooleanObject; - /** - * Specifies whether the data stored on the root volume, or C: drive, is encrypted. - */ - RootVolumeEncryptionEnabled?: BooleanObject; - WorkspaceProperties?: WorkspaceProperties; - } - export interface WorkspaceBundle { - /** - * The bundle identifier. - */ - BundleId?: BundleId; - /** - * The name of the bundle. - */ - Name?: NonEmptyString; - /** - * The owner of the bundle. This contains the owner's account identifier, or AMAZON if the bundle is provided by AWS. - */ - Owner?: BundleOwner; - /** - * The bundle description. - */ - Description?: Description; - /** - * A UserStorage object that specifies the amount of user storage that the bundle contains. - */ - UserStorage?: UserStorage; - /** - * A ComputeType object that specifies the compute type for the bundle. - */ - ComputeType?: ComputeType; - } - export interface WorkspaceConnectionStatus { - /** - * The ID of the WorkSpace. - */ - WorkspaceId?: WorkspaceId; - /** - * The connection state of the WorkSpace. Returns UNKOWN if the WorkSpace is in a Stopped state. - */ - ConnectionState?: ConnectionState; - /** - * The timestamp of the connection state check. - */ - ConnectionStateCheckTimestamp?: Timestamp; - /** - * The timestamp of the last known user connection. - */ - LastKnownUserConnectionTimestamp?: Timestamp; - } - export type WorkspaceConnectionStatusList = WorkspaceConnectionStatus[]; - export interface WorkspaceDirectory { - /** - * The directory identifier. - */ - DirectoryId?: DirectoryId; - /** - * The directory alias. - */ - Alias?: Alias; - /** - * The name of the directory. - */ - DirectoryName?: DirectoryName; - /** - * The registration code for the directory. This is the code that users enter in their Amazon WorkSpaces client application to connect to the directory. - */ - RegistrationCode?: RegistrationCode; - /** - * An array of strings that contains the identifiers of the subnets used with the directory. - */ - SubnetIds?: SubnetIds; - /** - * An array of strings that contains the IP addresses of the DNS servers for the directory. - */ - DnsIpAddresses?: DnsIpAddresses; - /** - * The user name for the service account. - */ - CustomerUserName?: UserName; - /** - * The identifier of the IAM role. This is the role that allows Amazon WorkSpaces to make calls to other services, such as Amazon EC2, on your behalf. - */ - IamRoleId?: ARN; - /** - * The directory type. - */ - DirectoryType?: WorkspaceDirectoryType; - /** - * The identifier of the security group that is assigned to new WorkSpaces. - */ - WorkspaceSecurityGroupId?: SecurityGroupId; - /** - * The state of the directory's registration with Amazon WorkSpaces - */ - State?: WorkspaceDirectoryState; - /** - * A structure that specifies the default creation properties for all WorkSpaces in the directory. - */ - WorkspaceCreationProperties?: DefaultWorkspaceCreationProperties; - } - export type WorkspaceDirectoryState = "REGISTERING"|"REGISTERED"|"DEREGISTERING"|"DEREGISTERED"|"ERROR"|string; - export type WorkspaceDirectoryType = "SIMPLE_AD"|"AD_CONNECTOR"|string; - export type WorkspaceErrorCode = string; - export type WorkspaceId = string; - export type WorkspaceIdList = WorkspaceId[]; - export type WorkspaceList = Workspace[]; - export interface WorkspaceProperties { - /** - * The running mode of the WorkSpace. AlwaysOn WorkSpaces are billed monthly. AutoStop WorkSpaces are billed by the hour and stopped when no longer being used in order to save on costs. - */ - RunningMode?: RunningMode; - /** - * The time after a user logs off when WorkSpaces are automatically stopped. Configured in 60 minute intervals. - */ - RunningModeAutoStopTimeoutInMinutes?: RunningModeAutoStopTimeoutInMinutes; - } - export interface WorkspaceRequest { - /** - * The identifier of the AWS Directory Service directory to create the WorkSpace in. You can use the DescribeWorkspaceDirectories operation to obtain a list of the directories that are available. - */ - DirectoryId: DirectoryId; - /** - * The username that the WorkSpace is assigned to. This username must exist in the AWS Directory Service directory specified by the DirectoryId member. - */ - UserName: UserName; - /** - * The identifier of the bundle to create the WorkSpace from. You can use the DescribeWorkspaceBundles operation to obtain a list of the bundles that are available. - */ - BundleId: BundleId; - /** - * The KMS key used to encrypt data stored on your WorkSpace. - */ - VolumeEncryptionKey?: VolumeEncryptionKey; - /** - * Specifies whether the data stored on the user volume, or D: drive, is encrypted. - */ - UserVolumeEncryptionEnabled?: BooleanObject; - /** - * Specifies whether the data stored on the root volume, or C: drive, is encrypted. - */ - RootVolumeEncryptionEnabled?: BooleanObject; - WorkspaceProperties?: WorkspaceProperties; - /** - * The tags of the WorkSpace request. - */ - Tags?: TagList; - } - export type WorkspaceRequestList = WorkspaceRequest[]; - export type WorkspaceState = "PENDING"|"AVAILABLE"|"IMPAIRED"|"UNHEALTHY"|"REBOOTING"|"STARTING"|"REBUILDING"|"MAINTENANCE"|"TERMINATING"|"TERMINATED"|"SUSPENDED"|"STOPPING"|"STOPPED"|"ERROR"|string; - /** - * A string in YYYY-MM-DD format that represents the latest possible API version that can be used in this service. Specify 'latest' to use the latest possible version. - */ - export type apiVersion = "2015-04-08"|"latest"|string; - export interface ClientApiVersions { - /** - * A string in YYYY-MM-DD format that represents the latest possible API version that can be used in this service. Specify 'latest' to use the latest possible version. - */ - apiVersion?: apiVersion; - } - export type ClientConfiguration = ServiceConfigurationOptions & ClientApiVersions; - /** - * Contains interfaces for use with the WorkSpaces client. - */ - export import Types = WorkSpaces; -} -export = WorkSpaces; diff --git a/workshops/monte-carlo-on-ec2-spot-fleet/src/web/node_modules/aws-sdk/clients/workspaces.js b/workshops/monte-carlo-on-ec2-spot-fleet/src/web/node_modules/aws-sdk/clients/workspaces.js deleted file mode 100644 index 0a5ef899..00000000 --- a/workshops/monte-carlo-on-ec2-spot-fleet/src/web/node_modules/aws-sdk/clients/workspaces.js +++ /dev/null @@ -1,18 +0,0 @@ -require('../lib/node_loader'); -var AWS = require('../lib/core'); -var Service = AWS.Service; -var apiLoader = AWS.apiLoader; - -apiLoader.services['workspaces'] = {}; -AWS.WorkSpaces = Service.defineService('workspaces', ['2015-04-08']); -Object.defineProperty(apiLoader.services['workspaces'], '2015-04-08', { - get: function get() { - var model = require('../apis/workspaces-2015-04-08.min.json'); - model.paginators = require('../apis/workspaces-2015-04-08.paginators.json').pagination; - return model; - }, - enumerable: true, - configurable: true -}); - -module.exports = AWS.WorkSpaces; diff --git a/workshops/monte-carlo-on-ec2-spot-fleet/src/web/node_modules/aws-sdk/clients/xray.d.ts b/workshops/monte-carlo-on-ec2-spot-fleet/src/web/node_modules/aws-sdk/clients/xray.d.ts deleted file mode 100644 index 58ce4b96..00000000 --- a/workshops/monte-carlo-on-ec2-spot-fleet/src/web/node_modules/aws-sdk/clients/xray.d.ts +++ /dev/null @@ -1,642 +0,0 @@ -import {Request} from '../lib/request'; -import {Response} from '../lib/response'; -import {AWSError} from '../lib/error'; -import {Service} from '../lib/service'; -import {ServiceConfigurationOptions} from '../lib/service'; -import {ConfigBase as Config} from '../lib/config'; -interface Blob {} -declare class XRay extends Service { - /** - * Constructs a service object. This object has one method for each API operation. - */ - constructor(options?: XRay.Types.ClientConfiguration) - config: Config & XRay.Types.ClientConfiguration; - /** - * Retrieves a list of traces specified by ID. Each trace is a collection of segment documents that originates from a single request. Use GetTraceSummaries to get a list of trace IDs. - */ - batchGetTraces(params: XRay.Types.BatchGetTracesRequest, callback?: (err: AWSError, data: XRay.Types.BatchGetTracesResult) => void): Request; - /** - * Retrieves a list of traces specified by ID. Each trace is a collection of segment documents that originates from a single request. Use GetTraceSummaries to get a list of trace IDs. - */ - batchGetTraces(callback?: (err: AWSError, data: XRay.Types.BatchGetTracesResult) => void): Request; - /** - * Retrieves a document that describes services that process incoming requests, and downstream services that they call as a result. Root services process incoming requests and make calls to downstream services. Root services are applications that use the AWS X-Ray SDK. Downstream services can be other applications, AWS resources, HTTP web APIs, or SQL databases. - */ - getServiceGraph(params: XRay.Types.GetServiceGraphRequest, callback?: (err: AWSError, data: XRay.Types.GetServiceGraphResult) => void): Request; - /** - * Retrieves a document that describes services that process incoming requests, and downstream services that they call as a result. Root services process incoming requests and make calls to downstream services. Root services are applications that use the AWS X-Ray SDK. Downstream services can be other applications, AWS resources, HTTP web APIs, or SQL databases. - */ - getServiceGraph(callback?: (err: AWSError, data: XRay.Types.GetServiceGraphResult) => void): Request; - /** - * Retrieves a service graph for one or more specific trace IDs. - */ - getTraceGraph(params: XRay.Types.GetTraceGraphRequest, callback?: (err: AWSError, data: XRay.Types.GetTraceGraphResult) => void): Request; - /** - * Retrieves a service graph for one or more specific trace IDs. - */ - getTraceGraph(callback?: (err: AWSError, data: XRay.Types.GetTraceGraphResult) => void): Request; - /** - * Retrieves IDs and metadata for traces available for a specified time frame using an optional filter. To get the full traces, pass the trace IDs to BatchGetTraces. A filter expression can target traced requests that hit specific service nodes or edges, have errors, or come from a known user. For example, the following filter expression targets traces that pass through api.example.com: service("api.example.com") This filter expression finds traces that have an annotation named account with the value 12345: annotation.account = "12345" For a full list of indexed fields and keywords that you can use in filter expressions, see Using Filter Expressions in the AWS X-Ray Developer Guide. - */ - getTraceSummaries(params: XRay.Types.GetTraceSummariesRequest, callback?: (err: AWSError, data: XRay.Types.GetTraceSummariesResult) => void): Request; - /** - * Retrieves IDs and metadata for traces available for a specified time frame using an optional filter. To get the full traces, pass the trace IDs to BatchGetTraces. A filter expression can target traced requests that hit specific service nodes or edges, have errors, or come from a known user. For example, the following filter expression targets traces that pass through api.example.com: service("api.example.com") This filter expression finds traces that have an annotation named account with the value 12345: annotation.account = "12345" For a full list of indexed fields and keywords that you can use in filter expressions, see Using Filter Expressions in the AWS X-Ray Developer Guide. - */ - getTraceSummaries(callback?: (err: AWSError, data: XRay.Types.GetTraceSummariesResult) => void): Request; - /** - * Used by the AWS X-Ray daemon to upload telemetry. - */ - putTelemetryRecords(params: XRay.Types.PutTelemetryRecordsRequest, callback?: (err: AWSError, data: XRay.Types.PutTelemetryRecordsResult) => void): Request; - /** - * Used by the AWS X-Ray daemon to upload telemetry. - */ - putTelemetryRecords(callback?: (err: AWSError, data: XRay.Types.PutTelemetryRecordsResult) => void): Request; - /** - * Uploads segment documents to AWS X-Ray. The X-Ray SDK generates segment documents and sends them to the X-Ray daemon, which uploads them in batches. A segment document can be a completed segment, an in-progress segment, or an array of subsegments. Segments must include the following fields. For the full segment document schema, see AWS X-Ray Segment Documents in the AWS X-Ray Developer Guide. Required Segment Document Fields name - The name of the service that handled the request. id - A 64-bit identifier for the segment, unique among segments in the same trace, in 16 hexadecimal digits. trace_id - A unique identifier that connects all segments and subsegments originating from a single client request. start_time - Time the segment or subsegment was created, in floating point seconds in epoch time, accurate to milliseconds. For example, 1480615200.010 or 1.480615200010E9. end_time - Time the segment or subsegment was closed. For example, 1480615200.090 or 1.480615200090E9. Specify either an end_time or in_progress. in_progress - Set to true instead of specifying an end_time to record that a segment has been started, but is not complete. Send an in progress segment when your application receives a request that will take a long time to serve, to trace the fact that the request was received. When the response is sent, send the complete segment to overwrite the in-progress segment. A trace_id consists of three numbers separated by hyphens. For example, 1-58406520-a006649127e371903a2de979. This includes: Trace ID Format The version number, i.e. 1. The time of the original request, in Unix epoch time, in 8 hexadecimal digits. For example, 10:00AM December 2nd, 2016 PST in epoch time is 1480615200 seconds, or 58406520 in hexadecimal. A 96-bit identifier for the trace, globally unique, in 24 hexadecimal digits. - */ - putTraceSegments(params: XRay.Types.PutTraceSegmentsRequest, callback?: (err: AWSError, data: XRay.Types.PutTraceSegmentsResult) => void): Request; - /** - * Uploads segment documents to AWS X-Ray. The X-Ray SDK generates segment documents and sends them to the X-Ray daemon, which uploads them in batches. A segment document can be a completed segment, an in-progress segment, or an array of subsegments. Segments must include the following fields. For the full segment document schema, see AWS X-Ray Segment Documents in the AWS X-Ray Developer Guide. Required Segment Document Fields name - The name of the service that handled the request. id - A 64-bit identifier for the segment, unique among segments in the same trace, in 16 hexadecimal digits. trace_id - A unique identifier that connects all segments and subsegments originating from a single client request. start_time - Time the segment or subsegment was created, in floating point seconds in epoch time, accurate to milliseconds. For example, 1480615200.010 or 1.480615200010E9. end_time - Time the segment or subsegment was closed. For example, 1480615200.090 or 1.480615200090E9. Specify either an end_time or in_progress. in_progress - Set to true instead of specifying an end_time to record that a segment has been started, but is not complete. Send an in progress segment when your application receives a request that will take a long time to serve, to trace the fact that the request was received. When the response is sent, send the complete segment to overwrite the in-progress segment. A trace_id consists of three numbers separated by hyphens. For example, 1-58406520-a006649127e371903a2de979. This includes: Trace ID Format The version number, i.e. 1. The time of the original request, in Unix epoch time, in 8 hexadecimal digits. For example, 10:00AM December 2nd, 2016 PST in epoch time is 1480615200 seconds, or 58406520 in hexadecimal. A 96-bit identifier for the trace, globally unique, in 24 hexadecimal digits. - */ - putTraceSegments(callback?: (err: AWSError, data: XRay.Types.PutTraceSegmentsResult) => void): Request; -} -declare namespace XRay { - export interface Alias { - /** - * The canonical name of the alias. - */ - Name?: String; - /** - * A list of names for the alias, including the canonical name. - */ - Names?: AliasNames; - /** - * The type of the alias. - */ - Type?: String; - } - export type AliasList = Alias[]; - export type AliasNames = String[]; - export type AnnotationKey = string; - export interface AnnotationValue { - /** - * Value for a Number annotation. - */ - NumberValue?: NullableDouble; - /** - * Value for a Boolean annotation. - */ - BooleanValue?: NullableBoolean; - /** - * Value for a String annotation. - */ - StringValue?: String; - } - export type Annotations = {[key: string]: ValuesWithServiceIds}; - export interface BackendConnectionErrors { - /** - * - */ - TimeoutCount?: NullableInteger; - /** - * - */ - ConnectionRefusedCount?: NullableInteger; - /** - * - */ - HTTPCode4XXCount?: NullableInteger; - /** - * - */ - HTTPCode5XXCount?: NullableInteger; - /** - * - */ - UnknownHostCount?: NullableInteger; - /** - * - */ - OtherCount?: NullableInteger; - } - export interface BatchGetTracesRequest { - /** - * Specify the trace IDs of requests for which to retrieve segments. - */ - TraceIds: TraceIdList; - /** - * Pagination token. Not used. - */ - NextToken?: String; - } - export interface BatchGetTracesResult { - /** - * Full traces for the specified requests. - */ - Traces?: TraceList; - /** - * Trace IDs of requests that haven't been processed. - */ - UnprocessedTraceIds?: UnprocessedTraceIdList; - /** - * Pagination token. Not used. - */ - NextToken?: String; - } - export type Double = number; - export interface Edge { - /** - * Identifier of the edge. Unique within a service map. - */ - ReferenceId?: NullableInteger; - /** - * The start time of the first segment on the edge. - */ - StartTime?: Timestamp; - /** - * The end time of the last segment on the edge. - */ - EndTime?: Timestamp; - /** - * Response statistics for segments on the edge. - */ - SummaryStatistics?: EdgeStatistics; - /** - * A histogram that maps the spread of client response times on an edge. - */ - ResponseTimeHistogram?: Histogram; - /** - * Aliases for the edge. - */ - Aliases?: AliasList; - } - export type EdgeList = Edge[]; - export interface EdgeStatistics { - /** - * The number of requests that completed with a 2xx Success status code. - */ - OkCount?: NullableLong; - /** - * Information about requests that failed with a 4xx Client Error status code. - */ - ErrorStatistics?: ErrorStatistics; - /** - * Information about requests that failed with a 5xx Server Error status code. - */ - FaultStatistics?: FaultStatistics; - /** - * The total number of completed requests. - */ - TotalCount?: NullableLong; - /** - * The aggregate response time of completed requests. - */ - TotalResponseTime?: NullableDouble; - } - export interface ErrorStatistics { - /** - * The number of requests that failed with a 419 throttling status code. - */ - ThrottleCount?: NullableLong; - /** - * The number of requests that failed with untracked 4xx Client Error status codes. - */ - OtherCount?: NullableLong; - /** - * The total number of requests that failed with a 4xx Client Error status code. - */ - TotalCount?: NullableLong; - } - export interface FaultStatistics { - /** - * The number of requests that failed with untracked 5xx Server Error status codes. - */ - OtherCount?: NullableLong; - /** - * The total number of requests that failed with a 5xx Server Error status code. - */ - TotalCount?: NullableLong; - } - export type FilterExpression = string; - export interface GetServiceGraphRequest { - /** - * The start of the time frame for which to generate a graph. - */ - StartTime: Timestamp; - /** - * The end of the time frame for which to generate a graph. - */ - EndTime: Timestamp; - /** - * Pagination token. Not used. - */ - NextToken?: String; - } - export interface GetServiceGraphResult { - /** - * The start of the time frame for which the graph was generated. - */ - StartTime?: Timestamp; - /** - * The end of the time frame for which the graph was generated. - */ - EndTime?: Timestamp; - /** - * The services that have processed a traced request during the specified time frame. - */ - Services?: ServiceList; - /** - * Pagination token. Not used. - */ - NextToken?: String; - } - export interface GetTraceGraphRequest { - /** - * Trace IDs of requests for which to generate a service graph. - */ - TraceIds: TraceIdList; - /** - * Pagination token. Not used. - */ - NextToken?: String; - } - export interface GetTraceGraphResult { - /** - * The services that have processed one of the specified requests. - */ - Services?: ServiceList; - /** - * Pagination token. Not used. - */ - NextToken?: String; - } - export interface GetTraceSummariesRequest { - /** - * The start of the time frame for which to retrieve traces. - */ - StartTime: Timestamp; - /** - * The end of the time frame for which to retrieve traces. - */ - EndTime: Timestamp; - /** - * Set to true to get summaries for only a subset of available traces. - */ - Sampling?: NullableBoolean; - /** - * Specify a filter expression to retrieve trace summaries for services or requests that meet certain requirements. - */ - FilterExpression?: FilterExpression; - /** - * Specify the pagination token returned by a previous request to retrieve the next page of results. - */ - NextToken?: String; - } - export interface GetTraceSummariesResult { - /** - * Trace IDs and metadata for traces that were found in the specified time frame. - */ - TraceSummaries?: TraceSummaryList; - /** - * The start time of this page of results. - */ - ApproximateTime?: Timestamp; - /** - * The number of traces that were processed to get this set of summaries. - */ - TracesProcessedCount?: NullableLong; - /** - * If the requested time frame contained more than one page of results, you can use this token to retrieve the next page. The first page contains the most most recent results, closest to the end of the time frame. - */ - NextToken?: String; - } - export type Histogram = HistogramEntry[]; - export interface HistogramEntry { - /** - * The value of the entry. - */ - Value?: Double; - /** - * The prevalence of the entry. - */ - Count?: Integer; - } - export interface Http { - /** - * The request URL. - */ - HttpURL?: String; - /** - * The response status. - */ - HttpStatus?: NullableInteger; - /** - * The request method. - */ - HttpMethod?: String; - /** - * The request's user agent string. - */ - UserAgent?: String; - /** - * The IP address of the requestor. - */ - ClientIp?: String; - } - export type Integer = number; - export type NullableBoolean = boolean; - export type NullableDouble = number; - export type NullableInteger = number; - export type NullableLong = number; - export interface PutTelemetryRecordsRequest { - /** - * - */ - TelemetryRecords: TelemetryRecordList; - /** - * - */ - EC2InstanceId?: String; - /** - * - */ - Hostname?: String; - /** - * - */ - ResourceARN?: String; - } - export interface PutTelemetryRecordsResult { - } - export interface PutTraceSegmentsRequest { - /** - * A string containing a JSON document defining one or more segments or subsegments. - */ - TraceSegmentDocuments: TraceSegmentDocumentList; - } - export interface PutTraceSegmentsResult { - /** - * Segments that failed processing. - */ - UnprocessedTraceSegments?: UnprocessedTraceSegmentList; - } - export interface Segment { - /** - * The segment's ID. - */ - Id?: SegmentId; - /** - * The segment document - */ - Document?: SegmentDocument; - } - export type SegmentDocument = string; - export type SegmentId = string; - export type SegmentList = Segment[]; - export interface Service { - /** - * Identifier for the service. Unique within the service map. - */ - ReferenceId?: NullableInteger; - /** - * The canonical name of the service. - */ - Name?: String; - /** - * A list of names for the service, including the canonical name. - */ - Names?: ServiceNames; - /** - * Indicates that the service was the first service to process a request. - */ - Root?: NullableBoolean; - /** - * Identifier of the AWS account in which the service runs. - */ - AccountId?: String; - /** - * The type of service. AWS Resource - The type of an AWS resource. For example, AWS::EC2::Instance for a application running on Amazon EC2 or AWS::DynamoDB::Table for an Amazon DynamoDB table that the application used. AWS Service - The type of an AWS service. For example, AWS::DynamoDB for downstream calls to Amazon DynamoDB that didn't target a specific table. client - Represents the clients that sent requests to a root service. remote - A downstream service of indeterminate type. - */ - Type?: String; - /** - * The service's state. - */ - State?: String; - /** - * The start time of the first segment that the service generated. - */ - StartTime?: Timestamp; - /** - * The end time of the last segment that the service generated. - */ - EndTime?: Timestamp; - /** - * Connections to downstream services. - */ - Edges?: EdgeList; - /** - * Aggregated statistics for the service. - */ - SummaryStatistics?: ServiceStatistics; - /** - * A histogram that maps the spread of service durations. - */ - DurationHistogram?: Histogram; - /** - * A histogram that maps the spread of service response times. - */ - ResponseTimeHistogram?: Histogram; - } - export interface ServiceId { - /** - * - */ - Name?: String; - /** - * - */ - Names?: ServiceNames; - /** - * - */ - AccountId?: String; - /** - * - */ - Type?: String; - } - export type ServiceIds = ServiceId[]; - export type ServiceList = Service[]; - export type ServiceNames = String[]; - export interface ServiceStatistics { - /** - * The number of requests that completed with a 2xx Success status code. - */ - OkCount?: NullableLong; - /** - * Information about requests that failed with a 4xx Client Error status code. - */ - ErrorStatistics?: ErrorStatistics; - /** - * Information about requests that failed with a 5xx Server Error status code. - */ - FaultStatistics?: FaultStatistics; - /** - * The total number of completed requests. - */ - TotalCount?: NullableLong; - /** - * The aggregate response time of completed requests. - */ - TotalResponseTime?: NullableDouble; - } - export type String = string; - export interface TelemetryRecord { - /** - * - */ - Timestamp?: Timestamp; - /** - * - */ - SegmentsReceivedCount?: NullableInteger; - /** - * - */ - SegmentsSentCount?: NullableInteger; - /** - * - */ - SegmentsSpilloverCount?: NullableInteger; - /** - * - */ - SegmentsRejectedCount?: NullableInteger; - /** - * - */ - BackendConnectionErrors?: BackendConnectionErrors; - } - export type TelemetryRecordList = TelemetryRecord[]; - export type Timestamp = Date; - export interface Trace { - /** - * The unique identifier for the request that generated the trace's segments and subsegments. - */ - Id?: TraceId; - /** - * The length of time in seconds between the start time of the root segment and the end time of the last segment that completed. - */ - Duration?: NullableDouble; - /** - * Segment documents for the segments and subsegments that comprise the trace. - */ - Segments?: SegmentList; - } - export type TraceId = string; - export type TraceIdList = TraceId[]; - export type TraceList = Trace[]; - export type TraceSegmentDocument = string; - export type TraceSegmentDocumentList = TraceSegmentDocument[]; - export interface TraceSummary { - /** - * The unique identifier for the request that generated the trace's segments and subsegments. - */ - Id?: TraceId; - /** - * The length of time in seconds between the start time of the root segment and the end time of the last segment that completed. - */ - Duration?: NullableDouble; - /** - * The length of time in seconds between the start and end times of the root segment. If the service performs work asynchronously, the response time measures the time before the response is sent to the user, while the duration measures the amount of time before the last traced activity completes. - */ - ResponseTime?: NullableDouble; - /** - * One or more of the segment documents has a 500 series error. - */ - HasFault?: NullableBoolean; - /** - * One or more of the segment documents has a 400 series error. - */ - HasError?: NullableBoolean; - /** - * One or more of the segment documents has a 429 throttling error. - */ - HasThrottle?: NullableBoolean; - /** - * One or more of the segment documents is in progress. - */ - IsPartial?: NullableBoolean; - /** - * Information about the HTTP request served by the trace. - */ - Http?: Http; - /** - * Annotations from the trace's segment documents. - */ - Annotations?: Annotations; - /** - * Users from the trace's segment documents. - */ - Users?: TraceUsers; - /** - * Service IDs from the trace's segment documents. - */ - ServiceIds?: ServiceIds; - } - export type TraceSummaryList = TraceSummary[]; - export interface TraceUser { - /** - * The user's name. - */ - UserName?: String; - /** - * Services that the user's request hit. - */ - ServiceIds?: ServiceIds; - } - export type TraceUsers = TraceUser[]; - export type UnprocessedTraceIdList = TraceId[]; - export interface UnprocessedTraceSegment { - /** - * The segment's ID. - */ - Id?: String; - /** - * The error that caused processing to fail. - */ - ErrorCode?: String; - /** - * The error message. - */ - Message?: String; - } - export type UnprocessedTraceSegmentList = UnprocessedTraceSegment[]; - export interface ValueWithServiceIds { - /** - * Values of the annotation. - */ - AnnotationValue?: AnnotationValue; - /** - * Services to which the annotation applies. - */ - ServiceIds?: ServiceIds; - } - export type ValuesWithServiceIds = ValueWithServiceIds[]; - /** - * A string in YYYY-MM-DD format that represents the latest possible API version that can be used in this service. Specify 'latest' to use the latest possible version. - */ - export type apiVersion = "2016-04-12"|"latest"|string; - export interface ClientApiVersions { - /** - * A string in YYYY-MM-DD format that represents the latest possible API version that can be used in this service. Specify 'latest' to use the latest possible version. - */ - apiVersion?: apiVersion; - } - export type ClientConfiguration = ServiceConfigurationOptions & ClientApiVersions; - /** - * Contains interfaces for use with the XRay client. - */ - export import Types = XRay; -} -export = XRay; diff --git a/workshops/monte-carlo-on-ec2-spot-fleet/src/web/node_modules/aws-sdk/clients/xray.js b/workshops/monte-carlo-on-ec2-spot-fleet/src/web/node_modules/aws-sdk/clients/xray.js deleted file mode 100644 index 7ad27b8f..00000000 --- a/workshops/monte-carlo-on-ec2-spot-fleet/src/web/node_modules/aws-sdk/clients/xray.js +++ /dev/null @@ -1,18 +0,0 @@ -require('../lib/node_loader'); -var AWS = require('../lib/core'); -var Service = AWS.Service; -var apiLoader = AWS.apiLoader; - -apiLoader.services['xray'] = {}; -AWS.XRay = Service.defineService('xray', ['2016-04-12']); -Object.defineProperty(apiLoader.services['xray'], '2016-04-12', { - get: function get() { - var model = require('../apis/xray-2016-04-12.min.json'); - model.paginators = require('../apis/xray-2016-04-12.paginators.json').pagination; - return model; - }, - enumerable: true, - configurable: true -}); - -module.exports = AWS.XRay; diff --git a/workshops/monte-carlo-on-ec2-spot-fleet/src/web/node_modules/aws-sdk/dist-tools/browser-builder.js b/workshops/monte-carlo-on-ec2-spot-fleet/src/web/node_modules/aws-sdk/dist-tools/browser-builder.js deleted file mode 100755 index 9555ba80..00000000 --- a/workshops/monte-carlo-on-ec2-spot-fleet/src/web/node_modules/aws-sdk/dist-tools/browser-builder.js +++ /dev/null @@ -1,87 +0,0 @@ -#!/usr/bin/env node - -var path = require('path'); - -var AWS = require('../index'); - -var license = [ - '// AWS SDK for JavaScript v' + AWS.VERSION, - '// Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved.', - '// License at https://sdk.amazonaws.com/js/BUNDLE_LICENSE.txt' -].join('\n') + '\n'; - -function minify(code) { - var uglify = require('uglify-js'); - var minified = uglify.minify(code, {fromString: true}); - return minified.code; -} - -function stripComments(code) { - var lines = code.split(/\r?\n/); - var multiLine = false; - lines = lines.map(function (line) { - var rLine = line; - if (line.match(/^\s*\/\//)) { - rLine = null; - } else if (line.match(/^\s*\/\*/)) { - multiLine = true; - rLine = null; - } - - if (multiLine) { - var multiLineEnd = line.match(/\*\/(.*)/); - if (multiLineEnd) { - multiLine = false; - rLine = multiLineEnd[1]; - } else { - rLine = null; - } - } - - return rLine; - }).filter(function(l) { return l !== null; }); - - var newCode = lines.join('\n'); - newCode = newCode.replace(/\/\*\*[\s\S]+?Copyright\s+.+?Amazon[\s\S]+?\*\//g, ''); - return newCode; -} - -function build(options, callback) { - if (arguments.length === 1) { - callback = options; - options = {}; - } - - var img = require('insert-module-globals'); - img.vars.process = function() { return '{browser:true}'; }; - - if (options.services) process.env.AWS_SERVICES = options.services; - - var browserify = require('browserify'); - var brOpts = { basedir: path.resolve(__dirname, '..') }; - browserify(brOpts).add('./').ignore('domain').bundle(function(err, data) { - if (err) return callback(err); - - var code = (data || '').toString(); - if (options.minify) code = minify(code); - else code = stripComments(code); - - code = license + code; - callback(null, code); - }); -} - -// run if we called this tool directly -if (require.main === module) { - var opts = { - services: process.argv[2] || process.env.SERVICES, - minify: process.env.MINIFY ? true : false - }; - build(opts, function(err, code) { - if (err) console.error(err.message); - else console.log(code); - }); -} - -build.license = license; -module.exports = build; diff --git a/workshops/monte-carlo-on-ec2-spot-fleet/src/web/node_modules/aws-sdk/dist-tools/client-creator.js b/workshops/monte-carlo-on-ec2-spot-fleet/src/web/node_modules/aws-sdk/dist-tools/client-creator.js deleted file mode 100644 index 9fe3fb57..00000000 --- a/workshops/monte-carlo-on-ec2-spot-fleet/src/web/node_modules/aws-sdk/dist-tools/client-creator.js +++ /dev/null @@ -1,214 +0,0 @@ -var fs = require('fs'); -var path = require('path'); - -// Generate service clients -function ClientCreator() { - this._metadata = require('../apis/metadata'); - this._apisFolderPath = path.join(__dirname, '..', 'apis'); - this._clientFolderPath = path.join(__dirname, '..', 'clients'); - this._serviceCustomizationsFolderPath = path.join(__dirname, '..', 'lib', 'services'); - this._packageJsonPath = path.join(__dirname, '..', 'package.json'); - this._apiFileNames = null; -} - -ClientCreator.prototype.getAllApiFilenames = function getAllApiFilenames() { - if (this._apiFileNames) { - return this._apiFileNames; - } - var apiFileNames = fs.readdirSync(this._apisFolderPath); - // filter out metadata - this._apiFileNames = apiFileNames.filter(function(name) { - return name !== 'metadata.json'; - }); - return this._apiFileNames; -}; - -ClientCreator.prototype.getAllApiFilenamesForService = function getAllApiFilenamesForService(modelName) { - var serviceRegex = new RegExp('(^' + modelName + '-([\\d]{4}-[\\d]{2}-[\\d]{2})\\.([\\w]+))\\.json$'); - var modelRegex = /(([\d]{4}-[\d]{2}-[\d]{2})\.([\w]+))\.json$/; - - var models = {}; - var versions = {}; - this.getAllApiFilenames().filter(function(name) { - return name.search(serviceRegex) === 0; - }).forEach(function(name) { - var matches = name.match(serviceRegex); - if (!matches) { - return; - } - var model = matches[1]; - var version = matches[2]; - var modelType = matches[3]; - if (!versions.hasOwnProperty(version)) { - versions[version] = {}; - } - var versionInfo = versions[version]; - switch (modelType) { - case 'min': - versionInfo.api = model; - break; - case 'paginators': - versionInfo.paginators = model; - break; - case 'waiters2': - versionInfo.waiters = model; - break; - default: - return; - } - }); - models.versions = versions; - return models; -}; - -ClientCreator.prototype.customizationsExist = function customizationsExist(serviceName) { - var customizationsFolder = this._serviceCustomizationsFolderPath; - return fs.existsSync(path.join(customizationsFolder, serviceName + '.js')); -}; - -ClientCreator.prototype.generateClientFileSource = function generateClientFileSource(serviceMetadata, specifiedVersion) { - var clientFolderPath = this._clientFolderPath; - var className = serviceMetadata.name; - var serviceName = className.toLowerCase(); - var modelName = serviceMetadata.prefix || serviceName; - specifiedVersion = specifiedVersion || '*'; - - // get models for the service - var models = this.getAllApiFilenamesForService(modelName); - - var modelVersions = models && models.versions; - if (!modelVersions) { - throw new Error('Unable to get models for ' + modelName); - } - var obsoleteVersions = serviceMetadata.versions || []; - var versionNumbers = Object.keys(modelVersions); - var tab = ' '; - var code = ''; - code += 'require(\'../lib/node_loader\');\n'; - code += 'var AWS = require(\'../lib/core\');\n'; - code += 'var Service = AWS.Service;\n'; - code += 'var apiLoader = AWS.apiLoader;\n\n'; - code += 'apiLoader.services[\'' + serviceName +'\'] = {};\n'; - code += 'AWS.' + className + ' = Service.defineService(\'' + serviceName + '\', [\'' + [].concat(obsoleteVersions, versionNumbers).sort().join('\', \'') + '\']);\n'; - // pull in service customizations - if (this.customizationsExist(serviceName)) { - code += 'require(\'../lib/services/' + serviceName + '\');\n'; - } - versionNumbers.forEach(function(version) { - // check version - if (specifiedVersion !== '*' && specifiedVersion !== version) { - return; - } - var versionInfo = modelVersions[version]; - if (!versionInfo.hasOwnProperty('api')) { - throw new Error('No API model for ' + serviceName + '-' + version); - } - code += 'Object.defineProperty(apiLoader.services[\'' + serviceName +'\'], \'' + version + '\', {\n'; - code += tab + 'get: function get() {\n'; - code += tab + tab + 'var model = require(\'../apis/' + versionInfo.api + '.json\');\n' - if (versionInfo.hasOwnProperty('paginators')) { - code += tab + tab + 'model.paginators = require(\'../apis/' + versionInfo.paginators + '.json\').pagination;\n'; - } - if (versionInfo.hasOwnProperty('waiters')) { - code += tab + tab + 'model.waiters = require(\'../apis/' + versionInfo.waiters + '.json\').waiters;\n'; - } - code += tab + tab + 'return model;\n'; - code += tab + '},\n'; - code += tab + 'enumerable: true,\n'; - code += tab + 'configurable: true\n'; - code += '});\n'; - }); - - code += '\n'; - code += 'module.exports = AWS.' + className + ';\n'; - return { - code: code, - path: path.join(clientFolderPath, serviceName + '.js'), - service: serviceName, - } -}; - -ClientCreator.prototype.tabs = function tabs(count) { - var tab = ''; - for (var i = 0; i < count; i++) { - tab += ' '; - } - return tab; -} - -ClientCreator.prototype.generateDefinePropertySource = function generateDefinePropertySource(objName, serviceName, className) { - var tabs = this.tabs; - var code = ''; - code += 'var ' + serviceName + ' = null;\n'; - code += 'Object.defineProperty(' + objName + ', \'' + className + '\', {\n'; - code += tabs(1) + 'get: function get() {\n'; - code += tabs(2) + 'return ' + serviceName + ' || require(\'./' + serviceName + '\');\n'; - code += tabs(1) + '},\n'; - code += tabs(1) + 'set: function set(svc) {\n'; - code += tabs(2) + serviceName + ' = svc;\n'; - code += tabs(1) + '},\n'; - code += tabs(1) + 'enumerable: true,\n'; - code += tabs(1) + 'configurable: true\n'; - code += '});\n'; - - return code; -}; - -ClientCreator.prototype.generateAllServicesSource = function generateAllServicesSource(services, fileName) { - var metadata = this._metadata; - var self = this; - var code = ''; - code += 'require(\'../lib/node_loader\');\n'; - code += 'module.exports = {\n'; - - services.forEach(function(service, idx) { - var className = metadata[service].name; - var tab = ' '; - var isLast = idx === services.length - 1; - code += self.tabs(1) + className + ': require(\'./' + service + '\')' + (isLast ? '' : ',') + '\n'; - }); - code += '};'; - return { - code: code, - path: path.join(this._clientFolderPath, fileName + '.js'), - service: fileName - }; -}; - -ClientCreator.prototype.getDefaultServices = function getDefaultServices() { - var metadata = this._metadata; - var services = []; - for (var key in metadata) { - if (!metadata.hasOwnProperty(key)) { - continue; - } - var className = metadata[key].name; - var serviceName = className.toLowerCase(); - services.push(serviceName); - } - return services; -}; - -ClientCreator.prototype.writeClientServices = function writeClientServices() { - var metadata = this._metadata; - var services = []; - var corsServices = []; - for (var key in metadata) { - if (!metadata.hasOwnProperty(key)) { - continue; - } - var clientInfo = this.generateClientFileSource(metadata[key]); - fs.writeFileSync(clientInfo.path, clientInfo.code); - services.push(clientInfo.service); - // check if service supports CORS - if (metadata[key].cors === true) { - corsServices.push(clientInfo.service); - } - } - var allClientInfo = this.generateAllServicesSource(services, 'all'); - fs.writeFileSync(allClientInfo.path, allClientInfo.code); - var browserClientInfo = this.generateAllServicesSource(corsServices, 'browser_default'); - fs.writeFileSync(browserClientInfo.path, browserClientInfo.code); -}; - -module.exports = ClientCreator; \ No newline at end of file diff --git a/workshops/monte-carlo-on-ec2-spot-fleet/src/web/node_modules/aws-sdk/dist-tools/create-all-services.js b/workshops/monte-carlo-on-ec2-spot-fleet/src/web/node_modules/aws-sdk/dist-tools/create-all-services.js deleted file mode 100644 index 8549b4c0..00000000 --- a/workshops/monte-carlo-on-ec2-spot-fleet/src/web/node_modules/aws-sdk/dist-tools/create-all-services.js +++ /dev/null @@ -1,6 +0,0 @@ -var ClientCreator = require('./client-creator'); - -var cc = new ClientCreator(); - -cc.writeClientServices(); -console.log('Finished updating services.'); \ No newline at end of file diff --git a/workshops/monte-carlo-on-ec2-spot-fleet/src/web/node_modules/aws-sdk/dist-tools/service-collector.js b/workshops/monte-carlo-on-ec2-spot-fleet/src/web/node_modules/aws-sdk/dist-tools/service-collector.js deleted file mode 100644 index b0a4b611..00000000 --- a/workshops/monte-carlo-on-ec2-spot-fleet/src/web/node_modules/aws-sdk/dist-tools/service-collector.js +++ /dev/null @@ -1,168 +0,0 @@ -var fs = require('fs'); -var util = require('util'); -var path = require('path'); - -var AWS = require('../'); -var apis = require('../lib/api_loader'); -var metadata = require('../apis/metadata'); -var ClientCreator = require('./client-creator'); - -var clientCreator = new ClientCreator(); -var defaultServices = clientCreator.getDefaultServices().join(','); -var sanitizeRegex = /[^a-zA-Z0-9,-]/; - -var serviceClasses = {}; -Object.keys(AWS).forEach(function(name) { - if (AWS[name].serviceIdentifier) { - serviceClasses[AWS[name].serviceIdentifier] = AWS[name]; - } -}); - -function getServiceHeader(service) { - if (service === 'all') { - return Object.keys(serviceClasses).map(function(name) { - return getServiceHeader(name); - }).join('\n'); - } - - if (!serviceClasses[service]) return null; - var versions = serviceClasses[service].apiVersions.map(function(version) { - return version.indexOf('*') >= 0 ? null : version; - }).filter(function(c) { return c !== null; }); - - var file = util.format( - 'if (!Object.prototype.hasOwnProperty.call(AWS, \'' + metadata[service].name + '\')) {\n' + - ' AWS.apiLoader.services[\'%s\'] = {};\n' + - ' AWS.%s = AWS.Service.defineService(\'%s\', %s);\n', - service, metadata[service].name, service, util.inspect(versions)); - var svcPath = path.join(__dirname, '..', 'lib', 'services', service + '.js'); - if (fs.existsSync(svcPath)) { - file += ' require(\'./services/' + service + '\');\n'; - } - file += '}\n'; - - return file; -} - -function getService(service, version) { - if (service === 'all') { - return Object.keys(serviceClasses).map(function(name) { - var out = serviceClasses[name].apiVersions.map(function(svcVersion) { - if (svcVersion.indexOf('*') >= 0) return null; - return getService(name, svcVersion); - }).filter(function(c) { return c !== null; }).join('\n'); - - return out; - }).join('\n'); - } - - var svc, api; - if (!serviceClasses[service]) { - return null; - } - - try { - var ClassName = serviceClasses[service]; - svc = new ClassName({apiVersion: version, endpoint: 'localhost'}); - api = svc.api; - } catch (e) { - return null; - } - - var serviceFileName = metadata[service].prefix || service; - var lines = []; - var line = util.format( - 'AWS.apiLoader.services[\'%s\'][\'%s\'] = %s;\n', - service, svc.api.apiVersion, 'require(\'../apis/' + serviceFileName + '-' + svc.api.apiVersion + '.min\')'); - lines.push(line); - if (Object.prototype.hasOwnProperty.call(api, 'paginators') && Object.keys(api.paginators).length) { - line = util.format( - 'AWS.apiLoader.services[\'%s\'][\'%s\'].paginators = %s;\n', - service, svc.api.apiVersion, 'require(\'../apis/' + serviceFileName + '-' + svc.api.apiVersion + '.paginators\').pagination'); - lines.push(line); - } - if (Object.prototype.hasOwnProperty.call(api, 'waiters') && Object.keys(api.waiters).length) { - line = util.format( - 'AWS.apiLoader.services[\'%s\'][\'%s\'].waiters = %s;\n', - service, svc.api.apiVersion, 'require(\'../apis/' + serviceFileName + '-' + svc.api.apiVersion + '.waiters2\').waiters'); - lines.push(line); - } - return lines.join(''); -} - -function ServiceCollector(services) { - var builtServices = {}; - - function buildService(name, usingDefaultServices) { - var match = name.match(/^(.+?)(?:-(.+?))?$/); - var service = match[1], version = match[2] || 'latest'; - var contents = []; - var lines, err; - - if (!builtServices[service]) { - builtServices[service] = {}; - - lines = getServiceHeader(service); - if (lines === null) { - if (!usingDefaultServices) { - err = new Error('Invalid module: ' + service); - err.name = 'InvalidModuleError'; - throw err; - } - } else { - contents.push(lines); - } - } - - if (!builtServices[service][version]) { - builtServices[service][version] = true; - - lines = getService(service, version); - if (lines === null) { - if (!usingDefaultServices) { - err = new Error('Invalid module: ' + service + '-' + version); - err.name = 'InvalidModuleError'; - throw err; - } - } else { - contents.push(lines); - } - } - - return contents.join(''); - } - - var serviceCode = ''; - var usingDefaultServicesToggle = false; - if (!services) { - usingDefaultServicesToggle = true; - services = defaultServices; - } - if (services.match(sanitizeRegex)) { - throw new Error('Incorrectly formatted service names'); - } - - var invalidModules = []; - var stsIncluded = false; - services.split(',').sort().forEach(function(name) { - if (name.match(/^sts\b/) || name === 'all') stsIncluded = true; - try { - serviceCode += buildService(name, usingDefaultServicesToggle) + '\n'; - } catch (e) { - if (e.name === 'InvalidModuleError') invalidModules.push(name); - else throw e; - } - }); - - if (!stsIncluded) { - serviceCode += buildService('sts') + '\n'; - } - - if (invalidModules.length > 0) { - throw new Error('Missing modules: ' + invalidModules.join(', ')); - } - - return serviceCode; -} - -module.exports = ServiceCollector; \ No newline at end of file diff --git a/workshops/monte-carlo-on-ec2-spot-fleet/src/web/node_modules/aws-sdk/dist-tools/transform.js b/workshops/monte-carlo-on-ec2-spot-fleet/src/web/node_modules/aws-sdk/dist-tools/transform.js deleted file mode 100644 index ff7d2fc2..00000000 --- a/workshops/monte-carlo-on-ec2-spot-fleet/src/web/node_modules/aws-sdk/dist-tools/transform.js +++ /dev/null @@ -1,43 +0,0 @@ -var Transform = require('stream').Transform; -var collector = require('./service-collector'); -var license = require('./browser-builder').license; - -module.exports = function(file) { - var stream = new Transform(); - - var didDefineServices = !!process.env.AWS_SERVICES; - - var isEntryPoint = !!file.match(/[\/\\]lib[\/\\]browser\.js$/); - - stream._transform = function(data, encoding, callback) { - callback(null, data); - }; - - if (isEntryPoint) { - if (didDefineServices) { - // We need to strip out the default requires statement - stream._transform = function(data, encoding, callback) { - var code = data.toString(); - code = code.trim(); - var lines = code.split('\n'); - lines = lines.filter(function(line) { - return !line.match(/^require\(.+browser_default['"]\);$/); - }); - - code = lines.join('\n'); - data = new Buffer(code); - callback(null, data); - }; - - var src = collector(process.env.AWS_SERVICES); - stream._flush = function(callback) { - stream.push(src); - callback(); - }; - } - - stream.push(license); - } - - return stream; -}; diff --git a/workshops/monte-carlo-on-ec2-spot-fleet/src/web/node_modules/aws-sdk/dist-tools/webpack.config.rn-core.js b/workshops/monte-carlo-on-ec2-spot-fleet/src/web/node_modules/aws-sdk/dist-tools/webpack.config.rn-core.js deleted file mode 100644 index 6f0fa5a1..00000000 --- a/workshops/monte-carlo-on-ec2-spot-fleet/src/web/node_modules/aws-sdk/dist-tools/webpack.config.rn-core.js +++ /dev/null @@ -1,32 +0,0 @@ -// import path for resolving file paths -var path = require('path'); -module.exports = { - // Specify the entry point for our app. - entry: [ - path.join(__dirname, '..', 'lib', 'core.js'), - ], - // Specify the output file containing our bundled code - output: { - path: path.join(__dirname, '..', 'dist'), - filename: 'aws-sdk-core-react-native.js', - libraryTarget: 'umd', - library: 'AWS' - }, - resolve: {}, - module: { - /** - * Tell webpack how to load 'json' files. - * By default, webpack only knows how to handle - * JavaScript files. - * When webpack comes across a 'require()' statement - * where a json file is being imported, it will use - * the json-loader. - */ - loaders: [ - { - test: /\.json$/, - loaders: ['json'] - } - ] - } -} \ No newline at end of file diff --git a/workshops/monte-carlo-on-ec2-spot-fleet/src/web/node_modules/aws-sdk/dist-tools/webpack.config.rn-dep.js b/workshops/monte-carlo-on-ec2-spot-fleet/src/web/node_modules/aws-sdk/dist-tools/webpack.config.rn-dep.js deleted file mode 100644 index 90c05dbd..00000000 --- a/workshops/monte-carlo-on-ec2-spot-fleet/src/web/node_modules/aws-sdk/dist-tools/webpack.config.rn-dep.js +++ /dev/null @@ -1,31 +0,0 @@ -// import path for resolving file paths -var path = require('path'); -module.exports = { - // Specify the entry point for our app. - entry: [ - 'xml2js' - ], - // Specify the output file containing our bundled code - output: { - path: path.join(__dirname, '..', 'dist'), - filename: 'xml2js.js', - libraryTarget: 'commonjs2', - }, - resolve: {}, - module: { - /** - * Tell webpack how to load 'json' files. - * By default, webpack only knows how to handle - * JavaScript files. - * When webpack comes across a 'require()' statement - * where a json file is being imported, it will use - * the json-loader. - */ - loaders: [ - { - test: /\.json$/, - loaders: ['json'] - } - ] - } -} \ No newline at end of file diff --git a/workshops/monte-carlo-on-ec2-spot-fleet/src/web/node_modules/aws-sdk/dist-tools/webpack.config.rn.js b/workshops/monte-carlo-on-ec2-spot-fleet/src/web/node_modules/aws-sdk/dist-tools/webpack.config.rn.js deleted file mode 100644 index be54df17..00000000 --- a/workshops/monte-carlo-on-ec2-spot-fleet/src/web/node_modules/aws-sdk/dist-tools/webpack.config.rn.js +++ /dev/null @@ -1,34 +0,0 @@ -// import path for resolving file paths -var path = require('path'); -module.exports = { - // Specify the entry point for our app. - entry: [ - path.join(__dirname, '..', 'react-native.js') - ], - // Specify the output file containing our bundled code - output: { - path: path.join(__dirname, '..', 'dist'), - filename: 'aws-sdk-react-native.js', - libraryTarget: 'umd', - library: 'AWS' - }, - resolve: { - packageAlias: 'react-native' - }, - module: { - /** - * Tell webpack how to load 'json' files. - * By default, webpack only knows how to handle - * JavaScript files. - * When webpack comes across a 'require()' statement - * where a json file is being imported, it will use - * the json-loader. - */ - loaders: [ - { - test: /\.json$/, - loaders: ['json'] - } - ] - } -} \ No newline at end of file diff --git a/workshops/monte-carlo-on-ec2-spot-fleet/src/web/node_modules/aws-sdk/dist/BUNDLE_LICENSE.txt b/workshops/monte-carlo-on-ec2-spot-fleet/src/web/node_modules/aws-sdk/dist/BUNDLE_LICENSE.txt deleted file mode 100644 index 59783abe..00000000 --- a/workshops/monte-carlo-on-ec2-spot-fleet/src/web/node_modules/aws-sdk/dist/BUNDLE_LICENSE.txt +++ /dev/null @@ -1,96 +0,0 @@ -The bundled package of the AWS SDK for JavaScript is available under the -Apache License, Version 2.0: - - Copyright 2012-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 is located at - - http://aws.amazon.com/apache2.0/ - - or in the "license" file accompanying this file. 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. - -This product bundles browserify, which is available under a -"3-clause BSD" license: - - Copyright Joyent, Inc. and other Node contributors. - - 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, subject to the - following conditions: - - The above copyright notice and this permission notice shall be included - in all copies or substantial portions of the Software. - - 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. - -This product bundles crypto-browserify, which is available under -the MIT license: - - Copyright (c) 2013 Dominic Tarr - - 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, - subject to the following conditions: - - The above copyright notice and this permission notice - shall be included in all copies or substantial portions of the Software. - - 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. - -This product bundles MD5, SHA-1, and SHA-256 hashing algorithm components, -which are available under a BSD license: - - Copyright (c) 1998 - 2009, Paul Johnston & Contributors - All rights reserved. - - Redistribution and use in source and binary forms, with or without - modification, are permitted provided that the following conditions are met: - - Redistributions of source code must retain the above copyrightnotice, - this list of conditions and the following disclaimer. Redistributions - in binary form must reproduce the above copyright notice, this list of - conditions and the following disclaimer in the documentation and/or - other materials provided with the distribution. - - Neither the name of the author nor the names of its contributors may - be used to endorse or promote products derived from this software - without specific prior written permission. - - THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" - AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE - IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE - ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE - LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR - CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF - SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS - INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN - CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) - ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF - THE POSSIBILITY OF SUCH DAMAGE. diff --git a/workshops/monte-carlo-on-ec2-spot-fleet/src/web/node_modules/aws-sdk/dist/aws-sdk-core-react-native.js b/workshops/monte-carlo-on-ec2-spot-fleet/src/web/node_modules/aws-sdk/dist/aws-sdk-core-react-native.js deleted file mode 100644 index 39ce75fd..00000000 --- a/workshops/monte-carlo-on-ec2-spot-fleet/src/web/node_modules/aws-sdk/dist/aws-sdk-core-react-native.js +++ /dev/null @@ -1,16840 +0,0 @@ -(function webpackUniversalModuleDefinition(root, factory) { - if(typeof exports === 'object' && typeof module === 'object') - module.exports = factory(); - else if(typeof define === 'function' && define.amd) - define([], factory); - else if(typeof exports === 'object') - exports["AWS"] = factory(); - else - root["AWS"] = factory(); -})(this, function() { -return /******/ (function(modules) { // webpackBootstrap -/******/ // The module cache -/******/ var installedModules = {}; - -/******/ // The require function -/******/ function __webpack_require__(moduleId) { - -/******/ // Check if module is in cache -/******/ if(installedModules[moduleId]) -/******/ return installedModules[moduleId].exports; - -/******/ // Create a new module (and put it into the cache) -/******/ var module = installedModules[moduleId] = { -/******/ exports: {}, -/******/ id: moduleId, -/******/ loaded: false -/******/ }; - -/******/ // Execute the module function -/******/ modules[moduleId].call(module.exports, module, module.exports, __webpack_require__); - -/******/ // Flag the module as loaded -/******/ module.loaded = true; - -/******/ // Return the exports of the module -/******/ return module.exports; -/******/ } - - -/******/ // expose the modules object (__webpack_modules__) -/******/ __webpack_require__.m = modules; - -/******/ // expose the module cache -/******/ __webpack_require__.c = installedModules; - -/******/ // __webpack_public_path__ -/******/ __webpack_require__.p = ""; - -/******/ // Load entry module and return exports -/******/ return __webpack_require__(0); -/******/ }) -/************************************************************************/ -/******/ ([ -/* 0 */ -/***/ (function(module, exports, __webpack_require__) { - - module.exports = __webpack_require__(1); - - -/***/ }), -/* 1 */ -/***/ (function(module, exports, __webpack_require__) { - - /** - * The main AWS namespace - */ - var AWS = { util: __webpack_require__(2) }; - - /** - * @api private - * @!macro [new] nobrowser - * @note This feature is not supported in the browser environment of the SDK. - */ - var _hidden = {}; _hidden.toString(); // hack to parse macro - - module.exports = AWS; - - AWS.util.update(AWS, { - - /** - * @constant - */ - VERSION: '2.133.0', - - /** - * @api private - */ - Signers: {}, - - /** - * @api private - */ - Protocol: { - Json: __webpack_require__(13), - Query: __webpack_require__(16), - Rest: __webpack_require__(20), - RestJson: __webpack_require__(21), - RestXml: __webpack_require__(22) - }, - - /** - * @api private - */ - XML: { - Builder: __webpack_require__(23), - Parser: null // conditionally set based on environment - }, - - /** - * @api private - */ - JSON: { - Builder: __webpack_require__(14), - Parser: __webpack_require__(15) - }, - - /** - * @api private - */ - Model: { - Api: __webpack_require__(182), - Operation: __webpack_require__(183), - Shape: __webpack_require__(18), - Paginator: __webpack_require__(184), - ResourceWaiter: __webpack_require__(185) - }, - - /** - * @api private - */ - apiLoader: __webpack_require__(186) - }); - - __webpack_require__(187); - __webpack_require__(190); - - __webpack_require__(193); - __webpack_require__(194); - __webpack_require__(195); - __webpack_require__(199); - __webpack_require__(202); - __webpack_require__(203); - __webpack_require__(204); - __webpack_require__(212); - - /** - * @readonly - * @return [AWS.SequentialExecutor] a collection of global event listeners that - * are attached to every sent request. - * @see AWS.Request AWS.Request for a list of events to listen for - * @example Logging the time taken to send a request - * AWS.events.on('send', function startSend(resp) { - * resp.startTime = new Date().getTime(); - * }).on('complete', function calculateTime(resp) { - * var time = (new Date().getTime() - resp.startTime) / 1000; - * console.log('Request took ' + time + ' seconds'); - * }); - * - * new AWS.S3().listBuckets(); // prints 'Request took 0.285 seconds' - */ - AWS.events = new AWS.SequentialExecutor(); - - -/***/ }), -/* 2 */ -/***/ (function(module, exports, __webpack_require__) { - - /* WEBPACK VAR INJECTION */(function(process, setImmediate) {/* eslint guard-for-in:0 */ - var AWS; - - /** - * A set of utility methods for use with the AWS SDK. - * - * @!attribute abort - * Return this value from an iterator function {each} or {arrayEach} - * to break out of the iteration. - * @example Breaking out of an iterator function - * AWS.util.each({a: 1, b: 2, c: 3}, function(key, value) { - * if (key == 'b') return AWS.util.abort; - * }); - * @see each - * @see arrayEach - * @api private - */ - var util = { - environment: 'nodejs', - engine: function engine() { - if (util.isBrowser() && typeof navigator !== 'undefined') { - return navigator.userAgent; - } else { - var engine = process.platform + '/' + process.version; - if (process.env.AWS_EXECUTION_ENV) { - engine += ' exec-env/' + process.env.AWS_EXECUTION_ENV; - } - return engine; - } - }, - - userAgent: function userAgent() { - var name = util.environment; - var agent = 'aws-sdk-' + name + '/' + __webpack_require__(1).VERSION; - if (name === 'nodejs') agent += ' ' + util.engine(); - return agent; - }, - - isBrowser: function isBrowser() { return process && process.browser; }, - isNode: function isNode() { return !util.isBrowser(); }, - uriEscape: function uriEscape(string) { - var output = encodeURIComponent(string); - output = output.replace(/[^A-Za-z0-9_.~\-%]+/g, escape); - - // AWS percent-encodes some extra non-standard characters in a URI - output = output.replace(/[*]/g, function(ch) { - return '%' + ch.charCodeAt(0).toString(16).toUpperCase(); - }); - - return output; - }, - - uriEscapePath: function uriEscapePath(string) { - var parts = []; - util.arrayEach(string.split('/'), function (part) { - parts.push(util.uriEscape(part)); - }); - return parts.join('/'); - }, - - urlParse: function urlParse(url) { - return util.url.parse(url); - }, - - urlFormat: function urlFormat(url) { - return util.url.format(url); - }, - - queryStringParse: function queryStringParse(qs) { - return util.querystring.parse(qs); - }, - - queryParamsToString: function queryParamsToString(params) { - var items = []; - var escape = util.uriEscape; - var sortedKeys = Object.keys(params).sort(); - - util.arrayEach(sortedKeys, function(name) { - var value = params[name]; - var ename = escape(name); - var result = ename + '='; - if (Array.isArray(value)) { - var vals = []; - util.arrayEach(value, function(item) { vals.push(escape(item)); }); - result = ename + '=' + vals.sort().join('&' + ename + '='); - } else if (value !== undefined && value !== null) { - result = ename + '=' + escape(value); - } - items.push(result); - }); - - return items.join('&'); - }, - - readFileSync: function readFileSync(path) { - if (util.isBrowser()) return null; - return __webpack_require__(6).readFileSync(path, 'utf-8'); - }, - - base64: { - encode: function encode64(string) { - if (typeof string === 'number') { - throw util.error(new Error('Cannot base64 encode number ' + string)); - } - if (string === null || typeof string === 'undefined') { - return string; - } - var buf = (typeof util.Buffer.from === 'function' && util.Buffer.from !== Uint8Array.from) ? util.Buffer.from(string) : new util.Buffer(string); - return buf.toString('base64'); - }, - - decode: function decode64(string) { - if (typeof string === 'number') { - throw util.error(new Error('Cannot base64 decode number ' + string)); - } - if (string === null || typeof string === 'undefined') { - return string; - } - return (typeof util.Buffer.from === 'function' && util.Buffer.from !== Uint8Array.from) ? util.Buffer.from(string, 'base64') : new util.Buffer(string, 'base64'); - } - - }, - - buffer: { - toStream: function toStream(buffer) { - if (!util.Buffer.isBuffer(buffer)) buffer = new util.Buffer(buffer); - - var readable = new (util.stream.Readable)(); - var pos = 0; - readable._read = function(size) { - if (pos >= buffer.length) return readable.push(null); - - var end = pos + size; - if (end > buffer.length) end = buffer.length; - readable.push(buffer.slice(pos, end)); - pos = end; - }; - - return readable; - }, - - /** - * Concatenates a list of Buffer objects. - */ - concat: function(buffers) { - var length = 0, - offset = 0, - buffer = null, i; - - for (i = 0; i < buffers.length; i++) { - length += buffers[i].length; - } - - buffer = new util.Buffer(length); - - for (i = 0; i < buffers.length; i++) { - buffers[i].copy(buffer, offset); - offset += buffers[i].length; - } - - return buffer; - } - }, - - string: { - byteLength: function byteLength(string) { - if (string === null || string === undefined) return 0; - if (typeof string === 'string') string = new util.Buffer(string); - - if (typeof string.byteLength === 'number') { - return string.byteLength; - } else if (typeof string.length === 'number') { - return string.length; - } else if (typeof string.size === 'number') { - return string.size; - } else if (typeof string.path === 'string') { - return __webpack_require__(6).lstatSync(string.path).size; - } else { - throw util.error(new Error('Cannot determine length of ' + string), - { object: string }); - } - }, - - upperFirst: function upperFirst(string) { - return string[0].toUpperCase() + string.substr(1); - }, - - lowerFirst: function lowerFirst(string) { - return string[0].toLowerCase() + string.substr(1); - } - }, - - ini: { - parse: function string(ini) { - var currentSection, map = {}; - util.arrayEach(ini.split(/\r?\n/), function(line) { - line = line.split(/(^|\s)[;#]/)[0]; // remove comments - var section = line.match(/^\s*\[([^\[\]]+)\]\s*$/); - if (section) { - currentSection = section[1]; - } else if (currentSection) { - var item = line.match(/^\s*(.+?)\s*=\s*(.+?)\s*$/); - if (item) { - map[currentSection] = map[currentSection] || {}; - map[currentSection][item[1]] = item[2]; - } - } - }); - - return map; - } - }, - - fn: { - noop: function() {}, - - /** - * Turn a synchronous function into as "async" function by making it call - * a callback. The underlying function is called with all but the last argument, - * which is treated as the callback. The callback is passed passed a first argument - * of null on success to mimick standard node callbacks. - */ - makeAsync: function makeAsync(fn, expectedArgs) { - if (expectedArgs && expectedArgs <= fn.length) { - return fn; - } - - return function() { - var args = Array.prototype.slice.call(arguments, 0); - var callback = args.pop(); - var result = fn.apply(null, args); - callback(result); - }; - } - }, - - /** - * Date and time utility functions. - */ - date: { - - /** - * @return [Date] the current JavaScript date object. Since all - * AWS services rely on this date object, you can override - * this function to provide a special time value to AWS service - * requests. - */ - getDate: function getDate() { - if (!AWS) AWS = __webpack_require__(1); - if (AWS.config.systemClockOffset) { // use offset when non-zero - return new Date(new Date().getTime() + AWS.config.systemClockOffset); - } else { - return new Date(); - } - }, - - /** - * @return [String] the date in ISO-8601 format - */ - iso8601: function iso8601(date) { - if (date === undefined) { date = util.date.getDate(); } - return date.toISOString().replace(/\.\d{3}Z$/, 'Z'); - }, - - /** - * @return [String] the date in RFC 822 format - */ - rfc822: function rfc822(date) { - if (date === undefined) { date = util.date.getDate(); } - return date.toUTCString(); - }, - - /** - * @return [Integer] the UNIX timestamp value for the current time - */ - unixTimestamp: function unixTimestamp(date) { - if (date === undefined) { date = util.date.getDate(); } - return date.getTime() / 1000; - }, - - /** - * @param [String,number,Date] date - * @return [Date] - */ - from: function format(date) { - if (typeof date === 'number') { - return new Date(date * 1000); // unix timestamp - } else { - return new Date(date); - } - }, - - /** - * Given a Date or date-like value, this function formats the - * date into a string of the requested value. - * @param [String,number,Date] date - * @param [String] formatter Valid formats are: - # * 'iso8601' - # * 'rfc822' - # * 'unixTimestamp' - * @return [String] - */ - format: function format(date, formatter) { - if (!formatter) formatter = 'iso8601'; - return util.date[formatter](util.date.from(date)); - }, - - parseTimestamp: function parseTimestamp(value) { - if (typeof value === 'number') { // unix timestamp (number) - return new Date(value * 1000); - } else if (value.match(/^\d+$/)) { // unix timestamp - return new Date(value * 1000); - } else if (value.match(/^\d{4}/)) { // iso8601 - return new Date(value); - } else if (value.match(/^\w{3},/)) { // rfc822 - return new Date(value); - } else { - throw util.error( - new Error('unhandled timestamp format: ' + value), - {code: 'TimestampParserError'}); - } - } - - }, - - crypto: { - crc32Table: [ - 0x00000000, 0x77073096, 0xEE0E612C, 0x990951BA, 0x076DC419, - 0x706AF48F, 0xE963A535, 0x9E6495A3, 0x0EDB8832, 0x79DCB8A4, - 0xE0D5E91E, 0x97D2D988, 0x09B64C2B, 0x7EB17CBD, 0xE7B82D07, - 0x90BF1D91, 0x1DB71064, 0x6AB020F2, 0xF3B97148, 0x84BE41DE, - 0x1ADAD47D, 0x6DDDE4EB, 0xF4D4B551, 0x83D385C7, 0x136C9856, - 0x646BA8C0, 0xFD62F97A, 0x8A65C9EC, 0x14015C4F, 0x63066CD9, - 0xFA0F3D63, 0x8D080DF5, 0x3B6E20C8, 0x4C69105E, 0xD56041E4, - 0xA2677172, 0x3C03E4D1, 0x4B04D447, 0xD20D85FD, 0xA50AB56B, - 0x35B5A8FA, 0x42B2986C, 0xDBBBC9D6, 0xACBCF940, 0x32D86CE3, - 0x45DF5C75, 0xDCD60DCF, 0xABD13D59, 0x26D930AC, 0x51DE003A, - 0xC8D75180, 0xBFD06116, 0x21B4F4B5, 0x56B3C423, 0xCFBA9599, - 0xB8BDA50F, 0x2802B89E, 0x5F058808, 0xC60CD9B2, 0xB10BE924, - 0x2F6F7C87, 0x58684C11, 0xC1611DAB, 0xB6662D3D, 0x76DC4190, - 0x01DB7106, 0x98D220BC, 0xEFD5102A, 0x71B18589, 0x06B6B51F, - 0x9FBFE4A5, 0xE8B8D433, 0x7807C9A2, 0x0F00F934, 0x9609A88E, - 0xE10E9818, 0x7F6A0DBB, 0x086D3D2D, 0x91646C97, 0xE6635C01, - 0x6B6B51F4, 0x1C6C6162, 0x856530D8, 0xF262004E, 0x6C0695ED, - 0x1B01A57B, 0x8208F4C1, 0xF50FC457, 0x65B0D9C6, 0x12B7E950, - 0x8BBEB8EA, 0xFCB9887C, 0x62DD1DDF, 0x15DA2D49, 0x8CD37CF3, - 0xFBD44C65, 0x4DB26158, 0x3AB551CE, 0xA3BC0074, 0xD4BB30E2, - 0x4ADFA541, 0x3DD895D7, 0xA4D1C46D, 0xD3D6F4FB, 0x4369E96A, - 0x346ED9FC, 0xAD678846, 0xDA60B8D0, 0x44042D73, 0x33031DE5, - 0xAA0A4C5F, 0xDD0D7CC9, 0x5005713C, 0x270241AA, 0xBE0B1010, - 0xC90C2086, 0x5768B525, 0x206F85B3, 0xB966D409, 0xCE61E49F, - 0x5EDEF90E, 0x29D9C998, 0xB0D09822, 0xC7D7A8B4, 0x59B33D17, - 0x2EB40D81, 0xB7BD5C3B, 0xC0BA6CAD, 0xEDB88320, 0x9ABFB3B6, - 0x03B6E20C, 0x74B1D29A, 0xEAD54739, 0x9DD277AF, 0x04DB2615, - 0x73DC1683, 0xE3630B12, 0x94643B84, 0x0D6D6A3E, 0x7A6A5AA8, - 0xE40ECF0B, 0x9309FF9D, 0x0A00AE27, 0x7D079EB1, 0xF00F9344, - 0x8708A3D2, 0x1E01F268, 0x6906C2FE, 0xF762575D, 0x806567CB, - 0x196C3671, 0x6E6B06E7, 0xFED41B76, 0x89D32BE0, 0x10DA7A5A, - 0x67DD4ACC, 0xF9B9DF6F, 0x8EBEEFF9, 0x17B7BE43, 0x60B08ED5, - 0xD6D6A3E8, 0xA1D1937E, 0x38D8C2C4, 0x4FDFF252, 0xD1BB67F1, - 0xA6BC5767, 0x3FB506DD, 0x48B2364B, 0xD80D2BDA, 0xAF0A1B4C, - 0x36034AF6, 0x41047A60, 0xDF60EFC3, 0xA867DF55, 0x316E8EEF, - 0x4669BE79, 0xCB61B38C, 0xBC66831A, 0x256FD2A0, 0x5268E236, - 0xCC0C7795, 0xBB0B4703, 0x220216B9, 0x5505262F, 0xC5BA3BBE, - 0xB2BD0B28, 0x2BB45A92, 0x5CB36A04, 0xC2D7FFA7, 0xB5D0CF31, - 0x2CD99E8B, 0x5BDEAE1D, 0x9B64C2B0, 0xEC63F226, 0x756AA39C, - 0x026D930A, 0x9C0906A9, 0xEB0E363F, 0x72076785, 0x05005713, - 0x95BF4A82, 0xE2B87A14, 0x7BB12BAE, 0x0CB61B38, 0x92D28E9B, - 0xE5D5BE0D, 0x7CDCEFB7, 0x0BDBDF21, 0x86D3D2D4, 0xF1D4E242, - 0x68DDB3F8, 0x1FDA836E, 0x81BE16CD, 0xF6B9265B, 0x6FB077E1, - 0x18B74777, 0x88085AE6, 0xFF0F6A70, 0x66063BCA, 0x11010B5C, - 0x8F659EFF, 0xF862AE69, 0x616BFFD3, 0x166CCF45, 0xA00AE278, - 0xD70DD2EE, 0x4E048354, 0x3903B3C2, 0xA7672661, 0xD06016F7, - 0x4969474D, 0x3E6E77DB, 0xAED16A4A, 0xD9D65ADC, 0x40DF0B66, - 0x37D83BF0, 0xA9BCAE53, 0xDEBB9EC5, 0x47B2CF7F, 0x30B5FFE9, - 0xBDBDF21C, 0xCABAC28A, 0x53B39330, 0x24B4A3A6, 0xBAD03605, - 0xCDD70693, 0x54DE5729, 0x23D967BF, 0xB3667A2E, 0xC4614AB8, - 0x5D681B02, 0x2A6F2B94, 0xB40BBE37, 0xC30C8EA1, 0x5A05DF1B, - 0x2D02EF8D], - - crc32: function crc32(data) { - var tbl = util.crypto.crc32Table; - var crc = 0 ^ -1; - - if (typeof data === 'string') { - data = new util.Buffer(data); - } - - for (var i = 0; i < data.length; i++) { - var code = data.readUInt8(i); - crc = (crc >>> 8) ^ tbl[(crc ^ code) & 0xFF]; - } - return (crc ^ -1) >>> 0; - }, - - hmac: function hmac(key, string, digest, fn) { - if (!digest) digest = 'binary'; - if (digest === 'buffer') { digest = undefined; } - if (!fn) fn = 'sha256'; - if (typeof string === 'string') string = new util.Buffer(string); - return util.crypto.lib.createHmac(fn, key).update(string).digest(digest); - }, - - md5: function md5(data, digest, callback) { - return util.crypto.hash('md5', data, digest, callback); - }, - - sha256: function sha256(data, digest, callback) { - return util.crypto.hash('sha256', data, digest, callback); - }, - - hash: function(algorithm, data, digest, callback) { - var hash = util.crypto.createHash(algorithm); - if (!digest) { digest = 'binary'; } - if (digest === 'buffer') { digest = undefined; } - if (typeof data === 'string') data = new util.Buffer(data); - var sliceFn = util.arraySliceFn(data); - var isBuffer = util.Buffer.isBuffer(data); - //Identifying objects with an ArrayBuffer as buffers - if (util.isBrowser() && typeof ArrayBuffer !== 'undefined' && data && data.buffer instanceof ArrayBuffer) isBuffer = true; - - if (callback && typeof data === 'object' && - typeof data.on === 'function' && !isBuffer) { - data.on('data', function(chunk) { hash.update(chunk); }); - data.on('error', function(err) { callback(err); }); - data.on('end', function() { callback(null, hash.digest(digest)); }); - } else if (callback && sliceFn && !isBuffer && - typeof FileReader !== 'undefined') { - // this might be a File/Blob - var index = 0, size = 1024 * 512; - var reader = new FileReader(); - reader.onerror = function() { - callback(new Error('Failed to read data.')); - }; - reader.onload = function() { - var buf = new util.Buffer(new Uint8Array(reader.result)); - hash.update(buf); - index += buf.length; - reader._continueReading(); - }; - reader._continueReading = function() { - if (index >= data.size) { - callback(null, hash.digest(digest)); - return; - } - - var back = index + size; - if (back > data.size) back = data.size; - reader.readAsArrayBuffer(sliceFn.call(data, index, back)); - }; - - reader._continueReading(); - } else { - if (util.isBrowser() && typeof data === 'object' && !isBuffer) { - data = new util.Buffer(new Uint8Array(data)); - } - var out = hash.update(data).digest(digest); - if (callback) callback(null, out); - return out; - } - }, - - toHex: function toHex(data) { - var out = []; - for (var i = 0; i < data.length; i++) { - out.push(('0' + data.charCodeAt(i).toString(16)).substr(-2, 2)); - } - return out.join(''); - }, - - createHash: function createHash(algorithm) { - return util.crypto.lib.createHash(algorithm); - } - - }, - - /** @!ignore */ - - /* Abort constant */ - abort: {}, - - each: function each(object, iterFunction) { - for (var key in object) { - if (Object.prototype.hasOwnProperty.call(object, key)) { - var ret = iterFunction.call(this, key, object[key]); - if (ret === util.abort) break; - } - } - }, - - arrayEach: function arrayEach(array, iterFunction) { - for (var idx in array) { - if (Object.prototype.hasOwnProperty.call(array, idx)) { - var ret = iterFunction.call(this, array[idx], parseInt(idx, 10)); - if (ret === util.abort) break; - } - } - }, - - update: function update(obj1, obj2) { - util.each(obj2, function iterator(key, item) { - obj1[key] = item; - }); - return obj1; - }, - - merge: function merge(obj1, obj2) { - return util.update(util.copy(obj1), obj2); - }, - - copy: function copy(object) { - if (object === null || object === undefined) return object; - var dupe = {}; - // jshint forin:false - for (var key in object) { - dupe[key] = object[key]; - } - return dupe; - }, - - isEmpty: function isEmpty(obj) { - for (var prop in obj) { - if (Object.prototype.hasOwnProperty.call(obj, prop)) { - return false; - } - } - return true; - }, - - arraySliceFn: function arraySliceFn(obj) { - var fn = obj.slice || obj.webkitSlice || obj.mozSlice; - return typeof fn === 'function' ? fn : null; - }, - - isType: function isType(obj, type) { - // handle cross-"frame" objects - if (typeof type === 'function') type = util.typeName(type); - return Object.prototype.toString.call(obj) === '[object ' + type + ']'; - }, - - typeName: function typeName(type) { - if (Object.prototype.hasOwnProperty.call(type, 'name')) return type.name; - var str = type.toString(); - var match = str.match(/^\s*function (.+)\(/); - return match ? match[1] : str; - }, - - error: function error(err, options) { - var originalError = null; - if (typeof err.message === 'string' && err.message !== '') { - if (typeof options === 'string' || (options && options.message)) { - originalError = util.copy(err); - originalError.message = err.message; - } - } - err.message = err.message || null; - - if (typeof options === 'string') { - err.message = options; - } else if (typeof options === 'object' && options !== null) { - util.update(err, options); - if (options.message) - err.message = options.message; - if (options.code || options.name) - err.code = options.code || options.name; - if (options.stack) - err.stack = options.stack; - } - - if (typeof Object.defineProperty === 'function') { - Object.defineProperty(err, 'name', {writable: true, enumerable: false}); - Object.defineProperty(err, 'message', {enumerable: true}); - } - - err.name = options && options.name || err.name || err.code || 'Error'; - err.time = new Date(); - - if (originalError) err.originalError = originalError; - - return err; - }, - - /** - * @api private - */ - inherit: function inherit(klass, features) { - var newObject = null; - if (features === undefined) { - features = klass; - klass = Object; - newObject = {}; - } else { - var ctor = function ConstructorWrapper() {}; - ctor.prototype = klass.prototype; - newObject = new ctor(); - } - - // constructor not supplied, create pass-through ctor - if (features.constructor === Object) { - features.constructor = function() { - if (klass !== Object) { - return klass.apply(this, arguments); - } - }; - } - - features.constructor.prototype = newObject; - util.update(features.constructor.prototype, features); - features.constructor.__super__ = klass; - return features.constructor; - }, - - /** - * @api private - */ - mixin: function mixin() { - var klass = arguments[0]; - for (var i = 1; i < arguments.length; i++) { - // jshint forin:false - for (var prop in arguments[i].prototype) { - var fn = arguments[i].prototype[prop]; - if (prop !== 'constructor') { - klass.prototype[prop] = fn; - } - } - } - return klass; - }, - - /** - * @api private - */ - hideProperties: function hideProperties(obj, props) { - if (typeof Object.defineProperty !== 'function') return; - - util.arrayEach(props, function (key) { - Object.defineProperty(obj, key, { - enumerable: false, writable: true, configurable: true }); - }); - }, - - /** - * @api private - */ - property: function property(obj, name, value, enumerable, isValue) { - var opts = { - configurable: true, - enumerable: enumerable !== undefined ? enumerable : true - }; - if (typeof value === 'function' && !isValue) { - opts.get = value; - } - else { - opts.value = value; opts.writable = true; - } - - Object.defineProperty(obj, name, opts); - }, - - /** - * @api private - */ - memoizedProperty: function memoizedProperty(obj, name, get, enumerable) { - var cachedValue = null; - - // build enumerable attribute for each value with lazy accessor. - util.property(obj, name, function() { - if (cachedValue === null) { - cachedValue = get(); - } - return cachedValue; - }, enumerable); - }, - - /** - * TODO Remove in major version revision - * This backfill populates response data without the - * top-level payload name. - * - * @api private - */ - hoistPayloadMember: function hoistPayloadMember(resp) { - var req = resp.request; - var operation = req.operation; - var output = req.service.api.operations[operation].output; - if (output.payload) { - var payloadMember = output.members[output.payload]; - var responsePayload = resp.data[output.payload]; - if (payloadMember.type === 'structure') { - util.each(responsePayload, function(key, value) { - util.property(resp.data, key, value, false); - }); - } - } - }, - - /** - * Compute SHA-256 checksums of streams - * - * @api private - */ - computeSha256: function computeSha256(body, done) { - if (util.isNode()) { - var Stream = util.stream.Stream; - var fs = __webpack_require__(6); - if (body instanceof Stream) { - if (typeof body.path === 'string') { // assume file object - var settings = {}; - if (typeof body.start === 'number') { - settings.start = body.start; - } - if (typeof body.end === 'number') { - settings.end = body.end; - } - body = fs.createReadStream(body.path, settings); - } else { // TODO support other stream types - return done(new Error('Non-file stream objects are ' + - 'not supported with SigV4')); - } - } - } - - util.crypto.sha256(body, 'hex', function(err, sha) { - if (err) done(err); - else done(null, sha); - }); - }, - - /** - * @api private - */ - isClockSkewed: function isClockSkewed(serverTime) { - if (serverTime) { - util.property(AWS.config, 'isClockSkewed', - Math.abs(new Date().getTime() - serverTime) >= 300000, false); - return AWS.config.isClockSkewed; - } - }, - - applyClockOffset: function applyClockOffset(serverTime) { - if (serverTime) - AWS.config.systemClockOffset = serverTime - new Date().getTime(); - }, - - /** - * @api private - */ - extractRequestId: function extractRequestId(resp) { - var requestId = resp.httpResponse.headers['x-amz-request-id'] || - resp.httpResponse.headers['x-amzn-requestid']; - - if (!requestId && resp.data && resp.data.ResponseMetadata) { - requestId = resp.data.ResponseMetadata.RequestId; - } - - if (requestId) { - resp.requestId = requestId; - } - - if (resp.error) { - resp.error.requestId = requestId; - } - }, - - /** - * @api private - */ - addPromises: function addPromises(constructors, PromiseDependency) { - if (PromiseDependency === undefined && AWS && AWS.config) { - PromiseDependency = AWS.config.getPromisesDependency(); - } - if (PromiseDependency === undefined && typeof Promise !== 'undefined') { - PromiseDependency = Promise; - } - if (typeof PromiseDependency !== 'function') var deletePromises = true; - if (!Array.isArray(constructors)) constructors = [constructors]; - - for (var ind = 0; ind < constructors.length; ind++) { - var constructor = constructors[ind]; - if (deletePromises) { - if (constructor.deletePromisesFromClass) { - constructor.deletePromisesFromClass(); - } - } else if (constructor.addPromisesToClass) { - constructor.addPromisesToClass(PromiseDependency); - } - } - }, - - /** - * @api private - */ - promisifyMethod: function promisifyMethod(methodName, PromiseDependency) { - return function promise() { - var self = this; - return new PromiseDependency(function(resolve, reject) { - self[methodName](function(err, data) { - if (err) { - reject(err); - } else { - resolve(data); - } - }); - }); - }; - }, - - /** - * @api private - */ - isDualstackAvailable: function isDualstackAvailable(service) { - if (!service) return false; - var metadata = __webpack_require__(7); - if (typeof service !== 'string') service = service.serviceIdentifier; - if (typeof service !== 'string' || !metadata.hasOwnProperty(service)) return false; - return !!metadata[service].dualstackAvailable; - }, - - /** - * @api private - */ - calculateRetryDelay: function calculateRetryDelay(retryCount, retryDelayOptions) { - if (!retryDelayOptions) retryDelayOptions = {}; - var customBackoff = retryDelayOptions.customBackoff || null; - if (typeof customBackoff === 'function') { - return customBackoff(retryCount); - } - var base = typeof retryDelayOptions.base === 'number' ? retryDelayOptions.base : 100; - var delay = Math.random() * (Math.pow(2, retryCount) * base); - return delay; - }, - - /** - * @api private - */ - handleRequestWithRetries: function handleRequestWithRetries(httpRequest, options, cb) { - if (!options) options = {}; - var http = AWS.HttpClient.getInstance(); - var httpOptions = options.httpOptions || {}; - var retryCount = 0; - - var errCallback = function(err) { - var maxRetries = options.maxRetries || 0; - if (err && err.code === 'TimeoutError') err.retryable = true; - if (err && err.retryable && retryCount < maxRetries) { - retryCount++; - var delay = util.calculateRetryDelay(retryCount, options.retryDelayOptions); - setTimeout(sendRequest, delay + (err.retryAfter || 0)); - } else { - cb(err); - } - }; - - var sendRequest = function() { - var data = ''; - http.handleRequest(httpRequest, httpOptions, function(httpResponse) { - httpResponse.on('data', function(chunk) { data += chunk.toString(); }); - httpResponse.on('end', function() { - var statusCode = httpResponse.statusCode; - if (statusCode < 300) { - cb(null, data); - } else { - var retryAfter = parseInt(httpResponse.headers['retry-after'], 10) * 1000 || 0; - var err = util.error(new Error(), - { retryable: statusCode >= 500 || statusCode === 429 } - ); - if (retryAfter && err.retryable) err.retryAfter = retryAfter; - errCallback(err); - } - }); - }, errCallback); - }; - - AWS.util.defer(sendRequest); - }, - - /** - * @api private - */ - uuid: { - v4: function uuidV4() { - return __webpack_require__(8).v4(); - } - }, - - /** - * @api private - */ - convertPayloadToString: function convertPayloadToString(resp) { - var req = resp.request; - var operation = req.operation; - var rules = req.service.api.operations[operation].output || {}; - if (rules.payload && resp.data[rules.payload]) { - resp.data[rules.payload] = resp.data[rules.payload].toString(); - } - }, - - /** - * @api private - */ - defer: function defer(callback) { - if (typeof process === 'object' && typeof process.nextTick === 'function') { - process.nextTick(callback); - } else if (typeof setImmediate === 'function') { - setImmediate(callback); - } else { - setTimeout(callback, 0); - } - }, - - /** - * @api private - */ - defaultProfile: 'default', - - /** - * @api private - */ - configOptInEnv: 'AWS_SDK_LOAD_CONFIG', - - /** - * @api private - */ - sharedCredentialsFileEnv: 'AWS_SHARED_CREDENTIALS_FILE', - - /** - * @api private - */ - sharedConfigFileEnv: 'AWS_CONFIG_FILE' - }; - - module.exports = util; - - /* WEBPACK VAR INJECTION */}.call(exports, __webpack_require__(3), __webpack_require__(4).setImmediate)) - -/***/ }), -/* 3 */ -/***/ (function(module, exports) { - - // shim for using process in browser - var process = module.exports = {}; - - // cached from whatever global is present so that test runners that stub it - // don't break things. But we need to wrap it in a try catch in case it is - // wrapped in strict mode code which doesn't define any globals. It's inside a - // function because try/catches deoptimize in certain engines. - - var cachedSetTimeout; - var cachedClearTimeout; - - function defaultSetTimout() { - throw new Error('setTimeout has not been defined'); - } - function defaultClearTimeout () { - throw new Error('clearTimeout has not been defined'); - } - (function () { - try { - if (typeof setTimeout === 'function') { - cachedSetTimeout = setTimeout; - } else { - cachedSetTimeout = defaultSetTimout; - } - } catch (e) { - cachedSetTimeout = defaultSetTimout; - } - try { - if (typeof clearTimeout === 'function') { - cachedClearTimeout = clearTimeout; - } else { - cachedClearTimeout = defaultClearTimeout; - } - } catch (e) { - cachedClearTimeout = defaultClearTimeout; - } - } ()) - function runTimeout(fun) { - if (cachedSetTimeout === setTimeout) { - //normal enviroments in sane situations - return setTimeout(fun, 0); - } - // if setTimeout wasn't available but was latter defined - if ((cachedSetTimeout === defaultSetTimout || !cachedSetTimeout) && setTimeout) { - cachedSetTimeout = setTimeout; - return setTimeout(fun, 0); - } - try { - // when when somebody has screwed with setTimeout but no I.E. maddness - return cachedSetTimeout(fun, 0); - } catch(e){ - try { - // When we are in I.E. but the script has been evaled so I.E. doesn't trust the global object when called normally - return cachedSetTimeout.call(null, fun, 0); - } catch(e){ - // same as above but when it's a version of I.E. that must have the global object for 'this', hopfully our context correct otherwise it will throw a global error - return cachedSetTimeout.call(this, fun, 0); - } - } - - - } - function runClearTimeout(marker) { - if (cachedClearTimeout === clearTimeout) { - //normal enviroments in sane situations - return clearTimeout(marker); - } - // if clearTimeout wasn't available but was latter defined - if ((cachedClearTimeout === defaultClearTimeout || !cachedClearTimeout) && clearTimeout) { - cachedClearTimeout = clearTimeout; - return clearTimeout(marker); - } - try { - // when when somebody has screwed with setTimeout but no I.E. maddness - return cachedClearTimeout(marker); - } catch (e){ - try { - // When we are in I.E. but the script has been evaled so I.E. doesn't trust the global object when called normally - return cachedClearTimeout.call(null, marker); - } catch (e){ - // same as above but when it's a version of I.E. that must have the global object for 'this', hopfully our context correct otherwise it will throw a global error. - // Some versions of I.E. have different rules for clearTimeout vs setTimeout - return cachedClearTimeout.call(this, marker); - } - } - - - - } - var queue = []; - var draining = false; - var currentQueue; - var queueIndex = -1; - - function cleanUpNextTick() { - if (!draining || !currentQueue) { - return; - } - draining = false; - if (currentQueue.length) { - queue = currentQueue.concat(queue); - } else { - queueIndex = -1; - } - if (queue.length) { - drainQueue(); - } - } - - function drainQueue() { - if (draining) { - return; - } - var timeout = runTimeout(cleanUpNextTick); - draining = true; - - var len = queue.length; - while(len) { - currentQueue = queue; - queue = []; - while (++queueIndex < len) { - if (currentQueue) { - currentQueue[queueIndex].run(); - } - } - queueIndex = -1; - len = queue.length; - } - currentQueue = null; - draining = false; - runClearTimeout(timeout); - } - - process.nextTick = function (fun) { - var args = new Array(arguments.length - 1); - if (arguments.length > 1) { - for (var i = 1; i < arguments.length; i++) { - args[i - 1] = arguments[i]; - } - } - queue.push(new Item(fun, args)); - if (queue.length === 1 && !draining) { - runTimeout(drainQueue); - } - }; - - // v8 likes predictible objects - function Item(fun, array) { - this.fun = fun; - this.array = array; - } - Item.prototype.run = function () { - this.fun.apply(null, this.array); - }; - process.title = 'browser'; - process.browser = true; - process.env = {}; - process.argv = []; - process.version = ''; // empty string to avoid regexp issues - process.versions = {}; - - function noop() {} - - process.on = noop; - process.addListener = noop; - process.once = noop; - process.off = noop; - process.removeListener = noop; - process.removeAllListeners = noop; - process.emit = noop; - process.prependListener = noop; - process.prependOnceListener = noop; - - process.listeners = function (name) { return [] } - - process.binding = function (name) { - throw new Error('process.binding is not supported'); - }; - - process.cwd = function () { return '/' }; - process.chdir = function (dir) { - throw new Error('process.chdir is not supported'); - }; - process.umask = function() { return 0; }; - - -/***/ }), -/* 4 */ -/***/ (function(module, exports, __webpack_require__) { - - var apply = Function.prototype.apply; - - // DOM APIs, for completeness - - exports.setTimeout = function() { - return new Timeout(apply.call(setTimeout, window, arguments), clearTimeout); - }; - exports.setInterval = function() { - return new Timeout(apply.call(setInterval, window, arguments), clearInterval); - }; - exports.clearTimeout = - exports.clearInterval = function(timeout) { - if (timeout) { - timeout.close(); - } - }; - - function Timeout(id, clearFn) { - this._id = id; - this._clearFn = clearFn; - } - Timeout.prototype.unref = Timeout.prototype.ref = function() {}; - Timeout.prototype.close = function() { - this._clearFn.call(window, this._id); - }; - - // Does not start the time, just sets up the members needed. - exports.enroll = function(item, msecs) { - clearTimeout(item._idleTimeoutId); - item._idleTimeout = msecs; - }; - - exports.unenroll = function(item) { - clearTimeout(item._idleTimeoutId); - item._idleTimeout = -1; - }; - - exports._unrefActive = exports.active = function(item) { - clearTimeout(item._idleTimeoutId); - - var msecs = item._idleTimeout; - if (msecs >= 0) { - item._idleTimeoutId = setTimeout(function onTimeout() { - if (item._onTimeout) - item._onTimeout(); - }, msecs); - } - }; - - // setimmediate attaches itself to the global object - __webpack_require__(5); - exports.setImmediate = setImmediate; - exports.clearImmediate = clearImmediate; - - -/***/ }), -/* 5 */ -/***/ (function(module, exports, __webpack_require__) { - - /* WEBPACK VAR INJECTION */(function(global, process) {(function (global, undefined) { - "use strict"; - - if (global.setImmediate) { - return; - } - - var nextHandle = 1; // Spec says greater than zero - var tasksByHandle = {}; - var currentlyRunningATask = false; - var doc = global.document; - var registerImmediate; - - function setImmediate(callback) { - // Callback can either be a function or a string - if (typeof callback !== "function") { - callback = new Function("" + callback); - } - // Copy function arguments - var args = new Array(arguments.length - 1); - for (var i = 0; i < args.length; i++) { - args[i] = arguments[i + 1]; - } - // Store and register the task - var task = { callback: callback, args: args }; - tasksByHandle[nextHandle] = task; - registerImmediate(nextHandle); - return nextHandle++; - } - - function clearImmediate(handle) { - delete tasksByHandle[handle]; - } - - function run(task) { - var callback = task.callback; - var args = task.args; - switch (args.length) { - case 0: - callback(); - break; - case 1: - callback(args[0]); - break; - case 2: - callback(args[0], args[1]); - break; - case 3: - callback(args[0], args[1], args[2]); - break; - default: - callback.apply(undefined, args); - break; - } - } - - function runIfPresent(handle) { - // From the spec: "Wait until any invocations of this algorithm started before this one have completed." - // So if we're currently running a task, we'll need to delay this invocation. - if (currentlyRunningATask) { - // Delay by doing a setTimeout. setImmediate was tried instead, but in Firefox 7 it generated a - // "too much recursion" error. - setTimeout(runIfPresent, 0, handle); - } else { - var task = tasksByHandle[handle]; - if (task) { - currentlyRunningATask = true; - try { - run(task); - } finally { - clearImmediate(handle); - currentlyRunningATask = false; - } - } - } - } - - function installNextTickImplementation() { - registerImmediate = function(handle) { - process.nextTick(function () { runIfPresent(handle); }); - }; - } - - function canUsePostMessage() { - // The test against `importScripts` prevents this implementation from being installed inside a web worker, - // where `global.postMessage` means something completely different and can't be used for this purpose. - if (global.postMessage && !global.importScripts) { - var postMessageIsAsynchronous = true; - var oldOnMessage = global.onmessage; - global.onmessage = function() { - postMessageIsAsynchronous = false; - }; - global.postMessage("", "*"); - global.onmessage = oldOnMessage; - return postMessageIsAsynchronous; - } - } - - function installPostMessageImplementation() { - // Installs an event handler on `global` for the `message` event: see - // * https://developer.mozilla.org/en/DOM/window.postMessage - // * http://www.whatwg.org/specs/web-apps/current-work/multipage/comms.html#crossDocumentMessages - - var messagePrefix = "setImmediate$" + Math.random() + "$"; - var onGlobalMessage = function(event) { - if (event.source === global && - typeof event.data === "string" && - event.data.indexOf(messagePrefix) === 0) { - runIfPresent(+event.data.slice(messagePrefix.length)); - } - }; - - if (global.addEventListener) { - global.addEventListener("message", onGlobalMessage, false); - } else { - global.attachEvent("onmessage", onGlobalMessage); - } - - registerImmediate = function(handle) { - global.postMessage(messagePrefix + handle, "*"); - }; - } - - function installMessageChannelImplementation() { - var channel = new MessageChannel(); - channel.port1.onmessage = function(event) { - var handle = event.data; - runIfPresent(handle); - }; - - registerImmediate = function(handle) { - channel.port2.postMessage(handle); - }; - } - - function installReadyStateChangeImplementation() { - var html = doc.documentElement; - registerImmediate = function(handle) { - // Create a ` - -## methods - -`base64js` has three exposed functions, `byteLength`, `toByteArray` and `fromByteArray`, which both take a single argument. - -* `byteLength` - Takes a base64 string and returns length of byte array -* `toByteArray` - Takes a base64 string and returns a byte array -* `fromByteArray` - Takes a byte array and returns a base64 string - -## license - -MIT diff --git a/workshops/monte-carlo-on-ec2-spot-fleet/src/web/node_modules/base64-js/base64js.min.js b/workshops/monte-carlo-on-ec2-spot-fleet/src/web/node_modules/base64-js/base64js.min.js deleted file mode 100644 index 84db5042..00000000 --- a/workshops/monte-carlo-on-ec2-spot-fleet/src/web/node_modules/base64-js/base64js.min.js +++ /dev/null @@ -1 +0,0 @@ -(function(r){if(typeof exports==="object"&&typeof module!=="undefined"){module.exports=r()}else if(typeof define==="function"&&define.amd){define([],r)}else{var e;if(typeof window!=="undefined"){e=window}else if(typeof global!=="undefined"){e=global}else if(typeof self!=="undefined"){e=self}else{e=this}e.base64js=r()}})(function(){var r,e,t;return function r(e,t,n){function o(i,a){if(!t[i]){if(!e[i]){var u=typeof require=="function"&&require;if(!a&&u)return u(i,!0);if(f)return f(i,!0);var d=new Error("Cannot find module '"+i+"'");throw d.code="MODULE_NOT_FOUND",d}var c=t[i]={exports:{}};e[i][0].call(c.exports,function(r){var t=e[i][1][r];return o(t?t:r)},c,c.exports,r,e,t,n)}return t[i].exports}var f=typeof require=="function"&&require;for(var i=0;i0){throw new Error("Invalid string. Length must be a multiple of 4")}return r[e-2]==="="?2:r[e-1]==="="?1:0}function c(r){return r.length*3/4-d(r)}function v(r){var e,t,n,i,a;var u=r.length;i=d(r);a=new f(u*3/4-i);t=i>0?u-4:u;var c=0;for(e=0;e>16&255;a[c++]=n>>8&255;a[c++]=n&255}if(i===2){n=o[r.charCodeAt(e)]<<2|o[r.charCodeAt(e+1)]>>4;a[c++]=n&255}else if(i===1){n=o[r.charCodeAt(e)]<<10|o[r.charCodeAt(e+1)]<<4|o[r.charCodeAt(e+2)]>>2;a[c++]=n>>8&255;a[c++]=n&255}return a}function l(r){return n[r>>18&63]+n[r>>12&63]+n[r>>6&63]+n[r&63]}function h(r,e,t){var n;var o=[];for(var f=e;fd?d:u+a))}if(o===1){e=r[t-1];f+=n[e>>2];f+=n[e<<4&63];f+="=="}else if(o===2){e=(r[t-2]<<8)+r[t-1];f+=n[e>>10];f+=n[e>>4&63];f+=n[e<<2&63];f+="="}i.push(f);return i.join("")}},{}]},{},[])("/")}); diff --git a/workshops/monte-carlo-on-ec2-spot-fleet/src/web/node_modules/base64-js/index.js b/workshops/monte-carlo-on-ec2-spot-fleet/src/web/node_modules/base64-js/index.js deleted file mode 100644 index 9d008743..00000000 --- a/workshops/monte-carlo-on-ec2-spot-fleet/src/web/node_modules/base64-js/index.js +++ /dev/null @@ -1,114 +0,0 @@ -'use strict' - -exports.byteLength = byteLength -exports.toByteArray = toByteArray -exports.fromByteArray = fromByteArray - -var lookup = [] -var revLookup = [] -var Arr = typeof Uint8Array !== 'undefined' ? Uint8Array : Array - -var code = 'ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/' -for (var i = 0, len = code.length; i < len; ++i) { - lookup[i] = code[i] - revLookup[code.charCodeAt(i)] = i -} - -revLookup['-'.charCodeAt(0)] = 62 -revLookup['_'.charCodeAt(0)] = 63 - -function placeHoldersCount (b64) { - var len = b64.length - if (len % 4 > 0) { - throw new Error('Invalid string. Length must be a multiple of 4') - } - - // the number of equal signs (place holders) - // if there are two placeholders, than the two characters before it - // represent one byte - // if there is only one, then the three characters before it represent 2 bytes - // this is just a cheap hack to not do indexOf twice - return b64[len - 2] === '=' ? 2 : b64[len - 1] === '=' ? 1 : 0 -} - -function byteLength (b64) { - // base64 is 4/3 + up to two characters of the original data - return (b64.length * 3 / 4) - placeHoldersCount(b64) -} - -function toByteArray (b64) { - var i, l, tmp, placeHolders, arr - var len = b64.length - placeHolders = placeHoldersCount(b64) - - arr = new Arr((len * 3 / 4) - placeHolders) - - // if there are placeholders, only get up to the last complete 4 chars - l = placeHolders > 0 ? len - 4 : len - - var L = 0 - - for (i = 0; i < l; i += 4) { - tmp = (revLookup[b64.charCodeAt(i)] << 18) | (revLookup[b64.charCodeAt(i + 1)] << 12) | (revLookup[b64.charCodeAt(i + 2)] << 6) | revLookup[b64.charCodeAt(i + 3)] - arr[L++] = (tmp >> 16) & 0xFF - arr[L++] = (tmp >> 8) & 0xFF - arr[L++] = tmp & 0xFF - } - - if (placeHolders === 2) { - tmp = (revLookup[b64.charCodeAt(i)] << 2) | (revLookup[b64.charCodeAt(i + 1)] >> 4) - arr[L++] = tmp & 0xFF - } else if (placeHolders === 1) { - tmp = (revLookup[b64.charCodeAt(i)] << 10) | (revLookup[b64.charCodeAt(i + 1)] << 4) | (revLookup[b64.charCodeAt(i + 2)] >> 2) - arr[L++] = (tmp >> 8) & 0xFF - arr[L++] = tmp & 0xFF - } - - return arr -} - -function tripletToBase64 (num) { - return lookup[num >> 18 & 0x3F] + lookup[num >> 12 & 0x3F] + lookup[num >> 6 & 0x3F] + lookup[num & 0x3F] -} - -function encodeChunk (uint8, start, end) { - var tmp - var output = [] - for (var i = start; i < end; i += 3) { - tmp = (uint8[i] << 16) + (uint8[i + 1] << 8) + (uint8[i + 2]) - output.push(tripletToBase64(tmp)) - } - return output.join('') -} - -function fromByteArray (uint8) { - var tmp - var len = uint8.length - var extraBytes = len % 3 // if we have 1 byte left, pad 2 bytes - var output = '' - var parts = [] - var maxChunkLength = 16383 // must be multiple of 3 - - // go through the array every three bytes, we'll deal with trailing stuff later - for (var i = 0, len2 = len - extraBytes; i < len2; i += maxChunkLength) { - parts.push(encodeChunk(uint8, i, (i + maxChunkLength) > len2 ? len2 : (i + maxChunkLength))) - } - - // pad the end with zeros, but make sure to not forget the extra bytes - if (extraBytes === 1) { - tmp = uint8[len - 1] - output += lookup[tmp >> 2] - output += lookup[(tmp << 4) & 0x3F] - output += '==' - } else if (extraBytes === 2) { - tmp = (uint8[len - 2] << 8) + (uint8[len - 1]) - output += lookup[tmp >> 10] - output += lookup[(tmp >> 4) & 0x3F] - output += lookup[(tmp << 2) & 0x3F] - output += '=' - } - - parts.push(output) - - return parts.join('') -} diff --git a/workshops/monte-carlo-on-ec2-spot-fleet/src/web/node_modules/base64-js/package.json b/workshops/monte-carlo-on-ec2-spot-fleet/src/web/node_modules/base64-js/package.json deleted file mode 100644 index 91dcfbe4..00000000 --- a/workshops/monte-carlo-on-ec2-spot-fleet/src/web/node_modules/base64-js/package.json +++ /dev/null @@ -1,106 +0,0 @@ -{ - "_args": [ - [ - { - "raw": "base64-js@^1.0.2", - "scope": null, - "escapedName": "base64-js", - "name": "base64-js", - "rawSpec": "^1.0.2", - "spec": ">=1.0.2 <2.0.0", - "type": "range" - }, - "/Users/sdsteve/WebstormProjects/SpotLabNodejs/node_modules/buffer" - ] - ], - "_from": "base64-js@>=1.0.2 <2.0.0", - "_id": "base64-js@1.2.1", - "_inCache": true, - "_location": "/base64-js", - "_nodeVersion": "8.1.2", - "_npmOperationalInternal": { - "host": "s3://npm-registry-packages", - "tmp": "tmp/base64-js-1.2.1.tgz_1498100565880_0.40269751008599997" - }, - "_npmUser": { - "name": "feross", - "email": "feross@feross.org" - }, - "_npmVersion": "5.0.3", - "_phantomChildren": {}, - "_requested": { - "raw": "base64-js@^1.0.2", - "scope": null, - "escapedName": "base64-js", - "name": "base64-js", - "rawSpec": "^1.0.2", - "spec": ">=1.0.2 <2.0.0", - "type": "range" - }, - "_requiredBy": [ - "/buffer" - ], - "_resolved": "https://registry.npmjs.org/base64-js/-/base64-js-1.2.1.tgz", - "_shasum": "a91947da1f4a516ea38e5b4ec0ec3773675e0886", - "_shrinkwrap": null, - "_spec": "base64-js@^1.0.2", - "_where": "/Users/sdsteve/WebstormProjects/SpotLabNodejs/node_modules/buffer", - "author": { - "name": "T. Jameson Little", - "email": "t.jameson.little@gmail.com" - }, - "bugs": { - "url": "https://github.com/beatgammit/base64-js/issues" - }, - "dependencies": {}, - "description": "Base64 encoding/decoding in pure JS", - "devDependencies": { - "benchmark": "^2.1.4", - "browserify": "^14.0.0", - "standard": "*", - "tape": "4.x", - "uglify-js": "^2.8.29" - }, - "directories": {}, - "dist": { - "integrity": "sha512-dwVUVIXsBZXwTuwnXI9RK8sBmgq09NDHzyR9SAph9eqk76gKK2JSQmZARC2zRC81JC2QTtxD0ARU5qTS25gIGw==", - "shasum": "a91947da1f4a516ea38e5b4ec0ec3773675e0886", - "tarball": "https://registry.npmjs.org/base64-js/-/base64-js-1.2.1.tgz" - }, - "files": [ - "test", - "index.js", - "base64js.min.js" - ], - "gitHead": "13d56bffa289ae3f406cb932c927461442a434ba", - "homepage": "https://github.com/beatgammit/base64-js", - "keywords": [ - "base64" - ], - "license": "MIT", - "main": "index.js", - "maintainers": [ - { - "name": "beatgammit", - "email": "t.jameson.little@gmail.com" - }, - { - "name": "feross", - "email": "feross@feross.org" - } - ], - "name": "base64-js", - "optionalDependencies": {}, - "readme": "ERROR: No README data found!", - "repository": { - "type": "git", - "url": "git://github.com/beatgammit/base64-js.git" - }, - "scripts": { - "build": "browserify -s base64js -r ./ | uglifyjs -m > base64js.min.js", - "lint": "standard", - "test": "npm run lint && npm run unit", - "unit": "tape test/*.js" - }, - "version": "1.2.1" -} diff --git a/workshops/monte-carlo-on-ec2-spot-fleet/src/web/node_modules/base64-js/test/big-data.js b/workshops/monte-carlo-on-ec2-spot-fleet/src/web/node_modules/base64-js/test/big-data.js deleted file mode 100644 index be16ebe6..00000000 --- a/workshops/monte-carlo-on-ec2-spot-fleet/src/web/node_modules/base64-js/test/big-data.js +++ /dev/null @@ -1,24 +0,0 @@ -var test = require('tape') -var b64 = require('../') - -test('convert big data to base64', function (t) { - var b64str, arr, i, length - var big = new Uint8Array(64 * 1024 * 1024) - for (i = 0, length = big.length; i < length; ++i) { - big[i] = i % 256 - } - b64str = b64.fromByteArray(big) - arr = b64.toByteArray(b64str) - t.ok(equal(arr, big)) - t.end() -}) - -function equal (a, b) { - var i - var length = a.length - if (length !== b.length) return false - for (i = 0; i < length; ++i) { - if (a[i] !== b[i]) return false - } - return true -} diff --git a/workshops/monte-carlo-on-ec2-spot-fleet/src/web/node_modules/base64-js/test/convert.js b/workshops/monte-carlo-on-ec2-spot-fleet/src/web/node_modules/base64-js/test/convert.js deleted file mode 100644 index d68e105d..00000000 --- a/workshops/monte-carlo-on-ec2-spot-fleet/src/web/node_modules/base64-js/test/convert.js +++ /dev/null @@ -1,48 +0,0 @@ -var test = require('tape') -var b64 = require('../') -var checks = [ - 'a', - 'aa', - 'aaa', - 'hi', - 'hi!', - 'hi!!', - 'sup', - 'sup?', - 'sup?!' -] - -test('convert to base64 and back', function (t) { - t.plan(checks.length * 2) - - for (var i = 0; i < checks.length; i++) { - var check = checks[i] - var b64Str, arr, str - - b64Str = b64.fromByteArray(map(check, function (char) { return char.charCodeAt(0) })) - - arr = b64.toByteArray(b64Str) - str = map(arr, function (byte) { return String.fromCharCode(byte) }).join('') - - t.equal(check, str, 'Checked ' + check) - t.equal(b64.byteLength(b64Str), arr.length, 'Checked length for ' + check) - } -}) - -function map (arr, callback) { - var res = [] - var kValue, mappedValue - - for (var k = 0, len = arr.length; k < len; k++) { - if ((typeof arr === 'string' && !!arr.charAt(k))) { - kValue = arr.charAt(k) - mappedValue = callback(kValue, k, arr) - res[k] = mappedValue - } else if (typeof arr !== 'string' && k in arr) { - kValue = arr[k] - mappedValue = callback(kValue, k, arr) - res[k] = mappedValue - } - } - return res -} diff --git a/workshops/monte-carlo-on-ec2-spot-fleet/src/web/node_modules/base64-js/test/url-safe.js b/workshops/monte-carlo-on-ec2-spot-fleet/src/web/node_modules/base64-js/test/url-safe.js deleted file mode 100644 index 3203b33d..00000000 --- a/workshops/monte-carlo-on-ec2-spot-fleet/src/web/node_modules/base64-js/test/url-safe.js +++ /dev/null @@ -1,18 +0,0 @@ -var test = require('tape') -var b64 = require('../') - -test('decode url-safe style base64 strings', function (t) { - var expected = [0xff, 0xff, 0xbe, 0xff, 0xef, 0xbf, 0xfb, 0xef, 0xff] - - var actual = b64.toByteArray('//++/++/++//') - for (var i = 0; i < actual.length; i++) { - t.equal(actual[i], expected[i]) - } - - actual = b64.toByteArray('__--_--_--__') - for (i = 0; i < actual.length; i++) { - t.equal(actual[i], expected[i]) - } - - t.end() -}) diff --git a/workshops/monte-carlo-on-ec2-spot-fleet/src/web/node_modules/basic-auth/HISTORY.md b/workshops/monte-carlo-on-ec2-spot-fleet/src/web/node_modules/basic-auth/HISTORY.md deleted file mode 100644 index 7c4df519..00000000 --- a/workshops/monte-carlo-on-ec2-spot-fleet/src/web/node_modules/basic-auth/HISTORY.md +++ /dev/null @@ -1,40 +0,0 @@ -1.1.0 / 2016-11-18 -================== - - * Add `auth.parse` for low-level string parsing - -1.0.4 / 2016-05-10 -================== - - * Improve error message when `req` argument is not an object - * Improve error message when `req` missing `headers` property - -1.0.3 / 2015-07-01 -================== - - * Fix regression accepting a Koa context - -1.0.2 / 2015-06-12 -================== - - * Improve error message when `req` argument missing - * perf: enable strict mode - * perf: hoist regular expression - * perf: parse with regular expressions - * perf: remove argument reassignment - -1.0.1 / 2015-05-04 -================== - - * Update readme - -1.0.0 / 2014-07-01 -================== - - * Support empty password - * Support empty username - -0.0.1 / 2013-11-30 -================== - - * Initial release diff --git a/workshops/monte-carlo-on-ec2-spot-fleet/src/web/node_modules/basic-auth/LICENSE b/workshops/monte-carlo-on-ec2-spot-fleet/src/web/node_modules/basic-auth/LICENSE deleted file mode 100644 index 89041f61..00000000 --- a/workshops/monte-carlo-on-ec2-spot-fleet/src/web/node_modules/basic-auth/LICENSE +++ /dev/null @@ -1,24 +0,0 @@ -(The MIT License) - -Copyright (c) 2013 TJ Holowaychuk -Copyright (c) 2014 Jonathan Ong -Copyright (c) 2015-2016 Douglas Christopher Wilson - -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, subject to -the following conditions: - -The above copyright notice and this permission notice shall be -included in all copies or substantial portions of the Software. - -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. diff --git a/workshops/monte-carlo-on-ec2-spot-fleet/src/web/node_modules/basic-auth/README.md b/workshops/monte-carlo-on-ec2-spot-fleet/src/web/node_modules/basic-auth/README.md deleted file mode 100644 index 476c90b1..00000000 --- a/workshops/monte-carlo-on-ec2-spot-fleet/src/web/node_modules/basic-auth/README.md +++ /dev/null @@ -1,100 +0,0 @@ -# basic-auth - -[![NPM Version][npm-image]][npm-url] -[![NPM Downloads][downloads-image]][downloads-url] -[![Node.js Version][node-version-image]][node-version-url] -[![Build Status][travis-image]][travis-url] -[![Test Coverage][coveralls-image]][coveralls-url] - -Generic basic auth Authorization header field parser for whatever. - -## Installation - -This is a [Node.js](https://nodejs.org/en/) module available through the -[npm registry](https://www.npmjs.com/). Installation is done using the -[`npm install` command](https://docs.npmjs.com/getting-started/installing-npm-packages-locally): - -``` -$ npm install basic-auth -``` - -## API - - - -```js -var auth = require('basic-auth') -``` - -### auth(req) - -Get the basic auth credentials from the given request. The `Authorization` -header is parsed and if the header is invalid, `undefined` is returned, -otherwise an object with `name` and `pass` properties. - -### auth.parse(string) - -Parse a basic auth authorization header string. This will return an object -with `name` and `pass` properties, or `undefined` if the string is invalid. - -## Example - -Pass a node request or koa Context object to the module exported. If -parsing fails `undefined` is returned, otherwise an object with -`.name` and `.pass`. - - - -```js -var auth = require('basic-auth') -var user = auth(req) -// => { name: 'something', pass: 'whatever' } -``` - -A header string from any other location can also be parsed with -`auth.parse`, for example a `Proxy-Authorization` header: - - - -```js -var auth = require('basic-auth') -var user = auth.parse(req.getHeader('Proxy-Authorization')) -``` - -### With vanilla node.js http server - -```js -var http = require('http') -var auth = require('basic-auth') - -// Create server -var server = http.createServer(function (req, res) { - var credentials = auth(req) - - if (!credentials || credentials.name !== 'john' || credentials.pass !== 'secret') { - res.statusCode = 401 - res.setHeader('WWW-Authenticate', 'Basic realm="example"') - res.end('Access denied') - } else { - res.end('Access granted') - } -}) - -// Listen -server.listen(3000) -``` - -# License - -[MIT](LICENSE) - -[npm-image]: https://img.shields.io/npm/v/basic-auth.svg -[npm-url]: https://npmjs.org/package/basic-auth -[node-version-image]: https://img.shields.io/node/v/basic-auth.svg -[node-version-url]: https://nodejs.org/en/download -[travis-image]: https://img.shields.io/travis/jshttp/basic-auth/master.svg -[travis-url]: https://travis-ci.org/jshttp/basic-auth -[coveralls-image]: https://img.shields.io/coveralls/jshttp/basic-auth/master.svg -[coveralls-url]: https://coveralls.io/r/jshttp/basic-auth?branch=master -[downloads-image]: https://img.shields.io/npm/dm/basic-auth.svg -[downloads-url]: https://npmjs.org/package/basic-auth diff --git a/workshops/monte-carlo-on-ec2-spot-fleet/src/web/node_modules/basic-auth/index.js b/workshops/monte-carlo-on-ec2-spot-fleet/src/web/node_modules/basic-auth/index.js deleted file mode 100644 index 652cbdb3..00000000 --- a/workshops/monte-carlo-on-ec2-spot-fleet/src/web/node_modules/basic-auth/index.js +++ /dev/null @@ -1,126 +0,0 @@ -/*! - * basic-auth - * Copyright(c) 2013 TJ Holowaychuk - * Copyright(c) 2014 Jonathan Ong - * Copyright(c) 2015-2016 Douglas Christopher Wilson - * MIT Licensed - */ - -'use strict' - -/** - * Module exports. - * @public - */ - -module.exports = auth -module.exports.parse = parse - -/** - * RegExp for basic auth credentials - * - * credentials = auth-scheme 1*SP token68 - * auth-scheme = "Basic" ; case insensitive - * token68 = 1*( ALPHA / DIGIT / "-" / "." / "_" / "~" / "+" / "/" ) *"=" - * @private - */ - -var CREDENTIALS_REGEXP = /^ *(?:[Bb][Aa][Ss][Ii][Cc]) +([A-Za-z0-9._~+/-]+=*) *$/ - -/** - * RegExp for basic auth user/pass - * - * user-pass = userid ":" password - * userid = * - * password = *TEXT - * @private - */ - -var USER_PASS_REGEXP = /^([^:]*):(.*)$/ - -/** - * Parse the Authorization header field of a request. - * - * @param {object} req - * @return {object} with .name and .pass - * @public - */ - -function auth (req) { - if (!req) { - throw new TypeError('argument req is required') - } - - if (typeof req !== 'object') { - throw new TypeError('argument req is required to be an object') - } - - // get header - var header = getAuthorization(req.req || req) - - // parse header - return parse(header) -} - -/** - * Decode base64 string. - * @private - */ - -function decodeBase64 (str) { - return new Buffer(str, 'base64').toString() -} - -/** - * Get the Authorization header from request object. - * @private - */ - -function getAuthorization (req) { - if (!req.headers || typeof req.headers !== 'object') { - throw new TypeError('argument req is required to have headers property') - } - - return req.headers.authorization -} - -/** - * Parse basic auth to object. - * - * @param {string} string - * @return {object} - * @public - */ - -function parse (string) { - if (typeof string !== 'string') { - return undefined - } - - // parse header - var match = CREDENTIALS_REGEXP.exec(string) - - if (!match) { - return undefined - } - - // decode user pass - var userPass = USER_PASS_REGEXP.exec(decodeBase64(match[1])) - - if (!userPass) { - return undefined - } - - // return credentials object - return new Credentials(userPass[1], userPass[2]) -} - -/** - * Object to represent user credentials. - * @private - */ - -function Credentials (name, pass) { - this.name = name - this.pass = pass -} diff --git a/workshops/monte-carlo-on-ec2-spot-fleet/src/web/node_modules/basic-auth/package.json b/workshops/monte-carlo-on-ec2-spot-fleet/src/web/node_modules/basic-auth/package.json deleted file mode 100644 index 25059ce6..00000000 --- a/workshops/monte-carlo-on-ec2-spot-fleet/src/web/node_modules/basic-auth/package.json +++ /dev/null @@ -1,115 +0,0 @@ -{ - "_args": [ - [ - { - "raw": "basic-auth@~1.1.0", - "scope": null, - "escapedName": "basic-auth", - "name": "basic-auth", - "rawSpec": "~1.1.0", - "spec": ">=1.1.0 <1.2.0", - "type": "range" - }, - "/Users/sdsteve/WebstormProjects/SpotLabNodejs/node_modules/morgan" - ] - ], - "_from": "basic-auth@>=1.1.0 <1.2.0", - "_id": "basic-auth@1.1.0", - "_inCache": true, - "_location": "/basic-auth", - "_npmOperationalInternal": { - "host": "packages-18-east.internal.npmjs.com", - "tmp": "tmp/basic-auth-1.1.0.tgz_1479495426183_0.6680189804174006" - }, - "_npmUser": { - "name": "dougwilson", - "email": "doug@somethingdoug.com" - }, - "_npmVersion": "1.4.28", - "_phantomChildren": {}, - "_requested": { - "raw": "basic-auth@~1.1.0", - "scope": null, - "escapedName": "basic-auth", - "name": "basic-auth", - "rawSpec": "~1.1.0", - "spec": ">=1.1.0 <1.2.0", - "type": "range" - }, - "_requiredBy": [ - "/morgan" - ], - "_resolved": "https://registry.npmjs.org/basic-auth/-/basic-auth-1.1.0.tgz", - "_shasum": "45221ee429f7ee1e5035be3f51533f1cdfd29884", - "_shrinkwrap": null, - "_spec": "basic-auth@~1.1.0", - "_where": "/Users/sdsteve/WebstormProjects/SpotLabNodejs/node_modules/morgan", - "bugs": { - "url": "https://github.com/jshttp/basic-auth/issues" - }, - "dependencies": {}, - "description": "node.js basic auth parser", - "devDependencies": { - "eslint": "3.10.2", - "eslint-config-standard": "6.2.1", - "eslint-plugin-markdown": "1.0.0-beta.3", - "eslint-plugin-promise": "3.4.0", - "eslint-plugin-standard": "2.0.1", - "istanbul": "0.4.5", - "mocha": "1.21.5" - }, - "directories": {}, - "dist": { - "shasum": "45221ee429f7ee1e5035be3f51533f1cdfd29884", - "tarball": "https://registry.npmjs.org/basic-auth/-/basic-auth-1.1.0.tgz" - }, - "engines": { - "node": ">= 0.6" - }, - "files": [ - "HISTORY.md", - "LICENSE", - "index.js" - ], - "gitHead": "5a0fcd9f4dbf72e2a105d4e815987d3492925875", - "homepage": "https://github.com/jshttp/basic-auth", - "keywords": [ - "basic", - "auth", - "authorization", - "basicauth" - ], - "license": "MIT", - "maintainers": [ - { - "name": "dougwilson", - "email": "doug@somethingdoug.com" - }, - { - "name": "jonathanong", - "email": "jonathanrichardong@gmail.com" - }, - { - "name": "jongleberry", - "email": "jonathanrichardong@gmail.com" - }, - { - "name": "tjholowaychuk", - "email": "tj@vision-media.ca" - } - ], - "name": "basic-auth", - "optionalDependencies": {}, - "readme": "ERROR: No README data found!", - "repository": { - "type": "git", - "url": "git+https://github.com/jshttp/basic-auth.git" - }, - "scripts": { - "lint": "eslint --plugin markdown --ext js,md .", - "test": "mocha --check-leaks --reporter spec --bail", - "test-cov": "istanbul cover node_modules/mocha/bin/_mocha -- --reporter dot --check-leaks test/", - "test-travis": "istanbul cover node_modules/mocha/bin/_mocha --report lcovonly -- --reporter spec --check-leaks test/" - }, - "version": "1.1.0" -} diff --git a/workshops/monte-carlo-on-ec2-spot-fleet/src/web/node_modules/body-parser/HISTORY.md b/workshops/monte-carlo-on-ec2-spot-fleet/src/web/node_modules/body-parser/HISTORY.md deleted file mode 100644 index 6bbd94a8..00000000 --- a/workshops/monte-carlo-on-ec2-spot-fleet/src/web/node_modules/body-parser/HISTORY.md +++ /dev/null @@ -1,522 +0,0 @@ -1.17.2 / 2017-05-17 -=================== - - * deps: debug@2.6.7 - - Fix `DEBUG_MAX_ARRAY_LENGTH` - - deps: ms@2.0.0 - * deps: type-is@~1.6.15 - - deps: mime-types@~2.1.15 - -1.17.1 / 2017-03-06 -=================== - - * deps: qs@6.4.0 - - Fix regression parsing keys starting with `[` - -1.17.0 / 2017-03-01 -=================== - - * deps: http-errors@~1.6.1 - - Make `message` property enumerable for `HttpError`s - - deps: setprototypeof@1.0.3 - * deps: qs@6.3.1 - - Fix compacting nested arrays - -1.16.1 / 2017-02-10 -=================== - - * deps: debug@2.6.1 - - Fix deprecation messages in WebStorm and other editors - - Undeprecate `DEBUG_FD` set to `1` or `2` - -1.16.0 / 2017-01-17 -=================== - - * deps: debug@2.6.0 - - Allow colors in workers - - Deprecated `DEBUG_FD` environment variable - - Fix error when running under React Native - - Use same color for same namespace - - deps: ms@0.7.2 - * deps: http-errors@~1.5.1 - - deps: inherits@2.0.3 - - deps: setprototypeof@1.0.2 - - deps: statuses@'>= 1.3.1 < 2' - * deps: iconv-lite@0.4.15 - - Added encoding MS-31J - - Added encoding MS-932 - - Added encoding MS-936 - - Added encoding MS-949 - - Added encoding MS-950 - - Fix GBK/GB18030 handling of Euro character - * deps: qs@6.2.1 - - Fix array parsing from skipping empty values - * deps: raw-body@~2.2.0 - - deps: iconv-lite@0.4.15 - * deps: type-is@~1.6.14 - - deps: mime-types@~2.1.13 - -1.15.2 / 2016-06-19 -=================== - - * deps: bytes@2.4.0 - * deps: content-type@~1.0.2 - - perf: enable strict mode - * deps: http-errors@~1.5.0 - - Use `setprototypeof` module to replace `__proto__` setting - - deps: statuses@'>= 1.3.0 < 2' - - perf: enable strict mode - * deps: qs@6.2.0 - * deps: raw-body@~2.1.7 - - deps: bytes@2.4.0 - - perf: remove double-cleanup on happy path - * deps: type-is@~1.6.13 - - deps: mime-types@~2.1.11 - -1.15.1 / 2016-05-05 -=================== - - * deps: bytes@2.3.0 - - Drop partial bytes on all parsed units - - Fix parsing byte string that looks like hex - * deps: raw-body@~2.1.6 - - deps: bytes@2.3.0 - * deps: type-is@~1.6.12 - - deps: mime-types@~2.1.10 - -1.15.0 / 2016-02-10 -=================== - - * deps: http-errors@~1.4.0 - - Add `HttpError` export, for `err instanceof createError.HttpError` - - deps: inherits@2.0.1 - - deps: statuses@'>= 1.2.1 < 2' - * deps: qs@6.1.0 - * deps: type-is@~1.6.11 - - deps: mime-types@~2.1.9 - -1.14.2 / 2015-12-16 -=================== - - * deps: bytes@2.2.0 - * deps: iconv-lite@0.4.13 - * deps: qs@5.2.0 - * deps: raw-body@~2.1.5 - - deps: bytes@2.2.0 - - deps: iconv-lite@0.4.13 - * deps: type-is@~1.6.10 - - deps: mime-types@~2.1.8 - -1.14.1 / 2015-09-27 -=================== - - * Fix issue where invalid charset results in 400 when `verify` used - * deps: iconv-lite@0.4.12 - - Fix CESU-8 decoding in Node.js 4.x - * deps: raw-body@~2.1.4 - - Fix masking critical errors from `iconv-lite` - - deps: iconv-lite@0.4.12 - * deps: type-is@~1.6.9 - - deps: mime-types@~2.1.7 - -1.14.0 / 2015-09-16 -=================== - - * Fix JSON strict parse error to match syntax errors - * Provide static `require` analysis in `urlencoded` parser - * deps: depd@~1.1.0 - - Support web browser loading - * deps: qs@5.1.0 - * deps: raw-body@~2.1.3 - - Fix sync callback when attaching data listener causes sync read - * deps: type-is@~1.6.8 - - Fix type error when given invalid type to match against - - deps: mime-types@~2.1.6 - -1.13.3 / 2015-07-31 -=================== - - * deps: type-is@~1.6.6 - - deps: mime-types@~2.1.4 - -1.13.2 / 2015-07-05 -=================== - - * deps: iconv-lite@0.4.11 - * deps: qs@4.0.0 - - Fix dropping parameters like `hasOwnProperty` - - Fix user-visible incompatibilities from 3.1.0 - - Fix various parsing edge cases - * deps: raw-body@~2.1.2 - - Fix error stack traces to skip `makeError` - - deps: iconv-lite@0.4.11 - * deps: type-is@~1.6.4 - - deps: mime-types@~2.1.2 - - perf: enable strict mode - - perf: remove argument reassignment - -1.13.1 / 2015-06-16 -=================== - - * deps: qs@2.4.2 - - Downgraded from 3.1.0 because of user-visible incompatibilities - -1.13.0 / 2015-06-14 -=================== - - * Add `statusCode` property on `Error`s, in addition to `status` - * Change `type` default to `application/json` for JSON parser - * Change `type` default to `application/x-www-form-urlencoded` for urlencoded parser - * Provide static `require` analysis - * Use the `http-errors` module to generate errors - * deps: bytes@2.1.0 - - Slight optimizations - * deps: iconv-lite@0.4.10 - - The encoding UTF-16 without BOM now defaults to UTF-16LE when detection fails - - Leading BOM is now removed when decoding - * deps: on-finished@~2.3.0 - - Add defined behavior for HTTP `CONNECT` requests - - Add defined behavior for HTTP `Upgrade` requests - - deps: ee-first@1.1.1 - * deps: qs@3.1.0 - - Fix dropping parameters like `hasOwnProperty` - - Fix various parsing edge cases - - Parsed object now has `null` prototype - * deps: raw-body@~2.1.1 - - Use `unpipe` module for unpiping requests - - deps: iconv-lite@0.4.10 - * deps: type-is@~1.6.3 - - deps: mime-types@~2.1.1 - - perf: reduce try block size - - perf: remove bitwise operations - * perf: enable strict mode - * perf: remove argument reassignment - * perf: remove delete call - -1.12.4 / 2015-05-10 -=================== - - * deps: debug@~2.2.0 - * deps: qs@2.4.2 - - Fix allowing parameters like `constructor` - * deps: on-finished@~2.2.1 - * deps: raw-body@~2.0.1 - - Fix a false-positive when unpiping in Node.js 0.8 - - deps: bytes@2.0.1 - * deps: type-is@~1.6.2 - - deps: mime-types@~2.0.11 - -1.12.3 / 2015-04-15 -=================== - - * Slight efficiency improvement when not debugging - * deps: depd@~1.0.1 - * deps: iconv-lite@0.4.8 - - Add encoding alias UNICODE-1-1-UTF-7 - * deps: raw-body@1.3.4 - - Fix hanging callback if request aborts during read - - deps: iconv-lite@0.4.8 - -1.12.2 / 2015-03-16 -=================== - - * deps: qs@2.4.1 - - Fix error when parameter `hasOwnProperty` is present - -1.12.1 / 2015-03-15 -=================== - - * deps: debug@~2.1.3 - - Fix high intensity foreground color for bold - - deps: ms@0.7.0 - * deps: type-is@~1.6.1 - - deps: mime-types@~2.0.10 - -1.12.0 / 2015-02-13 -=================== - - * add `debug` messages - * accept a function for the `type` option - * use `content-type` to parse `Content-Type` headers - * deps: iconv-lite@0.4.7 - - Gracefully support enumerables on `Object.prototype` - * deps: raw-body@1.3.3 - - deps: iconv-lite@0.4.7 - * deps: type-is@~1.6.0 - - fix argument reassignment - - fix false-positives in `hasBody` `Transfer-Encoding` check - - support wildcard for both type and subtype (`*/*`) - - deps: mime-types@~2.0.9 - -1.11.0 / 2015-01-30 -=================== - - * make internal `extended: true` depth limit infinity - * deps: type-is@~1.5.6 - - deps: mime-types@~2.0.8 - -1.10.2 / 2015-01-20 -=================== - - * deps: iconv-lite@0.4.6 - - Fix rare aliases of single-byte encodings - * deps: raw-body@1.3.2 - - deps: iconv-lite@0.4.6 - -1.10.1 / 2015-01-01 -=================== - - * deps: on-finished@~2.2.0 - * deps: type-is@~1.5.5 - - deps: mime-types@~2.0.7 - -1.10.0 / 2014-12-02 -=================== - - * make internal `extended: true` array limit dynamic - -1.9.3 / 2014-11-21 -================== - - * deps: iconv-lite@0.4.5 - - Fix Windows-31J and X-SJIS encoding support - * deps: qs@2.3.3 - - Fix `arrayLimit` behavior - * deps: raw-body@1.3.1 - - deps: iconv-lite@0.4.5 - * deps: type-is@~1.5.3 - - deps: mime-types@~2.0.3 - -1.9.2 / 2014-10-27 -================== - - * deps: qs@2.3.2 - - Fix parsing of mixed objects and values - -1.9.1 / 2014-10-22 -================== - - * deps: on-finished@~2.1.1 - - Fix handling of pipelined requests - * deps: qs@2.3.0 - - Fix parsing of mixed implicit and explicit arrays - * deps: type-is@~1.5.2 - - deps: mime-types@~2.0.2 - -1.9.0 / 2014-09-24 -================== - - * include the charset in "unsupported charset" error message - * include the encoding in "unsupported content encoding" error message - * deps: depd@~1.0.0 - -1.8.4 / 2014-09-23 -================== - - * fix content encoding to be case-insensitive - -1.8.3 / 2014-09-19 -================== - - * deps: qs@2.2.4 - - Fix issue with object keys starting with numbers truncated - -1.8.2 / 2014-09-15 -================== - - * deps: depd@0.4.5 - -1.8.1 / 2014-09-07 -================== - - * deps: media-typer@0.3.0 - * deps: type-is@~1.5.1 - -1.8.0 / 2014-09-05 -================== - - * make empty-body-handling consistent between chunked requests - - empty `json` produces `{}` - - empty `raw` produces `new Buffer(0)` - - empty `text` produces `''` - - empty `urlencoded` produces `{}` - * deps: qs@2.2.3 - - Fix issue where first empty value in array is discarded - * deps: type-is@~1.5.0 - - fix `hasbody` to be true for `content-length: 0` - -1.7.0 / 2014-09-01 -================== - - * add `parameterLimit` option to `urlencoded` parser - * change `urlencoded` extended array limit to 100 - * respond with 413 when over `parameterLimit` in `urlencoded` - -1.6.7 / 2014-08-29 -================== - - * deps: qs@2.2.2 - - Remove unnecessary cloning - -1.6.6 / 2014-08-27 -================== - - * deps: qs@2.2.0 - - Array parsing fix - - Performance improvements - -1.6.5 / 2014-08-16 -================== - - * deps: on-finished@2.1.0 - -1.6.4 / 2014-08-14 -================== - - * deps: qs@1.2.2 - -1.6.3 / 2014-08-10 -================== - - * deps: qs@1.2.1 - -1.6.2 / 2014-08-07 -================== - - * deps: qs@1.2.0 - - Fix parsing array of objects - -1.6.1 / 2014-08-06 -================== - - * deps: qs@1.1.0 - - Accept urlencoded square brackets - - Accept empty values in implicit array notation - -1.6.0 / 2014-08-05 -================== - - * deps: qs@1.0.2 - - Complete rewrite - - Limits array length to 20 - - Limits object depth to 5 - - Limits parameters to 1,000 - -1.5.2 / 2014-07-27 -================== - - * deps: depd@0.4.4 - - Work-around v8 generating empty stack traces - -1.5.1 / 2014-07-26 -================== - - * deps: depd@0.4.3 - - Fix exception when global `Error.stackTraceLimit` is too low - -1.5.0 / 2014-07-20 -================== - - * deps: depd@0.4.2 - - Add `TRACE_DEPRECATION` environment variable - - Remove non-standard grey color from color output - - Support `--no-deprecation` argument - - Support `--trace-deprecation` argument - * deps: iconv-lite@0.4.4 - - Added encoding UTF-7 - * deps: raw-body@1.3.0 - - deps: iconv-lite@0.4.4 - - Added encoding UTF-7 - - Fix `Cannot switch to old mode now` error on Node.js 0.10+ - * deps: type-is@~1.3.2 - -1.4.3 / 2014-06-19 -================== - - * deps: type-is@1.3.1 - - fix global variable leak - -1.4.2 / 2014-06-19 -================== - - * deps: type-is@1.3.0 - - improve type parsing - -1.4.1 / 2014-06-19 -================== - - * fix urlencoded extended deprecation message - -1.4.0 / 2014-06-19 -================== - - * add `text` parser - * add `raw` parser - * check accepted charset in content-type (accepts utf-8) - * check accepted encoding in content-encoding (accepts identity) - * deprecate `bodyParser()` middleware; use `.json()` and `.urlencoded()` as needed - * deprecate `urlencoded()` without provided `extended` option - * lazy-load urlencoded parsers - * parsers split into files for reduced mem usage - * support gzip and deflate bodies - - set `inflate: false` to turn off - * deps: raw-body@1.2.2 - - Support all encodings from `iconv-lite` - -1.3.1 / 2014-06-11 -================== - - * deps: type-is@1.2.1 - - Switch dependency from mime to mime-types@1.0.0 - -1.3.0 / 2014-05-31 -================== - - * add `extended` option to urlencoded parser - -1.2.2 / 2014-05-27 -================== - - * deps: raw-body@1.1.6 - - assert stream encoding on node.js 0.8 - - assert stream encoding on node.js < 0.10.6 - - deps: bytes@1 - -1.2.1 / 2014-05-26 -================== - - * invoke `next(err)` after request fully read - - prevents hung responses and socket hang ups - -1.2.0 / 2014-05-11 -================== - - * add `verify` option - * deps: type-is@1.2.0 - - support suffix matching - -1.1.2 / 2014-05-11 -================== - - * improve json parser speed - -1.1.1 / 2014-05-11 -================== - - * fix repeated limit parsing with every request - -1.1.0 / 2014-05-10 -================== - - * add `type` option - * deps: pin for safety and consistency - -1.0.2 / 2014-04-14 -================== - - * use `type-is` module - -1.0.1 / 2014-03-20 -================== - - * lower default limits to 100kb diff --git a/workshops/monte-carlo-on-ec2-spot-fleet/src/web/node_modules/body-parser/LICENSE b/workshops/monte-carlo-on-ec2-spot-fleet/src/web/node_modules/body-parser/LICENSE deleted file mode 100644 index 386b7b69..00000000 --- a/workshops/monte-carlo-on-ec2-spot-fleet/src/web/node_modules/body-parser/LICENSE +++ /dev/null @@ -1,23 +0,0 @@ -(The MIT License) - -Copyright (c) 2014 Jonathan Ong -Copyright (c) 2014-2015 Douglas Christopher Wilson - -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, subject to -the following conditions: - -The above copyright notice and this permission notice shall be -included in all copies or substantial portions of the Software. - -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. diff --git a/workshops/monte-carlo-on-ec2-spot-fleet/src/web/node_modules/body-parser/README.md b/workshops/monte-carlo-on-ec2-spot-fleet/src/web/node_modules/body-parser/README.md deleted file mode 100644 index 4fe0304f..00000000 --- a/workshops/monte-carlo-on-ec2-spot-fleet/src/web/node_modules/body-parser/README.md +++ /dev/null @@ -1,422 +0,0 @@ -# body-parser - -[![NPM Version][npm-image]][npm-url] -[![NPM Downloads][downloads-image]][downloads-url] -[![Build Status][travis-image]][travis-url] -[![Test Coverage][coveralls-image]][coveralls-url] -[![Gratipay][gratipay-image]][gratipay-url] - -Node.js body parsing middleware. - -Parse incoming request bodies in a middleware before your handlers, available -under the `req.body` property. - -[Learn about the anatomy of an HTTP transaction in Node.js](https://nodejs.org/en/docs/guides/anatomy-of-an-http-transaction/). - -_This does not handle multipart bodies_, due to their complex and typically -large nature. For multipart bodies, you may be interested in the following -modules: - - * [busboy](https://www.npmjs.org/package/busboy#readme) and - [connect-busboy](https://www.npmjs.org/package/connect-busboy#readme) - * [multiparty](https://www.npmjs.org/package/multiparty#readme) and - [connect-multiparty](https://www.npmjs.org/package/connect-multiparty#readme) - * [formidable](https://www.npmjs.org/package/formidable#readme) - * [multer](https://www.npmjs.org/package/multer#readme) - -This module provides the following parsers: - - * [JSON body parser](#bodyparserjsonoptions) - * [Raw body parser](#bodyparserrawoptions) - * [Text body parser](#bodyparsertextoptions) - * [URL-encoded form body parser](#bodyparserurlencodedoptions) - -Other body parsers you might be interested in: - -- [body](https://www.npmjs.org/package/body#readme) -- [co-body](https://www.npmjs.org/package/co-body#readme) - -## Installation - -```sh -$ npm install body-parser -``` - -## API - - - -```js -var bodyParser = require('body-parser') -``` - -The `bodyParser` object exposes various factories to create middlewares. All -middlewares will populate the `req.body` property with the parsed body when -the `Content-Type` request header matches the `type` option, or an empty -object (`{}`) if there was no body to parse, the `Content-Type` was not matched, -or an error occurred. - -The various errors returned by this module are described in the -[errors section](#errors). - -### bodyParser.json(options) - -Returns middleware that only parses `json` and only looks at requests where -the `Content-Type` header matches the `type` option. This parser accepts any -Unicode encoding of the body and supports automatic inflation of `gzip` and -`deflate` encodings. - -A new `body` object containing the parsed data is populated on the `request` -object after the middleware (i.e. `req.body`). - -#### Options - -The `json` function takes an option `options` object that may contain any of -the following keys: - -##### inflate - -When set to `true`, then deflated (compressed) bodies will be inflated; when -`false`, deflated bodies are rejected. Defaults to `true`. - -##### limit - -Controls the maximum request body size. If this is a number, then the value -specifies the number of bytes; if it is a string, the value is passed to the -[bytes](https://www.npmjs.com/package/bytes) library for parsing. Defaults -to `'100kb'`. - -##### reviver - -The `reviver` option is passed directly to `JSON.parse` as the second -argument. You can find more information on this argument -[in the MDN documentation about JSON.parse](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/JSON/parse#Example.3A_Using_the_reviver_parameter). - -##### strict - -When set to `true`, will only accept arrays and objects; when `false` will -accept anything `JSON.parse` accepts. Defaults to `true`. - -##### type - -The `type` option is used to determine what media type the middleware will -parse. This option can be a function or a string. If a string, `type` option -is passed directly to the [type-is](https://www.npmjs.org/package/type-is#readme) -library and this can be an extension name (like `json`), a mime type (like -`application/json`), or a mime type with a wildcard (like `*/*` or `*/json`). -If a function, the `type` option is called as `fn(req)` and the request is -parsed if it returns a truthy value. Defaults to `application/json`. - -##### verify - -The `verify` option, if supplied, is called as `verify(req, res, buf, encoding)`, -where `buf` is a `Buffer` of the raw request body and `encoding` is the -encoding of the request. The parsing can be aborted by throwing an error. - -### bodyParser.raw(options) - -Returns middleware that parses all bodies as a `Buffer` and only looks at -requests where the `Content-Type` header matches the `type` option. This -parser supports automatic inflation of `gzip` and `deflate` encodings. - -A new `body` object containing the parsed data is populated on the `request` -object after the middleware (i.e. `req.body`). This will be a `Buffer` object -of the body. - -#### Options - -The `raw` function takes an option `options` object that may contain any of -the following keys: - -##### inflate - -When set to `true`, then deflated (compressed) bodies will be inflated; when -`false`, deflated bodies are rejected. Defaults to `true`. - -##### limit - -Controls the maximum request body size. If this is a number, then the value -specifies the number of bytes; if it is a string, the value is passed to the -[bytes](https://www.npmjs.com/package/bytes) library for parsing. Defaults -to `'100kb'`. - -##### type - -The `type` option is used to determine what media type the middleware will -parse. This option can be a function or a string. If a string, `type` option -is passed directly to the [type-is](https://www.npmjs.org/package/type-is#readme) -library and this can be an extension name (like `bin`), a mime type (like -`application/octet-stream`), or a mime type with a wildcard (like `*/*` or -`application/*`). If a function, the `type` option is called as `fn(req)` -and the request is parsed if it returns a truthy value. Defaults to -`application/octet-stream`. - -##### verify - -The `verify` option, if supplied, is called as `verify(req, res, buf, encoding)`, -where `buf` is a `Buffer` of the raw request body and `encoding` is the -encoding of the request. The parsing can be aborted by throwing an error. - -### bodyParser.text(options) - -Returns middleware that parses all bodies as a string and only looks at -requests where the `Content-Type` header matches the `type` option. This -parser supports automatic inflation of `gzip` and `deflate` encodings. - -A new `body` string containing the parsed data is populated on the `request` -object after the middleware (i.e. `req.body`). This will be a string of the -body. - -#### Options - -The `text` function takes an option `options` object that may contain any of -the following keys: - -##### defaultCharset - -Specify the default character set for the text content if the charset is not -specified in the `Content-Type` header of the request. Defaults to `utf-8`. - -##### inflate - -When set to `true`, then deflated (compressed) bodies will be inflated; when -`false`, deflated bodies are rejected. Defaults to `true`. - -##### limit - -Controls the maximum request body size. If this is a number, then the value -specifies the number of bytes; if it is a string, the value is passed to the -[bytes](https://www.npmjs.com/package/bytes) library for parsing. Defaults -to `'100kb'`. - -##### type - -The `type` option is used to determine what media type the middleware will -parse. This option can be a function or a string. If a string, `type` option -is passed directly to the [type-is](https://www.npmjs.org/package/type-is#readme) -library and this can be an extension name (like `txt`), a mime type (like -`text/plain`), or a mime type with a wildcard (like `*/*` or `text/*`). -If a function, the `type` option is called as `fn(req)` and the request is -parsed if it returns a truthy value. Defaults to `text/plain`. - -##### verify - -The `verify` option, if supplied, is called as `verify(req, res, buf, encoding)`, -where `buf` is a `Buffer` of the raw request body and `encoding` is the -encoding of the request. The parsing can be aborted by throwing an error. - -### bodyParser.urlencoded(options) - -Returns middleware that only parses `urlencoded` bodies and only looks at -requests where the `Content-Type` header matches the `type` option. This -parser accepts only UTF-8 encoding of the body and supports automatic -inflation of `gzip` and `deflate` encodings. - -A new `body` object containing the parsed data is populated on the `request` -object after the middleware (i.e. `req.body`). This object will contain -key-value pairs, where the value can be a string or array (when `extended` is -`false`), or any type (when `extended` is `true`). - -#### Options - -The `urlencoded` function takes an option `options` object that may contain -any of the following keys: - -##### extended - -The `extended` option allows to choose between parsing the URL-encoded data -with the `querystring` library (when `false`) or the `qs` library (when -`true`). The "extended" syntax allows for rich objects and arrays to be -encoded into the URL-encoded format, allowing for a JSON-like experience -with URL-encoded. For more information, please -[see the qs library](https://www.npmjs.org/package/qs#readme). - -Defaults to `true`, but using the default has been deprecated. Please -research into the difference between `qs` and `querystring` and choose the -appropriate setting. - -##### inflate - -When set to `true`, then deflated (compressed) bodies will be inflated; when -`false`, deflated bodies are rejected. Defaults to `true`. - -##### limit - -Controls the maximum request body size. If this is a number, then the value -specifies the number of bytes; if it is a string, the value is passed to the -[bytes](https://www.npmjs.com/package/bytes) library for parsing. Defaults -to `'100kb'`. - -##### parameterLimit - -The `parameterLimit` option controls the maximum number of parameters that -are allowed in the URL-encoded data. If a request contains more parameters -than this value, a 413 will be returned to the client. Defaults to `1000`. - -##### type - -The `type` option is used to determine what media type the middleware will -parse. This option can be a function or a string. If a string, `type` option -is passed directly to the [type-is](https://www.npmjs.org/package/type-is#readme) -library and this can be an extension name (like `urlencoded`), a mime type (like -`application/x-www-form-urlencoded`), or a mime type with a wildcard (like -`*/x-www-form-urlencoded`). If a function, the `type` option is called as -`fn(req)` and the request is parsed if it returns a truthy value. Defaults -to `application/x-www-form-urlencoded`. - -##### verify - -The `verify` option, if supplied, is called as `verify(req, res, buf, encoding)`, -where `buf` is a `Buffer` of the raw request body and `encoding` is the -encoding of the request. The parsing can be aborted by throwing an error. - -## Errors - -The middlewares provided by this module create errors depending on the error -condition during parsing. The errors will typically have a `status` property -that contains the suggested HTTP response code and a `body` property containing -the read body, if available. - -The following are the common errors emitted, though any error can come through -for various reasons. - -### content encoding unsupported - -This error will occur when the request had a `Content-Encoding` header that -contained an encoding but the "inflation" option was set to `false`. The -`status` property is set to `415`. - -### request aborted - -This error will occur when the request is aborted by the client before reading -the body has finished. The `received` property will be set to the number of -bytes received before the request was aborted and the `expected` property is -set to the number of expected bytes. The `status` property is set to `400`. - -### request entity too large - -This error will occur when the request body's size is larger than the "limit" -option. The `limit` property will be set to the byte limit and the `length` -property will be set to the request body's length. The `status` property is -set to `413`. - -### request size did not match content length - -This error will occur when the request's length did not match the length from -the `Content-Length` header. This typically occurs when the request is malformed, -typically when the `Content-Length` header was calculated based on characters -instead of bytes. The `status` property is set to `400`. - -### stream encoding should not be set - -This error will occur when something called the `req.setEncoding` method prior -to this middleware. This module operates directly on bytes only and you cannot -call `req.setEncoding` when using this module. The `status` property is set to -`500`. - -### unsupported charset "BOGUS" - -This error will occur when the request had a charset parameter in the -`Content-Type` header, but the `iconv-lite` module does not support it OR the -parser does not support it. The charset is contained in the message as well -as in the `charset` property. The `status` property is set to `415`. - -### unsupported content encoding "bogus" - -This error will occur when the request had a `Content-Encoding` header that -contained an unsupported encoding. The encoding is contained in the message -as well as in the `encoding` property. The `status` property is set to `415`. - -## Examples - -### Express/Connect top-level generic - -This example demonstrates adding a generic JSON and URL-encoded parser as a -top-level middleware, which will parse the bodies of all incoming requests. -This is the simplest setup. - -```js -var express = require('express') -var bodyParser = require('body-parser') - -var app = express() - -// parse application/x-www-form-urlencoded -app.use(bodyParser.urlencoded({ extended: false })) - -// parse application/json -app.use(bodyParser.json()) - -app.use(function (req, res) { - res.setHeader('Content-Type', 'text/plain') - res.write('you posted:\n') - res.end(JSON.stringify(req.body, null, 2)) -}) -``` - -### Express route-specific - -This example demonstrates adding body parsers specifically to the routes that -need them. In general, this is the most recommended way to use body-parser with -Express. - -```js -var express = require('express') -var bodyParser = require('body-parser') - -var app = express() - -// create application/json parser -var jsonParser = bodyParser.json() - -// create application/x-www-form-urlencoded parser -var urlencodedParser = bodyParser.urlencoded({ extended: false }) - -// POST /login gets urlencoded bodies -app.post('/login', urlencodedParser, function (req, res) { - if (!req.body) return res.sendStatus(400) - res.send('welcome, ' + req.body.username) -}) - -// POST /api/users gets JSON bodies -app.post('/api/users', jsonParser, function (req, res) { - if (!req.body) return res.sendStatus(400) - // create user in req.body -}) -``` - -### Change accepted type for parsers - -All the parsers accept a `type` option which allows you to change the -`Content-Type` that the middleware will parse. - -```js -var express = require('express') -var bodyParser = require('body-parser') - -var app = express() - -// parse various different custom JSON types as JSON -app.use(bodyParser.json({ type: 'application/*+json' })) - -// parse some custom thing into a Buffer -app.use(bodyParser.raw({ type: 'application/vnd.custom-type' })) - -// parse an HTML body into a string -app.use(bodyParser.text({ type: 'text/html' })) -``` - -## License - -[MIT](LICENSE) - -[npm-image]: https://img.shields.io/npm/v/body-parser.svg -[npm-url]: https://npmjs.org/package/body-parser -[travis-image]: https://img.shields.io/travis/expressjs/body-parser/master.svg -[travis-url]: https://travis-ci.org/expressjs/body-parser -[coveralls-image]: https://img.shields.io/coveralls/expressjs/body-parser/master.svg -[coveralls-url]: https://coveralls.io/r/expressjs/body-parser?branch=master -[downloads-image]: https://img.shields.io/npm/dm/body-parser.svg -[downloads-url]: https://npmjs.org/package/body-parser -[gratipay-image]: https://img.shields.io/gratipay/dougwilson.svg -[gratipay-url]: https://www.gratipay.com/dougwilson/ diff --git a/workshops/monte-carlo-on-ec2-spot-fleet/src/web/node_modules/body-parser/index.js b/workshops/monte-carlo-on-ec2-spot-fleet/src/web/node_modules/body-parser/index.js deleted file mode 100644 index 93c3a1ff..00000000 --- a/workshops/monte-carlo-on-ec2-spot-fleet/src/web/node_modules/body-parser/index.js +++ /dev/null @@ -1,157 +0,0 @@ -/*! - * body-parser - * Copyright(c) 2014-2015 Douglas Christopher Wilson - * MIT Licensed - */ - -'use strict' - -/** - * Module dependencies. - * @private - */ - -var deprecate = require('depd')('body-parser') - -/** - * Cache of loaded parsers. - * @private - */ - -var parsers = Object.create(null) - -/** - * @typedef Parsers - * @type {function} - * @property {function} json - * @property {function} raw - * @property {function} text - * @property {function} urlencoded - */ - -/** - * Module exports. - * @type {Parsers} - */ - -exports = module.exports = deprecate.function(bodyParser, - 'bodyParser: use individual json/urlencoded middlewares') - -/** - * JSON parser. - * @public - */ - -Object.defineProperty(exports, 'json', { - configurable: true, - enumerable: true, - get: createParserGetter('json') -}) - -/** - * Raw parser. - * @public - */ - -Object.defineProperty(exports, 'raw', { - configurable: true, - enumerable: true, - get: createParserGetter('raw') -}) - -/** - * Text parser. - * @public - */ - -Object.defineProperty(exports, 'text', { - configurable: true, - enumerable: true, - get: createParserGetter('text') -}) - -/** - * URL-encoded parser. - * @public - */ - -Object.defineProperty(exports, 'urlencoded', { - configurable: true, - enumerable: true, - get: createParserGetter('urlencoded') -}) - -/** - * Create a middleware to parse json and urlencoded bodies. - * - * @param {object} [options] - * @return {function} - * @deprecated - * @public - */ - -function bodyParser (options) { - var opts = {} - - // exclude type option - if (options) { - for (var prop in options) { - if (prop !== 'type') { - opts[prop] = options[prop] - } - } - } - - var _urlencoded = exports.urlencoded(opts) - var _json = exports.json(opts) - - return function bodyParser (req, res, next) { - _json(req, res, function (err) { - if (err) return next(err) - _urlencoded(req, res, next) - }) - } -} - -/** - * Create a getter for loading a parser. - * @private - */ - -function createParserGetter (name) { - return function get () { - return loadParser(name) - } -} - -/** - * Load a parser module. - * @private - */ - -function loadParser (parserName) { - var parser = parsers[parserName] - - if (parser !== undefined) { - return parser - } - - // this uses a switch for static require analysis - switch (parserName) { - case 'json': - parser = require('./lib/types/json') - break - case 'raw': - parser = require('./lib/types/raw') - break - case 'text': - parser = require('./lib/types/text') - break - case 'urlencoded': - parser = require('./lib/types/urlencoded') - break - } - - // store to prevent invoking require() - return (parsers[parserName] = parser) -} diff --git a/workshops/monte-carlo-on-ec2-spot-fleet/src/web/node_modules/body-parser/lib/read.js b/workshops/monte-carlo-on-ec2-spot-fleet/src/web/node_modules/body-parser/lib/read.js deleted file mode 100644 index 7011cffe..00000000 --- a/workshops/monte-carlo-on-ec2-spot-fleet/src/web/node_modules/body-parser/lib/read.js +++ /dev/null @@ -1,189 +0,0 @@ -/*! - * body-parser - * Copyright(c) 2014-2015 Douglas Christopher Wilson - * MIT Licensed - */ - -'use strict' - -/** - * Module dependencies. - * @private - */ - -var createError = require('http-errors') -var getBody = require('raw-body') -var iconv = require('iconv-lite') -var onFinished = require('on-finished') -var zlib = require('zlib') - -/** - * Module exports. - */ - -module.exports = read - -/** - * Read a request into a buffer and parse. - * - * @param {object} req - * @param {object} res - * @param {function} next - * @param {function} parse - * @param {function} debug - * @param {object} options - * @private - */ - -function read (req, res, next, parse, debug, options) { - var length - var opts = options - var stream - - // flag as parsed - req._body = true - - // read options - var encoding = opts.encoding !== null - ? opts.encoding - : null - var verify = opts.verify - - try { - // get the content stream - stream = contentstream(req, debug, opts.inflate) - length = stream.length - stream.length = undefined - } catch (err) { - return next(err) - } - - // set raw-body options - opts.length = length - opts.encoding = verify - ? null - : encoding - - // assert charset is supported - if (opts.encoding === null && encoding !== null && !iconv.encodingExists(encoding)) { - return next(createError(415, 'unsupported charset "' + encoding.toUpperCase() + '"', { - charset: encoding.toLowerCase() - })) - } - - // read body - debug('read body') - getBody(stream, opts, function (err, body) { - if (err) { - // default to 400 - setErrorStatus(err, 400) - - // echo back charset - if (err.type === 'encoding.unsupported') { - err = createError(415, 'unsupported charset "' + encoding.toUpperCase() + '"', { - charset: encoding.toLowerCase() - }) - } - - // read off entire request - stream.resume() - onFinished(req, function onfinished () { - next(err) - }) - return - } - - // verify - if (verify) { - try { - debug('verify body') - verify(req, res, body, encoding) - } catch (err) { - // default to 403 - setErrorStatus(err, 403) - next(err) - return - } - } - - // parse - var str - try { - debug('parse body') - str = typeof body !== 'string' && encoding !== null - ? iconv.decode(body, encoding) - : body - req.body = parse(str) - } catch (err) { - // istanbul ignore next - err.body = str === undefined - ? body - : str - - // default to 400 - setErrorStatus(err, 400) - - next(err) - return - } - - next() - }) -} - -/** - * Get the content stream of the request. - * - * @param {object} req - * @param {function} debug - * @param {boolean} [inflate=true] - * @return {object} - * @api private - */ - -function contentstream (req, debug, inflate) { - var encoding = (req.headers['content-encoding'] || 'identity').toLowerCase() - var length = req.headers['content-length'] - var stream - - debug('content-encoding "%s"', encoding) - - if (inflate === false && encoding !== 'identity') { - throw createError(415, 'content encoding unsupported') - } - - switch (encoding) { - case 'deflate': - stream = zlib.createInflate() - debug('inflate body') - req.pipe(stream) - break - case 'gzip': - stream = zlib.createGunzip() - debug('gunzip body') - req.pipe(stream) - break - case 'identity': - stream = req - stream.length = length - break - default: - throw createError(415, 'unsupported content encoding "' + encoding + '"', { - encoding: encoding - }) - } - - return stream -} - -/** - * Set a status on an error object, if ones does not exist - * @private - */ - -function setErrorStatus (error, status) { - if (!error.status && !error.statusCode) { - error.status = status - error.statusCode = status - } -} diff --git a/workshops/monte-carlo-on-ec2-spot-fleet/src/web/node_modules/body-parser/lib/types/json.js b/workshops/monte-carlo-on-ec2-spot-fleet/src/web/node_modules/body-parser/lib/types/json.js deleted file mode 100644 index 469123a7..00000000 --- a/workshops/monte-carlo-on-ec2-spot-fleet/src/web/node_modules/body-parser/lib/types/json.js +++ /dev/null @@ -1,174 +0,0 @@ -/*! - * body-parser - * Copyright(c) 2014 Jonathan Ong - * Copyright(c) 2014-2015 Douglas Christopher Wilson - * MIT Licensed - */ - -'use strict' - -/** - * Module dependencies. - * @private - */ - -var bytes = require('bytes') -var contentType = require('content-type') -var createError = require('http-errors') -var debug = require('debug')('body-parser:json') -var read = require('../read') -var typeis = require('type-is') - -/** - * Module exports. - */ - -module.exports = json - -/** - * RegExp to match the first non-space in a string. - * - * Allowed whitespace is defined in RFC 7159: - * - * ws = *( - * %x20 / ; Space - * %x09 / ; Horizontal tab - * %x0A / ; Line feed or New line - * %x0D ) ; Carriage return - */ - -var FIRST_CHAR_REGEXP = /^[\x20\x09\x0a\x0d]*(.)/ // eslint-disable-line no-control-regex - -/** - * Create a middleware to parse JSON bodies. - * - * @param {object} [options] - * @return {function} - * @public - */ - -function json (options) { - var opts = options || {} - - var limit = typeof opts.limit !== 'number' - ? bytes.parse(opts.limit || '100kb') - : opts.limit - var inflate = opts.inflate !== false - var reviver = opts.reviver - var strict = opts.strict !== false - var type = opts.type || 'application/json' - var verify = opts.verify || false - - if (verify !== false && typeof verify !== 'function') { - throw new TypeError('option verify must be function') - } - - // create the appropriate type checking function - var shouldParse = typeof type !== 'function' - ? typeChecker(type) - : type - - function parse (body) { - if (body.length === 0) { - // special-case empty json body, as it's a common client-side mistake - // TODO: maybe make this configurable or part of "strict" option - return {} - } - - if (strict) { - var first = firstchar(body) - - if (first !== '{' && first !== '[') { - debug('strict violation') - throw new SyntaxError('Unexpected token ' + first) - } - } - - debug('parse json') - return JSON.parse(body, reviver) - } - - return function jsonParser (req, res, next) { - if (req._body) { - debug('body already parsed') - next() - return - } - - req.body = req.body || {} - - // skip requests without bodies - if (!typeis.hasBody(req)) { - debug('skip empty body') - next() - return - } - - debug('content-type %j', req.headers['content-type']) - - // determine if request should be parsed - if (!shouldParse(req)) { - debug('skip parsing') - next() - return - } - - // assert charset per RFC 7159 sec 8.1 - var charset = getCharset(req) || 'utf-8' - if (charset.substr(0, 4) !== 'utf-') { - debug('invalid charset') - next(createError(415, 'unsupported charset "' + charset.toUpperCase() + '"', { - charset: charset - })) - return - } - - // read - read(req, res, next, parse, debug, { - encoding: charset, - inflate: inflate, - limit: limit, - verify: verify - }) - } -} - -/** - * Get the first non-whitespace character in a string. - * - * @param {string} str - * @return {function} - * @private - */ - -function firstchar (str) { - return FIRST_CHAR_REGEXP.exec(str)[1] -} - -/** - * Get the charset of a request. - * - * @param {object} req - * @api private - */ - -function getCharset (req) { - try { - return contentType.parse(req).parameters.charset.toLowerCase() - } catch (e) { - return undefined - } -} - -/** - * Get the simple type checker. - * - * @param {string} type - * @return {function} - */ - -function typeChecker (type) { - return function checkType (req) { - return Boolean(typeis(req, type)) - } -} diff --git a/workshops/monte-carlo-on-ec2-spot-fleet/src/web/node_modules/body-parser/lib/types/raw.js b/workshops/monte-carlo-on-ec2-spot-fleet/src/web/node_modules/body-parser/lib/types/raw.js deleted file mode 100644 index f5d1b674..00000000 --- a/workshops/monte-carlo-on-ec2-spot-fleet/src/web/node_modules/body-parser/lib/types/raw.js +++ /dev/null @@ -1,101 +0,0 @@ -/*! - * body-parser - * Copyright(c) 2014-2015 Douglas Christopher Wilson - * MIT Licensed - */ - -'use strict' - -/** - * Module dependencies. - */ - -var bytes = require('bytes') -var debug = require('debug')('body-parser:raw') -var read = require('../read') -var typeis = require('type-is') - -/** - * Module exports. - */ - -module.exports = raw - -/** - * Create a middleware to parse raw bodies. - * - * @param {object} [options] - * @return {function} - * @api public - */ - -function raw (options) { - var opts = options || {} - - var inflate = opts.inflate !== false - var limit = typeof opts.limit !== 'number' - ? bytes.parse(opts.limit || '100kb') - : opts.limit - var type = opts.type || 'application/octet-stream' - var verify = opts.verify || false - - if (verify !== false && typeof verify !== 'function') { - throw new TypeError('option verify must be function') - } - - // create the appropriate type checking function - var shouldParse = typeof type !== 'function' - ? typeChecker(type) - : type - - function parse (buf) { - return buf - } - - return function rawParser (req, res, next) { - if (req._body) { - debug('body already parsed') - next() - return - } - - req.body = req.body || {} - - // skip requests without bodies - if (!typeis.hasBody(req)) { - debug('skip empty body') - next() - return - } - - debug('content-type %j', req.headers['content-type']) - - // determine if request should be parsed - if (!shouldParse(req)) { - debug('skip parsing') - next() - return - } - - // read - read(req, res, next, parse, debug, { - encoding: null, - inflate: inflate, - limit: limit, - verify: verify - }) - } -} - -/** - * Get the simple type checker. - * - * @param {string} type - * @return {function} - */ - -function typeChecker (type) { - return function checkType (req) { - return Boolean(typeis(req, type)) - } -} diff --git a/workshops/monte-carlo-on-ec2-spot-fleet/src/web/node_modules/body-parser/lib/types/text.js b/workshops/monte-carlo-on-ec2-spot-fleet/src/web/node_modules/body-parser/lib/types/text.js deleted file mode 100644 index 8bf26375..00000000 --- a/workshops/monte-carlo-on-ec2-spot-fleet/src/web/node_modules/body-parser/lib/types/text.js +++ /dev/null @@ -1,121 +0,0 @@ -/*! - * body-parser - * Copyright(c) 2014-2015 Douglas Christopher Wilson - * MIT Licensed - */ - -'use strict' - -/** - * Module dependencies. - */ - -var bytes = require('bytes') -var contentType = require('content-type') -var debug = require('debug')('body-parser:text') -var read = require('../read') -var typeis = require('type-is') - -/** - * Module exports. - */ - -module.exports = text - -/** - * Create a middleware to parse text bodies. - * - * @param {object} [options] - * @return {function} - * @api public - */ - -function text (options) { - var opts = options || {} - - var defaultCharset = opts.defaultCharset || 'utf-8' - var inflate = opts.inflate !== false - var limit = typeof opts.limit !== 'number' - ? bytes.parse(opts.limit || '100kb') - : opts.limit - var type = opts.type || 'text/plain' - var verify = opts.verify || false - - if (verify !== false && typeof verify !== 'function') { - throw new TypeError('option verify must be function') - } - - // create the appropriate type checking function - var shouldParse = typeof type !== 'function' - ? typeChecker(type) - : type - - function parse (buf) { - return buf - } - - return function textParser (req, res, next) { - if (req._body) { - debug('body already parsed') - next() - return - } - - req.body = req.body || {} - - // skip requests without bodies - if (!typeis.hasBody(req)) { - debug('skip empty body') - next() - return - } - - debug('content-type %j', req.headers['content-type']) - - // determine if request should be parsed - if (!shouldParse(req)) { - debug('skip parsing') - next() - return - } - - // get charset - var charset = getCharset(req) || defaultCharset - - // read - read(req, res, next, parse, debug, { - encoding: charset, - inflate: inflate, - limit: limit, - verify: verify - }) - } -} - -/** - * Get the charset of a request. - * - * @param {object} req - * @api private - */ - -function getCharset (req) { - try { - return contentType.parse(req).parameters.charset.toLowerCase() - } catch (e) { - return undefined - } -} - -/** - * Get the simple type checker. - * - * @param {string} type - * @return {function} - */ - -function typeChecker (type) { - return function checkType (req) { - return Boolean(typeis(req, type)) - } -} diff --git a/workshops/monte-carlo-on-ec2-spot-fleet/src/web/node_modules/body-parser/lib/types/urlencoded.js b/workshops/monte-carlo-on-ec2-spot-fleet/src/web/node_modules/body-parser/lib/types/urlencoded.js deleted file mode 100644 index 08157ae1..00000000 --- a/workshops/monte-carlo-on-ec2-spot-fleet/src/web/node_modules/body-parser/lib/types/urlencoded.js +++ /dev/null @@ -1,279 +0,0 @@ -/*! - * body-parser - * Copyright(c) 2014 Jonathan Ong - * Copyright(c) 2014-2015 Douglas Christopher Wilson - * MIT Licensed - */ - -'use strict' - -/** - * Module dependencies. - * @private - */ - -var bytes = require('bytes') -var contentType = require('content-type') -var createError = require('http-errors') -var debug = require('debug')('body-parser:urlencoded') -var deprecate = require('depd')('body-parser') -var read = require('../read') -var typeis = require('type-is') - -/** - * Module exports. - */ - -module.exports = urlencoded - -/** - * Cache of parser modules. - */ - -var parsers = Object.create(null) - -/** - * Create a middleware to parse urlencoded bodies. - * - * @param {object} [options] - * @return {function} - * @public - */ - -function urlencoded (options) { - var opts = options || {} - - // notice because option default will flip in next major - if (opts.extended === undefined) { - deprecate('undefined extended: provide extended option') - } - - var extended = opts.extended !== false - var inflate = opts.inflate !== false - var limit = typeof opts.limit !== 'number' - ? bytes.parse(opts.limit || '100kb') - : opts.limit - var type = opts.type || 'application/x-www-form-urlencoded' - var verify = opts.verify || false - - if (verify !== false && typeof verify !== 'function') { - throw new TypeError('option verify must be function') - } - - // create the appropriate query parser - var queryparse = extended - ? extendedparser(opts) - : simpleparser(opts) - - // create the appropriate type checking function - var shouldParse = typeof type !== 'function' - ? typeChecker(type) - : type - - function parse (body) { - return body.length - ? queryparse(body) - : {} - } - - return function urlencodedParser (req, res, next) { - if (req._body) { - debug('body already parsed') - next() - return - } - - req.body = req.body || {} - - // skip requests without bodies - if (!typeis.hasBody(req)) { - debug('skip empty body') - next() - return - } - - debug('content-type %j', req.headers['content-type']) - - // determine if request should be parsed - if (!shouldParse(req)) { - debug('skip parsing') - next() - return - } - - // assert charset - var charset = getCharset(req) || 'utf-8' - if (charset !== 'utf-8') { - debug('invalid charset') - next(createError(415, 'unsupported charset "' + charset.toUpperCase() + '"', { - charset: charset - })) - return - } - - // read - read(req, res, next, parse, debug, { - debug: debug, - encoding: charset, - inflate: inflate, - limit: limit, - verify: verify - }) - } -} - -/** - * Get the extended query parser. - * - * @param {object} options - */ - -function extendedparser (options) { - var parameterLimit = options.parameterLimit !== undefined - ? options.parameterLimit - : 1000 - var parse = parser('qs') - - if (isNaN(parameterLimit) || parameterLimit < 1) { - throw new TypeError('option parameterLimit must be a positive number') - } - - if (isFinite(parameterLimit)) { - parameterLimit = parameterLimit | 0 - } - - return function queryparse (body) { - var paramCount = parameterCount(body, parameterLimit) - - if (paramCount === undefined) { - debug('too many parameters') - throw createError(413, 'too many parameters') - } - - var arrayLimit = Math.max(100, paramCount) - - debug('parse extended urlencoding') - return parse(body, { - allowPrototypes: true, - arrayLimit: arrayLimit, - depth: Infinity, - parameterLimit: parameterLimit - }) - } -} - -/** - * Get the charset of a request. - * - * @param {object} req - * @api private - */ - -function getCharset (req) { - try { - return contentType.parse(req).parameters.charset.toLowerCase() - } catch (e) { - return undefined - } -} - -/** - * Count the number of parameters, stopping once limit reached - * - * @param {string} body - * @param {number} limit - * @api private - */ - -function parameterCount (body, limit) { - var count = 0 - var index = 0 - - while ((index = body.indexOf('&', index)) !== -1) { - count++ - index++ - - if (count === limit) { - return undefined - } - } - - return count -} - -/** - * Get parser for module name dynamically. - * - * @param {string} name - * @return {function} - * @api private - */ - -function parser (name) { - var mod = parsers[name] - - if (mod !== undefined) { - return mod.parse - } - - // this uses a switch for static require analysis - switch (name) { - case 'qs': - mod = require('qs') - break - case 'querystring': - mod = require('querystring') - break - } - - // store to prevent invoking require() - parsers[name] = mod - - return mod.parse -} - -/** - * Get the simple query parser. - * - * @param {object} options - */ - -function simpleparser (options) { - var parameterLimit = options.parameterLimit !== undefined - ? options.parameterLimit - : 1000 - var parse = parser('querystring') - - if (isNaN(parameterLimit) || parameterLimit < 1) { - throw new TypeError('option parameterLimit must be a positive number') - } - - if (isFinite(parameterLimit)) { - parameterLimit = parameterLimit | 0 - } - - return function queryparse (body) { - var paramCount = parameterCount(body, parameterLimit) - - if (paramCount === undefined) { - debug('too many parameters') - throw createError(413, 'too many parameters') - } - - debug('parse urlencoding') - return parse(body, undefined, undefined, {maxKeys: parameterLimit}) - } -} - -/** - * Get the simple type checker. - * - * @param {string} type - * @return {function} - */ - -function typeChecker (type) { - return function checkType (req) { - return Boolean(typeis(req, type)) - } -} diff --git a/workshops/monte-carlo-on-ec2-spot-fleet/src/web/node_modules/body-parser/node_modules/debug/.coveralls.yml b/workshops/monte-carlo-on-ec2-spot-fleet/src/web/node_modules/body-parser/node_modules/debug/.coveralls.yml deleted file mode 100644 index 20a70685..00000000 --- a/workshops/monte-carlo-on-ec2-spot-fleet/src/web/node_modules/body-parser/node_modules/debug/.coveralls.yml +++ /dev/null @@ -1 +0,0 @@ -repo_token: SIAeZjKYlHK74rbcFvNHMUzjRiMpflxve diff --git a/workshops/monte-carlo-on-ec2-spot-fleet/src/web/node_modules/body-parser/node_modules/debug/.eslintrc b/workshops/monte-carlo-on-ec2-spot-fleet/src/web/node_modules/body-parser/node_modules/debug/.eslintrc deleted file mode 100644 index 8a37ae2c..00000000 --- a/workshops/monte-carlo-on-ec2-spot-fleet/src/web/node_modules/body-parser/node_modules/debug/.eslintrc +++ /dev/null @@ -1,11 +0,0 @@ -{ - "env": { - "browser": true, - "node": true - }, - "rules": { - "no-console": 0, - "no-empty": [1, { "allowEmptyCatch": true }] - }, - "extends": "eslint:recommended" -} diff --git a/workshops/monte-carlo-on-ec2-spot-fleet/src/web/node_modules/body-parser/node_modules/debug/.npmignore b/workshops/monte-carlo-on-ec2-spot-fleet/src/web/node_modules/body-parser/node_modules/debug/.npmignore deleted file mode 100644 index 5f60eecc..00000000 --- a/workshops/monte-carlo-on-ec2-spot-fleet/src/web/node_modules/body-parser/node_modules/debug/.npmignore +++ /dev/null @@ -1,9 +0,0 @@ -support -test -examples -example -*.sock -dist -yarn.lock -coverage -bower.json diff --git a/workshops/monte-carlo-on-ec2-spot-fleet/src/web/node_modules/body-parser/node_modules/debug/.travis.yml b/workshops/monte-carlo-on-ec2-spot-fleet/src/web/node_modules/body-parser/node_modules/debug/.travis.yml deleted file mode 100644 index 6c6090c3..00000000 --- a/workshops/monte-carlo-on-ec2-spot-fleet/src/web/node_modules/body-parser/node_modules/debug/.travis.yml +++ /dev/null @@ -1,14 +0,0 @@ - -language: node_js -node_js: - - "6" - - "5" - - "4" - -install: - - make node_modules - -script: - - make lint - - make test - - make coveralls diff --git a/workshops/monte-carlo-on-ec2-spot-fleet/src/web/node_modules/body-parser/node_modules/debug/CHANGELOG.md b/workshops/monte-carlo-on-ec2-spot-fleet/src/web/node_modules/body-parser/node_modules/debug/CHANGELOG.md deleted file mode 100644 index 189dbc82..00000000 --- a/workshops/monte-carlo-on-ec2-spot-fleet/src/web/node_modules/body-parser/node_modules/debug/CHANGELOG.md +++ /dev/null @@ -1,352 +0,0 @@ - -2.6.7 / 2017-05-16 -================== - - * Fix: Update ms to 2.0.0 to fix regular expression denial of service vulnerability (#458, @hubdotcom) - * Fix: Inline extend function in node implementation (#452, @dougwilson) - * Docs: Fix typo (#455, @msasad) - -2.6.5 / 2017-04-27 -================== - - * Fix: null reference check on window.documentElement.style.WebkitAppearance (#447, @thebigredgeek) - * Misc: clean up browser reference checks (#447, @thebigredgeek) - * Misc: add npm-debug.log to .gitignore (@thebigredgeek) - - -2.6.4 / 2017-04-20 -================== - - * Fix: bug that would occure if process.env.DEBUG is a non-string value. (#444, @LucianBuzzo) - * Chore: ignore bower.json in npm installations. (#437, @joaovieira) - * Misc: update "ms" to v0.7.3 (@tootallnate) - -2.6.3 / 2017-03-13 -================== - - * Fix: Electron reference to `process.env.DEBUG` (#431, @paulcbetts) - * Docs: Changelog fix (@thebigredgeek) - -2.6.2 / 2017-03-10 -================== - - * Fix: DEBUG_MAX_ARRAY_LENGTH (#420, @slavaGanzin) - * Docs: Add backers and sponsors from Open Collective (#422, @piamancini) - * Docs: Add Slackin invite badge (@tootallnate) - -2.6.1 / 2017-02-10 -================== - - * Fix: Module's `export default` syntax fix for IE8 `Expected identifier` error - * Fix: Whitelist DEBUG_FD for values 1 and 2 only (#415, @pi0) - * Fix: IE8 "Expected identifier" error (#414, @vgoma) - * Fix: Namespaces would not disable once enabled (#409, @musikov) - -2.6.0 / 2016-12-28 -================== - - * Fix: added better null pointer checks for browser useColors (@thebigredgeek) - * Improvement: removed explicit `window.debug` export (#404, @tootallnate) - * Improvement: deprecated `DEBUG_FD` environment variable (#405, @tootallnate) - -2.5.2 / 2016-12-25 -================== - - * Fix: reference error on window within webworkers (#393, @KlausTrainer) - * Docs: fixed README typo (#391, @lurch) - * Docs: added notice about v3 api discussion (@thebigredgeek) - -2.5.1 / 2016-12-20 -================== - - * Fix: babel-core compatibility - -2.5.0 / 2016-12-20 -================== - - * Fix: wrong reference in bower file (@thebigredgeek) - * Fix: webworker compatibility (@thebigredgeek) - * Fix: output formatting issue (#388, @kribblo) - * Fix: babel-loader compatibility (#383, @escwald) - * Misc: removed built asset from repo and publications (@thebigredgeek) - * Misc: moved source files to /src (#378, @yamikuronue) - * Test: added karma integration and replaced babel with browserify for browser tests (#378, @yamikuronue) - * Test: coveralls integration (#378, @yamikuronue) - * Docs: simplified language in the opening paragraph (#373, @yamikuronue) - -2.4.5 / 2016-12-17 -================== - - * Fix: `navigator` undefined in Rhino (#376, @jochenberger) - * Fix: custom log function (#379, @hsiliev) - * Improvement: bit of cleanup + linting fixes (@thebigredgeek) - * Improvement: rm non-maintainted `dist/` dir (#375, @freewil) - * Docs: simplified language in the opening paragraph. (#373, @yamikuronue) - -2.4.4 / 2016-12-14 -================== - - * Fix: work around debug being loaded in preload scripts for electron (#368, @paulcbetts) - -2.4.3 / 2016-12-14 -================== - - * Fix: navigation.userAgent error for react native (#364, @escwald) - -2.4.2 / 2016-12-14 -================== - - * Fix: browser colors (#367, @tootallnate) - * Misc: travis ci integration (@thebigredgeek) - * Misc: added linting and testing boilerplate with sanity check (@thebigredgeek) - -2.4.1 / 2016-12-13 -================== - - * Fix: typo that broke the package (#356) - -2.4.0 / 2016-12-13 -================== - - * Fix: bower.json references unbuilt src entry point (#342, @justmatt) - * Fix: revert "handle regex special characters" (@tootallnate) - * Feature: configurable util.inspect()`options for NodeJS (#327, @tootallnate) - * Feature: %O`(big O) pretty-prints objects (#322, @tootallnate) - * Improvement: allow colors in workers (#335, @botverse) - * Improvement: use same color for same namespace. (#338, @lchenay) - -2.3.3 / 2016-11-09 -================== - - * Fix: Catch `JSON.stringify()` errors (#195, Jovan Alleyne) - * Fix: Returning `localStorage` saved values (#331, Levi Thomason) - * Improvement: Don't create an empty object when no `process` (Nathan Rajlich) - -2.3.2 / 2016-11-09 -================== - - * Fix: be super-safe in index.js as well (@TooTallNate) - * Fix: should check whether process exists (Tom Newby) - -2.3.1 / 2016-11-09 -================== - - * Fix: Added electron compatibility (#324, @paulcbetts) - * Improvement: Added performance optimizations (@tootallnate) - * Readme: Corrected PowerShell environment variable example (#252, @gimre) - * Misc: Removed yarn lock file from source control (#321, @fengmk2) - -2.3.0 / 2016-11-07 -================== - - * Fix: Consistent placement of ms diff at end of output (#215, @gorangajic) - * Fix: Escaping of regex special characters in namespace strings (#250, @zacronos) - * Fix: Fixed bug causing crash on react-native (#282, @vkarpov15) - * Feature: Enabled ES6+ compatible import via default export (#212 @bucaran) - * Feature: Added %O formatter to reflect Chrome's console.log capability (#279, @oncletom) - * Package: Update "ms" to 0.7.2 (#315, @DevSide) - * Package: removed superfluous version property from bower.json (#207 @kkirsche) - * Readme: fix USE_COLORS to DEBUG_COLORS - * Readme: Doc fixes for format string sugar (#269, @mlucool) - * Readme: Updated docs for DEBUG_FD and DEBUG_COLORS environment variables (#232, @mattlyons0) - * Readme: doc fixes for PowerShell (#271 #243, @exoticknight @unreadable) - * Readme: better docs for browser support (#224, @matthewmueller) - * Tooling: Added yarn integration for development (#317, @thebigredgeek) - * Misc: Renamed History.md to CHANGELOG.md (@thebigredgeek) - * Misc: Added license file (#226 #274, @CantemoInternal @sdaitzman) - * Misc: Updated contributors (@thebigredgeek) - -2.2.0 / 2015-05-09 -================== - - * package: update "ms" to v0.7.1 (#202, @dougwilson) - * README: add logging to file example (#193, @DanielOchoa) - * README: fixed a typo (#191, @amir-s) - * browser: expose `storage` (#190, @stephenmathieson) - * Makefile: add a `distclean` target (#189, @stephenmathieson) - -2.1.3 / 2015-03-13 -================== - - * Updated stdout/stderr example (#186) - * Updated example/stdout.js to match debug current behaviour - * Renamed example/stderr.js to stdout.js - * Update Readme.md (#184) - * replace high intensity foreground color for bold (#182, #183) - -2.1.2 / 2015-03-01 -================== - - * dist: recompile - * update "ms" to v0.7.0 - * package: update "browserify" to v9.0.3 - * component: fix "ms.js" repo location - * changed bower package name - * updated documentation about using debug in a browser - * fix: security error on safari (#167, #168, @yields) - -2.1.1 / 2014-12-29 -================== - - * browser: use `typeof` to check for `console` existence - * browser: check for `console.log` truthiness (fix IE 8/9) - * browser: add support for Chrome apps - * Readme: added Windows usage remarks - * Add `bower.json` to properly support bower install - -2.1.0 / 2014-10-15 -================== - - * node: implement `DEBUG_FD` env variable support - * package: update "browserify" to v6.1.0 - * package: add "license" field to package.json (#135, @panuhorsmalahti) - -2.0.0 / 2014-09-01 -================== - - * package: update "browserify" to v5.11.0 - * node: use stderr rather than stdout for logging (#29, @stephenmathieson) - -1.0.4 / 2014-07-15 -================== - - * dist: recompile - * example: remove `console.info()` log usage - * example: add "Content-Type" UTF-8 header to browser example - * browser: place %c marker after the space character - * browser: reset the "content" color via `color: inherit` - * browser: add colors support for Firefox >= v31 - * debug: prefer an instance `log()` function over the global one (#119) - * Readme: update documentation about styled console logs for FF v31 (#116, @wryk) - -1.0.3 / 2014-07-09 -================== - - * Add support for multiple wildcards in namespaces (#122, @seegno) - * browser: fix lint - -1.0.2 / 2014-06-10 -================== - - * browser: update color palette (#113, @gscottolson) - * common: make console logging function configurable (#108, @timoxley) - * node: fix %o colors on old node <= 0.8.x - * Makefile: find node path using shell/which (#109, @timoxley) - -1.0.1 / 2014-06-06 -================== - - * browser: use `removeItem()` to clear localStorage - * browser, node: don't set DEBUG if namespaces is undefined (#107, @leedm777) - * package: add "contributors" section - * node: fix comment typo - * README: list authors - -1.0.0 / 2014-06-04 -================== - - * make ms diff be global, not be scope - * debug: ignore empty strings in enable() - * node: make DEBUG_COLORS able to disable coloring - * *: export the `colors` array - * npmignore: don't publish the `dist` dir - * Makefile: refactor to use browserify - * package: add "browserify" as a dev dependency - * Readme: add Web Inspector Colors section - * node: reset terminal color for the debug content - * node: map "%o" to `util.inspect()` - * browser: map "%j" to `JSON.stringify()` - * debug: add custom "formatters" - * debug: use "ms" module for humanizing the diff - * Readme: add "bash" syntax highlighting - * browser: add Firebug color support - * browser: add colors for WebKit browsers - * node: apply log to `console` - * rewrite: abstract common logic for Node & browsers - * add .jshintrc file - -0.8.1 / 2014-04-14 -================== - - * package: re-add the "component" section - -0.8.0 / 2014-03-30 -================== - - * add `enable()` method for nodejs. Closes #27 - * change from stderr to stdout - * remove unnecessary index.js file - -0.7.4 / 2013-11-13 -================== - - * remove "browserify" key from package.json (fixes something in browserify) - -0.7.3 / 2013-10-30 -================== - - * fix: catch localStorage security error when cookies are blocked (Chrome) - * add debug(err) support. Closes #46 - * add .browser prop to package.json. Closes #42 - -0.7.2 / 2013-02-06 -================== - - * fix package.json - * fix: Mobile Safari (private mode) is broken with debug - * fix: Use unicode to send escape character to shell instead of octal to work with strict mode javascript - -0.7.1 / 2013-02-05 -================== - - * add repository URL to package.json - * add DEBUG_COLORED to force colored output - * add browserify support - * fix component. Closes #24 - -0.7.0 / 2012-05-04 -================== - - * Added .component to package.json - * Added debug.component.js build - -0.6.0 / 2012-03-16 -================== - - * Added support for "-" prefix in DEBUG [Vinay Pulim] - * Added `.enabled` flag to the node version [TooTallNate] - -0.5.0 / 2012-02-02 -================== - - * Added: humanize diffs. Closes #8 - * Added `debug.disable()` to the CS variant - * Removed padding. Closes #10 - * Fixed: persist client-side variant again. Closes #9 - -0.4.0 / 2012-02-01 -================== - - * Added browser variant support for older browsers [TooTallNate] - * Added `debug.enable('project:*')` to browser variant [TooTallNate] - * Added padding to diff (moved it to the right) - -0.3.0 / 2012-01-26 -================== - - * Added millisecond diff when isatty, otherwise UTC string - -0.2.0 / 2012-01-22 -================== - - * Added wildcard support - -0.1.0 / 2011-12-02 -================== - - * Added: remove colors unless stderr isatty [TooTallNate] - -0.0.1 / 2010-01-03 -================== - - * Initial release diff --git a/workshops/monte-carlo-on-ec2-spot-fleet/src/web/node_modules/body-parser/node_modules/debug/LICENSE b/workshops/monte-carlo-on-ec2-spot-fleet/src/web/node_modules/body-parser/node_modules/debug/LICENSE deleted file mode 100644 index 658c933d..00000000 --- a/workshops/monte-carlo-on-ec2-spot-fleet/src/web/node_modules/body-parser/node_modules/debug/LICENSE +++ /dev/null @@ -1,19 +0,0 @@ -(The MIT License) - -Copyright (c) 2014 TJ Holowaychuk - -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, -subject to the following conditions: - -The above copyright notice and this permission notice shall be included in all copies or substantial -portions of the Software. - -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. - diff --git a/workshops/monte-carlo-on-ec2-spot-fleet/src/web/node_modules/body-parser/node_modules/debug/Makefile b/workshops/monte-carlo-on-ec2-spot-fleet/src/web/node_modules/body-parser/node_modules/debug/Makefile deleted file mode 100644 index 584da8bf..00000000 --- a/workshops/monte-carlo-on-ec2-spot-fleet/src/web/node_modules/body-parser/node_modules/debug/Makefile +++ /dev/null @@ -1,50 +0,0 @@ -# get Makefile directory name: http://stackoverflow.com/a/5982798/376773 -THIS_MAKEFILE_PATH:=$(word $(words $(MAKEFILE_LIST)),$(MAKEFILE_LIST)) -THIS_DIR:=$(shell cd $(dir $(THIS_MAKEFILE_PATH));pwd) - -# BIN directory -BIN := $(THIS_DIR)/node_modules/.bin - -# Path -PATH := node_modules/.bin:$(PATH) -SHELL := /bin/bash - -# applications -NODE ?= $(shell which node) -YARN ?= $(shell which yarn) -PKG ?= $(if $(YARN),$(YARN),$(NODE) $(shell which npm)) -BROWSERIFY ?= $(NODE) $(BIN)/browserify - -.FORCE: - -install: node_modules - -node_modules: package.json - @NODE_ENV= $(PKG) install - @touch node_modules - -lint: .FORCE - eslint browser.js debug.js index.js node.js - -test-node: .FORCE - istanbul cover node_modules/mocha/bin/_mocha -- test/**.js - -test-browser: .FORCE - mkdir -p dist - - @$(BROWSERIFY) \ - --standalone debug \ - . > dist/debug.js - - karma start --single-run - rimraf dist - -test: .FORCE - concurrently \ - "make test-node" \ - "make test-browser" - -coveralls: - cat ./coverage/lcov.info | ./node_modules/coveralls/bin/coveralls.js - -.PHONY: all install clean distclean diff --git a/workshops/monte-carlo-on-ec2-spot-fleet/src/web/node_modules/body-parser/node_modules/debug/README.md b/workshops/monte-carlo-on-ec2-spot-fleet/src/web/node_modules/body-parser/node_modules/debug/README.md deleted file mode 100644 index f67be6b3..00000000 --- a/workshops/monte-carlo-on-ec2-spot-fleet/src/web/node_modules/body-parser/node_modules/debug/README.md +++ /dev/null @@ -1,312 +0,0 @@ -# debug -[![Build Status](https://travis-ci.org/visionmedia/debug.svg?branch=master)](https://travis-ci.org/visionmedia/debug) [![Coverage Status](https://coveralls.io/repos/github/visionmedia/debug/badge.svg?branch=master)](https://coveralls.io/github/visionmedia/debug?branch=master) [![Slack](https://visionmedia-community-slackin.now.sh/badge.svg)](https://visionmedia-community-slackin.now.sh/) [![OpenCollective](https://opencollective.com/debug/backers/badge.svg)](#backers) -[![OpenCollective](https://opencollective.com/debug/sponsors/badge.svg)](#sponsors) - - - -A tiny node.js debugging utility modelled after node core's debugging technique. - -**Discussion around the V3 API is under way [here](https://github.com/visionmedia/debug/issues/370)** - -## Installation - -```bash -$ npm install debug -``` - -## Usage - -`debug` exposes a function; simply pass this function the name of your module, and it will return a decorated version of `console.error` for you to pass debug statements to. This will allow you to toggle the debug output for different parts of your module as well as the module as a whole. - -Example _app.js_: - -```js -var debug = require('debug')('http') - , http = require('http') - , name = 'My App'; - -// fake app - -debug('booting %s', name); - -http.createServer(function(req, res){ - debug(req.method + ' ' + req.url); - res.end('hello\n'); -}).listen(3000, function(){ - debug('listening'); -}); - -// fake worker of some kind - -require('./worker'); -``` - -Example _worker.js_: - -```js -var debug = require('debug')('worker'); - -setInterval(function(){ - debug('doing some work'); -}, 1000); -``` - - The __DEBUG__ environment variable is then used to enable these based on space or comma-delimited names. Here are some examples: - - ![debug http and worker](http://f.cl.ly/items/18471z1H402O24072r1J/Screenshot.png) - - ![debug worker](http://f.cl.ly/items/1X413v1a3M0d3C2c1E0i/Screenshot.png) - -#### Windows note - - On Windows the environment variable is set using the `set` command. - - ```cmd - set DEBUG=*,-not_this - ``` - - Note that PowerShell uses different syntax to set environment variables. - - ```cmd - $env:DEBUG = "*,-not_this" - ``` - -Then, run the program to be debugged as usual. - -## Millisecond diff - - When actively developing an application it can be useful to see when the time spent between one `debug()` call and the next. Suppose for example you invoke `debug()` before requesting a resource, and after as well, the "+NNNms" will show you how much time was spent between calls. - - ![](http://f.cl.ly/items/2i3h1d3t121M2Z1A3Q0N/Screenshot.png) - - When stdout is not a TTY, `Date#toUTCString()` is used, making it more useful for logging the debug information as shown below: - - ![](http://f.cl.ly/items/112H3i0e0o0P0a2Q2r11/Screenshot.png) - -## Conventions - - If you're using this in one or more of your libraries, you _should_ use the name of your library so that developers may toggle debugging as desired without guessing names. If you have more than one debuggers you _should_ prefix them with your library name and use ":" to separate features. For example "bodyParser" from Connect would then be "connect:bodyParser". - -## Wildcards - - The `*` character may be used as a wildcard. Suppose for example your library has debuggers named "connect:bodyParser", "connect:compress", "connect:session", instead of listing all three with `DEBUG=connect:bodyParser,connect:compress,connect:session`, you may simply do `DEBUG=connect:*`, or to run everything using this module simply use `DEBUG=*`. - - You can also exclude specific debuggers by prefixing them with a "-" character. For example, `DEBUG=*,-connect:*` would include all debuggers except those starting with "connect:". - -## Environment Variables - - When running through Node.js, you can set a few environment variables that will - change the behavior of the debug logging: - -| Name | Purpose | -|-----------|-------------------------------------------------| -| `DEBUG` | Enables/disables specific debugging namespaces. | -| `DEBUG_COLORS`| Whether or not to use colors in the debug output. | -| `DEBUG_DEPTH` | Object inspection depth. | -| `DEBUG_SHOW_HIDDEN` | Shows hidden properties on inspected objects. | - - - __Note:__ The environment variables beginning with `DEBUG_` end up being - converted into an Options object that gets used with `%o`/`%O` formatters. - See the Node.js documentation for - [`util.inspect()`](https://nodejs.org/api/util.html#util_util_inspect_object_options) - for the complete list. - -## Formatters - - - Debug uses [printf-style](https://wikipedia.org/wiki/Printf_format_string) formatting. Below are the officially supported formatters: - -| Formatter | Representation | -|-----------|----------------| -| `%O` | Pretty-print an Object on multiple lines. | -| `%o` | Pretty-print an Object all on a single line. | -| `%s` | String. | -| `%d` | Number (both integer and float). | -| `%j` | JSON. Replaced with the string '[Circular]' if the argument contains circular references. | -| `%%` | Single percent sign ('%'). This does not consume an argument. | - -### Custom formatters - - You can add custom formatters by extending the `debug.formatters` object. For example, if you wanted to add support for rendering a Buffer as hex with `%h`, you could do something like: - -```js -const createDebug = require('debug') -createDebug.formatters.h = (v) => { - return v.toString('hex') -} - -// …elsewhere -const debug = createDebug('foo') -debug('this is hex: %h', new Buffer('hello world')) -// foo this is hex: 68656c6c6f20776f726c6421 +0ms -``` - -## Browser support - You can build a browser-ready script using [browserify](https://github.com/substack/node-browserify), - or just use the [browserify-as-a-service](https://wzrd.in/) [build](https://wzrd.in/standalone/debug@latest), - if you don't want to build it yourself. - - Debug's enable state is currently persisted by `localStorage`. - Consider the situation shown below where you have `worker:a` and `worker:b`, - and wish to debug both. You can enable this using `localStorage.debug`: - -```js -localStorage.debug = 'worker:*' -``` - -And then refresh the page. - -```js -a = debug('worker:a'); -b = debug('worker:b'); - -setInterval(function(){ - a('doing some work'); -}, 1000); - -setInterval(function(){ - b('doing some work'); -}, 1200); -``` - -#### Web Inspector Colors - - Colors are also enabled on "Web Inspectors" that understand the `%c` formatting - option. These are WebKit web inspectors, Firefox ([since version - 31](https://hacks.mozilla.org/2014/05/editable-box-model-multiple-selection-sublime-text-keys-much-more-firefox-developer-tools-episode-31/)) - and the Firebug plugin for Firefox (any version). - - Colored output looks something like: - - ![](https://cloud.githubusercontent.com/assets/71256/3139768/b98c5fd8-e8ef-11e3-862a-f7253b6f47c6.png) - - -## Output streams - - By default `debug` will log to stderr, however this can be configured per-namespace by overriding the `log` method: - -Example _stdout.js_: - -```js -var debug = require('debug'); -var error = debug('app:error'); - -// by default stderr is used -error('goes to stderr!'); - -var log = debug('app:log'); -// set this namespace to log via console.log -log.log = console.log.bind(console); // don't forget to bind to console! -log('goes to stdout'); -error('still goes to stderr!'); - -// set all output to go via console.info -// overrides all per-namespace log settings -debug.log = console.info.bind(console); -error('now goes to stdout via console.info'); -log('still goes to stdout, but via console.info now'); -``` - - -## Authors - - - TJ Holowaychuk - - Nathan Rajlich - - Andrew Rhyne - -## Backers - -Support us with a monthly donation and help us continue our activities. [[Become a backer](https://opencollective.com/debug#backer)] - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -## Sponsors - -Become a sponsor and get your logo on our README on Github with a link to your site. [[Become a sponsor](https://opencollective.com/debug#sponsor)] - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -## License - -(The MIT License) - -Copyright (c) 2014-2016 TJ Holowaychuk <tj@vision-media.ca> - -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, subject to -the following conditions: - -The above copyright notice and this permission notice shall be -included in all copies or substantial portions of the Software. - -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. diff --git a/workshops/monte-carlo-on-ec2-spot-fleet/src/web/node_modules/body-parser/node_modules/debug/component.json b/workshops/monte-carlo-on-ec2-spot-fleet/src/web/node_modules/body-parser/node_modules/debug/component.json deleted file mode 100644 index d7118d2f..00000000 --- a/workshops/monte-carlo-on-ec2-spot-fleet/src/web/node_modules/body-parser/node_modules/debug/component.json +++ /dev/null @@ -1,19 +0,0 @@ -{ - "name": "debug", - "repo": "visionmedia/debug", - "description": "small debugging utility", - "version": "2.6.7", - "keywords": [ - "debug", - "log", - "debugger" - ], - "main": "src/browser.js", - "scripts": [ - "src/browser.js", - "src/debug.js" - ], - "dependencies": { - "rauchg/ms.js": "0.7.1" - } -} diff --git a/workshops/monte-carlo-on-ec2-spot-fleet/src/web/node_modules/body-parser/node_modules/debug/karma.conf.js b/workshops/monte-carlo-on-ec2-spot-fleet/src/web/node_modules/body-parser/node_modules/debug/karma.conf.js deleted file mode 100644 index 103a82d1..00000000 --- a/workshops/monte-carlo-on-ec2-spot-fleet/src/web/node_modules/body-parser/node_modules/debug/karma.conf.js +++ /dev/null @@ -1,70 +0,0 @@ -// Karma configuration -// Generated on Fri Dec 16 2016 13:09:51 GMT+0000 (UTC) - -module.exports = function(config) { - config.set({ - - // base path that will be used to resolve all patterns (eg. files, exclude) - basePath: '', - - - // frameworks to use - // available frameworks: https://npmjs.org/browse/keyword/karma-adapter - frameworks: ['mocha', 'chai', 'sinon'], - - - // list of files / patterns to load in the browser - files: [ - 'dist/debug.js', - 'test/*spec.js' - ], - - - // list of files to exclude - exclude: [ - 'src/node.js' - ], - - - // preprocess matching files before serving them to the browser - // available preprocessors: https://npmjs.org/browse/keyword/karma-preprocessor - preprocessors: { - }, - - // test results reporter to use - // possible values: 'dots', 'progress' - // available reporters: https://npmjs.org/browse/keyword/karma-reporter - reporters: ['progress'], - - - // web server port - port: 9876, - - - // enable / disable colors in the output (reporters and logs) - colors: true, - - - // level of logging - // possible values: config.LOG_DISABLE || config.LOG_ERROR || config.LOG_WARN || config.LOG_INFO || config.LOG_DEBUG - logLevel: config.LOG_INFO, - - - // enable / disable watching file and executing tests whenever any file changes - autoWatch: true, - - - // start these browsers - // available browser launchers: https://npmjs.org/browse/keyword/karma-launcher - browsers: ['PhantomJS'], - - - // Continuous Integration mode - // if true, Karma captures browsers, runs the tests and exits - singleRun: false, - - // Concurrency level - // how many browser should be started simultaneous - concurrency: Infinity - }) -} diff --git a/workshops/monte-carlo-on-ec2-spot-fleet/src/web/node_modules/body-parser/node_modules/debug/node.js b/workshops/monte-carlo-on-ec2-spot-fleet/src/web/node_modules/body-parser/node_modules/debug/node.js deleted file mode 100644 index 7fc36fe6..00000000 --- a/workshops/monte-carlo-on-ec2-spot-fleet/src/web/node_modules/body-parser/node_modules/debug/node.js +++ /dev/null @@ -1 +0,0 @@ -module.exports = require('./src/node'); diff --git a/workshops/monte-carlo-on-ec2-spot-fleet/src/web/node_modules/body-parser/node_modules/debug/package.json b/workshops/monte-carlo-on-ec2-spot-fleet/src/web/node_modules/body-parser/node_modules/debug/package.json deleted file mode 100644 index 6cea1ada..00000000 --- a/workshops/monte-carlo-on-ec2-spot-fleet/src/web/node_modules/body-parser/node_modules/debug/package.json +++ /dev/null @@ -1,124 +0,0 @@ -{ - "_args": [ - [ - { - "raw": "debug@2.6.7", - "scope": null, - "escapedName": "debug", - "name": "debug", - "rawSpec": "2.6.7", - "spec": "2.6.7", - "type": "version" - }, - "/Users/sdsteve/WebstormProjects/SpotLabNodejs/node_modules/body-parser" - ] - ], - "_from": "debug@2.6.7", - "_id": "debug@2.6.7", - "_inCache": true, - "_location": "/body-parser/debug", - "_nodeVersion": "6.9.5", - "_npmOperationalInternal": { - "host": "packages-18-east.internal.npmjs.com", - "tmp": "tmp/debug-2.6.7.tgz_1494995629479_0.5576471360400319" - }, - "_npmUser": { - "name": "thebigredgeek", - "email": "rhyneandrew@gmail.com" - }, - "_npmVersion": "3.10.10", - "_phantomChildren": {}, - "_requested": { - "raw": "debug@2.6.7", - "scope": null, - "escapedName": "debug", - "name": "debug", - "rawSpec": "2.6.7", - "spec": "2.6.7", - "type": "version" - }, - "_requiredBy": [ - "/body-parser" - ], - "_resolved": "https://registry.npmjs.org/debug/-/debug-2.6.7.tgz", - "_shasum": "92bad1f6d05bbb6bba22cca88bcd0ec894c2861e", - "_shrinkwrap": null, - "_spec": "debug@2.6.7", - "_where": "/Users/sdsteve/WebstormProjects/SpotLabNodejs/node_modules/body-parser", - "author": { - "name": "TJ Holowaychuk", - "email": "tj@vision-media.ca" - }, - "browser": "./src/browser.js", - "bugs": { - "url": "https://github.com/visionmedia/debug/issues" - }, - "component": { - "scripts": { - "debug/index.js": "browser.js", - "debug/debug.js": "debug.js" - } - }, - "contributors": [ - { - "name": "Nathan Rajlich", - "email": "nathan@tootallnate.net", - "url": "http://n8.io" - }, - { - "name": "Andrew Rhyne", - "email": "rhyneandrew@gmail.com" - } - ], - "dependencies": { - "ms": "2.0.0" - }, - "description": "small debugging utility", - "devDependencies": { - "browserify": "9.0.3", - "chai": "^3.5.0", - "concurrently": "^3.1.0", - "coveralls": "^2.11.15", - "eslint": "^3.12.1", - "istanbul": "^0.4.5", - "karma": "^1.3.0", - "karma-chai": "^0.1.0", - "karma-mocha": "^1.3.0", - "karma-phantomjs-launcher": "^1.0.2", - "karma-sinon": "^1.0.5", - "mocha": "^3.2.0", - "mocha-lcov-reporter": "^1.2.0", - "rimraf": "^2.5.4", - "sinon": "^1.17.6", - "sinon-chai": "^2.8.0" - }, - "directories": {}, - "dist": { - "shasum": "92bad1f6d05bbb6bba22cca88bcd0ec894c2861e", - "tarball": "https://registry.npmjs.org/debug/-/debug-2.6.7.tgz" - }, - "gitHead": "6bb07f7e1bafa33631d8f36a779f17eb8abf5fea", - "homepage": "https://github.com/visionmedia/debug#readme", - "keywords": [ - "debug", - "log", - "debugger" - ], - "license": "MIT", - "main": "./src/index.js", - "maintainers": [ - { - "name": "thebigredgeek", - "email": "rhyneandrew@gmail.com" - } - ], - "name": "debug", - "optionalDependencies": {}, - "readme": "ERROR: No README data found!", - "repository": { - "type": "git", - "url": "git://github.com/visionmedia/debug.git" - }, - "scripts": {}, - "version": "2.6.7" -} diff --git a/workshops/monte-carlo-on-ec2-spot-fleet/src/web/node_modules/body-parser/node_modules/debug/src/browser.js b/workshops/monte-carlo-on-ec2-spot-fleet/src/web/node_modules/body-parser/node_modules/debug/src/browser.js deleted file mode 100644 index 7978ce72..00000000 --- a/workshops/monte-carlo-on-ec2-spot-fleet/src/web/node_modules/body-parser/node_modules/debug/src/browser.js +++ /dev/null @@ -1,185 +0,0 @@ -/** - * This is the web browser implementation of `debug()`. - * - * Expose `debug()` as the module. - */ - -exports = module.exports = require('./debug'); -exports.log = log; -exports.formatArgs = formatArgs; -exports.save = save; -exports.load = load; -exports.useColors = useColors; -exports.storage = 'undefined' != typeof chrome - && 'undefined' != typeof chrome.storage - ? chrome.storage.local - : localstorage(); - -/** - * Colors. - */ - -exports.colors = [ - 'lightseagreen', - 'forestgreen', - 'goldenrod', - 'dodgerblue', - 'darkorchid', - 'crimson' -]; - -/** - * Currently only WebKit-based Web Inspectors, Firefox >= v31, - * and the Firebug extension (any Firefox version) are known - * to support "%c" CSS customizations. - * - * TODO: add a `localStorage` variable to explicitly enable/disable colors - */ - -function useColors() { - // NB: In an Electron preload script, document will be defined but not fully - // initialized. Since we know we're in Chrome, we'll just detect this case - // explicitly - if (window && window.process && window.process.type === 'renderer') { - return true; - } - - // is webkit? http://stackoverflow.com/a/16459606/376773 - // document is undefined in react-native: https://github.com/facebook/react-native/pull/1632 - return (document && document.documentElement && document.documentElement.style && document.documentElement.style.WebkitAppearance) || - // is firebug? http://stackoverflow.com/a/398120/376773 - (window && window.console && (window.console.firebug || (window.console.exception && window.console.table))) || - // is firefox >= v31? - // https://developer.mozilla.org/en-US/docs/Tools/Web_Console#Styling_messages - (navigator && navigator.userAgent && navigator.userAgent.toLowerCase().match(/firefox\/(\d+)/) && parseInt(RegExp.$1, 10) >= 31) || - // double check webkit in userAgent just in case we are in a worker - (navigator && navigator.userAgent && navigator.userAgent.toLowerCase().match(/applewebkit\/(\d+)/)); -} - -/** - * Map %j to `JSON.stringify()`, since no Web Inspectors do that by default. - */ - -exports.formatters.j = function(v) { - try { - return JSON.stringify(v); - } catch (err) { - return '[UnexpectedJSONParseError]: ' + err.message; - } -}; - - -/** - * Colorize log arguments if enabled. - * - * @api public - */ - -function formatArgs(args) { - var useColors = this.useColors; - - args[0] = (useColors ? '%c' : '') - + this.namespace - + (useColors ? ' %c' : ' ') - + args[0] - + (useColors ? '%c ' : ' ') - + '+' + exports.humanize(this.diff); - - if (!useColors) return; - - var c = 'color: ' + this.color; - args.splice(1, 0, c, 'color: inherit') - - // the final "%c" is somewhat tricky, because there could be other - // arguments passed either before or after the %c, so we need to - // figure out the correct index to insert the CSS into - var index = 0; - var lastC = 0; - args[0].replace(/%[a-zA-Z%]/g, function(match) { - if ('%%' === match) return; - index++; - if ('%c' === match) { - // we only are interested in the *last* %c - // (the user may have provided their own) - lastC = index; - } - }); - - args.splice(lastC, 0, c); -} - -/** - * Invokes `console.log()` when available. - * No-op when `console.log` is not a "function". - * - * @api public - */ - -function log() { - // this hackery is required for IE8/9, where - // the `console.log` function doesn't have 'apply' - return 'object' === typeof console - && console.log - && Function.prototype.apply.call(console.log, console, arguments); -} - -/** - * Save `namespaces`. - * - * @param {String} namespaces - * @api private - */ - -function save(namespaces) { - try { - if (null == namespaces) { - exports.storage.removeItem('debug'); - } else { - exports.storage.debug = namespaces; - } - } catch(e) {} -} - -/** - * Load `namespaces`. - * - * @return {String} returns the previously persisted debug modes - * @api private - */ - -function load() { - var r; - try { - r = exports.storage.debug; - } catch(e) {} - - // If debug isn't set in LS, and we're in Electron, try to load $DEBUG - if (!r && typeof process !== 'undefined' && 'env' in process) { - r = process.env.DEBUG; - } - - return r; -} - -/** - * Enable namespaces listed in `localStorage.debug` initially. - */ - -exports.enable(load()); - -/** - * Localstorage attempts to return the localstorage. - * - * This is necessary because safari throws - * when a user disables cookies/localstorage - * and you attempt to access it. - * - * @return {LocalStorage} - * @api private - */ - -function localstorage() { - try { - return window.localStorage; - } catch (e) {} -} diff --git a/workshops/monte-carlo-on-ec2-spot-fleet/src/web/node_modules/body-parser/node_modules/debug/src/debug.js b/workshops/monte-carlo-on-ec2-spot-fleet/src/web/node_modules/body-parser/node_modules/debug/src/debug.js deleted file mode 100644 index 6a5e3fc9..00000000 --- a/workshops/monte-carlo-on-ec2-spot-fleet/src/web/node_modules/body-parser/node_modules/debug/src/debug.js +++ /dev/null @@ -1,202 +0,0 @@ - -/** - * This is the common logic for both the Node.js and web browser - * implementations of `debug()`. - * - * Expose `debug()` as the module. - */ - -exports = module.exports = createDebug.debug = createDebug['default'] = createDebug; -exports.coerce = coerce; -exports.disable = disable; -exports.enable = enable; -exports.enabled = enabled; -exports.humanize = require('ms'); - -/** - * The currently active debug mode names, and names to skip. - */ - -exports.names = []; -exports.skips = []; - -/** - * Map of special "%n" handling functions, for the debug "format" argument. - * - * Valid key names are a single, lower or upper-case letter, i.e. "n" and "N". - */ - -exports.formatters = {}; - -/** - * Previous log timestamp. - */ - -var prevTime; - -/** - * Select a color. - * @param {String} namespace - * @return {Number} - * @api private - */ - -function selectColor(namespace) { - var hash = 0, i; - - for (i in namespace) { - hash = ((hash << 5) - hash) + namespace.charCodeAt(i); - hash |= 0; // Convert to 32bit integer - } - - return exports.colors[Math.abs(hash) % exports.colors.length]; -} - -/** - * Create a debugger with the given `namespace`. - * - * @param {String} namespace - * @return {Function} - * @api public - */ - -function createDebug(namespace) { - - function debug() { - // disabled? - if (!debug.enabled) return; - - var self = debug; - - // set `diff` timestamp - var curr = +new Date(); - var ms = curr - (prevTime || curr); - self.diff = ms; - self.prev = prevTime; - self.curr = curr; - prevTime = curr; - - // turn the `arguments` into a proper Array - var args = new Array(arguments.length); - for (var i = 0; i < args.length; i++) { - args[i] = arguments[i]; - } - - args[0] = exports.coerce(args[0]); - - if ('string' !== typeof args[0]) { - // anything else let's inspect with %O - args.unshift('%O'); - } - - // apply any `formatters` transformations - var index = 0; - args[0] = args[0].replace(/%([a-zA-Z%])/g, function(match, format) { - // if we encounter an escaped % then don't increase the array index - if (match === '%%') return match; - index++; - var formatter = exports.formatters[format]; - if ('function' === typeof formatter) { - var val = args[index]; - match = formatter.call(self, val); - - // now we need to remove `args[index]` since it's inlined in the `format` - args.splice(index, 1); - index--; - } - return match; - }); - - // apply env-specific formatting (colors, etc.) - exports.formatArgs.call(self, args); - - var logFn = debug.log || exports.log || console.log.bind(console); - logFn.apply(self, args); - } - - debug.namespace = namespace; - debug.enabled = exports.enabled(namespace); - debug.useColors = exports.useColors(); - debug.color = selectColor(namespace); - - // env-specific initialization logic for debug instances - if ('function' === typeof exports.init) { - exports.init(debug); - } - - return debug; -} - -/** - * Enables a debug mode by namespaces. This can include modes - * separated by a colon and wildcards. - * - * @param {String} namespaces - * @api public - */ - -function enable(namespaces) { - exports.save(namespaces); - - exports.names = []; - exports.skips = []; - - var split = (typeof namespaces === 'string' ? namespaces : '').split(/[\s,]+/); - var len = split.length; - - for (var i = 0; i < len; i++) { - if (!split[i]) continue; // ignore empty strings - namespaces = split[i].replace(/\*/g, '.*?'); - if (namespaces[0] === '-') { - exports.skips.push(new RegExp('^' + namespaces.substr(1) + '$')); - } else { - exports.names.push(new RegExp('^' + namespaces + '$')); - } - } -} - -/** - * Disable debug output. - * - * @api public - */ - -function disable() { - exports.enable(''); -} - -/** - * Returns true if the given mode name is enabled, false otherwise. - * - * @param {String} name - * @return {Boolean} - * @api public - */ - -function enabled(name) { - var i, len; - for (i = 0, len = exports.skips.length; i < len; i++) { - if (exports.skips[i].test(name)) { - return false; - } - } - for (i = 0, len = exports.names.length; i < len; i++) { - if (exports.names[i].test(name)) { - return true; - } - } - return false; -} - -/** - * Coerce `val`. - * - * @param {Mixed} val - * @return {Mixed} - * @api private - */ - -function coerce(val) { - if (val instanceof Error) return val.stack || val.message; - return val; -} diff --git a/workshops/monte-carlo-on-ec2-spot-fleet/src/web/node_modules/body-parser/node_modules/debug/src/index.js b/workshops/monte-carlo-on-ec2-spot-fleet/src/web/node_modules/body-parser/node_modules/debug/src/index.js deleted file mode 100644 index e12cf4d5..00000000 --- a/workshops/monte-carlo-on-ec2-spot-fleet/src/web/node_modules/body-parser/node_modules/debug/src/index.js +++ /dev/null @@ -1,10 +0,0 @@ -/** - * Detect Electron renderer process, which is node, but we should - * treat as a browser. - */ - -if (typeof process !== 'undefined' && process.type === 'renderer') { - module.exports = require('./browser.js'); -} else { - module.exports = require('./node.js'); -} diff --git a/workshops/monte-carlo-on-ec2-spot-fleet/src/web/node_modules/body-parser/node_modules/debug/src/node.js b/workshops/monte-carlo-on-ec2-spot-fleet/src/web/node_modules/body-parser/node_modules/debug/src/node.js deleted file mode 100644 index af612976..00000000 --- a/workshops/monte-carlo-on-ec2-spot-fleet/src/web/node_modules/body-parser/node_modules/debug/src/node.js +++ /dev/null @@ -1,246 +0,0 @@ -/** - * Module dependencies. - */ - -var tty = require('tty'); -var util = require('util'); - -/** - * This is the Node.js implementation of `debug()`. - * - * Expose `debug()` as the module. - */ - -exports = module.exports = require('./debug'); -exports.init = init; -exports.log = log; -exports.formatArgs = formatArgs; -exports.save = save; -exports.load = load; -exports.useColors = useColors; - -/** - * Colors. - */ - -exports.colors = [6, 2, 3, 4, 5, 1]; - -/** - * Build up the default `inspectOpts` object from the environment variables. - * - * $ DEBUG_COLORS=no DEBUG_DEPTH=10 DEBUG_SHOW_HIDDEN=enabled node script.js - */ - -exports.inspectOpts = Object.keys(process.env).filter(function (key) { - return /^debug_/i.test(key); -}).reduce(function (obj, key) { - // camel-case - var prop = key - .substring(6) - .toLowerCase() - .replace(/_([a-z])/g, function (_, k) { return k.toUpperCase() }); - - // coerce string value into JS value - var val = process.env[key]; - if (/^(yes|on|true|enabled)$/i.test(val)) val = true; - else if (/^(no|off|false|disabled)$/i.test(val)) val = false; - else if (val === 'null') val = null; - else val = Number(val); - - obj[prop] = val; - return obj; -}, {}); - -/** - * The file descriptor to write the `debug()` calls to. - * Set the `DEBUG_FD` env variable to override with another value. i.e.: - * - * $ DEBUG_FD=3 node script.js 3>debug.log - */ - -var fd = parseInt(process.env.DEBUG_FD, 10) || 2; - -if (1 !== fd && 2 !== fd) { - util.deprecate(function(){}, 'except for stderr(2) and stdout(1), any other usage of DEBUG_FD is deprecated. Override debug.log if you want to use a different log function (https://git.io/debug_fd)')() -} - -var stream = 1 === fd ? process.stdout : - 2 === fd ? process.stderr : - createWritableStdioStream(fd); - -/** - * Is stdout a TTY? Colored output is enabled when `true`. - */ - -function useColors() { - return 'colors' in exports.inspectOpts - ? Boolean(exports.inspectOpts.colors) - : tty.isatty(fd); -} - -/** - * Map %o to `util.inspect()`, all on a single line. - */ - -exports.formatters.o = function(v) { - this.inspectOpts.colors = this.useColors; - return util.inspect(v, this.inspectOpts) - .replace(/\s*\n\s*/g, ' '); -}; - -/** - * Map %o to `util.inspect()`, allowing multiple lines if needed. - */ - -exports.formatters.O = function(v) { - this.inspectOpts.colors = this.useColors; - return util.inspect(v, this.inspectOpts); -}; - -/** - * Adds ANSI color escape codes if enabled. - * - * @api public - */ - -function formatArgs(args) { - var name = this.namespace; - var useColors = this.useColors; - - if (useColors) { - var c = this.color; - var prefix = ' \u001b[3' + c + ';1m' + name + ' ' + '\u001b[0m'; - - args[0] = prefix + args[0].split('\n').join('\n' + prefix); - args.push('\u001b[3' + c + 'm+' + exports.humanize(this.diff) + '\u001b[0m'); - } else { - args[0] = new Date().toUTCString() - + ' ' + name + ' ' + args[0]; - } -} - -/** - * Invokes `util.format()` with the specified arguments and writes to `stream`. - */ - -function log() { - return stream.write(util.format.apply(util, arguments) + '\n'); -} - -/** - * Save `namespaces`. - * - * @param {String} namespaces - * @api private - */ - -function save(namespaces) { - if (null == namespaces) { - // If you set a process.env field to null or undefined, it gets cast to the - // string 'null' or 'undefined'. Just delete instead. - delete process.env.DEBUG; - } else { - process.env.DEBUG = namespaces; - } -} - -/** - * Load `namespaces`. - * - * @return {String} returns the previously persisted debug modes - * @api private - */ - -function load() { - return process.env.DEBUG; -} - -/** - * Copied from `node/src/node.js`. - * - * XXX: It's lame that node doesn't expose this API out-of-the-box. It also - * relies on the undocumented `tty_wrap.guessHandleType()` which is also lame. - */ - -function createWritableStdioStream (fd) { - var stream; - var tty_wrap = process.binding('tty_wrap'); - - // Note stream._type is used for test-module-load-list.js - - switch (tty_wrap.guessHandleType(fd)) { - case 'TTY': - stream = new tty.WriteStream(fd); - stream._type = 'tty'; - - // Hack to have stream not keep the event loop alive. - // See https://github.com/joyent/node/issues/1726 - if (stream._handle && stream._handle.unref) { - stream._handle.unref(); - } - break; - - case 'FILE': - var fs = require('fs'); - stream = new fs.SyncWriteStream(fd, { autoClose: false }); - stream._type = 'fs'; - break; - - case 'PIPE': - case 'TCP': - var net = require('net'); - stream = new net.Socket({ - fd: fd, - readable: false, - writable: true - }); - - // FIXME Should probably have an option in net.Socket to create a - // stream from an existing fd which is writable only. But for now - // we'll just add this hack and set the `readable` member to false. - // Test: ./node test/fixtures/echo.js < /etc/passwd - stream.readable = false; - stream.read = null; - stream._type = 'pipe'; - - // FIXME Hack to have stream not keep the event loop alive. - // See https://github.com/joyent/node/issues/1726 - if (stream._handle && stream._handle.unref) { - stream._handle.unref(); - } - break; - - default: - // Probably an error on in uv_guess_handle() - throw new Error('Implement me. Unknown stream file type!'); - } - - // For supporting legacy API we put the FD here. - stream.fd = fd; - - stream._isStdio = true; - - return stream; -} - -/** - * Init logic for `debug` instances. - * - * Create a new `inspectOpts` object in case `useColors` is set - * differently for a particular `debug` instance. - */ - -function init (debug) { - debug.inspectOpts = {}; - - var keys = Object.keys(exports.inspectOpts); - for (var i = 0; i < keys.length; i++) { - debug.inspectOpts[keys[i]] = exports.inspectOpts[keys[i]]; - } -} - -/** - * Enable namespaces listed in `process.env.DEBUG` initially. - */ - -exports.enable(load()); diff --git a/workshops/monte-carlo-on-ec2-spot-fleet/src/web/node_modules/body-parser/package.json b/workshops/monte-carlo-on-ec2-spot-fleet/src/web/node_modules/body-parser/package.json deleted file mode 100644 index da54120d..00000000 --- a/workshops/monte-carlo-on-ec2-spot-fleet/src/web/node_modules/body-parser/package.json +++ /dev/null @@ -1,128 +0,0 @@ -{ - "_args": [ - [ - { - "raw": "body-parser@~1.17.1", - "scope": null, - "escapedName": "body-parser", - "name": "body-parser", - "rawSpec": "~1.17.1", - "spec": ">=1.17.1 <1.18.0", - "type": "range" - }, - "/Users/sdsteve/WebstormProjects/SpotLabNodejs" - ] - ], - "_from": "body-parser@>=1.17.1 <1.18.0", - "_id": "body-parser@1.17.2", - "_inCache": true, - "_location": "/body-parser", - "_nodeVersion": "6.10.3", - "_npmOperationalInternal": { - "host": "packages-18-east.internal.npmjs.com", - "tmp": "tmp/body-parser-1.17.2.tgz_1495083464528_0.912320519099012" - }, - "_npmUser": { - "name": "dougwilson", - "email": "doug@somethingdoug.com" - }, - "_npmVersion": "3.10.10", - "_phantomChildren": { - "ms": "2.0.0" - }, - "_requested": { - "raw": "body-parser@~1.17.1", - "scope": null, - "escapedName": "body-parser", - "name": "body-parser", - "rawSpec": "~1.17.1", - "spec": ">=1.17.1 <1.18.0", - "type": "range" - }, - "_requiredBy": [ - "/" - ], - "_resolved": "https://registry.npmjs.org/body-parser/-/body-parser-1.17.2.tgz", - "_shasum": "f8892abc8f9e627d42aedafbca66bf5ab99104ee", - "_shrinkwrap": null, - "_spec": "body-parser@~1.17.1", - "_where": "/Users/sdsteve/WebstormProjects/SpotLabNodejs", - "bugs": { - "url": "https://github.com/expressjs/body-parser/issues" - }, - "contributors": [ - { - "name": "Douglas Christopher Wilson", - "email": "doug@somethingdoug.com" - }, - { - "name": "Jonathan Ong", - "email": "me@jongleberry.com", - "url": "http://jongleberry.com" - } - ], - "dependencies": { - "bytes": "2.4.0", - "content-type": "~1.0.2", - "debug": "2.6.7", - "depd": "~1.1.0", - "http-errors": "~1.6.1", - "iconv-lite": "0.4.15", - "on-finished": "~2.3.0", - "qs": "6.4.0", - "raw-body": "~2.2.0", - "type-is": "~1.6.15" - }, - "description": "Node.js body parsing middleware", - "devDependencies": { - "eslint": "3.19.0", - "eslint-config-standard": "10.2.1", - "eslint-plugin-import": "2.2.0", - "eslint-plugin-markdown": "1.0.0-beta.6", - "eslint-plugin-node": "4.2.2", - "eslint-plugin-promise": "3.5.0", - "eslint-plugin-standard": "3.0.1", - "istanbul": "0.4.5", - "methods": "1.1.2", - "mocha": "2.5.3", - "safe-buffer": "5.0.1", - "supertest": "1.1.0" - }, - "directories": {}, - "dist": { - "shasum": "f8892abc8f9e627d42aedafbca66bf5ab99104ee", - "tarball": "https://registry.npmjs.org/body-parser/-/body-parser-1.17.2.tgz" - }, - "engines": { - "node": ">= 0.8" - }, - "files": [ - "lib/", - "LICENSE", - "HISTORY.md", - "index.js" - ], - "gitHead": "77b74312edb46b2e8d8df0c8436aaba396a721e9", - "homepage": "https://github.com/expressjs/body-parser#readme", - "license": "MIT", - "maintainers": [ - { - "name": "dougwilson", - "email": "doug@somethingdoug.com" - } - ], - "name": "body-parser", - "optionalDependencies": {}, - "readme": "ERROR: No README data found!", - "repository": { - "type": "git", - "url": "git+https://github.com/expressjs/body-parser.git" - }, - "scripts": { - "lint": "eslint --plugin markdown --ext js,md .", - "test": "mocha --require test/support/env --reporter spec --check-leaks --bail test/", - "test-cov": "istanbul cover node_modules/mocha/bin/_mocha -- --require test/support/env --reporter dot --check-leaks test/", - "test-travis": "istanbul cover node_modules/mocha/bin/_mocha --report lcovonly -- --require test/support/env --reporter spec --check-leaks test/" - }, - "version": "1.17.2" -} diff --git a/workshops/monte-carlo-on-ec2-spot-fleet/src/web/node_modules/buffer/.npmignore b/workshops/monte-carlo-on-ec2-spot-fleet/src/web/node_modules/buffer/.npmignore deleted file mode 100644 index a2740356..00000000 --- a/workshops/monte-carlo-on-ec2-spot-fleet/src/web/node_modules/buffer/.npmignore +++ /dev/null @@ -1,2 +0,0 @@ -.zuul.yml -perf/ diff --git a/workshops/monte-carlo-on-ec2-spot-fleet/src/web/node_modules/buffer/.travis.yml b/workshops/monte-carlo-on-ec2-spot-fleet/src/web/node_modules/buffer/.travis.yml deleted file mode 100644 index 6789094e..00000000 --- a/workshops/monte-carlo-on-ec2-spot-fleet/src/web/node_modules/buffer/.travis.yml +++ /dev/null @@ -1,8 +0,0 @@ -language: node_js -node_js: -- 'node' -sudo: false -env: - global: - - secure: AUsK+8fYSpwIMHcVt8Mu9SpG9RPHp4XDAwCQfpU3d5U65q8OVVC6C+XjvnNmEd2PoEJRHem8ZXEyRVfGM1sttKZLZP70TEKZOpOiRQnZiTQCAJ92TfGsDj/F4LoWSjUZUpfeg9b3iSp8G5dVw3+q9QZPIu6eykASK6bfcg//Cyg= - - secure: eQBKJWu7XbhAN4ZvOOhMenC0IPpoYj+wZVVzzsLwUppfJqlrHV0CUW8rJdvZNiaGhYhoyHTnAcynpTE5kZfg3XjevOvF8PGY5wUYCki9BI+rp+pvVPZE/DNUAQpFR2gd2nxMJ4kYv7GVb6i/DfuqJa0h8IuY4zcMuKWwbQd3Az8= diff --git a/workshops/monte-carlo-on-ec2-spot-fleet/src/web/node_modules/buffer/AUTHORS.md b/workshops/monte-carlo-on-ec2-spot-fleet/src/web/node_modules/buffer/AUTHORS.md deleted file mode 100644 index 8df343a6..00000000 --- a/workshops/monte-carlo-on-ec2-spot-fleet/src/web/node_modules/buffer/AUTHORS.md +++ /dev/null @@ -1,44 +0,0 @@ -# Authors - -#### Ordered by first contribution. - -- Romain Beauxis (toots@rastageeks.org) -- Tobias Koppers (tobias.koppers@googlemail.com) -- Janus (ysangkok@gmail.com) -- Rainer Dreyer (rdrey1@gmail.com) -- Tõnis Tiigi (tonistiigi@gmail.com) -- James Halliday (mail@substack.net) -- Michael Williamson (mike@zwobble.org) -- elliottcable (github@elliottcable.name) -- rafael (rvalle@livelens.net) -- Andrew Kelley (superjoe30@gmail.com) -- Andreas Madsen (amwebdk@gmail.com) -- Mike Brevoort (mike.brevoort@pearson.com) -- Brian White (mscdex@mscdex.net) -- Feross Aboukhadijeh (feross@feross.org) -- Ruben Verborgh (ruben@verborgh.org) -- eliang (eliang.cs@gmail.com) -- Jesse Tane (jesse.tane@gmail.com) -- Alfonso Boza (alfonso@cloud.com) -- Mathias Buus (mathiasbuus@gmail.com) -- Devon Govett (devongovett@gmail.com) -- Daniel Cousens (github@dcousens.com) -- Joseph Dykstra (josephdykstra@gmail.com) -- Parsha Pourkhomami (parshap+git@gmail.com) -- Damjan Košir (damjan.kosir@gmail.com) -- daverayment (dave.rayment@gmail.com) -- kawanet (u-suke@kawa.net) -- Linus Unnebäck (linus@folkdatorn.se) -- Nolan Lawson (nolan.lawson@gmail.com) -- Calvin Metcalf (calvin.metcalf@gmail.com) -- Koki Takahashi (hakatasiloving@gmail.com) -- Guy Bedford (guybedford@gmail.com) -- Jan Schär (jscissr@gmail.com) -- RaulTsc (tomescu.raul@gmail.com) -- Matthieu Monsch (monsch@alum.mit.edu) -- Dan Ehrenberg (littledan@chromium.org) -- Kirill Fomichev (fanatid@ya.ru) -- Yusuke Kawasaki (u-suke@kawa.net) -- DC (dcposch@dcpos.ch) - -#### Generated by bin/update-authors.sh. diff --git a/workshops/monte-carlo-on-ec2-spot-fleet/src/web/node_modules/buffer/LICENSE b/workshops/monte-carlo-on-ec2-spot-fleet/src/web/node_modules/buffer/LICENSE deleted file mode 100644 index d6bf75dc..00000000 --- a/workshops/monte-carlo-on-ec2-spot-fleet/src/web/node_modules/buffer/LICENSE +++ /dev/null @@ -1,21 +0,0 @@ -The MIT License (MIT) - -Copyright (c) Feross Aboukhadijeh, and other contributors. - -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, subject to the following conditions: - -The above copyright notice and this permission notice shall be included in -all copies or substantial portions of the Software. - -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. diff --git a/workshops/monte-carlo-on-ec2-spot-fleet/src/web/node_modules/buffer/README.md b/workshops/monte-carlo-on-ec2-spot-fleet/src/web/node_modules/buffer/README.md deleted file mode 100644 index d3b82f66..00000000 --- a/workshops/monte-carlo-on-ec2-spot-fleet/src/web/node_modules/buffer/README.md +++ /dev/null @@ -1,378 +0,0 @@ -# buffer [![travis][travis-image]][travis-url] [![npm][npm-image]][npm-url] [![downloads][downloads-image]][npm-url] - -#### The buffer module from [node.js](https://nodejs.org/), for the browser. - -[![saucelabs][saucelabs-image]][saucelabs-url] - -[travis-image]: https://img.shields.io/travis/feross/buffer/master.svg -[travis-url]: https://travis-ci.org/feross/buffer -[npm-image]: https://img.shields.io/npm/v/buffer.svg -[npm-url]: https://npmjs.org/package/buffer -[downloads-image]: https://img.shields.io/npm/dm/buffer.svg -[saucelabs-image]: https://saucelabs.com/browser-matrix/buffer.svg -[saucelabs-url]: https://saucelabs.com/u/buffer - -With [browserify](http://browserify.org), simply `require('buffer')` or use the `Buffer` global and you will get this module. - -The goal is to provide an API that is 100% identical to -[node's Buffer API](https://nodejs.org/api/buffer.html). Read the -[official docs](https://nodejs.org/api/buffer.html) for the full list of properties, -instance methods, and class methods that are supported. - -## features - -- Manipulate binary data like a boss, in all browsers -- even IE6! -- Super fast. Backed by Typed Arrays (`Uint8Array`/`ArrayBuffer`, not `Object`) -- Extremely small bundle size (**5.04KB minified + gzipped**, 35.5KB with comments) -- Excellent browser support (IE 6+, Chrome 4+, Firefox 3+, Safari 5.1+, Opera 11+, iOS, etc.) -- Preserves Node API exactly, with one minor difference (see below) -- Square-bracket `buf[4]` notation works, even in old browsers like IE6! -- Does not modify any browser prototypes or put anything on `window` -- Comprehensive test suite (including all buffer tests from node.js core) - - -## install - -To use this module directly (without browserify), install it: - -```bash -npm install buffer -``` - -This module was previously called **native-buffer-browserify**, but please use **buffer** -from now on. - -A standalone bundle is available [here](https://wzrd.in/standalone/buffer), for non-browserify users. - - -## usage - -The module's API is identical to node's `Buffer` API. Read the -[official docs](https://nodejs.org/api/buffer.html) for the full list of properties, -instance methods, and class methods that are supported. - -As mentioned above, `require('buffer')` or use the `Buffer` global with -[browserify](http://browserify.org) and this module will automatically be included -in your bundle. Almost any npm module will work in the browser, even if it assumes that -the node `Buffer` API will be available. - -To depend on this module explicitly (without browserify), require it like this: - -```js -var Buffer = require('buffer/').Buffer // note: the trailing slash is important! -``` - -To require this module explicitly, use `require('buffer/')` which tells the node.js module -lookup algorithm (also used by browserify) to use the **npm module** named `buffer` -instead of the **node.js core** module named `buffer`! - - -## how does it work? - -The Buffer constructor returns instances of `Uint8Array` that have their prototype -changed to `Buffer.prototype`. Furthermore, `Buffer` is a subclass of `Uint8Array`, -so the returned instances will have all the node `Buffer` methods and the -`Uint8Array` methods. Square bracket notation works as expected -- it returns a -single octet. - -The `Uint8Array` prototype remains unmodified. - - -## one minor difference - -#### In old browsers, `buf.slice()` does not modify parent buffer's memory - -If you only support modern browsers (specifically, those with typed array support), -then this issue does not affect you. If you support super old browsers, then read on. - -In node, the `slice()` method returns a new `Buffer` that shares underlying memory -with the original Buffer. When you modify one buffer, you modify the other. -[Read more.](https://nodejs.org/api/buffer.html#buffer_buf_slice_start_end) - -In browsers with typed array support, this `Buffer` implementation supports this -behavior. In browsers without typed arrays, an alternate buffer implementation is -used that is based on `Object` which has no mechanism to point separate -`Buffer`s to the same underlying slab of memory. - -You can see which browser versions lack typed array support -[here](https://github.com/feross/buffer/blob/master/index.js#L22-L48). - - -## tracking the latest node api - -This module tracks the Buffer API in the latest (unstable) version of node.js. The Buffer -API is considered **stable** in the -[node stability index](https://nodejs.org/docs/latest/api/documentation.html#documentation_stability_index), -so it is unlikely that there will ever be breaking changes. -Nonetheless, when/if the Buffer API changes in node, this module's API will change -accordingly. - -## related packages - -- [`buffer-equals`](https://www.npmjs.com/package/buffer-equals) - Node.js 0.12 buffer.equals() ponyfill -- [`buffer-reverse`](https://www.npmjs.com/package/buffer-reverse) - A lite module for reverse-operations on buffers -- [`buffer-xor`](https://www.npmjs.com/package/buffer-xor) - A simple module for bitwise-xor on buffers -- [`is-buffer`](https://www.npmjs.com/package/is-buffer) - Determine if an object is a Buffer without including the whole `Buffer` package -- [`typedarray-to-buffer`](https://www.npmjs.com/package/typedarray-to-buffer) - Convert a typed array to a Buffer without a copy - -## performance - -See perf tests in `/perf`. - -`BrowserBuffer` is the browser `buffer` module (this repo). `Uint8Array` is included as a -sanity check (since `BrowserBuffer` uses `Uint8Array` under the hood, `Uint8Array` will -always be at least a bit faster). Finally, `NodeBuffer` is the node.js buffer module, -which is included to compare against. - -NOTE: Performance has improved since these benchmarks were taken. PR welcoem to update the README. - -### Chrome 38 - -| Method | Operations | Accuracy | Sampled | Fastest | -|:-------|:-----------|:---------|:--------|:-------:| -| BrowserBuffer#bracket-notation | 11,457,464 ops/sec | ±0.86% | 66 | ✓ | -| Uint8Array#bracket-notation | 10,824,332 ops/sec | ±0.74% | 65 | | -| | | | | -| BrowserBuffer#concat | 450,532 ops/sec | ±0.76% | 68 | | -| Uint8Array#concat | 1,368,911 ops/sec | ±1.50% | 62 | ✓ | -| | | | | -| BrowserBuffer#copy(16000) | 903,001 ops/sec | ±0.96% | 67 | | -| Uint8Array#copy(16000) | 1,422,441 ops/sec | ±1.04% | 66 | ✓ | -| | | | | -| BrowserBuffer#copy(16) | 11,431,358 ops/sec | ±0.46% | 69 | | -| Uint8Array#copy(16) | 13,944,163 ops/sec | ±1.12% | 68 | ✓ | -| | | | | -| BrowserBuffer#new(16000) | 106,329 ops/sec | ±6.70% | 44 | | -| Uint8Array#new(16000) | 131,001 ops/sec | ±2.85% | 31 | ✓ | -| | | | | -| BrowserBuffer#new(16) | 1,554,491 ops/sec | ±1.60% | 65 | | -| Uint8Array#new(16) | 6,623,930 ops/sec | ±1.66% | 65 | ✓ | -| | | | | -| BrowserBuffer#readDoubleBE | 112,830 ops/sec | ±0.51% | 69 | ✓ | -| DataView#getFloat64 | 93,500 ops/sec | ±0.57% | 68 | | -| | | | | -| BrowserBuffer#readFloatBE | 146,678 ops/sec | ±0.95% | 68 | ✓ | -| DataView#getFloat32 | 99,311 ops/sec | ±0.41% | 67 | | -| | | | | -| BrowserBuffer#readUInt32LE | 843,214 ops/sec | ±0.70% | 69 | ✓ | -| DataView#getUint32 | 103,024 ops/sec | ±0.64% | 67 | | -| | | | | -| BrowserBuffer#slice | 1,013,941 ops/sec | ±0.75% | 67 | | -| Uint8Array#subarray | 1,903,928 ops/sec | ±0.53% | 67 | ✓ | -| | | | | -| BrowserBuffer#writeFloatBE | 61,387 ops/sec | ±0.90% | 67 | | -| DataView#setFloat32 | 141,249 ops/sec | ±0.40% | 66 | ✓ | - - -### Firefox 33 - -| Method | Operations | Accuracy | Sampled | Fastest | -|:-------|:-----------|:---------|:--------|:-------:| -| BrowserBuffer#bracket-notation | 20,800,421 ops/sec | ±1.84% | 60 | | -| Uint8Array#bracket-notation | 20,826,235 ops/sec | ±2.02% | 61 | ✓ | -| | | | | -| BrowserBuffer#concat | 153,076 ops/sec | ±2.32% | 61 | | -| Uint8Array#concat | 1,255,674 ops/sec | ±8.65% | 52 | ✓ | -| | | | | -| BrowserBuffer#copy(16000) | 1,105,312 ops/sec | ±1.16% | 63 | | -| Uint8Array#copy(16000) | 1,615,911 ops/sec | ±0.55% | 66 | ✓ | -| | | | | -| BrowserBuffer#copy(16) | 16,357,599 ops/sec | ±0.73% | 68 | | -| Uint8Array#copy(16) | 31,436,281 ops/sec | ±1.05% | 68 | ✓ | -| | | | | -| BrowserBuffer#new(16000) | 52,995 ops/sec | ±6.01% | 35 | | -| Uint8Array#new(16000) | 87,686 ops/sec | ±5.68% | 45 | ✓ | -| | | | | -| BrowserBuffer#new(16) | 252,031 ops/sec | ±1.61% | 66 | | -| Uint8Array#new(16) | 8,477,026 ops/sec | ±0.49% | 68 | ✓ | -| | | | | -| BrowserBuffer#readDoubleBE | 99,871 ops/sec | ±0.41% | 69 | | -| DataView#getFloat64 | 285,663 ops/sec | ±0.70% | 68 | ✓ | -| | | | | -| BrowserBuffer#readFloatBE | 115,540 ops/sec | ±0.42% | 69 | | -| DataView#getFloat32 | 288,722 ops/sec | ±0.82% | 68 | ✓ | -| | | | | -| BrowserBuffer#readUInt32LE | 633,926 ops/sec | ±1.08% | 67 | ✓ | -| DataView#getUint32 | 294,808 ops/sec | ±0.79% | 64 | | -| | | | | -| BrowserBuffer#slice | 349,425 ops/sec | ±0.46% | 69 | | -| Uint8Array#subarray | 5,965,819 ops/sec | ±0.60% | 65 | ✓ | -| | | | | -| BrowserBuffer#writeFloatBE | 59,980 ops/sec | ±0.41% | 67 | | -| DataView#setFloat32 | 317,634 ops/sec | ±0.63% | 68 | ✓ | - -### Safari 8 - -| Method | Operations | Accuracy | Sampled | Fastest | -|:-------|:-----------|:---------|:--------|:-------:| -| BrowserBuffer#bracket-notation | 10,279,729 ops/sec | ±2.25% | 56 | ✓ | -| Uint8Array#bracket-notation | 10,030,767 ops/sec | ±2.23% | 59 | | -| | | | | -| BrowserBuffer#concat | 144,138 ops/sec | ±1.38% | 65 | | -| Uint8Array#concat | 4,950,764 ops/sec | ±1.70% | 63 | ✓ | -| | | | | -| BrowserBuffer#copy(16000) | 1,058,548 ops/sec | ±1.51% | 64 | | -| Uint8Array#copy(16000) | 1,409,666 ops/sec | ±1.17% | 65 | ✓ | -| | | | | -| BrowserBuffer#copy(16) | 6,282,529 ops/sec | ±1.88% | 58 | | -| Uint8Array#copy(16) | 11,907,128 ops/sec | ±2.87% | 58 | ✓ | -| | | | | -| BrowserBuffer#new(16000) | 101,663 ops/sec | ±3.89% | 57 | | -| Uint8Array#new(16000) | 22,050,818 ops/sec | ±6.51% | 46 | ✓ | -| | | | | -| BrowserBuffer#new(16) | 176,072 ops/sec | ±2.13% | 64 | | -| Uint8Array#new(16) | 24,385,731 ops/sec | ±5.01% | 51 | ✓ | -| | | | | -| BrowserBuffer#readDoubleBE | 41,341 ops/sec | ±1.06% | 67 | | -| DataView#getFloat64 | 322,280 ops/sec | ±0.84% | 68 | ✓ | -| | | | | -| BrowserBuffer#readFloatBE | 46,141 ops/sec | ±1.06% | 65 | | -| DataView#getFloat32 | 337,025 ops/sec | ±0.43% | 69 | ✓ | -| | | | | -| BrowserBuffer#readUInt32LE | 151,551 ops/sec | ±1.02% | 66 | | -| DataView#getUint32 | 308,278 ops/sec | ±0.94% | 67 | ✓ | -| | | | | -| BrowserBuffer#slice | 197,365 ops/sec | ±0.95% | 66 | | -| Uint8Array#subarray | 9,558,024 ops/sec | ±3.08% | 58 | ✓ | -| | | | | -| BrowserBuffer#writeFloatBE | 17,518 ops/sec | ±1.03% | 63 | | -| DataView#setFloat32 | 319,751 ops/sec | ±0.48% | 68 | ✓ | - - -### Node 0.11.14 - -| Method | Operations | Accuracy | Sampled | Fastest | -|:-------|:-----------|:---------|:--------|:-------:| -| BrowserBuffer#bracket-notation | 10,489,828 ops/sec | ±3.25% | 90 | | -| Uint8Array#bracket-notation | 10,534,884 ops/sec | ±0.81% | 92 | ✓ | -| NodeBuffer#bracket-notation | 10,389,910 ops/sec | ±0.97% | 87 | | -| | | | | -| BrowserBuffer#concat | 487,830 ops/sec | ±2.58% | 88 | | -| Uint8Array#concat | 1,814,327 ops/sec | ±1.28% | 88 | ✓ | -| NodeBuffer#concat | 1,636,523 ops/sec | ±1.88% | 73 | | -| | | | | -| BrowserBuffer#copy(16000) | 1,073,665 ops/sec | ±0.77% | 90 | | -| Uint8Array#copy(16000) | 1,348,517 ops/sec | ±0.84% | 89 | ✓ | -| NodeBuffer#copy(16000) | 1,289,533 ops/sec | ±0.82% | 93 | | -| | | | | -| BrowserBuffer#copy(16) | 12,782,706 ops/sec | ±0.74% | 85 | | -| Uint8Array#copy(16) | 14,180,427 ops/sec | ±0.93% | 92 | ✓ | -| NodeBuffer#copy(16) | 11,083,134 ops/sec | ±1.06% | 89 | | -| | | | | -| BrowserBuffer#new(16000) | 141,678 ops/sec | ±3.30% | 67 | | -| Uint8Array#new(16000) | 161,491 ops/sec | ±2.96% | 60 | | -| NodeBuffer#new(16000) | 292,699 ops/sec | ±3.20% | 55 | ✓ | -| | | | | -| BrowserBuffer#new(16) | 1,655,466 ops/sec | ±2.41% | 82 | | -| Uint8Array#new(16) | 14,399,926 ops/sec | ±0.91% | 94 | ✓ | -| NodeBuffer#new(16) | 3,894,696 ops/sec | ±0.88% | 92 | | -| | | | | -| BrowserBuffer#readDoubleBE | 109,582 ops/sec | ±0.75% | 93 | ✓ | -| DataView#getFloat64 | 91,235 ops/sec | ±0.81% | 90 | | -| NodeBuffer#readDoubleBE | 88,593 ops/sec | ±0.96% | 81 | | -| | | | | -| BrowserBuffer#readFloatBE | 139,854 ops/sec | ±1.03% | 85 | ✓ | -| DataView#getFloat32 | 98,744 ops/sec | ±0.80% | 89 | | -| NodeBuffer#readFloatBE | 92,769 ops/sec | ±0.94% | 93 | | -| | | | | -| BrowserBuffer#readUInt32LE | 710,861 ops/sec | ±0.82% | 92 | | -| DataView#getUint32 | 117,893 ops/sec | ±0.84% | 91 | | -| NodeBuffer#readUInt32LE | 851,412 ops/sec | ±0.72% | 93 | ✓ | -| | | | | -| BrowserBuffer#slice | 1,673,877 ops/sec | ±0.73% | 94 | | -| Uint8Array#subarray | 6,919,243 ops/sec | ±0.67% | 90 | ✓ | -| NodeBuffer#slice | 4,617,604 ops/sec | ±0.79% | 93 | | -| | | | | -| BrowserBuffer#writeFloatBE | 66,011 ops/sec | ±0.75% | 93 | | -| DataView#setFloat32 | 127,760 ops/sec | ±0.72% | 93 | ✓ | -| NodeBuffer#writeFloatBE | 103,352 ops/sec | ±0.83% | 93 | | - -### iojs 1.8.1 - -| Method | Operations | Accuracy | Sampled | Fastest | -|:-------|:-----------|:---------|:--------|:-------:| -| BrowserBuffer#bracket-notation | 10,990,488 ops/sec | ±1.11% | 91 | | -| Uint8Array#bracket-notation | 11,268,757 ops/sec | ±0.65% | 97 | | -| NodeBuffer#bracket-notation | 11,353,260 ops/sec | ±0.83% | 94 | ✓ | -| | | | | -| BrowserBuffer#concat | 378,954 ops/sec | ±0.74% | 94 | | -| Uint8Array#concat | 1,358,288 ops/sec | ±0.97% | 87 | | -| NodeBuffer#concat | 1,934,050 ops/sec | ±1.11% | 78 | ✓ | -| | | | | -| BrowserBuffer#copy(16000) | 894,538 ops/sec | ±0.56% | 84 | | -| Uint8Array#copy(16000) | 1,442,656 ops/sec | ±0.71% | 96 | | -| NodeBuffer#copy(16000) | 1,457,898 ops/sec | ±0.53% | 92 | ✓ | -| | | | | -| BrowserBuffer#copy(16) | 12,870,457 ops/sec | ±0.67% | 95 | | -| Uint8Array#copy(16) | 16,643,989 ops/sec | ±0.61% | 93 | ✓ | -| NodeBuffer#copy(16) | 14,885,848 ops/sec | ±0.74% | 94 | | -| | | | | -| BrowserBuffer#new(16000) | 109,264 ops/sec | ±4.21% | 63 | | -| Uint8Array#new(16000) | 138,916 ops/sec | ±1.87% | 61 | | -| NodeBuffer#new(16000) | 281,449 ops/sec | ±3.58% | 51 | ✓ | -| | | | | -| BrowserBuffer#new(16) | 1,362,935 ops/sec | ±0.56% | 99 | | -| Uint8Array#new(16) | 6,193,090 ops/sec | ±0.64% | 95 | ✓ | -| NodeBuffer#new(16) | 4,745,425 ops/sec | ±1.56% | 90 | | -| | | | | -| BrowserBuffer#readDoubleBE | 118,127 ops/sec | ±0.59% | 93 | ✓ | -| DataView#getFloat64 | 107,332 ops/sec | ±0.65% | 91 | | -| NodeBuffer#readDoubleBE | 116,274 ops/sec | ±0.94% | 95 | | -| | | | | -| BrowserBuffer#readFloatBE | 150,326 ops/sec | ±0.58% | 95 | ✓ | -| DataView#getFloat32 | 110,541 ops/sec | ±0.57% | 98 | | -| NodeBuffer#readFloatBE | 121,599 ops/sec | ±0.60% | 87 | | -| | | | | -| BrowserBuffer#readUInt32LE | 814,147 ops/sec | ±0.62% | 93 | | -| DataView#getUint32 | 137,592 ops/sec | ±0.64% | 90 | | -| NodeBuffer#readUInt32LE | 931,650 ops/sec | ±0.71% | 96 | ✓ | -| | | | | -| BrowserBuffer#slice | 878,590 ops/sec | ±0.68% | 93 | | -| Uint8Array#subarray | 2,843,308 ops/sec | ±1.02% | 90 | | -| NodeBuffer#slice | 4,998,316 ops/sec | ±0.68% | 90 | ✓ | -| | | | | -| BrowserBuffer#writeFloatBE | 65,927 ops/sec | ±0.74% | 93 | | -| DataView#setFloat32 | 139,823 ops/sec | ±0.97% | 89 | ✓ | -| NodeBuffer#writeFloatBE | 135,763 ops/sec | ±0.65% | 96 | | -| | | | | - -## Testing the project - -First, install the project: - - npm install - -Then, to run tests in Node.js, run: - - npm run test-node - -To test locally in a browser, you can run: - - npm run test-browser-local - -This will print out a URL that you can then open in a browser to run the tests, using [Zuul](https://github.com/defunctzombie/zuul). - -To run automated browser tests using Saucelabs, ensure that your `SAUCE_USERNAME` and `SAUCE_ACCESS_KEY` environment variables are set, then run: - - npm test - -This is what's run in Travis, to check against various browsers. The list of browsers is kept in the `.zuul.yml` file. - -## JavaScript Standard Style - -This module uses [JavaScript Standard Style](https://github.com/feross/standard). - -[![JavaScript Style Guide](https://cdn.rawgit.com/feross/standard/master/badge.svg)](https://github.com/feross/standard) - -To test that the code conforms to the style, `npm install` and run: - - ./node_modules/.bin/standard - -## credit - -This was originally forked from [buffer-browserify](https://github.com/toots/buffer-browserify). - - -## license - -MIT. Copyright (C) [Feross Aboukhadijeh](http://feross.org), and other contributors. Originally forked from an MIT-licensed module by Romain Beauxis. diff --git a/workshops/monte-carlo-on-ec2-spot-fleet/src/web/node_modules/buffer/bin/download-node-tests.js b/workshops/monte-carlo-on-ec2-spot-fleet/src/web/node_modules/buffer/bin/download-node-tests.js deleted file mode 100755 index 97efde02..00000000 --- a/workshops/monte-carlo-on-ec2-spot-fleet/src/web/node_modules/buffer/bin/download-node-tests.js +++ /dev/null @@ -1,106 +0,0 @@ -#!/usr/bin/env node - -var concat = require('concat-stream') -var cp = require('child_process') -var fs = require('fs') -var hyperquest = require('hyperquest') -var path = require('path') -var split = require('split') -var through = require('through2') - -var url = 'https://api.github.com/repos/nodejs/node/contents' -var dirs = [ - '/test/parallel', - '/test/pummel' -] - -cp.execSync('rm -rf node/*.js', { cwd: path.join(__dirname, '../test') }) - -var httpOpts = { - headers: { - 'User-Agent': null - // auth if github rate-limits you... - // 'Authorization': 'Basic ' + Buffer('username:password').toString('base64'), - } -} - -dirs.forEach(function (dir) { - var req = hyperquest(url + dir, httpOpts) - req.pipe(concat(function (data) { - if (req.response.statusCode !== 200) { - throw new Error(url + dir + ': ' + data.toString()) - } - downloadBufferTests(dir, JSON.parse(data)) - })) -}) - -function downloadBufferTests (dir, files) { - files.forEach(function (file) { - if (!/test-buffer.*/.test(file.name)) return - - if (file.name === 'test-buffer-fakes.js') { - // These teses only apply to node, where they're calling into C++ and need to - // ensure the prototype can't be faked, or else there will be a segfault. - return - } - - console.log(file.download_url) - - var out = path.join(__dirname, '../test/node', file.name) - hyperquest(file.download_url, httpOpts) - .pipe(split()) - .pipe(testfixer(file.name)) - .pipe(fs.createWriteStream(out)) - .on('finish', function () { - console.log('wrote ' + file.name) - }) - }) -} - -function testfixer (filename) { - var firstline = true - - return through(function (line, enc, cb) { - line = line.toString() - - if (firstline) { - // require buffer explicitly - var preamble = 'var Buffer = require(\'../../\').Buffer;\n' - if (/use strict/.test(line)) line += '\n' + preamble - else line + preamble + '\n' + line - firstline = false - } - - // use `var` instead of `const`/`let` - line = line.replace(/(const|let) /g, 'var ') - - // make `var common = require('common')` work - line = line.replace(/(var common = require.*)/g, 'var common = { skip: function () {} };') - - // make `require('../common')` work - line = line.replace(/require\('\.\.\/common'\);/g, '') - - // require browser buffer - line = line.replace(/(.*)require\('buffer'\)(.*)/g, '$1require(\'../../\')$2') - - // comment out console logs - line = line.replace(/(.*console\..*)/g, '// $1') - - // we can't reliably test typed array max-sizes in the browser - if (filename === 'test-buffer-big.js') { - line = line.replace(/(.*new Int8Array.*RangeError.*)/, '// $1') - line = line.replace(/(.*new ArrayBuffer.*RangeError.*)/, '// $1') - line = line.replace(/(.*new Float64Array.*RangeError.*)/, '// $1') - } - - // https://github.com/nodejs/node/blob/v0.12/test/parallel/test-buffer.js#L1138 - // unfortunately we can't run this because crypto-browserify doesn't work in old - // versions of ie - if (filename === 'test-buffer.js') { - line = line.replace(/^(\s*)(var crypto = require.*)/, '$1// $2') - line = line.replace(/(crypto.createHash.*\))/, '1 /*$1*/') - } - - cb(null, line + '\n') - }) -} diff --git a/workshops/monte-carlo-on-ec2-spot-fleet/src/web/node_modules/buffer/bin/test.js b/workshops/monte-carlo-on-ec2-spot-fleet/src/web/node_modules/buffer/bin/test.js deleted file mode 100644 index 5a86f1b2..00000000 --- a/workshops/monte-carlo-on-ec2-spot-fleet/src/web/node_modules/buffer/bin/test.js +++ /dev/null @@ -1,41 +0,0 @@ -#!/usr/bin/env node - -var cp = require('child_process') -var fs = require('fs') -var path = require('path') - -var shouldRunBrowserTests = !process.env.TRAVIS_PULL_REQUEST || - process.env.TRAVIS_PULL_REQUEST === 'false' - -var node = cp.spawn('npm', ['run', 'test-node'], { stdio: 'inherit' }) -node.on('close', function (code) { - if (code === 0 && shouldRunBrowserTests) { - runBrowserTests() - } else { - process.exit(code) - } -}) - -function runBrowserTests () { - var zuulYmlPath = path.join(__dirname, '..', '.zuul.yml') - - writeES5ZuulYml() - cp.spawn('npm', ['run', 'test-browser-es5'], { stdio: 'inherit' }) - .on('close', function (code) { - if (code !== 0) process.exit(code) - writeES6ZuulYml() - cp.spawn('npm', ['run', 'test-browser-es6'], { stdio: 'inherit' }) - .on('close', function (code) { - process.exit(code) - }) - }) - - function writeES5ZuulYml () { - fs.writeFileSync(zuulYmlPath, fs.readFileSync(path.join(__dirname, 'zuul-es5.yml'))) - } - - function writeES6ZuulYml () { - fs.writeFileSync(zuulYmlPath, fs.readFileSync(path.join(__dirname, 'zuul-es6.yml'))) - } -} - diff --git a/workshops/monte-carlo-on-ec2-spot-fleet/src/web/node_modules/buffer/bin/update-authors.sh b/workshops/monte-carlo-on-ec2-spot-fleet/src/web/node_modules/buffer/bin/update-authors.sh deleted file mode 100755 index efcbc780..00000000 --- a/workshops/monte-carlo-on-ec2-spot-fleet/src/web/node_modules/buffer/bin/update-authors.sh +++ /dev/null @@ -1,21 +0,0 @@ -#!/bin/sh -# Update AUTHORS.md based on git history. - -git log --reverse --format='%aN (%aE)' | perl -we ' -BEGIN { - %seen = (), @authors = (); -} -while (<>) { - next if $seen{$_}; - next if /(support\@greenkeeper.io)/; - next if /(dcousens\@users.noreply.github.com)/; - next if /(cmetcalf\@appgeo.com)/; - $seen{$_} = push @authors, "- ", $_; -} -END { - print "# Authors\n\n"; - print "#### Ordered by first contribution.\n\n"; - print @authors, "\n"; - print "#### Generated by bin/update-authors.sh.\n"; -} -' > AUTHORS.md diff --git a/workshops/monte-carlo-on-ec2-spot-fleet/src/web/node_modules/buffer/bin/zuul-es5.yml b/workshops/monte-carlo-on-ec2-spot-fleet/src/web/node_modules/buffer/bin/zuul-es5.yml deleted file mode 100644 index 3673bccf..00000000 --- a/workshops/monte-carlo-on-ec2-spot-fleet/src/web/node_modules/buffer/bin/zuul-es5.yml +++ /dev/null @@ -1,14 +0,0 @@ -ui: tape -scripts: - - ./test/_polyfill.js -browsers: - - name: safari - version: latest - - name: ie - version: 8..latest - - name: microsoftedge - version: 13..latest - - name: android - version: 4.4..latest - - name: iphone - version: latest diff --git a/workshops/monte-carlo-on-ec2-spot-fleet/src/web/node_modules/buffer/bin/zuul-es6.yml b/workshops/monte-carlo-on-ec2-spot-fleet/src/web/node_modules/buffer/bin/zuul-es6.yml deleted file mode 100644 index 8054ad65..00000000 --- a/workshops/monte-carlo-on-ec2-spot-fleet/src/web/node_modules/buffer/bin/zuul-es6.yml +++ /dev/null @@ -1,6 +0,0 @@ -ui: tape -browsers: - - name: chrome - version: '-1..latest' - - name: firefox - version: '-1..latest' diff --git a/workshops/monte-carlo-on-ec2-spot-fleet/src/web/node_modules/buffer/index.js b/workshops/monte-carlo-on-ec2-spot-fleet/src/web/node_modules/buffer/index.js deleted file mode 100644 index 0fcd80ad..00000000 --- a/workshops/monte-carlo-on-ec2-spot-fleet/src/web/node_modules/buffer/index.js +++ /dev/null @@ -1,1789 +0,0 @@ -/*! - * The buffer module from node.js, for the browser. - * - * @author Feross Aboukhadijeh - * @license MIT - */ -/* eslint-disable no-proto */ - -'use strict' - -var base64 = require('base64-js') -var ieee754 = require('ieee754') -var isArray = require('isarray') - -exports.Buffer = Buffer -exports.SlowBuffer = SlowBuffer -exports.INSPECT_MAX_BYTES = 50 - -/** - * If `Buffer.TYPED_ARRAY_SUPPORT`: - * === true Use Uint8Array implementation (fastest) - * === false Use Object implementation (most compatible, even IE6) - * - * Browsers that support typed arrays are IE 10+, Firefox 4+, Chrome 7+, Safari 5.1+, - * Opera 11.6+, iOS 4.2+. - * - * Due to various browser bugs, sometimes the Object implementation will be used even - * when the browser supports typed arrays. - * - * Note: - * - * - Firefox 4-29 lacks support for adding new properties to `Uint8Array` instances, - * See: https://bugzilla.mozilla.org/show_bug.cgi?id=695438. - * - * - Chrome 9-10 is missing the `TypedArray.prototype.subarray` function. - * - * - IE10 has a broken `TypedArray.prototype.subarray` function which returns arrays of - * incorrect length in some situations. - - * We detect these buggy browsers and set `Buffer.TYPED_ARRAY_SUPPORT` to `false` so they - * get the Object implementation, which is slower but behaves correctly. - */ -Buffer.TYPED_ARRAY_SUPPORT = global.TYPED_ARRAY_SUPPORT !== undefined - ? global.TYPED_ARRAY_SUPPORT - : typedArraySupport() - -/* - * Export kMaxLength after typed array support is determined. - */ -exports.kMaxLength = kMaxLength() - -function typedArraySupport () { - try { - var arr = new Uint8Array(1) - arr.__proto__ = {__proto__: Uint8Array.prototype, foo: function () { return 42 }} - return arr.foo() === 42 && // typed array instances can be augmented - typeof arr.subarray === 'function' && // chrome 9-10 lack `subarray` - arr.subarray(1, 1).byteLength === 0 // ie10 has broken `subarray` - } catch (e) { - return false - } -} - -function kMaxLength () { - return Buffer.TYPED_ARRAY_SUPPORT - ? 0x7fffffff - : 0x3fffffff -} - -function createBuffer (that, length) { - if (kMaxLength() < length) { - throw new RangeError('Invalid typed array length') - } - if (Buffer.TYPED_ARRAY_SUPPORT) { - // Return an augmented `Uint8Array` instance, for best performance - that = new Uint8Array(length) - that.__proto__ = Buffer.prototype - } else { - // Fallback: Return an object instance of the Buffer class - if (that === null) { - that = new Buffer(length) - } - that.length = length - } - - return that -} - -/** - * The Buffer constructor returns instances of `Uint8Array` that have their - * prototype changed to `Buffer.prototype`. Furthermore, `Buffer` is a subclass of - * `Uint8Array`, so the returned instances will have all the node `Buffer` methods - * and the `Uint8Array` methods. Square bracket notation works as expected -- it - * returns a single octet. - * - * The `Uint8Array` prototype remains unmodified. - */ - -function Buffer (arg, encodingOrOffset, length) { - if (!Buffer.TYPED_ARRAY_SUPPORT && !(this instanceof Buffer)) { - return new Buffer(arg, encodingOrOffset, length) - } - - // Common case. - if (typeof arg === 'number') { - if (typeof encodingOrOffset === 'string') { - throw new Error( - 'If encoding is specified then the first argument must be a string' - ) - } - return allocUnsafe(this, arg) - } - return from(this, arg, encodingOrOffset, length) -} - -Buffer.poolSize = 8192 // not used by this implementation - -// TODO: Legacy, not needed anymore. Remove in next major version. -Buffer._augment = function (arr) { - arr.__proto__ = Buffer.prototype - return arr -} - -function from (that, value, encodingOrOffset, length) { - if (typeof value === 'number') { - throw new TypeError('"value" argument must not be a number') - } - - if (typeof ArrayBuffer !== 'undefined' && value instanceof ArrayBuffer) { - return fromArrayBuffer(that, value, encodingOrOffset, length) - } - - if (typeof value === 'string') { - return fromString(that, value, encodingOrOffset) - } - - return fromObject(that, value) -} - -/** - * Functionally equivalent to Buffer(arg, encoding) but throws a TypeError - * if value is a number. - * Buffer.from(str[, encoding]) - * Buffer.from(array) - * Buffer.from(buffer) - * Buffer.from(arrayBuffer[, byteOffset[, length]]) - **/ -Buffer.from = function (value, encodingOrOffset, length) { - return from(null, value, encodingOrOffset, length) -} - -if (Buffer.TYPED_ARRAY_SUPPORT) { - Buffer.prototype.__proto__ = Uint8Array.prototype - Buffer.__proto__ = Uint8Array - if (typeof Symbol !== 'undefined' && Symbol.species && - Buffer[Symbol.species] === Buffer) { - // Fix subarray() in ES2016. See: https://github.com/feross/buffer/pull/97 - Object.defineProperty(Buffer, Symbol.species, { - value: null, - configurable: true - }) - } -} - -function assertSize (size) { - if (typeof size !== 'number') { - throw new TypeError('"size" argument must be a number') - } else if (size < 0) { - throw new RangeError('"size" argument must not be negative') - } -} - -function alloc (that, size, fill, encoding) { - assertSize(size) - if (size <= 0) { - return createBuffer(that, size) - } - if (fill !== undefined) { - // Only pay attention to encoding if it's a string. This - // prevents accidentally sending in a number that would - // be interpretted as a start offset. - return typeof encoding === 'string' - ? createBuffer(that, size).fill(fill, encoding) - : createBuffer(that, size).fill(fill) - } - return createBuffer(that, size) -} - -/** - * Creates a new filled Buffer instance. - * alloc(size[, fill[, encoding]]) - **/ -Buffer.alloc = function (size, fill, encoding) { - return alloc(null, size, fill, encoding) -} - -function allocUnsafe (that, size) { - assertSize(size) - that = createBuffer(that, size < 0 ? 0 : checked(size) | 0) - if (!Buffer.TYPED_ARRAY_SUPPORT) { - for (var i = 0; i < size; ++i) { - that[i] = 0 - } - } - return that -} - -/** - * Equivalent to Buffer(num), by default creates a non-zero-filled Buffer instance. - * */ -Buffer.allocUnsafe = function (size) { - return allocUnsafe(null, size) -} -/** - * Equivalent to SlowBuffer(num), by default creates a non-zero-filled Buffer instance. - */ -Buffer.allocUnsafeSlow = function (size) { - return allocUnsafe(null, size) -} - -function fromString (that, string, encoding) { - if (typeof encoding !== 'string' || encoding === '') { - encoding = 'utf8' - } - - if (!Buffer.isEncoding(encoding)) { - throw new TypeError('"encoding" must be a valid string encoding') - } - - var length = byteLength(string, encoding) | 0 - that = createBuffer(that, length) - - var actual = that.write(string, encoding) - - if (actual !== length) { - // Writing a hex string, for example, that contains invalid characters will - // cause everything after the first invalid character to be ignored. (e.g. - // 'abxxcd' will be treated as 'ab') - that = that.slice(0, actual) - } - - return that -} - -function fromArrayLike (that, array) { - var length = array.length < 0 ? 0 : checked(array.length) | 0 - that = createBuffer(that, length) - for (var i = 0; i < length; i += 1) { - that[i] = array[i] & 255 - } - return that -} - -function fromArrayBuffer (that, array, byteOffset, length) { - array.byteLength // this throws if `array` is not a valid ArrayBuffer - - if (byteOffset < 0 || array.byteLength < byteOffset) { - throw new RangeError('\'offset\' is out of bounds') - } - - if (array.byteLength < byteOffset + (length || 0)) { - throw new RangeError('\'length\' is out of bounds') - } - - if (byteOffset === undefined && length === undefined) { - array = new Uint8Array(array) - } else if (length === undefined) { - array = new Uint8Array(array, byteOffset) - } else { - array = new Uint8Array(array, byteOffset, length) - } - - if (Buffer.TYPED_ARRAY_SUPPORT) { - // Return an augmented `Uint8Array` instance, for best performance - that = array - that.__proto__ = Buffer.prototype - } else { - // Fallback: Return an object instance of the Buffer class - that = fromArrayLike(that, array) - } - return that -} - -function fromObject (that, obj) { - if (Buffer.isBuffer(obj)) { - var len = checked(obj.length) | 0 - that = createBuffer(that, len) - - if (that.length === 0) { - return that - } - - obj.copy(that, 0, 0, len) - return that - } - - if (obj) { - if ((typeof ArrayBuffer !== 'undefined' && - obj.buffer instanceof ArrayBuffer) || 'length' in obj) { - if (typeof obj.length !== 'number' || isnan(obj.length)) { - return createBuffer(that, 0) - } - return fromArrayLike(that, obj) - } - - if (obj.type === 'Buffer' && isArray(obj.data)) { - return fromArrayLike(that, obj.data) - } - } - - throw new TypeError('First argument must be a string, Buffer, ArrayBuffer, Array, or array-like object.') -} - -function checked (length) { - // Note: cannot use `length < kMaxLength()` here because that fails when - // length is NaN (which is otherwise coerced to zero.) - if (length >= kMaxLength()) { - throw new RangeError('Attempt to allocate Buffer larger than maximum ' + - 'size: 0x' + kMaxLength().toString(16) + ' bytes') - } - return length | 0 -} - -function SlowBuffer (length) { - if (+length != length) { // eslint-disable-line eqeqeq - length = 0 - } - return Buffer.alloc(+length) -} - -Buffer.isBuffer = function isBuffer (b) { - return !!(b != null && b._isBuffer) -} - -Buffer.compare = function compare (a, b) { - if (!Buffer.isBuffer(a) || !Buffer.isBuffer(b)) { - throw new TypeError('Arguments must be Buffers') - } - - if (a === b) return 0 - - var x = a.length - var y = b.length - - for (var i = 0, len = Math.min(x, y); i < len; ++i) { - if (a[i] !== b[i]) { - x = a[i] - y = b[i] - break - } - } - - if (x < y) return -1 - if (y < x) return 1 - return 0 -} - -Buffer.isEncoding = function isEncoding (encoding) { - switch (String(encoding).toLowerCase()) { - case 'hex': - case 'utf8': - case 'utf-8': - case 'ascii': - case 'latin1': - case 'binary': - case 'base64': - case 'ucs2': - case 'ucs-2': - case 'utf16le': - case 'utf-16le': - return true - default: - return false - } -} - -Buffer.concat = function concat (list, length) { - if (!isArray(list)) { - throw new TypeError('"list" argument must be an Array of Buffers') - } - - if (list.length === 0) { - return Buffer.alloc(0) - } - - var i - if (length === undefined) { - length = 0 - for (i = 0; i < list.length; ++i) { - length += list[i].length - } - } - - var buffer = Buffer.allocUnsafe(length) - var pos = 0 - for (i = 0; i < list.length; ++i) { - var buf = list[i] - if (!Buffer.isBuffer(buf)) { - throw new TypeError('"list" argument must be an Array of Buffers') - } - buf.copy(buffer, pos) - pos += buf.length - } - return buffer -} - -function byteLength (string, encoding) { - if (Buffer.isBuffer(string)) { - return string.length - } - if (typeof ArrayBuffer !== 'undefined' && typeof ArrayBuffer.isView === 'function' && - (ArrayBuffer.isView(string) || string instanceof ArrayBuffer)) { - return string.byteLength - } - if (typeof string !== 'string') { - string = '' + string - } - - var len = string.length - if (len === 0) return 0 - - // Use a for loop to avoid recursion - var loweredCase = false - for (;;) { - switch (encoding) { - case 'ascii': - case 'latin1': - case 'binary': - return len - case 'utf8': - case 'utf-8': - case undefined: - return utf8ToBytes(string).length - case 'ucs2': - case 'ucs-2': - case 'utf16le': - case 'utf-16le': - return len * 2 - case 'hex': - return len >>> 1 - case 'base64': - return base64ToBytes(string).length - default: - if (loweredCase) return utf8ToBytes(string).length // assume utf8 - encoding = ('' + encoding).toLowerCase() - loweredCase = true - } - } -} -Buffer.byteLength = byteLength - -function slowToString (encoding, start, end) { - var loweredCase = false - - // No need to verify that "this.length <= MAX_UINT32" since it's a read-only - // property of a typed array. - - // This behaves neither like String nor Uint8Array in that we set start/end - // to their upper/lower bounds if the value passed is out of range. - // undefined is handled specially as per ECMA-262 6th Edition, - // Section 13.3.3.7 Runtime Semantics: KeyedBindingInitialization. - if (start === undefined || start < 0) { - start = 0 - } - // Return early if start > this.length. Done here to prevent potential uint32 - // coercion fail below. - if (start > this.length) { - return '' - } - - if (end === undefined || end > this.length) { - end = this.length - } - - if (end <= 0) { - return '' - } - - // Force coersion to uint32. This will also coerce falsey/NaN values to 0. - end >>>= 0 - start >>>= 0 - - if (end <= start) { - return '' - } - - if (!encoding) encoding = 'utf8' - - while (true) { - switch (encoding) { - case 'hex': - return hexSlice(this, start, end) - - case 'utf8': - case 'utf-8': - return utf8Slice(this, start, end) - - case 'ascii': - return asciiSlice(this, start, end) - - case 'latin1': - case 'binary': - return latin1Slice(this, start, end) - - case 'base64': - return base64Slice(this, start, end) - - case 'ucs2': - case 'ucs-2': - case 'utf16le': - case 'utf-16le': - return utf16leSlice(this, start, end) - - default: - if (loweredCase) throw new TypeError('Unknown encoding: ' + encoding) - encoding = (encoding + '').toLowerCase() - loweredCase = true - } - } -} - -// The property is used by `Buffer.isBuffer` and `is-buffer` (in Safari 5-7) to detect -// Buffer instances. -Buffer.prototype._isBuffer = true - -function swap (b, n, m) { - var i = b[n] - b[n] = b[m] - b[m] = i -} - -Buffer.prototype.swap16 = function swap16 () { - var len = this.length - if (len % 2 !== 0) { - throw new RangeError('Buffer size must be a multiple of 16-bits') - } - for (var i = 0; i < len; i += 2) { - swap(this, i, i + 1) - } - return this -} - -Buffer.prototype.swap32 = function swap32 () { - var len = this.length - if (len % 4 !== 0) { - throw new RangeError('Buffer size must be a multiple of 32-bits') - } - for (var i = 0; i < len; i += 4) { - swap(this, i, i + 3) - swap(this, i + 1, i + 2) - } - return this -} - -Buffer.prototype.swap64 = function swap64 () { - var len = this.length - if (len % 8 !== 0) { - throw new RangeError('Buffer size must be a multiple of 64-bits') - } - for (var i = 0; i < len; i += 8) { - swap(this, i, i + 7) - swap(this, i + 1, i + 6) - swap(this, i + 2, i + 5) - swap(this, i + 3, i + 4) - } - return this -} - -Buffer.prototype.toString = function toString () { - var length = this.length | 0 - if (length === 0) return '' - if (arguments.length === 0) return utf8Slice(this, 0, length) - return slowToString.apply(this, arguments) -} - -Buffer.prototype.equals = function equals (b) { - if (!Buffer.isBuffer(b)) throw new TypeError('Argument must be a Buffer') - if (this === b) return true - return Buffer.compare(this, b) === 0 -} - -Buffer.prototype.inspect = function inspect () { - var str = '' - var max = exports.INSPECT_MAX_BYTES - if (this.length > 0) { - str = this.toString('hex', 0, max).match(/.{2}/g).join(' ') - if (this.length > max) str += ' ... ' - } - return '' -} - -Buffer.prototype.compare = function compare (target, start, end, thisStart, thisEnd) { - if (!Buffer.isBuffer(target)) { - throw new TypeError('Argument must be a Buffer') - } - - if (start === undefined) { - start = 0 - } - if (end === undefined) { - end = target ? target.length : 0 - } - if (thisStart === undefined) { - thisStart = 0 - } - if (thisEnd === undefined) { - thisEnd = this.length - } - - if (start < 0 || end > target.length || thisStart < 0 || thisEnd > this.length) { - throw new RangeError('out of range index') - } - - if (thisStart >= thisEnd && start >= end) { - return 0 - } - if (thisStart >= thisEnd) { - return -1 - } - if (start >= end) { - return 1 - } - - start >>>= 0 - end >>>= 0 - thisStart >>>= 0 - thisEnd >>>= 0 - - if (this === target) return 0 - - var x = thisEnd - thisStart - var y = end - start - var len = Math.min(x, y) - - var thisCopy = this.slice(thisStart, thisEnd) - var targetCopy = target.slice(start, end) - - for (var i = 0; i < len; ++i) { - if (thisCopy[i] !== targetCopy[i]) { - x = thisCopy[i] - y = targetCopy[i] - break - } - } - - if (x < y) return -1 - if (y < x) return 1 - return 0 -} - -// Finds either the first index of `val` in `buffer` at offset >= `byteOffset`, -// OR the last index of `val` in `buffer` at offset <= `byteOffset`. -// -// Arguments: -// - buffer - a Buffer to search -// - val - a string, Buffer, or number -// - byteOffset - an index into `buffer`; will be clamped to an int32 -// - encoding - an optional encoding, relevant is val is a string -// - dir - true for indexOf, false for lastIndexOf -function bidirectionalIndexOf (buffer, val, byteOffset, encoding, dir) { - // Empty buffer means no match - if (buffer.length === 0) return -1 - - // Normalize byteOffset - if (typeof byteOffset === 'string') { - encoding = byteOffset - byteOffset = 0 - } else if (byteOffset > 0x7fffffff) { - byteOffset = 0x7fffffff - } else if (byteOffset < -0x80000000) { - byteOffset = -0x80000000 - } - byteOffset = +byteOffset // Coerce to Number. - if (isNaN(byteOffset)) { - // byteOffset: it it's undefined, null, NaN, "foo", etc, search whole buffer - byteOffset = dir ? 0 : (buffer.length - 1) - } - - // Normalize byteOffset: negative offsets start from the end of the buffer - if (byteOffset < 0) byteOffset = buffer.length + byteOffset - if (byteOffset >= buffer.length) { - if (dir) return -1 - else byteOffset = buffer.length - 1 - } else if (byteOffset < 0) { - if (dir) byteOffset = 0 - else return -1 - } - - // Normalize val - if (typeof val === 'string') { - val = Buffer.from(val, encoding) - } - - // Finally, search either indexOf (if dir is true) or lastIndexOf - if (Buffer.isBuffer(val)) { - // Special case: looking for empty string/buffer always fails - if (val.length === 0) { - return -1 - } - return arrayIndexOf(buffer, val, byteOffset, encoding, dir) - } else if (typeof val === 'number') { - val = val & 0xFF // Search for a byte value [0-255] - if (Buffer.TYPED_ARRAY_SUPPORT && - typeof Uint8Array.prototype.indexOf === 'function') { - if (dir) { - return Uint8Array.prototype.indexOf.call(buffer, val, byteOffset) - } else { - return Uint8Array.prototype.lastIndexOf.call(buffer, val, byteOffset) - } - } - return arrayIndexOf(buffer, [ val ], byteOffset, encoding, dir) - } - - throw new TypeError('val must be string, number or Buffer') -} - -function arrayIndexOf (arr, val, byteOffset, encoding, dir) { - var indexSize = 1 - var arrLength = arr.length - var valLength = val.length - - if (encoding !== undefined) { - encoding = String(encoding).toLowerCase() - if (encoding === 'ucs2' || encoding === 'ucs-2' || - encoding === 'utf16le' || encoding === 'utf-16le') { - if (arr.length < 2 || val.length < 2) { - return -1 - } - indexSize = 2 - arrLength /= 2 - valLength /= 2 - byteOffset /= 2 - } - } - - function read (buf, i) { - if (indexSize === 1) { - return buf[i] - } else { - return buf.readUInt16BE(i * indexSize) - } - } - - var i - if (dir) { - var foundIndex = -1 - for (i = byteOffset; i < arrLength; i++) { - if (read(arr, i) === read(val, foundIndex === -1 ? 0 : i - foundIndex)) { - if (foundIndex === -1) foundIndex = i - if (i - foundIndex + 1 === valLength) return foundIndex * indexSize - } else { - if (foundIndex !== -1) i -= i - foundIndex - foundIndex = -1 - } - } - } else { - if (byteOffset + valLength > arrLength) byteOffset = arrLength - valLength - for (i = byteOffset; i >= 0; i--) { - var found = true - for (var j = 0; j < valLength; j++) { - if (read(arr, i + j) !== read(val, j)) { - found = false - break - } - } - if (found) return i - } - } - - return -1 -} - -Buffer.prototype.includes = function includes (val, byteOffset, encoding) { - return this.indexOf(val, byteOffset, encoding) !== -1 -} - -Buffer.prototype.indexOf = function indexOf (val, byteOffset, encoding) { - return bidirectionalIndexOf(this, val, byteOffset, encoding, true) -} - -Buffer.prototype.lastIndexOf = function lastIndexOf (val, byteOffset, encoding) { - return bidirectionalIndexOf(this, val, byteOffset, encoding, false) -} - -function hexWrite (buf, string, offset, length) { - offset = Number(offset) || 0 - var remaining = buf.length - offset - if (!length) { - length = remaining - } else { - length = Number(length) - if (length > remaining) { - length = remaining - } - } - - // must be an even number of digits - var strLen = string.length - if (strLen % 2 !== 0) throw new TypeError('Invalid hex string') - - if (length > strLen / 2) { - length = strLen / 2 - } - for (var i = 0; i < length; ++i) { - var parsed = parseInt(string.substr(i * 2, 2), 16) - if (isNaN(parsed)) return i - buf[offset + i] = parsed - } - return i -} - -function utf8Write (buf, string, offset, length) { - return blitBuffer(utf8ToBytes(string, buf.length - offset), buf, offset, length) -} - -function asciiWrite (buf, string, offset, length) { - return blitBuffer(asciiToBytes(string), buf, offset, length) -} - -function latin1Write (buf, string, offset, length) { - return asciiWrite(buf, string, offset, length) -} - -function base64Write (buf, string, offset, length) { - return blitBuffer(base64ToBytes(string), buf, offset, length) -} - -function ucs2Write (buf, string, offset, length) { - return blitBuffer(utf16leToBytes(string, buf.length - offset), buf, offset, length) -} - -Buffer.prototype.write = function write (string, offset, length, encoding) { - // Buffer#write(string) - if (offset === undefined) { - encoding = 'utf8' - length = this.length - offset = 0 - // Buffer#write(string, encoding) - } else if (length === undefined && typeof offset === 'string') { - encoding = offset - length = this.length - offset = 0 - // Buffer#write(string, offset[, length][, encoding]) - } else if (isFinite(offset)) { - offset = offset | 0 - if (isFinite(length)) { - length = length | 0 - if (encoding === undefined) encoding = 'utf8' - } else { - encoding = length - length = undefined - } - // legacy write(string, encoding, offset, length) - remove in v0.13 - } else { - throw new Error( - 'Buffer.write(string, encoding, offset[, length]) is no longer supported' - ) - } - - var remaining = this.length - offset - if (length === undefined || length > remaining) length = remaining - - if ((string.length > 0 && (length < 0 || offset < 0)) || offset > this.length) { - throw new RangeError('Attempt to write outside buffer bounds') - } - - if (!encoding) encoding = 'utf8' - - var loweredCase = false - for (;;) { - switch (encoding) { - case 'hex': - return hexWrite(this, string, offset, length) - - case 'utf8': - case 'utf-8': - return utf8Write(this, string, offset, length) - - case 'ascii': - return asciiWrite(this, string, offset, length) - - case 'latin1': - case 'binary': - return latin1Write(this, string, offset, length) - - case 'base64': - // Warning: maxLength not taken into account in base64Write - return base64Write(this, string, offset, length) - - case 'ucs2': - case 'ucs-2': - case 'utf16le': - case 'utf-16le': - return ucs2Write(this, string, offset, length) - - default: - if (loweredCase) throw new TypeError('Unknown encoding: ' + encoding) - encoding = ('' + encoding).toLowerCase() - loweredCase = true - } - } -} - -Buffer.prototype.toJSON = function toJSON () { - return { - type: 'Buffer', - data: Array.prototype.slice.call(this._arr || this, 0) - } -} - -function base64Slice (buf, start, end) { - if (start === 0 && end === buf.length) { - return base64.fromByteArray(buf) - } else { - return base64.fromByteArray(buf.slice(start, end)) - } -} - -function utf8Slice (buf, start, end) { - end = Math.min(buf.length, end) - var res = [] - - var i = start - while (i < end) { - var firstByte = buf[i] - var codePoint = null - var bytesPerSequence = (firstByte > 0xEF) ? 4 - : (firstByte > 0xDF) ? 3 - : (firstByte > 0xBF) ? 2 - : 1 - - if (i + bytesPerSequence <= end) { - var secondByte, thirdByte, fourthByte, tempCodePoint - - switch (bytesPerSequence) { - case 1: - if (firstByte < 0x80) { - codePoint = firstByte - } - break - case 2: - secondByte = buf[i + 1] - if ((secondByte & 0xC0) === 0x80) { - tempCodePoint = (firstByte & 0x1F) << 0x6 | (secondByte & 0x3F) - if (tempCodePoint > 0x7F) { - codePoint = tempCodePoint - } - } - break - case 3: - secondByte = buf[i + 1] - thirdByte = buf[i + 2] - if ((secondByte & 0xC0) === 0x80 && (thirdByte & 0xC0) === 0x80) { - tempCodePoint = (firstByte & 0xF) << 0xC | (secondByte & 0x3F) << 0x6 | (thirdByte & 0x3F) - if (tempCodePoint > 0x7FF && (tempCodePoint < 0xD800 || tempCodePoint > 0xDFFF)) { - codePoint = tempCodePoint - } - } - break - case 4: - secondByte = buf[i + 1] - thirdByte = buf[i + 2] - fourthByte = buf[i + 3] - if ((secondByte & 0xC0) === 0x80 && (thirdByte & 0xC0) === 0x80 && (fourthByte & 0xC0) === 0x80) { - tempCodePoint = (firstByte & 0xF) << 0x12 | (secondByte & 0x3F) << 0xC | (thirdByte & 0x3F) << 0x6 | (fourthByte & 0x3F) - if (tempCodePoint > 0xFFFF && tempCodePoint < 0x110000) { - codePoint = tempCodePoint - } - } - } - } - - if (codePoint === null) { - // we did not generate a valid codePoint so insert a - // replacement char (U+FFFD) and advance only 1 byte - codePoint = 0xFFFD - bytesPerSequence = 1 - } else if (codePoint > 0xFFFF) { - // encode to utf16 (surrogate pair dance) - codePoint -= 0x10000 - res.push(codePoint >>> 10 & 0x3FF | 0xD800) - codePoint = 0xDC00 | codePoint & 0x3FF - } - - res.push(codePoint) - i += bytesPerSequence - } - - return decodeCodePointsArray(res) -} - -// Based on http://stackoverflow.com/a/22747272/680742, the browser with -// the lowest limit is Chrome, with 0x10000 args. -// We go 1 magnitude less, for safety -var MAX_ARGUMENTS_LENGTH = 0x1000 - -function decodeCodePointsArray (codePoints) { - var len = codePoints.length - if (len <= MAX_ARGUMENTS_LENGTH) { - return String.fromCharCode.apply(String, codePoints) // avoid extra slice() - } - - // Decode in chunks to avoid "call stack size exceeded". - var res = '' - var i = 0 - while (i < len) { - res += String.fromCharCode.apply( - String, - codePoints.slice(i, i += MAX_ARGUMENTS_LENGTH) - ) - } - return res -} - -function asciiSlice (buf, start, end) { - var ret = '' - end = Math.min(buf.length, end) - - for (var i = start; i < end; ++i) { - ret += String.fromCharCode(buf[i] & 0x7F) - } - return ret -} - -function latin1Slice (buf, start, end) { - var ret = '' - end = Math.min(buf.length, end) - - for (var i = start; i < end; ++i) { - ret += String.fromCharCode(buf[i]) - } - return ret -} - -function hexSlice (buf, start, end) { - var len = buf.length - - if (!start || start < 0) start = 0 - if (!end || end < 0 || end > len) end = len - - var out = '' - for (var i = start; i < end; ++i) { - out += toHex(buf[i]) - } - return out -} - -function utf16leSlice (buf, start, end) { - var bytes = buf.slice(start, end) - var res = '' - for (var i = 0; i < bytes.length; i += 2) { - res += String.fromCharCode(bytes[i] + bytes[i + 1] * 256) - } - return res -} - -Buffer.prototype.slice = function slice (start, end) { - var len = this.length - start = ~~start - end = end === undefined ? len : ~~end - - if (start < 0) { - start += len - if (start < 0) start = 0 - } else if (start > len) { - start = len - } - - if (end < 0) { - end += len - if (end < 0) end = 0 - } else if (end > len) { - end = len - } - - if (end < start) end = start - - var newBuf - if (Buffer.TYPED_ARRAY_SUPPORT) { - newBuf = this.subarray(start, end) - newBuf.__proto__ = Buffer.prototype - } else { - var sliceLen = end - start - newBuf = new Buffer(sliceLen, undefined) - for (var i = 0; i < sliceLen; ++i) { - newBuf[i] = this[i + start] - } - } - - return newBuf -} - -/* - * Need to make sure that buffer isn't trying to write out of bounds. - */ -function checkOffset (offset, ext, length) { - if ((offset % 1) !== 0 || offset < 0) throw new RangeError('offset is not uint') - if (offset + ext > length) throw new RangeError('Trying to access beyond buffer length') -} - -Buffer.prototype.readUIntLE = function readUIntLE (offset, byteLength, noAssert) { - offset = offset | 0 - byteLength = byteLength | 0 - if (!noAssert) checkOffset(offset, byteLength, this.length) - - var val = this[offset] - var mul = 1 - var i = 0 - while (++i < byteLength && (mul *= 0x100)) { - val += this[offset + i] * mul - } - - return val -} - -Buffer.prototype.readUIntBE = function readUIntBE (offset, byteLength, noAssert) { - offset = offset | 0 - byteLength = byteLength | 0 - if (!noAssert) { - checkOffset(offset, byteLength, this.length) - } - - var val = this[offset + --byteLength] - var mul = 1 - while (byteLength > 0 && (mul *= 0x100)) { - val += this[offset + --byteLength] * mul - } - - return val -} - -Buffer.prototype.readUInt8 = function readUInt8 (offset, noAssert) { - if (!noAssert) checkOffset(offset, 1, this.length) - return this[offset] -} - -Buffer.prototype.readUInt16LE = function readUInt16LE (offset, noAssert) { - if (!noAssert) checkOffset(offset, 2, this.length) - return this[offset] | (this[offset + 1] << 8) -} - -Buffer.prototype.readUInt16BE = function readUInt16BE (offset, noAssert) { - if (!noAssert) checkOffset(offset, 2, this.length) - return (this[offset] << 8) | this[offset + 1] -} - -Buffer.prototype.readUInt32LE = function readUInt32LE (offset, noAssert) { - if (!noAssert) checkOffset(offset, 4, this.length) - - return ((this[offset]) | - (this[offset + 1] << 8) | - (this[offset + 2] << 16)) + - (this[offset + 3] * 0x1000000) -} - -Buffer.prototype.readUInt32BE = function readUInt32BE (offset, noAssert) { - if (!noAssert) checkOffset(offset, 4, this.length) - - return (this[offset] * 0x1000000) + - ((this[offset + 1] << 16) | - (this[offset + 2] << 8) | - this[offset + 3]) -} - -Buffer.prototype.readIntLE = function readIntLE (offset, byteLength, noAssert) { - offset = offset | 0 - byteLength = byteLength | 0 - if (!noAssert) checkOffset(offset, byteLength, this.length) - - var val = this[offset] - var mul = 1 - var i = 0 - while (++i < byteLength && (mul *= 0x100)) { - val += this[offset + i] * mul - } - mul *= 0x80 - - if (val >= mul) val -= Math.pow(2, 8 * byteLength) - - return val -} - -Buffer.prototype.readIntBE = function readIntBE (offset, byteLength, noAssert) { - offset = offset | 0 - byteLength = byteLength | 0 - if (!noAssert) checkOffset(offset, byteLength, this.length) - - var i = byteLength - var mul = 1 - var val = this[offset + --i] - while (i > 0 && (mul *= 0x100)) { - val += this[offset + --i] * mul - } - mul *= 0x80 - - if (val >= mul) val -= Math.pow(2, 8 * byteLength) - - return val -} - -Buffer.prototype.readInt8 = function readInt8 (offset, noAssert) { - if (!noAssert) checkOffset(offset, 1, this.length) - if (!(this[offset] & 0x80)) return (this[offset]) - return ((0xff - this[offset] + 1) * -1) -} - -Buffer.prototype.readInt16LE = function readInt16LE (offset, noAssert) { - if (!noAssert) checkOffset(offset, 2, this.length) - var val = this[offset] | (this[offset + 1] << 8) - return (val & 0x8000) ? val | 0xFFFF0000 : val -} - -Buffer.prototype.readInt16BE = function readInt16BE (offset, noAssert) { - if (!noAssert) checkOffset(offset, 2, this.length) - var val = this[offset + 1] | (this[offset] << 8) - return (val & 0x8000) ? val | 0xFFFF0000 : val -} - -Buffer.prototype.readInt32LE = function readInt32LE (offset, noAssert) { - if (!noAssert) checkOffset(offset, 4, this.length) - - return (this[offset]) | - (this[offset + 1] << 8) | - (this[offset + 2] << 16) | - (this[offset + 3] << 24) -} - -Buffer.prototype.readInt32BE = function readInt32BE (offset, noAssert) { - if (!noAssert) checkOffset(offset, 4, this.length) - - return (this[offset] << 24) | - (this[offset + 1] << 16) | - (this[offset + 2] << 8) | - (this[offset + 3]) -} - -Buffer.prototype.readFloatLE = function readFloatLE (offset, noAssert) { - if (!noAssert) checkOffset(offset, 4, this.length) - return ieee754.read(this, offset, true, 23, 4) -} - -Buffer.prototype.readFloatBE = function readFloatBE (offset, noAssert) { - if (!noAssert) checkOffset(offset, 4, this.length) - return ieee754.read(this, offset, false, 23, 4) -} - -Buffer.prototype.readDoubleLE = function readDoubleLE (offset, noAssert) { - if (!noAssert) checkOffset(offset, 8, this.length) - return ieee754.read(this, offset, true, 52, 8) -} - -Buffer.prototype.readDoubleBE = function readDoubleBE (offset, noAssert) { - if (!noAssert) checkOffset(offset, 8, this.length) - return ieee754.read(this, offset, false, 52, 8) -} - -function checkInt (buf, value, offset, ext, max, min) { - if (!Buffer.isBuffer(buf)) throw new TypeError('"buffer" argument must be a Buffer instance') - if (value > max || value < min) throw new RangeError('"value" argument is out of bounds') - if (offset + ext > buf.length) throw new RangeError('Index out of range') -} - -Buffer.prototype.writeUIntLE = function writeUIntLE (value, offset, byteLength, noAssert) { - value = +value - offset = offset | 0 - byteLength = byteLength | 0 - if (!noAssert) { - var maxBytes = Math.pow(2, 8 * byteLength) - 1 - checkInt(this, value, offset, byteLength, maxBytes, 0) - } - - var mul = 1 - var i = 0 - this[offset] = value & 0xFF - while (++i < byteLength && (mul *= 0x100)) { - this[offset + i] = (value / mul) & 0xFF - } - - return offset + byteLength -} - -Buffer.prototype.writeUIntBE = function writeUIntBE (value, offset, byteLength, noAssert) { - value = +value - offset = offset | 0 - byteLength = byteLength | 0 - if (!noAssert) { - var maxBytes = Math.pow(2, 8 * byteLength) - 1 - checkInt(this, value, offset, byteLength, maxBytes, 0) - } - - var i = byteLength - 1 - var mul = 1 - this[offset + i] = value & 0xFF - while (--i >= 0 && (mul *= 0x100)) { - this[offset + i] = (value / mul) & 0xFF - } - - return offset + byteLength -} - -Buffer.prototype.writeUInt8 = function writeUInt8 (value, offset, noAssert) { - value = +value - offset = offset | 0 - if (!noAssert) checkInt(this, value, offset, 1, 0xff, 0) - if (!Buffer.TYPED_ARRAY_SUPPORT) value = Math.floor(value) - this[offset] = (value & 0xff) - return offset + 1 -} - -function objectWriteUInt16 (buf, value, offset, littleEndian) { - if (value < 0) value = 0xffff + value + 1 - for (var i = 0, j = Math.min(buf.length - offset, 2); i < j; ++i) { - buf[offset + i] = (value & (0xff << (8 * (littleEndian ? i : 1 - i)))) >>> - (littleEndian ? i : 1 - i) * 8 - } -} - -Buffer.prototype.writeUInt16LE = function writeUInt16LE (value, offset, noAssert) { - value = +value - offset = offset | 0 - if (!noAssert) checkInt(this, value, offset, 2, 0xffff, 0) - if (Buffer.TYPED_ARRAY_SUPPORT) { - this[offset] = (value & 0xff) - this[offset + 1] = (value >>> 8) - } else { - objectWriteUInt16(this, value, offset, true) - } - return offset + 2 -} - -Buffer.prototype.writeUInt16BE = function writeUInt16BE (value, offset, noAssert) { - value = +value - offset = offset | 0 - if (!noAssert) checkInt(this, value, offset, 2, 0xffff, 0) - if (Buffer.TYPED_ARRAY_SUPPORT) { - this[offset] = (value >>> 8) - this[offset + 1] = (value & 0xff) - } else { - objectWriteUInt16(this, value, offset, false) - } - return offset + 2 -} - -function objectWriteUInt32 (buf, value, offset, littleEndian) { - if (value < 0) value = 0xffffffff + value + 1 - for (var i = 0, j = Math.min(buf.length - offset, 4); i < j; ++i) { - buf[offset + i] = (value >>> (littleEndian ? i : 3 - i) * 8) & 0xff - } -} - -Buffer.prototype.writeUInt32LE = function writeUInt32LE (value, offset, noAssert) { - value = +value - offset = offset | 0 - if (!noAssert) checkInt(this, value, offset, 4, 0xffffffff, 0) - if (Buffer.TYPED_ARRAY_SUPPORT) { - this[offset + 3] = (value >>> 24) - this[offset + 2] = (value >>> 16) - this[offset + 1] = (value >>> 8) - this[offset] = (value & 0xff) - } else { - objectWriteUInt32(this, value, offset, true) - } - return offset + 4 -} - -Buffer.prototype.writeUInt32BE = function writeUInt32BE (value, offset, noAssert) { - value = +value - offset = offset | 0 - if (!noAssert) checkInt(this, value, offset, 4, 0xffffffff, 0) - if (Buffer.TYPED_ARRAY_SUPPORT) { - this[offset] = (value >>> 24) - this[offset + 1] = (value >>> 16) - this[offset + 2] = (value >>> 8) - this[offset + 3] = (value & 0xff) - } else { - objectWriteUInt32(this, value, offset, false) - } - return offset + 4 -} - -Buffer.prototype.writeIntLE = function writeIntLE (value, offset, byteLength, noAssert) { - value = +value - offset = offset | 0 - if (!noAssert) { - var limit = Math.pow(2, 8 * byteLength - 1) - - checkInt(this, value, offset, byteLength, limit - 1, -limit) - } - - var i = 0 - var mul = 1 - var sub = 0 - this[offset] = value & 0xFF - while (++i < byteLength && (mul *= 0x100)) { - if (value < 0 && sub === 0 && this[offset + i - 1] !== 0) { - sub = 1 - } - this[offset + i] = ((value / mul) >> 0) - sub & 0xFF - } - - return offset + byteLength -} - -Buffer.prototype.writeIntBE = function writeIntBE (value, offset, byteLength, noAssert) { - value = +value - offset = offset | 0 - if (!noAssert) { - var limit = Math.pow(2, 8 * byteLength - 1) - - checkInt(this, value, offset, byteLength, limit - 1, -limit) - } - - var i = byteLength - 1 - var mul = 1 - var sub = 0 - this[offset + i] = value & 0xFF - while (--i >= 0 && (mul *= 0x100)) { - if (value < 0 && sub === 0 && this[offset + i + 1] !== 0) { - sub = 1 - } - this[offset + i] = ((value / mul) >> 0) - sub & 0xFF - } - - return offset + byteLength -} - -Buffer.prototype.writeInt8 = function writeInt8 (value, offset, noAssert) { - value = +value - offset = offset | 0 - if (!noAssert) checkInt(this, value, offset, 1, 0x7f, -0x80) - if (!Buffer.TYPED_ARRAY_SUPPORT) value = Math.floor(value) - if (value < 0) value = 0xff + value + 1 - this[offset] = (value & 0xff) - return offset + 1 -} - -Buffer.prototype.writeInt16LE = function writeInt16LE (value, offset, noAssert) { - value = +value - offset = offset | 0 - if (!noAssert) checkInt(this, value, offset, 2, 0x7fff, -0x8000) - if (Buffer.TYPED_ARRAY_SUPPORT) { - this[offset] = (value & 0xff) - this[offset + 1] = (value >>> 8) - } else { - objectWriteUInt16(this, value, offset, true) - } - return offset + 2 -} - -Buffer.prototype.writeInt16BE = function writeInt16BE (value, offset, noAssert) { - value = +value - offset = offset | 0 - if (!noAssert) checkInt(this, value, offset, 2, 0x7fff, -0x8000) - if (Buffer.TYPED_ARRAY_SUPPORT) { - this[offset] = (value >>> 8) - this[offset + 1] = (value & 0xff) - } else { - objectWriteUInt16(this, value, offset, false) - } - return offset + 2 -} - -Buffer.prototype.writeInt32LE = function writeInt32LE (value, offset, noAssert) { - value = +value - offset = offset | 0 - if (!noAssert) checkInt(this, value, offset, 4, 0x7fffffff, -0x80000000) - if (Buffer.TYPED_ARRAY_SUPPORT) { - this[offset] = (value & 0xff) - this[offset + 1] = (value >>> 8) - this[offset + 2] = (value >>> 16) - this[offset + 3] = (value >>> 24) - } else { - objectWriteUInt32(this, value, offset, true) - } - return offset + 4 -} - -Buffer.prototype.writeInt32BE = function writeInt32BE (value, offset, noAssert) { - value = +value - offset = offset | 0 - if (!noAssert) checkInt(this, value, offset, 4, 0x7fffffff, -0x80000000) - if (value < 0) value = 0xffffffff + value + 1 - if (Buffer.TYPED_ARRAY_SUPPORT) { - this[offset] = (value >>> 24) - this[offset + 1] = (value >>> 16) - this[offset + 2] = (value >>> 8) - this[offset + 3] = (value & 0xff) - } else { - objectWriteUInt32(this, value, offset, false) - } - return offset + 4 -} - -function checkIEEE754 (buf, value, offset, ext, max, min) { - if (offset + ext > buf.length) throw new RangeError('Index out of range') - if (offset < 0) throw new RangeError('Index out of range') -} - -function writeFloat (buf, value, offset, littleEndian, noAssert) { - if (!noAssert) { - checkIEEE754(buf, value, offset, 4, 3.4028234663852886e+38, -3.4028234663852886e+38) - } - ieee754.write(buf, value, offset, littleEndian, 23, 4) - return offset + 4 -} - -Buffer.prototype.writeFloatLE = function writeFloatLE (value, offset, noAssert) { - return writeFloat(this, value, offset, true, noAssert) -} - -Buffer.prototype.writeFloatBE = function writeFloatBE (value, offset, noAssert) { - return writeFloat(this, value, offset, false, noAssert) -} - -function writeDouble (buf, value, offset, littleEndian, noAssert) { - if (!noAssert) { - checkIEEE754(buf, value, offset, 8, 1.7976931348623157E+308, -1.7976931348623157E+308) - } - ieee754.write(buf, value, offset, littleEndian, 52, 8) - return offset + 8 -} - -Buffer.prototype.writeDoubleLE = function writeDoubleLE (value, offset, noAssert) { - return writeDouble(this, value, offset, true, noAssert) -} - -Buffer.prototype.writeDoubleBE = function writeDoubleBE (value, offset, noAssert) { - return writeDouble(this, value, offset, false, noAssert) -} - -// copy(targetBuffer, targetStart=0, sourceStart=0, sourceEnd=buffer.length) -Buffer.prototype.copy = function copy (target, targetStart, start, end) { - if (!start) start = 0 - if (!end && end !== 0) end = this.length - if (targetStart >= target.length) targetStart = target.length - if (!targetStart) targetStart = 0 - if (end > 0 && end < start) end = start - - // Copy 0 bytes; we're done - if (end === start) return 0 - if (target.length === 0 || this.length === 0) return 0 - - // Fatal error conditions - if (targetStart < 0) { - throw new RangeError('targetStart out of bounds') - } - if (start < 0 || start >= this.length) throw new RangeError('sourceStart out of bounds') - if (end < 0) throw new RangeError('sourceEnd out of bounds') - - // Are we oob? - if (end > this.length) end = this.length - if (target.length - targetStart < end - start) { - end = target.length - targetStart + start - } - - var len = end - start - var i - - if (this === target && start < targetStart && targetStart < end) { - // descending copy from end - for (i = len - 1; i >= 0; --i) { - target[i + targetStart] = this[i + start] - } - } else if (len < 1000 || !Buffer.TYPED_ARRAY_SUPPORT) { - // ascending copy from start - for (i = 0; i < len; ++i) { - target[i + targetStart] = this[i + start] - } - } else { - Uint8Array.prototype.set.call( - target, - this.subarray(start, start + len), - targetStart - ) - } - - return len -} - -// Usage: -// buffer.fill(number[, offset[, end]]) -// buffer.fill(buffer[, offset[, end]]) -// buffer.fill(string[, offset[, end]][, encoding]) -Buffer.prototype.fill = function fill (val, start, end, encoding) { - // Handle string cases: - if (typeof val === 'string') { - if (typeof start === 'string') { - encoding = start - start = 0 - end = this.length - } else if (typeof end === 'string') { - encoding = end - end = this.length - } - if (val.length === 1) { - var code = val.charCodeAt(0) - if (code < 256) { - val = code - } - } - if (encoding !== undefined && typeof encoding !== 'string') { - throw new TypeError('encoding must be a string') - } - if (typeof encoding === 'string' && !Buffer.isEncoding(encoding)) { - throw new TypeError('Unknown encoding: ' + encoding) - } - } else if (typeof val === 'number') { - val = val & 255 - } - - // Invalid ranges are not set to a default, so can range check early. - if (start < 0 || this.length < start || this.length < end) { - throw new RangeError('Out of range index') - } - - if (end <= start) { - return this - } - - start = start >>> 0 - end = end === undefined ? this.length : end >>> 0 - - if (!val) val = 0 - - var i - if (typeof val === 'number') { - for (i = start; i < end; ++i) { - this[i] = val - } - } else { - var bytes = Buffer.isBuffer(val) - ? val - : utf8ToBytes(new Buffer(val, encoding).toString()) - var len = bytes.length - for (i = 0; i < end - start; ++i) { - this[i + start] = bytes[i % len] - } - } - - return this -} - -// HELPER FUNCTIONS -// ================ - -var INVALID_BASE64_RE = /[^+\/0-9A-Za-z-_]/g - -function base64clean (str) { - // Node strips out invalid characters like \n and \t from the string, base64-js does not - str = stringtrim(str).replace(INVALID_BASE64_RE, '') - // Node converts strings with length < 2 to '' - if (str.length < 2) return '' - // Node allows for non-padded base64 strings (missing trailing ===), base64-js does not - while (str.length % 4 !== 0) { - str = str + '=' - } - return str -} - -function stringtrim (str) { - if (str.trim) return str.trim() - return str.replace(/^\s+|\s+$/g, '') -} - -function toHex (n) { - if (n < 16) return '0' + n.toString(16) - return n.toString(16) -} - -function utf8ToBytes (string, units) { - units = units || Infinity - var codePoint - var length = string.length - var leadSurrogate = null - var bytes = [] - - for (var i = 0; i < length; ++i) { - codePoint = string.charCodeAt(i) - - // is surrogate component - if (codePoint > 0xD7FF && codePoint < 0xE000) { - // last char was a lead - if (!leadSurrogate) { - // no lead yet - if (codePoint > 0xDBFF) { - // unexpected trail - if ((units -= 3) > -1) bytes.push(0xEF, 0xBF, 0xBD) - continue - } else if (i + 1 === length) { - // unpaired lead - if ((units -= 3) > -1) bytes.push(0xEF, 0xBF, 0xBD) - continue - } - - // valid lead - leadSurrogate = codePoint - - continue - } - - // 2 leads in a row - if (codePoint < 0xDC00) { - if ((units -= 3) > -1) bytes.push(0xEF, 0xBF, 0xBD) - leadSurrogate = codePoint - continue - } - - // valid surrogate pair - codePoint = (leadSurrogate - 0xD800 << 10 | codePoint - 0xDC00) + 0x10000 - } else if (leadSurrogate) { - // valid bmp char, but last char was a lead - if ((units -= 3) > -1) bytes.push(0xEF, 0xBF, 0xBD) - } - - leadSurrogate = null - - // encode utf8 - if (codePoint < 0x80) { - if ((units -= 1) < 0) break - bytes.push(codePoint) - } else if (codePoint < 0x800) { - if ((units -= 2) < 0) break - bytes.push( - codePoint >> 0x6 | 0xC0, - codePoint & 0x3F | 0x80 - ) - } else if (codePoint < 0x10000) { - if ((units -= 3) < 0) break - bytes.push( - codePoint >> 0xC | 0xE0, - codePoint >> 0x6 & 0x3F | 0x80, - codePoint & 0x3F | 0x80 - ) - } else if (codePoint < 0x110000) { - if ((units -= 4) < 0) break - bytes.push( - codePoint >> 0x12 | 0xF0, - codePoint >> 0xC & 0x3F | 0x80, - codePoint >> 0x6 & 0x3F | 0x80, - codePoint & 0x3F | 0x80 - ) - } else { - throw new Error('Invalid code point') - } - } - - return bytes -} - -function asciiToBytes (str) { - var byteArray = [] - for (var i = 0; i < str.length; ++i) { - // Node's code seems to be doing this and not & 0x7F.. - byteArray.push(str.charCodeAt(i) & 0xFF) - } - return byteArray -} - -function utf16leToBytes (str, units) { - var c, hi, lo - var byteArray = [] - for (var i = 0; i < str.length; ++i) { - if ((units -= 2) < 0) break - - c = str.charCodeAt(i) - hi = c >> 8 - lo = c % 256 - byteArray.push(lo) - byteArray.push(hi) - } - - return byteArray -} - -function base64ToBytes (str) { - return base64.toByteArray(base64clean(str)) -} - -function blitBuffer (src, dst, offset, length) { - for (var i = 0; i < length; ++i) { - if ((i + offset >= dst.length) || (i >= src.length)) break - dst[i + offset] = src[i] - } - return i -} - -function isnan (val) { - return val !== val // eslint-disable-line no-self-compare -} diff --git a/workshops/monte-carlo-on-ec2-spot-fleet/src/web/node_modules/buffer/package.json b/workshops/monte-carlo-on-ec2-spot-fleet/src/web/node_modules/buffer/package.json deleted file mode 100644 index 177fad44..00000000 --- a/workshops/monte-carlo-on-ec2-spot-fleet/src/web/node_modules/buffer/package.json +++ /dev/null @@ -1,143 +0,0 @@ -{ - "_args": [ - [ - { - "raw": "buffer@4.9.1", - "scope": null, - "escapedName": "buffer", - "name": "buffer", - "rawSpec": "4.9.1", - "spec": "4.9.1", - "type": "version" - }, - "/Users/sdsteve/WebstormProjects/SpotLabNodejs/node_modules/aws-sdk" - ] - ], - "_from": "buffer@4.9.1", - "_id": "buffer@4.9.1", - "_inCache": true, - "_location": "/buffer", - "_nodeVersion": "6.4.0", - "_npmOperationalInternal": { - "host": "packages-12-west.internal.npmjs.com", - "tmp": "tmp/buffer-4.9.1.tgz_1471491999032_0.9881124331150204" - }, - "_npmUser": { - "name": "feross", - "email": "feross@feross.org" - }, - "_npmVersion": "3.10.3", - "_phantomChildren": {}, - "_requested": { - "raw": "buffer@4.9.1", - "scope": null, - "escapedName": "buffer", - "name": "buffer", - "rawSpec": "4.9.1", - "spec": "4.9.1", - "type": "version" - }, - "_requiredBy": [ - "/aws-sdk" - ], - "_resolved": "https://registry.npmjs.org/buffer/-/buffer-4.9.1.tgz", - "_shasum": "6d1bb601b07a4efced97094132093027c95bc298", - "_shrinkwrap": null, - "_spec": "buffer@4.9.1", - "_where": "/Users/sdsteve/WebstormProjects/SpotLabNodejs/node_modules/aws-sdk", - "author": { - "name": "Feross Aboukhadijeh", - "email": "feross@feross.org", - "url": "http://feross.org" - }, - "bugs": { - "url": "https://github.com/feross/buffer/issues" - }, - "contributors": [ - { - "name": "Romain Beauxis", - "email": "toots@rastageeks.org" - }, - { - "name": "James Halliday", - "email": "mail@substack.net" - } - ], - "dependencies": { - "base64-js": "^1.0.2", - "ieee754": "^1.1.4", - "isarray": "^1.0.0" - }, - "description": "Node.js Buffer API, for the browser", - "devDependencies": { - "benchmark": "^2.0.0", - "browserify": "^13.0.0", - "concat-stream": "^1.4.7", - "hyperquest": "^2.0.0", - "is-buffer": "^1.1.1", - "is-nan": "^1.0.1", - "split": "^1.0.0", - "standard": "^7.0.0", - "tape": "^4.0.0", - "through2": "^2.0.0", - "zuul": "^3.0.0" - }, - "directories": {}, - "dist": { - "shasum": "6d1bb601b07a4efced97094132093027c95bc298", - "tarball": "https://registry.npmjs.org/buffer/-/buffer-4.9.1.tgz" - }, - "gitHead": "2152e6ac4f8b47dc46eba44e07fad7c9d3e30563", - "homepage": "https://github.com/feross/buffer", - "jspm": { - "map": { - "./index.js": { - "node": "@node/buffer" - } - } - }, - "keywords": [ - "arraybuffer", - "browser", - "browserify", - "buffer", - "compatible", - "dataview", - "uint8array" - ], - "license": "MIT", - "main": "index.js", - "maintainers": [ - { - "name": "feross", - "email": "feross@feross.org" - } - ], - "name": "buffer", - "optionalDependencies": {}, - "readme": "ERROR: No README data found!", - "repository": { - "type": "git", - "url": "git://github.com/feross/buffer.git" - }, - "scripts": { - "perf": "browserify --debug perf/bracket-notation.js > perf/bundle.js && open perf/index.html", - "perf-node": "node perf/bracket-notation.js && node perf/concat.js && node perf/copy-big.js && node perf/copy.js && node perf/new-big.js && node perf/new.js && node perf/readDoubleBE.js && node perf/readFloatBE.js && node perf/readUInt32LE.js && node perf/slice.js && node perf/writeFloatBE.js", - "size": "browserify -r ./ | uglifyjs -c -m | gzip | wc -c", - "test": "standard && node ./bin/test.js", - "test-browser-es5": "zuul --ui tape -- test/*.js", - "test-browser-es5-local": "zuul --ui tape --local -- test/*.js", - "test-browser-es6": "zuul --ui tape -- test/*.js test/node/*.js", - "test-browser-es6-local": "zuul --ui tape --local -- test/*.js test/node/*.js", - "test-node": "tape test/*.js test/node/*.js && OBJECT_IMPL=true tape test/*.js", - "update-authors": "./bin/update-authors.sh" - }, - "standard": { - "ignore": [ - "test/node/*.js", - "test/_polyfill.js", - "perf/*.js" - ] - }, - "version": "4.9.1" -} diff --git a/workshops/monte-carlo-on-ec2-spot-fleet/src/web/node_modules/buffer/test/_polyfill.js b/workshops/monte-carlo-on-ec2-spot-fleet/src/web/node_modules/buffer/test/_polyfill.js deleted file mode 100644 index 61f9c180..00000000 --- a/workshops/monte-carlo-on-ec2-spot-fleet/src/web/node_modules/buffer/test/_polyfill.js +++ /dev/null @@ -1,150 +0,0 @@ -if (!Array.prototype.forEach) { - - Array.prototype.forEach = function(callback, thisArg) { - - var T, k; - - if (this == null) { - throw new TypeError(' this is null or not defined'); - } - - // 1. Let O be the result of calling ToObject passing the |this| value as the argument. - var O = Object(this); - - // 2. Let lenValue be the result of calling the Get internal method of O with the argument "length". - // 3. Let len be ToUint32(lenValue). - var len = O.length >>> 0; - - // 4. If IsCallable(callback) is false, throw a TypeError exception. - // See: http://es5.github.com/#x9.11 - if (typeof callback !== "function") { - throw new TypeError(callback + ' is not a function'); - } - - // 5. If thisArg was supplied, let T be thisArg; else let T be undefined. - if (arguments.length > 1) { - T = thisArg; - } - - // 6. Let k be 0 - k = 0; - - // 7. Repeat, while k < len - while (k < len) { - - var kValue; - - // a. Let Pk be ToString(k). - // This is implicit for LHS operands of the in operator - // b. Let kPresent be the result of calling the HasProperty internal method of O with argument Pk. - // This step can be combined with c - // c. If kPresent is true, then - if (k in O) { - - // i. Let kValue be the result of calling the Get internal method of O with argument Pk. - kValue = O[k]; - - // ii. Call the Call internal method of callback with T as the this value and - // argument list containing kValue, k, and O. - callback.call(T, kValue, k, O); - } - // d. Increase k by 1. - k++; - } - // 8. return undefined - }; -} - -if (!Array.isArray) { - Array.isArray = function(arg) { - return Object.prototype.toString.call(arg) === '[object Array]'; - }; -} - -if (!Array.prototype.map) { - - Array.prototype.map = function(callback, thisArg) { - - var T, A, k; - - if (this == null) { - throw new TypeError(' this is null or not defined'); - } - - // 1. Let O be the result of calling ToObject passing the |this| - // value as the argument. - var O = Object(this); - - // 2. Let lenValue be the result of calling the Get internal - // method of O with the argument "length". - // 3. Let len be ToUint32(lenValue). - var len = O.length >>> 0; - - // 4. If IsCallable(callback) is false, throw a TypeError exception. - // See: http://es5.github.com/#x9.11 - if (typeof callback !== 'function') { - throw new TypeError(callback + ' is not a function'); - } - - // 5. If thisArg was supplied, let T be thisArg; else let T be undefined. - if (arguments.length > 1) { - T = thisArg; - } - - // 6. Let A be a new array created as if by the expression new Array(len) - // where Array is the standard built-in constructor with that name and - // len is the value of len. - A = new Array(len); - - // 7. Let k be 0 - k = 0; - - // 8. Repeat, while k < len - while (k < len) { - - var kValue, mappedValue; - - // a. Let Pk be ToString(k). - // This is implicit for LHS operands of the in operator - // b. Let kPresent be the result of calling the HasProperty internal - // method of O with argument Pk. - // This step can be combined with c - // c. If kPresent is true, then - if (k in O) { - - // i. Let kValue be the result of calling the Get internal - // method of O with argument Pk. - kValue = O[k]; - - // ii. Let mappedValue be the result of calling the Call internal - // method of callback with T as the this value and argument - // list containing kValue, k, and O. - mappedValue = callback.call(T, kValue, k, O); - - // iii. Call the DefineOwnProperty internal method of A with arguments - // Pk, Property Descriptor - // { Value: mappedValue, - // Writable: true, - // Enumerable: true, - // Configurable: true }, - // and false. - - // In browsers that support Object.defineProperty, use the following: - // Object.defineProperty(A, k, { - // value: mappedValue, - // writable: true, - // enumerable: true, - // configurable: true - // }); - - // For best browser support, use the following: - A[k] = mappedValue; - } - // d. Increase k by 1. - k++; - } - - // 9. return A - return A; - }; -} diff --git a/workshops/monte-carlo-on-ec2-spot-fleet/src/web/node_modules/buffer/test/base64.js b/workshops/monte-carlo-on-ec2-spot-fleet/src/web/node_modules/buffer/test/base64.js deleted file mode 100644 index e4ecc56a..00000000 --- a/workshops/monte-carlo-on-ec2-spot-fleet/src/web/node_modules/buffer/test/base64.js +++ /dev/null @@ -1,47 +0,0 @@ -if (process.env.OBJECT_IMPL) global.TYPED_ARRAY_SUPPORT = false -var B = require('../').Buffer -var test = require('tape') - -test('base64: ignore whitespace', function (t) { - var text = '\n YW9ldQ== ' - var buf = new B(text, 'base64') - t.equal(buf.toString(), 'aoeu') - t.end() -}) - -test('base64: strings without padding', function (t) { - t.equal((new B('YW9ldQ', 'base64').toString()), 'aoeu') - t.end() -}) - -test('base64: newline in utf8 -- should not be an issue', function (t) { - t.equal( - new B('LS0tCnRpdGxlOiBUaHJlZSBkYXNoZXMgbWFya3MgdGhlIHNwb3QKdGFnczoK', 'base64').toString('utf8'), - '---\ntitle: Three dashes marks the spot\ntags:\n' - ) - t.end() -}) - -test('base64: newline in base64 -- should get stripped', function (t) { - t.equal( - new B('LS0tCnRpdGxlOiBUaHJlZSBkYXNoZXMgbWFya3MgdGhlIHNwb3QKdGFnczoK\nICAtIHlhbWwKICAtIGZyb250LW1hdHRlcgogIC0gZGFzaGVzCmV4cGFuZWQt', 'base64').toString('utf8'), - '---\ntitle: Three dashes marks the spot\ntags:\n - yaml\n - front-matter\n - dashes\nexpaned-' - ) - t.end() -}) - -test('base64: tab characters in base64 - should get stripped', function (t) { - t.equal( - new B('LS0tCnRpdGxlOiBUaHJlZSBkYXNoZXMgbWFya3MgdGhlIHNwb3QKdGFnczoK\t\t\t\tICAtIHlhbWwKICAtIGZyb250LW1hdHRlcgogIC0gZGFzaGVzCmV4cGFuZWQt', 'base64').toString('utf8'), - '---\ntitle: Three dashes marks the spot\ntags:\n - yaml\n - front-matter\n - dashes\nexpaned-' - ) - t.end() -}) - -test('base64: invalid non-alphanumeric characters -- should be stripped', function (t) { - t.equal( - new B('!"#$%&\'()*,.:;<=>?@[\\]^`{|}~', 'base64').toString('utf8'), - '' - ) - t.end() -}) diff --git a/workshops/monte-carlo-on-ec2-spot-fleet/src/web/node_modules/buffer/test/basic.js b/workshops/monte-carlo-on-ec2-spot-fleet/src/web/node_modules/buffer/test/basic.js deleted file mode 100644 index 0368ed91..00000000 --- a/workshops/monte-carlo-on-ec2-spot-fleet/src/web/node_modules/buffer/test/basic.js +++ /dev/null @@ -1,85 +0,0 @@ -if (process.env.OBJECT_IMPL) global.TYPED_ARRAY_SUPPORT = false -var B = require('../').Buffer -var test = require('tape') - -test('instanceof Buffer', function (t) { - var buf = new B([1, 2]) - t.ok(buf instanceof B) - t.end() -}) - -test('convert to Uint8Array in modern browsers', function (t) { - if (B.TYPED_ARRAY_SUPPORT) { - var buf = new B([1, 2]) - var uint8array = new Uint8Array(buf.buffer) - t.ok(uint8array instanceof Uint8Array) - t.equal(uint8array[0], 1) - t.equal(uint8array[1], 2) - } else { - t.pass('object impl: skipping test') - } - t.end() -}) - -test('indexes from a string', function (t) { - var buf = new B('abc') - t.equal(buf[0], 97) - t.equal(buf[1], 98) - t.equal(buf[2], 99) - t.end() -}) - -test('indexes from an array', function (t) { - var buf = new B([ 97, 98, 99 ]) - t.equal(buf[0], 97) - t.equal(buf[1], 98) - t.equal(buf[2], 99) - t.end() -}) - -test('setting index value should modify buffer contents', function (t) { - var buf = new B([ 97, 98, 99 ]) - t.equal(buf[2], 99) - t.equal(buf.toString(), 'abc') - - buf[2] += 10 - t.equal(buf[2], 109) - t.equal(buf.toString(), 'abm') - t.end() -}) - -test('storing negative number should cast to unsigned', function (t) { - var buf = new B(1) - - if (B.TYPED_ARRAY_SUPPORT) { - // This does not work with the object implementation -- nothing we can do! - buf[0] = -3 - t.equal(buf[0], 253) - } - - buf = new B(1) - buf.writeInt8(-3, 0) - t.equal(buf[0], 253) - - t.end() -}) - -test('test that memory is copied from array-like', function (t) { - if (B.TYPED_ARRAY_SUPPORT) { - var u = new Uint8Array(4) - var b = new B(u) - b[0] = 1 - b[1] = 2 - b[2] = 3 - b[3] = 4 - - t.equal(u[0], 0) - t.equal(u[1], 0) - t.equal(u[2], 0) - t.equal(u[3], 0) - } else { - t.pass('object impl: skipping test') - } - - t.end() -}) diff --git a/workshops/monte-carlo-on-ec2-spot-fleet/src/web/node_modules/buffer/test/compare.js b/workshops/monte-carlo-on-ec2-spot-fleet/src/web/node_modules/buffer/test/compare.js deleted file mode 100644 index 62b478c7..00000000 --- a/workshops/monte-carlo-on-ec2-spot-fleet/src/web/node_modules/buffer/test/compare.js +++ /dev/null @@ -1,59 +0,0 @@ -if (process.env.OBJECT_IMPL) global.TYPED_ARRAY_SUPPORT = false -var B = require('../').Buffer -var test = require('tape') - -test('buffer.compare', function (t) { - var b = new B(1).fill('a') - var c = new B(1).fill('c') - var d = new B(2).fill('aa') - - t.equal(b.compare(c), -1) - t.equal(c.compare(d), 1) - t.equal(d.compare(b), 1) - t.equal(b.compare(d), -1) - - // static method - t.equal(B.compare(b, c), -1) - t.equal(B.compare(c, d), 1) - t.equal(B.compare(d, b), 1) - t.equal(B.compare(b, d), -1) - t.end() -}) - -test('buffer.compare argument validation', function (t) { - t.throws(function () { - var b = new B(1) - B.compare(b, 'abc') - }) - - t.throws(function () { - var b = new B(1) - B.compare('abc', b) - }) - - t.throws(function () { - var b = new B(1) - b.compare('abc') - }) - t.end() -}) - -test('buffer.equals', function (t) { - var b = new B(5).fill('abcdf') - var c = new B(5).fill('abcdf') - var d = new B(5).fill('abcde') - var e = new B(6).fill('abcdef') - - t.ok(b.equals(c)) - t.ok(!c.equals(d)) - t.ok(!d.equals(e)) - t.end() -}) - -test('buffer.equals argument validation', function (t) { - t.throws(function () { - var b = new B(1) - b.equals('abc') - }) - t.end() -}) diff --git a/workshops/monte-carlo-on-ec2-spot-fleet/src/web/node_modules/buffer/test/constructor.js b/workshops/monte-carlo-on-ec2-spot-fleet/src/web/node_modules/buffer/test/constructor.js deleted file mode 100644 index cec5cdcb..00000000 --- a/workshops/monte-carlo-on-ec2-spot-fleet/src/web/node_modules/buffer/test/constructor.js +++ /dev/null @@ -1,193 +0,0 @@ -if (process.env.OBJECT_IMPL) global.TYPED_ARRAY_SUPPORT = false -var B = require('../').Buffer -var test = require('tape') - -test('new buffer from array', function (t) { - t.equal( - new B([1, 2, 3]).toString(), - '\u0001\u0002\u0003' - ) - t.end() -}) - -test('new buffer from array w/ negatives', function (t) { - t.equal( - new B([-1, -2, -3]).toString('hex'), - 'fffefd' - ) - t.end() -}) - -test('new buffer from array with mixed signed input', function (t) { - t.equal( - new B([-255, 255, -128, 128, 512, -512, 511, -511]).toString('hex'), - '01ff80800000ff01' - ) - t.end() -}) - -test('new buffer from string', function (t) { - t.equal( - new B('hey', 'utf8').toString(), - 'hey' - ) - t.end() -}) - -test('new buffer from buffer', function (t) { - var b1 = new B('asdf') - var b2 = new B(b1) - t.equal(b1.toString('hex'), b2.toString('hex')) - t.end() -}) - -test('new buffer from ArrayBuffer', function (t) { - if (typeof ArrayBuffer !== 'undefined') { - var arraybuffer = new Uint8Array([0, 1, 2, 3]).buffer - var b = new B(arraybuffer) - t.equal(b.length, 4) - t.equal(b[0], 0) - t.equal(b[1], 1) - t.equal(b[2], 2) - t.equal(b[3], 3) - t.equal(b[4], undefined) - } - t.end() -}) - -test('new buffer from ArrayBuffer, shares memory', function (t) { - if (Buffer.TYPED_ARRAY_SUPPORT) { - var u = new Uint8Array([0, 1, 2, 3]) - var arraybuffer = u.buffer - var b = new B(arraybuffer) - t.equal(b.length, 4) - t.equal(b[0], 0) - t.equal(b[1], 1) - t.equal(b[2], 2) - t.equal(b[3], 3) - t.equal(b[4], undefined) - - // changing the Uint8Array (and thus the ArrayBuffer), changes the Buffer - u[0] = 10 - t.equal(b[0], 10) - u[1] = 11 - t.equal(b[1], 11) - u[2] = 12 - t.equal(b[2], 12) - u[3] = 13 - t.equal(b[3], 13) - } - t.end() -}) - -test('new buffer from Uint8Array', function (t) { - if (typeof Uint8Array !== 'undefined') { - var b1 = new Uint8Array([0, 1, 2, 3]) - var b2 = new B(b1) - t.equal(b1.length, b2.length) - t.equal(b1[0], 0) - t.equal(b1[1], 1) - t.equal(b1[2], 2) - t.equal(b1[3], 3) - t.equal(b1[4], undefined) - } - t.end() -}) - -test('new buffer from Uint16Array', function (t) { - if (typeof Uint16Array !== 'undefined') { - var b1 = new Uint16Array([0, 1, 2, 3]) - var b2 = new B(b1) - t.equal(b1.length, b2.length) - t.equal(b1[0], 0) - t.equal(b1[1], 1) - t.equal(b1[2], 2) - t.equal(b1[3], 3) - t.equal(b1[4], undefined) - } - t.end() -}) - -test('new buffer from Uint32Array', function (t) { - if (typeof Uint32Array !== 'undefined') { - var b1 = new Uint32Array([0, 1, 2, 3]) - var b2 = new B(b1) - t.equal(b1.length, b2.length) - t.equal(b1[0], 0) - t.equal(b1[1], 1) - t.equal(b1[2], 2) - t.equal(b1[3], 3) - t.equal(b1[4], undefined) - } - t.end() -}) - -test('new buffer from Int16Array', function (t) { - if (typeof Int16Array !== 'undefined') { - var b1 = new Int16Array([0, 1, 2, 3]) - var b2 = new B(b1) - t.equal(b1.length, b2.length) - t.equal(b1[0], 0) - t.equal(b1[1], 1) - t.equal(b1[2], 2) - t.equal(b1[3], 3) - t.equal(b1[4], undefined) - } - t.end() -}) - -test('new buffer from Int32Array', function (t) { - if (typeof Int32Array !== 'undefined') { - var b1 = new Int32Array([0, 1, 2, 3]) - var b2 = new B(b1) - t.equal(b1.length, b2.length) - t.equal(b1[0], 0) - t.equal(b1[1], 1) - t.equal(b1[2], 2) - t.equal(b1[3], 3) - t.equal(b1[4], undefined) - } - t.end() -}) - -test('new buffer from Float32Array', function (t) { - if (typeof Float32Array !== 'undefined') { - var b1 = new Float32Array([0, 1, 2, 3]) - var b2 = new B(b1) - t.equal(b1.length, b2.length) - t.equal(b1[0], 0) - t.equal(b1[1], 1) - t.equal(b1[2], 2) - t.equal(b1[3], 3) - t.equal(b1[4], undefined) - } - t.end() -}) - -test('new buffer from Float64Array', function (t) { - if (typeof Float64Array !== 'undefined') { - var b1 = new Float64Array([0, 1, 2, 3]) - var b2 = new B(b1) - t.equal(b1.length, b2.length) - t.equal(b1[0], 0) - t.equal(b1[1], 1) - t.equal(b1[2], 2) - t.equal(b1[3], 3) - t.equal(b1[4], undefined) - } - t.end() -}) - -test('new buffer from buffer.toJSON() output', function (t) { - if (typeof JSON === 'undefined') { - // ie6, ie7 lack support - t.end() - return - } - var buf = new B('test') - var json = JSON.stringify(buf) - var obj = JSON.parse(json) - var copy = new B(obj) - t.ok(buf.equals(copy)) - t.end() -}) diff --git a/workshops/monte-carlo-on-ec2-spot-fleet/src/web/node_modules/buffer/test/from-string.js b/workshops/monte-carlo-on-ec2-spot-fleet/src/web/node_modules/buffer/test/from-string.js deleted file mode 100644 index e25db269..00000000 --- a/workshops/monte-carlo-on-ec2-spot-fleet/src/web/node_modules/buffer/test/from-string.js +++ /dev/null @@ -1,132 +0,0 @@ -if (process.env.OBJECT_IMPL) global.TYPED_ARRAY_SUPPORT = false -var B = require('../').Buffer -var test = require('tape') - -test('detect utf16 surrogate pairs', function (t) { - var text = '\uD83D\uDE38' + '\uD83D\uDCAD' + '\uD83D\uDC4D' - var buf = new B(text) - t.equal(text, buf.toString()) - t.end() -}) - -test('detect utf16 surrogate pairs over U+20000 until U+10FFFF', function (t) { - var text = '\uD842\uDFB7' + '\uD93D\uDCAD' + '\uDBFF\uDFFF' - var buf = new B(text) - t.equal(text, buf.toString()) - t.end() -}) - -test('replace orphaned utf16 surrogate lead code point', function (t) { - var text = '\uD83D\uDE38' + '\uD83D' + '\uD83D\uDC4D' - var buf = new B(text) - t.deepEqual(buf, new B([ 0xf0, 0x9f, 0x98, 0xb8, 0xef, 0xbf, 0xbd, 0xf0, 0x9f, 0x91, 0x8d ])) - t.end() -}) - -test('replace orphaned utf16 surrogate trail code point', function (t) { - var text = '\uD83D\uDE38' + '\uDCAD' + '\uD83D\uDC4D' - var buf = new B(text) - t.deepEqual(buf, new B([ 0xf0, 0x9f, 0x98, 0xb8, 0xef, 0xbf, 0xbd, 0xf0, 0x9f, 0x91, 0x8d ])) - t.end() -}) - -test('do not write partial utf16 code units', function (t) { - var f = new B([0, 0, 0, 0, 0]) - t.equal(f.length, 5) - var size = f.write('あいうえお', 'utf16le') - t.equal(size, 4) - t.deepEqual(f, new B([0x42, 0x30, 0x44, 0x30, 0x00])) - t.end() -}) - -test('handle partial utf16 code points when encoding to utf8 the way node does', function (t) { - var text = '\uD83D\uDE38' + '\uD83D\uDC4D' - - var buf = new B(8) - buf.fill(0) - buf.write(text) - t.deepEqual(buf, new B([ 0xf0, 0x9f, 0x98, 0xb8, 0xf0, 0x9f, 0x91, 0x8d ])) - - buf = new B(7) - buf.fill(0) - buf.write(text) - t.deepEqual(buf, new B([ 0xf0, 0x9f, 0x98, 0xb8, 0x00, 0x00, 0x00 ])) - - buf = new B(6) - buf.fill(0) - buf.write(text) - t.deepEqual(buf, new B([ 0xf0, 0x9f, 0x98, 0xb8, 0x00, 0x00 ])) - - buf = new B(5) - buf.fill(0) - buf.write(text) - t.deepEqual(buf, new B([ 0xf0, 0x9f, 0x98, 0xb8, 0x00 ])) - - buf = new B(4) - buf.fill(0) - buf.write(text) - t.deepEqual(buf, new B([ 0xf0, 0x9f, 0x98, 0xb8 ])) - - buf = new B(3) - buf.fill(0) - buf.write(text) - t.deepEqual(buf, new B([ 0x00, 0x00, 0x00 ])) - - buf = new B(2) - buf.fill(0) - buf.write(text) - t.deepEqual(buf, new B([ 0x00, 0x00 ])) - - buf = new B(1) - buf.fill(0) - buf.write(text) - t.deepEqual(buf, new B([ 0x00 ])) - - t.end() -}) - -test('handle invalid utf16 code points when encoding to utf8 the way node does', function (t) { - var text = 'a' + '\uDE38\uD83D' + 'b' - - var buf = new B(8) - buf.fill(0) - buf.write(text) - t.deepEqual(buf, new B([ 0x61, 0xef, 0xbf, 0xbd, 0xef, 0xbf, 0xbd, 0x62 ])) - - buf = new B(7) - buf.fill(0) - buf.write(text) - t.deepEqual(buf, new B([ 0x61, 0xef, 0xbf, 0xbd, 0xef, 0xbf, 0xbd ])) - - buf = new B(6) - buf.fill(0) - buf.write(text) - t.deepEqual(buf, new B([ 0x61, 0xef, 0xbf, 0xbd, 0x00, 0x00 ])) - - buf = new B(5) - buf.fill(0) - buf.write(text) - t.deepEqual(buf, new B([ 0x61, 0xef, 0xbf, 0xbd, 0x00 ])) - - buf = new B(4) - buf.fill(0) - buf.write(text) - t.deepEqual(buf, new B([ 0x61, 0xef, 0xbf, 0xbd ])) - - buf = new B(3) - buf.fill(0) - buf.write(text) - t.deepEqual(buf, new B([ 0x61, 0x00, 0x00 ])) - - buf = new B(2) - buf.fill(0) - buf.write(text) - t.deepEqual(buf, new B([ 0x61, 0x00 ])) - - buf = new B(1) - buf.fill(0) - buf.write(text) - t.deepEqual(buf, new B([ 0x61 ])) - - t.end() -}) diff --git a/workshops/monte-carlo-on-ec2-spot-fleet/src/web/node_modules/buffer/test/is-buffer.js b/workshops/monte-carlo-on-ec2-spot-fleet/src/web/node_modules/buffer/test/is-buffer.js deleted file mode 100644 index 3744b23a..00000000 --- a/workshops/monte-carlo-on-ec2-spot-fleet/src/web/node_modules/buffer/test/is-buffer.js +++ /dev/null @@ -1,22 +0,0 @@ -if (process.env.OBJECT_IMPL) global.TYPED_ARRAY_SUPPORT = false -var B = require('../').Buffer -var isBuffer = require('is-buffer') -var test = require('tape') - -test('is-buffer tests', function (t) { - t.ok(isBuffer(new B(4)), 'new Buffer(4)') - - t.notOk(isBuffer(undefined), 'undefined') - t.notOk(isBuffer(null), 'null') - t.notOk(isBuffer(''), 'empty string') - t.notOk(isBuffer(true), 'true') - t.notOk(isBuffer(false), 'false') - t.notOk(isBuffer(0), '0') - t.notOk(isBuffer(1), '1') - t.notOk(isBuffer(1.0), '1.0') - t.notOk(isBuffer('string'), 'string') - t.notOk(isBuffer({}), '{}') - t.notOk(isBuffer(function foo () {}), 'function foo () {}') - - t.end() -}) diff --git a/workshops/monte-carlo-on-ec2-spot-fleet/src/web/node_modules/buffer/test/methods.js b/workshops/monte-carlo-on-ec2-spot-fleet/src/web/node_modules/buffer/test/methods.js deleted file mode 100644 index f4bd3f21..00000000 --- a/workshops/monte-carlo-on-ec2-spot-fleet/src/web/node_modules/buffer/test/methods.js +++ /dev/null @@ -1,127 +0,0 @@ -if (process.env.OBJECT_IMPL) global.TYPED_ARRAY_SUPPORT = false -var B = require('../').Buffer -var test = require('tape') - -test('buffer.toJSON', function (t) { - var data = [1, 2, 3, 4] - t.deepEqual( - new B(data).toJSON(), - { type: 'Buffer', data: [ 1, 2, 3, 4 ] } - ) - t.end() -}) - -test('buffer.copy', function (t) { - // copied from nodejs.org example - var buf1 = new B(26) - var buf2 = new B(26) - - for (var i = 0; i < 26; i++) { - buf1[i] = i + 97 // 97 is ASCII a - buf2[i] = 33 // ASCII ! - } - - buf1.copy(buf2, 8, 16, 20) - - t.equal( - buf2.toString('ascii', 0, 25), - '!!!!!!!!qrst!!!!!!!!!!!!!' - ) - t.end() -}) - -test('test offset returns are correct', function (t) { - var b = new B(16) - t.equal(4, b.writeUInt32LE(0, 0)) - t.equal(6, b.writeUInt16LE(0, 4)) - t.equal(7, b.writeUInt8(0, 6)) - t.equal(8, b.writeInt8(0, 7)) - t.equal(16, b.writeDoubleLE(0, 8)) - t.end() -}) - -test('concat() a varying number of buffers', function (t) { - var zero = [] - var one = [ new B('asdf') ] - var long = [] - for (var i = 0; i < 10; i++) { - long.push(new B('asdf')) - } - - var flatZero = B.concat(zero) - var flatOne = B.concat(one) - var flatLong = B.concat(long) - var flatLongLen = B.concat(long, 40) - - t.equal(flatZero.length, 0) - t.equal(flatOne.toString(), 'asdf') - t.deepEqual(flatOne, one[0]) - t.equal(flatLong.toString(), (new Array(10 + 1).join('asdf'))) - t.equal(flatLongLen.toString(), (new Array(10 + 1).join('asdf'))) - t.end() -}) - -test('fill', function (t) { - var b = new B(10) - b.fill(2) - t.equal(b.toString('hex'), '02020202020202020202') - t.end() -}) - -test('fill (string)', function (t) { - var b = new B(10) - b.fill('abc') - t.equal(b.toString(), 'abcabcabca') - b.fill('է') - t.equal(b.toString(), 'էէէէէ') - t.end() -}) - -test('copy() empty buffer with sourceEnd=0', function (t) { - var source = new B([42]) - var destination = new B([43]) - source.copy(destination, 0, 0, 0) - t.equal(destination.readUInt8(0), 43) - t.end() -}) - -test('copy() after slice()', function (t) { - var source = new B(200) - var dest = new B(200) - var expected = new B(200) - for (var i = 0; i < 200; i++) { - source[i] = i - dest[i] = 0 - } - - source.slice(2).copy(dest) - source.copy(expected, 0, 2) - t.deepEqual(dest, expected) - t.end() -}) - -test('copy() ascending', function (t) { - var b = new B('abcdefghij') - b.copy(b, 0, 3, 10) - t.equal(b.toString(), 'defghijhij') - t.end() -}) - -test('copy() descending', function (t) { - var b = new B('abcdefghij') - b.copy(b, 3, 0, 7) - t.equal(b.toString(), 'abcabcdefg') - t.end() -}) - -test('buffer.slice sets indexes', function (t) { - t.equal((new B('hallo')).slice(0, 5).toString(), 'hallo') - t.end() -}) - -test('buffer.slice out of range', function (t) { - t.plan(2) - t.equal((new B('hallo')).slice(0, 10).toString(), 'hallo') - t.equal((new B('hallo')).slice(10, 2).toString(), '') - t.end() -}) diff --git a/workshops/monte-carlo-on-ec2-spot-fleet/src/web/node_modules/buffer/test/node/test-buffer-alloc.js b/workshops/monte-carlo-on-ec2-spot-fleet/src/web/node_modules/buffer/test/node/test-buffer-alloc.js deleted file mode 100644 index b524f51e..00000000 --- a/workshops/monte-carlo-on-ec2-spot-fleet/src/web/node_modules/buffer/test/node/test-buffer-alloc.js +++ /dev/null @@ -1,1501 +0,0 @@ -'use strict'; -var Buffer = require('../../').Buffer; - -var common = { skip: function () {} }; -var assert = require('assert'); - -var Buffer = require('../../').Buffer; - -// counter to ensure unique value is always copied -var cntr = 0; - -var b = Buffer.allocUnsafe(1024); - -// console.log('b.length == %d', b.length); -assert.strictEqual(1024, b.length); - -b[0] = -1; -assert.strictEqual(b[0], 255); - -for (var i = 0; i < 1024; i++) { - b[i] = i % 256; -} - -for (var i = 0; i < 1024; i++) { - assert.strictEqual(i % 256, b[i]); -} - -var c = Buffer.allocUnsafe(512); -// console.log('c.length == %d', c.length); -assert.strictEqual(512, c.length); - -var d = Buffer.from([]); -assert.strictEqual(0, d.length); - -var ui32 = new Uint32Array(4).fill(42); -var e = Buffer.from(ui32); -for (var [index, value] of e.entries()) { - assert.strictEqual(value, ui32[index]); -} - -// First check Buffer#fill() works as expected. - -assert.throws(function() { - Buffer.allocUnsafe(8).fill('a', -1); -}); - -assert.throws(function() { - Buffer.allocUnsafe(8).fill('a', 0, 9); -}); - -// Make sure this doesn't hang indefinitely. -Buffer.allocUnsafe(8).fill(''); -Buffer.alloc(8, ''); - -{ - var buf = Buffer.alloc(64, 10); - for (var i = 0; i < buf.length; i++) - assert.equal(buf[i], 10); - - buf.fill(11, 0, buf.length >> 1); - for (var i = 0; i < buf.length >> 1; i++) - assert.equal(buf[i], 11); - for (var i = (buf.length >> 1) + 1; i < buf.length; i++) - assert.equal(buf[i], 10); - - buf.fill('h'); - for (var i = 0; i < buf.length; i++) - assert.equal('h'.charCodeAt(0), buf[i]); - - buf.fill(0); - for (var i = 0; i < buf.length; i++) - assert.equal(0, buf[i]); - - buf.fill(null); - for (var i = 0; i < buf.length; i++) - assert.equal(0, buf[i]); - - buf.fill(1, 16, 32); - for (var i = 0; i < 16; i++) - assert.equal(0, buf[i]); - for (var i = 16; i < 32; i++) - assert.equal(1, buf[i]); - for (var i = 32; i < buf.length; i++) - assert.equal(0, buf[i]); -} - -{ - var buf = Buffer.alloc(10, 'abc'); - assert.equal(buf.toString(), 'abcabcabca'); - buf.fill('է'); - assert.equal(buf.toString(), 'էէէէէ'); -} - -{ - // copy 512 bytes, from 0 to 512. - b.fill(++cntr); - c.fill(++cntr); - var copied = b.copy(c, 0, 0, 512); -// console.log('copied %d bytes from b into c', copied); - assert.strictEqual(512, copied); - for (var i = 0; i < c.length; i++) { - assert.strictEqual(b[i], c[i]); - } -} - -{ - // copy c into b, without specifying sourceEnd - b.fill(++cntr); - c.fill(++cntr); - var copied = c.copy(b, 0, 0); -// console.log('copied %d bytes from c into b w/o sourceEnd', copied); - assert.strictEqual(c.length, copied); - for (var i = 0; i < c.length; i++) { - assert.strictEqual(c[i], b[i]); - } -} - -{ - // copy c into b, without specifying sourceStart - b.fill(++cntr); - c.fill(++cntr); - var copied = c.copy(b, 0); -// console.log('copied %d bytes from c into b w/o sourceStart', copied); - assert.strictEqual(c.length, copied); - for (var i = 0; i < c.length; i++) { - assert.strictEqual(c[i], b[i]); - } -} - -{ - // copy longer buffer b to shorter c without targetStart - b.fill(++cntr); - c.fill(++cntr); - var copied = b.copy(c); -// console.log('copied %d bytes from b into c w/o targetStart', copied); - assert.strictEqual(c.length, copied); - for (var i = 0; i < c.length; i++) { - assert.strictEqual(b[i], c[i]); - } -} - -{ - // copy starting near end of b to c - b.fill(++cntr); - c.fill(++cntr); - var copied = b.copy(c, 0, b.length - Math.floor(c.length / 2)); -// console.log('copied %d bytes from end of b into beginning of c', copied); - assert.strictEqual(Math.floor(c.length / 2), copied); - for (var i = 0; i < Math.floor(c.length / 2); i++) { - assert.strictEqual(b[b.length - Math.floor(c.length / 2) + i], c[i]); - } - for (var i = Math.floor(c.length / 2) + 1; i < c.length; i++) { - assert.strictEqual(c[c.length - 1], c[i]); - } -} - -{ - // try to copy 513 bytes, and check we don't overrun c - b.fill(++cntr); - c.fill(++cntr); - var copied = b.copy(c, 0, 0, 513); -// console.log('copied %d bytes from b trying to overrun c', copied); - assert.strictEqual(c.length, copied); - for (var i = 0; i < c.length; i++) { - assert.strictEqual(b[i], c[i]); - } -} - -{ - // copy 768 bytes from b into b - b.fill(++cntr); - b.fill(++cntr, 256); - var copied = b.copy(b, 0, 256, 1024); -// console.log('copied %d bytes from b into b', copied); - assert.strictEqual(768, copied); - for (var i = 0; i < b.length; i++) { - assert.strictEqual(cntr, b[i]); - } -} - -// copy string longer than buffer length (failure will segfault) -var bb = Buffer.allocUnsafe(10); -bb.fill('hello crazy world'); - - -// try to copy from before the beginning of b -assert.doesNotThrow(() => { b.copy(c, 0, 100, 10); }); - -// copy throws at negative sourceStart -assert.throws(function() { - Buffer.allocUnsafe(5).copy(Buffer.allocUnsafe(5), 0, -1); -}, RangeError); - -{ - // check sourceEnd resets to targetEnd if former is greater than the latter - b.fill(++cntr); - c.fill(++cntr); - var copied = b.copy(c, 0, 0, 1025); -// console.log('copied %d bytes from b into c', copied); - for (var i = 0; i < c.length; i++) { - assert.strictEqual(b[i], c[i]); - } -} - -// throw with negative sourceEnd -// console.log('test copy at negative sourceEnd'); -assert.throws(function() { - b.copy(c, 0, 0, -1); -}, RangeError); - -// when sourceStart is greater than sourceEnd, zero copied -assert.equal(b.copy(c, 0, 100, 10), 0); - -// when targetStart > targetLength, zero copied -assert.equal(b.copy(c, 512, 0, 10), 0); - -var caught_error; - -// invalid encoding for Buffer.toString -caught_error = null; -try { - b.toString('invalid'); -} catch (err) { - caught_error = err; -} -assert.strictEqual('Unknown encoding: invalid', caught_error.message); - -// invalid encoding for Buffer.write -caught_error = null; -try { - b.write('test string', 0, 5, 'invalid'); -} catch (err) { - caught_error = err; -} -assert.strictEqual('Unknown encoding: invalid', caught_error.message); - -// try to create 0-length buffers -Buffer.from(''); -Buffer.from('', 'ascii'); -Buffer.from('', 'latin1'); -Buffer.alloc(0); -Buffer.allocUnsafe(0); - -// try to write a 0-length string beyond the end of b -assert.throws(function() { - b.write('', 2048); -}, RangeError); - -// throw when writing to negative offset -assert.throws(function() { - b.write('a', -1); -}, RangeError); - -// throw when writing past bounds from the pool -assert.throws(function() { - b.write('a', 2048); -}, RangeError); - -// throw when writing to negative offset -assert.throws(function() { - b.write('a', -1); -}, RangeError); - -// try to copy 0 bytes worth of data into an empty buffer -b.copy(Buffer.alloc(0), 0, 0, 0); - -// try to copy 0 bytes past the end of the target buffer -b.copy(Buffer.alloc(0), 1, 1, 1); -b.copy(Buffer.alloc(1), 1, 1, 1); - -// try to copy 0 bytes from past the end of the source buffer -b.copy(Buffer.alloc(1), 0, 2048, 2048); - -var rangeBuffer = Buffer.from('abc'); - -// if start >= buffer's length, empty string will be returned -assert.equal(rangeBuffer.toString('ascii', 3), ''); -assert.equal(rangeBuffer.toString('ascii', +Infinity), ''); -assert.equal(rangeBuffer.toString('ascii', 3.14, 3), ''); -assert.equal(rangeBuffer.toString('ascii', 'Infinity', 3), ''); - -// if end <= 0, empty string will be returned -assert.equal(rangeBuffer.toString('ascii', 1, 0), ''); -assert.equal(rangeBuffer.toString('ascii', 1, -1.2), ''); -assert.equal(rangeBuffer.toString('ascii', 1, -100), ''); -assert.equal(rangeBuffer.toString('ascii', 1, -Infinity), ''); - -// if start < 0, start will be taken as zero -assert.equal(rangeBuffer.toString('ascii', -1, 3), 'abc'); -assert.equal(rangeBuffer.toString('ascii', -1.99, 3), 'abc'); -assert.equal(rangeBuffer.toString('ascii', -Infinity, 3), 'abc'); -assert.equal(rangeBuffer.toString('ascii', '-1', 3), 'abc'); -assert.equal(rangeBuffer.toString('ascii', '-1.99', 3), 'abc'); -assert.equal(rangeBuffer.toString('ascii', '-Infinity', 3), 'abc'); - -// if start is an invalid integer, start will be taken as zero -assert.equal(rangeBuffer.toString('ascii', 'node.js', 3), 'abc'); -assert.equal(rangeBuffer.toString('ascii', {}, 3), 'abc'); -assert.equal(rangeBuffer.toString('ascii', [], 3), 'abc'); -assert.equal(rangeBuffer.toString('ascii', NaN, 3), 'abc'); -assert.equal(rangeBuffer.toString('ascii', null, 3), 'abc'); -assert.equal(rangeBuffer.toString('ascii', undefined, 3), 'abc'); -assert.equal(rangeBuffer.toString('ascii', false, 3), 'abc'); -assert.equal(rangeBuffer.toString('ascii', '', 3), 'abc'); - -// but, if start is an integer when coerced, then it will be coerced and used. -assert.equal(rangeBuffer.toString('ascii', '-1', 3), 'abc'); -assert.equal(rangeBuffer.toString('ascii', '1', 3), 'bc'); -assert.equal(rangeBuffer.toString('ascii', '-Infinity', 3), 'abc'); -assert.equal(rangeBuffer.toString('ascii', '3', 3), ''); -assert.equal(rangeBuffer.toString('ascii', Number(3), 3), ''); -assert.equal(rangeBuffer.toString('ascii', '3.14', 3), ''); -assert.equal(rangeBuffer.toString('ascii', '1.99', 3), 'bc'); -assert.equal(rangeBuffer.toString('ascii', '-1.99', 3), 'abc'); -assert.equal(rangeBuffer.toString('ascii', 1.99, 3), 'bc'); -assert.equal(rangeBuffer.toString('ascii', true, 3), 'bc'); - -// if end > buffer's length, end will be taken as buffer's length -assert.equal(rangeBuffer.toString('ascii', 0, 5), 'abc'); -assert.equal(rangeBuffer.toString('ascii', 0, 6.99), 'abc'); -assert.equal(rangeBuffer.toString('ascii', 0, Infinity), 'abc'); -assert.equal(rangeBuffer.toString('ascii', 0, '5'), 'abc'); -assert.equal(rangeBuffer.toString('ascii', 0, '6.99'), 'abc'); -assert.equal(rangeBuffer.toString('ascii', 0, 'Infinity'), 'abc'); - -// if end is an invalid integer, end will be taken as buffer's length -assert.equal(rangeBuffer.toString('ascii', 0, 'node.js'), ''); -assert.equal(rangeBuffer.toString('ascii', 0, {}), ''); -assert.equal(rangeBuffer.toString('ascii', 0, NaN), ''); -assert.equal(rangeBuffer.toString('ascii', 0, undefined), 'abc'); -assert.equal(rangeBuffer.toString('ascii', 0), 'abc'); -assert.equal(rangeBuffer.toString('ascii', 0, null), ''); -assert.equal(rangeBuffer.toString('ascii', 0, []), ''); -assert.equal(rangeBuffer.toString('ascii', 0, false), ''); -assert.equal(rangeBuffer.toString('ascii', 0, ''), ''); - -// but, if end is an integer when coerced, then it will be coerced and used. -assert.equal(rangeBuffer.toString('ascii', 0, '-1'), ''); -assert.equal(rangeBuffer.toString('ascii', 0, '1'), 'a'); -assert.equal(rangeBuffer.toString('ascii', 0, '-Infinity'), ''); -assert.equal(rangeBuffer.toString('ascii', 0, '3'), 'abc'); -assert.equal(rangeBuffer.toString('ascii', 0, Number(3)), 'abc'); -assert.equal(rangeBuffer.toString('ascii', 0, '3.14'), 'abc'); -assert.equal(rangeBuffer.toString('ascii', 0, '1.99'), 'a'); -assert.equal(rangeBuffer.toString('ascii', 0, '-1.99'), ''); -assert.equal(rangeBuffer.toString('ascii', 0, 1.99), 'a'); -assert.equal(rangeBuffer.toString('ascii', 0, true), 'a'); - -// try toString() with a object as a encoding -assert.equal(rangeBuffer.toString({toString: function() { - return 'ascii'; -}}), 'abc'); - -// testing for smart defaults and ability to pass string values as offset -var writeTest = Buffer.from('abcdes'); -writeTest.write('n', 'ascii'); -writeTest.write('o', '1', 'ascii'); -writeTest.write('d', '2', 'ascii'); -writeTest.write('e', 3, 'ascii'); -writeTest.write('j', 4, 'ascii'); -assert.equal(writeTest.toString(), 'nodejs'); - -// ASCII slice test -{ - var asciiString = 'hello world'; - - for (var i = 0; i < asciiString.length; i++) { - b[i] = asciiString.charCodeAt(i); - } - var asciiSlice = b.toString('ascii', 0, asciiString.length); - assert.equal(asciiString, asciiSlice); -} - -{ - var asciiString = 'hello world'; - var offset = 100; - - var written = b.write(asciiString, offset, 'ascii'); - assert.equal(asciiString.length, written); - var asciiSlice = b.toString('ascii', offset, offset + asciiString.length); - assert.equal(asciiString, asciiSlice); -} - -{ - var asciiString = 'hello world'; - var offset = 100; - - var sliceA = b.slice(offset, offset + asciiString.length); - var sliceB = b.slice(offset, offset + asciiString.length); - for (var i = 0; i < asciiString.length; i++) { - assert.equal(sliceA[i], sliceB[i]); - } -} - -// UTF-8 slice test - -var utf8String = '¡hέlló wôrld!'; -var offset = 100; - -b.write(utf8String, 0, Buffer.byteLength(utf8String), 'utf8'); -var utf8Slice = b.toString('utf8', 0, Buffer.byteLength(utf8String)); -assert.equal(utf8String, utf8Slice); - -var written = b.write(utf8String, offset, 'utf8'); -assert.equal(Buffer.byteLength(utf8String), written); -utf8Slice = b.toString('utf8', offset, offset + Buffer.byteLength(utf8String)); -assert.equal(utf8String, utf8Slice); - -var sliceA = b.slice(offset, offset + Buffer.byteLength(utf8String)); -var sliceB = b.slice(offset, offset + Buffer.byteLength(utf8String)); -for (var i = 0; i < Buffer.byteLength(utf8String); i++) { - assert.equal(sliceA[i], sliceB[i]); -} - -{ - var slice = b.slice(100, 150); - assert.equal(50, slice.length); - for (var i = 0; i < 50; i++) { - assert.equal(b[100 + i], slice[i]); - } -} - -{ - // make sure only top level parent propagates from allocPool - var b = Buffer.allocUnsafe(5); - var c = b.slice(0, 4); - var d = c.slice(0, 2); - assert.equal(b.parent, c.parent); - assert.equal(b.parent, d.parent); -} - -{ - // also from a non-pooled instance - var b = Buffer.allocUnsafeSlow(5); - var c = b.slice(0, 4); - var d = c.slice(0, 2); - assert.equal(c.parent, d.parent); -} - -{ - // Bug regression test - var testValue = '\u00F6\u65E5\u672C\u8A9E'; // ö日本語 - var buffer = Buffer.allocUnsafe(32); - var size = buffer.write(testValue, 0, 'utf8'); -// console.log('bytes written to buffer: ' + size); - var slice = buffer.toString('utf8', 0, size); - assert.equal(slice, testValue); -} - -{ - // Test triple slice - var a = Buffer.allocUnsafe(8); - for (var i = 0; i < 8; i++) a[i] = i; - var b = a.slice(4, 8); - assert.equal(4, b[0]); - assert.equal(5, b[1]); - assert.equal(6, b[2]); - assert.equal(7, b[3]); - var c = b.slice(2, 4); - assert.equal(6, c[0]); - assert.equal(7, c[1]); -} - -{ - var d = Buffer.from([23, 42, 255]); - assert.equal(d.length, 3); - assert.equal(d[0], 23); - assert.equal(d[1], 42); - assert.equal(d[2], 255); - assert.deepStrictEqual(d, Buffer.from(d)); -} - -{ - var e = Buffer.from('über'); -// console.error('uber: \'%s\'', e.toString()); - assert.deepStrictEqual(e, Buffer.from([195, 188, 98, 101, 114])); -} - -{ - var f = Buffer.from('über', 'ascii'); -// console.error('f.length: %d (should be 4)', f.length); - assert.deepStrictEqual(f, Buffer.from([252, 98, 101, 114])); -} - -['ucs2', 'ucs-2', 'utf16le', 'utf-16le'].forEach(function(encoding) { - { - var f = Buffer.from('über', encoding); -// console.error('f.length: %d (should be 8)', f.length); - assert.deepStrictEqual(f, Buffer.from([252, 0, 98, 0, 101, 0, 114, 0])); - } - - { - var f = Buffer.from('привет', encoding); -// console.error('f.length: %d (should be 12)', f.length); - assert.deepStrictEqual(f, - Buffer.from([63, 4, 64, 4, 56, 4, 50, 4, 53, 4, 66, 4])); - assert.equal(f.toString(encoding), 'привет'); - } - - { - var f = Buffer.from([0, 0, 0, 0, 0]); - assert.equal(f.length, 5); - var size = f.write('あいうえお', encoding); -// console.error('bytes written to buffer: %d (should be 4)', size); - assert.equal(size, 4); - assert.deepStrictEqual(f, Buffer.from([0x42, 0x30, 0x44, 0x30, 0x00])); - } -}); - -{ - var f = Buffer.from('\uD83D\uDC4D', 'utf-16le'); // THUMBS UP SIGN (U+1F44D) - assert.equal(f.length, 4); - assert.deepStrictEqual(f, Buffer.from('3DD84DDC', 'hex')); -} - - -var arrayIsh = {0: 0, 1: 1, 2: 2, 3: 3, length: 4}; -var g = Buffer.from(arrayIsh); -assert.deepStrictEqual(g, Buffer.from([0, 1, 2, 3])); -var strArrayIsh = {0: '0', 1: '1', 2: '2', 3: '3', length: 4}; -g = Buffer.from(strArrayIsh); -assert.deepStrictEqual(g, Buffer.from([0, 1, 2, 3])); - - -// -// Test toString('base64') -// -assert.equal('TWFu', (Buffer.from('Man')).toString('base64')); - -{ - // test that regular and URL-safe base64 both work - var expected = [0xff, 0xff, 0xbe, 0xff, 0xef, 0xbf, 0xfb, 0xef, 0xff]; - assert.deepStrictEqual(Buffer.from('//++/++/++//', 'base64'), - Buffer.from(expected)); - assert.deepStrictEqual(Buffer.from('__--_--_--__', 'base64'), - Buffer.from(expected)); -} - -{ - // big example - var quote = 'Man is distinguished, not only by his reason, but by this ' + - 'singular passion from other animals, which is a lust ' + - 'of the mind, that by a perseverance of delight in the ' + - 'continued and indefatigable generation of knowledge, ' + - 'exceeds the short vehemence of any carnal pleasure.'; - var expected = 'TWFuIGlzIGRpc3Rpbmd1aXNoZWQsIG5vdCBvbmx5IGJ5IGhpcyByZWFzb' + - '24sIGJ1dCBieSB0aGlzIHNpbmd1bGFyIHBhc3Npb24gZnJvbSBvdGhlci' + - 'BhbmltYWxzLCB3aGljaCBpcyBhIGx1c3Qgb2YgdGhlIG1pbmQsIHRoYXQ' + - 'gYnkgYSBwZXJzZXZlcmFuY2Ugb2YgZGVsaWdodCBpbiB0aGUgY29udGlu' + - 'dWVkIGFuZCBpbmRlZmF0aWdhYmxlIGdlbmVyYXRpb24gb2Yga25vd2xlZ' + - 'GdlLCBleGNlZWRzIHRoZSBzaG9ydCB2ZWhlbWVuY2Ugb2YgYW55IGNhcm' + - '5hbCBwbGVhc3VyZS4='; - assert.equal(expected, (Buffer.from(quote)).toString('base64')); - - var b = Buffer.allocUnsafe(1024); - var bytesWritten = b.write(expected, 0, 'base64'); - assert.equal(quote.length, bytesWritten); - assert.equal(quote, b.toString('ascii', 0, quote.length)); - - // check that the base64 decoder ignores whitespace - var expectedWhite = expected.slice(0, 60) + ' \n' + - expected.slice(60, 120) + ' \n' + - expected.slice(120, 180) + ' \n' + - expected.slice(180, 240) + ' \n' + - expected.slice(240, 300) + '\n' + - expected.slice(300, 360) + '\n'; - b = Buffer.allocUnsafe(1024); - bytesWritten = b.write(expectedWhite, 0, 'base64'); - assert.equal(quote.length, bytesWritten); - assert.equal(quote, b.toString('ascii', 0, quote.length)); - - // check that the base64 decoder on the constructor works - // even in the presence of whitespace. - b = Buffer.from(expectedWhite, 'base64'); - assert.equal(quote.length, b.length); - assert.equal(quote, b.toString('ascii', 0, quote.length)); - - // check that the base64 decoder ignores illegal chars - var expectedIllegal = expected.slice(0, 60) + ' \x80' + - expected.slice(60, 120) + ' \xff' + - expected.slice(120, 180) + ' \x00' + - expected.slice(180, 240) + ' \x98' + - expected.slice(240, 300) + '\x03' + - expected.slice(300, 360); - b = Buffer.from(expectedIllegal, 'base64'); - assert.equal(quote.length, b.length); - assert.equal(quote, b.toString('ascii', 0, quote.length)); -} - -assert.equal(Buffer.from('', 'base64').toString(), ''); -assert.equal(Buffer.from('K', 'base64').toString(), ''); - -// multiple-of-4 with padding -assert.equal(Buffer.from('Kg==', 'base64').toString(), '*'); -assert.equal(Buffer.from('Kio=', 'base64').toString(), '**'); -assert.equal(Buffer.from('Kioq', 'base64').toString(), '***'); -assert.equal(Buffer.from('KioqKg==', 'base64').toString(), '****'); -assert.equal(Buffer.from('KioqKio=', 'base64').toString(), '*****'); -assert.equal(Buffer.from('KioqKioq', 'base64').toString(), '******'); -assert.equal(Buffer.from('KioqKioqKg==', 'base64').toString(), '*******'); -assert.equal(Buffer.from('KioqKioqKio=', 'base64').toString(), '********'); -assert.equal(Buffer.from('KioqKioqKioq', 'base64').toString(), '*********'); -assert.equal(Buffer.from('KioqKioqKioqKg==', 'base64').toString(), - '**********'); -assert.equal(Buffer.from('KioqKioqKioqKio=', 'base64').toString(), - '***********'); -assert.equal(Buffer.from('KioqKioqKioqKioq', 'base64').toString(), - '************'); -assert.equal(Buffer.from('KioqKioqKioqKioqKg==', 'base64').toString(), - '*************'); -assert.equal(Buffer.from('KioqKioqKioqKioqKio=', 'base64').toString(), - '**************'); -assert.equal(Buffer.from('KioqKioqKioqKioqKioq', 'base64').toString(), - '***************'); -assert.equal(Buffer.from('KioqKioqKioqKioqKioqKg==', 'base64').toString(), - '****************'); -assert.equal(Buffer.from('KioqKioqKioqKioqKioqKio=', 'base64').toString(), - '*****************'); -assert.equal(Buffer.from('KioqKioqKioqKioqKioqKioq', 'base64').toString(), - '******************'); -assert.equal(Buffer.from('KioqKioqKioqKioqKioqKioqKg==', 'base64').toString(), - '*******************'); -assert.equal(Buffer.from('KioqKioqKioqKioqKioqKioqKio=', 'base64').toString(), - '********************'); - -// no padding, not a multiple of 4 -assert.equal(Buffer.from('Kg', 'base64').toString(), '*'); -assert.equal(Buffer.from('Kio', 'base64').toString(), '**'); -assert.equal(Buffer.from('KioqKg', 'base64').toString(), '****'); -assert.equal(Buffer.from('KioqKio', 'base64').toString(), '*****'); -assert.equal(Buffer.from('KioqKioqKg', 'base64').toString(), '*******'); -assert.equal(Buffer.from('KioqKioqKio', 'base64').toString(), '********'); -assert.equal(Buffer.from('KioqKioqKioqKg', 'base64').toString(), '**********'); -assert.equal(Buffer.from('KioqKioqKioqKio', 'base64').toString(), - '***********'); -assert.equal(Buffer.from('KioqKioqKioqKioqKg', 'base64').toString(), - '*************'); -assert.equal(Buffer.from('KioqKioqKioqKioqKio', 'base64').toString(), - '**************'); -assert.equal(Buffer.from('KioqKioqKioqKioqKioqKg', 'base64').toString(), - '****************'); -assert.equal(Buffer.from('KioqKioqKioqKioqKioqKio', 'base64').toString(), - '*****************'); -assert.equal(Buffer.from('KioqKioqKioqKioqKioqKioqKg', 'base64').toString(), - '*******************'); -assert.equal(Buffer.from('KioqKioqKioqKioqKioqKioqKio', 'base64').toString(), - '********************'); - -// handle padding graciously, multiple-of-4 or not -assert.equal( - Buffer.from('72INjkR5fchcxk9+VgdGPFJDxUBFR5/rMFsghgxADiw==', 'base64').length, - 32 -); -assert.equal( - Buffer.from('72INjkR5fchcxk9+VgdGPFJDxUBFR5/rMFsghgxADiw=', 'base64').length, - 32 -); -assert.equal( - Buffer.from('72INjkR5fchcxk9+VgdGPFJDxUBFR5/rMFsghgxADiw', 'base64').length, - 32 -); -assert.equal( - Buffer.from('w69jACy6BgZmaFvv96HG6MYksWytuZu3T1FvGnulPg==', 'base64').length, - 31 -); -assert.equal( - Buffer.from('w69jACy6BgZmaFvv96HG6MYksWytuZu3T1FvGnulPg=', 'base64').length, - 31 -); -assert.equal( - Buffer.from('w69jACy6BgZmaFvv96HG6MYksWytuZu3T1FvGnulPg', 'base64').length, - 31 -); - -// This string encodes single '.' character in UTF-16 -var dot = Buffer.from('//4uAA==', 'base64'); -assert.equal(dot[0], 0xff); -assert.equal(dot[1], 0xfe); -assert.equal(dot[2], 0x2e); -assert.equal(dot[3], 0x00); -assert.equal(dot.toString('base64'), '//4uAA=='); - -{ - // Writing base64 at a position > 0 should not mangle the result. - // - // https://github.com/joyent/node/issues/402 - var segments = ['TWFkbmVzcz8h', 'IFRoaXM=', 'IGlz', 'IG5vZGUuanMh']; - var b = Buffer.allocUnsafe(64); - var pos = 0; - - for (var i = 0; i < segments.length; ++i) { - pos += b.write(segments[i], pos, 'base64'); - } - assert.equal(b.toString('latin1', 0, pos), 'Madness?! This is node.js!'); -} - -// Regression test for https://github.com/nodejs/node/issues/3496. -// assert.equal(Buffer.from('=bad'.repeat(1e4), 'base64').length, 0); - -{ - // Creating buffers larger than pool size. - var l = Buffer.poolSize + 5; - var s = ''; - for (var i = 0; i < l; i++) { - s += 'h'; - } - - var b = Buffer.from(s); - - for (var i = 0; i < l; i++) { - assert.equal('h'.charCodeAt(0), b[i]); - } - - var sb = b.toString(); - assert.equal(sb.length, s.length); - assert.equal(sb, s); -} - -{ - // Single argument slice - var b = Buffer.from('abcde'); - assert.equal('bcde', b.slice(1).toString()); -} - -// slice(0,0).length === 0 -assert.equal(0, Buffer.from('hello').slice(0, 0).length); - -// test hex toString -// console.log('Create hex string from buffer'); -var hexb = Buffer.allocUnsafe(256); -for (var i = 0; i < 256; i++) { - hexb[i] = i; -} -var hexStr = hexb.toString('hex'); -assert.equal(hexStr, - '000102030405060708090a0b0c0d0e0f' + - '101112131415161718191a1b1c1d1e1f' + - '202122232425262728292a2b2c2d2e2f' + - '303132333435363738393a3b3c3d3e3f' + - '404142434445464748494a4b4c4d4e4f' + - '505152535455565758595a5b5c5d5e5f' + - '606162636465666768696a6b6c6d6e6f' + - '707172737475767778797a7b7c7d7e7f' + - '808182838485868788898a8b8c8d8e8f' + - '909192939495969798999a9b9c9d9e9f' + - 'a0a1a2a3a4a5a6a7a8a9aaabacadaeaf' + - 'b0b1b2b3b4b5b6b7b8b9babbbcbdbebf' + - 'c0c1c2c3c4c5c6c7c8c9cacbcccdcecf' + - 'd0d1d2d3d4d5d6d7d8d9dadbdcdddedf' + - 'e0e1e2e3e4e5e6e7e8e9eaebecedeeef' + - 'f0f1f2f3f4f5f6f7f8f9fafbfcfdfeff'); - -// console.log('Create buffer from hex string'); -var hexb2 = Buffer.from(hexStr, 'hex'); -for (var i = 0; i < 256; i++) { - assert.equal(hexb2[i], hexb[i]); -} - -{ - // test an invalid slice end. -// console.log('Try to slice off the end of the buffer'); - var b = Buffer.from([1, 2, 3, 4, 5]); - var b2 = b.toString('hex', 1, 10000); - var b3 = b.toString('hex', 1, 5); - var b4 = b.toString('hex', 1); - assert.equal(b2, b3); - assert.equal(b2, b4); -} - -function buildBuffer(data) { - if (Array.isArray(data)) { - var buffer = Buffer.allocUnsafe(data.length); - data.forEach(function(v, k) { - buffer[k] = v; - }); - return buffer; - } - return null; -} - -var x = buildBuffer([0x81, 0xa3, 0x66, 0x6f, 0x6f, 0xa3, 0x62, 0x61, 0x72]); - -// console.log(x.inspect()); -assert.equal('', x.inspect()); - -{ - var z = x.slice(4); -// console.log(z.inspect()); -// console.log(z.length); - assert.equal(5, z.length); - assert.equal(0x6f, z[0]); - assert.equal(0xa3, z[1]); - assert.equal(0x62, z[2]); - assert.equal(0x61, z[3]); - assert.equal(0x72, z[4]); -} - -{ - var z = x.slice(0); -// console.log(z.inspect()); -// console.log(z.length); - assert.equal(z.length, x.length); -} - -{ - var z = x.slice(0, 4); -// console.log(z.inspect()); -// console.log(z.length); - assert.equal(4, z.length); - assert.equal(0x81, z[0]); - assert.equal(0xa3, z[1]); -} - -{ - var z = x.slice(0, 9); -// console.log(z.inspect()); -// console.log(z.length); - assert.equal(9, z.length); -} - -{ - var z = x.slice(1, 4); -// console.log(z.inspect()); -// console.log(z.length); - assert.equal(3, z.length); - assert.equal(0xa3, z[0]); -} - -{ - var z = x.slice(2, 4); -// console.log(z.inspect()); -// console.log(z.length); - assert.equal(2, z.length); - assert.equal(0x66, z[0]); - assert.equal(0x6f, z[1]); -} - -assert.equal(0, Buffer.from('hello').slice(0, 0).length); - -['ucs2', 'ucs-2', 'utf16le', 'utf-16le'].forEach(function(encoding) { - var b = Buffer.allocUnsafe(10); - b.write('あいうえお', encoding); - assert.equal(b.toString(encoding), 'あいうえお'); -}); - -{ - // Binary encoding should write only one byte per character. - var b = Buffer.from([0xde, 0xad, 0xbe, 0xef]); - var s = String.fromCharCode(0xffff); - b.write(s, 0, 'latin1'); - assert.equal(0xff, b[0]); - assert.equal(0xad, b[1]); - assert.equal(0xbe, b[2]); - assert.equal(0xef, b[3]); - s = String.fromCharCode(0xaaee); - b.write(s, 0, 'latin1'); - assert.equal(0xee, b[0]); - assert.equal(0xad, b[1]); - assert.equal(0xbe, b[2]); - assert.equal(0xef, b[3]); -} - -{ - // #1210 Test UTF-8 string includes null character - var buf = Buffer.from('\0'); - assert.equal(buf.length, 1); - buf = Buffer.from('\0\0'); - assert.equal(buf.length, 2); -} - -{ - var buf = Buffer.allocUnsafe(2); - var written = buf.write(''); // 0byte - assert.equal(written, 0); - written = buf.write('\0'); // 1byte (v8 adds null terminator) - assert.equal(written, 1); - written = buf.write('a\0'); // 1byte * 2 - assert.equal(written, 2); - written = buf.write('あ'); // 3bytes - assert.equal(written, 0); - written = buf.write('\0あ'); // 1byte + 3bytes - assert.equal(written, 1); - written = buf.write('\0\0あ'); // 1byte * 2 + 3bytes - assert.equal(written, 2); -} - -{ - var buf = Buffer.allocUnsafe(10); - written = buf.write('あいう'); // 3bytes * 3 (v8 adds null terminator) - assert.equal(written, 9); - written = buf.write('あいう\0'); // 3bytes * 3 + 1byte - assert.equal(written, 10); -} - -{ - // #243 Test write() with maxLength - var buf = Buffer.allocUnsafe(4); - buf.fill(0xFF); - var written = buf.write('abcd', 1, 2, 'utf8'); -// console.log(buf); - assert.equal(written, 2); - assert.equal(buf[0], 0xFF); - assert.equal(buf[1], 0x61); - assert.equal(buf[2], 0x62); - assert.equal(buf[3], 0xFF); - - buf.fill(0xFF); - written = buf.write('abcd', 1, 4); -// console.log(buf); - assert.equal(written, 3); - assert.equal(buf[0], 0xFF); - assert.equal(buf[1], 0x61); - assert.equal(buf[2], 0x62); - assert.equal(buf[3], 0x63); - - buf.fill(0xFF); - written = buf.write('abcd', 1, 2, 'utf8'); -// console.log(buf); - assert.equal(written, 2); - assert.equal(buf[0], 0xFF); - assert.equal(buf[1], 0x61); - assert.equal(buf[2], 0x62); - assert.equal(buf[3], 0xFF); - - buf.fill(0xFF); - written = buf.write('abcdef', 1, 2, 'hex'); -// console.log(buf); - assert.equal(written, 2); - assert.equal(buf[0], 0xFF); - assert.equal(buf[1], 0xAB); - assert.equal(buf[2], 0xCD); - assert.equal(buf[3], 0xFF); - - ['ucs2', 'ucs-2', 'utf16le', 'utf-16le'].forEach(function(encoding) { - buf.fill(0xFF); - written = buf.write('abcd', 0, 2, encoding); -// console.log(buf); - assert.equal(written, 2); - assert.equal(buf[0], 0x61); - assert.equal(buf[1], 0x00); - assert.equal(buf[2], 0xFF); - assert.equal(buf[3], 0xFF); - }); -} - -{ - // test offset returns are correct - var b = Buffer.allocUnsafe(16); - assert.equal(4, b.writeUInt32LE(0, 0)); - assert.equal(6, b.writeUInt16LE(0, 4)); - assert.equal(7, b.writeUInt8(0, 6)); - assert.equal(8, b.writeInt8(0, 7)); - assert.equal(16, b.writeDoubleLE(0, 8)); -} - -{ - // test unmatched surrogates not producing invalid utf8 output - // ef bf bd = utf-8 representation of unicode replacement character - // see https://codereview.chromium.org/121173009/ - var buf = Buffer.from('ab\ud800cd', 'utf8'); - assert.equal(buf[0], 0x61); - assert.equal(buf[1], 0x62); - assert.equal(buf[2], 0xef); - assert.equal(buf[3], 0xbf); - assert.equal(buf[4], 0xbd); - assert.equal(buf[5], 0x63); - assert.equal(buf[6], 0x64); -} - -{ - // test for buffer overrun - var buf = Buffer.from([0, 0, 0, 0, 0]); // length: 5 - var sub = buf.slice(0, 4); // length: 4 - written = sub.write('12345', 'latin1'); - assert.equal(written, 4); - assert.equal(buf[4], 0); -} - -// Check for fractional length args, junk length args, etc. -// https://github.com/joyent/node/issues/1758 - -// Call .fill() first, stops valgrind warning about uninitialized memory reads. -Buffer.allocUnsafe(3.3).fill().toString(); - // throws bad argument error in commit 43cb4ec -Buffer.alloc(3.3).fill().toString(); -assert.equal(Buffer.allocUnsafe(NaN).length, 0); -assert.equal(Buffer.allocUnsafe(3.3).length, 3); -assert.equal(Buffer.from({length: 3.3}).length, 3); -assert.equal(Buffer.from({length: 'BAM'}).length, 0); - -// Make sure that strings are not coerced to numbers. -assert.equal(Buffer.from('99').length, 2); -assert.equal(Buffer.from('13.37').length, 5); - -// Ensure that the length argument is respected. -'ascii utf8 hex base64 latin1'.split(' ').forEach(function(enc) { - assert.equal(Buffer.allocUnsafe(1).write('aaaaaa', 0, 1, enc), 1); -}); - -{ - // Regression test, guard against buffer overrun in the base64 decoder. - var a = Buffer.allocUnsafe(3); - var b = Buffer.from('xxx'); - a.write('aaaaaaaa', 'base64'); - assert.equal(b.toString(), 'xxx'); -} - -// issue GH-3416 -Buffer.from(Buffer.allocUnsafe(0), 0, 0); - -[ 'hex', - 'utf8', - 'utf-8', - 'ascii', - 'latin1', - 'binary', - 'base64', - 'ucs2', - 'ucs-2', - 'utf16le', - 'utf-16le' ].forEach(function(enc) { - assert.equal(Buffer.isEncoding(enc), true); - }); - -[ 'utf9', - 'utf-7', - 'Unicode-FTW', - 'new gnu gun', - false, - NaN, - {}, - Infinity, - [], - 1, - 0, - -1 ].forEach(function(enc) { - assert.equal(Buffer.isEncoding(enc), false); - }); - - -// GH-5110 -{ - var buffer = Buffer.from('test'); - var string = JSON.stringify(buffer); - - assert.strictEqual(string, '{"type":"Buffer","data":[116,101,115,116]}'); - - assert.deepStrictEqual(buffer, JSON.parse(string, function(key, value) { - return value && value.type === 'Buffer' - ? Buffer.from(value.data) - : value; - })); -} - -// issue GH-7849 -{ - var buf = Buffer.from('test'); - var json = JSON.stringify(buf); - var obj = JSON.parse(json); - var copy = Buffer.from(obj); - - assert(buf.equals(copy)); -} - -// issue GH-4331 -assert.throws(function() { - Buffer.allocUnsafe(0xFFFFFFFF); -}, RangeError); -assert.throws(function() { - Buffer.allocUnsafe(0xFFFFFFFFF); -}, RangeError); - - -// attempt to overflow buffers, similar to previous bug in array buffers -assert.throws(function() { - var buf = Buffer.allocUnsafe(8); - buf.readFloatLE(0xffffffff); -}, RangeError); - -assert.throws(function() { - var buf = Buffer.allocUnsafe(8); - buf.writeFloatLE(0.0, 0xffffffff); -}, RangeError); - -assert.throws(function() { - var buf = Buffer.allocUnsafe(8); - buf.readFloatLE(0xffffffff); -}, RangeError); - -assert.throws(function() { - var buf = Buffer.allocUnsafe(8); - buf.writeFloatLE(0.0, 0xffffffff); -}, RangeError); - - -// ensure negative values can't get past offset -assert.throws(function() { - var buf = Buffer.allocUnsafe(8); - buf.readFloatLE(-1); -}, RangeError); - -assert.throws(function() { - var buf = Buffer.allocUnsafe(8); - buf.writeFloatLE(0.0, -1); -}, RangeError); - -assert.throws(function() { - var buf = Buffer.allocUnsafe(8); - buf.readFloatLE(-1); -}, RangeError); - -assert.throws(function() { - var buf = Buffer.allocUnsafe(8); - buf.writeFloatLE(0.0, -1); -}, RangeError); - -// offset checks -{ - var buf = Buffer.allocUnsafe(0); - - assert.throws(function() { buf.readUInt8(0); }, RangeError); - assert.throws(function() { buf.readInt8(0); }, RangeError); -} - -{ - var buf = Buffer.from([0xFF]); - - assert.equal(buf.readUInt8(0), 255); - assert.equal(buf.readInt8(0), -1); -} - -[16, 32].forEach(function(bits) { - var buf = Buffer.allocUnsafe(bits / 8 - 1); - - assert.throws(function() { buf['readUInt' + bits + 'BE'](0); }, - RangeError, - 'readUInt' + bits + 'BE'); - - assert.throws(function() { buf['readUInt' + bits + 'LE'](0); }, - RangeError, - 'readUInt' + bits + 'LE'); - - assert.throws(function() { buf['readInt' + bits + 'BE'](0); }, - RangeError, - 'readInt' + bits + 'BE()'); - - assert.throws(function() { buf['readInt' + bits + 'LE'](0); }, - RangeError, - 'readInt' + bits + 'LE()'); -}); - -[16, 32].forEach(function(bits) { - var buf = Buffer.from([0xFF, 0xFF, 0xFF, 0xFF]); - - assert.equal(buf['readUInt' + bits + 'BE'](0), - (0xFFFFFFFF >>> (32 - bits))); - - assert.equal(buf['readUInt' + bits + 'LE'](0), - (0xFFFFFFFF >>> (32 - bits))); - - assert.equal(buf['readInt' + bits + 'BE'](0), - (0xFFFFFFFF >> (32 - bits))); - - assert.equal(buf['readInt' + bits + 'LE'](0), - (0xFFFFFFFF >> (32 - bits))); -}); - -// test for common read(U)IntLE/BE -{ - var buf = Buffer.from([0x01, 0x02, 0x03, 0x04, 0x05, 0x06]); - - assert.strictEqual(buf.readUIntLE(0, 1), 0x01); - assert.strictEqual(buf.readUIntBE(0, 1), 0x01); - assert.strictEqual(buf.readUIntLE(0, 3), 0x030201); - assert.strictEqual(buf.readUIntBE(0, 3), 0x010203); - assert.strictEqual(buf.readUIntLE(0, 5), 0x0504030201); - assert.strictEqual(buf.readUIntBE(0, 5), 0x0102030405); - assert.strictEqual(buf.readUIntLE(0, 6), 0x060504030201); - assert.strictEqual(buf.readUIntBE(0, 6), 0x010203040506); - assert.strictEqual(buf.readIntLE(0, 1), 0x01); - assert.strictEqual(buf.readIntBE(0, 1), 0x01); - assert.strictEqual(buf.readIntLE(0, 3), 0x030201); - assert.strictEqual(buf.readIntBE(0, 3), 0x010203); - assert.strictEqual(buf.readIntLE(0, 5), 0x0504030201); - assert.strictEqual(buf.readIntBE(0, 5), 0x0102030405); - assert.strictEqual(buf.readIntLE(0, 6), 0x060504030201); - assert.strictEqual(buf.readIntBE(0, 6), 0x010203040506); -} - -// test for common write(U)IntLE/BE -{ - var buf = Buffer.allocUnsafe(3); - buf.writeUIntLE(0x123456, 0, 3); - assert.deepStrictEqual(buf.toJSON().data, [0x56, 0x34, 0x12]); - assert.equal(buf.readUIntLE(0, 3), 0x123456); - - buf = Buffer.allocUnsafe(3); - buf.writeUIntBE(0x123456, 0, 3); - assert.deepStrictEqual(buf.toJSON().data, [0x12, 0x34, 0x56]); - assert.equal(buf.readUIntBE(0, 3), 0x123456); - - buf = Buffer.allocUnsafe(3); - buf.writeIntLE(0x123456, 0, 3); - assert.deepStrictEqual(buf.toJSON().data, [0x56, 0x34, 0x12]); - assert.equal(buf.readIntLE(0, 3), 0x123456); - - buf = Buffer.allocUnsafe(3); - buf.writeIntBE(0x123456, 0, 3); - assert.deepStrictEqual(buf.toJSON().data, [0x12, 0x34, 0x56]); - assert.equal(buf.readIntBE(0, 3), 0x123456); - - buf = Buffer.allocUnsafe(3); - buf.writeIntLE(-0x123456, 0, 3); - assert.deepStrictEqual(buf.toJSON().data, [0xaa, 0xcb, 0xed]); - assert.equal(buf.readIntLE(0, 3), -0x123456); - - buf = Buffer.allocUnsafe(3); - buf.writeIntBE(-0x123456, 0, 3); - assert.deepStrictEqual(buf.toJSON().data, [0xed, 0xcb, 0xaa]); - assert.equal(buf.readIntBE(0, 3), -0x123456); - - buf = Buffer.allocUnsafe(3); - buf.writeIntLE(-0x123400, 0, 3); - assert.deepStrictEqual(buf.toJSON().data, [0x00, 0xcc, 0xed]); - assert.equal(buf.readIntLE(0, 3), -0x123400); - - buf = Buffer.allocUnsafe(3); - buf.writeIntBE(-0x123400, 0, 3); - assert.deepStrictEqual(buf.toJSON().data, [0xed, 0xcc, 0x00]); - assert.equal(buf.readIntBE(0, 3), -0x123400); - - buf = Buffer.allocUnsafe(3); - buf.writeIntLE(-0x120000, 0, 3); - assert.deepStrictEqual(buf.toJSON().data, [0x00, 0x00, 0xee]); - assert.equal(buf.readIntLE(0, 3), -0x120000); - - buf = Buffer.allocUnsafe(3); - buf.writeIntBE(-0x120000, 0, 3); - assert.deepStrictEqual(buf.toJSON().data, [0xee, 0x00, 0x00]); - assert.equal(buf.readIntBE(0, 3), -0x120000); - - buf = Buffer.allocUnsafe(5); - buf.writeUIntLE(0x1234567890, 0, 5); - assert.deepStrictEqual(buf.toJSON().data, [0x90, 0x78, 0x56, 0x34, 0x12]); - assert.equal(buf.readUIntLE(0, 5), 0x1234567890); - - buf = Buffer.allocUnsafe(5); - buf.writeUIntBE(0x1234567890, 0, 5); - assert.deepStrictEqual(buf.toJSON().data, [0x12, 0x34, 0x56, 0x78, 0x90]); - assert.equal(buf.readUIntBE(0, 5), 0x1234567890); - - buf = Buffer.allocUnsafe(5); - buf.writeIntLE(0x1234567890, 0, 5); - assert.deepStrictEqual(buf.toJSON().data, [0x90, 0x78, 0x56, 0x34, 0x12]); - assert.equal(buf.readIntLE(0, 5), 0x1234567890); - - buf = Buffer.allocUnsafe(5); - buf.writeIntBE(0x1234567890, 0, 5); - assert.deepStrictEqual(buf.toJSON().data, [0x12, 0x34, 0x56, 0x78, 0x90]); - assert.equal(buf.readIntBE(0, 5), 0x1234567890); - - buf = Buffer.allocUnsafe(5); - buf.writeIntLE(-0x1234567890, 0, 5); - assert.deepStrictEqual(buf.toJSON().data, [0x70, 0x87, 0xa9, 0xcb, 0xed]); - assert.equal(buf.readIntLE(0, 5), -0x1234567890); - - buf = Buffer.allocUnsafe(5); - buf.writeIntBE(-0x1234567890, 0, 5); - assert.deepStrictEqual(buf.toJSON().data, [0xed, 0xcb, 0xa9, 0x87, 0x70]); - assert.equal(buf.readIntBE(0, 5), -0x1234567890); - - buf = Buffer.allocUnsafe(5); - buf.writeIntLE(-0x0012000000, 0, 5); - assert.deepStrictEqual(buf.toJSON().data, [0x00, 0x00, 0x00, 0xee, 0xff]); - assert.equal(buf.readIntLE(0, 5), -0x0012000000); - - buf = Buffer.allocUnsafe(5); - buf.writeIntBE(-0x0012000000, 0, 5); - assert.deepStrictEqual(buf.toJSON().data, [0xff, 0xee, 0x00, 0x00, 0x00]); - assert.equal(buf.readIntBE(0, 5), -0x0012000000); -} - -// test Buffer slice -{ - var buf = Buffer.from('0123456789'); - assert.equal(buf.slice(-10, 10), '0123456789'); - assert.equal(buf.slice(-20, 10), '0123456789'); - assert.equal(buf.slice(-20, -10), ''); - assert.equal(buf.slice(), '0123456789'); - assert.equal(buf.slice(0), '0123456789'); - assert.equal(buf.slice(0, 0), ''); - assert.equal(buf.slice(undefined), '0123456789'); - assert.equal(buf.slice('foobar'), '0123456789'); - assert.equal(buf.slice(undefined, undefined), '0123456789'); - - assert.equal(buf.slice(2), '23456789'); - assert.equal(buf.slice(5), '56789'); - assert.equal(buf.slice(10), ''); - assert.equal(buf.slice(5, 8), '567'); - assert.equal(buf.slice(8, -1), '8'); - assert.equal(buf.slice(-10), '0123456789'); - assert.equal(buf.slice(0, -9), '0'); - assert.equal(buf.slice(0, -10), ''); - assert.equal(buf.slice(0, -1), '012345678'); - assert.equal(buf.slice(2, -2), '234567'); - assert.equal(buf.slice(0, 65536), '0123456789'); - assert.equal(buf.slice(65536, 0), ''); - assert.equal(buf.slice(-5, -8), ''); - assert.equal(buf.slice(-5, -3), '56'); - assert.equal(buf.slice(-10, 10), '0123456789'); - for (var i = 0, s = buf.toString(); i < buf.length; ++i) { - assert.equal(buf.slice(i), s.slice(i)); - assert.equal(buf.slice(0, i), s.slice(0, i)); - assert.equal(buf.slice(-i), s.slice(-i)); - assert.equal(buf.slice(0, -i), s.slice(0, -i)); - } - - var utf16Buf = Buffer.from('0123456789', 'utf16le'); - // assert.deepStrictEqual(utf16Buf.slice(0, 6), Buffer.from('012', 'utf16le')); - - assert.equal(buf.slice('0', '1'), '0'); - assert.equal(buf.slice('-5', '10'), '56789'); - assert.equal(buf.slice('-10', '10'), '0123456789'); - assert.equal(buf.slice('-10', '-5'), '01234'); - assert.equal(buf.slice('-10', '-0'), ''); - assert.equal(buf.slice('111'), ''); - assert.equal(buf.slice('0', '-111'), ''); - - // try to slice a zero length Buffer - // see https://github.com/joyent/node/issues/5881 - Buffer.alloc(0).slice(0, 1); -} - -// Regression test for #5482: should throw but not assert in C++ land. -assert.throws(function() { - Buffer.from('', 'buffer'); -}, TypeError); - -// Regression test for #6111. Constructing a buffer from another buffer -// should a) work, and b) not corrupt the source buffer. -{ - var a = [0]; - for (var i = 0; i < 7; ++i) a = a.concat(a); - a = a.map(function(_, i) { return i; }); - var b = Buffer.from(a); - var c = Buffer.from(b); - assert.strictEqual(b.length, a.length); - assert.strictEqual(c.length, a.length); - for (var i = 0, k = a.length; i < k; ++i) { - assert.strictEqual(a[i], i); - assert.strictEqual(b[i], i); - assert.strictEqual(c[i], i); - } -} - - -assert.throws(function() { - Buffer.allocUnsafe((-1 >>> 0) + 1); -}, RangeError); - -assert.throws(function() { - Buffer.allocUnsafeSlow((-1 >>> 0) + 1); -}, RangeError); - -if (common.hasCrypto) { - // Test truncation after decode - var crypto = require('crypto'); - - var b1 = Buffer.from('YW55=======', 'base64'); - var b2 = Buffer.from('YW55', 'base64'); - - assert.equal( - crypto.createHash('sha1').update(b1).digest('hex'), - crypto.createHash('sha1').update(b2).digest('hex') - ); -} else { - common.skip('missing crypto'); -} - -// Test Compare -{ - var b = Buffer.alloc(1, 'a'); - var c = Buffer.alloc(1, 'c'); - var d = Buffer.alloc(2, 'aa'); - - assert.equal(b.compare(c), -1); - assert.equal(c.compare(d), 1); - assert.equal(d.compare(b), 1); - assert.equal(b.compare(d), -1); - assert.equal(b.compare(b), 0); - - assert.equal(Buffer.compare(b, c), -1); - assert.equal(Buffer.compare(c, d), 1); - assert.equal(Buffer.compare(d, b), 1); - assert.equal(Buffer.compare(b, d), -1); - assert.equal(Buffer.compare(c, c), 0); - - assert.equal(Buffer.compare(Buffer.alloc(0), Buffer.alloc(0)), 0); - assert.equal(Buffer.compare(Buffer.alloc(0), Buffer.alloc(1)), -1); - assert.equal(Buffer.compare(Buffer.alloc(1), Buffer.alloc(0)), 1); -} - -assert.throws(function() { - var b = Buffer.allocUnsafe(1); - Buffer.compare(b, 'abc'); -}); - -assert.throws(function() { - var b = Buffer.allocUnsafe(1); - Buffer.compare('abc', b); -}); - -assert.throws(function() { - var b = Buffer.allocUnsafe(1); - b.compare('abc'); -}); - -// Test Equals -{ - var b = Buffer.alloc(5, 'abcdf'); - var c = Buffer.alloc(5, 'abcdf'); - var d = Buffer.alloc(5, 'abcde'); - var e = Buffer.alloc(6, 'abcdef'); - - assert.ok(b.equals(c)); - assert.ok(!c.equals(d)); - assert.ok(!d.equals(e)); - assert.ok(d.equals(d)); -} - -assert.throws(function() { - var b = Buffer.allocUnsafe(1); - b.equals('abc'); -}); - -// Regression test for https://github.com/nodejs/node/issues/649. -assert.throws(() => { Buffer.allocUnsafe(1422561062959).toString('utf8');}); - -var ps = Buffer.poolSize; -Buffer.poolSize = 0; -assert.equal(Buffer.allocUnsafe(1).parent, undefined); -Buffer.poolSize = ps; - -// Test Buffer.copy() segfault -assert.throws(function() { - Buffer.allocUnsafe(10).copy(); -}); - -var regErrorMsg = new RegExp('First argument must be a string, Buffer, ' + - 'ArrayBuffer, Array, or array-like object.'); - -assert.throws(function() { - Buffer.from(); -}, regErrorMsg); - -assert.throws(function() { - Buffer.from(null); -}, regErrorMsg); - - -// Test that ParseArrayIndex handles full uint32 -assert.throws(function() { - Buffer.from(new ArrayBuffer(0), -1 >>> 0); -}, /RangeError: 'offset' is out of bounds/); - -// ParseArrayIndex() should reject values that don't fit in a 32 bits size_t. -assert.throws(() => { - var a = Buffer(1).fill(0); - var b = Buffer(1).fill(0); - a.copy(b, 0, 0x100000000, 0x100000001); -}), /out of range index/; - -// Unpooled buffer (replaces SlowBuffer) -var ubuf = Buffer.allocUnsafeSlow(10); -assert(ubuf); -assert(ubuf.buffer); -assert.equal(ubuf.buffer.byteLength, 10); - -// Regression test -assert.doesNotThrow(() => { - Buffer.from(new ArrayBuffer()); -}); - -assert.throws(() => Buffer.alloc(-Buffer.poolSize), - '"size" argument must not be negative'); -assert.throws(() => Buffer.alloc(-100), - '"size" argument must not be negative'); -assert.throws(() => Buffer.allocUnsafe(-Buffer.poolSize), - '"size" argument must not be negative'); -assert.throws(() => Buffer.allocUnsafe(-100), - '"size" argument must not be negative'); -assert.throws(() => Buffer.allocUnsafeSlow(-Buffer.poolSize), - '"size" argument must not be negative'); -assert.throws(() => Buffer.allocUnsafeSlow(-100), - '"size" argument must not be negative'); - -assert.throws(() => Buffer.alloc({ valueOf: () => 1 }), - /"size" argument must be a number/); -assert.throws(() => Buffer.alloc({ valueOf: () => -1 }), - /"size" argument must be a number/); - diff --git a/workshops/monte-carlo-on-ec2-spot-fleet/src/web/node_modules/buffer/test/node/test-buffer-arraybuffer.js b/workshops/monte-carlo-on-ec2-spot-fleet/src/web/node_modules/buffer/test/node/test-buffer-arraybuffer.js deleted file mode 100644 index a418752b..00000000 --- a/workshops/monte-carlo-on-ec2-spot-fleet/src/web/node_modules/buffer/test/node/test-buffer-arraybuffer.js +++ /dev/null @@ -1,112 +0,0 @@ -'use strict'; -var Buffer = require('../../').Buffer; - - - -var assert = require('assert'); - -var Buffer = require('../../').Buffer; -var LENGTH = 16; - -var ab = new ArrayBuffer(LENGTH); -var dv = new DataView(ab); -var ui = new Uint8Array(ab); -var buf = Buffer.from(ab); - - -assert.ok(buf instanceof Buffer); -// For backwards compatibility of old .parent property test that if buf is not -// a slice then .parent should be undefined. -assert.equal(buf.parent, undefined); -assert.equal(buf.buffer, ab); -assert.equal(buf.length, ab.byteLength); - - -buf.fill(0xC); -for (var i = 0; i < LENGTH; i++) { - assert.equal(ui[i], 0xC); - ui[i] = 0xF; - assert.equal(buf[i], 0xF); -} - -buf.writeUInt32LE(0xF00, 0); -buf.writeUInt32BE(0xB47, 4); -buf.writeDoubleLE(3.1415, 8); - -assert.equal(dv.getUint32(0, true), 0xF00); -assert.equal(dv.getUint32(4), 0xB47); -assert.equal(dv.getFloat64(8, true), 3.1415); - - -// Now test protecting users from doing stupid things - -assert.throws(function() { - function AB() { } - Object.setPrototypeOf(AB, ArrayBuffer); - Object.setPrototypeOf(AB.prototype, ArrayBuffer.prototype); - Buffer.from(new AB()); -}, TypeError); - -// write{Double,Float}{LE,BE} with noAssert should not crash, cf. #3766 -var b = Buffer.allocUnsafe(1); -b.writeFloatLE(11.11, 0, true); -b.writeFloatBE(11.11, 0, true); -b.writeDoubleLE(11.11, 0, true); -b.writeDoubleBE(11.11, 0, true); - -// Test the byteOffset and length arguments -{ - var ab = new Uint8Array(5); - ab[0] = 1; - ab[1] = 2; - ab[2] = 3; - ab[3] = 4; - ab[4] = 5; - var buf = Buffer.from(ab.buffer, 1, 3); - assert.equal(buf.length, 3); - assert.equal(buf[0], 2); - assert.equal(buf[1], 3); - assert.equal(buf[2], 4); - buf[0] = 9; - assert.equal(ab[1], 9); - - assert.throws(() => Buffer.from(ab.buffer, 6), (err) => { - assert(err instanceof RangeError); - assert(/'offset' is out of bounds/.test(err.message)); - return true; - }); - assert.throws(() => Buffer.from(ab.buffer, 3, 6), (err) => { - assert(err instanceof RangeError); - assert(/'length' is out of bounds/.test(err.message)); - return true; - }); -} - -// Test the deprecated Buffer() version also -{ - var ab = new Uint8Array(5); - ab[0] = 1; - ab[1] = 2; - ab[2] = 3; - ab[3] = 4; - ab[4] = 5; - var buf = Buffer(ab.buffer, 1, 3); - assert.equal(buf.length, 3); - assert.equal(buf[0], 2); - assert.equal(buf[1], 3); - assert.equal(buf[2], 4); - buf[0] = 9; - assert.equal(ab[1], 9); - - assert.throws(() => Buffer(ab.buffer, 6), (err) => { - assert(err instanceof RangeError); - assert(/'offset' is out of bounds/.test(err.message)); - return true; - }); - assert.throws(() => Buffer(ab.buffer, 3, 6), (err) => { - assert(err instanceof RangeError); - assert(/'length' is out of bounds/.test(err.message)); - return true; - }); -} - diff --git a/workshops/monte-carlo-on-ec2-spot-fleet/src/web/node_modules/buffer/test/node/test-buffer-ascii.js b/workshops/monte-carlo-on-ec2-spot-fleet/src/web/node_modules/buffer/test/node/test-buffer-ascii.js deleted file mode 100644 index 4a06098a..00000000 --- a/workshops/monte-carlo-on-ec2-spot-fleet/src/web/node_modules/buffer/test/node/test-buffer-ascii.js +++ /dev/null @@ -1,28 +0,0 @@ -'use strict'; -var Buffer = require('../../').Buffer; - - -var assert = require('assert'); - -// ASCII conversion in node.js simply masks off the high bits, -// it doesn't do transliteration. -assert.equal(Buffer.from('hérité').toString('ascii'), 'hC)ritC)'); - -// 71 characters, 78 bytes. The ’ character is a triple-byte sequence. -var input = 'C’est, graphiquement, la réunion d’un accent aigu ' + - 'et d’un accent grave.'; - -var expected = 'Cb\u0000\u0019est, graphiquement, la rC)union ' + - 'db\u0000\u0019un accent aigu et db\u0000\u0019un ' + - 'accent grave.'; - -var buf = Buffer.from(input); - -for (var i = 0; i < expected.length; ++i) { - assert.equal(buf.slice(i).toString('ascii'), expected.slice(i)); - - // Skip remainder of multi-byte sequence. - if (input.charCodeAt(i) > 65535) ++i; - if (input.charCodeAt(i) > 127) ++i; -} - diff --git a/workshops/monte-carlo-on-ec2-spot-fleet/src/web/node_modules/buffer/test/node/test-buffer-bad-overload.js b/workshops/monte-carlo-on-ec2-spot-fleet/src/web/node_modules/buffer/test/node/test-buffer-bad-overload.js deleted file mode 100644 index 282227d7..00000000 --- a/workshops/monte-carlo-on-ec2-spot-fleet/src/web/node_modules/buffer/test/node/test-buffer-bad-overload.js +++ /dev/null @@ -1,18 +0,0 @@ -'use strict'; -var Buffer = require('../../').Buffer; - - -var assert = require('assert'); - -assert.doesNotThrow(function() { - Buffer.allocUnsafe(10); -}); - -assert.throws(function() { - Buffer.from(10, 'hex'); -}); - -assert.doesNotThrow(function() { - Buffer.from('deadbeaf', 'hex'); -}); - diff --git a/workshops/monte-carlo-on-ec2-spot-fleet/src/web/node_modules/buffer/test/node/test-buffer-badhex.js b/workshops/monte-carlo-on-ec2-spot-fleet/src/web/node_modules/buffer/test/node/test-buffer-badhex.js deleted file mode 100644 index fd7851d9..00000000 --- a/workshops/monte-carlo-on-ec2-spot-fleet/src/web/node_modules/buffer/test/node/test-buffer-badhex.js +++ /dev/null @@ -1,46 +0,0 @@ -'use strict'; -var Buffer = require('../../').Buffer; - - -var assert = require('assert'); -var Buffer = require('../../').Buffer; - -// Test hex strings and bad hex strings -{ - var buf1 = Buffer.alloc(4); - assert.strictEqual(buf1.length, 4); - assert.deepStrictEqual(buf1, new Buffer([0, 0, 0, 0])); - assert.strictEqual(buf1.write('abcdxx', 0, 'hex'), 2); - assert.deepStrictEqual(buf1, new Buffer([0xab, 0xcd, 0x00, 0x00])); - assert.strictEqual(buf1.toString('hex'), 'abcd0000'); - assert.strictEqual(buf1.write('abcdef01', 0, 'hex'), 4); - assert.deepStrictEqual(buf1, new Buffer([0xab, 0xcd, 0xef, 0x01])); - assert.strictEqual(buf1.toString('hex'), 'abcdef01'); - - var buf2 = Buffer.from(buf1.toString('hex'), 'hex'); - assert.strictEqual(buf1.toString('hex'), buf2.toString('hex')); - - var buf3 = Buffer.alloc(5); - assert.strictEqual(buf3.write('abcdxx', 1, 'hex'), 2); - assert.strictEqual(buf3.toString('hex'), '00abcd0000'); - - var buf4 = Buffer.alloc(4); - assert.deepStrictEqual(buf4, new Buffer([0, 0, 0, 0])); - assert.strictEqual(buf4.write('xxabcd', 0, 'hex'), 0); - assert.deepStrictEqual(buf4, new Buffer([0, 0, 0, 0])); - assert.strictEqual(buf4.write('xxab', 1, 'hex'), 0); - assert.deepStrictEqual(buf4, new Buffer([0, 0, 0, 0])); - assert.strictEqual(buf4.write('cdxxab', 0, 'hex'), 1); - assert.deepStrictEqual(buf4, new Buffer([0xcd, 0, 0, 0])); - - var buf5 = Buffer.alloc(256); - for (var i = 0; i < 256; i++) - buf5[i] = i; - - var hex = buf5.toString('hex'); - assert.deepStrictEqual(Buffer.from(hex, 'hex'), buf5); - - var badHex = hex.slice(0, 256) + 'xx' + hex.slice(256, 510); - assert.deepStrictEqual(Buffer.from(badHex, 'hex'), buf5.slice(0, 128)); -} - diff --git a/workshops/monte-carlo-on-ec2-spot-fleet/src/web/node_modules/buffer/test/node/test-buffer-bytelength.js b/workshops/monte-carlo-on-ec2-spot-fleet/src/web/node_modules/buffer/test/node/test-buffer-bytelength.js deleted file mode 100644 index 8d7dc35b..00000000 --- a/workshops/monte-carlo-on-ec2-spot-fleet/src/web/node_modules/buffer/test/node/test-buffer-bytelength.js +++ /dev/null @@ -1,90 +0,0 @@ -'use strict'; -var Buffer = require('../../').Buffer; - - - -var assert = require('assert'); -var Buffer = require('../../').Buffer; -var SlowBuffer = require('../../').SlowBuffer; - -// coerce values to string -assert.equal(Buffer.byteLength(32, 'latin1'), 2); -assert.equal(Buffer.byteLength(NaN, 'utf8'), 3); -assert.equal(Buffer.byteLength({}, 'latin1'), 15); -assert.equal(Buffer.byteLength(), 9); - -var buff = new Buffer(10); -assert(ArrayBuffer.isView(buff)); -var slowbuff = new SlowBuffer(10); -assert(ArrayBuffer.isView(slowbuff)); - -// buffer -var incomplete = Buffer.from([0xe4, 0xb8, 0xad, 0xe6, 0x96]); -assert.equal(Buffer.byteLength(incomplete), 5); -var ascii = Buffer.from('abc'); -assert.equal(Buffer.byteLength(ascii), 3); - -// ArrayBuffer -var buffer = new ArrayBuffer(8); -assert.equal(Buffer.byteLength(buffer), 8); - -// TypedArray -var int8 = new Int8Array(8); -assert.equal(Buffer.byteLength(int8), 8); -var uint8 = new Uint8Array(8); -assert.equal(Buffer.byteLength(uint8), 8); -var uintc8 = new Uint8ClampedArray(2); -assert.equal(Buffer.byteLength(uintc8), 2); -var int16 = new Int16Array(8); -assert.equal(Buffer.byteLength(int16), 16); -var uint16 = new Uint16Array(8); -assert.equal(Buffer.byteLength(uint16), 16); -var int32 = new Int32Array(8); -assert.equal(Buffer.byteLength(int32), 32); -var uint32 = new Uint32Array(8); -assert.equal(Buffer.byteLength(uint32), 32); -var float32 = new Float32Array(8); -assert.equal(Buffer.byteLength(float32), 32); -var float64 = new Float64Array(8); -assert.equal(Buffer.byteLength(float64), 64); - -// DataView -var dv = new DataView(new ArrayBuffer(2)); -assert.equal(Buffer.byteLength(dv), 2); - -// special case: zero length string -assert.equal(Buffer.byteLength('', 'ascii'), 0); -assert.equal(Buffer.byteLength('', 'HeX'), 0); - -// utf8 -assert.equal(Buffer.byteLength('∑éllö wørl∂!', 'utf-8'), 19); -assert.equal(Buffer.byteLength('κλμνξο', 'utf8'), 12); -assert.equal(Buffer.byteLength('挵挶挷挸挹', 'utf-8'), 15); -assert.equal(Buffer.byteLength('𠝹𠱓𠱸', 'UTF8'), 12); -// without an encoding, utf8 should be assumed -assert.equal(Buffer.byteLength('hey there'), 9); -assert.equal(Buffer.byteLength('𠱸挶νξ#xx :)'), 17); -assert.equal(Buffer.byteLength('hello world', ''), 11); -// it should also be assumed with unrecognized encoding -assert.equal(Buffer.byteLength('hello world', 'abc'), 11); -assert.equal(Buffer.byteLength('ßœ∑≈', 'unkn0wn enc0ding'), 10); - -// base64 -assert.equal(Buffer.byteLength('aGVsbG8gd29ybGQ=', 'base64'), 11); -assert.equal(Buffer.byteLength('bm9kZS5qcyByb2NrcyE=', 'base64'), 14); -assert.equal(Buffer.byteLength('aGkk', 'base64'), 3); -assert.equal(Buffer.byteLength('bHNrZGZsa3NqZmtsc2xrZmFqc2RsZmtqcw==', - 'base64'), 25); -// special padding -assert.equal(Buffer.byteLength('aaa=', 'base64'), 2); -assert.equal(Buffer.byteLength('aaaa==', 'base64'), 3); - -assert.equal(Buffer.byteLength('Il était tué'), 14); -assert.equal(Buffer.byteLength('Il était tué', 'utf8'), 14); -assert.equal(Buffer.byteLength('Il était tué', 'ascii'), 12); -assert.equal(Buffer.byteLength('Il était tué', 'latin1'), 12); -assert.equal(Buffer.byteLength('Il était tué', 'binary'), 12); -['ucs2', 'ucs-2', 'utf16le', 'utf-16le'].forEach(function(encoding) { - assert.equal(24, Buffer.byteLength('Il était tué', encoding)); -}); - diff --git a/workshops/monte-carlo-on-ec2-spot-fleet/src/web/node_modules/buffer/test/node/test-buffer-compare-offset.js b/workshops/monte-carlo-on-ec2-spot-fleet/src/web/node_modules/buffer/test/node/test-buffer-compare-offset.js deleted file mode 100644 index f1984ed9..00000000 --- a/workshops/monte-carlo-on-ec2-spot-fleet/src/web/node_modules/buffer/test/node/test-buffer-compare-offset.js +++ /dev/null @@ -1,66 +0,0 @@ -'use strict'; -var Buffer = require('../../').Buffer; - - - -var assert = require('assert'); - -var a = Buffer.from([1, 2, 3, 4, 5, 6, 7, 8, 9, 0]); -var b = Buffer.from([5, 6, 7, 8, 9, 0, 1, 2, 3, 4]); - -assert.equal(-1, a.compare(b)); - -// Equivalent to a.compare(b). -assert.equal(-1, a.compare(b, 0)); -assert.equal(-1, a.compare(b, '0')); - -// Equivalent to a.compare(b). -assert.equal(-1, a.compare(b, 0, undefined, 0)); - -// Zero-length targer, return 1 -assert.equal(1, a.compare(b, 0, 0, 0)); -assert.equal(1, a.compare(b, '0', '0', '0')); - -// Equivalent to Buffer.compare(a, b.slice(6, 10)) -assert.equal(1, a.compare(b, 6, 10)); - -// Zero-length source, return -1 -assert.equal(-1, a.compare(b, 6, 10, 0, 0)); - -// Equivalent to Buffer.compare(a.slice(4), b.slice(0, 5)) -assert.equal(1, a.compare(b, 0, 5, 4)); - -// Equivalent to Buffer.compare(a.slice(1), b.slice(5)) -assert.equal(1, a.compare(b, 5, undefined, 1)); - -// Equivalent to Buffer.compare(a.slice(2), b.slice(2, 4)) -assert.equal(-1, a.compare(b, 2, 4, 2)); - -// Equivalent to Buffer.compare(a.slice(4), b.slice(0, 7)) -assert.equal(-1, a.compare(b, 0, 7, 4)); - -// Equivalent to Buffer.compare(a.slice(4, 6), b.slice(0, 7)); -assert.equal(-1, a.compare(b, 0, 7, 4, 6)); - -// zero length target -assert.equal(1, a.compare(b, 0, null)); - -// coerces to targetEnd == 5 -assert.equal(-1, a.compare(b, 0, {valueOf: () => 5})); - -// zero length target -assert.equal(1, a.compare(b, Infinity, -Infinity)); - -// zero length target because default for targetEnd <= targetSource -assert.equal(1, a.compare(b, '0xff')); - -var oor = /out of range index/; - -assert.throws(() => a.compare(b, 0, 100, 0), oor); -assert.throws(() => a.compare(b, 0, 1, 0, 100), oor); -assert.throws(() => a.compare(b, -1), oor); -assert.throws(() => a.compare(b, 0, '0xff'), oor); -assert.throws(() => a.compare(b, 0, Infinity), oor); -assert.throws(() => a.compare(b, -Infinity, Infinity), oor); -assert.throws(() => a.compare(), /Argument must be a Buffer/); - diff --git a/workshops/monte-carlo-on-ec2-spot-fleet/src/web/node_modules/buffer/test/node/test-buffer-concat.js b/workshops/monte-carlo-on-ec2-spot-fleet/src/web/node_modules/buffer/test/node/test-buffer-concat.js deleted file mode 100644 index c0dc4da0..00000000 --- a/workshops/monte-carlo-on-ec2-spot-fleet/src/web/node_modules/buffer/test/node/test-buffer-concat.js +++ /dev/null @@ -1,40 +0,0 @@ -'use strict'; -var Buffer = require('../../').Buffer; - - -var assert = require('assert'); - -var zero = []; -var one = [ Buffer.from('asdf') ]; -var long = []; -for (var i = 0; i < 10; i++) long.push(Buffer.from('asdf')); - -var flatZero = Buffer.concat(zero); -var flatOne = Buffer.concat(one); -var flatLong = Buffer.concat(long); -var flatLongLen = Buffer.concat(long, 40); - -assert(flatZero.length === 0); -assert(flatOne.toString() === 'asdf'); -// A special case where concat used to return the first item, -// if the length is one. This check is to make sure that we don't do that. -assert(flatOne !== one[0]); -assert(flatLong.toString() === (new Array(10 + 1).join('asdf'))); -assert(flatLongLen.toString() === (new Array(10 + 1).join('asdf'))); - -assertWrongList(); -assertWrongList(null); -assertWrongList(Buffer.from('hello')); -assertWrongList([42]); -assertWrongList(['hello', 'world']); -assertWrongList(['hello', Buffer.from('world')]); - -function assertWrongList(value) { - assert.throws(function() { - Buffer.concat(value); - }, function(err) { - return err instanceof TypeError && - err.message === '"list" argument must be an Array of Buffers'; - }); -} - diff --git a/workshops/monte-carlo-on-ec2-spot-fleet/src/web/node_modules/buffer/test/node/test-buffer-fill.js b/workshops/monte-carlo-on-ec2-spot-fleet/src/web/node_modules/buffer/test/node/test-buffer-fill.js deleted file mode 100644 index 7138094a..00000000 --- a/workshops/monte-carlo-on-ec2-spot-fleet/src/web/node_modules/buffer/test/node/test-buffer-fill.js +++ /dev/null @@ -1,272 +0,0 @@ -'use strict'; -var Buffer = require('../../').Buffer; - - - -var assert = require('assert'); -var os = require('os'); -var SIZE = 28; - -var buf1 = Buffer.allocUnsafe(SIZE); -var buf2 = Buffer.allocUnsafe(SIZE); - - -// Default encoding -testBufs('abc'); -testBufs('\u0222aa'); -testBufs('a\u0234b\u0235c\u0236'); -testBufs('abc', 4); -testBufs('abc', 5); -testBufs('abc', SIZE); -testBufs('\u0222aa', 2); -testBufs('\u0222aa', 8); -testBufs('a\u0234b\u0235c\u0236', 4); -testBufs('a\u0234b\u0235c\u0236', 12); -testBufs('abc', 4, -1); -testBufs('abc', 4, 1); -testBufs('abc', 5, 1); -testBufs('\u0222aa', 2, -1); -testBufs('\u0222aa', 8, 1); -testBufs('a\u0234b\u0235c\u0236', 4, -1); -testBufs('a\u0234b\u0235c\u0236', 4, 1); -testBufs('a\u0234b\u0235c\u0236', 12, 1); - - -// UTF8 -testBufs('abc', 'utf8'); -testBufs('\u0222aa', 'utf8'); -testBufs('a\u0234b\u0235c\u0236', 'utf8'); -testBufs('abc', 4, 'utf8'); -testBufs('abc', 5, 'utf8'); -testBufs('abc', SIZE, 'utf8'); -testBufs('\u0222aa', 2, 'utf8'); -testBufs('\u0222aa', 8, 'utf8'); -testBufs('a\u0234b\u0235c\u0236', 4, 'utf8'); -testBufs('a\u0234b\u0235c\u0236', 12, 'utf8'); -testBufs('abc', 4, -1, 'utf8'); -testBufs('abc', 4, 1, 'utf8'); -testBufs('abc', 5, 1, 'utf8'); -testBufs('\u0222aa', 2, -1, 'utf8'); -testBufs('\u0222aa', 8, 1, 'utf8'); -testBufs('a\u0234b\u0235c\u0236', 4, -1, 'utf8'); -testBufs('a\u0234b\u0235c\u0236', 4, 1, 'utf8'); -testBufs('a\u0234b\u0235c\u0236', 12, 1, 'utf8'); -assert.equal(Buffer.allocUnsafe(1).fill(0).fill('\u0222')[0], 0xc8); - - -// BINARY -testBufs('abc', 'binary'); -testBufs('\u0222aa', 'binary'); -testBufs('a\u0234b\u0235c\u0236', 'binary'); -testBufs('abc', 4, 'binary'); -testBufs('abc', 5, 'binary'); -testBufs('abc', SIZE, 'binary'); -testBufs('\u0222aa', 2, 'binary'); -testBufs('\u0222aa', 8, 'binary'); -testBufs('a\u0234b\u0235c\u0236', 4, 'binary'); -testBufs('a\u0234b\u0235c\u0236', 12, 'binary'); -testBufs('abc', 4, -1, 'binary'); -testBufs('abc', 4, 1, 'binary'); -testBufs('abc', 5, 1, 'binary'); -testBufs('\u0222aa', 2, -1, 'binary'); -testBufs('\u0222aa', 8, 1, 'binary'); -testBufs('a\u0234b\u0235c\u0236', 4, -1, 'binary'); -testBufs('a\u0234b\u0235c\u0236', 4, 1, 'binary'); -testBufs('a\u0234b\u0235c\u0236', 12, 1, 'binary'); - - -// LATIN1 -testBufs('abc', 'latin1'); -testBufs('\u0222aa', 'latin1'); -testBufs('a\u0234b\u0235c\u0236', 'latin1'); -testBufs('abc', 4, 'latin1'); -testBufs('abc', 5, 'latin1'); -testBufs('abc', SIZE, 'latin1'); -testBufs('\u0222aa', 2, 'latin1'); -testBufs('\u0222aa', 8, 'latin1'); -testBufs('a\u0234b\u0235c\u0236', 4, 'latin1'); -testBufs('a\u0234b\u0235c\u0236', 12, 'latin1'); -testBufs('abc', 4, -1, 'latin1'); -testBufs('abc', 4, 1, 'latin1'); -testBufs('abc', 5, 1, 'latin1'); -testBufs('\u0222aa', 2, -1, 'latin1'); -testBufs('\u0222aa', 8, 1, 'latin1'); -testBufs('a\u0234b\u0235c\u0236', 4, -1, 'latin1'); -testBufs('a\u0234b\u0235c\u0236', 4, 1, 'latin1'); -testBufs('a\u0234b\u0235c\u0236', 12, 1, 'latin1'); - - -// UCS2 -testBufs('abc', 'ucs2'); -testBufs('\u0222aa', 'ucs2'); -testBufs('a\u0234b\u0235c\u0236', 'ucs2'); -testBufs('abc', 4, 'ucs2'); -testBufs('abc', SIZE, 'ucs2'); -testBufs('\u0222aa', 2, 'ucs2'); -testBufs('\u0222aa', 8, 'ucs2'); -testBufs('a\u0234b\u0235c\u0236', 4, 'ucs2'); -testBufs('a\u0234b\u0235c\u0236', 12, 'ucs2'); -testBufs('abc', 4, -1, 'ucs2'); -testBufs('abc', 4, 1, 'ucs2'); -testBufs('abc', 5, 1, 'ucs2'); -testBufs('\u0222aa', 2, -1, 'ucs2'); -testBufs('\u0222aa', 8, 1, 'ucs2'); -testBufs('a\u0234b\u0235c\u0236', 4, -1, 'ucs2'); -testBufs('a\u0234b\u0235c\u0236', 4, 1, 'ucs2'); -testBufs('a\u0234b\u0235c\u0236', 12, 1, 'ucs2'); -assert.equal(Buffer.allocUnsafe(1).fill('\u0222', 'ucs2')[0], - os.endianness() === 'LE' ? 0x22 : 0x02); - - -// HEX -testBufs('616263', 'hex'); -testBufs('c8a26161', 'hex'); -testBufs('61c8b462c8b563c8b6', 'hex'); -testBufs('616263', 4, 'hex'); -testBufs('616263', 5, 'hex'); -testBufs('616263', SIZE, 'hex'); -testBufs('c8a26161', 2, 'hex'); -testBufs('c8a26161', 8, 'hex'); -testBufs('61c8b462c8b563c8b6', 4, 'hex'); -testBufs('61c8b462c8b563c8b6', 12, 'hex'); -testBufs('616263', 4, -1, 'hex'); -testBufs('616263', 4, 1, 'hex'); -testBufs('616263', 5, 1, 'hex'); -testBufs('c8a26161', 2, -1, 'hex'); -testBufs('c8a26161', 8, 1, 'hex'); -testBufs('61c8b462c8b563c8b6', 4, -1, 'hex'); -testBufs('61c8b462c8b563c8b6', 4, 1, 'hex'); -testBufs('61c8b462c8b563c8b6', 12, 1, 'hex'); -// Make sure this operation doesn't go on forever -buf1.fill('yKJh', 'hex'); -assert.throws(() => buf1.fill('\u0222', 'hex')); - - -// BASE64 -testBufs('YWJj', 'ucs2'); -testBufs('yKJhYQ==', 'ucs2'); -testBufs('Yci0Ysi1Y8i2', 'ucs2'); -testBufs('YWJj', 4, 'ucs2'); -testBufs('YWJj', SIZE, 'ucs2'); -testBufs('yKJhYQ==', 2, 'ucs2'); -testBufs('yKJhYQ==', 8, 'ucs2'); -testBufs('Yci0Ysi1Y8i2', 4, 'ucs2'); -testBufs('Yci0Ysi1Y8i2', 12, 'ucs2'); -testBufs('YWJj', 4, -1, 'ucs2'); -testBufs('YWJj', 4, 1, 'ucs2'); -testBufs('YWJj', 5, 1, 'ucs2'); -testBufs('yKJhYQ==', 2, -1, 'ucs2'); -testBufs('yKJhYQ==', 8, 1, 'ucs2'); -testBufs('Yci0Ysi1Y8i2', 4, -1, 'ucs2'); -testBufs('Yci0Ysi1Y8i2', 4, 1, 'ucs2'); -testBufs('Yci0Ysi1Y8i2', 12, 1, 'ucs2'); - - -// Buffer -function deepStrictEqualValues(buf, arr) { - for (var [index, value] of buf.entries()) { - assert.deepStrictEqual(value, arr[index]); - } -} - - -var buf2Fill = Buffer.allocUnsafe(1).fill(2); -deepStrictEqualValues(genBuffer(4, [buf2Fill]), [2, 2, 2, 2]); -deepStrictEqualValues(genBuffer(4, [buf2Fill, 1]), [0, 2, 2, 2]); -deepStrictEqualValues(genBuffer(4, [buf2Fill, 1, 3]), [0, 2, 2, 0]); -deepStrictEqualValues(genBuffer(4, [buf2Fill, 1, 1]), [0, 0, 0, 0]); -deepStrictEqualValues(genBuffer(4, [buf2Fill, 1, -1]), [0, 0, 0, 0]); -var hexBufFill = Buffer.allocUnsafe(2).fill(0).fill('0102', 'hex'); -deepStrictEqualValues(genBuffer(4, [hexBufFill]), [1, 2, 1, 2]); -deepStrictEqualValues(genBuffer(4, [hexBufFill, 1]), [0, 1, 2, 1]); -deepStrictEqualValues(genBuffer(4, [hexBufFill, 1, 3]), [0, 1, 2, 0]); -deepStrictEqualValues(genBuffer(4, [hexBufFill, 1, 1]), [0, 0, 0, 0]); -deepStrictEqualValues(genBuffer(4, [hexBufFill, 1, -1]), [0, 0, 0, 0]); - - -// Check exceptions -assert.throws(() => buf1.fill(0, -1)); -assert.throws(() => buf1.fill(0, 0, buf1.length + 1)); -assert.throws(() => buf1.fill('', -1)); -assert.throws(() => buf1.fill('', 0, buf1.length + 1)); -assert.throws(() => buf1.fill('a', 0, buf1.length, 'node rocks!')); -assert.throws(() => buf1.fill('a', 0, 0, NaN)); -assert.throws(() => buf1.fill('a', 0, 0, null)); -assert.throws(() => buf1.fill('a', 0, 0, 'foo')); - - -function genBuffer(size, args) { - var b = Buffer.allocUnsafe(size); - return b.fill(0).fill.apply(b, args); -} - - -function bufReset() { - buf1.fill(0); - buf2.fill(0); -} - - -// This is mostly accurate. Except write() won't write partial bytes to the -// string while fill() blindly copies bytes into memory. To account for that an -// error will be thrown if not all the data can be written, and the SIZE has -// been massaged to work with the input characters. -function writeToFill(string, offset, end, encoding) { - if (typeof offset === 'string') { - encoding = offset; - offset = 0; - end = buf2.length; - } else if (typeof end === 'string') { - encoding = end; - end = buf2.length; - } else if (end === undefined) { - end = buf2.length; - } - - if (offset < 0 || end > buf2.length) - throw new RangeError('Out of range index'); - - if (end <= offset) - return buf2; - - offset >>>= 0; - end >>>= 0; - assert(offset <= buf2.length); - - // Convert "end" to "length" (which write understands). - var length = end - offset < 0 ? 0 : end - offset; - - var wasZero = false; - do { - var written = buf2.write(string, offset, length, encoding); - offset += written; - // Safety check in case write falls into infinite loop. - if (written === 0) { - if (wasZero) - throw new Error('Could not write all data to Buffer'); - else - wasZero = true; - } - } while (offset < buf2.length); - - // Correction for UCS2 operations. - if (os.endianness() === 'BE' && encoding === 'ucs2') { - for (var i = 0; i < buf2.length; i += 2) { - var tmp = buf2[i]; - buf2[i] = buf2[i + 1]; - buf2[i + 1] = tmp; - } - } - - return buf2; -} - - -function testBufs(string, offset, length, encoding) { - bufReset(); - buf1.fill.apply(buf1, arguments); - // Swap bytes on BE archs for ucs2 encoding. - assert.deepStrictEqual(buf1.fill.apply(buf1, arguments), - writeToFill.apply(null, arguments)); -} - diff --git a/workshops/monte-carlo-on-ec2-spot-fleet/src/web/node_modules/buffer/test/node/test-buffer-includes.js b/workshops/monte-carlo-on-ec2-spot-fleet/src/web/node_modules/buffer/test/node/test-buffer-includes.js deleted file mode 100644 index 2096a34b..00000000 --- a/workshops/monte-carlo-on-ec2-spot-fleet/src/web/node_modules/buffer/test/node/test-buffer-includes.js +++ /dev/null @@ -1,305 +0,0 @@ -'use strict'; -var Buffer = require('../../').Buffer; - - -var assert = require('assert'); - -var Buffer = require('../../').Buffer; - -var b = Buffer.from('abcdef'); -var buf_a = Buffer.from('a'); -var buf_bc = Buffer.from('bc'); -var buf_f = Buffer.from('f'); -var buf_z = Buffer.from('z'); -var buf_empty = Buffer.from(''); - -assert(b.includes('a')); -assert(!b.includes('a', 1)); -assert(!b.includes('a', -1)); -assert(!b.includes('a', -4)); -assert(b.includes('a', -b.length)); -assert(b.includes('a', NaN)); -assert(b.includes('a', -Infinity)); -assert(!b.includes('a', Infinity)); -assert(b.includes('bc')); -assert(!b.includes('bc', 2)); -assert(!b.includes('bc', -1)); -assert(!b.includes('bc', -3)); -assert(b.includes('bc', -5)); -assert(b.includes('bc', NaN)); -assert(b.includes('bc', -Infinity)); -assert(!b.includes('bc', Infinity)); -assert(b.includes('f'), b.length - 1); -assert(!b.includes('z')); -assert(!b.includes('')); -assert(!b.includes('', 1)); -assert(!b.includes('', b.length + 1)); -assert(!b.includes('', Infinity)); -assert(b.includes(buf_a)); -assert(!b.includes(buf_a, 1)); -assert(!b.includes(buf_a, -1)); -assert(!b.includes(buf_a, -4)); -assert(b.includes(buf_a, -b.length)); -assert(b.includes(buf_a, NaN)); -assert(b.includes(buf_a, -Infinity)); -assert(!b.includes(buf_a, Infinity)); -assert(b.includes(buf_bc)); -assert(!b.includes(buf_bc, 2)); -assert(!b.includes(buf_bc, -1)); -assert(!b.includes(buf_bc, -3)); -assert(b.includes(buf_bc, -5)); -assert(b.includes(buf_bc, NaN)); -assert(b.includes(buf_bc, -Infinity)); -assert(!b.includes(buf_bc, Infinity)); -assert(b.includes(buf_f), b.length - 1); -assert(!b.includes(buf_z)); -assert(!b.includes(buf_empty)); -assert(!b.includes(buf_empty, 1)); -assert(!b.includes(buf_empty, b.length + 1)); -assert(!b.includes(buf_empty, Infinity)); -assert(b.includes(0x61)); -assert(!b.includes(0x61, 1)); -assert(!b.includes(0x61, -1)); -assert(!b.includes(0x61, -4)); -assert(b.includes(0x61, -b.length)); -assert(b.includes(0x61, NaN)); -assert(b.includes(0x61, -Infinity)); -assert(!b.includes(0x61, Infinity)); -assert(!b.includes(0x0)); - -// test offsets -assert(b.includes('d', 2)); -assert(b.includes('f', 5)); -assert(b.includes('f', -1)); -assert(!b.includes('f', 6)); - -assert(b.includes(Buffer.from('d'), 2)); -assert(b.includes(Buffer.from('f'), 5)); -assert(b.includes(Buffer.from('f'), -1)); -assert(!b.includes(Buffer.from('f'), 6)); - -assert(!Buffer.from('ff').includes(Buffer.from('f'), 1, 'ucs2')); - -// test hex encoding -assert.strictEqual( - Buffer.from(b.toString('hex'), 'hex') - .includes('64', 0, 'hex'), - true -); -assert.strictEqual( - Buffer.from(b.toString('hex'), 'hex') - .includes(Buffer.from('64', 'hex'), 0, 'hex'), - true -); - -// test base64 encoding -assert.strictEqual( - Buffer.from(b.toString('base64'), 'base64') - .includes('ZA==', 0, 'base64'), - true -); -assert.strictEqual( - Buffer.from(b.toString('base64'), 'base64') - .includes(Buffer.from('ZA==', 'base64'), 0, 'base64'), - true -); - -// test ascii encoding -assert.strictEqual( - Buffer.from(b.toString('ascii'), 'ascii') - .includes('d', 0, 'ascii'), - true -); -assert.strictEqual( - Buffer.from(b.toString('ascii'), 'ascii') - .includes(Buffer.from('d', 'ascii'), 0, 'ascii'), - true -); - -// test latin1 encoding -assert.strictEqual( - Buffer.from(b.toString('latin1'), 'latin1') - .includes('d', 0, 'latin1'), - true -); -assert.strictEqual( - Buffer.from(b.toString('latin1'), 'latin1') - .includes(Buffer.from('d', 'latin1'), 0, 'latin1'), - true -); - -// test binary encoding -assert.strictEqual( - Buffer.from(b.toString('binary'), 'binary') - .includes('d', 0, 'binary'), - true -); -assert.strictEqual( - Buffer.from(b.toString('binary'), 'binary') - .includes(Buffer.from('d', 'binary'), 0, 'binary'), - true -); - - -// test usc2 encoding -var twoByteString = Buffer.from('\u039a\u0391\u03a3\u03a3\u0395', 'ucs2'); - -assert(twoByteString.includes('\u0395', 4, 'ucs2')); -assert(twoByteString.includes('\u03a3', -4, 'ucs2')); -assert(twoByteString.includes('\u03a3', -6, 'ucs2')); -assert(twoByteString.includes( - Buffer.from('\u03a3', 'ucs2'), -6, 'ucs2')); -assert(!twoByteString.includes('\u03a3', -2, 'ucs2')); - -var mixedByteStringUcs2 = - Buffer.from('\u039a\u0391abc\u03a3\u03a3\u0395', 'ucs2'); -assert(mixedByteStringUcs2.includes('bc', 0, 'ucs2')); -assert(mixedByteStringUcs2.includes('\u03a3', 0, 'ucs2')); -assert(!mixedByteStringUcs2.includes('\u0396', 0, 'ucs2')); - -assert( - 6, mixedByteStringUcs2.includes(Buffer.from('bc', 'ucs2'), 0, 'ucs2')); -assert( - 10, mixedByteStringUcs2.includes(Buffer.from('\u03a3', 'ucs2'), - 0, 'ucs2')); -assert( - -1, mixedByteStringUcs2.includes(Buffer.from('\u0396', 'ucs2'), - 0, 'ucs2')); - -twoByteString = Buffer.from('\u039a\u0391\u03a3\u03a3\u0395', 'ucs2'); - -// Test single char pattern -assert(twoByteString.includes('\u039a', 0, 'ucs2')); -assert(twoByteString.includes('\u0391', 0, 'ucs2'), 'Alpha'); -assert(twoByteString.includes('\u03a3', 0, 'ucs2'), 'First Sigma'); -assert(twoByteString.includes('\u03a3', 6, 'ucs2'), 'Second Sigma'); -assert(twoByteString.includes('\u0395', 0, 'ucs2'), 'Epsilon'); -assert(!twoByteString.includes('\u0392', 0, 'ucs2'), 'Not beta'); - -// Test multi-char pattern -assert(twoByteString.includes('\u039a\u0391', 0, 'ucs2'), 'Lambda Alpha'); -assert(twoByteString.includes('\u0391\u03a3', 0, 'ucs2'), 'Alpha Sigma'); -assert(twoByteString.includes('\u03a3\u03a3', 0, 'ucs2'), 'Sigma Sigma'); -assert(twoByteString.includes('\u03a3\u0395', 0, 'ucs2'), 'Sigma Epsilon'); - -var mixedByteStringUtf8 = Buffer.from('\u039a\u0391abc\u03a3\u03a3\u0395'); -assert(mixedByteStringUtf8.includes('bc')); -assert(mixedByteStringUtf8.includes('bc', 5)); -assert(mixedByteStringUtf8.includes('bc', -8)); -assert(mixedByteStringUtf8.includes('\u03a3')); -assert(!mixedByteStringUtf8.includes('\u0396')); - - -// Test complex string includes algorithms. Only trigger for long strings. -// Long string that isn't a simple repeat of a shorter string. -var longString = 'A'; -for (var i = 66; i < 76; i++) { // from 'B' to 'K' - longString = longString + String.fromCharCode(i) + longString; -} - -var longBufferString = Buffer.from(longString); - -// pattern of 15 chars, repeated every 16 chars in long -var pattern = 'ABACABADABACABA'; -for (var i = 0; i < longBufferString.length - pattern.length; i += 7) { - var includes = longBufferString.includes(pattern, i); - assert(includes, 'Long ABACABA...-string at index ' + i); -} -assert(longBufferString.includes('AJABACA'), 'Long AJABACA, First J'); -assert(longBufferString.includes('AJABACA', 511), 'Long AJABACA, Second J'); - -pattern = 'JABACABADABACABA'; -assert(longBufferString.includes(pattern), 'Long JABACABA..., First J'); -assert(longBufferString.includes(pattern, 512), 'Long JABACABA..., Second J'); - -// Search for a non-ASCII string in a pure ASCII string. -var asciiString = Buffer.from( - 'arglebargleglopglyfarglebargleglopglyfarglebargleglopglyf'); -assert(!asciiString.includes('\x2061')); -assert(asciiString.includes('leb', 0)); - -// Search in string containing many non-ASCII chars. -var allCodePoints = []; -for (var i = 0; i < 65536; i++) allCodePoints[i] = i; -var allCharsString = String.fromCharCode.apply(String, allCodePoints); -var allCharsBufferUtf8 = Buffer.from(allCharsString); -var allCharsBufferUcs2 = Buffer.from(allCharsString, 'ucs2'); - -// Search for string long enough to trigger complex search with ASCII pattern -// and UC16 subject. -assert(!allCharsBufferUtf8.includes('notfound')); -assert(!allCharsBufferUcs2.includes('notfound')); - -// Find substrings in Utf8. -var lengths = [1, 3, 15]; // Single char, simple and complex. -var indices = [0x5, 0x60, 0x400, 0x680, 0x7ee, 0xFF02, 0x16610, 0x2f77b]; -for (var lengthIndex = 0; lengthIndex < lengths.length; lengthIndex++) { - for (var i = 0; i < indices.length; i++) { - var index = indices[i]; - var length = lengths[lengthIndex]; - - if (index + length > 0x7F) { - length = 2 * length; - } - - if (index + length > 0x7FF) { - length = 3 * length; - } - - if (index + length > 0xFFFF) { - length = 4 * length; - } - - var patternBufferUtf8 = allCharsBufferUtf8.slice(index, index + length); - assert(index, allCharsBufferUtf8.includes(patternBufferUtf8)); - - var patternStringUtf8 = patternBufferUtf8.toString(); - assert(index, allCharsBufferUtf8.includes(patternStringUtf8)); - } -} - -// Find substrings in Usc2. -lengths = [2, 4, 16]; // Single char, simple and complex. -indices = [0x5, 0x65, 0x105, 0x205, 0x285, 0x2005, 0x2085, 0xfff0]; -for (var lengthIndex = 0; lengthIndex < lengths.length; lengthIndex++) { - for (var i = 0; i < indices.length; i++) { - var index = indices[i] * 2; - var length = lengths[lengthIndex]; - - var patternBufferUcs2 = - allCharsBufferUcs2.slice(index, index + length); - assert( - index, allCharsBufferUcs2.includes(patternBufferUcs2, 0, 'ucs2')); - - var patternStringUcs2 = patternBufferUcs2.toString('ucs2'); - assert( - index, allCharsBufferUcs2.includes(patternStringUcs2, 0, 'ucs2')); - } -} - -assert.throws(function() { - b.includes(function() { }); -}); -assert.throws(function() { - b.includes({}); -}); -assert.throws(function() { - b.includes([]); -}); - -// test truncation of Number arguments to uint8 -{ - var buf = Buffer.from('this is a test'); - assert.ok(buf.includes(0x6973)); - assert.ok(buf.includes(0x697320)); - assert.ok(buf.includes(0x69732069)); - assert.ok(buf.includes(0x697374657374)); - assert.ok(buf.includes(0x69737374)); - assert.ok(buf.includes(0x69737465)); - assert.ok(buf.includes(0x69737465)); - assert.ok(buf.includes(-140)); - assert.ok(buf.includes(-152)); - assert.ok(!buf.includes(0xff)); - assert.ok(!buf.includes(0xffff)); -} - diff --git a/workshops/monte-carlo-on-ec2-spot-fleet/src/web/node_modules/buffer/test/node/test-buffer-indexof.js b/workshops/monte-carlo-on-ec2-spot-fleet/src/web/node_modules/buffer/test/node/test-buffer-indexof.js deleted file mode 100644 index 24502c3f..00000000 --- a/workshops/monte-carlo-on-ec2-spot-fleet/src/web/node_modules/buffer/test/node/test-buffer-indexof.js +++ /dev/null @@ -1,523 +0,0 @@ -'use strict'; -var Buffer = require('../../').Buffer; - - -var assert = require('assert'); - -var Buffer = require('../../').Buffer; - -var b = Buffer.from('abcdef'); -var buf_a = Buffer.from('a'); -var buf_bc = Buffer.from('bc'); -var buf_f = Buffer.from('f'); -var buf_z = Buffer.from('z'); -var buf_empty = Buffer.from(''); - -assert.equal(b.indexOf('a'), 0); -assert.equal(b.indexOf('a', 1), -1); -assert.equal(b.indexOf('a', -1), -1); -assert.equal(b.indexOf('a', -4), -1); -assert.equal(b.indexOf('a', -b.length), 0); -assert.equal(b.indexOf('a', NaN), 0); -assert.equal(b.indexOf('a', -Infinity), 0); -assert.equal(b.indexOf('a', Infinity), -1); -assert.equal(b.indexOf('bc'), 1); -assert.equal(b.indexOf('bc', 2), -1); -assert.equal(b.indexOf('bc', -1), -1); -assert.equal(b.indexOf('bc', -3), -1); -assert.equal(b.indexOf('bc', -5), 1); -assert.equal(b.indexOf('bc', NaN), 1); -assert.equal(b.indexOf('bc', -Infinity), 1); -assert.equal(b.indexOf('bc', Infinity), -1); -assert.equal(b.indexOf('f'), b.length - 1); -assert.equal(b.indexOf('z'), -1); -assert.equal(b.indexOf(''), -1); -assert.equal(b.indexOf('', 1), -1); -assert.equal(b.indexOf('', b.length + 1), -1); -assert.equal(b.indexOf('', Infinity), -1); -assert.equal(b.indexOf(buf_a), 0); -assert.equal(b.indexOf(buf_a, 1), -1); -assert.equal(b.indexOf(buf_a, -1), -1); -assert.equal(b.indexOf(buf_a, -4), -1); -assert.equal(b.indexOf(buf_a, -b.length), 0); -assert.equal(b.indexOf(buf_a, NaN), 0); -assert.equal(b.indexOf(buf_a, -Infinity), 0); -assert.equal(b.indexOf(buf_a, Infinity), -1); -assert.equal(b.indexOf(buf_bc), 1); -assert.equal(b.indexOf(buf_bc, 2), -1); -assert.equal(b.indexOf(buf_bc, -1), -1); -assert.equal(b.indexOf(buf_bc, -3), -1); -assert.equal(b.indexOf(buf_bc, -5), 1); -assert.equal(b.indexOf(buf_bc, NaN), 1); -assert.equal(b.indexOf(buf_bc, -Infinity), 1); -assert.equal(b.indexOf(buf_bc, Infinity), -1); -assert.equal(b.indexOf(buf_f), b.length - 1); -assert.equal(b.indexOf(buf_z), -1); -assert.equal(b.indexOf(buf_empty), -1); -assert.equal(b.indexOf(buf_empty, 1), -1); -assert.equal(b.indexOf(buf_empty, b.length + 1), -1); -assert.equal(b.indexOf(buf_empty, Infinity), -1); -assert.equal(b.indexOf(0x61), 0); -assert.equal(b.indexOf(0x61, 1), -1); -assert.equal(b.indexOf(0x61, -1), -1); -assert.equal(b.indexOf(0x61, -4), -1); -assert.equal(b.indexOf(0x61, -b.length), 0); -assert.equal(b.indexOf(0x61, NaN), 0); -assert.equal(b.indexOf(0x61, -Infinity), 0); -assert.equal(b.indexOf(0x61, Infinity), -1); -assert.equal(b.indexOf(0x0), -1); - -// test offsets -assert.equal(b.indexOf('d', 2), 3); -assert.equal(b.indexOf('f', 5), 5); -assert.equal(b.indexOf('f', -1), 5); -assert.equal(b.indexOf('f', 6), -1); - -assert.equal(b.indexOf(Buffer.from('d'), 2), 3); -assert.equal(b.indexOf(Buffer.from('f'), 5), 5); -assert.equal(b.indexOf(Buffer.from('f'), -1), 5); -assert.equal(b.indexOf(Buffer.from('f'), 6), -1); - -assert.equal(Buffer.from('ff').indexOf(Buffer.from('f'), 1, 'ucs2'), -1); - -// test hex encoding -assert.strictEqual( - Buffer.from(b.toString('hex'), 'hex') - .indexOf('64', 0, 'hex'), - 3 -); -assert.strictEqual( - Buffer.from(b.toString('hex'), 'hex') - .indexOf(Buffer.from('64', 'hex'), 0, 'hex'), - 3 -); - -// test base64 encoding -assert.strictEqual( - Buffer.from(b.toString('base64'), 'base64') - .indexOf('ZA==', 0, 'base64'), - 3 -); -assert.strictEqual( - Buffer.from(b.toString('base64'), 'base64') - .indexOf(Buffer.from('ZA==', 'base64'), 0, 'base64'), - 3 -); - -// test ascii encoding -assert.strictEqual( - Buffer.from(b.toString('ascii'), 'ascii') - .indexOf('d', 0, 'ascii'), - 3 -); -assert.strictEqual( - Buffer.from(b.toString('ascii'), 'ascii') - .indexOf(Buffer.from('d', 'ascii'), 0, 'ascii'), - 3 -); - -// test latin1 encoding -assert.strictEqual( - Buffer.from(b.toString('latin1'), 'latin1') - .indexOf('d', 0, 'latin1'), - 3 -); -assert.strictEqual( - Buffer.from(b.toString('latin1'), 'latin1') - .indexOf(Buffer.from('d', 'latin1'), 0, 'latin1'), - 3 -); -assert.strictEqual( - Buffer.from('aa\u00e8aa', 'latin1') - .indexOf('\u00e8', 'latin1'), - 2 -); -assert.strictEqual( - Buffer.from('\u00e8', 'latin1') - .indexOf('\u00e8', 'latin1'), - 0 -); -assert.strictEqual( - Buffer.from('\u00e8', 'latin1') - .indexOf(Buffer.from('\u00e8', 'latin1'), 'latin1'), - 0 -); - -// test binary encoding -assert.strictEqual( - Buffer.from(b.toString('binary'), 'binary') - .indexOf('d', 0, 'binary'), - 3 -); -assert.strictEqual( - Buffer.from(b.toString('binary'), 'binary') - .indexOf(Buffer.from('d', 'binary'), 0, 'binary'), - 3 -); -assert.strictEqual( - Buffer.from('aa\u00e8aa', 'binary') - .indexOf('\u00e8', 'binary'), - 2 -); -assert.strictEqual( - Buffer.from('\u00e8', 'binary') - .indexOf('\u00e8', 'binary'), - 0 -); -assert.strictEqual( - Buffer.from('\u00e8', 'binary') - .indexOf(Buffer.from('\u00e8', 'binary'), 'binary'), - 0 -); - - -// test optional offset with passed encoding -assert.equal(Buffer.from('aaaa0').indexOf('30', 'hex'), 4); -assert.equal(Buffer.from('aaaa00a').indexOf('3030', 'hex'), 4); - -{ - // test usc2 encoding - var twoByteString = Buffer.from('\u039a\u0391\u03a3\u03a3\u0395', 'ucs2'); - - assert.equal(8, twoByteString.indexOf('\u0395', 4, 'ucs2')); - assert.equal(6, twoByteString.indexOf('\u03a3', -4, 'ucs2')); - assert.equal(4, twoByteString.indexOf('\u03a3', -6, 'ucs2')); - assert.equal(4, twoByteString.indexOf( - Buffer.from('\u03a3', 'ucs2'), -6, 'ucs2')); - assert.equal(-1, twoByteString.indexOf('\u03a3', -2, 'ucs2')); -} - -var mixedByteStringUcs2 = - Buffer.from('\u039a\u0391abc\u03a3\u03a3\u0395', 'ucs2'); -assert.equal(6, mixedByteStringUcs2.indexOf('bc', 0, 'ucs2')); -assert.equal(10, mixedByteStringUcs2.indexOf('\u03a3', 0, 'ucs2')); -assert.equal(-1, mixedByteStringUcs2.indexOf('\u0396', 0, 'ucs2')); - -assert.equal( - 6, mixedByteStringUcs2.indexOf(Buffer.from('bc', 'ucs2'), 0, 'ucs2')); -assert.equal( - 10, mixedByteStringUcs2.indexOf(Buffer.from('\u03a3', 'ucs2'), 0, 'ucs2')); -assert.equal( - -1, mixedByteStringUcs2.indexOf(Buffer.from('\u0396', 'ucs2'), 0, 'ucs2')); - -{ - var twoByteString = Buffer.from('\u039a\u0391\u03a3\u03a3\u0395', 'ucs2'); - - // Test single char pattern - assert.equal(0, twoByteString.indexOf('\u039a', 0, 'ucs2')); - assert.equal(2, twoByteString.indexOf('\u0391', 0, 'ucs2'), 'Alpha'); - assert.equal(4, twoByteString.indexOf('\u03a3', 0, 'ucs2'), 'First Sigma'); - assert.equal(6, twoByteString.indexOf('\u03a3', 6, 'ucs2'), 'Second Sigma'); - assert.equal(8, twoByteString.indexOf('\u0395', 0, 'ucs2'), 'Epsilon'); - assert.equal(-1, twoByteString.indexOf('\u0392', 0, 'ucs2'), 'Not beta'); - - // Test multi-char pattern - assert.equal( - 0, twoByteString.indexOf('\u039a\u0391', 0, 'ucs2'), 'Lambda Alpha'); - assert.equal( - 2, twoByteString.indexOf('\u0391\u03a3', 0, 'ucs2'), 'Alpha Sigma'); - assert.equal( - 4, twoByteString.indexOf('\u03a3\u03a3', 0, 'ucs2'), 'Sigma Sigma'); - assert.equal( - 6, twoByteString.indexOf('\u03a3\u0395', 0, 'ucs2'), 'Sigma Epsilon'); -} - -var mixedByteStringUtf8 = Buffer.from('\u039a\u0391abc\u03a3\u03a3\u0395'); -assert.equal(5, mixedByteStringUtf8.indexOf('bc')); -assert.equal(5, mixedByteStringUtf8.indexOf('bc', 5)); -assert.equal(5, mixedByteStringUtf8.indexOf('bc', -8)); -assert.equal(7, mixedByteStringUtf8.indexOf('\u03a3')); -assert.equal(-1, mixedByteStringUtf8.indexOf('\u0396')); - - -// Test complex string indexOf algorithms. Only trigger for long strings. -// Long string that isn't a simple repeat of a shorter string. -var longString = 'A'; -for (var i = 66; i < 76; i++) { // from 'B' to 'K' - longString = longString + String.fromCharCode(i) + longString; -} - -var longBufferString = Buffer.from(longString); - -// pattern of 15 chars, repeated every 16 chars in long -var pattern = 'ABACABADABACABA'; -for (var i = 0; i < longBufferString.length - pattern.length; i += 7) { - var index = longBufferString.indexOf(pattern, i); - assert.equal((i + 15) & ~0xf, index, 'Long ABACABA...-string at index ' + i); -} -assert.equal(510, longBufferString.indexOf('AJABACA'), 'Long AJABACA, First J'); -assert.equal( - 1534, longBufferString.indexOf('AJABACA', 511), 'Long AJABACA, Second J'); - -pattern = 'JABACABADABACABA'; -assert.equal( - 511, longBufferString.indexOf(pattern), 'Long JABACABA..., First J'); -assert.equal( - 1535, longBufferString.indexOf(pattern, 512), 'Long JABACABA..., Second J'); - -// Search for a non-ASCII string in a pure ASCII string. -var asciiString = Buffer.from( - 'arglebargleglopglyfarglebargleglopglyfarglebargleglopglyf'); -assert.equal(-1, asciiString.indexOf('\x2061')); -assert.equal(3, asciiString.indexOf('leb', 0)); - -// Search in string containing many non-ASCII chars. -var allCodePoints = []; -for (var i = 0; i < 65536; i++) allCodePoints[i] = i; -var allCharsString = String.fromCharCode.apply(String, allCodePoints); -var allCharsBufferUtf8 = Buffer.from(allCharsString); -var allCharsBufferUcs2 = Buffer.from(allCharsString, 'ucs2'); - -// Search for string long enough to trigger complex search with ASCII pattern -// and UC16 subject. -assert.equal(-1, allCharsBufferUtf8.indexOf('notfound')); -assert.equal(-1, allCharsBufferUcs2.indexOf('notfound')); - -// Needle is longer than haystack, but only because it's encoded as UTF-16 -assert.strictEqual(Buffer.from('aaaa').indexOf('a'.repeat(4), 'ucs2'), -1); - -assert.strictEqual(Buffer.from('aaaa').indexOf('a'.repeat(4), 'utf8'), 0); -assert.strictEqual(Buffer.from('aaaa').indexOf('你好', 'ucs2'), -1); - -// Haystack has odd length, but the needle is UCS2. -// assert.strictEqual(Buffer.from('aaaaa').indexOf('b', 'ucs2'), -1); - -{ - // Find substrings in Utf8. - var lengths = [1, 3, 15]; // Single char, simple and complex. - var indices = [0x5, 0x60, 0x400, 0x680, 0x7ee, 0xFF02, 0x16610, 0x2f77b]; - for (var lengthIndex = 0; lengthIndex < lengths.length; lengthIndex++) { - for (var i = 0; i < indices.length; i++) { - var index = indices[i]; - var length = lengths[lengthIndex]; - - if (index + length > 0x7F) { - length = 2 * length; - } - - if (index + length > 0x7FF) { - length = 3 * length; - } - - if (index + length > 0xFFFF) { - length = 4 * length; - } - - var patternBufferUtf8 = allCharsBufferUtf8.slice(index, index + length); - assert.equal(index, allCharsBufferUtf8.indexOf(patternBufferUtf8)); - - var patternStringUtf8 = patternBufferUtf8.toString(); - assert.equal(index, allCharsBufferUtf8.indexOf(patternStringUtf8)); - } - } -} - -{ - // Find substrings in Usc2. - var lengths = [2, 4, 16]; // Single char, simple and complex. - var indices = [0x5, 0x65, 0x105, 0x205, 0x285, 0x2005, 0x2085, 0xfff0]; - for (var lengthIndex = 0; lengthIndex < lengths.length; lengthIndex++) { - for (var i = 0; i < indices.length; i++) { - var index = indices[i] * 2; - var length = lengths[lengthIndex]; - - var patternBufferUcs2 = - allCharsBufferUcs2.slice(index, index + length); - assert.equal( - index, allCharsBufferUcs2.indexOf(patternBufferUcs2, 0, 'ucs2')); - - var patternStringUcs2 = patternBufferUcs2.toString('ucs2'); - assert.equal( - index, allCharsBufferUcs2.indexOf(patternStringUcs2, 0, 'ucs2')); - } - } -} - -assert.throws(function() { - b.indexOf(function() { }); -}); -assert.throws(function() { - b.indexOf({}); -}); -assert.throws(function() { - b.indexOf([]); -}); - -// All code for handling encodings is shared between Buffer.indexOf and -// Buffer.lastIndexOf, so only testing the separate lastIndexOf semantics. - -// Test lastIndexOf basic functionality; Buffer b contains 'abcdef'. -// lastIndexOf string: -assert.equal(b.lastIndexOf('a'), 0); -assert.equal(b.lastIndexOf('a', 1), 0); -assert.equal(b.lastIndexOf('b', 1), 1); -assert.equal(b.lastIndexOf('c', 1), -1); -assert.equal(b.lastIndexOf('a', -1), 0); -assert.equal(b.lastIndexOf('a', -4), 0); -assert.equal(b.lastIndexOf('a', -b.length), 0); -assert.equal(b.lastIndexOf('a', -b.length - 1), -1); -assert.equal(b.lastIndexOf('a', NaN), 0); -assert.equal(b.lastIndexOf('a', -Infinity), -1); -assert.equal(b.lastIndexOf('a', Infinity), 0); -// lastIndexOf Buffer: -assert.equal(b.lastIndexOf(buf_a), 0); -assert.equal(b.lastIndexOf(buf_a, 1), 0); -assert.equal(b.lastIndexOf(buf_a, -1), 0); -assert.equal(b.lastIndexOf(buf_a, -4), 0); -assert.equal(b.lastIndexOf(buf_a, -b.length), 0); -assert.equal(b.lastIndexOf(buf_a, -b.length - 1), -1); -assert.equal(b.lastIndexOf(buf_a, NaN), 0); -assert.equal(b.lastIndexOf(buf_a, -Infinity), -1); -assert.equal(b.lastIndexOf(buf_a, Infinity), 0); -assert.equal(b.lastIndexOf(buf_bc), 1); -assert.equal(b.lastIndexOf(buf_bc, 2), 1); -assert.equal(b.lastIndexOf(buf_bc, -1), 1); -assert.equal(b.lastIndexOf(buf_bc, -3), 1); -assert.equal(b.lastIndexOf(buf_bc, -5), 1); -assert.equal(b.lastIndexOf(buf_bc, -6), -1); -assert.equal(b.lastIndexOf(buf_bc, NaN), 1); -assert.equal(b.lastIndexOf(buf_bc, -Infinity), -1); -assert.equal(b.lastIndexOf(buf_bc, Infinity), 1); -assert.equal(b.lastIndexOf(buf_f), b.length - 1); -assert.equal(b.lastIndexOf(buf_z), -1); -assert.equal(b.lastIndexOf(buf_empty), -1); -assert.equal(b.lastIndexOf(buf_empty, 1), -1); -assert.equal(b.lastIndexOf(buf_empty, b.length + 1), -1); -assert.equal(b.lastIndexOf(buf_empty, Infinity), -1); -// lastIndexOf number: -assert.equal(b.lastIndexOf(0x61), 0); -assert.equal(b.lastIndexOf(0x61, 1), 0); -assert.equal(b.lastIndexOf(0x61, -1), 0); -assert.equal(b.lastIndexOf(0x61, -4), 0); -assert.equal(b.lastIndexOf(0x61, -b.length), 0); -assert.equal(b.lastIndexOf(0x61, -b.length - 1), -1); -assert.equal(b.lastIndexOf(0x61, NaN), 0); -assert.equal(b.lastIndexOf(0x61, -Infinity), -1); -assert.equal(b.lastIndexOf(0x61, Infinity), 0); -assert.equal(b.lastIndexOf(0x0), -1); - -// Test weird offset arguments. -// Behaviour should match String.lastIndexOf: -assert.equal(b.lastIndexOf('b', 0), -1); -assert.equal(b.lastIndexOf('b', undefined), 1); -assert.equal(b.lastIndexOf('b', null), -1); -assert.equal(b.lastIndexOf('b', {}), 1); -assert.equal(b.lastIndexOf('b', []), -1); -assert.equal(b.lastIndexOf('b', [2]), 1); - -// Test needles longer than the haystack. -assert.strictEqual(b.lastIndexOf('aaaaaaaaaaaaaaa', 'ucs2'), -1); -assert.strictEqual(b.lastIndexOf('aaaaaaaaaaaaaaa', 'utf8'), -1); -assert.strictEqual(b.lastIndexOf('aaaaaaaaaaaaaaa', 'latin1'), -1); -assert.strictEqual(b.lastIndexOf('aaaaaaaaaaaaaaa', 'binary'), -1); -assert.strictEqual(b.lastIndexOf(Buffer.from('aaaaaaaaaaaaaaa')), -1); -assert.strictEqual(b.lastIndexOf('aaaaaaaaaaaaaaa', 2, 'ucs2'), -1); -assert.strictEqual(b.lastIndexOf('aaaaaaaaaaaaaaa', 3, 'utf8'), -1); -assert.strictEqual(b.lastIndexOf('aaaaaaaaaaaaaaa', 5, 'latin1'), -1); -assert.strictEqual(b.lastIndexOf('aaaaaaaaaaaaaaa', 5, 'binary'), -1); -assert.strictEqual(b.lastIndexOf(Buffer.from('aaaaaaaaaaaaaaa'), 7), -1); - -// 你好 expands to a total of 6 bytes using UTF-8 and 4 bytes using UTF-16 -assert.strictEqual(buf_bc.lastIndexOf('你好', 'ucs2'), -1); -assert.strictEqual(buf_bc.lastIndexOf('你好', 'utf8'), -1); -assert.strictEqual(buf_bc.lastIndexOf('你好', 'latin1'), -1); -assert.strictEqual(buf_bc.lastIndexOf('你好', 'binary'), -1); -assert.strictEqual(buf_bc.lastIndexOf(Buffer.from('你好')), -1); -assert.strictEqual(buf_bc.lastIndexOf('你好', 2, 'ucs2'), -1); -assert.strictEqual(buf_bc.lastIndexOf('你好', 3, 'utf8'), -1); -assert.strictEqual(buf_bc.lastIndexOf('你好', 5, 'latin1'), -1); -assert.strictEqual(buf_bc.lastIndexOf('你好', 5, 'binary'), -1); -assert.strictEqual(buf_bc.lastIndexOf(Buffer.from('你好'), 7), -1); - -// Test lastIndexOf on a longer buffer: -var bufferString = new Buffer('a man a plan a canal panama'); -assert.equal(15, bufferString.lastIndexOf('canal')); -assert.equal(21, bufferString.lastIndexOf('panama')); -assert.equal(0, bufferString.lastIndexOf('a man a plan a canal panama')); -assert.equal(-1, bufferString.lastIndexOf('a man a plan a canal mexico')); -assert.equal(-1, bufferString.lastIndexOf('a man a plan a canal mexico city')); -assert.equal(-1, bufferString.lastIndexOf(Buffer.from('a'.repeat(1000)))); -assert.equal(0, bufferString.lastIndexOf('a man a plan', 4)); -assert.equal(13, bufferString.lastIndexOf('a ')); -assert.equal(13, bufferString.lastIndexOf('a ', 13)); -assert.equal(6, bufferString.lastIndexOf('a ', 12)); -assert.equal(0, bufferString.lastIndexOf('a ', 5)); -assert.equal(13, bufferString.lastIndexOf('a ', -1)); -assert.equal(0, bufferString.lastIndexOf('a ', -27)); -assert.equal(-1, bufferString.lastIndexOf('a ', -28)); - -// Test lastIndexOf for the case that the first character can be found, -// but in a part of the buffer that does not make search to search -// due do length constraints. -var abInUCS2 = Buffer.from('ab', 'ucs2'); -assert.strictEqual(-1, Buffer.from('µaaaa¶bbbb', 'latin1').lastIndexOf('µ')); -assert.strictEqual(-1, Buffer.from('µaaaa¶bbbb', 'binary').lastIndexOf('µ')); -assert.strictEqual(-1, Buffer.from('bc').lastIndexOf('ab')); -assert.strictEqual(-1, Buffer.from('abc').lastIndexOf('qa')); -assert.strictEqual(-1, Buffer.from('abcdef').lastIndexOf('qabc')); -assert.strictEqual(-1, Buffer.from('bc').lastIndexOf(Buffer.from('ab'))); -assert.strictEqual(-1, Buffer.from('bc', 'ucs2').lastIndexOf('ab', 'ucs2')); -assert.strictEqual(-1, Buffer.from('bc', 'ucs2').lastIndexOf(abInUCS2)); - -assert.strictEqual(0, Buffer.from('abc').lastIndexOf('ab')); -assert.strictEqual(0, Buffer.from('abc').lastIndexOf('ab', 1)); -assert.strictEqual(0, Buffer.from('abc').lastIndexOf('ab', 2)); -assert.strictEqual(0, Buffer.from('abc').lastIndexOf('ab', 3)); - -// The above tests test the LINEAR and SINGLE-CHAR strategies. -// Now, we test the BOYER-MOORE-HORSPOOL strategy. -// Test lastIndexOf on a long buffer w multiple matches: -pattern = 'JABACABADABACABA'; -assert.equal(1535, longBufferString.lastIndexOf(pattern)); -assert.equal(1535, longBufferString.lastIndexOf(pattern, 1535)); -assert.equal(511, longBufferString.lastIndexOf(pattern, 1534)); - -// Finally, give it a really long input to trigger fallback from BMH to -// regular BOYER-MOORE (which has better worst-case complexity). - -// Generate a really long Thue-Morse sequence of 'yolo' and 'swag', -// "yolo swag swag yolo swag yolo yolo swag" ..., goes on for about 5MB. -// This is hard to search because it all looks similar, but never repeats. - -// countBits returns the number of bits in the binary reprsentation of n. -function countBits(n) { - for (var count = 0; n > 0; count++) { - n = n & (n - 1); // remove top bit - } - return count; -} -var parts = []; -for (var i = 0; i < 1000000; i++) { - parts.push((countBits(i) % 2 === 0) ? 'yolo' : 'swag'); -} -var reallyLong = new Buffer(parts.join(' ')); -assert.equal('yolo swag swag yolo', reallyLong.slice(0, 19).toString()); - -// Expensive reverse searches. Stress test lastIndexOf: -pattern = reallyLong.slice(0, 100000); // First 1/50th of the pattern. -assert.equal(4751360, reallyLong.lastIndexOf(pattern)); -assert.equal(3932160, reallyLong.lastIndexOf(pattern, 4000000)); -assert.equal(2949120, reallyLong.lastIndexOf(pattern, 3000000)); -pattern = reallyLong.slice(100000, 200000); // Second 1/50th. -assert.equal(4728480, reallyLong.lastIndexOf(pattern)); -pattern = reallyLong.slice(0, 1000000); // First 1/5th. -assert.equal(3932160, reallyLong.lastIndexOf(pattern)); -pattern = reallyLong.slice(0, 2000000); // first 2/5ths. -assert.equal(0, reallyLong.lastIndexOf(pattern)); - -// test truncation of Number arguments to uint8 -{ - var buf = Buffer.from('this is a test'); - assert.strictEqual(buf.indexOf(0x6973), 3); - assert.strictEqual(buf.indexOf(0x697320), 4); - assert.strictEqual(buf.indexOf(0x69732069), 2); - assert.strictEqual(buf.indexOf(0x697374657374), 0); - assert.strictEqual(buf.indexOf(0x69737374), 0); - assert.strictEqual(buf.indexOf(0x69737465), 11); - assert.strictEqual(buf.indexOf(0x69737465), 11); - assert.strictEqual(buf.indexOf(-140), 0); - assert.strictEqual(buf.indexOf(-152), 1); - assert.strictEqual(buf.indexOf(0xff), -1); - assert.strictEqual(buf.indexOf(0xffff), -1); -} - diff --git a/workshops/monte-carlo-on-ec2-spot-fleet/src/web/node_modules/buffer/test/node/test-buffer-inheritance.js b/workshops/monte-carlo-on-ec2-spot-fleet/src/web/node_modules/buffer/test/node/test-buffer-inheritance.js deleted file mode 100644 index 711d9f23..00000000 --- a/workshops/monte-carlo-on-ec2-spot-fleet/src/web/node_modules/buffer/test/node/test-buffer-inheritance.js +++ /dev/null @@ -1,42 +0,0 @@ -'use strict'; -var Buffer = require('../../').Buffer; - - - -var assert = require('assert'); - - -function T(n) { - var ui8 = new Uint8Array(n); - Object.setPrototypeOf(ui8, T.prototype); - return ui8; -} -Object.setPrototypeOf(T.prototype, Buffer.prototype); -Object.setPrototypeOf(T, Buffer); - -T.prototype.sum = function sum() { - var cntr = 0; - for (var i = 0; i < this.length; i++) - cntr += this[i]; - return cntr; -}; - - -var vals = [new T(4), T(4)]; - -vals.forEach(function(t) { - assert.equal(t.constructor, T); - assert.equal(Object.getPrototypeOf(t), T.prototype); - assert.equal(Object.getPrototypeOf(Object.getPrototypeOf(t)), - Buffer.prototype); - - t.fill(5); - var cntr = 0; - for (var i = 0; i < t.length; i++) - cntr += t[i]; - assert.equal(t.length * 5, cntr); - - // Check this does not throw - t.toString(); -}); - diff --git a/workshops/monte-carlo-on-ec2-spot-fleet/src/web/node_modules/buffer/test/node/test-buffer-inspect.js b/workshops/monte-carlo-on-ec2-spot-fleet/src/web/node_modules/buffer/test/node/test-buffer-inspect.js deleted file mode 100644 index d0ed590d..00000000 --- a/workshops/monte-carlo-on-ec2-spot-fleet/src/web/node_modules/buffer/test/node/test-buffer-inspect.js +++ /dev/null @@ -1,41 +0,0 @@ -'use strict'; -var Buffer = require('../../').Buffer; - - -var assert = require('assert'); - -var util = require('util'); - -var buffer = require('../../'); - -buffer.INSPECT_MAX_BYTES = 2; - -var b = Buffer.allocUnsafe(4); -b.fill('1234'); - -var s = buffer.SlowBuffer(4); -s.fill('1234'); - -var expected = ''; - -assert.strictEqual(util.inspect(b), expected); -assert.strictEqual(util.inspect(s), expected); - -b = Buffer.allocUnsafe(2); -b.fill('12'); - -s = buffer.SlowBuffer(2); -s.fill('12'); - -expected = ''; - -assert.strictEqual(util.inspect(b), expected); -assert.strictEqual(util.inspect(s), expected); - -buffer.INSPECT_MAX_BYTES = Infinity; - -assert.doesNotThrow(function() { - assert.strictEqual(util.inspect(b), expected); - assert.strictEqual(util.inspect(s), expected); -}); - diff --git a/workshops/monte-carlo-on-ec2-spot-fleet/src/web/node_modules/buffer/test/node/test-buffer-iterator.js b/workshops/monte-carlo-on-ec2-spot-fleet/src/web/node_modules/buffer/test/node/test-buffer-iterator.js deleted file mode 100644 index f27709f3..00000000 --- a/workshops/monte-carlo-on-ec2-spot-fleet/src/web/node_modules/buffer/test/node/test-buffer-iterator.js +++ /dev/null @@ -1,65 +0,0 @@ -'use strict'; -var Buffer = require('../../').Buffer; - - -var assert = require('assert'); - -var buffer = Buffer.from([1, 2, 3, 4, 5]); -var arr; -var b; - -// buffers should be iterable - -arr = []; - -for (b of buffer) - arr.push(b); - -assert.deepStrictEqual(arr, [1, 2, 3, 4, 5]); - - -// buffer iterators should be iterable - -arr = []; - -for (b of buffer[Symbol.iterator]()) - arr.push(b); - -assert.deepStrictEqual(arr, [1, 2, 3, 4, 5]); - - -// buffer#values() should return iterator for values - -arr = []; - -for (b of buffer.values()) - arr.push(b); - -assert.deepStrictEqual(arr, [1, 2, 3, 4, 5]); - - -// buffer#keys() should return iterator for keys - -arr = []; - -for (b of buffer.keys()) - arr.push(b); - -assert.deepStrictEqual(arr, [0, 1, 2, 3, 4]); - - -// buffer#entries() should return iterator for entries - -arr = []; - -for (b of buffer.entries()) - arr.push(b); - -assert.deepStrictEqual(arr, [ - [0, 1], - [1, 2], - [2, 3], - [3, 4], - [4, 5] -]); - diff --git a/workshops/monte-carlo-on-ec2-spot-fleet/src/web/node_modules/buffer/test/node/test-buffer-safe-unsafe.js b/workshops/monte-carlo-on-ec2-spot-fleet/src/web/node_modules/buffer/test/node/test-buffer-safe-unsafe.js deleted file mode 100644 index 22ba29e8..00000000 --- a/workshops/monte-carlo-on-ec2-spot-fleet/src/web/node_modules/buffer/test/node/test-buffer-safe-unsafe.js +++ /dev/null @@ -1,27 +0,0 @@ -'use strict'; -var Buffer = require('../../').Buffer; - - - -var assert = require('assert'); - -var safe = Buffer.alloc(10); - -function isZeroFilled(buf) { - for (var n = 0; n < buf.length; n++) - if (buf[n] !== 0) return false; - return true; -} - -assert(isZeroFilled(safe)); - -// Test that unsafe allocations doesn't affect subsequent safe allocations -Buffer.allocUnsafe(10); -assert(isZeroFilled(new Float64Array(10))); - -new Buffer(10); -assert(isZeroFilled(new Float64Array(10))); - -Buffer.allocUnsafe(10); -assert(isZeroFilled(Buffer.alloc(10))); - diff --git a/workshops/monte-carlo-on-ec2-spot-fleet/src/web/node_modules/buffer/test/node/test-buffer-slow.js b/workshops/monte-carlo-on-ec2-spot-fleet/src/web/node_modules/buffer/test/node/test-buffer-slow.js deleted file mode 100644 index 65cea21e..00000000 --- a/workshops/monte-carlo-on-ec2-spot-fleet/src/web/node_modules/buffer/test/node/test-buffer-slow.js +++ /dev/null @@ -1,63 +0,0 @@ -'use strict'; -var Buffer = require('../../').Buffer; - - - -var assert = require('assert'); -var buffer = require('../../'); -var Buffer = buffer.Buffer; -var SlowBuffer = buffer.SlowBuffer; - -var ones = [1, 1, 1, 1]; - -// should create a Buffer -var sb = SlowBuffer(4); -assert(sb instanceof Buffer); -assert.strictEqual(sb.length, 4); -sb.fill(1); -for (var [key, value] of sb.entries()) { - assert.deepStrictEqual(value, ones[key]); -} - -// underlying ArrayBuffer should have the same length -assert.strictEqual(sb.buffer.byteLength, 4); - -// should work without new -sb = SlowBuffer(4); -assert(sb instanceof Buffer); -assert.strictEqual(sb.length, 4); -sb.fill(1); -for (var [key, value] of sb.entries()) { - assert.deepStrictEqual(value, ones[key]); -} - -// should work with edge cases -assert.strictEqual(SlowBuffer(0).length, 0); -try { - assert.strictEqual( - SlowBuffer(buffer.kMaxLength).length, buffer.kMaxLength); -} catch (e) { - assert.equal(e.message, 'Array buffer allocation failed'); -} - -// should work with number-coercible values -assert.strictEqual(SlowBuffer('6').length, 6); -assert.strictEqual(SlowBuffer(true).length, 1); - -// should create zero-length buffer if parameter is not a number -assert.strictEqual(SlowBuffer().length, 0); -assert.strictEqual(SlowBuffer(NaN).length, 0); -assert.strictEqual(SlowBuffer({}).length, 0); -assert.strictEqual(SlowBuffer('string').length, 0); - -// should throw with invalid length -assert.throws(function() { - SlowBuffer(Infinity); -}, 'invalid Buffer length'); -assert.throws(function() { - SlowBuffer(-1); -}, 'invalid Buffer length'); -assert.throws(function() { - SlowBuffer(buffer.kMaxLength + 1); -}, 'invalid Buffer length'); - diff --git a/workshops/monte-carlo-on-ec2-spot-fleet/src/web/node_modules/buffer/test/node/test-buffer-swap.js b/workshops/monte-carlo-on-ec2-spot-fleet/src/web/node_modules/buffer/test/node/test-buffer-swap.js deleted file mode 100644 index 2ec1a7aa..00000000 --- a/workshops/monte-carlo-on-ec2-spot-fleet/src/web/node_modules/buffer/test/node/test-buffer-swap.js +++ /dev/null @@ -1,141 +0,0 @@ -'use strict'; -var Buffer = require('../../').Buffer; - - - -var assert = require('assert'); - -// Test buffers small enough to use the JS implementation -var buf = Buffer.from([0x01, 0x02, 0x03, 0x04, 0x05, 0x06, 0x07, 0x08, 0x09, - 0x0a, 0x0b, 0x0c, 0x0d, 0x0e, 0x0f, 0x10]); - -assert.strictEqual(buf, buf.swap16()); -assert.deepStrictEqual(buf, Buffer.from([0x02, 0x01, 0x04, 0x03, 0x06, 0x05, - 0x08, 0x07, 0x0a, 0x09, 0x0c, 0x0b, - 0x0e, 0x0d, 0x10, 0x0f])); -buf.swap16(); // restore - -assert.strictEqual(buf, buf.swap32()); -assert.deepStrictEqual(buf, Buffer.from([0x04, 0x03, 0x02, 0x01, 0x08, 0x07, - 0x06, 0x05, 0x0c, 0x0b, 0x0a, 0x09, - 0x10, 0x0f, 0x0e, 0x0d])); -buf.swap32(); // restore - -assert.strictEqual(buf, buf.swap64()); -assert.deepStrictEqual(buf, Buffer.from([0x08, 0x07, 0x06, 0x05, 0x04, 0x03, - 0x02, 0x01, 0x10, 0x0f, 0x0e, 0x0d, - 0x0c, 0x0b, 0x0a, 0x09])); - -// Operates in-place -var buf3 = Buffer.from([0x1, 0x2, 0x3, 0x4, 0x5, 0x6, 0x7]); -buf3.slice(1, 5).swap32(); -assert.deepStrictEqual(buf3, Buffer.from([0x1, 0x5, 0x4, 0x3, 0x2, 0x6, 0x7])); - -buf3.slice(1, 5).swap16(); -assert.deepStrictEqual(buf3, Buffer.from([0x1, 0x4, 0x5, 0x2, 0x3, 0x6, 0x7])); - -var buf3_64 = Buffer.from([0x01, 0x02, 0x03, 0x04, 0x05, 0x06, 0x07, 0x08, - 0x09, 0x0a, 0x0b, 0x0c, 0x0d, 0x0e, 0x0f, 0x10, - 0x01, 0x02, 0x03, 0x04, 0x05, 0x06, 0x07, 0x08, - 0x09, 0x0a, 0x0b, 0x0c, 0x0d, 0x0e, 0x0f, 0x10]); -buf3_64.slice(2, 18).swap64(); -assert.deepStrictEqual(buf3_64, Buffer.from([0x01, 0x02, 0x0a, 0x09, 0x08, 0x07, - 0x06, 0x05, 0x04, 0x03, 0x02, 0x01, - 0x10, 0x0f, 0x0e, 0x0d, 0x0c, 0x0b, - 0x03, 0x04, 0x05, 0x06, 0x07, 0x08, - 0x09, 0x0a, 0x0b, 0x0c, 0x0d, 0x0e, - 0x0f, 0x10])); - -// Force use of native code (Buffer size above threshold limit for js impl) -var buf4A = new Uint32Array(256).fill(0x04030201); -var buf4 = Buffer.from(buf4A.buffer, buf4A.byteOffset); -var buf5A = new Uint32Array(256).fill(0x03040102); -var buf5 = Buffer.from(buf5A.buffer, buf5A.byteOffset); - -buf4.swap16(); -assert.deepStrictEqual(buf4, buf5); - -var buf6A = new Uint32Array(256).fill(0x04030201); -var buf6 = Buffer.from(buf6A.buffer); -var bu7A = new Uint32Array(256).fill(0x01020304); -var buf7 = Buffer.from(bu7A.buffer, bu7A.byteOffset); - -buf6.swap32(); -assert.deepStrictEqual(buf6, buf7); - -var buf8A = new Uint8Array(256 * 8); -var buf9A = new Uint8Array(256 * 8); -for (var i = 0; i < buf8A.length; i++) { - buf8A[i] = i % 8; - buf9A[buf9A.length - i - 1] = i % 8; -} -var buf8 = Buffer.from(buf8A.buffer, buf8A.byteOffset); -var buf9 = Buffer.from(buf9A.buffer, buf9A.byteOffset); - -buf8.swap64(); -assert.deepStrictEqual(buf8, buf9); - -// Test native code with buffers that are not memory-aligned -var buf10A = new Uint8Array(256 * 8); -var buf11A = new Uint8Array(256 * 8 - 2); -for (var i = 0; i < buf10A.length; i++) { - buf10A[i] = i % 2; -} -for (var i = 1; i < buf11A.length; i++) { - buf11A[buf11A.length - i] = (i + 1) % 2; -} -var buf10 = Buffer.from(buf10A.buffer, buf10A.byteOffset); -// 0|1 0|1 0|1... -var buf11 = Buffer.from(buf11A.buffer, buf11A.byteOffset); -// 0|0 1|0 1|0... - -buf10.slice(1, buf10.length - 1).swap16(); -assert.deepStrictEqual(buf10.slice(0, buf11.length), buf11); - - -var buf12A = new Uint8Array(256 * 8); -var buf13A = new Uint8Array(256 * 8 - 4); -for (var i = 0; i < buf12A.length; i++) { - buf12A[i] = i % 4; -} -for (var i = 1; i < buf13A.length; i++) { - buf13A[buf13A.length - i] = (i + 1) % 4; -} -var buf12 = Buffer.from(buf12A.buffer, buf12A.byteOffset); -// 0|1 2 3 0|1 2 3... -var buf13 = Buffer.from(buf13A.buffer, buf13A.byteOffset); -// 0|0 3 2 1|0 3 2... - -buf12.slice(1, buf12.length - 3).swap32(); -assert.deepStrictEqual(buf12.slice(0, buf13.length), buf13); - - -var buf14A = new Uint8Array(256 * 8); -var buf15A = new Uint8Array(256 * 8 - 8); -for (var i = 0; i < buf14A.length; i++) { - buf14A[i] = i % 8; -} -for (var i = 1; i < buf15A.length; i++) { - buf15A[buf15A.length - i] = (i + 1) % 8; -} -var buf14 = Buffer.from(buf14A.buffer, buf14A.byteOffset); -// 0|1 2 3 4 5 6 7 0|1 2 3 4... -var buf15 = Buffer.from(buf15A.buffer, buf15A.byteOffset); -// 0|0 7 6 5 4 3 2 1|0 7 6 5... - -buf14.slice(1, buf14.length - 7).swap64(); -assert.deepStrictEqual(buf14.slice(0, buf15.length), buf15); - -// Length assertions -var re16 = /Buffer size must be a multiple of 16-bits/; -var re32 = /Buffer size must be a multiple of 32-bits/; -var re64 = /Buffer size must be a multiple of 64-bits/; - -assert.throws(() => Buffer.from(buf3).swap16(), re16); -assert.throws(() => Buffer.alloc(1025).swap16(), re16); -assert.throws(() => Buffer.from(buf3).swap32(), re32); -assert.throws(() => buf3.slice(1, 3).swap32(), re32); -assert.throws(() => Buffer.alloc(1025).swap32(), re32); -assert.throws(() => buf3.slice(1, 3).swap64(), re64); -assert.throws(() => Buffer.alloc(1025).swap64(), re64); - diff --git a/workshops/monte-carlo-on-ec2-spot-fleet/src/web/node_modules/buffer/test/node/test-buffer-zero-fill-cli.js b/workshops/monte-carlo-on-ec2-spot-fleet/src/web/node_modules/buffer/test/node/test-buffer-zero-fill-cli.js deleted file mode 100644 index 744b3349..00000000 --- a/workshops/monte-carlo-on-ec2-spot-fleet/src/web/node_modules/buffer/test/node/test-buffer-zero-fill-cli.js +++ /dev/null @@ -1,35 +0,0 @@ -'use strict'; -var Buffer = require('../../').Buffer; - -// Flags: --zero-fill-buffers - -// when using --zero-fill-buffers, every Buffer and SlowBuffer -// instance must be zero filled upon creation - - -var SlowBuffer = require('../../').SlowBuffer; -var assert = require('assert'); - -function isZeroFilled(buf) { - for (var n = 0; n < buf.length; n++) - if (buf[n] > 0) return false; - return true; -} - -// This can be somewhat unreliable because the -// allocated memory might just already happen to -// contain all zeroes. The test is run multiple -// times to improve the reliability. -for (var i = 0; i < 50; i++) { - var bufs = [ - Buffer.alloc(20), - Buffer.allocUnsafe(20), - SlowBuffer(20), - Buffer(20), - new SlowBuffer(20) - ]; - for (var buf of bufs) { - assert(isZeroFilled(buf)); - } -} - diff --git a/workshops/monte-carlo-on-ec2-spot-fleet/src/web/node_modules/buffer/test/node/test-buffer-zero-fill-reset.js b/workshops/monte-carlo-on-ec2-spot-fleet/src/web/node_modules/buffer/test/node/test-buffer-zero-fill-reset.js deleted file mode 100644 index b21a6b26..00000000 --- a/workshops/monte-carlo-on-ec2-spot-fleet/src/web/node_modules/buffer/test/node/test-buffer-zero-fill-reset.js +++ /dev/null @@ -1,22 +0,0 @@ -'use strict'; -var Buffer = require('../../').Buffer; - - - -var assert = require('assert'); - - -function testUint8Array(ui) { - var length = ui.length; - for (var i = 0; i < length; i++) - if (ui[i] !== 0) return false; - return true; -} - - -for (var i = 0; i < 100; i++) { - Buffer.alloc(0); - var ui = new Uint8Array(65); - assert.ok(testUint8Array(ui), 'Uint8Array is not zero-filled'); -} - diff --git a/workshops/monte-carlo-on-ec2-spot-fleet/src/web/node_modules/buffer/test/node/test-buffer.js b/workshops/monte-carlo-on-ec2-spot-fleet/src/web/node_modules/buffer/test/node/test-buffer.js deleted file mode 100644 index 2e94de21..00000000 --- a/workshops/monte-carlo-on-ec2-spot-fleet/src/web/node_modules/buffer/test/node/test-buffer.js +++ /dev/null @@ -1,1534 +0,0 @@ -'use strict'; -var Buffer = require('../../').Buffer; - -var common = { skip: function () {} }; -var assert = require('assert'); - -var Buffer = require('../../').Buffer; -var SlowBuffer = require('../../').SlowBuffer; - -// counter to ensure unique value is always copied -var cntr = 0; - -var b = Buffer(1024); // safe constructor - -// console.log('b.length == %d', b.length); -assert.strictEqual(1024, b.length); - -b[0] = -1; -assert.strictEqual(b[0], 255); - -for (var i = 0; i < 1024; i++) { - b[i] = i % 256; -} - -for (var i = 0; i < 1024; i++) { - assert.strictEqual(i % 256, b[i]); -} - -var c = Buffer(512); -// console.log('c.length == %d', c.length); -assert.strictEqual(512, c.length); - -var d = new Buffer([]); -assert.strictEqual(0, d.length); - -var ui32 = new Uint32Array(4).fill(42); -var e = Buffer(ui32); -for (var [key, value] of e.entries()) { - assert.deepStrictEqual(value, ui32[key]); -} - -// First check Buffer#fill() works as expected. - -assert.throws(function() { - Buffer(8).fill('a', -1); -}); - -assert.throws(function() { - Buffer(8).fill('a', 0, 9); -}); - -// Make sure this doesn't hang indefinitely. -Buffer(8).fill(''); - -{ - var buf = new Buffer(64); - buf.fill(10); - for (var i = 0; i < buf.length; i++) - assert.equal(buf[i], 10); - - buf.fill(11, 0, buf.length >> 1); - for (var i = 0; i < buf.length >> 1; i++) - assert.equal(buf[i], 11); - for (var i = (buf.length >> 1) + 1; i < buf.length; i++) - assert.equal(buf[i], 10); - - buf.fill('h'); - for (var i = 0; i < buf.length; i++) - assert.equal('h'.charCodeAt(0), buf[i]); - - buf.fill(0); - for (var i = 0; i < buf.length; i++) - assert.equal(0, buf[i]); - - buf.fill(null); - for (var i = 0; i < buf.length; i++) - assert.equal(0, buf[i]); - - buf.fill(1, 16, 32); - for (var i = 0; i < 16; i++) - assert.equal(0, buf[i]); - for (var i = 16; i < 32; i++) - assert.equal(1, buf[i]); - for (var i = 32; i < buf.length; i++) - assert.equal(0, buf[i]); -} - -{ - var buf = new Buffer(10); - buf.fill('abc'); - assert.equal(buf.toString(), 'abcabcabca'); - buf.fill('է'); - assert.equal(buf.toString(), 'էէէէէ'); -} - -{ - // copy 512 bytes, from 0 to 512. - b.fill(++cntr); - c.fill(++cntr); - var copied = b.copy(c, 0, 0, 512); -// console.log('copied %d bytes from b into c', copied); - assert.strictEqual(512, copied); - for (var i = 0; i < c.length; i++) { - assert.strictEqual(b[i], c[i]); - } -} - -{ - // copy c into b, without specifying sourceEnd - b.fill(++cntr); - c.fill(++cntr); - var copied = c.copy(b, 0, 0); -// console.log('copied %d bytes from c into b w/o sourceEnd', copied); - assert.strictEqual(c.length, copied); - for (var i = 0; i < c.length; i++) { - assert.strictEqual(c[i], b[i]); - } -} - -{ - // copy c into b, without specifying sourceStart - b.fill(++cntr); - c.fill(++cntr); - var copied = c.copy(b, 0); -// console.log('copied %d bytes from c into b w/o sourceStart', copied); - assert.strictEqual(c.length, copied); - for (var i = 0; i < c.length; i++) { - assert.strictEqual(c[i], b[i]); - } -} - -{ - // copy longer buffer b to shorter c without targetStart - b.fill(++cntr); - c.fill(++cntr); - var copied = b.copy(c); -// console.log('copied %d bytes from b into c w/o targetStart', copied); - assert.strictEqual(c.length, copied); - for (var i = 0; i < c.length; i++) { - assert.strictEqual(b[i], c[i]); - } -} - -{ - // copy starting near end of b to c - b.fill(++cntr); - c.fill(++cntr); - var copied = b.copy(c, 0, b.length - Math.floor(c.length / 2)); -// console.log('copied %d bytes from end of b into beginning of c', copied); - assert.strictEqual(Math.floor(c.length / 2), copied); - for (var i = 0; i < Math.floor(c.length / 2); i++) { - assert.strictEqual(b[b.length - Math.floor(c.length / 2) + i], c[i]); - } - for (var i = Math.floor(c.length / 2) + 1; i < c.length; i++) { - assert.strictEqual(c[c.length - 1], c[i]); - } -} - -{ - // try to copy 513 bytes, and check we don't overrun c - b.fill(++cntr); - c.fill(++cntr); - var copied = b.copy(c, 0, 0, 513); -// console.log('copied %d bytes from b trying to overrun c', copied); - assert.strictEqual(c.length, copied); - for (var i = 0; i < c.length; i++) { - assert.strictEqual(b[i], c[i]); - } -} - -{ - // copy 768 bytes from b into b - b.fill(++cntr); - b.fill(++cntr, 256); - var copied = b.copy(b, 0, 256, 1024); -// console.log('copied %d bytes from b into b', copied); - assert.strictEqual(768, copied); - for (var i = 0; i < b.length; i++) { - assert.strictEqual(cntr, b[i]); - } -} - -// copy string longer than buffer length (failure will segfault) -var bb = Buffer(10); -bb.fill('hello crazy world'); - - -// try to copy from before the beginning of b -assert.doesNotThrow(() => { b.copy(c, 0, 100, 10); }); - -// copy throws at negative sourceStart -assert.throws(function() { - Buffer(5).copy(Buffer(5), 0, -1); -}, RangeError); - -{ - // check sourceEnd resets to targetEnd if former is greater than the latter - b.fill(++cntr); - c.fill(++cntr); - var copied = b.copy(c, 0, 0, 1025); -// console.log('copied %d bytes from b into c', copied); - for (var i = 0; i < c.length; i++) { - assert.strictEqual(b[i], c[i]); - } -} - -// throw with negative sourceEnd -// console.log('test copy at negative sourceEnd'); -assert.throws(function() { - b.copy(c, 0, 0, -1); -}, RangeError); - -// when sourceStart is greater than sourceEnd, zero copied -assert.equal(b.copy(c, 0, 100, 10), 0); - -// when targetStart > targetLength, zero copied -assert.equal(b.copy(c, 512, 0, 10), 0); - -var caught_error; - -// invalid encoding for Buffer.toString -caught_error = null; -try { - b.toString('invalid'); -} catch (err) { - caught_error = err; -} -assert.strictEqual('Unknown encoding: invalid', caught_error.message); - -// invalid encoding for Buffer.write -caught_error = null; -try { - b.write('test string', 0, 5, 'invalid'); -} catch (err) { - caught_error = err; -} -assert.strictEqual('Unknown encoding: invalid', caught_error.message); - -// try to create 0-length buffers -new Buffer(''); -new Buffer('', 'ascii'); -new Buffer('', 'latin1'); -new Buffer('', 'binary'); -Buffer(0); - -// try to write a 0-length string beyond the end of b -assert.throws(function() { - b.write('', 2048); -}, RangeError); - -// throw when writing to negative offset -assert.throws(function() { - b.write('a', -1); -}, RangeError); - -// throw when writing past bounds from the pool -assert.throws(function() { - b.write('a', 2048); -}, RangeError); - -// throw when writing to negative offset -assert.throws(function() { - b.write('a', -1); -}, RangeError); - -// try to copy 0 bytes worth of data into an empty buffer -b.copy(Buffer(0), 0, 0, 0); - -// try to copy 0 bytes past the end of the target buffer -b.copy(Buffer(0), 1, 1, 1); -b.copy(Buffer(1), 1, 1, 1); - -// try to copy 0 bytes from past the end of the source buffer -b.copy(Buffer(1), 0, 2048, 2048); - -var rangeBuffer = new Buffer('abc'); - -// if start >= buffer's length, empty string will be returned -assert.equal(rangeBuffer.toString('ascii', 3), ''); -assert.equal(rangeBuffer.toString('ascii', +Infinity), ''); -assert.equal(rangeBuffer.toString('ascii', 3.14, 3), ''); -assert.equal(rangeBuffer.toString('ascii', 'Infinity', 3), ''); - -// if end <= 0, empty string will be returned -assert.equal(rangeBuffer.toString('ascii', 1, 0), ''); -assert.equal(rangeBuffer.toString('ascii', 1, -1.2), ''); -assert.equal(rangeBuffer.toString('ascii', 1, -100), ''); -assert.equal(rangeBuffer.toString('ascii', 1, -Infinity), ''); - -// if start < 0, start will be taken as zero -assert.equal(rangeBuffer.toString('ascii', -1, 3), 'abc'); -assert.equal(rangeBuffer.toString('ascii', -1.99, 3), 'abc'); -assert.equal(rangeBuffer.toString('ascii', -Infinity, 3), 'abc'); -assert.equal(rangeBuffer.toString('ascii', '-1', 3), 'abc'); -assert.equal(rangeBuffer.toString('ascii', '-1.99', 3), 'abc'); -assert.equal(rangeBuffer.toString('ascii', '-Infinity', 3), 'abc'); - -// if start is an invalid integer, start will be taken as zero -assert.equal(rangeBuffer.toString('ascii', 'node.js', 3), 'abc'); -assert.equal(rangeBuffer.toString('ascii', {}, 3), 'abc'); -assert.equal(rangeBuffer.toString('ascii', [], 3), 'abc'); -assert.equal(rangeBuffer.toString('ascii', NaN, 3), 'abc'); -assert.equal(rangeBuffer.toString('ascii', null, 3), 'abc'); -assert.equal(rangeBuffer.toString('ascii', undefined, 3), 'abc'); -assert.equal(rangeBuffer.toString('ascii', false, 3), 'abc'); -assert.equal(rangeBuffer.toString('ascii', '', 3), 'abc'); - -// but, if start is an integer when coerced, then it will be coerced and used. -assert.equal(rangeBuffer.toString('ascii', '-1', 3), 'abc'); -assert.equal(rangeBuffer.toString('ascii', '1', 3), 'bc'); -assert.equal(rangeBuffer.toString('ascii', '-Infinity', 3), 'abc'); -assert.equal(rangeBuffer.toString('ascii', '3', 3), ''); -assert.equal(rangeBuffer.toString('ascii', Number(3), 3), ''); -assert.equal(rangeBuffer.toString('ascii', '3.14', 3), ''); -assert.equal(rangeBuffer.toString('ascii', '1.99', 3), 'bc'); -assert.equal(rangeBuffer.toString('ascii', '-1.99', 3), 'abc'); -assert.equal(rangeBuffer.toString('ascii', 1.99, 3), 'bc'); -assert.equal(rangeBuffer.toString('ascii', true, 3), 'bc'); - -// if end > buffer's length, end will be taken as buffer's length -assert.equal(rangeBuffer.toString('ascii', 0, 5), 'abc'); -assert.equal(rangeBuffer.toString('ascii', 0, 6.99), 'abc'); -assert.equal(rangeBuffer.toString('ascii', 0, Infinity), 'abc'); -assert.equal(rangeBuffer.toString('ascii', 0, '5'), 'abc'); -assert.equal(rangeBuffer.toString('ascii', 0, '6.99'), 'abc'); -assert.equal(rangeBuffer.toString('ascii', 0, 'Infinity'), 'abc'); - -// if end is an invalid integer, end will be taken as buffer's length -assert.equal(rangeBuffer.toString('ascii', 0, 'node.js'), ''); -assert.equal(rangeBuffer.toString('ascii', 0, {}), ''); -assert.equal(rangeBuffer.toString('ascii', 0, NaN), ''); -assert.equal(rangeBuffer.toString('ascii', 0, undefined), 'abc'); -assert.equal(rangeBuffer.toString('ascii', 0), 'abc'); -assert.equal(rangeBuffer.toString('ascii', 0, null), ''); -assert.equal(rangeBuffer.toString('ascii', 0, []), ''); -assert.equal(rangeBuffer.toString('ascii', 0, false), ''); -assert.equal(rangeBuffer.toString('ascii', 0, ''), ''); - -// but, if end is an integer when coerced, then it will be coerced and used. -assert.equal(rangeBuffer.toString('ascii', 0, '-1'), ''); -assert.equal(rangeBuffer.toString('ascii', 0, '1'), 'a'); -assert.equal(rangeBuffer.toString('ascii', 0, '-Infinity'), ''); -assert.equal(rangeBuffer.toString('ascii', 0, '3'), 'abc'); -assert.equal(rangeBuffer.toString('ascii', 0, Number(3)), 'abc'); -assert.equal(rangeBuffer.toString('ascii', 0, '3.14'), 'abc'); -assert.equal(rangeBuffer.toString('ascii', 0, '1.99'), 'a'); -assert.equal(rangeBuffer.toString('ascii', 0, '-1.99'), ''); -assert.equal(rangeBuffer.toString('ascii', 0, 1.99), 'a'); -assert.equal(rangeBuffer.toString('ascii', 0, true), 'a'); - -// try toString() with a object as a encoding -assert.equal(rangeBuffer.toString({toString: function() { - return 'ascii'; -}}), 'abc'); - -// testing for smart defaults and ability to pass string values as offset -var writeTest = new Buffer('abcdes'); -writeTest.write('n', 'ascii'); -writeTest.write('o', '1', 'ascii'); -writeTest.write('d', '2', 'ascii'); -writeTest.write('e', 3, 'ascii'); -writeTest.write('j', 4, 'ascii'); -assert.equal(writeTest.toString(), 'nodejs'); - -// ASCII slice test -{ - var asciiString = 'hello world'; - - for (var i = 0; i < asciiString.length; i++) { - b[i] = asciiString.charCodeAt(i); - } - var asciiSlice = b.toString('ascii', 0, asciiString.length); - assert.equal(asciiString, asciiSlice); -} - -{ - var asciiString = 'hello world'; - var offset = 100; - - var written = b.write(asciiString, offset, 'ascii'); - assert.equal(asciiString.length, written); - var asciiSlice = b.toString('ascii', offset, offset + asciiString.length); - assert.equal(asciiString, asciiSlice); -} - -{ - var asciiString = 'hello world'; - var offset = 100; - - var sliceA = b.slice(offset, offset + asciiString.length); - var sliceB = b.slice(offset, offset + asciiString.length); - for (var i = 0; i < asciiString.length; i++) { - assert.equal(sliceA[i], sliceB[i]); - } -} - -// UTF-8 slice test - -var utf8String = '¡hέlló wôrld!'; -var offset = 100; - -b.write(utf8String, 0, Buffer.byteLength(utf8String), 'utf8'); -var utf8Slice = b.toString('utf8', 0, Buffer.byteLength(utf8String)); -assert.equal(utf8String, utf8Slice); - -var written = b.write(utf8String, offset, 'utf8'); -assert.equal(Buffer.byteLength(utf8String), written); -utf8Slice = b.toString('utf8', offset, offset + Buffer.byteLength(utf8String)); -assert.equal(utf8String, utf8Slice); - -var sliceA = b.slice(offset, offset + Buffer.byteLength(utf8String)); -var sliceB = b.slice(offset, offset + Buffer.byteLength(utf8String)); -for (var i = 0; i < Buffer.byteLength(utf8String); i++) { - assert.equal(sliceA[i], sliceB[i]); -} - -{ - var slice = b.slice(100, 150); - assert.equal(50, slice.length); - for (var i = 0; i < 50; i++) { - assert.equal(b[100 + i], slice[i]); - } -} - -{ - // make sure only top level parent propagates from allocPool - var b = new Buffer(5); - var c = b.slice(0, 4); - var d = c.slice(0, 2); - assert.equal(b.parent, c.parent); - assert.equal(b.parent, d.parent); -} - -{ - // also from a non-pooled instance - var b = new SlowBuffer(5); - var c = b.slice(0, 4); - var d = c.slice(0, 2); - assert.equal(c.parent, d.parent); -} - -{ - // Bug regression test - var testValue = '\u00F6\u65E5\u672C\u8A9E'; // ö日本語 - var buffer = new Buffer(32); - var size = buffer.write(testValue, 0, 'utf8'); -// console.log('bytes written to buffer: ' + size); - var slice = buffer.toString('utf8', 0, size); - assert.equal(slice, testValue); -} - -{ - // Test triple slice - var a = new Buffer(8); - for (var i = 0; i < 8; i++) a[i] = i; - var b = a.slice(4, 8); - assert.equal(4, b[0]); - assert.equal(5, b[1]); - assert.equal(6, b[2]); - assert.equal(7, b[3]); - var c = b.slice(2, 4); - assert.equal(6, c[0]); - assert.equal(7, c[1]); -} - -{ - var d = new Buffer([23, 42, 255]); - assert.equal(d.length, 3); - assert.equal(d[0], 23); - assert.equal(d[1], 42); - assert.equal(d[2], 255); - assert.deepStrictEqual(d, new Buffer(d)); -} - -{ - var e = new Buffer('über'); -// console.error('uber: \'%s\'', e.toString()); - assert.deepStrictEqual(e, new Buffer([195, 188, 98, 101, 114])); -} - -{ - var f = new Buffer('über', 'ascii'); -// console.error('f.length: %d (should be 4)', f.length); - assert.deepStrictEqual(f, new Buffer([252, 98, 101, 114])); -} - -['ucs2', 'ucs-2', 'utf16le', 'utf-16le'].forEach(function(encoding) { - { - var f = new Buffer('über', encoding); -// console.error('f.length: %d (should be 8)', f.length); - assert.deepStrictEqual(f, new Buffer([252, 0, 98, 0, 101, 0, 114, 0])); - } - - { - var f = new Buffer('привет', encoding); -// console.error('f.length: %d (should be 12)', f.length); - var expected = new Buffer([63, 4, 64, 4, 56, 4, 50, 4, 53, 4, 66, 4]); - assert.deepStrictEqual(f, expected); - assert.equal(f.toString(encoding), 'привет'); - } - - { - var f = new Buffer([0, 0, 0, 0, 0]); - assert.equal(f.length, 5); - var size = f.write('あいうえお', encoding); -// console.error('bytes written to buffer: %d (should be 4)', size); - assert.equal(size, 4); - assert.deepStrictEqual(f, new Buffer([0x42, 0x30, 0x44, 0x30, 0x00])); - } -}); - -{ - var f = new Buffer('\uD83D\uDC4D', 'utf-16le'); // THUMBS UP SIGN (U+1F44D) - assert.equal(f.length, 4); - assert.deepStrictEqual(f, new Buffer('3DD84DDC', 'hex')); -} - - -var arrayIsh = {0: 0, 1: 1, 2: 2, 3: 3, length: 4}; -var g = new Buffer(arrayIsh); -assert.deepStrictEqual(g, new Buffer([0, 1, 2, 3])); -var strArrayIsh = {0: '0', 1: '1', 2: '2', 3: '3', length: 4}; -g = new Buffer(strArrayIsh); -assert.deepStrictEqual(g, new Buffer([0, 1, 2, 3])); - - -// -// Test toString('base64') -// -assert.equal('TWFu', (new Buffer('Man')).toString('base64')); - -{ - // test that regular and URL-safe base64 both work - var expected = [0xff, 0xff, 0xbe, 0xff, 0xef, 0xbf, 0xfb, 0xef, 0xff]; - assert.deepStrictEqual(Buffer('//++/++/++//', 'base64'), Buffer(expected)); - assert.deepStrictEqual(Buffer('__--_--_--__', 'base64'), Buffer(expected)); -} - -{ - // big example - var quote = 'Man is distinguished, not only by his reason, but by this ' + - 'singular passion from other animals, which is a lust ' + - 'of the mind, that by a perseverance of delight in the ' + - 'continued and indefatigable generation of knowledge, ' + - 'exceeds the short vehemence of any carnal pleasure.'; - var expected = 'TWFuIGlzIGRpc3Rpbmd1aXNoZWQsIG5vdCBvbmx5IGJ5IGhpcyByZWFzb' + - '24sIGJ1dCBieSB0aGlzIHNpbmd1bGFyIHBhc3Npb24gZnJvbSBvdGhlci' + - 'BhbmltYWxzLCB3aGljaCBpcyBhIGx1c3Qgb2YgdGhlIG1pbmQsIHRoYXQ' + - 'gYnkgYSBwZXJzZXZlcmFuY2Ugb2YgZGVsaWdodCBpbiB0aGUgY29udGlu' + - 'dWVkIGFuZCBpbmRlZmF0aWdhYmxlIGdlbmVyYXRpb24gb2Yga25vd2xlZ' + - 'GdlLCBleGNlZWRzIHRoZSBzaG9ydCB2ZWhlbWVuY2Ugb2YgYW55IGNhcm' + - '5hbCBwbGVhc3VyZS4='; - assert.equal(expected, (new Buffer(quote)).toString('base64')); - - var b = new Buffer(1024); - var bytesWritten = b.write(expected, 0, 'base64'); - assert.equal(quote.length, bytesWritten); - assert.equal(quote, b.toString('ascii', 0, quote.length)); - - // check that the base64 decoder ignores whitespace - var expectedWhite = expected.slice(0, 60) + ' \n' + - expected.slice(60, 120) + ' \n' + - expected.slice(120, 180) + ' \n' + - expected.slice(180, 240) + ' \n' + - expected.slice(240, 300) + '\n' + - expected.slice(300, 360) + '\n'; - b = new Buffer(1024); - bytesWritten = b.write(expectedWhite, 0, 'base64'); - assert.equal(quote.length, bytesWritten); - assert.equal(quote, b.toString('ascii', 0, quote.length)); - - // check that the base64 decoder on the constructor works - // even in the presence of whitespace. - b = new Buffer(expectedWhite, 'base64'); - assert.equal(quote.length, b.length); - assert.equal(quote, b.toString('ascii', 0, quote.length)); - - // check that the base64 decoder ignores illegal chars - var expectedIllegal = expected.slice(0, 60) + ' \x80' + - expected.slice(60, 120) + ' \xff' + - expected.slice(120, 180) + ' \x00' + - expected.slice(180, 240) + ' \x98' + - expected.slice(240, 300) + '\x03' + - expected.slice(300, 360); - b = new Buffer(expectedIllegal, 'base64'); - assert.equal(quote.length, b.length); - assert.equal(quote, b.toString('ascii', 0, quote.length)); -} - -assert.equal(new Buffer('', 'base64').toString(), ''); -assert.equal(new Buffer('K', 'base64').toString(), ''); - -// multiple-of-4 with padding -assert.equal(new Buffer('Kg==', 'base64').toString(), '*'); -assert.equal(new Buffer('Kio=', 'base64').toString(), '**'); -assert.equal(new Buffer('Kioq', 'base64').toString(), '***'); -assert.equal(new Buffer('KioqKg==', 'base64').toString(), '****'); -assert.equal(new Buffer('KioqKio=', 'base64').toString(), '*****'); -assert.equal(new Buffer('KioqKioq', 'base64').toString(), '******'); -assert.equal(new Buffer('KioqKioqKg==', 'base64').toString(), '*******'); -assert.equal(new Buffer('KioqKioqKio=', 'base64').toString(), '********'); -assert.equal(new Buffer('KioqKioqKioq', 'base64').toString(), '*********'); -assert.equal(new Buffer('KioqKioqKioqKg==', 'base64').toString(), - '**********'); -assert.equal(new Buffer('KioqKioqKioqKio=', 'base64').toString(), - '***********'); -assert.equal(new Buffer('KioqKioqKioqKioq', 'base64').toString(), - '************'); -assert.equal(new Buffer('KioqKioqKioqKioqKg==', 'base64').toString(), - '*************'); -assert.equal(new Buffer('KioqKioqKioqKioqKio=', 'base64').toString(), - '**************'); -assert.equal(new Buffer('KioqKioqKioqKioqKioq', 'base64').toString(), - '***************'); -assert.equal(new Buffer('KioqKioqKioqKioqKioqKg==', 'base64').toString(), - '****************'); -assert.equal(new Buffer('KioqKioqKioqKioqKioqKio=', 'base64').toString(), - '*****************'); -assert.equal(new Buffer('KioqKioqKioqKioqKioqKioq', 'base64').toString(), - '******************'); -assert.equal(new Buffer('KioqKioqKioqKioqKioqKioqKg==', 'base64').toString(), - '*******************'); -assert.equal(new Buffer('KioqKioqKioqKioqKioqKioqKio=', 'base64').toString(), - '********************'); - -// no padding, not a multiple of 4 -assert.equal(new Buffer('Kg', 'base64').toString(), '*'); -assert.equal(new Buffer('Kio', 'base64').toString(), '**'); -assert.equal(new Buffer('KioqKg', 'base64').toString(), '****'); -assert.equal(new Buffer('KioqKio', 'base64').toString(), '*****'); -assert.equal(new Buffer('KioqKioqKg', 'base64').toString(), '*******'); -assert.equal(new Buffer('KioqKioqKio', 'base64').toString(), '********'); -assert.equal(new Buffer('KioqKioqKioqKg', 'base64').toString(), '**********'); -assert.equal(new Buffer('KioqKioqKioqKio', 'base64').toString(), '***********'); -assert.equal(new Buffer('KioqKioqKioqKioqKg', 'base64').toString(), - '*************'); -assert.equal(new Buffer('KioqKioqKioqKioqKio', 'base64').toString(), - '**************'); -assert.equal(new Buffer('KioqKioqKioqKioqKioqKg', 'base64').toString(), - '****************'); -assert.equal(new Buffer('KioqKioqKioqKioqKioqKio', 'base64').toString(), - '*****************'); -assert.equal(new Buffer('KioqKioqKioqKioqKioqKioqKg', 'base64').toString(), - '*******************'); -assert.equal(new Buffer('KioqKioqKioqKioqKioqKioqKio', 'base64').toString(), - '********************'); - -// handle padding graciously, multiple-of-4 or not -assert.equal( - new Buffer('72INjkR5fchcxk9+VgdGPFJDxUBFR5/rMFsghgxADiw==', 'base64').length, - 32 -); -assert.equal( - new Buffer('72INjkR5fchcxk9+VgdGPFJDxUBFR5/rMFsghgxADiw=', 'base64').length, - 32 -); -assert.equal( - new Buffer('72INjkR5fchcxk9+VgdGPFJDxUBFR5/rMFsghgxADiw', 'base64').length, - 32 -); -assert.equal( - new Buffer('w69jACy6BgZmaFvv96HG6MYksWytuZu3T1FvGnulPg==', 'base64').length, - 31 -); -assert.equal( - new Buffer('w69jACy6BgZmaFvv96HG6MYksWytuZu3T1FvGnulPg=', 'base64').length, - 31 -); -assert.equal( - new Buffer('w69jACy6BgZmaFvv96HG6MYksWytuZu3T1FvGnulPg', 'base64').length, - 31 -); - -// This string encodes single '.' character in UTF-16 -var dot = new Buffer('//4uAA==', 'base64'); -assert.equal(dot[0], 0xff); -assert.equal(dot[1], 0xfe); -assert.equal(dot[2], 0x2e); -assert.equal(dot[3], 0x00); -assert.equal(dot.toString('base64'), '//4uAA=='); - -{ - // Writing base64 at a position > 0 should not mangle the result. - // - // https://github.com/joyent/node/issues/402 - var segments = ['TWFkbmVzcz8h', 'IFRoaXM=', 'IGlz', 'IG5vZGUuanMh']; - var b = new Buffer(64); - var pos = 0; - - for (var i = 0; i < segments.length; ++i) { - pos += b.write(segments[i], pos, 'base64'); - } - assert.equal(b.toString('latin1', 0, pos), 'Madness?! This is node.js!'); - assert.equal(b.toString('binary', 0, pos), 'Madness?! This is node.js!'); -} - -// Regression test for https://github.com/nodejs/node/issues/3496. -// assert.equal(Buffer('=bad'.repeat(1e4), 'base64').length, 0); - -{ - // Creating buffers larger than pool size. - var l = Buffer.poolSize + 5; - var s = 'h'.repeat(l); - - var b = new Buffer(s); - - for (var i = 0; i < l; i++) { - assert.equal('h'.charCodeAt(0), b[i]); - } - - var sb = b.toString(); - assert.equal(sb.length, s.length); - assert.equal(sb, s); -} - -{ - // Single argument slice - var b = new Buffer('abcde'); - assert.equal('bcde', b.slice(1).toString()); -} - -// slice(0,0).length === 0 -assert.equal(0, Buffer('hello').slice(0, 0).length); - -// test hex toString -// console.log('Create hex string from buffer'); -var hexb = new Buffer(256); -for (var i = 0; i < 256; i++) { - hexb[i] = i; -} -var hexStr = hexb.toString('hex'); -assert.equal(hexStr, - '000102030405060708090a0b0c0d0e0f' + - '101112131415161718191a1b1c1d1e1f' + - '202122232425262728292a2b2c2d2e2f' + - '303132333435363738393a3b3c3d3e3f' + - '404142434445464748494a4b4c4d4e4f' + - '505152535455565758595a5b5c5d5e5f' + - '606162636465666768696a6b6c6d6e6f' + - '707172737475767778797a7b7c7d7e7f' + - '808182838485868788898a8b8c8d8e8f' + - '909192939495969798999a9b9c9d9e9f' + - 'a0a1a2a3a4a5a6a7a8a9aaabacadaeaf' + - 'b0b1b2b3b4b5b6b7b8b9babbbcbdbebf' + - 'c0c1c2c3c4c5c6c7c8c9cacbcccdcecf' + - 'd0d1d2d3d4d5d6d7d8d9dadbdcdddedf' + - 'e0e1e2e3e4e5e6e7e8e9eaebecedeeef' + - 'f0f1f2f3f4f5f6f7f8f9fafbfcfdfeff'); - -// console.log('Create buffer from hex string'); -var hexb2 = new Buffer(hexStr, 'hex'); -for (var i = 0; i < 256; i++) { - assert.equal(hexb2[i], hexb[i]); -} - -// Test single hex character throws TypeError -// - https://github.com/nodejs/node/issues/6770 -assert.throws(function() { - Buffer.from('A', 'hex'); -}, TypeError); - -// Test single base64 char encodes as 0 -// assert.strictEqual(Buffer.from('A', 'base64').length, 0); - -{ - // test an invalid slice end. -// console.log('Try to slice off the end of the buffer'); - var b = new Buffer([1, 2, 3, 4, 5]); - var b2 = b.toString('hex', 1, 10000); - var b3 = b.toString('hex', 1, 5); - var b4 = b.toString('hex', 1); - assert.equal(b2, b3); - assert.equal(b2, b4); -} - -function buildBuffer(data) { - if (Array.isArray(data)) { - var buffer = Buffer(data.length); - data.forEach(function(v, k) { - buffer[k] = v; - }); - return buffer; - } - return null; -} - -var x = buildBuffer([0x81, 0xa3, 0x66, 0x6f, 0x6f, 0xa3, 0x62, 0x61, 0x72]); - -// console.log(x.inspect()); -assert.equal('', x.inspect()); - -{ - var z = x.slice(4); -// console.log(z.inspect()); -// console.log(z.length); - assert.equal(5, z.length); - assert.equal(0x6f, z[0]); - assert.equal(0xa3, z[1]); - assert.equal(0x62, z[2]); - assert.equal(0x61, z[3]); - assert.equal(0x72, z[4]); -} - -{ - var z = x.slice(0); -// console.log(z.inspect()); -// console.log(z.length); - assert.equal(z.length, x.length); -} - -{ - var z = x.slice(0, 4); -// console.log(z.inspect()); -// console.log(z.length); - assert.equal(4, z.length); - assert.equal(0x81, z[0]); - assert.equal(0xa3, z[1]); -} - -{ - var z = x.slice(0, 9); -// console.log(z.inspect()); -// console.log(z.length); - assert.equal(9, z.length); -} - -{ - var z = x.slice(1, 4); -// console.log(z.inspect()); -// console.log(z.length); - assert.equal(3, z.length); - assert.equal(0xa3, z[0]); -} - -{ - var z = x.slice(2, 4); -// console.log(z.inspect()); -// console.log(z.length); - assert.equal(2, z.length); - assert.equal(0x66, z[0]); - assert.equal(0x6f, z[1]); -} - -assert.equal(0, Buffer('hello').slice(0, 0).length); - -['ucs2', 'ucs-2', 'utf16le', 'utf-16le'].forEach(function(encoding) { - var b = new Buffer(10); - b.write('あいうえお', encoding); - assert.equal(b.toString(encoding), 'あいうえお'); -}); - -{ - // latin1 encoding should write only one byte per character. - var b = Buffer([0xde, 0xad, 0xbe, 0xef]); - var s = String.fromCharCode(0xffff); - b.write(s, 0, 'latin1'); - assert.equal(0xff, b[0]); - assert.equal(0xad, b[1]); - assert.equal(0xbe, b[2]); - assert.equal(0xef, b[3]); - s = String.fromCharCode(0xaaee); - b.write(s, 0, 'latin1'); - assert.equal(0xee, b[0]); - assert.equal(0xad, b[1]); - assert.equal(0xbe, b[2]); - assert.equal(0xef, b[3]); -} - -{ - // Binary encoding should write only one byte per character. - var b = Buffer([0xde, 0xad, 0xbe, 0xef]); - var s = String.fromCharCode(0xffff); - b.write(s, 0, 'binary'); - assert.equal(0xff, b[0]); - assert.equal(0xad, b[1]); - assert.equal(0xbe, b[2]); - assert.equal(0xef, b[3]); - s = String.fromCharCode(0xaaee); - b.write(s, 0, 'binary'); - assert.equal(0xee, b[0]); - assert.equal(0xad, b[1]); - assert.equal(0xbe, b[2]); - assert.equal(0xef, b[3]); -} - -{ - // #1210 Test UTF-8 string includes null character - var buf = new Buffer('\0'); - assert.equal(buf.length, 1); - buf = new Buffer('\0\0'); - assert.equal(buf.length, 2); -} - -{ - var buf = new Buffer(2); - var written = buf.write(''); // 0byte - assert.equal(written, 0); - written = buf.write('\0'); // 1byte (v8 adds null terminator) - assert.equal(written, 1); - written = buf.write('a\0'); // 1byte * 2 - assert.equal(written, 2); - written = buf.write('あ'); // 3bytes - assert.equal(written, 0); - written = buf.write('\0あ'); // 1byte + 3bytes - assert.equal(written, 1); - written = buf.write('\0\0あ'); // 1byte * 2 + 3bytes - assert.equal(written, 2); -} - -{ - var buf = new Buffer(10); - written = buf.write('あいう'); // 3bytes * 3 (v8 adds null terminator) - assert.equal(written, 9); - written = buf.write('あいう\0'); // 3bytes * 3 + 1byte - assert.equal(written, 10); -} - -{ - // #243 Test write() with maxLength - var buf = new Buffer(4); - buf.fill(0xFF); - var written = buf.write('abcd', 1, 2, 'utf8'); -// console.log(buf); - assert.equal(written, 2); - assert.equal(buf[0], 0xFF); - assert.equal(buf[1], 0x61); - assert.equal(buf[2], 0x62); - assert.equal(buf[3], 0xFF); - - buf.fill(0xFF); - written = buf.write('abcd', 1, 4); -// console.log(buf); - assert.equal(written, 3); - assert.equal(buf[0], 0xFF); - assert.equal(buf[1], 0x61); - assert.equal(buf[2], 0x62); - assert.equal(buf[3], 0x63); - - buf.fill(0xFF); - written = buf.write('abcd', 1, 2, 'utf8'); -// console.log(buf); - assert.equal(written, 2); - assert.equal(buf[0], 0xFF); - assert.equal(buf[1], 0x61); - assert.equal(buf[2], 0x62); - assert.equal(buf[3], 0xFF); - - buf.fill(0xFF); - written = buf.write('abcdef', 1, 2, 'hex'); -// console.log(buf); - assert.equal(written, 2); - assert.equal(buf[0], 0xFF); - assert.equal(buf[1], 0xAB); - assert.equal(buf[2], 0xCD); - assert.equal(buf[3], 0xFF); - - ['ucs2', 'ucs-2', 'utf16le', 'utf-16le'].forEach(function(encoding) { - buf.fill(0xFF); - written = buf.write('abcd', 0, 2, encoding); -// console.log(buf); - assert.equal(written, 2); - assert.equal(buf[0], 0x61); - assert.equal(buf[1], 0x00); - assert.equal(buf[2], 0xFF); - assert.equal(buf[3], 0xFF); - }); -} - -{ - // test offset returns are correct - var b = new Buffer(16); - assert.equal(4, b.writeUInt32LE(0, 0)); - assert.equal(6, b.writeUInt16LE(0, 4)); - assert.equal(7, b.writeUInt8(0, 6)); - assert.equal(8, b.writeInt8(0, 7)); - assert.equal(16, b.writeDoubleLE(0, 8)); -} - -{ - // test unmatched surrogates not producing invalid utf8 output - // ef bf bd = utf-8 representation of unicode replacement character - // see https://codereview.chromium.org/121173009/ - var buf = new Buffer('ab\ud800cd', 'utf8'); - assert.equal(buf[0], 0x61); - assert.equal(buf[1], 0x62); - assert.equal(buf[2], 0xef); - assert.equal(buf[3], 0xbf); - assert.equal(buf[4], 0xbd); - assert.equal(buf[5], 0x63); - assert.equal(buf[6], 0x64); -} - -{ - // test for buffer overrun - var buf = new Buffer([0, 0, 0, 0, 0]); // length: 5 - var sub = buf.slice(0, 4); // length: 4 - written = sub.write('12345', 'latin1'); - assert.equal(written, 4); - assert.equal(buf[4], 0); - written = sub.write('12345', 'binary'); - assert.equal(written, 4); - assert.equal(buf[4], 0); -} - -// Check for fractional length args, junk length args, etc. -// https://github.com/joyent/node/issues/1758 - -// Call .fill() first, stops valgrind warning about uninitialized memory reads. -Buffer(3.3).fill().toString(); // throws bad argument error in commit 43cb4ec -assert.equal(Buffer(NaN).length, 0); -assert.equal(Buffer(3.3).length, 3); -assert.equal(Buffer({length: 3.3}).length, 3); -assert.equal(Buffer({length: 'BAM'}).length, 0); - -// Make sure that strings are not coerced to numbers. -assert.equal(Buffer('99').length, 2); -assert.equal(Buffer('13.37').length, 5); - -// Ensure that the length argument is respected. -'ascii utf8 hex base64 latin1 binary'.split(' ').forEach(function(enc) { - assert.equal(Buffer(1).write('aaaaaa', 0, 1, enc), 1); -}); - -{ - // Regression test, guard against buffer overrun in the base64 decoder. - var a = Buffer(3); - var b = Buffer('xxx'); - a.write('aaaaaaaa', 'base64'); - assert.equal(b.toString(), 'xxx'); -} - -// issue GH-3416 -Buffer(Buffer(0), 0, 0); - -[ 'hex', - 'utf8', - 'utf-8', - 'ascii', - 'latin1', - 'binary', - 'base64', - 'ucs2', - 'ucs-2', - 'utf16le', - 'utf-16le' ].forEach(function(enc) { - assert.equal(Buffer.isEncoding(enc), true); - }); - -[ 'utf9', - 'utf-7', - 'Unicode-FTW', - 'new gnu gun' ].forEach(function(enc) { - assert.equal(Buffer.isEncoding(enc), false); - }); - - -// GH-5110 -{ - var buffer = new Buffer('test'); - var string = JSON.stringify(buffer); - - assert.strictEqual(string, '{"type":"Buffer","data":[116,101,115,116]}'); - - assert.deepStrictEqual(buffer, JSON.parse(string, function(key, value) { - return value && value.type === 'Buffer' - ? new Buffer(value.data) - : value; - })); -} - -// issue GH-7849 -{ - var buf = new Buffer('test'); - var json = JSON.stringify(buf); - var obj = JSON.parse(json); - var copy = new Buffer(obj); - - assert(buf.equals(copy)); -} - -// issue GH-4331 -assert.throws(function() { - Buffer(0xFFFFFFFF); -}, RangeError); -assert.throws(function() { - Buffer(0xFFFFFFFFF); -}, RangeError); - -// issue GH-5587 -assert.throws(function() { - var buf = new Buffer(8); - buf.writeFloatLE(0, 5); -}, RangeError); -assert.throws(function() { - var buf = new Buffer(16); - buf.writeDoubleLE(0, 9); -}, RangeError); - - -// attempt to overflow buffers, similar to previous bug in array buffers -assert.throws(function() { - var buf = Buffer(8); - buf.readFloatLE(0xffffffff); -}, RangeError); - -assert.throws(function() { - var buf = Buffer(8); - buf.writeFloatLE(0.0, 0xffffffff); -}, RangeError); - -assert.throws(function() { - var buf = Buffer(8); - buf.readFloatLE(0xffffffff); -}, RangeError); - -assert.throws(function() { - var buf = Buffer(8); - buf.writeFloatLE(0.0, 0xffffffff); -}, RangeError); - - -// ensure negative values can't get past offset -assert.throws(function() { - var buf = Buffer(8); - buf.readFloatLE(-1); -}, RangeError); - -assert.throws(function() { - var buf = Buffer(8); - buf.writeFloatLE(0.0, -1); -}, RangeError); - -assert.throws(function() { - var buf = Buffer(8); - buf.readFloatLE(-1); -}, RangeError); - -assert.throws(function() { - var buf = Buffer(8); - buf.writeFloatLE(0.0, -1); -}, RangeError); - -// offset checks -{ - var buf = new Buffer(0); - - assert.throws(function() { buf.readUInt8(0); }, RangeError); - assert.throws(function() { buf.readInt8(0); }, RangeError); -} - -{ - var buf = new Buffer([0xFF]); - - assert.equal(buf.readUInt8(0), 255); - assert.equal(buf.readInt8(0), -1); -} - -[16, 32].forEach(function(bits) { - var buf = new Buffer(bits / 8 - 1); - - assert.throws(function() { buf['readUInt' + bits + 'BE'](0); }, - RangeError, - 'readUInt' + bits + 'BE'); - - assert.throws(function() { buf['readUInt' + bits + 'LE'](0); }, - RangeError, - 'readUInt' + bits + 'LE'); - - assert.throws(function() { buf['readInt' + bits + 'BE'](0); }, - RangeError, - 'readInt' + bits + 'BE()'); - - assert.throws(function() { buf['readInt' + bits + 'LE'](0); }, - RangeError, - 'readInt' + bits + 'LE()'); -}); - -[16, 32].forEach(function(bits) { - var buf = new Buffer([0xFF, 0xFF, 0xFF, 0xFF]); - - assert.equal(buf['readUInt' + bits + 'BE'](0), - (0xFFFFFFFF >>> (32 - bits))); - - assert.equal(buf['readUInt' + bits + 'LE'](0), - (0xFFFFFFFF >>> (32 - bits))); - - assert.equal(buf['readInt' + bits + 'BE'](0), - (0xFFFFFFFF >> (32 - bits))); - - assert.equal(buf['readInt' + bits + 'LE'](0), - (0xFFFFFFFF >> (32 - bits))); -}); - -// test for common read(U)IntLE/BE -{ - var buf = new Buffer([0x01, 0x02, 0x03, 0x04, 0x05, 0x06]); - - assert.strictEqual(buf.readUIntLE(0, 1), 0x01); - assert.strictEqual(buf.readUIntBE(0, 1), 0x01); - assert.strictEqual(buf.readUIntLE(0, 3), 0x030201); - assert.strictEqual(buf.readUIntBE(0, 3), 0x010203); - assert.strictEqual(buf.readUIntLE(0, 5), 0x0504030201); - assert.strictEqual(buf.readUIntBE(0, 5), 0x0102030405); - assert.strictEqual(buf.readUIntLE(0, 6), 0x060504030201); - assert.strictEqual(buf.readUIntBE(0, 6), 0x010203040506); - assert.strictEqual(buf.readIntLE(0, 1), 0x01); - assert.strictEqual(buf.readIntBE(0, 1), 0x01); - assert.strictEqual(buf.readIntLE(0, 3), 0x030201); - assert.strictEqual(buf.readIntBE(0, 3), 0x010203); - assert.strictEqual(buf.readIntLE(0, 5), 0x0504030201); - assert.strictEqual(buf.readIntBE(0, 5), 0x0102030405); - assert.strictEqual(buf.readIntLE(0, 6), 0x060504030201); - assert.strictEqual(buf.readIntBE(0, 6), 0x010203040506); -} - -// test for common write(U)IntLE/BE -{ - var buf = Buffer(3); - buf.writeUIntLE(0x123456, 0, 3); - assert.deepStrictEqual(buf.toJSON().data, [0x56, 0x34, 0x12]); - assert.equal(buf.readUIntLE(0, 3), 0x123456); - - buf = Buffer(3); - buf.writeUIntBE(0x123456, 0, 3); - assert.deepStrictEqual(buf.toJSON().data, [0x12, 0x34, 0x56]); - assert.equal(buf.readUIntBE(0, 3), 0x123456); - - buf = Buffer(3); - buf.writeIntLE(0x123456, 0, 3); - assert.deepStrictEqual(buf.toJSON().data, [0x56, 0x34, 0x12]); - assert.equal(buf.readIntLE(0, 3), 0x123456); - - buf = Buffer(3); - buf.writeIntBE(0x123456, 0, 3); - assert.deepStrictEqual(buf.toJSON().data, [0x12, 0x34, 0x56]); - assert.equal(buf.readIntBE(0, 3), 0x123456); - - buf = Buffer(3); - buf.writeIntLE(-0x123456, 0, 3); - assert.deepStrictEqual(buf.toJSON().data, [0xaa, 0xcb, 0xed]); - assert.equal(buf.readIntLE(0, 3), -0x123456); - - buf = Buffer(3); - buf.writeIntBE(-0x123456, 0, 3); - assert.deepStrictEqual(buf.toJSON().data, [0xed, 0xcb, 0xaa]); - assert.equal(buf.readIntBE(0, 3), -0x123456); - - buf = Buffer(3); - buf.writeIntLE(-0x123400, 0, 3); - assert.deepStrictEqual(buf.toJSON().data, [0x00, 0xcc, 0xed]); - assert.equal(buf.readIntLE(0, 3), -0x123400); - - buf = Buffer(3); - buf.writeIntBE(-0x123400, 0, 3); - assert.deepStrictEqual(buf.toJSON().data, [0xed, 0xcc, 0x00]); - assert.equal(buf.readIntBE(0, 3), -0x123400); - - buf = Buffer(3); - buf.writeIntLE(-0x120000, 0, 3); - assert.deepStrictEqual(buf.toJSON().data, [0x00, 0x00, 0xee]); - assert.equal(buf.readIntLE(0, 3), -0x120000); - - buf = Buffer(3); - buf.writeIntBE(-0x120000, 0, 3); - assert.deepStrictEqual(buf.toJSON().data, [0xee, 0x00, 0x00]); - assert.equal(buf.readIntBE(0, 3), -0x120000); - - buf = Buffer(5); - buf.writeUIntLE(0x1234567890, 0, 5); - assert.deepStrictEqual(buf.toJSON().data, [0x90, 0x78, 0x56, 0x34, 0x12]); - assert.equal(buf.readUIntLE(0, 5), 0x1234567890); - - buf = Buffer(5); - buf.writeUIntBE(0x1234567890, 0, 5); - assert.deepStrictEqual(buf.toJSON().data, [0x12, 0x34, 0x56, 0x78, 0x90]); - assert.equal(buf.readUIntBE(0, 5), 0x1234567890); - - buf = Buffer(5); - buf.writeIntLE(0x1234567890, 0, 5); - assert.deepStrictEqual(buf.toJSON().data, [0x90, 0x78, 0x56, 0x34, 0x12]); - assert.equal(buf.readIntLE(0, 5), 0x1234567890); - - buf = Buffer(5); - buf.writeIntBE(0x1234567890, 0, 5); - assert.deepStrictEqual(buf.toJSON().data, [0x12, 0x34, 0x56, 0x78, 0x90]); - assert.equal(buf.readIntBE(0, 5), 0x1234567890); - - buf = Buffer(5); - buf.writeIntLE(-0x1234567890, 0, 5); - assert.deepStrictEqual(buf.toJSON().data, [0x70, 0x87, 0xa9, 0xcb, 0xed]); - assert.equal(buf.readIntLE(0, 5), -0x1234567890); - - buf = Buffer(5); - buf.writeIntBE(-0x1234567890, 0, 5); - assert.deepStrictEqual(buf.toJSON().data, [0xed, 0xcb, 0xa9, 0x87, 0x70]); - assert.equal(buf.readIntBE(0, 5), -0x1234567890); - - buf = Buffer(5); - buf.writeIntLE(-0x0012000000, 0, 5); - assert.deepStrictEqual(buf.toJSON().data, [0x00, 0x00, 0x00, 0xee, 0xff]); - assert.equal(buf.readIntLE(0, 5), -0x0012000000); - - buf = Buffer(5); - buf.writeIntBE(-0x0012000000, 0, 5); - assert.deepStrictEqual(buf.toJSON().data, [0xff, 0xee, 0x00, 0x00, 0x00]); - assert.equal(buf.readIntBE(0, 5), -0x0012000000); -} - -// test Buffer slice -{ - var buf = new Buffer('0123456789'); - assert.equal(buf.slice(-10, 10), '0123456789'); - assert.equal(buf.slice(-20, 10), '0123456789'); - assert.equal(buf.slice(-20, -10), ''); - assert.equal(buf.slice(), '0123456789'); - assert.equal(buf.slice(0), '0123456789'); - assert.equal(buf.slice(0, 0), ''); - assert.equal(buf.slice(undefined), '0123456789'); - assert.equal(buf.slice('foobar'), '0123456789'); - assert.equal(buf.slice(undefined, undefined), '0123456789'); - - assert.equal(buf.slice(2), '23456789'); - assert.equal(buf.slice(5), '56789'); - assert.equal(buf.slice(10), ''); - assert.equal(buf.slice(5, 8), '567'); - assert.equal(buf.slice(8, -1), '8'); - assert.equal(buf.slice(-10), '0123456789'); - assert.equal(buf.slice(0, -9), '0'); - assert.equal(buf.slice(0, -10), ''); - assert.equal(buf.slice(0, -1), '012345678'); - assert.equal(buf.slice(2, -2), '234567'); - assert.equal(buf.slice(0, 65536), '0123456789'); - assert.equal(buf.slice(65536, 0), ''); - assert.equal(buf.slice(-5, -8), ''); - assert.equal(buf.slice(-5, -3), '56'); - assert.equal(buf.slice(-10, 10), '0123456789'); - for (var i = 0, s = buf.toString(); i < buf.length; ++i) { - assert.equal(buf.slice(i), s.slice(i)); - assert.equal(buf.slice(0, i), s.slice(0, i)); - assert.equal(buf.slice(-i), s.slice(-i)); - assert.equal(buf.slice(0, -i), s.slice(0, -i)); - } - - var utf16Buf = new Buffer('0123456789', 'utf16le'); - assert.deepStrictEqual(utf16Buf.slice(0, 6), Buffer('012', 'utf16le')); - - assert.equal(buf.slice('0', '1'), '0'); - assert.equal(buf.slice('-5', '10'), '56789'); - assert.equal(buf.slice('-10', '10'), '0123456789'); - assert.equal(buf.slice('-10', '-5'), '01234'); - assert.equal(buf.slice('-10', '-0'), ''); - assert.equal(buf.slice('111'), ''); - assert.equal(buf.slice('0', '-111'), ''); - - // try to slice a zero length Buffer - // see https://github.com/joyent/node/issues/5881 - SlowBuffer(0).slice(0, 1); -} - -// Regression test for #5482: should throw but not assert in C++ land. -assert.throws(function() { - Buffer('', 'buffer'); -}, TypeError); - -// Regression test for #6111. Constructing a buffer from another buffer -// should a) work, and b) not corrupt the source buffer. -{ - var a = [0]; - for (var i = 0; i < 7; ++i) a = a.concat(a); - a = a.map(function(_, i) { return i; }); - var b = Buffer(a); - var c = Buffer(b); - assert.strictEqual(b.length, a.length); - assert.strictEqual(c.length, a.length); - for (var i = 0, k = a.length; i < k; ++i) { - assert.strictEqual(a[i], i); - assert.strictEqual(b[i], i); - assert.strictEqual(c[i], i); - } -} - - -assert.throws(function() { - new Buffer((-1 >>> 0) + 1); -}, RangeError); - -assert.throws(function() { - SlowBuffer((-1 >>> 0) + 1); -}, RangeError); - -if (common.hasCrypto) { - // Test truncation after decode - // var crypto = require('crypto'); - - var b1 = new Buffer('YW55=======', 'base64'); - var b2 = new Buffer('YW55', 'base64'); - - assert.equal( - 1 /*crypto.createHash('sha1').update(b1).digest('hex')*/, - 1 /*crypto.createHash('sha1').update(b2).digest('hex')*/ - ); -} else { - common.skip('missing crypto'); -} - -// Test Compare -{ - var b = new Buffer(1).fill('a'); - var c = new Buffer(1).fill('c'); - var d = new Buffer(2).fill('aa'); - - assert.equal(b.compare(c), -1); - assert.equal(c.compare(d), 1); - assert.equal(d.compare(b), 1); - assert.equal(b.compare(d), -1); - assert.equal(b.compare(b), 0); - - assert.equal(Buffer.compare(b, c), -1); - assert.equal(Buffer.compare(c, d), 1); - assert.equal(Buffer.compare(d, b), 1); - assert.equal(Buffer.compare(b, d), -1); - assert.equal(Buffer.compare(c, c), 0); - - assert.equal(Buffer.compare(Buffer(0), Buffer(0)), 0); - assert.equal(Buffer.compare(Buffer(0), Buffer(1)), -1); - assert.equal(Buffer.compare(Buffer(1), Buffer(0)), 1); -} - -assert.throws(function() { - var b = Buffer(1); - Buffer.compare(b, 'abc'); -}); - -assert.throws(function() { - var b = Buffer(1); - Buffer.compare('abc', b); -}); - -assert.throws(function() { - var b = Buffer(1); - b.compare('abc'); -}); - -// Test Equals -{ - var b = new Buffer(5).fill('abcdf'); - var c = new Buffer(5).fill('abcdf'); - var d = new Buffer(5).fill('abcde'); - var e = new Buffer(6).fill('abcdef'); - - assert.ok(b.equals(c)); - assert.ok(!c.equals(d)); - assert.ok(!d.equals(e)); - assert.ok(d.equals(d)); -} - -assert.throws(function() { - var b = Buffer(1); - b.equals('abc'); -}); - -// Regression test for https://github.com/nodejs/node/issues/649. -assert.throws(function() { Buffer(1422561062959).toString('utf8'); }); - -var ps = Buffer.poolSize; -Buffer.poolSize = 0; -assert.equal(Buffer(1).parent, undefined); -Buffer.poolSize = ps; - -// Test Buffer.copy() segfault -assert.throws(function() { - Buffer(10).copy(); -}); - -var regErrorMsg = new RegExp('First argument must be a string, Buffer, ' + - 'ArrayBuffer, Array, or array-like object.'); - -assert.throws(function() { - new Buffer(); -}, regErrorMsg); - -assert.throws(function() { - new Buffer(null); -}, regErrorMsg); - - -// Test prototype getters don't throw -assert.equal(Buffer.prototype.parent, undefined); -assert.equal(Buffer.prototype.offset, undefined); -assert.equal(SlowBuffer.prototype.parent, undefined); -assert.equal(SlowBuffer.prototype.offset, undefined); - -{ - // Test that large negative Buffer length inputs don't affect the pool offset. - // Use the fromArrayLike() variant here because it's more lenient - // about its input and passes the length directly to allocate(). - assert.deepStrictEqual(Buffer({ length: -Buffer.poolSize }), Buffer.from('')); - assert.deepStrictEqual(Buffer({ length: -100 }), Buffer.from('')); - - // Check pool offset after that by trying to write string into the pool. - assert.doesNotThrow(() => Buffer.from('abc')); -} - - -// Test failed or zero-sized Buffer allocations not affecting typed arrays -{ - var zeroArray = new Uint32Array(10).fill(0); - var sizes = [1e10, 0, 0.1, -1, 'a', undefined, null, NaN]; - var allocators = [ - Buffer, - SlowBuffer, - Buffer.alloc, - Buffer.allocUnsafe, - Buffer.allocUnsafeSlow - ]; - for (var allocator of allocators) { - for (var size of sizes) { - try { - allocator(size); - } catch (e) { - assert.deepStrictEqual(new Uint32Array(10), zeroArray); - } - } - } -} - -// Test that large negative Buffer length inputs throw errors. -assert.throws(() => Buffer(-Buffer.poolSize), - '"size" argument must not be negative'); -assert.throws(() => Buffer(-100), - '"size" argument must not be negative'); -assert.throws(() => Buffer(-1), - '"size" argument must not be negative'); - diff --git a/workshops/monte-carlo-on-ec2-spot-fleet/src/web/node_modules/buffer/test/slice.js b/workshops/monte-carlo-on-ec2-spot-fleet/src/web/node_modules/buffer/test/slice.js deleted file mode 100644 index 25c111c8..00000000 --- a/workshops/monte-carlo-on-ec2-spot-fleet/src/web/node_modules/buffer/test/slice.js +++ /dev/null @@ -1,37 +0,0 @@ -if (process.env.OBJECT_IMPL) global.TYPED_ARRAY_SUPPORT = false -var B = require('../').Buffer -var test = require('tape') - -test('modifying buffer created by .slice() modifies original memory', function (t) { - if (!B.TYPED_ARRAY_SUPPORT) return t.end() - - var buf1 = new B(26) - for (var i = 0; i < 26; i++) { - buf1[i] = i + 97 // 97 is ASCII a - } - - var buf2 = buf1.slice(0, 3) - t.equal(buf2.toString('ascii', 0, buf2.length), 'abc') - - buf2[0] = '!'.charCodeAt(0) - t.equal(buf1.toString('ascii', 0, buf2.length), '!bc') - - t.end() -}) - -test('modifying parent buffer modifies .slice() buffer\'s memory', function (t) { - if (!B.TYPED_ARRAY_SUPPORT) return t.end() - - var buf1 = new B(26) - for (var i = 0; i < 26; i++) { - buf1[i] = i + 97 // 97 is ASCII a - } - - var buf2 = buf1.slice(0, 3) - t.equal(buf2.toString('ascii', 0, buf2.length), 'abc') - - buf1[0] = '!'.charCodeAt(0) - t.equal(buf2.toString('ascii', 0, buf2.length), '!bc') - - t.end() -}) diff --git a/workshops/monte-carlo-on-ec2-spot-fleet/src/web/node_modules/buffer/test/static.js b/workshops/monte-carlo-on-ec2-spot-fleet/src/web/node_modules/buffer/test/static.js deleted file mode 100644 index 4de900bc..00000000 --- a/workshops/monte-carlo-on-ec2-spot-fleet/src/web/node_modules/buffer/test/static.js +++ /dev/null @@ -1,17 +0,0 @@ -if (process.env.OBJECT_IMPL) global.TYPED_ARRAY_SUPPORT = false -var B = require('../').Buffer -var test = require('tape') - -test('Buffer.isEncoding', function (t) { - t.equal(B.isEncoding('HEX'), true) - t.equal(B.isEncoding('hex'), true) - t.equal(B.isEncoding('bad'), false) - t.end() -}) - -test('Buffer.isBuffer', function (t) { - t.equal(B.isBuffer(new B('hey', 'utf8')), true) - t.equal(B.isBuffer(new B([1, 2, 3], 'utf8')), true) - t.equal(B.isBuffer('hey'), false) - t.end() -}) diff --git a/workshops/monte-carlo-on-ec2-spot-fleet/src/web/node_modules/buffer/test/to-string.js b/workshops/monte-carlo-on-ec2-spot-fleet/src/web/node_modules/buffer/test/to-string.js deleted file mode 100644 index 2950d4d0..00000000 --- a/workshops/monte-carlo-on-ec2-spot-fleet/src/web/node_modules/buffer/test/to-string.js +++ /dev/null @@ -1,233 +0,0 @@ -if (process.env.OBJECT_IMPL) global.TYPED_ARRAY_SUPPORT = false -var B = require('../').Buffer -var test = require('tape') - -test('utf8 buffer to base64', function (t) { - t.equal( - new B('Ձאab', 'utf8').toString('base64'), - '1YHXkGFi' - ) - t.end() -}) - -test('utf8 buffer to hex', function (t) { - t.equal( - new B('Ձאab', 'utf8').toString('hex'), - 'd581d7906162' - ) - t.end() -}) - -test('utf8 to utf8', function (t) { - t.equal( - new B('öäüõÖÄÜÕ', 'utf8').toString('utf8'), - 'öäüõÖÄÜÕ' - ) - t.end() -}) - -test('utf16le to utf16', function (t) { - t.equal( - new B(new B('abcd', 'utf8').toString('utf16le'), 'utf16le').toString('utf8'), - 'abcd' - ) - t.end() -}) - -test('utf16le to hex', function (t) { - t.equal( - new B('abcd', 'utf16le').toString('hex'), - '6100620063006400' - ) - t.end() -}) - -test('ascii buffer to base64', function (t) { - t.equal( - new B('123456!@#$%^', 'ascii').toString('base64'), - 'MTIzNDU2IUAjJCVe' - ) - t.end() -}) - -test('ascii buffer to hex', function (t) { - t.equal( - new B('123456!@#$%^', 'ascii').toString('hex'), - '31323334353621402324255e' - ) - t.end() -}) - -test('base64 buffer to utf8', function (t) { - t.equal( - new B('1YHXkGFi', 'base64').toString('utf8'), - 'Ձאab' - ) - t.end() -}) - -test('hex buffer to utf8', function (t) { - t.equal( - new B('d581d7906162', 'hex').toString('utf8'), - 'Ձאab' - ) - t.end() -}) - -test('base64 buffer to ascii', function (t) { - t.equal( - new B('MTIzNDU2IUAjJCVe', 'base64').toString('ascii'), - '123456!@#$%^' - ) - t.end() -}) - -test('hex buffer to ascii', function (t) { - t.equal( - new B('31323334353621402324255e', 'hex').toString('ascii'), - '123456!@#$%^' - ) - t.end() -}) - -test('base64 buffer to binary', function (t) { - t.equal( - new B('MTIzNDU2IUAjJCVe', 'base64').toString('binary'), - '123456!@#$%^' - ) - t.end() -}) - -test('hex buffer to binary', function (t) { - t.equal( - new B('31323334353621402324255e', 'hex').toString('binary'), - '123456!@#$%^' - ) - t.end() -}) - -test('utf8 to binary', function (t) { - /* jshint -W100 */ - t.equal( - new B('öäüõÖÄÜÕ', 'utf8').toString('binary'), - 'öäüõÖÄÜÕ' - ) - /* jshint +W100 */ - t.end() -}) - -test('utf8 replacement chars (1 byte sequence)', function (t) { - t.equal( - new B([ 0x80 ]).toString(), - '\uFFFD' - ) - t.equal( - new B([ 0x7F ]).toString(), - '\u007F' - ) - t.end() -}) - -test('utf8 replacement chars (2 byte sequences)', function (t) { - t.equal( - new B([ 0xC7 ]).toString(), - '\uFFFD' - ) - t.equal( - new B([ 0xC7, 0xB1 ]).toString(), - '\u01F1' - ) - t.equal( - new B([ 0xC0, 0xB1 ]).toString(), - '\uFFFD\uFFFD' - ) - t.equal( - new B([ 0xC1, 0xB1 ]).toString(), - '\uFFFD\uFFFD' - ) - t.end() -}) - -test('utf8 replacement chars (3 byte sequences)', function (t) { - t.equal( - new B([ 0xE0 ]).toString(), - '\uFFFD' - ) - t.equal( - new B([ 0xE0, 0xAC ]).toString(), - '\uFFFD\uFFFD' - ) - t.equal( - new B([ 0xE0, 0xAC, 0xB9 ]).toString(), - '\u0B39' - ) - t.end() -}) - -test('utf8 replacement chars (4 byte sequences)', function (t) { - t.equal( - new B([ 0xF4 ]).toString(), - '\uFFFD' - ) - t.equal( - new B([ 0xF4, 0x8F ]).toString(), - '\uFFFD\uFFFD' - ) - t.equal( - new B([ 0xF4, 0x8F, 0x80 ]).toString(), - '\uFFFD\uFFFD\uFFFD' - ) - t.equal( - new B([ 0xF4, 0x8F, 0x80, 0x84 ]).toString(), - '\uDBFC\uDC04' - ) - t.equal( - new B([ 0xFF ]).toString(), - '\uFFFD' - ) - t.equal( - new B([ 0xFF, 0x8F, 0x80, 0x84 ]).toString(), - '\uFFFD\uFFFD\uFFFD\uFFFD' - ) - t.end() -}) - -test('utf8 replacement chars on 256 random bytes', function (t) { - t.equal( - new B([ 152, 130, 206, 23, 243, 238, 197, 44, 27, 86, 208, 36, 163, 184, 164, 21, 94, 242, 178, 46, 25, 26, 253, 178, 72, 147, 207, 112, 236, 68, 179, 190, 29, 83, 239, 147, 125, 55, 143, 19, 157, 68, 157, 58, 212, 224, 150, 39, 128, 24, 94, 225, 120, 121, 75, 192, 112, 19, 184, 142, 203, 36, 43, 85, 26, 147, 227, 139, 242, 186, 57, 78, 11, 102, 136, 117, 180, 210, 241, 92, 3, 215, 54, 167, 249, 1, 44, 225, 146, 86, 2, 42, 68, 21, 47, 238, 204, 153, 216, 252, 183, 66, 222, 255, 15, 202, 16, 51, 134, 1, 17, 19, 209, 76, 238, 38, 76, 19, 7, 103, 249, 5, 107, 137, 64, 62, 170, 57, 16, 85, 179, 193, 97, 86, 166, 196, 36, 148, 138, 193, 210, 69, 187, 38, 242, 97, 195, 219, 252, 244, 38, 1, 197, 18, 31, 246, 53, 47, 134, 52, 105, 72, 43, 239, 128, 203, 73, 93, 199, 75, 222, 220, 166, 34, 63, 236, 11, 212, 76, 243, 171, 110, 78, 39, 205, 204, 6, 177, 233, 212, 243, 0, 33, 41, 122, 118, 92, 252, 0, 157, 108, 120, 70, 137, 100, 223, 243, 171, 232, 66, 126, 111, 142, 33, 3, 39, 117, 27, 107, 54, 1, 217, 227, 132, 13, 166, 3, 73, 53, 127, 225, 236, 134, 219, 98, 214, 125, 148, 24, 64, 142, 111, 231, 194, 42, 150, 185, 10, 182, 163, 244, 19, 4, 59, 135, 16 ]).toString(), - '\uFFFD\uFFFD\uFFFD\u0017\uFFFD\uFFFD\uFFFD\u002C\u001B\u0056\uFFFD\u0024\uFFFD\uFFFD\uFFFD\u0015\u005E\uFFFD\uFFFD\u002E\u0019\u001A\uFFFD\uFFFD\u0048\uFFFD\uFFFD\u0070\uFFFD\u0044\uFFFD\uFFFD\u001D\u0053\uFFFD\uFFFD\u007D\u0037\uFFFD\u0013\uFFFD\u0044\uFFFD\u003A\uFFFD\uFFFD\uFFFD\u0027\uFFFD\u0018\u005E\uFFFD\u0078\u0079\u004B\uFFFD\u0070\u0013\uFFFD\uFFFD\uFFFD\u0024\u002B\u0055\u001A\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\u0039\u004E\u000B\u0066\uFFFD\u0075\uFFFD\uFFFD\uFFFD\u005C\u0003\uFFFD\u0036\uFFFD\uFFFD\u0001\u002C\uFFFD\uFFFD\u0056\u0002\u002A\u0044\u0015\u002F\uFFFD\u0319\uFFFD\uFFFD\uFFFD\u0042\uFFFD\uFFFD\u000F\uFFFD\u0010\u0033\uFFFD\u0001\u0011\u0013\uFFFD\u004C\uFFFD\u0026\u004C\u0013\u0007\u0067\uFFFD\u0005\u006B\uFFFD\u0040\u003E\uFFFD\u0039\u0010\u0055\uFFFD\uFFFD\u0061\u0056\uFFFD\uFFFD\u0024\uFFFD\uFFFD\uFFFD\uFFFD\u0045\uFFFD\u0026\uFFFD\u0061\uFFFD\uFFFD\uFFFD\uFFFD\u0026\u0001\uFFFD\u0012\u001F\uFFFD\u0035\u002F\uFFFD\u0034\u0069\u0048\u002B\uFFFD\uFFFD\uFFFD\u0049\u005D\uFFFD\u004B\uFFFD\u0726\u0022\u003F\uFFFD\u000B\uFFFD\u004C\uFFFD\uFFFD\u006E\u004E\u0027\uFFFD\uFFFD\u0006\uFFFD\uFFFD\uFFFD\uFFFD\u0000\u0021\u0029\u007A\u0076\u005C\uFFFD\u0000\uFFFD\u006C\u0078\u0046\uFFFD\u0064\uFFFD\uFFFD\uFFFD\uFFFD\u0042\u007E\u006F\uFFFD\u0021\u0003\u0027\u0075\u001B\u006B\u0036\u0001\uFFFD\uFFFD\uFFFD\u000D\uFFFD\u0003\u0049\u0035\u007F\uFFFD\uFFFD\uFFFD\uFFFD\u0062\uFFFD\u007D\uFFFD\u0018\u0040\uFFFD\u006F\uFFFD\uFFFD\u002A\uFFFD\uFFFD\u000A\uFFFD\uFFFD\uFFFD\u0013\u0004\u003B\uFFFD\u0010' - ) - t.end() -}) - -test('utf8 replacement chars for anything in the surrogate pair range', function (t) { - t.equal( - new B([ 0xED, 0x9F, 0xBF ]).toString(), - '\uD7FF' - ) - t.equal( - new B([ 0xED, 0xA0, 0x80 ]).toString(), - '\uFFFD\uFFFD\uFFFD' - ) - t.equal( - new B([ 0xED, 0xBE, 0x8B ]).toString(), - '\uFFFD\uFFFD\uFFFD' - ) - t.equal( - new B([ 0xED, 0xBF, 0xBF ]).toString(), - '\uFFFD\uFFFD\uFFFD' - ) - t.equal( - new B([ 0xEE, 0x80, 0x80 ]).toString(), - '\uE000' - ) - t.end() -}) - -test('utf8 don\'t replace the replacement char', function (t) { - t.equal( - new B('\uFFFD').toString(), - '\uFFFD' - ) - t.end() -}) diff --git a/workshops/monte-carlo-on-ec2-spot-fleet/src/web/node_modules/buffer/test/write.js b/workshops/monte-carlo-on-ec2-spot-fleet/src/web/node_modules/buffer/test/write.js deleted file mode 100644 index 58418063..00000000 --- a/workshops/monte-carlo-on-ec2-spot-fleet/src/web/node_modules/buffer/test/write.js +++ /dev/null @@ -1,131 +0,0 @@ -if (process.env.OBJECT_IMPL) global.TYPED_ARRAY_SUPPORT = false -var B = require('../').Buffer -var test = require('tape') -var isnan = require('is-nan') - -test('buffer.write string should get parsed as number', function (t) { - var b = new B(64) - b.writeUInt16LE('1003', 0) - t.equal(b.readUInt16LE(0), 1003) - t.end() -}) - -test('buffer.writeUInt8 a fractional number will get Math.floored', function (t) { - // Some extra work is necessary to make this test pass with the Object implementation - - var b = new B(1) - b.writeInt8(5.5, 0) - t.equal(b[0], 5) - t.end() -}) - -test('writeUint8 with a negative number throws', function (t) { - var buf = new B(1) - - t.throws(function () { - buf.writeUInt8(-3, 0) - }) - - t.end() -}) - -test('hex of write{Uint,Int}{8,16,32}{LE,BE}', function (t) { - t.plan(2 * (2 * 2 * 2 + 2)) - var hex = [ - '03', '0300', '0003', '03000000', '00000003', - 'fd', 'fdff', 'fffd', 'fdffffff', 'fffffffd' - ] - var reads = [ 3, 3, 3, 3, 3, -3, -3, -3, -3, -3 ] - var xs = ['UInt', 'Int'] - var ys = [8, 16, 32] - for (var i = 0; i < xs.length; i++) { - var x = xs[i] - for (var j = 0; j < ys.length; j++) { - var y = ys[j] - var endianesses = (y === 8) ? [''] : ['LE', 'BE'] - for (var k = 0; k < endianesses.length; k++) { - var z = endianesses[k] - - var v1 = new B(y / 8) - var writefn = 'write' + x + y + z - var val = (x === 'Int') ? -3 : 3 - v1[writefn](val, 0) - t.equal( - v1.toString('hex'), - hex.shift() - ) - var readfn = 'read' + x + y + z - t.equal( - v1[readfn](0), - reads.shift() - ) - } - } - } - t.end() -}) - -test('hex of write{Uint,Int}{8,16,32}{LE,BE} with overflow', function (t) { - if (!B.TYPED_ARRAY_SUPPORT) { - t.pass('object impl: skipping overflow test') - t.end() - return - } - - t.plan(3 * (2 * 2 * 2 + 2)) - var hex = [ - '', '03', '00', '030000', '000000', - '', 'fd', 'ff', 'fdffff', 'ffffff' - ] - var reads = [ - undefined, 3, 0, NaN, 0, - undefined, 253, -256, 16777213, -256 - ] - var xs = ['UInt', 'Int'] - var ys = [8, 16, 32] - for (var i = 0; i < xs.length; i++) { - var x = xs[i] - for (var j = 0; j < ys.length; j++) { - var y = ys[j] - var endianesses = (y === 8) ? [''] : ['LE', 'BE'] - for (var k = 0; k < endianesses.length; k++) { - var z = endianesses[k] - - var v1 = new B(y / 8 - 1) - var next = new B(4) - next.writeUInt32BE(0, 0) - var writefn = 'write' + x + y + z - var val = (x === 'Int') ? -3 : 3 - v1[writefn](val, 0, true) - t.equal( - v1.toString('hex'), - hex.shift() - ) - // check that nothing leaked to next buffer. - t.equal(next.readUInt32BE(0), 0) - // check that no bytes are read from next buffer. - next.writeInt32BE(~0, 0) - var readfn = 'read' + x + y + z - var r = reads.shift() - if (isnan(r)) t.pass('equal') - else t.equal(v1[readfn](0, true), r) - } - } - } - t.end() -}) -test('large values do not improperly roll over (ref #80)', function (t) { - var nums = [-25589992, -633756690, -898146932] - var out = new B(12) - out.fill(0) - out.writeInt32BE(nums[0], 0) - var newNum = out.readInt32BE(0) - t.equal(nums[0], newNum) - out.writeInt32BE(nums[1], 4) - newNum = out.readInt32BE(4) - t.equal(nums[1], newNum) - out.writeInt32BE(nums[2], 8) - newNum = out.readInt32BE(8) - t.equal(nums[2], newNum) - t.end() -}) diff --git a/workshops/monte-carlo-on-ec2-spot-fleet/src/web/node_modules/buffer/test/write_infinity.js b/workshops/monte-carlo-on-ec2-spot-fleet/src/web/node_modules/buffer/test/write_infinity.js deleted file mode 100644 index 17d606a1..00000000 --- a/workshops/monte-carlo-on-ec2-spot-fleet/src/web/node_modules/buffer/test/write_infinity.js +++ /dev/null @@ -1,45 +0,0 @@ -if (process.env.OBJECT_IMPL) global.TYPED_ARRAY_SUPPORT = false -var B = require('../').Buffer -var test = require('tape') - -test('write/read Infinity as a float', function (t) { - var buf = new B(4) - t.equal(buf.writeFloatBE(Infinity, 0), 4) - t.equal(buf.readFloatBE(0), Infinity) - t.end() -}) - -test('write/read -Infinity as a float', function (t) { - var buf = new B(4) - t.equal(buf.writeFloatBE(-Infinity, 0), 4) - t.equal(buf.readFloatBE(0), -Infinity) - t.end() -}) - -test('write/read Infinity as a double', function (t) { - var buf = new B(8) - t.equal(buf.writeDoubleBE(Infinity, 0), 8) - t.equal(buf.readDoubleBE(0), Infinity) - t.end() -}) - -test('write/read -Infinity as a double', function (t) { - var buf = new B(8) - t.equal(buf.writeDoubleBE(-Infinity, 0), 8) - t.equal(buf.readDoubleBE(0), -Infinity) - t.end() -}) - -test('write/read float greater than max', function (t) { - var buf = new B(4) - t.equal(buf.writeFloatBE(4e38, 0), 4) - t.equal(buf.readFloatBE(0), Infinity) - t.end() -}) - -test('write/read float less than min', function (t) { - var buf = new B(4) - t.equal(buf.writeFloatBE(-4e40, 0), 4) - t.equal(buf.readFloatBE(0), -Infinity) - t.end() -}) diff --git a/workshops/monte-carlo-on-ec2-spot-fleet/src/web/node_modules/bytes/History.md b/workshops/monte-carlo-on-ec2-spot-fleet/src/web/node_modules/bytes/History.md deleted file mode 100644 index 56932a47..00000000 --- a/workshops/monte-carlo-on-ec2-spot-fleet/src/web/node_modules/bytes/History.md +++ /dev/null @@ -1,70 +0,0 @@ -2.4.0 / 2016-06-01 -================== - - * Add option "unitSeparator" - -2.3.0 / 2016-02-15 -================== - - * Drop partial bytes on all parsed units - * Fix non-finite numbers to `.format` to return `null` - * Fix parsing byte string that looks like hex - * perf: hoist regular expressions - -2.2.0 / 2015-11-13 -================== - - * add option "decimalPlaces" - * add option "fixedDecimals" - -2.1.0 / 2015-05-21 -================== - - * add `.format` export - * add `.parse` export - -2.0.2 / 2015-05-20 -================== - - * remove map recreation - * remove unnecessary object construction - -2.0.1 / 2015-05-07 -================== - - * fix browserify require - * remove node.extend dependency - -2.0.0 / 2015-04-12 -================== - - * add option "case" - * add option "thousandsSeparator" - * return "null" on invalid parse input - * support proper round-trip: bytes(bytes(num)) === num - * units no longer case sensitive when parsing - -1.0.0 / 2014-05-05 -================== - - * add negative support. fixes #6 - -0.3.0 / 2014-03-19 -================== - - * added terabyte support - -0.2.1 / 2013-04-01 -================== - - * add .component - -0.2.0 / 2012-10-28 -================== - - * bytes(200).should.eql('200b') - -0.1.0 / 2012-07-04 -================== - - * add bytes to string conversion [yields] diff --git a/workshops/monte-carlo-on-ec2-spot-fleet/src/web/node_modules/bytes/LICENSE b/workshops/monte-carlo-on-ec2-spot-fleet/src/web/node_modules/bytes/LICENSE deleted file mode 100644 index 63e95a96..00000000 --- a/workshops/monte-carlo-on-ec2-spot-fleet/src/web/node_modules/bytes/LICENSE +++ /dev/null @@ -1,23 +0,0 @@ -(The MIT License) - -Copyright (c) 2012-2014 TJ Holowaychuk -Copyright (c) 2015 Jed Watson - -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, subject to -the following conditions: - -The above copyright notice and this permission notice shall be -included in all copies or substantial portions of the Software. - -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. diff --git a/workshops/monte-carlo-on-ec2-spot-fleet/src/web/node_modules/bytes/Readme.md b/workshops/monte-carlo-on-ec2-spot-fleet/src/web/node_modules/bytes/Readme.md deleted file mode 100644 index 7465fde9..00000000 --- a/workshops/monte-carlo-on-ec2-spot-fleet/src/web/node_modules/bytes/Readme.md +++ /dev/null @@ -1,114 +0,0 @@ -# Bytes utility - -[![NPM Version][npm-image]][npm-url] -[![NPM Downloads][downloads-image]][downloads-url] -[![Build Status][travis-image]][travis-url] - -Utility to parse a string bytes (ex: `1TB`) to bytes (`1099511627776`) and vice-versa. - -## Usage - -```js -var bytes = require('bytes'); -``` - -#### bytes.format(number value, [options]): string|null - -Format the given value in bytes into a string. If the value is negative, it is kept as such. If it is a float, it is - rounded. - -**Arguments** - -| Name | Type | Description | -|---------|--------|--------------------| -| value | `number` | Value in bytes | -| options | `Object` | Conversion options | - -**Options** - -| Property | Type | Description | -|-------------------|--------|-----------------------------------------------------------------------------------------| -| decimalPlaces | `number`|`null` | Maximum number of decimal places to include in output. Default value to `2`. | -| fixedDecimals | `boolean`|`null` | Whether to always display the maximum number of decimal places. Default value to `false` | -| thousandsSeparator | `string`|`null` | Example of values: `' '`, `','` and `.`... Default value to `' '`. | -| unitSeparator | `string`|`null` | Separator to use between number and unit. Default value to `''`. | - -**Returns** - -| Name | Type | Description | -|---------|-------------|-------------------------| -| results | `string`|`null` | Return null upon error. String value otherwise. | - -**Example** - -```js -bytes(1024); -// output: '1kB' - -bytes(1000); -// output: '1000B' - -bytes(1000, {thousandsSeparator: ' '}); -// output: '1 000B' - -bytes(1024 * 1.7, {decimalPlaces: 0}); -// output: '2kB' - -bytes(1024, {unitSeparator: ' '}); -// output: '1 kB' - -``` - -#### bytes.parse(string value): number|null - -Parse the string value into an integer in bytes. If no unit is given, it is assumed the value is in bytes. - -Supported units and abbreviations are as follows and are case-insensitive: - - * "b" for bytes - * "kb" for kilobytes - * "mb" for megabytes - * "gb" for gigabytes - * "tb" for terabytes - -The units are in powers of two, not ten. This means 1kb = 1024b according to this parser. - -**Arguments** - -| Name | Type | Description | -|---------------|--------|--------------------| -| value | `string` | String to parse. | - -**Returns** - -| Name | Type | Description | -|---------|-------------|-------------------------| -| results | `number`|`null` | Return null upon error. Value in bytes otherwise. | - -**Example** - -```js -bytes('1kB'); -// output: 1024 - -bytes('1024'); -// output: 1024 -``` - -## Installation - -```bash -npm install bytes --save -component install visionmedia/bytes.js -``` - -## License - -[![npm](https://img.shields.io/npm/l/express.svg)](https://github.com/visionmedia/bytes.js/blob/master/LICENSE) - -[downloads-image]: https://img.shields.io/npm/dm/bytes.svg -[downloads-url]: https://npmjs.org/package/bytes -[npm-image]: https://img.shields.io/npm/v/bytes.svg -[npm-url]: https://npmjs.org/package/bytes -[travis-image]: https://img.shields.io/travis/visionmedia/bytes.js/master.svg -[travis-url]: https://travis-ci.org/visionmedia/bytes.js diff --git a/workshops/monte-carlo-on-ec2-spot-fleet/src/web/node_modules/bytes/index.js b/workshops/monte-carlo-on-ec2-spot-fleet/src/web/node_modules/bytes/index.js deleted file mode 100644 index aa24231b..00000000 --- a/workshops/monte-carlo-on-ec2-spot-fleet/src/web/node_modules/bytes/index.js +++ /dev/null @@ -1,157 +0,0 @@ -/*! - * bytes - * Copyright(c) 2012-2014 TJ Holowaychuk - * Copyright(c) 2015 Jed Watson - * MIT Licensed - */ - -'use strict'; - -/** - * Module exports. - * @public - */ - -module.exports = bytes; -module.exports.format = format; -module.exports.parse = parse; - -/** - * Module variables. - * @private - */ - -var formatThousandsRegExp = /\B(?=(\d{3})+(?!\d))/g; - -var formatDecimalsRegExp = /(?:\.0*|(\.[^0]+)0+)$/; - -var map = { - b: 1, - kb: 1 << 10, - mb: 1 << 20, - gb: 1 << 30, - tb: ((1 << 30) * 1024) -}; - -// TODO: use is-finite module? -var numberIsFinite = Number.isFinite || function (v) { return typeof v === 'number' && isFinite(v); }; - -var parseRegExp = /^((-|\+)?(\d+(?:\.\d+)?)) *(kb|mb|gb|tb)$/i; - -/** - * Convert the given value in bytes into a string or parse to string to an integer in bytes. - * - * @param {string|number} value - * @param {{ - * case: [string], - * decimalPlaces: [number] - * fixedDecimals: [boolean] - * thousandsSeparator: [string] - * unitSeparator: [string] - * }} [options] bytes options. - * - * @returns {string|number|null} - */ - -function bytes(value, options) { - if (typeof value === 'string') { - return parse(value); - } - - if (typeof value === 'number') { - return format(value, options); - } - - return null; -} - -/** - * Format the given value in bytes into a string. - * - * If the value is negative, it is kept as such. If it is a float, - * it is rounded. - * - * @param {number} value - * @param {object} [options] - * @param {number} [options.decimalPlaces=2] - * @param {number} [options.fixedDecimals=false] - * @param {string} [options.thousandsSeparator=] - * @param {string} [options.unitSeparator=] - * - * @returns {string|null} - * @public - */ - -function format(value, options) { - if (!numberIsFinite(value)) { - return null; - } - - var mag = Math.abs(value); - var thousandsSeparator = (options && options.thousandsSeparator) || ''; - var unitSeparator = (options && options.unitSeparator) || ''; - var decimalPlaces = (options && options.decimalPlaces !== undefined) ? options.decimalPlaces : 2; - var fixedDecimals = Boolean(options && options.fixedDecimals); - var unit = 'B'; - - if (mag >= map.tb) { - unit = 'TB'; - } else if (mag >= map.gb) { - unit = 'GB'; - } else if (mag >= map.mb) { - unit = 'MB'; - } else if (mag >= map.kb) { - unit = 'kB'; - } - - var val = value / map[unit.toLowerCase()]; - var str = val.toFixed(decimalPlaces); - - if (!fixedDecimals) { - str = str.replace(formatDecimalsRegExp, '$1'); - } - - if (thousandsSeparator) { - str = str.replace(formatThousandsRegExp, thousandsSeparator); - } - - return str + unitSeparator + unit; -} - -/** - * Parse the string value into an integer in bytes. - * - * If no unit is given, it is assumed the value is in bytes. - * - * @param {number|string} val - * - * @returns {number|null} - * @public - */ - -function parse(val) { - if (typeof val === 'number' && !isNaN(val)) { - return val; - } - - if (typeof val !== 'string') { - return null; - } - - // Test if the string passed is valid - var results = parseRegExp.exec(val); - var floatValue; - var unit = 'b'; - - if (!results) { - // Nothing could be extracted from the given string - floatValue = parseInt(val, 10); - unit = 'b' - } else { - // Retrieve the value and the unit - floatValue = parseFloat(results[1]); - unit = results[4].toLowerCase(); - } - - return Math.floor(map[unit] * floatValue); -} diff --git a/workshops/monte-carlo-on-ec2-spot-fleet/src/web/node_modules/bytes/package.json b/workshops/monte-carlo-on-ec2-spot-fleet/src/web/node_modules/bytes/package.json deleted file mode 100644 index bb36ad03..00000000 --- a/workshops/monte-carlo-on-ec2-spot-fleet/src/web/node_modules/bytes/package.json +++ /dev/null @@ -1,120 +0,0 @@ -{ - "_args": [ - [ - { - "raw": "bytes@2.4.0", - "scope": null, - "escapedName": "bytes", - "name": "bytes", - "rawSpec": "2.4.0", - "spec": "2.4.0", - "type": "version" - }, - "/Users/sdsteve/WebstormProjects/SpotLabNodejs/node_modules/body-parser" - ] - ], - "_from": "bytes@2.4.0", - "_id": "bytes@2.4.0", - "_inCache": true, - "_location": "/bytes", - "_npmOperationalInternal": { - "host": "packages-16-east.internal.npmjs.com", - "tmp": "tmp/bytes-2.4.0.tgz_1464812473023_0.6271433881483972" - }, - "_npmUser": { - "name": "dougwilson", - "email": "doug@somethingdoug.com" - }, - "_npmVersion": "1.4.28", - "_phantomChildren": {}, - "_requested": { - "raw": "bytes@2.4.0", - "scope": null, - "escapedName": "bytes", - "name": "bytes", - "rawSpec": "2.4.0", - "spec": "2.4.0", - "type": "version" - }, - "_requiredBy": [ - "/body-parser", - "/raw-body" - ], - "_resolved": "https://registry.npmjs.org/bytes/-/bytes-2.4.0.tgz", - "_shasum": "7d97196f9d5baf7f6935e25985549edd2a6c2339", - "_shrinkwrap": null, - "_spec": "bytes@2.4.0", - "_where": "/Users/sdsteve/WebstormProjects/SpotLabNodejs/node_modules/body-parser", - "author": { - "name": "TJ Holowaychuk", - "email": "tj@vision-media.ca", - "url": "http://tjholowaychuk.com" - }, - "bugs": { - "url": "https://github.com/visionmedia/bytes.js/issues" - }, - "component": { - "scripts": { - "bytes/index.js": "index.js" - } - }, - "contributors": [ - { - "name": "Jed Watson", - "email": "jed.watson@me.com" - }, - { - "name": "Théo FIDRY", - "email": "theo.fidry@gmail.com" - } - ], - "dependencies": {}, - "description": "Utility to parse a string bytes to bytes and vice-versa", - "devDependencies": { - "mocha": "1.21.5" - }, - "directories": {}, - "dist": { - "shasum": "7d97196f9d5baf7f6935e25985549edd2a6c2339", - "tarball": "https://registry.npmjs.org/bytes/-/bytes-2.4.0.tgz" - }, - "files": [ - "History.md", - "LICENSE", - "Readme.md", - "index.js" - ], - "gitHead": "2a598442bdfa796df8d01a96cc54495cda550e70", - "homepage": "https://github.com/visionmedia/bytes.js", - "keywords": [ - "byte", - "bytes", - "utility", - "parse", - "parser", - "convert", - "converter" - ], - "license": "MIT", - "maintainers": [ - { - "name": "dougwilson", - "email": "doug@somethingdoug.com" - }, - { - "name": "tjholowaychuk", - "email": "tj@vision-media.ca" - } - ], - "name": "bytes", - "optionalDependencies": {}, - "readme": "ERROR: No README data found!", - "repository": { - "type": "git", - "url": "git+https://github.com/visionmedia/bytes.js.git" - }, - "scripts": { - "test": "mocha --check-leaks --reporter spec" - }, - "version": "2.4.0" -} diff --git a/workshops/monte-carlo-on-ec2-spot-fleet/src/web/node_modules/camelcase/index.js b/workshops/monte-carlo-on-ec2-spot-fleet/src/web/node_modules/camelcase/index.js deleted file mode 100644 index b46e1009..00000000 --- a/workshops/monte-carlo-on-ec2-spot-fleet/src/web/node_modules/camelcase/index.js +++ /dev/null @@ -1,27 +0,0 @@ -'use strict'; -module.exports = function () { - var str = [].map.call(arguments, function (str) { - return str.trim(); - }).filter(function (str) { - return str.length; - }).join('-'); - - if (!str.length) { - return ''; - } - - if (str.length === 1 || !(/[_.\- ]+/).test(str) ) { - if (str[0] === str[0].toLowerCase() && str.slice(1) !== str.slice(1).toLowerCase()) { - return str; - } - - return str.toLowerCase(); - } - - return str - .replace(/^[_.\- ]+/, '') - .toLowerCase() - .replace(/[_.\- ]+(\w|$)/g, function (m, p1) { - return p1.toUpperCase(); - }); -}; diff --git a/workshops/monte-carlo-on-ec2-spot-fleet/src/web/node_modules/camelcase/license b/workshops/monte-carlo-on-ec2-spot-fleet/src/web/node_modules/camelcase/license deleted file mode 100644 index 654d0bfe..00000000 --- a/workshops/monte-carlo-on-ec2-spot-fleet/src/web/node_modules/camelcase/license +++ /dev/null @@ -1,21 +0,0 @@ -The MIT License (MIT) - -Copyright (c) Sindre Sorhus (sindresorhus.com) - -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, subject to the following conditions: - -The above copyright notice and this permission notice shall be included in -all copies or substantial portions of the Software. - -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. diff --git a/workshops/monte-carlo-on-ec2-spot-fleet/src/web/node_modules/camelcase/package.json b/workshops/monte-carlo-on-ec2-spot-fleet/src/web/node_modules/camelcase/package.json deleted file mode 100644 index 11c03135..00000000 --- a/workshops/monte-carlo-on-ec2-spot-fleet/src/web/node_modules/camelcase/package.json +++ /dev/null @@ -1,102 +0,0 @@ -{ - "_args": [ - [ - { - "raw": "camelcase@^1.0.2", - "scope": null, - "escapedName": "camelcase", - "name": "camelcase", - "rawSpec": "^1.0.2", - "spec": ">=1.0.2 <2.0.0", - "type": "range" - }, - "/Users/sdsteve/WebstormProjects/SpotLabNodejs/node_modules/yargs" - ] - ], - "_from": "camelcase@>=1.0.2 <2.0.0", - "_id": "camelcase@1.2.1", - "_inCache": true, - "_location": "/camelcase", - "_nodeVersion": "0.12.5", - "_npmUser": { - "name": "sindresorhus", - "email": "sindresorhus@gmail.com" - }, - "_npmVersion": "2.11.2", - "_phantomChildren": {}, - "_requested": { - "raw": "camelcase@^1.0.2", - "scope": null, - "escapedName": "camelcase", - "name": "camelcase", - "rawSpec": "^1.0.2", - "spec": ">=1.0.2 <2.0.0", - "type": "range" - }, - "_requiredBy": [ - "/yargs" - ], - "_resolved": "https://registry.npmjs.org/camelcase/-/camelcase-1.2.1.tgz", - "_shasum": "9bb5304d2e0b56698b2c758b08a3eaa9daa58a39", - "_shrinkwrap": null, - "_spec": "camelcase@^1.0.2", - "_where": "/Users/sdsteve/WebstormProjects/SpotLabNodejs/node_modules/yargs", - "author": { - "name": "Sindre Sorhus", - "email": "sindresorhus@gmail.com", - "url": "http://sindresorhus.com" - }, - "bugs": { - "url": "https://github.com/sindresorhus/camelcase/issues" - }, - "dependencies": {}, - "description": "Convert a dash/dot/underscore/space separated string to camelCase: foo-bar → fooBar", - "devDependencies": { - "ava": "0.0.4" - }, - "directories": {}, - "dist": { - "shasum": "9bb5304d2e0b56698b2c758b08a3eaa9daa58a39", - "tarball": "https://registry.npmjs.org/camelcase/-/camelcase-1.2.1.tgz" - }, - "engines": { - "node": ">=0.10.0" - }, - "files": [ - "index.js" - ], - "gitHead": "185ba12da723be9c1ee986cc2956bdc4c517a141", - "homepage": "https://github.com/sindresorhus/camelcase", - "keywords": [ - "camelcase", - "camel-case", - "camel", - "case", - "dash", - "hyphen", - "dot", - "underscore", - "separator", - "string", - "text", - "convert" - ], - "license": "MIT", - "maintainers": [ - { - "name": "sindresorhus", - "email": "sindresorhus@gmail.com" - } - ], - "name": "camelcase", - "optionalDependencies": {}, - "readme": "ERROR: No README data found!", - "repository": { - "type": "git", - "url": "git+https://github.com/sindresorhus/camelcase.git" - }, - "scripts": { - "test": "node test.js" - }, - "version": "1.2.1" -} diff --git a/workshops/monte-carlo-on-ec2-spot-fleet/src/web/node_modules/camelcase/readme.md b/workshops/monte-carlo-on-ec2-spot-fleet/src/web/node_modules/camelcase/readme.md deleted file mode 100644 index 516dc398..00000000 --- a/workshops/monte-carlo-on-ec2-spot-fleet/src/web/node_modules/camelcase/readme.md +++ /dev/null @@ -1,56 +0,0 @@ -# camelcase [![Build Status](https://travis-ci.org/sindresorhus/camelcase.svg?branch=master)](https://travis-ci.org/sindresorhus/camelcase) - -> Convert a dash/dot/underscore/space separated string to camelCase: `foo-bar` → `fooBar` - - -## Install - -```sh -$ npm install --save camelcase -``` - - -## Usage - -```js -var camelCase = require('camelcase'); - -camelCase('foo-bar'); -//=> fooBar - -camelCase('foo_bar'); -//=> fooBar - -camelCase('Foo-Bar'); -//=> fooBar - -camelCase('--foo.bar'); -//=> fooBar - -camelCase('__foo__bar__'); -//=> fooBar - -camelCase('foo bar'); -//=> fooBar - -console.log(process.argv[3]); -//=> --foo-bar -camelCase(process.argv[3]); -//=> fooBar - -camelCase('foo', 'bar'); -//=> fooBar - -camelCase('__foo__', '--bar'); -//=> fooBar -``` - - -## Related - -See [`decamelize`](https://github.com/sindresorhus/decamelize) for the inverse. - - -## License - -MIT © [Sindre Sorhus](http://sindresorhus.com) diff --git a/workshops/monte-carlo-on-ec2-spot-fleet/src/web/node_modules/center-align/LICENSE b/workshops/monte-carlo-on-ec2-spot-fleet/src/web/node_modules/center-align/LICENSE deleted file mode 100644 index 65f90aca..00000000 --- a/workshops/monte-carlo-on-ec2-spot-fleet/src/web/node_modules/center-align/LICENSE +++ /dev/null @@ -1,21 +0,0 @@ -The MIT License (MIT) - -Copyright (c) 2015, Jon Schlinkert. - -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, subject to the following conditions: - -The above copyright notice and this permission notice shall be included in -all copies or substantial portions of the Software. - -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. diff --git a/workshops/monte-carlo-on-ec2-spot-fleet/src/web/node_modules/center-align/README.md b/workshops/monte-carlo-on-ec2-spot-fleet/src/web/node_modules/center-align/README.md deleted file mode 100644 index cbcf3bef..00000000 --- a/workshops/monte-carlo-on-ec2-spot-fleet/src/web/node_modules/center-align/README.md +++ /dev/null @@ -1,74 +0,0 @@ -# center-align [![NPM version](https://badge.fury.io/js/center-align.svg)](http://badge.fury.io/js/center-align) - -> Center-align the text in a string. - -Install with [npm](https://www.npmjs.com/) - -```sh -$ npm i center-align --save -``` - -## Usage - -```js -var centerAlign = require('center-align'); -``` - -**Example** - -If used on the following: - -``` -Lorem ipsum dolor sit amet, -consectetur adipiscing -elit, sed do eiusmod tempor incididunt -ut labore et dolore -magna aliqua. Ut enim ad minim -veniam, quis -``` - -The result would be: - -``` - Lorem ipsum dolor sit amet, - consectetur adipiscing -elit, sed do eiusmod tempor incididunt - ut labore et dolore - magna aliqua. Ut enim ad minim - veniam, quis -``` - -## Related projects - -* [align-text](https://www.npmjs.com/package/align-text): Align the text in a string. | [homepage](https://github.com/jonschlinkert/align-text) -* [justified](https://www.npmjs.com/package/justified): Wrap words to a specified length and justified the text. | [homepage](https://github.com/jonschlinkert/justified) -* [right-align](https://www.npmjs.com/package/right-align): Right-align the text in a string. | [homepage](https://github.com/jonschlinkert/right-align) -* [word-wrap](https://www.npmjs.com/package/word-wrap): Wrap words to a specified length. | [homepage](https://github.com/jonschlinkert/word-wrap) - -## Running tests - -Install dev dependencies: - -```sh -$ npm i -d && npm test -``` - -## Contributing - -Pull requests and stars are always welcome. For bugs and feature requests, [please create an issue](https://github.com/jonschlinkert/center-align/issues/new). - -## Author - -**Jon Schlinkert** - -+ [github/jonschlinkert](https://github.com/jonschlinkert) -+ [twitter/jonschlinkert](http://twitter.com/jonschlinkert) - -## License - -Copyright © 2015 Jon Schlinkert -Released under the MIT license. - -*** - -_This file was generated by [verb-cli](https://github.com/assemble/verb-cli) on October 27, 2015._ \ No newline at end of file diff --git a/workshops/monte-carlo-on-ec2-spot-fleet/src/web/node_modules/center-align/index.js b/workshops/monte-carlo-on-ec2-spot-fleet/src/web/node_modules/center-align/index.js deleted file mode 100644 index c6ed54a9..00000000 --- a/workshops/monte-carlo-on-ec2-spot-fleet/src/web/node_modules/center-align/index.js +++ /dev/null @@ -1,16 +0,0 @@ -/*! - * center-align - * - * Copycenter (c) 2015, Jon Schlinkert. - * Licensed under the MIT License. - */ - -'use strict'; - -var utils = require('./utils'); - -module.exports = function centerAlign(val) { - return utils.align(val, function (len, longest) { - return Math.floor((longest - len) / 2); - }); -}; diff --git a/workshops/monte-carlo-on-ec2-spot-fleet/src/web/node_modules/center-align/package.json b/workshops/monte-carlo-on-ec2-spot-fleet/src/web/node_modules/center-align/package.json deleted file mode 100644 index 858d8eb4..00000000 --- a/workshops/monte-carlo-on-ec2-spot-fleet/src/web/node_modules/center-align/package.json +++ /dev/null @@ -1,121 +0,0 @@ -{ - "_args": [ - [ - { - "raw": "center-align@^0.1.1", - "scope": null, - "escapedName": "center-align", - "name": "center-align", - "rawSpec": "^0.1.1", - "spec": ">=0.1.1 <0.2.0", - "type": "range" - }, - "/Users/sdsteve/WebstormProjects/SpotLabNodejs/node_modules/cliui" - ] - ], - "_from": "center-align@>=0.1.1 <0.2.0", - "_id": "center-align@0.1.3", - "_inCache": true, - "_location": "/center-align", - "_nodeVersion": "5.3.0", - "_npmOperationalInternal": { - "host": "packages-9-west.internal.npmjs.com", - "tmp": "tmp/center-align-0.1.3.tgz_1454366538829_0.9471865000668913" - }, - "_npmUser": { - "name": "jonschlinkert", - "email": "github@sellside.com" - }, - "_npmVersion": "3.3.12", - "_phantomChildren": {}, - "_requested": { - "raw": "center-align@^0.1.1", - "scope": null, - "escapedName": "center-align", - "name": "center-align", - "rawSpec": "^0.1.1", - "spec": ">=0.1.1 <0.2.0", - "type": "range" - }, - "_requiredBy": [ - "/cliui" - ], - "_resolved": "https://registry.npmjs.org/center-align/-/center-align-0.1.3.tgz", - "_shasum": "aa0d32629b6ee972200411cbd4461c907bc2b7ad", - "_shrinkwrap": null, - "_spec": "center-align@^0.1.1", - "_where": "/Users/sdsteve/WebstormProjects/SpotLabNodejs/node_modules/cliui", - "author": { - "name": "Jon Schlinkert", - "url": "https://github.com/jonschlinkert" - }, - "bugs": { - "url": "https://github.com/jonschlinkert/center-align/issues" - }, - "dependencies": { - "align-text": "^0.1.3", - "lazy-cache": "^1.0.3" - }, - "description": "Center-align the text in a string.", - "devDependencies": { - "mocha": "^2.2.0" - }, - "directories": {}, - "dist": { - "shasum": "aa0d32629b6ee972200411cbd4461c907bc2b7ad", - "tarball": "https://registry.npmjs.org/center-align/-/center-align-0.1.3.tgz" - }, - "engines": { - "node": ">=0.10.0" - }, - "files": [ - "index.js", - "utils.js" - ], - "gitHead": "5c5fab5012fceaa3e21a00162958c0ed11109419", - "homepage": "https://github.com/jonschlinkert/center-align", - "keywords": [ - "align", - "align-center", - "center", - "center-align", - "right", - "right-align", - "text", - "typography" - ], - "license": "MIT", - "main": "index.js", - "maintainers": [ - { - "name": "doowb", - "email": "brian.woodward@gmail.com" - }, - { - "name": "jonschlinkert", - "email": "github@sellside.com" - } - ], - "name": "center-align", - "optionalDependencies": {}, - "readme": "ERROR: No README data found!", - "repository": { - "type": "git", - "url": "git+https://github.com/jonschlinkert/center-align.git" - }, - "scripts": { - "test": "mocha" - }, - "verb": { - "related": { - "description": "", - "list": [ - "align-text", - "right-align", - "justified", - "word-wrap" - ] - } - }, - "version": "0.1.3" -} diff --git a/workshops/monte-carlo-on-ec2-spot-fleet/src/web/node_modules/center-align/utils.js b/workshops/monte-carlo-on-ec2-spot-fleet/src/web/node_modules/center-align/utils.js deleted file mode 100644 index aead6d2f..00000000 --- a/workshops/monte-carlo-on-ec2-spot-fleet/src/web/node_modules/center-align/utils.js +++ /dev/null @@ -1,40 +0,0 @@ -'use strict'; - -/** - * Lazily-required module dependencies (makes the application - * faster) - */ - -var utils = require('lazy-cache')(require); - -/** - * Temporarily re-assign `require` to trick browserify and - * webpack into reconizing lazy dependencies. - * - * This tiny bit of ugliness has the huge dual advantage of - * only loading modules that are actually called at some - * point in the lifecycle of the application, whilst also - * allowing browserify and webpack to find modules that - * are depended on but never actually called. - */ - -var fn = require; -require = utils; - -/** - * Lazily required module dependencies - */ - -require('align-text', 'align'); - -/** - * Restore `require` - */ - -require = fn; - -/** - * Expose `utils` modules - */ - -module.exports = utils; diff --git a/workshops/monte-carlo-on-ec2-spot-fleet/src/web/node_modules/character-parser/.npmignore b/workshops/monte-carlo-on-ec2-spot-fleet/src/web/node_modules/character-parser/.npmignore deleted file mode 100644 index 2a721743..00000000 --- a/workshops/monte-carlo-on-ec2-spot-fleet/src/web/node_modules/character-parser/.npmignore +++ /dev/null @@ -1,2 +0,0 @@ -test/ -.travis.yml \ No newline at end of file diff --git a/workshops/monte-carlo-on-ec2-spot-fleet/src/web/node_modules/character-parser/LICENSE b/workshops/monte-carlo-on-ec2-spot-fleet/src/web/node_modules/character-parser/LICENSE deleted file mode 100644 index 2ecc0d14..00000000 --- a/workshops/monte-carlo-on-ec2-spot-fleet/src/web/node_modules/character-parser/LICENSE +++ /dev/null @@ -1,19 +0,0 @@ -Copyright (c) 2013 Forbes Lindesay - -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, subject to the following conditions: - -The above copyright notice and this permission notice shall be included in -all copies or substantial portions of the Software. - -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. diff --git a/workshops/monte-carlo-on-ec2-spot-fleet/src/web/node_modules/character-parser/README.md b/workshops/monte-carlo-on-ec2-spot-fleet/src/web/node_modules/character-parser/README.md deleted file mode 100644 index 1ea31364..00000000 --- a/workshops/monte-carlo-on-ec2-spot-fleet/src/web/node_modules/character-parser/README.md +++ /dev/null @@ -1,142 +0,0 @@ -# character-parser - -Parse JavaScript one character at a time to look for snippets in Templates. This is not a validator, it's just designed to allow you to have sections of JavaScript delimited by brackets robustly. - -[![Build Status](https://img.shields.io/travis/ForbesLindesay/character-parser/master.svg)](https://travis-ci.org/ForbesLindesay/character-parser) - -## Installation - - npm install character-parser - -## Usage - -Work out how much depth changes: - -```js -var state = parse('foo(arg1, arg2, {\n foo: [a, b\n'); -assert(state.roundDepth === 1); -assert(state.curlyDepth === 1); -assert(state.squareDepth === 1); -parse(' c, d]\n })', state); -assert(state.squareDepth === 0); -assert(state.curlyDepth === 0); -assert(state.roundDepth === 0); -``` - -### Bracketed Expressions - -Find all the contents of a bracketed expression: - -```js -var section = parser.parseMax('foo="(", bar="}") bing bong'); -assert(section.start === 0); -assert(section.end === 16);//exclusive end of string -assert(section.src = 'foo="(", bar="}"'); - - -var section = parser.parseMax('{foo="(", bar="}"} bing bong', {start: 1}); -assert(section.start === 1); -assert(section.end === 17);//exclusive end of string -assert(section.src = 'foo="(", bar="}"'); -``` - -The bracketed expression parsing simply parses up to but excluding the first unmatched closed bracket (`)`, `}`, `]`). It is clever enough to ignore brackets in comments or strings. - - -### Custom Delimited Expressions - -Find code up to a custom delimiter: - -```js -var section = parser.parseUntil('foo.bar("%>").baz%> bing bong', '%>'); -assert(section.start === 0); -assert(section.end === 17);//exclusive end of string -assert(section.src = 'foo.bar("%>").baz'); - -var section = parser.parseUntil('<%foo.bar("%>").baz%> bing bong', '%>', {start: 2}); -assert(section.start === 2); -assert(section.end === 19);//exclusive end of string -assert(section.src = 'foo.bar("%>").baz'); -``` - -Delimiters are ignored if they are inside strings or comments. - -## API - -### parse(str, state = defaultState(), options = {start: 0, end: src.length}) - -Parse a string starting at the index start, and return the state after parsing that string. - -If you want to parse one string in multiple sections you should keep passing the resulting state to the next parse operation. - -Returns a `State` object. - -### parseMax(src, options = {start: 0}) - -Parses the source until the first unmatched close bracket (any of `)`, `}`, `]`). It returns an object with the structure: - -```js -{ - start: 0,//index of first character of string - end: 13,//index of first character after the end of string - src: 'source string' -} -``` - -### parseUntil(src, delimiter, options = {start: 0, includeLineComment: false}) - -Parses the source until the first occurence of `delimiter` which is not in a string or a comment. If `includeLineComment` is `true`, it will still count if the delimiter occurs in a line comment, but not in a block comment. It returns an object with the structure: - -```js -{ - start: 0,//index of first character of string - end: 13,//index of first character after the end of string - src: 'source string' -} -``` - -### parseChar(character, state = defaultState()) - -Parses the single character and returns the state. See `parse` for the structure of the returned state object. N.B. character must be a single character not a multi character string. - -### defaultState() - -Get a default starting state. - -### isPunctuator(character) - -Returns `true` if `character` represents punctuation in JavaScript. - -### isKeyword(name) - -Returns `true` if `name` is a keyword in JavaScript. - -## State - -A state is an object with the following structure - -```js -{ - lineComment: false, //true if inside a line comment - blockComment: false, //true if inside a block comment - - singleQuote: false, //true if inside a single quoted string - doubleQuote: false, //true if inside a double quoted string - regexp: false, //true if inside a regular expression - escaped: false, //true if in a string and the last character was an escape character - - roundDepth: 0, //number of un-closed open `(` brackets - curlyDepth: 0, //number of un-closed open `{` brackets - squareDepth: 0 //number of un-closed open `[` brackets -} -``` - -It also has the following useful methods: - -- `.isString()` returns `true` if the current location is inside a string. -- `.isComment()` returns `true` if the current location is inside a comment. -- `isNesting()` returns `true` if the current location is anything but at the top level, i.e. with no nesting. - -## License - -MIT \ No newline at end of file diff --git a/workshops/monte-carlo-on-ec2-spot-fleet/src/web/node_modules/character-parser/index.js b/workshops/monte-carlo-on-ec2-spot-fleet/src/web/node_modules/character-parser/index.js deleted file mode 100644 index 08afbcd4..00000000 --- a/workshops/monte-carlo-on-ec2-spot-fleet/src/web/node_modules/character-parser/index.js +++ /dev/null @@ -1,231 +0,0 @@ -exports = (module.exports = parse); -exports.parse = parse; -function parse(src, state, options) { - options = options || {}; - state = state || exports.defaultState(); - var start = options.start || 0; - var end = options.end || src.length; - var index = start; - while (index < end) { - if (state.roundDepth < 0 || state.curlyDepth < 0 || state.squareDepth < 0) { - throw new SyntaxError('Mismatched Bracket: ' + src[index - 1]); - } - exports.parseChar(src[index++], state); - } - return state; -} - -exports.parseMax = parseMax; -function parseMax(src, options) { - options = options || {}; - var start = options.start || 0; - var index = start; - var state = exports.defaultState(); - while (state.roundDepth >= 0 && state.curlyDepth >= 0 && state.squareDepth >= 0) { - if (index >= src.length) { - throw new Error('The end of the string was reached with no closing bracket found.'); - } - exports.parseChar(src[index++], state); - } - var end = index - 1; - return { - start: start, - end: end, - src: src.substring(start, end) - }; -} - -exports.parseUntil = parseUntil; -function parseUntil(src, delimiter, options) { - options = options || {}; - var includeLineComment = options.includeLineComment || false; - var start = options.start || 0; - var index = start; - var state = exports.defaultState(); - while (state.isString() || state.regexp || state.blockComment || - (!includeLineComment && state.lineComment) || !startsWith(src, delimiter, index)) { - exports.parseChar(src[index++], state); - } - var end = index; - return { - start: start, - end: end, - src: src.substring(start, end) - }; -} - - -exports.parseChar = parseChar; -function parseChar(character, state) { - if (character.length !== 1) throw new Error('Character must be a string of length 1'); - state = state || exports.defaultState(); - state.src = state.src || ''; - state.src += character; - var wasComment = state.blockComment || state.lineComment; - var lastChar = state.history ? state.history[0] : ''; - - if (state.regexpStart) { - if (character === '/' || character == '*') { - state.regexp = false; - } - state.regexpStart = false; - } - if (state.lineComment) { - if (character === '\n') { - state.lineComment = false; - } - } else if (state.blockComment) { - if (state.lastChar === '*' && character === '/') { - state.blockComment = false; - } - } else if (state.singleQuote) { - if (character === '\'' && !state.escaped) { - state.singleQuote = false; - } else if (character === '\\' && !state.escaped) { - state.escaped = true; - } else { - state.escaped = false; - } - } else if (state.doubleQuote) { - if (character === '"' && !state.escaped) { - state.doubleQuote = false; - } else if (character === '\\' && !state.escaped) { - state.escaped = true; - } else { - state.escaped = false; - } - } else if (state.regexp) { - if (character === '/' && !state.escaped) { - state.regexp = false; - } else if (character === '\\' && !state.escaped) { - state.escaped = true; - } else { - state.escaped = false; - } - } else if (lastChar === '/' && character === '/') { - state.history = state.history.substr(1); - state.lineComment = true; - } else if (lastChar === '/' && character === '*') { - state.history = state.history.substr(1); - state.blockComment = true; - } else if (character === '/' && isRegexp(state.history)) { - state.regexp = true; - state.regexpStart = true; - } else if (character === '\'') { - state.singleQuote = true; - } else if (character === '"') { - state.doubleQuote = true; - } else if (character === '(') { - state.roundDepth++; - } else if (character === ')') { - state.roundDepth--; - } else if (character === '{') { - state.curlyDepth++; - } else if (character === '}') { - state.curlyDepth--; - } else if (character === '[') { - state.squareDepth++; - } else if (character === ']') { - state.squareDepth--; - } - if (!state.blockComment && !state.lineComment && !wasComment) state.history = character + state.history; - state.lastChar = character; // store last character for ending block comments - return state; -} - -exports.defaultState = function () { return new State() }; -function State() { - this.lineComment = false; - this.blockComment = false; - - this.singleQuote = false; - this.doubleQuote = false; - this.regexp = false; - - this.escaped = false; - - this.roundDepth = 0; - this.curlyDepth = 0; - this.squareDepth = 0; - - this.history = '' - this.lastChar = '' -} -State.prototype.isString = function () { - return this.singleQuote || this.doubleQuote; -} -State.prototype.isComment = function () { - return this.lineComment || this.blockComment; -} -State.prototype.isNesting = function () { - return this.isString() || this.isComment() || this.regexp || this.roundDepth > 0 || this.curlyDepth > 0 || this.squareDepth > 0 -} - -function startsWith(str, start, i) { - return str.substr(i || 0, start.length) === start; -} - -exports.isPunctuator = isPunctuator -function isPunctuator(c) { - if (!c) return true; // the start of a string is a punctuator - var code = c.charCodeAt(0) - - switch (code) { - case 46: // . dot - case 40: // ( open bracket - case 41: // ) close bracket - case 59: // ; semicolon - case 44: // , comma - case 123: // { open curly brace - case 125: // } close curly brace - case 91: // [ - case 93: // ] - case 58: // : - case 63: // ? - case 126: // ~ - case 37: // % - case 38: // & - case 42: // *: - case 43: // + - case 45: // - - case 47: // / - case 60: // < - case 62: // > - case 94: // ^ - case 124: // | - case 33: // ! - case 61: // = - return true; - default: - return false; - } -} -exports.isKeyword = isKeyword -function isKeyword(id) { - return (id === 'if') || (id === 'in') || (id === 'do') || (id === 'var') || (id === 'for') || (id === 'new') || - (id === 'try') || (id === 'let') || (id === 'this') || (id === 'else') || (id === 'case') || - (id === 'void') || (id === 'with') || (id === 'enum') || (id === 'while') || (id === 'break') || (id === 'catch') || - (id === 'throw') || (id === 'const') || (id === 'yield') || (id === 'class') || (id === 'super') || - (id === 'return') || (id === 'typeof') || (id === 'delete') || (id === 'switch') || (id === 'export') || - (id === 'import') || (id === 'default') || (id === 'finally') || (id === 'extends') || (id === 'function') || - (id === 'continue') || (id === 'debugger') || (id === 'package') || (id === 'private') || (id === 'interface') || - (id === 'instanceof') || (id === 'implements') || (id === 'protected') || (id === 'public') || (id === 'static') || - (id === 'yield') || (id === 'let'); -} - -function isRegexp(history) { - //could be start of regexp or divide sign - - history = history.replace(/^\s*/, ''); - - //unless its an `if`, `while`, `for` or `with` it's a divide, so we assume it's a divide - if (history[0] === ')') return false; - //unless it's a function expression, it's a regexp, so we assume it's a regexp - if (history[0] === '}') return true; - //any punctuation means it's a regexp - if (isPunctuator(history[0])) return true; - //if the last thing was a keyword then it must be a regexp (e.g. `typeof /foo/`) - if (/^\w+\b/.test(history) && isKeyword(/^\w+\b/.exec(history)[0].split('').reverse().join(''))) return true; - - return false; -} diff --git a/workshops/monte-carlo-on-ec2-spot-fleet/src/web/node_modules/character-parser/package.json b/workshops/monte-carlo-on-ec2-spot-fleet/src/web/node_modules/character-parser/package.json deleted file mode 100644 index b8e27d7c..00000000 --- a/workshops/monte-carlo-on-ec2-spot-fleet/src/web/node_modules/character-parser/package.json +++ /dev/null @@ -1,90 +0,0 @@ -{ - "_args": [ - [ - { - "raw": "character-parser@1.2.1", - "scope": null, - "escapedName": "character-parser", - "name": "character-parser", - "rawSpec": "1.2.1", - "spec": "1.2.1", - "type": "version" - }, - "/Users/sdsteve/WebstormProjects/SpotLabNodejs/node_modules/jade" - ] - ], - "_from": "character-parser@1.2.1", - "_id": "character-parser@1.2.1", - "_inCache": true, - "_location": "/character-parser", - "_npmUser": { - "name": "forbeslindesay", - "email": "forbes@lindeay.co.uk" - }, - "_npmVersion": "1.4.3", - "_phantomChildren": {}, - "_requested": { - "raw": "character-parser@1.2.1", - "scope": null, - "escapedName": "character-parser", - "name": "character-parser", - "rawSpec": "1.2.1", - "spec": "1.2.1", - "type": "version" - }, - "_requiredBy": [ - "/jade" - ], - "_resolved": "https://registry.npmjs.org/character-parser/-/character-parser-1.2.1.tgz", - "_shasum": "c0dde4ab182713b919b970959a123ecc1a30fcd6", - "_shrinkwrap": null, - "_spec": "character-parser@1.2.1", - "_where": "/Users/sdsteve/WebstormProjects/SpotLabNodejs/node_modules/jade", - "author": { - "name": "ForbesLindesay" - }, - "bugs": { - "url": "https://github.com/ForbesLindesay/character-parser/issues" - }, - "dependencies": {}, - "description": "Parse JavaScript one character at a time to look for snippets in Templates. This is not a validator, it's just designed to allow you to have sections of JavaScript delimited by brackets robustly.", - "devDependencies": { - "better-assert": "~1.0.0", - "mocha": "~1.9.0" - }, - "directories": {}, - "dist": { - "shasum": "c0dde4ab182713b919b970959a123ecc1a30fcd6", - "tarball": "https://registry.npmjs.org/character-parser/-/character-parser-1.2.1.tgz" - }, - "homepage": "https://github.com/ForbesLindesay/character-parser", - "keywords": [ - "parser", - "JavaScript", - "bracket", - "nesting", - "comment", - "string", - "escape", - "escaping" - ], - "license": "MIT", - "main": "index.js", - "maintainers": [ - { - "name": "forbeslindesay", - "email": "forbes@lindesay.co.uk" - } - ], - "name": "character-parser", - "optionalDependencies": {}, - "readme": "ERROR: No README data found!", - "repository": { - "type": "git", - "url": "git+https://github.com/ForbesLindesay/character-parser.git" - }, - "scripts": { - "test": "mocha -R spec" - }, - "version": "1.2.1" -} diff --git a/workshops/monte-carlo-on-ec2-spot-fleet/src/web/node_modules/clean-css/History.md b/workshops/monte-carlo-on-ec2-spot-fleet/src/web/node_modules/clean-css/History.md deleted file mode 100644 index 2d6a203f..00000000 --- a/workshops/monte-carlo-on-ec2-spot-fleet/src/web/node_modules/clean-css/History.md +++ /dev/null @@ -1,1138 +0,0 @@ -[3.4.28 / 2017-07-14](https://github.com/jakubpawlowicz/clean-css/compare/v3.4.27...v3.4.28) -================== - -* Backports [#957](https://github.com/jakubpawlowicz/clean-css/issues/957) - `0%` minification of `width` property. - -[3.4.27 / 2017-06-09](https://github.com/jakubpawlowicz/clean-css/compare/v3.4.26...v3.4.27) -================== - -* Fixes [#948](https://github.com/jakubpawlowicz/clean-css/issues/948) - enforces line break before source map comment. - -[3.4.26 / 2017-05-10](https://github.com/jakubpawlowicz/clean-css/compare/v3.4.25...v3.4.26) -================== - -* Backports [#939](https://github.com/jakubpawlowicz/clean-css/issues/939) - semicolon after `@apply` at-rule. - -[3.4.25 / 2017-02-22](https://github.com/jakubpawlowicz/clean-css/compare/v3.4.24...v3.4.25) -================== - -* Fixed issue [#897](https://github.com/jakubpawlowicz/clean-css/issues/897) - tokenization with escaped markers. - -[3.4.24 / 2017-01-20](https://github.com/jakubpawlowicz/clean-css/compare/v3.4.23...v3.4.24) -================== - -* Fixed issue [#859](https://github.com/jakubpawlowicz/clean-css/issues/859) - avoid `-webkit-border-radius` optimizations. - -[3.4.23 / 2016-12-17](https://github.com/jakubpawlowicz/clean-css/compare/v3.4.22...v3.4.23) -================== - -* Fixed issue [#844](https://github.com/jakubpawlowicz/clean-css/issues/844) - regression in property values extraction. - -[3.4.22 / 2016-12-12](https://github.com/jakubpawlowicz/clean-css/compare/v3.4.21...v3.4.22) -================== - -* Fixed issue [#841](https://github.com/jakubpawlowicz/clean-css/issues/841) - disabled importing and files passed as array. -* Ignores `@import` at-rules if appearing after any non-`@import` rules. - -[3.4.21 / 2016-11-16](https://github.com/jakubpawlowicz/clean-css/compare/v3.4.20...v3.4.21) -================== - -* Fixed issue [#821](https://github.com/jakubpawlowicz/clean-css/issues/821) - reducing non-adjacent rules. -* Fixed issue [#830](https://github.com/jakubpawlowicz/clean-css/issues/830) - reordering border-* properties. -* Fixed issue [#833](https://github.com/jakubpawlowicz/clean-css/issues/833) - moving `@media` queries. - -[3.4.20 / 2016-09-26](https://github.com/jakubpawlowicz/clean-css/compare/v3.4.19...v3.4.20) -================== - -* Fixed issue [#814](https://github.com/jakubpawlowicz/clean-css/issues/814) - `:selection` rule merging. - -[3.4.19 / 2016-07-25](https://github.com/jakubpawlowicz/clean-css/compare/v3.4.18...v3.4.19) -================== - -* Fixed issue [#795](https://github.com/jakubpawlowicz/clean-css/issues/795) - `!important` and override compacting. - -[3.4.18 / 2016-06-15](https://github.com/jakubpawlowicz/clean-css/compare/v3.4.17...v3.4.18) -================== - -* Fixed issue [#787](https://github.com/jakubpawlowicz/clean-css/issues/787) - regression in processing data URIs. - -[3.4.17 / 2016-06-04](https://github.com/jakubpawlowicz/clean-css/compare/v3.4.16...v3.4.17) -================== - -* Fixed issue [#783](https://github.com/jakubpawlowicz/clean-css/issues/783) - regression in processing data URIs. - -[3.4.16 / 2016-06-02](https://github.com/jakubpawlowicz/clean-css/compare/v3.4.15...v3.4.16) -================== - -* Fixed issue [#781](https://github.com/jakubpawlowicz/clean-css/issues/781) - regression in override compacting. -* Fixed issue [#782](https://github.com/jakubpawlowicz/clean-css/issues/782) - regression in processing data URIs. - -[3.4.15 / 2016-06-01](https://github.com/jakubpawlowicz/clean-css/compare/v3.4.14...v3.4.15) -================== - -* Fixed issue [#776](https://github.com/jakubpawlowicz/clean-css/issues/776) - edge case in quoted data URIs. -* Fixed issue [#779](https://github.com/jakubpawlowicz/clean-css/issues/779) - merging `background-(position|size)`. -* Fixed issue [#780](https://github.com/jakubpawlowicz/clean-css/issues/780) - space after inlined variables. - -[3.4.14 / 2016-05-31](https://github.com/jakubpawlowicz/clean-css/compare/v3.4.13...v3.4.14) -================== - -* Fixed issue [#751](https://github.com/jakubpawlowicz/clean-css/issues/751) - stringifying CSS variables. -* Fixed issue [#763](https://github.com/jakubpawlowicz/clean-css/issues/763) - data URI SVG and quoting. -* Fixed issue [#765](https://github.com/jakubpawlowicz/clean-css/issues/765) - two values of border-radius. -* Fixed issue [#768](https://github.com/jakubpawlowicz/clean-css/issues/768) - invalid border-radius property. - -[3.4.13 / 2016-05-23](https://github.com/jakubpawlowicz/clean-css/compare/v3.4.12...v3.4.13) -================== - -* Fixed issue [#734](https://github.com/jakubpawlowicz/clean-css/issues/769) - Node.js 6.x support. - -[3.4.12 / 2016-04-09](https://github.com/jakubpawlowicz/clean-css/compare/v3.4.11...v3.4.12) -================== - -* Fixed issue [#734](https://github.com/jakubpawlowicz/clean-css/issues/734) - `--root` option edge case. -* Fixed issue [#758](https://github.com/jakubpawlowicz/clean-css/issues/758) - treats empty rule as unmergeable. - -[3.4.11 / 2016-04-01](https://github.com/jakubpawlowicz/clean-css/compare/v3.4.10...v3.4.11) -================== - -* Fixed issue [#738](https://github.com/jakubpawlowicz/clean-css/issues/738) - edge case in comment processing. -* Fixed issue [#741](https://github.com/jakubpawlowicz/clean-css/issues/741) - HTTP proxy with HTTPS inlining. -* Fixed issue [#743](https://github.com/jakubpawlowicz/clean-css/issues/743) - background shorthand and source maps. -* Fixed issue [#745](https://github.com/jakubpawlowicz/clean-css/issues/745) - matching mixed case `!important`. - -[3.4.10 / 2016-02-29](https://github.com/jakubpawlowicz/clean-css/compare/v3.4.9...v3.4.10) -================== - -* Fixed issue [#735](https://github.com/jakubpawlowicz/clean-css/issues/735) - whitespace removal with escaped chars. - -[3.4.9 / 2016-01-03](https://github.com/jakubpawlowicz/clean-css/compare/v3.4.8...v3.4.9) -================== - -* Sped up merging by body advanced optimization. -* Fixed issue [#693](https://github.com/jakubpawlowicz/clean-css/issues/693) - restructuring edge case. -* Fixed issue [#711](https://github.com/jakubpawlowicz/clean-css/issues/711) - border fuzzy matching. -* Fixed issue [#714](https://github.com/jakubpawlowicz/clean-css/issues/714) - stringifying property level at rules. -* Fixed issue [#715](https://github.com/jakubpawlowicz/clean-css/issues/715) - stack too deep in comment scan. - -[3.4.8 / 2015-11-13](https://github.com/jakubpawlowicz/clean-css/compare/v3.4.7...v3.4.8) -================== - -* Fixed issue [#676](https://github.com/jakubpawlowicz/clean-css/issues/676) - fuzzy matching unqoted data URIs. - -[3.4.7 / 2015-11-10](https://github.com/jakubpawlowicz/clean-css/compare/v3.4.6...v3.4.7) -================== - -* Fixed issue [#692](https://github.com/jakubpawlowicz/clean-css/issues/692) - edge case in URL quoting. -* Fixed issue [#695](https://github.com/jakubpawlowicz/clean-css/issues/695) - shorthand overriding edge case. -* Fixed issue [#699](https://github.com/jakubpawlowicz/clean-css/issues/699) - IE9 transparent hack. -* Fixed issue [#701](https://github.com/jakubpawlowicz/clean-css/issues/701) - `url` quoting with hash arguments. - -[3.4.6 / 2015-10-14](https://github.com/jakubpawlowicz/clean-css/compare/v3.4.5...v3.4.6) -================== - -* Fixed issue [#679](https://github.com/jakubpawlowicz/clean-css/issues/679) - wrong rebasing of remote URLs. - -[3.4.5 / 2015-09-28](https://github.com/jakubpawlowicz/clean-css/compare/v3.4.4...v3.4.5) -================== - -* Fixed issue [#681](https://github.com/jakubpawlowicz/clean-css/issues/681) - property inheritance & restructuring. -* Fixed issue [#675](https://github.com/jakubpawlowicz/clean-css/issues/675) - overriding with `!important`. - -[3.4.4 / 2015-09-21](https://github.com/jakubpawlowicz/clean-css/compare/v3.4.3...v3.4.4) -================== - -* Fixed issue [#626](https://github.com/jakubpawlowicz/clean-css/issues/626) - edge case in import rebasing. -* Fixed issue [#674](https://github.com/jakubpawlowicz/clean-css/issues/674) - adjacent merging order. - -[3.4.3 / 2015-09-15](https://github.com/jakubpawlowicz/clean-css/compare/v3.4.2...v3.4.3) -================== - -* Fixed issue [#668](https://github.com/jakubpawlowicz/clean-css/issues/668) - node v4 path.join. -* Fixed issue [#669](https://github.com/jakubpawlowicz/clean-css/issues/669) - adjacent overriding with `!important`. - -[3.4.2 / 2015-09-14](https://github.com/jakubpawlowicz/clean-css/compare/v3.4.1...v3.4.2) -================== - -* Fixed issue [#598](https://github.com/jakubpawlowicz/clean-css/issues/598) - restructuring border properties. -* Fixed issue [#654](https://github.com/jakubpawlowicz/clean-css/issues/654) - disables length optimizations. -* Fixed issue [#655](https://github.com/jakubpawlowicz/clean-css/issues/655) - shorthands override merging. -* Fixed issue [#660](https://github.com/jakubpawlowicz/clean-css/issues/660) - !important token overriding. -* Fixed issue [#662](https://github.com/jakubpawlowicz/clean-css/issues/662) - !important selector reducing. -* Fixed issue [#667](https://github.com/jakubpawlowicz/clean-css/issues/667) - rebasing remote URLs. - -[3.4.1 / 2015-08-27](https://github.com/jakubpawlowicz/clean-css/compare/v3.4.0...v3.4.1) -================== - -* Fixed issue [#652](https://github.com/jakubpawlowicz/clean-css/issues/652) - order of restoring and removing tokens. - -[3.4.0 / 2015-08-27](https://github.com/jakubpawlowicz/clean-css/compare/v3.3.10...v3.4.0) -================== - -* Adds an option for a fine-grained `@import` control. -* Adds unit compatibility switches to disable length optimizations. -* Adds inferring proxy settings from HTTP_PROXY environment variable. -* Adds support for Polymer / Web Components special selectors. -* Adds support for Polymer mixins. -* Adds testing source maps in batch mode. -* Unifies wrappers for simple & advanced optimizations. -* Fixed issue [#596](https://github.com/jakubpawlowicz/clean-css/issues/596) - support for !ie IE<8 hack. -* Fixed issue [#599](https://github.com/jakubpawlowicz/clean-css/issues/599) - support for inlined source maps. -* Fixed issue [#607](https://github.com/jakubpawlowicz/clean-css/issues/607) - adds better rule reordering. -* Fixed issue [#612](https://github.com/jakubpawlowicz/clean-css/issues/612) - adds HTTP proxy support. -* Fixed issue [#618](https://github.com/jakubpawlowicz/clean-css/issues/618) - adds safer function validation. -* Fixed issue [#625](https://github.com/jakubpawlowicz/clean-css/issues/625) - adds length unit optimizations. -* Fixed issue [#632](https://github.com/jakubpawlowicz/clean-css/issues/632) - adds disabling remote `import`s. -* Fixed issue [#635](https://github.com/jakubpawlowicz/clean-css/issues/635) - adds safer `0%` optimizations. -* Fixed issue [#644](https://github.com/jakubpawlowicz/clean-css/issues/644) - adds time unit optimizations. -* Fixed issue [#645](https://github.com/jakubpawlowicz/clean-css/issues/645) - adds bottom to top `media` merging. -* Fixed issue [#648](https://github.com/jakubpawlowicz/clean-css/issues/648) - adds property level at-rule support. - -[3.3.10 / 2015-08-27](https://github.com/jakubpawlowicz/clean-css/compare/v3.3.9...v3.3.10) -================== - -* Adds better comments + keepBreaks handling. -* Adds better text normalizing in source maps mode. -* Fixes non-adjacent optimizations for source maps. -* Fixes removing unused items. -* Improves `outline` break up with source maps. -* Refixed issue [#629](https://github.com/jakubpawlowicz/clean-css/issues/629) - source maps & background shorthands. - -[3.3.9 / 2015-08-09](https://github.com/jakubpawlowicz/clean-css/compare/v3.3.8...v3.3.9) -================== - -* Fixed issue [#640](https://github.com/jakubpawlowicz/clean-css/issues/640) - URI processing regression. - -[3.3.8 / 2015-08-06](https://github.com/jakubpawlowicz/clean-css/compare/v3.3.7...v3.3.8) -================== - -* Fixed issue [#629](https://github.com/jakubpawlowicz/clean-css/issues/629) - source maps & background shorthands. -* Fixed issue [#630](https://github.com/jakubpawlowicz/clean-css/issues/630) - vendor prefixed flex optimizations. -* Fixed issue [#633](https://github.com/jakubpawlowicz/clean-css/issues/633) - handling data URI with brackets. -* Fixed issue [#634](https://github.com/jakubpawlowicz/clean-css/issues/634) - merging :placeholder selectors. - -[3.3.7 / 2015-07-29](https://github.com/jakubpawlowicz/clean-css/compare/v3.3.6...v3.3.7) -================== - -* Fixed issue [#616](https://github.com/jakubpawlowicz/clean-css/issues/616) - ordering in restructuring. - -[3.3.6 / 2015-07-14](https://github.com/jakubpawlowicz/clean-css/compare/v3.3.5...v3.3.6) -================== - -* Fixed issue [#620](https://github.com/jakubpawlowicz/clean-css/issues/620) - `bold` style in font shorthands. - -[3.3.5 / 2015-07-01](https://github.com/jakubpawlowicz/clean-css/compare/v3.3.4...v3.3.5) -================== - -* Fixed issue [#608](https://github.com/jakubpawlowicz/clean-css/issues/608) - custom URI protocols handling. - -[3.3.4 / 2015-06-24](https://github.com/jakubpawlowicz/clean-css/compare/v3.3.3...v3.3.4) -================== - -* Fixed issue [#610](https://github.com/jakubpawlowicz/clean-css/issues/610) - `border:inherit` restoring. -* Fixed issue [#611](https://github.com/jakubpawlowicz/clean-css/issues/611) - edge case in quote stripping. - -[3.3.3 / 2015-06-16](https://github.com/jakubpawlowicz/clean-css/compare/v3.3.2...v3.3.3) -================== - -* Fixed issue [#603](https://github.com/jakubpawlowicz/clean-css/issues/603) - IE suffix hack defaults to on. - -[3.3.2 / 2015-06-14](https://github.com/jakubpawlowicz/clean-css/compare/v3.3.1...v3.3.2) -================== - -* Fixed issue [#595](https://github.com/jakubpawlowicz/clean-css/issues/595) - more relaxed block matching. -* Fixed issue [#601](https://github.com/jakubpawlowicz/clean-css/issues/601) - percentage minifying inside `flex`. -* Fixed issue [#602](https://github.com/jakubpawlowicz/clean-css/issues/602) - backslash IE hacks after a space. - -[3.3.1 / 2015-06-02](https://github.com/jakubpawlowicz/clean-css/compare/v3.3.0...v3.3.1) -================== - -* Fixed issue [#590](https://github.com/jakubpawlowicz/clean-css/issues/590) - edge case in `@import` processing. - -[3.3.0 / 2015-05-31](https://github.com/jakubpawlowicz/clean-css/compare/v3.2.11...v3.3.0) -================== - -* Cleans up url rebase code getting rid of unnecessary state. -* Cleans up tokenizer code getting rid of unnecessary state. -* Moves source maps tracker into lib/source-maps/track. -* Moves tokenizer code into lib/tokenizer. -* Moves URL scanner into lib/urls/reduce (was named incorrectly before). -* Moves URL rebasing & rewriting into lib/urls. -* Fixed issue [#375](https://github.com/jakubpawlowicz/clean-css/issues/375) - unit compatibility switches. -* Fixed issue [#436](https://github.com/jakubpawlowicz/clean-css/issues/436) - refactors URI rewriting. -* Fixed issue [#448](https://github.com/jakubpawlowicz/clean-css/issues/448) - rebasing no protocol URIs. -* Fixed issue [#517](https://github.com/jakubpawlowicz/clean-css/issues/517) - turning off color optimizations. -* Fixed issue [#542](https://github.com/jakubpawlowicz/clean-css/issues/542) - space after closing brace in IE. -* Fixed issue [#562](https://github.com/jakubpawlowicz/clean-css/issues/562) - optimizing invalid color values. -* Fixed issue [#563](https://github.com/jakubpawlowicz/clean-css/issues/563) - `background:inherit` restoring. -* Fixed issue [#570](https://github.com/jakubpawlowicz/clean-css/issues/570) - rebasing "no-url()" imports. -* Fixed issue [#574](https://github.com/jakubpawlowicz/clean-css/issues/574) - rewriting internal URLs. -* Fixed issue [#575](https://github.com/jakubpawlowicz/clean-css/issues/575) - missing directory as a `target`. -* Fixed issue [#577](https://github.com/jakubpawlowicz/clean-css/issues/577) - `background-clip` into shorthand. -* Fixed issue [#579](https://github.com/jakubpawlowicz/clean-css/issues/579) - `background-origin` into shorthand. -* Fixed issue [#580](https://github.com/jakubpawlowicz/clean-css/issues/580) - mixed `@import` processing. -* Fixed issue [#582](https://github.com/jakubpawlowicz/clean-css/issues/582) - overriding with prefixed values. -* Fixed issue [#583](https://github.com/jakubpawlowicz/clean-css/issues/583) - URL quoting for SVG data. -* Fixed issue [#587](https://github.com/jakubpawlowicz/clean-css/issues/587) - too aggressive `border` reordering. - -[3.2.11 / 2015-05-31](https://github.com/jakubpawlowicz/clean-css/compare/v3.2.10...v3.2.11) -================== - -* Fixed issue [#563](https://github.com/jakubpawlowicz/clean-css/issues/563) - `background:inherit` restoring. -* Fixed issue [#582](https://github.com/jakubpawlowicz/clean-css/issues/582) - overriding with prefixed values. -* Fixed issue [#583](https://github.com/jakubpawlowicz/clean-css/issues/583) - URL quoting for SVG data. -* Fixed issue [#587](https://github.com/jakubpawlowicz/clean-css/issues/587) - too aggressive `border` reordering. - -[3.2.10 / 2015-05-14](https://github.com/jakubpawlowicz/clean-css/compare/v3.2.9...v3.2.10) -================== - -* Fixed issue [#572](https://github.com/jakubpawlowicz/clean-css/issues/572) - empty elements removal. - -[3.2.9 / 2015-05-08](https://github.com/jakubpawlowicz/clean-css/compare/v3.2.8...v3.2.9) -================== - -* Fixed issue [#567](https://github.com/jakubpawlowicz/clean-css/issues/567) - merging colors as functions. - -[3.2.8 / 2015-05-04](https://github.com/jakubpawlowicz/clean-css/compare/v3.2.7...v3.2.8) -================== - -* Fixed issue [#561](https://github.com/jakubpawlowicz/clean-css/issues/561) - restructuring special selectors. - -[3.2.7 / 2015-05-03](https://github.com/jakubpawlowicz/clean-css/compare/v3.2.6...v3.2.7) -================== - -* Fixed issue [#551](https://github.com/jakubpawlowicz/clean-css/issues/551) - edge case in restructuring. -* Fixed issue [#553](https://github.com/jakubpawlowicz/clean-css/issues/553) - another style of SVG fallback. -* Fixed issue [#558](https://github.com/jakubpawlowicz/clean-css/issues/558) - units in same selector merging. - -[3.2.6 / 2015-04-28](https://github.com/jakubpawlowicz/clean-css/compare/v3.2.5...v3.2.6) -================== - -* Fixed issue [#550](https://github.com/jakubpawlowicz/clean-css/issues/550) - proper `contentSources` tracking. -* Fixed issue [#556](https://github.com/jakubpawlowicz/clean-css/issues/556) - regression in IE backslash hacks. - -[3.2.5 / 2015-04-25](https://github.com/jakubpawlowicz/clean-css/compare/v3.2.4...v3.2.5) -================== - -* Fixed issue [#543](https://github.com/jakubpawlowicz/clean-css/issues/543) - better "comment in body" handling. -* Fixed issue [#548](https://github.com/jakubpawlowicz/clean-css/issues/548) - regression in font minifying. -* Fixed issue [#549](https://github.com/jakubpawlowicz/clean-css/issues/549) - special comments in source maps. - -[3.2.4 / 2015-04-24](https://github.com/jakubpawlowicz/clean-css/compare/v3.2.3...v3.2.4) -================== - -* Fixed issue [#544](https://github.com/jakubpawlowicz/clean-css/issues/544) - regression in same value merging. -* Fixed issue [#546](https://github.com/jakubpawlowicz/clean-css/issues/546) - IE<11 `calc()` issue. - -[3.2.3 / 2015-04-22](https://github.com/jakubpawlowicz/clean-css/compare/v3.2.2...v3.2.3) -================== - -* Fixed issue [#541](https://github.com/jakubpawlowicz/clean-css/issues/541) - `outline-style:auto` in shorthand. - -[3.2.2 / 2015-04-21](https://github.com/jakubpawlowicz/clean-css/compare/v3.2.1...v3.2.2) -================== - -* Fixed issue [#537](https://github.com/jakubpawlowicz/clean-css/issues/537) - regression in simple optimizer. - -[3.2.1 / 2015-04-20](https://github.com/jakubpawlowicz/clean-css/compare/v3.2.0...v3.2.1) -================== - -* Fixed issue [#534](https://github.com/jakubpawlowicz/clean-css/issues/534) - wrong `@font-face` stringifying. - -[3.2.0 / 2015-04-19](https://github.com/jakubpawlowicz/clean-css/compare/v3.1.9...v3.2.0) -================== - -* Bumps commander to 2.8.x. -* Fixes remote asset rebasing when passing data as a hash. -* Improves path resolution inside source maps. -* Makes `root` option implicitely default to `process.cwd()`. -* Fixed issue [#371](https://github.com/jakubpawlowicz/clean-css/issues/371) - `background` fallback with `none`. -* Fixed issue [#376](https://github.com/jakubpawlowicz/clean-css/issues/376) - option to disable `0[unit]` -> `0`. -* Fixed issue [#396](https://github.com/jakubpawlowicz/clean-css/issues/396) - better input source maps tracking. -* Fixed issue [#397](https://github.com/jakubpawlowicz/clean-css/issues/397) - support for source map sources. -* Fixed issue [#399](https://github.com/jakubpawlowicz/clean-css/issues/399) - support compacting with source maps. -* Fixed issue [#429](https://github.com/jakubpawlowicz/clean-css/issues/429) - unifies data tokenization. -* Fixed issue [#446](https://github.com/jakubpawlowicz/clean-css/issues/446) - `list-style` fuzzy matching. -* Fixed issue [#468](https://github.com/jakubpawlowicz/clean-css/issues/468) - bumps `source-map` to 0.4.x. -* Fixed issue [#480](https://github.com/jakubpawlowicz/clean-css/issues/480) - extracting uppercase property names. -* Fixed issue [#487](https://github.com/jakubpawlowicz/clean-css/issues/487) - source map paths under Windows. -* Fixed issue [#490](https://github.com/jakubpawlowicz/clean-css/issues/490) - vendor prefixed multivalue `background`. -* Fixed issue [#500](https://github.com/jakubpawlowicz/clean-css/issues/500) - merging duplicate adjacent properties. -* Fixed issue [#504](https://github.com/jakubpawlowicz/clean-css/issues/504) - keeping `url()` quotes. -* Fixed issue [#507](https://github.com/jakubpawlowicz/clean-css/issues/507) - merging longhands into many shorthands. -* Fixed issue [#508](https://github.com/jakubpawlowicz/clean-css/issues/508) - removing duplicate media queries. -* Fixed issue [#521](https://github.com/jakubpawlowicz/clean-css/issues/521) - unit optimizations inside `calc()`. -* Fixed issue [#524](https://github.com/jakubpawlowicz/clean-css/issues/524) - timeouts in `@import` inlining. -* Fixed issue [#526](https://github.com/jakubpawlowicz/clean-css/issues/526) - shorthand overriding into a function. -* Fixed issue [#528](https://github.com/jakubpawlowicz/clean-css/issues/528) - better support for IE<9 hacks. -* Fixed issue [#529](https://github.com/jakubpawlowicz/clean-css/issues/529) - wrong font weight minification. - -[3.1.9 / 2015-04-04](https://github.com/jakubpawlowicz/clean-css/compare/v3.1.8...v3.1.9) -================== - -* Fixes issue [#511](https://github.com/jakubpawlowicz/clean-css/issues/511) - `)` advanced processing. - -[3.1.8 / 2015-03-17](https://github.com/jakubpawlowicz/clean-css/compare/v3.1.7...v3.1.8) -================== - -* Fixes issue [#498](https://github.com/jakubpawlowicz/clean-css/issues/498) - reordering and flexbox. -* Fixes issue [#499](https://github.com/jakubpawlowicz/clean-css/issues/499) - too aggressive `-` removal. - -[3.1.7 / 2015-03-16](https://github.com/jakubpawlowicz/clean-css/compare/v3.1.6...v3.1.7) -================== - -* Backports fix to [#480](https://github.com/jakubpawlowicz/clean-css/issues/480) - reordering and uppercase properties. -* Fixes issue [#496](https://github.com/jakubpawlowicz/clean-css/issues/496) - space after bracket removal. - -[3.1.6 / 2015-03-12](https://github.com/jakubpawlowicz/clean-css/compare/v3.1.5...v3.1.6) -================== - -* Fixes issue [#489](https://github.com/jakubpawlowicz/clean-css/issues/489) - `AlphaImageLoader` IE filter. - -[3.1.5 / 2015-03-06](https://github.com/jakubpawlowicz/clean-css/compare/v3.1.4...v3.1.5) -================== - -* Fixes issue [#483](https://github.com/jakubpawlowicz/clean-css/issues/483) - property order in restructuring. - -[3.1.4 / 2015-03-04](https://github.com/jakubpawlowicz/clean-css/compare/v3.1.3...v3.1.4) -================== - -* Fixes issue [#472](https://github.com/jakubpawlowicz/clean-css/issues/472) - broken function minification. -* Fixes issue [#477](https://github.com/jakubpawlowicz/clean-css/issues/477) - `@import`s order in restructuring. -* Fixes issue [#478](https://github.com/jakubpawlowicz/clean-css/issues/478) - ultimate fix to brace whitespace. - -[3.1.3 / 2015-03-03](https://github.com/jakubpawlowicz/clean-css/compare/v3.1.2...v3.1.3) -================== - -* Fixes issue [#464](https://github.com/jakubpawlowicz/clean-css/issues/464) - data URI with quoted braces. -* Fixes issue [#475](https://github.com/jakubpawlowicz/clean-css/issues/475) - whitespace after closing brace. - -[3.1.2 / 2015-03-01](https://github.com/jakubpawlowicz/clean-css/compare/v3.1.1...v3.1.2) -================== - -* Refixed issue [#471](https://github.com/jakubpawlowicz/clean-css/issues/471) - correct order after restructuring. -* Fixes issue [#466](https://github.com/jakubpawlowicz/clean-css/issues/466) - rebuilding background shorthand. -* Fixes issue [#462](https://github.com/jakubpawlowicz/clean-css/issues/462) - escaped apostrophes in selectors. - -[3.1.1 / 2015-02-27](https://github.com/jakubpawlowicz/clean-css/compare/v3.1.0...v3.1.1) -================== - -* Fixed issue [#469](https://github.com/jakubpawlowicz/clean-css/issues/469) - extracting broken property. -* Fixed issue [#470](https://github.com/jakubpawlowicz/clean-css/issues/470) - negative padding removal. -* Fixed issue [#471](https://github.com/jakubpawlowicz/clean-css/issues/471) - correct order after restructuring. - -[3.1.0 / 2015-02-26](https://github.com/jakubpawlowicz/clean-css/compare/v3.0.10...v3.1.0) -================== - -* Adds `0deg` to `0` minification where possible. -* Adds better non-adjacent selector merging when body is the same. -* Adds official support for node.js 0.12. -* Adds official support for io.js 1.0. -* Adds restructuring optimizations to reorganize selectors, which vastly improves minification. -* Fixed issue [#158](https://github.com/jakubpawlowicz/clean-css/issues/158) - adds body-based selectors reduction. -* Fixed issue [#182](https://github.com/jakubpawlowicz/clean-css/issues/182) - removing space after closing brace. -* Fixed issue [#204](https://github.com/jakubpawlowicz/clean-css/issues/204) - `@media` merging. -* Fixed issue [#351](https://github.com/jakubpawlowicz/clean-css/issues/351) - remote `@import`s after content. -* Fixed issue [#357](https://github.com/jakubpawlowicz/clean-css/issues/357) - non-standard but valid URLs. -* Fixed issue [#416](https://github.com/jakubpawlowicz/clean-css/issues/416) - accepts hash as `minify` argument. -* Fixed issue [#419](https://github.com/jakubpawlowicz/clean-css/issues/419) - multiple input source maps. -* Fixed issue [#435](https://github.com/jakubpawlowicz/clean-css/issues/435) - `background-clip` in shorthand. -* Fixed issue [#439](https://github.com/jakubpawlowicz/clean-css/issues/439) - `background-origin` in shorthand. -* Fixed issue [#442](https://github.com/jakubpawlowicz/clean-css/issues/442) - space before adjacent `nav`. -* Fixed issue [#445](https://github.com/jakubpawlowicz/clean-css/issues/445) - regression issue in url processor. -* Fixed issue [#449](https://github.com/jakubpawlowicz/clean-css/issues/449) - warns of missing close braces. -* Fixed issue [#463](https://github.com/jakubpawlowicz/clean-css/issues/463) - relative remote `@import` URLs. - -[3.0.10 / 2015-02-07](https://github.com/jakubpawlowicz/clean-css/compare/v3.0.9...v3.0.10) -================== - -* Fixed issue [#453](https://github.com/jakubpawlowicz/clean-css/issues/453) - double `background-repeat`. -* Fixed issue [#455](https://github.com/jakubpawlowicz/clean-css/issues/455) - property extracting regression. - -[3.0.9 / 2015-02-04](https://github.com/jakubpawlowicz/clean-css/compare/v3.0.8...v3.0.9) -================== - -* Fixed issue [#452](https://github.com/jakubpawlowicz/clean-css/issues/452) - regression in advanced merging. - -[3.0.8 / 2015-01-31](https://github.com/jakubpawlowicz/clean-css/compare/v3.0.7...v3.0.8) -================== - -* Fixed issue [#447](https://github.com/jakubpawlowicz/clean-css/issues/447) - `background-color` in shorthands. -* Fixed issue [#450](https://github.com/jakubpawlowicz/clean-css/issues/450) - name to hex color converting. - -[3.0.7 / 2015-01-22](https://github.com/jakubpawlowicz/clean-css/compare/v3.0.6...v3.0.7) -================== - -* Fixed issue [#441](https://github.com/jakubpawlowicz/clean-css/issues/441) - hex to name color converting. - -[3.0.6 / 2015-01-20](https://github.com/jakubpawlowicz/clean-css/compare/v3.0.5...v3.0.6) -================== - -* Refixed issue [#414](https://github.com/jakubpawlowicz/clean-css/issues/414) - source maps position fallback. - -[3.0.5 / 2015-01-18](https://github.com/jakubpawlowicz/clean-css/compare/v3.0.4...v3.0.5) -================== - -* Fixed issue [#414](https://github.com/jakubpawlowicz/clean-css/issues/414) - source maps position fallback. -* Fixed issue [#433](https://github.com/jakubpawlowicz/clean-css/issues/433) - meging `!important` in shorthands. - -[3.0.4 / 2015-01-11](https://github.com/jakubpawlowicz/clean-css/compare/v3.0.3...v3.0.4) -================== - -* Fixed issue [#314](https://github.com/jakubpawlowicz/clean-css/issues/314) - spaces inside `calc`. - -[3.0.3 / 2015-01-07](https://github.com/jakubpawlowicz/clean-css/compare/v3.0.2...v3.0.3) -================== - -* Just a version bump as npm incorrectly things 2.2.23 is the latest one. - -[3.0.2 / 2015-01-04](https://github.com/jakubpawlowicz/clean-css/compare/v3.0.1...v3.0.2) -================== - -* Fixed issue [#422](https://github.com/jakubpawlowicz/clean-css/issues/422) - handling `calc` as a unit. - -[3.0.1 / 2014-12-19](https://github.com/jakubpawlowicz/clean-css/compare/v3.0.0...v3.0.1) -================== - -* Fixed issue [#410](https://github.com/jakubpawlowicz/clean-css/issues/410) - advanced merging and comments. -* Fixed issue [#411](https://github.com/jakubpawlowicz/clean-css/issues/411) - properties and important comments. - -[3.0.0 / 2014-12-18](https://github.com/jakubpawlowicz/clean-css/compare/v2.2.22...v3.0.0) -================== - -* Adds more granular control over compatibility settings. -* Adds support for @counter-style at-rule. -* Adds `--source-map`/`sourceMap` switch for building input's source map. -* Adds `--skip-shorthand-compacting`/`shorthandComacting` option for disabling shorthand compacting. -* Allows `target` option to be a path to a folder instead of a file. -* Allows disabling rounding precision. By [@superlukas](https://github.com/superlukas). -* Breaks 2.x compatibility for using CleanCSS as a function. -* Changes `minify` method output to handle multiple outputs. -* Reworks minification to tokenize first then minify. - See [changes](https://github.com/jakubpawlowicz/clean-css/compare/b06f37d...dd8c14a). -* Removes support for node.js 0.8.x. -* Renames `noAdvanced` option into `advanced`. -* Renames `noAggressiveMerging` option into `aggressiveMerging`. -* Renames `noRebase` option into `rebase`. -* Speeds up advanced processing by shortening optimize loop. -* Fixed issue [#125](https://github.com/jakubpawlowicz/clean-css/issues/125) - source maps! -* Fixed issue [#344](https://github.com/jakubpawlowicz/clean-css/issues/344) - merging `background-size` into shorthand. -* Fixed issue [#352](https://github.com/jakubpawlowicz/clean-css/issues/352) - honors rebasing in imported stylesheets. -* Fixed issue [#360](https://github.com/jakubpawlowicz/clean-css/issues/360) - adds 7 extra CSS colors. -* Fixed issue [#363](https://github.com/jakubpawlowicz/clean-css/issues/363) - `rem` units overriding `px`. -* Fixed issue [#373](https://github.com/jakubpawlowicz/clean-css/issues/373) - proper `background` shorthand merging. -* Fixed issue [#395](https://github.com/jakubpawlowicz/clean-css/issues/395) - unescaped brackets in data URIs. -* Fixed issue [#398](https://github.com/jakubpawlowicz/clean-css/issues/398) - restoring important comments. -* Fixed issue [#400](https://github.com/jakubpawlowicz/clean-css/issues/400) - API to accept an array of filenames. -* Fixed issue [#403](https://github.com/jakubpawlowicz/clean-css/issues/403) - tracking input files in source maps. -* Fixed issue [#404](https://github.com/jakubpawlowicz/clean-css/issues/404) - no state sharing in API. -* Fixed issue [#405](https://github.com/jakubpawlowicz/clean-css/issues/405) - disables default `background-size` merging. -* Refixed issue [#304](https://github.com/jakubpawlowicz/clean-css/issues/304) - `background-position` merging. - -[2.2.22 / 2014-12-13](https://github.com/jakubpawlowicz/clean-css/compare/v2.2.21...v2.2.22) -================== - -* Backports fix to issue [#304](https://github.com/jakubpawlowicz/clean-css/issues/304) - `background-position` merging. - -[2.2.21 / 2014-12-10](https://github.com/jakubpawlowicz/clean-css/compare/v2.2.20...v2.2.21) -================== - -* Backports fix to issue [#373](https://github.com/jakubpawlowicz/clean-css/issues/373) - `background` shorthand merging. - -[2.2.20 / 2014-12-02](https://github.com/jakubpawlowicz/clean-css/compare/v2.2.19...v2.2.20) -================== - -* Backports fix to issue [#390](https://github.com/jakubpawlowicz/clean-css/issues/390) - pseudo-class merging. - -[2.2.19 / 2014-11-20](https://github.com/jakubpawlowicz/clean-css/compare/v2.2.18...v2.2.19) -================== - -* Fixed issue [#385](https://github.com/jakubpawlowicz/clean-css/issues/385) - edge cases in processing cut off data. - -[2.2.18 / 2014-11-17](https://github.com/jakubpawlowicz/clean-css/compare/v2.2.17...v2.2.18) -================== - -* Fixed issue [#383](https://github.com/jakubpawlowicz/clean-css/issues/383) - rounding fractions once again. - -[2.2.17 / 2014-11-09](https://github.com/jakubpawlowicz/clean-css/compare/v2.2.16...v2.2.17) -================== - -* Fixed issue [#380](https://github.com/jakubpawlowicz/clean-css/issues/380) - rounding fractions to a whole number. - -[2.2.16 / 2014-09-16](https://github.com/jakubpawlowicz/clean-css/compare/v2.2.15...v2.2.16) -================== - -* Fixed issue [#359](https://github.com/jakubpawlowicz/clean-css/issues/359) - handling escaped double backslash. -* Fixed issue [#358](https://github.com/jakubpawlowicz/clean-css/issues/358) - property merging in compatibility mode. -* Fixed issue [#356](https://github.com/jakubpawlowicz/clean-css/issues/356) - preserving `*+html` hack. -* Fixed issue [#354](https://github.com/jakubpawlowicz/clean-css/issues/354) - `!important` overriding in shorthands. - -[2.2.15 / 2014-09-01](https://github.com/jakubpawlowicz/clean-css/compare/v2.2.14...v2.2.15) -================== - -* Fixed issue [#343](https://github.com/jakubpawlowicz/clean-css/issues/343) - too aggressive `rgba`/`hsla` minification. -* Fixed issue [#345](https://github.com/jakubpawlowicz/clean-css/issues/345) - URL rebasing for document relative ones. -* Fixed issue [#346](https://github.com/jakubpawlowicz/clean-css/issues/346) - overriding `!important` by `!important`. -* Fixed issue [#350](https://github.com/jakubpawlowicz/clean-css/issues/350) - edge cases in `@import` processing. - -[2.2.14 / 2014-08-25](https://github.com/jakubpawlowicz/clean-css/compare/v2.2.13...v2.2.14) -================== - -* Makes multival operations idempotent. -* Fixed issue [#339](https://github.com/jakubpawlowicz/clean-css/issues/339) - skips invalid properties. -* Fixed issue [#341](https://github.com/jakubpawlowicz/clean-css/issues/341) - ensure output is shorter than input. - -[2.2.13 / 2014-08-12](https://github.com/jakubpawlowicz/clean-css/compare/v2.2.12...v2.2.13) -================== - -* Fixed issue [#337](https://github.com/jakubpawlowicz/clean-css/issues/337) - handling component importance. - -[2.2.12 / 2014-08-02](https://github.com/jakubpawlowicz/clean-css/compare/v2.2.11...v2.2.12) -================== - -* Fixed issue with tokenizer removing first selector after an unknown @ rule. -* Fixed issue [#329](https://github.com/jakubpawlowicz/clean-css/issues/329) - `font` shorthands incorrectly processed. -* Fixed issue [#332](https://github.com/jakubpawlowicz/clean-css/issues/332) - `background` shorthand with colors. -* Refixed issue [#325](https://github.com/jakubpawlowicz/clean-css/issues/325) - invalid charset declarations. - -[2.2.11 / 2014-07-28](https://github.com/jakubpawlowicz/clean-css/compare/v2.2.10...v2.2.11) -================== - -* Fixed issue [#326](https://github.com/jakubpawlowicz/clean-css/issues/326) - `background-size` regression. - -[2.2.10 / 2014-07-27](https://github.com/jakubpawlowicz/clean-css/compare/v2.2.9...v2.2.10) -================== - -* Improved performance of advanced mode validators. -* Fixed issue [#307](https://github.com/jakubpawlowicz/clean-css/issues/307) - `background-color` in multiple backgrounds. -* Fixed issue [#322](https://github.com/jakubpawlowicz/clean-css/issues/322) - adds `background-size` support. -* Fixed issue [#323](https://github.com/jakubpawlowicz/clean-css/issues/323) - stripping variable references. -* Fixed issue [#325](https://github.com/jakubpawlowicz/clean-css/issues/325) - removing invalid `@charset` declarations. - -[2.2.9 / 2014-07-23](https://github.com/jakubpawlowicz/clean-css/compare/v2.2.8...v2.2.9) -================== - -* Adds `background` normalization according to W3C spec. -* Fixed issue [#316](https://github.com/jakubpawlowicz/clean-css/issues/316) - incorrect `background` processing. - -[2.2.8 / 2014-07-14](https://github.com/jakubpawlowicz/clean-css/compare/v2.2.7...v2.2.8) -================== - -* Fixed issue [#313](https://github.com/jakubpawlowicz/clean-css/issues/313) - processing comment marks in URLs. -* Fixed issue [#315](https://github.com/jakubpawlowicz/clean-css/issues/315) - `rgba`/`hsla` -> `transparent` in gradients. - -[2.2.7 / 2014-07-10](https://github.com/jakubpawlowicz/clean-css/compare/v2.2.6...v2.2.7) -================== - -* Fixed issue [#304](https://github.com/jakubpawlowicz/clean-css/issues/304) - merging multiple backgrounds. -* Fixed issue [#312](https://github.com/jakubpawlowicz/clean-css/issues/312) - merging with mixed repeat. - -[2.2.6 / 2014-07-05](https://github.com/jakubpawlowicz/clean-css/compare/v2.2.5...v2.2.6) -================== - -* Adds faster quote matching in QuoteScanner. -* Improves QuoteScanner to handle comments correctly. -* Fixed issue [#308](https://github.com/jakubpawlowicz/clean-css/issues/308) - parsing comments in quoted URLs. -* Fixed issue [#311](https://github.com/jakubpawlowicz/clean-css/issues/311) - leading/trailing decimal points. - -[2.2.5 / 2014-06-29](https://github.com/jakubpawlowicz/clean-css/compare/v2.2.4...v2.2.5) -================== - -* Adds removing extra spaces around / in border-radius. -* Adds replacing same horizontal & vertical value in border-radius. -* Fixed issue [#305](https://github.com/jakubpawlowicz/clean-css/issues/305) - allows width keywords in `border-width`. - -[2.2.4 / 2014-06-27](https://github.com/jakubpawlowicz/clean-css/compare/v2.2.3...v2.2.4) -================== - -* Fixed issue [#301](https://github.com/jakubpawlowicz/clean-css/issues/301) - proper `border-radius` processing. -* Fixed issue [#303](https://github.com/jakubpawlowicz/clean-css/issues/303) - correctly preserves viewport units. - -[2.2.3 / 2014-06-24](https://github.com/jakubpawlowicz/clean-css/compare/v2.2.2...v2.2.3) -================== - -* Fixed issue [#302](https://github.com/jakubpawlowicz/clean-css/issues/302) - handling of `outline-style: auto`. - -[2.2.2 / 2014-06-18](https://github.com/jakubpawlowicz/clean-css/compare/v2.2.1...v2.2.2) -================== - -* Fixed issue [#297](https://github.com/jakubpawlowicz/clean-css/issues/297) - `box-shadow` zeros minification. - -[2.2.1 / 2014-06-14](https://github.com/jakubpawlowicz/clean-css/compare/v2.2.0...v2.2.1) -================== - -* Fixes new property optimizer for 'none' values. -* Fixed issue [#294](https://github.com/jakubpawlowicz/clean-css/issues/294) - space after `rgba`/`hsla` in IE<=11. - -[2.2.0 / 2014-06-11](https://github.com/jakubpawlowicz/clean-css/compare/v2.1.8...v2.2.0) -================== - -* Adds a better algorithm for quotation marks' removal. -* Adds a better non-adjacent optimizer compatible with the upcoming new property optimizer. -* Adds minifying remote files directly from CLI. -* Adds `--rounding-precision` to control rounding precision. -* Moves quotation matching into a `QuoteScanner` class. -* Adds `npm run browserify` for creating embeddable version of clean-css. -* Fixed list-style-* advanced processing. -* Fixed issue [#134](https://github.com/jakubpawlowicz/clean-css/issues/134) - merges properties into shorthand form. -* Fixed issue [#164](https://github.com/jakubpawlowicz/clean-css/issues/164) - removes default values if not needed. -* Fixed issue [#168](https://github.com/jakubpawlowicz/clean-css/issues/168) - adds better property merging algorithm. -* Fixed issue [#173](https://github.com/jakubpawlowicz/clean-css/issues/173) - merges same properties if grouped. -* Fixed issue [#184](https://github.com/jakubpawlowicz/clean-css/issues/184) - uses `!important` for optimization opportunities. -* Fixed issue [#190](https://github.com/jakubpawlowicz/clean-css/issues/190) - uses shorthand to override another shorthand. -* Fixed issue [#197](https://github.com/jakubpawlowicz/clean-css/issues/197) - adds borders merging by understandability. -* Fixed issue [#210](https://github.com/jakubpawlowicz/clean-css/issues/210) - adds temporary workaround for aggressive merging. -* Fixed issue [#246](https://github.com/jakubpawlowicz/clean-css/issues/246) - removes IE hacks when not in compatibility mode. -* Fixed issue [#247](https://github.com/jakubpawlowicz/clean-css/issues/247) - removes deprecated `selectorsMergeMode` switch. -* Refixed issue [#250](https://github.com/jakubpawlowicz/clean-css/issues/250) - based on new quotation marks removal. -* Fixed issue [#257](https://github.com/jakubpawlowicz/clean-css/issues/257) - turns `rgba`/`hsla` to `transparent` if possible. -* Fixed issue [#265](https://github.com/jakubpawlowicz/clean-css/issues/265) - adds support for multiple input files. -* Fixed issue [#275](https://github.com/jakubpawlowicz/clean-css/issues/275) - handling transform properties. -* Fixed issue [#276](https://github.com/jakubpawlowicz/clean-css/issues/276) - corrects unicode handling. -* Fixed issue [#288](https://github.com/jakubpawlowicz/clean-css/issues/288) - adds smarter expression parsing. -* Fixed issue [#293](https://github.com/jakubpawlowicz/clean-css/issues/293) - handles escaped `@` symbols in class names and IDs. - -[2.1.8 / 2014-03-28](https://github.com/jakubpawlowicz/clean-css/compare/v2.1.7...v2.1.8) -================== - -* Fixed issue [#267](https://github.com/jakubpawlowicz/clean-css/issues/267) - incorrect non-adjacent selector merging. - -[2.1.7 / 2014-03-24](https://github.com/jakubpawlowicz/clean-css/compare/v2.1.6...v2.1.7) -================== - -* Fixed issue [#264](https://github.com/jakubpawlowicz/clean-css/issues/264) - `@import` statements inside comments. - -[2.1.6 / 2014-03-10](https://github.com/jakubpawlowicz/clean-css/compare/v2.1.5...v2.1.6) -================== - -* Fixed issue [#258](https://github.com/jakubpawlowicz/clean-css/issues/258) - wrong `@import` handling in `EmptyRemoval`. - -[2.1.5 / 2014-03-07](https://github.com/jakubpawlowicz/clean-css/compare/v2.1.4...v2.1.5) -================== - -* Fixed issue [#255](https://github.com/jakubpawlowicz/clean-css/issues/255) - incorrect processing of a trailing `-0`. - -[2.1.4 / 2014-03-01](https://github.com/jakubpawlowicz/clean-css/compare/v2.1.3...v2.1.4) -================== - -* Fixed issue [#250](https://github.com/jakubpawlowicz/clean-css/issues/250) - correctly handle JSON data in quotations. - -[2.1.3 / 2014-02-26](https://github.com/jakubpawlowicz/clean-css/compare/v2.1.2...v2.1.3) -================== - -* Fixed issue [#248](https://github.com/jakubpawlowicz/clean-css/issues/248) - incorrect merging for vendor selectors. - -[2.1.2 / 2014-02-25](https://github.com/jakubpawlowicz/clean-css/compare/v2.1.1...v2.1.2) -================== - -* Fixed issue [#245](https://github.com/jakubpawlowicz/clean-css/issues/245) - incorrect handling of backslash IE hack. - -[2.1.1 / 2014-02-18](https://github.com/jakubpawlowicz/clean-css/compare/v2.1.0...v2.1.1) -================== - -* Adds faster selectors processing in advanced optimizer. -* Fixed issue [#241](https://github.com/jakubpawlowicz/clean-css/issues/241) - incorrect handling of `:not()` selectors. - -[2.1.0 / 2014-02-13](https://github.com/jakubpawlowicz/clean-css/compare/v2.0.8...v2.1.0) -================== - -* Adds an optional callback to minify method. -* Deprecates `--selectors-merge-mode` / `selectorsMergeMode` in favor to `--compatibility` / `compatibility`. -* Fixes debug mode stats for stylesheets using `@import` statements. -* Skips empty removal if advanced processing is enabled. -* Fixed issue [#85](https://github.com/jakubpawlowicz/clean-css/issues/85) - resolving protocol `@import`s. -* Fixed issue [#160](https://github.com/jakubpawlowicz/clean-css/issues/160) - re-runs optimizer until a clean pass. -* Fixed issue [#161](https://github.com/jakubpawlowicz/clean-css/issues/161) - improves tokenizer performance. -* Fixed issue [#163](https://github.com/jakubpawlowicz/clean-css/issues/163) - round pixels to 2nd decimal place. -* Fixed issue [#165](https://github.com/jakubpawlowicz/clean-css/issues/165) - extra space after trailing parenthesis. -* Fixed issue [#186](https://github.com/jakubpawlowicz/clean-css/issues/186) - strip unit from `0rem`. -* Fixed issue [#207](https://github.com/jakubpawlowicz/clean-css/issues/207) - bug in parsing protocol `@import`s. -* Fixed issue [#213](https://github.com/jakubpawlowicz/clean-css/issues/213) - faster `rgb` to `hex` transforms. -* Fixed issue [#215](https://github.com/jakubpawlowicz/clean-css/issues/215) - leading zeros in numerical values. -* Fixed issue [#217](https://github.com/jakubpawlowicz/clean-css/issues/217) - whitespace inside attribute selectors and URLs. -* Fixed issue [#218](https://github.com/jakubpawlowicz/clean-css/issues/218) - `@import` statements cleanup. -* Fixed issue [#220](https://github.com/jakubpawlowicz/clean-css/issues/220) - selector between comments. -* Fixed issue [#223](https://github.com/jakubpawlowicz/clean-css/issues/223) - two-pass adjacent selectors merging. -* Fixed issue [#226](https://github.com/jakubpawlowicz/clean-css/issues/226) - don't minify `border:none` to `border:0`. -* Fixed issue [#229](https://github.com/jakubpawlowicz/clean-css/issues/229) - improved processing of fraction numbers. -* Fixed issue [#230](https://github.com/jakubpawlowicz/clean-css/issues/230) - better handling of zero values. -* Fixed issue [#235](https://github.com/jakubpawlowicz/clean-css/issues/235) - IE7 compatibility mode. -* Fixed issue [#236](https://github.com/jakubpawlowicz/clean-css/issues/236) - incorrect rebasing with nested `import`s. - -[2.0.8 / 2014-02-07](https://github.com/jakubpawlowicz/clean-css/compare/v2.0.7...v2.0.8) -================== - -* Fixed issue [#232](https://github.com/jakubpawlowicz/clean-css/issues/232) - edge case in non-adjacent selectors merging. - -[2.0.7 / 2014-01-16](https://github.com/jakubpawlowicz/clean-css/compare/v2.0.6...v2.0.7) -================== - -* Fixed issue [#208](https://github.com/jakubpawlowicz/clean-css/issues/208) - don't swallow `@page` and `@viewport`. - -[2.0.6 / 2014-01-04](https://github.com/jakubpawlowicz/clean-css/compare/v2.0.5...v2.0.6) -================== - -* Fixed issue [#198](https://github.com/jakubpawlowicz/clean-css/issues/198) - process comments and `@import`s correctly. -* Fixed issue [#205](https://github.com/jakubpawlowicz/clean-css/issues/205) - freeze on broken `@import` declaration. - -[2.0.5 / 2014-01-03](https://github.com/jakubpawlowicz/clean-css/compare/v2.0.4...v2.0.5) -================== - -* Fixed issue [#199](https://github.com/jakubpawlowicz/clean-css/issues/199) - keep line breaks with no advanced optimizations. -* Fixed issue [#203](https://github.com/jakubpawlowicz/clean-css/issues/203) - Buffer as a first argument to minify method. - -[2.0.4 / 2013-12-19](https://github.com/jakubpawlowicz/clean-css/compare/v2.0.3...v2.0.4) -================== - -* Fixed issue [#193](https://github.com/jakubpawlowicz/clean-css/issues/193) - HSL color space normalization. - -[2.0.3 / 2013-12-18](https://github.com/jakubpawlowicz/clean-css/compare/v2.0.2...v2.0.3) -================== - -* Fixed issue [#191](https://github.com/jakubpawlowicz/clean-css/issues/191) - leading numbers in `font`/`animation` names. -* Fixed issue [#192](https://github.com/jakubpawlowicz/clean-css/issues/192) - many `@import`s inside a comment. - -[2.0.2 / 2013-11-18](https://github.com/jakubpawlowicz/clean-css/compare/v2.0.1...v2.0.2) -================== - -* Fixed issue [#177](https://github.com/jakubpawlowicz/clean-css/issues/177) - process broken content correctly. - -[2.0.1 / 2013-11-14](https://github.com/jakubpawlowicz/clean-css/compare/v2.0.0...v2.0.1) -================== - -* Fixed issue [#176](https://github.com/jakubpawlowicz/clean-css/issues/176) - hangs on `undefined` keyword. - -[2.0.0 / 2013-11-04](https://github.com/jakubpawlowicz/clean-css/compare/v1.1.7...v2.0.0) -================== - -* Adds simplified and more advanced text escaping / restoring via `EscapeStore` class. -* Adds simplified and much faster empty elements removal. -* Adds missing `@import` processing to our benchmark (run via `npm run bench`). -* Adds CSS tokenizer which will make it possible to optimize content by reordering and/or merging selectors. -* Adds basic optimizer removing duplicate selectors from a list. -* Adds merging duplicate properties within a single selector's body. -* Adds merging adjacent selectors within a scope (single and multiple ones). -* Changes behavior of `--keep-line-breaks`/`keepBreaks` option to keep breaks after trailing braces only. -* Makes all multiple selectors ordered alphabetically (aids merging). -* Adds property overriding so more coarse properties override more granular ones. -* Adds reducing non-adjacent selectors. -* Adds `--skip-advanced`/`noAdvanced` switch to disable advanced optimizations. -* Adds reducing non-adjacent selectors when overridden by more complex selectors. -* Fixed issue [#138](https://github.com/jakubpawlowicz/clean-css/issues/138) - makes CleanCSS interface OO. -* Fixed issue [#139](https://github.com/jakubpawlowicz/clean-css/issues/138) - consistent error & warning handling. -* Fixed issue [#145](https://github.com/jakubpawlowicz/clean-css/issues/145) - debug mode in library too. -* Fixed issue [#157](https://github.com/jakubpawlowicz/clean-css/issues/157) - gets rid of `removeEmpty` option. -* Fixed issue [#159](https://github.com/jakubpawlowicz/clean-css/issues/159) - escaped quotes inside content. -* Fixed issue [#162](https://github.com/jakubpawlowicz/clean-css/issues/162) - strip quotes from Base64 encoded URLs. -* Fixed issue [#166](https://github.com/jakubpawlowicz/clean-css/issues/166) - `debug` formatting in CLI -* Fixed issue [#167](https://github.com/jakubpawlowicz/clean-css/issues/167) - `background:transparent` minification. - -[1.1.7 / 2013-10-28](https://github.com/jakubpawlowicz/clean-css/compare/v1.1.6...v1.1.7) -================== - -* Fixed issue [#156](https://github.com/jakubpawlowicz/clean-css/issues/156) - `@import`s inside comments. - -[1.1.6 / 2013-10-26](https://github.com/jakubpawlowicz/clean-css/compare/v1.1.5...v1.1.6) -================== - -* Fixed issue [#155](https://github.com/jakubpawlowicz/clean-css/issues/155) - broken irregular CSS content. - -[1.1.5 / 2013-10-24](https://github.com/jakubpawlowicz/clean-css/compare/v1.1.4...v1.1.5) -================== - -* Fixed issue [#153](https://github.com/jakubpawlowicz/clean-css/issues/153) - `keepSpecialComments` `0`/`1` as a string. - -[1.1.4 / 2013-10-23](https://github.com/jakubpawlowicz/clean-css/compare/v1.1.3...v1.1.4) -================== - -* Fixed issue [#152](https://github.com/jakubpawlowicz/clean-css/issues/152) - adds an option to disable rebasing. - -[1.1.3 / 2013-10-04](https://github.com/jakubpawlowicz/clean-css/compare/v1.1.2...v1.1.3) -================== - -* Fixed issue [#150](https://github.com/jakubpawlowicz/clean-css/issues/150) - minifying `background:none`. - -[1.1.2 / 2013-09-29](https://github.com/jakubpawlowicz/clean-css/compare/v1.1.1...v1.1.2) -================== - -* Fixed issue [#149](https://github.com/jakubpawlowicz/clean-css/issues/149) - shorthand `font` property. - -[1.1.1 / 2013-09-07](https://github.com/jakubpawlowicz/clean-css/compare/v1.1.0...v1.1.1) -================== - -* Fixed issue [#144](https://github.com/jakubpawlowicz/clean-css/issues/144) - skip URLs rebasing by default. - -[1.1.0 / 2013-09-06](https://github.com/jakubpawlowicz/clean-css/compare/v1.0.12...v1.1.0) -================== - -* Renamed lib's `debug` option to `benchmark` when doing per-minification benchmarking. -* Added simplified comments processing & imports. -* Fixed issue [#43](https://github.com/jakubpawlowicz/clean-css/issues/43) - `--debug` switch for minification stats. -* Fixed issue [#65](https://github.com/jakubpawlowicz/clean-css/issues/65) - full color name / hex shortening. -* Fixed issue [#84](https://github.com/jakubpawlowicz/clean-css/issues/84) - support for `@import` with media queries. -* Fixed issue [#124](https://github.com/jakubpawlowicz/clean-css/issues/124) - raise error on broken imports. -* Fixed issue [#126](https://github.com/jakubpawlowicz/clean-css/issues/126) - proper CSS expressions handling. -* Fixed issue [#129](https://github.com/jakubpawlowicz/clean-css/issues/129) - rebasing imported URLs. -* Fixed issue [#130](https://github.com/jakubpawlowicz/clean-css/issues/130) - better code modularity. -* Fixed issue [#135](https://github.com/jakubpawlowicz/clean-css/issues/135) - require node.js 0.8+. - -[1.0.12 / 2013-07-19](https://github.com/jakubpawlowicz/clean-css/compare/v1.0.11...v1.0.12) -=================== - -* Fixed issue [#121](https://github.com/jakubpawlowicz/clean-css/issues/121) - ability to skip `@import` processing. - -[1.0.11 / 2013-07-08](https://github.com/jakubpawlowicz/clean-css/compare/v1.0.10...v1.0.11) -=================== - -* Fixed issue [#117](https://github.com/jakubpawlowicz/clean-css/issues/117) - line break escaping in comments. - -[1.0.10 / 2013-06-13](https://github.com/jakubpawlowicz/clean-css/compare/v1.0.9...v1.0.10) -=================== - -* Fixed issue [#114](https://github.com/jakubpawlowicz/clean-css/issues/114) - comments in imported stylesheets. - -[1.0.9 / 2013-06-11](https://github.com/jakubpawlowicz/clean-css/compare/v1.0.8...v1.0.9) -================== - -* Fixed issue [#113](https://github.com/jakubpawlowicz/clean-css/issues/113) - `@import` in comments. - -[1.0.8 / 2013-06-10](https://github.com/jakubpawlowicz/clean-css/compare/v1.0.7...v1.0.8) -================== - -* Fixed issue [#112](https://github.com/jakubpawlowicz/clean-css/issues/112) - reducing `box-shadow` zeros. - -[1.0.7 / 2013-06-05](https://github.com/jakubpawlowicz/clean-css/compare/v1.0.6...v1.0.7) -================== - -* Support for `@import` URLs starting with `//`. By [@petetak](https://github.com/petetak). - -[1.0.6 / 2013-06-04](https://github.com/jakubpawlowicz/clean-css/compare/v1.0.5...v1.0.6) -================== - -* Fixed issue [#110](https://github.com/jakubpawlowicz/clean-css/issues/110) - data URIs in URLs. - -[1.0.5 / 2013-05-26](https://github.com/jakubpawlowicz/clean-css/compare/v1.0.4...v1.0.5) -================== - -* Fixed issue [#107](https://github.com/jakubpawlowicz/clean-css/issues/107) - data URIs in imported stylesheets. - -1.0.4 / 2013-05-23 -================== - -* Rewrite relative URLs in imported stylesheets. By [@bluej100](https://github.com/bluej100). - -1.0.3 / 2013-05-20 -================== - -* Support alternative `@import` syntax with file name not wrapped inside `url()` statement. - By [@bluej100](https://github.com/bluej100). - -1.0.2 / 2013-04-29 -================== - -* Fixed issue [#97](https://github.com/jakubpawlowicz/clean-css/issues/97) - `--remove-empty` & FontAwesome. - -1.0.1 / 2013-04-08 -================== - -* Do not pick up `bench` and `test` while building `npm` package. - By [@sindresorhus](https://https://github.com/sindresorhus). - -1.0.0 / 2013-03-30 -================== - -* Fixed issue [#2](https://github.com/jakubpawlowicz/clean-css/issues/2) - resolving `@import` rules. -* Fixed issue [#44](https://github.com/jakubpawlowicz/clean-css/issues/44) - examples in `--help`. -* Fixed issue [#46](https://github.com/jakubpawlowicz/clean-css/issues/46) - preserving special characters in URLs and attributes. -* Fixed issue [#80](https://github.com/jakubpawlowicz/clean-css/issues/80) - quotation in multi line strings. -* Fixed issue [#83](https://github.com/jakubpawlowicz/clean-css/issues/83) - HSL to hex color conversions. -* Fixed issue [#86](https://github.com/jakubpawlowicz/clean-css/issues/86) - broken `@charset` replacing. -* Fixed issue [#88](https://github.com/jakubpawlowicz/clean-css/issues/88) - removes space in `! important`. -* Fixed issue [#92](https://github.com/jakubpawlowicz/clean-css/issues/92) - uppercase hex to short versions. - -0.10.2 / 2013-03-19 -=================== - -* Fixed issue [#79](https://github.com/jakubpawlowicz/clean-css/issues/79) - node.js 0.10.x compatibility. - -0.10.1 / 2013-02-14 -=================== - -* Fixed issue [#66](https://github.com/jakubpawlowicz/clean-css/issues/66) - line breaks without extra spaces should - be handled correctly. - -0.10.0 / 2013-02-09 -=================== - -* Switched from [optimist](https://github.com/substack/node-optimist) to - [commander](https://github.com/visionmedia/commander.js) for CLI processing. -* Changed long options from `--removeempty` to `--remove-empty` and from `--keeplinebreaks` to `--keep-line-breaks`. -* Fixed performance issue with replacing multiple `@charset` declarations and issue - with line break after `@charset` when using `keepLineBreaks` option. By [@rrjaime](https://github.com/rrjamie). -* Removed Makefile in favor to `npm run` commands (e.g. `make check` -> `npm run check`). -* Fixed issue [#47](https://github.com/jakubpawlowicz/clean-css/issues/47) - commandline issues on Windows. -* Fixed issue [#49](https://github.com/jakubpawlowicz/clean-css/issues/49) - remove empty selectors from media query. -* Fixed issue [#52](https://github.com/jakubpawlowicz/clean-css/issues/52) - strip fraction zeros if not needed. -* Fixed issue [#58](https://github.com/jakubpawlowicz/clean-css/issues/58) - remove colon where possible. -* Fixed issue [#59](https://github.com/jakubpawlowicz/clean-css/issues/59) - content property handling. - -0.9.1 / 2012-12-19 -================== - -* Fixed issue [#37](https://github.com/jakubpawlowicz/clean-css/issues/37) - converting - `white` and other colors in class names (reported by [@malgorithms](https://github.com/malgorithms)). - -0.9.0 / 2012-12-15 -================== - -* Added stripping quotation from font names (if possible). -* Added stripping quotation from `@keyframes` declaration, `animation` and - `animation-name` property. -* Added stripping quotations from attributes' value (e.g. `[data-target='x']`). -* Added better hex->name and name->hex color shortening. -* Added `font: normal` and `font: bold` shortening the same way as `font-weight` is. -* Refactored shorthand selectors and added `border-radius`, `border-style` - and `border-color` shortening. -* Added `margin`, `padding` and `border-width` shortening. -* Added removing line break after commas. -* Fixed removing whitespace inside media query definition. -* Added removing line breaks after a comma, so all declarations are one-liners now. -* Speed optimizations (~10% despite many new features). -* Added [JSHint](https://github.com/jshint/jshint/) validation rules via `make check`. - -0.8.3 / 2012-11-29 -================== - -* Fixed HSL/HSLA colors processing. - -0.8.2 / 2012-10-31 -================== - -* Fixed shortening hex colors and their relation to hashes in URLs. -* Cleanup by [@XhmikosR](https://github.com/XhmikosR). - -0.8.1 / 2012-10-28 -================== - -* Added better zeros processing for `rect(...)` syntax (clip property). - -0.8.0 / 2012-10-21 -================== - -* Added removing URLs quotation if possible. -* Rewrote breaks processing. -* Added `keepBreaks`/`-b` option to keep line breaks in the minimized file. -* Reformatted [lib/clean.js](/lib/clean.js) so it's easier to follow the rules. -* Minimized test data is now minimized with line breaks so it's easier to - compare the changes line by line. - -0.7.0 / 2012-10-14 -================== - -* Added stripping special comments to CLI (`--s0` and `--s1` options). -* Added stripping special comments to programmatic interface - (`keepSpecialComments` option). - -0.6.0 / 2012-08-05 -================== - -* Full Windows support with tests (./test.bat). - -0.5.0 / 2012-08-02 -================== - -* Made path to vows local. -* Explicit node.js 0.6 requirement. - -0.4.2 / 2012-06-28 -================== - -* Updated binary `-v` option (version). -* Updated binary to output help when no options given (but not in piped mode). -* Added binary tests. - -0.4.1 / 2012-06-10 -================== - -* Fixed stateless mode where calling `CleanCSS#process` directly was giving - errors (reported by [@facelessuser](https://github.com/facelessuser)). - -0.4.0 / 2012-06-04 -================== - -* Speed improvements up to 4x thanks to the rewrite of comments and CSS' content - processing. -* Stripping empty CSS tags is now optional (see [bin/cleancss](/bin/cleancss) for details). -* Improved debugging mode (see [test/bench.js](/test/bench.js)) -* Added `make bench` for a one-pass benchmark. - -0.3.3 / 2012-05-27 -================== - -* Fixed tests, [package.json](/package.json) for development, and regex - for removing empty declarations (thanks to [@vvo](https://github.com/vvo)). - -0.3.2 / 2012-01-17 -================== - -* Fixed output method under node.js 0.6 which incorrectly tried to close - `process.stdout`. - -0.3.1 / 2011-12-16 -================== - -* Fixed cleaning up `0 0 0 0` expressions. - -0.3.0 / 2011-11-29 -================== - -* Clean-css requires node.js 0.4.0+ to run. -* Removed node.js's 0.2.x 'sys' package dependency - (thanks to [@jmalonzo](https://github.com/jmalonzo) for a patch). - -0.2.6 / 2011-11-27 -================== - -* Fixed expanding `+` signs in `calc()` when mixed up with adjacent `+` selector. - -0.2.5 / 2011-11-27 -================== - -* Fixed issue with cleaning up spaces inside `calc`/`-moz-calc` declarations - (thanks to [@cvan](https://github.com/cvan) for reporting it). -* Fixed converting `#f00` to `red` in borders and gradients. - -0.2.4 / 2011-05-25 -================== - -* Fixed problem with expanding `none` to `0` in partial/full background - declarations. -* Fixed including clean-css library from binary (global to local). - -0.2.3 / 2011-04-18 -================== - -* Fixed problem with optimizing IE filters. - -0.2.2 / 2011-04-17 -================== - -* Fixed problem with space before color in `border` property. - -0.2.1 / 2011-03-19 -================== - -* Added stripping space before `!important` keyword. -* Updated repository location and author information in [package.json](/package.json). - -0.2.0 / 2011-03-02 -================== - -* Added options parsing via optimist. -* Changed code inclusion (thus the version bump). - -0.1.0 / 2011-02-27 -================== - -* First version of clean-css library. -* Implemented all basic CSS transformations. diff --git a/workshops/monte-carlo-on-ec2-spot-fleet/src/web/node_modules/clean-css/LICENSE b/workshops/monte-carlo-on-ec2-spot-fleet/src/web/node_modules/clean-css/LICENSE deleted file mode 100644 index 32bb13fc..00000000 --- a/workshops/monte-carlo-on-ec2-spot-fleet/src/web/node_modules/clean-css/LICENSE +++ /dev/null @@ -1,19 +0,0 @@ -Copyright (C) 2015 JakubPawlowicz.com - -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, subject to the following conditions: - -The above copyright notice and this permission notice shall be included in -all copies or substantial portions of the Software. - -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. diff --git a/workshops/monte-carlo-on-ec2-spot-fleet/src/web/node_modules/clean-css/README.md b/workshops/monte-carlo-on-ec2-spot-fleet/src/web/node_modules/clean-css/README.md deleted file mode 100644 index ee08b7a6..00000000 --- a/workshops/monte-carlo-on-ec2-spot-fleet/src/web/node_modules/clean-css/README.md +++ /dev/null @@ -1,369 +0,0 @@ -[![NPM version](https://img.shields.io/npm/v/clean-css.svg?style=flat)](https://www.npmjs.com/package/clean-css) -[![Linux Build Status](https://img.shields.io/travis/jakubpawlowicz/clean-css/master.svg?style=flat&label=Linux%20build)](https://travis-ci.org/jakubpawlowicz/clean-css) -[![Windows Build status](https://img.shields.io/appveyor/ci/jakubpawlowicz/clean-css/master.svg?style=flat&label=Windows%20build)](https://ci.appveyor.com/project/jakubpawlowicz/clean-css/branch/master) -[![Dependency Status](https://img.shields.io/david/jakubpawlowicz/clean-css.svg?style=flat)](https://david-dm.org/jakubpawlowicz/clean-css) -[![devDependency Status](https://img.shields.io/david/dev/jakubpawlowicz/clean-css.svg?style=flat)](https://david-dm.org/jakubpawlowicz/clean-css#info=devDependencies) - -## What is clean-css? - -Clean-css is a fast and efficient [Node.js](http://nodejs.org/) library for minifying CSS files. - -According to [tests](http://goalsmashers.github.io/css-minification-benchmark/) it is one of the best available. - - -## Usage - -### What are the requirements? - -``` -Node.js 0.10+ (tested on CentOS, Ubuntu, OS X 10.6+, and Windows 7+) or io.js 3.0+ -``` - -### How to install clean-css? - -``` -npm install clean-css -``` - -### How to use clean-css CLI? - -Clean-css accepts the following command line arguments (please make sure -you use `` as the very last argument to avoid potential issues): - -``` -cleancss [options] source-file, [source-file, ...] - --h, --help output usage information --v, --version output the version number --b, --keep-line-breaks Keep line breaks --c, --compatibility [ie7|ie8] Force compatibility mode (see Readme for advanced examples) --d, --debug Shows debug information (minification time & compression efficiency) --o, --output [output-file] Use [output-file] as output instead of STDOUT --r, --root [root-path] Set a root path to which resolve absolute @import rules --s, --skip-import Disable @import processing --t, --timeout [seconds] Per connection timeout when fetching remote @imports (defaults to 5 seconds) ---rounding-precision [n] Rounds to `N` decimal places. Defaults to 2. -1 disables rounding ---s0 Remove all special comments, i.e. /*! comment */ ---s1 Remove all special comments but the first one ---semantic-merging Enables unsafe mode by assuming BEM-like semantic stylesheets (warning, this may break your styling!) ---skip-advanced Disable advanced optimizations - ruleset reordering & merging ---skip-aggressive-merging Disable properties merging based on their order ---skip-import-from [rules] Disable @import processing for specified rules ---skip-media-merging Disable @media merging ---skip-rebase Disable URLs rebasing ---skip-restructuring Disable restructuring optimizations ---skip-shorthand-compacting Disable shorthand compacting ---source-map Enables building input's source map ---source-map-inline-sources Enables inlining sources inside source maps -``` - -#### Examples: - -To minify a **public.css** file into **public-min.css** do: - -``` -cleancss -o public-min.css public.css -``` - -To minify the same **public.css** into the standard output skip the `-o` parameter: - -``` -cleancss public.css -``` - -More likely you would like to concatenate a couple of files. -If you are on a Unix-like system: - -```bash -cat one.css two.css three.css | cleancss -o merged-and-minified.css -``` - -On Windows: - -```bat -type one.css two.css three.css | cleancss -o merged-and-minified.css -``` - -Or even gzip the result at once: - -```bash -cat one.css two.css three.css | cleancss | gzip -9 -c > merged-minified-and-gzipped.css.gz -``` - -### How to use clean-css API? - -```js -var CleanCSS = require('clean-css'); -var source = 'a{font-weight:bold;}'; -var minified = new CleanCSS().minify(source).styles; -``` - -CleanCSS constructor accepts a hash as a parameter, i.e., -`new CleanCSS(options)` with the following options available: - -* `advanced` - set to false to disable advanced optimizations - selector & property merging, reduction, etc. -* `aggressiveMerging` - set to false to disable aggressive merging of properties. -* `benchmark` - turns on benchmarking mode measuring time spent on cleaning up (run `npm run bench` to see example) -* `compatibility` - enables compatibility mode, see [below for more examples](#how-to-set-a-compatibility-mode) -* `debug` - set to true to get minification statistics under `stats` property (see `test/custom-test.js` for examples) -* `inliner` - a hash of options for `@import` inliner, see [test/protocol-imports-test.js](https://github.com/jakubpawlowicz/clean-css/blob/master/test/protocol-imports-test.js#L372) for examples, or [this comment](https://github.com/jakubpawlowicz/clean-css/issues/612#issuecomment-119594185) for a proxy use case. -* `keepBreaks` - whether to keep line breaks (default is false) -* `keepSpecialComments` - `*` for keeping all (default), `1` for keeping first one only, `0` for removing all -* `mediaMerging` - whether to merge `@media` at-rules (default is true) -* `processImport` - whether to process `@import` rules -* `processImportFrom` - a list of `@import` rules, can be `['all']` (default), `['local']`, `['remote']`, or a blacklisted path e.g. `['!fonts.googleapis.com']` -* `rebase` - set to false to skip URL rebasing -* `relativeTo` - path to **resolve** relative `@import` rules and URLs -* `restructuring` - set to false to disable restructuring in advanced optimizations -* `root` - path to **resolve** absolute `@import` rules and **rebase** relative URLs -* `roundingPrecision` - rounding precision; defaults to `2`; `-1` disables rounding -* `semanticMerging` - set to true to enable semantic merging mode which assumes BEM-like content (default is false as it's highly likely this will break your stylesheets - **use with caution**!) -* `shorthandCompacting` - set to false to skip shorthand compacting (default is true unless sourceMap is set when it's false) -* `sourceMap` - exposes source map under `sourceMap` property, e.g. `new CleanCSS().minify(source).sourceMap` (default is false) - If input styles are a product of CSS preprocessor (Less, Sass) an input source map can be passed as a string. -* `sourceMapInlineSources` - set to true to inline sources inside a source map's `sourcesContent` field (defaults to false) - It is also required to process inlined sources from input source maps. -* `target` - path to a folder or an output file to which **rebase** all URLs - -The output of `minify` method (or the 2nd argument to passed callback) is a hash containing the following fields: - -* `styles` - optimized output CSS as a string -* `sourceMap` - output source map (if requested with `sourceMap` option) -* `errors` - a list of errors raised -* `warnings` - a list of warnings raised -* `stats` - a hash of statistic information (if requested with `debug` option): - * `originalSize` - original content size (after import inlining) - * `minifiedSize` - optimized content size - * `timeSpent` - time spent on optimizations - * `efficiency` - a ratio of output size to input size (e.g. 25% if content was reduced from 100 bytes to 75 bytes) - -#### How to make sure remote `@import`s are processed correctly? - -In order to inline remote `@import` statements you need to provide a callback to minify method, e.g.: - -```js -var CleanCSS = require('clean-css'); -var source = '@import url(http://path/to/remote/styles);'; -new CleanCSS().minify(source, function (errors, minified) { - // minified.styles -}); -``` - -This is due to a fact, that, while local files can be read synchronously, remote resources can only be processed asynchronously. -If you don't provide a callback, then remote `@import`s will be left intact. - -### How to use clean-css with build tools? - -* [Broccoli](https://github.com/broccolijs/broccoli#broccoli): [broccoli-clean-css](https://github.com/shinnn/broccoli-clean-css) -* [Brunch](http://brunch.io/): [clean-css-brunch](https://github.com/brunch/clean-css-brunch) -* [Grunt](http://gruntjs.com): [grunt-contrib-cssmin](https://github.com/gruntjs/grunt-contrib-cssmin) -* [Gulp](http://gulpjs.com/): [gulp-minify-css](https://github.com/jonathanepollack/gulp-minify-css) -* [Gulp](http://gulpjs.com/): [using vinyl-map as a wrapper - courtesy of @sogko](https://github.com/jakubpawlowicz/clean-css/issues/342) -* [component-builder2](https://github.com/component/builder2.js): [builder-clean-css](https://github.com/poying/builder-clean-css) -* [Metalsmith](http://metalsmith.io): [metalsmith-clean-css](https://github.com/aymericbeaumet/metalsmith-clean-css) -* [Lasso](https://github.com/lasso-js/lasso): [lasso-clean-css](https://github.com/yomed/lasso-clean-css) - -### What are the clean-css' dev commands? - -First clone the source, then run: - -* `npm run bench` for clean-css benchmarks (see [test/bench.js](https://github.com/jakubpawlowicz/clean-css/blob/master/test/bench.js) for details) -* `npm run browserify` to create the browser-ready clean-css version -* `npm run check` to check JS sources with [JSHint](https://github.com/jshint/jshint/) -* `npm test` for the test suite - -## How to contribute to clean-css? - -See [CONTRIBUTING.md](https://github.com/jakubpawlowicz/clean-css/blob/master/CONTRIBUTING.md). - -## Tips & Tricks - -### How to preserve a comment block? - -Use the `/*!` notation instead of the standard one `/*`: - -```css -/*! - Important comments included in minified output. -*/ -``` - -### How to rebase relative image URLs? - -Clean-css will handle it automatically for you (since version 1.1) in the following cases: - -* When using the CLI: - 1. Use an output path via `-o`/`--output` to rebase URLs as relative to the output file. - 2. Use a root path via `-r`/`--root` to rebase URLs as absolute from the given root path. - 3. If you specify both then `-r`/`--root` takes precendence. -* When using clean-css as a library: - 1. Use a combination of `relativeTo` and `target` options for relative rebase (same as 1 in CLI). - 2. Use a combination of `relativeTo` and `root` options for absolute rebase (same as 2 in CLI). - 3. `root` takes precendence over `target` as in CLI. - -### How to generate source maps? - -Source maps are supported since version 3.0. - -Additionally to mapping original CSS files, clean-css also supports input source maps, so minified styles can be mapped into their [Less](http://lesscss.org/) or [Sass](http://sass-lang.com/) sources directly. - -Source maps are generated using [source-map](https://github.com/mozilla/source-map/) module from Mozilla. - -#### Using CLI - -To generate a source map, use `--source-map` switch, e.g.: - -``` -cleancss --source-map --output styles.min.css styles.css -``` - -Name of the output file is required, so a map file, named by adding `.map` suffix to output file name, can be created (styles.min.css.map in this case). - -#### Using API - -To generate a source map, use `sourceMap: true` option, e.g.: - -```js -new CleanCSS({ sourceMap: true, target: pathToOutputDirectory }) - .minify(source, function (minified) { - // access minified.sourceMap for SourceMapGenerator object - // see https://github.com/mozilla/source-map/#sourcemapgenerator for more details - // see https://github.com/jakubpawlowicz/clean-css/blob/master/bin/cleancss#L114 on how it's used in clean-css' CLI -}); -``` - -Using API you can also pass an input source map directly: - -```js -new CleanCSS({ sourceMap: inputSourceMapAsString, target: pathToOutputDirectory }) - .minify(source, function (minified) { - // access minified.sourceMap to access SourceMapGenerator object - // see https://github.com/mozilla/source-map/#sourcemapgenerator for more details - // see https://github.com/jakubpawlowicz/clean-css/blob/master/bin/cleancss#L114 on how it's used in clean-css' CLI -}); -``` - -Or even multiple input source maps at once (available since version 3.1): - -```js -new CleanCSS({ sourceMap: true, target: pathToOutputDirectory }).minify({ - 'path/to/source/1': { - styles: '...styles...', - sourceMap: '...source-map...' - }, - 'path/to/source/2': { - styles: '...styles...', - sourceMap: '...source-map...' - } -}, function (minified) { - // access minified.sourceMap as above -}); -``` - -### How to minify multiple files with API? - -#### Passing an array - -```js -new CleanCSS().minify(['path/to/file/one', 'path/to/file/two']); -``` - -#### Passing a hash - -```js -new CleanCSS().minify({ - 'path/to/file/one': { - styles: 'contents of file one' - }, - 'path/to/file/two': { - styles: 'contents of file two' - } -}); -``` - -### How to set a compatibility mode? - -Compatibility settings are controlled by `--compatibility` switch (CLI) and `compatibility` option (library mode). - -In both modes the following values are allowed: - -* `'ie7'` - Internet Explorer 7 compatibility mode -* `'ie8'` - Internet Explorer 8 compatibility mode -* `''` or `'*'` (default) - Internet Explorer 9+ compatibility mode - -Since clean-css 3 a fine grained control is available over -[those settings](https://github.com/jakubpawlowicz/clean-css/blob/master/lib/utils/compatibility.js), -with the following options available: - -* `'[+-]colors.opacity'` - - turn on (+) / off (-) `rgba()` / `hsla()` declarations removal -* `'[+-]properties.backgroundClipMerging'` - turn on / off background-clip merging into shorthand -* `'[+-]properties.backgroundOriginMerging'` - turn on / off background-origin merging into shorthand -* `'[+-]properties.backgroundSizeMerging'` - turn on / off background-size merging into shorthand -* `'[+-]properties.colors'` - turn on / off any color optimizations -* `'[+-]properties.ieBangHack'` - turn on / off IE bang hack removal -* `'[+-]properties.iePrefixHack'` - turn on / off IE prefix hack removal -* `'[+-]properties.ieSuffixHack'` - turn on / off IE suffix hack removal -* `'[+-]properties.merging'` - turn on / off property merging based on understandability -* `'[+-]properties.spaceAfterClosingBrace'` - turn on / off removing space after closing brace - `url() no-repeat` into `url()no-repeat` -* `'[+-]properties.urlQuotes'` - turn on / off `url()` quoting -* `'[+-]properties.zeroUnits'` - turn on / off units removal after a `0` value -* `'[+-]selectors.adjacentSpace'` - turn on / off extra space before `nav` element -* `'[+-]selectors.ie7Hack'` - turn on / off IE7 selector hack removal (`*+html...`) -* `'[+-]selectors.special'` - a regular expression with all special, unmergeable selectors (leave it empty unless you know what you are doing) -* `'[+-]units.ch'` - turn on / off treating `ch` as a proper unit -* `'[+-]units.in'` - turn on / off treating `in` as a proper unit -* `'[+-]units.pc'` - turn on / off treating `pc` as a proper unit -* `'[+-]units.pt'` - turn on / off treating `pt` as a proper unit -* `'[+-]units.rem'` - turn on / off treating `rem` as a proper unit -* `'[+-]units.vh'` - turn on / off treating `vh` as a proper unit -* `'[+-]units.vm'` - turn on / off treating `vm` as a proper unit -* `'[+-]units.vmax'` - turn on / off treating `vmax` as a proper unit -* `'[+-]units.vmin'` - turn on / off treating `vmin` as a proper unit -* `'[+-]units.vm'` - turn on / off treating `vm` as a proper unit - -For example, using `--compatibility 'ie8,+units.rem'` will ensure IE8 compatibility while enabling `rem` units so the following style `margin:0px 0rem` can be shortened to `margin:0`, while in pure IE8 mode it can't be. - -To pass a single off (-) switch in CLI please use the following syntax `--compatibility *,-units.rem`. - -In library mode you can also pass `compatibility` as a hash of options. - -### What advanced optimizations are applied? - -All advanced optimizations are dispatched [here](https://github.com/jakubpawlowicz/clean-css/blob/master/lib/selectors/advanced.js#L59), and this is what they do: - -* `recursivelyOptimizeBlocks` - does all the following operations on a block (think `@media` or `@keyframe` at-rules); -* `recursivelyOptimizeProperties` - optimizes properties in rulesets and "flat at-rules" (like @font-face) by splitting them into components (e.g. `margin` into `margin-(*)`), optimizing, and rebuilding them back. You may want to use `shorthandCompacting` option to control whether you want to turn multiple (long-hand) properties into a shorthand ones; -* `removeDuplicates` - gets rid of duplicate rulesets with exactly the same set of properties (think of including the same Sass / Less partial twice for no good reason); -* `mergeAdjacent` - merges adjacent rulesets with the same selector or rules; -* `reduceNonAdjacent` - identifies which properties are overridden in same-selector non-adjacent rulesets, and removes them; -* `mergeNonAdjacentBySelector` - identifies same-selector non-adjacent rulesets which can be moved (!) to be merged, requires all intermediate rulesets to not redefine the moved properties, or if redefined to be either more coarse grained (e.g. `margin` vs `margin-top`) or have the same value; -* `mergeNonAdjacentByBody` - same as the one above but for same-rules non-adjacent rulesets; -* `restructure` - tries to reorganize different-selector different-rules rulesets so they take less space, e.g. `.one{padding:0}.two{margin:0}.one{margin-bottom:3px}` into `.two{margin:0}.one{padding:0;margin-bottom:3px}`; -* `removeDuplicateMediaQueries` - removes duplicated `@media` at-rules; -* `mergeMediaQueries` - merges non-adjacent `@media` at-rules by same rules as `mergeNonAdjacentBy*` above; - -## Acknowledgments (sorted alphabetically) - -* Anthony Barre ([@abarre](https://github.com/abarre)) for improvements to - `@import` processing, namely introducing the `--skip-import` / - `processImport` options. -* Simon Altschuler ([@altschuler](https://github.com/altschuler)) for fixing - `@import` processing inside comments. -* Isaac ([@facelessuser](https://github.com/facelessuser)) for pointing out - a flaw in clean-css' stateless mode. -* Jan Michael Alonzo ([@jmalonzo](https://github.com/jmalonzo)) for a patch - removing node.js' old `sys` package. -* Luke Page ([@lukeapage](https://github.com/lukeapage)) for suggestions and testing the source maps feature. - Plus everyone else involved in [#125](https://github.com/jakubpawlowicz/clean-css/issues/125) for pushing it forward. -* Timur Kristóf ([@Venemo](https://github.com/Venemo)) for an outstanding - contribution of advanced property optimizer for 2.2 release. -* Vincent Voyer ([@vvo](https://github.com/vvo)) for a patch with better - empty element regex and for inspiring us to do many performance improvements - in 0.4 release. -* [@XhmikosR](https://github.com/XhmikosR) for suggesting new features - (option to remove special comments and strip out URLs quotation) and - pointing out numerous improvements (JSHint, media queries). - -## License - -Clean-css is released under the [MIT License](https://github.com/jakubpawlowicz/clean-css/blob/master/LICENSE). diff --git a/workshops/monte-carlo-on-ec2-spot-fleet/src/web/node_modules/clean-css/bin/cleancss b/workshops/monte-carlo-on-ec2-spot-fleet/src/web/node_modules/clean-css/bin/cleancss deleted file mode 100755 index 72148cfc..00000000 --- a/workshops/monte-carlo-on-ec2-spot-fleet/src/web/node_modules/clean-css/bin/cleancss +++ /dev/null @@ -1,184 +0,0 @@ -#!/usr/bin/env node - -var fs = require('fs'); -var path = require('path'); -var CleanCSS = require('../index'); - -var commands = require('commander'); - -var packageConfig = fs.readFileSync(path.join(path.dirname(fs.realpathSync(process.argv[1])), '../package.json')); -var buildVersion = JSON.parse(packageConfig).version; - -var isWindows = process.platform == 'win32'; -var lineBreak = require('os').EOL; - -// Specify commander options to parse command line params correctly -commands - .version(buildVersion, '-v, --version') - .usage('[options] source-file, [source-file, ...]') - .option('-b, --keep-line-breaks', 'Keep line breaks') - .option('-c, --compatibility [ie7|ie8]', 'Force compatibility mode (see Readme for advanced examples)') - .option('-d, --debug', 'Shows debug information (minification time & compression efficiency)') - .option('-o, --output [output-file]', 'Use [output-file] as output instead of STDOUT') - .option('-r, --root [root-path]', 'Set a root path to which resolve absolute @import rules') - .option('-s, --skip-import', 'Disable @import processing') - .option('-t, --timeout [seconds]', 'Per connection timeout when fetching remote @imports (defaults to 5 seconds)') - .option('--rounding-precision [n]', 'Rounds to `N` decimal places. Defaults to 2. -1 disables rounding', parseInt) - .option('--s0', 'Remove all special comments, i.e. /*! comment */') - .option('--s1', 'Remove all special comments but the first one') - .option('--semantic-merging', 'Enables unsafe mode by assuming BEM-like semantic stylesheets (warning, this may break your styling!)') - .option('--skip-advanced', 'Disable advanced optimizations - ruleset reordering & merging') - .option('--skip-aggressive-merging', 'Disable properties merging based on their order') - .option('--skip-import-from [rules]', 'Disable @import processing for specified rules', function (val) { return val.split(','); }, []) - .option('--skip-media-merging', 'Disable @media merging') - .option('--skip-rebase', 'Disable URLs rebasing') - .option('--skip-restructuring', 'Disable restructuring optimizations') - .option('--skip-shorthand-compacting', 'Disable shorthand compacting') - .option('--source-map', 'Enables building input\'s source map') - .option('--source-map-inline-sources', 'Enables inlining sources inside source maps'); - -commands.on('--help', function () { - console.log(' Examples:\n'); - console.log(' %> cleancss one.css'); - console.log(' %> cleancss -o one-min.css one.css'); - if (isWindows) { - console.log(' %> type one.css two.css three.css | cleancss -o merged-and-minified.css'); - } else { - console.log(' %> cat one.css two.css three.css | cleancss -o merged-and-minified.css'); - console.log(' %> cat one.css two.css three.css | cleancss | gzip -9 -c > merged-minified-and-gzipped.css.gz'); - } - console.log(''); - process.exit(); -}); - -commands.parse(process.argv); - -// If no sensible data passed in just print help and exit -var fromStdin = !process.env.__DIRECT__ && !process.stdin.isTTY; -if (!fromStdin && commands.args.length === 0) { - commands.outputHelp(); - return 0; -} - -// Now coerce commands into CleanCSS configuration... -var options = { - advanced: commands.skipAdvanced ? false : true, - aggressiveMerging: commands.skipAggressiveMerging ? false : true, - compatibility: commands.compatibility, - debug: commands.debug, - inliner: commands.timeout ? { timeout: parseFloat(commands.timeout) * 1000 } : undefined, - keepBreaks: !!commands.keepLineBreaks, - keepSpecialComments: commands.s0 ? 0 : (commands.s1 ? 1 : '*'), - mediaMerging: commands.skipMediaMerging ? false : true, - processImport: commands.skipImport ? false : true, - processImportFrom: processImportFrom(commands.skipImportFrom), - rebase: commands.skipRebase ? false : true, - restructuring: commands.skipRestructuring ? false : true, - root: commands.root, - roundingPrecision: commands.roundingPrecision, - semanticMerging: commands.semanticMerging ? true : false, - shorthandCompacting: commands.skipShorthandCompacting ? false : true, - sourceMap: commands.sourceMap, - sourceMapInlineSources: commands.sourceMapInlineSources, - target: commands.output -}; - -if (options.root || commands.args.length > 0) { - var relativeTo = options.root || commands.args[0]; - - if (isRemote(relativeTo)) { - options.relativeTo = relativeTo; - } else { - var resolvedRelativeTo = path.resolve(relativeTo); - - options.relativeTo = fs.statSync(resolvedRelativeTo).isFile() ? - path.dirname(resolvedRelativeTo) : - resolvedRelativeTo; - } -} - -if (options.sourceMap && !options.target) { - outputFeedback(['Source maps will not be built because you have not specified an output file.'], true); - options.sourceMap = false; -} - -// ... and do the magic! -if (commands.args.length > 0) { - minify(commands.args); -} else { - var stdin = process.openStdin(); - stdin.setEncoding('utf-8'); - var data = ''; - stdin.on('data', function (chunk) { - data += chunk; - }); - stdin.on('end', function () { - minify(data); - }); -} - -function isRemote(path) { - return /^https?:\/\//.test(path) || /^\/\//.test(path); -} - -function processImportFrom(rules) { - if (rules.length === 0) { - return ['all']; - } else if (rules.length == 1 && rules[0] == 'all') { - return []; - } else { - return rules.map(function (rule) { - if (rule == 'local') - return 'remote'; - else if (rule == 'remote') - return 'local'; - else - return '!' + rule; - }); - } -} - -function minify(data) { - new CleanCSS(options).minify(data, function (errors, minified) { - if (options.debug) { - console.error('Original: %d bytes', minified.stats.originalSize); - console.error('Minified: %d bytes', minified.stats.minifiedSize); - console.error('Efficiency: %d%', ~~(minified.stats.efficiency * 10000) / 100.0); - console.error('Time spent: %dms', minified.stats.timeSpent); - } - - outputFeedback(minified.errors, true); - outputFeedback(minified.warnings); - - if (minified.errors.length > 0) - process.exit(1); - - if (minified.sourceMap) { - var mapFilename = path.basename(options.target) + '.map'; - output(minified.styles + lineBreak + '/*# sourceMappingURL=' + mapFilename + ' */'); - outputMap(minified.sourceMap, mapFilename); - } else { - output(minified.styles); - } - }); -} - -function output(minified) { - if (options.target) - fs.writeFileSync(options.target, minified, 'utf8'); - else - process.stdout.write(minified); -} - -function outputMap(sourceMap, mapFilename) { - var mapPath = path.join(path.dirname(options.target), mapFilename); - fs.writeFileSync(mapPath, sourceMap.toString(), 'utf-8'); -} - -function outputFeedback(messages, isError) { - var prefix = isError ? '\x1B[31mERROR\x1B[39m:' : 'WARNING:'; - - messages.forEach(function (message) { - console.error('%s %s', prefix, message); - }); -} diff --git a/workshops/monte-carlo-on-ec2-spot-fleet/src/web/node_modules/clean-css/index.js b/workshops/monte-carlo-on-ec2-spot-fleet/src/web/node_modules/clean-css/index.js deleted file mode 100644 index d7b05030..00000000 --- a/workshops/monte-carlo-on-ec2-spot-fleet/src/web/node_modules/clean-css/index.js +++ /dev/null @@ -1 +0,0 @@ -module.exports = require('./lib/clean'); diff --git a/workshops/monte-carlo-on-ec2-spot-fleet/src/web/node_modules/clean-css/lib/clean.js b/workshops/monte-carlo-on-ec2-spot-fleet/src/web/node_modules/clean-css/lib/clean.js deleted file mode 100644 index c9ce2e93..00000000 --- a/workshops/monte-carlo-on-ec2-spot-fleet/src/web/node_modules/clean-css/lib/clean.js +++ /dev/null @@ -1,231 +0,0 @@ -/** - * Clean-css - https://github.com/jakubpawlowicz/clean-css - * Released under the terms of MIT license - * - * Copyright (C) 2015 JakubPawlowicz.com - */ - -var ImportInliner = require('./imports/inliner'); -var rebaseUrls = require('./urls/rebase'); - -var tokenize = require('./tokenizer/tokenize'); -var simpleOptimize = require('./selectors/simple'); -var advancedOptimize = require('./selectors/advanced'); - -var simpleStringify = require('./stringifier/simple'); -var sourceMapStringify = require('./stringifier/source-maps'); - -var CommentsProcessor = require('./text/comments-processor'); -var ExpressionsProcessor = require('./text/expressions-processor'); -var FreeTextProcessor = require('./text/free-text-processor'); -var UrlsProcessor = require('./text/urls-processor'); - -var Compatibility = require('./utils/compatibility'); -var InputSourceMapTracker = require('./utils/input-source-map-tracker'); -var SourceTracker = require('./utils/source-tracker'); -var SourceReader = require('./utils/source-reader'); -var Validator = require('./properties/validator'); - -var fs = require('fs'); -var path = require('path'); -var url = require('url'); - -var override = require('./utils/object').override; - -var DEFAULT_TIMEOUT = 5000; - -var CleanCSS = module.exports = function CleanCSS(options) { - options = options || {}; - - this.options = { - advanced: undefined === options.advanced ? true : !!options.advanced, - aggressiveMerging: undefined === options.aggressiveMerging ? true : !!options.aggressiveMerging, - benchmark: options.benchmark, - compatibility: new Compatibility(options.compatibility).toOptions(), - debug: options.debug, - explicitRoot: !!options.root, - explicitTarget: !!options.target, - inliner: options.inliner || {}, - keepBreaks: options.keepBreaks || false, - keepSpecialComments: 'keepSpecialComments' in options ? options.keepSpecialComments : '*', - mediaMerging: undefined === options.mediaMerging ? true : !!options.mediaMerging, - processImport: undefined === options.processImport ? true : !!options.processImport, - processImportFrom: importOptionsFrom(options.processImportFrom), - rebase: undefined === options.rebase ? true : !!options.rebase, - relativeTo: options.relativeTo, - restructuring: undefined === options.restructuring ? true : !!options.restructuring, - root: options.root || process.cwd(), - roundingPrecision: options.roundingPrecision, - semanticMerging: undefined === options.semanticMerging ? false : !!options.semanticMerging, - shorthandCompacting: undefined === options.shorthandCompacting ? true : !!options.shorthandCompacting, - sourceMap: options.sourceMap, - sourceMapInlineSources: !!options.sourceMapInlineSources, - target: !options.target || missingDirectory(options.target) || presentDirectory(options.target) ? options.target : path.dirname(options.target) - }; - - this.options.inliner.timeout = this.options.inliner.timeout || DEFAULT_TIMEOUT; - this.options.inliner.request = override( - /* jshint camelcase: false */ - proxyOptionsFrom(process.env.HTTP_PROXY || process.env.http_proxy), - this.options.inliner.request || {} - ); -}; - -function importOptionsFrom(rules) { - return undefined === rules ? ['all'] : rules; -} - -function missingDirectory(filepath) { - return !fs.existsSync(filepath) && !/\.css$/.test(filepath); -} - -function presentDirectory(filepath) { - return fs.existsSync(filepath) && fs.statSync(filepath).isDirectory(); -} - -function proxyOptionsFrom(httpProxy) { - return httpProxy ? - { - hostname: url.parse(httpProxy).hostname, - port: parseInt(url.parse(httpProxy).port) - } : - {}; -} - -CleanCSS.prototype.minify = function (data, callback) { - var context = { - stats: {}, - errors: [], - warnings: [], - options: this.options, - debug: this.options.debug, - localOnly: !callback, - sourceTracker: new SourceTracker(), - validator: new Validator(this.options.compatibility) - }; - - if (context.options.sourceMap) - context.inputSourceMapTracker = new InputSourceMapTracker(context); - - context.sourceReader = new SourceReader(context, data); - data = context.sourceReader.toString(); - - if (context.options.processImport || data.indexOf('@shallow') > 0) { - // inline all imports - var runner = callback ? - process.nextTick : - function (callback) { return callback(); }; - - return runner(function () { - return new ImportInliner(context).process(data, { - localOnly: context.localOnly, - imports: context.options.processImportFrom, - whenDone: runMinifier(callback, context) - }); - }); - } else { - return runMinifier(callback, context)(data); - } -}; - -function runMinifier(callback, context) { - function whenSourceMapReady (data) { - data = context.options.debug ? - minifyWithDebug(context, data) : - minify(context, data); - data = withMetadata(context, data); - - return callback ? - callback.call(null, context.errors.length > 0 ? context.errors : null, data) : - data; - } - - return function (data) { - if (context.options.sourceMap) { - return context.inputSourceMapTracker.track(data, function () { - if (context.options.sourceMapInlineSources) { - return context.inputSourceMapTracker.resolveSources(function () { - return whenSourceMapReady(data); - }); - } else { - return whenSourceMapReady(data); - } - }); - } else { - return whenSourceMapReady(data); - } - }; -} - -function withMetadata(context, data) { - data.stats = context.stats; - data.errors = context.errors; - data.warnings = context.warnings; - return data; -} - -function minifyWithDebug(context, data) { - var startedAt = process.hrtime(); - context.stats.originalSize = context.sourceTracker.removeAll(data).length; - - data = minify(context, data); - - var elapsed = process.hrtime(startedAt); - context.stats.timeSpent = ~~(elapsed[0] * 1e3 + elapsed[1] / 1e6); - context.stats.efficiency = 1 - data.styles.length / context.stats.originalSize; - context.stats.minifiedSize = data.styles.length; - - return data; -} - -function benchmark(runner) { - return function (processor, action) { - var name = processor.constructor.name + '#' + action; - var start = process.hrtime(); - runner(processor, action); - var itTook = process.hrtime(start); - console.log('%d ms: ' + name, 1000 * itTook[0] + itTook[1] / 1000000); - }; -} - -function minify(context, data) { - var options = context.options; - - var commentsProcessor = new CommentsProcessor(context, options.keepSpecialComments, options.keepBreaks, options.sourceMap); - var expressionsProcessor = new ExpressionsProcessor(options.sourceMap); - var freeTextProcessor = new FreeTextProcessor(options.sourceMap); - var urlsProcessor = new UrlsProcessor(context, options.sourceMap, options.compatibility.properties.urlQuotes); - - var stringify = options.sourceMap ? sourceMapStringify : simpleStringify; - - var run = function (processor, action) { - data = typeof processor == 'function' ? - processor(data) : - processor[action](data); - }; - - if (options.benchmark) - run = benchmark(run); - - run(commentsProcessor, 'escape'); - run(expressionsProcessor, 'escape'); - run(urlsProcessor, 'escape'); - run(freeTextProcessor, 'escape'); - - function restoreEscapes(data, prefixContent) { - data = freeTextProcessor.restore(data, prefixContent); - data = urlsProcessor.restore(data); - data = options.rebase ? rebaseUrls(data, context) : data; - data = expressionsProcessor.restore(data); - return commentsProcessor.restore(data); - } - - var tokens = tokenize(data, context); - - simpleOptimize(tokens, options, context); - - if (options.advanced) - advancedOptimize(tokens, options, context, true); - - return stringify(tokens, options, restoreEscapes, context.inputSourceMapTracker); -} diff --git a/workshops/monte-carlo-on-ec2-spot-fleet/src/web/node_modules/clean-css/lib/colors/hex-name-shortener.js b/workshops/monte-carlo-on-ec2-spot-fleet/src/web/node_modules/clean-css/lib/colors/hex-name-shortener.js deleted file mode 100644 index 2af2f4e2..00000000 --- a/workshops/monte-carlo-on-ec2-spot-fleet/src/web/node_modules/clean-css/lib/colors/hex-name-shortener.js +++ /dev/null @@ -1,186 +0,0 @@ -var HexNameShortener = {}; - -var COLORS = { - aliceblue: '#f0f8ff', - antiquewhite: '#faebd7', - aqua: '#0ff', - aquamarine: '#7fffd4', - azure: '#f0ffff', - beige: '#f5f5dc', - bisque: '#ffe4c4', - black: '#000', - blanchedalmond: '#ffebcd', - blue: '#00f', - blueviolet: '#8a2be2', - brown: '#a52a2a', - burlywood: '#deb887', - cadetblue: '#5f9ea0', - chartreuse: '#7fff00', - chocolate: '#d2691e', - coral: '#ff7f50', - cornflowerblue: '#6495ed', - cornsilk: '#fff8dc', - crimson: '#dc143c', - cyan: '#0ff', - darkblue: '#00008b', - darkcyan: '#008b8b', - darkgoldenrod: '#b8860b', - darkgray: '#a9a9a9', - darkgreen: '#006400', - darkgrey: '#a9a9a9', - darkkhaki: '#bdb76b', - darkmagenta: '#8b008b', - darkolivegreen: '#556b2f', - darkorange: '#ff8c00', - darkorchid: '#9932cc', - darkred: '#8b0000', - darksalmon: '#e9967a', - darkseagreen: '#8fbc8f', - darkslateblue: '#483d8b', - darkslategray: '#2f4f4f', - darkslategrey: '#2f4f4f', - darkturquoise: '#00ced1', - darkviolet: '#9400d3', - deeppink: '#ff1493', - deepskyblue: '#00bfff', - dimgray: '#696969', - dimgrey: '#696969', - dodgerblue: '#1e90ff', - firebrick: '#b22222', - floralwhite: '#fffaf0', - forestgreen: '#228b22', - fuchsia: '#f0f', - gainsboro: '#dcdcdc', - ghostwhite: '#f8f8ff', - gold: '#ffd700', - goldenrod: '#daa520', - gray: '#808080', - green: '#008000', - greenyellow: '#adff2f', - grey: '#808080', - honeydew: '#f0fff0', - hotpink: '#ff69b4', - indianred: '#cd5c5c', - indigo: '#4b0082', - ivory: '#fffff0', - khaki: '#f0e68c', - lavender: '#e6e6fa', - lavenderblush: '#fff0f5', - lawngreen: '#7cfc00', - lemonchiffon: '#fffacd', - lightblue: '#add8e6', - lightcoral: '#f08080', - lightcyan: '#e0ffff', - lightgoldenrodyellow: '#fafad2', - lightgray: '#d3d3d3', - lightgreen: '#90ee90', - lightgrey: '#d3d3d3', - lightpink: '#ffb6c1', - lightsalmon: '#ffa07a', - lightseagreen: '#20b2aa', - lightskyblue: '#87cefa', - lightslategray: '#778899', - lightslategrey: '#778899', - lightsteelblue: '#b0c4de', - lightyellow: '#ffffe0', - lime: '#0f0', - limegreen: '#32cd32', - linen: '#faf0e6', - magenta: '#ff00ff', - maroon: '#800000', - mediumaquamarine: '#66cdaa', - mediumblue: '#0000cd', - mediumorchid: '#ba55d3', - mediumpurple: '#9370db', - mediumseagreen: '#3cb371', - mediumslateblue: '#7b68ee', - mediumspringgreen: '#00fa9a', - mediumturquoise: '#48d1cc', - mediumvioletred: '#c71585', - midnightblue: '#191970', - mintcream: '#f5fffa', - mistyrose: '#ffe4e1', - moccasin: '#ffe4b5', - navajowhite: '#ffdead', - navy: '#000080', - oldlace: '#fdf5e6', - olive: '#808000', - olivedrab: '#6b8e23', - orange: '#ffa500', - orangered: '#ff4500', - orchid: '#da70d6', - palegoldenrod: '#eee8aa', - palegreen: '#98fb98', - paleturquoise: '#afeeee', - palevioletred: '#db7093', - papayawhip: '#ffefd5', - peachpuff: '#ffdab9', - peru: '#cd853f', - pink: '#ffc0cb', - plum: '#dda0dd', - powderblue: '#b0e0e6', - purple: '#800080', - rebeccapurple: '#663399', - red: '#f00', - rosybrown: '#bc8f8f', - royalblue: '#4169e1', - saddlebrown: '#8b4513', - salmon: '#fa8072', - sandybrown: '#f4a460', - seagreen: '#2e8b57', - seashell: '#fff5ee', - sienna: '#a0522d', - silver: '#c0c0c0', - skyblue: '#87ceeb', - slateblue: '#6a5acd', - slategray: '#708090', - slategrey: '#708090', - snow: '#fffafa', - springgreen: '#00ff7f', - steelblue: '#4682b4', - tan: '#d2b48c', - teal: '#008080', - thistle: '#d8bfd8', - tomato: '#ff6347', - turquoise: '#40e0d0', - violet: '#ee82ee', - wheat: '#f5deb3', - white: '#fff', - whitesmoke: '#f5f5f5', - yellow: '#ff0', - yellowgreen: '#9acd32' -}; - -var toHex = {}; -var toName = {}; - -for (var name in COLORS) { - var hex = COLORS[name]; - if (name.length < hex.length) - toName[hex] = name; - else - toHex[name] = hex; -} - -var toHexPattern = new RegExp('(^| |,|\\))(' + Object.keys(toHex).join('|') + ')( |,|\\)|$)', 'ig'); -var toNamePattern = new RegExp('(' + Object.keys(toName).join('|') + ')([^a-f0-9]|$)', 'ig'); - -function hexConverter(match, prefix, colorValue, suffix) { - return prefix + toHex[colorValue.toLowerCase()] + suffix; -} - -function nameConverter(match, colorValue, suffix) { - return toName[colorValue.toLowerCase()] + suffix; -} - -HexNameShortener.shorten = function (value) { - var hasHex = value.indexOf('#') > -1; - var shortened = value.replace(toHexPattern, hexConverter); - - if (shortened != value) - shortened = shortened.replace(toHexPattern, hexConverter); - - return hasHex ? shortened.replace(toNamePattern, nameConverter) : shortened; -}; - -module.exports = HexNameShortener; diff --git a/workshops/monte-carlo-on-ec2-spot-fleet/src/web/node_modules/clean-css/lib/colors/hsl.js b/workshops/monte-carlo-on-ec2-spot-fleet/src/web/node_modules/clean-css/lib/colors/hsl.js deleted file mode 100644 index 5c76b6e6..00000000 --- a/workshops/monte-carlo-on-ec2-spot-fleet/src/web/node_modules/clean-css/lib/colors/hsl.js +++ /dev/null @@ -1,67 +0,0 @@ -// HSL to RGB converter. Both methods adapted from: -// http://mjijackson.com/2008/02/rgb-to-hsl-and-rgb-to-hsv-color-model-conversion-algorithms-in-javascript - -function HSLColor(hue, saturation, lightness) { - this.hue = hue; - this.saturation = saturation; - this.lightness = lightness; -} - -function hslToRgb(h, s, l) { - var r, g, b; - - // normalize hue orientation b/w 0 and 360 degrees - h = h % 360; - if (h < 0) - h += 360; - h = ~~h / 360; - - if (s < 0) - s = 0; - else if (s > 100) - s = 100; - s = ~~s / 100; - - if (l < 0) - l = 0; - else if (l > 100) - l = 100; - l = ~~l / 100; - - if (s === 0) { - r = g = b = l; // achromatic - } else { - var q = l < 0.5 ? - l * (1 + s) : - l + s - l * s; - var p = 2 * l - q; - r = hueToRgb(p, q, h + 1/3); - g = hueToRgb(p, q, h); - b = hueToRgb(p, q, h - 1/3); - } - - return [~~(r * 255), ~~(g * 255), ~~(b * 255)]; -} - -function hueToRgb(p, q, t) { - if (t < 0) t += 1; - if (t > 1) t -= 1; - if (t < 1/6) return p + (q - p) * 6 * t; - if (t < 1/2) return q; - if (t < 2/3) return p + (q - p) * (2/3 - t) * 6; - return p; -} - -HSLColor.prototype.toHex = function () { - var asRgb = hslToRgb(this.hue, this.saturation, this.lightness); - var redAsHex = asRgb[0].toString(16); - var greenAsHex = asRgb[1].toString(16); - var blueAsHex = asRgb[2].toString(16); - - return '#' + - ((redAsHex.length == 1 ? '0' : '') + redAsHex) + - ((greenAsHex.length == 1 ? '0' : '') + greenAsHex) + - ((blueAsHex.length == 1 ? '0' : '') + blueAsHex); -}; - -module.exports = HSLColor; diff --git a/workshops/monte-carlo-on-ec2-spot-fleet/src/web/node_modules/clean-css/lib/colors/rgb.js b/workshops/monte-carlo-on-ec2-spot-fleet/src/web/node_modules/clean-css/lib/colors/rgb.js deleted file mode 100644 index 2f945482..00000000 --- a/workshops/monte-carlo-on-ec2-spot-fleet/src/web/node_modules/clean-css/lib/colors/rgb.js +++ /dev/null @@ -1,16 +0,0 @@ -function RGB(red, green, blue) { - this.red = red; - this.green = green; - this.blue = blue; -} - -RGB.prototype.toHex = function () { - var red = Math.max(0, Math.min(~~this.red, 255)); - var green = Math.max(0, Math.min(~~this.green, 255)); - var blue = Math.max(0, Math.min(~~this.blue, 255)); - - // Credit: Asen http://jsbin.com/UPUmaGOc/2/edit?js,console - return '#' + ('00000' + (red << 16 | green << 8 | blue).toString(16)).slice(-6); -}; - -module.exports = RGB; diff --git a/workshops/monte-carlo-on-ec2-spot-fleet/src/web/node_modules/clean-css/lib/imports/inliner.js b/workshops/monte-carlo-on-ec2-spot-fleet/src/web/node_modules/clean-css/lib/imports/inliner.js deleted file mode 100644 index 041d7335..00000000 --- a/workshops/monte-carlo-on-ec2-spot-fleet/src/web/node_modules/clean-css/lib/imports/inliner.js +++ /dev/null @@ -1,399 +0,0 @@ -var fs = require('fs'); -var path = require('path'); -var http = require('http'); -var https = require('https'); -var url = require('url'); - -var rewriteUrls = require('../urls/rewrite'); -var split = require('../utils/split'); -var override = require('../utils/object.js').override; - -var MAP_MARKER = /\/\*# sourceMappingURL=(\S+) \*\//; -var REMOTE_RESOURCE = /^(https?:)?\/\//; -var NO_PROTOCOL_RESOURCE = /^\/\//; - -function ImportInliner (context) { - this.outerContext = context; -} - -ImportInliner.prototype.process = function (data, context) { - var root = this.outerContext.options.root; - - context = override(context, { - baseRelativeTo: this.outerContext.options.relativeTo || root, - debug: this.outerContext.options.debug, - done: [], - errors: this.outerContext.errors, - left: [], - inliner: this.outerContext.options.inliner, - rebase: this.outerContext.options.rebase, - relativeTo: this.outerContext.options.relativeTo || root, - root: root, - sourceReader: this.outerContext.sourceReader, - sourceTracker: this.outerContext.sourceTracker, - warnings: this.outerContext.warnings, - visited: [] - }); - - return importFrom(data, context); -}; - -function importFrom(data, context) { - if (context.shallow) { - context.shallow = false; - context.done.push(data); - return processNext(context); - } - - var nextStart = 0; - var nextEnd = 0; - var cursor = 0; - var isComment = commentScanner(data); - - for (; nextEnd < data.length;) { - nextStart = nextImportAt(data, cursor); - if (nextStart == -1) - break; - - if (isComment(nextStart)) { - cursor = nextStart + 1; - continue; - } - - nextEnd = data.indexOf(';', nextStart); - if (nextEnd == -1) { - cursor = data.length; - data = ''; - break; - } - - var noImportPart = data.substring(0, nextStart); - context.done.push(noImportPart); - context.left.unshift([data.substring(nextEnd + 1), override(context, { shallow: false })]); - context.afterContent = hasContent(noImportPart); - return inline(data, nextStart, nextEnd, context); - } - - // no @import matched in current data - context.done.push(data); - return processNext(context); -} - -function rebaseMap(data, source) { - return data.replace(MAP_MARKER, function (match, sourceMapUrl) { - return REMOTE_RESOURCE.test(sourceMapUrl) ? - match : - match.replace(sourceMapUrl, url.resolve(source, sourceMapUrl)); - }); -} - -function nextImportAt(data, cursor) { - var nextLowerCase = data.indexOf('@import', cursor); - var nextUpperCase = data.indexOf('@IMPORT', cursor); - - if (nextLowerCase > -1 && nextUpperCase == -1) - return nextLowerCase; - else if (nextLowerCase == -1 && nextUpperCase > -1) - return nextUpperCase; - else - return Math.min(nextLowerCase, nextUpperCase); -} - -function processNext(context) { - return context.left.length > 0 ? - importFrom.apply(null, context.left.shift()) : - context.whenDone(context.done.join('')); -} - -function commentScanner(data) { - var commentRegex = /(\/\*(?!\*\/)[\s\S]*?\*\/)/; - var lastStartIndex = 0; - var lastEndIndex = 0; - var noComments = false; - - // test whether an index is located within a comment - return function scanner(idx) { - var comment; - var localStartIndex = 0; - var localEndIndex = 0; - var globalStartIndex = 0; - var globalEndIndex = 0; - - // return if we know there are no more comments - if (noComments) - return false; - - do { - // idx can be still within last matched comment (many @import statements inside one comment) - if (idx > lastStartIndex && idx < lastEndIndex) - return true; - - comment = data.match(commentRegex); - - if (!comment) { - noComments = true; - return false; - } - - // get the indexes relative to the current data chunk - lastStartIndex = localStartIndex = comment.index; - localEndIndex = localStartIndex + comment[0].length; - - // calculate the indexes relative to the full original data - globalEndIndex = localEndIndex + lastEndIndex; - globalStartIndex = globalEndIndex - comment[0].length; - - // chop off data up to and including current comment block - data = data.substring(localEndIndex); - lastEndIndex = globalEndIndex; - } while (globalEndIndex < idx); - - return globalEndIndex > idx && idx > globalStartIndex; - }; -} - -function hasContent(data) { - var isComment = commentScanner(data); - var firstContentIdx = -1; - while (true) { - firstContentIdx = data.indexOf('{', firstContentIdx + 1); - if (firstContentIdx == -1 || !isComment(firstContentIdx)) - break; - } - - return firstContentIdx > -1; -} - -function inline(data, nextStart, nextEnd, context) { - context.shallow = data.indexOf('@shallow') > 0; - - var importDeclaration = data - .substring(nextImportAt(data, nextStart) + '@import'.length + 1, nextEnd) - .replace(/@shallow\)$/, ')') - .trim(); - - var viaUrl = importDeclaration.indexOf('url(') === 0; - var urlStartsAt = viaUrl ? 4 : 0; - var isQuoted = /^['"]/.exec(importDeclaration.substring(urlStartsAt, urlStartsAt + 2)); - var urlEndsAt = isQuoted ? - importDeclaration.indexOf(isQuoted[0], urlStartsAt + 1) : - split(importDeclaration, ' ')[0].length - (viaUrl ? 1 : 0); - - var importedFile = importDeclaration - .substring(urlStartsAt, urlEndsAt) - .replace(/['"]/g, '') - .replace(/\)$/, '') - .trim(); - - var mediaQuery = importDeclaration - .substring(urlEndsAt + 1) - .replace(/^\)/, '') - .trim(); - - var isRemote = context.isRemote || REMOTE_RESOURCE.test(importedFile); - - if (isRemote && (context.localOnly || !allowedResource(importedFile, true, context.imports))) { - if (context.afterContent || hasContent(context.done.join(''))) - context.warnings.push('Ignoring remote @import of "' + importedFile + '" as no callback given.'); - else - restoreImport(importedFile, mediaQuery, context); - - return processNext(context); - } - - if (!isRemote && !allowedResource(importedFile, false, context.imports)) { - if (context.afterImport) - context.warnings.push('Ignoring local @import of "' + importedFile + '" as after other inlined content.'); - else - restoreImport(importedFile, mediaQuery, context); - return processNext(context); - } - - if (!isRemote && context.afterContent) { - context.warnings.push('Ignoring local @import of "' + importedFile + '" as after other CSS content.'); - return processNext(context); - } - - var method = isRemote ? inlineRemoteResource : inlineLocalResource; - return method(importedFile, mediaQuery, context); -} - -function allowedResource(importedFile, isRemote, rules) { - if (rules.length === 0) - return false; - - if (isRemote && NO_PROTOCOL_RESOURCE.test(importedFile)) - importedFile = 'http:' + importedFile; - - var match = isRemote ? - url.parse(importedFile).host : - importedFile; - var allowed = true; - - for (var i = 0; i < rules.length; i++) { - var rule = rules[i]; - - if (rule == 'all') - allowed = true; - else if (isRemote && rule == 'local') - allowed = false; - else if (isRemote && rule == 'remote') - allowed = true; - else if (!isRemote && rule == 'remote') - allowed = false; - else if (!isRemote && rule == 'local') - allowed = true; - else if (rule[0] == '!' && rule.substring(1) === match) - allowed = false; - } - - return allowed; -} - -function inlineRemoteResource(importedFile, mediaQuery, context) { - var importedUrl = REMOTE_RESOURCE.test(importedFile) ? - importedFile : - url.resolve(context.relativeTo, importedFile); - var originalUrl = importedUrl; - - if (NO_PROTOCOL_RESOURCE.test(importedUrl)) - importedUrl = 'http:' + importedUrl; - - if (context.visited.indexOf(importedUrl) > -1) - return processNext(context); - - - if (context.debug) - console.error('Inlining remote stylesheet: ' + importedUrl); - - context.visited.push(importedUrl); - - var proxyProtocol = context.inliner.request.protocol || context.inliner.request.hostname; - var get = - ((proxyProtocol && proxyProtocol.indexOf('https://') !== 0 ) || - importedUrl.indexOf('http://') === 0) ? - http.get : - https.get; - - var errorHandled = false; - function handleError(message) { - if (errorHandled) - return; - - errorHandled = true; - context.errors.push('Broken @import declaration of "' + importedUrl + '" - ' + message); - restoreImport(importedUrl, mediaQuery, context); - - process.nextTick(function () { - processNext(context); - }); - } - - var requestOptions = override(url.parse(importedUrl), context.inliner.request); - if (context.inliner.request.hostname !== undefined) { - - //overwrite as we always expect a http proxy currently - requestOptions.protocol = context.inliner.request.protocol || 'http:'; - requestOptions.path = requestOptions.href; - } - - - get(requestOptions, function (res) { - if (res.statusCode < 200 || res.statusCode > 399) { - return handleError('error ' + res.statusCode); - } else if (res.statusCode > 299) { - var movedUrl = url.resolve(importedUrl, res.headers.location); - return inlineRemoteResource(movedUrl, mediaQuery, context); - } - - var chunks = []; - var parsedUrl = url.parse(importedUrl); - res.on('data', function (chunk) { - chunks.push(chunk.toString()); - }); - res.on('end', function () { - var importedData = chunks.join(''); - if (context.rebase) - importedData = rewriteUrls(importedData, { toBase: originalUrl }, context); - context.sourceReader.trackSource(importedUrl, importedData); - importedData = context.sourceTracker.store(importedUrl, importedData); - importedData = rebaseMap(importedData, importedUrl); - - if (mediaQuery.length > 0) - importedData = '@media ' + mediaQuery + '{' + importedData + '}'; - - context.afterImport = true; - - var newContext = override(context, { - isRemote: true, - relativeTo: parsedUrl.protocol + '//' + parsedUrl.host + parsedUrl.pathname - }); - - process.nextTick(function () { - importFrom(importedData, newContext); - }); - }); - }) - .on('error', function (res) { - handleError(res.message); - }) - .on('timeout', function () { - handleError('timeout'); - }) - .setTimeout(context.inliner.timeout); -} - -function inlineLocalResource(importedFile, mediaQuery, context) { - var relativeTo = importedFile[0] == '/' ? - context.root : - context.relativeTo; - - var fullPath = path.resolve(path.join(relativeTo, importedFile)); - - if (!fs.existsSync(fullPath) || !fs.statSync(fullPath).isFile()) { - context.errors.push('Broken @import declaration of "' + importedFile + '"'); - return processNext(context); - } - - if (context.visited.indexOf(fullPath) > -1) - return processNext(context); - - - if (context.debug) - console.error('Inlining local stylesheet: ' + fullPath); - - context.visited.push(fullPath); - - var importRelativeTo = path.dirname(fullPath); - var importedData = fs.readFileSync(fullPath, 'utf8'); - if (context.rebase) { - var rewriteOptions = { - relative: true, - fromBase: importRelativeTo, - toBase: context.baseRelativeTo - }; - importedData = rewriteUrls(importedData, rewriteOptions, context); - } - - var relativePath = path.relative(context.root, fullPath); - context.sourceReader.trackSource(relativePath, importedData); - importedData = context.sourceTracker.store(relativePath, importedData); - - if (mediaQuery.length > 0) - importedData = '@media ' + mediaQuery + '{' + importedData + '}'; - - context.afterImport = true; - - var newContext = override(context, { - relativeTo: importRelativeTo - }); - - return importFrom(importedData, newContext); -} - -function restoreImport(importedUrl, mediaQuery, context) { - var restoredImport = '@import url(' + importedUrl + ')' + (mediaQuery.length > 0 ? ' ' + mediaQuery : '') + ';'; - context.done.push(restoredImport); -} - -module.exports = ImportInliner; diff --git a/workshops/monte-carlo-on-ec2-spot-fleet/src/web/node_modules/clean-css/lib/properties/break-up.js b/workshops/monte-carlo-on-ec2-spot-fleet/src/web/node_modules/clean-css/lib/properties/break-up.js deleted file mode 100644 index 6657b7a7..00000000 --- a/workshops/monte-carlo-on-ec2-spot-fleet/src/web/node_modules/clean-css/lib/properties/break-up.js +++ /dev/null @@ -1,335 +0,0 @@ -var wrapSingle = require('./wrap-for-optimizing').single; -var InvalidPropertyError = require('./invalid-property-error'); - -var split = require('../utils/split'); -var MULTIPLEX_SEPARATOR = ','; - -function _colorFilter(validator) { - return function (value) { - return value[0] == 'invert' || validator.isValidColor(value[0]); - }; -} - -function _styleFilter(validator) { - return function (value) { - return value[0] != 'inherit' && validator.isValidStyle(value[0]) && !validator.isValidColorValue(value[0]); - }; -} - -function _wrapDefault(name, property, compactable) { - var descriptor = compactable[name]; - if (descriptor.doubleValues && descriptor.defaultValue.length == 2) - return wrapSingle([[name, property.important], [descriptor.defaultValue[0]], [descriptor.defaultValue[1]]]); - else if (descriptor.doubleValues && descriptor.defaultValue.length == 1) - return wrapSingle([[name, property.important], [descriptor.defaultValue[0]]]); - else - return wrapSingle([[name, property.important], [descriptor.defaultValue]]); -} - -function _widthFilter(validator) { - return function (value) { - return value[0] != 'inherit' && validator.isValidWidth(value[0]) && !validator.isValidStyleKeyword(value[0]) && !validator.isValidColorValue(value[0]); - }; -} - -function background(property, compactable, validator) { - var image = _wrapDefault('background-image', property, compactable); - var position = _wrapDefault('background-position', property, compactable); - var size = _wrapDefault('background-size', property, compactable); - var repeat = _wrapDefault('background-repeat', property, compactable); - var attachment = _wrapDefault('background-attachment', property, compactable); - var origin = _wrapDefault('background-origin', property, compactable); - var clip = _wrapDefault('background-clip', property, compactable); - var color = _wrapDefault('background-color', property, compactable); - var components = [image, position, size, repeat, attachment, origin, clip, color]; - var values = property.value; - - var positionSet = false; - var clipSet = false; - var originSet = false; - var repeatSet = false; - - if (property.value.length == 1 && property.value[0][0] == 'inherit') { - // NOTE: 'inherit' is not a valid value for background-attachment - color.value = image.value = repeat.value = position.value = size.value = origin.value = clip.value = property.value; - return components; - } - - for (var i = values.length - 1; i >= 0; i--) { - var value = values[i]; - - if (validator.isValidBackgroundAttachment(value[0])) { - attachment.value = [value]; - } else if (validator.isValidBackgroundBox(value[0])) { - if (clipSet) { - origin.value = [value]; - originSet = true; - } else { - clip.value = [value]; - clipSet = true; - } - } else if (validator.isValidBackgroundRepeat(value[0])) { - if (repeatSet) { - repeat.value.unshift(value); - } else { - repeat.value = [value]; - repeatSet = true; - } - } else if (validator.isValidBackgroundPositionPart(value[0]) || validator.isValidBackgroundSizePart(value[0])) { - if (i > 0) { - var previousValue = values[i - 1]; - - if (previousValue[0].indexOf('/') > 0) { - var twoParts = split(previousValue[0], '/'); - // NOTE: we do this slicing as value may contain metadata too, like for source maps - size.value = [[twoParts.pop()].concat(previousValue.slice(1)), value]; - values[i - 1] = [twoParts.pop()].concat(previousValue.slice(1)); - } else if (i > 1 && values[i - 2][0] == '/') { - size.value = [previousValue, value]; - i -= 2; - } else if (previousValue[0] == '/') { - size.value = [value]; - } else { - if (!positionSet) - position.value = []; - - position.value.unshift(value); - positionSet = true; - } - } else { - if (!positionSet) - position.value = []; - - position.value.unshift(value); - positionSet = true; - } - } else if (validator.isValidBackgroundPositionAndSize(value[0])) { - var sizeValue = split(value[0], '/'); - // NOTE: we do this slicing as value may contain metadata too, like for source maps - size.value = [[sizeValue.pop()].concat(value.slice(1))]; - position.value = [[sizeValue.pop()].concat(value.slice(1))]; - } else if ((color.value[0][0] == compactable[color.name].defaultValue || color.value[0][0] == 'none') && validator.isValidColor(value[0])) { - color.value = [value]; - } else if (validator.isValidUrl(value[0]) || validator.isValidFunction(value[0])) { - image.value = [value]; - } - } - - if (clipSet && !originSet) - origin.value = clip.value.slice(0); - - return components; -} - -function borderRadius(property, compactable) { - var values = property.value; - var splitAt = -1; - - for (var i = 0, l = values.length; i < l; i++) { - if (values[i][0] == '/') { - splitAt = i; - break; - } - } - - if (splitAt === 0 || splitAt === values.length - 1) { - throw new InvalidPropertyError('Invalid border-radius value.'); - } - - var target = _wrapDefault(property.name, property, compactable); - target.value = splitAt > -1 ? - values.slice(0, splitAt) : - values.slice(0); - target.components = fourValues(target, compactable); - - var remainder = _wrapDefault(property.name, property, compactable); - remainder.value = splitAt > -1 ? - values.slice(splitAt + 1) : - values.slice(0); - remainder.components = fourValues(remainder, compactable); - - for (var j = 0; j < 4; j++) { - target.components[j].multiplex = true; - target.components[j].value = target.components[j].value.concat(remainder.components[j].value); - } - - return target.components; -} - -function fourValues(property, compactable) { - var componentNames = compactable[property.name].components; - var components = []; - var value = property.value; - - if (value.length < 1) - return []; - - if (value.length < 2) - value[1] = value[0].slice(0); - if (value.length < 3) - value[2] = value[0].slice(0); - if (value.length < 4) - value[3] = value[1].slice(0); - - for (var i = componentNames.length - 1; i >= 0; i--) { - var component = wrapSingle([[componentNames[i], property.important]]); - component.value = [value[i]]; - components.unshift(component); - } - - return components; -} - -function multiplex(splitWith) { - return function (property, compactable, validator) { - var splitsAt = []; - var values = property.value; - var i, j, l, m; - - // find split commas - for (i = 0, l = values.length; i < l; i++) { - if (values[i][0] == ',') - splitsAt.push(i); - } - - if (splitsAt.length === 0) - return splitWith(property, compactable, validator); - - var splitComponents = []; - - // split over commas, and into components - for (i = 0, l = splitsAt.length; i <= l; i++) { - var from = i === 0 ? 0 : splitsAt[i - 1] + 1; - var to = i < l ? splitsAt[i] : values.length; - - var _property = _wrapDefault(property.name, property, compactable); - _property.value = values.slice(from, to); - - splitComponents.push(splitWith(_property, compactable, validator)); - } - - var components = splitComponents[0]; - - // group component values from each split - for (i = 0, l = components.length; i < l; i++) { - components[i].multiplex = true; - - for (j = 1, m = splitComponents.length; j < m; j++) { - components[i].value.push([MULTIPLEX_SEPARATOR]); - Array.prototype.push.apply(components[i].value, splitComponents[j][i].value); - } - } - - return components; - }; -} - -function listStyle(property, compactable, validator) { - var type = _wrapDefault('list-style-type', property, compactable); - var position = _wrapDefault('list-style-position', property, compactable); - var image = _wrapDefault('list-style-image', property, compactable); - var components = [type, position, image]; - - if (property.value.length == 1 && property.value[0][0] == 'inherit') { - type.value = position.value = image.value = [property.value[0]]; - return components; - } - - var values = property.value.slice(0); - var total = values.length; - var index = 0; - - // `image` first... - for (index = 0, total = values.length; index < total; index++) { - if (validator.isValidUrl(values[index][0]) || values[index][0] == '0') { - image.value = [values[index]]; - values.splice(index, 1); - break; - } - } - - // ... then `type`... - for (index = 0, total = values.length; index < total; index++) { - if (validator.isValidListStyleType(values[index][0])) { - type.value = [values[index]]; - values.splice(index, 1); - break; - } - } - - // ... and what's left is a `position` - if (values.length > 0 && validator.isValidListStylePosition(values[0][0])) - position.value = [values[0]]; - - return components; -} - -function widthStyleColor(property, compactable, validator) { - var descriptor = compactable[property.name]; - var components = [ - _wrapDefault(descriptor.components[0], property, compactable), - _wrapDefault(descriptor.components[1], property, compactable), - _wrapDefault(descriptor.components[2], property, compactable) - ]; - var color, style, width; - - for (var i = 0; i < 3; i++) { - var component = components[i]; - - if (component.name.indexOf('color') > 0) - color = component; - else if (component.name.indexOf('style') > 0) - style = component; - else - width = component; - } - - if ((property.value.length == 1 && property.value[0][0] == 'inherit') || - (property.value.length == 3 && property.value[0][0] == 'inherit' && property.value[1][0] == 'inherit' && property.value[2][0] == 'inherit')) { - color.value = style.value = width.value = [property.value[0]]; - return components; - } - - var values = property.value.slice(0); - var match, matches; - - // NOTE: usually users don't follow the required order of parts in this shorthand, - // so we'll try to parse it caring as little about order as possible - - if (values.length > 0) { - matches = values.filter(_widthFilter(validator)); - match = matches.length > 1 && (matches[0][0] == 'none' || matches[0][0] == 'auto') ? matches[1] : matches[0]; - if (match) { - width.value = [match]; - values.splice(values.indexOf(match), 1); - } - } - - if (values.length > 0) { - match = values.filter(_styleFilter(validator))[0]; - if (match) { - style.value = [match]; - values.splice(values.indexOf(match), 1); - } - } - - if (values.length > 0) { - match = values.filter(_colorFilter(validator))[0]; - if (match) { - color.value = [match]; - values.splice(values.indexOf(match), 1); - } - } - - return components; -} - -module.exports = { - background: background, - border: widthStyleColor, - borderRadius: borderRadius, - fourValues: fourValues, - listStyle: listStyle, - multiplex: multiplex, - outline: widthStyleColor -}; diff --git a/workshops/monte-carlo-on-ec2-spot-fleet/src/web/node_modules/clean-css/lib/properties/can-override.js b/workshops/monte-carlo-on-ec2-spot-fleet/src/web/node_modules/clean-css/lib/properties/can-override.js deleted file mode 100644 index 474e2373..00000000 --- a/workshops/monte-carlo-on-ec2-spot-fleet/src/web/node_modules/clean-css/lib/properties/can-override.js +++ /dev/null @@ -1,142 +0,0 @@ -// Functions that decide what value can override what. -// The main purpose is to disallow removing CSS fallbacks. -// A separate implementation is needed for every different kind of CSS property. -// ----- -// The generic idea is that properties that have wider browser support are 'more understandable' -// than others and that 'less understandable' values can't override more understandable ones. - -// Use when two tokens of the same property can always be merged -function always() { - return true; -} - -function alwaysButIntoFunction(property1, property2, validator) { - var value1 = property1.value[0][0]; - var value2 = property2.value[0][0]; - - var validFunction1 = validator.isValidFunction(value1); - var validFunction2 = validator.isValidFunction(value2); - - if (validFunction1 && validFunction2) { - return validator.areSameFunction(value1, value2); - } else if (!validFunction1 && validFunction2) { - return false; - } else { - return true; - } -} - -function backgroundImage(property1, property2, validator) { - // The idea here is that 'more understandable' values override 'less understandable' values, but not vice versa - // Understandability: (none | url | inherit) > (same function) > (same value) - - // (none | url) - var image1 = property1.value[0][0]; - var image2 = property2.value[0][0]; - - if (image2 == 'none' || image2 == 'inherit' || validator.isValidUrl(image2)) - return true; - if (image1 == 'none' || image1 == 'inherit' || validator.isValidUrl(image1)) - return false; - - // Functions with the same name can override each other; same values can override each other - return sameFunctionOrValue(property1, property2, validator); -} - -function border(property1, property2, validator) { - return color(property1.components[2], property2.components[2], validator); -} - -// Use for color properties (color, background-color, border-color, etc.) -function color(property1, property2, validator) { - // The idea here is that 'more understandable' values override 'less understandable' values, but not vice versa - // Understandability: (hex | named) > (rgba | hsla) > (same function name) > anything else - // NOTE: at this point rgb and hsl are replaced by hex values by clean-css - - var color1 = property1.value[0][0]; - var color2 = property2.value[0][0]; - - if (!validator.colorOpacity && (validator.isValidRgbaColor(color1) || validator.isValidHslaColor(color1))) - return false; - if (!validator.colorOpacity && (validator.isValidRgbaColor(color2) || validator.isValidHslaColor(color2))) - return false; - - // (hex | named) - if (validator.isValidNamedColor(color2) || validator.isValidHexColor(color2)) - return true; - if (validator.isValidNamedColor(color1) || validator.isValidHexColor(color1)) - return false; - - // (rgba|hsla) - if (validator.isValidRgbaColor(color2) || validator.isValidHslaColor(color2)) - return true; - if (validator.isValidRgbaColor(color1) || validator.isValidHslaColor(color1)) - return false; - - // Functions with the same name can override each other; same values can override each other - return sameFunctionOrValue(property1, property2, validator); -} - -function twoOptionalFunctions(property1, property2, validator) { - var value1 = property1.value[0][0]; - var value2 = property2.value[0][0]; - - return !(validator.isValidFunction(value1) ^ validator.isValidFunction(value2)); -} - -function sameValue(property1, property2) { - var value1 = property1.value[0][0]; - var value2 = property2.value[0][0]; - - return value1 === value2; -} - -function sameFunctionOrValue(property1, property2, validator) { - var value1 = property1.value[0][0]; - var value2 = property2.value[0][0]; - - // Functions with the same name can override each other - if (validator.areSameFunction(value1, value2)) - return true; - - return value1 === value2; -} - -// Use for properties containing CSS units (margin-top, padding-left, etc.) -function unit(property1, property2, validator) { - // The idea here is that 'more understandable' values override 'less understandable' values, but not vice versa - // Understandability: (unit without functions) > (same functions | standard functions) > anything else - // NOTE: there is no point in having different vendor-specific functions override each other or standard functions, - // or having standard functions override vendor-specific functions, but standard functions can override each other - // NOTE: vendor-specific property values are not taken into consideration here at the moment - var value1 = property1.value[0][0]; - var value2 = property2.value[0][0]; - - if (validator.isValidAndCompatibleUnitWithoutFunction(value1) && !validator.isValidAndCompatibleUnitWithoutFunction(value2)) - return false; - - if (validator.isValidUnitWithoutFunction(value2)) - return true; - if (validator.isValidUnitWithoutFunction(value1)) - return false; - - // Standard non-vendor-prefixed functions can override each other - if (validator.isValidFunctionWithoutVendorPrefix(value2) && validator.isValidFunctionWithoutVendorPrefix(value1)) { - return true; - } - - // Functions with the same name can override each other; same values can override each other - return sameFunctionOrValue(property1, property2, validator); -} - -module.exports = { - always: always, - alwaysButIntoFunction: alwaysButIntoFunction, - backgroundImage: backgroundImage, - border: border, - color: color, - sameValue: sameValue, - sameFunctionOrValue: sameFunctionOrValue, - twoOptionalFunctions: twoOptionalFunctions, - unit: unit -}; diff --git a/workshops/monte-carlo-on-ec2-spot-fleet/src/web/node_modules/clean-css/lib/properties/clone.js b/workshops/monte-carlo-on-ec2-spot-fleet/src/web/node_modules/clean-css/lib/properties/clone.js deleted file mode 100644 index 5be6441b..00000000 --- a/workshops/monte-carlo-on-ec2-spot-fleet/src/web/node_modules/clean-css/lib/properties/clone.js +++ /dev/null @@ -1,26 +0,0 @@ -var wrapSingle = require('./wrap-for-optimizing').single; - -function deep(property) { - var cloned = shallow(property); - for (var i = property.components.length - 1; i >= 0; i--) { - var component = shallow(property.components[i]); - component.value = property.components[i].value.slice(0); - cloned.components.unshift(component); - } - - cloned.dirty = true; - cloned.value = property.value.slice(0); - - return cloned; -} - -function shallow(property) { - var cloned = wrapSingle([[property.name, property.important, property.hack]]); - cloned.unused = false; - return cloned; -} - -module.exports = { - deep: deep, - shallow: shallow -}; diff --git a/workshops/monte-carlo-on-ec2-spot-fleet/src/web/node_modules/clean-css/lib/properties/compactable.js b/workshops/monte-carlo-on-ec2-spot-fleet/src/web/node_modules/clean-css/lib/properties/compactable.js deleted file mode 100644 index 5131233c..00000000 --- a/workshops/monte-carlo-on-ec2-spot-fleet/src/web/node_modules/clean-css/lib/properties/compactable.js +++ /dev/null @@ -1,285 +0,0 @@ -// Contains the interpretation of CSS properties, as used by the property optimizer - -var breakUp = require('./break-up'); -var canOverride = require('./can-override'); -var restore = require('./restore'); - -// Properties to process -// Extend this object in order to add support for more properties in the optimizer. -// -// Each key in this object represents a CSS property and should be an object. -// Such an object contains properties that describe how the represented CSS property should be handled. -// Possible options: -// -// * components: array (Only specify for shorthand properties.) -// Contains the names of the granular properties this shorthand compacts. -// -// * canOverride: function (Default is canOverride.sameValue - meaning that they'll only be merged if they have the same value.) -// Returns whether two tokens of this property can be merged with each other. -// This property has no meaning for shorthands. -// -// * defaultValue: string -// Specifies the default value of the property according to the CSS standard. -// For shorthand, this is used when every component is set to its default value, therefore it should be the shortest possible default value of all the components. -// -// * shortestValue: string -// Specifies the shortest possible value the property can possibly have. -// (Falls back to defaultValue if unspecified.) -// -// * breakUp: function (Only specify for shorthand properties.) -// Breaks the shorthand up to its components. -// -// * restore: function (Only specify for shorthand properties.) -// Puts the shorthand together from its components. -// -var compactable = { - 'color': { - canOverride: canOverride.color, - defaultValue: 'transparent', - shortestValue: 'red' - }, - 'background': { - components: [ - 'background-image', - 'background-position', - 'background-size', - 'background-repeat', - 'background-attachment', - 'background-origin', - 'background-clip', - 'background-color' - ], - breakUp: breakUp.multiplex(breakUp.background), - defaultValue: '0 0', - restore: restore.multiplex(restore.background), - shortestValue: '0', - shorthand: true - }, - 'background-clip': { - canOverride: canOverride.always, - defaultValue: 'border-box', - shortestValue: 'border-box' - }, - 'background-color': { - canOverride: canOverride.color, - defaultValue: 'transparent', - multiplexLastOnly: true, - nonMergeableValue: 'none', - shortestValue: 'red' - }, - 'background-image': { - canOverride: canOverride.backgroundImage, - defaultValue: 'none' - }, - 'background-origin': { - canOverride: canOverride.always, - defaultValue: 'padding-box', - shortestValue: 'border-box' - }, - 'background-repeat': { - canOverride: canOverride.always, - defaultValue: ['repeat'], - doubleValues: true - }, - 'background-position': { - canOverride: canOverride.alwaysButIntoFunction, - defaultValue: ['0', '0'], - doubleValues: true, - shortestValue: '0' - }, - 'background-size': { - canOverride: canOverride.alwaysButIntoFunction, - defaultValue: ['auto'], - doubleValues: true, - shortestValue: '0 0' - }, - 'background-attachment': { - canOverride: canOverride.always, - defaultValue: 'scroll' - }, - 'border': { - breakUp: breakUp.border, - canOverride: canOverride.border, - components: [ - 'border-width', - 'border-style', - 'border-color' - ], - defaultValue: 'none', - restore: restore.withoutDefaults, - shorthand: true - }, - 'border-color': { - canOverride: canOverride.color, - defaultValue: 'none', - shorthand: true - }, - 'border-style': { - canOverride: canOverride.always, - defaultValue: 'none', - shorthand: true - }, - 'border-width': { - canOverride: canOverride.unit, - defaultValue: 'medium', - shortestValue: '0', - shorthand: true - }, - 'list-style': { - components: [ - 'list-style-type', - 'list-style-position', - 'list-style-image' - ], - canOverride: canOverride.always, - breakUp: breakUp.listStyle, - restore: restore.withoutDefaults, - defaultValue: 'outside', // can't use 'disc' because that'd override default 'decimal' for
    - shortestValue: 'none', - shorthand: true - }, - 'list-style-type' : { - canOverride: canOverride.always, - defaultValue: '__hack', - // NOTE: we can't tell the real default value here, it's 'disc' for